# upm_date_archive v.0.2.5 # Simple, clean and efficient date archive listings. # Mary Fredborg # http://utterplush.com/txp-plugins/upm-date-archive # .......................................................................... # A plugin for Textpattern # http://textpattern.com/ # # Adding Plugins to Your Textpattern Installation # http://textpattern.net/wiki/index.php?title=Intermediate_Weblog_Model#Adding_Plugins_to_Your_Textpattern_Installation # .......................................................................... YToxMTp7czo0OiJuYW1lIjtzOjE2OiJ1cG1fZGF0ZV9hcmNoaXZlIjtzOjExOiJkZXNjcmlw dGlvbiI7czo1MDoiU2ltcGxlLCBjbGVhbiBhbmQgZWZmaWNpZW50IGRhdGUgYXJjaGl2ZSBs aXN0aW5ncy4iO3M6NzoidmVyc2lvbiI7czo1OiIwLjIuNSI7czo0OiJ0eXBlIjtpOjE7czo2 OiJhdXRob3IiO3M6MTM6Ik1hcnkgRnJlZGJvcmciO3M6MTA6ImF1dGhvcl91cmkiO3M6NTA6 Imh0dHA6Ly91dHRlcnBsdXNoLmNvbS90eHAtcGx1Z2lucy91cG0tZGF0ZS1hcmNoaXZlIjtz OjQ6ImNvZGUiO3M6MTgzOTE6InVwbV9kYXRlX2FyY2hpdmVfaW5zdGFsbCgpOwoKCWlmICh0 eHBpbnRlcmZhY2UgPT0gJ2FkbWluJykKCXsKCQlhZGRfcHJpdnMoJ3VwbV9kYXRlX2FyY2hp dmUnLCAnMSwyLDMsNicpOwoJCXJlZ2lzdGVyX3RhYignZXh0ZW5zaW9ucycsICd1cG1fZGF0 ZV9hcmNoaXZlJywgJ3VwbV9kYXRlX2FyY2hpdmUnKTsKCQlyZWdpc3Rlcl9jYWxsYmFjaygn dXBtX2RhdGVfYXJjaGl2ZV9wcmVmcycsICd1cG1fZGF0ZV9hcmNoaXZlJyk7Cgl9CgoJZWxz ZQoJewoJCWlmICgkR0xPQkFMU1sncGVybWxpbmtfbW9kZSddICE9ICdtZXNzeScpCgkJewoJ CQlyZWdpc3Rlcl9jYWxsYmFjaygndXBtX2RhdGVfYXJjaGl2ZV9sb2FkJywgJ3RleHRwYXR0 ZXJuJyk7CgkJfQoJfQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCWZ1bmN0aW9uIHVwbV9kYXRlX21lbnUoJGF0 dHMpCgl7CgkJZ2xvYmFsICRwcmVmcywgJHByZXRleHQ7CgoJCWV4dHJhY3QobEF0dHMoYXJy YXkoCgkJCSdjYXRlZ29yeScJCQkJCQk9PiAnJywKCQkJJ2NsYXNzJwkJCQkJCQkJPT4gJycs CgkJCSdleGNsdWRlX2NhdGVnb3J5JwkJPT4gJycsCgkJCSdleGNsdWRlX3NlY3Rpb24nCQkJ PT4gJycsCgkJCSdpZCcJCQkJCQkJCQk9PiAnJywKCQkJJ2luY2x1ZGVfZXhwaXJlZCcgICAg ID0+ICgkcHJlZnNbJ3B1Ymxpc2hfZXhwaXJlZF9hcnRpY2xlcyddID8gJ3llcycgOiAnbm8n KSwKCQkJJ2luc2VydF9lbXB0eV9tb250aHMnID0+ICd5ZXMnLAoJCQknbGlua190bycJCQkJ CQkJPT4gJycsCgkJCSdtb250aF9mb3JtYXQnCQkJCT0+ICclYicsCgkJCSdyZW1haW5fbGlu a2VkJwkJCQk9PiAneWVzJywKCQkJJ3NlY3Rpb24nCQkJCQkJCT0+ICRwcmV0ZXh0WydzJ10s CgkJCSdzaG93X2FydGljbGVfY291bnQnICA9PiAnbm8nLAoJCQknc29ydCcJCQkJCQkJCT0+ ICd0aGVfeWVhciBkZXNjLCB0aGVfbW9udGggYXNjJywKCQkJJ3RpbWUnCQkJCQkJCQk9PiAn cGFzdCcsCgkJCSd5ZWFyX2Zvcm1hdCcJCQkJCT0+ICclWScKCQkpLCAkYXR0cykpOwoKCQkv LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkJLy8gcHJlcGFyZSBxdWVyeQoKCQkk b2Zmc2V0ID0gdHpfb2Zmc2V0KCk7CgoJCWlmICgkc2hvd19hcnRpY2xlX2NvdW50ID09ICd5 ZXMnKQoJCXsKCQkJJGNvdW50X3NxbCA9ICIsY291bnQoaWQpIGFzIG51bSI7CgkJfQoKCQll bHNlCgkJewoJCQkkY291bnRfc3FsID0gJyc7CgkJfQoKCQlzd2l0Y2ggKCR0aW1lKQoJCXsK CQkJY2FzZSAnYW55JzoKCQkJCSR0aW1lID0gJyc7CgkJCWJyZWFrOwoKCQkJY2FzZSAnZnV0 dXJlJzoKCQkJCSR0aW1lID0gImFuZCBQb3N0ZWQgPiBub3coKSI7CgkJCWJyZWFrOwoKCQkJ ZGVmYXVsdDoKCQkJCSR0aW1lID0gImFuZCBQb3N0ZWQgPD0gbm93KCkiOwoJCQlicmVhazsK CQl9CgoJCWlmICgkaW5jbHVkZV9leHBpcmVkID09ICdubycpCgkJewoJCQkkdGltZSAuPSAi IGFuZCAobm93KCkgPD0gRXhwaXJlcyBvciBFeHBpcmVzID0gIi5OVUxMREFURVRJTUUuIiki OwoJCX0KCgkJbGlzdCgkc2VjdGlvbl9zcWwsICRjYXRlZ29yeV9zcWwpID0gdXBtX2RhdGVf YXJjaGl2ZV9xdWVyeV9idWlsZCgkc2VjdGlvbiwgJGV4Y2x1ZGVfc2VjdGlvbiwgJGNhdGVn b3J5LCAkZXhjbHVkZV9jYXRlZ29yeSk7CgoJCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KCgkJJHJzID0gc2FmZV9yb3dzX3N0YXJ0KCJ1bml4X3RpbWVzdGFtcChkYXRlX2Fk ZChQb3N0ZWQsIGludGVydmFsICckb2Zmc2V0JyBzZWNvbmQpKSBhcyB0aGVfZGF0ZSwKCQkJ ZGF0ZV9mb3JtYXQoZGF0ZV9hZGQoUG9zdGVkLCBpbnRlcnZhbCAnJG9mZnNldCcgc2Vjb25k KSwgJyVtJykgYXMgdGhlX21vbnRoLAoJCQlkYXRlX2Zvcm1hdChkYXRlX2FkZChQb3N0ZWQs IGludGVydmFsICckb2Zmc2V0JyBzZWNvbmQpLCAnJVknKSBhcyB0aGVfeWVhcgoJCQkkY291 bnRfc3FsIiwKCQkJJ3RleHRwYXR0ZXJuJywKCQkJIlN0YXR1cyA9IDQKCQkJJHRpbWUKCQkJ JHNlY3Rpb25fc3FsICRjYXRlZ29yeV9zcWwKCQkJZ3JvdXAgYnkgZGF0ZV9mb3JtYXQoZGF0 ZV9hZGQoUG9zdGVkLCBpbnRlcnZhbCAnJG9mZnNldCcgc2Vjb25kKSwgJyVZLSVtJykKCQkJ b3JkZXIgYnkgIi5kb1NsYXNoKCRzb3J0KSk7CgoJCWlmICgkcnMpCgkJewoJCQkkYXZhaWxh YmxlX21vbnRocyA9IGFycmF5KAoJCQkJMSA9PiAnSmFuIDAxJywKCQkJCTIgPT4gJ0ZlYiAw MScsCgkJCQkzID0+ICdNYXIgMDEnLAoJCQkJNCA9PiAnQXByIDAxJywKCQkJCTUgPT4gJ01h eSAwMScsCgkJCQk2ID0+ICdKdW4gMDEnLAoJCQkJNyA9PiAnSnVsIDAxJywKCQkJCTggPT4g J0F1ZyAwMScsCgkJCQk5ID0+ICdTZXAgMDEnLAoJCQkJMTAgPT4gJ09jdCAwMScsCgkJCQkx MSA9PiAnTm92IDAxJywKCQkJCTEyID0+ICdEZWMgMDEnCgkJCSk7CgoJCQkkd29ya2luZ19t b250aCA9ICcnOwoJCQkkd29ya2luZ195ZWFyID0gJyc7CgoJCQkkb3V0ID0gYXJyYXkoKTsK CgkJCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgkJCXdoaWxlICgkcm93ID0g bmV4dFJvdygkcnMpKQoJCQl7CgkJCQlleHRyYWN0KCRyb3cpOwoKCQkJCSR0aGVfbW9udGgg PSBpbnR2YWwobHRyaW0oJHRoZV9tb250aCwgJzAnKSk7CgoJCQkJaWYgKCR0aGVfeWVhciAh PSAkd29ya2luZ195ZWFyKQoJCQkJewoJCQkJCWlmICgkaW5zZXJ0X2VtcHR5X21vbnRocyA9 PSAneWVzJyBhbmQgIWVtcHR5KCR3b3JraW5nX21vbnRoKSBhbmQgIWVtcHR5KCR3b3JraW5n X3llYXIpKQoJCQkJCXsKCQkJCQkJZm9yICgkaSA9ICR3b3JraW5nX21vbnRoICsgMTsgJGkg PD0gMTI7ICRpKyspCgkJCQkJCXsKCQkJCQkJCSRvdXRbXSA9IG4udC4nPGRkPicuc3RyZnRp bWUoJG1vbnRoX2Zvcm1hdCwgc3RydG90aW1lKCRhdmFpbGFibGVfbW9udGhzWyRpXS4nICcu JHRoZV95ZWFyKSkuJzwvZGQ+JzsKCQkJCQkJfQoJCQkJCX0KCgkJCQkJJG91dFtdID0gbi4n PGR0Picuc3RyZnRpbWUoJHllYXJfZm9ybWF0LCAkdGhlX2RhdGUpLic8L2R0Pic7CgoJCQkJ CWlmICgkaW5zZXJ0X2VtcHR5X21vbnRocyA9PSAneWVzJyBhbmQgIWVtcHR5KCR3b3JraW5n X21vbnRoKSBhbmQgJHRoZV9tb250aCAhPSAxKQoJCQkJCXsKCQkJCQkJZm9yICgkaSA9IDE7 ICRpIDwgJHRoZV9tb250aDsgJGkrKykKCQkJCQkJewoJCQkJCQkJJG91dFtdID0gbi50Lic8 ZGQ+Jy5zdHJmdGltZSgkbW9udGhfZm9ybWF0LCBzdHJ0b3RpbWUoJGF2YWlsYWJsZV9tb250 aHNbJGldLicgJy4kdGhlX3llYXIpKS4nPC9kZD4nOwoJCQkJCQl9CgkJCQkJfQoKCQkJCQkk d29ya2luZ195ZWFyID0gJHRoZV95ZWFyOwoJCQkJfQoKCQkJCWlmICgkaW5zZXJ0X2VtcHR5 X21vbnRocyA9PSAneWVzJykKCQkJCXsKCQkJCQlpZiAoZW1wdHkoJHdvcmtpbmdfbW9udGgp KQoJCQkJCXsKCQkJCQkJZm9yICgkaSA9IDE7ICRpIDwgJHRoZV9tb250aDsgJGkrKykKCQkJ CQkJewoJCQkJCQkJJG91dFtdID0gbi50Lic8ZGQ+Jy5zdHJmdGltZSgkbW9udGhfZm9ybWF0 LCBzdHJ0b3RpbWUoJGF2YWlsYWJsZV9tb250aHNbJGldLicgJy4kdGhlX3llYXIpKS4nPC9k ZD4nOwoJCQkJCQl9CgkJCQkJfQoKCQkJCQllbHNlaWYgKCR3b3JraW5nX21vbnRoICsgMSAh PSAkdGhlX21vbnRoKQoJCQkJCXsKCQkJCQkJZm9yICgkaSA9ICR3b3JraW5nX21vbnRoICsg MTsgJGkgPCAkdGhlX21vbnRoOyAkaSsrKQoJCQkJCQl7CgkJCQkJCQkkb3V0W10gPSBuLnQu JzxkZD4nLnN0cmZ0aW1lKCRtb250aF9mb3JtYXQsIHN0cnRvdGltZSgkYXZhaWxhYmxlX21v bnRoc1skaV0uJyAnLiR0aGVfeWVhcikpLic8L2RkPic7CgkJCQkJCX0KCQkJCQl9CgkJCQl9 CgoJCQkJJHdoYXQgPSBzdHJmdGltZSgkbW9udGhfZm9ybWF0LCAkdGhlX2RhdGUpOwoKCQkJ CWlmICgkcmVtYWluX2xpbmtlZCA9PSAneWVzJykKCQkJCXsKCQkJCQlpZiAoJGxpbmtfdG8g PT0gZmFsc2UpCgkJCQkJewoJCQkJCQkkbGlua190byA9ICRwcmV0ZXh0WydzJ107CgkJCQkJ fQoKCQkJCQlpZiAoJGxpbmtfdG8gPT0gJ2RlZmF1bHQnKQoJCQkJCXsKCQkJCQkJJHVybCA9 ICc/bW9udGg9JzsKCQkJCQl9CgoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCWlmICgkcHJlZnNb J3Blcm1saW5rX21vZGUnXSA9PSAnbWVzc3knKQoJCQkJCQl7CgkJCQkJCQkkdXJsID0gJz9z PScuJGxpbmtfdG8uYS4nbW9udGg9JzsKCQkJCQkJfQoKCQkJCQkJZWxzZQoJCQkJCQl7CgkJ CQkJCQkkdXJsID0gaHUuJGxpbmtfdG8uJy8nOwoJCQkJCQl9CgkJCQkJfQoKCQkJCQkkd2hh dCA9ICc8YSBocmVmPSInLiR1cmwuc3RyZnRpbWUoJyVZLSVtJywgJHRoZV9kYXRlKS4nIj4n LiR3aGF0Lic8L2E+JzsKCQkJCX0KCgkJCQlpZiAoc3RyZnRpbWUoJyVZLSVtJywgJHRoZV9k YXRlKSA9PSAkcHJldGV4dFsnbW9udGgnXSkKCQkJCXsKCQkJCQkkb3V0W10gPSBuLnQuJzxk ZCBjbGFzcz0iYWN0aXZlIj4nLiR3aGF0Ligkc2hvd19hcnRpY2xlX2NvdW50ID09ICd5ZXMn ID8gIiAoJG51bSkiIDogJycpLic8L2RkPic7CgkJCQl9CgoJCQkJZWxzZQoJCQkJewoJCQkJ CSRvdXRbXSA9IG4udC4nPGRkPicuJHdoYXQuKCRzaG93X2FydGljbGVfY291bnQgPT0gJ3ll cycgPyAiICgkbnVtKSIgOiAnJykuJzwvZGQ+JzsKCQkJCX0KCgkJCQkkd29ya2luZ19tb250 aCA9ICR0aGVfbW9udGg7CgkJCX0KCgkJCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KCgkJCWlmICgkb3V0KQoJCQl7CgkJCQlpZiAoJGluc2VydF9lbXB0eV9tb250aHMgPT0g J3llcycgYW5kICR3b3JraW5nX21vbnRoIDwgMTIpCgkJCQl7CgkJCQkJZm9yICgkaSA9ICR3 b3JraW5nX21vbnRoICsgMTsgJGkgPD0gMTI7ICRpKyspCgkJCQkJewoJCQkJCQkkb3V0W10g PSBuLnQuJzxkZD4nLnN0cmZ0aW1lKCRtb250aF9mb3JtYXQsIHN0cnRvdGltZSgkYXZhaWxh YmxlX21vbnRoc1skaV0uJyAnLiR0aGVfeWVhcikpLic8L2RkPic7CgkJCQkJfQoJCQkJfQoK CQkJCSRvdXQgPSBqb2luKCcnLCAkb3V0KTsKCgkJCQlyZXR1cm4gZG9UYWcoJG91dCwgJ2Rs JywgJGNsYXNzLCAnJywgJGlkKTsKCQkJfQoJCX0KCgkJcmV0dXJuOwoJfQoKLy8gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQoKCWZ1bmN0aW9uIHVwbV9kYXRlX2FyY2hpdmUoJGF0dHMsICR0aGluZyA9IG51bGwpCgl7 CgkJLy8gc2luY2UgZ0F0dCBpcyBkZXByZWNhdGVkLi4uCgkJJG1vZGUgPSBpc3NldCgkYXR0 c1snbW9kZSddKSA/ICRhdHRzWydtb2RlJ10gOiAnc21hcnQnOwoKCQkvLyBwcmV2ZW50IGxB dHRzIGVycm9ycyBsYXRlciBvbgoJCXVuc2V0KCRhdHRzWydtb2RlJ10pOwoKCQlzd2l0Y2gg KCRtb2RlKQoJCXsKCQkJY2FzZSAnZnVsbCc6CgkJCQlyZXR1cm4gdXBtX2RhdGVfYXJjaGl2 ZV9mdWxsKCRhdHRzLCAkdGhpbmcpOwoJCQlicmVhazsKCgkJCWNhc2UgJ3NtYXJ0JzoKCQkJ ZGVmYXVsdDoKCQkJCXJldHVybiB1cG1fZGF0ZV9hcmNoaXZlX3NtYXJ0KCRhdHRzLCAkdGhp bmcpOwoJCQlicmVhazsKCQl9Cgl9CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJZnVuY3Rpb24gdXBtX2RhdGVf YXJjaGl2ZV9zbWFydCgkYXR0cywgJHRoaW5nKQoJewoJCWdsb2JhbCAkcHJlZnMsICRwcmV0 ZXh0OwoKCQlpZiAoJHByZXRleHRbJ21vbnRoJ10pCgkJewoJCQkkbW9udGggPSAkcHJldGV4 dFsnbW9udGgnXTsKCQl9CgoJCWVsc2UKCQl7CgkJCXJldHVybjsKCQl9CgoJCS8vIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgkJZXh0cmFjdChsQXR0cyhhcnJheSgKCQkJJ2Nh dGVnb3J5JwkJCQkgPT4gJycsCgkJCSdkYXRlX2Zvcm1hdCcJCQkgPT4gKGlzX251bWVyaWMo c3RyZnRpbWUoJyVlJykpID8gJyVlJyA6ICclZCcpLAoJCQknZXhjbHVkZV9jYXRlZ29yeScg PT4gJycsCgkJCSdleGNsdWRlX3NlY3Rpb24nCSA9PiAnJywKCQkJJ2Zvcm0nCQkJCQkJID0+ ICcnLAoJCQknaGVhZGluZ19jbGFzcycJCSA9PiAnJywKCQkJJ2hlYWRpbmdfZm9ybWF0Jwkg PT4gJyVCICVZJywKCQkJJ2hlYWRpbmdfaWQnCQkJID0+ICcnLAoJCQknaGVhZGluZ19sZXZl bCcJCSA9PiAnMScsCgkJCSdpbmNsdWRlX2RhdGUnCQkgPT4gJ3llcycsCgkJCSdpbmNsdWRl X2V4cGlyZWQnICA9PiAoJHByZWZzWydwdWJsaXNoX2V4cGlyZWRfYXJ0aWNsZXMnXSA/ICd5 ZXMnIDogJ25vJyksCgkJCSdsaXN0X2NsYXNzJwkJCSA9PiAnJywKCQkJJ2xpc3RfaWQnCQkJ CQkgPT4gJycsCgkJCSdub25lX2ZvdW5kJwkJCSA9PiAnJywKCQkJJ3NlY3Rpb24nCQkJCQkg PT4gJHByZXRleHRbJ3MnXSwKCQkJJ3NvcnQnCQkJCQkJID0+ICd0aGVfZGF0ZSBhc2MnLAoJ CQkndGltZScJCQkJCQkgPT4gJ3Bhc3QnCgkJKSwgJGF0dHMpKTsKCgkJLy8gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQoJCS8vIHByZXBhcmUgcXVlcnkKCgkJJG9mZnNldCA9IHR6 X29mZnNldCgpOwoKCQlzd2l0Y2ggKCR0aW1lKQoJCXsKCQkJY2FzZSAnYW55JzoKCQkJCSR0 aW1lID0gJyc7CgkJCWJyZWFrOwoKCQkJY2FzZSAnZnV0dXJlJzoKCQkJCSR0aW1lID0gIiBh bmQgUG9zdGVkID4gbm93KCkiOwoJCQlicmVhazsKCgkJCWNhc2UgJ3Bhc3QnOgoJCQlkZWZh dWx0OgoJCQkJJHRpbWUgPSAiIGFuZCBQb3N0ZWQgPD0gbm93KCkiOwoJCQlicmVhazsKCQl9 CgoJCWlmICgkaW5jbHVkZV9leHBpcmVkID09ICdubycpCgkJewoJCQkkdGltZSAuPSAiIGFu ZCAobm93KCkgPD0gRXhwaXJlcyBvciBFeHBpcmVzID0gIi5OVUxMREFURVRJTUUuIikiOwoJ CX0KCgkJbGlzdCgkc2VjdGlvbl9zcWwsICRjYXRlZ29yeV9zcWwpID0gdXBtX2RhdGVfYXJj aGl2ZV9xdWVyeV9idWlsZCgkc2VjdGlvbiwgJGV4Y2x1ZGVfc2VjdGlvbiwgJGNhdGVnb3J5 LCAkZXhjbHVkZV9jYXRlZ29yeSk7CgoJCWxpc3QoJHllYXIsICRtb250aCkgPSBleHBsb2Rl KCctJywgJG1vbnRoKTsKCgkJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCQkk cnMgPSBzYWZlX3Jvd3Nfc3RhcnQoIiosIHVuaXhfdGltZXN0YW1wKFBvc3RlZCkgYXMgdVBv c3RlZCwgdW5peF90aW1lc3RhbXAoRXhwaXJlcykgYXMgdUV4cGlyZXMsIHVuaXhfdGltZXN0 YW1wKExhc3RNb2QpIGFzIHVMYXN0TW9kLAoJCQl1bml4X3RpbWVzdGFtcChkYXRlX2FkZChQ b3N0ZWQsIGludGVydmFsICckb2Zmc2V0JyBzZWNvbmQpKSBhcyB0aGVfZGF0ZSwKCQkJZGF0 ZV9mb3JtYXQoZGF0ZV9hZGQoUG9zdGVkLCBpbnRlcnZhbCAnJG9mZnNldCcgc2Vjb25kKSwg JyVkJykgYXMgdGhlX2RheSwKCQkJZGF0ZV9mb3JtYXQoZGF0ZV9hZGQoUG9zdGVkLCBpbnRl cnZhbCAnJG9mZnNldCcgc2Vjb25kKSwgJyVtJykgYXMgdGhlX21vbnRoLAoJCQlkYXRlX2Zv cm1hdChkYXRlX2FkZChQb3N0ZWQsIGludGVydmFsICckb2Zmc2V0JyBzZWNvbmQpLCAnJVkn KSBhcyB0aGVfeWVhciIsCgkJCSd0ZXh0cGF0dGVybicsCgkJCSJTdGF0dXMgPSA0CgkJCSR0 aW1lCgkJCSRzZWN0aW9uX3NxbCAkY2F0ZWdvcnlfc3FsIGFuZAoJCQlkYXRlX2Zvcm1hdChk YXRlX2FkZChQb3N0ZWQsIGludGVydmFsICckb2Zmc2V0JyBzZWNvbmQpLCAnJVknKSA9ICci LmRvU2xhc2goJHllYXIpLiInIGFuZAoJCQlkYXRlX2Zvcm1hdChkYXRlX2FkZChQb3N0ZWQs IGludGVydmFsICckb2Zmc2V0JyBzZWNvbmQpLCAnJW0nKSA9ICciLmRvU2xhc2goJG1vbnRo KS4iJwoJCQlvcmRlciBieSAiLmRvU2xhc2goJHNvcnQpKTsKCgkJaWYgKCEkcnMpCgkJewoJ CQlyZXR1cm47CgkJfQoKCQkkcG9zdF9jb3VudCA9IG51bVJvd3MoJHJzKTsKCgkJaWYgKCEk cG9zdF9jb3VudCkKCQl7CgkJCXJldHVybiBuLmdyYWYodXBtX2RhdGVfYXJjaGl2ZV9nVHh0 KCdub19tb250aF9hcmNoaXZlJykpOwoJCX0KCgkJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQoJCS8vIGRpc3BsYXkgcmVzdWx0cwoKCQkkaGVhZGluZ19pZCA9ICgkaGVhZGlu Z19pZCkgPyAnIGlkPSInLiRoZWFkaW5nX2lkLiciJyA6ICcnOwoJCSRoZWFkaW5nX2NsYXNz ID0gKCRoZWFkaW5nX2NsYXNzKSA/ICcgY2xhc3M9IicuJGhlYWRpbmdfY2xhc3MuJyInIDog Jyc7CgoJCSRsaXN0X3R5cGUgPSAoJGluY2x1ZGVfZGF0ZSA9PSAneWVzJykgPyAnZGwnIDog J3VsJzsKCQkkbGlzdF9pZCA9ICgkbGlzdF9pZCkgPyAnIGlkPSInLiRsaXN0X2lkLiciJyA6 ICcnOwoJCSRsaXN0X2NsYXNzID0gKCRsaXN0X2NsYXNzKSA/ICcgY2xhc3M9IicuJGxpc3Rf Y2xhc3MuJyInIDogJyc7CgoJCWlmICgkZm9ybSkKCQl7CgkJCSR3aGF0ID0gZmV0Y2hfZm9y bSgkZm9ybSk7CgkJfQoKCQllbHNlaWYgKCR0aGluZykKCQl7CgkJCSR3aGF0ID0gJHRoaW5n OwoJCX0KCgkJJGkgPSAwOwoKCQkkY3VycmVudF9kYXkgPSAnJzsKCgkJd2hpbGUgKCRyb3cg PSBuZXh0Um93KCRycykpCgkJewoJCQlleHRyYWN0KCRyb3cpOwoKCQkJaWYgKCRpbmNsdWRl X2RhdGUgPT0gJ3llcycgJiYgJHRoZV9kYXkgIT0gJGN1cnJlbnRfZGF5KQoJCQl7CgkJCQkk b3V0W10gPSBuLic8ZHQ+Jy5zdHJmdGltZSgkZGF0ZV9mb3JtYXQsICR0aGVfZGF0ZSkuJzwv ZHQ+JzsKCgkJCQkkY3VycmVudF9kYXkgPSAkdGhlX2RheTsKCQkJfQoKCQkJaWYgKCRmb3Jt IG9yICR0aGluZykKCQkJewoJCQkJKyskaTsKCgkJCQkkcm93Wyd1UG9zdGVkJ10gPSAkdGhl X2RhdGU7CgoJCQkJcG9wdWxhdGVBcnRpY2xlRGF0YSgkcm93KTsKCgkJCQkkR0xPQkFMU1sn dGhpc2FydGljbGUnXVsnaXNfZmlyc3QnXSA9ICgkaSA9PSAxKTsKCQkJCSRHTE9CQUxTWyd0 aGlzYXJ0aWNsZSddWydpc19sYXN0J10gPSAoJGkgPT0gJHBvc3RfY291bnQpOwoKCQkJCSRj b250ZW50cyA9IHBhcnNlKCR3aGF0KTsKCgkJCQl1bnNldCgkR0xPQkFMU1sndGhpc2FydGlj bGUnXSk7CgkJCX0KCgkJCWVsc2UKCQkJewoJCQkJJGNvbnRlbnRzID0gJzxhIHJlbD0iYm9v a21hcmsiIGhyZWY9IicucGVybWxpbmt1cmxfaWQoJElEKS4nIj4nLiRUaXRsZS4nPC9hPic7 CgkJCX0KCgkJCSRvdXRbXSA9ICgkaW5jbHVkZV9kYXRlID09ICd5ZXMnKSA/CgkJCQknPGRk PicuJGNvbnRlbnRzLic8L2RkPicgOgoJCQkJJzxsaT4nLiRjb250ZW50cy4nPC9saT4nOwoJ CX0KCgkJcmV0dXJuIG4udGFnKHN0cmZ0aW1lKCRoZWFkaW5nX2Zvcm1hdCwgJHRoZV9kYXRl KSwgJ2gnLiRoZWFkaW5nX2xldmVsLCAkaGVhZGluZ19pZC4kaGVhZGluZ19jbGFzcykuCgkJ CW4ubi4nPCcuJGxpc3RfdHlwZS4kbGlzdF9pZC4kbGlzdF9jbGFzcy4nPicuCgkJCW4udC5q b2luKG4udCwgJG91dCkuCgkJCW4uJzwvJy4kbGlzdF90eXBlLic+JzsKCX0KCi8vIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KCglmdW5jdGlvbiB1cG1fZGF0ZV9hcmNoaXZlX2Z1bGwoJGF0dHMsICR0aGluZykKCXsK CQlnbG9iYWwgJHByZWZzLCAkcHJldGV4dDsKCgkJZXh0cmFjdChsQXR0cyhhcnJheSgKCQkJ J2NhdGVnb3J5JwkJCQkgPT4gJycsCgkJCSdkYXRlX2Zvcm1hdCcJCQkgPT4gKGlzX251bWVy aWMoc3RyZnRpbWUoJyVlJykpID8gJyVlJyA6ICclZCcpLAoJCQknZXhjbHVkZV9jYXRlZ29y eScgPT4gJycsCgkJCSdleGNsdWRlX3NlY3Rpb24nCSA9PiAnJywKCQkJJ2Zvcm0nCQkJCQkJ ID0+ICcnLAoJCQknaGVhZGluZ19jbGFzcycJCSA9PiAnJywKCQkJJ2hlYWRpbmdfZm9ybWF0 JwkgPT4gJyVCICVZJywKCQkJJ2hlYWRpbmdfaWQnCQkJID0+ICcnLAoJCQknaGVhZGluZ19s ZXZlbCcJCSA9PiAyLAoJCQknaW5jbHVkZV9kYXRlJwkJID0+ICd5ZXMnLAoJCQknaW5jbHVk ZV9leHBpcmVkJyAgPT4gKCRwcmVmc1sncHVibGlzaF9leHBpcmVkX2FydGljbGVzJ10gPyAn eWVzJyA6ICdubycpLAoJCQknbGlzdF9jbGFzcycJCQkgPT4gJycsCgkJCSdsaXN0X2lkJwkJ CQkJID0+ICcnLAoJCQknc2VjdGlvbicJCQkJCSA9PiAkcHJldGV4dFsncyddLAoJCQknc29y dCcJCQkJCQkgPT4gJ3RoZV95ZWFyIGRlc2MsIHRoZV9tb250aCBkZXNjLCB0aGVfZGF0ZSBh c2MnLAoJCQkndGltZScJCQkJCQkgPT4gJ3Bhc3QnCgkJKSwgJGF0dHMpKTsKCgkJLy8gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJCS8vIHByZXBhcmUgcXVlcnkKCgkJJG9mZnNl dCA9IHR6X29mZnNldCgpOwoKCQlzd2l0Y2ggKCR0aW1lKQoJCXsKCQkJY2FzZSAnYW55JzoK CQkJCSR0aW1lID0gJyc7CgkJCWJyZWFrOwoKCQkJY2FzZSAnZnV0dXJlJzoKCQkJCSR0aW1l ID0gIiBhbmQgUG9zdGVkID4gbm93KCkiOwoJCQlicmVhazsKCgkJCWRlZmF1bHQ6CgkJCQkk dGltZSA9ICIgYW5kIFBvc3RlZCA8PSBub3coKSI7CgkJCWJyZWFrOwoJCX0KCgkJaWYgKCRp bmNsdWRlX2V4cGlyZWQgPT0gJ25vJykKCQl7CgkJCSR0aW1lIC49ICIgYW5kIChub3coKSA8 PSBFeHBpcmVzIG9yIEV4cGlyZXMgPSAiLk5VTExEQVRFVElNRS4iKSI7CgkJfQoKCQlsaXN0 KCRzZWN0aW9uX3NxbCwgJGNhdGVnb3J5X3NxbCkgPSB1cG1fZGF0ZV9hcmNoaXZlX3F1ZXJ5 X2J1aWxkKCRzZWN0aW9uLCAkZXhjbHVkZV9zZWN0aW9uLCAkY2F0ZWdvcnksICRleGNsdWRl X2NhdGVnb3J5KTsKCgkJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCQkkcnMg PSBzYWZlX3Jvd3Nfc3RhcnQoIiosIHVuaXhfdGltZXN0YW1wKFBvc3RlZCkgYXMgdVBvc3Rl ZCwgdW5peF90aW1lc3RhbXAoRXhwaXJlcykgYXMgdUV4cGlyZXMsIHVuaXhfdGltZXN0YW1w KExhc3RNb2QpIGFzIHVMYXN0TW9kLAoJCQl1bml4X3RpbWVzdGFtcChkYXRlX2FkZChQb3N0 ZWQsIGludGVydmFsICckb2Zmc2V0JyBzZWNvbmQpKSBhcyB0aGVfZGF0ZSwKCQkJZGF0ZV9m b3JtYXQoZGF0ZV9hZGQoUG9zdGVkLCBpbnRlcnZhbCAnJG9mZnNldCcgc2Vjb25kKSwgJyVk JykgYXMgdGhlX2RheSwKCQkJZGF0ZV9mb3JtYXQoZGF0ZV9hZGQoUG9zdGVkLCBpbnRlcnZh bCAnJG9mZnNldCcgc2Vjb25kKSwgJyVtJykgYXMgdGhlX21vbnRoLAoJCQlkYXRlX2Zvcm1h dChkYXRlX2FkZChQb3N0ZWQsIGludGVydmFsICckb2Zmc2V0JyBzZWNvbmQpLCAnJW0gJVkn KSBhcyBtb250aF95ZWFyLAoJCQlkYXRlX2Zvcm1hdChkYXRlX2FkZChQb3N0ZWQsIGludGVy dmFsICckb2Zmc2V0JyBzZWNvbmQpLCAnJVknKSBhcyB0aGVfeWVhciIsCgkJCSd0ZXh0cGF0 dGVybicsCgkJCSJTdGF0dXMgPSA0CgkJCSR0aW1lCgkJCSRzZWN0aW9uX3NxbCAkY2F0ZWdv cnlfc3FsCgkJCW9yZGVyIGJ5ICIuZG9TbGFzaCgkc29ydCkpOwoKCQlpZiAoISRycykKCQl7 CgkJCXJldHVybjsKCQl9CgoJCSRwb3N0X2NvdW50ID0gbnVtUm93cygkcnMpOwoKCQlpZiAo ISRwb3N0X2NvdW50KQoJCXsKCQkJcmV0dXJuOwoJCX0KCgkJLy8gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQoJCS8vIGRpc3BsYXkgcmVzdWx0cwoKCQkkaGVhZGluZ19pZCA9ICgk aGVhZGluZ19pZCkgPyAnIGlkPSInLiRoZWFkaW5nX2lkLiciJyA6ICcnOwoJCSRoZWFkaW5n X2NsYXNzID0gKCRoZWFkaW5nX2NsYXNzKSA/ICcgY2xhc3M9IicuJGhlYWRpbmdfY2xhc3Mu JyInIDogJyc7CgoJCSRsaXN0X2lkID0gKCRsaXN0X2lkKSA/ICcgaWQ9IicuJGxpc3RfaWQu JyInIDogJyc7CgkJJGxpc3RfY2xhc3MgPSAoJGxpc3RfY2xhc3MpID8gJyBjbGFzcz0iJy4k bGlzdF9jbGFzcy4nIicgOiAnJzsKCgkJaWYgKCRmb3JtKQoJCXsKCQkJJHdoYXQgPSBmZXRj aF9mb3JtKCRmb3JtKTsKCQl9CgoJCWVsc2VpZiAoJHRoaW5nKQoJCXsKCQkJJHdoYXQgPSAk dGhpbmc7CgkJfQoKCQkkb3V0ID0gYXJyYXkoKTsKCgkJJGN1cnJlbnRfbW9udGggPSAnJzsK CQkkY3VycmVudF9kYXkgPSAnJzsKCgkJJGkgPSAwOwoKCQl3aGlsZSAoJHJvdyA9IG5leHRS b3coJHJzKSkKCQl7CgkJCWV4dHJhY3QoJHJvdyk7CgoJCQlpZiAoJG1vbnRoX3llYXIgIT0g JGN1cnJlbnRfbW9udGgpCgkJCXsKCQkJCWlmICghZW1wdHkoJGN1cnJlbnRfbW9udGgpKQoJ CQkJewoJCQkJCSRvdXRbXSA9ICgkaW5jbHVkZV9kYXRlID09ICd5ZXMnKSA/CgkJCQkJCW4u JzwvZGw+JyA6CgkJCQkJCW4uJzwvdWw+JzsKCQkJCX0KCgkJCQkkb3V0W10gPSBuLm4udGFn KHN0cmZ0aW1lKCRoZWFkaW5nX2Zvcm1hdCwgJHRoZV9kYXRlKSwgJ2gnLiRoZWFkaW5nX2xl dmVsLCAkaGVhZGluZ19pZC4kaGVhZGluZ19jbGFzcyk7CgoJCQkJJG91dFtdID0gKCRpbmNs dWRlX2RhdGUgPT0gJ3llcycpID8KCQkJCQluLm4uJzxkbCcuJGxpc3RfaWQuJGxpc3RfY2xh c3MuJz4nIDoKCQkJCQluLm4uJzx1bCcuJGxpc3RfaWQuJGxpc3RfY2xhc3MuJz4nOwoKCQkJ CSRjdXJyZW50X21vbnRoID0gJG1vbnRoX3llYXI7CgkJCX0KCgkJCWlmICgkaW5jbHVkZV9k YXRlID09ICd5ZXMnKQoJCQl7CgkJCQlpZiAoJHRoZV9kYXkgIT0gJGN1cnJlbnRfZGF5KQoJ CQkJewoJCQkJCSRvdXRbXSA9IG4udC4nPGR0Picuc3RyZnRpbWUoJGRhdGVfZm9ybWF0LCAk dGhlX2RhdGUpLic8L2R0Pic7CgoJCQkJCSRjdXJyZW50X2RheSA9ICR0aGVfZGF5OwoJCQkJ fQoJCQl9CgoJCQlpZiAoJGZvcm0gb3IgJHRoaW5nKQoJCQl7CgkJCQkrKyRpOwoKCQkJCSRy b3dbJ3VQb3N0ZWQnXSA9ICR0aGVfZGF0ZTsKCgkJCQlwb3B1bGF0ZUFydGljbGVEYXRhKCRy b3cpOwoKCQkJCSRHTE9CQUxTWyd0aGlzYXJ0aWNsZSddWydpc19maXJzdCddID0gKCRpID09 IDEpOwoJCQkJJEdMT0JBTFNbJ3RoaXNhcnRpY2xlJ11bJ2lzX2xhc3QnXSA9ICgkaSA9PSAk cG9zdF9jb3VudCk7CgoJCQkJJGNvbnRlbnRzID0gcGFyc2UoJHdoYXQpOwoKCQkJCXVuc2V0 KCRHTE9CQUxTWyd0aGlzYXJ0aWNsZSddKTsKCQkJfQoKCQkJZWxzZQoJCQl7CgkJCQkkY29u dGVudHMgPSAnPGEgcmVsPSJib29rbWFyayIgaHJlZj0iJy5wZXJtbGlua3VybF9pZCgkSUQp LiciPicuJFRpdGxlLic8L2E+JzsKCQkJfQoKCQkJJG91dFtdID0gKCRpbmNsdWRlX2RhdGUg PT0gJ3llcycpID8KCQkJCW4udC4nPGRkPicuJGNvbnRlbnRzLic8L2RkPicgOgoJCQkJbi50 Lic8bGk+Jy4kY29udGVudHMuJzwvbGk+JzsKCQl9CgoJCXJldHVybiAoJGluY2x1ZGVfZGF0 ZSA9PSAneWVzJykgPwoJCQlqb2luKCcnLCAkb3V0KS5uLic8L2RsPicgOgoJCQlqb2luKCcn LCAkb3V0KS5uLic8L3VsPic7Cgl9CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJZnVuY3Rpb24gdXBtX2RhdGVf YXJjaGl2ZV9xdWVyeV9idWlsZCgkc2VjdGlvbiwgJGV4Y2x1ZGVfc2VjdGlvbiwgJGNhdGVn b3J5LCAkZXhjbHVkZV9jYXRlZ29yeSkKCXsKCQkvLyAtLS0tLSBzZWN0aW9ucwoKCQkkc2Vj dGlvbl9zcWwgPSAnJzsKCgkJaWYgKCRleGNsdWRlX3NlY3Rpb24pCgkJewoJCQlpZiAoJGV4 Y2x1ZGVfc2VjdGlvbiA9PSAnZGVmYXVsdCcpCgkJCXsKCQkJCSRleGNsdWRlX3NlY3Rpb24g PSBzYWZlX2NvbHVtbignbmFtZScsICd0eHBfc2VjdGlvbicsICJvbl9mcm9udHBhZ2UgPSAn MSciKTsKCQkJfQoKCQkJZWxzZQoJCQl7CgkJCQkkZXhjbHVkZV9zZWN0aW9uID0gZG9fbGlz dCgkZXhjbHVkZV9zZWN0aW9uKTsKCQkJfQoKCQkJJGV4Y2x1ZGVfc2VjdGlvbiA9IGpvaW4o IicsJyIsIGRvU2xhc2goJGV4Y2x1ZGVfc2VjdGlvbikpOwoKCQkJJHNlY3Rpb25fc3FsID0g ImFuZCBTZWN0aW9uIG5vdCBpbignJGV4Y2x1ZGVfc2VjdGlvbicpIjsKCQl9CgoJCWVsc2Vp ZiAoJHNlY3Rpb24pCgkJewoJCQlpZiAoJHNlY3Rpb24gPT0gJ2RlZmF1bHQnKQoJCQl7CgkJ CQkkc2VjdGlvbiA9IHNhZmVfY29sdW1uKCduYW1lJywgJ3R4cF9zZWN0aW9uJywgIm9uX2Zy b250cGFnZSA9ICcxJyIpOwoJCQl9CgoJCQllbHNlCgkJCXsKCQkJCSRzZWN0aW9uID0gZG9f bGlzdCgkc2VjdGlvbik7CgkJCX0KCgkJCSRzZWN0aW9uID0gam9pbigiJywnIiwgZG9TbGFz aCgkc2VjdGlvbikpOwoKCQkJJHNlY3Rpb25fc3FsID0gImFuZCBTZWN0aW9uIGluKCckc2Vj dGlvbicpIjsKCQl9CgoJCS8vIC0tLS0tIGNhdGVnb3JpZXMKCgkJJGNhdGVnb3J5X3NxbCA9 ICcnOwoKCQlpZiAoJGV4Y2x1ZGVfY2F0ZWdvcnkpCgkJewoJCQkkZXhjbHVkZV9jYXRlZ29y eSA9IGpvaW4oIicsJyIsIGRvU2xhc2goZG9fbGlzdCgkZXhjbHVkZV9jYXRlZ29yeSkpKTsK CgkJCSRjYXRlZ29yeV9zcWwgPSAiYW5kIChDYXRlZ29yeTEgbm90IGluKCckZXhjbHVkZV9j YXRlZ29yeScpIGFuZCBDYXRlZ29yeTIgbm90IGluKCckZXhjbHVkZV9jYXRlZ29yeScpKSI7 CgkJfQoKCQllbHNlaWYgKCRjYXRlZ29yeSkKCQl7CgkJCSRjYXRlZ29yeSA9IGpvaW4oIics JyIsIGRvU2xhc2goZG9fbGlzdCgkY2F0ZWdvcnkpKSk7CgoJCQkkY2F0ZWdvcnlfc3FsID0g ImFuZCAoQ2F0ZWdvcnkxIGluKCckY2F0ZWdvcnknKSBvciBDYXRlZ29yeTIgaW4oJyRjYXRl Z29yeScpKSI7CgkJfQoKCQlyZXR1cm4gYXJyYXkoJHNlY3Rpb25fc3FsLCAkY2F0ZWdvcnlf c3FsKTsKCX0KCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KCglmdW5jdGlvbiB1cG1fZGF0ZV9hcmNoaXZlX2xvYWQo KQoJewoJCWdsb2JhbCAkcHJlZnMsICRwcmV0ZXh0LCAkcywgJG1vbnRoLCAkc3RhdHVzLCAk cGFnZTsKCgkJaWYgKGVtcHR5KCRwcmVmc1sndXBtX2RhdGVfYXJjaGl2ZV9saXN0ZW4nXSkp CgkJewoJCQlyZXR1cm47CgkJfQoKCQkkc2VjdGlvbnMgPSB1bnNlcmlhbGl6ZSgkcHJlZnNb J3VwbV9kYXRlX2FyY2hpdmVfbGlzdGVuJ10pOwoKCQlpZiAoZW1wdHkoJHNlY3Rpb25zKSkK CQl7CgkJCXJldHVybjsKCQl9CgoJCWlmICgkcHJldGV4dFsnc3RhdHVzJ10gIT0gJzQwNCcp CgkJewoJCQlyZXR1cm47CgkJfQoKCQkkcmVxdWVzdF91cmkgPSBwcmVnX3JlcGxhY2UoInxe aHR0cHM/Oi8vW14vXSt8aSIsICcnLCBzZXJ2ZXJTZXQoJ1JFUVVFU1RfVVJJJykpOwoKCQlp ZiAoISRyZXF1ZXN0X3VyaSBhbmQgc2VydmVyU2V0KCdTQ1JJUFRfTkFNRScpKQoJCXsKCQkJ JHJlcXVlc3RfdXJpID0gc2VydmVyU2V0KCdTQ1JJUFRfTkFNRScpLihzZXJ2ZXJTZXQoJ1FV RVJZX1NUUklORycpID8gJz8nLnNlcnZlclNldCgnUVVFUllfU1RSSU5HJykgOiAnJyk7CgkJ fQoKCQlpZiAoISRyZXF1ZXN0X3VyaSBhbmQgJGFyZ3YgPSBzZXJ2ZXJTZXQoJ2FyZ3YnKSkK CQl7CgkJCSRyZXF1ZXN0X3VyaSA9IEBzdWJzdHIoJGFyZ3ZbMF0sIHN0cnBvcygkYXJndlsw XSwgJzsnKSArIDEpOwoJCX0KCgkJJHN1YnBhdGggPSBwcmVnX3F1b3RlKHByZWdfcmVwbGFj ZSgiL2h0dHBzPzpcL1wvLiooXC8uKikvVWkiLCAiJDEiLCBodSksICcvJyk7CgoJCSRyZXEg PSBwcmVnX3JlcGxhY2UoIi9eJHN1YnBhdGgvaSIsICcvJywgJHJlcXVlc3RfdXJpKTsKCgkJ JHJlcSA9IGNob3BVcmwoJHJlcSk7CgoJCWlmICghJHByZXRleHRbJ2lkJ10gYW5kIGluX2Fy cmF5KCRyZXFbJ3UxJ10sICRzZWN0aW9ucykpCgkJewoJCQkkcHJldGV4dFsnc3RhdHVzJ10g PSAkc3RhdHVzID0gJzIwMCc7CgoJCQkkcHJldGV4dFsncyddID0gJHMgPSAkcmVxWyd1MSdd OwoKCQkJJHJzID0gc2FmZV9yb3coJ3BhZ2UnLCAndHhwX3NlY3Rpb24nLCAibmFtZSA9ICci LmRvU2xhc2goJHByZXRleHRbJ3MnXSkuIicgbGltaXQgMSIpOwoJCQkkcHJldGV4dFsncGFn ZSddID0gJHBhZ2UgPSBAJHJzWydwYWdlJ107CgoJCQlpZiAoJHJlcVsndTInXSBhbmQgcHJl Z19tYXRjaCgnL15bMC05XXs0fS17MX1bMC05XXsyfSQvJywgJHJlcVsndTInXSkpCgkJCXsK CQkJCSRwcmV0ZXh0Wydtb250aCddID0gJG1vbnRoID0gJHJlcVsndTInXTsKCQkJfQoJCX0K CX0KCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KCglmdW5jdGlvbiB1cG1fZGF0ZV9hcmNoaXZlX3ByZWZzKCRldmVu dCwgJHN0ZXApCgl7CgkJZ2xvYmFsICRwcmVmczsKCgkJcGFnZXRvcCh1cG1fZGF0ZV9hcmNo aXZlX2dUeHQoJ3ByZWZzJyksICgkc3RlcCA9PSAndXBkYXRlJyA/IGdUeHQoJ3ByZWZlcmVu Y2VzX3NhdmVkJykgOiAnJykpOwoKCQllY2hvIDw8PGNzcwoKPHN0eWxlIHR5cGU9InRleHQv Y3NzIiBtZWRpYT0ic2NyZWVuLHByb2plY3Rpb24iPgo8IS0tCgojdXBtX2RhdGVfYXJjaGl2 ZSB7Cm1hcmdpbjogM2VtIGF1dG8gYXV0byBhdXRvOwp3aWR0aDogMjBlbTsKfQoKI3VwbV9k YXRlX2FyY2hpdmUgdWwgewptYXJnaW46IDAgYXV0byAxNXB4IGF1dG87CnBhZGRpbmc6IDA7 CndpZHRoOiAxNGVtOwpsaXN0LXN0eWxlOiBub25lIG5vbmU7Cn0KCiN1cG1fZGF0ZV9hcmNo aXZlIGxpIHsKbWFyZ2luOiAwIDAgNXB4IDA7CnBhZGRpbmc6IDA7Cn0KCiN1cG1fZGF0ZV9h cmNoaXZlIGxpIGlucHV0IHsKbWFyZ2luOiAwOwpwYWRkaW5nOiAwOwp2ZXJ0aWNhbC1hbGln bjogbWlkZGxlOwp9CgotLT4KPC9zdHlsZT4KCmNzczsKCgkJaWYgKCRzdGVwID09ICd1cGRh dGUnKQoJCXsKCQkJJHNlY3Rpb25zID0gZ3BzKCdzZWN0aW9ucycpOwoKCQkJaWYgKGVtcHR5 KCRzZWN0aW9ucykpCgkJCXsKCQkJCSRzZWN0aW9ucyA9IGFycmF5KCk7CgkJCX0KCgkJCWVs c2UKCQkJewoJCQkJJHNlY3Rpb25zID0gZG9TbGFzaCgkc2VjdGlvbnMpOwoJCQl9CgoJCQkk c2VjdGlvbnMgPSBzZXJpYWxpemUoJHNlY3Rpb25zKTsKCgkJCXNhZmVfdXBkYXRlKCd0eHBf cHJlZnMnLCAidmFsID0gJyRzZWN0aW9ucyciLCAibmFtZSA9ICd1cG1fZGF0ZV9hcmNoaXZl X2xpc3RlbiciKTsKCgkJCSRwcmVmc1sndXBtX2RhdGVfYXJjaGl2ZV9saXN0ZW4nXSA9ICRz ZWN0aW9uczsKCQl9CgoJCSRzZWN0aW9ucyA9IHVuc2VyaWFsaXplKCRwcmVmc1sndXBtX2Rh dGVfYXJjaGl2ZV9saXN0ZW4nXSk7CgoJCWVjaG8gbi5uLic8ZGl2IGlkPSJ1cG1fZGF0ZV9h cmNoaXZlIj4nLgoJCQluLm4uaGVkKHVwbV9kYXRlX2FyY2hpdmVfZ1R4dCgncHJlZnMnKSwg JzEnKTsKCgkJJHJzID0gc2FmZV9yb3dzX3N0YXJ0KCduYW1lJywgJ3R4cF9zZWN0aW9uJywg Im5hbWUgIT0gJ2RlZmF1bHQnIG9yZGVyIGJ5IG5hbWUgYXNjIik7CgoJCWlmICgkcnMpCgkJ ewoJCQkkb3V0ID0gYXJyYXkoKTsKCgkJCXdoaWxlICgkcm93ID0gbmV4dFJvdygkcnMpKQoJ CQl7CgkJCQlleHRyYWN0KCRyb3cpOwoKCQkJCSR0ZW1wID0gbi50Lic8bGk+PGxhYmVsPjxp bnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ic2VjdGlvbnNbXSIgdmFsdWU9IicuJG5hbWUu JyInOwoKCQkJCWlmIChpc19hcnJheSgkc2VjdGlvbnMpIGFuZCBpbl9hcnJheSgkbmFtZSwg JHNlY3Rpb25zKSkKCQkJCXsKCQkJCQkkdGVtcCAuPSAnIGNoZWNrZWQ9ImNoZWNrZWQiJzsK CQkJCX0KCgkJCQkkdGVtcCAuPSAnIC8+ICcuJG5hbWUuJzwvbGFiZWw+PC9saT4nOwoKCQkJ CSRvdXRbXSA9ICR0ZW1wOwoJCQl9CgoJCQlpZiAoJG91dCkKCQkJewoJCQkJZWNobyBuLm4u Zm9ybSgKCQkJCQluLmVJbnB1dCgndXBtX2RhdGVfYXJjaGl2ZScpLgoJCQkJCW4uc0lucHV0 KCd1cGRhdGUnKS4KCgkJCQkJbi5uLic8dWw+Jy4KCQkJCQkJam9pbignJywgJG91dCkuCgkJ CQkJbi4nPC91bD4nLgoKCQkJCQluLm4uZklucHV0KCdzdWJtaXQnLCAndXBkYXRlJywgJ1Vw ZGF0ZScsICdzbWFsbGVyYm94JykKCQkJCSk7CgkJCX0KCQl9CgoJCWVjaG8gbi5uLic8L2Rp dj4nOwoJfQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQoKCWZ1bmN0aW9uIHVwbV9kYXRlX2FyY2hpdmVfaW5zdGFs bCgpCgl7CgkJZ2xvYmFsICRwcmVmczsKCgkJaWYgKCFpc3NldCgkcHJlZnNbJ3VwbV9kYXRl X2FyY2hpdmVfbGlzdGVuJ10pKQoJCXsKCQkJc2FmZV9pbnNlcnQoJ3R4cF9wcmVmcycsICIK CQkJCW5hbWUgPSAndXBtX2RhdGVfYXJjaGl2ZV9saXN0ZW4nLAoJCQkJdmFsID0gJycsCgkJ CQlodG1sID0gJ3RleHRfaW5wdXQnLAoJCQkJcHJlZnNfaWQgPSAxLAoJCQkJdHlwZSA9IDIs CgkJCQlldmVudCA9ICdwdWJsaXNoJywKCQkJCXBvc2l0aW9uID0gMAoJCQkiKTsKCQl9Cgl9 CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCgoJZnVuY3Rpb24gdXBtX2RhdGVfYXJjaGl2ZV9nVHh0KCR3aGF0LCAk YXR0cyA9IGFycmF5KCkpCgl7CgkJJGxhbmcgPSBhcnJheSgKCQkJJ25vX21vbnRoX2FyY2hp dmUnID0+ICdObyBhcnRpY2xlcyBjb3VsZCBiZSBmb3VuZCBmb3IgdGhlIHJlcXVlc3RlZCBt b250aC4nLAoJCQkncHJlZnMnCQkJCQkJID0+ICd1cG1fZGF0ZV9hcmNoaXZlIFByZWZlcmVu Y2VzJwoJCSk7CgoJCXJldHVybiBzdHJ0cigkbGFuZ1skd2hhdF0sICRhdHRzKTsKCX0iO3M6 NDoiaGVscCI7czoxMjU0MToiPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVu LHByb2plY3Rpb24iPgo8IS0tCnZhciB7CglwYWRkaW5nOiAwLjFlbTsKCWZvbnQtc3R5bGU6 IG5vcm1hbDsKCWZvbnQtd2VpZ2h0OiBib2xkOwoJZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsK CWJhY2tncm91bmQtY29sb3I6ICNlZWU7Cn0KCnRhYmxlLnVwbV90YWdfYXR0cyB7CgltYXJn aW46IDAgMCAxNXB4IDA7Cglib3JkZXI6IDFweCBzb2xpZCAjZWVlOwoJYm9yZGVyLWNvbGxh cHNlOiBjb2xsYXBzZTsKfQoKdGFibGUudXBtX3RhZ19hdHRzIGNhcHRpb24gewoJcGFkZGlu ZzogMC41ZW07Cglmb250LXdlaWdodDogYm9sZDsKCXRleHQtYWxpZ246IGxlZnQ7CgliYWNr Z3JvdW5kLWNvbG9yOiAjZGRkOwp9Cgp0YWJsZS51cG1fdGFnX2F0dHMgdHIgewoJYm9yZGVy LWJvdHRvbTogMXB4IHNvbGlkICNlZWU7Cn0KCnRhYmxlLnVwbV90YWdfYXR0cyB0aCwgdGFi bGUudXBtX3RhZ19hdHRzIHRkIHsKCW1hcmdpbjogMDsKCXBhZGRpbmc6IDAuNWVtIDFlbTsK CXZlcnRpY2FsLWFsaWduOiB0b3A7Cn0KCnRhYmxlLnVwbV90YWdfYXR0cyB0aCB7Cglmb250 LXdlaWdodDogbm9ybWFsOwoJdGV4dC1hbGlnbjogbGVmdDsKCWJhY2tncm91bmQtY29sb3I6 ICNlZWU7Cn0KLS0+Cjwvc3R5bGU+Cgo8aDE+dXBtX2RhdGVfYXJjaGl2ZTwvaDE+Cgo8b2wg aWQ9InN0YXJ0Ij4KCTxsaT48YSBocmVmPSIjaW50cm8iPkludHJvPC9hPjwvbGk+Cgk8bGk+ PGEgaHJlZj0iI3NldHVwIj5TZXR1cDwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiN0YWdzIj5O ZXcgVGFnczwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNjcmVkaXQiPkNyZWRpdCBhbmQgRGV2 ZWxvcGVyIE5vdGVzPC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI2Zvb3Rub3RlcyI+Rm9vdG5v dGVzPC9hPjwvbGk+Cjwvb2w+CgoKCjxoMiBpZD0iaW50cm8iPkludHJvPC9oMj4KCjxwPlNp bXBsZSwgZmFzdCBhbmQgZWZmaWNpZW50IGFydGljbGUgYXJjaGl2ZXMuPC9wPgoKCgo8aDIg aWQ9InNldHVwIj5TZXR1cDwvaDI+Cgo8cD5CZWNhdXNlIG9mIGhvdyBUZXh0cGF0dGVybiYj ODIxNztzIGVycm9yIGhhbmRsaW5nIHdvcmtzLCBpZiB5b3UgYXJlIHVzaW5nIGNsZWFuIHVy bHMsIGFuZCB3aXNoIHRvIG1ha2UgdXNlIG9mIHRoZSBwbHVnaW4mIzgyMTc7cyAmIzgyMjA7 c21hcnQmIzgyMjE7IG1vZGUsIHlvdSB3aWxsIG5lZWQgdG8gdGVsbCB0aGUgcGx1Z2luIHdo ZW4gaXQgc2hvdWxkICYjODIyMDtsaXN0ZW4mIzgyMjE7IGZvciBhcmNoaXZlIHJlcXVlc3Rz LiBTaW1wbHkgaGVhZCB0byB0aGUgcGx1Z2luJiM4MjE3O3MgcHJlZmVyZW5jZXMsIGFuZCBj aGVjayBvZmYgdGhlIHNlY3Rpb25zIHlvdSB3YW50LiBUaGlzIGlzIG5vdCBuZWNlc3Nhcnkg Zm9yIG1lc3N5IHVybHMuPC9wPgoKPHA+dXBtX2RhdGVfbWVudSBjYW4gb25seSBiZSB1c2Vk IG9uIHRoZSBmcm9udCBwYWdlIGJ5IHVzaW5nIG1lc3N5IHVybHMuIFRoaXMgaXMgZHVlIHRv IGhvdyBUZXh0cGF0dGVybiB1bmRlcnN0YW5kcyBzZWN0aW9ucyBhbmQgdGhlIGZyb250IHBh Z2UuPC9wPgoKCgo8aDIgaWQ9InRhZ3MiPk5ldyBUYWdzPC9oMj4KCgo8dGFibGUgY2xhc3M9 InVwbV90YWdfYXR0cyIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KCgk8Y2Fw dGlvbj51cG1fZGF0ZV9tZW51PC9jYXB0aW9uPgoKCTx0cj4KCQk8dGg+TmFtZTwvdGg+CgkJ PHRoPkRlc2NyaXB0aW9uPC90aD4KCQk8dGg+UmVxdWlyZWQ/PC90aD4KCQk8dGg+QXZhaWxh YmxlIFZhbHVlczwvdGg+CgkJPHRoPkRlZmF1bHQgVmFsdWU8L3RoPgoJPC90cj4KCgk8dHI+ CgkJPHRkPmNhdGVnb3J5PC90ZD4KCQk8dGQ+VGhlIGNhdGVnb3J5L2NhdGVnb3JpZXMgb2Yg YXJ0aWNsZXMgdG8gaW5jbHVkZSBpbiB0aGUgYXJjaGl2ZS4gWW91IGNhbiBlaXRoZXIgaW5j bHVkZSBvciBleGNsdWRlICh1c2luZyA8dmFyPmV4Y2x1ZGVfY2F0ZWdvcnk8L3Zhcj4pLCBi dXQgbm90IGJvdGggYXQgdGhlIHNhbWUgdGltZS48L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRk PkFueSBleGlzdGluZyBjYXRlZ29yeSBuYW1lKHMpLCBjb21tYS1zZXBhcmF0ZWQuPC90ZD4K CQk8dGQ+Q3VycmVudCBjYXRlZ29yeTwvdGQ+Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+Y2xhc3M8 L3RkPgoJCTx0ZD5UaGUgKFgpSFRNTC9DU1MgY2xhc3MgdG8gYXBwbHkgdG8gdGhlIGxpc3Qu PC90ZD4KCQk8dGQ+Tm88L3RkPgoJCTx0ZD5BbnkgdmFsaWQgKFgpSFRNTC9DU1MgY2xhc3Mg bmFtZS48L3RkPgoJCTx0ZD5VbnNldDwvdGQ+Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+ZXhjbHVk ZV9jYXRlZ29yeTwvdGQ+CgkJPHRkPlRoZSBjYXRlZ29yeS9jYXRlZ29yaWVzIG9mIGFydGlj bGVzIHRvIGV4Y2x1ZGUgZnJvbSB0aGUgYXJjaGl2ZS4gWW91IGNhbiBlaXRoZXIgZXhjbHVk ZSBvciBpbmNsdWRlICh1c2luZyA8dmFyPmNhdGVnb3J5PC92YXI+KSwgYnV0IG5vdCBib3Ro IGF0IHRoZSBzYW1lIHRpbWUuPC90ZD4KCQk8dGQ+Tm88L3RkPgoJCTx0ZD5BbnkgZXhpc3Rp bmcgY2F0ZWdvcnkgbmFtZShzKSwgY29tbWEtc2VwYXJhdGVkLjwvdGQ+CgkJPHRkPlVuc2V0 PC90ZD4KCTwvdHI+CgoJPHRyPgoJCTx0ZD5leGNsdWRlX3NlY3Rpb248L3RkPgoJCTx0ZD5U aGUgc2VjdGlvbihzKSBvZiBhcnRpY2xlcyB0byBleGNsdWRlIGZyb20gdGhlIGFyY2hpdmUu IFlvdSBjYW4gZWl0aGVyIGV4Y2x1ZGUgb3IgaW5jbHVkZSAodXNpbmcgPHZhcj5zZWN0aW9u PC92YXI+KSwgYnV0IG5vdCBib3RoIGF0IHRoZSBzYW1lIHRpbWUuPC90ZD4KCQk8dGQ+Tm88 L3RkPgoJCTx0ZD5BbnkgZXhpc3Rpbmcgc2VjdGlvbiBuYW1lKHMpLCBjb21tYS1zZXBhcmF0 ZWQuPC90ZD4KCQk8dGQ+VW5zZXQ8L3RkPgoJPC90cj4KCgk8dHI+CgkJPHRkPmlkPC90ZD4K CQk8dGQ+VGhlIChYKUhUTUwvQ1NTIGlkIHRvIGFwcGx5IHRvIHRoZSBsaXN0LjwvdGQ+CgkJ PHRkPk5vPC90ZD4KCQk8dGQ+QW55IHZhbGlkIChYKUhUTUwvQ1NTIGlkLjwvdGQ+CgkJPHRk PlVuc2V0PC90ZD4KCTwvdHI+CgoJPHRyPgoJCTx0ZD5pbmNsdWRlX2V4cGlyZWQ8L3RkPgoJ CTx0ZD5XaGV0aGVyIHRvIGluY2x1ZGUgZXhwaXJlZCBhcnRpY2xlcyBpbiB0aGUgbGlzdC48 L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRkPjx2YXI+eWVzPC92YXI+IG9yIDx2YXI+bm88L3Zh cj48L3RkPgoJCTx0ZD5BZG1pbiBwcmVmZXJlbmNlICJQdWJsaXNoIGV4cGlyZWQgYXJ0aWNs ZXM/IjwvdGQ+Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+aW5zZXJ0X2VtcHR5X21vbnRoczwvdGQ+ CgkJPHRkPldoZXRoZXIgdG8gaW5jbHVkZSBpbiB0aGUgbGlzdCBtb250aHMgd2l0aG91dCBh cnRpY2xlcy48L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRkPjx2YXI+eWVzPC92YXI+IG9yIDx2 YXI+bm88L3Zhcj48L3RkPgoJCTx0ZD48dmFyPnllczwvdmFyPjwvdGQ+Cgk8L3RyPgoKCTx0 cj4KCQk8dGQ+bGlua190bzwvdGQ+CgkJPHRkPlRoZSBzZWN0aW9uIHRvIGluY2x1ZGUgd2l0 aGluIHRoZSBtb250aCB1cmwuPC90ZD4KCQk8dGQ+PC90ZD4KCQk8dGQ+QW55IHZhbGlkIHNl Y3Rpb24gZm9yIHdoaWNoIHlvdSBoYXZlIGVuYWJsZWQgc21hcnQgbW9kZSwgYW5kIGFsc28g Y29udGFpbnMgdGhlIHVwbV9kYXRlX2FyY2hpdmUgdGFnLjwvdGQ+CgkJPHRkPkN1cnJlbnQg c2VjdGlvbjwvdGQ+Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+bW9udGhfZm9ybWF0PC90ZD4KCQk8 dGQ+SG93IHRvIGZvcm1hdCB0aGUgbW9udGggZGlzcGxheS48L3RkPgoJCTx0ZD5ObzwvdGQ+ CgkJPHRkPkFueSB2YWxpZCA8YSBocmVmPSJodHRwOi8vcGhwLm5ldC9zdHJmdGltZSI+c3Ry ZnRpbWUoKSBmb3JtYXQgc3RyaW5nPC9hPi48L3RkPgoJCTx0ZD48dmFyPiViPC92YXI+PC90 ZD4KCTwvdHI+CgoJPHRyPgoJCTx0ZD5yZW1haW5fbGlua2VkPC90ZD4KCQk8dGQ+V2hlbiB2 aWV3aW5nIGEgbW9udGgmIzgyMTc7cyBwb3N0IGxpc3QsIHdoZXRoZXIgdG8gZGlzcGxheSB0 aGUgbW9udGggYXMgYSB1cmwgb3IgdGV4dC48L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRkPjx2 YXI+eWVzPC92YXI+IG9yIDx2YXI+bm88L3Zhcj48L3RkPgoJCTx0ZD48dmFyPnllczwvdmFy PjwvdGQ+Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+c2VjdGlvbjwvdGQ+CgkJPHRkPlRoZSBzZWN0 aW9uKHMpIG9mIGFydGljbGVzIHRvIGluY2x1ZGUgaW4gdGhlIGFyY2hpdmUuIFlvdSBjYW4g ZWl0aGVyIGluY2x1ZGUgb3IgZXhjbHVkZSAodXNpbmcgPHZhcj5leGNsdWRlX3NlY3Rpb248 L3Zhcj4pLCBidXQgbm90IGJvdGggYXQgdGhlIHNhbWUgdGltZS48L3RkPgoJCTx0ZD5Obzwv dGQ+CgkJPHRkPkFueSBleGlzdGluZyBzZWN0aW9uIG5hbWUocyksIGNvbW1hLXNlcGFyYXRl ZC48L3RkPgoJCTx0ZD5DdXJyZW50IHNlY3Rpb248L3RkPgoJPC90cj4KCgk8dHI+CgkJPHRk PnNob3dfYXJ0aWNsZV9jb3VudDwvdGQ+CgkJPHRkPldoZXRoZXIgdG8gZGlzcGxheSB0aGUg Y291bnQgb2YgdGhlIG51bWJlciBvZiBhcnRpY2xlcyBmb3IgYSBnaXZlbiBtb250aC4gSWYg ZW5hYmxlZCwgbW9udGhzIHdpdGggYW55IGFydGljbGVzIGluIHRoZW0gZGlzcGxheSB0aGUg bnVtYmVyIGluIHBhcmVudGhlc2lzIGFmdGVyIHRoZSBtb250aCBuYW1lLjwvdGQ+CgkJPHRk Pk5vPC90ZD4KCQk8dGQ+PHZhcj55ZXM8L3Zhcj4gb3IgPHZhcj5ubzwvdmFyPjwvdGQ+CgkJ PHRkPjx2YXI+bm88L3Zhcj48L3RkPgoJPC90cj4KCgk8dHI+CgkJPHRkPnNvcnQ8L3RkPgoJ CTx0ZD48L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRkPjx2YXI+dGhlX21vbnRoPC92YXI+IG9y IDx2YXI+dGhlX3llYXI8L3Zhcj4sIDx2YXI+YXNjPC92YXI+IG9yIDx2YXI+ZGVzYzwvdmFy PjwvdGQ+CgkJPHRkPjx2YXI+dGhlX3llYXIgZGVzYywgdGhlX21vbnRoIGFzYzwvdmFyPjwv dGQ+Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+dGltZTwvdGQ+CgkJPHRkPlJlc3RyaWN0IGJ5IGRh dGUvdGltZSBwb3N0ZWQuPC90ZD4KCQk8dGQ+Tm88L3RkPgoJCTx0ZD48dmFyPnBhc3Q8L3Zh cj4sIDx2YXI+ZnV0dXJlPC92YXI+IG9yIDx2YXI+YW55PC92YXI+PC90ZD4KCQk8dGQ+PHZh cj5wYXN0PC92YXI+PC90ZD4KCTwvdHI+CgoJPHRyPgoJCTx0ZD55ZWFyX2Zvcm1hdDwvdGQ+ CgkJPHRkPkhvdyB0byBmb3JtYXQgdGhlIHllYXIgaGVhZGluZyBkaXNwbGF5LjwvdGQ+CgkJ PHRkPk5vPC90ZD4KCQk8dGQ+QW55IHZhbGlkIDxhIGhyZWY9Imh0dHA6Ly9waHAubmV0L3N0 cmZ0aW1lIj5zdHJmdGltZSgpIGZvcm1hdCBzdHJpbmc8L2E+LjwvdGQ+CgkJPHRkPjx2YXI+ JVk8L3Zhcj48L3RkPgoJPC90cj4KPC90YWJsZT4KCgo8dGFibGUgY2xhc3M9InVwbV90YWdf YXR0cyIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KCgk8Y2FwdGlvbj51cG1f ZGF0ZV9hcmNoaXZlPC9jYXB0aW9uPgoKCTx0cj4KCQk8dGg+TmFtZTwvdGg+CgkJPHRoPkRl c2NyaXB0aW9uPC90aD4KCQk8dGg+UmVxdWlyZWQ/PC90aD4KCQk8dGg+QXZhaWxhYmxlIFZh bHVlczwvdGg+CgkJPHRoPkRlZmF1bHQgVmFsdWU8L3RoPgoJPC90cj4KCgk8dHI+CgkJPHRk PmNhdGVnb3J5PC90ZD4KCQk8dGQ+VGhlIGNhdGVnb3J5L2NhdGVnb3JpZXMgb2YgYXJ0aWNs ZXMgdG8gaW5jbHVkZSBpbiB0aGUgYXJjaGl2ZS4gWW91IGNhbiBlaXRoZXIgaW5jbHVkZSBv ciBleGNsdWRlICh1c2luZyA8dmFyPmV4Y2x1ZGVfY2F0ZWdvcnk8L3Zhcj4pLCBidXQgbm90 IGJvdGggYXQgdGhlIHNhbWUgdGltZS48L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRkPkFueSBl eGlzdGluZyBjYXRlZ29yeSBuYW1lKHMpLCBjb21tYS1zZXBhcmF0ZWQuPC90ZD4KCQk8dGQ+ Q3VycmVudCBjYXRlZ29yeTwvdGQ+Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+ZGF0ZV9mb3JtYXQ8 L3RkPgoJCTx0ZD5JZiBpbmNsdWRpbmcgdGhlIGRhdGUgd2l0aCA8dmFyPmluY2x1ZGVfZGF0 ZTwvdmFyPiBhdHRyaWJ1dGUsIGhvdyB0byBmb3JtYXQgdGhlIGRhdGUgZGlzcGxheSBmb3Ig ZGFjaCBkYXkuPC90ZD4KCQk8dGQ+Tm88L3RkPgoJCTx0ZD5BbnkgdmFsaWQgPGEgaHJlZj0i aHR0cDovL3BocC5uZXQvc3RyZnRpbWUiPnN0cmZ0aW1lKCkgZm9ybWF0IHN0cmluZzwvYT4u PC90ZD4KCQk8dGQ+PHZhcj4lZTwvdmFyPjxzdXA+PGEgaHJlZj0iI2ZuMSIgaWQ9InJlZjEi PjE8L2E+PC9zdXA+PC90ZD4KCTwvdHI+CgoJPHRyPgoJCTx0ZD5leGNsdWRlX2NhdGVnb3J5 PC90ZD4KCQk8dGQ+VGhlIGNhdGVnb3J5L2NhdGVnb3JpZXMgb2YgYXJ0aWNsZXMgdG8gZXhj bHVkZSBmcm9tIHRoZSBhcmNoaXZlLiBZb3UgY2FuIGVpdGhlciBleGNsdWRlIG9yIGluY2x1 ZGUgKHVzaW5nIDx2YXI+Y2F0ZWdvcnk8L3Zhcj4pLCBidXQgbm90IGJvdGggYXQgdGhlIHNh bWUgdGltZS48L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRkPkFueSBleGlzdGluZyBjYXRlZ29y eSBuYW1lKHMpLCBjb21tYS1zZXBhcmF0ZWQuPC90ZD4KCQk8dGQ+VW5zZXQ8L3RkPgoJPC90 cj4KCgk8dHI+CgkJPHRkPmV4Y2x1ZGVfc2VjdGlvbjwvdGQ+CgkJPHRkPlRoZSBzZWN0aW9u KHMpIG9mIGFydGljbGVzIHRvIGV4Y2x1ZGUgZnJvbSB0aGUgYXJjaGl2ZS4gWW91IGNhbiBl aXRoZXIgZXhjbHVkZSBvciBpbmNsdWRlICh1c2luZyA8dmFyPnNlY3Rpb248L3Zhcj4pLCBi dXQgbm90IGJvdGggYXQgdGhlIHNhbWUgdGltZS48L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRk PkFueSBleGlzdGluZyBzZWN0aW9uIG5hbWUocyksIGNvbW1hLXNlcGFyYXRlZC48L3RkPgoJ CTx0ZD5VbnNldDwvdGQ+Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+Zm9ybTwvdGQ+CgkJPHRkPkZv cm0gdG8gdXNlIGZvciBkaXNwbGF5aW5nIGVhY2ggYXJ0aWNsZSB3aXRoaW4gdGhlIGxpc3Qu PC90ZD4KCQk8dGQ+Tm88L3RkPgoJCTx0ZD5BbnkgZXhpc3RpbmcgYXJ0aWNsZSBmb3JtLjwv dGQ+CgkJPHRkPlVuc2V0PC90ZD4KCTwvdHI+CgoJPHRyPgoJCTx0ZD5oZWFkaW5nX2NsYXNz PC90ZD4KCQk8dGQ+VGhlIChYKUhUTUwvQ1NTIGNsYXNzIHRvIGFwcGx5IHRvIHRoZSBtb250 aC95ZWFyIGhlYWRpbmcuPC90ZD4KCQk8dGQ+Tm88L3RkPgoJCTx0ZD5BbnkgdmFsaWQgKFgp SFRNTC9DU1MgY2xhc3MgbmFtZS48L3RkPgoJCTx0ZD5VbnNldDwvdGQ+Cgk8L3RyPgoKCTx0 cj4KCQk8dGQ+aGVhZGluZ19mb3JtYXQ8L3RkPgoJCTx0ZD5Ib3cgdG8gZm9ybWF0IHRoZSBt b250aC95ZWFyIGhlYWRpbmcgZGF0ZSBkaXNwbGF5LjwvdGQ+CgkJPHRkPk5vPC90ZD4KCQk8 dGQ+QW55IHZhbGlkIDxhIGhyZWY9Imh0dHA6Ly9waHAubmV0L3N0cmZ0aW1lIj5zdHJmdGlt ZSgpIGZvcm1hdCBzdHJpbmc8L2E+PC90ZD4KCQk8dGQ+PHZhcj4lQiAlWTwvdmFyPjwvdGQ+ Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+aGVhZGluZ19pZDwvdGQ+CgkJPHRkPlRoZSAoWClIVE1M L0NTUyBpZCB0byBhcHBseSB0byB0aGUgbW9udGgveWVhciBoZWFkaW5nLjwvdGQ+CgkJPHRk Pk5vPC90ZD4KCQk8dGQ+QW55IHZhbGlkIChYKUhUTUwvQ1NTIGlkLjwvdGQ+CgkJPHRkPlVu c2V0PC90ZD4KCTwvdHI+CgoJPHRyPgoJCTx0ZD5oZWFkaW5nX2xldmVsPC90ZD4KCQk8dGQ+ VGhlIGxldmVsIG9mIChYKUhUTUwgaGVhZGluZyBlbGVtZW50IHRvIHVzZS48L3RkPgoJCTx0 ZD5ObzwvdGQ+CgkJPHRkPjx2YXI+MTwvdmFyPiAmIzgyMTE7IDx2YXI+NjwvdmFyPiAoaDEg JiM4MjExOyBoNik8L3RkPgoJCTx0ZD5TbWFydCBtb2RlOiA8dmFyPjE8L3Zhcj4gKGgxIGVs ZW1lbnQpPGJyIC8+PGJyIC8+RnVsbCBtb2RlOiA8dmFyPjI8L3Zhcj4gKGgyIGVsZW1lbnQp PC90ZD4KCTwvdHI+CgoJPHRyPgoJCTx0ZD5pbmNsdWRlX2RhdGU8L3RkPgoJCTx0ZD5XaGV0 aGVyIHRvIGxpc3QgaW5kaXZpZHVhbCBkYXkgZGF0ZXMuPC90ZD4KCQk8dGQ+Tm88L3RkPgoJ CTx0ZD48dmFyPnllczwvdmFyPiAob3V0cHV0cyBkZWZpbml0aW9uIGxpc3QpIG9yIDx2YXI+ bm88L3Zhcj4gKG91dHB1dHMgdW5vcmRlcmVkIGxpc3QpLgoJCTx0ZD48dmFyPnllczwvdmFy PjwvdGQ+Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+aW5jbHVkZV9leHBpcmVkPC90ZD4KCQk8dGQ+ V2hldGhlciB0byBpbmNsdWRlIGV4cGlyZWQgYXJ0aWNsZXMgaW4gdGhlIGxpc3QuPC90ZD4K CQk8dGQ+Tm88L3RkPgoJCTx0ZD48dmFyPnllczwvdmFyPiBvciA8dmFyPm5vPC92YXI+PC90 ZD4KCQk8dGQ+QWRtaW4gcHJlZmVyZW5jZSAiUHVibGlzaCBleHBpcmVkIGFydGljbGVzPyI8 L3RkPgoJPC90cj4KCgk8dHI+CgkJPHRkPmxpc3RfY2xhc3M8L3RkPgoJCTx0ZD5UaGUgKFgp SFRNTC9DU1MgY2xhc3MgdG8gYXBwbHkgdG8gdGhlIGFydGljbGUgbGlzdC48L3RkPgoJCTx0 ZD5ObzwvdGQ+CgkJPHRkPkFueSB2YWxpZCAoWClIVE1ML0NTUyBjbGFzcyBuYW1lLjwvdGQ+ CgkJPHRkPlVuc2V0PC90ZD4KCTwvdHI+CgoJPHRyPgoJCTx0ZD5saXN0X2lkPC90ZD4KCQk8 dGQ+VGhlIChYKUhUTUwvQ1NTIGlkIHRvIGFwcGx5IHRvIHRoZSBhcnRpY2xlIGxpc3QuPC90 ZD4KCQk8dGQ+Tm88L3RkPgoJCTx0ZD5BbnkgdmFsaWQgKFgpSFRNTC9DU1MgaWQuPC90ZD4K CQk8dGQ+VW5zZXQ8L3RkPgoJPC90cj4KCgk8dHI+CgkJPHRkPm1vZGU8L3RkPgoJCTx0ZD5I b3cgdG8gZGlzcGxheSB0aGUgbGlzdC48L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRkPjx2YXI+ c21hcnQ8L3Zhcj4gKGVhY2ggbW9udGggbGlzdCBhcyByZXF1ZXN0ZWQpIG9yIDx2YXI+ZnVs bDwvdmFyPiAoY29tcGxldGUgbGlzdCBhdCBvbmNlPHN1cD48YSBocmVmPSIjZm4yIiBpZD0i cmVmMiI+MjwvYT48L3N1cD4pPC90ZD4KCQk8dGQ+PHZhcj5zbWFydDwvdmFyPjwvdGQ+Cgk8 L3RyPgoKCTx0cj4KCQk8dGQ+bm9uZV9mb3VuZDwvdGQ+CgkJPHRkPlRoZSBuYW1lIG9mIHRo ZSBmb3JtIHRvIHJldHVybiBpZiBhIHJlcXVlc3QgaXMgbWFkZSBmb3IgYSBtb250aCB3aGVy ZSBubyBhcnRpY2xlcyBleGlzdC48c3VwPjxhIGhyZWY9IiNmbjMiIGlkPSJyZWYzIj4zPC9h Pjwvc3VwPiBUaGlzIGNhbiBiZSB1c2VkIHRvIHJldHVybiBhIGN1c3RvbSBtZXNzYWdlIHRv IHRoZSB2aXNpdG9yLjxiciAvPjxiciAvPlRoZSBkZWZhdWx0IG1lc3NhZ2UgcmV0dXJuZWQg aXM6PGJyIC8+JiM4MjIwO05vIHBvc3RzIGNvdWxkIGJlIGZvdW5kIGZvciB0aGUgcmVxdWVz dGVkIG1vbnRoLiYjODIyMTs8YnIgLz48YnIgLz5BcHBsaWVzIDxzdHJvbmc+b25seTwvc3Ry b25nPiB3aGVuIHVzaW5nIHRoZSBwbHVnaW4gaW4gJiM4MjIwO3NtYXJ0IG1vZGUmIzgyMjE7 LjwvdGQ+CgkJPHRkPk5vPC90ZD4KCQk8dGQ+QW55IGV4aXN0aW5nIGZvcm0gbmFtZS48L3Rk PgoJCTx0ZD5VbnNldDwvdGQ+Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+c2VjdGlvbjwvdGQ+CgkJ PHRkPlRoZSBzZWN0aW9uKHMpIG9mIGFydGljbGVzIHRvIGluY2x1ZGUgaW4gdGhlIGFyY2hp dmUuIFlvdSBjYW4gZWl0aGVyIGluY2x1ZGUgb3IgZXhjbHVkZSAodXNpbmcgPHZhcj5leGNs dWRlX3NlY3Rpb248L3Zhcj4pLCBidXQgbm90IGJvdGggYXQgdGhlIHNhbWUgdGltZS48L3Rk PgoJCTx0ZD5Oby48L3RkPgoJCTx0ZD5BbnkgZXhpc3Rpbmcgc2VjdGlvbiBuYW1lKHMpLCBj b21tYS1zZXBhcmF0ZWQuPC90ZD4KCQk8dGQ+Q3VycmVudCBzZWN0aW9uPC90ZD4KCTwvdHI+ CgoJPHRyPgoJCTx0ZD5zb3J0PC90ZD4KCQk8dGQ+SG93IHRvIHNvcnQgdGhlIGFyY2hpdmUg bGlzdC48L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRkPjx2YXI+dGhlX3llYXI8L3Zhcj4sIDx2 YXI+dGhlX21vbnRoPC92YXI+LCA8dmFyPnRoZV9kYXRlPC92YXI+IChmdWxsIHRpbWVzdGFt cCkuPC90ZD4KCQk8dGQ+CgkJCVNtYXJ0IG1vZGU6IDx2YXI+dGhlX2RhdGUgYXNjPC92YXI+ PGJyIC8+PGJyIC8+CgkJCUZ1bGwgbW9kZTogPHZhcj50aGVfeWVhciBkZXNjLCB0aGVfbW9u dGggZGVzYywgdGhlX2RhdGUgYXNjPC92YXI+LgoJCTwvdGQ+Cgk8L3RyPgoKCTx0cj4KCQk8 dGQ+dGltZTwvdGQ+CgkJPHRkPlJlc3RyaWN0IGJ5IGRhdGUvdGltZSBwb3N0ZWQuPC90ZD4K CQk8dGQ+Tm88L3RkPgoJCTx0ZD48dmFyPnBhc3Q8L3Zhcj4sIDx2YXI+ZnV0dXJlPC92YXI+ IG9yIDx2YXI+YW55PC92YXI+PC90ZD4KCQk8dGQ+PHZhcj5wYXN0PC92YXI+PC90ZD4KCTwv dHI+Cgo8L3RhYmxlPgoKPHA+PGEgaHJlZj0iI3N0YXJ0IiB0aXRsZT0iSnVtcCBiYWNrIGNv bnRlbnRzIGxpc3QiPiYjODYxNzs8L2E+PC9wPgoKCgo8aDIgaWQ9ImNyZWRpdC1zZWN0aW9u Ij5DcmVkaXQgYW5kIERldmVsb3BlciBOb3RlczwvaDI+Cgo8cD5NdWNoIHRoYW5rcyB0byBT ZW5jZXIgZm9yIGhlbHBpbmcgbWUgb3V0IHdpdGggd29ya2luZyBhcm91bmQgVGV4dHBhdHRl cm4mIzgyMTc7cyBlcnJvciBoYW5kbGluZywgdXBvbiB3aGljaCB0aGUgJiM4MjIwO3NtYXJ0 IG1vZGUmIzgyMjE7IGZlYXR1cmUgcmVzdHMuPC9wPgoKPHA+V2hpbGUgb3RoZXIgcGx1Z2lu cyBzaW1pbGFyIGluIGZvY3VzIG9yIGZlYXR1cmVzIGNhbiBiZSBmb3VuZCwgc3VjaCBhcyA8 YSBocmVmPSJodHRwOi8vd3d3LndpbHNoaXJlb25lLmNvbS90ZXh0cGF0dGVybi1wbHVnaW5z L3Jzcy1zdXBhcmNoaXZlIj5Sb2IgU2FibGUmIzgyMTc7cyByc3Nfc3VwYXJjaGl2ZTwvYT4s IHRoaXMgcGx1Z2luIGlzIGFuIGVudGlyZWx5IG9yaWdpbmFsIHdvcmssIGJ1aWx0IGZyb20g dGhlIGJvdHRvbS11cCBieSBteXNlbGYuPC9wPgoKPHA+PGEgaHJlZj0iI3N0YXJ0IiB0aXRs ZT0iSnVtcCBiYWNrIGNvbnRlbnRzIGxpc3QiPiYjODYxNzs8L2E+PC9wPgoKPGgyIGlkPSJm b290bm90ZS1zZWN0aW9uIj5Gb290bm90ZXM8L2gyPgoKPG9sPgoJPGxpIGlkPSJmbjEiPldp bmRvd3MgZG9lcyBub3QgdW5kZXJzdGFuZCA8dmFyPiVlPC92YXI+LCBzbyBpdHMgZGVmYXVs dCBpcyA8dmFyPiVkPC92YXI+LiA8YSBocmVmPSIjcmVmMSIgdGl0bGU9Ikp1bXAgYmFjayB0 byBmb290bm90ZSAjMSByZWZlcmVuY2UiPiYjODYxNzs8L2E+PC9saT4KCgk8bGkgaWQ9ImZu MiI+SSBhZHZpc2UgdG8gYXZvaWQgdXNpbmcgJiM4MjIwO2Z1bGwmIzgyMjE7IG1vZGUgZm9y IHZlcnkgbGFyZ2UgYXJjaGl2ZXMuIFdoaWxlIEkmIzgyMTc7dmUgdGFrZW4gY2FyZSB0byBr ZWVwIHRoZSBxdWVyaWVzIGFzIGVmZmljaWVudCBhcyBwb3NzaWJsZSwgdGhlIGxhcmdlciB5 b3Uga2VlcCB0aGlzIGxpc3QsIHRoZSBsb25nZXIgaXQgd2lsbCB0YWtlIHRvIGxvYWQgaXQu IFVzZSB5b3VyIGJlc3QganVkZ2VtZW50LCBhbmQgcmVtZW1iZXIgdGhhdCBJIGNhbm5vdCBi ZSBoZWxkIHJlc3BvbnNpYmxlIGZvciBpbXByb3BlciB1c2Ugb2YgdGhlIHBsdWdpbiAobGlr ZSBjYWxsaW5nIGl0IG11bHRpcGxlIHRpbWVzIG9uIG9uZSBwYWdlKS4gSWYgaW4gZG91YnQg YWJvdXQgaXQsIGFzayB5b3VyIGhvc3QuIDxhIGhyZWY9IiNyZWYyIiB0aXRsZT0iSnVtcCBi YWNrIHRvIGZvb3Rub3RlICMyIHJlZmVyZW5jZSI+JiM4NjE3OzwvYT48L2xpPgoKCTxsaSBp ZD0iZm4zIj4KCQk8cD5XaGVuIGxpc3RpbmcgYXJ0aWNsZXMgaW4gJiM4MjIwO3NtYXJ0IG1v ZGUmIzgyMjE7LCBubyBpbnZhbGlkIHVybHMgYXJlIGdlbmVyYXRlZC4gSG93ZXZlciwgaW4g dGhlIGV2ZW50IG9mIGEgdmlzaXRvciBhdHRlbXB0aW5nIHRvIHZpZXcgb3RoZXIgYXJjaGl2 ZSBkYXRlcywgb25lIGNvdWxkIG1ha2UgYSByZXF1ZXN0IGZvciBhIG1vbnRoIHdpdGggbm8g YXJ0aWNsZXMuPC9wPgoKCQk8cD5JIGRlY2lkZWQgYWdhaW5zdCByZXR1cm5pbmcgYSA0MDQg ZXJyb3IsIGZvciBhIGNvdXBsZSByZWFzb25zOjwvcD4KCgkJPHA+T25lLCBUZXh0cGF0dGVy biYjODIxNztzIGVycm9yIGhhbmRsaW5nIGlzIHN1Y2ggdGhhdCwgaW4gb3JkZXIgZm9yICYj ODIyMDtzbWFydCBtb2RlJiM4MjIxOyB0byB3b3JrIGNvcnJlY3RseSwgYSBwbHVnaW4gbXVz dCAmIzgyMjA7Zm9vbCYjODIyMTsgVGV4dHBhdHRlcm4gaW50byB0aGlua2luZyByZXF1ZXN0 cyB1bmRlciBjZXJ0YWluIGNpcmN1bXN0YW5jZXMgYXJlIHZhbGlkLCBleGlzdGluZyBkb2N1 bWVudHMuIEJ5IHRoZSB0aW1lIHRoZSBhY3R1YWwgcmVxdWVzdCBmb3IgYXJ0aWNsZXMgaXMg bWFkZSwgdGhlIHBhZ2UgaGFzIGFscmVhZHkgc3RhcnRlZCB0byByZW5kZXIuIFB1dCBzaW1w bHk6IGl0IG1lYW5zIGl0IGlzIG5vdCBzaW1wbGUgdG8gcmVmaW5lIHRoaXMgcHJvY2VzcyBj b21wbGV0ZWx5LCBhbmQgYSBwbHVnaW4gdGhhdCB3b3JrcyB3ZWxsIGV2ZXJ5d2hlcmUgZWxz ZSBpcyBiZXR0ZXIgdGhhbiBvbmUgbm90IGV4aXN0aW5nIGF0IGFsbC48L3A+CgoJCTxwPlR3 bywgaXQgY2FuIGFjdHVhbGx5IGJlIG1vcmUgY29uZnVzaW5nIGFuZCBmcnVzdHJhdGluZyB0 byB0aGUgdmlzaXRvci48L3A+CgoJCTxwPkkgZG9uJiM4MjE3O3QgaGF2ZSBhbnkgcGxhbnMg dG8gY2hhbmdlIHRoaXMgYmVoYXZpb3VyIGF0IHByZXNlbnQuIDxhIGhyZWY9IiNyZWYzIiB0 aXRsZT0iSnVtcCBiYWNrIHRvIGZvb3Rub3RlICMzIHJlZmVyZW5jZSI+JiM4NjE3OzwvYT48 L3A+Cgk8L2xpPgo8L29sPgoKPHA+PGEgaHJlZj0iI3N0YXJ0IiB0aXRsZT0iSnVtcCBiYWNr IGNvbnRlbnRzIGxpc3QiPiYjODYxNzs8L2E+PC9wPiI7czo4OiJoZWxwX3JhdyI7czoxMjU0 MToiPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuLHByb2plY3Rpb24iPgo8 IS0tCnZhciB7CglwYWRkaW5nOiAwLjFlbTsKCWZvbnQtc3R5bGU6IG5vcm1hbDsKCWZvbnQt d2VpZ2h0OiBib2xkOwoJZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKCWJhY2tncm91bmQtY29s b3I6ICNlZWU7Cn0KCnRhYmxlLnVwbV90YWdfYXR0cyB7CgltYXJnaW46IDAgMCAxNXB4IDA7 Cglib3JkZXI6IDFweCBzb2xpZCAjZWVlOwoJYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsK fQoKdGFibGUudXBtX3RhZ19hdHRzIGNhcHRpb24gewoJcGFkZGluZzogMC41ZW07Cglmb250 LXdlaWdodDogYm9sZDsKCXRleHQtYWxpZ246IGxlZnQ7CgliYWNrZ3JvdW5kLWNvbG9yOiAj ZGRkOwp9Cgp0YWJsZS51cG1fdGFnX2F0dHMgdHIgewoJYm9yZGVyLWJvdHRvbTogMXB4IHNv bGlkICNlZWU7Cn0KCnRhYmxlLnVwbV90YWdfYXR0cyB0aCwgdGFibGUudXBtX3RhZ19hdHRz IHRkIHsKCW1hcmdpbjogMDsKCXBhZGRpbmc6IDAuNWVtIDFlbTsKCXZlcnRpY2FsLWFsaWdu OiB0b3A7Cn0KCnRhYmxlLnVwbV90YWdfYXR0cyB0aCB7Cglmb250LXdlaWdodDogbm9ybWFs OwoJdGV4dC1hbGlnbjogbGVmdDsKCWJhY2tncm91bmQtY29sb3I6ICNlZWU7Cn0KLS0+Cjwv c3R5bGU+Cgo8aDE+dXBtX2RhdGVfYXJjaGl2ZTwvaDE+Cgo8b2wgaWQ9InN0YXJ0Ij4KCTxs aT48YSBocmVmPSIjaW50cm8iPkludHJvPC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3NldHVw Ij5TZXR1cDwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiN0YWdzIj5OZXcgVGFnczwvYT48L2xp PgoJPGxpPjxhIGhyZWY9IiNjcmVkaXQiPkNyZWRpdCBhbmQgRGV2ZWxvcGVyIE5vdGVzPC9h PjwvbGk+Cgk8bGk+PGEgaHJlZj0iI2Zvb3Rub3RlcyI+Rm9vdG5vdGVzPC9hPjwvbGk+Cjwv b2w+CgoKCjxoMiBpZD0iaW50cm8iPkludHJvPC9oMj4KCjxwPlNpbXBsZSwgZmFzdCBhbmQg ZWZmaWNpZW50IGFydGljbGUgYXJjaGl2ZXMuPC9wPgoKCgo8aDIgaWQ9InNldHVwIj5TZXR1 cDwvaDI+Cgo8cD5CZWNhdXNlIG9mIGhvdyBUZXh0cGF0dGVybiYjODIxNztzIGVycm9yIGhh bmRsaW5nIHdvcmtzLCBpZiB5b3UgYXJlIHVzaW5nIGNsZWFuIHVybHMsIGFuZCB3aXNoIHRv IG1ha2UgdXNlIG9mIHRoZSBwbHVnaW4mIzgyMTc7cyAmIzgyMjA7c21hcnQmIzgyMjE7IG1v ZGUsIHlvdSB3aWxsIG5lZWQgdG8gdGVsbCB0aGUgcGx1Z2luIHdoZW4gaXQgc2hvdWxkICYj ODIyMDtsaXN0ZW4mIzgyMjE7IGZvciBhcmNoaXZlIHJlcXVlc3RzLiBTaW1wbHkgaGVhZCB0 byB0aGUgcGx1Z2luJiM4MjE3O3MgcHJlZmVyZW5jZXMsIGFuZCBjaGVjayBvZmYgdGhlIHNl Y3Rpb25zIHlvdSB3YW50LiBUaGlzIGlzIG5vdCBuZWNlc3NhcnkgZm9yIG1lc3N5IHVybHMu PC9wPgoKPHA+dXBtX2RhdGVfbWVudSBjYW4gb25seSBiZSB1c2VkIG9uIHRoZSBmcm9udCBw YWdlIGJ5IHVzaW5nIG1lc3N5IHVybHMuIFRoaXMgaXMgZHVlIHRvIGhvdyBUZXh0cGF0dGVy biB1bmRlcnN0YW5kcyBzZWN0aW9ucyBhbmQgdGhlIGZyb250IHBhZ2UuPC9wPgoKCgo8aDIg aWQ9InRhZ3MiPk5ldyBUYWdzPC9oMj4KCgo8dGFibGUgY2xhc3M9InVwbV90YWdfYXR0cyIg Y2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KCgk8Y2FwdGlvbj51cG1fZGF0ZV9t ZW51PC9jYXB0aW9uPgoKCTx0cj4KCQk8dGg+TmFtZTwvdGg+CgkJPHRoPkRlc2NyaXB0aW9u PC90aD4KCQk8dGg+UmVxdWlyZWQ/PC90aD4KCQk8dGg+QXZhaWxhYmxlIFZhbHVlczwvdGg+ CgkJPHRoPkRlZmF1bHQgVmFsdWU8L3RoPgoJPC90cj4KCgk8dHI+CgkJPHRkPmNhdGVnb3J5 PC90ZD4KCQk8dGQ+VGhlIGNhdGVnb3J5L2NhdGVnb3JpZXMgb2YgYXJ0aWNsZXMgdG8gaW5j bHVkZSBpbiB0aGUgYXJjaGl2ZS4gWW91IGNhbiBlaXRoZXIgaW5jbHVkZSBvciBleGNsdWRl ICh1c2luZyA8dmFyPmV4Y2x1ZGVfY2F0ZWdvcnk8L3Zhcj4pLCBidXQgbm90IGJvdGggYXQg dGhlIHNhbWUgdGltZS48L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRkPkFueSBleGlzdGluZyBj YXRlZ29yeSBuYW1lKHMpLCBjb21tYS1zZXBhcmF0ZWQuPC90ZD4KCQk8dGQ+Q3VycmVudCBj YXRlZ29yeTwvdGQ+Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+Y2xhc3M8L3RkPgoJCTx0ZD5UaGUg KFgpSFRNTC9DU1MgY2xhc3MgdG8gYXBwbHkgdG8gdGhlIGxpc3QuPC90ZD4KCQk8dGQ+Tm88 L3RkPgoJCTx0ZD5BbnkgdmFsaWQgKFgpSFRNTC9DU1MgY2xhc3MgbmFtZS48L3RkPgoJCTx0 ZD5VbnNldDwvdGQ+Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+ZXhjbHVkZV9jYXRlZ29yeTwvdGQ+ CgkJPHRkPlRoZSBjYXRlZ29yeS9jYXRlZ29yaWVzIG9mIGFydGljbGVzIHRvIGV4Y2x1ZGUg ZnJvbSB0aGUgYXJjaGl2ZS4gWW91IGNhbiBlaXRoZXIgZXhjbHVkZSBvciBpbmNsdWRlICh1 c2luZyA8dmFyPmNhdGVnb3J5PC92YXI+KSwgYnV0IG5vdCBib3RoIGF0IHRoZSBzYW1lIHRp bWUuPC90ZD4KCQk8dGQ+Tm88L3RkPgoJCTx0ZD5BbnkgZXhpc3RpbmcgY2F0ZWdvcnkgbmFt ZShzKSwgY29tbWEtc2VwYXJhdGVkLjwvdGQ+CgkJPHRkPlVuc2V0PC90ZD4KCTwvdHI+CgoJ PHRyPgoJCTx0ZD5leGNsdWRlX3NlY3Rpb248L3RkPgoJCTx0ZD5UaGUgc2VjdGlvbihzKSBv ZiBhcnRpY2xlcyB0byBleGNsdWRlIGZyb20gdGhlIGFyY2hpdmUuIFlvdSBjYW4gZWl0aGVy IGV4Y2x1ZGUgb3IgaW5jbHVkZSAodXNpbmcgPHZhcj5zZWN0aW9uPC92YXI+KSwgYnV0IG5v dCBib3RoIGF0IHRoZSBzYW1lIHRpbWUuPC90ZD4KCQk8dGQ+Tm88L3RkPgoJCTx0ZD5Bbnkg ZXhpc3Rpbmcgc2VjdGlvbiBuYW1lKHMpLCBjb21tYS1zZXBhcmF0ZWQuPC90ZD4KCQk8dGQ+ VW5zZXQ8L3RkPgoJPC90cj4KCgk8dHI+CgkJPHRkPmlkPC90ZD4KCQk8dGQ+VGhlIChYKUhU TUwvQ1NTIGlkIHRvIGFwcGx5IHRvIHRoZSBsaXN0LjwvdGQ+CgkJPHRkPk5vPC90ZD4KCQk8 dGQ+QW55IHZhbGlkIChYKUhUTUwvQ1NTIGlkLjwvdGQ+CgkJPHRkPlVuc2V0PC90ZD4KCTwv dHI+CgoJPHRyPgoJCTx0ZD5pbmNsdWRlX2V4cGlyZWQ8L3RkPgoJCTx0ZD5XaGV0aGVyIHRv IGluY2x1ZGUgZXhwaXJlZCBhcnRpY2xlcyBpbiB0aGUgbGlzdC48L3RkPgoJCTx0ZD5Obzwv dGQ+CgkJPHRkPjx2YXI+eWVzPC92YXI+IG9yIDx2YXI+bm88L3Zhcj48L3RkPgoJCTx0ZD5B ZG1pbiBwcmVmZXJlbmNlICJQdWJsaXNoIGV4cGlyZWQgYXJ0aWNsZXM/IjwvdGQ+Cgk8L3Ry PgoKCTx0cj4KCQk8dGQ+aW5zZXJ0X2VtcHR5X21vbnRoczwvdGQ+CgkJPHRkPldoZXRoZXIg dG8gaW5jbHVkZSBpbiB0aGUgbGlzdCBtb250aHMgd2l0aG91dCBhcnRpY2xlcy48L3RkPgoJ CTx0ZD5ObzwvdGQ+CgkJPHRkPjx2YXI+eWVzPC92YXI+IG9yIDx2YXI+bm88L3Zhcj48L3Rk PgoJCTx0ZD48dmFyPnllczwvdmFyPjwvdGQ+Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+bGlua190 bzwvdGQ+CgkJPHRkPlRoZSBzZWN0aW9uIHRvIGluY2x1ZGUgd2l0aGluIHRoZSBtb250aCB1 cmwuPC90ZD4KCQk8dGQ+PC90ZD4KCQk8dGQ+QW55IHZhbGlkIHNlY3Rpb24gZm9yIHdoaWNo IHlvdSBoYXZlIGVuYWJsZWQgc21hcnQgbW9kZSwgYW5kIGFsc28gY29udGFpbnMgdGhlIHVw bV9kYXRlX2FyY2hpdmUgdGFnLjwvdGQ+CgkJPHRkPkN1cnJlbnQgc2VjdGlvbjwvdGQ+Cgk8 L3RyPgoKCTx0cj4KCQk8dGQ+bW9udGhfZm9ybWF0PC90ZD4KCQk8dGQ+SG93IHRvIGZvcm1h dCB0aGUgbW9udGggZGlzcGxheS48L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRkPkFueSB2YWxp ZCA8YSBocmVmPSJodHRwOi8vcGhwLm5ldC9zdHJmdGltZSI+c3RyZnRpbWUoKSBmb3JtYXQg c3RyaW5nPC9hPi48L3RkPgoJCTx0ZD48dmFyPiViPC92YXI+PC90ZD4KCTwvdHI+CgoJPHRy PgoJCTx0ZD5yZW1haW5fbGlua2VkPC90ZD4KCQk8dGQ+V2hlbiB2aWV3aW5nIGEgbW9udGgm IzgyMTc7cyBwb3N0IGxpc3QsIHdoZXRoZXIgdG8gZGlzcGxheSB0aGUgbW9udGggYXMgYSB1 cmwgb3IgdGV4dC48L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRkPjx2YXI+eWVzPC92YXI+IG9y IDx2YXI+bm88L3Zhcj48L3RkPgoJCTx0ZD48dmFyPnllczwvdmFyPjwvdGQ+Cgk8L3RyPgoK CTx0cj4KCQk8dGQ+c2VjdGlvbjwvdGQ+CgkJPHRkPlRoZSBzZWN0aW9uKHMpIG9mIGFydGlj bGVzIHRvIGluY2x1ZGUgaW4gdGhlIGFyY2hpdmUuIFlvdSBjYW4gZWl0aGVyIGluY2x1ZGUg b3IgZXhjbHVkZSAodXNpbmcgPHZhcj5leGNsdWRlX3NlY3Rpb248L3Zhcj4pLCBidXQgbm90 IGJvdGggYXQgdGhlIHNhbWUgdGltZS48L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRkPkFueSBl eGlzdGluZyBzZWN0aW9uIG5hbWUocyksIGNvbW1hLXNlcGFyYXRlZC48L3RkPgoJCTx0ZD5D dXJyZW50IHNlY3Rpb248L3RkPgoJPC90cj4KCgk8dHI+CgkJPHRkPnNob3dfYXJ0aWNsZV9j b3VudDwvdGQ+CgkJPHRkPldoZXRoZXIgdG8gZGlzcGxheSB0aGUgY291bnQgb2YgdGhlIG51 bWJlciBvZiBhcnRpY2xlcyBmb3IgYSBnaXZlbiBtb250aC4gSWYgZW5hYmxlZCwgbW9udGhz IHdpdGggYW55IGFydGljbGVzIGluIHRoZW0gZGlzcGxheSB0aGUgbnVtYmVyIGluIHBhcmVu dGhlc2lzIGFmdGVyIHRoZSBtb250aCBuYW1lLjwvdGQ+CgkJPHRkPk5vPC90ZD4KCQk8dGQ+ PHZhcj55ZXM8L3Zhcj4gb3IgPHZhcj5ubzwvdmFyPjwvdGQ+CgkJPHRkPjx2YXI+bm88L3Zh cj48L3RkPgoJPC90cj4KCgk8dHI+CgkJPHRkPnNvcnQ8L3RkPgoJCTx0ZD48L3RkPgoJCTx0 ZD5ObzwvdGQ+CgkJPHRkPjx2YXI+dGhlX21vbnRoPC92YXI+IG9yIDx2YXI+dGhlX3llYXI8 L3Zhcj4sIDx2YXI+YXNjPC92YXI+IG9yIDx2YXI+ZGVzYzwvdmFyPjwvdGQ+CgkJPHRkPjx2 YXI+dGhlX3llYXIgZGVzYywgdGhlX21vbnRoIGFzYzwvdmFyPjwvdGQ+Cgk8L3RyPgoKCTx0 cj4KCQk8dGQ+dGltZTwvdGQ+CgkJPHRkPlJlc3RyaWN0IGJ5IGRhdGUvdGltZSBwb3N0ZWQu PC90ZD4KCQk8dGQ+Tm88L3RkPgoJCTx0ZD48dmFyPnBhc3Q8L3Zhcj4sIDx2YXI+ZnV0dXJl PC92YXI+IG9yIDx2YXI+YW55PC92YXI+PC90ZD4KCQk8dGQ+PHZhcj5wYXN0PC92YXI+PC90 ZD4KCTwvdHI+CgoJPHRyPgoJCTx0ZD55ZWFyX2Zvcm1hdDwvdGQ+CgkJPHRkPkhvdyB0byBm b3JtYXQgdGhlIHllYXIgaGVhZGluZyBkaXNwbGF5LjwvdGQ+CgkJPHRkPk5vPC90ZD4KCQk8 dGQ+QW55IHZhbGlkIDxhIGhyZWY9Imh0dHA6Ly9waHAubmV0L3N0cmZ0aW1lIj5zdHJmdGlt ZSgpIGZvcm1hdCBzdHJpbmc8L2E+LjwvdGQ+CgkJPHRkPjx2YXI+JVk8L3Zhcj48L3RkPgoJ PC90cj4KPC90YWJsZT4KCgo8dGFibGUgY2xhc3M9InVwbV90YWdfYXR0cyIgY2VsbHBhZGRp bmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KCgk8Y2FwdGlvbj51cG1fZGF0ZV9hcmNoaXZlPC9j YXB0aW9uPgoKCTx0cj4KCQk8dGg+TmFtZTwvdGg+CgkJPHRoPkRlc2NyaXB0aW9uPC90aD4K CQk8dGg+UmVxdWlyZWQ/PC90aD4KCQk8dGg+QXZhaWxhYmxlIFZhbHVlczwvdGg+CgkJPHRo PkRlZmF1bHQgVmFsdWU8L3RoPgoJPC90cj4KCgk8dHI+CgkJPHRkPmNhdGVnb3J5PC90ZD4K CQk8dGQ+VGhlIGNhdGVnb3J5L2NhdGVnb3JpZXMgb2YgYXJ0aWNsZXMgdG8gaW5jbHVkZSBp biB0aGUgYXJjaGl2ZS4gWW91IGNhbiBlaXRoZXIgaW5jbHVkZSBvciBleGNsdWRlICh1c2lu ZyA8dmFyPmV4Y2x1ZGVfY2F0ZWdvcnk8L3Zhcj4pLCBidXQgbm90IGJvdGggYXQgdGhlIHNh bWUgdGltZS48L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRkPkFueSBleGlzdGluZyBjYXRlZ29y eSBuYW1lKHMpLCBjb21tYS1zZXBhcmF0ZWQuPC90ZD4KCQk8dGQ+Q3VycmVudCBjYXRlZ29y eTwvdGQ+Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+ZGF0ZV9mb3JtYXQ8L3RkPgoJCTx0ZD5JZiBp bmNsdWRpbmcgdGhlIGRhdGUgd2l0aCA8dmFyPmluY2x1ZGVfZGF0ZTwvdmFyPiBhdHRyaWJ1 dGUsIGhvdyB0byBmb3JtYXQgdGhlIGRhdGUgZGlzcGxheSBmb3IgZGFjaCBkYXkuPC90ZD4K CQk8dGQ+Tm88L3RkPgoJCTx0ZD5BbnkgdmFsaWQgPGEgaHJlZj0iaHR0cDovL3BocC5uZXQv c3RyZnRpbWUiPnN0cmZ0aW1lKCkgZm9ybWF0IHN0cmluZzwvYT4uPC90ZD4KCQk8dGQ+PHZh cj4lZTwvdmFyPjxzdXA+PGEgaHJlZj0iI2ZuMSIgaWQ9InJlZjEiPjE8L2E+PC9zdXA+PC90 ZD4KCTwvdHI+CgoJPHRyPgoJCTx0ZD5leGNsdWRlX2NhdGVnb3J5PC90ZD4KCQk8dGQ+VGhl IGNhdGVnb3J5L2NhdGVnb3JpZXMgb2YgYXJ0aWNsZXMgdG8gZXhjbHVkZSBmcm9tIHRoZSBh cmNoaXZlLiBZb3UgY2FuIGVpdGhlciBleGNsdWRlIG9yIGluY2x1ZGUgKHVzaW5nIDx2YXI+ Y2F0ZWdvcnk8L3Zhcj4pLCBidXQgbm90IGJvdGggYXQgdGhlIHNhbWUgdGltZS48L3RkPgoJ CTx0ZD5ObzwvdGQ+CgkJPHRkPkFueSBleGlzdGluZyBjYXRlZ29yeSBuYW1lKHMpLCBjb21t YS1zZXBhcmF0ZWQuPC90ZD4KCQk8dGQ+VW5zZXQ8L3RkPgoJPC90cj4KCgk8dHI+CgkJPHRk PmV4Y2x1ZGVfc2VjdGlvbjwvdGQ+CgkJPHRkPlRoZSBzZWN0aW9uKHMpIG9mIGFydGljbGVz IHRvIGV4Y2x1ZGUgZnJvbSB0aGUgYXJjaGl2ZS4gWW91IGNhbiBlaXRoZXIgZXhjbHVkZSBv ciBpbmNsdWRlICh1c2luZyA8dmFyPnNlY3Rpb248L3Zhcj4pLCBidXQgbm90IGJvdGggYXQg dGhlIHNhbWUgdGltZS48L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRkPkFueSBleGlzdGluZyBz ZWN0aW9uIG5hbWUocyksIGNvbW1hLXNlcGFyYXRlZC48L3RkPgoJCTx0ZD5VbnNldDwvdGQ+ Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+Zm9ybTwvdGQ+CgkJPHRkPkZvcm0gdG8gdXNlIGZvciBk aXNwbGF5aW5nIGVhY2ggYXJ0aWNsZSB3aXRoaW4gdGhlIGxpc3QuPC90ZD4KCQk8dGQ+Tm88 L3RkPgoJCTx0ZD5BbnkgZXhpc3RpbmcgYXJ0aWNsZSBmb3JtLjwvdGQ+CgkJPHRkPlVuc2V0 PC90ZD4KCTwvdHI+CgoJPHRyPgoJCTx0ZD5oZWFkaW5nX2NsYXNzPC90ZD4KCQk8dGQ+VGhl IChYKUhUTUwvQ1NTIGNsYXNzIHRvIGFwcGx5IHRvIHRoZSBtb250aC95ZWFyIGhlYWRpbmcu PC90ZD4KCQk8dGQ+Tm88L3RkPgoJCTx0ZD5BbnkgdmFsaWQgKFgpSFRNTC9DU1MgY2xhc3Mg bmFtZS48L3RkPgoJCTx0ZD5VbnNldDwvdGQ+Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+aGVhZGlu Z19mb3JtYXQ8L3RkPgoJCTx0ZD5Ib3cgdG8gZm9ybWF0IHRoZSBtb250aC95ZWFyIGhlYWRp bmcgZGF0ZSBkaXNwbGF5LjwvdGQ+CgkJPHRkPk5vPC90ZD4KCQk8dGQ+QW55IHZhbGlkIDxh IGhyZWY9Imh0dHA6Ly9waHAubmV0L3N0cmZ0aW1lIj5zdHJmdGltZSgpIGZvcm1hdCBzdHJp bmc8L2E+PC90ZD4KCQk8dGQ+PHZhcj4lQiAlWTwvdmFyPjwvdGQ+Cgk8L3RyPgoKCTx0cj4K CQk8dGQ+aGVhZGluZ19pZDwvdGQ+CgkJPHRkPlRoZSAoWClIVE1ML0NTUyBpZCB0byBhcHBs eSB0byB0aGUgbW9udGgveWVhciBoZWFkaW5nLjwvdGQ+CgkJPHRkPk5vPC90ZD4KCQk8dGQ+ QW55IHZhbGlkIChYKUhUTUwvQ1NTIGlkLjwvdGQ+CgkJPHRkPlVuc2V0PC90ZD4KCTwvdHI+ CgoJPHRyPgoJCTx0ZD5oZWFkaW5nX2xldmVsPC90ZD4KCQk8dGQ+VGhlIGxldmVsIG9mIChY KUhUTUwgaGVhZGluZyBlbGVtZW50IHRvIHVzZS48L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRk Pjx2YXI+MTwvdmFyPiAmIzgyMTE7IDx2YXI+NjwvdmFyPiAoaDEgJiM4MjExOyBoNik8L3Rk PgoJCTx0ZD5TbWFydCBtb2RlOiA8dmFyPjE8L3Zhcj4gKGgxIGVsZW1lbnQpPGJyIC8+PGJy IC8+RnVsbCBtb2RlOiA8dmFyPjI8L3Zhcj4gKGgyIGVsZW1lbnQpPC90ZD4KCTwvdHI+CgoJ PHRyPgoJCTx0ZD5pbmNsdWRlX2RhdGU8L3RkPgoJCTx0ZD5XaGV0aGVyIHRvIGxpc3QgaW5k aXZpZHVhbCBkYXkgZGF0ZXMuPC90ZD4KCQk8dGQ+Tm88L3RkPgoJCTx0ZD48dmFyPnllczwv dmFyPiAob3V0cHV0cyBkZWZpbml0aW9uIGxpc3QpIG9yIDx2YXI+bm88L3Zhcj4gKG91dHB1 dHMgdW5vcmRlcmVkIGxpc3QpLgoJCTx0ZD48dmFyPnllczwvdmFyPjwvdGQ+Cgk8L3RyPgoK CTx0cj4KCQk8dGQ+aW5jbHVkZV9leHBpcmVkPC90ZD4KCQk8dGQ+V2hldGhlciB0byBpbmNs dWRlIGV4cGlyZWQgYXJ0aWNsZXMgaW4gdGhlIGxpc3QuPC90ZD4KCQk8dGQ+Tm88L3RkPgoJ CTx0ZD48dmFyPnllczwvdmFyPiBvciA8dmFyPm5vPC92YXI+PC90ZD4KCQk8dGQ+QWRtaW4g cHJlZmVyZW5jZSAiUHVibGlzaCBleHBpcmVkIGFydGljbGVzPyI8L3RkPgoJPC90cj4KCgk8 dHI+CgkJPHRkPmxpc3RfY2xhc3M8L3RkPgoJCTx0ZD5UaGUgKFgpSFRNTC9DU1MgY2xhc3Mg dG8gYXBwbHkgdG8gdGhlIGFydGljbGUgbGlzdC48L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRk PkFueSB2YWxpZCAoWClIVE1ML0NTUyBjbGFzcyBuYW1lLjwvdGQ+CgkJPHRkPlVuc2V0PC90 ZD4KCTwvdHI+CgoJPHRyPgoJCTx0ZD5saXN0X2lkPC90ZD4KCQk8dGQ+VGhlIChYKUhUTUwv Q1NTIGlkIHRvIGFwcGx5IHRvIHRoZSBhcnRpY2xlIGxpc3QuPC90ZD4KCQk8dGQ+Tm88L3Rk PgoJCTx0ZD5BbnkgdmFsaWQgKFgpSFRNTC9DU1MgaWQuPC90ZD4KCQk8dGQ+VW5zZXQ8L3Rk PgoJPC90cj4KCgk8dHI+CgkJPHRkPm1vZGU8L3RkPgoJCTx0ZD5Ib3cgdG8gZGlzcGxheSB0 aGUgbGlzdC48L3RkPgoJCTx0ZD5ObzwvdGQ+CgkJPHRkPjx2YXI+c21hcnQ8L3Zhcj4gKGVh Y2ggbW9udGggbGlzdCBhcyByZXF1ZXN0ZWQpIG9yIDx2YXI+ZnVsbDwvdmFyPiAoY29tcGxl dGUgbGlzdCBhdCBvbmNlPHN1cD48YSBocmVmPSIjZm4yIiBpZD0icmVmMiI+MjwvYT48L3N1 cD4pPC90ZD4KCQk8dGQ+PHZhcj5zbWFydDwvdmFyPjwvdGQ+Cgk8L3RyPgoKCTx0cj4KCQk8 dGQ+bm9uZV9mb3VuZDwvdGQ+CgkJPHRkPlRoZSBuYW1lIG9mIHRoZSBmb3JtIHRvIHJldHVy biBpZiBhIHJlcXVlc3QgaXMgbWFkZSBmb3IgYSBtb250aCB3aGVyZSBubyBhcnRpY2xlcyBl eGlzdC48c3VwPjxhIGhyZWY9IiNmbjMiIGlkPSJyZWYzIj4zPC9hPjwvc3VwPiBUaGlzIGNh biBiZSB1c2VkIHRvIHJldHVybiBhIGN1c3RvbSBtZXNzYWdlIHRvIHRoZSB2aXNpdG9yLjxi ciAvPjxiciAvPlRoZSBkZWZhdWx0IG1lc3NhZ2UgcmV0dXJuZWQgaXM6PGJyIC8+JiM4MjIw O05vIHBvc3RzIGNvdWxkIGJlIGZvdW5kIGZvciB0aGUgcmVxdWVzdGVkIG1vbnRoLiYjODIy MTs8YnIgLz48YnIgLz5BcHBsaWVzIDxzdHJvbmc+b25seTwvc3Ryb25nPiB3aGVuIHVzaW5n IHRoZSBwbHVnaW4gaW4gJiM4MjIwO3NtYXJ0IG1vZGUmIzgyMjE7LjwvdGQ+CgkJPHRkPk5v PC90ZD4KCQk8dGQ+QW55IGV4aXN0aW5nIGZvcm0gbmFtZS48L3RkPgoJCTx0ZD5VbnNldDwv dGQ+Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+c2VjdGlvbjwvdGQ+CgkJPHRkPlRoZSBzZWN0aW9u KHMpIG9mIGFydGljbGVzIHRvIGluY2x1ZGUgaW4gdGhlIGFyY2hpdmUuIFlvdSBjYW4gZWl0 aGVyIGluY2x1ZGUgb3IgZXhjbHVkZSAodXNpbmcgPHZhcj5leGNsdWRlX3NlY3Rpb248L3Zh cj4pLCBidXQgbm90IGJvdGggYXQgdGhlIHNhbWUgdGltZS48L3RkPgoJCTx0ZD5Oby48L3Rk PgoJCTx0ZD5BbnkgZXhpc3Rpbmcgc2VjdGlvbiBuYW1lKHMpLCBjb21tYS1zZXBhcmF0ZWQu PC90ZD4KCQk8dGQ+Q3VycmVudCBzZWN0aW9uPC90ZD4KCTwvdHI+CgoJPHRyPgoJCTx0ZD5z b3J0PC90ZD4KCQk8dGQ+SG93IHRvIHNvcnQgdGhlIGFyY2hpdmUgbGlzdC48L3RkPgoJCTx0 ZD5ObzwvdGQ+CgkJPHRkPjx2YXI+dGhlX3llYXI8L3Zhcj4sIDx2YXI+dGhlX21vbnRoPC92 YXI+LCA8dmFyPnRoZV9kYXRlPC92YXI+IChmdWxsIHRpbWVzdGFtcCkuPC90ZD4KCQk8dGQ+ CgkJCVNtYXJ0IG1vZGU6IDx2YXI+dGhlX2RhdGUgYXNjPC92YXI+PGJyIC8+PGJyIC8+CgkJ CUZ1bGwgbW9kZTogPHZhcj50aGVfeWVhciBkZXNjLCB0aGVfbW9udGggZGVzYywgdGhlX2Rh dGUgYXNjPC92YXI+LgoJCTwvdGQ+Cgk8L3RyPgoKCTx0cj4KCQk8dGQ+dGltZTwvdGQ+CgkJ PHRkPlJlc3RyaWN0IGJ5IGRhdGUvdGltZSBwb3N0ZWQuPC90ZD4KCQk8dGQ+Tm88L3RkPgoJ CTx0ZD48dmFyPnBhc3Q8L3Zhcj4sIDx2YXI+ZnV0dXJlPC92YXI+IG9yIDx2YXI+YW55PC92 YXI+PC90ZD4KCQk8dGQ+PHZhcj5wYXN0PC92YXI+PC90ZD4KCTwvdHI+Cgo8L3RhYmxlPgoK PHA+PGEgaHJlZj0iI3N0YXJ0IiB0aXRsZT0iSnVtcCBiYWNrIGNvbnRlbnRzIGxpc3QiPiYj ODYxNzs8L2E+PC9wPgoKCgo8aDIgaWQ9ImNyZWRpdC1zZWN0aW9uIj5DcmVkaXQgYW5kIERl dmVsb3BlciBOb3RlczwvaDI+Cgo8cD5NdWNoIHRoYW5rcyB0byBTZW5jZXIgZm9yIGhlbHBp bmcgbWUgb3V0IHdpdGggd29ya2luZyBhcm91bmQgVGV4dHBhdHRlcm4mIzgyMTc7cyBlcnJv ciBoYW5kbGluZywgdXBvbiB3aGljaCB0aGUgJiM4MjIwO3NtYXJ0IG1vZGUmIzgyMjE7IGZl YXR1cmUgcmVzdHMuPC9wPgoKPHA+V2hpbGUgb3RoZXIgcGx1Z2lucyBzaW1pbGFyIGluIGZv Y3VzIG9yIGZlYXR1cmVzIGNhbiBiZSBmb3VuZCwgc3VjaCBhcyA8YSBocmVmPSJodHRwOi8v d3d3LndpbHNoaXJlb25lLmNvbS90ZXh0cGF0dGVybi1wbHVnaW5zL3Jzcy1zdXBhcmNoaXZl Ij5Sb2IgU2FibGUmIzgyMTc7cyByc3Nfc3VwYXJjaGl2ZTwvYT4sIHRoaXMgcGx1Z2luIGlz IGFuIGVudGlyZWx5IG9yaWdpbmFsIHdvcmssIGJ1aWx0IGZyb20gdGhlIGJvdHRvbS11cCBi eSBteXNlbGYuPC9wPgoKPHA+PGEgaHJlZj0iI3N0YXJ0IiB0aXRsZT0iSnVtcCBiYWNrIGNv bnRlbnRzIGxpc3QiPiYjODYxNzs8L2E+PC9wPgoKPGgyIGlkPSJmb290bm90ZS1zZWN0aW9u Ij5Gb290bm90ZXM8L2gyPgoKPG9sPgoJPGxpIGlkPSJmbjEiPldpbmRvd3MgZG9lcyBub3Qg dW5kZXJzdGFuZCA8dmFyPiVlPC92YXI+LCBzbyBpdHMgZGVmYXVsdCBpcyA8dmFyPiVkPC92 YXI+LiA8YSBocmVmPSIjcmVmMSIgdGl0bGU9Ikp1bXAgYmFjayB0byBmb290bm90ZSAjMSBy ZWZlcmVuY2UiPiYjODYxNzs8L2E+PC9saT4KCgk8bGkgaWQ9ImZuMiI+SSBhZHZpc2UgdG8g YXZvaWQgdXNpbmcgJiM4MjIwO2Z1bGwmIzgyMjE7IG1vZGUgZm9yIHZlcnkgbGFyZ2UgYXJj aGl2ZXMuIFdoaWxlIEkmIzgyMTc7dmUgdGFrZW4gY2FyZSB0byBrZWVwIHRoZSBxdWVyaWVz IGFzIGVmZmljaWVudCBhcyBwb3NzaWJsZSwgdGhlIGxhcmdlciB5b3Uga2VlcCB0aGlzIGxp c3QsIHRoZSBsb25nZXIgaXQgd2lsbCB0YWtlIHRvIGxvYWQgaXQuIFVzZSB5b3VyIGJlc3Qg anVkZ2VtZW50LCBhbmQgcmVtZW1iZXIgdGhhdCBJIGNhbm5vdCBiZSBoZWxkIHJlc3BvbnNp YmxlIGZvciBpbXByb3BlciB1c2Ugb2YgdGhlIHBsdWdpbiAobGlrZSBjYWxsaW5nIGl0IG11 bHRpcGxlIHRpbWVzIG9uIG9uZSBwYWdlKS4gSWYgaW4gZG91YnQgYWJvdXQgaXQsIGFzayB5 b3VyIGhvc3QuIDxhIGhyZWY9IiNyZWYyIiB0aXRsZT0iSnVtcCBiYWNrIHRvIGZvb3Rub3Rl ICMyIHJlZmVyZW5jZSI+JiM4NjE3OzwvYT48L2xpPgoKCTxsaSBpZD0iZm4zIj4KCQk8cD5X aGVuIGxpc3RpbmcgYXJ0aWNsZXMgaW4gJiM4MjIwO3NtYXJ0IG1vZGUmIzgyMjE7LCBubyBp bnZhbGlkIHVybHMgYXJlIGdlbmVyYXRlZC4gSG93ZXZlciwgaW4gdGhlIGV2ZW50IG9mIGEg dmlzaXRvciBhdHRlbXB0aW5nIHRvIHZpZXcgb3RoZXIgYXJjaGl2ZSBkYXRlcywgb25lIGNv dWxkIG1ha2UgYSByZXF1ZXN0IGZvciBhIG1vbnRoIHdpdGggbm8gYXJ0aWNsZXMuPC9wPgoK CQk8cD5JIGRlY2lkZWQgYWdhaW5zdCByZXR1cm5pbmcgYSA0MDQgZXJyb3IsIGZvciBhIGNv dXBsZSByZWFzb25zOjwvcD4KCgkJPHA+T25lLCBUZXh0cGF0dGVybiYjODIxNztzIGVycm9y IGhhbmRsaW5nIGlzIHN1Y2ggdGhhdCwgaW4gb3JkZXIgZm9yICYjODIyMDtzbWFydCBtb2Rl JiM4MjIxOyB0byB3b3JrIGNvcnJlY3RseSwgYSBwbHVnaW4gbXVzdCAmIzgyMjA7Zm9vbCYj ODIyMTsgVGV4dHBhdHRlcm4gaW50byB0aGlua2luZyByZXF1ZXN0cyB1bmRlciBjZXJ0YWlu IGNpcmN1bXN0YW5jZXMgYXJlIHZhbGlkLCBleGlzdGluZyBkb2N1bWVudHMuIEJ5IHRoZSB0 aW1lIHRoZSBhY3R1YWwgcmVxdWVzdCBmb3IgYXJ0aWNsZXMgaXMgbWFkZSwgdGhlIHBhZ2Ug aGFzIGFscmVhZHkgc3RhcnRlZCB0byByZW5kZXIuIFB1dCBzaW1wbHk6IGl0IG1lYW5zIGl0 IGlzIG5vdCBzaW1wbGUgdG8gcmVmaW5lIHRoaXMgcHJvY2VzcyBjb21wbGV0ZWx5LCBhbmQg YSBwbHVnaW4gdGhhdCB3b3JrcyB3ZWxsIGV2ZXJ5d2hlcmUgZWxzZSBpcyBiZXR0ZXIgdGhh biBvbmUgbm90IGV4aXN0aW5nIGF0IGFsbC48L3A+CgoJCTxwPlR3bywgaXQgY2FuIGFjdHVh bGx5IGJlIG1vcmUgY29uZnVzaW5nIGFuZCBmcnVzdHJhdGluZyB0byB0aGUgdmlzaXRvci48 L3A+CgoJCTxwPkkgZG9uJiM4MjE3O3QgaGF2ZSBhbnkgcGxhbnMgdG8gY2hhbmdlIHRoaXMg YmVoYXZpb3VyIGF0IHByZXNlbnQuIDxhIGhyZWY9IiNyZWYzIiB0aXRsZT0iSnVtcCBiYWNr IHRvIGZvb3Rub3RlICMzIHJlZmVyZW5jZSI+JiM4NjE3OzwvYT48L3A+Cgk8L2xpPgo8L29s PgoKPHA+PGEgaHJlZj0iI3N0YXJ0IiB0aXRsZT0iSnVtcCBiYWNrIGNvbnRlbnRzIGxpc3Qi PiYjODYxNzs8L2E+PC9wPiI7czoxNToiYWxsb3dfaHRtbF9oZWxwIjtpOjE7czozOiJtZDUi O3M6MzI6IjNiMTBlNzE1NjcyNGM3YzdhYThjNTZiYzlhODkwZTY1Ijt9