# Name: rss_thumbpop v0.7 # Type: Client side plugin # Flexible thumbnail image gallery in table or float format. # Author: Rob Sable # URL: http://www.wilshireone.com/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMDp7czo0OiJuYW1lIjtzOjEyOiJyc3NfdGh1bWJwb3AiO3M6NjoiYXV0aG9yIjtzOjk6 IlJvYiBTYWJsZSI7czoxMDoiYXV0aG9yX3VyaSI7czoyNzoiaHR0cDovL3d3dy53aWxzaGly ZW9uZS5jb20vIjtzOjc6InZlcnNpb24iO3M6MzoiMC43IjtzOjExOiJkZXNjcmlwdGlvbiI7 czo1ODoiRmxleGlibGUgdGh1bWJuYWlsIGltYWdlIGdhbGxlcnkgaW4gdGFibGUgb3IgZmxv YXQgZm9ybWF0LiI7czo0OiJjb2RlIjtzOjEwMTY0OiIKLy8gcnNzX3RodW1icG9wIHRodW1i bmFpbCBpbWFnZSBnYWxsZXJ5IHBsdWdpbgovLyBieSBSb2IgU2FibGUKLy8gaHR0cDovL3d3 dy53aWxzaGlyZW9uZS5jb20KLy8gVmVyc2lvbiAwLjEgLSAxMi8wNy8yMDA0IC0gSW5pdGlh bCBSZWxlYXNlCi8vIFZlcnNpb24gMC4yIC0gMTIvMDgvMjAwNCAtIEFkZGVkIHBhZ2luZyBz dXBwb3J0IHdpdGggdXNlIG9mIGxpbWl0LCBzaG93cGFnZWxpbmtzLCBiYWNrbGFiZWwgYW5k IG5leHRsYWJlbCBwcm9wZXJ0aWVzLgovLyBWZXJzaW9uIDAuMyAtIDEvMTAvMjAwNSAtIEFk ZGVkIGFydGljbGV0aHVtYnMgcHJvcGVydHkgdG8gYXV0b21hdGljYWxseSBzaG93IGEgZ2Fs bGVyeSBuYW1lZCAiYXJ0aWNsZS0iICsgdGhlIGN1cnJlbnQgYXJ0aWNsZSBJRC4KLy8gVmVy c2lvbiAwLjQgLSAxLzEwLzIwMDUgLSBBZGRlZCBvcmRlcmJ5LCBwYWdlcG9wIHVzaW5nIHRo dW1icG9wLnBocCwgcGFkaGVpZ2h0LCBwYWR3aWR0aC4KLy8gVmVyc2lvbiAwLjUgLSA1LzEv MjAwNSAtIEFkZGVkIGRpdnBvcCwganBvcCwgc2hvd2JsYW5rLCBibGFua2ltZywgY2xpY2tv bmx5LCB1c2VhcnRpY2xlLCBjYXRmaWVsZCwgYWRkcGVybWxpbmssIGZ1bGxvbnRvcCwgYWxs Y2F0cywgc2hvd2FsdCwgb3JkZXJieSBhbHQgKyByYW5kb20sIHRodW1icG9wLnBocCBpcyBu byBsb25nZXIgbmVlZGVkLgovLyBWZXJzaW9uIDAuNiAtIDEvNC8yMDA2IC0gQWRkZWQgb3Jk ZXJieSBuYW1lZGVzYywgZml4ZWQgdmFsaWRhdGlvbiBlcnJvcnMsIGZpeGVkIHBhZ2luZyBs aW5rcwovLyBWZXJzaW9uIDAuNi4xIC0gMS8xMC8yMDA2IC0gRml4ZWQgcGFnaW5nIGFnYWlu LiAgQWRkZWQgc2hvd2Z1bGxjYXB0aW9uIGZvciBqcG9wLgovLyBWZXJzaW9uIDAuNyAtIDgv Mi8yMDA2IC0gQWRkZWQgc2hvd2Z1bGxhbHQgZm9yIGpwb3AuICAoU3BvbnNvcmVkIGJ5IG1y ZGFsZSkKCmZ1bmN0aW9uIHJzc190aHVtYnBvcCgkYXR0cykgewpnbG9iYWwgJGltZ19kaXIs JHR4cGNmZywkcHJldGV4dCwkdGhpc2FydGljbGU7CmV4dHJhY3QoJGF0dHMpOwpleHRyYWN0 KCRwcmV0ZXh0KTsKCiRtb2RlID0gaXNzZXQoJG1vZGUpID8gJG1vZGU6ICJ0YWJsZSI7CiRj b2xzID0gaXNzZXQoJGNvbHMpID8gJGNvbHM6ICIzIjsKJGxhYmVsID0gaXNzZXQoJGxhYmVs KSA/ICRsYWJlbDogIiI7CiRzaG93Y2FwdGlvbiA9IGlzc2V0KCRzaG93Y2FwdGlvbikgPyAk c2hvd2NhcHRpb246ICIxIjsKJHNob3dhbHQgPSBpc3NldCgkc2hvd2FsdCkgPyAkc2hvd2Fs dDogIjAiOwokbm9wb3AgPSBpc3NldCgkbm9wb3ApID8gJG5vcG9wOiAiMCI7CiRjYXRlZ29y eSA9IGlzc2V0KCRjYXRlZ29yeSkgPyBkb1NsYXNoKCRjYXRlZ29yeSkgOiAkYyA7CiRsaW1p dD0gaXNzZXQoJGxpbWl0KSA/ICRsaW1pdDogIjk5OTk5IjsKJG9mZnNldD0gaXNzZXQoJG9m ZnNldCkgPyAkb2Zmc2V0OiAiMCI7CiRzaG93cGFnZWxpbmtzPSBpc3NldCgkc2hvd3BhZ2Vs aW5rcykgPyAkc2hvd3BhZ2VsaW5rczogIjEiOwokYmFja2xhYmVsPSBpc3NldCgkYmFja2xh YmVsKSA/ICRiYWNrbGFiZWw6ICJCYWNrIjsKJG5leHRsYWJlbD0gaXNzZXQoJG5leHRsYWJl bCkgPyAkbmV4dGxhYmVsOiAiTmV4dCI7CiRhcnRpY2xldGh1bWJzPSBpc3NldCgkYXJ0aWNs ZXRodW1icykgPyAkYXJ0aWNsZXRodW1iczogIjAiOwokb3JkZXJieSA9IGlzc2V0KCRvcmRl cmJ5KSA/ICRvcmRlcmJ5OiAiIjsKJHBhZ2Vwb3AgPSBpc3NldCgkcGFnZXBvcCkgPyAkcGFn ZXBvcDogIjAiOwokcGFkaGVpZ2h0ID0gaXNzZXQoJHBhZGhlaWdodCkgPyAkcGFkaGVpZ2h0 OiAiMjAiOwokcGFkd2lkdGggPSBpc3NldCgkcGFkd2lkdGgpID8gJHBhZHdpZHRoOiAiMjAi OwokZGl2cG9wID0gaXNzZXQoJGRpdnBvcCkgPyAkZGl2cG9wOiAiMCI7CiRmdWxsb250b3Ag PSBpc3NldCgkZnVsbG9udG9wKSA/ICRmdWxsb250b3A6ICIxIjsKJHNob3dmdWxsY2FwdGlv biA9IGlzc2V0KCRzaG93ZnVsbGNhcHRpb24pID8gJHNob3dmdWxsY2FwdGlvbjogIjAiOwok c2hvd2Z1bGxhbHQgPSBpc3NldCgkc2hvd2Z1bGxhbHQpID8gJHNob3dmdWxsYWx0OiAiMCI7 CiRhbGxjYXRzID0gaXNzZXQoJGFsbGNhdHMpID8gJGFsbGNhdHM6ICIwIjsKJGpwb3AgPSBp c3NldCgkanBvcCkgPyAkanBvcDogIjAiOwokc2hvd2JsYW5rID0gaXNzZXQoJHNob3dibGFu aykgPyAkc2hvd2JsYW5rOiAiMCI7CiRibGFua2ltZyA9IGlzc2V0KCRibGFua2ltZykgPyAk YmxhbmtpbWc6ICIvaW1nL2JsYW5rcGhvdG8uanBnIjsKJGNsaWNrb25seSA9IGlzc2V0KCRj bGlja29ubHkpID8gJGNsaWNrb25seTogIjAiOwokdXNlYXJ0aWNsZSA9IGlzc2V0KCR1c2Vh cnRpY2xlKSA/ICR1c2VhcnRpY2xlOiAiMCI7CiRjYXRmaWVsZCA9IGlzc2V0KCRjYXRmaWVs ZCkgPyAkY2F0ZmllbGQ6ICJjdXN0b21fMSI7CiRhZGRwZXJtbGluayA9IGlzc2V0KCRhZGRw ZXJtbGluaykgPyAkYWRkcGVybWxpbms6ICIxIjsKJGFydGNhdCA9ICIiOwokZGl2aW1nID0g IiI7CiRpPTA7CgppZiAoJHVzZWFydGljbGUpIHsKCSRpZCA9ICR0aGlzYXJ0aWNsZVsidGhp c2lkIl07CgkkcmVzID0gc2FmZV9yb3dzKCIqLCB1bml4X3RpbWVzdGFtcChQb3N0ZWQpIGFz IHVQb3N0ZWQiLCAidGV4dHBhdHRlcm4iLCAiaWQgPSAiLiRpZCk7CgoJaWYgKCRyZXMpIHsK CQlmb3JlYWNoKCRyZXMgYXMgJGEpIHsKCQkJZXh0cmFjdCgkYSk7CgkJCXBvcHVsYXRlQXJ0 aWNsZURhdGEoJGEpOwoJCQkkYXJ0Y2F0ID0gIiBBTkQgKGNhdGVnb3J5ID0gJyIgLiBkb1Ns YXNoKCRhWyRjYXRmaWVsZF0pIC4gIicpICI7CgkJCSRhcnRsaW5rID0gcGVybWxpbmt1cmwo JGEpOwoJCX0KCX0KfQoKZm9yZWFjaCAoZXhwbG9kZSgnLCcsICRjYXRlZ29yeSkgYXMgJGNh dGVnb3J5KSB7CgkkY2F0c3FsW10gPSAoJGNhdGVnb3J5KSA/ICIgKGNhdGVnb3J5ID0gJyIg LiBkb1NsYXNoKCRjYXRlZ29yeSkgLiAiJykgIiA6ICIiOwp9CiRjYXRlZ29yaWVzID0gKCEk YWxsY2F0cyAmJiAkY2F0ZWdvcnkpID8gJygnIC4gam9pbignIE9SICcsICRjYXRzcWwpIC4g JyknIDogJzE9MSAnOwoKCmlmICAoJGFydGljbGV0aHVtYnMpIHsKCSRjYXRlZ29yaWVzID0g IiAoY2F0ZWdvcnkgPSAnIiAuIGRvU2xhc2goJ2FydGljbGUtJyAuICR0aGlzYXJ0aWNsZVsn dGhpc2lkJ10pIC4gIicpICI7Cn0KCnN3aXRjaCAoJG9yZGVyYnkpIHsKY2FzZSAibmFtZSI6 CiAgICRvYmZpZWxkPSIgT1JERVIgQlkgbmFtZSI7CiAgIGJyZWFrOwpjYXNlICJuYW1lZGVz YyI6CiAgICRvYmZpZWxkPSIgT1JERVIgQlkgbmFtZSBkZXNjIjsKICAgYnJlYWs7CmNhc2Ug ImNhcHRpb24iOgogICAkb2JmaWVsZD0iIE9SREVSIEJZIGNhcHRpb24iOwogICBicmVhazsK Y2FzZSAiYWx0IjoKICAgJG9iZmllbGQ9IiBPUkRFUiBCWSBhbHQiOwogICBicmVhazsKY2Fz ZSAiZGF0ZWFzYyI6CiAgICRvYmZpZWxkPSIgT1JERVIgQlkgZGF0ZSBhc2MiOwogICBicmVh azsKY2FzZSAiZGF0ZWRlc2MiOgogICAkb2JmaWVsZD0iIE9SREVSIEJZIGRhdGUgZGVzYyI7 CiAgIGJyZWFrOwpjYXNlICJyYW5kb20iOgogICAkb2JmaWVsZD0iIE9SREVSIEJZIHJhbmQo KSI7CiAgIGJyZWFrOwpkZWZhdWx0OgoJJG9iZmllbGQ9IiI7Cn0KCmlmICgkbGltaXQgJiYg JHNob3dwYWdlbGlua3MpIHsKCgoJLy8gRE8gUEFHSU5HCgkkd2hlcmUgPSAkY2F0ZWdvcmll cy4kYXJ0Y2F0LiRvYmZpZWxkLicgTElNSVQgJy4kb2Zmc2V0LicsOTk5OTknOwoJJHJlc3Vs dHMgPSBzYWZlX3Jvd3MoJyonLCAndHhwX2ltYWdlJywgJHdoZXJlKTsKCSRudW10aHVtID0g Y291bnQoJHJlc3VsdHMpOwoKCSRudW1QYWdlcyA9ICgkbnVtdGh1bSA+IDAgJiYgJGxpbWl0 KSA/IGNlaWwoJG51bXRodW0vJGxpbWl0KSA6IDE7CgkkdGh1bWJwYWdlID0gKCFncHMoJ3Rw ZycpKSA/IDEgOiBncHMoJ3RwZycpOwoJJG9mZnNldCA9ICgkdGh1bWJwYWdlIC0gMSkgKiAk bGltaXQ7CgkkcmVzdWx0cyA9IHNhZmVfcm93cygnKicsICd0eHBfaW1hZ2UnLCAkY2F0ZWdv cmllcy4kb2JmaWVsZC4nIExJTUlUICcuJG9mZnNldC4nLCcuJGxpbWl0KTsKCn0gZWxzZSB7 CgoJLy9OTyBQQUdJTkcKCSRudW1QYWdlcyA9IDA7Cgkkd2hlcmUgPSAkY2F0ZWdvcmllcy4k YXJ0Y2F0LiRvYmZpZWxkLicgTElNSVQgJy4kb2Zmc2V0LicsJy4kbGltaXQ7CgkkcmVzdWx0 cyA9IHNhZmVfcm93cygnKicsICd0eHBfaW1hZ2UnLCAkd2hlcmUpOwoJJG51bXRodW0gPSBj b3VudCgkcmVzdWx0cyk7CgoJaWYgKCRudW10aHVtID09IDAgJiYgJGFydGljbGV0aHVtYnMp IHsKCQlyZXR1cm47Cgl9Cgp9CgppZiAoJG1vZGU9PSJ0YWJsZSIpIHsKCSRoZWFkID0gJzx0 YWJsZSBjbGFzcz0icnNzVGh1bWJzIj4nLm47CgkkaGVhZC49ICgkbGFiZWwpID8gJzx0cj48 dGggY2xhc3M9InJzc1RodW1iTGFiZWwiIGNvbHNwYW49IicgLiAkY29scyAuICciPicuICRs YWJlbCAuJzwvdGg+PC90cj4nLm4gOiAnJzsKCSRoZWFkLj0gJzx0cj4nLm47Cn0gZWxzZSAJ aWYgKCRtb2RlID09ICJmbG9hdCIpIHsKCSRoZWFkID0gJzxkaXYgY2xhc3M9InJzc1RodW1i cyI+JzsKCSRoZWFkLj0gKCRsYWJlbCkgPyAnPGRpdiBjbGFzcz0icnNzVGh1bWJMYWJlbCI+ Jy4gJGxhYmVsIC4nPC9kaXY+Jy5uIDogJyc7Cn0KCmlmKCRyZXN1bHRzKXsKCWZvcmVhY2go JHJlc3VsdHMgYXMgJGltYWdlKXsKCQlleHRyYWN0KCRpbWFnZSk7CgkJJHRodW1iID0gIGh1 LiRpbWdfZGlyLicvJyAuICRpZCAuICd0JyAuICRleHQ7CgkJJGZ1bGwgPSBodS4kaW1nX2Rp ci4nLycgLiAkaWQgLiAkZXh0OwoKCQkkZGl2aW1nID0gKGdwcygiaW1nIikgJiYgKCRpZCA9 PSBncHMoImltZyIpKSAmJiAkZGl2cG9wKSA/ICc8ZGl2IGNsYXNzPSJyc3NGdWxsIj48aW1n IHNyYz0iJyAgLiAkZnVsbCAuICciIGFsdD0iJy4kYWx0LiciIC8+PC9kaXY+Jy5uIDogJGRp dmltZzsKCgkJJGltZyA9IChpc3NldCgkYXJ0bGluaykgJiYgJGFkZHBlcm1saW5rKSA/IGhy ZWYoJzxpbWcgY2xhc3M9InJzc1RodW1iIiBzcmM9IicgIC4gJHRodW1iIC4gJyIgYWx0PSIn LiRhbHQuJyIgdGl0bGU9IicuJGNhcHRpb24uJyIgLz4nLCRhcnRsaW5rKSA6ICc8aW1nIGNs YXNzPSJyc3NUaHVtYiIgc3JjPSInICAuICR0aHVtYiAuICciIGFsdD0iJy4kYWx0LiciIHRp dGxlPSInLiRjYXB0aW9uLiciIC8+JzsKCgkJaWYgKCEkbm9wb3AgKSB7CgkJCWlmICgkcGFn ZXBvcCkgewoJCQkJJHBhZ2UgPSBodSAuICJpbmRleC5waHA/ZmlsZT10aHVtYnBvcCZhbXA7 cGljPSIgLiAkaWQ7CgkJCQkkaW1ndGFnID0gam9pbigiIixhcnJheSgKCQkJCQkiIDxhIHRh cmdldD1cIl9ibGFua1wiIGhyZWY9XCIiLiRwYWdlLiJcIiIsCgkJCQkJIiBvbmNsaWNrPVwi Iiwid2luZG93Lm9wZW4odGhpcy5ocmVmLCAncG9wdXB3aW5kb3cnLCAnd2lkdGg9Iiwkdysk cGFkd2lkdGgsIixoZWlnaHQ9IiwkaCskcGFkaGVpZ2h0LAoJCQkJCSIscmVzaXphYmxlJyk7 IHJldHVybiBmYWxzZTtcIj4iLAoJCQkJCSRpbWcsIjwvYT4iKSk7CgkJCX0gZWxzZSBpZiAo JGRpdnBvcCkgewoJCQkJJGltZ3RhZyA9ICc8YSBocmVmPSI/aW1nPScuJGlkLiciPicuJGlt Zy4nPC9hPic7CgkJCX0gZWxzZSBpZiAoJGpwb3ApIHsKCQkJCSRldmVudHMgPSAoJGNsaWNr b25seSkgPyAnb25jbGljaz0icmV0dXJuIHNob3dQaWModGhpcykiJyA6ICdvbm1vdXNlb3Zl cj0icmV0dXJuIHNob3dQaWModGhpcykiIG9uY2xpY2s9InJldHVybiBzaG93UGljKHRoaXMp Iic7CgkJCQkkaW1ndGl0ID0gKCRzaG93ZnVsbGFsdCkgPyAkYWx0LiJ8Ii4kY2FwdGlvbiA6 ICRjYXB0aW9uOwoJCQkJJGltZ3RhZyA9ICc8YSAnLiRldmVudHMuJyBocmVmPSInLiRmdWxs LiciIHRpdGxlPSInLiRpbWd0aXQuJyI+Jy4kaW1nLic8L2E+JzsKCQkJCSRibGFua2ltZyA9 ICgkc2hvd2JsYW5rKSA/ICRibGFua2ltZyA6ICRmdWxsOwoJCQkJJGRpdmltZyA9ICc8ZGl2 IGlkPSJmdWxsc2l6ZSI+PGRpdiBpZD0iZGVzYyI+TW91c2Ugb3ZlciBhIHRodW1ibmFpbCB0 byB2aWV3PC9kaXY+JzsKCQkJCSRkaXZpbWcgLj0gKCRzaG93ZnVsbGFsdCkgPyAnPGRpdiBp ZD0ianBvcGFsdCI+Jy4kYWx0Lic8L2Rpdj4nIDogJyc7CgkJCQkkZGl2aW1nIC49ICc8aW1n IGlkPSJwbGFjZWhvbGRlciIgc3JjPSInLiRibGFua2ltZy4nIiBhbHQ9IiIgLz4nOwoJCQkJ JGRpdmltZyAuPSAoJHNob3dmdWxsY2FwdGlvbikgPyAnPGRpdiBpZD0ianBvcGNhcCI+Jy4k Y2FwdGlvbi4nPC9kaXY+JyA6ICcnOwoJCQkJJGRpdmltZyAuPSAnPC9kaXY+JzsKCQkJfSBl bHNlIHsKCQkJCSRpbWd0YWcgPSBqb2luKCIiLGFycmF5KAoJCQkJCSIgPGEgdGFyZ2V0PVwi X2JsYW5rXCIgaHJlZj1cIiIuJGZ1bGwuIlwiIiwKCQkJCQkiIG9uY2xpY2s9XCIiLCJ3aW5k b3cub3Blbih0aGlzLmhyZWYsICdwb3B1cHdpbmRvdycsICd3aWR0aD0iLCR3KyRwYWR3aWR0 aCwiLGhlaWdodD0iLCRoKyRwYWRoZWlnaHQsCgkJCQkJIixyZXNpemFibGUnKTsgcmV0dXJu IGZhbHNlO1wiPiIsCgkJCQkJJGltZywiPC9hPiIpKTsKCQkJfQoJCX0gZWxzZSB7CgkJCSRp bWd0YWcgPSAkaW1nOwoJCX0KCgkJJG51bXRodW0tLTsKCgkJaWYgKCRtb2RlID09ICJ0YWJs ZSIpIHsKCQkJJG91dHB1dFtdID0gICc8dGQgdmFsaWduPSJ0b3AiPjxkaXYgY2xhc3M9InJz c0ltZyI+JzsKCQkJJG91dHB1dFtdID0gJGltZ3RhZy4nPC9kaXY+JzsKCQkJJG91dHB1dFtd ID0gKCRzaG93YWx0ICYmICRhbHQpID8gbi4nPHNwYW4gY2xhc3M9ImNhcCI+Jy4kYWx0Lic8 L3NwYW4+Jy5uIDogJyc7CgkJCSRvdXRwdXRbXSA9ICgkc2hvd2NhcHRpb24gJiYgJGNhcHRp b24pID8gJzxzcGFuIGNsYXNzPSJjYXAiPicuJGNhcHRpb24uJzwvc3Bhbj4nLm4gOiAnJzsK CQkJJG91dHB1dFtdID0gJzwvdGQ+Jy5uOwoJCQlpZigkaSsrICUgJGNvbHMgPT0gKCRjb2xz IC0gMSkgJiYgJG51bXRodW0gPiAwKSAkb3V0cHV0W109ICc8L3RyPicgLm4gLiAnPHRyPicu bjsKCQl9IGVsc2UJaWYgKCRtb2RlID09ICJmbG9hdCIpIHsKCQkJJG91dHB1dCBbXSA9ICAn PGRpdiBjbGFzcz0icnNzVGh1bWJGbG9hdCI+Jy5uOwoJCQkkb3V0cHV0W10gPSAkaW1ndGFn OwoJCQkkb3V0cHV0W10gPSAoJHNob3dhbHQgJiYgJGFsdCkgPyBuLic8c3BhbiBjbGFzcz0i Y2FwIj4nLiRhbHQuJzwvc3Bhbj4nLm4gOiAnJzsKCQkJJG91dHB1dFtdID0gKCRzaG93Y2Fw dGlvbiAmJiAkY2FwdGlvbikgPyAnPHNwYW4gY2xhc3M9ImNhcCI+Jy4kY2FwdGlvbi4nPC9z cGFuPicubiA6ICcnOwoJCQkkb3V0cHV0W10gPSAnPC9kaXY+Jy5uOwoJCQlpZigkaSsrICUg JGNvbHMgPT0gKCRjb2xzIC0gMSkgJiYgJG51bXRodW0gPiAwKSAkb3V0cHV0W109ICc8YnIg c3R5bGU9ImNsZWFyOiBib3RoOyIgLz4nLm47CgkJfQoJfQp9IGVsc2Ugewokb3V0cHV0W109 ICgkbW9kZSA9PSAidGFibGUiKSA/ICc8dGQgY2xhc3M9InJzc0ltZyIgIGNvbHNwYW49Iicg LiAkY29scyAuICciPk5vIEltYWdlcyBGb3VuZDwvdGQ+Jy5uIDogJ05vIEltYWdlcyBGb3Vu ZCc7Cn0KJG91dHB1dFtdID0gKCRtb2RlID09ICJ0YWJsZSIpID8gbi4nPC90cj4nLm4uJzwv dGFibGU+Jy5uIDogJzxiciBzdHlsZT0iY2xlYXI6IGJvdGg7IiAvPjwvZGl2PicubjsKCmlm ICgkbnVtUGFnZXMgPiAxICYmICRzaG93cGFnZWxpbmtzKSB7CgkkbmV4dCA9ICgkbnVtUGFn ZXMgPiAxICYmICR0aHVtYnBhZ2UgIT0gJG51bVBhZ2VzKTsKCSRiYWNrID0gKCRudW1QYWdl cyA+IDEgJiYgJHRodW1icGFnZSA+IDEpOwoJJG91dHB1dFtdID0gJzx1bCBpZD0icnNzVGh1 bWJOYXYiPicubjsKCSRvdXRwdXRbXSA9ICgkYmFjaykgPyAnPGxpIGNsYXNzPSJsZWZ0Ij48 YSBocmVmPSI/dHBnPScuKCR0aHVtYnBhZ2UtMSkuJyI+Jy4kYmFja2xhYmVsLic8L2E+PC9s aT4nLm4gOiAnJzsKCSRvdXRwdXRbXSA9ICgkbmV4dCkgPyAnPGxpIGNsYXNzPSJyaWdodCI+ PGEgaHJlZj0iP3RwZz0nLigkdGh1bWJwYWdlKzEpLiciPicuJG5leHRsYWJlbC4nPC9hPjwv bGk+Jy5uIDogJyc7Cgkkb3V0cHV0W10gPSAnPC91bD4nLm47Cn0KCiRqcG9wID0gKCRqcG9w KSA/IGpzUG9wKCkgOiAnJzsKCnJldHVybiAoJGZ1bGxvbnRvcCkgPyAkZGl2aW1nLiRoZWFk LmltcGxvZGUoJycsICRvdXRwdXQpLiRqcG9wIDogJGhlYWQuaW1wbG9kZSgnJywgJG91dHB1 dCkuJGRpdmltZy4kanBvcDsKfQoKZnVuY3Rpb24ganNQb3AoKSB7CnJldHVybiA8PDxFT0YK PHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4K PCEtLQoJLy8gSmF2YXNjcmlwdCBJbWFnZSBHYWxsZXJ5IGJ5IEplcmVteSBLZWl0aAoJLy8g aHR0cDovL2FkYWN0aW8uY29tL2FydGljbGVzL2Rpc3BsYXkucGhwL2phdmFzY3JpcHRfaW1h Z2VfZ2FsbGVyeQoJZnVuY3Rpb24gc2hvd1BpYyAod2hpY2hwaWMpIHsKCQlpZiAoZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQpIHsKCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BsYWNl aG9sZGVyJykuc3JjID0gd2hpY2hwaWMuaHJlZjsKCQkJaWYgKHdoaWNocGljLnRpdGxlKSB7 CgkJCQkgdmFyIHJzc1RleHQgPSB3aGljaHBpYy50aXRsZTsKCQkJCSB0eHR0ID0gcnNzVGV4 dC5zdWJzdHJpbmcocnNzVGV4dC5pbmRleE9mKCd8JykgKyAxLCByc3NUZXh0Lmxlbmd0aCk7 CgkJCQkgYWx0dCA9IHJzc1RleHQuc3Vic3RyaW5nKDAscnNzVGV4dC5pbmRleE9mKCd8Jykp OwoJCQkJIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnanBvcGNhcCcpKSBkb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgnanBvcGNhcCcpLmNoaWxkTm9kZXNbMF0ubm9kZVZhbHVlID0g dHh0dDsKCQkJCSBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2pwb3BhbHQnKSkgZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2pwb3BhbHQnKS5jaGlsZE5vZGVzWzBdLm5vZGVWYWx1 ZSA9IGFsdHQ7CgkJCX0gZWxzZSB7CgkJCQkgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCdqcG9wY2FwJykpIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdqcG9wY2FwJykuY2hpbGRO b2Rlc1swXS5ub2RlVmFsdWUgPSB3aGljaHBpYy5jaGlsZE5vZGVzWzBdLm5vZGVWYWx1ZTsK CQkJCSBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2pwb3BhbHQnKSkgZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoJ2pwb3BhbHQnKS5jaGlsZE5vZGVzWzBdLm5vZGVWYWx1ZSA9IHdo aWNocGljLmNoaWxkTm9kZXNbMF0ubm9kZVZhbHVlOwoJCQl9CgkJCXJldHVybiBmYWxzZTsK CQl9IGVsc2UgewoJCQlyZXR1cm4gdHJ1ZTsKCQl9Cgl9CgktLT4KCTwvc2NyaXB0PgpFT0Y7 Cn0KCmlmIChncHMoJ2ZpbGUnKSA9PSAndGh1bWJwb3AnKSB7CiRpZCA9ICRfR0VUWyJwaWMi XTsKaWYgKCEkaWQpIHsgcmV0dXJuOyB9Cmdsb2JhbCAkcGZyLCRpbWdfZGlyOwokZ2V0ID0g c2FmZV9yb3coIioiLCJ0eHBfaW1hZ2UiLCJpZD0nJGlkJyIpOwpleHRyYWN0KCRnZXQpOwoK ZWNobyA8PDxFT0YKCjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwg MS4wIFRyYW5zaXRpb25hbC8vRU4iCiAgICAgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3ho dG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgo8aHRtbCB4bWxucz0iaHR0cDov L3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sOmxhbmc9ImVuIiBsYW5nPSJlbiI+CiAgPGhl YWQ+CiAgICA8dGl0bGU+CkVPRjsKCQkJZWNobyAkYWx0OwplY2hvIDw8PEVPRgoJCTwvdGl0 bGU+CgkJPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0 bWw7IGNoYXJzZXQ9dXRmLTgiIC8+CgkJPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0i c2NyZWVuIj4KCQkJPCEtLQoJCQlwIHsgZm9udDogLjhlbSBWZXJkYW5hLCBzYW5zLXNlcmlm OyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0KCQkJaW1nIHsgcGFkZGluZzogMnB4OyBib3JkZXI6 IDFweCBzb2xpZCAjNTU1OyB9CgkJCS0tPgoJCTwvc3R5bGU+CiAgPC9oZWFkPgogIDxib2R5 PgpFT0Y7CgkJZWNobyAnPGltZyBzcmM9IicgIC4gJHBmci4kaW1nX2Rpci4nLycgLiAkaWQg LiAkZXh0IC4gJyIgYWx0PSInLiRhbHQuJyIgLz48cD4nIC4gJGNhcHRpb24gLic8L3A+JzsK ZWNobyA8PDxFT0YKICA8L2JvZHk+CjwvaHRtbD4KCkVPRjsKZXhpdDsKfQoiO3M6NDoidHlw ZSI7czoxOiIwIjtzOjU6Im9yZGVyIjtzOjE6IjUiO3M6NDoiaGVscCI7czoyMzUwOiI8aHIv Pgo8cCBhbGlnbj0iY2VudGVyIj48YSBocmVmPSJodHRwOi8vd3d3LndpbHNoaXJlb25lLmNv bS90ZXh0cGF0dGVybi1wbHVnaW5zL3Jzcy10aHVtYnBvcCI+TGF0ZXN0IERvY3VtZW50YXRp b248L2E+PC9wPgo8aHIvPgoKCTxwPkhlcmUgYXJlIHRoZSBtYWpvciBmdW5jdGlvbnMgb2Yg dGhlIHBsdWdpbjoKCTx1bD4KCQk8bGk+R2VuZXJhdGVzIGEgdGh1bWJuYWlsIGdhbGxlcnkg dXNpbmcgYSB0YWJsZSBvciBmbG9hdGVkIGRpdnM8L2xpPgoJCTxsaT5BbGxvd3MgYWxsIGNh dGVnb3JpZXMsIG11bHRpcGxlIGNhdGVnb3JpZXMgb3IgdXNlIG9mIHRoZSBnbG9iYWwgY2F0 ZWdvcnk8L2xpPgoJCTxsaT5UaHVtYm5haWxzIGFyZSBoeXBlcmxpbmtlZAoJPHVsPgoJCTxs aT5hbmQgc2hvd24gaW4gYSBwb3B1cCBvZiB0aGUgZnVsbCBzaXplIGltYWdlIG9ubHk8L2xp PgoJCTxsaT5hbmQgc2hvd24gaW4gYSBwb3B1cCBwYWdlIHdpdGggdGhlIGZ1bGwgc2l6ZSBp bWFnZSBhbmQgY2FwdGlvbjwvbGk+CgkJPGxpPmFuZCB0aGUgZnVsbCBzaXplIGltYWdlIGlz IHNob3duIG9uIHRoZSBzYW1lIHBhZ2UgYWZ0ZXIgYSByZWxvYWQ8L2xpPgoJCTxsaT5hbmQg dGhlIGZ1bGwgc2l6ZSBpbWFnZSBpcyBzaG93biBvbiB0aGUgc2FtZSBwYWdlIHVzaW5nIGph dmFzY3JpcHQgd2l0aCBubyByZWxvYWQ8L2xpPgoJPC91bD48L2xpPgoJCTxsaT5DYW4gYmUg dXNlZCB0byBhdXRvbWF0aWNhbGx5IHNob3cgYSBnYWxsZXJ5IGJhc2VkIG9uIHRoZSBjdXJy ZW50IGFydGljbGUgSUQ8L2xpPgoJCTxsaT5TdXBwb3J0cyBwYWdpbmc8L2xpPgoJCTxsaT5J bWFnZXMgY2FuIGJlIG9yZGVyZWQgYnkgbmFtZSwgY2FwdGlvbiwgZGF0ZSBhc2MsIGRhdGUg ZGVzYyBvciByYW5kb208L2xpPgoJCTxsaT5EZWZpbmUgdGhlIHBhZGRpbmcgYXJvdW5kIHRo ZSBpbWFnZSBpbiB0aGUgcG9wdXAgd2luZG93PC9saT4KCQk8bGk+RGVmaW5lIHRoZSBudW1i ZXIgb2YgaW1hZ2VzIHBlciByb3c8L2xpPgoJCTxsaT5PcHRpb25hbGx5IHNob3cgaW1hZ2Ug Y2FwdGlvbnMgaW4gdGh1bWJuYWlsIHZpZXc8L2xpPgoJCTxsaT5PcHRpb25hbGx5IHNob3cg aW1hZ2UgYWx0IHRleHQgaW4gdGh1bWJuYWlsIHZpZXc8L2xpPgoJCTxsaT5PcHRpb25hbGx5 IGluY2x1ZGUgYSBoZWFkZXIgbGFiZWwgaW4gdGh1bWJuYWlsIHZpZXc8L2xpPgoJCTxsaT5P cHRpb25hbGx5IHR1cm4gcG9wdXBzIG9mZjwvbGk+CgkJPGxpPkJ1aWx0IGluIGNsYXNzZXMg cnNzVGh1bWJzLCByc3NUaHVtYkxhYmVsLCByc3NUaHVtYiwgcnNzSW1nLCByc3NUaHVtYkZs b2F0IGZvciBlYXN5IDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IHN0eWxpbmc8L2xp PgoJPC91bD48L3A+Cgo8aHIvPgoKCTxwPjxzdHJvbmc+SU1QT1JUQU5UOjwvc3Ryb25nPiBJ ZiB5b3UgYXJlIHVzaW5nICYjODIyMDtmbG9hdCYjODIyMTsgbW9kZSB5b3UgbXVzdCBhZGQg c3R5bGluZyBmb3IgdGhlIHJzc1RodW1iRmxvYXQgY2xhc3MuIFNlZSB0aGUgZXhhbXBsZSBh dCB0aGUgYm90dG9tIG9yIGNoZWNrIHRoZSA8YSBocmVmPSJodHRwOi8vY3NzLm1heGRlc2ln bi5jb20uYXUvZmxvYXR1dG9yaWFsL3R1dG9yaWFsMDQwNy5odG0iPkZsb2F0dXRvcmlhbDwv YT4uPC9wPgoKCTxwPjxzdHJvbmc+SU1QT1JUQU5UOjwvc3Ryb25nPiBJZiB5b3UgYXJlIHVz aW5nIHRoZSBzaG93cGFnZWxpbmtzIGRlZmF1bHQgc2V0dGluZyB3aXRoIHBhZ2luZyB5b3Ug bXVzdCBhZGQgc3R5bGluZyBmb3IgdGhlIHJzc1RodW1iTmF2IGlkLiBTZWUgdGhlIGV4YW1w bGUgYXQgdGhlIGJvdHRvbSBvciBjaGVjayB0aGUgPGEgaHJlZj0iaHR0cDovL2Nzcy5tYXhk ZXNpZ24uY29tLmF1L2Zsb2F0dXRvcmlhbC90dXRvcmlhbDA1MTMuaHRtIj5GbG9hdHV0b3Jp YWw8L2E+LjwvcD4KCgk8cD48c3Ryb25nPlRJUDo8L3N0cm9uZz4gVXNlIHRoZSA8YSBocmVm PSJodHRwOi8vam9oYW4uZ2FsYXhlbi5uZXQvbG9nZy8xMTEvdGV4dHBhdHRlcm4tcGx1Z2lu LWdseC1hZG1pbi1pbWFnZSI+Z2x4X2FkbWluX2ltYWdlPC9hPiBwbHVnaW4gdG8gbWFrZSB5 b3VyIGxpZmUgYSBsb3QgZWFzaWVyLjwvcD4KCjxoci8+CgoJPHA+RnVsbCBkb2N1bWVudGF0 aW9uIGZvciB0aGUgdGFncyBwYXJhbWV0ZXJzIGlzIGFzIGZvbGxvd3M6PC9wPgoKCTxwPjxz dHJvbmc+Y2F0ZWdvcnk8L3N0cm9uZz48YnIgLz4KQWNjZXB0cyBhIGNvbW1hIHNlcGFyYXRl IGxpc3Qgb2YgY2F0ZWdvcmllcy4gIE5PIHNwYWNlcy4gIElmIGN1cnJlbnRseSBicm93c2lu ZyBieSBjYXRlZ29yeSwgdGhlIGdsb2JhbCBjYXRlZ29yeSB3aWxsIGJlIHVzZWQgYXMgdGhl IGRlZmF1bHQuPGJyIC8+CkRlZmF1bHQ6IjtzOjM6Im1kNSI7czozMjoiYzlhYzQ4NGM3Mzdh YTQwNGY5N2ExZjRjMTQyNjNlZmUiO30=