# Name: smd_if v0.4 # Type: Client side plugin # Generic multiple if condition tests # Author: Stef Dawson # URL: http://stefdawson.com/ # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMDp7czo0OiJuYW1lIjtzOjY6InNtZF9pZiI7czo3OiJ2ZXJzaW9uIjtzOjM6IjAuNCI7 czo2OiJhdXRob3IiO3M6MTE6IlN0ZWYgRGF3c29uIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIy OiJodHRwOi8vc3RlZmRhd3Nvbi5jb20vIjtzOjExOiJkZXNjcmlwdGlvbiI7czozNToiR2Vu ZXJpYyBtdWx0aXBsZSBpZiBjb25kaXRpb24gdGVzdHMiO3M6NDoidHlwZSI7czoxOiIwIjtz OjQ6ImhlbHAiO3M6MTMzNTA6IjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiNzbWRfaGVscCB7 IGxpbmUtaGVpZ2h0OjEuMyA7fQojc21kX2hlbHAgY29kZSB7IGZvbnQtd2VpZ2h0OmJvbGQ7 IGZvbnQ6IDEwNSUvMTMwJSAiQ291cmllciBOZXciLCBjb3VyaWVyLCBtb25vc3BhY2U7IGJh Y2tncm91bmQtY29sb3I6ICNGRkZGQ0M7fQojc21kX2hlbHAgY29kZS5ibG9jayB7IGZvbnQt d2VpZ2h0Om5vcm1hbDsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgYmFja2dyb3VuZC1jb2xv cjogI2YwZTY4YzsgZGlzcGxheTpibG9jazsgbWFyZ2luOjEwcHggMTBweCAyMHB4OyBwYWRk aW5nOjEwcHg7IH0KI3NtZF9oZWxwIGE6bGluaywgI3NtZF9oZWxwIGE6dmlzaXRlZCB7IGNv bG9yOiBibHVlOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRlci1ib3R0b206IDFweCBz b2xpZCBibHVlOyBwYWRkaW5nLWJvdHRvbToxcHg7fQojc21kX2hlbHAgYTpob3ZlciwgI3Nt ZF9oZWxwIGE6YWN0aXZlIHsgY29sb3I6IGJsdWU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsg Ym9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIGJsdWU7IHBhZGRpbmctYm90dG9tOjFweDt9CiNz bWRfaGVscCBoMSB7IGNvbG9yOiAjMzY5OyBmb250OiAyMHB4IEdlb3JnaWEsIHNhbnMtc2Vy aWY7IG1hcmdpbjogMDsgdGV4dC1hbGlnbjogY2VudGVyOyB9CiNzbWRfaGVscCBoMiB7IGJv cmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjazsgcGFkZGluZzoxMHB4IDAgMDsgY29sb3I6 ICMzNjk7IGZvbnQ6IDE3cHggR2VvcmdpYSwgc2Fucy1zZXJpZjsgfQojc21kX2hlbHAgaDMg eyBjb2xvcjogIzY5MzsgZm9udDogYm9sZCAxMnB4IEFyaWFsLCBzYW5zLXNlcmlmOyBsZXR0 ZXItc3BhY2luZzogMXB4OyBtYXJnaW46IDEwcHggMCAwO3RleHQtdHJhbnNmb3JtOiB1cHBl cmNhc2U7fQojc21kX2hlbHAgaDQgeyBmb250OiBib2xkIDExcHggQXJpYWwsIHNhbnMtc2Vy aWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDAgO3RleHQtdHJhbnNm b3JtOiB1cHBlcmNhc2U7IH0KI3NtZF9oZWxwIC5hdHQtbmFtZSB7IGZvbnQtd2VpZ2h0OmJv bGQ7IH0KI3NtZF9oZWxwIC5tYW5kIHsgYmFja2dyb3VuZDojZWVlOyBib3JkZXI6MXB4IGRv dHRlZCAjOTk5OyB9Cjwvc3R5bGU+Cgk8cD48ZGl2IGlkPSJzbWRfaGVscCI+PC9wPgoKCTxo MT5zbWRfaWY8L2gxPgoKCTxwPkEgcmVhbGx5IHNpbXBsZSwgZ2VuZXJpYyAmIzgyMTY7aWYg Y29uZGl0aW9uJiM4MjE3OyB0ZXN0ZXIuIENhbiB0ZXN0IGFueSBmaWVsZCBpbiB0aGUgY3Vy cmVudCBhcnRpY2xlIG9yIGxpc3QgY29udGV4dCBmb3IgYSB2YXJpZXR5IG9mIGF0dHJpYnV0 ZXMgYW5kIHRha2UgYWN0aW9uIGlmIHRydWUgb3IgZmFsc2UuPC9wPgoKCTxoMj5GZWF0dXJl czwvaDI+CgoJPHVsPgoJCTxsaT5TdXBwb3J0cyBtb3N0IG1ham9yIHZhcmlhYmxlcyBzdWNo IGFzIHNlY3Rpb24sIGNhdGVnb3J5LCBjdXN0b20gZmllbGRzLCBpZCwgcXVlcnkgc3RyaW5n LCBhdXRob3IsIGJvZHksIGV4Y2VycHQsIHlhaGRlIHlhaGRlLCBwbHVzIHVybCB2YXJzIGFu ZCBzZXJ2ZXIgdmFyczwvbGk+CgkJPGxpPlRlc3RzIGluY2x1ZGUgZXF1YWxpdHksIGluZXF1 YWxpdHksIGxlc3MgdGhhbiwgZ3JlYXRlciB0aGFuLCBlbXB0eSwgdXNlZCwgZGVmaW5lZCwg YmVnaW5zLCBjb250YWlucyBhbmQgaXNudW1lcmljPC9saT4KCQk8bGk+VGVzdHMgZm9yIG1v cmUgdGhhbiBvbmUgY29uZGl0aW9uIGF0IG9uY2UgYW5kIGFwcGxpZXMgZWl0aGVyIDxzcGFu IGNsYXNzPSJjYXBzIj5BTkQ8L3NwYW4+IGxvZ2ljIChhbGwgdGVzdHMgbXVzdCBwYXNzKSBv ciBPUiBsb2dpYyAoYW55IHRlc3QgbXVzdCBwYXNzKTwvbGk+CgkJPGxpPlVnbHkgYW5kIHZl cnkgZGlydHkuIFVzZXMgPHNwYW4gY2xhc3M9ImNhcHMiPlBIUDwvc3Bhbj4mIzgyMTc7cyA8 Y29kZT5ldmFsKCk8L2NvZGU+IGNvbW1hbmQgd2hpY2ggbW9zdCBwcm9ncmFtbWVycyBjb25j dXIgc2hvdWxkIGJlIHJlbmFtZWQgPGNvZGU+ZXZpbCgpPC9jb2RlPjwvbGk+Cgk8L3VsPgoK CTxoMj5BdXRob3I8L2gyPgoKCTxwPjxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9j b21tZW50Rm9ybSI+U3RlZiBEYXdzb248L2E+LiBCYXNlZCBvbiBhbiBpZGVhIGJyZXdpbmcg aW4gdGhlIGJhY2sgb2YgbXkgbWluZCB3aGlsZSBoYWNraW5nIGNoc19pZl91cmx2YXIuPC9w PgoKCTxoMj5JbnN0YWxsYXRpb24gLyBVbmluc3RhbGxhdGlvbjwvaDI+CgoJPHA+RG93bmxv YWQgdGhlIHBsdWdpbiBmcm9tIGVpdGhlciA8YSBocmVmPSJodHRwOi8vdGV4dHBhdHRlcm4u b3JnL3BsdWdpbnMvOTMwL3NtZF9pZiI+dGV4dHBhdHRlcm4ub3JnPC9hPiwgb3IgdGhlIDxh IGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9zdyI+c29mdHdhcmUgcGFnZTwvYT4sIHBh c3RlIHRoZSBjb2RlIGludG8gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IEFk bWluIC0mIzYyOyBQbHVnaW5zIHBhbmUsIGluc3RhbGwgYW5kIGVuYWJsZSB0aGUgcGx1Z2lu LiBWaXNpdCB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3 dG9waWMucGhwP2lkPTI1MzU3Ij5mb3J1bSB0aHJlYWQ8L2E+IGZvciBtb3JlIGluZm8gb3Ig dG8gcmVwb3J0IG9uIHRoZSBzdWNjZXNzIG9yIG90aGVyd2lzZSBvZiB0aGUgcGx1Z2luLjwv cD4KCgk8aDI+VXNhZ2U8L2gyPgoKCTxwPlVzZSB0aGUgdGFnIGluIGFueSBwYWdlLCBmb3Jt IG9yIGFydGljbGUgY29udGV4dC48L3A+CgoJPGgzIGNsYXNzPSJ0YWciPnNtZF9pZjwvaDM+ CgoJPHAgY2xhc3M9InRhZy1zdW1tYXJ5Ij5BdCB0aGUgcGxhY2UgeW91IHdpc2ggdG8gY29t cGFyZSBhIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZpZWxkIHdpdGggYW5vdGhl ciB2YWx1ZSwgcHV0IHRoaXMgdGFnIHdpdGggYWxsIHRocmVlIG1hbmRhdG9yeSBhdHRyaWJ1 dGVzLiBFYWNoIHRha2UgYSBzZXJpZXMgb2YgY29tbWEtc2VwYXJhdGVkIGxpc3RzLiBJZiB0 aGUgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uIHRlc3RzIGlzIDxzcGFuIGNsYXNzPSJjYXBz Ij5UUlVFPC9zcGFuPiB0aGUgY29udGFpbmVkIGJsb2NrIHdpbGwgYmUgZXhlY3V0ZWQuIElm IHRoZSByZXN1bHQgaXMgPHNwYW4gY2xhc3M9ImNhcHMiPkZBTFNFPC9zcGFuPiwgYW55IDxj b2RlPiYjNjA7dHhwOmVsc2UgLyYjNjI7PC9jb2RlPiB3aWxsIGJlIGV4ZWN1dGVkIGluc3Rl YWQuIFdpdGhvdXQgYW55IDxjb2RlPiYjNjA7dHhwOmVsc2UgLyYjNjI7PC9jb2RlPiBibG9j aywgbm90aGluZyBpcyBvdXRwdXQgaWYgdGhlIHJlc3VsdCBpcyA8c3BhbiBjbGFzcz0iY2Fw cyI+RkFMU0U8L3NwYW4+LjwvcD4KCgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBj bGFzcz0iYXR0LW5hbWUgbWFuZCI+ZmllbGRkPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0i Y2FwcyI+VFhQPC9zcGFuPiBmaWVsZHMgdG8gdGVzdDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdHQtbmFtZSBtYW5kIj5vcGVyYXRvcjwvc3Bhbj4gOiB0aGUgb3BlcmF0aW9ucyBmb3Ig Y29tcGFyaXNvbiB3aXRoIHRoYXQgZmllbGQgKGUuZy4gZXEsIG5vdCwgYmVnaW5zLCBldGMp PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIG1hbmQiPnZhbHVlPC9zcGFuPiA6 IHRoZSB2YWx1ZXMgdG8gY29tcGFyZSB0aGUgZmllbGRzIHRvPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0dC1uYW1lIj5sb2dpYzwvc3Bhbj4gOiBob3cgbXVsdGlwbGUgdGVzdHMgYXJl IGpvaW5lZDogPHNwYW4gY2xhc3M9ImNhcHMiPkFORDwvc3Bhbj4gb3IgT1I8L2xpPgoJPC91 bD4KCgk8cD5UaGUgY29tbWEgc2VwYXJhdGVkIGxpc3RzIGFyZSBwcm9jZXNzZWQgaW4gb3Jk ZXIsIGkuZS4gdGhlIDFzdCBmaWVsZCB1c2VzIHRoZSAxc3Qgb3BlcmF0b3IgaW4gdGhlIGxp c3QgYW5kIGNvbXBhcmVzIGl0IHRvIHRoZSAxc3QgdmFsdWU7IHRoZSAybmQgZmllbGQgdXNl cyB0aGUgMm5kIG9wZXJhdG9yIGluIHRoZSBsaXN0IGFuZCBjb21wYXJlcyBpdCB0byB0aGUg Mm5kIHZhbHVlLCBhbmQgc28gb24uPC9wPgoKCTxoNCBjbGFzcz0iYXR0LW5hbWUgIiBpZD0i ZmllbGQiPmZpZWxkPC9oND4KCgk8cD5MaXN0IG9mIFRleHRQYXR0ZXJuIGZpZWxkcyB0byBs b29rIGF0LiBQb3NzaWJsZSB2YWx1ZXMgYXJlOgoJPHVsPgoJCTxsaT48Y29kZT5zZWN0aW9u PC9jb2RlPjwvbGk+CgkJPGxpPjxjb2RlPmNhdGVnb3J5PC9jb2RlPiAob3IgPGNvZGU+Y2F0 ZWdvcnkxPC9jb2RlPiwgb3IgPGNvZGU+Y2F0ZWdvcnkyPC9jb2RlPik8L2xpPgoJCTxsaT48 Y29kZT5hdXRob3JpZDwvY29kZT48L2xpPgoJCTxsaT48Y29kZT5pZDwvY29kZT4gKGFydGlj bGUgSUQpPC9saT4KCQk8bGk+PGNvZGU+cXVlcnk8L2NvZGU+ICh0aGUgcXVlcnkgc3RyaW5n IGZyb20gdGhlIHNlYXJjaCBmb3JtKTwvbGk+CgkJPGxpPjxjb2RlPnBnPC9jb2RlPiAodGhl IGN1cnJlbnQgcGFnZSBudW1iZXIpPC9saT4KCQk8bGk+PGNvZGU+c3RhdHVzPC9jb2RlPiAo ZG9jdW1lbnQgc3RhdHVzOiAyMDAsIDQwNCwgNDAzLCBldGMpPC9saT4KCQk8bGk+PGNvZGU+ bmV4dF9pZDwvY29kZT4gKElEIG9mIG5leHQgZG9jdW1lbnQgaWYgb24gYXJ0aWNsZSBwYWdl KTwvbGk+CgkJPGxpPjxjb2RlPm5leHRfdGl0bGU8L2NvZGU+IChUaXRsZSBvZiBuZXh0IGRv Y3VtZW50IGlmIG9uIGFydGljbGUgcGFnZSk8L2xpPgoJCTxsaT48Y29kZT5wcmV2X2lkPC9j b2RlPjwvbGk+CgkJPGxpPjxjb2RlPnByZXZfdGl0bGU8L2NvZGU+PC9saT4KCQk8bGk+PGNv ZGU+bXlfY3VzdG9tX2ZpZWxkX25hbWU8L2NvZGU+IChhbnkgY3VzdG9tIGZpZWxkcyB5b3Ug aGF2ZSBkZWZpbmVkKTwvbGk+CgkJPGxpPjxjb2RlPnVybHZhcjpteV92YXJpYWJsZV9uYW1l PC9jb2RlPiAoYW55IHZhcmlhYmxlIGluIHRoZSBhZGRyZXNzIGJhcik8L2xpPgoJCTxsaT48 Y29kZT5zdnJ2YXI6bXlfdmFyaWFibGVfbmFtZTwvY29kZT4gKGFueSBzZXJ2ZXIgdmFyaWFi bGUsIGUuZy4gPHNwYW4gY2xhc3M9ImNhcHMiPkhUVFA8L3NwYW4+X1VTRVJfQUdFTlQpPC9s aT4KCTwvdWw+PC9wPgoKCTxwPklmIHlvdSBzcGVjaWZ5IGEgZmllbGQgbmFtZSB0aGF0IGRv ZXMgbm90IGV4aXN0LCB0aGUgdGV4dCB5b3UgdXNlIHdpbGwgYmUgdGFrZW4gdmVyYmF0aW0g aW4gbW9zdCBjYXNlcy48YnIgLz4KVGhlcmUgaXMgb25lIHNwZWNpYWwgZmllbGQgPGNvZGU+ cGFyZW50PC9jb2RlPiB0aGF0IGNoZWNrcyB0aGUgcGFyZW50IGNhdGVnb3J5IGZvciBhIG1h dGNoLiBTcGVjaWZ5aW5nICYjODIyMDtwYXJlbnQmIzgyMjE7IG9uIGl0cyBvd24gd2lsbCB1 c2UgdGhlIGdsb2JhbCBjYXRlZ29yeSAoP2M9KS4gSWYgeW91IGFkZCA8Y29kZT46Q0FUbjwv Y29kZT4gdG8gdGhlIG9wdGlvbiAod2hlcmUgJiM4MjE2O24mIzgyMTc7IGlzIDEgb3IgMikg aXQgd2lsbCBpbnN0ZWFkIGNvbXBhcmUgY2F0ZWdvcnkxIG9yIGNhdGVnb3J5MiByZXNwZWN0 aXZlbHkuIElmIHlvdSBhZGQgPGNvZGU+OkxWTG48L2NvZGU+IHRvIHRoZSBvcHRpb24sIHRo ZSBjb21wYXJpc29uIHdpbGwgYmUgcmVzdHJpY3RlZCB0byB0aGF0ICYjODIyMDtsZXZlbCYj ODIyMTsgb2Ygc3ViLWNhdGVnb3J5LjwvcD4KCgk8cD5Zb3UgY2FuIHVzZSA8c3BhbiBjbGFz cz0iY2FwcyI+Q0FUPC9zcGFuPiBhbmQgPHNwYW4gY2xhc3M9ImNhcHMiPkxWTDwvc3Bhbj4g aW4gY29tYmluYXRpb24sIGluZGVwZW5kZW50bHkgb3Igbm90IGF0IGFsbC4gVGhpcyBhbGxv d3MgY29tcGFyaXNvbnMgc3VjaCBhcyAmIzgyMjA7aWYgdGhlIDJuZCBzdWItY2F0ZWdvcnkg b2YgY2F0ZWdvcnkxIGNvbnRhaW5zIGJsYWhibGFoJiM4MjIxOyBvciAmIzgyMjA7aWYgY2F0 ZWdvcnkyIGlzIGEgY2hpbGQgb2YgYmxhaGJsYWgmIzgyMjE7LiBTZWUgPGEgaHJlZj0iI2Vn NCI+RXhhbXBsZSA0PC9hPi48L3A+CgoJPGg0IGNsYXNzPSJhdHQtbmFtZSAiIGlkPSJvcGVy YXRvciI+b3BlcmF0b3I8L2g0PgoKCTxwPkxpc3Qgb2Ygb3BlcmF0b3JzIHRvIGFwcGx5LCBp biBvcmRlciwgdG8gZWFjaCBmaWVsZC4gQ2hvb3NlIGZyb206PC9wPgoKCTx1bD4KCQk8bGk+ PGNvZGU+ZXE8L2NvZGU+IEVxdWFsICh0aGUgZGVmYXVsdCk8L2xpPgoJCTxsaT48Y29kZT5u b3Q8L2NvZGU+IE5vdCBlcXVhbDwvbGk+CgkJPGxpPjxjb2RlPmx0PC9jb2RlPiBMZXNzIHRo YW48L2xpPgoJCTxsaT48Y29kZT5ndDwvY29kZT4gR3JlYXRlciB0aGFuPC9saT4KCQk8bGk+ PGNvZGU+bGU8L2NvZGU+IExlc3MgdGhhbiBvciBlcXVhbCB0bzwvbGk+CgkJPGxpPjxjb2Rl PmdlPC9jb2RlPiBHcmVhdGVyIHRoYW4gb3IgZXF1YWwgdG88L2xpPgoJCTxsaT48Y29kZT5i ZWdpbnM8L2NvZGU+IFZhcmlhYmxlIGJlZ2lucyB3aXRoIGEgc2VxdWVuY2Ugb2YgY2hhcmFj dGVyczwvbGk+CgkJPGxpPjxjb2RlPmNvbnRhaW5zPC9jb2RlPiBWYXJpYWJsZSBjb250YWlu cyBhIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnM8L2xpPgoJCTxsaT48Y29kZT5pc251bTwvY29k ZT4gVmFyaWFibGUgaXMgYSBudW1iZXI8L2xpPgoJCTxsaT48Y29kZT5pc2VtcHR5PC9jb2Rl PiBWYXJpYWJsZSBpcyBlbXB0eSAoY29udGFpbnMgbm90aGluZyk8L2xpPgoJCTxsaT48Y29k ZT5pc3VzZWQ8L2NvZGU+IFZhcmlhYmxlIGhhcyBzb21lIHZhbHVlPC9saT4KCQk8bGk+PGNv ZGU+ZGVmaW5lZDwvY29kZT4gVmFyaWFibGUgaXMgc2V0ICh1c2VmdWwgd2l0aCB1cmx2YXIg dmFyaWFibGVzKTwvbGk+CgkJPGxpPjxjb2RlPnVuZGVmaW5lZDwvY29kZT4gVmFyaWFibGUg aXMgbm90IHNldCwgb3IgbWlzc2luZyBmcm9tIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJM PC9zcGFuPiBsaW5lPC9saT4KCTwvdWw+CgoJPHA+V2l0aCB0aGUgY29tcGFyaXNvbiBvcGVy YXRvcnMgKGd0LCBsdCwgZ2UsIGxlKSB5b3UgbWF5IGZpbmQgb2RkIGJlaGF2aW91ciB3aGVu IGNvbXBhcmluZyBudW1iZXJzLiBGb3IgZXhhbXBsZSwgPGNvZGU+dXJsdmFyOnBpYyBndCA2 PC9jb2RlPiB3aWxsIHJldHVybiA8c3BhbiBjbGFzcz0iY2FwcyI+VFJVRTwvc3Bhbj4gaWYg dGhlIDxjb2RlPnBpYzwvY29kZT4gdmFyaWFibGUgaXMgc2V0IHRvICYjODIyMDtmcmVkJiM4 MjIxOy4gVGhpcyBpcyBiZWNhdXNlIHRoZSB3b3JkICYjODIyMDtmcmVkJiM4MjIxOyAob3Ig YXQgbGVhc3QgdGhlICYjODIyMDtjaGFyYWN0ZXIgZiYjODIyMTspIGlzIGdyZWF0ZXIgaW4g dGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5BU0NJSTwvc3Bhbj4gdGFibGUgdGhhbiB0aGUgJiM4 MjIwO2NoYXJhY3RlciA2JiM4MjIxOy48L3A+CgoJPHA+VG8gY2lyY3VtdmVudCB0aGlzIHBy b2JsZW0sIHlvdSBtYXkgYXBwZW5kIDxjb2RlPjpOVU08L2NvZGU+IHRvIHRoZSBlbmQgb2Yg YW55IG9mIHRoZXNlIDQgb3BlcmF0b3JzIHRvIGZvcmNlIHRoZSBwbHVnaW4gdG8gY2hlY2sg dGhhdCB0aGUgdmFsdWVzIGFyZSBpbnRlZ2Vycy48L3A+CgoJPHA+Tm90ZSB0aGF0IHdoaWxl IDxjb2RlPmRlZmluZWQ8L2NvZGU+IGFuZCA8Y29kZT51bmRlZmluZWQ8L2NvZGU+IGRpZmZl ciBzZW1hbnRpY2FsbHkgZnJvbSA8Y29kZT5pc3VzZWQ8L2NvZGU+IGFuZCA8Y29kZT5pc2Vt cHR5PC9jb2RlPiAocmVzcGVjdGl2ZWx5KSwgdGhlIHdheSA8c3BhbiBjbGFzcz0iY2FwcyI+ VFhQPC9zcGFuPiBhc3NpZ25zIHZhcmlhYmxlcyBtZWFucyB0aGF0LCBmb3IgdGhlIG1vc3Qg cGFydCwgdGhleSBhcmUgaW50ZXJjaGFuZ2VhYmxlLiBPbmUgY2F2ZWF0IGlzIHRoYXQgPGNv ZGU+ZGVmaW5lZDwvY29kZT4gYW5kIDxjb2RlPnVuZGVmaW5lZDwvY29kZT4gZG9uP3QgbWFr ZSBzZW5zZSB3aXRoIDxjb2RlPnBhcmVudDwvY29kZT4sIHNvIHRoZXkgYXJlIGZvcmJpZGRl bi48L3A+CgoJPGg0IGNsYXNzPSJhdHQtbmFtZSAiIGlkPSJ2YWx1ZSI+dmFsdWU8L2g0PgoK CTxwPkxpc3Qgb2YgdmFsdWVzIHRvIGNvbXBhcmUgZWFjaCBmaWVsZCBpbiB0dXJuIHRvLiBD YW4gYmUgc3RhdGljIHZhbHVlcy90ZXh0IG9yIHRoZSBuYW1lIG9mIGFueSA8c3BhbiBjbGFz cz0iY2FwcyI+VFhQPC9zcGFuPiBmaWVsZCwgbGlrZSB0aG9zZSBnaXZlbiBpbiA8c3BhbiBj bGFzcz0iYXR0LW5hbWUiPmZpZWxkPC9zcGFuPiAoZXhjZXB0ICYjODIyMDtwYXJlbnQmIzgy MjE7KS4gVG8gZGlzdGluZ3Vpc2ggYSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBm aWVsZCBmcm9tIHN0YXRpYyB0ZXh0LCBwcmVmaXggdGhlIGZpZWxkIG5hbWUgd2l0aCA8Y29k ZT4/PC9jb2RlPi48L3A+CgoJPHA+Rm9yIGV4YW1wbGU6IDxjb2RlPnZhbHVlPSYjMzQ7dGl0 bGUmIzM0OzwvY29kZT4gd2lsbCBjb21wYXJlIHlvdXIgZmllbGQgYWdhaW5zdCB0aGUgd29y ZCAmIzgyMjA7dGl0bGUmIzgyMjE7LCB3aGVyZWFzIDxjb2RlPnZhbHVlPSYjMzQ7P3RpdGxl JiMzNDs8L2NvZGU+IHdpbGwgY29tcGFyZSB5b3VyIGZpZWxkIGFnYWlucyB0aGUgYXJ0aWNs ZSYjODIxNztzIHRpdGxlLjwvcD4KCgk8cD5Ob3RlIHRoYXQgeW91IG1heSBmaW5kIHVzaW5n IGRvdWJsZS1xdW90ZXMgaW4gZmllbGRzIHlpZWxkcyB1bmV4cGVjdGVkIHJlc3VsdHMuIFRo ZXkgYXJlIGJlc3QgYXZvaWRlZCwgb3Igd29ya2VkIGFyb3VuZCBieSB1c2luZyA8Y29kZT5j b250YWluczwvY29kZT4gaW5zdGVhZCBvZiA8Y29kZT5lcTwvY29kZT4uPC9wPgoKCTxoNCBj bGFzcz0iYXR0LW5hbWUgIiBpZD0ibG9naWMiPmxvZ2ljPC9oND4KCgk8cD5DYW4gYmUgb25l IG9mIDxjb2RlPmFuZDwvY29kZT4gKHRoZSBkZWZhdWx0KSBvciA8Y29kZT5vcjwvY29kZT4u IElmIHVzaW5nIDxjb2RlPmFuZDwvY29kZT4sIGFsbCBjb25kaXRpb25zIG11c3QgYmUgbWV0 IGZvciBhIDxzcGFuIGNsYXNzPSJjYXBzIj5UUlVFPC9zcGFuPiByZXN1bHQuIElmIHVzaW5n IDxjb2RlPm9yPC9jb2RlPiwgYW55IG9mIHRoZSBjb25kaXRpb25zIHRoYXQgbWF0Y2ggd2ls bCBnaXZlIGEgPHNwYW4gY2xhc3M9ImNhcHMiPlRSVUU8L3NwYW4+IHJlc3VsdC48L3A+CgoJ PGgyPkV4YW1wbGVzPC9oMj4KCgk8aDMgaWQ9ImVnMSI+RXhhbXBsZSAxPC9oMz4KCjxwcmUg Y2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiYjNjA7dHhwOnNtZF9pZiBmaWVs ZD0mIzM0O3NlY3Rpb24sIGlkJiMzNDsKICAgICBvcGVyYXRvcj0mIzM0O2JlZ2lucywgZ3Qm IzM0OwogICAgIHZhbHVlPSYjMzQ7bGlvbiwgMTImIzM0OyYjNjI7CiAmIzYwO3R4cDphcnRp Y2xlIC8mIzYyOwomIzYwO3R4cDplbHNlIC8mIzYyOwogJiM2MDtwJiM2MjtOb3QgdG9kYXks IHRoYW5rcyYjNjA7L3AmIzYyOwomIzYwOy90eHA6c21kX2lmJiM2MjsKPC9jb2RlPjwvcHJl PgoKCTxwPkNoZWNrcyBpZiB0aGUgY3VycmVudCBzZWN0aW9uIG5hbWUgYmVnaW5zIHdpdGgg dGhlIHdvcmQgJiM4MjIwO2xpb24mIzgyMjE7IGFuZCB0aGUgYXJ0aWNsZSBJRCBpcyBncmVh dGVyIHRoYW4gMTIuIERpc3BsYXlzIHRoZSBhcnRpY2xlIGlmIGJvdGggY29uZGl0aW9ucyBh cmUgbWV0IG9yIGRpc3BsYXlzIHRoZSB0ZXh0ICYjODIyMDtOb3QgdG9kYXksIHRoYW5rcyYj ODIyMTsgaWYgbm90LjwvcD4KCgk8aDMgaWQ9ImVnMiI+RXhhbXBsZSAyPC9oMz4KCjxwcmUg Y2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiYjNjA7dHhwOnNtZF9pZiBmaWVs ZD0mIzM0O3N1bW1hcnksIGNhdGVnb3J5LCB1cmx2YXI6cGljJiMzNDsKICAgICBvcGVyYXRv cj0mIzM0O2lzdXNlZCwgZXEsIGlzbnVtJiMzNDsKICAgICB2YWx1ZT0mIzM0OywgYW5pbWFs ICwmIzM0OyAmIzYyOwogJiM2MDt0eHA6YXJ0aWNsZSAvJiM2MjsKJiM2MDt0eHA6ZWxzZSAv JiM2MjsKICYjNjA7cCYjNjI7Tm90IHRvZGF5LCB0aGFua3MmIzYwOy9wJiM2MjsKJiM2MDsv dHhwOnNtZF9pZiYjNjI7CjwvY29kZT48L3ByZT4KCgk8cD5DaGVja3MgaWYgdGhlIGN1c3Rv bSBmaWVsZCBsYWJlbGxlZCAmIzgyMjA7c3VtbWFyeSYjODIyMTsgaGFzIHNvbWUgZGF0YSBp biBpdCwgY2hlY2tzIGlmIHRoZSBnbG9iYWwgY2F0ZWdvcnkgZXF1YWxzICYjODIyMDthbmlt YWwmIzgyMjE7IGFuZCB0ZXN0cyBpZiB0aGUgdXJsdmFyIDxjb2RlPnBpYzwvY29kZT4gaXMg bnVtZXJpYyAoZS5nLiA8Y29kZT4/cGljPTU8L2NvZGU+KS48L3A+CgoJPHA+SWYgYWxsIHRo ZXNlIGNvbmRpdGlvbnMgYXJlIG1ldCB0aGUgYXJ0aWNsZSBpcyBkaXNwbGF5ZWQsIGVsc2Ug dGhlIG1lc3NhZ2UgaXMgc2hvd24uIE5vdGUgdGhhdCA8Y29kZT5pc3VzZWQ8L2NvZGU+IGFu ZCA8Y29kZT5pc251bTwvY29kZT4gZG9uJiM4MjE3O3QgdGFrZSBhcmd1bWVudHMgZm9yIDxj b2RlPnZhbHVlPC9jb2RlPiBhbmQgdGhlaXIgcG9zaXRpb25zIGFyZSBoZWxkIGJ5IGVtcHR5 IGNvbW1hcyAodGVjaG5pY2FsbHkgdGhlIGxhc3QgY29tbWEgaXNuJiM4MjE3O3QgbmVlZGVk IGJ1dCBpdCBoZWxwcyBrZWVwIGV2ZXJ5dGhpbmcgbmVhdCBpZiB5b3UgYWRkIGZ1cnRoZXIg dGVzdHMgbGF0ZXIgb24pLjwvcD4KCgk8aDMgaWQ9ImVnMyI+RXhhbXBsZSAzPC9oMz4KCjxw cmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiYjNjA7dHhwOnNtZF9pZiBm aWVsZD0mIzM0O2FydGljbGVfaW1hZ2UsIHN2cnZhcjpIVFRQX1VTRVJfQUdFTlQmIzM0Owog ICAgIG9wZXJhdG9yPSYjMzQ7ZXEsIGNvbnRhaW5zJiMzNDsKICAgICB2YWx1ZT0mIzM0O3Vy bHZhcjpwaWMsIFNhZmFyaSYjMzQ7CiAgICAgbG9naWM9JiMzNDtvciYjMzQ7JiM2MjsKICYj NjA7dHhwOmFydGljbGUgLyYjNjI7CiYjNjA7dHhwOmVsc2UgLyYjNjI7CiAmIzYwO3AmIzYy O05vdCB0b2RheSwgdGhhbmtzJiM2MDsvcCYjNjI7CiYjNjA7L3R4cDpzbWRfaWYmIzYyOwo8 L2NvZGU+PC9wcmU+CgoJPHA+Q29tcGFyZXMgKGZvciBlcXVhbGl0eSkgdGhlIGN1cnJlbnQg YXJ0aWNsZSBpbWFnZSBpZCB3aXRoIHRoZSB2YWx1ZSBvZiB0aGUgdXJsIHZhcmlhYmxlIDxj b2RlPnBpYzwvY29kZT4gYW5kIGNoZWNrcyBpZiB0aGUgdmFsdWUgb2YgdGhlIDxzcGFuIGNs YXNzPSJjYXBzIj5IVFRQPC9zcGFuPl9VU0VSX0FHRU5UIHN0cmluZyBjb250YWlucyAmIzgy MjA7U2FmYXJpJiM4MjIxOy4gVGhpcyBleGFtcGxlIHVzZXMgdGhlICYjODIxNjtvciYjODIx NzsgbG9naWMsIGhlbmNlIGlmIDxlbT5laXRoZXI8L2VtPiBjb25kaXRpb24gaXMgbWV0IHRo ZSBhcnRpY2xlIGlzIHNob3duLCBvdGhlcndpc2UgdGhlICYjODIxNjtub3QgdG9kYXkmIzgy MTc7IG1lc3NhZ2UgaXMgZGlzcGxheWVkLjwvcD4KCgk8aDMgaWQ9ImVnNCI+RXhhbXBsZSA0 PC9oMz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiYjNjA7dHhw OnNtZF9pZiBmaWVsZD0mIzM0O3BhcmVudDpMVkwyJiMzNDsKICAgICBvcGVyYXRvcj0mIzM0 O2VxJiMzNDsKICAgICB2YWx1ZT0mIzM0O21hbW1hbCYjMzQ7CiAgICAgbG9naWM9JiMzNDtv ciYjMzQ7JiM2MjsKICYjNjA7dHhwOmFydGljbGUgLyYjNjI7CiYjNjA7dHhwOmVsc2UgLyYj NjI7CiAmIzYwO3AmIzYyO05vdCB0b2RheSwgdGhhbmtzJiM2MDsvcCYjNjI7CiYjNjA7L3R4 cDpzbWRfaWYmIzYyOwo8L2NvZGU+PC9wcmU+CgoJPHA+Q2hlY2tzIHRoZSAybmQgc3ViLWNh dGVnb3J5IG9mIHRoZSBnbG9iYWwgY2F0ZWdvcnkmIzgyMTc7cyB0cmVlIHRvIHNlZSBpZiBp dCBlcXVhbHMgJiM4MjIwO21hbW1hbCYjODIyMTsuIElmIGl0IGRvZXMsIHNob3cgdGhlIGFy dGljbGU7IGlmIG5vdCBzaG93IHRoZSBtZXNzYWdlLiBSZW1vdmUgdGhlIDxjb2RlPjpMVkwy PC9jb2RlPiB0byBzZWUgaWYgdGhlIGN1cnJlbnQgZ2xvYmFsIGNhdGVnb3J5IGlzIGEgY2hp bGQgb2YgJiM4MjE2O21hbW1hbCYjODIxNzsgKGF0IGFueSBsZXZlbCkuIENoYW5nZSB0aGUg ZmllbGQgdG8gPGNvZGU+cGFyZW50OkNBVDE8L2NvZGU+IHRvIHNlZSBpZiB0aGUgYXJ0aWNs ZSYjODIxNztzIGNhdGVnb3J5MSBtYXRjaGVzICYjODIxNjttYW1tYWwmIzgyMTc7IGF0IGFu eSBsZXZlbCBvciB1c2UgPGNvZGU+ZmllbGQ9JiMzNDtwYXJlbnQ6Q0FUMTpMVkwyJiMzNDs8 L2NvZGU+IHRvIGNvbWJpbmUgdGhlIGNoZWNrcy48L3A+CgoJPGgzIGlkPSJlZzUiPkV4YW1w bGUgNTwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mIzYw O3R4cDpzbWRfaWYgZmllbGQ9JiMzNDt1cmx2YXI6cGljLCB1cmx2YXI6aGlkZSYjMzQ7CiAg ICAgb3BlcmF0b3I9JiMzNDtndDpOVU0sIHVuZGVmaW5lZCYjMzQ7CiAgICAgdmFsdWU9JiMz NDs/YXJ0aWNsZV9pbWFnZSwmIzM0OyYjNjI7CiAmIzYwO3R4cDphcnRpY2xlIC8mIzYyOwom IzYwO3R4cDplbHNlIC8mIzYyOwogJiM2MDtwJiM2MjtOb3QgdG9kYXksIHRoYW5rcyYjNjA7 L3AmIzYyOwomIzYwOy90eHA6c21kX2lmJiM2MjsKPC9jb2RlPjwvcHJlPgoKCTxwPlRlc3Rz IGlmIHRoZSB1cmwgdmFyaWFibGUgPGNvZGU+cGljPC9jb2RlPiBpcyBzdHJpY3RseSBudW1l cmljYWxseSBncmVhdGVyIHRoYW4gdGhlIHZhbHVlIGluIHRoZSBjdXJyZW50IGFydGljbGUm IzgyMTc7cyA8Y29kZT5hcnRpY2xlX2ltYWdlPC9jb2RlPiBmaWVsZCBhbmQgdGhhdCB0aGUg dXJsIHZhcmlhYmxlIDxjb2RlPmhpZGU8L2NvZGU+IGlzIG1pc3NpbmcgZnJvbSB0aGUgPHNw YW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gYWRkcmVzcy48L3A+CgoJPGgyIGNsYXNzPSJj aGFuZ2Vsb2ciPkNoYW5nZWxvZzwvaDI+CgoJPHVsPgoJCTxsaT4zMCBEZWMgMDcgfCA8YSBo cmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vZG93bmxvYWRzL3NtZF9pZl92MC4xLnR4dCI+ djAuMTwvYT4gfCBJbml0aWFsIHJlbGVhc2U8L2xpPgoJCTxsaT4zMCBEZWMgMDcgfCA8YSBo cmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vZG93bmxvYWRzL3NtZF9pZl92MC4yLnR4dCI+ djAuMjwvYT4gfCBBZGRlZCBwYXJlbnQgY2F0ZWdvcnkgY2hlY2tpbmcgKHRoYW5rcyB0aGVf Z2hvc3QpPC9saT4KCQk8bGk+MDIgSmFuIDA4IHwgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdz b24uY29tL2Rvd25sb2Fkcy9zbWRfaWZfdjAuMy50eHQiPnYwLjM8L2E+IHwgQWRkZWQgZGVm aW5lZC91bmRlZmluZWQgYW5kIHN0cmljdCBudW1lcmljIGNvbXBhcmlzb25zPC9saT4KCQk8 bGk+MDYgSmFuIDA4IHwgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL2Rvd25sb2Fk cy9zbWRfaWZfdjAuNC50eHQiPnYwLjQ8L2E+IHwgQWRkZWQgPGNvZGU+PzwvY29kZT4gbm90 YXRpb24gdG8gYWxsb3cgdGhlIHZhbHVlIHRvIHJlYWQgPHNwYW4gY2xhc3M9ImNhcHMiPlRY UDwvc3Bhbj4gZmllbGRzLiBCZXR0ZXIgcXVvdGUgc3VwcG9ydCAoYm90aCB0aGFua3MgTmVp bEEpPC9saT4KCTwvdWw+CgoJPHA+PC9kaXY+PC9wPiI7czozOiJjc3MiO3M6MTEzNjoiPHN0 eWxlIHR5cGU9InRleHQvY3NzIj4KI3NtZF9oZWxwIHsgbGluZS1oZWlnaHQ6MS4zIDt9CiNz bWRfaGVscCBjb2RlIHsgZm9udC13ZWlnaHQ6Ym9sZDsgZm9udDogMTA1JS8xMzAlICJDb3Vy aWVyIE5ldyIsIGNvdXJpZXIsIG1vbm9zcGFjZTsgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZD Qzt9CiNzbWRfaGVscCBjb2RlLmJsb2NrIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBib3JkZXI6 MXB4IGRvdHRlZCAjOTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBlNjhjOyBkaXNwbGF5OmJs b2NrOyBtYXJnaW46MTBweCAxMHB4IDIwcHg7IHBhZGRpbmc6MTBweDsgfQojc21kX2hlbHAg YTpsaW5rLCAjc21kX2hlbHAgYTp2aXNpdGVkIHsgY29sb3I6IGJsdWU7IHRleHQtZGVjb3Jh dGlvbjogbm9uZTsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsdWU7IHBhZGRpbmctYm90 dG9tOjFweDt9CiNzbWRfaGVscCBhOmhvdmVyLCAjc21kX2hlbHAgYTphY3RpdmUgeyBjb2xv cjogYmx1ZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBib3JkZXItYm90dG9tOiAycHggc29s aWQgYmx1ZTsgcGFkZGluZy1ib3R0b206MXB4O30KI3NtZF9oZWxwIGgxIHsgY29sb3I6ICMz Njk7IGZvbnQ6IDIwcHggR2VvcmdpYSwgc2Fucy1zZXJpZjsgbWFyZ2luOiAwOyB0ZXh0LWFs aWduOiBjZW50ZXI7IH0KI3NtZF9oZWxwIGgyIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlk IGJsYWNrOyBwYWRkaW5nOjEwcHggMCAwOyBjb2xvcjogIzM2OTsgZm9udDogMTdweCBHZW9y Z2lhLCBzYW5zLXNlcmlmOyB9CiNzbWRfaGVscCBoMyB7IGNvbG9yOiAjNjkzOyBmb250OiBi b2xkIDEycHggQXJpYWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdp bjogMTBweCAwIDA7dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTt9CiNzbWRfaGVscCBoNCB7 IGZvbnQ6IGJvbGQgMTFweCBBcmlhbCwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDFw eDsgbWFyZ2luOiAxMHB4IDAgMCA7dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfQojc21k X2hlbHAgLmF0dC1uYW1lIHsgZm9udC13ZWlnaHQ6Ym9sZDsgfQojc21kX2hlbHAgLm1hbmQg eyBiYWNrZ3JvdW5kOiNlZWU7IGJvcmRlcjoxcHggZG90dGVkICM5OTk7IH0KPC9zdHlsZT4i O3M6NDoiY29kZSI7czo1NDAxOiJmdW5jdGlvbiBzbWRfaWYoJGF0dHMsJHRoaW5nKSB7Cgln bG9iYWwgJHRoaXNhcnRpY2xlLCAkcHJldGV4dDsKCglleHRyYWN0KGxBdHRzKGFycmF5KAoJ CSdmaWVsZCcgPT4gJycsCgkJJ29wZXJhdG9yJyA9PiAnZXEnLAoJCSd2YWx1ZScgPT4gJ05V TEwnLAoJCSdsb2dpYycgPT4gJ2FuZCcsCgkJJ2RlYnVnJyA9PiAnMCcsCgkpLCAkYXR0cykp OwoKCS8vIFNwZWNpYWwgZmllbGQgbmFtZXMgdGhhdCByZWZlciB0byAkcHJldGV4dCBvciBl bHNld2hlcmUgLSBldmVyeXRoaW5nIGVsc2UgaXMgYXNzdW1lZCB0bwoJLy8gZXhpc3QgaW4g JHRoaXNhcnRpY2xlIHNvIGN1c3RvbSBmaWVsZHMgY2FuIGJlIHVzZWQKCSRhbGxQdHh0ID0g YXJyYXkoCgkJImlkIiA9PiAnJHByZXRleHRbImlkIl0nLAoJCSJzZWN0aW9uIiA9PiAnJHBy ZXRleHRbInMiXScsCgkJImNhdGVnb3J5IiA9PiAnJHByZXRleHRbImMiXScsCgkJInF1ZXJ5 IiA9PiAnJHByZXRleHRbInEiXScsCgkJInBnIiA9PiAnJHByZXRleHRbInBnIl0nLAoJCSJz dGF0dXMiID0+ICckcHJldGV4dFsic3RhdHVzIl0nLAoJCSJuZXh0X2lkIiA9PiAoKGlzc2V0 KCRwcmV0ZXh0WyduZXh0X2lkJ10pKSA/ICckcHJldGV4dFsibmV4dF9pZCJdJyA6ICcnKSwK CQkibmV4dF90aXRsZSIgPT4gKChpc3NldCgkcHJldGV4dFsnbmV4dF90aXRsZSddKSkgPyAn JHByZXRleHRbIm5leHRfdGl0bGUiXScgOiAnJyksCgkJInByZXZfaWQiID0+ICgoaXNzZXQo JHByZXRleHRbJ3ByZXZfaWQnXSkpID8gJyRwcmV0ZXh0WyJwcmV2X2lkIl0nIDogJycpLAoJ CSJwcmV2X3RpdGxlIiA9PiAoKGlzc2V0KCRwcmV0ZXh0WydwcmV2X3RpdGxlJ10pKSA/ICck cHJldGV4dFsicHJldl90aXRsZSJdJyA6ICcnKSwKCSk7CgkvLyBFYWNoIGVudHJ5IGhhcyB0 aGUgb3BlcmF0aW9uIHRvIGJlIGV2YWwoKWQgbGF0ZXIsIGl0J3MgInR5cGUiICh0ZXN0IFZB THVlIG9yIFZBUmlhYmxlKSBhbmQgYSBsaXN0IG9mIGRpc2FsbG93ZWQgZmllbGRzCgkkYWxs T3BzID0gYXJyYXkoCgkJJ2VxJyA9PiBhcnJheSgnRklFTEQgPT09IFZBTFVFJywgJ1ZBTCcs ICcnKSwKCQknbm90JyA9PiBhcnJheSgnRklFTEQgIT09IFZBTFVFJywgJ1ZBTCcsICcnKSwK CQknZ3QnID0+IGFycmF5KCdDQVNUIEZJRUxEID4gQ0FTVCBWQUxVRScsICdWQUwnLCAnJyks CgkJJ2dlJyA9PiBhcnJheSgnQ0FTVCBGSUVMRCA+PSBDQVNUIFZBTFVFJywgJ1ZBTCcsICcn KSwKCQknbHQnID0+IGFycmF5KCdDQVNUIEZJRUxEIDwgQ0FTVCBWQUxVRScsICdWQUwnLCAn JyksCgkJJ2xlJyA9PiBhcnJheSgnQ0FTVCBGSUVMRCA8PSBDQVNUIFZBTFVFJywgJ1ZBTCcs ICcnKSwKCQknYmVnaW5zJyA9PiBhcnJheSgnc3RycG9zKEZJRUxELCBWQUxVRSkgPT09IDAn LCAnVkFMJywgJycpLAoJCSdjb250YWlucycgPT4gYXJyYXkoJ3N0cnBvcyhGSUVMRCwgVkFM VUUpICE9PSBmYWxzZScsICdWQUwnLCAnJyksCgkJJ2RlZmluZWQnID0+IGFycmF5KCdpc3Nl dChGSUVMRCknLCAnVkFSJywgJ3BhcmVudCcpLAoJCSd1bmRlZmluZWQnID0+IGFycmF5KCch aXNzZXQoRklFTEQpJywgJ1ZBUicsICdwYXJlbnQnKSwKCQknaXNudW0nID0+IGFycmF5KCdp c19udW1lcmljKEZJRUxEKScsICdWQUwnLCAnJyksCgkJJ2lzZW1wdHknID0+IGFycmF5KCdG SUVMRCA9PSAiIicsICdWQUwnLCAnJyksCgkJJ2lzdXNlZCcgPT4gYXJyYXkoJ0ZJRUxEICE9 ICIiJywgJ1ZBTCcsICcnKSwKCSk7CgkkbnVtZXJpY09wcyA9ICJndCwgZ2UsIGx0LCBsZSI7 CgkkZmllbGRzID0gZG9fbGlzdCgkZmllbGQpOwoJJG9wcyA9IGRvX2xpc3QoJG9wZXJhdG9y KTsKCSR2YWxzID0gZG9fbGlzdCgkdmFsdWUpOwoJJG91dCA9IGFycmF5KCk7CgoJZm9yICgk aWR4ID0gMDsgJGlkeCA8IGNvdW50KCRmaWVsZHMpOyAkaWR4KyspIHsKCQkkZmxkID0gJGZp ZWxkc1skaWR4XTsKCQkkZmxkUGFydHMgPSBleHBsb2RlKCI6IiwgJGZsZCk7CgkJJHZhbCA9 ICR2YWxzWyRpZHhdOwoJCSR2YWxQYXJ0cyA9IGV4cGxvZGUoIjoiLCAkdmFsKTsKCQkkb3Ag PSAkb3BzWyRpZHhdOwoJCSRvcFBhcnRzID0gZXhwbG9kZSgiOiIsICRvcCk7CgkJJG9wID0g KGFycmF5X2tleV9leGlzdHMoJG9wUGFydHNbMF0sICRhbGxPcHMpKSA/ICRvcFBhcnRzWzBd IDogImVxIjsKCQkkY2FzdCA9ICgoY291bnQoJG9wUGFydHMpID09IDIpICYmICgkb3BQYXJ0 c1sxXSA9PT0gIk5VTSIpICYmIChpbl9saXN0KCRvcCwgJG51bWVyaWNPcHMpKSkgPyAnKGlu dCknIDogJyc7CgoJCS8vIEdldCB0aGUgb3BlcmF0b3IgcmVwbGFjZW1lbnQgY29kZQoJCSR0 eXBlID0gJGFsbE9wc1skb3BdWzFdOwoJCSRleGNsdWRlID0gZG9fbGlzdCgkYWxsT3BzWyRv cF1bMl0pOwoJCSRvcCA9ICRhbGxPcHNbJG9wXVswXTsKCgkJLy8gQXMgbG9uZyBhcyB0aGUg Y3VycmVudCBvcGVyYXRvciBhbGxvd3MgdGhpcyBmaWVsZC4uLgoJCWlmICghaW5fYXJyYXko JGZsZFBhcnRzWzBdLCAkZXhjbHVkZSkpIHsKCQkJLy8gTWFrZSB1cCB0aGUgdGVzdCBmaWVs ZCB2YXJpYWJsZQoJCQlpZiAoYXJyYXlfa2V5X2V4aXN0cygkZmxkUGFydHNbMF0sICRhbGxQ dHh0KSkgewoJCQkJJGZsZCA9ICRhbGxQdHh0WyRmbGRQYXJ0c1swXV07CgkJCX0gZWxzZSBp ZiAoJGZsZFBhcnRzWzBdID09ICJwYXJlbnQiKSB7CgkJCQkkbGV2ZWwgPSAnJzsKCQkJCWZv cmVhY2ggKCRmbGRQYXJ0cyBhcyAkcGFydCkgewoJCQkJCWlmICgkcGFydCA9PSAicGFyZW50 IikgewoJCQkJCQkkdGhlQ2F0ID0gJHByZXRleHRbJ2MnXTsKCQkJCQl9IGVsc2UgaWYgKHN0 cnBvcygkcGFydCwgIkNBVCIpID09PSAwKSB7CgkJCQkJCSR0aGVDYXQgPSAkdGhpc2FydGlj bGVbImNhdGVnb3J5Ii5zdWJzdHIoJHBhcnQsIDMpXTsKCQkJCQl9IGVsc2UgaWYgKHN0cnBv cygkcGFydCwgIkxWTCIpID09PSAwKSB7CgkJCQkJCSRsZXZlbCA9IHN1YnN0cigkcGFydCwg Myk7CgkJCQkJfQoJCQkJfQoKCQkJCSR0cmVlID0gZ2V0VHJlZVBhdGgoZG9TbGFzaCgkdGhl Q2F0KSwgJ2FydGljbGUnKTsKCQkJCWlmICgkZGVidWcpIHsKCQkJCQlkbXAoJHRyZWUpOwoJ CQkJfQoJCQkJJGl0ZW1zID0gYXJyYXkoKTsKCQkJCWZvcmVhY2ggKCR0cmVlIGFzICRsZWFm KSB7CgkJCQkJaWYgKCRsZWFmWyduYW1lJ10gPT0gInJvb3QiIHx8ICRsZWFmWyduYW1lJ10g PT0gJHRoZUNhdCkgewoJCQkJCQljb250aW51ZTsKCQkJCQl9IGVsc2UgaWYgKCRsZXZlbCA9 PSAnJyB8fCAkbGV2ZWwgPT0gJGxlYWZbJ2xldmVsJ10pIHsKCQkJCQkJJGl0ZW1zW10gPSAk bGVhZlsnbmFtZSddOwoJCQkJCX0KCQkJCX0KCQkJCSRmbGQgPSBkb1F1b3RlKGltcGxvZGUo IiAiLCAkaXRlbXMpKTsKCQkJfSBlbHNlIGlmICgkZmxkUGFydHNbMF0gPT0gInVybHZhciIp IHsKCQkJCWlmIChjb3VudCgkZmxkUGFydHMpID09IDIpIHsKCQkJCQkkZmxkID0gKGdwcygk ZmxkUGFydHNbMV0pICE9PSAnJykgPyAnJF9HRVRbIicuJGZsZFBhcnRzWzFdLiciXScgOiBk b1F1b3RlKGltcGxvZGUoIiIsICRmbGRQYXJ0cykpOwoJCQkJfQoJCQl9IGVsc2UgaWYgKCRm bGRQYXJ0c1swXSA9PSAic3ZydmFyIikgewoJCQkJaWYgKGNvdW50KCRmbGRQYXJ0cykgPT0g MikgewoJCQkJCSRmbGQgPSAoc2VydmVyU2V0KCRmbGRQYXJ0c1sxXSkgIT09ICcnKSA/ICck X1NFUlZFUlsiJy4kZmxkUGFydHNbMV0uJyJdJyA6IGRvUXVvdGUoaW1wbG9kZSgiIiwgJGZs ZFBhcnRzKSk7CgkJCQl9CgkJCX0gZWxzZSB7CgkJCQkkZmxkID0gJyR0aGlzYXJ0aWNsZVsi Jy4kZmxkUGFydHNbMF0uJyJdJzsKCQkJfQoKCQkJLy8gRmluZCB0aGUgcmVhbCB2YWx1ZSB0 byBjb21wYXJlIGFnYWluc3QgKG1heSBiZSBhbm90aGVyIGZpZWxkKQoJCQlpZiAoJHZhbFBh cnRzWzBdID09ICJ1cmx2YXIiKSB7CgkJCQlpZiAoY291bnQoJHZhbFBhcnRzKSA9PSAyKSB7 CgkJCQkJJHZhbCA9IChncHMoJHZhbFBhcnRzWzFdKSAhPT0gJycpID8gJyRfR0VUWyInLiR2 YWxQYXJ0c1sxXS4nIl0nIDogZG9RdW90ZShpbXBsb2RlKCIiLCAkdmFsUGFydHMpKTsKCQkJ CX0KCQkJfSBlbHNlIGlmICgkdmFsUGFydHNbMF0gPT0gInN2cnZhciIpIHsKCQkJCWlmIChj b3VudCgkdmFsUGFydHMpID09IDIpIHsKCQkJCQkkdmFsID0gKHNlcnZlclNldCgkdmFsUGFy dHNbMV0pICE9PSAnJykgPyAnJF9TRVJWRVJbIicuJHZhbFBhcnRzWzFdLiciXScgOiBkb1F1 b3RlKGltcGxvZGUoIiIsICR2YWxQYXJ0cykpOwoJCQkJfQoJCQl9IGVsc2UgaWYgKHN0cnBv cygkdmFsUGFydHNbMF0sICI/IikgPT09IDApIHsKCQkJCSR2YWxQYXJ0c1swXSA9IHN1YnN0 cigkdmFsUGFydHNbMF0sIDEpOwoJCQkJaWYgKGFycmF5X2tleV9leGlzdHMoJHZhbFBhcnRz WzBdLCAkYWxsUHR4dCkpIHsKCQkJCQkkdmFsID0gJGFsbFB0eHRbJHZhbFBhcnRzWzBdXTsK CQkJCX0gZWxzZSBpZiAoaXNzZXQoJHRoaXNhcnRpY2xlWyR2YWxQYXJ0c1swXV0pKSB7CgkJ CQkJJHZhbCA9ICckdGhpc2FydGljbGVbIicuJHZhbFBhcnRzWzBdLiciXSc7CgkJCQl9CgkJ CX0gZWxzZSB7CgkJCQkkdmFsID0gZG9RdW90ZShzdHJfcmVwbGFjZSgnIicsICdcIicsICR2 YWxQYXJ0c1swXSkpOwoJCQl9CgoJCQkvLyBDaGVjayB0aGUgdHlwZSBhbmQgZml4IHRoZSB2 YXJpYWJsZSBpZiBuZWNlc3NhcnkKCQkJaWYgKCgkdHlwZSA9PSAiVkFSIikgJiYgIShzdHJw b3MoJGZsZCwgIiQiKSA9PT0gMCkpIHsKCQkJCSRmbGQgPSAiJCIucHJlZ19yZXBsYWNlKCIv W15hLXpBLVowLTlcX10rLyIsICIiLCAkZmxkKTsKCQkJfQoKCQkJLy8gUmVwbGFjZSB0aGUg c3RyaW5nIHBhcnRzLi4uCgkJCSRjbWQgPSBzdHJfcmVwbGFjZSgiQ0FTVCIsICRjYXN0LCAk b3ApOwoJCQkkY21kID0gc3RyX3JlcGxhY2UoIkZJRUxEIiwgJGZsZCwgJGNtZCk7CgkJCSRj bWQgPSAiXCRvdXRbXSA9ICgiLnN0cl9yZXBsYWNlKCJWQUxVRSIsICgoJHZhbD09JycgJiYg c3RycG9zKCRvcCwgInN0cnBvcyIpICE9PSBmYWxzZSkgPyAnICcgOiAkdmFsKSwgJGNtZCku IikgPyAndHJ1ZScgOiAnZmFsc2UnOyI7CgkJCWlmICgkZGVidWcpIHsKCQkJCWRtcCgkY21k KTsKCQkJfQoJCQkvLyAuLi4gYW5kIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uCgkJCWV2YWwo JGNtZCk7CgkJfQoJfQoJaWYgKCRkZWJ1ZykgewoJCWRtcCgkb3V0KTsKCX0KCS8vIENoZWNr IGxvZ2ljCgkkcmVzdWx0ID0gdHJ1ZTsKCWlmIChzdHJ0b2xvd2VyKCRsb2dpYykgPT0gImFu ZCIgJiYgaW5fYXJyYXkoImZhbHNlIiwgJG91dCkpIHsKCQkkcmVzdWx0ID0gZmFsc2U7Cgl9 CglpZiAoc3RydG9sb3dlcigkbG9naWMpID09ICJvciIgJiYgIWluX2FycmF5KCJ0cnVlIiwg JG91dCkpIHsKCQkkcmVzdWx0ID0gZmFsc2U7Cgl9CgoJcmV0dXJuIHBhcnNlKEV2YWxFbHNl KCR0aGluZywgJHJlc3VsdCkpOwp9IjtzOjM6Im1kNSI7czozMjoiNGNlM2Y0NTAzYTQ0YjQ4 MzFhZjUyYzE1NTdmMDgwNzkiO30=