# zem_contact_reborn v4.0.3.18 # Form mailer for Textpattern # TXP Community # http://forum.textpattern.com/viewtopic.php?id=19823 # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YTo5OntzOjQ6Im5hbWUiO3M6MTg6InplbV9jb250YWN0X3JlYm9ybiI7czo3OiJ2ZXJzaW9u IjtzOjg6IjQuMC4zLjE4IjtzOjY6ImF1dGhvciI7czoxMzoiVFhQIENvbW11bml0eSI7czox MDoiYXV0aG9yX3VyaSI7czo1MToiaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3 dG9waWMucGhwP2lkPTE5ODIzIjtzOjExOiJkZXNjcmlwdGlvbiI7czoyNzoiRm9ybSBtYWls ZXIgZm9yIFRleHRwYXR0ZXJuIjtzOjQ6InR5cGUiO2k6MDtzOjQ6ImhlbHAiO3M6MjI3Njc6 Igo8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjtmb250LXdlaWdodDpib2xkO2ZvbnQt c2l6ZToyNHB4O3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Ij5aZW0gQ29udGFjdCBSZWJv cm48L2Rpdj4KCTxwPkluaXRpYWxseSBiYXNlZCB1cG9uIHplbV9jb250YWN0IDAuNiBmcm9t IHplbS4gQ29kZSBjb21wbGV0ZWx5IHJldmlzZWQgYnkgTWFyeS4gVHVybmVkIGludG8gYSBw bHVnLWluIHdpdGggdGhlIGFkZGl0aW9uIG9mIHJldmlzZWQgSGVscCB0ZXh0IGJ5IFN0dWFy dC4gQWRkaXRpb25hbCBjb2RlIGZyb20gU3R1YXJ0LCBUcmFucXVpbGxvLCBhc2xzdzY2LCBq ZHlrYXN0LCB3ZXQgYW5kIFJ1dWQuIEN1cnJlbnRseSBtYWludGFpbmVkIGJ5IFJ1dWQgdmFu IE1lbGljayBhbmQgdGVzdGVkIHRvIGRlc3RydWN0aW9uIGJ5IHRoZSBUZXh0cGF0dGVybiBj b21tdW5pdHkuIElmIHlvdSBoYXZlIGFueSBwcm9ibGVtcyB1c2luZyB0aGlzIHBsdWctaW4g b3Igc2VlIGFueSBidWdzIGFyb3VuZCBwbGVhc2UgZ28gdG8gdGhlIDxzdHJvbmc+PGEgaHJl Zj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP2lkPTEzNDE2 Ij5mb3J1bSB0aHJlYWQ8L2E+PC9zdHJvbmc+IGFuZCB0ZWxsIHVzIGFib3V0IGl0LiBJZiB5 b3UgZG9uJiM4MjE3O3QsIHdlIHdvbiYjODIxNzt0IGtub3cuPC9wPgoJPHA+PHN0cm9uZz5Q bGVhc2Ugbm90ZSB0aGF0IHRoaXMgcGx1Zy1pbiBub3cgdXNlcyBhIHNlcGFyYXRlIGxhbmd1 YWdlIHBsdWctaW4gJiM4MjExOyA8Y29kZT56ZW1fY29udGFjdF9sYW5nPC9jb2RlPiAmIzgy MTE7IGFuZCBib3RoIHBsdWctaW5zIGFyZSByZXF1aXJlZCB0byBiZSBpbnN0YWxsZWQgYW5k IGFjdGl2YXRlZCB0byB3b3JrIHByb3Blcmx5Ljwvc3Ryb25nPjwvcD4KCTxwPjxzdHJvbmc+ VG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIG5ldyBBUEkgdGhhdCBoYXMgYmVlbiBhZGRlZCB0 byBaZW0gQ29udGFjdCBSZWJvcm4geW91IG5lZWQgdG8gaGF2ZSBhIDNyZC1wYXJ0eSBwbHVn LWluIHRoYXQgaGFzIGJlZW4gZGVzaWduZWQgdG8gJiM4MjIwO2Nvbm5lY3QmIzgyMjE7IHRv IFplbSBDb250YWN0IFJlYm9ybi48L3N0cm9uZz48L3A+Cgk8cD48c3Ryb25nPkZvciB0aG9z ZSBvZiB5b3UgcmVxdWlyaW5nIHNwYW0gcHJldmVudGlvbiBqdXN0IHN1Y2ggYSBwbHVnLWlu IGV4aXN0cywgVHJhbnF1aWxsbyYjODIxNztzIDxjb2RlPnBhcF9jb250YWN0X2NsZWFuZXI8 L2NvZGU+Ljwvc3Ryb25nPjwvcD4KCTxwPjxzdHJvbmc+Rm9yIHBsdWctaW4gZGV2ZWxvcGVy cyB3aG8gd291bGQgbGlrZSB0byBrbm93IG1vcmUgYWJvdXQgdGhpcyBwbHVnLWluJiM4MjE3 O3MgQVBJIHBsZWFzZSBzZWUgPGEgaHJlZj0iI2FwaSI+JiM4MjIwO1plbSBDb250YWN0IFJl Ym9ybiYjODIxNztzIEFQSSYjODIyMTs8L2E+IGJlbG93Ljwvc3Ryb25nPjwvcD4KCTxwPjxh IGhyZWY9IiNjb250YWN0Ij48c3Ryb25nPiAmIzYwO3R4cDp6ZW0mIzk1O2NvbnRhY3QmIzYy OyA8L3N0cm9uZz48L2E+IHByb2R1Y2VzIGEgZmxleGlibGUsIGN1c3RvbWlzYWJsZSBlbWFp bCBjb250YWN0IGZvcm0uIEl0IGlzIGludGVuZGVkIGZvciB1c2UgYXMgYW4gZW5xdWlyeSBm b3JtIGZvciBjb21tZXJjaWFsIGFuZCBwcml2YXRlIHNpdGVzLCBhbmQgaW5jbHVkZXMgc2V2 ZXJhbCBmZWF0dXJlcyB0byBoZWxwIHJlZHVjZSBjb21tb24gcHJvYmxlbXMgd2l0aCBzdWNo IGZvcm1zIChpbnZhbGlkIGVtYWlsIGFkZHJlc3NlcywgbWlzc2luZyBpbmZvcm1hdGlvbiku PC9wPgoJPHA+PGEgaHJlZj0iI2FydGljbGUiPjxzdHJvbmc+ICYjNjA7dHhwOnplbSYjOTU7 Y29udGFjdCYjOTU7c2VuZCYjOTU7YXJ0aWNsZSYjNjI7IDwvc3Ryb25nPjwvYT4gY2FuIGJl IHVzZWQgdG8gY3JlYXRlIGEgJiM4MjIwO3NlbmQgYXJ0aWNsZSYjODIyMTsgbGluayB3aXRo aW4gYW4gYXJ0aWNsZSBmb3JtLCBjb25uZWN0aW5nIGl0IHRvIHRoZSBjb250YWN0IGZvcm0u PC9wPgoJPHAgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyOyI+PHN0cm9uZz48ZW0+RmVhdHVy ZXM8L2VtPjwvc3Ryb25nPjwvcD4KCTx1bD4KCQk8bGk+QXJiaXRyYXJ5IHRleHQgZmllbGRz IGNhbiBiZSBzcGVjaWZpZWQsIHdpdGggbWluL21heC9yZXF1aXJlZCBzZXR0aW5ncyBmb3Ig dmFsaWRhdGlvbi48L2xpPgoJCTxsaT5FbWFpbCBhZGRyZXNzIHZhbGlkYXRpb24sIGluY2x1 ZGluZyBhIGNoZWNrIGZvciBhIHZhbGlkIE1YIHJlY29yZCAoVW5peCBvbmx5KS48L2xpPgoJ CTxsaT5TYWZlIGVzY2FwaW5nIG9mIGlucHV0IGRhdGEuPC9saT4KCQk8bGk+QWNjZXNzaWJs ZSBmb3JtIGxheW91dCwgaW5jbHVkaW5nIDxjb2RlPiZsdDtsYWJlbCZndDs8L2NvZGU+LCA8 Y29kZT4mbHQ7bGVnZW5kJmd0OzwvY29kZT4gYW5kIDxjb2RlPiZsdDtmaWVsZHNldCZndDs8 L2NvZGU+IHRhZ3MuPC9saT4KCQk8bGk+QWxsIGxhYmVscywgaW5wdXRzIGFuZCB0aGUgdGV4 dGFyZWEgaGF2ZSB0aGVpciBvd24gJiM4MjIwO2lkJiM4MjIxOyBhbmQgJiM4MjIwO2NsYXNz JiM4MjIxOy48L2xpPgoJCTxsaT5TcGVjaWFsIGNsYXNzZXMgZm9yIGxhYmVscywgaW5wdXRz IGFuZCB0aGUgdGV4dGFyZWEgZm9yIHdoZW4gPGNvZGU+ZXJyb3I8L2NvZGU+IG1lc3NhZ2Vz IGFyZSBvdXRwdXQuPC9saT4KCQk8bGk+U3BlY2lhbCBjbGFzc2VzIGZvciBsYWJlbHMsIGlu cHV0cyBhbmQgdGhlIHRleHRhcmVhIGlmIHRoZSBhdHRyaWJ1dGUgPGNvZGU+cmVxdWlyZWQ9 InllcyI8L2NvZGU+IGlzIHVzZWQuPC9saT4KCQk8bGk+QSBzcGVjaWFsIGNsYXNzIGZvciB0 aGUgZXJyb3IgbWVzc2FnZXMgdGhlbXNlbHZlcy48L2xpPgoJCTxsaT5BIHNlcGFyYXRlIGxh bmd1YWdlIHBsdWctaW4gdG8gZW5hYmxlIGVhc3kgPGVtPmxvY2FsaXNhdGlvbjwvZW0+Ljwv bGk+CgkJPGxpPlNwYW0gcHJldmVudGlvbi48L2xpPgoJPC91bD4KCTxwPkZvciBhIGJyaWVm IGV4cGxhbmF0aW9uIG9uIHRoZSBzcGVjaWFsIGNsYXNzZXMgc2VlIDxzdHJvbmc+PGEgaHJl Zj0iI3N0eWxpbmciPlN0eWxpbmc8L2E+PC9zdHJvbmc+IGJlbG93LjwvcD4KCTxwIHN0eWxl PSJ0ZXh0LWFsaWduOmNlbnRlcjsiPjxzdHJvbmc+PGVtPkV4YW1wbGVzPC9lbT48L3N0cm9u Zz48L3A+Cgk8cD5UaGUgc2ltcGxlc3QgZm9ybSBpcyB0aGlzOi08L3A+Cgk8cD4mIzYwO3R4 cDp6ZW0mIzk1O2NvbnRhY3QgdG8mIzYxOyYjMzQ7ZGVzdEBleGFtcGxlLmNvbSYjMzQ7IC8m IzYyOyB3aGljaCBwcm9kdWNlcyBhIGRlZmF1bHQgZm9ybSB3aXRoIE5hbWUsIEVtYWlsIGFu ZCBNZXNzYWdlIGZpZWxkcy4gRW1haWwgd2lsbCBiZSBkZWxpdmVyZWQgdG8gZGVzdEBleGFt cGxlLmNvbSwgd2l0aCB0aGUgdXNlciYjODIxNztzIHN1cHBsaWVkIGVtYWlsIGFzIHRoZSAm IzgyMjA7RnJvbTomIzgyMjE7IGFkZHJlc3MuPC9wPgoJPHA+VG8gc3BlY2lmeSBmaWVsZHMg ZXhwbGljaXRseSwgdXNlIHNvbWV0aGluZyBsaWtlIHRoaXM6LTwvcD4KCTxwPiYjNjA7dHhw OnplbSYjOTU7Y29udGFjdCB0byYjNjE7JiMzNDtkZXN0QGV4YW1wbGUuY29tJiMzNDsmIzYy OzxiciAvPgomIzYwO3R4cDp6ZW0mIzk1O2NvbnRhY3QmIzk1O2VtYWlsIC8mIzYyOzxiciAv PgomIzYwO3R4cDp6ZW0mIzk1O2NvbnRhY3QmIzk1O3RleHQgbGFiZWwmIzYxOyYjMzQ7UGhv bmUmIzM0OyBtaW4mIzYxOzcgLyYjNjI7PGJyIC8+CiYjNjA7dHhwOnplbSYjOTU7Y29udGFj dCYjOTU7dGV4dGFyZWEgbGFiZWwmIzYxOyYjMzQ7RW5xdWlyeSYjMzQ7IC8mIzYyOzxiciAv PgomIzYwO3R4cDp6ZW0mIzk1O2NvbnRhY3QmIzk1O3N1Ym1pdCBsYWJlbCYjNjE7JiMzNDtF bnF1aXJlJiMzNDsgLyYjNjI7PGJyIC8+CiYjNjA7L3R4cDp6ZW0mIzk1O2NvbnRhY3QmIzYy OzwvcD4KCTxwPkFsdGVybmF0aXZlbHksIHBsYWNlIHRoZSBmaWVsZCBzcGVjaWZpY2F0aW9u cyBpbiBhIFRleHRwYXR0ZXJuIGZvcm0sIGFuZCBjYWxsIGl0IGxpa2UgdGhpczo8L3A+Cgk8 cD4mIzYwO3R4cDp6ZW0mIzk1O2NvbnRhY3QgdG8mIzYxOyYjMzQ7ZGVzdEBleGFtcGxlLmNv bSYjMzQ7IGZvcm0mIzYxOyYjMzQ7bXljb250YWN0Zm9ybSYjMzQ7IC8mIzYyOzwvcD4KCTxw Pm9yIGluY2x1ZGUgdGhlIGFib3ZlIHRhZyBpbiB5b3VyIGZvcm0gYXMgd2VsbCBhbmQgY2Fs bCBpdCB3aXRoIHRoZSAmIzYwO3R4cDpvdXRwdXQmIzk1O2Zvcm0mIzYyOyB0YWcuPC9wPgog PGhyIC8+Cgk8cCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7Ij48c3Ryb25nPjxlbT5JbmRp dmlkdWFsIFRhZ3M8L2VtPjwvc3Ryb25nPjwvcD4KIDxwIGlkPSJjb250YWN0Ij48c3Ryb25n PiAmIzYwO3R4cDp6ZW0mIzk1O2NvbnRhY3QgLyYjNjI7IDwvc3Ryb25nPjwvcD4KCTxwPk1h eSBiZSB1c2VkIGFzIGEgc2VsZi1jbG9zaW5nIG9yIGNvbnRhaW5lciB0YWcuIFBsYWNlIHRo aXMgd2hlcmUgeW91IHdhbnQgdGhlIGlucHV0IGZvcm0gdG8gZ28uIFN0YXR1cyBhbmQgZXJy b3IgbWVzc2FnZXMsIGlmIGFueSwgd2lsbCBiZSBkaXNwbGF5ZWQgYmVmb3JlIHRoZSBmb3Jt LjwvcD4KCTxwPkF0dHJpYnV0ZXM6LTwvcD4KCTx1bD4KCQk8bGk+PHN0cm9uZz5jb3B5c2Vu ZGVyPC9zdHJvbmc+ICYjODIxMTsgVXNpbmcgPGNvZGU+Y29weXNlbmRlcj0ieWVzIjwvY29k ZT4gd2lsbCBzZW5kIGEgY29weSBvZiB0aGUgZW1haWwgdG8gdGhlIHNlbmRlciYjODIxNztz IGFkZHJlc3MgYXMgd2VsbCBhcyB0aGUgJiM4MjIwO3RvJiM4MjIxOyBhZGRyZXNzIHRoYXQg eW91IGhhdmUgc2V0IGluIHRoZSB0YWcgb3IgJiM4MjIwO3RvX2Zvcm0mIzgyMjE7LiBJbiBv cmRlciB0byBub3Qgc2hvdyB0aGUgeW91ciAmIzgyMjA7dG8mIzgyMjE7IGFkZHJlc3Mgb24g dGhlIHNlbmRlciYjODIxNztzIGNvcHkgaXQgaXMgdHJhbnNmZXJyZWQgdG8gdGhlICYjODIy MDtCY2MmIzgyMjE7IGZpZWxkIGFuZCB0aGUgc2VuZGVyJiM4MjE3O3MgYWRkcmVzcyBiZWNv bWVzIHRoZSAmIzgyMjA7dG8mIzgyMjE7IGFkZHJlc3MuIFRoaXMgbWVhbnMgdGhhdCBhcyBi b3RoIGNvcGllcyBhcmUgaWRlbnRpY2FsIHlvdXIgJiM4MjIwO3RvJiM4MjIxOyBhZGRyZXNz IHdpbGwgbm90IGJlIHNob3duIG9uIHlvdXIgY29weSBlaXRoZXIuIERlZmF1bHQgaXMgJiM4 MjIwO25vJiM4MjIxOy4gT3B0aW9uYWwuPC9saT4KCQk8bGk+PHN0cm9uZz5mb3JtPC9zdHJv bmc+ICYjODIxMTsgVGhlIG5hbWUgb2YgeW91ciBmb3JtIHRlbXBsYXRlIGNvbnRhaW5pbmcg dGhlIGZpZWxkIGxheW91dC4gT3B0aW9uYWwuPC9saT4KCQk8bGk+PHN0cm9uZz5mcm9tPC9z dHJvbmc+ICYjODIxMTsgdXNlcyB0aGUgYWRkcmVzcyBzcGVjaWZpZWQgaW4gdGhpcyBhdHRy aWJ1dGUgaW4gdGhlICYjODIyMDtGcm9tOiYjODIyMTsgZmllbGQgd2hlbiBzZW5kaW5nIGVt YWlsLiBJZiBubyA8Y29kZT5mcm9tPC9jb2RlPiBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVkLCB0 aGUgc2VuZGVyJiM4MjE3O3MgZW1haWwgYWRkcmVzcyB3aWxsIGJlIHVzZWQgZm9yIHRoZSAm IzgyMjA7RnJvbTomIzgyMjE7IGZpZWxkLiBXaGVuIDxjb2RlPmZyb208L2NvZGU+IGF0dHJp YnV0ZSBpcyBzcGVjaWZpZWQsIHRoZSBzZW5kZXImIzgyMTc7cyBlbWFpbCBhZGRyZXNzIHdp bGwgYmUgcGxhY2VkIGluIHRoZSAmIzgyMjA7UmVwbHktVG86JiM4MjIxOyBmaWVsZCBpbnN0 ZWFkLiBPcHRpb25hbC48L2xpPgoJCTxsaT48c3Ryb25nPmZyb21fZm9ybTwvc3Ryb25nPiAm IzgyMTE7IFRoZSBuYW1lIG9mIHlvdXIgZm9ybSB0ZW1wbGF0ZSBjb250YWluaW5nICYjODIy MDtzZW50IGZyb20mIzgyMjE7IGFkZHJlc3MuIE9wdGlvbmFsLjwvbGk+CgkJPGxpPjxzdHJv bmc+bGFiZWw8L3N0cm9uZz4gJiM4MjExOyBDYW4gYmUgdXNlZCB0byBnaXZlIHRoZSBmaWVs ZHNldCBhIGxhYmVsIGFuZCBpcyBhbHNvIHVzZWQgYnkgdGhlIDxjb2RlPiZsdDtsZWdlbmQm Z3Q7PC9jb2RlPiB0YWcuIERlZmF1bHQgaXMgJiM4MjIwO0NvbnRhY3QmIzgyMjE7LiBTZXR0 aW5nIHRoaXMgdG8gPGNvZGU+bGFiZWw9IiI8L2NvZGU+IGlzIG9uZSB3YXkgb2Ygc3RvcHBp bmcgdGhlIDxjb2RlPiZsdDtsZWdlbmQmZ3Q7PC9jb2RlPiB0YWcgZGlzcGxheWluZyBhbnl0 aGluZy4gT3B0aW9uYWwuPC9saT4KCQk8bGk+PHN0cm9uZz5yZWRpcmVjdDwvc3Ryb25nPiAm IzgyMTE7IFRoaXMgY2FuIGJlIHVzZWQgdG8gcmVwbGFjZSB0aGFua3MoYSBidWlsdC1pbiBk ZWZhdWx0KSBvciB0aGFua3NfZm9ybSAob3B0aW9uYWwgYXR0cmlidXRlKSBhbmQgd2lsbCBz ZW5kIGEgMzAyICgmIzgyMjA7c2VlIGFsc28mIzgyMjE7KSBoZWFkZXIsIGFzIG9wcG9zZWQg dG8gYSAzMDEgKCYjODIyMDttb3ZlZCBwZXJtYW5lbnRseSYjODIyMTspLiBUaGUgcmVkaXJl Y3QgYXR0cmlidXRlIHVzZXMgeW91ciBUZXh0cGF0dGVybiBzaXRlIHVybCAobGlrZSB0aGUg dGFnICYjNjA7dHhwOnNpdGUmIzk1O3VybCAvJiM2MjspIGFzIGl0JiM4MjE3O3MgYmFzZS4g RXhhbXBsZTogcmVkaXJlY3Q9JiM4MjIxO21vbmtleSYjODIyMTsgd291bGQgc2VuZCB5b3Ug dG8gaHR0cDovL3lvdXItZG9tYWluLmNvbS9tb25rZXkuIE9wdGlvbmFsLjwvbGk+CgkJPGxp PjxzdHJvbmc+c2VuZF9hcnRpY2xlPC9zdHJvbmc+ICYjODIxMTsgVXNpbmcgPGNvZGU+c2Vu ZF9hcnRpY2xlPSJ5ZXMiPC9jb2RlPiBlbmFibGVzIGV4dHJhIGZ1bmN0aW9ucyBmb3IgdXNl IHdpdGggPGEgaHJlZj0iI2FydGljbGUiPjxzdHJvbmc+ICYjNjA7dHhwOnplbSYjOTU7Y29u dGFjdCYjOTU7c2VuZCYjOTU7YXJ0aWNsZSYjNjI7IDwvc3Ryb25nPjwvYT4gKHNlZSBiZWxv dykuIERlZmF1bHQgaXMgJiM4MjIwO25vJiM4MjIxOy4gT3B0aW9uYWwuPC9saT4KCQk8bGk+ PHN0cm9uZz5zdWJqZWN0PC9zdHJvbmc+ICYjODIxMTsgQ2FuIGJlIHVzZWQgd2hlbiB5b3Ug dXNlIHRoZSBmb3JtIGluIGEgc3BlY2lmaWMgYXJlYSBvZiBhIHNpdGUgdGhhdCByZWxhdGVz IHRvIGEgc3BlY2lmaWMgc3ViamVjdC4gVGhlIHNpdGUgbmFtZSBpcyBpbmNsdWRlZCBieSBk ZWZhdWx0LiBPcHRpb25hbC48L2xpPgoJCTxsaT48c3Ryb25nPnN1YmplY3RfZm9ybTwvc3Ry b25nPiAmIzgyMTE7IFRoZSBuYW1lIG9mIHlvdXIgZm9ybSB0ZW1wbGF0ZSwgaWYgeW91IHVz ZSBvbmUsIGNvbnRhaW5pbmcgdGhlIHN1YmplY3QuIE9wdGlvbmFsLjwvbGk+CgkJPGxpPjxz dHJvbmc+dGhhbmtzPC9zdHJvbmc+ICYjODIxMTsgWW91ciB0aGFuayB5b3UgbWVzc2FnZS4g T3B0aW9uYWwuPC9saT4KCQk8bGk+PHN0cm9uZz50aGFua3NfZm9ybTwvc3Ryb25nPiAmIzgy MTE7IFRoZSBuYW1lIG9mIHlvdXIgZm9ybSB0ZW1wbGF0ZSBjb250YWluaW5nIGEgdGhhbmsg eW91IG1lc3NhZ2UuIE9wdGlvbmFsLjwvbGk+CgkJPGxpPjxzdHJvbmc+dG88L3N0cm9uZz4g JiM4MjExOyBkZXN0aW5hdGlvbiBhZGRyZXNzLiA8c3Ryb25nPlJlcXVpcmVkPC9zdHJvbmc+ LjwvbGk+CgkJPGxpPjxzdHJvbmc+dG9fZm9ybTwvc3Ryb25nPiAmIzgyMTE7IFRoZSBuYW1l IG9mIHlvdXIgZm9ybSB0ZW1wbGF0ZSwgaWYgeW91IHVzZSBvbmUsIGNvbnRhaW5pbmcgdGhl ICYjODIyMDt0byYjODIyMTsgZW1haWwgYWRkcmVzcy4gT3B0aW9uYWwuPC9saT4KCQk8bGk+ PHN0cm9uZz5zaG93X2lucHV0PC9zdHJvbmc+ICYjODIxMTsgVXNlIDxjb2RlPnNob3dfaW5w dXQ9Im5vIjwvY29kZT4gdG8gZGlzYWJsZSBkaXNwbGF5IG9mIHRoZSBpbnB1dCBmb3JtLiBP cHRpb25hbC48L2xpPgoJCTxsaT48c3Ryb25nPnNob3dfZXJyb3I8L3N0cm9uZz4gJiM4MjEx OyBVc2UgPGNvZGU+c2hvd19lcnJvcj0ibm8iPC9jb2RlPiB0byBkaXNhYmxlIGRpc3BsYXkg b2YgZXJyb3IgYW5kIHN0YXR1cyBtZXNzYWdlcy4gT3B0aW9uYWwuPC9saT4KCTwvdWw+Cjxj b2RlPnNob3dfaW5wdXQ8L2NvZGU+IGFuZCA8Y29kZT5zaG93X2Vycm9yPC9jb2RlPiBjYW4g YmUgdXNlZCB0byBkaXNwbGF5IHRoZSBmb3JtIGFuZCBlcnJvci90aGFuayB5b3UgbWVzc2Fn ZXMgb24gZGlmZmVyZW50IHBhcnRzIG9mIGEgcGFnZS4gRm9yIGV4YW1wbGU6Cgk8cD4mIzYw O2RpdiBpZCYjNjE7JiMzNDtlcnJvciYjMzQ7JiM2MjsmIzYwO3R4cDp6ZW0mIzk1O2NvbnRh Y3QgZm9ybSYjNjE7JiMzNDtjb250YWN0JiM5NTtmb3JtJiMzNDsgc2hvdyYjOTU7aW5wdXQm IzYxOyYjMzQ7bm8mIzM0OyAvJiM2MjsmIzYwOy9kaXYmIzYyOzxiciAvPgomIzYwO2RpdiBp ZCYjNjE7JiMzNDtpbnB1dGZvcm0mIzM0OyYjNjI7JiM2MDt0eHA6emVtJiM5NTtjb250YWN0 IGZvcm0mIzYxOyYjMzQ7Y29udGFjdCYjOTU7Zm9ybSYjMzQ7IHNob3cmIzk1O2Vycm9yJiM2 MTsmIzM0O25vJiMzNDsgLyYjNjI7JiM2MDsvZGl2JiM2Mjs8L3A+CiA8aHIgLz4KCTxwIHN0 eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjsiPjxzdHJvbmc+VGhlIHJlbWFpbmluZyB0YWdzIG1h eSBvbmx5IGJlIHVzZWQgd2l0aGluIGEgJiM2MDt0eHA6emVtJiM5NTtjb250YWN0JiM2Mjsg Zm9ybSBvciBjb250YWluZXI8L3N0cm9uZz48L3A+CiA8aHIgLz4KCTxwPjxzdHJvbmc+ICYj NjA7dHhwOnplbSYjOTU7Y29udGFjdCYjOTU7dGV4dCAvJiM2MjsgPC9zdHJvbmc+PC9wPgoJ PHA+Q3JlYXRlcyBhIHRleHQgaW5wdXQgZmllbGQgYW5kIGNvcnJlc3BvbmRpbmcgPGNvZGU+ Jmx0O2xhYmVsJmd0OzwvY29kZT4gdGFnLiBUaGUgaW5wdXQgdmFsdWUgd2lsbCBiZSBpbmNs dWRlZCBpbiB0aGUgZW1haWwsIHByZWNlZGVkIGJ5IHRoZSBsYWJlbC48L3A+Cgk8cD5BdHRy aWJ1dGVzOi08L3A+Cgk8dWw+CgkJPGxpPjxzdHJvbmc+YnJlYWs8L3N0cm9uZz4gJiM4MjEx OyBCcmVhayB0YWcgYmV0d2VlbiB0aGUgbGFiZWwgYW5kIGZpZWxkLiBEZWZhdWx0IGlzIDxj b2RlPiZsdDticiAvJmd0OzwvY29kZT4uIFVzZSA8Y29kZT5icmVhaz0iIjwvY29kZT4gdG8g cHV0IHRoZSBsYWJlbCBhbmQgaW5wdXQgZmllbGQgb24gdGhlIHNhbWUgbGluZS4gT3B0aW9u YWwuPC9saT4KCQk8bGk+PHN0cm9uZz5kZWZhdWx0PC9zdHJvbmc+ICYjODIxMTsgRGVmYXVs dCB2YWx1ZSB3aGVuIG5vIGlucHV0IGlzIHByb3ZpZGVkLiBPcHRpb25hbC48L2xpPgoJCTxs aT48c3Ryb25nPmxhYmVsPC9zdHJvbmc+ICYjODIxMTsgVGV4dCBsYWJlbCBkaXNwbGF5ZWQg dG8gdGhlIHVzZXIuIERlZmF1bHQgaXMgJiM4MjIwO3RleHQmIzgyMjE7LiBPcHRpb25hbC48 L2xpPgoJCTxsaT48c3Ryb25nPm1pbjwvc3Ryb25nPiAmIzgyMTE7IE1pbmltdW0gaW5wdXQg bGVuZ3RoIGluIGNoYXJhY3RlcnMuIEFuIGVycm9yIG1lc3NhZ2Ugd2lsbCBiZSBkaXNwbGF5 ZWQgaWYgdGhlIGlucHV0IGlzIGxlc3MgdGhhbiBtaW4uIERlZmF1bHQgaXMgMC4gT3B0aW9u YWwuPC9saT4KCQk8bGk+PHN0cm9uZz5tYXg8L3N0cm9uZz4gJiM4MjExOyBNYXhpbXVtIGlu cHV0IGxlbmd0aCBpbiBjaGFyYWN0ZXJzLiBVc2VkIGZvciB0aGUgbWF4bGVuZ3RoIHBhcmFt ZXRlciBvZiB0aGUgaW5wdXQgZmllbGQuIE5vIGVycm9yIHdpbGwgYmUgZGlzcGxheWVkIGlm IHRoZSBsZW5ndGggaXMgZXhjZWVkZWQsIGJ1dCB0aGUgdmFsdWUgd2lsbCBiZSB0cnVuY2F0 ZWQgZm9yIHRoZSBlbWFpbC4gRGVmYXVsdCBpcyAxMDAuIE9wdGlvbmFsLjwvbGk+CgkJPGxp PjxzdHJvbmc+bmFtZTwvc3Ryb25nPiAmIzgyMTE7IEZpZWxkIG5hbWUsIGFzIHVzZWQgaW4g dGhlIEhUTUwgaW5wdXQgdGFnLiBEZWZhdWx0cyB0byB0aGUgbGFiZWwuIE9wdGlvbmFsLjwv bGk+CgkJPGxpPjxzdHJvbmc+c2l6ZTwvc3Ryb25nPiAmIzgyMTE7IFNpemUgb2YgdGhlIGlu cHV0IGZpZWxkIGFzIGRpc3BsYXllZCB0byB0aGUgdXNlci4gTGVhdmUgZW1wdHkgZm9yIHRo ZSBicm93c2VyIGRlZmF1bHQuIE9wdGlvbmFsLjwvbGk+CgkJPGxpPjxzdHJvbmc+cmVxdWly ZWQ8L3N0cm9uZz4gJiM4MjExOyA8Y29kZT5yZXF1aXJlZD0ieWVzIjwvY29kZT4gbWFrZXMg dGhlIGZpZWxkIG1hbmRhdG9yeS4gVGhlIGZvcm0gd2lsbCBkaXNwbGF5IGFuIGVycm9yIG1l c3NhZ2UgaWYgbm8gaW5wdXQgaXMgcHJvdmlkZWQuIERlZmF1bHQgaXMgJiM4MjIwO3llcyYj ODIyMTsuIE9wdGlvbmFsLjwvbGk+Cgk8L3VsPgogPGhyIC8+CiA8cCBpZD0iZW1haWwiPjxz dHJvbmc+ICYjNjA7dHhwOnplbSYjOTU7Y29udGFjdCYjOTU7ZW1haWwgLyYjNjI7IDwvc3Ry b25nPjwvcD4KCTxwPklucHV0IGZpZWxkIGZvciB1c2VyJiM4MjE3O3MgZW1haWwgYWRkcmVz cy4gVGhlIGlucHV0IHZhbHVlIHdpbGwgYXV0b21hdGljYWxseSBiZSB2YWxpZGF0ZWQgdG8g bWFrZSBzdXJlIGl0IGlzIG9mIHRoZSBmb3JtICYjODIyMDthYmNAeHh4Lnl5eVsuenp6XSYj ODIyMTsuIElmIHRoZSBVbml4LW9ubHkgZ2V0bXhycigpIGZ1bmN0aW9uIGlzIGF2YWlsYWJs ZSwgdGhlIGZvcm0gd2lsbCB2ZXJpZnkgdGhhdCBhbiBBIG9yIE1YIHJlY29yZCBleGlzdHMg Zm9yIHRoZSBkb21haW4uPC9wPgoJPHA+QXR0cmlidXRlcyBhcmUgdGhlIHNhbWUgYXMgZm9y ICYjNjA7dHhwOnplbSYjOTU7Y29udGFjdCYjOTU7dGV4dCAvJiM2MjssIGV4Y2VwdCB0aGF0 IHRoZSBkZWZhdWx0IGxhYmVsIGlzICYjODIyMDtFbWFpbCYjODIyMTsuPC9wPgogPGhyIC8+ Cgk8cD48c3Ryb25nPiAmIzYwO3R4cDp6ZW0mIzk1O2NvbnRhY3QmIzk1O3NlbGVjdCAvJiM2 MjsgPC9zdHJvbmc+PC9wPgoJPHA+Q3JlYXRlcyBhIGRyb3AtZG93biBzZWxlY3Rpb24gbGlz dC48L3A+Cgk8cD5BdHRyaWJ1dGVzIGFyZSBzaW1pbGFyIHRvICYjNjA7dHhwOnplbSYjOTU7 Y29udGFjdCYjOTU7dGV4dCAvJiM2MjssIHdpdGggdGhlIGZvbGxvd2luZyBhZGRpdGlvbnM6 LTwvcD4KCTx1bD4KCQk8bGk+PHN0cm9uZz5saXN0PC9zdHJvbmc+ICYjODIxMTsgQSBjb21t YSBzZXBhcmF0ZWQgbGlzdCBvZiBpdGVtcyB0byBzaG93IGluIHRoZSBkcm9wLWRvd24gYm94 OyBlLmcuICYjODIyMDtTYWxlcyxTdXBwb3J0LEFjY291bnRzJiM4MjIxOy48L2xpPgoJCTxs aT48c3Ryb25nPmRlbGltaXRlcjwvc3Ryb25nPiAmIzgyMTE7IFRoZSBzZXBhcmF0b3IgdXNl ZCBpbiBwYXJzaW5nIHRoZSBsaXN0IGF0dHJpYnV0ZS4gRGVmYXVsdCBpcyAmIzgyMjE7LCYj ODIyMTs8L2xpPgoJCTxsaT48c3Ryb25nPnNlbGVjdGVkPC9zdHJvbmc+ICYjODIxMTsgVGhl IGxpc3QgaXRlbSB0aGF0IGlzIHNlbGVjdGVkIGJ5IGRlZmF1bHQ7IGUuZy4gJiM4MjIwO1N1 cHBvcnQmIzgyMjE7LiBEZWZhdWx0IGlzICYjODIyMDt5ZXMmIzgyMjE7LjwvbGk+Cgk8L3Vs PgoJPHA+bWluIGFuZCBtYXggaGF2ZSBubyBlZmZlY3QuIElmIDxjb2RlPnJlcXVpcmVkPSJ5 ZXMiPC9jb2RlPiAoZGVmYXVsdCksIGFuIGVtcHR5IGl0ZW0gd2lsbCBub3QgYmUgYWNjZXB0 ZWQuIFVzZSAmIzYwO3R4cDp6ZW0mIzk1O2NvbnRhY3QmIzk1O3NlbGVjdCBsaXN0JiM2MTsm IzM0OyxTYWxlcyxTdXBwb3J0JiMzNDsgLyYjNjI7IHRvIG1ha2UgdGhlIGZpcnN0IGl0ZW0g YmxhbmssIGZvcmNpbmcgdGhlIHVzZXIgdG8gbWFrZSBhIHNlbGVjdGlvbi48L3A+CiA8aHIg Lz4KCTxwPjxzdHJvbmc+ICYjNjA7dHhwOnplbSYjOTU7Y29udGFjdCYjOTU7Y2hlY2tib3gg LyYjNjI7IDwvc3Ryb25nPjwvcD4KCTxwPkNyZWF0ZXMgYSBjaGVjayBib3guPC9wPgoJPHA+ QXR0cmlidXRlcyBhcmUgc2ltaWxhciB0byAmIzYwO3R4cDp6ZW0mIzk1O2NvbnRhY3QmIzk1 O3RleHQgLyYjNjI7LCBleGNlcHQgdGhhdCBtaW4gYW5kIG1heCBoYXZlIG5vIGVmZmVjdC4g QWRkaXRpb25hbCBhdHRyaWJ1dGVzOi08L3A+Cgk8dWw+CgkJPGxpPjxzdHJvbmc+Y2hlY2tl ZDwvc3Ryb25nPiAmIzgyMTE7IFVzZSA8Y29kZT5jaGVja2VkPSJ5ZXMiPC9jb2RlPiB0byBt YWtlIHRoZSBib3ggY2hlY2tlZCB3aGVuIHRoZSBmb3JtIGlzIGZpcnN0IGRpc3BsYXllZC4g RGVmYXVsdCBpcyAmIzgyMjA7bm8mIzgyMjE7LiBPcHRpb25hbC48L2xpPgoJPC91bD4KCTxw PklmIDxjb2RlPnJlcXVpcmVkPSJ5ZXMiPC9jb2RlPiAoZGVmYXVsdCksIHRoZSBmb3JtIHdv biYjODIxNzt0IGJlIGFjY2VwdGVkIHVubGVzcyB0aGUgYm94IGlzIGNoZWNrZWQuIFVzZSAm IzYwO3R4cDp6ZW0mIzk1O2NvbnRhY3QmIzk1O2NoZWNrYm94IGxhYmVsJiM2MTsmIzM0O0kg YWNjZXB0IHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyYjMzQ7IC8mIzYyOyB0byBtYWtlIGEg Y3J1ZGUgc2hyaW5rLXdyYXAgYWdyZWVtZW50IHdoaWNoIG11c3QgYmUgY2hlY2tlZCBieSB0 aGUgdXNlciBiZWZvcmUgdGhlIGVtYWlsIHdpbGwgYmUgc2VudC48L3A+CiA8aHIgLz4KCTxw PjxzdHJvbmc+ICYjNjA7dHhwOnplbSYjOTU7Y29udGFjdCYjOTU7dGV4dGFyZWEgLyYjNjI7 IDwvc3Ryb25nPjwvcD4KCTxwPlRleHRhcmVhIGlucHV0IGZpZWxkLjwvcD4KCTxwPlN1cHBv cnRzIHRoZSBzYW1lIGF0dHJpYnV0ZXMgYXMgJiM2MDt0eHA6emVtJiM5NTtjb250ZW50JiM5 NTt0ZXh0IC8mIzYyOywgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHNpemUuIFRoZSBkZWZhdWx0 IGxhYmVsIGlzICYjODIyMDtNZXNzYWdlJiM4MjIxOyBhbmQgdGhlIGRlZmF1bHQgbWF4IGlz IDEwMDAwLiBBZGRpdGlvbmFsIGF0dHJpYnV0ZXM6LTwvcD4KCTx1bD4KCQk8bGk+PHN0cm9u Zz5jb2xzPC9zdHJvbmc+ICYjODIxMTsgY29sdW1uIHdpZHRoLiBEZWZhdWx0IGlzIDUwLiBP cHRpb25hbC48L2xpPgoJCTxsaT48c3Ryb25nPnJvd3M8L3N0cm9uZz4gJiM4MjExOyByb3cg aGVpZ2h0LiBEZWZhdWx0IGlzIDYuIE9wdGlvbmFsLjwvbGk+Cgk8L3VsPgogPGhyIC8+Cgk8 cD48c3Ryb25nPiAmIzYwO3R4cDp6ZW0mIzk1O2NvbnRhY3QmIzk1O3JhZGlvIC8mIzYyOyA8 L3N0cm9uZz48L3A+Cgk8cD5DcmVhdGVzICYjODIyMDtyYWRpbyBidXR0b25zJiM4MjIxOyBz byB0aGF0IHlvdXIgdmlzaXRvcnMgY2FuIGNvbXBsZXRlIHN1cnZleXMvcXVlc3Rpb25haXJl cy4gQ29kZSBncmFjaW91c2x5IHByb3ZpZGVkIGJ5IFJvYmVydCBXZXR6bG1heXIgKHdldCku PC9wPgoJPHA+PHN0cm9uZz5Vc2FnZSBFeGFtcGxlPC9zdHJvbmc+PC9wPgoJPHA+JiM2MDt0 eHA6emVtJiM5NTtjb250YWN0JiM5NTtyYWRpbyBuYW1lJiM2MTsmIzM0O3N0ZWFrJiMzNDsg bGFiZWwmIzYxOyYjMzQ7V2VsbCBEb25lJiMzNDsgLyYjNjI7PGJyIC8+CiYjNjA7dHhwOnpl bSYjOTU7Y29udGFjdCYjOTU7cmFkaW8gbmFtZSYjNjE7JiMzNDtzdGVhayYjMzQ7IGxhYmVs JiM2MTsmIzM0O01lZGl1bSYjMzQ7IC8mIzYyOzxiciAvPgomIzYwO3R4cDp6ZW0mIzk1O2Nv bnRhY3QmIzk1O3JhZGlvIG5hbWUmIzYxOyYjMzQ7c3RlYWsmIzM0OyBsYWJlbCYjNjE7JiMz NDtSYXJlJiMzNDsgLyYjNjI7PC9wPgoJPHA+JiM2MDt0eHA6emVtJiM5NTtjb250YWN0JiM5 NTtyYWRpbyBuYW1lJiM2MTsmIzM0O2RyaW5rJiMzNDsgbGFiZWwmIzYxOyYjMzQ7V2luZSYj MzQ7IC8mIzYyOzxiciAvPgomIzYwO3R4cDp6ZW0mIzk1O2NvbnRhY3QmIzk1O3JhZGlvIG5h bWUmIzYxOyYjMzQ7ZHJpbmsmIzM0OyBsYWJlbCYjNjE7JiMzNDtXYXRlciYjMzQ7IC8mIzYy OzwvcD4KCTxwPkdyb3VwIG11dHVhbGx5IGV4Y2x1c2l2ZSByYWRpbyBidXR0b25zIGJ5IHVz aW5nIGlkZW50aWNhbCAmIzgyMjA7bmFtZXMmIzgyMjE7LiBPbmx5IHRoZSBjaG9zZW4gcmFk aW8gYnV0dG9uIGZyb20gZWFjaCBncm91cCB3aWxsIGJlIHBvc3RlZCB0byB0aGUgbWVzc2Fn ZS4gVGhlIG1lc3NhZ2Ugd2lsbCBiZSBvdXRwdXQgaW4gdGhlIGZvcm0gPGNvZGU+JG5hbWU6 ICRsYWJlbDwvY29kZT4gZm9yIGVhY2ggb2YgdGhlIGNob3NlbiByYWRpbyBidXR0b25zLjwv cD4KCTxwPkF0dHJpYnV0ZXM6LTwvcD4KCTx1bD4KCQk8bGk+PHN0cm9uZz5icmVhazwvc3Ry b25nPiAmIzgyMTE7IEJyZWFrIHRhZyBiZXR3ZWVuIHRoZSBsYWJlbCBhbmQgZmllbGQuIERl ZmF1bHQgaXMgYSBzcGFjZS4gT3B0aW9uYWwuPC9saT4KCQk8bGk+PHN0cm9uZz5jaGVja2Vk PC9zdHJvbmc+ICYjODIxMTsgVXNlIDxjb2RlPmNoZWNrZWQ9InllcyI8L2NvZGU+IHRvIG1h a2UgYSByYWRpbyBidXR0b24gY2hlY2tlZCB3aGVuIHRoZSBmb3JtIGlzIGZpcnN0IGRpc3Bs YXllZC4gRGVmYXVsdCBpcyAmIzgyMjA7bm8mIzgyMjE7LiBPcHRpb25hbC48L2xpPgoJCTxs aT48c3Ryb25nPmxhYmVsPC9zdHJvbmc+ICYjODIxMTsgVGV4dCBsYWJlbCBkaXNwbGF5ZWQg dG8gdGhlIHVzZXIuIERlZmF1bHQgaXMgJiM4MjIwO3JhZGlvJiM4MjIxOy4gT3B0aW9uYWwu PC9saT4KCQk8bGk+PHN0cm9uZz5uYW1lPC9zdHJvbmc+ICYjODIxMTsgRmllbGQgbmFtZSwg YXMgdXNlZCBpbiB0aGUgSFRNTCBpbnB1dCB0YWcuIERlZmF1bHRzIHRvIHRoZSBsYWJlbCB0 aG91Z2ggeW91IHNob3VsZCBiZSBzcGVjaWZ5aW5nIGJvdGggPGNvZGU+bmFtZTwvY29kZT4g YW5kIDxjb2RlPmxhYmVsPC9jb2RlPiBhdHRyaWJ1dGVzIGluIHRoZSB0YWcuIE9wdGlvbmFs LjwvbGk+Cgk8L3VsPgogPGhyIC8+Cgk8cD48c3Ryb25nPiAmIzYwO3R4cDp6ZW0mIzk1O2Nv bnRhY3QmIzk1O3N1Ym1pdCAvJiM2MjsgPC9zdHJvbmc+PC9wPgoJPHA+U3VibWl0IGJ1dHRv bi48YnIgLz4KV2hlbiB1c2VkIGFzIGEgY29udGFpbmVyIHRhZywgYSAmIzgyMjA7YnV0dG9u JiM4MjIxOyBlbGVtZW50IHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIGFuICYjODIyMDtpbnB1 dCYjODIyMTsgZWxlbWVudC48L3A+Cgk8cD5BdHRyaWJ1dGVzOi08L3A+Cgk8dWw+CgkJPGxp PjxzdHJvbmc+YnV0dG9uPC9zdHJvbmc+ICYjODIxMTsgQWRkaW5nIHRoZSA8Y29kZT5idXR0 b249InllcyI8L2NvZGU+IGF0dHJpYnV0ZSB0byB0aGUgdGFnIHdpbGwgZ2l2ZSB5b3UgYSAm IzgyMjA7YnV0dG9uJiM4MjIxOyBlbGVtZW50IGluc3RlYWQgb2YgYW4gJiM4MjIwO2lucHV0 JiM4MjIxOyBlbGVtZW50LiBEZWZhdWx0IGlzICYjODIyMDtubyYjODIyMTsuIE9wdGlvbmFs LjwvbGk+CgkJPGxpPjxzdHJvbmc+bGFiZWw8L3N0cm9uZz4gJiM4MjExOyBMYWJlbC9CdXR0 b24gdGV4dC4gRGVmYXVsdCBpcyAmIzgyMjA7U2VuZCYjODIyMTsuIE9wdGlvbmFsLjwvbGk+ Cgk8L3VsPgogPGhyIC8+Cgk8cD48c3Ryb25nPiAmIzYwO3R4cDp6ZW0mIzk1O2NvbnRhY3Qm Izk1O3NlcnZlcmluZm8gLyYjNjI7IDwvc3Ryb25nPjwvcD4KCTxwPlRoaXMgdGFnIGhhcyBu byBlZmZlY3Qgb24gdGhlIGZvcm0gb3IgSFRNTCBvdXRwdXQsIGJ1dCB3aWxsIGluY2x1ZGUg YWRkaXRpb25hbCBpbmZvcm1hdGlvbiBpbiB0aGUgZW1haWwgYmFzZWQgb24gdGhlIFBIUCAk X1NFUlZFUiB2YXJpYWJsZS4gRm9yIGV4YW1wbGUsICYjNjA7dHhwOnplbSYjOTU7Y29udGFj dCYjOTU7c2VydmVyaW5mbyBuYW1lJiM2MTsmIzM0O1JFTU9URSYjOTU7QUREUiYjMzQ7IGxh YmVsJiM2MTsmIzM0O0lQJiMzNDsgLyYjNjI7IHdpbGwgcmVwb3J0IHRoZSB1c2VyJiM4MjE3 O3MgSVAgYWRkcmVzcy48L3A+Cgk8cD5BdHRyaWJ1dGVzOi08L3A+Cgk8dWw+CgkJPGxpPjxz dHJvbmc+bmFtZTwvc3Ryb25nPiAmIzgyMTE7IG5hbWUgb2YgdGhlIHNlcnZlciB2YXJpYWJs ZSwgZS5nLiBSRVFVRVNUX1VSSSwgSFRUUF9VU0VSX0FHRU5ULiBTZWUgdGhlIFBIUCBtYW51 YWwgZm9yIGEgZnVsbCBsaXN0LiA8c3Ryb25nPlJlcXVpcmVkPC9zdHJvbmc+LjwvbGk+CgkJ PGxpPjxzdHJvbmc+bGFiZWw8L3N0cm9uZz4gJiM4MjExOyBpZiBzdXBwbGllZCwgdGhpcyB3 aWxsIGJlIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGZpZWxkIGluIHRoZSBlbWFpbC4gT3B0aW9u YWwuPC9saT4KCTwvdWw+CiA8aHIgLz4KPGRpdiBpZD0iYXJ0aWNsZSIgc3R5bGU9InRleHQt YWxpZ246Y2VudGVyO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjI0cHg7dGV4dC1kZWNv cmF0aW9uOnVuZGVybGluZTsiPlplbSBDb250YWN0IFNlbmQgQXJ0aWNsZTwvZGl2PgoJPHA+ RGV2ZWxvcGVkIGJ5IHRyYW5xdWlsbG8sIHRoaXMgYWxsb3dzIHlvdSB0byBhZGQgYSAmIzgy MjA7U2VuZCBBcnRpY2xlJiM4MjIxOyBsaW5rIHRvIGFuIGluZGl2aWR1YWwgYXJ0aWNsZSBm b3JtIHdoaWNoLCB3aGVuIGNsaWNrZWQgYnkgYSB2aXNpdG9yLCB3aWxsIGRpc3BsYXkgYSBm b3JtIGZvciB0aGVtIHRvIGVudGVyIHRoZWlyIG5hbWUsIHRoZWlyIGZyaWVuZCYjODIxNztz IGVtYWlsIGFkZHJlc3MgYW5kIGFuIG9wdGlvbmFsIHBlcnNvbmFsIG1lc3NhZ2UuIFdoZW4g dGhlIGZvcm0gaXMgc3VibWl0dGVkIHRoZSBhcnRpY2xlIHRpdGxlLCBleGNlcnB0IGFuZCBi b2R5IGFyZSBpbmNsdWRlZCBpbiB0aGUgZW1haWwuPC9wPgoJPHA+PHN0cm9uZz4gJiM2MDt0 eHA6emVtJiM5NTtjb250YWN0IHNlbmQmIzk1O2FydGljbGUmIzYxOyYjMzQ7eWVzJiMzNDsg LyYjNjI7IDwvc3Ryb25nPjwvcD4KCTxwPlVzZSB0aGlzIHRhZyBpbiB5b3VyIGluZGl2aWR1 YWwgYXJ0aWNsZSBmb3JtLCB3aGVyZSB5b3Ugd2FudCB0aGUgY29udGFjdCBmb3JtIHRvIGJl IGRpc3BsYXllZC4gRW5zdXJlIHRoYXQgeW91IGluY2x1ZGUgdGhlIGF0dHJpYnV0ZSA8Y29k ZT5zZW5kX2FydGljbGU9InllcyI8L2NvZGU+LiBJdCBvcGVyYXRlcyBhcyBhIHBsYWNlLWhv bGRlci4gVGhlIGZvcm0gd2lsbCBub3QgYWN0dWFsbHkgYXBwZWFyIG9uLXNjcmVlbiB1bnRp bCB0aGUgbGluayBjb250YWluZWQgaW4gbmV4dCB0YWcgaGFzIGJlZW4gYWN0aXZhdGVkLiBX aGVuIHRoZSBtZXNzYWdlIGhhcyBiZWVuIHNlbnQgdGhlIGZvcm0gd2lsbCBiZSByZXBsYWNl ZCB3aXRoIHRoZSAmIzgyMjA7dGhhbmsgeW91JiM4MjIxOyBtZXNzYWdlIG9yIGZvcm0uPC9w PgoJPHA+QXR0cmlidXRlcyBhcmUgaWRlbnRpY2FsIHRvIDxhIGhyZWY9IiNjb250YWN0Ij48 c3Ryb25nPiAmIzYwO3R4cDp6ZW0mIzk1O2NvbnRhY3QgLyYjNjI7IDwvc3Ryb25nPjwvYT4g aG93ZXZlciAmIzgyMjA7c3ViamVjdCYjODIyMTsgd2lsbCB1c2UgdGhlIGFydGljbGUmIzgy MTc7cyB0aXRsZSBmb3IgaXQmIzgyMTc7cyBjb250ZW50cyBhbmQgdGhlcmUgaXMgbm8gbmVl ZCB0byB1c2UgdGhlICYjODIyMDt0byYjODIyMTsgYXR0cmlidXRlIHdoZW4gdXNpbmcgdGhl IHRhZyB0aGlzIHdheSAoc2VlIHRoZSAmIzYwO3R4cDp6ZW0mIzk1O2NvbnRhY3QmIzk1O2Vt YWlsIG5hbWUmIzYxOyYjMzQ7cmVjZWl2ZXImIzM0OyAvJiM2MjsgdGFnIGJlbG93KS48L3A+ CiA8aHIgLz4KCTxwPjxzdHJvbmc+ICYjNjA7dHhwOnplbSYjOTU7Y29udGFjdCYjOTU7c2Vu ZCYjOTU7YXJ0aWNsZSAvJiM2MjsgPC9zdHJvbmc+PC9wPgoJPHA+VXNlIHRoaXMgdGFnIGlu IHlvdXIgaW5kaXZpZHVhbCBhcnRpY2xlIGZvcm0sIHdoZXJlIHlvdSB3YW50IHRoZSAmIzgy MjA7c2VuZCBhcnRpY2xlJiM4MjIxOyBsaW5rIHRvIGJlIGRpc3BsYXllZC48L3A+Cgk8cD5B dHRyaWJ1dGVzOi08L3A+Cgk8dWw+CgkJPGxpPjxzdHJvbmc+bGlua3RleHQ8L3N0cm9uZz4g JiM4MjExOyBUaGUgdGV4dCBkaXNwbGF5ZWQgZm9yIHRoZSBsaW5rLiBEZWZhdWx0IGlzICYj ODIyMDtzZW5kIGFydGljbGUmIzgyMjE7LiBPcHRpb25hbC48L2xpPgoJPC91bD4KIDxociAv PgoJPHA+PHN0cm9uZz4gJiM2MDt0eHA6emVtJiM5NTtjb250YWN0JiM5NTtlbWFpbCBuYW1l JiM2MTsmIzM0O3JlY2VpdmVyJiMzNDsgLyYjNjI7IDwvc3Ryb25nPjwvcD4KCTxwPlVzZSB0 aGlzIHRhZyBpbiB5b3VyIGNvbnRhY3QgZm9ybSB0ZW1wbGF0ZSB0byBkaXNwbGF5IGFuIGlu cHV0IGJveCBmb3IgdGhlIHJlY2VpdmVyJiM4MjE3O3MgZW1haWwgYWRkcmVzcyB0byBiZSBl bnRlcmVkLiBZb3UgbXVzdCBlbnN1cmUgdGhhdCB5b3UgaW5jbHVkZSB0aGUgYXR0cmlidXRl IDxjb2RlPm5hbWU9InJlY2VpdmVyIjwvY29kZT4gc28gdGhhdCB0aGUgcGx1Zy1pbiByZWNv Z25pc2VzIHRoaXMgYXMgdGhlICYjODIyMDt0byYjODIyMTsgYWRkcmVzcy4gRm9yIHRoaXMg cmVhc29uIGl0IGlzIGFkdmlzYWJsZSB0aGF0IHlvdSBjcmVhdGUgYW5kIHVzZSBhIHNlcGFy YXRlIGZvcm0gdGVtcGxhdGUgZm9yIHRoZXNlICYjODIyMDtzZW5kX2FydGljbGUmIzgyMjE7 IGZ1bmN0aW9ucy48L3A+Cgk8cD5BdHRyaWJ1dGVzIGFyZSB0aGUgc2FtZSBhcyBmb3IgPGEg aHJlZj0iI2VtYWlsIj48c3Ryb25nPiAmIzYwO3R4cDp6ZW0mIzk1O2NvbnRhY3QmIzk1O2Vt YWlsIC8mIzYyOyA8L3N0cm9uZz48L2E+LjwvcD4KIDxociAvPgo8ZGl2IGlkPSJzdHlsaW5n IiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6 MjRweDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyI+U3R5bGluZzwvZGl2PgoJPHA+V2hl biBlcnJvciBtZXNzYWdlcyByZWxhdGluZyB0byBpbmZvcm1hdGlvbiBlbnRlcmVkLCBvciBu b3QgZW50ZXJlZCwgaW50byB0aGUgZm9ybSBhcmUgb3V0cHV0IHRoZXkgYXJlIGNvbnRhaW5l ZCB3aXRoaW4gYSAmIzgyMjA7dWwmIzgyMjE7LiBUaGF0ICYjODIyMDt1bCYjODIyMTsgaGFz IGJlZW4gYWxsb2NhdGVkIDxjb2RlPmNsYXNzPSJ6ZW1FcnJvciI8L2NvZGU+LjwvcD4KCTxw PkFsbCBsYWJlbHMsIGlucHV0cyBhbmQgdGhlIHRleHRhcmVhIGhhdmUgdGhlaXIgb3duIGlu ZGl2aWR1YWwgJiM4MjIwO2lkJiM4MjIxOyBvciAmIzgyMjA7Y2xhc3MmIzgyMjE7IHdoaWNo IGlzIGVxdWFsIHRvIHRoZSB2YWx1ZSBvZiA8Y29kZT4kbmFtZTwvY29kZT4uIFRoaXMgbWF5 IGJlIGEgZGVmYXVsdCB2YWx1ZSBvciBvbmUgdGhhdCB5b3UgaGF2ZSBlbnRlcmVkIHlvdXJz ZWxmIHVzaW5nIHRoZSA8Y29kZT5uYW1lPSJ3aGF0ZXZlciI8L2NvZGU+IGF0dHJpYnV0ZS48 L3A+Cgk8cD5XaGVuIDxjb2RlPnJlcXVpcmVkPSJ5ZXMiPC9jb2RlPiwgdGhlIHJlbGV2YW50 IGxhYmVscyBhbmQgaW5wdXRzLCBvciBsYWJlbCBhbmQgdGhlIHRleHRhcmVhIGFyZSBnaXZl biBhIHNlY29uZCBjbGFzcyBvZiAmIzgyMjA7emVtUmVxdWlyZWQmIzgyMjE7IGFsb25nc2lk ZSB0aGVpciBpbmRpdmlkdWFsIGNsYXNzZXMgaW4gdGhlIGZvcm1hdCA8Y29kZT5jbGFzcz0i emVtUmVxdWlyZWQgJG5hbWUiPC9jb2RlPi4gQm90aCBjbGFzc2VzIGNhbiBiZSB1c2VkIGlu ZGl2aWR1YWxseSBzbyB0aGF0IHlvdSBjYW4gc2V0dXAgYSBnbG9iYWwgJiM4MjIwO3JlcXVp cmVkJiM4MjIxOyBzdHlsZSBhcyB3ZWxsIGFzIGluZGl2aWR1YWwgc3R5bGluZy48L3A+Cgk8 cD5XaGVuIGFuIGVycm9yIHJlbGF0aW5nIHRvIGFuIGlucHV0IG9yIHRoZSB0ZXh0YXJlYSBp cyBvdXRwdXQsIHRoZSByZWxldmFudCBsYWJlbCBhbmQgaW5wdXQsIG9yIGxhYmVsIGFuZCB0 aGUgdGV4dGFyZWEsIGhhdmUgdGhlIGNsYXNzICYjODIyMDtlcnJvckVsZW1lbnQmIzgyMjE7 IGFwcGVuZGVkIHRvICYjODIyMDt6ZW1SZXF1aXJlZCYjODIyMTsgaW4gdGhlIGZvcm1hdCA8 Y29kZT5jbGFzcz0iemVtUmVxdWlyZWRlcnJvckVsZW1lbnQgJG5hbWUiPC9jb2RlPi4gQWdh aW4sIGJvdGggY2xhc3NlcyBjYW4gYmUgdXNlZCBpbmRpdmlkdWFsbHkgc28gdGhhdCB5b3Ug Y2FuIHNldHVwIGEgZ2xvYmFsICYjODIyMDtlcnJvciYjODIyMTsgc3R5bGUgYWxvbmdzaWRl IHlvdXIgaW5kaXZpZHVhbCBzdHlsaW5nLjwvcD4KIDxociAvPgo8ZGl2IGlkPSJhcGkiIHN0 eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjtmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZToyNHB4 O3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Ij5aZW0gQ29udGFjdCBSZWJvcm4mIzgyMTc7 cyBBUEk8L2Rpdj4KCTxwPlRoZSBwbHVnaW4gQVBJIG9mIHplbSBjb250YWN0LCBkZXZlbG9w ZWQgYnkgVHJhbnF1aWxsbywgaXMgc2ltaWxhciB0byB0aGUgY29tbWVudHMgQVBJIG9mIFRl eHRwYXR0ZXJuLCB3aGljaCBpcyBleHBsYWluZWQgaW4gdGhlIFRleHRib29rPGJyIC8+Cjxh IGhyZWY9Imh0dHA6Ly90ZXh0cGF0dGVybi5uZXQvd2lraS9pbmRleC5waHA/dGl0bGU9UGx1 Z2luX0RldmVsb3BtZW50X1RvcGljcyI+UGx1Z2luIERldmVsb3BtZW50IFRvcGljczwvYT4g YW5kIDxhIGhyZWY9Imh0dHA6Ly90ZXh0cGF0dGVybi5uZXQvd2lraS9pbmRleC5waHA/dGl0 bGU9Q29tYmF0X0NvbW1lbnRfU3BhbSI+Q29tYmF0IENvbW1lbnQgU3BhbTwvYT4uPC9wPgoJ PHA+VGhlIHR3byBldmVudHMgZm9yIHplbV9jb250YWN0IGFyZSAmIzgyMTY7PGNvZGU+emVt Y29udGFjdC5zdWJtaXQ8L2NvZGU+JiM4MjE3OyBhbmQgJiM4MjE2Ozxjb2RlPnplbWNvbnRh Y3QuZm9ybTwvY29kZT4mIzgyMTc7LjxiciAvPgomIzgyMTY7PGNvZGU+emVtY29udGFjdC5z dWJtaXQ8L2NvZGU+JiM4MjE3OyBpcyBjYWxsZWQgYWZ0ZXIgdGhlIGZvcm0gaXMgc3VibWl0 dGVkIGFuZCB0aGUgdmFsdWVzIGFyZSBjaGVja2VkIGlmIGVtcHR5IG9yIHZhbGlkIGVtYWls YWRkcmVzc2VzLCBidXQgYmVmb3JlIHRoZSBtYWlsIGlzIHNlbnQuPGJyIC8+CiYjODIxNjs8 Y29kZT56ZW1jb250YWN0LmZvcm08L2NvZGU+JiM4MjE3OyBsZXQmIzgyMTc7cyB5b3UgaW5z ZXJ0IGNvbnRlbnQgaW4gdGhlIGNvbnRhY3QgZm9ybS48L3A+Cgk8cD5Gb3IgcmVmZXJlbmNl IGhlcmUgYXJlIHRoZSBjb21tYW5kcyB0aGF0IHdpbGwgYmUgaW50ZXJlc3RpbmcgdG8gcGx1 Z2luIGRldmVsb3BlcnM6PC9wPgoJPHA+Ly8gVGhpcyB3aWxsIGNhbGwgeW91ciBmdW5jdGlv biBiZWZvcmUgdGhlIGZvcm0gaXMgc3VibWl0dGVkPGJyIC8+Ci8vIFNvIHlvdSBjYW4gYW5h bHlzZSB0aGUgc3VibWl0dGVkIGRhdGE8YnIgLz4KPGNvZGU+cmVnaXN0ZXJfY2FsbGJhY2so J2FiY19teWZ1bmN0aW9uJywnemVtY29udGFjdC5zdWJtaXQnKTs8L2NvZGU+PC9wPgoJPHA+ Ly8gVGhpcyB3aWxsIGNhbGwgeW91ciBmdW5jdGlvbiBhbmQgYWRkIHRoZSBvdXRwdXQgKHVz ZSByZXR1cm4gJG15c3R1ZmYpIHRvIHRoZTxiciAvPgovLyBjb250YWN0LWZvcm0sIHJpZ2h0 IGFmdGVyICYjODIzMDsuIFRoaXMgaXMgb3B0aW9uYWwuPGJyIC8+Cjxjb2RlPnJlZ2lzdGVy X2NhbGxiYWNrKCdhYmNfbXlvdGhlcmZ1bmN0aW9uMicsJ3plbWNvbnRhY3QuZm9ybScpOzwv Y29kZT48L3A+Cgk8cD4vLyBUbyBnZXQgaG9sZCBvZiB0aGUgZm9ybS12YXJpYWJsZXMgeW91 IGNhbiB1c2U8YnIgLz4KPGNvZGU+Z2xvYmFsIHplbV9jb250YWN0X2Zvcm08L2NvZGU+PGJy IC8+Ci8vIG9yIHRoZSBjb3JyZXNwb25kaW5nICRQT1NUIG9yICRSRVFVRVNULjwvcD4KCTxw Pi8vIFdpdGggdGhlIGZvbGxvd2luZyB0d28gbGluZXMgeW91IGNhbiB0ZWxsIHplbV9jb250 YWN0IGlmIHlvdXI8YnIgLz4KLy8gcGx1Z2luIGZvdW5kIHNwYW08YnIgLz4KPGNvZGU+JGV2 YWx1YXRvciA9JiMzODsgZ2V0X3plbWNvbnRhY3RfZXZhbHVhdG9yKCk7PGJyIC8+CiRldmFs dWF0b3IgLSZndDsgYWRkX3plbWNvbnRhY3Rfc3RhdHVzKDEpOyAvLyB0aGUgcGFzc2VkIHZh bHVlIG11c3QgYmUgYW55IG51bWJlciBidXQgemVybyB0byBtYXJrIHRoZSBjb250ZW50IGFz IHNwYW08L2NvZGU+LjwvcD4KCTxwPk11bHRpcGxlIHBsdWdpbnMgY2FuIGJlIGFjdGl2ZSBh dCB0aGUgc2FtZSB0aW1lIGFuZCBlYWNoIG9mIHRoZW0gY2FuIG1hcmsgdGhlIHN1Ym1pdHRl ZCBjb250ZW50IGFzIHNwYW0gYW5kIHByZXZlbnQgdGhlIGZvcm0gZnJvbSBiZWluZyBzdWJt aXR0ZWQuPC9wPgoJPHA+PHN0cm9uZz5BbiBleGFtcGxlIG9mIGEgcGx1Zy1pbiBjb25uZWN0 aW5nIHRvIFplbSBDb250YWN0IFJlYm9ybiYjODIxNztzIEFQSTotPC9zdHJvbmc+PC9wPgo8 Y29kZT5yZWdpc3Rlcl9jYWxsYmFjaygncGFwX3plbWNvbnRhY3RfZm9ybScsJ3plbWNvbnRh Y3QuZm9ybScpOwpyZWdpc3Rlcl9jYWxsYmFjaygncGFwX3plbWNvbnRhY3Rfc3VibWl0Jywn emVtY29udGFjdC5zdWJtaXQnKTs8L2NvZGU+CjxiciAvPgo8YnIgLz4KCjxjb2RlPmZ1bmN0 aW9uIHBhcF96ZW1jb250YWN0X2Zvcm0oKSB7PC9jb2RlPgo8YnIgLz4KPGJyIC8+Cgo8Y29k ZT4kZmllbGQgPSAnJmx0O2RpdiBzdHlsZT0idmlzaWJpbGl0eTpoaWRkZW4iJmd0OycuZmlu cHV0KCd0ZXh0JywncGhvbmUnLHBzKCdwaG9uZScpLCcnLCcnLCcnLCcnLCcnLCdwaG9uZScp LicmbHQ7YnIgLyZndDsnLmZpbnB1dCgndGV4dCcsJ21haWwnLHBzKCdtYWlsJyksJycsJycs JycsJycsJycsJ21haWwnKS4nJmx0Oy9kaXYmZ3Q7JzsKcmV0dXJuICRmaWVsZDs8L2NvZGU+ CjxiciAvPgo8YnIgLz4KCjxjb2RlPn08L2NvZGU+CjxiciAvPgo8YnIgLz4KCjxjb2RlPmZ1 bmN0aW9uIHBhcF96ZW1jb250YWN0X3N1Ym1pdCgpIHs8L2NvZGU+CjxiciAvPgo8YnIgLz4K Cjxjb2RlPiRjaGVja2luZ19tYWlsX2ZpZWxkID0gdHJpbShwcygnbWFpbCcpKTsKJGNoZWNr aW5nX3Bob25lX2ZpZWxkID0gdHJpbShwcygncGhvbmUnKSk7PC9jb2RlPgo8YnIgLz4KPGJy IC8+Cgo8Y29kZT4kZXZhbHVhdGlvbiA9JiMzODsgZ2V0X3plbWNvbnRhY3RfZXZhbHVhdG9y KCk7PC9jb2RlPgo8YnIgLz4KPGJyIC8+Cgo8Y29kZT4vLyBJZiB0aGUgaGlkZGVuIGZpZWxk cyBhcmUgZmlsbGVkIG91dCwgdGhlIGNvbnRhY3QgZm9ybSB3b24ndCBiZSBzdWJtaXR0ZWQh PC9jb2RlPgo8YnIgLz4KCjxjb2RlPmlmICgkY2hlY2tpbmdfbWFpbF9maWVsZCAhPSAnJyB8 fCAkY2hlY2tpbmdfcGhvbmVfZmllbGQgIT0gJycpewokZXZhbHVhdGlvbiAtJmd0OyBhZGRf emVtY29udGFjdF9zdGF0dXMoMSk7PC9jb2RlPgp9CnJldHVybjs8L2NvZGU+CjxiciAvPgo8 YnIgLz4KCjxjb2RlPn08L2NvZGU+CiA8YnIgLz4KCiA8cCBzdHlsZT0iZm9udC13ZWlnaHQ6 Ym9sZDtmb250LXNpemU6MTZweDt0ZXh0LWFsaWduOmNlbnRlcjsiPjxhIGhyZWY9IiMiPkJh Y2sgdG8gdGhlIFRvcDwvYT48L3A+CiA8YnIgLz4KCgoKICI7czo0OiJjb2RlIjtzOjE4MDQx OiIKZnVuY3Rpb24gemVtX2NvbnRhY3QoJGF0dHMsICR0aGluZyA9ICcnKQp7CglnbG9iYWwg JHNpdGVuYW1lLCAkcHJlZnMsICRwcm9kdWN0aW9uX3N0YXR1cywgJHplbV9jb250YWN0X2Zv cm0sICR6ZW1fY29udGFjdF9mcm9tLCAkemVtX2NvbnRhY3RfZXJyb3IsICR6ZW1fY29udGFj dF9zdWJtaXQ7CgoJZXh0cmFjdChsQXR0cyhhcnJheSgKCQknYmNjJwkJPT4gJycsCgkJJ2Nv cHlzZW5kZXInCT0+ICdubycsCgkJJ2Zvcm0nCQk9PiAnJywKCQknZnJvbScJCT0+ICcnLAoJ CSdmcm9tX2Zvcm0nCT0+ICcnLAoJCSdsYWJlbCcJCT0+IHplbV9jb250YWN0X2dUeHQoJ2Nv bnRhY3QnKSwKCQkncmVkaXJlY3QnCT0+ICcnLAoJCSdzaG93X2Vycm9yJwk9PiAneWVzJywK CQknc2hvd19pbnB1dCcJPT4gJ3llcycsCgkJJ3NlbmRfYXJ0aWNsZScJPT4gJ25vJywKCQkn c3ViamVjdCcJPT4gemVtX2NvbnRhY3RfZ1R4dCgnZW1haWxfc3ViamVjdCcsIGh0bWxfZW50 aXR5X2RlY29kZSgkc2l0ZW5hbWUsRU5UX1FVT1RFUykpLAoJCSdzdWJqZWN0X2Zvcm0nCT0+ ICcnLAoJCSd0bycJCT0+ICcnLAoJCSd0b19mb3JtJwk9PiAnJywKCQkndGhhbmtzJwk9PiBn cmFmKHplbV9jb250YWN0X2dUeHQoJ2VtYWlsX3RoYW5rcycpKSwKCQkndGhhbmtzX2Zvcm0n CT0+ICcnCgkpLCAkYXR0cykpOwoKCXVuc2V0KCRhdHRzWydzaG93X2Vycm9yJ10sICRhdHRz WydzaG93X2lucHV0J10pOwoJJHplbV9jb250YWN0X2Zvcm1faWQgPSBtZDUoc2VyaWFsaXpl KCRhdHRzKS5wcmVnX3JlcGxhY2UoJy9bXHRcc1xyXG5dLycsJycsJHRoaW5nKSk7CgkkemVt X2NvbnRhY3Rfc3VibWl0ID0gKHBzKCd6ZW1fY29udGFjdF9zdWJtaXQnKSBhbmQgcHMoJ3pl bV9jb250YWN0X2Zvcm1faWQnKSA9PSAkemVtX2NvbnRhY3RfZm9ybV9pZCk7CgoJaWYgKCFp c19jYWxsYWJsZSgnbWFpbCcpKQoJewoJCXJldHVybiAoJHByb2R1Y3Rpb25fc3RhdHVzID09 ICdsaXZlJykgPwoJCQl6ZW1fY29udGFjdF9nVHh0KCdtYWlsX3NvcnJ5JykgOgoJCQlnVHh0 KCd3YXJuX21haWxfdW5hdmFpbGFibGUnKTsKCX0KCglzdGF0aWMgJGhlYWRlcnNfc2VudCA9 IGZhbHNlOwoJaWYgKCEkaGVhZGVyc19zZW50KSB7CgkJaGVhZGVyKCdMYXN0LU1vZGlmaWVk OiAnLmdtZGF0ZSgnRCwgZCBNIFkgSDppOnMnLHRpbWUoKS0zNjAwKjI0KjcpLicgR01UJyk7 CgkJaGVhZGVyKCdFeHBpcmVzOiAnLmdtZGF0ZSgnRCwgZCBNIFkgSDppOnMnLHRpbWUoKSs2 MDApLicgR01UJyk7CgkJaGVhZGVyKCdDYWNoZS1Db250cm9sOiBuby1jYWNoZSwgbXVzdC1y ZXZhbGlkYXRlJyk7CgkJJGhlYWRlcnNfc2VudCA9IHRydWU7Cgl9CgoJJG5vbmNlICAgPSBt eXNxbF9yZWFsX2VzY2FwZV9zdHJpbmcocHMoJ3plbV9jb250YWN0X25vbmNlJykpOwoJJHJl bm9uY2UgPSBmYWxzZTsKCglpZiAoJHplbV9jb250YWN0X3N1Ym1pdCkKCXsKCQlzYWZlX2Rl bGV0ZSgndHhwX2Rpc2N1c3Nfbm9uY2UnLCAnaXNzdWVfdGltZSA8IGRhdGVfc3ViKG5vdygp LCBpbnRlcnZhbCAxMCBtaW51dGUpJyk7CgkJaWYgKCRycyA9IHNhZmVfcm93KCd1c2VkJywg J3R4cF9kaXNjdXNzX25vbmNlJywgIm5vbmNlID0gJyRub25jZSciKSkKCQl7CgkJCWlmICgk cnNbJ3VzZWQnXSkKCQkJewoJCQkJdW5zZXQoJHplbV9jb250YWN0X2Vycm9yKTsKCQkJCSR6 ZW1fY29udGFjdF9lcnJvcltdID0gemVtX2NvbnRhY3RfZ1R4dCgnZm9ybV91c2VkJyk7CgkJ CQkkcmVub25jZSA9IHRydWU7CgkJCQkkX1BPU1QgPSBhcnJheSgpOwoJCQkJJF9QT1NUWyd6 ZW1fY29udGFjdF9zdWJtaXQnXSA9IDE7CgkJCQkkX1BPU1RbJ3plbV9jb250YWN0X2Zvcm1f aWQnXSA9ICR6ZW1fY29udGFjdF9mb3JtX2lkOwoJCQkJJF9QT1NUWyd6ZW1fY29udGFjdF9u b25jZSddID0gJG5vbmNlOwoJCQl9CgkJfQoJCWVsc2UKCQl7CgkJCSR6ZW1fY29udGFjdF9l cnJvcltdID0gemVtX2NvbnRhY3RfZ1R4dCgnZm9ybV9leHBpcmVkJyk7CgkJCSRyZW5vbmNl ID0gdHJ1ZTsKCQl9Cgl9CgoJaWYgKCR6ZW1fY29udGFjdF9zdWJtaXQgYW5kICRub25jZSBh bmQgISRyZW5vbmNlKQoJewoJCSR6ZW1fY29udGFjdF9ub25jZSA9ICRub25jZTsKCX0KCgll bHNlaWYgKCRzaG93X2Vycm9yID09ICdubycgb3IgJHNob3dfaW5wdXQgPT0gJ3llcycpCgl7 CgkJJHplbV9jb250YWN0X25vbmNlID0gbWQ1KHVuaXFpZChyYW5kKCksIHRydWUpKTsKCQlz YWZlX2luc2VydCgndHhwX2Rpc2N1c3Nfbm9uY2UnLCAiaXNzdWVfdGltZSA9IG5vdygpLCBu b25jZSA9ICckemVtX2NvbnRhY3Rfbm9uY2UnIik7Cgl9CgoJJGZvcm0gPSAoJGZvcm0pID8g ZmV0Y2hfZm9ybSgkZm9ybSkgOiAkdGhpbmc7CgoJaWYgKGVtcHR5KCRmb3JtKSkKCXsKCQkk Zm9ybSA9ICcKPHR4cDp6ZW1fY29udGFjdF90ZXh0IGxhYmVsPSInLnplbV9jb250YWN0X2dU eHQoJ25hbWUnKS4nIiAvPjxiciAvPgo8dHhwOnplbV9jb250YWN0X2VtYWlsIC8+PGJyIC8+ Cjx0eHA6emVtX2NvbnRhY3RfdGV4dGFyZWEgLz48YnIgLz4KPHR4cDp6ZW1fY29udGFjdF9z dWJtaXQgLz4KJzsKCX0KCgkkZm9ybSA9IHBhcnNlKCRmb3JtKTsKCglpZiAoJHRvX2Zvcm0p Cgl7CgkJJHRvID0gcGFyc2UoZmV0Y2hfZm9ybSgkdG9fZm9ybSkpOwoJfQoKCWlmICghJHRv IGFuZCAkc2VuZF9hcnRpY2xlID09ICdubycpCgl7CgkJcmV0dXJuIHplbV9jb250YWN0X2dU eHQoJ3RvX21pc3NpbmcnKTsKCX0KCgkkb3V0ID0gJyc7CgoJaWYgKCEkemVtX2NvbnRhY3Rf c3VibWl0KSB7CgkgICMgZG9uJ3Qgc2hvdyBlcnJvcnMgb3Igc2VuZCBtYWlsCgl9CgoJZWxz ZWlmICghZW1wdHkoJHplbV9jb250YWN0X2Vycm9yKSkKCXsKCQlpZiAoJHNob3dfZXJyb3Ig PT0gJ3llcycgb3IgJHNob3dfaW5wdXQgPT0gJ25vJykKCQl7CgkJCSRvdXQgLj0gbi4nPHVs IGNsYXNzPSJ6ZW1FcnJvciI+JzsKCgkJCWZvcmVhY2ggKGFycmF5X3VuaXF1ZSgkemVtX2Nv bnRhY3RfZXJyb3IpIGFzICRlcnJvcikKCQkJewoJCQkJJG91dCAuPSBuLnQuJzxsaT4nLiRl cnJvci4nPC9saT4nOwoJCQl9CgoJCQkkb3V0IC49IG4uJzwvdWw+JzsKCgkJCWlmICgkc2hv d19pbnB1dCA9PSAnbm8nKSByZXR1cm4gJG91dDsKCQl9Cgl9CgoJZWxzZWlmICgkc2hvd19p bnB1dCA9PSAneWVzJyBhbmQgaXNfYXJyYXkoJHplbV9jb250YWN0X2Zvcm0pKQoJewoJCS8v LyBsb2FkIGFuZCBjaGVjayBzcGFtIHBsdWdpbnMvCgkJY2FsbGJhY2tfZXZlbnQoJ3plbWNv bnRhY3Quc3VibWl0Jyk7CgkJJGV2YWx1YXRpb24gPSYgZ2V0X3plbWNvbnRhY3RfZXZhbHVh dG9yKCk7CgkJJGNsZWFuID0gJGV2YWx1YXRpb24tPmdldF96ZW1jb250YWN0X3N0YXR1cygp OwoJCWlmICgkY2xlYW4gIT0gMCkgewoJCQlyZXR1cm4gemVtX2NvbnRhY3RfZ1R4dCgnc3Bh bScpOwoJCX0KCgkJaWYgKCRmcm9tX2Zvcm0pCgkJewoJCQkkZnJvbSA9IHBhcnNlKCRmcm9t X2Zvcm0pOwoJCX0KCgkJaWYgKCRzdWJqZWN0X2Zvcm0pCgkJewoJCQkkc3ViamVjdCA9IHBh cnNlKCRzdWJqZWN0X2Zvcm0pOwoJCX0KCgkJJHNlcCA9ICFpc193aW5kb3dzKCkgPyAiXG4i IDogIlxyXG4iOwoKCQkkbXNnID0gYXJyYXkoKTsKCgkJZm9yZWFjaCAoJHplbV9jb250YWN0 X2Zvcm0gYXMgJGsgPT4gJHYpCgkJewoJCQkkbXNnW10gPSAkay4nOiAnLiR2OwoJCX0KCgkJ aWYgKCRzZW5kX2FydGljbGUgPT0gJ3llcycpIHsKCQkJZ2xvYmFsICR0aGlzYXJ0aWNsZTsK CQkJJHN1YmplY3QgPSAkdGhpc2FydGljbGVbJ3RpdGxlJ107CgkJCSRtc2dbXSA9ICR0aGlz YXJ0aWNsZVsndGl0bGUnXS4nICgnLnBlcm1saW5rdXJsKCR0aGlzYXJ0aWNsZSkuJyknOwoJ CQkkbXNnW10gPSB0cmltKHN0cl9yZXBsYWNlKCJcdCIsJycsc3RyaXBfdGFncygkdGhpc2Fy dGljbGVbJ2V4Y2VycHQnXSA/ICR0aGlzYXJ0aWNsZVsnZXhjZXJwdCddIDogJHRoaXNhcnRp Y2xlWydib2R5J10pKSk7CgkJCWlmICghcHMoJ3JlY2VpdmVyJykpIHsKCQkJCXJldHVybiB6 ZW1fY29udGFjdF9nVHh0KCdmaWVsZF9taXNzaW5nJywgaHRtbHNwZWNpYWxjaGFycyh6ZW1f Y29udGFjdF9nVHh0KCdyZWNlaXZlcicpKSk7CgkJCX0KCQkJJHRvID0gcHMoJ3JlY2VpdmVy Jyk7CgkJfQoKCQkkbXNnID0gam9pbigiXG5cbiIsICRtc2cpOwoJCSRtc2cgPSBzdHJfcmVw bGFjZSgiXHJcbiIsICJcbiIsICRtc2cpOwoJCSRtc2cgPSBzdHJfcmVwbGFjZSgiXHIiLCAi XG4iLCAkbXNnKTsKCQkkbXNnID0gc3RyX3JlcGxhY2UoIlxuIiwgJHNlcCwgJG1zZyk7CgoJ CWlmICgkZnJvbSkKCQl7CgkJCSRyZXBseSA9ICR6ZW1fY29udGFjdF9mcm9tOwoJCX0KCgkJ ZWxzZQoJCXsKCQkJJGZyb20gPSAkemVtX2NvbnRhY3RfZnJvbTsKCQkJJHJlcGx5ID0gJyc7 CgkJfQoKCQlpZiAoJGNvcHlzZW5kZXIgPT0gJ3llcycpCgkJewoJCQkkYmNjID0gJHRvOwoJ CQkkdG8gPSAkemVtX2NvbnRhY3RfZnJvbTsKCQl9CgoJCSR0byAgICAgID0gc3RyaXBfcm4o JHRvKTsKCQkkYmNjICAgICA9IHN0cmlwX3JuKCRiY2MpOwoJCSRzdWJqZWN0ID0gc3RyaXBf cm4oJHN1YmplY3QpOwoJCSRmcm9tICAgID0gc3RyaXBfcm4oJGZyb20pOwoJCSRyZXBseSAg ID0gc3RyaXBfcm4oJHJlcGx5KTsKCgkJaWYgKCRwcmVmc1snb3ZlcnJpZGVfZW1haWxjaGFy c2V0J10gYW5kIGlzX2NhbGxhYmxlKCd1dGY4X2RlY29kZScpKQoJCXsKCQkJJGNoYXJzZXQg PSAnSVNPLTg1OTktMSc7CgkJCSR0byAgICAgID0gdXRmOF9kZWNvZGUoJHRvKTsKCQkJJGJj YyAgICAgPSB1dGY4X2RlY29kZSgkYmNjKTsKCQkJJHN1YmplY3QgPSB1dGY4X2RlY29kZSgk c3ViamVjdCk7CgkJCSRtc2cgICAgID0gdXRmOF9kZWNvZGUoJG1zZyk7CgkJCSRmcm9tICAg ID0gdXRmOF9kZWNvZGUoJGZyb20pOwoJCQkkcmVwbHkgICA9IHV0ZjhfZGVjb2RlKCRyZXBs eSk7CgkJfQoKCQllbHNlCgkJewoJCQkkY2hhcnNldCA9ICdVVEYtOCc7CgkJfQoKCQkkc3Vi amVjdCA9IHplbV9jb250YWN0X21haWxoZWFkZXIoJHN1YmplY3QsICd0ZXh0Jyk7CgoJCSRo ZWFkZXJzID0gJ0Zyb206ICcuJGZyb20uCgkJCSgkcmVwbHkgPyAoJHNlcC4nUmVwbHktVG86 ICcuJHJlcGx5KSA6ICcnKS4KCQkJKCRiY2MgPyAoJHNlcC4nQmNjOiAnLiRiY2MpIDogJycp LgoJCQkkc2VwLidYLU1haWxlcjogVGV4dHBhdHRlcm4gKHplbV9jb250YWN0X3JlYm9ybikn LgoJCQkkc2VwLidDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Jy4KCQkJJHNlcC4n Q29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSInLiRjaGFyc2V0LiciJzsKCgkJ c2FmZV91cGRhdGUoJ3R4cF9kaXNjdXNzX25vbmNlJywgInVzZWQgPSAnMScsIGlzc3VlX3Rp bWUgPSBub3coKSIsICJub25jZSA9ICckbm9uY2UnIik7CgoJCWlmIChtYWlsKCR0bywgJHN1 YmplY3QsICRtc2csICRoZWFkZXJzKSkKCQl7CgkJCSRfUE9TVCA9IGFycmF5KCk7CgkJCWlm ICgkcmVkaXJlY3QpCgkJCXsKCQkJCXdoaWxlIChAb2JfZW5kX2NsZWFuKCkpOwoJCQkJJHVy aSA9IGh1Lmx0cmltKCRyZWRpcmVjdCwnLycpOwoJCQkJaWYgKGVtcHR5KCRfU0VSVkVSWydG Q0dJX1JPTEUnXSkgYW5kIGVtcHR5KCRfRU5WWydGQ0dJX1JPTEUnXSkpCgkJCQl7CgkJCQkJ dHhwX3N0YXR1c19oZWFkZXIoJzMwMyBTZWUgT3RoZXInKTsKCQkJCQloZWFkZXIoJ0xvY2F0 aW9uOiAnLiR1cmkpOwoJCQkJCWhlYWRlcignQ29ubmVjdGlvbjogY2xvc2UnKTsKCQkJCQlo ZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoOiAwJyk7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJ JHVyaSA9IGh0bWxzcGVjaWFsY2hhcnMoJHVyaSk7CgkJCQkJJHJlZnJlc2ggPSB6ZW1fY29u dGFjdF9nVHh0KCdyZWZyZXNoJyk7CgkJCQkJZWNobyA8PDxFTkQKPCFET0NUWVBFIGh0bWwg UFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6 Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgo8 aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sOmxhbmc9ImVu IiBsYW5nPSJlbiI+CjxoZWFkPgoJPHRpdGxlPiRzaXRlbmFtZTwvdGl0bGU+Cgk8bWV0YSBo dHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11 dGYtOCIgLz4KCTxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IjA7dXJsPSR1 cmkiIC8+CjwvaGVhZD4KPGJvZHk+CjxhIGhyZWY9IiR1cmkiPiRyZWZyZXNoPC9hPgo8L2Jv ZHk+CjwvaHRtbD4KRU5EOwoJCQkJfQoJCQkJZXhpdDsKCQkJfQoKCQkJZWxzZQoJCQl7CgkJ CQlyZXR1cm4gKCR0aGFua3NfZm9ybSkgPyBmZXRjaF9mb3JtKCR0aGFua3NfZm9ybSkgOiAk dGhhbmtzOwoJCQl9CgkJfQoKCQllbHNlCgkJewoJCQkkb3V0IC49IGdyYWYoemVtX2NvbnRh Y3RfZ1R4dCgnbWFpbF9zb3JyeScpKTsKCQl9Cgl9CgoJaWYgKCRzaG93X2lucHV0ID09ICd5 ZXMnIGFuZCAkc2VuZF9hcnRpY2xlID09ICdubycgb3IgZ3BzKCd6ZW1fY29udGFjdF9zZW5k X2FydGljbGUnKSkKCXsKCQlyZXR1cm4gJzxmb3JtIG1ldGhvZD0icG9zdCIgY2xhc3M9Inpl bUNvbnRhY3RGb3JtIiBhY3Rpb249Iicuc2VydmVyU2V0KCdSRVFVRVNUX1VSSScpLiciPicu CgkJCSggJGxhYmVsID8gbi4nPGZpZWxkc2V0PicgOiBuLic8ZGl2PicgKS4KCQkJKCAkbGFi ZWwgPyBuLic8bGVnZW5kPicuJGxhYmVsLic8L2xlZ2VuZD4nIDogJycgKS4KCQkJJG91dC4K CQkJbi4nPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iemVtX2NvbnRhY3Rfbm9uY2UiIHZh bHVlPSInLiR6ZW1fY29udGFjdF9ub25jZS4nIiAvPicuCgkJCW4uJzxpbnB1dCB0eXBlPSJo aWRkZW4iIG5hbWU9InplbV9jb250YWN0X2Zvcm1faWQiIHZhbHVlPSInLiR6ZW1fY29udGFj dF9mb3JtX2lkLiciIC8+Jy4KCQkJJGZvcm0uCgkJCWNhbGxiYWNrX2V2ZW50KCd6ZW1jb250 YWN0LmZvcm0nKS4KCQkJKCAkbGFiZWwgPyAobi4nPC9maWVsZHNldD4nKSA6IChuLic8L2Rp dj4nKSApLgoJCQluLic8L2Zvcm0+JzsKCX0KCglyZXR1cm4gJyc7Cn0KCmZ1bmN0aW9uIHpl bV9jb250YWN0X3RleHQoJGF0dHMpCnsKCWdsb2JhbCAkemVtX2NvbnRhY3RfZm9ybSwgJHpl bV9jb250YWN0X2Vycm9yLCAkemVtX2NvbnRhY3Rfc3VibWl0OwoKCWV4dHJhY3QobEF0dHMo YXJyYXkoCgkJJ2JyZWFrJwkJPT4gYnIsCgkJJ2RlZmF1bHQnCT0+ICcnLAoJCSdpc0Vycm9y Jwk9PiAnJywKCQknbGFiZWwnCQk9PiB6ZW1fY29udGFjdF9nVHh0KCd0ZXh0JyksCgkJJ21h eCcJCT0+IDEwMCwKCQknbWluJwkJPT4gMCwKCQknbmFtZScJCT0+ICcnLAoJCSdyZXF1aXJl ZCcJPT4gJ3llcycsCgkJJ3NpemUnCQk9PiAnJwoJKSwgJGF0dHMpKTsKCgkkbWluID0gaW50 dmFsKCRtaW4pOwoJJG1heCA9IGludHZhbCgkbWF4KTsKCSRzaXplID0gaW50dmFsKCRzaXpl KTsKCglpZiAoZW1wdHkoJG5hbWUpKSAkbmFtZSA9IHplbV9jb250YWN0X2xhYmVsMm5hbWUo JGxhYmVsKTsKCglpZiAoJHplbV9jb250YWN0X3N1Ym1pdCkKCXsKCQkkdmFsdWUgPSBwcygk bmFtZSk7CgkJJHV0ZjhsZW4gPSBwcmVnX21hdGNoX2FsbCgiLy4vc3UiLCAkdmFsdWUsICR1 dGY4YXIpOwoJCSRobGFiZWwgPSBodG1sc3BlY2lhbGNoYXJzKCRsYWJlbCk7CgoJCWlmIChz dHJsZW4oJHZhbHVlKSkKCQl7CgkJCWlmICghJHV0ZjhsZW4pCgkJCXsKCQkJCSR6ZW1fY29u dGFjdF9lcnJvcltdID0gemVtX2NvbnRhY3RfZ1R4dCgnaW52YWxpZF91dGY4JywgJGhsYWJl bCk7CgkJCQkkaXNFcnJvciA9ICJlcnJvckVsZW1lbnQiOwoJCQl9CgoJCQllbHNlaWYgKCRt aW4gYW5kICR1dGY4bGVuIDwgJG1pbikKCQkJewoJCQkJJHplbV9jb250YWN0X2Vycm9yW10g PSB6ZW1fY29udGFjdF9nVHh0KCdtaW5fd2FybmluZycsICRobGFiZWwsICRtaW4pOwoJCQkJ JGlzRXJyb3IgPSAiZXJyb3JFbGVtZW50IjsKCQkJfQoKCQkJZWxzZWlmICgkbWF4IGFuZCAk dXRmOGxlbiA+ICRtYXgpCgkJCXsKCQkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gemVtX2Nv bnRhY3RfZ1R4dCgnbWF4X3dhcm5pbmcnLCAkaGxhYmVsLCAkbWF4KTsKCQkJCSRpc0Vycm9y ID0gImVycm9yRWxlbWVudCI7CgkJCQkjJHZhbHVlID0gam9pbignJyxhcnJheV9zbGljZSgk YXJbMF0sMCwkbWF4KSk7CgkJCX0KCgkJCWVsc2UKCQkJewoJCQkJJHplbV9jb250YWN0X2Zv cm1bJGxhYmVsXSA9ICR2YWx1ZTsKCQkJfQoJCX0KCQllbHNlaWYgKCRyZXF1aXJlZCA9PSAn eWVzJykKCQl7CgkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gemVtX2NvbnRhY3RfZ1R4dCgn ZmllbGRfbWlzc2luZycsICRobGFiZWwpOwoJCQkkaXNFcnJvciA9ICJlcnJvckVsZW1lbnQi OwoJCX0KCX0KCgllbHNlCgl7CgkJJHZhbHVlID0gJGRlZmF1bHQ7Cgl9CgoJJHNpemUgPSAo JHNpemUpID8gJyBzaXplPSInLiRzaXplLiciJyA6ICcnOwoJJG1heGxlbmd0aCA9ICgkbWF4 KSA/ICcgbWF4bGVuZ3RoPSInLiRtYXguJyInIDogJyc7CgoJJHplbVJlcXVpcmVkID0gKCRy ZXF1aXJlZCA9PSAneWVzJykgPyAnemVtUmVxdWlyZWQnIDogJyc7CgogICAgICAgIHJldHVy biAnPGxhYmVsIGZvcj0iJy4kbmFtZS4nIiBjbGFzcz0iJy4kemVtUmVxdWlyZWQuJGlzRXJy b3IuJyAnLiRuYW1lLiciPicuJGxhYmVsLic8L2xhYmVsPicuJGJyZWFrLgoJCSc8aW5wdXQg dHlwZT0idGV4dCIgaWQ9IicuJG5hbWUuJyIgY2xhc3M9IicuJHplbVJlcXVpcmVkLiRpc0Vy cm9yLiciIG5hbWU9IicuJG5hbWUuJyIgdmFsdWU9IicuaHRtbHNwZWNpYWxjaGFycygkdmFs dWUpLiciJy4kc2l6ZS4kbWF4bGVuZ3RoLicgLz4nOwp9CgpmdW5jdGlvbiB6ZW1fY29udGFj dF90ZXh0YXJlYSgkYXR0cykKewoJZ2xvYmFsICR6ZW1fY29udGFjdF9mb3JtLCAkemVtX2Nv bnRhY3RfZXJyb3IsICR6ZW1fY29udGFjdF9zdWJtaXQ7CgoJZXh0cmFjdChsQXR0cyhhcnJh eSgKCQknYnJlYWsnCQk9PiBiciwKCQknY29scycJCT0+IDU4LAoJCSdkZWZhdWx0Jwk9PiAn JywKCQknaXNFcnJvcicJPT4gJycsCgkJJ2xhYmVsJwkJPT4gemVtX2NvbnRhY3RfZ1R4dCgn bWVzc2FnZScpLAoJCSdtYXgnCQk9PiAxMDAwMCwKCQknbWluJwkJPT4gMCwKCQknbmFtZScJ CT0+ICcnLAoJCSdyZXF1aXJlZCcJPT4gJ3llcycsCgkJJ3Jvd3MnCQk9PiA4CgkpLCAkYXR0 cykpOwoKCSRtaW4gPSBpbnR2YWwoJG1pbik7CgkkbWF4ID0gaW50dmFsKCRtYXgpOwoJJGNv bHMgPSBpbnR2YWwoJGNvbHMpOwoJJHJvd3MgPSBpbnR2YWwoJHJvd3MpOwoKCWlmIChlbXB0 eSgkbmFtZSkpICRuYW1lID0gemVtX2NvbnRhY3RfbGFiZWwybmFtZSgkbGFiZWwpOwoKCWlm ICgkemVtX2NvbnRhY3Rfc3VibWl0KQoJewoJCSR2YWx1ZSA9IHBzKCRuYW1lKTsKCQkkdXRm OGxlbiA9IHByZWdfbWF0Y2hfYWxsKCIvLi9zdSIsICR2YWx1ZSwgJHV0Zjhhcik7CgkJJGhs YWJlbCA9IGh0bWxzcGVjaWFsY2hhcnMoJGxhYmVsKTsKCgkJaWYgKHN0cmxlbigkdmFsdWUp KQoJCXsKCQkJaWYgKCEkdXRmOGxlbikKCQkJewoJCQkJJHplbV9jb250YWN0X2Vycm9yW10g PSB6ZW1fY29udGFjdF9nVHh0KCdpbnZhbGlkX3V0ZjgnLCAkaGxhYmVsKTsKCQkJCSRpc0Vy cm9yID0gImVycm9yRWxlbWVudCI7CgkJCX0KCgkJCWVsc2VpZiAoJG1pbiBhbmQgJHV0Zjhs ZW4gPCAkbWluKQoJCQl7CgkJCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9IHplbV9jb250YWN0 X2dUeHQoJ21pbl93YXJuaW5nJywgJGhsYWJlbCwgJG1pbik7CgkJCQkkaXNFcnJvciA9ICJl cnJvckVsZW1lbnQiOwoJCQl9CgoJCQllbHNlaWYgKCRtYXggYW5kICR1dGY4bGVuID4gJG1h eCkKCQkJewoJCQkJJHplbV9jb250YWN0X2Vycm9yW10gPSB6ZW1fY29udGFjdF9nVHh0KCdt YXhfd2FybmluZycsICRobGFiZWwsICRtYXgpOwoJCQkJJGlzRXJyb3IgPSAiZXJyb3JFbGVt ZW50IjsKCQkJCSMkdmFsdWUgPSBqb2luKCcnLGFycmF5X3NsaWNlKCR1dGY4YXJbMF0sMCwk bWF4KSk7CgkJCX0KCgkJCWVsc2UKCQkJewoJCQkJJHplbV9jb250YWN0X2Zvcm1bJGxhYmVs XSA9ICR2YWx1ZTsKCQkJfQoJCX0KCgkJZWxzZWlmICgkcmVxdWlyZWQgPT0gJ3llcycpCgkJ ewoJCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9IHplbV9jb250YWN0X2dUeHQoJ2ZpZWxkX21p c3NpbmcnLCAkaGxhYmVsKTsKCQkJJGlzRXJyb3IgPSAiZXJyb3JFbGVtZW50IjsKCQl9Cgl9 CgoJZWxzZQoJewoJCSR2YWx1ZSA9ICRkZWZhdWx0OwoJfQoKCSR6ZW1SZXF1aXJlZCA9ICgk cmVxdWlyZWQgPT0gJ3llcycpID8gJ3plbVJlcXVpcmVkJyA6ICcnOwoKCXJldHVybiAnPGxh YmVsIGZvcj0iJy4kbmFtZS4nIiBjbGFzcz0iJy4kemVtUmVxdWlyZWQuJGlzRXJyb3IuJyAn LiRuYW1lLiciPicuJGxhYmVsLic8L2xhYmVsPicuJGJyZWFrLgoJCSc8dGV4dGFyZWEgaWQ9 IicuJG5hbWUuJyIgY2xhc3M9IicuJHplbVJlcXVpcmVkLiRpc0Vycm9yLiciIG5hbWU9Iicu JG5hbWUuJyIgY29scz0iJy4kY29scy4nIiByb3dzPSInLiRyb3dzLiciPicuaHRtbHNwZWNp YWxjaGFycygkdmFsdWUpLic8L3RleHRhcmVhPic7Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0 X2VtYWlsKCRhdHRzKQp7CglnbG9iYWwgJHplbV9jb250YWN0X2Vycm9yLCAkemVtX2NvbnRh Y3Rfc3VibWl0LCAkemVtX2NvbnRhY3RfZnJvbTsKCglleHRyYWN0KGxBdHRzKGFycmF5KAoJ CSdkZWZhdWx0Jwk9PiAnJywKCQknaXNFcnJvcicJPT4gJycsCgkJJ2xhYmVsJwkJPT4gemVt X2NvbnRhY3RfZ1R4dCgnZW1haWwnKSwKCQknbWF4JwkJPT4gMTAwLAoJCSdtaW4nCQk9PiAw LAoJCSduYW1lJwkJPT4gJycsCgkJJ3JlcXVpcmVkJwk9PiAneWVzJywKCQknYnJlYWsnCQk9 PiBiciwKCQknc2l6ZScJCT0+ICcnCgkpLCAkYXR0cykpOwoKCWlmIChlbXB0eSgkbmFtZSkp ICRuYW1lID0gemVtX2NvbnRhY3RfbGFiZWwybmFtZSgkbGFiZWwpOwoKCSRlbWFpbCA9ICR6 ZW1fY29udGFjdF9zdWJtaXQgPyBwcygkbmFtZSkgOiAkZGVmYXVsdDsKCglpZiAoJHplbV9j b250YWN0X3N1Ym1pdCBhbmQgc3RybGVuKCRlbWFpbCkpCgl7CgkJaWYgKCFwcmVnX21hdGNo KCcvXltcdy5fLV0rQChbXHctXStcLikrW1x3LV0rJC8nLCAkZW1haWwpKQoJCXsKCQkJJHpl bV9jb250YWN0X2Vycm9yW10gPSB6ZW1fY29udGFjdF9nVHh0KCdpbnZhbGlkX2VtYWlsJywg aHRtbHNwZWNpYWxjaGFycygkZW1haWwpKTsKCQkJJGlzRXJyb3IgPSAiZXJyb3JFbGVtZW50 IjsKCQl9CgoJCWVsc2UKCQl7CgkJCXByZWdfbWF0Y2goIi9AKC4rKSQvIiwgJGVtYWlsLCAk bWF0Y2gpOwoJCQkkZG9tYWluID0gJG1hdGNoWzFdOwoKCQkJaWYgKGlzX2NhbGxhYmxlKCdj aGVja2Ruc3JyJykgYW5kICFjaGVja2Ruc3JyKCRkb21haW4sJ01YJykgYW5kICFjaGVja2Ru c3JyKCRkb21haW4sJ0EnKSkKCQkJewoJCQkJJHplbV9jb250YWN0X2Vycm9yW10gPSB6ZW1f Y29udGFjdF9nVHh0KCdpbnZhbGlkX2hvc3QnLCBodG1sc3BlY2lhbGNoYXJzKCRkb21haW4p KTsKCQkJCSRpc0Vycm9yID0gImVycm9yRWxlbWVudCI7CgkJCX0KCgkJCWVsc2UKCQkJewoJ CQkJJHplbV9jb250YWN0X2Zyb20gPSAkZW1haWw7CgkJCX0KCQl9Cgl9CgoJcmV0dXJuIHpl bV9jb250YWN0X3RleHQoYXJyYXkoCgkJJ2RlZmF1bHQnCT0+ICRlbWFpbCwKCQknaXNFcnJv cicJPT4gJGlzRXJyb3IsCgkJJ2xhYmVsJwkJPT4gJGxhYmVsLAoJCSdtYXgnCQk9PiAkbWF4 LAoJCSdtaW4nCQk9PiAkbWluLAoJCSduYW1lJwkJPT4gJG5hbWUsCgkJJ3JlcXVpcmVkJwk9 PiAkcmVxdWlyZWQsCgkJJ2JyZWFrJwkJPT4gJGJyZWFrLAoJCSdzaXplJwkJPT4gJHNpemUK CSkpOwp9CgpmdW5jdGlvbiB6ZW1fY29udGFjdF9zZWxlY3QoJGF0dHMpCnsKCWdsb2JhbCAk emVtX2NvbnRhY3RfZm9ybSwgJHplbV9jb250YWN0X2Vycm9yLCAkemVtX2NvbnRhY3Rfc3Vi bWl0OwoKCWV4dHJhY3QobEF0dHMoYXJyYXkoCgkJJ25hbWUnCQk9PiAnJywKCQknYnJlYWsn CQk9PiAnICcsCgkJJ2RlbGltaXRlcicJPT4gJywnLAoJCSdpc0Vycm9yJwk9PiAnJywKCQkn bGFiZWwnCQk9PiB6ZW1fY29udGFjdF9nVHh0KCdvcHRpb24nKSwKCQknbGlzdCcJCT0+IHpl bV9jb250YWN0X2dUeHQoJ2dlbmVyYWxfaW5xdWlyeScpLAoJCSdyZXF1aXJlZCcJPT4gJ3ll cycsCgkJJ3NlbGVjdGVkJwk9PiAnJwoJKSwgJGF0dHMpKTsKCglpZiAoZW1wdHkoJG5hbWUp KSAkbmFtZSA9IHplbV9jb250YWN0X2xhYmVsMm5hbWUoJGxhYmVsKTsKCgkkbGlzdCA9IGFy cmF5X21hcCgndHJpbScsIHNwbGl0KCRkZWxpbWl0ZXIsIHByZWdfcmVwbGFjZSgnL1tcclxu XHRcc10rLycsICcgJywkbGlzdCkpKTsKCglpZiAoJHplbV9jb250YWN0X3N1Ym1pdCkKCXsK CQkkdmFsdWUgPSBwcygkbmFtZSk7CgoJCWlmIChzdHJsZW4oJHZhbHVlKSkKCQl7CgkJCWlm IChpbl9hcnJheSgkdmFsdWUsICRsaXN0KSkKCQkJewoJCQkJJHplbV9jb250YWN0X2Zvcm1b JGxhYmVsXSA9ICR2YWx1ZTsKCQkJfQoKCQkJZWxzZQoJCQl7CgkJCQkkemVtX2NvbnRhY3Rf ZXJyb3JbXSA9IHplbV9jb250YWN0X2dUeHQoJ2ludmFsaWRfdmFsdWUnLCBodG1sc3BlY2lh bGNoYXJzKCRsYWJlbCksIGh0bWxzcGVjaWFsY2hhcnMoJHZhbHVlKSk7CgkJCQkkaXNFcnJv ciA9ICJlcnJvckVsZW1lbnQiOwoJCQl9CgkJfQoKCQllbHNlaWYgKCRyZXF1aXJlZCA9PSAn eWVzJykKCQl7CgkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gemVtX2NvbnRhY3RfZ1R4dCgn ZmllbGRfbWlzc2luZycsIGh0bWxzcGVjaWFsY2hhcnMoJGxhYmVsKSk7CgkJCSRpc0Vycm9y ID0gImVycm9yRWxlbWVudCI7CgkJfQoJfQoJZWxzZQoJewoJCSR2YWx1ZSA9ICRzZWxlY3Rl ZDsKCX0KCgkkb3V0ID0gJyc7CgoJZm9yZWFjaCAoJGxpc3QgYXMgJGl0ZW0pCgl7CgkJJG91 dCAuPSBuLnQuJzxvcHRpb24nLigkaXRlbSA9PSAkdmFsdWUgPyAnIHNlbGVjdGVkPSJzZWxl Y3RlZCI+JyA6ICc+JykuaHRtbHNwZWNpYWxjaGFycygkaXRlbSkuJzwvb3B0aW9uPic7Cgl9 CgoJJHplbVJlcXVpcmVkID0gKCRyZXF1aXJlZCA9PSAneWVzJykgPyAnemVtUmVxdWlyZWQn IDogJyc7CgoJcmV0dXJuICc8bGFiZWwgZm9yPSInLiRuYW1lLiciIGNsYXNzPSInLiR6ZW1S ZXF1aXJlZC4kaXNFcnJvci4nICcuJG5hbWUuJyI+Jy4kbGFiZWwuJzwvbGFiZWw+Jy4kYnJl YWsuCgkJbi4nPHNlbGVjdCBpZD0iJy4kbmFtZS4nIiBuYW1lPSInLiRuYW1lLiciIGNsYXNz PSInLiR6ZW1SZXF1aXJlZC4kaXNFcnJvci4nIj4nLgoJCQkkb3V0LgoJCW4uJzwvc2VsZWN0 Pic7Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0X2NoZWNrYm94KCRhdHRzKQp7CglnbG9iYWwg JHplbV9jb250YWN0X2Zvcm0sICR6ZW1fY29udGFjdF9lcnJvciwgJHplbV9jb250YWN0X3N1 Ym1pdDsKCglleHRyYWN0KGxBdHRzKGFycmF5KAoJCSdicmVhaycJCT0+ICcgJywKCQknY2hl Y2tlZCcJPT4gJ25vJywKCQknaXNFcnJvcicJPT4gJycsCgkJJ2xhYmVsJwkJPT4gemVtX2Nv bnRhY3RfZ1R4dCgnY2hlY2tib3gnKSwKCQknbmFtZScJCT0+ICcnLAoJCSdyZXF1aXJlZCcJ PT4gJ3llcycKCSksICRhdHRzKSk7CgoJaWYgKGVtcHR5KCRuYW1lKSkgJG5hbWUgPSB6ZW1f Y29udGFjdF9sYWJlbDJuYW1lKCRsYWJlbCk7CgoJaWYgKCR6ZW1fY29udGFjdF9zdWJtaXQp Cgl7CgkJJHZhbHVlID0gKGJvb2wpIHBzKCRuYW1lKTsKCgkJaWYgKCRyZXF1aXJlZCA9PSAn eWVzJyBhbmQgISR2YWx1ZSkKCQl7CgkJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gemVtX2Nv bnRhY3RfZ1R4dCgnZmllbGRfbWlzc2luZycsIGh0bWxzcGVjaWFsY2hhcnMoJGxhYmVsKSk7 CgkJCSRpc0Vycm9yID0gImVycm9yRWxlbWVudCI7CgkJfQoKCQllbHNlCgkJewoJCQkkemVt X2NvbnRhY3RfZm9ybVskbGFiZWxdID0gKCR2YWx1ZSkgPyBnVHh0KCd5ZXMnKSA6IGdUeHQo J25vJyk7CgkJfQoJfQoKCWVsc2UgewoJCSR2YWx1ZSA9ICgkY2hlY2tlZCA9PSAneWVzJyk7 Cgl9CgoJJHplbVJlcXVpcmVkID0gKCRyZXF1aXJlZCA9PSAneWVzJykgPyAnemVtUmVxdWly ZWQnIDogJyc7CgoJcmV0dXJuICc8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSInLiRuYW1l LiciIGNsYXNzPSInLiR6ZW1SZXF1aXJlZC4kaXNFcnJvci4nIiBuYW1lPSInLiRuYW1lLici Jy4KCQkoJHZhbHVlID8gJyBjaGVja2VkPSJjaGVja2VkIicgOiAnJykuJyAvPicuJGJyZWFr LgoJCSc8bGFiZWwgZm9yPSInLiRuYW1lLiciIGNsYXNzPSInLiR6ZW1SZXF1aXJlZC4kaXNF cnJvci4nICcuJG5hbWUuJyI+Jy4kbGFiZWwuJzwvbGFiZWw+JzsKfQoKZnVuY3Rpb24gemVt X2NvbnRhY3Rfc2VydmVyaW5mbygkYXR0cykKewoJZ2xvYmFsICR6ZW1fY29udGFjdF9mb3Jt LCAkemVtX2NvbnRhY3Rfc3VibWl0OwoKCWV4dHJhY3QobEF0dHMoYXJyYXkoCgkJJ2xhYmVs JwkJPT4gJycsCgkJJ25hbWUnCQk9PiAnJwoJKSwgJGF0dHMpKTsKCglpZiAoZW1wdHkoJG5h bWUpKSAkbmFtZSA9IHplbV9jb250YWN0X2xhYmVsMm5hbWUoJGxhYmVsKTsKCglpZiAoc3Ry bGVuKCRuYW1lKSBhbmQgJHplbV9jb250YWN0X3N1Ym1pdCkKCXsKCQkkemVtX2NvbnRhY3Rf Zm9ybVskbGFiZWxdID0gc2VydmVyU2V0KCRuYW1lKTsKCX0KfQoKZnVuY3Rpb24gemVtX2Nv bnRhY3Rfc2VjcmV0KCRhdHRzLCAkdGhpbmcgPSAnJykKewoJZ2xvYmFsICR6ZW1fY29udGFj dF9mb3JtLCAkemVtX2NvbnRhY3Rfc3VibWl0OwoKCWV4dHJhY3QobEF0dHMoYXJyYXkoCgkJ J2xhYmVsJwkJPT4gemVtX2NvbnRhY3RfZ1R4dCgnc2VjcmV0JyksCgkJJ3ZhbHVlJwkJPT4g JycKCSksICRhdHRzKSk7CgoJaWYgKCR0aGluZykgJHZhbHVlID0gdHJpbShwYXJzZSgkdGhp bmcpKTsKCglpZiAoJHplbV9jb250YWN0X3N1Ym1pdCkKCXsKCQkkemVtX2NvbnRhY3RfZm9y bVskbGFiZWxdID0gJHZhbHVlOwoJfQoKCXJldHVybiAnJzsKfQoKZnVuY3Rpb24gemVtX2Nv bnRhY3RfcmFkaW8oJGF0dHMpCnsKCWdsb2JhbCAkemVtX2NvbnRhY3RfZm9ybSwgJHplbV9j b250YWN0X2Vycm9yLCAkemVtX2NvbnRhY3Rfc3VibWl0OwoKCWV4dHJhY3QobEF0dHMoYXJy YXkoCgkJJ2JyZWFrJwkJPT4gJyAnLAoJCSdjaGVja2VkJwk9PiAnbm8nLAoJCSdsYWJlbCcJ CT0+IHplbV9jb250YWN0X2dUeHQoJ3JhZGlvJyksCgkJJ25hbWUnCQk9PiB6ZW1fY29udGFj dF9nVHh0KCdyYWRpbycpCgkpLCAkYXR0cykpOwoKCSRmbmFtZSA9IHplbV9jb250YWN0X2xh YmVsMm5hbWUoJG5hbWUgPyAkbmFtZSA6ICRsYWJlbCk7CgkkaWQgICAgPSB6ZW1fY29udGFj dF9sYWJlbDJuYW1lKCRsYWJlbCk7CgoJaWYgKCR6ZW1fY29udGFjdF9zdWJtaXQpCgl7CgkJ JGlzX2NoZWNrZWQgPSAocHMoJGZuYW1lKSA9PSAkaWQpOwoKCQlpZiAoJGlzX2NoZWNrZWQg b3IgJGNoZWNrZWQgPT0gJ3llcycgYW5kICFpc3NldCgkemVtX2NvbnRhY3RfZm9ybVskbmFt ZV0pKQoJCXsKCQkJJHplbV9jb250YWN0X2Zvcm1bJG5hbWVdID0gJGxhYmVsOwoJCX0KCX0K CgllbHNlCgl7CgkJJGlzX2NoZWNrZWQgPSAoJGNoZWNrZWQgPT0gJ3llcycpOwoJfQoKCXJl dHVybiAnPGlucHV0IHZhbHVlPSInLiRpZC4nIiB0eXBlPSJyYWRpbyIgaWQ9IicuJGlkLici IGNsYXNzPSInLiRmbmFtZS4nIiBuYW1lPSInLiRmbmFtZS4nIicuCgkJKCAkaXNfY2hlY2tl ZCA/ICcgY2hlY2tlZD0iY2hlY2tlZCIgLz4nIDogJyAvPicpLiRicmVhay4KCQknPGxhYmVs IGZvcj0iJy4kaWQuJyIgY2xhc3M9IicuJGZuYW1lLiciPicuJGxhYmVsLic8L2xhYmVsPic7 Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0X3NlbmRfYXJ0aWNsZSgkYXR0cykKewoJaWYgKCFp c3NldCgkX1JFUVVFU1RbJ3plbV9jb250YWN0X3NlbmRfYXJ0aWNsZSddKSkgewoJCSRsaW5r dGV4dCA9IChlbXB0eSgkYXR0c1snbGlua3RleHQnXSkpID8gJ3NlbmQgYXJ0aWNsZScgOiAk YXR0c1snbGlua3RleHQnXTsKCQkkam9pbiA9IChlbXB0eSgkX1NFUlZFUlsnUVVFUllfU1RS SU5HJ10pKSA/ICc/JyA6ICcmYW1wOyc7CgkJJGhyZWYgPSAkX1NFUlZFUlsnUkVRVUVTVF9V UkknXS4kam9pbi4nemVtX2NvbnRhY3Rfc2VuZF9hcnRpY2xlPXllcyc7CgkJcmV0dXJuICc8 YSBocmVmPSInLiRocmVmLiciPicuJGxpbmt0ZXh0Lic8L2E+JzsKCX0KCXJldHVybjsKfQoK ZnVuY3Rpb24gemVtX2NvbnRhY3Rfc3VibWl0KCRhdHRzLCAkdGhpbmcpCnsKCWV4dHJhY3Qo bEF0dHMoYXJyYXkoCgkJJ2J1dHRvbicJPT4gJ25vJywKCQknbGFiZWwnCQk9PiB6ZW1fY29u dGFjdF9nVHh0KCdzZW5kJykKCSksICRhdHRzKSk7CgoJaWYgKCRidXR0b24gPT0gJ3llcycg b3Igc3RybGVuKCR0aGluZykpCgl7CgkJcmV0dXJuICc8YnV0dG9uIHR5cGU9InN1Ym1pdCIg Y2xhc3M9InplbVN1Ym1pdCIgbmFtZT0iemVtX2NvbnRhY3Rfc3VibWl0IiB2YWx1ZT0iJy4k bGFiZWwuJyI+Jy4oJHRoaW5nID8gdHJpbShwYXJzZSgkdGhpbmcpKSA6ICRsYWJlbCkuJzwv YnV0dG9uPic7Cgl9CgllbHNlCgl7CgkJcmV0dXJuICc8aW5wdXQgdHlwZT0ic3VibWl0IiBj bGFzcz0iemVtU3VibWl0IiBuYW1lPSJ6ZW1fY29udGFjdF9zdWJtaXQiIHZhbHVlPSInLiRs YWJlbC4nIiAvPic7Cgl9Cn0KCmNsYXNzIHplbWNvbnRhY3RfZXZhbHVhdGlvbgp7Cgl2YXIg JHN0YXR1czsKCglmdW5jdGlvbiB6ZW1jb250YWN0X2V2YWx1YXRpb24oKSB7CgkJJHRoaXMt PnN0YXR1cyA9IDA7Cgl9CgoJZnVuY3Rpb24gYWRkX3plbWNvbnRhY3Rfc3RhdHVzKCRjaGVj aykgewoJCSR0aGlzLT5zdGF0dXMgPSAkY2hlY2s7Cgl9CgoJZnVuY3Rpb24gZ2V0X3plbWNv bnRhY3Rfc3RhdHVzKCkgewoJCXJldHVybiAkdGhpcy0+c3RhdHVzOwoJfQp9CgpmdW5jdGlv biAmZ2V0X3plbWNvbnRhY3RfZXZhbHVhdG9yKCkKewoJc3RhdGljICRpbnN0YW5jZTsKCglp ZighaXNzZXQoJGluc3RhbmNlKSkgewoJCSRpbnN0YW5jZSA9IG5ldyB6ZW1jb250YWN0X2V2 YWx1YXRpb24oKTsKCX0KCXJldHVybiAkaW5zdGFuY2U7Cn0KCmZ1bmN0aW9uIHplbV9jb250 YWN0X2xhYmVsMm5hbWUoJGxhYmVsKQp7CgkkbGFiZWwgPSB0cmltKCRsYWJlbCk7CglpZiAo c3RybGVuKCRsYWJlbCkgPT0gMCkgcmV0dXJuICdpbnZhbGlkJzsKCWlmIChzdHJsZW4oJGxh YmVsKSA8PSAzMiBhbmQgcHJlZ19tYXRjaCgnL15bYS16QS1aXVtBLVphLXowLTk6Xy4tXSok LycsICRsYWJlbCkpIHJldHVybiAkbGFiZWw7CgllbHNlIHJldHVybiAncScubWQ1KCRsYWJl bCk7Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0X21haWxoZWFkZXIoJHN0cmluZywgJHR5cGUp CnsKCWdsb2JhbCAkcHJlZnM7CglpZiAoIXN0cnN0cigkc3RyaW5nLCc9PycpIGFuZCAhcHJl Z19tYXRjaCgnL1tceDAwLVx4MUZceDdGLVx4RkZdLycsICRzdHJpbmcpKSB7CgkJaWYgKCJw aHJhc2UiID09ICR0eXBlKSB7CgkJCWlmIChwcmVnX21hdGNoKCcvW11bKCk8PkAsOzoiLlx4 NUNdLycsICRzdHJpbmcpKSB7CgkJCQkkc3RyaW5nID0gJyInLiBzdHJ0cigkc3RyaW5nLCBh cnJheSgiXFwiID0+ICJcXFxcIiwgJyInID0+ICdcIicpKSAuICciJzsKCQkJfQoJCX0KCQll bHNlaWYgKCJ0ZXh0IiAhPSAkdHlwZSkgewoJCQl0cmlnZ2VyX2Vycm9yKCdVbmtub3duIGVu Y29kZV9tYWlsaGVhZGVyIHR5cGUnLCBFX1VTRVJfV0FSTklORyk7CgkJfQoJCXJldHVybiAk c3RyaW5nOwoJfQoJaWYgKCRwcmVmc1snb3ZlcnJpZGVfZW1haWxjaGFyc2V0J10pIHsKCQkk c3RhcnQgPSAnPT9JU08tODg1OS0xP0I/JzsKCQkkcGNyZSAgPSAnLy57MSw0Mn0vcyc7Cgl9 CgllbHNlIHsKCQkkc3RhcnQgPSAnPT9VVEYtOD9CPyc7CgkJJHBjcmUgID0gJy8uezEsNDV9 KD89W1x4MDAtXHg3Rlx4QzAtXHhGRl18JCkvcyc7Cgl9CgkkZW5kID0gJz89JzsKCSRzZXAg PSBpc193aW5kb3dzKCkgPyAiXHJcbiIgOiAiXG4iOwoJcHJlZ19tYXRjaF9hbGwoJHBjcmUs ICRzdHJpbmcsICRtYXRjaGVzKTsKCXJldHVybiAkc3RhcnQgLiBqb2luKCRlbmQuJHNlcC4n ICcuJHN0YXJ0LCBhcnJheV9tYXAoJ2Jhc2U2NF9lbmNvZGUnLCRtYXRjaGVzWzBdKSkgLiAk ZW5kOwp9CiI7czozOiJtZDUiO3M6MzI6ImEzYTFhMTE4OTMyNjYyMWY5MTlmNjk1YWQ5NTE5 MWNkIjt9