# ajw_comments_feed v0.6 # Extends RSS & Atom to allow for comments feeds. # http://compooter.org/ # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YToxMTp7czo0OiJuYW1lIjtzOjE3OiJhandfY29tbWVudHNfZmVlZCI7czo3OiJ2ZXJzaW9u IjtzOjM6IjAuNiI7czo2OiJhdXRob3IiO3M6MTE6IkFuZHJldyBXYWVyIjtzOjEwOiJhdXRo b3JfdXJpIjtzOjIxOiJodHRwOi8vY29tcG9vdGVyLm9yZy8iO3M6MTE6ImRlc2NyaXB0aW9u IjtzOjQ3OiJFeHRlbmRzIFJTUyAmIEF0b20gdG8gYWxsb3cgZm9yIGNvbW1lbnRzIGZlZWRz LiI7czo0OiJ0eXBlIjtpOjA7czo0OiJoZWxwIjtzOjE0NDQ6Igk8aDI+U3VtbWFyeTwvaDI+ Cgk8cD5FeHRlbmRzIFJTUyAmIzM4OyBBdG9tIGZ1bmN0aW9uYWxpdHkgdG8gYWxsb3cgZm9y IHNpdGV3aWRlLCBwZXItc2VjdGlvbiwgcGVyLWNhdGVnb3J5LCBvciBwZXItYXJ0aWNsZSBj b21tZW50cyBmZWVkcy4gIEl0IHdvcmtzIGV4YWN0bHkgbGlrZSBub3JtYWwgZmVlZCB1cmxz LCBidXQgbGlzdGVucyBmb3IgPGNvZGU+JyYjMzg7YXJlYT1jb21tZW50cyc8L2NvZGU+LiBG b3IgZXhhbXBsZSwgPGNvZGU+aHR0cDovL2RvbWFpbi50bGQvP3Jzcz0xJiMzODthcmVhPWNv bW1lbnRzPC9jb2RlPiBPUiA8Y29kZT5odHRwOi8vZG9tYWluLnRsZC8/cnNzPTEmIzM4O2Fy ZWE9Y29tbWVudHMmIzM4O2lkPTEyMzwvY29kZT4uPC9wPgoJPGgyPlNldHVwPC9oMj4KCTxw Pk5vIHNldHVwIG5lZWRlZC4gIFNpbXBseSBpbnN0YWxsICYjMzg7IGFjdGl2YXRlIHRoZSBw bHVnaW4gYW5kICYjODIxMjsgPGVtPnZvaWxhITwvZW0+ICYjODIxMjsgeW91ciBjb21tZW50 IGZlZWRzIGFyZSBnb29kIHRvIGdvLjwvcD4KCTxoMj5handfY29tbWVudHNfZmVlZF9saW5r PC9oMj4KCTxwPkZ1bmN0aW9ucyBleGFjdGx5IGFzIDxjb2RlPiZsdDt0eHA6ZmVlZF9saW5r IC8mZ3Q7PC9jb2RlPi4gIEFjY2VwYWJsZSBhdHRyaWJ1dGVzIGluY2x1ZGU6IDxjb2RlPnNp dGV3aWRlPC9jb2RlPiwgPGNvZGU+d3JhcHRhZzwvY29kZT4sIDxjb2RlPmxpbWl0PC9jb2Rl PiwgPGNvZGU+Zmxhdm9yPC9jb2RlPiwgPGNvZGU+bGFiZWw8L2NvZGU+LCAmIzM4OyA8Y29k ZT50aXRsZTwvY29kZT48L3A+Cgk8cD5UaGUgPGNvZGU+c2l0ZXdpZGU8L2NvZGU+IGF0dHJp YnV0ZSBhbGxvd3MgeW91IHRvIHVzZSBhIGNvbW1lbnRzIGZlZWQgbGluayBpbiBhIHRlbXBs YXRlIHRoYXQgYWx3YXlzIHJlZmVycyB0byBhIHNpdGV3aWRlIGZlZWQgbGluaywgcmF0aGVy IHRoYW4gYXJ0aWNsZS1zcGVjaWZpYy4gIEZvciBpbnN0YW5jZSwgPGNvZGU+c2l0ZXdpZGU9 InkiPC9jb2RlPiB3aWxsIGNhdXNlIGFuIFJTUyBmZWVkIGxpbmsgdXJsIHRvIGJlY29tZSA8 Y29kZT5odHRwOi8vc2l0ZS50bGQvP3Jzcz0xJiMzODthcmVhPWNvbW1lbnRzPC9jb2RlPiAo bm8gPGNvZGU+aWQ8L2NvZGU+IHZhcmlhYmxlKS48L3A+Cgk8aDI+RGlzY2xhaW1lcjwvaDI+ Cgk8cD5UaGlzIGZ1bmN0aW9uIHVzZXMgZmVlZCBmb3JtYXR0aW5nIGNvZGUtYmFzZSBmcm9t IFRleHRwYXR0ZXJuIDxhIGhyZWY9Imh0dHA6Ly9kZXYudGV4dHBhdHRlcm4uY29tL2Jyb3dz ZXIvZGV2ZWxvcG1lbnQvNC4wLz9yZXY9MTY4MiI+djQuMC40IHIxNjgyPC9hPiwgdGh1cyA8 c3Ryb25nPmFueSBwcm9ibGVtcyBvciBidWdzIHRoYXQgZXhpc3QgaW4gVGV4dHBhdHRlcm4m IzgyMTc7cyBSU1MvQXRvbSBvdXRwdXQgd2lsbCBiZSBjb250YWluZWQgd2l0aGluIHRoaXMg cGx1Z2luPC9zdHJvbmc+LjwvcD4KCiAiO3M6NDoiY29kZSI7czoxMzE5ODoiCglAaW5jbHVk ZV9wbHVnaW4oJ2Fqd19jbGVhbl9mZWVkJyk7CgoJaWYgKEB0eHBpbnRlcmZhY2UgPT0gJ3B1 YmxpYycpCgkJcmVnaXN0ZXJfY2FsbGJhY2soImFqd19jb21tZW50c19mZWVkIiwgJ3ByZXRl eHQnKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KCWZ1bmN0aW9uIGFqd19jb21tZW50c19mZWVkKCkKCXsKCQlp ZiAoZ3BzKCdyc3MnKSAmJiBncHMoJ2FyZWEnKSA9PSAnY29tbWVudHMnKQoJCQlleGl0KGFq d19jb21tZW50c19mZWVkX3JzcygpKTsKCgkJaWYgKGdwcygnYXRvbScpICYmIGdwcygnYXJl YScpID09ICdjb21tZW50cycpCgkJCWV4aXQoYWp3X2NvbW1lbnRzX2ZlZWRfYXRvbSgpKTsK CX0KCi8vICB0ZW1wbGF0ZSB0YWcsIHdoaWNoIG91dHB1dHMgbGluayB0byBjb21tZW50cyBm ZWVkCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KICAgIGZ1bmN0aW9uIGFqd19jb21tZW50c19mZWVkX2xpbmsoJGF0 dHMpCiAgICB7CgkJZ2xvYmFsICRpZDsKCgkJZXh0cmFjdChsQXR0cyhhcnJheSgKCQkgICAg J2xhYmVsJyAgICA9PiAnQ29tbWVudHMgWE1MIGZlZWQnLAoJCQknd3JhcHRhZycgID0+ICcn LAoJCQknbGltaXQnICAgID0+ICcnLAoJCQknZmxhdm9yJyAgID0+ICdyc3MnLAoJCQkndGl0 bGUnICAgID0+ICdDb21tZW50cyBYTUwgZmVlZCcsCgkJCSdzaXRld2lkZScgPT4gJ24nCgkJ KSwkYXR0cykpOwoKICAgICAgICAkYWlkICAgPSAoJGlkICYmICRzaXRld2lkZT09J24nKSA/ IGEuJ2lkPScuJGlkIDogJyc7CgkJJGxpbWl0ID0gKCRsaW1pdCkgPyBhLidsaW1pdD0nLnVy bGVuY29kZSgkbGltaXQpIDogJyc7CgoJCSRvdXQgPSAnPGEgaHJlZj0iJy5odS4nPycuJGZs YXZvci4nPTEnLmEuJ2FyZWE9Y29tbWVudHMnLiRhaWQuCgkJCSRsaW1pdC4nIiB0aXRsZT0i Jy4kdGl0bGUuJyI+Jy4kbGFiZWwuJzwvYT4nOwoKCQlyZXR1cm4gKCR3cmFwdGFnKSA/IHRh Zygkb3V0LCR3cmFwdGFnKSA6ICRvdXQ7CiAgICB9CgovLyAgYmFzZWQgb24gcnNzLnBocCAt PiByc3MoKSByMTIyOAovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCglmdW5jdGlvbiBhandfY29tbWVudHNfZmVlZF9y c3MoKQoJewoJCWluY2x1ZGUgdHhwYXRoLicvcHVibGlzaC9yc3MucGhwJzsKCgkJZ2xvYmFs ICRwcmVmcywkdGhpc2FydGljbGU7CgkJZXh0cmFjdCgkcHJlZnMpOwoKCQlleHRyYWN0KGRv U2xhc2goZ3BzYShhcnJheSgnY2F0ZWdvcnknLCdzZWN0aW9uJywnbGltaXQnLCdpZCcpKSkp OwoKCQkkY3RpdGxlID0gKCRpZCkgPyAnIC0gJy5mZXRjaCgnVGl0bGUnLCd0ZXh0cGF0dGVy bicsJ0lEJywkaWQpIDogJyc7CgoJCSRzaXRlbmFtZSAuPSAnIENvbW1lbnRzJy4kY3RpdGxl OwoJCSRzaXRlbmFtZSAuPSAoJHNlY3Rpb24pID8gJyAtICcuJHNlY3Rpb24gOiAnJzsKCQkk c2l0ZW5hbWUgLj0gKCRjYXRlZ29yeSkgPyAnIC0gJy4kY2F0ZWdvcnkgOiAnJzsKCQkkZG4g PSBleHBsb2RlKCcvJywkc2l0ZXVybCk7CgkJJG1haWxfb3JfZG9tYWluID0gKCR1c2VfbWFp bF9vbl9mZWVkc19pZCk/IGVFKCRibG9nX21haWxfdWlkKTokZG5bMF07CgoJCSRvdXRbXSA9 IHRhZygnaHR0cDovL3RleHRwYXR0ZXJuLmNvbS8/dj0nLiR2ZXJzaW9uLCAnZ2VuZXJhdG9y Jyk7CgkJJG91dFtdID0gdGFnKGRvU3BlY2lhbCgkc2l0ZW5hbWUpLCd0aXRsZScpOwoJCSRv dXRbXSA9IHRhZyhodSwnbGluaycpOwoJCSRvdXRbXSA9IHRhZyhkb1NwZWNpYWwoJHNpdGVf c2xvZ2FuKSwnZGVzY3JpcHRpb24nKTsKCQkkbGFzdCA9IGZldGNoKCd1bml4X3RpbWVzdGFt cCh2YWwpJywndHhwX3ByZWZzJywnbmFtZScsJ2xhc3Rtb2QnKTsKCQkkb3V0W10gPSB0YWco c2FmZV9zdHJmdGltZSgncmZjODIyJywkbGFzdCksJ3B1YkRhdGUnKTsKCgkJJGFydGljbGVz ID0gYXJyYXkoKTsKCiAgICAgICAgJHNmaWx0ZXIgPSAoJHNlY3Rpb24pID8gImFuZCBTZWN0 aW9uPSciLiRzZWN0aW9uLiInIiA6ICcnOwoJCSRjZmlsdGVyID0gKCRjYXRlZ29yeSkKCQkJ PyAiYW5kIChDYXRlZ29yeTE9JyIuJGNhdGVnb3J5LiInIG9yIENhdGVnb3J5Mj0nIi4kY2F0 ZWdvcnkuIicpICI6Jyc7CgkJJGxpbWl0ID0gKCRsaW1pdCkgPyAkbGltaXQgOiAkcnNzX2hv d19tYW55OwoJCSRsaW1pdCA9IG1pbigkbGltaXQsbWF4KDEwMCwkcnNzX2hvd19tYW55KSk7 CgkJJHF1ZXJ5ID0gYXJyYXkoKTsKCgkJaWYgKCRpZCkgJHF1ZXJ5W10gPSAoJGlkKSA/ICJh bmQgcGFyZW50aWQ9JyIuJGlkLiInICIgOiAnJzsKCiAgICAgICAgaWYgKCRzZWN0aW9uIHx8 ICRjYXRlZ29yeSkKCQl7CiAgICAJCSRmcnMgPSBzYWZlX2NvbHVtbigibmFtZSIsICJ0eHBf c2VjdGlvbiIsICJpbl9yc3MgIT0gJzEnIik7CiAgICAJCWlmICgkZnJzKSBmb3JlYWNoKCRm cnMgYXMgJGYpICRxdWVyeVtdID0gImFuZCBTZWN0aW9uIT0nIi5kb1NsYXNoKCRmKS4iJyI7 CiAgICAJCSRxdWVyeVtdID0gJHNmaWx0ZXI7CiAgICAJCSRxdWVyeVtdID0gJGNmaWx0ZXI7 CiAgICAgICAgICAgICRxID0KICAgICAgICAgICAgICAgICJTRUxFQ1QgdDEuKiwgdW5peF90 aW1lc3RhbXAodDEucG9zdGVkKSBhcyBwb3N0ZWQsIHQyLlNlY3Rpb24sIHQyLkNhdGVnb3J5 MSwgdDIuQ2F0ZWdvcnkyICIuCiAgICAJCQkiRlJPTSAiLgogICAgCQkJImAiLlBGWC4idHhw X2Rpc2N1c3NgIEFTIHQxICIuCiAgICAJCSAgICAiTEVGVCBKT0lOIGAiLlBGWC4idGV4dHBh dHRlcm5gIEFTIHQyICIuCiAgICAJCSAgICAiT04gdDEucGFyZW50aWQ9dDIuSUQgIi4KICAg IAkJICAgICJXSEVSRSB2aXNpYmxlPScxJyAiLmpvaW4oJyAnLCRxdWVyeSkuCiAgICAJCQki T1JERVIgQlkgcG9zdGVkIERFU0MgIi4KICAgIAkJCSJMSU1JVCAkbGltaXQiOwoJCX0gZWxz ZQoJCXsKICAgICAgICAgICAgJHEgPQogICAgICAgICAgICAgICAgIlNFTEVDVCAqLCB1bml4 X3RpbWVzdGFtcChwb3N0ZWQpIGFzIHBvc3RlZCAiLgogICAgCQkJIkZST00gYCIuUEZYLiJ0 eHBfZGlzY3Vzc2AgIi4KICAgIAkJICAgICJXSEVSRSB2aXNpYmxlPScxJyAiLmpvaW4oJyAn LCRxdWVyeSkuCiAgICAJCQkiT1JERVIgQlkgcG9zdGVkIERFU0MgIi4KICAgIAkJCSJMSU1J VCAkbGltaXQiOwoJCX0KCgkJJHJzID0gc3RhcnRSb3dzKCRxKTsKCgkJaWYoJHJzKQoJCXsK CQkJd2hpbGUgKCRhID0gbmV4dFJvdygkcnMpKQoJCQl7CgoJCQkJZXh0cmFjdCgkYSk7CgkJ CQkkYXJ0aWNsZSA9IHNhZmVfcm93KCcqLCB1bml4X3RpbWVzdGFtcChQb3N0ZWQpIGFzIHBv c3RlZCcsJ3RleHRwYXR0ZXJuJywiSUQ9JyRwYXJlbnRpZCciKTsKCgkJCQkkbmFtZSA9IGh0 bWxzcGVjaWFsY2hhcnMoJG5hbWUpOwoJCQkJJHRpdGxlID0gZXNjYXBlX291dHB1dChzdHJp cF90YWdzKCRhcnRpY2xlWydUaXRsZSddKSk7CgkJCQkkcGVybWxpbmsgPSBwZXJtbGlua3Vy bCgkYXJ0aWNsZSkuJyNjJy4kZGlzY3Vzc2lkOwoKCQkJCSRjb250ZW50ID0gdHJpbShyZXBs YWNlX3JlbGF0aXZlX3VybHMoCgkJCQkJcGFyc2UoCgkJCQkJCWdyYWYodGFnKCR0aXRsZSwn c3Ryb25nJykpIC4gJG1lc3NhZ2UKCQkJCQkpLAoJCQkJCSRwZXJtbGluawoJCQkJKSk7CgoJ CQkJJGl0ZW0gPSB0YWcoImJ5OiAkbmFtZSAoJHRpdGxlKSIsJ3RpdGxlJykubi4KCQkJCQl0 YWcoJHBlcm1saW5rLCdsaW5rJykubi4KCQkJCQkodHJpbSgkY29udGVudCkgPyB0YWcobi5l c2NhcGVfY2RhdGEoJGNvbnRlbnQpLm4sJ2NvbnRlbnQ6ZW5jb2RlZCcpLm4gOiAnJykuCgkJ CQkJdGFnKHNhZmVfc3RyZnRpbWUoJ3JmYzgyMicsJHBvc3RlZCksJ3B1YkRhdGUnKS5uLgoJ CQkJCXRhZygkbmFtZSwnZGM6Y3JlYXRvcicpLm4uCgkJCQkJdGFnKCd0YWc6Jy4kbWFpbF9v cl9kb21haW4uJywnLnNhZmVfc3RyZnRpbWUoIlktbS1kIiwkcG9zdGVkKS4nOicuJGJsb2df dWlkLicvJy4kZGlzY3Vzc2lkLCAnZ3VpZCcsICcgaXNQZXJtYUxpbms9ImZhbHNlIicpOwoK CQkJCSRhcnRpY2xlc1skZGlzY3Vzc2lkXSA9IHRhZygkaXRlbSwnaXRlbScpOwoKCQkJCSRl dGFnc1skZGlzY3Vzc2lkXSA9IHN0cnRvdXBwZXIoZGVjaGV4KGNyYzMyKCRhcnRpY2xlc1sk ZGlzY3Vzc2lkXSkpKTsKCQkJCSRkYXRlc1skZGlzY3Vzc2lkXSA9ICRwb3N0ZWQ7CgoJCQl9 CgkJfQoKCQkgIC8vdHVybiBvbiBjb21wcmVzc2lvbiBpZiB3ZSBhcmVuJ3QgdXNpbmcgaXQg YWxyZWFkeQoJCWlmIChleHRlbnNpb25fbG9hZGVkKCd6bGliJykgJiYgaW5pX2dldCgiemxp Yi5vdXRwdXRfY29tcHJlc3Npb24iKSA9PSAwICYmIGluaV9nZXQoJ291dHB1dF9oYW5kbGVy JykgIT0gJ29iX2d6aGFuZGxlcicgJiYgIWhlYWRlcnNfc2VudCgpKSB7CgkJICBAb2Jfc3Rh cnQoIm9iX2d6aGFuZGxlciIpOwoJCX0KCgkJJGxhc3QgPSBmZXRjaCgndW5peF90aW1lc3Rh bXAodmFsKScsJ3R4cF9wcmVmcycsJ25hbWUnLCdsYXN0bW9kJyk7CgkJJGV4cGlyZXMgPSBn bWRhdGUoJ0QsIGQgTSBZIEg6aTpzIFxHXE1cVCcsIHRpbWUoKSsoMzYwMCoxKSk7CgkJaGVh ZGVyKCJFeHBpcmVzOiAkZXhwaXJlcyIpOwoJCSRoaW1zID0gc2VydmVyc2V0KCdIVFRQX0lG X01PRElGSUVEX1NJTkNFJyk7CgkJJGltc2QgPSAoJGhpbXMpID8gc3RydG90aW1lKCRoaW1z KSA6IDA7CgoJCWlmICgkaW1zZCA+PSAkbGFzdCkgewoJCQkJdHhwX3N0YXR1c19oZWFkZXIo IjMwNCBOb3QgTW9kaWZpZWQiKTsgZXhpdDsKCQl9CgoJCWhlYWRlcigiTGFzdC1Nb2RpZmll ZDogIi5nbWRhdGUoJ0QsIGQgTSBZIEg6aTpzIFxHXE1cVCcsJGxhc3QpKTsKCgoJCWlmIChp c19jYWxsYWJsZSgnYXBhY2hlX3JlcXVlc3RfaGVhZGVycycpKQoJCXsKCQkJJGhlYWRlcnMg PSBhcGFjaGVfcmVxdWVzdF9oZWFkZXJzKCk7CgkJCWlmIChpc3NldCgkaGVhZGVyc1siQS1J TSJdKSkgewoJCQkJJGNhbmFpbSA9IHN0cnBvcygkaGVhZGVyc1siQS1JTSJdLCAiZmVlZCIp OwoJCQl9IGVsc2UgewoJCQkJJGNhbmFpbSA9IGZhbHNlOwoJCQl9CgkJfSBlbHNlIHsKCQkJ JGNhbmFpbSA9IGZhbHNlOwoJCX0KCgkJJGhpbm0gPSBzdHJpcHNsYXNoZXMoc2VydmVyc2V0 KCdIVFRQX0lGX05PTkVfTUFUQ0gnKSk7CgoJCSRjdXRhcnRpY2xlcyA9IGZhbHNlOwoKCQlp ZiAoJGNhbmFpbSAhPT0gZmFsc2UpCgkJewoJCQlmb3JlYWNoKCRhcnRpY2xlcyBhcyAkaWQ9 PiR0aGluZykgewoJCQkJaWYgKHN0cnBvcygkaGlubSwgJGV0YWdzWyRpZF0pICE9PSBmYWxz ZSkgewoJCQkJCXVuc2V0KCRhcnRpY2xlc1skaWRdKTsKCQkJCQkkY3V0YXJ0aWNsZXMgPSB0 cnVlOwoJCQkJCSRjdXRfZXRhZyA9IHRydWU7CgkJCQl9CgoJCQkJaWYgKCRkYXRlc1skaWRd IDwgJGltc2QpIHsKCQkJCQl1bnNldCgkYXJ0aWNsZXNbJGlkXSk7CgkJCQkJJGN1dGFydGlj bGVzID0gdHJ1ZTsKCQkJCQkkY3V0X3RpbWUgPSB0cnVlOwoJCQkJfQoJCQl9CgkJfQoKCQlp ZiAoaXNzZXQoJGN1dF9ldGFnKSAmJiBpc3NldCgkY3V0X3RpbWUpKSB7CgkJCWhlYWRlcigi VmFyeTogSWYtTm9uZS1NYXRjaCwgSWYtTW9kaWZpZWQtU2luY2UiKTsKCQl9IGVsc2UgaWYg KGlzc2V0KCRjdXRfZXRhZykpIHsKCQkJaGVhZGVyKCJWYXJ5OiBJZi1Ob25lLU1hdGNoIik7 CgkJfSBlbHNlIGlmIChpc3NldCgkY3V0X3RpbWUpKSB7CgkJCWhlYWRlcigiVmFyeTogSWYt TW9kaWZpZWQtU2luY2UiKTsKCQl9CgoKCQkkZXRhZyA9IEBqb2luKCItIiwkZXRhZ3MpOwoK CQlpZiAoc3Ryc3RyKCRoaW5tLCAkZXRhZykpIHsKCQkJaGVhZGVyKCJIVFRQLzEuMSAzMDQg Tm90IE1vZGlmaWVkIik7IGV4aXQ7CgkJfQoKCgkJaWYgKCRjdXRhcnRpY2xlcykgewoJCQkv L2hlYWRlcigiSFRUUC8xLjEgMjI2IElNIFVzZWQiKTsKCQkJLy9UaGlzIHNob3VsZCBiZSB1 c2VkIGFzIG9wcG9zZWQgdG8gMjAwLCBidXQgQXBhY2hlIGRvZXNuJ3QgbGlrZSBpdC4KCQkJ Ly9odHRwOi8vaW50ZXJ0d2luZ2x5Lm5ldC9ibG9nLzIwMDQvMDkvMTEvVmFyeS1FVGFnLyBz YXlzIHRoYXQgdGhlIHN0YXR1cyBjb2RlIHNob3VsZCBiZSAyMDAuCgkJCWhlYWRlcigiQ2Fj aGUtQ29udHJvbDogbm8tc3RvcmUsIGltIik7CgkJCWhlYWRlcigiSU06IGZlZWQiKTsKCQl9 CgoJCSRvdXQgPSBhcnJheV9tZXJnZSgkb3V0LCAkYXJ0aWNsZXMpOwoKCQloZWFkZXIoIkNv bnRlbnQtVHlwZTogYXBwbGljYXRpb24vcnNzK3htbDsgY2hhcnNldD11dGYtOCIpOwoJCWlm ICgkZXRhZykgaGVhZGVyKCdFVGFnOiAiJy4kZXRhZy4nIicpOwoJCXJldHVybgoJCQknPD94 bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4nLm4uCgkJCSc8cnNzIHZlcnNp b249IjIuMCIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4 bWxuczpjb250ZW50PSJodHRwOi8vcHVybC5vcmcvcnNzLzEuMC9tb2R1bGVzL2NvbnRlbnQv Ij4nLm4uCgkJCXRhZyhqb2luKG4sJG91dCksJ2NoYW5uZWwnKS5uLgoJCQknPC9yc3M+JzsK CX0KCi8vICBiYXNlZCBvbiBhdG9tLnBocCAtPiBhdG9tKCkgcjEyMjgKLy8gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJ ZnVuY3Rpb24gYWp3X2NvbW1lbnRzX2ZlZWRfYXRvbSgpCgl7CiAgICAgICAgaW5jbHVkZSB0 eHBhdGguJy9wdWJsaXNoL2F0b20ucGhwJzsKCgkJZ2xvYmFsICR0aGlzYXJ0aWNsZTsKCQll eHRyYWN0KCRHTE9CQUxTWydwcmVmcyddKTsKCQlkZWZpbmUoInRfdGV4dGh0bWwiLCcgdHlw ZT0idGV4dC9odG1sIicpOwoJCWRlZmluZSgidF90ZXh0IiwnIHR5cGU9InRleHQiJyk7CgkJ ZGVmaW5lKCJ0X2h0bWwiLCcgdHlwZT0iaHRtbCInKTsKCQlkZWZpbmUoInRfeGh0bWwiLCcg dHlwZT0ieGh0bWwiJyk7CgkJZGVmaW5lKCd0X2FwcHhodG1sJywnIHR5cGU9InhodG1sIicp OwoJCWRlZmluZSgicl9yZWxhbHQiLCcgcmVsPSJhbHRlcm5hdGUiJyk7CgkJZGVmaW5lKCJy X3JlbHNlbGYiLCcgcmVsPSJzZWxmIicpOwoKCQlleHRyYWN0KGRvU2xhc2goZ3BzYShhcnJh eSgnY2F0ZWdvcnknLCdzZWN0aW9uJywnbGltaXQnLCdpZCcpKSkpOwoKCQkkbGFzdCA9IGZl dGNoKCd1bml4X3RpbWVzdGFtcCh2YWwpJywndHhwX3ByZWZzJywnbmFtZScsJ2xhc3Rtb2Qn KTsKCgkJJGN0aXRsZSA9ICgkaWQpID8gJyAtICcuZmV0Y2goJ1RpdGxlJywndGV4dHBhdHRl cm4nLCdJRCcsJGlkKSA6ICcnOwoKCQkkc2l0ZW5hbWUgLj0gJyBDb21tZW50cycuJGN0aXRs ZTsKCQkkc2l0ZW5hbWUgLj0gKCRzZWN0aW9uKSA/ICcgLSAnLiRzZWN0aW9uIDogJyc7CgkJ JHNpdGVuYW1lIC49ICgkY2F0ZWdvcnkpID8gJyAtICcuJGNhdGVnb3J5IDogJyc7CgoJCSRw dWIgPSBzYWZlX3JvdygiUmVhbE5hbWUsIGVtYWlsIiwgInR4cF91c2VycyIsICJwcml2cz0x Iik7CgoJCSRvdXRbXSA9IHRhZygkc2l0ZW5hbWUsJ3RpdGxlJyx0X3RleHQpOwoJCSRvdXRb XSA9IHRhZygkc2l0ZV9zbG9nYW4sJ3N1YnRpdGxlJyx0X3RleHQpOwoJCSRvdXRbXSA9ICc8 bGluaycucl9yZWxzZWxmLicgaHJlZj0iJy5wYWdlbGlua3VybChhcnJheSgnYXRvbSc9PjEs J2lkJz0+JGlkLCdzZWN0aW9uJz0+JHNlY3Rpb24sJ2NhdGVnb3J5Jz0+JGNhdGVnb3J5LCds aW1pdCc9PiRsaW1pdCkpLiciIC8+JzsKCQkkb3V0W10gPSAnPGxpbmsnLnJfcmVsYWx0LnRf dGV4dGh0bWwuJyBocmVmPSInLmh1LiciIC8+JzsKCQkkYXJ0aWNsZXMgPSBhcnJheSgpOwoK CQkvL0F0b20gZmVlZHMgd2l0aCBtYWlsIG9yIGRvbWFpbiBuYW1lCgkJJGRuID0gZXhwbG9k ZSgnLycsJHNpdGV1cmwpOwoJCSRtYWlsX29yX2RvbWFpbiA9ICgkdXNlX21haWxfb25fZmVl ZHNfaWQpPyBlRSgkYmxvZ19tYWlsX3VpZCk6JGRuWzBdOwoJCSRvdXRbXSA9IHRhZygndGFn OicuJG1haWxfb3JfZG9tYWluLicsJy4kYmxvZ190aW1lX3VpZC4nOicuJGJsb2dfdWlkLigo JHNlY3Rpb24pPyAnLycuJHNlY3Rpb246JycpLigoJGNhdGVnb3J5KT8gJy8nLiRjYXRlZ29y eTonJyksJ2lkJyk7CgoJCSRvdXRbXSA9IHRhZygnVGV4dHBhdHRlcm4nLCdnZW5lcmF0b3In LAoJCQknIHVyaT0iaHR0cDovL3RleHRwYXR0ZXJuLmNvbS8iIHZlcnNpb249IicuJHZlcnNp b24uJyInKTsKCQkkb3V0W10gPSB0YWcoc2FmZV9zdHJmdGltZSgidzNjZHRmIiwkbGFzdCks J3VwZGF0ZWQnKTsKCgoJCSRhdXRoW10gPSB0YWcoJHB1YlsnUmVhbE5hbWUnXSwnbmFtZScp OwoJCSRhdXRoW10gPSAoJGluY2x1ZGVfZW1haWxfYXRvbSkgPyB0YWcoZUUoJHB1YlsnZW1h aWwnXSksJ2VtYWlsJykgOiAnJzsKCQkkYXV0aFtdID0gdGFnKGh1LCd1cmknKTsKCgkJJG91 dFtdID0gdGFnKG4udC50LmpvaW4obi50LnQsJGF1dGgpLm4sJ2F1dGhvcicpOwoJCSRsaW1p dCA9ICgkbGltaXQpID8gJGxpbWl0IDogJHJzc19ob3dfbWFueTsKCQkkbGltaXQgPSBtaW4o JGxpbWl0LG1heCgxMDAsJHJzc19ob3dfbWFueSkpOwoKICAgICAgICAkc2ZpbHRlciA9ICgk c2VjdGlvbikgPyAiYW5kIFNlY3Rpb249JyIuJHNlY3Rpb24uIiciIDogJyc7CgkJJGNmaWx0 ZXIgPSAoJGNhdGVnb3J5KQoJCQk/ICJhbmQgKENhdGVnb3J5MT0nIi4kY2F0ZWdvcnkuIicg b3IgQ2F0ZWdvcnkyPSciLiRjYXRlZ29yeS4iJykgIjonJzsKCQkkbGltaXQgPSAoJGxpbWl0 KSA/ICRsaW1pdCA6ICRyc3NfaG93X21hbnk7CgkJJGxpbWl0ID0gbWluKCRsaW1pdCxtYXgo MTAwLCRyc3NfaG93X21hbnkpKTsKCQkkcXVlcnkgPSBhcnJheSgpOwoKCQlpZiAoJGlkKSAk cXVlcnlbXSA9ICgkaWQpID8gImFuZCBwYXJlbnRpZD0nIi4kaWQuIicgIiA6ICcnOwoKICAg ICAgICBpZiAoJHNlY3Rpb24gfHwgJGNhdGVnb3J5KQoJCXsKICAgIAkJJGZycyA9IHNhZmVf Y29sdW1uKCJuYW1lIiwgInR4cF9zZWN0aW9uIiwgImluX3JzcyAhPSAnMSciKTsKICAgIAkJ Zm9yZWFjaCgkZnJzIGFzICRmKSAkcXVlcnlbXSA9ICJhbmQgU2VjdGlvbiE9JyIuZG9TbGFz aCgkZikuIiciOwogICAgCQkkcXVlcnlbXSA9ICRzZmlsdGVyOwogICAgCQkkcXVlcnlbXSA9 ICRjZmlsdGVyOwogICAgICAgICAgICAkcSA9CiAgICAgICAgICAgICAgICAiU0VMRUNUIHQx LiosIHVuaXhfdGltZXN0YW1wKHQxLnBvc3RlZCkgYXMgcG9zdGVkLCB0Mi5TZWN0aW9uLCB0 Mi5DYXRlZ29yeTEsIHQyLkNhdGVnb3J5MiAiLgogICAgCQkJIkZST00gIi4KICAgIAkJCSJg Ii5QRlguInR4cF9kaXNjdXNzYCBBUyB0MSAiLgogICAgCQkgICAgIkxFRlQgSk9JTiBgIi5Q RlguInRleHRwYXR0ZXJuYCBBUyB0MiAiLgogICAgCQkgICAgIk9OIHQxLnBhcmVudGlkPXQy LklEICIuCiAgICAJCSAgICAiV0hFUkUgdmlzaWJsZT0nMScgIi5qb2luKCcgJywkcXVlcnkp LgogICAgCQkJIk9SREVSIEJZIHBvc3RlZCBERVNDICIuCiAgICAJCQkiTElNSVQgJGxpbWl0 IjsKCQl9IGVsc2UKCQl7CiAgICAgICAgICAgICRxID0KICAgICAgICAgICAgICAgICJTRUxF Q1QgKiwgdW5peF90aW1lc3RhbXAocG9zdGVkKSBhcyBwb3N0ZWQgIi4KICAgIAkJCSJGUk9N IGAiLlBGWC4idHhwX2Rpc2N1c3NgICIuCiAgICAJCSAgICAiV0hFUkUgdmlzaWJsZT0nMScg Ii5qb2luKCcgJywkcXVlcnkpLgogICAgCQkJIk9SREVSIEJZIHBvc3RlZCBERVNDICIuCiAg ICAJCQkiTElNSVQgJGxpbWl0IjsKCQl9CgoJCSRycyA9IHN0YXJ0Um93cygkcSk7CgoKCQlp ZigkcnMpIHsKCQkJd2hpbGUgKCRhID0gbmV4dFJvdygkcnMpKQoJCQl7CgoJCQkJZXh0cmFj dCgkYSk7CgoJCQkJJGVbJ3RoaXNhdXRob3InXSA9IHRhZyhuLnQudC50LnRhZyhodG1sc3Bl Y2lhbGNoYXJzKCRuYW1lKSwnbmFtZScpLm4udC50LCdhdXRob3InKTsKCQkJCSRlWydpc3N1 ZWQnXSA9IHRhZyhzYWZlX3N0cmZ0aW1lKCd3M2NkdGYnLCRwb3N0ZWQpLCdwdWJsaXNoZWQn KTsKCQkJCSRlWydtb2RpZmllZCddID0gdGFnKHNhZmVfc3RyZnRpbWUoJ3czY2R0ZicsJHBv c3RlZCksJ3VwZGF0ZWQnKTsKCgkJCQkkYXJ0aWNsZSA9IHNhZmVfcm93KCcqLCB1bml4X3Rp bWVzdGFtcChQb3N0ZWQpIGFzIHBvc3RlZCcsJ3RleHRwYXR0ZXJuJywiSUQ9JyRwYXJlbnRp ZCciKTsKCgkJCQkkdGl0bGUgPSAkYXJ0aWNsZVsnVGl0bGUnXTsKCQkJCSRlc2NhcGVkX3Rp dGxlID0gZXNjYXBlX3RpdGxlKCR0aXRsZSk7CgkJCQkkZVsndGl0bGUnXSA9IHRhZygiYnk6 ICRuYW1lICgkZXNjYXBlZF90aXRsZSkiLCd0aXRsZScsdF9odG1sKTsKCgkJCQkkcGVybWxp bmsgPSBwZXJtbGlua3VybCgkYXJ0aWNsZSkuJyNjJy4kZGlzY3Vzc2lkOwoJCQkJJGVbJ2xp bmsnXSA9ICc8bGluaycucl9yZWxhbHQudF90ZXh0aHRtbC4nIGhyZWY9IicuJHBlcm1saW5r LiciIC8+JzsKCgkJCQkkY29tbWVudF90aW1lID0gc2FmZV9zdHJmdGltZSgnWS1tLWQnLCRw b3N0ZWQpOwoJCQkJJGVbJ2lkJ10gPSB0YWcoJ3RhZzonLiRtYWlsX29yX2RvbWFpbi4nLCcu JGNvbW1lbnRfdGltZS4nOicuJGJsb2dfdWlkLicvJy4kZGlzY3Vzc2lkLCdpZCcsICcgaXNQ ZXJtYUxpbms9ImZhbHNlIicpOwoKCQkJCSRzdW1tYXJ5ID0gdHJpbShyZXBsYWNlX3JlbGF0 aXZlX3VybHMoCgkJCQkJcGFyc2UoCgkJCQkJCWdyYWYodGFnKCR0aXRsZSwnc3Ryb25nJykp IC4gJG1lc3NhZ2UKCQkJCQkpLAoJCQkJCSRwZXJtbGluawoJCQkJKSk7CgkJCQkkZVsnc3Vt bWFyeSddID0gdGFnKG4uZXNjYXBlX2NkYXRhKCRzdW1tYXJ5KS5uLCdzdW1tYXJ5Jyx0X2h0 bWwpOwoKCQkJCSRhcnRpY2xlc1skZGlzY3Vzc2lkXSA9IHRhZyhuLnQudC5qb2luKG4udC50 LCRlKS5uLCdlbnRyeScpOwoKCQkJCSRldGFnc1skZGlzY3Vzc2lkXSA9IHN0cnRvdXBwZXIo ZGVjaGV4KGNyYzMyKCRhcnRpY2xlc1skZGlzY3Vzc2lkXSkpKTsKCQkJCSRkYXRlc1skZGlz Y3Vzc2lkXSA9ICRwb3N0ZWQ7CgkJCX0KCQl9CgoJCWlmICghZW1wdHkoJGFydGljbGVzKSkg ewoKCQkJLy90dXJuIG9uIGNvbXByZXNzaW9uIGlmIHdlIGFyZW4ndCB1c2luZyBpdCBhbHJl YWR5CgkJCWlmIChleHRlbnNpb25fbG9hZGVkKCd6bGliJykgJiYgaW5pX2dldCgiemxpYi5v dXRwdXRfY29tcHJlc3Npb24iKSA9PSAwICYmIGluaV9nZXQoJ291dHB1dF9oYW5kbGVyJykg IT0gJ29iX2d6aGFuZGxlcicgJiYgIWhlYWRlcnNfc2VudCgpKSB7CgkJCQlAb2Jfc3RhcnQo Im9iX2d6aGFuZGxlciIpOwoJCQl9CgoJCQkkZXhwaXJlcyA9IGdtZGF0ZSgnRCwgZCBNIFkg SDppOnMgXEdcTVxUJywgdGltZSgpKygzNjAwKjEpKTsKCQkJaGVhZGVyKCJFeHBpcmVzOiAk ZXhwaXJlcyIpOwoJCQkkaGltcyA9IHNlcnZlcnNldCgnSFRUUF9JRl9NT0RJRklFRF9TSU5D RScpOwoJCQkkaW1zZCA9ICgkaGltcykgPyBzdHJ0b3RpbWUoJGhpbXMpIDogMDsKCgkJCWlm ICgkaW1zZCA+PSAkbGFzdCkgewoJCQkJdHhwX3N0YXR1c19oZWFkZXIoIjMwNCBOb3QgTW9k aWZpZWQiKTsgZXhpdDsKCQkJfQoJCQloZWFkZXIoIkxhc3QtTW9kaWZpZWQ6ICIuZ21kYXRl KCdELCBkIE0gWSBIOmk6cyBcR1xNXFQnLCRsYXN0KSk7CgoJCQlpZiAoaXNfY2FsbGFibGUo J2FwYWNoZV9yZXF1ZXN0X2hlYWRlcnMnKSkgewoJCQkJJGhlYWRlcnMgPSBhcGFjaGVfcmVx dWVzdF9oZWFkZXJzKCk7CgkJCQlpZiAoaXNzZXQoJGhlYWRlcnNbIkEtSU0iXSkpIHsKCQkJ CQkkY2FuYWltID0gc3RycG9zKCRoZWFkZXJzWyJBLUlNIl0sICJmZWVkIik7CgkJCQl9IGVs c2UgewoJCQkJCSRjYW5haW0gPSBmYWxzZTsKCQkJCX0KCQkJfSBlbHNlIHsKCQkJCSRjYW5h aW0gPSBmYWxzZTsKCQkJfQoKCQkJJGhpbm0gPSBzdHJpcHNsYXNoZXMoc2VydmVyc2V0KCdI VFRQX0lGX05PTkVfTUFUQ0gnKSk7CgoJCQkkY3V0YXJ0aWNsZXMgPSBmYWxzZTsKCgkJCWlm ICgkY2FuYWltICE9PSBmYWxzZSkgewoJCQkJZm9yZWFjaCgkYXJ0aWNsZXMgYXMgJGlkPT4k dGhpbmcpIHsKCQkJCQlpZiAoc3RycG9zKCRoaW5tLCAkZXRhZ3NbJGlkXSkpIHsKCQkJCQkJ dW5zZXQoJGFydGljbGVzWyRpZF0pOwoJCQkJCQkkY3V0YXJ0aWNsZXMgPSB0cnVlOwoJCQkJ CQkkY3V0X2V0YWcgPSB0cnVlOwoJCQkJCX0KCgkJCQkJaWYgKCRkYXRlc1skaWRdIDwgJGlt c2QpIHsKCQkJCQkJdW5zZXQoJGFydGljbGVzWyRpZF0pOwoJCQkJCQkkY3V0YXJ0aWNsZXMg PSB0cnVlOwoJCQkJCQkkY3V0X3RpbWUgPSB0cnVlOwoJCQkJCX0KCQkJCX0KCQkJfQoKCQkJ aWYgKGlzc2V0KCRjdXRfZXRhZykgJiYgaXNzZXQoJGN1dF90aW1lKSkgewoJCQkJaGVhZGVy KCJWYXJ5OiBJZi1Ob25lLU1hdGNoLCBJZi1Nb2RpZmllZC1TaW5jZSIpOwoJCQl9IGVsc2Ug aWYgKGlzc2V0KCRjdXRfZXRhZykpIHsKCQkJCWhlYWRlcigiVmFyeTogSWYtTm9uZS1NYXRj aCIpOwoJCQl9IGVsc2UgaWYgKGlzc2V0KCRjdXRfdGltZSkpIHsKCQkJCWhlYWRlcigiVmFy eTogSWYtTW9kaWZpZWQtU2luY2UiKTsKCQkJfQoKCQkJJGV0YWcgPSBAam9pbigiLSIsJGV0 YWdzKTsKCgkJCWlmIChzdHJzdHIoJGhpbm0sICRldGFnKSkgewoJCQkJaGVhZGVyKCJIVFRQ LzEuMSAzMDQgTm90IE1vZGlmaWVkIik7IGV4aXQ7CgkJCX0KCgkJCWlmICgkZXRhZykgaGVh ZGVyKCdFVGFnOiAiJy4kZXRhZy4nIicpOwoKCQkJaWYgKCRjdXRhcnRpY2xlcykgewoJCQkJ Ly9oZWFkZXIoIkhUVFAvMS4xIDIyNiBJTSBVc2VkIik7CgkJCQkvL1RoaXMgc2hvdWxkIGJl IHVzZWQgYXMgb3Bwb3NlZCB0byAyMDAsIGJ1dCBBcGFjaGUgZG9lc24ndCBsaWtlIGl0LgoJ CQkJLy9odHRwOi8vaW50ZXJ0d2luZ2x5Lm5ldC9ibG9nLzIwMDQvMDkvMTEvVmFyeS1FVGFn LyBzYXlzIHRoYXQgdGhlIHN0YXR1cyBjb2RlIHNob3VsZCBiZSAyMDAuCgkJCQloZWFkZXIo IkNhY2hlLUNvbnRyb2w6IG5vLXN0b3JlLCBpbSIpOwoJCQkJaGVhZGVyKCJJTTogZmVlZCIp OwoJCQl9CgoJCQkkb3V0ID0gYXJyYXlfbWVyZ2UoJG91dCwgJGFydGljbGVzKTsKCgkJfQoJ CWhlYWRlcignQ29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9hdG9tK3htbDsgY2hhcnNldD11 dGYtOCcpOwoJCXJldHVybiBjaHIoNjApLic/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9 IlVURi04Ij8nLmNocig2Mikubi4KCQknPGZlZWQgeG1sOmxhbmc9IicuJGxhbmd1YWdlLici IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDA1L0F0b20iPicuam9pbihuLCRvdXQpLic8 L2ZlZWQ+JzsKCX0KCiI7czo4OiJoZWxwX3JhdyI7czoxMTQ3OiJoMi4gU3VtbWFyeQoKRXh0 ZW5kcyBSU1MgJiBBdG9tIGZ1bmN0aW9uYWxpdHkgdG8gYWxsb3cgZm9yIHNpdGV3aWRlLCBw ZXItc2VjdGlvbiwgcGVyLWNhdGVnb3J5LCBvciBwZXItYXJ0aWNsZSBjb21tZW50cyBmZWVk cy4gIEl0IHdvcmtzIGV4YWN0bHkgbGlrZSBub3JtYWwgZmVlZCB1cmxzLCBidXQgbGlzdGVu cyBmb3IgQCcmYXJlYT1jb21tZW50cydALiBGb3IgZXhhbXBsZSwgQGh0dHA6Ly9kb21haW4u dGxkLz9yc3M9MSZhcmVhPWNvbW1lbnRzQCBPUiBAaHR0cDovL2RvbWFpbi50bGQvP3Jzcz0x JmFyZWE9Y29tbWVudHMmaWQ9MTIzQC4KCmgyLiBTZXR1cAoKTm8gc2V0dXAgbmVlZGVkLiAg U2ltcGx5IGluc3RhbGwgJiBhY3RpdmF0ZSB0aGUgcGx1Z2luIGFuZCAgLS0gIF92b2lsYSFf ICAtLSAgeW91ciBjb21tZW50IGZlZWRzIGFyZSBnb29kIHRvIGdvLgoKaDIuIGFqd19jb21t ZW50c19mZWVkX2xpbmsKCkZ1bmN0aW9ucyBleGFjdGx5IGFzIEA8dHhwOmZlZWRfbGluayAv PkAuICBBY2NlcGFibGUgYXR0cmlidXRlcyBpbmNsdWRlOiBAc2l0ZXdpZGVALCBAd3JhcHRh Z0AsIEBsaW1pdEAsIEBmbGF2b3JALCBAbGFiZWxALCAmIEB0aXRsZUAKClRoZSBAc2l0ZXdp ZGVAIGF0dHJpYnV0ZSBhbGxvd3MgeW91IHRvIHVzZSBhIGNvbW1lbnRzIGZlZWQgbGluayBp biBhIHRlbXBsYXRlIHRoYXQgYWx3YXlzIHJlZmVycyB0byBhIHNpdGV3aWRlIGZlZWQgbGlu aywgcmF0aGVyIHRoYW4gYXJ0aWNsZS1zcGVjaWZpYy4gIEZvciBpbnN0YW5jZSwgQHNpdGV3 aWRlPSJ5IkAgd2lsbCBjYXVzZSBhbiBSU1MgZmVlZCBsaW5rIHVybCB0byBiZWNvbWUgQGh0 dHA6Ly9zaXRlLnRsZC8/cnNzPTEmYXJlYT1jb21tZW50c0AgKG5vIEBpZEAgdmFyaWFibGUp LgoKaDIuIERpc2NsYWltZXIKClRoaXMgZnVuY3Rpb24gdXNlcyBmZWVkIGZvcm1hdHRpbmcg Y29kZS1iYXNlIGZyb20gVGV4dHBhdHRlcm4gInY0LjAuNCByMTY4MiI6aHR0cDovL2Rldi50 ZXh0cGF0dGVybi5jb20vYnJvd3Nlci9kZXZlbG9wbWVudC80LjAvP3Jldj0xNjgyLCB0aHVz ICphbnkgcHJvYmxlbXMgb3IgYnVncyB0aGF0IGV4aXN0IGluIFRleHRwYXR0ZXJuJ3MgUlNT L0F0b20gb3V0cHV0IHdpbGwgYmUgY29udGFpbmVkIHdpdGhpbiB0aGlzIHBsdWdpbiouIjtz OjM6Im1kNSI7czozMjoiM2MwY2Y5ZTU1ZDUyODA4NGU2NWRmYmRiMDg2MWQyMTAiO3M6ODoi Y29tcHJlc3MiO2I6MDt9