# aro_slideshow v2.0.1 # Slideshow is a javascript class to stream and animate the presentation of images on your website # Aeron Glemann # http://www.electricprism.com/aeron # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YTo5OntzOjc6InZlcnNpb24iO3M6NToiMi4wLjEiO3M6NjoiYXV0aG9yIjtzOjEzOiJBZXJv biBHbGVtYW5uIjtzOjEwOiJhdXRob3JfdXJpIjtzOjM0OiJodHRwOi8vd3d3LmVsZWN0cmlj cHJpc20uY29tL2Flcm9uIjtzOjExOiJkZXNjcmlwdGlvbiI7czo5NjoiU2xpZGVzaG93IGlz IGEgamF2YXNjcmlwdCBjbGFzcyB0byBzdHJlYW0gYW5kIGFuaW1hdGUgdGhlIHByZXNlbnRh dGlvbiBvZiBpbWFnZXMgb24geW91ciB3ZWJzaXRlIjtzOjQ6InR5cGUiO2k6MDtzOjQ6Im5h bWUiO3M6MTM6ImFyb19zbGlkZXNob3ciO3M6NDoiaGVscCI7czoxMzk4MDoiCgoJPGgxPmFy b19zbGlkZXNob3c8L2gxPgoKCTxwPlNsaWRlc2hvdyBpcyBhIGphdmFzY3JpcHQgY2xhc3Mg dG8gc3RyZWFtIGFuZCBhbmltYXRlIHRoZSBwcmVzZW50YXRpb24gb2YgaW1hZ2VzIG9uIHlv dXIgd2Vic2l0ZS4gSGVyZSBpcyBhbiA8YSBocmVmPSJodHRwOi8vd3d3LmVsZWN0cmljcHJp c20uY29tL2Flcm9uL3NsaWRlc2hvdyI+ZXhhbXBsZTwvYT4uPC9wPgoKCTxwPkRvd25sb2Fk OiA8YSBocmVmPSJodHRwOi8vd3d3LmVsZWN0cmljcHJpc20uY29tL2Flcm9uL3NsaWRlc2hv dy90eHAvYXJvX3NsaWRlc2hvdy50eHQiPmFyb19zbGlkZXNob3cudHh0PC9hPjxiciAvPgpE b3dubG9hZDogPGEgaHJlZj0iaHR0cDovL3d3dy5lbGVjdHJpY3ByaXNtLmNvbS9hZXJvbi9z bGlkZXNob3cvanMvc2xpZGVzaG93LmpzIj5zbGlkZXNob3cuanM8L2E+PC9wPgoKCTxoMj5B Ym91dCBUaGlzIFBsdWdpbjwvaDI+CgoJPHA+VGhpcyBwbHVnaW4gaXMgYWJvdXQgOTUlIGNv ZGUgZnJvbSBTdGVmIERhd3NvbiYjODIxNztzIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0 cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9pZD0yMDcxNCI+c21kX3NsaW1ib3g8L2E+LiBR dWl0ZSBzaW1wbHksIGFzIGFub3RoZXIgTW9vdG9vbHMgYmFzZWQgcGx1Z2luLCBTdGVmIGhh cyBzZXQgdGhlIHN0YW5kYXJkIGFzIHRvIG5hbWluZyBjb252ZW50aW9ucywgZHluYW1pc20g YW5kIGNvbnRyb2wgdGhhdCBUZXh0cGF0dGVybiB1c2VycyBleHBlY3QuIFJhdGhlciB0aGFu IGF0dGVtcHQgdG8gc3RhcnQgZnJvbSB6ZXJvLCBJIHdvdWxkIHJhdGhlciBzdGFuZCBvbiB0 aGUgc2hvdWxkZXJzIG9mIGdpYW50cy4gQXMgc3VjaCwgcGxlYXNlIHJlZmVyZW5jZSB0aGUg PGNvZGU+c21kX3NsaW1ib3g8L2NvZGU+IHRocmVhZCBhcyB0byB0aGUgZGV0YWlsZWQgdXNh Z2Ugb2YgdGhlIHBsdWdpbiwgdGhlIGhlbHAgaGVyZSBvbmx5IG91dGxpbmVzIGZ1bmN0aW9u YWxpdHkgc3BlY2lmaWMgdG8gc2xpZGVzaG93LjwvcD4KCgk8aDI+U2V0dXA8L2gyPgoKCTxw Pk5vdGU6IHRoaXMgcGx1Z2luIGRvZXMgbm90IGhhdmUgYSBjb3JyZXNwb25kaW5nIHRhZyB0 byBTdGVmJiM4MjE3O3MgPGNvZGU+c21kX3NsaW1ib3hfaW5jPC9jb2RlPi4gSW4gb3JkZXIg dG8gYXZvaWQgY29uZmxpY3RzIHdpdGggdGhlIHBsdWdpbiBvZiB0aGUgc2FtZSwgYW5kIGJl Y2F1c2Ugc2xpZGVzaG93IGRvZXMgbm90IGluY2x1ZGUgYSBzdGFuZGFyZCBzZXQgb2YgY3Nz IGFuZCBpbWFnZXMgYXMgd2l0aCBzbGltYm94LCBJIHRob3VnaHQgaXQgd291bGQgYmUgZWFz aWVzdCB0byBqdXN0IGFkZCB0aGUgamF2YXNjcmlwdCB0YWdzIG1hbnVhbGx5LiBTbyYjODIz MDs8L3A+CgoJPHA+SWYgeW91IGFyZSBjdXJyZW50bHkgdXNpbmcgdGhlIDxhIGhyZWY9Imh0 dHA6Ly93d3cubW9vdG9vbHMubmV0Ij5Nb290b29sczwvYT4gamF2YXNjcmlwdCBmcmFtZXdv cmsgaW4geW91ciB3ZWJzaXRlLCBzaW1wbHkgbWFrZSBzdXJlIHRoYXQgdGhlIHZlcnNpb24g eW91IGFyZSB1c2luZyBpbmNsdWRlcyA8Y29kZT5Eb208L2NvZGU+LCA8Y29kZT5GeC5TdHls ZTwvY29kZT4sIDxjb2RlPkZ4LlN0eWxlczwvY29kZT4sIDxjb2RlPkZ4LkVsZW1lbnRzPC9j b2RlPiBhbmQgPGNvZGU+RnguVHJhbnNpdGlvbnM8L2NvZGU+IG1vZHVsZXMuPC9wPgoKCTxw Pk90aGVyd2lzZSA8YSBocmVmPSJodHRwOi8vd3d3LmVsZWN0cmljcHJpc20uY29tL2Flcm9u L3NsaWRlc2hvdy9qcy9tb290b29scy5qcyI+ZG93bmxvYWQgYSBwcmVwYXJlZCBjb3B5IG9m IG1vb3Rvb2xzLmpzPC9hPiBhbmQgYWRkIGEgbGluayBpbiB0aGUgaGVhZCBvZiB5b3VyIDxz cGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBkb2N1bWVudDo8L3A+Cgo8cHJlPgoJJiM2 MDtzY3JpcHQgc3JjPSYjMzQ7JiM2MDt0eHA6c2l0ZV91cmwgLyYjNjI7anMvbW9vdG9vbHMu anMmIzM0OyB0eXBlPSYjMzQ7dGV4dC9qYXZhc2NyaXB0JiMzNDsmIzYyOyYjNjA7L3Njcmlw dCYjNjI7CjwvcHJlPgoKCTxwPk5leHQgPGEgaHJlZj0iaHR0cDovL3d3dy5lbGVjdHJpY3By aXNtLmNvbS9hZXJvbi9zbGlkZXNob3cvanMvc2xpZGVzaG93LmpzIj5kb3dubG9hZCBhIGNv cHkgb2Ygc2xpZGVzaG93LmpzPC9hPiBpZiB5b3UgaGF2ZSBub3QgZG9uZSBzbyBhbHJlYWR5 IGFuZCBhZGQgYSBsaW5rIGZvbGxvd2luZyBNb290b29sczo8L3A+Cgo8cHJlPgoJJiM2MDtz Y3JpcHQgc3JjPSYjMzQ7JiM2MDt0eHA6c2l0ZV91cmwgLyYjNjI7anMvbW9vdG9vbHMuanMm IzM0OyB0eXBlPSYjMzQ7dGV4dC9qYXZhc2NyaXB0JiMzNDsmIzYyOyYjNjA7L3NjcmlwdCYj NjI7CgkmIzYwO3NjcmlwdCBzcmM9JiMzNDsmIzYwO3R4cDpzaXRlX3VybCAvJiM2Mjtqcy9z bGlkZXNob3cuanMmIzM0OyB0eXBlPSYjMzQ7dGV4dC9qYXZhc2NyaXB0JiMzNDsmIzYyOyYj NjA7L3NjcmlwdCYjNjI7CjwvcHJlPgoKCTxwPk5vdGU6IHRoZSBvcmRlciBpbiB3aGljaCB0 aGUgZmlsZXMgYXJlIGxpbmtlZDogZmlyc3QgPGNvZGU+bW9vdG9vbHMuanM8L2NvZGU+IDxl bT50aGVuPC9lbT4gPGNvZGU+c2xpZGVzaG93LmpzPC9jb2RlPi4gVGhpcyBpcyBpbXBvcnRh bnQuPC9wPgoKCTxoMj5Vc2FnZTwvaDI+CgoJPHA+VXNlIDxjb2RlPiYjNjA7dHhwOmFyb19z bGlkZXNob3cgLyYjNjI7PC9jb2RlPiBpbiBhbiBhcnRpY2xlIGZvcm0gdG8gZ2VuZXJhdGUg YW4gYW5pbWF0ZWQgcHJlc2VudGF0aW9uIG9mIGltYWdlcy4gV2l0aG91dCBhbnkgb3B0aW9u cyBpdCB3aWxsIGRpc3BsYXkgZXZlcnkgaW1hZ2UgaW4geW91ciBlbnRpcmUgY29sbGVjdGlv bi4gVXNlIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVycyB0byBmaWx0ZXIgdGhlIGltYWdlcyBh bmQgdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgd2lsbCBhcHBlYXI6PC9wPgoKCTxwPjxzdHJv bmc+aW1hZ2VpZDwvc3Ryb25nPiwgPHN0cm9uZz5jYXRlZ29yeTwvc3Ryb25nPiwgPHN0cm9u Zz5jYXRsYWJlbDwvc3Ryb25nPiwgPHN0cm9uZz5saW1pdDwvc3Ryb25nPiBhbmQgPHN0cm9u Zz5vcmRlcmJ5PC9zdHJvbmc+PC9wPgoKCTxwPkFnYWluLCBwbGVhc2Ugc2VlIDxhIGhyZWY9 Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9pZD0yMDcxNCI+ c21kX3NsaW1ib3g8L2E+IGZvciB0aGUgbGF0ZXN0IHVzYWdlIGRldGFpbHMgb2YgdGhlIGFi b3ZlLiBUaGUgZm9sbG93aW5nIHBhcmFtZXRlcnMgYXJlIHNwZWNpZmljIHRvIHNsaWRlc2hv dzo8L3A+CgoJPHA+PHN0cm9uZz5zaG93PC9zdHJvbmc+PC9wPgoKCTxwPklmIHlvdSB3b3Vs ZCBsaWtlIHlvdXIgc2xpZGVzaG93IHRvIGluY2x1ZGUgY2FwdGlvbnMgc2V0IDxjb2RlPnNo b3c9JiMzNDtjYXB0aW9uJiMzNDs8L2NvZGU+IG9yIDxjb2RlPnNob3c9JiMzNDthbHQmIzM0 OzwvY29kZT4uIFRoZSBjYXB0aW9ucyBhcmUgcmVuZGVyZWQgaW4gYSA8Y29kZT4mIzYwO3Am IzYyOzwvY29kZT4gdGFnIGluc2lkZSBvZiB0aGUgc2xpZGVzaG93IGVsZW1lbnQuIGRlZmF1 bHQgaXMgPGVtPm5vbmU8L2VtPi48L3A+CgoJPHA+PHN0cm9uZz53cmFwdGFnPC9zdHJvbmc+ PC9wPgoKCTxwPlRoZSBzbGlkZXNob3cgaXMgd3JhcHBlZCBpbnNpZGUgb2YgYW4gPHNwYW4g Y2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IGJsb2NrIGVsZW1lbnQuIEJ5IGRlZmF1bHQgdGhp cyBlbGVtZW50IGlzIGEgPGVtPmRpdjwvZW0+LCBidXQgaWYgZm9yIHNvbWUgcmVhc29uIHlv dSB3b3VsZCBsaWtlIHRvIG1ha2UgaXQgc29tZXRoaW5nIGVsc2UgeW91IGNhbiBzZXQgaXQg aGVyZS48L3A+CgoJPHA+PHN0cm9uZz53cmFwY2xhc3M8L3N0cm9uZz48L3A+CgoJPHA+VGhl IDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG9mIHRoZSB3cmFwcGVyIGVs ZW1lbnQuIERlZmF1bHQgaXMgPGVtPnNsaWRlc2hvdzwvZW0+LjwvcD4KCgk8cD5UaGUgZm9s bG93aW5nIG9wdGlvbnMgcmVmZXIgc3BlY2lmaWNhbGx5IHRvIHRoZSBTbGlkZXNob3cgamF2 YXNjcmlwdCBjbGFzcy4gTW9yZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgPGEgaHJlZj0i aHR0cDovL3d3dy5lbGVjdHJpY3ByaXNtLmNvbS9hZXJvbi9zbGlkZXNob3ciPmhlcmU8L2E+ LjwvcD4KCgk8cD48c3Ryb25nPmR1cmF0aW9uPC9zdHJvbmc+PC9wPgoKCTxwPlRoaXMgaXMg YnJhY2tldGVkIGFycmF5IG9mIDIgdmFsdWVzLCBpbiBtaWxsaXNlY29uZHMgKDEwMDAgPSAx IHNlY29uZCkuIFRoZSBmaXJzdCB2YWx1ZSBpcyB0aGUgZHVyYXRpb24gb2YgdGhlIHRyYW5z aXRpb24gZWZmZWN0LiBUaGUgc2Vjb25kIHZhbHVlIGlzIHRoZSBkdXJhdGlvbiBvZiB0aGUg dGltZSBiZXR3ZWVuIHNsaWRlIGNoYW5nZXMuIEZvciBleGFtcGxlLCA8Y29kZT5kdXJhdGlv bj0mIzM0O1sxMDAwLCA0MDAwXSYjMzQ7PC9jb2RlPiB3b3VsZCBoYXZlIDQgc2Vjb25kcyBi ZXR3ZWVuIHRyYW5zaXRpb25zIGxhc3RpbmcgMSBzZWNvbmQgZWFjaC4gRGVmYXVsdCBpcyA8 ZW0+WzIwMDAsIDQwMDBdPC9lbT4uPC9wPgoKCTxwPjxzdHJvbmc+cHJldmNsYXNzPC9zdHJv bmc+LCA8c3Ryb25nPm5leHRjbGFzczwvc3Ryb25nPiwgPHN0cm9uZz5hY3RpdmVjbGFzczwv c3Ryb25nPjwvcD4KCgk8cD5UaGVzZSAzIHBhcmFtZXRlcnMgY29ycmVzcG9uZCB0byA8c3Bh biBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzc2VzIHVzZWQgZm9yIG5hdmlnYXRpb24g ZWxlbWVudHMuIDxjb2RlPnByZXZjbGFzczwvY29kZT4gYW5kIDxjb2RlPm5leHRjbGFzczwv Y29kZT4gYXJlIHVzZWQgYnkgPGNvZGU+YXJyb3dzPC9jb2RlPiBhbmQgPGNvZGU+YXJyb3dz KzwvY29kZT4gdHlwZSBuYXZpZ2F0aW9uLiA8Y29kZT5hY3RpdmVjbGFzczwvY29kZT4gaXMg dXNlZCBieSA8Y29kZT5hcnJvd3MrPC9jb2RlPiBhbmQgPGNvZGU+dGh1bWJuYWlsczwvY29k ZT4gdHlwZSBuYXZpZ2F0aW9uLiBUaGUgY2xhc3NlcyBhcmUgYXBwbGllZCB0byBhbmNob3Jz IChsaW5rcykgaW5zaWRlIG9mIHRoZSBuYXZpZ2F0aW9uIGVsZW1lbnQgKGFuIHVub3JkZXJl ZCBsaXN0KS4gU2VlIGJlbG93IGZvciBtb3JlIGRldGFpbHMgb24gc3R5bGluZyB5b3VyIHNs aWRlc2hvdy4gRGVmYXVsdHMgYXJlIDxlbT5wcmV2PC9lbT4sIDxlbT5uZXh0PC9lbT4sIGFu ZCA8ZW0+YWN0aXZlPC9lbT4uPC9wPgoKCTxwPjxzdHJvbmc+aGVpZ2h0PC9zdHJvbmc+LCA8 c3Ryb25nPndpZHRoPC9zdHJvbmc+PC9wPgoKCTxwPkhlaWdodCBhbmQgd2lkdGggb2YgdGhl IHNsaWRlc2hvdyBpbiBwaXhlbHMuIEZvciBleGFtcGxlIDxjb2RlPmhlaWdodD0mIzM0OzMw MCYjMzQ7IHdpZHRoPSYjMzQ7NDAwJiMzNDs8L2NvZGU+LiBJdCBpcyByZWNvbW1lbmRlZCB0 byBjaG9vc2UgYSBudW1iZXIgbGVzcyB0aGFuIHRoZSBoZWlnaHQgYW5kL29yIHdpZHRoIG9m IHRoZSBzbWFsbGVzdCBpbWFnZSBpbiB0aGUgc2xpZGVzaG93LiBJZiB1bnNldCBoZWlnaHQg YW5kIHdpZHRoIGRlZmF1bHQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgaGVpZ2h0IGFuZCB3aWR0 aCBvZiB0aGUgZmlyc3QgaW1hZ2UgaW4gdGhlIHNsaWRlc2hvdy48L3A+CgoJPHA+PHN0cm9u Zz5uYXZpZ2F0aW9uPC9zdHJvbmc+PC9wPgoKCTxwPk9wdGlvbmFsIG5hdmlnYXRpb24gY29u dHJvbHMuIE1heSBiZSBvbmUgb2YgMyBkaWZmZXJlbnQgbW9kZXM6IDxjb2RlPmFycm93czwv Y29kZT4sIDxjb2RlPmFycm93cys8L2NvZGU+IGFuZCA8Y29kZT50aHVtYm5haWxzPC9jb2Rl Pi4gQWxsIHRocmVlIGdlbmVyYXRlIGFuIHVub3JkZXJlZCBsaXN0IDxjb2RlPiYjNjA7dWwm IzYyOzwvY29kZT4gaW5zaWRlIG9mIHRoZSBzbGlkZXNob3cgZWxlbWVudC4gU2VlIGJlbG93 IGZvciBtb3JlIGRldGFpbHMgb24gc3R5bGluZyB5b3VyIHNsaWRlc2hvdy4gQWRkaXRpb25h bGx5IHlvdSBjYW4gY2FsbCBhbnkgb2YgdGhlIG5hdmlnYXRpb24gbW9kZXMgd2l0aCB0aGUg PGNvZGU+ZmFzdDwvY29kZT4ga2V5d29yZCB0byBza2lwIHRyYW5zaXRpb25zIHdoZW4gaW50 ZXJhY3Rpbmcgd2l0aCB0aGUgc2xpZGVzaG93LiBGb3IgZXhhbXBsZSwgPGNvZGU+bmF2aWdh dGlvbjogJiMzOTt0aHVtYm5haWxzIGZhc3QmIzM5OzwvY29kZT4uIERlZmF1bHQgaXMgPGVt PnVuc2V0PC9lbT4uPC9wPgoKCTxwPjxzdHJvbmc+cGFuPC9zdHJvbmc+LCA8c3Ryb25nPnpv b208L3N0cm9uZz48L3A+CgoJPHA+SWYgdXNpbmcgPGNvZGU+cGFuPC9jb2RlPiwgPGNvZGU+ em9vbTwvY29kZT4gb3IgPGNvZGU+Y29tYm88L2NvZGU+IHR5cGUgc2xpZGVzaG93cywgeW91 IGNhbiBmdXJ0aGVyIGNvbnRyb2wgYW5pbWF0aW9uIGJ5IHNwZWNpZnlpbmcgdGhlIGFtb3Vu dCBvZiBwYW5uaW5nIG9yIHpvb21pbmcuIEVpdGhlciBhY2NlcHRzIGEgbnVtYmVyIGJldHdl ZW4gPGNvZGU+MDwvY29kZT4gKG5vIHBhbiAvIHpvb20pIG9yIDxjb2RlPjEwMDwvY29kZT4g KG1heGltdW0gcGFuIC8gem9vbSkgb3IgdGhlIGtleXdvcmQgPGNvZGU+cmFuZDwvY29kZT4g d2hpY2ggd2lsbCBkZXRlcm1pbmUgcmFuZG9tIHBhbm5pbmcgLyB6b29taW5nIGZvciBlYWNo IHNsaWRlLiBGb3IgZXhhbXBsZSwgPGNvZGU+cGFuPSYjMzQ7MjUmIzM0OyB6b29tPSYjMzQ7 cmFuZCYjMzQ7PC9jb2RlPiB3aGljaCB3aWxsIGZlYXR1cmUgYSBzbGlkZXNob3cgd2l0aCBt aW5pbWFsIHBhbm5pbmcgYW5kIHJhbmRvbSB6b29taW5nLiBOb3RlOiB0aGF0IHRoZSBkZWdy ZWUgb2YgcGFubmluZyBpbiBwYXJ0aWN1bGFyIGlzIGZ1cnRoZXIgZGV0ZXJtaW5lZCBieSB0 aGUgcHJvcG9ydGlvbiBvZiB0aGUgaW1hZ2UgdG8gdGhlIGRpbWVuc2lvbnMgb2YgdGhlIHNs aWRlc2hvdzogYSBsYW5kc2NhcGUgKHdpZHRoID4gaGVpZ2h0KSBmb3JtYXQgaW1hZ2UgaW4g YSBsYW5kc2NhcGUgZm9ybWF0IHNsaWRlc2hvdyB3aWxsIGFsd2F5cyBmZWF0dXJlIGxlc3Mg cGFubmluZyB0aGFuIHRoZSBzYW1lIGltYWdlIGluIGEgcG9ydHJhaXQgKGhlaWdodCA+IHdp ZHRoKSBmb3JtYXQgc2xpZGVzaG93LiBEZWZhdWx0IGlzIDxlbT5tYXhpbXVtPC9lbT4gcGFu bmluZyAoMTAwKSBhbmQgPGVtPmF2ZXJhZ2U8L2VtPiB6b29taW5nICg1MCkuPC9wPgoKCTxw PjxzdHJvbmc+cmVzaXplPC9zdHJvbmc+PC9wPgoKCTxwPkluIE1pY3Jvc29mdCBXaW5kb3dz LCBpbWFnZXMgYXJlIGRpc3RvcnRlZCB3aGVuIHJlc2l6ZWQuIEFzIHN1Y2ggaXQgbWlnaHQg YmUgZGVzaXJhYmxlIHRvIGNhbGwgPGNvZGU+cmVzaXplPSYjMzQ7ZmFsc2UmIzM0OzwvY29k ZT4gdG8gZGlzYWJsZSBpbWFnZSByZXNpemluZy4gTm90ZTogaW1hZ2VzIHdpbGwgPGVtPmFs d2F5czwvZW0+IGJlIHJlc2l6ZWQgZm9yIDxjb2RlPnpvb208L2NvZGU+LCA8Y29kZT5wYW48 L2NvZGU+IGFuZCA8Y29kZT5jb21ibzwvY29kZT4gdHlwZSBzbGlkZXNob3dzLiBEZWZhdWx0 IGlzIDxlbT50cnVlPC9lbT4uPC9wPgoKCTxwPjxzdHJvbmc+dHJhbnNpdGlvbjwvc3Ryb25n PjwvcD4KCgk8cD5JZiB0aGUgdmVyc2lvbiBvZiBNb290b29scyB1c2VkIHdpdGggdGhlIHNs aWRlc2hvdyBpbmNsdWRlcyA8Y29kZT5GeC5UcmFuc2l0aW9uczwvY29kZT4gKHN1Y2ggYXMg dGhlIHZlcnNpb24gaW5jbHVkZWQgd2l0aCB0aGUgcGx1Z2luKSwgeW91IGNhbiB1c2UgYW55 IG9mIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LnJvYmVydHBlbm5lci5jb20vZWFzaW5nIj5S b2JlcnQgUGVubmVyPC9hPiBlYXNpbmcgZXF1YXRpb25zIHdpdGggPGNvZGU+cHVzaDwvY29k ZT4gb3IgPGNvZGU+d2lwZTwvY29kZT4gdHlwZSBzbGlkZXNob3dzLiBGb3IgYSBmdWxsIGxp c3Qgb2YgdGhlIGF2YWlsYWJsZSBlcXVhdGlvbnMgc2VlIHRoZSA8YSBocmVmPSJodHRwOi8v ZG9jcy5tb290b29scy5uZXQvZmlsZXMvRWZmZWN0cy9GeC1UcmFuc2l0aW9ucy1qcy5odG1s Ij5Nb290b29scyBkb2NzPC9hPi4gRGVmYXVsdCBpcyA8ZW0+RnguVHJhbnNpdGlvbnMuc2lu ZUluT3V0PC9lbT4uPC9wPgoKCTxwPjxzdHJvbmc+dHlwZTwvc3Ryb25nPjwvcD4KCgk8cD5D aG9vc2Ugb25lIG9mIDYgZGlmZmVyZW50IHR5cGVzIG9mIHNsaWRlc2hvd3M6IDxjb2RlPmZh ZGU8L2NvZGU+LCA8Y29kZT53aXBlPC9jb2RlPiwgPGNvZGU+cHVzaDwvY29kZT4sIDxjb2Rl PnBhbjwvY29kZT4sIDxjb2RlPnpvb208L2NvZGU+IGFuZCA8Y29kZT5jb21ibzwvY29kZT4g KGFsc28ga25vd24gYXMgdGhlIDxhIGhyZWY9Imh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dp a2kvS2VuX0J1cm5zX0VmZmVjdCI+S2VuIEJ1cm5zIEVmZmVjdDwvYT4pLiBEZWZhdWx0IGlz IDxlbT5mYWRlPC9lbT4uPC9wPgoKCTxwPl9UaGUgZm9sbG93aW5nIGFyZSBhZHZhbmNlZCBv cHRpb25zIHRvIGJlIHVzZWQgd2l0aCBzbGlkZXNob3cgcGFja3MuIFBhY2tzIGFyZSBwcmUt Y29uZmlndXJlZCB2ZXJzaW9ucyBvZiB0aGUgc2xpZGVzaG93IHdpdGggaW5jbHVkZWQgPHNw YW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4sIGltYWdlcyBhbmQgZW5oYW5jZWQgZnVuY3Rp b25hbGl0eS4gTW9yZSBpbmZvcm1hdGlvbiB3aWxsIGJlIGF2YWlsYWJsZSBoZXJlIDxhIGhy ZWY9Imh0dHA6Ly93d3cuZWxlY3RyaWNwcmlzbS5jb20vYWVyb24vc2xpZGVzaG93Ll8iPmhl cmU8L2E+PC9wPgoKCTxwPjxzdHJvbmc+c2xpZGVzaG93X3Zhcjwvc3Ryb25nPjwvcD4KCgk8 cD5UaGUgamF2YXNjcmlwdCB2YXJpYWJsZSB0aGF0IGVhY2ggaW5zdGFuY2Ugb2YgdGhlIGNs YXNzIGlzIHNldCB0by4gRm9yIGV4YW1wbGUgKGphdmFzY3JpcHQpLCA8Y29kZT5teVNob3cg PSBuZXcgU2xpZGVzaG93KCk7PC9jb2RlPi4gRGVmYXVsdCBpcyA8ZW0+bXlTaG93PC9lbT4u PC9wPgoKCTxwPjxzdHJvbmc+Y2FsbGJhY2s8L3N0cm9uZz48L3A+CgoJPHA+RXh0cmEgamF2 YXNjcmlwdCB0byBhZGQgZW5oYW5jZWQgZnVuY3Rpb25hbGl0eSAvIGVmZmVjdHMgdG8gYSBz aWRlc2hvdyBpbnN0YW5jZS4gTm90ZTogamF2YXNjcmlwdCBzaG91bGQgYmUgcGFja2VkICh3 aXRob3V0IGxpbmVicmVha3MsIGV0Yy4uKSBhbmQgbmF0dXJhbGx5IGNhbm5vdCBpbmNsdWRl IHNpbmdsZSBvciBkb3VibGUtcXVvdGVzIHRoYXQgd2lsbCBjb25mbGljdCB3aXRoIHRoZSBU ZXh0cGF0dGVybiBwYXJhbWV0ZXIuIFVzZSB0aGUgdmFyaWFibGUgZGVmaW5lZCBhYm92ZSAo ZGVmYXVsdCA8ZW0+bXlTaG93PC9lbT4pIHRvIHJlZmVyZW5jZSB0aGUgc2xpZGVzaG93IGlu c3RhbmNlLiBGb3IgZXhhbXBsZSwgPGNvZGU+Y2FsbGJhY2s9JiMzNDtteVNob3cudWwuc2V0 U3R5bGUoJiMzOTtoZWlnaHQmIzM5OywgJiMzOTswcHgmIzM5Oyk7JiMzNDsgd2lsbCBkeW5h bWljYWxseSByZXBvc2l0aW9uIHRoZSBuYXZpZ2F0aW9uIGVsZW1lbnQgYXMgdGhlIHBhZ2Ug bG9hZHMuIFRoaXMgcGFyYW1ldGVyIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgd2l0aCBwcmUt Y29uZmlndXJlZCBzbGlkZXNob3cgcGFja3MsIGJ1dCBmZWVsIGZyZWUgdG8gZXhwZXJpbWVu dCBhbmQgaGF2ZSBmdW4uIEVsZW1lbnRzIHRoYXQgbWF5IGJlIG1hbmlwdWxhdGVkIGluY2x1 ZGUgPC9jb2RlPm15U2hvdy51bEAgKHNsaWRlc2hvdyBuYXZpZ2F0aW9uKSwgPGNvZGU+bXlT aG93LnA8L2NvZGU+IChzbGlkZXNob3cgY2FwdGlvbnMpLCA8Y29kZT5teVNob3cuZGl2PC9j b2RlPiAoc2xpZGVzaG93IGltYWdlIHdyYXBwZXIpIGFuZCBvZiBjb3Vyc2UgYWxsIHRoZWly IGNvcnJlc3BvbmRpbmcgY2hpbGQgbm9kZXMuPC9wPgoKCTxoMj5TdHlsaW5nIFlvdXIgU2xp ZGVzaG93PC9oMj4KCgk8cD5JZiB5b3UgdmlldyB0aGUgc291cmNlIG9mIHlvdXIgPHNwYW4g Y2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IHBhZ2Ugd2l0aCB0aGUgc2xpZGVzaG93IHBsdWdp biB5b3Ugd2lsbCBzZWUgdGhhdCBzbGlkZXNob3cgZ2VuZXJhdGVzIHRoZSBmaXJzdCBpbWFn ZSBvZiB0aGUgc2xpZGVzaG93IGFuZCB0aGUgd3JhcHBlciBlbGVtZW50IGRlZmluZWQgYWJv dmUuIEl0IHNob3VsZCBsb29rIHNvbWV0aGluZyBsaWtlIHRoaXM6PC9wPgoKPHByZT4KCSYj NjA7ZGl2IGNsYXNzPSYjMzQ7c2xpZGVzaG93JiMzNDsgaWQ9JiMzNDtzbGlkZXNob3cwJiMz NDsmIzYyOwoJCSYjNjA7aW1nIHNyYz0mIzM0O2h0dHA6Ly95b3VyLnRleHRwYXR0ZXJuLnNp dGUvaW1hZ2VzLzEuanBnJiMzNDsgYWx0PSYjMzQ7c29tZSBkZXNjcmlwdGlvbiYjMzQ7IHdp ZHRoPSYjMzQ7NDAwJiMzNDsgaGVpZ2h0PSYjMzQ7MzAwJiMzNDsgLyYjNjI7CgkmIzYwOy9k aXYmIzYyOwo8L3ByZT4KCgk8cD5Ib3dldmVyLCBhc3N1bWluZyBqYXZhc2NyaXB0IGlzIGVu YWJsZWQsIHNsaWRlc2hvdyB3aWxsIG1hbmlwdWxhdGUgdGhlIDxzcGFuIGNsYXNzPSJjYXBz Ij5IVE1MPC9zcGFuPiBkaWZmZXJlbnRseSB0aGFuIGl0IGFwcGVhcnMuIEhvdyBpdCBtYW5p cHVsYXRlcyB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IGRlcGVuZHMgb24g dGhlIHBhcmFtZXRlcnMgaXQgd2FzIGNhbGxlZCB3aXRoLiBJZiBjYWxsZWQgd2l0aCBuYXZp Z2F0aW9uIGl0IHdpbGwgYWRkIGEgPGNvZGU+JiM2MDt1bCYjNjI7PC9jb2RlPiBlbGVtZW50 cy4gSWYgY2FsbGVkIHdpdGggY2FwdGlvbnMgaXQgd2lsbCBhZGQgYSA8Y29kZT4mIzYwO3Am IzYyOzwvY29kZT4uIFRoZSBlbmQgcmVzdWx0IG1heSBhY3R1YWxseSBiZSB0aGlzLCBhbHRo b3VnaCBpdCB3aWxsIG5vdCBhcHBlYXIgdG8gaGF2ZSBjaGFuZ2VkIHdoZW4gdmlld2luZyB0 aGUgc291cmNlOjwvcD4KCjxwcmU+CgkmIzYwO2RpdiBjbGFzcz0mIzM0O3NsaWRlc2hvdyYj MzQ7IGlkPSYjMzQ7c2xpZGVzaG93MCYjMzQ7JiM2MjsKCQkmIzYwO2RpdiYjNjI7ICYjNjA7 IS0tIHRoaXMgaXMgdGhlIHNsaWRlc2hvdyBlbGVtZW50IC0tJiM2MjsKCQkJJiM2MDtpbWcg c3JjPSYjMzQ7aHR0cDovL3lvdXIudGV4dHBhdHRlcm4uc2l0ZS9pbWFnZXMvMS5qcGcmIzM0 OyBhbHQ9JiMzNDtzb21lIGRlc2NyaXB0aW9uJiMzNDsgd2lkdGg9JiMzNDs0MDAmIzM0OyBo ZWlnaHQ9JiMzNDszMDAmIzM0OyAvJiM2MjsKCQkmIzYwOy9kaXYmIzYyOwoJCSYjNjA7dWwm IzYyOyAmIzYwOyEtLSB0aGlzIGlzIHRoZSBuYXZpZ2F0aW9uIGVsZW1lbnQgLS0mIzYyOwoJ CQkmIzYwO2xpJiM2MjsmIzYwO2EgY2xhc3M9JiMzNDtwcmV2JiMzNDsmIzYyOyYjNjA7L2Em IzYyOyYjNjA7L2xpJiM2MjsKCQkJJiM2MDtsaSYjNjI7JiM2MDthJiM2MjsmIzYwOy9hJiM2 MjsmIzYwOy9saSYjNjI7CgkJCSYjNjA7bGkmIzYyOyYjNjA7YSBjbGFzcz0mIzM0O2FjdGl2 ZSYjMzQ7JiM2MjsmIzYwOy9hJiM2MjsmIzYwOy9saSYjNjI7CgkJCSYjNjA7bGkmIzYyOyYj NjA7YSYjNjI7JiM2MDsvYSYjNjI7JiM2MDsvbGkmIzYyOwoJCQkmIzYwO2xpJiM2MjsmIzYw O2EgY2xhc3M9JiMzNDtuZXh0JiMzNDsmIzYyOyYjNjA7L2EmIzYyOyYjNjA7L2xpJiM2MjsK CQkmIzYwOy91bCYjNjI7CgkJJiM2MDtwJiM2MjsmIzYwOy9wJiM2MjsgJiM2MDshLS0gdGhp cyBpcyB0aGUgY2FwdGlvbnMgZWxlbWVudCAtLSYjNjI7CgkmIzYwOy9kaXYmIzYyOwo8L3By ZT4KCgk8cD5Bbnl3YXksIHRoaXMgc2hvdWxkIGdpdmUgeW91IHNvbWUgaWRlYSBvZiBob3cg dGhlIHNsaWRlc2hvdyBjYW4gYmUgc3R5bGVkLiBGdXJ0aGVyIGV4YW1wbGVzIGNhbiBiZSBm b3VuZCA8YSBocmVmPSJodHRwOi8vd3d3LmVsZWN0cmljcHJpc20uY29tL2Flcm9uL3NsaWRl c2hvdyI+aGVyZTwvYT4uPC9wPgoKCTxoMj5FeGFtcGxlczwvaDI+CgoJPHA+PGNvZGU+JiM2 MDt0eHA6YXJvX3NsaWRlc2hvdyBjYXRlZ29yeT0mIzM0O2xhbmRzY2FwZSYjMzQ7IGxpbWl0 PSYjMzQ7MTAmIzM0OyB0eXBlPSYjMzQ7Y29tYm8mIzM0OyBkdXJhdGlvbj0mIzM0O1syMDAw LCA4MDAwXSYjMzQ7IGhlaWdodD0mIzM0OzMwMCYjMzQ7IHdpZHRoPSYjMzQ7NjAwJiMzNDsg LyYjNjI7PC9jb2RlPjwvcD4KCgk8cD5BIHBhbm9yYW1pYyBzbGlkZXNob3cgKHR3aWNlIGFz IHdpZGUgYXMgaGlnaCksIHdpdGggaW1hZ2VzIGluIHRoZSA8ZW0+bGFuZHNjYXBlPC9lbT4g Y2F0ZWdvcnkgc2xvd2x5IGFuaW1hdGluZyAob3ZlciA4IHNlY29uZHMpIHdpdGggYSBjb21i aW5hdGlvbiBvZiBwYW5uaW5nIGFuZCB6b29taW5nIG1vdmVtZW50IChLZW4gQnVybnMgRWZm ZWN0KS48L3A+CgoJPHA+PGNvZGU+JiM2MDt0eHA6YXJvX3NsaWRlc2hvdyBjYXRlZ29yeT0m IzM0O2RvZ3MsIGJpcmRzJiMzNDsgb3JkZXJieT0mIzM0O25hbWU6ZGVzYyYjMzQ7IHNob3c9 JiMzNDtjYXB0aW9uJiMzNDsgdHlwZT0mIzM0O3dpcGUmIzM0OyBkdXJhdGlvbj0mIzM0O1sx MDAwLCAzMDAwXSYjMzQ7IHRyYW5zaXRpb249JiMzNDtGeC5UcmFuc2l0aW9ucy5iYWNrSW5P dXQmIzM0OyAvJiM2Mjs8L2NvZGU+PC9wPgoKCTxwPkEgc2xpZGVzaG93IHdpdGggYWxsIHRo ZSBpbWFnZXMgaW4gdGhlIDxlbT5kb2dzPC9lbT4gYW5kIDxlbT5iaXJkczwvZW0+IGNhdGVn b3JpZXMsIHdpdGhvdXQgbGltaXQsIGluIGRlc2NlbmRpbmcgb3JkZXIgYnkgbmFtZS4gQXMg bm8gZGltZW5zaW9ucyB3aGVyZSBzcGVjaWZpZWQgdGhlIHNsaWRlc2hvdyB3aWxsIHRha2Ug dGhlIGRpbWVuc2lvbnMgb2YgdGhlIGZpcnN0IGltYWdlIGluIHRoZSBzZXJpZXMuIFRoZSBz bGlkZXNob3cgd2lsbCBmZWF0dXJlIGEgd2lwZSB0eXBlIG1vdmVtZW50IChvbmUgaW1hZ2Ug d2lwaW5nIG92ZXIgYW5vdGhlciBmcm9tIHJpZ2h0IHRvIGxlZnQpIHVzaW5nIFJvYmVydCBQ ZW5uZXImIzgyMTc7cyBiYWNrSW5PdXQgZWFzaW5nIGVxdWF0aW9uLiBNb3ZlbWVudCBpcyBy YXBpZCAoMSBzZWNvbmQgZm9yIHRoZSB3aXBlIGFuaW1hdGlvbiwgMyBzZWNvbmRzIGZvciBl YWNoIGltYWdlIHRvIGFwcGVhciBzdGF0aWNseSkuIENhcHRpb25zIGZvciBlYWNoIGltYWdl IHdpbGwgYXBwZWFyIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2xpZGVzaG93LjwvcD4KCgk8cD48 Y29kZT4mIzYwO3R4cDphcm9fc2xpZGVzaG93IGNhdGVnb3J5PSYjMzQ7Zml4ZWQsID9pZCYj MzQ7IGltYWdlaWQ9JiMzNDsyMywgMTksIDc1JiMzNDsgbGltaXQ9JiMzNDsyMCYjMzQ7IHR5 cGU9JiMzNDtmYWRlJiMzNDsgcmVzaXplPSYjMzQ7ZmFsc2UmIzM0OyB3aWR0aD0mIzM0OzQw MCYjMzQ7IGhlaWdodD0mIzM0OzMwMCYjMzQ7IG5hdmlnYXRpb249JiMzNDt0aHVtYm5haWxz IGZhc3QmIzM0OyAvJiM2Mjs8L2NvZGU+PC9wPgoKCTxwPkEgc2xpZGVzaG93IG9mIHVwIHRv IDIwIGltYWdlcyBmcm9tIHRoZSA8ZW0+Zml4ZWQ8L2VtPiBjYXRlZ29yeSwgaW5jbHVkaW5n IGltYWdlcyB3aXRoIElEJiM4MjE3O3MgPGVtPjIzPC9lbT4sIDxlbT4xOTwvZW0+IGFuZCA8 ZW0+NzU8L2VtPiwgYW5kIGEgY2F0ZWdvcnkgYmFzZWQgb24gdGhlIGFydGljbGUmIzgyMTc7 cyBJRCAoaWYgdGhlIHVzZXIgd2FzIGJyb3dzaW5nIGFydGljbGUgSUQgNjcsIGFsbCB0aGUg aW1hZ2VzIGZyb20gdGhlIGNhdGVnb3J5IDxlbT5hcnRpY2xlLTY3PC9lbT4pLiBBIGZhZGlu ZyBzbGlkZXNob3cgaW4gc3RhbmRhcmQgNDozIGZvcm1hdCAmIzgyMTE7IG5vdGUgdGhhdCBy ZXNpemluZyBoYXMgYWxzbyBiZWVuIHR1cm5lZCBvZmYsIGFzIHN1Y2ggYWxsIGltYWdlcyB3 b3VsZCBuZWVkIHRvIGJlIGdyZWF0ZXIgdGhhbiB0aGUgZGltZW5zaW9ucyBvZiB0aGUgc2xp ZGVzaG93IGluIG9yZGVyIGZvciB0aGVpciBlZGdlcyBub3QgdG8gYXBwZWFyLiBUaGUgc2xp ZGVzaG93IGlzIHVzaW5nIHRodW1ibmFpbHMgYmFzZWQgbmF2aWdhdGlvbiAmIzgyMTE7IHRo dW1ibmFpbHMgd2lsbCBhcHBlYXIgdXNpbmcgdGhlIGFjdHVhbCBpbWFnZSB0aHVtYm5haWxz IGluIFRleHRwYXR0ZXJuLiBIb3cgdGhlIHRodW1ibmFpbHMgYXBwZWFyIGFuZCB0aGVpciBk aW1lbnNpb25zIHdvdWxkIGJlIGRldGVybWluZWQgYnkgZXh0ZXJuYWwgPHNwYW4gY2xhc3M9 ImNhcHMiPkNTUzwvc3Bhbj4gKHRoZSB0aHVtYm5haWxzIGFyZSBhcHBsaWVkIGFzIGJhY2tn cm91bmQgaW1hZ2VzIHRvIGFuIHVub3JkZXJlZCBsaXN0KS48L3A+IjtzOjQ6ImNvZGUiO3M6 MTAzNjI6IgovLyB2Mi4wICAgSW5pdGlhbCBwdWJsaWMgcmVsZWFzZQovLyB2Mi4wLjEgICBG aXhlZCBjb25mbGljdCB3aXRoIHNtZF9zbGltYm94IGFuZCBtaXNsYWJlbGxpbmcgb2YgdGhl IHNob3cgcGFyYW1ldGVyCgpmdW5jdGlvbiBhcm9fc2xpZGVzaG93KCRhdHRzKSB7CglnbG9i YWwgJHByZXRleHQsICR0aGlzYXJ0aWNsZSwgJGltZ19kaXI7CglnbG9iYWwgJHNsaWRlc2hv d19jb3VudDsKCSRtYXhsaW1pdCA9IDk5OTk5OwoKCSRzbGlkZXNob3dfY291bnQgPSBpc3Nl dCgkc2xpZGVzaG93X2NvdW50KSA/ICRzbGlkZXNob3dfY291bnQrKyA6IDA7CgoJaWYgKGlz X2FycmF5KCRhdHRzKSkgZXh0cmFjdCgkYXR0cyk7CgoJLy8gUEhQIG9wdGlvbnMKCSRpbWFn ZWlkID0gaXNzZXQoJGltYWdlaWQpID8gZG9TbGFzaCgkaW1hZ2VpZCkgOiAnJzsKCSRjYXRl Z29yeSA9IGlzc2V0KCRjYXRlZ29yeSkgPyBkb1NsYXNoKCRjYXRlZ29yeSkgOiAoKCRpbWFn ZWlkPT0iIikgPyAkcHJldGV4dFsnYyddOiAnJyk7CgkkY2F0bGFiZWwgPSBpc3NldCgkY2F0 bGFiZWwpID8gJGNhdGxhYmVsIDogImFydGljbGUtIjsKCSRsaW1pdCA9IGlzc2V0KCRsaW1p dCkgPyAkbGltaXQgOiAwOwoJJG9yZGVyYnkgPSBpc3NldCgkb3JkZXJieSkgPyAkb3JkZXJi eSA6ICJjYXRlZ29yeSI7Cgkkc2hvdyA9IGlzc2V0KCRzaG93KSA/ICRzaG93IDogJyc7Cgkk d3JhcHRhZyA9IGlzc2V0KCR3cmFwdGFnKSA/ICR3cmFwdGFnIDogImRpdiI7Cgkkd3JhcGNs YXNzID0gaXNzZXQoJHdyYXBjbGFzcykgPyAnIGNsYXNzPSInLiR3cmFwY2xhc3MuJyInIDog JyBjbGFzcz0ic2xpZGVzaG93Iic7CgoJLy8gSlMgb3B0aW9ucwoJJGR1cmF0aW9uID0gaXNz ZXQoJGR1cmF0aW9uKSA/ICcsIGR1cmF0aW9uOiAnLiRkdXJhdGlvbiA6ICcnOwoJJGNsYXNz ZXNbXSA9IGlzc2V0KCRwcmV2Y2xhc3MpID8gJyInLiRwcmV2Y2xhc3MuJyInIDogJyJwcmV2 Iic7CgkkY2xhc3Nlc1tdID0gaXNzZXQoJG5leHRjbGFzcykgPyAnIicuJG5leHRjbGFzcy4n IicgOiAnIm5leHQiJzsKCSRjbGFzc2VzW10gPSBpc3NldCgkYWN0aXZlY2xhc3MpID8gJyIn LiRhY3RpdmVjbGFzcy4nIicgOiAnImFjdGl2ZSInOwoJJGhlaWdodCA9IGlzc2V0KCRoZWln aHQpID8gJywgaGVpZ2h0OiAnLiRoZWlnaHQgOiAnJzsKCSRuYXZpZ2F0aW9uID0gaXNzZXQo JG5hdmlnYXRpb24pID8gJywgbmF2aWdhdGlvbjogIicuJG5hdmlnYXRpb24uJyInIDogJyc7 CgkkcGFuID0gaXNzZXQoJHBhbikgPyAnLCBwYW46ICInLiRwYW4uJyInIDogJyc7CgkkcmVz aXplID0gaXNzZXQoJHJlc2l6ZSkgPyAnLCByZXNpemU6ICcuJHJlc2l6ZSA6ICcnOwoJJHRy YW5zaXRpb24gPSBpc3NldCgkdHJhbnNpdGlvbikgPyAnLCB0cmFuc2l0aW9uOiAnLiR0cmFu c2l0aW9uIDogJyc7CgkkdHlwZSA9IGlzc2V0KCR0eXBlKSA/ICcsIHR5cGU6ICInLiR0eXBl LiciJyA6ICcnOwoJJHdpZHRoID0gaXNzZXQoJHdpZHRoKSA/ICcsIHdpZHRoOiAnLiR3aWR0 aCA6ICcnOwoJJHpvb20gPSBpc3NldCgkem9vbSkgPyAnLCB6b29tOiAiJy4kem9vbS4nIicg OiAnJzsKCgkvLyBhZHZhbmNlZCBvcHRpb25zCgkkc2xpZGVzaG93X3ZhciA9IGlzc2V0KCRz bGlkZXNob3dfdmFyKSA/ICRzbGlkZXNob3dfdmFyIDogJ215U2hvdyc7CgkkY2FsbGJhY2sg PSBpc3NldCgkY2FsbGJhY2spID8gJGNhbGxiYWNrIDogJyc7CgoJJGZpeGVkT3JkZXIgPSBm YWxzZTsKCgkvLyBUaGUgZGF0YWJhc2UgZmllbGRzIHJlcXVpcmVkCgkkZmllbGRzID0gJ2lk LG5hbWUsdyxoLGNhcHRpb24sYWx0LGNhdGVnb3J5LGV4dCc7Cgkkc3ViQ2F0TGlzdCA9IGFy cmF5KCk7CgkkZnVsbENhdExpc3QgPSBhcnJheSgpOwoJJG5vdENhdExpc3QgPSBhcnJheSgp OwoKCS8vIENvbnZlcnQgdGhlIGNhdGVnb3J5IChwb3NzaWJseSBhIGNvbW1hLXNlcCBsaXN0 KSBpbnRvIGFuIFNRTC1zdHlsZSAnaW4nIGxpc3QuCgkvLyBQcm9jZXNzIHRoZSBzcGVjaWFs ICgnP3NvbWV0aGluZycpIGNhc2VzIHRvby4KCSRjYXRMaXN0ID0gcHJlZ19zcGxpdCgnL1ss XHNdKy8nLCRjYXRlZ29yeSwtMSxQUkVHX1NQTElUX05PX0VNUFRZKTsKCglmb3IgKCRpZHgg PSAwOyAkaWR4IDwgY291bnQoJGNhdExpc3QpOyAkaWR4KyspIHsKCQkkY2F0bmFtZSA9ICRj YXRMaXN0WyRpZHhdOwoJCWlmICgkY2F0bmFtZSA9PT0gIj9jIikgewoJCQkvLyBVc2UgdGhl IGdsb2JhbCBhcnRpY2xlIGNhdGVnb3J5LCBpZiBpdCBleGlzdHMKCQkJaWYgKCRwcmV0ZXh0 WydjJ10gIT0gIiIpIHsKCQkJCWlmICghaW5fYXJyYXkoJHByZXRleHRbJ2MnXSwgJGZ1bGxD YXRMaXN0KSkgewoJCQkJCSRmdWxsQ2F0TGlzdFtdID0gJHByZXRleHRbJ2MnXTsKCQkJCX0K CQkJfQoJCX0gZWxzZSBpZiAoJGNhdG5hbWUgPT09ICI/aWQiKSB7CgkJCS8vIFVzZSB0aGUg Z2xvYmFsIGFydGljbGUgSUQKCQkJaWYgKCFpbl9hcnJheSgkY2F0bGFiZWwgLiAkcHJldGV4 dFsnaWQnXSwgJGZ1bGxDYXRMaXN0KSkgewoJCQkJJGZ1bGxDYXRMaXN0W10gPSAkY2F0bGFi ZWwgLiAkcHJldGV4dFsnaWQnXTsKCQkJfQoJCX0gZWxzZSBpZiAoJGNhdG5hbWVbMF0gPT09 ICI/IikgewoJCQkvLyBVc2UgdGhlIGdpdmVuIGZpZWxkIG5hbWU7IHdoaWNoIG1heSBiZSBh IGNvbW1hLXNlcGFyYXRlZCBzdWJsaXN0LgoJCQkvLyBTcGxpdCBvZmYgdGhlIGZpZWxkIG5h bWUgZnJvbSB0aGUgcXVlc3Rpb24gbWFyawoJCQkkZmllbGRuYW1lID0gc3Vic3RyKCRjYXRu YW1lLDEpOwoJCQlpZiAoaXNzZXQoJHRoaXNhcnRpY2xlWyRmaWVsZG5hbWVdKSkgewoJCQkJ JGZpZWxkQ29udGVudHMgPSAkdGhpc2FydGljbGVbJGZpZWxkbmFtZV07CgkJCX0gZWxzZSB7 CgkJCQkkZmllbGRDb250ZW50cyA9ICcnOwoJCQl9CgoJCQlpZiAoIWVtcHR5KCRmaWVsZENv bnRlbnRzKSkgewoJCQkJJHN1YkNhdExpc3QgPSBwcmVnX3NwbGl0KCcvWyxcc10rLycsICRm aWVsZENvbnRlbnRzLCAtMSwgUFJFR19TUExJVF9OT19FTVBUWSk7CgkJCQlmb3JlYWNoICgk c3ViQ2F0TGlzdCBhcyAkc3ViY2F0bmFtZSkgewoJCQkJCWlmICghaW5fYXJyYXkoJHN1YmNh dG5hbWUsICRmdWxsQ2F0TGlzdCkpIHsKCQkJCQkJJGZ1bGxDYXRMaXN0W10gPSAkc3ViY2F0 bmFtZTsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9IGVsc2UgaWYgKCRjYXRuYW1lWzBdID09PSAi ISIpIHsKCQkJLy8gTWF5IGVpdGhlciBiZSBhIGZpZWxkIG5hbWUgKGFuZCBtYXliZSBhbm90 aGVyIENTTCkgb3IgYSBmaXhlZCB0ZXJtLgoJCQkvLyBTcGxpdCBvZmYgdGhlIG5hbWUgZnJv bSB0aGUgZXhjbGFtYXRpb24gbWFyawoJCQkkZmllbGRuYW1lID0gc3Vic3RyKCRjYXRuYW1l LDEpOwoJCQlpZiAoaXNzZXQoJHRoaXNhcnRpY2xlWyRmaWVsZG5hbWVdKSkgewoJCQkJJGZp ZWxkQ29udGVudHMgPSAkdGhpc2FydGljbGVbJGZpZWxkbmFtZV07CgkJCX0gZWxzZSB7CgkJ CQkkZmllbGRDb250ZW50cyA9ICRmaWVsZG5hbWU7CgkJCX0KCgkJCWlmICghZW1wdHkoJGZp ZWxkQ29udGVudHMpKSB7CgkJCQkkc3ViQ2F0TGlzdCA9IHByZWdfc3BsaXQoJy9bLFxzXSsv JywgJGZpZWxkQ29udGVudHMsIC0xLCBQUkVHX1NQTElUX05PX0VNUFRZKTsKCQkJCWZvcmVh Y2ggKCRzdWJDYXRMaXN0IGFzICRzdWJjYXRuYW1lKSB7CgkJCQkJaWYgKCFpbl9hcnJheSgk c3ViY2F0bmFtZSwgJG5vdENhdExpc3QpKSB7CgkJCQkJCSRub3RDYXRMaXN0W10gPSAkc3Vi Y2F0bmFtZTsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9IGVsc2UgewoJCQlpZiAoIWluX2FycmF5 KCRjYXRuYW1lLCAkZnVsbENhdExpc3QpKSB7CgkJCQkkZnVsbENhdExpc3RbXSA9ICRjYXRu YW1lOwoJCQl9CgkJfQoJfQoKCSRzdWJJRExpc3QgPSBhcnJheSgpOwoJJGZ1bGxJRExpc3Qg PSBhcnJheSgpOwoJJG5vdElETGlzdCA9IGFycmF5KCk7CgoJLy8gQ29udmVydCB0aGUgaW1h Z2VpZCAocG9zc2libHkgYSBjb21tYS1zZXAgbGlzdCkgaW50byBhbiBTUUwtc3R5bGUgJ2lu JyBsaXN0LgoJLy8gUHJvY2VzcyB0aGUgc3BlY2lhbCAoJz9zb21ldGhpbmcnKSBjYXNlcyB0 b28uCgkkaWRMaXN0ID0gcHJlZ19zcGxpdCgnL1ssXHNdKy8nLCRpbWFnZWlkLC0xLFBSRUdf U1BMSVRfTk9fRU1QVFkpOwoJZm9yICgkaWR4ID0gMDsgJGlkeCA8IGNvdW50KCRpZExpc3Qp OyAkaWR4KyspIHsKCQkkaWRudW0gPSAkaWRMaXN0WyRpZHhdOwoJCWlmICgkaWRudW0gPT09 ICI/aWQiKSB7CgkJCS8vIFVzZSB0aGUgZ2xvYmFsIGFydGljbGUgSUQKCQkJaWYgKCFpbl9h cnJheSgkcHJldGV4dFsnaWQnXSwgJGZ1bGxJRExpc3QpKSB7CgkJCQkkZnVsbElETGlzdFtd ID0gJHByZXRleHRbJ2lkJ107CgkJCX0KCQl9IGVsc2UgaWYgKCRpZG51bVswXSA9PT0gIj8i KSB7CgkJCS8vIFVzZSB0aGUgZ2l2ZW4gZmllbGQgbmFtZTsgd2hpY2ggbWF5IGJlIGEgY29t bWEtc2VwYXJhdGVkIHN1Ymxpc3QuCgkJCS8vIFNwbGl0IG9mZiB0aGUgZmllbGQgbmFtZSBm cm9tIHRoZSBxdWVzdGlvbiBtYXJrCgkJCSRmaWVsZG5hbWUgPSBzdWJzdHIoJGlkbnVtLDEp OwoJCQlpZiAoaXNzZXQoJHRoaXNhcnRpY2xlWyRmaWVsZG5hbWVdKSkgewoJCQkJJGZpZWxk Q29udGVudHMgPSAkdGhpc2FydGljbGVbJGZpZWxkbmFtZV07CgkJCX0gZWxzZSB7CgkJCQkk ZmllbGRDb250ZW50cyA9ICcnOwoJCQl9CgoJCQlpZiAoIWVtcHR5KCRmaWVsZENvbnRlbnRz KSkgewoJCQkJJHN1YklETGlzdCA9IHByZWdfc3BsaXQoJy9bLFxzXSsvJywgJGZpZWxkQ29u dGVudHMsIC0xLCBQUkVHX1NQTElUX05PX0VNUFRZKTsKCQkJCWZvcmVhY2ggKCRzdWJJRExp c3QgYXMgJHN1YmlkbnVtKSB7CgkJCQkJaWYgKCFpbl9hcnJheSgkc3ViaWRudW0sICRmdWxs SURMaXN0KSkgewoJCQkJCQkkZnVsbElETGlzdFtdID0gJHN1YmlkbnVtOwoJCQkJCX0KCQkJ CX0KCQkJfQoJCX0gZWxzZSBpZiAoJGlkbnVtWzBdID09PSAiISIpIHsKCQkJLy8gTWF5IGVp dGhlciBiZSBhIGZpZWxkIG5hbWUgKGFuZCBtYXliZSBhbm90aGVyIENTTCkgb3IgYSBmaXhl ZCB0ZXJtLgoJCQkvLyBTcGxpdCBvZmYgdGhlIG5hbWUgZnJvbSB0aGUgZXhjbGFtYXRpb24g bWFyawoJCQkkZmllbGRuYW1lID0gc3Vic3RyKCRpZG51bSwxKTsKCQkJaWYgKGlzc2V0KCR0 aGlzYXJ0aWNsZVskZmllbGRuYW1lXSkpIHsKCQkJCSRmaWVsZENvbnRlbnRzID0gJHRoaXNh cnRpY2xlWyRmaWVsZG5hbWVdOwoJCQl9IGVsc2UgewoJCQkJJGZpZWxkQ29udGVudHMgPSAk ZmllbGRuYW1lOwoJCQl9CgoJCQlpZiAoIWVtcHR5KCRmaWVsZENvbnRlbnRzKSkgewoJCQkJ JHN1YklETGlzdCA9IHByZWdfc3BsaXQoJy9bLFxzXSsvJywgJGZpZWxkQ29udGVudHMsIC0x LCBQUkVHX1NQTElUX05PX0VNUFRZKTsKCQkJCWZvcmVhY2ggKCRzdWJJRExpc3QgYXMgJHN1 YmlkbnVtKSB7CgkJCQkJaWYgKCFpbl9hcnJheSgkc3ViaWRudW0sICRub3RJRExpc3QpKSB7 CgkJCQkJCSRub3RJRExpc3RbXSA9ICRzdWJpZG51bTsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9 IGVsc2UgewoJCQlpZiAoIWluX2FycmF5KCRpZG51bSwgJGZ1bGxJRExpc3QpKSB7CgkJCQkk ZnVsbElETGlzdFtdID0gJGlkbnVtOwoJCQl9CgkJfQoJfQoKCS8vIE1ha2UgdXAgdGhlIFdI RVJFIHN0YXRlbWVudCBmcm9tIHRoZSBjb21iaW5lZCBsaXN0IG9mIGNhdGVnb3JpZXMuCgkv LyBUaGUgY2F0ZWdvcmllcy9pbWFnZSBJRHMgYXJlIE9SZWQgdG9nZXRoZXIgaW4gYnJhY2tl dHMgZmlyc3QKCS8vIGJlZm9yZSB0aGUgbmVnYXRpb24gb3B0aW9ucyBhcmUgdGFja2VkIG9u IGFzIEFORHMgYWZ0ZXJ3YXJkcwoJJHdoZXJlVG1wID0gJyc7CglpZiAoY291bnQoJGZ1bGxD YXRMaXN0KSA+IDApIHsKCQkkd2hlcmVUbXAgPSAnY2F0ZWdvcnkgaW4gKCc7CgkJZm9yICgk aWR4ID0gY291bnQoJGZ1bGxDYXRMaXN0KTsgJGlkeCA+PTA7ICRpZHgtLSkgewoJCQlpZiAo ZW1wdHkoJGZ1bGxDYXRMaXN0WyRpZHhdKSkgewoJCQkJdW5zZXQoJGZ1bGxDYXRMaXN0WyRp ZHhdKTsKCQkJfSBlbHNlIHsKCQkJCSRmdWxsQ2F0TGlzdFskaWR4XSA9ICInIiAuICRmdWxs Q2F0TGlzdFskaWR4XSAuICInIjsKCQkJfQoJCX0KCQkkd2hlcmVUbXAgLj0gaW1wbG9kZSgi LCIsJGZ1bGxDYXRMaXN0KTsKCQkkd2hlcmVUbXAgLj0gJyknOwoJfQoKCSR3aGVyZU9SID0g YXJyYXkoKTsKCglpZiAodHJpbSgkd2hlcmVUbXApICE9ICIiKSB7CgkJJHdoZXJlT1JbXSA9 ICR3aGVyZVRtcDsKCX0KCgkvLyBBZGQgdG8gdGhlIFdIRVJFIHN0YXRlbWVudCB0aGUgY29t YmluZWQgbGlzdCBvZiBpbWFnZSBJRHMKCSR3aGVyZVRtcCA9ICcnOwoJaWYgKGNvdW50KCRm dWxsSURMaXN0KSA+IDApIHsKCQkkd2hlcmVUbXAgPSAnaWQgaW4gKCc7CgkJZm9yICgkaWR4 ID0gY291bnQoJGZ1bGxJRExpc3QpOyAkaWR4ID49MDsgJGlkeC0tKSB7CgkJCWlmIChlbXB0 eSgkZnVsbElETGlzdFskaWR4XSkpIHsKCQkJCXVuc2V0KCRmdWxsSURMaXN0WyRpZHhdKTsK CQkJfSBlbHNlIHsKCQkJCSRmdWxsSURMaXN0WyRpZHhdID0gIiciIC4gJGZ1bGxJRExpc3Rb JGlkeF0gLiAiJyI7CgkJCX0KCQl9CgkJJHdoZXJlVG1wIC49IGltcGxvZGUoIiwiLCRmdWxs SURMaXN0KTsKCQkkd2hlcmVUbXAgLj0gJyknOwoJfQoKCWlmICh0cmltKCR3aGVyZVRtcCkg IT0gIiIpIHsKCQkkd2hlcmVPUltdID0gJHdoZXJlVG1wOwoJfQoKCSR3aGVyZSA9ICcoJyAu aW1wbG9kZSgiIE9SICIsJHdoZXJlT1IpLiAnKSc7CgoJaWYgKHRyaW0oJHdoZXJlKSA9PSAi KCkiKSB7CgkJJHdoZXJlID0gJzE9MSc7Cgl9CgoJLy8gQWRkIHRvIHRoZSBXSEVSRSBzdGF0 ZW1lbnQgdGhlIGNvbWJpbmVkIGxpc3Qgb2YgTk9UIGNhdGVnb3JpZXMKCWlmIChjb3VudCgk bm90Q2F0TGlzdCkgPiAwKSB7CgkJJHdoZXJlIC49ICcgYW5kIGNhdGVnb3J5IG5vdCBpbiAo JzsKCQlmb3IgKCRpZHggPSBjb3VudCgkbm90Q2F0TGlzdCk7ICRpZHggPj0wOyAkaWR4LS0p IHsKCQkJaWYgKGVtcHR5KCRub3RDYXRMaXN0WyRpZHhdKSkgewoJCQkJdW5zZXQoJG5vdENh dExpc3RbJGlkeF0pOwoJCQl9IGVsc2UgewoJCQkJJG5vdENhdExpc3RbJGlkeF0gPSAiJyIg LiAkbm90Q2F0TGlzdFskaWR4XSAuICInIjsKCQkJfQoJCX0KCQkkd2hlcmUgLj0gaW1wbG9k ZSgiLCIsJG5vdENhdExpc3QpOwoJCSR3aGVyZSAuPSAnKSc7Cgl9CgoJLy8gQWRkIHRvIHRo ZSBXSEVSRSBzdGF0ZW1lbnQgdGhlIGNvbWJpbmVkIGxpc3Qgb2YgTk9UIGltYWdlIElEcwoJ aWYgKGNvdW50KCRub3RJRExpc3QpID4gMCkgewoJCSR3aGVyZSAuPSAnIGFuZCBpZCBub3Qg aW4gKCc7CgkJZm9yICgkaWR4ID0gY291bnQoJG5vdElETGlzdCk7ICRpZHggPj0wOyAkaWR4 LS0pIHsKCQkJaWYgKGVtcHR5KCRub3RJRExpc3RbJGlkeF0pKSB7CgkJCQl1bnNldCgkbm90 SURMaXN0WyRpZHhdKTsKCQkJfSBlbHNlIHsKCQkJCSRub3RJRExpc3RbJGlkeF0gPSAiJyIg LiAkbm90SURMaXN0WyRpZHhdIC4gIiciOwoJCQl9CgkJfQoJCSR3aGVyZSAuPSBpbXBsb2Rl KCIsIiwkbm90SURMaXN0KTsKCQkkd2hlcmUgLj0gJyknOwoJfQoKCS8vIENvbnZlcnQgdGhl IG9yZGVyYnkgaW50byBhIHZhbGlkIE9SREVSIEJZIGNsYXVzZQoJJHdoZXJlT0IgPSBBcnJh eSgpOwoJJG9iTGlzdCA9IHByZWdfc3BsaXQoJy9bLFxzXSsvJywkb3JkZXJieSwtMSxQUkVH X1NQTElUX05PX0VNUFRZKTsKCWZvciAoJGlkeCA9IDA7ICRpZHggPCBjb3VudCgkb2JMaXN0 KTsgJGlkeCsrKSB7CgkJJG9iX2RpciA9IGV4cGxvZGUoJzonLCRvYkxpc3RbJGlkeF0pOwoJ CSRkaXJlY3Rpb24gPSAnJzsKCQlpZiAoY291bnQoJG9iX2RpcikgPiAxKSB7CgkJCWlmKCRv Yl9kaXJbMV0gPT0gImRlc2MiKSB7CgkJCQkkZGlyZWN0aW9uID0gJyBkZXNjJzsKCQkJfSBl bHNlIHsKCQkJCSRkaXJlY3Rpb24gPSAnIGFzYyc7CgkJCX0KCQl9CgkJc3dpdGNoICgkb2Jf ZGlyWzBdKSB7CgkJCWNhc2UgJ25hbWUnOgoJCQkJJHdoZXJlT0JbXSA9ICduYW1lJy4kZGly ZWN0aW9uOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ2lkJzoKCQkJCSR3aGVyZU9CW10gPSAnaWQn LiRkaXJlY3Rpb247CgkJCQlicmVhazsKCQkJY2FzZSAnYWx0JzoKCQkJCSR3aGVyZU9CW10g PSAnYWx0Jy4kZGlyZWN0aW9uOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ2NhcHRpb24nOgoJCQkJ JHdoZXJlT0JbXSA9ICdjYXB0aW9uJy4kZGlyZWN0aW9uOwoJCQkJYnJlYWs7CgkJCWNhc2Ug J2RhdGUnOgoJCQkJJHdoZXJlT0JbXSA9ICdkYXRlJy4kZGlyZWN0aW9uOwoJCQkJYnJlYWs7 CgkJCWNhc2UgJ3JhbmRvbSc6CgkJCQkkd2hlcmVPQltdID0gJ3JhbmQoKSc7CgkJCQlicmVh azsKCQkJY2FzZSAnZml4ZWQnOgoJCQkJLy8gJ2ZpeGVkJyBvbmx5IHdvcmtzIG9uIGltYWdl IGlkcwoJCQkJaWYgKCRpbWFnZWlkICE9ICIiKSB7CgkJCQkJJGZpeGVkT3JkZXIgPSB0cnVl OwoJCQkJfQoJCQkJYnJlYWs7CgkJCWNhc2UgJ2NhdGVnb3J5JzoKCQkJZGVmYXVsdDoKCQkJ CSR3aGVyZU9CW10gPSAnY2F0ZWdvcnknLiRkaXJlY3Rpb247CgkJCQlicmVhazsKCQl9Cgl9 CgoJaWYgKGNvdW50KCR3aGVyZU9CKSA+IDApIHsKCQkkd2hlcmUgLj0gJyBPUkRFUiBCWSAn IC4gaW1wbG9kZSgiLCIsJHdoZXJlT0IpOwoJfQoKCS8vIE5vIHBhZ2luZyByZXF1aXJlZAoJ JG51bVBhZ2VzID0gMTsKCSR0aHVtYnBhZ2UgPSAxOwoJJHJzID0gc2FmZV9yb3dzKCRmaWVs ZHMsICd0eHBfaW1hZ2UnLCAkd2hlcmUgLicgTElNSVQgMCwnLiAoKCRsaW1pdCA9PSAwKSA/ ICRtYXhsaW1pdCA6ICRsaW1pdCkpOwoKCS8vIElzIGZpeGVkLW9yZGVyIG91dHB1dCBkZXNp cmVkPyBJZiBzbywgcmUtb3JkZXIgdGhlICRycwoJaWYgKCRmaXhlZE9yZGVyKSB7CgkJJG9y ZGVyZWRSUyA9IEFycmF5KCk7CgkJJGlnbm9yZUxpc3QgPSBBcnJheSgpOwoJCSRyZW1haW5p bmdSUyA9IEFycmF5KCk7CgkJLy8gU3VjayBvdXQgdGhlIGZpeGVkIGl0ZW1zIGZpcnN0CgkJ Zm9yICgkaWR4ID0gMDsgJGlkeCA8IGNvdW50KCRmdWxsSURMaXN0KTsgJGlkeCsrKSB7CgkJ CWZvcmVhY2goJHJzIGFzICRyb3cpIHsKCQkJCWlmICgiJyIuJHJvd1snaWQnXS4iJyIgPT0g JGZ1bGxJRExpc3RbJGlkeF0pIHsKCQkJCQkkb3JkZXJlZFJTW10gPSAkcm93OwoJCQkJCSRp Z25vcmVMaXN0W10gPSAkcm93WydpZCddOwoJCQkJfQoJCQl9CgkJfQoJCS8vIFRhY2sgb24g dGhlIHJlbWFpbmluZyByb3dzCgkJZm9yZWFjaCgkcnMgYXMgJHJvdykgewoJCQlpZiAoIWlu X2FycmF5KCRyb3dbJ2lkJ10sICRpZ25vcmVMaXN0KSkgewoJCQkJJHJlbWFpbmluZ1JTW10g PSAkcm93OwoJCQl9CgkJfQoJCSRycyA9IGFycmF5X21lcmdlKCRvcmRlcmVkUlMsICRyZW1h aW5pbmdSUyk7Cgl9CgoJLy8gQ29uc3RydWN0IHRoZSBvdXRwdXQKCSRvdXRTdHIgPSAnJzsK CSRpbWFnZXMgPSBhcnJheSgpOwoJJGNhcHRpb25zID0gYXJyYXkoKTsKCWlmKCRycykgewoJ CWZvcmVhY2goJHJzIGFzICRyb3cpIHsKCQkJJGltYWdlc1tdID0gJyInLiRyb3dbJ2lkJ10u JHJvd1snZXh0J10uJyInOwoJCQlpZiAoJHNob3cgPT0gJ2FsdCcpICRjYXB0aW9uc1tdID0g JyInLiRyb3dbJ2FsdCddLiciJzsKCQkJZWxzZWlmICgkc2hvdyA9PSAnY2FwdGlvbicpICRj YXB0aW9uc1tdID0gJyInLiRyb3dbJ2NhcHRpb24nXS4nIic7CgkJfQoKCQlleHRyYWN0KCRy c1swXSk7CgoJCSRvdXRTdHIgLj0gdGFnKCc8aW1nIHNyYz0iJy5odS4kaW1nX2Rpci4nLycu JGlkLiRleHQuJyIgYWx0PSInLiRhbHQuJyIgd2lkdGg9IicuJHcuJyIgaGVpZ2h0PSInLiRo LiciIC8+JywgJHdyYXB0YWcsICR3cmFwY2xhc3MuJyBpZD0ic2xpZGVzaG93Jy4kc2xpZGVz aG93X2NvdW50LiciJykubi5uOwoJCSRvdXRTdHIgLj0gJzxzY3JpcHQgdHlwZT0idGV4dC9q YXZhc2NyaXB0Ij4nLm47CgkJJG91dFN0ciAuPSB0LiRzbGlkZXNob3dfdmFyLiRzbGlkZXNo b3dfY291bnQuJyA9IG5ldyBTbGlkZXNob3coInNsaWRlc2hvdycuJHNsaWRlc2hvd19jb3Vu dC4nIiwgeyBodTogIicuaHUuJGltZ19kaXIuJy8iLCBpbWFnZXM6IFsnLmpvaW4oJywnLCRp bWFnZXMpLiddLCBjYXB0aW9uczogWycuam9pbignLCcsJGNhcHRpb25zKS4nXSwgY2xhc3Nl czogWycuam9pbignLCcsJGNsYXNzZXMpLiddJy4kZHVyYXRpb24uJGhlaWdodC4kbmF2aWdh dGlvbi4kcGFuLiRyZXNpemUuJHRyYW5zaXRpb24uJHR5cGUuJHdpZHRoLiR6b29tLicgfSk7 Jy5uOwoJCWlmICgkY2FsbGJhY2spICRvdXRTdHIgLj0gdC5zdHJfcmVwbGFjZSgkc2xpZGVz aG93X3ZhciwgJHNsaWRlc2hvd192YXIuJHNsaWRlc2hvd19jb3VudCwgJGNhbGxiYWNrKS5u OwoJCSRvdXRTdHIgLj0gJzwvc2NyaXB0Picubi5uOwoJfQoKCXJldHVybiAkb3V0U3RyOwp9 CiI7czozOiJtZDUiO3M6MzI6IjliODAzOWE0NzVlYjE0Nzg3ZGI4ZGY3OTYyY2Q1MDVhIjt9