Received: from localhost (unknown [200.46.204.184]) by postgresql.org (Postfix) with ESMTP id 48B312E3D5C for ; Fri, 11 Jan 2008 17:34:14 -0400 (AST) Received: from postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.204.184]) (amavisd-maia, port 10024) with ESMTP id 23696-06 for ; Fri, 11 Jan 2008 17:34:01 -0400 (AST) Received: from smtp-vbr9.xs4all.nl (smtp-vbr9.xs4all.nl [194.109.24.29]) by postgresql.org (Postfix) with ESMTP id 9DDC52E49A7 for ; Fri, 11 Jan 2008 17:34:04 -0400 (AST) Received: from webmail.xs4all.nl (dovemail15.xs4all.nl [194.109.26.17]) by smtp-vbr9.xs4all.nl (8.13.8/8.13.8) with ESMTP id m0BLY1Xr089228 for ; Fri, 11 Jan 2008 22:34:02 +0100 (CET) (envelope-from er@xs4all.nl) Received: from 156.83.0.77 (SquirrelMail authenticated user er) by webmail.xs4all.nl with HTTP; Fri, 11 Jan 2008 22:34:02 +0100 (CET) Message-ID: <25283.156.83.0.77.1200087242.squirrel@webmail.xs4all.nl> Date: Fri, 11 Jan 2008 22:34:02 +0100 (CET) Subject: Full Text Search examples patch From: "Erik" To: pgsql-docs@postgresql.org User-Agent: SquirrelMail/1.4.11 MIME-Version: 1.0 Content-Type: multipart/mixed;boundary="----=_20080111223402_10173" X-Virus-Scanned: by XS4ALL Virus Scanner X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0.6 tagged_above=0 required=5 tests=AWL=0.599, BAYES_50=0.001 X-Spam-Level: X-Archive-Number: 200801/11 X-Sequence-Number: 4740 ------=_20080111223402_10173 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit I made some changes to textsearch.sgml, the FTS documentation. It contained references to a table 'pgweb' that was nowhere to be found, and a similarly unreferenced 'apod' table, which I happened to have found earlier here: http://www.sai.msu.su/~megera/postgres/fts/apod.dump.gz (it has around 1700 rows). I changed all references to 'pgweb' to 'apod'. This apod table initially corresponds with the structure of the table in the dump file. (In the documentation, that table is subsequently changed by adding a tsvector column.) It would be nice if that apod table could be included with postgres in its entirety, or maybe even an updated version, as the above dump only contains records from 1995-2001. In case the table is deemed to large for inclusion in the distribution, I have put the initial 'create' statements and selected 20 records, so that the example queries give some results (albeit fewer results than there are in the textsearch.sgml document now - it was apparently run with a full apod table). With these changes (from table 'pgweb' to 'apod') the examples can be run. If the table data is included (whole or truncated) a paragraph saying where to find it should be written too. Erik Rijkers ------=_20080111223402_10173 Content-Type: application/octet-stream; name="textsearch.sgml.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="textsearch.sgml.diff" LS0tIGRvYy9zcmMvc2dtbC90ZXh0c2VhcmNoLnNnbWwub3JpZwkyMDA4LTAxLTExIDIyOjIwOjE2 LjAwMDAwMDAwMCArMDEwMAorKysgZG9jL3NyYy9zZ21sL3RleHRzZWFyY2guc2dtbAkyMDA4LTAx LTExIDIyOjI3OjU3LjAwMDAwMDAwMCArMDEwMApAQCAtNDE4LDE2ICs0MTgsMTYgQEAKICAgIDxw YXJhPgogICAgIEl0IGlzIHBvc3NpYmxlIHRvIGRvIGZ1bGwgdGV4dCBzZWFyY2ggd2l0aCBubyBp bmRleC4gIEEgc2ltcGxlIHF1ZXJ5CiAgICAgdG8gcHJpbnQgdGhlIDxzdHJ1Y3RuYW1lPnRpdGxl PC8+IG9mIGVhY2ggcm93IHRoYXQgY29udGFpbnMgdGhlIHdvcmQKLSAgICA8bGl0ZXJhbD5mcmll bmQ8Lz4gaW4gaXRzIDxzdHJ1Y3RmaWVsZD5ib2R5PC8+IGZpZWxkIGlzOgorICAgIDxsaXRlcmFs PnBsYW5ldDwvPiBpbiBpdHMgPHN0cnVjdGZpZWxkPmJvZHk8Lz4gZmllbGQgaXM6CiAKIDxwcm9n cmFtbGlzdGluZz4KIFNFTEVDVCB0aXRsZQotRlJPTSBwZ3dlYgotV0hFUkUgdG9fdHN2ZWN0b3Io J2VuZ2xpc2gnLCBib2R5KSBAQCB0b190c3F1ZXJ5KCdlbmdsaXNoJywgJ2ZyaWVuZCcpOworRlJP TSBhcG9kCitXSEVSRSB0b190c3ZlY3RvcignZW5nbGlzaCcsIGJvZHkpIEBAIHRvX3RzcXVlcnko J2VuZ2xpc2gnLCAncGxhbmV0Jyk7CiA8L3Byb2dyYW1saXN0aW5nPgogCi0gICAgVGhpcyB3aWxs IGFsc28gZmluZCByZWxhdGVkIHdvcmRzIHN1Y2ggYXMgPGxpdGVyYWw+ZnJpZW5kczwvPgotICAg IGFuZCA8bGl0ZXJhbD5mcmllbmRseTwvPiwgc2luY2UgYWxsIHRoZXNlIGFyZSByZWR1Y2VkIHRv IHRoZSBzYW1lCisgICAgVGhpcyB3aWxsIGFsc28gZmluZCByZWxhdGVkIHdvcmRzIHN1Y2ggYXMg PGxpdGVyYWw+cGxhbmV0czwvPgorICAgIGFuZCA8bGl0ZXJhbD5wbGFuZXRhcnk8Lz4sIHNpbmNl IGFsbCB0aGVzZSBhcmUgcmVkdWNlZCB0byB0aGUgc2FtZQogICAgIG5vcm1hbGl6ZWQgbGV4ZW1l LgogICAgPC9wYXJhPgogCkBAIC00MzgsOCArNDM4LDggQEAKIAogPHByb2dyYW1saXN0aW5nPgog U0VMRUNUIHRpdGxlCi1GUk9NIHBnd2ViCi1XSEVSRSB0b190c3ZlY3Rvcihib2R5KSBAQCB0b190 c3F1ZXJ5KCdmcmllbmQnKTsKK0ZST00gYXBvZAorV0hFUkUgdG9fdHN2ZWN0b3IoYm9keSkgQEAg dG9fdHNxdWVyeSgncGxhbmV0Jyk7CiA8L3Byb2dyYW1saXN0aW5nPgogCiAgICAgVGhpcyBxdWVy eSB3aWxsIHVzZSB0aGUgY29uZmlndXJhdGlvbiBzZXQgYnkgPHhyZWYKQEAgLTQ0OCwxNCArNDQ4 LDE0IEBACiAKICAgIDxwYXJhPgogICAgIEEgbW9yZSBjb21wbGV4IGV4YW1wbGUgaXMgdG8KLSAg ICBzZWxlY3QgdGhlIHRlbiBtb3N0IHJlY2VudCBkb2N1bWVudHMgdGhhdCBjb250YWluIDxsaXRl cmFsPmNyZWF0ZTwvPiBhbmQKLSAgICA8bGl0ZXJhbD50YWJsZTwvPiBpbiB0aGUgPHN0cnVjdG5h bWU+dGl0bGU8Lz4gb3IgPHN0cnVjdG5hbWU+Ym9keTwvPjoKKyAgICBzZWxlY3QgdGhlIHRlbiBt b3N0IHJlY2VudCBkb2N1bWVudHMgdGhhdCBjb250YWluIDxsaXRlcmFsPmNvbWV0PC8+IGFuZAor ICAgIDxsaXRlcmFsPnRhaWw8Lz4gaW4gdGhlIDxzdHJ1Y3RuYW1lPnRpdGxlPC8+IG9yIDxzdHJ1 Y3RuYW1lPmJvZHk8Lz46CiAKIDxwcm9ncmFtbGlzdGluZz4KIFNFTEVDVCB0aXRsZQotRlJPTSBw Z3dlYgotV0hFUkUgdG9fdHN2ZWN0b3IodGl0bGUgfHwgYm9keSkgQEAgdG9fdHNxdWVyeSgnY3Jl YXRlICZhbXA7IHRhYmxlJykKLU9SREVSIEJZIGxhc3RfbW9kX2RhdGUgREVTQyBMSU1JVCAxMDsK K0ZST00gYXBvZAorV0hFUkUgdG9fdHN2ZWN0b3IodGl0bGUgfHwgYm9keSkgQEAgdG9fdHNxdWVy eSgnY29tZXQgJmFtcDsgdGFpbCcpCitPUkRFUiBCWSBzZGF0ZSBERVNDIExJTUlUIDEwOwogPC9w cm9ncmFtbGlzdGluZz4KIAogICAgIEZvciBjbGFyaXR5IHdlIG9taXR0ZWQgdGhlIDxmdW5jdGlv bj5jb2FsZXNjZTwvZnVuY3Rpb24+IGZ1bmN0aW9uCkBAIC00ODAsNyArNDgwLDcgQEAKICAgICBs aW5rZW5kPSJ0ZXh0c2VhcmNoLWluZGV4ZXMiPikgdG8gc3BlZWQgdXAgdGV4dCBzZWFyY2hlczoK IAogPHByb2dyYW1saXN0aW5nPgotQ1JFQVRFIElOREVYIHBnd2ViX2lkeCBPTiBwZ3dlYiBVU0lO RyBnaW4odG9fdHN2ZWN0b3IoJ2VuZ2xpc2gnLCBib2R5KSk7CitDUkVBVEUgSU5ERVggYXBvZF9p ZHggT04gYXBvZCBVU0lORyBnaW4odG9fdHN2ZWN0b3IoJ2VuZ2xpc2gnLCBib2R5KSk7CiA8L3By b2dyYW1saXN0aW5nPgogCiAgICAgTm90aWNlIHRoYXQgdGhlIDItYXJndW1lbnQgdmVyc2lvbiBv ZiA8ZnVuY3Rpb24+dG9fdHN2ZWN0b3I8L2Z1bmN0aW9uPiBpcwpAQCAtNTEwLDEwICs1MTAsMTAg QEAKICAgICBjb25maWd1cmF0aW9uIG5hbWUgaXMgc3BlY2lmaWVkIGJ5IGFub3RoZXIgY29sdW1u LCBlLmcuOgogCiA8cHJvZ3JhbWxpc3Rpbmc+Ci1DUkVBVEUgSU5ERVggcGd3ZWJfaWR4IE9OIHBn d2ViIFVTSU5HIGdpbih0b190c3ZlY3Rvcihjb25maWdfbmFtZSwgYm9keSkpOworQ1JFQVRFIElO REVYIGFwb2RfaWR4IE9OIGFwb2QgVVNJTkcgZ2luKHRvX3RzdmVjdG9yKGNvbmZpZ19uYW1lLCBi b2R5KSk7CiA8L3Byb2dyYW1saXN0aW5nPgogCi0gICAgd2hlcmUgPGxpdGVyYWw+Y29uZmlnX25h bWU8Lz4gaXMgYSBjb2x1bW4gaW4gdGhlIDxsaXRlcmFsPnBnd2ViPC8+CisgICAgd2hlcmUgPGxp dGVyYWw+Y29uZmlnX25hbWU8Lz4gaXMgYSBjb2x1bW4gaW4gdGhlIDxsaXRlcmFsPmFwb2Q8Lz4K ICAgICB0YWJsZS4gIFRoaXMgYWxsb3dzIG1peGVkIGNvbmZpZ3VyYXRpb25zIGluIHRoZSBzYW1l IGluZGV4IHdoaWxlCiAgICAgcmVjb3JkaW5nIHdoaWNoIGNvbmZpZ3VyYXRpb24gd2FzIHVzZWQg Zm9yIGVhY2ggaW5kZXggZW50cnkuICBUaGlzCiAgICAgd291bGQgYmUgdXNlZnVsLCBmb3IgZXhh bXBsZSwgaWYgdGhlIGRvY3VtZW50IGNvbGxlY3Rpb24gY29udGFpbmVkCkBAIC01MjYsNyArNTI2 LDcgQEAKICAgICBJbmRleGVzIGNhbiBldmVuIGNvbmNhdGVuYXRlIGNvbHVtbnM6CiAKIDxwcm9n cmFtbGlzdGluZz4KLUNSRUFURSBJTkRFWCBwZ3dlYl9pZHggT04gcGd3ZWIgVVNJTkcgZ2luKHRv X3RzdmVjdG9yKCdlbmdsaXNoJywgdGl0bGUgfHwgYm9keSkpOworQ1JFQVRFIElOREVYIGFwb2Rf aWR4IE9OIGFwb2QgVVNJTkcgZ2luKHRvX3RzdmVjdG9yKCdlbmdsaXNoJywgdGl0bGUgfHwgYm9k eSkpOwogPC9wcm9ncmFtbGlzdGluZz4KICAgIDwvcGFyYT4KIApAQCAtNTM4LDI0ICs1MzgsMjQg QEAKICAgICBpbmRleGVkIHdoZW4gdGhlIG90aGVyIGlzIDxsaXRlcmFsPk5VTEw8Lz46CiAKIDxw cm9ncmFtbGlzdGluZz4KLUFMVEVSIFRBQkxFIHBnd2ViIEFERCBDT0xVTU4gdGV4dHNlYXJjaGFi bGVfaW5kZXhfY29sIHRzdmVjdG9yOwotVVBEQVRFIHBnd2ViIFNFVCB0ZXh0c2VhcmNoYWJsZV9p bmRleF9jb2wgPQorQUxURVIgVEFCTEUgYXBvZCBBREQgQ09MVU1OIHRleHRzZWFyY2ggdHN2ZWN0 b3I7CitVUERBVEUgYXBvZCBTRVQgdGV4dHNlYXJjaCA9CiAgICAgIHRvX3RzdmVjdG9yKCdlbmds aXNoJywgY29hbGVzY2UodGl0bGUsJycpIHx8IGNvYWxlc2NlKGJvZHksJycpKTsKIDwvcHJvZ3Jh bWxpc3Rpbmc+CiAKICAgICBUaGVuIHdlIGNyZWF0ZSBhIDxhY3JvbnltPkdJTjwvYWNyb255bT4g aW5kZXggdG8gc3BlZWQgdXAgdGhlIHNlYXJjaDoKIAogPHByb2dyYW1saXN0aW5nPgotQ1JFQVRF IElOREVYIHRleHRzZWFyY2hfaWR4IE9OIHBnd2ViIFVTSU5HIGdpbih0ZXh0c2VhcmNoYWJsZV9p bmRleF9jb2wpOworQ1JFQVRFIElOREVYIHRleHRzZWFyY2hfaWR4IE9OIGFwb2QgVVNJTkcgZ2lu KHRleHRzZWFyY2gpOwogPC9wcm9ncmFtbGlzdGluZz4KIAogICAgIE5vdyB3ZSBhcmUgcmVhZHkg dG8gcGVyZm9ybSBhIGZhc3QgZnVsbCB0ZXh0IHNlYXJjaDoKIAogPHByb2dyYW1saXN0aW5nPgog U0VMRUNUIHRpdGxlCi1GUk9NIHBnd2ViCi1XSEVSRSB0ZXh0c2VhcmNoYWJsZV9pbmRleF9jb2wg QEAgdG9fdHNxdWVyeSgnY3JlYXRlICZhbXA7IHRhYmxlJykKLU9SREVSIEJZIGxhc3RfbW9kX2Rh dGUgREVTQyBMSU1JVCAxMDsKK0ZST00gYXBvZAorV0hFUkUgdGV4dHNlYXJjaCBAQCB0b190c3F1 ZXJ5KCdjb21ldCAmYW1wOyB0YWlsJykKK09SREVSIEJZIHNkYXRlIERFU0MgTElNSVQgMTA7CiA8 L3Byb2dyYW1saXN0aW5nPgogICAgPC9wYXJhPgogCkBAIC01OTQsOCArNTk0LDcgQEAKICAgIHVz ZXIgcXVlcnkuIEFsc28sIHdlIG5lZWQgdG8gcmV0dXJuIHJlc3VsdHMgaW4gYSB1c2VmdWwgb3Jk ZXIsIHNvIHdlIG5lZWQKICAgIGEgZnVuY3Rpb24gdGhhdCBjb21wYXJlcyBkb2N1bWVudHMgd2l0 aCByZXNwZWN0IHRvIHRoZWlyIHJlbGV2YW5jZSB0bwogICAgdGhlIHF1ZXJ5LiBJdCdzIGFsc28g aW1wb3J0YW50IHRvIGJlIGFibGUgdG8gZGlzcGxheSB0aGUgcmVzdWx0cyBuaWNlbHkuCi0gICA8 cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IHByb3ZpZGVzIHN1cHBvcnQgZm9y IGFsbCBvZiB0aGVzZQotICAgZnVuY3Rpb25zLgorICAgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8 L3Byb2R1Y3RuYW1lPiBwcm92aWRlcyBhbGwgdGhlc2UgZnVuY3Rpb25zLgogICA8L3BhcmE+CiAK ICAgPHNlY3QyIGlkPSJ0ZXh0c2VhcmNoLXBhcnNpbmctZG9jdW1lbnRzIj4K ------=_20080111223402_10173 Content-Type: application/octet-stream; name="apod_create_table.sql" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="apod_create_table.sql" ClNFVCBjbGllbnRfZW5jb2RpbmcgPSAnVVRGOCc7ClNFVCBzdGFuZGFyZF9jb25mb3JtaW5nX3N0 cmluZ3MgPSBvZmY7ClNFVCBjaGVja19mdW5jdGlvbl9ib2RpZXMgPSBmYWxzZTsKU0VUIGNsaWVu dF9taW5fbWVzc2FnZXMgPSB3YXJuaW5nOwpTRVQgZXNjYXBlX3N0cmluZ193YXJuaW5nID0gb2Zm OwoKU0VUIHNlYXJjaF9wYXRoID0gcHVibGljLCBwZ19jYXRhbG9nOwpTRVQgZGVmYXVsdF90YWJs ZXNwYWNlID0gJyc7ClNFVCBkZWZhdWx0X3dpdGhfb2lkcyA9IGZhbHNlOwoKQ1JFQVRFIFRBQkxF IGFwb2QgKAogICAgdGl0bGUgdGV4dCwKICAgIGJvZHkgdGV4dCwKICAgIHNkYXRlIGRhdGUsCiAg ICBrZXl3b3JkcyB0ZXh0LAogICAgaWQgaW50ZWdlcgopOwoKSU5TRVJUIElOVE8gYXBvZCBWQUxV RVMgKCdBIFdvbGYtUmF5ZXQgU3RhciBCdWJibGUnLCAnV2hhdCcncyBhIFdvbGYtUmF5ZXQgc3Rh ciwgYW5kIGhvdyBkaWQgaXQgY3JlYXRlIHRoYXQgc3BoZXJpY2FsIGJ1YmJsZSBhbmQgc3dlZXBp bmcgYXJjPyBBIFdvbGYtUmF5ZXQgc3RhciBpcyBhIHN0YXIgdGhhdCBvcmlnaW5hdGVkIHdpdGgg YSBtYXNzIG92ZXIgNDAgdGltZXMgdGhhdCBvZiBvdXIgU3VuLiBBbiBleHRyZW1lbHkgaG90LCBs dW1pbm91cyBzdGFyLCBpdCBoYXMgc2luY2UgZXhwZWxsZWQgc2hlbGxzIG9mIG1hdGVyaWFsIHRo cm91Z2ggaXRzIHN0cm9uZyBzdGVsbGFyIHdpbmQgd2hpY2ggY291bGQgYWNjb3VudCBmb3IgdGhl IGJ1YmJsZSBzaGFwZWQgbmVidWxhIHRoYXQgc3Vycm91bmRzIGl0LiBCdXQgYXN0cm9ub21lcnMg YXJlIHVuc3VyZSBob3cgdGhlIGNlbnRyYWwgV29sZi1SYXlldCBjcmVhdGVkIGJvdGggdGhlIGJ1 YmJsZSBhbmQgdGhlIGFyYyBzZWVuIGFib3ZlLCBhbmQgZXZlbiB3aGV0aGVyIGl0IGFjdGVkIGFs b25lIGluIGRvaW5nIHNvLiBUb2dldGhlciwgdGhpcyBidWJibGUgYW5kIHRoZSBhcmMgYXJlIGtu b3duIGFzIE5HQyAyMzU5LicsICcxOTk2LTA4LTI2JywgJ1dvbGYtUmF5ZXQgc3Rhciwgc3Rhcics IDMyKTsKSU5TRVJUIElOVE8gYXBvZCBWQUxVRVMgKCdUaGUgUHVsc2FyIFBvd2VyZWQgQ3JhYics ICdJbiB0aGUgU3VtbWVyIG9mIDEwNTQgQS5ELiBDaGluZXNlIGFzdHJvbm9tZXJzIHJlcG9ydGVk IHRoYXQgYSBzdGFyIGluIHRoZSBjb25zdGVsbGF0aW9uIG9mIFRhdXJ1cyBzdWRkZW5seSBiZWNh bWUgYXMgYnJpZ2h0IGFzIHRoZSBmdWxsIE1vb24uIEZhZGluZyBzbG93bHksIGl0IHJlbWFpbmVk IHZpc2libGUgZm9yIG92ZXIgYSB5ZWFyLiBJdCBpcyBub3cgdW5kZXJzdG9vZCB0aGF0IGEgc3Bl Y3RhY3VsYXIgc3VwZXJub3ZhIGV4cGxvc2lvbiAtIHRoZSBkZXRvbmF0aW9uIG9mIGEgbWFzc2l2 ZSBzdGFyIHdob3NlIHJlbWFpbnMgYXJlIG5vdyB2aXNpYmxlIGFzIHRoZSBDcmFiIE5lYnVsYSAt IHdhcyByZXNwb25zaWJsZSBmb3IgdGhlIGFwcGFyaXRpb24uIFRoZSBjb3JlIG9mIHRoZSBzdGFy IGNvbGxhcHNlZCB0byBmb3JtIGEgcm90YXRpbmcgbmV1dHJvbiBzdGFyIG9yIHB1bHNhciwgb25l IG9mIHRoZSBtb3N0IGV4b3RpYyBvYmplY3RzIGtub3duIHRvIDIwdGggY2VudHVyeSBhc3Ryb25v bXkuIExpa2UgYSBjb3NtaWMgbGlnaHRob3VzZSwgdGhlIHJvdGF0aW5nIENyYWIgcHVsc2FyIGdl bmVyYXRlcyBiZWFtcyBvZiByYWRpbywgdmlzaWJsZSwgeC1yYXkgYW5kIGdhbW1hLXJheSBlbmVy Z3kgd2hpY2gsIGFzIHRoZSBuYW1lIHN1Z2dlc3RzLCBwcm9kdWNlIHB1bHNlcyBhcyB0aGV5IHN3 ZWVwIGFjcm9zcyBvdXIgdmlldy4gVXNpbmcgYSBzdHVubmluZyBzZXJpZXMgb2YgdmlzaWJsZSBs aWdodCBpbWFnZXMgdGFrZW4gd2l0aCB0aGUgSHViYmxlIFNwYWNlIFRlbGVzY29wZSAoSFNUKSwg YXN0cm9ub21lcnMgaGF2ZSByZWNlbnRseSBkaXNjb3ZlcmVkIHNwZWN0YWN1bGFyIHB1bHNhciBw b3dlcmVkIG1vdGlvbnMgd2l0aGluIHRoZSBDcmFiIG5lYnVsYS4gSGlnaGxpZ2h0cyBvZiB0aGlz IEhTVCBDcmFiICJtb3ZpZSIgc2hvdyB3aXNwcyBvZiBtYXRlcmlhbCBtb3ZpbmcgYXdheSBmcm9t IHRoZSBwdWxzYXIgYXQgaGFsZiB0aGUgc3BlZWQgb2YgbGlnaHQsIGEgc2NpbnRpbGxhdGluZyBo YWxvLCBhbmQgYW4gaW50ZW5zZSBrbm90IG9mIGVtaXNzaW9uIGRhbmNpbmcsIHNwcml0ZS1saWtl LCBhYm92ZSB0aGUgcHVsc2FyJydzIHBvbGUuIE9ubHkgNiBtaWxlcyB3aWRlIGJ1dCBtb3JlIG1h c3NpdmUgdGhhbiB0aGUgc3VuLCB0aGUgcHVsc2FyJydzIGVuZXJneSBkcml2ZXMgdGhlIGR5bmFt aWNzIGFuZCBlbWlzc2lvbiBvZiB0aGUgbmVidWxhIGl0c2VsZiB3aGljaCBpcyBtb3JlIHRoYW4g MTAgbGlnaHR5ZWFycyBhY3Jvc3MuIEluIHRoZSBIU1QgaW1hZ2UgYWJvdmUsIHRoZSBwdWxzYXIg aXMgdGhlIGxlZnQgbW9zdCBvZiB0aGUgdHdvIGJyaWdodCBjZW50cmFsIHN0YXJzLicsICcxOTk2 LTA1LTMxJywgJ3B1bHNhcicsIDU3KTsKSU5TRVJUIElOVE8gYXBvZCBWQUxVRVMgKCdBdXJvcmE6 IEN1cnRhaW5zIGluIHRoZSBTa3knLCAnTG9va2luZyBvdXQgb3ZlciBMYWtlIFN1cGVyaW9yIGF0 IGR1c2sgeW91IHNlZSBWZW51cyAobG93ZXIgbGVmdCkgYW5kLi4uIGN1cnRhaW5zPyBMaWtlIGFu IGFudCBsb29raW5nIHVwIGF0IHdpbmRvdyBjdXJ0YWlucywgYXVyb3JhIGZyZXF1ZW50bHkgYXBw ZWFyIGFzIGh1Z2UgZmxvd2luZyBsaWdodCBkaXNwbGF5cy4gVGhlc2UgY29sb3JmdWwsIG9mdGVu IHNwZWN0YWN1bGFyIHBoZW5vbWVuYSBhcmUgbW9zdCBmcmVxdWVudGx5IHZpc2libGUgZnJvbSBs b2NhdGlvbnMgbmVhciB0aGUgRWFydGgnJ3MgcG9sZXMuIEF1cm9yYSBhcmUgY2F1c2VkIGJ5IGVs ZWN0cm9ucyBmcm9tIHRoZSBzb2xhciB3aW5kIGZ1bm5lbGluZyB0byBFYXJ0aCBhbG9uZyBtYWdu ZXRpYyBmaWVsZCBsaW5lcywgYW5kIHN0cmlraW5nIGF0b21zIGFuZCBtb2xlY3VsZXMgaW4gb3Vy IGF0bW9zcGhlcmUuIEF1cm9yYWwgY29sb3IgaXMgZGV0ZXJtaW5lZCBieSB3aGljaCBhdG1vc3Bo ZXJpYyBpb25zIGFyZSBzdHJ1Y2sgYW5kIHJlY29tYmluZSB0byBmb3JtIG5ldXRyYWwgYXRvbXMu IEhvdXJseSB1cGRhdGVzIG9mIGF1cm9yYWwgc2lnaHRpbmdzIGFyZSBwb3N0ZWQgdG8gdGhlIFdX Vy4gSXQgaXMgc3RpbGwgY29udHJvdmVyc2lhbCB3aGV0aGVyIGF1cm9yYSBtYWtlIGFueSBzb3Vu ZCBhdWRpYmxlIGZyb20gdGhlIGdyb3VuZC4gSWYgeW91IHRoaW5rIHlvdSBoYXZlICJoZWFyZCBh biBhdXJvcmEsIiBwbGVhc2UgcmVwb3J0IGl0ICEnLCAnMTk5Ni0wNi0xOScsICdza3knLCA4Mik7 CklOU0VSVCBJTlRPIGFwb2QgVkFMVUVTICgnQW4gRXh0cmVtZSBVbHRyYVZpb2xldCBWaWV3IG9m IHRoZSBDb21ldCcsICdBcyB0aGUgU3VuIGZsb29kcyBDb21ldCBIeWFrdXRha2Ugd2l0aCB1bHRy YXZpb2xldCBsaWdodCBnYXNlcyBpbiB0aGUgY29tYSBzY2F0dGVyIHRoZSByYWRpYXRpb24gYW5k IGZsdW9yZXNjZSBtYWtpbmcgdGhlIGNvbWV0IGEgYnJpZ2h0IHNvdXJjZSBpbiB0aGUgdWx0cmF2 aW9sZXQgc2t5LiBUaGUgYWJvdmUgaW1hZ2UgbWFkZSB1c2luZyBkYXRhIGZyb20gTkFTQScncyBF eHRyZW1lIFVsdHJhVmlvbGV0IEV4cGxvcmVyIChFVVZFKSBzYXRlbGxpdGUsIHJlcHJlc2VudHMg dGhlIGludGVuc2l0eSBvZiB0aGUgY29tZXQgaW4gdGhpcyBpbnZpc2libGUgaGlnaCBlbmVyZ3kg YmFuZCBpbiBmYWxzZSBjb2xvci4gVGhlIGltYWdlIGlzIGFib3V0IDMvNCBvZiBhIGRlZ3JlZSBo aWdoIGFuZCAyIGRlZ3Jlc3Mgd2lkZSBhbmQgb2ZmZXJzIGluc2lnaHRzIHRvIHRoZSBjb21wb3Np dGlvbiBvZiB0aGlzIHZpc2l0b3IgZnJvbSB0aGUgZGlzdGFudCBzb2xhciBzeXN0ZW0gdGhhdCBj YW4gYmUgb2J0YWluZWQgZnJvbSB0aGUgaGlnaGVzdCBlbmVyZ3kgYmFuZHMgb2YgdGhlIHVsdHJh dmlvbGV0IHNwZWN0cnVtLiBUaGUgSW50ZXJuYXRpb25hbCBVbHRyYXZpb2xldCBFeHBsb3JlciAo SVVFKSBzYXRlbGxpdGUgaGFzIGFsc28gZXhhbWluZWQgdWx0cmF2aW9sZXQgbGlnaHQgZnJvbSB0 aGUgY29tZXQgYW5kIG5vdyByZXBvcnRzIHRoZSBkZXRlY3Rpb24gb2YgbWFueSBiYW5kcyBvZiBt b2xlY3VsYXIgZW1pc3Npb24gcGFydGljdWxhcmx5IHRob3NlIGR1ZSB0byBtb2xlY3VsYXIgY2Fy Ym9uIChDMiksIGNhcmJvbiBtb25veGlkZSAoQ08pIGFuZCBjYXJvbiBkaW94aWRlIChDMDIpIGlv bnMgYXMgd2VsbCBhcyBpbmRpY2F0aW9ucyBvZiBhIHJhcGlkIGluY3JlYXNlIGluIHRoZSBwcm9k dWN0aW9uIG9mIHdhdGVyIChIMjApLiBMYXRlc3QgQ29tZXQgSHlha3V0YWtlIGltYWdlczogSlBM LCBGYXlldHRldmlsbGUgT2JzZXJ2ZXItVGltZXMsIE5BU0EnJ3MgTmlnaHQgb2YgdGhlIENvbWV0 LCBJQ1NUQVJTLCBDcm5pIFZyaCBPYnMuLCBDZW50LiBNaWNoIFUuJywgJzE5OTYtMDMtMzAnLCAn Y29tZXQsIGV1dmUsIHVsdHJhdmlvbGV0JywgOTMpOwpJTlNFUlQgSU5UTyBhcG9kIFZBTFVFUyAo J1RoZSBQaXBlIERhcmsgTmVidWxhJywgJ1RoZSBkYXJrIG5lYnVsYSBwcmVkb21pbmFudCBhdCB0 aGUgbG93ZXIgbGVmdCBvZiB0aGUgYWJvdmUgcGhvdG9ncmFwaCBpcyBrbm93biBhcyB0aGUgUGlw ZSBOZWJ1bGEuIFRoZSBkYXJrIGNsb3Vkcywgc3VnZ2VzdGl2ZWx5IHNoYXBlZCBsaWtlIHNtb2tl IHJpc2luZyBmcm9tIGEgcGlwZSwgYXJlIGNhdXNlZCBieSBhYnNvcnB0aW9uIG9mIGJhY2tncm91 bmQgc3RhcmxpZ2h0IGJ5IGR1c3QuIFRoZXNlIGR1c3QgY2xvdWRzIGNhbiBiZSB0cmFjZWQgYWxs IHRoZSB3YXkgdG8gdGhlIFJobyBPcGhpdWNoaSBuZWJ1bGFyIGNsb3VkcyBvbiB0aGUgcmlnaHQu IFRoZSBicmlnaHRlc3Qgc3RhciBpbiB0aGUgZmllbGQgaXMgQW50YXJlcy4gTWFueSB0eXBlcyBv ZiBuZWJ1bGEgYXJlIGhpZ2hsaWdodGVkIGhlcmU6IHRoZSByZWQgYXJlIGVtaXNzaW9uIG5lYnVs YSwgdGhlIGJsdWUgYXJlIHJlZmxlY3Rpb24gbmVidWxhLCBhbmQgdGhlIGRhcmsgYXJlIGFic29y cHRpb24gbmVidWxhLiBUaGlzIHBpY3R1cmUgaGFzIGJlZW4gZGlnaXRhbGx5IGVuaGFuY2VkLics ICcxOTk2LTA1LTI4JywgJ25lYnVsYSwgZGFyayBuZWJ1bGEsIGRhcmsnLCAxMDgpOwoKSU5TRVJU IElOVE8gYXBvZCBWQUxVRVMgKCdBIEx1Y2t5IEx1bmFyIEVjbGlwc2UnLCAnVG9uaWdodCcncyBm dWxsIG1vb24gd291bGQgbm9ybWFsbHkgd2FzaG91dCB0aGUgc3BlY3RhY2xlIG9mIENvbWV0IEh5 YWt1dGFrZScncyBsb3ZlbHkgdGFpbCwgZXZlbiBmb3IgdGhvc2UgZmFyIGZyb20gbGlnaHQgcG9s bHV0ZWQgc2tpZXMuIEV4Y2VwdCB0aGF0IHRvbmlnaHQgY29tZXQgb2JzZXJ2ZXJzIGFyZSBpbiBs dWNrIC0gdGhlIGRhbmNlIG9mIHRoZSBwbGFuZXRzIGNhbGxzIGZvciBhIHRvdGFsIGx1bmFyIGVj bGlwc2UgISBMdW5hciBlY2xpcHNlcyBhcmUgY2F1c2VkIHdoZW4gdGhlIE1vb24gcGFzc2VzIHRo cm91Z2ggdGhlIEVhcnRoJydzIHNoYWRvdy4gQWx0aG91Z2ggZGltbWVkLCB0aGUgZWNsaXBzZWQg TW9vbiBtYXkgbm90IGFwcGVhciBjb21wbGV0ZWx5IGRhcmsuIFN1bmxpZ2h0IHNjYXR0ZXJlZCBp bnRvIHRoZSBFYXJ0aCcncyBzaGFkb3cgYWZ0ZXIgcGFzc2luZyBhcm91bmQgdGhlIHBsYW5ldCcn cyBlZGdlIGFuZCB0aHJvdWdoIGl0cyBkdXN0eSBhdG1vc3BoZXJlIGNhbiBtYWtlIHRoZSBNb29u IHRha2Ugb24gZHJhbWF0aWMgc2hhZGVzIG9mIHJlZCBkdXJpbmcgdG90YWxpdHkgYXMgZGVtb25z dHJhdGVkIGluIHRoZSBhYm92ZSBwaG90byBvZiB0aGUgTm92ZW1iZXIgMTk5MyBsdW5hciBlY2xp cHNlLiBUb25pZ2h0LCB0b3RhbGl0eSBiZWdpbnMgYXQgNjoyNiBwLm0uIEVTVCBhbmQgbGFzdHMg YWJvdXQgYW4gaG91ciBhbmQgYSBoYWxmLiBXZWF0aGVyIHBlcm1pdHRpbmcsIHRoZSBlY2xpcHNl IHdpbGwgYmUgdmlzaWJsZSBmb3IgYWxsIHRob3NlIGNvbWV0IGFuZCBtb29uIHdhdGNoZXJzIGx1 Y2t5IGVub3VnaCB0byBiZSBvbiB0aGUgRWFydGgnJ3MgbmlnaHRzaWRlLiBMYXRlc3QgQ29tZXQg SHlha3V0YWtlIGltYWdlczogQVBPRCBIeWFrdXRha2UgQXJjaGl2ZSwgSlBMLCBGYXlldHRldmls bGUgT2JzZXJ2ZXItVGltZXMsIE5BU0EnJ3MgTmlnaHQgb2YgdGhlIENvbWV0LCBJQ1NUQVJTLCBK ZXJyeSBMb2RyaWd1c3MsIFNjaWVuY2VXZWIsIENybmkgVnJoIE9icy4sIENlbnQuIE1pY2guIFUu JywgJzE5OTYtMDQtMDMnLCAnZWNsaXBzZSwgbHVuYXIgZWNsaXBzZScsIDEyOCk7CklOU0VSVCBJ TlRPIGFwb2QgVkFMVUVTICgnQSBNQUNITyBWaWV3IG9mIEdhbGFjdGljIERhcmsgTWF0dGVyJywg J1doYXQgaXMgb3VyIEdhbGF4eSBtYWRlIG9mPyBTdGVsbGFyIG1vdGlvbnMgaW5kaWNhdGUgdGhl cmUgaXMgbXVjaCBtb3JlIG1hc3MgdGhhbiBqdXN0IHN0YXJzIGFuZCBnYXMuIFBob3RvZ3JhcGhz IGxpa2UgdGhlIHR3byBzaG93biBhYm92ZSBtYXkgYmUgeWllbGRpbmcgYSBjbHVlIGFib3V0IHRo ZSBkYXJrIG1hdHRlciwgaG93ZXZlci4gUGljdHVyZWQgaXMgdGhlIGZpcnN0IHJlY29yZGVkIGlu c3RhbmNlIG9mIGEgZGltIHN0YXIgaW4gb3VyIEdhbGF4eSBtb3ZpbmcgaW4gZnJvbnQgb2YgYSBi cmlnaHQgYmFja2dyb3VuZCBzdGFyLCBzaG93biBieSB0aGUgYXJyb3csIGRlZmxlY3RpbmcgbGln aHQgYXJvdW5kIGl0LCBhbmQgY2F1c2luZyB0aGUgYmFja2dyb3VuZCBzdGFyIHRvIGFwcGVhciBt dWNoIGJyaWdodGVyIChyaWdodCBmcmFtZSkuIFdlcmUgb3VyIEdhbGF4eSBtYWRlIHByZWRvbWlu YW50bHkgb2YgTUFzc2l2ZSBDb21wYWN0IEhhbG8gT2JqZWN0cyAoTUFDSE9zKSwgbWFueSBzaW1p bGFyIHN1Y2ggZ3Jhdml0YXRpb25hbCBsZW5zaW5nIGV2ZW50cyB3b3VsZCBiZSBleHBlY3RlZCB3 aGVuIHBob3RvZ3JhcGhpbmcgdGhlIExhcmdlIE1hZ2VsbGFuaWMgQ2xvdWRzIChMTUMpIC0gaGVu Y2UgaW5kaWNhdGluZyB0aGUgcHJlc2VuY2Ugb2YgTUFDSE8gbGVuc2VzIGluIG91ciBHYWxheHku IEEgcmVzZWFyY2ggdGVhbSBsZWQgYnkgQ2hhcmxlcyBBbGNvY2sgdGhpcyBtb250aCBjbGFpbWVk IGVub3VnaCBMTUMgZ3Jhdml0YXRpb25hbCBsZW5zaW5nIGV2ZW50cyB0byBpbmRpY2F0ZSBhdCBs ZWFzdCBoYWxmIG9mIHRoZSBkYXJrIG1hdHRlciBpbiBvdXIgR2FsYXh5IGlzIGNvbXBvc2VkIG9m IE1BQ0hPcy4gVGhpcyBzcGVjdGFjdWxhciBjbGFpbSBtYXkgd2VsbCBiZSBjb3JyZWN0IC0gYnV0 IGF3YWl0cyBjcnVjaWFsIHRlc3Rpbmcgd2l0aCBmdXR1cmUgb2JzZXJ2YXRpb25zIGFuZCBtb2Rl bGluZy4nLCAnMTk5Ni0wMi0wMicsICdkYXJrIG1hdHRlciwgZGFyaycsIDE1Mik7CklOU0VSVCBJ TlRPIGFwb2QgVkFMVUVTICgnQmVuZWF0aCBKdXBpdGVyJydzIENsb3VkcycsICdUaGlzIG5lYXIt aW5mcmFyZWQgaW1hZ2Ugb2YgSnVwaXRlciB3YXMgbWFkZSB1c2luZyBpbnN0cnVtZW50YXRpb24g YXQgTkFTQScncyBJbmZyYXJlZCBUZWxlc2NvcGUgRmFjaWxpdHksIGxvY2F0ZWQgb24gdGhlIHN1 bW1pdCBvZiBNYXVuYSBLZWEsIEhhd2FpaSwgaW4gc3VwcG9ydCBvZiB0aGUgR2FsaWxlbyBtaXNz aW9uIHRvIEp1cGl0ZXIuIFRoZSBicmlnaHRlc3Qgc3BvdHMgaW5kaWNhdGVkIGJ5IHRoZSBmYWxz ZSByZWQgc2hhZGluZyBhcmUgcmVsYXRpdmVseSBjbGVhciBhcmVhcyBhbmQgcmVwcmVzZW50IGds aW1wc2VzIGJlbmVhdGggdGhlIG91dGVyIGxheWVyIG9mIEp1cGl0ZXInJ3Mgb2JzY3VyaW5nIGNs b3VkIHRvcHMuIE9uIERlY2VtYmVyIDcsIDE5OTUgYSBwcm9iZSBmcm9tIHRoZSBHYWxpbGVvIHNw YWNlY3JhZnQgcGFyYWNodXRlZCB0aHJvdWdoIHRoZXNlIGNsb3VkcyBmb3IgNTcgbWludXRlcyBi ZWZvcmUgbWVsdGluZywgYWxsIHRoZSB3aGlsZSBwcm92aWRpbmcgdGhlIGZpcnN0IGRpcmVjdCBz YW1wbGluZyBvZiB0aGUgY29uZGl0aW9ucyB0aGVyZS4gSW4gYSByZWNlbnQgcHJlc3MgcmVsZWFz ZSBvZiB0aGUgcHJvYmUnJ3MgZmluZGluZ3Mgc2NpZW50aXN0cyBhbm5vdW5jZWQgc29tZSBzdXJw cmlzaW5nIHJlc3VsdHMuIERpc2NvdmVyaWVzIGJhc2VkIG9uIHByb2JlIGRhdGEgaW5jbHVkZWQg YSBuZXcgcmFkaWF0aW9uIGJlbHQgMzEsMDAwIG1pbGVzIGFib3ZlIHRoZSBjbG91ZCB0b3BzLCBy ZWxhdGl2ZWx5IGNvbnN0YW50IGhpZ2ggdmVsb2NpdHkgd2luZHMgKHVwIHRvIDMzMCBtcGgpLCBu byBvYnZpb3VzIHdhdGVyIGNsb3VkcywgbG93IGFidW5kYW5jZXMgb2YgSGVsaXVtIGFuZCBOZW9u LCBsaWdodG5pbmcgb2NjdXJyaW5nIG9ubHkgMS8xMHRoIGFzIG11Y2ggYXMgb24gRWFydGgsIGFu ZCB1bmV4cGVjdGVkbHkgaGlnaCB0ZW1wZXJhdHVyZXMuIFRoZSBHYWxpbGVvIG9yYml0ZXIgY29u dGludWVzIGl0cyB0d28teWVhciBtaXNzaW9uIHRvIGV4cGxvcmUgdGhlIEpvdmlhbiBzeXN0ZW0u JywgJzE5OTYtMDEtMjMnLCAnSnVwaXRlciwgY2xvdWRzJywgMjA5KTsKSU5TRVJUIElOVE8gYXBv ZCBWQUxVRVMgKCdOR0MgNzAyNzogQSBEeWluZyBTdGFyJydzIE5lYnVsYScsICdUaGlzIHBzZXVk by1jb2xvciBjb21wb3NpdGUgb2YgdHdvIHJlY2VudCBIdWJibGUgU3BhY2UgVGVsZXNjb3BlIGlt YWdlcyBpcyBhIHBpY3R1cmUgb2YgYSBTdW4tbGlrZSBzdGFyIG5lYXJpbmcgdGhlIGVuZCBvZiBp dHMgbGlmZXRpbWUuIFRoZSBleHF1aXNpdGUgZGV0YWlscyB2aXNpYmxlIGluIHRoaXMgcGxhbmV0 YXJ5IG5lYnVsYSBpbmRpY2F0ZSB0aGF0IHdoZW4gdGhlIHN0YXIgcGFzc2VkIHRocm91Z2ggaXRz IFJlZCBHaWFudCBwaGFzZSBpdCBpbml0aWFsbHkgc2hydWdnZWQgb2ZmIGl0cyBvdXRlciBhdG1v c3BoZXJlIGdlbnRseSBhbmQgZXZlbmx5IHByb2R1Y2luZyB0aGUgb3V0ZXIgZmFpbnQgc3BoZXJp Y2FsIHNoZWxscy4gQXMgdGhlIHByb2Nlc3MgY29udGludWVkLCBtYXRlcmlhbCB3YXMgYXBwYXJl bnRseSBlamVjdGVkIGluIGRlbnNlIGNsdW1wcyBwcm9kdWNpbmcgZHVzdCBjbG91ZHMgaW4gdGhl IGJyaWdodCBpbm5lciByZWdpb25zLiBUaGUgd2hvbGUgZWplY3Rpb24gcHJvY2VzcyB3YXMgYW1h emluZ2x5IHJhcGlkLCB0YWtpbmcgb25seSBhIGZldyB0aG91c2FuZCB5ZWFycyBjb21wYXJlZCB0 byBhIDEwIGJpbGxpb24geWVhciBsaWZldGltZSB0eXBpY2FsIGZvciBTb2xhciB0eXBlIHN0YXJz LiBJbiB0aGUgZW5kIHRoZSBob3Qgc3RlbGxhciBjb3JlLCBub3cgYSB3aGl0ZSBkd2FyZiBzdGFy LCB3YXMgbGVmdCAtIHNlZW4gaGVyZSBhcyBhIHdoaXRlIGRvdCBhdCB0aGUgY2VudGVyIG9mIHRo ZSBuZWJ1bGEuIE91ciBtaWRkbGUtYWdlZCBTdW4gd2lsbCBleHBlcmllbmNlIGEgc2ltaWxhciBm YXRlLi4uIGluIGFib3V0IDUgYmlsbGlvbiB5ZWFycyEnLCAnMTk5Ni0wMS0xNycsICduZWJ1bGEs IHN0YXIsIE5HQyA3MDI3JywgMjE3KTsKSU5TRVJUIElOVE8gYXBvZCBWQUxVRVMgKCdNZXJjdXJ5 JydzIEZhdWx0cycsICdUaGUgc3VyZmFjZSBvZiB0aGUgcGxhbmV0IE1lcmN1cnkgaXMgbm90IHdp dGhvdXQgZmF1bHQuIEluIHRoaXMgY2FzZSwgaG93ZXZlciwgImZhdWx0IiByZWZlcnMgdG8gdW51 c3VhbCBzdXJmYWNlIGZlYXR1cmVzIHRoYXQgYXJlIHRoZSB0b3BpYyBvZiBtdWNoIHNwZWN1bGF0 aW9uLiBUaGUgYWJvdmUgZmF1bHQgbGluZSBpcyBjYWxsZWQgU2FudGEgTWFyaWEgUnVwZXMsIGFu ZCBydW5zIHRocm91Z2ggbWFueSBwcm9taW5lbnQgY3JhdGVycy4gVGhlIG1lYW5kZXJpbmcgZmVh dHVyZSBpcyB0aG91Z2h0IHRvIGJlIHRoZSByZXN1bHQgb2YgaHVnZSBmb3JjZXMgb2YgY29tcHJl c3Npb24gb24gTWVyY3VyeScncyBzdXJmYWNlLiBTdWNoIHJ1cGVzIHByb2JhYmx5IG9yaWdpbmF0 ZSBmcm9tIGxhcmdlIGltcGFjdHMgYW5kIGEgZ2VuZXJhbCBzaHJpbmtpbmcgb2YgTWVyY3VyeScn cyBjcnVzdCwgd2hpY2ggaW4gdHVybiBjYXVzZXMgcGFydHMgb2YgdGhlIGNydXN0IHRvIHB1c2gg YWJvdmUgb3RoZXIgcGFydHMuJywgJzE5OTYtMDEtMjEnLCAnTWVyY3VyeScsIDIyMyk7CgpJTlNF UlQgSU5UTyBhcG9kIFZBTFVFUyAoJ1dhdGVyIFdvcmxkJywgJ1dhdGVyIChEaWh5ZHJvZ2VuIE94 aWRlLCBIMk8pIGlzIGEgdHJ1bHkgcmVtYXJrYWJsZSBjaGVtaWNhbCBjb21wb3VuZCBhbmQgaXMg ZnVuZGFtZW50YWwgdG8gbGlmZSBvbiBFYXJ0aC4gRWFydGggaXMgdGhlIG9ubHkgcGxhbmV0IGlu IHRoZSBTb2xhciBTeXN0ZW0gd2hlcmUgdGhlIHN1cmZhY2UgdGVtcGVyYXR1cmUgYW5kIHByZXNz dXJlIGFsbG93IHRoZSB0aHJlZSBmb3JtcyBvZiB3YXRlciwgc29saWQgKGljZSksIGxpcXVpZCAo b2NlYW4pLCBhbmQgZ2FzICh3YXRlciB2YXBvciBjb25kZW5zaW5nIGluIGNsb3VkcykgdG8gZXhp c3Qgc2ltdWx0YW5lb3VzbHkgb24gaXRzIHN1cmZhY2UuIFdhdGVyIGluIG9uZSBvZiB0aGVzZSBm b3JtcyBhY2NvdW50cyBmb3IgZXZlcnl0aGluZyB2aXNpYmxlIGluIHRoaXMgdmlldyBvZiBFYXJ0 aCBmcm9tIHNwYWNlIGxvb2tpbmcgbm9ydGggYXQgdGhlIEJlcmluZyBTZWEgYW5kIHRoZSBjb2Fz dCBvZiBBbGFza2EsIFVTQSwgYXJvdW5kIEJyaXN0b2wgQmF5LicsICcxOTk1LTExLTE4JywgJ3dh dGVyJywgMjUzKTsKSU5TRVJUIElOVE8gYXBvZCBWQUxVRVMgKCdBdCB0aGUgQ29yZSBvZiBNMTUn LCAnRGVuc2VseSBwYWNrZWQgc3RhcnMgaW4gdGhlIGNvcmUgb2YgdGhlIGdsb2J1bGFyIGNsdXN0 ZXIgTTE1IGFyZSBzaG93biBpbiB0aGlzIEh1YmJsZSBTcGFjZSBUZWxlc2NvcGUgKEhTVCkgaW1h Z2UgdGFrZW4gaW4gQXByaWwgb2YgMTk5NC4gVGhlIHN0YXJzIHJldmVhbGVkIGFyZSBjb250YWlu ZWQgaW4gYW4gYXJlYSAxLjYgbGlnaHQgeWVhcnMgYWNyb3NzIGFuZCB0aGVpciBjb2xvcnMgcm91 Z2hseSBpbmRpY2F0ZSB0aGVpciB0ZW1wZXJhdHVyZXMgLSBob3Qgc3RhcnMgYXBwZWFyIGJsdWUs IGNvb2xlciBzdGFycyBsb29rIHJlZGRpc2gtb3JhbmdlLiBNMTUgaGFzIGxvbmcgYmVlbiByZWNv Z25pemVkIGFzIG9uZSBvZiB0aGUgZGVuc2VzdCBjbHVzdGVyIG9mIHN0YXJzIGluIG91ciBnYWxh eHkgb3V0c2lkZSBvZiB0aGUgZ2FsYWN0aWMgY2VudGVyIGl0c2VsZi4gRXZlbiB0aGUgdW5wcmVj ZWRlbnRlZCByZXNvbHZpbmcgcG93ZXIgb2YgdGhlIEhTVCBjYW1lcmFzIGNvdWxkIG5vdCBzZXBh cmF0ZSB0aGUgaW5kaXZpZHVhbCBzdGFycyBpbiBpdHMgaW5uZXJtb3N0IHJlZ2lvbnMuIEhvd2V2 ZXIsIHRoaXMgSFNUIGltYWdlIHJldmVhbHMgdGhhdCB0aGUgZGVuc2l0eSBvZiBzdGFycyBjb250 aW51ZXMgdG8gcmlzZSB0b3dhcmQgdGhlIGNsdXN0ZXInJ3MgY29yZSwgc3VnZ2VzdGluZyB0aGF0 IGEgc3VkZGVuLCBydW5hd2F5IGNvbGxhcHNlIGR1ZSB0byB0aGUgZ3Jhdml0YXRpb25hbCBhdHRy YWN0aW9uIG9mIG1hbnkgY2xvc2VseSBwYWNrZWQgc3RhcnMgb3IgYSBzaW5nbGUgY2VudHJhbCBt YXNzaXZlIG9iamVjdCwgcGVyaGFwcyBhIGJsYWNrIGhvbGUsIGNvdWxkIGFjY291bnQgZm9yIHRo ZSBjb3JlJydzIGV4dHJlbWUgZGVuc2l0eS4nLCAnMTk5NS0xMS0yMCcsICdNMTUnLCAyNjApOwpJ TlNFUlQgSU5UTyBhcG9kIFZBTFVFUyAoJ0EgSGFsbG93ZWVuIEludmFzaW9uIGZyb20gTWFycycs ICdPcnNvbiBXZWxsZXMgYmVjYW1lIGFuIGluc3RhbnQgbGVnZW5kIG9uIEhhbGxvd2VlbiBpbiAx OTM4IGZvciBoaXMgcmFkaW8gZHJhbWF0aXphdGlvbiBvZiBILkcuIFdlbGxzJycgIldhciBvZiB0 aGUgV29ybGRzIi4gU29tZSBsaXN0ZW5lcnMgd2hvIGRpZCBub3QgcmVhbGl6ZSBpdCB3YXMgYSB0 aGVhdHJpY2FsIHByb2R1Y3Rpb24gd2VyZSBkcml2ZW4gdG8gbmVhciBwYW5pYyBieSB0aGlzIGZp Y3Rpb25hbCBhY2NvdW50IG9mIGludmFkZXJzIGZyb20gTWFycy4gSW4gdGhlIHN0b3J5LCBhcyBp biB0aGUgYWJvdmUgSHViYmxlIFNwYWNlIFRlbGVzY29wZSBpbWFnZSwgTWFycyB3YXMgYXQgIm9w cG9zaXRpb24iLCBpdHMgcG9pbnQgb2YgY2xvc2VzdCBhcHByb2FjaCB0byB0aGUgRWFydGgsIGEg ZGlzdGFuY2Ugb2Ygc29tZSA2NSBtaWxsaW9uIG1pbGVzLiBGb3IgdGhlIE1hcnRpYW5zLCBpdCB3 YXMgaW1hZ2luZWQgdGhhdCB0aGlzIHdhcyBhIGdvb2QgdGltZSB0byBpbnZhZGUuIEZvciBhc3Ry b25vbWVycywgb3Bwb3NpdGlvbiBpcyBhIGdvb2QgdGltZSB0byBzdHVkeSB0aGUgcmVkIHBsYW5l dCBhbmQgdGhpcyBIU1QgaW1hZ2UsIHJlcHJlc2VudHMgdGhlIGNsZWFyZXN0IHZpZXcgb2YgTWFy cyBldmVyIGZvciBhbiBFYXJ0aCB0ZWxlc2NvcGUuIFRoZSBpY3kgbm9ydGggcG9sYXIgY2FwIGlz IHZpc2libGUgYXQgdGhlIHRvcCBvZiB0aGUgcGljdHVyZSBhcyB3ZWxsIGFzIGEgdmVpbCBvZiB3 aGl0ZSBjbG91ZHMgYWxvbmcgdGhlIHBsYW5ldCcncyBsZWZ0IGVkZ2UuIFRoZSBkYXJrIG1hcmtp bmdzIHJlcHJlc2VudCBhcmVhcyB3aGVyZSB0aGUgcmVkZGlzaCB0aW5nZWQgZHVzdCBjaGFyYWN0 ZXJpc3RpYyBvZiB0aGUgc3VyZmFjZSBoYXMgYmVlbiBibG93biBhd2F5IGJ5IHRoZSBNYXJ0aWFu IHdpbmRzLicsICcxOTk1LTEwLTMxJywgJ01hcnMnLCAyNzMpOwpJTlNFUlQgSU5UTyBhcG9kIFZB TFVFUyAoJ1Bob2JvczogRG9vbWVkIE1vb24gb2YgTWFycycsICdNYXJzLCB0aGUgcmVkIHBsYW5l dCBuYW1lZCBmb3IgdGhlIFJvbWFuIGdvZCBvZiB3YXIsIGhhcyB0d28gdGlueSBtb29ucywgUGhv Ym9zIGFuZCBEZWltb3MsIHdob3NlIG5hbWVzIGFyZSBkZXJpdmVkIGZyb20gdGhlIEdyZWVrIGZv ciBGZWFyIGFuZCBQYW5pYy4gVGhlc2UgTWFydGlhbiBtb29ucyBtYXkgd2VsbCBiZSBjYXB0dXJl ZCBhc3Rlcm9pZHMgb3JpZ2luYXRpbmcgaW4gdGhlIGFzdGVyb2lkIGJlbHQgYmV0d2VlbiBNYXJz IGFuZCBKdXBpdGVyIG9yIHBlcmhhcHMgZnJvbSBldmVuIG1vcmUgZGlzdGFudCByZWFjaGVzIG9m IHRoZSBTb2xhciBTeXN0ZW0uIEluIHRoaXMgMTk3NyBWaWtpbmcgb3JiaXRlciBpbWFnZSwgdGhl IGxhcmdlc3QgbW9vbiwgUGhvYm9zLCBpcyBzZWVuIHRvIGJlIGEgaGVhdmlseSBjcmF0ZXJlZCBh c3Rlcm9pZC1saWtlIG9iamVjdC4gSXQgaXMgYWJvdXQgMTcgbWlsZXMgYWNyb3NzIGFuZCB6aXBz IHRocm91Z2ggdGhlIE1hcnRpYW4gc2t5IGNvbXBsZXRpbmcgYW4gb3JiaXQgaW4gbGVzcyB0aGFu IDggaG91cnMuIFBob2JvcyBpcyBkb29tZWQuIEl0IG9yYml0cyBzbyBjbG9zZSB0byBNYXJzLCAo YWJvdXQgMyw2MDAgbWlsZXMgYWJvdmUgdGhlIHN1cmZhY2UgY29tcGFyZWQgdG8gMjUwLDAwMCBt aWxlcyBmb3Igb3VyIE1vb24gKSB0aGF0IGdyYXZpdGF0aW9uYWwgdGlkYWwgZm9yY2VzIGFyZSBk cmFnZ2luZyBpdCBkb3duLiBJbiAxMDAgbWlsbGlvbiB5ZWFycyBvciBzbyBpdCBjb3VsZCBjcmFz aCBpbnRvIHRoZSBzdXJmYWNlIG9yIGJlIHNoYXR0ZXJlZCBieSBzdHJlc3MgY2F1c2VkIGJ5IHRo ZSByZWxlbnRsZXNzIHRpZGFsIGZvcmNlcywgdGhlIGRlYnJpcyBmb3JtaW5nIGEgcmluZyBhcm91 bmQgTWFycy4nLCAnMTk5NS0xMC0wMicsICdNb29uLCBNYXJzLCBQaG9ib3MnLCAyODgpOwpJTlNF UlQgSU5UTyBhcG9kIFZBTFVFUyAoJ1VyYW51czogVGhlIFRpbHRlZCBQbGFuZXQnLCAnVGhpcyBw aWN0dXJlIHdhcyBzbmFwcGVkIGJ5IHRoZSBWb3lhZ2VyIDIgc3BhY2VjcmFmdCBpbiAxOTg2IC0g dGhlIG9ubHkgc3BhY2VjcmFmdCBldmVyIHRvIHZpc2l0IFVyYW51cy4gVXJhbnVzIGlzIHRoZSB0 aGlyZCBsYXJnZXN0IHBsYW5ldCBhZnRlciBKdXBpdGVyIGFuZCBTYXR1cm4uIFVyYW51cyBoYXMg bWFueSBtb29ucyBhbmQgYSByaW5nIHN5c3RlbS4gVXJhbnVzIGlzIGNvbXBvc2VkIG1vc3RseSBv ZiBsaXF1aWQgd2F0ZXIsIG1ldGhhbmUgYW5kIGFtbW9uaWEsIHN1cnJvdW5kZWQgYnkgYSB0aGlj ayBnYXMgYXRtb3NwaGVyZSBvZiBtb3N0bHkgaHlkcm9nZW4gYW5kIGhlbGl1bS4gVXJhbnVzIGlz IHBlY3VsaWFyIGluIHRoYXQgaXRzIHJvdGF0aW9uIGF4aXMgaXMgZ3JlYXRseSB0aWx0ZWQgYW5k IHNvbWV0aW1lcyBwb2ludHMgbmVhciB0aGUgc3VuLiBJdCByZW1haW5zIGFuIGFzdHJvbm9taWNh bCBteXN0ZXJ5IHdoeSBVcmFudXMnJyBheGlzIGlzIHNvIHRpbHRlZC4gVXJhbnVzIGFuZCBOZXB0 dW5lIGFyZSB2ZXJ5IHNpbWlsYXIuJywgJzE5OTUtMDgtMTYnLCAncGxhbmV0LCBVcmFudXMnLCAz MzYpOwoKLS0gdG8gZmluZCAnY29tZXQgJiB0YWlsJwpJTlNFUlQgSU5UTyBhcG9kIFZBTFVFUyAo J0NvbWV0IEh5YWt1dGFrZSBQYXNzZXMgdGhlIFN1bicsICdPbiBNYXkgMSwgQ29tZXQgSHlha3V0 YWtlIG1hZGUgaXRzIGNsb3Nlc3QgYXBwcm9hY2ggdG8gdGhlIFN1bi4gRHVyaW5nIHRoaXMgdGlt ZSBpdCB3YXMgbm90IHBvc3NpYmxlIHRvIHZpZXcgdGhlIGNvbWV0IHdpdGggbW9zdCBhc3Ryb25v bWljYWwgaW5zdHJ1bWVudHMgYmVjYXVzZSBvZiB0aGUgYnJpZ2h0bmVzcyBvZiB0aGUgbmVhcmJ5 IFN1bi4gQnV0IHRoZSBvcmJpdGluZyBTb2xhciBhbmQgSGVsaW9zcGhlcmljIE9ic2VydmF0b3J5 IChTT0hPKSBzcGFjZWNyYWZ0IGNvbnRhaW5zIHRlbGVzY29wZXMgbWVhbnQgdG8gbG9vayBkaXJl Y3RseSBhdCB0aGUgU3VuIGFuZCBzbyB3ZXJlIGFibGUgdG8gdHJhY2sgdGhlIGNvbWV0IGR1cmlu ZyB0aGlzIGNydWNpYWwgdGltZS4gVGhpcyBwaWN0dXJlLCB0YWtlbiBNYXkgMiwgc2hvd3MgdGhl IHRhaWxzIG9mIENvbWV0IEh5YWt1dGFrZSBwb2ludGluZyBhd2F5IGZyb20gdGhlIFN1biwgYXMg ZXhwZWN0ZWQuIER1cmluZyBpdHMgY2xvc2VzdCBhcHByb2FjaCwgQ29tZXQgSHlha3V0YWtlIHBh c3NlZCBpbnNpZGUgdGhlIG9yYml0IG9mIE1lcmN1cnkuIENvbWV0IEh5YWt1dGFrZSB3aWxsIG5v dCByZXR1cm4gdG8gdGhlIGlubmVyIFNvbGFyIFN5c3RlbSBmb3IgYW5vdGhlciAxNCwwMDAgeWVh cnMuJywgJzE5OTYtMDUtMTYnLCAnY29tZXQsIFN1biwgY29tZXQgSHlha3V0YWtlJywgODQpOwpJ TlNFUlQgSU5UTyBhcG9kIFZBTFVFUyAoJ1RoZSBNaWxreSBXYXkgTmVhciB0aGUgTm9ydGhlcm4g Q3Jvc3MnLCAnVGhpcyBiZWF1dGlmdWwgaW1hZ2Ugb2YgdGhlIHNreSBuZWFyIHRoZSBicmlnaHQg c3RhciBEZW5lYiAoanVzdCBhYm92ZSBjZW50ZXIpIHJldmVhbHMgdGhlIHN0YXJzLCBuZWJ1bGFl LCBhbmQgZGFyayBjbG91ZHMgYWxvbmcgdGhlIHBsYW5lIG9mIG91ciBNaWxreSBXYXkgR2FsYXh5 IGFzIHNlZW4gZnJvbSB0aGUgbm9ydGhlcm4gaGVtaXNwaGVyZSAobmVhciBDb2x1bWJpYSBNaXNz b3VyaSwgVVNBKS4gSnVzdCBiZWxvdyBEZW5lYiBsaWVzIHRoZSBzdWdnZXN0aXZlbHkgc2hhcGVk IE5vcnRoIEFtZXJpY2FuIGVtaXNzaW9uIG5lYnVsYS4gRGVuZWIgaXMgdGhlIGJyaWdodGVzdCBz dGFyIGluIHRoZSBjb25zdGVsbGF0aW9uIEN5Z251cywgbG9jYXRlZCBpbiB0aGUgdGFpbCBvZiB0 aGlzIGNlbGVzdGlhbCBzd2FuLiBDeWdudXMgY29udGFpbnMgdGhlIGFzdGVyaXNtIGtub3duIGFz IHRoZSBOb3J0aGVybiBDcm9zcyBhbmQgbWFya3Mgb25lIHNpZGUgb2YgdGhlICJHcmVhdCBSaWZ0 IiBpbiB0aGUgTWlsa3kgV2F5LCBhIHNlcmllcyBvZiBkYXJrIG9ic2N1cmluZyBkdXN0IGNsb3Vk cyB3aGljaCBzdHJldGNoZXMgb24gdGhyb3VnaCB0aGUgY29uc3RlbGxhdGlvbiBTYWdpdHRhcml1 cy4gRGVuZWIgZGVmaW5lcyB0aGUgdG9wIG9mIHRoZSBOb3J0aGVybiBDcm9zcyB3aGlsZSB0aGUg Ym9keSBvZiB0aGUgY3Jvc3MgZXh0ZW5kcyBwYXN0IHRoZSB1cHBlciByaWdodCBjb3JuZXIgb2Yg dGhlIHBpY3R1cmUuIEN5Z251cyBhbHNvIGhhcmJvcnMgdGhlIG1vc3QgZmFtb3VzIGNhbmRpZGF0 ZSBmb3IgYSBibGFjayBob2xlIGluIG91ciBnYWxheHksIEN5Z251cyBYLTEuJywgJzE5OTYtMDUt MTUnLCAnTWlsa3kgV2F5JywgODcpOwpJTlNFUlQgSU5UTyBhcG9kIFZBTFVFUyAoJ0NvbWV0IEh5 YWt1dGFrZScncyBDbG9zZXN0IEFwcHJvYWNoJywgJ1RoZSBhYm92ZSB0cnVlIGNvbG9yIGltYWdl IG9mIENvbWV0IEh5YWt1dGFrZSB3YXMgdGFrZW4gdGhlIG5pZ2h0IG9mIE1hcmNoIDIxLzIyLiBU b25pZ2h0LCBDb21ldCBIeWFrdXRha2Ugd2lsbCBtYWtlIGl0cyBuZWFyZXN0IGFwcHJvYWNoIHRv IEVhcnRoLCBjbG9zaW5nIHRvIGEgbWVyZSAxMCBtaWxsaW9uIG1pbGVzIGFzIGl0IHBhc3NlcyBv dmVyIHRoZSBwbGFuZXQnJ3MgTm9ydGhlcm4gSGVtaXNwaGVyZS4gRnJvbSBkYXJrIHNreSBhcmVh cywgaXQnJ3MgdGFpbCBtYXkgYmUgc2VlbiB0byBjb3ZlciBhYm91dCAyMCBkZWdyZWVzIG9uIHRo ZSBza3kgKDQwIHRpbWVzIHRoZSBhcHBhcmVudCBkaWFtZXRlciBvZiB0aGUgZnVsbCBtb29uKSBj b3JyZXNwb25kaW5nIHRvIHdlbGwgb3ZlciAzIG1pbGxpb24gbWlsZXMuIGF0IHRoZSBkaXN0YW5j ZSBvZiB0aGUgY29tZXQuIFRoZSB3b3JkIGNvbWV0LCByZWZlcnJpbmcgdG8gdGhlIHRhaWwsIGRl cml2ZXMgZnJvbSB0aGUgR3JlZWsgImFzdGVyIGtvbWV0ZXMiLCBtZWFuaW5nIGxvbmctaGFpcmVk IHN0YXIgLSBhbmQgdGhlIGhhaXIgb2YgY29tZXQgSHlha3V0YWtlIGNvbnRpbnVlcyB0byBncm93 IGFzIGl0IG5lYXJzIHRoZSBTdW4hIFRoZSB0YWlsIGdyb3dzIGFzIHRoZSBzdW4gaGVhdHMgYW5k IHN1YmxpbWF0ZXMgKGNoYW5nZXMgZGlyZWN0bHkgZnJvbSBzb2xpZCB0byBnYXMpIHRoZSBtYXRl cmlhbCBvbiB0aGUgaWN5IHN1cmZhY2Ugb2YgdGhlIGNvbWV0IG51Y2xldXMsIHNlbmRpbmcgamV0 cyBvZiBnYXMgYW5kIGR1c3QgaW50byBzcGFjZS4gVGhlIG1hdGVyaWFsIGlzIHN3ZXB0IGJhY2sg YnkgdGhlIHNvbGFyIHdpbmQsIHNvIGNvbWV0IHRhaWxzIHVzdWFsbHkgcG9pbnQgYXdheSBmcm9t IHRoZSBzdW4gcmF0aGVyIHRoYW4gc2ltcGx5IHRyYWlsaW5nIGFsb25nIGJlaGluZCBpbiB0aGUg Y29tZXRzJycgb3JiaXQuIFNvbWUgcHJlZGljdCB0aGUgdGFpbCB3aWxsIGdyb3cgb3ZlciB0aGUg bmV4dCBmZXcgZGF5cyB0byBuZWFybHkgNTAgZGVncmVlcy4gRm9yIHRoZSByZXN0IG9mIE1hcmNo IGFuZCBtb3N0IG9mIEFwcmlsIENvbWV0IEh5YWt1dGFrZSB3aWxsIGJlIHZpc2libGUgdG8gTm9y dGhlcm4gdmlld2VycyAod2VhdGhlciBwZXJtaXR0aW5nKS4gVGhlIHRhaWwgd2lsbCBiZSBtb3N0 IHZpc2libGUgZnJvbSBkYXJrIHNreSBhcmVhcy4gTW9vbmxpdCBza2llcyB3aWxsIHRlbmQgdG8g d2FzaG91dCB0aGUgY29tZXQgYXMgdGhlIEFwcmlsIDNyZCBmdWxsIG1vb24gYXBwcm9hY2hlcyAt IGhvd2V2ZXIsIG9uIEFwcmlsIDNyZCwgdGhlcmUgd2lsbCBiZSBhIGx1bmFyIGVjbGlwc2UgISBM YXRlc3QgQ29tZXQgSHlha3V0YWtlIGltYWdlczogQ3JuaSBWcmggT2JzZXJ2YXRvcnksIFNsb3Zl bmlhLCBGYXlldHRldmlsbGUgT2JzZXJ2ZXItVGltZXMnLCAnMTk5Ni0wMy0yNCcsICdjb21ldCwg Y29tZXQgSHlha3V0YWtlJywgOTcpOwoKLS0gdG8gJ25ldXRyaW5vfChkYXJrICYgbWF0dGVyKScK SU5TRVJUIElOVE8gYXBvZCBWQUxVRVMgKCdKdXBpdGVyJydzIENvbG9yZnVsIENsb3VkcycsICdX aGF0IG1ha2VzIHRoZSBjb2xvcnMgaW4gSnVwaXRlcicncyBjbG91ZHMgPyBXaXRoIGEgbWVhbiB0 ZW1wZXJhdHVyZSBvZiAxMjAgZGVncmVlcyBLZWx2aW4gKC0xNTMgZGVncmVlcyBDZWxzaXVzKSBh bmQgYSBjb21wb3NpdGlvbiBkb21pbmF0ZWQgYnkgSHlkcm9nZW4gKGFib3V0IDkwJSksIGFuZCBI ZWxpdW0gKGFib3V0IDEwJSkgd2l0aCBhIHNtYXR0ZXJpbmcgb2YgaHlkcm9nZW4gY29tcG91bmRz IGxpa2UgbWV0aGFuZSBhbmQgYW1tb25pYSwgYXN0cm9ub21lcnMgaGF2ZSBiZWVuIGhhcmQgcHJl c3NlZCB0byBleHBsYWluIHRoZSBibHVlLCBvcmFuZ2UgYW5kIGJyb3duIGNsb3VkIGJhbmRzIGFu ZCB0aGUgc2FsbW9uIGNvbG9yZWQgInJlZCIgc3BvdC4gVHJvdWJsZSBpcyAtLSBhdCB0aGUgY29v bCBjbG91ZCB0ZW1wZXJhdHVyZXMgSnVwaXRlcicncyBhdG1vc3BoZXJpYyBjb25zdGl0dWVudHMg c2hvdWxkIGJlIGNvbG9ybGVzcyEgU29tZSBzdWdnZXN0IHRoYXQgbW9yZSBjb2xvcmZ1bCBoeWRy b2dlbiBjb21wb3VuZHMgd2VsbCB1cCBmcm9tIHdhcm1lciByZWdpb25zIGluIHRoZSBhdG1vc3Bo ZXJlLCB0aW50aW5nIHRoZSBjbG91ZCB0b3BzLiBBbHRlcm5hdGl2ZWx5LCBjb21wb3VuZHMgb2Yg dHJhY2UgZWxlbWVudHMgbGlrZSBzdWxmdXIgbWF5IGNvbG9yIHRoZSBjbG91ZHMuIFRoZSBjb2xv cnMgZG8gaW5kaWNhdGUgdGhlIGNsb3VkcycnIGFsdGl0dWRlcywgYmx1ZSBpcyBsb3dlc3QgdGhy b3VnaCByZWQgYXMgaGlnaGVzdC4gVGhlIGRhcmsgY29sb3JlZCBiYW5kcyBhcmUgY2FsbGVkIGJl bHRzIGFuZCB0aGUgbGlnaHQgY29sb3JlZCBvbmVzIHpvbmVzLiBJbiBhZGRpdGlvbiB0byB0aGUg YmVsdHMgYW5kIHpvbmVzLCB0aGUgVm95YWdlciBtaXNzaW9ucyByZXZlYWxlZCB0aGUgcHJlc2Vu Y2Ugb2YgaW50cmljYXRlIHZvcnRpY2VzIHZpc2libGUsIGZvciBleGFtcGxlLCBpbiB0aGlzIDE5 NzkgaW1hZ2UgZnJvbSB0aGUgVm95YWdlciBJIGZseWJ5LiBDZW50dXJpZXMgb2YgdmlzdWFsIG9i c2VydmF0aW9ucyBvZiBKdXBpdGVyIGhhdmUgcmV2ZWFsZWQgdGhhdCB0aGUgY29sb3JzIG9mIGl0 cyBjbG91ZHMgYXJlIGV2ZXIgY2hhbmdpbmcuJywgJzE5OTYtMDgtMDMnLCAnSnVwaXRlciwgY2xv dWRzJywgMjIpOwpJTlNFUlQgSU5UTyBhcG9kIFZBTFVFUyAoJ0dpYW50IENsdXN0ZXIgQmVuZHMs IEJyZWFrcyBHYWxheHkgSW1hZ2VzJywgJ1doYXQgYXJlIHRob3NlIHN0cmFuZ2UgYmx1ZSBvYmpl Y3RzPyBNYW55IGFyZSBpbWFnZXMgb2YgYSBzaW5nbGUsIHVudXN1YWwsIGJlYWRlZCwgYmx1ZSwg cmluZy1saWtlIGdhbGF4eSB3aGljaCBqdXN0IGhhcHBlbnMgdG8gbGluZS11cCBiZWhpbmQgYSBn aWFudCBjbHVzdGVyIG9mIGdhbGF4aWVzLiBDbHVzdGVyIGdhbGF4aWVzIGhlcmUgYXBwZWFyIHll bGxvdyBhbmQgLS0gdG9nZXRoZXIgd2l0aCB0aGUgY2x1c3RlcicncyBkYXJrIG1hdHRlciAtLSBh Y3QgYXMgYSBncmF2aXRhdGlvbmFsIGxlbnMuIEEgZ3Jhdml0YXRpb25hbCBsZW5zIGNhbiBjcmVh dGUgc2V2ZXJhbCBpbWFnZXMgb2YgYmFja2dyb3VuZCBnYWxheGllcywgYW5hbG9nb3VzIHRvIHRo ZSBtYW55IHBvaW50cyBvZiBsaWdodCBvbmUgd291bGQgc2VlIHdoaWxlIGxvb2tpbmcgdGhyb3Vn aCBhIHdpbmUgZ2xhc3MgYXQgYSBkaXN0YW50IHN0cmVldCBsaWdodC4gVGhlIGRpc3RpbmN0aXZl IHNoYXBlIG9mIHRoaXMgYmFja2dyb3VuZCBnYWxheHkgLS0gd2hpY2ggaXMgcHJvYmFibHkganVz dCBmb3JtaW5nIC0tIGhhcyBhbGxvd2VkIGFzdHJvbm9tZXJzIHRvIGRlZHVjZSB0aGF0IGl0IGhh cyBzZXBhcmF0ZSBpbWFnZXMgYXQgNCwgOCwgOSBhbmQgMTAgbycnY2xvY2ssIGZyb20gdGhlIGNl bnRlciBvZiB0aGUgY2x1c3Rlci4gUG9zc2libHkgZXZlbiB0aGUgYmx1ZSBzbXVkZ2UganVzdCBs ZWZ0IG9mIGNlbnRlciBpcyB5ZXQgYW5vdGhlciBpbWFnZSEgVGhpcyBzcGVjdGFjdWxhciBwaG90 byBmcm9tIEhTVCB3YXMgdGFrZW4gaW4gT2N0b2JlciAxOTk0LiBUaGUgZmlyc3QgY2x1c3RlciBs ZW5zIHdhcyBmb3VuZCB1bmV4cGVjdGVkbHkgYnkgUm9nZXIgTHluZHMgKCBOT0FPICkgYW5kIFZh aGUgUGV0cm9zaWFuICggU3RhbmZvcmQgKSBpbiAxOTg2IHdoaWxlIHRlc3RpbmcgYSBuZXcgdHlw ZSBvZiBpbWFnaW5nIGRldmljZS4gTGVuc2VkIGFyY3MgYXJvdW5kIHRoaXMgY2x1c3RlciwgQ0ww MDI0KzE2NTQsIHdlcmUgZmlyc3QgZGlzY292ZXJlZCBmcm9tIHRoZSBncm91bmQgYnkgRGF2aWQg S29vICggVUNPIExpY2sgKSBpbiAxOTg4LiBDb25ncmF0dWxhdGlvbnM6IEh1YmJsZSBTcGFjZSBU ZWxlc2NvcGUgaXMgc2l4IHllYXJzIG9sZCB0b2RheSEnLCAnMTk5Ni0wNC0yNCcsICdjbHVzdGVy JywgMTQ4KTsKCg== ------=_20080111223402_10173--