# Name: smd_query v0.41 # Type: Client side plugin # Generic database access via SQL # Author: Stef Dawson # URL: http://stefdawson.com/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjk6InNtZF9xdWVyeSI7czo2OiJhdXRob3IiO3M6MTE6IlN0 ZWYgRGF3c29uIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIyOiJodHRwOi8vc3RlZmRhd3Nvbi5j b20vIjtzOjc6InZlcnNpb24iO3M6NDoiMC40MSI7czoxMToiZGVzY3JpcHRpb24iO3M6MzE6 IkdlbmVyaWMgZGF0YWJhc2UgYWNjZXNzIHZpYSBTUUwiO3M6NDoiaGVscCI7czozODc5Nzoi PGRpdiBpZD0ic21kX2hlbHAiPgoKCTxoMT5zbWRfcXVlcnk8L2gxPgoKCTxwPlRoZSBsYXpp ZXN0IHRhZyBldmVyISBBbGxvd3MgeW91IHRvIG1ha2UgYWQtaG9jIHF1ZXJpZXMgdG8gdGhl IGRhdGFiYXNlIGFuZCBwcm9jZXNzIHRoZSByZXN1bHRzLCByb3cgYnkgcm93LCBpbiBhIGZv cm0gb3IgY29udGFpbmVyLjwvcD4KCgk8aDI+RmVhdHVyZXM8L2gyPgoKCTx1bD4KCQk8bGk+ U3VwcG9ydHMgc2ltcGxlIHF1ZXJpZXMgd2l0aCBhIHJlZHVjZWQgc3ludGF4ICg8c3BhbiBj bGFzcz0iY2FwcyI+U0VMRUNUPC9zcGFuPiBjb2xzIDxzcGFuIGNsYXNzPSJjYXBzIj5GUk9N PC9zcGFuPiB0YWJsZSA8c3BhbiBjbGFzcz0iY2FwcyI+V0hFUkU8L3NwYW4+IGNsYXVzZSkg b3IgeW91ciBvd24gY3VzdG9tIHF1ZXJpZXM8L2xpPgoJCTxsaT5SZWFkIGluZm9ybWF0aW9u IGZyb20gYW55IHBhcnQgb2YgdGhlIGN1cnJlbnQgYXJ0aWNsZSwgaW1hZ2UgKHBsYW5uZWQp LCBmaWxlLCBsaW5rLCA8Y29kZT4mbHQ7dHhwOnZhcmlhYmxlIC8mZ3Q7PC9jb2RlPiBvciA8 c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBsaW5lLiBJZiBhbnkgZmllbGRzIGFyZSBt aXNzaW5nIHlvdSBjYW4gc3BlY2lmeSBhIGRlZmF1bHQgdmFsdWU8L2xpPgoJCTxsaT5PcHRp b25hbGx5IGZpbHRlciB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gaW5wdXQg dXNpbmcgcmVndWxhciBleHByZXNzaW9ucywgZm9yIHNhZmV0eTwvbGk+CgkJPGxpPkVhY2gg cm93IGNhbiBiZSBwYXNzZWQgdG8gYSBmb3JtIChvciB0aGUgcGx1Z2luIGNhbiBiZSB1c2Vk IGFzIGEgY29udGFpbmVyIHRhZyB3aXRoIG9yIHdpdGhvdXQgPGNvZGU+Jmx0O3R4cDplbHNl IC8mZ3Q7PC9jb2RlPikgdG8gZGlzcGxheSB0aGUgcmVzdWx0czwvbGk+CgkJPGxpPkNvbHVt biBoZWFkaW5ncyBtYXkgYmUgb3V0cHV0IHVzaW5nIGEgc2Vjb25kIGZvcm08L2xpPgoJCTxs aT5SZXN1bHQgc2V0cyBjYW4gYmUgcGFnaW5hdGVkLCB3aXRoIHN1cHBvcnQgZm9yIGEgcGFn aW5nIGZvcm08L2xpPgoJPC91bD4KCgk8aDI+QXV0aG9yPC9oMj4KCgk8cD48YSBocmVmPSJo dHRwOi8vc3RlZmRhd3Nvbi5jb20vY29udGFjdCI+U3RlZiBEYXdzb248L2E+PC9wPgoKCTxo Mj5JbnN0YWxsYXRpb24gLyBVbmluc3RhbGxhdGlvbjwvaDI+CgoJPHA+RG93bmxvYWQgdGhl IHBsdWdpbiBmcm9tIGVpdGhlciA8YSBocmVmPSJodHRwOi8vdGV4dHBhdHRlcm4ub3JnL3Bs dWdpbnMvOTc2L3NtZF9xdWVyeSI+dGV4dHBhdHRlcm4ub3JnPC9hPiwgb3IgdGhlIDxhIGhy ZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9zdyI+c29mdHdhcmUgcGFnZTwvYT4sIHBhc3Rl IHRoZSBjb2RlIGludG8gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IEFkbWlu IC0mZ3Q7IFBsdWdpbnMgcGFuZSwgaW5zdGFsbCBhbmQgZW5hYmxlIHRoZSBwbHVnaW4uIFZp c2l0IHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3Bp Yy5waHA/aWQ9MjcyNzkiPmZvcnVtIHRocmVhZDwvYT4gZm9yIG1vcmUgaW5mbyBvciB0byBy ZXBvcnQgb24gdGhlIHN1Y2Nlc3Mgb3Igb3RoZXJ3aXNlIG9mIHRoZSBwbHVnaW4uPC9wPgoK CTxwPlVuaW5zdGFsbCBieSBzaW1wbHkgZGVsZXRpbmcgdGhlIHBsdWdpbiBmcm9tIHRoZSBB ZG1pbi0mZ3Q7UGx1Z2lucyBwYW5lLjwvcD4KCgk8aDI+PGNvZGU+Jmx0O3R4cDpzbWRfcXVl cnkgLyZndDs8L2NvZGU+IHVzYWdlPC9oMj4KCgk8cD5Vc2UgdGhpcyB0YWcgaW4gYW55IHBh Z2UsIGZvcm0sIGFydGljbGUsIGZpbGUsIGxpbmssIGV0YyBjb250ZXh0IHRvIGdyYWIgc3R1 ZmYgZnJvbSB0aGUgZGF0YWJhc2UuIFRoZSBwbHVnaW4gY2FuIG9wZXJhdGUgaW4gb25lIG9m IHR3byBtb2Rlczo8L3A+CgoJPG9sPgoJCTxsaT5zaW1wbGUgbW9kZSBqdXN0IGFsbG93cyA8 Y29kZT5TRUxFQ1Qgc3R1ZmYgRlJPTSB0YWJsZSBXSEVSRSBjbGF1c2U8L2NvZGU+PC9saT4K CQk8bGk+YWR2YW5jZWQgbW9kZSB1c2VzIHRoZSA8Y29kZT5xdWVyeTwvY29kZT4gYXR0cmli dXRlIHNvIHlvdSBjYW4gZGVzaWduIHlvdXIgb3duIHF1ZXJ5LiBJdCBjYW4gaW5jbHVkZSA8 c3BhbiBjbGFzcz0iY2FwcyI+Q09VTlQ8L3NwYW4+ICgqKSwgam9pbnMsIGFueXRoaW5nOyBw ZXJoYXBzIGV2ZW4gPHNwYW4gY2xhc3M9ImNhcHMiPklOU0VSVDwvc3Bhbj4gYW5kIDxzcGFu IGNsYXNzPSJjYXBzIj5VUERBVEU8L3NwYW4+ICg/KSBhbHRob3VnaCBpdCYjODIxNztzIHVu dGVzdGVkIGFuZCBsaWFibGUgdG8gZmxvb2Rpbmc8L2xpPgoJPC9vbD4KCgk8aDMgY2xhc3M9 ImF0dHMgIiBpZD0iYXR0cmlidXRlcyI+QXR0cmlidXRlczwvaDM+CgoJPGg0PlNpbXBsZSBx dWVyaWVzPC9oND4KCgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+Y29sdW1uPC9zcGFuPiA6IGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGNvbHVtbnMgdG8g cmV0cmlldmUgZnJvbSB0aGUgZGF0YWJhc2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+dGFibGU8L3NwYW4+IDogbmFtZSBvZiB0aGUgdGFibGUgdG8gcmV0cmlldmUgdGhlIGNv bHVtbnMgZnJvbSAoeWVzLCBub24tPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gdGFi bGVzIGFyZSBhbHNvIHN1cHBvcnRlZCBpZiB0aGV5IGFyZSBpbiB0aGUgc2FtZSBkYXRhYmFz ZSA6LSk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+d2hlcmU8L3NwYW4+IDogYW55 IGV4dHJhIGNsYXVzZSB5b3Ugd2lzaCB0byBzcGVjaWZ5LiBEZWZhdWx0cyB0byAmIzgyMjA7 dGhlIHdob2xlIGRhcm4gdGFibGUmIzgyMjE7PC9saT4KCTwvdWw+CgoJPGg0PkFkdmFuY2Vk IHF1ZXJpZXM8L2g0PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnF1ZXJ5PC9z cGFuPiA6IGFueSBxdWVyeSB5b3UgbGlrZSBjYW4gYmUgdXNlZCBoZXJlLiBPdmVycmlkZXMg PGNvZGU+Y29sdW1uPC9jb2RlPiwgPGNvZGU+dGFibGU8L2NvZGU+IGFuZCA8Y29kZT53aGVy ZTwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bW9kZTwvc3Bhbj4gOiB5 b3Ugc2hvdWxkIG5vdCBuZWVkIHRvIGFsdGVyIHRoaXMgcGFyYW1ldGVyIGFzIGl0IGlzIHNl dCB0byBhdXRvbWF0aWNhbGx5IGRldGVjdCB0aGUgcXVlcnkgdHlwZS4gSWYgeW91IGFyZSB1 c2luZyA8c3BhbiBjbGFzcz0iY2FwcyI+U0VMRUNUPC9zcGFuPiBzdGF0ZW1lbnRzLCB0aGUg bW9kZSBpcyBzZXQgdG8gPGNvZGU+b3V0cHV0PC9jb2RlPjsgZm9yIGFueSBvdGhlciB0eXBl IG9mIHF1ZXJ5IChlLmcuIDxzcGFuIGNsYXNzPSJjYXBzIj5JTlNFUlQ8L3NwYW4+L1VQREFU RSkgaXQgaXMgc2V0IHRvIDxjb2RlPmlucHV0PC9jb2RlPi4gVGhlIG9ubHkgZGlmZmVyZW5j ZSBiZXR3ZWVuIHRoZSB0d28gbW9kZXMgaXMgdGhhdCBpZiBpdCBzZXQgdG8gPGNvZGU+aW5w dXQ8L2NvZGU+IHlvdSBjYW4gdXNlIHNtZF9xdWVyeSBhcyBhIHNlbGYtY2xvc2luZyB0YWcg YmVjYXVzZSBpdCBkb2VzIG5vdCB1c2UgdGhlIGZvcm0vY29udGFpbmVyIHRvIHBhcnNlIHRo ZSByZXN1bHQgc2V0LiBDaGFuZ2UgdGhpcyBwYXJhbWV0ZXIgb25seSBpZiB0aGUgcGx1Z2lu IGRldGVjdHMgdGhlIG1vZGUgd3JvbmdseSBvciB5b3UgYXJlIGRvaW5nIHNvbWV0aGluZyB1 bm9ydGhvZG94IHdpdGggeW91ciBxdWVyeS4gRGVmYXVsdDogPGNvZGU+YXV0bzwvY29kZT48 L2xpPgoJPC91bD4KCgk8aDQ+Rm9ybXMgYW5kIHBhZ2luZzwvaDQ+CgoJPHVsPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+Zm9ybTwvc3Bhbj4gOiB0aGUgZm9ybSB0byB1c2UgdG8gcGFy c2UgZWFjaCByZXR1cm5lZCByb3cuIFNlZSA8YSBocmVmPSIjcmVwbGFjZW1lbnRzIj5yZXBs YWNlbWVudHM8L2E+LiBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgcGx1Z2luIHdpbGwgdXNlIGFu eXRoaW5nIGNvbnRhaW5lZCBiZXR3ZWVuIGl0cyBvcGVuaW5nIGFuZCBjbG9zaW5nIHRhZzwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jb2xzZm9ybTwvc3Bhbj4gOiBvcHRpb25h bCA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBmb3JtIHRvIHBhcnNlIGFueSBoZWFk ZXIgcm93IGNvbnRhaW5pbmcgY29sdW1uIG5hbWVzIChvZiBsaW1pdGVkIHVzZSk8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+cGFnZWZvcm08L3NwYW4+IDogb3B0aW9uYWwgPHNw YW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZm9ybSB1c2VkIHRvIHNwZWNpZnkgdGhlIGxh eW91dCBvZiBhbnkgcGFnaW5nIG5hdmlnYXRpb24gYW5kIHN0YXRpc3RpY3Mgc3VjaCBhcyBw YWdlIG51bWJlciwgcXVhbnRpdHkgb2YgcmVjb3JkcyBwZXIgcGFnZSwgdG90YWwgbnVtYmVy IG9mIHJlY29yZHMsIGV0Yy48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+cGFnZXBv czwvc3Bhbj4gOiB0aGUgcG9zaXRpb24gb2YgdGhlIHBhZ2luZyBpbmZvcm1hdGlvbi4gT3B0 aW9ucyBhcmUgPGNvZGU+YmVsb3c8L2NvZGU+ICh0aGUgZGVmYXVsdCksIDxjb2RlPmFib3Zl PC9jb2RlPiwgb3IgYm90aCBvZiB0aGVtIHNlcGFyYXRlZCBieSA8Y29kZT5kZWxpbTwvY29k ZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+cHJlcGFyc2U8L3NwYW4+IDogbm9y bWFsbHksIGFueSBjb250YWluZXIgb3IgZm9ybSB3aWxsIGhhdmUgaXRzIHJlcGxhY2VtZW50 IHZhcmlhYmxlcyBzd2FwcGVkIGZvciBjb250ZW50IGFuZCA8ZW0+dGhlbjwvZW0+IGl0IHdp bGwgYmUgcGFyc2VkIHRvIHByb2Nlc3MgYW55IDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3Nw YW4+IHRhZ3MuIElmIHlvdSB3aXNoIHRvIHJldmVyc2UgdGhpcyBvcmRlciBzbyB0aGF0IHRo ZSBjb250YWluZXIgaXMgcGFyc2VkIGZpcnN0IGJlZm9yZSB0aGUgcmVwbGFjZW1lbnRzIGFy ZSBtYWRlLCBzcGVjaWZ5IDxjb2RlPnByZXBhcnNlPSZxdW90OzEmcXVvdDs8L2NvZGU+LiBW ZXJ5IHVzZWZ1bCB3aGVuIHVzaW5nIHRoZSA8Y29kZT4mbHQ7dHhwOnlpZWxkIC8mZ3Q7PC9j b2RlPiB0YWcgKHNlZSA8YSBocmVmPSIjZWc5Ij5leGFtcGxlIDk8L2E+KS4gRGVmYXVsdDog MDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5saW1pdDwvc3Bhbj4gOiBzaG93IHRo aXMgbWFueSByZXN1bHRzIHBlciBwYWdlLiBIYXMgbm8gYmVhcmluZyBvbiBhbnkgPHNwYW4g Y2xhc3M9ImNhcHMiPlNRTDwvc3Bhbj4gPGNvZGU+TElNSVQ8L2NvZGU+IHlvdSBtYXkgc2V0 LiBTZXR0aW5nIGEgPGNvZGU+bGltaXQ8L2NvZGU+IGluIHRoZSBzbWRfcXVlcnkgdGFnIHN3 aXRjaGVzIHBhZ2luZyBvbiBhdXRvbWF0aWNhbGx5IHNvIHlvdSBjYW4gdXNlIHRoZSA8Y29k ZT4mbHQ7dHhwOm9sZGVyIC8mZ3Q7PC9jb2RlPiBhbmQgPGNvZGU+Jmx0O3R4cDpuZXdlciAv Jmd0OzwvY29kZT4gdGFncyBpbnNpZGUgeW91ciA8Y29kZT5wYWdlZm9ybTwvY29kZT4gdG8g c3RlcCB0aHJvdWdoIGVhY2ggcGFnZSBvZiByZXN1bHRzLiBZb3UgbWF5IGFsc28gY29uc3Ry dWN0IHlvdXIgb3duIHBhZ2luZyAoc2VlIDxhIGhyZWY9IiNlZzExIj5leGFtcGxlIDExPC9h Pik8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+b2Zmc2V0PC9zcGFuPiA6IHNraXAg dGhpcyBtYW55IHJvd3MgYmVmb3JlIG91dHB1dHRpbmcgdGhlIHJlc3VsdHM8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+cGFnZXZhcjwvc3Bhbj4gOiBpZiB5b3UgYXJlIHB1dHRp bmcgYW4gc21kX3F1ZXJ5IG9uIHRoZSBzYW1lIHBhZ2UgYXMgYSBzdGFuZGFyZCBhcnRpY2xl IGxpc3QsIHRoZSBidWlsdC1pbiBuZXdlciBhbmQgb2xkZXIgdGFncyB3aWxsIGNsYXNoIHdp dGggdGhvc2Ugb2Ygc21kX3F1ZXJ5OyBjbGlja2luZyBuZXh0L3ByZXYgd2lsbCBzdGVwIHRo cm91Z2ggYm90aCB5b3VyIHJlc3VsdCBzZXQgYW5kIHlvdXIgYXJ0aWNsZSBsaXN0LiBTcGVj aWZ5IGEgZGlmZmVyZW50IHZhcmlhYmxlIG5hbWUgaGVyZSBzbyB0aGUgdHdvIGxpc3RzIGNh biBiZSBuYXZpZ2F0ZWQgaW5kZXBlbmRlbnRseSwgZS5nLiA8Y29kZT5wYWdldmFyPSZxdW90 O3FwYWdlJnF1b3Q7PC9jb2RlPi4gTm90ZSB0aGF0IGlmIHlvdSBjaGFuZ2UgdGhpcywgeW91 IHdpbGwgaGF2ZSB0byBnZW5lcmF0ZSB5b3VyIG93biBjdXN0b20gbmV3ZXIvb2xkZXIgbGlu a3MgKHNlZSA8YSBocmVmPSIjZWcxMSI+ZXhhbXBsZSAxMTwvYT4pIGFuZCB0aGUgPGEgaHJl Zj0iI3NtZF9xaWYiPmNvbmRpdGlvbmFsIHRhZ3M8L2E+LiBZb3UgbWF5IGFsc28gdXNlIHRo ZSBzcGVjaWFsIHZhbHVlIDxjb2RlPnBhZ2V2YXI9JnF1b3Q7U01EX1FVRVJZX1VOSVFVRV9J RCZxdW90OzwvY29kZT4gd2hpY2ggd2lsbCBhc3NpZ24gdGhlIHBhZ2luZyB2YXJpYWJsZSB0 byB0aGlzIHNwZWNpZmljIGluc3RhbmNlIG9mIHlvdXIgcXVlcnkuIFRoaXMgd2lsbCBhbGxv dyB5b3UgdG8gdXNlIG11bHRpcGxlIHNtZF9xdWVyeSB0YWdzIG9uIGEgc2luZ2xlIHBhZ2Ug YW5kIG5hdmlnYXRlIHRoZW0gaW5kZXBlbmRlbnRseSB1c2luZyB0aGUgc2FtZSA8Y29kZT5w YWdlZm9ybTwvY29kZT4gKHNlZSA8YSBocmVmPSIjZWcxMiI+ZXhhbXBsZSAxMjwvYT4gZm9y IGRldGFpbHMpLiBEZWZhdWx0OiA8Y29kZT5wZzwvY29kZT48L2xpPgoJPC91bD4KCgk8aDQ+ RmlsdGVyczwvaDQ+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dXJsZmlsdGVy PC9zcGFuPiA6IGZpbHRlciA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBpbnB1dCB3 aXRoIHRoaXMgbGlzdCBvZiByZWd1bGFyIGV4cHJlc3Npb25zIChlYWNoIHNlcGFyYXRlZCBi eSA8Y29kZT5kZWxpbTwvY29kZT4pPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnVy bHJlcGxhY2U8L3NwYW4+IDogcmVwbGFjZSBlYWNoIGZpbHRlcmVkIDxzcGFuIGNsYXNzPSJj YXBzIj5VUkw8L3NwYW4+IGVsZW1lbnQgbGlzdGVkIGluIDxjb2RlPnVybGZpbHRlcjwvY29k ZT4gd2l0aCB0aGlzIGxpc3Qgb2YgcmVndWxhciBleHByZXNzaW9ucyAoZWFjaCBzZXBhcmF0 ZWQgYnkgPGNvZGU+ZGVsaW08L2NvZGU+KS4gSWYgbm90IHVzZWQsIGFueXRoaW5nIG1hdGNo aW5nIDxjb2RlPnVybGZpbHRlcjwvY29kZT4gd2lsbCBiZSByZW1vdmVkIGZyb20gYW55IDxz cGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHZhcmlhYmxlcy4gU2VlIDxhIGhyZWY9IiNm aWx0ZXJpbmciPkZpbHRlcmluZyBhbmQgaW5qZWN0aW9uPC9hPjwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj5kZWZhdWx0czwvc3Bhbj4gOiBjb21tYSBzZXBhcmF0ZWQgbGlzdCBv ZiB2YWx1ZXMgdG8gdXNlIGluIHRoZSBldmVudCBzb21lIGZpZWxkIHlvdSBzcGVjaWZpZWQg ZG9lc24mIzgyMTc7dCBleGlzdC4gRWFjaCBkZWZhdWx0IHNob3VsZCBiZSBnaXZlbiBhcyA8 Y29kZT5uYW1lOiB2YWx1ZTwvY29kZT4gKHRoZSA8Y29kZT46PC9jb2RlPiBpcyBjb25maWd1 cmFibGUgdmlhIHRoZSA8Y29kZT5wYXJhbWRlbGltPC9jb2RlPiBhdHRyaWJ1dGUpLiBGb3Ig ZXhhbXBsZSA8Y29kZT5kZWZhdWx0cz0mcXVvdDtpZDogMSwgbXlfY2F0OiBtYW1tYWxzLCB1 c2VyX3NlYzogP2RlZnNlYyZxdW90OzwvY29kZT4gd291bGQgbWVhbiB0aGF0IGlmIHRoZSA8 Y29kZT5pZDwvY29kZT4gZmllbGQgd2FzIGJsYW5rLCB0aGUgbnVtYmVyIDEgd291bGQgYmUg dXNlZDsgaWYgdGhlIHZhcmlhYmxlIDxjb2RlPm15X2NhdDwvY29kZT4gd2FzIGVtcHR5LCB0 aGUgd29yZCA8Y29kZT5tYW1tYWxzPC9jb2RlPiB3b3VsZCBiZSB1c2VkOyBhbmQgaWYgdGhl IDxjb2RlPnVzZXJfc2VjPC9jb2RlPiB2YXJpYWJsZSB3YXMgZW1wdHksIHVzZSB0aGUgZGVm YXVsdCB2YWx1ZSBhcyBmb3VuZCBpbiB0aGUgdmFyaWFibGUgPGNvZGU+ZGVmc2VjPC9jb2Rl PiAod2hpY2ggY291bGQgaGF2ZSBiZWVuIHNldCB2aWEgYSA8Y29kZT4mbHQ7dHhwOnZhcmlh YmxlIC8mZ3Q7PC9jb2RlPiBlYXJsaWVyIGluIHRoZSBwYWdlKTwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj5lc2NhcGU8L3NwYW4+IDogbGlzdCBvZiBjb2x1bW4gbmFtZXMgd2l0 aCB3aGljaCB0byBlc2NhcGUgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IGVudGl0 aWVzLiBVc2VmdWwgaWYgeW91IGhhdmUgcmV0dXJuZWQgYm9keSBvciBleGNlcnB0IGJsb2Nr cyB0aGF0IG1heSBjb250YWluIGFwb3N0cm9waGVzIHRoYXQgY291bGQga2lsbCB0YWdzIGlu c2lkZSB0aGUgc21kX3F1ZXJ5IGNvbnRhaW5lci4gRGVmYXVsdD0mIzgyMTc7JiM4MjE2Ozwv bGk+Cgk8L3VsPgoKCTxoND5UYWcvY2xhc3MvZm9ybWF0dGluZyBhdHRyaWJ1dGVzPC9oND4K Cgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5sYWJlbDwvc3Bhbj4gOiBsYWJlbCB0 byBkaXNwbGF5IGFib3ZlIHRoZSBlbnRpcmUgb3V0cHV0PC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPmxhYmVsdGFnPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZyB0byBzdXJyb3Vu ZCB0aGUgbGFiZWwgd2l0aC4gU3BlY2lmeSBpdCB3aXRob3V0IGFuZ2xlIGJyYWNrZXRzIChl LmcuIDxjb2RlPmxhYmVsdGFnPSZxdW90O2gzJnF1b3Q7PC9jb2RlPik8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+d3JhcHRhZzwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgdG8g c3Vycm91bmQgdGhlIGVudGlyZSBvdXRwdXQgKGUuZy4gPGNvZGU+d3JhcHRhZz0mcXVvdDt0 YWJsZSZxdW90OzwvY29kZT4pPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmJyZWFr PC9zcGFuPiA6IGVhY2ggcm93IHdpbGwgYmUgd3JhcHBlZCB3aXRoIHRoaXMgdGFnIChlLmcu IDxjb2RlPmJyZWFrPSZxdW90O3RyJnF1b3Q7PC9jb2RlPik8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+Y2xhc3M8L3NwYW4+IDogPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bh bj4gY2xhc3MgbmFtZSB0byBhcHBseSB0byBlYWNoIHJvdzwvbGk+Cgk8L3VsPgoKCTxoND5Q bHVnaW4gY3VzdG9taXNhdGlvbjwvaDQ+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+c3RyaWN0ZmllbGRzPC9zcGFuPiA6IHdoZW4gdXNpbmcgJiM4MjE2Oz8mIzgyMTc7IGZp ZWxkcywgc3BhY2VzIGFyZSBhbGxvd2VkIGluIGZpZWxkIG5hbWVzLiBTZXQgPGNvZGU+c3Ry aWN0ZmllbGRzPSZxdW90OzEmcXVvdDs8L2NvZGU+IHRvIGZvcmJpZCBzcGFjZXMuIERlZmF1 bHQ6IDA8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZGVsaW08L3NwYW4+IDogdGhl IGRlbGltaXRlciB0byB1c2UgYmV0d2VlbiBwYXR0ZXJucyBpbiA8Y29kZT51cmxmaWx0ZXI8 L2NvZGU+IGFuZCA8Y29kZT51cmxyZXBsYWNlPC9jb2RlPi4gRGVmYXVsdDogY29tbWEgKDxj b2RlPiw8L2NvZGU+KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5wYXJhbWRlbGlt PC9zcGFuPiA6IHRoZSBkZWxpbWl0ZXIgdG8gdXNlIGJldHdlZW4gbmFtZS12YWx1ZSBwYWly cyBpbiA8Y29kZT5kZWZhdWx0czwvY29kZT4uIERlZmF1bHQ6IGNvbG9uICg8Y29kZT46PC9j b2RlPik8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+aGFzaHNpemU8L3NwYW4+IDog KHNob3VsZCBub3QgYmUgbmVlZGVkKSB0aGUgcGx1Z2luIGFzc2lnbnMgYSAzMi1jaGFyYWN0 ZXIsIHVuaXF1ZSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgc21kX3htbCBiYXNlZCBvbiB5 b3VyIHF1ZXJ5IGF0dHJpYnV0ZXMuIDxjb2RlPmhhc2hzaXplPC9jb2RlPiBnb3Zlcm5zIHRo ZSBtZWNoYW5pc20gZm9yIG1ha2luZyB0aGlzIGxvbmcgcmVmZXJlbmNlIHNob3J0ZXIuIEl0 IGNvbXByaXNlcyB0d28gbnVtYmVycyBzZXBhcmF0ZWQgYnkgYSBjb2xvbjsgdGhlIGZpcnN0 IGlzIHRoZSBsZW5ndGggb2YgdGhlIHVuaXFlIElELCB0aGUgc2Vjb25kIGlzIGhvdyBtYW55 IGNoYXJhY3RlcnMgdG8gc2tpcCBwYXN0IGVhY2ggdGltZSBhIGNoYXJhY3RlciBpcyBjaG9z ZW4uIEZvciBleGFtcGxlLCBpZiB0aGUgdW5pcXVlX3JlZmVyZW5jZSB3YXMgPGNvZGU+MGNm Mjg1ODc5YmY5ZDZiODEyNTM5ZWI3NDhmYmM4ZjY8L2NvZGU+IHRoZW4gPGNvZGU+aGFzaHNp emU9JnF1b3Q7Njo1JnF1b3Q7PC9jb2RlPiB3b3VsZCBtYWtlIGEgNi1jaGFyYWN0ZXIgdW5p cXVlIElEIHVzaW5nIGV2ZXJ5IDV0aCBjaGFyYWN0ZXI7IGluIG90aGVyIHdvcmRzIDxjb2Rl PjA1Zjg5ODwvY29kZT4uIElmIGF0IGFueSB0aW1lLCB5b3UgJiM4MjIwO2ZhbGwgb2ZmJiM4 MjIxOyB0aGUgZW5kIG9mIHRoZSBsb25nIHN0cmluZywgdGhlIHBsdWdpbiB3cmFwcyBiYWNr IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZyBhbmQgY29udGludWVzIGNvdW50aW5n LiBEZWZhdWx0OiA8Y29kZT42OjU8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPnNpbGVudDwvc3Bhbj4gOiBpZiB5b3VyIHF1ZXJ5IGNvbnRhaW5zIGFuIGVycm9yICh3 cm9uZyBjb2x1bW4gbmFtZSBvciBzb21lIG1hbGZvcm1lZCBpbnB1dCksIHRoZSBwbHVnaW4g d2lsbCBpc3N1ZSBhIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGVycm9yIG1lc3Nh Z2UuIFVzaW5nIDxjb2RlPnNpbGVudD0mcXVvdDsxJnF1b3Q7PC9jb2RlPiB3aWxsIGF0dGVt cHQgdG8gaGlkZSB0aGlzIGVycm9yIG1lc3NhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+Y291bnQ8L3NwYW4+IDogQ2FuIGJlIGVpdGhlciAmIzgyMjA7dXAmIzgyMjE7ICh0 aGUgZGVmYXVsdCkgb3IgJiM4MjIwO2Rvd24mIzgyMjE7LiBTZWUgPGEgaHJlZj0iI3JlcGxh Y2VtZW50cyI+e3NtZF90aGlzcm93fTwvYT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+ZGVidWc8L3NwYW4+IDogc2V0IHRvIDEgdG8gc2hvdyBzb21lIGRlYnVnIG91dHB1dDsg dXNlIDIgdG8gc2hvdyBhIGJpdCBtb3JlIGRldGFpbDwvbGk+Cgk8L3VsPgoKCTxwPlRoZSBh dHRyaWJ1dGVzIDxjb2RlPnF1ZXJ5PC9jb2RlPiwgPGNvZGU+Y29sdW1uPC9jb2RlPiwgPGNv ZGU+dGFibGU8L2NvZGU+IGFuZCA8Y29kZT53aGVyZTwvY29kZT4gY2FuIGNvbnRhaW4gcmVw bGFjZW1lbnRzIHRoZW1zZWx2ZXMgdG8gcmVhZCB2YWx1ZXMgZnJvbSB0aGUgY3VycmVudCBj b250ZXh0LiBTcGVjaWZ5IHRoZSBmaWVsZCBuYW1lIHdpdGggYSA8Y29kZT4/PC9jb2RlPiBp biBmcm9udCBvZiBpdCAoZS5nLiA8Y29kZT5xdWVyeT0mcXVvdDtTRUxFQ1QgKiBGUk9NIHR4 cF9pbWFnZSBXSEVSRSBjYXRlZ29yeT0mIzM5Oz9jYXRlZ29yeTEmIzM5OyBPUiBjYXRlZ29y eT0mIzM5Oz9jYXRlZ29yeTImIzM5OzwvY29kZT4pIHdvdWxkIHNob3cgaW1hZ2VzIHRoYXQg aGFkIHRoZWlyIGNhdGVnb3J5IHNldCB0byBvbmUgb2YgdGhlIGFydGljbGUmIzgyMTc7cyBj YXRlZ29yaWVzLjwvcD4KCgk8cD5UaGUgJiM4MjE2Oz8mIzgyMTc7IGZpZWxkcyBjYW4gYmUg YW55IGl0ZW0gZnJvbSB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gdW5pdmVy c2UsIGluY2x1ZGluZyBhbnl0aGluZyBzZXQgaW4gYSA8Y29kZT4mbHQ7dHhwOnZhcmlhYmxl IC8mZ3Q7PC9jb2RlPiBvciBzb21lIHVzZXItaW5wdXQgb24gdGhlIDxzcGFuIGNsYXNzPSJj YXBzIj5VUkw8L3NwYW4+IGFkZHJlc3MgYmFyLiBGaWVsZHMgYXJlIHByb2Nlc3NlZCBpbiB0 aGUgZm9sbG93aW5nIG9yZGVyOyBhcyBzb29uIGFzIGEgbWF0Y2hpbmcgZW50cnkgaXMgZm91 bmQsIHRoZSByZXN0IGFyZSBub3QgY2hlY2tlZDo8L3A+CgoJPHA+PGNvZGU+Jmx0O3R4cDp2 YXJpYWJsZSAvJmd0OzwvY29kZT4gLSZndDsgPGNvZGU+JF9TRVJWRVI8L2NvZGU+IHZhciAt Jmd0OyBpbWFnZSAtJmd0OyBmaWxlIC0mZ3Q7IGxpbmsgLSZndDsgZ2xvYmFsIGFydGljbGUg LSZndDsgY3VycmVudCBhcnRpY2xlIC0mZ3Q7IDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3Nw YW4+IHZhciAtJmd0OyBkZWZhdWx0IHZhbHVlIC0mZ3Q7IHZlcmJhdGltICh3aXRob3V0ICYj ODIxNjs/JiM4MjE3Oyk8L3A+CgoJPHA+VGhpcyBoaWVyYXJjaHkgYWxsb3dzIHNvbWUgZGVn cmVlIG9mIHNhZmV0eTogc2luY2UgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gdmFy aWFibGVzIGFyZSB1bHRpbWF0ZWx5IHNldCBieSB5b3UsIHRoZXkgYXJlIGNoZWNrZWQgZmly c3QsIHRoZW4gZ3JhZHVhbGx5IGxlc3Mgc3BlY2lmaWMgc3R1ZmYgaXMgY2hlY2tlZCB1bnRp bCA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2YXJpYWJsZXMgYXJlIGNvbnNpZGVy ZWQgYXQgdGhlIGJvdHRvbSBvZiB0aGUgZm9vZCBjaGFpbi48L3A+CgoJPGgyIGNsYXNzPSJh dHRzICIgaWQ9InJlcGxhY2VtZW50cyI+UmVwbGFjZW1lbnQgdGFnczwvaDI+CgoJPHA+SW4g eW91ciBvdXRwdXQgZm9ybSB5b3UgbWF5IHNwZWNpZnkgYW55IGNvbHVtbiBuYW1lIHN1cnJv dW5kZWQgd2l0aCA8Y29kZT57fTwvY29kZT4gY2hhcmFjdGVycyB0byBkaXNwbGF5IHRoYXQg ZmllbGQuIFNvIGlmIHlvdXIgcXVlcnkgd2FzIDxjb2RlPlNFTEVDVCBpZCwgbmFtZSwgY2F0 ZWdvcnkgRlJPTSB0eHBfaW1hZ2UgV0hFUkUgZXh0PSZxdW90Oy5qcGcmcXVvdDs8L2NvZGU+ IHlvdSB3b3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgcmVwbGFjZW1lbnRzIGF2YWlsYWJsZTo8 L3A+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2lkfTwvc3Bhbj4gOiB0aGUg aW1hZ2UgSUQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hbWV9PC9zcGFuPiA6 IHRoZSBpbWFnZSBmaWxlbmFtZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57Y2F0 ZWdvcnl9PC9zcGFuPiA6IHRoZSBpbWFnZSBjYXRlZ29yeTwvbGk+Cgk8L3VsPgoKCTxwPkp1 c3QgcHV0IHRob3NlIG5hbWVzIGludG8geW91ciA8Y29kZT5mb3JtPC9jb2RlPiBhbW9uZyBv dGhlciBub3JtYWwgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IG9yIDxzcGFuIGNs YXNzPSJjYXBzIj5UWFA8L3NwYW4+IHRhZ3MsIGFuZCB0aGUgcmVsZXZhbnQgdmFsdWUgZnJv bSB0aGF0IHJvdyB3aWxsIGJlIGRpc3BsYXllZC4gVGhlIHJlcGxhY2VtZW50cyBob25vdXIg YW55IDxjb2RlPkFTPC9jb2RlPiBzdGF0ZW1lbnQgeW91IG1heSBlbXBsb3kgdG8gcmVuYW1l IHRoZW0uPC9wPgoKCTxwPkluIGFkZGl0aW9uLCB0aGUgZm9sbG93aW5nIHJlcGxhY2VtZW50 cyBhcmUgYWRkZWQgdG8gZWFjaCByb3c6PC9wPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPntzbWRfYWxscm93c308L3NwYW4+IDogdGhlIHRvdGFsIG51bWJlciBvZiByb3dz IGluIHRoZSByZXN1bHQgc2V0PHN1cCBjbGFzcz0iZm9vdG5vdGUiPjxhIGhyZWY9IiNmbjY4 ODA2MDg2ODRiNTJmNmY3ZGVjNTEiPjE8L2E+PC9zdXA+PC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPntzbWRfcm93c308L3NwYW4+IDogdGhlIHRvdGFsIG51bWJlciBvZiByb3dz IHZpc2libGUgb24gdGhpcyBwYWdlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntz bWRfcGFnZXN9PC9zcGFuPiA6IHRoZSB0b3RhbCBudW1iZXIgb2YgcGFnZXMgaW4gdGhpcyBy ZXN1bHQgc2V0PHN1cCBjbGFzcz0iZm9vdG5vdGUiPjxhIGhyZWY9IiNmbjY4ODA2MDg2ODRi NTJmNmY3ZGVjNTEiPjE8L2E+PC9zdXA+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PntzbWRfdGhpc3BhZ2V9PC9zcGFuPiA6IHRoZSBjdXJyZW50IHBhZ2UgbnVtYmVyIGJlaW5n IHZpZXdlZDxzdXAgY2xhc3M9ImZvb3Rub3RlIj48YSBocmVmPSIjZm42ODgwNjA4Njg0YjUy ZjZmN2RlYzUxIj4xPC9hPjwvc3VwPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57 c21kX3RoaXNyb3d9PC9zcGFuPiA6IHRoZSBjdXJyZW50IHJvdyBudW1iZXIgb24gdGhpcyBw YWdlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntzbWRfdGhpc2luZGV4fTwvc3Bh bj4gOiB0aGUgY3VycmVudCByb3cgbnVtYmVyICh6ZXJvLWJhc2VkKSBvbiB0aGlzIHBhZ2U8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3NtZF9jdXJzb3J9PC9zcGFuPiA6IHRo ZSBjdXJyZW50IHJvdyBudW1iZXIgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHJlc3VsdCBzZXQ8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3NtZF9jdXJzb3JpbmRleH08L3NwYW4+ IDogdGhlIGN1cnJlbnQgcm93IG51bWJlciBmcm9tIHRoZSBzdGFydCBvZiB0aGUgcmVzdWx0 IHNldCAoemVyby1iYXNlZCk8L2xpPgoJPC91bD4KCgk8cCBpZD0iZm42ODgwNjA4Njg0YjUy ZjZmN2RlYzUxIiBjbGFzcz0iZm9vdG5vdGUiPjxzdXA+MTwvc3VwPiBUaGVzZSB0aHJlZSBp dGVtcyBhcmUgYWxzbyBhdmFpbGFibGUgaW4geW91ciBkZXNpZ25hdGVkIDxjb2RlPnBhZ2Vm b3JtPC9jb2RlPi4gVGhlIHBhZ2Vmb3JtIGNhbiBhbHNvIHV0aWxpc2UgdGhlc2UgZXh0cmEg cmVwbGFjZW1lbnRzOjwvcD4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57c21k X3ByZXZwYWdlfTwvc3Bhbj4gOiB0aGUgcHJldmlvdXMgcGFnZSBudW1iZXIgKGVtcHR5IGlm IG9uIGZpcnN0IHBhZ2UpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntzbWRfbmV4 dHBhZ2V9PC9zcGFuPiA6IHRoZSBuZXh0IHBhZ2UgbnVtYmVyIChlbXB0eSBpZiBvbiBsYXN0 IHBhZ2UpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntzbWRfcm93X3N0YXJ0fTwv c3Bhbj4gOiB0aGUgZmlyc3Qgcm93IG51bWJlciBiZWluZyBkaXNwbGF5ZWQ8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+e3NtZF9yb3dfZW5kfTwvc3Bhbj4gOiB0aGUgbGFzdCBy b3cgbnVtYmVyIGJlaW5nIGRpc3BsYXllZDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij57c21kX3Jvd3NfcHJldn08L3NwYW4+IDogdGhlIG51bWJlciBvZiByb3dzIG9uIHRoZSBw cmV2aW91cyBwYWdlLiBXaWxsIGVpdGhlciBiZSB0aGUgdmFsdWUgb2YgeW91ciA8Y29kZT5s aW1pdDwvY29kZT4sIG9yIDAgaWYgb24gdGhlIGZpcnN0IHBhZ2U8L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+e3NtZF9yb3dzX25leHR9PC9zcGFuPiA6IHRoZSBudW1iZXIgb2Yg cm93cyBvbiB0aGUgbmV4dCBwYWdlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntz bWRfcXVlcnlfdW5pcXVlX2lkfTwvc3Bhbj4gOiB0aGUgdW5pcXVlIElEIGFzc2lnbmVkIHRv IHRoaXMgc21kX3F1ZXJ5IHRhZyAoc2VlIHRoZSA8Y29kZT5oYXNoc2l6ZTwvY29kZT4gYXR0 cmlidXRlIGFuZCA8YSBocmVmPSIjZWcxMiI+ZXhhbXBsZSAxMjwvYT4gZm9yIG1vcmUpPC9s aT4KCTwvdWw+CgoJPHA+VGhlc2UgYXJlIHVzZWZ1bCBmb3IgdGFibGVzIHRvIHNob3cgcm93 IG51bWJlcnMsIGJ1dCBjYW4gYWxzbyBiZSB1c2VkIGZvciBwYWdpbmF0aW9uIG9yIGNhbiBi ZSB0ZXN0ZWQgd2l0aCBzbWRfaWYgdG8gdGFrZSBhY3Rpb24gZnJvbSB3aXRoaW4geW91ciBm b3JtLiA8Y29kZT57c21kX3RoaXNyb3d9PC9jb2RlPiwgPGNvZGU+e3NtZF90aGlzaW5kZXh9 PC9jb2RlPiwgPGNvZGU+e3NtZF9jdXJzb3J9PC9jb2RlPiwgYW5kIDxjb2RlPntzbWRfY3Vy c29yaW5kZXh9PC9jb2RlPiBjb3VudCB1cCBvciBkb3duIGRlcGVuZGluZyBvbiB0aGUgPGNv ZGU+Y291bnQ8L2NvZGU+IGF0dHJpYnV0ZSAoPGNvZGU+e3NtZF9yb3dfc3RhcnR9PC9jb2Rl PiBhbmQgPGNvZGU+e3NtZF9yb3dfZW5kfTwvY29kZT4gYWxzbyBjaGFuZ2UgYWNjb3JkaW5n bHkpLjwvcD4KCgk8aDIgaWQ9InNtZF9xaWYiPjxjb2RlPiZsdDt0eHA6c21kX3F1ZXJ5X2lm X3ByZXYmZ3Q7IC8gJmx0O3R4cDpzbWRfcXVlcnlfaWZfbmV4dCZndDs8L2NvZGU+PC9oMj4K Cgk8cD5Vc2UgdGhlc2UgY29udGFpbmVyIHRhZ3MgdG8gZGV0ZXJtaW5lIGlmIHRoZXJlIGlz IGEgbmV4dCBvciBwcmV2aW91cyBwYWdlIGFuZCB0YWtlIGFjdGlvbiBpZiBzby4gQ2FuIG9u bHkgYmUgdXNlZCBpbnNpZGUgPGNvZGU+cGFnZWZvcm08L2NvZGU+LCB0aHVzIGFsbCA8YSBo cmVmPSIjcmVwbGFjZW1lbnRzIj5wYWdpbmcgcmVwbGFjZW1lbnQgdmFyaWFibGVzPC9hPiBh cmUgYXZhaWxhYmxlIGluc2lkZSB0aGVzZSB0YWdzLjwvcD4KCjxwcmUgY2xhc3M9ImJsb2Nr Ij48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX3F1ZXJ5X2lmX3ByZXYmZ3Q7UHJl dmlvdXMgcGFnZSZsdDsvdHhwOnNtZF9xdWVyeV9pZl9wcmV2Jmd0OwombHQ7dHhwOnNtZF9x dWVyeV9pZl9uZXh0Jmd0O05leHQgcGFnZSZsdDsvdHhwOnNtZF9xdWVyeV9pZl9uZXh0Jmd0 Owo8L2NvZGU+PC9wcmU+CgoJPHA+U2VlIDxhIGhyZWY9IiNlZzExIj5leGFtcGxlIDExPC9h PiBmb3IgbW9yZS48L3A+CgoJPGgyIGlkPSJmaWx0ZXJpbmciPkZpbHRlcmluZyBhbmQgaW5q ZWN0aW9uPC9oMj4KCgk8cD5BZnRlciBncmVhdCBkZWxpYmVyYXRpb24sIGFjY2VzcyB0byB0 aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gbGluZSBoYXMgYmVlbiBncmFudGVk IHNvIHlvdSBtYXkgZW1wbG95IHVzZXItZW50ZXJlZCBkYXRhIGluIHlvdXIgcXVlcmllcywg YWxsb3dpbmcgY29tcGxldGUgZmxleGliaWxpdHkgZm9yIHlvdXIgdXNlciBiYXNlLiBIb3dl dmVyLCBhcyBQZXRlciBQYXJrZXImIzgyMTc7cyBjb25zY2llbmNlIG1pZ2h0IHNheTo8L3A+ CgoJPGJsb2NrcXVvdGU+CgkJPHA+V2l0aCBncmVhdCBwb3dlciBjb21lcyBncmVhdCByZXNw b25zaWJpbGl0eTwvcD4KCTwvYmxvY2txdW90ZT4KCgk8cD5Ob3QgZXZlcnlib2R5IG91dCB0 aGVyZSBpcyB0cnVzdHdvcnRoeSBzbyBoZWVkIHRoaXMgd2FybmluZzogPHN0cm9uZz5Bc3N1 bWUgPHNwYW4gY2xhc3M9ImNhcHMiPkFMTDwvc3Bhbj4gdXNlciBpbnB1dCBpcyB0YWludGVk PC9zdHJvbmc+LiBDaGVjayBldmVyeXRoaW5nLiBJZiB5b3Ugd2FudCB0byBrbm93IG1vcmUg YWJvdXQgd2hhdCBwZW9wbGUgY2FuIGRvIHdpdGggYWNjZXNzIHRvIG9uZSBzaW1wbGUgcG9y dGlvbiBvZiB5b3VyIDxzcGFuIGNsYXNzPSJjYXBzIj5TUUw8L3NwYW4+IHF1ZXJ5LCBHb29n bGUgZm9yICYjODIxNjs8c3BhbiBjbGFzcz0iY2FwcyI+U1FMPC9zcGFuPiBpbmplY3Rpb24m IzgyMTc7LjwvcD4KCgk8cD5Gb3IgdGhvc2Ugc3RpbGwgcmVhZGluZywgdGhlIGdvb2QgbmV3 cyBpcyB0aGF0IHRoZSBwbHVnaW4gZG9lcyBldmVyeXRoaW5nIGl0IGNhbiB0byBwcmUtZmls dGVyIHN0dWZmIG9uIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBsaW5lIGJl Zm9yZSBpdCBnZXRzIHRvIHRoZSBxdWVyeS4gVGhpcyBzaG91bGQgbWFrZSB5b3VyIHVzZXIg aW5wdXQgc2FmZSBlbm91Z2gsIGJ1dCBmb3IgdGhlIHBhcmFub2lkIChvciBzZW5zaWJsZSkg dGhlcmUgYXJlIHR3byBhdHRyaWJ1dGVzIHlvdSBjYW4gdXNlIHRvIGNsYW1wIGRvd24gYWxs b3dhYmxlIHVzZXIgaW5wdXQuIElmIHlvdSBrbm93IGFueXRoaW5nIGFib3V0IDxhIGhyZWY9 Imh0dHA6Ly93d3cucmVndWxhci1leHByZXNzaW9ucy5pbmZvL3F1aWNrc3RhcnQuaHRtbCI+ cmVndWxhciBleHByZXNzaW9uczwvYT4gb3IgYXJlIGZhbWlsaWFyIHdpdGggdGhlIDxzcGFu IGNsYXNzPSJjYXBzIj5QSFA8L3NwYW4+IGZ1bmN0aW9uIDxhIGhyZWY9Imh0dHA6Ly91azIu cGhwLm5ldC9wcmVnX3JlcGxhY2UiPnByZWdfcmVwbGFjZSgpPC9hPiB0aGVuIHlvdSYjODIx NztsbCBiZSByaWdodCBhdCBob21lIGJlY2F1c2UsIHB1dCBzaW1wbHksIHlvdSBjYW4gb3B0 aW9uYWxseSBwYXNzIGV2ZXJ5IDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHZhcmlh YmxlIHRocm91Z2ggaXQgdG8gcmVtb3ZlIHN0dWZmIHlvdSBkb24mIzgyMTc7dCB3YW50Ljwv cD4KCgk8aDMgaWQ9InVybGZpbHRlciI+dXJsZmlsdGVyPC9oMz4KCgk8cD5UaGlzIHRha2Vz IGEgY29tbWEtc2VwYXJhdGVkIGxpc3QgKGF0IGxlYXN0IGJ5IGRlZmF1bHQ7IG92ZXJyaWRl IHRoZSBjb21tYSB3aXRoIHRoZSA8Y29kZT5kZWxpbTwvY29kZT4gYXR0cmlidXRlIGlmIHlv dSBuZWVkIHRvIHVzZSBjb21tYXMgaW4geW91ciBmaWx0ZXIgc3RyaW5ncykgb2YgY29tcGxl dGUgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm5zIHRoYXQgeW91IHdpc2ggdG8gc2VhcmNo IGZvciwgaW4gZXZlcnkgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdmFyaWFibGUu IEZvciBleGFtcGxlLCBpZiB5b3Ugd2FudGVkIHRvIGVuc3VyZSB0aGF0IHlvdXIgdXNlcnMg b25seSBlbnRlcmVkIGRpZ2l0cyB5b3UgY291bGQgc3BlY2lmeSB0aGlzOjwvcD4KCjxwcmUg Y2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPnVybGZpbHRlcj0mcXVvdDsvW15c ZF0rLyZxdW90Owo8L2NvZGU+PC9wcmU+CgoJPHA+QnJpZWZseSwgdGhlIHN0YXJ0aW5nIGFu ZCB0cmFpbGluZyA8Y29kZT4vPC9jb2RlPiBtYXJrcyBkZWxpbWl0IGEgcmVndWxhciBleHBy ZXNzaW9uICYjODIxMjsgdGhleSBtdXN0IGFsd2F5cyBiZSBwcmVzZW50LiBUaGUgc3F1YXJl IGJyYWNrZXRzIGRlbm90ZSBhIGdyb3VwIG9mIGNoYXJhY3RlcnMsIHRoZSBjaXJjdW1mbGV4 IG5lZ2F0ZXMgdGhlIGdyb3VwLCB0aGUgPGNvZGU+XGQ8L2NvZGU+IG1lYW5zICYjODIyMDth bnkgZGlnaXQmIzgyMjE7IGFuZCB0aGUgPGNvZGU+KzwvY29kZT4gc3BlY2lmaWVzIHRoYXQg eW91IHdhbnQgaXQgdG8gY2hlY2sgZm9yIG9uZSBvciBtb3JlIG9mIHRoZSBwcmVjZWRpbmcg dGhpbmdzLiBJbiBvdGhlciB3b3JkcywgbG9vayBmb3IgYW55dGhpbmcgaW4gdGhlIGlucHV0 IHRoYXQgaXMgPHN0cm9uZz5ub3Q8L3N0cm9uZz4gb25lIG9yIG1vcmUgZGlnaXRzLiBUaGF0 IHdvdWxkIG1hdGNoIGFueSBsZXR0ZXJzLCBxdW90ZXMsIHNwZWNpYWwgY2hhcmFjdGVycywg YW55dGhpbmcgYXQgYWxsIHRoYXQgd2FzbiYjODIxNzt0IGEgemVybyB0byBuaW5lLjwvcD4K Cgk8cD5Zb3UgY2FuIHNwZWNpZnkgbW9yZSB0aGFuIG9uZSBmaWx0ZXIgbGlrZSB0aGlzOjwv cD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPnVybGZpbHRlcj0m cXVvdDsvXGQvLCAvXHMvJnF1b3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGF0IHdvdWxkIGxv b2sgZm9yIGFueSBzaW5nbGUgZGlnaXQgYW5kIGFueSBzaW5nbGUgc3BhY2UgY2hhcmFjdGVy LiBUaGF0JiM4MjE3O3MgYSBzaW1wbGUgZXhhbXBsZSBhbmQgeW91IGNvdWxkIGRvIGl0IGFs bCBpbiBvbmUgcmVnZXgsIGJ1dCBzcGxpdHRpbmcgdGhlbSB1cCBjYW4gaGVscCB5b3UgZmls dGVyIHN0dWZmIGJldHRlciAoc2VlIDxhIGhyZWY9IiN1cmxyZXBsYWNlIj51cmxyZXBsYWNl PC9hPiBmb3IgYW4gZXhhbXBsZSkuPC9wPgoKCTxwPkJ5IGRlZmF1bHQsIGlmIHlvdSBqdXN0 IHNwZWNpZnkgPGNvZGU+dXJsZmlsdGVyPC9jb2RlPiB3aXRob3V0IDxjb2RlPnVybHJlcGxh Y2U8L2NvZGU+LCBhbnl0aGluZyB0aGF0IG1hdGNoZXMgeW91ciBmaWx0ZXIgcGF0dGVybnMg d2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIHVzZXIgaW5wdXQuPC9wPgoKCTxoMyBpZD0idXJs cmVwbGFjZSI+dXJscmVwbGFjZTwvaDM+CgoJPHA+VGhlIG90aGVyIGhhbGYgb2YgdGhlIGZp bHRlcmluZyBqaWdzYXcgYWxsb3dzIHlvdSB0byBub3QganVzdCByZW1vdmUgYW55dGhpbmcg dGhhdCBtYXRjaGVzLCBidXQgYWN0dWFsbHkgcmVwbGFjZSBpdCB3aXRoIHNvbWV0aGluZyBl bHNlLiBTcGVjaWZ5IGEgZml4ZWQgc3RyaW5nLCBhIGxpc3Qgb2YgZml4ZWQgc3RyaW5ncyBv ciBtb3JlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHBhdHRlcm5zIHRvIHJlcGxh Y2Ugd2hhdGV2ZXIgbWF0Y2hlcyB5b3VyIDxjb2RlPnVybGZpbHRlcjwvY29kZT4uIFVzaW5n IHRoZSBmaXJzdCBmaWx0ZXIgZXhhbXBsZSBmcm9tIGFib3ZlLCB5b3UgY291bGQgcmVwbGFj ZSBhbnl0aGluZyB0aGF0IGlzIG5vdCBhIGRpZ2l0IHdpdGggYSBoeXBoZW4gYnkgc3BlY2lm eWluZzo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj51cmxy ZXBsYWNlPSZxdW90Oy0mcXVvdDsKPC9jb2RlPjwvcHJlPgoKCTxwPlNvIGlmIHlvdSBhbGxv d2VkIGEgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdmFyaWFibGUgY2FsbGVkIDxj b2RlPmRpZ2l0czwvY29kZT4gYW5kIGEgc2l0ZSB2aXNpdG9yIGVudGVyZWQgPGNvZGU+P2Rp Z2l0cz1aYXBob2QgNCBUcmlsbGlhbjwvY29kZT4sIHlvdXIgPHNwYW4gY2xhc3M9ImNhcHMi PlVSTDwvc3Bhbj4gdmFyaWFibGUgd291bGQgYmVjb21lOiA8Y29kZT4tLS0tLS0tNC0tLS0t LS0tPC9jb2RlPi4gTm90IG11Y2ggdXNlLCBidXQgaGV5LCBpdCYjODIxNztzIGFuIGV4YW1w bGUhPC9wPgoKCTxwPkFzIHdpdGggPGNvZGU+dXJsZmlsdGVyPC9jb2RlPiB5b3UgY2FuIHNw ZWNpZnkgbW9yZSB0aGFuIG9uZSByZXBsYWNlbWVudCBhbmQgdGhleSB3aWxsIHBhaXIgdXAg d2l0aCB0aGVpciBjb3JyZXNwb25kaW5nIGZpbHRlci4gSW4gb3RoZXIgd29yZHMsIGlmIHlv dSB0YWtlIHRoZSBzZWNvbmQgZmlsdGVyIGFib3ZlICg8Y29kZT51cmxmaWx0ZXI9JnF1b3Q7 L1xkLywgL1xzLyZxdW90OzwvY29kZT4pIGFuZCB1c2VkIHRoaXM6PC9wPgoKPHByZSBjbGFz cz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+dXJscmVwbGFjZT0mcXVvdDssIC0mcXVv dDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoZW4gYW55IGRpZ2l0IGluIHlvdXIgdXNlciBpbnB1 dCB3b3VsZCBiZSByZW1vdmVkICh0aGVyZSBpcyBub3RoaW5nIGJlZm9yZSB0aGUgY29tbWEp IGFuZCBhbnkgc3BhY2UgY2hhcmFjdGVyIHdvdWxkIGJlIHJlcGxhY2VkIHdpdGggYSBoeXBo ZW4uPC9wPgoKCTxwPklmIGF0IGFueSB0aW1lIGEgZmllbGQgZ2l2ZXMgYW4gZW1wdHkgcmVz dWx0IChpLmUuIGl0IHRvdGFsbHkgZmFpbHMgYW55IDxjb2RlPnVybGZpbHRlcjwvY29kZT4g dGVzdHMgb3Igc2ltcGx5IHJldHVybnMgbm90aGluZyBiZWNhdXNlIGl0IGhhcyBub3QgYmVl biBzZXQpLCBhbnkgPGNvZGU+ZGVmYXVsdHM8L2NvZGU+IGFzc2lnbmVkIHRvIHRoYXQgdmFy aWFibGUgd2lsbCBiZSB1c2VkIGluc3RlYWQuIElmIHRoZXJlIGFyZSBubyBkZWZhdWx0cywg dGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlIGl0c2VsZiAobWludXMgaXRzIDxjb2RlPj88L2Nv ZGU+KSB3aWxsIGJlIHVzZWQuPC9wPgoKCTxwPldpdGggdGhlc2UgdHdvIGZpbHRlcnMgYXQg eW91ciBkaXNwb3NhbCBhbmQgdGhlIGFiaWxpdHkgdG8gc3BlY2lmeSBkZWZhdWx0IHZhbHVl cyBmb3IgdXNlciB2YXJpYWJsZXMsIHlvdSBjYW4gbWFrZSB5b3VyIHF1ZXJpZXMgbXVjaCBz YWZlciB0byB0aGUgb3V0c2lkZSB3b3JsZCBhbmQgc3RhcnQgdXNpbmcgPHNwYW4gY2xhc3M9 ImNhcHMiPkhUTUw8L3NwYW4+IGZvcm1zIHRvIGdhdGhlciBpbnB1dCBmcm9tIHVzZXJzIHRo YXQgY2FuIHRoZW4gYmUgcGx1Z2dlZCBpbnRvIHF1ZXJpZXMsIGZhaXJseSBzYWZlIGluIHRo ZSBrbm93bGVkZ2UgdGhhdCB5b3VyIGRhdGFiYXNlIGlzIG5vdCBnb2luZyB0byBpbXBsb2Rl LjwvcD4KCgk8cD5CdXQgcGxlYXNlIHJlbWVtYmVyOjwvcD4KCgk8YmxvY2txdW90ZT4KCQk8 cD5Bc3N1bWUgPHN0cm9uZz5hbGw8L3N0cm9uZz4gdXNlciBpbnB1dCBpcyB0YWludGVkOiBj aGVjayBldmVyeXRoaW5nLjwvcD4KCTwvYmxvY2txdW90ZT4KCgk8aDIgaWQ9ImV4YW1wbGVz Ij5FeGFtcGxlczwvaDI+CgoJPGgzIGlkPSJlZzEiPkV4YW1wbGUgMTogU2ltcGxlIGltYWdl IHNlbGVjdCBxdWVyeTwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJs b2NrIj4mbHQ7dHhwOnNtZF9xdWVyeSBjb2x1bW49JnF1b3Q7KiZxdW90OwogICAgIHRhYmxl PSZxdW90O3R4cF9pbWFnZSZxdW90OwogICAgIHdoZXJlPSZxdW90O2NhdGVnb3J5PSYjMzk7 bWFtbWFsJiMzOTsgT1IgY2F0ZWdvcnk9JiMzOTtiaXJkJiMzOTsmcXVvdDsKICAgICBmb3Jt PSZxdW90O2Rib3V0JnF1b3Q7IHdyYXB0YWc9JnF1b3Q7dWwmcXVvdDsgYnJlYWs9JnF1b3Q7 bGkmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPldpdGggZm9ybSA8Y29kZT5kYm91 dDwvY29kZT4gY29udGFpbmluZzo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xh c3M9ImJsb2NrIj4mbHQ7YSBocmVmPSZxdW90Oy9pbWFnZXMve2lkfXtleHR9JnF1b3Q7IC8m Z3Q7Jmx0O3R4cDp0aHVtYm5haWwgbmFtZT0mcXVvdDt7bmFtZX0mcXVvdDsgLyZndDsmbHQ7 L2EmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5XaWxsIHJlbmRlciBhbiB1bm9yZGVyZWQgbGlz dCBvZiB0aHVtYm5haWxzIHdpdGggbGlua3MgdG8gdGhlIGZ1bGxzaXplIGltYWdlIGlmIHRo ZSBjYXRlZ29yeSBpcyBlaXRoZXIgPGNvZGU+bWFtbWFsPC9jb2RlPiBvciA8Y29kZT5iaXJk PC9jb2RlPi48L3A+CgoJPGgzIGlkPSJlZzIiPkV4YW1wbGUgMjogbGluayBjYXRlZ29yeSBs aXN0IHRvIHBhcmVudDwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJs b2NrIj4mbHQ7dHhwOnNtZF9xdWVyeSBxdWVyeT0mcXVvdDtTRUxFQ1QgRElTVElOQ1QKICAg ICB0eGMubmFtZSBGUk9NIHR4cF9jYXRlZ29yeSBBUyB0eGMsIHRleHRwYXR0ZXJuIEFTIHR4 cAogICAgIFdIRVJFIHR5cGU9JiMzOTthcnRpY2xlJiMzOTsgQU5EIHBhcmVudD0mIzM5O2Fu aW1hbHMmIzM5OwogICAgIEFORCAodHhjLm5hbWUgPSB0eHAuY2F0ZWdvcnkxIE9SIHR4Yy5u YW1lID0gdHhwLmNhdGVnb3J5MikKICAgICBmb3JtPSZxdW90O2Rib3V0JnF1b3Q7IHdyYXB0 YWc9JnF1b3Q7dWwmcXVvdDsgYnJlYWs9JnF1b3Q7bGkmcXVvdDsgLyZndDsKPC9jb2RlPjwv cHJlPgoKCTxwPldpdGggZm9ybSA8Y29kZT5kYm91dDwvY29kZT4gY29udGFpbmluZzo8L3A+ Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOmNhdGVn b3J5IG5hbWU9JnF1b3Q7e25hbWV9JnF1b3Q7IGxpbms9JnF1b3Q7MSZxdW90OyB0aXRsZT0m cXVvdDsxJnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5XaWxsIHJlbmRlciBhIGxp c3Qgb2YgbGlua2FibGUgY2F0ZWdvcnkgbmFtZXMgdGhhdCBjb250YWluIGFydGljbGVzIHdp dGggY2F0ZWdvcmllcyB0aGF0IGhhdmUgdGhlIGdpdmVuIHBhcmVudC4gSWYgYSBjYXRlZ29y eSBpcyB1bnVzZWQgaXQgd2lsbCBub3QgYmUgbGlzdGVkLjwvcD4KCgk8aDMgaWQ9ImVnMyI+ RXhhbXBsZSAzOiBjaGlsZCBjYXRlZ29yeSBjb3VudHM8L2gzPgoKPHByZSBjbGFzcz0iYmxv Y2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfcXVlcnkgcXVlcnk9JnF1b3Q7 U0VMRUNUIERJU1RJTkNUCiAgICAgdHhjLm5hbWUsIENPVU5UKCopIEFTIGNvdW50IEZST00g dHhwX2NhdGVnb3J5IEFTIHR4YywKICAgICB0ZXh0cGF0dGVybiBBUyB0eHAKICAgICBXSEVS RSB0eXBlPSYjMzk7YXJ0aWNsZSYjMzk7IEFORCBwYXJlbnQ9JiMzOTs/Y3VzdG9tMyYjMzk7 CiAgICAgQU5EICh0eGMubmFtZSA9IHR4cC5jYXRlZ29yeTEgT1IgdHhjLm5hbWUgPSB0eHAu Y2F0ZWdvcnkyKQogICAgIEdST1VQIEJZIHR4Yy5uYW1lJnF1b3Q7CiAgICAgZm9ybT0mcXVv dDtkYm91dCZxdW90OyB3cmFwdGFnPSZxdW90O3VsJnF1b3Q7IGJyZWFrPSZxdW90O2xpJnF1 b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5XaXRoIGZvcm0gPGNvZGU+ZGJvdXQ8L2Nv ZGU+IGNvbnRhaW5pbmc6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJi bG9jayI+Jmx0O3R4cDpjYXRlZ29yeSBuYW1lPSZxdW90O3tuYW1lfSZxdW90OyBsaW5rPSZx dW90OzEmcXVvdDsgdGl0bGU9JnF1b3Q7MSZxdW90OyAvJmd0OyAoe2NvdW50fSkKPC9jb2Rl PjwvcHJlPgoKCTxwPldpbGwgcmVhZCB0aGUgcGFyZW50IGl0ZW0gZnJvbSB0aGUgPGNvZGU+ Y3VzdG9tMzwvY29kZT4gZmllbGQgYW5kIHJlbmRlciBhIHNpbWlsYXIgbGlzdCB0byBFeGFt cGxlIDIgYnV0IHdpdGggdGhlIGFydGljbGUgY291bnRzIGFkZGVkIGluIHBhcmVudGhlc2Vz IGFmdGVyd2FyZHMuPC9wPgoKCTxoMyBpZD0iZWc0Ij5FeGFtcGxlIDQ6IFRvcCAxMCBkb3du bG9hZHM8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0 O3R4cDpzbWRfcXVlcnkgY29sdW1uPSZxdW90OyomcXVvdDsgdGFibGU9JnF1b3Q7dHhwX2Zp bGUmcXVvdDsKICAgICB3aGVyZT0mcXVvdDsoY2F0ZWdvcnk9JiMzOTs/Y2F0ZWdvcnkxJiMz OTsgT1IgY2F0ZWdvcnk9JiMzOTs/Y2F0ZWdvcnkyJiMzOTspCiAgICAgQU5EIHN0YXR1cz00 IE9SREVSIEJZIGRvd25sb2FkcyBkZXNjIExJTUlUIDEwJnF1b3Q7CiAgICAgd3JhcHRhZz0m cXVvdDt0YWJsZSZxdW90OyBicmVhaz0mcXVvdDt0ciZxdW90OwogICAgIGxhYmVsPSZxdW90 O01vc3QgcG9wdWxhciBkb3dubG9hZHMmcXVvdDsgbGFiZWx0YWc9JnF1b3Q7aDMmcXVvdDsm Z3Q7CiAgJmx0O3RkJmd0OyZsdDt0eHA6ZmlsZV9kb3dubG9hZF9saW5rIGlkPSZxdW90O3tp ZH0mcXVvdDsmZ3Q7e2ZpbGVuYW1lfSZsdDsvdHhwOmZpbGVfZG93bmxvYWRfbGluayZndDsm bHQ7L3RkJmd0OwogICZsdDt0ZCZndDt7ZGVzY3JpcHRpb259Jmx0Oy90ZCZndDsKICAmbHQ7 dGQmZ3Q7ZG93bmxvYWRzOiB7ZG93bmxvYWRzfSZsdDsvdGQmZ3Q7CiZsdDt0eHA6ZWxzZSAv Jmd0OwogICZsdDtwJmd0O05vIHJlY2VudCBkb3dubG9hZHMsIHNvcnJ5Jmx0Oy9wJmd0Owom bHQ7L3R4cDpzbWRfcXVlcnkmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGlzIG9uZSB1c2Vz IHRoZSBwbHVnaW4gYXMgYSBjb250YWluZXIgdGFnIGluc3RlYWQgb2YgYSBmb3JtIGFuZCB0 YWJ1bGF0ZXMgdGhlIHRvcCAxMCBkb3dubG9hZHMgKHN0YXR1cz1saXZlKSB0aGF0IGhhdmUg YSBjYXRlZ29yeSBtYXRjaGluZyBlaXRoZXIgb2YgdGhlIGN1cnJlbnQgYXJ0aWNsZSYjODIx NztzIGNhdGVnb3JpZXMsIHdpdGggbW9zdCBwb3B1bGFyIGxpc3RlZCBmaXJzdC4gSWYgdGhl cmUgYXJlIG5vIGRvd25sb2FkcywgdGhlIDxjb2RlPiZsdDt0eHA6ZWxzZSAvJmd0OzwvY29k ZT4gcG9ydGlvbiBkaXNwbGF5cyBhIG1lc3NhZ2UuPC9wPgoKCTxoMyBpZD0iZWc1Ij5FeGFt cGxlIDU6IEFydGljbGUga2V5d29yZHMgcmVsYXRlZCB0byBsaW5rPC9oMz4KCgk8cD5WZXJ5 IGludGVyZXN0aW5nIHVzZSBjYXNlIGhlcmUuIFB1dCB0aGlzIGluIHRoZSBwbGFpbmxpbmtz IGZvcm06PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0 O3R4cDpsaW5rZGVzY3RpdGxlIC8mZ3Q7CiZsdDt0eHA6c21kX3F1ZXJ5IHF1ZXJ5PSZxdW90 O1NFTEVDVCBESVNUSU5DVAogICAgIHR4cC5pZCwgdHhwLnRpdGxlIEZST00gdGV4dHBhdHRl cm4gQVMgdHhwCiAgICAgV0hFUkUgKHR4cC5rZXl3b3JkcyBMSUtFICYjMzk7JSw/Y2F0ZWdv cnklLCYjMzk7CiAgICAgT1IgdHhwLmtleXdvcmRzIExJS0UgJiMzOTslP2NhdGVnb3J5JSwm IzM5OwogICAgIE9SIHR4cC5rZXl3b3JkcyBMSUtFICYjMzk7JSw/Y2F0ZWdvcnklJiMzOTsp CiAgICAgR1JPVVAgQlkgdHhwLnRpdGxlJnF1b3Q7CiAgICAgd3JhcHRhZz0mcXVvdDt1bCZx dW90OyBicmVhaz0mcXVvdDtsaSZxdW90OyZndDsKICAmbHQ7dHhwOnBlcm1saW5rIGlkPSZx dW90O3tpZH0mcXVvdDsmZ3Q7e3RpdGxlfSZsdDsvdHhwOnBlcm1saW5rJmd0OwombHQ7L3R4 cDpzbWRfcXVlcnkmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5XaGVuIHlvdSBleGVjdXRlIDxj b2RlPiZsdDt0eHA6bGlua2xpc3QgLyZndDs8L2NvZGU+IGZyb20gYSBwYWdlIHlvdSB3aWxs IGdldCBhIGxpc3Qgb2YgbGlua3MgYXMgdXN1YWwsIGJ1dCB1bmRlciBlYWNoIG9uZSB5b3Ug d2lsbCBzZWUgYSBoeXBlcmxpbmtlZCBsaXN0IG9mIGFydGljbGVzIHRoYXQgYXJlIHJlbGF0 ZWQgKGJ5IGtleXdvcmQpIHRvIHRoZSBjYXRlZ29yeSBvZiB0aGUgbGluay48L3A+CgoJPHA+ VGhlIHJlYXNvbiBpdCBpcyBjb21wYXJlZCB0aHJlZSB0aW1lcyBpcyBiZWNhdXNlIGFydGlj bGUga2V5d29yZHMgYXJlIHN0b3JlZCBsaWtlIHRoaXMgaW4gdGhlIGRhdGFiYXNlOjwvcD4K Cgk8cD48Y29kZT5nb3Zlcm5tZW50LGNvbnNwaXJhY3ksaWQsY2FyZCxkYXRhLGJpb21ldHJp YyxiYWQsaWRlYTwvY29kZT48L3A+CgoJPHA+SWYgZWFjaCBjYXRlZ29yeSB3b3JkIHdhcyBj b21wYXJlZCBvbmx5IG9uY2Ugd2l0aG91dCBjb21tYXMgKGkuZS4gPGNvZGU+dHhwLmtleXdv cmRzIExJS0UgJiMzOTslP2NhdGVnb3J5JSYjMzk7PC9jb2RlPikgdGhlbiBhIGxpbmsgd2l0 aCBjYXRlZ29yeSA8Y29kZT5waXJhY3k8L2NvZGU+IHdvdWxkIGNhdXNlIGFueSBhcnRpY2xl IGNvbnRhaW5pbmcga2V5d29yZCA8Y29kZT5jb25zcGlyYWN5PC9jb2RlPiB0byBiZSBpbmNs dWRlZC4gRXNzZW50aWFsbHksIGJ5IGNvbXBhcmluZyB0aGUgY2F0ZWdvcnkgZWl0aGVyIHN1 cnJvdW5kZWQgYnkgY29tbWFzLCB3aXRoIGEgY29tbWEgYWZ0ZXIgaXQsIG9yIHdpdGggYSBj b21tYSBiZWZvcmUgaXQsIHRoZSBzZWFyY2ggaXMgcmVzdHJpY3RlZCB0byBvbmx5IG1hdGNo IHdob2xlIHdvcmRzLjwvcD4KCgk8aDMgaWQ9ImVnNiI+RXhhbXBsZSA2OiBDb21wYXJpc29u IGluIHF1ZXJpZXM8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9j ayI+Jmx0O3R4cDpzbWRfcXVlcnkgcXVlcnk9JnF1b3Q7U0VMRUNUICoKICAgICBGUk9NIHR4 cF9maWxlIFdIRVJFIGRvd25sb2FkcyAmYW1wO2d0Oz0gNDImcXVvdDsmZ3Q7CiAgJmx0O3R4 cDpmaWxlX2Rvd25sb2FkX2xpbmsgaWQ9JnF1b3Q7e2lkfSZxdW90OyZndDsKICAgICB7Zmls ZW5hbWV9CiAgJmx0Oy90eHA6ZmlsZV9kb3dubG9hZF9saW5rJmd0OwombHQ7L3R4cDpzbWRf cXVlcnkmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5TaG93cyBsaW5rcyB0byBhbGwgZG93bmxv YWRzIHdoZXJlIHRoZSBkb3dubG9hZCBjb3VudCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwg dG8gNDIuIE5vdGUgdGhhdCB1bmRlciA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiA0 LjAuNiBhbmQgYmVsb3cgeW91IG11c3QgdXNlIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRN TDwvc3Bhbj4gZW50aXR5IG5hbWVzIGZvciA8Y29kZT4mYW1wO2d0OzwvY29kZT4gYW5kIDxj b2RlPiZhbXA7bHQ7PC9jb2RlPiBvciB0aGUgcGFyc2VyIGdldHMgY29uZnVzZWQuPC9wPgoK CTxoMyBpZD0iZWc3Ij5FeGFtcGxlIDc6IHVuZmlsdGVyZWQgPHNwYW4gY2xhc3M9ImNhcHMi PlVSTDwvc3Bhbj4gcGFyYW1zIChiYWQpPC9oMz4KCgk8cD4oYSBiYWQgcXVlcnkpPC9wPgoK PHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDp2YXJpYWJs ZSBuYW1lPSZxdW90O2N1dG9mZiZxdW90OwogICAgIHZhbHVlPSZxdW90OzQyJnF1b3Q7IC8m Z3Q7CiZsdDt0eHA6c21kX3F1ZXJ5IHF1ZXJ5PSZxdW90O1NFTEVDVCBUaXRsZQogICAgIEZS T00gdGV4dHBhdHRlcm4KICAgICBXSEVSRSBpZCAmbHQ7ICYjMzk7P3VzZXJjdXQmIzM5OyZx dW90OwogICAgIGRlZmF1bHRzPSZxdW90O3VzZXJjdXQ6ID9jdXRvZmYmcXVvdDsmZ3Q7CiAg ICZsdDt0eHA6cGVybWxpbmsmZ3Q7e1RpdGxlfSZsdDsvdHhwOnBlcm1saW5rJmd0OwombHQ7 L3R4cDpzbWRfcXVlcnkmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5TaG93cyBoeXBlcmxpbmtz IHRvIG9ubHkgdGhvc2UgYXJ0aWNsZXMgd2l0aCBhbiBJRCBiZWxvdyB0aGUgbnVtYmVyIGdp dmVuIGJ5IHRoZSB1c2VyIG9uIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBs aW5lLiBJZiB0aGUgdmFsdWUgaXMgbm90IHN1cHBsaWVkLCB0aGUgZGVmYXVsdCB2YWx1ZSBm cm9tIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiB2YXJpYWJsZSBpcyB1c2Vk IGluc3RlYWQgKDQyIGluIHRoaXMgY2FzZSkuPC9wPgoKCTxwPjxzdHJvbmc+PHNwYW4gY2xh c3M9ImNhcHMiPk5PVEU8L3NwYW4+PC9zdHJvbmc+OiB2YWxpZGF0aW9uIGlzIG5vdCBwZXJm b3JtZWQgYW5kIHlvdSBjYW5ub3QgZ3VhcmFudGVlIHRoYXQgdGhlIDxjb2RlPnVzZXJjdXQ8 L2NvZGU+IHZhcmlhYmxlIGlzIGdvaW5nIHRvIGJlIG51bWVyaWMuIFlvdSBzaG91bGQgbm90 IHVzZSB0aGlzIHF1ZXJ5IG9uIGEgcHJvZHVjdGlvbiBzaXRlIHVubGVzcyB5b3UgYWRkIGEg PGNvZGU+dXJsZmlsdGVyPC9jb2RlPiB0byByZW1vdmUgYW55IG5vbi1udW1lcmljIGNoYXJh Y3RlcnMgKHNlZSBuZXh0IGV4YW1wbGUgZm9yIGEgYmV0dGVyIHF1ZXJ5KS48L3A+CgoJPGgz IGlkPSJlZzgiPkV4YW1wbGUgODogZmlsdGVyZWQgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwv c3Bhbj4gcGFyYW1zIChiZXR0ZXIhKTwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUg Y2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9xdWVyeSBxdWVyeT0mcXVvdDtTRUxFQ1QgVGl0 bGUKICAgICBGUk9NIHRleHRwYXR0ZXJuCiAgICAgV0hFUkUgc3RhdHVzID0gJiMzOTs/dXNl cl9zdGF0dXMmIzM5OyZxdW90OwogICAgIHVybGZpbHRlcj0mcXVvdDsvW14xLTVdLyZxdW90 OwogICAgIGRlZmF1bHRzPSZxdW90O3VzZXJfc3RhdHVzOiA0JnF1b3Q7Jmd0OwogICAmbHQ7 dHhwOnBlcm1saW5rJmd0O3tUaXRsZX0mbHQ7L3R4cDpwZXJtbGluayZndDsKJmx0Oy90eHA6 c21kX3F1ZXJ5Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+UHVsbHMgYWxsIGFydGljbGVzIG91 dCBvZiB0aGUgZGF0YWJhc2UgdGhhdCBtYXRjaCB0aGUgZ2l2ZW4gc3RhdHVzLiBUaGlzIGlz IGEgbW9yZSByb2J1c3QgcXVlcnkgdGhhbiBFeGFtcGxlIDcgYmVjYXVzZSBpdCBjaGVja3Mg aWYgdGhlIDxjb2RlPnVzZXJfc3RhdHVzPC9jb2RlPiBmaWVsZCBpcyAxLCAyLCAzLCA0LCBv ciA1ICh0aGUgcmVnZXggc3BlY2lmaWVzIHRvIHJlbW92ZSBldmVyeXRoaW5nIGZyb20gdGhl IHVzZXJfc3RhdHVzIHZhcmlhYmxlIHRoYXQgaXMgbm90IGluIHRoZSByYW5nZSAxLTUpLiBJ ZiB0aGlzIGNvbmRpdGlvbiBpcyBub3QgbWV0ICYjODIxMjsgZS5nLiB0aGUgdXNlciBzcGVj aWZpZXMgPGNvZGU+dXNlcl9zdGF0dXM9NjwvY29kZT4gb3IgPGNvZGU+dXNlcl9zdGF0dXM9 JnF1b3Q7YWJjJnF1b3Q7PC9jb2RlPiAmIzgyMTI7IHRoZW4gdXNlcl9zdGF0dXMgd2lsbCBi ZSBzZXQgdG8gPGNvZGU+NDwvY29kZT4uIE5vdGUgdGhhdCB1c2luZyA8Y29kZT51c2VyX3N0 YXR1cz0mcXVvdDtaYXBob2QgNCBUcmlsbGlhbiZxdW90OzwvY29kZT4gb24gdGhlIDxzcGFu IGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGFkZHJlc3MgYmFyIHdpbGwgYWN0dWFsbHkgcGFz cyB0aGUgdGVzdCBiZWNhdXNlIGFsbCBjaGFyYWN0ZXJzIG90aGVyIHRoYW4gdGhlIG51bWJl ciAmIzgyMTY7NCYjODIxNzsgd2lsbCBiZSByZW1vdmVkLjwvcD4KCgk8cD5Zb3UgY291bGQg dXNlIGEgPGNvZGU+Jmx0O3R4cDp2YXJpYWJsZSAvJmd0OzwvY29kZT4gaWYgeW91IHdpc2gg YW5kIHNldCBhbGwgeW91ciBkZWZhdWx0cyBpbiBhIHNwZWNpYWwgZm9ybSwgcmVhZHkgdG8g dXNlIHRocm91Z2hvdXQgeW91ciBwYWdlLiBJbiB0aGF0IGNhc2UgJiM4MjEyOyBpZiB5b3Ug aGFkIGNyZWF0ZWQgYSB2YXJpYWJsZSBjYWxsZWQgPGNvZGU+ZGZsdF9zdGF0PC9jb2RlPiAm IzgyMTI7IHlvdSBtaWdodCBwcmVmZXIgdG8gdXNlIDxjb2RlPmRlZmF1bHRzPSZxdW90O3Vz ZXJfc3RhdHVzOiA/ZGZsdF9zdGF0JnF1b3Q7PC9jb2RlPi48L3A+CgoJPHA+UXVlcnktdGFz dGljIDotKTwvcD4KCgk8aDMgaWQ9ImVnOSI+RXhhbXBsZSA5OiBVc2luZyBwcmVwYXJzZSB3 aXRoIDxjb2RlPiZsdDt0eHA6eWllbGQgLyZndDs8L2NvZGU+PC9oMz4KCgk8cD5Tb21ldGlt ZXMgeW91IG1heSB3YW50IHRvIHJlLXVzZSBhIHF1ZXJ5IGluIGEgZmV3IHBsYWNlcyB0aHJv dWdob3V0IHlvdXIgc2l0ZSBhbmQgc2hvdyBkaWZmZXJlbnQgY29udGVudC4gRm9yIGV4YW1w bGUsIHRoZSBzYW1lIHF1ZXJ5IGNvdWxkIGJlIHVzZWQgZm9yIGxvZ2dlZC1pbiBhbmQgbm90 LWxvZ2dlZC1pbiB1c2VycyBidXQgeW91JiM4MjE3O2Qgc2VlIG1vcmUgZGV0YWlsIGlmIHlv dSB3ZXJlIGxvZ2dlZCBpbi4gTm9ybWFsbHkgeW91IHdvdWxkIG5lZWQgdG8gd3JpdGUgdGhl IHF1ZXJ5IG1vcmUgdGhhbiBvbmNlLCB3aGljaCBpcyBmYXIgZnJvbSBpZGVhbC4gVGhpcyB0 ZWNobmlxdWUgYWxsb3dzIHlvdSB0byB3cml0ZSB0aGUgcXVlcnkganVzdCBvbmNlIGFuZCBy ZXVzZSB0aGUgZm9ybS4gUHV0IHRoaXMgaW4gYSBmb3JtIGNhbGxlZCA8Y29kZT51c2VyX3Rh YmxlPC9jb2RlPjo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2Nr Ij4mbHQ7dHhwOnNtZF9xdWVyeSBxdWVyeT0mcXVvdDtTRUxFQ1QgKiBGUk9NIHR4cF91c2Vy cyZxdW90OwogICAgIHdyYXB0YWc9JnF1b3Q7dGFibGUmcXVvdDsgYnJlYWs9JnF1b3Q7dHIm cXVvdDsgcHJlcGFyc2U9JnF1b3Q7MSZxdW90OyZndDsKICAgJmx0O3R4cDp5aWVsZCAvJmd0 OwombHQ7L3R4cDpzbWRfcXVlcnkmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5Vc2luZyA8Y29k ZT4mbHQ7dHhwOm91dHB1dF9mb3JtJmd0OzwvY29kZT4gYXMgYSBjb250YWluZXIgKGluIDxz cGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IDQuMi4wIG9yIGhpZ2hlcikgeW91IGNhbiB0 aGVuIGNhbGwgdGhlIHF1ZXJ5IGxpa2UgdGhpcyB0byBzaG93IGJhc2ljIGluZm86PC9wPgoK PHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpvdXRwdXRf Zm9ybSBmb3JtPSZxdW90O3VzZXJfdGFibGUmcXVvdDsmZ3Q7CiZsdDt0ZCZndDt7bmFtZX0m bHQ7L3RkJmd0OwombHQ7dGQmZ3Q7e1JlYWxOYW1lfSZsdDsvdGQmZ3Q7CiZsdDsvdHhwOm91 dHB1dF9mb3JtJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+YW5kIGxpa2UgdGhpcyBmb3IgbW9y ZSBkZXRhaWxlZCBvdXRwdXQ6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNz PSJibG9jayI+Jmx0O3R4cDpvdXRwdXRfZm9ybSBmb3JtPSZxdW90O3VzZXJfdGFibGUmcXVv dDsmZ3Q7CiZsdDt0ZCZndDt7bmFtZX0mbHQ7L3RkJmd0OwombHQ7dGQmZ3Q7e1JlYWxOYW1l fSZsdDsvdGQmZ3Q7CiZsdDt0ZCZndDt7ZW1haWx9Jmx0Oy90ZCZndDsKJmx0O3RkJmd0O3ts YXN0X2FjY2Vzc30mbHQ7L3RkJmd0OwombHQ7L3R4cDpvdXRwdXRfZm9ybSZndDsKPC9jb2Rl PjwvcHJlPgoKCTxwPk5vdGUgdGhhdCB3aGVuIHVzaW5nIHNtZF9xdWVyeSBpbiB0aGlzIG1h bm5lciB5b3UgbXVzdCByZW1lbWJlciB0byB1c2UgPGNvZGU+cHJlcGFyc2U9JnF1b3Q7MSZx dW90OzwvY29kZT4gYmVjYXVzZSB5b3UgbmVlZCB0byBmZXRjaCB0aGUgY29udGVudHMgb2Yg dGhlIHNtZF9xdWVyeSBjb250YWluZXIgKHRoZSA8Y29kZT4mbHQ7dHhwOnlpZWxkIC8mZ3Q7 PC9jb2RlPiB0YWcgaW4gdGhpcyBjYXNlKSwgcGFyc2UgaXQgc28gaXQgZ2V0cyB0aGUgY29u dGVudHMgb2YgPGNvZGU+Jmx0O3R4cDpvdXRwdXRfZm9ybSZndDs8L2NvZGU+JiM4MjE3O3Mg Y29udGFpbmVyIGFuZCA8ZW0+dGhlbjwvZW0+IGFwcGxpZXMgdGhlIHJlcGxhY2VtZW50cy4g V2l0aG91dCB0aGUgPGNvZGU+cHJlcGFyc2U8L2NvZGU+LCB0aGUgcGx1Z2luIHRyaWVzIHRv IGFwcGx5IHRoZSByZXBsYWNlbWVudHMgZGlyZWN0bHkgdG8gdGhlIHNtZF9xdWVyeSBjb250 YWluZXIsIHdoaWNoIGRvZXMgbm90IGFjdHVhbGx5IGNvbnRhaW4gYW55IDxjb2RlPnsuLi59 PC9jb2RlPiB0YWdzLjwvcD4KCgk8aDMgaWQ9ImVnMTAiPkV4YW1wbGUgMTA6IHBhZ2luYXRp b248L2gzPgoKCTxwPkl0ZXJhdGUgb3ZlciBzb21lIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8 L3NwYW4+IHVzZXIgaW5mb3JtYXRpb24sIDUgcGVvcGxlIGF0IGEgdGltZTo8L3A+Cgo8cHJl IGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9xdWVyeSBx dWVyeT0mcXVvdDtTRUxFQ1QgKiBmcm9tIHR4cF91c2VycyZxdW90OwogICAgIGxpbWl0PSZx dW90OzUmcXVvdDsgd3JhcHRhZz0mcXVvdDt1bCZxdW90OyBicmVhaz0mcXVvdDtsaSZxdW90 OwogICAgIHBhZ2Vmb3JtPSZxdW90O3BhZ2VfaW5mbyZxdW90OyZndDsKICAge1JlYWxOYW1l fSAoe3ByaXZzfSkKJmx0Oy90eHA6c21kX3F1ZXJ5Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+ SW4gPGNvZGU+cGFnZV9pbmZvPC9jb2RlPjo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNv ZGUgY2xhc3M9ImJsb2NrIj5QYWdlIHtzbWRfdGhpc3BhZ2V9IG9mIHtzbWRfcGFnZXN9IHwK U2hvd2luZyByZWNvcmRzIHtzbWRfcm93X3N0YXJ0fSB0byB7c21kX3Jvd19lbmR9Cm9mIHtz bWRfYWxscm93c30gfAombHQ7dHhwOm9sZGVyJmd0O05leHQge3NtZF9yb3dzX25leHR9Jmx0 Oy90eHA6b2xkZXImZ3Q7IHwKJmx0O3R4cDpuZXdlciZndDtQcmV2aW91cyB7c21kX3Jvd3Nf cHJldn0mbHQ7L3R4cDpuZXdlciZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlVuZGVybmVhdGgg eW91ciByZXN1bHQgc2V0IHlvdSB3b3VsZCB0aGVuIHNlZSB0aGUgaW5mb3JtYXRpb24gcmVn YXJkaW5nIHdoaWNoIHBhZ2UgYW5kIHJvd3MgeW91ciB2aXNpdG9ycyB3ZXJlIGN1cnJlbnRs eSB2aWV3aW5nLiBZb3Ugd291bGQgYWxzbyBzZWUgbmV4dC9wcmV2IGxpbmtzIHRvIHRoZSBy ZXN0IG9mIHRoZSByZXN1bHRzLjwvcD4KCgk8aDMgaWQ9ImVnMTEiPkV4YW1wbGUgMTE6IGN1 c3RvbSBwYWdpbmF0aW9uPC9oMz4KCgk8cD5UaGVyZSBpcyBhIHByb2JsZW0gd2l0aCA8YSBo cmVmPSIjZWcxMCI+ZXhhbXBsZSAxMDwvYT4gOyBpZiB5b3UgdXNlIHR4cDpvbGRlciBhbmQg dHhwOm5ld2VyIHdoZW4geW91IGFyZSBzaG93aW5nIGEgc3RhbmRhcmQgYXJ0aWNsZSBsaXN0 OyB0aGUgcGFnaW5nIHRhZ3Mgd2lsbCBzdGVwIHRocm91Z2ggPGVtPmJvdGg8L2VtPiB5b3Vy IHJlc3VsdCBzZXQgYW5kIHlvdXIgYXJ0aWNsZXMuIFRvIGJyZWFrIHRoZSBhc3NvY2lhdGlv biBiZXR3ZWVuIHRoZW0geW91IG5lZWQgdG8gYWx0ZXIgdGhlIHZhcmlhYmxlIHRoYXQgPHNw YW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gdXNlcyB0byBjb250cm9sIHBhZ2luZy4gSXQg aXMgY2FsbGVkIDxjb2RlPnBnPC9jb2RlPmFuZCB5b3UmIzgyMTc7bGwgbm90aWNlIGl0IGlu IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiAoPGNvZGU+P3BnPTI8L2NvZGU+ IGZvciBleGFtcGxlKSBhcyB5b3Ugc3RlcCB0aHJvdWdoIGFydGljbGUgbGlzdHMuPC9wPgoK CTxwPlVzaW5nIHRoZSA8Y29kZT5wYWdldmFyPC9jb2RlPiBhdHRyaWJ1dGUgeW91IGNhbiB0 ZWxsIHNtZF9xdWVyeSB0byB3YXRjaCBmb3IgeW91ciBvd24gdmFyaWFibGUgaW5zdGVhZCBv ZiB0aGUgZGVmYXVsdCA8Y29kZT5wZzwvY29kZT4gYW5kIHRodXMgYnVpbGQgeW91ciBvd24g bmV4dC9wcmV2IGxpbmtzIHRoYXQgb25seSBjb250cm9sIHNtZF9xdWVyeS48L3A+Cgo8cHJl IGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9xdWVyeSBx dWVyeT0mcXVvdDtTRUxFQ1QgKiBmcm9tIHR4cF91c2VycyZxdW90OwogICAgIGxpbWl0PSZx dW90OzUmcXVvdDsgd3JhcHRhZz0mcXVvdDt1bCZxdW90OyBicmVhaz0mcXVvdDtsaSZxdW90 OwogICAgIHBhZ2Vmb3JtPSZxdW90O3BhZ2VfaW5mbyZxdW90OyBwYWdldmFyPSZxdW90O3Nt ZF9xcGcmcXVvdDsmZ3Q7CiAgIHtSZWFsTmFtZX0gKHtwcml2c30pCiZsdDsvdHhwOnNtZF9x dWVyeSZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPkluIDxjb2RlPnBhZ2VfaW5mbzwvY29kZT46 PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+UGFnZSB7c21k X3RoaXNwYWdlfSBvZiB7c21kX3BhZ2VzfSB8CiAgIFNob3dpbmcgcmVjb3JkcyB7c21kX3Jv d19zdGFydH0KICAgdG8ge3NtZF9yb3dfZW5kfSBvZiB7c21kX2FsbHJvd3N9IHwKJmx0O3R4 cDpzbWRfcXVlcnlfaWZfcHJldiZndDsKICAmbHQ7YSBocmVmPSZxdW90OyZsdDt0eHA6cGVy bWxpbmsgLyZndDs/c21kX3FwZz17c21kX3ByZXZwYWdlfSZxdW90OyZndDsKICAgICBQcmV2 aW91cyB7c21kX3Jvd3NfcHJldn0mbHQ7L2EmZ3Q7CiZsdDsvdHhwOnNtZF9xdWVyeV9pZl9w cmV2Jmd0OwombHQ7dHhwOnNtZF9xdWVyeV9pZl9uZXh0Jmd0OwogICZsdDthIGhyZWY9JnF1 b3Q7Jmx0O3R4cDpwZXJtbGluayAvJmd0Oz9zbWRfcXBnPXtzbWRfbmV4dHBhZ2V9JnF1b3Q7 Jmd0OwogICAgIE5leHQge3NtZF9yb3dzX25leHR9Jmx0Oy9hJmd0OwombHQ7L3R4cDpzbWRf cXVlcnlfaWZfbmV4dCZndDsKPC9jb2RlPjwvcHJlPgoKCTxoMyBpZD0iZWcxMiI+RXhhbXBs ZSAxMjogdXNpbmcgPGNvZGU+U01EX1FVRVJZX1VOSVFVRV9JRDwvY29kZT48L2gzPgoKCTxw PklmIHlvdSB3aXNoIHRvIHVzZSBtb3JlIHRoYW4gb25lIHNtZF9xdWVyeSBvbiBhIHNpbmds ZSBwYWdlIGJ1dCBzaGFyZSBhIHBhZ2Vmb3JtIGJldHdlZW4gdGhlbSB5b3UgY2FuIHVzZSA8 c3BhbiBjbGFzcz0iY2FwcyI+U01EPC9zcGFuPl9RVUVSWV9VTklRVUVfSUQgYXMgdGhlIHBh Z2luZyB2YXJpYWJsZTo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJs b2NrIj4mbHQ7dHhwOnNtZF9xdWVyeSBxdWVyeT0mcXVvdDtTRUxFQ1QgKiBmcm9tIHR4cF91 c2VycyZxdW90OwogICAgIGxpbWl0PSZxdW90OzUmcXVvdDsgd3JhcHRhZz0mcXVvdDt1bCZx dW90OyBicmVhaz0mcXVvdDtsaSZxdW90OwogICAgIHBhZ2Vmb3JtPSZxdW90O3BhZ2VfaW5m byZxdW90OwogICAgIHBhZ2V2YXI9JnF1b3Q7U01EX1FVRVJZX1VOSVFVRV9JRCZxdW90OyZn dDsKICAge1JlYWxOYW1lfSAoe3ByaXZzfSkKJmx0Oy90eHA6c21kX3F1ZXJ5Jmd0Owo8L2Nv ZGU+PC9wcmU+CgoJPHA+SW4gPGNvZGU+cGFnZV9pbmZvPC9jb2RlPjo8L3A+Cgo8cHJlIGNs YXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj5QYWdlIHtzbWRfdGhpc3BhZ2V9IG9m IHtzbWRfcGFnZXN9IHwKICAgU2hvd2luZyByZWNvcmRzIHtzbWRfcm93X3N0YXJ0fQogICB0 byB7c21kX3Jvd19lbmR9IG9mIHtzbWRfYWxscm93c30gfAombHQ7dHhwOnNtZF9xdWVyeV9p Zl9wcmV2Jmd0OwogICZsdDthIGhyZWY9JnF1b3Q7Jmx0O3R4cDpwZXJtbGluayAvJmd0Oz97 c21kX3F1ZXJ5X3VuaXF1ZV9pZH09e3NtZF9wcmV2cGFnZX0mcXVvdDsmZ3Q7CiAgICAgUHJl dmlvdXMge3NtZF9yb3dzX3ByZXZ9Jmx0Oy9hJmd0OwombHQ7L3R4cDpzbWRfcXVlcnlfaWZf cHJldiZndDsKJmx0O3R4cDpzbWRfcXVlcnlfaWZfbmV4dCZndDsKICAmbHQ7YSBocmVmPSZx dW90OyZsdDt0eHA6cGVybWxpbmsgLyZndDs/e3NtZF9xdWVyeV91bmlxdWVfaWR9PXtzbWRf bmV4dHBhZ2V9JnF1b3Q7Jmd0OwogICAgIE5leHQge3NtZF9yb3dzX25leHR9Jmx0Oy9hJmd0 OwombHQ7L3R4cDpzbWRfcXVlcnlfaWZfbmV4dCZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPk5v dGUgdGhpcyBpcyBqdXN0IGEgc2ltcGxlIGV4YW1wbGU6IHlvdSB3aWxsIGhhdmUgdG8gYmUg bW9yZSBjbGV2ZXIgdGhhbiB0aGF0IGlmIHlvdSBhcmUgcGFnaW5nIGluZGVwZW5kZW50IHNl dHMgb2Ygcm93cyBiZWNhdXNlIHlvdSB3aWxsIG5lZWQgdG8gaW5jb3Jwb3JhdGUgdGhlIHBh Z2luZyB2YXJpYWJsZSBmcm9tIGJvdGggc21kX3F1ZXJ5IHRhZ3MgaW4geW91ciBwYWdlZm9y bS48L3A+CgoJPGgyIGNsYXNzPSJjaGFuZ2Vsb2ciPkNoYW5nZWxvZzwvaDI+CgoJPHVsPgoJ CTxsaT4yMiBNYXkgMDggfCAwLjEgfCBJbml0aWFsIHJlbGVhc2U8L2xpPgoJCTxsaT4yMyBN YXkgMDggfCAwLjExIHwgQWxsb3dlZCBtYXRocyBpbiBxdWVyaWVzICh1c2UgaHRtbCBlbnRp dGllcyBpbiBUWFA0LjAuNikgYW5kIGZpeGVkIDxzcGFuIGNsYXNzPSJjYXBzIj5XSEVSRTwv c3Bhbj4gY2xhdXNlIHRvIGRlZmF1bHQgdG8gMT0xIGlmIG5vbmUgc3VwcGxpZWQgKGJvdGgg dGhhbmtzIGptKSA7IGFkZGVkIG1vcmUgZGV0YWlsZWQgZmlsZSBhbmQgbGluayBzdXBwb3J0 PC9saT4KCQk8bGk+MTQgSnVsIDA4IHwgMC4xMiB8IEFkZGVkIDxjb2RlPnR4cDplbHNlPC9j b2RlPiBzdXBwb3J0IGluIGNvbnRhaW5lciAodGhhbmtzIGpha29iKSA7IGFkZGVkIDxjb2Rl PnNpbGVudDwvY29kZT4gYW5kIDxjb2RlPmNvdW50PC9jb2RlPiBhdHRyaWJ1dGVzLCBhbmQg dGhlIHJlcGxhY2VtZW50IHRhZ3MgPGNvZGU+e3NtZF9yb3dzfSB7c21kX3RoaXNyb3d9IHtz bWRfdGhpc2luZGV4fTwvY29kZT48L2xpPgoJCTxsaT4yMyBOb3YgMDggfCAwLjIgfCBBZGRl ZCA8Y29kZT4mbHQ7dHhwOnZhcmlhYmxlIC8mZ3Q7PC9jb2RlPiBzdXBwb3J0IDsgZW5hYmxl ZCA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2YXJpYWJsZSBzdXBwb3J0IDsgYWRk ZWQgPGNvZGU+dXJsZmlsdGVyPC9jb2RlPiwgPGNvZGU+dXJscmVwbGFjZTwvY29kZT4sIDxj b2RlPmRlbGltPC9jb2RlPiwgPGNvZGU+cGFyYW1kZWxpbTwvY29kZT4gYW5kIDxjb2RlPmRl ZmF1bHRzPC9jb2RlPiBhdHRyaWJ1dGVzPC9saT4KCQk8bGk+MTcgTWFyIDA5IHwgMC4yMSB8 IEFkZGVkIDxjb2RlPiRfU0VSVkVSPC9jb2RlPiB2YXIgc3VwcG9ydDwvbGk+CgkJPGxpPjE2 IE9jdCAwOSB8IDAuMjIgfCBBZGRlZCA8Y29kZT5lc2NhcGU8L2NvZGU+IGF0dHJpYnV0ZSAo dGhhbmtzIGpha29iKSA7IGFkZGVkIDxjb2RlPnByZXBhcnNlPC9jb2RlPiBhdHRyaWJ1dGU8 L2xpPgoJCTxsaT4wMiBEZWMgMDkgfCAwLjMgfCBBZGRlZCB1bmljb2RlIHN1cHBvcnQgYW5k IDxjb2RlPnN0cmljdGZpZWxkczwvY29kZT4gdG8gZml4IGEgZmV3IGJ1Z3MgKHRoYW5rcyBz cGVla2UpIDsgYWRkZWQgZGlyZWN0IHBhZ2luYXRpb24gc3VwcG9ydDwvbGk+CgkJPGxpPjA1 IERlYyAwOSB8IDAuNCB8IEFkZGVkIDxjb2RlPnBhZ2V2YXI8L2NvZGU+LCA8Y29kZT57c21k X3ByZXZwYWdlfTwvY29kZT4sIDxjb2RlPntzbWRfbmV4dHBhZ2V9PC9jb2RlPiwgPGNvZGU+ e3NtZF9yb3dzX3ByZXZ9PC9jb2RlPiBhbmQgPGNvZGU+e3NtZF9yb3dzX25leHR9PC9jb2Rl PiwgPGNvZGU+Jmx0O3R4cDpzbWRfcXVlcnlfaWZfcHJldiZndDs8L2NvZGU+IGFuZCA8Y29k ZT4mbHQ7dHhwOnNtZF9xdWVyeV9pZl9uZXh0Jmd0OzwvY29kZT4gOyByZW1vdmVkIDxjb2Rl PnBnb25seTwvY29kZT4gYXMgcGFnaW5nIGNhbiBub3cgPGVtPm9ubHk8L2VtPiBiZSBwZXJm b3JtZWQgaW4gdGhlIDxjb2RlPnBhZ2Vmb3JtPC9jb2RlPjwvbGk+CgkJPGxpPjE3IEphbiAx MCB8IDAuNDEgfCBBZGRlZCA8Y29kZT5oYXNoc2l6ZTwvY29kZT4sIDxjb2RlPm1vZGU8L2Nv ZGU+IGFuZCA8Y29kZT57c21kX3F1ZXJ5X3VuaXF1ZV9pZH08L2NvZGU+PC9saT4KCTwvdWw+ Cgo8L2Rpdj4KPCEtLSAqKiogQkVHSU4gUExVR0lOIENTUyAqKiogLS0+CjxzdHlsZSB0eXBl PSJ0ZXh0L2NzcyI+CiNzbWRfaGVscCB7IGxpbmUtaGVpZ2h0OjEuNSA7fQojc21kX2hlbHAg Y29kZSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZvbnQ6IDEwNSUvMTMwJSAiQ291cmllciBOZXci LCBjb3VyaWVyLCBtb25vc3BhY2U7IGJhY2tncm91bmQtY29sb3I6ICNGRkZGQ0M7fQojc21k X2hlbHAgY29kZS5ibG9jayB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYm9yZGVyOjFweCBkb3R0 ZWQgIzk5OTsgYmFja2dyb3VuZC1jb2xvcjogI2YwZTY4YzsgZGlzcGxheTpibG9jazsgbWFy Z2luOjEwcHggMTBweCAyMHB4OyBwYWRkaW5nOjEwcHg7IH0KI3NtZF9oZWxwIGE6bGluaywg I3NtZF9oZWxwIGE6dmlzaXRlZCB7IGNvbG9yOiAjMDBjOyB0ZXh0LWRlY29yYXRpb246IG5v bmU7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibHVlOyBwYWRkaW5nLWJvdHRvbToxcHg7 fQojc21kX2hlbHAgYTpob3ZlciwgI3NtZF9oZWxwIGE6YWN0aXZlIHsgY29sb3I6IGJsdWU7 IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIGJsdWU7 IHBhZGRpbmctYm90dG9tOjFweDt9CiNzbWRfaGVscCBoMSB7IGNvbG9yOiAjMzY5OyBmb250 OiAyMHB4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IG1hcmdpbjogMDsgdGV4dC1hbGlnbjogY2Vu dGVyOyB9CiNzbWRfaGVscCBoMiB7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjazsg cGFkZGluZzoxMHB4IDAgMDsgY29sb3I6ICMzNjk7IGZvbnQ6IDE3cHggR2VvcmdpYSwgc2Fu cy1zZXJpZjsgfQojc21kX2hlbHAgaDMgeyBjb2xvcjogIzA3OTsgZm9udDogYm9sZCAxMnB4 IEFyaWFsLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJnaW46IDEwcHgg MCAwO3RleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxp bmU7fQojc21kX2hlbHAgaDQgeyBmb250OiBib2xkIDExcHggQXJpYWwsIHNhbnMtc2VyaWY7 IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDAgO3RleHQtdHJhbnNmb3Jt OiB1cHBlcmNhc2U7IH0KI3NtZF9oZWxwIC5hdG5tIHsgZm9udC13ZWlnaHQ6Ym9sZDsgY29s b3I6IzMzZDsgfQojc21kX2hlbHAgLm1hbmQgeyBiYWNrZ3JvdW5kOiNlZWU7IGJvcmRlcjox cHggZG90dGVkICM5OTk7IH0KI3NtZF9oZWxwIHRhYmxlIHt3aWR0aDo5MCU7IHRleHQtYWxp Z246Y2VudGVyOyBwYWRkaW5nLWJvdHRvbToxZW07fQojc21kX2hlbHAgdGQsICNzbWRfaGVs cCB0aCB7Ym9yZGVyOjFweCBzb2xpZCAjOTk5OyBwYWRkaW5nOi41ZW0gMDt9CiNzbWRfaGVs cCB1bCB7IGxpc3Qtc3R5bGUtdHlwZTpzcXVhcmU7IH0KI3NtZF9oZWxwIC5yZXF1aXJlZCB7 Y29sb3I6cmVkO30KI3NtZF9oZWxwIGxpIHsgbWFyZ2luOjVweCAyMHB4IDVweCAzMHB4OyB9 CiNzbWRfaGVscCAuYnJlYWsgeyBtYXJnaW4tdG9wOjVweDsgfQo8L3N0eWxlPgo8IS0tICoq KiBFTkQgUExVR0lOIENTUyAqKiogLS0+CiI7czo0OiJjb2RlIjtzOjEwODAwOiJmdW5jdGlv biBzbWRfcXVlcnkoJGF0dHMsICR0aGluZz0nJykgew0KCWdsb2JhbCAkdGhpc3BhZ2UsICRw cmV0ZXh0LCAkc21kX3F1ZXJ5X3BnaW5mbzsNCg0KCWV4dHJhY3QobEF0dHMoYXJyYXkoDQoJ CSdjb2x1bW4nID0+ICcnLA0KCQkndGFibGUnID0+ICcnLA0KCQknd2hlcmUnID0+ICcnLA0K CQkncXVlcnknID0+ICcnLA0KCQknZm9ybScgPT4gJycsDQoJCSdwYWdlZm9ybScgPT4gJycs DQoJCSdwYWdldmFyJyA9PiAncGcnLA0KCQkncGFnZXBvcycgPT4gJ2JlbG93JywNCgkJJ2Nv bHNmb3JtJyA9PiAnJywNCgkJJ2VzY2FwZScgPT4gJycsDQoJCSdzdHJpY3RmaWVsZHMnID0+ ICcwJywNCgkJJ3ByZXBhcnNlJyA9PiAnMCcsDQoJCSd1cmxmaWx0ZXInID0+ICcnLA0KCQkn dXJscmVwbGFjZScgPT4gJycsDQoJCSdkZWZhdWx0cycgPT4gJycsDQoJCSdkZWxpbScgPT4g JywnLA0KCQkncGFyYW1kZWxpbScgPT4gJzonLA0KCQknc2lsZW50JyA9PiAnMCcsDQoJCSdt b2RlJyA9PiAnYXV0bycsIC8vIGF1dG8gY2hvb3NlcyBvbmUgb2YgaW5wdXQgKElOU0VSVC9V UERBVEUpIG9yIG91dHB1dCAoUVVFUlkpDQoJCSdjb3VudCcgPT4gJ3VwJywNCgkJJ2xpbWl0 JyA9PiAwLA0KCQknb2Zmc2V0JyA9PiAwLA0KCQknaGFzaHNpemUnID0+ICc2OjUnLA0KCQkn YnJlYWsnID0+ICcnLA0KCQknd3JhcHRhZycgPT4gJycsDQoJCSdsYWJlbCcgPT4gJycsDQoJ CSdsYWJlbHRhZycgPT4gJycsDQoJCSdjbGFzcycgPT4gJycsDQoJCSdkZWJ1ZycgPT4gJzAn LA0KCSksJGF0dHMpKTsNCg0KCS8vIEdyYWIgdGhlIGZvcm0gb3IgZW1iZWRkZWQgJHRoaW5n DQoJJHRoaW5nID0gKCR0aGluZykgPyAkdGhpbmcgOiAoKCRmb3JtKSA/IGZldGNoX2Zvcm0o JGZvcm0pIDogJycpOw0KCSRjb2xzZm9ybSA9IChlbXB0eSgkY29sc2Zvcm0pKSA/ICcnIDog ZmV0Y2hfZm9ybSgkY29sc2Zvcm0pOw0KCSRwYWdlYml0ID0gYXJyYXkoKTsNCglpZiAoJHBh Z2Vmb3JtKSB7DQoJCSRwYWdlUG9zQWxsb3dlZCA9IGFycmF5KCJiZWxvdyIsICJhYm92ZSIp Ow0KCQkkcGFnaW5nID0gMTsNCgkJJHBhZ2Vmb3JtID0gZmV0Y2hfZm9ybSgkcGFnZWZvcm0p Ow0KCQkkcGFnZXBvcyA9IHN0cl9yZXBsYWNlKCdzbWRfJywgJycsICRwYWdlcG9zKTsNCgkJ JHBhZ2Vwb3MgPSBkb19saXN0KCRwYWdlcG9zLCAkZGVsaW0pOw0KCQlmb3JlYWNoICgkcGFn ZXBvcyBhcyAkcGFnZWl0ZW0pIHsNCgkJCSRwYWdlYml0W10gPSAoaW5fYXJyYXkoJHBhZ2Vp dGVtLCAkcGFnZVBvc0FsbG93ZWQpKSA/ICRwYWdlaXRlbSA6ICRwYWdlUG9zQWxsb3dlZFsw XTsNCgkJfQ0KCX0NCg0KCS8vIE1ha2UgYSB1bmlxdWUgaGFzaCB2YWx1ZSBmb3IgdGhpcyBp bnN0YW5jZSBzbyB0aGUgcXVlcmllcyBjYW4gYmUgcGFnZWQgaW5kZXBlbmRlbnRseQ0KCSR1 bmlxID0gJyc7DQoJJG1kNSA9IG1kNSgkY29sdW1uLiR0YWJsZS4kd2hlcmUuJHF1ZXJ5LiRk ZWZhdWx0cyk7DQoJbGlzdCgkaGFzaExlbiwgJGhhc2hTa2lwKSA9IGV4cGxvZGUoJzonLCAk aGFzaHNpemUpOw0KCWZvciAoJGlkeCA9IDAsICRjbnQgPSAwOyAkY250IDwgJGhhc2hMZW47 ICRjbnQrKywgJGlkeCA9ICgoJGlkeCskaGFzaFNraXApICUgc3RybGVuKCRtZDUpKSkgew0K CQkkdW5pcSAuPSAkbWQ1WyRpZHhdOw0KCX0NCg0KCSRwYWdldmFyID0gKCRwYWdldmFyID09 ICdTTURfUVVFUllfVU5JUVVFX0lEJykgPyAkdW5pcSA6ICRwYWdldmFyOw0KCSR1cmxmaWx0 ZXIgPSAoIWVtcHR5KCR1cmxmaWx0ZXIpKSA/IGRvX2xpc3QoJHVybGZpbHRlciwgJGRlbGlt KSA6ICcnOw0KCSR1cmxyZXBsYWNlID0gKCFlbXB0eSgkdXJscmVwbGFjZSkpID8gZG9fbGlz dCgkdXJscmVwbGFjZSwgJGRlbGltKSA6ICcnOw0KCWlmICgkZGVidWcgPiAwKSB7DQoJCWVj aG8gIisrIFVSTCBGSUxURVJTICsrIjsNCgkJZG1wKCR1cmxmaWx0ZXIpOw0KCQlkbXAoJHVy bHJlcGxhY2UpOw0KCX0NCg0KCS8vIFByb2Nlc3MgYW55IGRlZmF1bHRzDQoJJHNwYyA9ICgk c3RyaWN0ZmllbGRzKSA/IDAgOiAxOw0KCSRkZWZhdWx0cyA9IGRvX2xpc3QoJGRlZmF1bHRz LCAkZGVsaW0pOw0KCSRkZmx0cyA9IGFycmF5KCk7DQoJZm9yZWFjaCAoJGRlZmF1bHRzIGFz ICRpdGVtKSB7DQoJCSRpdGVtID0gZG9fbGlzdCgkaXRlbSwgJHBhcmFtZGVsaW0pOw0KCQlp ZiAoJGl0ZW1bMF0gPT0gJycpIGNvbnRpbnVlOw0KCQlpZiAoY291bnQoJGl0ZW0pID09IDIp IHsNCgkJCSRkZmx0c1skaXRlbVswXV0gPSBzbWRfcXVlcnlfcGFyc2UoJGl0ZW1bMV0sIGFy cmF5KCcnKSwgYXJyYXkoJycpLCBhcnJheSgnJyksICRzcGMpOw0KCQl9DQoJfQ0KDQoJaWYg KCRkZWJ1ZyA+IDApIHsNCgkJZWNobyAiKysgREVGQVVMVFMgKysiOw0KCQlkbXAoJGRmbHRz KTsNCgl9DQoNCgkvLyBHZXQgYSBsaXN0IG9mIGZpZWxkcyB0byBlc2NhcGUNCgkkZXNjYXBl cyA9IGRvX2xpc3QoJGVzY2FwZSwgJGRlbGltKTsNCglmb3JlYWNoICgkZXNjYXBlcyBhcyAk aWR4ID0+ICR2YWwpIHsNCgkJaWYgKCR2YWwgPT0gJycpIHsNCgkJCXVuc2V0KCRlc2NhcGVz WyRpZHhdKTsNCgkJfQ0KCX0NCg0KCSRycyA9IGFycmF5KCk7DQoJJG91dCA9IGFycmF5KCk7 DQoJJGNvbG91dCA9ICRmaW5hbG91dCA9IGFycmF5KCk7DQoJJHBhZ2VvdXQgPSAnJzsNCg0K CS8vIHF1ZXJ5IG92ZXJyaWRlcyBjb2x1bW4vdGFibGUvd2hlcmUNCglpZiAoJHF1ZXJ5KSB7 DQoJCSRxdWVyeSA9IHNtZF9xdWVyeV9wYXJzZSgkcXVlcnksICRkZmx0cywgJHVybGZpbHRl ciwgJHVybHJlcGxhY2UsICRzcGMpOw0KCQkkbW9kZSA9ICgkbW9kZSA9PSAnYXV0bycpID8g KChzdHJpcG9zKCRxdWVyeSwgIlNFTEVDVCIpID09PSAwKSA/ICdvdXRwdXQnIDogJ2lucHV0 JykgOiAkbW9kZTsNCgkJaWYgKCRtb2RlID09ICdpbnB1dCcpIHsNCgkJCSRycyA9ICgkc2ls ZW50KSA/IEBzYWZlX3F1ZXJ5KCRxdWVyeSwgJGRlYnVnKSA6IHNhZmVfcXVlcnkoJHF1ZXJ5 LCAkZGVidWcpOw0KCQl9IGVsc2Ugew0KCQkJJHJzID0gKCRzaWxlbnQpID8gQGdldFJvd3Mo JHF1ZXJ5LCAkZGVidWcpIDogZ2V0Um93cygkcXVlcnksICRkZWJ1Zyk7DQoJCX0NCgl9IGVs c2Ugew0KCQlpZiAoJGNvbHVtbiAmJiAkdGFibGUpIHsNCgkJCS8vIFRPRE86IFBlcmhhcHMg ZG9TbGFzaCgpIHRoZXNlPw0KCQkJJGNvbHVtbiA9IHNtZF9xdWVyeV9wYXJzZSgkY29sdW1u LCAkZGZsdHMsICR1cmxmaWx0ZXIsICR1cmxyZXBsYWNlLCAkc3BjKTsNCgkJCSR0YWJsZSA9 IHNtZF9xdWVyeV9wYXJzZSgkdGFibGUsICRkZmx0cywgJHVybGZpbHRlciwgJHVybHJlcGxh Y2UsICRzcGMpOw0KCQkJJHdoZXJlID0gc21kX3F1ZXJ5X3BhcnNlKCR3aGVyZSwgJGRmbHRz LCAkdXJsZmlsdGVyLCAkdXJscmVwbGFjZSwgJHNwYyk7DQoJCQkkd2hlcmUgPSAoJHdoZXJl KSA/ICR3aGVyZSA6ICIxPTEiOw0KCQkJJG1vZGUgPSAnb3V0cHV0JzsNCgkJCSRycyA9ICgk c2lsZW50KSA/IEBzYWZlX3Jvd3MoJGNvbHVtbiwgJHRhYmxlLCAkd2hlcmUsICRkZWJ1Zykg OiBzYWZlX3Jvd3MoJGNvbHVtbiwgJHRhYmxlLCAkd2hlcmUsICRkZWJ1Zyk7DQoJCX0gZWxz ZSB7DQoJCQl0cmlnZ2VyX2Vycm9yKCJZb3UgbXVzdCBzcGVjaWZ5IGF0IGxlYXN0IDEgJ2Nv bHVtbicgYW5kIGEgJ3RhYmxlJy4iKTsNCgkJfQ0KCX0NCg0KCWlmICgkbW9kZSA9PSAnb3V0 cHV0Jykgew0KCQkkbnVtcm93cyA9IGNvdW50KCRycyk7DQoJCSR0cnVlUGFydCA9IEV2YWxF bHNlKCR0aGluZywgMSk7DQoJDQoJCWlmICgkcnMpIHsNCgkJCWlmICgkZGVidWcgPiAxKSB7 DQoJCQkJZWNobyAiKysgUVVFUlkgUkVTVUxUIFNFVCArKyI7DQoJCQkJZG1wKCRudW1yb3dz IC4gIiBST1dTIik7DQoJCQkJZG1wKCRycyk7DQoJCQl9DQoJDQoJCQlpZiAoJGxpbWl0ID4g MCkgew0KCQkJCSRrZWVwc2FmZSA9ICR0aGlzcGFnZTsNCgkJCQkkdG90YWwgPSAkbnVtcm93 cyAtICRvZmZzZXQ7DQoJCQkJJG51bVBhZ2VzID0gY2VpbCgkdG90YWwvJGxpbWl0KTsNCgkJ CQkkcGcgPSAoIWdwcygkcGFnZXZhcikpID8gMSA6IGdwcygkcGFnZXZhcik7DQoJCQkJJHBn b2Zmc2V0ID0gJG9mZnNldCArICgoJHBnIC0gMSkgKiAkbGltaXQpOw0KCQkJCS8vIHNlbmQg cGFnaW5nIGluZm8gdG8gdHhwOm5ld2VyIGFuZCB0eHA6b2xkZXINCgkJCQkkcGFnZW91dFsn cGcnXSA9ICRwZzsNCgkJCQkkcGFnZW91dFsnbnVtUGFnZXMnXSA9ICRudW1QYWdlczsNCgkJ CQkkcGFnZW91dFsncyddID0gJHByZXRleHRbJ3MnXTsNCgkJCQkkcGFnZW91dFsnYyddID0g JHByZXRleHRbJ2MnXTsNCgkJCQkkcGFnZW91dFsnZ3JhbmRfdG90YWwnXSA9ICRudW1yb3dz Ow0KCQkJCSRwYWdlb3V0Wyd0b3RhbCddID0gJHRvdGFsOw0KCQkJCSR0aGlzcGFnZSA9ICRw YWdlb3V0Ow0KCQkJfSBlbHNlIHsNCgkJCQkkcGdvZmZzZXQgPSAkb2Zmc2V0Ow0KCQkJfQ0K CQ0KCQkJJHJzID0gYXJyYXlfc2xpY2UoJHJzLCAkcGdvZmZzZXQsICgoJGxpbWl0PT0wKSA/ IDk5OTk5IDogJGxpbWl0KSk7DQoJCQkkcGFnZXJvd3MgPSBjb3VudCgkcnMpOw0KCQ0KCQkJ JHJlcGxhY2VtZW50cyA9ICRyZXBhZ2VtZW50cyA9ICRjb2xyZXBsYWNlbWVudHMgPSBhcnJh eSgpOw0KCQkJJHBhZ2Vfcm93Y250ID0gKCRjb3VudD09InVwIikgPyAwIDogJHBhZ2Vyb3dz LTE7DQoJCQkkcXJ5X3Jvd2NudCA9ICgkY291bnQ9PSJ1cCIpID8gJHBnb2Zmc2V0LSRvZmZz ZXQgOiAkbnVtcm93cy0kcGdvZmZzZXQtMTsNCgkJCSRmaXJzdF9yb3cgPSAkcXJ5X3Jvd2Nu dCArIDE7DQoJCQlmb3JlYWNoICgkcnMgYXMgJHJvdykgew0KCQkJCWZvcmVhY2ggKCRyb3cg YXMgJGNvbGlkID0+ICR2YWwpIHsNCgkJCQkJaWYgKCRwYWdlX3Jvd2NudCA9PSAwICYmICRj b2xzZm9ybSkgew0KCQkJCQkJJGNvbHJlcGxhY2VtZW50c1sneycuJGNvbGlkLid9J10gPSAk Y29saWQ7DQoJCQkJCX0NCgkJCQkJLy8gQ29uc3RydWN0IHRoZSByZXBsYWNlbWVudCBhcnJh eXMNCgkJCQkJJHJlcGxhY2VtZW50c1sneycuJGNvbGlkLid9J10gPSAoaW5fYXJyYXkoJGNv bGlkLCAkZXNjYXBlcykgPyBodG1sc3BlY2lhbGNoYXJzKCR2YWwsIEVOVF9RVU9URVMpIDog JHZhbCk7DQoJCQkJCWlmICgkcGFnZV9yb3djbnQgPT0gKCgkY291bnQ9PSJ1cCIpID8gJHBh Z2Vyb3dzLTEgOiAwKSAmJiAkcGFnZWZvcm0gJiYgJGxpbWl0PjApIHsNCgkJCQkJCSRwcmV2 cGcgPSAoKCRwZy0xKSA+IDApID8gJHBnLTEgOiAnJzsNCgkJCQkJCSRuZXh0cGcgPSAoKCRw ZysxKSA8PSAkbnVtUGFnZXMpID8gJHBnKzEgOiAnJzsNCgkJCQkJCSRyZXBhZ2VtZW50c1sn e3NtZF9hbGxyb3dzfSddID0gJHRvdGFsOw0KCQkJCQkJJHJlcGFnZW1lbnRzWyd7c21kX3Bh Z2VzfSddID0gJG51bVBhZ2VzOw0KCQkJCQkJJHJlcGFnZW1lbnRzWyd7c21kX3ByZXZwYWdl fSddID0gJHByZXZwZzsNCgkJCQkJCSRyZXBhZ2VtZW50c1sne3NtZF90aGlzcGFnZX0nXSA9 ICRwZzsNCgkJCQkJCSRyZXBhZ2VtZW50c1sne3NtZF9uZXh0cGFnZX0nXSA9ICRuZXh0cGc7 DQoJCQkJCQkkcmVwYWdlbWVudHNbJ3tzbWRfcm93X3N0YXJ0fSddID0gJGZpcnN0X3JvdzsN CgkJCQkJCSRyZXBhZ2VtZW50c1sne3NtZF9yb3dfZW5kfSddID0gJHFyeV9yb3djbnQgKyAx Ow0KCQkJCQkJJHJlcGFnZW1lbnRzWyd7c21kX3Jvd3NfcHJldn0nXSA9ICgoJHByZXZwZykg PyAkbGltaXQgOiAwKTsNCgkJCQkJCSRyZXBhZ2VtZW50c1sne3NtZF9yb3dzX25leHR9J10g PSAoKCRuZXh0cGcpID8gKCgkcXJ5X3Jvd2NudCskbGltaXQrMSkgPiAkdG90YWwgPyAkdG90 YWwtJHFyeV9yb3djbnQtMSA6ICRsaW1pdCkgOiAwKTsNCgkJCQkJCSRyZXBhZ2VtZW50c1sn e3NtZF9xdWVyeV91bmlxdWVfaWR9J10gPSAkdW5pcTsNCgkJCQkJCSRzbWRfcXVlcnlfcGdp bmZvID0gJHJlcGFnZW1lbnRzOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCSRyZXBsYWNlbWVudHNb J3tzbWRfYWxscm93c30nXSA9ICgoJGxpbWl0PjApID8gJHRvdGFsIDogJG51bXJvd3MtJHBn b2Zmc2V0KTsNCgkJCQkkcmVwbGFjZW1lbnRzWyd7c21kX3Jvd3N9J10gPSAkcGFnZXJvd3M7 DQoJCQkJJHJlcGxhY2VtZW50c1sne3NtZF9wYWdlc30nXSA9ICgoJGxpbWl0PjApID8gJG51 bVBhZ2VzIDogMSk7DQoJCQkJJHJlcGxhY2VtZW50c1sne3NtZF90aGlzcGFnZX0nXSA9ICgo JGxpbWl0PjApID8gJHBnIDogMSk7DQoJCQkJJHJlcGxhY2VtZW50c1sne3NtZF90aGlzaW5k ZXh9J10gPSAkcGFnZV9yb3djbnQ7DQoJCQkJJHJlcGxhY2VtZW50c1sne3NtZF90aGlzcm93 fSddID0gJHBhZ2Vfcm93Y250ICsgMTsNCgkJCQkkcmVwbGFjZW1lbnRzWyd7c21kX2N1cnNv cmluZGV4fSddID0gJHFyeV9yb3djbnQ7DQoJCQkJJHJlcGxhY2VtZW50c1sne3NtZF9jdXJz b3J9J10gPSAkcXJ5X3Jvd2NudCArIDE7DQoJCQkJaWYgKCRkZWJ1ZyA+IDApIHsNCgkJCQkJ ZWNobyAiKysgUkVQTEFDRU1FTlRTICsrIjsNCgkJCQkJZG1wKCRyZXBsYWNlbWVudHMpOw0K CQkJCX0NCgkJCQkkb3V0W10gPSAoJHByZXBhcnNlKSA/IHN0cnRyKHBhcnNlKCR0cnVlUGFy dCksICRyZXBsYWNlbWVudHMpIDogcGFyc2Uoc3RydHIoJHRydWVQYXJ0LCAkcmVwbGFjZW1l bnRzKSk7DQoJCQkJJHFyeV9yb3djbnQgPSAoJGNvdW50PT0idXAiKSA/ICRxcnlfcm93Y250 KzEgOiAkcXJ5X3Jvd2NudC0xOw0KCQkJCSRwYWdlX3Jvd2NudCA9ICgkY291bnQ9PSJ1cCIp ID8gJHBhZ2Vfcm93Y250KzEgOiAkcGFnZV9yb3djbnQtMTsNCgkJCX0NCgkNCgkJCWlmICgk b3V0KSB7DQoJCQkJaWYgKCRjb2xyZXBsYWNlbWVudHMpIHsNCgkJCQkJJGNvbG91dFtdID0g KCRwcmVwYXJzZSkgPyBzdHJ0cihwYXJzZSgkY29sc2Zvcm0pLCAkY29scmVwbGFjZW1lbnRz KSA6IHBhcnNlKHN0cnRyKCRjb2xzZm9ybSwgJGNvbHJlcGxhY2VtZW50cykpOw0KCQkJCX0N CgkJCQlpZiAoJHJlcGFnZW1lbnRzKSB7DQoJCQkJCSRwYWdlb3V0ID0gKCRwcmVwYXJzZSkg PyBzdHJ0cihwYXJzZSgkcGFnZWZvcm0pLCAkcmVwYWdlbWVudHMpIDogcGFyc2Uoc3RydHIo JHBhZ2Vmb3JtLCAkcmVwYWdlbWVudHMpKTsNCgkJCQl9DQoNCgkJCQkvLyBNYWtlIHVwIHRo ZSBmaW5hbCBvdXRwdXQNCgkJCQlpZiAoaW5fYXJyYXkoImFib3ZlIiwgJHBhZ2ViaXQpKSB7 DQoJCQkJCSRmaW5hbG91dFtdID0gJHBhZ2VvdXQ7DQoJCQkJfQ0KCQkJCSRmaW5hbG91dFtd ID0gZG9MYWJlbCgkbGFiZWwsICRsYWJlbHRhZykuZG9XcmFwKGFycmF5X21lcmdlKCRjb2xv dXQsICRvdXQpLCAkd3JhcHRhZywgJGJyZWFrLCAkY2xhc3MpOw0KCQkJCWlmIChpbl9hcnJh eSgiYmVsb3ciLCAkcGFnZWJpdCkpIHsNCgkJCQkJJGZpbmFsb3V0W10gPSAkcGFnZW91dDsN CgkJCQl9DQoNCgkJCQkvLyBSZXN0b3JlIHRoZSBwYWdpbmcgb3V0c2lkZSB0aGUgcGx1Z2lu IGNvbnRhaW5lcg0KCQkJCWlmICgkbGltaXQgPiAwKSB7DQoJCQkJCSR0aGlzcGFnZSA9ICRr ZWVwc2FmZTsNCgkJCQl9DQoJCQkJcmV0dXJuIGpvaW4oJycsICRmaW5hbG91dCk7DQoJCQl9 DQoJCX0gZWxzZSB7DQoJCQlyZXR1cm4gcGFyc2UoRXZhbEVsc2UoJHRoaW5nLCAwKSk7DQoJ CX0NCgl9DQoJcmV0dXJuICcnOw0KfQ0KDQovLyBSZXR1cm5zIGEgc3RyaW5nIHdpdGggYW55 ID8gdmFyaWFibGVzIHJlcGxhY2VkIHdpdGggdGhlaXIgZ2xvYmFscw0KLy8gVVJMIFZhcmlh YmxlcyBhcmUgb3B0aW9uYWxseSBydW4gdGhyb3VnaCBwcmVnX3JlcGxhY2UoKSB0byBzYW5p dGl6ZSB0aGVtLg0KLy8gICRwYXQgaXMgYW4gYXJyYXkgb2YgcmVnZXggc2VhcmNoIHBhdHRl cm5zDQovLyAgJHJlcCBpcyBhbiBhcnJheSBvZiByZWdleCBzZWFyY2ggcmVwYWxjZW1lbnRz IChkZWZhdWx0ID0gJycsIGkuZS4gcmVtb3ZlIHdoYXRldmVyIG1hdGNoZXMpDQpmdW5jdGlv biBzbWRfcXVlcnlfcGFyc2UoJGl0ZW0sICRkZmx0cz1hcnJheSgnJyksICRwYXQ9YXJyYXko JycpLCAkcmVwPWFycmF5KCcnKSwgJGxheD10cnVlKSB7DQoJZ2xvYmFsICRwcmV0ZXh0LCAk dGhpc2FydGljbGUsICR0aGlzaW1hZ2UsICR0aGlzZmlsZSwgJHRoaXNsaW5rLCAkdmFyaWFi bGU7DQoNCgkkaXRlbSA9IGh0bWxfZW50aXR5X2RlY29kZSgkaXRlbSk7DQoNCgkvLyBTb21l dGltZXMgcGVza3kgVW5pY29kZSBpcyBub3QgY29tcGlsZWQgaW4uIERldGVjdCBpZiBzbyBh bmQgZmFsbCBiYWNrIHRvIEFTQ0lJDQoJaWYgKCFAcHJlZ19tYXRjaCgnL1xwTC91JywgJ2En KSkgew0KCQkkbW9kUkUgPSAoJGxheCkgPyAnLyhcPykoW0EtWmEtejAtOV9cLSBdKykvJyA6 ICcvKFw/KShbQS1aYS16MC05X1wtXSspLyc7DQoJfSBlbHNlIHsNCgkJJG1vZFJFID0gKCRs YXgpID8gJy8oXD8pKFtccHtMfVxwe059XHB7UGN9XHB7UGR9XHB7WnN9XSspLycgOiAnLyhc PykoW1xwe0x9XHB7Tn1ccHtQY31ccHtQZH1dKykvJzsNCgl9DQoNCgkkbnVtTW9kcyA9IHBy ZWdfbWF0Y2hfYWxsKCRtb2RSRSwgJGl0ZW0sICRtb2RzKTsNCg0KCWZvciAoJG1vZEN0ciA9 IDA7ICRtb2RDdHIgPCAkbnVtTW9kczsgJG1vZEN0cisrKSB7DQoJCSRtb2RDaGFyID0gJG1v ZHNbMV1bJG1vZEN0cl07DQoJCSRtb2RJdGVtID0gdHJpbSgkbW9kc1syXVskbW9kQ3RyXSk7 DQoJCSRsb3dpdGVtID0gc3RydG9sb3dlcigkbW9kSXRlbSk7DQoJCSR1cmx2YXIgPSAkc3Zy dmFyID0gJyc7DQoNCgkJaWYgKGdwcygkbG93aXRlbSkgIT0gJycpIHsNCgkJCSR1cmx2YXIg PSBkb1NsYXNoKGdwcygkbG93aXRlbSkpOw0KCQkJaWYgKCR1cmx2YXIgJiYgJHBhdCkgew0K CQkJCSR1cmx2YXIgPSBwcmVnX3JlcGxhY2UoJHBhdCwgJHJlcCwgJHVybHZhcik7DQoJCQl9 DQoJCX0NCgkJaWYgKHNlcnZlclNldCgkbW9kSXRlbSkgIT0gJycpIHsNCgkJCSRzdnJ2YXIg PSBkb1NsYXNoKHNlcnZlclNldCgkbW9kSXRlbSkpOw0KCQkJaWYgKCRzdnJ2YXIgJiYgJHBh dCkgew0KCQkJCSRzdnJ2YXIgPSBwcmVnX3JlcGxhY2UoJHBhdCwgJHJlcCwgJHN2cnZhcik7 DQoJCQl9DQoJCX0NCg0KCQlpZiAoaXNzZXQoJHZhcmlhYmxlWyRsb3dpdGVtXSkgJiYgJHZh cmlhYmxlWyRsb3dpdGVtXSAhPSAnJykgew0KCQkJJGl0ZW0gPSBzdHJfcmVwbGFjZSgkbW9k Q2hhci4kbW9kSXRlbSwgJHZhcmlhYmxlWyRsb3dpdGVtXSwgJGl0ZW0pOw0KCQl9IGVsc2Ug aWYgKCRzdnJ2YXIgIT0gJycpIHsNCgkJCSRpdGVtID0gc3RyX3JlcGxhY2UoJG1vZENoYXIu JG1vZEl0ZW0sICRzdnJ2YXIsICRpdGVtKTsNCgkJfSBlbHNlIGlmIChpc3NldCgkdGhpc2lt YWdlWyRsb3dpdGVtXSkgJiYgIWVtcHR5KCR0aGlzaW1hZ2VbJGxvd2l0ZW1dKSkgew0KCQkJ JGl0ZW0gPSBzdHJfcmVwbGFjZSgkbW9kQ2hhci4kbW9kSXRlbSwgJHRoaXNpbWFnZVskbG93 aXRlbV0sICRpdGVtKTsNCgkJfSBlbHNlIGlmIChpc3NldCgkdGhpc2ZpbGVbJGxvd2l0ZW1d KSAmJiAhZW1wdHkoJHRoaXNmaWxlWyRsb3dpdGVtXSkpIHsNCgkJCSRpdGVtID0gc3RyX3Jl cGxhY2UoJG1vZENoYXIuJG1vZEl0ZW0sICR0aGlzZmlsZVskbG93aXRlbV0sICRpdGVtKTsN CgkJfSBlbHNlIGlmIChpc3NldCgkdGhpc2xpbmtbJGxvd2l0ZW1dKSAmJiAhZW1wdHkoJHRo aXNsaW5rWyRsb3dpdGVtXSkpIHsNCgkJCSRpdGVtID0gc3RyX3JlcGxhY2UoJG1vZENoYXIu JG1vZEl0ZW0sICR0aGlzbGlua1skbG93aXRlbV0sICRpdGVtKTsNCgkJfSBlbHNlIGlmIChh cnJheV9rZXlfZXhpc3RzKCRsb3dpdGVtLCAkcHJldGV4dCkgJiYgIWVtcHR5KCRwcmV0ZXh0 WyRsb3dpdGVtXSkpIHsNCgkJCSRpdGVtID0gc3RyX3JlcGxhY2UoJG1vZENoYXIuJG1vZEl0 ZW0sICRwcmV0ZXh0WyRsb3dpdGVtXSwgJGl0ZW0pOw0KCQl9IGVsc2UgaWYgKGlzc2V0KCR0 aGlzYXJ0aWNsZVskbG93aXRlbV0pICYmICFlbXB0eSgkdGhpc2FydGljbGVbJGxvd2l0ZW1d KSkgew0KCQkJJGl0ZW0gPSBzdHJfcmVwbGFjZSgkbW9kQ2hhci4kbW9kSXRlbSwgJHRoaXNh cnRpY2xlWyRsb3dpdGVtXSwgJGl0ZW0pOw0KCQl9IGVsc2UgaWYgKCR1cmx2YXIgIT0gJycp IHsNCgkJCSRpdGVtID0gc3RyX3JlcGxhY2UoJG1vZENoYXIuJG1vZEl0ZW0sICR1cmx2YXIs ICRpdGVtKTsNCgkJfSBlbHNlIGlmIChpc3NldCgkZGZsdHNbJGxvd2l0ZW1dKSkgew0KCQkJ JGl0ZW0gPSBzdHJfcmVwbGFjZSgkbW9kQ2hhci4kbW9kSXRlbSwgJGRmbHRzWyRsb3dpdGVt XSwgJGl0ZW0pOw0KCQl9IGVsc2Ugew0KCQkJJGl0ZW0gPSBzdHJfcmVwbGFjZSgkbW9kQ2hh ci4kbW9kSXRlbSwgJG1vZEl0ZW0sICRpdGVtKTsNCgkJfQ0KCX0NCglyZXR1cm4gJGl0ZW07 DQp9DQovLyBDb252ZW5pZW5jZSBmdW5jdGlvbnMgdG8gY2hlY2sgaWYgdGhlcmUncyBhIHBy ZXYvbmV4dCBwYWdlIGRlZmluZWQuIENvdWxkIGFsc28gdXNlIHNtZF9pZg0KZnVuY3Rpb24g c21kX3F1ZXJ5X2lmX3ByZXYoJGF0dHMsICR0aGluZykgew0KCWdsb2JhbCAkc21kX3F1ZXJ5 X3BnaW5mbzsNCg0KCSRyZXMgPSAkc21kX3F1ZXJ5X3BnaW5mbyAmJiAkc21kX3F1ZXJ5X3Bn aW5mb1sne3NtZF9wcmV2cGFnZX0nXSAhPSAnJzsNCglyZXR1cm4gcGFyc2UoRXZhbEVsc2Uo c3RydHIoJHRoaW5nLCAkc21kX3F1ZXJ5X3BnaW5mbyksICRyZXMpKTsNCn0NCmZ1bmN0aW9u IHNtZF9xdWVyeV9pZl9uZXh0KCRhdHRzLCAkdGhpbmcpIHsNCglnbG9iYWwgJHNtZF9xdWVy eV9wZ2luZm87DQoNCgkkcmVzID0gJHNtZF9xdWVyeV9wZ2luZm8gJiYgJHNtZF9xdWVyeV9w Z2luZm9bJ3tzbWRfbmV4dHBhZ2V9J10gIT0gJyc7DQoJcmV0dXJuIHBhcnNlKEV2YWxFbHNl KHN0cnRyKCR0aGluZywgJHNtZF9xdWVyeV9wZ2luZm8pLCAkcmVzKSk7DQoNCn0iO3M6NDoi dHlwZSI7czoxOiIwIjtzOjU6ImZsYWdzIjtzOjE6IjAiO3M6NToib3JkZXIiO3M6MToiNSI7 czozOiJtZDUiO3M6MzI6IjFkMTMzNWZiOGZjOWVhYzMwZmZhM2UzYjljZjliYWI4Ijt9