From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: From: Bastian Krause Date: Mon, 8 Jun 2020 10:53:02 +0200 Message-Id: <20200608085305.30964-3-bst@pengutronix.de> In-Reply-To: <20200608085305.30964-1-bst@pengutronix.de> References: <20200608085305.30964-1-bst@pengutronix.de> MIME-Version: 1.0 Subject: [ptxdist] [PATCH 2/5] doc: dev_manual: split up into multiple files List-Id: PTXdist Development Mailing List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: ptxdist@pengutronix.de Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ptxdist-bounces@pengutronix.de Sender: "ptxdist" To: ptxdist@pengutronix.de Cc: rhi@pengutronix.de, Bastian Krause U3BsaXQgdGhlIGxlbmd0aHkgZGV2ZWxvcGVyJ3MgbWFudWFsIGludG8gbXVsdGlwbGUgZmlsZXMg dG8gZWFzZQpuYXZpZ2F0aW9uIHdoZW4gZWRpdGluZy4KCk5vIGZ1cnRoZXIgY2hhbmdlIHRvIHRo ZSBjb250ZW50LgoKU2lnbmVkLW9mZi1ieTogQmFzdGlhbiBLcmF1c2UgPGJzdEBwZW5ndXRyb25p eC5kZT4KLS0tCiBkb2MvZGV2X2FkZF9iaW5fb25seV9maWxlcy5yc3QgICAgICAgfCAgMTA1ICsr CiBkb2MvZGV2X2FkZF9uZXdfcGtncy5yc3QgICAgICAgICAgICAgfCAxMzM5ICsrKysrKysrKysr KysrKysrKysKIGRvYy9kZXZfY3JlYXRlX25ld19wa2dfdGVtcGxhdGVzLnJzdCB8ICAgNzcgKysK IGRvYy9kZXZfZGlyX2hpZXJhcmNoeS5yc3QgICAgICAgICAgICB8ICAxMDggKysKIGRvYy9kZXZf bGF5ZXJzX2luX3B0eGRpc3QucnN0ICAgICAgICB8ICAxMTEgKysKIGRvYy9kZXZfbWFudWFsLnJz dCAgICAgICAgICAgICAgICAgICB8IDE3NjQgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDYg ZmlsZXMgY2hhbmdlZCwgMTc0OSBpbnNlcnRpb25zKCspLCAxNzU1IGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IGRvYy9kZXZfYWRkX2Jpbl9vbmx5X2ZpbGVzLnJzdAogY3JlYXRlIG1v ZGUgMTAwNjQ0IGRvYy9kZXZfYWRkX25ld19wa2dzLnJzdAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRv Yy9kZXZfY3JlYXRlX25ld19wa2dfdGVtcGxhdGVzLnJzdAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRv Yy9kZXZfZGlyX2hpZXJhcmNoeS5yc3QKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkb2MvZGV2X2xheWVy c19pbl9wdHhkaXN0LnJzdAoKZGlmZiAtLWdpdCBhL2RvYy9kZXZfYWRkX2Jpbl9vbmx5X2ZpbGVz LnJzdCBiL2RvYy9kZXZfYWRkX2Jpbl9vbmx5X2ZpbGVzLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAuLjkwMzFlNDM3YwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9kZXZf YWRkX2Jpbl9vbmx5X2ZpbGVzLnJzdApAQCAtMCwwICsxLDEwNSBAQAorLi4gX2FkZGluZ19maWxl czoKKworQWRkaW5nIEJpbmFyeSBPbmx5IEZpbGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KworU29tZXRpbWVzIGEgZmV3IGJpbmFyeSBmaWxlcyBoYXZlIHRvIGJlIGFkZGVkIGludG8gdGhl IHJvb3QgZmlsZXN5c3RlbS4KK09yIC0gdG8gYmUgbW9yZSBwcmVjaXNlIC0gc29tZSBmaWxlcywg dGhhdCBkbyBub3QgbmVlZCB0byBiZSBidWlsdCBpbgorYW55IHdheS4KKworT24gdGhlIG90aGVy IGhhbmQsIHNvbWV0aW1lcyBmaWxlcyBzaG91bGQgYmUgaW5jbHVkZWQgdGhhdCBhcmUgbm90Citj b3ZlcmVkIGJ5IGFueSBvcGVuIHNvdXJjZSBsaWNlbnNlIGFuZCBzbywgc2hvdWxkIG5vdCBiZSBz aGlwcGVkIGluIHRoZQorc291cmNlIGNvZGUgZm9ybWF0LgorCitBZGQgQmluYXJ5IEZpbGVzIEZp bGUgYnkgRmlsZQorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworRG9pbmcgdG8gb24g YSBmaWxlIGJ5IGZpbGUgYmFzZSBjYW4gaGFwcGVuIGJ5IGp1c3QgdXNpbmcgdGhlIGBgaW5zdGFs bF9jb3B5YGAKK21hY3JvIGluIHRoZSAqdGFyZ2V0aW5zdGFsbCogc3RhZ2UgaW4gb3VyIG93biBj dXN0b21pemVkIHJ1bGVzIGZpbGUuCisKKy4uIGNvZGUtYmxvY2s6OiBub25lCisKKyAgICBAJChj YWxsIGluc3RhbGxfY29weSwgYmluYXJ5X2V4YW1wbGUsIDAsIDAsIDA2NDQsIFwKKyAgICAgICA8 L3BhdGgvdG8vc29tZS9maWxlLz5wdHhfbG9nby5wbmcsIFwKKyAgICAgICAvZXhhbXBsZS9wdHhf bG9nby5wbmcpCisKK0l0IGNvcGllcyB0aGUgZmlsZSBgYHB0eF9sb2dvLnBuZ2BgIGZyb20gc29t ZSBsb2NhdGlvbiB0byB0YXJnZXTigJlzIHJvb3QKK2ZpbGVzeXN0ZW0uIFJlZmVyIDpyZWY6YGlu c3RhbGxfY29weWAgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24gYWJvdXQgdXNpbmcgdGhlCitgYGlu c3RhbGxfY29weWBgIG1hY3JvLgorCitUaGUgZGlzYWR2YW50YWdlIG9mIHRoaXMgbWV0aG9kIGlz OiBpZiB3ZSB3YW50IHRvIGluc3RhbGwgbW9yZSB0aGFuIG9uZQorZmlsZSwgd2UgbmVlZCBvbmUg Y2FsbCB0byB0aGUgYGBpbnN0YWxsX2NvcHlgYCBtYWNybyBwZXIgZmlsZS4gVGhpcyBpcworZXZl biBoYXJkZXIgaWYgbm90IG9ubHkgYSBzZXQgb2YgZmlsZXMgaXMgdG8gYmUgaW5zdGFsbGVkLCBi dXQgYSB3aG9sZQorZGlyZWN0b3J5IHRyZWUgd2l0aCBmaWxlcyBpbnN0ZWFkLgorCitBZGQgQmlu YXJ5IEZpbGVzIHZpYSBhbiBBcmNoaXZlCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ CisKK0lmIGEgd2hvbGUgdHJlZSBvZiBmaWxlcyBpcyB0byBiZSBpbnN0YWxsZWQsIHdvcmtpbmcg d2l0aCBhICp0YXIqIGJhc2VkCithcmNoaXZlIGNvdWxkIG1ha2UgbGlmZSBlYXNpZXIuIEluIHRo aXMgY2FzZSB0aGUgYXJjaGl2ZSBpdHNlbGYgcHJvdmlkZXMKK2FsbCB0aGUgcmVxdWlyZWQgaW5m b3JtYXRpb24gdGhlIGZpbGVzIGFyZSBuZWVkaW5nIHRvIGJlIGluc3RhbGxlZCBpbiBhCitjb3Jy ZWN0IG1hbm5lcjoKKworLSAgdGhlIGZpbGUgaXRzZWxmIGFuZCBpdHMgbmFtZQorCistICB0aGUg ZGlyZWN0b3J5IHN0cnVjdHVyZSBhbmQgdGhlIGZpbmFsIGxvY2F0aW9uIG9mIGV2ZXJ5IGZpbGUg aW4gdGhpcworICAgc3RydWN0dXJlCisKKy0gIHVzZXIgYW5kIGdyb3VwIElEIG9uIGEgcGVyIGZp bGUgYmFzZQorCisuLiBjb2RlLWJsb2NrOjogbm9uZQorCisgICAgQCQoY2FsbCBpbnN0YWxsX2Fy Y2hpdmUsIGJpbmFyeV9leGFtcGxlLCAtLCAtLCBcCisgICAgICAgPC9wYXRoL3RvL2FuLz5hcmNo aXZlLnRneiwgLykKKworUmVmZXIgOnJlZjpgaW5zdGFsbF9hcmNoaXZlYCBmb3IgZnVydGhlciBp bmZvcm1hdGlvbiBhYm91dCB1c2luZyB0aGUKK2BgaW5zdGFsbF9hcmNoaXZlYGAgbWFjcm8uCisK K1VzaW5nIGFuIGFyY2hpdmUgY2FuIGJlIHVzZWZ1bCB0byBpbnN0YWxsIHBhcnRzIG9mIHRoZSBy b290IGZpbGVzeXN0ZW0KK3RoYXQgYXJlIG5vdCBjb3ZlcmVkIGJ5IGFueSBvcGVuIHNvdXJjZSBs aWNlbnNlLiBJdHMgcG9zc2libGUgdG8gc2hpcAordGhlIGJpbmFyaWVzIHdpdGhpbiB0aGUgcmVn dWxhciBCU1AsIHdpdGhvdXQgdGhlIG5lZWQgZm9yIHRoZWlyIHNvdXJjZXMuCitIb3dldmVyIGl0 IGlzIHBvc3NpYmxlIGZvciB0aGUgY3VzdG9tZXIgdG8gcmUtY3JlYXRlIGV2ZXJ5dGhpbmcgcmVx dWlyZWQKK2Zyb20gdGhlIEJTUCB0byBnZXQgdGhlaXIgdGFyZ2V0IHVwIGFuZCBydW5uaW5nIGFn YWluLgorCitBbm90aGVyIHVzZSBjYXNlIGZvciB0aGUgYXJjaGl2ZSBtZXRob2QgY291bGQgYmUg dGhlIHN1cHBvcnQgZm9yCitkaWZmZXJlbnQgZGV2ZWxvcG1lbnQgdGVhbXMuIE9uZSB0ZWFtIHBy b3ZpZGVzIGEgc29mdHdhcmUgY29tcG9uZW50IGluCit0aGUgYXJjaGl2ZSBmb3JtYXQsIHRoZSBv dGhlciB0ZWFtIGRvZXMgbm90IG5lZWQgdG8gYnVpbGQgaXQgYnV0IGNhbiB1c2UKK2l0IGluIHRo ZSBzYW1lIHdheSB0aGFuIGV2ZXJ5IG90aGVyIHNvZnR3YXJlIGNvbXBvbmVudC4KKworQ3JlYXRp bmcgYSBSdWxlcyBGaWxlCit+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworTGV0IFBUWGRpc3QgY3Jl YXRlIG9uZSBmb3IgdXMuCisKKy4uIGNvZGUtYmxvY2s6OiB0ZXh0CisKKyAgICAkIHB0eGRpc3Qg bmV3cGFja2FnZSBmaWxlCisKKyAgICBwdHhkaXN0OiBjcmVhdGluZyBhIG5ldyAnZmlsZScgcGFj a2FnZToKKworICAgIHB0eGRpc3Q6IGVudGVyIHBhY2thZ2UgbmFtZS4uLi4uLi46IG15X2JpbmZp bGVzCisgICAgcHR4ZGlzdDogZW50ZXIgdmVyc2lvbiBudW1iZXIuLi4uLjogMQorICAgIHB0eGRp c3Q6IGVudGVyIHBhY2thZ2UgYXV0aG9yLi4uLi46IE15IE5hbWUgPG1lQG15LW9yZy5jb20+Cisg ICAgcHR4ZGlzdDogZW50ZXIgcGFja2FnZSBzZWN0aW9uLi4uLjogcm9vdGZzCisKK05vdyB0d28g bmV3IGZpbGVzIGFyZSBwcmVzZW50IGluIHRoZSBCU1A6CisKKyMuIGBgcnVsZXMvbXlfYmluZmls ZXMuaW5gYCBUaGUgdGVtcGxhdGUgZm9yIHRoZSBtZW51CisKKyMuIGBgcnVsZXMvbXlfYmluZmls ZXMubWFrZWBgIFRoZSBydWxlcyB0ZW1wbGF0ZQorCitCb3RoIGZpbGVzIG5vdyBtdXN0IGJlIGN1 c3RvbWl6ZWQgdG8gbWVldCBvdXIgcmVxdWlyZW1lbnRzLiBEdWUgdG8gdGhlCithbnN3ZXIgKnJv b3RmcyogdG8gdGhlIOKAnGBgZW50ZXIgcGFja2FnZSBzZWN0aW9uYGDigJ0gcXVlc3Rpb24sIHdl IHdpbGwKK2ZpbmQgdGhlIG5ldyBtZW51IGVudHJ5IGluOgorCisuLiBjb2RlLWJsb2NrOjogdGV4 dAorCisgICAgUm9vdCBGaWxlc3lzdGVtIC0tLT4KKyAgICAJPCA+IG15X2JpbmZpbGVzIChORVcp CisKK0VuYWJsaW5nIHRoaXMgbmV3IGVudHJ5IHdpbGwgYWxzbyBydW4gb3VyIHN0YWdlcyBpbgor YGBydWxlcy9teV9iaW5maWxlcy5tYWtlYGAgdGhlIG5leHQgdGltZSB3ZSBlbnRlcjoKKworLi4g Y29kZS1ibG9jazo6IHRleHQKKworICAgICQgcHR4ZGlzdCBnbwpkaWZmIC0tZ2l0IGEvZG9jL2Rl dl9hZGRfbmV3X3BrZ3MucnN0IGIvZG9jL2Rldl9hZGRfbmV3X3BrZ3MucnN0Cm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uNGFlMjc2NWMyCi0tLSAvZGV2L251bGwKKysrIGIv ZG9jL2Rldl9hZGRfbmV3X3BrZ3MucnN0CkBAIC0wLDAgKzEsMTMzOSBAQAorLi4gX2FkZGluZ19u ZXdfcGFja2FnZXM6CisKK0FkZGluZyBOZXcgUGFja2FnZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0K KworUFRYZGlzdCBwcm92aWRlcyBhIGh1Z2UgYW1vdW50IG9mIGFwcGxpY2F0aW9ucyBzdWZmaWNp ZW50IGZvciB0aGUgbW9zdAorZW1iZWRkZWQgdXNlIGNhc2VzLiBCdXQgdGhlcmUgaXMgc3RpbGwg bmVlZCBmb3Igc29tZSBmYW5jeSBuZXcgcGFja2FnZXMuCitUaGlzIHNlY3Rpb24gZGVzY3JpYmVz IHRoZSBzdGVwcyBhbmQgdGhlIGJhY2tncm91bmQgb24gaG93IHRvIGludGVncmF0ZQorbmV3IHBh Y2thZ2VzIGludG8gdGhlIHByb2plY3QuCisKK0F0IGZpcnN0IGEgc3VtbWFyeSBhYm91dCBwb3Nz aWJsZSBhcHBsaWNhdGlvbiB0eXBlcyB3aGljaCBQVFhkaXN0IGNhbgoraGFuZGxlOgorCistICAq Kmhvc3QgdHlwZSoqOiBUaGlzIGtpbmQgb2YgcGFja2FnZSBpcyBidWlsdCB0byBydW4gb24gdGhl IGJ1aWxkCisgICBob3N0LiBNb3N0IG9mIHRoZSB0aW1lIHN1Y2ggYSBwYWNrYWdlIGlzIG5lZWRl ZCBpZiBhbm90aGVyCisgICB0YXJnZXQtcmVsZXZhbnQgcGFja2FnZSBuZWVkcyB0byBnZW5lcmF0 ZSBzb21lIGRhdGEuIEZvciBleGFtcGxlIHRoZQorICAgKmdsaWIqIHBhY2thZ2UgZGVwZW5kcyBv biBpdHMgb3duIHRvIGNyZWF0ZSBzb21lIGRhdGEuIEJ1dCBpZiBpdCBpcworICAgY29tcGlsZWQg Zm9yIHRoZSB0YXJnZXQsIGl0IGNhbuKAmXQgZG8gc28uIFRoYXTigJlzIHdoeSBhIGhvc3QgZ2xp YgorICAgcGFja2FnZSBpcyByZXF1aXJlZCB0byBwcm92aWRlIHRoZXNlIHV0aWxpdGllcyBydW5u YWJsZSBvbiB0aGUgYnVpbGQKKyAgIGhvc3QuIEl0IHNvdW5kcyBzdHJhbmdlIHRvIGJ1aWxkIGEg aG9zdCBwYWNrYWdlLCBldmVuIGlmIG9uIHRoZSBidWlsZAorICAgaG9zdCBzdWNoIHV0aWxpdGll cyBhcmUgYWxyZWFkeSBpbnN0YWxsZWQuIEJ1dCB0aGlzIHdheSBlbnN1cmVzIHRoYXQKKyAgIHRo ZXJlIGFyZSBubyBkZXBlbmRlbmNpZXMgcmVnYXJkaW5nIHRoZSBidWlsZCBob3N0IHN5c3RlbS4K KworLSAgKip0YXJnZXQgdHlwZSoqOiBUaGlzIGtpbmQgb2YgcGFja2FnZSBpcyBidWlsdCBmb3Ig dGhlIHRhcmdldC4KKworLSAgKipjcm9zcyB0eXBlKio6IFRoaXMga2luZCBvZiBwYWNrYWdlIGlz IGJ1aWx0IGZvciB0aGUgYnVpbGQgaG9zdCwgYnV0CisgICBjcmVhdGVzIGFyY2hpdGVjdHVyZSBz cGVjaWZpYyBkYXRhIGZvciB0aGUgdGFyZ2V0LgorCistICAqKnNyYy1hdXRvY29uZi1wcm9nKio6 IFRoaXMga2luZCBvZiBwYWNrYWdlIGlzIGJ1aWx0IGZvciB0aGUgdGFyZ2V0LgorICAgSXQgaXMg aW50ZW5kZWQgZm9yIGRldmVsb3BtZW50LCBhcyBpdCBkb2VzIG5vdCBoYW5kbGUgYSByZWxlYXNl ZAorICAgYXJjaGl2ZSBidXQgYSBwbGFpbiBzb3VyY2UgcHJvamVjdCBpbnN0ZWFkLiBDcmVhdGlu ZyBzdWNoIGEgcGFja2FnZQorICAgd2lsbCBhbHNvIGNyZWF0ZSBhIHNtYWxsIGF1dG90b29scyBi YXNlZCBzb3VyY2UgdGVtcGxhdGUgcHJvamVjdCBvbgorICAgZGVtYW5kIHRvIGdpdmUgdGhlIGRl dmVsb3BlciBhbiBlYXN5IHBvaW50IHRvIHN0YXJ0LiBUaGlzIHRlbXBsYXRlIGlzCisgICBwcmVw YXJlZCB0byBidWlsZCBhIHNpbmdsZSBleGVjdXRhYmxlIHByb2dyYW0uIEZvciBmdXJ0aGVyIGRl dGFpbHMgcmVmZXIKKyAgIHNlY3Rpb24gOnJlZjpgYWRkaW5nX3NyY19hdXRvY29uZl9leGVjYC4K KworLSAgKipzcmMtYXV0b2NvbmYtbGliKio6IFRoaXMga2luZCBvZiBwYWNrYWdlIGlzIGJ1aWx0 IGZvciB0aGUgdGFyZ2V0LgorICAgSXQgaXMgaW50ZW5kZWQgZm9yIGRldmVsb3BtZW50LCBhcyBp dCBkb2VzIG5vdCBoYW5kbGUgYSByZWxlYXNlZAorICAgYXJjaGl2ZSBidXQgYSBwbGFpbiBzb3Vy Y2UgcHJvamVjdCBpbnN0ZWFkLiBDcmVhdGluZyBzdWNoIGEgcGFja2FnZQorICAgd2lsbCBhbHNv IGNyZWF0ZSBhIHNtYWxsIGF1dG90b29scy9saWJ0b29sIGJhc2VkIHNvdXJjZSB0ZW1wbGF0ZQor ICAgcHJvamVjdCBvbiBkZW1hbmQgdG8gZ2l2ZSB0aGUgZGV2ZWxvcGVyIGFuIGVhc3kgcG9pbnQg dG8gc3RhcnQuIFRoaXMKKyAgIHRlbXBsYXRlIGlzIHByZXBhcmVkIHRvIGJ1aWxkIGEgc2luZ2xl IHNoYXJlZCBsaWJyYXJ5LiBGb3IgZnVydGhlcgorICAgZGV0YWlscyByZWZlciBzZWN0aW9uIDpy ZWY6YGFkZGluZ19zcmNfYXV0b2NvbmZfbGliYC4KKworLSAgKipzcmMtYXV0b2NvbmYtcHJvZ2xp YioqOiBUaGlzIGtpbmQgb2YgcGFja2FnZSBpcyBidWlsdCBmb3IgdGhlCisgICB0YXJnZXQuIEl0 IGlzIGludGVuZGVkIGZvciBkZXZlbG9wbWVudCwgYXMgaXQgZG9lcyBub3QgaGFuZGxlIGEKKyAg IHJlbGVhc2VkIGFyY2hpdmUgYnV0IGEgcGxhaW4gc291cmNlIHByb2plY3QgaW5zdGVhZC4gQ3Jl YXRpbmcgc3VjaCBhCisgICBwYWNrYWdlIHdpbGwgYWxzbyBjcmVhdGUgYSBzbWFsbCBhdXRvdG9v bHMvbGlidG9vbCBiYXNlZCB0ZW1wbGF0ZQorICAgcHJvamVjdCBvbiBkZW1hbmQgdG8gZ2l2ZSB0 aGUgZGV2ZWxvcGVyIGFuIGVhc3kgcG9pbnQgdG8gc3RhcnQuIFRoaXMKKyAgIHRlbXBsYXRlIGlz IHByZXBhcmVkIHRvIGJ1aWxkIGEgc2luZ2xlIHNoYXJlZCBsaWJyYXJ5IGFuZCBhIHNpbmdsZQor ICAgZXhlY3V0YWJsZSBwcm9ncmFtLiBUaGUgcHJvZ3JhbSB3aWxsIGJlIGxpbmtlZCBhZ2FpbnN0 IHRoZSBzaGFyZWQKKyAgIGxpYnJhcnkuIEZvciBmdXJ0aGVyIGRldGFpbHMgcmVmZXIgc2VjdGlv biA6cmVmOmBhZGRpbmdfc3JjX2F1dG9jb25mX2V4ZWNfbGliYC4KKworLSAgKipmaWxlKio6IFRo aXMga2luZCBvZiBwYWNrYWdlIGlzIGludGVuZGVkIHRvIGFkZCBhIGZldyBzaW1wbGUgZmlsZXMK KyAgIGludG8gdGhlIGJ1aWxkIHByb2Nlc3MuIFdlIGFzc3VtZSB0aGVzZSBmaWxlcyBkbyBub3Qg bmVlZCBhbnkKKyAgIHByb2Nlc3NpbmcsIHRoZXkgYXJlIHJlYWR5IHRvIHVzZSBhbmQgbXVzdCBv bmx5IGJlIHByZXNlbnQgaW4gdGhlCisgICBidWlsZCBwcm9jZXNzIG9yIGF0IHJ1bi10aW1lIChI VE1MIGZpbGVzIGZvciBleGFtcGxlKS4gUmVmZXIgdG8gdGhlCisgICBzZWN0aW9uIDpyZWY6YGFk ZGluZ19maWxlc2AgZm9yIGZ1cnRoZXIgZGV0YWlscyBvbiBob3cgdG8gdXNlCisgICBpdC4KKwor LSAgKipzcmMtbWFrZS1wcm9nKio6IFRoaXMga2luZCBvZiBwYWNrYWdlIGlzIGJ1aWx0IGZvciB0 aGUgdGFyZ2V0LiBJdOKAmXMKKyAgIGludGVuZGVkIGZvciBkZXZlbG9wbWVudCwgYXMgaXQgZG9l cyBub3QgaGFuZGxlIGEgcmVsZWFzZWQgYXJjaGl2ZQorICAgYnV0IGEgcGxhaW4gc291cmNlIHBy b2plY3QgaW5zdGVhZC4gQ3JlYXRpbmcgc3VjaCBhIHBhY2thZ2Ugd2lsbCBhbHNvCisgICBjcmVh dGUgYSBzaW1wbGUgbWFrZWZpbGUtYmFzZWQgdGVtcGxhdGUgcHJvamVjdCB0aGUgZGV2ZWxvcGVy IGNhbiB1c2UKKyAgIGFzIGEgc3RhcnRpbmcgcG9pbnQgZm9yIGRldmVsb3BtZW50LgorCistICAq KnNyYy1jbWFrZS1wcm9nKio6IFRoaXMga2luZCBvZiBwYWNrYWdlIGlzIGJ1aWx0IGZvciB0aGUg dGFyZ2V0LgorICAgSXTigJlzIGludGVuZGVkIGZvciBkZXZlbG9wbWVudHMgYmFzZWQgb24gdGhl ICpjbWFrZSogYnVpbGRzeXN0ZW0uCisgICBWYXJpb3VzIHByb2plY3RzIGFyZSB1c2luZyAqY21h a2UqIGluc3RlYWQgb2YgKm1ha2UqIGFuZCBjYW4gYmUgYnVpbHQKKyAgIHdpdGggdGhpcyBwYWNr YWdlIHR5cGUuIFBUWGRpc3Qgd2lsbCBwcmVwYXJlIGl0IHRvIGNvbXBpbGUgc291cmNlcyBpbgor ICAgYWNjb3JkYW5jZSB0byB0aGUgdGFyZ2V0IGxpYnJhcmllcyBhbmQgdGhlaXIgc2V0dGluZ3Mu IENyZWF0aW5nIHN1Y2gKKyAgIGEgcGFja2FnZSB3aWxsIGFsc28gY3JlYXRlIGEgc2ltcGxlIHRl bXBsYXRlIHByb2plY3QgdG8gYmUgdXNlZCBhcyBhCisgICBzdGFydGluZyBwb2ludCBmb3IgZGV2 ZWxvcG1lbnQuCisKKy0gICoqc3JjLXFtYWtlLXByb2cqKjogVGhpcyBraW5kIG9mIHBhY2thZ2Ug aXMgYnVpbHQgZm9yIHRoZSB0YXJnZXQuCisgICBJdOKAmXMgaW50ZW5kZWQgZm9yIGRldmVsb3Bt ZW50cyBiYXNlZCBvbiB0aGUgKnFtYWtlKiBidWlsZHN5c3RlbS4gSWYKKyAgIHRoZSBkZXZlbG9w ZXIgaXMgZ29pbmcgdG8gZGV2ZWxvcCBhIFFUIGJhc2VkIGFwcGxpY2F0aW9uLCB0aGlzIHJ1bGUK KyAgIGlzIHByZXBhcmVkIHRvIGNvbXBpbGUgc291cmNlcyBpbiBhY2NvcmRhbmNlIHRvIHRoZSB0 YXJnZXQgbGlicmFyaWVzCisgICBhbmQgdGhlaXIgc2V0dGluZ3MuIENyZWF0aW5nIHN1Y2ggYSBw YWNrYWdlIHdpbGwgYWxzbyBjcmVhdGUgYSBzaW1wbGUKKyAgIHRlbXBsYXRlIHByb2plY3QgdG8g YmUgdXNlZCBhcyBhIHN0YXJ0aW5nIHBvaW50IGZvciBkZXZlbG9wbWVudC4KKworLSAgKipzcmMt bWVzb24tcHJvZyoqOiBUaGlzIGtpbmQgb2YgcGFja2FnZSBpcyBidWlsdCBmb3IgdGhlIHRhcmdl dC4KKyAgIEl04oCZcyBpbnRlbmRlZCBmb3IgZGV2ZWxvcG1lbnRzIGJhc2VkIG9uIHRoZSAqbWVz b24qIGJ1aWxkc3lzdGVtLgorICAgVmFyaW91cyBwcm9qZWN0cyBhcmUgdXNpbmcgKm1lc29uKiB0 b2RheSBhbmQgY2FuIGJlIGJ1aWx0CisgICB3aXRoIHRoaXMgcGFja2FnZSB0eXBlLiBQVFhkaXN0 IHdpbGwgcHJlcGFyZSBpdCB0byBjb21waWxlIHNvdXJjZXMgaW4KKyAgIGFjY29yZGFuY2UgdG8g dGhlIHRhcmdldCBsaWJyYXJpZXMgYW5kIHRoZWlyIHNldHRpbmdzLiBDcmVhdGluZyBzdWNoCisg ICBhIHBhY2thZ2Ugd2lsbCBhbHNvIGNyZWF0ZSBhIHNpbXBsZSB0ZW1wbGF0ZSBwcm9qZWN0IHRv IGJlIHVzZWQgYXMgYQorICAgc3RhcnRpbmcgcG9pbnQgZm9yIGRldmVsb3BtZW50LgorCistICAq KmZvbnQqKjogVGhpcyBwYWNrYWdlIGlzIGEgaGVscGVyIHRvIGFkZCBYIGZvbnQgZmlsZXMgdG8g dGhlIHJvb3QKKyAgIGZpbGVzeXN0ZW0uIFRoaXMgcGFja2FnZSBkb2VzIG5vdCBjcmVhdGUgYW4g YWRkaXRpb25hbCBJUEtHLCBpbnN0ZWFkCisgICBpdCBhZGRzIHRoZSBmb250IHRvIHRoZSBleGlz dGluZyBmb250IElQS0cuIFRoaXMgaW5jbHVkZXMgdGhlCisgICBnZW5lcmF0aW9uIG9mIHRoZSBk aXJlY3RvcnkgaW5kZXggZmlsZXMsIHJlcXVpcmVkIGJ5IHRoZSBYb3JnCisgICBmcmFtZXdvcmsg dG8gcmVjb2duaXplIHRoZSBmb250IGZpbGUuCisKKy0gICoqc3JjLWxpbnV4LWRyaXZlcioqOiBU aGlzIGtpbmQgb2YgcGFja2FnZSBidWlsZHMgYW4gb3V0IG9mIHRyZWUKKyAgIGtlcm5lbCBkcml2 ZXIuIEl0IGFsc28gY3JlYXRlcyBhIGRyaXZlciB0ZW1wbGF0ZSB0byBnaXZlIHRoZQorICAgZGV2 ZWxvcGVyIGFuIGVhc3kgcG9pbnQgdG8gc3RhcnQuCisKKy0gICoqa2VybmVsKio6IFBUWGRpc3Qg Y29tZXMgd2l0aCB0aGUgYWJpbGl0eSB0byBoYW5kbGUgb25lIGtlcm5lbCBpbiBpdHMKKyAgIHBs YXRmb3JtLiBUaGlzIHR5cGUgb2YgcGFja2FnZSBlbmFibGVzIHVzIHRvIGhhbmRsZSBtb3JlIHRo YW4gb25lIGtlcm5lbCBpbgorICAgdGhlIHByb2plY3QuCisKKy0gICoqYmFyZWJveCoqOiBQVFhk aXN0IGNvbWVzIHdpdGggdGhlIGFiaWxpdHkgdG8gaGFuZGxlIG9uZSBib290bG9hZGVyIGluIGl0 cworICAgcGxhdGZvcm0uIFRoaXMgdHlwZSBvZiBwYWNrYWdlIGVuYWJsZXMgdXMgdG8gaGFuZGxl IG1vcmUgdGhhbiBvbmUgYm9vdGxvYWRlcgorICAgaW4gdGhlIHByb2plY3QuCisKKy0gICoqaW1h Z2UtdGd6Kio6IFRoaXMga2luZCBvZiBwYWNrYWdlIGNyZWF0ZXMgYSB0YXIgYmFsbCBmcm9tIGEg bGlzdCBvZgorICAgcGFja2FnZXMuIEl0IGlzIG9mdGVuIHVzZXMgYXMgYW4gaW5wdXQgZm9yIG90 aGVyIGltYWdlIHBhY2thZ2VzLgorCistICAqKmltYWdlLWdlbmltYWdlKio6IFRoaXMga2luZCBv ZiBwYWNrYWdlIGNhbiBoYW5kbGUgYWxsIGtpbmQgb2YgaW1hZ2UKKyAgIGdlbmVyYXRpb24gZm9y IGFsbW9zdCBldmVyeSB0YXJnZXQgaW5kZXBlbmRlbnQgb2YgaXRzIGNvbXBsZXhpdHkuCisKKy0g ICoqYmxzcGVjLWVudHJ5Kio6IFBUWGRpc3QgY29tZXMgd2l0aCB0aGUgYWJpbGl0eSB0byBoYW5k bGUgb25lIGJvb3RzcGVjIGluIGl0cworICAgcGxhdGZvcm0uIFRoaXMgdHlwZSBvZiBwYWNrYWdl IGVuYWJsZXMgdXMgdG8gaGFuZGxlIG1vcmUgdGhhbiBvbmUgYm9vdHNwZWMKKyAgIGluIHRoZSBw cm9qZWN0LgorCisuLiBfZm9vX2V4YW1wbGU6CisKK1J1bGUgRmlsZSBDcmVhdGlvbgorfn5+fn5+ fn5+fn5+fn5+fn5+CisKK1RvIGNyZWF0ZSBzdWNoIGEgbmV3IHBhY2thZ2UsIHdlIGNyZWF0ZSBh IHByb2plY3QgbG9jYWwgYGBydWxlcy9gYAorZGlyZWN0b3J5IGZpcnN0LiBUaGVuIHdlIHJ1bgor CisuLiBjb2RlLWJsb2NrOjogdGV4dAorCisgICAgJCBwdHhkaXN0IG5ld3BhY2thZ2UgPHBhY2th Z2UgdHlwZT4KKworSWYgd2Ugb21pdCB0aGUgPGBgcGFja2FnZSB0eXBlYGBcID4sIFBUWGRpc3Qg d2lsbCBsaXN0IGFsbCBhdmFpbGFibGUKK3BhY2thZ2UgdHlwZXMuCisKK0luIG91ciBmaXJzdCBl eGFtcGxlLCB3ZSB3YW50IHRvIGFkZCBhIG5ldyB0YXJnZXQgdHlwZSBhcmNoaXZlIHBhY2thZ2Uu CitXaGVuIHJ1bm5pbmcgdGhlCisKKy4uIGNvZGUtYmxvY2s6OiB0ZXh0CisKKyAgICAkIHB0eGRp c3QgbmV3cGFja2FnZSB0YXJnZXQKKworY29tbWFuZCwgUFRYZGlzdCBhc2tzIGEgZmV3IHF1ZXN0 aW9ucyBhYm91dCB0aGlzIHBhY2thZ2UuIFRoaXMKK2luZm9ybWF0aW9uIGlzIHRoZSBiYXNpYyBk YXRhIFBUWGRpc3QgbXVzdCBrbm93IGFib3V0IHRoZSBwYWNrYWdlLgorCisuLiBjb2RlLWJsb2Nr OjogdGV4dAorCisgICAgcHR4ZGlzdDogY3JlYXRpbmcgYSBuZXcgJ3RhcmdldCcgcGFja2FnZToK KworICAgIHB0eGRpc3Q6IGVudGVyIHBhY2thZ2UgbmFtZS4uLi4uLi46IGZvbworICAgIHB0eGRp c3Q6IGVudGVyIHZlcnNpb24gbnVtYmVyLi4uLi46IDEuMS4wCisgICAgcHR4ZGlzdDogZW50ZXIg VVJMIG9mIGJhc2VkaXIuLi4uLjogaHR0cDovL3d3dy5mb28uY29tL2Rvd25sb2FkL3NyYworICAg IHB0eGRpc3Q6IGVudGVyIHN1ZmZpeC4uLi4uLi4uLi4uLi46IHRhci5negorICAgIHB0eGRpc3Q6 IGVudGVyIHBhY2thZ2UgYXV0aG9yLi4uLi46IE15IE5hbWUgPG1lQG15LW9yZy5jb20+CisgICAg cHR4ZGlzdDogZW50ZXIgcGFja2FnZSBzZWN0aW9uLi4uLjogcHJvamVjdF9zcGVjaWZpYworCitX aGF0IHdlIGhhdmUgdG8gYW5zd2VyOgorCistICAqKnBhY2thZ2UgbmFtZSoqOiBBcyB0aGlzIGtp bmQgb2YgcGFja2FnZSBoYW5kbGVzIGEgc291cmNlIGFyY2hpdmUsCisgICB0aGUgY29ycmVjdCBh bnN3ZXIgaGVyZSBpcyB0aGUgYmFzZW5hbWUgb2YgdGhlIGFyY2hpdmXigJlzIGZpbGUgbmFtZS4K KyAgIElmIGl0cyBmdWxsIG5hbWUgaXMgYGBmb28tMS4xLjAudGFyLmd6YGAsIHRoZW4gYGBmb29g YCBpcyB0aGUKKyAgIGJhc2VuYW1lIHRvIGVudGVyIGhlcmUuCisKKy0gICoqdmVyc2lvbiBudW1i ZXIqKjogTW9zdCBzb3VyY2UgYXJjaGl2ZXMgYXJlIHVzaW5nIGEgcmVsZWFzZSBvcgorICAgdmVy c2lvbiBudW1iZXIgaW4gdGhlaXIgZmlsZSBuYW1lLiBJZiBpdHMgZnVsbCBuYW1lIGlzCisgICBg YGZvby0xLjEuMC50YXIuZ3pgYCwgdGhlbiBgYDEuMS4wYGAgaXMgdGhlIHZlcnNpb24gbnVtYmVy IHRvIGVudGVyCisgICBoZXJlLgorCistICAqKlVSTCBvZiBiYXNlZGlyKio6IFRoaXMgVVJMIHRl bGxzIFBUWGRpc3Qgd2hlcmUgdG8gZG93bmxvYWQgdGhlCisgICBzb3VyY2UgYXJjaGl2ZSBmcm9t IHRoZSB3ZWIgKGlmIG5vdCBhbHJlYWR5IGRvbmUpLiBJZiB0aGUgZnVsbCBVUkwgdG8KKyAgIGRv d25sb2FkIHRoZSBhcmNoaXZlIGlzCisgICBgYGh0dHA6Ly93d3cuZm9vLmNvbS9kb3dubG9hZC9z cmMvZm9vLTEuMS4wLnRhci5nemBgLCB0aGUgYmFzZWRpcgorICAgcGFydCBgYGh0dHA6Ly93d3cu Zm9vLmNvbS9kb3dubG9hZC9zcmNgYCBpcyB0byBiZSBlbnRlcmVkIGhlcmUuCisKKy0gICoqc3Vm Zml4Kio6IEFyY2hpdmVzIGFyZSB1c2luZyB2YXJpb3VzIGZvcm1hdHMgZm9yIGRpc3RyaWJ1dGlv bi4KKyAgIFBUWGRpc3QgdXNlcyB0aGUgKnN1ZmZpeCogZW50cnkgdG8gc2VsZWN0IHRoZSBtYXRj aGluZyBleHRyYWN0aW9uCisgICB0b29sLiBJZiB0aGUgYXJjaGl2ZeKAmXMgZnVsbCBuYW1lIGlz IGBgZm9vLTEuMS4wLnRhci5nemBgLCB0aGVuCisgICBgYHRhci5nemBgIGlzIHRoZSBzdWZmaXgg dG8gZW50ZXIgaGVyZS4KKworLSAgKipwYWNrYWdlIGF1dGhvcioqOiBJZiB3ZSBpbnRlbmQgdG8g Y29udHJpYnV0ZSB0aGlzIG5ldyBwYWNrYWdlIHRvCisgICBQVFhkaXN0IG1haW5saW5lLCB3ZSBz aG91bGQgYWRkIG91ciBuYW1lIGhlcmUuIFRoaXMgbmFtZSB3aWxsIGJlIHVzZWQKKyAgIGluIHRo ZSBjb3B5cmlnaHQgbm90ZSBvZiB0aGUgcnVsZSBmaWxlIGFuZCB3aWxsIGFsc28gYmUgYWRkZWQg dG8gdGhlCisgICBnZW5lcmF0ZWQgaXBrZy4gV2hlbiB5b3UgcnVuIGBgcHR4ZGlzdCBzZXR1cGBg IHByaW9yIHRvIHRoaXMgY2FsbCwKKyAgIHlvdSBjYW4gZW50ZXIgeW91ciBuYW1lIGFuZCB5b3Vy IGVtYWlsIGFkZHJlc3MsIHNvIFBUWGRpc3Qgd2lsbCB1c2UKKyAgIGl0IGFzIHRoZSBkZWZhdWx0 ICh2ZXJ5IGhhbmR5IGlmIHlvdSBpbnRlbmQgdG8gYWRkIG1hbnkgbmV3CisgICBwYWNrYWdlcyku CisKKy0gICoqcGFja2FnZSBzZWN0aW9uKio6IFdlIGNhbiBlbnRlciBoZXJlIHRoZSBtZW51IHNl Y3Rpb24gbmFtZSB3aGVyZQorICAgb3VyIG5ldyBwYWNrYWdlIG1lbnUgZW50cnkgc2hvdWxkIGJl IGxpc3RlZC4gSW4gdGhlIGZpcnN0IHN0ZXAgd2UgY2FuCisgICBsZWF2ZSB0aGUgZGVmYXVsdCBu YW1lIHVuY2hhbmdlZC4gSXTigJlzIGEgc3RyaW5nIGluIHRoZSBtZW51IGZpbGUKKyAgIG9ubHks IHNvIGNoYW5naW5nIGl0IGxhdGVyIG9uIGlzIHN0aWxsIHBvc3NpYmxlLgorCitNYWtlIGl0IFdv cmsKK35+fn5+fn5+fn5+fgorCitHZW5lcmF0aW5nIHRoZSBydWxlIGZpbGUgaXMgb25seSBvbmUg b2YgdGhlIHJlcXVpcmVkIHN0ZXBzIHRvIGdldCBhIG5ldworcGFja2FnZS4gVGhlIG5leHQgc3Rl cHMgdG8gbWFrZSBpdCB3b3JrIGFyZSB0byBjaGVjayBpZiBhbGwgc3RhZ2VzIGFyZQord29ya2lu ZyBhcyBleHBlY3RlZCBhbmQgdG8gc2VsZWN0IHRoZSByZXF1aXJlZCBwYXJ0cyB0byBnZXQgdGhl bQoraW5zdGFsbGVkIGluIHRoZSB0YXJnZXQgcm9vdCBmaWxlc3lzdGVtLiBBbHNvIHdlIG11c3Qg ZmluZCBhIHJlYXNvbmFibGUKK2xvY2F0aW9uIHdoZXJlIHRvIGFkZCBvdXIgbmV3IG1lbnUgZW50 cnkgdG8gY29uZmlndXJlIHRoZSBwYWNrYWdlLgorCitUaGUgZ2VuZXJhdGVkIHNrZWxldG9uIHN0 YXJ0cyB0byBhZGQgdGhlIG5ldyBtZW51IGVudHJ5IGluIHRoZSBtYWluCitjb25maWd1cmUgbWVu dSAoaWYgd2UgbGVmdCB0aGUgc2VjdGlvbiBuYW1lIHVuY2hhbmdlZCkuIFJ1bm5pbmcKK2BgcHR4 ZGlzdCBtZW51Y29uZmlnYGAgd2lsbCBzaG93IGl0IG9uIHRvcCBvZiBhbGwgb3RoZXIgbWVudXMg ZW50cmllcy4KKworLi4gaW1wb3J0YW50OjogCisgIFRvIGJlIGFibGUgdG8gaW1wbGVtZW50IGFu ZCB0ZXN0IGFsbCB0aGUgb3RoZXIgcmVxdWlyZWQgc3RlcHMgZm9yIGFkZGluZworICBhIG5ldyBw YWNrYWdlLCB3ZSBmaXJzdCBtdXN0IGVuYWJsZSB0aGUgcGFja2FnZSBmb3IgYnVpbGRpbmcuIChG aW5lCisgIHR1bmluZyB0aGUgbWVudSBjYW4gaGFwcGVuIGxhdGVyIG9uLikKKworCitUaGUgcnVs ZSBmaWxlIHNrZWxldG9uIHN0aWxsIGxhY2tzIHNvbWUgaW1wb3J0YW50IGluZm9ybWF0aW9uLiBM ZXTigJlzCit0YWtlIGEgbG9vayBpbnRvIHNvbWUgb2YgdGhlIHRvcCBsaW5lcyBvZiB0aGUgZ2Vu ZXJhdGVkIHJ1bGUgZmlsZQorYGAuL3J1bGVzL2Zvby5tYWtlYGA6CisKKy4uIGNvZGUtYmxvY2s6 OiBtYWtlCisKKyAgICBGT09fVkVSU0lPTgk6PSAxLjEuMAorICAgIEZPT19NRDUJOj0KKyAgICBG T08JCTo9IGZvby0kKEZPT19WRVJTSU9OKQorICAgIEZPT19TVUZGSVgJOj0gdGFyLmd6CisgICAg Rk9PX1VSTAk6PSBodHRwOi8vd3d3LmZvby5jb20vZG93bmxvYWQvc3JjLyQoRk9PKS4kKEZPT19T VUZGSVgpCisgICAgRk9PX1NPVVJDRQk6PSAkKFNSQ0RJUikvJChGT08pLiQoRk9PX1NVRkZJWCkK KyAgICBGT09fRElSCTo9ICQoQlVJTERESVIpLyQoRk9PKQorICAgIEZPT19MSUNFTlNFCTo9IHVu a25vd24KKworV2UgY2FuIGZpbmQgdGhlc2UgbGluZXMgd2l0aCBkaWZmZXJlbnQgY29udGVudCBp biBtb3N0IG9yIGFsbCBvZiB0aGUKK290aGVyIHJ1bGUgZmlsZXMgUFRYZGlzdCBjb21lcyB3aXRo LiBVcCB0byB0aGUgdW5kZXJsaW5lIGNoYXJhY3RlciBpcworYWx3YXlzIHRoZSBwYWNrYWdlIG5h bWUgYW5kIGFmdGVyIHRoZSB1bmRlcmxpbmUgY2hhcmFjdGVyIGlzIGFsd2F5cworUFRYZGlzdCBz cGVjaWZpYy4gV2hhdCBkb2VzIGl0IG1lYW46CisKKy0gIGBgKl9WRVJTSU9OYGAgYnJpbmdzIGlu IHRoZSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgcmVsZWFzZSBhbmQgaXMgdXNlZAorICAgZm9yIHRo ZSBkb3dubG9hZCBhbmQgSVBLRy9PUEtHIHBhY2thZ2UgZ2VuZXJhdGlvbi4KKworLSAgYGAqX01E NWBgIHRvIGJlIHN1cmUgdGhlIGNvcnJlY3QgcGFja2FnZSBoYXMgYmVlbiBkb3dubG9hZGVkLCBQ VFhkaXN0CisgICBjaGVja3MgdGhlIGdpdmVuIE1ENSBzdW0gYWdhaW5zdCB0aGUgYXJjaGl2ZSBj b250ZW50LiBJZiBib3RoIHN1bXMgZG8KKyAgIG5vdCBtYXRjaCwgUFRYZGlzdCByZWplY3RzIHRo ZSBhcmNoaXZlIGFuZCBmYWlscyB0aGUgY3VycmVudGx5CisgICBydW5uaW5nIGJ1aWxkLgorCist ICBgYCpfU1VGRklYYGAgZGVmaW5lcyB0aGUgYXJjaGl2ZSB0eXBlLCB0byBtYWtlIFBUWGRpc3Qg Y2hvb3NpbmcgdGhlCisgICBjb3JyZWN0IGV4dHJhY3RpbmcgdG9vbC4KKworLSAgYGAqX1VSTGBg IGRlZmluZXMgdGhlIGZ1bGwgcXVhbGlmaWVkIFVSTCBpbnRvIHRoZSB3ZWIgZm9yIGRvd25sb2Fk LiBJZgorICAgYWx0ZXJuYXRpdmUgZG93bmxvYWQgbG9jYXRpb25zIGFyZSBrbm93biwgdGhleSBj YW4gYmUgbGlzdGVkIGluIHRoaXMKKyAgIHZhcmlhYmxlLCBkZWxpbWl0ZXIgY2hhcmFjdGVyIGlz IHRoZSBzcGFjZS4KKworLSAgYGAqX1NPVVJDRWBgIHRlbGxzIFBUWGRpc3Qgd2hlcmUgdG8gc3Rv cmUgdGhlIGRvd25sb2FkZWQgcGFja2FnZS4KKworLSAgYGAqX0RJUmBgIHBvaW50cyB0byB0aGUg ZGlyZWN0b3J5IHRoaXMgcGFja2FnZSB3aWxsIGJlIGJ1aWx0IGxhdGVyIG9uCisgICBieSBQVFhk aXN0LgorCistICBgYCpfTElDRU5TRWBgIGVuYWJsZXMgdGhlIHVzZXIgdG8gZ2V0IGEgbGlzdCBv ZiBsaWNlbnNlcyBzaGUvaGUgaXMKKyAgIHVzaW5nIGluIGhlci9oaXMgcHJvamVjdCAobGljZW5z ZXMgb2YgdGhlIGVuYWJsZWQgcGFja2FnZXMpLgorCitBZnRlciBlbmFibGluZyB0aGUgbWVudSBl bnRyeSwgd2UgY2FuIHN0YXJ0IHRvIGNoZWNrIHRoZSAqZ2V0KiBhbmQKKypleHRyYWN0KiBzdGFn ZXMsIGNhbGxpbmcgdGhlbSBtYW51YWxseSBvbmUgYWZ0ZXIgYW5vdGhlci4KKworLi4gbm90ZTo6 IFRoZSBzaG93biBjb21tYW5kcyBiZWxvdyBleHBlY3QgdGhhdCBQVFhkaXN0IGRvd25sb2FkcyB0 aGUKKyAgYXJjaGl2ZXMgdG8gYSBnbG9iYWwgZGlyZWN0b3J5IG5hbWVkIGBgZ2xvYmFsX3NyY2Bg LiBUaGlzIGlzIG5vdCB0aGUKKyAgZGVmYXVsdCBzZXR0aW5nLCBidXQgd2UgcmVjb21tZW5kIHRv IHVzZSBhIGdsb2JhbCBkaXJlY3RvcnkgdG8gc2hhcmUgYWxsCisgIGFyY2hpdmVzIGJldHdlZW4g UFRYZGlzdCBiYXNlZCBwcm9qZWN0cy4gQWR2YW50YWdlIGlzIGV2ZXJ5IGRvd25sb2FkCisgIGhh cHBlbnMgb25seSBvbmNlLiBSZWZlciB0byB0aGUgYGBzZXR1cGBgIGNvbW1hbmQgUFRYZGlzdCBw cm92aWRlcy4KKworLi4gY29kZS1ibG9jazo6IHRleHQKKworICAgICQgcHR4ZGlzdCBnZXQgZm9v CisKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB0YXJnZXQ6IGZvby0xLjEu MC50YXIuZ3oKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC0tMjAwOS0x Mi0yMSAxMDo1NDo0NS0tICBodHRwOi8vd3d3LmZvby5jb20vZG93bmxvYWQvc3JjL2Zvby0xLjEu MC50YXIuZ3oKKyAgICBMZW5ndGg6IDI5MTE5MCAoMjg0SykgW2FwcGxpY2F0aW9uL3gtZ3ppcF0K KyAgICBTYXZpbmcgdG86IGAvZ2xvYmFsX3NyYy9mb28tMS4xLjAudGFyLmd6LlhYWFhPR25jWkEn CisKKyAgICAxMDAlWz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Pl0gMjkx LDE5MCAgICAgIDE3MEsvcyAgIGluIDEuN3MKKworICAgIDIwMDktMTItMjEgMTA6NTQ6NDggKDE3 MCBLQi9zKSAtIGAvZ2xvYmFsX3NyYy9mb28tMS4xLjAudGFyLmd6JyBzYXZlZCBbMjkxMTkwLzI5 MTE5MF0KKworVGhpcyBjb21tYW5kIHNob3VsZCBzdGFydCB0byBkb3dubG9hZCB0aGUgc291cmNl IGFyY2hpdmUuIElmIGl0IGZhaWxzLAord2Ugc2hvdWxkIGNoZWNrIG91ciBuZXR3b3JrIGNvbm5l Y3Rpb24sIHByb3h5IHNldHVwIG9yIGlmIHRoZSBnaXZlbiBVUkwKK2luIHVzZSBpcyBjb3JyZWN0 LgorCisuLiBub3RlOjogU29tZXRpbWVzIHdlIGRvIG5vdCBrbm93IHRoZSBjb250ZW50IG9mIGFs bCB0aGUgb3RoZXIgdmFyaWFibGVzIGluCisgIHRoZSBydWxlIGZpbGUuIFRvIGdldCBhbiBpZGVh IHdoYXQgY29udGVudCBhIHZhcmlhYmxlIGhhcywgd2UgY2FuIGFzaworICBQVFhkaXN0IGFib3V0 IGl0OgorCisuLiBjb2RlLWJsb2NrOjogdGV4dAorCisgICAgJCBwdHhkaXN0IHByaW50IEZPT19V UkwKKyAgICBodHRwOi8vd3d3LmZvby5jb20vZG93bmxvYWQvc3JjL2Zvby0xLjEuMC50YXIuZ3oK KworVGhlIG5leHQgc3RlcCB3b3VsZCBiZSB0byBleHRyYWN0IHRoZSBhcmNoaXZlLiBCdXQgYXMg UFRYZGlzdCBjaGVja3MgdGhlCitNRDUgc3VtIGluIHRoaXMgY2FzZSwgdGhpcyBzdGVwIHdpbGwg ZmFpbCwgYmVjYXVzZSB0aGUgYGBGT09fTUQ1YGAKK3ZhcmlhYmxlIGlzIHN0aWxsIGVtcHR5LiBM ZXTigJlzIGZpbGwgaXQ6CisKKy4uIGNvZGUtYmxvY2s6OiB0ZXh0CisKKyAgICAkIG1kNXN1bSAv Z2xvYmFsX3NyYy9mb28tMS4xLjAudGFyLmd6CisgICAgOWEwOTg0MGFiNzc1YTEzOWViYjAwZjU3 YTU4N2I0NDcKKworVGhpcyBzdHJpbmcgbXVzdCBiZSBhc3NpZ25lZCB0byB0aGUgRk9PX01ENSBp biBvdXIgbmV3IGBgZm9vLm1ha2VgYAorcnVsZSBmaWxlOgorCisuLiBjb2RlLWJsb2NrOjogdGV4 dAorCisgICAgRk9PX01ENQkJOj0gOWEwOTg0MGFiNzc1YTEzOWViYjAwZjU3YTU4N2I0NDcKKwor V2UgYXJlIG5vdyBwcmVwYXJlZCBmb3IgdGhlIG5leHQgc3RlcDoKKworLi4gY29kZS1ibG9jazo6 IHRleHQKKworICAgICQgcHR4ZGlzdCBleHRyYWN0IGZvbworCisgICAgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAgICB0YXJnZXQ6IGZvby5leHRyYWN0CisgICAgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKworICAgIGV4dHJhY3Q6IGFyY2hpdmU9L2dsb2JhbF9zcmMvZm9vLTEuMS4wLnRhci5n egorICAgIGV4dHJhY3Q6IGRlc3Q9L2hvbWUvamJlL215X25ld19wcmovYnVpbGQtdGFyZ2V0Cisg ICAgUEFUQ0hJTjogcGFja2V0PWZvby0xLjEuMAorICAgIFBBVENISU46IGRpcj0vaG9tZS9qYmUv bXlfbmV3X3Byai9idWlsZC10YXJnZXQvZm9vLTEuMS4wCisgICAgUEFUQ0hJTjogbm8gcGF0Y2hl cyBmb3IgZm9vLTEuMS4wIGF2YWlsYWJsZQorICAgIEZpeGluZyB1cCAvaG9tZS9qYmUvbXlfbmV3 X3Byai9idWlsZC10YXJnZXQvZm9vLTEuMS4wL2NvbmZpZ3VyZQorICAgIGZpbmlzaGVkIHRhcmdl dCBmb28uZXh0cmFjdAorCitJbiB0aGlzIGV4YW1wbGUgd2UgZXhwZWN0IGFuIGF1dG90b29saXpl ZCBzb3VyY2UgcGFja2FnZS4gRS5nLiB0bworcHJlcGFyZSB0aGUgYnVpbGQsIHRoZSBhcmNoaXZl IGNvbWVzIHdpdGggYSBgYGNvbmZpZ3VyZWBgIHNjcmlwdC4gVGhpcworaXMgdGhlIGRlZmF1bHQg Y2FzZSBmb3IgUFRYZGlzdC4gU28sIHRoZXJlIGlzIG5vIG5lZWQgdG8gbW9kaWZ5IHRoZSBydWxl CitmaWxlIGFuZCB3ZSBjYW4gc2ltcGx5IHJ1bjoKKworLi4gY29kZS1ibG9jazo6IHRleHQKKwor ICAgICQgcHR4ZGlzdCBwcmVwYXJlIGZvbworCisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAgICB0YXJnZXQ6IGZvby5wcmVwYXJlCisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor ICAgIFsuLi5dCisKKyAgICBjaGVja2luZyBidWlsZCBzeXN0ZW0gdHlwZS4uLiBpNjg2LWhvc3Qt bGludXgtZ251CisgICAgY2hlY2tpbmcgaG9zdCBzeXN0ZW0gdHlwZS4uLiB8cHR4ZGlzdENvbXBp bGVyTmFtZXwKKyAgICBjaGVja2luZyB3aGV0aGVyIHRvIGVuYWJsZSBtYWludGFpbmVyLXNwZWNp ZmljIHBvcnRpb25zIG9mIE1ha2VmaWxlcy4uLiBubworICAgIGNoZWNraW5nIGZvciBhIEJTRC1j b21wYXRpYmxlIGluc3RhbGwuLi4gL3Vzci9iaW4vaW5zdGFsbCAtYworICAgIGNoZWNraW5nIHdo ZXRoZXIgYnVpbGQgZW52aXJvbm1lbnQgaXMgc2FuZS4uLiB5ZXMKKyAgICBjaGVja2luZyBmb3Ig YSB0aHJlYWQtc2FmZSBta2RpciAtcC4uLiAvYmluL21rZGlyIC1wCisgICAgY2hlY2tpbmcgZm9y IGdhd2suLi4gZ2F3aworICAgIGNoZWNraW5nIHdoZXRoZXIgbWFrZSBzZXRzICQoTUFLRSkuLi4g eWVzCisgICAgY2hlY2tpbmcgZm9yIHxwdHhkaXN0Q29tcGlsZXJOYW1lfC1zdHJpcC4uLiB8cHR4 ZGlzdENvbXBpbGVyTmFtZXwtc3RyaXAKKyAgICBjaGVja2luZyBmb3IgfHB0eGRpc3RDb21waWxl ck5hbWV8LWdjYy4uLiB8cHR4ZGlzdENvbXBpbGVyTmFtZXwtZ2NjCisgICAgY2hlY2tpbmcgZm9y IEMgY29tcGlsZXIgZGVmYXVsdCBvdXRwdXQgZmlsZSBuYW1lLi4uIGEub3V0CisKKyAgICBbLi4u XQorCisgICAgY29uZmlndXJlOiBjcmVhdGluZyAuL2NvbmZpZy5zdGF0dXMKKyAgICBjb25maWcu c3RhdHVzOiBjcmVhdGluZyBNYWtlZmlsZQorICAgIGNvbmZpZy5zdGF0dXM6IGNyZWF0aW5nIHBw YV9wcm90b2NvbC9NYWtlZmlsZQorICAgIGNvbmZpZy5zdGF0dXM6IGNyZWF0aW5nIGNvbmZpZy5o CisgICAgY29uZmlnLnN0YXR1czogZXhlY3V0aW5nIGRlcGZpbGVzIGNvbW1hbmRzCisgICAgZmlu aXNoZWQgdGFyZ2V0IGZvby5wcmVwYXJlCisKK0F0IHRoaXMgc3RhZ2UgdGhpbmdzIGNhbiBmYWls OgorCistICBBIHdyb25nIG9yIG5vIE1ENSBzdW0gd2FzIGdpdmVuCisKKy0gIFRoZSBgYGNvbmZp Z3VyZWBgIHNjcmlwdCBpcyBub3QgY3Jvc3MgY29tcGlsZSBhd2FyZQorCistICBUaGUgcGFja2Fn ZSBkZXBlbmRzIG9uIGV4dGVybmFsIGNvbXBvbmVudHMgKGxpYnJhcmllcyBmb3IgZXhhbXBsZSkK KworSWYgdGhlIGBgY29uZmlndXJlYGAgc2NyaXB0IGlzIG5vdCBjcm9zcyBjb21waWxlIGF3YXJl LCB3ZSBhcmUgb3V0IG9mCitsdWNrLiBXZSBtdXN0IHBhdGNoIHRoZSBzb3VyY2UgYXJjaGl2ZSBp biB0aGlzIGNhc2UgdG8gbWFrZSBpdCB3b3JrLgorUmVmZXIgdG8gdGhlIHNlY3Rpb24gOnJlZjpg Y29uZmlndXJlX3JlYnVpbGRgIG9uIGhvdyB0byB1c2UKK1BUWGRpc3TigJlzIGZlYXR1cmVzIHRv IHNpbXBsaWZ5IHRoaXMgdGFzay4KK0lmIHRoZSBwYWNrYWdlIGRlcGVuZHMgb24gZXh0ZXJuYWwg Y29tcG9uZW50cywgdGhlc2UgY29tcG9uZW50cyBtaWdodAorYmUgYWxyZWFkeSBwYXJ0IG9mIFBU WGRpc3QuIEluIHRoaXMgY2FzZSB3ZSBqdXN0IGhhdmUgdG8gYWRkIHRoaXMKK2RlcGVuZGVuY3kg aW50byB0aGUgbWVudSBmaWxlIGFuZCB3ZSBhcmUgZG9uZS4gQnV0IGlmIFBUWGRpc3QgY2Fubm90 CitmdWxmaWxsIHRoaXMgZGVwZW5kZW5jeSwgd2UgYWxzbyBtdXN0IGFkZCBpdCBhcyBhIHNlcGFy YXRlIHBhY2thZ2UKK2ZpcnN0LgorCitJZiB0aGUgKnByZXBhcmUqIHN0YWdlIGhhcyBmaW5pc2hl ZCBzdWNjZXNzZnVsbHksIHRoZSBuZXh0IHN0ZXAgaXMgdG8KK2NvbXBpbGUgdGhlIHBhY2thZ2Uu CisKKy4uIGNvZGUtYmxvY2s6OiB0ZXh0CisKKyAgICAkIHB0eGRpc3QgY29tcGlsZSBmb28KKwor ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgdGFyZ2V0OiBmb28uY29tcGlsZQorICAg IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBtYWtlWzFdOiBFbnRlcmluZyBkaXJlY3Rv cnkgYC9ob21lL2piZS9teV9uZXdfcHJqL2J1aWxkLXRhcmdldC9mb28tMS4xLjAnCisgICAgbWFr ZSAgYWxsLXJlY3Vyc2l2ZQorICAgIG1ha2VbMl06IEVudGVyaW5nIGRpcmVjdG9yeSBgL2hvbWUv amJlL215X25ld19wcmovYnVpbGQtdGFyZ2V0L2Zvby0xLjEuMCcKKyAgICBtYWtlWzNdOiBFbnRl cmluZyBkaXJlY3RvcnkgYC9ob21lL2piZS9teV9uZXdfcHJqL2J1aWxkLXRhcmdldC9mb28tMS4x LjAnCisKKyAgICBbLi4uXQorCisgICAgbWFrZVszXTogTGVhdmluZyBkaXJlY3RvcnkgYC9ob21l L2piZS9teV9uZXdfcHJqL2J1aWxkLXRhcmdldC9mb28tMS4xLjAnCisgICAgbWFrZVsyXTogTGVh dmluZyBkaXJlY3RvcnkgYC9ob21lL2piZS9teV9uZXdfcHJqL2J1aWxkLXRhcmdldC9mb28tMS4x LjAnCisgICAgbWFrZVsxXTogTGVhdmluZyBkaXJlY3RvcnkgYC9ob21lL2piZS9teV9uZXdfcHJq L2J1aWxkLXRhcmdldC9mb28tMS4xLjAnCisgICAgZmluaXNoZWQgdGFyZ2V0IGZvby5jb21waWxl CisKK0F0IHRoaXMgc3RhZ2UgdGhpbmdzIGNhbiBmYWlsOgorCistICBUaGUgYnVpbGQgc3lzdGVt IGlzIG5vdCBjcm9zcyBjb21waWxlIGF3YXJlIChpdCB0cmllcyB0byBleGVjdXRlIGp1c3QKKyAg IGNyZWF0ZWQgdGFyZ2V0IGJpbmFyaWVzIGZvciBleGFtcGxlKQorCistICBUaGUgcGFja2FnZSBk ZXBlbmRzIG9uIGV4dGVybmFsIGNvbXBvbmVudHMgKGxpYnJhcmllcyBmb3IgZXhhbXBsZSkKKyAg IG5vdCBkZXRlY3RlZCBieSBgYGNvbmZpZ3VyZWBgCisKKy0gIFNvdXJjZXMgYXJlIGlnbm9yaW5n IHRoZSBlbmRpYW5uZXNzIG9mIHNvbWUgYXJjaGl0ZWN0dXJlcyBvciB1c2luZworICAgaGVhZGVy IGZpbGVzIGZyb20gdGhlIGJ1aWxkIGhvc3Qgc3lzdGVtIChmcm9tIGBgL3Vzci9pbmNsdWRlYGAg Zm9yCisgICBleGFtcGxlKQorCistICBUaGUgbGlua2VyIHVzZXMgbGlicmFyaWVzIGZyb20gdGhl IGJ1aWxkIGhvc3Qgc3lzdGVtIChmcm9tCisgICBgYC91c3IvbGliYGAgZm9yIGV4YW1wbGUpIGJ5 IGFjY2lkZW50CisKK0luIGFsbCBvZiB0aGVzZSBjYXNlcyB3ZSBtdXN0IHBhdGNoIHRoZSBzb3Vy Y2VzIHRvIG1ha2UgdGhlbSB3b3JrLiBSZWZlcgordG8gc2VjdGlvbiA6cmVmOmBwYXRjaGluZ19w YWNrYWdlc2Agb24gaG93IHRvIHVzZSBQVFhkaXN04oCZcworZmVhdHVyZXMgdG8gc2ltcGxpZnkg dGhpcyB0YXNrLgorCitJbiB0aGlzIGV4YW1wbGUgd2UgZXhwZWN0IHRoZSBiZXN0IGNhc2U6IGV2 ZXJ5dGhpbmcgd2VudCBmaW5lLCBldmVuIGZvcgorY3Jvc3MgY29tcGlsaW5nLiBTbywgd2UgY2Fu IGNvbnRpbnVlIHdpdGggdGhlIG5leHQgc3RhZ2U6ICppbnN0YWxsKgorCisuLiBjb2RlLWJsb2Nr OjogdGV4dAorCisgICAgJCBwdHhkaXN0IGluc3RhbGwgZm9vCisKKyAgICAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICAgIHRhcmdldDogZm9vLmluc3RhbGwKKyAgICAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorCisgICAgbWFrZVsxXTogRW50ZXJpbmcgZGlyZWN0b3J5IGAvaG9tZS9qYmUvbXlf bmV3X3Byai9idWlsZC10YXJnZXQvZm9vLTEuMS4wJworICAgIG1ha2VbMl06IEVudGVyaW5nIGRp cmVjdG9yeSBgL2hvbWUvamJlL215X25ld19wcmovYnVpbGQtdGFyZ2V0L2Zvby0xLjEuMCcKKyAg ICBtYWtlWzNdOiBFbnRlcmluZyBkaXJlY3RvcnkgYC9ob21lL2piZS9teV9uZXdfcHJqL2J1aWxk LXRhcmdldC9mb28tMS4xLjAnCisgICAgdGVzdCAteiAiL3Vzci9iaW4iIHx8IC9iaW4vbWtkaXIg LXAgIi9ob21lL2piZS9teV9uZXdfcHJqL2J1aWxkLXRhcmdldC9mb28tMS4xLjAvdXNyL2JpbiIK KyAgICAgIC91c3IvYmluL2luc3RhbGwgLWMgJ2ZvbycgJy9ob21lL2piZS9teV9uZXdfcHJqL2J1 aWxkLXRhcmdldC9mb28tMS4xLjAvdXNyL2Jpbi9mb28nCisgICAgbWFrZVszXTogTGVhdmluZyBk aXJlY3RvcnkgYC9ob21lL2piZS9teV9uZXdfcHJqL2J1aWxkLXRhcmdldC9mb28tMS4xLjAnCisg ICAgbWFrZVsyXTogTGVhdmluZyBkaXJlY3RvcnkgYC9ob21lL2piZS9teV9uZXdfcHJqL2J1aWxk LXRhcmdldC9mb28tMS4xLjAnCisgICAgbWFrZVsxXTogTGVhdmluZyBkaXJlY3RvcnkgYC9ob21l L2piZS9teV9uZXdfcHJqL2J1aWxkLXRhcmdldC9mb28tMS4xLjAnCisgICAgZmluaXNoZWQgdGFy Z2V0IGZvby5pbnN0YWxsCisKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg dGFyZ2V0OiBmb28uaW5zdGFsbC5wb3N0CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorCisgICAgZmluaXNoZWQgdGFyZ2V0IGZvby5pbnN0YWxsLnBvc3QKKworVGhpcyAqaW5zdGFs bCogc3RhZ2UgZG9lcyBub3QgaW5zdGFsbCBhbnl0aGluZyB0byB0aGUgdGFyZ2V0IHJvb3QKK2Zp bGVzeXN0ZW0uIEl0IGlzIG1vc3RseSBpbnRlbmRlZCB0byBpbnN0YWxsIGxpYnJhcmllcyBhbmQg aGVhZGVyIGZpbGVzCitvdGhlciBwcm9ncmFtcyBzaG91bGQgbGluayBhZ2FpbnN0IGxhdGVyIG9u LgorCitUaGUgbGFzdCBzdGFnZSDigJMgKnRhcmdldGluc3RhbGwqIOKAkyBpcyB0aGUgb25lIHRo YXQgZGVmaW5lcyB0aGUgcGFja2FnZeKAmXMKK2NvbXBvbmVudHMgdG8gYmUgZm9yd2FyZGVkIHRv IHRoZSB0YXJnZXTigJlzIHJvb3QgZmlsZXN5c3RlbS4gRHVlIHRvIHRoZQorYWJzZW5jZSBvZiBh IGdlbmVyaWMgd2F5LCB0aGlzIGlzIHRoZSB0YXNrIG9mIHRoZSBkZXZlbG9wZXIuIFNvLCBhdCB0 aGlzCitwb2ludCBvZiB0aW1lIHdlIG11c3QgcnVuIG91ciBmYXZvdXJpdGUgZWRpdG9yIGFnYWlu IGFuZCBtb2RpZnkgb3VyIG5ldworcnVsZSBmaWxlIGBgLi9ydWxlcy9mb28ubWFrZWBgLgorCitU aGUgc2tlbGV0b24gZm9yIHRoZSAqdGFyZ2V0aW5zdGFsbCogc3RhZ2UgbG9va3MgbGlrZSB0aGlz OgorCisuLiBjb2RlLWJsb2NrOjogbWFrZQorCisgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg ICAgIyBUYXJnZXQtSW5zdGFsbAorICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgJChT VEFURURJUikvZm9vLnRhcmdldGluc3RhbGw6CisgICAgCUAkKGNhbGwgdGFyZ2V0aW5mbykKKwor ICAgIAlAJChjYWxsIGluc3RhbGxfaW5pdCwgIGZvbykKKyAgICAJQCQoY2FsbCBpbnN0YWxsX2Zp eHVwLCBmb28sUEFDS0FHRSxmb28pCisgICAgCUAkKGNhbGwgaW5zdGFsbF9maXh1cCwgZm9vLFBS SU9SSVRZLG9wdGlvbmFsKQorICAgIAlAJChjYWxsIGluc3RhbGxfZml4dXAsIGZvbyxWRVJTSU9O LCQoRk9PX1ZFUlNJT04pKQorICAgIAlAJChjYWxsIGluc3RhbGxfZml4dXAsIGZvbyxTRUNUSU9O LGJhc2UpCisgICAgCUAkKGNhbGwgaW5zdGFsbF9maXh1cCwgZm9vLEFVVEhPUiwiTXkgTmFtZSA8 bWVAbXktb3JnLmNvbT4iKQorICAgIAlAJChjYWxsIGluc3RhbGxfZml4dXAsIGZvbyxERVBFTkRT LCkKKyAgICAJQCQoY2FsbCBpbnN0YWxsX2ZpeHVwLCBmb28sREVTQ1JJUFRJT04sbWlzc2luZykK KworICAgIAlAJChjYWxsIGluc3RhbGxfY29weSwgZm9vLCAwLCAwLCAwNzU1LCAkKEZPT19ESVIp L2Zvb2JhciwgL2Rldi9udWxsKQorCisgICAgCUAkKGNhbGwgaW5zdGFsbF9maW5pc2gsIGZvbykK KyAgICAJQCQoY2FsbCB0b3VjaCkKKworVGhlIOKAnGhlYWRlcuKAnSBvZiB0aGlzIHN0YWdlIGRl ZmluZXMgc29tZSBpbmZvcm1hdGlvbiBJUEtHIG5lZWRzLiBUaGUKK2ltcG9ydGFudCBwYXJ0IHRo YXQgd2UgbXVzdCBtb2RpZnkgaXMgdGhlIGNhbGwgdG8gdGhlIGBgaW5zdGFsbF9jb3B5YGAKK21h Y3JvIChyZWZlciB0byBzZWN0aW9uIDpyZWY6YHJlZmVyZW5jZV9tYWNyb3NgIGZvciBtb3JlIGRl dGFpbHMKK2Fib3V0IHRoaXMga2luZCBvZiBtYWNyb3MpLiBUaGlzIGNhbGwgaW5zdHJ1Y3RzIFBU WGRpc3QgdG8gaW5jbHVkZSB0aGUKK2dpdmVuIGZpbGUgKHdpdGggVUlELCBHSUQgYW5kIHBlcm1p c3Npb25zKSBpbnRvIHRoZSBJUEtHLCB3aGljaCBtZWFucyB0bworaW5zdGFsbCB0aGlzIGZpbGUg dG8gdGhlIHRhcmdldOKAmXMgcm9vdCBmaWxlc3lzdGVtLgorCitGcm9tIHRoZSBwcmV2aW91cyAq aW5zdGFsbCogc3RhZ2Ugd2Uga25vdyB0aGlzIHBhY2thZ2UgaW5zdGFsbHMgYW4KK2V4ZWN1dGFi bGUgY2FsbGVkIGBgZm9vYGAgdG8gbG9jYXRpb24gYGAvdXNyL2JpbmBgLiBXZSBjYW4gZG8gdGhl IHNhbWUKK2ZvciBvdXIgdGFyZ2V0IGJ5IGNoYW5naW5nIHRoZSAqaW5zdGFsbFxfY29weSogbGlu ZSB0bzoKKworLi4gY29kZS1ibG9jazo6IG5vbmUKKworICAgIEAkKGNhbGwgaW5zdGFsbF9jb3B5 LCBmb28sIDAsIDAsIDA3NTUsICQoRk9PX0RJUikvZm9vLCAvdXNyL2Jpbi9mb28pCisKK1RvIGNo ZWNrIGl0LCB3ZSBqdXN0IHJ1bjoKKworLi4gY29kZS1ibG9jazo6IHRleHQKKworICAgICQgcHR4 ZGlzdCB0YXJnZXRpbnN0YWxsIGZvbworCisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAgICB0YXJnZXQ6IGZvby50YXJnZXRpbnN0YWxsCisgICAgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKworICAgIGluc3RhbGxfaW5pdDogICBwcmVwYXJpbmcgZm9yIGltYWdlIGNy ZWF0aW9uLi4uCisgICAgaW5zdGFsbF9pbml0OiAgIEBBUkNIQCAtPiBpMzg2IC4uLiBkb25lCisg ICAgaW5zdGFsbF9pbml0OiAgIHByZWluc3Qgbm90IGF2YWlsYWJsZQorICAgIGluc3RhbGxfaW5p dDogICBwb3N0aW5zdCBub3QgYXZhaWxhYmxlCisgICAgaW5zdGFsbF9pbml0OiAgIHByZXJtIG5v dCBhdmFpbGFibGUKKyAgICBpbnN0YWxsX2luaXQ6ICAgcG9zdHJtIG5vdCBhdmFpbGFibGUKKyAg ICBpbnN0YWxsX2ZpeHVwOiAgQFBBQ0tBR0VAIC0+IGZvbyAuLi4gZG9uZS4KKyAgICBpbnN0YWxs X2ZpeHVwOiAgQFBSSU9SSVRZQCAtPiBvcHRpb25hbCAuLi4gZG9uZS4KKyAgICBpbnN0YWxsX2Zp eHVwOiAgQFZFUlNJT05AIC0+IDEuMS4wIC4uLiBkb25lLgorICAgIGluc3RhbGxfZml4dXA6ICBA U0VDVElPTkAgLT4gYmFzZSAuLi4gZG9uZS4KKyAgICBpbnN0YWxsX2ZpeHVwOiAgQEFVVEhPUkAg LT4gIk15IE5hbWUgPG1lXEBteS1vcmcuY29tPiIgLi4uIGRvbmUuCisgICAgaW5zdGFsbF9maXh1 cDogIEBERVNDUklQVElPTkAgLT4gbWlzc2luZyAuLi4gZG9uZS4KKyAgICBpbnN0YWxsX2NvcHk6 CisgICAgICBzcmM9L2hvbWUvamJlL215X25ld19wcmovYnVpbGQtdGFyZ2V0L2Zvby0xLjEuMC9m b28KKyAgICAgIGRzdD0vdXNyL2Jpbi9mb28KKyAgICAgIG93bmVyPTAKKyAgICAgIGdyb3VwPTAK KyAgICAgIHBlcm1pc3Npb25zPTA3NTUKKyAgICB4cGtnX2ZpbmlzaDogICAgY29sbGVjdGluZyBs aWNlbnNlICh1bmtub3duKSAuLi4gZG9uZS4KKyAgICB4cGtnX2ZpbmlzaDogICAgY3JlYXRpbmcg aXBrZyBwYWNrYWdlIC4uLiBkb25lLgorICAgIGZpbmlzaGVkIHRhcmdldCBmb28udGFyZ2V0aW5z dGFsbAorCisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHRhcmdl dDogZm9vLnRhcmdldGluc3RhbGwucG9zdAorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKworICAgIGZpbmlzaGVkIHRhcmdldCBmb28udGFyZ2V0aW5zdGFsbC5wb3N0CisK K0FmdGVyIHRoaXMgY29tbWFuZCwgdGhlIHRhcmdldOKAmXMgcm9vdCBmaWxlc3lzdGVtIGNvbnRh aW5zIGEgZmlsZSBjYWxsZWQKK2BgL3Vzci9iaW4vZm9vYGAgb3duZWQgYnkgcm9vdCwgaXRzIGdy b3VwIGlzIGFsc28gcm9vdCBhbmQgZXZlcnlvbmUgaGFzCitleGVjdXRpb24gcGVybWlzc2lvbnMs IGJ1dCBvbmx5IHRoZSB1c2VyIHJvb3QgaGFzIHdyaXRlIHBlcm1pc3Npb25zLgorCitPbmUgbGFz dCB0YXNrIG9mIHRoaXMgcG9ydCBpcyBzdGlsbCBvcGVuOiBBIHJlYXNvbmFibGUgbG9jYXRpb24g Zm9yCit0aGUgbmV3IG1lbnUgZW50cnkgaW4gUFRYZGlzdOKAmXMgbWVudSBoaWVyYXJjaHkuIFBU WGRpc3QgYXJyYW5nZXMgaXRzCittZW51cyBvbiB0aGUgbWVhbmluZyBvZiBlYWNoIHBhY2thZ2Uu IElzIGl0IGEgbmV0d29yayByZWxhdGVkIHRvb2w/IE9yCithIHNjcmlwdGluZyBsYW5ndWFnZT8g T3IgYSBncmFwaGljYWwgYXBwbGljYXRpb24/CitFYWNoIG9mIHRoZXNlIGdsb2JhbCBtZWFuaW5n cyBoYXMgaXRzIG93biBzdWJtZW51LCB3aGVyZSB3ZSBjYW4gYWRkCitvdXIgbmV3IGVudHJ5IHRv LiBXZSBqdXN0IGhhdmUgdG8gZWRpdCB0aGUgaGVhZCBvZiBvdXIgbmV3IG1lbnUgZmlsZQorYGAu L3J1bGVzL2Zvby5pbmBgIHRvIGFkZCBpdCB0byBhIHNwZWNpZmljIGdsb2JhbCBtZW51LiBJZiBv dXIgbmV3CitwYWNrYWdlIGlzIGEgbmV0d29yayByZWxhdGVkIHRvb2wsIHRoZSBoZWFkIG9mIHRo ZSBtZW51IGZpbGUgc2hvdWxkCitsb29rIGxpa2U6CisKKy4uIGNvZGUtYmxvY2s6OiBrY29uZmln CisKKyAgICAjIyBTRUNUSU9OPW5ldHdvcmtpbmcKKworV2UgY2FuIGdyZXAgdGhyb3VnaCB0aGUg b3RoZXIgbWVudSBmaWxlcyBmcm9tIHRoZSBQVFhkaXN0IG1haW4KK2luc3RhbGxhdGlvbiBgYHJ1 bGVzL2BgIGRpcmVjdG9yeSB0byBnZXQgYW4gaWRlYSB3aGF0IHNlY3Rpb24gbmFtZXMgYXJlCith dmFpbGFibGU6CisKKy4uIGNvZGUtYmxvY2s6OiB0ZXh0CisKKyAgICBydWxlcy8gJCBmaW5kIC4g LW5hbWUgXCouaW4gfCB4YXJncyBncmVwICIjIyBTRUNUSU9OIgorICAgIC4vYWNwaWQuaW46IyMg U0VDVElPTj1zaGVsbF9hbmRfY29uc29sZQorICAgIC4vYWxzYS1saWIuaW46IyMgU0VDVElPTj1z eXN0ZW1fbGlicmFyaWVzCisgICAgLi9hbHNhLXV0aWxzLmluOiMjIFNFQ1RJT049bXVsdGltZWRp YV9zb3VuZAorICAgIC4vYXBhY2hlMi5pbjojIyBTRUNUSU9OPW5ldHdvcmtpbmcKKyAgICAuL2Fw YWNoZTJfbW9kX3B5dGhvbi5pbjojIyBTRUNUSU9OPW5ldHdvcmtpbmcKKyAgICBbLi4uXQorICAg IC4veGtleWJvYXJkLWNvbmZpZy5pbjojIyBTRUNUSU9OPW11bHRpbWVkaWFfeG9yZ19kYXRhCisg ICAgLi94b3JnLWFwcC14ZXYuaW46IyMgU0VDVElPTj1tdWx0aW1lZGlhX3hvcmdfYXBwCisgICAg Li94b3JnLWFwcC14cmFuZHIuaW46IyMgU0VDVElPTj1tdWx0aW1lZGlhX3hvcmdfYXBwCisgICAg Li9ob3N0LWVnZ2RidXMuaW46IyMgU0VDVElPTj1ob3N0dG9vbHNfbm9wcm9tcHQKKyAgICAuL2xp YnNzaDIuaW46IyMgU0VDVElPTj1uZXR3b3JraW5nCisKK1BvcnRpbmcgYSBuZXcgcGFja2FnZSB0 byBQVFhkaXN0IGlzIChhbG1vc3QpIGZpbmlzaGVkIG5vdy4KKworVG8gY2hlY2sgaXQgcmlnaHQg YXdheSwgd2Ugc2ltcGx5IHJ1biB0aGVzZSB0d28gY29tbWFuZHM6CisKKy4uIGNvZGUtYmxvY2s6 OiB0ZXh0CisKKyAgICAkIHB0eGRpc3QgY2xlYW4gZm9vCisgICAgcm0gLXJmIC9ob21lL2piZS9t eV9uZXdfcHJqL3N0YXRlL2Zvby4qCisgICAgcm0gLXJmIC9ob21lL2piZS9teV9uZXdfcHJqL3Bh Y2thZ2VzL2Zvb18qCisgICAgcm0gLXJmIC9ob21lL2piZS9teV9uZXdfcHJqL2J1aWxkLXRhcmdl dC9mb28tMS4xLjAKKyAgICAkIHB0eGRpc3QgdGFyZ2V0aW5zdGFsbCBmb28KKworICAgIFsuLi5d CisKKy4uIGltcG9ydGFudDo6IERpc2NvdmVyIHNvbWVob3cgaGlkZGVuIGRlcGVuZGVuY2llcyB3 aXRoIG9uZSBtb3JlIGxhc3QgY2hlY2shCisKK1VwIHRvIHRoaXMgcG9pbnQgYWxsIHRoZSBkZXZl bG9wbWVudCBvZiB0aGUgbmV3IHBhY2thZ2Ugd2FzIGRvbmUgaW4gYW4gYWxyZWFkeQorYnVpbHQg QlNQLiBEb2luZyBzbyBzb21ldGltZXMgc29tZWhvdyBoaWRkZW4gZGVwZW5kZW5jaWVzIGNhbm5v dCBiZSBzZWVuOgorZXZlcnl0aGluZyBzZWVtcyBmaW5lLCB0aGUgbmV3IHBhY2thZ2UgYnVpbGRz IGFsd2F5cyBzdWNjZXNzZnVsbHkgYW5kIHRoZQorcmVzdWx0cyBhcmUgd29ya2luZyBvbiB0aGUg dGFyZ2V0LgorCitTbyB0byBjaGVjayBmb3IgdGhpcyBraW5kIG9mIGRlcGVuZGVuY2llcyB0aGVy ZSBpcyBzdGlsbCBvbmUgbW9yZSBmaW5hbCBjaGVjawordG8gZG8gKGV2ZW4gaWYgaXRzIGJvcmlu ZyBhbmQgdGFrZXMgdGltZSk6CisKKy4uIGNvZGUtYmxvY2s6OiB0ZXh0CisKKyAgICAkIHB0eGRp c3QgY2xlYW4KKyAgICBbLi4uXQorICAgICQgcHR4ZGlzdCB0YXJnZXRpbnN0YWxsIGZvbworICAg IFsuLi5dCisKK1RoaXMgd2lsbCByZS1zdGFydCB3aXRoIGEgKipjbGVhbioqIEJTUCBhbmQgYnVp bGRzIGV4YWN0bHkgdGhlIG5ldyBwYWNrYWdlIGFuZAoraXRzIChrbm93bikgZGVwZW5kZW5jaWVz LiBJZiB0aGlzIGJ1aWxkcyBzdWNjZXNzZnVsbHkgYXMgd2VsbCB3ZSBhcmUgcmVhbGx5IGRvbmUK K3dpdGggdGhlIG5ldyBwYWNrYWdlLgorCitTb21lIE5vdGVzIGFib3V0IExpY2Vuc2VzCit+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1RoZSBhbHJlYWR5IG1lbnRpb25lZCBydWxlIHZhcmlh YmxlIGBgKl9MSUNFTlNFYGAgKGUuZy4gYGBGT09fTElDRU5TRWBgIGluIG91cgorZXhhbXBsZSkg aXMgdmVyeSBpbXBvcnRhbnQgYW5kIG11c3QgYmUgZmlsbGVkIGJ5IHRoZSBkZXZlbG9wZXIgb2Yg dGhlIHBhY2thZ2UuCitNYW55IGxpY2Vuc2VzIGJyaW5nIGluIG9ibGlnYXRpb25zIHVzaW5nIHRo ZSBjb3JyZXNwb25kaW5nIHBhY2thZ2UgKCphdHRyaWJ1dGlvbioKK2ZvciBleGFtcGxlKS4gVG8g bWFrZSBsaWZlIGVhc2llciBmb3IgZXZlcnlib2R5IHRoZSBsaWNlbnNlIGZvciBhIHBhY2thZ2Ug bXVzdAorYmUgcHJvdmlkZWQuICpTUERYKiBsaWNlbnNlIGlkZW50aWZpZXJzIHVuaWZ5IHRoZSBs aWNlbnNlIG5hbWVzIGFuZCBhcmUgdXNlZAoraW4gUFRYZGlzdCB0byBpZGVudGlmeSBsaWNlbnNl IHR5cGVzIGFuZCBvYmxpZ2F0aW9ucy4KKworSWYgYSBwYWNrYWdlIGNvbWVzIHdpdGggbW9yZSB0 aGFuIG9uZSBsaWNlbnNlLCBhbGwgb2YgdGhlaXIgU1BEWCBpZGVudGlmaWVycworbXVzdCBiZSBs aXN0ZWQgYW5kIGNvbm5lY3RlZCB3aXRoIHRoZSBrZXl3b3JkIGBgQU5EYGAuIElmIHlvdXIgcGFj a2FnZSBjb21lcword2l0aCBHUEwtMi4wIGFuZCBMR1BMLTIuMSBsaWNlbnNlcywgdGhlIGRlZmlu aXRpb24gc2hvdWxkIGxvb2sgbGlrZSB0aGlzOgorCisuLiBjb2RlLWJsb2NrOjogbWFrZQorCisg ICBGT09fTElDRU5TRSA6PSBHUEwtMi4wIEFORCBMR1BMLTIuMQorCitPbmUgc3BlY2lmaWMgb2Js aWdhdGlvbiBjYW5ub3QgYmUgZGV0ZWN0ZWQgZXhhbWluaW5nIHRoZSBTUERYIGxpY2Vuc2UgaWRl bnRpZmllcnMKK2J5IFBUWGRpc3Q6ICp0aGUgbGljZW5zZSBjaG9pY2UqLiBJbiB0aGlzIGNhc2Ug YWxsIGxpY2Vuc2VzIG9mIGNob2ljZSBtdXN0IGJlCitsaXN0ZWQgYW5kIGNvbm5lY3RlZCBieSB0 aGUga2V5d29yZCBgYE9SYGAuCisKK0lmLCBmb3IgZXhhbXBsZSwgeW91ciBvYmxpZ2F0aW9uIGlz IHRvIHNlbGVjdCBvbmUgb2YgdGhlIGxpY2Vuc2VzICpHUEwtMi4wKiAqKm9yKioKKypHUEwtMy4w KiwgdGhlIGBgKl9MSUNFTlNFYGAgdmFyaWFibGUgc2hvdWxkIGxvb2sgbGlrZSB0aGlzOgorCisu LiBjb2RlLWJsb2NrOjogbWFrZQorCisgICBGT09fTElDRU5TRSA6PSBHUEwtMi4wIE9SIEdQTC0z LjAKKworU1BEWCBMaWNlbnNlIElkZW50aWZpZXJzCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4K KworQSBsaXN0IG9mIFNQRFggbGljZW5zZSBpZGVudGlmaWVycyBjYW4gYmUgZm91bmQgaGVyZToK KworICAgaHR0cHM6Ly9zcGR4Lm9yZy9saWNlbnNlcy8KKworSGVscCB0byBEZXRlY3QgdGhlIENv cnJlY3QgTGljZW5zZQorXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitMaWNl bnNlIGlkZW50aWZpY2F0aW9uIGlzbid0IHRyaXZpYWwuIEEgaGVscCBpbiBkb2luZyBzbyBjYW4g YmUgdGhlIGZvbGxvd2luZworcmVwb3NpdG9yeSBhbmQgaXRzIGNvbnRlbnQuIEl0IGNvbnRhaW5z IGEgbGlzdCBvZiBrbm93biBsaWNlbnNlcyBiYXNlZCBvbiB0aGVpcgorU1BEWCBpZGVudGlmaWVy LiBUaGUgY29udGVudCBpcyB3aXRob3V0IGZvcm1hdHRpbmcgdG8gc2ltcGxpZnkgdGV4dCBzZWFy Y2guCisKKyAgIGh0dHBzOi8vZ2l0aHViLmNvbS9zcGR4L2xpY2Vuc2UtbGlzdC1kYXRhL3RyZWUv bWFzdGVyL3RleHQKKworQWR2YW5jZWQgUnVsZSBGaWxlcworfn5+fn5+fn5+fn5+fn5+fn5+fgor CitUaGUgcHJldmlvdXMgZXhhbXBsZSBvbiBob3cgdG8gY3JlYXRlIGEgcnVsZSBmaWxlIHNvbWV0 aW1lcyB3b3JrcyBhcworc2hvd24gYWJvdmUuIEJ1dCBtb3N0IG9mIHRoZSB0aW1lIHNvdXJjZSBh cmNoaXZlcyBhcmUgbm90IHRoYXQgc2ltcGxlLgorSW4gdGhpcyBzZWN0aW9uIHdlIHdhbnQgdG8g Z2l2ZSB0aGUgdXNlciBhIG1vcmUgZGV0YWlsZWQgc2VsZWN0aW9uIGhvdwordGhlIHBhY2thZ2Ug d2lsbCBiZSBidWlsdC4KKworQWRkaW5nIFN0YXRpYyBDb25maWd1cmUgUGFyYW1ldGVycworXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitUaGUgYGBjb25maWd1cmVgYCBzY3Jp cHRzIG9mIHZhcmlvdXMgc291cmNlIGFyY2hpdmVzIHByb3ZpZGUgYWRkaXRpb25hbAorcGFyYW1l dGVycyB0byBlbmFibGUgb3IgZGlzYWJsZSBmZWF0dXJlcywgb3IgdG8gY29uZmlndXJlIHRoZW0g aW4gYQorc3BlY2lmaWMgd2F5LgorCitXZSBhc3N1bWUgdGhlIGBgY29uZmlndXJlYGAgc2NyaXB0 IG9mIG91ciBgYGZvb2BgIGV4YW1wbGUgKHJlZmVyIHRvCitzZWN0aW9uIDpyZWY6YGZvb19leGFt cGxlYCkgc3VwcG9ydHMgdHdvIGFkZGl0aW9uYWwgcGFyYW1ldGVyczoKKworLSAgKiotLWVuYWJs ZS1kZWJ1ZyoqOiBNYWtlIHRoZSBwcm9ncmFtIG1vcmUgbm9pc3kuIEl04oCZcyBkaXNhYmxlZCBi eQorICAgZGVmYXVsdC4KKworLSAgKiotLXdpdGgtYmFyKio6IEFsc28gYnVpbGQgdGhlIHNwZWNp YWwgZXhlY3V0YWJsZSAqKmJhcioqLiBCdWlsZGluZworICAgdGhpcyBleGVjdXRhYmxlIGlzIGFs c28gZGlzYWJsZWQgYnkgZGVmYXVsdC4KKworV2Ugbm93IHdhbnQgdG8gZm9yd2FyZCB0aGVzZSBv cHRpb25zIHRvIHRoZSBgYGNvbmZpZ3VyZWBgIHNjcmlwdCB3aGVuIGl0CitydW5zIGluIHRoZSAq cHJlcGFyZSogc3RhZ2UuIFRvIGRvIHNvLCB3ZSBtdXN0IGFnYWluIG9wZW4gdGhlIHJ1bGUgZmls ZQord2l0aCBvdXIgZmF2b3VyaXRlIGVkaXRvciBhbmQgbmF2aWdhdGUgdG8gdGhlICpwcmVwYXJl KiBzdGFnZSBlbnRyeS4KKworUFRYZGlzdCB1c2VzIHRoZSB2YXJpYWJsZSBgYEZPT19DT05GX09Q VGBgIGFzIHRoZSBsaXN0IG9mIHBhcmFtZXRlcnMgdG8KK2JlIGdpdmVuIHRvIGBgY29uZmlndXJl YGAuCisKK0N1cnJlbnRseSB0aGlzIHZhcmlhYmxlIGlzIGNvbW1lbnRlZCBvdXQgYW5kIGRlZmlu ZWQgdG86CisKKy4uIGNvZGUtYmxvY2s6OiBtYWtlCisKKyAgICAjIEZPT19DT05GX09QVCA6PSAk KENST1NTX0FVVE9DT05GX1VTUikKKworVGhlIHZhcmlhYmxlIGBgQ1JPU1NfQVVUT0NPTkZfVVNS YGAgaXMgcHJlZGVmaW5lZCBieSBQVFhkaXN0IGFuZAorY29udGFpbnMgYWxsIGJhc2ljIHBhcmFt ZXRlcnMgdG8gaW5zdHJ1Y3QgYGBjb25maWd1cmVgYCB0byBwcmVwYXJlIGZvciBhCisqKmNyb3Nz KiogY29tcGlsZSBlbnZpcm9ubWVudC4KKworVG8gdXNlIHRoZSB0d28gYWRkaXRpb25hbCBtZW50 aW9uZWQgYGBjb25maWd1cmVgYCBwYXJhbWV0ZXJzLCB3ZSBjb21tZW50CitpbiB0aGlzIGxpbmUg YW5kIHN1cHBsZW1lbnQgdGhpcyBleHByZXNzaW9uIGFzIGZvbGxvd3M6CisKKy4uIGNvZGUtYmxv Y2s6OiBtYWtlCisKKyAgICBGT09fQ09ORl9PUFQgOj0gXAorICAgICAgICAkKENST1NTX0FVVE9D T05GX1VTUikgXAorICAgICAgICAtLWVuYWJsZS1kZWJ1ZyBcCisgICAgICAgIC0td2l0aC1iYXIK KworLi4gbm90ZTo6IFdlIHJlY29tbWVuZCB0byB1c2UgdGhpcyBmb3JtYXQgd2l0aCBlYWNoIHBh cmFtZXRlciBvbiBhIGxpbmUgb2YKKyBpdHMgb3duLiBUaGlzIGZvcm1hdCBpcyBlYXNpZXIgdG8g cmVhZCBhbmQgYSBkaWZmIHNob3dzIG1vcmUgZXhhY3RseSBhbnkKKyBjaGFuZ2UuCisKK1RvIGRv IGEgZmFzdCBjaGVjayBpZiB0aGlzIGFkZGl0aW9uIHdhcyBzdWNjZXNzZnVsLCB3ZSBydW46CisK Ky4uIGNvZGUtYmxvY2s6OiB0ZXh0CisKKyAgICAkIHB0eGRpc3QgcHJpbnQgRk9PX0NPTkZfT1BU CisgICAgLS1wcmVmaXg9L3VzciAtLXN5c2NvbmZkaXI9L2V0YyAtLWhvc3Q9fHB0eGRpc3RDb21w aWxlck5hbWV8IC0tYnVpbGQ9aTY4Ni1ob3N0LWxpbnV4LWdudSAtLWVuYWJsZS1kZWJ1ZyAtLXdp dGgtYmFyCisKKy4uIG5vdGU6OiBJdCBkZXBlbmRzIG9uIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQg cGxhdGZvcm0gYW5kIGl0cyBhcmNoaXRlY3R1cmUKKyB3aGF0IGNvbnRlbnQgdGhpcyB2YXJpYWJs ZSB3aWxsIGhhdmUuIFRoZSBjb250ZW50IHNob3duIGFib3ZlIGlzIGFuCisgZXhhbXBsZSBmb3Ig YSB0YXJnZXQuCisKK09yIHJlLWJ1aWxkIHRoZSBwYWNrYWdlIHdpdGggdGhlIG5ldyBzZXR0aW5n czoKKworLi4gY29kZS1ibG9jazo6IHRleHQKKworICAgICQgcHR4ZGlzdCBkcm9wIGZvbyBwcmVw YXJlCisgICAgJCBwdHhkaXN0IHRhcmdldGluc3RhbGwgZm9vCisKK0FkZGluZyBEeW5hbWljIENv bmZpZ3VyZSBQYXJhbWV0ZXJzCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgor CitTb21ldGltZXMgaXQgbWFrZXMgc2Vuc2UgdG8gYWRkIHRoaXMga2luZCBvZiBwYXJhbWV0ZXJz IG9uIGRlbWFuZCBvbmx5OworZXNwZWNpYWxseSBhIHBhcmFtZXRlciBsaWtlIGBgLS1lbmFibGUt ZGVidWdgYC4gVG8gbGV0IHRoZSB1c2VyIGRlY2lkZQoraWYgdGhpcyBwYXJhbWV0ZXIgaXMgdG8g YmUgdXNlZCBvciBub3QsIHdlIG11c3QgYWRkIGEgbWVudSBlbnRyeS4gU28sCitsZXTigJlzIGV4 cGFuZCBvdXIgbWVudS4gSGVyZSBpcyBpdHMgY3VycmVudCBjb250ZW50OgorCisuLiBjb2RlLWJs b2NrOjoga2NvbmZpZworCisgICAgIyMgU0VDVElPTj1wcm9qZWN0X3NwZWNpZmljCisKKyAgICBj b25maWcgRk9PCisgICAgICAgICAgICB0cmlzdGF0ZQorICAgICAgICAgICAgcHJvbXB0ICJmb28i CisgICAgICAgICAgICBoZWxwCisgICAgICAgICAgICAgIEZJWE1FCisKK1dl4oCZbGwgYWRkIHR3 byBtZW51IGVudHJpZXMsIG9uZSBmb3IgZWFjaCBvcHRpb25hbCBwYXJhbWV0ZXIgd2Ugd2FudCB0 bworYWRkIG9uIGRlbWFuZCB0byB0aGUgYGBjb25maWd1cmVgYCBwYXJhbWV0ZXJzOgorCisuLiBj b2RlLWJsb2NrOjoga2NvbmZpZworCisgICAgIyMgU0VDVElPTj1wcm9qZWN0X3NwZWNpZmljCisK KyAgICBjb25maWcgRk9PCisgICAgICAgICAgIHRyaXN0YXRlCisgICAgICAgICAgIHByb21wdCAi Zm9vIgorICAgICAgICAgICBoZWxwCisgICAgICAgICAgICAgRklYTUUKKworICAgIGlmIEZPTwor ICAgIGNvbmZpZyBGT09fREVCVUcKKyAgICAgICAgICAgYm9vbAorICAgICAgICAgICBwcm9tcHQg ImFkZCBkZWJ1ZyBub2lzZSIKKworICAgIGNvbmZpZyBGT09fQkFSCisgICAgICAgICAgIGJvb2wK KyAgICAgICAgICAgcHJvbXB0ICJidWlsZCBiYXIiCisKKyAgICBlbmRpZgorCisuLiBpbXBvcnRh bnQ6OiBBbHdheXMgZm9sbG93IHRoZSBydWxlIHRvIGV4dGVuZCB0aGUgYmFzZSBuYW1lIGJ5IGEg c3Vib3B0aW9uCisgIG5hbWUgYXMgdGhlIHRyYWlsaW5nIHBhcnQgb2YgdGhlIHZhcmlhYmxlIG5h bWUuIFRoaXMgZ2l2ZXMgUFRYZGlzdCB0aGUgYWJpbGl0eQorICB0byBkZXRlY3QgYSBjaGFuZ2Ug aW4gdGhlIHBhY2thZ2XigJlzIHNldHRpbmdzICh2aWEgbWVudWNvbmZpZykgdG8gZm9yY2UgaXRz CisgIHJlYnVpbGQgb24gZGVtYW5kLgorCitUbyBtYWtlIHVzYWdlIG9mIHRoZSBuZXcgbWVudSBl bnRyaWVzLCB3ZSBtdXN0IGNoZWNrIHRoZW0gaW4gdGhlIHJ1bGUKK2ZpbGUgYW5kIGFkZCB0aGUg Y29ycmVjdCBwYXJhbWV0ZXJzOgorCisuLiBjb2RlLWJsb2NrOjogbWFrZQorCisgICAgIworICAg ICMgYXV0b2NvbmYKKyAgICAjCisgICAgRk9PX0NPTkZfT1BUIDo9IFwKKyAgICAgICAgJChDUk9T U19BVVRPQ09ORl9VU1IpIFwKKyAgICAgICAgLS0kKGNhbGwgcHR4L2VuZGlzLCBQVFhDT05GX0ZP T19ERUJVRyktZGVidWcgXAorICAgICAgICAtLSQoY2FsbCBwdHgvd3dvLCBQVFhDT05GX0ZPT19C QVIpLWJhcgorCisuLiBpbXBvcnRhbnQ6OiBQbGVhc2Ugbm90ZSB0aGUgbGVhZGluZyBgYFBUWENP TkZfYGAgZm9yIGVhY2ggZGVmaW5lLiBXaGlsZSBLY29uZmlnIGlzCisgIHVzaW5nIGBgRk9PX0JB UmBgLCB0aGUgcnVsZSBmaWxlIG11c3QgdXNlIGBgUFRYQ09ORl9GT09fQkFSYGAgaW5zdGVhZC4K KworLi4gbm90ZTo6IFJlZmVyIDpyZWY6YFJ1bGUgRmlsZSBNYWNybyBSZWZlcmVuY2UgPHBhcmFt X21hY3Jvcz5gIGZvciBmdXJ0aGVyCisgICBkZXRhaWxzIGFib3V0IHRoZXNlIHNwZWNpYWwga2lu ZCBvZiBvcHRpb24gbWFjcm9zIChlLmcuIGBgcHR4Ly4uLmBgKS4KKworSXQgaXMgYSBnb29kIHBy YWN0aWNlIHRvIGFsd2F5cyBhZGQgYm90aCBzZXR0aW5ncywgZS5nLiBgYC0tZGlzYWJsZS1kZWJ1 Z2BgCitldmVuIGlmIHRoaXMgaXMgdGhlIGRlZmF1bHQgY2FzZS4gU29tZXRpbWVzIGBgY29uZmln dXJlYGAgdHJpZXMgdG8gZ3Vlc3MKK3NvbWV0aGluZyBhbmQgdGhlIGJpbmFyeSByZXN1bHQgbWln aHQgZGlmZmVyIGRlcGVuZGluZyBvbiB0aGUgYnVpbGQKK29yZGVyLiBGb3IgZXhhbXBsZSBzb21l IGtpbmQgb2YgcGFja2FnZSB3b3VsZCBhbHNvIGJ1aWxkIHNvbWUgWCByZWxhdGVkCit0b29scywg aWYgWCBsaWJyYXJpZXMgYXJlIGZvdW5kLiBJbiB0aGlzIGNhc2UgaXQgZGVwZW5kcyBvbiB0aGUg YnVpbGQKK29yZGVyLCBpZiB0aGUgWCByZWxhdGVkIHRvb2xzIGFyZSBidWlsdCBvciBub3QuIEFs bCB0aGUgYXV0b2NoZWNrCitmZWF0dXJlcyBhcmUgcHJvYmxlbWF0aWMgaGVyZS4gU28sIGlmIHdl IGRvIG5vdCB3YW50IGBgY29uZmlndXJlYGAgdG8KK2d1ZXNzIGl0cyBzZXR0aW5ncyB3ZSAqKm11 c3QgZGlzYWJsZSBldmVyeXRoaW5nIHdlIGRvIG5vdCB3YW50KiouCisKK1RvIHN1cHBvcnQgdGhp cyBwcm9jZXNzLCBQVFhkaXN0IHN1cHBsaWVzIGEgaGVscGVyIHNjcmlwdCwgbG9jYXRlZCBhdAor YGAvcGF0aC90by9wdHhkaXN0L3NjcmlwdHMvY29uZmlndXJlLWhlbHBlci5weWBgIHRoYXQgY29t cGFyZXMgdGhlIGNvbmZpZ3VyZQorb3V0cHV0IHdpdGggdGhlIHNldHRpbmdzIGZyb20gYGBGT09f Q09ORl9PUFRgYDoKKworLi4gY29kZS1ibG9jazo6IHRleHQKKworICAgICQgL29wdC9wdHhkaXN0 LTIwMTcuMDYuMC9zY3JpcHRzL2NvbmZpZ3VyZS1oZWxwZXIucHkgLXAgbGlic2lncm9rCisgICAg LS0tIHJ1bGVzL2xpYnNpZ3Jvay5tYWtlCisgICAgKysrIGxpYnNpZ3Jvay0wLjUuMAorICAgIEBA IC00LDMgKzQsNzQgQEAKKyAgICAgCS0tbGliZGlyPS91c3IvbGliCisgICAgIAktLWJ1aWxkPXg4 Nl82NC1ob3N0LWxpbnV4LWdudQorICAgICAJLS1ob3N0PWFybS12N2EtbGludXgtZ251ZWFiaWhm CisgICAgKwktLWVuYWJsZS13YXJuaW5ncz1taW58bWF4fGZhdGFsfG5vCisgICAgKwktLWRpc2Fi bGUtbGFyZ2VmaWxlCisgICAgKwktLWVuYWJsZS1hbGwtZHJpdmVycworICAgICsJLS1lbmFibGUt YWdpbGVudC1kbW0KKyAgICBbLi4uXQorICAgICsJLS1lbmFibGUtcnVieQorICAgICsJLS1lbmFi bGUtamF2YQorICAgICsJLS13aXRob3V0LWxpYnNlcmlhbHBvcnQKKyAgICArCS0td2l0aG91dC1s aWJmdGRpCisgICAgKwktLXdpdGhvdXQtbGlidXNiCisgICAgKwktLXdpdGhvdXQtbGlicmV2aXNh CisgICAgKwktLXdpdGhvdXQtbGliZ3BpYgorICAgICsJLS13aXRob3V0LWxpYmllZWUxMjg0Cisg ICAgKwktLXdpdGgtam5pLWluY2x1ZGUtcGF0aD1ESVItTElTVAorCitJbiB0aGlzIGV4YW1wbGUs IG1hbnkgY29uZmlndXJlIG9wdGlvbnMgZnJvbSBsaWJzaWdyb2sgKG1hcmtlZCB3aXRoIGBgK2Bg KQorYXJlIG5vdCB5ZXQgcHJlc2VudCBpbiBgYExJQlNJR1JPS19DT05GX09QVGBgIGFuZCBtdXN0 IGJlIGFkZGVkLCBwb3NzaWJseSBhbHNvCitieSBwcm92aWRpbmcgbW9yZSBkeW5hbWljIG9wdGlv bnMgaW4gdGhlIHBhY2thZ2UgZGVmaW5pdGlvbi4KKworSWYgc29tZSBwYXJ0cyBvZiBhIHBhY2th Z2UgYXJlIGJ1aWx0IG9uIGRlbWFuZCBvbmx5LCB0aGV5IG11c3QgYWxzbyBiZQoraW5zdGFsbGVk IG9uIGRlbWFuZCBvbmx5LiBCZXNpZGVzIHRoZSAqcHJlcGFyZSogc3RhZ2UsIHdlIGFsc28gbXVz dAorbW9kaWZ5IG91ciAqdGFyZ2V0aW5zdGFsbCogc3RhZ2U6CisKKy4uIGNvZGUtYmxvY2s6OiBt YWtlCisKKyAgICAJQCQoY2FsbCBpbnN0YWxsX2NvcHksIGZvbywgMCwgMCwgMDc1NSwgJChGT09f RElSKS9mb28sIC91c3IvYmluL2ZvbykKKworICAgIGlmZGVmIFBUWENPTkZfRk9PX0JBUgorICAg IAlAJChjYWxsIGluc3RhbGxfY29weSwgZm9vLCAwLCAwLCAwNzU1LCAkKEZPT19ESVIpL2Jhciwg L3Vzci9iaW4vYmFyKQorICAgIGVuZGlmCisKKyAgICAJQCQoY2FsbCBpbnN0YWxsX2ZpbmlzaCwg Zm9vKQorICAgIAlAJChjYWxsIHRvdWNoKQorCitOb3cgd2UgY2FuIHBsYXkgd2l0aCBvdXIgbmV3 IG1lbnUgZW50cmllcyBhbmQgY2hlY2sgaWYgdGhleSBhcmUgd29ya2luZworYXMgZXhwZWN0ZWQ6 CisKKy4uIGNvZGUtYmxvY2s6OiB0ZXh0CisKKyAgICAkIHB0eGRpc3QgbWVudWNvbmZpZworICAg ICQgcHR4ZGlzdCB0YXJnZXRpbnN0YWxsIGZvbworCitXaGVuZXZlciB3ZSBjaGFuZ2UgYSAqRk9P KiByZWxhdGVkIG1lbnUgZW50cnksIFBUWGRpc3Qgc2hvdWxkIGRldGVjdCBpdAorYW5kIHJlLWJ1 aWxkIHRoZSBwYWNrYWdlIHdoZW4gYSBuZXcgYnVpbGQgaXMgc3RhcnRlZC4KKworLi4gX2V4dGVy bmFsX2RlcGVuZGVuY2llczoKKworTWFuYWdpbmcgRXh0ZXJuYWwgQ29tcGlsZSBUaW1lIERlcGVu ZGVuY2llcworXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitX aGlsZSBydW5uaW5nIHRoZSBwcmVwYXJlIHN0YWdlLCBpdCBjb3VsZCBoYXBwZW4gdGhhdCBpdCBm YWlscyBkdWUgdG8gYQorbWlzc2luZyBleHRlcm5hbCBkZXBlbmRlbmN5LgorCitGb3IgZXhhbXBs ZToKKworLi4gY29kZS1ibG9jazo6IHRleHQKKworICAgIGNoZWNraW5nIHdoZXRoZXIgemxpYiBl eGlzdHMuLi4uZmFpbGVkCisKK0luIHRoaXMgZXhhbXBsZSwgb3VyIG5ldyBwYWNrYWdlIGRlcGVu ZHMgb24gdGhlIGNvbXByZXNzaW9uIGxpYnJhcnkKKyp6bGliKi4gUFRYZGlzdCBjb21lcyB3aXRo IGEgdGFyZ2V0ICp6bGliKi4gQWxsIHdlIG5lZWQgdG8gZG8gaW4gdGhpcworY2FzZSBpcyB0byBk ZWNsYXJlIHRoYXQgb3VyIG5ldyBwYWNrYWdlICpmb28qIGRlcGVuZHMgb24gKnpsaWIqLiBUaGlz CitraW5kIG9mIGRlcGVuZGVuY3kgaXMgbWFuYWdlZCBpbiB0aGUgbWVudSBmaWxlIG9mIG91ciBu ZXcgcGFja2FnZSBieQorc2ltcGx5IGFkZGluZyB0aGUgYGBzZWxlY3QgWkxJQmBgIGxpbmUuIEFm dGVyIHRoaXMgYWRkaXRpb24gb3VyIG1lbnUKK2ZpbGUgbG9va3MgbGlrZToKKworLi4gY29kZS1i bG9jazo6IGtjb25maWcKKworICAgICMjIFNFQ1RJT049cHJvamVjdF9zcGVjaWZpYworCisgICAg Y29uZmlnIEZPTworICAgICAgICAgICB0cmlzdGF0ZQorICAgICAgICAgICBzZWxlY3QgWkxJQgor ICAgICAgICAgICBwcm9tcHQgImZvbyIKKyAgICAgICAgICAgaGVscAorICAgICAgICAgICAgIEZJ WE1FCisKKyAgICBpZiBGT08KKyAgICBjb25maWcgRk9PX0RFQlVHCisgICAgICAgICAgIGJvb2wK KyAgICAgICAgICAgcHJvbXB0ICJhZGQgZGVidWcgbm9pc2UiCisKKyAgICBjb25maWcgRk9PX0JB UgorICAgICAgICAgICBib29sCisgICAgICAgICAgIHByb21wdCAiYnVpbGQgYmFyIgorCisgICAg ZW5kaWYKKworUFRYZGlzdCBub3cgYnVpbGRzIHRoZSAqemxpYiogZmlyc3QgYW5kIG91ciBuZXcg cGFja2FnZSB0aGVyZWFmdGVyLgorCitSZWZlciA6cmVmOmBleHRlcm5hbF9kZXBlbmRlbmNpZXNf dmFyaWFudHNgIGZvciBtb3JlIHNwZWNpZmljIGRlcGVuZGVuY3kKK2Rlc2NyaXB0aW9uLgorCitN YW5hZ2luZyBFeHRlcm5hbCBDb21waWxlIFRpbWUgRGVwZW5kZW5jaWVzIG9uIERlbWFuZAorXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworSXQg aXMgZ29vZCBwcmFjdGljZSB0byBhZGQgb25seSB0aG9zZSBkZXBlbmRlbmNpZXMgdGhhdCBhcmUg cmVhbGx5CityZXF1aXJlZCBmb3IgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBvZiB0aGUgcGFj a2FnZS4gSWYgdGhlIHBhY2thZ2UKK3Byb3ZpZGVzIHRoZSBmZWF0dXJlcyAqZm9vKiBhbmQgKmJh ciogYW5kIGl0cyBgYGNvbmZpZ3VyZWBgIHByb3ZpZGVzCitzd2l0Y2hlcyB0byBlbmFibGUvZGlz YWJsZSB0aGVtIGluZGVwZW5kZW50bHksIHdlIGNhbiBhbHNvIGFkZAorZGVwZW5kZW5jaWVzIG9u IGRlbWFuZC4gTGV04oCZcyBhc3N1bWUgZmVhdHVyZSAqZm9vKiBuZWVkcyB0aGUgY29tcHJlc3Np b24KK2xpYnJhcnkgKmxpYnoqIGFuZCAqYmFyKiBuZWVkcyB0aGUgWE1MMiBsaWJyYXJ5ICpsaWJ4 bWwyKi4gVGhlc2UKK2xpYnJhcmllcyBhcmUgb25seSByZXF1aXJlZCBhdCBydW4tdGltZSBpZiB0 aGUgY29ycmVzcG9uZGluZyBmZWF0dXJlIGlzCitlbmFibGVkLiBUbyBhZGQgdGhlc2UgZGVwZW5k ZW5jaWVzIG9uIGRlbWFuZCwgdGhlIG1lbnUgZmlsZSBsb29rcyBsaWtlOgorCisuLiBjb2RlLWJs b2NrOjoga2NvbmZpZworCisgICAgIyMgU0VDVElPTj1wcm9qZWN0X3NwZWNpZmljCisKKyAgICBj b25maWcgRk9PCisgICAgICAgICAgIHRyaXN0YXRlCisgICAgICAgICAgIHNlbGVjdCBaTElCIGlm IEZPT19GT08KKyAgICAgICAgICAgc2VsZWN0IExJQlhNTDIgaWYgRk9PX0JBUgorICAgICAgICAg ICBwcm9tcHQgImZvbyIKKyAgICAgICAgICAgaGVscAorICAgICAgICAgICAgIEZJWE1FCisKKyAg ICBpZiBGT08KKyAgICBjb25maWcgRk9PX0RFQlVHCisgICAgICAgICAgIGJvb2wKKyAgICAgICAg ICAgcHJvbXB0ICJhZGQgZGVidWcgbm9pc2UiCisKKyAgICBjb25maWcgRk9PX0ZPTworICAgICAg ICAgICBib29sCisgICAgICAgICAgIHByb21wdCAiYnVpbGQgZm9vIgorCisgICAgY29uZmlnIEZP T19CQVIKKyAgICAgICAgICAgYm9vbAorICAgICAgICAgICBwcm9tcHQgImJ1aWxkIGJhciIKKwor ICAgIGVuZGlmCisKKy4uIGltcG9ydGFudDo6IERvIG5vdCBhZGQgdGhlc2UgYGBzZWxlY3RgYCBz dGF0ZW1lbnRzIHRvIHRoZSBjb3JyZXNwb25kaW5nIG1lbnUgZW50cnkuCisgIFRoZXkgbXVzdCBi ZWxvbmcgdG8gdGhlIG1haW4gbWVudSBlbnRyeSBvZiB0aGUgcGFja2FnZSB0byBlbnN1cmUgdGhh dAorICB0aGUgY2FsY3VsYXRpb24gb2YgdGhlIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRoZSBwYWNr YWdlcyBpcyBkb25lIGluIGEKKyAgY29ycmVjdCBtYW5uZXIuCisKK01hbmFnaW5nIEV4dGVybmFs IFJ1bnRpbWUgRGVwZW5kZW5jaWVzCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXgorCitTb21lIHBhY2thZ2VzIGFyZSBidWlsZGluZyBhbGwgb2YgdGhlaXIgY29tcG9uZW50 cyBhbmQgYWxzbyBpbnN0YWxsaW5nCit0aGVtIGludG8gdGhlIHRhcmdldOKAmXMgc3lzcm9vdC4g QnV0IG9ubHkgdGhlaXIgKnRhcmdldGluc3RhbGwqIHN0YWdlCitkZWNpZGVzIHdoaWNoIHBhcnRz IGFyZSBjb3BpZWQgdG8gdGhlIHJvb3QgZmlsZXN5c3RlbS4gU28sIGNvbXBpbGluZyBhbmQKK2xp bmtpbmcgb2Ygb3VyIHBhY2thZ2Ugd2lsbCB3b3JrLCBiZWNhdXNlIGV2ZXJ5dGhpbmcgcmVxdWly ZWQgaXMgZm91bmQKK2luIHRoZSB0YXJnZXTigJlzIHN5c3Jvb3QuCisKK0luIG91ciBleGFtcGxl IHRoZXJlIGlzIGEgaGlkZGVuIGRlcGVuZGVuY3kgdG8gdGhlIG1hdGggbGlicmFyeQorYGBsaWJt YGAuIE91ciBuZXcgcGFja2FnZSB3YXMgYnVpbHQgc3VjY2Vzc2Z1bGx5LCBiZWNhdXNlIHRoZSBs aW5rZXIgd2FzCithYmxlIHRvIGxpbmsgb3VyIGJpbmFyaWVzIGFnYWluc3QgdGhlIGBgbGlibWBg IGZyb20gdGhlIHRvb2xjaGFpbi4gQnV0CitpbiB0aGlzIGNhc2UgdGhlIGBgbGlibWBgIG11c3Qg YWxzbyBiZSBhdmFpbGFibGUgaW4gdGhlIHRhcmdldOKAmXMgcm9vdAorZmlsZXN5c3RlbSB0byBm dWxmaWwgdGhlIHJ1bi10aW1lIGRlcGVuZGVuY3k6IFdlIGhhdmUgdG8gZm9yY2UgUFRYZGlzdCB0 bworaW5zdGFsbCBgYGxpYm1gYC4gYGBsaWJtYGAgaXMgcGFydCBvZiB0aGUgKmdsaWJjKiBwYWNr YWdlLCBidXQgaXMgbm90CitpbnN0YWxsZWQgYnkgZGVmYXVsdCAodG8ga2VlcCB0aGUgcm9vdCBm aWxlc3lzdGVtIHNtYWxsKS4gU28sIGl0ICoqZG9lcworbm90KiogaGVscCB0byBzZWxlY3QgdGhl IGBgR0xJQkNgYCBzeW1ib2wsIHRvIGdldCBhIGBgbGlibWBgIGF0IHJ1bi10aW1lLgorCitUaGUg Y29ycmVjdCBzb2x1dGlvbiBoZXJlIGlzIHRvIGFkZCBhIGBgc2VsZWN0IExJQkNfTWBgIHRvIG91 ciBtZW51CitmaWxlLiBXaXRoIGFsbCB0aGUgYWRkaXRpb25zIGFib3ZlIGl0IG5vdyBsb29rcyBs aWtlOgorCisuLiBjb2RlLWJsb2NrOjoga2NvbmZpZworCisgICAgIyMgU0VDVElPTj1wcm9qZWN0 X3NwZWNpZmljCisKKyAgICBjb25maWcgRk9PCisgICAgICAgICAgIHRyaXN0YXRlCisgICAgICAg ICAgIHNlbGVjdCBaTElCIGlmIEZPT19GT08KKyAgICAgICAgICAgc2VsZWN0IExJQlhNTDIgaWYg Rk9PX0JBUgorICAgICAgICAgICBzZWxlY3QgTElCQ19NCisgICAgICAgICAgIHByb21wdCAiZm9v IgorICAgICAgICAgICBoZWxwCisgICAgICAgICAgICAgRklYTUUKKworICAgIGlmIEZPTworICAg IGNvbmZpZyBGT09fREVCVUcKKyAgICAgICAgICAgYm9vbAorICAgICAgICAgICBwcm9tcHQgImFk ZCBkZWJ1ZyBub2lzZSIKKworICAgIGNvbmZpZyBGT09fRk9PCisgICAgICAgICAgIGJvb2wKKyAg ICAgICAgICAgcHJvbXB0ICJidWlsZCBmb28iCisKKyAgICBjb25maWcgRk9PX0JBUgorICAgICAg ICAgICBib29sCisgICAgICAgICAgIHByb21wdCAiYnVpbGQgYmFyIgorCisgICAgZW5kaWYKKwor Li4gbm90ZTo6IFRoZXJlIGFyZSBvdGhlciBwYWNrYWdlcyBhcm91bmQsIHRoYXQgZG8gbm90IGlu c3RhbGwgZXZlcnl0aGluZyBieQorICBkZWZhdWx0LiBJZiBvdXIgbmV3IHBhY2thZ2UgbmVlZHMg c29tZXRoaW5nIHNwZWNpYWwsIHdlIG11c3QgdGFrZSBhIGxvb2sKKyAgaW50byB0aGUgbWVudSBv ZiB0aGUgb3RoZXIgcGFja2FnZSBob3cgdG8gZm9yY2UgdGhlIHJlcXVpcmVkIGNvbXBvbmVudHMK KyAgdG8gYmUgaW5zdGFsbGVkIGFuZCBhZGQgdGhlIGNvcnJlc3BvbmRpbmcgYGBzZWxlY3RzYGAg dG8gb3VyIG93biBtZW51CisgIGZpbGUuIEluIHRoaXMgY2FzZSBpdCBkb2VzIG5vdCBoZWxwIHRv IGVuYWJsZSB0aGUgcmVxdWlyZWQgcGFydHMgaW4gb3VyCisgIHByb2plY3QgY29uZmlndXJhdGlv biwgYmVjYXVzZSB0aGlzIGhhcyBubyBlZmZlY3Qgb24gdGhlIGJ1aWxkIG9yZGVyIQorCitNYW5h Z2luZyBQbGFpbiBNYWtlZmlsZSBQYWNrYWdlcworXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl4KKworTWFueSBwYWNrYWdlcyBhcmUgc3RpbGwgY29taW5nIHdpdGggYSBwbGFpbiBgYE1h a2VmaWxlYGAuIFRoZSB1c2VyIGhhcwordG8gYWRhcHQgaXQgdG8gbWFrZSBpdCB3b3JrIGluIGEg Y3Jvc3MgY29tcGlsZSBlbnZpcm9ubWVudCBhcyB3ZWxsLgorUFRYZGlzdCBjYW4gYWxzbyBoYW5k bGUgdGhpcyBraW5kIG9mIHBhY2thZ2VzLiBXZSBvbmx5IGhhdmUgdG8gc3BlY2lmeQorYSBzcGVj aWFsICpwcmVwYXJlKiBhbmQgKmNvbXBpbGUqIHN0YWdlLgorCitTdWNoIHBhY2thZ2VzIG9mdGVu IGhhdmUgbm8gc3BlY2lhbCBuZWVkIGZvciBhbnkga2luZCBvZiBwcmVwYXJhdGlvbi4gSW4KK3Ro aXMgd2UgbXVzdCBpbnN0cnVjdCBQVFhkaXN0IHRvIGRvIG5vdGhpbmcgaW4gdGhlICpwcmVwYXJl KiBzdGFnZToKKworLi4gY29kZS1ibG9jazo6IG1ha2UKKworICAgIEZPT19DT05GX1RPT0wgOj0g Tk8KKworVG8gY29tcGlsZSB0aGUgcGFja2FnZSwgd2UgY2FuIHVzZSBgYG1ha2VgYFwg4oCZcyBm ZWF0dXJlIHRvIG92ZXJ3cml0ZQordmFyaWFibGVzIHVzZWQgaW4gdGhlIGBgTWFrZWZpbGVgYC4g V2l0aCB0aGlzIGZlYXR1cmUgd2UgY2FuIHN0aWxsIHVzZQordGhlIG9yaWdpbmFsIGBgTWFrZWZp bGVgYCBidXQgd2l0aCBvdXIgb3duIChjcm9zcyBjb21waWxlKSBzZXR0aW5ncy4KKworTW9zdCBv ZiB0aGUgdGltZSB0aGUgZ2VuZXJpYyBjb21waWxlIHJ1bGUgY2FuIGJlIHVzZWQsIG9ubHkgYSBm ZXcKK3NldHRpbmdzIGFyZSByZXF1aXJlZC4gRm9yIGEgd2VsbCBkZWZpbmVkIGBgTWFrZWZpbGVg YCBpdCBpcyBzdWZmaWNpZW50IHRvCitzZXQgdXAgdGhlIGNvcnJlY3QgY3Jvc3MgY29tcGlsZSBl bnZpcm9ubWVudCBmb3IgdGhlICpjb21waWxlKiBzdGFnZToKKworLi4gY29kZS1ibG9jazo6IG1h a2UKKworICAgIEZPT19NQUtFX0VOViA6PSAkKENST1NTX0VOVikKKworYGBtYWtlYGAgd2lsbCBi ZSBjYWxsZWQgaW4gdGhpcyBjYXNlIHdpdGg6CisKK2BgJChGT09fTUFLRV9FTlYpICQoTUFLRSkg LUMgJChGT09fRElSKSAkKEZPT19NQUtFX09QVClgYAorCitTbywgaW4gdGhlIHJ1bGUgZmlsZSBv bmx5IHRoZSB0d28gdmFyaWFibGVzIGBgRk9PX01BS0VfRU5WYGAgYW5kCitgYEZPT19NQUtFX09Q VGBgIG11c3QgYmUgc2V0LCB0byBmb3J3YXJkIHRoZSByZXF1aXJlZCBzZXR0aW5ncyB0byB0aGUK K3BhY2thZ2XigJlzIGJ1aWxkc3lzdGVtLiBJZiB0aGUgcGFja2FnZSBjYW5ub3QgYmUgYnVpbHQg aW4gcGFyYWxsZWwsIHdlCitjYW4gYWxzbyBhZGQgdGhlIGBgRk9PX01BS0VfUEFSwqA6PcKgTk9g YC4gYGBZRVNgYCBpcyB0aGUgZGVmYXVsdC4KKworTWFuYWdpbmcgQ01ha2UvUU1ha2UvTWVzb24g UGFja2FnZXMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK0J1aWxkaW5n IHBhY2thZ2VzIHRoYXQgdXNlIGBgY21ha2VgYCwgYGBxbWFrZWBgIG9yIGBgbWVzb25gYCBpcyBt dWNoIGxpa2UKK2J1aWxkaW5nIHBhY2thZ2VzIHdpdGggYW4gYXV0b3Rvb2xzIGJhc2VkIGJ1aWxk c3lzdGVtLiBXZSBuZWVkIHRvIHNwZWNpZnkKK3RoZSBjb25maWd1cmF0aW9uIHRvb2w6CisKKy4u IGNvZGUtYmxvY2s6OiBtYWtlCisKKyAgICBGT09fQ09ORl9UT09MIDo9IGNtYWtlCisKK29yCisK Ky4uIGNvZGUtYmxvY2s6OiBtYWtlCisKKyAgICBGT09fQ09ORl9UT09MIDo9IHFtYWtlCisKK29y IHJlc3BlY3RpdmVseQorCisuLiBjb2RlLWJsb2NrOjogbWFrZQorCisgICAgRk9PX0NPTkZfVE9P TCA6PSBtZXNvbgorCitBbmQgcHJvdmlkZSB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uIG9wdGlv bnMuIFRoZSBzeW50YXggaXMgZGlmZmVyZW50IHNvCitQVFhkaXN0IHByb3ZpZGVzIGFkZGl0aW9u YWwgbWFjcm9zIHRvIHNpbXBsaWZ5IGNvbmZpZ3VyYWJsZSBmZWF0dXJlcy4KK0ZvciBgYGNtYWtl YGAgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0eXBpY2FsbHkgbG9vayBsaWtlIHRoaXM6CisK Ky4uIGNvZGUtYmxvY2s6OiBtYWtlCisKKyAgICBGT09fQ09ORl9PUFQgOj0gXAorICAgIAkkKENS T1NTX0NNQUtFX1VTUikgXAorICAgIAktREJVSUxEX1RFU1RTOkJPT0w9T0ZGIFwKKyAgICAJLURF TkFCTEVfQkFSOkJPT0w9JChjYWxsIHB0eC9vbm9mZiwgUFRYQ09ORl9GT09fQkFSKQorCitGb3Ig YGBxbWFrZWBgIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdHlwaWNhbGx5IGxvb2sgbGlrZSB0 aGlzOgorCisuLiBjb2RlLWJsb2NrOjogbWFrZQorCisgICAgRk9PX0NPTkZfT1BUIDo9IFwKKyAg ICAJJChDUk9TU19RTUFLRV9PUFQpIFwKKyAgICAJUFJFRklYPS91c3IKKworQW5kIGZvciBgYG1l c29uYGAgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0eXBpY2FsbHkgbG9vayBsaWtlIHRoaXM6 CisKKy4uIGNvZGUtYmxvY2s6OiBtYWtlCisKKyAgICBGT09fQ09ORl9PUFQgOj0gXAorICAgIAkk KENST1NTX01FU09OX1VTUikgXAorICAgIAktRGJhcj0kKGNhbGwgcHR4L3RydWVmYWxzZSxQVFhD T05GX0ZPT19CQVIpCisKK1BsZWFzZSBub3RlIHRoYXQgY3VycmVudGx5IG9ubHkgaG9zdCBhbmQg dGFyZ2V0IGBgY21ha2VgYFwvYGBtZXNvbmBgIHBhY2thZ2VzCithbmQgb25seSB0YXJnZXQgYGBx bWFrZWBgIHBhY2thZ2VzIGFyZSBzdXBwb3J0ZWQuCisKK01hbmFnaW5nIFB5dGhvbiBQYWNrYWdl cworXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK0FzIHdpdGggYW55IG90aGVyIHBhY2thZ2Us IHRoZSBjb3JyZWN0IGNvbmZpZ3VyYXRpb24gdG9vbCBtdXN0IGJlIHNlbGVjdGVkCitmb3IgUHl0 aG9uIHBhY2thZ2VzOgorCisuLiBjb2RlLWJsb2NrOjogbWFrZQorCisgICAgRk9PX0NPTkZfVE9P TCA6PSBweXRob24KKworLi4gbm90ZTo6IEZvciBQeXRob24zIHBhY2thZ2VzIHRoZSB2YWx1ZSBt dXN0IGJlIGBgcHl0aG9uM2BgLgorCitObyBNYWtlZmlsZXMgYXJlIHVzZWQgd2hlbiBidWlsZGlu ZyBQeXRob24gcGFja2FnZXMgc28gdGhlIHVzdWFsIGBgbWFrZWBgCithbmQgYGBtYWtlIGluc3Rh bGxgYCBmb3IgdGhlICpjb21waWxlKiBhbmQgKmluc3RhbGwqIHN0YWdlcyBjYW5ub3QgYmUgdXNl ZC4KK1BUWGRpc3Qgd2lsbCBjYWxsIGBgcHl0aG9uIHNldHVwLnB5IGJ1aWxkYGAgYW5kIGBgcHl0 aG9uIHNldHVwLnB5IGluc3RhbGxgYAoraW5zdGVhZC4KKworLi4gbm90ZTo6ICpGT08qIGlzIHN0 aWxsIHRoZSBuYW1lIG9mIG91ciBleGFtcGxlIHBhY2thZ2UuIEl0IG11c3QgYmUKKyAgcmVwbGFj ZWQgYnkgdGhlIHJlYWwgcGFja2FnZSBuYW1lLgorCisKKy4uIF9wYXRjaGluZ19wYWNrYWdlczoK KworUGF0Y2hpbmcgUGFja2FnZXMKK35+fn5+fn5+fn5+fn5+fn5+CisKK1RoZXJlIGNhbiBiZSB2 YXJpb3VzIHJlYXNvbnMgd2h5IGEgcGFja2FnZSBtdXN0IGJlIHBhdGNoZWQ6CisKKy0gIFBhY2th Z2UgaXMgYnJva2VuIGZvciBjcm9zcyBjb21waWxlIGVudmlyb25tZW50cworCistICBQYWNrYWdl IGlzIGJyb2tlbiB3aXRoaW4gYSBzcGVjaWZpYyBmZWF0dXJlCisKKy0gIFBhY2thZ2UgaXMgdnVs bmVyYWJsZSBhbmQgbmVlZHMgc29tZSBmaXhlcworCistICBvciBhbnl0aGluZyBlbHNlICh0aGlz IGNhc2UgaXMgdGhlIG1vc3QgY29tbW9uIG9uZSkKKworSWRlYWxseSwgdGhvc2UgcHJvYmxlbXMg c2hvdWxkIGJlIGFkZHJlc3NlZCBpbiB0aGUgb3JpZ2luYWwgcHJvamVjdCwKK3NvIGFueSBwYXRj aGVzIHlvdSBhZGQgdG8geW91ciBCU1Agb3IgdG8gUFRYZGlzdCBzaG91bGQgYWxzbyBiZSBzdWJt aXR0ZWQgdXBzdHJlYW0uCitUaGUgdXBzdHJlYW0gcHJvamVjdCBjYW4gb2Z0ZW4gcHJvdmlkZSBi ZXR0ZXIgZmVlZGJhY2ssIHRoZXkgY2FuIGludGVncmF0ZSB5b3VyCitwYXRjaCBpbnRvIGEgbmV3 IHJlbGVhc2UsIGFuZCBhbHNvIG1haW50YWluIHlvdXIgY2hhbmdlcyBhcyBwYXJ0IG9mIHRoZSBw cm9qZWN0LgorVGhpcyB3YXkgd2UgbWFrZSBzdXJlIHRoYXQgYWxsIGFkdmFudGFnZXMgb2YgdGhl IG9wZW4gc291cmNlIGlkZWEgd29yayBmb3IgdXM7CithbmQgeW91ciBwYXRjaCBjYW4gYmUgcmVt b3ZlZCBhZ2FpbiBsYXRlciB3aGVuIGEgbmV3IHJlbGVhc2Ugb2YgdGhlIHByb2plY3QgaXMKK2lu dGVncmF0ZWQgaW50byB5b3VyIEJTUCBvciBpbnRvIFBUWGRpc3QuCisKK1BUWGRpc3QgaGFuZGxl cyBwYXRjaGluZyBhdXRvbWF0aWNhbGx5LgorQWZ0ZXIgZXh0cmFjdGluZyB0aGUgYXJjaGl2ZSBv ZiBhIHBhY2thZ2UsIFBUWGRpc3QgY2hlY2tzIGZvciB0aGUgZXhpc3RlbmNlIG9mCithIHBhdGNo IGRpcmVjdG9yeSBuYW1lZCBsaWtlIGl0cyBgYDxQS0c+X1BBVENIRVNgYCB2YXJpYWJsZSwgb3Is IGlmIHRoaXMgdmFyaWFibGUKK2lzIG5vdCBzZXQsIGxpa2UgaXRzIGBgPFBLRz5gYCB2YXJpYWJs ZS4KK1RoZSBwYXRjaCBkaXJlY3RvcnkgaXMgdGhlbiBzZWFyY2hlZCBpbiBhbGwgbG9jYXRpb25z IGxpc3RlZCBieSB0aGUKK2BgUFRYRElTVF9QQVRIX1BBVENIRVNgYCB2YXJpYWJsZSwgYW5kIHRo ZSBmaXJzdCBvbmUgZm91bmQgaXMgdXNlZC4KK1Rha2UgYW4gZXhlbXBsYXJ5IHBhY2thZ2UgYGBm b29gYCB3aXRoIHZlcnNpb24gYGAxLjEuMGBgOgorVGhlIHZhcmlhYmxlIGBgRk9PYGAgd2lsbCBo YXZlIHRoZSB2YWx1ZSBgYGZvby0xLjEuMGBgLCBzbyBQVFhkaXN0IHdpbGwgbG9vayBmb3IKK2Eg cGF0Y2ggZGlyZWN0b3J5IG5hbWVkIGBgZm9vLTEuMS4wYGAgaW4gdGhlIGZvbGxvd2luZyBsb2Nh dGlvbnM6CisKKyMuIHRoZSBjdXJyZW50IGxheWVyOgorCisgICBhLiBwcm9qZWN0IChgYC4vcGF0 Y2hlcy9mb28tMS4xLjBgYCkKKyAgIGIuIHBsYXRmb3JtIChgYC4vY29uZmlncy98cHR4ZGlzdFBs YXRmb3JtQ29uZmlnRGlyfC9wYXRjaGVzL2Zvby0xLjEuMGBgKQorCisjLiBhbnkgOnJlZjpgYmFz ZSBsYXllcnMgPGxheWVycy1pbi1wdHhkaXN0PmAsCisgICBhcHBseWluZyB0aGUgc2FtZSBzZWFy Y2ggb3JkZXIgYXMgYWJvdmUgZm9yIGVhY2ggbGF5ZXIgcmVjdXJzaXZlbHkKKworIy4gcHR4ZGlz dCAoYGA8cHR4ZGlzdC9pbnN0YWxsYXRpb24vcGF0aD4vcGF0Y2hlcy9mb28tMS4xLjBgYCkKKwor VGhlIHBhdGNoZXMgZnJvbSB0aGUgZmlyc3QgbG9jYXRpb24gZm91bmQgYXJlIHVzZWQuIE5vdGU6 IER1ZSB0byB0aGlzCitzZWFyY2ggb3JkZXIsIGEgUFRYZGlzdCBwcm9qZWN0IGNhbiByZXBsYWNl IGdsb2JhbCBwYXRjaGVzIGZyb20gdGhlCitQVFhkaXN0IGluc3RhbGxhdGlvbi4gVGhpcyBjYW4g YmUgdXNlZnVsIGlmIGEgcHJvamVjdCBzdGlja3MgdG8gYQorc3BlY2lmaWMgUFRYZGlzdCByZXZp c2lvbiBidXQgZml4ZXMgZnJvbSBhIG1vcmUgcmVjZW50IHJldmlzaW9uIG9mCitQVFhkaXN0IHNo b3VsZCBiZSB1c2VkLgorCitQVFhkaXN0IHVzZXMgdGhlIHV0aWxpdGllcyAqZ2l0KiwgKnBhdGNo KiBvciAqcXVpbHQqIHRvIHdvcmsgd2l0aAorcGF0Y2hlcyBvciBwYXRjaCBzZXJpZXMuIFdlIHJl Y29tbWVuZCAqZ2l0KiwgYXMgaXQgY2FuIG1hbmFnZSBwYXRjaAorc2VyaWVzIGluIGEgdmVyeSBl YXN5IHdheS4KKworQ3JlYXRpbmcgYSBQYXRjaCBTZXJpZXMgZm9yIGEgUGFja2FnZQorXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitUbyBjcmVhdGUgYSBwYXRjaCBzZXJp ZXMgZm9yIHRoZSBmaXJzdCB0aW1lLCB3ZSBjYW4gcnVuIHRoZSBmb2xsb3dpbmcKK3N0ZXBzLiBX ZSBhcmUgc3RpbGwgdXNpbmcgb3VyICpmb28tMS4xLjAqIGV4YW1wbGUgcGFja2FnZSBoZXJlOgor CitVc2luZyBRdWlsdAorIiIiIiIiIiIiIiIKKworV2UgY3JlYXRlIGEgc3BlY2lhbCBkaXJlY3Rv cnkgZm9yIHRoZSBwYXRjaCBzZXJpZXMgaW4gdGhlIGxvY2FsIHByb2plY3QKK2RpcmVjdG9yeToK KworLi4gY29kZS1ibG9jazo6IHRleHQKKworICAgICQgbWtkaXIgLXAgcGF0Y2hlcy9mb28tMS4x LjAKKworUFRYZGlzdCBleHBlY3RzIGEgYGBzZXJpZXNgYCBmaWxlIGluIHRoZSBwYXRjaCBkaXJl Y3RvcnkgYW5kIGF0IGxlYXN0CitvbmUgcGF0Y2guIE90aGVyd2lzZSBpdCBmYWlscy4gRHVlIHRv IHRoZSBmYWN0IHRoYXQgd2UgZG8gbm90IGhhdmUgYW55CitwYXRjaCBjb250ZW50IHlldCwgd2Xi gJlsbCBzdGFydCB3aXRoIGEgZHVtbXkgZW50cnkgaW4gdGhlIGBgc2VyaWVzYGAgZmlsZQorYW5k IGFuIGVtcHR5IGBgcGF0Y2hgYCBmaWxlLgorCisuLiBjb2RlLWJsb2NrOjogdGV4dAorCisgICAg JCB0b3VjaCBwYXRjaGVzL2Zvby0xLjEuMC9kdW1teQorICAgICQgZWNobyBkdW1teSA+IHBhdGNo ZXMvZm9vLTEuMS4wL3NlcmllcworCitOZXh0IGlzIHRvIGV4dHJhY3QgdGhlIHBhY2thZ2UgKGlm IGFscmVhZHkgZG9uZSwgd2UgbXVzdCByZW1vdmUgaXQKK2ZpcnN0KToKKworLi4gY29kZS1ibG9j azo6IHRleHQKKworICAgICQgcHR4ZGlzdCBleHRyYWN0IGZvbworCitUaGlzIHdpbGwgZXh0cmFj dCB0aGUgYXJjaGl2ZSBhbmQgY3JlYXRlIGEgc3ltYm9saWMgbGluayBpbiB0aGUgYnVpbGQKK2Rp cmVjdG9yeSBwb2ludGluZyB0byBvdXIgbG9jYWwgcGF0Y2ggZGlyZWN0b3J5LiBXb3JraW5nIHRo aXMgd2F5IHdpbGwKK2Vuc3VyZSB0aGF0IHdlIGRvIG5vdCBsb3NlIG91ciBjcmVhdGVkIHBhdGNo ZXMgaWYgd2UgZW50ZXIKK2BgcHR4ZGlzdCBjbGVhbiBmb29gYCBieSBhY2NpZGVudC4gSW4gb3Vy IGNhc2UgdGhlIHBhdGNoZXMgYXJlIHN0aWxsCitwcmVzZW50IGluIGBgcGF0Y2hlcy9mb28tMS4x LjBgYCBhbmQgY2FuIGJlIHVzZWQgdGhlIG5leHQgdGltZSB3ZQorZXh0cmFjdCB0aGUgcGFja2Fn ZSBhZ2Fpbi4KKworQWxsIHdlIGhhdmUgdG8gZG8gbm93IGlzIHRvIGRvIHRoZSBtb2RpZmljYXRp b24gd2UgbmVlZCB0byBtYWtlIHRoZQorcGFja2FnZSB3b3JrLiBXZSBjaGFuZ2UgaW50byB0aGUg YnVpbGQgZGlyZWN0b3J5IGFuZCB1c2UgcXVpbHRfIHRvCitjcmVhdGUgbmV3IHBhdGNoZXMsIGFk ZCBmaWxlcyB0byByZXNwZWN0aXZlIHBhdGNoZXMsIG1vZGlmeSB0aGVzZSBmaWxlcworYW5kIHJl ZnJlc2ggdGhlIHBhdGNoZXMgdG8gc2F2ZSBvdXIgY2hhbmdlcy4KK1NlZSB0aGUgKnF1aWx0KiBk b2N1bWVudGF0aW9uIChgYG1hbiAxIHF1aWx0YGApIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisu LiBub3RlOjogRm9yIHBhdGNoZXMgdGhhdCBhcmUgaW50ZW5kZWQgZm9yIFBUWGRpc3QgdXBzdHJl YW0gdXNlIHRoZSBnaXQKKyAgd29ya2Zsb3cgZGVzY3JpYmVkIGJlbG93IHRvIGdldCBwcm9wZXIg cGF0Y2ggaGVhZGVycy4KKworLi4gX3F1aWx0OiBodHRwOi8vc2F2YW5uYWgubm9uZ251Lm9yZy9w cm9qZWN0cy9xdWlsdAorCitVc2luZyBHaXQKKyIiIiIiIiIiIgorCitDcmVhdGUgdGhlIHBhdGNo IGRpcmVjdG9yeSBsaWtlIGFib3ZlIGZvciAqcXVpbHQqLAorYnV0IG9ubHkgYWRkIGFuIGVtcHR5 IHNlcmllcyBmaWxlOgorCisuLiBjb2RlLWJsb2NrOjogdGV4dAorCisgICAgJCBta2RpciAtcCBw YXRjaGVzL2Zvby0xLjEuMAorICAgICQgdG91Y2ggcGF0Y2hlcy9mb28tMS4xLjAvc2VyaWVzCisK K1RoZW4gZXh0cmFjdCB0aGUgcGFja2FnZSB3aXRoIGFuIGFkZGl0aW9uYWwgY29tbWFuZCBsaW5l IHN3aXRjaDoKKworLi4gY29kZS1ibG9jazo6IHRleHQKKworICAgICQgcHR4ZGlzdCAtLWdpdCBl eHRyYWN0IGZvbworCitUaGUgZW1wdHkgc2VyaWVzIGZpbGUgbWFrZXMgUFRYZGlzdCBjcmVhdGUg YSBHaXQgcmVwb3NpdG9yeSBpbiB0aGUKK3Jlc3BlY3RpdmUgcGFja2FnZSBidWlsZCBkaXJlY3Rv cnksCithbmQgaW1wb3J0IHRoZSBwYWNrYWdlIHNvdXJjZSBhcyB0aGUgZmlyc3QgY29tbWl0Lgor CisuLiBub3RlOjogT3B0aW9uYWxseSwgeW91IGNhbiBlbmFibGUgdGhlIHNldHRpbmcgKkRldmVs b3BlciBPcHRpb25zIOKGkgorICB1c2UgZ2l0IHRvIGFwcGx5IHBhdGNoZXMqIGluIGBwdHhkaXN0 IHNldHVwYCB0byBnZXQgdGhpcyBiZWhhdmlvdXIKKyAgYXMgYSBkZWZhdWx0IGZvciBldmVyeSBw YWNrYWdlLgorICBIb3dldmVyLCBub3RlIHRoYXQgdGhpcyBzZXR0aW5nIGlzIG1lYW50IGZvciBk ZXZlbG9wbWVudCBvbmx5LCBhbmQgY2FuIGxlYWQKKyAgdG8gZmFpbHVyZXMg4oCTIHNvbWUgcGFj a2FnZXMgdHJ5IHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBiZWluZyBjb21waWxlZCBmcm9tCisg IGEgR2l0IHNvdXJjZSB0cmVlLCBhbmQgYmVoYXZlIGRpZmZlcmVudGx5IGluIHRoYXQgY2FzZS4K KworVGhlbiB5b3UgY2FuIGNoYW5nZSBpbnRvIHRoZSBwYWNrYWdlIGJ1aWxkIGRpcmVjdG9yeQor KGBgcGxhdGZvcm0tPG5hbWU+L2J1aWxkLXRhcmdldC9mb28tMS4xLjBgYCksCitwYXRjaCB0aGUg cmVxdWlyZWQgc291cmNlIGZpbGVzLAorYW5kIG1ha2UgR2l0IGNvbW1pdHMgb24gdGhlIHdheS4K K1RoZSBHaXQgaGlzdG9yeSBzaG91bGQgbm93IGxvb2sgc29tZXRoaW5nIGxpa2UgdGhpczoKKwor Li4gY29kZS1ibG9jazo6IHRleHQKKworICAgICQgZ2l0IGxvZyAtLW9uZWxpbmUgLS1kZWNvcmF0 ZQorICAgICogZGYzNDNlODIxODUxIChIRUFEIC0+IG1hc3RlcikgTWFrZWZpbGU6IGRvbid0IGJ1 aWxkIHRoZSB0ZXN0cworICAgICogNjVhMzYwYzJiZDYwIHN0cmZyeS5jOiBmcm9ibmljYXRlIHRo ZSBleGN1c2F0b3IKKyAgICAqIGZkYzMxNWY2ODQ0YyAodGFnOiBmb29iYXItMS4xLjAsIHRhZzog YmFzZSkgaW5pdGlhbCBjb21taXQKKworRmluYWxseSwgY2FsbCBgYGdpdCBwdHgtcGF0Y2hlc2Bg IHRvIHRyYW5zZm9ybSB0aG9zZSBHaXQgY29tbWl0cyBpbnRvIHRoZSBwYXRjaAorc2VyaWVzIGlu IHRoZSBgYHBhdGNoZXMvZm9vLTEuMS4wYGAgZm9sZGVyLgorVGhpcyB3YXkgdGhleSBkb24ndCBn ZXQgbG9zdCB3aGVuIGNsZWFuaW5nIHRoZSBwYWNrYWdlLgorCisuLiBub3RlOjogUFRYZGlzdCB3 aWxsIG9ubHkgY3JlYXRlIGEgR2l0IHJlcG9zaXRvcnkgZm9yIHBhY2thZ2VzIHdpdGgKKyAgcGF0 Y2hlcy4gIFRvIHVzZSBHaXQgdG8gZ2VuZXJhdGUgdGhlIGZpcnN0IHBhdGNoLCBjcmVhdGUgYW4g ZW1wdHkgc2VyaWVzCisgIGZpbGUgYGBwYXRjaGVzL2Zvb2Jhci0xLjEuMC9zZXJpZXNgYCBiZWZv cmUgZXh0cmFjdGluZyB0aGUgcGFja2FnZXMuIFRoaXMKKyAgd2lsbCB0ZWxsIFBUWGRpc3QgdG8g dXNlIEdpdCBhbnl3YXlzIGFuZCBgYGdpdCBwdHgtcGF0Y2hlc2BgIHdpbGwgcHV0IHRoZQorICBw YXRjaGVzIHRoZXJlLgorCitCb3RoIGFwcHJvYWNoZXMgKEdpdCBhbmQgcXVpbHQpIGFyZSBub3Qg c3VpdGFibGUgZm9yIG1vZGlmeWluZyBmaWxlcwordGhhdCBhcmUgYXV0b2dlbmVyYXRlZCBpbiBh dXRvdG9vbHMtYmFzZWQgYnVpbGRzeXN0ZW1zLgorUmVmZXIgdG8gdGhlIHNlY3Rpb24gOnJlZjpg Y29uZmlndXJlX3JlYnVpbGRgIG9uIGhvdyBQVFhkaXN0IGNhbgoraGFuZGxlIHRoaXMgc3BlY2lh bCB0YXNrLgorCitBZGRpbmcgTW9yZSBQYXRjaGVzIHRvIGEgUGFja2FnZQorXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl4KKworSWYgd2Ugd2FudCB0byBhZGQgbW9yZSBwYXRjaGVzIHRv IGFuIGFscmVhZHkgcGF0Y2hlZCBwYWNrYWdlLCB3ZSBjYW4gdXNlCituZWFybHkgdGhlIHNhbWUg d2F5IGFzIGNyZWF0aW5nIHBhdGNoZXMgZm9yIHRoZSBmaXJzdCB0aW1lLiBCdXQgaWYgdGhlCitw YXRjaCBzZXJpZXMgY29tZXMgZnJvbSB0aGUgUFRYZGlzdCBtYWluIGluc3RhbGxhdGlvbiwgd2Ug ZG8gbm90IGhhdmUKK3dyaXRlIHBlcm1pc3Npb25zIHRvIHRoZXNlIGRpcmVjdG9yaWVzIChkbyBO RVZFUiB3b3JrIG9uIHRoZSBtYWluCitpbnN0YWxsYXRpb24gZGlyZWN0b3JpZXMsIE5FVkVSLCBO RVZFUiwgTkVWRVIpLiBEdWUgdG8gdGhlIHNlYXJjaCBvcmRlcgoraW4gd2hpY2ggUFRYZGlzdCBz ZWFyY2hlcyBmb3IgcGF0Y2hlcyBmb3IgYSBzcGVjaWZpYyBwYWNrYWdlLCB3ZSBjYW4KK2NvcHkg dGhlIGdsb2JhbCBwYXRjaCBzZXJpZXMgdG8gb3VyIGxvY2FsIHByb2plY3QgZGlyZWN0b3J5LiBO b3cgd2UgaGF2ZQordGhlIHBlcm1pc3Npb25zIHRvIGFkZCBtb3JlIHBhdGNoZXMgb3IgbW9kaWZ5 IHRoZSBleGlzdGluZyBvbmVzLiBBbHNvCisqcXVpbHQqIGFuZCAqZ2l0KiBhcmUgb3VyIGZyaWVu ZHMgaGVyZSB0byBtYW5hZ2UgdGhlIHBhdGNoIHNlcmllcy4KKworSWYgd2UgdGhpbmsgdGhhdCBv dXIgbmV3IHBhdGNoZXMgYXJlIHZhbHVhYmxlIGFsc28gZm9yIG90aGVycywgb3IgdGhleQorZml4 IGFuIGVycm9yLCBpdCBjb3VsZCBiZSBhIGdvb2QgaWRlYSB0byBzZW5kIHRoZXNlIHBhdGNoZXMg dG8gUFRYZGlzdAorbWFpbmxpbmUsIGFuZCB0byB0aGUgdXBzdHJlYW0gcHJvamVjdCB0b28uCisK KworLi4gX2NvbmZpZ3VyZV9yZWJ1aWxkOgorCitNb2RpZnlpbmcgQXV0b3Rvb2xpemVkIFBhY2th Z2VzCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK0F1dG90b29saXplZCBwYWNr YWdlcyBhcmUgdmVyeSBwaWNreSB3aGVuIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZpbGVzCitn ZXQgcGF0Y2hlZC4gVGhlIHBhdGNoIG9yZGVyIGlzIHZlcnkgaW1wb3J0YW50IGluIHRoaXMgY2Fz ZSBhbmQKK3NvbWV0aW1lcyBpdCBldmVuIGZhaWxzIGFuZCBub2JvZHkga25vd3Mgd2h5LgorCitU byBpbXByb3ZlIGEgcGFja2FnZeKAmXMgYXV0b3Rvb2xzLWJhc2VkIGJ1aWxkIHN5c3RlbSwgUFRY ZGlzdCBjb21lcyB3aXRoCitpdHMgb3duIHByb2plY3QgbG9jYWwgYXV0b3Rvb2xzIHRvIHJlZ2Vu ZXJhdGUgdGhlIGF1dG90b29scyB0ZW1wbGF0ZQorZmlsZXMsIGluc3RlYWQgb2YgcGF0Y2hpbmcg dGhlbS4gV2l0aCB0aGlzIGZlYXR1cmUsIG9ubHkgdGhlIHRlbXBsYXRlCitmaWxlcyBtdXN0IGJl IHBhdGNoZWQsIHRoZSByZXF1aXJlZCBgYGNvbmZpZ3VyZWBgIHNjcmlwdCBhbmQgdGhlCitgYE1h a2VmaWxlLmluYGAgZmlsZXMgYXJlIHJlZ2VuZXJhdGVkIGluIHRoZSBmaW5hbCBzdGFnZXMgb2Yg dGhlCisqcHJlcGFyZSogc3RlcC4KKworVGhpcyBmZWF0dXJlIHdvcmtzIGxpa2UgdGhlIHJlZ3Vs YXIgcGF0Y2hpbmcgbWVjaGFuaXNtLiBUaGUgb25seQorZGlmZmVyZW5jZSBpcyB0aGUgYWRkaXRp b25hbCBgYGF1dG9nZW4uc2hgYCBmaWxlIGluIHRoZSBwYXRjaCBkaXJlY3RvcnkuCitJZiBpdCBl eGlzdHMgYW5kIGhhcyBleGVjdXRpb24gcGVybWlzc2lvbnMsIGl0IHdpbGwgYmUgY2FsbGVkIGFm dGVyIHRoZQorcGFja2FnZSB3YXMgcGF0Y2hlZCAod2hpbGUgdGhlICpleHRyYWN0KiBzdGFnZSBp cyBydW5uaW5nKS4KKworSXRzIGNvbnRlbnQgZGVwZW5kcyBvbiBkZXZlbG9wZXIgbmVlZHM7IGZv ciB0aGUgbW9zdCBzaW1wbGUgY2FzZSB0aGUKK2NvbnRlbnQgY2FuIGJlOgorCisuLiBjb2RlLWJs b2NrOjogYmFzaAorCisgICAgIyEvYmluL2Jhc2gKKworICAgIGFjbG9jYWwgJEFDTE9DQUxfRkxB R1MKKworICAgIGxpYnRvb2xpemUgXAorICAgICAgICAgICAgLS1mb3JjZSBcCisgICAgICAgICAg ICAtLWNvcHkKKworICAgIGF1dG9yZWNvbmYgXAorICAgICAgICAgICAgLS1mb3JjZSBcCisgICAg ICAgICAgICAtLWluc3RhbGwgXAorICAgICAgICAgICAgLS13YXJuaW5ncz1jcm9zcyBcCisgICAg ICAgICAgICAtLXdhcm5pbmdzPXN5bnRheCBcCisgICAgICAgICAgICAtLXdhcm5pbmdzPW9ic29s ZXRlIFwKKyAgICAgICAgICAgIC0td2FybmluZ3M9dW5zdXBwb3J0ZWQKKworLi4gbm90ZTo6IElu IHRoaXMgd2F5IG5vdCB5ZXQgYXV0b3Rvb2xpemVkIHBhY2thZ2UgY2FuIGJlIGF1dG90b29saXpl ZC4gV2UKKyAganVzdCBoYXZlIHRvIGFkZCB0aGUgY29tbW9uIGF1dG90b29sIHRlbXBsYXRlIGZp bGVzIChgYGNvbmZpZ3VyZS5hY2BgCisgIGFuZCBgYE1ha2VmaWxlLmFtYGAgZm9yIGV4YW1wbGUp IHZpYSBhIHBhdGNoIHNlcmllcyB0byB0aGUgcGFja2FnZQorICBzb3VyY2UgYW5kIHRoZSBgYGF1 dG9nZW4uc2hgYCB0byB0aGUgcGF0Y2ggZGlyZWN0b3J5LgpkaWZmIC0tZ2l0IGEvZG9jL2Rldl9j cmVhdGVfbmV3X3BrZ190ZW1wbGF0ZXMucnN0IGIvZG9jL2Rldl9jcmVhdGVfbmV3X3BrZ190ZW1w bGF0ZXMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZDdjMjkyN2I2 Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL2Rldl9jcmVhdGVfbmV3X3BrZ190ZW1wbGF0ZXMucnN0 CkBAIC0wLDAgKzEsNzcgQEAKK0NyZWF0aW5nIE5ldyBQYWNrYWdlIFRlbXBsYXRlcworLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZvciBsYXJnZXIgcHJvamVjdHMgaXQgY2FuIGJl IGNvbnZlbmllbnQgdG8gaGF2ZSBwcm9qZWN0IHNwZWNpZmljIHBhY2thZ2UKK3RlbXBsYXRlcy4g VGhpcyBjYW4gYmUgYWNoaWV2ZWQgYnkgZWl0aGVyIG1vZGlmeWluZyBleGlzdGluZyB0ZW1wbGF0 ZXMgb3IKK2J5IGNyZWF0aW5nIGNvbXBsZXRlbHkgbmV3IHRlbXBsYXRlcy4KKworTW9kaWZ5aW5n IGEgVGVtcGxhdGUKK35+fn5+fn5+fn5+fn5+fn5+fn5+CisKK0EgdGVtcGxhdGUgY2FuIGJlIG1v ZGlmaWVkIGJ5IHByb3ZpZGluZyBuZXcgaW5wdXQgZmlsZXMuIFRoaXMgaXMgZWFzaWVyCit0aGFu IGNyZWF0aW5nIGEgbmV3IHRlbXBsYXRlIGJ1dCBkb2VzIG5vdCBhbGxvdyB0byBzcGVjaWZ5IG5l dyB2YXJpYWJsZXMgdG8KK3N1YnN0aXR1dGUgaW4gdGhlIGlucHV0IGZpbGVzLgorCitQVFhkaXN0 IGxvb2tzIGZvciB0ZW1wbGF0ZSBmaWxlcyB0aGUgc2FtZSB3YXkgaXQgbG9va3MgZm9yIHJ1bGVz IGZpbGVzLiBUaGUKK29ubHkgZGlmZmVyZW5jZSBpcywgdGhhdCBpdCBzZWFyY2hlcyBpbiB0aGUg YGB0ZW1wbGF0ZXMvYGAgc3ViZGlyZWN0b3J5LgorU28gYSBtb2RpZmllZCBgYC4vcnVsZXMvdGVt cGxhdGVzL3RlbXBsYXRlLXRhcmdldC1tYWtlYGAgY2FuIGJlIHVzZWQgdG8KK3R3ZWFrIHRoZSBg YHRhcmdldGBgIHRlbXBsYXRlLgorCitDcmVhdGluZyBhIE5ldyBUZW1wbGF0ZQorfn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn4KKworRm9yIGEgY29tcGxldGVseSBuZXcgdGVtcGxhdGUsIHNvbWUgYmFz aCBzY3JpcHRpbmcgaXMgcmVxdWlyZWQuIEFsbCBzaGVsbAorY29kZSBtdXN0IGJlIHBsYWNlZCBp biBhIGZpbGUgbmFtZWQgbGlrZSB0aGlzOgorYGAuL3NjcmlwdHMvbGliL3B0eGRfbGliXyouc2hg YC4KKworVGhlIG1pbmltdW0gcmVxdWlyZW1lbnQgZm9yIGEgbmV3IHRlbXBsYXRlIGlzOgorLSAg YSBzaGVsbCBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMgdGhlIG5ldyBwYWNrYWdlCistICByZWdpc3Rl cmluZyB0aGUgbmV3IHRlbXBsYXRlCisKKy4uIGNvZGUtYmxvY2s6OiBzaAorCisgICAgcHR4ZF90 ZW1wbGF0ZV9uZXdfbXlwa2coKSB7CisgICAgICAgICMgY3JlYXRlIHRoZSBwYWNrYWdlIGhlcmUK KyAgICB9CisgICAgZXhwb3J0IC1mIHB0eGRfdGVtcGxhdGVfbmV3X215cGtnCisgICAgcHR4ZF90 ZW1wbGF0ZV9oZWxwX2xpc3RbJHsjcHR4ZF90ZW1wbGF0ZV9oZWxwX2xpc3RbQF19XT0ibXlwa2ci CisgICAgcHR4ZF90ZW1wbGF0ZV9oZWxwX2xpc3RbJHsjcHR4ZF90ZW1wbGF0ZV9oZWxwX2xpc3Rb QF19XT0iY3JlYXRlIGF3ZXNvbWUgbXlwa2cgcGFja2FnZSIKKworUFRYZGlzdCBwcm92aWRlcyBz ZXZlcmFsIGhlbHBlciBmdW5jdGlvbnMgdG8gc2ltcGxpZnkgdGhlIHRlbXBsYXRlLgorVXNpbmcg dGhvc2UgZnVuY3Rpb25zLCB0aGUgcGFja2FnZSBjcmVhdGlvbiBwcm9jZXNzIGlzIHNwbGl0IGlu dG8gdHdvCitwYXJ0czoKKworLSAgcXVlcnkgdGhlIHVzZXIgZm9yIGlucHV0IGFuZCBleHBvcnQg dmFyaWFibGVzLgorLSAgY3JlYXRlIHRoZSBuZXcgcGFja2FnZSBmaWxlcyBmcm9tIHRoZSB0ZW1w bGF0ZSBzb3VyY2UgZmlsZXMgYnkKKyAgIHN1YnN0aXR1dGluZyBhbGwgaW5zdGFuY2VzIG9mIGBg QDx2YXJpYWJsZT5AYGAgd2l0aCB0aGUgdmFsdWUgb2YgdGhlCisgICBjb3JyZXNwb25kaW5nIHZh cmlhYmxlLgorCitBIHNpbXBsZSB0ZW1wbGF0ZSBmdW5jdGlvbiBjb3VsZCBsb29rIGxpa2UgdGhp czoKKworLi4gY29kZS1ibG9jazo6IHNoCisKKyAgICBwdHhkX3RlbXBsYXRlX25ld19teXBrZygp IHsKKyAgICAgICAgcHR4ZF90ZW1wbGF0ZV9yZWFkX2Jhc2ljICYmCisgICAgICAgIHB0eGRfdGVt cGxhdGVfcmVhZCAiZW50ZXIgZG93bmxvYWQgc2VjdGlvbiIgRExfU0VDVElPTiAiZm9vYmFyIgor ICAgICAgICBwdHhkX3RlbXBsYXRlX3JlYWRfYXV0aG9yICYmCisgICAgICAgIGV4cG9ydCBzZWN0 aW9uPSJsb2NhbF8ke2Rsc2VjdGlvbn0iICYmCisgICAgICAgIHB0eGRfdGVtcGxhdGVfd3JpdGVf cnVsZXMKKyAgICB9CisKK1RoaXMgdGVtcGxhdGUgcmVxdWlyZXMgYGBydWxlcy90ZW1wbGF0ZXMv dGVtcGxhdGUtbXlwa2ctbWFrZWBgIGFuZAorYGBydWxlcy90ZW1wbGF0ZXMvdGVtcGxhdGUtbXlw a2ctaW5gYCBhcyBzb3VyY2UgZmlsZXMuIFRoZXkgY291bGQgYmUKK2Rlcml2ZWQgZnJvbSB0aGUg YGB0YXJnZXRgYCB0ZW1wbGF0ZSB3aXRoIGEgc2ltcGxlIG1vZGlmaWNhdGlvbjoKKworLi4gY29k ZS1ibG9jazo6IG1ha2UKKworICAgIEBQQUNLQUdFQF9TVUZGSVgJOj0gdGFyLnh6CisgICAgQFBB Q0tBR0VAX1VSTAk6PSBodHRwOi8vZGwubXktY29tcGFueS5sb2NhbC9kb3dubG9hZHMvQERMX1NF Q1RJT05ALyQoQFBBQ0tBR0VAKS4kKEBQQUNLQUdFQF9TVUZGSVgpCisKK1RoZSBoZWxwZXIgZnVu Y3Rpb25zIHRoYXQgYXJlIHVzZWQgaW4gdGhlIGV4YW1wbGUgYWJvdmUgYXJlIGRlZmluZWQgaW4K K2Bgc2NyaXB0cy9saWIvcHR4ZF9saWJfdGVtcGxhdGUuc2hgYCBpbiB0aGUgUFRYZGlzdCBzb3Vy Y2UgdHJlZS4KKworVGhlIHRlbXBsYXRlIGlzIGEgbm9ybWFsIHNoZWxsIGZ1bmN0aW9uLiBBcmJp dHJhcnkgdGhpbmdzIGNhbiBiZSBkb25lIGhlcmUKK3RvIGNyZWF0ZSB0aGUgbmV3IHBhY2thZ2Uu IFRoZSBoZWxwZXIgZnVuY3Rpb25zIGFyZSBqdXN0IHRoZSBtb3N0Citjb252ZW5pZW50IHdheSB0 byBjcmF0ZSBzaW1wbGUgdGVtcGxhdGVzLiBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNyZWF0ZQor bW9yZSBmaWxlcy4gRm9yIGV4YW1wbGVzLCB0aGUgYnVpbHRpbiBgYGdlbmltYWdlYGAgdGVtcGxh dGUgY3JlYXRlcyBhIGV4dHJhCitjb25maWcgZmlsZSBmb3IgdGhlIG5ldyBwYWNrYWdlLgpkaWZm IC0tZ2l0IGEvZG9jL2Rldl9kaXJfaGllcmFyY2h5LnJzdCBiL2RvYy9kZXZfZGlyX2hpZXJhcmNo eS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5iZDFhZDQwZDAKLS0t IC9kZXYvbnVsbAorKysgYi9kb2MvZGV2X2Rpcl9oaWVyYXJjaHkucnN0CkBAIC0wLDAgKzEsMTA4 IEBACisuLiBfZGlyZWN0b3J5X2hpZXJhcmNoeToKKworUFRYZGlzdOKAmXMgRGlyZWN0b3J5IEhp ZXJhcmNoeQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gbm90ZTo6IFJlZmVy ZW5jZWQgZGlyZWN0b3JpZXMgYXJlIG1lYW50IHJlbGF0aXZlIHRvIHRoZSBQVFhkaXN0IG1haW4K KyAgaW5zdGFsbGF0aW9uIGxvY2F0aW9uIChpZiBub3Qgb3RoZXJ3aXNlIHN0YXRlZCkuIElmIG5v dCBjb25maWd1cmVkCisgIGRpZmZlcmVudGx5LCB0aGlzIG1haW4gcGF0aCBpcyBgYC91c3IvbG9j YWwvbGliL3B0eGRpc3QtfHB0eGRpc3RWZW5kb3JWZXJzaW9ufGBgCisKK1J1bGUgRmlsZXMKK35+ fn5+fn5+fn4KKworV2hlbiBidWlsZGluZyBhIHNpbmdsZSBwYWNrYWdlLCBQVFhkaXN0IG5lZWRz IHRoZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8KK2hhbmRsZSB0aGUgcGFja2FnZSwgaS5lLiBvbiBo b3cgdG8gZ2V0IGl0IGZyb20gdGhlIHNvdXJjZSB1cCB0byB3aGF0IHRoZQordGFyZ2V0IG5lZWRz IGF0IHJ1bi10aW1lLiBUaGlzIGluZm9ybWF0aW9uIGlzIHByb3ZpZGVkIGJ5IGEgcnVsZSBmaWxl IHBlcgorcGFja2FnZS4KKworUFRYZGlzdCBjb2xsZWN0cyBhbGwgcnVsZSBmaWxlcyBpbiBpdHMg YGBydWxlcy9gYCBkaXJlY3RvcnkuIFdoZW5ldmVyCitQVFhkaXN0IGJ1aWxkcyBzb21ldGhpbmcs IGFsbCB0aGVzZSBydWxlIGZpbGVzIGFyZSBzY2FubmVkIGF0IG9uY2UuCitUaGVzZSBydWxlIGZp bGVzIGFyZSBnbG9iYWwgcnVsZSBmaWxlcywgdmFsaWQgZm9yIGFsbCBwcm9qZWN0cy4gUFRYZGlz dAordXNlcyBhIG1lY2hhbmlzbSB0byBiZSBhYmxlIHRvIGFkZCBvciByZXBsYWNlIHNwZWNpZmlj IHJ1bGUgZmlsZXMgb24gYQorcGVyIHByb2plY3QgYmFzZS4gSWYgYSBgYHJ1bGVzL2BgIGRpcmVj dG9yeSBleGlzdHMgaW4gdGhlIGN1cnJlbnQKK3Byb2plY3QsIGl0cyBjb250ZW50IGlzIHNjYW5u ZWQgdG9vLiBUaGVzZSBwcm9qZWN0IGxvY2FsIHJ1bGUgZmlsZXMgYXJlCit1c2VkIGluIGFkZGl0 aW9uIHRvIHRoZSBnbG9iYWwgcnVsZSBmaWxlcyBvciDigJMgaWYgdGhleSBhcmUgdXNpbmcgdGhl CitzYW1lIG5hbWUgYXMgYSBnbG9iYWwgcnVsZSBmaWxlIOKAkyAqKnJlcGxhY2luZyoqIHRoZSBn bG9iYWwgcnVsZSBmaWxlLgorCitUaGUgcmVwbGFjaW5nIG1lY2hhbmlzbSBjYW4gYmUgdXNlZCB0 byBleHRlbmQgb3IgYWRhcHQgcGFja2FnZXMgZm9yCitzcGVjaWZpYyBwcm9qZWN0IHJlcXVpcmVt ZW50cy4gT3IgaXQgY2FuIGJlIHVzZWQgZm9yIGJ1ZyBmaXhpbmcgYnkKK2JhY2twb3J0aW5nIHJ1 bGUgZmlsZXMgZnJvbSBtb3JlIHJlY2VudCBQVFhkaXN0IHJldmlzaW9ucyB0byBwcm9qZWN0cwor dGhhdCBhcmUgc3R1Y2sgdG8gYW4gb2xkZXIgUFRYZGlzdCByZXZpc2lvbiBmb3IgbWFpbnRlbmFu Y2Ugb25seS4KKworUGF0Y2ggU2VyaWVzCit+fn5+fn5+fn5+fn4KKworVGhlcmUgYXJlIG1hbnkg cGFja2FnZXMgaW4gdGhlIHdpbGQgdGhhdCBhcmUgbm90IGNyb3NzIGJ1aWxkIGF3YXJlLiBUaGV5 CitmYWlsIGNvbXBpbGluZyBzb21lIGZpbGVzLCB1c2Ugd3JvbmcgaW5jbHVkZSBwYXRocyBvciB0 cnkgdG8gbGluaworYWdhaW5zdCBob3N0IGxpYnJhcmllcy4gVG8gYmUgc3VjY2Vzc2Z1bCBpbiB0 aGUgZW1iZWRkZWQgd29ybGQsIHRoZXNlCit0eXBlcyBvZiBmYWlsdXJlcyBtdXN0IGJlIGZpeGVk LiBJZiByZXF1aXJlZCwgUFRYZGlzdCBwcm92aWRlcyBzdWNoCitmaXhlcyBwZXIgcGFja2FnZS4g VGhleSBhcmUgb3JnYW5pemVkIGluICpwYXRjaCBzZXJpZXMqIGFuZCBjYW4gYmUgZm91bmQKK2lu IGEgYGBwYXRjaGVzL2BgIGRpcmVjdG9yeSB3aXRoaW4gYSBzdWJkaXJlY3RvcnkgdXNpbmcgdGhl IHNhbWUgbmFtZQorYXMgdGhlIHBhY2thZ2UgaXRzZWxmLgorCitQVFhkaXN0IHVzZXMgdGhlIHV0 aWxpdHkgYGBwYXRjaGBgIG9yIGBgcXVpbHRgYCAob3IgYGBnaXRgYCBvbiBkZW1hbmQpIHRvIGFw cGx5CithbiBleGlzdGluZyBwYXRjaCBzZXJpZXMgYWZ0ZXIgZXh0cmFjdGluZyB0aGUgYXJjaGl2 ZS4gU28sIGV2ZXJ5IHBhdGNoIHNlcmllcworY29udGFpbnMgYSBzZXQgb2YgcGF0Y2hlcyBhbmQg b25lIGBgc2VyaWVzYGAgZmlsZSB0byBkZWZpbmUgdGhlIG9yZGVyIGluCit3aGljaCB0aGUgcGF0 Y2hlcyBtdXN0IGJlIGFwcGxpZWQuCisKKy4uIG5vdGU6OiBQYXRjaGVzIGNhbiBiZSBjb21wcmVz c2VkLgorCitQYXRjaGVzIGFyZSBsb29rZWQgZm9yIGF0IHNldmVyYWwgbG9jYXRpb25zOgorCisx LiAgdGhlIGBgcGF0Y2hlcy9gYCBmb2xkZXIgaW4geW91ciBCU1AgKGBgJHtQVFhESVNUX1dPUktT UEFDRX0vcGF0Y2hlc2BgKQorCisyLiAgdGhlIGZvbGRlciBgYHBhdGNoZXMvYGAgZm9sZGVyIHJl bGF0aXZlIHRvIHlvdXIgc2VsZWN0ZWQgcGxhdGZvcm1jb25maWcKKyAgICBmaWxlIChgYCR7UFRY RElTVF9QTEFURk9STUNPTkZJR0RJUn0vcGF0Y2hlc2BgKS4gSWYgeW91ciBwbGF0Zm9ybWNvbmZp ZworICAgIGZpbGUgaXMgYXQgYGBjb25maWdzL3xwdHhkaXN0UGxhdGZvcm1Db25maWdEaXJ8L3Bs YXRmb3JtY29uZmlnYGAsIHRoaXMKKyAgICBwYXRjaCBmb2xkZXIgd2lsbCBiZSBgYGNvbmZpZ3Mv fHB0eGRpc3RQbGF0Zm9ybUNvbmZpZ0RpcnwvcGF0Y2hlcy9gYC4KKworMy4gIHRoZSBgYHBhdGNo ZXMvYGAgZm9sZGVyIGluIFBUWGRpc3QncyBtYWluIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkKKyAg ICAoYGAke1BUWERJU1RfVE9QRElSfS9wYXRjaGVzYGApCisKK1RoZSBsaXN0IGlzIHRyaWVkIGZy b20gZmlyc3QgdG8gbGFzdC4KK0lmIG5vIHBhdGNoZXMgd2VyZSBmb3VuZCBpbiBvbmUgb2YgdGhl IGxvY2F0aW9ucywgdGhlIG5leHQgbG9jYXRpb24gaXMgdHJpZWQuCitXaGVuIGFsbCBsb2NhdGlv bnMgaGF2ZSBiZWVuIHRyaWVkIHVuc3VjY2Vzc2Z1bGx5LCB0aGUgcGFja2FnZSBpcyBub3QgcGF0 Y2hlZC4KKworVGhpcyBzZWFyY2ggb3JkZXIgY2FuIGJlIHVzZWQgdG8gdXNlIHNwZWNpZmljIHBh dGNoIHNlcmllcyBmb3Igc3BlY2lmaWMKK2Nhc2VzLgorCistICBwbGF0Zm9ybSBzcGVjaWZpYwor CistICBwcm9qZWN0IHNwZWNpZmljCisKKy0gIGNvbW1vbiBjYXNlCisKKy0gIGJ1ZyBmaXhpbmcK KworVGhlICpidWcgZml4aW5nKiBjYXNlIGlzIHVzZWQgaW4gYWNjb3JkYW5jZSB0byBhIHJlcGxh Y2VtZW50IG9mIGEgcnVsZQorZmlsZS4gSWYgdGhpcyB3YXMgZG9uZSBkdWUgdG8gYSBiYWNrcG9y dCwgYW5kIHRoZSBtb3JlIHJlY2VudCBQVFhkaXN0CityZXZpc2lvbiBkb2VzIG5vdCBvbmx5IGV4 Y2hhbmdlIHRoZSBydWxlIGZpbGUgYnV0IGFsc28gdGhlIHBhdGNoIHNlcmllcywKK3RoaXMgbWVj aGFuaXNtIGVuc3VyZXMgdGhhdCBib3RoIHJlbGV2YW50IHBhcnRzIGNhbiBiZSB1cGRhdGVkIGlu IHRoZQorcHJvamVjdC4KKworUnVudGltZSBDb25maWd1cmF0aW9uCit+fn5+fn5+fn5+fn5+fn5+ fn5+fn4KKworTWFueSBwYWNrYWdlcyBhcmUgdXNpbmcgcnVuLXRpbWUgY29uZmlndXJhdGlvbiBm aWxlcyBhbG9uZyB3aXRoIHRoZWlyCitleGVjdXRhYmxlcyBhbmQgbGlicmFyaWVzLiBQVFhkaXN0 IHByb3ZpZGVzIGRlZmF1bHQgY29uZmlndXJhdGlvbiBmaWxlcworZm9yIHRoZSBtb3N0IGNvbW1v biBjYXNlcy4gVGhlc2UgZmlsZXMgY2FuIGJlIGZvdW5kIGluIHRoZQorYGBwcm9qZWN0cm9vdC9l dGNgYCBkaXJlY3RvcnkgYW5kIHRoZXkgYXJlIHVzaW5nIHRoZSBzYW1lIG5hbWVzIGFzIHRoZSBv bmVzCithdCBydW4tdGltZSAoYW5kIHRoZWlyIGluc3RhbGwgZGlyZWN0b3J5IG9uIHRoZSB0YXJn ZXQgc2lkZSB3aWxsIGFsc28gYmUKK2BgL2V0Y2BgKS4KKworQnV0IHNvbWUgb2YgdGhlc2UgZGVm YXVsdCBjb25maWd1cmF0aW9uIGZpbGVzIGFyZSBlbXB0eSwgZHVlIHRvIHRoZQorYWJzZW5jZSBv ZiBhIGNvbW1vbiBjYXNlLiBUaGUgcHJvamVjdCBtdXN0IHByb3ZpZGUgcmVwbGFjZW1lbnRzIG9m IHRoZXNlCitmaWxlcyB3aXRoIGEgbW9yZSB1c2VmdWwgY29udGVudCBpbiBldmVyeSBjYXNlIHdo ZXJlIHRoZSAoZW1wdHkpIGRlZmF1bHQKK29uZSBkb2VzIG5vdCBtZWV0IHRoZSB0YXJnZXTigJlz IHJlcXVpcmVtZW50cy4KKworUFRYZGlzdCBmaXJzdCBzZWFyY2hlcyBpbiB0aGUgbG9jYWwgcHJv amVjdCBkaXJlY3RvcnkgZm9yIGEgc3BlY2lmaWMKK2NvbmZpZ3VyYXRpb24gZmlsZSBhbmQgZmFs bHMgYmFjayB0byB1c2UgdGhlIGRlZmF1bHQgb25lIGlmIG5vbmUgZXhpc3RzCitsb2NhbGx5LiBS ZWZlciBzZWN0aW9uIDpyZWY6YGluc3RhbGxfYWx0ZXJuYXRpdmVgIGZvciBmdXJ0aGVyCitkZXRh aWxzIGluIHdoaWNoIG9yZGVyIGFuZCBsb2NhdGlvbnMgUFRYZGlzdCBzZWFyY2hlcyBmb3IgdGhl c2Uga2luZCBvZiBmaWxlcy4KKworQSBwb3B1bGFyIGV4YW1wbGUgaXMgdGhlIGNvbmZpZ3VyYXRp b24gZmlsZSBgYC9ldGMvZnN0YWJgYC4gVGhlIGRlZmF1bHQKK29uZSBjb21pbmcgd2l0aCBQVFhk aXN0IHdvcmtzIGZvciB0aGUgbW9zdCBjb21tb24gY2FzZXMuIEJ1dCBpZiBvdXIKK3Byb2plY3Qg cmVxdWlyZXMgYSBzcGVjaWFsIHNldHVwLCB3ZSBjYW4ganVzdCBjb3B5IHRoZSBkZWZhdWx0IG9u ZSB0bwordGhlIGxvY2FsIGBgLi9wcm9qZWN0cm9vdC9ldGMvZnN0YWJgYCwgbW9kaWZ5IGl0IGFu ZCB3ZSBhcmUgZG9uZS4gVGhlCituZXh0IHRpbWUgUFRYZGlzdCBidWlsZHMgdGhlIHJvb3QgZmls ZXN5c3RlbSBpdCB3aWxsIHVzZSB0aGUgbG9jYWwKK2BgZnN0YWJgYCBpbnN0ZWFkIG9mIHRoZSBn bG9iYWwgKGRlZmF1bHQpIG9uZS4KZGlmZiAtLWdpdCBhL2RvYy9kZXZfbGF5ZXJzX2luX3B0eGRp c3QucnN0IGIvZG9jL2Rldl9sYXllcnNfaW5fcHR4ZGlzdC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwLi5lYzkyYzhjOGEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2MvZGV2 X2xheWVyc19pbl9wdHhkaXN0LnJzdApAQCAtMCwwICsxLDExMSBAQAorLi4gX2xheWVycy1pbi1w dHhkaXN0OgorCitMYXllcnMgaW4gUFRYZGlzdAorLS0tLS0tLS0tLS0tLS0tLS0KKworRm9yIGJl dHRlciBtYWludGVuYW5jZSBvciBvdGhlciByZWFzb25zLCBhIFBUWGRpc3QgcHJvamVjdCBjYW4g YmUgc3BsaXQKK2ludG8gbXVsdGlwbGUgbGF5ZXJzLiBFYWNoIGxheWVyIGhhcyBleGFjdGx5IHRo ZSBzYW1lIGRpcmVjdG9yeSBoaWVyYXJjaHkKK2FzIGRlc2NyaWJlZCBpbiA6cmVmOmBkaXJlY3Rv cnlfaGllcmFyY2h5YCBhbmQgb3RoZXIgY2hhcHRlcnMuCisKK0FsbCBsYXllcnMgYXJlIGV4cGxp Y2l0bHkgc3RhY2tlZCBpbiB0aGUgZmlsZXN5c3RlbS4gVGhlIHRvcCBsYXllciBpcyB0aGUKK3dv cmtzcGFjZSBvZiB0aGUgUFRYZGlzdCBwcm9qZWN0LiBBbnkgYGBzZWxlY3RlZF8qYGAgbGlua3Mg YW5kIHRoZSBwbGF0Zm9ybQorYnVpbGQgZGlyZWN0b3J5IGFyZSBjcmVhdGVkIGhlcmUuIFRoZSBs YXllciBiZWxvdyBpcyBkZWZpbmVkIGJ5IHRoZQorc3ViZGlyZWN0b3J5IG9yIHN5bWxpbmsgbmFt ZWQgYGBiYXNlL2BgLiBNb3JlIGNhbiBiZSBzdGFja2VkIHRoZSBzYW1lCit3YXksIHNvIGBgYmFz ZS9iYXNlL2BgIGlzIHRoZSB0aGlyZCBsYXllciBhbmQgc28gb24uCitJbiBtYW55IHdheXMsIFBU WGRpc3QgaXRzZWxmIGNhbiBiZSBjb25zaWRlcmVkIGFzIHRoZSBib3R0b20gbGF5ZXIuIFRoaXMg aXMKK2VpdGhlciBpbXBsaWNpdCBvciBleHBsaWNpdCB3aXRoIG9uZSBsYXN0IGBgYmFzZS9gYCBz eW1saW5rLgorCitBIHByb2plY3QgY2FuIG92ZXJ3cml0ZSBmaWxlcyBwcm92aWRlZCBieSBQVFhk aXN0IGluIG1hbnkgZGlmZmVyZW50IHdheXMsCitlLmcuIHJ1bGUgZmlsZXMgb3IgZmlsZXMgaW5z dGFsbGVkIHdpdGggOnJlZjpgaW5zdGFsbF9hbHRlcm5hdGl2ZWAgZXRjLgorVGhpcyBjb25jZXB0 IGV4cGFuZHMgbmF0dXJhbGx5IHRvIGxheWVycy4gRWFjaCBsYXllciBjYW4gb3ZlcndyaXRlIGZp bGVzCitwcm92aWRlZCBieSBsb3dlciBsYXllcnMgaW4gdGhlIGV4YWN0IHNhbWUgd2F5LiBBbnkg ZmlsZXMgYXJlIGFsd2F5cworc2VhcmNoZWQgZm9yIGluIGEgc3RyaWN0IGxheWVyIGJ5IGxheWVy IG9yZGVyLgorCitXcml0aW5nIExheWVyIEF3YXJlIFJ1bGVzCit+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+CisKK0ZvciB0aGUgbW9zdCBwYXJ0LCBwYWNrYWdlIHJ1bGVzIHdvcmsganVzdCBhcyBl eHBlY3RlZCB3aGVuIG11bHRpcGxlIGxheWVycworYXJlIHVzZWQuIEFueSBsYXllciBzcGVjaWZp YyBoYW5kbGluZyBpcyBkb25lIGltcGxpY2l0bHkgYnkgUFRYZGlzdC4KK0hvd2V2ZXIsIHRoZXJl IGFyZSBhIGZldyB0aGluZ3MgdGhhdCBuZWVkIHNwZWNpYWwgaGFuZGxpbmcuCisKK1RoZSB2YXJp YWJsZXMgOnJlZjpgUFRYRElTVF9XT1JLU1BBQ0U8cHR4ZGlzdF93b3Jrc3BhY2U+YCBhbmQKKzpy ZWY6YFBUWERJU1RfUExBVEZPUk1DT05GSUdESVJgPHB0eGRpc3RfcGxhdGZvcm1jb25maWdkaXI+ YCBhbHdheXMgcmVmZXIKK3RvIHRoZSBkaXJlY3RvcmllcyBpbiB0aGUgdG9wIGxheWVyLiBUaGVz ZSB2YXJpYWJsZXMgbWlnaHQgYmUgdXNlZCBpbiBydWxlcworZmlsZXMgbGlrZSB0aGlzOgorCisu LiBjb2RlLWJsb2NrOjogbWFrZQorCisgICBNWV9LRVJORUxfQ09ORklHIDo9ICQoUFRYRElTVF9Q TEFURk9STUNPTkZJR0RJUikva2VybmVsY29uZmlnLnNwZWNpYWwKKworSWYgdGhlIHJlZmVyZW5j ZWQgZmlsZSBpcyBpbiBhbnkgbGF5ZXIgYnV0IHRoZSB0b3Agb25lIHRoZW4gaXQgd2lsbCBub3QK K2JlIGZvdW5kLiBUbyBoYW5kbGUgdXNlLWNhc2VzIGxpa2UgdGhpcywgdGhlIG1hY3JvcyA6cmVm OmBpbl9wYXRoYCBhbmQKKzpyZWY6YGluX3BsYXRmb3JtY29uZmlnZGlyYCBjYW4gYmUgdXNlZDoK KworLi4gY29kZS1ibG9jazo6IG1ha2UKKworICAgTVlfS0VSTkVMX0NPTkZJRyA6PSAkKGNhbGwg cHR4L2luLXBsYXRmb3JtY29uZmlnZGlyLCBrZXJuZWxjb25maWcuc3BlY2lhbCkKKworVGhpcyB3 YXksIHRoZSBsYXllcnMgYXJlIHNlYXJjaGVkIHRvcCB0byBib3R0b20gdW50aWwgdGhlIGNvbmZp ZyBmaWxlIGlzCitmb3VuZC4KKworUFRYZGlzdCBDb25maWcgRmlsZXMgd2l0aCBNdWx0aXBsZSBM YXllcnMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK0luIG1h bnkgY2FzZXMgYSBsYXllciBtYXkgd2FudCB0byBtb2RpZnkgdGhlICoqcHR4Y29uZmlnKiogYnkg ZW5hYmxpbmcgb3IKK2Rpc2FibGluZyBzb21lIG9wdGlvbnMuIEFueSBjaGFuZ2VzIG11c3QgYmUg cHJvcGFnYXRlZCB0aHJvdWdoIHRoZSB3aG9sZQorbGF5ZXIgc3RhY2suCisKK1RoZSBmZWF0dXJl cyBhbmQgd29ya2Zsb3cgZGVzY3JpYmVkIGhlcmUgYXBwbHkgdG8gdGhlICoqcHR4Y29uZmlnKios IHRoZQorKipwbGF0Zm9ybWNvbmZpZyoqIGFuZCBhbnkgKipjb2xsZWN0aW9uY29uZmlnKiogdXNl ZCBpbiB0aGUgcHJvamVjdC4KKworVG8gZG8gdGhpcywgUFRYZGlzdCBzdG9yZXMgYSBkZWx0YSBj b25maWcgdG8gdGhlIGxheWVyIGJlbG93IGFuZCBhIGZ1bGwKK2NvbmZpZyBmaWxlIGluIGVhY2gg bGF5ZXIuIElmIHRoZSB0d28gZmlsZXMgYXJlIG1pc3NpbmcgdGhlbiB0aGUgY29uZmlnIGlzCit1 bmNoYW5nZWQuIFRoZSBib3R0b20gbGF5ZXIgaGFzIG9ubHkgdGhlIGNvbmZpZyBmaWxlIGFuZCBu byBkZWx0YS4KKworQXQgcnVudGltZSwgUFRYZGlzdCB3aWxsIGFsd2F5cyB1c2UgdGhlIGZ1bGwg Y29uZmlnIGZpbGUgaW4gdGhlIHRvcCBsYXllcgord2hlcmUgdGhlIGNvbmZpZyBleGlzdHMuIEJl Zm9yZSBkb2luZyBzbywgaXQgd2lsbCBlbnN1cmUgdGhhdCB0aGUgY29uZmlnIGlzCitjb25zaXN0 ZW50IGFjcm9zcyBhbGwgbGF5ZXJzLiBUaGlzIG1lYW5zIHRoYXQsIGZvciBhbnkgbGF5ZXIgdGhh dCBjb250YWlucyBhCitkZWx0YSBjb25maWcsIHRoZSBmdWxsIGNvbmZpZyBmaWxlIG9mIHRoZSBs YXllciBiZWxvdyBoYXMgbm90IGNoYW5nZWQgc2luY2UKK3RoZSBkZWx0YSBjb25maWcgd2FzIGxh c3QgdXBkYXRlZC4gSWYgYW55IGluY29uc2lzdGVuY3kgaXMgZGV0ZWN0ZWQsCitQVFhkaXN0IHdp bGwgYWJvcnQuCisKK0ZvciBhbnkgY29tbWFuZCB0aGF0IG1vZGlmaWVzIHRoZSBjb25maWcgZmls ZSwgZXhjZXB0IGBgb2xkY29uZmlnYGAsCitQVFhkaXN0IHdpbGwgdXNlIGtjb25maWcgaW1wbGlj aXRseSBvbiBhbGwgbGF5ZXJzIHRvIGNoZWNrIGlmIHRoZSBjb25maWcKK2ZvciB0aGlzIGxheWVy IGlzIHVwIHRvIGRhdGUuIFRoaXMgaXMgYSBzdHJpY3RlciBjaGVjayB0aGFuIHRoZSBjb25zaXN0 ZW5jeQordmFsaWRhdGlvbi4gRm9yIGV4YW1wbGUsIGlmIGEgbmV3IHBhY2thZ2Ugd2FzIGFkZGVk IHRvIGEgbGF5ZXIgd2l0aG91dAordXBkYXRpbmcgdGhlICoqcHR4Y29uZmlnKiogdGhlbiB0aGlz IHdpbGwgYmUgZGV0ZWN0ZWQgYW5kIFBUWGRpc3Qgd2lsbAorYWJvcnQuIElmIGFsbCBvdGhlciBs YXllcnMgYXJlIHVwIHRvIGRhdGUsIHRoZW4gUFRYZGlzdCB3aWxsIHVzZSB0aGUgZGVsdGEKK2Nv bmZpZyBvZiB0aGUgdG9wIGxheWVyLCBhcHBseSBpdCB0byB0aGUgZnVsbCBjb25maWcgb2YgdGhl IGxheWVyIGJlbG93CithbmQgZXhlY3V0ZSB0aGUgc3BlY2lmaWVkIGNvbW1hbmQgd2l0aCB0aGUg cmVzdWx0aW5nIGNvbmZpZyBmaWxlLgorCisuLiBub3RlOjogSWYgdGhlIGNvbmZpZyBmaWxlIGRv ZXMgbm90IGV4aXN0IHlldCBvbiB0aGUgdG9wIGxheWVyLCB0aGVuIGl0CisgIHdpbGwgYmUgY3Jl YXRlZCBpZiBjaGFuZ2VzIHRvIHRoZSBjb25maWcgYXJlIG1hZGUuIFNpbWlsYXJseSB0aGUgY29u ZmlnCisgIHdpbGwgYmUgZGVsZXRlZCBpZiB0aGUgZGVsdGEgaXMgZW1wdHkgYWZ0ZXIgdGhlIGNo YW5nZXMuIEluIGVpdGhlciBjYXNlCisgIGl0IG1heSBiZSBuZWNlc3NhcnkgdG8gdXBkYXRlIGFu eSBgYHNlbGVjdGVkXypgYCBsaW5rIHRvIHBvaW50IHRvIHRoZQorICBjb3JyZWN0IGNvbmZpZy4K KworSWYgUFRYZGlzdCBkZXRlY3RzIGFuIGluY29uc2lzdGVuY3kgb3IgYW4gb3V0IG9mIGRhdGUg Y29uZmlnIGZpbGUgdGhlbiBpdAorbXVzdCBiZSB1cGRhdGVkIGJlZm9yZSB0aGV5IGNhbiBiZSB1 c2VkLiBUaGlzIGNhbiBiZSBkb25lIGJ5IHVzaW5nIHRoZQorYGBvbGRjb25maWdgYCBjb21tYW5k LiBJbiB0aGlzIHNwZWNpYWwgY2FzZSwgUFRYZGlzdCB3aWxsIGl0ZXJhdGUgZnJvbSB0aGUKK2Jv dHRvbSB0byB0aGUgdG9wIGxheWVyIGFuZCBydW4gYGBvbGRjb25maWdgYCBmb3IgZWFjaCBvZiB0 aGVtLiBJdCB3aWxsCit1c2UgdGhlIGRlbHRhIGNvbmZpZyBhcHBsaWVkIHRvIHRoZSBmdWxsIGNv bmZpZyBvZiB0aGUgbGF5ZXIgYmVsb3cgYXQgZWFjaAorc3RlcC4gVGhpcyBtZWFucyB0aGF0IGl0 J3MgcG9zc2libGUgdG8gZW5hYmxlIG9yIGRpc2FibGUgYSBvcHRpb24gaW4gdGhlCitib3R0b20g bGF5ZXIgYW5kIGBgb2xkY29uZmlnYGAgd2lsbCBwcm9wYWdhdGUgdGhpcyBjaGFuZ2UgdG8gYWxs IG90aGVyCitsYXllcnMuCisKK1BhY2thZ2VzIHdpdGgga2NvbmZpZyBCYXNlZCBDb25maWcgRmls ZXMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworRm9yIHBhY2th Z2VzIHN1Y2ggYXMgdGhlIExpbnV4IGtlcm5lbCB0aGF0IGhhdmUga2NvbmZpZyBiYXNlZCBjb25m aWcgZmlsZXMsCithIGxvdCBvZiB0aGUgaW5mcmFzdHJ1Y3R1cmUgdG8gaGFuZGxlIGNvbmZpZyBm aWxlcyBhbmQgZGVsdGFzIGFjcm9zcworbXVsdGlwbGUgbGF5ZXJzIGNhbiBiZSByZXVzZWQuIENv bnNpc3RlbmN5IHZhbGlkYXRpb24gaXMgZG9uZSBpbXBsaWNpdGx5CithbmQgYGBtZW51Y29uZmln YGAgYW5kIG90aGVyIGtjb25maWcgY29tbWFuZHMgd2lsbCB1c2UgY29uZmlnIGZpbGVzIGFuZAor ZGVsdGFzIGFzIGV4cGVjdGVkLgorCitJdCdzIG5vdCBwb3NzaWJsZSB0byBpbXBsaWNpdGx5IHJ1 biBgYG9sZGNvbmZpZ2BgIG9uIG90aGVyIGxheWVycyAodGhpcyBtYXkKK3JlcXVpcmUgYSBkaWZm ZXJlbnQgc291cmNlIHRyZWUgZm9yIHRoZSBwYWNrYWdlcyksIHNvIGFueSBpbmNvbnNpc3RlbmNp ZXMKK211c3QgYmUgcmVzb2x2ZWQgbWFudWFsbHkgYnkgcnVubmluZyBgYG9sZGNvbmZpZ2BgIGV4 cGxpY2l0bHkgb24gZWFjaAorbGF5ZXIuCisKK1RoZSBtYWtlIG1hY3JvcyB0aGF0IHByb3ZpZGUg dGhlc2UgZmVhdHVyZXMgYXJlIGN1cnJlbnRseSB1c2VkIGJ5IHRoZQorYmFyZWJveCBhbmQga2Vy bmVsIHBhY2thZ2VzIGFuZCB0ZW1wbGF0ZXMuCmRpZmYgLS1naXQgYS9kb2MvZGV2X21hbnVhbC5y c3QgYi9kb2MvZGV2X21hbnVhbC5yc3QKaW5kZXggNTA4MjdiNmE5Li40N2E3N2E5YmUgMTAwNjQ0 Ci0tLSBhL2RvYy9kZXZfbWFudWFsLnJzdAorKysgYi9kb2MvZGV2X21hbnVhbC5yc3QKQEAgLTUs MTc1OCArNSwxMiBAQCBQVFhkaXN0IERldmVsb3BlcuKAmXMgTWFudWFsCiAKIFRoaXMgY2hhcHRl ciBzaG93cyBhbGwgKG9yIG1vc3QpIG9mIHRoZSBkZXRhaWxzIG9mIGhvdyBQVFhkaXN0IHdvcmtz LgogCi0tICB3aGVyZSBhcmUgdGhlIGZpbGVzIHN0b3JlZCB0aGF0IFBUWGRpc3QgdXNlcyB3aGVu IGJ1aWxkaW5nIHBhY2thZ2VzCi0KLS0gIGhvdyBwYXRjaGluZyB3b3JrcwotCi0tICB3aGVyZSBp cyBQVFhkaXN0IGZldGNoaW5nIGEgcGFja2FnZeKAmXMgcnVuLXRpbWUgY29uZmlndXJhdGlvbiBm aWxlcwotICAgZnJvbQotCi0tICBob3cgdG8gY29udHJvbCBhIHBhY2thZ2XigJlzIGJ1aWxkIHN0 YWdlcwotCi0tICBob3cgdG8gYWRkIG5ldyBwYWNrYWdlcwotCi0uLiBfZGlyZWN0b3J5X2hpZXJh cmNoeToKLQotUFRYZGlzdOKAmXMgRGlyZWN0b3J5IEhpZXJhcmNoeQotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KLQotLi4gbm90ZTo6IFJlZmVyZW5jZWQgZGlyZWN0b3JpZXMgYXJlIG1l YW50IHJlbGF0aXZlIHRvIHRoZSBQVFhkaXN0IG1haW4KLSAgaW5zdGFsbGF0aW9uIGxvY2F0aW9u IChpZiBub3Qgb3RoZXJ3aXNlIHN0YXRlZCkuIElmIG5vdCBjb25maWd1cmVkCi0gIGRpZmZlcmVu dGx5LCB0aGlzIG1haW4gcGF0aCBpcyBgYC91c3IvbG9jYWwvbGliL3B0eGRpc3QtfHB0eGRpc3RW ZW5kb3JWZXJzaW9ufGBgCi0KLVJ1bGUgRmlsZXMKLX5+fn5+fn5+fn4KLQotV2hlbiBidWlsZGlu ZyBhIHNpbmdsZSBwYWNrYWdlLCBQVFhkaXN0IG5lZWRzIHRoZSBpbmZvcm1hdGlvbiBvbiBob3cg dG8KLWhhbmRsZSB0aGUgcGFja2FnZSwgaS5lLiBvbiBob3cgdG8gZ2V0IGl0IGZyb20gdGhlIHNv dXJjZSB1cCB0byB3aGF0IHRoZQotdGFyZ2V0IG5lZWRzIGF0IHJ1bi10aW1lLiBUaGlzIGluZm9y bWF0aW9uIGlzIHByb3ZpZGVkIGJ5IGEgcnVsZSBmaWxlIHBlcgotcGFja2FnZS4KLQotUFRYZGlz dCBjb2xsZWN0cyBhbGwgcnVsZSBmaWxlcyBpbiBpdHMgYGBydWxlcy9gYCBkaXJlY3RvcnkuIFdo ZW5ldmVyCi1QVFhkaXN0IGJ1aWxkcyBzb21ldGhpbmcsIGFsbCB0aGVzZSBydWxlIGZpbGVzIGFy ZSBzY2FubmVkIGF0IG9uY2UuCi1UaGVzZSBydWxlIGZpbGVzIGFyZSBnbG9iYWwgcnVsZSBmaWxl cywgdmFsaWQgZm9yIGFsbCBwcm9qZWN0cy4gUFRYZGlzdAotdXNlcyBhIG1lY2hhbmlzbSB0byBi ZSBhYmxlIHRvIGFkZCBvciByZXBsYWNlIHNwZWNpZmljIHJ1bGUgZmlsZXMgb24gYQotcGVyIHBy b2plY3QgYmFzZS4gSWYgYSBgYHJ1bGVzL2BgIGRpcmVjdG9yeSBleGlzdHMgaW4gdGhlIGN1cnJl bnQKLXByb2plY3QsIGl0cyBjb250ZW50IGlzIHNjYW5uZWQgdG9vLiBUaGVzZSBwcm9qZWN0IGxv Y2FsIHJ1bGUgZmlsZXMgYXJlCi11c2VkIGluIGFkZGl0aW9uIHRvIHRoZSBnbG9iYWwgcnVsZSBm aWxlcyBvciDigJMgaWYgdGhleSBhcmUgdXNpbmcgdGhlCi1zYW1lIG5hbWUgYXMgYSBnbG9iYWwg cnVsZSBmaWxlIOKAkyAqKnJlcGxhY2luZyoqIHRoZSBnbG9iYWwgcnVsZSBmaWxlLgotCi1UaGUg cmVwbGFjaW5nIG1lY2hhbmlzbSBjYW4gYmUgdXNlZCB0byBleHRlbmQgb3IgYWRhcHQgcGFja2Fn ZXMgZm9yCi1zcGVjaWZpYyBwcm9qZWN0IHJlcXVpcmVtZW50cy4gT3IgaXQgY2FuIGJlIHVzZWQg Zm9yIGJ1ZyBmaXhpbmcgYnkKLWJhY2twb3J0aW5nIHJ1bGUgZmlsZXMgZnJvbSBtb3JlIHJlY2Vu dCBQVFhkaXN0IHJldmlzaW9ucyB0byBwcm9qZWN0cwotdGhhdCBhcmUgc3R1Y2sgdG8gYW4gb2xk ZXIgUFRYZGlzdCByZXZpc2lvbiBmb3IgbWFpbnRlbmFuY2Ugb25seS4KLQotUGF0Y2ggU2VyaWVz Ci1+fn5+fn5+fn5+fn4KLQotVGhlcmUgYXJlIG1hbnkgcGFja2FnZXMgaW4gdGhlIHdpbGQgdGhh dCBhcmUgbm90IGNyb3NzIGJ1aWxkIGF3YXJlLiBUaGV5Ci1mYWlsIGNvbXBpbGluZyBzb21lIGZp bGVzLCB1c2Ugd3JvbmcgaW5jbHVkZSBwYXRocyBvciB0cnkgdG8gbGluawotYWdhaW5zdCBob3N0 IGxpYnJhcmllcy4gVG8gYmUgc3VjY2Vzc2Z1bCBpbiB0aGUgZW1iZWRkZWQgd29ybGQsIHRoZXNl Ci10eXBlcyBvZiBmYWlsdXJlcyBtdXN0IGJlIGZpeGVkLiBJZiByZXF1aXJlZCwgUFRYZGlzdCBw cm92aWRlcyBzdWNoCi1maXhlcyBwZXIgcGFja2FnZS4gVGhleSBhcmUgb3JnYW5pemVkIGluICpw YXRjaCBzZXJpZXMqIGFuZCBjYW4gYmUgZm91bmQKLWluIGEgYGBwYXRjaGVzL2BgIGRpcmVjdG9y eSB3aXRoaW4gYSBzdWJkaXJlY3RvcnkgdXNpbmcgdGhlIHNhbWUgbmFtZQotYXMgdGhlIHBhY2th Z2UgaXRzZWxmLgotCi1QVFhkaXN0IHVzZXMgdGhlIHV0aWxpdHkgYGBwYXRjaGBgIG9yIGBgcXVp bHRgYCAob3IgYGBnaXRgYCBvbiBkZW1hbmQpIHRvIGFwcGx5Ci1hbiBleGlzdGluZyBwYXRjaCBz ZXJpZXMgYWZ0ZXIgZXh0cmFjdGluZyB0aGUgYXJjaGl2ZS4gU28sIGV2ZXJ5IHBhdGNoIHNlcmll cwotY29udGFpbnMgYSBzZXQgb2YgcGF0Y2hlcyBhbmQgb25lIGBgc2VyaWVzYGAgZmlsZSB0byBk ZWZpbmUgdGhlIG9yZGVyIGluCi13aGljaCB0aGUgcGF0Y2hlcyBtdXN0IGJlIGFwcGxpZWQuCi0K LS4uIG5vdGU6OiBQYXRjaGVzIGNhbiBiZSBjb21wcmVzc2VkLgotCi1QYXRjaGVzIGFyZSBsb29r ZWQgZm9yIGF0IHNldmVyYWwgbG9jYXRpb25zOgotCi0xLiAgdGhlIGBgcGF0Y2hlcy9gYCBmb2xk ZXIgaW4geW91ciBCU1AgKGBgJHtQVFhESVNUX1dPUktTUEFDRX0vcGF0Y2hlc2BgKQotCi0yLiAg dGhlIGZvbGRlciBgYHBhdGNoZXMvYGAgZm9sZGVyIHJlbGF0aXZlIHRvIHlvdXIgc2VsZWN0ZWQg cGxhdGZvcm1jb25maWcKLSAgICBmaWxlIChgYCR7UFRYRElTVF9QTEFURk9STUNPTkZJR0RJUn0v cGF0Y2hlc2BgKS4gSWYgeW91ciBwbGF0Zm9ybWNvbmZpZwotICAgIGZpbGUgaXMgYXQgYGBjb25m aWdzL3xwdHhkaXN0UGxhdGZvcm1Db25maWdEaXJ8L3BsYXRmb3JtY29uZmlnYGAsIHRoaXMKLSAg ICBwYXRjaCBmb2xkZXIgd2lsbCBiZSBgYGNvbmZpZ3MvfHB0eGRpc3RQbGF0Zm9ybUNvbmZpZ0Rp cnwvcGF0Y2hlcy9gYC4KLQotMy4gIHRoZSBgYHBhdGNoZXMvYGAgZm9sZGVyIGluIFBUWGRpc3Qn cyBtYWluIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkKLSAgICAoYGAke1BUWERJU1RfVE9QRElSfS9w YXRjaGVzYGApCi0KLVRoZSBsaXN0IGlzIHRyaWVkIGZyb20gZmlyc3QgdG8gbGFzdC4KLUlmIG5v IHBhdGNoZXMgd2VyZSBmb3VuZCBpbiBvbmUgb2YgdGhlIGxvY2F0aW9ucywgdGhlIG5leHQgbG9j YXRpb24gaXMgdHJpZWQuCi1XaGVuIGFsbCBsb2NhdGlvbnMgaGF2ZSBiZWVuIHRyaWVkIHVuc3Vj Y2Vzc2Z1bGx5LCB0aGUgcGFja2FnZSBpcyBub3QgcGF0Y2hlZC4KLQotVGhpcyBzZWFyY2ggb3Jk ZXIgY2FuIGJlIHVzZWQgdG8gdXNlIHNwZWNpZmljIHBhdGNoIHNlcmllcyBmb3Igc3BlY2lmaWMK LWNhc2VzLgotCi0tICBwbGF0Zm9ybSBzcGVjaWZpYwotCi0tICBwcm9qZWN0IHNwZWNpZmljCi0K LS0gIGNvbW1vbiBjYXNlCi0KLS0gIGJ1ZyBmaXhpbmcKLQotVGhlICpidWcgZml4aW5nKiBjYXNl IGlzIHVzZWQgaW4gYWNjb3JkYW5jZSB0byBhIHJlcGxhY2VtZW50IG9mIGEgcnVsZQotZmlsZS4g SWYgdGhpcyB3YXMgZG9uZSBkdWUgdG8gYSBiYWNrcG9ydCwgYW5kIHRoZSBtb3JlIHJlY2VudCBQ VFhkaXN0Ci1yZXZpc2lvbiBkb2VzIG5vdCBvbmx5IGV4Y2hhbmdlIHRoZSBydWxlIGZpbGUgYnV0 IGFsc28gdGhlIHBhdGNoIHNlcmllcywKLXRoaXMgbWVjaGFuaXNtIGVuc3VyZXMgdGhhdCBib3Ro IHJlbGV2YW50IHBhcnRzIGNhbiBiZSB1cGRhdGVkIGluIHRoZQotcHJvamVjdC4KLQotUnVudGlt ZSBDb25maWd1cmF0aW9uCi1+fn5+fn5+fn5+fn5+fn5+fn5+fn4KLQotTWFueSBwYWNrYWdlcyBh cmUgdXNpbmcgcnVuLXRpbWUgY29uZmlndXJhdGlvbiBmaWxlcyBhbG9uZyB3aXRoIHRoZWlyCi1l eGVjdXRhYmxlcyBhbmQgbGlicmFyaWVzLiBQVFhkaXN0IHByb3ZpZGVzIGRlZmF1bHQgY29uZmln dXJhdGlvbiBmaWxlcwotZm9yIHRoZSBtb3N0IGNvbW1vbiBjYXNlcy4gVGhlc2UgZmlsZXMgY2Fu IGJlIGZvdW5kIGluIHRoZQotYGBwcm9qZWN0cm9vdC9ldGNgYCBkaXJlY3RvcnkgYW5kIHRoZXkg YXJlIHVzaW5nIHRoZSBzYW1lIG5hbWVzIGFzIHRoZSBvbmVzCi1hdCBydW4tdGltZSAoYW5kIHRo ZWlyIGluc3RhbGwgZGlyZWN0b3J5IG9uIHRoZSB0YXJnZXQgc2lkZSB3aWxsIGFsc28gYmUKLWBg L2V0Y2BgKS4KLQotQnV0IHNvbWUgb2YgdGhlc2UgZGVmYXVsdCBjb25maWd1cmF0aW9uIGZpbGVz IGFyZSBlbXB0eSwgZHVlIHRvIHRoZQotYWJzZW5jZSBvZiBhIGNvbW1vbiBjYXNlLiBUaGUgcHJv amVjdCBtdXN0IHByb3ZpZGUgcmVwbGFjZW1lbnRzIG9mIHRoZXNlCi1maWxlcyB3aXRoIGEgbW9y ZSB1c2VmdWwgY29udGVudCBpbiBldmVyeSBjYXNlIHdoZXJlIHRoZSAoZW1wdHkpIGRlZmF1bHQK LW9uZSBkb2VzIG5vdCBtZWV0IHRoZSB0YXJnZXTigJlzIHJlcXVpcmVtZW50cy4KLQotUFRYZGlz dCBmaXJzdCBzZWFyY2hlcyBpbiB0aGUgbG9jYWwgcHJvamVjdCBkaXJlY3RvcnkgZm9yIGEgc3Bl Y2lmaWMKLWNvbmZpZ3VyYXRpb24gZmlsZSBhbmQgZmFsbHMgYmFjayB0byB1c2UgdGhlIGRlZmF1 bHQgb25lIGlmIG5vbmUgZXhpc3RzCi1sb2NhbGx5LiBSZWZlciBzZWN0aW9uIDpyZWY6YGluc3Rh bGxfYWx0ZXJuYXRpdmVgIGZvciBmdXJ0aGVyCi1kZXRhaWxzIGluIHdoaWNoIG9yZGVyIGFuZCBs b2NhdGlvbnMgUFRYZGlzdCBzZWFyY2hlcyBmb3IgdGhlc2Uga2luZCBvZiBmaWxlcy4KLQotQSBw b3B1bGFyIGV4YW1wbGUgaXMgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBgYC9ldGMvZnN0YWJgYC4g VGhlIGRlZmF1bHQKLW9uZSBjb21pbmcgd2l0aCBQVFhkaXN0IHdvcmtzIGZvciB0aGUgbW9zdCBj b21tb24gY2FzZXMuIEJ1dCBpZiBvdXIKLXByb2plY3QgcmVxdWlyZXMgYSBzcGVjaWFsIHNldHVw LCB3ZSBjYW4ganVzdCBjb3B5IHRoZSBkZWZhdWx0IG9uZSB0bwotdGhlIGxvY2FsIGBgLi9wcm9q ZWN0cm9vdC9ldGMvZnN0YWJgYCwgbW9kaWZ5IGl0IGFuZCB3ZSBhcmUgZG9uZS4gVGhlCi1uZXh0 IHRpbWUgUFRYZGlzdCBidWlsZHMgdGhlIHJvb3QgZmlsZXN5c3RlbSBpdCB3aWxsIHVzZSB0aGUg bG9jYWwKLWBgZnN0YWJgYCBpbnN0ZWFkIG9mIHRoZSBnbG9iYWwgKGRlZmF1bHQpIG9uZS4KLQot Li4gX2FkZGluZ19uZXdfcGFja2FnZXM6Ci0KLUFkZGluZyBOZXcgUGFja2FnZXMKLS0tLS0tLS0t LS0tLS0tLS0tLS0KLQotUFRYZGlzdCBwcm92aWRlcyBhIGh1Z2UgYW1vdW50IG9mIGFwcGxpY2F0 aW9ucyBzdWZmaWNpZW50IGZvciB0aGUgbW9zdAotZW1iZWRkZWQgdXNlIGNhc2VzLiBCdXQgdGhl cmUgaXMgc3RpbGwgbmVlZCBmb3Igc29tZSBmYW5jeSBuZXcgcGFja2FnZXMuCi1UaGlzIHNlY3Rp b24gZGVzY3JpYmVzIHRoZSBzdGVwcyBhbmQgdGhlIGJhY2tncm91bmQgb24gaG93IHRvIGludGVn cmF0ZQotbmV3IHBhY2thZ2VzIGludG8gdGhlIHByb2plY3QuCi0KLUF0IGZpcnN0IGEgc3VtbWFy eSBhYm91dCBwb3NzaWJsZSBhcHBsaWNhdGlvbiB0eXBlcyB3aGljaCBQVFhkaXN0IGNhbgotaGFu ZGxlOgotCi0tICAqKmhvc3QgdHlwZSoqOiBUaGlzIGtpbmQgb2YgcGFja2FnZSBpcyBidWlsdCB0 byBydW4gb24gdGhlIGJ1aWxkCi0gICBob3N0LiBNb3N0IG9mIHRoZSB0aW1lIHN1Y2ggYSBwYWNr YWdlIGlzIG5lZWRlZCBpZiBhbm90aGVyCi0gICB0YXJnZXQtcmVsZXZhbnQgcGFja2FnZSBuZWVk cyB0byBnZW5lcmF0ZSBzb21lIGRhdGEuIEZvciBleGFtcGxlIHRoZQotICAgKmdsaWIqIHBhY2th Z2UgZGVwZW5kcyBvbiBpdHMgb3duIHRvIGNyZWF0ZSBzb21lIGRhdGEuIEJ1dCBpZiBpdCBpcwot ICAgY29tcGlsZWQgZm9yIHRoZSB0YXJnZXQsIGl0IGNhbuKAmXQgZG8gc28uIFRoYXTigJlzIHdo eSBhIGhvc3QgZ2xpYgotICAgcGFja2FnZSBpcyByZXF1aXJlZCB0byBwcm92aWRlIHRoZXNlIHV0 aWxpdGllcyBydW5uYWJsZSBvbiB0aGUgYnVpbGQKLSAgIGhvc3QuIEl0IHNvdW5kcyBzdHJhbmdl IHRvIGJ1aWxkIGEgaG9zdCBwYWNrYWdlLCBldmVuIGlmIG9uIHRoZSBidWlsZAotICAgaG9zdCBz dWNoIHV0aWxpdGllcyBhcmUgYWxyZWFkeSBpbnN0YWxsZWQuIEJ1dCB0aGlzIHdheSBlbnN1cmVz IHRoYXQKLSAgIHRoZXJlIGFyZSBubyBkZXBlbmRlbmNpZXMgcmVnYXJkaW5nIHRoZSBidWlsZCBo b3N0IHN5c3RlbS4KLQotLSAgKip0YXJnZXQgdHlwZSoqOiBUaGlzIGtpbmQgb2YgcGFja2FnZSBp cyBidWlsdCBmb3IgdGhlIHRhcmdldC4KLQotLSAgKipjcm9zcyB0eXBlKio6IFRoaXMga2luZCBv ZiBwYWNrYWdlIGlzIGJ1aWx0IGZvciB0aGUgYnVpbGQgaG9zdCwgYnV0Ci0gICBjcmVhdGVzIGFy Y2hpdGVjdHVyZSBzcGVjaWZpYyBkYXRhIGZvciB0aGUgdGFyZ2V0LgotCi0tICAqKnNyYy1hdXRv Y29uZi1wcm9nKio6IFRoaXMga2luZCBvZiBwYWNrYWdlIGlzIGJ1aWx0IGZvciB0aGUgdGFyZ2V0 LgotICAgSXQgaXMgaW50ZW5kZWQgZm9yIGRldmVsb3BtZW50LCBhcyBpdCBkb2VzIG5vdCBoYW5k bGUgYSByZWxlYXNlZAotICAgYXJjaGl2ZSBidXQgYSBwbGFpbiBzb3VyY2UgcHJvamVjdCBpbnN0 ZWFkLiBDcmVhdGluZyBzdWNoIGEgcGFja2FnZQotICAgd2lsbCBhbHNvIGNyZWF0ZSBhIHNtYWxs IGF1dG90b29scyBiYXNlZCBzb3VyY2UgdGVtcGxhdGUgcHJvamVjdCBvbgotICAgZGVtYW5kIHRv IGdpdmUgdGhlIGRldmVsb3BlciBhbiBlYXN5IHBvaW50IHRvIHN0YXJ0LiBUaGlzIHRlbXBsYXRl IGlzCi0gICBwcmVwYXJlZCB0byBidWlsZCBhIHNpbmdsZSBleGVjdXRhYmxlIHByb2dyYW0uIEZv ciBmdXJ0aGVyIGRldGFpbHMgcmVmZXIKLSAgIHNlY3Rpb24gOnJlZjpgYWRkaW5nX3NyY19hdXRv Y29uZl9leGVjYC4KLQotLSAgKipzcmMtYXV0b2NvbmYtbGliKio6IFRoaXMga2luZCBvZiBwYWNr YWdlIGlzIGJ1aWx0IGZvciB0aGUgdGFyZ2V0LgotICAgSXQgaXMgaW50ZW5kZWQgZm9yIGRldmVs b3BtZW50LCBhcyBpdCBkb2VzIG5vdCBoYW5kbGUgYSByZWxlYXNlZAotICAgYXJjaGl2ZSBidXQg YSBwbGFpbiBzb3VyY2UgcHJvamVjdCBpbnN0ZWFkLiBDcmVhdGluZyBzdWNoIGEgcGFja2FnZQot ICAgd2lsbCBhbHNvIGNyZWF0ZSBhIHNtYWxsIGF1dG90b29scy9saWJ0b29sIGJhc2VkIHNvdXJj ZSB0ZW1wbGF0ZQotICAgcHJvamVjdCBvbiBkZW1hbmQgdG8gZ2l2ZSB0aGUgZGV2ZWxvcGVyIGFu IGVhc3kgcG9pbnQgdG8gc3RhcnQuIFRoaXMKLSAgIHRlbXBsYXRlIGlzIHByZXBhcmVkIHRvIGJ1 aWxkIGEgc2luZ2xlIHNoYXJlZCBsaWJyYXJ5LiBGb3IgZnVydGhlcgotICAgZGV0YWlscyByZWZl ciBzZWN0aW9uIDpyZWY6YGFkZGluZ19zcmNfYXV0b2NvbmZfbGliYC4KLQotLSAgKipzcmMtYXV0 b2NvbmYtcHJvZ2xpYioqOiBUaGlzIGtpbmQgb2YgcGFja2FnZSBpcyBidWlsdCBmb3IgdGhlCi0g ICB0YXJnZXQuIEl0IGlzIGludGVuZGVkIGZvciBkZXZlbG9wbWVudCwgYXMgaXQgZG9lcyBub3Qg aGFuZGxlIGEKLSAgIHJlbGVhc2VkIGFyY2hpdmUgYnV0IGEgcGxhaW4gc291cmNlIHByb2plY3Qg aW5zdGVhZC4gQ3JlYXRpbmcgc3VjaCBhCi0gICBwYWNrYWdlIHdpbGwgYWxzbyBjcmVhdGUgYSBz bWFsbCBhdXRvdG9vbHMvbGlidG9vbCBiYXNlZCB0ZW1wbGF0ZQotICAgcHJvamVjdCBvbiBkZW1h bmQgdG8gZ2l2ZSB0aGUgZGV2ZWxvcGVyIGFuIGVhc3kgcG9pbnQgdG8gc3RhcnQuIFRoaXMKLSAg IHRlbXBsYXRlIGlzIHByZXBhcmVkIHRvIGJ1aWxkIGEgc2luZ2xlIHNoYXJlZCBsaWJyYXJ5IGFu ZCBhIHNpbmdsZQotICAgZXhlY3V0YWJsZSBwcm9ncmFtLiBUaGUgcHJvZ3JhbSB3aWxsIGJlIGxp bmtlZCBhZ2FpbnN0IHRoZSBzaGFyZWQKLSAgIGxpYnJhcnkuIEZvciBmdXJ0aGVyIGRldGFpbHMg cmVmZXIgc2VjdGlvbiA6cmVmOmBhZGRpbmdfc3JjX2F1dG9jb25mX2V4ZWNfbGliYC4KLQotLSAg KipmaWxlKio6IFRoaXMga2luZCBvZiBwYWNrYWdlIGlzIGludGVuZGVkIHRvIGFkZCBhIGZldyBz aW1wbGUgZmlsZXMKLSAgIGludG8gdGhlIGJ1aWxkIHByb2Nlc3MuIFdlIGFzc3VtZSB0aGVzZSBm aWxlcyBkbyBub3QgbmVlZCBhbnkKLSAgIHByb2Nlc3NpbmcsIHRoZXkgYXJlIHJlYWR5IHRvIHVz ZSBhbmQgbXVzdCBvbmx5IGJlIHByZXNlbnQgaW4gdGhlCi0gICBidWlsZCBwcm9jZXNzIG9yIGF0 IHJ1bi10aW1lIChIVE1MIGZpbGVzIGZvciBleGFtcGxlKS4gUmVmZXIgdG8gdGhlCi0gICBzZWN0 aW9uIDpyZWY6YGFkZGluZ19maWxlc2AgZm9yIGZ1cnRoZXIgZGV0YWlscyBvbiBob3cgdG8gdXNl Ci0gICBpdC4KLQotLSAgKipzcmMtbWFrZS1wcm9nKio6IFRoaXMga2luZCBvZiBwYWNrYWdlIGlz IGJ1aWx0IGZvciB0aGUgdGFyZ2V0LiBJdOKAmXMKLSAgIGludGVuZGVkIGZvciBkZXZlbG9wbWVu dCwgYXMgaXQgZG9lcyBub3QgaGFuZGxlIGEgcmVsZWFzZWQgYXJjaGl2ZQotICAgYnV0IGEgcGxh aW4gc291cmNlIHByb2plY3QgaW5zdGVhZC4gQ3JlYXRpbmcgc3VjaCBhIHBhY2thZ2Ugd2lsbCBh bHNvCi0gICBjcmVhdGUgYSBzaW1wbGUgbWFrZWZpbGUtYmFzZWQgdGVtcGxhdGUgcHJvamVjdCB0 aGUgZGV2ZWxvcGVyIGNhbiB1c2UKLSAgIGFzIGEgc3RhcnRpbmcgcG9pbnQgZm9yIGRldmVsb3Bt ZW50LgotCi0tICAqKnNyYy1jbWFrZS1wcm9nKio6IFRoaXMga2luZCBvZiBwYWNrYWdlIGlzIGJ1 aWx0IGZvciB0aGUgdGFyZ2V0LgotICAgSXTigJlzIGludGVuZGVkIGZvciBkZXZlbG9wbWVudHMg YmFzZWQgb24gdGhlICpjbWFrZSogYnVpbGRzeXN0ZW0uCi0gICBWYXJpb3VzIHByb2plY3RzIGFy ZSB1c2luZyAqY21ha2UqIGluc3RlYWQgb2YgKm1ha2UqIGFuZCBjYW4gYmUgYnVpbHQKLSAgIHdp dGggdGhpcyBwYWNrYWdlIHR5cGUuIFBUWGRpc3Qgd2lsbCBwcmVwYXJlIGl0IHRvIGNvbXBpbGUg c291cmNlcyBpbgotICAgYWNjb3JkYW5jZSB0byB0aGUgdGFyZ2V0IGxpYnJhcmllcyBhbmQgdGhl aXIgc2V0dGluZ3MuIENyZWF0aW5nIHN1Y2gKLSAgIGEgcGFja2FnZSB3aWxsIGFsc28gY3JlYXRl IGEgc2ltcGxlIHRlbXBsYXRlIHByb2plY3QgdG8gYmUgdXNlZCBhcyBhCi0gICBzdGFydGluZyBw b2ludCBmb3IgZGV2ZWxvcG1lbnQuCi0KLS0gICoqc3JjLXFtYWtlLXByb2cqKjogVGhpcyBraW5k IG9mIHBhY2thZ2UgaXMgYnVpbHQgZm9yIHRoZSB0YXJnZXQuCi0gICBJdOKAmXMgaW50ZW5kZWQg Zm9yIGRldmVsb3BtZW50cyBiYXNlZCBvbiB0aGUgKnFtYWtlKiBidWlsZHN5c3RlbS4gSWYKLSAg IHRoZSBkZXZlbG9wZXIgaXMgZ29pbmcgdG8gZGV2ZWxvcCBhIFFUIGJhc2VkIGFwcGxpY2F0aW9u LCB0aGlzIHJ1bGUKLSAgIGlzIHByZXBhcmVkIHRvIGNvbXBpbGUgc291cmNlcyBpbiBhY2NvcmRh bmNlIHRvIHRoZSB0YXJnZXQgbGlicmFyaWVzCi0gICBhbmQgdGhlaXIgc2V0dGluZ3MuIENyZWF0 aW5nIHN1Y2ggYSBwYWNrYWdlIHdpbGwgYWxzbyBjcmVhdGUgYSBzaW1wbGUKLSAgIHRlbXBsYXRl IHByb2plY3QgdG8gYmUgdXNlZCBhcyBhIHN0YXJ0aW5nIHBvaW50IGZvciBkZXZlbG9wbWVudC4K LQotLSAgKipzcmMtbWVzb24tcHJvZyoqOiBUaGlzIGtpbmQgb2YgcGFja2FnZSBpcyBidWlsdCBm b3IgdGhlIHRhcmdldC4KLSAgIEl04oCZcyBpbnRlbmRlZCBmb3IgZGV2ZWxvcG1lbnRzIGJhc2Vk IG9uIHRoZSAqbWVzb24qIGJ1aWxkc3lzdGVtLgotICAgVmFyaW91cyBwcm9qZWN0cyBhcmUgdXNp bmcgKm1lc29uKiB0b2RheSBhbmQgY2FuIGJlIGJ1aWx0Ci0gICB3aXRoIHRoaXMgcGFja2FnZSB0 eXBlLiBQVFhkaXN0IHdpbGwgcHJlcGFyZSBpdCB0byBjb21waWxlIHNvdXJjZXMgaW4KLSAgIGFj Y29yZGFuY2UgdG8gdGhlIHRhcmdldCBsaWJyYXJpZXMgYW5kIHRoZWlyIHNldHRpbmdzLiBDcmVh dGluZyBzdWNoCi0gICBhIHBhY2thZ2Ugd2lsbCBhbHNvIGNyZWF0ZSBhIHNpbXBsZSB0ZW1wbGF0 ZSBwcm9qZWN0IHRvIGJlIHVzZWQgYXMgYQotICAgc3RhcnRpbmcgcG9pbnQgZm9yIGRldmVsb3Bt ZW50LgotCi0tICAqKmZvbnQqKjogVGhpcyBwYWNrYWdlIGlzIGEgaGVscGVyIHRvIGFkZCBYIGZv bnQgZmlsZXMgdG8gdGhlIHJvb3QKLSAgIGZpbGVzeXN0ZW0uIFRoaXMgcGFja2FnZSBkb2VzIG5v dCBjcmVhdGUgYW4gYWRkaXRpb25hbCBJUEtHLCBpbnN0ZWFkCi0gICBpdCBhZGRzIHRoZSBmb250 IHRvIHRoZSBleGlzdGluZyBmb250IElQS0cuIFRoaXMgaW5jbHVkZXMgdGhlCi0gICBnZW5lcmF0 aW9uIG9mIHRoZSBkaXJlY3RvcnkgaW5kZXggZmlsZXMsIHJlcXVpcmVkIGJ5IHRoZSBYb3JnCi0g ICBmcmFtZXdvcmsgdG8gcmVjb2duaXplIHRoZSBmb250IGZpbGUuCi0KLS0gICoqc3JjLWxpbnV4 LWRyaXZlcioqOiBUaGlzIGtpbmQgb2YgcGFja2FnZSBidWlsZHMgYW4gb3V0IG9mIHRyZWUKLSAg IGtlcm5lbCBkcml2ZXIuIEl0IGFsc28gY3JlYXRlcyBhIGRyaXZlciB0ZW1wbGF0ZSB0byBnaXZl IHRoZQotICAgZGV2ZWxvcGVyIGFuIGVhc3kgcG9pbnQgdG8gc3RhcnQuCi0KLS0gICoqa2VybmVs Kio6IFBUWGRpc3QgY29tZXMgd2l0aCB0aGUgYWJpbGl0eSB0byBoYW5kbGUgb25lIGtlcm5lbCBp biBpdHMKLSAgIHBsYXRmb3JtLiBUaGlzIHR5cGUgb2YgcGFja2FnZSBlbmFibGVzIHVzIHRvIGhh bmRsZSBtb3JlIHRoYW4gb25lIGtlcm5lbCBpbgotICAgdGhlIHByb2plY3QuCi0KLS0gICoqYmFy ZWJveCoqOiBQVFhkaXN0IGNvbWVzIHdpdGggdGhlIGFiaWxpdHkgdG8gaGFuZGxlIG9uZSBib290 bG9hZGVyIGluIGl0cwotICAgcGxhdGZvcm0uIFRoaXMgdHlwZSBvZiBwYWNrYWdlIGVuYWJsZXMg dXMgdG8gaGFuZGxlIG1vcmUgdGhhbiBvbmUgYm9vdGxvYWRlcgotICAgaW4gdGhlIHByb2plY3Qu Ci0KLS0gICoqaW1hZ2UtdGd6Kio6IFRoaXMga2luZCBvZiBwYWNrYWdlIGNyZWF0ZXMgYSB0YXIg YmFsbCBmcm9tIGEgbGlzdCBvZgotICAgcGFja2FnZXMuIEl0IGlzIG9mdGVuIHVzZXMgYXMgYW4g aW5wdXQgZm9yIG90aGVyIGltYWdlIHBhY2thZ2VzLgotCi0tICAqKmltYWdlLWdlbmltYWdlKio6 IFRoaXMga2luZCBvZiBwYWNrYWdlIGNhbiBoYW5kbGUgYWxsIGtpbmQgb2YgaW1hZ2UKLSAgIGdl bmVyYXRpb24gZm9yIGFsbW9zdCBldmVyeSB0YXJnZXQgaW5kZXBlbmRlbnQgb2YgaXRzIGNvbXBs ZXhpdHkuCi0KLS0gICoqYmxzcGVjLWVudHJ5Kio6IFBUWGRpc3QgY29tZXMgd2l0aCB0aGUgYWJp bGl0eSB0byBoYW5kbGUgb25lIGJvb3RzcGVjIGluIGl0cwotICAgcGxhdGZvcm0uIFRoaXMgdHlw ZSBvZiBwYWNrYWdlIGVuYWJsZXMgdXMgdG8gaGFuZGxlIG1vcmUgdGhhbiBvbmUgYm9vdHNwZWMK LSAgIGluIHRoZSBwcm9qZWN0LgotCi0uLiBfZm9vX2V4YW1wbGU6Ci0KLVJ1bGUgRmlsZSBDcmVh dGlvbgotfn5+fn5+fn5+fn5+fn5+fn5+Ci0KLVRvIGNyZWF0ZSBzdWNoIGEgbmV3IHBhY2thZ2Us IHdlIGNyZWF0ZSBhIHByb2plY3QgbG9jYWwgYGBydWxlcy9gYAotZGlyZWN0b3J5IGZpcnN0LiBU aGVuIHdlIHJ1bgotCi0uLiBjb2RlLWJsb2NrOjogdGV4dAotCi0gICAgJCBwdHhkaXN0IG5ld3Bh Y2thZ2UgPHBhY2thZ2UgdHlwZT4KLQotSWYgd2Ugb21pdCB0aGUgPGBgcGFja2FnZSB0eXBlYGBc ID4sIFBUWGRpc3Qgd2lsbCBsaXN0IGFsbCBhdmFpbGFibGUKLXBhY2thZ2UgdHlwZXMuCi0KLUlu IG91ciBmaXJzdCBleGFtcGxlLCB3ZSB3YW50IHRvIGFkZCBhIG5ldyB0YXJnZXQgdHlwZSBhcmNo aXZlIHBhY2thZ2UuCi1XaGVuIHJ1bm5pbmcgdGhlCi0KLS4uIGNvZGUtYmxvY2s6OiB0ZXh0Ci0K LSAgICAkIHB0eGRpc3QgbmV3cGFja2FnZSB0YXJnZXQKLQotY29tbWFuZCwgUFRYZGlzdCBhc2tz IGEgZmV3IHF1ZXN0aW9ucyBhYm91dCB0aGlzIHBhY2thZ2UuIFRoaXMKLWluZm9ybWF0aW9uIGlz IHRoZSBiYXNpYyBkYXRhIFBUWGRpc3QgbXVzdCBrbm93IGFib3V0IHRoZSBwYWNrYWdlLgotCi0u LiBjb2RlLWJsb2NrOjogdGV4dAotCi0gICAgcHR4ZGlzdDogY3JlYXRpbmcgYSBuZXcgJ3Rhcmdl dCcgcGFja2FnZToKLQotICAgIHB0eGRpc3Q6IGVudGVyIHBhY2thZ2UgbmFtZS4uLi4uLi46IGZv bwotICAgIHB0eGRpc3Q6IGVudGVyIHZlcnNpb24gbnVtYmVyLi4uLi46IDEuMS4wCi0gICAgcHR4 ZGlzdDogZW50ZXIgVVJMIG9mIGJhc2VkaXIuLi4uLjogaHR0cDovL3d3dy5mb28uY29tL2Rvd25s b2FkL3NyYwotICAgIHB0eGRpc3Q6IGVudGVyIHN1ZmZpeC4uLi4uLi4uLi4uLi46IHRhci5negot ICAgIHB0eGRpc3Q6IGVudGVyIHBhY2thZ2UgYXV0aG9yLi4uLi46IE15IE5hbWUgPG1lQG15LW9y Zy5jb20+Ci0gICAgcHR4ZGlzdDogZW50ZXIgcGFja2FnZSBzZWN0aW9uLi4uLjogcHJvamVjdF9z cGVjaWZpYwotCi1XaGF0IHdlIGhhdmUgdG8gYW5zd2VyOgotCi0tICAqKnBhY2thZ2UgbmFtZSoq OiBBcyB0aGlzIGtpbmQgb2YgcGFja2FnZSBoYW5kbGVzIGEgc291cmNlIGFyY2hpdmUsCi0gICB0 aGUgY29ycmVjdCBhbnN3ZXIgaGVyZSBpcyB0aGUgYmFzZW5hbWUgb2YgdGhlIGFyY2hpdmXigJlz IGZpbGUgbmFtZS4KLSAgIElmIGl0cyBmdWxsIG5hbWUgaXMgYGBmb28tMS4xLjAudGFyLmd6YGAs IHRoZW4gYGBmb29gYCBpcyB0aGUKLSAgIGJhc2VuYW1lIHRvIGVudGVyIGhlcmUuCi0KLS0gICoq dmVyc2lvbiBudW1iZXIqKjogTW9zdCBzb3VyY2UgYXJjaGl2ZXMgYXJlIHVzaW5nIGEgcmVsZWFz ZSBvcgotICAgdmVyc2lvbiBudW1iZXIgaW4gdGhlaXIgZmlsZSBuYW1lLiBJZiBpdHMgZnVsbCBu YW1lIGlzCi0gICBgYGZvby0xLjEuMC50YXIuZ3pgYCwgdGhlbiBgYDEuMS4wYGAgaXMgdGhlIHZl cnNpb24gbnVtYmVyIHRvIGVudGVyCi0gICBoZXJlLgotCi0tICAqKlVSTCBvZiBiYXNlZGlyKio6 IFRoaXMgVVJMIHRlbGxzIFBUWGRpc3Qgd2hlcmUgdG8gZG93bmxvYWQgdGhlCi0gICBzb3VyY2Ug YXJjaGl2ZSBmcm9tIHRoZSB3ZWIgKGlmIG5vdCBhbHJlYWR5IGRvbmUpLiBJZiB0aGUgZnVsbCBV UkwgdG8KLSAgIGRvd25sb2FkIHRoZSBhcmNoaXZlIGlzCi0gICBgYGh0dHA6Ly93d3cuZm9vLmNv bS9kb3dubG9hZC9zcmMvZm9vLTEuMS4wLnRhci5nemBgLCB0aGUgYmFzZWRpcgotICAgcGFydCBg YGh0dHA6Ly93d3cuZm9vLmNvbS9kb3dubG9hZC9zcmNgYCBpcyB0byBiZSBlbnRlcmVkIGhlcmUu Ci0KLS0gICoqc3VmZml4Kio6IEFyY2hpdmVzIGFyZSB1c2luZyB2YXJpb3VzIGZvcm1hdHMgZm9y IGRpc3RyaWJ1dGlvbi4KLSAgIFBUWGRpc3QgdXNlcyB0aGUgKnN1ZmZpeCogZW50cnkgdG8gc2Vs ZWN0IHRoZSBtYXRjaGluZyBleHRyYWN0aW9uCi0gICB0b29sLiBJZiB0aGUgYXJjaGl2ZeKAmXMg ZnVsbCBuYW1lIGlzIGBgZm9vLTEuMS4wLnRhci5nemBgLCB0aGVuCi0gICBgYHRhci5nemBgIGlz IHRoZSBzdWZmaXggdG8gZW50ZXIgaGVyZS4KLQotLSAgKipwYWNrYWdlIGF1dGhvcioqOiBJZiB3 ZSBpbnRlbmQgdG8gY29udHJpYnV0ZSB0aGlzIG5ldyBwYWNrYWdlIHRvCi0gICBQVFhkaXN0IG1h aW5saW5lLCB3ZSBzaG91bGQgYWRkIG91ciBuYW1lIGhlcmUuIFRoaXMgbmFtZSB3aWxsIGJlIHVz ZWQKLSAgIGluIHRoZSBjb3B5cmlnaHQgbm90ZSBvZiB0aGUgcnVsZSBmaWxlIGFuZCB3aWxsIGFs c28gYmUgYWRkZWQgdG8gdGhlCi0gICBnZW5lcmF0ZWQgaXBrZy4gV2hlbiB5b3UgcnVuIGBgcHR4 ZGlzdCBzZXR1cGBgIHByaW9yIHRvIHRoaXMgY2FsbCwKLSAgIHlvdSBjYW4gZW50ZXIgeW91ciBu YW1lIGFuZCB5b3VyIGVtYWlsIGFkZHJlc3MsIHNvIFBUWGRpc3Qgd2lsbCB1c2UKLSAgIGl0IGFz IHRoZSBkZWZhdWx0ICh2ZXJ5IGhhbmR5IGlmIHlvdSBpbnRlbmQgdG8gYWRkIG1hbnkgbmV3Ci0g ICBwYWNrYWdlcykuCi0KLS0gICoqcGFja2FnZSBzZWN0aW9uKio6IFdlIGNhbiBlbnRlciBoZXJl IHRoZSBtZW51IHNlY3Rpb24gbmFtZSB3aGVyZQotICAgb3VyIG5ldyBwYWNrYWdlIG1lbnUgZW50 cnkgc2hvdWxkIGJlIGxpc3RlZC4gSW4gdGhlIGZpcnN0IHN0ZXAgd2UgY2FuCi0gICBsZWF2ZSB0 aGUgZGVmYXVsdCBuYW1lIHVuY2hhbmdlZC4gSXTigJlzIGEgc3RyaW5nIGluIHRoZSBtZW51IGZp bGUKLSAgIG9ubHksIHNvIGNoYW5naW5nIGl0IGxhdGVyIG9uIGlzIHN0aWxsIHBvc3NpYmxlLgot Ci1NYWtlIGl0IFdvcmsKLX5+fn5+fn5+fn5+fgotCi1HZW5lcmF0aW5nIHRoZSBydWxlIGZpbGUg aXMgb25seSBvbmUgb2YgdGhlIHJlcXVpcmVkIHN0ZXBzIHRvIGdldCBhIG5ldwotcGFja2FnZS4g VGhlIG5leHQgc3RlcHMgdG8gbWFrZSBpdCB3b3JrIGFyZSB0byBjaGVjayBpZiBhbGwgc3RhZ2Vz IGFyZQotd29ya2luZyBhcyBleHBlY3RlZCBhbmQgdG8gc2VsZWN0IHRoZSByZXF1aXJlZCBwYXJ0 cyB0byBnZXQgdGhlbQotaW5zdGFsbGVkIGluIHRoZSB0YXJnZXQgcm9vdCBmaWxlc3lzdGVtLiBB bHNvIHdlIG11c3QgZmluZCBhIHJlYXNvbmFibGUKLWxvY2F0aW9uIHdoZXJlIHRvIGFkZCBvdXIg bmV3IG1lbnUgZW50cnkgdG8gY29uZmlndXJlIHRoZSBwYWNrYWdlLgotCi1UaGUgZ2VuZXJhdGVk IHNrZWxldG9uIHN0YXJ0cyB0byBhZGQgdGhlIG5ldyBtZW51IGVudHJ5IGluIHRoZSBtYWluCi1j b25maWd1cmUgbWVudSAoaWYgd2UgbGVmdCB0aGUgc2VjdGlvbiBuYW1lIHVuY2hhbmdlZCkuIFJ1 bm5pbmcKLWBgcHR4ZGlzdCBtZW51Y29uZmlnYGAgd2lsbCBzaG93IGl0IG9uIHRvcCBvZiBhbGwg b3RoZXIgbWVudXMgZW50cmllcy4KLQotLi4gaW1wb3J0YW50OjogCi0gIFRvIGJlIGFibGUgdG8g aW1wbGVtZW50IGFuZCB0ZXN0IGFsbCB0aGUgb3RoZXIgcmVxdWlyZWQgc3RlcHMgZm9yIGFkZGlu ZwotICBhIG5ldyBwYWNrYWdlLCB3ZSBmaXJzdCBtdXN0IGVuYWJsZSB0aGUgcGFja2FnZSBmb3Ig YnVpbGRpbmcuIChGaW5lCi0gIHR1bmluZyB0aGUgbWVudSBjYW4gaGFwcGVuIGxhdGVyIG9uLikK LQotCi1UaGUgcnVsZSBmaWxlIHNrZWxldG9uIHN0aWxsIGxhY2tzIHNvbWUgaW1wb3J0YW50IGlu Zm9ybWF0aW9uLiBMZXTigJlzCi10YWtlIGEgbG9vayBpbnRvIHNvbWUgb2YgdGhlIHRvcCBsaW5l cyBvZiB0aGUgZ2VuZXJhdGVkIHJ1bGUgZmlsZQotYGAuL3J1bGVzL2Zvby5tYWtlYGA6Ci0KLS4u IGNvZGUtYmxvY2s6OiBtYWtlCi0KLSAgICBGT09fVkVSU0lPTgk6PSAxLjEuMAotICAgIEZPT19N RDUJOj0KLSAgICBGT08JCTo9IGZvby0kKEZPT19WRVJTSU9OKQotICAgIEZPT19TVUZGSVgJOj0g dGFyLmd6Ci0gICAgRk9PX1VSTAk6PSBodHRwOi8vd3d3LmZvby5jb20vZG93bmxvYWQvc3JjLyQo Rk9PKS4kKEZPT19TVUZGSVgpCi0gICAgRk9PX1NPVVJDRQk6PSAkKFNSQ0RJUikvJChGT08pLiQo Rk9PX1NVRkZJWCkKLSAgICBGT09fRElSCTo9ICQoQlVJTERESVIpLyQoRk9PKQotICAgIEZPT19M SUNFTlNFCTo9IHVua25vd24KLQotV2UgY2FuIGZpbmQgdGhlc2UgbGluZXMgd2l0aCBkaWZmZXJl bnQgY29udGVudCBpbiBtb3N0IG9yIGFsbCBvZiB0aGUKLW90aGVyIHJ1bGUgZmlsZXMgUFRYZGlz dCBjb21lcyB3aXRoLiBVcCB0byB0aGUgdW5kZXJsaW5lIGNoYXJhY3RlciBpcwotYWx3YXlzIHRo ZSBwYWNrYWdlIG5hbWUgYW5kIGFmdGVyIHRoZSB1bmRlcmxpbmUgY2hhcmFjdGVyIGlzIGFsd2F5 cwotUFRYZGlzdCBzcGVjaWZpYy4gV2hhdCBkb2VzIGl0IG1lYW46Ci0KLS0gIGBgKl9WRVJTSU9O YGAgYnJpbmdzIGluIHRoZSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgcmVsZWFzZSBhbmQgaXMgdXNl ZAotICAgZm9yIHRoZSBkb3dubG9hZCBhbmQgSVBLRy9PUEtHIHBhY2thZ2UgZ2VuZXJhdGlvbi4K LQotLSAgYGAqX01ENWBgIHRvIGJlIHN1cmUgdGhlIGNvcnJlY3QgcGFja2FnZSBoYXMgYmVlbiBk b3dubG9hZGVkLCBQVFhkaXN0Ci0gICBjaGVja3MgdGhlIGdpdmVuIE1ENSBzdW0gYWdhaW5zdCB0 aGUgYXJjaGl2ZSBjb250ZW50LiBJZiBib3RoIHN1bXMgZG8KLSAgIG5vdCBtYXRjaCwgUFRYZGlz dCByZWplY3RzIHRoZSBhcmNoaXZlIGFuZCBmYWlscyB0aGUgY3VycmVudGx5Ci0gICBydW5uaW5n IGJ1aWxkLgotCi0tICBgYCpfU1VGRklYYGAgZGVmaW5lcyB0aGUgYXJjaGl2ZSB0eXBlLCB0byBt YWtlIFBUWGRpc3QgY2hvb3NpbmcgdGhlCi0gICBjb3JyZWN0IGV4dHJhY3RpbmcgdG9vbC4KLQot LSAgYGAqX1VSTGBgIGRlZmluZXMgdGhlIGZ1bGwgcXVhbGlmaWVkIFVSTCBpbnRvIHRoZSB3ZWIg Zm9yIGRvd25sb2FkLiBJZgotICAgYWx0ZXJuYXRpdmUgZG93bmxvYWQgbG9jYXRpb25zIGFyZSBr bm93biwgdGhleSBjYW4gYmUgbGlzdGVkIGluIHRoaXMKLSAgIHZhcmlhYmxlLCBkZWxpbWl0ZXIg Y2hhcmFjdGVyIGlzIHRoZSBzcGFjZS4KLQotLSAgYGAqX1NPVVJDRWBgIHRlbGxzIFBUWGRpc3Qg d2hlcmUgdG8gc3RvcmUgdGhlIGRvd25sb2FkZWQgcGFja2FnZS4KLQotLSAgYGAqX0RJUmBgIHBv aW50cyB0byB0aGUgZGlyZWN0b3J5IHRoaXMgcGFja2FnZSB3aWxsIGJlIGJ1aWx0IGxhdGVyIG9u Ci0gICBieSBQVFhkaXN0LgotCi0tICBgYCpfTElDRU5TRWBgIGVuYWJsZXMgdGhlIHVzZXIgdG8g Z2V0IGEgbGlzdCBvZiBsaWNlbnNlcyBzaGUvaGUgaXMKLSAgIHVzaW5nIGluIGhlci9oaXMgcHJv amVjdCAobGljZW5zZXMgb2YgdGhlIGVuYWJsZWQgcGFja2FnZXMpLgotCi1BZnRlciBlbmFibGlu ZyB0aGUgbWVudSBlbnRyeSwgd2UgY2FuIHN0YXJ0IHRvIGNoZWNrIHRoZSAqZ2V0KiBhbmQKLSpl eHRyYWN0KiBzdGFnZXMsIGNhbGxpbmcgdGhlbSBtYW51YWxseSBvbmUgYWZ0ZXIgYW5vdGhlci4K LQotLi4gbm90ZTo6IFRoZSBzaG93biBjb21tYW5kcyBiZWxvdyBleHBlY3QgdGhhdCBQVFhkaXN0 IGRvd25sb2FkcyB0aGUKLSAgYXJjaGl2ZXMgdG8gYSBnbG9iYWwgZGlyZWN0b3J5IG5hbWVkIGBg Z2xvYmFsX3NyY2BgLiBUaGlzIGlzIG5vdCB0aGUKLSAgZGVmYXVsdCBzZXR0aW5nLCBidXQgd2Ug cmVjb21tZW5kIHRvIHVzZSBhIGdsb2JhbCBkaXJlY3RvcnkgdG8gc2hhcmUgYWxsCi0gIGFyY2hp dmVzIGJldHdlZW4gUFRYZGlzdCBiYXNlZCBwcm9qZWN0cy4gQWR2YW50YWdlIGlzIGV2ZXJ5IGRv d25sb2FkCi0gIGhhcHBlbnMgb25seSBvbmNlLiBSZWZlciB0byB0aGUgYGBzZXR1cGBgIGNvbW1h bmQgUFRYZGlzdCBwcm92aWRlcy4KLQotLi4gY29kZS1ibG9jazo6IHRleHQKLQotICAgICQgcHR4 ZGlzdCBnZXQgZm9vCi0KLSAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICB0YXJn ZXQ6IGZvby0xLjEuMC50YXIuZ3oKLSAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQot ICAgIC0tMjAwOS0xMi0yMSAxMDo1NDo0NS0tICBodHRwOi8vd3d3LmZvby5jb20vZG93bmxvYWQv c3JjL2Zvby0xLjEuMC50YXIuZ3oKLSAgICBMZW5ndGg6IDI5MTE5MCAoMjg0SykgW2FwcGxpY2F0 aW9uL3gtZ3ppcF0KLSAgICBTYXZpbmcgdG86IGAvZ2xvYmFsX3NyYy9mb28tMS4xLjAudGFyLmd6 LlhYWFhPR25jWkEnCi0KLSAgICAxMDAlWz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Pl0gMjkxLDE5MCAgICAgIDE3MEsvcyAgIGluIDEuN3MKLQotICAgIDIwMDktMTItMjEg MTA6NTQ6NDggKDE3MCBLQi9zKSAtIGAvZ2xvYmFsX3NyYy9mb28tMS4xLjAudGFyLmd6JyBzYXZl ZCBbMjkxMTkwLzI5MTE5MF0KLQotVGhpcyBjb21tYW5kIHNob3VsZCBzdGFydCB0byBkb3dubG9h ZCB0aGUgc291cmNlIGFyY2hpdmUuIElmIGl0IGZhaWxzLAotd2Ugc2hvdWxkIGNoZWNrIG91ciBu ZXR3b3JrIGNvbm5lY3Rpb24sIHByb3h5IHNldHVwIG9yIGlmIHRoZSBnaXZlbiBVUkwKLWluIHVz ZSBpcyBjb3JyZWN0LgotCi0uLiBub3RlOjogU29tZXRpbWVzIHdlIGRvIG5vdCBrbm93IHRoZSBj b250ZW50IG9mIGFsbCB0aGUgb3RoZXIgdmFyaWFibGVzIGluCi0gIHRoZSBydWxlIGZpbGUuIFRv IGdldCBhbiBpZGVhIHdoYXQgY29udGVudCBhIHZhcmlhYmxlIGhhcywgd2UgY2FuIGFzawotICBQ VFhkaXN0IGFib3V0IGl0OgotCi0uLiBjb2RlLWJsb2NrOjogdGV4dAotCi0gICAgJCBwdHhkaXN0 IHByaW50IEZPT19VUkwKLSAgICBodHRwOi8vd3d3LmZvby5jb20vZG93bmxvYWQvc3JjL2Zvby0x LjEuMC50YXIuZ3oKLQotVGhlIG5leHQgc3RlcCB3b3VsZCBiZSB0byBleHRyYWN0IHRoZSBhcmNo aXZlLiBCdXQgYXMgUFRYZGlzdCBjaGVja3MgdGhlCi1NRDUgc3VtIGluIHRoaXMgY2FzZSwgdGhp cyBzdGVwIHdpbGwgZmFpbCwgYmVjYXVzZSB0aGUgYGBGT09fTUQ1YGAKLXZhcmlhYmxlIGlzIHN0 aWxsIGVtcHR5LiBMZXTigJlzIGZpbGwgaXQ6Ci0KLS4uIGNvZGUtYmxvY2s6OiB0ZXh0Ci0KLSAg ICAkIG1kNXN1bSAvZ2xvYmFsX3NyYy9mb28tMS4xLjAudGFyLmd6Ci0gICAgOWEwOTg0MGFiNzc1 YTEzOWViYjAwZjU3YTU4N2I0NDcKLQotVGhpcyBzdHJpbmcgbXVzdCBiZSBhc3NpZ25lZCB0byB0 aGUgRk9PX01ENSBpbiBvdXIgbmV3IGBgZm9vLm1ha2VgYAotcnVsZSBmaWxlOgotCi0uLiBjb2Rl LWJsb2NrOjogdGV4dAotCi0gICAgRk9PX01ENQkJOj0gOWEwOTg0MGFiNzc1YTEzOWViYjAwZjU3 YTU4N2I0NDcKLQotV2UgYXJlIG5vdyBwcmVwYXJlZCBmb3IgdGhlIG5leHQgc3RlcDoKLQotLi4g Y29kZS1ibG9jazo6IHRleHQKLQotICAgICQgcHR4ZGlzdCBleHRyYWN0IGZvbwotCi0gICAgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICB0YXJnZXQ6IGZvby5leHRyYWN0Ci0gICAgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIGV4dHJhY3Q6IGFyY2hpdmU9L2dsb2JhbF9zcmMvZm9v LTEuMS4wLnRhci5negotICAgIGV4dHJhY3Q6IGRlc3Q9L2hvbWUvamJlL215X25ld19wcmovYnVp bGQtdGFyZ2V0Ci0gICAgUEFUQ0hJTjogcGFja2V0PWZvby0xLjEuMAotICAgIFBBVENISU46IGRp cj0vaG9tZS9qYmUvbXlfbmV3X3Byai9idWlsZC10YXJnZXQvZm9vLTEuMS4wCi0gICAgUEFUQ0hJ Tjogbm8gcGF0Y2hlcyBmb3IgZm9vLTEuMS4wIGF2YWlsYWJsZQotICAgIEZpeGluZyB1cCAvaG9t ZS9qYmUvbXlfbmV3X3Byai9idWlsZC10YXJnZXQvZm9vLTEuMS4wL2NvbmZpZ3VyZQotICAgIGZp bmlzaGVkIHRhcmdldCBmb28uZXh0cmFjdAotCi1JbiB0aGlzIGV4YW1wbGUgd2UgZXhwZWN0IGFu IGF1dG90b29saXplZCBzb3VyY2UgcGFja2FnZS4gRS5nLiB0bwotcHJlcGFyZSB0aGUgYnVpbGQs IHRoZSBhcmNoaXZlIGNvbWVzIHdpdGggYSBgYGNvbmZpZ3VyZWBgIHNjcmlwdC4gVGhpcwotaXMg dGhlIGRlZmF1bHQgY2FzZSBmb3IgUFRYZGlzdC4gU28sIHRoZXJlIGlzIG5vIG5lZWQgdG8gbW9k aWZ5IHRoZSBydWxlCi1maWxlIGFuZCB3ZSBjYW4gc2ltcGx5IHJ1bjoKLQotLi4gY29kZS1ibG9j azo6IHRleHQKLQotICAgICQgcHR4ZGlzdCBwcmVwYXJlIGZvbwotCi0gICAgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KLSAgICB0YXJnZXQ6IGZvby5wcmVwYXJlCi0gICAgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KLQotICAgIFsuLi5dCi0KLSAgICBjaGVja2luZyBidWlsZCBzeXN0ZW0gdHlwZS4u LiBpNjg2LWhvc3QtbGludXgtZ251Ci0gICAgY2hlY2tpbmcgaG9zdCBzeXN0ZW0gdHlwZS4uLiB8 cHR4ZGlzdENvbXBpbGVyTmFtZXwKLSAgICBjaGVja2luZyB3aGV0aGVyIHRvIGVuYWJsZSBtYWlu dGFpbmVyLXNwZWNpZmljIHBvcnRpb25zIG9mIE1ha2VmaWxlcy4uLiBubwotICAgIGNoZWNraW5n IGZvciBhIEJTRC1jb21wYXRpYmxlIGluc3RhbGwuLi4gL3Vzci9iaW4vaW5zdGFsbCAtYwotICAg IGNoZWNraW5nIHdoZXRoZXIgYnVpbGQgZW52aXJvbm1lbnQgaXMgc2FuZS4uLiB5ZXMKLSAgICBj aGVja2luZyBmb3IgYSB0aHJlYWQtc2FmZSBta2RpciAtcC4uLiAvYmluL21rZGlyIC1wCi0gICAg Y2hlY2tpbmcgZm9yIGdhd2suLi4gZ2F3awotICAgIGNoZWNraW5nIHdoZXRoZXIgbWFrZSBzZXRz ICQoTUFLRSkuLi4geWVzCi0gICAgY2hlY2tpbmcgZm9yIHxwdHhkaXN0Q29tcGlsZXJOYW1lfC1z dHJpcC4uLiB8cHR4ZGlzdENvbXBpbGVyTmFtZXwtc3RyaXAKLSAgICBjaGVja2luZyBmb3IgfHB0 eGRpc3RDb21waWxlck5hbWV8LWdjYy4uLiB8cHR4ZGlzdENvbXBpbGVyTmFtZXwtZ2NjCi0gICAg Y2hlY2tpbmcgZm9yIEMgY29tcGlsZXIgZGVmYXVsdCBvdXRwdXQgZmlsZSBuYW1lLi4uIGEub3V0 Ci0KLSAgICBbLi4uXQotCi0gICAgY29uZmlndXJlOiBjcmVhdGluZyAuL2NvbmZpZy5zdGF0dXMK LSAgICBjb25maWcuc3RhdHVzOiBjcmVhdGluZyBNYWtlZmlsZQotICAgIGNvbmZpZy5zdGF0dXM6 IGNyZWF0aW5nIHBwYV9wcm90b2NvbC9NYWtlZmlsZQotICAgIGNvbmZpZy5zdGF0dXM6IGNyZWF0 aW5nIGNvbmZpZy5oCi0gICAgY29uZmlnLnN0YXR1czogZXhlY3V0aW5nIGRlcGZpbGVzIGNvbW1h bmRzCi0gICAgZmluaXNoZWQgdGFyZ2V0IGZvby5wcmVwYXJlCi0KLUF0IHRoaXMgc3RhZ2UgdGhp bmdzIGNhbiBmYWlsOgotCi0tICBBIHdyb25nIG9yIG5vIE1ENSBzdW0gd2FzIGdpdmVuCi0KLS0g IFRoZSBgYGNvbmZpZ3VyZWBgIHNjcmlwdCBpcyBub3QgY3Jvc3MgY29tcGlsZSBhd2FyZQotCi0t ICBUaGUgcGFja2FnZSBkZXBlbmRzIG9uIGV4dGVybmFsIGNvbXBvbmVudHMgKGxpYnJhcmllcyBm b3IgZXhhbXBsZSkKLQotSWYgdGhlIGBgY29uZmlndXJlYGAgc2NyaXB0IGlzIG5vdCBjcm9zcyBj b21waWxlIGF3YXJlLCB3ZSBhcmUgb3V0IG9mCi1sdWNrLiBXZSBtdXN0IHBhdGNoIHRoZSBzb3Vy Y2UgYXJjaGl2ZSBpbiB0aGlzIGNhc2UgdG8gbWFrZSBpdCB3b3JrLgotUmVmZXIgdG8gdGhlIHNl Y3Rpb24gOnJlZjpgY29uZmlndXJlX3JlYnVpbGRgIG9uIGhvdyB0byB1c2UKLVBUWGRpc3TigJlz IGZlYXR1cmVzIHRvIHNpbXBsaWZ5IHRoaXMgdGFzay4KLUlmIHRoZSBwYWNrYWdlIGRlcGVuZHMg b24gZXh0ZXJuYWwgY29tcG9uZW50cywgdGhlc2UgY29tcG9uZW50cyBtaWdodAotYmUgYWxyZWFk eSBwYXJ0IG9mIFBUWGRpc3QuIEluIHRoaXMgY2FzZSB3ZSBqdXN0IGhhdmUgdG8gYWRkIHRoaXMK LWRlcGVuZGVuY3kgaW50byB0aGUgbWVudSBmaWxlIGFuZCB3ZSBhcmUgZG9uZS4gQnV0IGlmIFBU WGRpc3QgY2Fubm90Ci1mdWxmaWxsIHRoaXMgZGVwZW5kZW5jeSwgd2UgYWxzbyBtdXN0IGFkZCBp dCBhcyBhIHNlcGFyYXRlIHBhY2thZ2UKLWZpcnN0LgotCi1JZiB0aGUgKnByZXBhcmUqIHN0YWdl IGhhcyBmaW5pc2hlZCBzdWNjZXNzZnVsbHksIHRoZSBuZXh0IHN0ZXAgaXMgdG8KLWNvbXBpbGUg dGhlIHBhY2thZ2UuCi0KLS4uIGNvZGUtYmxvY2s6OiB0ZXh0Ci0KLSAgICAkIHB0eGRpc3QgY29t cGlsZSBmb28KLQotICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgdGFyZ2V0OiBmb28u Y29tcGlsZQotICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICBtYWtlWzFdOiBFbnRl cmluZyBkaXJlY3RvcnkgYC9ob21lL2piZS9teV9uZXdfcHJqL2J1aWxkLXRhcmdldC9mb28tMS4x LjAnCi0gICAgbWFrZSAgYWxsLXJlY3Vyc2l2ZQotICAgIG1ha2VbMl06IEVudGVyaW5nIGRpcmVj dG9yeSBgL2hvbWUvamJlL215X25ld19wcmovYnVpbGQtdGFyZ2V0L2Zvby0xLjEuMCcKLSAgICBt YWtlWzNdOiBFbnRlcmluZyBkaXJlY3RvcnkgYC9ob21lL2piZS9teV9uZXdfcHJqL2J1aWxkLXRh cmdldC9mb28tMS4xLjAnCi0KLSAgICBbLi4uXQotCi0gICAgbWFrZVszXTogTGVhdmluZyBkaXJl Y3RvcnkgYC9ob21lL2piZS9teV9uZXdfcHJqL2J1aWxkLXRhcmdldC9mb28tMS4xLjAnCi0gICAg bWFrZVsyXTogTGVhdmluZyBkaXJlY3RvcnkgYC9ob21lL2piZS9teV9uZXdfcHJqL2J1aWxkLXRh cmdldC9mb28tMS4xLjAnCi0gICAgbWFrZVsxXTogTGVhdmluZyBkaXJlY3RvcnkgYC9ob21lL2pi ZS9teV9uZXdfcHJqL2J1aWxkLXRhcmdldC9mb28tMS4xLjAnCi0gICAgZmluaXNoZWQgdGFyZ2V0 IGZvby5jb21waWxlCi0KLUF0IHRoaXMgc3RhZ2UgdGhpbmdzIGNhbiBmYWlsOgotCi0tICBUaGUg YnVpbGQgc3lzdGVtIGlzIG5vdCBjcm9zcyBjb21waWxlIGF3YXJlIChpdCB0cmllcyB0byBleGVj dXRlIGp1c3QKLSAgIGNyZWF0ZWQgdGFyZ2V0IGJpbmFyaWVzIGZvciBleGFtcGxlKQotCi0tICBU aGUgcGFja2FnZSBkZXBlbmRzIG9uIGV4dGVybmFsIGNvbXBvbmVudHMgKGxpYnJhcmllcyBmb3Ig ZXhhbXBsZSkKLSAgIG5vdCBkZXRlY3RlZCBieSBgYGNvbmZpZ3VyZWBgCi0KLS0gIFNvdXJjZXMg YXJlIGlnbm9yaW5nIHRoZSBlbmRpYW5uZXNzIG9mIHNvbWUgYXJjaGl0ZWN0dXJlcyBvciB1c2lu ZwotICAgaGVhZGVyIGZpbGVzIGZyb20gdGhlIGJ1aWxkIGhvc3Qgc3lzdGVtIChmcm9tIGBgL3Vz ci9pbmNsdWRlYGAgZm9yCi0gICBleGFtcGxlKQotCi0tICBUaGUgbGlua2VyIHVzZXMgbGlicmFy aWVzIGZyb20gdGhlIGJ1aWxkIGhvc3Qgc3lzdGVtIChmcm9tCi0gICBgYC91c3IvbGliYGAgZm9y IGV4YW1wbGUpIGJ5IGFjY2lkZW50Ci0KLUluIGFsbCBvZiB0aGVzZSBjYXNlcyB3ZSBtdXN0IHBh dGNoIHRoZSBzb3VyY2VzIHRvIG1ha2UgdGhlbSB3b3JrLiBSZWZlcgotdG8gc2VjdGlvbiA6cmVm OmBwYXRjaGluZ19wYWNrYWdlc2Agb24gaG93IHRvIHVzZSBQVFhkaXN04oCZcwotZmVhdHVyZXMg dG8gc2ltcGxpZnkgdGhpcyB0YXNrLgotCi1JbiB0aGlzIGV4YW1wbGUgd2UgZXhwZWN0IHRoZSBi ZXN0IGNhc2U6IGV2ZXJ5dGhpbmcgd2VudCBmaW5lLCBldmVuIGZvcgotY3Jvc3MgY29tcGlsaW5n LiBTbywgd2UgY2FuIGNvbnRpbnVlIHdpdGggdGhlIG5leHQgc3RhZ2U6ICppbnN0YWxsKgotCi0u LiBjb2RlLWJsb2NrOjogdGV4dAotCi0gICAgJCBwdHhkaXN0IGluc3RhbGwgZm9vCi0KLSAgICAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIHRhcmdldDogZm9vLmluc3RhbGwKLSAgICAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgbWFrZVsxXTogRW50ZXJpbmcgZGlyZWN0b3J5IGAv aG9tZS9qYmUvbXlfbmV3X3Byai9idWlsZC10YXJnZXQvZm9vLTEuMS4wJwotICAgIG1ha2VbMl06 IEVudGVyaW5nIGRpcmVjdG9yeSBgL2hvbWUvamJlL215X25ld19wcmovYnVpbGQtdGFyZ2V0L2Zv by0xLjEuMCcKLSAgICBtYWtlWzNdOiBFbnRlcmluZyBkaXJlY3RvcnkgYC9ob21lL2piZS9teV9u ZXdfcHJqL2J1aWxkLXRhcmdldC9mb28tMS4xLjAnCi0gICAgdGVzdCAteiAiL3Vzci9iaW4iIHx8 IC9iaW4vbWtkaXIgLXAgIi9ob21lL2piZS9teV9uZXdfcHJqL2J1aWxkLXRhcmdldC9mb28tMS4x LjAvdXNyL2JpbiIKLSAgICAgIC91c3IvYmluL2luc3RhbGwgLWMgJ2ZvbycgJy9ob21lL2piZS9t eV9uZXdfcHJqL2J1aWxkLXRhcmdldC9mb28tMS4xLjAvdXNyL2Jpbi9mb28nCi0gICAgbWFrZVsz XTogTGVhdmluZyBkaXJlY3RvcnkgYC9ob21lL2piZS9teV9uZXdfcHJqL2J1aWxkLXRhcmdldC9m b28tMS4xLjAnCi0gICAgbWFrZVsyXTogTGVhdmluZyBkaXJlY3RvcnkgYC9ob21lL2piZS9teV9u ZXdfcHJqL2J1aWxkLXRhcmdldC9mb28tMS4xLjAnCi0gICAgbWFrZVsxXTogTGVhdmluZyBkaXJl Y3RvcnkgYC9ob21lL2piZS9teV9uZXdfcHJqL2J1aWxkLXRhcmdldC9mb28tMS4xLjAnCi0gICAg ZmluaXNoZWQgdGFyZ2V0IGZvby5pbnN0YWxsCi0KLSAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCi0gICAgdGFyZ2V0OiBmb28uaW5zdGFsbC5wb3N0Ci0gICAgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQotCi0gICAgZmluaXNoZWQgdGFyZ2V0IGZvby5pbnN0YWxsLnBvc3QKLQot VGhpcyAqaW5zdGFsbCogc3RhZ2UgZG9lcyBub3QgaW5zdGFsbCBhbnl0aGluZyB0byB0aGUgdGFy Z2V0IHJvb3QKLWZpbGVzeXN0ZW0uIEl0IGlzIG1vc3RseSBpbnRlbmRlZCB0byBpbnN0YWxsIGxp YnJhcmllcyBhbmQgaGVhZGVyIGZpbGVzCi1vdGhlciBwcm9ncmFtcyBzaG91bGQgbGluayBhZ2Fp bnN0IGxhdGVyIG9uLgotCi1UaGUgbGFzdCBzdGFnZSDigJMgKnRhcmdldGluc3RhbGwqIOKAkyBp cyB0aGUgb25lIHRoYXQgZGVmaW5lcyB0aGUgcGFja2FnZeKAmXMKLWNvbXBvbmVudHMgdG8gYmUg Zm9yd2FyZGVkIHRvIHRoZSB0YXJnZXTigJlzIHJvb3QgZmlsZXN5c3RlbS4gRHVlIHRvIHRoZQot YWJzZW5jZSBvZiBhIGdlbmVyaWMgd2F5LCB0aGlzIGlzIHRoZSB0YXNrIG9mIHRoZSBkZXZlbG9w ZXIuIFNvLCBhdCB0aGlzCi1wb2ludCBvZiB0aW1lIHdlIG11c3QgcnVuIG91ciBmYXZvdXJpdGUg ZWRpdG9yIGFnYWluIGFuZCBtb2RpZnkgb3VyIG5ldwotcnVsZSBmaWxlIGBgLi9ydWxlcy9mb28u bWFrZWBgLgotCi1UaGUgc2tlbGV0b24gZm9yIHRoZSAqdGFyZ2V0aW5zdGFsbCogc3RhZ2UgbG9v a3MgbGlrZSB0aGlzOgotCi0uLiBjb2RlLWJsb2NrOjogbWFrZQotCi0gICAgIyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCi0gICAgIyBUYXJnZXQtSW5zdGFsbAotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQotCi0gICAgJChTVEFURURJUikvZm9vLnRhcmdldGluc3RhbGw6Ci0gICAgCUAkKGNhbGwgdGFy Z2V0aW5mbykKLQotICAgIAlAJChjYWxsIGluc3RhbGxfaW5pdCwgIGZvbykKLSAgICAJQCQoY2Fs bCBpbnN0YWxsX2ZpeHVwLCBmb28sUEFDS0FHRSxmb28pCi0gICAgCUAkKGNhbGwgaW5zdGFsbF9m aXh1cCwgZm9vLFBSSU9SSVRZLG9wdGlvbmFsKQotICAgIAlAJChjYWxsIGluc3RhbGxfZml4dXAs IGZvbyxWRVJTSU9OLCQoRk9PX1ZFUlNJT04pKQotICAgIAlAJChjYWxsIGluc3RhbGxfZml4dXAs IGZvbyxTRUNUSU9OLGJhc2UpCi0gICAgCUAkKGNhbGwgaW5zdGFsbF9maXh1cCwgZm9vLEFVVEhP UiwiTXkgTmFtZSA8bWVAbXktb3JnLmNvbT4iKQotICAgIAlAJChjYWxsIGluc3RhbGxfZml4dXAs IGZvbyxERVBFTkRTLCkKLSAgICAJQCQoY2FsbCBpbnN0YWxsX2ZpeHVwLCBmb28sREVTQ1JJUFRJ T04sbWlzc2luZykKLQotICAgIAlAJChjYWxsIGluc3RhbGxfY29weSwgZm9vLCAwLCAwLCAwNzU1 LCAkKEZPT19ESVIpL2Zvb2JhciwgL2Rldi9udWxsKQotCi0gICAgCUAkKGNhbGwgaW5zdGFsbF9m aW5pc2gsIGZvbykKLSAgICAJQCQoY2FsbCB0b3VjaCkKLQotVGhlIOKAnGhlYWRlcuKAnSBvZiB0 aGlzIHN0YWdlIGRlZmluZXMgc29tZSBpbmZvcm1hdGlvbiBJUEtHIG5lZWRzLiBUaGUKLWltcG9y dGFudCBwYXJ0IHRoYXQgd2UgbXVzdCBtb2RpZnkgaXMgdGhlIGNhbGwgdG8gdGhlIGBgaW5zdGFs bF9jb3B5YGAKLW1hY3JvIChyZWZlciB0byBzZWN0aW9uIDpyZWY6YHJlZmVyZW5jZV9tYWNyb3Ng IGZvciBtb3JlIGRldGFpbHMKLWFib3V0IHRoaXMga2luZCBvZiBtYWNyb3MpLiBUaGlzIGNhbGwg aW5zdHJ1Y3RzIFBUWGRpc3QgdG8gaW5jbHVkZSB0aGUKLWdpdmVuIGZpbGUgKHdpdGggVUlELCBH SUQgYW5kIHBlcm1pc3Npb25zKSBpbnRvIHRoZSBJUEtHLCB3aGljaCBtZWFucyB0bwotaW5zdGFs bCB0aGlzIGZpbGUgdG8gdGhlIHRhcmdldOKAmXMgcm9vdCBmaWxlc3lzdGVtLgotCi1Gcm9tIHRo ZSBwcmV2aW91cyAqaW5zdGFsbCogc3RhZ2Ugd2Uga25vdyB0aGlzIHBhY2thZ2UgaW5zdGFsbHMg YW4KLWV4ZWN1dGFibGUgY2FsbGVkIGBgZm9vYGAgdG8gbG9jYXRpb24gYGAvdXNyL2JpbmBgLiBX ZSBjYW4gZG8gdGhlIHNhbWUKLWZvciBvdXIgdGFyZ2V0IGJ5IGNoYW5naW5nIHRoZSAqaW5zdGFs bFxfY29weSogbGluZSB0bzoKLQotLi4gY29kZS1ibG9jazo6IG5vbmUKLQotICAgIEAkKGNhbGwg aW5zdGFsbF9jb3B5LCBmb28sIDAsIDAsIDA3NTUsICQoRk9PX0RJUikvZm9vLCAvdXNyL2Jpbi9m b28pCi0KLVRvIGNoZWNrIGl0LCB3ZSBqdXN0IHJ1bjoKLQotLi4gY29kZS1ibG9jazo6IHRleHQK LQotICAgICQgcHR4ZGlzdCB0YXJnZXRpbnN0YWxsIGZvbwotCi0gICAgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KLSAgICB0YXJnZXQ6IGZvby50YXJnZXRpbnN0YWxsCi0gICAgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIGluc3RhbGxfaW5pdDogICBwcmVwYXJpbmcg Zm9yIGltYWdlIGNyZWF0aW9uLi4uCi0gICAgaW5zdGFsbF9pbml0OiAgIEBBUkNIQCAtPiBpMzg2 IC4uLiBkb25lCi0gICAgaW5zdGFsbF9pbml0OiAgIHByZWluc3Qgbm90IGF2YWlsYWJsZQotICAg IGluc3RhbGxfaW5pdDogICBwb3N0aW5zdCBub3QgYXZhaWxhYmxlCi0gICAgaW5zdGFsbF9pbml0 OiAgIHByZXJtIG5vdCBhdmFpbGFibGUKLSAgICBpbnN0YWxsX2luaXQ6ICAgcG9zdHJtIG5vdCBh dmFpbGFibGUKLSAgICBpbnN0YWxsX2ZpeHVwOiAgQFBBQ0tBR0VAIC0+IGZvbyAuLi4gZG9uZS4K LSAgICBpbnN0YWxsX2ZpeHVwOiAgQFBSSU9SSVRZQCAtPiBvcHRpb25hbCAuLi4gZG9uZS4KLSAg ICBpbnN0YWxsX2ZpeHVwOiAgQFZFUlNJT05AIC0+IDEuMS4wIC4uLiBkb25lLgotICAgIGluc3Rh bGxfZml4dXA6ICBAU0VDVElPTkAgLT4gYmFzZSAuLi4gZG9uZS4KLSAgICBpbnN0YWxsX2ZpeHVw OiAgQEFVVEhPUkAgLT4gIk15IE5hbWUgPG1lXEBteS1vcmcuY29tPiIgLi4uIGRvbmUuCi0gICAg aW5zdGFsbF9maXh1cDogIEBERVNDUklQVElPTkAgLT4gbWlzc2luZyAuLi4gZG9uZS4KLSAgICBp bnN0YWxsX2NvcHk6Ci0gICAgICBzcmM9L2hvbWUvamJlL215X25ld19wcmovYnVpbGQtdGFyZ2V0 L2Zvby0xLjEuMC9mb28KLSAgICAgIGRzdD0vdXNyL2Jpbi9mb28KLSAgICAgIG93bmVyPTAKLSAg ICAgIGdyb3VwPTAKLSAgICAgIHBlcm1pc3Npb25zPTA3NTUKLSAgICB4cGtnX2ZpbmlzaDogICAg Y29sbGVjdGluZyBsaWNlbnNlICh1bmtub3duKSAuLi4gZG9uZS4KLSAgICB4cGtnX2ZpbmlzaDog ICAgY3JlYXRpbmcgaXBrZyBwYWNrYWdlIC4uLiBkb25lLgotICAgIGZpbmlzaGVkIHRhcmdldCBm b28udGFyZ2V0aW5zdGFsbAotCi0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQotICAgIHRhcmdldDogZm9vLnRhcmdldGluc3RhbGwucG9zdAotICAgIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIGZpbmlzaGVkIHRhcmdldCBmb28udGFyZ2V0aW5z dGFsbC5wb3N0Ci0KLUFmdGVyIHRoaXMgY29tbWFuZCwgdGhlIHRhcmdldOKAmXMgcm9vdCBmaWxl c3lzdGVtIGNvbnRhaW5zIGEgZmlsZSBjYWxsZWQKLWBgL3Vzci9iaW4vZm9vYGAgb3duZWQgYnkg cm9vdCwgaXRzIGdyb3VwIGlzIGFsc28gcm9vdCBhbmQgZXZlcnlvbmUgaGFzCi1leGVjdXRpb24g cGVybWlzc2lvbnMsIGJ1dCBvbmx5IHRoZSB1c2VyIHJvb3QgaGFzIHdyaXRlIHBlcm1pc3Npb25z LgotCi1PbmUgbGFzdCB0YXNrIG9mIHRoaXMgcG9ydCBpcyBzdGlsbCBvcGVuOiBBIHJlYXNvbmFi bGUgbG9jYXRpb24gZm9yCi10aGUgbmV3IG1lbnUgZW50cnkgaW4gUFRYZGlzdOKAmXMgbWVudSBo aWVyYXJjaHkuIFBUWGRpc3QgYXJyYW5nZXMgaXRzCi1tZW51cyBvbiB0aGUgbWVhbmluZyBvZiBl YWNoIHBhY2thZ2UuIElzIGl0IGEgbmV0d29yayByZWxhdGVkIHRvb2w/IE9yCi1hIHNjcmlwdGlu ZyBsYW5ndWFnZT8gT3IgYSBncmFwaGljYWwgYXBwbGljYXRpb24/Ci1FYWNoIG9mIHRoZXNlIGds b2JhbCBtZWFuaW5ncyBoYXMgaXRzIG93biBzdWJtZW51LCB3aGVyZSB3ZSBjYW4gYWRkCi1vdXIg bmV3IGVudHJ5IHRvLiBXZSBqdXN0IGhhdmUgdG8gZWRpdCB0aGUgaGVhZCBvZiBvdXIgbmV3IG1l bnUgZmlsZQotYGAuL3J1bGVzL2Zvby5pbmBgIHRvIGFkZCBpdCB0byBhIHNwZWNpZmljIGdsb2Jh bCBtZW51LiBJZiBvdXIgbmV3Ci1wYWNrYWdlIGlzIGEgbmV0d29yayByZWxhdGVkIHRvb2wsIHRo ZSBoZWFkIG9mIHRoZSBtZW51IGZpbGUgc2hvdWxkCi1sb29rIGxpa2U6Ci0KLS4uIGNvZGUtYmxv Y2s6OiBrY29uZmlnCi0KLSAgICAjIyBTRUNUSU9OPW5ldHdvcmtpbmcKLQotV2UgY2FuIGdyZXAg dGhyb3VnaCB0aGUgb3RoZXIgbWVudSBmaWxlcyBmcm9tIHRoZSBQVFhkaXN0IG1haW4KLWluc3Rh bGxhdGlvbiBgYHJ1bGVzL2BgIGRpcmVjdG9yeSB0byBnZXQgYW4gaWRlYSB3aGF0IHNlY3Rpb24g bmFtZXMgYXJlCi1hdmFpbGFibGU6Ci0KLS4uIGNvZGUtYmxvY2s6OiB0ZXh0Ci0KLSAgICBydWxl cy8gJCBmaW5kIC4gLW5hbWUgXCouaW4gfCB4YXJncyBncmVwICIjIyBTRUNUSU9OIgotICAgIC4v YWNwaWQuaW46IyMgU0VDVElPTj1zaGVsbF9hbmRfY29uc29sZQotICAgIC4vYWxzYS1saWIuaW46 IyMgU0VDVElPTj1zeXN0ZW1fbGlicmFyaWVzCi0gICAgLi9hbHNhLXV0aWxzLmluOiMjIFNFQ1RJ T049bXVsdGltZWRpYV9zb3VuZAotICAgIC4vYXBhY2hlMi5pbjojIyBTRUNUSU9OPW5ldHdvcmtp bmcKLSAgICAuL2FwYWNoZTJfbW9kX3B5dGhvbi5pbjojIyBTRUNUSU9OPW5ldHdvcmtpbmcKLSAg ICBbLi4uXQotICAgIC4veGtleWJvYXJkLWNvbmZpZy5pbjojIyBTRUNUSU9OPW11bHRpbWVkaWFf eG9yZ19kYXRhCi0gICAgLi94b3JnLWFwcC14ZXYuaW46IyMgU0VDVElPTj1tdWx0aW1lZGlhX3hv cmdfYXBwCi0gICAgLi94b3JnLWFwcC14cmFuZHIuaW46IyMgU0VDVElPTj1tdWx0aW1lZGlhX3hv cmdfYXBwCi0gICAgLi9ob3N0LWVnZ2RidXMuaW46IyMgU0VDVElPTj1ob3N0dG9vbHNfbm9wcm9t cHQKLSAgICAuL2xpYnNzaDIuaW46IyMgU0VDVElPTj1uZXR3b3JraW5nCi0KLVBvcnRpbmcgYSBu ZXcgcGFja2FnZSB0byBQVFhkaXN0IGlzIChhbG1vc3QpIGZpbmlzaGVkIG5vdy4KLQotVG8gY2hl Y2sgaXQgcmlnaHQgYXdheSwgd2Ugc2ltcGx5IHJ1biB0aGVzZSB0d28gY29tbWFuZHM6Ci0KLS4u IGNvZGUtYmxvY2s6OiB0ZXh0Ci0KLSAgICAkIHB0eGRpc3QgY2xlYW4gZm9vCi0gICAgcm0gLXJm IC9ob21lL2piZS9teV9uZXdfcHJqL3N0YXRlL2Zvby4qCi0gICAgcm0gLXJmIC9ob21lL2piZS9t eV9uZXdfcHJqL3BhY2thZ2VzL2Zvb18qCi0gICAgcm0gLXJmIC9ob21lL2piZS9teV9uZXdfcHJq L2J1aWxkLXRhcmdldC9mb28tMS4xLjAKLSAgICAkIHB0eGRpc3QgdGFyZ2V0aW5zdGFsbCBmb28K LQotICAgIFsuLi5dCi0KLS4uIGltcG9ydGFudDo6IERpc2NvdmVyIHNvbWVob3cgaGlkZGVuIGRl cGVuZGVuY2llcyB3aXRoIG9uZSBtb3JlIGxhc3QgY2hlY2shCi0KLVVwIHRvIHRoaXMgcG9pbnQg YWxsIHRoZSBkZXZlbG9wbWVudCBvZiB0aGUgbmV3IHBhY2thZ2Ugd2FzIGRvbmUgaW4gYW4gYWxy ZWFkeQotYnVpbHQgQlNQLiBEb2luZyBzbyBzb21ldGltZXMgc29tZWhvdyBoaWRkZW4gZGVwZW5k ZW5jaWVzIGNhbm5vdCBiZSBzZWVuOgotZXZlcnl0aGluZyBzZWVtcyBmaW5lLCB0aGUgbmV3IHBh Y2thZ2UgYnVpbGRzIGFsd2F5cyBzdWNjZXNzZnVsbHkgYW5kIHRoZQotcmVzdWx0cyBhcmUgd29y a2luZyBvbiB0aGUgdGFyZ2V0LgotCi1TbyB0byBjaGVjayBmb3IgdGhpcyBraW5kIG9mIGRlcGVu ZGVuY2llcyB0aGVyZSBpcyBzdGlsbCBvbmUgbW9yZSBmaW5hbCBjaGVjawotdG8gZG8gKGV2ZW4g aWYgaXRzIGJvcmluZyBhbmQgdGFrZXMgdGltZSk6Ci0KLS4uIGNvZGUtYmxvY2s6OiB0ZXh0Ci0K LSAgICAkIHB0eGRpc3QgY2xlYW4KLSAgICBbLi4uXQotICAgICQgcHR4ZGlzdCB0YXJnZXRpbnN0 YWxsIGZvbwotICAgIFsuLi5dCi0KLVRoaXMgd2lsbCByZS1zdGFydCB3aXRoIGEgKipjbGVhbioq IEJTUCBhbmQgYnVpbGRzIGV4YWN0bHkgdGhlIG5ldyBwYWNrYWdlIGFuZAotaXRzIChrbm93bikg ZGVwZW5kZW5jaWVzLiBJZiB0aGlzIGJ1aWxkcyBzdWNjZXNzZnVsbHkgYXMgd2VsbCB3ZSBhcmUg cmVhbGx5IGRvbmUKLXdpdGggdGhlIG5ldyBwYWNrYWdlLgotCi1Tb21lIE5vdGVzIGFib3V0IExp Y2Vuc2VzCi1+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ci0KLVRoZSBhbHJlYWR5IG1lbnRpb25l ZCBydWxlIHZhcmlhYmxlIGBgKl9MSUNFTlNFYGAgKGUuZy4gYGBGT09fTElDRU5TRWBgIGluIG91 cgotZXhhbXBsZSkgaXMgdmVyeSBpbXBvcnRhbnQgYW5kIG11c3QgYmUgZmlsbGVkIGJ5IHRoZSBk ZXZlbG9wZXIgb2YgdGhlIHBhY2thZ2UuCi1NYW55IGxpY2Vuc2VzIGJyaW5nIGluIG9ibGlnYXRp b25zIHVzaW5nIHRoZSBjb3JyZXNwb25kaW5nIHBhY2thZ2UgKCphdHRyaWJ1dGlvbioKLWZvciBl eGFtcGxlKS4gVG8gbWFrZSBsaWZlIGVhc2llciBmb3IgZXZlcnlib2R5IHRoZSBsaWNlbnNlIGZv ciBhIHBhY2thZ2UgbXVzdAotYmUgcHJvdmlkZWQuICpTUERYKiBsaWNlbnNlIGlkZW50aWZpZXJz IHVuaWZ5IHRoZSBsaWNlbnNlIG5hbWVzIGFuZCBhcmUgdXNlZAotaW4gUFRYZGlzdCB0byBpZGVu dGlmeSBsaWNlbnNlIHR5cGVzIGFuZCBvYmxpZ2F0aW9ucy4KLQotSWYgYSBwYWNrYWdlIGNvbWVz IHdpdGggbW9yZSB0aGFuIG9uZSBsaWNlbnNlLCBhbGwgb2YgdGhlaXIgU1BEWCBpZGVudGlmaWVy cwotbXVzdCBiZSBsaXN0ZWQgYW5kIGNvbm5lY3RlZCB3aXRoIHRoZSBrZXl3b3JkIGBgQU5EYGAu IElmIHlvdXIgcGFja2FnZSBjb21lcwotd2l0aCBHUEwtMi4wIGFuZCBMR1BMLTIuMSBsaWNlbnNl cywgdGhlIGRlZmluaXRpb24gc2hvdWxkIGxvb2sgbGlrZSB0aGlzOgotCi0uLiBjb2RlLWJsb2Nr OjogbWFrZQotCi0gICBGT09fTElDRU5TRSA6PSBHUEwtMi4wIEFORCBMR1BMLTIuMQotCi1PbmUg c3BlY2lmaWMgb2JsaWdhdGlvbiBjYW5ub3QgYmUgZGV0ZWN0ZWQgZXhhbWluaW5nIHRoZSBTUERY IGxpY2Vuc2UgaWRlbnRpZmllcnMKLWJ5IFBUWGRpc3Q6ICp0aGUgbGljZW5zZSBjaG9pY2UqLiBJ biB0aGlzIGNhc2UgYWxsIGxpY2Vuc2VzIG9mIGNob2ljZSBtdXN0IGJlCi1saXN0ZWQgYW5kIGNv bm5lY3RlZCBieSB0aGUga2V5d29yZCBgYE9SYGAuCi0KLUlmLCBmb3IgZXhhbXBsZSwgeW91ciBv YmxpZ2F0aW9uIGlzIHRvIHNlbGVjdCBvbmUgb2YgdGhlIGxpY2Vuc2VzICpHUEwtMi4wKiAqKm9y KioKLSpHUEwtMy4wKiwgdGhlIGBgKl9MSUNFTlNFYGAgdmFyaWFibGUgc2hvdWxkIGxvb2sgbGlr ZSB0aGlzOgotCi0uLiBjb2RlLWJsb2NrOjogbWFrZQotCi0gICBGT09fTElDRU5TRSA6PSBHUEwt Mi4wIE9SIEdQTC0zLjAKLQotU1BEWCBMaWNlbnNlIElkZW50aWZpZXJzCi1eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl4KLQotQSBsaXN0IG9mIFNQRFggbGljZW5zZSBpZGVudGlmaWVycyBjYW4gYmUg Zm91bmQgaGVyZToKLQotICAgaHR0cHM6Ly9zcGR4Lm9yZy9saWNlbnNlcy8KLQotSGVscCB0byBE ZXRlY3QgdGhlIENvcnJlY3QgTGljZW5zZQotXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXgotCi1MaWNlbnNlIGlkZW50aWZpY2F0aW9uIGlzbid0IHRyaXZpYWwuIEEgaGVscCBpbiBk b2luZyBzbyBjYW4gYmUgdGhlIGZvbGxvd2luZwotcmVwb3NpdG9yeSBhbmQgaXRzIGNvbnRlbnQu IEl0IGNvbnRhaW5zIGEgbGlzdCBvZiBrbm93biBsaWNlbnNlcyBiYXNlZCBvbiB0aGVpcgotU1BE WCBpZGVudGlmaWVyLiBUaGUgY29udGVudCBpcyB3aXRob3V0IGZvcm1hdHRpbmcgdG8gc2ltcGxp ZnkgdGV4dCBzZWFyY2guCi0KLSAgIGh0dHBzOi8vZ2l0aHViLmNvbS9zcGR4L2xpY2Vuc2UtbGlz dC1kYXRhL3RyZWUvbWFzdGVyL3RleHQKLQotQWR2YW5jZWQgUnVsZSBGaWxlcwotfn5+fn5+fn5+ fn5+fn5+fn5+fgotCi1UaGUgcHJldmlvdXMgZXhhbXBsZSBvbiBob3cgdG8gY3JlYXRlIGEgcnVs ZSBmaWxlIHNvbWV0aW1lcyB3b3JrcyBhcwotc2hvd24gYWJvdmUuIEJ1dCBtb3N0IG9mIHRoZSB0 aW1lIHNvdXJjZSBhcmNoaXZlcyBhcmUgbm90IHRoYXQgc2ltcGxlLgotSW4gdGhpcyBzZWN0aW9u IHdlIHdhbnQgdG8gZ2l2ZSB0aGUgdXNlciBhIG1vcmUgZGV0YWlsZWQgc2VsZWN0aW9uIGhvdwot dGhlIHBhY2thZ2Ugd2lsbCBiZSBidWlsdC4KLQotQWRkaW5nIFN0YXRpYyBDb25maWd1cmUgUGFy YW1ldGVycwotXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgotCi1UaGUgYGBjb25m aWd1cmVgYCBzY3JpcHRzIG9mIHZhcmlvdXMgc291cmNlIGFyY2hpdmVzIHByb3ZpZGUgYWRkaXRp b25hbAotcGFyYW1ldGVycyB0byBlbmFibGUgb3IgZGlzYWJsZSBmZWF0dXJlcywgb3IgdG8gY29u ZmlndXJlIHRoZW0gaW4gYQotc3BlY2lmaWMgd2F5LgotCi1XZSBhc3N1bWUgdGhlIGBgY29uZmln dXJlYGAgc2NyaXB0IG9mIG91ciBgYGZvb2BgIGV4YW1wbGUgKHJlZmVyIHRvCi1zZWN0aW9uIDpy ZWY6YGZvb19leGFtcGxlYCkgc3VwcG9ydHMgdHdvIGFkZGl0aW9uYWwgcGFyYW1ldGVyczoKLQot LSAgKiotLWVuYWJsZS1kZWJ1ZyoqOiBNYWtlIHRoZSBwcm9ncmFtIG1vcmUgbm9pc3kuIEl04oCZ cyBkaXNhYmxlZCBieQotICAgZGVmYXVsdC4KLQotLSAgKiotLXdpdGgtYmFyKio6IEFsc28gYnVp bGQgdGhlIHNwZWNpYWwgZXhlY3V0YWJsZSAqKmJhcioqLiBCdWlsZGluZwotICAgdGhpcyBleGVj dXRhYmxlIGlzIGFsc28gZGlzYWJsZWQgYnkgZGVmYXVsdC4KLQotV2Ugbm93IHdhbnQgdG8gZm9y d2FyZCB0aGVzZSBvcHRpb25zIHRvIHRoZSBgYGNvbmZpZ3VyZWBgIHNjcmlwdCB3aGVuIGl0Ci1y dW5zIGluIHRoZSAqcHJlcGFyZSogc3RhZ2UuIFRvIGRvIHNvLCB3ZSBtdXN0IGFnYWluIG9wZW4g dGhlIHJ1bGUgZmlsZQotd2l0aCBvdXIgZmF2b3VyaXRlIGVkaXRvciBhbmQgbmF2aWdhdGUgdG8g dGhlICpwcmVwYXJlKiBzdGFnZSBlbnRyeS4KLQotUFRYZGlzdCB1c2VzIHRoZSB2YXJpYWJsZSBg YEZPT19DT05GX09QVGBgIGFzIHRoZSBsaXN0IG9mIHBhcmFtZXRlcnMgdG8KLWJlIGdpdmVuIHRv IGBgY29uZmlndXJlYGAuCi0KLUN1cnJlbnRseSB0aGlzIHZhcmlhYmxlIGlzIGNvbW1lbnRlZCBv dXQgYW5kIGRlZmluZWQgdG86Ci0KLS4uIGNvZGUtYmxvY2s6OiBtYWtlCi0KLSAgICAjIEZPT19D T05GX09QVCA6PSAkKENST1NTX0FVVE9DT05GX1VTUikKLQotVGhlIHZhcmlhYmxlIGBgQ1JPU1Nf QVVUT0NPTkZfVVNSYGAgaXMgcHJlZGVmaW5lZCBieSBQVFhkaXN0IGFuZAotY29udGFpbnMgYWxs IGJhc2ljIHBhcmFtZXRlcnMgdG8gaW5zdHJ1Y3QgYGBjb25maWd1cmVgYCB0byBwcmVwYXJlIGZv ciBhCi0qKmNyb3NzKiogY29tcGlsZSBlbnZpcm9ubWVudC4KLQotVG8gdXNlIHRoZSB0d28gYWRk aXRpb25hbCBtZW50aW9uZWQgYGBjb25maWd1cmVgYCBwYXJhbWV0ZXJzLCB3ZSBjb21tZW50Ci1p biB0aGlzIGxpbmUgYW5kIHN1cHBsZW1lbnQgdGhpcyBleHByZXNzaW9uIGFzIGZvbGxvd3M6Ci0K LS4uIGNvZGUtYmxvY2s6OiBtYWtlCi0KLSAgICBGT09fQ09ORl9PUFQgOj0gXAotICAgICAgICAk KENST1NTX0FVVE9DT05GX1VTUikgXAotICAgICAgICAtLWVuYWJsZS1kZWJ1ZyBcCi0gICAgICAg IC0td2l0aC1iYXIKLQotLi4gbm90ZTo6IFdlIHJlY29tbWVuZCB0byB1c2UgdGhpcyBmb3JtYXQg d2l0aCBlYWNoIHBhcmFtZXRlciBvbiBhIGxpbmUgb2YKLSBpdHMgb3duLiBUaGlzIGZvcm1hdCBp cyBlYXNpZXIgdG8gcmVhZCBhbmQgYSBkaWZmIHNob3dzIG1vcmUgZXhhY3RseSBhbnkKLSBjaGFu Z2UuCi0KLVRvIGRvIGEgZmFzdCBjaGVjayBpZiB0aGlzIGFkZGl0aW9uIHdhcyBzdWNjZXNzZnVs LCB3ZSBydW46Ci0KLS4uIGNvZGUtYmxvY2s6OiB0ZXh0Ci0KLSAgICAkIHB0eGRpc3QgcHJpbnQg Rk9PX0NPTkZfT1BUCi0gICAgLS1wcmVmaXg9L3VzciAtLXN5c2NvbmZkaXI9L2V0YyAtLWhvc3Q9 fHB0eGRpc3RDb21waWxlck5hbWV8IC0tYnVpbGQ9aTY4Ni1ob3N0LWxpbnV4LWdudSAtLWVuYWJs ZS1kZWJ1ZyAtLXdpdGgtYmFyCi0KLS4uIG5vdGU6OiBJdCBkZXBlbmRzIG9uIHRoZSBjdXJyZW50 bHkgc2VsZWN0ZWQgcGxhdGZvcm0gYW5kIGl0cyBhcmNoaXRlY3R1cmUKLSB3aGF0IGNvbnRlbnQg dGhpcyB2YXJpYWJsZSB3aWxsIGhhdmUuIFRoZSBjb250ZW50IHNob3duIGFib3ZlIGlzIGFuCi0g ZXhhbXBsZSBmb3IgYSB0YXJnZXQuCi0KLU9yIHJlLWJ1aWxkIHRoZSBwYWNrYWdlIHdpdGggdGhl IG5ldyBzZXR0aW5nczoKLQotLi4gY29kZS1ibG9jazo6IHRleHQKLQotICAgICQgcHR4ZGlzdCBk cm9wIGZvbyBwcmVwYXJlCi0gICAgJCBwdHhkaXN0IHRhcmdldGluc3RhbGwgZm9vCi0KLUFkZGlu ZyBEeW5hbWljIENvbmZpZ3VyZSBQYXJhbWV0ZXJzCi1eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXgotCi1Tb21ldGltZXMgaXQgbWFrZXMgc2Vuc2UgdG8gYWRkIHRoaXMga2luZCBv ZiBwYXJhbWV0ZXJzIG9uIGRlbWFuZCBvbmx5OwotZXNwZWNpYWxseSBhIHBhcmFtZXRlciBsaWtl IGBgLS1lbmFibGUtZGVidWdgYC4gVG8gbGV0IHRoZSB1c2VyIGRlY2lkZQotaWYgdGhpcyBwYXJh bWV0ZXIgaXMgdG8gYmUgdXNlZCBvciBub3QsIHdlIG11c3QgYWRkIGEgbWVudSBlbnRyeS4gU28s Ci1sZXTigJlzIGV4cGFuZCBvdXIgbWVudS4gSGVyZSBpcyBpdHMgY3VycmVudCBjb250ZW50Ogot Ci0uLiBjb2RlLWJsb2NrOjoga2NvbmZpZwotCi0gICAgIyMgU0VDVElPTj1wcm9qZWN0X3NwZWNp ZmljCi0KLSAgICBjb25maWcgRk9PCi0gICAgICAgICAgICB0cmlzdGF0ZQotICAgICAgICAgICAg cHJvbXB0ICJmb28iCi0gICAgICAgICAgICBoZWxwCi0gICAgICAgICAgICAgIEZJWE1FCi0KLVdl 4oCZbGwgYWRkIHR3byBtZW51IGVudHJpZXMsIG9uZSBmb3IgZWFjaCBvcHRpb25hbCBwYXJhbWV0 ZXIgd2Ugd2FudCB0bwotYWRkIG9uIGRlbWFuZCB0byB0aGUgYGBjb25maWd1cmVgYCBwYXJhbWV0 ZXJzOgotCi0uLiBjb2RlLWJsb2NrOjoga2NvbmZpZwotCi0gICAgIyMgU0VDVElPTj1wcm9qZWN0 X3NwZWNpZmljCi0KLSAgICBjb25maWcgRk9PCi0gICAgICAgICAgIHRyaXN0YXRlCi0gICAgICAg ICAgIHByb21wdCAiZm9vIgotICAgICAgICAgICBoZWxwCi0gICAgICAgICAgICAgRklYTUUKLQot ICAgIGlmIEZPTwotICAgIGNvbmZpZyBGT09fREVCVUcKLSAgICAgICAgICAgYm9vbAotICAgICAg ICAgICBwcm9tcHQgImFkZCBkZWJ1ZyBub2lzZSIKLQotICAgIGNvbmZpZyBGT09fQkFSCi0gICAg ICAgICAgIGJvb2wKLSAgICAgICAgICAgcHJvbXB0ICJidWlsZCBiYXIiCi0KLSAgICBlbmRpZgot Ci0uLiBpbXBvcnRhbnQ6OiBBbHdheXMgZm9sbG93IHRoZSBydWxlIHRvIGV4dGVuZCB0aGUgYmFz ZSBuYW1lIGJ5IGEgc3Vib3B0aW9uCi0gIG5hbWUgYXMgdGhlIHRyYWlsaW5nIHBhcnQgb2YgdGhl IHZhcmlhYmxlIG5hbWUuIFRoaXMgZ2l2ZXMgUFRYZGlzdCB0aGUgYWJpbGl0eQotICB0byBkZXRl Y3QgYSBjaGFuZ2UgaW4gdGhlIHBhY2thZ2XigJlzIHNldHRpbmdzICh2aWEgbWVudWNvbmZpZykg dG8gZm9yY2UgaXRzCi0gIHJlYnVpbGQgb24gZGVtYW5kLgotCi1UbyBtYWtlIHVzYWdlIG9mIHRo ZSBuZXcgbWVudSBlbnRyaWVzLCB3ZSBtdXN0IGNoZWNrIHRoZW0gaW4gdGhlIHJ1bGUKLWZpbGUg YW5kIGFkZCB0aGUgY29ycmVjdCBwYXJhbWV0ZXJzOgotCi0uLiBjb2RlLWJsb2NrOjogbWFrZQot Ci0gICAgIwotICAgICMgYXV0b2NvbmYKLSAgICAjCi0gICAgRk9PX0NPTkZfT1BUIDo9IFwKLSAg ICAgICAgJChDUk9TU19BVVRPQ09ORl9VU1IpIFwKLSAgICAgICAgLS0kKGNhbGwgcHR4L2VuZGlz LCBQVFhDT05GX0ZPT19ERUJVRyktZGVidWcgXAotICAgICAgICAtLSQoY2FsbCBwdHgvd3dvLCBQ VFhDT05GX0ZPT19CQVIpLWJhcgotCi0uLiBpbXBvcnRhbnQ6OiBQbGVhc2Ugbm90ZSB0aGUgbGVh ZGluZyBgYFBUWENPTkZfYGAgZm9yIGVhY2ggZGVmaW5lLiBXaGlsZSBLY29uZmlnIGlzCi0gIHVz aW5nIGBgRk9PX0JBUmBgLCB0aGUgcnVsZSBmaWxlIG11c3QgdXNlIGBgUFRYQ09ORl9GT09fQkFS YGAgaW5zdGVhZC4KLQotLi4gbm90ZTo6IFJlZmVyIDpyZWY6YFJ1bGUgRmlsZSBNYWNybyBSZWZl cmVuY2UgPHBhcmFtX21hY3Jvcz5gIGZvciBmdXJ0aGVyCi0gICBkZXRhaWxzIGFib3V0IHRoZXNl IHNwZWNpYWwga2luZCBvZiBvcHRpb24gbWFjcm9zIChlLmcuIGBgcHR4Ly4uLmBgKS4KLQotSXQg aXMgYSBnb29kIHByYWN0aWNlIHRvIGFsd2F5cyBhZGQgYm90aCBzZXR0aW5ncywgZS5nLiBgYC0t ZGlzYWJsZS1kZWJ1Z2BgCi1ldmVuIGlmIHRoaXMgaXMgdGhlIGRlZmF1bHQgY2FzZS4gU29tZXRp bWVzIGBgY29uZmlndXJlYGAgdHJpZXMgdG8gZ3Vlc3MKLXNvbWV0aGluZyBhbmQgdGhlIGJpbmFy eSByZXN1bHQgbWlnaHQgZGlmZmVyIGRlcGVuZGluZyBvbiB0aGUgYnVpbGQKLW9yZGVyLiBGb3Ig ZXhhbXBsZSBzb21lIGtpbmQgb2YgcGFja2FnZSB3b3VsZCBhbHNvIGJ1aWxkIHNvbWUgWCByZWxh dGVkCi10b29scywgaWYgWCBsaWJyYXJpZXMgYXJlIGZvdW5kLiBJbiB0aGlzIGNhc2UgaXQgZGVw ZW5kcyBvbiB0aGUgYnVpbGQKLW9yZGVyLCBpZiB0aGUgWCByZWxhdGVkIHRvb2xzIGFyZSBidWls dCBvciBub3QuIEFsbCB0aGUgYXV0b2NoZWNrCi1mZWF0dXJlcyBhcmUgcHJvYmxlbWF0aWMgaGVy ZS4gU28sIGlmIHdlIGRvIG5vdCB3YW50IGBgY29uZmlndXJlYGAgdG8KLWd1ZXNzIGl0cyBzZXR0 aW5ncyB3ZSAqKm11c3QgZGlzYWJsZSBldmVyeXRoaW5nIHdlIGRvIG5vdCB3YW50KiouCi0KLVRv IHN1cHBvcnQgdGhpcyBwcm9jZXNzLCBQVFhkaXN0IHN1cHBsaWVzIGEgaGVscGVyIHNjcmlwdCwg bG9jYXRlZCBhdAotYGAvcGF0aC90by9wdHhkaXN0L3NjcmlwdHMvY29uZmlndXJlLWhlbHBlci5w eWBgIHRoYXQgY29tcGFyZXMgdGhlIGNvbmZpZ3VyZQotb3V0cHV0IHdpdGggdGhlIHNldHRpbmdz IGZyb20gYGBGT09fQ09ORl9PUFRgYDoKLQotLi4gY29kZS1ibG9jazo6IHRleHQKLQotICAgICQg L29wdC9wdHhkaXN0LTIwMTcuMDYuMC9zY3JpcHRzL2NvbmZpZ3VyZS1oZWxwZXIucHkgLXAgbGli c2lncm9rCi0gICAgLS0tIHJ1bGVzL2xpYnNpZ3Jvay5tYWtlCi0gICAgKysrIGxpYnNpZ3Jvay0w LjUuMAotICAgIEBAIC00LDMgKzQsNzQgQEAKLSAgICAgCS0tbGliZGlyPS91c3IvbGliCi0gICAg IAktLWJ1aWxkPXg4Nl82NC1ob3N0LWxpbnV4LWdudQotICAgICAJLS1ob3N0PWFybS12N2EtbGlu dXgtZ251ZWFiaWhmCi0gICAgKwktLWVuYWJsZS13YXJuaW5ncz1taW58bWF4fGZhdGFsfG5vCi0g ICAgKwktLWRpc2FibGUtbGFyZ2VmaWxlCi0gICAgKwktLWVuYWJsZS1hbGwtZHJpdmVycwotICAg ICsJLS1lbmFibGUtYWdpbGVudC1kbW0KLSAgICBbLi4uXQotICAgICsJLS1lbmFibGUtcnVieQot ICAgICsJLS1lbmFibGUtamF2YQotICAgICsJLS13aXRob3V0LWxpYnNlcmlhbHBvcnQKLSAgICAr CS0td2l0aG91dC1saWJmdGRpCi0gICAgKwktLXdpdGhvdXQtbGlidXNiCi0gICAgKwktLXdpdGhv dXQtbGlicmV2aXNhCi0gICAgKwktLXdpdGhvdXQtbGliZ3BpYgotICAgICsJLS13aXRob3V0LWxp YmllZWUxMjg0Ci0gICAgKwktLXdpdGgtam5pLWluY2x1ZGUtcGF0aD1ESVItTElTVAotCi1JbiB0 aGlzIGV4YW1wbGUsIG1hbnkgY29uZmlndXJlIG9wdGlvbnMgZnJvbSBsaWJzaWdyb2sgKG1hcmtl ZCB3aXRoIGBgK2BgKQotYXJlIG5vdCB5ZXQgcHJlc2VudCBpbiBgYExJQlNJR1JPS19DT05GX09Q VGBgIGFuZCBtdXN0IGJlIGFkZGVkLCBwb3NzaWJseSBhbHNvCi1ieSBwcm92aWRpbmcgbW9yZSBk eW5hbWljIG9wdGlvbnMgaW4gdGhlIHBhY2thZ2UgZGVmaW5pdGlvbi4KLQotSWYgc29tZSBwYXJ0 cyBvZiBhIHBhY2thZ2UgYXJlIGJ1aWx0IG9uIGRlbWFuZCBvbmx5LCB0aGV5IG11c3QgYWxzbyBi ZQotaW5zdGFsbGVkIG9uIGRlbWFuZCBvbmx5LiBCZXNpZGVzIHRoZSAqcHJlcGFyZSogc3RhZ2Us IHdlIGFsc28gbXVzdAotbW9kaWZ5IG91ciAqdGFyZ2V0aW5zdGFsbCogc3RhZ2U6Ci0KLS4uIGNv ZGUtYmxvY2s6OiBtYWtlCi0KLSAgICAJQCQoY2FsbCBpbnN0YWxsX2NvcHksIGZvbywgMCwgMCwg MDc1NSwgJChGT09fRElSKS9mb28sIC91c3IvYmluL2ZvbykKLQotICAgIGlmZGVmIFBUWENPTkZf Rk9PX0JBUgotICAgIAlAJChjYWxsIGluc3RhbGxfY29weSwgZm9vLCAwLCAwLCAwNzU1LCAkKEZP T19ESVIpL2JhciwgL3Vzci9iaW4vYmFyKQotICAgIGVuZGlmCi0KLSAgICAJQCQoY2FsbCBpbnN0 YWxsX2ZpbmlzaCwgZm9vKQotICAgIAlAJChjYWxsIHRvdWNoKQotCi1Ob3cgd2UgY2FuIHBsYXkg d2l0aCBvdXIgbmV3IG1lbnUgZW50cmllcyBhbmQgY2hlY2sgaWYgdGhleSBhcmUgd29ya2luZwot YXMgZXhwZWN0ZWQ6Ci0KLS4uIGNvZGUtYmxvY2s6OiB0ZXh0Ci0KLSAgICAkIHB0eGRpc3QgbWVu dWNvbmZpZwotICAgICQgcHR4ZGlzdCB0YXJnZXRpbnN0YWxsIGZvbwotCi1XaGVuZXZlciB3ZSBj aGFuZ2UgYSAqRk9PKiByZWxhdGVkIG1lbnUgZW50cnksIFBUWGRpc3Qgc2hvdWxkIGRldGVjdCBp dAotYW5kIHJlLWJ1aWxkIHRoZSBwYWNrYWdlIHdoZW4gYSBuZXcgYnVpbGQgaXMgc3RhcnRlZC4K LQotLi4gX2V4dGVybmFsX2RlcGVuZGVuY2llczoKLQotTWFuYWdpbmcgRXh0ZXJuYWwgQ29tcGls ZSBUaW1lIERlcGVuZGVuY2llcwotXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXgotCi1XaGlsZSBydW5uaW5nIHRoZSBwcmVwYXJlIHN0YWdlLCBpdCBjb3VsZCBoYXBw ZW4gdGhhdCBpdCBmYWlscyBkdWUgdG8gYQotbWlzc2luZyBleHRlcm5hbCBkZXBlbmRlbmN5Lgot Ci1Gb3IgZXhhbXBsZToKLQotLi4gY29kZS1ibG9jazo6IHRleHQKLQotICAgIGNoZWNraW5nIHdo ZXRoZXIgemxpYiBleGlzdHMuLi4uZmFpbGVkCi0KLUluIHRoaXMgZXhhbXBsZSwgb3VyIG5ldyBw YWNrYWdlIGRlcGVuZHMgb24gdGhlIGNvbXByZXNzaW9uIGxpYnJhcnkKLSp6bGliKi4gUFRYZGlz dCBjb21lcyB3aXRoIGEgdGFyZ2V0ICp6bGliKi4gQWxsIHdlIG5lZWQgdG8gZG8gaW4gdGhpcwot Y2FzZSBpcyB0byBkZWNsYXJlIHRoYXQgb3VyIG5ldyBwYWNrYWdlICpmb28qIGRlcGVuZHMgb24g KnpsaWIqLiBUaGlzCi1raW5kIG9mIGRlcGVuZGVuY3kgaXMgbWFuYWdlZCBpbiB0aGUgbWVudSBm aWxlIG9mIG91ciBuZXcgcGFja2FnZSBieQotc2ltcGx5IGFkZGluZyB0aGUgYGBzZWxlY3QgWkxJ QmBgIGxpbmUuIEFmdGVyIHRoaXMgYWRkaXRpb24gb3VyIG1lbnUKLWZpbGUgbG9va3MgbGlrZToK LQotLi4gY29kZS1ibG9jazo6IGtjb25maWcKLQotICAgICMjIFNFQ1RJT049cHJvamVjdF9zcGVj aWZpYwotCi0gICAgY29uZmlnIEZPTwotICAgICAgICAgICB0cmlzdGF0ZQotICAgICAgICAgICBz ZWxlY3QgWkxJQgotICAgICAgICAgICBwcm9tcHQgImZvbyIKLSAgICAgICAgICAgaGVscAotICAg ICAgICAgICAgIEZJWE1FCi0KLSAgICBpZiBGT08KLSAgICBjb25maWcgRk9PX0RFQlVHCi0gICAg ICAgICAgIGJvb2wKLSAgICAgICAgICAgcHJvbXB0ICJhZGQgZGVidWcgbm9pc2UiCi0KLSAgICBj b25maWcgRk9PX0JBUgotICAgICAgICAgICBib29sCi0gICAgICAgICAgIHByb21wdCAiYnVpbGQg YmFyIgotCi0gICAgZW5kaWYKLQotUFRYZGlzdCBub3cgYnVpbGRzIHRoZSAqemxpYiogZmlyc3Qg YW5kIG91ciBuZXcgcGFja2FnZSB0aGVyZWFmdGVyLgotCi1SZWZlciA6cmVmOmBleHRlcm5hbF9k ZXBlbmRlbmNpZXNfdmFyaWFudHNgIGZvciBtb3JlIHNwZWNpZmljIGRlcGVuZGVuY3kKLWRlc2Ny aXB0aW9uLgotCi1NYW5hZ2luZyBFeHRlcm5hbCBDb21waWxlIFRpbWUgRGVwZW5kZW5jaWVzIG9u IERlbWFuZAotXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl4KLQotSXQgaXMgZ29vZCBwcmFjdGljZSB0byBhZGQgb25seSB0aG9zZSBkZXBlbmRlbmNp ZXMgdGhhdCBhcmUgcmVhbGx5Ci1yZXF1aXJlZCBmb3IgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlv biBvZiB0aGUgcGFja2FnZS4gSWYgdGhlIHBhY2thZ2UKLXByb3ZpZGVzIHRoZSBmZWF0dXJlcyAq Zm9vKiBhbmQgKmJhciogYW5kIGl0cyBgYGNvbmZpZ3VyZWBgIHByb3ZpZGVzCi1zd2l0Y2hlcyB0 byBlbmFibGUvZGlzYWJsZSB0aGVtIGluZGVwZW5kZW50bHksIHdlIGNhbiBhbHNvIGFkZAotZGVw ZW5kZW5jaWVzIG9uIGRlbWFuZC4gTGV04oCZcyBhc3N1bWUgZmVhdHVyZSAqZm9vKiBuZWVkcyB0 aGUgY29tcHJlc3Npb24KLWxpYnJhcnkgKmxpYnoqIGFuZCAqYmFyKiBuZWVkcyB0aGUgWE1MMiBs aWJyYXJ5ICpsaWJ4bWwyKi4gVGhlc2UKLWxpYnJhcmllcyBhcmUgb25seSByZXF1aXJlZCBhdCBy dW4tdGltZSBpZiB0aGUgY29ycmVzcG9uZGluZyBmZWF0dXJlIGlzCi1lbmFibGVkLiBUbyBhZGQg dGhlc2UgZGVwZW5kZW5jaWVzIG9uIGRlbWFuZCwgdGhlIG1lbnUgZmlsZSBsb29rcyBsaWtlOgot Ci0uLiBjb2RlLWJsb2NrOjoga2NvbmZpZwotCi0gICAgIyMgU0VDVElPTj1wcm9qZWN0X3NwZWNp ZmljCi0KLSAgICBjb25maWcgRk9PCi0gICAgICAgICAgIHRyaXN0YXRlCi0gICAgICAgICAgIHNl bGVjdCBaTElCIGlmIEZPT19GT08KLSAgICAgICAgICAgc2VsZWN0IExJQlhNTDIgaWYgRk9PX0JB UgotICAgICAgICAgICBwcm9tcHQgImZvbyIKLSAgICAgICAgICAgaGVscAotICAgICAgICAgICAg IEZJWE1FCi0KLSAgICBpZiBGT08KLSAgICBjb25maWcgRk9PX0RFQlVHCi0gICAgICAgICAgIGJv b2wKLSAgICAgICAgICAgcHJvbXB0ICJhZGQgZGVidWcgbm9pc2UiCi0KLSAgICBjb25maWcgRk9P X0ZPTwotICAgICAgICAgICBib29sCi0gICAgICAgICAgIHByb21wdCAiYnVpbGQgZm9vIgotCi0g ICAgY29uZmlnIEZPT19CQVIKLSAgICAgICAgICAgYm9vbAotICAgICAgICAgICBwcm9tcHQgImJ1 aWxkIGJhciIKLQotICAgIGVuZGlmCi0KLS4uIGltcG9ydGFudDo6IERvIG5vdCBhZGQgdGhlc2Ug YGBzZWxlY3RgYCBzdGF0ZW1lbnRzIHRvIHRoZSBjb3JyZXNwb25kaW5nIG1lbnUgZW50cnkuCi0g IFRoZXkgbXVzdCBiZWxvbmcgdG8gdGhlIG1haW4gbWVudSBlbnRyeSBvZiB0aGUgcGFja2FnZSB0 byBlbnN1cmUgdGhhdAotICB0aGUgY2FsY3VsYXRpb24gb2YgdGhlIGRlcGVuZGVuY2llcyBiZXR3 ZWVuIHRoZSBwYWNrYWdlcyBpcyBkb25lIGluIGEKLSAgY29ycmVjdCBtYW5uZXIuCi0KLU1hbmFn aW5nIEV4dGVybmFsIFJ1bnRpbWUgRGVwZW5kZW5jaWVzCi1eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXgotCi1Tb21lIHBhY2thZ2VzIGFyZSBidWlsZGluZyBhbGwgb2YgdGhl aXIgY29tcG9uZW50cyBhbmQgYWxzbyBpbnN0YWxsaW5nCi10aGVtIGludG8gdGhlIHRhcmdldOKA mXMgc3lzcm9vdC4gQnV0IG9ubHkgdGhlaXIgKnRhcmdldGluc3RhbGwqIHN0YWdlCi1kZWNpZGVz IHdoaWNoIHBhcnRzIGFyZSBjb3BpZWQgdG8gdGhlIHJvb3QgZmlsZXN5c3RlbS4gU28sIGNvbXBp bGluZyBhbmQKLWxpbmtpbmcgb2Ygb3VyIHBhY2thZ2Ugd2lsbCB3b3JrLCBiZWNhdXNlIGV2ZXJ5 dGhpbmcgcmVxdWlyZWQgaXMgZm91bmQKLWluIHRoZSB0YXJnZXTigJlzIHN5c3Jvb3QuCi0KLUlu IG91ciBleGFtcGxlIHRoZXJlIGlzIGEgaGlkZGVuIGRlcGVuZGVuY3kgdG8gdGhlIG1hdGggbGli cmFyeQotYGBsaWJtYGAuIE91ciBuZXcgcGFja2FnZSB3YXMgYnVpbHQgc3VjY2Vzc2Z1bGx5LCBi ZWNhdXNlIHRoZSBsaW5rZXIgd2FzCi1hYmxlIHRvIGxpbmsgb3VyIGJpbmFyaWVzIGFnYWluc3Qg dGhlIGBgbGlibWBgIGZyb20gdGhlIHRvb2xjaGFpbi4gQnV0Ci1pbiB0aGlzIGNhc2UgdGhlIGBg bGlibWBgIG11c3QgYWxzbyBiZSBhdmFpbGFibGUgaW4gdGhlIHRhcmdldOKAmXMgcm9vdAotZmls ZXN5c3RlbSB0byBmdWxmaWwgdGhlIHJ1bi10aW1lIGRlcGVuZGVuY3k6IFdlIGhhdmUgdG8gZm9y Y2UgUFRYZGlzdCB0bwotaW5zdGFsbCBgYGxpYm1gYC4gYGBsaWJtYGAgaXMgcGFydCBvZiB0aGUg KmdsaWJjKiBwYWNrYWdlLCBidXQgaXMgbm90Ci1pbnN0YWxsZWQgYnkgZGVmYXVsdCAodG8ga2Vl cCB0aGUgcm9vdCBmaWxlc3lzdGVtIHNtYWxsKS4gU28sIGl0ICoqZG9lcwotbm90KiogaGVscCB0 byBzZWxlY3QgdGhlIGBgR0xJQkNgYCBzeW1ib2wsIHRvIGdldCBhIGBgbGlibWBgIGF0IHJ1bi10 aW1lLgotCi1UaGUgY29ycmVjdCBzb2x1dGlvbiBoZXJlIGlzIHRvIGFkZCBhIGBgc2VsZWN0IExJ QkNfTWBgIHRvIG91ciBtZW51Ci1maWxlLiBXaXRoIGFsbCB0aGUgYWRkaXRpb25zIGFib3ZlIGl0 IG5vdyBsb29rcyBsaWtlOgotCi0uLiBjb2RlLWJsb2NrOjoga2NvbmZpZwotCi0gICAgIyMgU0VD VElPTj1wcm9qZWN0X3NwZWNpZmljCi0KLSAgICBjb25maWcgRk9PCi0gICAgICAgICAgIHRyaXN0 YXRlCi0gICAgICAgICAgIHNlbGVjdCBaTElCIGlmIEZPT19GT08KLSAgICAgICAgICAgc2VsZWN0 IExJQlhNTDIgaWYgRk9PX0JBUgotICAgICAgICAgICBzZWxlY3QgTElCQ19NCi0gICAgICAgICAg IHByb21wdCAiZm9vIgotICAgICAgICAgICBoZWxwCi0gICAgICAgICAgICAgRklYTUUKLQotICAg IGlmIEZPTwotICAgIGNvbmZpZyBGT09fREVCVUcKLSAgICAgICAgICAgYm9vbAotICAgICAgICAg ICBwcm9tcHQgImFkZCBkZWJ1ZyBub2lzZSIKLQotICAgIGNvbmZpZyBGT09fRk9PCi0gICAgICAg ICAgIGJvb2wKLSAgICAgICAgICAgcHJvbXB0ICJidWlsZCBmb28iCi0KLSAgICBjb25maWcgRk9P X0JBUgotICAgICAgICAgICBib29sCi0gICAgICAgICAgIHByb21wdCAiYnVpbGQgYmFyIgotCi0g ICAgZW5kaWYKLQotLi4gbm90ZTo6IFRoZXJlIGFyZSBvdGhlciBwYWNrYWdlcyBhcm91bmQsIHRo YXQgZG8gbm90IGluc3RhbGwgZXZlcnl0aGluZyBieQotICBkZWZhdWx0LiBJZiBvdXIgbmV3IHBh Y2thZ2UgbmVlZHMgc29tZXRoaW5nIHNwZWNpYWwsIHdlIG11c3QgdGFrZSBhIGxvb2sKLSAgaW50 byB0aGUgbWVudSBvZiB0aGUgb3RoZXIgcGFja2FnZSBob3cgdG8gZm9yY2UgdGhlIHJlcXVpcmVk IGNvbXBvbmVudHMKLSAgdG8gYmUgaW5zdGFsbGVkIGFuZCBhZGQgdGhlIGNvcnJlc3BvbmRpbmcg YGBzZWxlY3RzYGAgdG8gb3VyIG93biBtZW51Ci0gIGZpbGUuIEluIHRoaXMgY2FzZSBpdCBkb2Vz IG5vdCBoZWxwIHRvIGVuYWJsZSB0aGUgcmVxdWlyZWQgcGFydHMgaW4gb3VyCi0gIHByb2plY3Qg Y29uZmlndXJhdGlvbiwgYmVjYXVzZSB0aGlzIGhhcyBubyBlZmZlY3Qgb24gdGhlIGJ1aWxkIG9y ZGVyIQotCi1NYW5hZ2luZyBQbGFpbiBNYWtlZmlsZSBQYWNrYWdlcwotXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl4KLQotTWFueSBwYWNrYWdlcyBhcmUgc3RpbGwgY29taW5nIHdpdGgg YSBwbGFpbiBgYE1ha2VmaWxlYGAuIFRoZSB1c2VyIGhhcwotdG8gYWRhcHQgaXQgdG8gbWFrZSBp dCB3b3JrIGluIGEgY3Jvc3MgY29tcGlsZSBlbnZpcm9ubWVudCBhcyB3ZWxsLgotUFRYZGlzdCBj YW4gYWxzbyBoYW5kbGUgdGhpcyBraW5kIG9mIHBhY2thZ2VzLiBXZSBvbmx5IGhhdmUgdG8gc3Bl Y2lmeQotYSBzcGVjaWFsICpwcmVwYXJlKiBhbmQgKmNvbXBpbGUqIHN0YWdlLgotCi1TdWNoIHBh Y2thZ2VzIG9mdGVuIGhhdmUgbm8gc3BlY2lhbCBuZWVkIGZvciBhbnkga2luZCBvZiBwcmVwYXJh dGlvbi4gSW4KLXRoaXMgd2UgbXVzdCBpbnN0cnVjdCBQVFhkaXN0IHRvIGRvIG5vdGhpbmcgaW4g dGhlICpwcmVwYXJlKiBzdGFnZToKLQotLi4gY29kZS1ibG9jazo6IG1ha2UKLQotICAgIEZPT19D T05GX1RPT0wgOj0gTk8KLQotVG8gY29tcGlsZSB0aGUgcGFja2FnZSwgd2UgY2FuIHVzZSBgYG1h a2VgYFwg4oCZcyBmZWF0dXJlIHRvIG92ZXJ3cml0ZQotdmFyaWFibGVzIHVzZWQgaW4gdGhlIGBg TWFrZWZpbGVgYC4gV2l0aCB0aGlzIGZlYXR1cmUgd2UgY2FuIHN0aWxsIHVzZQotdGhlIG9yaWdp bmFsIGBgTWFrZWZpbGVgYCBidXQgd2l0aCBvdXIgb3duIChjcm9zcyBjb21waWxlKSBzZXR0aW5n cy4KLQotTW9zdCBvZiB0aGUgdGltZSB0aGUgZ2VuZXJpYyBjb21waWxlIHJ1bGUgY2FuIGJlIHVz ZWQsIG9ubHkgYSBmZXcKLXNldHRpbmdzIGFyZSByZXF1aXJlZC4gRm9yIGEgd2VsbCBkZWZpbmVk IGBgTWFrZWZpbGVgYCBpdCBpcyBzdWZmaWNpZW50IHRvCi1zZXQgdXAgdGhlIGNvcnJlY3QgY3Jv c3MgY29tcGlsZSBlbnZpcm9ubWVudCBmb3IgdGhlICpjb21waWxlKiBzdGFnZToKLQotLi4gY29k ZS1ibG9jazo6IG1ha2UKLQotICAgIEZPT19NQUtFX0VOViA6PSAkKENST1NTX0VOVikKLQotYGBt YWtlYGAgd2lsbCBiZSBjYWxsZWQgaW4gdGhpcyBjYXNlIHdpdGg6Ci0KLWBgJChGT09fTUFLRV9F TlYpICQoTUFLRSkgLUMgJChGT09fRElSKSAkKEZPT19NQUtFX09QVClgYAotCi1TbywgaW4gdGhl IHJ1bGUgZmlsZSBvbmx5IHRoZSB0d28gdmFyaWFibGVzIGBgRk9PX01BS0VfRU5WYGAgYW5kCi1g YEZPT19NQUtFX09QVGBgIG11c3QgYmUgc2V0LCB0byBmb3J3YXJkIHRoZSByZXF1aXJlZCBzZXR0 aW5ncyB0byB0aGUKLXBhY2thZ2XigJlzIGJ1aWxkc3lzdGVtLiBJZiB0aGUgcGFja2FnZSBjYW5u b3QgYmUgYnVpbHQgaW4gcGFyYWxsZWwsIHdlCi1jYW4gYWxzbyBhZGQgdGhlIGBgRk9PX01BS0Vf UEFSwqA6PcKgTk9gYC4gYGBZRVNgYCBpcyB0aGUgZGVmYXVsdC4KLQotTWFuYWdpbmcgQ01ha2Uv UU1ha2UvTWVzb24gUGFja2FnZXMKLV5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Ci0KLUJ1aWxkaW5nIHBhY2thZ2VzIHRoYXQgdXNlIGBgY21ha2VgYCwgYGBxbWFrZWBgIG9yIGBg bWVzb25gYCBpcyBtdWNoIGxpa2UKLWJ1aWxkaW5nIHBhY2thZ2VzIHdpdGggYW4gYXV0b3Rvb2xz IGJhc2VkIGJ1aWxkc3lzdGVtLiBXZSBuZWVkIHRvIHNwZWNpZnkKLXRoZSBjb25maWd1cmF0aW9u IHRvb2w6Ci0KLS4uIGNvZGUtYmxvY2s6OiBtYWtlCi0KLSAgICBGT09fQ09ORl9UT09MIDo9IGNt YWtlCi0KLW9yCi0KLS4uIGNvZGUtYmxvY2s6OiBtYWtlCi0KLSAgICBGT09fQ09ORl9UT09MIDo9 IHFtYWtlCi0KLW9yIHJlc3BlY3RpdmVseQotCi0uLiBjb2RlLWJsb2NrOjogbWFrZQotCi0gICAg Rk9PX0NPTkZfVE9PTCA6PSBtZXNvbgotCi1BbmQgcHJvdmlkZSB0aGUgY29ycmVjdCBjb25maWd1 cmF0aW9uIG9wdGlvbnMuIFRoZSBzeW50YXggaXMgZGlmZmVyZW50IHNvCi1QVFhkaXN0IHByb3Zp ZGVzIGFkZGl0aW9uYWwgbWFjcm9zIHRvIHNpbXBsaWZ5IGNvbmZpZ3VyYWJsZSBmZWF0dXJlcy4K LUZvciBgYGNtYWtlYGAgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0eXBpY2FsbHkgbG9vayBs aWtlIHRoaXM6Ci0KLS4uIGNvZGUtYmxvY2s6OiBtYWtlCi0KLSAgICBGT09fQ09ORl9PUFQgOj0g XAotICAgIAkkKENST1NTX0NNQUtFX1VTUikgXAotICAgIAktREJVSUxEX1RFU1RTOkJPT0w9T0ZG IFwKLSAgICAJLURFTkFCTEVfQkFSOkJPT0w9JChjYWxsIHB0eC9vbm9mZiwgUFRYQ09ORl9GT09f QkFSKQotCi1Gb3IgYGBxbWFrZWBgIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdHlwaWNhbGx5 IGxvb2sgbGlrZSB0aGlzOgotCi0uLiBjb2RlLWJsb2NrOjogbWFrZQotCi0gICAgRk9PX0NPTkZf T1BUIDo9IFwKLSAgICAJJChDUk9TU19RTUFLRV9PUFQpIFwKLSAgICAJUFJFRklYPS91c3IKLQot QW5kIGZvciBgYG1lc29uYGAgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0eXBpY2FsbHkgbG9v ayBsaWtlIHRoaXM6Ci0KLS4uIGNvZGUtYmxvY2s6OiBtYWtlCi0KLSAgICBGT09fQ09ORl9PUFQg Oj0gXAotICAgIAkkKENST1NTX01FU09OX1VTUikgXAotICAgIAktRGJhcj0kKGNhbGwgcHR4L3Ry dWVmYWxzZSxQVFhDT05GX0ZPT19CQVIpCi0KLVBsZWFzZSBub3RlIHRoYXQgY3VycmVudGx5IG9u bHkgaG9zdCBhbmQgdGFyZ2V0IGBgY21ha2VgYFwvYGBtZXNvbmBgIHBhY2thZ2VzCi1hbmQgb25s eSB0YXJnZXQgYGBxbWFrZWBgIHBhY2thZ2VzIGFyZSBzdXBwb3J0ZWQuCi0KLU1hbmFnaW5nIFB5 dGhvbiBQYWNrYWdlcwotXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCi0KLUFzIHdpdGggYW55IG90 aGVyIHBhY2thZ2UsIHRoZSBjb3JyZWN0IGNvbmZpZ3VyYXRpb24gdG9vbCBtdXN0IGJlIHNlbGVj dGVkCi1mb3IgUHl0aG9uIHBhY2thZ2VzOgotCi0uLiBjb2RlLWJsb2NrOjogbWFrZQotCi0gICAg Rk9PX0NPTkZfVE9PTCA6PSBweXRob24KLQotLi4gbm90ZTo6IEZvciBQeXRob24zIHBhY2thZ2Vz IHRoZSB2YWx1ZSBtdXN0IGJlIGBgcHl0aG9uM2BgLgotCi1ObyBNYWtlZmlsZXMgYXJlIHVzZWQg d2hlbiBidWlsZGluZyBQeXRob24gcGFja2FnZXMgc28gdGhlIHVzdWFsIGBgbWFrZWBgCi1hbmQg YGBtYWtlIGluc3RhbGxgYCBmb3IgdGhlICpjb21waWxlKiBhbmQgKmluc3RhbGwqIHN0YWdlcyBj YW5ub3QgYmUgdXNlZC4KLVBUWGRpc3Qgd2lsbCBjYWxsIGBgcHl0aG9uIHNldHVwLnB5IGJ1aWxk YGAgYW5kIGBgcHl0aG9uIHNldHVwLnB5IGluc3RhbGxgYAotaW5zdGVhZC4KLQotLi4gbm90ZTo6 ICpGT08qIGlzIHN0aWxsIHRoZSBuYW1lIG9mIG91ciBleGFtcGxlIHBhY2thZ2UuIEl0IG11c3Qg YmUKLSAgcmVwbGFjZWQgYnkgdGhlIHJlYWwgcGFja2FnZSBuYW1lLgotCi0KLS4uIF9wYXRjaGlu Z19wYWNrYWdlczoKLQotUGF0Y2hpbmcgUGFja2FnZXMKLX5+fn5+fn5+fn5+fn5+fn5+Ci0KLVRo ZXJlIGNhbiBiZSB2YXJpb3VzIHJlYXNvbnMgd2h5IGEgcGFja2FnZSBtdXN0IGJlIHBhdGNoZWQ6 Ci0KLS0gIFBhY2thZ2UgaXMgYnJva2VuIGZvciBjcm9zcyBjb21waWxlIGVudmlyb25tZW50cwot Ci0tICBQYWNrYWdlIGlzIGJyb2tlbiB3aXRoaW4gYSBzcGVjaWZpYyBmZWF0dXJlCi0KLS0gIFBh Y2thZ2UgaXMgdnVsbmVyYWJsZSBhbmQgbmVlZHMgc29tZSBmaXhlcwotCi0tICBvciBhbnl0aGlu ZyBlbHNlICh0aGlzIGNhc2UgaXMgdGhlIG1vc3QgY29tbW9uIG9uZSkKLQotSWRlYWxseSwgdGhv c2UgcHJvYmxlbXMgc2hvdWxkIGJlIGFkZHJlc3NlZCBpbiB0aGUgb3JpZ2luYWwgcHJvamVjdCwK LXNvIGFueSBwYXRjaGVzIHlvdSBhZGQgdG8geW91ciBCU1Agb3IgdG8gUFRYZGlzdCBzaG91bGQg YWxzbyBiZSBzdWJtaXR0ZWQgdXBzdHJlYW0uCi1UaGUgdXBzdHJlYW0gcHJvamVjdCBjYW4gb2Z0 ZW4gcHJvdmlkZSBiZXR0ZXIgZmVlZGJhY2ssIHRoZXkgY2FuIGludGVncmF0ZSB5b3VyCi1wYXRj aCBpbnRvIGEgbmV3IHJlbGVhc2UsIGFuZCBhbHNvIG1haW50YWluIHlvdXIgY2hhbmdlcyBhcyBw YXJ0IG9mIHRoZSBwcm9qZWN0LgotVGhpcyB3YXkgd2UgbWFrZSBzdXJlIHRoYXQgYWxsIGFkdmFu dGFnZXMgb2YgdGhlIG9wZW4gc291cmNlIGlkZWEgd29yayBmb3IgdXM7Ci1hbmQgeW91ciBwYXRj aCBjYW4gYmUgcmVtb3ZlZCBhZ2FpbiBsYXRlciB3aGVuIGEgbmV3IHJlbGVhc2Ugb2YgdGhlIHBy b2plY3QgaXMKLWludGVncmF0ZWQgaW50byB5b3VyIEJTUCBvciBpbnRvIFBUWGRpc3QuCi0KLVBU WGRpc3QgaGFuZGxlcyBwYXRjaGluZyBhdXRvbWF0aWNhbGx5LgotQWZ0ZXIgZXh0cmFjdGluZyB0 aGUgYXJjaGl2ZSBvZiBhIHBhY2thZ2UsIFBUWGRpc3QgY2hlY2tzIGZvciB0aGUgZXhpc3RlbmNl IG9mCi1hIHBhdGNoIGRpcmVjdG9yeSBuYW1lZCBsaWtlIGl0cyBgYDxQS0c+X1BBVENIRVNgYCB2 YXJpYWJsZSwgb3IsIGlmIHRoaXMgdmFyaWFibGUKLWlzIG5vdCBzZXQsIGxpa2UgaXRzIGBgPFBL Rz5gYCB2YXJpYWJsZS4KLVRoZSBwYXRjaCBkaXJlY3RvcnkgaXMgdGhlbiBzZWFyY2hlZCBpbiBh bGwgbG9jYXRpb25zIGxpc3RlZCBieSB0aGUKLWBgUFRYRElTVF9QQVRIX1BBVENIRVNgYCB2YXJp YWJsZSwgYW5kIHRoZSBmaXJzdCBvbmUgZm91bmQgaXMgdXNlZC4KLVRha2UgYW4gZXhlbXBsYXJ5 IHBhY2thZ2UgYGBmb29gYCB3aXRoIHZlcnNpb24gYGAxLjEuMGBgOgotVGhlIHZhcmlhYmxlIGBg Rk9PYGAgd2lsbCBoYXZlIHRoZSB2YWx1ZSBgYGZvby0xLjEuMGBgLCBzbyBQVFhkaXN0IHdpbGwg bG9vayBmb3IKLWEgcGF0Y2ggZGlyZWN0b3J5IG5hbWVkIGBgZm9vLTEuMS4wYGAgaW4gdGhlIGZv bGxvd2luZyBsb2NhdGlvbnM6Ci0KLSMuIHRoZSBjdXJyZW50IGxheWVyOgotCi0gICBhLiBwcm9q ZWN0IChgYC4vcGF0Y2hlcy9mb28tMS4xLjBgYCkKLSAgIGIuIHBsYXRmb3JtIChgYC4vY29uZmln cy98cHR4ZGlzdFBsYXRmb3JtQ29uZmlnRGlyfC9wYXRjaGVzL2Zvby0xLjEuMGBgKQotCi0jLiBh bnkgOnJlZjpgYmFzZSBsYXllcnMgPGxheWVycy1pbi1wdHhkaXN0PmAsCi0gICBhcHBseWluZyB0 aGUgc2FtZSBzZWFyY2ggb3JkZXIgYXMgYWJvdmUgZm9yIGVhY2ggbGF5ZXIgcmVjdXJzaXZlbHkK LQotIy4gcHR4ZGlzdCAoYGA8cHR4ZGlzdC9pbnN0YWxsYXRpb24vcGF0aD4vcGF0Y2hlcy9mb28t MS4xLjBgYCkKLQotVGhlIHBhdGNoZXMgZnJvbSB0aGUgZmlyc3QgbG9jYXRpb24gZm91bmQgYXJl IHVzZWQuIE5vdGU6IER1ZSB0byB0aGlzCi1zZWFyY2ggb3JkZXIsIGEgUFRYZGlzdCBwcm9qZWN0 IGNhbiByZXBsYWNlIGdsb2JhbCBwYXRjaGVzIGZyb20gdGhlCi1QVFhkaXN0IGluc3RhbGxhdGlv bi4gVGhpcyBjYW4gYmUgdXNlZnVsIGlmIGEgcHJvamVjdCBzdGlja3MgdG8gYQotc3BlY2lmaWMg UFRYZGlzdCByZXZpc2lvbiBidXQgZml4ZXMgZnJvbSBhIG1vcmUgcmVjZW50IHJldmlzaW9uIG9m Ci1QVFhkaXN0IHNob3VsZCBiZSB1c2VkLgotCi1QVFhkaXN0IHVzZXMgdGhlIHV0aWxpdGllcyAq Z2l0KiwgKnBhdGNoKiBvciAqcXVpbHQqIHRvIHdvcmsgd2l0aAotcGF0Y2hlcyBvciBwYXRjaCBz ZXJpZXMuIFdlIHJlY29tbWVuZCAqZ2l0KiwgYXMgaXQgY2FuIG1hbmFnZSBwYXRjaAotc2VyaWVz IGluIGEgdmVyeSBlYXN5IHdheS4KLQotQ3JlYXRpbmcgYSBQYXRjaCBTZXJpZXMgZm9yIGEgUGFj a2FnZQotXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgotCi1UbyBjcmVhdGUg YSBwYXRjaCBzZXJpZXMgZm9yIHRoZSBmaXJzdCB0aW1lLCB3ZSBjYW4gcnVuIHRoZSBmb2xsb3dp bmcKLXN0ZXBzLiBXZSBhcmUgc3RpbGwgdXNpbmcgb3VyICpmb28tMS4xLjAqIGV4YW1wbGUgcGFj a2FnZSBoZXJlOgotCi1Vc2luZyBRdWlsdAotIiIiIiIiIiIiIiIKLQotV2UgY3JlYXRlIGEgc3Bl Y2lhbCBkaXJlY3RvcnkgZm9yIHRoZSBwYXRjaCBzZXJpZXMgaW4gdGhlIGxvY2FsIHByb2plY3QK LWRpcmVjdG9yeToKLQotLi4gY29kZS1ibG9jazo6IHRleHQKLQotICAgICQgbWtkaXIgLXAgcGF0 Y2hlcy9mb28tMS4xLjAKLQotUFRYZGlzdCBleHBlY3RzIGEgYGBzZXJpZXNgYCBmaWxlIGluIHRo ZSBwYXRjaCBkaXJlY3RvcnkgYW5kIGF0IGxlYXN0Ci1vbmUgcGF0Y2guIE90aGVyd2lzZSBpdCBm YWlscy4gRHVlIHRvIHRoZSBmYWN0IHRoYXQgd2UgZG8gbm90IGhhdmUgYW55Ci1wYXRjaCBjb250 ZW50IHlldCwgd2XigJlsbCBzdGFydCB3aXRoIGEgZHVtbXkgZW50cnkgaW4gdGhlIGBgc2VyaWVz YGAgZmlsZQotYW5kIGFuIGVtcHR5IGBgcGF0Y2hgYCBmaWxlLgotCi0uLiBjb2RlLWJsb2NrOjog dGV4dAotCi0gICAgJCB0b3VjaCBwYXRjaGVzL2Zvby0xLjEuMC9kdW1teQotICAgICQgZWNobyBk dW1teSA+IHBhdGNoZXMvZm9vLTEuMS4wL3NlcmllcwotCi1OZXh0IGlzIHRvIGV4dHJhY3QgdGhl IHBhY2thZ2UgKGlmIGFscmVhZHkgZG9uZSwgd2UgbXVzdCByZW1vdmUgaXQKLWZpcnN0KToKLQot Li4gY29kZS1ibG9jazo6IHRleHQKLQotICAgICQgcHR4ZGlzdCBleHRyYWN0IGZvbwotCi1UaGlz IHdpbGwgZXh0cmFjdCB0aGUgYXJjaGl2ZSBhbmQgY3JlYXRlIGEgc3ltYm9saWMgbGluayBpbiB0 aGUgYnVpbGQKLWRpcmVjdG9yeSBwb2ludGluZyB0byBvdXIgbG9jYWwgcGF0Y2ggZGlyZWN0b3J5 LiBXb3JraW5nIHRoaXMgd2F5IHdpbGwKLWVuc3VyZSB0aGF0IHdlIGRvIG5vdCBsb3NlIG91ciBj cmVhdGVkIHBhdGNoZXMgaWYgd2UgZW50ZXIKLWBgcHR4ZGlzdCBjbGVhbiBmb29gYCBieSBhY2Np ZGVudC4gSW4gb3VyIGNhc2UgdGhlIHBhdGNoZXMgYXJlIHN0aWxsCi1wcmVzZW50IGluIGBgcGF0 Y2hlcy9mb28tMS4xLjBgYCBhbmQgY2FuIGJlIHVzZWQgdGhlIG5leHQgdGltZSB3ZQotZXh0cmFj dCB0aGUgcGFja2FnZSBhZ2Fpbi4KLQotQWxsIHdlIGhhdmUgdG8gZG8gbm93IGlzIHRvIGRvIHRo ZSBtb2RpZmljYXRpb24gd2UgbmVlZCB0byBtYWtlIHRoZQotcGFja2FnZSB3b3JrLiBXZSBjaGFu Z2UgaW50byB0aGUgYnVpbGQgZGlyZWN0b3J5IGFuZCB1c2UgcXVpbHRfIHRvCi1jcmVhdGUgbmV3 IHBhdGNoZXMsIGFkZCBmaWxlcyB0byByZXNwZWN0aXZlIHBhdGNoZXMsIG1vZGlmeSB0aGVzZSBm aWxlcwotYW5kIHJlZnJlc2ggdGhlIHBhdGNoZXMgdG8gc2F2ZSBvdXIgY2hhbmdlcy4KLVNlZSB0 aGUgKnF1aWx0KiBkb2N1bWVudGF0aW9uIChgYG1hbiAxIHF1aWx0YGApIGZvciBtb3JlIGluZm9y bWF0aW9uLgotCi0uLiBub3RlOjogRm9yIHBhdGNoZXMgdGhhdCBhcmUgaW50ZW5kZWQgZm9yIFBU WGRpc3QgdXBzdHJlYW0gdXNlIHRoZSBnaXQKLSAgd29ya2Zsb3cgZGVzY3JpYmVkIGJlbG93IHRv IGdldCBwcm9wZXIgcGF0Y2ggaGVhZGVycy4KLQotLi4gX3F1aWx0OiBodHRwOi8vc2F2YW5uYWgu bm9uZ251Lm9yZy9wcm9qZWN0cy9xdWlsdAotCi1Vc2luZyBHaXQKLSIiIiIiIiIiIgotCi1DcmVh dGUgdGhlIHBhdGNoIGRpcmVjdG9yeSBsaWtlIGFib3ZlIGZvciAqcXVpbHQqLAotYnV0IG9ubHkg YWRkIGFuIGVtcHR5IHNlcmllcyBmaWxlOgotCi0uLiBjb2RlLWJsb2NrOjogdGV4dAotCi0gICAg JCBta2RpciAtcCBwYXRjaGVzL2Zvby0xLjEuMAotICAgICQgdG91Y2ggcGF0Y2hlcy9mb28tMS4x LjAvc2VyaWVzCi0KLVRoZW4gZXh0cmFjdCB0aGUgcGFja2FnZSB3aXRoIGFuIGFkZGl0aW9uYWwg Y29tbWFuZCBsaW5lIHN3aXRjaDoKLQotLi4gY29kZS1ibG9jazo6IHRleHQKLQotICAgICQgcHR4 ZGlzdCAtLWdpdCBleHRyYWN0IGZvbwotCi1UaGUgZW1wdHkgc2VyaWVzIGZpbGUgbWFrZXMgUFRY ZGlzdCBjcmVhdGUgYSBHaXQgcmVwb3NpdG9yeSBpbiB0aGUKLXJlc3BlY3RpdmUgcGFja2FnZSBi dWlsZCBkaXJlY3RvcnksCi1hbmQgaW1wb3J0IHRoZSBwYWNrYWdlIHNvdXJjZSBhcyB0aGUgZmly c3QgY29tbWl0LgotCi0uLiBub3RlOjogT3B0aW9uYWxseSwgeW91IGNhbiBlbmFibGUgdGhlIHNl dHRpbmcgKkRldmVsb3BlciBPcHRpb25zIOKGkgotICB1c2UgZ2l0IHRvIGFwcGx5IHBhdGNoZXMq IGluIGBwdHhkaXN0IHNldHVwYCB0byBnZXQgdGhpcyBiZWhhdmlvdXIKLSAgYXMgYSBkZWZhdWx0 IGZvciBldmVyeSBwYWNrYWdlLgotICBIb3dldmVyLCBub3RlIHRoYXQgdGhpcyBzZXR0aW5nIGlz IG1lYW50IGZvciBkZXZlbG9wbWVudCBvbmx5LCBhbmQgY2FuIGxlYWQKLSAgdG8gZmFpbHVyZXMg 4oCTIHNvbWUgcGFja2FnZXMgdHJ5IHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBiZWluZyBjb21w aWxlZCBmcm9tCi0gIGEgR2l0IHNvdXJjZSB0cmVlLCBhbmQgYmVoYXZlIGRpZmZlcmVudGx5IGlu IHRoYXQgY2FzZS4KLQotVGhlbiB5b3UgY2FuIGNoYW5nZSBpbnRvIHRoZSBwYWNrYWdlIGJ1aWxk IGRpcmVjdG9yeQotKGBgcGxhdGZvcm0tPG5hbWU+L2J1aWxkLXRhcmdldC9mb28tMS4xLjBgYCks Ci1wYXRjaCB0aGUgcmVxdWlyZWQgc291cmNlIGZpbGVzLAotYW5kIG1ha2UgR2l0IGNvbW1pdHMg b24gdGhlIHdheS4KLVRoZSBHaXQgaGlzdG9yeSBzaG91bGQgbm93IGxvb2sgc29tZXRoaW5nIGxp a2UgdGhpczoKLQotLi4gY29kZS1ibG9jazo6IHRleHQKLQotICAgICQgZ2l0IGxvZyAtLW9uZWxp bmUgLS1kZWNvcmF0ZQotICAgICogZGYzNDNlODIxODUxIChIRUFEIC0+IG1hc3RlcikgTWFrZWZp bGU6IGRvbid0IGJ1aWxkIHRoZSB0ZXN0cwotICAgICogNjVhMzYwYzJiZDYwIHN0cmZyeS5jOiBm cm9ibmljYXRlIHRoZSBleGN1c2F0b3IKLSAgICAqIGZkYzMxNWY2ODQ0YyAodGFnOiBmb29iYXIt MS4xLjAsIHRhZzogYmFzZSkgaW5pdGlhbCBjb21taXQKLQotRmluYWxseSwgY2FsbCBgYGdpdCBw dHgtcGF0Y2hlc2BgIHRvIHRyYW5zZm9ybSB0aG9zZSBHaXQgY29tbWl0cyBpbnRvIHRoZSBwYXRj aAotc2VyaWVzIGluIHRoZSBgYHBhdGNoZXMvZm9vLTEuMS4wYGAgZm9sZGVyLgotVGhpcyB3YXkg dGhleSBkb24ndCBnZXQgbG9zdCB3aGVuIGNsZWFuaW5nIHRoZSBwYWNrYWdlLgotCi0uLiBub3Rl OjogUFRYZGlzdCB3aWxsIG9ubHkgY3JlYXRlIGEgR2l0IHJlcG9zaXRvcnkgZm9yIHBhY2thZ2Vz IHdpdGgKLSAgcGF0Y2hlcy4gIFRvIHVzZSBHaXQgdG8gZ2VuZXJhdGUgdGhlIGZpcnN0IHBhdGNo LCBjcmVhdGUgYW4gZW1wdHkgc2VyaWVzCi0gIGZpbGUgYGBwYXRjaGVzL2Zvb2Jhci0xLjEuMC9z ZXJpZXNgYCBiZWZvcmUgZXh0cmFjdGluZyB0aGUgcGFja2FnZXMuIFRoaXMKLSAgd2lsbCB0ZWxs IFBUWGRpc3QgdG8gdXNlIEdpdCBhbnl3YXlzIGFuZCBgYGdpdCBwdHgtcGF0Y2hlc2BgIHdpbGwg cHV0IHRoZQotICBwYXRjaGVzIHRoZXJlLgotCi1Cb3RoIGFwcHJvYWNoZXMgKEdpdCBhbmQgcXVp bHQpIGFyZSBub3Qgc3VpdGFibGUgZm9yIG1vZGlmeWluZyBmaWxlcwotdGhhdCBhcmUgYXV0b2dl bmVyYXRlZCBpbiBhdXRvdG9vbHMtYmFzZWQgYnVpbGRzeXN0ZW1zLgotUmVmZXIgdG8gdGhlIHNl Y3Rpb24gOnJlZjpgY29uZmlndXJlX3JlYnVpbGRgIG9uIGhvdyBQVFhkaXN0IGNhbgotaGFuZGxl IHRoaXMgc3BlY2lhbCB0YXNrLgotCi1BZGRpbmcgTW9yZSBQYXRjaGVzIHRvIGEgUGFja2FnZQot Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KLQotSWYgd2Ugd2FudCB0byBhZGQgbW9y ZSBwYXRjaGVzIHRvIGFuIGFscmVhZHkgcGF0Y2hlZCBwYWNrYWdlLCB3ZSBjYW4gdXNlCi1uZWFy bHkgdGhlIHNhbWUgd2F5IGFzIGNyZWF0aW5nIHBhdGNoZXMgZm9yIHRoZSBmaXJzdCB0aW1lLiBC dXQgaWYgdGhlCi1wYXRjaCBzZXJpZXMgY29tZXMgZnJvbSB0aGUgUFRYZGlzdCBtYWluIGluc3Rh bGxhdGlvbiwgd2UgZG8gbm90IGhhdmUKLXdyaXRlIHBlcm1pc3Npb25zIHRvIHRoZXNlIGRpcmVj dG9yaWVzIChkbyBORVZFUiB3b3JrIG9uIHRoZSBtYWluCi1pbnN0YWxsYXRpb24gZGlyZWN0b3Jp ZXMsIE5FVkVSLCBORVZFUiwgTkVWRVIpLiBEdWUgdG8gdGhlIHNlYXJjaCBvcmRlcgotaW4gd2hp Y2ggUFRYZGlzdCBzZWFyY2hlcyBmb3IgcGF0Y2hlcyBmb3IgYSBzcGVjaWZpYyBwYWNrYWdlLCB3 ZSBjYW4KLWNvcHkgdGhlIGdsb2JhbCBwYXRjaCBzZXJpZXMgdG8gb3VyIGxvY2FsIHByb2plY3Qg ZGlyZWN0b3J5LiBOb3cgd2UgaGF2ZQotdGhlIHBlcm1pc3Npb25zIHRvIGFkZCBtb3JlIHBhdGNo ZXMgb3IgbW9kaWZ5IHRoZSBleGlzdGluZyBvbmVzLiBBbHNvCi0qcXVpbHQqIGFuZCAqZ2l0KiBh cmUgb3VyIGZyaWVuZHMgaGVyZSB0byBtYW5hZ2UgdGhlIHBhdGNoIHNlcmllcy4KLQotSWYgd2Ug dGhpbmsgdGhhdCBvdXIgbmV3IHBhdGNoZXMgYXJlIHZhbHVhYmxlIGFsc28gZm9yIG90aGVycywg b3IgdGhleQotZml4IGFuIGVycm9yLCBpdCBjb3VsZCBiZSBhIGdvb2QgaWRlYSB0byBzZW5kIHRo ZXNlIHBhdGNoZXMgdG8gUFRYZGlzdAotbWFpbmxpbmUsIGFuZCB0byB0aGUgdXBzdHJlYW0gcHJv amVjdCB0b28uCi0KLQotLi4gX2NvbmZpZ3VyZV9yZWJ1aWxkOgotCi1Nb2RpZnlpbmcgQXV0b3Rv b2xpemVkIFBhY2thZ2VzCi1eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCi0KLUF1dG90 b29saXplZCBwYWNrYWdlcyBhcmUgdmVyeSBwaWNreSB3aGVuIGF1dG9tYXRpY2FsbHkgZ2VuZXJh dGVkIGZpbGVzCi1nZXQgcGF0Y2hlZC4gVGhlIHBhdGNoIG9yZGVyIGlzIHZlcnkgaW1wb3J0YW50 IGluIHRoaXMgY2FzZSBhbmQKLXNvbWV0aW1lcyBpdCBldmVuIGZhaWxzIGFuZCBub2JvZHkga25v d3Mgd2h5LgotCi1UbyBpbXByb3ZlIGEgcGFja2FnZeKAmXMgYXV0b3Rvb2xzLWJhc2VkIGJ1aWxk IHN5c3RlbSwgUFRYZGlzdCBjb21lcyB3aXRoCi1pdHMgb3duIHByb2plY3QgbG9jYWwgYXV0b3Rv b2xzIHRvIHJlZ2VuZXJhdGUgdGhlIGF1dG90b29scyB0ZW1wbGF0ZQotZmlsZXMsIGluc3RlYWQg b2YgcGF0Y2hpbmcgdGhlbS4gV2l0aCB0aGlzIGZlYXR1cmUsIG9ubHkgdGhlIHRlbXBsYXRlCi1m aWxlcyBtdXN0IGJlIHBhdGNoZWQsIHRoZSByZXF1aXJlZCBgYGNvbmZpZ3VyZWBgIHNjcmlwdCBh bmQgdGhlCi1gYE1ha2VmaWxlLmluYGAgZmlsZXMgYXJlIHJlZ2VuZXJhdGVkIGluIHRoZSBmaW5h bCBzdGFnZXMgb2YgdGhlCi0qcHJlcGFyZSogc3RlcC4KLQotVGhpcyBmZWF0dXJlIHdvcmtzIGxp a2UgdGhlIHJlZ3VsYXIgcGF0Y2hpbmcgbWVjaGFuaXNtLiBUaGUgb25seQotZGlmZmVyZW5jZSBp cyB0aGUgYWRkaXRpb25hbCBgYGF1dG9nZW4uc2hgYCBmaWxlIGluIHRoZSBwYXRjaCBkaXJlY3Rv cnkuCi1JZiBpdCBleGlzdHMgYW5kIGhhcyBleGVjdXRpb24gcGVybWlzc2lvbnMsIGl0IHdpbGwg YmUgY2FsbGVkIGFmdGVyIHRoZQotcGFja2FnZSB3YXMgcGF0Y2hlZCAod2hpbGUgdGhlICpleHRy YWN0KiBzdGFnZSBpcyBydW5uaW5nKS4KLQotSXRzIGNvbnRlbnQgZGVwZW5kcyBvbiBkZXZlbG9w ZXIgbmVlZHM7IGZvciB0aGUgbW9zdCBzaW1wbGUgY2FzZSB0aGUKLWNvbnRlbnQgY2FuIGJlOgot Ci0uLiBjb2RlLWJsb2NrOjogYmFzaAotCi0gICAgIyEvYmluL2Jhc2gKLQotICAgIGFjbG9jYWwg JEFDTE9DQUxfRkxBR1MKLQotICAgIGxpYnRvb2xpemUgXAotICAgICAgICAgICAgLS1mb3JjZSBc Ci0gICAgICAgICAgICAtLWNvcHkKLQotICAgIGF1dG9yZWNvbmYgXAotICAgICAgICAgICAgLS1m b3JjZSBcCi0gICAgICAgICAgICAtLWluc3RhbGwgXAotICAgICAgICAgICAgLS13YXJuaW5ncz1j cm9zcyBcCi0gICAgICAgICAgICAtLXdhcm5pbmdzPXN5bnRheCBcCi0gICAgICAgICAgICAtLXdh cm5pbmdzPW9ic29sZXRlIFwKLSAgICAgICAgICAgIC0td2FybmluZ3M9dW5zdXBwb3J0ZWQKLQot Li4gbm90ZTo6IEluIHRoaXMgd2F5IG5vdCB5ZXQgYXV0b3Rvb2xpemVkIHBhY2thZ2UgY2FuIGJl IGF1dG90b29saXplZC4gV2UKLSAganVzdCBoYXZlIHRvIGFkZCB0aGUgY29tbW9uIGF1dG90b29s IHRlbXBsYXRlIGZpbGVzIChgYGNvbmZpZ3VyZS5hY2BgCi0gIGFuZCBgYE1ha2VmaWxlLmFtYGAg Zm9yIGV4YW1wbGUpIHZpYSBhIHBhdGNoIHNlcmllcyB0byB0aGUgcGFja2FnZQotICBzb3VyY2Ug YW5kIHRoZSBgYGF1dG9nZW4uc2hgYCB0byB0aGUgcGF0Y2ggZGlyZWN0b3J5LgotCi0uLiBfYWRk aW5nX2ZpbGVzOgotCi1BZGRpbmcgQmluYXJ5IE9ubHkgRmlsZXMKLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQotCi1Tb21ldGltZXMgYSBmZXcgYmluYXJ5IGZpbGVzIGhhdmUgdG8gYmUgYWRkZWQg aW50byB0aGUgcm9vdCBmaWxlc3lzdGVtLgotT3IgLSB0byBiZSBtb3JlIHByZWNpc2UgLSBzb21l IGZpbGVzLCB0aGF0IGRvIG5vdCBuZWVkIHRvIGJlIGJ1aWx0IGluCi1hbnkgd2F5LgotCi1PbiB0 aGUgb3RoZXIgaGFuZCwgc29tZXRpbWVzIGZpbGVzIHNob3VsZCBiZSBpbmNsdWRlZCB0aGF0IGFy ZSBub3QKLWNvdmVyZWQgYnkgYW55IG9wZW4gc291cmNlIGxpY2Vuc2UgYW5kIHNvLCBzaG91bGQg bm90IGJlIHNoaXBwZWQgaW4gdGhlCi1zb3VyY2UgY29kZSBmb3JtYXQuCi0KLUFkZCBCaW5hcnkg RmlsZXMgRmlsZSBieSBGaWxlCi1+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgotCi1Eb2lu ZyB0byBvbiBhIGZpbGUgYnkgZmlsZSBiYXNlIGNhbiBoYXBwZW4gYnkganVzdCB1c2luZyB0aGUg YGBpbnN0YWxsX2NvcHlgYAotbWFjcm8gaW4gdGhlICp0YXJnZXRpbnN0YWxsKiBzdGFnZSBpbiBv dXIgb3duIGN1c3RvbWl6ZWQgcnVsZXMgZmlsZS4KLQotLi4gY29kZS1ibG9jazo6IG5vbmUKLQot ICAgIEAkKGNhbGwgaW5zdGFsbF9jb3B5LCBiaW5hcnlfZXhhbXBsZSwgMCwgMCwgMDY0NCwgXAot ICAgICAgIDwvcGF0aC90by9zb21lL2ZpbGUvPnB0eF9sb2dvLnBuZywgXAotICAgICAgIC9leGFt cGxlL3B0eF9sb2dvLnBuZykKLQotSXQgY29waWVzIHRoZSBmaWxlIGBgcHR4X2xvZ28ucG5nYGAg ZnJvbSBzb21lIGxvY2F0aW9uIHRvIHRhcmdldOKAmXMgcm9vdAotZmlsZXN5c3RlbS4gUmVmZXIg OnJlZjpgaW5zdGFsbF9jb3B5YCBmb3IgZnVydGhlciBpbmZvcm1hdGlvbiBhYm91dCB1c2luZyB0 aGUKLWBgaW5zdGFsbF9jb3B5YGAgbWFjcm8uCi0KLVRoZSBkaXNhZHZhbnRhZ2Ugb2YgdGhpcyBt ZXRob2QgaXM6IGlmIHdlIHdhbnQgdG8gaW5zdGFsbCBtb3JlIHRoYW4gb25lCi1maWxlLCB3ZSBu ZWVkIG9uZSBjYWxsIHRvIHRoZSBgYGluc3RhbGxfY29weWBgIG1hY3JvIHBlciBmaWxlLiBUaGlz IGlzCi1ldmVuIGhhcmRlciBpZiBub3Qgb25seSBhIHNldCBvZiBmaWxlcyBpcyB0byBiZSBpbnN0 YWxsZWQsIGJ1dCBhIHdob2xlCi1kaXJlY3RvcnkgdHJlZSB3aXRoIGZpbGVzIGluc3RlYWQuCi0K LUFkZCBCaW5hcnkgRmlsZXMgdmlhIGFuIEFyY2hpdmUKLX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn4KLQotSWYgYSB3aG9sZSB0cmVlIG9mIGZpbGVzIGlzIHRvIGJlIGluc3RhbGxlZCwg d29ya2luZyB3aXRoIGEgKnRhciogYmFzZWQKLWFyY2hpdmUgY291bGQgbWFrZSBsaWZlIGVhc2ll ci4gSW4gdGhpcyBjYXNlIHRoZSBhcmNoaXZlIGl0c2VsZiBwcm92aWRlcwotYWxsIHRoZSByZXF1 aXJlZCBpbmZvcm1hdGlvbiB0aGUgZmlsZXMgYXJlIG5lZWRpbmcgdG8gYmUgaW5zdGFsbGVkIGlu IGEKLWNvcnJlY3QgbWFubmVyOgotCi0tICB0aGUgZmlsZSBpdHNlbGYgYW5kIGl0cyBuYW1lCi0K LS0gIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGFuZCB0aGUgZmluYWwgbG9jYXRpb24gb2YgZXZl cnkgZmlsZSBpbiB0aGlzCi0gICBzdHJ1Y3R1cmUKLQotLSAgdXNlciBhbmQgZ3JvdXAgSUQgb24g YSBwZXIgZmlsZSBiYXNlCi0KLS4uIGNvZGUtYmxvY2s6OiBub25lCi0KLSAgICBAJChjYWxsIGlu c3RhbGxfYXJjaGl2ZSwgYmluYXJ5X2V4YW1wbGUsIC0sIC0sIFwKLSAgICAgICA8L3BhdGgvdG8v YW4vPmFyY2hpdmUudGd6LCAvKQotCi1SZWZlciA6cmVmOmBpbnN0YWxsX2FyY2hpdmVgIGZvciBm dXJ0aGVyIGluZm9ybWF0aW9uIGFib3V0IHVzaW5nIHRoZQotYGBpbnN0YWxsX2FyY2hpdmVgYCBt YWNyby4KLQotVXNpbmcgYW4gYXJjaGl2ZSBjYW4gYmUgdXNlZnVsIHRvIGluc3RhbGwgcGFydHMg b2YgdGhlIHJvb3QgZmlsZXN5c3RlbQotdGhhdCBhcmUgbm90IGNvdmVyZWQgYnkgYW55IG9wZW4g c291cmNlIGxpY2Vuc2UuIEl0cyBwb3NzaWJsZSB0byBzaGlwCi10aGUgYmluYXJpZXMgd2l0aGlu IHRoZSByZWd1bGFyIEJTUCwgd2l0aG91dCB0aGUgbmVlZCBmb3IgdGhlaXIgc291cmNlcy4KLUhv d2V2ZXIgaXQgaXMgcG9zc2libGUgZm9yIHRoZSBjdXN0b21lciB0byByZS1jcmVhdGUgZXZlcnl0 aGluZyByZXF1aXJlZAotZnJvbSB0aGUgQlNQIHRvIGdldCB0aGVpciB0YXJnZXQgdXAgYW5kIHJ1 bm5pbmcgYWdhaW4uCi0KLUFub3RoZXIgdXNlIGNhc2UgZm9yIHRoZSBhcmNoaXZlIG1ldGhvZCBj b3VsZCBiZSB0aGUgc3VwcG9ydCBmb3IKLWRpZmZlcmVudCBkZXZlbG9wbWVudCB0ZWFtcy4gT25l IHRlYW0gcHJvdmlkZXMgYSBzb2Z0d2FyZSBjb21wb25lbnQgaW4KLXRoZSBhcmNoaXZlIGZvcm1h dCwgdGhlIG90aGVyIHRlYW0gZG9lcyBub3QgbmVlZCB0byBidWlsZCBpdCBidXQgY2FuIHVzZQot aXQgaW4gdGhlIHNhbWUgd2F5IHRoYW4gZXZlcnkgb3RoZXIgc29mdHdhcmUgY29tcG9uZW50Lgot Ci1DcmVhdGluZyBhIFJ1bGVzIEZpbGUKLX5+fn5+fn5+fn5+fn5+fn5+fn5+fgotCi1MZXQgUFRY ZGlzdCBjcmVhdGUgb25lIGZvciB1cy4KLQotLi4gY29kZS1ibG9jazo6IHRleHQKLQotICAgICQg cHR4ZGlzdCBuZXdwYWNrYWdlIGZpbGUKLQotICAgIHB0eGRpc3Q6IGNyZWF0aW5nIGEgbmV3ICdm aWxlJyBwYWNrYWdlOgotCi0gICAgcHR4ZGlzdDogZW50ZXIgcGFja2FnZSBuYW1lLi4uLi4uLjog bXlfYmluZmlsZXMKLSAgICBwdHhkaXN0OiBlbnRlciB2ZXJzaW9uIG51bWJlci4uLi4uOiAxCi0g ICAgcHR4ZGlzdDogZW50ZXIgcGFja2FnZSBhdXRob3IuLi4uLjogTXkgTmFtZSA8bWVAbXktb3Jn LmNvbT4KLSAgICBwdHhkaXN0OiBlbnRlciBwYWNrYWdlIHNlY3Rpb24uLi4uOiByb290ZnMKLQot Tm93IHR3byBuZXcgZmlsZXMgYXJlIHByZXNlbnQgaW4gdGhlIEJTUDoKLQotIy4gYGBydWxlcy9t eV9iaW5maWxlcy5pbmBgIFRoZSB0ZW1wbGF0ZSBmb3IgdGhlIG1lbnUKLQotIy4gYGBydWxlcy9t eV9iaW5maWxlcy5tYWtlYGAgVGhlIHJ1bGVzIHRlbXBsYXRlCi0KLUJvdGggZmlsZXMgbm93IG11 c3QgYmUgY3VzdG9taXplZCB0byBtZWV0IG91ciByZXF1aXJlbWVudHMuIER1ZSB0byB0aGUKLWFu c3dlciAqcm9vdGZzKiB0byB0aGUg4oCcYGBlbnRlciBwYWNrYWdlIHNlY3Rpb25gYOKAnSBxdWVz dGlvbiwgd2Ugd2lsbAotZmluZCB0aGUgbmV3IG1lbnUgZW50cnkgaW46Ci0KLS4uIGNvZGUtYmxv Y2s6OiB0ZXh0Ci0KLSAgICBSb290IEZpbGVzeXN0ZW0gLS0tPgotICAgIAk8ID4gbXlfYmluZmls ZXMgKE5FVykKLQotRW5hYmxpbmcgdGhpcyBuZXcgZW50cnkgd2lsbCBhbHNvIHJ1biBvdXIgc3Rh Z2VzIGluCi1gYHJ1bGVzL215X2JpbmZpbGVzLm1ha2VgYCB0aGUgbmV4dCB0aW1lIHdlIGVudGVy OgotCi0uLiBjb2RlLWJsb2NrOjogdGV4dAotCi0gICAgJCBwdHhkaXN0IGdvCi0KLUNyZWF0aW5n IE5ldyBQYWNrYWdlIFRlbXBsYXRlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0K LUZvciBsYXJnZXIgcHJvamVjdHMgaXQgY2FuIGJlIGNvbnZlbmllbnQgdG8gaGF2ZSBwcm9qZWN0 IHNwZWNpZmljIHBhY2thZ2UKLXRlbXBsYXRlcy4gVGhpcyBjYW4gYmUgYWNoaWV2ZWQgYnkgZWl0 aGVyIG1vZGlmeWluZyBleGlzdGluZyB0ZW1wbGF0ZXMgb3IKLWJ5IGNyZWF0aW5nIGNvbXBsZXRl bHkgbmV3IHRlbXBsYXRlcy4KLQotTW9kaWZ5aW5nIGEgVGVtcGxhdGUKLX5+fn5+fn5+fn5+fn5+ fn5+fn5+Ci0KLUEgdGVtcGxhdGUgY2FuIGJlIG1vZGlmaWVkIGJ5IHByb3ZpZGluZyBuZXcgaW5w dXQgZmlsZXMuIFRoaXMgaXMgZWFzaWVyCi10aGFuIGNyZWF0aW5nIGEgbmV3IHRlbXBsYXRlIGJ1 dCBkb2VzIG5vdCBhbGxvdyB0byBzcGVjaWZ5IG5ldyB2YXJpYWJsZXMgdG8KLXN1YnN0aXR1dGUg aW4gdGhlIGlucHV0IGZpbGVzLgotCi1QVFhkaXN0IGxvb2tzIGZvciB0ZW1wbGF0ZSBmaWxlcyB0 aGUgc2FtZSB3YXkgaXQgbG9va3MgZm9yIHJ1bGVzIGZpbGVzLiBUaGUKLW9ubHkgZGlmZmVyZW5j ZSBpcywgdGhhdCBpdCBzZWFyY2hlcyBpbiB0aGUgYGB0ZW1wbGF0ZXMvYGAgc3ViZGlyZWN0b3J5 LgotU28gYSBtb2RpZmllZCBgYC4vcnVsZXMvdGVtcGxhdGVzL3RlbXBsYXRlLXRhcmdldC1tYWtl YGAgY2FuIGJlIHVzZWQgdG8KLXR3ZWFrIHRoZSBgYHRhcmdldGBgIHRlbXBsYXRlLgotCi1DcmVh dGluZyBhIE5ldyBUZW1wbGF0ZQotfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KLQotRm9yIGEgY29t cGxldGVseSBuZXcgdGVtcGxhdGUsIHNvbWUgYmFzaCBzY3JpcHRpbmcgaXMgcmVxdWlyZWQuIEFs bCBzaGVsbAotY29kZSBtdXN0IGJlIHBsYWNlZCBpbiBhIGZpbGUgbmFtZWQgbGlrZSB0aGlzOgot YGAuL3NjcmlwdHMvbGliL3B0eGRfbGliXyouc2hgYC4KLQotVGhlIG1pbmltdW0gcmVxdWlyZW1l bnQgZm9yIGEgbmV3IHRlbXBsYXRlIGlzOgotLSAgYSBzaGVsbCBmdW5jdGlvbiB0aGF0IGNyZWF0 ZXMgdGhlIG5ldyBwYWNrYWdlCi0tICByZWdpc3RlcmluZyB0aGUgbmV3IHRlbXBsYXRlCi0KLS4u IGNvZGUtYmxvY2s6OiBzaAotCi0gICAgcHR4ZF90ZW1wbGF0ZV9uZXdfbXlwa2coKSB7Ci0gICAg ICAgICMgY3JlYXRlIHRoZSBwYWNrYWdlIGhlcmUKLSAgICB9Ci0gICAgZXhwb3J0IC1mIHB0eGRf dGVtcGxhdGVfbmV3X215cGtnCi0gICAgcHR4ZF90ZW1wbGF0ZV9oZWxwX2xpc3RbJHsjcHR4ZF90 ZW1wbGF0ZV9oZWxwX2xpc3RbQF19XT0ibXlwa2ciCi0gICAgcHR4ZF90ZW1wbGF0ZV9oZWxwX2xp c3RbJHsjcHR4ZF90ZW1wbGF0ZV9oZWxwX2xpc3RbQF19XT0iY3JlYXRlIGF3ZXNvbWUgbXlwa2cg cGFja2FnZSIKLQotUFRYZGlzdCBwcm92aWRlcyBzZXZlcmFsIGhlbHBlciBmdW5jdGlvbnMgdG8g c2ltcGxpZnkgdGhlIHRlbXBsYXRlLgotVXNpbmcgdGhvc2UgZnVuY3Rpb25zLCB0aGUgcGFja2Fn ZSBjcmVhdGlvbiBwcm9jZXNzIGlzIHNwbGl0IGludG8gdHdvCi1wYXJ0czoKLQotLSAgcXVlcnkg dGhlIHVzZXIgZm9yIGlucHV0IGFuZCBleHBvcnQgdmFyaWFibGVzLgotLSAgY3JlYXRlIHRoZSBu ZXcgcGFja2FnZSBmaWxlcyBmcm9tIHRoZSB0ZW1wbGF0ZSBzb3VyY2UgZmlsZXMgYnkKLSAgIHN1 YnN0aXR1dGluZyBhbGwgaW5zdGFuY2VzIG9mIGBgQDx2YXJpYWJsZT5AYGAgd2l0aCB0aGUgdmFs dWUgb2YgdGhlCi0gICBjb3JyZXNwb25kaW5nIHZhcmlhYmxlLgotCi1BIHNpbXBsZSB0ZW1wbGF0 ZSBmdW5jdGlvbiBjb3VsZCBsb29rIGxpa2UgdGhpczoKLQotLi4gY29kZS1ibG9jazo6IHNoCi0K LSAgICBwdHhkX3RlbXBsYXRlX25ld19teXBrZygpIHsKLSAgICAgICAgcHR4ZF90ZW1wbGF0ZV9y ZWFkX2Jhc2ljICYmCi0gICAgICAgIHB0eGRfdGVtcGxhdGVfcmVhZCAiZW50ZXIgZG93bmxvYWQg c2VjdGlvbiIgRExfU0VDVElPTiAiZm9vYmFyIgotICAgICAgICBwdHhkX3RlbXBsYXRlX3JlYWRf YXV0aG9yICYmCi0gICAgICAgIGV4cG9ydCBzZWN0aW9uPSJsb2NhbF8ke2Rsc2VjdGlvbn0iICYm Ci0gICAgICAgIHB0eGRfdGVtcGxhdGVfd3JpdGVfcnVsZXMKLSAgICB9Ci0KLVRoaXMgdGVtcGxh dGUgcmVxdWlyZXMgYGBydWxlcy90ZW1wbGF0ZXMvdGVtcGxhdGUtbXlwa2ctbWFrZWBgIGFuZAot YGBydWxlcy90ZW1wbGF0ZXMvdGVtcGxhdGUtbXlwa2ctaW5gYCBhcyBzb3VyY2UgZmlsZXMuIFRo ZXkgY291bGQgYmUKLWRlcml2ZWQgZnJvbSB0aGUgYGB0YXJnZXRgYCB0ZW1wbGF0ZSB3aXRoIGEg c2ltcGxlIG1vZGlmaWNhdGlvbjoKLQotLi4gY29kZS1ibG9jazo6IG1ha2UKLQotICAgIEBQQUNL QUdFQF9TVUZGSVgJOj0gdGFyLnh6Ci0gICAgQFBBQ0tBR0VAX1VSTAk6PSBodHRwOi8vZGwubXkt Y29tcGFueS5sb2NhbC9kb3dubG9hZHMvQERMX1NFQ1RJT05ALyQoQFBBQ0tBR0VAKS4kKEBQQUNL QUdFQF9TVUZGSVgpCi0KLVRoZSBoZWxwZXIgZnVuY3Rpb25zIHRoYXQgYXJlIHVzZWQgaW4gdGhl IGV4YW1wbGUgYWJvdmUgYXJlIGRlZmluZWQgaW4KLWBgc2NyaXB0cy9saWIvcHR4ZF9saWJfdGVt cGxhdGUuc2hgYCBpbiB0aGUgUFRYZGlzdCBzb3VyY2UgdHJlZS4KLQotVGhlIHRlbXBsYXRlIGlz IGEgbm9ybWFsIHNoZWxsIGZ1bmN0aW9uLiBBcmJpdHJhcnkgdGhpbmdzIGNhbiBiZSBkb25lIGhl cmUKLXRvIGNyZWF0ZSB0aGUgbmV3IHBhY2thZ2UuIFRoZSBoZWxwZXIgZnVuY3Rpb25zIGFyZSBq dXN0IHRoZSBtb3N0Ci1jb252ZW5pZW50IHdheSB0byBjcmF0ZSBzaW1wbGUgdGVtcGxhdGVzLiBJ dCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNyZWF0ZQotbW9yZSBmaWxlcy4gRm9yIGV4YW1wbGVzLCB0 aGUgYnVpbHRpbiBgYGdlbmltYWdlYGAgdGVtcGxhdGUgY3JlYXRlcyBhIGV4dHJhCi1jb25maWcg ZmlsZSBmb3IgdGhlIG5ldyBwYWNrYWdlLgotCi0uLiBfbGF5ZXJzLWluLXB0eGRpc3Q6Ci0KLUxh eWVycyBpbiBQVFhkaXN0Ci0tLS0tLS0tLS0tLS0tLS0tLQotCi1Gb3IgYmV0dGVyIG1haW50ZW5h bmNlIG9yIG90aGVyIHJlYXNvbnMsIGEgUFRYZGlzdCBwcm9qZWN0IGNhbiBiZSBzcGxpdAotaW50 byBtdWx0aXBsZSBsYXllcnMuIEVhY2ggbGF5ZXIgaGFzIGV4YWN0bHkgdGhlIHNhbWUgZGlyZWN0 b3J5IGhpZXJhcmNoeQotYXMgZGVzY3JpYmVkIGluIDpyZWY6YGRpcmVjdG9yeV9oaWVyYXJjaHlg IGFuZCBvdGhlciBjaGFwdGVycy4KLQotQWxsIGxheWVycyBhcmUgZXhwbGljaXRseSBzdGFja2Vk IGluIHRoZSBmaWxlc3lzdGVtLiBUaGUgdG9wIGxheWVyIGlzIHRoZQotd29ya3NwYWNlIG9mIHRo ZSBQVFhkaXN0IHByb2plY3QuIEFueSBgYHNlbGVjdGVkXypgYCBsaW5rcyBhbmQgdGhlIHBsYXRm b3JtCi1idWlsZCBkaXJlY3RvcnkgYXJlIGNyZWF0ZWQgaGVyZS4gVGhlIGxheWVyIGJlbG93IGlz IGRlZmluZWQgYnkgdGhlCi1zdWJkaXJlY3Rvcnkgb3Igc3ltbGluayBuYW1lZCBgYGJhc2UvYGAu IE1vcmUgY2FuIGJlIHN0YWNrZWQgdGhlIHNhbWUKLXdheSwgc28gYGBiYXNlL2Jhc2UvYGAgaXMg dGhlIHRoaXJkIGxheWVyIGFuZCBzbyBvbi4KLUluIG1hbnkgd2F5cywgUFRYZGlzdCBpdHNlbGYg Y2FuIGJlIGNvbnNpZGVyZWQgYXMgdGhlIGJvdHRvbSBsYXllci4gVGhpcyBpcwotZWl0aGVyIGlt cGxpY2l0IG9yIGV4cGxpY2l0IHdpdGggb25lIGxhc3QgYGBiYXNlL2BgIHN5bWxpbmsuCi0KLUEg cHJvamVjdCBjYW4gb3ZlcndyaXRlIGZpbGVzIHByb3ZpZGVkIGJ5IFBUWGRpc3QgaW4gbWFueSBk aWZmZXJlbnQgd2F5cywKLWUuZy4gcnVsZSBmaWxlcyBvciBmaWxlcyBpbnN0YWxsZWQgd2l0aCA6 cmVmOmBpbnN0YWxsX2FsdGVybmF0aXZlYCBldGMuCi1UaGlzIGNvbmNlcHQgZXhwYW5kcyBuYXR1 cmFsbHkgdG8gbGF5ZXJzLiBFYWNoIGxheWVyIGNhbiBvdmVyd3JpdGUgZmlsZXMKLXByb3ZpZGVk IGJ5IGxvd2VyIGxheWVycyBpbiB0aGUgZXhhY3Qgc2FtZSB3YXkuIEFueSBmaWxlcyBhcmUgYWx3 YXlzCi1zZWFyY2hlZCBmb3IgaW4gYSBzdHJpY3QgbGF5ZXIgYnkgbGF5ZXIgb3JkZXIuCi0KLVdy aXRpbmcgTGF5ZXIgQXdhcmUgUnVsZXMKLX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KLQotRm9y IHRoZSBtb3N0IHBhcnQsIHBhY2thZ2UgcnVsZXMgd29yayBqdXN0IGFzIGV4cGVjdGVkIHdoZW4g bXVsdGlwbGUgbGF5ZXJzCi1hcmUgdXNlZC4gQW55IGxheWVyIHNwZWNpZmljIGhhbmRsaW5nIGlz IGRvbmUgaW1wbGljaXRseSBieSBQVFhkaXN0LgotSG93ZXZlciwgdGhlcmUgYXJlIGEgZmV3IHRo aW5ncyB0aGF0IG5lZWQgc3BlY2lhbCBoYW5kbGluZy4KLQotVGhlIHZhcmlhYmxlcyA6cmVmOmBQ VFhESVNUX1dPUktTUEFDRTxwdHhkaXN0X3dvcmtzcGFjZT5gIGFuZAotOnJlZjpgUFRYRElTVF9Q TEFURk9STUNPTkZJR0RJUmA8cHR4ZGlzdF9wbGF0Zm9ybWNvbmZpZ2Rpcj5gIGFsd2F5cyByZWZl cgotdG8gdGhlIGRpcmVjdG9yaWVzIGluIHRoZSB0b3AgbGF5ZXIuIFRoZXNlIHZhcmlhYmxlcyBt aWdodCBiZSB1c2VkIGluIHJ1bGVzCi1maWxlcyBsaWtlIHRoaXM6Ci0KLS4uIGNvZGUtYmxvY2s6 OiBtYWtlCi0KLSAgIE1ZX0tFUk5FTF9DT05GSUcgOj0gJChQVFhESVNUX1BMQVRGT1JNQ09ORklH RElSKS9rZXJuZWxjb25maWcuc3BlY2lhbAotCi1JZiB0aGUgcmVmZXJlbmNlZCBmaWxlIGlzIGlu IGFueSBsYXllciBidXQgdGhlIHRvcCBvbmUgdGhlbiBpdCB3aWxsIG5vdAotYmUgZm91bmQuIFRv IGhhbmRsZSB1c2UtY2FzZXMgbGlrZSB0aGlzLCB0aGUgbWFjcm9zIDpyZWY6YGluX3BhdGhgIGFu ZAotOnJlZjpgaW5fcGxhdGZvcm1jb25maWdkaXJgIGNhbiBiZSB1c2VkOgotCi0uLiBjb2RlLWJs b2NrOjogbWFrZQotCi0gICBNWV9LRVJORUxfQ09ORklHIDo9ICQoY2FsbCBwdHgvaW4tcGxhdGZv cm1jb25maWdkaXIsIGtlcm5lbGNvbmZpZy5zcGVjaWFsKQotCi1UaGlzIHdheSwgdGhlIGxheWVy cyBhcmUgc2VhcmNoZWQgdG9wIHRvIGJvdHRvbSB1bnRpbCB0aGUgY29uZmlnIGZpbGUgaXMKLWZv dW5kLgotCi1QVFhkaXN0IENvbmZpZyBGaWxlcyB3aXRoIE11bHRpcGxlIExheWVycwotfn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KLQotSW4gbWFueSBjYXNlcyBhIGxh eWVyIG1heSB3YW50IHRvIG1vZGlmeSB0aGUgKipwdHhjb25maWcqKiBieSBlbmFibGluZyBvcgot ZGlzYWJsaW5nIHNvbWUgb3B0aW9ucy4gQW55IGNoYW5nZXMgbXVzdCBiZSBwcm9wYWdhdGVkIHRo cm91Z2ggdGhlIHdob2xlCi1sYXllciBzdGFjay4KLQotVGhlIGZlYXR1cmVzIGFuZCB3b3JrZmxv dyBkZXNjcmliZWQgaGVyZSBhcHBseSB0byB0aGUgKipwdHhjb25maWcqKiwgdGhlCi0qKnBsYXRm b3JtY29uZmlnKiogYW5kIGFueSAqKmNvbGxlY3Rpb25jb25maWcqKiB1c2VkIGluIHRoZSBwcm9q ZWN0LgotCi1UbyBkbyB0aGlzLCBQVFhkaXN0IHN0b3JlcyBhIGRlbHRhIGNvbmZpZyB0byB0aGUg bGF5ZXIgYmVsb3cgYW5kIGEgZnVsbAotY29uZmlnIGZpbGUgaW4gZWFjaCBsYXllci4gSWYgdGhl IHR3byBmaWxlcyBhcmUgbWlzc2luZyB0aGVuIHRoZSBjb25maWcgaXMKLXVuY2hhbmdlZC4gVGhl IGJvdHRvbSBsYXllciBoYXMgb25seSB0aGUgY29uZmlnIGZpbGUgYW5kIG5vIGRlbHRhLgotCi1B dCBydW50aW1lLCBQVFhkaXN0IHdpbGwgYWx3YXlzIHVzZSB0aGUgZnVsbCBjb25maWcgZmlsZSBp biB0aGUgdG9wIGxheWVyCi13aGVyZSB0aGUgY29uZmlnIGV4aXN0cy4gQmVmb3JlIGRvaW5nIHNv LCBpdCB3aWxsIGVuc3VyZSB0aGF0IHRoZSBjb25maWcgaXMKLWNvbnNpc3RlbnQgYWNyb3NzIGFs bCBsYXllcnMuIFRoaXMgbWVhbnMgdGhhdCwgZm9yIGFueSBsYXllciB0aGF0IGNvbnRhaW5zIGEK LWRlbHRhIGNvbmZpZywgdGhlIGZ1bGwgY29uZmlnIGZpbGUgb2YgdGhlIGxheWVyIGJlbG93IGhh cyBub3QgY2hhbmdlZCBzaW5jZQotdGhlIGRlbHRhIGNvbmZpZyB3YXMgbGFzdCB1cGRhdGVkLiBJ ZiBhbnkgaW5jb25zaXN0ZW5jeSBpcyBkZXRlY3RlZCwKLVBUWGRpc3Qgd2lsbCBhYm9ydC4KLQot Rm9yIGFueSBjb21tYW5kIHRoYXQgbW9kaWZpZXMgdGhlIGNvbmZpZyBmaWxlLCBleGNlcHQgYGBv bGRjb25maWdgYCwKLVBUWGRpc3Qgd2lsbCB1c2Uga2NvbmZpZyBpbXBsaWNpdGx5IG9uIGFsbCBs YXllcnMgdG8gY2hlY2sgaWYgdGhlIGNvbmZpZwotZm9yIHRoaXMgbGF5ZXIgaXMgdXAgdG8gZGF0 ZS4gVGhpcyBpcyBhIHN0cmljdGVyIGNoZWNrIHRoYW4gdGhlIGNvbnNpc3RlbmN5Ci12YWxpZGF0 aW9uLiBGb3IgZXhhbXBsZSwgaWYgYSBuZXcgcGFja2FnZSB3YXMgYWRkZWQgdG8gYSBsYXllciB3 aXRob3V0Ci11cGRhdGluZyB0aGUgKipwdHhjb25maWcqKiB0aGVuIHRoaXMgd2lsbCBiZSBkZXRl Y3RlZCBhbmQgUFRYZGlzdCB3aWxsCi1hYm9ydC4gSWYgYWxsIG90aGVyIGxheWVycyBhcmUgdXAg dG8gZGF0ZSwgdGhlbiBQVFhkaXN0IHdpbGwgdXNlIHRoZSBkZWx0YQotY29uZmlnIG9mIHRoZSB0 b3AgbGF5ZXIsIGFwcGx5IGl0IHRvIHRoZSBmdWxsIGNvbmZpZyBvZiB0aGUgbGF5ZXIgYmVsb3cK LWFuZCBleGVjdXRlIHRoZSBzcGVjaWZpZWQgY29tbWFuZCB3aXRoIHRoZSByZXN1bHRpbmcgY29u ZmlnIGZpbGUuCi0KLS4uIG5vdGU6OiBJZiB0aGUgY29uZmlnIGZpbGUgZG9lcyBub3QgZXhpc3Qg eWV0IG9uIHRoZSB0b3AgbGF5ZXIsIHRoZW4gaXQKLSAgd2lsbCBiZSBjcmVhdGVkIGlmIGNoYW5n ZXMgdG8gdGhlIGNvbmZpZyBhcmUgbWFkZS4gU2ltaWxhcmx5IHRoZSBjb25maWcKLSAgd2lsbCBi ZSBkZWxldGVkIGlmIHRoZSBkZWx0YSBpcyBlbXB0eSBhZnRlciB0aGUgY2hhbmdlcy4gSW4gZWl0 aGVyIGNhc2UKLSAgaXQgbWF5IGJlIG5lY2Vzc2FyeSB0byB1cGRhdGUgYW55IGBgc2VsZWN0ZWRf KmBgIGxpbmsgdG8gcG9pbnQgdG8gdGhlCi0gIGNvcnJlY3QgY29uZmlnLgotCi1JZiBQVFhkaXN0 IGRldGVjdHMgYW4gaW5jb25zaXN0ZW5jeSBvciBhbiBvdXQgb2YgZGF0ZSBjb25maWcgZmlsZSB0 aGVuIGl0Ci1tdXN0IGJlIHVwZGF0ZWQgYmVmb3JlIHRoZXkgY2FuIGJlIHVzZWQuIFRoaXMgY2Fu IGJlIGRvbmUgYnkgdXNpbmcgdGhlCi1gYG9sZGNvbmZpZ2BgIGNvbW1hbmQuIEluIHRoaXMgc3Bl Y2lhbCBjYXNlLCBQVFhkaXN0IHdpbGwgaXRlcmF0ZSBmcm9tIHRoZQotYm90dG9tIHRvIHRoZSB0 b3AgbGF5ZXIgYW5kIHJ1biBgYG9sZGNvbmZpZ2BgIGZvciBlYWNoIG9mIHRoZW0uIEl0IHdpbGwK LXVzZSB0aGUgZGVsdGEgY29uZmlnIGFwcGxpZWQgdG8gdGhlIGZ1bGwgY29uZmlnIG9mIHRoZSBs YXllciBiZWxvdyBhdCBlYWNoCi1zdGVwLiBUaGlzIG1lYW5zIHRoYXQgaXQncyBwb3NzaWJsZSB0 byBlbmFibGUgb3IgZGlzYWJsZSBhIG9wdGlvbiBpbiB0aGUKLWJvdHRvbSBsYXllciBhbmQgYGBv bGRjb25maWdgYCB3aWxsIHByb3BhZ2F0ZSB0aGlzIGNoYW5nZSB0byBhbGwgb3RoZXIKLWxheWVy cy4KLQotUGFja2FnZXMgd2l0aCBrY29uZmlnIEJhc2VkIENvbmZpZyBGaWxlcwotfn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgotCi1Gb3IgcGFja2FnZXMgc3VjaCBhcyB0 aGUgTGludXgga2VybmVsIHRoYXQgaGF2ZSBrY29uZmlnIGJhc2VkIGNvbmZpZyBmaWxlcywKLWEg bG90IG9mIHRoZSBpbmZyYXN0cnVjdHVyZSB0byBoYW5kbGUgY29uZmlnIGZpbGVzIGFuZCBkZWx0 YXMgYWNyb3NzCi1tdWx0aXBsZSBsYXllcnMgY2FuIGJlIHJldXNlZC4gQ29uc2lzdGVuY3kgdmFs aWRhdGlvbiBpcyBkb25lIGltcGxpY2l0bHkKLWFuZCBgYG1lbnVjb25maWdgYCBhbmQgb3RoZXIg a2NvbmZpZyBjb21tYW5kcyB3aWxsIHVzZSBjb25maWcgZmlsZXMgYW5kCi1kZWx0YXMgYXMgZXhw ZWN0ZWQuCi0KLUl0J3Mgbm90IHBvc3NpYmxlIHRvIGltcGxpY2l0bHkgcnVuIGBgb2xkY29uZmln YGAgb24gb3RoZXIgbGF5ZXJzICh0aGlzIG1heQotcmVxdWlyZSBhIGRpZmZlcmVudCBzb3VyY2Ug dHJlZSBmb3IgdGhlIHBhY2thZ2VzKSwgc28gYW55IGluY29uc2lzdGVuY2llcwotbXVzdCBiZSBy ZXNvbHZlZCBtYW51YWxseSBieSBydW5uaW5nIGBgb2xkY29uZmlnYGAgZXhwbGljaXRseSBvbiBl YWNoCi1sYXllci4KLQotVGhlIG1ha2UgbWFjcm9zIHRoYXQgcHJvdmlkZSB0aGVzZSBmZWF0dXJl cyBhcmUgY3VycmVudGx5IHVzZWQgYnkgdGhlCi1iYXJlYm94IGFuZCBrZXJuZWwgcGFja2FnZXMg YW5kIHRlbXBsYXRlcy4KKy4uIHRvY3RyZWU6OgorICAgOmdsb2I6CisgICA6bWF4ZGVwdGg6IDIK KworICAgZGV2X2Rpcl9oaWVyYXJjaHkKKyAgIGRldl9hZGRfbmV3X3BrZ3MKKyAgIGRldl9hZGRf YmluX29ubHlfZmlsZXMKKyAgIGRldl9jcmVhdGVfbmV3X3BrZ190ZW1wbGF0ZXMKKyAgIGRldl9s YXllcnNfaW5fcHR4ZGlzdAotLSAKMi4yNy4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KcHR4ZGlzdCBtYWlsaW5nIGxpc3QKcHR4ZGlzdEBwZW5ndXRy b25peC5kZQpUbyB1bnN1YnNjcmliZSwgc2VuZCBhIG1haWwgd2l0aCBzdWJqZWN0ICJ1bnN1YnNj cmliZSIgdG8gcHR4ZGlzdC1yZXF1ZXN0QHBlbmd1dHJvbml4LmRlCg==