# tru_podcast v1.0 # Podcasting support for Textpattern # Nathan Arthur # http://www.rainskit.com/ # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YToxMTp7czo0OiJuYW1lIjtzOjExOiJ0cnVfcG9kY2FzdCI7czo3OiJ2ZXJzaW9uIjtzOjM6 IjEuMCI7czo2OiJhdXRob3IiO3M6MTM6Ik5hdGhhbiBBcnRodXIiO3M6MTA6ImF1dGhvcl91 cmkiO3M6MjI6Imh0dHA6Ly93d3cudHJ1aXN0LmNvbS8iO3M6MTE6ImRlc2NyaXB0aW9uIjtz OjM0OiJQb2RjYXN0aW5nIHN1cHBvcnQgZm9yIFRleHRwYXR0ZXJuIjtzOjE1OiJhbGxvd19o dG1sX2hlbHAiO2k6MDtzOjQ6InR5cGUiO2k6MDtzOjQ6ImhlbHAiO3M6NDEwNzoiCTxwPlRv IGxlYXJuIG1vcmUgYWJvdXQgdHJ1X3BvZGNhc3QsIGNoZWNrIG91dCB0aGUgPGEgaHJlZj0i L2Jsb2cvNTQyL3RydV9wb2RjYXN0LWEtcG9kY2FzdGluZy1wbHVnaW4tZm9yLXRleHRwYXR0 ZXJuIj5pbnRyb2R1Y3RvcnkgYXJ0aWNsZTwvYT4sIHRoZSA8YSBocmVmPSJodXJlZmVyZW5j ZS81MzkvdHJ1X3BvZGNhc3QtcmVsZWFzZXMiPnJlbGVhc2VzIHBhZ2U8L2E+LCBvciB0aGUg PGEgaHJlZj0iaHVyZWZlcmVuY2UvNTQwL3RydV9wb2RjYXN0LWZlYXR1cmUtbGlzdCI+ZmVh dHVyZSBsaXN0PC9hPi48L3A+CgoJPGgzIGlkPSJjb25maWciPkNvbmZpZ3VyYXRpb248L2gz PgoKCTxoND5TdGVwIDE6IFJlbmFtZSBvbmUgb2YgeW91ciBjdXN0b20gZmllbGRzPC9oND4K Cgk8cD50cnVfcG9kY2FzdCB1c2VzIGEgY3VzdG9tIGZpZWxkIG5hbWVkICYjODIyMDt0cnVf cG9kY2FzdCYjODIyMTsuICBOYW1lIG9uZSBvZiB5b3VyIHVudXNlZCBjdXN0b20gZmllbGRz ICYjODIyMDt0cnVfcG9kY2FzdCYjODIyMTsgb24gdGhlIEFkbWluIC0+IFByZWZlcmVuY2Vz IC0+IEFkdmFuY2VkIHRhYi48L3A+CgoJPHA+PHR4cDppbWFnZSBpZD0iMTciIGNsYXNzPSJk aWFncmFtIiAvPjwvcD4KCgk8aDQ+U3RlcCAyOiBTdGFydCBwb2RjYXN0aW5nITwvaDQ+CgoJ PHA+V2hlbmV2ZXIgeW91IHdhbnQgdG8gY3JlYXRlIGEgbmV3IGVwaXNvZGUsIGNyZWF0ZSBh IG5ldyBhcnRpY2xlIGFuZCBwdXQgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+ IG9mIHRoZSBtZWRpYSBmaWxlIGludG8gdGhlIDxjb2RlPnRydV9wb2RjYXN0PC9jb2RlPiBm aWVsZCBpbiBUZXh0cGF0dGVybi4gIChUaGUgZmllbGQgd2lsbCBiZSBoaWRpbmcgYmVoaW5k IHRoZSAmIzgyMjA7QWR2YW5jZWQgT3B0aW9ucyYjODIyMTsgbGluayBvbiB0aGUgbGVmdCBz aWRlIG9mIHRoZSAmIzgyMjA7V3JpdGUmIzgyMjE7IHBhZ2UuKSAgVGhhdCYjODIxNztzIGFs bCBpdCB0YWtlcyAmIzgyMTE7IHRoZSBmaWxlIHdpbGwgYXBwZWFyIGluIHlvdXIgPHNwYW4g Y2xhc3M9ImNhcHMiPlJTUzwvc3Bhbj4gYW5kIEF0b20gZmVlZHMgYXMgYW4gZW5jbG9zdXJl LCBhbmQgcG9kY2FzdCBjbGllbnRzIChpVHVuZXMsIGZvciBleGFtcGxlKSB3aWxsIGlkZW50 aWZ5IGl0IGNvcnJlY3RseS48L3A+CgoJPHA+WW91JiM4MjE3O2xsIHByb2JhYmx5IHdhbnQg dG8gaW5zdGFsbCBSb2IgU2FibGUmIzgyMTc7cyA8YSBocmVmPSJodHRwOi8vd3d3LndpbHNo aXJlb25lLmNvbS90ZXh0cGF0dGVybi1wbHVnaW5zL3Jzcy1hZG1pbi1zaG93LWFkdi1vcHRz Ij5yc3NfYWRtaW5fc2hvd19hZHZfb3B0czwvYT4sIHdoaWNoIHdpbGwgYXV0b21hdGljYWxs eSBleHBhbmQgdGhlICYjODIyMDtBZHZhbmNlZCBPcHRpb25zJiM4MjIxOyBzZWN0aW9uIG9m IHRoZSAmIzgyMjA7V3JpdGUmIzgyMjE7IHBhZ2UsIHdoZW4geW91IGFyZSB3cml0aW5nIGFy dGljbGVzLiAgVGhhdCBnaXZlcyB5b3UgZWFzeSBhY2Nlc3MgdG8gdGhlIGN1c3RvbSBmaWVs ZHMuPC9wPgoKCTxoND5TdGVwIDM6IEluY2x1ZGUgbGlua3MgaW4geW91ciBhcnRpY2xlcyAo T3B0aW9uYWwpPC9oND4KCgk8cD5Gb3IgcGVvcGxlIHJlYWRpbmcgeW91ciBzaXRlIHZpYSB0 aGVpciB3ZWIgYnJvd3NlciwgeW91IGNhbiBsaW5rIHRvIHRoZSBtZWRpYSBmaWxlIGZyb20g eW91ciBhcnRpY2xlcyB3aXRoIHNvbWV0aGluZyBsaWtlOjwvcD4KCjxwcmU+JiM2MDt0eHA6 dHJ1X3BvZGNhc3RfaWZfcG9kY2FzdCYjNjI7ClRoaXMgYXJ0aWNsZSBoYXMgYSBwb2RjYXN0 ISAgJiM2MDt0eHA6dHJ1X3BvZGNhc3RfbGluayBsaW5rdGV4dD0mIzM0O1JpZ2h0IGhlcmUh JiMzNDsgLyYjNjI7CiYjNjA7dHhwOmVsc2UgLyYjNjI7Ck5vIHBvZGNhc3QgaGVyZSEKJiM2 MDsvdHhwOnRydV9wb2RjYXN0X2lmX3BvZGNhc3QmIzYyOzwvcHJlPgoKCTxoND5TdGVwIDQ6 IFVzZSBhIGNhdGVnb3J5IHRvIGNyZWF0ZSBhIHBvZGNhc3Qtb25seSBmZWVkIChPcHRpb25h bCk8L2g0PgoKCTxwPllvdSBkb24mIzgyMTc7dCBoYXZlIHRvIGNyZWF0ZSBhIHNwZWNpYWwg PHNwYW4gY2xhc3M9ImNhcHMiPlJTUzwvc3Bhbj4gZmVlZCBmb3IgcG9kY2FzdHMgJiM4MjEx OyB0aGUgJiM4MjIwO2VuY2xvc3VyZXMmIzgyMjE7IHdpbGwgc2ltcGx5IHNob3cgdXAgaW4g eW91ciBub3JtYWwgZmVlZChzKSBhbnkgdGltZSB5b3Ugc3BlY2lmeSBhIG1lZGlhIGZpbGUg JiM4MjExOyBidXQgeW91IGNhbiBkbyBzbyBpZiB5b3Ugd2FudC4gIFNpbXBseSBjcmVhdGUg YSBuZXcgY2F0ZWdvcnkgZm9yIGFsbCB5b3VyIHBvZGNhc3RpbmcsIGFuZCB1c2UgdGhlIGZl ZWQgZm9yIHRoYXQgY2F0ZWdvcnkgYXMgeW91ciBwb2RjYXN0LW9ubHkgZmVlZC48L3A+CgoJ PGg0PlN0ZXAgNTogT3RoZXIgdHlwZXMgb2YgJiM4MjIwO3BvZGNhc3RzJiM4MjIxOyAoT3B0 aW9uYWwpPC9oND4KCgk8cD5Zb3UgZG9uJiM4MjE3O3QgaGF2ZSB0byBsaW1pdCB5b3Vyc2Vs ZiB0byBhdWRpbzsgdHJ1X3BvZGNhc3Qgc3VwcG9ydHMgYW55IHR5cGUgb2YgbWVkaWEgKHZp ZGVvLCBpbWFnZXMsIGV0Yy4pLiAgQXMgbG9uZyBhcyB5b3VyIHNlcnZlciBrbm93cyB0aGUg Y29ycmVjdCA8c3BhbiBjbGFzcz0iY2FwcyI+TUlNRTwvc3Bhbj4gdHlwZSBmb3IgeW91ciBt ZWRpYSwgZXZlcnl0aGluZyBzaG91bGQgd29yay48L3A+CgoJPGgzIGlkPSJyZWZlcmVuY2Ui PlRhZyByZWZlcmVuY2U8L2gzPgoKCTxoND48Y29kZT50cnVfcG9kY2FzdF9saW5rPC9jb2Rl PjwvaDQ+CgoJPHA+VGhpcyB0YWcgd2lsbCBnZW5lcmF0ZSBhbiA8Y29kZT4mIzYwO2EgaHJl Zi4uLjwvY29kZT4gbGluayBpZiB0aGUgY3VycmVudCBhcnRpY2xlIGhhcyBhIHBvZGNhc3Qg PHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gc2V0LiAgVGhlIGdlbmVyYXRlZCBsaW5r IHdpbGwgYXV0b21hdGljYWxseSBoYXZlIDxjb2RlPnJlbD0mIzM0O2VuY2xvc3VyZSYjMzQ7 PC9jb2RlPiBzZXQgaW4gY2FzZSBhbiBvbGQgcG9kY2FzdCBjbGllbnQgaXMgbG9va2luZyBm b3IgaXQuICBZb3UgY2FuIHBhc3MgYW55IGF0dHJpYnV0ZSB0byB0aGlzIHRhZyBhbmQgaXQg d2lsbCBiZSBwYXNzZWQgb24gdG8gdGhlIDxjb2RlPiYjNjA7YSYjNjI7PC9jb2RlPiB0YWcs IGV4Y2VwdCA8Y29kZT5saW5rdGV4dDwvY29kZT4gYXMgaW5kaWNhdGVkIGJlbG93LjwvcD4K Cgk8aDU+QXR0cmlidXRlczo8L2g1PgoKCTx1bD4KCQk8bGk+PGNvZGU+bGlua3RleHQ8L2Nv ZGU+IHdpbGwgc2V0IHRoZSBjb250ZW50IG9mIHRoZSA8Y29kZT4mIzYwO2EmIzYyOy4uLiYj NjA7L2EmIzYyOzwvY29kZT4gbGluay4gIElmIHlvdSBkb24mIzgyMTc7dCBzcGVjaWZ5IDxj b2RlPmxpbmt0ZXh0PC9jb2RlPiwgaXQgZGVmYXVsdHMgdG8gdGhlIDxzcGFuIGNsYXNzPSJj YXBzIj5VUkw8L3NwYW4+IG9mIHRoZSBtZWRpYS48L2xpPgoJCTxsaT5Bbnkgb3RoZXIgYXR0 cmlidXRlIGRlc2lyZWQgY2FuIGJlIHBhc3NlZCB0byB0aGUgPGNvZGU+JiM2MDthJiM2Mjs8 L2NvZGU+LiAgRm9yIGV4YW1wbGUsIDxjb2RlPiYjNjA7dHhwOnRydV9wb2RjYXN0X2xpbmsg bGlua3RleHQ9JiMzNDt0ZXN0JiMzNDsganVuaz0mIzM0O3dvcnRoeSYjMzQ7IC8mIzYyOzwv Y29kZT4gd2lsbCBnZW5lcmF0ZSB0aGlzIEhUTUw6IDxjb2RlPiYjNjA7YSBocmVmPSYjMzQ7 L3NvbWUvbWVkaWEudXJsJiMzNDsganVuaz0mIzM0O3dvcnRoeSYjMzQ7JiM2Mjt0ZXN0JiM2 MDsvYSYjNjI7PC9jb2RlPjwvbGk+Cgk8L3VsPgoKCTxoND48Y29kZT50cnVfcG9kY2FzdF9p Zl9wb2RjYXN0PC9jb2RlPjwvaDQ+CgoJPHA+VGhpcyBjb25kaXRpb25hbCB0YWcgd2lsbCBy ZW5kZXIgaXRzIGNvbnRlbnRzIGlmIHRoZSBjdXJyZW50IGFydGljbGUgaGFzIGFuIGFzc29j aWF0ZWQgbWVkaWEgZmlsZSAoaW4gdGhlIDxjb2RlPnRydV9wb2RjYXN0PC9jb2RlPiBjdXN0 b20gZmllbGQpLjwvcD4KCgk8aDQ+PGNvZGU+dHJ1X3BvZGNhc3RfZ2V0X3VybDwvY29kZT48 L2g0PgoKCTxwPlRoaXMgdGFnIHdpbGwgcmV0dXJuIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+ VVJMPC9zcGFuPiBvZiBhbiBhc3NvY2lhdGVkIG1lZGlhIGZpbGUsIGlmIGFueS48L3A+Ijtz OjQ6ImNvZGUiO3M6NDAzNzoiCiNDb3B5cmlnaHQgMjAwNyBOYXRoYW4gQXJ0aHVyCiNSZWxl YXNlZCB1bmRlciB0aGUgR05VIFB1YmxpYyBMaWNlbnNlLCBzZWUgaHR0cDovL3d3dy5vcGVu c291cmNlLm9yZy9saWNlbnNlcy9ncGwtbGljZW5zZS5waHAgZm9yIGRldGFpbHMKI1RoaXMg d29yayBpcyBiYXNlZCBwYXJ0aWFsbHkgb24gV29yZFByZXNzIGNvZGU7IHNlZSBodHRwOi8v dHJhYy53b3JkcHJlc3Mub3JnL2Jyb3dzZXIvdHJ1bmsvd3AtaW5jbHVkZXMvZnVuY3Rpb25z LnBocD9yZXY9NDcyNQoKZnVuY3Rpb24gdHJ1X3BvZGNhc3RfbGluaygkYXR0cykgewoJJHBv ZGNhc3RfdXJsID0gdHJ1X3BvZGNhc3RfZ2V0X3VybCgpOwoJaWYgKCRwb2RjYXN0X3VybCkg ewoJCSRsaW5rdGV4dCA9ICgkYXR0c1snbGlua3RleHQnXSA/ICRhdHRzWydsaW5rdGV4dCdd IDogJHBvZGNhc3RfdXJsKTsKCQl1bnNldCgkYXR0c1snbGlua3RleHQnXSk7CgoJCSRsaW5r ID0gIjxhIGhyZWY9XCIkcG9kY2FzdF91cmxcIiByZWw9XCJlbmNsb3N1cmVcIiI7CgkJZm9y ZWFjaCAoJGF0dHMgYXMgJGtleSA9PiAkdmFsdWUpIHsKCQkJJGxpbmsgLj0gIiAka2V5PVwi JHZhbHVlXCIiOwoJCX0KCQkkbGluayAuPSAiPiRsaW5rdGV4dDwvYT4iOwoKCQlyZXR1cm4g JGxpbms7Cgl9Cn0KCmZ1bmN0aW9uIHRydV9wb2RjYXN0X2lmX3BvZGNhc3QoJGF0dHMsICR0 aGluZykgewogICAgICAgIHJldHVybiBwYXJzZShFdmFsRWxzZSgkdGhpbmcsIHRydV9wb2Rj YXN0X2dldF91cmwoKSkpOwp9CgpmdW5jdGlvbiB0cnVfcG9kY2FzdF9nZXRfdXJsKCRhdHRz ID0gYXJyYXkoKSkgewoJZ2xvYmFsICR0aGlzYXJ0aWNsZTsKCWV4dHJhY3QobEF0dHMoYXJy YXkoJ2Z1bGwnCQkJPT4gJzAnLAoJCQkJCQknY29udmVydG51bWJlcicJPT4gJzEnLAoJCQkJ CQkncHJvdG9jb2wnCQk9PiAnaHR0cDovLycKCQkJCQkJKSwgJGF0dHMsIDApKTsKCgkkdXJs ID0gdHJpbSgkdGhpc2FydGljbGVbJ3RydV9wb2RjYXN0J10pOwoKCWlmICgkY29udmVydG51 bWJlciAmJiBpc19udW1lcmljKCR1cmwpKSB7CgkJJHVybCA9IGZpbGVfZG93bmxvYWRfbGlu ayhhcnJheSgnaWQnID0+ICR1cmwpLCAnJyk7Cgl9CgoJaWYgKCRmdWxsKSB7CgkJcmV0dXJu IHRydV9wb2RjYXN0X2NsZWFuX3VybCgkdXJsLCAkcHJvdG9jb2wpOwoJfSBlbHNlIHsKCQly ZXR1cm4gJHVybDsKCX0KfQoKZnVuY3Rpb24gdHJ1X3BvZGNhc3RfY2xlYW5fdXJsKCR1cmws ICRwcm90b2NvbCkgewoJJHBhcnRzID0gcGFyc2VfdXJsKCR1cmwpOwoJaWYgKCRwYXJ0c1sn aG9zdCddKSB7CgkJcmV0dXJuICR1cmw7Cgl9IGVsc2UgewoJCXJldHVybiAkcHJvdG9jb2wg LiAkX1NFUlZFUlsnSFRUUF9IT1NUJ10gLiAoJHBhcnRzWydwb3J0J10gPyAnOicuJHBhcnRz Wydwb3J0J10gOiAnJykgLiAkcGFydHNbJ3BhdGgnXSAuICgkcGFydHNbJ3F1ZXJ5J10gPyAn PycuJHBhcnRzWydxdWVyeSddIDogJycpOwoJfQp9CgoKcmVnaXN0ZXJfY2FsbGJhY2soJ3Ry dV9wb2RjYXN0X3Jzc19oYW5kbGVyX3JzcycsICdyc3NfZW50cnknKTsKZnVuY3Rpb24gdHJ1 X3BvZGNhc3RfcnNzX2hhbmRsZXJfcnNzKCRldmVudCwgJHN0ZXApe3JldHVybiB0cnVfcG9k Y2FzdF9yc3NfaGFuZGxlcihmYWxzZSk7fQpyZWdpc3Rlcl9jYWxsYmFjaygndHJ1X3BvZGNh c3RfcnNzX2hhbmRsZXJfYXRvbScsICdhdG9tX2VudHJ5Jyk7CmZ1bmN0aW9uIHRydV9wb2Rj YXN0X3Jzc19oYW5kbGVyX2F0b20oJGV2ZW50LCAkc3RlcCl7cmV0dXJuIHRydV9wb2RjYXN0 X3Jzc19oYW5kbGVyKHRydWUpO30KCmZ1bmN0aW9uIHRydV9wb2RjYXN0X3Jzc19oYW5kbGVy KCRhdG9tKQp7CgkkcmF3X3VybCA9IHRydV9wb2RjYXN0X2dldF91cmwoYXJyYXkoJ2NvbnZl cnRudW1iZXInID0+ICcwJykpOwoJaWYgKCRyYXdfdXJsKSB7CgkJJGRpcmVjdF91cmwgPSAk cmF3X3VybDsKCQlpZiAoaXNfbnVtZXJpYygkcmF3X3VybCkpIHsKCQkJJHJzID0gc2FmZV9y b3coIioiLCAidHhwX2ZpbGUiLCAnaWQ9Jy5pbnR2YWwoJHJhd191cmwpKTsKCQkJaWYgKCRy cykgewoJCQkJJGRpcmVjdF91cmwgPSBodSAuICcvZmlsZXMvJyAuICRyc1snZmlsZW5hbWUn XTsKCQkJfQoJCX0KCQkkcG9kY2FzdF91cmwgPSB0cnVfcG9kY2FzdF9nZXRfdXJsKGFycmF5 KCdmdWxsJyA9PiAnMScpKTsKCQlyZXR1cm4gdHJ1X3BvZGNhc3RfZ2VuZXJhdGVfZW5jbG9z dXJlKCRkaXJlY3RfdXJsLCAkcG9kY2FzdF91cmwsICRhdG9tKTsKCX0gZWxzZSB7CgkJcmV0 dXJuOwoJfQp9CgpmdW5jdGlvbiB0cnVfcG9kY2FzdF9nZW5lcmF0ZV9lbmNsb3N1cmUoJGRp cmVjdF91cmwsICRwb2RjYXN0X3VybCwgJGF0b20pIHsKCSRsZW5ndGggPSAkdHlwZSA9IGZh bHNlOwoKCSRoZWFkZXJzID0gdHJ1X3BvZGNhc3RfZ2V0X2hlYWRlcnNfZm9yKCRkaXJlY3Rf dXJsKTsKCWlmICgkaGVhZGVycykgewoJCSR0eXBlID0gJGhlYWRlcnNbJ2NvbnRlbnQtdHlw ZSddOwoJCSRsZW5ndGggPSAkaGVhZGVyc1snY29udGVudC1sZW5ndGgnXTsKCX0KCgkkeG1s X21pZCA9ICgkdHlwZSA/ICIgdHlwZT1cIiR0eXBlXCIiIDogIiIpIC4gKCRsZW5ndGggPyAi IGxlbmd0aD1cIiRsZW5ndGhcIiIgOiAiIik7CglpZiAoJGF0b20pCgkJJHhtbCA9ICI8bGlu ayByZWw9XCJlbmNsb3N1cmVcIiBocmVmPVwiJHBvZGNhc3RfdXJsXCIiIC4gJHhtbF9taWQg LiAiIC8+IjsKCWVsc2UKCQkkeG1sID0gIjxlbmNsb3N1cmUgdXJsPVwiJHBvZGNhc3RfdXJs XCIiIC4gJHhtbF9taWQgLiAiIC8+IjsKCglyZXR1cm4gJHhtbC5uOwp9CgpmdW5jdGlvbiB0 cnVfcG9kY2FzdF9nZXRfaGVhZGVyc19mb3IoJHVybCkgewoJJE1BWF9SRURJUkVDVFMgPSA1 OwoJJFNPQ0tFVF9DT05ORUNUX1RJTUVPVVQgPSAzOwoKCSRyZWRpcmVjdHMgPSAwOwoJd2hp bGUgKCRyZWRpcmVjdHMrKyA8ICRNQVhfUkVESVJFQ1RTKSB7CgkJJHBhcnRzID0gcGFyc2Vf dXJsKCR1cmwpOwoJCSRmaWxlID0gJHBhcnRzWydwYXRoJ10gLiAoJHBhcnRzWydxdWVyeSdd ID8gJz8nLiRwYXJ0c1sncXVlcnknXSA6ICcnKTsKCQkkaG9zdCA9ICgkcGFydHNbJ2hvc3Qn XSA/ICRwYXJ0c1snaG9zdCddIDogJF9TRVJWRVJbJ0hUVFBfSE9TVCddKTsKCQkkcG9ydCA9 IChpc3NldCgkcGFydHNbJ3BvcnQnXSkgPyAkcGFydHNbJ3BvcnQnXSA6IDgwKTsKCgkJJGZw ID0gQGZzb2Nrb3BlbigkaG9zdCwgJHBvcnQsICRlcnJfbnVtLCAkZXJyX21zZywgJFNPQ0tF VF9DT05ORUNUX1RJTUVPVVQpOwoJCWlmICghJGZwKQoJCQlyZXR1cm4gZmFsc2U7CgoJCSRy ZXNwb25zZSA9ICcnOwoJCSRoZWFkID0gIkhFQUQgJGZpbGUgSFRUUC8xLjFcclxuSE9TVDog JGhvc3RcclxuVXNlci1BZ2VudDogIiAuICRwbHVnaW5bJ25hbWUnXSAuICIvIiAuICRwbHVn aW5bJ3ZlcnNpb24nXSAuICJcclxuXHJcbiI7CgkJZnB1dHMoJGZwLCAkaGVhZCk7CgkJd2hp bGUgKCFmZW9mKCRmcCkgJiYgc3RycG9zKCRyZXNwb25zZSwgIlxyXG5cclxuIikgPT0gZmFs c2UpCgkJCSRyZXNwb25zZSAuPSBmZ2V0cygkZnAsIDIwNDgpOwoJCWZjbG9zZSgkZnApOwoK CQkvL3VnbHkKCQlwcmVnX21hdGNoKCcvLiooWzAtOV17M30pLiovJywgJHJlc3BvbnNlLCAk cmV0dXJuKTsKCQkkY29kZSA9ICRoZWFkZXJzWydyZXNwb25zZSddID0gJHJldHVyblsxXTsg Ly8gSFRUUCByZXNwb25zZSBjb2RlCgoJCXByZWdfbWF0Y2hfYWxsKCcvKC4qPyk6ICguKilc ci8nLCAkcmVzcG9uc2UsICRtYXRjaGVzKTsKCQkkY291bnQgPSBjb3VudCgkbWF0Y2hlc1sx XSk7CgkJZm9yICgkaSA9IDA7ICRpIDwgJGNvdW50OyAkaSsrKSB7CgkJCSRrZXkgPSBzdHJ0 b2xvd2VyKCRtYXRjaGVzWzFdWyRpXSk7CgkJCSRoZWFkZXJzWyIka2V5Il0gPSAkbWF0Y2hl c1syXVskaV07CgkJfQoKCQlpZiAoKCczMDInID09ICRjb2RlIHx8ICczMDEnID09ICRjb2Rl KSAmJiBpc3NldCgkaGVhZGVyc1snbG9jYXRpb24nXSkpCgkJCSR1cmwgPSAkaGVhZGVyc1sn bG9jYXRpb24nXTsKCQllbHNlCgkJCXJldHVybiAkaGVhZGVyczsKCX0KCXJldHVybiBmYWxz ZTsKfQoiO3M6ODoiaGVscF9yYXciO3M6MzIyNzoiVG8gbGVhcm4gbW9yZSBhYm91dCB0cnVf cG9kY2FzdCwgY2hlY2sgb3V0IHRoZSAiaW50cm9kdWN0b3J5IGFydGljbGUiOi9ibG9nLzU0 Mi90cnVfcG9kY2FzdC1hLXBvZGNhc3RpbmctcGx1Z2luLWZvci10ZXh0cGF0dGVybiwgdGhl ICJyZWxlYXNlcyBwYWdlIjpyZWZlcmVuY2UvNTM5L3RydV9wb2RjYXN0LXJlbGVhc2VzLCBv ciB0aGUgImZlYXR1cmUgbGlzdCI6cmVmZXJlbmNlLzU0MC90cnVfcG9kY2FzdC1mZWF0dXJl LWxpc3QuCgpoMygjY29uZmlnKS4gQ29uZmlndXJhdGlvbgoKaDQuIFN0ZXAgMTogUmVuYW1l IG9uZSBvZiB5b3VyIGN1c3RvbSBmaWVsZHMKCnRydV9wb2RjYXN0IHVzZXMgYSBjdXN0b20g ZmllbGQgbmFtZWQgInRydV9wb2RjYXN0Ii4gIE5hbWUgb25lIG9mIHlvdXIgdW51c2VkIGN1 c3RvbSBmaWVsZHMgInRydV9wb2RjYXN0IiBvbiB0aGUgQWRtaW4gLT4gUHJlZmVyZW5jZXMg LT4gQWR2YW5jZWQgdGFiLgoKPHR4cDppbWFnZSBpZD0iMTciIGNsYXNzPSJkaWFncmFtIiAv PgoKaDQuIFN0ZXAgMjogU3RhcnQgcG9kY2FzdGluZyEKCldoZW5ldmVyIHlvdSB3YW50IHRv IGNyZWF0ZSBhIG5ldyBlcGlzb2RlLCBjcmVhdGUgYSBuZXcgYXJ0aWNsZSBhbmQgcHV0IHRo ZSBVUkwgb2YgdGhlIG1lZGlhIGZpbGUgaW50byB0aGUgQHRydV9wb2RjYXN0QCBmaWVsZCBp biBUZXh0cGF0dGVybi4gIChUaGUgZmllbGQgd2lsbCBiZSBoaWRpbmcgYmVoaW5kIHRoZSAi QWR2YW5jZWQgT3B0aW9ucyIgbGluayBvbiB0aGUgbGVmdCBzaWRlIG9mIHRoZSAiV3JpdGUi IHBhZ2UuKSAgVGhhdCdzIGFsbCBpdCB0YWtlcyAtIHRoZSBmaWxlIHdpbGwgYXBwZWFyIGlu IHlvdXIgUlNTIGFuZCBBdG9tIGZlZWRzIGFzIGFuIGVuY2xvc3VyZSwgYW5kIHBvZGNhc3Qg Y2xpZW50cyAoaVR1bmVzLCBmb3IgZXhhbXBsZSkgd2lsbCBpZGVudGlmeSBpdCBjb3JyZWN0 bHkuCgpZb3UnbGwgcHJvYmFibHkgd2FudCB0byBpbnN0YWxsIFJvYiBTYWJsZSdzICJyc3Nf YWRtaW5fc2hvd19hZHZfb3B0cyI6aHR0cDovL3d3dy53aWxzaGlyZW9uZS5jb20vdGV4dHBh dHRlcm4tcGx1Z2lucy9yc3MtYWRtaW4tc2hvdy1hZHYtb3B0cywgd2hpY2ggd2lsbCBhdXRv bWF0aWNhbGx5IGV4cGFuZCB0aGUgIkFkdmFuY2VkIE9wdGlvbnMiIHNlY3Rpb24gb2YgdGhl ICJXcml0ZSIgcGFnZSwgd2hlbiB5b3UgYXJlIHdyaXRpbmcgYXJ0aWNsZXMuICBUaGF0IGdp dmVzIHlvdSBlYXN5IGFjY2VzcyB0byB0aGUgY3VzdG9tIGZpZWxkcy4KCmg0LiBTdGVwIDM6 IEluY2x1ZGUgbGlua3MgaW4geW91ciBhcnRpY2xlcyAoT3B0aW9uYWwpCgpGb3IgcGVvcGxl IHJlYWRpbmcgeW91ciBzaXRlIHZpYSB0aGVpciB3ZWIgYnJvd3NlciwgeW91IGNhbiBsaW5r IHRvIHRoZSBtZWRpYSBmaWxlIGZyb20geW91ciBhcnRpY2xlcyB3aXRoIHNvbWV0aGluZyBs aWtlOgoKPHByZT48dHhwOnRydV9wb2RjYXN0X2lmX3BvZGNhc3Q+ClRoaXMgYXJ0aWNsZSBo YXMgYSBwb2RjYXN0ISAgPHR4cDp0cnVfcG9kY2FzdF9saW5rIGxpbmt0ZXh0PSJSaWdodCBo ZXJlISIgLz4KPHR4cDplbHNlIC8+Ck5vIHBvZGNhc3QgaGVyZSEKPC90eHA6dHJ1X3BvZGNh c3RfaWZfcG9kY2FzdD48L3ByZT4KCmg0LiBTdGVwIDQ6IFVzZSBhIGNhdGVnb3J5IHRvIGNy ZWF0ZSBhIHBvZGNhc3Qtb25seSBmZWVkIChPcHRpb25hbCkKCllvdSBkb24ndCBoYXZlIHRv IGNyZWF0ZSBhIHNwZWNpYWwgUlNTIGZlZWQgZm9yIHBvZGNhc3RzIC0gdGhlICJlbmNsb3N1 cmVzIiB3aWxsIHNpbXBseSBzaG93IHVwIGluIHlvdXIgbm9ybWFsIGZlZWQocykgYW55IHRp bWUgeW91IHNwZWNpZnkgYSBtZWRpYSBmaWxlIC0gYnV0IHlvdSBjYW4gZG8gc28gaWYgeW91 IHdhbnQuICBTaW1wbHkgY3JlYXRlIGEgbmV3IGNhdGVnb3J5IGZvciBhbGwgeW91ciBwb2Rj YXN0aW5nLCBhbmQgdXNlIHRoZSBmZWVkIGZvciB0aGF0IGNhdGVnb3J5IGFzIHlvdXIgcG9k Y2FzdC1vbmx5IGZlZWQuCgpoNC4gU3RlcCA1OiBPdGhlciB0eXBlcyBvZiAicG9kY2FzdHMi IChPcHRpb25hbCkKCllvdSBkb24ndCBoYXZlIHRvIGxpbWl0IHlvdXJzZWxmIHRvIGF1ZGlv OyB0cnVfcG9kY2FzdCBzdXBwb3J0cyBhbnkgdHlwZSBvZiBtZWRpYSAodmlkZW8sIGltYWdl cywgZXRjLikuICBBcyBsb25nIGFzIHlvdXIgc2VydmVyIGtub3dzIHRoZSBjb3JyZWN0IE1J TUUgdHlwZSBmb3IgeW91ciBtZWRpYSwgZXZlcnl0aGluZyBzaG91bGQgd29yay4KCmgzKCNy ZWZlcmVuY2UpLiBUYWcgcmVmZXJlbmNlCgpoNC4gQHRydV9wb2RjYXN0X2xpbmtACgpUaGlz IHRhZyB3aWxsIGdlbmVyYXRlIGFuIEA8YSBocmVmLi4uQCBsaW5rIGlmIHRoZSBjdXJyZW50 IGFydGljbGUgaGFzIGEgcG9kY2FzdCBVUkwgc2V0LiAgVGhlIGdlbmVyYXRlZCBsaW5rIHdp bGwgYXV0b21hdGljYWxseSBoYXZlIEByZWw9ImVuY2xvc3VyZSJAIHNldCBpbiBjYXNlIGFu IG9sZCBwb2RjYXN0IGNsaWVudCBpcyBsb29raW5nIGZvciBpdC4gIFlvdSBjYW4gcGFzcyBh bnkgYXR0cmlidXRlIHRvIHRoaXMgdGFnIGFuZCBpdCB3aWxsIGJlIHBhc3NlZCBvbiB0byB0 aGUgQDxhPkAgdGFnLCBleGNlcHQgQGxpbmt0ZXh0QCBhcyBpbmRpY2F0ZWQgYmVsb3cuCgpo NS4gQXR0cmlidXRlczoKCiogQGxpbmt0ZXh0QCB3aWxsIHNldCB0aGUgY29udGVudCBvZiB0 aGUgQDxhPi4uLjwvYT5AIGxpbmsuICBJZiB5b3UgZG9uJ3Qgc3BlY2lmeSBAbGlua3RleHRA LCBpdCBkZWZhdWx0cyB0byB0aGUgVVJMIG9mIHRoZSBtZWRpYS4KKiBBbnkgb3RoZXIgYXR0 cmlidXRlIGRlc2lyZWQgY2FuIGJlIHBhc3NlZCB0byB0aGUgQDxhPkAuICBGb3IgZXhhbXBs ZSwgQDx0eHA6dHJ1X3BvZGNhc3RfbGluayBsaW5rdGV4dD0idGVzdCIganVuaz0id29ydGh5 IiAvPkAgd2lsbCBnZW5lcmF0ZSB0aGlzIEhUTUw6IEA8YSBocmVmPSIvc29tZS9tZWRpYS51 cmwiIGp1bms9IndvcnRoeSI+dGVzdDwvYT5ACgpoNC4gQHRydV9wb2RjYXN0X2lmX3BvZGNh c3RACgpUaGlzIGNvbmRpdGlvbmFsIHRhZyB3aWxsIHJlbmRlciBpdHMgY29udGVudHMgaWYg dGhlIGN1cnJlbnQgYXJ0aWNsZSBoYXMgYW4gYXNzb2NpYXRlZCBtZWRpYSBmaWxlIChpbiB0 aGUgQHRydV9wb2RjYXN0QCBjdXN0b20gZmllbGQpLgoKaDQuIEB0cnVfcG9kY2FzdF9nZXRf dXJsQAoKVGhpcyB0YWcgd2lsbCByZXR1cm4gdGhlIFVSTCBvZiBhbiBhc3NvY2lhdGVkIG1l ZGlhIGZpbGUsIGlmIGFueS4iO3M6MzoibWQ1IjtzOjMyOiJhMWNhYjhmMWRhZDFkOThmMGI3 ZDVlNWE0MzVlNjkwMyI7fQ==