UNPKG

llmverify

Version:

AI Output Verification Toolkit — Local-first LLM safety, hallucination detection, PII redaction, prompt injection defense, and runtime monitoring. Zero telemetry. OWASP LLM Top 10 aligned.

105 lines (104 loc) 42 kB
#!/usr/bin/env node "use strict"; /** * llmverify - Postinstall Message * Displays a rich, informative banner after npm install * * @module postinstall * @author KingCaliber Labs * @license MIT */ const VERSION = '1.0.0'; // ANSI color codes (works in most terminals) const colors = { reset: '\x1b[0m', bright: '\x1b[1m', dim: '\x1b[2m', cyan: '\x1b[36m', green: '\x1b[32m', yellow: '\x1b[33m', blue: '\x1b[34m', magenta: '\x1b[35m', white: '\x1b[37m', bgBlue: '\x1b[44m', bgGreen: '\x1b[42m', }; const c = colors; function printBanner() { const banner = ` ${c.cyan}${c.bright}╔══════════════════════════════════════════════════════════════════════════════╗${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.green}${c.bright}✓ llmverify ${VERSION}${c.reset} ${c.dim}— AI Output Verification Toolkit${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.yellow}Local-first${c.reset}${c.yellow}Zero telemetry${c.reset}${c.yellow}Privacy-preserving${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}╠══════════════════════════════════════════════════════════════════════════════╣${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.bright}QUICK START${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.dim}─────────────────────────────────────────────────────────────────────${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}1.${c.reset} Setup wizard: ${c.green}npx llmverify wizard${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}2.${c.reset} Run with preset: ${c.green}npx llmverify run "AI output" --preset dev${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}3.${c.reset} Check system health: ${c.green}npx llmverify doctor${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}4.${c.reset} See all commands: ${c.green}npx llmverify --help${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}╠══════════════════════════════════════════════════════════════════════════════╣${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.bright}PROGRAMMATIC USAGE${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.dim}─────────────────────────────────────────────────────────────────────${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.magenta}import${c.reset} { verify, isInputSafe, redactPII } ${c.magenta}from${c.reset} ${c.green}'llmverify'${c.reset}; ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.dim}// Verify AI output safety${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.magenta}const${c.reset} result = ${c.magenta}await${c.reset} verify({ content: aiOutput }); ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.dim}// Check for prompt injection${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.magenta}if${c.reset} (!isInputSafe(userInput)) ${c.magenta}throw new${c.reset} Error(${c.green}'Attack detected'${c.reset}); ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.dim}// Redact PII before displaying${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.magenta}const${c.reset} { redacted } = redactPII(aiOutput); ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}╠══════════════════════════════════════════════════════════════════════════════╣${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.bright}AVAILABLE CLI COMMANDS${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.dim}─────────────────────────────────────────────────────────────────────${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.yellow}run${c.reset} ${c.bright}${c.reset} Master command - run all engines with presets ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.yellow}wizard${c.reset} ${c.bright}${c.reset} Interactive setup wizard for first-time users ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}verify${c.reset} Run multi-engine verification on AI output ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}presets${c.reset} List available preset configurations ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}engines${c.reset} List all verification engines with status ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}doctor${c.reset} Check system health and configuration ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}init${c.reset} Initialize config file (llmverify.config.json) ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}tutorial${c.reset} Show usage examples and quick start guide ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}╠══════════════════════════════════════════════════════════════════════════════╣${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.bright}LINKS${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.dim}─────────────────────────────────────────────────────────────────────${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.blue}📖 Docs${c.reset} https://github.com/subodhkc/llmverify-npm#readme ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.blue}🐛 Issues${c.reset} https://github.com/subodhkc/llmverify-npm/issues ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.yellow}☕ Support${c.reset} https://www.buymeacoffee.com/subodhkc ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}╠══════════════════════════════════════════════════════════════════════════════╣${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.green}🔒 PRIVACY${c.reset} 100% local • Zero network requests • Zero telemetry ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.green}✓ VERIFIED${c.reset} Run tcpdump while using — you'll see nothing ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}${c.reset} ${c.cyan}${c.bright}╚══════════════════════════════════════════════════════════════════════════════╝${c.reset} ${c.dim}Maintained by KingCaliber Labs • MIT License${c.reset} `; console.log(banner); } // Only run if not in CI/CD or silent mode const isSilent = process.env.npm_config_loglevel === 'silent' || process.env.CI === 'true' || process.env.LLMVERIFY_SILENT === 'true'; if (!isSilent) { printBanner(); } else { console.log('[llmverify] Installed successfully. Run "npx llmverify --help" for usage.'); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdGluc3RhbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcG9zdGluc3RhbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQTs7Ozs7OztHQU9HO0FBRUgsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBRXhCLDZDQUE2QztBQUM3QyxNQUFNLE1BQU0sR0FBRztJQUNiLEtBQUssRUFBRSxTQUFTO0lBQ2hCLE1BQU0sRUFBRSxTQUFTO0lBQ2pCLEdBQUcsRUFBRSxTQUFTO0lBQ2QsSUFBSSxFQUFFLFVBQVU7SUFDaEIsS0FBSyxFQUFFLFVBQVU7SUFDakIsTUFBTSxFQUFFLFVBQVU7SUFDbEIsSUFBSSxFQUFFLFVBQVU7SUFDaEIsT0FBTyxFQUFFLFVBQVU7SUFDbkIsS0FBSyxFQUFFLFVBQVU7SUFDakIsTUFBTSxFQUFFLFVBQVU7SUFDbEIsT0FBTyxFQUFFLFVBQVU7Q0FDcEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUVqQixTQUFTLFdBQVc7SUFDbEIsTUFBTSxNQUFNLEdBQUc7RUFDZixDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxNQUFNLG1GQUFtRixDQUFDLENBQUMsS0FBSztFQUMzRyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLEtBQUssaUZBQWlGLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsS0FBSztFQUN6SSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxNQUFNLGVBQWUsT0FBTyxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEdBQUcsbUNBQW1DLENBQUMsQ0FBQyxLQUFLLDJCQUEyQixDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxNQUFN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QztJQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkVBQTJFLENBQUMsQ0FBQTtBQUMxRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuLyoqXG4gKiBsbG12ZXJpZnkgLSBQb3N0aW5zdGFsbCBNZXNzYWdlXG4gKiBEaXNwbGF5cyBhIHJpY2gsIGluZm9ybWF0aXZlIGJhbm5lciBhZnRlciBucG0gaW5zdGFsbFxuICogXG4gKiBAbW9kdWxlIHBvc3RpbnN0YWxsXG4gKiBAYXV0aG9yIEtpbmdDYWxpYmVyIExhYnNcbiAqIEBsaWNlbnNlIE1JVFxuICovXG5cbmNvbnN0IFZFUlNJT04gPSAnMS4wLjAnO1xuXG4vLyBBTlNJIGNvbG9yIGNvZGVzICh3b3JrcyBpbiBtb3N0IHRlcm1pbmFscylcbmNvbnN0IGNvbG9ycyA9IHtcbiAgcmVzZXQ6ICdcXHgxYlswbScsXG4gIGJyaWdodDogJ1xceDFiWzFtJyxcbiAgZGltOiAnXFx4MWJbMm0nLFxuICBjeWFuOiAnXFx4MWJbMzZtJyxcbiAgZ3JlZW46ICdcXHgxYlszMm0nLFxuICB5ZWxsb3c6ICdcXHgxYlszM20nLFxuICBibHVlOiAnXFx4MWJbMzRtJyxcbiAgbWFnZW50YTogJ1xceDFiWzM1bScsXG4gIHdoaXRlOiAnXFx4MWJbMzdtJyxcbiAgYmdCbHVlOiAnXFx4MWJbNDRtJyxcbiAgYmdHcmVlbjogJ1xceDFiWzQybScsXG59O1xuXG5jb25zdCBjID0gY29sb3JzO1xuXG5mdW5jdGlvbiBwcmludEJhbm5lcigpOiB2b2lkIHtcbiAgY29uc3QgYmFubmVyID0gYFxuJHtjLmN5YW59JHtjLmJyaWdodH3ilZTilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZcke2MucmVzZXR9XG4ke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH1cbiR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fSAgICR7Yy5ncmVlbn0ke2MuYnJpZ2h0feKckyBsbG12ZXJpZnkgJHtWRVJTSU9OfSR7Yy5yZXNldH0gJHtjLmRpbX3igJQgQUkgT3V0cHV0IFZlcmlmaWNhdGlvbiBUb29sa2l0JHtjLnJlc2V0fSAgICAgICAgICAgICAgICAgICAgICAgICR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fVxuJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9XG4ke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH0gICAke2MueWVsbG93fUxvY2FsLWZpcnN0JHtjLnJlc2V0fSDigKIgJHtjLnllbGxvd31aZXJvIHRlbGVtZXRyeSR7Yy5yZXNldH0g4oCiICR7Yy55ZWxsb3d9UHJpdmFjeS1wcmVzZXJ2aW5nJHtjLnJlc2V0fSAgICAgICAgICAgICAgICAgICAgICAke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH1cbiR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fVxuJHtjLmN5YW59JHtjLmJyaWdodH3ilaDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilaMke2MucmVzZXR9XG4ke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH1cbiR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fSAgICR7Yy5icmlnaHR9UVVJQ0sgU1RBUlQke2MucmVzZXR9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9XG4ke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH0gICAke2MuZGltfeKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCR7Yy5yZXNldH0gICAke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH1cbiR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fVxuJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9ICAgJHtjLmN5YW59MS4ke2MucmVzZXR9IFNldHVwIHdpemFyZDogICAgICAgICAke2MuZ3JlZW59bnB4IGxsbXZlcmlmeSB3aXphcmQke2MucmVzZXR9ICAgICAgICAgICAgICAgICAgICAgICAgICAke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH1cbiR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fSAgICR7Yy5jeWFufTIuJHtjLnJlc2V0fSBSdW4gd2l0aCBwcmVzZXQ6ICAgICAgJHtjLmdyZWVufW5weCBsbG12ZXJpZnkgcnVuIFwiQUkgb3V0cHV0XCIgLS1wcmVzZXQgZGV2JHtjLnJlc2V0fSAgICAke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH1cbiR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fSAgICR7Yy5jeWFufTMuJHtjLnJlc2V0fSBDaGVjayBzeXN0ZW0gaGVhbHRoOiAgJHtjLmdyZWVufW5weCBsbG12ZXJpZnkgZG9jdG9yJHtjLnJlc2V0fSAgICAgICAgICAgICAgICAgICAgICAgICAgJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9XG4ke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH0gICAke2MuY3lhbn00LiR7Yy5yZXNldH0gU2VlIGFsbCBjb21tYW5kczogICAgICR7Yy5ncmVlbn1ucHggbGxtdmVyaWZ5IC0taGVscCR7Yy5yZXNldH0gICAgICAgICAgICAgICAgICAgICAgICAgICR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fVxuJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9XG4ke2MuY3lhbn0ke2MuYnJpZ2h0feKVoOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVoyR7Yy5yZXNldH1cbiR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fVxuJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9ICAgJHtjLmJyaWdodH1QUk9HUkFNTUFUSUMgVVNBR0Uke2MucmVzZXR9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH1cbiR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fSAgICR7Yy5kaW194pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAJHtjLnJlc2V0fSAgICR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fVxuJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9XG4ke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH0gICAke2MubWFnZW50YX1pbXBvcnQke2MucmVzZXR9IHsgdmVyaWZ5LCBpc0lucHV0U2FmZSwgcmVkYWN0UElJIH0gJHtjLm1hZ2VudGF9ZnJvbSR7Yy5yZXNldH0gJHtjLmdyZWVufSdsbG12ZXJpZnknJHtjLnJlc2V0fTsgICAgICAgICAgICR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fVxuJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9XG4ke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH0gICAke2MuZGltfS8vIFZlcmlmeSBBSSBvdXRwdXQgc2FmZXR5JHtjLnJlc2V0fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9XG4ke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH0gICAke2MubWFnZW50YX1jb25zdCR7Yy5yZXNldH0gcmVzdWx0ID0gJHtjLm1hZ2VudGF9YXdhaXQke2MucmVzZXR9IHZlcmlmeSh7IGNvbnRlbnQ6IGFpT3V0cHV0IH0pOyAgICAgICAgICAgICAgICAgICAgJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9XG4ke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH1cbiR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fSAgICR7Yy5kaW19Ly8gQ2hlY2sgZm9yIHByb21wdCBpbmplY3Rpb24ke2MucmVzZXR9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH1cbiR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fSAgICR7Yy5tYWdlbnRhfWlmJHtjLnJlc2V0fSAoIWlzSW5wdXRTYWZlKHVzZXJJbnB1dCkpICR7Yy5tYWdlbnRhfXRocm93IG5ldyR7Yy5yZXNldH0gRXJyb3IoJHtjLmdyZWVufSdBdHRhY2sgZGV0ZWN0ZWQnJHtjLnJlc2V0fSk7ICAgICAgICR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fVxuJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9XG4ke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH0gICAke2MuZGltfS8vIFJlZGFjdCBQSUkgYmVmb3JlIGRpc3BsYXlpbmcke2MucmVzZXR9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9XG4ke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH0gICAke2MubWFnZW50YX1jb25zdCR7Yy5yZXNldH0geyByZWRhY3RlZCB9ID0gcmVkYWN0UElJKGFpT3V0cHV0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH1cbiR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fVxuJHtjLmN5YW59JHtjLmJyaWdodH3ilaDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilaMke2MucmVzZXR9XG4ke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH1cbiR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fSAgICR7Yy5icmlnaHR9QVZBSUxBQkxFIENMSSBDT01NQU5EUyR7Yy5yZXNldH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9XG4ke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH0gICAke2MuZGltfeKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCR7Yy5yZXNldH0gICAke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH1cbiR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fVxuJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9ICAgJHtjLnllbGxvd31ydW4ke2MucmVzZXR9ICAgICAgICAgJHtjLmJyaWdodH3imIUke2MucmVzZXR9IE1hc3RlciBjb21tYW5kIC0gcnVuIGFsbCBlbmdpbmVzIHdpdGggcHJlc2V0cyAgICAgICAgICAke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH1cbiR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fSAgICR7Yy55ZWxsb3d9d2l6YXJkJHtjLnJlc2V0fSAgICAgICR7Yy5icmlnaHR94piFJHtjLnJlc2V0fSBJbnRlcmFjdGl2ZSBzZXR1cCB3aXphcmQgZm9yIGZpcnN0LXRpbWUgdXNlcnMgICAgICAgICAgJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9XG4ke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH0gICAke2MuY3lhbn12ZXJpZnkke2MucmVzZXR9ICAgICAgUnVuIG11bHRpLWVuZ2luZSB2ZXJpZmljYXRpb24gb24gQUkgb3V0cHV0ICAgICAgICAgICAgICAgICAgJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9XG4ke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH0gICAke2MuY3lhbn1wcmVzZXRzJHtjLnJlc2V0fSAgICAgTGlzdCBhdmFpbGFibGUgcHJlc2V0IGNvbmZpZ3VyYXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9XG4ke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH0gICAke2MuY3lhbn1lbmdpbmVzJHtjLnJlc2V0fSAgICAgTGlzdCBhbGwgdmVyaWZpY2F0aW9uIGVuZ2luZXMgd2l0aCBzdGF0dXMgICAgICAgICAgICAgICAgICAgJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9XG4ke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH0gICAke2MuY3lhbn1kb2N0b3Ike2MucmVzZXR9ICAgICAgQ2hlY2sgc3lzdGVtIGhlYWx0aCBhbmQgY29uZmlndXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9XG4ke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH0gICAke2MuY3lhbn1pbml0JHtjLnJlc2V0fSAgICAgICAgSW5pdGlhbGl6ZSBjb25maWcgZmlsZSAobGxtdmVyaWZ5LmNvbmZpZy5qc29uKSAgICAgICAgICAgICAgICR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fVxuJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9ICAgJHtjLmN5YW59dHV0b3JpYWwke2MucmVzZXR9ICAgIFNob3cgdXNhZ2UgZXhhbXBsZXMgYW5kIHF1aWNrIHN0YXJ0IGd1aWRlICAgICAgICAgICAgICAgICAgICAke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH1cbiR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fVxuJHtjLmN5YW59JHtjLmJyaWdodH3ilaDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilaMke2MucmVzZXR9XG4ke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH1cbiR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fSAgICR7Yy5icmlnaHR9TElOS1Mke2MucmVzZXR9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9XG4ke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH0gICAke2MuZGltfeKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCR7Yy5yZXNldH0gICAke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH1cbiR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fVxuJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9ICAgJHtjLmJsdWV98J+TliBEb2NzJHtjLnJlc2V0fSAgICAgaHR0cHM6Ly9naXRodWIuY29tL3N1Ym9kaGtjL2xsbXZlcmlmeS1ucG0jcmVhZG1lICAgICAgICAgICAgJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9XG4ke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH0gICAke2MuYmx1ZX3wn5CbIElzc3VlcyR7Yy5yZXNldH0gICBodHRwczovL2dpdGh1Yi5jb20vc3Vib2Roa2MvbGxtdmVyaWZ5LW5wbS9pc3N1ZXMgICAgICAgICAgICAgJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9XG4ke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH0gICAke2MueWVsbG93feKYlSBTdXBwb3J0JHtjLnJlc2V0fSAgaHR0cHM6Ly93d3cuYnV5bWVhY29mZmVlLmNvbS9zdWJvZGhrYyAgICAgICAgICAgICAgICAgICAgICAgICR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fVxuJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9XG4ke2MuY3lhbn0ke2MuYnJpZ2h0feKVoOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVoyR7Yy5yZXNldH1cbiR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fVxuJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9ICAgJHtjLmdyZWVuffCflJIgUFJJVkFDWSR7Yy5yZXNldH0gIDEwMCUgbG9jYWwg4oCiIFplcm8gbmV0d29yayByZXF1ZXN0cyDigKIgWmVybyB0ZWxlbWV0cnkgICAgICAgICAke2MuY3lhbn0ke2MuYnJpZ2h0feKVkSR7Yy5yZXNldH1cbiR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fSAgICR7Yy5ncmVlbn3inJMgVkVSSUZJRUQke2MucmVzZXR9ICBSdW4gdGNwZHVtcCB3aGlsZSB1c2luZyDigJQgeW91J2xsIHNlZSBub3RoaW5nICAgICAgICAgICAgICAgICR7Yy5jeWFufSR7Yy5icmlnaHR94pWRJHtjLnJlc2V0fVxuJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtjLmN5YW59JHtjLmJyaWdodH3ilZEke2MucmVzZXR9XG4ke2MuY3lhbn0ke2MuYnJpZ2h0feKVmuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVnSR7Yy5yZXNldH1cblxuJHtjLmRpbX1NYWludGFpbmVkIGJ5IEtpbmdDYWxpYmVyIExhYnMg4oCiIE1JVCBMaWNlbnNlJHtjLnJlc2V0fVxuYDtcblxuICBjb25zb2xlLmxvZyhiYW5uZXIpO1xufVxuXG4vLyBPbmx5IHJ1biBpZiBub3QgaW4gQ0kvQ0Qgb3Igc2lsZW50IG1vZGVcbmNvbnN0IGlzU2lsZW50ID0gcHJvY2Vzcy5lbnYubnBtX2NvbmZpZ19sb2dsZXZlbCA9PT0gJ3NpbGVudCcgfHwgXG4gICAgICAgICAgICAgICAgIHByb2Nlc3MuZW52LkNJID09PSAndHJ1ZScgfHxcbiAgICAgICAgICAgICAgICAgcHJvY2Vzcy5lbnYuTExNVkVSSUZZX1NJTEVOVCA9PT0gJ3RydWUnO1xuXG5pZiAoIWlzU2lsZW50KSB7XG4gIHByaW50QmFubmVyKCk7XG59IGVsc2Uge1xuICBjb25zb2xlLmxvZygnW2xsbXZlcmlmeV0gSW5zdGFsbGVkIHN1Y2Nlc3NmdWxseS4gUnVuIFwibnB4IGxsbXZlcmlmeSAtLWhlbHBcIiBmb3IgdXNhZ2UuJylcbn1cbiJdfQ==