# Name: smd_qr_code v0.20 # Type: Public side plugin # Create QR codes on the fly # Author: Stef Dawson # URL: http://stefdawson.com/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjExOiJzbWRfcXJfY29kZSI7czo2OiJhdXRob3IiO3M6MTE6 IlN0ZWYgRGF3c29uIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIyOiJodHRwOi8vc3RlZmRhd3Nv bi5jb20vIjtzOjc6InZlcnNpb24iO3M6NDoiMC4yMCI7czoxMToiZGVzY3JpcHRpb24iO3M6 MjY6IkNyZWF0ZSBRUiBjb2RlcyBvbiB0aGUgZmx5IjtzOjQ6ImNvZGUiO3M6MTIxMjI6ImZ1 bmN0aW9uIHNtZF9xcl9jb2RlKCRhdHRzLCAkdGhpbmc9TlVMTCkgew0KCWV4dHJhY3QobEF0 dHMoYXJyYXkoDQoJCSd0eXBlJyAgICAgID0+ICd0ZXh0JywgLy8gdGV4dC9saW5rL2Jvb2tt YXJrL3Ntcy9waG9uZS9lbWFpbC9jb250YWN0L2dlby93aWZpDQoJCSdkYXRhJyAgICAgID0+ ICdIZWxsbyB3b3JsZCEnLA0KCQknZGVsaW0nICAgICA9PiAnfCcsDQoJCSd2YWxpZGF0ZScg ID0+ICcxJywgLy8gMD1ubywgMT15ZXMsIG9yICd2YWxpZGF0ZSx0aGVzZSxmaWVsZHMnIG9y ICd2YWxpZGF0ZSwgdGhlc2V8XlswLTkuIFwtXSskLCBmaWVsZHMNCgkJJ3ZhbGlkZWxpbScg PT4gJywnLA0KCQknZm9ybWF0JyAgICA9PiAndmlldycsIC8vIHZpZXcvZG93bmxvYWQvcmF3 DQoJCSd3aWR0aCcgICAgID0+ICcyMDAnLA0KCQknaGVpZ2h0JyAgICA9PiAnMjAwJywNCgkJ J3F1YWxpdHknICAgPT4gJ0wnLCAvLyBML00vUS9IDQoJCSdtYXJnaW4nICAgID0+ICc0JywN CgkJJ2JnY29sJyAgICAgPT4gJycsDQoJCSdhbHBoYScgICAgID0+ICcnLA0KCQknZXNjYXBl JyAgICA9PiAnJywNCgkJJ3RpdGxlJyAgICAgPT4gJycsDQoJCSdjbGFzcycgICAgID0+ICcn LA0KCQknaHRtbF9pZCcgICA9PiAnJywNCgkJJ3dyYXB0YWcnICAgPT4gJycsDQoJCSdkZWJ1 ZycgICAgID0+IDAsDQoJKSwkYXR0cykpOw0KDQoJLy8gRGVmYXVsdCByZWdleGVzCQ0KCSRy ZV91cmwgPSAnQF4oaHR0cDovL3xodHRwczovLykuK0AnOw0KCSRyZV9lbWFpbCA9ICI8Xlth LXowLTkhIyQlJicqKy89P15fYHt8fX4tXSsoPzpcLlthLXowLTkhIyQlJicqKy89P15fYHt8 fX4tXSspKkAoPzpbYS16MC05XSg/OlthLXowLTktXSpbYS16MC05XSk/XC4pK1thLXowLTld KD86W2EtejAtOS1dKlthLXowLTldKT8kPiI7DQoJJHJlX3Bob25lID0gJy9eWzAtOSgpXC0r IF0rJC8nOw0KCSRyZV9tc2cgPSAnL14uKyQvJzsNCgkkcmVfZ2VvID0gJy9eWzAtOS5cLV0r JC8nOw0KCSRyZV9kaWdpdHMgPSAnL15bMC05XCtcLV0rJC8nOw0KCSRyZV93aWZpX3Byb3Rv Y29sID0gJy9eKFdFUHxXUEEpJC8nOw0KDQoJLy8gcmVnZXggYXJyYXk6IGNhbiBiZSBvdmVy cmlkZGVuIG9uIGEgY2FzZSBieSBjYXNlIGJhc2lzIGJ5IHRoZSB2YWxpZGF0ZSBhdHRyaWJ1 dGUNCgkkcmVnZXhlcyA9IGFycmF5KA0KCQkndGV4dCcgPT4gJHJlX21zZywNCgkJJ3VybCcg PT4gJHJlX3VybCwNCgkJJ3RpdGxlJyA9PiAkcmVfbXNnLA0KCQkncGhvbmUnID0+ICRyZV9w aG9uZSwNCgkJJ25hbWUnID0+ICRyZV9tc2csDQoJCSdhZGRyZXNzJyA9PiAkcmVfbXNnLA0K CQknZW1haWwnID0+ICRyZV9lbWFpbCwNCgkJJ3N1YmplY3QnID0+ICRyZV9tc2csDQoJCSdt ZXNzYWdlJyA9PiAkcmVfbXNnLA0KCQknbGF0JyA9PiAkcmVfZ2VvLA0KCQknbG9uJyA9PiAk cmVfZ2VvLA0KCQknaGVpZ2h0JyA9PiAkcmVfZGlnaXRzLA0KCQknd2lmaV9wcm90b2NvbCcg PT4gJHJlX3dpZmlfcHJvdG9jb2wsDQoJCSdzc2lkJyA9PiAkcmVfbXNnLA0KCQkncGFzcycg PT4gJHJlX21zZywNCgkpOw0KDQoJaWYgKCR2YWxpZGF0ZSA9PSAnMCcpIHsNCgkJJHRvVmFs aWRhdGUgPSBhcnJheSgpOw0KCX0NCglpZiAoJHZhbGlkYXRlID09ICcxJykgew0KCQkkdG9W YWxpZGF0ZVtdID0gJ1NNRF9BTEwnOw0KCX0gZWxzZSB7DQoJCSRmaWVsZHMgPSBkb19saXN0 KCR2YWxpZGF0ZSwgJHZhbGlkZWxpbSk7DQoJCWZvcmVhY2ggKCRmaWVsZHMgYXMgJGZpZWxk aW5mbykgew0KCQkJJGZpZWxkUGFydHMgPSBleHBsb2RlKCRkZWxpbSwgJGZpZWxkaW5mbyk7 DQoJCQkkdG9WYWxpZGF0ZVtdID0gJGZpZWxkUGFydHNbMF07DQoJCQlpZiAoaXNzZXQoJGZp ZWxkUGFydHNbMV0pKSB7DQoJCQkJJHJlZ2V4ZXNbJGZpZWxkUGFydHNbMF1dID0gJGZpZWxk UGFydHNbMV07DQoJCQl9DQoJCX0NCgl9DQoNCgkvLyBFYWNoIGVudHJ5IGxpbmtzIHRoZSAn dHlwZScgYXR0cmlidXRlIHdpdGggYW4gYXJyYXkgY29tcHJpc2luZzoNCgkvLyAgVGhlIG1l dGhvZCBuYW1lIHRvIGNhbGwgdmlhICRxcmMtPiRtZXRob2QoKQ0KCS8vICBBbiBhcnJheSBv ZiBleHBlY3RlZCBhdHRyaWJ1dGVzLiBUaGUgcmVnZXggdG8gdXNlIGZvciBlYWNoIGNhbiBi ZSBsb29rZWQgdXAgaW4gdGhlICRyZWdleGVzIGFycmF5DQoJLy9UT0RPOiBpYXBwbGkgKCJh cHAiKQ0KCSRhbGxvd2VkX3R5cGVzID0gYXJyYXkoDQoJCSd0ZXh0JyAgICAgPT4gYXJyYXko J3RleHQnICAgICAgICAgPT4gYXJyYXkoJ3RleHQnKSksDQoJCSdsaW5rJyAgICAgPT4gYXJy YXkoJ2xpbmsnICAgICAgICAgPT4gYXJyYXkoJ3VybCcpKSwNCgkJJ2Jvb2ttYXJrJyA9PiBh cnJheSgnYm9va21hcmsnICAgICA9PiBhcnJheSgndGl0bGUnLCAndXJsJykpLA0KCQknc21z JyAgICAgID0+IGFycmF5KCdzbXMnICAgICAgICAgID0+IGFycmF5KCdwaG9uZScsICd0ZXh0 JykpLA0KCQkncGhvbmUnICAgID0+IGFycmF5KCdwaG9uZV9udW1iZXInID0+IGFycmF5KCdw aG9uZScpKSwNCgkJJ2NvbnRhY3QnICA9PiBhcnJheSgnY29udGFjdF9pbmZvJyA9PiBhcnJh eSgnbmFtZScsICdhZGRyZXNzJywgJ3Bob25lJywgJ2VtYWlsJykpLA0KCQkndmNhcmQnICAg ID0+IGFycmF5KCd2Y2FyZCcgICAgICAgID0+IGFycmF5KCduYW1lJywgJ2VtYWlsJywgJ3Vy bCcsICdhZGRyZXNzJywgJ3Bob25lJykpLA0KCQknZW1haWwnICAgID0+IGFycmF5KCdlbWFp bCcgICAgICAgID0+IGFycmF5KCdlbWFpbCcsICdzdWJqZWN0JywgJ21lc3NhZ2UnKSksDQoJ CSdnZW8nICAgICAgPT4gYXJyYXkoJ2dlbycgICAgICAgICAgPT4gYXJyYXkoJ2xhdCcsICds b24nLCAnaGVpZ2h0JykpLA0KCQknd2lmaScgICAgID0+IGFycmF5KCd3aWZpJyAgICAgICAg ID0+IGFycmF5KCd3aWZpX3Byb3RvY29sJywgJ3NzaWQnLCAncGFzcycpKSwNCgkpOw0KDQoJ aWYgKGFycmF5X2tleV9leGlzdHMoJHR5cGUsICRhbGxvd2VkX3R5cGVzKSkgew0KCQkkcXJj ID0gbmV3IHNtZF9xcmNvZGUoJHdpZHRoLCAkaGVpZ2h0LCAkcXVhbGl0eSwgJG1hcmdpbiwg JGJnY29sLCAkYWxwaGEsICRlc2NhcGUpOw0KCQkkZW50cnkgPSAkYWxsb3dlZF90eXBlc1sk dHlwZV07DQoNCgkJLy8gT25seSBldmVyIG9uZSAiZW50cnkiIGJ1dCBpdCdzIHRoZSBzaW1w bGVzdCB3YXkgdG8gc3BsaXQga2V5PT52YWx1ZQ0KCQlmb3JlYWNoICgkZW50cnkgYXMgJG1l dGhvZCA9PiAkYXR0cmlicykgew0KCQkJJHBhcmFtcyA9IHNtZF9xcmNvZGVfZXh0cmFjdCgk YXR0cmlicywgJHJlZ2V4ZXMsICR0b1ZhbGlkYXRlLCAkZGF0YSwgJGRlbGltLCAkbWV0aG9k LCAkZGVidWcpOw0KCQl9DQoNCgkJaWYgKCRwYXJhbXMgPT09IGZhbHNlKSB7DQoJCQlyZXR1 cm4gJyc7DQoJCX0gZWxzZSB7DQoJCQkvLyBSdW4gdGhlIGZ1bmN0aW9uIHRoYXQgcHJlcGFy ZXMgdGhlIGRhdGEgb2JqZWN0DQoJCQkkcXJjLT4kbWV0aG9kKCRwYXJhbXMpOw0KCQl9DQoN CgkJaWYgKCRmb3JtYXQgPT0gJ3ZpZXcnKSB7DQoJCQkkdHJpYnMgPSAnJzsNCgkJCWlmICgh JHdyYXB0YWcpIHsNCgkJCQkkdHJpYnMgLj0gKCRjbGFzcykgPyAnIGNsYXNzPSInLiRjbGFz cy4nIicgOiAnJzsNCgkJCQkkdHJpYnMgLj0gKCRodG1sX2lkKSA/ICcgaWQ9IicuJGh0bWxf aWQuJyInIDogJyc7DQoJCQkJJHRyaWJzIC49ICgkdGl0bGUpID8gJyB0aXRsZT0iJy4kdGl0 bGUuJyInIDogJyc7DQoJCQl9DQoNCgkJCSRjb250ZW50ID0gJzxpbWcgc3JjPSInIC4gJHFy Yy0+Z2V0X2xpbmsoKSAuICciJy4kdHJpYnMuJyBhbHQ9IlFSIGNvZGUiIC8+JzsNCg0KCQkJ cmV0dXJuICgkd3JhcHRhZykgPyBkb1RhZygkY29udGVudCwgJHdyYXB0YWcsICRjbGFzcywg JycsICRodG1sX2lkKSA6ICRjb250ZW50Ow0KDQoJCX0gZWxzZWlmICgkZm9ybWF0ID09ICdk b3dubG9hZCcpIHsNCgkJCSRmaWxlID0gJHFyYy0+Z2V0X2ltYWdlKCk7DQoJCQkkcXJjLT5k b3dubG9hZF9pbWFnZSgkZmlsZSk7DQoJCQlyZXR1cm4gJyc7DQoJCX0gZWxzZWlmICgkZm9y bWF0ID09ICdyYXcnKSB7DQoJCQkkY29udGVudCA9ICRxcmMtPmdldF9saW5rKCk7DQoJCQly ZXR1cm4gKCR3cmFwdGFnKSA/IGRvVGFnKCRjb250ZW50LCAkd3JhcHRhZywgJGNsYXNzLCAn JywgJGh0bWxfaWQpIDogJGNvbnRlbnQ7DQoJCX0NCgl9IGVsc2Ugew0KCQl0cmlnZ2VyX2Vy cm9yKHNtZF9xcl9jb2RlX2dUeHQoJ3NtZF9xcl9jb2RlX2ludmFsaWRfdHlwZScsIGFycmF5 KCd7dHlwZX0nID0+ICR0eXBlKSksIEVfVVNFUl9OT1RJQ0UpOw0KCQlyZXR1cm4gJyc7DQoJ fQ0KfQ0KDQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gc21kX3FyY29k ZV9leHRyYWN0KCRwZXJtaXR0ZWQsICRyZWdleExpc3QsICR2YWxpZGF0ZUxpc3QsICRkYXRh LCAkZGxtLCAkdGFnLCAkZGVidWc9ZmFsc2UpIHsNCgkkb3B0cyA9IGRvX2xpc3QoJGRhdGEs ICRkbG0pOw0KDQoJJG91dCA9IGFycmF5KCk7DQoJJGNvdW50ID0gMDsNCg0KCWlmICgkZGVi dWcpIHsNCgkJZWNobyAnKysgUEVSTUlUVEVEIElURU1TIC8gU1VQUExJRUQgSVRFTVMgLyBS RUdFWEVTIC8gRklFTERTIFRPIFZBTElEQVRFICsrJzsNCgkJZG1wKCRwZXJtaXR0ZWQsICRv cHRzLCAkcmVnZXhMaXN0LCAkdmFsaWRhdGVMaXN0KTsNCgl9DQoNCglpZiAoY291bnQoJHBl cm1pdHRlZCkgIT0gY291bnQoJG9wdHMpKSB7DQoJCXRyaWdnZXJfZXJyb3Ioc21kX3FyX2Nv ZGVfZ1R4dCgnc21kX3FyX2NvZGVfYXR0cmlidXRlX21pc21hdGNoJywgYXJyYXkoJ3t0eXBl fScgPT4gJHRhZywgJ3tjb3VudH0nID0+IGNvdW50KCRvcHRzKSwgJ3tleHBlY3RlZH0nID0+ IGNvdW50KCRwZXJtaXR0ZWQpLCAne2ZpZWxkc30nID0+IGpvaW4oJywgJywgJHBlcm1pdHRl ZCkpKSwgRV9VU0VSX05PVElDRSk7DQoJCXJldHVybiBmYWxzZTsNCgl9DQoNCglmb3JlYWNo ICgkcGVybWl0dGVkIGFzICRpZHgpIHsNCgkJaWYgKGlzc2V0KCRvcHRzWyRjb3VudF0pKSB7 DQoJCQkkZGF0YXZhbCA9ICRvcHRzWyRjb3VudF07DQoJCQlpZiAoJGRhdGF2YWwgPT0gJ3tz bWRfZW1wdHl9Jykgew0KCQkJCSRvdXRbJGlkeF0gPSAnJzsNCgkJCX0gZWxzZSB7DQoJCQkJ aWYgKGluX2FycmF5KCdTTURfQUxMJywgJHZhbGlkYXRlTGlzdCkgfHwgaW5fYXJyYXkoJGlk eCwgJHZhbGlkYXRlTGlzdCkpIHsNCgkJCQkJJHJlID0gaXNzZXQoJHJlZ2V4TGlzdFskaWR4 XSkgPyAkcmVnZXhMaXN0WyRpZHhdIDogJyc7DQoJCQkJCWlmICgkcmUpIHsNCgkJCQkJCWlm ICgkZGVidWcgPiAxKSB7DQoJCQkJCQkJZG1wKCdWQUxJREFUSU5HICcgLiAkaWR4KTsNCgkJ CQkJCX0NCgkJCQkJCWlmIChwcmVnX21hdGNoKCRyZSwgJGRhdGF2YWwpKSB7DQoJCQkJCQkJ JG91dFskaWR4XSA9ICRkYXRhdmFsOw0KCQkJCQkJfSBlbHNlIHsNCgkJCQkJCQl0cmlnZ2Vy X2Vycm9yKHNtZF9xcl9jb2RlX2dUeHQoJ3NtZF9xcl9jb2RlX2ludmFsaWRfYXR0cmlidXRl JywgYXJyYXkoJ3thdHRyaWJ9JyA9PiAkaWR4LCAne3RhZ30nID0+ICR0YWcpKSwgRV9VU0VS X05PVElDRSk7DQoJCQkJCQkJcmV0dXJuIGZhbHNlOw0KCQkJCQkJfQ0KCQkJCQl9IGVsc2Ug ew0KCQkJCQkJJG91dFskaWR4XSA9ICRkYXRhdmFsOw0KCQkJCQkJdHJpZ2dlcl9lcnJvcihz bWRfcXJfY29kZV9nVHh0KCdzbWRfcXJfY29kZV9ub19yZWdleCcsIGFycmF5KCd7YXR0cmli fScgPT4gJGlkeCwgJ3t0YWd9JyA9PiAkdGFnKSksIEVfVVNFUl9XQVJOSU5HKTsNCgkJCQkJ fQ0KCQkJCX0gZWxzZSB7DQoJCQkJCS8vIE5vdCB2YWxpZGF0aW5nLCBzbyBzdG9yZSBpdCB2 ZXJiYXRpbQ0KCQkJCQlpZiAoJGRlYnVnID4gMSkgew0KCQkJCQkJZG1wKCdOT1QgVkFMSURB VElORyAnIC4gJGlkeCk7DQoJCQkJCX0NCgkJCQkJJG91dFskaWR4XSA9ICRkYXRhdmFsOw0K CQkJCX0NCgkJCX0NCgkJfSBlbHNlIHsNCgkJCS8vIFRPRE86IGVybS4uLj8NCgkJfQ0KCQkk Y291bnQrKzsNCgl9DQoNCglyZXR1cm4gJG91dDsNCn0NCg0KZnVuY3Rpb24gc21kX3FyX2Nv ZGVfZ1R4dCgkd2hhdCwgJGF0dHMgPSBhcnJheSgpKSB7DQoJJGxhbmcgPSBhcnJheSgNCgkJ J3NtZF9xcl9jb2RlX2F0dHJpYnV0ZV9taXNtYXRjaCcgPT4gIk51bWJlciBvZiBwYXJhbWV0 ZXJzIGRvbid0IG1hdGNoIGluICd7dHlwZX0nIFFSIGNvZGU6IGdpdmVuIHtjb3VudH0sIGV4 cGVjdGluZyB7ZXhwZWN0ZWR9IChGaWVsZHM6IHtmaWVsZHN9KSIsDQoJCSdzbWRfcXJfY29k ZV9pbnZhbGlkX2F0dHJpYnV0ZScgPT4gIkludmFsaWQgYXR0cmlidXRlICd7YXR0cmlifScg c3VwcGxpZWQgaW4gJ3t0YWd9JyBRUiBjb2RlLiBDaGVjayB0aGUgZm9ybWF0IGFuZCBvcmRl ciBvZiBkYXRhIGl0ZW1zIiwNCgkJJ3NtZF9xcl9jb2RlX2ludmFsaWRfdHlwZScgPT4gIklu dmFsaWQgUVIgY29kZSB0eXBlICd7dHlwZX0nIiwNCgkJJ3NtZF9xcl9jb2RlX25vX3JlZ2V4 JyA9PiAiTm8gcmVnZXggZm91bmQgZm9yICd7YXR0cmlifScgaW4gJ3t0YWd9JyBRUiBjb2Rl IC0tIGlnbm9yaW5nIiwNCgkpOw0KCXJldHVybiBzdHJ0cigkbGFuZ1skd2hhdF0sICRhdHRz KTsNCn0NCg0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogKiBUaGlzIHNj cmlwdCBpcyBkZXZlbG9wZWQgYnkgQXJ0dXJzIFNvc2lucyBha2EgYXIycnNhd3NlZW4sIGh0 dHA6Ly9jb2RlLXNuaXBwZXRzLmNvLmNjDQogKiBGZWVsIGZyZWUgdG8gZGlzdHJpYnV0ZSBh bmQgbW9kaWZ5IGNvZGUsIGJ1dCBrZWVwIHJlZmVyZW5jZSB0byBpdHMgY3JlYXRvcg0KICoN CiAqIENsYXNzIG5hbWUgcHJlZml4ZWQgd2l0aCBzbWRfIGZvciB1c2UgaW4gVGV4dHBhdHRl cm4gKHRvIGF2b2lkIG5hbWVzcGFjZSBjbGFzaGVzKQ0KICogTW9kaWZpZWQgYnkgU3RlZiBE YXdzb24gZm9yIFRleHRwYXR0ZXJuDQogKg0KICogVGhpcyBjbGFzcyBnZW5lcmF0ZSBRUiBb UXVpY2sgUmVzcG9uc2VdIGNvZGVzIHdpdGggcHJvcGVyIG1ldGFkYXRhIGZvciBtb2JpbGUg IHBob25lcw0KICogdXNpbmcgZ29vZ2xlIGNoYXJ0IGFwaSBodHRwOi8vY2hhcnQuYXBpcy5n b29nbGUuY29tDQogKiBIZXJlIGFyZSBzb3VyY2VzIHdpdGggZnJlZSBRUiBjb2RlIHJlYWRp bmcgc29mdHdhcmUgZm9yIG1vYmlsZSBwaG9uZXM6DQogKiBodHRwOi8vcmVhZGVyLmtheXdh LmNvbS8NCiAqIGh0dHA6Ly93d3cucXVpY2ttYXJrLmNvbS50dy9Fbi9iYXNpYy9kb3dubG9h ZC5hc3ANCiAqIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC96eGluZy8NCiAqDQogKiBGb3Ig bW9yZSBpbmZvcm1hdGlvbiwgZXhhbXBsZXMgYW5kIG9ubGluZSBkb2N1bWVudGF0aW9uIHZp c2l0Og0KICogaHR0cDovL2NvZGUtc25pcHBldHMuY28uY2MvUEhQLWNsYXNzZXMvUVItY29k ZS1nZW5lcmF0b3ItY2xhc3MNCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov DQpjbGFzcyBzbWRfcXJjb2RlDQp7DQoJcHJpdmF0ZSAkYXBpID0gJ2h0dHA6Ly9jaGFydC5h cGlzLmdvb2dsZS5jb20vY2hhcnQnOw0KCXByaXZhdGUgJGRhdGE7DQoJcHJpdmF0ZSAkZGlt ZW5zaW9ucyA9ICcnOw0KCXByaXZhdGUgJHF1YWxpdHkgPSAnJzsNCglwcml2YXRlICRjb2xv dXIgPSAnJzsNCglwcml2YXRlICRlc2NhcGUgPSAnJzsNCg0KCS8vIENvbnN0cnVjdG9yDQoJ cHVibGljIGZ1bmN0aW9uIHNtZF9xcmNvZGUoJHdpZHRoLCAkaGVpZ2h0LCAkcXVhbCwgJG1h cmdpbiwgJGJnY29sLCAkYWxwaGEsICRlc2MpIHsNCgkJJHRoaXMtPmVzY2FwZSA9ICRlc2M7 DQoNCgkJLy8gQnVpbGQgQVBJIHN0cmluZ3MNCgkJJHcgPSAoaXNfbnVtZXJpYygkd2lkdGgp KSA/ICR3aWR0aCA6IDIwMDsNCgkJJGggPSAoaXNfbnVtZXJpYygkaGVpZ2h0KSkgPyAkaGVp Z2h0IDogMjAwOw0KCQkkdGhpcy0+ZGltZW5zaW9ucyA9ICR3Lid4Jy4kaDsNCg0KCQkkY29s b3VycyA9IGFycmF5KCk7DQoJCWlmICgkYWxwaGEpICRjb2xvdXJzW10gPSAnYSxzLDAwMDAw MCcuc3Vic3RyKCRhbHBoYSwgLTIpOw0KCQlpZiAoJGJnY29sKSAkY29sb3Vyc1tdID0gJ2Jn LHMsJy4kYmdjb2w7DQoJCSR0aGlzLT5jb2xvdXIgPSAoJGNvbG91cnMpID8gam9pbignfCcs ICRjb2xvdXJzKSA6ICcnOw0KDQoJCSRxdWFsID0gc3RydG91cHBlcigkcXVhbCk7DQoJCSRz em9wdHNbXSA9ICgkcXVhbCAmJiBpbl9hcnJheSgkcXVhbCwgYXJyYXkoJ0wnLCAnTScsICdR JywgJ0gnKSkpID8gJHF1YWwgOiAnTCc7DQoJCWlmIChpc19udW1lcmljKCRtYXJnaW4pKSAk c3pvcHRzW10gPSAkbWFyZ2luOw0KCQkkdGhpcy0+cXVhbGl0eSA9IGpvaW4oJ3wnLCAkc3pv cHRzKTsNCgl9DQoNCgkvLyBjcmVhdGUgY29kZSB3aXRoIGxpbmsgbWV0YWRhdGENCglwdWJs aWMgZnVuY3Rpb24gbGluaygkYXJncykgew0KCQlleHRyYWN0KCRhcmdzKTsNCgkJaWYgKHBy ZWdfbWF0Y2goJy9eaHR0cDpcL1wvLycsICR1cmwpIHx8IHByZWdfbWF0Y2goJy9eaHR0cHM6 XC9cLy8nLCAkdXJsKSkgew0KCQkJJHRoaXMtPmRhdGEgPSAkdXJsOw0KCQl9IGVsc2Ugew0K CQkJJHRoaXMtPmRhdGEgPSAiaHR0cDovLyIuJHVybDsNCgkJfQ0KCX0NCg0KCS8vIGNyZWF0 ZSBjb2RlIHdpdGggYm9va21hcmsgbWV0YWRhdGENCglwdWJsaWMgZnVuY3Rpb24gYm9va21h cmsoJGFyZ3MpIHsNCgkJZXh0cmFjdCgkYXJncyk7DQoJCSR0aGlzLT5kYXRhID0gIk1FQktN OlRJVExFOiIuJHRpdGxlLiI7VVJMOiIuJHVybC4iOzsiOw0KCX0NCg0KCS8vIGNyZWF0ZSB0 ZXh0IHFyIGNvZGUNCglwdWJsaWMgZnVuY3Rpb24gdGV4dCgkYXJncykgew0KCQlleHRyYWN0 KCRhcmdzKTsNCgkJJHRoaXMtPmRhdGEgPSAkdGV4dDsNCgl9DQoNCgkvLyBjcmVhdGUgY29k ZSB3aXRoIHNtcyBtZXRhZGF0YQ0KCXB1YmxpYyBmdW5jdGlvbiBzbXMoJGFyZ3MpIHsNCgkJ ZXh0cmFjdCgkYXJncyk7DQoJCSR0aGlzLT5kYXRhID0gIlNNU1RPOiIuJHBob25lLiI6Ii4k dGV4dDsNCgl9DQoNCgkvLyBjcmVhdGUgY29kZSB3aXRoIHBob25lIG51bWJlcg0KCXB1Ymxp YyBmdW5jdGlvbiBwaG9uZV9udW1iZXIoJGFyZ3MpIHsNCgkJZXh0cmFjdCgkYXJncyk7DQoJ CSR0aGlzLT5kYXRhID0gIlRFTDoiLiRwaG9uZTsNCgl9DQoNCgkvLyBjcmVhdGUgY29kZSB3 aXRoIG1lY2FyZCBtZXRhZGF0YQ0KCXB1YmxpYyBmdW5jdGlvbiBjb250YWN0X2luZm8oJGFy Z3MpIHsNCgkJZXh0cmFjdCgkYXJncyk7DQoJCSR0aGlzLT5kYXRhID0gIk1FQ0FSRDpOOiIu JG5hbWUuIjtBRFI6Ii4kYWRkcmVzcy4iO1RFTDoiLiRwaG9uZS4iO0VNQUlMOiIuJGVtYWls LiI7OyI7DQoJfQ0KDQoJLy8gY3JlYXRlIGNvZGUgd2l0aCB2Y2FyZCBtZXRhZGF0YQ0KCXB1 YmxpYyBmdW5jdGlvbiB2Y2FyZCgkYXJncykgew0KCQlleHRyYWN0KCRhcmdzKTsNCgkJJGZv cm1hbF9uYW1lID0gam9pbignOycsIGFycmF5X3JldmVyc2UoZXhwbG9kZSgnICcsICRuYW1l KSkpOw0KCQkkdGhpcy0+ZGF0YSA9ICJCRUdJTjpWQ0FSRFxyXG5OOiIuJGZvcm1hbF9uYW1l LiJcclxuRk46Ii4kbmFtZS4iXHJcbkVNQUlMOiIuJGVtYWlsLiJcclxuVVJMOiIuJHVybC4i XHJcbkFEUjoiLiRhZGRyZXNzLiJcclxuVEVMOiIuJHBob25lLiJcclxuRU5EOlZDQVJEIjsN Cgl9DQoNCgkvLyBjcmVhdGUgY29kZSB3dGggZW1haWwgbWV0YWRhdGENCglwdWJsaWMgZnVu Y3Rpb24gZW1haWwoJGFyZ3MpIHsNCgkJZXh0cmFjdCgkYXJncyk7DQoJCSR0aGlzLT5kYXRh ID0gIk1BVE1TRzpUTzoiLiRlbWFpbC4iO1NVQjoiLiRzdWJqZWN0LiI7Qk9EWToiLiRtZXNz YWdlLiI7OyI7DQoJfQ0KDQoJLy8gY3JlYXRlIGNvZGUgd2l0aCBnZW8gbG9jYXRpb24gbWV0 YWRhdGENCglwdWJsaWMgZnVuY3Rpb24gZ2VvKCRhcmdzKSB7DQoJCWV4dHJhY3QoJGFyZ3Mp Ow0KCQkkdGhpcy0+ZGF0YSA9ICJHRU86Ii4kbGF0LiIsIi4kbG9uLiIsIi4kaGVpZ2h0Ow0K CX0NCg0KCS8vIGNyZWF0ZSBjb2RlIHdpdGggd2lmaSBjb25maWd1cmF0aW9uIG1ldGFkYXRh DQoJcHVibGljIGZ1bmN0aW9uIHdpZmkoJGFyZ3MpIHsNCgkJZXh0cmFjdCgkYXJncyk7DQoJ CSR0aGlzLT5kYXRhID0gIldJRkk6VDoiLiR3aWZpX3Byb3RvY29sLiI7UyIuJHNzaWQuIjsi LiRwYXNzLiI7OyI7DQoJfQ0KDQoJLy8gVE9ETw0KCS8vIGNyZWF0ZSBjb2RlIHdpdGggaS1h cHBsaSBhY3RpdmF0aW5nIG1ldGEgZGF0YQ0KCXB1YmxpYyBmdW5jdGlvbiBpYXBwbGkoJGFk ZiwgJGNtZCwgJHBhcmFtKSB7DQoJCSRwYXJhbV9zdHIgPSAiIjsNCgkJZm9yZWFjaCgkcGFy YW0gYXMgJHZhbCkNCgkJew0KCQkJJHBhcmFtX3N0ciAuPSAiUEFSQU06Ii4kdmFsWyJuYW1l Il0uIiwiLiR2YWxbInZhbHVlIl0uIjsiOw0KCQl9DQoJCSR0aGlzLT5kYXRhID0gIkxBUEw6 QURGVVJMOiIuJGFkZi4iO0NNRDoiLiRjbWQuIjsiLiRwYXJhbV9zdHIuIjsiOw0KCX0NCg0K CS8vIGNyZWF0ZSBjb2RlIHdpdGggZ2lmIG9yIGpwZyBpbWFnZSwgb3Igc21mIG9yIE1GaSBv ZiBUb3J1Q2EgZmlsZXMgYXMgY29udGVudA0KCXB1YmxpYyBmdW5jdGlvbiBjb250ZW50KCRh cmdzKSB7DQoJCWV4dHJhY3QoJGFyZ3MpOw0KCQkkdGhpcy0+ZGF0YSA9ICJDTlRTOlRZUEU6 Ii4kdHlwZS4iO0xORzoiLiRzaXplLiI7Qk9EWToiLiRjb250ZW50LiI7OyI7DQoJfQ0KDQoJ cHJpdmF0ZSBmdW5jdGlvbiBnZXRfdXJsX3BhcmFtcygpIHsNCgkJJHBhcmFtcyA9IGFycmF5 KA0KCQkJJ2NodCcgPT4gJ3FyJywNCgkJCSdjaHMnID0+ICR0aGlzLT5kaW1lbnNpb25zLA0K CQkJJ2NobGQnID0+ICR0aGlzLT5xdWFsaXR5LA0KCQkJJ2NobCcgPT4gKCgkdGhpcy0+ZXNj YXBlID09ICdodG1sJykgPyB1cmxlbmNvZGUoJHRoaXMtPmRhdGEpIDogJHRoaXMtPmRhdGEp LA0KCQkpOw0KDQoJCS8vIENvbG91ciBpcyBvcHRpb25hbA0KCQlpZiAoJHRoaXMtPmNvbG91 cikgew0KCQkJJHBhcmFtc1snY2hmJ10gPSAkdGhpcy0+Y29sb3VyOw0KCQl9DQoNCgkJcmV0 dXJuIGh0dHBfYnVpbGRfcXVlcnkoJHBhcmFtcywgJycsICcmYW1wOycpOw0KCX0NCg0KCS8v IGdldCBpbWFnZQ0KCXB1YmxpYyBmdW5jdGlvbiBnZXRfaW1hZ2UoKXsNCgkJJGNoID0gY3Vy bF9pbml0KCk7DQoJCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VUkwsICR0aGlzLT5hcGkp Ow0KCQljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUE9TVCwgdHJ1ZSk7DQoJCWN1cmxfc2V0 b3B0KCRjaCwgQ1VSTE9QVF9QT1NURklFTERTLCAkdGhpcy0+Z2V0X3VybF9wYXJhbXMoKSk7 DQoJCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7DQoJ CWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9IRUFERVIsIGZhbHNlKTsNCgkJY3VybF9zZXRv cHQoJGNoLCBDVVJMT1BUX1RJTUVPVVQsIDMwKTsNCg0KCQkkcmVzcG9uc2UgPSBjdXJsX2V4 ZWMoJGNoKTsNCgkJY3VybF9jbG9zZSgkY2gpOw0KCQlyZXR1cm4gJHJlc3BvbnNlOw0KCX0N Cg0KCS8vIGdldCBsaW5rIGZvciBpbWFnZQ0KCXB1YmxpYyBmdW5jdGlvbiBnZXRfbGluaygk Zm9sbG93PWZhbHNlKXsNCgkJcmV0dXJuICR0aGlzLT5hcGkuJz8nLiR0aGlzLT5nZXRfdXJs X3BhcmFtcygpOw0KCX0NCg0KCS8vIGZvcmNlIGltYWdlIGRvd25sb2FkDQoJcHVibGljIGZ1 bmN0aW9uIGRvd25sb2FkX2ltYWdlKCRmaWxlKXsNCgkJaGVhZGVyKCdDb250ZW50LURlc2Ny aXB0aW9uOiBGaWxlIFRyYW5zZmVyJyk7DQoJCWhlYWRlcignQ29udGVudC1UeXBlOiBpbWFn ZS9wbmcnKTsNCgkJaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBm aWxlbmFtZT1xcl9jb2RlLnBuZycpOw0KCQloZWFkZXIoJ0NvbnRlbnQtVHJhbnNmZXItRW5j b2Rpbmc6IGJpbmFyeScpOw0KCQloZWFkZXIoJ0V4cGlyZXM6IDAnKTsNCgkJaGVhZGVyKCdD YWNoZS1Db250cm9sOiBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hlY2s9MCwgcHJlLWNoZWNr PTAnKTsNCgkJaGVhZGVyKCdQcmFnbWE6IHB1YmxpYycpOw0KCQloZWFkZXIoJ0NvbnRlbnQt TGVuZ3RoOiAnIC4gZmlsZXNpemUoJGZpbGUpKTsNCgkJb2JfY2xlYW4oKTsNCgkJZmx1c2go KTsNCgkJZWNobyAkZmlsZTsNCgl9DQp9IjtzOjQ6InR5cGUiO3M6MToiMCI7czo1OiJvcmRl ciI7czoxOiI1IjtzOjU6ImZsYWdzIjtzOjE6IjAiO3M6NDoiaGVscCI7czoxNTA4MjoiPGRp diBpZD0ic21kX2hlbHAiPgoKCTxoMT5zbWRfcXJfY29kZTwvaDE+CgoJPHA+Q3JlYXRlIFF1 aWNrIFJlc3BvbnNlIDItRCBiYXJjb2RlcyBvbiB0aGUgZmx5IGNvbnRhaW5pbmcgYSB2YXJp ZXR5IG9mIGRhdGE6IHRleHQsIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGxpbmtz LCBjb250YWN0IGRldGFpbHMsIGdlb2dyYXBoaWNhbCBsb2NhdGlvbiBkYXRhLCB3aWZpIGhv dHNwb3QgcmVxdWVzdHMsIGFuZCBzbyBvbi4gQ2hvb3NlIHRvIGVtYmVkIHRoZSBiYXJjb2Rl IGRpcmVjdGx5IG9uIHlvdXIgcGFnZSBvciBvZmZlciBpdCBhcyBhIGRvd25sb2FkLjwvcD4K Cgk8aDI+QXV0aG9yIC8gY3JlZGl0czwvaDI+CgoJPHA+V3JpdHRlbiBieSA8YSBocmVmPSJo dHRwOi8vc3RlZmRhd3Nvbi5jb20vY29udGFjdCI+U3RlZiBEYXdzb248L2E+LiBDcmVkaXRz IGFsc28gZ28gdG8gdGhlIEdvb2dsZSBDaGFydHMgPHNwYW4gY2xhc3M9ImNhcHMiPkFQSTwv c3Bhbj4gYW5kIEFydHVycyBTb3NpbnMmIzgyMTc7IGludGVyZmFjZSwgd2hpY2ggSSBoYWNr ZWQgZm9yIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGFuZCBpbXByb3ZlZC4gTWFu eSB0aGFua3MgdG8gYWxsIGludm9sdmVkLjwvcD4KCgk8aDI+SW5zdGFsbGF0aW9uIC8gdW5p bnN0YWxsYXRpb248L2gyPgoKCTxwIGNsYXNzPSJpbXBvcnRhbnQiPlJlcXVpcmVzIDxzcGFu IGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IDQuNC4wKywgPHNwYW4gY2xhc3M9ImNhcHMiPlBI UDwvc3Bhbj4gNSAod2l0aCA8c3BhbiBjbGFzcz0iY2FwcyI+Q1VSTDwvc3Bhbj4pIGFuZCBJ bnRlcm5ldCBhY2Nlc3M8L3A+CgoJPHA+RG93bmxvYWQgdGhlIHBsdWdpbiBmcm9tIGVpdGhl ciA8YSBocmVmPSJodHRwOi8vdGV4dHBhdHRlcm4ub3JnL3BsdWdpbnMvMTIxOS9zbWRfcXJf Y29kZSI+dGV4dHBhdHRlcm4ub3JnPC9hPiwgb3IgdGhlIDxhIGhyZWY9Imh0dHA6Ly9zdGVm ZGF3c29uLmNvbS9zdyI+c29mdHdhcmUgcGFnZTwvYT4sIHBhc3RlIHRoZSBjb2RlIGludG8g dGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IDxlbT5BZG1pbiAtJmd0OyBQbHVn aW5zPC9lbT4gcGFuZSwgaW5zdGFsbCBhbmQgZW5hYmxlIHRoZSBwbHVnaW4uIFRvIHVuaW5z dGFsbCwgZGVsZXRlIGZyb20gdGhlIDxlbT5BZG1pbiAtJmd0OyBQbHVnaW5zPC9lbT4gcGFn ZS48L3A+CgoJPHA+VmlzaXQgdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVy bi5jb20vdmlld3RvcGljLnBocD9pZD0zNTg4NiI+Zm9ydW0gdGhyZWFkPC9hPiBmb3IgbW9y ZSBpbmZvIG9yIHRvIHJlcG9ydCBvbiB0aGUgc3VjY2VzcyBvciBvdGhlcndpc2Ugb2YgdGhl IHBsdWdpbi48L3A+CgoJPGgyPlVzYWdlOiA8Y29kZT4mbHQ7dHhwOnNtZF9xcl9jb2RlIC8m Z3Q7PC9jb2RlPjwvaDI+CgoJPHA+VGhlIHBsdWdpbiBhZGRzIG9uZSB0YWcsIHdoaWNoIHlv dSBjYW4gdXNlIHRvIGVtYmVkIGEgUVIgY29kZSBvbiB5b3VyIHBhZ2UuIFRoZSB0YWcgYXR0 cmlidXRlcyBhcmU6PC9wPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnR5cGU8 L3NwYW4+IDogdGhlIHR5cGUgb2YgUVIgY29kZSB0byBnZW5lcmF0ZS4gQ2hvb3NlIGZyb20g b25lIG9mOgoJPHVsPgoJCTxsaT48c3Ryb25nPnRleHQ8L3N0cm9uZz4gOiB0aGUgZGVmYXVs dDwvbGk+CgkJPGxpPjxzdHJvbmc+bGluazwvc3Ryb25nPiA6IGEgaHlwZXJsaW5rLiBUaGUg PGNvZGU+aHR0cFtzXTovLzwvY29kZT4gcHJlZml4IGlzIG9wdGlvbmFsIGFuZCB3aWxsIGJl IGFkZGVkIGlmIG9taXR0ZWQ8L2xpPgoJCTxsaT48c3Ryb25nPmJvb2ttYXJrPC9zdHJvbmc+ PC9saT4KCQk8bGk+PHN0cm9uZz5zbXM8L3N0cm9uZz4gOiBzZW5kIGEgdGV4dCBtZXNzYWdl PC9saT4KCQk8bGk+PHN0cm9uZz5waG9uZTwvc3Ryb25nPjwvbGk+CgkJPGxpPjxzdHJvbmc+ ZW1haWw8L3N0cm9uZz48L2xpPgoJCTxsaT48c3Ryb25nPmNvbnRhY3Q8L3N0cm9uZz4gOiBh IDxzcGFuIGNsYXNzPSJjYXBzIj5NRUNBUkQ8L3NwYW4+PC9saT4KCQk8bGk+PHN0cm9uZz52 Y2FyZDwvc3Ryb25nPiA6IGEgY29tcGFjdCB2ZXJzaW9uIG9mIHRoZSBmdWxsIHZjYXJkIHNw ZWM8L2xpPgoJCTxsaT48c3Ryb25nPmdlbzwvc3Ryb25nPiA6IGdlb2dyYXBoaWNhbCBsb2Nh dGlvbiAoZGVjaW1hbCBsYXRpdHVkZSwgbG9uZ2l0dWRlIGFuZCBoZWlnaHQgYWJvdmUgdGhl IGVhcnRoJiM4MjE3O3Mgc3VyZmFjZSk8L2xpPgoJCTxsaT48c3Ryb25nPndpZmk8L3N0cm9u Zz4gOiB3aWZpIGhvdHNwb3QgbG9naW4gY3JlZGVudGlhbHMgKDxzcGFuIGNsYXNzPSJjYXBz Ij5XRVA8L3NwYW4+IG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5XUEE8L3NwYW4+IHByb3RvY29s cyBzdXBwb3J0ZWQpPC9saT4KCTwvdWw+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PmRhdGE8L3NwYW4+IDogdGhlIGluZm9ybWF0aW9uIHRvIHB1dCBpbiB0aGUgUVIgY29kZS4g VGhlIGRhdGEgaXMgZGVwZW5kZW50IG9uIHRoZSA8Y29kZT50eXBlPC9jb2RlPiAmIzgyMTI7 IHNlZSA8YSBocmVmPSIjc21kX3FyX2NvZGVfZGF0YV90YWJsZSI+dGhlIGRhdGEgdGFibGU8 L2E+IGZvciBkZXRhaWxzIG9uIHRoZSBxdWFudGl0eSBhbmQgb3JkZXIgb2YgZGF0YSB5b3Ug cHV0IGluIHRoZSA8Y29kZT5kYXRhPC9jb2RlPiBhdHRyaWJ1dGUuIERlbGltaXQgdGhlIGRh dGEgd2l0aCBhIHBpcGUgKHRob3VnaCB0aGlzIGNhbiBiZSBjaGFuZ2VkIHdpdGggdGhlIDxj b2RlPmRlbGltPC9jb2RlPiBhdHRyaWJ1dGUgaWYgcmVxdWlyZWQpLiBGb3IgZXhhbXBsZSwg PGNvZGU+dHlwZT0mcXVvdDtib29rbWFyayZxdW90OyBkYXRhPSZxdW90OzIwLDAwMCBMZWFn dWVzIHVuZGVyIHRoZSBTZWF8d3d3Lmp1bGVzLXZlcm5lLmNvLnVrLyZxdW90OzwvY29kZT48 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZGVsaW08L3NwYW4+IDogdGhlIGRlbGlt aXRlciB0byB1c2UgYmV0d2VlbiA8Y29kZT5kYXRhPC9jb2RlPiBpdGVtcy4gRGVmYXVsdDog PGNvZGU+fDwvY29kZT4gKHBpcGUpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnZh bGlkYXRlPC9zcGFuPiA6IHdoZXRoZXIgdG8gdmFsaWRhdGUgYWxsIGZpZWxkcyAoMSwgdGhl IGRlZmF1bHQpLCBubyBmaWVsZHMgKDApIG9yIHRoZSBnaXZlbiBsaXN0IG9mIGRhdGEgZmll bGRzLiBUaGUgbGlzdCBpcyBkZWxpbWl0ZWQgYnkgPGNvZGU+dmFsaWRlbGltPC9jb2RlPiAo ZGVmYXVsdDogY29tbWEpLiBDb25zdWx0IHRoZSA8YSBocmVmPSIjc21kX3FyX2NvZGVfZGF0 YV90YWJsZSI+ZGF0YSB0YWJsZTwvYT4gZm9yIGRldGFpbHMgb24gdGhlIG5hbWVzIG9mIHRo ZSBmaWVsZHMgeW91IGNhbiB1c2UuIEFmdGVyIGVhY2ggZmllbGQgeW91IG1heSBhbHNvIGFk ZCBhIDxjb2RlPmRlbGltPC9jb2RlPiBjaGFyYWN0ZXIgYW5kIHRoZW4gYSByZWd1bGFyIGV4 cHJlc3Npb24gdG8gdmFsaWRhdGUgdGhpcyBmaWVsZCBhZ2FpbnN0LCB3aGljaCB3aWxsIG92 ZXJyaWRlIHRoZSBidWlsdC1pbiByZWdleC4gU2VlIDxhIGhyZWY9IiNlZzUiPmV4YW1wbGUg NTwvYT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dmFsaWRlbGltPC9zcGFuPiA6 IHRoZSBkZWxpbWl0ZXIgdG8gdXNlIGJldHdlZW4geW91ciBsaXN0IG9mIGl0ZW1zIHRvIDxj b2RlPnZhbGlkYXRlPC9jb2RlPi4gRGVmYXVsdDogPGNvZGU+LDwvY29kZT4gKGNvbW1hKTwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5mb3JtYXQ8L3NwYW4+IDogd2hldGhlciB5 b3Ugd2lzaCB0byA8Y29kZT52aWV3PC9jb2RlPiB0aGUgYmFyY29kZSBpbmxpbmUgKGluc2lk ZSBhbiA8Y29kZT4mbHQ7aW1nJmd0OzwvY29kZT4gdGFnKSwgZm9yY2UgaXQgdG8gPGNvZGU+ ZG93bmxvYWQ8L2NvZGU+LCBvciBvdXRwdXQgdGhlIDxjb2RlPnJhdzwvY29kZT4gbGluayBz byB5b3UgY2FuIGNyYWZ0IHlvdXIgb3duIHVzZSBmb3IgaXQuIERlZmF1bHQ6IDxjb2RlPnZp ZXc8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmVzY2FwZTwvc3Bhbj4g OiBFc2NhcGUgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IGVudGl0aWVzIHN1Y2gg YXMgPGNvZGU+Jmx0OzwvY29kZT4sIDxjb2RlPiZndDs8L2NvZGU+IGFuZCA8Y29kZT4mYW1w OzwvY29kZT4uIFVzZSA8Y29kZT5lc2NhcGU9JnF1b3Q7aHRtbCZxdW90OzwvY29kZT4gdG8g c3dpdGNoIHRoaXMgb24uIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPndpZHRoPC9zcGFuPiA6IHdpZHRoIG9mIHRoZSBjb2RlLCBpbiBwaXhlbHMuIERl ZmF1dDogMjAwPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmhlaWdodDwvc3Bhbj4g OiBoZWlnaHQgb2YgdGhlIGNvZGUsIGluIHBpeGVscy4gRGVmYXVsdDogMjAwPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnF1YWxpdHk8L3NwYW4+IDogdGhlIGFtb3VudCBvZiBl cnJvciBjb3JyZWN0aW9uIHRoYXQgdGhlIGJhcmNvZGUgY2FuIHRvbGVyYXRlOgoJPHVsPgoJ CTxsaT48c3Ryb25nPkw8L3N0cm9uZz4gJiM4MjEyOyBMb3c6IDclIChkZWZhdWx0KTwvbGk+ CgkJPGxpPjxzdHJvbmc+TTwvc3Ryb25nPiAmIzgyMTI7IE1lZGl1bTogMTUlPC9saT4KCQk8 bGk+PHN0cm9uZz5RPC9zdHJvbmc+ICYjODIxMjsgUXVhcnRpbGU6IDI1JTwvbGk+CgkJPGxp PjxzdHJvbmc+SDwvc3Ryb25nPiAmIzgyMTI7IEhpZ2g6IDMwJTwvbGk+Cgk8L3VsPjwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5tYXJnaW48L3NwYW4+IDogdGhlIG1hcmdpbiAo aW4gUVIgY29kZSAmIzgyMjA7cm93cyYjODIyMTspIGFyb3VuZCB0aGUgaW1hZ2UuIERlZmF1 bHQ6IDQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Ymdjb2w8L3NwYW4+IDogYmFj a2dyb3VuZCBjb2xvdXIgYXMgYW4gPHNwYW4gY2xhc3M9ImNhcHMiPlJHQjwvc3Bhbj4gaGV4 IGNvZGUgKHdpdGhvdXQgdGhlICMpLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj5hbHBoYTwvc3Bhbj4gOiBhbHBoYSB0cmFuc3BhcmVuY3kgYXMgYSBo ZXggdmFsdWUgZnJvbSAwMCAodHJhbnNwYXJlbnQpIHRvIEZGIChzb2xpZCkuIERlZmF1bHQ6 IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPndyYXB0YWc8L3NwYW4+IDog dGhlIChYKUhUTUwgdGFnICYjODIxMjsgc3BlY2lmaWVkIHdpdGhvdXQgYW5nbGUgYnJhY2tl dHMgJiM4MjEyOyB0byB3cmFwIGFyb3VuZCB0aGUgb3V0cHV0LiBEZWZhdWx0OiB1bnNldDwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jbGFzczwvc3Bhbj4gOiB0aGUgPHNwYW4g Y2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3NuYW1lIHRvIGFwcGx5IHRvIHRoZSB3cmFw dGFnIChpZiBwcmVzZW50KSBvciB0aGUgPGNvZGU+Jmx0O2ltZyZndDs8L2NvZGU+IHRhZyBp ZiB5b3UgaGF2ZSBjaG9zZW4gPGNvZGU+Zm9ybWF0PSZxdW90O3ZpZXcmcXVvdDs8L2NvZGU+ LiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5odG1sX2lk PC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gaWQgdG8gYXBw bHkgdG8gdGhlIHdyYXB0YWcgKGlmIHByZXNlbnQpIG9yIHRoZSA8Y29kZT4mbHQ7aW1nJmd0 OzwvY29kZT4gdGFnIGlmIHlvdSBoYXZlIGNob3NlbiA8Y29kZT5mb3JtYXQ9JnF1b3Q7dmll dyZxdW90OzwvY29kZT4uIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPnRpdGxlPC9zcGFuPiA6IFNldCB0aGUgPGNvZGU+Jmx0O2ltZyZndDs8L2NvZGU+ IHRhZyYjODIxNztzIHRpdGxlIGF0dHJpYnV0ZSAob2Z0ZW4gdXNlZCBhcyBhIHRvb2x0aXAp LiBPbmx5IG9mIHVzZSB3aGVuIDxjb2RlPmZvcm1hdD0mcXVvdDt2aWV3JnF1b3Q7PC9jb2Rl Pi4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJPC91bD4KCgk8cD5UaGUgcGx1Z2luIGNoZWNrcyB0 aGF0IHlvdSBzdXBwbHkgYWxsIGluZm9ybWF0aW9uIGZvciB5b3VyIGNob3NlbiB0eXBlIGFu ZCwgaWYgPGNvZGU+dmFsaWRhdGU8L2NvZGU+IGlzIHNldCB2YWxpZGF0ZXMgZWFjaCBmaWVs ZCB3aXRoIGEgcmVndWxhciBleHByZXNzaW9uLiBBbnkgZGV2aWF0aW9uIHdpbGwgcmVzdWx0 IGluIGFuIGVycm9yIGJlaW5nIHRyaWdnZXJlZC48L3A+CgoJPHA+Tm90ZSB0aGF0IGlmIHlv dSB3aXNoIHRvIGRlc2lnbmF0ZSBhbiBpdGVtIGFzICYjODIxNjtlbXB0eSYjODIxNzsgKGku ZS4geW91IGRvbiYjODIxNzt0IHdhbnQgdG8gc3VwcGx5IHRoYXQgcGFyYW1ldGVyKSB5b3Ug Y2FuIHB1dCBpbiB0aGUgc3BlY2lhbCBjb2RlIDxjb2RlPntzbWRfZW1wdHl9PC9jb2RlPi4g SXQgaXMgbm90IGVub3VnaCB0byBzaW1wbHkgbGVhdmUgaXQgYmxhbmsgYmVjYXVzZSB0aGUg cGx1Z2luIGV4cGVjdHMgYWxsIGZpZWxkcyB0byBiZSBmaWxsZWQgaW4gd2l0aCA8ZW0+c29t ZXRoaW5nPC9lbT4uIFRoZSBRUiBjb2RlIHdpbGwgc3RpbGwgY29udGFpbiB0aGUgZmllbGQs IGl0IHdpbGwganVzdCBoYXZlIG5vIGRhdGEgYXNzaWduZWQgdG8gaXQuPC9wPgoKCTxoMiBp ZD0ic21kX3FyX2NvZGVfZGF0YV90YWJsZSI+RGF0YSB0YWJsZTwvaDI+CgoJPHA+SGVyZSBh cmUgYWxsIHRoZSA8Y29kZT50eXBlPC9jb2RlPnMgYXZhaWxhYmxlIGFuZCB0aGUgZmllbGRz IHRoZXkgcmVxdWlyZSBpbiB0aGUgPGNvZGU+ZGF0YTwvY29kZT4gYXR0cmlidXRlLCBmcm9t IGxlZnQgdG8gcmlnaHQuIFRoZSBuYW1lcyB1c2VkIGhlcmUgYXJlIHRoZSBuYW1lcyB5b3Ug cmVmZXIgdG8gdGhlIGZpZWxkcyB3aGVuIGxpc3RpbmcgdGhlbSBpbiB5b3VyIDxjb2RlPnZh bGlkYXRlPC9jb2RlPiBhdHRyaWJ1dGUuPC9wPgoKCTx0YWJsZT4KCTx0aGVhZD4KCQk8dHI+ CgkJCTx0aD50eXBlIDwvdGg+CgkJCTx0aCBjb2xzcGFuPSI1Ij5kYXRhIGF0dHJpYnV0ZXMg PC90aD4KCQk8L3RyPgoJPC90aGVhZD4KCTx0Ym9keT4KCQk8dHI+CgkJCTx0ZD4gPHN0cm9u Zz50ZXh0PC9zdHJvbmc+IDwvdGQ+CgkJCTx0ZD4gdGV4dCA8L3RkPgoJCQk8dGQ+IDwvdGQ+ CgkJCTx0ZD4gPC90ZD4KCQkJPHRkPiA8L3RkPgoJCQk8dGQ+IDwvdGQ+CgkJPC90cj4KCQk8 dHI+CgkJCTx0ZD4gPHN0cm9uZz5saW5rPC9zdHJvbmc+IDwvdGQ+CgkJCTx0ZD4gdXJsIDwv dGQ+CgkJCTx0ZD4gPC90ZD4KCQkJPHRkPiA8L3RkPgoJCQk8dGQ+IDwvdGQ+CgkJCTx0ZD4g PC90ZD4KCQk8L3RyPgoJCTx0cj4KCQkJPHRkPiA8c3Ryb25nPmJvb2ttYXJrPC9zdHJvbmc+ IDwvdGQ+CgkJCTx0ZD4gdGl0bGUgPC90ZD4KCQkJPHRkPiB1cmwgPC90ZD4KCQkJPHRkPiA8 L3RkPgoJCQk8dGQ+IDwvdGQ+CgkJCTx0ZD4gPC90ZD4KCQk8L3RyPgoJCTx0cj4KCQkJPHRk PiA8c3Ryb25nPnNtczwvc3Ryb25nPiA8L3RkPgoJCQk8dGQ+IHBob25lIDwvdGQ+CgkJCTx0 ZD4gdGV4dCA8L3RkPgoJCQk8dGQ+IDwvdGQ+CgkJCTx0ZD4gPC90ZD4KCQkJPHRkPiA8L3Rk PgoJCTwvdHI+CgkJPHRyPgoJCQk8dGQ+IDxzdHJvbmc+cGhvbmU8L3N0cm9uZz4gPC90ZD4K CQkJPHRkPiBwaG9uZSA8L3RkPgoJCQk8dGQ+IDwvdGQ+CgkJCTx0ZD4gPC90ZD4KCQkJPHRk PiA8L3RkPgoJCQk8dGQ+IDwvdGQ+CgkJPC90cj4KCQk8dHI+CgkJCTx0ZD4gPHN0cm9uZz5l bWFpbDwvc3Ryb25nPiA8L3RkPgoJCQk8dGQ+IGVtYWlsIDwvdGQ+CgkJCTx0ZD4gc3ViamVj dCA8L3RkPgoJCQk8dGQ+IG1lc3NhZ2UgPC90ZD4KCQkJPHRkPiA8L3RkPgoJCQk8dGQ+IDwv dGQ+CgkJPC90cj4KCQk8dHI+CgkJCTx0ZD4gPHN0cm9uZz5jb250YWN0PC9zdHJvbmc+IDwv dGQ+CgkJCTx0ZD4gbmFtZSA8L3RkPgoJCQk8dGQ+IGFkZHJlc3MgPC90ZD4KCQkJPHRkPiBw aG9uZSA8L3RkPgoJCQk8dGQ+IGVtYWlsIDwvdGQ+CgkJCTx0ZD4gPC90ZD4KCQk8L3RyPgoJ CTx0cj4KCQkJPHRkPiA8c3Ryb25nPnZjYXJkPC9zdHJvbmc+IDwvdGQ+CgkJCTx0ZD4gbmFt ZSA8L3RkPgoJCQk8dGQ+IGVtYWlsIDwvdGQ+CgkJCTx0ZD4gdXJsIDwvdGQ+CgkJCTx0ZD4g YWRkcmVzcyA8L3RkPgoJCQk8dGQ+IHBob25lIDwvdGQ+CgkJPC90cj4KCQk8dHI+CgkJCTx0 ZD4gPHN0cm9uZz5nZW88L3N0cm9uZz4gPC90ZD4KCQkJPHRkPiBsYXQgPC90ZD4KCQkJPHRk PiBsb24gPC90ZD4KCQkJPHRkPiBoZWlnaHQgPC90ZD4KCQkJPHRkPiA8L3RkPgoJCQk8dGQ+ IDwvdGQ+CgkJPC90cj4KCQk8dHI+CgkJCTx0ZD4gPHN0cm9uZz53aWZpPC9zdHJvbmc+IDwv dGQ+CgkJCTx0ZD4gd2lmaV9wcm90b2NvbCA8L3RkPgoJCQk8dGQ+IHNzaWQgPC90ZD4KCQkJ PHRkPiBwYXNzIDwvdGQ+CgkJCTx0ZD4gPC90ZD4KCQkJPHRkPiA8L3RkPgoJCTwvdHI+Cgk8 L3Rib2R5PgoJPC90YWJsZT4KCgk8aDI+RXhhbXBsZXM8L2gyPgoKCTxoMyBpZD0iZWcxIj5F eGFtcGxlIDE6IEJvb2ttYXJrIHBlcm1saW5rczwvaDM+CgoJPHA+SW4geW91ciBkZWZhdWx0 IEZvcm0gcHV0IGEgUVIgY29kZSBhbG9uZ3NpZGUgeW91ciBhcnRpY2xlIGhlYWRpbmcgc28g cGVvcGxlIGNhbiBib29rbWFyayB0aGUgYXJ0aWNsZSBieSB0YWtpbmcgYSBwaWN0dXJlIHdp dGggdGhlaXIgc21hcnQgcGhvbmU6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNs YXNzPSJibG9jayI+Jmx0O2gxIGNsYXNzPSZxdW90O2VudHJ5LXRpdGxlJnF1b3Q7Jmd0Owog ICAmbHQ7dHhwOnBlcm1saW5rJmd0OyZsdDt0eHA6dGl0bGUgLyZndDsmbHQ7L3R4cDpwZXJt bGluayZndDsKICAgJmx0O3R4cDpzbWRfcXJfY29kZSB0eXBlPSZxdW90O2Jvb2ttYXJrJnF1 b3Q7CiAgICAgZGF0YT0mIzM5OyZsdDt0eHA6dGl0bGUgLyZndDt8Jmx0O3R4cDpwZXJtbGlu ayAvJmd0OyYjMzk7CiAgICAgd2lkdGg9JnF1b3Q7NTAmcXVvdDsgaGVpZ2h0PSZxdW90OzUw JnF1b3Q7CiAgICAgcXVhbGl0eT0mcXVvdDtRJnF1b3Q7IC8mZ3Q7CiZsdDsvaDEmZ3Q7Cjwv Y29kZT48L3ByZT4KCgk8cD5Ob3RpY2UgdGhhdCBzaW5jZSB0aGUgaW1hZ2Ugc2l6ZSBoYXMg YmVlbiByZWR1Y2VkIHRvIGZpdCBhbG9uZ3NpZGUgdGhlIHRpdGxlLCB0aGUgcXVhbGl0eSAo ZXJyb3IgZGV0ZWN0aW9uL2NvcnJlY3Rpb24pIGhhcyBiZWVuIGluY3JlYXNlZCB0byBjb21w ZW5zYXRlLjwvcD4KCgk8aDMgaWQ9ImVnMiI+RXhhbXBsZSAyOiBBdXRob3IgY29udGFjdCBk ZXRhaWxzPC9oMz4KCgk8cD5JZiB5b3UgaGF2ZSBzbWRfYmlvIGluc3RhbGxlZCB5b3UgY291 bGQgYWRkIHRoZSBmb2xsb3dpbmcgY29kZSB0byB0aGUgJiM4MjE2O3B1Ymxpc2hlZCBieSYj ODIxNzsgc2VnbWVudCBvZiB5b3VyIGFydGljbGVzLiBJdCB3aWxsIGRpc3BsYXkgYSBRUiBj b2RlIGZvciB0aGUgY29udGFjdCBkZXRhaWxzIG9mIHRoZSBhcnRpY2xlJiM4MjE3O3MgYXV0 aG9yLCB0aHVzIHZpc2l0b3JzIGNhbiBzY2FuIHRoZSBiYXJjb2RlIGFuZCBoYXZlIHRoZSBh dXRob3ImIzgyMTc7cyA8c3BhbiBjbGFzcz0iY2FwcyI+TUVDQVJEPC9zcGFuPiBhZGRlZCBk aXJlY3RseSB0byB0aGVpciBhZGRyZXNzIGJvb2tzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2Nr Ij48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtwIGNsYXNzPSZxdW90O3B1Ymxpc2hlZCZxdW90 OyZndDsKICAgJmx0O3R4cDpwb3N0ZWQgLyZndDsgYnkgJmx0O3R4cDphdXRob3IgdGl0bGU9 JnF1b3Q7MCZxdW90OyAvJmd0OwogICAmbHQ7dHhwOnNtZF9xcl9jb2RlIHR5cGU9JnF1b3Q7 Y29udGFjdCZxdW90OwogICAgIGRhdGE9JiMzOTsmbHQ7dHhwOmF1dGhvciAvJmd0OwogICAg ICAgIHwgJmx0O3R4cDpzbWRfYmlvX2luZm8gaXRlbXM9JnF1b3Q7YWRkcmVzcyZxdW90OyBs YWJlbD0mcXVvdDsmcXVvdDsgLyZndDsKICAgICAgICB8ICZsdDt0eHA6c21kX2Jpb19pbmZv IGl0ZW1zPSZxdW90O3Bob25lJnF1b3Q7IGxhYmVsPSZxdW90OyZxdW90OyAvJmd0OwogICAg ICAgIHwgJmx0O3R4cDpzbWRfYmlvX2luZm8gaXRlbXM9JnF1b3Q7ZW1haWwmcXVvdDsgbGFi ZWw9JnF1b3Q7JnF1b3Q7IC8mZ3Q7IC8mZ3Q7JiMzOTsKICAgICBiZ2NvbD0mcXVvdDtiZWE3 ZDAmcXVvdDsgbWFyZ2luPSZxdW90OzEmcXVvdDsgLyZndDsKJmx0Oy9wJmd0Owo8L2NvZGU+ PC9wcmU+CgoJPHA+VGhpcyBvbmUgaGFzIGEgbmF0dHksIHRoaW4gcHVycGxlIGJvcmRlciB0 b28gY291cnRlc3kgb2YgdGhlIDxjb2RlPmJnY29sPC9jb2RlPiBhbmQgPGNvZGU+bWFyZ2lu PC9jb2RlPiBhdHRyaWJ1dGVzLjwvcD4KCgk8cD5BbHRlcm5hdGl2ZWx5LCBpbiA8c3BhbiBj bGFzcz0iY2FwcyI+VkNBUkQ8L3NwYW4+IGZvcm1hdDo8L3A+Cgo8cHJlIGNsYXNzPSJibG9j ayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnZhcmlhYmxlCiAgICAgbmFtZT0mcXVv dDthZGRyZXNzJnF1b3Q7Jmd0OyZsdDt0eHA6c21kX2Jpb19pbmZvCiAgICAgaXRlbXM9JnF1 b3Q7YWRkcmVzcyZxdW90OyBsYWJlbD0mcXVvdDsmcXVvdDsgLyZndDsmbHQ7L3R4cDp2YXJp YWJsZSZndDsKJmx0O3AgY2xhc3M9JnF1b3Q7cHVibGlzaGVkJnF1b3Q7Jmd0OwogICAmbHQ7 dHhwOnBvc3RlZCAvJmd0OyBieSAmbHQ7dHhwOmF1dGhvciB0aXRsZT0mcXVvdDswJnF1b3Q7 IC8mZ3Q7CiAgICZsdDt0eHA6c21kX3FyX2NvZGUgdHlwZT0mcXVvdDt2Y2FyZCZxdW90Owog ICAgIGRhdGE9JiMzOTsmbHQ7dHhwOmF1dGhvciAvJmd0OwogICAgICAgIHwgJmx0O3R4cDpz bWRfYmlvX2luZm8gaXRlbXM9JnF1b3Q7ZW1haWwmcXVvdDsgbGFiZWw9JnF1b3Q7JnF1b3Q7 IC8mZ3Q7IC8mZ3Q7JiMzOTsKICAgICAgICB8ICZsdDt0eHA6c21kX2Jpb19pbmZvIGl0ZW1z PSZxdW90O3dlYnNpdGUmcXVvdDsgbGFiZWw9JnF1b3Q7JnF1b3Q7IC8mZ3Q7CiAgICAgICAg fCAmbHQ7dHhwOmlmX3ZhcmlhYmxlCiAgICAgICAgICAgICAgIG5hbWU9JnF1b3Q7YWRkcmVz cyZxdW90OwogICAgICAgICAgICAgICB2YWx1ZT0mcXVvdDsmcXVvdDsmZ3Q7e3NtZF9lbXB0 eX0mbHQ7dHhwOmVsc2UgLyZndDsmbHQ7dHhwOnZhcmlhYmxlCiAgICAgICAgICAgICAgIG5h bWU9JnF1b3Q7YWRkcmVzcyZxdW90OyAvJmd0OyZsdDsvdHhwOmlmX3ZhcmlhYmxlJmd0Owog ICAgICAgIHwgJmx0O3R4cDpzbWRfYmlvX2luZm8gaXRlbXM9JnF1b3Q7cGhvbmUmcXVvdDsg bGFiZWw9JnF1b3Q7JnF1b3Q7IC8mZ3Q7CiAgICAgYmdjb2w9JnF1b3Q7YmVhN2QwJnF1b3Q7 IG1hcmdpbj0mcXVvdDsxJnF1b3Q7IC8mZ3Q7CiZsdDsvcCZndDsKPC9jb2RlPjwvcHJlPgoK CTxwPk5vdGUgaW4gdGhpcyBjYXNlIHdlIGhhdmUgY2hlY2tlZCBpZiB0aGUgYWRkcmVzcyBp cyBlbXB0eSBhbmQgc3VwcGxpZWQgdGhlIDxjb2RlPntzbWRfZW1wdHl9PC9jb2RlPiBwYXJh bWV0ZXIgYXMgYSBjb252ZW5pZW5jZS4gWW91IHdvdWxkIHByb2JhYmx5IGVuZm9yY2UgdGhp cyB1cHN0cmVhbSBhdCBkYXRhIGNvbGxlY3Rpb24gcG9pbnQsIGJ1dCB0aGlzIHNlcnZlcyB0 byBkZW1vbnN0cmF0ZSB0aGF0IHlvdSBjYW4gZGVmZW5zaXZlbHkgcHJldmVudCBzbWRfcXJf Y29kZSB2YWxpZGF0aW9uIGVycm9ycyBieSBlbXBsb3lpbmcgc2ltaWxhciB0ZWNobmlxdWVz IG9uIGNlcnRhaW4gb3B0aW9uYWwgZmllbGRzLjwvcD4KCgk8aDMgaWQ9ImVnMyI+RXhhbXBs ZSAzOiBHZW9ncmFwaGljIGxvY2F0aW9uPC9oMz4KCgk8cD5PcmdhbmlzaW5nIGEgZmxhc2ht b2Igb24gTW91bnQgS2lsaW1hbmphcm8/IE1ha2Ugc3VyZSBwZW9wbGUgY2FuIGZpbmQgeW91 IGJ5IHB1Ymxpc2hpbmcgYSBRUiBjb2RlIG9uIHlvdXIgc2l0ZTo8L3A+Cgo8cHJlIGNsYXNz PSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9xcl9jb2RlIHR5cGU9 JnF1b3Q7Z2VvJnF1b3Q7CiAgICAgZGF0YT0mcXVvdDstMy4wNzU4MyB8IDM3LjM1MzMzIHwg NTg5NSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPGgzIGlkPSJlZzQiPkV4YW1wbGUg NDogUmF3IGxpbmtzPC9oMz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxv Y2siPiZsdDthIGhyZWY9JnF1b3Q7Jmx0O3R4cDpzbWRfcXJfY29kZQogICAgIHR5cGU9JnF1 b3Q7bGluayZxdW90OyBkYXRhPSZxdW90O215ZmFic2l0ZS5jb20vdm91Y2hlcnMmcXVvdDsK ICAgICBmb3JtYXQ9JnF1b3Q7cmF3JnF1b3Q7IC8mZ3Q7JnF1b3Q7Jmd0O0Rvd25sb2FkIHlv dXIgdm91Y2hlciZsdDsvYSZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPldoaWxlIHRoaXMgb25l IGlzIGp1c3QgYSBib3JpbmcgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gbGluayB0 aGVyZSYjODIxNztzIG5vdGhpbmcgdG8gc3RvcCB5b3UgZ2VuZXJhdGluZyBhIHBlcnNvbmFs IHZvdWNoZXIgY29kZSwgcGVyaGFwcyBhZnRlciB0aGV5IGhhdmUgc3VibWl0dGVkIHRoZWly IGNvbnRhY3QgZGV0YWlscyB2aWEgemVtX2NvbnRhY3RfcmVib3JuLCBhbmQgdGFja2luZyBp dCBvbnRvIHRoZSBlbmQgb2YgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+Ljwv cD4KCgk8aDMgaWQ9ImVnNSI+RXhhbXBsZSA1OiBPdmVycmlkaW5nIHJlZ2V4ZXM8L2gzPgoK PHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfcXJf Y29kZQogICAgIHR5cGU9JnF1b3Q7Ym9va21hcmsmcXVvdDsgZGVsaW09JnF1b3Q7IyZxdW90 OwogICAgIHZhbGlkYXRlPSZxdW90O3RpdGxlLCB1cmwjJV4oZmlsZTovL3xodHRwOi8vfGZ0 cDovLykuKyQlJnF1b3Q7CiAgICAgZGF0YT0mcXVvdDtCb29rbWFyayBtZSAjIGZ0cDovL3N0 ZWZkYXdzb24uY29tJnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5BIGZldyB0aGlu Z3MgdG8gbm90ZSBhYm91dCB0aGlzIG9uZTo8L3A+CgoJPHVsPgoJCTxsaT5UaGUgZGVsaW1p dGVyIGhhcyBiZWVuIGNoYW5nZWQgYmVjYXVzZSB0aGUgcmVndWxhciBleHByZXNzaW9uIHVz ZXMgcGlwZSBzeW1ib2xzIGluIGl0cyBkZWZpbml0aW9uPC9saT4KCQk8bGk+VGhlIHRpdGxl IGlzIHN0aWxsIGJlaW5nIHZhbGlkYXRlZCwgYW5kIHdpbGwgdXNlIHRoZSBidWlsdC1pbiBy ZWd1bGFyIGV4cHJlc3Npb248L2xpPgoJCTxsaT5UaGUgJiM4MjE2O3VybCYjODIxNzsgcmVn ZXggaXMgZ29pbmcgdG8gYmUgdmFsaWRhdGVkIHVzaW5nIHRoZSBnaXZlbiByZWdleCA8c3Ry b25nPmluY2x1ZGluZyBzdGFydC9lbmQgZGVsaW1pdGVyczwvc3Ryb25nPi4gTm9ybWFsbHkg d2UmIzgyMTc7ZCB1c2UgYSA8Y29kZT4vPC9jb2RlPiBidXQgaW4gdGhpcyBjYXNlIHdlIGhh dmUgY2hvc2VuIDxjb2RlPiU8L2NvZGU+IGFzIHRoZSBzdGFydC9lbmQgY2hhcmFjdGVyIGJl Y2F1c2Ugd2UmIzgyMTc7cmUgdXNpbmcgPGNvZGU+LzwvY29kZT5zIGluIHRoZSByZWdleCBp dHNlbGYsIHdoaWNoIG1lYW5zIHdlIGRvbiYjODIxNzt0IGhhdmUgdG8gZXNjYXBlIHRoZW08 L2xpPgoJPC91bD4KCgk8aDI+Q2hhbmdlbG9nPC9oMj4KCgk8cD4zMSBNYXIgMTEgfCAwLjEw IHwgSW5pdGlhbCBwdWJsaWMgcmVsZWFzZTxiciAvPgowMiBBcHIgMTEgfCAwLjIwIHwgQWRk ZWQgPGNvZGU+dGl0bGU8L2NvZGU+IGF0dHJpYnV0ZSBmb3IgdGhlIDxjb2RlPiZsdDtpbWcm Z3Q7PC9jb2RlPiB0YWcgOyBhZGRlZCB2Y2FyZCB0eXBlICh0aGFua3MgZ29tZWRpYSkgOyBh ZGRlZCA8Y29kZT52YWxpZGF0ZTwvY29kZT4gYW5kIDxjb2RlPnZhbGlkZWxpbTwvY29kZT4g dG8gYWxsb3cgcmVnZXggb3ZlcnJpZGVzIDsgZml4ZWQgdXJsIHJlZ2V4IDsgaW1wcm92ZWQg ZXJyb3IgcmVwb3J0aW5nIDsgcGVybWl0dGVkIDxjb2RlPmRlYnVnPC9jb2RlPiB0byBhaWQg aW4gdHJhY2tpbmcgZG93biByZWdleCAvIHZhbGlkYXRpb24gZXJyb3JzPC9wPgoKPC9kaXY+ CjwhLS0gKioqIEJFR0lOIFBMVUdJTiBDU1MgKioqIC0tPgo8c3R5bGUgdHlwZT0idGV4dC9j c3MiPgojc21kX2hlbHAgeyBsaW5lLWhlaWdodDoxLjUgO30KI3NtZF9oZWxwIGNvZGUgeyBm b250LXdlaWdodDpib2xkOyBmb250OiAxMDUlLzEzMCUgIkNvdXJpZXIgTmV3IiwgY291cmll ciwgbW9ub3NwYWNlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBlNjhjOyBjb2xvcjojMzMzOyB9 CiNzbWRfaGVscCBjb2RlLmJsb2NrIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBib3JkZXI6MXB4 IGRvdHRlZCAjOTk5OyBkaXNwbGF5OmJsb2NrOyBtYXJnaW46MTBweCAxMHB4IDIwcHg7IHBh ZGRpbmc6MTBweDsgfQojc21kX2hlbHAgaDEgeyBmb250OiAyMHB4IEdlb3JnaWEsIHNhbnMt c2VyaWY7IG1hcmdpbjogMDsgdGV4dC1hbGlnbjogY2VudGVyOyB9CiNzbWRfaGVscCBoMiB7 IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjazsgcGFkZGluZzoxMHB4IDAgMDsgZm9u dDogMTdweCBHZW9yZ2lhLCBzYW5zLXNlcmlmOyB9CiNzbWRfaGVscCBoMyB7IGZvbnQ6IGJv bGQgMTJweCBBcmlhbCwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2lu OiAxMHB4IDAgMDsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9CiNzbWRfaGVscCBoNCB7 IGZvbnQ6IGJvbGQgMTFweCBBcmlhbCwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDFw eDsgbWFyZ2luOiAxMHB4IDAgMCA7dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfQojc21k X2hlbHAgLmF0bm0geyBmb250LXdlaWdodDpib2xkOyB9CiNzbWRfaGVscCAubWFuZCB7IGJh Y2tncm91bmQ6I2VlZTsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgfQojc21kX2hlbHAgdGFi bGUgeyB3aWR0aDo5MCU7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nLWJvdHRvbToxZW07 IGJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTsgfQojc21kX2hlbHAgdGhlYWQgeyBib3JkZXIt Ym90dG9tOmRvdWJsZTsgfQojc21kX2hlbHAgdGQsICNzbWRfaGVscCB0aCB7IGJvcmRlcjox cHggc29saWQgIzk5OTsgcGFkZGluZzouNWVtOyB9CiNzbWRfaGVscCB1bCB7IGxpc3Qtc3R5 bGUtdHlwZTpzcXVhcmU7IH0KI3NtZF9oZWxwIC5pbXBvcnRhbnQgeyBjb2xvcjpyZWQ7IH0K I3NtZF9oZWxwIGxpIHsgbWFyZ2luOjVweCAyMHB4IDVweCAzMHB4OyB9CiNzbWRfaGVscCAu YnJlYWsgeyBtYXJnaW4tdG9wOjVweDsgfQo8L3N0eWxlPgo8IS0tICoqKiBFTkQgUExVR0lO IENTUyAqKiogLS0+CiI7czozOiJtZDUiO3M6MzI6IjUzNGJjODYwYWEyOTEzNTU3MWI0Njg5 MGRlZjIzYjRkIjt9