# smd_pullquote 0.1 # Pulls text from articles for magazine-style quotes. Uses jQuery. # Stef Dawson # 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: # ..................................................................... YTo5OntzOjQ6Im5hbWUiO3M6MTM6InNtZF9wdWxscXVvdGUiO3M6NjoiYXV0aG9yIjtzOjExOiJTdGVmIERhd3NvbiI7czoxMDoiYXV0aG9yX3VyaSI7czoyMjoiaHR0cDovL3N0ZWZkYXdzb24uY29tLyI7czo3OiJ2ZXJzaW9uIjtzOjM6IjAuMSI7czoxMToiZGVzY3JpcHRpb24iO3M6NjQ6IlB1bGxzIHRleHQgZnJvbSBhcnRpY2xlcyBmb3IgbWFnYXppbmUtc3R5bGUgcXVvdGVzLiBVc2VzIGpRdWVyeS4iO3M6NDoiaGVscCI7czoxNzk1MToiPHN0eWxlPg0KY29kZSB7Y29sb3I6ICMyMDQ2NmZ9DQpwcmUge3BhZGRpbmc6IDAuNWVtIDFlbTsgYmFja2dyb3VuZDogI2VlZTsgYm9yZGVyOiAxcHggZGFzaGVkICNjY2M7fQ0KaDEsIGgyLCBoMywgaDMgY29kZSB7Zm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IGZvbnQtd2VpZ2h0OiBib2xkO30NCmgxLCBoMiwgaDMge21hcmdpbi1sZWZ0OiAtMWVtO30NCmgyLCBoMyB7bWFyZ2luLXRvcDogMmVtO30NCmgxIHtmb250LXNpemU6IDNlbTt9DQpoMiB7Zm9udC1zaXplOiAyZW07fQ0KaDMge2ZvbnQtc2l6ZTogMS41ZW07fQ0KbGkgYSBjb2RlIHtmb250LXdlaWdodDogbm9ybWFsO30NCi5yZXF1aXJlZCwgLndhcm5pbmcge2NvbG9yOnJlZDt9DQojZWd0YWIgdGQsI2VndGFiIHRoIHtwYWRkaW5nOi43ZW07IGJvcmRlcjoxcHggc29saWQgIzg4ODt0ZXh0LWFsaWduOmNlbnRlcjt9DQo8L3N0eWxlPg0KPGgxIGlkPSJ0b3AiPnNtZF9wdWxscXVvdGU8L2gxPg0KPHA+Rm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdXNhZ2UsIGJ1Z3MsIGZlYXR1cmVzIGV0YywgcGxlYXNlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9pZD0yNDQ3NiI+dmlzaXQgdGhlIGZvcnVtIHRocmVhZDwvYT4uPC9wPg0KDQo8cCBjbGFzcz0icmVxdWlyZWQiPlJlcXVpcmVzIDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9kb3dubG9hZHMvc21kX2xpYl92MC4zLnR4dCI+c21kX2xpYiB2MC4zPC9hPiB0byBiZSBpbnN0YWxsZWQgYW5kIGFjdGl2YXRlZC48cD4NCjxwIGNsYXNzPSJyZXF1aXJlZCI+UmVxdWlyZXMgPGEgaHJlZj0iaHR0cDovL2pxdWVyeS5jb20vIj5qUXVlcnk8L2E+IHRvIGJlIGF2YWlsYWJsZS4gRnJvbSBUWFAgdjQuMC41IHRoaXMgaXMgZGlzdHJpYnV0ZWQgYnkgZGVmYXVsdC48cD4NCg0KPGgyIGlkPSJjb250ZW50cyI+Q29udGVudHM8L2gyPg0KPHVsPg0KPGxpPjxhIGhyZWY9IiNvdmVydmlldyI+T3ZlcnZpZXc8L2E+PC9saT4NCjxsaT48YSBocmVmPSIjcHJlcmVxIj5CZWZvcmUgeW91IGJlZ2luPC9hPjwvbGk+DQo8bGk+PGEgaHJlZj0iI2F0dHMiPkF0dHJpYnV0ZXM8L2E+DQo8dWw+DQo8bGk+PGEgaHJlZj0iI2pxdWVyeSI+anF1ZXJ5PC9hPjwvbGk+DQo8bGk+PGEgaHJlZj0iI2pxY2xhc2h2YXIiPmpxX2NsYXNodmFyPC9hPjwvbGk+DQo8bGk+PGEgaHJlZj0iI3NlYXJjaGNsYXNzIj5zZWFyY2hfY2xhc3M8L2E+PC9saT4NCjxsaT48YSBocmVmPSIjd3JhcHRhZyI+d3JhcHRhZzwvYT48L2xpPg0KPGxpPjxhIGhyZWY9IiNjbGFzcyI+Y2xhc3M8L2E+PC9saT4NCjxsaT48YSBocmVmPSIjY29udGFpbmVyIj5jb250YWluZXI8L2E+PC9saT4NCjxsaT48YSBocmVmPSIjaW5zZXJ0bWV0aG9kIj5pbnNlcnRfbWV0aG9kPC9hPjwvbGk+DQo8bGk+PGEgaHJlZj0iI2xpbWl0Ij5saW1pdDwvYT48L2xpPg0KPGxpPjxhIGhyZWY9IiNyYW5kb20iPnJhbmRvbTwvYT48L2xpPg0KPGxpPjxhIGhyZWY9IiNoaWRlb3JpZyI+aGlkZV9vcmlnaW5hbHM8L2E+PC9saT4NCjxsaT48YSBocmVmPSIjY2hvcHBlciI+Y2hvcHBlcjwvYT48L2xpPg0KPGxpPjxhIGhyZWY9IiNvbWlzc2lvbnMiPm9taXNzaW9uczwvYT48L2xpPg0KPGxpPjxhIGhyZWY9IiNzdGFydCI+c3RhcnQ8L2E+PC9saT4NCjxsaT48YSBocmVmPSIjZW5kIj5lbmQ8L2E+PC9saT4NCjxsaT48YSBocmVmPSIjcG9zIj5wb3M8L2E+PC9saT4NCjwvdWw+PC9saT4NCjxsaT48YSBocmVmPSIjZXhhbXBsZXMiPkV4YW1wbGVzPC9hPjwvbGk+DQo8bGk+PGEgaHJlZj0iI3N0eWxpbmciPlN0eWxpbmc8L2E+PC9saT4NCjwvdWw+DQoNCjxoMiBpZD0ib3ZlcnZpZXciPk92ZXJ2aWV3PC9oMj4NCjxwPkV2ZXIgd2FudGVkIHRvIGhhdmUgdGhvc2UgbWFnYXppbmUtc3R5bGUgcHVsbHF1b3RlcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHlvdXIgYXJ0aWNsZSBjb250ZW50PyBUaGlzIGlzIHRoZSBwbHVnaW4gZm9yIHlvdSE8L3A+DQo8cD5GZWF0dXJlczo8L3A+DQo8dWw+DQo8bGk+VXNpbmcgbWFya3VwIHlvdSB0ZWxsIHRoZSBwbHVnaW4gd2hpY2ggYml0cyBvZiB5b3VyIGFydGljbGVzIGFyZSB0byBiZSBkaXNwbGF5ZWQgYW5kIHN0eWxlZCBzZXBhcmF0ZWx5OiBubyBuZWVkIHRvIGhhbmRsZSBxdW90ZXMgc2VwYXJhdGVseSBmcm9tIGNvbnRlbnQ8L2xpPg0KPGxpPldvcmRzIGZyb20gdGhlIGZ1bGwgYm9keSB0ZXh0IGNhbiBiZSBjdXQgZnJvbSB0aGUgcXVvdGVzIHRvIG1ha2UgdGhlbSBzaG9ydGVyOyBvbWl0dGVkIHdvcmRzIGFyZSByZXBsYWNlZCB3aXRoIGNoYXJhY3RlcnMgb2YgeW91ciBjaG9pY2U8L2xpPg0KPGxpPkRpc3BsYXkgb25lIG9yIG1vcmUgcXVvdGVzIHJhbmRvbWx5IGZyb20gYSBwYWdlLCBvcHRpb25hbGx5IHJlbW92aW5nIHRoZSBvcmlnaW5hbHM8L2xpPg0KPGxpPlBvc2l0aW9uIHRoZSBxdW90ZXMgYW55d2hlcmUgeW91IGxpa2UgdmlhIENTUywgb3IgdXNlIHJ1ZGltZW50YXJ5IG1hdGhzIHRvIGtlZXAgdGhlIHF1b3RlIG5lYXIgdG8gaXRzIHBvc2l0aW9uIG9uIHRoZSBwYWdlLiBTZWUgPGEgaHJlZj0iI3BvcyI+cG9zPC9hPiwgPGEgaHJlZj0iI2NvbnRhaW5lciI+Y29udGFpbmVyPC9hPiBhbmQgPGEgaHJlZj0iI2luc2VydG1ldGhvZCI+aW5zZXJ0X21ldGhvZDwvYT48L2xpPg0KPGxpPktleSBhdHRyaWJ1dGVzIGNvdmVyZWQgYnkgTUxQIGZvciBtdWx0aS1saW5ndWFsIGNvbnRyb2wgb3ZlciBxdW90ZXM8L2xpPg0KPC91bD4NCg0KPGgyIGlkPSJwcmVyZXEiPkJlZm9yZSB5b3UgYmVnaW48L2gyPg0KPHA+VGhlIHBsdWdpbiByZWxpZXMgaGVhdmlseSBvbiBqYXZhc2NyaXB0IGFuZCA8YSBocmVmPSJodHRwOi8vanF1ZXJ5LmNvbSI+alF1ZXJ5PC9hPi4gRnJvbSBUWFAgdjQuMC41IGpRdWVyeSBpcyBzaGlwcGVkIGFuZCBpbnN0YWxsZWQgd2l0aCB0aGUgYmFzZSBwYWNrYWdlLiBZb3UgbWF5IG5lZWQgdG8gdXBncmFkZSB0aGUgdmVyc2lvbiB0aGF0IHNoaXBzIHdpdGggdGV4dHBhdHRlcm4gdG8gYSBsYXRlciB2ZXJzaW9uIHNpbmNlIHRoaXMgcGx1Z2luIHdhcyBkZXZlbG9wZWQgd2l0aCBqUXVlcnkgdjEuMi4xOyB0aGUgdmVyc2lvbiB0aGF0IHNoaXBzIHdpdGggVFhQIGlzIGFuIGVhcmxpZXIgdmVyc2lvbi4gTm90ZSB0aGF0IGlmIHlvdSB1c2Ugb3RoZXIgamF2YXNjcmlwdCBsaWJyYXJpZXMgb24gdGhlIHNhbWUgcGFnZSAoZS5nLiBtb290b29scykgeW91IG1heSBuZWVkIHRvIHRlbGwgdGhlIHBsdWdpbiB3aGljaCBpcyB3aGljaCB0byBhdm9pZCBjbGFzaGVzLiBTZWUgPGEgaHJlZj0iI2pxdWVyeSI+anF1ZXJ5PC9hPiBhbmQgPGEgaHJlZj0iI2pxY2xhc2h2YXIiPmpxX2NsYXNodmFyPC9hPiBmb3IgbW9yZS48L3A+DQo8cD5UaGUgZ2VuZXJhbCBpZGVhIGlzIHRoYXQgYXMgeW91IHdyaXRlIHlvdXIgYXJ0aWNsZSwgeW91IHdyYXAgYW55IGtpbGxlciBxdW90ZXMgd2l0aCBzb21lIG1hcmt1cDsgdXN1YWxseSBhIDxjb2RlPiZsdDtzcGFuJmd0OzwvY29kZT4gZWxlbWVudCBzaW5jZSB0aGV5IGFyZSAiaW52aXNpYmxlIiBpbiB0aGUgY29udGVudC4gR2l2ZSBlYWNoIHF1b3RlIHRoZSBzYW1lIGNsYXNzIG5hbWUgKGJ5IGRlZmF1bHQgaXQncyA8Y29kZT5wcTwvY29kZT4gYnV0IGNhbiBiZSBjaGFuZ2VkIHdpdGggdGhlIDxhIGhyZWY9IiNzZWFyY2hjbGFzcyI+c2VhcmNoX2NsYXNzPC9hPiBvcHRpb24pIGFuZCB5b3VyIHF1b3RlcyB3aWxsIGJlIGNvcGllZCBmcm9tIHlvdXIgZG9jdW1lbnQgaW50byBzZXBhcmF0ZSBlbGVtZW50cyByZWFkeSB0byBiZSBwb3NpdGlvbmVkL3N0eWxlZC48L3A+DQo8cD5BYnNvbHV0ZSBwb3NpdGlvbmluZyB3b3JrcyBiZXN0IGJ1dCB5b3UgbWF5IGhhdmUgc3VjY2VzcyB3aXRoIGZsb2F0cywgb3IgZXZlbiBpbmxpbmUgZGVwZW5kaW5nIG9uIHlvdXIgbGV2ZWwgb2YgaW5nZW51aXR5LjwvcD4NCg0KPGgyIGlkPSJhdHRzIj5BdHRyaWJ1dGVzPC9oMj4NCjxoMyBpZD0ianF1ZXJ5Ij48Y29kZT5qcXVlcnk8L2NvZGU+PC9oMz4NCjxwPkZvciBhIGRlZmF1bHQgaW5zdGFsbGF0aW9uIHlvdSBzaG91bGQgbm90IG5lZWQgdG8gY2hhbmdlIHRoaXMuIEl0IHNwZWNpZmllcyB0aGUgcGF0aCB0byB0aGUgPGNvZGU+anF1ZXJ5LmpzPC9jb2RlPiBsaWJyYXJ5IGZpbGUuIERlZmF1bHRzIHRvIDxjb2RlPi90ZXh0cGF0dGVybi9qcXVlcnkuanM8L2NvZGU+LiBHaXZlIGl0IHRoZSBmdWxsIHBhdGggdG8gdGhlIGxpYnJhcnkgb24geW91ciBzZXJ2ZXIgb3IsIGlmIHlvdSBoYXZlIGFscmVhZHkgbG9hZGVkIHRoZSBsaWJyYXJ5IGVhcmxpZXIgb24gdGhlIHBhZ2UsIHNwZWNpZnkgPGNvZGU+anF1ZXJ5PSIiPC9jb2RlPi48L3A+DQoNCjxoMyBpZD0ianFjbGFzaHZhciI+PGNvZGU+anFfY2xhc2h2YXI8L2NvZGU+PC9oMz4NCjxwPllvdSBzaG91bGQgbm90IG5lZWQgdG8gY2hhbmdlIHRoaXMgdW5sZXNzIHlvdSBhcmUgdXNpbmcgYW5vdGhlciBqYXZhc2NyaXB0IGxpYnJhcnkgc3VjaCBhcyBtb290b29scyBvbiB0aGUgc2FtZSBwYWdlLiBUbyBhdm9pZCB0aGUgbGlicmFyaWVzIGNsYXNoaW5nLCBqUXVlcnkgcHJvdmlkZXMgYSBmYWNpbGl0eSB0byBpZGVudGlmeSBpdHNlbGYgdW5pcXVlbHkgdG8gdGhlIGphdmFzY3JpcHQgaW50ZXJwcmV0ZXIuIFNwZWNpZnkgdGhlIHVuaXF1ZSB2YXJpYWJsZSB5b3Ugd2lzaCBqcXVlcnkgdG8gdXNlIGhlcmUuPC9wPg0KPHA+QnkgZGVmYXVsdCBpdCB1c2VzIDxjb2RlPmpxPC9jb2RlPi4gSWYgeW91IGhhdmUgYWxyZWFkeSBzZXQgdXAgdGhlIGpxdWVyeSA8Y29kZT4ubm9Db25mbGljdCgpPC9jb2RlPiB2YXJpYWJsZSBlbHNld2hlcmUgb24gdGhlIHBhZ2UsIHNpbXBseSBzcGVjaWZ5IHRoZSB2YXJpYWJsZSBuYW1lIHlvdSB1c2VkIGFuZCBpdCB3aWxsIGNvbnRpbnVlIHRvIHVzZSBpdCAoaW4gdGhpcyBjYXNlLCBpdCB3aWxsIG5vdCByZWRlZmluZSB0aGUgdmFyaWFibGUpLiBJZiB5b3Ugc3BlY2lmeSBhIGRpZmZlcmVudCBuYW1lLCBvciBvbmUgdGhhdCBpcyBwcmV2aW91c2x5IHVuZGVmaW5lZCwgdGhlIHZhcmlhYmxlIHdpbGwgYmUgY3JlYXRlZCBhbmQgdXNlZCBmb3Igc21kX3B1bGxxdW90ZS48L3A+DQoNCjxoMyBpZD0ic2VhcmNoY2xhc3MiPjxjb2RlPnNlYXJjaF9jbGFzczwvY29kZT48L2gzPg0KPHA+T25jZSB0aGUgcGFnZSBpcyBkaXNwbGF5ZWQgdGhlIHBsdWdpbiBnb2VzIHRocm91Z2ggdGhlIGRvY3VtZW50IGFuZCBsb29rcyBmb3IgYWxsIG9jY3VycmVuY2VzIG9mIGNvbnRlbnQgd3JhcHBlZCB3aXRoIGFuIEhUTUwgZWxlbWVudCBvZiBhIHBhcnRpY3VsYXIgY2xhc3MuIEJ5IGRlZmF1bHQgaXQncyA8Y29kZT5wcTwvY29kZT4uIElmIHlvdSBkb24ndCBsaWtlIHRoYXQsIGNoYW5nZSBpdCB3aXRoIHRoaXMgb3B0aW9uLjwvcD4NCjxwPkxldCdzIGFzc3VtZSB5b3VyIGNvbnRlbnQgaXM6DQoNCjxibG9ja3F1b3RlPjxwPlRoZSBsaW9uIGlzIGEgbWFnbmlmaWNlbnQgYW5pbWFsIGJ1dCBkb24ndCBiZSBsdWxsZWQgaW50byBhIGZhbHNlIHNlbnNlIG9mIHNlY3VyaXR5IGJ5IGl0cyBsb29rcy4gQmVuZWF0aCB0aGUgY3VkZGx5IGV4dGVyaW9yIGxpZSB0ZWV0aCAtIGJpZyB0ZWV0aCAtIGFuZCAmbHQ7c3BhbiBjbGFzcz0icHEiJmd0O2lmIGl0IGhhc24ndCBlYXRlbiBmb3IgYSB3aGlsZSB5b3UgY291bGQgYmUgbmV4dCBvbiB0aGUgbWVudSZsdDsvc3BhbiZndDsuPC9wPjwvYmxvY2txdW90ZT4NCg0KPHA+VXNpbmcgdGhlIDxjb2RlPnNwYW48L2NvZGU+IGluIHRoYXQgbWFubmVyIHRlbGxzIHRoZSBwbHVnaW4gdGhhdCB0aGUgdGV4dCAiaWYgaXQgaGFzbid0IGVhdGVuIGZvciBhIHdoaWxlIHlvdSBjb3VsZCBiZSBuZXh0IG9uIHRoZSBtZW51IiBzaG91bGQgYmUgJ3B1bGxlZCcgKGNvcGllZCkgb3V0IG9mIHRoZSB0ZXh0IGludG8gaXRzIG93biBlbGVtZW50IHNvIHlvdSBjYW4gc3R5bGUgaXQuPC9wPg0KPHA+WW91IGNhbiBzcGVjaWZ5IGFzIG1hbnkgb2YgdGhlc2UgYXMgeW91IGxpa2UsIGp1c3QgZ2l2ZSBlYWNoIG9uZSB0aGUgc2FtZSBjbGFzcy4gQW5kIGRvbid0IG5lc3QgdGhlbS48L3A+DQoNCjxoMyBpZD0id3JhcHRhZyI+PGNvZGU+d3JhcHRhZzwvY29kZT48L2gzPg0KPHA+RXZlcnkgcXVvdGUgcHVsbGVkIGZyb20gdGhlIGRvY3VtZW50IHdpbGwgYmUgcGxhY2VkIGludG8gc2VwYXJhdGUgZWxlbWVudHMsIGVhY2ggd3JhcHBlZCBpbiB0aGlzIHRhZy4gQnkgZGVmYXVsdCBpdCBpcyB0aGUgJmx0O3EmZ3Q7IHRhZyBidXQgeW91IGNhbiBzcGVjaWZ5IGFueXRoaW5nIHlvdSBsaWtlIGhlcmU6IDxjb2RlPmRpdjwvY29kZT4sIDxjb2RlPnNwYW48L2NvZGU+LCA8Y29kZT5wPC9jb2RlPiwgd2hhdGV2ZXIuIFNlZSA8YSBocmVmPSIjc3RhcnQiPnN0YXJ0PC9hPiBhbmQgPGEgaHJlZj0iI2VuZCI+ZW5kPC9hPiBmb3IgbW9yZS48L3A+DQoNCjxoMyBpZD0iY2xhc3MiPjxjb2RlPmNsYXNzPC9jb2RlPjwvaDM+DQo8cD5FdmVyeSBxdW90ZSBwdWxsZWQgZnJvbSB0aGUgZG9jdW1lbnQgaXMgYXNzaWduZWQgdGhlIHNhbWUgY2xhc3MgZm9yIGVhc3kgc3R5bGluZy4gU3BlY2lmeSBpdCBoZXJlLiBEZWZhdWx0OiA8Y29kZT5wUXVvdGU8L2NvZGU+IChub3RlIHRoZSBjYXBpdGFsIFEhKTwvcD4NCg0KPGgzIGlkPSJjb250YWluZXIiPjxjb2RlPmNvbnRhaW5lcjwvY29kZT48L2gzPg0KPHA+QWxsIHB1bGxxdW90ZXMgYXJlIGluamVjdGVkIGludG8gdGhlIGRvY3VtZW50IGFmdGVyIGl0IGlzIHJlbmRlcmVkIHRvIHRoZSBwYWdlLiBTcGVjaWZ5IGhlcmUgYSBET00gZWxlbWVudCwgaWQgb3IgY2xhc3MgbmFtZSB3aGVyZSB5b3Ugd2FudCB0aGVtIHRvIGdvLiBCeSBkZWZhdWx0IGl0IGlzIDxjb2RlPmJvZHk8L2NvZGU+LjwvcD4NCjxwPklmIHlvdSBhcmUgc3BlY2lmeWluZyBhIHJhdyBodG1sIGVsZW1lbnQsIGp1c3QgZ2l2ZSBpdHMgbmFtZTogZS5nLiA8Y29kZT5jb250YWluZXI9ImJvZHkiPC9jb2RlPi48L3A+DQo8cD5JZiB5b3Ugd2lzaCB0aGUgcXVvdGVzIHRvIGJlIGluc2VydGVkIGludG8gYW4gZWxlbWVudCB3aXRoIGEgc3BlY2lmaWMgaWQsIHVzZSA8Y29kZT5jb250YWluZXI9IiNteUlEIjwvY29kZT4uPC9wPg0KPHA+U2ltaWxhcmx5LCBpZiB5b3Ugd2FudCB0aGUgcXVvdGVzIHRvIGJlIGluc2VydGVkIGludG8gYW4gZWxlbWVudCB3aXRoIGEgc3BlY2lmaWMgY2xhc3MsIHVzZSA8Y29kZT5jb250YWluZXI9Ii5teUNsYXNzIjwvY29kZT4uIFRoZSA8YSBocmVmPSIjaW5zZXJ0bWV0aG9kIj5pbnNlcnRfbWV0aG9kPC9hPiBhdHRyaWJ1dGUgc3BlY2lmaWVzIGV4YWN0bHkgaG93IHRoZSBlbGVtZW50IGlzIGluc2VydGVkLjwvcD4NCjxwPk5vdGUgdGhhdCBpZiB5b3UgY2hvb3NlIGEgY2xhc3MgYW5kIGl0IGV4aXN0cyBpbiBtb3JlIHRoYW4gb25lIHBsYWNlIG9uIHRoZSBwYWdlLCB0aGUgcXVvdGVzIHdpbGwgYmUgZHVwbGljYXRlZC4gVGhpcyAnZmVhdHVyZScgY291bGQgYmUgdXNlZCBhcyBhIHNwZWNpYWwgZWZmZWN0IGJ1dCBpdCdzIHVubGlrZWx5IHRvIGJlIG9mIGFueSBwcmFjdGljYWwgdXNlLjwvcD4NCg0KPGgzIGlkPSJpbnNlcnRtZXRob2QiPjxjb2RlPmluc2VydF9tZXRob2Q8L2NvZGU+PC9oMz4NCjxwPk9uY2UgeW91IGhhdmUgY2hvc2VuIGFuIGVsZW1lbnQgdG8gY29udGFpbiB5b3VyIHF1b3RlcywgeW91IGNhbiBzcGVjaWZ5IGhvdyB5b3Ugd2FudCB0aGVtIGluamVjdGVkIGludG8gdGhhdCBlbGVtZW50LiBUaGUgZGVmYXVsdCBpcyA8Y29kZT5hcHBlbmQ8L2NvZGU+IHRvIGFkZCB0aGUgcXVvdGVzIHRvIHRoZSBlbmQgb2Ygd2hhdGV2ZXIgaXMgYWxyZWFkeSB0aGVyZS48L3A+DQo8aDQ+T3B0aW9uczwvaDQ+DQo8dWw+DQo8bGk+PGNvZGU+YXBwZW5kPC9jb2RlPjxicj4NCnRoZSBkZWZhdWx0OiBpbnNlcnRzIHRoZSBxdW90ZXMgYWZ0ZXIgd2hhdGV2ZXIgaXMgYWxyZWFkeSBpbnNpZGUgdGhlIGVsZW1lbnQ8L2xpPg0KPGxpPjxjb2RlPnByZXBlbmQ8L2NvZGU+PGJyPg0KaW5zZXJ0cyB0aGUgcXVvdGVzIGJlZm9yZSB3aGF0ZXZlciBpcyBhbHJlYWR5IGluc2lkZSB0aGUgZWxlbWVudDwvbGk+DQo8bGk+PGNvZGU+YWZ0ZXI8L2NvZGU+PGJyPg0KYWRkcyB0aGUgcXVvdGVzIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBjaG9zZW4gZWxlbWVudDwvbGk+DQo8bGk+PGNvZGU+YmVmb3JlPC9jb2RlPjxicj4NCnB1dHMgdGhlIHF1b3RlcyBpbW1lZGlhdGVseSBpbiBmcm9udCBvZiB0aGUgY2hvc2VuIGVsZW1lbnQ8L2xpPg0KPGxpPjxjb2RlPnJlcGxhY2VXaXRoPC9jb2RlPjxicj4NCnJlcGxhY2VzIHRoZSBnaXZlbiBlbGVtZW50IGVudGlyZWx5IGJ5IHRoZSBxdW90ZXMuIFRoaXMgbWF5IGhhdmUgb2RkIHJlc3VsdHMgaWYgeW91IGhhdmUgZWxlY3RlZCB0byBkaXNwbGF5IG1vcmUgdGhhbiBvbmUgcXVvdGUuIFNlZSA8YSBocmVmPSIjbGltaXQiPmxpbWl0PC9hPjwvbGk+DQo8L3VsPg0KDQo8aDMgaWQ9ImxpbWl0Ij48Y29kZT5saW1pdDwvY29kZT48L2gzPg0KPHA+U3BlY2lmeSB0aGUgbWF4aW11bSBudW1iZXIgb2YgcXVvdGVzIHlvdSB3aXNoIHRvIGhhdmUgcmVuZGVyZWQgdG8gdGhlIHBhZ2UuIEJ5IGRlZmF1bHQgaXQgaXMgZW1wdHkgKG9yICIwIikgd2hpY2ggbWVhbnMgImFsbCBvZiB0aGVtIi48L3A+DQoNCjxoMyBpZD0icmFuZG9tIj48Y29kZT5yYW5kb208L2NvZGU+PC9oMz4NCjxwPlNldCB0aGlzIG9uIHRvIHJhbmRvbWx5IHBpY2sgPGEgaHJlZj0iI2xpbWl0Ij5saW1pdDwvYT4gcXVvdGVzIGZyb20gdGhlIHBhZ2UgYW5kIGRpc3BsYXkgdGhlbS48L3A+DQo8aDQ+T3B0aW9uczwvaDQ+DQo8dWw+DQo8bGk+PGNvZGU+MDwvY29kZT48YnI+DQp0aGUgZGVmYXVsdDogb2ZmLCBpLmUuIHBpY2sgdGhlIHF1b3RlcyBvZmYgdGhlIHBhZ2UgaW4gdGhlIG9yZGVyIHRoZXkgYXBwZWFyPC9saT4NCjxsaT48Y29kZT4xPC9jb2RlPjxicj4NCm9uOiBwaWNrIHJhbmRvbSBxdW90ZXMgZnJvbSB0aGUgcGFnZSBhbmQgZGlzcGxheSB0aGVtLiBUaGUgbnVtYmVyIG9mIHF1b3RlcyBjaG9zZW4gaXMgZ292ZXJuZWQgYnkgdGhlIGxpbWl0IG9wdGlvbjwvbGk+DQo8L3VsPg0KDQo8aDMgaWQ9ImhpZGVvcmlnIj48Y29kZT5oaWRlX29yaWdpbmFsczwvY29kZT48L2gzPg0KPHA+U2V0IHRoaXMgdG8gcmVtb3ZlIHRoZSBvcmlnaW5hbCBxdW90ZXMgZnJvbSB0aGUgc291cmNlIGRvY3VtZW50IGFuZCBvbmx5IGxlYXZlIHRoZSBwdWxscXVvdGVzIHRoZW1zZWx2ZXMuIEl0IGhhcyBhIGZldyBsZXZlbHMgb2Ygc2V2ZXJpdHkuPC9wPg0KPGg0Pk9wdGlvbnM8L2g0Pg0KPHVsPg0KPGxpPjxjb2RlPjA8L2NvZGU+PGJyPg0KdGhlIGRlZmF1bHQ6IG9yaWdpbmFsIHF1b3RlcyBhcmUgZGlzcGxheWVkIGluIGNvbnRleHQ8L2xpPg0KPGxpPjxjb2RlPjE8L2NvZGU+PGJyPg0Kb3JpZ2luYWwgcXVvdGVzIGFyZSByZW1vdmVkIGZyb20gdGhlIGRvY3VtZW50IGJvZHksIGxlYXZpbmcganVzdCB0aGUgcHVsbHF1b3RlcyBiZWhpbmQsIGJ1dCA8ZW0+b25seTwvZW0+IGZvciB0aG9zZSBxdW90ZXMgdGhhdCBhcmUgYWN0dWFsbHkgdXNlZDwvbGk+DQo8bGk+PGNvZGU+MjwvY29kZT48YnI+DQphbGwgb3JpZ2luYWwgcXVvdGVzIGFyZSByZW1vdmVkIGZyb20gdGhlIGRvY3VtZW50IGJvZHksIGlycmVzcGVjdGl2ZSBvZiB3aGV0aGVyIHRoZSBxdW90ZSB3YXMgdXNlZC4gTm90ZSB0aGF0IGluIHRoZSBsYXR0ZXIgdHdvIGNhc2VzIHRoZSB3aG9sZSBxdW90ZSBpcyByZW1vdmVkLCBpcnJlc3BlY3RpdmUgb2YgYW55IHdvcmRzIDxhIGhyZWY9IiNjaG9wcGVyIj5jaG9wcGVkIG91dDwvYT4uPC9saT4NCjwvdWw+DQoNCjxwPlVzaW5nIDxjb2RlPmhpZGVfb3JpZ2luYWxzPSIyIjwvY29kZT4gbWlnaHQgYmUgdXNlZnVsIGZvciBhIHNpbXBsZSAicXVvdGUgb2YgdGhlIGRheSIgd2hlcmUgeW91IGNhbiBsb2FkIGFsbCB0aGUgcXVvdGVzIG9udG8gdGhlIHBhZ2UgYW5kIGhhdmUgdGhlIHBsdWdpbiBjaG9vc2Ugb25lIHJhbmRvbWx5LjwvcD4NCg0KPGgzIGlkPSJjaG9wcGVyIj48Y29kZT5jaG9wcGVyPC9jb2RlPjwvaDM+DQo8cD5Tb21ldGltZXMgcXVvdGVzIGFyZSB0b28gbG9uZyB0byBtYWtlIGludG8gcHVsbHF1b3RlcyBhbmQgYWJyaWRnZWQgdmVyc2lvbnMgd29yayBiZXR0ZXIuIFRoaXMgb3B0aW9ucyBzcGVjaWZpZXMgYSBjaGFyYWN0ZXIgc2VxdWVuY2UgdG8gYWxsb3cgd29yZHMgdG8gYmUgb21pdHRlZCBmcm9tIHF1b3RlczsgYW55IHdvcmRzIGJldHdlZW4gcGFpcnMgb2YgY2hhcmFjdGVyIHNlcXVlbmNlcyBkZWZpbmVkIGJ5IHRoZSA8Y29kZT5jaG9wcGVyPC9jb2RlPiBhdHRyaWJ1dGUgd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIHF1b3RlLiBUaGUgZGVmYXVsdCBjaGFyYWN0ZXIgc2VxdWVuY2UgaXMgPGNvZGU+fn48L2NvZGU+ICh0d28gdGlsZGVzKS48L3A+DQo8cD5UaGUgbWlzc2luZyB0ZXh0IGlzIHJlcGxhY2VkIHdpdGggdGhlIGNoYXJhY3RlciBzZXF1ZW5jZSBkZWZpbmVkIGJ5IDxhIGhyZWY9IiNvbWlzc2lvbnMiPm9taXNzaW9uczwvYT4uPC9wPg0KPHA+Rm9yIGV4YW1wbGUsIHNwZWNpZnlpbmcgdGhlIHNlbnRlbmNlOg0KDQo8YmxvY2txdW90ZT48cD5JIGNhbm5vdCBoZWxwIGl0fn47IHJlYXNvbiBoYXMgbm90aGluZyB0byBkbyB3aXRoIGl0OyB+fkkgbG92ZSBoZXIgYWdhaW5zdCByZWFzb24uPC9wPjwvYmxvY2txdW90ZT4NCg0KPHA+V291bGQgcmVuZGVyIHRoaXMgdG8gdGhlIHBhZ2U6PC9wPg0KDQo8cHJlPiZsdDtxIGNsYXNzPSJwUXVvdGUiJmd0O0kgY2Fubm90IGhlbHAgaXQgJmhlbGxpcDsgSSBsb3ZlIGhlcg0KICAgICBhZ2FpbnN0IHJlYXNvbiZsdDsvcSZndDs8L3ByZT4NCg0KPHA+WW91IGNhbiBzcGVjaWZ5IGFzIG1hbnkgcGFpcnMgb2YgY2hhcmFjdGVycyB3aXRoaW4gYSBwdWxscXVvdGUgYXMgeW91IGxpa2UgYW5kIHRoZSB0ZXh0IGJldHdlZW4gZWFjaCBzZXQgd2lsbCBiZSBvbWl0dGVkLiBJZiB5b3UgZG8gbm90IGxpa2UgdGhlIGNoYXJhY3RlciBzZXF1ZW5jZSBvciBhcmUgdXNpbmcgdGhhdCBwYXJ0aWN1bGFyIHNlcXVlbmNlIHdpdGhpbiB5b3VyIGJvZHkgdGV4dCwgY2hhbmdlIGl0IHRvIGFueXRoaW5nIHlvdSBsaWtlIHdpdGggdGhpcyBvcHRpb24uIE9uY2UgZWFjaCBxdW90ZSBoYXMgYmVlbiBnZW5lcmF0ZWQsIHRoZSBjaGFyYWN0ZXIgc2VxdWVuY2UgaXMgcmVtb3ZlZCBmcm9tIHRoZSBkb2N1bWVudCBib2R5IHNvIGl0IGRvZXNuJ3QgY2x1dHRlciB1cCB5b3VyIGJlYXV0aWZ1bCBwcm9zZSE8L3A+DQoNCjxoMyBpZD0ib21pc3Npb25zIj48Y29kZT5vbWlzc2lvbnM8L2NvZGU+PC9oMz4NCjxwPkFzIHNob3duIGluIHRoZSA8YSBocmVmPSIjY2hvcHBlciI+ZXhhbXBsZSBmb3IgdGhlIGNob3BwZXIgb3B0aW9uPC9hPiwgb21pdHRlZCBjaGFyYWN0ZXJzIGFyZSByZXBsYWNlZCB3aXRoIHdoYXRldmVyIGNoYXJhY3RlciBlbnRpdHkgb3Igc2VxdWVuY2UgaXMgZGVmaW5lZCBpbiB0aGlzIGF0dHJpYnV0ZS4gQnkgZGVmYXVsdCBpdCBpcyB0aGUgZWxsaXBzaXMgKCZhbXA7aGVsbGlwOyBvciAnJmhlbGxpcDsnKS48L3A+DQo8cD5BbG9uZyB3aXRoIGEgZmV3IG9mIHRoZSBvdGhlciBhdHRyaWJ1dGVzLCB0aGlzIG9uZSBpcyBNdWx0aS1MaW5ndWFsIFB1Ymxpc2hpbmcgcGFjayAoTUxQKSBhd2FyZSBzbyB5b3UgY2FuIHNwZWNpZnkgYSBkaWZmZXJlbnQgY2hhcmFjdGVyIHNlcXVlbmNlIHBlciBsYW5ndWFnZS48L3A+DQoNCjxoMyBpZD0ic3RhcnQiPjxjb2RlPnN0YXJ0PC9jb2RlPjwvaDM+DQo8cD5UaGUgY2hhcmFjdGVyIHNlcXVlbmNlIHRvIGFkZCB0byB0aGUgc3RhcnQgb2YgZXZlcnkgcXVvdGUuIEJ5IGRlZmF1bHQgdGhpcyBpcyBlbXB0eSBiZWNhdXNlIGdvb2QgYnJvd3NlcnMgcmVuZGVyIHRoZSBIVE1MIDxjb2RlPnE8L2NvZGU+IGVsZW1lbnQgd2l0aCBsYW5ndWFnZS1zcGVjaWZpYyBxdW90ZSBjaGFyYWN0ZXJzIGF1dG9tYXRpY2FsbHkuIFNob3VsZCB5b3Ugd2lzaCB0byA8YSBocmVmPSIjd3JhcHRhZyI+Y2hhbmdlIHRoZSB3cmFwdGFnPC9hPiBob3dldmVyLCA8Y29kZT5zdGFydDwvY29kZT4gYW5kIGl0cyBjb3JyZXNwb25kaW5nIGZyaWVuZCA8YSBocmVmPSIjZW5kIj5lbmQ8L2E+IG1heSBiZSB1c2VmdWwuIE5vdGUgdGhhdCBicm93c2VycyB0aGF0IHN1cHBvcnQgdGhlIENTUzIgPGNvZGU+YmVmb3JlPC9jb2RlPiBhbmQgPGNvZGU+YWZ0ZXI8L2NvZGU+IHBzZXVkby1lbGVtZW50cyBjYW4gYWxzbyBhZGQgY2hhcmFjdGVycyB2aWEgdGhlIDxjb2RlPmNvbnRlbnQ6PC9jb2RlPiBwcm9wZXJ0eS4gVGhpcyBvcHRpb24gaXMgTUxQLWF3YXJlLjwvcD4NCg0KPGgzIGlkPSJlbmQiPjxjb2RlPmVuZDwvY29kZT48L2gzPg0KPHA+Q29tcGxlbWVudHMgPGEgaHJlZj0iI3N0YXJ0Ij5zdGFydDwvYT4gYW5kIHNwZWNpZmllcyB0aGUgY2hhcmFjdGVyIHNlcXVlbmNlIHRvIGFkZCB0byB0aGUgZW5kIG9mIGV2ZXJ5IHF1b3RlLiBCeSBkZWZhdWx0IHRoaXMgaXMgZW1wdHkgYmVjYXVzZSBnb29kIGJyb3dzZXJzIHJlbmRlciB0aGUgSFRNTCA8Y29kZT5xPC9jb2RlPiBlbGVtZW50IHdpdGggbGFuZ3VhZ2Utc3BlY2lmaWMgcXVvdGUgY2hhcmFjdGVycyBhdXRvbWF0aWNhbGx5LiBUaGlzIG9wdGlvbiBpcyBNTFAtYXdhcmUuPC9wPg0KDQo8aDMgaWQ9InBvcyI+PGNvZGU+cG9zPC9jb2RlPjwvaDM+DQo8cD5BbHRob3VnaCBwb3NpdGlvbmluZyBjYW4gYmUgZG9uZSBlbnRpcmVseSBpbiBDU1MgKGFuZCBwcm9iYWJseSBzaG91bGQpLCB0aGVyZSBhcmUgdGltZXMgd2hlbiBpdCBpcyB1c2VmdWwgdG8gc3BlY2lmeSBwb3NpdGlvbnMgZnJvbSB0aGUgcGx1Z2luLiBPbmUgc3VjaCBjYXNlIGlzIHdoZXJlIHlvdSB3YW50IHRoZSBxdW90ZSB0byBiZSBwdWxsZWQgb3V0IGFsb25nc2lkZSB0aGUgcGxhY2UgdGhhdCB0aGUgZnVsbCBxdW90ZSBhcHBlYXJzIGluIGNvbnRleHQuIFRoZSBwb3MgYXR0cmlidXRlIGhlbHBzIHlvdSBhY2hpZXZlIHRoaXMuPC9wPg0KPHA+SXQgdGFrZXMgYSBwYWlyIG9mIGFyZ3VtZW50cywgc2VwYXJhdGVkIGJ5IGEgY29tbWEuIElmIHRoZSBvcHRpb24gaXMgb21pdHRlZCBvciBtYWxmb3JtZWQsIGl0IGlzIGRpc2FibGVkIGFuZCBwb3NpdGlvbmluZyBpcyB0aGVyZWZvcmUgY29tcGxldGVseSB1bmRlciBDU1MgY29udHJvbC4gT3RoZXJ3aXNlLCBzcGVjaWZ5IHggYW5kIHkgY28tb3JkaW5hdGVzIG9mIHdoZXJlIHlvdSB3aXNoIHRoZSBwdWxscXVvdGVzIHRvIGFwcGVhci4gVGhpcyBvcHRpb24gaXMgYmVzdCBleHBsYWluZWQgYnkgZXhhbXBsZTo8L3A+DQo8cD4obm90ZTogaXQgaXMgYXNzdW1lZCB0aGF0IHRoZSBwUXVvdGUgZWxlbWVudCBpcyBhc3NpZ25lZCA8Y29kZT5wb3NpdGlvbjphYnNvbHV0ZTs8L2NvZGU+IHZpYSBDU1MuIFNlZSA8YSBocmVmPSIjc3R5bGluZyI+c3R5bGluZzwvYT4gZm9yIGV4YW1wbGVzKTwvcD4NCg0KPHRhYmxlIGlkPSJlZ3RhYiI+DQo8dHI+PHRoPnBvcz08L3RoPjx0aD5yZXN1bHQ8L3RoPjx0aD5yZW1hcmtzPC90aD48L3RyPg0KPHRyPjx0ZD4iNTAsIDIwMCI8L3RkPjx0ZD5hbGwgcXVvdGVzIGFwcGVhciBhdCA1MHB4IGZyb20gdGhlIGxlZnQgZWRnZSBhbmQgMjAwcHggZnJvbSB0aGUgdG9wIGVkZ2Ugb2YgdGhlIDxhIGhyZWY9IiNjb250YWluZXIiPmNvbnRhaW5lcjwvYT48L3RkPjx0ZD53aXRob3V0IGFueSB1bml0cyBzcGVjaWZpZWQsICdweCcgaXMgYXNzdW1lZDwvdGQ+PC90cj4NCjx0cj48dGQ+IjEwJSwgMTUwIjwvdGQ+PHRkPnF1b3RlcyBhcHBlYXIgMTAlIGZyb20gdGhlIGxlZnQgZWRnZSBhbmQgMTUwcHggZnJvbSB0aGUgdG9wIGVkZ2U8L3RkPjx0ZD5SZXNpemluZyB0aGUgaG9yaXpvbnRhbCBheGlzIG9mIHRoZSBicm93c2VyIHdpbmRvdyBtb3ZlcyB0aGUgcXVvdGVzPC90ZD48L3RyPg0KPHRyPjx0ZD4iNDBwdCwgeSI8L3RkPjx0ZD5xdW90ZXMgYXBwZWFyIDQwcHRzIGZyb20gdGhlIGxlZnQgZWRnZSBhbmQgYXQgdGhlIHNhbWUgdmVydGljYWwgcG9zaXRpb24gYXMgdGhlIHBsYWNlIHRoZSBvcmlnaW5hbCBxdW90ZSBhcHBlYXJzPC90ZD48dGQ+c29tZSB2YXJpYXRpb24gaW4geSBwb3NpdGlvbiBzb21ldGltZXMgb2NjdXJzIGRlcGVuZGluZyBvbiB0aGUgY29udGFpbmluZyBlbGVtZW50PC90ZD48L3RyPg0KPHRyPjx0ZD4ieC04MCwgeSs1MCI8L3RkPjx0ZD5xdW90ZXMgYXBwZWFyIDgwcHggdG8gdGhlIGxlZnQgb2YgdGhlIG9yaWdpbmFsIHF1b3RlIGFuZCA1MHB4IGJlbG93IGl0PC90ZD48dGQ+eW91IGNhbiB1c2UgKyAtICogb3IgLyB0byBwZXJmb3JtIHNpbXBsZSBtYXRocyBvbiB4IGFuZCB5IGNvLW9yZGluYXRlczwvdGQ+PC90cj4NCjwvdGFibGU+DQoNCjxwPllvdSBjYW4gdXNlIGFueSB2YWxpZCBDU1MgdW5pdCBvZiBsZW5ndGggbWVhc3VyZW1lbnQsIHN1Y2ggYXMgJSwgcHgsIGVtLCBleCwgcHQsIGNtIGFuZCBzbyBvbi48L3A+DQoNCjxoMj48YSBpZD0iZXhhbXBsZXMiPjwvYT5FeGFtcGxlczwvaDI+DQo8cD48L3A+DQoNCjxoMyBpZD0iZWcxIj48Y29kZT5FeGFtcGxlIDE8L2NvZGU+PC9oMz4NCjxwcmU+Jmx0O3R4cDpzbWRfcHVsbHF1b3RlIC8mZ3Q7PC9wcmU+DQoNCjxwPlZhbmlsbGEgdXNhZ2U6IGp1c3QgcHV0cyB0aGUgamF2YXNjcmlwdCBvbiB0aGUgcGFnZSwgc2NhbnMgZm9yIGFsbCBjbGFzcyBkZWZpbml0aW9ucyBsYWJlbGxlZCAncHEnIGFuZCBjcmVhdGVzIHB1bGxxdW90ZXMgaW4gSFRNTCAncScgdGFncy4gU3R5bGUgdG8gdGFzdGUuPC9wPg0KDQo8aDMgaWQ9ImVnMiI+PGNvZGU+RXhhbXBsZSAyPC9jb2RlPjwvaDM+DQo8cHJlPiZsdDt0eHA6c21kX3B1bGxxdW90ZSB3cmFwdGFnPSJkaXYiIHN0YXJ0PSImYW1wO2xhcXVvOyINCiAgICAgZW5kPSImYW1wO3JhcXVvOyIgY2xhc3M9Im15UXVvdGVzIiAvJmd0OzwvcHJlPg0KDQo8cD5XcmFwcyBlYWNoIHF1b3RlIGluIGEgPGNvZGU+Jmx0O2RpdiZndDs8L2NvZGU+IHRhZywgcHJlcGVuZHMgZWFjaCBxdW90ZSB3aXRoIGEgbGVmdC1hbmdsZSBxdW90ZSBhbmQgYXBwZW5kcyBlYWNoIHF1b3RlIHdpdGggYSByaWdodC1hbmdsZSBxdW90ZSBzeW1ib2wuIFNldHMgdGhlIGNsYXNzIGF0dHJpYnV0ZSBvZiB0aGUgZGl2IHRhZ3MgdG8gPGNvZGU+bXlRdW90ZXM8L2NvZGU+PC9wPg0KDQo8aDMgaWQ9ImVnMyI+PGNvZGU+RXhhbXBsZSAzPC9jb2RlPjwvaDM+DQo8cHJlPiZsdDt0eHA6c21kX3B1bGxxdW90ZSB3cmFwdGFnPSJwIiBzZWFyY2hfY2xhc3M9IkFRdW90ZSINCiAgICAgY2hvcHBlcj0iQERMTUAiIG9taXNzaW9ucz0iLi4uLi4iIC8mZ3Q7PC9wcmU+DQoNCjxwPlNlYXJjaGVzIHRoZSBkb2N1bWVudCBmb3IgZWxlbWVudHMgd2l0aCBhIGNsYXNzIG9mIDxjb2RlPkFRdW90ZTwvY29kZT4gYW5kIG9taXRzIHdvcmRzIGJldHdlZW4gcGFpcnMgb2YgPGNvZGU+QERMTUA8L2NvZGU+LiBFYWNoIG9taXR0ZWQgc2V0IG9mIHdvcmRzIGlzIHJlcGxhY2VkIHdpdGggYSBzZXJpZXMgb2YgZG90cy48L3A+DQoNCjxibG9ja3F1b3RlPjxwPiZsdDtzcGFuIGNsYXNzPSJBUXVvdGUiJmd0O0kgY2Fubm90IGhlbHAgaXRARExNQDsgcmVhc29uIGhhcyBub3RoaW5nIHRvIGRvIHdpdGggaXQ7IEBETE1ASSBsb3ZlIGhlciBhZ2FpbnN0IHJlYXNvbi4mbHQ7L3NwYW4mZ3Q7PC9wPjwvYmxvY2txdW90ZT4NCg0KPHA+Z2VuZXJhdGVzIGEgcHVsbHF1b3RlIGxpa2UgdGhpczo8L3A+DQoNCjxibG9ja3F1b3RlPjxwPiZsdDtwIGNsYXNzPSJwUXVvdGUiJmd0O0kgY2Fubm90IGhlbHAgaXQuLi4uLiBJIGxvdmUgaGVyIGFnYWluc3QgcmVhc29uLiZsdDsvcCZndDs8L3A+PC9ibG9ja3F1b3RlPg0KDQo8aDMgaWQ9ImVnNCI+PGNvZGU+RXhhbXBsZSA0PC9jb2RlPjwvaDM+DQo8cHJlPiZsdDt0eHA6c21kX3B1bGxxdW90ZSBqcXVlcnk9IiIganFfY2xhc2h2YXI9ImpRdWVyeSINCiAgICAgY29udGFpbmVyPSIjcXVvdGVIb2xkZXIiIGluc2VydF9tZXRob2Q9InByZXBlbmQiIC8mZ3Q7PC9wcmU+DQoNCjxwPlRlbGxzIHRoZSBwbHVnaW4gbm90IHRvIGxvYWQgdGhlIGpxdWVyeSBsaWJyYXJ5ICh0aGUgYXNzdW1wdGlvbiBiZWluZyB0aGF0IGl0IGlzIGFscmVhZHkgbG9hZGVkKSBhbmQgdG8gdXNlIHRoZSBub0NvbmZsaWN0KCkgdmFyaWFibGUgbmFtZSAnalF1ZXJ5JyAoaWYgaXQgaGFzIG5vdCBhbHJlYWR5IGJlZW4gc2V0IHVwIGl0IHdpbGwgYmUgYXNzaWduZWQpLiBUaGUgcXVvdGVzIGFyZSB0aGVuIHRvbGQgdG8gYXR0YWNoIHRoZW1zZWx2ZXMgdG8gdGhlIGVsZW1lbnQgd2l0aCBhbiBpZCBvZiA8Y29kZT4jcXVvdGVIb2xkZXI8L2NvZGU+IGFuZCB0aGV5IGFyZSB0byBiZSBwbGFjZWQgaW1tZWRpYXRlbHkgaW4gZnJvbnQgb2YgYW55IGNvbnRlbnQgdGhhdCBtYXkgYWxyZWFkeSBiZSBpbiB0aGUgZWxlbWVudC48L3A+DQoNCjxoMyBpZD0iZWc1Ij48Y29kZT5FeGFtcGxlIDU8L2NvZGU+PC9oMz4NCjxwcmU+Jmx0O3R4cDpzbWRfcHVsbHF1b3RlIGxpbWl0PSIxIiByYW5kb209IjEiIHBvcz0iNjAsIDIzMCIgLyZndDs8L3ByZT4NCg0KPHA+T25seSBzaG93cyAxIHF1b3RlIG9uIHRoZSBwYWdlICh0aGUgbGltaXQgYXR0cmlidXRlKSwgdGVsbGluZyB0aGUgcGx1Z2luIHRvIGNob29zZSBhIHJhbmRvbSBxdW90ZSBmcm9tIHRob3NlIGRlZmluZWQgaW4gdGhlIHNvdXJjZSBhbmQgcGxhY2UgaXQgYXQgYSBwb3NpdGlvbiA2MHB4IGZyb20gdGhlIGxlZnQgZWRnZSBhbmQgMjMwcHggZnJvbSB0aGUgdG9wIGVkZ2Ugb2YgdGhlIGNvbnRhaW5pbmcgZWxlbWVudCAodGhlIGRlZmF1bHQgPGNvZGU+Jmx0O2JvZHkmZ3Q7PC9jb2RlPiBpbiB0aGlzIGNhc2UpLjwvcD4NCjxwPlVzaW5nIDxjb2RlPmxpbWl0PSIyIiByYW5kb209IjEiPC9jb2RlPiBpbnN0ZWFkIHdvdWxkIHB1bGwgdHdvIHJhbmRvbSBxdW90ZXMgZnJvbSB0aGUgdGV4dCBhbmQgcHV0IHRoZW0gaW4gZXhhY3RseSB0aGUgc2FtZSBzcG90IG9uIHRoZSBwYWdlLiBTZWUgPGEgaHJlZj0iI3N0eWxpbmciPnN0eWxpbmc8L2E+IGZvciB3YXlzIHRvIHNlcGFyYXRlIHRoZW0uPC9wPg0KPHA+VXNpbmcgPGNvZGU+bGltaXQ9IjIiIHJhbmRvbT0iMCI8L2NvZGU+IChvciBvbWl0dGluZyByYW5kb20pIHdvdWxkIHB1bGwgdGhlIGZpcnN0IHR3byBxdW90ZXMgZnJvbSB0aGUgdGV4dCBhbmQgcHV0IHRoZW0gaW4gZXhhY3RseSB0aGUgc2FtZSBzcG90IG9uIHRoZSBwYWdlLjwvcD4NCg0KPGgyPjxhIGlkPSJzdHlsaW5nIj48L2E+U3R5bGluZzwvaDI+DQo8cD5UbyBzdHlsZSBxdW90ZXMgd2hlbiB1c2luZyB0aGUgPGEgaHJlZj0iI3BvcyI+cG9zPC9hPiBhdHRyaWJ1dGUgeW91IGNhbiB1c2Ugc29tZXRoaW5nIGxpa2UgdGhpczo8L3A+DQoNCjxwcmU+DQoucFF1b3RlIHsNCglwb3NpdGlvbjphYnNvbHV0ZTsNCgltYXJnaW46MWVtOw0KCXBhZGRpbmc6LjVlbTsNCglmb250LXNpemU6MS4xZW07DQoJdGV4dC1hbGlnbjpyaWdodDsNCglmb250LXN0eWxlOml0YWxpYzsNCgljb2xvcjojMjIyOw0KCWxpbmUtaGVpZ2h0OjEuMzU7DQoJd2lkdGg6MTIwcHg7DQp9DQo8L3ByZT4NCg0KPHA+QWRkIDxjb2RlPnRvcDo8L2NvZGU+IGFuZCA8Y29kZT5sZWZ0OjwvY29kZT4gZGVmaW5pdGlvbnMgaWYgeW91IHdhbnQgdG8gZml4IHRoZSBsb2NhdGlvbiBhbmQgb25seSBpbnRlbmQgaGF2aW5nIDEgcXVvdGUgcGVyIHBhZ2UsIG9yIHByZWZlciBub3QgdG8gdXNlIHRoZSA8Y29kZT5wb3M8L2NvZGU+IGF0dHJpYnV0ZS48L3A+DQoNCjxwPkZvciBtdWx0aXBsZSwgZml4ZWQtcG9zaXRpb24gcXVvdGVzIHlvdSBjb3VsZCB1c2UgdGhpcyB0eXBlIG9mIHN0eWxpbmc6PC9wPg0KPHByZT4NCi5wUXVvdGUgew0KCXBvc2l0aW9uOmFic29sdXRlOw0KCXRvcDo1MHB4Ow0KCWxlZnQ6MTAwcHg7DQp9DQoucFF1b3RlICsgLnBRdW90ZSB7DQoJdG9wOjQ1MHB4Ow0KCXJpZ2h0OjMwcHg7DQp9DQo8L3ByZT4iO3M6NDoiY29kZSI7czo1MjEyOiIvLyB2MC4xIEluaXRpYWwgcmVsZWFzZQ0KDQpmdW5jdGlvbiBzbWRfcHVsbHF1b3RlKCRhdHRzKSB7DQoJcmVxdWlyZV9wbHVnaW4oJ3NtZF9saWInKTsNCg0KCS8vIE1MUCBzdXBwb3J0DQoJZ2xvYmFsICRzbWRfcHF1b0xhbmc7DQoJJHNtZF9wcXVvX3N0ciA9IGFycmF5KA0KCQkncHFfc2VhcmNoX2NsYXNzJyA9PiAncHEnLA0KCQkncHFfY2xhc3MnID0+ICdwUXVvdGUnLA0KCQkncHFfc3RhcnQnID0+ICcnLA0KCQkncHFfZW5kJyA9PiAnJywNCgkJJ3BxX29taXQnID0+ICcmaGVsbGlwOycsDQoJKTsNCgkkc21kX3BxdW9MYW5nID0gbmV3IHNtZF9NTFAoJ3NtZF9wdWxscXVvdGUnLCAnc21kX3BxdW8nLCAkc21kX3BxdW9fc3RyKTsNCg0KCS8vIFByb2Nlc3MgdGhlIGFyZ3MNCgkkaW5zZXJ0TWV0aG9kcyA9IGFycmF5KCJhcHBlbmQiLCAicHJlcGVuZCIsICJhZnRlciIsICJiZWZvcmUiLCAicmVwbGFjZVdpdGgiKTsNCglleHRyYWN0KGxBdHRzKGFycmF5KA0KCQknanF1ZXJ5JwkJCQk9PiAnL3RleHRwYXR0ZXJuL2pxdWVyeS5qcycsDQoJCSdqcV9jbGFzaHZhcicJCT0+ICdqcScsDQoJCSdjb250YWluZXInCQkJPT4gJ2JvZHknLA0KCQknaW5zZXJ0X21ldGhvZCcJPT4gJGluc2VydE1ldGhvZHNbMF0sDQoJCSdzZWFyY2hfY2xhc3MnCQk9PiAkc21kX3BxdW9MYW5nLT5nVHh0KCJwcV9zZWFyY2hfY2xhc3MiKSwNCgkJJ2NsYXNzJwkJCQk9PiAkc21kX3BxdW9MYW5nLT5nVHh0KCJwcV9jbGFzcyIpLA0KCQknd3JhcHRhZycJCQk9PiAncScsDQoJCSdsaW1pdCcJCQkJPT4gJzAnLA0KCQkncmFuZG9tJwkJCQk9PiAnMCcsDQoJCSdjaG9wcGVyJwkJCT0+ICd+ficsDQoJCSdzdGFydCcJCQkJPT4gJHNtZF9wcXVvTGFuZy0+Z1R4dCgicHFfc3RhcnQiKSwNCgkJJ2VuZCcJCQkJCT0+ICRzbWRfcHF1b0xhbmctPmdUeHQoInBxX2VuZCIpLA0KCQknb21pc3Npb25zJwkJCT0+ICRzbWRfcHF1b0xhbmctPmdUeHQoInBxX29taXQiKSwNCgkJJ2hpZGVfb3JpZ2luYWxzJwk9PiAnMCcsDQoJCSdwb3MnCQkJCQk9PiAnJywNCgkpLCAkYXR0cykpOw0KDQoJJHJldCA9ICIiOw0KCWlmICghZW1wdHkoJGpxdWVyeSkpIHsNCgkJJHJldCAuPSAnPHNjcmlwdCB0eXBlPSIvdGV4dC9qYXZhc2NyaXB0IiBzcmM9IicuJGpxdWVyeS4nIj48L3NjcmlwdD4nOw0KCX0NCgkkcmV0IC49ICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Jy5uOw0KCSRyZXQgLj0gJzwhLS0nLm47DQoNCglpZiAoIWVtcHR5KCRqcV9jbGFzaHZhcikpIHsNCgkJJHJldCAuPSAnaWYgKHR5cGVvZiAkJy4kanFfY2xhc2h2YXIuJyA9PSBcJ3VuZGVmaW5lZFwnKSB7Jy5uOw0KCQkkcmV0IC49ICcgdmFyICQnLiRqcV9jbGFzaHZhci4nID0galF1ZXJ5Lm5vQ29uZmxpY3QoKTsnLm47DQoJCSRyZXQgLj0gJ30nLm47DQoJfQ0KCSRqcV9jbGFzaHZhciA9ICIkIi4kanFfY2xhc2h2YXI7DQoNCgkvLyBDaGVjayByZWxldmFudCBwYXNzZWQgYXJncyBhcmUgcmVhc29uYWJsZQ0KCSRsaW1pdCA9ICh0cmltKCRsaW1pdCkgPT0gIiIpID8gMCA6ICRsaW1pdDsNCgkkY29udGFpbmVyID0gKHRyaW0oJGNvbnRhaW5lcikgPT0gIiIpID8gImJvZHkiIDogJGNvbnRhaW5lcjsNCgkkaW5zZXJ0X21ldGhvZCA9IChpbl9hcnJheSgkaW5zZXJ0X21ldGhvZCwgJGluc2VydE1ldGhvZHMpKSA/ICRpbnNlcnRfbWV0aG9kIDogJGluc2VydE1ldGhvZHNbMF07DQoNCgkvLyBXcml0ZSB0aGUgamF2YXNjcmlwdCB0byB0aGUgcGFnZS4NCgkvLyBDYWxsYmFjayBmb3IgYXJyYXkuc29ydCgpIHRvIHJhbmRvbWx5IG9yZGVyIHRoZSBhcnJheQ0KCSRyZXQgLj0gJ2Z1bmN0aW9uIHJhbmRPcmRlcigpIHsnLm47DQoJJHJldCAuPSAnIHJldHVybiAoTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpKS0wLjUpOycubjsNCiAJJHJldCAuPSAnfScubjsNCg0KCS8vIENob29zZSBOIG51bWJlcnMgZnJvbSBhIGxpc3Qgb2YgTSAocmFuZ2luZyBmcm9tIDAgLSBNLTEpLg0KCS8vIElmIHR5cCA9ICJybmQiLCBjaG9vc2UgdGhlbSByYW5kb21seTsgaWYgdHlwPSJhbGwiIGdlbmVyYXRlIGEgY29tcGxldGUgcmFuZ2UuDQoJLy8gT3JpZ2luYWwgcmFuZG9tIGFsZ29yaXRobSBieSBEb25hbGQgS251dGguDQoJJHJldCAuPSAnZnVuY3Rpb24gZ2VuTGlzdChNLE4sdHlwKSB7Jy5uOw0KCSRyZXQgLj0gJyBhcnkgPSBbXTsnLm47DQoJJHJldCAuPSAnIGZvciAoaWR4PTA7IGlkeDxNICYmIE4+MDsgKytpZHgpIHsnLm47DQoJJHJldCAuPSAnICBpZiAoKE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSooTS1pZHgpKSk8TiB8fCB0eXAgPT0gImFsbCIpIHsnLm47DQoJJHJldCAuPSAnICAgYXJ5LnB1c2goaWR4KTsnLm47DQoJJHJldCAuPSAnICAgTj1OLTE7Jy5uOw0KCSRyZXQgLj0gJyAgfScubjsNCgkkcmV0IC49ICcgfScubjsNCgkkcmV0IC49ICcgcmV0dXJuKGFyeSk7Jy5uOw0KCSRyZXQgLj0gJ30nLm47DQoNCgkvLyBGaW5kIGVhY2ggcXVvdGUsIGdyYWIgdGhlIHRleHQsIGNob3Agb3V0IGFueSBvbWlzc2lvbnMsIG1ha2UgdGhlIHB1bGxxdW90ZSwNCgkvLyB0aGVuIHJlbW92ZSB0aGUgY2hvcHBlciBzeW1ib2xzIGZyb20gdGhlIG9yaWdpbmFsIHRleHQgb24gdGhlIHBhZ2UNCgkkcmV0IC49ICdmdW5jdGlvbiBzbWRfcHVsbHF1b3RlKCkgeycubjsNCgkkcmV0IC49ICcgdmFyIHNuaXBSZWcgPSAvJy4kY2hvcHBlci4nLis/Jy4kY2hvcHBlci4nL2dpOycubjsNCgkkcmV0IC49ICcgdmFyIGNsZWFSZWcgPSAvJy4kY2hvcHBlci4nL2dpOycubjsNCgkkcmV0IC49ICcgdmFyIG51bVF1b3RlcyA9ICcuICRqcV9jbGFzaHZhci4nKCIuJy4kc2VhcmNoX2NsYXNzLiciKS5sZW5ndGg7Jy5uOw0KCSRyZXQgLj0gJyB2YXIgcXVvdGVzID0gW107Jy5uOw0KCSRyZXQgLj0gJyB2YXIgcXVvdGVDdHIgPSAwOycubjsNCgkkcmV0IC49ICcgdmFyIHF1b3RlUG9zID0gW107Jy5uOw0KCSRyZXQgLj0gJyB2YXIgbGltID0gKCcgLiRsaW1pdC4gJyA+IG51bVF1b3RlcyB8fCAnIC4kbGltaXQuICcgPT0gMCkgPyBudW1RdW90ZXMgOiAnIC4kbGltaXQuICc7Jy5uOw0KCSRyZXQgLj0gKCRyYW5kb209PTApID8gJyBjaG9zZW4gPSBnZW5MaXN0KG51bVF1b3RlcywgbGltLCAiYWxsIik7Jy5uIDogJyBjaG9zZW4gPSBnZW5MaXN0KG51bVF1b3RlcywgbGltLCAicm5kIik7Jy5uOw0KCSRyZXQgLj0gKCRyYW5kb209PTApID8gJycgOiAnIGNob3Nlbi5zb3J0KHJhbmRPcmRlciknLm47DQoJJHJldCAuPSAnICcgLiRqcV9jbGFzaHZhci4gJygiLicuJHNlYXJjaF9jbGFzcy4nIikuZWFjaChmdW5jdGlvbigpIHsnLm47DQoJJHJldCAuPSAnICB2YXIgJHRoaXMgPSAnLiRqcV9jbGFzaHZhci4nKHRoaXMpOycubjsNCgkkcmV0IC49ICcgIHR4dCA9ICR0aGlzLnRleHQoKTsnLm47DQoJJHJldCAuPSAnICByZXAgPSB0eHQucmVwbGFjZShzbmlwUmVnLCAiJy4kb21pc3Npb25zLiciKTsnLm47DQoJJHJldCAuPSAnICBxdW90ZXMucHVzaChyZXApOycubjsNCgkkcmV0IC49ICcgIHF1b3RlUG9zLnB1c2goJHRoaXMub2Zmc2V0KCkpOycubjsNCgkkcmV0IC49ICcgICR0aGlzLnRleHQodHh0LnJlcGxhY2UoY2xlYVJlZywgIiIpKTsnLm47DQoJaWYgKCRoaWRlX29yaWdpbmFscyA9PSAiMSIpIHsNCgkJJHJldCAuPSAnICAoY2hvc2VuLmV4aXN0cyhxdW90ZUN0cikpID8gJHRoaXMuZW1wdHkoKSA6ICIiOycubjsNCgl9IGVsc2UgaWYgKCRoaWRlX29yaWdpbmFscyA9PSAiMiIpIHsNCgkJJHJldCAuPSAnICAkdGhpcy5lbXB0eSgpOycubjsNCgl9DQoJJHJldCAuPSAnICBxdW90ZUN0cisrOycubjsNCgkkcmV0IC49ICcgIH0pOycubjsNCg0KCS8vIEluc2VydCB0aGUgcHVsbHF1b3RlcyBpbnRvIHRoZSBwYWdlIGNvbnRlbnQgaW4gdGhlIGNob3NlbiBvcmRlcg0KCSRyZXQgLj0gJyBmb3IgKHZhciBpZHggPSAwOyBpZHggPCBjaG9zZW4ubGVuZ3RoOyBpZHgrKykgeycubjsNCgkkcmV0IC49ICcgICcgLiRqcV9jbGFzaHZhci4gJygiJy4kY29udGFpbmVyLiciKS4nIC4kaW5zZXJ0X21ldGhvZC4gJyhcJzwnLiR3cmFwdGFnLiAoKCRjbGFzcz09IiIpID8gIiIgOiAnIGNsYXNzPSInLiRjbGFzcy4nIicpIC4gJz4nIC4kc3RhcnQuICdcJytxdW90ZXNbY2hvc2VuW2lkeF1dK1wnJyAuJGVuZC4gJzwvJy4kd3JhcHRhZy4nPlwnKTsnLm47DQoNCgkvLyBDYWxjdWxhdGUgdGhlIHBvc2l0aW9uIGlmIGFwcGxpY2FibGUNCgkkdG9wID0gIiI7DQoJJGxlZnQgPSAiIjsNCgkkdW5pdHMgPSAicHgiOw0KCSRleHByID0gIltlbXxleHxweHxpbnxjbXxtbXxwdHxwY3wlXSI7DQoJJHVleHByID0gIlteZW18ZXh8cHh8aW58Y218bW18cHR8cGN8JV0iOw0KCWlmICgkcG9zICE9ICIiKSB7DQoJCSRwb3NQYXJ0cyA9IGV4cGxvZGUoIiwiLCAkcG9zKTsNCgkJaWYgKGNvdW50KCRwb3NQYXJ0cykgPT0gMikgew0KCQkJJGx1bml0cyA9IHRyaW0oZXJlZ19yZXBsYWNlKCR1ZXhwciwgIiIsICRwb3NQYXJ0c1swXSkpOw0KCQkJJHR1bml0cyA9IHRyaW0oZXJlZ19yZXBsYWNlKCR1ZXhwciwgIiIsICRwb3NQYXJ0c1sxXSkpOw0KCQkJJGxlZnQgPSBzdHJfcmVwbGFjZSgieCIsICJxdW90ZVBvc1tjaG9zZW5baWR4XV0ubGVmdCIsIHRyaW0oZXJlZ19yZXBsYWNlKCRleHByLCAiIiwgJHBvc1BhcnRzWzBdKSkpOw0KCQkJJHRvcCA9IHN0cl9yZXBsYWNlKCJ5IiwgInF1b3RlUG9zW2Nob3NlbltpZHhdXS50b3AiLCB0cmltKGVyZWdfcmVwbGFjZSgkZXhwciwgIiIsICRwb3NQYXJ0c1sxXSkpKTsNCgkJfSBlbHNlIHsNCgkJCSRwb3MgPSAiIjsNCgkJfQ0KCX0NCgkkcmV0IC49ICgkcG9zPT0iIikgPyAiIiA6ICcgICcgLiRqcV9jbGFzaHZhci4gJygiLicgLiRjbGFzcy4gJzplcSgiK2lkeCsiKSIpLmNzcyh7dG9wOiAnLiR0b3AuJysiJy4oKCR0dW5pdHMhPSIiKSA/ICR0dW5pdHMgOiAkdW5pdHMgKS4nIiwgbGVmdDogJy4kbGVmdC4nKyInLigoJGx1bml0cz09IiIpID8gJHVuaXRzIDogJGx1bml0cyApLicifSk7Jy5uOw0KCSRyZXQgLj0gJyB9Jy5uOw0KDQoJJHJldCAuPSAnfScubjsNCg0KCS8vIFJ1biBzbWRfcHVsbHF1b3RlIG9uIERPTSByZWFkeQ0KCSRyZXQgLj0gJGpxX2NsYXNodmFyLicoZnVuY3Rpb24oKSB7Jy5uOw0KCSRyZXQgLj0gJyBzbWRfcHVsbHF1b3RlKCk7Jy5uOw0KCSRyZXQgLj0gJ30pOycubjsNCgkkcmV0IC49ICctLT4nLm47DQoJJHJldCAuPSAnPC9zY3JpcHQ+Jy5uOw0KDQoJcmV0dXJuICRyZXQ7DQp9IjtzOjQ6InR5cGUiO3M6MToiMCI7czozOiJtZDUiO3M6MzI6ImNkM2QzNzg3ZTUyZTIxYzJiOGE2YWQwYTJmMWJiZjc0Ijt9