# zem_contact_reborn v4.0.3.20 # Form mailer for Textpattern # # License: GNU GPLv2 or later # # TXP Community # http://forum.textpattern.com/viewtopic.php?id=23728 # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YTo5OntzOjQ6Im5hbWUiO3M6MTg6InplbV9jb250YWN0X3JlYm9ybiI7czo3OiJ2ZXJzaW9u IjtzOjg6IjQuMC4zLjIwIjtzOjY6ImF1dGhvciI7czoxMzoiVFhQIENvbW11bml0eSI7czox MDoiYXV0aG9yX3VyaSI7czo1MToiaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3 dG9waWMucGhwP2lkPTIzNzI4IjtzOjExOiJkZXNjcmlwdGlvbiI7czoyNzoiRm9ybSBtYWls ZXIgZm9yIFRleHRwYXR0ZXJuIjtzOjQ6InR5cGUiO2k6MDtzOjQ6ImhlbHAiO3M6Mzc0MjY6 IiA8c3R5bGU+CiAgIGxpIGNvZGUge2ZvbnQtd2VpZ2h0OiBib2xkO30KICAgcHJlIHtwYWRk aW5nOiAwLjVlbSAxZW07IGJhY2tncm91bmQ6ICNlZWU7IGJvcmRlcjogMXB4IGRhc2hlZCAj Y2NjO30KICAgaDEsIGgyLCBoMywgaDMgY29kZSB7Zm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7 IGZvbnQtd2VpZ2h0OiBib2xkO30KICAgaDEsIGgyLCBoMyB7bWFyZ2luLWxlZnQ6IC0xZW07 fQogICBoMiwgaDMge21hcmdpbi10b3A6IDJlbTt9CiAgIGgxIHtmb250LXNpemU6IDNlbTt9 CiAgIGgyIHtmb250LXNpemU6IDJlbTt9CiAgIGgzIHtmb250LXNpemU6IDEuNWVtO30KICAg bGkgYSBjb2RlIHtmb250LXdlaWdodDogbm9ybWFsO30KICAgLnJlcXVpcmVkLCAud2Fybmlu ZyB7Y29sb3I6cmVkO30KIDwvc3R5bGU+CgoJPGgxIGlkPSJ0b3AiPlplbSBDb250YWN0IFJl Ym9ybjwvaDE+CgoJPHA+UGxlYXNlIHJlcG9ydHMgYnVncyBhbmQgcHJvYmxlbXMgd2l0aCB0 aGlzIHBsdWdpbiBpbiA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3Zp ZXd0b3BpYy5waHA/aWQ9MjM3MjgiPnRoaXMgZm9ydW0gdGhyZWFkPC9hPi48L3A+CgoJPHAg Y2xhc3M9InJlcXVpcmVkIj5UaGlzIHBsdWdpbiByZXF1aXJlcyBhIHNlcGFyYXRlIGxhbmd1 YWdlIHBsdWdpbiBjYWxsZWQgPGNvZGU+emVtX2NvbnRhY3RfbGFuZzwvY29kZT4gdG8gYmUg aW5zdGFsbGVkIGFuZCBhY3RpdmF0ZWQgdG8gd29yayBwcm9wZXJseS48L3A+CgoJPGgyIGlk PSJjb250ZW50cyI+Q29udGVudHM8L2gyPgoKCTx1bD4KCQk8bGk+PGEgaHJlZj0iI2ZlYXR1 cmVzIj5GZWF0dXJlczwvYT4KCQk8bGk+PGEgaHJlZj0iI3N0YXJ0Ij5HZXR0aW5nIHN0YXJ0 ZWQ8L2E+Cgk8dWw+CgkJPGxpPjxhIGhyZWY9IiNjb250YWN0Zm9ybSI+Q29udGFjdCBmb3Jt PC9hPjwvbGk+Cgk8L3VsPjwvbGk+Cgk8dWw+CgkJPGxpPjxhIGhyZWY9IiNzZW5kYXJ0aWNs ZSI+U2VuZCBhcnRpY2xlPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiN0YWdzIj5UYWdzPC9h PgoJCTxsaT48YSBocmVmPSIjemMiPiA8Y29kZT4mIzYwO3R4cDp6ZW1fY29udGFjdCAvJiM2 Mjs8L2NvZGU+IDwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjemNfdGV4dCI+IDxjb2RlPiYj NjA7dHhwOnplbV9jb250YWN0X3RleHQgLyYjNjI7PC9jb2RlPiA8L2E+PC9saT4KCQk8bGk+ PGEgaHJlZj0iI3pjX2VtYWlsIj4gPGNvZGU+JiM2MDt0eHA6emVtX2NvbnRhY3RfZW1haWwg LyYjNjI7PC9jb2RlPiA8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3pjX3RleHRhcmVhIj4g PGNvZGU+JiM2MDt0eHA6emVtX2NvbnRhY3RfdGV4dGFyZWEgLyYjNjI7PC9jb2RlPiA8L2E+ PC9saT4KCQk8bGk+PGEgaHJlZj0iI3pjX3N1Ym1pdCI+IDxjb2RlPiYjNjA7dHhwOnplbV9j b250YWN0X3N1Ym1pdCAvJiM2Mjs8L2NvZGU+IDwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIj emNfc2VsZWN0Ij4gPGNvZGU+JiM2MDt0eHA6emVtX2NvbnRhY3Rfc2VsZWN0IC8mIzYyOzwv Y29kZT4gPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiN6Y19jaGVja2JveCI+IDxjb2RlPiYj NjA7dHhwOnplbV9jb250YWN0X2NoZWNrYm94IC8mIzYyOzwvY29kZT4gPC9hPjwvbGk+CgkJ PGxpPjxhIGhyZWY9IiN6Y19yYWRpbyI+IDxjb2RlPiYjNjA7dHhwOnplbV9jb250YWN0X3Jh ZGlvIC8mIzYyOzwvY29kZT4gPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiN6Y19zZWNyZXQi PiA8Y29kZT4mIzYwO3R4cDp6ZW1fY29udGFjdF9zZWNyZXQgLyYjNjI7PC9jb2RlPiA8L2E+ PC9saT4KCQk8bGk+PGEgaHJlZj0iI3pjX3NlcnZlcl9pbmZvIj4gPGNvZGU+JiM2MDt0eHA6 emVtX2NvbnRhY3Rfc2VydmVyaW5mbyAvJiM2Mjs8L2NvZGU+IDwvYT48L2xpPgoJPC91bD48 L2xpPgoJPHVsPgoJCTxsaT48YSBocmVmPSIjemNfc2VuZF9hcnRpY2xlIj4gPGNvZGU+JiM2 MDt0eHA6emVtX2NvbnRhY3Rfc2VuZF9hcnRpY2xlIC8mIzYyOzwvY29kZT4gPC9hPjwvbGk+ CgkJPGxpPjxhIGhyZWY9IiNhZHZhbmNlZCI+QWR2YW5jZWQgZXhhbXBsZXM8L2E+CgkJPGxp PjxhIGhyZWY9IiNzaG93X2Vycm9yIj5TZXBhcmF0ZSBpbnB1dCBhbmQgZXJyb3IgZm9ybXM8 L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3N1YmplY3RfZm9ybSI+VXNlciBzZWxlY3RhYmxl IHN1YmplY3QgZmllbGQ8L2E+PC9saT4KCTwvdWw+PC9saT4KCTx1bD4KCQk8bGk+PGEgaHJl Zj0iI3RvX2Zvcm0iPlVzZXIgc2VsZWN0YWJsZSByZWNpcGllbnQsIHdpdGhvdXQgc2hvd2lu ZyBlbWFpbCBhZGRyZXNzZXM8L2E+PC9saT4KCTwvdWw+PC9saT4KCQk8bGk+PGEgaHJlZj0i I3N0eWxpbmciPlN0eWxpbmc8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2hpc3RvcnkiPkhp c3Rvcnk8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2NyZWRpdHMiPkNyZWRpdHM8L2E+PC9s aT4KCTwvdWw+Cgk8dWw+CgkJPGxpPjxhIGhyZWY9IiNhcGkiPlBsdWdpbiA8c3BhbiBjbGFz cz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPkFQSTwvc3Bhbj48L3NwYW4+IGFuZCBjYWxs YmFjayBldmVudHM8L2E+PC9saT4KCTwvdWw+CgoJPGgyIGlkPSJmZWF0dXJlcyI+RmVhdHVy ZXM8L2gyPgoKCTx1bD4KCQk8bGk+QXJiaXRyYXJ5IHRleHQgZmllbGRzIGNhbiBiZSBzcGVj aWZpZWQsIHdpdGggbWluL21heC9yZXF1aXJlZCBzZXR0aW5ncyBmb3IgdmFsaWRhdGlvbi48 L2xpPgoJCTxsaT5FbWFpbCBhZGRyZXNzIHZhbGlkYXRpb24sIGluY2x1ZGluZyBhIGNoZWNr IGZvciBhIHZhbGlkIE1YIHJlY29yZCAoVW5peCBvbmx5KS48L2xpPgoJCTxsaT5TYWZlIGVz Y2FwaW5nIG9mIGlucHV0IGRhdGEuPC9saT4KCQk8bGk+VVRGLTggc2FmZS48L2xpPgoJCTxs aT5BY2Nlc3NpYmxlIGZvcm0gbGF5b3V0LCBpbmNsdWRpbmcgPGNvZGU+JiM2MDtsYWJlbCYj NjI7PC9jb2RlPiwgPGNvZGU+JiM2MDtsZWdlbmQmIzYyOzwvY29kZT4gYW5kIDxjb2RlPiYj NjA7ZmllbGRzZXQmIzYyOzwvY29kZT4gdGFncy48L2xpPgoJCTxsaT5WYXJpb3VzIGNsYXNz ZXMgYW5kIGlkcyB0byBhbGxvdyBlYXN5IHN0eWxpbmcgb2YgYWxsIHBhcnRzIG9mIHRoZSBm b3JtLjwvbGk+CgkJPGxpPkEgc2VwYXJhdGUgbGFuZ3VhZ2UgcGx1Zy1pbiB0byBlbmFibGUg ZWFzeSBsb2NhbGlzYXRpb24uPC9saT4KCTwvdWw+Cgk8dWw+CgkJPGxpPlNwYW0gcHJldmVu dGlvbiA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPkFQSTwvc3Bhbj48 L3NwYW4+ICh1c2VkIGJ5IFRyYW5xdWlsbG8mIzgyMTc7cyA8Y29kZT5wYXBfY29udGFjdF9j bGVhbmVyPC9jb2RlPiBwbHVnaW4pLjwvbGk+Cgk8L3VsPgoKCTxwPjxhIGhyZWY9IiN0b3Ai PkJhY2sgdG8gdG9wPC9hPjwvcD4KCgk8aDIgaWQ9InN0YXJ0Ij5HZXR0aW5nIHN0YXJ0ZWQ8 L2gyPgoKCTxoMyBpZD0iY29udGFjdGZvcm0iPkNvbnRhY3QgZm9ybTwvaDM+CgoJPHA+VGhl IHNpbXBsZXN0IGZvcm0gaXMgc2hvd24gYmVsb3csIHdoaWNoIHByb2R1Y2VzIGEgZGVmYXVs dCBmb3JtIHdpdGggTmFtZSwgRW1haWwgYW5kIE1lc3NhZ2UgZmllbGRzLiBFbWFpbCB3aWxs IGJlIGRlbGl2ZXJlZCB0byByZWNpcGllbnRAZXhhbXBsZS5jb20sIHdpdGggdGhlIHVzZXIm IzgyMTc7cyBzdXBwbGllZCBlbWFpbCBhcyB0aGUgJiM4MjIwO0Zyb206JiM4MjIxOyBhZGRy ZXNzLjwvcD4KCjxwcmU+PGNvZGU+JiM2MDt0eHA6emVtX2NvbnRhY3QgdG89JiMzNDtyZWNp cGllbnRAZXhhbXBsZS5jb20mIzM0OyAvJiM2MjsKPC9jb2RlPjwvcHJlPgoKCTxwPlRvIHNw ZWNpZnkgZmllbGRzIGV4cGxpY2l0bHksIHVzZSBzb21ldGhpbmcgbGlrZSB0aGlzOjwvcD4K CjxwcmU+PGNvZGU+JiM2MDt0eHA6emVtX2NvbnRhY3QgdG89JiMzNDtyZWNpcGllbnRAZXhh bXBsZS5jb20mIzM0OyYjNjI7CiAgJiM2MDt0eHA6emVtX2NvbnRhY3RfZW1haWwgLyYjNjI7 CiAgJiM2MDt0eHA6emVtX2NvbnRhY3RfdGV4dCBsYWJlbD0mIzM0O1Bob25lJiMzNDsgbWlu PTcgbWF4PTE1LyYjNjI7CiAgJiM2MDt0eHA6emVtX2NvbnRhY3RfdGV4dGFyZWEgbGFiZWw9 JiMzNDtZb3VyIHF1ZXN0aW9uJiMzNDsgLyYjNjI7CiAgJiM2MDt0eHA6emVtX2NvbnRhY3Rf c3VibWl0IGxhYmVsPSYjMzQ7U2VuZCYjMzQ7IC8mIzYyOwomIzYwOy90eHA6emVtX2NvbnRh Y3QmIzYyOwo8L2NvZGU+PC9wcmU+CgoJPHA+QWx0ZXJuYXRpdmVseSwgcGxhY2UgdGhlIGZp ZWxkIHNwZWNpZmljYXRpb25zIGluIGEgVGV4dHBhdHRlcm4gZm9ybSwgYW5kIGNhbGwgaXQg bGlrZSB0aGlzOjwvcD4KCjxwcmU+PGNvZGU+JiM2MDt0eHA6emVtX2NvbnRhY3QgdG89JiMz NDtyZWNpcGllbnRAZXhhbXBsZS5jb20mIzM0OyBmb3JtPSYjMzQ7bXljb250YWN0Zm9ybSYj MzQ7IC8mIzYyOwo8L2NvZGU+PC9wcmU+CgoJPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0 b3A8L2E+PC9wPgoKCTxoMyBpZD0ic2VuZGFydGljbGUiPlNlbmQgYXJ0aWNsZTwvaDM+CgoJ PHA+V2l0aGluIHRoZSBjb250ZXh0IG9mIGFuIGluZGl2aWR1YWwgYXJ0aWNsZSwgdGhpcyBw bHVnaW4gY2FuIGJlIHVzZWQgdG8gc2VuZCB0aGUgYXJ0aWNsZSAob3IgZXhjZXJwdCwgaWYg aXQgZXhpc3RzKSB0byBhbiBlbWFpbCBhZGRyZXNzIHNwZWNpZmllZCBieSB0aGUgdmlzaXRv ci4gVGhpcyByZXF1aXJlcyBhdCBsZWFzdCB0d28gdGFnczoKCTx1bD4KCQk8bGk+PGNvZGU+ emVtX2NvbnRhY3Q8L2NvZGU+LCB0byBjcmVhdGUgZm9ybSB0aGF0IGlzIGluaXRpYWxseSBo aWRkZW4gYnkgc2V0dGluZyB0aGUgPGNvZGU+c2VuZF9hcnRpY2xlPC9jb2RlPiBhdHRyaWJ1 dGUuPC9saT4KCTwvdWw+Cgk8dWw+CgkJPGxpPjxjb2RlPnplbV9jb250YWN0X3NlbmRfYXJ0 aWNsZTwvY29kZT4sIHRvIGNyZWF0ZSBhICYjODIxNjtzZW5kIGFydGljbGUmIzgyMTc7IGxp bmsgd2hpY2ggcmV2ZWFscyB0aGUgYWZvcmVtZW50aW9uZWQgZm9ybSB3aGVuIGNsaWNrZWQu PC9saT4KCTwvdWw+PC9wPgoKPHByZT48Y29kZT4mIzYwO3R4cDp6ZW1fY29udGFjdCBzZW5k X2FydGljbGU9JiMzNDsxJiMzNDsgLyYjNjI7CiYjNjA7dHhwOnplbV9jb250YWN0X3NlbmRf YXJ0aWNsZSAvJiM2MjsKPC9jb2RlPjwvcHJlPgoKCTxwPkJ5IGRlZmF1bHQgdGhlIGZvcm0g Y29udGFpbnMgZmllbGRzIGZvciB5b3VyIG5hbWUgYW5kIGVtYWlsIGFkZHJlc3MsIHRoZSBy ZWNpcGllbnQmIzgyMTc7cyBlbWFpbCBhZGRyZXNzIGFuZCBhIHBlcnNvbmFsIG1lc3NhZ2Us IGJ1dCBzaW1pbGFyIHRvIGNvbnRhY3QgZm9ybXMgeW91IGNhbiBjcmVhdGUgeW91ciBvd24g Zm9ybSBsYXlvdXQuIFNvbWUgdGhpbmdzIHlvdSBuZWVkIHRvIGtub3c6Cgk8dWw+CgkJPGxp PlNldCB0aGUgPGNvZGU+c2VuZF9hcnRpY2xlPC9jb2RlPiBhdHRyaWJ1dGUgdG8gPGNvZGU+ MTwvY29kZT4gaW4gdGhlIDxjb2RlPnplbV9jb250YWN0PC9jb2RlPiB0YWcuPC9saT4KCTwv dWw+Cgk8dWw+CgkJPGxpPlVzZSBhIDxjb2RlPnplbV9jb250YWN0X2VtYWlsPC9jb2RlPiB0 YWcgd2l0aCB0aGUgPGNvZGU+c2VuZF9hcnRpY2xlPC9jb2RlPiBhdHRyaWJ1dGUgc2V0IHRv IDxjb2RlPjE8L2NvZGU+LiBUaGlzIGZpZWxkIHdpbGwgYmUgdXNlZCBhcyB0aGUgcmVjaXBp ZW50IGVtYWlsIGFkZHJlc3MuPC9saT4KCTwvdWw+PC9wPgoKPHByZT48Y29kZT4mIzYwO3R4 cDp6ZW1fY29udGFjdCB0bz0mIzM0O3lvdUBleGFtcGxlLmNvbSYjMzQ7IHNlbmRfYXJ0aWNs ZT0mIzM0OzEmIzM0OyYjNjI7CiAgJiM2MDt0eHA6emVtX2NvbnRhY3RfZW1haWwgbGFiZWw9 JiMzNDtSZWNpcGllbnQgRW1haWwmIzM0OyBzZW5kX2FydGljbGU9JiMzNDsxJiMzNDsgLyYj NjI7CiAgJiM2MDt0eHA6emVtX2NvbnRhY3RfZW1haWwgbGFiZWw9JiMzNDtZb3VyIEVtYWls JiMzNDsgLyYjNjI7CiAgJiM2MDt0eHA6emVtX2NvbnRhY3Rfc3VibWl0IGxhYmVsPSYjMzQ7 U2VuZCBBcnRpY2xlJiMzNDsgLyYjNjI7CiYjNjA7L3R4cDp6ZW1fY29udGFjdCYjNjI7Cjwv Y29kZT4KPGNvZGU+JiM2MDt0eHA6emVtX2NvbnRhY3Rfc2VuZF9hcnRpY2xlIC8mIzYyOwo8 L2NvZGU+PC9wcmU+CgoJPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoK CTxoMiBpZD0idGFncyI+VGFnczwvaDI+CgoJPHA+PGEgaHJlZj0iI3pjIj48Y29kZT4mIzYw O3R4cDp6ZW1fY29udGFjdCAvJiM2Mjs8L2NvZGU+PC9hPiBwcm9kdWNlcyBhIGZsZXhpYmxl LCBjdXN0b21pc2FibGUgZW1haWwgY29udGFjdCBmb3JtLiBJdCBpcyBpbnRlbmRlZCBmb3Ig dXNlIGFzIGFuIGVucXVpcnkgZm9ybSBmb3IgY29tbWVyY2lhbCBhbmQgcHJpdmF0ZSBzaXRl cywgYW5kIGluY2x1ZGVzIHNldmVyYWwgZmVhdHVyZXMgdG8gaGVscCByZWR1Y2UgY29tbW9u IHByb2JsZW1zIHdpdGggc3VjaCBmb3JtcyAoaW52YWxpZCBlbWFpbCBhZGRyZXNzZXMsIG1p c3NpbmcgaW5mb3JtYXRpb24pLjwvcD4KCgk8cD48YSBocmVmPSIjemNfc2VuZF9hcnRpY2xl Ij48Y29kZT4mIzYwO3R4cDp6ZW1fY29udGFjdF9zZW5kX2FydGljbGUgLyYjNjI7PC9jb2Rl PjwvYT4gY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGEgJiM4MjIwO3NlbmQgYXJ0aWNsZSYjODIy MTsgbGluayB3aXRoaW4gYW4gYXJ0aWNsZSBmb3JtLCBjb25uZWN0aW5nIGl0IHRvIHRoZSBj b250YWN0IGZvcm0uPC9wPgoKCTxwPkFsbCBvdGhlciB0YWdzIHByb3ZpZGVkIGJ5IHRoaXMg cGx1Z2luIGNhbiBvbmx5IGJlIHVzZWQgaW5zaWRlIGEgPGNvZGU+JiM2MDt0eHA6emVtX2Nv bnRhY3QmIzYyOzwvY29kZT4gJiM4MjMwOyA8Y29kZT4mIzYwOy90eHA6emVtX2NvbnRhY3Qm IzYyOzwvY29kZT4gY29udGFpbmVyIHRhZyBvciBpbiBhIFRleHRwYXR0ZXJuIGZvcm0gdXNl ZCBhcyB0aGUgPGNvZGU+Zm9ybTwvY29kZT4gYXR0cmlidXRlIGluIHRoZSA8Y29kZT4mIzYw O3R4cDp6ZW1fY29udGFjdCAvJiM2Mjs8L2NvZGU+IHRhZy48L3A+CgoJPHA+PGEgaHJlZj0i I3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCTxoMyBpZD0iemMiPjxjb2RlPiYjNjA7dHhw OnplbV9jb250YWN0IC8mIzYyOzwvY29kZT48L2gzPgoKCTxwPk1heSBiZSB1c2VkIGFzIGEg c2VsZi1jbG9zaW5nIG9yIGNvbnRhaW5lciB0YWcuIFBsYWNlIHRoaXMgd2hlcmUgeW91IHdh bnQgdGhlIGlucHV0IGZvcm0gdG8gZ28uIFN0YXR1cyBhbmQgZXJyb3IgbWVzc2FnZXMsIGlm IGFueSwgd2lsbCBiZSBkaXNwbGF5ZWQgYmVmb3JlIHRoZSBmb3JtLjwvcD4KCgk8aDQ+QXR0 cmlidXRlczwvaDQ+CgoJPHVsPgoJCTxsaT48Y29kZT50bz0mIzM0O2VtYWlsIGFkZHJlc3Mm IzM0OzwvY29kZT4gPHNwYW4gY2xhc3M9InJlcXVpcmVkIj5yZXF1aXJlZDwvc3Bhbj48YnIg Lz4KUmVjaXBpZW50IGVtYWlsIGFkZHJlc3MuPC9saT4KCTwvdWw+Cgk8dWw+CgkJPGxpPjxj b2RlPnRvX2Zvcm09JiMzNDtmb3JtIG5hbWUmIzM0OzwvY29kZT48YnIgLz4KVXNlIHNwZWNp ZmllZCBmb3JtIChvdmVycmlkZXMgPHN0cm9uZz50bzwvc3Ryb25nPiBhdHRyaWJ1dGUpLjwv bGk+Cgk8L3VsPgoKCTx1bD4KCQk8bGk+PGNvZGU+ZnJvbT0mIzM0O2VtYWlsIGFkZHJlc3Mm IzM0OzwvY29kZT48YnIgLz4KRW1haWwgYWRkcmVzcyB1c2VkIGluIHRoZSAmIzgyMjA7RnJv bTomIzgyMjE7IGZpZWxkIHdoZW4gc2VuZGluZyBlbWFpbC4gRGVmYXVsdHMgdG8gdGhlIHNl bmRlciYjODIxNztzIGVtYWlsIGFkZHJlc3MuIElmIHNwZWNpZmllZCwgdGhlIHNlbmRlciYj ODIxNztzIGVtYWlsIGFkZHJlc3Mgd2lsbCBiZSBwbGFjZWQgaW4gdGhlICYjODIyMDtSZXBs eS1UbzomIzgyMjE7IGZpZWxkIGluc3RlYWQuPC9saT4KCTwvdWw+Cgk8dWw+CgkJPGxpPjxj b2RlPmZyb21fZm9ybT0mIzM0O2Zvcm0gbmFtZSYjMzQ7PC9jb2RlPjxiciAvPgpVc2Ugc3Bl Y2lmaWVkIGZvcm0gKG92ZXJyaWRlcyA8c3Ryb25nPmZyb208L3N0cm9uZz4gYXR0cmlidXRl KS48L2xpPgoJPC91bD4KCgk8dWw+CgkJPGxpPjxjb2RlPnN1YmplY3Q9JiMzNDtzdWJqZWN0 IHRleHQmIzM0OzwvY29kZT48YnIgLz4KU3ViamVjdCB1c2VkIHdoZW4gc2VuZGluZyBhbiBl bWFpbC4gRGVmYXVsdCBpcyB0aGUgc2l0ZSBuYW1lLjwvbGk+Cgk8L3VsPgoJPHVsPgoJCTxs aT48Y29kZT5zdWJqZWN0X2Zvcm09JiMzNDtmb3JtIG5hbWUmIzM0OzwvY29kZT48YnIgLz4K VXNlIHNwZWNpZmllZCBmb3JtIChvdmVycmlkZXMgPHN0cm9uZz5zdWJqZWN0PC9zdHJvbmc+ IGF0dHJpYnV0ZSkuPC9saT4KCTwvdWw+CgoJPHVsPgoJCTxsaT48Y29kZT50aGFua3M9JiMz NDt0ZXh0JiMzNDs8L2NvZGU+PGJyIC8+Ck1lc3NhZ2Ugc2hvd24gYWZ0ZXIgc3VjY2Vzc2Z1 bGx5IHN1Ym1pdHRpbmcgYSBtZXNzYWdlLiBEZWZhdWx0IGlzIDxzdHJvbmc+VGhhbmsgeW91 LCB5b3VyIG1lc3NhZ2UgaGFzIGJlZW4gc2VudDwvc3Ryb25nPi48L2xpPgoJCTxsaT48Y29k ZT50aGFua3NfZm9ybT0mIzM0O2Zvcm0gbmFtZSYjMzQ7PC9jb2RlPjxiciAvPgpVc2Ugc3Bl Y2lmaWVkIGZvcm0gKG92ZXJyaWRlcyA8c3Ryb25nPnRoYW5rczwvc3Ryb25nPiBhdHRyaWJ1 dGUpLjwvbGk+Cgk8L3VsPgoJPHVsPgoJCTxsaT48Y29kZT5yZWRpcmVjdD0mIzM0O1VSTCYj MzQ7PC9jb2RlPjxiciAvPgpSZWRpcmVjdCB0byBzcGVjaWZpZWQgPHNwYW4gY2xhc3M9ImNh cHMiPjxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+PC9zcGFuPiAob3ZlcnJpZGVzIDxz dHJvbmc+dGhhbmtzPC9zdHJvbmc+IGFuZCA8c3Ryb25nPnRoYW5rc19mb3JtPC9zdHJvbmc+ IGF0dHJpYnV0ZXMpLiA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPlVS TDwvc3Bhbj48L3NwYW4+IG11c3QgYmUgcmVsYXRpdmUgdG8gdGhlIFRleHRwYXR0ZXJuIFNp dGUgPHNwYW4gY2xhc3M9ImNhcHMiPjxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+PC9z cGFuPi4gRXhhbXBsZTogPGVtPnJlZGlyZWN0PSYjODIyMDttb25rZXkmIzgyMjE7PC9lbT4g d291bGQgcmVkaXJlY3QgdG8gaHR0cDovL2V4YW1wbGUuY29tL21vbmtleS48L2xpPgoJPC91 bD4KCgk8dWw+CgkJPGxpPjxjb2RlPmxhYmVsPSYjMzQ7dGV4dCYjMzQ7PC9jb2RlPjxiciAv PgpMYWJlbCBmb3IgdGhlIGNvbnRhY3QgZm9ybS4gSWYgc2V0IHRvIGFuIGVtcHR5IHN0cmlu ZywgZGlzcGxheSBvZiB0aGUgZmllbGRzZXQgYW5kIGxlZ2VuZCB0YWdzIHdpbGwgYmUgc3Vw cHJlc3NlZC4gRGVmYXVsdCBpcyA8c3Ryb25nPkNvbnRhY3Q8L3N0cm9uZz4uPC9saT4KCQk8 bGk+PGNvZGU+c2VuZF9hcnRpY2xlPSYjMzQ7Ym9vbGVhbiYjMzQ7PC9jb2RlPjxiciAvPgpX aGV0aGVyIHRvIHVzZSB0aGlzIGZvcm0gdG8gPGEgaHJlZj0iI2FydGljbGUiPnNlbmQgYW4g YXJ0aWNsZTwvYT4uIEF2YWlsYWJsZSB2YWx1ZXM6IDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVz KSwgPHN0cm9uZz4wPC9zdHJvbmc+IChubykuIERlZmF1bHQgaXMgPHN0cm9uZz4wPC9zdHJv bmc+IChubykuPC9saT4KCTwvdWw+Cgk8dWw+CgkJPGxpPjxjb2RlPmNvcHlzZW5kZXI9JiMz NDtib29sZWFuJiMzNDs8L2NvZGU+PGJyIC8+CldoZXRoZXIgdG8gc2VuZCBhIGNvcHkgb2Yg dGhlIGVtYWlsIHRvIHRoZSBzZW5kZXImIzgyMTc7cyBhZGRyZXNzLiBBdmFpbGFibGUgdmFs dWVzOiA8c3Ryb25nPjE8L3N0cm9uZz4gKHllcyksIDxzdHJvbmc+MDwvc3Ryb25nPiAobm8p LiBEZWZhdWx0IGlzIDxzdHJvbmc+MDwvc3Ryb25nPiAobm8pLjwvbGk+Cgk8L3VsPgoKCTx1 bD4KCQk8bGk+PGNvZGU+Zm9ybT0mIzM0O2Zvcm0gbmFtZSYjMzQ7PC9jb2RlPjxiciAvPgpV c2Ugc3BlY2lmaWVkIGZvcm0sIGNvbnRhaW5pbmcgdGhlIGxheW91dCBvZiB0aGUgY29udGFj dCBmb3JtIGZpZWxkcy48L2xpPgoJCTxsaT48Y29kZT5zaG93X2lucHV0PSYjMzQ7Ym9vbGVh biYjMzQ7PC9jb2RlPjxiciAvPgogV2hldGhlciB0byBkaXNwbGF5IHRoZSBmb3JtIGlucHV0 IGZpZWxkcy4gQXZhaWxhYmxlIHZhbHVlczogPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLCA8 c3Ryb25nPjA8L3N0cm9uZz4gKG5vKS4gRGVmYXVsdCBpcyA8c3Ryb25nPjE8L3N0cm9uZz4g KHllcykuPC9saT4KCTwvdWw+Cgk8dWw+CgkJPGxpPjxjb2RlPnNob3dfZXJyb3I9JiMzNDti b29sZWFuJiMzNDs8L2NvZGU+PGJyIC8+CiBXaGV0aGVyIHRvIGRpc3BsYXkgZXJyb3IgYW5k IHN0YXR1cyBtZXNzYWdlcy4gQXZhaWxhYmxlIHZhbHVlczogPHN0cm9uZz4xPC9zdHJvbmc+ ICh5ZXMpLCA8c3Ryb25nPjA8L3N0cm9uZz4gKG5vKS4gRGVmYXVsdCBpcyA8c3Ryb25nPjE8 L3N0cm9uZz4gKHllcykuPC9saT4KCTwvdWw+CgoJPGg0PkV4YW1wbGVzPC9oND4KCgk8cD5T ZWUgPGEgaHJlZj0iI2NvbnRhY3Rmb3JtIj5HZXR0aW5nIHN0YXJ0ZWQ8L2E+IGFuZCA8YSBo cmVmPSIjYWR2YW5jZWQiPkFkdmFuY2VkIGV4YW1wbGVzPC9hPi48L3A+CgoJPHA+PGEgaHJl Zj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCTxoMyBpZD0iemNfdGV4dCI+PGNvZGU+ JiM2MDt0eHA6emVtX2NvbnRhY3RfdGV4dCAvJiM2Mjs8L2NvZGU+PC9oMz4KCgk8cD5DcmVh dGVzIGEgdGV4dCBpbnB1dCBmaWVsZCBhbmQgY29ycmVzcG9uZGluZyA8Y29kZT4mIzYwO2xh YmVsJiM2Mjs8L2NvZGU+IHRhZy4gVGhlIGlucHV0IHZhbHVlIHdpbGwgYmUgaW5jbHVkZWQg aW4gdGhlIGVtYWlsLCBwcmVjZWRlZCBieSB0aGUgbGFiZWwuPC9wPgoKCTxoND5BdHRyaWJ1 dGVzPC9oND4KCgk8dWw+CgkJPGxpPjxjb2RlPmxhYmVsPSYjMzQ7dGV4dCYjMzQ7PC9jb2Rl PjxiciAvPgpUZXh0IGxhYmVsIGRpc3BsYXllZCB0byB0aGUgdXNlci4gRGVmYXVsdCBpcyA8 c3Ryb25nPlRleHQ8L3N0cm9uZz4uPC9saT4KCQk8bGk+PGNvZGU+bmFtZT0mIzM0O3ZhbHVl JiMzNDs8L2NvZGU+PGJyIC8+CkZpZWxkIG5hbWUsIGFzIHVzZWQgaW4gdGhlIDxzcGFuIGNs YXNzPSJjYXBzIj48c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj48L3NwYW4+IGlucHV0 IHRhZy48L2xpPgoJCTxsaT48Y29kZT5icmVhaz0mIzM0O3RhZyYjMzQ7PC9jb2RlPjxiciAv PgpCcmVhayB0YWcgYmV0d2VlbiB0aGUgbGFiZWwgYW5kIGlucHV0IGZpZWxkLiBEZWZhdWx0 IGlzIDxjb2RlPiYjNjA7YnIgLyYjNjI7PC9jb2RlPi4gVXNlIDxjb2RlPmJyZWFrPSYjMzQ7 JiMzNDs8L2NvZGU+IHRvIHB1dCB0aGUgbGFiZWwgYW5kIGlucHV0IGZpZWxkIG9uIHRoZSBz YW1lIGxpbmUuPC9saT4KCQk8bGk+PGNvZGU+ZGVmYXVsdD0mIzM0O3ZhbHVlJiMzNDs8L2Nv ZGU+PGJyIC8+CkRlZmF1bHQgdmFsdWUgd2hlbiBubyBpbnB1dCBpcyBwcm92aWRlZC48L2xp PgoJCTxsaT48Y29kZT5taW49JiMzNDtpbnRlZ2VyJiMzNDs8L2NvZGU+PGJyIC8+Ck1pbmlt dW0gaW5wdXQgbGVuZ3RoIGluIGNoYXJhY3RlcnMuIERlZmF1bHQgaXMgPHN0cm9uZz4wPC9z dHJvbmc+LjwvbGk+CgkJPGxpPjxjb2RlPm1heD0mIzM0O2ludGVnZXImIzM0OzwvY29kZT48 YnIgLz4KTWF4aW11bSBpbnB1dCBsZW5ndGggaW4gY2hhcmFjdGVycy4gRGVmYXVsdCBpcyA8 c3Ryb25nPjEwMDwvc3Ryb25nPi48L2xpPgoJCTxsaT48Y29kZT5zaXplPSYjMzQ7aW50ZWdl ciYjMzQ7PC9jb2RlPjxiciAvPgpTaXplIG9mIHRoZSBpbnB1dCBmaWVsZCBhcyBkaXNwbGF5 ZWQgdG8gdGhlIHVzZXIuPC9saT4KCTwvdWw+Cgk8dWw+CgkJPGxpPjxjb2RlPnJlcXVpcmVk PSYjMzQ7Ym9vbGVhbiYjMzQ7PC9jb2RlPjxiciAvPgpXaGV0aGVyIHRoaXMgdGV4dCBmaWVs ZCBtdXN0IGJlIGZpbGxlZCBvdXQuIEF2YWlsYWJsZSB2YWx1ZXM6IDxzdHJvbmc+MTwvc3Ry b25nPiAoeWVzKSwgPHN0cm9uZz4wPC9zdHJvbmc+IChubykuIERlZmF1bHQgaXMgPHN0cm9u Zz4xPC9zdHJvbmc+ICh5ZXMpLjwvbGk+Cgk8L3VsPgoKCTxoND5FeGFtcGxlPC9oND4KCjxw cmU+PGNvZGU+JiM2MDt0eHA6emVtX2NvbnRhY3RfdGV4dCBsYWJlbD0mIzM0O1lvdXIgbmFt ZSYjMzQ7IC8mIzYyOwo8L2NvZGU+PC9wcmU+CgoJPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0 byB0b3A8L2E+PC9wPgoKCTxoMyBpZD0iemNfZW1haWwiPjxjb2RlPiYjNjA7dHhwOnplbV9j b250YWN0X2VtYWlsIC8mIzYyOzwvY29kZT48L2gzPgoKCTxwPklucHV0IGZpZWxkIGZvciB1 c2VyJiM4MjE3O3MgZW1haWwgYWRkcmVzcy48L3A+CgoJPHA+VGhlIGVudGVyZWQgZW1haWwg YWRkcmVzcyB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgdmFsaWRhdGVkIHRvIG1ha2Ugc3VyZSBp dCBpcyBvZiB0aGUgZm9ybSAmIzgyMjA7YWJjQHh4eC55eXlbLnp6el0mIzgyMjE7LiBPbiBu b24tV2luZG93cyBzZXJ2ZXJzLCBhIHRlc3Qgd2lsbCBiZSBkb25lIHRvIHZlcmlmeSB0aGF0 IGFuIEEgb3IgTVggcmVjb3JkIGV4aXN0cyBmb3IgdGhlIGRvbWFpbi4gTmVpdGhlciB0ZXN0 IHByZXZlbnRzIHNwYW0sIGJ1dCBpdCBkb2VzIGhlbHAgZGV0ZWN0aW5nIGFjY2lkZW50YWwg dHlwaW5nIGVycm9ycy48L3A+CgoJPGg0PkF0dHJpYnV0ZXM8L2g0PgoKCTx1bD4KCQk8bGk+ PGNvZGU+bGFiZWw9JiMzNDt0ZXh0JiMzNDs8L2NvZGU+PGJyIC8+ClRleHQgbGFiZWwgZGlz cGxheWVkIHRvIHRoZSB1c2VyLiBEZWZhdWx0IGlzIDxzdHJvbmc+RW1haWw8L3N0cm9uZz4u PC9saT4KCQk8bGk+PGNvZGU+bmFtZT0mIzM0O3ZhbHVlJiMzNDs8L2NvZGU+PGJyIC8+CkZp ZWxkIG5hbWUsIGFzIHVzZWQgaW4gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj48c3BhbiBjbGFz cz0iY2FwcyI+SFRNTDwvc3Bhbj48L3NwYW4+IGlucHV0IHRhZy48L2xpPgoJCTxsaT48Y29k ZT5icmVhaz0mIzM0O3RhZyYjMzQ7PC9jb2RlPjxiciAvPgpCcmVhayB0YWcgYmV0d2VlbiB0 aGUgbGFiZWwgYW5kIGlucHV0IGZpZWxkLiBEZWZhdWx0IGlzIDxjb2RlPiYjNjA7YnIgLyYj NjI7PC9jb2RlPi4gVXNlIDxjb2RlPmJyZWFrPSYjMzQ7JiMzNDs8L2NvZGU+IHRvIHB1dCB0 aGUgbGFiZWwgYW5kIGlucHV0IGZpZWxkIG9uIHRoZSBzYW1lIGxpbmUuPC9saT4KCQk8bGk+ PGNvZGU+ZGVmYXVsdD0mIzM0O3ZhbHVlJiMzNDs8L2NvZGU+PGJyIC8+CkRlZmF1bHQgdmFs dWUgd2hlbiBubyBpbnB1dCBpcyBwcm92aWRlZC48L2xpPgoJCTxsaT48Y29kZT5taW49JiMz NDtpbnRlZ2VyJiMzNDs8L2NvZGU+PGJyIC8+Ck1pbmltdW0gaW5wdXQgbGVuZ3RoIGluIGNo YXJhY3RlcnMuIERlZmF1bHQgaXMgPHN0cm9uZz4wPC9zdHJvbmc+LjwvbGk+CgkJPGxpPjxj b2RlPm1heD0mIzM0O2ludGVnZXImIzM0OzwvY29kZT48YnIgLz4KTWF4aW11bSBpbnB1dCBs ZW5ndGggaW4gY2hhcmFjdGVycy4gRGVmYXVsdCBpcyA8c3Ryb25nPjEwMDwvc3Ryb25nPi48 L2xpPgoJCTxsaT48Y29kZT5zaXplPSYjMzQ7aW50ZWdlciYjMzQ7PC9jb2RlPjxiciAvPgpT aXplIG9mIHRoZSBpbnB1dCBmaWVsZCBhcyBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuPC9saT4K CQk8bGk+PGNvZGU+cmVxdWlyZWQ9JiMzNDtib29sZWFuJiMzNDs8L2NvZGU+PGJyIC8+Cldo ZXRoZXIgdGhpcyB0ZXh0IGZpZWxkIG11c3QgYmUgZmlsbGVkIG91dC4gQXZhaWxhYmxlIHZh bHVlczogPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLCA8c3Ryb25nPjA8L3N0cm9uZz4gKG5v KS4gRGVmYXVsdCBpcyA8c3Ryb25nPjE8L3N0cm9uZz4gKHllcykuPC9saT4KCTwvdWw+Cgk8 dWw+CgkJPGxpPjxjb2RlPnNlbmRfYXJ0aWNsZT0mIzM0O2Jvb2xlYW4mIzM0OzwvY29kZT48 YnIgLz4KV2hldGhlciB0aGlzIGZpZWxkIGlzIHVzZWQgYXMgdGhlIHJlY2lwaWVudCBlbWFp bCBhZGRyZXNzIHdoZW4gdXNpbmcgdGhlIHNlbmRfYXJ0aWNsZSBmdW5jdGlvbi4gQXZhaWxh YmxlIHZhbHVlczogPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLCA8c3Ryb25nPjA8L3N0cm9u Zz4gKG5vKS4gRGVmYXVsdCBpcyA8c3Ryb25nPjA8L3N0cm9uZz4gKG5vKS48L2xpPgoJPC91 bD4KCgk8aDQ+RXhhbXBsZTwvaDQ+Cgo8cHJlPjxjb2RlPiYjNjA7dHhwOnplbV9jb250YWN0 X2VtYWlsIGxhYmVsPSYjMzQ7WW91ciBlbWFpbCBhZGRyZXNzJiMzNDsgLyYjNjI7CjwvY29k ZT48L3ByZT4KCgk8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+CgoJPGgz IGlkPSJ6Y190ZXh0YXJlYSI+PGNvZGU+JiM2MDt0eHA6emVtX2NvbnRhY3RfdGV4dGFyZWEg LyYjNjI7PC9jb2RlPjwvaDM+CgoJPHA+Q3JlYXRlcyBhIHRleHRhcmVhLjwvcD4KCgk8aDQ+ QXR0cmlidXRlczwvaDQ+CgoJPHVsPgoJCTxsaT48Y29kZT5sYWJlbD0mIzM0O3RleHQmIzM0 OzwvY29kZT48YnIgLz4KVGV4dCBsYWJlbCBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuIERlZmF1 bHQgaXMgPHN0cm9uZz5NZXNzYWdlPC9zdHJvbmc+LjwvbGk+CgkJPGxpPjxjb2RlPm5hbWU9 JiMzNDt2YWx1ZSYjMzQ7PC9jb2RlPjxiciAvPgpGaWVsZCBuYW1lLCBhcyB1c2VkIGluIHRo ZSA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+PC9z cGFuPiBpbnB1dCB0YWcuPC9saT4KCQk8bGk+PGNvZGU+YnJlYWs9JiMzNDt0YWcmIzM0Ozwv Y29kZT48YnIgLz4KQnJlYWsgdGFnIGJldHdlZW4gdGhlIGxhYmVsIGFuZCBpbnB1dCBmaWVs ZC4gRGVmYXVsdCBpcyA8Y29kZT4mIzYwO2JyIC8mIzYyOzwvY29kZT4uIFVzZSA8Y29kZT5i cmVhaz0mIzM0OyYjMzQ7PC9jb2RlPiB0byBwdXQgdGhlIGxhYmVsIGFuZCBpbnB1dCBmaWVs ZCBvbiB0aGUgc2FtZSBsaW5lLjwvbGk+CgkJPGxpPjxjb2RlPmRlZmF1bHQ9JiMzNDt2YWx1 ZSYjMzQ7PC9jb2RlPjxiciAvPgpEZWZhdWx0IHZhbHVlIHdoZW4gbm8gaW5wdXQgaXMgcHJv dmlkZWQuPC9saT4KCQk8bGk+PGNvZGU+Y29scz0mIzM0O2ludGVnZXImIzM0OzwvY29kZT48 YnIgLz4KQ29sdW1uIHdpZHRoLiBEZWZhdWx0IGlzIDxzdHJvbmc+NTg8L3N0cm9uZz4uPC9s aT4KCQk8bGk+PGNvZGU+cm93cz0mIzM0O2ludGVnZXImIzM0OzwvY29kZT48YnIgLz4KUm93 IGhlaWdodC4gRGVmYXVsdCBpcyA8c3Ryb25nPjg8L3N0cm9uZz4uPC9saT4KCQk8bGk+PGNv ZGU+bWluPSYjMzQ7aW50ZWdlciYjMzQ7PC9jb2RlPjxiciAvPgpNaW5pbXVtIGlucHV0IGxl bmd0aCBpbiBjaGFyYWN0ZXJzLiBEZWZhdWx0IGlzIDxzdHJvbmc+MDwvc3Ryb25nPi48L2xp PgoJCTxsaT48Y29kZT5tYXg9JiMzNDtpbnRlZ2VyJiMzNDs8L2NvZGU+PGJyIC8+Ck1heGlt dW0gaW5wdXQgbGVuZ3RoIGluIGNoYXJhY3RlcnMuIERlZmF1bHQgaXMgPHN0cm9uZz4xMDAw MDwvc3Ryb25nPi48L2xpPgoJPC91bD4KCTx1bD4KCQk8bGk+PGNvZGU+cmVxdWlyZWQ9JiMz NDtib29sZWFuJiMzNDs8L2NvZGU+PGJyIC8+CldoZXRoZXIgdGhpcyB0ZXh0IGZpZWxkIG11 c3QgYmUgZmlsbGVkIG91dC4gQXZhaWxhYmxlIHZhbHVlczogPHN0cm9uZz4xPC9zdHJvbmc+ ICh5ZXMpLCA8c3Ryb25nPjA8L3N0cm9uZz4gKG5vKS4gRGVmYXVsdCBpcyA8c3Ryb25nPjE8 L3N0cm9uZz4gKHllcykuPC9saT4KCTwvdWw+CgoJPGg0PkV4YW1wbGU8L2g0PgoKCTxwPlRl eHRhcmVhIHRoYXQgaXMgNDAgY2hhcnMgd2lkZSwgMTAgbGluZXMgaGlnaCwgd2l0aCBhIGN1 c3RvbWl6ZWQgbGFiZWw6PC9wPgoKPHByZT48Y29kZT4mIzYwO3R4cDp6ZW1fY29udGFjdF90 ZXh0YXJlYSBjb2xzPSYjMzQ7NDAmIzM0OyByb3dzPSYjMzQ7MTAmIzM0OyBsYWJlbD0mIzM0 O1lvdXIgcXVlc3Rpb24mIzM0OyAvJiM2MjsKPC9jb2RlPjwvcHJlPgoKCTxwPjxhIGhyZWY9 IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgk8aDMgaWQ9InpjX3N1Ym1pdCI+PGNvZGU+ JiM2MDt0eHA6emVtX2NvbnRhY3Rfc3VibWl0IC8mIzYyOzwvY29kZT48L2gzPgoKCTxwPkNy ZWF0ZXMgYSBzdWJtaXQgYnV0dG9uLjxiciAvPgpXaGVuIHVzZWQgYXMgYSBjb250YWluZXIg dGFnLCBhICYjODIyMDtidXR0b24mIzgyMjE7IGVsZW1lbnQgd2lsbCBiZSB1c2VkIGluc3Rl YWQgb2YgYW4gJiM4MjIwO2lucHV0JiM4MjIxOyBlbGVtZW50LjwvcD4KCgk8aDQ+QXR0cmli dXRlczo8L2g0PgoKCTx1bD4KCQk8bGk+PGNvZGU+bGFiZWw9JiMzNDt0ZXh0JiMzNDs8L2Nv ZGU+PGJyIC8+ClRleHQgc2hvd24gb24gdGhlIHN1Ym1pdCBidXR0b24uIERlZmF1bHQgaXMg JiM4MjIwO1NlbmQmIzgyMjE7LjwvbGk+Cgk8L3VsPgoJPHVsPgoJCTxsaT48Y29kZT5idXR0 b249JiMzNDtib29sZWFuJiMzNDs8L2NvZGU+PGJyIC8+CjxlbT5EZXByZWNhdGVkLiBVc2Ug YSBjb250YWluZXIgdGFnIGlmIHlvdSB3YW50IGEgYnV0dG9uIGVsZW1lbnQuPC9lbT48L2xp PgoJPC91bD4KCgk8aDQ+RXhhbXBsZXM8L2g0PgoKCTxwPlN0YW5kYXJkIHN1Ym1pdCBidXR0 b246PC9wPgoKPHByZT48Y29kZT4mIzYwO3R4cDp6ZW1fY29udGFjdF9zdWJtaXQgLyYjNjI7 CjwvY29kZT48L3ByZT4KCgk8cD5TdWJtaXQgYnV0dG9uIHdpdGggeW91ciBvd24gdGV4dDo8 L3A+Cgo8cHJlPjxjb2RlPiYjNjA7dHhwOnplbV9jb250YWN0X3N1Ym1pdCBsYWJlbD0mIzM0 O1NlbmQmIzM0OyAvJiM2MjsKPC9jb2RlPjwvcHJlPgoKCTxwPlVzYWdlIGFzIGEgY29udGFp bmVyIHRhZywgd2hpY2ggYWxsb3dzIHlvdSB0byB1c2UgVGV4dHBhdHRlcm4gdGFncyBhbmQg PHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IG1hcmt1cCBpbiB0aGUgc3VibWl0IGJ1 dHRvbjo8L3A+Cgo8cHJlPjxjb2RlPiYjNjA7dHhwOnplbV9jb250YWN0X3N1Ym1pdCYjNjI7 JiM2MDtzdHJvbmcmIzYyO1NlbmQmIzYwOy9zdHJvbmcmIzYyOyBxdWVzdGlvbiYjNjA7L3R4 cDp6ZW1fY29udGFjdF9zdWJtaXQmIzYyOwo8L2NvZGU+PC9wcmU+Cgo8cHJlPjxjb2RlPiYj NjA7dHhwOnplbV9jb250YWN0X3N1Ym1pdCYjNjI7JiM2MDtpbWcgc3JjPSYjMzQ7cGF0aC90 by9pbWcucG5nJiMzNDsgYWx0PSYjMzQ7c3VibWl0JiMzNDsmIzYyOyYjNjA7L3R4cDp6ZW1f Y29udGFjdF9zdWJtaXQmIzYyOwo8L2NvZGU+PC9wcmU+CgoJPHA+PGEgaHJlZj0iI3RvcCI+ QmFjayB0byB0b3A8L2E+PC9wPgoKCTxoMyBpZD0iemNfc2VsZWN0Ij48Y29kZT4mIzYwO3R4 cDp6ZW1fY29udGFjdF9zZWxlY3QgLyYjNjI7PC9jb2RlPjwvaDM+CgoJPHA+Q3JlYXRlcyBh IGRyb3AtZG93biBzZWxlY3Rpb24gbGlzdC48L3A+CgoJPGg0PkF0dHJpYnV0ZXM8L2g0PgoK CTx1bD4KCQk8bGk+PGNvZGU+bGlzdD0mIzM0O2NvbW1hLXNlcGFyYXRlZCB2YWx1ZXMmIzM0 OzwvY29kZT4gPHNwYW4gY2xhc3M9InJlcXVpcmVkIj5yZXF1aXJlZDwvc3Bhbj48YnIgLz4K TGlzdCBvZiBpdGVtcyB0byBzaG93IGluIHRoZSBzZWxlY3QgYm94LjwvbGk+CgkJPGxpPjxj b2RlPnNlbGVjdGVkPSYjMzQ7dmFsdWUmIzM0OzwvY29kZT48YnIgLz4KTGlzdCBpdGVtIHRo YXQgaXMgc2VsZWN0ZWQgYnkgZGVmYXVsdC48L2xpPgoJCTxsaT48Y29kZT5sYWJlbD0mIzM0 O3RleHQmIzM0OzwvY29kZT48YnIgLz4KVGV4dCBsYWJlbCBkaXNwbGF5ZWQgdG8gdGhlIHVz ZXIuIERlZmF1bHQgaXMgPHN0cm9uZz5PcHRpb248L3N0cm9uZz4uPC9saT4KCQk8bGk+PGNv ZGU+bmFtZT0mIzM0O3ZhbHVlJiMzNDs8L2NvZGU+PGJyIC8+CkZpZWxkIG5hbWUsIGFzIHVz ZWQgaW4gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj48c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwv c3Bhbj48L3NwYW4+IGlucHV0IHRhZy48L2xpPgoJCTxsaT48Y29kZT5icmVhaz0mIzM0O3Rh ZyYjMzQ7PC9jb2RlPjxiciAvPgpCcmVhayB0YWcgYmV0d2VlbiB0aGUgbGFiZWwgYW5kIGlu cHV0IGZpZWxkLiBEZWZhdWx0IGlzIDxjb2RlPiYjNjA7YnIgLyYjNjI7PC9jb2RlPi4gVXNl IDxjb2RlPmJyZWFrPSYjMzQ7JiMzNDs8L2NvZGU+IHRvIHB1dCB0aGUgbGFiZWwgYW5kIGlu cHV0IGZpZWxkIG9uIHRoZSBzYW1lIGxpbmUuPC9saT4KCQk8bGk+PGNvZGU+ZGVsaW1pdGVy PSYjMzQ7Y2hhcmFjdGVyJiMzNDs8L2NvZGU+PGJyIC8+ClNlcGFyYXRvciBjaGFyYWN0ZXIg dXNlZCBpbiB0aGUgPHN0cm9uZz5saXN0PC9zdHJvbmc+IGF0dHJpYnV0ZS4gRGVmYXVsdCBp cyA8c3Ryb25nPiw8L3N0cm9uZz4gKGNvbW1hKS48L2xpPgoJPC91bD4KCTx1bD4KCQk8bGk+ PGNvZGU+cmVxdWlyZWQ9JiMzNDtib29sZWFuJiMzNDs8L2NvZGU+PGJyIC8+CldoZXRoZXIg YSBub24tZW1wdHkgb3B0aW9uIG11c3QgYmUgc2VsZWN0ZWQuIEF2YWlsYWJsZSB2YWx1ZXM6 IDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVzKSwgPHN0cm9uZz4wPC9zdHJvbmc+IChubykuIERl ZmF1bHQgaXMgPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLjwvbGk+Cgk8L3VsPgoKCTxoND5F eGFtcGxlczwvaDQ+CgoJPHA+U2VsZWN0IGxpc3QgbGFiZWxlZCAmIzgyMTY7RGVwYXJ0bWVu dCYjODIxNzssIGNvbnRhaW5pbmcgdGhyZWUgb3B0aW9ucyBhbmQgYSBibGFuayBvcHRpb24g KGR1ZSB0byB0aGUgY29tbWEgYmVmb3JlICYjODIxNjtNYXJrZXRpbmcmIzgyMTc7KSBzaG93 biBieSBkZWZhdWx0LCBmb3JjaW5nIHRoZSB1c2VyIHRvIG1ha2UgYSBzZWxlY3Rpb24uPC9w PgoKPHByZT48Y29kZT4mIzYwO3R4cDp6ZW1fY29udGFjdF9zZWxlY3QgbGFiZWw9JiMzNDtE ZXBhcnRtZW50JiMzNDsgbGlzdD0mIzM0OyxNYXJrZXRpbmcsU2FsZXMsU3VwcG9ydCYjMzQ7 IC8mIzYyOwo8L2NvZGU+PC9wcmU+CgoJPHA+U2VsZWN0IGxpc3QgY29udGFpbmluZyB0aHJl ZSBvcHRpb25zIHdpdGggJiM4MjE2O01hcmtldGluZyYjODIxNzsgc2VsZWN0ZWQgYnkgZGVm YXVsdC48L3A+Cgo8cHJlPjxjb2RlPiYjNjA7dHhwOnplbV9jb250YWN0X3NlbGVjdCBsaXN0 PSYjMzQ7TWFya2V0aW5nLFNhbGVzLFN1cHBvcnQmIzM0OyBzZWxlY3RlZD0mIzM0O01hcmtl dGluZyYjMzQ7IC8mIzYyOwo8L2NvZGU+PC9wcmU+CgoJPHA+PGEgaHJlZj0iI3RvcCI+QmFj ayB0byB0b3A8L2E+PC9wPgoKCTxoMyBpZD0iemNfY2hlY2tib3giPjxjb2RlPiYjNjA7dHhw OnplbV9jb250YWN0X2NoZWNrYm94IC8mIzYyOzwvY29kZT48L2gzPgoKCTxwPkNyZWF0ZXMg YSBjaGVjayBib3guPC9wPgoKCTxoND5BdHRyaWJ1dGVzPC9oND4KCgk8dWw+CgkJPGxpPjxj b2RlPmxhYmVsPSYjMzQ7dGV4dCYjMzQ7PC9jb2RlPjxiciAvPgpUZXh0IGxhYmVsIGRpc3Bs YXllZCB0byB0aGUgdXNlci4gRGVmYXVsdCBpcyA8c3Ryb25nPkNoZWNrYm94PC9zdHJvbmc+ LjwvbGk+CgkJPGxpPjxjb2RlPm5hbWU9JiMzNDt2YWx1ZSYjMzQ7PC9jb2RlPjxiciAvPgpG aWVsZCBuYW1lLCBhcyB1c2VkIGluIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xh c3M9ImNhcHMiPkhUTUw8L3NwYW4+PC9zcGFuPiBpbnB1dCB0YWcuPC9saT4KCQk8bGk+PGNv ZGU+YnJlYWs9JiMzNDt0YWcmIzM0OzwvY29kZT48YnIgLz4KQnJlYWsgdGFnIGJldHdlZW4g dGhlIGxhYmVsIGFuZCBpbnB1dCBmaWVsZC4gRGVmYXVsdCBpcyA8Y29kZT4mIzYwO2JyIC8m IzYyOzwvY29kZT4uIFVzZSA8Y29kZT5icmVhaz0mIzM0OyYjMzQ7PC9jb2RlPiB0byBwdXQg dGhlIGxhYmVsIGFuZCBpbnB1dCBmaWVsZCBvbiB0aGUgc2FtZSBsaW5lLjwvbGk+CgkJPGxp Pjxjb2RlPmNoZWNrZWQ9JiMzNDtib29sZWFuJiMzNDs8L2NvZGU+PGJyIC8+CldoZXRoZXIg dGhpcyBib3ggaXMgY2hlY2tlZCB3aGVuIGZpcnN0IGRpc3BsYXllZC4gQXZhaWxhYmxlIHZh bHVlczogPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLCA8c3Ryb25nPjA8L3N0cm9uZz4gKG5v KS4gRGVmYXVsdCBpcyAmIzgyMjA7MCYjODIyMTsgKG5vKS48L2xpPgoJPC91bD4KCTx1bD4K CQk8bGk+PGNvZGU+cmVxdWlyZWQ9JiMzNDtib29sZWFuJiMzNDs8L2NvZGU+PGJyIC8+Cldo ZXRoZXIgdGhpcyBjaGVja2JveCBtdXN0IGJlIGZpbGxlZCBvdXQuIEF2YWlsYWJsZSB2YWx1 ZXM6IDxzdHJvbmc+MTwvc3Ryb25nPiAoeWVzKSwgPHN0cm9uZz4wPC9zdHJvbmc+IChubyku IERlZmF1bHQgaXMgPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLjwvbGk+Cgk8L3VsPgoKCTxo ND5FeGFtcGxlczwvaDQ+CgoJPHA+U2hyaW5rLXdyYXAgYWdyZWVtZW50IHdoaWNoIG11c3Qg YmUgY2hlY2tlZCBieSB0aGUgdXNlciBiZWZvcmUgdGhlIGVtYWlsIHdpbGwgYmUgc2VudC48 L3A+Cgo8cHJlPjxjb2RlPiYjNjA7dHhwOnplbV9jb250YWN0X2NoZWNrYm94IGxhYmVsPSYj MzQ7SSBhY2NlcHQgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zJiMzNDsgLyYjNjI7CjwvY29k ZT48L3ByZT4KCgk8cD5PcHRpb25hbCBjaGVja2JveGVzOjwvcD4KCjxwcmU+PGNvZGU+U2Vs ZWN0IHdoaWNoIG9wZXJhdGluZyBzeXN0ZW1zIGFyZSB5b3UgZmFtaWxpYXIgd2l0aDomIzYw O2JyIC8mIzYyOwomIzYwO3R4cDp6ZW1fY29udGFjdF9jaGVja2JveCBsYWJlbD0mIzM0O1dp bmRvd3MmIzM0OyByZXF1aXJlZD0mIzM0OzAmIzM0OyAvJiM2MjsmIzYwO2JyIC8mIzYyOwom IzYwO3R4cDp6ZW1fY29udGFjdF9jaGVja2JveCBsYWJlbD0mIzM0O1VuaXgvTGludXgvQlNE JiMzNDsgcmVxdWlyZWQ9JiMzNDswJiMzNDsgLyYjNjI7JiM2MDticiAvJiM2MjsKJiM2MDt0 eHA6emVtX2NvbnRhY3RfY2hlY2tib3ggbGFiZWw9JiMzNDtNYWNPUyYjMzQ7IHJlcXVpcmVk PSYjMzQ7MCYjMzQ7IC8mIzYyOyYjNjA7YnIgLyYjNjI7CjwvY29kZT48L3ByZT4KCgk8cD48 YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+CgoJPGgzIGlkPSJ6Y19yYWRpbyI+ PGNvZGU+JiM2MDt0eHA6emVtX2NvbnRhY3RfcmFkaW8gLyYjNjI7PC9jb2RlPjwvaDM+CgoJ PHA+Q3JlYXRlcyBhIHJhZGlvIGJ1dHRvbi48L3A+CgoJPGg0PkF0dHJpYnV0ZXM8L2g0PgoK CTx1bD4KCQk8bGk+PGNvZGU+Z3JvdXA9JiMzNDt0ZXh0JiMzNDs8L2NvZGU+IDxzcGFuIGNs YXNzPSJyZXF1aXJlZCI+cmVxdWlyZWQ8L3NwYW4+PGJyIC8+ClRleHQgdXNlZCBpbiB0aGUg ZW1haWwgdG8gZGVzY3JpYmUgdGhpcyBncm91cCBvZiByYWRpbyBidXR0b25zLiBUaGlzIGF0 dHJpYnV0ZSB2YWx1ZSBpcyByZW1lbWJlcmVkIGZvciBzdWJzZXF1ZW50IHJhZGlvIGJ1dHRv bnMsIHNvIHlvdSBvbmx5IGhhdmUgdG8gc2V0IGl0IG9uIHRoZSBmaXJzdCByYWRpbyBidXR0 b24gb2YgYSBncm91cC4gRGVmYXVsdCBpcyA8c3Ryb25nPlJhZGlvPC9zdHJvbmc+LjwvbGk+ CgkJPGxpPjxjb2RlPmxhYmVsPSYjMzQ7dGV4dCYjMzQ7PC9jb2RlPiA8c3BhbiBjbGFzcz0i cmVxdWlyZWQiPnJlcXVpcmVkPC9zcGFuPjxiciAvPgpUZXh0IGxhYmVsIGRpc3BsYXllZCB0 byB0aGUgdXNlciBhcyByYWRpbyBidXR0b24gb3B0aW9uLjwvbGk+CgkJPGxpPjxjb2RlPm5h bWU9JiMzNDt2YWx1ZSYjMzQ7PC9jb2RlPjxiciAvPgpGaWVsZCBuYW1lLCBhcyB1c2VkIGlu IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+ PC9zcGFuPiBpbnB1dCB0YWcuIFRoaXMgYXR0cmlidXRlIHZhbHVlIGlzIHJlbWVtYmVyZWQg Zm9yIHN1YnNlcXVlbnQgcmFkaW8gYnV0dG9ucywgc28geW91IG9ubHkgaGF2ZSB0byBzZXQg aXQgb24gdGhlIGZpcnN0IHJhZGlvIGJ1dHRvbiBvZiBhIGdyb3VwLiBJZiBpdCBoYXNuJiM4 MjE3O3QgYmVlbiBzZXQgYXQgYWxsLCBpdCB3aWxsIGJlIGRlcml2ZWQgZnJvbSB0aGUgPGNv ZGU+Z3JvdXA8L2NvZGU+IGF0dHJpYnV0ZS48L2xpPgoJCTxsaT48Y29kZT5icmVhaz0mIzM0 O3RhZyYjMzQ7PC9jb2RlPjxiciAvPgpCcmVhayB0YWcgYmV0d2VlbiB0aGUgbGFiZWwgYW5k IGZpZWxkLiBEZWZhdWx0IGlzIGEgc3BhY2UuPC9saT4KCTwvdWw+Cgk8dWw+CgkJPGxpPjxj b2RlPmNoZWNrZWQ9JiMzNDtib29sZWFuJiMzNDs8L2NvZGU+PGJyIC8+CldoZXRoZXIgdGhp cyByYWRpbyBvcHRpb24gaXMgY2hlY2tlZCB3aGVuIHRoZSBmb3JtIGlzIGZpcnN0IGRpc3Bs YXllZC4gQXZhaWxhYmxlIHZhbHVlczogPHN0cm9uZz4xPC9zdHJvbmc+ICh5ZXMpLCA8c3Ry b25nPjA8L3N0cm9uZz4gKG5vKS4gRGVmYXVsdCBpcyA8c3Ryb25nPjA8L3N0cm9uZz4gKG5v KS48L2xpPgoJPC91bD4KCgk8aDQ+RXhhbXBsZTwvaDQ+CgoJPHA+R3JvdXAgbXV0dWFsbHkg ZXhjbHVzaXZlIHJhZGlvIGJ1dHRvbnMgYnkgc2V0dGluZyB0aGUgPGNvZGU+Z3JvdXA8L2Nv ZGU+IGF0dHJpYnV0ZSBvbiB0aGUgZmlyc3QgcmFkaW8gYnV0dG9uIGluIGEgZ3JvdXAuIE9u bHkgdGhlIGNob3NlbiByYWRpbyBidXR0b24gZnJvbSBlYWNoIGdyb3VwIHdpbGwgYmUgdXNl ZCBpbiB0aGUgZW1haWwgbWVzc2FnZS4gVGhlIG1lc3NhZ2Ugd2lsbCBiZSBvdXRwdXQgaW4g dGhlIGZvcm0gPHN0cm9uZz5ncm91cDogbGFiZWw8L3N0cm9uZz4gZm9yIGVhY2ggb2YgdGhl IGNob3NlbiByYWRpbyBidXR0b25zLjwvcD4KCjxwcmU+PGNvZGU+JiM2MDt0eHA6emVtX2Nv bnRhY3RfcmFkaW8gbGFiZWw9JiMzNDtNZWRpdW0mIzM0OyBncm91cD0mIzM0O0kgbGlrZSBt eSBzdGVhayYjMzQ7IC8mIzYyOwomIzYwO3R4cDp6ZW1fY29udGFjdF9yYWRpbyBsYWJlbD0m IzM0O1JhcmUmIzM0OyAvJiM2MjsKJiM2MDt0eHA6emVtX2NvbnRhY3RfcmFkaW8gbGFiZWw9 JiMzNDtXZWxsIGRvbmUmIzM0OyAvJiM2MjsKPC9jb2RlPgo8Y29kZT4mIzYwO3R4cDp6ZW1f Y29udGFjdF9yYWRpbyBsYWJlbD0mIzM0O1dpbmUmIzM0OyBncm91cD0mIzM0O1dpdGggYSBn bGFzcyBvZiYjMzQ7IC8mIzYyOwomIzYwO3R4cDp6ZW1fY29udGFjdF9yYWRpbyBsYWJlbD0m IzM0O0JlZXImIzM0OyAvJiM2MjsKJiM2MDt0eHA6emVtX2NvbnRhY3RfcmFkaW8gbGFiZWw9 JiMzNDtXYXRlciYjMzQ7IC8mIzYyOwo8L2NvZGU+PC9wcmU+CgoJPHA+PGEgaHJlZj0iI3Rv cCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCTxoMyBpZD0iemNfc2VjcmV0Ij48Y29kZT4mIzYw O3R4cDp6ZW1fY29udGFjdF9zZWNyZXQgLyYjNjI7PC9jb2RlPjwvaDM+CgoJPHA+VGhpcyB0 YWcgaGFzIG5vIGVmZmVjdCBvbiB0aGUgZm9ybSBvciA8c3BhbiBjbGFzcz0iY2FwcyI+SFRN TDwvc3Bhbj4gb3V0cHV0LCBidXQgd2lsbCBpbmNsdWRlIGFkZGl0aW9uYWwgaW5mb3JtYXRp b24gaW4gdGhlIGVtYWlsLiBJdCBjYW4gYmUgdXNlZCBhcyBhIHNlbGYtY2xvc2luZyB0YWcg b3IgYXMgYSBjb250YWluZXIgdGFnLjwvcD4KCgk8aDQ+QXR0cmlidXRlczwvaDQ+CgoJPHVs PgoJCTxsaT48Y29kZT5uYW1lPSYjMzQ7dGV4dCYjMzQ7PC9jb2RlPjxiciAvPgpVc2VkIGlu dGVybmFsbHkuIFNldCB0aGlzIG9ubHkgaWYgeW91IGhhdmUgbXVsdGlwbGUgJiM4MjE2O3Nl Y3JldCYjODIxNzsgZm9ybSBlbGVtZW50cyB3aXRoIGlkZW50aWNhbCBsYWJlbHMuPC9saT4K CQk8bGk+PGNvZGU+bGFiZWw9JiMzNDt0ZXh0JiMzNDs8L2NvZGU+PGJyIC8+ClVzZWQgdG8g aWRlbnRpZnkgdGhlIGZpZWxkIGluIHRoZSBlbWFpbC4gRGVmYXVsdCBpcyA8c3Ryb25nPlNl Y3JldDwvc3Ryb25nPi48L2xpPgoJPC91bD4KCTx1bD4KCQk8bGk+PGNvZGU+dmFsdWU9JiMz NDt2YWx1ZSYjMzQ7PC9jb2RlPjxiciAvPgpTb21lIHRleHQgeW91IHdhbnQgdG8gYWRkIHRv IHRoZSBlbWFpbC48L2xpPgoJPC91bD4KCgk8aDQ+RXhhbXBsZXM8L2g0PgoKCTxwPlVzYWdl IGFzIGEgc2VsZi1jbG9zaW5nIHRhZzwvcD4KCjxwcmU+PGNvZGU+JiM2MDt0eHA6emVtX2Nv bnRhY3Rfc2VjcmV0IHZhbHVlPSYjMzQ7VGhlIGFuc3dlciBpcyA0MiYjMzQ7IC8mIzYyOwo8 L2NvZGU+PC9wcmU+CgoJPHA+VXNhZ2UgYXMgYSBjb250YWluZXIgdGFnPC9wPgoKPHByZT48 Y29kZT4mIzYwO3R4cDp6ZW1fY29udGFjdF9zZWNyZXQgbGFiZWw9JiMzNDtEZWFyIHVzZXIm IzM0OyYjNjI7CiAgUGxlYXNlIHByb3ZpZGUgYSB1c2VmdWwgZXhhbXBsZSBmb3IgdGhpcyB0 YWchCiYjNjA7L3R4cDp6ZW1fY29udGFjdF9zZWNyZXQmIzYyOwo8L2NvZGU+PC9wcmU+CgoJ PHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCTxoMyBpZD0iemNfc2Vy dmVyaW5mbyI+PGNvZGU+JiM2MDt0eHA6emVtX2NvbnRhY3Rfc2VydmVyaW5mbyAvJiM2Mjs8 L2NvZGU+PC9oMz4KCgk8cD5UaGlzIHRhZyBoYXMgbm8gZWZmZWN0IG9uIHRoZSBmb3JtIG9y IDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBvdXRwdXQsIGJ1dCB3aWxsIGluY2x1 ZGUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBpbiB0aGUgZW1haWwgYmFzZWQgb24gdGhlIDxz cGFuIGNsYXNzPSJjYXBzIj5QSFA8L3NwYW4+ICRfU0VSVkVSIHZhcmlhYmxlLjwvcD4KCgk8 aDQ+QXR0cmlidXRlczwvaDQ+CgoJPHVsPgoJCTxsaT48Y29kZT5uYW1lPSYjMzQ7dmFsdWUm IzM0OzwvY29kZT4gPHNwYW4gY2xhc3M9InJlcXVpcmVkIj5yZXF1aXJlZDwvc3Bhbj48YnIg Lz4KTmFtZSBvZiB0aGUgc2VydmVyIHZhcmlhYmxlLiBTZWUgdGhlIDxhIGhyZWY9Imh0dHA6 Ly9waHAubmV0L21hbnVhbC9yZXNlcnZlZC52YXJpYWJsZXMucGhwI3Jlc2VydmVkLnZhcmlh Ymxlcy5zZXJ2ZXIiPjxzcGFuIGNsYXNzPSJjYXBzIj5QSFA8L3NwYW4+IG1hbnVhbDwvYT4g Zm9yIGEgZnVsbCBsaXN0LjwvbGk+Cgk8L3VsPgoJPHVsPgoJCTxsaT48Y29kZT5sYWJlbD0m IzM0O3RleHQmIzM0OzwvY29kZT48YnIgLz4KVXNlZCB0byBpZGVudGlmeSB0aGUgZmllbGQg aW4gdGhlIGVtYWlsLiBEZWZhdWx0cyB0byB0aGUgdmFsdWUgb2YgdGhlIDxzdHJvbmc+bmFt ZTwvc3Ryb25nPiBhdHRyaWJ1dGUuPC9saT4KCTwvdWw+CgoJPGg0PkV4YW1wbGVzPC9oND4K Cgk8cD5BZGQgdGhlIElQIGFkZHJlc3Mgb2YgdGhlIHZpc2l0b3IgdG8gdGhlIGVtYWlsPC9w PgoKPHByZT48Y29kZT4mIzYwO3R4cDp6ZW1fY29udGFjdF9zZXJ2ZXJpbmZvIG5hbWU9JiMz NDtSRU1PVEVfQUREUiYjMzQ7IGxhYmVsPSYjMzQ7SVAgbnVtYmVyJiMzNDsgLyYjNjI7Cjwv Y29kZT48L3ByZT4KCgk8cD5BZGQgdGhlIG5hbWUgb2YgdGhlIHZpc2l0b3ImIzgyMTc7cyBi cm93c2VyIHRvIHRoZSBlbWFpbDwvcD4KCjxwcmU+PGNvZGU+JiM2MDt0eHA6emVtX2NvbnRh Y3Rfc2VydmVyaW5mbyBuYW1lPSYjMzQ7SFRUUF9VU0VSX0FHRU5UJiMzNDsgbGFiZWw9JiMz NDtCcm93c2VyJiMzNDsgLyYjNjI7CjwvY29kZT48L3ByZT4KCgk8cD48YSBocmVmPSIjdG9w Ij5CYWNrIHRvIHRvcDwvYT48L3A+CgoJPGgzIGlkPSJ6Y19zZW5kX2FydGljbGUiPjxjb2Rl PiYjNjA7dHhwOnplbV9jb250YWN0X3NlbmRfYXJ0aWNsZSAvJiM2Mjs8L2NvZGU+PC9oMz4K Cgk8cD5Vc2UgdGhpcyB0YWcgaW4geW91ciBpbmRpdmlkdWFsIGFydGljbGUgZm9ybSwgd2hl cmUgeW91IHdhbnQgdGhlICYjODIyMDtzZW5kIGFydGljbGUmIzgyMjE7IGxpbmsgdG8gYmUg ZGlzcGxheWVkLjwvcD4KCgk8aDQ+QXR0cmlidXRlczo8L2g0PgoKCTx1bD4KCQk8bGk+PGNv ZGU+bGlua3RleHQ9JiMzNDt0ZXh0JiMzNDs8L2NvZGU+PGJyIC8+ClRleHQgZGlzcGxheWVk IGZvciB0aGUgbGluay4gRGVmYXVsdCBpcyA8c3Ryb25nPnNlbmQgYXJ0aWNsZTwvc3Ryb25n PjwvbGk+Cgk8L3VsPgoKCTxoND5FeGFtcGxlczo8L2g0PgoKCTxwPlNlZSA8YSBocmVmPSIj c2VuZGFydGljbGUiPkdldHRpbmcgc3RhcnRlZDwvYT48L3A+CgoJPHA+PGEgaHJlZj0iI3Rv cCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCTxoMiBpZD0iYWR2YW5jZWQiPkFkdmFuY2VkIGV4 YW1wbGVzPC9oMj4KCgk8aDMgaWQ9InNob3dfZXJyb3IiPlNlcGFyYXRlIGlucHV0IGFuZCBl cnJvciBmb3JtczwvaDM+CgoJPHA+VXNpbmcgPGNvZGU+c2hvd19pbnB1dDwvY29kZT4gYW5k IDxjb2RlPnNob3dfZXJyb3I8L2NvZGU+IHRvIGRpc3BsYXkgdGhlIGZvcm0gYW5kIGVycm9y IG1lc3NhZ2VzIG9uIGRpZmZlcmVudCBwYXJ0cyBvZiBhIHBhZ2UuIEEgZm9ybSBpcyB1c2Vk IHRvIG1ha2Ugc3VyZSB0aGUgY29udGVudHMgb2YgYm90aCBmb3JtcyBhcmUgaWRlbnRpY2Fs LCBvdGhlcndpc2UgdGhleSB3b3VsZCBiZSBzZWVuIGFzIHR3byBpbmRlcGVuZGVudCBmb3Jt cy4gVGhlIGZpcnN0IGZvcm0gb25seSBzaG93cyBlcnJvcnMgKG5vIGlucHV0KSwgdGhlIHNl Y29uZCBmb3JtIG9ubHkgc2hvd3MgdGhlIGlucHV0IGZpZWxkcyAobm8gZXJyb3JzKS48L3A+ Cgo8cHJlPjxjb2RlPiYjNjA7ZGl2IGlkPSYjMzQ7ZXJyb3ImIzM0OyYjNjI7CiAgJiM2MDt0 eHA6emVtX2NvbnRhY3QgZm9ybT0mIzM0O2NvbnRhY3RfZm9ybSYjMzQ7IHNob3dfaW5wdXQ9 JiMzNDswJiMzNDsgLyYjNjI7CiYjNjA7L2RpdiYjNjI7CjwvY29kZT4KPGNvZGU+JiM2MDtk aXYgaWQ9JiMzNDtpbnB1dGZvcm0mIzM0OyYjNjI7CiAgJiM2MDt0eHA6emVtX2NvbnRhY3Qg Zm9ybT0mIzM0O2NvbnRhY3RfZm9ybSYjMzQ7IHNob3dfZXJyb3I9JiMzNDswJiMzNDsgLyYj NjI7CiYjNjA7L2RpdiYjNjI7CjwvY29kZT48L3ByZT4KCgk8cD5BcGFydCBmcm9tIHRoZSA8 Y29kZT5zaG93X2Vycm9yPC9jb2RlPiBhbmQgPGNvZGU+c2hvd19pbnB1dDwvY29kZT4gYXR0 cmlidXRlcywgYWxsIG90aGVyIGF0dHJpYnV0ZXMgbXVzdCBiZSAxMDAlIGlkZW50aWNhbCBp biBib3RoIGZvcm1zLCBvdGhlcndpc2UgdGhleSB3b3VsZCBiZSBzZWVuIGFzIHR3byB1bnJl bGF0ZWQgZm9ybXMuPC9wPgoKCTxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwv cD4KCgk8aDMgaWQ9InN1YmplY3RfZm9ybSI+VXNlciBzZWxlY3RhYmxlIHN1YmplY3QgZmll bGQ8L2gzPgoKCTxwPlNwZWNpZnkgdGhlIDxjb2RlPnN1YmplY3RfZm9ybTwvY29kZT4gYXR0 cmlidXRlIGFuZCBjcmVhdGUgYSBmb3JtIHdoaWNoIGluY2x1ZGVzIGEgPGNvZGU+emVtX2Nv bnRhY3Rfc2VsZWN0PC9jb2RlPiB0YWc6PC9wPgoKPHByZT48Y29kZT4mIzYwO3R4cDp6ZW1f Y29udGFjdCB0bz0mIzM0O3lvdUBleGFtcGxlLmNvbSYjMzQ7IHN1YmplY3RfZm9ybT0mIzM0 O215X3N1YmplY3RfZm9ybSYjMzQ7IC8mIzYyOwogICYjNjA7dHhwOnplbV9jb250YWN0X3Rl eHQgbGFiZWw9JiMzNDtOYW1lJiMzNDsgLyYjNjI7JiM2MDticiAvJiM2MjsKICAmIzYwO3R4 cDp6ZW1fY29udGFjdF9lbWFpbCAvJiM2MjsmIzYwO2JyIC8mIzYyOwogICYjNjA7dHhwOnpl bV9jb250YWN0X3NlbGVjdCBsYWJlbD0mIzM0O0Nob29zZSBTdWJqZWN0JiMzNDsgbGlzdD0m IzM0OyxRdWVzdGlvbixGZWVkYmFjayYjMzQ7IC8mIzYyOyYjNjA7YnIgLyYjNjI7CiAgJiM2 MDt0eHA6emVtX2NvbnRhY3RfdGV4dGFyZWEgbGFiZWw9JiMzNDtNZXNzYWdlJiMzNDsgLyYj NjI7JiM2MDticiAvJiM2MjsKJiM2MDsvdHhwOnplbV9jb250YWN0JiM2MjsKPC9jb2RlPjwv cHJlPgoKCTxwPkNyZWF0ZSBhIFRleHRwYXR0ZXJuIGZvcm0gY2FsbGVkICYjODIyMDtteV9z dWJqZWN0X2Zvcm0mIzgyMjE7LCBjb250YWluaW5nOjwvcD4KCjxwcmU+PGNvZGU+JiM2MDt0 eHA6cGhwJiM2MjsKICBnbG9iYWwgJHplbV9jb250YWN0X2Zvcm07CiAgZWNobyAkemVtX2Nv bnRhY3RfZm9ybVsmIzM5O0Nob29zZSBTdWJqZWN0JiMzOTtdOwomIzYwOy90eHA6cGhwJiM2 MjsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoZSA8Y29kZT5sYWJlbDwvY29kZT4gdXNlZCBpbiB0 aGUgPGNvZGU+emVtX2NvbnRhY3Rfc2VsZWN0PC9jb2RlPiB0YWcgbXVzdCBiZSBpZGVudGlj YWwgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdmFyaWFibGUgaW4gdGhlIDxjb2RlPnN1YmplY3Rf Zm9ybTwvY29kZT4uIEhlcmUgd2UgdXNlZCA8Y29kZT5DaG9vc2Ugc3ViamVjdDwvY29kZT4u PC9wPgoKCTxwPklmIHlvdSYjODIxNztkIHByZWZlciB0byBhZGQgYSBjb21tb24gcHJlZml4 IGZvciBhbGwgc3ViamVjdHMsIHVzZSBhIDxjb2RlPnN1YmplY3RfZm9ybTwvY29kZT4gY29u dGFpbmluZzo8L3A+Cgo8cHJlPjxjb2RlPiYjNjA7dHhwOnBocCYjNjI7CiAgZ2xvYmFsICR6 ZW1fY29udGFjdF9mb3JtOwogIGVjaG8gJiMzOTtNeSBjb21tb24gcHJlZml4IC0gJiMzOTsg LiAkemVtX2NvbnRhY3RfZm9ybVsmIzM5O0Nob29zZSBTdWJqZWN0JiMzOTtdOwomIzYwOy90 eHA6cGhwJiM2MjsKPC9jb2RlPjwvcHJlPgoKCTxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8g dG9wPC9hPjwvcD4KCgk8aDMgaWQ9InRvX2Zvcm0iPlVzZXIgc2VsZWN0YWJsZSByZWNpcGll bnQsIHdpdGhvdXQgc2hvd2luZyBlbWFpbCBhZGRyZXNzPC9oMz4KCgk8cD5TcGVjaWZ5IHRo ZSA8Y29kZT50b19mb3JtPC9jb2RlPiBhdHRyaWJ1dGUgYW5kIGNyZWF0ZSBhIGZvcm0gd2hp Y2ggaW5jbHVkZXMgYSA8Y29kZT56ZW1fY29udGFjdF9zZWxlY3Q8L2NvZGU+IHRhZzo8L3A+ Cgo8cHJlPjxjb2RlPiYjNjA7dHhwOnplbV9jb250YWN0IHRvX2Zvcm09JiMzNDtteV96ZW1f Y29udGFjdF90b19mb3JtJiMzNDsmIzYyOwogICYjNjA7dHhwOnplbV9jb250YWN0X3RleHQg bGFiZWw9JiMzNDtOYW1lJiMzNDsgLyYjNjI7JiM2MDticiAvJiM2MjsKICAmIzYwO3R4cDp6 ZW1fY29udGFjdF9lbWFpbCAvJiM2MjsmIzYwO2JyIC8mIzYyOwogICYjNjA7dHhwOnplbV9j b250YWN0X3NlbGVjdCBsYWJlbD0mIzM0O0RlcGFydG1lbnQmIzM0OyBsaXN0PSYjMzQ7LFN1 cHBvcnQsU2FsZXMmIzM0OyAvJiM2MjsmIzYwO2JyIC8mIzYyOwogICYjNjA7dHhwOnplbV9j b250YWN0X3RleHRhcmVhIGxhYmVsPSYjMzQ7TWVzc2FnZSYjMzQ7IC8mIzYyOyYjNjA7YnIg LyYjNjI7CiYjNjA7L3R4cDp6ZW1fY29udGFjdCYjNjI7CjwvY29kZT48L3ByZT4KCgk8cD5D cmVhdGUgYSBUZXh0cGF0dGVybiBmb3JtIGNhbGxlZCAmIzgyMjA7bXlfemVtX2NvbnRhY3Rf dG9fZm9ybSYjODIyMTssIGNvbnRhaW5pbmc6PC9wPgoKPHByZT48Y29kZT4mIzYwO3R4cDpw aHAmIzYyOwogIGdsb2JhbCAkemVtX2NvbnRhY3RfZm9ybTsKICBzd2l0Y2goJHplbV9jb250 YWN0X2Zvcm1bJiMzOTtEZXBhcnRtZW50JiMzOTtdKQogIHsKICAgIGNhc2UgJiMzOTtTdXBw b3J0JiMzOTs6CiAgICAgIGVjaG8gJiMzOTtjcmV3QGV4YW1wbGUuY29tJiMzOTs7CiAgICAg IGJyZWFrOwogICAgY2FzZSAmIzM5O1NhbGVzJiMzOTs6CiAgICAgIGVjaG8gJiMzOTtzaG93 bWV0aGVtb25leUBleGFtcGxlLmNvbSYjMzk7OwogICAgICBicmVhazsKICAgIGRlZmF1bHQ6 CiAgICAgIGVjaG8gJiMzOTtzb21lb25lQGV4YW1wbGUuY29tJiMzOTs7CiAgfQomIzYwOy90 eHA6cGhwJiM2MjsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoZSA8Y29kZT5sYWJlbDwvY29kZT4g dXNlZCBpbiB0aGUgPGNvZGU+emVtX2NvbnRhY3Rfc2VsZWN0PC9jb2RlPiB0YWcgbXVzdCBi ZSBpZGVudGljYWwgdG8gdGhlIGNvcnJlc3BvbnNpbmcgdmFyaWFibGUgaW4gdGhlIDxjb2Rl PnRvX2Zvcm08L2NvZGU+LiBIZXJlIHdlIHVzZWQgPGNvZGU+RGVwYXJ0bWVudDwvY29kZT4u PC9wPgoKCTxwPkEgJiM4MjE2O2RlZmF1bHQmIzgyMTc7IGVtYWlsIGFkZHJlc3MgaW4gdGhl IDxjb2RlPnRvX2Zvcm08L2NvZGU+IGlzIHNwZWNpZmllZCB0byBlbnN1cmUgdGhhdCBhIHZh bGlkIGVtYWlsIGFkZHJlc3MgaXMgdXNlZCBpbiBjYXNlcyB3aGVyZSB5b3UgYWRkIG9yIGNo YW5nZSBhIHNlbGVjdC9yYWRpbyBvcHRpb24gYW5kIGZvcmdldCB0byB1cGRhdGUgdGhlIDxj b2RlPnRvX2Zvcm08L2NvZGU+LjwvcD4KCgk8cCBjbGFzcz0id2FybmluZyI+TmV2ZXIgdXNl IHRhZ3MgbGlrZSA8Y29kZT56ZW1fY29udGFjdF90ZXh0PC9jb2RlPiwgPGNvZGU+emVtX2Nv bnRhY3RfZW1haWw8L2NvZGU+IG9yIDxjb2RlPnplbV9jb250YWN0X3RleHRhcmVhPC9jb2Rl PiBmb3Igc2V0dGluZyB0aGUgcmVjaXBpZW50IGFkZHJlc3MsIG90aGVyd2lzZSB5b3VyIGZv cm0gY2FuIGJlIGFidXNlZCB0byBzZW5kIHNwYW0gdG8gYW55IGVtYWlsIGFkZHJlc3MhPC9w PgoKCTxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgk8aDIgaWQ9InN0 eWxpbmciPlN0eWxpbmc8L2gyPgoKCTxwPlRoZSBmb3JtIGl0c2VsZiBoYXMgYSBjbGFzcyA8 c3Ryb25nPnplbUNvbnRhY3RGb3JtPC9zdHJvbmc+IHNldCBvbiB0aGUgPGNvZGU+Rk9STTwv Y29kZT4gPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IHRhZy48L3A+CgoJPHA+VGhl IGxpc3Qgb2YgZXJyb3IgbWVzc2FnZXMgKGlmIGFueSkgaGFzIGEgY2xhc3MgPHN0cm9uZz56 ZW1FcnJvcjwvc3Ryb25nPiBzZXQgb24gdGhlIDxjb2RlPlVMPC9jb2RlPiA8c3BhbiBjbGFz cz0iY2FwcyI+SFRNTDwvc3Bhbj4gdGFnIHRoYXQgZW5jbG9zZXMgdGhlIGxpc3Qgb2YgZXJy b3JzLjwvcD4KCgk8cD5BbGwgZm9ybSBlbGVtZW50cyBhbmQgY29ycmVzcG9uZGluZyBsYWJl bHMgaGF2ZSB0aGUgZm9sbG93aW5nIGNsYXNzZXMgKG9yIGlkcyBzZXQpOgoJPG9sPgoJCTxs aT5PbmUgb2YgPHN0cm9uZz56ZW1UZXh0PC9zdHJvbmc+LCA8c3Ryb25nPnplbVRleHRhcmVh PC9zdHJvbmc+LCA8c3Ryb25nPnplbVNlbGVjdDwvc3Ryb25nPiwgPHN0cm9uZz56ZW1SYWRp bzwvc3Ryb25nPiwgPHN0cm9uZz56ZW1DaGVja2JveDwvc3Ryb25nPiwgPHN0cm9uZz56ZW1T dWJtaXQ8L3N0cm9uZz4uIEl0IHNob3VsZCBiZSBvYnZpb3VzIHdoaWNoIGNsYXNzIGlzIHVz ZWQgZm9yIHdoaWNoIGZvcm0gZWxlbWVudCAoYW5kIGNvcnJlc3BvbmRpbmcgbGFiZWwpLjwv bGk+CgkJPGxpPjxzdHJvbmc+emVtUmVxdWlyZWQ8L3N0cm9uZz4gb3IgPHN0cm9uZz5lcnJv ckVsZW1lbnQ8L3N0cm9uZz4gb3IgPHN0cm9uZz56ZW1SZXF1aXJlZGVycm9yRWxlbWVudDwv c3Ryb25nPiwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGZvcm0gZWxlbWVudCBpcyByZXF1 aXJlZCwgYW4gZXJyb3Igd2FzIGZvdW5kIGluIHdoYXRldmVyIHRoZSB2aXNpdG9yIGVudGVy ZWQmIzgyMzA7IG9yIGJvdGguPC9saT4KCTwvb2w+Cgk8b2w+CgkJPGxpPkFuIGluZGl2aWR1 YWwgJiM4MjIwO2lkJiM4MjIxOyBvciAmIzgyMjA7Y2xhc3MmIzgyMjE7IHNldCB0byB0aGUg dmFsdWUgb2YgdGhlIDxjb2RlPm5hbWU8L2NvZGU+IGF0dHJpYnV0ZSBvZiB0aGUgY29ycmVz cG9uZGluZyB0YWcuIFdoZW4gc3R5bGluZyBmb3JtcyBiYXNlZCBvbiB0aGlzIGNsYXNzLCB5 b3Ugc2hvdWxkIGV4cGxpY2l0bHkgc2V0IHRoZSA8Y29kZT5uYW1lPC9jb2RlPiBhdHRyaWJ1 dGUgYmVjYXVzZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBuYW1lcyBtYXkgY2hhbmdlIGlu IG5ld2VyIHplbV9jb250YWN0X3JlYm9ybiB2ZXJzaW9ucy48L2xpPgoJPC9vbD48L3A+CgoJ PHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCTxoMiBpZD0iaGlzdG9y eSI+SGlzdG9yeTwvaDI+CgoJPHA+T25seSB0aGUgY2hhbmdlcyB0aGF0IG1heSBhZmZlY3Qg cGVvcGxlIHdobyB1cGdyYWRlIGFyZSBkZXRhaWxlZCBiZWxvdy48YnIgLz4KVG8gc2F2ZSBz cGFjZSwgbGlua3MgdG8gZm9ydW0gdG9waWNzIHRoYXQgZGV0YWlsIGFsbCB0aGUgY2hhbmdl cyBpbiBlYWNoIHZlcnNpb24gaGF2ZSBiZWVuIGFkZGVkLjwvcD4KCgk8dWw+CgkJPGxpPjE0 IGZlYiAyMDA3OiA8c3Ryb25nPnZlcnNpb24gNC4wLjMuMTk8L3N0cm9uZz4gPGEgaHJlZj0i aHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP2lkPTIxMTQ0Ij5j aGFuZ2Vsb2c8L2E+Cgk8dWw+CgkJPGxpPjxhIGhyZWY9IiNzZW5kYXJ0aWNsZSI+c2VuZF9h cnRpY2xlPC9hPiBmdW5jdGlvbmFsaXR5IHJldmlzZWQsIHJlcXVpcmluZyBjaGFuZ2VzIHdo ZW4gdXBncmFkaW5nIGZyb20gZWFybGllciB2ZXJzaW9uczwvbGk+CgkJPGxpPk5ldyBsYW5n dWFnZSBzdHJpbmdzOiAmIzgyMTY7c2VuZF9hcnRpY2xlJiM4MjE3OyBhbmQgJiM4MjE2O3Jl Y2lwaWVudCYjODIxNzsgKHJlcGxhY2VzICYjODIxNjtyZWNlaXZlciYjODIxNzspPC9saT4K CQk8bGk+U2V0cyBvZiByYWRpbyBidXR0b25zIHJlcXVpcmUgdGhlIG5ldyA8YSBocmVmPSIj emNfcmFkaW8iPmdyb3VwPC9hPiBhdHRyaWJ1dGU8L2xpPgoJPC91bD48L2xpPgoJPHVsPgoJ CTxsaT5ZZXMvTm8gdmFsdWVzIGRlcHJlY2F0ZWQgaW4gZmF2b3IgZm9yIHRoZSA8c3BhbiBj bGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj48L3NwYW4+IHN0YW5k YXJkIDEvMCB2YWx1ZXMgKHllcy9ubyBzdGlsbCB3b3JrIGluIHRoaXMgdmVyc2lvbik8L2xp PgoJCTxsaT4yMCBub3YgMjAwNjogPHN0cm9uZz52ZXJzaW9uIDQuMC4zLjE4PC9zdHJvbmc+ IDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9p ZD0xOTgyMyI+Y2hhbmdlbG9nPC9hPgoJCTxsaT5JRHMgJiM4MjE2O3plbUNvbnRhY3RGb3Jt JiM4MjE3OyBhbmQgJiM4MjE2O3plbVN1Ym1pdCYjODIxNzsgaGF2ZSBjaGFuZ2VkIHRvIGNs YXNzZXMgdG8gYWxsb3cgbXVsdGlwbGUgZm9ybXMgcGVyIHBhZ2U8L2xpPgoJPC91bD48L2xp PgoJPHVsPgoJCTxsaT5OZXcgbGFuZ3VhZ2Ugc3RyaW5nczogJiM4MjE2O2Zvcm1fdXNlZCYj ODIxNzssICYjODIxNjtpbnZhbGlkX3V0ZjgmIzgyMTc7LCAmIzgyMTY7bWF4X3dhcm5pbmcm IzgyMTc7LCAmIzgyMTY7bmFtZSYjODIxNzssICYjODIxNjtyZWZyZXNoJiM4MjE3OywgJiM4 MjE2O3NlY3JldCYjODIxNzs8L2xpPgoJPC91bD48L2xpPgoJCTxsaT4xMiBtYXIgMjAwNjog PHN0cm9uZz52ZXJzaW9uIDQuMC4zLjE3PC9zdHJvbmc+IDxhIGhyZWY9Imh0dHA6Ly9mb3J1 bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9pZD0xMzQxNiI+Y2hhbmdlbG9nPC9h PjwvbGk+CgkJPGxpPjExIGZlYiAyMDA2OiA8c3Ryb25nPnZlcnNpb24gLjE2PC9zdHJvbmc+ PC9saT4KCQk8bGk+MDYgZmViIDIwMDY6IDxzdHJvbmc+dmVyc2lvbiAuMTU8L3N0cm9uZz4K CQk8bGk+MDMgZmViIDIwMDY6IDxzdHJvbmc+dmVyc2lvbiAuMTQ8L3N0cm9uZz48L2xpPgoJ PHVsPgoJCTxsaT5SZXF1aXJlcyBzZXBhcmF0ZSB6ZW1fY29udGFjdF9sYW5nIHBsdWdpbjwv bGk+Cgk8L3VsPjwvbGk+CgkJPGxpPjI5IGphbiAyMDA2OiA8c3Ryb25nPnZlcnNpb24gLjEy PC9zdHJvbmc+PC9saT4KCQk8bGk+MjcgamFuIDIwMDY6IDxzdHJvbmc+dmVyc2lvbiAuMTE8 L3N0cm9uZz48L2xpPgoJCTxsaT4yMyBqYW4gMjAwNjogPHN0cm9uZz52ZXJzaW9uIC4wOSBh bmQgLjEwPC9zdHJvbmc+PC9saT4KCQk8bGk+MjMgamFuIDIwMDY6IDxzdHJvbmc+dmVyc2lv biAuMDg8L3N0cm9uZz48L2xpPgoJCTxsaT4xNyBqYW4gMjAwNjogPHN0cm9uZz52ZXJzaW9u IC4wNzwvc3Ryb25nPjwvbGk+CgkJPGxpPjE2IGphbiAyMDA2OiA8c3Ryb25nPnZlcnNpb24g LjA1IGFuZCAuMDY8L3N0cm9uZz48L2xpPgoJCTxsaT4xNSBqYW4gMjAwNjogPHN0cm9uZz52 ZXJzaW9uIC4wNDwvc3Ryb25nPjwvbGk+CgkJPGxpPjEwIGphbiAyMDA2OiA8c3Ryb25nPnZl cnNpb24gLjAzPC9zdHJvbmc+PC9saT4KCTwvdWw+Cgk8dWw+CgkJPGxpPjE5IGRlYyAyMDA1 OiA8c3Ryb25nPnZlcnNpb24gLjAyPC9zdHJvbmc+PC9saT4KCTwvdWw+CgoJPHA+PGEgaHJl Zj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCTxoMiBpZD0iY3JlZGl0cyI+Q3JlZGl0 czwvaDI+CgoJPHVsPgoJCTxsaT48c3Ryb25nPnplbTwvc3Ryb25nPiB3cm90ZSB0aGUgemVt X2NvbnRhY3QgMC42IHBsdWdpbiBvbiB3aGljaCB0aGlzIHBsdWdpbiB3YXMgaW5pdGlhbGx5 IGJhc2VkLjwvbGk+CgkJPGxpPjxzdHJvbmc+TWFyeTwvc3Ryb25nPiBjb21wbGV0ZWx5IHJl dmlzZWQgdGhlIHBsdWdpbiBjb2RlLjwvbGk+CgkJPGxpPjxzdHJvbmc+U3R1YXJ0PC9zdHJv bmc+IFR1cm5lZCBpdCBpbnRvIGEgcGx1Z2luLCBhZGRlZCBhIHJldmlzZWQgaGVscCB0ZXh0 IGFuZCBhZGRpdGlvbmFsIGNvZGUuIE1haW50YWluZWQgYWxsIHBsdWdpbiB2ZXJzaW9ucyB0 aWxsIDQuMC4zLjE3LjwvbGk+CgkJPGxpPjxzdHJvbmc+d2V0PC9zdHJvbmc+IGFkZGVkIHRo ZSB6ZW1fY29udGFjdF9yYWRpbyB0YWcuPC9saT4KCQk8bGk+PHN0cm9uZz5UcmFucXVpbGxv PC9zdHJvbmc+IGFkZGVkIHRoZSBhbnRpLXNwYW0gPHNwYW4gY2xhc3M9ImNhcHMiPjxzcGFu IGNsYXNzPSJjYXBzIj5BUEk8L3NwYW4+PC9zcGFuPiBhbmQgemVtX2NvbnRhY3Rfc2VuZF9h cnRpY2xlIGZ1bmN0aW9uYWxpdHkuPC9saT4KCQk8bGk+PHN0cm9uZz5hc2xzdzY2PC9zdHJv bmc+LCA8c3Ryb25nPmpkeWthc3Q8L3N0cm9uZz4gYW5kIG90aGVycyAoPykgcHJvdmlkZWQg YWRkaXRpb25hbCBjb2RlPC9saT4KCQk8bGk+PHN0cm9uZz5SdXVkPC9zdHJvbmc+IGNsZWFu ZWQgdXAgYW5kIGF1ZGl0ZWQgdGhlIGNvZGUgdG8gd2VlZCBvdXQgYnVncyBhbmQgY29tcGxl dGVseSByZXZpc2VkIHRoZSBoZWxwIHRleHQuIE1haW50YWluZXIgb2YgdmVyc2lvbnMgNC4w LjMuMTggYW5kIHVwLjwvbGk+Cgk8L3VsPgoJPHVsPgoJCTxsaT5TdXBwb3J0ZWQgYW5kIHRl c3RlZCB0byBkZXN0cnVjdGlvbiBieSB0aGUgVGV4dHBhdHRlcm4gY29tbXVuaXR5LjwvbGk+ Cgk8L3VsPgoKCTxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgk8aDIg aWQ9ImFwaSI+WmVtIENvbnRhY3QgUmVib3JuJiM4MjE3O3MgPHNwYW4gY2xhc3M9ImNhcHMi PkFQSTwvc3Bhbj48L2gyPgoKCTxwPlRoZSBwbHVnaW4gPHNwYW4gY2xhc3M9ImNhcHMiPkFQ STwvc3Bhbj4gb2YgemVtIGNvbnRhY3QsIGRldmVsb3BlZCBieSBUcmFucXVpbGxvLCBpcyBz aW1pbGFyIHRvIHRoZSBjb21tZW50cyA8c3BhbiBjbGFzcz0iY2FwcyI+QVBJPC9zcGFuPiBv ZiBUZXh0cGF0dGVybiwgd2hpY2ggaXMgZXhwbGFpbmVkIGluIHRoZSBUZXh0Ym9vayA8YSBo cmVmPSJodHRwOi8vdGV4dHBhdHRlcm4ubmV0L3dpa2kvaW5kZXgucGhwP3RpdGxlPVBsdWdp bl9EZXZlbG9wbWVudF9Ub3BpY3MiPlBsdWdpbiBEZXZlbG9wbWVudCBUb3BpY3M8L2E+IGFu ZCA8YSBocmVmPSJodHRwOi8vdGV4dHBhdHRlcm4ubmV0L3dpa2kvaW5kZXgucGhwP3RpdGxl PUNvbWJhdF9Db21tZW50X1NwYW0iPkNvbWJhdCBDb21tZW50IFNwYW08L2E+LjwvcD4KCgk8 cD5Ud28gY2FsbGJhY2sgZXZlbnRzIGV4aXN0IGluIHplbV9jb250YWN0X3JlYm9ybjoKCTx1 bD4KCQk8bGk+PGNvZGU+emVtY29udGFjdC5zdWJtaXQ8L2NvZGU+IGlzIGNhbGxlZCBhZnRl ciB0aGUgZm9ybSBpcyBzdWJtaXR0ZWQgYW5kIHRoZSB2YWx1ZXMgYXJlIGNoZWNrZWQgaWYg ZW1wdHkgb3IgdmFsaWQgZW1haWwgYWRkcmVzc2VzLCBidXQgYmVmb3JlIHRoZSBtYWlsIGlz IHNlbnQuPC9saT4KCTwvdWw+Cgk8dWw+CgkJPGxpPjxjb2RlPnplbWNvbnRhY3QuZm9ybTwv Y29kZT4gbGV0JiM4MjE3O3MgeW91IGluc2VydCBjb250ZW50IGluIHRoZSBjb250YWN0IGZv cm0gYXMgZGlzcGxheWVkIHRvIHRoZSB2aXNpdG9yLjwvbGk+Cgk8L3VsPjwvcD4KCgk8cD5G b3IgcmVmZXJlbmNlIGhlcmUgYXJlIHRoZSBjb21tYW5kcyB0aGF0IHdpbGwgYmUgaW50ZXJl c3RpbmcgdG8gcGx1Z2luIGRldmVsb3BlcnM6PC9wPgoKPHByZT48Y29kZT4vLyBUaGlzIHdp bGwgY2FsbCB5b3VyIGZ1bmN0aW9uIGJlZm9yZSB0aGUgZm9ybSBpcyBzdWJtaXR0ZWQKLy8g U28geW91IGNhbiBhbmFseXNlIHRoZSBzdWJtaXR0ZWQgZGF0YQpyZWdpc3Rlcl9jYWxsYmFj aygmIzM5O2FiY19teWZ1bmN0aW9uJiMzOTssJiMzOTt6ZW1jb250YWN0LnN1Ym1pdCYjMzk7 KTsKPC9jb2RlPgo8Y29kZT4vLyBUaGlzIHdpbGwgY2FsbCB5b3VyIGZ1bmN0aW9uIGFuZCBh ZGQgdGhlIG91dHB1dCAodXNlIHJldHVybiAkbXlzdHVmZikKLy8gdG8gdGhlIGNvbnRhY3Qt Zm9ybS4KcmVnaXN0ZXJfY2FsbGJhY2soJiMzOTthYmNfbXlvdGhlcmZ1bmN0aW9uMiYjMzk7 LCYjMzk7emVtY29udGFjdC5mb3JtJiMzOTspOwo8L2NvZGU+Cjxjb2RlPi8vIFRvIGdldCBo b2xkIG9mIHRoZSBmb3JtLXZhcmlhYmxlcyB5b3UgY2FuIHVzZQpnbG9iYWwgemVtX2NvbnRh Y3RfZm9ybTsKPC9jb2RlPgo8Y29kZT4vLyBXaXRoIHRoZSBmb2xsb3dpbmcgdHdvIGxpbmVz IHlvdSBjYW4gdGVsbCB6ZW1fY29udGFjdCBpZiB5b3VyCi8vIHBsdWdpbiBmb3VuZCBzcGFt CiRldmFsdWF0b3IgPSYjMzg7IGdldF96ZW1jb250YWN0X2V2YWx1YXRvcigpOwo8L2NvZGU+ Cjxjb2RlPi8vIFRoZSBwYXNzZWQgdmFsdWUgbXVzdCBiZSBub24temVybyB0byBtYXJrIHRo ZSBjb250ZW50IGFzIHNwYW0uCi8vIFZhbHVlIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiAw IGFuZCAxLgokZXZhbHVhdG9yIC0mIzYyOyBhZGRfemVtY29udGFjdF9zdGF0dXMoMSk7Cjwv Y29kZT48L3ByZT4KCgk8cD5NdWx0aXBsZSBwbHVnaW5zIGNhbiBiZSBhY3RpdmUgYXQgdGhl IHNhbWUgdGltZSBhbmQgZWFjaCBvZiB0aGVtIGNhbiBtYXJrIHRoZSBzdWJtaXR0ZWQgY29u dGVudCBhcyBzcGFtIGFuZCBwcmV2ZW50IHRoZSBmb3JtIGZyb20gYmVpbmcgc3VibWl0dGVk LjwvcD4KCgk8cD48c3Ryb25nPkFuIGV4YW1wbGUgb2YgYSBwbHVnLWluIGNvbm5lY3Rpbmcg dG8gWmVtIENvbnRhY3QgUmVib3JuJiM4MjE3O3MgQVBJOjwvc3Ryb25nPjwvcD4KCjxwcmU+ PGNvZGU+cmVnaXN0ZXJfY2FsbGJhY2soJiMzOTtwYXBfemVtY29udGFjdF9mb3JtJiMzOTss JiMzOTt6ZW1jb250YWN0LmZvcm0mIzM5Oyk7CnJlZ2lzdGVyX2NhbGxiYWNrKCYjMzk7cGFw X3plbWNvbnRhY3Rfc3VibWl0JiMzOTssJiMzOTt6ZW1jb250YWN0LnN1Ym1pdCYjMzk7KTsK PC9jb2RlPgo8Y29kZT5mdW5jdGlvbiBwYXBfemVtY29udGFjdF9mb3JtKCkgewogICRmaWVs ZCA9ICYjMzk7JiM2MDtkaXYgc3R5bGU9JiMzNDtkaXNwbGF5Om5vbmUmIzM0OyYjNjI7JiMz OTsuCiAgICBmaW5wdXQoJiMzOTt0ZXh0JiMzOTssJiMzOTtwaG9uZSYjMzk7LHBzKCYjMzk7 cGhvbmUmIzM5OyksJiMzOTsmIzM5OywmIzM5OyYjMzk7LCYjMzk7JiMzOTssJiMzOTsmIzM5 OywmIzM5OyYjMzk7LCYjMzk7cGhvbmUmIzM5OykuJiMzOTsmIzYwO2JyIC8mIzYyOyYjMzk7 LgogICAgZmlucHV0KCYjMzk7dGV4dCYjMzk7LCYjMzk7bWFpbCYjMzk7LHBzKCYjMzk7bWFp bCYjMzk7KSwmIzM5OyYjMzk7LCYjMzk7JiMzOTssJiMzOTsmIzM5OywmIzM5OyYjMzk7LCYj Mzk7JiMzOTssJiMzOTttYWlsJiMzOTspLiYjMzk7JiM2MDsvZGl2JiM2MjsmIzM5OzsKICBy ZXR1cm4gJGZpZWxkOyYjNjA7L2NvZGUmIzYyOwp9CjwvY29kZT4KPGNvZGU+ZnVuY3Rpb24g cGFwX3plbWNvbnRhY3Rfc3VibWl0KCkgewogICRjaGVja2luZ19tYWlsX2ZpZWxkID0gdHJp bShwcygmIzM5O21haWwmIzM5OykpOwogICRjaGVja2luZ19waG9uZV9maWVsZCA9IHRyaW0o cHMoJiMzOTtwaG9uZSYjMzk7KSk7CjwvY29kZT4KPGNvZGU+ICAkZXZhbHVhdGlvbiA9JiMz ODsgZ2V0X3plbWNvbnRhY3RfZXZhbHVhdG9yKCk7CjwvY29kZT4KPGNvZGU+ICAvLyBJZiB0 aGUgaGlkZGVuIGZpZWxkcyBhcmUgZmlsbGVkIG91dCwgdGhlIGNvbnRhY3QgZm9ybSB3b24m IzM5O3QgYmUgc3VibWl0dGVkIQogIGlmICgkY2hlY2tpbmdfbWFpbF9maWVsZCAhPSAmIzM5 OyYjMzk7IG9yICRjaGVja2luZ19waG9uZV9maWVsZCAhPSAmIzM5OyYjMzk7KSB7CiAgICAk ZXZhbHVhdGlvbiAtJiM2MjsgYWRkX3plbWNvbnRhY3Rfc3RhdHVzKDEpOwogIH0KICByZXR1 cm47Cn0KPC9jb2RlPjwvcHJlPgoKCTxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9h PjwvcD4iO3M6NDoiY29kZSI7czoyMDgzNDoiCmZ1bmN0aW9uIHplbV9jb250YWN0KCRhdHRz LCAkdGhpbmcgPSAnJykKewoJZ2xvYmFsICRzaXRlbmFtZSwgJHByZWZzLCAkcHJvZHVjdGlv bl9zdGF0dXMsICR6ZW1fY29udGFjdF9mcm9tLAoJCSR6ZW1fY29udGFjdF9yZWNpcGllbnQs ICR6ZW1fY29udGFjdF9lcnJvciwgJHplbV9jb250YWN0X3N1Ym1pdCwKCQkkemVtX2NvbnRh Y3RfZm9ybSwgJHplbV9jb250YWN0X2xhYmVscywgJHplbV9jb250YWN0X3ZhbHVlczsKCgll eHRyYWN0KHplbV9jb250YWN0X2xBdHRzKGFycmF5KAoJCSdjb3B5c2VuZGVyJwk9PiAwLAoJ CSdmb3JtJwkJPT4gJycsCgkJJ2Zyb20nCQk9PiAnJywKCQknZnJvbV9mb3JtJwk9PiAnJywK CQknbGFiZWwnCQk9PiB6ZW1fY29udGFjdF9nVHh0KCdjb250YWN0JyksCgkJJ3JlZGlyZWN0 Jwk9PiAnJywKCQknc2hvd19lcnJvcicJPT4gMSwKCQknc2hvd19pbnB1dCcJPT4gMSwKCQkn c2VuZF9hcnRpY2xlJwk9PiAwLAoJCSdzdWJqZWN0Jwk9PiB6ZW1fY29udGFjdF9nVHh0KCdl bWFpbF9zdWJqZWN0JywgaHRtbF9lbnRpdHlfZGVjb2RlKCRzaXRlbmFtZSxFTlRfUVVPVEVT KSksCgkJJ3N1YmplY3RfZm9ybScJPT4gJycsCgkJJ3RvJwkJPT4gJycsCgkJJ3RvX2Zvcm0n CT0+ICcnLAoJCSd0aGFua3MnCT0+IGdyYWYoemVtX2NvbnRhY3RfZ1R4dCgnZW1haWxfdGhh bmtzJykpLAoJCSd0aGFua3NfZm9ybScJPT4gJycKCSksICRhdHRzKSk7CgoJdW5zZXQoJGF0 dHNbJ3Nob3dfZXJyb3InXSwgJGF0dHNbJ3Nob3dfaW5wdXQnXSk7CgkkemVtX2NvbnRhY3Rf Zm9ybV9pZCA9IG1kNShzZXJpYWxpemUoJGF0dHMpLnByZWdfcmVwbGFjZSgnL1tcdFxzXHJc bl0vJywnJywkdGhpbmcpKTsKCSR6ZW1fY29udGFjdF9zdWJtaXQgPSAocHMoJ3plbV9jb250 YWN0X2Zvcm1faWQnKSA9PSAkemVtX2NvbnRhY3RfZm9ybV9pZCk7CgoJaWYgKCFpc19jYWxs YWJsZSgnbWFpbCcpKQoJewoJCXJldHVybiAoJHByb2R1Y3Rpb25fc3RhdHVzID09ICdsaXZl JykgPwoJCQl6ZW1fY29udGFjdF9nVHh0KCdtYWlsX3NvcnJ5JykgOgoJCQlnVHh0KCd3YXJu X21haWxfdW5hdmFpbGFibGUnKTsKCX0KCglzdGF0aWMgJGhlYWRlcnNfc2VudCA9IGZhbHNl OwoJaWYgKCEkaGVhZGVyc19zZW50KSB7CgkJaGVhZGVyKCdMYXN0LU1vZGlmaWVkOiAnLmdt ZGF0ZSgnRCwgZCBNIFkgSDppOnMnLHRpbWUoKS0zNjAwKjI0KjcpLicgR01UJyk7CgkJaGVh ZGVyKCdFeHBpcmVzOiAnLmdtZGF0ZSgnRCwgZCBNIFkgSDppOnMnLHRpbWUoKSs2MDApLicg R01UJyk7CgkJaGVhZGVyKCdDYWNoZS1Db250cm9sOiBuby1jYWNoZSwgbXVzdC1yZXZhbGlk YXRlJyk7CgkJJGhlYWRlcnNfc2VudCA9IHRydWU7Cgl9CgoJJG5vbmNlICAgPSBteXNxbF9y ZWFsX2VzY2FwZV9zdHJpbmcocHMoJ3plbV9jb250YWN0X25vbmNlJykpOwoJJHJlbm9uY2Ug PSBmYWxzZTsKCglpZiAoJHplbV9jb250YWN0X3N1Ym1pdCkKCXsKCQlzYWZlX2RlbGV0ZSgn dHhwX2Rpc2N1c3Nfbm9uY2UnLCAnaXNzdWVfdGltZSA8IGRhdGVfc3ViKG5vdygpLCBpbnRl cnZhbCAxMCBtaW51dGUpJyk7CgkJaWYgKCRycyA9IHNhZmVfcm93KCd1c2VkJywgJ3R4cF9k aXNjdXNzX25vbmNlJywgIm5vbmNlID0gJyRub25jZSciKSkKCQl7CgkJCWlmICgkcnNbJ3Vz ZWQnXSkKCQkJewoJCQkJdW5zZXQoJHplbV9jb250YWN0X2Vycm9yKTsKCQkJCSR6ZW1fY29u dGFjdF9lcnJvcltdID0gemVtX2NvbnRhY3RfZ1R4dCgnZm9ybV91c2VkJyk7CgkJCQkkcmVu b25jZSA9IHRydWU7CgkJCQkkX1BPU1QgPSBhcnJheSgpOwoJCQkJJF9QT1NUWyd6ZW1fY29u dGFjdF9zdWJtaXQnXSA9IFRSVUU7CgkJCQkkX1BPU1RbJ3plbV9jb250YWN0X2Zvcm1faWQn XSA9ICR6ZW1fY29udGFjdF9mb3JtX2lkOwoJCQkJJF9QT1NUWyd6ZW1fY29udGFjdF9ub25j ZSddID0gJG5vbmNlOwoJCQl9CgkJfQoJCWVsc2UKCQl7CgkJCSR6ZW1fY29udGFjdF9lcnJv cltdID0gemVtX2NvbnRhY3RfZ1R4dCgnZm9ybV9leHBpcmVkJyk7CgkJCSRyZW5vbmNlID0g dHJ1ZTsKCQl9Cgl9CgoJaWYgKCR6ZW1fY29udGFjdF9zdWJtaXQgYW5kICRub25jZSBhbmQg ISRyZW5vbmNlKQoJewoJCSR6ZW1fY29udGFjdF9ub25jZSA9ICRub25jZTsKCX0KCgllbHNl aWYgKCEkc2hvd19lcnJvciBvciAkc2hvd19pbnB1dCkKCXsKCQkkemVtX2NvbnRhY3Rfbm9u Y2UgPSBtZDUodW5pcWlkKHJhbmQoKSwgdHJ1ZSkpOwoJCXNhZmVfaW5zZXJ0KCd0eHBfZGlz Y3Vzc19ub25jZScsICJpc3N1ZV90aW1lID0gbm93KCksIG5vbmNlID0gJyR6ZW1fY29udGFj dF9ub25jZSciKTsKCX0KCgkkZm9ybSA9ICgkZm9ybSkgPyBmZXRjaF9mb3JtKCRmb3JtKSA6 ICR0aGluZzsKCglpZiAoZW1wdHkoJGZvcm0pKQoJewoJCSRmb3JtID0gJwo8dHhwOnplbV9j b250YWN0X3RleHQgbGFiZWw9IicuemVtX2NvbnRhY3RfZ1R4dCgnbmFtZScpLiciIC8+PGJy IC8+Cjx0eHA6emVtX2NvbnRhY3RfZW1haWwgLz48YnIgLz4nLgooJHNlbmRfYXJ0aWNsZSA/ ICc8dHhwOnplbV9jb250YWN0X2VtYWlsIHNlbmRfYXJ0aWNsZT0iMSIgbGFiZWw9IicuemVt X2NvbnRhY3RfZ1R4dCgncmVjaXBpZW50JykuJyIgLz48YnIgLz4nIDogJycpLgonPHR4cDp6 ZW1fY29udGFjdF90ZXh0YXJlYSAvPjxiciAvPgo8dHhwOnplbV9jb250YWN0X3N1Ym1pdCAv PgonOwoJfQoKCSRmb3JtID0gcGFyc2UoJGZvcm0pOwoKCWlmICgkdG9fZm9ybSkKCXsKCQkk dG8gPSBwYXJzZShmZXRjaF9mb3JtKCR0b19mb3JtKSk7Cgl9CgoJaWYgKCEkdG8gYW5kICEk c2VuZF9hcnRpY2xlKQoJewoJCXJldHVybiB6ZW1fY29udGFjdF9nVHh0KCd0b19taXNzaW5n Jyk7Cgl9CgoJJG91dCA9ICcnOwoKCWlmICghJHplbV9jb250YWN0X3N1Ym1pdCkgewoJICAj IGRvbid0IHNob3cgZXJyb3JzIG9yIHNlbmQgbWFpbAoJfQoKCWVsc2VpZiAoIWVtcHR5KCR6 ZW1fY29udGFjdF9lcnJvcikpCgl7CgkJaWYgKCRzaG93X2Vycm9yIG9yICEkc2hvd19pbnB1 dCkKCQl7CgkJCSRvdXQgLj0gbi4nPHVsIGNsYXNzPSJ6ZW1FcnJvciI+JzsKCgkJCWZvcmVh Y2ggKGFycmF5X3VuaXF1ZSgkemVtX2NvbnRhY3RfZXJyb3IpIGFzICRlcnJvcikKCQkJewoJ CQkJJG91dCAuPSBuLnQuJzxsaT4nLiRlcnJvci4nPC9saT4nOwoJCQl9CgoJCQkkb3V0IC49 IG4uJzwvdWw+JzsKCgkJCWlmICghJHNob3dfaW5wdXQpIHJldHVybiAkb3V0OwoJCX0KCX0K CgllbHNlaWYgKCRzaG93X2lucHV0IGFuZCBpc19hcnJheSgkemVtX2NvbnRhY3RfZm9ybSkp Cgl7CgkJLy8vIGxvYWQgYW5kIGNoZWNrIHNwYW0gcGx1Z2lucy8KCQljYWxsYmFja19ldmVu dCgnemVtY29udGFjdC5zdWJtaXQnKTsKCQkkZXZhbHVhdGlvbiA9JiBnZXRfemVtY29udGFj dF9ldmFsdWF0b3IoKTsKCQkkY2xlYW4gPSAkZXZhbHVhdGlvbi0+Z2V0X3plbWNvbnRhY3Rf c3RhdHVzKCk7CgkJaWYgKCRjbGVhbiAhPSAwKSB7CgkJCXJldHVybiB6ZW1fY29udGFjdF9n VHh0KCdzcGFtJyk7CgkJfQoKCQlpZiAoJGZyb21fZm9ybSkKCQl7CgkJCSRmcm9tID0gcGFy c2UoZmV0Y2hfZm9ybSgkZnJvbV9mb3JtKSk7CgkJfQoKCQlpZiAoJHN1YmplY3RfZm9ybSkK CQl7CgkJCSRzdWJqZWN0ID0gcGFyc2UoZmV0Y2hfZm9ybSgkc3ViamVjdF9mb3JtKSk7CgkJ fQoKCQkkc2VwID0gIWlzX3dpbmRvd3MoKSA/ICJcbiIgOiAiXHJcbiI7CgoJCSRtc2cgPSBh cnJheSgpOwoKCQlmb3JlYWNoICgkemVtX2NvbnRhY3RfbGFiZWxzIGFzICRuYW1lID0+ICRs YWJlbCkKCQl7CgkJCWlmICghdHJpbSgkemVtX2NvbnRhY3RfdmFsdWVzWyRuYW1lXSkpIGNv bnRpbnVlOwoJCQkkbXNnW10gPSAkbGFiZWwuJzogJy4kemVtX2NvbnRhY3RfdmFsdWVzWyRu YW1lXTsKCQl9CgoJCWlmICgkc2VuZF9hcnRpY2xlKQoJCXsKCQkJZ2xvYmFsICR0aGlzYXJ0 aWNsZTsKCQkJJHN1YmplY3QgPSBzdHJfcmVwbGFjZSgnJiMzODsnLCAnJicsICR0aGlzYXJ0 aWNsZVsndGl0bGUnXSk7CgkJCSRtc2dbXSA9IHBlcm1saW5rdXJsKCR0aGlzYXJ0aWNsZSk7 CgkJCSRtc2dbXSA9ICRzdWJqZWN0OwoJCQkkc19hciA9IGFycmF5KCcmIzgyMTY7JywgJyYj ODIxNzsnLCAnJiM4MjIwOycsICcmIzgyMjE7JywgJyYjODIxNzsnLCAnJiM4MjQyOycsICcm IzgyNDM7JywgJyYjODIzMDsnLCAnJiM4MjExOycsICcmIzgyMTI7JywgJyYjMjE1OycsICcm Izg0ODI7JywgJyYjMTc0OycsICcmIzE2OTsnLCAnJmx0OycsICcmZ3Q7JywgJyZxdW90Oycs ICcmYW1wOycsICcmIzM4OycsICJcdCIsICc8cCcpOwoJCQlpZiAoJHByZWZzWydvdmVycmlk ZV9lbWFpbGNoYXJzZXQnXSBhbmQgaXNfY2FsbGFibGUoJ3V0ZjhfZGVjb2RlJykpIHsKCQkJ CSRyX2FyID0gYXJyYXkoIiciLCAiJyIsICciJywgJyInLCAiJyIsICInIiwgJyInLCAnLi4u JywgJy0nLCAnLS0nLCAneCcsICdbdG1dJywgJyhyKScsICcoYyknLCAnPCcsICc+JywgJyIn LCAnJicsICcmJywgJyAnLCAiXG48cCIpOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJHJfYXIg PSBhcnJheSgn4oCYJywgJ+KAmScsICfigJwnLCAn4oCdJywgJ+KAmScsICfigLInLCAn4oCz JywgJ+KApicsICfigJMnLCAn4oCUJywgJ8OXJywgJ+KEoicsICfCricsICfCqScsICc8Jywg Jz4nLCAnIicsICcmJywgJyYnLCAnICcsICJcbjxwIik7CgkJCX0KCQkJJG1zZ1tdID0gdHJp bShzdHJpcF90YWdzKHN0cl9yZXBsYWNlKCRzX2FyLCRyX2FyLCh0cmltKHN0cmlwX3RhZ3Mo JHRoaXNhcnRpY2xlWydleGNlcnB0J10pKSA/ICR0aGlzYXJ0aWNsZVsnZXhjZXJwdCddIDog JHRoaXNhcnRpY2xlWydib2R5J10pKSkpOwoJCQlpZiAoZW1wdHkoJHplbV9jb250YWN0X3Jl Y2lwaWVudCkpCgkJCXsKCQkJCXJldHVybiB6ZW1fY29udGFjdF9nVHh0KCdmaWVsZF9taXNz aW5nJywgemVtX2NvbnRhY3RfZ1R4dCgncmVjaXBpZW50JykpOwoJCQl9CgkJCWVsc2UKCQkJ ewoJCQkJJHRvID0gJHplbV9jb250YWN0X3JlY2lwaWVudDsKCQkJfQoJCX0KCgkJJG1zZyA9 IGpvaW4oIlxuXG4iLCAkbXNnKTsKCQkkbXNnID0gc3RyX3JlcGxhY2UoIlxyXG4iLCAiXG4i LCAkbXNnKTsKCQkkbXNnID0gc3RyX3JlcGxhY2UoIlxyIiwgIlxuIiwgJG1zZyk7CgkJJG1z ZyA9IHN0cl9yZXBsYWNlKCJcbiIsICRzZXAsICRtc2cpOwoKCQlpZiAoJGZyb20pCgkJewoJ CQkkcmVwbHkgPSAkemVtX2NvbnRhY3RfZnJvbTsKCQl9CgoJCWVsc2UKCQl7CgkJCSRmcm9t ID0gJHplbV9jb250YWN0X2Zyb207CgkJCSRyZXBseSA9ICcnOwoJCX0KCgkJJGZyb20gICAg PSB6ZW1fY29udGFjdF9zdHJpcCgkZnJvbSk7CgkJJHRvICAgICAgPSB6ZW1fY29udGFjdF9z dHJpcCgkdG8pOwoJCSRzdWJqZWN0ID0gemVtX2NvbnRhY3Rfc3RyaXAoJHN1YmplY3QpOwoJ CSRyZXBseSAgID0gemVtX2NvbnRhY3Rfc3RyaXAoJHJlcGx5KTsKCQkkbXNnICAgICA9IHpl bV9jb250YWN0X3N0cmlwKCRtc2csIEZBTFNFKTsKCgkJaWYgKCRwcmVmc1snb3ZlcnJpZGVf ZW1haWxjaGFyc2V0J10gYW5kIGlzX2NhbGxhYmxlKCd1dGY4X2RlY29kZScpKQoJCXsKCQkJ JGNoYXJzZXQgPSAnSVNPLTg4NTktMSc7CgkJCSRzdWJqZWN0ID0gdXRmOF9kZWNvZGUoJHN1 YmplY3QpOwoJCQkkbXNnICAgICA9IHV0ZjhfZGVjb2RlKCRtc2cpOwoJCX0KCgkJZWxzZQoJ CXsKCQkJJGNoYXJzZXQgPSAnVVRGLTgnOwoJCX0KCgkJJHN1YmplY3QgPSB6ZW1fY29udGFj dF9tYWlsaGVhZGVyKCRzdWJqZWN0LCAndGV4dCcpOwoKCQkkaGVhZGVycyA9ICdGcm9tOiAn LiRmcm9tLgoJCQkoJHJlcGx5ID8gKCRzZXAuJ1JlcGx5LVRvOiAnLiRyZXBseSkgOiAnJyku CgkJCSRzZXAuJ1gtTWFpbGVyOiBUZXh0cGF0dGVybiAoemVtX2NvbnRhY3RfcmVib3JuKScu CgkJCSRzZXAuJ1gtT3JpZ2luYXRpbmctSVA6ICcuemVtX2NvbnRhY3Rfc3RyaXAoKCFlbXB0 eSgkX1NFUlZFUlsnSFRUUF9YX0ZPUldBUkRFRF9GT1InXSkgPyAkX1NFUlZFUlsnSFRUUF9Y X0ZPUldBUkRFRF9GT1InXS4nIHZpYSAnIDogJycpLiRfU0VSVkVSWydSRU1PVEVfQUREUidd KS4KCQkJJHNlcC4nQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdCcuCgkJCSRzZXAu J0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0iJy4kY2hhcnNldC4nIic7CgoJ CXNhZmVfdXBkYXRlKCd0eHBfZGlzY3Vzc19ub25jZScsICJ1c2VkID0gJzEnLCBpc3N1ZV90 aW1lID0gbm93KCkiLCAibm9uY2UgPSAnJG5vbmNlJyIpOwoKCQlpZiAobWFpbCgkdG8sICRz dWJqZWN0LCAkbXNnLCAkaGVhZGVycykpCgkJewoJCQkkX1BPU1QgPSBhcnJheSgpOwoKCQkJ aWYgKCRjb3B5c2VuZGVyIGFuZCAkemVtX2NvbnRhY3RfZnJvbSkKCQkJewoJCQkJbWFpbCh6 ZW1fY29udGFjdF9zdHJpcCgkemVtX2NvbnRhY3RfZnJvbSksICRzdWJqZWN0LCAkbXNnLCAk aGVhZGVycyk7CgkJCX0KCgkJCWlmICgkcmVkaXJlY3QpCgkJCXsKCQkJCXdoaWxlIChAb2Jf ZW5kX2NsZWFuKCkpOwoJCQkJJHVyaSA9IGh1Lmx0cmltKCRyZWRpcmVjdCwnLycpOwoJCQkJ aWYgKGVtcHR5KCRfU0VSVkVSWydGQ0dJX1JPTEUnXSkgYW5kIGVtcHR5KCRfRU5WWydGQ0dJ X1JPTEUnXSkpCgkJCQl7CgkJCQkJdHhwX3N0YXR1c19oZWFkZXIoJzMwMyBTZWUgT3RoZXIn KTsKCQkJCQloZWFkZXIoJ0xvY2F0aW9uOiAnLiR1cmkpOwoJCQkJCWhlYWRlcignQ29ubmVj dGlvbjogY2xvc2UnKTsKCQkJCQloZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoOiAwJyk7CgkJCQl9 CgkJCQllbHNlCgkJCQl7CgkJCQkJJHVyaSA9IGh0bWxzcGVjaWFsY2hhcnMoJHVyaSk7CgkJ CQkJJHJlZnJlc2ggPSB6ZW1fY29udGFjdF9nVHh0KCdyZWZyZXNoJyk7CgkJCQkJZWNobyA8 PDxFTkQKPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJh bnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwx LXRyYW5zaXRpb25hbC5kdGQiPgo8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5 OS94aHRtbCIgeG1sOmxhbmc9ImVuIiBsYW5nPSJlbiI+CjxoZWFkPgoJPHRpdGxlPiRzaXRl bmFtZTwvdGl0bGU+Cgk8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9 InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLz4KCTxtZXRhIGh0dHAtZXF1aXY9InJlZnJl c2giIGNvbnRlbnQ9IjA7dXJsPSR1cmkiIC8+CjwvaGVhZD4KPGJvZHk+CjxhIGhyZWY9IiR1 cmkiPiRyZWZyZXNoPC9hPgo8L2JvZHk+CjwvaHRtbD4KRU5EOwoJCQkJfQoJCQkJZXhpdDsK CQkJfQoKCQkJZWxzZQoJCQl7CgkJCQlyZXR1cm4gJzxkaXYgY2xhc3M9InplbVRoYW5rcyIg aWQ9InpjcicuJHplbV9jb250YWN0X2Zvcm1faWQuJyI+JyAuCgkJCQkJKCR0aGFua3NfZm9y bSA/IGZldGNoX2Zvcm0oJHRoYW5rc19mb3JtKSA6ICR0aGFua3MpIC4KCQkJCQknPC9kaXY+ JzsKCQkJfQoJCX0KCgkJZWxzZQoJCXsKCQkJJG91dCAuPSBncmFmKHplbV9jb250YWN0X2dU eHQoJ21haWxfc29ycnknKSk7CgkJfQoJfQoKCWlmICgkc2hvd19pbnB1dCBhbmQgISRzZW5k X2FydGljbGUgb3IgZ3BzKCd6ZW1fY29udGFjdF9zZW5kX2FydGljbGUnKSkKCXsKCQlyZXR1 cm4gJzxmb3JtIG1ldGhvZD0icG9zdCInLigoISRzaG93X2Vycm9yIGFuZCAkemVtX2NvbnRh Y3RfZXJyb3IpID8gJycgOiAnIGlkPSJ6Y3InLiR6ZW1fY29udGFjdF9mb3JtX2lkLiciJyku JyBjbGFzcz0iemVtQ29udGFjdEZvcm0iIGFjdGlvbj0iJy5odG1sc3BlY2lhbGNoYXJzKHNl cnZlclNldCgnUkVRVUVTVF9VUkknKSkuJyN6Y3InLiR6ZW1fY29udGFjdF9mb3JtX2lkLici PicuCgkJCSggJGxhYmVsID8gbi4nPGZpZWxkc2V0PicgOiBuLic8ZGl2PicgKS4KCQkJKCAk bGFiZWwgPyBuLic8bGVnZW5kPicuaHRtbHNwZWNpYWxjaGFycygkbGFiZWwpLic8L2xlZ2Vu ZD4nIDogJycgKS4KCQkJJG91dC4KCQkJbi4nPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0i emVtX2NvbnRhY3Rfbm9uY2UiIHZhbHVlPSInLiR6ZW1fY29udGFjdF9ub25jZS4nIiAvPicu CgkJCW4uJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InplbV9jb250YWN0X2Zvcm1faWQi IHZhbHVlPSInLiR6ZW1fY29udGFjdF9mb3JtX2lkLiciIC8+Jy4KCQkJJGZvcm0uCgkJCWNh bGxiYWNrX2V2ZW50KCd6ZW1jb250YWN0LmZvcm0nKS4KCQkJKCAkbGFiZWwgPyAobi4nPC9m aWVsZHNldD4nKSA6IChuLic8L2Rpdj4nKSApLgoJCQluLic8L2Zvcm0+JzsKCX0KCglyZXR1 cm4gJyc7Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0X3N0cmlwKCRzdHIsICRoZWFkZXIgPSBU UlVFKSB7CglpZiAoJGhlYWRlcikgJHN0ciA9IHN0cmlwX3JuKCRzdHIpOwoJcmV0dXJuIHBy ZWdfcmVwbGFjZSgnL1tceDAwXS8nLCAnICcsICRzdHIpOwp9CgpmdW5jdGlvbiB6ZW1fY29u dGFjdF90ZXh0KCRhdHRzKQp7CglnbG9iYWwgJHplbV9jb250YWN0X2Vycm9yLCAkemVtX2Nv bnRhY3Rfc3VibWl0OwoKCWV4dHJhY3QoemVtX2NvbnRhY3RfbEF0dHMoYXJyYXkoCgkJJ2Jy ZWFrJwkJPT4gYnIsCgkJJ2RlZmF1bHQnCT0+ICcnLAoJCSdpc0Vycm9yJwk9PiAnJywKCQkn bGFiZWwnCQk9PiB6ZW1fY29udGFjdF9nVHh0KCd0ZXh0JyksCgkJJ21heCcJCT0+IDEwMCwK CQknbWluJwkJPT4gMCwKCQknbmFtZScJCT0+ICcnLAoJCSdyZXF1aXJlZCcJPT4gMSwKCQkn c2l6ZScJCT0+ICcnCgkpLCAkYXR0cykpOwoKCSRtaW4gPSBpbnR2YWwoJG1pbik7CgkkbWF4 ID0gaW50dmFsKCRtYXgpOwoJJHNpemUgPSBpbnR2YWwoJHNpemUpOwoKCWlmIChlbXB0eSgk bmFtZSkpICRuYW1lID0gemVtX2NvbnRhY3RfbGFiZWwybmFtZSgkbGFiZWwpOwoKCWlmICgk emVtX2NvbnRhY3Rfc3VibWl0KQoJewoJCSR2YWx1ZSA9IHRyaW0ocHMoJG5hbWUpKTsKCQkk dXRmOGxlbiA9IHByZWdfbWF0Y2hfYWxsKCIvLi9zdSIsICR2YWx1ZSwgJHV0Zjhhcik7CgkJ JGhsYWJlbCA9IGh0bWxzcGVjaWFsY2hhcnMoJGxhYmVsKTsKCgkJaWYgKHN0cmxlbigkdmFs dWUpKQoJCXsKCQkJaWYgKCEkdXRmOGxlbikKCQkJewoJCQkJJHplbV9jb250YWN0X2Vycm9y W10gPSB6ZW1fY29udGFjdF9nVHh0KCdpbnZhbGlkX3V0ZjgnLCAkaGxhYmVsKTsKCQkJCSRp c0Vycm9yID0gImVycm9yRWxlbWVudCI7CgkJCX0KCgkJCWVsc2VpZiAoJG1pbiBhbmQgJHV0 ZjhsZW4gPCAkbWluKQoJCQl7CgkJCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9IHplbV9jb250 YWN0X2dUeHQoJ21pbl93YXJuaW5nJywgJGhsYWJlbCwgJG1pbik7CgkJCQkkaXNFcnJvciA9 ICJlcnJvckVsZW1lbnQiOwoJCQl9CgoJCQllbHNlaWYgKCRtYXggYW5kICR1dGY4bGVuID4g JG1heCkKCQkJewoJCQkJJHplbV9jb250YWN0X2Vycm9yW10gPSB6ZW1fY29udGFjdF9nVHh0 KCdtYXhfd2FybmluZycsICRobGFiZWwsICRtYXgpOwoJCQkJJGlzRXJyb3IgPSAiZXJyb3JF bGVtZW50IjsKCQkJCSMkdmFsdWUgPSBqb2luKCcnLGFycmF5X3NsaWNlKCRhclswXSwwLCRt YXgpKTsKCQkJfQoKCQkJZWxzZQoJCQl7CgkJCQl6ZW1fY29udGFjdF9zdG9yZSgkbmFtZSwg JGxhYmVsLCAkdmFsdWUpOwoJCQl9CgkJfQoJCWVsc2VpZiAoJHJlcXVpcmVkKQoJCXsKCQkJ JHplbV9jb250YWN0X2Vycm9yW10gPSB6ZW1fY29udGFjdF9nVHh0KCdmaWVsZF9taXNzaW5n JywgJGhsYWJlbCk7CgkJCSRpc0Vycm9yID0gImVycm9yRWxlbWVudCI7CgkJfQoJfQoKCWVs c2UKCXsKCQkkdmFsdWUgPSAkZGVmYXVsdDsKCX0KCgkkc2l6ZSA9ICgkc2l6ZSkgPyAnIHNp emU9IicuJHNpemUuJyInIDogJyc7CgkkbWF4bGVuZ3RoID0gKCRtYXgpID8gJyBtYXhsZW5n dGg9IicuJG1heC4nIicgOiAnJzsKCgkkemVtUmVxdWlyZWQgPSAkcmVxdWlyZWQgPyAnemVt UmVxdWlyZWQnIDogJyc7CgogICAgICAgIHJldHVybiAnPGxhYmVsIGZvcj0iJy4kbmFtZS4n IiBjbGFzcz0iemVtVGV4dCAnLiR6ZW1SZXF1aXJlZC4kaXNFcnJvci4nICcuJG5hbWUuJyI+ Jy5odG1sc3BlY2lhbGNoYXJzKCRsYWJlbCkuJzwvbGFiZWw+Jy4kYnJlYWsuCgkJJzxpbnB1 dCB0eXBlPSJ0ZXh0IiBpZD0iJy4kbmFtZS4nIiBjbGFzcz0iemVtVGV4dCAnLiR6ZW1SZXF1 aXJlZC4kaXNFcnJvci4nIiBuYW1lPSInLiRuYW1lLiciIHZhbHVlPSInLmh0bWxzcGVjaWFs Y2hhcnMoJHZhbHVlKS4nIicuJHNpemUuJG1heGxlbmd0aC4nIC8+JzsKfQoKZnVuY3Rpb24g emVtX2NvbnRhY3RfdGV4dGFyZWEoJGF0dHMpCnsKCWdsb2JhbCAkemVtX2NvbnRhY3RfZXJy b3IsICR6ZW1fY29udGFjdF9zdWJtaXQ7CgoJZXh0cmFjdCh6ZW1fY29udGFjdF9sQXR0cyhh cnJheSgKCQknYnJlYWsnCQk9PiBiciwKCQknY29scycJCT0+IDU4LAoJCSdkZWZhdWx0Jwk9 PiAnJywKCQknaXNFcnJvcicJPT4gJycsCgkJJ2xhYmVsJwkJPT4gemVtX2NvbnRhY3RfZ1R4 dCgnbWVzc2FnZScpLAoJCSdtYXgnCQk9PiAxMDAwMCwKCQknbWluJwkJPT4gMCwKCQknbmFt ZScJCT0+ICcnLAoJCSdyZXF1aXJlZCcJPT4gMSwKCQkncm93cycJCT0+IDgKCSksICRhdHRz KSk7CgoJJG1pbiA9IGludHZhbCgkbWluKTsKCSRtYXggPSBpbnR2YWwoJG1heCk7CgkkY29s cyA9IGludHZhbCgkY29scyk7Cgkkcm93cyA9IGludHZhbCgkcm93cyk7CgoJaWYgKGVtcHR5 KCRuYW1lKSkgJG5hbWUgPSB6ZW1fY29udGFjdF9sYWJlbDJuYW1lKCRsYWJlbCk7CgoJaWYg KCR6ZW1fY29udGFjdF9zdWJtaXQpCgl7CgkJJHZhbHVlID0gcHJlZ19yZXBsYWNlKCcvXlxz KltcclxuXS8nLCAnJywgcnRyaW0ocHMoJG5hbWUpKSk7CgkJJHV0ZjhsZW4gPSBwcmVnX21h dGNoX2FsbCgiLy4vc3UiLCBsdHJpbSgkdmFsdWUpLCAkdXRmOGFyKTsKCQkkaGxhYmVsID0g aHRtbHNwZWNpYWxjaGFycygkbGFiZWwpOwoKCQlpZiAoc3RybGVuKGx0cmltKCR2YWx1ZSkp KQoJCXsKCQkJaWYgKCEkdXRmOGxlbikKCQkJewoJCQkJJHplbV9jb250YWN0X2Vycm9yW10g PSB6ZW1fY29udGFjdF9nVHh0KCdpbnZhbGlkX3V0ZjgnLCAkaGxhYmVsKTsKCQkJCSRpc0Vy cm9yID0gImVycm9yRWxlbWVudCI7CgkJCX0KCgkJCWVsc2VpZiAoJG1pbiBhbmQgJHV0Zjhs ZW4gPCAkbWluKQoJCQl7CgkJCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9IHplbV9jb250YWN0 X2dUeHQoJ21pbl93YXJuaW5nJywgJGhsYWJlbCwgJG1pbik7CgkJCQkkaXNFcnJvciA9ICJl cnJvckVsZW1lbnQiOwoJCQl9CgoJCQllbHNlaWYgKCRtYXggYW5kICR1dGY4bGVuID4gJG1h eCkKCQkJewoJCQkJJHplbV9jb250YWN0X2Vycm9yW10gPSB6ZW1fY29udGFjdF9nVHh0KCdt YXhfd2FybmluZycsICRobGFiZWwsICRtYXgpOwoJCQkJJGlzRXJyb3IgPSAiZXJyb3JFbGVt ZW50IjsKCQkJCSMkdmFsdWUgPSBqb2luKCcnLGFycmF5X3NsaWNlKCR1dGY4YXJbMF0sMCwk bWF4KSk7CgkJCX0KCgkJCWVsc2UKCQkJewoJCQkJemVtX2NvbnRhY3Rfc3RvcmUoJG5hbWUs ICRsYWJlbCwgJHZhbHVlKTsKCQkJfQoJCX0KCgkJZWxzZWlmICgkcmVxdWlyZWQpCgkJewoJ CQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9IHplbV9jb250YWN0X2dUeHQoJ2ZpZWxkX21pc3Np bmcnLCAkaGxhYmVsKTsKCQkJJGlzRXJyb3IgPSAiZXJyb3JFbGVtZW50IjsKCQl9Cgl9CgoJ ZWxzZQoJewoJCSR2YWx1ZSA9ICRkZWZhdWx0OwoJfQoKCSR6ZW1SZXF1aXJlZCA9ICRyZXF1 aXJlZCA/ICd6ZW1SZXF1aXJlZCcgOiAnJzsKCglyZXR1cm4gJzxsYWJlbCBmb3I9IicuJG5h bWUuJyIgY2xhc3M9InplbVRleHRhcmVhICcuJHplbVJlcXVpcmVkLiRpc0Vycm9yLicgJy4k bmFtZS4nIj4nLmh0bWxzcGVjaWFsY2hhcnMoJGxhYmVsKS4nPC9sYWJlbD4nLiRicmVhay4K CQknPHRleHRhcmVhIGlkPSInLiRuYW1lLiciIGNsYXNzPSJ6ZW1UZXh0YXJlYSAnLiR6ZW1S ZXF1aXJlZC4kaXNFcnJvci4nIiBuYW1lPSInLiRuYW1lLiciIGNvbHM9IicuJGNvbHMuJyIg cm93cz0iJy4kcm93cy4nIj4nLmh0bWxzcGVjaWFsY2hhcnMoJHZhbHVlKS4nPC90ZXh0YXJl YT4nOwp9CgpmdW5jdGlvbiB6ZW1fY29udGFjdF9lbWFpbCgkYXR0cykKewoJZ2xvYmFsICR6 ZW1fY29udGFjdF9lcnJvciwgJHplbV9jb250YWN0X3N1Ym1pdCwgJHplbV9jb250YWN0X2Zy b20sICR6ZW1fY29udGFjdF9yZWNpcGllbnQ7CgoJZXh0cmFjdCh6ZW1fY29udGFjdF9sQXR0 cyhhcnJheSgKCQknZGVmYXVsdCcJPT4gJycsCgkJJ2lzRXJyb3InCT0+ICcnLAoJCSdsYWJl bCcJCT0+IHplbV9jb250YWN0X2dUeHQoJ2VtYWlsJyksCgkJJ21heCcJCT0+IDEwMCwKCQkn bWluJwkJPT4gMCwKCQknbmFtZScJCT0+ICcnLAoJCSdyZXF1aXJlZCcJPT4gMSwKCQknYnJl YWsnCQk9PiBiciwKCQknc2l6ZScJCT0+ICcnLAoJCSdzZW5kX2FydGljbGUnCT0+IDAKCSks ICRhdHRzKSk7CgoJaWYgKGVtcHR5KCRuYW1lKSkgJG5hbWUgPSB6ZW1fY29udGFjdF9sYWJl bDJuYW1lKCRsYWJlbCk7CgoJJGVtYWlsID0gJHplbV9jb250YWN0X3N1Ym1pdCA/IHRyaW0o cHMoJG5hbWUpKSA6ICRkZWZhdWx0OwoKCWlmICgkemVtX2NvbnRhY3Rfc3VibWl0IGFuZCBz dHJsZW4oJGVtYWlsKSkKCXsKCQlpZiAoIWlzX3ZhbGlkX2VtYWlsKCRlbWFpbCkpCgkJewoJ CQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9IHplbV9jb250YWN0X2dUeHQoJ2ludmFsaWRfZW1h aWwnLCBodG1sc3BlY2lhbGNoYXJzKCRlbWFpbCkpOwoJCQkkaXNFcnJvciA9ICJlcnJvckVs ZW1lbnQiOwoJCX0KCgkJZWxzZQoJCXsKCQkJcHJlZ19tYXRjaCgiL0AoLispJC8iLCAkZW1h aWwsICRtYXRjaCk7CgkJCSRkb21haW4gPSAkbWF0Y2hbMV07CgoJCQlpZiAoaXNfY2FsbGFi bGUoJ2NoZWNrZG5zcnInKSBhbmQgY2hlY2tkbnNycigndGV4dHBhdHRlcm4uY29tLicsJ0En KSBhbmQgIWNoZWNrZG5zcnIoJGRvbWFpbi4nLicsJ01YJykgYW5kICFjaGVja2Ruc3JyKCRk b21haW4uJy4nLCdBJykpCgkJCXsKCQkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gemVtX2Nv bnRhY3RfZ1R4dCgnaW52YWxpZF9ob3N0JywgaHRtbHNwZWNpYWxjaGFycygkZG9tYWluKSk7 CgkJCQkkaXNFcnJvciA9ICJlcnJvckVsZW1lbnQiOwoJCQl9CgoJCQllbHNlCgkJCXsKCQkJ CWlmICgkc2VuZF9hcnRpY2xlKSB7CgkJCQkJJHplbV9jb250YWN0X3JlY2lwaWVudCA9ICRl bWFpbDsKCQkJCX0KCQkJCWVsc2UgewoJCQkJCSR6ZW1fY29udGFjdF9mcm9tID0gJGVtYWls OwoJCQkJfQoJCQl9CgkJfQoJfQoKCXJldHVybiB6ZW1fY29udGFjdF90ZXh0KGFycmF5KAoJ CSdkZWZhdWx0Jwk9PiAkZW1haWwsCgkJJ2lzRXJyb3InCT0+ICRpc0Vycm9yLAoJCSdsYWJl bCcJCT0+ICRsYWJlbCwKCQknbWF4JwkJPT4gJG1heCwKCQknbWluJwkJPT4gJG1pbiwKCQkn bmFtZScJCT0+ICRuYW1lLAoJCSdyZXF1aXJlZCcJPT4gJHJlcXVpcmVkLAoJCSdicmVhaycJ CT0+ICRicmVhaywKCQknc2l6ZScJCT0+ICRzaXplCgkpKTsKfQoKZnVuY3Rpb24gemVtX2Nv bnRhY3Rfc2VsZWN0KCRhdHRzKQp7CglnbG9iYWwgJHplbV9jb250YWN0X2Vycm9yLCAkemVt X2NvbnRhY3Rfc3VibWl0OwoKCWV4dHJhY3QoemVtX2NvbnRhY3RfbEF0dHMoYXJyYXkoCgkJ J25hbWUnCQk9PiAnJywKCQknYnJlYWsnCQk9PiAnICcsCgkJJ2RlbGltaXRlcicJPT4gJywn LAoJCSdpc0Vycm9yJwk9PiAnJywKCQknbGFiZWwnCQk9PiB6ZW1fY29udGFjdF9nVHh0KCdv cHRpb24nKSwKCQknbGlzdCcJCT0+IHplbV9jb250YWN0X2dUeHQoJ2dlbmVyYWxfaW5xdWly eScpLAoJCSdyZXF1aXJlZCcJPT4gMSwKCQknc2VsZWN0ZWQnCT0+ICcnCgkpLCAkYXR0cykp OwoKCWlmIChlbXB0eSgkbmFtZSkpICRuYW1lID0gemVtX2NvbnRhY3RfbGFiZWwybmFtZSgk bGFiZWwpOwoKCSRsaXN0ID0gYXJyYXlfbWFwKCd0cmltJywgc3BsaXQoJGRlbGltaXRlciwg cHJlZ19yZXBsYWNlKCcvW1xyXG5cdFxzXSsvJywgJyAnLCRsaXN0KSkpOwoKCWlmICgkemVt X2NvbnRhY3Rfc3VibWl0KQoJewoJCSR2YWx1ZSA9IHRyaW0ocHMoJG5hbWUpKTsKCgkJaWYg KHN0cmxlbigkdmFsdWUpKQoJCXsKCQkJaWYgKGluX2FycmF5KCR2YWx1ZSwgJGxpc3QpKQoJ CQl7CgkJCQl6ZW1fY29udGFjdF9zdG9yZSgkbmFtZSwgJGxhYmVsLCAkdmFsdWUpOwoJCQl9 CgoJCQllbHNlCgkJCXsKCQkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gemVtX2NvbnRhY3Rf Z1R4dCgnaW52YWxpZF92YWx1ZScsIGh0bWxzcGVjaWFsY2hhcnMoJGxhYmVsKSwgaHRtbHNw ZWNpYWxjaGFycygkdmFsdWUpKTsKCQkJCSRpc0Vycm9yID0gImVycm9yRWxlbWVudCI7CgkJ CX0KCQl9CgoJCWVsc2VpZiAoJHJlcXVpcmVkKQoJCXsKCQkJJHplbV9jb250YWN0X2Vycm9y W10gPSB6ZW1fY29udGFjdF9nVHh0KCdmaWVsZF9taXNzaW5nJywgaHRtbHNwZWNpYWxjaGFy cygkbGFiZWwpKTsKCQkJJGlzRXJyb3IgPSAiZXJyb3JFbGVtZW50IjsKCQl9Cgl9CgllbHNl Cgl7CgkJJHZhbHVlID0gJHNlbGVjdGVkOwoJfQoKCSRvdXQgPSAnJzsKCglmb3JlYWNoICgk bGlzdCBhcyAkaXRlbSkKCXsKCQkkb3V0IC49IG4udC4nPG9wdGlvbicuKCRpdGVtID09ICR2 YWx1ZSA/ICcgc2VsZWN0ZWQ9InNlbGVjdGVkIj4nIDogJz4nKS4oc3RybGVuKCRpdGVtKSA/ IGh0bWxzcGVjaWFsY2hhcnMoJGl0ZW0pIDogJyAnKS4nPC9vcHRpb24+JzsKCX0KCgkkemVt UmVxdWlyZWQgPSAkcmVxdWlyZWQgPyAnemVtUmVxdWlyZWQnIDogJyc7CgoJcmV0dXJuICc8 bGFiZWwgZm9yPSInLiRuYW1lLiciIGNsYXNzPSJ6ZW1TZWxlY3QgJy4kemVtUmVxdWlyZWQu JGlzRXJyb3IuJyAnLiRuYW1lLiciPicuaHRtbHNwZWNpYWxjaGFycygkbGFiZWwpLic8L2xh YmVsPicuJGJyZWFrLgoJCW4uJzxzZWxlY3QgaWQ9IicuJG5hbWUuJyIgbmFtZT0iJy4kbmFt ZS4nIiBjbGFzcz0iemVtU2VsZWN0ICcuJHplbVJlcXVpcmVkLiRpc0Vycm9yLiciPicuCgkJ CSRvdXQuCgkJbi4nPC9zZWxlY3Q+JzsKfQoKZnVuY3Rpb24gemVtX2NvbnRhY3RfY2hlY2ti b3goJGF0dHMpCnsKCWdsb2JhbCAkemVtX2NvbnRhY3RfZXJyb3IsICR6ZW1fY29udGFjdF9z dWJtaXQ7CgoJZXh0cmFjdCh6ZW1fY29udGFjdF9sQXR0cyhhcnJheSgKCQknYnJlYWsnCQk9 PiAnICcsCgkJJ2NoZWNrZWQnCT0+IDAsCgkJJ2lzRXJyb3InCT0+ICcnLAoJCSdsYWJlbCcJ CT0+IHplbV9jb250YWN0X2dUeHQoJ2NoZWNrYm94JyksCgkJJ25hbWUnCQk9PiAnJywKCQkn cmVxdWlyZWQnCT0+IDEKCSksICRhdHRzKSk7CgoJaWYgKGVtcHR5KCRuYW1lKSkgJG5hbWUg PSB6ZW1fY29udGFjdF9sYWJlbDJuYW1lKCRsYWJlbCk7CgoJaWYgKCR6ZW1fY29udGFjdF9z dWJtaXQpCgl7CgkJJHZhbHVlID0gKGJvb2wpIHBzKCRuYW1lKTsKCgkJaWYgKCRyZXF1aXJl ZCBhbmQgISR2YWx1ZSkKCQl7CgkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gemVtX2NvbnRh Y3RfZ1R4dCgnZmllbGRfbWlzc2luZycsIGh0bWxzcGVjaWFsY2hhcnMoJGxhYmVsKSk7CgkJ CSRpc0Vycm9yID0gImVycm9yRWxlbWVudCI7CgkJfQoKCQllbHNlCgkJewoJCQl6ZW1fY29u dGFjdF9zdG9yZSgkbmFtZSwgJGxhYmVsLCAkdmFsdWUgPyBnVHh0KCd5ZXMnKSA6IGdUeHQo J25vJykpOwoJCX0KCX0KCgllbHNlIHsKCQkkdmFsdWUgPSAkY2hlY2tlZDsKCX0KCgkkemVt UmVxdWlyZWQgPSAkcmVxdWlyZWQgPyAnemVtUmVxdWlyZWQnIDogJyc7CgoJcmV0dXJuICc8 aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSInLiRuYW1lLiciIGNsYXNzPSJ6ZW1DaGVja2Jv eCAnLiR6ZW1SZXF1aXJlZC4kaXNFcnJvci4nIiBuYW1lPSInLiRuYW1lLiciJy4KCQkoJHZh bHVlID8gJyBjaGVja2VkPSJjaGVja2VkIicgOiAnJykuJyAvPicuJGJyZWFrLgoJCSc8bGFi ZWwgZm9yPSInLiRuYW1lLiciIGNsYXNzPSJ6ZW1DaGVja2JveCAnLiR6ZW1SZXF1aXJlZC4k aXNFcnJvci4nICcuJG5hbWUuJyI+Jy5odG1sc3BlY2lhbGNoYXJzKCRsYWJlbCkuJzwvbGFi ZWw+JzsKfQoKZnVuY3Rpb24gemVtX2NvbnRhY3Rfc2VydmVyaW5mbygkYXR0cykKewoJZ2xv YmFsICR6ZW1fY29udGFjdF9zdWJtaXQ7CgoJZXh0cmFjdCh6ZW1fY29udGFjdF9sQXR0cyhh cnJheSgKCQknbGFiZWwnCQk9PiAnJywKCQknbmFtZScJCT0+ICcnCgkpLCAkYXR0cykpOwoK CWlmIChlbXB0eSgkbmFtZSkpICRuYW1lID0gemVtX2NvbnRhY3RfbGFiZWwybmFtZSgkbGFi ZWwpOwoKCWlmIChzdHJsZW4oJG5hbWUpIGFuZCAkemVtX2NvbnRhY3Rfc3VibWl0KQoJewoJ CWlmICghJGxhYmVsKSAkbGFiZWwgPSAkbmFtZTsKCQl6ZW1fY29udGFjdF9zdG9yZSgkbmFt ZSwgJGxhYmVsLCBzZXJ2ZXJTZXQoJG5hbWUpKTsKCX0KfQoKZnVuY3Rpb24gemVtX2NvbnRh Y3Rfc2VjcmV0KCRhdHRzLCAkdGhpbmcgPSAnJykKewoJZ2xvYmFsICR6ZW1fY29udGFjdF9z dWJtaXQ7CgoJZXh0cmFjdCh6ZW1fY29udGFjdF9sQXR0cyhhcnJheSgKCQknbmFtZScJPT4g JycsCgkJJ2xhYmVsJwk9PiB6ZW1fY29udGFjdF9nVHh0KCdzZWNyZXQnKSwKCQkndmFsdWUn CT0+ICcnCgkpLCAkYXR0cykpOwoKCSRuYW1lID0gemVtX2NvbnRhY3RfbGFiZWwybmFtZSgk bmFtZSA/ICRuYW1lIDogJGxhYmVsKTsKCglpZiAoJHplbV9jb250YWN0X3N1Ym1pdCkKCXsK CQlpZiAoJHRoaW5nKSAkdmFsdWUgPSB0cmltKHBhcnNlKCR0aGluZykpOwoJCXplbV9jb250 YWN0X3N0b3JlKCRuYW1lLCAkbGFiZWwsICR2YWx1ZSk7Cgl9CgoJcmV0dXJuICcnOwp9Cgpm dW5jdGlvbiB6ZW1fY29udGFjdF9yYWRpbygkYXR0cykKewoJZ2xvYmFsICR6ZW1fY29udGFj dF9lcnJvciwgJHplbV9jb250YWN0X3N1Ym1pdCwgJHplbV9jb250YWN0X3ZhbHVlczsKCgll eHRyYWN0KHplbV9jb250YWN0X2xBdHRzKGFycmF5KAoJCSdicmVhaycJCT0+ICcgJywKCQkn Y2hlY2tlZCcJPT4gMCwKCQknZ3JvdXAnCQk9PiAnJywKCQknbGFiZWwnCQk9PiB6ZW1fY29u dGFjdF9nVHh0KCdvcHRpb24nKSwKCQknbmFtZScJCT0+ICcnCgkpLCAkYXR0cykpOwoKCXN0 YXRpYyAkY3VyX25hbWUgPSAnJzsKCXN0YXRpYyAkY3VyX2dyb3VwID0gJyc7CgoJaWYgKCEk bmFtZSBhbmQgISRncm91cCBhbmQgISRjdXJfbmFtZSBhbmQgISRjdXJfZ3JvdXApIHsKCQkk Y3VyX2dyb3VwID0gemVtX2NvbnRhY3RfZ1R4dCgncmFkaW8nKTsKCQkkY3VyX25hbWUgPSAk Y3VyX2dyb3VwOwoJfQoJaWYgKCRncm91cCBhbmQgISRuYW1lIGFuZCAkZ3JvdXAgIT0gJGN1 cl9ncm91cCkgJG5hbWUgPSAkZ3JvdXA7CgoJaWYgKCRuYW1lKSAkY3VyX25hbWUgPSAkbmFt ZTsKCWVsc2UgJG5hbWUgPSAkY3VyX25hbWU7CgoJaWYgKCRncm91cCkgJGN1cl9ncm91cCA9 ICRncm91cDsKCWVsc2UgJGdyb3VwID0gJGN1cl9ncm91cDsKCgkkaWQgICA9ICdxJy5tZDUo JG5hbWUuJz0+Jy4kbGFiZWwpOwoJJG5hbWUgPSB6ZW1fY29udGFjdF9sYWJlbDJuYW1lKCRu YW1lKTsKCglpZiAoJHplbV9jb250YWN0X3N1Ym1pdCkKCXsKCQkkaXNfY2hlY2tlZCA9IChw cygkbmFtZSkgPT0gJGlkKTsKCgkJaWYgKCRpc19jaGVja2VkIG9yICRjaGVja2VkIGFuZCAh aXNzZXQoJHplbV9jb250YWN0X3ZhbHVlc1skbmFtZV0pKQoJCXsKCQkJemVtX2NvbnRhY3Rf c3RvcmUoJG5hbWUsICRncm91cCwgJGxhYmVsKTsKCQl9Cgl9CgoJZWxzZQoJewoJCSRpc19j aGVja2VkID0gJGNoZWNrZWQ7Cgl9CgoJcmV0dXJuICc8aW5wdXQgdmFsdWU9IicuJGlkLici IHR5cGU9InJhZGlvIiBpZD0iJy4kaWQuJyIgY2xhc3M9InplbVJhZGlvICcuJG5hbWUuJyIg bmFtZT0iJy4kbmFtZS4nIicuCgkJKCAkaXNfY2hlY2tlZCA/ICcgY2hlY2tlZD0iY2hlY2tl ZCIgLz4nIDogJyAvPicpLiRicmVhay4KCQknPGxhYmVsIGZvcj0iJy4kaWQuJyIgY2xhc3M9 InplbVJhZGlvICcuJG5hbWUuJyI+Jy5odG1sc3BlY2lhbGNoYXJzKCRsYWJlbCkuJzwvbGFi ZWw+JzsKfQoKZnVuY3Rpb24gemVtX2NvbnRhY3Rfc2VuZF9hcnRpY2xlKCRhdHRzKQp7Cglp ZiAoIWlzc2V0KCRfUkVRVUVTVFsnemVtX2NvbnRhY3Rfc2VuZF9hcnRpY2xlJ10pKSB7CgkJ JGxpbmt0ZXh0ID0gKGVtcHR5KCRhdHRzWydsaW5rdGV4dCddKSkgPyB6ZW1fY29udGFjdF9n VHh0KCdzZW5kX2FydGljbGUnKSA6ICRhdHRzWydsaW5rdGV4dCddOwoJCSRqb2luID0gKGVt cHR5KCRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXSkpID8gJz8nIDogJyYnOwoJCSRocmVmID0g JF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10uJGpvaW4uJ3plbV9jb250YWN0X3NlbmRfYXJ0aWNs ZT15ZXMnOwoJCXJldHVybiAnPGEgaHJlZj0iJy5odG1sc3BlY2lhbGNoYXJzKCRocmVmKS4n Ij4nLmh0bWxzcGVjaWFsY2hhcnMoJGxpbmt0ZXh0KS4nPC9hPic7Cgl9CglyZXR1cm47Cn0K CmZ1bmN0aW9uIHplbV9jb250YWN0X3N1Ym1pdCgkYXR0cywgJHRoaW5nKQp7CglleHRyYWN0 KHplbV9jb250YWN0X2xBdHRzKGFycmF5KAoJCSdidXR0b24nCT0+IDAsCgkJJ2xhYmVsJwkJ PT4gemVtX2NvbnRhY3RfZ1R4dCgnc2VuZCcpCgkpLCAkYXR0cykpOwoKCSRsYWJlbCA9IGh0 bWxzcGVjaWFsY2hhcnMoJGxhYmVsKTsKCglpZiAoJGJ1dHRvbiBvciBzdHJsZW4oJHRoaW5n KSkKCXsKCQlyZXR1cm4gJzxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iemVtU3VibWl0 IiBuYW1lPSJ6ZW1fY29udGFjdF9zdWJtaXQiIHZhbHVlPSInLiRsYWJlbC4nIj4nLigkdGhp bmcgPyB0cmltKHBhcnNlKCR0aGluZykpIDogJGxhYmVsKS4nPC9idXR0b24+JzsKCX0KCWVs c2UKCXsKCQlyZXR1cm4gJzxpbnB1dCB0eXBlPSJzdWJtaXQiIGNsYXNzPSJ6ZW1TdWJtaXQi IG5hbWU9InplbV9jb250YWN0X3N1Ym1pdCIgdmFsdWU9IicuJGxhYmVsLiciIC8+JzsKCX0K fQoKZnVuY3Rpb24gemVtX2NvbnRhY3RfbEF0dHMoJGFyciwgJGF0dHMpCnsKCWZvcmVhY2go YXJyYXkoJ2J1dHRvbicsICdjb3B5c2VuZGVyJywgJ2NoZWNrZWQnLCAncmVxdWlyZWQnLCAn c2VuZF9hcnRpY2xlJywgJ3Nob3dfaW5wdXQnLCAnc2hvd19lcnJvcicpIGFzICRrZXkpCgl7 CgkJaWYgKGlzc2V0KCRhdHRzWyRrZXldKSkKCQl7CgkJCSRhdHRzWyRrZXldID0gKCRhdHRz WyRrZXldID09PSAneWVzJyBvciBpbnR2YWwoJGF0dHNbJGtleV0pKSA/IDEgOiAwOwoJCX0K CX0KCWlmIChpc3NldCgkYXR0c1snYnJlYWsnXSkgYW5kICRhdHRzWydicmVhayddID09ICdi cicpICRhdHRzWydicmVhayddID0gJzxiciAvPic7CglyZXR1cm4gbEF0dHMoJGFyciwgJGF0 dHMpOwp9CgpjbGFzcyB6ZW1jb250YWN0X2V2YWx1YXRpb24KewoJdmFyICRzdGF0dXM7CgoJ ZnVuY3Rpb24gemVtY29udGFjdF9ldmFsdWF0aW9uKCkgewoJCSR0aGlzLT5zdGF0dXMgPSAw OwoJfQoKCWZ1bmN0aW9uIGFkZF96ZW1jb250YWN0X3N0YXR1cygkY2hlY2spIHsKCQkkdGhp cy0+c3RhdHVzICs9ICRjaGVjazsKCX0KCglmdW5jdGlvbiBnZXRfemVtY29udGFjdF9zdGF0 dXMoKSB7CgkJcmV0dXJuICR0aGlzLT5zdGF0dXM7Cgl9Cn0KCmZ1bmN0aW9uICZnZXRfemVt Y29udGFjdF9ldmFsdWF0b3IoKQp7CglzdGF0aWMgJGluc3RhbmNlOwoKCWlmKCFpc3NldCgk aW5zdGFuY2UpKSB7CgkJJGluc3RhbmNlID0gbmV3IHplbWNvbnRhY3RfZXZhbHVhdGlvbigp OwoJfQoJcmV0dXJuICRpbnN0YW5jZTsKfQoKZnVuY3Rpb24gemVtX2NvbnRhY3RfbGFiZWwy bmFtZSgkbGFiZWwpCnsKCSRsYWJlbCA9IHRyaW0oJGxhYmVsKTsKCWlmIChzdHJsZW4oJGxh YmVsKSA9PSAwKSByZXR1cm4gJ2ludmFsaWQnOwoJaWYgKHN0cmxlbigkbGFiZWwpIDw9IDMy IGFuZCBwcmVnX21hdGNoKCcvXlthLXpBLVpdW0EtWmEtejAtOTpfLV0qJC8nLCAkbGFiZWwp KSByZXR1cm4gJGxhYmVsOwoJZWxzZSByZXR1cm4gJ3EnLm1kNSgkbGFiZWwpOwp9CgpmdW5j dGlvbiB6ZW1fY29udGFjdF9zdG9yZSgkbmFtZSwgJGxhYmVsLCAkdmFsdWUpCnsKCWdsb2Jh bCAkemVtX2NvbnRhY3RfZm9ybSwgJHplbV9jb250YWN0X2xhYmVscywgJHplbV9jb250YWN0 X3ZhbHVlczsKCSR6ZW1fY29udGFjdF9mb3JtWyRsYWJlbF0gPSAkdmFsdWU7CgkkemVtX2Nv bnRhY3RfbGFiZWxzWyRuYW1lXSA9ICRsYWJlbDsKCSR6ZW1fY29udGFjdF92YWx1ZXNbJG5h bWVdID0gJHZhbHVlOwp9CgpmdW5jdGlvbiB6ZW1fY29udGFjdF9tYWlsaGVhZGVyKCRzdHJp bmcsICR0eXBlKQp7CglnbG9iYWwgJHByZWZzOwoJaWYgKCFzdHJzdHIoJHN0cmluZywnPT8n KSBhbmQgIXByZWdfbWF0Y2goJy9bXHgwMC1ceDFGXHg3Ri1ceEZGXS8nLCAkc3RyaW5nKSkg ewoJCWlmICgicGhyYXNlIiA9PSAkdHlwZSkgewoJCQlpZiAocHJlZ19tYXRjaCgnL1tdWygp PD5ALDs6Ii5ceDVDXS8nLCAkc3RyaW5nKSkgewoJCQkJJHN0cmluZyA9ICciJy4gc3RydHIo JHN0cmluZywgYXJyYXkoIlxcIiA9PiAiXFxcXCIsICciJyA9PiAnXCInKSkgLiAnIic7CgkJ CX0KCQl9CgkJZWxzZWlmICgidGV4dCIgIT0gJHR5cGUpIHsKCQkJdHJpZ2dlcl9lcnJvcign VW5rbm93biBlbmNvZGVfbWFpbGhlYWRlciB0eXBlJywgRV9VU0VSX1dBUk5JTkcpOwoJCX0K CQlyZXR1cm4gJHN0cmluZzsKCX0KCWlmICgkcHJlZnNbJ292ZXJyaWRlX2VtYWlsY2hhcnNl dCddKSB7CgkJJHN0YXJ0ID0gJz0/SVNPLTg4NTktMT9CPyc7CgkJJHBjcmUgID0gJy8uezEs NDJ9L3MnOwoJfQoJZWxzZSB7CgkJJHN0YXJ0ID0gJz0/VVRGLTg/Qj8nOwoJCSRwY3JlICA9 ICcvLnsxLDQ1fSg/PVtceDAwLVx4N0ZceEMwLVx4RkZdfCQpL3MnOwoJfQoJJGVuZCA9ICc/ PSc7Cgkkc2VwID0gaXNfd2luZG93cygpID8gIlxyXG4iIDogIlxuIjsKCXByZWdfbWF0Y2hf YWxsKCRwY3JlLCAkc3RyaW5nLCAkbWF0Y2hlcyk7CglyZXR1cm4gJHN0YXJ0IC4gam9pbigk ZW5kLiRzZXAuJyAnLiRzdGFydCwgYXJyYXlfbWFwKCdiYXNlNjRfZW5jb2RlJywkbWF0Y2hl c1swXSkpIC4gJGVuZDsKfQoiO3M6MzoibWQ1IjtzOjMyOiJjYjc3MmYzMDU3MjdhOWU5ZTVm ZDdkMTYxNmY1Njk5NiI7fQ==