Textpattern CMS support forum
You are not logged in. Register | Login | Help
- Topics: Active | Unanswered
Pages: 1
#1 2009-12-16 15:25:32
- chume
- Member
- Registered: 2009-12-03
- Posts: 27
[request] Popup image plugin
I need help getting Deans dca_pop and glx_image plugins. I have not been successfully getting them so far from all the available links.
Any clue?
Thank you in adavance.
Offline
Re: [request] Popup image plugin
here’s dca_pop
YToxMDp7czo0OiJuYW1lIjtzOjc6ImRjYV9wb3AiO3M6NjoiYXV0aG9yIjtzOjEwOiJEZWFuIEFsbGVuIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIyOiJodHRwOi8vdGV4dHBhdHRlcm4uY29tIjtzOjc6InZlcnNpb24iO3M6MzoiMC4xIjtzOjExOiJkZXNjcmlwdGlvbiI7czo2MDoiQ3JlYXRlcyBzaXplZCBwb3B1cCB3aW5kb3dzIGZvciBpbWFnZXMgc3RvcmVkIGluIFRleHRwYXR0ZXJuIjtzOjQ6ImhlbHAiO3M6MzYxOiI8cD5XaWxsIGNyZWF0ZSBhIGxpbmsgdG8gYSBzaXplZCBwb3B1cCB3aW5kb3cgdG8gZGlzcGxheSBhbiBpbWFnZS4gVGhlIGltYWdlIG11c3QgaGF2ZSBiZWVuIHVwbG9hZGVkIHZpYSB0aGUgVGV4dHBhdHRlcm4gaW1hZ2UgdGFiPC9wPgoJPHA+WW91IGNhbiB1c2UgZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBpbWFnZSwgb3IgaXRzIGlkPC9wPgoJPHA+VXNhZ2U6Cgk8YnIgLz4gJiM2MDt0eHA6ZGNhX3BvcCBpZD0iMTkiJiM2MjthIHBpY3R1cmUmIzYwOy90eHA6ZGNhX3BvcCYjNjI7Cgk8YnIgLz4gJiM2MDt0eHA6ZGNhX3BvcCBuYW1lPSJodWdvLmpwZyImIzYyO2Fub3RoZXIgcGljdHVyZSYjNjA7L3R4cDpkY2FfcG9wJiM2Mjs8L3A+IjtzOjQ6ImNvZGUiO3M6NTk2OiIKCglmdW5jdGlvbiBkY2FfcG9wKCRhdHRzLCR0aGluZykgCgl7CgkJZ2xvYmFsICRwYXRoX2Zyb21fcm9vdCwkaW1nX2RpcjsKCQlpZiAoaXNfYXJyYXkoJGF0dHMpKSBleHRyYWN0KCRhdHRzKTsKCQkJCQoJCWlmICghZW1wdHkoJG5hbWUpKSB7CgkJCSRnZXQgPSBzYWZlX3JvdygiKiIsInR4cF9pbWFnZSIsIm5hbWU9JyRuYW1lJyIpOwoJCX0gZWxzZWlmICghZW1wdHkoJGlkKSkgewoJCQkkZ2V0ID0gc2FmZV9yb3coIioiLCJ0eHBfaW1hZ2UiLCJpZD0nJGlkJyIpOwoJCX0gZWxzZSByZXR1cm47CgkKCQlpZiAoJGdldCkgeyBleHRyYWN0KCRnZXQpOyB9IGVsc2UgeyByZXR1cm47IH07CgkJcmV0dXJuIGpvaW4oIiIsYXJyYXkoCgkJCSIgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cIiIuJHBhdGhfZnJvbV9yb290LiRpbWdfZGlyLiIvIi4kaWQuJGV4dC4iXCIiLAoJCQkiIG9uY2xpY2s9XCIiLCJ3aW5kb3cub3Blbih0aGlzLmhyZWYsICdwb3B1cHdpbmRvdycsICd3aWR0aD0iLCR3LCIsaGVpZ2h0PSIsJGgsCgkJCSIsc2Nyb2xsYmFycyxyZXNpemFibGUnKTsgcmV0dXJuIGZhbHNlO1wiPiIsCgkJCSR0aGluZywiPC9hPiIKCQkpKTsKCX0KCiI7czo0OiJ0eXBlIjtzOjE6IjAiO3M6NToib3JkZXIiO3M6MToiNSI7czozOiJtZDUiO3M6MzI6IjQyY2IyYzk0NGVhY2JkNzQ0MTJkNThhNGU0YTI3MDU4Ijt9
and glx_admin_image
YToxMDp7czo0OiJuYW1lIjtzOjE1OiJnbHhfYWRtaW5faW1hZ2UiO3M6NjoiYXV0aG9yIjtzOjE1OiJkZXIgR3JhdU1laXN0ZXIiO3M6MTA6ImF1dGhvcl91cmkiO3M6NDc6Imh0dHA6Ly9ncmF1aGlybi5vcmcvcGF0dGVybnRleHQvZ2x4X2FkbWluX2ltYWdlIjtzOjc6InZlcnNpb24iO3M6NToiNC4wLjEiO3M6MTE6ImRlc2NyaXB0aW9uIjtzOjQ1OiJhZHZhbmNlZCBpbWFnZSBlZGl0aW5nIGFuZCB0aHVtYm5haWwgY3JlYXRpb24iO3M6NDoiaGVscCI7czo0MDU3OiI8cD48aDE+Z2x4X2FkbWluX2ltYWdlX3Jlc2l6ZTwvaDE+PGJyIC8+CjxwPlJlc2l6ZSBpbWFnZSBhbmQgY3JlYXRlcyBhIHRodW1ibmFpbCBvbiB1cGxvYWQuIERldmVsb3BlZCBieSA8YSBocmVmPSJodHRwOi8vam9oYW4uZ2FsYXhlbi5uZXQvIj5Kb2hhbiBOaWxzc29uPC9hPiBhbmQgbWFpbnRhaW5lZCBieSA8YSBocmVmPSJodHRwOi8vZ3JhdWhpcm4ub3JnLyI+ZGVyIEdyYXVNZWlzdGVyPC9hPi48L3A+PC9wPgoKCTxwPjxoMj5DU1M8L2gyPjxiciAvPgo8cD5UaGlzIHBsdWdpbiBhbHNvIGNyZWF0ZXMgYSBzdHlsZXNoZWV0IG5hbWVkIGdseF9hZG1pbl9pbWFnZV9yZXNpemUsIHRoYXQgY2FuIGJlIGZvdW5kIHVuZGVyIHRoZSBzdHlsZSB0YWIuPC9wPjwvcD4KCgk8cD48cD5EZWZhdWx0IHN0eWxlc2hlZXQ8L3A+PC9wPgoKPHByZT4KPGNvZGU+CmxhYmVsLmlubGluZSB7Cm1hcmdpbjogNXB4Owp9CgoJPHA+bGFiZWwuYmxvY2sgewptYXJnaW46IDVweCA1cHggMCAwOwpkaXNwbGF5OiBibG9jazsKfTwvcD4KCgk8cD4ucmVzaXplIHsKZmxvYXQ6IGxlZnQ7Cn08L3A+CgoJPHA+LnJvdGF0ZSB7CmZsb2F0OiByaWdodDsKfTwvcD4KCgk8cD5ociB7CmJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjREREREREOwpib3JkZXItdG9wOiBub25lOwpib3JkZXItcmlnaHQ6IG5vbmU7CmJvcmRlci1sZWZ0OiBub25lOwpoZWlnaHQ6IDFweDsKY2xlYXI6IGJvdGg7Cn0KPC9jb2RlPgo8L3ByZT48L3A+CgoJPHA+PGgyPlJlcXVpcmVtZW50czwvaDI+PGJyIC8+Cjx1bD48YnIgLz4KPGxpPlRleHRwYXR0ZXJuIDQuMC4wKzwvbGk+PGJyIC8+CjxsaT5HRCAyLjAuMSBvciBsYXRlcjwvbGk+PGJyIC8+CjxsaT5hbmQgc29tZSBpbWFnZXMgKGpwZykgdG8gdGVzdCBpdCB3aXRoPC9saT48YnIgLz4KPC91bD48L3A+CgoJPHA+PGgyPkNoYW5nZWxvZzwvaDI+PC9wPgoKICAgIDxwPjxzdHJvbmc+NC4wLjE8L3N0cm9uZz4gMjAwNS0xMC0xNDwvcD4KCiAgICA8dWwgY2xhc3M9ImNoYW5nZWxvZyI+CiAgICA8bGk+CiAgICAgICAgb3B0aW1pemF0aW9uIG9mIHNxdWFyZSBjcm9wcGluZyAoY3V0dGluZyBvbmx5IHRoZSBsb25nZXN0IHNpZGUgb2YgdGhlIHBpY3R1cmUpCiAgICAgICAgKHRoYW5rcyA8YSBocmVmPSJodHRwOi8vd3d3LmJ1cmllZHNob3ZlbC5jb20iPmhlaWtraTc0PC9hPikKICAgIDwvbGk+CiAgICA8L3VsPgoKICAgIDxwPjxzdHJvbmc+MC41LjFiLzAuNS4yYjwvc3Ryb25nPiAyMDA1LTA4LTIwPC9wPgoKICAgIDx1bCBjbGFzcz0iY2hhbmdlbG9nIj4KICAgIDxsaT5GaXhlZCBzb21lIHNtYWxsIGJ1ZyBpbnRyb2R1Y2VkIHdpdGggVGV4dHBhdHRlcm4gNC4wIChnaG8pPC9saT4KICAgIDwvdWw+CgogICAgPHA+PHN0cm9uZz4wLjViPC9zdHJvbmc+IDIwMDUtMDQtMDQ8L3A+CgogICAgPHVsIGNsYXNzPSJjaGFuZ2Vsb2ciPgogICAgPGxpPkNvb2tpZSB0aGF0IHNhdmVzIHRoZSBsYXRlc3QgbGVuZ3RoIGZvciB0aHVtYiBhbmQgbGFyZ2UgaW1hZ2UsIGZyb20gYW4gaWRlYSBieSBncmF1bWVpc3RlcjwvbGk+CiAgICAgICAgPGxpPkNoZWNrYm94IHRoYXQgbWFrZXMgaXQgcG9zc2libGUgdG8gcmVzaXplIGltYWdlIG9uIHVwbG9hZCB3aXRoIGxhdGVzdCBzdG9yZWQgdmFsdWUuPC9saT4KICAgICAgICA8bGk+SW1hZ2Ugb3B0cyBub3cgYXBwZWFycyBvbiB0aHVtYm5haWwgaW5zZXJ0IGFuZCBpbWFnZSByZXBsYWNlLCB0aGFua3MgWmlRPC9saT4KICAgICAgICA8bGk+U3VwcG9ydCBmb3IgaW1hZ2Ugcm90YXRlIGZvciBwaHAgNC4zLjAgb3IgbG93ZXIsIHRoYW5rcyBUb2JpYXMgRWluYXJzc29uPC9saT4KICAgICAgICA8bGk+R0QgdmVyc2lvbiBjaGVjaywgZnVuY3Rpb24gZnJvbSBNRFAgQXV0b21hdGljIFJlc2l6ZSBhbmQgVGh1bWJuYWlsIGZvciB0ZXh0cGF0dGVybiBieSA8YSBocmVmPSJodHRwOi8vd3d3LnB1cmVwaG90b3Nob3AuY29tIj5DYWdlZDwvYT48L2xpPgogICAgPC91bD4KCiAgICA8cD48c3Ryb25nPjAuNGI8L3N0cm9uZz4gMjAwNS0wMy0zMDxiciAvPgo8YnIgLz4KWmlRIGFkZGVkIHRoZSBmb2xsb3dpbmc8L3A+CgogICAgPHVsIGNsYXNzPSJjaGFuZ2Vsb2ciPgogICAgPGxpPlN1Ym1pdCBidXR0b24sIG5vIG5lZWQgdG8gdXBsb2FkIGFuIGltYWdlIHRvIGNyZWF0ZSB0aHVtYm5haWwsIHNxdWFyZSB0aHVtYm5haWwgb3IgdG8gcmVzaXplIGltYWdlIGFueW1vcmUuPC9saT4KICAgICAgICA8bGk+Q2hlY2tib3gsIGlmIHlvdSB3YW50IHRvIHJlc2l6ZSB0aGUgbGFyZ2UgaW1hZ2U8L2xpPgogICAgICAgIDxsaT5RdWFsaXR5IGlucHV0IGZpZWxkIGZvciB0aHVtYm5haWwgYW5kIGxhcmdlIGltYWdlLCBidXQgdGhpcyB0d28gZmllbGRzIGFyZSBjb21tZW50ZWQgb3V0IHJpZ2h0IG5vdywgcGVyc29uYWxseSBpIHRoaW5rIGl0cyB0b28gY2x1dHRlcmVkIHRvIGhhdmUgdGhlbSB0aGVyZSwgYnV0IHlvdSBjb3VsZCBjb21tZW50IHRoZW0gb3V0IGlmIHlvdSB3YW50IHRoZW0sIHRoZSB2YWx1ZXMgYnkgZGVmYXVsdCBpcyA5MCBmb3IgdGh1bWJzIGFuZCA4MCBmb3IgbGFyZ2UgaW1hZ2VzLjwvbGk+CiAgICA8L3VsPgoKICAgIDxwPlRoZSBiZWhhdmlvciBmb3IgdGhlIHBsdWdpbiBoYXMgY2hhbmdlZCBhIGJpdCBzaW5jZSB0aGlzIHZlcnNpb24sIG9uIHVwbG9hZCB0aGUgcGx1Z2luIHdpbGwgb25seSBjcmVhdGVzIGEgdGh1bWJuYWlsLCBubyByZXNpemUgaXMgbm93IGRvbmUuIFdoZW4gcmVwbGFjaW5nIGEgaW1hZ2UgaXQgb25seSByZXBsYWNlIHRoZSBpbWFnZSwgbm8gcmVzaXplIGlzIGRvbmUgb3IgdGh1bWJuYWlsIGlzIGNyZWF0ZWQuPC9wPgoKICAgIDxwPk90aGVyIHVwZGF0ZXM8L3A+CgogICAgPHVsIGNsYXNzPSJjaGFuZ2Vsb2ciPgogICAgPGxpPkltYWdlIHJvdGF0aW5nLCAxODAsIDkwQ1csIDkwQ0NXLCByZXF1aXJlcyBwaHAgNC4zLjAgb3IgZ3JlYXRlcjwvbGk+CiAgICAgICAgPGxpPlBsdWdpbiByZW5hbWVkIHRvIGdseF9hbWluX2ltYWdlIGluc3RlYWQgb2YgZ2x4X2FkbWluX2ltYWdlX3Jlc2l6ZTwvbGk+CiAgICAgICAgPGxpPlN0eWxlc2hlZXQgcmVuYW1lZCB0byBnbHhfaW1hZ2VfYWRtaW4sIGRlbGV0ZSBvbGQgb25lLCBJIGFsc28gYWRkZWQgc29tZSBuZXcgcnVsZXMgdG8gdGhlIHN0eWxlc2hlZXQ8L2xpPgogICAgPC91bD4KCiAgICA8cD48c3Ryb25nPjAuM2I8L3N0cm9uZz4gMjAwNS0wMy0yNzwvcD4KICAgIDx1bCBjbGFzcz0iY2hhbmdlbG9nIj4KICAgIDxsaT4gSXRzIG5vdyBwb3NzaWJsZSB0byBjcmVhdGUgc3F1YXJlZCB0aHVtYm5haWxzPC9saT4KICAgICAgICA8bGk+QmV0dGVyIGpzIGZvciBvdXRwdXR0aW5nIHRoZSBuZXcgaW5wdXQgZmllbGRzPC9saT4KICAgICAgICA8bGk+Q2hhbmdlZCB0aGUgb3JkZXIgb2YgdGhlIGlucHV0IGZpZWxkcywgdGhleSBhcmUgbm93IGFib3ZlIHRoZSB1cGxvYWQgZmllbGQ8L2xpPgogICAgICAgIDxsaT5BIHN0eWxlc2hlZXQgbmFtZWQgZ2x4X2FkbWluX2ltYWdlX3Jlc2l6ZSBpcyBjcmVhdGVkIHVuZGVyIHRoZSBzdHlsZSB0YWIgZm9yIHNvbWUgdmVyeSBiYXNpYyBzdHlsaW5nIHVuZGVyIHRoZSBpbWFnZSBlZGl0IHBhZ2UuPC9saT4KICAgIDwvdWw+CgogICAgPHA+PHN0cm9uZz4wLjJiPC9zdHJvbmc+IDIwMDUtMDMtMjU8YnIgLz4KPGJyIC8+Ckl0IHN0aWxsIHVzZXMgdGhlIHNhbWUgdGVjaG5pYyB0byBtYW5pcHVsYXRlIHRoZSBpbWFnZSBidXQgaXQgaXMgbm93IHBvc3NpYmxlIHRvIChpbiB0aGUgaW1hZ2UgZWRpdCBwYWdlKTwvcD4KCiAgICA8dWwgY2xhc3M9ImNoYW5nZWxvZyI+CiAgICA8bGk+c3BlY2lmeSB0aGUgdmFsdWVzIGZvciB0aGUgdGh1bWIgYW5kIHRoZSBsYXJnZSBpbWFnZTwvbGk+CiAgICAgICAgPGxpPmRlY2lkZSBpZiB5b3Ugd2FudCB0byByZXNpemUgYW5kIGNyZWF0ZSBhIHRodW1ibmFpbCBvciBub3Q8L2xpPgogICAgPC91bD4KCiAgICA8cD48c3Ryb25nPjAuMWI8L3N0cm9uZz4gMjAwNS0wMy0yNTwvcD4KICAgIDx1bCBjbGFzcz0iY2hhbmdlbG9nIj4KICAgIDxsaT5GaXJzdCByZWxlYXNlPC9saT4KICAgIDwvdWw+IjtzOjQ6ImNvZGUiO3M6MjE3NTE6IgovLyBzZXQgdGhpcyB0byAxIHRvIGZvcmNlIG9sZCBtZXRob2Qgb2Ygc3F1YXJldGh1bWJwcm9kdWN0aW9uCmRlZmluZSgnTUVUSE9EJywgMik7CmlmIChAIHR4cGludGVyZmFjZSA9PSAnYWRtaW4nKSB7CiAgICByZWdpc3Rlcl9jYWxsYmFjaygiZ2x4X2FkbWluX2ltYWdlIiwgImltYWdlIik7CiAgICByZWdpc3Rlcl9jYWxsYmFjaygiZ2x4X2ltYWdlX29wdHMiLCAiaW1hZ2UiKTsKICAgIHJlZ2lzdGVyX2NhbGxiYWNrKCJnbHhfaW1hZ2VfZWRpdF9vcHRzIiwgImltYWdlIiwgInRodW1ibmFpbF9pbnNlcnQiKTsKICAgIHJlZ2lzdGVyX2NhbGxiYWNrKCJnbHhfaW1hZ2VfZWRpdF9vcHRzIiwgImltYWdlIiwgImltYWdlX3JlcGxhY2UiKTsKICAgIHJlZ2lzdGVyX2NhbGxiYWNrKCJnbHhfaW1hZ2VfZWRpdF9vcHRzIiwgImltYWdlIiwgImltYWdlX2VkaXQiKTsKfTsKZnVuY3Rpb24gZ2x4X2FkbWluX2ltYWdlKCRldmVudCwgJHN0ZXApIHsKICAgICRhY3Rpb24gPSBwcygiYWN0aW9uIikgPyBwcygiYWN0aW9uIikgOiAicmVzaXplIjsKICAgIHN3aXRjaCAoJGFjdGlvbikgewogICAgICAgIGNhc2UgInJlc2l6ZSI6CiAgICAgICAgICAgIGdseF9pbWFnZV9yZXNpemUoKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAicm90YXRlIjoKICAgICAgICAgICAgZ2x4X2ltYWdlX3JvdGF0ZSgpOwogICAgICAgICAgICBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICBnbHhfaW1hZ2VfcmVzaXplKCk7CiAgICB9Owp9Ci8qKgogKiBGdW5jdGlvbiBmcm9tIE1EUCBBdXRvbWF0aWMgUmVzaXplIGFuZCBUaHVtYm5haWwgZm9yIHRleHRwYXR0ZXJuCiAqIEJ5IENhZ2VkOiA8aHR0cDovL3d3dy5wdXJlcGhvdG9zaG9wLmNvbT4KICovCmZ1bmN0aW9uIGdseF9nZXRfZ2RfdmVyc2lvbigpIHsKICAgIGlmKCFmdW5jdGlvbl9leGlzdHMoJ2ltYWdlY3JlYXRldHJ1ZWNvbG9yJykpewogICAgICAgICRmdW5jdGlvbl9jcmVhdGUgPSAnaW1hZ2VjcmVhdGUnOwogICAgICAgICRmdW5jdGlvbl9jb3B5ID0gJ2ltYWdlY29weXJlc2l6ZWQnOwogICAgfSBlbHNlIHsKICAgICAgICAkZnVuY3Rpb25fY3JlYXRlID0gJ2ltYWdlY3JlYXRldHJ1ZWNvbG9yJzsKICAgICAgICAkZnVuY3Rpb25fY29weSA9ICdpbWFnZWNvcHlyZXNhbXBsZWQnOwogICAgfTsKICAgIHJldHVybiBhcnJheSgnY29weScgPT4gJGZ1bmN0aW9uX2NvcHksICdjcmVhdGUnID0+ICRmdW5jdGlvbl9jcmVhdGUpOwp9Ci8qKgogKiBSb3RhdGUgaW1hZ2UgcGhwIDQuMy4wIG9yIGxvd2VyCiAqIEJ5IFRvYmlhcyBFaW5hcnNzb24KICovCmZ1bmN0aW9uIGdseF9vbGRfaW1hZ2Vfcm90YXRlKCRzcmMsICRhbmdsZSl7CiAgICAvLyBjaGVjayBjdXJyZW50IEdEIHZlcnNpb24KICAgICRnZCA9IGdseF9nZXRfZ2RfdmVyc2lvbigpOwogICAgJHdpZHRoID0gaW1hZ2VzeCgkc3JjKTsKICAgICRoZWlnaHQgPSBpbWFnZXN5KCRzcmMpOwogICAgaWYoJGFuZ2xlID09IDkwIHx8ICRhbmdsZSA9PSAyNzApewogICAgICAgICRkc3QgPSAkZ2RbJ2NyZWF0ZSddKCRoZWlnaHQsJHdpZHRoKTsKICAgIH0gZWxzZXsKICAgICAgICAkZHN0ID0gJGdkWydjcmVhdGUnXSgkd2lkdGgsJGhlaWdodCk7CiAgICB9OwogICAgZm9yKCR5PTA7JHk8JGhlaWdodDskeSsrKXsKICAgICAgICBmb3IoJHg9MDskeDwkd2lkdGg7JHgrKyl7CiAgICAgICAgICAgIHN3aXRjaCgkYW5nbGUpewogICAgICAgICAgICAgICAgY2FzZSA5MDoKICAgICAgICAgICAgICAgICAgICBpbWFnZWNvcHkoJGRzdCwgJHNyYywgJGhlaWdodC0keS0xLCAkeCwgJHgsICR5LCAxLCAxKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgMTgwOgogICAgICAgICAgICAgICAgICAgIGltYWdlY29weSgkZHN0LCAkc3JjLCAkeCwgJHksICR3aWR0aC0keC0xLCAkaGVpZ2h0LSR5LTEsIDEsIDEpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAyNzA6CiAgICAgICAgICAgICAgICAgICAgaW1hZ2Vjb3B5KCRkc3QsICRzcmMsICR5LCAkd2lkdGgtJHgtMSwgJHgsICR5LCAxLCAxKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgaW1hZ2Vjb3B5KCRkc3QsICRzcmMsICR4LCAkeSwgJHgsICR5LCAxLCAxKTsKICAgICAgICAgICAgfTsKICAgICAgICB9OwogICAgfTsKICAgIGltYWdlZGVzdHJveSgkc3JjKTsKICAgIHJldHVybigkZHN0KTsKfQovKioKICogQ2hlY2sgaWYgdmFsdWUgaXMgcHJlY2VudAogKiBCeSBaaVEKICovCmZ1bmN0aW9uIHppcUlzUGVyY2VudCgkeCkgewogICAgaWYgKGlzX251bWVyaWMoJHgpKSB7CiAgICAgICAgJHRtcCA9IGludHZhbCgkeCk7CiAgICAgICAgaWYgKCR0bXAgPj0gMTAgJiYgJHRtcCA8PSAxMDApIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfTsKICAgIH07CiAgICByZXR1cm4gZmFsc2U7Cn0KZnVuY3Rpb24gZ2x4X2ltYWdlX3JvdGF0ZSgpIHsKICAgIGdsb2JhbCAkcGF0aF90b19zaXRlOwogICAgJHJvdGF0ZV92YWx1ZSA9IHBzKCJyb3RhdGVWYWx1ZSIpID8gcHMoInJvdGF0ZVZhbHVlIikgOiAwOwogICAgJGltYWdlX2lkID0gcHMoImlkIikgPyBwcygiaWQiKSA6IDA7CiAgICAkc291cmNlID0gSU1QQVRILiRpbWFnZV9pZC4nLmpwZyc7CiAgICAvLyBnZXQgdGhlIHJpZ2h0IGRlZ3JlZQogICAgJGRlZ3JlZXMgPSAwOwogICAgc3dpdGNoICgkcm90YXRlX3ZhbHVlKSB7CiAgICAgICAgY2FzZSAiMTgwIjoKICAgICAgICAgICAgJGRlZ3JlZXMgPSAxODA7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgIjkwQ1ciOgogICAgICAgICAgICAkZGVncmVlcyA9IDI3MDsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAiOTBDQ1ciOgogICAgICAgICAgICAkZGVncmVlcyA9IDkwOwogICAgICAgICAgICBicmVhazsKICAgIH07CiAgICAvLyByb3RhdGUgaW1hZ2UKICAgICRpbSA9IGltYWdlY3JlYXRlZnJvbWpwZWcoJHNvdXJjZSk7CiAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdpbWFnZXJvdGF0ZScpKSB7CiAgICAgICAgJGltID0gaW1hZ2Vyb3RhdGUoJGltLCAkZGVncmVlcywgMCk7CiAgICB9IGVsc2UgewogICAgICAgICRpbSA9IGdseF9vbGRfaW1hZ2Vfcm90YXRlKCRpbSwgJGRlZ3JlZXMpOwogICAgfTsKICAgIGltYWdlanBlZygkaW0sICRzb3VyY2UsIDk1KTsKICAgIGltYWdlZGVzdHJveSgkaW0pOwogICAgLy8gZ2V0IHRoZSBzaXplIGZyb20gdGhlIG5ldyBpbWFnZSwgYW5kIHVwZGF0ZSBkYXRhYmFzZQogICAgJHNpemUgPSBnZXRpbWFnZXNpemUoJHNvdXJjZSk7CiAgICBzYWZlX3VwZGF0ZSgndHhwX2ltYWdlJywgInc9JyIuJHNpemVbMF0uIicsaD0nIi4kc2l6ZVsxXS4iJyIsICJpZD0nJGltYWdlX2lkJyIpOwogICAgLy8gc2VuZCB1c2VyIHRvIHRoZSBpbWFnZSBlZGl0IHZpZXcKICAgIGhlYWRlcigiTG9jYXRpb246IGluZGV4LnBocD9ldmVudD1pbWFnZSZzdGVwPWltYWdlX2VkaXQmaWQ9Ii4kaW1hZ2VfaWQpOwp9CmZ1bmN0aW9uIGdseF9pbWFnZV9yZXNpemUoKSB7CiAgICBnbG9iYWwgJHBhdGhfdG9fc2l0ZTsKICAgICRkb19yZXNpemVfbGFyZ2UgPSBwcygiZG9SZXNpemVMYXJnZSIpID8gcHMoImRvUmVzaXplTGFyZ2UiKSA6IDA7CiAgICAkZG9fcmVzaXplX3RodW1iID0gcHMoImRvUmVzaXplVGh1bWIiKSA/IHBzKCJkb1Jlc2l6ZVRodW1iIikgOiAxOwogICAgJHNxdWFyZV9pbWFnZSA9IHBzKCJzcXVhcmUiKSA/IHBzKCJzcXVhcmUiKSA6IDA7CiAgICAvLyBjaGVjayBmb3Igc2F2ZWQgdmFsdWVzCiAgICAkbGFyZ2VWYWx1ZSA9IGNzKCJnbHhfaW1hZ2VfbGFyZ2UiKSA/IGNzKCJnbHhfaW1hZ2VfbGFyZ2UiKSA6IDUwMDsKICAgICR0aHVtYlZhbHVlID0gY3MoImdseF9pbWFnZV90aHVtYiIpID8gY3MoImdseF9pbWFnZV90aHVtYiIpIDogMTAwOwogICAgJGxhcmdlc3Rfc2lkZV9sYXJnZSA9IHBzKCJsYXJnZVNpemUiKSA/IHBzKCJsYXJnZVNpemUiKSA6ICRsYXJnZVZhbHVlOwogICAgJGxhcmdlc3Rfc2lkZV90aHVtYiA9IHBzKCJ0aHVtYlNpemUiKSA/IHBzKCJ0aHVtYlNpemUiKSA6ICR0aHVtYlZhbHVlOwogICAgJGltYWdlX2lkID0gcHMoImlkIikgPyBwcygiaWQiKSA6IG15c3FsX2luc2VydF9pZCgpOwogICAgJHF1YWxpdHlfdGh1bWIgPSB6aXFJc1BlcmNlbnQocHMoInRodW1iUXVhIikpID8gaW50dmFsKHBzKCJ0aHVtYlF1YSIpKSA6IDkwOwogICAgJHF1YWxpdHlfbGFyZ2UgPSB6aXFJc1BlcmNlbnQocHMoImxhcmdlUXVhIikpID8gaW50dmFsKHBzKCJsYXJnZVF1YSIpKSA6IDgwOwogICAgLy8gU2F2ZSB2YWx1ZXMgdG8gc29tZSBjb29raWVzCiAgICBzZXRjb29raWUoJ2dseF9pbWFnZV9sYXJnZScsJGxhcmdlc3Rfc2lkZV9sYXJnZSx0aW1lKCkrMzYwMCoyNCozNjUpOwogICAgc2V0Y29va2llKCdnbHhfaW1hZ2VfdGh1bWInLCRsYXJnZXN0X3NpZGVfdGh1bWIsdGltZSgpKzM2MDAqMjQqMzY1KTsKICAgIHNldGNvb2tpZSgnZ2x4X2ltYWdlX3Jlc2l6ZV9sYXJnZScsJGRvX3Jlc2l6ZV9sYXJnZSx0aW1lKCkrMzYwMCoyNCozNjUpOwogICAgc2V0Y29va2llKCdnbHhfaW1hZ2VfcmVzaXplX3RodW1iJywkZG9fcmVzaXplX3RodW1iLHRpbWUoKSszNjAwKjI0KjM2NSk7CiAgICBzZXRjb29raWUoJ2dseF9pbWFnZV9zcXVhcmUnLCRzcXVhcmVfaW1hZ2UsdGltZSgpKzM2MDAqMjQqMzY1KTsKICAgICRzb3VyY2UgPSBJTVBBVEguJGltYWdlX2lkLicuanBnJzsKICAgIGlmIChmaWxlX2V4aXN0cygkc291cmNlKSAmJiAoJGRvX3Jlc2l6ZV90aHVtYiA9PSAxIHx8ICRkb19yZXNpemVfbGFyZ2UgPT0gMSkpIHsKICAgICAgICAvLyBjaGVjayBjdXJyZW50IEdEIHZlcnNpb24KICAgICAgICAkZ2QgPSBnbHhfZ2V0X2dkX3ZlcnNpb24oKTsKICAgICAgICAkc2l6ZSA9IGdldGltYWdlc2l6ZSgkc291cmNlKTsKICAgICAgICAkeCA9ICRzaXplWzBdOwogICAgICAgICR5ID0gJHNpemVbMV07CiAgICAgICAgaWYgKCR4ID4gJHkpIHsKICAgICAgICAgICAgJG1heCA9ICR4OwogICAgICAgICAgICAkbWluID0gJHk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJG1heCA9ICR5OwogICAgICAgICAgICAkbWluID0gJHg7CiAgICAgICAgfTsKICAgICAgICBpZiAoJGRvX3Jlc2l6ZV90aHVtYiA9PSAxKSB7CiAgICAgICAgICAgIC8vIHRodW1iCiAgICAgICAgICAgICRyYXRlX3RodW1iID0gJG1heCAvICRsYXJnZXN0X3NpZGVfdGh1bWI7CiAgICAgICAgICAgICRmaW5hbF94X3RodW1iID0gJHggLyAkcmF0ZV90aHVtYjsKICAgICAgICAgICAgJGZpbmFsX3lfdGh1bWIgPSAkeSAvICRyYXRlX3RodW1iOwogICAgICAgICAgICAvLyBjcmVhdGUgdGh1bWIKICAgICAgICAgICAgaWYgKCRzcXVhcmVfaW1hZ2UgPT0gMSkgewogICAgICAgICAgICAgICAgJHJlc2l6ZV90aHVtYiA9ICRnZFsnY3JlYXRlJ10oJGxhcmdlc3Rfc2lkZV90aHVtYiwgJGxhcmdlc3Rfc2lkZV90aHVtYik7CiAgICAgICAgICAgICAgICAkaW1fdGh1bWIgPSBpbWFnZWNyZWF0ZWZyb21qcGVnKCRzb3VyY2UpOwogICAgICAgICAgICAgICAgaWYgKE1FVEhPRCA9PSAyKXsKICAgICAgICAgICAgICAgICAgICBpZigkeCA+ICR5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR4MCA9ICgkeCAtICR5KSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICR4MSA9ICR5OwogICAgICAgICAgICAgICAgICAgICAgICAkeTAgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAkeTEgPSAkeTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkeDAgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAkeDEgPSAkeDsKICAgICAgICAgICAgICAgICAgICAgICAgJHkwID0gKCR5IC0gJHgpIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgJHkxID0gJHg7CiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAkZ2RbJ2NvcHknXSgkcmVzaXplX3RodW1iLCAkaW1fdGh1bWIsIDAsIDAsJHgwLCR5MCwgJGxhcmdlc3Rfc2lkZV90aHVtYiwgJGxhcmdlc3Rfc2lkZV90aHVtYiwgJHgxLCAkeTEpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkZ2RbJ2NvcHknXSgkcmVzaXplX3RodW1iLCAkaW1fdGh1bWIsIDAsIDAsIDAsIDAsICRsYXJnZXN0X3NpZGVfdGh1bWIsICRsYXJnZXN0X3NpZGVfdGh1bWIsICRsYXJnZXN0X3NpZGVfdGh1bWIgKiAxLjUsICRsYXJnZXN0X3NpZGVfdGh1bWIgKiAxLjUpOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICRzb3VyY2VfdGh1bWIgPSBJTVBBVEguJGltYWdlX2lkLid0LmpwZyc7CiAgICAgICAgICAgICAgICBpbWFnZWpwZWcoJHJlc2l6ZV90aHVtYiwgJHNvdXJjZV90aHVtYiwgJHF1YWxpdHlfdGh1bWIpOwogICAgICAgICAgICAgICAgaW1hZ2VkZXN0cm95KCRyZXNpemVfdGh1bWIpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHJlc2l6ZV90aHVtYiA9ICRnZFsnY3JlYXRlJ10oJGZpbmFsX3hfdGh1bWIsICRmaW5hbF95X3RodW1iKTsKICAgICAgICAgICAgICAgICRpbV90aHVtYiA9IGltYWdlY3JlYXRlZnJvbWpwZWcoJHNvdXJjZSk7CiAgICAgICAgICAgICAgICAkZ2RbJ2NvcHknXSgkcmVzaXplX3RodW1iLCAkaW1fdGh1bWIsIDAsIDAsIDAsIDAsICRmaW5hbF94X3RodW1iLCAkZmluYWxfeV90aHVtYiwgJHgsICR5KTsKICAgICAgICAgICAgICAgICRzb3VyY2VfdGh1bWIgPSBJTVBBVEguJGltYWdlX2lkLid0LmpwZyc7CiAgICAgICAgICAgICAgICBpbWFnZWpwZWcoJHJlc2l6ZV90aHVtYiwgJHNvdXJjZV90aHVtYiwgJHF1YWxpdHlfdGh1bWIpOwogICAgICAgICAgICAgICAgaW1hZ2VkZXN0cm95KCRyZXNpemVfdGh1bWIpOwogICAgICAgICAgICB9OwogICAgICAgICAgICAkdGh1bWIgPSB0cnVlOwogICAgICAgICAgICBzYWZlX3VwZGF0ZSgndHhwX2ltYWdlJywgInRodW1ibmFpbD0nJHRodW1iJyIsICJpZD0nJGltYWdlX2lkJyIpOwogICAgICAgIH07CiAgICAgICAgaWYgKCRkb19yZXNpemVfbGFyZ2UgPT0gMSkgewogICAgICAgICAgICAvLyBsYXJnZQogICAgICAgICAgICAkcmF0ZV9sYXJnZSA9ICRtYXggLyAkbGFyZ2VzdF9zaWRlX2xhcmdlOwogICAgICAgICAgICAkZmluYWxfeF9sYXJnZSA9ICR4IC8gJHJhdGVfbGFyZ2U7CiAgICAgICAgICAgICRmaW5hbF95X2xhcmdlID0gJHkgLyAkcmF0ZV9sYXJnZTsKICAgICAgICAgICAgLy8gY3JlYXRlIGxhcmdlCiAgICAgICAgICAgIGlmICgkeCA+ICRmaW5hbF94X2xhcmdlKSB7CiAgICAgICAgICAgICAgICAkcmVzaXplX2xhcmdlID0gJGdkWydjcmVhdGUnXSgkZmluYWxfeF9sYXJnZSwgJGZpbmFsX3lfbGFyZ2UpOwogICAgICAgICAgICAgICAgJGltX2xhcmdlID0gaW1hZ2VjcmVhdGVmcm9tanBlZygkc291cmNlKTsKICAgICAgICAgICAgICAgICRnZFsnY29weSddKCRyZXNpemVfbGFyZ2UsICRpbV9sYXJnZSwgMCwgMCwgMCwgMCwgJGZpbmFsX3hfbGFyZ2UsICRmaW5hbF95X2xhcmdlLCAkeCwgJHkpOwogICAgICAgICAgICAgICAgaW1hZ2VqcGVnKCRyZXNpemVfbGFyZ2UsICRzb3VyY2UsICRxdWFsaXR5X2xhcmdlKTsKICAgICAgICAgICAgICAgIGltYWdlZGVzdHJveSgkcmVzaXplX2xhcmdlKTsKICAgICAgICAgICAgfTsKICAgICAgICAgICAgLy8gZ2V0IHNpemUgZnJvbSBsYXJnZQogICAgICAgICAgICAkc2l6ZSA9IGdldGltYWdlc2l6ZSgkc291cmNlKTsKICAgICAgICAgICAgc2FmZV91cGRhdGUoJ3R4cF9pbWFnZScsICJ3PSciLiRzaXplWzBdLiInLGg9JyIuJHNpemVbMV0uIiciLCAiaWQ9JyRpbWFnZV9pZCciKTsKICAgICAgICB9OwogICAgICAgIC8vIHNlbmQgdXNlciB0byB0aGUgaW1hZ2UgZWRpdCB2aWV3CiAgICAgICAgaGVhZGVyKCJMb2NhdGlvbjogaW5kZXgucGhwP2V2ZW50PWltYWdlJnN0ZXA9aW1hZ2VfZWRpdCZpZD0iLiRpbWFnZV9pZCk7CiAgICB9Owp9CmZ1bmN0aW9uIGdseF9pbWFnZV9vcHRzKCRldmVudCwgJHN0ZXApIHsKICAgIGVjaG88PDxFT0YKPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPCEtLQp3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CgkvLyByZXNpemUgaW1hZ2Ugb24gdXBsb2FkPwoJdmFyIGlucHV0RG9SZXNpemVMYXJnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CglpbnB1dERvUmVzaXplTGFyZ2Uuc2V0QXR0cmlidXRlKCduYW1lJywgJ2RvUmVzaXplTGFyZ2UnKTsKCWlucHV0RG9SZXNpemVMYXJnZS5zZXRBdHRyaWJ1dGUoJ2lkJywgJ2RvUmVzaXplTGFyZ2UnKTsKCWlucHV0RG9SZXNpemVMYXJnZS5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnY2hlY2tib3gnKTsKCWlucHV0RG9SZXNpemVMYXJnZS5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgJzEnKTsKCWlucHV0RG9SZXNpemVMYXJnZS5jaGVja2VkID0gZmFsc2U7Cgl2YXIgbGFyZ2VWYWx1ZSA9IGdldENvb2tpZSgnZ2x4X2ltYWdlX2xhcmdlJykgPyAnLCBzdG9yZWQgdmFsdWUgJytnZXRDb29raWUoJ2dseF9pbWFnZV9sYXJnZScpKydweCcgOiAnLCBzdG9yZWQgdmFsdWUgNTAwcHgnOwoJdmFyIGxhYmVsRG9SZXNpemVMYXJnZSA9IGNyZWF0ZUxhYmVsKCdkb1Jlc2l6ZUxhcmdlJywgJ1Jlc2l6ZSBsYXJnZSBpbWFnZScrbGFyZ2VWYWx1ZSwgJ2lubGluZScpOwoJdmFyIHBEb1Jlc2l6ZUxhcmdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpOwoJcERvUmVzaXplTGFyZ2UuYXBwZW5kQ2hpbGQoaW5wdXREb1Jlc2l6ZUxhcmdlKTsKCXBEb1Jlc2l6ZUxhcmdlLmFwcGVuZENoaWxkKGxhYmVsRG9SZXNpemVMYXJnZSk7CgkvLyBnZXQgdGhlIHVwbG9hZCBmb3JtIGVsZW1lbnQsIHRoZSB0aGlyZCBmb3JtIG9uIHRoZSBwYWdlCgl2YXIgZm9ybVVwbG9hZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdmb3JtJykuaXRlbSgyKTsKCWZvcm1VcGxvYWQuYXBwZW5kQ2hpbGQocERvUmVzaXplTGFyZ2UpOwp9CmZ1bmN0aW9uIGNyZWF0ZUxhYmVsKGZvckVsZW1lbnQsIHRleHQsIGVsZW1lbnRDbGFzcykgewoJdmFyIGxhYmVsRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xhYmVsJyk7CglsYWJlbEVsZW1lbnQuc2V0QXR0cmlidXRlKCdmb3InLCBmb3JFbGVtZW50KTsKCWxhYmVsRWxlbWVudC5jbGFzc05hbWUgPSBlbGVtZW50Q2xhc3M7Cgl2YXIgbGFiZWxUZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpOwoJbGFiZWxFbGVtZW50LmFwcGVuZENoaWxkKGxhYmVsVGV4dE5vZGUpOwoJcmV0dXJuIGxhYmVsRWxlbWVudDsKfQpmdW5jdGlvbiBnZXRDb29raWUobmFtZSkgewoJdmFyIGRjID0gZG9jdW1lbnQuY29va2llOwoJdmFyIHByZWZpeCA9IG5hbWUgKyAiPSI7Cgl2YXIgYmVnaW4gPSBkYy5pbmRleE9mKCI7ICIgKyBwcmVmaXgpOwoJaWYgKGJlZ2luID09IC0xKSB7CgkJYmVnaW4gPSBkYy5pbmRleE9mKHByZWZpeCk7CgkJaWYgKGJlZ2luICE9IDApIHJldHVybiBudWxsOwoJfSBlbHNlIHsKICAgIAliZWdpbiArPSAyOwogICAgfQogIAl2YXIgZW5kID0gZG9jdW1lbnQuY29va2llLmluZGV4T2YoIjsiLCBiZWdpbik7CglpZiAoZW5kID09IC0xKSB7CgkJZW5kID0gZGMubGVuZ3RoOwoJfQogIAlyZXR1cm4gdW5lc2NhcGUoZGMuc3Vic3RyaW5nKGJlZ2luICsgcHJlZml4Lmxlbmd0aCwgZW5kKSk7Cn0KLS0+Cjwvc2NyaXB0PgpFT0Y7Cn0KZnVuY3Rpb24gZ2x4X2ltYWdlX2VkaXRfb3B0cygkZXZlbnQsICRzdGVwKSB7CiAgICAvLyBjaGVjayBpZiBnbHhfYWRtaW4gY3NzIGlzIGZvdW5kLCBpZiBub3QgZm91bmQgY3JlYXRlIGl0CiAgICAkcnMgPSBzYWZlX3JvdygibmFtZSIsICJ0eHBfY3NzIiwgIm5hbWU9J2dseF9hZG1pbl9pbWFnZScgbGltaXQgMSIpOwogICAgaWYgKCEkcnMpIHsKICAgICAgICAkY3NzID0gImJHRmlaV3d1YVc1c2FXNWxJSHNOQ2dsdFlYSm5hVzQ2SURWd2VEc0pEUXA5Q1EwS0RRcHNZV0psYkM1aWJHOWpheUI3RFFvSmJXRnlaMmx1T2lBMWNIZ2dOWEI0SURBZ01Ec0pEUW9KWkdsemNHeGhlVG9nWW14dlkyczdEUXA5RFFvTkNpNXlaWE5wZW1VZ2V3MEtDV1pzYjJGME9pQnNaV1owT3cwS2ZRMEtEUW91Y205MFlYUmxJSHNOQ2dsbWJHOWhkRG9nY21sbmFIUTdEUXA5RFFvTkNtaHlJSHNOQ2dsaWIzSmtaWEl0WW05MGRHOXRPaUF4Y0hnZ2MyOXNhV1FnSTBSRVJFUkVSRHNOQ2dsaWIzSmtaWEl0ZEc5d09pQnViMjVsT3cwS0NXSnZjbVJsY2kxeWFXZG9kRG9nYm05dVpUc05DZ2xpYjNKa1pYSXRiR1ZtZERvZ2JtOXVaVHNOQ2dsb1pXbG5hSFE2SURGd2VEc05DZ2xqYkdWaGNqb2dZbTkwYURzTkNuMD0iOwogICAgICAgIHNhZmVfaW5zZXJ0KCJ0eHBfY3NzIiwgIm5hbWU9J2dseF9hZG1pbl9pbWFnZScsIGNzcz0nJGNzcyciKTsKICAgIH07CiAgICBlY2hvPDw8RU9GCjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CjwhLS0Kd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewoKCS8vIGFkZCBzb21lIHN0eWxlIHRvIHRoaXMhISEhCglsb2FkQ1NTKCdjc3MucGhwP249Z2x4X2FkbWluX2ltYWdlJyk7CgoJLy9hbGVydChnZXRDb29raWUoImdseF9pbWFnZV9sYXJnZSIpICsgIiBhbmQgIiArIGdldENvb2tpZSgiZ2x4X2ltYWdlX3RodW1iIikpOwoKCS8vIGNoZWNrYm94IHJlc2l6ZSBsYXJnZQoJdmFyIGlucHV0RG9SZXNpemVMYXJnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CglpbnB1dERvUmVzaXplTGFyZ2Uuc2V0QXR0cmlidXRlKCduYW1lJywgJ2RvUmVzaXplTGFyZ2UnKTsKCWlucHV0RG9SZXNpemVMYXJnZS5zZXRBdHRyaWJ1dGUoJ2lkJywgJ2RvUmVzaXplTGFyZ2UnKTsKCWlucHV0RG9SZXNpemVMYXJnZS5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnY2hlY2tib3gnKTsKCWlucHV0RG9SZXNpemVMYXJnZS5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgJzEnKTsKCWlucHV0RG9SZXNpemVMYXJnZS5jaGVja2VkID0gZmFsc2U7Cgl2YXIgbGFiZWxEb1Jlc2l6ZUxhcmdlID0gY3JlYXRlTGFiZWwoJ2RvUmVzaXplTGFyZ2UnLCAnUmVzaXplIGxhcmdlIGltYWdlJywgJ2lubGluZScpOwoJdmFyIHBEb1Jlc2l6ZUxhcmdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpOwoJcERvUmVzaXplTGFyZ2UuYXBwZW5kQ2hpbGQoaW5wdXREb1Jlc2l6ZUxhcmdlKTsKCXBEb1Jlc2l6ZUxhcmdlLmFwcGVuZENoaWxkKGxhYmVsRG9SZXNpemVMYXJnZSk7CgoJLy8gY2hlY2tib3ggcmVzaXplIHRodW1iCgl2YXIgaW5wdXREb1Jlc2l6ZVRodW1iID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKCWlucHV0RG9SZXNpemVUaHVtYi5zZXRBdHRyaWJ1dGUoJ25hbWUnLCAnZG9SZXNpemVUaHVtYicpOwoJaW5wdXREb1Jlc2l6ZVRodW1iLnNldEF0dHJpYnV0ZSgnaWQnLCAnZG9SZXNpemVUaHVtYicpOwoJaW5wdXREb1Jlc2l6ZVRodW1iLnNldEF0dHJpYnV0ZSgndHlwZScsICdjaGVja2JveCcpOwoJaW5wdXREb1Jlc2l6ZVRodW1iLnNldEF0dHJpYnV0ZSgndmFsdWUnLCAnMScpOwoJaW5wdXREb1Jlc2l6ZVRodW1iLmNoZWNrZWQgPSB0cnVlOwoJdmFyIGxhYmVsRG9SZXNpemVUaHVtYiA9IGNyZWF0ZUxhYmVsKCdkb1Jlc2l6ZVRodW1iJywgJ0NyZWF0ZSB0aHVtYm5haWwnLCAnaW5saW5lJyk7Cgl2YXIgcERvUmVzaXplVGh1bWIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7CglwRG9SZXNpemVUaHVtYi5hcHBlbmRDaGlsZChpbnB1dERvUmVzaXplVGh1bWIpOwoJcERvUmVzaXplVGh1bWIuYXBwZW5kQ2hpbGQobGFiZWxEb1Jlc2l6ZVRodW1iKTsKCgkvLyBjaGVja0JveCBzcWFyZUltYWdlCgl2YXIgaW5wdXRTcXVhcmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOwoJaW5wdXRTcXVhcmUuc2V0QXR0cmlidXRlKCduYW1lJywgJ3NxdWFyZScpOwoJaW5wdXRTcXVhcmUuc2V0QXR0cmlidXRlKCdpZCcsICdzcXVhcmUnKTsKCWlucHV0U3F1YXJlLnNldEF0dHJpYnV0ZSgndHlwZScsICdjaGVja2JveCcpOwoJaW5wdXRTcXVhcmUuc2V0QXR0cmlidXRlKCd2YWx1ZScsICcxJyk7CglpbnB1dFNxdWFyZS5jaGVja2VkID0gZmFsc2U7Cgl2YXIgbGFiZWxTcXVhcmUgPSBjcmVhdGVMYWJlbCgnc3F1YXJlJywgJ1NxdWFyZSB0aHVtYm5haWwnLCAnaW5saW5lJyk7Cgl2YXIgcFNxdWFyZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsKCXBTcXVhcmUuYXBwZW5kQ2hpbGQoaW5wdXRTcXVhcmUpOwoJcFNxdWFyZS5hcHBlbmRDaGlsZChsYWJlbFNxdWFyZSk7CgoJLy8gaW5wdXQgdGh1bWJTaXplCgl2YXIgdGh1bWJWYWx1ZSA9IChnZXRDb29raWUoJ2dseF9pbWFnZV90aHVtYicpKSA/IGdldENvb2tpZSgnZ2x4X2ltYWdlX3RodW1iJykgOiAxMDA7Cgl2YXIgaW5wdXRUaHVtYlNpemUgPSBjcmVhdGVJbnB1dCgndGh1bWJTaXplJywgJ3RodW1iU2l6ZScsIHRodW1iVmFsdWUpOwoJdmFyIGxhYmVsVGh1bWJTaXplID0gY3JlYXRlTGFiZWwoJ3RodW1iU2l6ZScsICdUaHVtYnNpemUgKHB4KScsICdibG9jaycpOwoJdmFyIHBUaHVtYiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsKCXBUaHVtYi5hcHBlbmRDaGlsZChsYWJlbFRodW1iU2l6ZSk7CglwVGh1bWIuYXBwZW5kQ2hpbGQoaW5wdXRUaHVtYlNpemUpOwoKCS8vIGlucHV0IGxhcmdlU2l6ZQoJdmFyIGxhcmdlVmFsdWUgPSAoZ2V0Q29va2llKCdnbHhfaW1hZ2VfbGFyZ2UnKSkgPyBnZXRDb29raWUoJ2dseF9pbWFnZV9sYXJnZScpIDogNTAwOwoJdmFyIGlucHV0TGFyZ2VTaXplID0gY3JlYXRlSW5wdXQoJ2xhcmdlU2l6ZScsICdsYXJnZVNpemUnLCBsYXJnZVZhbHVlKTsKCXZhciBsYWJlbExhcmdlU2l6ZSA9IGNyZWF0ZUxhYmVsKCdsYXJnZVNpemUnLCAnTGFyZ2VzaXplIChweCknLCAnYmxvY2snKTsKCXZhciBwTGFyZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7CglwTGFyZ2UuYXBwZW5kQ2hpbGQobGFiZWxMYXJnZVNpemUpOwoJcExhcmdlLmFwcGVuZENoaWxkKGlucHV0TGFyZ2VTaXplKTsKCgkvLyBpbnB1dCBxdWFsaXR5Cgl2YXIgaW5wdXRRdWFUaHVtYiA9IGNyZWF0ZUlucHV0KCd0aHVtYlF1YScsICd0aHVtYlF1YScsICc5MCcpOwoJdmFyIGxhYmVsUXVhVGh1bWIgPSBjcmVhdGVMYWJlbCgndGh1bWJRdWEnLCAnUXVhbGl0eSBUaHVtYiAoMTAtMTAwKScsICdibG9jaycpOwoJdmFyIHBRdWFUaHVtYiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsKCXBRdWFUaHVtYi5hcHBlbmRDaGlsZChsYWJlbFF1YVRodW1iKTsKCXBRdWFUaHVtYi5hcHBlbmRDaGlsZChpbnB1dFF1YVRodW1iKTsKCgkvLyBpbnB1dCBxdWFsaXR5Cgl2YXIgaW5wdXRRdWFMYXJnZSA9IGNyZWF0ZUlucHV0KCdsYXJnZVF1YScsICdsYXJnZVF1YScsICc4MCcpOwoJdmFyIGxhYmVsUXVhTGFyZ2UgPSBjcmVhdGVMYWJlbCgnbGFyZ2VRdWEnLCAnUXVhbGl0eSBMYXJnZSBJbWFnZSAoMTAtMTAwKScsICdibG9jaycpOwoJdmFyIHBRdWFMYXJnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsKCXBRdWFMYXJnZS5hcHBlbmRDaGlsZChsYWJlbFF1YUxhcmdlKTsKCXBRdWFMYXJnZS5hcHBlbmRDaGlsZChpbnB1dFF1YUxhcmdlKTsKCgkvLyBhZGQgaGlkZGVuIGZpZWxkcwoJdmFyIGlucHV0SGlkZGVuQWN0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKCWlucHV0SGlkZGVuQWN0aW9uLnNldEF0dHJpYnV0ZSgnbmFtZScsICdhY3Rpb24nKTsKCWlucHV0SGlkZGVuQWN0aW9uLnNldEF0dHJpYnV0ZSgndHlwZScsICdoaWRkZW4nKTsKCWlucHV0SGlkZGVuQWN0aW9uLnNldEF0dHJpYnV0ZSgndmFsdWUnLCAncmVzaXplJyk7CgoJdmFyIGlucHV0SGlkZGVuU3RlcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CglpbnB1dEhpZGRlblN0ZXAuc2V0QXR0cmlidXRlKCduYW1lJywgJ3N0ZXAnKTsKCWlucHV0SGlkZGVuU3RlcC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnaGlkZGVuJyk7CglpbnB1dEhpZGRlblN0ZXAuc2V0QXR0cmlidXRlKCd2YWx1ZScsICdpbWFnZV9lZGl0Jyk7CgoJdmFyIGlucHV0SGlkZGVuSWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOwoJaW5wdXRIaWRkZW5JZC5zZXRBdHRyaWJ1dGUoJ25hbWUnLCAnaWQnKTsKCWlucHV0SGlkZGVuSWQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2hpZGRlbicpOwoJaW5wdXRIaWRkZW5JZC5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2lkJykuaXRlbSgwKS52YWx1ZSk7CgoJdmFyIGlucHV0SGlkZGVuRXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOwoJaW5wdXRIaWRkZW5FdmVudC5zZXRBdHRyaWJ1dGUoJ25hbWUnLCAnZXZlbnQnKTsKCWlucHV0SGlkZGVuRXZlbnQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2hpZGRlbicpOwoJaW5wdXRIaWRkZW5FdmVudC5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgJ2ltYWdlJyk7CgoJdmFyIGlucHV0SGlkZGVuRnMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOwoJaW5wdXRIaWRkZW5Gcy5zZXRBdHRyaWJ1dGUoJ25hbWUnLCAnTUFYX0ZJTEVfU0laRScpOwoJaW5wdXRIaWRkZW5Gcy5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnaGlkZGVuJyk7CglpbnB1dEhpZGRlbkZzLnNldEF0dHJpYnV0ZSgndmFsdWUnLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnTUFYX0ZJTEVfU0laRScpLml0ZW0oMCkudmFsdWUpOwoKCS8vYWRkIHN1Ym1pdAoJdmFyIHN1Ym1pdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CglzdWJtaXQuc2V0QXR0cmlidXRlKCdjbGFzcycsICdzbWFsbGVyYm94Jyk7CglzdWJtaXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ3N1Ym1pdCcpOwoJc3VibWl0LnNldEF0dHJpYnV0ZSgndmFsdWUnLCAnUmVzaXplJyk7CglzdWJtaXQuc2V0QXR0cmlidXRlKCduYW1lJywgJ01vZCcpOwoKCS8vIGFkZCBmb3JtCgl2YXIgZm9ybVJlc2l6ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Zvcm0nKTsKCWZvcm1SZXNpemUuc2V0QXR0cmlidXRlKCdhY3Rpb24nLCAnaW5kZXgucGhwJyk7Cglmb3JtUmVzaXplLnNldEF0dHJpYnV0ZSgnbWV0aG9kJywgJ3Bvc3QnKTsKCgkvL2FwcGVuZCBmb3JtCglmb3JtUmVzaXplLmFwcGVuZENoaWxkKHBMYXJnZSk7Cglmb3JtUmVzaXplLmFwcGVuZENoaWxkKHBUaHVtYik7CgkvLyB0aGlzIHR3byBsaW5lcyBhcmUgY29tbWVudGVkIGZvciBub3csIHBlcnNvbmFsbHkgSSB0aGluayBpdCBpcyB0b28gY2x1dHRlcmVkIHdpdGggdGhlbSB0aGVyZS4KCS8vZm9ybVJlc2l6ZS5hcHBlbmRDaGlsZChwUXVhTGFyZ2UpOwoJLy9mb3JtUmVzaXplLmFwcGVuZENoaWxkKHBRdWFUaHVtYik7Cglmb3JtUmVzaXplLmFwcGVuZENoaWxkKHBEb1Jlc2l6ZUxhcmdlKTsKCWZvcm1SZXNpemUuYXBwZW5kQ2hpbGQocERvUmVzaXplVGh1bWIpOwoJZm9ybVJlc2l6ZS5hcHBlbmRDaGlsZChwU3F1YXJlKTsKCWZvcm1SZXNpemUuYXBwZW5kQ2hpbGQoaW5wdXRIaWRkZW5BY3Rpb24pOwoJZm9ybVJlc2l6ZS5hcHBlbmRDaGlsZChpbnB1dEhpZGRlbklkKTsKCWZvcm1SZXNpemUuYXBwZW5kQ2hpbGQoaW5wdXRIaWRkZW5Gcyk7Cglmb3JtUmVzaXplLmFwcGVuZENoaWxkKGlucHV0SGlkZGVuRXZlbnQpOwoJZm9ybVJlc2l6ZS5hcHBlbmRDaGlsZChpbnB1dEhpZGRlblN0ZXApOwoJZm9ybVJlc2l6ZS5hcHBlbmRDaGlsZChzdWJtaXQpOwoKCS8qCgkgKiBSb3RhdGUgaW1hZ2UKCSAqCgkgKi8KCXZhciBmb3JtUm90YXRlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZm9ybScpOwoJZm9ybVJvdGF0ZS5zZXRBdHRyaWJ1dGUoJ2FjdGlvbicsICdpbmRleC5waHAnKTsKCWZvcm1Sb3RhdGUuc2V0QXR0cmlidXRlKCdtZXRob2QnLCAncG9zdCcpOwoKCS8vIHJhZGlvIGJ1dHRvbiByb3RhdGUgMTgwCgl2YXIgaW5wdXRSYWRpbzE4MCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CglpbnB1dFJhZGlvMTgwLnNldEF0dHJpYnV0ZSgnbmFtZScsICdyb3RhdGVWYWx1ZScpOwoJaW5wdXRSYWRpbzE4MC5zZXRBdHRyaWJ1dGUoJ2lkJywgJ3JhZGlvMTgwJyk7CglpbnB1dFJhZGlvMTgwLnNldEF0dHJpYnV0ZSgndHlwZScsICdyYWRpbycpOwoJaW5wdXRSYWRpbzE4MC5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgJzE4MCcpOwoJaW5wdXRSYWRpbzE4MC5jaGVja2VkID0gZmFsc2U7Cgl2YXIgbGFiZWxSYWRpbzE4MCA9IGNyZWF0ZUxhYmVsKCdyYWRpbzE4MCcsICcxODAnLCAnaW5saW5lJyk7Cgl2YXIgcFJhZGlvMTgwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpOwoJcFJhZGlvMTgwLmFwcGVuZENoaWxkKGlucHV0UmFkaW8xODApOwoJcFJhZGlvMTgwLmFwcGVuZENoaWxkKGxhYmVsUmFkaW8xODApOwoKCS8vIHJhZGlvIGJ1dHRvbiByb3RhdGUgOTAgQ1cKCXZhciBpbnB1dFJhZGlvOTBDdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CglpbnB1dFJhZGlvOTBDdy5zZXRBdHRyaWJ1dGUoJ25hbWUnLCAncm90YXRlVmFsdWUnKTsKCWlucHV0UmFkaW85MEN3LnNldEF0dHJpYnV0ZSgnaWQnLCAncmFkaW85MEN3Jyk7CglpbnB1dFJhZGlvOTBDdy5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAncmFkaW8nKTsKCWlucHV0UmFkaW85MEN3LnNldEF0dHJpYnV0ZSgndmFsdWUnLCAnOTBDVycpOwoJaW5wdXRSYWRpbzkwQ3cuY2hlY2tlZCA9IGZhbHNlOwoJdmFyIGxhYmVsUmFkaW85MEN3ID0gY3JlYXRlTGFiZWwoJ3JhZGlvOTBDdycsICc5MCBDVycsICdpbmxpbmUnKTsKCXZhciBwUmFkaW85MEN3ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpOwoJcFJhZGlvOTBDdy5hcHBlbmRDaGlsZChpbnB1dFJhZGlvOTBDdyk7CglwUmFkaW85MEN3LmFwcGVuZENoaWxkKGxhYmVsUmFkaW85MEN3KTsKCgkvLyByYWRpbyBidXR0b24gcm90YXRlIDkwIENDVwoJdmFyIGlucHV0UmFkaW85MENjdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CglpbnB1dFJhZGlvOTBDY3cuc2V0QXR0cmlidXRlKCduYW1lJywgJ3JvdGF0ZVZhbHVlJyk7CglpbnB1dFJhZGlvOTBDY3cuc2V0QXR0cmlidXRlKCdpZCcsICdyYWRpbzkwQ2N3Jyk7CglpbnB1dFJhZGlvOTBDY3cuc2V0QXR0cmlidXRlKCd0eXBlJywgJ3JhZGlvJyk7CglpbnB1dFJhZGlvOTBDY3cuc2V0QXR0cmlidXRlKCd2YWx1ZScsICc5MENDVycpOwoJaW5wdXRSYWRpbzkwQ2N3LmNoZWNrZWQgPSBmYWxzZTsKCXZhciBsYWJlbFJhZGlvOTBDY3cgPSBjcmVhdGVMYWJlbCgncmFkaW85MENjdycsICc5MCBDQ1cnLCAnaW5saW5lJyk7Cgl2YXIgcFJhZGlvOTBDY3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7CglwUmFkaW85MENjdy5hcHBlbmRDaGlsZChpbnB1dFJhZGlvOTBDY3cpOwoJcFJhZGlvOTBDY3cuYXBwZW5kQ2hpbGQobGFiZWxSYWRpbzkwQ2N3KTsKCgkvLyBzb21lIGhpZGRlbiBmaWVsZHMKCXZhciBpbnB1dFJvdGF0ZUhpZGRlbkFjdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CglpbnB1dFJvdGF0ZUhpZGRlbkFjdGlvbi5zZXRBdHRyaWJ1dGUoJ25hbWUnLCAnYWN0aW9uJyk7CglpbnB1dFJvdGF0ZUhpZGRlbkFjdGlvbi5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnaGlkZGVuJyk7CglpbnB1dFJvdGF0ZUhpZGRlbkFjdGlvbi5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgJ3JvdGF0ZScpOwoKCXZhciBpbnB1dFJvdGF0ZUhpZGRlblN0ZXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOwoJaW5wdXRSb3RhdGVIaWRkZW5TdGVwLnNldEF0dHJpYnV0ZSgnbmFtZScsICdzdGVwJyk7CglpbnB1dFJvdGF0ZUhpZGRlblN0ZXAuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2hpZGRlbicpOwoJaW5wdXRSb3RhdGVIaWRkZW5TdGVwLnNldEF0dHJpYnV0ZSgndmFsdWUnLCAnaW1hZ2VfZWRpdCcpOwoKCXZhciBpbnB1dFJvdGF0ZUhpZGRlbklkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKCWlucHV0Um90YXRlSGlkZGVuSWQuc2V0QXR0cmlidXRlKCduYW1lJywgJ2lkJyk7CglpbnB1dFJvdGF0ZUhpZGRlbklkLnNldEF0dHJpYnV0ZSgndHlwZScsICdoaWRkZW4nKTsKCWlucHV0Um90YXRlSGlkZGVuSWQuc2V0QXR0cmlidXRlKCd2YWx1ZScsIGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCdpZCcpLml0ZW0oMCkudmFsdWUpOwoKCXZhciBpbnB1dFJvdGF0ZUhpZGRlbkV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKCWlucHV0Um90YXRlSGlkZGVuRXZlbnQuc2V0QXR0cmlidXRlKCduYW1lJywgJ2V2ZW50Jyk7CglpbnB1dFJvdGF0ZUhpZGRlbkV2ZW50LnNldEF0dHJpYnV0ZSgndHlwZScsICdoaWRkZW4nKTsKCWlucHV0Um90YXRlSGlkZGVuRXZlbnQuc2V0QXR0cmlidXRlKCd2YWx1ZScsICdpbWFnZScpOwoKCXZhciBzdWJtaXRSb3RhdGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOwoJc3VibWl0Um90YXRlLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAnc21hbGxlcmJveCcpOwoJc3VibWl0Um90YXRlLnNldEF0dHJpYnV0ZSgndHlwZScsICdzdWJtaXQnKTsKCXN1Ym1pdFJvdGF0ZS5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgJ1JvdGF0ZScpOwoJc3VibWl0Um90YXRlLnNldEF0dHJpYnV0ZSgnbmFtZScsICdNb2QnKTsKCgkvLyBhcHBlbmQgZm9ybVJvdGF0ZQoJZm9ybVJvdGF0ZS5hcHBlbmRDaGlsZChwUmFkaW8xODApOwoJZm9ybVJvdGF0ZS5hcHBlbmRDaGlsZChwUmFkaW85MEN3KTsKCWZvcm1Sb3RhdGUuYXBwZW5kQ2hpbGQocFJhZGlvOTBDY3cpOwoJZm9ybVJvdGF0ZS5hcHBlbmRDaGlsZChpbnB1dFJvdGF0ZUhpZGRlbkFjdGlvbik7Cglmb3JtUm90YXRlLmFwcGVuZENoaWxkKGlucHV0Um90YXRlSGlkZGVuSWQpOwoJZm9ybVJvdGF0ZS5hcHBlbmRDaGlsZChpbnB1dFJvdGF0ZUhpZGRlbkV2ZW50KTsKCWZvcm1Sb3RhdGUuYXBwZW5kQ2hpbGQoaW5wdXRSb3RhdGVIaWRkZW5TdGVwKTsKCWZvcm1Sb3RhdGUuYXBwZW5kQ2hpbGQoc3VibWl0Um90YXRlKTsKCgkvLyBjcmVhdGUgYSBwbGFjZWhvbGRlcnMgZm9yIHJlc2l6ZSBhbmQgcm90YXRlCgl2YXIgZGl2UmVzaXplID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CglkaXZSZXNpemUuY2xhc3NOYW1lID0gJ3Jlc2l6ZSc7CglkaXZSZXNpemUuYXBwZW5kQ2hpbGQoZm9ybVJlc2l6ZSk7CgoJdmFyIGRpdlJvdGF0ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwoJZGl2Um90YXRlLmNsYXNzTmFtZSA9ICdyb3RhdGUnOwoJZGl2Um90YXRlLmFwcGVuZENoaWxkKGZvcm1Sb3RhdGUpOwoKCS8vIHNpbmNlIHdlIGFyZSB1c2luZyBmbG9hdHMgb24gdGhlIHR3byBhYm92ZSwgd2UgbmVlZCB0byBjbGVhci4uLgoJdmFyIGhyQ2xlYXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdocicpOwoJaHJDbGVhci5jbGFzc05hbWUgPSAnY2xlYXInOwoKCS8vIGdldCB0aGUgdXBsb2FkIGZvcm0gZWxlbWVudAoJdmFyIGZvcm1VcGxvYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZm9ybScpLml0ZW0oMSk7CgoJZm9ybVVwbG9hZC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShkaXZSZXNpemUsIGZvcm1VcGxvYWQpOwoJZm9ybVVwbG9hZC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShkaXZSb3RhdGUsIGZvcm1VcGxvYWQpOwoJZm9ybVVwbG9hZC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShockNsZWFyLCBmb3JtVXBsb2FkKTsKfQoKZnVuY3Rpb24gY3JlYXRlSW5wdXQobmFtZSwgaWQsIHZhbHVlKSB7Cgl2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CgllbGVtZW50LnNldEF0dHJpYnV0ZSgnbmFtZScsIG5hbWUpOwoJZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2lkJywgaWQpOwoJZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgdmFsdWUpOwoJZWxlbWVudC5jbGFzc05hbWUgPSAnZWRpdCc7CgoJcmV0dXJuIGVsZW1lbnQ7Cn0KCmZ1bmN0aW9uIGNyZWF0ZUxhYmVsKGZvckVsZW1lbnQsIHRleHQsIGVsZW1lbnRDbGFzcykgewoJdmFyIGxhYmVsRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xhYmVsJyk7CglsYWJlbEVsZW1lbnQuc2V0QXR0cmlidXRlKCdmb3InLCBmb3JFbGVtZW50KTsKCWxhYmVsRWxlbWVudC5jbGFzc05hbWUgPSBlbGVtZW50Q2xhc3M7Cgl2YXIgbGFiZWxUZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpOwoJbGFiZWxFbGVtZW50LmFwcGVuZENoaWxkKGxhYmVsVGV4dE5vZGUpOwoKCXJldHVybiBsYWJlbEVsZW1lbnQ7Cn0KCmZ1bmN0aW9uIGxvYWRDU1MoZmlsZU5hbWUpIHsKCXZhciBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKS5pdGVtKDApOwoJdmFyIHN0eWxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTsKCXN0eWxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBmaWxlTmFtZSk7CglzdHlsZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdyZWwnLCAnc3R5bGVzaGVldCcpOwoJc3R5bGVFbGVtZW50LnNldEF0dHJpYnV0ZSgndHlwZScsICd0ZXh0L2NzcycpOwoJaGVhZC5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQpCn0KCi8qCiAqIENvb2tpZSBzdHVmZgogKgogKiBodHRwOi8vd3d3LndlYnJlZmVyZW5jZS5jb20vanMvY29sdW1uOC9pbmRleC5odG1sCiAqCiAqLwpmdW5jdGlvbiBzZXRDb29raWUobmFtZSwgdmFsdWUsIGV4cGlyZXMsIHBhdGgsIGRvbWFpbiwgc2VjdXJlKSB7Cgl2YXIgY3VyQ29va2llID0gbmFtZSArICI9IiArIGVzY2FwZSh2YWx1ZSkgKwoJKChleHBpcmVzKSA/ICI7IGV4cGlyZXM9IiArIGV4cGlyZXMudG9Mb2NhbGVTdHJpbmcoKSA6ICIiKSArCgkoKHBhdGgpID8gIjsgcGF0aD0iICsgcGF0aCA6ICIiKSArCgkoKGRvbWFpbikgPyAiOyBkb21haW49IiArIGRvbWFpbiA6ICIiKSArCgkoKHNlY3VyZSkgPyAiOyBzZWN1cmUiIDogIiIpOwoJZG9jdW1lbnQuY29va2llID0gY3VyQ29va2llOwp9CgpmdW5jdGlvbiBnZXRDb29raWUobmFtZSkgewoJdmFyIGRjID0gZG9jdW1lbnQuY29va2llOwoJdmFyIHByZWZpeCA9IG5hbWUgKyAiPSI7Cgl2YXIgYmVnaW4gPSBkYy5pbmRleE9mKCI7ICIgKyBwcmVmaXgpOwoJaWYgKGJlZ2luID09IC0xKSB7CgkJYmVnaW4gPSBkYy5pbmRleE9mKHByZWZpeCk7CgkJaWYgKGJlZ2luICE9IDApIHJldHVybiBudWxsOwoJfSBlbHNlIHsKICAgIAliZWdpbiArPSAyOwogICAgfQogIAl2YXIgZW5kID0gZG9jdW1lbnQuY29va2llLmluZGV4T2YoIjsiLCBiZWdpbik7CglpZiAoZW5kID09IC0xKSB7CgkJZW5kID0gZGMubGVuZ3RoOwoJfQogIAlyZXR1cm4gdW5lc2NhcGUoZGMuc3Vic3RyaW5nKGJlZ2luICsgcHJlZml4Lmxlbmd0aCwgZW5kKSk7Cn0KCmZ1bmN0aW9uIGRlbGV0ZUNvb2tpZShuYW1lLCBwYXRoLCBkb21haW4pIHsKCWlmIChnZXRDb29raWUobmFtZSkpIHsKCQlkb2N1bWVudC5jb29raWUgPSBuYW1lICsgIj0iICsKCQkoKHBhdGgpID8gIjsgcGF0aD0iICsgcGF0aCA6ICIiKSArCgkJKChkb21haW4pID8gIjsgZG9tYWluPSIgKyBkb21haW4gOiAiIikgKwoJCSI7IGV4cGlyZXM9VGh1LCAwMS1KYW4tNzAgMDA6MDA6MDEgR01UIjsKCX0KfQotLT4KPC9zY3JpcHQ+CkVPRjsKfQoiO3M6NDoidHlwZSI7czoxOiIxIjtzOjU6Im9yZGVyIjtzOjE6IjUiO3M6MzoibWQ1IjtzOjMyOiI4NmYyZTVmMGE1MWNmNDQ2MmM0ZWI5YzE2NjNjOWUyYyI7fQ==
Edit: as the above are very old plugins (Dean’s is the first one ever made), maybe you can tell us what you are trying to achieve as there may be better solutions.
Last edited by colak (2009-12-16 17:24:23)
Yiannis
——————————
NeMe | hblack.art | EMAP | A Sea change | Toolkit of Care
I do my best editing after I click on the submit button.
Offline
#3 2009-12-16 23:25:29
- chume
- Member
- Registered: 2009-12-03
- Posts: 27
Re: [request] Popup image plugin
Thank you much colak.
As per your suggestion, I just need to pop-up about 3 pictures in an article with a text link.
I most certainly appreciate any info for a new plug-in that can handle such a task.
Thanks you.
chume
Offline
Re: [request] Popup image plugin
If you are attaching them to the article as article images you can use hak_article_image
Shoving is the answer – pusher robot
Offline
#5 2009-12-17 19:44:41
- chume
- Member
- Registered: 2009-12-03
- Posts: 27
Re: [request] Popup image plugin
Thank you so much hakjoon.
The dca_pop plugin worked like a charm.
chume
Offline
Pages: 1