# pnh_mf v0.5 # Tags for embedding Microformats in page templates and content. # Chris Casciano # http://placenamehere.com/ # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YTo5OntzOjQ6Im5hbWUiO3M6NjoicG5oX21mIjtzOjc6InZlcnNpb24iO3M6MzoiMC41Ijtz OjY6ImF1dGhvciI7czoxNDoiQ2hyaXMgQ2FzY2lhbm8iO3M6MTA6ImF1dGhvcl91cmkiO3M6 MjU6Imh0dHA6Ly9wbGFjZW5hbWVoZXJlLmNvbS8iO3M6MTE6ImRlc2NyaXB0aW9uIjtzOjYy OiJUYWdzIGZvciBlbWJlZGRpbmcgTWljcm9mb3JtYXRzIGluIHBhZ2UgdGVtcGxhdGVzIGFu ZCBjb250ZW50LiI7czo0OiJ0eXBlIjtpOjA7czo0OiJoZWxwIjtzOjI5MDQ6IgoJPGgxPltw bmhfbWZdIE1pY3JvZm9ybWF0IFBsdWdpbiBIZWxwPC9oMT4KCTxwPlRoaXMgcGx1Z2luIHBy b3ZpZGVzIHRhZ3MgZm9yIGVtYmVkZGluZyBNaWNyb2Zvcm1hdHMgaW4gcGFnZSB0ZW1wbGF0 ZXMsIGZvcm1zIGFuZCBjb250ZW50LiBUYWdzIGF2YWlsYWJsZSBpbiB0aGlzIHZlcnNpb246 PC9wPgoJPHVsPgoJCTxsaT50eHA6cG5oX21mX3hmbjwvbGk+CgkJPGxpPnR4cDpwbmhfbWZf aGNhcmQ8L2xpPgoJCTxsaT50eHA6cG5oX21mX2FkcjwvbGk+CgkJPGxpPnR4cDpwbmhfbWZf aGNhbGVuZGFyPC9saT4KCQk8bGk+dHhwOnBuaF9tZl90YWc8L2xpPgoJCTxsaT50eHA6cG5o X21mX2xpY2Vuc2U8L2xpPgoJCTxsaT50eHA6cG5oX21mX2dlbzwvbGk+Cgk8L3VsPgoJPHA+ QWxsIG9mIHRoZXNlIHRhZ3MgY2FuIGJlIHVzZWQgaW4gZWl0aGVyIHRlbXBsYXRlcyAoJiM4 MjE2O3BhZ2VzJiM4MjE3OyksIHNuaXBwZXRzICgmIzgyMTY7Zm9ybXMmIzgyMTc7KSBvciBp biBhcnRpY2xlIGJvZGllcywgYnV0IGNhbm5vdCBiZSB1c2VkIGluIGNvbW1lbnRzLjwvcD4K CTxoMj50eHA6cG5oX21mX3hmbjwvaDI+Cgk8cD5Vc2FnZTogPGNvZGU+Jmx0O3R4cDpwbmhf bWZfeGZuJmd0OyZsdDsvdHhwOnBuaF9tZl94Zm4mZ3Q7PC9jb2RlPjwvcD4KCTxoMz5BdHRy aWJ1dGVzICYjMzg7IENvbnRlbnQ8L2gzPgoJPHVsPgoJCTxsaT5yZWw8L2xpPgoJCTxsaT5o cmVmPC9saT4KCQk8bGk+aWQ8L2xpPgoJCTxsaT5jbGFzczwvbGk+CgkJPGxpPnRpdGxlPC9s aT4KCQk8bGk+bmFtZSAoY29udGVudCk8L2xpPgoJPC91bD4KCTxoMj50eHA6cG5oX21mX2hj YXJkPC9oMj4KCTxwPlVzYWdlOiA8Y29kZT4mbHQ7dHhwOnBuaF9tZl9oY2FyZCAvJmd0Ozwv Y29kZT48YnIgLz4KVXNhZ2U6IDxjb2RlPiZsdDt0eHA6cG5oX21mX2hjYXJkJmd0OyZsdDt0 eHA6cG5oX21mX2FkciAvJmd0OyZsdDsvdHhwOnBuaF9tZl9oY2FyZCZndDs8L2NvZGU+PC9w PgoJPGgzPkF0dHJpYnV0ZXMgJiMzODsgQ29udGVudDwvaDM+Cgk8dWw+CgkJPGxpPm5hbWU8 L2xpPgoJCTxsaT5ocmVmPC9saT4KCQk8bGk+b3JnPC9saT4KCQk8bGk+b3JnaHJlZjwvbGk+ CgkJPGxpPnBob3RvPC9saT4KCQk8bGk+ZW1haWw8L2xpPgoJCTxsaT53b3JrdGVsPC9saT4K CQk8bGk+aG9tZXRlbDwvbGk+CgkJPGxpPmNlbGx0ZWw8L2xpPgoJCTxsaT53b3JrZmF4PC9s aT4KCQk8bGk+YWRkcmVzcyhlcykgKGNvbnRlbnQsIHVzaW5nIHBuaF9tZl9hZHIpPC9saT4K CTwvdWw+Cgk8aDI+dHhwOnBuaF9tZl9hZHI8L2gyPgoJPHA+VXNhZ2U6IDxjb2RlPiZsdDt0 eHA6cG5oX21mX2FkciAvJmd0OzwvY29kZT48L3A+Cgk8aDM+QXR0cmlidXRlczwvaDM+Cgk8 dWw+CgkJPGxpPnR5cGU8L2xpPgoJCTxsaT5wb3N0b2ZmaWNlYm94PC9saT4KCQk8bGk+c3Ry ZWV0YWRkcmVzczwvbGk+CgkJPGxpPmV4dGVuZGVkYWRkcmVzczwvbGk+CgkJPGxpPmxvY2Fs aXR5PC9saT4KCQk8bGk+cmVnaW9uPC9saT4KCQk8bGk+cG9zdGFsY29kZTwvbGk+CgkJPGxp PmNvdW50cnk8L2xpPgoJPC91bD4KCTxoMj50eHA6cG5oX21mX2hjYWxlbmRhcjwvaDI+Cgk8 cD5Vc2FnZTogPGNvZGU+Jmx0O3R4cDpwbmhfbWZfaGNhbGVuZGFyJmd0OyZsdDsvdHhwOnBu aF9tZl9oY2FsZW5kYXImZ3Q7PC9jb2RlPjwvcD4KCTxoMz5BdHRyaWJ1dGVzICYjMzg7IENv bnRlbnQ8L2gzPgoJPHVsPgoJCTxsaT5zdW1tYXJ5PC9saT4KCQk8bGk+bG9jYXRpb248L2xp PgoJCTxsaT5ocmVmPC9saT4KCQk8bGk+ZHRzdGFydCAobWFjaGluZSBmb3JtYXR0ZWQgc3Rh cnQpPC9saT4KCQk8bGk+c3RhcnQgKGh1bWFuIHJlYWRhYmxlIHN0YXJ0KTwvbGk+CgkJPGxp PmR0ZW5kIChtYWNoaW5lIGZvcm1hdHRlZCBlbmQpPC9saT4KCQk8bGk+ZW5kIChodW1hbiBy ZWFkYWJsZSBlbmQpPC9saT4KCQk8bGk+ZGVzY3JpcHRpb24gKGNvbnRlbnQpPC9saT4KCTwv dWw+Cgk8cD5OT1RFOiBSZWFkIGZvciBodHRwOi8vbWljcm9mb3JtYXRzLm9yZy93aWtpL2hj YWxlbmRhciBwcm9wZXIgZGF0ZSB1c2FnZS4gVmFsdWUgdXNlZCBpbiB0YWcgaXMgaW4gZXhw ZWN0ZWQgbWFjaGluZSByZWFkYWJsZSBmb3JtYXQuPC9wPgoJPGgyPnR4cDpwbmhfbWZfdGFn PC9oMj4KCTxwPlVzYWdlOiA8Y29kZT4mbHQ7dHhwOnBuaF9tZl90YWcmZ3Q7Jmx0Oy90eHA6 cG5oX21mX3RhZyZndDs8L2NvZGU+PC9wPgoJPGgzPkF0dHJpYnV0ZXMgJiMzODsgQ29udGVu dDwvaDM+Cgk8dWw+CgkJPGxpPmhyZWYgKGlmIG5vdCBwcm92aWRlZCB1c2VzIHRlY2hub3Jh dGkpPC9saT4KCQk8bGk+aWQ8L2xpPgoJCTxsaT5jbGFzczwvbGk+CgkJPGxpPnRpdGxlPC9s aT4KCQk8bGk+dGFnIChjb250ZW50KTwvbGk+Cgk8L3VsPgoJPGgyPnR4cDpwbmhfbWZfbGlj ZW5zZTwvaDI+Cgk8cD5Vc2FnZTogPGNvZGU+Jmx0O3R4cDpwbmhfbWZfbGljZW5zZSZndDsm bHQ7L3R4cDpwbmhfbWZfbGljZW5zZSZndDs8L2NvZGU+PC9wPgoJPGgzPkF0dHJpYnV0ZXMg JiMzODsgQ29udGVudDwvaDM+Cgk8dWw+CgkJPGxpPmhyZWY8L2xpPgoJCTxsaT5pZDwvbGk+ CgkJPGxpPmNsYXNzPC9saT4KCQk8bGk+dGl0bGU8L2xpPgoJCTxsaT5saW5rIHRleHQgKGNv bnRlbnQpPC9saT4KCTwvdWw+Cgk8aDI+dHhwOnBuaF9tZl9nZW88L2gyPgoJPHA+VXNhZ2U6 IDxjb2RlPiZsdDt0eHA6cG5oX21mX2dlbyAvJmd0OzwvY29kZT48L3A+Cgk8aDM+QXR0cmli dXRlczwvaDM+Cgk8dWw+CgkJPGxpPmxhdDwvbGk+CgkJPGxpPmxvbmc8L2xpPgoJPC91bD4K CTxwPkZvciBtb3JlIGRldGFpbGVkIGV4YW1wbGVzIGFuZCB1cGRhdGVzIHBsZWFzZSBzZWUg dGhlIDxhIGhyZWY9Imh0dHA6Ly9wbGFjZW5hbWVoZXJlLmNvbS9UWFAvcG5oX21mLyI+cGx1 Z2luJiM4MjE3O3MgaG9tZSBwYWdlPC9hPi48L3A+CgoKICI7czo0OiJjb2RlIjtzOjY5MjM6 IgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCi8vIFB1YmxpYyBzaWRlIHRhZ3MKCgkvLyBBIHRhZyBmb3IgdGhlIFhGTiBtaWNyb2Zv cm1hdAoJLy8gPHR4cDpwbmhfbWZfeGZuIHJlbD0iY29udGFjdCIgaHJlZj0iaHR0cDovL3Bs YWNlbmFtZWhlcmUuY29tLyI+Q2hyaXM8L3R4cDpwbmhfbWZfeGZuPgoJLy8gYWxzbyBhY2Nl cHRzIHN0YW5kYXJkIDxhPiBhdHRyaWJ1dGVzOiBpZCwgY2xhc3MsIHRpdGxlCgoJZnVuY3Rp b24gcG5oX21mX3hmbigkYXR0cywkdGV4dD0nJykgewoJCWV4dHJhY3QobEF0dHMoYXJyYXko CgkJCSdyZWwnICA9PiAnJywKCQkJJ2hyZWYnICA9PiAnJywKCQkpLCRhdHRzKSk7CgoJCS8v IFRoZSByZXR1cm5lZCB2YWx1ZSB3aWxsIHJlcGxhY2UgdGhlIHRhZyBvbiB0aGUgcGFnZQoJ CSRtYXJrdXAgPSAnPGEgaHJlZj0iJy4kaHJlZi4nIic7CgkJJG1hcmt1cCAuPSAnIHJlbD0i Jy4kcmVsLiciJzsKCgkJaWYgKGlzc2V0KCRjbGFzcykpIHsgJG1hcmt1cCAuPSAnIGNsYXNz PSInLiRjbGFzcy4nIic7IH0KCQlpZiAoaXNzZXQoJGlkKSkgeyAkbWFya3VwIC49ICcgaWQ9 IicuJGlkLiciJzsgfQoKCQlpZiAoaXNzZXQoJHRpdGxlKSkgeyAkbWFya3VwIC49ICcgdGl0 bGU9IicuJHRpdGxlLiciJzsgfQoJCSRtYXJrdXAgLj0gJz4nLiR0ZXh0Lic8L2E+JzsKCQly ZXR1cm4gJG1hcmt1cDsKCX0KCgkvLyBBIHRhZyBmb3IgdGhlIHJlbFRhZyBtaWNyb2Zvcm1h dAoJLy8gZGVmYXVsdCBiZWhhdmlvciBpcyB0byBsaW5rIHRvIHRlY2hub3JhdGkKCS8vIDx0 eHA6cG5oX21mX3RhZz50ZWNoPC90eHA6cG5oX21mX3RhZz4KCS8vIDx0eHA6cG5oX21mX3Rh ZyBocmVmPSJodHRwOi8vZGVsLmljaW8udXMvdGFnL3RlY2giPnRlY2g8L3R4cDpwbmhfbWZf dGFnPgoJLy8gYWxzbyBhY2NlcHRzIHN0YW5kYXJkIDxhPiBhdHRyaWJ1dGVzOiBpZCwgY2xh c3MsIHRpdGxlCgoKCWZ1bmN0aW9uIHBuaF9tZl90YWcoJGF0dHMsJHRleHQ9JycpIHsKCQll eHRyYWN0KCRhdHRzKTsKCgkJLy8gaWYgdGhlcmUgd2FzIG5vIGV4cGxpY2l0IHVybCBnaXZl biwgdXNlIHRlY2hub3JhdGkKCQlpZiAoIWlzc2V0KCRocmVmKSkgewoJCQkkaHJlZiA9ICdo dHRwOi8vdGVjaG5vcmF0aS5jb20vdGFnLycuJHRleHQ7CgkJfQoKCQkvLyBUaGUgcmV0dXJu ZWQgdmFsdWUgd2lsbCByZXBsYWNlIHRoZSB0YWcgb24gdGhlIHBhZ2UKCQkkbWFya3VwID0g JzxhIGhyZWY9IicuJGhyZWYuJyInOwoJCSRtYXJrdXAgLj0gJyByZWw9InRhZyInOwoJCWlm IChpc3NldCgkaWQpKSB7ICRtYXJrdXAgLj0gJyBpZD0iJy4kaWQuJyInOyB9CgkJaWYgKGlz c2V0KCRjbGFzcykpIHsgJG1hcmt1cCAuPSAnIGNsYXNzPSInLiRjbGFzcy4nIic7IH0KCQlp ZiAoaXNzZXQoJHRpdGxlKSkgeyAkbWFya3VwIC49ICcgdGl0bGU9IicuJHRpdGxlLiciJzsg fQoJCSRtYXJrdXAgLj0gJz4nLiR0ZXh0Lic8L2E+JzsKCQlyZXR1cm4gJG1hcmt1cDsKCX0K CgkvLyBBIHRhZyBmb3IgdGhlIGdlbyBtaWNyb2Zvcm1hdAoJLy8gPHR4cDpwbmhfbWZfZ2Vv IGxhdD0iIiBsb25nPSIiIC8+CgoKCWZ1bmN0aW9uIHBuaF9tZl9nZW8oJGF0dHMpIHsKCQll eHRyYWN0KGxBdHRzKGFycmF5KAoJCQknbGF0JyAgPT4gJzAnLAoJCQknbG9uZycgID0+ICcw JywKCQkpLCRhdHRzKSk7CgoJCSRtYXJrdXAgPSAnPHNwYW4gY2xhc3M9ImdlbyI+JzsKCQkk bWFya3VwIC49ICc8c3BhbiBjbGFzcz0ibGF0aXR1ZGUiPicuJGxhdC4nPC9zcGFuPiAnOwoJ CSRtYXJrdXAgLj0gJzxzcGFuIGNsYXNzPSJsb25naXR1ZGUiPicuJGxvbmcuJzwvc3Bhbj4n OwoJCSRtYXJrdXAgLj0gJzwvc3Bhbj4nOwoKCQlyZXR1cm4gJG1hcmt1cDsKCX0KCgkvLyBB IHRhZyBmb3IgdGhlIGhDYWxlbmRhciBtaWNyb2Zvcm1hdAoJLy8gbWFya3VwIHRlbXBsYXRl IG9yaWdpbmFsbHkgdGFrZW4gZnJvbTogaHR0cDovL21pY3JvZm9ybWF0cy5vcmcvY29kZS9o Y2FsZW5kYXIvY3JlYXRvcgoJLy8gPHR4cDpwbmhfbWZfaGNhbGVuZGFyIHN1bW1hcnk9IiIg bG9jYXRpb249IiIgaHJlZj0iIiBzdGFydD0iIiBlbmQ9IiI+RGVzY3JpcHRpb248L3R4cDpw bmhfbWZfaGNhbGVuZGFyPgoKCWZ1bmN0aW9uIHBuaF9tZl9oY2FsZW5kYXIoJGF0dHMsJHRl eHQ9JycpIHsKCQlleHRyYWN0KCRhdHRzKTsKCgkJLy8gZm9ybWF0IGh1bWFuIHJlYWRhYmxl IGRhdGVzCgkJLy8kc3RhcnRfdGltZSA9IHN0cnRvdGltZSgkZHRzdGFydCk7CgkJLy8kZW5k X2VuZCA9IHN0cnRvdGltZSgkZHRzdGFydCk7CgoJCS8vIFRoZSByZXR1cm5lZCB2YWx1ZSB3 aWxsIHJlcGxhY2UgdGhlIHRhZyBvbiB0aGUgcGFnZQoKCQkkbWFya3VwID0gJzxkaXYgY2xh c3M9InZldmVudCI+JzsKCQlpZiAoaXNzZXQoJGhyZWYpKSB7ICRtYXJrdXAgLj0gJzxhIGNs YXNzPSJ1cmwiIGhyZWY9IicuJGhyZWYuJyI+JzsgfQoKCQlpZiAoaXNzZXQoJGR0c3RhcnQp KSB7CgkJCSRtYXJrdXAgLj0gJzxhYmJyIGNsYXNzPSJkdHN0YXJ0IiB0aXRsZT0iJy4kZHRz dGFydC4nIj4nOwoJCQlpZiAoaXNzZXQoJHN0YXJ0KSkgewoJCQkJJG1hcmt1cCAuPSAkc3Rh cnQ7CgkJCX0gZWxzZSB7CgkJCQlsaXN0KCRkLCR0KSA9IGV4cGxvZGUoIlQiLCRkdHN0YXJ0 KTsKCQkJCSRtYXJrdXAgLj0gZGF0ZSgnTS4gaiwgWScsc3RydG90aW1lKCRkKSkuJyAnLiR0 OwoJCQl9CgkJCSRtYXJrdXAgLj0gJzwvYWJicj4nOwoJCX0KCQlpZiAoaXNzZXQoJGR0ZW5k KSkgewoJCQkkbWFya3VwIC49ICcgLSA8YWJiciBjbGFzcz0iZHRlbmQiIHRpdGxlPSInLiRk dGVuZC4nIj4nOwoJCQlpZiAoaXNzZXQoJGVuZCkpIHsKCQkJCSRtYXJrdXAgLj0gJGVuZDsK CQkJfSBlbHNlIHsKCQkJCWxpc3QoJGQsJHQpID0gZXhwbG9kZSgiVCIsJGR0ZW5kKTsKCQkJ CWlmIChpc3NldCgkdCkpIHsKCQkJCQkkbWFya3VwIC49IGRhdGUoJ00uIGosIFknLHN0cnRv dGltZSgkZCkpLicgJy4kdDsKCQkJCX0gZWxzZSB7CgkJCQkJJG1hcmt1cCAuPSBkYXRlKCdN LiBqLCBZJywoc3RydG90aW1lKCRkKS04NjQwMCkpOwoJCQkJfQoJCQl9CgkJCSRtYXJrdXAg Lj0gJzwvYWJicj4nOyB9CgkJaWYgKGlzc2V0KCRzdW1tYXJ5KSkgeyAkbWFya3VwIC49ICcg LSA8c3BhbiBjbGFzcz0ic3VtbWFyeSI+Jy4kc3VtbWFyeS4nPC9zcGFuPic7IH0KCQlpZiAo aXNzZXQoJGxvY2F0aW9uKSkgeyAkbWFya3VwIC49ICcgLSA8c3BhbiBjbGFzcz0ibG9jYXRp b24iPicuJGxvY2F0aW9uLic8L3NwYW4+JzsgfQoJCWlmIChpc3NldCgkaHJlZikpIHsgJG1h cmt1cCAuPSAnPC9hPic7IH0KCgkJJG1hcmt1cCAuPSAnPGRpdiBjbGFzcz0iZGVzY3JpcHRp b24iPicuJHRleHQuJzwvZGl2Pic7CgoJCSRtYXJrdXAgLj0gJzwvZGl2Pic7CgkJcmV0dXJu ICRtYXJrdXA7Cgl9CgoKCS8vIEEgdGFnIGZvciB0aGUgcmVsTGljZW5zZSBtaWNyb2Zvcm1h dAoJLy8gPHR4cDpwbmhfbWZfbGljZW5zZSBocmVmPSJodHRwOi8vY3JlYXRpdmVjb21tb25z Lm9yZy9saWNlbnNlcy9ieS8yLjAvIj5jYyBieSAyLjA8L3R4cDpwbmhfbWZfbGljZW5zZT4K CS8vIGFsc28gYWNjZXB0cyBzdGFuZGFyZCA8YT4gYXR0cmlidXRlczogaWQsIGNsYXNzLCB0 aXRsZQoKCWZ1bmN0aW9uIHBuaF9tZl9saWNlbnNlKCRhdHRzLCR0ZXh0PScnKSB7CgkJZXh0 cmFjdChsQXR0cyhhcnJheSgKCQkJJ2hyZWYnICA9PiAnJywKCQkpLCRhdHRzKSk7CgoJCS8v IFRoZSByZXR1cm5lZCB2YWx1ZSB3aWxsIHJlcGxhY2UgdGhlIHRhZyBvbiB0aGUgcGFnZQoJ CSRtYXJrdXAgPSAnPGEgaHJlZj0iJy4kaHJlZi4nIic7CgkJJG1hcmt1cCAuPSAnIHJlbD0i bGljZW5zZSInOwoJCWlmIChpc3NldCgkaWQpKSB7ICRtYXJrdXAgLj0gJyBpZD0iJy4kaWQu JyInOyB9CgkJaWYgKGlzc2V0KCRjbGFzcykpIHsgJG1hcmt1cCAuPSAnIGNsYXNzPSInLiRj bGFzcy4nIic7IH0KCQlpZiAoaXNzZXQoJHRpdGxlKSkgeyAkbWFya3VwIC49ICcgdGl0bGU9 IicuJHRpdGxlLiciJzsgfQoJCSRtYXJrdXAgLj0gJz4nLiR0ZXh0Lic8L2E+JzsKCQlyZXR1 cm4gJG1hcmt1cDsKCX0KCgkvLyBBIHRhZyBmb3IgdGhlIGhjYXJkIG1pY3JvZm9ybWF0Cgkv LyBtYXJrdXAgdGVtcGxhdGUgb3JpZ2luYWxseSB0YWtlbiBmcm9tOiBodHRwOi8vdGFudGVr LmNvbS9taWNyb2Zvcm1hdHMvaGNhcmQtY3JlYXRvci5odG1sCgkvLyA8dHhwOnBuaF9tZl9o Y2FyZCBuYW1lPSIiIHN0cmVldGFkZHJlc3M9IiIgZXh0ZW5kZWRhZGRyZXNzPSIiIGxvY2Fs aXR5PSIiIHJlZ2lvbj0iIiBwb3N0YWxjb2RlPSIiIGNvdW50cnluYW1lPSIiIC8+TmFtZTwv dHhwOnBuaF9tZl9oY2FyZD4KCglmdW5jdGlvbiBwbmhfbWZfaGNhcmQoJGF0dHMsJHRleHQ9 JycpIHsKCQlleHRyYWN0KCRhdHRzKTsKCgoJCS8vIFRoZSByZXR1cm5lZCB2YWx1ZSB3aWxs IHJlcGxhY2UgdGhlIHRhZyBvbiB0aGUgcGFnZQoJCSRtYXJrdXAgPSAnPGRpdiBjbGFzcz0i dmNhcmQiPic7CgoJCWlmIChpc3NldCgkaW1naHJlZikpIHsgJG1hcmt1cCAuPSAnPGltZyBz cmM9IicuJGltZ2hyZWYuJyIgYWx0PSJwaG90byIgY2xhc3M9InBob3RvIiAvPic7IH0KCQlp ZiAoaXNzZXQoJGhyZWYpKSB7CgkJCSRtYXJrdXAgLj0gJzxhIGNsYXNzPSJ1cmwgZm4iIGhy ZWY9IicuJGhyZWYuJyI+Jy4kbmFtZS4nPC9hPic7CgkJfSBlbHNlIHsKCQkJJG1hcmt1cCAu PSAnPHNwYW4gY2xhc3M9ImZuIj4nLiRuYW1lLic8L3NwYW4+JzsKCQl9CgoJCWlmIChpc3Nl dCgkb3JnKSkgewoJCQlpZiAoaXNzZXQoJG9yZ2hyZWYpKSB7CgkJCQkkbWFya3VwIC49ICc8 ZGl2PjxhIGhyZWY9IicuJG9yZ2hyZWYuJyIgY2xhc3M9Im9yZyI+Jy4kb3JnLic8L2E+PC9k aXY+JzsKCQkJfSBlbHNlIHsKCQkJCSRtYXJrdXAgLj0gJzxkaXYgY2xhc3M9Im9yZyI+Jy4k b3JnLic8L2Rpdj4nOwoJCQl9CgkJfQoKCgoJCS8vIHdvcmt0ZWwKCQlpZiAoaXNzZXQoJHdv cmt0ZWwpKSB7ICRtYXJrdXAgLj0gJzxkaXYgY2xhc3M9InRlbCI+PHNwYW4gY2xhc3M9InR5 cGUiPldvcms8L3NwYW4+OiA8c3BhbiBjbGFzcz0idmFsdWUiPicuJHdvcmt0ZWwuJzwvc3Bh bj48L2Rpdj4nOyB9CgkJLy8gaG9tZXRlbAoJCWlmIChpc3NldCgkaG9tZXRlbCkpIHsgJG1h cmt1cCAuPSAnPGRpdiBjbGFzcz0idGVsIj48c3BhbiBjbGFzcz0idHlwZSI+SG9tZTwvc3Bh bj46IDxzcGFuIGNsYXNzPSJ2YWx1ZSI+Jy4kaG9tZXRlbC4nPC9zcGFuPjwvZGl2Pic7IH0K CQkvLyBjZWxsdGVsCgkJaWYgKGlzc2V0KCRjZWxsdGVsKSkgeyAkbWFya3VwIC49ICc8ZGl2 IGNsYXNzPSJ0ZWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5DZWxsPC9zcGFuPjogPHNwYW4gY2xh c3M9InZhbHVlIj4nLiRjZWxsdGVsLic8L3NwYW4+PC9kaXY+JzsgfQoJCS8vIHdvcmtmYXgK CQlpZiAoaXNzZXQoJHdvcmtmYXgpKSB7ICRtYXJrdXAgLj0gJzxkaXYgY2xhc3M9InRlbCI+ PHNwYW4gY2xhc3M9InR5cGUiPkZheDwvc3Bhbj46IDxzcGFuIGNsYXNzPSJ2YWx1ZSI+Jy4k d29ya2ZheC4nPC9zcGFuPjwvZGl2Pic7IH0KCQkvLyBpbSAtIG5lZWQgdXJsLCBzZXJ2aWNl ICYgc2NyZWVuIG5hbWU/CgkJLy8gZW1haWwKCQlpZiAoaXNzZXQoJGVtYWlsKSkgeyAkbWFy a3VwIC49ICc8ZGl2PjxhIGNsYXNzPSJlbWFpbCIgaHJlZj0ibWFpbHRvOicuJGVtYWlsLici PicuJGVtYWlsLic8L2E+PC9kaXY+JzsgfQoKCQkkbWFya3VwIC49ICR0ZXh0OyAvLyBhbnkg YWRkcmVzc2VzCgoJCSRtYXJrdXAgLj0gJzwvZGl2Pic7CgkJcmV0dXJuICRtYXJrdXA7Cgl9 CgoKCS8vIEEgdGFnIGZvciB0aGUgYWRyIG1pY3JvZm9ybWF0CgkvLyBjYXV0aW9uOiB0aGlz IG1pY3JvZm9ybWF0IGlzIHN0aWxsIGluIGRyYWZ0IG1vZGUKCS8vIDx0eHA6cG5oX21mX2Fk ciBzdHJlZXRhZGRyZXNzPSIiIGV4dGVuZGVkYWRkcmVzcz0iIiBsb2NhbGl0eT0iIiByZWdp b249IiIgcG9zdGFsY29kZT0iIiBjb3VudHJ5bmFtZT0iIiAvPgoKCWZ1bmN0aW9uIHBuaF9t Zl9hZHIoJGF0dHMpIHsKCQlleHRyYWN0KCRhdHRzKTsKCgoKCQkvLyBUaGUgcmV0dXJuZWQg dmFsdWUgd2lsbCByZXBsYWNlIHRoZSB0YWcgb24gdGhlIHBhZ2UKCQkkbWFya3VwID0gJzxk aXYgY2xhc3M9ImFkciI+JzsKCgkJaWYgKGlzc2V0KCR0eXBlKSkgeyAkbWFya3VwIC49ICc8 ZGl2PjxzcGFuIGNsYXNzPSJ0eXBlIj4nLiR0eXBlLic8L3NwYW4+IEFkZHJlc3M8L2Rpdj4n OyB9CgkJaWYgKGlzc2V0KCRwb3N0b2ZmaWNlYm94KSkgeyAkbWFya3VwIC49ICc8ZGl2IGNs YXNzPSJwb3N0LW9mZmljZS1ib3giPicuJHBvc3RvZmZpY2Vib3guJzwvZGl2Pic7IH0KCQlp ZiAoaXNzZXQoJHN0cmVldGFkZHJlc3MpKSB7ICRtYXJrdXAgLj0gJzxkaXYgY2xhc3M9InN0 cmVldC1hZGRyZXNzIj4nLiRzdHJlZXRhZGRyZXNzLic8L2Rpdj4nOyB9CgkJaWYgKGlzc2V0 KCRleHRlbmRlZGFkZHJlc3MpKSB7ICRtYXJrdXAgLj0gJzxkaXYgY2xhc3M9ImV4dGVuZGVk LWFkZHJlc3MiPicuJGV4dGVuZGVkYWRkcmVzcy4nPC9kaXY+JzsgfQoJCWlmIChpc3NldCgk bG9jYWxpdHkpKSB7ICRtYXJrdXAgLj0gJzxzcGFuIGNsYXNzPSJsb2NhbGl0eSI+Jy4kbG9j YWxpdHkuJzwvc3Bhbj4sICc7IH0KCQlpZiAoaXNzZXQoJHJlZ2lvbikpIHsgJG1hcmt1cCAu PSAnPHNwYW4gY2xhc3M9InJlZ2lvbiI+Jy4kcmVnaW9uLic8L3NwYW4+JzsgfQoJCWlmIChp c3NldCgkcG9zdGFsY29kZSkpIHsgJG1hcmt1cCAuPSAnIDxzcGFuIGNsYXNzPSJwb3N0YWwt Y29kZSI+Jy4kcG9zdGFsY29kZS4nPC9zcGFuPic7IH0KCQlpZiAoaXNzZXQoJGNvdW50cnlu YW1lKSkgeyAkbWFya3VwIC49ICc8ZGl2IGNsYXNzPSJjb3VudHJ5LW5hbWUiPicuJGNvdW50 cnluYW1lLic8L2Rpdj4nOyB9CgoJCSRtYXJrdXAgLj0gJzwvZGl2Pic7CgkJcmV0dXJuICRt YXJrdXA7Cgl9CgoKIjtzOjM6Im1kNSI7czozMjoiOWM1MGFkYjk4MDZhZmZmZTgwMjkwYmE1 OTBjNDE3N2QiO30=