ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQ2hhbmdlcyBiL0RvY3VtZW50YXRpb24vQ2hhbmdlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWE2YTU1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9DaGFuZ2VzCkBAIC0wLDAgKzEsNDEwIEBACitJbnRybworPT09PT0KKworVGhpcyBkb2N1bWVudCBpcyBkZXNpZ25lZCB0byBwcm92aWRlIGEgbGlzdCBvZiB0aGUgbWluaW11bSBsZXZlbHMgb2YKK3NvZnR3YXJlIG5lY2Vzc2FyeSB0byBydW4gdGhlIDIuNiBrZXJuZWxzLCBhcyB3ZWxsIGFzIHByb3ZpZGUgYnJpZWYKK2luc3RydWN0aW9ucyByZWdhcmRpbmcgYW55IG90aGVyICJHb3RjaGFzIiB1c2VycyBtYXkgZW5jb3VudGVyIHdoZW4KK3RyeWluZyBsaWZlIG9uIHRoZSBCbGVlZGluZyBFZGdlLiAgSWYgdXBncmFkaW5nIGZyb20gYSBwcmUtMi40LngKK2tlcm5lbCwgcGxlYXNlIGNvbnN1bHQgdGhlIENoYW5nZXMgZmlsZSBpbmNsdWRlZCB3aXRoIDIuNC54IGtlcm5lbHMgZm9yCithZGRpdGlvbmFsIGluZm9ybWF0aW9uOyBtb3N0IG9mIHRoYXQgaW5mb3JtYXRpb24gd2lsbCBub3QgYmUgcmVwZWF0ZWQKK2hlcmUuICBCYXNpY2FsbHksIHRoaXMgZG9jdW1lbnQgYXNzdW1lcyB0aGF0IHlvdXIgc3lzdGVtIGlzIGFscmVhZHkKK2Z1bmN0aW9uYWwgYW5kIHJ1bm5pbmcgYXQgbGVhc3QgMi40Lngga2VybmVscy4KKworVGhpcyBkb2N1bWVudCBpcyBvcmlnaW5hbGx5IGJhc2VkIG9uIG15ICJDaGFuZ2VzIiBmaWxlIGZvciAyLjAueCBrZXJuZWxzCithbmQgdGhlcmVmb3JlIG93ZXMgY3JlZGl0IHRvIHRoZSBzYW1lIHBlb3BsZSBhcyB0aGF0IGZpbGUgKEphcmVkIE1hdWNoLAorQXhlbCBCb2xkdCwgQWxlc3NhbmRybyBTaWdhbGEsIGFuZCBjb3VudGxlc3Mgb3RoZXIgdXNlcnMgYWxsIG92ZXIgdGhlCisnbmV0KS4KKworVGhlIGxhdGVzdCByZXZpc2lvbiBvZiB0aGlzIGRvY3VtZW50LCBpbiB2YXJpb3VzIGZvcm1hdHMsIGNhbiBhbHdheXMKK2JlIGZvdW5kIGF0IDxodHRwOi8vY3liZXJidXp6LmdhdGVjaC5lZHUva2Fib29tL2xpbnV4L0NoYW5nZXMtMi40Lz4uCisKK0ZlZWwgZnJlZSB0byB0cmFuc2xhdGUgdGhpcyBkb2N1bWVudC4gIElmIHlvdSBkbyBzbywgcGxlYXNlIHNlbmQgbWUgYQorVVJMIHRvIHlvdXIgdHJhbnNsYXRpb24gZm9yIGluY2x1c2lvbiBpbiBmdXR1cmUgcmV2aXNpb25zIG9mIHRoaXMKK2RvY3VtZW50LgorCitTbW90cml0ZSBmaWxlIDxodHRwOi8vb2Jsb20ucm5jLnJ1L2xpbnV4L2tlcm5lbC9DaGFuZ2VzLnJ1PiwgeWF2bHlhdXNoaXN5YQorcnVzc2tpbSBwZXJldm9kb20gZGFubm9nbyBkb2N1bWVudGEuCisKK1Zpc2l0ZSA8aHR0cDovL3d3dzIuYWRpLnVhbS5lcy9+ZW5kZXIvdGVjbmljby8+IHBhcmEgb2J0ZW5lciBsYSB0cmFkdWNjafNuCithbCBlc3Bh8W9sIGRlIGVzdGUgZG9jdW1lbnRvIGVuIHZhcmlvcyBmb3JtYXRvcy4KKworRWluZSBkZXV0c2NoZSBWZXJzaW9uIGRpZXNlciBEYXRlaSBmaW5kZW4gU2llIHVudGVyCis8aHR0cDovL3d3dy5zdGVmYW4td2ludGVyLmRlL0NoYW5nZXMtMi40LjAudHh0Pi4KKworTGFzdCB1cGRhdGVkOiBPY3RvYmVyIDI5dGgsIDIwMDIKKworQ2hyaXMgUmlja2VyIChrYWJvb21AZ2F0ZWNoLmVkdSBvciBjaHJpcy5yaWNrZXJAZ2VuZXRpY3MudXRhaC5lZHUpLgorCitDdXJyZW50IE1pbmltYWwgUmVxdWlyZW1lbnRzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1VwZ3JhZGUgdG8gYXQgKmxlYXN0KiB0aGVzZSBzb2Z0d2FyZSByZXZpc2lvbnMgYmVmb3JlIHRoaW5raW5nIHlvdSd2ZQorZW5jb3VudGVyZWQgYSBidWchICBJZiB5b3UncmUgdW5zdXJlIHdoYXQgdmVyc2lvbiB5b3UncmUgY3VycmVudGx5CitydW5uaW5nLCB0aGUgc3VnZ2VzdGVkIGNvbW1hbmQgc2hvdWxkIHRlbGwgeW91LgorCitBZ2Fpbiwga2VlcCBpbiBtaW5kIHRoYXQgdGhpcyBsaXN0IGFzc3VtZXMgeW91IGFyZSBhbHJlYWR5CitmdW5jdGlvbmFsbHkgcnVubmluZyBhIExpbnV4IDIuNCBrZXJuZWwuICBBbHNvLCBub3QgYWxsIHRvb2xzIGFyZQorbmVjZXNzYXJ5IG9uIGFsbCBzeXN0ZW1zOyBvYnZpb3VzbHksIGlmIHlvdSBkb24ndCBoYXZlIGFueSBQQ01DSUEgKFBDCitDYXJkKSBoYXJkd2FyZSwgZm9yIGV4YW1wbGUsIHlvdSBwcm9iYWJseSBuZWVkbid0IGNvbmNlcm4geW91cnNlbGYKK3dpdGggcGNtY2lhLWNzLgorCitvICBHbnUgQyAgICAgICAgICAgICAgICAgIDIuOTUuMyAgICAgICAgICAgICAgICAgICMgZ2NjIC0tdmVyc2lvbgorbyAgR251IG1ha2UgICAgICAgICAgICAgICAzLjc5LjEgICAgICAgICAgICAgICAgICAjIG1ha2UgLS12ZXJzaW9uCitvICBiaW51dGlscyAgICAgICAgICAgICAgIDIuMTIgICAgICAgICAgICAgICAgICAgICMgbGQgLXYKK28gIHV0aWwtbGludXggICAgICAgICAgICAgMi4xMG8gICAgICAgICAgICAgICAgICAgIyBmZGZvcm1hdCAtLXZlcnNpb24KK28gIG1vZHVsZS1pbml0LXRvb2xzICAgICAgMC45LjEwICAgICAgICAgICAgICAgICAgIyBkZXBtb2QgLVYKK28gIGUyZnNwcm9ncyAgICAgICAgICAgICAgMS4yOSAgICAgICAgICAgICAgICAgICAgIyB0dW5lMmZzCitvICBqZnN1dGlscyAgICAgICAgICAgICAgIDEuMS4zICAgICAgICAgICAgICAgICAgICMgZnNjay5qZnMgLVYKK28gIHJlaXNlcmZzcHJvZ3MgICAgICAgICAgMy42LjMgICAgICAgICAgICAgICAgICAgIyByZWlzZXJmc2NrIC1WIDI+JjF8Z3JlcCByZWlzZXJmc3Byb2dzCitvICB4ZnNwcm9ncyAgICAgICAgICAgICAgIDIuNi4wICAgICAgICAgICAgICAgICAgICMgeGZzX2RiIC1WCitvICBwY21jaWEtY3MgICAgICAgICAgICAgIDMuMS4yMSAgICAgICAgICAgICAgICAgICMgY2FyZG1nciAtVgorbyAgcXVvdGEtdG9vbHMgICAgICAgICAgICAzLjA5ICAgICAgICAgICAgICAgICAgICAjIHF1b3RhIC1WCitvICBQUFAgICAgICAgICAgICAgICAgICAgIDIuNC4wICAgICAgICAgICAgICAgICAgICMgcHBwZCAtLXZlcnNpb24KK28gIGlzZG40ay11dGlscyAgICAgICAgICAgMy4xcHJlMSAgICAgICAgICAgICAgICAgIyBpc2RuY3RybCAyPiYxfGdyZXAgdmVyc2lvbgorbyAgbmZzLXV0aWxzICAgICAgICAgICAgICAxLjAuNSAgICAgICAgICAgICAgICAgICAjIHNob3dtb3VudCAtLXZlcnNpb24KK28gIHByb2NwcyAgICAgICAgICAgICAgICAgMy4yLjAgICAgICAgICAgICAgICAgICAgIyBwcyAtLXZlcnNpb24KK28gIG9wcm9maWxlICAgICAgICAgICAgICAgMC41LjMgICAgICAgICAgICAgICAgICAgIyBvcHJvZmlsZWQgLS12ZXJzaW9uCisKK0tlcm5lbCBjb21waWxhdGlvbgorPT09PT09PT09PT09PT09PT09CisKK0dDQworLS0tCisKK1RoZSBnY2MgdmVyc2lvbiByZXF1aXJlbWVudHMgbWF5IHZhcnkgZGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIENQVSBpbiB5b3VyCitjb21wdXRlci4gVGhlIG5leHQgcGFyYWdyYXBoIGFwcGxpZXMgdG8gdXNlcnMgb2YgeDg2IENQVXMsIGJ1dCBub3QKK25lY2Vzc2FyaWx5IHRvIHVzZXJzIG9mIG90aGVyIENQVXMuIFVzZXJzIG9mIG90aGVyIENQVXMgc2hvdWxkIG9idGFpbgoraW5mb3JtYXRpb24gYWJvdXQgdGhlaXIgZ2NjIHZlcnNpb24gcmVxdWlyZW1lbnRzIGZyb20gYW5vdGhlciBzb3VyY2UuCisKK1RoZSByZWNvbW1lbmRlZCBjb21waWxlciBmb3IgdGhlIGtlcm5lbCBpcyBnY2MgMi45NS54ICh4ID49IDMpLCBhbmQgaXQKK3Nob3VsZCBiZSB1c2VkIHdoZW4geW91IG5lZWQgYWJzb2x1dGUgc3RhYmlsaXR5LiBZb3UgbWF5IHVzZSBnY2MgMy4wLngKK2luc3RlYWQgaWYgeW91IHdpc2gsIGFsdGhvdWdoIGl0IG1heSBjYXVzZSBwcm9ibGVtcy4gTGF0ZXIgdmVyc2lvbnMgb2YgZ2NjIAoraGF2ZSBub3QgcmVjZWl2ZWQgbXVjaCB0ZXN0aW5nIGZvciBMaW51eCBrZXJuZWwgY29tcGlsYXRpb24sIGFuZCB0aGVyZSBhcmUgCithbG1vc3QgY2VydGFpbmx5IGJ1Z3MgKG1haW5seSwgYnV0IG5vdCBleGNsdXNpdmVseSwgaW4gdGhlIGtlcm5lbCkgdGhhdAord2lsbCBuZWVkIHRvIGJlIGZpeGVkIGluIG9yZGVyIHRvIHVzZSB0aGVzZSBjb21waWxlcnMuIEluIGFueSBjYXNlLCB1c2luZworcGdjYyBpbnN0ZWFkIG9mIHBsYWluIGdjYyBpcyBqdXN0IGFza2luZyBmb3IgdHJvdWJsZS4KKworVGhlIFJlZCBIYXQgZ2NjIDIuOTYgY29tcGlsZXIgc3VidHJlZSBjYW4gYWxzbyBiZSB1c2VkIHRvIGJ1aWxkIHRoaXMgdHJlZS4KK1lvdSBzaG91bGQgZW5zdXJlIHlvdSB1c2UgZ2NjLTIuOTYtNzQgb3IgbGF0ZXIuIGdjYy0yLjk2LTU0IHdpbGwgbm90IGJ1aWxkCit0aGUga2VybmVsIGNvcnJlY3RseS4KKworSW4gYWRkaXRpb24sIHBsZWFzZSBwYXkgYXR0ZW50aW9uIHRvIGNvbXBpbGVyIG9wdGltaXphdGlvbi4gIEFueXRoaW5nCitncmVhdGVyIHRoYW4gLU8yIG1heSBub3QgYmUgd2lzZS4gIFNpbWlsYXJseSwgaWYgeW91IGNob29zZSB0byB1c2UgZ2NjLTIuOTUueAorb3IgZGVyaXZhdGl2ZXMsIGJlIHN1cmUgbm90IHRvIHVzZSAtZnN0cmljdC1hbGlhc2luZyAod2hpY2gsIGRlcGVuZGluZyBvbgoreW91ciB2ZXJzaW9uIG9mIGdjYyAyLjk1LngsIG1heSBuZWNlc3NpdGF0ZSB1c2luZyAtZm5vLXN0cmljdC1hbGlhc2luZykuCisKK01ha2UKKy0tLS0KKworWW91IHdpbGwgbmVlZCBHbnUgbWFrZSAzLjc5LjEgb3IgbGF0ZXIgdG8gYnVpbGQgdGhlIGtlcm5lbC4KKworQmludXRpbHMKKy0tLS0tLS0tCisKK0xpbnV4IG9uIElBLTMyIGhhcyByZWNlbnRseSBzd2l0Y2hlZCBmcm9tIHVzaW5nIGFzODYgdG8gdXNpbmcgZ2FzIGZvcgorYXNzZW1ibGluZyB0aGUgMTYtYml0IGJvb3QgY29kZSwgcmVtb3ZpbmcgdGhlIG5lZWQgZm9yIGFzODYgdG8gY29tcGlsZQoreW91ciBrZXJuZWwuICBUaGlzIGNoYW5nZSBkb2VzLCBob3dldmVyLCBtZWFuIHRoYXQgeW91IG5lZWQgYSByZWNlbnQKK3JlbGVhc2Ugb2YgYmludXRpbHMuCisKK1N5c3RlbSB1dGlsaXRpZXMKKz09PT09PT09PT09PT09PT0KKworQXJjaGl0ZWN0dXJhbCBjaGFuZ2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRGV2RlMgaGFzIGJlZW4gb2Jzb2xldGVkIGluIGZhdm91ciBvZiB1ZGV2CisoaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9saW51eC91dGlscy9rZXJuZWwvaG90cGx1Zy8pCisKKzMyLWJpdCBVSUQgc3VwcG9ydCBpcyBub3cgaW4gcGxhY2UuICBIYXZlIGZ1biEKKworTGludXggZG9jdW1lbnRhdGlvbiBmb3IgZnVuY3Rpb25zIGlzIHRyYW5zaXRpb25pbmcgdG8gaW5saW5lCitkb2N1bWVudGF0aW9uIHZpYSBzcGVjaWFsbHktZm9ybWF0dGVkIGNvbW1lbnRzIG5lYXIgdGhlaXIKK2RlZmluaXRpb25zIGluIHRoZSBzb3VyY2UuICBUaGVzZSBjb21tZW50cyBjYW4gYmUgY29tYmluZWQgd2l0aCB0aGUKK1NHTUwgdGVtcGxhdGVzIGluIHRoZSBEb2N1bWVudGF0aW9uL0RvY0Jvb2sgZGlyZWN0b3J5IHRvIG1ha2UgRG9jQm9vaworZmlsZXMsIHdoaWNoIGNhbiB0aGVuIGJlIGNvbnZlcnRlZCBieSBEb2NCb29rIHN0eWxlc2hlZXRzIHRvIFBvc3RTY3JpcHQsCitIVE1MLCBQREYgZmlsZXMsIGFuZCBzZXZlcmFsIG90aGVyIGZvcm1hdHMuICBJbiBvcmRlciB0byBjb252ZXJ0IGZyb20KK0RvY0Jvb2sgZm9ybWF0IHRvIGEgZm9ybWF0IG9mIHlvdXIgY2hvaWNlLCB5b3UnbGwgbmVlZCB0byBpbnN0YWxsIEphZGUgYXMKK3dlbGwgYXMgdGhlIGRlc2lyZWQgRG9jQm9vayBzdHlsZXNoZWV0cy4KKworVXRpbC1saW51eAorLS0tLS0tLS0tLQorCitOZXcgdmVyc2lvbnMgb2YgdXRpbC1saW51eCBwcm92aWRlICpmZGlzayBzdXBwb3J0IGZvciBsYXJnZXIgZGlza3MsCitzdXBwb3J0IG5ldyBvcHRpb25zIHRvIG1vdW50LCByZWNvZ25pemUgbW9yZSBzdXBwb3J0ZWQgcGFydGl0aW9uCit0eXBlcywgaGF2ZSBhIGZkZm9ybWF0IHdoaWNoIHdvcmtzIHdpdGggMi40IGtlcm5lbHMsIGFuZCBzaW1pbGFyIGdvb2RpZXMuCitZb3UnbGwgcHJvYmFibHkgd2FudCB0byB1cGdyYWRlLgorCitLc3ltb29wcworLS0tLS0tLS0KKworSWYgdGhlIHVudGhpbmthYmxlIGhhcHBlbnMgYW5kIHlvdXIga2VybmVsIG9vcHNlcywgeW91J2xsIG5lZWQgYSAyLjQKK3ZlcnNpb24gb2Yga3N5bW9vcHMgdG8gZGVjb2RlIHRoZSByZXBvcnQ7IHNlZSBSRVBPUlRJTkctQlVHUyBpbiB0aGUKK3Jvb3Qgb2YgdGhlIExpbnV4IHNvdXJjZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworTW9kdWxlLUluaXQtVG9vbHMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK0EgbmV3IG1vZHVsZSBsb2FkZXIgaXMgbm93IGluIHRoZSBrZXJuZWwgdGhhdCByZXF1aXJlcyBtb2R1bGUtaW5pdC10b29scwordG8gdXNlLiAgSXQgaXMgYmFja3dhcmQgY29tcGF0aWJsZSB3aXRoIHRoZSAyLjQueCBzZXJpZXMga2VybmVscy4KKworTWtpbml0cmQKKy0tLS0tLS0tCisKK1RoZXNlIGNoYW5nZXMgdG8gdGhlIC9saWIvbW9kdWxlcyBmaWxlIHRyZWUgbGF5b3V0IGFsc28gcmVxdWlyZSB0aGF0Citta2luaXRyZCBiZSB1cGdyYWRlZC4KKworRTJmc3Byb2dzCistLS0tLS0tLS0KKworVGhlIGxhdGVzdCB2ZXJzaW9uIG9mIGUyZnNwcm9ncyBmaXhlcyBzZXZlcmFsIGJ1Z3MgaW4gZnNjayBhbmQKK2RlYnVnZnMuICBPYnZpb3VzbHksIGl0J3MgYSBnb29kIGlkZWEgdG8gdXBncmFkZS4KKworSkZTdXRpbHMKKy0tLS0tLS0tCisKK1RoZSBqZnN1dGlscyBwYWNrYWdlIGNvbnRhaW5zIHRoZSB1dGlsaXRpZXMgZm9yIHRoZSBmaWxlIHN5c3RlbS4KK1RoZSBmb2xsb3dpbmcgdXRpbGl0aWVzIGFyZSBhdmFpbGFibGU6CitvIGZzY2suamZzIC0gaW5pdGlhdGUgcmVwbGF5IG9mIHRoZSB0cmFuc2FjdGlvbiBsb2csIGFuZCBjaGVjaworICBhbmQgcmVwYWlyIGEgSkZTIGZvcm1hdHRlZCBwYXJ0aXRpb24uCitvIG1rZnMuamZzIC0gY3JlYXRlIGEgSkZTIGZvcm1hdHRlZCBwYXJ0aXRpb24uCitvIG90aGVyIGZpbGUgc3lzdGVtIHV0aWxpdGllcyBhcmUgYWxzbyBhdmFpbGFibGUgaW4gdGhpcyBwYWNrYWdlLgorCitSZWlzZXJmc3Byb2dzCistLS0tLS0tLS0tLS0tCisKK1RoZSByZWlzZXJmc3Byb2dzIHBhY2thZ2Ugc2hvdWxkIGJlIHVzZWQgZm9yIHJlaXNlcmZzLTMuNi54CisoTGludXgga2VybmVscyAyLjQueCkuIEl0IGlzIGEgY29tYmluZWQgcGFja2FnZSBhbmQgY29udGFpbnMgd29ya2luZwordmVyc2lvbnMgb2YgbWtyZWlzZXJmcywgcmVzaXplX3JlaXNlcmZzLCBkZWJ1Z3JlaXNlcmZzIGFuZAorcmVpc2VyZnNjay4gVGhlc2UgdXRpbHMgd29yayBvbiBib3RoIGkzODYgYW5kIGFscGhhIHBsYXRmb3Jtcy4KKworWGZzcHJvZ3MKKy0tLS0tLS0tCisKK1RoZSBsYXRlc3QgdmVyc2lvbiBvZiB4ZnNwcm9ncyBjb250YWlucyBta2ZzLnhmcywgeGZzX2RiLCBhbmQgdGhlCit4ZnNfcmVwYWlyIHV0aWxpdGllcywgYW1vbmcgb3RoZXJzLCBmb3IgdGhlIFhGUyBmaWxlc3lzdGVtLiAgSXQgaXMKK2FyY2hpdGVjdHVyZSBpbmRlcGVuZGVudCBhbmQgYW55IHZlcnNpb24gZnJvbSAyLjAuMCBvbndhcmQgc2hvdWxkCit3b3JrIGNvcnJlY3RseSB3aXRoIHRoaXMgdmVyc2lvbiBvZiB0aGUgWEZTIGtlcm5lbCBjb2RlICgyLjYuMCBvcgorbGF0ZXIgaXMgcmVjb21tZW5kZWQsIGR1ZSB0byBzb21lIHNpZ25pZmljYW50IGltcHJvdmVtZW50cykuCisKKworUGNtY2lhLWNzCistLS0tLS0tLS0KKworUENNQ0lBIChQQyBDYXJkKSBzdXBwb3J0IGlzIG5vdyBwYXJ0aWFsbHkgaW1wbGVtZW50ZWQgaW4gdGhlIG1haW4KK2tlcm5lbCBzb3VyY2UuICBQYXkgYXR0ZW50aW9uIHdoZW4geW91IHJlY29tcGlsZSB5b3VyIGtlcm5lbCA7LSkuCitBbHNvLCBiZSBzdXJlIHRvIHVwZ3JhZGUgdG8gdGhlIGxhdGVzdCBwY21jaWEtY3MgcmVsZWFzZS4KKworUXVvdGEtdG9vbHMKKy0tLS0tLS0tLS0tCisKK1N1cHBvcnQgZm9yIDMyIGJpdCB1aWQncyBhbmQgZ2lkJ3MgaXMgcmVxdWlyZWQgaWYgeW91IHdhbnQgdG8gdXNlCit0aGUgbmV3ZXIgdmVyc2lvbiAyIHF1b3RhIGZvcm1hdC4gIFF1b3RhLXRvb2xzIHZlcnNpb24gMy4wNyBhbmQKK25ld2VyIGhhcyB0aGlzIHN1cHBvcnQuICBVc2UgdGhlIHJlY29tbWVuZGVkIHZlcnNpb24gb3IgbmV3ZXIKK2Zyb20gdGhlIHRhYmxlIGFib3ZlLgorCitJbnRlbCBJQTMyIG1pY3JvY29kZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQSBkcml2ZXIgaGFzIGJlZW4gYWRkZWQgdG8gYWxsb3cgdXBkYXRpbmcgb2YgSW50ZWwgSUEzMiBtaWNyb2NvZGUsCithY2Nlc3NpYmxlIGFzIGJvdGggYSBkZXZmcyByZWd1bGFyIGZpbGUgYW5kIGFzIGEgbm9ybWFsIChtaXNjKQorY2hhcmFjdGVyIGRldmljZS4gIElmIHlvdSBhcmUgbm90IHVzaW5nIGRldmZzIHlvdSBtYXkgbmVlZCB0bzoKKworbWtkaXIgL2Rldi9jcHUKK21rbm9kIC9kZXYvY3B1L21pY3JvY29kZSBjIDEwIDE4NAorY2htb2QgMDY0NCAvZGV2L2NwdS9taWNyb2NvZGUKKworYXMgcm9vdCBiZWZvcmUgeW91IGNhbiB1c2UgdGhpcy4gIFlvdSdsbCBwcm9iYWJseSBhbHNvIHdhbnQgdG8KK2dldCB0aGUgdXNlci1zcGFjZSBtaWNyb2NvZGVfY3RsIHV0aWxpdHkgdG8gdXNlIHdpdGggdGhpcy4KKworUG93ZXJ0d2VhaworLS0tLS0tLS0tLQorCitJZiB5b3UgYXJlIHJ1bm5pbmcgdjAuMS4xNyBvciBlYXJsaWVyLCB5b3Ugc2hvdWxkIHVwZ3JhZGUgdG8KK3ZlcnNpb24gdjAuOTkuMCBvciBoaWdoZXIuIFJ1bm5pbmcgb2xkIHZlcnNpb25zIG1heSBjYXVzZSBwcm9ibGVtcword2l0aCBwcm9ncmFtcyB1c2luZyBzaGFyZWQgbWVtb3J5LgorCit1ZGV2CistLS0tCit1ZGV2IGlzIGEgdXNlcnNwYWNlIGFwcGxpY2F0aW9uIGZvciBwb3B1bGF0aW5nIC9kZXYgZHluYW1pY2FsbHkgd2l0aAorb25seSBlbnRyaWVzIGZvciBkZXZpY2VzIGFjdHVhbGx5IHByZXNlbnQuIHVkZXYgcmVwbGFjZXMgZGV2ZnMuCisKK05ldHdvcmtpbmcKKz09PT09PT09PT0KKworR2VuZXJhbCBjaGFuZ2VzCistLS0tLS0tLS0tLS0tLS0KKworSWYgeW91IGhhdmUgYWR2YW5jZWQgbmV0d29yayBjb25maWd1cmF0aW9uIG5lZWRzLCB5b3Ugc2hvdWxkIHByb2JhYmx5Citjb25zaWRlciB1c2luZyB0aGUgbmV0d29yayB0b29scyBmcm9tIGlwLXJvdXRlMi4KKworUGFja2V0IEZpbHRlciAvIE5BVAorLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlIHBhY2tldCBmaWx0ZXJpbmcgYW5kIE5BVCBjb2RlIHVzZXMgdGhlIHNhbWUgdG9vbHMgbGlrZSB0aGUgcHJldmlvdXMgMi40LngKK2tlcm5lbCBzZXJpZXMgKGlwdGFibGVzKS4gIEl0IHN0aWxsIGluY2x1ZGVzIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IG1vZHVsZXMKK2ZvciAyLjIueC1zdHlsZSBpcGNoYWlucyBhbmQgMi4wLngtc3R5bGUgaXBmd2FkbS4KKworUFBQCistLS0KKworVGhlIFBQUCBkcml2ZXIgaGFzIGJlZW4gcmVzdHJ1Y3R1cmVkIHRvIHN1cHBvcnQgbXVsdGlsaW5rIGFuZCB0bworZW5hYmxlIGl0IHRvIG9wZXJhdGUgb3ZlciBkaXZlcnNlIG1lZGlhIGxheWVycy4gIElmIHlvdSB1c2UgUFBQLAordXBncmFkZSBwcHBkIHRvIGF0IGxlYXN0IDIuNC4wLgorCitJZiB5b3UgYXJlIG5vdCB1c2luZyBkZXZmcywgeW91IG11c3QgaGF2ZSB0aGUgZGV2aWNlIGZpbGUgL2Rldi9wcHAKK3doaWNoIGNhbiBiZSBtYWRlIGJ5OgorCitta25vZCAvZGV2L3BwcCBjIDEwOCAwCisKK2FzIHJvb3QuCisKK0lmIHlvdSB1c2UgZGV2ZnNkIGFuZCBidWlsZCBwcHAgc3VwcG9ydCBhcyBtb2R1bGVzLCB5b3Ugd2lsbCBuZWVkCit0aGUgZm9sbG93aW5nIGluIHlvdXIgL2V0Yy9kZXZmc2QuY29uZiBmaWxlOgorCitMT09LVVAJUFBQCU1PRExPQUQKKworSXNkbjRrLXV0aWxzCistLS0tLS0tLS0tLS0KKworRHVlIHRvIGNoYW5nZXMgaW4gdGhlIGxlbmd0aCBvZiB0aGUgcGhvbmUgbnVtYmVyIGZpZWxkLCBpc2RuNGstdXRpbHMKK25lZWRzIHRvIGJlIHJlY29tcGlsZWQgb3IgKHByZWZlcmFibHkpIHVwZ3JhZGVkLgorCitORlMtdXRpbHMKKy0tLS0tLS0tLQorCitJbiAyLjQgYW5kIGVhcmxpZXIga2VybmVscywgdGhlIG5mcyBzZXJ2ZXIgbmVlZGVkIHRvIGtub3cgYWJvdXQgYW55CitjbGllbnQgdGhhdCBleHBlY3RlZCB0byBiZSBhYmxlIHRvIGFjY2VzcyBmaWxlcyB2aWEgTkZTLiAgVGhpcworaW5mb3JtYXRpb24gd291bGQgYmUgZ2l2ZW4gdG8gdGhlIGtlcm5lbCBieSAibW91bnRkIiB3aGVuIHRoZSBjbGllbnQKK21vdW50ZWQgdGhlIGZpbGVzeXN0ZW0sIG9yIGJ5ICJleHBvcnRmcyIgYXQgc3lzdGVtIHN0YXJ0dXAuICBleHBvcnRmcword291bGQgdGFrZSBpbmZvcm1hdGlvbiBhYm91dCBhY3RpdmUgY2xpZW50cyBmcm9tIC92YXIvbGliL25mcy9ybXRhYi4KKworVGhpcyBhcHByb2FjaCBpcyBxdWl0ZSBmcmFnaWxlIGFzIGl0IGRlcGVuZHMgb24gcm10YWIgYmVpbmcgY29ycmVjdAord2hpY2ggaXMgbm90IGFsd2F5cyBlYXN5LCBwYXJ0aWN1bGFybHkgd2hlbiB0cnlpbmcgdG8gaW1wbGVtZW50CitmYWlsLW92ZXIuICBFdmVuIHdoZW4gdGhlIHN5c3RlbSBpcyB3b3JraW5nIHdlbGwsIHJtdGFiIHN1ZmZlcnMgZnJvbQorZ2V0dGluZyBsb3RzIG9mIG9sZCBlbnRyaWVzIHRoYXQgbmV2ZXIgZ2V0IHJlbW92ZWQuCisKK1dpdGggMi42IHdlIGhhdmUgdGhlIG9wdGlvbiBvZiBoYXZpbmcgdGhlIGtlcm5lbCB0ZWxsIG1vdW50ZCB3aGVuIGl0CitnZXRzIGEgcmVxdWVzdCBmcm9tIGFuIHVua25vd24gaG9zdCwgYW5kIG1vdW50ZCBjYW4gZ2l2ZSBhcHByb3ByaWF0ZQorZXhwb3J0IGluZm9ybWF0aW9uIHRvIHRoZSBrZXJuZWwuICBUaGlzIHJlbW92ZXMgdGhlIGRlcGVuZGVuY3kgb24KK3JtdGFiIGFuZCBtZWFucyB0aGF0IHRoZSBrZXJuZWwgb25seSBuZWVkcyB0byBrbm93IGFib3V0IGN1cnJlbnRseQorYWN0aXZlIGNsaWVudHMuCisKK1RvIGVuYWJsZSB0aGlzIG5ldyBmdW5jdGlvbmFsaXR5LCB5b3UgbmVlZCB0bzoKKworICBtb3VudCAtdCBuZnNkIG5mc2QgL3Byb2MvZnMvbmZzCisKK2JlZm9yZSBydW5uaW5nIGV4cG9ydGZzIG9yIG1vdW50ZC4gIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgYWxsIE5GUworc2VydmljZXMgYmUgcHJvdGVjdGVkIGZyb20gdGhlIGludGVybmV0LWF0LWxhcmdlIGJ5IGEgZmlyZXdhbGwgd2hlcmUKK3RoYXQgaXMgcG9zc2libGUuCisKK0dldHRpbmcgdXBkYXRlZCBzb2Z0d2FyZQorPT09PT09PT09PT09PT09PT09PT09PT09CisKK0tlcm5lbCBjb21waWxhdGlvbgorKioqKioqKioqKioqKioqKioqCisKK2djYyAyLjk1LjMKKy0tLS0tLS0tLS0KK28gIDxmdHA6Ly9mdHAuZ251Lm9yZy9nbnUvZ2NjL2djYy0yLjk1LjMudGFyLmd6PgorCitNYWtlCistLS0tCitvICA8ZnRwOi8vZnRwLmdudS5vcmcvZ251L21ha2UvPgorCitCaW51dGlscworLS0tLS0tLS0KK28gIDxmdHA6Ly9mdHAua2VybmVsLm9yZy9wdWIvbGludXgvZGV2ZWwvYmludXRpbHMvPgorCitTeXN0ZW0gdXRpbGl0aWVzCisqKioqKioqKioqKioqKioqCisKK1V0aWwtbGludXgKKy0tLS0tLS0tLS0KK28gIDxmdHA6Ly9mdHAua2VybmVsLm9yZy9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC8+CisKK0tzeW1vb3BzCistLS0tLS0tLQorbyAgPGZ0cDovL2Z0cC5rZXJuZWwub3JnL3B1Yi9saW51eC91dGlscy9rZXJuZWwva3N5bW9vcHMvdjIuNC8+CisKK01vZHVsZS1Jbml0LVRvb2xzCistLS0tLS0tLS0tLS0tLS0tLQorbyAgPGZ0cDovL2Z0cC5rZXJuZWwub3JnL3B1Yi9saW51eC9rZXJuZWwvcGVvcGxlL3J1c3R5L21vZHVsZXMvPgorCitNa2luaXRyZAorLS0tLS0tLS0KK28gIDxmdHA6Ly9yYXdoaWRlLnJlZGhhdC5jb20vcHViL3Jhd2hpZGUvU1JQTVMvU1JQTVMvPgorCitFMmZzcHJvZ3MKKy0tLS0tLS0tLQorbyAgPGh0dHA6Ly9wcmRvd25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQvZTJmc3Byb2dzL2UyZnNwcm9ncy0xLjI5LnRhci5nej4KKworSkZTdXRpbHMKKy0tLS0tLS0tCitvICA8aHR0cDovL2pmcy5zb3VyY2Vmb3JnZS5uZXQvPgorCitSZWlzZXJmc3Byb2dzCistLS0tLS0tLS0tLS0tCitvICA8aHR0cDovL3d3dy5uYW1lc3lzLmNvbS9wdWIvcmVpc2VyZnNwcm9ncy9yZWlzZXJmc3Byb2dzLTMuNi4zLnRhci5nej4KKworWGZzcHJvZ3MKKy0tLS0tLS0tCitvICA8ZnRwOi8vb3NzLnNnaS5jb20vcHJvamVjdHMveGZzL2Rvd25sb2FkLz4KKworUGNtY2lhLWNzCistLS0tLS0tLS0KK28gIDxmdHA6Ly9wY21jaWEtY3Muc291cmNlZm9yZ2UubmV0L3B1Yi9wY21jaWEtY3MvcGNtY2lhLWNzLTMuMS4yMS50YXIuZ3o+CisKK1F1b3RhLXRvb2xzCistLS0tLS0tLS0tCitvICA8aHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saW51eHF1b3RhLz4KKworSmFkZQorLS0tLQorbyAgPGZ0cDovL2Z0cC5qY2xhcmsuY29tL3B1Yi9qYWRlL2phZGUtMS4yLjEudGFyLmd6PgorCitEb2NCb29rIFN0eWxlc2hlZXRzCistLS0tLS0tLS0tLS0tLS0tLS0tCitvICA8aHR0cDovL253YWxzaC5jb20vZG9jYm9vay9kc3NzbC8+CisKK0ludGVsIFA2IG1pY3JvY29kZQorLS0tLS0tLS0tLS0tLS0tLS0tCitvICA8aHR0cDovL3d3dy51cmJhbm15dGgub3JnL21pY3JvY29kZS8+CisKK1Bvd2VydHdlYWsKKy0tLS0tLS0tLS0KK28gIDxodHRwOi8vcG93ZXJ0d2Vhay5zb3VyY2Vmb3JnZS5uZXQvPgorCit1ZGV2CistLS0tCitvIDxodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L3V0aWxzL2tlcm5lbC9ob3RwbHVnL3VkZXYuaHRtbD4KKworTmV0d29ya2luZworKioqKioqKioqKgorCitQUFAKKy0tLQorbyAgPGZ0cDovL2Z0cC5zYW1iYS5vcmcvcHViL3BwcC9wcHAtMi40LjAudGFyLmd6PgorCitJc2RuNGstdXRpbHMKKy0tLS0tLS0tLS0tLQorbyAgPGZ0cDovL2Z0cC5pc2RuNGxpbnV4LmRlL3B1Yi9pc2RuNGxpbnV4L3V0aWxzL2lzZG40ay11dGlscy52My4xcHJlMS50YXIuZ3o+CisKK05GUy11dGlscworLS0tLS0tLS0tCitvICA8aHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0L3Nob3dmaWxlcy5waHA/Z3JvdXBfaWQ9MTQ+CisKK0lwdGFibGVzCistLS0tLS0tLQorbyAgPGh0dHA6Ly93d3cuaXB0YWJsZXMub3JnL2Rvd25sb2Fkcy5odG1sPgorCitJcC1yb3V0ZTIKKy0tLS0tLS0tLQorbyAgPGZ0cDovL2Z0cC50dXgub3JnL3B1Yi9uZXQvaXAtcm91dGluZy9pcHJvdXRlMi0yLjIuNC1ub3ctc3M5OTEwMjMudGFyLmd6PgorCitPUHJvZmlsZQorLS0tLS0tLS0KK28gIDxodHRwOi8vb3Byb2ZpbGUuc2YubmV0L2Rvd25sb2FkLz4KKworTkZTLVV0aWxzCistLS0tLS0tLS0KK28gIDxodHRwOi8vbmZzLnNvdXJjZWZvcmdlLm5ldC8+CisK