QWNjZWxsZXJhIFVWTSAxLjFkIFJlbGVhc2UgTm90ZXMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCkphbnVhcnkgMjUsIDIwMTMKCgpHZW5lcmFsIE92ZXJ2aWV3Ci0tLS0tLS0tLS0tLS0tLS0KClRoaXMgaXMgcmVsZWFzZSAxLjFkIG9mIHRoZSBVbml2ZXJzYWwgVmVyaWZpY2F0aW9uIE1ldGhvZG9sb2d5IChVVk0pIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBmcm9tIEFjY2VsbGVyYS6gIFRoaXMgZGlzdHJpYnV0aW9uIGluY2x1ZGVzIGEgU3lzdGVtVmVyaWxvZyBiYXNlZCBjbGFzcyBsaWJyYXJ5LCBleGFtcGxlcywgVXNlcidzIEd1aWRlLCBhbmQgYW4gdXBkYXRlZCBSZWZlcmVuY2UgaW4gSFRNTCBmb3JtLiBUaGUgVVZNIFN0YW5kYXJkIFJlZmVyZW5jZaBQREYgaXMgbm90IGluY2x1ZGVkIGluIHRoaXMgcmVsZWFzZS4gSXQgd2lsbCBub3QgYmUgdXBkYXRlZCB1bnRpbCB0aGUgbmV4dCBtYWpvciByZWxlYXNlLCBpLmUuIFVWTSAxLjIuCgpUaGUgY2xhc3MgbGlicmFyeSBpcyBhIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgc3RhbmRhcmQuIEl0LCB0aGUgZXhhbXBsZXMsIGFuZCBVc2VyIEd1aWRlIHByb3ZpZGUgZ3VpZGFuY2UgdG8gdXNlcnMgb2YgdGhlIHN0YW5kYXJkLiBGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB0aGUgQWNjZWxsZXJhIHN0YW5kYXJkLCBzZWUKCiAgICAgaHR0cDovL3d3dy5hY2NlbGxlcmEub3JnL2FjdGl2aXRpZXMvdmlwCgpBIGdvb2Qgc291cmNlIGZvciBpbmZvcm1hdGlvbiwgYW5zd2VycywgYW5kIHJlc291cmNlcyBpcyBodHRwOi8vd3d3LnV2bXdvcmxkLm9yZy6gIEl0IGNvbnRhaW5zIGZvcnVtcyBvbiBtZXRob2RvbG9neSwgdG9vbCBzcGVjaWZpYyBpc3N1ZXMsIGFuZCBjb21tZXJjaWFsIGFubm91bmNlbWVudHMuoCBJdCBhbHNvIGhhcyBsaW5rcyB0byBhZGRpdGlvbmFsIHJlc291cmNlcywgQWNjZWxsZXJhIHNwb25zb3JlZCBldmVudHMsIGFuZCBvdGhlciBVVk0gZXZlbnRzLgoKCldoYXQncyBDaGFuZ2VkCi0tLS0tLS0tLS0tLS0tCgpSZWxlYXNlIDEuMWQgY29udGFpbnMgZml4ZXMgdG8gZXJyYXRhLiBTb21lIGVycmF0YSBpbnZvbHZlIGNoYW5nZXMgdG8gdGhlIFVWTSByZWZlcmVuY2UgZG9jdW1lbnRhdGlvbiBpbiBjYXNlcyB3aGVyZSB0aGUgc3RhdGVkIGJlaGF2aW9yIHdhcyB1bmNsZWFyIG9yIGRpZCBub3QgY29tcGx5IHdpdGggaW50ZW5kZWQgYmVoYXZpb3IuIFN1Y2ggY2hhbmdlcyB3aWxsIG9ubHkgYmUgcmVmbGVjdGVkIGluIHRoZSBIVE1MIGRvY3VtZW50YXRpb24gaW5jbHVkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiBDaGFuZ2VzIHRvIHRoZSBhY3R1YWwgc3RhbmRhcmQgUERGIGRvY3VtZW50IHdpbGwgbm90IG9jY3VyIHVudGlsIHRoZSBuZXh0IG51bWJlcmVkIHJlbGVhc2UsIGkuZS4gVVZNIDEuMi4KClVWTSAxLjFkIGZpeGVzIHRoZSBmb2xsb3dpbmcgaXNzdWVzIHJlcG9ydGVkIHVuZGVyIHRoZSBNYW50aXMgYnVnLXRyYWNraW5nIHN5c3RlbS4gSXNzdWVzIGFmZmVjdGluZyB0aGUgcmVmZXJlbmNlIGRvY3VtZW50YXRpb24gKEFQSSBjaGFuZ2VzIG9yIHNlbWFudGljIGNoYW5nZXMpIGFyZSBwcmVjZWRlZCB3aXRoIGFuIGFzdGVyaXNrICgqKS4KCkZvciBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiBhIHNwZWNpZmljIGlzc3VlLCByZWZlciB0byB0aGUgTWFudGlzIGRhdGFiYXNlIGF0IGh0dHA6Ly93d3cuZWRhLm9yZy9zdmRiL3ZpZXcucGhwP2lkPTxpZD4sIHdoZXJlIDxpZD4gaXMgdGhlIE1hbnRpcyBpZC4KCgoKCk1hbnRpcyAzNDc3LCBmaXhlZCBpc3N1ZSB3aGVyZSBhIHV2bV9oZWFydGJlYXQgb2JqZWN0IGJlaW5nIHN0YXJ0ZWQgdHdpY2UsIHdoZXJlIGZpcnN0IHN0YXJ0IHdhcyBwcm92aWRlZCBhbiBldmVudCBhbmQgc2Vjb25kIHN0YXJ0IHdhcyBub3QgcHJvdmlkZWQgYW4gZXZlbnQsIGNhdXNlZCBzaW11bGF0aW9uIHRvIGNyYXNoLgoKTWFudGlzIDM1NjgsIGZpeGVkIGlzc3VlIHdpdGggYHV2bV9kb19vYmpfY2FsbGJhY2tzX2V4aXRfb24gbWFjcm8gaGF2aW5nIGEgU3lzdGVtIFZlcmlsb2cgZnVuY3Rpb24gk3JldHVybpQgc3RhdGVtZW50IHdoZXJlIHRoZSBtYWNybyBkb2VzIG5vdCBuZWVkIHRvIGJlIGNhbGxlZCBmcm9tIGEgZnVuY3Rpb24uIFRoZSBmaXhlZCBtYWNybyBub3cganVzdCBleGl0cyB0aGUgbG9vcCB3aXRob3V0IGNhbGxpbmcgk3JldHVybpQuCgpNYW50aXMgMzc4NiwgZml4ZWQgcG90ZW50aWFsIHJhY2UgaXNzdWUgYmV0d2VlbiB0d28gc3RhdGljIGluaXRpYWxpemF0aW9ucyBhbmQgdXNhZ2UuIFRoZSBpc3N1ZSBpcyB3aXRoIHRoZSB1dm1fY2FsbGJhY2tzIyh1dm1fcmVwb3J0X29iamVjdCx1dm1fY2FsbGJhY2spOjptX3RfaW5zdC5tX3R3X2NiX3EgdmFyaWFibGUgdGhhdCBpcyBzdGF0aWMgaW5pdGlhbGl6ZWQgaW4gdGhlIGxpYnJhcnkgYW5kIGNvdWxkIGJlIHVzZWQgYnkgYSB1c2VyIHN0YXRpY2FsbHkgaW5pdGlhbGl6ZWQgb2JqZWN0LgoKTWFudGlzIDM5NjcsIHByb3ZpZGVkIGJldHRlciBVVk1fRkFUQUwgbWVzc2FnZSB3aGVuIG11bHRpcGxlIHRocmVhZHMgaW52b2tlIGdldF9uZXh0X2l0ZW0oKSBzaW11bHRhbmVvdXNseS4KIApNYW50aXMgNDA3MywgZml4ZWQgaXNzdWUgd2hlcmUgdXZtX3JlcG9ydF9jYXRjaGVyIGRlYWRsb2NrcyB3aGVuIGNhbGxiYWNrX21vZGUgaXMgMC4KCk1hbnRpcyA0MTYxLCBmaXhlZCBpc3N1ZSB3aGVyZSB1dm1fcmVfbWF0Y2ggZnVuY3Rpb24gdXNlZCBhIHN0cmluZyBpbmRleCBvdXRzaWRlIHRoZSBzdHJpbmcgaW5kZXggcmFuZ2UuCgpNYW50aXMgNDE2NSwgY2hhbmdlZCBkb2N1bWVudGF0aW9uIGZvciB1dm1fcmVwb3J0X3NlcnZlciBjb25zdHJ1Y3Rvci4gRG9jdW1lbnRhdGlvbiBzdGF0ZWQgaW5jb3JyZWN0bHkgdGhhdCB1dm1fcmVwb3J0X3NlcnZlciB3YXMgYSBzaW5nbGV0b24uIFRoaXMgc3RhdGVtZW50IHdhcyByZW1vdmVkLgoKTWFudGlzIDQxNjgsIGZpeGVkIGlzc3VlIHdoZXJlIGJpdCBiYXNoIGlnbm9yZXMgYWNjZXNzIHJpZ2h0cyAoaS5lLiB1dm1fcmVnX21hcDo6YWRkX3JlZygucmlnaHRzKCkpKSB3aGVuIHRoZXJlIGlzIG9ubHkgb25lIHJlZ2lzdGVyIG1hcC4gSXQgd2FzIGlnbm9yZWQgZHVlIHRvIGFuIGluY29ycmVjdCBvcHRpbWl6YXRpb24uCgpNYW50aXMgNDE5MCwgZml4ZWQgaXNzdWUgd2hlcmUgc2ltcGxlIHNlcXVlbmNlIGV4YW1wbGUgd2FzIG5vdCByZWFsbHkgdXNpbmcgYSBzaW1wbGUgc2VxdWVuY2UgYXBwcm9hY2guIFRoZSBleGFtcGxlIGRpc3RyaWIvZXhhbXBsZXMvc2ltcGxlL3NlcXVlbmNlL2Jhc2ljX3JlYWRfd3JpdGVfc2VxdWVuY2UvdG9wLnN2IHdhcyBmaXhlZC4KCk1hbnRpcyA0MjE0LCBmaXhlZCBpc3N1ZSB3aXRoIHVzYWdlIG9mIGdlbmVyaWMgbmFtZSAibWF4IiBhcyBhIGdsb2JhbGx5IHNjb3BlZCB2YXJpYWJsZS4gVmFyaWFibGUgd2FzIHBsYWNlZCB3aXRoaW4gdGhlIHV2bV9zcGVsbF9jaGtyIGNsYXNzIHNjb3BlLgoKTWFudGlzIDQyMzUgZml4ZWQgaXNzdWUgd2l0aCB2ZW5kb3IgZGVwZW5kZW50IGNvZGUgZm9yIHV2bV9yZWNvcmRfYXR0cmlidXRlIG1hY3JvLCB3aGljaCB3b3VsZCBub3QgZ2V0IGRlZmluZWQgZm9yIGEgc2ltdWxhdG9yIHRoYXQgaXMgbm90IGZyb20gTWVudG9yLCBTeW5vcHN5cyBvciBDYWRlbmNlLgoKTWFudGlzIDQyNTEsIGZpeGVkIGlzc3VlIHdpdGggc3BlY2lmeWluZyBsZW5ndGggb2YgYnVyc3QgcmVhZHMuCgpNYW50aXMgNDI1NiwgZml4ZWQgaXNzdWUgd2l0aCBtYWNybyBVVk1fU0VRX0lURU1fUFVMTF9JTVAgYmVpbmcgZGVmaW5lZCB0d2ljZS4gT25lIG9mIHRoZSBkZWZpbml0aW9ucyB3YXMgcmVtb3ZlZC4KCk1hbnRpcyA0MjY4LCBmaXhlZCBpc3N1ZSB3aGVyZSByZWdpc3RlcnMgdGhhdCBoYXZlIHRoZSBhdHRyaWJ1dGUgV1NSQyBhbmQgV0NSUyBhcmUgbm90IHByb3Blcmx5IGJlaW5nIHByZWRpY3RlZCBmb3IgcmVhZCBvcGVyYXRpb25zLiBXcml0ZSBvcGVyYXRpb25zIHdlcmUgZmluZS4KCk1hbnRpcyA0Mjk3LCBmaXhlZCBpc3N1ZSwgd2l0aCB1c2Ugb2Ygc2V0X2F1dG9fcHJlZGljdCgxKSB3aGVyZSB0aGUgcmV0dXJuIHN0YXR1cyBmcm9tIGFjY2Vzc2VzIG9uIHRoZSBCRk0gd2lsbCBnZXQgb3ZlcndyaXR0ZW4gYW5kIHJlcGxhY2VkIGJ5IFVWTV9JU19PSy4gRXJyb3JzIG9uIHRoZSBidXMgd2hpY2ggaXMgaW4gdGhlIHV2bV9yZWdfYWRhcHRlcjo6YnVzMnJlZygpIGFyZSBzZXQgdG8gcncuc3RhdHVzID0gVVZNX05PVF9PSyBvciBVVk1fSEFTX1ggYW5kIHdpbGwgbmV2ZXIgYmUgc2VlbiBieSBjYWxsZXJzIG9yIHRoZSByZXBvcnRpbmcgc3lzdGVtLgoKTWFudGlzIDQyOTksIGZpeGVkIGRvY3VtZW50YXRpb24gZm9yIHV2bV9zZXF1ZW5jZV9iYXNlOjpraWxsLiBUaGVyZSB3YXMgYW4gaW5jb21wbGV0ZSBzZW50ZW5jZS4KCk1hbnRpcyA0MzAxLCBmaXhlZCBkb2N1bWVudGF0aW9uIGZvciB1dm1fY29uZmlnX2RiOjpzZXQuIFRoZSBkb2N1bWVudGF0aW9uIHdhcyB1bmNsZWFyIG9uIGhvdyB0aGUgc2VhcmNoIHNjb3BlIGlzIGNyZWF0ZWQgZnJvbSB0aGUgaW5zdGFuY2UgbmFtZSBhbmQgY29udGV4dC4KCk1hbnRpcyA0MzEzLCBmaXhlZCBpc3N1ZSB3aGVyZSB0aGUgdXZtX2NvbXBvbmVudDo6YXBwbHlfY29uZmlnX3NldHRpbmdzIG1ldGhvZCBzaWxlbnRseSBmYWlsZWQgd2hlbiB0aGUgdHlwZSBvZiB0aGUgY29uZmlndXJhdGlvbiBvYmplY3QgaXMgbm90IHN1cHBvcnRlZC4gVGhlIGlzc3VlIGhhcHBlbnMgd2hlbiAkY2FzdCBjYWxsIGZhaWxzIHdpdGhpbiB0aGUgbWV0aG9kLgoKTWFudGlzIDQzMTUsIGZpeGVkIGlzc3VlIHdoZXJlIGNvbmZpZ19kYiBzZXR0aW5nIHByZWNlZGVuY2Ugd2FzIG5vdCB3b3JraW5nIGFjY29yZGluZyB0byBzcGVjaWZpY2F0aW9uIHdoZW4gY2FsbGVkIGluIGEgZGVzY2VuZGVudCBvYmplY3QuCgpNYW50aXMgNDMxNiwgZml4ZWQgZG9jdW1lbnRhdGlvbiwgY2xhcmlmaWVkIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIFVWTV9BTExfT04gYW5kIFVWTV9ERUZBVUxUIHVzZWQgaW4gdGhlIHV2bV9vYmplY3RfdXRpbCBtYWNyb3MuCgpNYW50aXMgNDMyMiwgZml4ZWQgaXNzdWUgd2hlcmUgdGhlICJ1dm1fcmFuZF9zZW5kKiIgZ3JvdXAgb2YgbWFjcm9zIGRpZCBub3Qgd29yayB3aGVuIHRoZSBzZXF1ZW5jZV9pdGVtIGV4ZWN1dGVzIG9uIGFub3RoZXIgdHlwZSBvZiBzZXF1ZW5jZXIuIFRoZSBjb2RlIGZhaWxlZCB3aGVuIGRvaW5nIGEgJGNhc3QgdG8gdGhlIGluYXBwcm9wcmlhdGUgdHlwZS4KCk1hbnRpcyA0MzIzLCBkaWQgYSBnZW5lcmFsIGNsZWFudXAuIFRob3JvdWdobHkgd2VudCB0aHJvdWdoIHRoZSBVVk0gY29kZSByZW1vdmluZyBvbGQgd29ya2Fyb3VuZHMgZHVlIHRvIHRvb2wgbGltaXRhdGlvbnMuCgpNYW50aXMgNDMyNCwgZml4ZWQgaXNzdWUgd2hlcmUgZXh0cmEgbG9uZyBkYXRhIGluIGNvbHVtbnMgb2YgYSB0YWJsZSBwcmludGVyIGRlc3Ryb3lzIHRoZSBmb3JtYXR0aW5nIG9mIHRoZSByZXN0IG9mIHRoZSB0YWJsZS4KCk1hbnRpcyA0MzI3LCBhZGRlZCBpbnN0cnVjdGlvbnMgb24gaG93IHRvIHJ1biB0aGUgZXhhbXBsZXMgaW4gdGhlIHJlbGVhc2VkIHRhciBiYWxsLgoKTWFudGlzIDQzMjksIGZpeGVkIGlzc3VlIHdoZXJlIGxhcmdlIHRpbWVvdXQgdmFsdWVzIHdlcmUgbm90IGhvbm9yZWQgY29ycmVjdGx5LiBUaGUgaXNzdWUgd2FzIHdpdGggbnVtYmVycyB0aGF0IHJlcXVpcmVkIG1vcmUgdGhhbiAzMiBiaXRzIHRvIHJlcHJlc2VudC4KCk1hbnRpcyA0MzMxLCBmaXhlZCBkb2N1bWVudGF0aW9uLCBhZGRlZCBhIGRlc2NyaXB0aW9uIGZvciB0aGUgVVZNX0NCX1RSQUNFX09OIGZsYWcgdXNlZCBpbiB0aGUgY2FsbGJhY2sgZnVuY3Rpb25zLgoKTWFudGlzIDQzMzMsIGZpeGVkIGlzc3VlIHdpdGggcmVnaXN0ZXIgbGlicmFyeSB3aGVyZSwgc2V0LCBmb2xsb3dlZCBieSBtaXJyb3Igd2l0aCBDSEVDSyBjYXVzZWQgZmFsc2UgZXJyb3JzLgoKTWFudGlzIDQzNDEsIGZpeGVkIGlzc3VlIHdoZXJlIHV2bV9wcmludGVyX2tub2JzOjpzZXBhcmF0b3IgdmFyaWFibGUgd2FzIG5vdCB1c2VkLiBUaGUgdmFyaWFibGUgd2FzIHJlbW92ZWQuCgpNYW50aXMgNDM0MiwgZml4ZWQgaXNzdWUgd2hlcmUgZHBpIGNvbXBpbGUgb24gQUlYIHJlc3VsdGVkIGluIHdhcm5pbmcgbWVzc2FnZXMuCgpNYW50aXMgNDM0NCwgZml4ZWQgZG9jdW1lbnRhdGlvbiwgc2hvd2VkIGhvdyB0byB1c2Ugk3V2bV9zZXF1ZW5jZV9iYXNlOjp3YWl0X2Zvcl9zZXF1ZW5jZV9zdGF0ZSgpkyBmb3Igd2FpdGluZyBvbiBhIHNlcXVlbmNlIHN0YXRlLCBwcmV2aW91c2x5IGFuIGluY29ycmVjdC9iYWQgd2F5IHdhcyB1c2VkLgoKKCopIE1hbnRpcyA0MzQ1LCBmaXhlZCBpc3N1ZSB3aGVyZSB1dm1fc2VxdWVuY2VfYmFzZTo6d2FpdF9mb3Jfc2VxdWVuY2Vfc3RhdGUoKSBkaWQgbm90IHN1cHBvcnQgd2FpdGluZyBmb3IgbW9yZSB0aGFuIG9uZSBzdGF0ZS4KCk1hbnRpcyA0MzQ3LCBmaXhlZCBpc3N1ZSB3aGVyZSByZWdpc3RlciBtYXAgd2FybmluZyBmb3IsIGRpZmZlcmVudCBidXMgc2l6ZXMgYmV0d2VlbiBwYXJlbnQgYW5kIGNoaWxkIG1hcHMsIHdhcyBpbmNvcnJlY3QuCgpNYW50aXMgNDM1MSwgYWRkZWQgZG9jdW1lbnRhdGlvbiB0byB1c2UgdXZtX3Jvb3Q6OmdldCgpIGluc3RlYWQgb2YgdXZtX3RvcCB3aGVuIGFjY2Vzc2luZyB0b3AgbGV2ZWwgaW4gdGhlIGxvZ2ljYWwgaGllcmFyY2h5LiBUaGlzIGlzIGEgc2FmZXIgd2F5IHRvIGFjY2VzcyBhIHN0YXRpYyB2YXJpYWJsZSBhbmQgbm90IHRvIGJlIGRlcGVuZGVudCBvbiB0aGUgaW5pdGlhbGl6YXRpb24gb3JkZXIuCgpNYW50aXMgNDM4MCwgZml4ZWQgaXNzdWUgd2l0aCBpbmNvcnJlY3QgZm9ybWF0dGluZyBzaXplcyBpbiB1dm1fdGFibGVfcHJpbnRlci4gVGhlIHRhYmxlIHNpemVzIHdoZXJlIG5vdCBjbGVhcmVkIGJldHdlZW4gdHdvIGNhbGN1bGF0aW9ucy4KCigqKSBNYW50aXMgNDM4MywgYWRkZWQgYSBnZW5lcmljIHJlcG9ydCBtZXRob2QgaW4gdGhlIHV2bV9yZXBvcnRfb2JqZWN0IGNsYXNzLiBUaGlzIHNpbXBsaWZpZXMgd3JpdGluZyB1c2VyIGNvZGUgdGhhdCBvdmVycmlkZXMgdGhlIGJlaGF2aW9yIG9mIHRoZSBkaWZmZXJlbnQgcmVwb3J0IG1ldGhvZHMuCgpNYW50aXMgNDM4OCwgZml4ZWQgaXNzdWUgd2hlcmUgdGhlIG9iamVjdGlvbiBtZWNoYW5pc20gd2FzIG5vdCByb2J1c3QgYWdhaW5zdCBpbi1kZXRlcm1pbmFudCBwcm9jZXNzIG9yZGVyLgoKTWFudGlzIDQ0MjMsIGZpeGVkIGlzc3VlIHdpdGggYnJva2VuIEhUTUwgc291cmNlIGxpbmtzLgoKTWFudGlzIDQ0NjUsIGFkZGVkIHN1cHBvcnQgdG8gZGlzYWJsZSByZXNvdXJjZSBjb252ZXJ0ZXIgYW5kIHVzZSBWQ1MgbmF0aXZlIGNvbnZlcnNpb24KCgo=