Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tk2O9-00GZVF-JW for pgsql-hackers@arkaria.postgresql.org; Mon, 17 Feb 2025 14:46:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tk2O8-00Gcvo-8V for pgsql-hackers@arkaria.postgresql.org; Mon, 17 Feb 2025 14:46:24 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tk2O7-00Gcvc-DF for pgsql-hackers@lists.postgresql.org; Mon, 17 Feb 2025 14:46:23 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1tk2O2-001Lqj-1W for pgsql-hackers@postgresql.org; Mon, 17 Feb 2025 14:46:23 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1739803577; bh=L/P2UcUsnIEoPI+qAJUIYvv8UoaN8fHQ4gYyZBsGpU8=; h=Message-ID:Date:User-Agent:Subject:From:To:Cc:References: In-Reply-To:From; b=gYlxewvzZk9VVnvuOGr0McbOd4Z0qTKQMuHdM6W/JqMfc3YP8i7taXNcEkWL2JNji Vkbv0/WFEmeIDNPLm5gqwC0+bLGayFEcGq2QO/27Fv5RIm3E9b90AOSzq7wjJwE6At gOhexeEmKv4a0RjCV4ert9PKY099+SqSntqaBTRUCoilLHcXvHPBrn6U4aczRx5I5D 7r1sdFpNr4hNU8E3hpivZvQdbnVuF5FEHVFltugUQff8BCMf4XiBC90W4A+G5D57uq iCRSv6xkyOy8hhZ8aV7HEayviRNgpQWbcBysJp/pcRQu8I7ulVFHGfJYO4v5YFd361 TYN2m/WGH+5OA== Received: from [10.4.12.74] (unknown [93.174.131.141]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: a.rybakina@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id ADE5D608D3; Mon, 17 Feb 2025 17:46:16 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------vHbj04KO08FC0gAES8o5Fvao" Message-ID: <333c2306-c401-4959-9f0c-a44c670a11a9@postgrespro.ru> Date: Mon, 17 Feb 2025 17:46:16 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Vacuum statistics From: Alena Rybakina To: pgsql-hackers Cc: Alexander Korotkov , Jim Nasby , Ilia Evdokimov , Kirill Reshke , Andrei Zubkov , Masahiko Sawada , Melanie Plageman , jian he , a.lepikhov@postgrespro.ru, Sami Imseih References: <0B6CBF4C-CC2A-4200-9126-CE3A390D938B@upgrade.com> <6732acf8ce0f31025b535ae1a64568750924a887.camel@moonset.ru> <5AA8FFD5-6DE2-4A31-8E00-AE98F738F5D1@upgrade.com> <85b963fe-5977-43aa-9241-75b862abcc69@postgrespro.ru> <9C7A167C-DCDE-4A17-9ABE-6276723FEC50@upgrade.com> <2d493cf9-9ba7-4cc1-a3f2-67afd7c163ee@postgrespro.ru> <30d54302-9e9c-4e04-819e-a13b679cdcc8@postgrespro.ru> <86f76aa5-1ab5-4e2e-9b15-405051852a2a@postgrespro.ru> <1e81a0a1-a63b-48fb-905a-d6495f89ab73@postgrespro.ru> <0b4eefc7-4c38-4caa-b2ca-a4c75dd7dd12@postgrespro.ru> Content-Language: en-US In-Reply-To: X-KSMG-AntiPhishing: NotDetected X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2025/02/17 05:46:00 #27308377 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------vHbj04KO08FC0gAES8o5Fvao Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 04.02.2025 18:22, Alena Rybakina wrote: > Hi! Thank you for your review! > > On 02.02.2025 23:43, Alexander Korotkov wrote: >> On Mon, Jan 13, 2025 at 3:26 PM Alena Rybakina >> wrote: >>> I noticed that the cfbot is bad, the reason seems to be related to >>> the lack of a parameter in >>> src/backend/utils/misc/postgresql.conf.sample. I added it, it should >>> help. >> The patch doesn't apply cleanly.  Please rebase. > I rebased them. The patch needed a rebase again. There is nothing new since version 18, only a rebase. -- Regards, Alena Rybakina Postgres Professional --------------vHbj04KO08FC0gAES8o5Fvao Content-Type: text/x-patch; charset=UTF-8; name="v19-0001-Implement-Self-Join-Elimination.patch" Content-Disposition: attachment; filename="v19-0001-Implement-Self-Join-Elimination.patch" Content-Transfer-Encoding: base64 RnJvbSBmYzA2OWEzYTYzMTliNWJmNDBkMmYwZjFlZmNlYWUxYzliN2E2OGE4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogVGh1LCAxMyBGZWIgMjAyNSAwMDo1NjowMyArMDIwMApT dWJqZWN0OiBbUEFUQ0ggMS80XSBJbXBsZW1lbnQgU2VsZi1Kb2luIEVsaW1pbmF0aW9uCk1J TUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYt OApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpUaGUgU2VsZi1Kb2luIEVsaW1p bmF0aW9uIChTSkUpIGZlYXR1cmUgcmVtb3ZlcyBhbiBpbm5lciBqb2luIG9mIGEgcGxhaW4K dGFibGUgdG8gaXRzZWxmIGluIHRoZSBxdWVyeSB0cmVlIGlmIGl0IGlzIHByb3ZlbiB0aGF0 IHRoZSBqb2luIGNhbiBiZQpyZXBsYWNlZCB3aXRoIGEgc2NhbiB3aXRob3V0IGltcGFjdGlu ZyB0aGUgcXVlcnkgcmVzdWx0LiAgU2VsZi1qb2luIGFuZAppbm5lciByZWxhdGlvbiBnZXQg cmVwbGFjZWQgd2l0aCB0aGUgb3V0ZXIgaW4gcXVlcnksIGVxdWl2YWxlbmNlIGNsYXNzZXMs CmFuZCBwbGFubmVyIGluZm8gc3RydWN0dXJlcy4gIEFsc28sIHRoZSBpbm5lciByZXN0cmlj dGxpc3QgbW92ZXMgdG8gdGhlCm91dGVyIG9uZSB3aXRoIHRoZSByZW1vdmFsIG9mIGR1cGxp Y2F0ZWQgY2xhdXNlcy4gIFRodXMsIHRoaXMgb3B0aW1pemF0aW9uCnJlZHVjZXMgdGhlIGxl bmd0aCBvZiB0aGUgcmFuZ2UgdGFibGUgbGlzdCAodGhpcyBlc3BlY2lhbGx5IG1ha2VzIHNl bnNlIGZvcgpwYXJ0aXRpb25lZCByZWxhdGlvbnMpLCByZWR1Y2VzIHRoZSBudW1iZXIgb2Yg cmVzdHJpY3Rpb24gY2xhdXNlcyBhbmQsCmluIHR1cm4sIHNlbGVjdGl2aXR5IGVzdGltYXRp b25zLCBhbmQgcG90ZW50aWFsbHkgaW1wcm92ZXMgdG90YWwgcGxhbm5lcgpwcmVkaWN0aW9u IGZvciB0aGUgcXVlcnkuCgpUaGlzIGZlYXR1cmUgaXMgZGVkaWNhdGVkIHRvIGF2b2lkaW5n IHJlZHVuZGFuY3ksIHdoaWNoIGNhbiBhcHBlYXIgYWZ0ZXIKcHVsbC11cCB0cmFuc2Zvcm1h dGlvbnMgb3IgdGhlIGNyZWF0aW9uIG9mIGFuIEVxdWl2YWxlbmNlQ2xhc3MtZGVyaXZlZCBj bGF1c2UKbGlrZSB0aGUgYmVsb3cuCgogIFNFTEVDVCAqIEZST00gdDEgV0hFUkUgeCBJTiAo U0VMRUNUIHQzLnggRlJPTSB0MSB0Myk7CiAgU0VMRUNUICogRlJPTSB0MSBXSEVSRSBFWElT VFMgKFNFTEVDVCB0My54IEZST00gdDEgdDMgV0hFUkUgdDMueCA9IHQxLngpOwogIFNFTEVD VCAqIEZST00gdDEsdDIsIHQxIHQzIFdIRVJFIHQxLnggPSB0Mi54IEFORCB0Mi54ID0gdDMu eDsKCkluIHRoZSBmdXR1cmUsIHdlIGNvdWxkIGFsc28gcmVkdWNlIHJlZHVuZGFuY3kgY2F1 c2VkIGJ5IHN1YnF1ZXJ5IHB1bGwtdXAKYWZ0ZXIgdW5uZWNlc3Nhcnkgb3V0ZXIgam9pbiBy ZW1vdmFsIGluIGNhc2VzIGxpa2UgdGhlIG9uZSBiZWxvdy4KCiAgU0VMRUNUICogRlJPTSB0 MSBXSEVSRSB4IElOCiAgICAoU0VMRUNUIHQzLnggRlJPTSB0MSB0MyBMRUZUIEpPSU4gdDIg T04gdDIueCA9IHQxLngpOwoKQWxzbywgaXQgY2FuIGRyYXN0aWNhbGx5IGhlbHAgdG8gam9p biBwYXJ0aXRpb25lZCB0YWJsZXMsIHJlbW92aW5nIGVudHJpZXMKZXZlbiBiZWZvcmUgdGhl aXIgZXhwYW5zaW9uLgoKVGhlIFNKRSBwcm9vZiBpcyBiYXNlZCBvbiBpbm5lcnJlbF9pc191 bmlxdWUoKSBtYWNoaW5lcnkuCgpXZSBjYW4gcmVtb3ZlIGEgc2VsZi1qb2luIHdoZW4gZm9y IGVhY2ggb3V0ZXIgcm93OgoKIDEuIEF0IG1vc3QsIG9uZSBpbm5lciByb3cgbWF0Y2hlcyB0 aGUgam9pbiBjbGF1c2U7CiAyLiBFYWNoIG1hdGNoZWQgaW5uZXIgcm93IG11c3QgYmUgKHBo eXNpY2FsbHkpIHRoZSBzYW1lIGFzIHRoZSBvdXRlciBvbmU7CiAzLiBJbm5lciBhbmQgb3V0 ZXIgcm93cyBoYXZlIHRoZSBzYW1lIHJvdyBtYXJrLgoKSW4gdGhpcyBwYXRjaCwgd2UgdXNl IHRoZSBuZXh0IGFwcHJvYWNoIHRvIGlkZW50aWZ5IGEgc2VsZi1qb2luOgoKIDEuIENvbGxl Y3QgYWxsIG1lcmdlLWpvaW5hYmxlIGpvaW4gcXVhbHMgd2hpY2ggbG9vayBsaWtlIGEueCA9 IGIueDsKIDIuIEFkZCB0byB0aGUgbGlzdCBhYm92ZSB0aGUgYmFzZXJldHJpY3RpbmZvIG9m IHRoZSBpbm5lciB0YWJsZTsKIDMuIENoZWNrIGlubmVycmVsX2lzX3VuaXF1ZSgpIGZvciB0 aGUgcXVhbCBsaXN0LiAgSWYgaXQgcmV0dXJucyBmYWxzZSwgc2tpcAogICAgdGhpcyBwYWly IG9mIGpvaW5pbmcgdGFibGVzOwogNC4gQ2hlY2sgdW5pcXVlbmVzcywgcHJvdmVkIGJ5IHRo ZSBiYXNlcmVzdHJpY3RpbmZvIGNsYXVzZXMuIFRvIHByb3ZlIHRoZQogICAgcG9zc2liaWxp dHkgb2Ygc2VsZi1qb2luIGVsaW1pbmF0aW9uLCB0aGUgaW5uZXIgYW5kIG91dGVyIGNsYXVz ZXMgbXVzdAogICAgbWF0Y2ggZXhhY3RseS4KClRoZSByZWxhdGlvbiByZXBsYWNlbWVudCBw cm9jZWR1cmUgaXMgbm90IHRyaXZpYWwgYW5kIGlzIHBhcnRseSBjb21iaW5lZAp3aXRoIHRo ZSBvbmUgdXNlZCB0byByZW1vdmUgdXNlbGVzcyBsZWZ0IGpvaW5zLiAgVGVzdHMgY292ZXJp bmcgdGhpcyBmZWF0dXJlCndlcmUgYWRkZWQgdG8gam9pbi5zcWwuICBTb21lIG9mIHRoZSBl eGlzdGluZyByZWdyZXNzaW9uIHRlc3RzIGNoYW5nZWQgZHVlCnRvIHNlbGYtam9pbiByZW1v dmFsIGxvZ2ljLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9mbGF0LzY0NDg2 YjBiLTA0MDQtZTM5ZS0zMjJkLTA4MDExNTQ5MDFmMyU0MHBvc3RncmVzcHJvLnJ1CkF1dGhv cjogQW5kcmV5IExlcGlraG92IDxhLmxlcGlraG92QHBvc3RncmVzcHJvLnJ1PgpBdXRob3I6 IEFsZXhhbmRlciBLdXptZW5rb3YgPGEua3V6bWVua292QHBvc3RncmVzcHJvLnJ1PgpDby1h dXRob3JlZC1ieTogQWxleGFuZGVyIEtvcm90a292IDxhZWtvcm90a292QGdtYWlsLmNvbT4K Q28tYXV0aG9yZWQtYnk6IEFsZW5hIFJ5YmFraW5hIDxsZW5hLnJpYmFja2luYUB5YW5kZXgu cnU+ClJldmlld2VkLWJ5OiBUb20gTGFuZSA8dGdsQHNzcy5wZ2gucGEudXM+ClJldmlld2Vk LWJ5OiBSb2JlcnQgSGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTog QW5kcmVzIEZyZXVuZCA8YW5kcmVzQGFuYXJhemVsLmRlPgpSZXZpZXdlZC1ieTogU2ltb24g UmlnZ3MgPHNpbW9uQDJuZHF1YWRyYW50LmNvbT4KUmV2aWV3ZWQtYnk6IEpvbmF0aGFuIFMu IEthdHogPGprYXR6QHBvc3RncmVzcWwub3JnPgpSZXZpZXdlZC1ieTogRGF2aWQgUm93bGV5 IDxkYXZpZC5yb3dsZXlAMm5kcXVhZHJhbnQuY29tPgpSZXZpZXdlZC1ieTogVGhvbWFzIE11 bnJvIDx0aG9tYXMubXVucm9AZW50ZXJwcmlzZWRiLmNvbT4KUmV2aWV3ZWQtYnk6IEtvbnN0 YW50aW4gS25pemhuaWsgPGsua25pemhuaWtAcG9zdGdyZXNwcm8ucnU+ClJldmlld2VkLWJ5 OiBIZWlra2kgTGlubmFrYW5nYXMgPGhsaW5uYWthQGlraS5maT4KUmV2aWV3ZWQtYnk6IEh5 d2VsIENhcnZlciA8aHl3ZWxAc2tpbGxlcndoYWxlLmNvbT4KUmV2aWV3ZWQtYnk6IExhdXJl bnogQWxiZSA8bGF1cmVuei5hbGJlQGN5YmVydGVjLmF0PgpSZXZpZXdlZC1ieTogUm9uYW4g RHVua2xhdSA8cm9uYW4uZHVua2xhdUBhaXZlbi5pbz4KUmV2aWV3ZWQtYnk6IHZpZ25lc2gg QyA8dmlnbmVzaDIxQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFpoaWhvbmcgWXUgPHp5dUB5 dWdhYnl0ZS5jb20+ClJldmlld2VkLWJ5OiBHcmVnIFN0YXJrIDxzdGFya0BtaXQuZWR1PgpS ZXZpZXdlZC1ieTogSmFpbWUgQ2FzYW5vdmEgPGpjYXNhbm92QHN5c3RlbWd1YXJkcy5jb20u ZWM+ClJldmlld2VkLWJ5OiBNaWNoYcWCIEvFgmVjemVrIDxtaWNoYWxAa2xlY3play5vcmc+ ClJldmlld2VkLWJ5OiBBbGVuYSBSeWJha2luYSA8bGVuYS5yaWJhY2tpbmFAeWFuZGV4LnJ1 PgpSZXZpZXdlZC1ieTogQWxleGFuZGVyIEtvcm90a292IDxhZWtvcm90a292QGdtYWlsLmNv bT4KLS0tCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAgICB8ICAg MTYgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvZXF1aXZjbGFzcy5jICAgfCAgICAz ICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jICAgICB8ICAgMzkg Kwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vYW5hbHl6ZWpvaW5zLmMgfCAxMjQwICsr KysrKysrKysrKysrKysrKystLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm1h aW4uYyAgICAgfCAgICA1ICsKIHNyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3ByZXB1bmlv bi5jICAgIHwgICAgOSArLQogc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlTWFuaXAuYyAg ICAgICAgfCAgMTI2ICsrLQogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMg ICAgICAgfCAgIDEwICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oICAgICAgICAg ICAgIHwgICA0MCArLQogc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oICAgICAg ICAgfCAgICAyICsKIHNyYy9pbmNsdWRlL29wdGltaXplci9wYXRocy5oICAgICAgICAgICAg IHwgICAgMyArCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGxhbm1haW4uaCAgICAgICAgICB8 ICAgIDYgKwogc3JjL2luY2x1ZGUvcmV3cml0ZS9yZXdyaXRlTWFuaXAuaCAgICAgICAgfCAg ICA0ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXF1aXZjbGFzcy5vdXQgIHwgICAz MCArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0ICAgICAgICB8IDEwODMg KysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdz Lm91dCAgICB8ICAgIDMgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2VxdWl2Y2xhc3Muc3Fs ICAgICAgIHwgICAxNiArCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9qb2luLnNxbCAgICAgICAg ICAgICB8ICA0OTQgKysrKysrKysKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 ICAgICAgICAgIHwgICAgMiArCiAxOSBmaWxlcyBjaGFuZ2VkLCAyOTgzIGluc2VydGlvbnMo KyksIDE0OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmln LnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggNjA4MjliNzlkODMuLjMz NjYzMGNlNDE3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC01NTQ0LDYgKzU1NDQsMjIgQEAgQU5ZIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICgg PHJlcGxhY2VhYmxlIGNsYXNzPSIKICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlz dGVudHJ5PgogCisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1lbmFibGVfc2VsZl9qb2lu X2VsaW1pbmF0aW9uIiB4cmVmbGFiZWw9ImVuYWJsZV9zZWxmX2pvaW5fZWxpbWluYXRpb24i PgorICAgICAgPHRlcm0+PHZhcm5hbWU+ZW5hYmxlX3NlbGZfam9pbl9lbGltaW5hdGlvbjwv dmFybmFtZT4gKDx0eXBlPmJvb2xlYW48L3R5cGU+KQorICAgICAgPGluZGV4dGVybT4KKyAg ICAgICA8cHJpbWFyeT48dmFybmFtZT5lbmFibGVfc2VsZl9qb2luX2VsaW1pbmF0aW9uPC92 YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwvaW5k ZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJh PgorICAgICAgICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBxdWVyeSBwbGFubmVyJ3Mgb3B0 aW1pemF0aW9uIHdoaWNoIGFuYWx5c2VzCisgICAgICAgIHRoZSBxdWVyeSB0cmVlIGFuZCBy ZXBsYWNlcyBzZWxmIGpvaW5zIHdpdGggc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQKKyAgICAg ICAgc2luZ2xlIHNjYW5zLiAgVGFrZXMgaW50byBjb25zaWRlcmF0aW9uIG9ubHkgcGxhaW4g dGFibGVzLgorICAgICAgICBUaGUgZGVmYXVsdCBpcyA8bGl0ZXJhbD5vbjwvbGl0ZXJhbD4u CisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50 cnk+CisKICAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWVuYWJsZS1zZXFzY2FuIiB4cmVm bGFiZWw9ImVuYWJsZV9zZXFzY2FuIj4KICAgICAgIDx0ZXJtPjx2YXJuYW1lPmVuYWJsZV9z ZXFzY2FuPC92YXJuYW1lPiAoPHR5cGU+Ym9vbGVhbjwvdHlwZT4pCiAgICAgICA8aW5kZXh0 ZXJtPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvZXF1aXZjbGFz cy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvZXF1aXZjbGFzcy5jCmluZGV4IDdj YWZhY2EzM2M1Li4wZjllY2Y1ZWU4YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BhdGgvZXF1aXZjbGFzcy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRo L2VxdWl2Y2xhc3MuYwpAQCAtODUyLDcgKzg1Miw4IEBAIGZpbmRfY29tcHV0YWJsZV9lY19t ZW1iZXIoUGxhbm5lckluZm8gKnJvb3QsCiAJZXhwcnZhcnMgPSBwdWxsX3Zhcl9jbGF1c2Uo KE5vZGUgKikgZXhwcnMsCiAJCQkJCQkJICAgUFZDX0lOQ0xVREVfQUdHUkVHQVRFUyB8CiAJ CQkJCQkJICAgUFZDX0lOQ0xVREVfV0lORE9XRlVOQ1MgfAotCQkJCQkJCSAgIFBWQ19JTkNM VURFX1BMQUNFSE9MREVSUyk7CisJCQkJCQkJICAgUFZDX0lOQ0xVREVfUExBQ0VIT0xERVJT IHwKKwkJCQkJCQkgICBQVkNfSU5DTFVERV9DT05WRVJUUk9XVFlQRVMpOwogCiAJZm9yZWFj aChsYywgZWMtPmVjX21lbWJlcnMpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BhdGgvaW5keHBhdGguYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2lu ZHhwYXRoLmMKaW5kZXggNmUyMDUxZWZjNjUuLmE0M2NhMTZkNjgzIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jCisrKyBiL3NyYy9iYWNrZW5k L29wdGltaXplci9wYXRoL2luZHhwYXRoLmMKQEAgLTQxNjIsNiArNDE2MiwyMiBAQCBib29s CiByZWxhdGlvbl9oYXNfdW5pcXVlX2luZGV4X2ZvcihQbGFubmVySW5mbyAqcm9vdCwgUmVs T3B0SW5mbyAqcmVsLAogCQkJCQkJCSAgTGlzdCAqcmVzdHJpY3RsaXN0LAogCQkJCQkJCSAg TGlzdCAqZXhwcmxpc3QsIExpc3QgKm9wcmxpc3QpCit7CisJcmV0dXJuIHJlbGF0aW9uX2hh c191bmlxdWVfaW5kZXhfZXh0KHJvb3QsIHJlbCwgcmVzdHJpY3RsaXN0LAorCQkJCQkJCQkJ CSBleHBybGlzdCwgb3BybGlzdCwgTlVMTCk7Cit9CisKKy8qCisgKiByZWxhdGlvbl9oYXNf dW5pcXVlX2luZGV4X2V4dAorICoJICBTYW1lIGFzIHJlbGF0aW9uX2hhc191bmlxdWVfaW5k ZXhfZm9yKCksIGJ1dCBzdXBwb3J0cyBleHRyYV9jbGF1c2VzCisgKgkgIHBhcmFtZXRlci4g IElmIGV4dHJhX2NsYXVzZXMgaXNuJ3QgTlVMTCwgcmV0dXJuIGJhc2VyZXN0cmljdGluZm8g Y2xhdXNlcworICoJICB3aGljaCB3ZXJlIHVzZWQgdG8gZGVyaXZlIHVuaXF1ZW5lc3MuCisg Ki8KK2Jvb2wKK3JlbGF0aW9uX2hhc191bmlxdWVfaW5kZXhfZXh0KFBsYW5uZXJJbmZvICpy b290LCBSZWxPcHRJbmZvICpyZWwsCisJCQkJCQkJICBMaXN0ICpyZXN0cmljdGxpc3QsCisJ CQkJCQkJICBMaXN0ICpleHBybGlzdCwgTGlzdCAqb3BybGlzdCwKKwkJCQkJCQkgIExpc3Qg KipleHRyYV9jbGF1c2VzKQogewogCUxpc3RDZWxsICAgKmljOwogCkBAIC00MjE3LDYgKzQy MzMsNyBAQCByZWxhdGlvbl9oYXNfdW5pcXVlX2luZGV4X2ZvcihQbGFubmVySW5mbyAqcm9v dCwgUmVsT3B0SW5mbyAqcmVsLAogCXsKIAkJSW5kZXhPcHRJbmZvICppbmQgPSAoSW5kZXhP cHRJbmZvICopIGxmaXJzdChpYyk7CiAJCWludAkJCWM7CisJCUxpc3QJICAgKmV4cHJzID0g TklMOwogCiAJCS8qCiAJCSAqIElmIHRoZSBpbmRleCBpcyBub3QgdW5pcXVlLCBvciBub3Qg aW1tZWRpYXRlbHkgZW5mb3JjZWQsIG9yIGlmIGl0J3MKQEAgLTQyNjgsNiArNDI4NSwyNCBA QCByZWxhdGlvbl9oYXNfdW5pcXVlX2luZGV4X2ZvcihQbGFubmVySW5mbyAqcm9vdCwgUmVs T3B0SW5mbyAqcmVsLAogCQkJCWlmIChtYXRjaF9pbmRleF90b19vcGVyYW5kKHJleHByLCBj LCBpbmQpKQogCQkJCXsKIAkJCQkJbWF0Y2hlZCA9IHRydWU7IC8qIGNvbHVtbiBpcyB1bmlx dWUgKi8KKworCQkJCQlpZiAoYm1zX21lbWJlcnNoaXAocmluZm8tPmNsYXVzZV9yZWxpZHMp ID09IEJNU19TSU5HTEVUT04pCisJCQkJCXsKKwkJCQkJCU1lbW9yeUNvbnRleHQgb2xkTWVt Q3R4ID0KKwkJCQkJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ocm9vdC0+cGxhbm5lcl9jeHQp OworCisJCQkJCQkvKgorCQkJCQkJICogQWRkIGZpbHRlciBjbGF1c2UgaW50byBhIGxpc3Qg YWxsb3dpbmcgY2FsbGVyIHRvCisJCQkJCQkgKiBrbm93IGlmIHVuaXF1ZW5lc3MgaGF2ZSBt YWRlIG5vdCBvbmx5IGJ5IGpvaW4KKwkJCQkJCSAqIGNsYXVzZXMuCisJCQkJCQkgKi8KKwkJ CQkJCUFzc2VydChibXNfaXNfZW1wdHkocmluZm8tPmxlZnRfcmVsaWRzKSB8fAorCQkJCQkJ CSAgIGJtc19pc19lbXB0eShyaW5mby0+cmlnaHRfcmVsaWRzKSk7CisJCQkJCQlpZiAoZXh0 cmFfY2xhdXNlcykKKwkJCQkJCQlleHBycyA9IGxhcHBlbmQoZXhwcnMsIHJpbmZvKTsKKwkJ CQkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRNZW1DdHgpOworCQkJCQl9CisKIAkJCQkJ YnJlYWs7CiAJCQkJfQogCQkJfQpAQCAtNDMxMCw3ICs0MzQ1LDExIEBAIHJlbGF0aW9uX2hh c191bmlxdWVfaW5kZXhfZm9yKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWws CiAKIAkJLyogTWF0Y2hlZCBhbGwga2V5IGNvbHVtbnMgb2YgdGhpcyBpbmRleD8gKi8KIAkJ aWYgKGMgPT0gaW5kLT5ua2V5Y29sdW1ucykKKwkJeworCQkJaWYgKGV4dHJhX2NsYXVzZXMp CisJCQkJKmV4dHJhX2NsYXVzZXMgPSBleHByczsKIAkJCXJldHVybiB0cnVlOworCQl9CiAJ fQogCiAJcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vYW5hbHl6ZWpvaW5zLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9hbmFs eXplam9pbnMuYwppbmRleCBiMzNmYzY3MTc3NS4uM2FhMDRkMGQ0ZTEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2FuYWx5emVqb2lucy5jCisrKyBiL3NyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL2FuYWx5emVqb2lucy5jCkBAIC0yMiw2ICsyMiw3IEBA CiAgKi8KICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19j bGFzcy5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgogI2luY2x1ZGUgIm9wdGlt aXplci9qb2luaW5mby5oIgogI2luY2x1ZGUgIm9wdGltaXplci9vcHRpbWl6ZXIuaCIKQEAg LTMwLDI3ICszMSw0OCBAQAogI2luY2x1ZGUgIm9wdGltaXplci9wbGFjZWhvbGRlci5oIgog I2luY2x1ZGUgIm9wdGltaXplci9wbGFubWFpbi5oIgogI2luY2x1ZGUgIm9wdGltaXplci9y ZXN0cmljdGluZm8uaCIKKyNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVNYW5pcC5oIgogI2lu Y2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogCisvKgorICogVXRpbGl0eSBzdHJ1Y3R1cmUu ICBBIHNvcnRpbmcgcHJvY2VkdXJlIGlzIG5lZWRlZCB0byBzaW1wbGlmeSB0aGUgc2VhcmNo CisgKiBvZiBTSkUtY2FuZGlkYXRlIGJhc2VyZWxzIHJlZmVyZW5jaW5nIHRoZSBzYW1lIGRh dGFiYXNlIHJlbGF0aW9uLiAgSGF2aW5nCisgKiBjb2xsZWN0ZWQgYWxsIGJhc2VyZWxzIGZy b20gdGhlIHF1ZXJ5IGpvaW50cmVlLCB0aGUgcGxhbm5lciBzb3J0cyB0aGVtCisgKiBhY2Nv cmRpbmcgdG8gdGhlIHJlbG9pZCB2YWx1ZSwgZ3JvdXBzIHRoZW0gd2l0aCB0aGUgbmV4dCBw YXNzIGFuZCBhdHRlbXB0cworICogdG8gcmVtb3ZlIHNlbGYtam9pbnMuCisgKgorICogUHJl bGltaW5hcnkgc29ydGluZyBwcmV2ZW50cyBxdWFkcmF0aWMgYmVoYXZpb3IgdGhhdCBjYW4g YmUgaGFybWZ1bCBpbiB0aGUKKyAqIGNhc2Ugb2YgbnVtZXJvdXMgam9pbnMuCisgKi8KK3R5 cGVkZWYgc3RydWN0Cit7CisJaW50CQkJcmVsaWQ7CisJT2lkCQkJcmVsb2lkOworfSBTZWxm Sm9pbkNhbmRpZGF0ZTsKKworYm9vbAkJZW5hYmxlX3NlbGZfam9pbl9lbGltaW5hdGlvbjsK KwogLyogbG9jYWwgZnVuY3Rpb25zICovCiBzdGF0aWMgYm9vbCBqb2luX2lzX3JlbW92YWJs ZShQbGFubmVySW5mbyAqcm9vdCwgU3BlY2lhbEpvaW5JbmZvICpzamluZm8pOwotc3RhdGlj IHZvaWQgcmVtb3ZlX3JlbF9mcm9tX3F1ZXJ5KFBsYW5uZXJJbmZvICpyb290LCBpbnQgcmVs aWQsCi0JCQkJCQkJCSAgU3BlY2lhbEpvaW5JbmZvICpzamluZm8pOworc3RhdGljIHZvaWQg cmVtb3ZlX2xlZnRqb2lucmVsX2Zyb21fcXVlcnkoUGxhbm5lckluZm8gKnJvb3QsIGludCBy ZWxpZCwKKwkJCQkJCQkJCQkgIFNwZWNpYWxKb2luSW5mbyAqc2ppbmZvKTsKIHN0YXRpYyB2 b2lkIHJlbW92ZV9yZWxfZnJvbV9yZXN0cmljdGluZm8oUmVzdHJpY3RJbmZvICpyaW5mbywK IAkJCQkJCQkJCQkgaW50IHJlbGlkLCBpbnQgb2pyZWxpZCk7CiBzdGF0aWMgdm9pZCByZW1v dmVfcmVsX2Zyb21fZWNsYXNzKEVxdWl2YWxlbmNlQ2xhc3MgKmVjLAotCQkJCQkJCQkgICBp bnQgcmVsaWQsIGludCBvanJlbGlkKTsKKwkJCQkJCQkJICAgaW50IHJlbGlkLCBpbnQgb2py ZWxpZCwgaW50IHN1YnN0KTsKIHN0YXRpYyBMaXN0ICpyZW1vdmVfcmVsX2Zyb21fam9pbmxp c3QoTGlzdCAqam9pbmxpc3QsIGludCByZWxpZCwgaW50ICpucmVtb3ZlZCk7CiBzdGF0aWMg Ym9vbCByZWxfc3VwcG9ydHNfZGlzdGluY3RuZXNzKFBsYW5uZXJJbmZvICpyb290LCBSZWxP cHRJbmZvICpyZWwpOwogc3RhdGljIGJvb2wgcmVsX2lzX2Rpc3RpbmN0X2ZvcihQbGFubmVy SW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAotCQkJCQkJCQlMaXN0ICpjbGF1c2VfbGlz dCk7CisJCQkJCQkJCUxpc3QgKmNsYXVzZV9saXN0LCBMaXN0ICoqZXh0cmFfY2xhdXNlcyk7 CiBzdGF0aWMgT2lkCWRpc3RpbmN0X2NvbF9zZWFyY2goaW50IGNvbG5vLCBMaXN0ICpjb2xu b3MsIExpc3QgKm9waWRzKTsKIHN0YXRpYyBib29sIGlzX2lubmVycmVsX3VuaXF1ZV9mb3Io UGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCSAgIFJlbGlkcyBqb2lucmVsaWRzLAogCQkJ CQkJCQkgICBSZWxpZHMgb3V0ZXJyZWxpZHMsCiAJCQkJCQkJCSAgIFJlbE9wdEluZm8gKmlu bmVycmVsLAogCQkJCQkJCQkgICBKb2luVHlwZSBqb2ludHlwZSwKLQkJCQkJCQkJICAgTGlz dCAqcmVzdHJpY3RsaXN0KTsKKwkJCQkJCQkJICAgTGlzdCAqcmVzdHJpY3RsaXN0LAorCQkJ CQkJCQkgICBMaXN0ICoqZXh0cmFfY2xhdXNlcyk7CitzdGF0aWMgaW50CXNlbGZfam9pbl9j YW5kaWRhdGVzX2NtcChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKTsKIAogCiAvKgpA QCAtODgsNyArMTEwLDcgQEAgcmVzdGFydDoKIAkJICovCiAJCWlubmVycmVsaWQgPSBibXNf c2luZ2xldG9uX21lbWJlcihzamluZm8tPm1pbl9yaWdodGhhbmQpOwogCi0JCXJlbW92ZV9y ZWxfZnJvbV9xdWVyeShyb290LCBpbm5lcnJlbGlkLCBzamluZm8pOworCQlyZW1vdmVfbGVm dGpvaW5yZWxfZnJvbV9xdWVyeShyb290LCBpbm5lcnJlbGlkLCBzamluZm8pOwogCiAJCS8q IFdlIHZlcmlmeSB0aGF0IGV4YWN0bHkgb25lIHJlZmVyZW5jZSBnZXRzIHJlbW92ZWQgZnJv bSBqb2lubGlzdCAqLwogCQlucmVtb3ZlZCA9IDA7CkBAIC0yNzYsNyArMjk4LDcgQEAgam9p bl9pc19yZW1vdmFibGUoUGxhbm5lckluZm8gKnJvb3QsIFNwZWNpYWxKb2luSW5mbyAqc2pp bmZvKQogCSAqIE5vdyB0aGF0IHdlIGhhdmUgdGhlIHJlbGV2YW50IGVxdWFsaXR5IGpvaW4g Y2xhdXNlcywgdHJ5IHRvIHByb3ZlIHRoZQogCSAqIGlubmVycmVsIGRpc3RpbmN0LgogCSAq LwotCWlmIChyZWxfaXNfZGlzdGluY3RfZm9yKHJvb3QsIGlubmVycmVsLCBjbGF1c2VfbGlz dCkpCisJaWYgKHJlbF9pc19kaXN0aW5jdF9mb3Iocm9vdCwgaW5uZXJyZWwsIGNsYXVzZV9s aXN0LCBOVUxMKSkKIAkJcmV0dXJuIHRydWU7CiAKIAkvKgpAQCAtMjg4LDM2ICszMTAsMzEg QEAgam9pbl9pc19yZW1vdmFibGUoUGxhbm5lckluZm8gKnJvb3QsIFNwZWNpYWxKb2luSW5m byAqc2ppbmZvKQogCiAKIC8qCi0gKiBSZW1vdmUgdGhlIHRhcmdldCByZWxpZCBhbmQgcmVm ZXJlbmNlcyB0byB0aGUgdGFyZ2V0IGpvaW4gZnJvbSB0aGUKKyAqIFJlbW92ZSB0aGUgdGFy Z2V0IHJlbC0+cmVsaWQgYW5kIHJlZmVyZW5jZXMgdG8gdGhlIHRhcmdldCBqb2luIGZyb20g dGhlCiAgKiBwbGFubmVyJ3MgZGF0YSBzdHJ1Y3R1cmVzLCBoYXZpbmcgZGV0ZXJtaW5lZCB0 aGF0IHRoZXJlIGlzIG5vIG5lZWQKLSAqIHRvIGluY2x1ZGUgdGhlbSBpbiB0aGUgcXVlcnku CisgKiB0byBpbmNsdWRlIHRoZW0gaW4gdGhlIHF1ZXJ5LiBPcHRpb25hbGx5IHJlcGxhY2Ug dGhlbSB3aXRoIHN1YnN0IGlmIHN1YnN0CisgKiBpcyBub24tbmVnYXRpdmUuCiAgKgotICog V2UgYXJlIG5vdCB0ZXJyaWJseSB0aG9yb3VnaCBoZXJlLiAgV2Ugb25seSBib3RoZXIgdG8g dXBkYXRlIHBhcnRzIG9mCi0gKiB0aGUgcGxhbm5lcidzIGRhdGEgc3RydWN0dXJlcyB0aGF0 IHdpbGwgYWN0dWFsbHkgYmUgY29uc3VsdGVkIGxhdGVyLgorICogVGhpcyBmdW5jdGlvbiB1 cGRhdGVzIG9ubHkgcGFydHMgbmVlZGVkIGZvciBib3RoIGxlZnQtam9pbiByZW1vdmFsIGFu ZAorICogc2VsZi1qb2luIHJlbW92YWwuCiAgKi8KIHN0YXRpYyB2b2lkCi1yZW1vdmVfcmVs X2Zyb21fcXVlcnkoUGxhbm5lckluZm8gKnJvb3QsIGludCByZWxpZCwgU3BlY2lhbEpvaW5J bmZvICpzamluZm8pCityZW1vdmVfcmVsX2Zyb21fcXVlcnkoUGxhbm5lckluZm8gKnJvb3Qs IFJlbE9wdEluZm8gKnJlbCwKKwkJCQkJICBpbnQgc3Vic3QsIFNwZWNpYWxKb2luSW5mbyAq c2ppbmZvLAorCQkJCQkgIFJlbGlkcyBqb2lucmVsaWRzKQogewotCVJlbE9wdEluZm8gKnJl bCA9IGZpbmRfYmFzZV9yZWwocm9vdCwgcmVsaWQpOwotCWludAkJCW9qcmVsaWQgPSBzamlu Zm8tPm9qcmVsaWQ7Ci0JUmVsaWRzCQlqb2lucmVsaWRzOwotCVJlbGlkcwkJam9pbl9wbHVz X2NvbW11dGU7Ci0JTGlzdAkgICAqam9pbmluZm9zOworCWludAkJCXJlbGlkID0gcmVsLT5y ZWxpZDsKKwlpbnQJCQlvanJlbGlkID0gKHNqaW5mbyAhPSBOVUxMKSA/IHNqaW5mby0+b2py ZWxpZCA6IC0xOwogCUluZGV4CQlydGk7CiAJTGlzdENlbGwgICAqbDsKIAotCS8qIENvbXB1 dGUgdGhlIHJlbGlkIHNldCBmb3IgdGhlIGpvaW4gd2UgYXJlIGNvbnNpZGVyaW5nICovCi0J am9pbnJlbGlkcyA9IGJtc191bmlvbihzamluZm8tPm1pbl9sZWZ0aGFuZCwgc2ppbmZvLT5t aW5fcmlnaHRoYW5kKTsKLQlBc3NlcnQob2pyZWxpZCAhPSAwKTsKLQlqb2lucmVsaWRzID0g Ym1zX2FkZF9tZW1iZXIoam9pbnJlbGlkcywgb2pyZWxpZCk7Ci0KIAkvKgogCSAqIFVwZGF0 ZSBhbGxfYmFzZXJlbHMgYW5kIHJlbGF0ZWQgcmVsaWQgc2V0cy4KIAkgKi8KLQlyb290LT5h bGxfYmFzZXJlbHMgPSBibXNfZGVsX21lbWJlcihyb290LT5hbGxfYmFzZXJlbHMsIHJlbGlk KTsKLQlyb290LT5vdXRlcl9qb2luX3JlbHMgPSBibXNfZGVsX21lbWJlcihyb290LT5vdXRl cl9qb2luX3JlbHMsIG9qcmVsaWQpOwotCXJvb3QtPmFsbF9xdWVyeV9yZWxzID0gYm1zX2Rl bF9tZW1iZXIocm9vdC0+YWxsX3F1ZXJ5X3JlbHMsIHJlbGlkKTsKLQlyb290LT5hbGxfcXVl cnlfcmVscyA9IGJtc19kZWxfbWVtYmVyKHJvb3QtPmFsbF9xdWVyeV9yZWxzLCBvanJlbGlk KTsKKwlyb290LT5hbGxfYmFzZXJlbHMgPSBhZGp1c3RfcmVsaWRfc2V0KHJvb3QtPmFsbF9i YXNlcmVscywgcmVsaWQsIHN1YnN0KTsKKwlyb290LT5vdXRlcl9qb2luX3JlbHMgPSBhZGp1 c3RfcmVsaWRfc2V0KHJvb3QtPm91dGVyX2pvaW5fcmVscywgb2pyZWxpZCwgc3Vic3QpOwor CXJvb3QtPmFsbF9xdWVyeV9yZWxzID0gYWRqdXN0X3JlbGlkX3NldChyb290LT5hbGxfcXVl cnlfcmVscywgcmVsaWQsIHN1YnN0KTsKKwlyb290LT5hbGxfcXVlcnlfcmVscyA9IGFkanVz dF9yZWxpZF9zZXQocm9vdC0+YWxsX3F1ZXJ5X3JlbHMsIG9qcmVsaWQsIHN1YnN0KTsKIAog CS8qCiAJICogTGlrZXdpc2UgcmVtb3ZlIHJlZmVyZW5jZXMgZnJvbSBTcGVjaWFsSm9pbklu Zm8gZGF0YSBzdHJ1Y3R1cmVzLgpAQCAtMzQxLDIwICszNTgsMzMgQEAgcmVtb3ZlX3JlbF9m cm9tX3F1ZXJ5KFBsYW5uZXJJbmZvICpyb290LCBpbnQgcmVsaWQsIFNwZWNpYWxKb2luSW5m byAqc2ppbmZvKQogCQlzamluZi0+bWluX3JpZ2h0aGFuZCA9IGJtc19jb3B5KHNqaW5mLT5t aW5fcmlnaHRoYW5kKTsKIAkJc2ppbmYtPnN5bl9sZWZ0aGFuZCA9IGJtc19jb3B5KHNqaW5m LT5zeW5fbGVmdGhhbmQpOwogCQlzamluZi0+c3luX3JpZ2h0aGFuZCA9IGJtc19jb3B5KHNq aW5mLT5zeW5fcmlnaHRoYW5kKTsKLQkJLyogTm93IHJlbW92ZSByZWxpZCBhbmQgb2pyZWxp ZCBiaXRzIGZyb20gdGhlIHNldHM6ICovCi0JCXNqaW5mLT5taW5fbGVmdGhhbmQgPSBibXNf ZGVsX21lbWJlcihzamluZi0+bWluX2xlZnRoYW5kLCByZWxpZCk7Ci0JCXNqaW5mLT5taW5f cmlnaHRoYW5kID0gYm1zX2RlbF9tZW1iZXIoc2ppbmYtPm1pbl9yaWdodGhhbmQsIHJlbGlk KTsKLQkJc2ppbmYtPnN5bl9sZWZ0aGFuZCA9IGJtc19kZWxfbWVtYmVyKHNqaW5mLT5zeW5f bGVmdGhhbmQsIHJlbGlkKTsKLQkJc2ppbmYtPnN5bl9yaWdodGhhbmQgPSBibXNfZGVsX21l bWJlcihzamluZi0+c3luX3JpZ2h0aGFuZCwgcmVsaWQpOwotCQlzamluZi0+bWluX2xlZnRo YW5kID0gYm1zX2RlbF9tZW1iZXIoc2ppbmYtPm1pbl9sZWZ0aGFuZCwgb2pyZWxpZCk7Ci0J CXNqaW5mLT5taW5fcmlnaHRoYW5kID0gYm1zX2RlbF9tZW1iZXIoc2ppbmYtPm1pbl9yaWdo dGhhbmQsIG9qcmVsaWQpOwotCQlzamluZi0+c3luX2xlZnRoYW5kID0gYm1zX2RlbF9tZW1i ZXIoc2ppbmYtPnN5bl9sZWZ0aGFuZCwgb2pyZWxpZCk7Ci0JCXNqaW5mLT5zeW5fcmlnaHRo YW5kID0gYm1zX2RlbF9tZW1iZXIoc2ppbmYtPnN5bl9yaWdodGhhbmQsIG9qcmVsaWQpOwot CQkvKiByZWxpZCBjYW5ub3QgYXBwZWFyIGluIHRoZXNlIGZpZWxkcywgYnV0IG9qcmVsaWQg Y2FuOiAqLwotCQlzamluZi0+Y29tbXV0ZV9hYm92ZV9sID0gYm1zX2RlbF9tZW1iZXIoc2pp bmYtPmNvbW11dGVfYWJvdmVfbCwgb2pyZWxpZCk7Ci0JCXNqaW5mLT5jb21tdXRlX2Fib3Zl X3IgPSBibXNfZGVsX21lbWJlcihzamluZi0+Y29tbXV0ZV9hYm92ZV9yLCBvanJlbGlkKTsK LQkJc2ppbmYtPmNvbW11dGVfYmVsb3dfbCA9IGJtc19kZWxfbWVtYmVyKHNqaW5mLT5jb21t dXRlX2JlbG93X2wsIG9qcmVsaWQpOwotCQlzamluZi0+Y29tbXV0ZV9iZWxvd19yID0gYm1z X2RlbF9tZW1iZXIoc2ppbmYtPmNvbW11dGVfYmVsb3dfciwgb2pyZWxpZCk7CisJCS8qIE5v dyByZW1vdmUgcmVsaWQgZnJvbSB0aGUgc2V0czogKi8KKwkJc2ppbmYtPm1pbl9sZWZ0aGFu ZCA9IGFkanVzdF9yZWxpZF9zZXQoc2ppbmYtPm1pbl9sZWZ0aGFuZCwgcmVsaWQsIHN1YnN0 KTsKKwkJc2ppbmYtPm1pbl9yaWdodGhhbmQgPSBhZGp1c3RfcmVsaWRfc2V0KHNqaW5mLT5t aW5fcmlnaHRoYW5kLCByZWxpZCwgc3Vic3QpOworCQlzamluZi0+c3luX2xlZnRoYW5kID0g YWRqdXN0X3JlbGlkX3NldChzamluZi0+c3luX2xlZnRoYW5kLCByZWxpZCwgc3Vic3QpOwor CQlzamluZi0+c3luX3JpZ2h0aGFuZCA9IGFkanVzdF9yZWxpZF9zZXQoc2ppbmYtPnN5bl9y aWdodGhhbmQsIHJlbGlkLCBzdWJzdCk7CisKKwkJaWYgKHNqaW5mbyAhPSBOVUxMKQorCQl7 CisJCQlBc3NlcnQoc3Vic3QgPD0gMCAmJiBvanJlbGlkID4gMCk7CisKKwkJCS8qIFJlbW92 ZSBvanJlbGlkIGJpdHMgZnJvbSB0aGUgc2V0czogKi8KKwkJCXNqaW5mLT5taW5fbGVmdGhh bmQgPSBibXNfZGVsX21lbWJlcihzamluZi0+bWluX2xlZnRoYW5kLCBvanJlbGlkKTsKKwkJ CXNqaW5mLT5taW5fcmlnaHRoYW5kID0gYm1zX2RlbF9tZW1iZXIoc2ppbmYtPm1pbl9yaWdo dGhhbmQsIG9qcmVsaWQpOworCQkJc2ppbmYtPnN5bl9sZWZ0aGFuZCA9IGJtc19kZWxfbWVt YmVyKHNqaW5mLT5zeW5fbGVmdGhhbmQsIG9qcmVsaWQpOworCQkJc2ppbmYtPnN5bl9yaWdo dGhhbmQgPSBibXNfZGVsX21lbWJlcihzamluZi0+c3luX3JpZ2h0aGFuZCwgb2pyZWxpZCk7 CisJCQkvKiByZWxpZCBjYW5ub3QgYXBwZWFyIGluIHRoZXNlIGZpZWxkcywgYnV0IG9qcmVs aWQgY2FuOiAqLworCQkJc2ppbmYtPmNvbW11dGVfYWJvdmVfbCA9IGJtc19kZWxfbWVtYmVy KHNqaW5mLT5jb21tdXRlX2Fib3ZlX2wsIG9qcmVsaWQpOworCQkJc2ppbmYtPmNvbW11dGVf YWJvdmVfciA9IGJtc19kZWxfbWVtYmVyKHNqaW5mLT5jb21tdXRlX2Fib3ZlX3IsIG9qcmVs aWQpOworCQkJc2ppbmYtPmNvbW11dGVfYmVsb3dfbCA9IGJtc19kZWxfbWVtYmVyKHNqaW5m LT5jb21tdXRlX2JlbG93X2wsIG9qcmVsaWQpOworCQkJc2ppbmYtPmNvbW11dGVfYmVsb3df ciA9IGJtc19kZWxfbWVtYmVyKHNqaW5mLT5jb21tdXRlX2JlbG93X3IsIG9qcmVsaWQpOwor CQl9CisJCWVsc2UKKwkJeworCQkJQXNzZXJ0KHN1YnN0ID4gMCAmJiBvanJlbGlkID09IC0x KTsKKworCQkJQ2hhbmdlVmFyTm9kZXMoKE5vZGUgKikgc2ppbmYtPnNlbWlfcmhzX2V4cHJz LCByZWxpZCwgc3Vic3QsIDApOworCQl9CiAJfQogCiAJLyoKQEAgLTM3NSwxMCArNDA1LDEw IEBAIHJlbW92ZV9yZWxfZnJvbV9xdWVyeShQbGFubmVySW5mbyAqcm9vdCwgaW50IHJlbGlk LCBTcGVjaWFsSm9pbkluZm8gKnNqaW5mbykKIAl7CiAJCVBsYWNlSG9sZGVySW5mbyAqcGhp bmZvID0gKFBsYWNlSG9sZGVySW5mbyAqKSBsZmlyc3QobCk7CiAKLQkJQXNzZXJ0KCFibXNf aXNfbWVtYmVyKHJlbGlkLCBwaGluZm8tPnBoX2xhdGVyYWwpKTsKKwkJQXNzZXJ0KHNqaW5m byA9PSBOVUxMIHx8ICFibXNfaXNfbWVtYmVyKHJlbGlkLCBwaGluZm8tPnBoX2xhdGVyYWwp KTsKIAkJaWYgKGJtc19pc19zdWJzZXQocGhpbmZvLT5waF9uZWVkZWQsIGpvaW5yZWxpZHMp ICYmCiAJCQlibXNfaXNfbWVtYmVyKHJlbGlkLCBwaGluZm8tPnBoX2V2YWxfYXQpICYmCi0J CQkhYm1zX2lzX21lbWJlcihvanJlbGlkLCBwaGluZm8tPnBoX2V2YWxfYXQpKQorCQkJKHNq aW5mbyA9PSBOVUxMIHx8ICFibXNfaXNfbWVtYmVyKG9qcmVsaWQsIHBoaW5mby0+cGhfZXZh bF9hdCkpKQogCQl7CiAJCQlyb290LT5wbGFjZWhvbGRlcl9saXN0ID0gZm9yZWFjaF9kZWxl dGVfY3VycmVudChyb290LT5wbGFjZWhvbGRlcl9saXN0LAogCQkJCQkJCQkJCQkJCQkJbCk7 CkBAIC0zODgsMjEgKzQxOCwxMTIgQEAgcmVtb3ZlX3JlbF9mcm9tX3F1ZXJ5KFBsYW5uZXJJ bmZvICpyb290LCBpbnQgcmVsaWQsIFNwZWNpYWxKb2luSW5mbyAqc2ppbmZvKQogCQl7CiAJ CQlQbGFjZUhvbGRlclZhciAqcGh2ID0gcGhpbmZvLT5waF92YXI7CiAKLQkJCXBoaW5mby0+ cGhfZXZhbF9hdCA9IGJtc19kZWxfbWVtYmVyKHBoaW5mby0+cGhfZXZhbF9hdCwgcmVsaWQp OwotCQkJcGhpbmZvLT5waF9ldmFsX2F0ID0gYm1zX2RlbF9tZW1iZXIocGhpbmZvLT5waF9l dmFsX2F0LCBvanJlbGlkKTsKKwkJCXBoaW5mby0+cGhfZXZhbF9hdCA9IGFkanVzdF9yZWxp ZF9zZXQocGhpbmZvLT5waF9ldmFsX2F0LCByZWxpZCwgc3Vic3QpOworCQkJcGhpbmZvLT5w aF9ldmFsX2F0ID0gYWRqdXN0X3JlbGlkX3NldChwaGluZm8tPnBoX2V2YWxfYXQsIG9qcmVs aWQsIHN1YnN0KTsKIAkJCUFzc2VydCghYm1zX2lzX2VtcHR5KHBoaW5mby0+cGhfZXZhbF9h dCkpOwkvKiBjaGVja2VkIHByZXZpb3VzbHkgKi8KIAkJCS8qIFJlZHVjZSBwaF9uZWVkZWQg dG8gY29udGFpbiBvbmx5ICJyZWxhdGlvbiAwIjsgc2VlIGJlbG93ICovCiAJCQlpZiAoYm1z X2lzX21lbWJlcigwLCBwaGluZm8tPnBoX25lZWRlZCkpCiAJCQkJcGhpbmZvLT5waF9uZWVk ZWQgPSBibXNfbWFrZV9zaW5nbGV0b24oMCk7CiAJCQllbHNlCiAJCQkJcGhpbmZvLT5waF9u ZWVkZWQgPSBOVUxMOwotCQkJcGh2LT5waHJlbHMgPSBibXNfZGVsX21lbWJlcihwaHYtPnBo cmVscywgcmVsaWQpOwotCQkJcGh2LT5waHJlbHMgPSBibXNfZGVsX21lbWJlcihwaHYtPnBo cmVscywgb2pyZWxpZCk7CisKKwkJCXBoaW5mby0+cGhfbGF0ZXJhbCA9IGFkanVzdF9yZWxp ZF9zZXQocGhpbmZvLT5waF9sYXRlcmFsLCByZWxpZCwgc3Vic3QpOworCisJCQkvKgorCQkJ ICogcGhfbGF0ZXJhbCBtaWdodCBjb250YWluIHJlbHMgbWVudGlvbmVkIGluIHBoX2V2YWxf YXQgYWZ0ZXIgdGhlCisJCQkgKiByZXBsYWNlbWVudCwgcmVtb3ZlIHRoZW0uCisJCQkgKi8K KwkJCXBoaW5mby0+cGhfbGF0ZXJhbCA9IGJtc19kaWZmZXJlbmNlKHBoaW5mby0+cGhfbGF0 ZXJhbCwgcGhpbmZvLT5waF9ldmFsX2F0KTsKKwkJCS8qIHBoX2xhdGVyYWwgbWlnaHQgb3Ig bWlnaHQgbm90IGJlIGVtcHR5ICovCisKKwkJCXBodi0+cGhyZWxzID0gYWRqdXN0X3JlbGlk X3NldChwaHYtPnBocmVscywgcmVsaWQsIHN1YnN0KTsKKwkJCXBodi0+cGhyZWxzID0gYWRq dXN0X3JlbGlkX3NldChwaHYtPnBocmVscywgb2pyZWxpZCwgc3Vic3QpOwogCQkJQXNzZXJ0 KCFibXNfaXNfZW1wdHkocGh2LT5waHJlbHMpKTsKKworCQkJQ2hhbmdlVmFyTm9kZXMoKE5v ZGUgKikgcGh2LT5waGV4cHIsIHJlbGlkLCBzdWJzdCwgMCk7CisKIAkJCUFzc2VydChwaHYt PnBobnVsbGluZ3JlbHMgPT0gTlVMTCk7IC8qIG5vIG5lZWQgdG8gYWRqdXN0ICovCiAJCX0K IAl9CiAKKwkvKgorCSAqIExpa2V3aXNlIHJlbW92ZSByZWZlcmVuY2VzIGZyb20gRXF1aXZh bGVuY2VDbGFzc2VzLgorCSAqLworCWZvcmVhY2gobCwgcm9vdC0+ZXFfY2xhc3NlcykKKwl7 CisJCUVxdWl2YWxlbmNlQ2xhc3MgKmVjID0gKEVxdWl2YWxlbmNlQ2xhc3MgKikgbGZpcnN0 KGwpOworCisJCWlmIChibXNfaXNfbWVtYmVyKHJlbGlkLCBlYy0+ZWNfcmVsaWRzKSB8fAor CQkJKHNqaW5mbyA9PSBOVUxMIHx8IGJtc19pc19tZW1iZXIob2pyZWxpZCwgZWMtPmVjX3Jl bGlkcykpKQorCQkJcmVtb3ZlX3JlbF9mcm9tX2VjbGFzcyhlYywgcmVsaWQsIG9qcmVsaWQs IHN1YnN0KTsKKwl9CisKKwkvKgorCSAqIEZpbmFsbHksIHdlIG11c3QgcmVjb21wdXRlIHBl ci1WYXIgYXR0cl9uZWVkZWQgYW5kIHBlci1QbGFjZUhvbGRlclZhcgorCSAqIHBoX25lZWRl ZCByZWxpZCBzZXRzLiAgVGhlc2UgaGF2ZSB0byBiZSBrbm93biBhY2N1cmF0ZWx5LCBlbHNl IHdlIG1heQorCSAqIGZhaWwgdG8gcmVtb3ZlIG90aGVyIG5vdy1yZW1vdmFibGUgb3V0ZXIg am9pbnMuICBBbmQgb3VyIHJlbW92YWwgb2YgdGhlCisJICogam9pbiBjbGF1c2UocykgZm9y IHRoaXMgb3V0ZXIgam9pbiBtYXkgbWVhbiB0aGF0IFZhcnMgdGhhdCB3ZXJlCisJICogZm9y bWVybHkgbmVlZGVkIG5vIGxvbmdlciBhcmUuICBTbyB3ZSBoYXZlIHRvIGRvIHRoaXMgaG9u ZXN0bHkgYnkKKwkgKiByZXBlYXRpbmcgdGhlIGNvbnN0cnVjdGlvbiBvZiB0aG9zZSByZWxp ZCBzZXRzLiAgV2UgY2FuIGNoZWF0IHRvIG9uZQorCSAqIHNtYWxsIGV4dGVudDogd2UgY2Fu IGF2b2lkIHJlLWV4YW1pbmluZyB0aGUgdGFyZ2V0bGlzdCBhbmQgSEFWSU5HIHF1YWwKKwkg KiBieSBwcmVzZXJ2aW5nICJyZWxhdGlvbiAwIiBiaXRzIGZyb20gdGhlIGV4aXN0aW5nIHJl bGlkIHNldHMuICBUaGlzIGlzCisJICogc2FmZSBiZWNhdXNlIHdlJ2QgbmV2ZXIgcmVtb3Zl IHN1Y2ggcmVmZXJlbmNlcy4KKwkgKgorCSAqIFNvLCBzdGFydCBieSByZW1vdmluZyBhbGwg b3RoZXIgYml0cyBmcm9tIGF0dHJfbmVlZGVkIHNldHMgYW5kCisJICogbGF0ZXJhbF92YXJz IGxpc3RzLiAgKFdlIGFscmVhZHkgZGlkIHRoaXMgYWJvdmUgZm9yIHBoX25lZWRlZC4pCisJ ICovCisJZm9yIChydGkgPSAxOyBydGkgPCByb290LT5zaW1wbGVfcmVsX2FycmF5X3NpemU7 IHJ0aSsrKQorCXsKKwkJUmVsT3B0SW5mbyAqb3RoZXJyZWwgPSByb290LT5zaW1wbGVfcmVs X2FycmF5W3J0aV07CisJCWludAkJCWF0dHJvZmY7CisKKwkJLyogdGhlcmUgbWF5IGJlIGVt cHR5IHNsb3RzIGNvcnJlc3BvbmRpbmcgdG8gbm9uLWJhc2VyZWwgUlRFcyAqLworCQlpZiAo b3RoZXJyZWwgPT0gTlVMTCkKKwkJCWNvbnRpbnVlOworCisJCUFzc2VydChvdGhlcnJlbC0+ cmVsaWQgPT0gcnRpKTsgLyogc2FuaXR5IGNoZWNrIG9uIGFycmF5ICovCisKKwkJZm9yIChh dHRyb2ZmID0gb3RoZXJyZWwtPm1heF9hdHRyIC0gb3RoZXJyZWwtPm1pbl9hdHRyOworCQkJ IGF0dHJvZmYgPj0gMDsKKwkJCSBhdHRyb2ZmLS0pCisJCXsKKwkJCWlmIChibXNfaXNfbWVt YmVyKDAsIG90aGVycmVsLT5hdHRyX25lZWRlZFthdHRyb2ZmXSkpCisJCQkJb3RoZXJyZWwt PmF0dHJfbmVlZGVkW2F0dHJvZmZdID0gYm1zX21ha2Vfc2luZ2xldG9uKDApOworCQkJZWxz ZQorCQkJCW90aGVycmVsLT5hdHRyX25lZWRlZFthdHRyb2ZmXSA9IE5VTEw7CisJCX0KKwor CQlpZiAoc3Vic3QgPiAwKQorCQkJQ2hhbmdlVmFyTm9kZXMoKE5vZGUgKikgb3RoZXJyZWwt PmxhdGVyYWxfdmFycywgcmVsaWQsIHN1YnN0LCAwKTsKKwl9Cit9CisKKy8qCisgKiBSZW1v dmUgdGhlIHRhcmdldCByZWxpZCBhbmQgcmVmZXJlbmNlcyB0byB0aGUgdGFyZ2V0IGpvaW4g ZnJvbSB0aGUKKyAqIHBsYW5uZXIncyBkYXRhIHN0cnVjdHVyZXMsIGhhdmluZyBkZXRlcm1p bmVkIHRoYXQgdGhlcmUgaXMgbm8gbmVlZAorICogdG8gaW5jbHVkZSB0aGVtIGluIHRoZSBx dWVyeS4KKyAqCisgKiBXZSBhcmUgbm90IHRlcnJpYmx5IHRob3JvdWdoIGhlcmUuICBXZSBv bmx5IGJvdGhlciB0byB1cGRhdGUgcGFydHMgb2YKKyAqIHRoZSBwbGFubmVyJ3MgZGF0YSBz dHJ1Y3R1cmVzIHRoYXQgd2lsbCBhY3R1YWxseSBiZSBjb25zdWx0ZWQgbGF0ZXIuCisgKi8K K3N0YXRpYyB2b2lkCityZW1vdmVfbGVmdGpvaW5yZWxfZnJvbV9xdWVyeShQbGFubmVySW5m byAqcm9vdCwgaW50IHJlbGlkLAorCQkJCQkJCSAgU3BlY2lhbEpvaW5JbmZvICpzamluZm8p Cit7CisJUmVsT3B0SW5mbyAqcmVsID0gZmluZF9iYXNlX3JlbChyb290LCByZWxpZCk7CisJ aW50CQkJb2pyZWxpZCA9IHNqaW5mby0+b2pyZWxpZDsKKwlSZWxpZHMJCWpvaW5yZWxpZHM7 CisJUmVsaWRzCQlqb2luX3BsdXNfY29tbXV0ZTsKKwlMaXN0CSAgICpqb2luaW5mb3M7CisJ TGlzdENlbGwgICAqbDsKKworCS8qIENvbXB1dGUgdGhlIHJlbGlkIHNldCBmb3IgdGhlIGpv aW4gd2UgYXJlIGNvbnNpZGVyaW5nICovCisJam9pbnJlbGlkcyA9IGJtc191bmlvbihzamlu Zm8tPm1pbl9sZWZ0aGFuZCwgc2ppbmZvLT5taW5fcmlnaHRoYW5kKTsKKwlBc3NlcnQob2py ZWxpZCAhPSAwKTsKKwlqb2lucmVsaWRzID0gYm1zX2FkZF9tZW1iZXIoam9pbnJlbGlkcywg b2pyZWxpZCk7CisKKwlyZW1vdmVfcmVsX2Zyb21fcXVlcnkocm9vdCwgcmVsLCAtMSwgc2pp bmZvLCBqb2lucmVsaWRzKTsKKwogCS8qCiAJICogUmVtb3ZlIGFueSBqb2lucXVhbHMgcmVm ZXJlbmNpbmcgdGhlIHJlbCBmcm9tIHRoZSBqb2luaW5mbyBsaXN0cy4KIAkgKgpAQCAtNDY1 LDE4ICs1ODYsNiBAQCByZW1vdmVfcmVsX2Zyb21fcXVlcnkoUGxhbm5lckluZm8gKnJvb3Qs IGludCByZWxpZCwgU3BlY2lhbEpvaW5JbmZvICpzamluZm8pCiAJCX0KIAl9CiAKLQkvKgot CSAqIExpa2V3aXNlIHJlbW92ZSByZWZlcmVuY2VzIGZyb20gRXF1aXZhbGVuY2VDbGFzc2Vz LgotCSAqLwotCWZvcmVhY2gobCwgcm9vdC0+ZXFfY2xhc3NlcykKLQl7Ci0JCUVxdWl2YWxl bmNlQ2xhc3MgKmVjID0gKEVxdWl2YWxlbmNlQ2xhc3MgKikgbGZpcnN0KGwpOwotCi0JCWlm IChibXNfaXNfbWVtYmVyKHJlbGlkLCBlYy0+ZWNfcmVsaWRzKSB8fAotCQkJYm1zX2lzX21l bWJlcihvanJlbGlkLCBlYy0+ZWNfcmVsaWRzKSkKLQkJCXJlbW92ZV9yZWxfZnJvbV9lY2xh c3MoZWMsIHJlbGlkLCBvanJlbGlkKTsKLQl9Ci0KIAkvKgogCSAqIFRoZXJlIG1heSBiZSBy ZWZlcmVuY2VzIHRvIHRoZSByZWwgaW4gcm9vdC0+ZmtleV9saXN0LCBidXQgaWYgc28sCiAJ ICogbWF0Y2hfZm9yZWlnbl9rZXlzX3RvX3F1YWxzKCkgd2lsbCBnZXQgcmlkIG9mIHRoZW0u CkBAIC00OTIsNDIgKzYwMSw2IEBAIHJlbW92ZV9yZWxfZnJvbV9xdWVyeShQbGFubmVySW5m byAqcm9vdCwgaW50IHJlbGlkLCBTcGVjaWFsSm9pbkluZm8gKnNqaW5mbykKIAkvKiBBbmQg bnVrZSB0aGUgUmVsT3B0SW5mbywganVzdCBpbiBjYXNlIHRoZXJlJ3MgYW5vdGhlciBhY2Nl c3MgcGF0aCAqLwogCXBmcmVlKHJlbCk7CiAKLQkvKgotCSAqIEZpbmFsbHksIHdlIG11c3Qg cmVjb21wdXRlIHBlci1WYXIgYXR0cl9uZWVkZWQgYW5kIHBlci1QbGFjZUhvbGRlclZhcgot CSAqIHBoX25lZWRlZCByZWxpZCBzZXRzLiAgVGhlc2UgaGF2ZSB0byBiZSBrbm93biBhY2N1 cmF0ZWx5LCBlbHNlIHdlIG1heQotCSAqIGZhaWwgdG8gcmVtb3ZlIG90aGVyIG5vdy1yZW1v dmFibGUgb3V0ZXIgam9pbnMuICBBbmQgb3VyIHJlbW92YWwgb2YgdGhlCi0JICogam9pbiBj bGF1c2UocykgZm9yIHRoaXMgb3V0ZXIgam9pbiBtYXkgbWVhbiB0aGF0IFZhcnMgdGhhdCB3 ZXJlCi0JICogZm9ybWVybHkgbmVlZGVkIG5vIGxvbmdlciBhcmUuICBTbyB3ZSBoYXZlIHRv IGRvIHRoaXMgaG9uZXN0bHkgYnkKLQkgKiByZXBlYXRpbmcgdGhlIGNvbnN0cnVjdGlvbiBv ZiB0aG9zZSByZWxpZCBzZXRzLiAgV2UgY2FuIGNoZWF0IHRvIG9uZQotCSAqIHNtYWxsIGV4 dGVudDogd2UgY2FuIGF2b2lkIHJlLWV4YW1pbmluZyB0aGUgdGFyZ2V0bGlzdCBhbmQgSEFW SU5HIHF1YWwKLQkgKiBieSBwcmVzZXJ2aW5nICJyZWxhdGlvbiAwIiBiaXRzIGZyb20gdGhl IGV4aXN0aW5nIHJlbGlkIHNldHMuICBUaGlzIGlzCi0JICogc2FmZSBiZWNhdXNlIHdlJ2Qg bmV2ZXIgcmVtb3ZlIHN1Y2ggcmVmZXJlbmNlcy4KLQkgKgotCSAqIFNvLCBzdGFydCBieSBy ZW1vdmluZyBhbGwgb3RoZXIgYml0cyBmcm9tIGF0dHJfbmVlZGVkIHNldHMuICAoV2UKLQkg KiBhbHJlYWR5IGRpZCB0aGlzIGFib3ZlIGZvciBwaF9uZWVkZWQuKQotCSAqLwotCWZvciAo cnRpID0gMTsgcnRpIDwgcm9vdC0+c2ltcGxlX3JlbF9hcnJheV9zaXplOyBydGkrKykKLQl7 Ci0JCVJlbE9wdEluZm8gKm90aGVycmVsID0gcm9vdC0+c2ltcGxlX3JlbF9hcnJheVtydGld OwotCQlpbnQJCQlhdHRyb2ZmOwotCi0JCS8qIHRoZXJlIG1heSBiZSBlbXB0eSBzbG90cyBj b3JyZXNwb25kaW5nIHRvIG5vbi1iYXNlcmVsIFJURXMgKi8KLQkJaWYgKG90aGVycmVsID09 IE5VTEwpCi0JCQljb250aW51ZTsKLQotCQlBc3NlcnQob3RoZXJyZWwtPnJlbGlkID09IHJ0 aSk7IC8qIHNhbml0eSBjaGVjayBvbiBhcnJheSAqLwotCi0JCWZvciAoYXR0cm9mZiA9IG90 aGVycmVsLT5tYXhfYXR0ciAtIG90aGVycmVsLT5taW5fYXR0cjsKLQkJCSBhdHRyb2ZmID49 IDA7Ci0JCQkgYXR0cm9mZi0tKQotCQl7Ci0JCQlpZiAoYm1zX2lzX21lbWJlcigwLCBvdGhl cnJlbC0+YXR0cl9uZWVkZWRbYXR0cm9mZl0pKQotCQkJCW90aGVycmVsLT5hdHRyX25lZWRl ZFthdHRyb2ZmXSA9IGJtc19tYWtlX3NpbmdsZXRvbigwKTsKLQkJCWVsc2UKLQkJCQlvdGhl cnJlbC0+YXR0cl9uZWVkZWRbYXR0cm9mZl0gPSBOVUxMOwotCQl9Ci0JfQotCiAJLyoKIAkg KiBOb3cgcmVwZWF0IGNvbnN0cnVjdGlvbiBvZiBhdHRyX25lZWRlZCBiaXRzIGNvbWluZyBm cm9tIGFsbCBvdGhlcgogCSAqIHNvdXJjZXMuCkBAIC02MDcsMTMgKzY4MCwxMyBAQCByZW1v dmVfcmVsX2Zyb21fcmVzdHJpY3RpbmZvKFJlc3RyaWN0SW5mbyAqcmluZm8sIGludCByZWxp ZCwgaW50IG9qcmVsaWQpCiAgKiBsZXZlbChzKS4KICAqLwogc3RhdGljIHZvaWQKLXJlbW92 ZV9yZWxfZnJvbV9lY2xhc3MoRXF1aXZhbGVuY2VDbGFzcyAqZWMsIGludCByZWxpZCwgaW50 IG9qcmVsaWQpCityZW1vdmVfcmVsX2Zyb21fZWNsYXNzKEVxdWl2YWxlbmNlQ2xhc3MgKmVj LCBpbnQgcmVsaWQsIGludCBvanJlbGlkLCBpbnQgc3Vic3QpCiB7CiAJTGlzdENlbGwgICAq bGM7CiAKIAkvKiBGaXggdXAgdGhlIEVDJ3Mgb3ZlcmFsbCByZWxpZHMgKi8KLQllYy0+ZWNf cmVsaWRzID0gYm1zX2RlbF9tZW1iZXIoZWMtPmVjX3JlbGlkcywgcmVsaWQpOwotCWVjLT5l Y19yZWxpZHMgPSBibXNfZGVsX21lbWJlcihlYy0+ZWNfcmVsaWRzLCBvanJlbGlkKTsKKwll Yy0+ZWNfcmVsaWRzID0gYWRqdXN0X3JlbGlkX3NldChlYy0+ZWNfcmVsaWRzLCByZWxpZCwg c3Vic3QpOworCWVjLT5lY19yZWxpZHMgPSBhZGp1c3RfcmVsaWRfc2V0KGVjLT5lY19yZWxp ZHMsIG9qcmVsaWQsIHN1YnN0KTsKIAogCS8qCiAJICogRml4IHVwIHRoZSBtZW1iZXIgZXhw cmVzc2lvbnMuICBBbnkgbm9uLWNvbnN0IG1lbWJlciB0aGF0IGVuZHMgd2l0aApAQCAtNjI1 LDExICs2OTgsMTEgQEAgcmVtb3ZlX3JlbF9mcm9tX2VjbGFzcyhFcXVpdmFsZW5jZUNsYXNz ICplYywgaW50IHJlbGlkLCBpbnQgb2pyZWxpZCkKIAkJRXF1aXZhbGVuY2VNZW1iZXIgKmN1 cl9lbSA9IChFcXVpdmFsZW5jZU1lbWJlciAqKSBsZmlyc3QobGMpOwogCiAJCWlmIChibXNf aXNfbWVtYmVyKHJlbGlkLCBjdXJfZW0tPmVtX3JlbGlkcykgfHwKLQkJCWJtc19pc19tZW1i ZXIob2pyZWxpZCwgY3VyX2VtLT5lbV9yZWxpZHMpKQorCQkJKG9qcmVsaWQgIT0gLTEgJiYg Ym1zX2lzX21lbWJlcihvanJlbGlkLCBjdXJfZW0tPmVtX3JlbGlkcykpKQogCQl7CiAJCQlB c3NlcnQoIWN1cl9lbS0+ZW1faXNfY29uc3QpOwotCQkJY3VyX2VtLT5lbV9yZWxpZHMgPSBi bXNfZGVsX21lbWJlcihjdXJfZW0tPmVtX3JlbGlkcywgcmVsaWQpOwotCQkJY3VyX2VtLT5l bV9yZWxpZHMgPSBibXNfZGVsX21lbWJlcihjdXJfZW0tPmVtX3JlbGlkcywgb2pyZWxpZCk7 CisJCQljdXJfZW0tPmVtX3JlbGlkcyA9IGFkanVzdF9yZWxpZF9zZXQoY3VyX2VtLT5lbV9y ZWxpZHMsIHJlbGlkLCBzdWJzdCk7CisJCQljdXJfZW0tPmVtX3JlbGlkcyA9IGFkanVzdF9y ZWxpZF9zZXQoY3VyX2VtLT5lbV9yZWxpZHMsIG9qcmVsaWQsIHN1YnN0KTsKIAkJCWlmIChi bXNfaXNfZW1wdHkoY3VyX2VtLT5lbV9yZWxpZHMpKQogCQkJCWVjLT5lY19tZW1iZXJzID0g Zm9yZWFjaF9kZWxldGVfY3VycmVudChlYy0+ZWNfbWVtYmVycywgbGMpOwogCQl9CkBAIC02 NDAsNyArNzEzLDEwIEBAIHJlbW92ZV9yZWxfZnJvbV9lY2xhc3MoRXF1aXZhbGVuY2VDbGFz cyAqZWMsIGludCByZWxpZCwgaW50IG9qcmVsaWQpCiAJewogCQlSZXN0cmljdEluZm8gKnJp bmZvID0gKFJlc3RyaWN0SW5mbyAqKSBsZmlyc3QobGMpOwogCi0JCXJlbW92ZV9yZWxfZnJv bV9yZXN0cmljdGluZm8ocmluZm8sIHJlbGlkLCBvanJlbGlkKTsKKwkJaWYgKG9qcmVsaWQg PT0gLTEpCisJCQlDaGFuZ2VWYXJOb2RlcygoTm9kZSAqKSByaW5mbywgcmVsaWQsIHN1YnN0 LCAwKTsKKwkJZWxzZQorCQkJcmVtb3ZlX3JlbF9mcm9tX3Jlc3RyaWN0aW5mbyhyaW5mbywg cmVsaWQsIG9qcmVsaWQpOwogCX0KIAogCS8qCkBAIC04NDQsOSArOTIwLDE1IEBAIHJlbF9z dXBwb3J0c19kaXN0aW5jdG5lc3MoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJl bCkKICAqIE5vdGUgdGhhdCB0aGUgcGFzc2VkLWluIGNsYXVzZV9saXN0IG1heSBiZSBkZXN0 cnVjdGl2ZWx5IG1vZGlmaWVkISAgVGhpcwogICogaXMgT0sgZm9yIGN1cnJlbnQgdXNlcywg YmVjYXVzZSB0aGUgY2xhdXNlX2xpc3QgaXMgYnVpbHQgYnkgdGhlIGNhbGxlciBmb3IKICAq IHRoZSBzb2xlIHB1cnBvc2Ugb2YgcGFzc2luZyB0byB0aGlzIGZ1bmN0aW9uLgorICoKKyAq ICgqZXh0cmFfY2xhdXNlcykgdG8gYmUgc2V0IHRvIHRoZSByaWdodCBzaWRlcyBvZiBiYXNl cmVzdHJpY3RpbmZvIGNsYXVzZXMsCisgKiBsb29raW5nIGxpa2UgInggPSBjb25zdCIgaWYg ZGlzdGluY3RuZXNzIGlzIGRlcml2ZWQgZnJvbSBzdWNoIGNsYXVzZXMsIG5vdAorICogam9p bmluZm8gY2xhdXNlcy4gIFBhc3MgTlVMTCB0byB0aGUgZXh0cmFfY2xhdXNlcyBpZiB0aGlz IHZhbHVlIGlzIG5vdAorICogbmVlZGVkLgogICovCiBzdGF0aWMgYm9vbAotcmVsX2lzX2Rp c3RpbmN0X2ZvcihQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLCBMaXN0ICpj bGF1c2VfbGlzdCkKK3JlbF9pc19kaXN0aW5jdF9mb3IoUGxhbm5lckluZm8gKnJvb3QsIFJl bE9wdEluZm8gKnJlbCwgTGlzdCAqY2xhdXNlX2xpc3QsCisJCQkJCUxpc3QgKipleHRyYV9j bGF1c2VzKQogewogCS8qCiAJICogV2UgY291bGQgc2tpcCBhIGNvdXBsZSBvZiB0ZXN0cyBo ZXJlIGlmIHdlIGFzc3VtZSBhbGwgY2FsbGVycyBjaGVja2VkCkBAIC04NTksMTAgKzk0MSwx MSBAQCByZWxfaXNfZGlzdGluY3RfZm9yKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZv ICpyZWwsIExpc3QgKmNsYXVzZV9saXN0KQogCXsKIAkJLyoKIAkJICogRXhhbWluZSB0aGUg aW5kZXhlcyB0byBzZWUgaWYgd2UgaGF2ZSBhIG1hdGNoaW5nIHVuaXF1ZSBpbmRleC4KLQkJ ICogcmVsYXRpb25faGFzX3VuaXF1ZV9pbmRleF9mb3IgYXV0b21hdGljYWxseSBhZGRzIGFu eSB1c2FibGUKKwkJICogcmVsYXRpb25faGFzX3VuaXF1ZV9pbmRleF9leHQgYXV0b21hdGlj YWxseSBhZGRzIGFueSB1c2FibGUKIAkJICogcmVzdHJpY3Rpb24gY2xhdXNlcyBmb3IgdGhl IHJlbCwgc28gd2UgbmVlZG4ndCBkbyB0aGF0IGhlcmUuCiAJCSAqLwotCQlpZiAocmVsYXRp b25faGFzX3VuaXF1ZV9pbmRleF9mb3Iocm9vdCwgcmVsLCBjbGF1c2VfbGlzdCwgTklMLCBO SUwpKQorCQlpZiAocmVsYXRpb25faGFzX3VuaXF1ZV9pbmRleF9leHQocm9vdCwgcmVsLCBj bGF1c2VfbGlzdCwgTklMLCBOSUwsCisJCQkJCQkJCQkJICBleHRyYV9jbGF1c2VzKSkKIAkJ CXJldHVybiB0cnVlOwogCX0KIAllbHNlIGlmIChyZWwtPnJ0ZWtpbmQgPT0gUlRFX1NVQlFV RVJZKQpAQCAtMTE3Niw5ICsxMjU5LDM1IEBAIGlubmVycmVsX2lzX3VuaXF1ZShQbGFubmVy SW5mbyAqcm9vdCwKIAkJCQkgICBKb2luVHlwZSBqb2ludHlwZSwKIAkJCQkgICBMaXN0ICpy ZXN0cmljdGxpc3QsCiAJCQkJICAgYm9vbCBmb3JjZV9jYWNoZSkKK3sKKwlyZXR1cm4gaW5u ZXJyZWxfaXNfdW5pcXVlX2V4dChyb290LCBqb2lucmVsaWRzLCBvdXRlcnJlbGlkcywgaW5u ZXJyZWwsCisJCQkJCQkJCSAgam9pbnR5cGUsIHJlc3RyaWN0bGlzdCwgZm9yY2VfY2FjaGUs IE5VTEwpOworfQorCisvKgorICogaW5uZXJyZWxfaXNfdW5pcXVlX2V4dAorICoJICBEbyB0 aGUgc2FtZSBhcyBpbm5lcnJlbF9pc191bmlxdWUoKSwgYnV0IGFsc28gc2V0IHRvICgqZXh0 cmFfY2xhdXNlcykKKyAqCSAgYWRkaXRpb25hbCBjbGF1c2VzIGZyb20gYSBiYXNlcmVzdHJp Y3RpbmZvIGxpc3QgdXNlZCB0byBwcm92ZSB0aGUKKyAqCSAgdW5pcXVlbmVzcy4KKyAqCisg KiBBIG5vbi1OVUxMIGV4dHJhX2NsYXVzZXMgaW5kaWNhdGVzIHRoYXQgd2UncmUgY2hlY2tp bmcgZm9yIHNlbGYtam9pbiBhbmQKKyAqIGNvcnJlc3BvbmRpbmdseSBkZWFsaW5nIHdpdGgg ZmlsdGVyZWQgY2xhdXNlcy4KKyAqLworYm9vbAoraW5uZXJyZWxfaXNfdW5pcXVlX2V4dChQ bGFubmVySW5mbyAqcm9vdCwKKwkJCQkJICAgUmVsaWRzIGpvaW5yZWxpZHMsCisJCQkJCSAg IFJlbGlkcyBvdXRlcnJlbGlkcywKKwkJCQkJICAgUmVsT3B0SW5mbyAqaW5uZXJyZWwsCisJ CQkJCSAgIEpvaW5UeXBlIGpvaW50eXBlLAorCQkJCQkgICBMaXN0ICpyZXN0cmljdGxpc3Qs CisJCQkJCSAgIGJvb2wgZm9yY2VfY2FjaGUsCisJCQkJCSAgIExpc3QgKipleHRyYV9jbGF1 c2VzKQogewogCU1lbW9yeUNvbnRleHQgb2xkX2NvbnRleHQ7CiAJTGlzdENlbGwgICAqbGM7 CisJVW5pcXVlUmVsSW5mbyAqdW5pcXVlUmVsSW5mbzsKKwlMaXN0CSAgICpvdXRlcl9leHBy cyA9IE5JTDsKKwlib29sCQlzZWxmX2pvaW4gPSAoZXh0cmFfY2xhdXNlcyAhPSBOVUxMKTsK IAogCS8qIENlcnRhaW5seSBjYW4ndCBwcm92ZSB1bmlxdWVuZXNzIHdoZW4gdGhlcmUgYXJl IG5vIGpvaW5jbGF1c2VzICovCiAJaWYgKHJlc3RyaWN0bGlzdCA9PSBOSUwpCkBAIC0xMTkz LDE3ICsxMzAyLDI4IEBAIGlubmVycmVsX2lzX3VuaXF1ZShQbGFubmVySW5mbyAqcm9vdCwK IAogCS8qCiAJICogUXVlcnkgdGhlIGNhY2hlIHRvIHNlZSBpZiB3ZSd2ZSBtYW5hZ2VkIHRv IHByb3ZlIHRoYXQgaW5uZXJyZWwgaXMKLQkgKiB1bmlxdWUgZm9yIGFueSBzdWJzZXQgb2Yg dGhpcyBvdXRlcnJlbC4gIFdlIGRvbid0IG5lZWQgYW4gZXhhY3QgbWF0Y2gsCi0JICogYXMg ZXh0cmEgb3V0ZXJyZWxzIGNhbid0IG1ha2UgdGhlIGlubmVycmVsIGFueSBsZXNzIHVuaXF1 ZSAob3IgbW9yZQotCSAqIGZvcm1hbGx5LCB0aGUgcmVzdHJpY3RsaXN0IGZvciBhIGpvaW4g dG8gYSBzdXBlcnNldCBvdXRlcnJlbCBtdXN0IGJlIGEKLQkgKiBzdXBlcnNldCBvZiB0aGUg Y29uZGl0aW9ucyB3ZSBzdWNjZXNzZnVsbHkgdXNlZCBiZWZvcmUpLgorCSAqIHVuaXF1ZSBm b3IgYW55IHN1YnNldCBvZiB0aGlzIG91dGVycmVsLiAgRm9yIG5vbi1zZWxmLWpvaW4gc2Vh cmNoLCB3ZQorCSAqIGRvbid0IG5lZWQgYW4gZXhhY3QgbWF0Y2gsIGFzIGV4dHJhIG91dGVy cmVscyBjYW4ndCBtYWtlIHRoZSBpbm5lcnJlbAorCSAqIGFueSBsZXNzIHVuaXF1ZSAob3Ig bW9yZSBmb3JtYWxseSwgdGhlIHJlc3RyaWN0bGlzdCBmb3IgYSBqb2luIHRvIGEKKwkgKiBz dXBlcnNldCBvdXRlcnJlbCBtdXN0IGJlIGEgc3VwZXJzZXQgb2YgdGhlIGNvbmRpdGlvbnMg d2Ugc3VjY2Vzc2Z1bGx5CisJICogdXNlZCBiZWZvcmUpLiBGb3Igc2VsZi1qb2luIHNlYXJj aCwgd2UgcmVxdWlyZSBhbiBleGFjdCBtYXRjaCBvZgorCSAqIG91dGVycmVscyBiZWNhdXNl IHdlIG5lZWQgZXh0cmEgY2xhdXNlcyB0byBiZSB2YWxpZCBmb3Igb3VyIGNhc2UuIEFsc28s CisJICogZm9yIHNlbGYtam9pbiBjaGVja2luZyB3ZSd2ZSBmaWx0ZXJlZCB0aGUgY2xhdXNl cyBsaXN0LiAgVGh1cywgd2UgY2FuCisJICogbWF0Y2ggb25seSB0aGUgcmVzdWx0IGNhY2hl ZCBmb3IgYSBzZWxmLWpvaW4gc2VhcmNoIGZvciBhbm90aGVyCisJICogc2VsZi1qb2luIGNo ZWNrLgogCSAqLwogCWZvcmVhY2gobGMsIGlubmVycmVsLT51bmlxdWVfZm9yX3JlbHMpCiAJ ewotCQlSZWxpZHMJCXVuaXF1ZV9mb3JfcmVscyA9IChSZWxpZHMpIGxmaXJzdChsYyk7CisJ CXVuaXF1ZVJlbEluZm8gPSAoVW5pcXVlUmVsSW5mbyAqKSBsZmlyc3QobGMpOwogCi0JCWlm IChibXNfaXNfc3Vic2V0KHVuaXF1ZV9mb3JfcmVscywgb3V0ZXJyZWxpZHMpKQorCQlpZiAo KCFzZWxmX2pvaW4gJiYgYm1zX2lzX3N1YnNldCh1bmlxdWVSZWxJbmZvLT5vdXRlcnJlbGlk cywgb3V0ZXJyZWxpZHMpKSB8fAorCQkJKHNlbGZfam9pbiAmJiBibXNfZXF1YWwodW5pcXVl UmVsSW5mby0+b3V0ZXJyZWxpZHMsIG91dGVycmVsaWRzKSAmJgorCQkJIHVuaXF1ZVJlbElu Zm8tPnNlbGZfam9pbikpCisJCXsKKwkJCWlmIChleHRyYV9jbGF1c2VzKQorCQkJCSpleHRy YV9jbGF1c2VzID0gdW5pcXVlUmVsSW5mby0+ZXh0cmFfY2xhdXNlczsKIAkJCXJldHVybiB0 cnVlOwkJLyogU3VjY2VzcyEgKi8KKwkJfQogCX0KIAogCS8qCkBAIC0xMjIwLDcgKzEzNDAs OCBAQCBpbm5lcnJlbF9pc191bmlxdWUoUGxhbm5lckluZm8gKnJvb3QsCiAKIAkvKiBObyBj YWNoZWQgaW5mb3JtYXRpb24sIHNvIHRyeSB0byBtYWtlIHRoZSBwcm9vZi4gKi8KIAlpZiAo aXNfaW5uZXJyZWxfdW5pcXVlX2Zvcihyb290LCBqb2lucmVsaWRzLCBvdXRlcnJlbGlkcywg aW5uZXJyZWwsCi0JCQkJCQkJICAgam9pbnR5cGUsIHJlc3RyaWN0bGlzdCkpCisJCQkJCQkJ ICAgam9pbnR5cGUsIHJlc3RyaWN0bGlzdCwKKwkJCQkJCQkgICBzZWxmX2pvaW4gPyAmb3V0 ZXJfZXhwcnMgOiBOVUxMKSkKIAl7CiAJCS8qCiAJCSAqIENhY2hlIHRoZSBwb3NpdGl2ZSBy ZXN1bHQgZm9yIGZ1dHVyZSBwcm9iZXMsIGJlaW5nIHN1cmUgdG8ga2VlcCBpdApAQCAtMTIz MywxMCArMTM1NCwxNiBAQCBpbm5lcnJlbF9pc191bmlxdWUoUGxhbm5lckluZm8gKnJvb3Qs CiAJCSAqIHN1cGVyc2V0cyBvZiB0aGVtIGFueXdheS4KIAkJICovCiAJCW9sZF9jb250ZXh0 ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHJvb3QtPnBsYW5uZXJfY3h0KTsKKwkJdW5pcXVl UmVsSW5mbyA9IG1ha2VOb2RlKFVuaXF1ZVJlbEluZm8pOworCQl1bmlxdWVSZWxJbmZvLT5v dXRlcnJlbGlkcyA9IGJtc19jb3B5KG91dGVycmVsaWRzKTsKKwkJdW5pcXVlUmVsSW5mby0+ c2VsZl9qb2luID0gc2VsZl9qb2luOworCQl1bmlxdWVSZWxJbmZvLT5leHRyYV9jbGF1c2Vz ID0gb3V0ZXJfZXhwcnM7CiAJCWlubmVycmVsLT51bmlxdWVfZm9yX3JlbHMgPSBsYXBwZW5k KGlubmVycmVsLT51bmlxdWVfZm9yX3JlbHMsCi0JCQkJCQkJCQkJCWJtc19jb3B5KG91dGVy cmVsaWRzKSk7CisJCQkJCQkJCQkJCXVuaXF1ZVJlbEluZm8pOwogCQlNZW1vcnlDb250ZXh0 U3dpdGNoVG8ob2xkX2NvbnRleHQpOwogCisJCWlmIChleHRyYV9jbGF1c2VzKQorCQkJKmV4 dHJhX2NsYXVzZXMgPSBvdXRlcl9leHByczsKIAkJcmV0dXJuIHRydWU7CQkJLyogU3VjY2Vz cyEgKi8KIAl9CiAJZWxzZQpAQCAtMTI4Miw3ICsxNDA5LDggQEAgaXNfaW5uZXJyZWxfdW5p cXVlX2ZvcihQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJICAgUmVsaWRzIG91dGVycmVsaWRz LAogCQkJCQkgICBSZWxPcHRJbmZvICppbm5lcnJlbCwKIAkJCQkJICAgSm9pblR5cGUgam9p bnR5cGUsCi0JCQkJCSAgIExpc3QgKnJlc3RyaWN0bGlzdCkKKwkJCQkJICAgTGlzdCAqcmVz dHJpY3RsaXN0LAorCQkJCQkgICBMaXN0ICoqZXh0cmFfY2xhdXNlcykKIHsKIAlMaXN0CSAg ICpjbGF1c2VfbGlzdCA9IE5JTDsKIAlMaXN0Q2VsbCAgICpsYzsKQEAgLTEzMTIsMTcgKzE0 NDAsODk1IEBAIGlzX2lubmVycmVsX3VuaXF1ZV9mb3IoUGxhbm5lckluZm8gKnJvb3QsCiAJ CQljb250aW51ZTsJCQkvKiBub3QgbWVyZ2Vqb2luYWJsZSAqLwogCiAJCS8qCi0JCSAqIENo ZWNrIGlmIGNsYXVzZSBoYXMgdGhlIGZvcm0gIm91dGVyIG9wIGlubmVyIiBvciAiaW5uZXIg b3Agb3V0ZXIiLAotCQkgKiBhbmQgaWYgc28gbWFyayB3aGljaCBzaWRlIGlzIGlubmVyLgor CQkgKiBDaGVjayBpZiB0aGUgY2xhdXNlIGhhcyB0aGUgZm9ybSAib3V0ZXIgb3AgaW5uZXIi IG9yICJpbm5lciBvcAorCQkgKiBvdXRlciIsIGFuZCBpZiBzbyBtYXJrIHdoaWNoIHNpZGUg aXMgaW5uZXIuCiAJCSAqLwogCQlpZiAoIWNsYXVzZV9zaWRlc19tYXRjaF9qb2luKHJlc3Ry aWN0aW5mbywgb3V0ZXJyZWxpZHMsCiAJCQkJCQkJCQkgaW5uZXJyZWwtPnJlbGlkcykpCiAJ CQljb250aW51ZTsJCQkvKiBubyBnb29kIGZvciB0aGVzZSBpbnB1dCByZWxhdGlvbnMgKi8K IAotCQkvKiBPSywgYWRkIHRvIGxpc3QgKi8KKwkJLyogT0ssIGFkZCB0byB0aGUgbGlzdCAq LwogCQljbGF1c2VfbGlzdCA9IGxhcHBlbmQoY2xhdXNlX2xpc3QsIHJlc3RyaWN0aW5mbyk7 CiAJfQogCiAJLyogTGV0IHJlbF9pc19kaXN0aW5jdF9mb3IoKSBkbyB0aGUgaGFyZCB3b3Jr ICovCi0JcmV0dXJuIHJlbF9pc19kaXN0aW5jdF9mb3Iocm9vdCwgaW5uZXJyZWwsIGNsYXVz ZV9saXN0KTsKKwlyZXR1cm4gcmVsX2lzX2Rpc3RpbmN0X2Zvcihyb290LCBpbm5lcnJlbCwg Y2xhdXNlX2xpc3QsIGV4dHJhX2NsYXVzZXMpOworfQorCisvKgorICogVXBkYXRlIEVDIG1l bWJlcnMgdG8gcG9pbnQgdG8gdGhlIHJlbWFpbmluZyByZWxhdGlvbiBpbnN0ZWFkIG9mIHRo ZSByZW1vdmVkCisgKiBvbmUsIHJlbW92aW5nIGR1cGxpY2F0ZXMuCisgKgorICogUmVzdHJp Y3Rpb24gY2xhdXNlcyBmb3IgYmFzZSByZWxhdGlvbnMgYXJlIGFscmVhZHkgZGlzdHJpYnV0 ZWQgdG8KKyAqIHRoZSByZXNwZWN0aXZlIGJhc2VyZXN0cmljdGluZm8gbGlzdHMgKHNlZQor ICogZ2VuZXJhdGVfaW1wbGllZF9lcXVhbGl0aWVzX2Zvcl9jb2x1bW4pLiBUaGUgYWJvdmUg Y29kZSBoYXMgYWxyZWFkeSBwcm9jZXNzZWQKKyAqIHRoaXMgbGlzdCBhbmQgdXBkYXRlZCB0 aGVzZSBjbGF1c2VzIHRvIHJlZmVyZW5jZSB0aGUgcmVtYWluaW5nCisgKiByZWxhdGlvbiwg c28gdGhhdCB3ZSBjYW4gc2tpcCB0aGVtIGhlcmUgYmFzZWQgb24gdGhlaXIgcmVsaWRzLgor ICoKKyAqIExpa2V3aXNlLCB3ZSBoYXZlIGFscmVhZHkgcHJvY2Vzc2VkIHRoZSBqb2luIGNs YXVzZXMgdGhhdCBqb2luIHRoZQorICogcmVtb3ZlZCByZWxhdGlvbiB0byB0aGUgcmVtYWlu aW5nIG9uZS4KKyAqCisgKiBGaW5hbGx5LCB0aGVyZSBtaWdodCBiZSBqb2luIGNsYXVzZXMg dHlpbmcgdGhlIHJlbW92ZWQgcmVsYXRpb24gdG8KKyAqIHNvbWUgdGhpcmQgcmVsYXRpb24u ICBXZSBjYW4ndCBqdXN0IGRlbGV0ZSB0aGUgc291cmNlIGNsYXVzZXMgYW5kCisgKiByZWdl bmVyYXRlIHRoZW0gZnJvbSB0aGUgRUMgYmVjYXVzZSB0aGUgY29ycmVzcG9uZGluZyBlcXVh bGl0eQorICogb3BlcmF0b3JzIG1pZ2h0IGJlIG1pc3NpbmcgKHNlZSB0aGUgaGFuZGxpbmcg b2YgZWNfYnJva2VuKS4KKyAqIFRoZXJlZm9yZSwgd2Ugd2lsbCB1cGRhdGUgdGhlIHJlZmVy ZW5jZXMgaW4gdGhlIHNvdXJjZSBjbGF1c2VzLgorICoKKyAqIERlcml2ZWQgY2xhdXNlcyBj YW4gYmUgZ2VuZXJhdGVkIGFnYWluLCBzbyBpdCBpcyBzaW1wbGVyIGp1c3QgdG8KKyAqIGRl bGV0ZSB0aGVtLgorICovCitzdGF0aWMgdm9pZAordXBkYXRlX2VjbGFzc2VzKEVxdWl2YWxl bmNlQ2xhc3MgKmVjLCBpbnQgZnJvbSwgaW50IHRvKQoreworCUxpc3QJICAgKm5ld19tZW1i ZXJzID0gTklMOworCUxpc3QJICAgKm5ld19zb3VyY2VzID0gTklMOworCisJZm9yZWFjaF9u b2RlKEVxdWl2YWxlbmNlTWVtYmVyLCBlbSwgZWMtPmVjX21lbWJlcnMpCisJeworCQlib29s CQlpc19yZWR1bmRhbnQgPSBmYWxzZTsKKworCQlpZiAoIWJtc19pc19tZW1iZXIoZnJvbSwg ZW0tPmVtX3JlbGlkcykpCisJCXsKKwkJCW5ld19tZW1iZXJzID0gbGFwcGVuZChuZXdfbWVt YmVycywgZW0pOworCQkJY29udGludWU7CisJCX0KKworCQllbS0+ZW1fcmVsaWRzID0gYWRq dXN0X3JlbGlkX3NldChlbS0+ZW1fcmVsaWRzLCBmcm9tLCB0byk7CisJCWVtLT5lbV9qZG9t YWluLT5qZF9yZWxpZHMgPSBhZGp1c3RfcmVsaWRfc2V0KGVtLT5lbV9qZG9tYWluLT5qZF9y ZWxpZHMsIGZyb20sIHRvKTsKKworCQkvKiBXZSBvbmx5IHByb2Nlc3MgaW5uZXIgam9pbnMg Ki8KKwkJQ2hhbmdlVmFyTm9kZXMoKE5vZGUgKikgZW0tPmVtX2V4cHIsIGZyb20sIHRvLCAw KTsKKworCQlmb3JlYWNoX25vZGUoRXF1aXZhbGVuY2VNZW1iZXIsIG90aGVyLCBuZXdfbWVt YmVycykKKwkJeworCQkJaWYgKCFlcXVhbChlbS0+ZW1fcmVsaWRzLCBvdGhlci0+ZW1fcmVs aWRzKSkKKwkJCQljb250aW51ZTsKKworCQkJaWYgKGVxdWFsKGVtLT5lbV9leHByLCBvdGhl ci0+ZW1fZXhwcikpCisJCQl7CisJCQkJaXNfcmVkdW5kYW50ID0gdHJ1ZTsKKwkJCQlicmVh azsKKwkJCX0KKwkJfQorCisJCWlmICghaXNfcmVkdW5kYW50KQorCQkJbmV3X21lbWJlcnMg PSBsYXBwZW5kKG5ld19tZW1iZXJzLCBlbSk7CisJfQorCisJbGlzdF9mcmVlKGVjLT5lY19t ZW1iZXJzKTsKKwllYy0+ZWNfbWVtYmVycyA9IG5ld19tZW1iZXJzOworCisJbGlzdF9mcmVl KGVjLT5lY19kZXJpdmVzKTsKKwllYy0+ZWNfZGVyaXZlcyA9IE5VTEw7CisKKwkvKiBVcGRh dGUgRUMgc291cmNlIGV4cHJlc3Npb25zICovCisJZm9yZWFjaF9ub2RlKFJlc3RyaWN0SW5m bywgcmluZm8sIGVjLT5lY19zb3VyY2VzKQorCXsKKwkJYm9vbAkJaXNfcmVkdW5kYW50ID0g ZmFsc2U7CisKKwkJaWYgKCFibXNfaXNfbWVtYmVyKGZyb20sIHJpbmZvLT5yZXF1aXJlZF9y ZWxpZHMpKQorCQl7CisJCQluZXdfc291cmNlcyA9IGxhcHBlbmQobmV3X3NvdXJjZXMsIHJp bmZvKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJQ2hhbmdlVmFyTm9kZXMoKE5vZGUgKikg cmluZm8sIGZyb20sIHRvLCAwKTsKKworCQkvKgorCQkgKiBBZnRlciBzd2l0Y2hpbmcgdGhl IGNsYXVzZSB0byB0aGUgcmVtYWluaW5nIHJlbGF0aW9uLCBjaGVjayBpdCBmb3IKKwkJICog cmVkdW5kYW5jeSB3aXRoIGV4aXN0aW5nIG9uZXMuIFdlIGRvbid0IGhhdmUgdG8gY2hlY2sg Zm9yCisJCSAqIHJlZHVuZGFuY3kgd2l0aCBkZXJpdmVkIGNsYXVzZXMsIGJlY2F1c2Ugd2Un dmUganVzdCBkZWxldGVkIHRoZW0uCisJCSAqLworCQlmb3JlYWNoX25vZGUoUmVzdHJpY3RJ bmZvLCBvdGhlciwgbmV3X3NvdXJjZXMpCisJCXsKKwkJCWlmICghZXF1YWwocmluZm8tPmNs YXVzZV9yZWxpZHMsIG90aGVyLT5jbGF1c2VfcmVsaWRzKSkKKwkJCQljb250aW51ZTsKKwor CQkJaWYgKGVxdWFsKHJpbmZvLT5jbGF1c2UsIG90aGVyLT5jbGF1c2UpKQorCQkJeworCQkJ CWlzX3JlZHVuZGFudCA9IHRydWU7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKworCQlpZiAo IWlzX3JlZHVuZGFudCkKKwkJCW5ld19zb3VyY2VzID0gbGFwcGVuZChuZXdfc291cmNlcywg cmluZm8pOworCX0KKworCWxpc3RfZnJlZShlYy0+ZWNfc291cmNlcyk7CisJZWMtPmVjX3Nv dXJjZXMgPSBuZXdfc291cmNlczsKKwllYy0+ZWNfcmVsaWRzID0gYWRqdXN0X3JlbGlkX3Nl dChlYy0+ZWNfcmVsaWRzLCBmcm9tLCB0byk7Cit9CisKKy8qCisgKiAiTG9naWNhbGx5IiBj b21wYXJlcyB0d28gUmVzdHJpY3RJbmZvJ3MgaWdub3JpbmcgdGhlICdyaW5mb19zZXJpYWwn IGZpZWxkLAorICogd2hpY2ggbWFrZXMgYWxtb3N0IGV2ZXJ5IFJlc3RyaWN0SW5mbyB1bmlx dWUuICBUaGlzIHR5cGUgb2YgY29tcGFyaXNvbiBpcworICogdXNlZnVsIHdoZW4gcmVtb3Zp bmcgZHVwbGljYXRlcyB3aGlsZSBtb3ZpbmcgUmVzdHJpY3RJbmZvJ3MgZnJvbSByZW1vdmVk CisgKiByZWxhdGlvbiB0byByZW1haW5pbmcgcmVsYXRpb24gZHVyaW5nIHNlbGYtam9pbiBl bGltaW5hdGlvbi4KKyAqCisgKiBYWFg6IEluIHRoZSBmdXR1cmUsIHdlIG1pZ2h0IHJlbW92 ZSB0aGUgJ3JpbmZvX3NlcmlhbCcgZmllbGQgY29tcGxldGVseSBhbmQKKyAqIGdldCByaWQg b2YgdGhpcyBmdW5jdGlvbi4KKyAqLworc3RhdGljIGJvb2wKK3Jlc3RyaWN0X2luZm9zX2xv Z2ljYWxseV9lcXVhbChSZXN0cmljdEluZm8gKmEsIFJlc3RyaWN0SW5mbyAqYikKK3sKKwlp bnQJCQlzYXZlZF9yaW5mb19zZXJpYWwgPSBhLT5yaW5mb19zZXJpYWw7CisJYm9vbAkJcmVz dWx0OworCisJYS0+cmluZm9fc2VyaWFsID0gYi0+cmluZm9fc2VyaWFsOworCXJlc3VsdCA9 IGVxdWFsKGEsIGIpOworCWEtPnJpbmZvX3NlcmlhbCA9IHNhdmVkX3JpbmZvX3NlcmlhbDsK KworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGFkZHMgYWxs IG5vbi1yZWR1bmRhbnQgY2xhdXNlcyB0byB0aGUga2VlcGluZyByZWxhdGlvbgorICogZHVy aW5nIHNlbGYtam9pbiBlbGltaW5hdGlvbi4gIFRoYXQgaXMgYSBjb250cmFkaWN0b3J5IG9w ZXJhdGlvbi4gT24gdGhlCisgKiBvbmUgaGFuZCwgd2UgcmVkdWNlIHRoZSBsZW5ndGggb2Yg dGhlIGByZXN0cmljdGAgbGlzdHMsIHdoaWNoIGNhbgorICogaW1wYWN0IHBsYW5uaW5nIG9y IGV4ZWN1dGluZyB0aW1lLiAgQWRkaXRpb25hbGx5LCB3ZSBpbXByb3ZlIHRoZQorICogYWNj dXJhY3kgb2YgY2FyZGluYWxpdHkgZXN0aW1hdGlvbi4gIE9uIHRoZSBvdGhlciBoYW5kLCBp dCBpcyBvbmUgbW9yZQorICogcGxhY2UgdGhhdCBjYW4gbWFrZSBwbGFubmluZyB0aW1lIG11 Y2ggbG9uZ2VyIGluIHNwZWNpZmljIGNhc2VzLiAgSXQKKyAqIHdvdWxkIGhhdmUgYmVlbiBi ZXR0ZXIgdG8gYXZvaWQgY2FsbGluZyB0aGUgZXF1YWwoKSBmdW5jdGlvbiBoZXJlLCBidXQK KyAqIGl0J3MgdGhlIG9ubHkgd2F5IHRvIGRldGVjdCBkdXBsaWNhdGVkIGluZXF1YWxpdHkg ZXhwcmVzc2lvbnMuCisgKgorICogKCprZWVwX3JpbmZvX2xpc3QpIGlzIGdpdmVuIGJ5IHBv aW50ZXIgYmVjYXVzZSBpdCBtaWdodCBiZSBhbHRlcmVkIGJ5CisgKiBkaXN0cmlidXRlX3Jl c3RyaWN0aW5mb190b19yZWxzKCkuCisgKi8KK3N0YXRpYyB2b2lkCithZGRfbm9uX3JlZHVu ZGFudF9jbGF1c2VzKFBsYW5uZXJJbmZvICpyb290LAorCQkJCQkJICBMaXN0ICpyaW5mb19j YW5kaWRhdGVzLAorCQkJCQkJICBMaXN0ICoqa2VlcF9yaW5mb19saXN0LAorCQkJCQkJICBJ bmRleCByZW1vdmVkX3JlbGlkKQoreworCWZvcmVhY2hfbm9kZShSZXN0cmljdEluZm8sIHJp bmZvLCByaW5mb19jYW5kaWRhdGVzKQorCXsKKwkJYm9vbAkJaXNfcmVkdW5kYW50ID0gZmFs c2U7CisKKwkJQXNzZXJ0KCFibXNfaXNfbWVtYmVyKHJlbW92ZWRfcmVsaWQsIHJpbmZvLT5y ZXF1aXJlZF9yZWxpZHMpKTsKKworCQlmb3JlYWNoX25vZGUoUmVzdHJpY3RJbmZvLCBzcmMs ICgqa2VlcF9yaW5mb19saXN0KSkKKwkJeworCQkJaWYgKCFibXNfZXF1YWwoc3JjLT5jbGF1 c2VfcmVsaWRzLCByaW5mby0+Y2xhdXNlX3JlbGlkcykpCisJCQkJLyogQ2FuJ3QgY29tcGFy ZSB0cml2aWFsbHkgZGlmZmVyZW50IGNsYXVzZXMgKi8KKwkJCQljb250aW51ZTsKKworCQkJ aWYgKHNyYyA9PSByaW5mbyB8fAorCQkJCShyaW5mby0+cGFyZW50X2VjICE9IE5VTEwgJiYK KwkJCQkgc3JjLT5wYXJlbnRfZWMgPT0gcmluZm8tPnBhcmVudF9lYykgfHwKKwkJCQlyZXN0 cmljdF9pbmZvc19sb2dpY2FsbHlfZXF1YWwocmluZm8sIHNyYykpCisJCQl7CisJCQkJaXNf cmVkdW5kYW50ID0gdHJ1ZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCQlpZiAoIWlzX3Jl ZHVuZGFudCkKKwkJCWRpc3RyaWJ1dGVfcmVzdHJpY3RpbmZvX3RvX3JlbHMocm9vdCwgcmlu Zm8pOworCX0KK30KKworLyoKKyAqIFJlbW92ZSBhIHJlbGF0aW9uIGFmdGVyIHdlIGhhdmUg cHJvdmVuIHRoYXQgaXQgcGFydGljaXBhdGVzIG9ubHkgaW4gYW4KKyAqIHVubmVlZGVkIHVu aXF1ZSBzZWxmLWpvaW4uCisgKgorICogUmVwbGFjZSBhbnkgbGlua3MgaW4gcGxhbm5lciBp bmZvIHN0cnVjdHVyZXMuCisgKgorICogVHJhbnNmZXIgam9pbiBhbmQgcmVzdHJpY3Rpb24g Y2xhdXNlcyBmcm9tIHRoZSByZW1vdmVkIHJlbGF0aW9uIHRvIHRoZQorICogcmVtYWluaW5n IG9uZS4gV2UgY2hhbmdlIHRoZSBWYXJzIG9mIHRoZSBjbGF1c2UgdG8gcG9pbnQgdG8gdGhl CisgKiByZW1haW5pbmcgcmVsYXRpb24gaW5zdGVhZCBvZiB0aGUgcmVtb3ZlZCBvbmUuIFRo ZSBjbGF1c2VzIHRoYXQgcmVxdWlyZQorICogYSBzdWJzZXQgb2Ygam9pbnJlbGlkcyBiZWNv bWUgcmVzdHJpY3Rpb24gY2xhdXNlcyBvZiB0aGUgcmVtYWluaW5nCisgKiByZWxhdGlvbiwg YW5kIG90aGVycyByZW1haW4gam9pbiBjbGF1c2VzLiBXZSBhcHBlbmQgdGhlbSB0bworICog YmFzZXJlc3RyaWN0aW5mbyBhbmQgam9pbmluZm8sIHJlc3BlY3RpdmVseSwgdHJ5aW5nIG5v dCB0byBpbnRyb2R1Y2UKKyAqIGR1cGxpY2F0ZXMuCisgKgorICogV2UgYWxzbyBoYXZlIHRv IHByb2Nlc3MgdGhlICdqb2luY2xhdXNlcycgbGlzdCBoZXJlLCBiZWNhdXNlIGl0CisgKiBj b250YWlucyBFQy1kZXJpdmVkIGpvaW4gY2xhdXNlcyB3aGljaCBtdXN0IGJlY29tZSBmaWx0 ZXIgY2xhdXNlcy4gSXQKKyAqIGlzIG5vdCBlbm91Z2ggdG8ganVzdCBjb3JyZWN0IHRoZSBF Q3MgYmVjYXVzZSB0aGUgRUMtZGVyaXZlZAorICogcmVzdHJpY3Rpb25zIGFyZSBnZW5lcmF0 ZWQgYmVmb3JlIGpvaW4gcmVtb3ZhbCAoc2VlCisgKiBnZW5lcmF0ZV9iYXNlX2ltcGxpZWRf ZXF1YWxpdGllcykuCisgKgorICogTk9URTogUmVtZW1iZXIgdG8ga2VlcCB0aGUgY29kZSBp biBzeW5jIHdpdGggUGxhbm5lckluZm8gdG8gYmUgc3VyZSBhbGwKKyAqIGNhY2hlZCByZWxp ZHMgYW5kIHJlbGlkIGJpdG1hcHNldHMgY2FuIGJlIGNvcnJlY3RseSBjbGVhbmVkIGR1cmlu ZyB0aGUKKyAqIHNlbGYtam9pbiBlbGltaW5hdGlvbiBwcm9jZWR1cmUuCisgKi8KK3N0YXRp YyB2b2lkCityZW1vdmVfc2VsZl9qb2luX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUGxhblJv d01hcmsgKmttYXJrLCBQbGFuUm93TWFyayAqcm1hcmssCisJCQkJCSBSZWxPcHRJbmZvICp0 b0tlZXAsIFJlbE9wdEluZm8gKnRvUmVtb3ZlLAorCQkJCQkgTGlzdCAqcmVzdHJpY3RsaXN0 KQoreworCUxpc3QJICAgKmpvaW5pbmZvczsKKwlMaXN0Q2VsbCAgICpsYzsKKwlpbnQJCQlp OworCUxpc3QJICAgKmppbmZvX2NhbmRpZGF0ZXMgPSBOSUw7CisJTGlzdAkgICAqYmluZm9f Y2FuZGlkYXRlcyA9IE5JTDsKKworCUFzc2VydCh0b0tlZXAtPnJlbGlkID4gMCk7CisJQXNz ZXJ0KHRvUmVtb3ZlLT5yZWxpZCA+IDApOworCisJLyoKKwkgKiBSZXBsYWNlIHRoZSBpbmRl eCBvZiB0aGUgcmVtb3ZpbmcgdGFibGUgd2l0aCB0aGUga2VlcGluZyBvbmUuIFRoZQorCSAq IHRlY2huaXF1ZSBvZiByZW1vdmluZy9kaXN0cmlidXRpbmcgcmVzdHJpY3RpbmZvIGlzIHVz ZWQgaGVyZSB0byBhdHRhY2gKKwkgKiBqdXN0IGFwcGVhcmVkIChmb3Iga2VlcGluZyByZWxh dGlvbikgam9pbiBjbGF1c2VzIGFuZCBhdm9pZCBhZGRpbmcKKwkgKiBkdXBsaWNhdGVzIG9m IHRob3NlIHRoYXQgYWxyZWFkeSBleGlzdCBpbiB0aGUgam9pbmluZm8gbGlzdC4KKwkgKi8K Kwlqb2luaW5mb3MgPSBsaXN0X2NvcHkodG9SZW1vdmUtPmpvaW5pbmZvKTsKKwlmb3JlYWNo X25vZGUoUmVzdHJpY3RJbmZvLCByaW5mbywgam9pbmluZm9zKQorCXsKKwkJcmVtb3ZlX2pv aW5fY2xhdXNlX2Zyb21fcmVscyhyb290LCByaW5mbywgcmluZm8tPnJlcXVpcmVkX3JlbGlk cyk7CisJCUNoYW5nZVZhck5vZGVzKChOb2RlICopIHJpbmZvLCB0b1JlbW92ZS0+cmVsaWQs IHRvS2VlcC0+cmVsaWQsIDApOworCisJCWlmIChibXNfbWVtYmVyc2hpcChyaW5mby0+cmVx dWlyZWRfcmVsaWRzKSA9PSBCTVNfTVVMVElQTEUpCisJCQlqaW5mb19jYW5kaWRhdGVzID0g bGFwcGVuZChqaW5mb19jYW5kaWRhdGVzLCByaW5mbyk7CisJCWVsc2UKKwkJCWJpbmZvX2Nh bmRpZGF0ZXMgPSBsYXBwZW5kKGJpbmZvX2NhbmRpZGF0ZXMsIHJpbmZvKTsKKwl9CisKKwkv KgorCSAqIENvbmNhdGVuYXRlIHJlc3RyaWN0bGlzdCB0byB0aGUgbGlzdCBvZiBiYXNlIHJl c3RyaWN0aW9ucyBvZiB0aGUKKwkgKiByZW1vdmluZyB0YWJsZSBqdXN0IHRvIHNpbXBsaWZ5 IHRoZSByZXBsYWNlbWVudCBwcm9jZWR1cmU6IGFsbCBvZiB0aGVtCisJICogd2VyZW4ndCBj b25uZWN0ZWQgdG8gYW55IGtlZXBpbmcgcmVsYXRpb25zIGFuZCBuZWVkIHRvIGJlIGFkZGVk IHRvIHNvbWUKKwkgKiByZWxzLgorCSAqLworCXRvUmVtb3ZlLT5iYXNlcmVzdHJpY3RpbmZv ID0gbGlzdF9jb25jYXQodG9SZW1vdmUtPmJhc2VyZXN0cmljdGluZm8sCisJCQkJCQkJCQkJ CSByZXN0cmljdGxpc3QpOworCWZvcmVhY2hfbm9kZShSZXN0cmljdEluZm8sIHJpbmZvLCB0 b1JlbW92ZS0+YmFzZXJlc3RyaWN0aW5mbykKKwl7CisJCUNoYW5nZVZhck5vZGVzKChOb2Rl ICopIHJpbmZvLCB0b1JlbW92ZS0+cmVsaWQsIHRvS2VlcC0+cmVsaWQsIDApOworCisJCWlm IChibXNfbWVtYmVyc2hpcChyaW5mby0+cmVxdWlyZWRfcmVsaWRzKSA9PSBCTVNfTVVMVElQ TEUpCisJCQlqaW5mb19jYW5kaWRhdGVzID0gbGFwcGVuZChqaW5mb19jYW5kaWRhdGVzLCBy aW5mbyk7CisJCWVsc2UKKwkJCWJpbmZvX2NhbmRpZGF0ZXMgPSBsYXBwZW5kKGJpbmZvX2Nh bmRpZGF0ZXMsIHJpbmZvKTsKKwl9CisKKwkvKgorCSAqIE5vdywgYWRkIGFsbCBub24tcmVk dW5kYW50IGNsYXVzZXMgdG8gdGhlIGtlZXBpbmcgcmVsYXRpb24uCisJICovCisJYWRkX25v bl9yZWR1bmRhbnRfY2xhdXNlcyhyb290LCBiaW5mb19jYW5kaWRhdGVzLAorCQkJCQkJCSAg JnRvS2VlcC0+YmFzZXJlc3RyaWN0aW5mbywgdG9SZW1vdmUtPnJlbGlkKTsKKwlhZGRfbm9u X3JlZHVuZGFudF9jbGF1c2VzKHJvb3QsIGppbmZvX2NhbmRpZGF0ZXMsCisJCQkJCQkJICAm dG9LZWVwLT5qb2luaW5mbywgdG9SZW1vdmUtPnJlbGlkKTsKKworCWxpc3RfZnJlZShiaW5m b19jYW5kaWRhdGVzKTsKKwlsaXN0X2ZyZWUoamluZm9fY2FuZGlkYXRlcyk7CisKKwkvKgor CSAqIEFycmFuZ2UgZXF1aXZhbGVuY2UgY2xhc3NlcywgbWVudGlvbmVkIHJlbW92aW5nIGEg dGFibGUsIHdpdGggdGhlCisJICoga2VlcGluZyBvbmU6IHZhcm5vIG9mIHJlbW92aW5nIHRh YmxlIHNob3VsZCBiZSByZXBsYWNlZCBpbiBtZW1iZXJzIGFuZAorCSAqIHNvdXJjZXMgbGlz dHMuIEFsc28sIHJlbW92ZSBkdXBsaWNhdGVkIGVsZW1lbnRzIGlmIHRoaXMgcmVwbGFjZW1l bnQKKwkgKiBwcm9jZWR1cmUgY3JlYXRlZCB0aGVtLgorCSAqLworCWkgPSAtMTsKKwl3aGls ZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIodG9SZW1vdmUtPmVjbGFzc19pbmRleGVzLCBpKSkg Pj0gMCkKKwl7CisJCUVxdWl2YWxlbmNlQ2xhc3MgKmVjID0gKEVxdWl2YWxlbmNlQ2xhc3Mg KikgbGlzdF9udGgocm9vdC0+ZXFfY2xhc3NlcywgaSk7CisKKwkJdXBkYXRlX2VjbGFzc2Vz KGVjLCB0b1JlbW92ZS0+cmVsaWQsIHRvS2VlcC0+cmVsaWQpOworCQl0b0tlZXAtPmVjbGFz c19pbmRleGVzID0gYm1zX2FkZF9tZW1iZXIodG9LZWVwLT5lY2xhc3NfaW5kZXhlcywgaSk7 CisJfQorCisJLyoKKwkgKiBUcmFuc2ZlciB0aGUgdGFyZ2V0bGlzdCBhbmQgYXR0cl9uZWVk ZWQgZmxhZ3MuCisJICovCisKKwlmb3JlYWNoKGxjLCB0b1JlbW92ZS0+cmVsdGFyZ2V0LT5l eHBycykKKwl7CisJCU5vZGUJICAgKm5vZGUgPSBsZmlyc3QobGMpOworCisJCUNoYW5nZVZh ck5vZGVzKG5vZGUsIHRvUmVtb3ZlLT5yZWxpZCwgdG9LZWVwLT5yZWxpZCwgMCk7CisJCWlm ICghbGlzdF9tZW1iZXIodG9LZWVwLT5yZWx0YXJnZXQtPmV4cHJzLCBub2RlKSkKKwkJCXRv S2VlcC0+cmVsdGFyZ2V0LT5leHBycyA9IGxhcHBlbmQodG9LZWVwLT5yZWx0YXJnZXQtPmV4 cHJzLCBub2RlKTsKKwl9CisKKwlmb3IgKGkgPSB0b0tlZXAtPm1pbl9hdHRyOyBpIDw9IHRv S2VlcC0+bWF4X2F0dHI7IGkrKykKKwl7CisJCWludAkJCWF0dG5vID0gaSAtIHRvS2VlcC0+ bWluX2F0dHI7CisKKwkJdG9SZW1vdmUtPmF0dHJfbmVlZGVkW2F0dG5vXSA9IGFkanVzdF9y ZWxpZF9zZXQodG9SZW1vdmUtPmF0dHJfbmVlZGVkW2F0dG5vXSwKKwkJCQkJCQkJCQkJCQkJ dG9SZW1vdmUtPnJlbGlkLCB0b0tlZXAtPnJlbGlkKTsKKwkJdG9LZWVwLT5hdHRyX25lZWRl ZFthdHRub10gPSBibXNfYWRkX21lbWJlcnModG9LZWVwLT5hdHRyX25lZWRlZFthdHRub10s CisJCQkJCQkJCQkJCQkJIHRvUmVtb3ZlLT5hdHRyX25lZWRlZFthdHRub10pOworCX0KKwor CS8qCisJICogSWYgdGhlIHJlbW92ZWQgcmVsYXRpb24gaGFzIGEgcm93IG1hcmssIHRyYW5z ZmVyIGl0IHRvIHRoZSByZW1haW5pbmcKKwkgKiBvbmUuCisJICoKKwkgKiBJZiBib3RoIHJl bHMgaGF2ZSByb3cgbWFya3MsIGp1c3Qga2VlcCB0aGUgb25lIGNvcnJlc3BvbmRpbmcgdG8g dGhlCisJICogcmVtYWluaW5nIHJlbGF0aW9uIGJlY2F1c2Ugd2UgdmVyaWZpZWQgZWFybGll ciB0aGF0IHRoZXkgaGF2ZSB0aGUgc2FtZQorCSAqIHN0cmVuZ3RoLgorCSAqLworCWlmIChy bWFyaykKKwl7CisJCWlmIChrbWFyaykKKwkJeworCQkJQXNzZXJ0KGttYXJrLT5tYXJrVHlw ZSA9PSBybWFyay0+bWFya1R5cGUpOworCisJCQlyb290LT5yb3dNYXJrcyA9IGxpc3RfZGVs ZXRlX3B0cihyb290LT5yb3dNYXJrcywgcm1hcmspOworCQl9CisJCWVsc2UKKwkJeworCQkJ LyogU2hvdWxkbid0IGhhdmUgaW5oZXJpdGFuY2UgY2hpbGRyZW4gaGVyZS4gKi8KKwkJCUFz c2VydChybWFyay0+cnRpID09IHJtYXJrLT5wcnRpKTsKKworCQkJcm1hcmstPnJ0aSA9IHJt YXJrLT5wcnRpID0gdG9LZWVwLT5yZWxpZDsKKwkJfQorCX0KKworCS8qCisJICogUmVwbGFj ZSB2YXJubyBpbiBhbGwgdGhlIHF1ZXJ5IHN0cnVjdHVyZXMsIGV4Y2VwdCBub2RlcyBSYW5n ZVRibFJlZgorCSAqIG90aGVyd2lzZSBsYXRlciByZW1vdmVfcmVsX2Zyb21fam9pbmxpc3Qg d2lsbCB5aWVsZCBlcnJvcnMuCisJICovCisJQ2hhbmdlVmFyTm9kZXNFeHRlbmRlZCgoTm9k ZSAqKSByb290LT5wYXJzZSwgdG9SZW1vdmUtPnJlbGlkLCB0b0tlZXAtPnJlbGlkLCAwLCBm YWxzZSk7CisKKwkvKiBSZXBsYWNlIGxpbmtzIGluIHRoZSBwbGFubmVyIGluZm8gKi8KKwly ZW1vdmVfcmVsX2Zyb21fcXVlcnkocm9vdCwgdG9SZW1vdmUsIHRvS2VlcC0+cmVsaWQsIE5V TEwsIE5VTEwpOworCisJLyogQXQgbGFzdCwgcmVwbGFjZSB2YXJubyBpbiByb290IHRhcmdl dGxpc3QgYW5kIEhBVklORyBjbGF1c2UgKi8KKwlDaGFuZ2VWYXJOb2RlcygoTm9kZSAqKSBy b290LT5wcm9jZXNzZWRfdGxpc3QsIHRvUmVtb3ZlLT5yZWxpZCwgdG9LZWVwLT5yZWxpZCwg MCk7CisJQ2hhbmdlVmFyTm9kZXMoKE5vZGUgKikgcm9vdC0+cHJvY2Vzc2VkX2dyb3VwQ2xh dXNlLCB0b1JlbW92ZS0+cmVsaWQsIHRvS2VlcC0+cmVsaWQsIDApOworCisJYWRqdXN0X3Jl bGlkX3NldChyb290LT5hbGxfcmVzdWx0X3JlbGlkcywgdG9SZW1vdmUtPnJlbGlkLCB0b0tl ZXAtPnJlbGlkKTsKKwlhZGp1c3RfcmVsaWRfc2V0KHJvb3QtPmxlYWZfcmVzdWx0X3JlbGlk cywgdG9SZW1vdmUtPnJlbGlkLCB0b0tlZXAtPnJlbGlkKTsKKworCS8qCisJICogVGhlcmUg bWF5IGJlIHJlZmVyZW5jZXMgdG8gdGhlIHJlbCBpbiByb290LT5ma2V5X2xpc3QsIGJ1dCBp ZiBzbywKKwkgKiBtYXRjaF9mb3JlaWduX2tleXNfdG9fcXVhbHMoKSB3aWxsIGdldCByaWQg b2YgdGhlbS4KKwkgKi8KKworCS8qCisJICogRmluYWxseSwgcmVtb3ZlIHRoZSByZWwgZnJv bSB0aGUgYmFzZXJlbCBhcnJheSB0byBwcmV2ZW50IGl0IGZyb20gYmVpbmcKKwkgKiByZWZl cmVuY2VkIGFnYWluLiAgKFdlIGNhbid0IGRvIHRoaXMgZWFybGllciBiZWNhdXNlCisJICog cmVtb3ZlX2pvaW5fY2xhdXNlX2Zyb21fcmVscyB3aWxsIHRvdWNoIGl0LikKKwkgKi8KKwly b290LT5zaW1wbGVfcmVsX2FycmF5W3RvUmVtb3ZlLT5yZWxpZF0gPSBOVUxMOworCisJLyog QW5kIG51a2UgdGhlIFJlbE9wdEluZm8sIGp1c3QgaW4gY2FzZSB0aGVyZSdzIGFub3RoZXIg YWNjZXNzIHBhdGguICovCisJcGZyZWUodG9SZW1vdmUpOworCisJLyoKKwkgKiBOb3cgcmVw ZWF0IGNvbnN0cnVjdGlvbiBvZiBhdHRyX25lZWRlZCBiaXRzIGNvbWluZyBmcm9tIGFsbCBv dGhlcgorCSAqIHNvdXJjZXMuCisJICovCisJcmVidWlsZF9wbGFjZWhvbGRlcl9hdHRyX25l ZWRlZChyb290KTsKKwlyZWJ1aWxkX2pvaW5jbGF1c2VfYXR0cl9uZWVkZWQocm9vdCk7CisJ cmVidWlsZF9lY2xhc3NfYXR0cl9uZWVkZWQocm9vdCk7CisJcmVidWlsZF9sYXRlcmFsX2F0 dHJfbmVlZGVkKHJvb3QpOworfQorCisvKgorICogc3BsaXRfc2VsZmpvaW5fcXVhbHMKKyAq CQlQcm9jZXNzZXMgJ2pvaW5xdWFscycgYnkgYnVpbGRpbmcgdHdvIGxpc3RzOiBvbmUgY29u dGFpbmluZyB0aGUgcXVhbHMKKyAqCQl3aGVyZSB0aGUgY29sdW1ucy9leHBycyBhcmUgb24g ZWl0aGVyIHNpZGUgb2YgdGhlIGpvaW4gbWF0Y2ggYW5kCisgKgkJYW5vdGhlciBvbmUgY29u dGFpbmluZyB0aGUgcmVtYWluaW5nIHF1YWxzLgorICoKKyAqICdqb2lucXVhbHMnIG11c3Qg b25seSBjb250YWluIHF1YWxzIGZvciBhIFJURV9SRUxBVElPTiBiZWluZyBqb2luZWQgdG8K KyAqIGl0c2VsZi4KKyAqLworc3RhdGljIHZvaWQKK3NwbGl0X3NlbGZqb2luX3F1YWxzKFBs YW5uZXJJbmZvICpyb290LCBMaXN0ICpqb2lucXVhbHMsIExpc3QgKipzZWxmam9pbnF1YWxz LAorCQkJCQkgTGlzdCAqKm90aGVyam9pbnF1YWxzLCBpbnQgZnJvbSwgaW50IHRvKQorewor CUxpc3QJICAgKnNqb2lucXVhbHMgPSBOSUw7CisJTGlzdAkgICAqb2pvaW5xdWFscyA9IE5J TDsKKworCWZvcmVhY2hfbm9kZShSZXN0cmljdEluZm8sIHJpbmZvLCBqb2lucXVhbHMpCisJ eworCQlPcEV4cHIJICAgKmV4cHI7CisJCU5vZGUJICAgKmxlZnRleHByOworCQlOb2RlCSAg ICpyaWdodGV4cHI7CisKKwkJLyogSW4gZ2VuZXJhbCwgY2xhdXNlIGxvb2tzIGxpa2UgRihh cmcxKSA9IEcoYXJnMikgKi8KKwkJaWYgKCFyaW5mby0+bWVyZ2VvcGZhbWlsaWVzIHx8CisJ CQlibXNfbnVtX21lbWJlcnMocmluZm8tPmNsYXVzZV9yZWxpZHMpICE9IDIgfHwKKwkJCWJt c19tZW1iZXJzaGlwKHJpbmZvLT5sZWZ0X3JlbGlkcykgIT0gQk1TX1NJTkdMRVRPTiB8fAor CQkJYm1zX21lbWJlcnNoaXAocmluZm8tPnJpZ2h0X3JlbGlkcykgIT0gQk1TX1NJTkdMRVRP TikKKwkJeworCQkJb2pvaW5xdWFscyA9IGxhcHBlbmQob2pvaW5xdWFscywgcmluZm8pOwor CQkJY29udGludWU7CisJCX0KKworCQlleHByID0gKE9wRXhwciAqKSByaW5mby0+Y2xhdXNl OworCisJCWlmICghSXNBKGV4cHIsIE9wRXhwcikgfHwgbGlzdF9sZW5ndGgoZXhwci0+YXJn cykgIT0gMikKKwkJeworCQkJb2pvaW5xdWFscyA9IGxhcHBlbmQob2pvaW5xdWFscywgcmlu Zm8pOworCQkJY29udGludWU7CisJCX0KKworCQlsZWZ0ZXhwciA9IGdldF9sZWZ0b3Aocmlu Zm8tPmNsYXVzZSk7CisJCXJpZ2h0ZXhwciA9IGNvcHlPYmplY3QoZ2V0X3JpZ2h0b3Aocmlu Zm8tPmNsYXVzZSkpOworCisJCWlmIChsZWZ0ZXhwciAmJiBJc0EobGVmdGV4cHIsIFJlbGFi ZWxUeXBlKSkKKwkJCWxlZnRleHByID0gKE5vZGUgKikgKChSZWxhYmVsVHlwZSAqKSBsZWZ0 ZXhwciktPmFyZzsKKwkJaWYgKHJpZ2h0ZXhwciAmJiBJc0EocmlnaHRleHByLCBSZWxhYmVs VHlwZSkpCisJCQlyaWdodGV4cHIgPSAoTm9kZSAqKSAoKFJlbGFiZWxUeXBlICopIHJpZ2h0 ZXhwciktPmFyZzsKKworCQkvKgorCQkgKiBRdWl0ZSBhbiBleHBlbnNpdmUgb3BlcmF0aW9u LCBuYXJyb3dpbmcgdGhlIHVzZSBjYXNlLiBGb3IgZXhhbXBsZSwKKwkJICogd2hlbiB3ZSBo YXZlIGNhc3Qgb2YgdGhlIHNhbWUgdmFyIHRvIGRpZmZlcmVudCAoYnV0IGNvbXBhdGlibGUp CisJCSAqIHR5cGVzLgorCQkgKi8KKwkJQ2hhbmdlVmFyTm9kZXMocmlnaHRleHByLCBibXNf c2luZ2xldG9uX21lbWJlcihyaW5mby0+cmlnaHRfcmVsaWRzKSwKKwkJCQkJICAgYm1zX3Np bmdsZXRvbl9tZW1iZXIocmluZm8tPmxlZnRfcmVsaWRzKSwgMCk7CisKKwkJaWYgKGVxdWFs KGxlZnRleHByLCByaWdodGV4cHIpKQorCQkJc2pvaW5xdWFscyA9IGxhcHBlbmQoc2pvaW5x dWFscywgcmluZm8pOworCQllbHNlCisJCQlvam9pbnF1YWxzID0gbGFwcGVuZChvam9pbnF1 YWxzLCByaW5mbyk7CisJfQorCisJKnNlbGZqb2lucXVhbHMgPSBzam9pbnF1YWxzOworCSpv dGhlcmpvaW5xdWFscyA9IG9qb2lucXVhbHM7Cit9CisKKy8qCisgKiBDaGVjayBmb3IgYSBj YXNlIHdoZW4gdW5pcXVlbmVzcyBpcyBhdCBsZWFzdCBwYXJ0bHkgZGVyaXZlZCBmcm9tIGEK KyAqIGJhc2VyZXN0cmljdGluZm8gY2xhdXNlLiBJbiB0aGlzIGNhc2UsIHdlIGhhdmUgYSBj aGFuY2UgdG8gcmV0dXJuIG9ubHkKKyAqIG9uZSByb3cgKGlmIHN1Y2ggY2xhdXNlcyBvbiBi b3RoIHNpZGVzIG9mIFNKIGFyZSBlcXVhbCkgb3Igbm90aGluZyAoaWYgdGhleQorICogYXJl IGRpZmZlcmVudCkuCisgKi8KK3N0YXRpYyBib29sCittYXRjaF91bmlxdWVfY2xhdXNlcyhQ bGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqb3V0ZXIsIExpc3QgKnVjbGF1c2VzLAor CQkJCQkgSW5kZXggcmVsaWQpCit7CisJZm9yZWFjaF9ub2RlKFJlc3RyaWN0SW5mbywgcmlu Zm8sIHVjbGF1c2VzKQorCXsKKwkJRXhwcgkgICAqY2xhdXNlOworCQlOb2RlCSAgICppY2xh dXNlOworCQlOb2RlCSAgICpjMTsKKwkJYm9vbAkJbWF0Y2hlZCA9IGZhbHNlOworCisJCUFz c2VydChvdXRlci0+cmVsaWQgPiAwICYmIHJlbGlkID4gMCk7CisKKwkJLyogT25seSBmaWx0 ZXJzIGxpa2UgZihSLngxLC4uLixSLnhOKSA9PSBleHByIHdlIHNob3VsZCBjb25zaWRlci4g Ki8KKwkJQXNzZXJ0KGJtc19pc19lbXB0eShyaW5mby0+bGVmdF9yZWxpZHMpIF4KKwkJCSAg IGJtc19pc19lbXB0eShyaW5mby0+cmlnaHRfcmVsaWRzKSk7CisKKwkJY2xhdXNlID0gKEV4 cHIgKikgY29weU9iamVjdChyaW5mby0+Y2xhdXNlKTsKKwkJQ2hhbmdlVmFyTm9kZXMoKE5v ZGUgKikgY2xhdXNlLCByZWxpZCwgb3V0ZXItPnJlbGlkLCAwKTsKKworCQlpY2xhdXNlID0g Ym1zX2lzX2VtcHR5KHJpbmZvLT5sZWZ0X3JlbGlkcykgPyBnZXRfcmlnaHRvcChjbGF1c2Up IDoKKwkJCWdldF9sZWZ0b3AoY2xhdXNlKTsKKwkJYzEgPSBibXNfaXNfZW1wdHkocmluZm8t PmxlZnRfcmVsaWRzKSA/IGdldF9sZWZ0b3AoY2xhdXNlKSA6CisJCQlnZXRfcmlnaHRvcChj bGF1c2UpOworCisJCS8qCisJCSAqIENvbXBhcmUgdGhlc2UgbGVmdCBhbmQgcmlnaHQgc2lk ZXMgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBzaWRlcyBvZgorCQkgKiB0aGUgb3V0ZXIncyBm aWx0ZXJzLiBJZiBubyBvbmUgaXMgZGV0ZWN0ZWQgLSByZXR1cm4gaW1tZWRpYXRlbHkuCisJ CSAqLworCQlmb3JlYWNoX25vZGUoUmVzdHJpY3RJbmZvLCBvcmluZm8sIG91dGVyLT5iYXNl cmVzdHJpY3RpbmZvKQorCQl7CisJCQlOb2RlCSAgICpvY2xhdXNlOworCQkJTm9kZQkgICAq YzI7CisKKwkJCWlmIChvcmluZm8tPm1lcmdlb3BmYW1pbGllcyA9PSBOSUwpCisJCQkJLyog RG9uJ3QgY29uc2lkZXIgY2xhdXNlcyB0aGF0IGFyZW4ndCBzaW1pbGFyIHRvICdGKFgpPUco WSknICovCisJCQkJY29udGludWU7CisKKwkJCUFzc2VydChpc19vcGNsYXVzZShvcmluZm8t PmNsYXVzZSkpOworCisJCQlvY2xhdXNlID0gYm1zX2lzX2VtcHR5KG9yaW5mby0+bGVmdF9y ZWxpZHMpID8KKwkJCQlnZXRfcmlnaHRvcChvcmluZm8tPmNsYXVzZSkgOiBnZXRfbGVmdG9w KG9yaW5mby0+Y2xhdXNlKTsKKwkJCWMyID0gKGJtc19pc19lbXB0eShvcmluZm8tPmxlZnRf cmVsaWRzKSA/CisJCQkJICBnZXRfbGVmdG9wKG9yaW5mby0+Y2xhdXNlKSA6IGdldF9yaWdo dG9wKG9yaW5mby0+Y2xhdXNlKSk7CisKKwkJCWlmIChlcXVhbChpY2xhdXNlLCBvY2xhdXNl KSAmJiBlcXVhbChjMSwgYzIpKQorCQkJeworCQkJCW1hdGNoZWQgPSB0cnVlOworCQkJCWJy ZWFrOworCQkJfQorCQl9CisKKwkJaWYgKCFtYXRjaGVkKQorCQkJcmV0dXJuIGZhbHNlOwor CX0KKworCXJldHVybiB0cnVlOworfQorCisvKgorICogRmluZCBhbmQgcmVtb3ZlIHVuaXF1 ZSBzZWxmLWpvaW5zIGluIGEgZ3JvdXAgb2YgYmFzZSByZWxhdGlvbnMgdGhhdCBoYXZlCisg KiB0aGUgc2FtZSBPaWQuCisgKgorICogUmV0dXJucyBhIHNldCBvZiByZWxpZHMgdGhhdCB3 ZXJlIHJlbW92ZWQuCisgKi8KK3N0YXRpYyBSZWxpZHMKK3JlbW92ZV9zZWxmX2pvaW5zX29u ZV9ncm91cChQbGFubmVySW5mbyAqcm9vdCwgUmVsaWRzIHJlbGlkcykKK3sKKwlSZWxpZHMJ CXJlc3VsdCA9IE5VTEw7CisJaW50CQkJazsJCQkJLyogSW5kZXggb2Yga2VwdCByZWxhdGlv biAqLworCWludAkJCXIgPSAtMTsJCQkvKiBJbmRleCBvZiByZW1vdmVkIHJlbGF0aW9uICov CisKKwl3aGlsZSAoKHIgPSBibXNfbmV4dF9tZW1iZXIocmVsaWRzLCByKSkgPiAwKQorCXsK KwkJUmVsT3B0SW5mbyAqaW5uZXIgPSByb290LT5zaW1wbGVfcmVsX2FycmF5W3JdOworCisJ CWsgPSByOworCisJCXdoaWxlICgoayA9IGJtc19uZXh0X21lbWJlcihyZWxpZHMsIGspKSA+ IDApCisJCXsKKwkJCVJlbGlkcwkJam9pbnJlbGlkcyA9IE5VTEw7CisJCQlSZWxPcHRJbmZv ICpvdXRlciA9IHJvb3QtPnNpbXBsZV9yZWxfYXJyYXlba107CisJCQlMaXN0CSAgICpyZXN0 cmljdGxpc3Q7CisJCQlMaXN0CSAgICpzZWxmam9pbnF1YWxzOworCQkJTGlzdAkgICAqb3Ro ZXJqb2lucXVhbHM7CisJCQlMaXN0Q2VsbCAgICpsYzsKKwkJCWJvb2wJCWppbmZvX2NoZWNr ID0gdHJ1ZTsKKwkJCVBsYW5Sb3dNYXJrICpvbWFyayA9IE5VTEw7CisJCQlQbGFuUm93TWFy ayAqaW1hcmsgPSBOVUxMOworCQkJTGlzdAkgICAqdWNsYXVzZXMgPSBOSUw7CisKKwkJCS8q IEEgc2FuaXR5IGNoZWNrOiB0aGUgcmVsYXRpb25zIGhhdmUgdGhlIHNhbWUgT2lkLiAqLwor CQkJQXNzZXJ0KHJvb3QtPnNpbXBsZV9ydGVfYXJyYXlba10tPnJlbGlkID09CisJCQkJICAg cm9vdC0+c2ltcGxlX3J0ZV9hcnJheVtyXS0+cmVsaWQpOworCisJCQkvKgorCQkJICogSXQg aXMgaW1wb3NzaWJsZSB0byBlbGltaW5hdGUgdGhlIGpvaW4gb2YgdHdvIHJlbGF0aW9ucyBp ZiB0aGV5CisJCQkgKiBiZWxvbmcgdG8gZGlmZmVyZW50IHJ1bGVzIG9mIG9yZGVyLiBPdGhl cndpc2UsIHRoZSBwbGFubmVyCisJCQkgKiBjYW4ndCBmaW5kIGFueSB2YXJpYW50cyBvZiB0 aGUgY29ycmVjdCBxdWVyeSBwbGFuLgorCQkJICovCisJCQlmb3JlYWNoKGxjLCByb290LT5q b2luX2luZm9fbGlzdCkKKwkJCXsKKwkJCQlTcGVjaWFsSm9pbkluZm8gKmluZm8gPSAoU3Bl Y2lhbEpvaW5JbmZvICopIGxmaXJzdChsYyk7CisKKwkJCQlpZiAoKGJtc19pc19tZW1iZXIo aywgaW5mby0+c3luX2xlZnRoYW5kKSBeCisJCQkJCSBibXNfaXNfbWVtYmVyKHIsIGluZm8t PnN5bl9sZWZ0aGFuZCkpIHx8CisJCQkJCShibXNfaXNfbWVtYmVyKGssIGluZm8tPnN5bl9y aWdodGhhbmQpIF4KKwkJCQkJIGJtc19pc19tZW1iZXIociwgaW5mby0+c3luX3JpZ2h0aGFu ZCkpKQorCQkJCXsKKwkJCQkJamluZm9fY2hlY2sgPSBmYWxzZTsKKwkJCQkJYnJlYWs7CisJ CQkJfQorCQkJfQorCQkJaWYgKCFqaW5mb19jaGVjaykKKwkJCQljb250aW51ZTsKKworCQkJ LyoKKwkJCSAqIENoZWNrIFJvdyBNYXJrcyBlcXVpdmFsZW5jZS4gV2UgY2FuJ3QgcmVtb3Zl IHRoZSBqb2luIGlmIHRoZQorCQkJICogcmVsYXRpb25zIGhhdmUgcm93IG1hcmtzIG9mIGRp ZmZlcmVudCBzdHJlbmd0aCAoZS5nLiwgb25lIGlzCisJCQkgKiBsb2NrZWQgRk9SIFVQREFU RSwgYW5kIGFub3RoZXIganVzdCBoYXMgUk9XX01BUktfUkVGRVJFTkNFIGZvcgorCQkJICog RXZhbFBsYW5RdWFsIHJlY2hlY2tpbmcpLgorCQkJICovCisJCQlmb3JlYWNoKGxjLCByb290 LT5yb3dNYXJrcykKKwkJCXsKKwkJCQlQbGFuUm93TWFyayAqcm93TWFyayA9IChQbGFuUm93 TWFyayAqKSBsZmlyc3QobGMpOworCisJCQkJaWYgKHJvd01hcmstPnJ0aSA9PSBrKQorCQkJ CXsKKwkJCQkJQXNzZXJ0KGltYXJrID09IE5VTEwpOworCQkJCQlpbWFyayA9IHJvd01hcms7 CisJCQkJfQorCQkJCWVsc2UgaWYgKHJvd01hcmstPnJ0aSA9PSByKQorCQkJCXsKKwkJCQkJ QXNzZXJ0KG9tYXJrID09IE5VTEwpOworCQkJCQlvbWFyayA9IHJvd01hcms7CisJCQkJfQor CisJCQkJaWYgKG9tYXJrICYmIGltYXJrKQorCQkJCQlicmVhazsKKwkJCX0KKwkJCWlmIChv bWFyayAmJiBpbWFyayAmJiBvbWFyay0+bWFya1R5cGUgIT0gaW1hcmstPm1hcmtUeXBlKQor CQkJCWNvbnRpbnVlOworCisJCQkvKgorCQkJICogV2Ugb25seSBkZWFsIHdpdGggYmFzZSBy ZWxzIGhlcmUsIHNvIHRoZWlyIHJlbGlkcyBiaXRzZXQKKwkJCSAqIGNvbnRhaW5zIG9ubHkg b25lIG1lbWJlciAtLSB0aGVpciByZWxpZC4KKwkJCSAqLworCQkJam9pbnJlbGlkcyA9IGJt c19hZGRfbWVtYmVyKGpvaW5yZWxpZHMsIHIpOworCQkJam9pbnJlbGlkcyA9IGJtc19hZGRf bWVtYmVyKGpvaW5yZWxpZHMsIGspOworCisJCQkvKgorCQkJICogUEhWcyBzaG91bGQgbm90 IGltcG9zZSBhbnkgY29uc3RyYWludHMgb24gcmVtb3Zpbmcgc2VsZi1qb2lucy4KKwkJCSAq LworCisJCQkvKgorCQkJICogQXQgdGhpcyBzdGFnZSwgam9pbmluZm8gbGlzdHMgb2YgaW5u ZXIgYW5kIG91dGVyIGNhbiBjb250YWluCisJCQkgKiBvbmx5IGNsYXVzZXMgcmVxdWlyZWQg Zm9yIGEgc3VwZXJpb3Igb3V0ZXIgam9pbiB0aGF0IGNhbid0CisJCQkgKiBpbmZsdWVuY2Ug dGhpcyBvcHRpbWl6YXRpb24uIFNvLCB3ZSBjYW4gYXZvaWQgdG8gY2FsbCB0aGUKKwkJCSAq IGJ1aWxkX2pvaW5yZWxfcmVzdHJpY3RsaXN0KCkgcm91dGluZS4KKwkJCSAqLworCQkJcmVz dHJpY3RsaXN0ID0gZ2VuZXJhdGVfam9pbl9pbXBsaWVkX2VxdWFsaXRpZXMocm9vdCwgam9p bnJlbGlkcywKKwkJCQkJCQkJCQkJCQkJCWlubmVyLT5yZWxpZHMsCisJCQkJCQkJCQkJCQkJ CQlvdXRlciwgTlVMTCk7CisJCQlpZiAocmVzdHJpY3RsaXN0ID09IE5JTCkKKwkJCQljb250 aW51ZTsKKworCQkJLyoKKwkJCSAqIFByb2Nlc3MgcmVzdHJpY3RsaXN0IHRvIHNlcGFyYXRl IHRoZSBzZWxmLWpvaW4gcXVhbHMgZnJvbSB0aGUKKwkJCSAqIG90aGVyIHF1YWxzLiBlLmcu LCAieCA9IHgiIGdvZXMgdG8gc2VsZmpvaW5xdWFscyBhbmQgImEgPSBiIiB0bworCQkJICog b3RoZXJqb2lucXVhbHMuCisJCQkgKi8KKwkJCXNwbGl0X3NlbGZqb2luX3F1YWxzKHJvb3Qs IHJlc3RyaWN0bGlzdCwgJnNlbGZqb2lucXVhbHMsCisJCQkJCQkJCSAmb3RoZXJqb2lucXVh bHMsIGlubmVyLT5yZWxpZCwgb3V0ZXItPnJlbGlkKTsKKworCQkJQXNzZXJ0KGxpc3RfbGVu Z3RoKHJlc3RyaWN0bGlzdCkgPT0KKwkJCQkgICAobGlzdF9sZW5ndGgoc2VsZmpvaW5xdWFs cykgKyBsaXN0X2xlbmd0aChvdGhlcmpvaW5xdWFscykpKTsKKworCQkJLyoKKwkJCSAqIFRv IGVuYWJsZSBTSkUgZm9yIHRoZSBvbmx5IGRlZ2VuZXJhdGUgY2FzZSB3aXRob3V0IGFueSBz ZWxmCisJCQkgKiBqb2luIGNsYXVzZXMgYXQgYWxsLCBhZGQgYmFzZXJlc3RyaWN0aW5mbyB0 byB0aGlzIGxpc3QuIFRoZQorCQkJICogZGVnZW5lcmF0ZSBjYXNlIHdvcmtzIG9ubHkgaWYg Ym90aCBzaWRlcyBoYXZlIHRoZSBzYW1lIGNsYXVzZS4KKwkJCSAqIFNvIGRvZXNuJ3QgbWF0 dGVyIHdoaWNoIHNpZGUgdG8gYWRkLgorCQkJICovCisJCQlzZWxmam9pbnF1YWxzID0gbGlz dF9jb25jYXQoc2VsZmpvaW5xdWFscywgb3V0ZXItPmJhc2VyZXN0cmljdGluZm8pOworCisJ CQkvKgorCQkJICogRGV0ZXJtaW5lIGlmIHRoZSBpbm5lciB0YWJsZSBjYW4gZHVwbGljYXRl IG91dGVyIHJvd3MuICBXZSBtdXN0CisJCQkgKiBieXBhc3MgdGhlIHVuaXF1ZSByZWwgY2Fj aGUgaGVyZSBzaW5jZSB3ZSdyZSBwb3NzaWJseSB1c2luZyBhCisJCQkgKiBzdWJzZXQgb2Yg am9pbiBxdWFscy4gV2UgY2FuIHVzZSAnZm9yY2VfY2FjaGUnID09IHRydWUgd2hlbiBhbGwK KwkJCSAqIGpvaW4gcXVhbHMgYXJlIHNlbGYtam9pbiBxdWFscy4gIE90aGVyd2lzZSwgd2Ug Y291bGQgZW5kIHVwCisJCQkgKiBwdXR0aW5nIGZhbHNlIG5lZ2F0aXZlcyBpbiB0aGUgY2Fj aGUuCisJCQkgKi8KKwkJCWlmICghaW5uZXJyZWxfaXNfdW5pcXVlX2V4dChyb290LCBqb2lu cmVsaWRzLCBpbm5lci0+cmVsaWRzLAorCQkJCQkJCQkJCW91dGVyLCBKT0lOX0lOTkVSLCBz ZWxmam9pbnF1YWxzLAorCQkJCQkJCQkJCWxpc3RfbGVuZ3RoKG90aGVyam9pbnF1YWxzKSA9 PSAwLAorCQkJCQkJCQkJCSZ1Y2xhdXNlcykpCisJCQkJY29udGludWU7CisKKwkJCS8qCisJ CQkgKiAndWNsYXVzZXMnIGlzIHRoZSBjb3B5IG9mIG91dGVyLT5iYXNlcmVzdHJpY3RpbmZv IHRoYXQgYXJlCisJCQkgKiBhc3NvY2lhdGVkIHdpdGggYW4gaW5kZXguICBXZSBwcm92ZWQg YnkgbWF0Y2hpbmcgc2VsZmpvaW5xdWFscworCQkJICogdG8gYSB1bmlxdWUgaW5kZXggdGhh dCB0aGUgb3V0ZXIgcmVsYXRpb24gaGFzIGF0IG1vc3Qgb25lCisJCQkgKiBtYXRjaGluZyBy b3cgZm9yIGVhY2ggaW5uZXIgcm93LiAgU29tZXRpbWVzIHRoYXQgaXMgbm90IGVub3VnaC4K KwkJCSAqIGUuZy4gIldIRVJFIHMxLmIgPSBzMi5iIEFORCBzMS5hID0gMSBBTkQgczIuYSA9 IDIiIHdoZW4gdGhlCisJCQkgKiB1bmlxdWUgaW5kZXggaXMgKGEsYikuICBIYXZpbmcgbm9u LWVtcHR5IHVjbGF1c2VzLCB3ZSBtdXN0CisJCQkgKiB2YWxpZGF0ZSB0aGF0IHRoZSBpbm5l ciBiYXNlcmVzdHJpY3RpbmZvIGNvbnRhaW5zIHRoZSBzYW1lCisJCQkgKiBleHByZXNzaW9u cywgb3Igd2Ugd29uJ3QgbWF0Y2ggdGhlIHNhbWUgcm93IG9uIGVhY2ggc2lkZSBvZiB0aGUK KwkJCSAqIGpvaW4uCisJCQkgKi8KKwkJCWlmICghbWF0Y2hfdW5pcXVlX2NsYXVzZXMocm9v dCwgaW5uZXIsIHVjbGF1c2VzLCBvdXRlci0+cmVsaWQpKQorCQkJCWNvbnRpbnVlOworCisJ CQkvKgorCQkJICogV2UgY2FuIHJlbW92ZSBlaXRoZXIgcmVsYXRpb24sIHNvIHJlbW92ZSB0 aGUgaW5uZXIgb25lIGluIG9yZGVyCisJCQkgKiB0byBzaW1wbGlmeSB0aGlzIGxvb3AuCisJ CQkgKi8KKwkJCXJlbW92ZV9zZWxmX2pvaW5fcmVsKHJvb3QsIG9tYXJrLCBpbWFyaywgb3V0 ZXIsIGlubmVyLCByZXN0cmljdGxpc3QpOworCisJCQlyZXN1bHQgPSBibXNfYWRkX21lbWJl cihyZXN1bHQsIHIpOworCisJCQkvKiBXZSBoYXZlIHJlbW92ZWQgdGhlIG91dGVyIHJlbGF0 aW9uLCB0cnkgdGhlIG5leHQgb25lLiAqLworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlyZXR1 cm4gcmVzdWx0OworfQorCisvKgorICogR2F0aGVyIGluZGV4ZXMgb2YgYmFzZSByZWxhdGlv bnMgZnJvbSB0aGUgam9pbmxpc3QgYW5kIHRyeSB0byBlbGltaW5hdGUgc2VsZgorICogam9p bnMuCisgKi8KK3N0YXRpYyBSZWxpZHMKK3JlbW92ZV9zZWxmX2pvaW5zX3JlY3Vyc2UoUGxh bm5lckluZm8gKnJvb3QsIExpc3QgKmpvaW5saXN0LCBSZWxpZHMgdG9SZW1vdmUpCit7CisJ TGlzdENlbGwgICAqamw7CisJUmVsaWRzCQlyZWxpZHMgPSBOVUxMOworCVNlbGZKb2luQ2Fu ZGlkYXRlICpjYW5kaWRhdGVzID0gTlVMTDsKKwlpbnQJCQlpOworCWludAkJCWo7CisJaW50 CQkJbnVtUmVsczsKKworCS8qIENvbGxlY3QgaW5kZXhlcyBvZiBiYXNlIHJlbGF0aW9ucyBv ZiB0aGUgam9pbiB0cmVlICovCisJZm9yZWFjaChqbCwgam9pbmxpc3QpCisJeworCQlOb2Rl CSAgICpqbG5vZGUgPSAoTm9kZSAqKSBsZmlyc3QoamwpOworCisJCWlmIChJc0Eoamxub2Rl LCBSYW5nZVRibFJlZikpCisJCXsKKwkJCWludAkJCXZhcm5vID0gKChSYW5nZVRibFJlZiAq KSBqbG5vZGUpLT5ydGluZGV4OworCQkJUmFuZ2VUYmxFbnRyeSAqcnRlID0gcm9vdC0+c2lt cGxlX3J0ZV9hcnJheVt2YXJub107CisKKwkJCS8qCisJCQkgKiBXZSBvbmx5IGNvbnNpZGVy IG9yZGluYXJ5IHJlbGF0aW9ucyBhcyBjYW5kaWRhdGVzIHRvIGJlCisJCQkgKiByZW1vdmVk LCBhbmQgdGhlc2UgcmVsYXRpb25zIHNob3VsZCBub3QgaGF2ZSBUQUJMRVNBTVBMRQorCQkJ ICogY2xhdXNlcyBzcGVjaWZpZWQuICBSZW1vdmluZyBhIHJlbGF0aW9uIHdpdGggVEFCTEVT QU1QTEUgY2xhdXNlCisJCQkgKiBjb3VsZCBwb3RlbnRpYWxseSBjaGFuZ2UgdGhlIHN5bnRh eCBvZiB0aGUgcXVlcnkuIEJlY2F1c2Ugb2YKKwkJCSAqIFVQREFURS9ERUxFVEUgRVBRIG1l Y2hhbmlzbSwgY3VycmVudGx5IFF1ZXJ5LT5yZXN1bHRSZWxhdGlvbiBvcgorCQkJICogUXVl cnktPm1lcmdlVGFyZ2V0UmVsYXRpb24gYXNzb2NpYXRlZCByZWwgY2Fubm90IGJlIGVsaW1p bmF0ZWQuCisJCQkgKi8KKwkJCWlmIChydGUtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OICYm CisJCQkJcnRlLT5yZWxraW5kID09IFJFTEtJTkRfUkVMQVRJT04gJiYKKwkJCQlydGUtPnRh Ymxlc2FtcGxlID09IE5VTEwgJiYKKwkJCQl2YXJubyAhPSByb290LT5wYXJzZS0+cmVzdWx0 UmVsYXRpb24gJiYKKwkJCQl2YXJubyAhPSByb290LT5wYXJzZS0+bWVyZ2VUYXJnZXRSZWxh dGlvbikKKwkJCXsKKwkJCQlBc3NlcnQoIWJtc19pc19tZW1iZXIodmFybm8sIHJlbGlkcykp OworCQkJCXJlbGlkcyA9IGJtc19hZGRfbWVtYmVyKHJlbGlkcywgdmFybm8pOworCQkJfQor CQl9CisJCWVsc2UgaWYgKElzQShqbG5vZGUsIExpc3QpKQorCQl7CisJCQkvKiBSZWN1cnNp dmVseSBnbyBpbnNpZGUgdGhlIHN1Yi1qb2lubGlzdCAqLworCQkJdG9SZW1vdmUgPSByZW1v dmVfc2VsZl9qb2luc19yZWN1cnNlKHJvb3QsIChMaXN0ICopIGpsbm9kZSwKKwkJCQkJCQkJ CQkJCSB0b1JlbW92ZSk7CisJCX0KKwkJZWxzZQorCQkJZWxvZyhFUlJPUiwgInVucmVjb2du aXplZCBqb2lubGlzdCBub2RlIHR5cGU6ICVkIiwKKwkJCQkgKGludCkgbm9kZVRhZyhqbG5v ZGUpKTsKKwl9CisKKwludW1SZWxzID0gYm1zX251bV9tZW1iZXJzKHJlbGlkcyk7CisKKwkv KiBOZWVkIGF0IGxlYXN0IHR3byByZWxhdGlvbnMgZm9yIHRoZSBqb2luICovCisJaWYgKG51 bVJlbHMgPCAyKQorCQlyZXR1cm4gdG9SZW1vdmU7CisKKwkvKgorCSAqIEluIG9yZGVyIHRv IGZpbmQgcmVsYXRpb25zIHdpdGggdGhlIHNhbWUgb2lkIHdlIGZpcnN0IGJ1aWxkIGFuIGFy cmF5IG9mCisJICogY2FuZGlkYXRlcyBhbmQgdGhlbiBzb3J0IGl0IGJ5IG9pZC4KKwkgKi8K KwljYW5kaWRhdGVzID0gKFNlbGZKb2luQ2FuZGlkYXRlICopIHBhbGxvYyhzaXplb2YoU2Vs ZkpvaW5DYW5kaWRhdGUpICoKKwkJCQkJCQkJCQkJICBudW1SZWxzKTsKKwlpID0gLTE7CisJ aiA9IDA7CisJd2hpbGUgKChpID0gYm1zX25leHRfbWVtYmVyKHJlbGlkcywgaSkpID49IDAp CisJeworCQljYW5kaWRhdGVzW2pdLnJlbGlkID0gaTsKKwkJY2FuZGlkYXRlc1tqXS5yZWxv aWQgPSByb290LT5zaW1wbGVfcnRlX2FycmF5W2ldLT5yZWxpZDsKKwkJaisrOworCX0KKwor CXFzb3J0KGNhbmRpZGF0ZXMsIG51bVJlbHMsIHNpemVvZihTZWxmSm9pbkNhbmRpZGF0ZSks CisJCSAgc2VsZl9qb2luX2NhbmRpZGF0ZXNfY21wKTsKKworCS8qCisJICogSXRlcmF0aXZl bHkgZm9ybSBhIGdyb3VwIG9mIHJlbGF0aW9uIGluZGV4ZXMgd2l0aCB0aGUgc2FtZSBvaWQg YW5kCisJICogbGF1bmNoIHRoZSByb3V0aW5lIHRoYXQgZGV0ZWN0cyBzZWxmLWpvaW5zIGlu IHRoaXMgZ3JvdXAgYW5kIHJlbW92ZXMKKwkgKiBleGNlc3NpdmUgcmFuZ2UgdGFibGUgZW50 cmllcy4KKwkgKgorCSAqIEF0IHRoZSBlbmQgb2YgdGhlIGl0ZXJhdGlvbiwgZXhjbHVkZSB0 aGUgZ3JvdXAgZnJvbSB0aGUgb3ZlcmFsbCByZWxpZHMKKwkgKiBsaXN0LiBTbyBlYWNoIG5l eHQgaXRlcmF0aW9uIG9mIHRoZSBjeWNsZSB3aWxsIGludm9sdmUgbGVzcyBhbmQgbGVzcwor CSAqIHZhbHVlIG9mIHJlbGlkcy4KKwkgKi8KKwlpID0gMDsKKwlmb3IgKGogPSAxOyBqIDwg bnVtUmVscyArIDE7IGorKykKKwl7CisJCWlmIChqID09IG51bVJlbHMgfHwgY2FuZGlkYXRl c1tqXS5yZWxvaWQgIT0gY2FuZGlkYXRlc1tpXS5yZWxvaWQpCisJCXsKKwkJCWlmIChqIC0g aSA+PSAyKQorCQkJeworCQkJCS8qIENyZWF0ZSBhIGdyb3VwIG9mIHJlbGF0aW9uIGluZGV4 ZXMgd2l0aCB0aGUgc2FtZSBvaWQgKi8KKwkJCQlSZWxpZHMJCWdyb3VwID0gTlVMTDsKKwkJ CQlSZWxpZHMJCXJlbW92ZWQ7CisKKwkJCQl3aGlsZSAoaSA8IGopCisJCQkJeworCQkJCQln cm91cCA9IGJtc19hZGRfbWVtYmVyKGdyb3VwLCBjYW5kaWRhdGVzW2ldLnJlbGlkKTsKKwkJ CQkJaSsrOworCQkJCX0KKwkJCQlyZWxpZHMgPSBibXNfZGVsX21lbWJlcnMocmVsaWRzLCBn cm91cCk7CisKKwkJCQkvKgorCQkJCSAqIFRyeSB0byByZW1vdmUgc2VsZi1qb2lucyBmcm9t IGEgZ3JvdXAgb2YgaWRlbnRpY2FsIGVudHJpZXMuCisJCQkJICogTWFrZSB0aGUgbmV4dCBh dHRlbXB0IGl0ZXJhdGl2ZWx5IC0gaWYgc29tZXRoaW5nIGlzIGRlbGV0ZWQKKwkJCQkgKiBm cm9tIGEgZ3JvdXAsIGNoYW5nZXMgaW4gY2xhdXNlcyBhbmQgZXF1aXZhbGVuY2UgY2xhc3Nl cworCQkJCSAqIGNhbiBnaXZlIHVzIGEgY2hhbmNlIHRvIGZpbmQgbW9yZSBjYW5kaWRhdGVz LgorCQkJCSAqLworCQkJCWRvCisJCQkJeworCQkJCQlBc3NlcnQoIWJtc19vdmVybGFwKGdy b3VwLCB0b1JlbW92ZSkpOworCQkJCQlyZW1vdmVkID0gcmVtb3ZlX3NlbGZfam9pbnNfb25l X2dyb3VwKHJvb3QsIGdyb3VwKTsKKwkJCQkJdG9SZW1vdmUgPSBibXNfYWRkX21lbWJlcnMo dG9SZW1vdmUsIHJlbW92ZWQpOworCQkJCQlncm91cCA9IGJtc19kZWxfbWVtYmVycyhncm91 cCwgcmVtb3ZlZCk7CisJCQkJfSB3aGlsZSAoIWJtc19pc19lbXB0eShyZW1vdmVkKSAmJgor CQkJCQkJIGJtc19tZW1iZXJzaGlwKGdyb3VwKSA9PSBCTVNfTVVMVElQTEUpOworCQkJCWJt c19mcmVlKHJlbW92ZWQpOworCQkJCWJtc19mcmVlKGdyb3VwKTsKKwkJCX0KKwkJCWVsc2UK KwkJCXsKKwkJCQkvKiBTaW5nbGUgcmVsYXRpb24sIGp1c3QgcmVtb3ZlIGl0IGZyb20gdGhl IHNldCAqLworCQkJCXJlbGlkcyA9IGJtc19kZWxfbWVtYmVyKHJlbGlkcywgY2FuZGlkYXRl c1tpXS5yZWxpZCk7CisJCQkJaSA9IGo7CisJCQl9CisJCX0KKwl9CisKKwlBc3NlcnQoYm1z X2lzX2VtcHR5KHJlbGlkcykpOworCisJcmV0dXJuIHRvUmVtb3ZlOworfQorCisvKgorICog Q29tcGFyZSBzZWxmLWpvaW4gY2FuZGlkYXRlcyBieSB0aGVpciBvaWRzLgorICovCitzdGF0 aWMgaW50CitzZWxmX2pvaW5fY2FuZGlkYXRlc19jbXAoY29uc3Qgdm9pZCAqYSwgY29uc3Qg dm9pZCAqYikKK3sKKwljb25zdCBTZWxmSm9pbkNhbmRpZGF0ZSAqY2EgPSAoY29uc3QgU2Vs ZkpvaW5DYW5kaWRhdGUgKikgYTsKKwljb25zdCBTZWxmSm9pbkNhbmRpZGF0ZSAqY2IgPSAo Y29uc3QgU2VsZkpvaW5DYW5kaWRhdGUgKikgYjsKKworCWlmIChjYS0+cmVsb2lkICE9IGNi LT5yZWxvaWQpCisJCXJldHVybiAoY2EtPnJlbG9pZCA8IGNiLT5yZWxvaWQgPyAtMSA6IDEp OworCWVsc2UKKwkJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBGaW5kIGFuZCByZW1vdmUgdXNl bGVzcyBzZWxmIGpvaW5zLgorICoKKyAqIFNlYXJjaCBmb3Igam9pbnMgd2hlcmUgYSByZWxh dGlvbiBpcyBqb2luZWQgdG8gaXRzZWxmLiBJZiB0aGUgam9pbiBjbGF1c2UKKyAqIGZvciBl YWNoIHR1cGxlIGZyb20gb25lIHNpZGUgb2YgdGhlIGpvaW4gaXMgcHJvdmVuIHRvIG1hdGNo IHRoZSBzYW1lCisgKiBwaHlzaWNhbCByb3cgKG9yIG5vdGhpbmcpIG9uIHRoZSBvdGhlciBz aWRlLCB0aGF0IHNlbGYtam9pbiBjYW4gYmUKKyAqIGVsaW1pbmF0ZWQgZnJvbSB0aGUgcXVl cnkuICBTdWl0YWJsZSBqb2luIGNsYXVzZXMgYXJlIGFzc3VtZWQgdG8gYmUgaW4gdGhlCisg KiBmb3JtIG9mIFggPSBYLCBhbmQgY2FuIGJlIHJlcGxhY2VkIHdpdGggTk9UIE5VTEwgY2xh dXNlcy4KKyAqCisgKiBGb3IgdGhlIHNha2Ugb2Ygc2ltcGxpY2l0eSwgd2UgZG9uJ3QgYXBw bHkgdGhpcyBvcHRpbWl6YXRpb24gdG8gc3BlY2lhbAorICogam9pbnMuIEhlcmUgaXMgYSBs aXN0IG9mIHdoYXQgd2UgY291bGQgZG8gaW4gc29tZSBwYXJ0aWN1bGFyIGNhc2VzOgorICog J2EgYTEgc2VtaSBqb2luIGEgYTInOiBpcyByZWR1Y2VkIHRvIGlubmVyIGJ5IHJlZHVjZV91 bmlxdWVfc2VtaWpvaW5zLAorICogYW5kIHRoZW4gcmVtb3ZlZCBub3JtYWxseS4KKyAqICdh IGExIGFudGkgam9pbiBhIGEyJzogY291bGQgc2ltcGxpZnkgdG8gYSBzY2FuIHdpdGggJ291 dGVyIHF1YWxzIEFORAorICogKElTIE5VTEwgb24gam9pbiBjb2x1bW5zIE9SIE5PVCBpbm5l ciBxdWFscyknLgorICogJ2EgYTEgbGVmdCBqb2luIGEgYTInOiBjb3VsZCBzaW1wbGlmeSB0 byBhIHNjYW4gbGlrZSBpbm5lciBidXQgd2l0aG91dAorICogTk9UIE5VTEwgY29uZGl0aW9u cyBvbiBqb2luIGNvbHVtbnMuCisgKiAnYSBhMSBsZWZ0IGpvaW4gKGEgYTIgam9pbiBiKSc6 IGNhbid0IHNpbXBsaWZ5IHRoaXMsIGJlY2F1c2Ugam9pbiB0byBiCisgKiBjYW4gYm90aCBy ZW1vdmUgcm93cyBhbmQgaW50cm9kdWNlIGR1cGxpY2F0ZXMuCisgKgorICogVG8gc2VhcmNo IGZvciByZW1vdmFibGUgam9pbnMsIHdlIG9yZGVyIGFsbCB0aGUgcmVsYXRpb25zIG9uIHRo ZWlyIE9pZCwKKyAqIGdvIG92ZXIgZWFjaCBzZXQgd2l0aCB0aGUgc2FtZSBPaWQsIGFuZCBj b25zaWRlciBlYWNoIHBhaXIgb2YgcmVsYXRpb25zCisgKiBpbiB0aGlzIHNldC4KKyAqCisg KiBUbyByZW1vdmUgdGhlIGpvaW4sIHdlIG1hcmsgb25lIG9mIHRoZSBwYXJ0aWNpcGF0aW5n IHJlbGF0aW9ucyBhcyBkZWFkCisgKiBhbmQgcmV3cml0ZSBhbGwgcmVmZXJlbmNlcyB0byBp dCB0byBwb2ludCB0byB0aGUgcmVtYWluaW5nIHJlbGF0aW9uLgorICogVGhpcyBpbmNsdWRl cyBtb2RpZnlpbmcgUmVzdHJpY3RJbmZvcywgRXF1aXZhbGVuY2VDbGFzc2VzLCBhbmQKKyAq IEVxdWl2YWxlbmNlTWVtYmVycy4gV2UgYWxzbyBoYXZlIHRvIG1vZGlmeSB0aGUgcm93IG1h cmtzLiBUaGUgam9pbiBjbGF1c2VzCisgKiBvZiB0aGUgcmVtb3ZlZCByZWxhdGlvbiBiZWNv bWUgZWl0aGVyIHJlc3RyaWN0aW9uIG9yIGpvaW4gY2xhdXNlcywgYmFzZWQgb24KKyAqIHdo ZXRoZXIgdGhleSByZWZlcmVuY2UgYW55IHJlbGF0aW9ucyBub3QgcGFydGljaXBhdGluZyBp biB0aGUgcmVtb3ZlZCBqb2luLgorICoKKyAqICdqb2lubGlzdCcgaXMgdGhlIHRvcC1sZXZl bCBqb2lubGlzdCBvZiB0aGUgcXVlcnkuIElmIGl0IGhhcyBhbnkKKyAqIHJlZmVyZW5jZXMg dG8gdGhlIHJlbW92ZWQgcmVsYXRpb25zLCB3ZSB1cGRhdGUgdGhlbSB0byBwb2ludCB0byB0 aGUKKyAqIHJlbWFpbmluZyBvbmVzLgorICovCitMaXN0ICoKK3JlbW92ZV91c2VsZXNzX3Nl bGZfam9pbnMoUGxhbm5lckluZm8gKnJvb3QsIExpc3QgKmpvaW5saXN0KQoreworCVJlbGlk cwkJdG9SZW1vdmUgPSBOVUxMOworCWludAkJCXJlbGlkID0gLTE7CisKKwlpZiAoIWVuYWJs ZV9zZWxmX2pvaW5fZWxpbWluYXRpb24gfHwgam9pbmxpc3QgPT0gTklMIHx8CisJCShsaXN0 X2xlbmd0aChqb2lubGlzdCkgPT0gMSAmJiAhSXNBKGxpbml0aWFsKGpvaW5saXN0KSwgTGlz dCkpKQorCQlyZXR1cm4gam9pbmxpc3Q7CisKKwkvKgorCSAqIE1lcmdlIHBhaXJzIG9mIHJl bGF0aW9ucyBwYXJ0aWNpcGF0ZWQgaW4gc2VsZi1qb2luLiBSZW1vdmUgdW5uZWNlc3NhcnkK KwkgKiByYW5nZSB0YWJsZSBlbnRyaWVzLgorCSAqLworCXRvUmVtb3ZlID0gcmVtb3ZlX3Nl bGZfam9pbnNfcmVjdXJzZShyb290LCBqb2lubGlzdCwgdG9SZW1vdmUpOworCisJaWYgKHVu bGlrZWx5KHRvUmVtb3ZlICE9IE5VTEwpKQorCXsKKwkJLyogQXQgdGhlIGVuZCwgcmVtb3Zl IG9ycGhhbmVkIHJlbGF0aW9uIGxpbmtzICovCisJCXdoaWxlICgocmVsaWQgPSBibXNfbmV4 dF9tZW1iZXIodG9SZW1vdmUsIHJlbGlkKSkgPj0gMCkKKwkJeworCQkJaW50CQkJbnJlbW92 ZWQgPSAwOworCisJCQlqb2lubGlzdCA9IHJlbW92ZV9yZWxfZnJvbV9qb2lubGlzdChqb2lu bGlzdCwgcmVsaWQsICZucmVtb3ZlZCk7CisJCQlpZiAobnJlbW92ZWQgIT0gMSkKKwkJCQll bG9nKEVSUk9SLCAiZmFpbGVkIHRvIGZpbmQgcmVsYXRpb24gJWQgaW4gam9pbmxpc3QiLCBy ZWxpZCk7CisJCX0KKwl9CisKKwlyZXR1cm4gam9pbmxpc3Q7CiB9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubWFpbi5jIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vcGxhbm1haW4uYwppbmRleCBhZGUyM2ZkOWQ1Ni4uNTQ2N2UwOTRjYTcg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5tYWluLmMKKysr IGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm1haW4uYwpAQCAtMjMzLDYgKzIz MywxMSBAQCBxdWVyeV9wbGFubmVyKFBsYW5uZXJJbmZvICpyb290LAogCSAqLwogCXJlZHVj ZV91bmlxdWVfc2VtaWpvaW5zKHJvb3QpOwogCisJLyoKKwkgKiBSZW1vdmUgc2VsZiBqb2lu cyBvbiBhIHVuaXF1ZSBjb2x1bW4uCisJICovCisJam9pbmxpc3QgPSByZW1vdmVfdXNlbGVz c19zZWxmX2pvaW5zKHJvb3QsIGpvaW5saXN0KTsKKwogCS8qCiAJICogTm93IGRpc3RyaWJ1 dGUgInBsYWNlaG9sZGVycyIgdG8gYmFzZSByZWxzIGFzIG5lZWRlZC4gIFRoaXMgaGFzIHRv IGJlCiAJICogZG9uZSBhZnRlciBqb2luIHJlbW92YWwgYmVjYXVzZSByZW1vdmFsIGNvdWxk IGNoYW5nZSB3aGV0aGVyIGEKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9w cmVwL3ByZXB1bmlvbi5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcHVuaW9u LmMKaW5kZXggN2MyN2RjMjRlMjEuLmVhYjQ0ZGE2NWI4IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwdW5pb24uYworKysgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcHJlcC9wcmVwdW5pb24uYwpAQCAtNjM5LDE0ICs2MzksMTcgQEAgYnVpbGRfc2V0 b3BfY2hpbGRfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAkg KiBvdGhlcndpc2UgZG8gc3RhdGlzdGljYWwgZXN0aW1hdGlvbi4KIAkgKgogCSAqIFhYWCB5 b3UgZG9uJ3QgcmVhbGx5IHdhbnQgdG8ga25vdyBhYm91dCB0aGlzOiB3ZSBkbyB0aGUgZXN0 aW1hdGlvbgotCSAqIHVzaW5nIHRoZSBzdWJxdWVyeSdzIG9yaWdpbmFsIHRhcmdldGxpc3Qg ZXhwcmVzc2lvbnMsIG5vdCB0aGUKKwkgKiB1c2luZyB0aGUgc3Vicm9vdC0+cGFyc2UncyBv cmlnaW5hbCB0YXJnZXRsaXN0IGV4cHJlc3Npb25zLCBub3QgdGhlCiAJICogc3Vicm9vdC0+ cHJvY2Vzc2VkX3RsaXN0IHdoaWNoIG1pZ2h0IHNlZW0gbW9yZSBhcHByb3ByaWF0ZS4gIFRo ZSByZWFzb24KIAkgKiBpcyB0aGF0IGlmIHRoZSBzdWJxdWVyeSBpcyBpdHNlbGYgYSBzZXRv cCwgaXQgbWF5IHJldHVybiBhCiAJICogcHJvY2Vzc2VkX3RsaXN0IGNvbnRhaW5pbmcgInZh cm5vIDAiIFZhcnMgZ2VuZXJhdGVkIGJ5CiAJICogZ2VuZXJhdGVfYXBwZW5kX3RsaXN0LCBh bmQgdGhvc2Ugd291bGQgY29uZnVzZSBlc3RpbWF0ZV9udW1fZ3JvdXBzCiAJICogbWlnaHRp bHkuICBXZSBvdWdodCB0byBnZXQgcmlkIG9mIHRoZSAidmFybm8gMCIgaGFjaywgYnV0IHRo YXQgcmVxdWlyZXMKIAkgKiBhIHJlZGVzaWduIG9mIHRoZSBwYXJzZXRyZWUgcmVwcmVzZW50 YXRpb24gb2Ygc2V0b3BzLCBzbyB0aGF0IHRoZXJlIGNhbgotCSAqIGJlIGFuIFJURSBjb3Jy ZXNwb25kaW5nIHRvIGVhY2ggc2V0b3AncyBvdXRwdXQuCisJICogYmUgYW4gUlRFIGNvcnJl c3BvbmRpbmcgdG8gZWFjaCBzZXRvcCdzIG91dHB1dC4gTm90ZSwgd2UgdXNlIHRoaXMgbm90 CisJICogc3VicXVlcnkncyB0YXJnZXRsaXN0IGJ1dCBzdWJyb290LT5wYXJzZSdzIHRhcmdl dGxpc3QsIGJlY2F1c2UgaXQgd2FzCisJICogcmV2aXNlZCBieSBzZWxmLWpvaW4gcmVtb3Zh bC4gIHN1YnF1ZXJ5J3MgdGFyZ2V0bGlzdCBtaWdodCBjb250YWluIHRoZQorCSAqIHJlZmVy ZW5jZXMgdG8gdGhlIHJlbW92ZWQgcmVsaWRzLgogCSAqLwogCWlmIChwTnVtR3JvdXBzKQog CXsKQEAgLTY1OSw3ICs2NjIsNyBAQCBidWlsZF9zZXRvcF9jaGlsZF9wYXRocyhQbGFubmVy SW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCQkJKnBOdW1Hcm91cHMgPSByZWwtPmNo ZWFwZXN0X3RvdGFsX3BhdGgtPnJvd3M7CiAJCWVsc2UKIAkJCSpwTnVtR3JvdXBzID0gZXN0 aW1hdGVfbnVtX2dyb3VwcyhzdWJyb290LAotCQkJCQkJCQkJCQkgIGdldF90bGlzdF9leHBy cyhzdWJxdWVyeS0+dGFyZ2V0TGlzdCwgZmFsc2UpLAorCQkJCQkJCQkJCQkgIGdldF90bGlz dF9leHBycyhzdWJyb290LT5wYXJzZS0+dGFyZ2V0TGlzdCwgZmFsc2UpLAogCQkJCQkJCQkJ CQkgIHJlbC0+Y2hlYXBlc3RfdG90YWxfcGF0aC0+cm93cywKIAkJCQkJCQkJCQkJICBOVUxM LAogCQkJCQkJCQkJCQkgIE5VTEwpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmV3cml0 ZS9yZXdyaXRlTWFuaXAuYyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZU1hbmlwLmMK aW5kZXggYTExNWIyMTdjOTEuLjk0MzM1NDhkMjc5IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9yZXdyaXRlL3Jld3JpdGVNYW5pcC5jCisrKyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3 cml0ZU1hbmlwLmMKQEAgLTY0LDcgKzY0LDYgQEAgc3RhdGljIGJvb2wgbG9jYXRlX3dpbmRv d2Z1bmNfd2Fsa2VyKE5vZGUgKm5vZGUsCiAJCQkJCQkJCQkgbG9jYXRlX3dpbmRvd2Z1bmNf Y29udGV4dCAqY29udGV4dCk7CiBzdGF0aWMgYm9vbCBjaGVja0V4cHJIYXNTdWJMaW5rX3dh bGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KTsKIHN0YXRpYyBSZWxpZHMgb2Zmc2V0 X3JlbGlkX3NldChSZWxpZHMgcmVsaWRzLCBpbnQgb2Zmc2V0KTsKLXN0YXRpYyBSZWxpZHMg YWRqdXN0X3JlbGlkX3NldChSZWxpZHMgcmVsaWRzLCBpbnQgb2xkcmVsaWQsIGludCBuZXdy ZWxpZCk7CiBzdGF0aWMgTm9kZSAqYWRkX251bGxpbmdfcmVsaWRzX211dGF0b3IoTm9kZSAq bm9kZSwKIAkJCQkJCQkJCQlhZGRfbnVsbGluZ19yZWxpZHNfY29udGV4dCAqY29udGV4dCk7 CiBzdGF0aWMgTm9kZSAqcmVtb3ZlX251bGxpbmdfcmVsaWRzX211dGF0b3IoTm9kZSAqbm9k ZSwKQEAgLTU0Myw2ICs1NDIsOCBAQCBvZmZzZXRfcmVsaWRfc2V0KFJlbGlkcyByZWxpZHMs IGludCBvZmZzZXQpCiAgKiAoaWRlbnRpZmllZCBieSBzdWJsZXZlbHNfdXAgYW5kIHJ0X2lu ZGV4KSwgYW5kIGNoYW5nZSB0aGVpciB2YXJubyBmaWVsZHMKICAqIHRvICduZXdfaW5kZXgn LiAgVGhlIHZhcm5vc3luIGZpZWxkcyBhcmUgY2hhbmdlZCB0b28uICBBbHNvLCBhZGp1c3Qg b3RoZXIKICAqIG5vZGVzIHRoYXQgY29udGFpbiByYW5nZXRhYmxlIGluZGV4ZXMsIHN1Y2gg YXMgUmFuZ2VUYmxSZWYgYW5kIEpvaW5FeHByLgorICogU3BlY2lmeWluZyAnY2hhbmdlX1Jh bmdlVGJsUmVmJyB0byBmYWxzZSBhbGxvd3Mgc2tpcHBpbmcgUmFuZ2VUYmxSZWYuCisgKiBT ZWUgQ2hhbmdlVmFyTm9kZXNFeHRlbmRlZCBmb3IgZGV0YWlscy4KICAqCiAgKiBOT1RFOiBh bHRob3VnaCB0aGlzIGhhcyB0aGUgZm9ybSBvZiBhIHdhbGtlciwgd2UgY2hlYXQgYW5kIG1v ZGlmeSB0aGUKICAqIG5vZGVzIGluLXBsYWNlLiAgVGhlIGdpdmVuIGV4cHJlc3Npb24gdHJl ZSBzaG91bGQgaGF2ZSBiZWVuIGNvcGllZApAQCAtNTU0LDYgKzU1NSw3IEBAIHR5cGVkZWYg c3RydWN0CiAJaW50CQkJcnRfaW5kZXg7CiAJaW50CQkJbmV3X2luZGV4OwogCWludAkJCXN1 YmxldmVsc191cDsKKwlib29sCQljaGFuZ2VfUmFuZ2VUYmxSZWY7CiB9IENoYW5nZVZhck5v ZGVzX2NvbnRleHQ7CiAKIHN0YXRpYyBib29sCkBAIC01ODYsNyArNTg4LDcgQEAgQ2hhbmdl VmFyTm9kZXNfd2Fsa2VyKE5vZGUgKm5vZGUsIENoYW5nZVZhck5vZGVzX2NvbnRleHQgKmNv bnRleHQpCiAJCQljZXhwci0+Y3Zhcm5vID0gY29udGV4dC0+bmV3X2luZGV4OwogCQlyZXR1 cm4gZmFsc2U7CiAJfQotCWlmIChJc0Eobm9kZSwgUmFuZ2VUYmxSZWYpKQorCWlmIChJc0Eo bm9kZSwgUmFuZ2VUYmxSZWYpICYmIGNvbnRleHQtPmNoYW5nZV9SYW5nZVRibFJlZikKIAl7 CiAJCVJhbmdlVGJsUmVmICpydHIgPSAoUmFuZ2VUYmxSZWYgKikgbm9kZTsKIApAQCAtNjMz LDYgKzYzNSw3NSBAQCBDaGFuZ2VWYXJOb2Rlc193YWxrZXIoTm9kZSAqbm9kZSwgQ2hhbmdl VmFyTm9kZXNfY29udGV4dCAqY29udGV4dCkKIAkJfQogCQlyZXR1cm4gZmFsc2U7CiAJfQor CWlmIChJc0Eobm9kZSwgUmVzdHJpY3RJbmZvKSkKKwl7CisJCVJlc3RyaWN0SW5mbyAqcmlu Zm8gPSAoUmVzdHJpY3RJbmZvICopIG5vZGU7CisJCWludAkJCXJlbGlkID0gLTE7CisJCWJv b2wJCWlzX3JlcV9lcXVhbCA9CisJCQkocmluZm8tPnJlcXVpcmVkX3JlbGlkcyA9PSByaW5m by0+Y2xhdXNlX3JlbGlkcyk7CisJCWJvb2wJCWNsYXVzZV9yZWxpZHNfaXNfbXVsdGlwbGUg PQorCQkJKGJtc19tZW1iZXJzaGlwKHJpbmZvLT5jbGF1c2VfcmVsaWRzKSA9PSBCTVNfTVVM VElQTEUpOworCisJCWlmIChibXNfaXNfbWVtYmVyKGNvbnRleHQtPnJ0X2luZGV4LCByaW5m by0+Y2xhdXNlX3JlbGlkcykpCisJCXsKKwkJCWV4cHJlc3Npb25fdHJlZV93YWxrZXIoKE5v ZGUgKikgcmluZm8tPmNsYXVzZSwgQ2hhbmdlVmFyTm9kZXNfd2Fsa2VyLCAodm9pZCAqKSBj b250ZXh0KTsKKwkJCWV4cHJlc3Npb25fdHJlZV93YWxrZXIoKE5vZGUgKikgcmluZm8tPm9y Y2xhdXNlLCBDaGFuZ2VWYXJOb2Rlc193YWxrZXIsICh2b2lkICopIGNvbnRleHQpOworCisJ CQlyaW5mby0+Y2xhdXNlX3JlbGlkcyA9CisJCQkJYWRqdXN0X3JlbGlkX3NldChyaW5mby0+ Y2xhdXNlX3JlbGlkcywgY29udGV4dC0+cnRfaW5kZXgsIGNvbnRleHQtPm5ld19pbmRleCk7 CisJCQlyaW5mby0+bnVtX2Jhc2VfcmVscyA9IGJtc19udW1fbWVtYmVycyhyaW5mby0+Y2xh dXNlX3JlbGlkcyk7CisJCQlyaW5mby0+bGVmdF9yZWxpZHMgPQorCQkJCWFkanVzdF9yZWxp ZF9zZXQocmluZm8tPmxlZnRfcmVsaWRzLCBjb250ZXh0LT5ydF9pbmRleCwgY29udGV4dC0+ bmV3X2luZGV4KTsKKwkJCXJpbmZvLT5yaWdodF9yZWxpZHMgPQorCQkJCWFkanVzdF9yZWxp ZF9zZXQocmluZm8tPnJpZ2h0X3JlbGlkcywgY29udGV4dC0+cnRfaW5kZXgsIGNvbnRleHQt Pm5ld19pbmRleCk7CisJCX0KKworCQlpZiAoaXNfcmVxX2VxdWFsKQorCQkJcmluZm8tPnJl cXVpcmVkX3JlbGlkcyA9IHJpbmZvLT5jbGF1c2VfcmVsaWRzOworCQllbHNlCisJCQlyaW5m by0+cmVxdWlyZWRfcmVsaWRzID0KKwkJCQlhZGp1c3RfcmVsaWRfc2V0KHJpbmZvLT5yZXF1 aXJlZF9yZWxpZHMsIGNvbnRleHQtPnJ0X2luZGV4LCBjb250ZXh0LT5uZXdfaW5kZXgpOwor CisJCXJpbmZvLT5vdXRlcl9yZWxpZHMgPQorCQkJYWRqdXN0X3JlbGlkX3NldChyaW5mby0+ b3V0ZXJfcmVsaWRzLCBjb250ZXh0LT5ydF9pbmRleCwgY29udGV4dC0+bmV3X2luZGV4KTsK KwkJcmluZm8tPmluY29tcGF0aWJsZV9yZWxpZHMgPQorCQkJYWRqdXN0X3JlbGlkX3NldChy aW5mby0+aW5jb21wYXRpYmxlX3JlbGlkcywgY29udGV4dC0+cnRfaW5kZXgsIGNvbnRleHQt Pm5ld19pbmRleCk7CisKKwkJaWYgKHJpbmZvLT5tZXJnZW9wZmFtaWxpZXMgJiYKKwkJCWJt c19nZXRfc2luZ2xldG9uX21lbWJlcihyaW5mby0+Y2xhdXNlX3JlbGlkcywgJnJlbGlkKSAm JgorCQkJY2xhdXNlX3JlbGlkc19pc19tdWx0aXBsZSAmJgorCQkJcmVsaWQgPT0gY29udGV4 dC0+bmV3X2luZGV4ICYmIElzQShyaW5mby0+Y2xhdXNlLCBPcEV4cHIpKQorCQl7CisJCQlF eHByCSAgICpsZWZ0T3A7CisJCQlFeHByCSAgICpyaWdodE9wOworCisJCQlsZWZ0T3AgPSAo RXhwciAqKSBnZXRfbGVmdG9wKHJpbmZvLT5jbGF1c2UpOworCQkJcmlnaHRPcCA9IChFeHBy ICopIGdldF9yaWdodG9wKHJpbmZvLT5jbGF1c2UpOworCisJCQkvKgorCQkJICogRm9yIHNl bGYtam9pbiBlbGltaW5hdGlvbiwgY2hhbmdpbmcgdmFybm9zIGNvdWxkIHRyYW5zZm9ybQor CQkJICogInQxLmEgPSB0Mi5hIiBpbnRvICJ0MS5hID0gdDEuYSIuICBUaGF0IGlzIGFsd2F5 cyB0cnVlIGFzIGxvbmcKKwkJCSAqIGFzICJ0MS5hIiBpcyBub3QgbnVsbC4gIFdlIHVzZSBx dWFsKCkgdG8gY2hlY2sgZm9yIHN1Y2ggYSBjYXNlLAorCQkJICogYW5kIHRoZW4gd2UgcmVw bGFjZSB0aGUgcXVhbCBmb3IgYSBjaGVjayBmb3Igbm90IG51bGwKKwkJCSAqIChOdWxsVGVz dCkuCisJCQkgKi8KKwkJCWlmIChsZWZ0T3AgIT0gTlVMTCAmJiBlcXVhbChsZWZ0T3AsIHJp Z2h0T3ApKQorCQkJeworCQkJCU51bGxUZXN0ICAgKm50ZXN0ID0gbWFrZU5vZGUoTnVsbFRl c3QpOworCisJCQkJbnRlc3QtPmFyZyA9IGxlZnRPcDsKKwkJCQludGVzdC0+bnVsbHRlc3R0 eXBlID0gSVNfTk9UX05VTEw7CisJCQkJbnRlc3QtPmFyZ2lzcm93ID0gZmFsc2U7CisJCQkJ bnRlc3QtPmxvY2F0aW9uID0gLTE7CisJCQkJcmluZm8tPmNsYXVzZSA9IChFeHByICopIG50 ZXN0OworCQkJCXJpbmZvLT5tZXJnZW9wZmFtaWxpZXMgPSBOSUw7CisJCQkJcmluZm8tPmxl ZnRfZW0gPSBOVUxMOworCQkJCXJpbmZvLT5yaWdodF9lbSA9IE5VTEw7CisJCQl9CisJCQlB c3NlcnQocmluZm8tPm9yY2xhdXNlID09IE5VTEwpOworCQl9CisJCXJldHVybiBmYWxzZTsK Kwl9CiAJaWYgKElzQShub2RlLCBBcHBlbmRSZWxJbmZvKSkKIAl7CiAJCUFwcGVuZFJlbElu Zm8gKmFwcGluZm8gPSAoQXBwZW5kUmVsSW5mbyAqKSBub2RlOwpAQCAtNjY1LDMyICs3MzYs MzIgQEAgQ2hhbmdlVmFyTm9kZXNfd2Fsa2VyKE5vZGUgKm5vZGUsIENoYW5nZVZhck5vZGVz X2NvbnRleHQgKmNvbnRleHQpCiAJcmV0dXJuIGV4cHJlc3Npb25fdHJlZV93YWxrZXIobm9k ZSwgQ2hhbmdlVmFyTm9kZXNfd2Fsa2VyLCBjb250ZXh0KTsKIH0KIAorLyoKKyAqIENoYW5n ZVZhck5vZGVzRXh0ZW5kZWQgLSBzaW1pbGFyIHRvIENoYW5nZVZhck5vZGVzLCBidXQgaGFz IGFkZGl0aW9uYWwKKyAqCQkJCQkJCSdjaGFuZ2VfUmFuZ2VUYmxSZWYnIHBhcmFtCisgKgor ICogQ2hhbmdlVmFyTm9kZXMgY2hhbmdlcyBhIGdpdmVuIG5vZGUgYW5kIGFsbCBvZiBpdHMg dW5kZXJseWluZyBub2Rlcy4KKyAqIEhvd2V2ZXIsIHNlbGYtam9pbiBlbGltaW5hdGlvbiAo U0pFKSBuZWVkcyB0byBza2lwIHRoZSBSYW5nZVRibFJlZiBub2RlCisgKiB0eXBlLiAgRHVy aW5nIFNKRSdzIGxhc3Qgc3RlcCwgcmVtb3ZlX3JlbF9mcm9tX2pvaW5saXN0KCkgcmVtb3Zl cworICogcmVtYWluaW5nIFJhbmdlVGJsUmVmcyB3aXRoIHRhcmdldCByZWxpZC4gIElmIENo YW5nZVZhck5vZGVzKCkgcmVwbGFjZXMKKyAqIHRoZSB0YXJnZXQgcmVsaWQgYmVmb3JlLCBy ZW1vdmVfcmVsX2Zyb21fam9pbmxpc3QoKSBmYWlscyB0byBpZGVudGlmeQorICogdGhlIG5v ZGVzIHRvIGRlbGV0ZS4KKyAqLwogdm9pZAotQ2hhbmdlVmFyTm9kZXMoTm9kZSAqbm9kZSwg aW50IHJ0X2luZGV4LCBpbnQgbmV3X2luZGV4LCBpbnQgc3VibGV2ZWxzX3VwKQorQ2hhbmdl VmFyTm9kZXNFeHRlbmRlZChOb2RlICpub2RlLCBpbnQgcnRfaW5kZXgsIGludCBuZXdfaW5k ZXgsCisJCQkJCSAgIGludCBzdWJsZXZlbHNfdXAsIGJvb2wgY2hhbmdlX1JhbmdlVGJsUmVm KQogewogCUNoYW5nZVZhck5vZGVzX2NvbnRleHQgY29udGV4dDsKIAogCWNvbnRleHQucnRf aW5kZXggPSBydF9pbmRleDsKIAljb250ZXh0Lm5ld19pbmRleCA9IG5ld19pbmRleDsKIAlj b250ZXh0LnN1YmxldmVsc191cCA9IHN1YmxldmVsc191cDsKKwljb250ZXh0LmNoYW5nZV9S YW5nZVRibFJlZiA9IGNoYW5nZV9SYW5nZVRibFJlZjsKIAotCS8qCi0JICogTXVzdCBiZSBw cmVwYXJlZCB0byBzdGFydCB3aXRoIGEgUXVlcnkgb3IgYSBiYXJlIGV4cHJlc3Npb24gdHJl ZTsgaWYKLQkgKiBpdCdzIGEgUXVlcnksIGdvIHN0cmFpZ2h0IHRvIHF1ZXJ5X3RyZWVfd2Fs a2VyIHRvIG1ha2Ugc3VyZSB0aGF0Ci0JICogc3VibGV2ZWxzX3VwIGRvZXNuJ3QgZ2V0IGlu Y3JlbWVudGVkIHByZW1hdHVyZWx5LgotCSAqLwogCWlmIChub2RlICYmIElzQShub2RlLCBR dWVyeSkpCiAJewogCQlRdWVyeQkgICAqcXJ5ID0gKFF1ZXJ5ICopIG5vZGU7CiAKLQkJLyoK LQkJICogSWYgd2UgYXJlIHN0YXJ0aW5nIGF0IGEgUXVlcnksIGFuZCBzdWJsZXZlbHNfdXAg aXMgemVybywgdGhlbiB3ZQotCQkgKiBtdXN0IGFsc28gZml4IHJhbmdldGFibGUgaW5kZXhl cyBpbiB0aGUgUXVlcnkgaXRzZWxmIC0tLSBuYW1lbHkKLQkJICogcmVzdWx0UmVsYXRpb24s IG1lcmdlVGFyZ2V0UmVsYXRpb24sIGV4Y2xSZWxJbmRleCAgYW5kIHJvd01hcmtzCi0JCSAq IGVudHJpZXMuICBzdWJsZXZlbHNfdXAgY2Fubm90IGJlIHplcm8gd2hlbiByZWN1cnNpbmcg aW50byBhCi0JCSAqIHN1YnF1ZXJ5LCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gaGF2ZSB0aGUg c2FtZSBsb2dpYyBpbnNpZGUKLQkJICogQ2hhbmdlVmFyTm9kZXNfd2Fsa2VyLgotCQkgKi8K IAkJaWYgKHN1YmxldmVsc191cCA9PSAwKQogCQl7CiAJCQlMaXN0Q2VsbCAgICpsOwpAQCAt NzAxLDcgKzc3Miw2IEBAIENoYW5nZVZhck5vZGVzKE5vZGUgKm5vZGUsIGludCBydF9pbmRl eCwgaW50IG5ld19pbmRleCwgaW50IHN1YmxldmVsc191cCkKIAkJCWlmIChxcnktPm1lcmdl VGFyZ2V0UmVsYXRpb24gPT0gcnRfaW5kZXgpCiAJCQkJcXJ5LT5tZXJnZVRhcmdldFJlbGF0 aW9uID0gbmV3X2luZGV4OwogCi0JCQkvKiB0aGlzIGlzIHVubGlrZWx5IHRvIGV2ZXIgYmUg dXNlZCwgYnV0IC4uLiAqLwogCQkJaWYgKHFyeS0+b25Db25mbGljdCAmJiBxcnktPm9uQ29u ZmxpY3QtPmV4Y2xSZWxJbmRleCA9PSBydF9pbmRleCkKIAkJCQlxcnktPm9uQ29uZmxpY3Qt PmV4Y2xSZWxJbmRleCA9IG5ld19pbmRleDsKIApAQCAtNzE5LDE1ICs3ODksMjIgQEAgQ2hh bmdlVmFyTm9kZXMoTm9kZSAqbm9kZSwgaW50IHJ0X2luZGV4LCBpbnQgbmV3X2luZGV4LCBp bnQgc3VibGV2ZWxzX3VwKQogCQlDaGFuZ2VWYXJOb2Rlc193YWxrZXIobm9kZSwgJmNvbnRl eHQpOwogfQogCit2b2lkCitDaGFuZ2VWYXJOb2RlcyhOb2RlICpub2RlLCBpbnQgcnRfaW5k ZXgsIGludCBuZXdfaW5kZXgsIGludCBzdWJsZXZlbHNfdXApCit7CisJQ2hhbmdlVmFyTm9k ZXNFeHRlbmRlZChub2RlLCBydF9pbmRleCwgbmV3X2luZGV4LCBzdWJsZXZlbHNfdXAsIHRy dWUpOworfQorCiAvKgotICogU3Vic3RpdHV0ZSBuZXdyZWxpZCBmb3Igb2xkcmVsaWQgaW4g YSBSZWxpZCBzZXQKKyAqIGFkanVzdF9yZWxpZF9zZXQgLSBzdWJzdGl0dXRlIG5ld3JlbGlk IGZvciBvbGRyZWxpZCBpbiBhIFJlbGlkIHNldAogICoKLSAqIE5vdGU6IHNvbWUgZXh0ZW5z aW9ucyBtYXkgcGFzcyBhIHNwZWNpYWwgdmFybm8gc3VjaCBhcyBJTkRFWF9WQVIgZm9yCi0g KiBvbGRyZWxpZC4gIGJtc19pc19tZW1iZXIgd29uJ3QgbGlrZSB0aGF0LCBidXQgd2Ugc2hv dWxkIHRvbGVyYXRlIGl0LgotICogKFBlcmhhcHMgbmV3cmVsaWQgY291bGQgYWxzbyBiZSBh IHNwZWNpYWwgdmFybm8sIGJ1dCB0aGVyZSBoYWQgYmV0dGVyCi0gKiBub3QgYmUgYSByZWFz b24gdG8gaW5qZWN0IHRoYXQgaW50byBhIG51bGxpbmdyZWxzIG9yIHBocmVscyBzZXQuKQor ICogQXR0ZW1wdCB0byByZW1vdmUgb2xkcmVsaWQgZnJvbSBhIFJlbGlkIHNldCAoYXMgbG9u ZyBhcyBpdCdzIG5vdCBhIHNwZWNpYWwKKyAqIHZhcm5vKS4gIElmIG9sZHJlbGlkIHdhcyBm b3VuZCBhbmQgcmVtb3ZlZCwgaW5zZXJ0IG5ld3JlbGlkIGludG8gYSBSZWxpZAorICogc2V0 IChhcyBsb25nIGFzIGl0J3Mgbm90IGEgc3BlY2lhbCB2YXJubykuICBUaGVyZWZvcmUsIHdo ZW4gb2xkcmVsaWQgaXMKKyAqIGEgc3BlY2lhbCB2YXJubywgdGhpcyBmdW5jdGlvbiBkb2Vz IG5vdGhpbmcuICBXaGVuIG5ld3JlbGlkIGlzIGEgc3BlY2lhbAorICogdmFybm8sIHRoaXMg ZnVuY3Rpb24gYmVoYXZlcyBhcyBkZWxldGUuCiAgKi8KLXN0YXRpYyBSZWxpZHMKK1JlbGlk cwogYWRqdXN0X3JlbGlkX3NldChSZWxpZHMgcmVsaWRzLCBpbnQgb2xkcmVsaWQsIGludCBu ZXdyZWxpZCkKIHsKIAlpZiAoIUlTX1NQRUNJQUxfVkFSTk8ob2xkcmVsaWQpICYmIGJtc19p c19tZW1iZXIob2xkcmVsaWQsIHJlbGlkcykpCkBAIC03MzYsNyArODEzLDggQEAgYWRqdXN0 X3JlbGlkX3NldChSZWxpZHMgcmVsaWRzLCBpbnQgb2xkcmVsaWQsIGludCBuZXdyZWxpZCkK IAkJcmVsaWRzID0gYm1zX2NvcHkocmVsaWRzKTsKIAkJLyogUmVtb3ZlIG9sZCwgYWRkIG5l dyAqLwogCQlyZWxpZHMgPSBibXNfZGVsX21lbWJlcihyZWxpZHMsIG9sZHJlbGlkKTsKLQkJ cmVsaWRzID0gYm1zX2FkZF9tZW1iZXIocmVsaWRzLCBuZXdyZWxpZCk7CisJCWlmICghSVNf U1BFQ0lBTF9WQVJOTyhuZXdyZWxpZCkpCisJCQlyZWxpZHMgPSBibXNfYWRkX21lbWJlcihy ZWxpZHMsIG5ld3JlbGlkKTsKIAl9CiAJcmV0dXJuIHJlbGlkczsKIH0KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXggNDI3MjgxODkzMjIuLmNjZTczMzE0NjA5IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtOTg4LDYgKzk4OCwxNiBA QCBzdHJ1Y3QgY29uZmlnX2Jvb2wgQ29uZmlndXJlTmFtZXNCb29sW10gPQogCQl0cnVlLAog CQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKKwl7CisJCXsiZW5hYmxlX3NlbGZfam9pbl9lbGlt aW5hdGlvbiIsIFBHQ19VU0VSU0VULCBRVUVSWV9UVU5JTkdfTUVUSE9ELAorCQkJZ2V0dGV4 dF9ub29wKCJFbmFibGUgcmVtb3ZhbCBvZiB1bmlxdWUgc2VsZi1qb2lucy4iKSwKKwkJCU5V TEwsCisJCQlHVUNfRVhQTEFJTiB8IEdVQ19OT1RfSU5fU0FNUExFCisJCX0sCisJCSZlbmFi bGVfc2VsZl9qb2luX2VsaW1pbmF0aW9uLAorCQl0cnVlLAorCQlOVUxMLCBOVUxMLCBOVUxM CisJfSwKIAl7CiAJCXsiZW5hYmxlX2dyb3VwX2J5X3Jlb3JkZXJpbmciLCBQR0NfVVNFUlNF VCwgUVVFUllfVFVOSU5HX01FVEhPRCwKIAkJCWdldHRleHRfbm9vcCgiRW5hYmxlcyByZW9y ZGVyaW5nIG9mIEdST1VQIEJZIGtleXMuIiksCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9u b2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCmluZGV4 IDAwYzcwMGNjM2U3Li5mYmYwNTMyMmM3NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9k ZXMvcGF0aG5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKQEAg LTIwMSw2ICsyMDEsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lckdsb2JhbAogICogTm90 IGFsbCBmaWVsZHMgYXJlIHByaW50ZWQuICAoSW4gc29tZSBjYXNlcywgdGhlcmUgaXMgbm8g cHJpbnQgc3VwcG9ydCBmb3IKICAqIHRoZSBmaWVsZCB0eXBlOyBpbiBvdGhlcnMsIGRvaW5n IHNvIHdvdWxkIGxlYWQgdG8gaW5maW5pdGUgcmVjdXJzaW9uIG9yCiAgKiBibG9hdCBkdW1w IG91dHB1dCBtb3JlIHRoYW4gc2VlbXMgdXNlZnVsLikKKyAqCisgKiBOT1RFOiBXaGVuIGFk ZGluZyBuZXcgZW50cmllcyBjb250YWluaW5nIHJlbGlkcyBhbmQgcmVsaWQgYml0bWFwc2V0 cywKKyAqIHJlbWVtYmVyIHRvIGNoZWNrIHRoYXQgdGhleSB3aWxsIGJlIGNvcnJlY3RseSBw cm9jZXNzZWQgYnkKKyAqIHRoZSByZW1vdmVfc2VsZl9qb2luX3JlbCBmdW5jdGlvbiAtIHJl bGlkIG9mIHJlbW92aW5nIHJlbGF0aW9uIHdpbGwgYmUKKyAqIGNvcnJlY3RseSByZXBsYWNl ZCB3aXRoIHRoZSBrZWVwaW5nIG9uZS4KICAqLS0tLS0tLS0tLQogICovCiAjaWZuZGVmIEhB VkVfUExBTk5FUklORk9fVFlQRURFRgpAQCAtNzUzLDcgKzc1OCw3IEBAIHR5cGVkZWYgc3Ry dWN0IFBhcnRpdGlvblNjaGVtZURhdGEgKlBhcnRpdGlvblNjaGVtZTsKICAqIHBvcHVsYXRl IHRoZXNlIGZpZWxkcywgZm9yIGJhc2UgcmVsczsgYnV0IHNvbWVkYXkgdGhleSBtaWdodCBi ZSB1c2VkIGZvcgogICogam9pbiByZWxzIHRvbzoKICAqCi0gKgkJdW5pcXVlX2Zvcl9yZWxz IC0gbGlzdCBvZiBSZWxpZCBzZXRzLCBlYWNoIG9uZSBiZWluZyBhIHNldCBvZiBvdGhlcgor ICoJCXVuaXF1ZV9mb3JfcmVscyAtIGxpc3Qgb2YgVW5pcXVlUmVsSW5mbywgZWFjaCBvbmUg YmVpbmcgYSBzZXQgb2Ygb3RoZXIKICAqCQkJCQlyZWxzIGZvciB3aGljaCB0aGlzIG9uZSBo YXMgYmVlbiBwcm92ZW4gdW5pcXVlCiAgKgkJbm9uX3VuaXF1ZV9mb3JfcmVscyAtIGxpc3Qg b2YgUmVsaWQgc2V0cywgZWFjaCBvbmUgYmVpbmcgYSBzZXQgb2YKICAqCQkJCQlvdGhlciBy ZWxzIGZvciB3aGljaCB3ZSBoYXZlIHRyaWVkIGFuZCBmYWlsZWQgdG8gcHJvdmUKQEAgLTk5 Miw3ICs5OTcsNyBAQCB0eXBlZGVmIHN0cnVjdCBSZWxPcHRJbmZvCiAJLyoKIAkgKiBjYWNo ZSBzcGFjZSBmb3IgcmVtZW1iZXJpbmcgaWYgd2UgaGF2ZSBwcm92ZW4gdGhpcyByZWxhdGlv biB1bmlxdWUKIAkgKi8KLQkvKiBrbm93biB1bmlxdWUgZm9yIHRoZXNlIG90aGVyIHJlbGlk IHNldChzKSAqLworCS8qIGtub3duIHVuaXF1ZSBmb3IgdGhlc2Ugb3RoZXIgcmVsaWQgc2V0 KHMpIGdpdmVuIGluIFVuaXF1ZVJlbEluZm8ocykgKi8KIAlMaXN0CSAgICp1bmlxdWVfZm9y X3JlbHM7CiAJLyoga25vd24gbm90IHVuaXF1ZSBmb3IgdGhlc2Ugc2V0KHMpICovCiAJTGlz dAkgICAqbm9uX3VuaXF1ZV9mb3JfcmVsczsKQEAgLTM0NjMsNCArMzQ2OCwzNSBAQCB0eXBl ZGVmIHN0cnVjdCBBZ2dUcmFuc0luZm8KIAlib29sCQlpbml0VmFsdWVJc051bGw7CiB9IEFn Z1RyYW5zSW5mbzsKIAorLyoKKyAqIFVuaXF1ZVJlbEluZm8gY2FjaGVzIGEgZmFjdCB0aGF0 IGEgcmVsYXRpb24gaXMgdW5pcXVlIHdoZW4gYmVpbmcgam9pbmVkCisgKiB0byBvdGhlciBy ZWxhdGlvbihzKS4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgVW5pcXVlUmVsSW5mbworeworCXBn X25vZGVfYXR0cihub19jb3B5X2VxdWFsLCBub19yZWFkLCBub19xdWVyeV9qdW1ibGUpCisK KwlOb2RlVGFnCQl0eXBlOworCisJLyoKKwkgKiBUaGUgcmVsYXRpb24gaW4gY29uc2lkZXJh dGlvbiBpcyB1bmlxdWUgd2hlbiBiZWluZyBqb2luZWQgd2l0aCB0aGlzIHNldAorCSAqIG9m IG90aGVyIHJlbGF0aW9uKHMpLgorCSAqLworCVJlbGlkcwkJb3V0ZXJyZWxpZHM7CisKKwkv KgorCSAqIFRoZSByZWxhdGlvbiBpbiBjb25zaWRlcmF0aW9uIGlzIHVuaXF1ZSB3aGVuIGNv bnNpZGVyaW5nIG9ubHkgY2xhdXNlcworCSAqIHN1aXRhYmxlIGZvciBzZWxmLWpvaW4gKHBh c3NlZCBzcGxpdF9zZWxmam9pbl9xdWFscygpKS4KKwkgKi8KKwlib29sCQlzZWxmX2pvaW47 CisKKwkvKgorCSAqIEFkZGl0aW9uYWwgY2xhdXNlcyBmcm9tIGEgYmFzZXJlc3RyaWN0aW5m byBsaXN0IHRoYXQgd2VyZSB1c2VkIHRvIHByb3ZlCisJICogdGhlIHVuaXF1ZW5lc3MuICAg V2UgY2FjaGUgaXQgZm9yIHRoZSBzZWxmLWpvaW4gY2hlY2tpbmcgcHJvY2VkdXJlOiBhCisJ ICogc2VsZi1qb2luIGNhbiBiZSByZW1vdmVkIGlmIHRoZSBvdXRlciByZWxhdGlvbiBjb250 YWlucyBzdHJpY3RseSB0aGUKKwkgKiBzYW1lIHNldCBvZiBjbGF1c2VzLgorCSAqLworCUxp c3QJICAgKmV4dHJhX2NsYXVzZXM7Cit9IFVuaXF1ZVJlbEluZm87CisKICNlbmRpZgkJCQkJ CQkvKiBQQVRITk9ERVNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVy L29wdGltaXplci5oIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oCmluZGV4 IGJjZjhlZDY0NWMyLi43OGUwNWQ4OGM4ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0 aW1pemVyL29wdGltaXplci5oCisrKyBiL3NyYy9pbmNsdWRlL29wdGltaXplci9vcHRpbWl6 ZXIuaApAQCAtMTkyLDYgKzE5Miw4IEBAIGV4dGVybiBTb3J0R3JvdXBDbGF1c2UgKmdldF9z b3J0Z3JvdXByZWZfY2xhdXNlX25vZXJyKEluZGV4IHNvcnRyZWYsCiAJCQkJCQkJCQkJCSAq IG91dHB1dCBsaXN0ICovCiAjZGVmaW5lIFBWQ19SRUNVUlNFX1BMQUNFSE9MREVSUwkweDAw MjAJLyogcmVjdXJzZSBpbnRvIFBsYWNlSG9sZGVyVmFyCiAJCQkJCQkJCQkJCSAqIGFyZ3Vt ZW50cyAqLworI2RlZmluZSBQVkNfSU5DTFVERV9DT05WRVJUUk9XVFlQRVMJMHgwMDQwCS8q IGluY2x1ZGUgQ29udmVydFJvd3R5cGVFeHBycyBpbgorCQkJCQkJCQkJCQkgKiBvdXRwdXQg bGlzdCAqLwogCiBleHRlcm4gQml0bWFwc2V0ICpwdWxsX3Zhcm5vcyhQbGFubmVySW5mbyAq cm9vdCwgTm9kZSAqbm9kZSk7CiBleHRlcm4gQml0bWFwc2V0ICpwdWxsX3Zhcm5vc19vZl9s ZXZlbChQbGFubmVySW5mbyAqcm9vdCwgTm9kZSAqbm9kZSwgaW50IGxldmVsc3VwKTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRocy5oIGIvc3JjL2luY2x1ZGUv b3B0aW1pemVyL3BhdGhzLmgKaW5kZXggNDY5NTVkMTI4ZjAuLmJjNWRmZDdkYjQxIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaAorKysgYi9zcmMvaW5jbHVk ZS9vcHRpbWl6ZXIvcGF0aHMuaApAQCAtNzIsNiArNzIsOSBAQCBleHRlcm4gdm9pZCBjcmVh dGVfaW5kZXhfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCk7CiBl eHRlcm4gYm9vbCByZWxhdGlvbl9oYXNfdW5pcXVlX2luZGV4X2ZvcihQbGFubmVySW5mbyAq cm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCQkJCQkJCQkJCSAgTGlzdCAqcmVzdHJpY3RsaXN0 LAogCQkJCQkJCQkJCSAgTGlzdCAqZXhwcmxpc3QsIExpc3QgKm9wcmxpc3QpOworZXh0ZXJu IGJvb2wgcmVsYXRpb25faGFzX3VuaXF1ZV9pbmRleF9leHQoUGxhbm5lckluZm8gKnJvb3Qs IFJlbE9wdEluZm8gKnJlbCwKKwkJCQkJCQkJCQkgIExpc3QgKnJlc3RyaWN0bGlzdCwgTGlz dCAqZXhwcmxpc3QsCisJCQkJCQkJCQkJICBMaXN0ICpvcHJsaXN0LCBMaXN0ICoqZXh0cmFf Y2xhdXNlcyk7CiBleHRlcm4gYm9vbCBpbmRleGNvbF9pc19ib29sX2NvbnN0YW50X2Zvcl9x dWVyeShQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJCQkJCUluZGV4T3B0SW5mbyAqaW5k ZXgsCiAJCQkJCQkJCQkJCQlpbnQgaW5kZXhjb2wpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvb3B0aW1pemVyL3BsYW5tYWluLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGxhbm1h aW4uaAppbmRleCBmZWUzMzc4YmJlMy4uNWE5MzAxOTk2MTEgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL29wdGltaXplci9wbGFubWFpbi5oCisrKyBiL3NyYy9pbmNsdWRlL29wdGltaXpl ci9wbGFubWFpbi5oCkBAIC0yMCw2ICsyMCw3IEBACiAvKiBHVUMgcGFyYW1ldGVycyAqLwog I2RlZmluZSBERUZBVUxUX0NVUlNPUl9UVVBMRV9GUkFDVElPTiAwLjEKIGV4dGVybiBQR0RM TElNUE9SVCBkb3VibGUgY3Vyc29yX3R1cGxlX2ZyYWN0aW9uOworZXh0ZXJuIFBHRExMSU1Q T1JUIGJvb2wgZW5hYmxlX3NlbGZfam9pbl9lbGltaW5hdGlvbjsKIAogLyogcXVlcnlfcGxh bm5lciBjYWxsYmFjayB0byBjb21wdXRlIHF1ZXJ5X3BhdGhrZXlzICovCiB0eXBlZGVmIHZv aWQgKCpxdWVyeV9wYXRoa2V5c19jYWxsYmFjaykgKFBsYW5uZXJJbmZvICpyb290LCB2b2lk ICpleHRyYSk7CkBAIC0xMTMsNiArMTE0LDExIEBAIGV4dGVybiBib29sIHF1ZXJ5X2lzX2Rp c3RpbmN0X2ZvcihRdWVyeSAqcXVlcnksIExpc3QgKmNvbG5vcywgTGlzdCAqb3BpZHMpOwog ZXh0ZXJuIGJvb2wgaW5uZXJyZWxfaXNfdW5pcXVlKFBsYW5uZXJJbmZvICpyb290LAogCQkJ CQkJCSAgIFJlbGlkcyBqb2lucmVsaWRzLCBSZWxpZHMgb3V0ZXJyZWxpZHMsIFJlbE9wdElu Zm8gKmlubmVycmVsLAogCQkJCQkJCSAgIEpvaW5UeXBlIGpvaW50eXBlLCBMaXN0ICpyZXN0 cmljdGxpc3QsIGJvb2wgZm9yY2VfY2FjaGUpOworZXh0ZXJuIGJvb2wgaW5uZXJyZWxfaXNf dW5pcXVlX2V4dChQbGFubmVySW5mbyAqcm9vdCwgUmVsaWRzIGpvaW5yZWxpZHMsCisJCQkJ CQkJCSAgIFJlbGlkcyBvdXRlcnJlbGlkcywgUmVsT3B0SW5mbyAqaW5uZXJyZWwsCisJCQkJ CQkJCSAgIEpvaW5UeXBlIGpvaW50eXBlLCBMaXN0ICpyZXN0cmljdGxpc3QsCisJCQkJCQkJ CSAgIGJvb2wgZm9yY2VfY2FjaGUsIExpc3QgKip1Y2xhdXNlcyk7CitleHRlcm4gTGlzdCAq cmVtb3ZlX3VzZWxlc3Nfc2VsZl9qb2lucyhQbGFubmVySW5mbyAqcm9vdCwgTGlzdCAqam9p bnRyZWUpOwogCiAvKgogICogcHJvdG90eXBlcyBmb3IgcGxhbi9zZXRyZWZzLmMKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3Jld3JpdGUvcmV3cml0ZU1hbmlwLmggYi9zcmMvaW5jbHVk ZS9yZXdyaXRlL3Jld3JpdGVNYW5pcC5oCmluZGV4IDUxMjgyMzAzM2I5Li41ZWM0NzVjNjNl OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmV3cml0ZS9yZXdyaXRlTWFuaXAuaAorKysg Yi9zcmMvaW5jbHVkZS9yZXdyaXRlL3Jld3JpdGVNYW5pcC5oCkBAIC0xNSw2ICsxNSw3IEBA CiAjZGVmaW5lIFJFV1JJVEVNQU5JUF9ICiAKICNpbmNsdWRlICJub2Rlcy9wYXJzZW5vZGVz LmgiCisjaW5jbHVkZSAibm9kZXMvcGF0aG5vZGVzLmgiCiAKIHN0cnVjdCBBdHRyTWFwOwkJ CQkJLyogYXZvaWQgaW5jbHVkaW5nIGF0dG1hcC5oIGhlcmUgKi8KIApAQCAtNDEsMTEgKzQy LDE0IEBAIHR5cGVkZWYgZW51bSBSZXBsYWNlVmFyc05vTWF0Y2hPcHRpb24KIH0gUmVwbGFj ZVZhcnNOb01hdGNoT3B0aW9uOwogCiAKK2V4dGVybiBSZWxpZHMgYWRqdXN0X3JlbGlkX3Nl dChSZWxpZHMgcmVsaWRzLCBpbnQgb2xkcmVsaWQsIGludCBuZXdyZWxpZCk7CiBleHRlcm4g dm9pZCBDb21iaW5lUmFuZ2VUYWJsZXMoTGlzdCAqKmRzdF9ydGFibGUsIExpc3QgKipkc3Rf cGVybWluZm9zLAogCQkJCQkJCSAgIExpc3QgKnNyY19ydGFibGUsIExpc3QgKnNyY19wZXJt aW5mb3MpOwogZXh0ZXJuIHZvaWQgT2Zmc2V0VmFyTm9kZXMoTm9kZSAqbm9kZSwgaW50IG9m ZnNldCwgaW50IHN1YmxldmVsc191cCk7CiBleHRlcm4gdm9pZCBDaGFuZ2VWYXJOb2RlcyhO b2RlICpub2RlLCBpbnQgcnRfaW5kZXgsIGludCBuZXdfaW5kZXgsCiAJCQkJCQkgICBpbnQg c3VibGV2ZWxzX3VwKTsKK2V4dGVybiB2b2lkIENoYW5nZVZhck5vZGVzRXh0ZW5kZWQoTm9k ZSAqbm9kZSwgaW50IHJ0X2luZGV4LCBpbnQgbmV3X2luZGV4LAorCQkJCQkJCQkgICBpbnQg c3VibGV2ZWxzX3VwLCBib29sIGNoYW5nZV9SYW5nZVRibFJlZik7CiBleHRlcm4gdm9pZCBJ bmNyZW1lbnRWYXJTdWJsZXZlbHNVcChOb2RlICpub2RlLCBpbnQgZGVsdGFfc3VibGV2ZWxz X3VwLAogCQkJCQkJCQkJaW50IG1pbl9zdWJsZXZlbHNfdXApOwogZXh0ZXJuIHZvaWQgSW5j cmVtZW50VmFyU3VibGV2ZWxzVXBfcnRhYmxlKExpc3QgKnJ0YWJsZSwKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXF1aXZjbGFzcy5vdXQgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2VxdWl2Y2xhc3Mub3V0CmluZGV4IDU2MjI3NTA1MDA5Li5hZDhh YjI5NGZmNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9lcXVpdmNs YXNzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2VxdWl2Y2xhc3Mub3V0 CkBAIC00MzQsNiArNDM0LDM2IEBAIGV4cGxhaW4gKGNvc3RzIG9mZikKICAgIEZpbHRlcjog KCh1bmlxdWUxIElTIE5PVCBOVUxMKSBBTkQgKHVuaXF1ZTIgSVMgTk9UIE5VTEwpKQogKDIg cm93cykKIAorLS0gVGVzdCB0aGF0IGJyb2tlbiBFQ3MgYXJlIHByb2Nlc3NlZCBjb3JyZWN0 bHkgZHVyaW5nIHNlbGYgam9pbiByZW1vdmFsLgorLS0gRGlzYWJsZSBtZXJnZSBqb2lucyBz byB0aGF0IHdlIGRvbid0IGdldCBhbiBlcnJvciBhYm91dCBtaXNzaW5nIGNvbW11dGF0b3Iu CistLSBUZXN0IGJvdGggb3JpZW50YXRpb25zIG9mIHRoZSBqb2luIGNsYXVzZSwgYmVjYXVz ZSBvbmx5IG9uZSBvZiB0aGVtIGJyZWFrcworLS0gdGhlIEVDLgorc2V0IGVuYWJsZV9tZXJn ZWpvaW4gdG8gb2ZmOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3QgKiBmcm9tIGVj MCBtIGpvaW4gZWMwIG4gb24gbS5mZiA9IG4uZmYKKyAgam9pbiBlYzEgcCBvbiBtLmZmICsg bi5mZiA9IHAuZjE7CisgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE5lc3RlZCBMb29w CisgICBKb2luIEZpbHRlcjogKChuLmZmICsgbi5mZikgPSBwLmYxKQorICAgLT4gIFNlcSBT Y2FuIG9uIGVjMCBuCisgICAtPiAgTWF0ZXJpYWxpemUKKyAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBlYzEgcAorKDUgcm93cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3Qg KiBmcm9tIGVjMCBtIGpvaW4gZWMwIG4gb24gbS5mZiA9IG4uZmYKKyAgam9pbiBlYzEgcCBv biBwLmYxOjppbnQ4ID0gKG0uZmYgKyBuLmZmKTo6aW50OGFsaWFzMTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgTmVzdGVkIExvb3AKKyAgIEpvaW4gRmlsdGVyOiAoKHAuZjEpOjpiaWdp bnQgPSAoKG4uZmYgKyBuLmZmKSk6OmludDhhbGlhczEpCisgICAtPiAgU2VxIFNjYW4gb24g ZWMwIG4KKyAgIC0+ICBNYXRlcmlhbGl6ZQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGVj MSBwCisoNSByb3dzKQorCityZXNldCBlbmFibGVfbWVyZ2Vqb2luOwogLS0gdGhpcyBjb3Vs ZCBiZSBjb252ZXJ0ZWQsIGJ1dCBpc24ndCBhdCBwcmVzZW50CiBleHBsYWluIChjb3N0cyBv ZmYpCiAgIHNlbGVjdCAqIGZyb20gdGVuazEgd2hlcmUgdW5pcXVlMSA9IHVuaXF1ZTEgb3Ig dW5pcXVlMiA9IHVuaXF1ZTI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2pvaW4ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91dAppbmRl eCAzZmZjMDY2YjFmOC4uYTU3YmIxOGMyNGYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvam9pbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9q b2luLm91dApAQCAtNTk2Niw2ICs1OTY2LDI3IEBAIHNlbGVjdCBjLmlkLCBzcy5hIGZyb20g YwogICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGMKICg3IHJvd3MpCiAKKy0tIGNoZWNrIHRo ZSBjYXNlIHdoZW4gdGhlIHBsYWNlaG9sZGVyIHJlbGF0ZXMgdG8gYW4gb3V0ZXIgam9pbiBh bmQgaXRzCistLSBpbm5lciBpbiB0aGUgcHJlc3MgZmllbGQgYnV0IGFjdHVhbGx5IHVzZXMg b25seSB0aGUgb3V0ZXIgc2lkZSBvZiB0aGUgam9pbgorZXhwbGFpbiAoY29zdHMgb2ZmKQor U0VMRUNUIHEudmFsIEZST00gYiBMRUZUIEpPSU4gKAorICBTRUxFQ1QgKHExLnogSVMgTk9U IE5VTEwpIEFTIHZhbAorICBGUk9NIGIgTEVGVCBKT0lOICgKKyAgICBTRUxFQ1QgKHQxLmJf aWQgSVMgTk9UIE5VTEwpIEFTIHogRlJPTSBhIHQxIExFRlQgSk9JTiBhIHQyIFVTSU5HIChp ZCkKKyAgICApIEFTIHExCisgIE9OIHRydWUKKykgQVMgcSBPTiB0cnVlOworICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBOZXN0ZWQgTG9vcCBMZWZ0IEpvaW4KKyAgIC0+ ICBTZXEgU2NhbiBvbiBiCisgICAtPiAgTWF0ZXJpYWxpemUKKyAgICAgICAgIC0+ICBOZXN0 ZWQgTG9vcCBMZWZ0IEpvaW4KKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBiIGJf MQorICAgICAgICAgICAgICAgLT4gIE1hdGVyaWFsaXplCisgICAgICAgICAgICAgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gYSB0MQorKDcgcm93cykKKwogQ1JFQVRFIFRFTVAgVEFCTEUg cGFydGVkX2IgKGlkIGludCBQUklNQVJZIEtFWSkgcGFydGl0aW9uIGJ5IHJhbmdlKGlkKTsK IENSRUFURSBURU1QIFRBQkxFIHBhcnRlZF9iMSBwYXJ0aXRpb24gb2YgcGFydGVkX2IgZm9y IHZhbHVlcyBmcm9tICgwKSB0byAoMTApOwogLS0gdGVzdCBqb2luIHJlbW92YWxzIG9uIGEg cGFydGl0aW9uZWQgdGFibGUKQEAgLTYzNzcsNiArNjM5OCwxMDY4IEBAIHNlbGVjdCAqIGZy b20KIC0tLS0rLS0tLSstLS0tKy0tLS0KICgwIHJvd3MpCiAKKy0tCistLSB0ZXN0IHRoYXQg c2VtaS0gb3IgaW5uZXIgc2VsZi1qb2lucyBvbiBhIHVuaXF1ZSBjb2x1bW4gYXJlIHJlbW92 ZWQKKy0tCistLSBlbmFibGUgb25seSBuZXN0bG9vcCB0byBnZXQgbW9yZSBwcmVkaWN0YWJs ZSBwbGFucworc2V0IGVuYWJsZV9oYXNoam9pbiB0byBvZmY7CitzZXQgZW5hYmxlX21lcmdl am9pbiB0byBvZmY7CitjcmVhdGUgdGFibGUgc2ogKGEgaW50IHVuaXF1ZSwgYiBpbnQsIGMg aW50IHVuaXF1ZSk7CitpbnNlcnQgaW50byBzaiB2YWx1ZXMgKDEsIG51bGwsIDIpLCAobnVs bCwgMiwgbnVsbCksICgyLCAxLCAxKTsKK2FuYWx5emUgc2o7CistLSBUcml2aWFsIHNlbGYt am9pbiBjYXNlLgorZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0IHAuKiBmcm9tIHNqIHAs IHNqIHEgd2hlcmUgcS5hID0gcC5hIGFuZCBxLmIgPSBxLmEgLSAxOworICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gc2ogcQorICAg RmlsdGVyOiAoKGEgSVMgTk9UIE5VTEwpIEFORCAoYiA9IChhIC0gMSkpKQorKDIgcm93cykK Kworc2VsZWN0IHAuKiBmcm9tIHNqIHAsIHNqIHEgd2hlcmUgcS5hID0gcC5hIGFuZCBxLmIg PSBxLmEgLSAxOworIGEgfCBiIHwgYyAKKy0tLSstLS0rLS0tCisgMiB8IDEgfCAxCisoMSBy b3cpCisKKy0tIFNlbGYtam9pbiByZW1vdmFsIHBlcmZvcm1zIGFmdGVyIGEgc3VicXVlcnkg cHVsbC11cCBwcm9jZXNzIGFuZCBjb3VsZCByZW1vdmUKKy0tIHN1Y2gga2luZCBvZiBzZWxm LWpvaW4gdG9vLiBDaGVjayB0aGlzIG9wdGlvbi4KK2V4cGxhaW4gKGNvc3RzIG9mZikKK3Nl bGVjdCAqIGZyb20gc2ogcAord2hlcmUgZXhpc3RzIChzZWxlY3QgKiBmcm9tIHNqIHEKKyAg ICAgICAgICAgICAgd2hlcmUgcS5hID0gcC5hIGFuZCBxLmIgPCAxMCk7CisgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHNqIHEKKyAgIEZpbHRlcjog KChhIElTIE5PVCBOVUxMKSBBTkQgKGIgPCAxMCkpCisoMiByb3dzKQorCitzZWxlY3QgKiBm cm9tIHNqIHAKK3doZXJlIGV4aXN0cyAoc2VsZWN0ICogZnJvbSBzaiBxCisgICAgICAgICAg ICAgIHdoZXJlIHEuYSA9IHAuYSBhbmQgcS5iIDwgMTApOworIGEgfCBiIHwgYyAKKy0tLSst LS0rLS0tCisgMiB8IDEgfCAxCisoMSByb3cpCisKKy0tIERvbid0IHJlbW92ZSBzZWxmLWpv aW4gZm9yIHRoZSBjYXNlIG9mIGVxdWFsaXR5IG9mIHR3byBkaWZmZXJlbnQgdW5pcXVlIGNv bHVtbnMuCitleHBsYWluIChjb3N0cyBvZmYpCitzZWxlY3QgKiBmcm9tIHNqIHQxLCBzaiB0 MiB3aGVyZSB0MS5hID0gdDIuYyBhbmQgdDEuYiBpcyBub3QgbnVsbDsKKyAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgTmVzdGVkIExvb3AKKyAgIEpvaW4gRmlsdGVyOiAodDEuYSA9 IHQyLmMpCisgICAtPiAgU2VxIFNjYW4gb24gc2ogdDIKKyAgIC0+ICBNYXRlcmlhbGl6ZQor ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHNqIHQxCisgICAgICAgICAgICAgICBGaWx0ZXI6 IChiIElTIE5PVCBOVUxMKQorKDYgcm93cykKKworLS0gRW5zdXJlIHRoYXQgcmVsYXRpb25z IHdpdGggVEFCTEVTQU1QTEUgY2xhdXNlcyBhcmUgbm90IGNvbnNpZGVyZWQgYXMKKy0tIGNh bmRpZGF0ZXMgdG8gYmUgcmVtb3ZlZAorZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0ICog ZnJvbSBzaiB0MQorICAgIGpvaW4gbGF0ZXJhbAorICAgICAgKHNlbGVjdCAqIGZyb20gc2og dGFibGVzYW1wbGUgc3lzdGVtKHQxLmIpKSBzCisgICAgb24gdDEuYSA9IHMuYTsKKyAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTmVzdGVkIExvb3AKKyAgIC0+ICBTZXEgU2NhbiBv biBzaiB0MQorICAgLT4gIE1lbW9pemUKKyAgICAgICAgIENhY2hlIEtleTogdDEuYSwgdDEu YgorICAgICAgICAgQ2FjaGUgTW9kZTogYmluYXJ5CisgICAgICAgICAtPiAgU2FtcGxlIFNj YW4gb24gc2oKKyAgICAgICAgICAgICAgIFNhbXBsaW5nOiBzeXN0ZW0gKHQxLmIpCisgICAg ICAgICAgICAgICBGaWx0ZXI6ICh0MS5hID0gYSkKKyg4IHJvd3MpCisKKy0tIEVuc3VyZSB0 aGF0IFNKRSBkb2VzIG5vdCBmb3JtIGEgc2VsZi1yZWZlcmVudGlhbCBsYXRlcmFsIGRlcGVu ZGVuY3kKK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCAqIGZyb20gc2ogdDEKKyAgICBs ZWZ0IGpvaW4gbGF0ZXJhbAorICAgICAgKHNlbGVjdCB0MS5hIGFzIHQxYSwgKiBmcm9tIHNq IHQyKSBzCisgICAgb24gdHJ1ZQord2hlcmUgdDEuYSA9IHMuYTsKKyAgICAgICAgUVVFUlkg UExBTiAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4g b24gc2ogdDIKKyAgIEZpbHRlcjogKGEgSVMgTk9UIE5VTEwpCisoMiByb3dzKQorCistLSBE ZWdlbmVyYXRlZCBjYXNlLgorZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0ICogZnJvbQor ICAoc2VsZWN0IGEgYXMgeCBmcm9tIHNqIHdoZXJlIGZhbHNlKSBhcyBxMSwKKyAgKHNlbGVj dCBhIGFzIHkgZnJvbSBzaiB3aGVyZSBmYWxzZSkgYXMgcTIKK3doZXJlIHExLnggPSBxMi55 OworICAgICAgICBRVUVSWSBQTEFOICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgUmVzdWx0CisgICBPbmUtVGltZSBGaWx0ZXI6IGZhbHNlCisoMiByb3dzKQorCist LSBXZSBjYW4ndCB1c2UgYSBjcm9zcy1FQyBnZW5lcmF0ZWQgc2VsZiBqb2luIHF1YWwgYmVj YXVzZSBvZiBjdXJyZW50IGxvZ2ljIG9mCistLSB0aGUgZ2VuZXJhdGVfam9pbl9pbXBsaWVk X2VxdWFsaXRpZXMgcm91dGluZS4KK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCAqIGZy b20gc2ogdDEsIHNqIHQyIHdoZXJlIHQxLmEgPSB0MS5iIGFuZCB0MS5iID0gdDIuYiBhbmQg dDIuYiA9IHQyLmE7CisgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE5lc3RlZCBMb29wCisgICBKb2luIEZpbHRlcjog KHQxLmEgPSB0Mi5iKQorICAgLT4gIFNlcSBTY2FuIG9uIHNqIHQxCisgICAgICAgICBGaWx0 ZXI6IChhID0gYikKKyAgIC0+ICBTZXEgU2NhbiBvbiBzaiB0MgorICAgICAgICAgRmlsdGVy OiAoYiA9IGEpCisoNiByb3dzKQorCitleHBsYWluIChjb3N0cyBvZmYpCitzZWxlY3QgKiBm cm9tIHNqIHQxLCBzaiB0Miwgc2ogdDMKK3doZXJlIHQxLmEgPSB0MS5iIGFuZCB0MS5iID0g dDIuYiBhbmQgdDIuYiA9IHQyLmEgYW5kCisgICAgICB0MS5iID0gdDMuYiBhbmQgdDMuYiA9 IHQzLmE7CisgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE5lc3RlZCBMb29wCisgICBKb2luIEZp bHRlcjogKHQxLmEgPSB0My5iKQorICAgLT4gIE5lc3RlZCBMb29wCisgICAgICAgICBKb2lu IEZpbHRlcjogKHQxLmEgPSB0Mi5iKQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHNqIHQx CisgICAgICAgICAgICAgICBGaWx0ZXI6IChhID0gYikKKyAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBzaiB0MgorICAgICAgICAgICAgICAgRmlsdGVyOiAoYiA9IGEpCisgICAtPiAgU2Vx IFNjYW4gb24gc2ogdDMKKyAgICAgICAgIEZpbHRlcjogKGIgPSBhKQorKDEwIHJvd3MpCisK Ky0tIERvdWJsZSBzZWxmLWpvaW4gcmVtb3ZhbC4KKy0tIFVzZSBhIGNvbmRpdGlvbiBvbiAi YiArIDEiLCBub3Qgb24gImIiLCBmb3IgdGhlIHNlY29uZCBqb2luLCBzbyB0aGF0CistLSB0 aGUgZXF1aXZhbGVuY2UgY2xhc3MgaXMgZGlmZmVyZW50IGZyb20gdGhlIGZpcnN0IG9uZSwg YW5kIHdlIGNhbgorLS0gdGVzdCB0aGUgbm9uLWVjIGNvZGUgcGF0aC4KK2V4cGxhaW4gKGNv c3RzIG9mZikKK3NlbGVjdCAqCitmcm9tICBzaiB0MQorICAgICAgam9pbiBzaiB0MiBvbiB0 MS5hID0gdDIuYSBhbmQgdDEuYiA9IHQyLmIKKwkgIGpvaW4gc2ogdDMgb24gdDIuYSA9IHQz LmEgYW5kIHQyLmIgKyAxID0gdDMuYiArIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHNqIHQzCisgICBGaWx0ZXI6ICgo YSBJUyBOT1QgTlVMTCkgQU5EIChiIElTIE5PVCBOVUxMKSBBTkQgKChiICsgMSkgSVMgTk9U IE5VTEwpKQorKDIgcm93cykKKworLS0gc3Vic2VsZWN0IHRoYXQgcmVmZXJlbmNlcyB0aGUg cmVtb3ZlZCByZWxhdGlvbgorZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0IHQxLmEsIChz ZWxlY3QgYSBmcm9tIHNqIHdoZXJlIGEgPSB0Mi5hIGFuZCBhID0gdDEuYSkKK2Zyb20gc2og dDEsIHNqIHQyCit3aGVyZSB0MS5hID0gdDIuYTsKKyAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgU2VxIFNjYW4gb24gc2ogdDIKKyAgIEZpbHRlcjogKGEgSVMgTk9UIE5V TEwpCisgICBTdWJQbGFuIDEKKyAgICAgLT4gIFJlc3VsdAorICAgICAgICAgICBPbmUtVGlt ZSBGaWx0ZXI6ICh0Mi5hID0gdDIuYSkKKyAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHNq CisgICAgICAgICAgICAgICAgIEZpbHRlcjogKGEgPSB0Mi5hKQorKDcgcm93cykKKworLS0g c2VsZi1qb2luIHVuZGVyIG91dGVyIGpvaW4KK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVj dCAqIGZyb20gc2ogeCBqb2luIHNqIHkgb24geC5hID0geS5hCitsZWZ0IGpvaW4gaW50OF90 YmwgeiBvbiB4LmEgPSB6LnExOworICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBOZXN0ZWQgTG9v cCBMZWZ0IEpvaW4KKyAgIEpvaW4gRmlsdGVyOiAoeS5hID0gei5xMSkKKyAgIC0+ICBTZXEg U2NhbiBvbiBzaiB5CisgICAgICAgICBGaWx0ZXI6IChhIElTIE5PVCBOVUxMKQorICAgLT4g IE1hdGVyaWFsaXplCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gaW50OF90YmwgegorKDYg cm93cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0ICogZnJvbSBzaiB4IGpvaW4g c2ogeSBvbiB4LmEgPSB5LmEKK2xlZnQgam9pbiBpbnQ4X3RibCB6IG9uIHkuYSA9IHoucTE7 CisgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE5lc3RlZCBMb29wIExlZnQgSm9pbgorICAgSm9p biBGaWx0ZXI6ICh5LmEgPSB6LnExKQorICAgLT4gIFNlcSBTY2FuIG9uIHNqIHkKKyAgICAg ICAgIEZpbHRlcjogKGEgSVMgTk9UIE5VTEwpCisgICAtPiAgTWF0ZXJpYWxpemUKKyAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBpbnQ4X3RibCB6CisoNiByb3dzKQorCitleHBsYWluIChj b3N0cyBvZmYpCitzZWxlY3QgKiBmcm9tICgKKyAgc2VsZWN0IHQxLiosIHQyLmEgYXMgYXgg ZnJvbSBzaiB0MSBqb2luIHNqIHQyCisgIG9uICh0MS5hID0gdDIuYSBhbmQgdDEuYyAqIHQx LmMgPSB0Mi5jICsgMiBhbmQgdDIuYiBpcyBudWxsKQorKSBhcyBxMQorbGVmdCBqb2luCisg IChzZWxlY3QgdDMuKiBmcm9tIHNqIHQzLCBzaiB0NCB3aGVyZSB0My5jID0gdDQuYykgYXMg cTIKK29uIHExLmF4ID0gcTIuYTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgTmVzdGVkIExvb3AgTGVmdCBKb2luCisgICBKb2luIEZpbHRlcjog KHQyLmEgPSB0NC5hKQorICAgLT4gIFNlcSBTY2FuIG9uIHNqIHQyCisgICAgICAgICBGaWx0 ZXI6ICgoYiBJUyBOVUxMKSBBTkQgKGEgSVMgTk9UIE5VTEwpIEFORCAoKGMgKiBjKSA9IChj ICsgMikpKQorICAgLT4gIFNlcSBTY2FuIG9uIHNqIHQ0CisgICAgICAgICBGaWx0ZXI6IChj IElTIE5PVCBOVUxMKQorKDYgcm93cykKKworLS0gVGVzdCB0aGF0IHBsYWNlaG9sZGVycyBh cmUgdXBkYXRlZCBjb3JyZWN0bHkgYWZ0ZXIgam9pbiByZW1vdmFsCitleHBsYWluIChjb3N0 cyBvZmYpCitzZWxlY3QgKiBmcm9tICh2YWx1ZXMgKDEpKSB4CitsZWZ0IGpvaW4gKHNlbGVj dCBjb2FsZXNjZSh5LnExLCAxKSBmcm9tIGludDhfdGJsIHkKKwlyaWdodCBqb2luIHNqIGox IGlubmVyIGpvaW4gc2ogajIgb24gajEuYSA9IGoyLmEKKwlvbiB0cnVlKSB6CitvbiB0cnVl OworICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBOZXN0ZWQgTG9vcCBMZWZ0 IEpvaW4KKyAgIC0+ICBSZXN1bHQKKyAgIC0+ICBOZXN0ZWQgTG9vcCBMZWZ0IEpvaW4KKyAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzaiBqMgorICAgICAgICAgICAgICAgRmlsdGVyOiAo YSBJUyBOT1QgTlVMTCkKKyAgICAgICAgIC0+ICBNYXRlcmlhbGl6ZQorICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIGludDhfdGJsIHkKKyg3IHJvd3MpCisKKy0tIFRlc3QgdGhh dCByZWZlcmVuY2VzIHRvIHRoZSByZW1vdmVkIHJlbCBpbiBsYXRlcmFsIHN1YnF1ZXJpZXMg YXJlIHJlcGxhY2VkCistLSBjb3JyZWN0bHkgYWZ0ZXIgam9pbiByZW1vdmFsCitleHBsYWlu ICh2ZXJib3NlLCBjb3N0cyBvZmYpCitzZWxlY3QgdDMuYSBmcm9tIHNqIHQxCisJam9pbiBz aiB0MiBvbiB0MS5hID0gdDIuYQorCWpvaW4gbGF0ZXJhbCAoc2VsZWN0IHQxLmEgb2Zmc2V0 IDApIHQzIG9uIHRydWU7CisgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE5lc3RlZCBMb29wCisg ICBPdXRwdXQ6ICh0Mi5hKQorICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5zaiB0MgorICAg ICAgICAgT3V0cHV0OiB0Mi5hLCB0Mi5iLCB0Mi5jCisgICAgICAgICBGaWx0ZXI6ICh0Mi5h IElTIE5PVCBOVUxMKQorICAgLT4gIFJlc3VsdAorICAgICAgICAgT3V0cHV0OiB0Mi5hCiso NyByb3dzKQorCitleHBsYWluICh2ZXJib3NlLCBjb3N0cyBvZmYpCitzZWxlY3QgdDMuYSBm cm9tIHNqIHQxCisJam9pbiBzaiB0MiBvbiB0MS5hID0gdDIuYQorCWpvaW4gbGF0ZXJhbCAo c2VsZWN0ICogZnJvbSAoc2VsZWN0IHQxLmEgb2Zmc2V0IDApIG9mZnNldCAwKSB0MyBvbiB0 cnVlOworICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBOZXN0ZWQgTG9vcAorICAgT3V0cHV0OiAo dDIuYSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuc2ogdDIKKyAgICAgICAgIE91dHB1 dDogdDIuYSwgdDIuYiwgdDIuYworICAgICAgICAgRmlsdGVyOiAodDIuYSBJUyBOT1QgTlVM TCkKKyAgIC0+ICBSZXN1bHQKKyAgICAgICAgIE91dHB1dDogdDIuYQorKDcgcm93cykKKwor ZXhwbGFpbiAodmVyYm9zZSwgY29zdHMgb2ZmKQorc2VsZWN0IHQ0LmEgZnJvbSBzaiB0MQor CWpvaW4gc2ogdDIgb24gdDEuYSA9IHQyLmEKKwlqb2luIGxhdGVyYWwgKHNlbGVjdCB0My5h IGZyb20gc2ogdDMsIChzZWxlY3QgdDEuYSkgb2Zmc2V0IDApIHQ0IG9uIHRydWU7CisgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIE5lc3RlZCBMb29wCisgICBPdXRwdXQ6IHQzLmEKKyAgIC0+ ICBTZXEgU2NhbiBvbiBwdWJsaWMuc2ogdDIKKyAgICAgICAgIE91dHB1dDogdDIuYSwgdDIu YiwgdDIuYworICAgICAgICAgRmlsdGVyOiAodDIuYSBJUyBOT1QgTlVMTCkKKyAgIC0+ICBT ZXEgU2NhbiBvbiBwdWJsaWMuc2ogdDMKKyAgICAgICAgIE91dHB1dDogdDMuYQorKDcgcm93 cykKKworLS0gQ2hlY2sgdXBkYXRpbmcgb2Ygc2VtaV9yaHNfZXhwcnMgbGlua3MgZnJvbSB1 cHBlci1sZXZlbCBzZW1pIGpvaW4gdG8KKy0tIHRoZSByZW1vdmluZyByZWxhdGlvbgorZXhw bGFpbiAodmVyYm9zZSwgY29zdHMgb2ZmKQorc2VsZWN0IHQxLmEgZnJvbSBzaiB0MSB3aGVy ZSB0MS5iIGluICgKKyAgc2VsZWN0IHQyLmIgZnJvbSBzaiB0MiBqb2luIHNqIHQzIG9uIHQy LmM9dDMuYyk7CisgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE5lc3RlZCBM b29wIFNlbWkgSm9pbgorICAgT3V0cHV0OiB0MS5hCisgICBKb2luIEZpbHRlcjogKHQxLmIg PSB0My5iKQorICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5zaiB0MQorICAgICAgICAgT3V0 cHV0OiB0MS5hLCB0MS5iLCB0MS5jCisgICAtPiAgTWF0ZXJpYWxpemUKKyAgICAgICAgIE91 dHB1dDogdDMuYywgdDMuYgorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5zaiB0 MworICAgICAgICAgICAgICAgT3V0cHV0OiB0My5jLCB0My5iCisgICAgICAgICAgICAgICBG aWx0ZXI6ICh0My5jIElTIE5PVCBOVUxMKQorKDEwIHJvd3MpCisKKy0tCistLSBTSkUgY29y bmVyIGNhc2U6IHVuaXF1ZW5lc3Mgb2YgYW4gaW5uZXIgaXMgW3BhcnRpYWxseV0gZGVyaXZl ZCBmcm9tCistLSBiYXNlcmVzdHJpY3RpbmZvIGNsYXVzZXMuCistLSBYWFg6IFdlIHJlYWxs eSBzaG91bGQgYWxsb3cgU0pFIGZvciB0aGVzZSBjb3JuZXIgY2FzZXM/CistLQorSU5TRVJU IElOVE8gc2ogVkFMVUVTICgzLCAxLCAzKTsKKy0tIERvbid0IHJlbW92ZSBTSgorRVhQTEFJ TiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSBzaiBqMSwgc2ogajIgV0hFUkUgajEuYiA9 IGoyLmIgQU5EIGoxLmEgPSAyIEFORCBqMi5hID0gMzsKKyAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTmVzdGVkIExv b3AKKyAgIEpvaW4gRmlsdGVyOiAoajEuYiA9IGoyLmIpCisgICAtPiAgU2VxIFNjYW4gb24g c2ogajEKKyAgICAgICAgIEZpbHRlcjogKGEgPSAyKQorICAgLT4gIFNlcSBTY2FuIG9uIHNq IGoyCisgICAgICAgICBGaWx0ZXI6IChhID0gMykKKyg2IHJvd3MpCisKKy0tIFJldHVybiBv bmUgcm93CitTRUxFQ1QgKiBGUk9NIHNqIGoxLCBzaiBqMiBXSEVSRSBqMS5iID0gajIuYiBB TkQgajEuYSA9IDIgQU5EIGoyLmEgPSAzOworIGEgfCBiIHwgYyB8IGEgfCBiIHwgYyAKKy0t LSstLS0rLS0tKy0tLSstLS0rLS0tCisgMiB8IDEgfCAxIHwgMyB8IDEgfCAzCisoMSByb3cp CisKKy0tIFJlbW92ZSBTSiwgZGVmaW5lIHVuaXF1ZW5lc3MgYnkgYSBjb25zdGFudAorRVhQ TEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSBzaiBqMSwgc2ogajIgV0hFUkUgajEu YiA9IGoyLmIgQU5EIGoxLmEgPSAyIEFORCBqMi5hID0gMjsKKyAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHNqIGoyCisgICBGaWx0ZXI6ICgoYiBJUyBO T1QgTlVMTCkgQU5EIChhID0gMikpCisoMiByb3dzKQorCistLSBSZXR1cm4gb25lIHJvdwor U0VMRUNUICogRlJPTSBzaiBqMSwgc2ogajIgV0hFUkUgajEuYiA9IGoyLmIgQU5EIGoxLmEg PSAyIEFORCBqMi5hID0gMjsKKyBhIHwgYiB8IGMgfCBhIHwgYiB8IGMgCistLS0rLS0tKy0t LSstLS0rLS0tKy0tLQorIDIgfCAxIHwgMSB8IDIgfCAxIHwgMQorKDEgcm93KQorCistLSBS ZW1vdmUgU0osIGRlZmluZSB1bmlxdWVuZXNzIGJ5IGEgY29uc3RhbnQgZXhwcmVzc2lvbgor RVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSBzaiBqMSwgc2ogajIKK1dIRVJF IGoxLmIgPSBqMi5iCisgIEFORCBqMS5hID0gKEVYVFJBQ1QoRE9XIEZST00gY3VycmVudF90 aW1lc3RhbXAoMCkpLzE1ICsgMyk6OmludAorICBBTkQgKEVYVFJBQ1QoRE9XIEZST00gY3Vy cmVudF90aW1lc3RhbXAoMCkpLzE1ICsgMyk6OmludCA9IGoyLmE7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gc2ogajIKKyAgIEZpbHRlcjog KChiIElTIE5PVCBOVUxMKSBBTkQgKGEgPSAoKChFWFRSQUNUKGRvdyBGUk9NIENVUlJFTlRf VElNRVNUQU1QKDApKSAvICcxNSc6Om51bWVyaWMpICsgJzMnOjpudW1lcmljKSk6OmludGVn ZXIpKQorKDIgcm93cykKKworLS0gUmV0dXJuIG9uZSByb3cKK1NFTEVDVCAqIEZST00gc2og ajEsIHNqIGoyCitXSEVSRSBqMS5iID0gajIuYgorICBBTkQgajEuYSA9IChFWFRSQUNUKERP VyBGUk9NIGN1cnJlbnRfdGltZXN0YW1wKDApKS8xNSArIDMpOjppbnQKKyAgQU5EIChFWFRS QUNUKERPVyBGUk9NIGN1cnJlbnRfdGltZXN0YW1wKDApKS8xNSArIDMpOjppbnQgPSBqMi5h OworIGEgfCBiIHwgYyB8IGEgfCBiIHwgYyAKKy0tLSstLS0rLS0tKy0tLSstLS0rLS0tCisg MyB8IDEgfCAzIHwgMyB8IDEgfCAzCisoMSByb3cpCisKKy0tIFJlbW92ZSBTSgorRVhQTEFJ TiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSBzaiBqMSwgc2ogajIgV0hFUkUgajEuYiA9 IGoyLmIgQU5EIGoxLmEgPSAxIEFORCBqMi5hID0gMTsKKyAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHNqIGoyCisgICBGaWx0ZXI6ICgoYiBJUyBOT1Qg TlVMTCkgQU5EIChhID0gMSkpCisoMiByb3dzKQorCistLSBSZXR1cm4gbm8gcm93cworU0VM RUNUICogRlJPTSBzaiBqMSwgc2ogajIgV0hFUkUgajEuYiA9IGoyLmIgQU5EIGoxLmEgPSAx IEFORCBqMi5hID0gMTsKKyBhIHwgYiB8IGMgfCBhIHwgYiB8IGMgCistLS0rLS0tKy0tLSst LS0rLS0tKy0tLQorKDAgcm93cykKKworLS0gU2h1ZmZsZSBhIGNsYXVzZS4gUmVtb3ZlIFNK CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NIHNqIGoxLCBzaiBqMiBXSEVS RSBqMS5iID0gajIuYiBBTkQgMSA9IGoxLmEgQU5EIGoyLmEgPSAxOworICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gc2ogajIKKyAgIEZpbHRlcjogKChi IElTIE5PVCBOVUxMKSBBTkQgKGEgPSAxKSkKKygyIHJvd3MpCisKKy0tIFJldHVybiBubyBy b3dzCitTRUxFQ1QgKiBGUk9NIHNqIGoxLCBzaiBqMiBXSEVSRSBqMS5iID0gajIuYiBBTkQg MSA9IGoxLmEgQU5EIGoyLmEgPSAxOworIGEgfCBiIHwgYyB8IGEgfCBiIHwgYyAKKy0tLSst LS0rLS0tKy0tLSstLS0rLS0tCisoMCByb3dzKQorCistLSBTSkUgQ29ybmVyIGNhc2U6IGEg J2EueD1hLngnIGNsYXVzZSwgaGF2ZSByZXBsYWNlZCB3aXRoICdhLnggSVMgTk9UIE5VTEwn CistLSBhZnRlciBTSiBlbGltaW5hdGlvbiBpdCBzaG91bGRuJ3QgYmUgYSBtZXJnZWpvaW5h YmxlIGNsYXVzZS4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCB0NC4qCitGUk9NIChT RUxFQ1QgdDEuKiwgdDIuYSBBUyBhMSBGUk9NIHNqIHQxLCBzaiB0MiBXSEVSRSB0MS5iID0g dDIuYikgQVMgdDMKK0pPSU4gc2ogdDQgT04gKHQ0LmEgPSB0My5hKSBXSEVSRSB0My5hMSA9 IDQyOworICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBOZXN0ZWQgTG9vcAorICAgSm9pbiBGaWx0ZXI6ICh0 MS5iID0gdDIuYikKKyAgIC0+ICBTZXEgU2NhbiBvbiBzaiB0MgorICAgICAgICAgRmlsdGVy OiAoYSA9IDQyKQorICAgLT4gIFNlcSBTY2FuIG9uIHNqIHQxCisgICAgICAgICBGaWx0ZXI6 IChhIElTIE5PVCBOVUxMKQorKDYgcm93cykKKworU0VMRUNUIHQ0LioKK0ZST00gKFNFTEVD VCB0MS4qLCB0Mi5hIEFTIGExIEZST00gc2ogdDEsIHNqIHQyIFdIRVJFIHQxLmIgPSB0Mi5i KSBBUyB0MworSk9JTiBzaiB0NCBPTiAodDQuYSA9IHQzLmEpIFdIRVJFIHQzLmExID0gNDI7 CisgYSB8IGIgfCBjIAorLS0tKy0tLSstLS0KKygwIHJvd3MpCisKKy0tIEZ1bmN0aW9uYWwg aW5kZXgKK0NSRUFURSBVTklRVUUgSU5ERVggc2pfZm5faWR4IE9OIHNqKChhICogYSkpOwor LS0gUmVtb3ZlIFNKCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NIHNqIGox LCBzaiBqMgorCVdIRVJFIGoxLmIgPSBqMi5iIEFORCBqMS5hKmoxLmEgPSAxIEFORCBqMi5h KmoyLmEgPSAxOworICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgU2VxIFNjYW4gb24gc2ogajIKKyAgIEZpbHRlcjogKChiIElTIE5PVCBOVUxMKSBBTkQg KChhICogYSkgPSAxKSkKKygyIHJvd3MpCisKKy0tIERvbid0IHJlbW92ZSBTSgorRVhQTEFJ TiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSBzaiBqMSwgc2ogajIKKwlXSEVSRSBqMS5i ID0gajIuYiBBTkQgajEuYSpqMS5hID0gMSBBTkQgajIuYSpqMi5hID0gMjsKKyAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBOZXN0ZWQgTG9vcAorICAgSm9pbiBGaWx0ZXI6IChqMS5iID0gajIuYikKKyAgIC0+ ICBTZXEgU2NhbiBvbiBzaiBqMQorICAgICAgICAgRmlsdGVyOiAoKGEgKiBhKSA9IDEpCisg ICAtPiAgU2VxIFNjYW4gb24gc2ogajIKKyAgICAgICAgIEZpbHRlcjogKChhICogYSkgPSAy KQorKDYgcm93cykKKworLS0gUmVzdHJpY3Rpb24gY29udGFpbnMgZXhwcmVzc2lvbnMgaW4g Ym90aCBzaWRlcywgUmVtb3ZlIFNKLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICog RlJPTSBzaiBqMSwgc2ogajIKK1dIRVJFIGoxLmIgPSBqMi5iCisgIEFORCAoajEuYSpqMS5h KSA9IChFWFRSQUNUKERPVyBGUk9NIGN1cnJlbnRfdGltZXN0YW1wKDApKS8xNSArIDMpOjpp bnQKKyAgQU5EIChFWFRSQUNUKERPVyBGUk9NIGN1cnJlbnRfdGltZXN0YW1wKDApKS8xNSAr IDMpOjppbnQgPSAoajIuYSpqMi5hKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBzaiBqMgorICAgRmlsdGVyOiAoKGIg SVMgTk9UIE5VTEwpIEFORCAoKGEgKiBhKSA9ICgoKEVYVFJBQ1QoZG93IEZST00gQ1VSUkVO VF9USU1FU1RBTVAoMCkpIC8gJzE1Jzo6bnVtZXJpYykgKyAnMyc6Om51bWVyaWMpKTo6aW50 ZWdlcikpCisoMiByb3dzKQorCistLSBFbXB0eSBzZXQgb2Ygcm93cyBzaG91bGQgYmUgcmV0 dXJuZWQKK1NFTEVDVCAqIEZST00gc2ogajEsIHNqIGoyCitXSEVSRSBqMS5iID0gajIuYgor ICBBTkQgKGoxLmEqajEuYSkgPSAoRVhUUkFDVChET1cgRlJPTSBjdXJyZW50X3RpbWVzdGFt cCgwKSkvMTUgKyAzKTo6aW50CisgIEFORCAoRVhUUkFDVChET1cgRlJPTSBjdXJyZW50X3Rp bWVzdGFtcCgwKSkvMTUgKyAzKTo6aW50ID0gKGoyLmEqajIuYSk7CisgYSB8IGIgfCBjIHwg YSB8IGIgfCBjIAorLS0tKy0tLSstLS0rLS0tKy0tLSstLS0KKygwIHJvd3MpCisKKy0tIFJl c3RyaWN0aW9uIGNvbnRhaW5zIHZvbGF0aWxlIGZ1bmN0aW9uIC0gZGlzYWJsZSBTSkUgZmVh dHVyZS4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00gc2ogajEsIHNqIGoy CitXSEVSRSBqMS5iID0gajIuYgorICBBTkQgKGoxLmEqajEuYy8zKSA9IChyYW5kb20oKS8z ICsgMyk6OmludAorICBBTkQgKHJhbmRvbSgpLzMgKyAzKTo6aW50ID0gKGoyLmEqajIuYy8z KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIE5lc3RlZCBMb29wCisgICBKb2luIEZpbHRlcjogKGoxLmIgPSBqMi5iKQorICAg LT4gIFNlcSBTY2FuIG9uIHNqIGoxCisgICAgICAgICBGaWx0ZXI6ICgoKGEgKiBjKSAvIDMp ID0gKCgocmFuZG9tKCkgLyAnMyc6OmRvdWJsZSBwcmVjaXNpb24pICsgJzMnOjpkb3VibGUg cHJlY2lzaW9uKSk6OmludGVnZXIpCisgICAtPiAgU2VxIFNjYW4gb24gc2ogajIKKyAgICAg ICAgIEZpbHRlcjogKCgoKHJhbmRvbSgpIC8gJzMnOjpkb3VibGUgcHJlY2lzaW9uKSArICcz Jzo6ZG91YmxlIHByZWNpc2lvbikpOjppbnRlZ2VyID0gKChhICogYykgLyAzKSkKKyg2IHJv d3MpCisKKy0tIFJldHVybiBvbmUgcm93CitTRUxFQ1QgKiBGUk9NIHNqIGoxLCBzaiBqMgor V0hFUkUgajEuYiA9IGoyLmIKKyAgQU5EIChqMS5hKmoxLmMvMykgPSAocmFuZG9tKCkvMyAr IDMpOjppbnQKKyAgQU5EIChyYW5kb20oKS8zICsgMyk6OmludCA9IChqMi5hKmoyLmMvMyk7 CisgYSB8IGIgfCBjIHwgYSB8IGIgfCBjIAorLS0tKy0tLSstLS0rLS0tKy0tLSstLS0KKyAz IHwgMSB8IDMgfCAzIHwgMSB8IDMKKygxIHJvdykKKworLS0gTXVsdGlwbGUgZmlsdGVycwor Q1JFQVRFIFVOSVFVRSBJTkRFWCBzal90ZW1wX2lkeDEgT04gc2ooYSxiLGMpOworLS0gUmVt b3ZlIFNKCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NIHNqIGoxLCBzaiBq MgorCVdIRVJFIGoxLmIgPSBqMi5iIEFORCBqMS5hID0gMiBBTkQgajEuYyA9IDMgQU5EIGoy LmEgPSAyIEFORCAzID0gajIuYzsKKyAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHNqIGoyCisgICBGaWx0ZXI6 ICgoYiBJUyBOT1QgTlVMTCkgQU5EIChhID0gMikgQU5EIChjID0gMykpCisoMiByb3dzKQor CistLSBEb24ndCByZW1vdmUgU0oKK0VYUExBSU4gKENPU1RTIE9GRikKKwlTRUxFQ1QgKiBG Uk9NIHNqIGoxLCBzaiBqMgorCVdIRVJFIGoxLmIgPSBqMi5iIEFORCAyID0gajEuYSBBTkQg ajEuYyA9IDMgQU5EIGoyLmEgPSAxIEFORCAzID0gajIuYzsKKyAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgTmVzdGVkIExvb3AKKyAgIEpvaW4gRmlsdGVyOiAoajEuYiA9IGoyLmIp CisgICAtPiAgU2VxIFNjYW4gb24gc2ogajEKKyAgICAgICAgIEZpbHRlcjogKCgyID0gYSkg QU5EIChjID0gMykpCisgICAtPiAgU2VxIFNjYW4gb24gc2ogajIKKyAgICAgICAgIEZpbHRl cjogKChjID0gMykgQU5EIChhID0gMSkpCisoNiByb3dzKQorCitDUkVBVEUgVU5JUVVFIElO REVYIHNqX3RlbXBfaWR4IE9OIHNqKGEsYik7CistLSBEb24ndCByZW1vdmUgU0oKK0VYUExB SU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00gc2ogajEsIHNqIGoyIFdIRVJFIGoxLmIg PSBqMi5iIEFORCBqMS5hID0gMjsKKyAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTmVzdGVkIExvb3AKKyAgIEpvaW4g RmlsdGVyOiAoajEuYiA9IGoyLmIpCisgICAtPiAgU2VxIFNjYW4gb24gc2ogajEKKyAgICAg ICAgIEZpbHRlcjogKGEgPSAyKQorICAgLT4gIFNlcSBTY2FuIG9uIHNqIGoyCisoNSByb3dz KQorCistLSBEb24ndCByZW1vdmUgU0oKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAq IEZST00gc2ogajEsIHNqIGoyIFdIRVJFIGoxLmIgPSBqMi5iIEFORCAyID0gajIuYTsKKyAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgTmVzdGVkIExvb3AKKyAgIEpvaW4gRmlsdGVyOiAoajEuYiA9IGoyLmIpCisg ICAtPiAgU2VxIFNjYW4gb24gc2ogajIKKyAgICAgICAgIEZpbHRlcjogKDIgPSBhKQorICAg LT4gIFNlcSBTY2FuIG9uIHNqIGoxCisoNSByb3dzKQorCistLSBEb24ndCByZW1vdmUgU0oK K0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00gc2ogajEsIHNqIGoyIFdIRVJF IGoxLmIgPSBqMi5iIEFORCAoajEuYSA9IDEgT1IgajIuYSA9IDEpOworICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBOZXN0ZWQgTG9vcAorICAgSm9pbiBGaWx0ZXI6ICgoajEuYiA9IGoyLmIp IEFORCAoKGoxLmEgPSAxKSBPUiAoajIuYSA9IDEpKSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBz aiBqMQorICAgLT4gIE1hdGVyaWFsaXplCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gc2og ajIKKyg1IHJvd3MpCisKK0RST1AgSU5ERVggc2pfZm5faWR4LCBzal90ZW1wX2lkeDEsIHNq X3RlbXBfaWR4OworLS0gVGVzdCB0aGF0IE9SIHByZWRpY2F0ZWQgYXJlIHVwZGF0ZWQgY29y cmVjdGx5IGFmdGVyIGpvaW4gcmVtb3ZhbAorQ1JFQVRFIFRBQkxFIHRhYl93aXRoX2ZsYWcg KCBpZCBJTlQgUFJJTUFSWSBLRVksIGlzX2ZsYWcgU01BTExJTlQpOworQ1JFQVRFIElOREVY IGlkeF90ZXN0X2lzX2ZsYWcgT04gdGFiX3dpdGhfZmxhZyAoaXNfZmxhZyk7CitFWFBMQUlO IChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSB0YWJfd2l0aF9mbGFnCitXSEVS RQorCShpc19mbGFnIElTIE5VTEwgT1IgaXNfZmxhZyA9IDApCisJQU5EIGlkIElOIChTRUxF Q1QgaWQgRlJPTSB0YWJfd2l0aF9mbGFnIFdIRVJFIGlkIElOICgyLCAzKSk7CisgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRhYl93aXRo X2ZsYWcKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKGlkID0gQU5ZICgnezIsM30nOjppbnRl Z2VyW10pKQorICAgICAgICAgRmlsdGVyOiAoKGlzX2ZsYWcgSVMgTlVMTCkgT1IgKGlzX2Zs YWcgPSAwKSkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0YWJfd2l0aF9m bGFnX3BrZXkKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChpZCA9IEFOWSAoJ3syLDN9 Jzo6aW50ZWdlcltdKSkKKyg2IHJvd3MpCisKK0RST1AgVEFCTEUgdGFiX3dpdGhfZmxhZzsK Ky0tIEhBVklORyBjbGF1c2UKK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCBwLmIgZnJv bSBzaiBwIGpvaW4gc2ogcSBvbiBwLmEgPSBxLmEgZ3JvdXAgYnkgcC5iIGhhdmluZyBzdW0o cC5hKSA9IDE7CisgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEhhc2hBZ2dyZWdhdGUKKyAgIEdyb3VwIEtl eTogcS5iCisgICBGaWx0ZXI6IChzdW0ocS5hKSA9IDEpCisgICAtPiAgU2VxIFNjYW4gb24g c2ogcQorICAgICAgICAgRmlsdGVyOiAoYSBJUyBOT1QgTlVMTCkKKyg1IHJvd3MpCisKKy0t IHVwZGF0ZSBsYXRlcmFsIHJlZmVyZW5jZXMgYW5kIHJhbmdlIHRhYmxlIGVudHJ5IHJlZmVy ZW5jZQorZXhwbGFpbiAodmVyYm9zZSwgY29zdHMgb2ZmKQorc2VsZWN0IDEgZnJvbSAoc2Vs ZWN0IHguKiBmcm9tIHNqIHgsIHNqIHkgd2hlcmUgeC5hID0geS5hKSBxLAorICBsYXRlcmFs IGdlbmVyYXRlX3NlcmllcygxLCBxLmEpIGdzKGkpOworICAgICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBOZXN0ZWQgTG9vcAorICAg T3V0cHV0OiAxCisgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLnNqIHkKKyAgICAgICAgIE91 dHB1dDogeS5hLCB5LmIsIHkuYworICAgICAgICAgRmlsdGVyOiAoeS5hIElTIE5PVCBOVUxM KQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gcGdfY2F0YWxvZy5nZW5lcmF0ZV9zZXJpZXMg Z3MKKyAgICAgICAgIE91dHB1dDogZ3MuaQorICAgICAgICAgRnVuY3Rpb24gQ2FsbDogZ2Vu ZXJhdGVfc2VyaWVzKDEsIHkuYSkKKyg4IHJvd3MpCisKK2V4cGxhaW4gKHZlcmJvc2UsIGNv c3RzIG9mZikKK3NlbGVjdCAxIGZyb20gKHNlbGVjdCB5LiogZnJvbSBzaiB4LCBzaiB5IHdo ZXJlIHguYSA9IHkuYSkgcSwKKyAgbGF0ZXJhbCBnZW5lcmF0ZV9zZXJpZXMoMSwgcS5hKSBn cyhpKTsKKyAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgTmVzdGVkIExvb3AKKyAgIE91dHB1dDogMQorICAgLT4gIFNlcSBTY2Fu IG9uIHB1YmxpYy5zaiB5CisgICAgICAgICBPdXRwdXQ6IHkuYSwgeS5iLCB5LmMKKyAgICAg ICAgIEZpbHRlcjogKHkuYSBJUyBOT1QgTlVMTCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9u IHBnX2NhdGFsb2cuZ2VuZXJhdGVfc2VyaWVzIGdzCisgICAgICAgICBPdXRwdXQ6IGdzLmkK KyAgICAgICAgIEZ1bmN0aW9uIENhbGw6IGdlbmVyYXRlX3NlcmllcygxLCB5LmEpCisoOCBy b3dzKQorCistLSBUZXN0IHRoYXQgYSBub24tRUMtZGVyaXZlZCBqb2luIGNsYXVzZSBpcyBw cm9jZXNzZWQgY29ycmVjdGx5LiBVc2UgYW4KKy0tIG91dGVyIGpvaW4gc28gdGhhdCB3ZSBj YW4ndCBmb3JtIGFuIEVDLgorZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHNq IHAgam9pbiBzaiBxIG9uIHAuYSA9IHEuYQorICBsZWZ0IGpvaW4gc2ogciBvbiBwLmEgKyBx LmEgPSByLmE7CisgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE5lc3RlZCBMb29wIExlZnQgSm9p bgorICAgSm9pbiBGaWx0ZXI6ICgocS5hICsgcS5hKSA9IHIuYSkKKyAgIC0+ICBTZXEgU2Nh biBvbiBzaiBxCisgICAgICAgICBGaWx0ZXI6IChhIElTIE5PVCBOVUxMKQorICAgLT4gIE1h dGVyaWFsaXplCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gc2ogcgorKDYgcm93cykKKwor LS0gRklYTUUgdGhpcyBjb25zdGFudCBmYWxzZSBmaWx0ZXIgZG9lc24ndCBsb29rIGdvb2Qu IFNob3VsZCB3ZSBtZXJnZQorLS0gZXF1aXZhbGVuY2UgY2xhc3Nlcz8KK2V4cGxhaW4gKGNv c3RzIG9mZikKK3NlbGVjdCAqIGZyb20gc2ogcCwgc2ogcSB3aGVyZSBwLmEgPSBxLmEgYW5k IHAuYiA9IDEgYW5kIHEuYiA9IDI7CisgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBzaiBxCisgICBGaWx0ZXI6 ICgoYSBJUyBOT1QgTlVMTCkgQU5EIChiID0gMikgQU5EIChiID0gMSkpCisoMiByb3dzKQor CistLSBDaGVjayB0aGF0IGF0dHJfbmVlZGVkIGlzIHVwZGF0ZWQgY29ycmVjdGx5IGFmdGVy IHNlbGYtam9pbiByZW1vdmFsLiBJbiB0aGlzCistLSB0ZXN0LCB0aGUgam9pbiBvZiBqMSB3 aXRoIGoyIGlzIHJlbW92ZWQuIGsxLmIgaXMgcmVxdWlyZWQgYXQgZWl0aGVyIGoxIG9yIGoy LgorLS0gSWYgdGhpcyBpbmZvIGlzIGxvc3QsIGpvaW4gdGFyZ2V0bGlzdCBmb3IgKGsxLCBr Mikgd2lsbCBub3QgY29udGFpbiBrMS5iLgorLS0gVXNlIGluZGV4IHNjYW4gZm9yIGsxIHNv IHRoYXQgd2UgZG9uJ3QgZ2V0ICdiJyBmcm9tIHBoeXNpY2FsIHRsaXN0IHVzZWQgZm9yCist LSBzZXFzY2FuLiBBbHNvIGRpc2FibGUgcmVvcmRlcmluZyBvZiBqb2lucyBiZWNhdXNlIHRo aXMgdGVzdCBkZXBlbmRzIG9uIGEKKy0tIHBhcnRpY3VsYXIgam9pbiB0cmVlLgorY3JlYXRl IHRhYmxlIHNrIChhIGludCwgYiBpbnQpOworY3JlYXRlIGluZGV4IG9uIHNrKGEpOworc2V0 IGpvaW5fY29sbGFwc2VfbGltaXQgdG8gMTsKK3NldCBlbmFibGVfc2Vxc2NhbiB0byBvZmY7 CitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAxIGZyb20KKwkoc2sgazEgam9pbiBzayBr MiBvbiBrMS5hID0gazIuYSkKKwlqb2luIChzaiBqMSBqb2luIHNqIGoyIG9uIGoxLmEgPSBq Mi5hKSBvbiBqMS5iID0gazEuYjsKKyAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE5lc3RlZCBMb29wCisgICBKb2luIEZpbHRlcjog KGsxLmIgPSBqMi5iKQorICAgLT4gIE5lc3RlZCBMb29wCisgICAgICAgICAtPiAgSW5kZXgg U2NhbiB1c2luZyBza19hX2lkeCBvbiBzayBrMQorICAgICAgICAgLT4gIEluZGV4IE9ubHkg U2NhbiB1c2luZyBza19hX2lkeCBvbiBzayBrMgorICAgICAgICAgICAgICAgSW5kZXggQ29u ZDogKGEgPSBrMS5hKQorICAgLT4gIE1hdGVyaWFsaXplCisgICAgICAgICAtPiAgSW5kZXgg U2NhbiB1c2luZyBzal9hX2tleSBvbiBzaiBqMgorICAgICAgICAgICAgICAgSW5kZXggQ29u ZDogKGEgSVMgTk9UIE5VTEwpCisoOSByb3dzKQorCitleHBsYWluIChjb3N0cyBvZmYpIHNl bGVjdCAxIGZyb20KKwkoc2sgazEgam9pbiBzayBrMiBvbiBrMS5hID0gazIuYSkKKwlqb2lu IChzaiBqMSBqb2luIHNqIGoyIG9uIGoxLmEgPSBqMi5hKSBvbiBqMi5iID0gazEuYjsKKyAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IE5lc3RlZCBMb29wCisgICBKb2luIEZpbHRlcjogKGsxLmIgPSBqMi5iKQorICAgLT4gIE5l c3RlZCBMb29wCisgICAgICAgICAtPiAgSW5kZXggU2NhbiB1c2luZyBza19hX2lkeCBvbiBz ayBrMQorICAgICAgICAgLT4gIEluZGV4IE9ubHkgU2NhbiB1c2luZyBza19hX2lkeCBvbiBz ayBrMgorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgPSBrMS5hKQorICAgLT4gIE1h dGVyaWFsaXplCisgICAgICAgICAtPiAgSW5kZXggU2NhbiB1c2luZyBzal9hX2tleSBvbiBz aiBqMgorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgSVMgTk9UIE5VTEwpCisoOSBy b3dzKQorCityZXNldCBqb2luX2NvbGxhcHNlX2xpbWl0OworcmVzZXQgZW5hYmxlX3NlcXNj YW47CistLSBDaGVjayB0aGF0IGNsYXVzZXMgZnJvbSB0aGUgam9pbiBmaWx0ZXIgbGlzdCBp cyBub3QgbG9zdCBvbiB0aGUgc2VsZi1qb2luIHJlbW92YWwKK0NSRUFURSBUQUJMRSBlbXAx IChpZCBTRVJJQUwgUFJJTUFSWSBLRVkgTk9UIE5VTEwsIGNvZGUgaW50KTsKK0VYUExBSU4g KFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00gZW1wMSBlMSwgZW1wMSBlMiBX SEVSRSBlMS5pZCA9IGUyLmlkIEFORCBlMi5jb2RlIDw+IGUxLmNvZGU7CisgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHB1YmxpYy5lbXAxIGUyCisg ICBPdXRwdXQ6IGUyLmlkLCBlMi5jb2RlLCBlMi5pZCwgZTIuY29kZQorICAgRmlsdGVyOiAo ZTIuY29kZSA8PiBlMi5jb2RlKQorKDMgcm93cykKKworLS0gU2h1ZmZsZSBzZWxmLWpvaW5l ZCByZWxhdGlvbnMuIE9ubHkgaW4gdGhlIGNhc2Ugb2YgaXRlcmF0aXZlIGRlbGV0aW9uCist LSBhdHRlbXB0cyBleHBsYWlucyBvZiB0aGVzZSBxdWVyaWVzIHdpbGwgYmUgaWRlbnRpY2Fs LgorQ1JFQVRFIFVOSVFVRSBJTkRFWCBPTiBlbXAxKChpZCppZCkpOworRVhQTEFJTiAoQ09T VFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gZW1wMSBjMSwgZW1wMSBjMiwgZW1wMSBj MworV0hFUkUgYzEuaWQ9YzIuaWQgQU5EIGMxLmlkKmMyLmlkPWMzLmlkKmMzLmlkOworICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgU2VxIFNj YW4gb24gZW1wMSBjMworICAgICAgICAgRmlsdGVyOiAoKGlkICogaWQpIElTIE5PVCBOVUxM KQorKDMgcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZS T00gZW1wMSBjMSwgZW1wMSBjMiwgZW1wMSBjMworV0hFUkUgYzEuaWQ9YzMuaWQgQU5EIGMx LmlkKmMzLmlkPWMyLmlkKmMyLmlkOworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgQWdncmVnYXRlCisgICAtPiAgU2VxIFNjYW4gb24gZW1wMSBjMworICAgICAgICAgRmls dGVyOiAoKGlkICogaWQpIElTIE5PVCBOVUxMKQorKDMgcm93cykKKworRVhQTEFJTiAoQ09T VFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gZW1wMSBjMSwgZW1wMSBjMiwgZW1wMSBj MworV0hFUkUgYzMuaWQ9YzIuaWQgQU5EIGMzLmlkKmMyLmlkPWMxLmlkKmMxLmlkOworICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgU2VxIFNj YW4gb24gZW1wMSBjMworICAgICAgICAgRmlsdGVyOiAoKGlkICogaWQpIElTIE5PVCBOVUxM KQorKDMgcm93cykKKworLS0gQ2hlY2sgdGhlIHVzYWdlIG9mIGEgcGFyc2UgdHJlZSBieSB0 aGUgc2V0IG9wZXJhdGlvbnMgKGJ1ZyAjMTgxNzApCitFWFBMQUlOIChDT1NUUyBPRkYpCitT RUxFQ1QgYzEuY29kZSBGUk9NIGVtcDEgYzEgTEVGVCBKT0lOIGVtcDEgYzIgT04gYzEuaWQg PSBjMi5pZAorV0hFUkUgYzIuaWQgSVMgTk9UIE5VTEwKK0VYQ0VQVCBBTEwKK1NFTEVDVCBj My5jb2RlIEZST00gZW1wMSBjMzsKKyAgICAgICAgUVVFUlkgUExBTiAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSGFzaFNldE9wIEV4Y2VwdCBBbGwKKyAgIC0+ ICBTZXEgU2NhbiBvbiBlbXAxIGMyCisgICAtPiAgU2VxIFNjYW4gb24gZW1wMSBjMworKDMg cm93cykKKworLS0gQ2hlY2sgdGhhdCBTSkUgcmVtb3ZlcyByZWZlcmVuY2VzIGZyb20gUEhW cyBjb3JyZWN0bHkKK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCAqIGZyb20gZW1wMSB0 MSBsZWZ0IGpvaW4KKyAgICAoc2VsZWN0IGNvYWxlc2NlKHQzLmNvZGUsIDEpIGZyb20gZW1w MSB0MgorICAgICAgICBsZWZ0IGpvaW4gKGVtcDEgdDMgam9pbiBlbXAxIHQ0IG9uIHQzLmlk ID0gdDQuaWQpCisgICAgICAgIG9uIHRydWUpCitvbiB0cnVlOworICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBOZXN0ZWQgTG9vcCBMZWZ0IEpvaW4KKyAgIC0+ ICBTZXEgU2NhbiBvbiBlbXAxIHQxCisgICAtPiAgTWF0ZXJpYWxpemUKKyAgICAgICAgIC0+ ICBOZXN0ZWQgTG9vcCBMZWZ0IEpvaW4KKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBlbXAxIHQyCisgICAgICAgICAgICAgICAtPiAgTWF0ZXJpYWxpemUKKyAgICAgICAgICAg ICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBlbXAxIHQ0CisoNyByb3dzKQorCistLSBDaGVj ayB0aGF0IFNKRSByZW1vdmVzIHRoZSB3aG9sZSBQSFZzIGNvcnJlY3RseQorZXhwbGFpbiAo dmVyYm9zZSwgY29zdHMgb2ZmKQorc2VsZWN0IDEgZnJvbSBlbXAxIHQxIGxlZnQgam9pbgor ICAgICgoc2VsZWN0IDEgYXMgeCwgKiBmcm9tIGVtcDEgdDIpIHMxIGlubmVyIGpvaW4KKyAg ICAgICAgKHNlbGVjdCAqIGZyb20gZW1wMSB0MykgczIgb24gczEuaWQgPSBzMi5pZCkKKyAg ICBvbiB0cnVlCit3aGVyZSBzMS54ID0gMTsKKyAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBOZXN0ZWQgTG9vcAorICAgT3V0cHV0OiAxCisgICAtPiAgU2VxIFNjYW4gb24gcHVi bGljLmVtcDEgdDEKKyAgICAgICAgIE91dHB1dDogdDEuaWQsIHQxLmNvZGUKKyAgIC0+ICBN YXRlcmlhbGl6ZQorICAgICAgICAgT3V0cHV0OiB0My5pZAorICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHB1YmxpYy5lbXAxIHQzCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQzLmlkCisg ICAgICAgICAgICAgICBGaWx0ZXI6ICgxID0gMSkKKyg5IHJvd3MpCisKKy0tIENoZWNrIHRo YXQgUEhWcyBkbyBub3QgaW1wb3NlIGFueSBjb25zdHJhaW50cyBvbiByZW1vdmluZyBzZWxm IGpvaW5zCitleHBsYWluICh2ZXJib3NlLCBjb3N0cyBvZmYpCitzZWxlY3QgKiBmcm9tIGVt cDEgdDEgam9pbiBlbXAxIHQyIG9uIHQxLmlkID0gdDIuaWQgbGVmdCBqb2luCisgICAgbGF0 ZXJhbCAoc2VsZWN0IHQxLmlkIGFzIHQxaWQsICogZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwx KSB0MykgcyBvbiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE5lc3RlZCBMb29wIExlZnQgSm9pbgor ICAgT3V0cHV0OiB0Mi5pZCwgdDIuY29kZSwgdDIuaWQsIHQyLmNvZGUsICh0Mi5pZCksIHQz LnQzCisgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVtcDEgdDIKKyAgICAgICAgIE91dHB1 dDogdDIuaWQsIHQyLmNvZGUKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIHBnX2NhdGFsb2cu Z2VuZXJhdGVfc2VyaWVzIHQzCisgICAgICAgICBPdXRwdXQ6IHQzLnQzLCB0Mi5pZAorICAg ICAgICAgRnVuY3Rpb24gQ2FsbDogZ2VuZXJhdGVfc2VyaWVzKDEsIDEpCisoNyByb3dzKQor CitleHBsYWluICh2ZXJib3NlLCBjb3N0cyBvZmYpCitzZWxlY3QgKiBmcm9tIGdlbmVyYXRl X3NlcmllcygxLDEwKSB0MShpZCkgbGVmdCBqb2luCisgICAgbGF0ZXJhbCAoc2VsZWN0IHQx LmlkIGFzIHQxaWQsIHQyLmlkIGZyb20gZW1wMSB0MiBqb2luIGVtcDEgdDMgb24gdDIuaWQg PSB0My5pZCkKK29uIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE5lc3RlZCBMb29wIExlZnQgSm9pbgorICAgT3V0 cHV0OiB0MS5pZCwgKHQxLmlkKSwgdDMuaWQKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIHBn X2NhdGFsb2cuZ2VuZXJhdGVfc2VyaWVzIHQxCisgICAgICAgICBPdXRwdXQ6IHQxLmlkCisg ICAgICAgICBGdW5jdGlvbiBDYWxsOiBnZW5lcmF0ZV9zZXJpZXMoMSwgMTApCisgICAtPiAg U2VxIFNjYW4gb24gcHVibGljLmVtcDEgdDMKKyAgICAgICAgIE91dHB1dDogdDMuaWQsIHQx LmlkCisoNyByb3dzKQorCistLSBDaGVjayB0aGF0IFNKRSByZXBsYWNlcyBqb2luIGNsYXVz ZXMgaW52b2x2aW5nIHRoZSByZW1vdmVkIHJlbCBjb3JyZWN0bHkKK2V4cGxhaW4gKGNvc3Rz IG9mZikKK3NlbGVjdCAqIGZyb20gZW1wMSB0MQorICAgaW5uZXIgam9pbiBlbXAxIHQyIG9u IHQxLmlkID0gdDIuaWQKKyAgICBsZWZ0IGpvaW4gZW1wMSB0MyBvbiB0MS5pZCA+IDEgYW5k IHQxLmlkIDwgMjsKKyAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBOZXN0ZWQgTG9vcCBMZWZ0IEpvaW4KKyAgIEpvaW4gRmlsdGVyOiAoKHQyLmlkID4gMSkg QU5EICh0Mi5pZCA8IDIpKQorICAgLT4gIFNlcSBTY2FuIG9uIGVtcDEgdDIKKyAgIC0+ICBN YXRlcmlhbGl6ZQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGVtcDEgdDMKKyg1IHJvd3Mp CisKKy0tIENoZWNrIHRoYXQgU0pFIGRvZXNuJ3QgcmVwbGFjZSB0aGUgdGFyZ2V0IHJlbGF0 aW9uCitFWFBMQUlOIChDT1NUUyBPRkYpCitXSVRIIHQxIEFTIChTRUxFQ1QgKiBGUk9NIGVt cDEpCitVUERBVEUgZW1wMSBTRVQgY29kZSA9IHQxLmNvZGUgKyAxIEZST00gdDEKK1dIRVJF IHQxLmlkID0gZW1wMS5pZCBSRVRVUk5JTkcgZW1wMS5pZCwgZW1wMS5jb2RlLCB0MS5jb2Rl OworICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFVwZGF0ZSBvbiBlbXAxCisgICAtPiAgTmVzdGVkIExvb3AKKyAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBlbXAxCisgICAgICAgICAtPiAgSW5kZXggU2NhbiB1c2luZyBl bXAxX3BrZXkgb24gZW1wMSBlbXAxXzEKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChp ZCA9IGVtcDEuaWQpCisoNSByb3dzKQorCitJTlNFUlQgSU5UTyBlbXAxIFZBTFVFUyAoMSwg MSksICgyLCAxKTsKK1dJVEggdDEgQVMgKFNFTEVDVCAqIEZST00gZW1wMSkKK1VQREFURSBl bXAxIFNFVCBjb2RlID0gdDEuY29kZSArIDEgRlJPTSB0MQorV0hFUkUgdDEuaWQgPSBlbXAx LmlkIFJFVFVSTklORyBlbXAxLmlkLCBlbXAxLmNvZGUsIHQxLmNvZGU7CisgaWQgfCBjb2Rl IHwgY29kZSAKKy0tLS0rLS0tLS0tKy0tLS0tLQorICAxIHwgICAgMiB8ICAgIDEKKyAgMiB8 ICAgIDIgfCAgICAxCisoMiByb3dzKQorCitUUlVOQ0FURSBlbXAxOworRVhQTEFJTiAoQ09T VFMgT0ZGKQorVVBEQVRFIHNqIHNxIFNFVCBiID0gMSBGUk9NIHNqIGFzIHN6IFdIRVJFIHNx LmEgPSBzei5hOworICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFVwZGF0ZSBvbiBzaiBzcQor ICAgLT4gIE5lc3RlZCBMb29wCisgICAgICAgICBKb2luIEZpbHRlcjogKHNxLmEgPSBzei5h KQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHNqIHNxCisgICAgICAgICAtPiAgTWF0ZXJp YWxpemUKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzaiBzegorKDYgcm93cykK KworQ1JFQVRFIFJVTEUgc2pfZGVsX3J1bGUgQVMgT04gREVMRVRFIFRPIHNqCisgIERPIElO U1RFQUQKKyAgICBVUERBVEUgc2ogU0VUIGEgPSAxIFdIRVJFIGEgPSBvbGQuYTsKK0VYUExB SU4gKENPU1RTIE9GRikgREVMRVRFIEZST00gc2o7CisgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBVcGRhdGUgb24gc2ogc2pfMQorICAgLT4gIE5lc3RlZCBMb29wCisgICAgICAgICBK b2luIEZpbHRlcjogKHNqLmEgPSBzal8xLmEpCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24g c2ogc2pfMQorICAgICAgICAgLT4gIE1hdGVyaWFsaXplCisgICAgICAgICAgICAgICAtPiAg U2VxIFNjYW4gb24gc2oKKyg2IHJvd3MpCisKK0RST1AgUlVMRSBzal9kZWxfcnVsZSBPTiBz aiBDQVNDQURFOworLS0gQ2hlY2sgdGhhdCBTSkUgZG9lcyBub3QgbWlzdGFrZW5seSBvbWl0 IHF1YWwgY2xhdXNlcyAoYnVnICMxODE4NykKK2luc2VydCBpbnRvIGVtcDEgdmFsdWVzICgx LCAxKTsKK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCAxIGZyb20gZW1wMSBmdWxsIGpv aW4KKyAgICAoc2VsZWN0ICogZnJvbSBlbXAxIHQxIGpvaW4KKyAgICAgICAgZW1wMSB0MiBq b2luIGVtcDEgdDMgb24gdDIuaWQgPSB0My5pZAorICAgICAgICBvbiB0cnVlCisgICAgd2hl cmUgZmFsc2UpIHMgb24gdHJ1ZQord2hlcmUgZmFsc2U7CisgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBSZXN1bHQKKyAgIE9uZS1U aW1lIEZpbHRlcjogZmFsc2UKKygyIHJvd3MpCisKK3NlbGVjdCAxIGZyb20gZW1wMSBmdWxs IGpvaW4KKyAgICAoc2VsZWN0ICogZnJvbSBlbXAxIHQxIGpvaW4KKyAgICAgICAgZW1wMSB0 MiBqb2luIGVtcDEgdDMgb24gdDIuaWQgPSB0My5pZAorICAgICAgICBvbiB0cnVlCisgICAg d2hlcmUgZmFsc2UpIHMgb24gdHJ1ZQord2hlcmUgZmFsc2U7CisgP2NvbHVtbj8gCistLS0t LS0tLS0tCisoMCByb3dzKQorCistLSBDaGVjayB0aGF0IFNKRSBkb2VzIG5vdCBtaXN0YWtl bmx5IHJlLXVzZSBrbm93bGVkZ2Ugb2YgcmVsYXRpb24gdW5pcXVlbmVzcworLS0gbWFkZSB3 aXRoIGRpZmZlcmVudCBzZXQgb2YgcXVhbHMKK2luc2VydCBpbnRvIGVtcDEgdmFsdWVzICgy LCAxKTsKK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCAqIGZyb20gZW1wMSB0MSB3aGVy ZSBleGlzdHMgKHNlbGVjdCAqIGZyb20gZW1wMSB0MgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgd2hlcmUgdDIuaWQgPSB0MS5jb2RlIGFuZCB0Mi5jb2RlID4gMCk7 CisgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE5lc3RlZCBMb29w CisgICAtPiAgU2VxIFNjYW4gb24gZW1wMSB0MQorICAgLT4gIEluZGV4IFNjYW4gdXNpbmcg ZW1wMV9wa2V5IG9uIGVtcDEgdDIKKyAgICAgICAgIEluZGV4IENvbmQ6IChpZCA9IHQxLmNv ZGUpCisgICAgICAgICBGaWx0ZXI6IChjb2RlID4gMCkKKyg1IHJvd3MpCisKK3NlbGVjdCAq IGZyb20gZW1wMSB0MSB3aGVyZSBleGlzdHMgKHNlbGVjdCAqIGZyb20gZW1wMSB0MgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgdDIuaWQgPSB0MS5jb2Rl IGFuZCB0Mi5jb2RlID4gMCk7CisgaWQgfCBjb2RlIAorLS0tLSstLS0tLS0KKyAgMSB8ICAg IDEKKyAgMiB8ICAgIDEKKygyIHJvd3MpCisKKy0tIFdlIGNhbiByZW1vdmUgdGhlIGpvaW4g ZXZlbiBpZiB3ZSBmaW5kIHRoZSBqb2luIGNhbid0IGR1cGxpY2F0ZSByb3dzIGFuZAorLS0g dGhlIGJhc2UgcXVhbHMgb2YgZWFjaCBzaWRlIGFyZSBkaWZmZXJlbnQuICBJbiB0aGUgZm9s bG93aW5nIGNhc2Ugd2UgZW5kIHVwCistLSBtb3ZpbmcgcXVhbHMgb3ZlciB0byBzMSB0byBt YWtlIGl0IHNvIGl0IGNhbid0IG1hdGNoIGFueSByb3dzLgorY3JlYXRlIHRhYmxlIHNsKGEg aW50LCBiIGludCwgYyBpbnQpOworY3JlYXRlIHVuaXF1ZSBpbmRleCBvbiBzbChhLCBiKTsK K3ZhY3V1bSBhbmFseXplIHNsOworLS0gQm90aCBzaWRlcyBhcmUgdW5pcXVlLCBidXQgYmFz ZSBxdWFscyBhcmUgZGlmZmVyZW50CitleHBsYWluIChjb3N0cyBvZmYpCitzZWxlY3QgKiBm cm9tIHNsIHQxLCBzbCB0MiB3aGVyZSB0MS5hID0gdDIuYSBhbmQgdDEuYiA9IDEgYW5kIHQy LmIgPSAyOworICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBOZXN0ZWQgTG9vcAorICAgSm9pbiBGaWx0ZXI6ICh0MS5h ID0gdDIuYSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBzbCB0MQorICAgICAgICAgRmlsdGVyOiAo YiA9IDEpCisgICAtPiAgU2VxIFNjYW4gb24gc2wgdDIKKyAgICAgICAgIEZpbHRlcjogKGIg PSAyKQorKDYgcm93cykKKworLS0gQ2hlY2sgTnVsbFRlc3QgaW4gYmFzZXJlc3RyaWN0aW5m byBsaXN0CitleHBsYWluIChjb3N0cyBvZmYpCitzZWxlY3QgKiBmcm9tIHNsIHQxLCBzbCB0 Mgord2hlcmUgdDEuYSA9IHQyLmEgYW5kIHQxLmIgPSAxIGFuZCB0Mi5iID0gMgorICBhbmQg dDEuYyBJUyBOT1QgTlVMTCBhbmQgdDIuYyBJUyBOT1QgTlVMTAorICBhbmQgdDIuYiBJUyBO T1QgTlVMTCBhbmQgdDEuYiBJUyBOT1QgTlVMTAorICBhbmQgdDEuYSBJUyBOT1QgTlVMTCBh bmQgdDIuYSBJUyBOT1QgTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTmVzdGVkIExvb3AKKyAg IEpvaW4gRmlsdGVyOiAodDEuYSA9IHQyLmEpCisgICAtPiAgU2VxIFNjYW4gb24gc2wgdDEK KyAgICAgICAgIEZpbHRlcjogKChjIElTIE5PVCBOVUxMKSBBTkQgKGIgSVMgTk9UIE5VTEwp IEFORCAoYSBJUyBOT1QgTlVMTCkgQU5EIChiID0gMSkpCisgICAtPiAgU2VxIFNjYW4gb24g c2wgdDIKKyAgICAgICAgIEZpbHRlcjogKChjIElTIE5PVCBOVUxMKSBBTkQgKGIgSVMgTk9U IE5VTEwpIEFORCAoYSBJUyBOT1QgTlVMTCkgQU5EIChiID0gMikpCisoNiByb3dzKQorCitl eHBsYWluICh2ZXJib3NlLCBjb3N0cyBvZmYpCitzZWxlY3QgKiBmcm9tIHNsIHQxLCBzbCB0 Mgord2hlcmUgdDEuYiA9IHQyLmIgYW5kIHQyLmEgPSAzIGFuZCB0MS5hID0gMworICBhbmQg dDEuYyBJUyBOT1QgTlVMTCBhbmQgdDIuYyBJUyBOT1QgTlVMTAorICBhbmQgdDIuYiBJUyBO T1QgTlVMTCBhbmQgdDEuYiBJUyBOT1QgTlVMTAorICBhbmQgdDEuYSBJUyBOT1QgTlVMTCBh bmQgdDIuYSBJUyBOT1QgTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2Vx IFNjYW4gb24gcHVibGljLnNsIHQyCisgICBPdXRwdXQ6IHQyLmEsIHQyLmIsIHQyLmMsIHQy LmEsIHQyLmIsIHQyLmMKKyAgIEZpbHRlcjogKCh0Mi5jIElTIE5PVCBOVUxMKSBBTkQgKHQy LmIgSVMgTk9UIE5VTEwpIEFORCAodDIuYSBJUyBOT1QgTlVMTCkgQU5EICh0Mi5hID0gMykp CisoMyByb3dzKQorCistLSBKb2luIHF1YWwgaXNuJ3QgbWVyZ2Vqb2luYWJsZSwgYnV0IGlu bmVyIGlzIHVuaXF1ZS4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBuMi5hIEZST00g c2ogbjEsIHNqIG4yIFdIRVJFIG4xLmEgPD4gbjIuYSBBTkQgbjIuYSA9IDE7CisgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgTmVzdGVkIExvb3AKKyAgIEpvaW4gRmlsdGVyOiAobjEuYSA8PiBuMi5hKQorICAg LT4gIFNlcSBTY2FuIG9uIHNqIG4yCisgICAgICAgICBGaWx0ZXI6IChhID0gMSkKKyAgIC0+ ICBTZXEgU2NhbiBvbiBzaiBuMQorKDUgcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQor U0VMRUNUICogRlJPTQorKFNFTEVDVCBuMi5hIEZST00gc2ogbjEsIHNqIG4yIFdIRVJFIG4x LmEgPD4gbjIuYSkgcTAsIHNsCitXSEVSRSBxMC5hID0gMTsKKyAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBOZXN0 ZWQgTG9vcAorICAgSm9pbiBGaWx0ZXI6IChuMS5hIDw+IG4yLmEpCisgICAtPiAgTmVzdGVk IExvb3AKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzbAorICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHNqIG4yCisgICAgICAgICAgICAgICBGaWx0ZXI6IChhID0gMSkKKyAgIC0+ICBT ZXEgU2NhbiBvbiBzaiBuMQorKDcgcm93cykKKworLS0gQ2hlY2sgb3B0aW1pemF0aW9uIGRp c2FibGluZyBpZiBpdCB3aWxsIHZpb2xhdGUgc3BlY2lhbCBqb2luIGNvbmRpdGlvbnMuCist LSBUd28gaWRlbnRpY2FsIGpvaW5lZCByZWxhdGlvbnMgc2F0aXNmaWVzIHNlbGYgam9pbiBy ZW1vdmFsIGNvbmRpdGlvbnMgYnV0CistLSBzdGF5IGluIGRpZmZlcmVudCBzcGVjaWFsIGpv aW4gaW5mb3MuCitDUkVBVEUgVEFCTEUgc2pfdDEgKGlkIHNlcmlhbCwgYSBpbnQpOworQ1JF QVRFIFRBQkxFIHNqX3QyIChpZCBzZXJpYWwsIGEgaW50KTsKK0NSRUFURSBUQUJMRSBzal90 MyAoaWQgc2VyaWFsLCBhIGludCk7CitDUkVBVEUgVEFCTEUgc2pfdDQgKGlkIHNlcmlhbCwg YSBpbnQpOworQ1JFQVRFIFVOSVFVRSBJTkRFWCBPTiBzal90MyBVU0lORyBidHJlZSAoYSxp ZCk7CitDUkVBVEUgVU5JUVVFIElOREVYIE9OIHNqX3QyIFVTSU5HIGJ0cmVlIChpZCk7CitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NIHNqX3QxCitKT0lOICgKKwlTRUxF Q1Qgc2pfdDIuaWQgQVMgaWQgRlJPTSBzal90MgorCVdIRVJFIEVYSVNUUworCQkoCisJCVNF TEVDVCBUUlVFIEZST00gc2pfdDMsc2pfdDQgV0hFUkUgc2pfdDMuYSA9IDEgQU5EIHNqX3Qz LmlkID0gc2pfdDIuaWQKKwkJKQorCSkgdDJ0M3Q0CitPTiBzal90MS5pZCA9IHQydDN0NC5p ZAorSk9JTiAoCisJU0VMRUNUIHNqX3QyLmlkIEFTIGlkIEZST00gc2pfdDIKKwlXSEVSRSBF WElTVFMKKwkJKAorCQlTRUxFQ1QgVFJVRSBGUk9NIHNqX3QzLHNqX3Q0IFdIRVJFIHNqX3Qz LmEgPSAxIEFORCBzal90My5pZCA9IHNqX3QyLmlkCisJCSkKKwkpIF90MnQzdDQKK09OIHNq X3QxLmlkID0gX3QydDN0NC5pZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBOZXN0ZWQgTG9vcAorICAgSm9p biBGaWx0ZXI6IChzal90My5pZCA9IHNqX3QxLmlkKQorICAgLT4gIE5lc3RlZCBMb29wCisg ICAgICAgICBKb2luIEZpbHRlcjogKHNqX3QyLmlkID0gc2pfdDMuaWQpCisgICAgICAgICAt PiAgTmVzdGVkIExvb3AgU2VtaSBKb2luCisgICAgICAgICAgICAgICAtPiAgTmVzdGVkIExv b3AKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoQWdncmVnYXRlCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHNqX3QzLmlkCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgTmVzdGVkIExvb3AKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzal90NAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIE1hdGVyaWFsaXplCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBzal90MworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVjaGVjayBDb25kOiAoYSA9IDEp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0 bWFwIEluZGV4IFNjYW4gb24gc2pfdDNfYV9pZF9pZHgKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gMSkKKyAg ICAgICAgICAgICAgICAgICAgIC0+ICBJbmRleCBPbmx5IFNjYW4gdXNpbmcgc2pfdDJfaWRf aWR4IG9uIHNqX3QyIHNqX3QyXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4 IENvbmQ6IChpZCA9IHNqX3QzLmlkKQorICAgICAgICAgICAgICAgLT4gIE5lc3RlZCBMb29w CisgICAgICAgICAgICAgICAgICAgICAtPiAgSW5kZXggT25seSBTY2FuIHVzaW5nIHNqX3Qz X2FfaWRfaWR4IG9uIHNqX3QzIHNqX3QzXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IEluZGV4IENvbmQ6ICgoYSA9IDEpIEFORCAoaWQgPSBzal90My5pZCkpCisgICAgICAgICAg ICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gc2pfdDQgc2pfdDRfMQorICAgICAgICAgLT4g IEluZGV4IE9ubHkgU2NhbiB1c2luZyBzal90Ml9pZF9pZHggb24gc2pfdDIKKyAgICAgICAg ICAgICAgIEluZGV4IENvbmQ6IChpZCA9IHNqX3QyXzEuaWQpCisgICAtPiAgU2VxIFNjYW4g b24gc2pfdDEKKygyNCByb3dzKQorCistLQorLS0gVGVzdCBSb3dNYXJrcy1yZWxhdGVkIGNv ZGUKKy0tCistLSBCb3RoIHNpZGVzIGhhdmUgZXhwbGljaXQgTG9ja1Jvd3MgbWFya3MKK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBhMS5hIEZST00gc2ogYTEsc2ogYTIgV0hFUkUg KGExLmE9YTIuYSkgRk9SIFVQREFURTsKKyAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTG9ja1Jvd3MKKyAg IC0+ICBTZXEgU2NhbiBvbiBzaiBhMgorICAgICAgICAgRmlsdGVyOiAoYSBJUyBOT1QgTlVM TCkKKygzIHJvd3MpCisKK3Jlc2V0IGVuYWJsZV9oYXNoam9pbjsKK3Jlc2V0IGVuYWJsZV9t ZXJnZWpvaW47CiAtLQogLS0gVGVzdCBoaW50cyBnaXZlbiBvbiBpbmNvcnJlY3QgY29sdW1u IHJlZmVyZW5jZXMgYXJlIHVzZWZ1bAogLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9z eXN2aWV3cy5vdXQKaW5kZXggMzUyYWJjMGJkNDIuLjgzMjI4Y2ZjYTI5IDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dApAQCAtMTY4LDEwICsxNjgsMTEgQEAg c2VsZWN0IG5hbWUsIHNldHRpbmcgZnJvbSBwZ19zZXR0aW5ncyB3aGVyZSBuYW1lIGxpa2Ug J2VuYWJsZSUnOwogIGVuYWJsZV9wYXJ0aXRpb253aXNlX2FnZ3JlZ2F0ZSB8IG9mZgogIGVu YWJsZV9wYXJ0aXRpb253aXNlX2pvaW4gICAgICB8IG9mZgogIGVuYWJsZV9wcmVzb3J0ZWRf YWdncmVnYXRlICAgICB8IG9uCisgZW5hYmxlX3NlbGZfam9pbl9lbGltaW5hdGlvbiAgIHwg b24KICBlbmFibGVfc2Vxc2NhbiAgICAgICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9zb3J0 ICAgICAgICAgICAgICAgICAgICB8IG9uCiAgZW5hYmxlX3RpZHNjYW4gICAgICAgICAgICAg ICAgIHwgb24KLSgyMyByb3dzKQorKDI0IHJvd3MpCiAKIC0tIFRoZXJlIGFyZSBhbHdheXMg d2FpdCBldmVudCBkZXNjcmlwdGlvbnMgZm9yIHZhcmlvdXMgdHlwZXMuICBJbmplY3Rpb25Q b2ludAogLS0gbWF5IGJlIHByZXNlbnQgb3IgYWJzZW50LCBkZXBlbmRpbmcgb24gaGlzdG9y eSBzaW5jZSBsYXN0IHBvc3RtYXN0ZXIgc3RhcnQuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9lcXVpdmNsYXNzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2VxdWl2 Y2xhc3Muc3FsCmluZGV4IDI4ZWQ3OTEwZDAxLi43ZmMyMTU5MzQ5YiAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvZXF1aXZjbGFzcy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvZXF1aXZjbGFzcy5zcWwKQEAgLTI1OSw2ICsyNTksMjIgQEAgZHJvcCB1c2Vy IHJlZ3Jlc3NfdXNlcl9lY3Rlc3Q7CiBleHBsYWluIChjb3N0cyBvZmYpCiAgIHNlbGVjdCAq IGZyb20gdGVuazEgd2hlcmUgdW5pcXVlMSA9IHVuaXF1ZTEgYW5kIHVuaXF1ZTIgPSB1bmlx dWUyOwogCistLSBUZXN0IHRoYXQgYnJva2VuIEVDcyBhcmUgcHJvY2Vzc2VkIGNvcnJlY3Rs eSBkdXJpbmcgc2VsZiBqb2luIHJlbW92YWwuCistLSBEaXNhYmxlIG1lcmdlIGpvaW5zIHNv IHRoYXQgd2UgZG9uJ3QgZ2V0IGFuIGVycm9yIGFib3V0IG1pc3NpbmcgY29tbXV0YXRvci4K Ky0tIFRlc3QgYm90aCBvcmllbnRhdGlvbnMgb2YgdGhlIGpvaW4gY2xhdXNlLCBiZWNhdXNl IG9ubHkgb25lIG9mIHRoZW0gYnJlYWtzCistLSB0aGUgRUMuCitzZXQgZW5hYmxlX21lcmdl am9pbiB0byBvZmY7CisKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0ICogZnJvbSBl YzAgbSBqb2luIGVjMCBuIG9uIG0uZmYgPSBuLmZmCisgIGpvaW4gZWMxIHAgb24gbS5mZiAr IG4uZmYgPSBwLmYxOworCitleHBsYWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCAqIGZyb20g ZWMwIG0gam9pbiBlYzAgbiBvbiBtLmZmID0gbi5mZgorICBqb2luIGVjMSBwIG9uIHAuZjE6 OmludDggPSAobS5mZiArIG4uZmYpOjppbnQ4YWxpYXMxOworCityZXNldCBlbmFibGVfbWVy Z2Vqb2luOworCiAtLSB0aGlzIGNvdWxkIGJlIGNvbnZlcnRlZCwgYnV0IGlzbid0IGF0IHBy ZXNlbnQKIGV4cGxhaW4gKGNvc3RzIG9mZikKICAgc2VsZWN0ICogZnJvbSB0ZW5rMSB3aGVy ZSB1bmlxdWUxID0gdW5pcXVlMSBvciB1bmlxdWUyID0gdW5pcXVlMjsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW4uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv am9pbi5zcWwKaW5kZXggYzczNDllYWI5MzMuLmMyOWQxM2I5ZmVkIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9qb2luLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9qb2luLnNxbApAQCAtMjE3NSw2ICsyMTc1LDE3IEBAIHNlbGVjdCBjLmlkLCBzcy5hIGZy b20gYwogICBsZWZ0IGpvaW4gKHNlbGVjdCBkLmEgZnJvbSBvbmVyb3csIGQgbGVmdCBqb2lu IGIgb24gZC5hID0gYi5pZCkgc3MKICAgb24gYy5pZCA9IHNzLmE7CiAKKy0tIGNoZWNrIHRo ZSBjYXNlIHdoZW4gdGhlIHBsYWNlaG9sZGVyIHJlbGF0ZXMgdG8gYW4gb3V0ZXIgam9pbiBh bmQgaXRzCistLSBpbm5lciBpbiB0aGUgcHJlc3MgZmllbGQgYnV0IGFjdHVhbGx5IHVzZXMg b25seSB0aGUgb3V0ZXIgc2lkZSBvZiB0aGUgam9pbgorZXhwbGFpbiAoY29zdHMgb2ZmKQor U0VMRUNUIHEudmFsIEZST00gYiBMRUZUIEpPSU4gKAorICBTRUxFQ1QgKHExLnogSVMgTk9U IE5VTEwpIEFTIHZhbAorICBGUk9NIGIgTEVGVCBKT0lOICgKKyAgICBTRUxFQ1QgKHQxLmJf aWQgSVMgTk9UIE5VTEwpIEFTIHogRlJPTSBhIHQxIExFRlQgSk9JTiBhIHQyIFVTSU5HIChp ZCkKKyAgICApIEFTIHExCisgIE9OIHRydWUKKykgQVMgcSBPTiB0cnVlOworCiBDUkVBVEUg VEVNUCBUQUJMRSBwYXJ0ZWRfYiAoaWQgaW50IFBSSU1BUlkgS0VZKSBwYXJ0aXRpb24gYnkg cmFuZ2UoaWQpOwogQ1JFQVRFIFRFTVAgVEFCTEUgcGFydGVkX2IxIHBhcnRpdGlvbiBvZiBw YXJ0ZWRfYiBmb3IgdmFsdWVzIGZyb20gKDApIHRvICgxMCk7CiAKQEAgLTI0MDksNiArMjQy MCw0ODkgQEAgc2VsZWN0ICogZnJvbQogc2VsZWN0ICogZnJvbQogICBpbnQ4X3RibCB4IGpv aW4gKGludDRfdGJsIHggY3Jvc3Mgam9pbiBpbnQ0X3RibCB5KGZmKSkgaiBvbiBxMSA9IGYx OyAtLSBvawogCistLQorLS0gdGVzdCB0aGF0IHNlbWktIG9yIGlubmVyIHNlbGYtam9pbnMg b24gYSB1bmlxdWUgY29sdW1uIGFyZSByZW1vdmVkCistLQorCistLSBlbmFibGUgb25seSBu ZXN0bG9vcCB0byBnZXQgbW9yZSBwcmVkaWN0YWJsZSBwbGFucworc2V0IGVuYWJsZV9oYXNo am9pbiB0byBvZmY7CitzZXQgZW5hYmxlX21lcmdlam9pbiB0byBvZmY7CisKK2NyZWF0ZSB0 YWJsZSBzaiAoYSBpbnQgdW5pcXVlLCBiIGludCwgYyBpbnQgdW5pcXVlKTsKK2luc2VydCBp bnRvIHNqIHZhbHVlcyAoMSwgbnVsbCwgMiksIChudWxsLCAyLCBudWxsKSwgKDIsIDEsIDEp OworYW5hbHl6ZSBzajsKKworLS0gVHJpdmlhbCBzZWxmLWpvaW4gY2FzZS4KK2V4cGxhaW4g KGNvc3RzIG9mZikKK3NlbGVjdCBwLiogZnJvbSBzaiBwLCBzaiBxIHdoZXJlIHEuYSA9IHAu YSBhbmQgcS5iID0gcS5hIC0gMTsKK3NlbGVjdCBwLiogZnJvbSBzaiBwLCBzaiBxIHdoZXJl IHEuYSA9IHAuYSBhbmQgcS5iID0gcS5hIC0gMTsKKworLS0gU2VsZi1qb2luIHJlbW92YWwg cGVyZm9ybXMgYWZ0ZXIgYSBzdWJxdWVyeSBwdWxsLXVwIHByb2Nlc3MgYW5kIGNvdWxkIHJl bW92ZQorLS0gc3VjaCBraW5kIG9mIHNlbGYtam9pbiB0b28uIENoZWNrIHRoaXMgb3B0aW9u LgorZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0ICogZnJvbSBzaiBwCit3aGVyZSBleGlz dHMgKHNlbGVjdCAqIGZyb20gc2ogcQorICAgICAgICAgICAgICB3aGVyZSBxLmEgPSBwLmEg YW5kIHEuYiA8IDEwKTsKK3NlbGVjdCAqIGZyb20gc2ogcAord2hlcmUgZXhpc3RzIChzZWxl Y3QgKiBmcm9tIHNqIHEKKyAgICAgICAgICAgICAgd2hlcmUgcS5hID0gcC5hIGFuZCBxLmIg PCAxMCk7CisKKy0tIERvbid0IHJlbW92ZSBzZWxmLWpvaW4gZm9yIHRoZSBjYXNlIG9mIGVx dWFsaXR5IG9mIHR3byBkaWZmZXJlbnQgdW5pcXVlIGNvbHVtbnMuCitleHBsYWluIChjb3N0 cyBvZmYpCitzZWxlY3QgKiBmcm9tIHNqIHQxLCBzaiB0MiB3aGVyZSB0MS5hID0gdDIuYyBh bmQgdDEuYiBpcyBub3QgbnVsbDsKKworLS0gRW5zdXJlIHRoYXQgcmVsYXRpb25zIHdpdGgg VEFCTEVTQU1QTEUgY2xhdXNlcyBhcmUgbm90IGNvbnNpZGVyZWQgYXMKKy0tIGNhbmRpZGF0 ZXMgdG8gYmUgcmVtb3ZlZAorZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0ICogZnJvbSBz aiB0MQorICAgIGpvaW4gbGF0ZXJhbAorICAgICAgKHNlbGVjdCAqIGZyb20gc2ogdGFibGVz YW1wbGUgc3lzdGVtKHQxLmIpKSBzCisgICAgb24gdDEuYSA9IHMuYTsKKworLS0gRW5zdXJl IHRoYXQgU0pFIGRvZXMgbm90IGZvcm0gYSBzZWxmLXJlZmVyZW50aWFsIGxhdGVyYWwgZGVw ZW5kZW5jeQorZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0ICogZnJvbSBzaiB0MQorICAg IGxlZnQgam9pbiBsYXRlcmFsCisgICAgICAoc2VsZWN0IHQxLmEgYXMgdDFhLCAqIGZyb20g c2ogdDIpIHMKKyAgICBvbiB0cnVlCit3aGVyZSB0MS5hID0gcy5hOworCistLSBEZWdlbmVy YXRlZCBjYXNlLgorZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0ICogZnJvbQorICAoc2Vs ZWN0IGEgYXMgeCBmcm9tIHNqIHdoZXJlIGZhbHNlKSBhcyBxMSwKKyAgKHNlbGVjdCBhIGFz IHkgZnJvbSBzaiB3aGVyZSBmYWxzZSkgYXMgcTIKK3doZXJlIHExLnggPSBxMi55OworCist LSBXZSBjYW4ndCB1c2UgYSBjcm9zcy1FQyBnZW5lcmF0ZWQgc2VsZiBqb2luIHF1YWwgYmVj YXVzZSBvZiBjdXJyZW50IGxvZ2ljIG9mCistLSB0aGUgZ2VuZXJhdGVfam9pbl9pbXBsaWVk X2VxdWFsaXRpZXMgcm91dGluZS4KK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCAqIGZy b20gc2ogdDEsIHNqIHQyIHdoZXJlIHQxLmEgPSB0MS5iIGFuZCB0MS5iID0gdDIuYiBhbmQg dDIuYiA9IHQyLmE7CitleHBsYWluIChjb3N0cyBvZmYpCitzZWxlY3QgKiBmcm9tIHNqIHQx LCBzaiB0Miwgc2ogdDMKK3doZXJlIHQxLmEgPSB0MS5iIGFuZCB0MS5iID0gdDIuYiBhbmQg dDIuYiA9IHQyLmEgYW5kCisgICAgICB0MS5iID0gdDMuYiBhbmQgdDMuYiA9IHQzLmE7CisK Ky0tIERvdWJsZSBzZWxmLWpvaW4gcmVtb3ZhbC4KKy0tIFVzZSBhIGNvbmRpdGlvbiBvbiAi YiArIDEiLCBub3Qgb24gImIiLCBmb3IgdGhlIHNlY29uZCBqb2luLCBzbyB0aGF0CistLSB0 aGUgZXF1aXZhbGVuY2UgY2xhc3MgaXMgZGlmZmVyZW50IGZyb20gdGhlIGZpcnN0IG9uZSwg YW5kIHdlIGNhbgorLS0gdGVzdCB0aGUgbm9uLWVjIGNvZGUgcGF0aC4KK2V4cGxhaW4gKGNv c3RzIG9mZikKK3NlbGVjdCAqCitmcm9tICBzaiB0MQorICAgICAgam9pbiBzaiB0MiBvbiB0 MS5hID0gdDIuYSBhbmQgdDEuYiA9IHQyLmIKKwkgIGpvaW4gc2ogdDMgb24gdDIuYSA9IHQz LmEgYW5kIHQyLmIgKyAxID0gdDMuYiArIDE7CisKKy0tIHN1YnNlbGVjdCB0aGF0IHJlZmVy ZW5jZXMgdGhlIHJlbW92ZWQgcmVsYXRpb24KK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVj dCB0MS5hLCAoc2VsZWN0IGEgZnJvbSBzaiB3aGVyZSBhID0gdDIuYSBhbmQgYSA9IHQxLmEp Citmcm9tIHNqIHQxLCBzaiB0Mgord2hlcmUgdDEuYSA9IHQyLmE7CisKKy0tIHNlbGYtam9p biB1bmRlciBvdXRlciBqb2luCitleHBsYWluIChjb3N0cyBvZmYpCitzZWxlY3QgKiBmcm9t IHNqIHggam9pbiBzaiB5IG9uIHguYSA9IHkuYQorbGVmdCBqb2luIGludDhfdGJsIHogb24g eC5hID0gei5xMTsKKworZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0ICogZnJvbSBzaiB4 IGpvaW4gc2ogeSBvbiB4LmEgPSB5LmEKK2xlZnQgam9pbiBpbnQ4X3RibCB6IG9uIHkuYSA9 IHoucTE7CisKK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCAqIGZyb20gKAorICBzZWxl Y3QgdDEuKiwgdDIuYSBhcyBheCBmcm9tIHNqIHQxIGpvaW4gc2ogdDIKKyAgb24gKHQxLmEg PSB0Mi5hIGFuZCB0MS5jICogdDEuYyA9IHQyLmMgKyAyIGFuZCB0Mi5iIGlzIG51bGwpCisp IGFzIHExCitsZWZ0IGpvaW4KKyAgKHNlbGVjdCB0My4qIGZyb20gc2ogdDMsIHNqIHQ0IHdo ZXJlIHQzLmMgPSB0NC5jKSBhcyBxMgorb24gcTEuYXggPSBxMi5hOworCistLSBUZXN0IHRo YXQgcGxhY2Vob2xkZXJzIGFyZSB1cGRhdGVkIGNvcnJlY3RseSBhZnRlciBqb2luIHJlbW92 YWwKK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCAqIGZyb20gKHZhbHVlcyAoMSkpIHgK K2xlZnQgam9pbiAoc2VsZWN0IGNvYWxlc2NlKHkucTEsIDEpIGZyb20gaW50OF90YmwgeQor CXJpZ2h0IGpvaW4gc2ogajEgaW5uZXIgam9pbiBzaiBqMiBvbiBqMS5hID0gajIuYQorCW9u IHRydWUpIHoKK29uIHRydWU7CisKKy0tIFRlc3QgdGhhdCByZWZlcmVuY2VzIHRvIHRoZSBy ZW1vdmVkIHJlbCBpbiBsYXRlcmFsIHN1YnF1ZXJpZXMgYXJlIHJlcGxhY2VkCistLSBjb3Jy ZWN0bHkgYWZ0ZXIgam9pbiByZW1vdmFsCitleHBsYWluICh2ZXJib3NlLCBjb3N0cyBvZmYp CitzZWxlY3QgdDMuYSBmcm9tIHNqIHQxCisJam9pbiBzaiB0MiBvbiB0MS5hID0gdDIuYQor CWpvaW4gbGF0ZXJhbCAoc2VsZWN0IHQxLmEgb2Zmc2V0IDApIHQzIG9uIHRydWU7CisKK2V4 cGxhaW4gKHZlcmJvc2UsIGNvc3RzIG9mZikKK3NlbGVjdCB0My5hIGZyb20gc2ogdDEKKwlq b2luIHNqIHQyIG9uIHQxLmEgPSB0Mi5hCisJam9pbiBsYXRlcmFsIChzZWxlY3QgKiBmcm9t IChzZWxlY3QgdDEuYSBvZmZzZXQgMCkgb2Zmc2V0IDApIHQzIG9uIHRydWU7CisKK2V4cGxh aW4gKHZlcmJvc2UsIGNvc3RzIG9mZikKK3NlbGVjdCB0NC5hIGZyb20gc2ogdDEKKwlqb2lu IHNqIHQyIG9uIHQxLmEgPSB0Mi5hCisJam9pbiBsYXRlcmFsIChzZWxlY3QgdDMuYSBmcm9t IHNqIHQzLCAoc2VsZWN0IHQxLmEpIG9mZnNldCAwKSB0NCBvbiB0cnVlOworCistLSBDaGVj ayB1cGRhdGluZyBvZiBzZW1pX3Joc19leHBycyBsaW5rcyBmcm9tIHVwcGVyLWxldmVsIHNl bWkgam9pbiB0bworLS0gdGhlIHJlbW92aW5nIHJlbGF0aW9uCitleHBsYWluICh2ZXJib3Nl LCBjb3N0cyBvZmYpCitzZWxlY3QgdDEuYSBmcm9tIHNqIHQxIHdoZXJlIHQxLmIgaW4gKAor ICBzZWxlY3QgdDIuYiBmcm9tIHNqIHQyIGpvaW4gc2ogdDMgb24gdDIuYz10My5jKTsKKwor LS0KKy0tIFNKRSBjb3JuZXIgY2FzZTogdW5pcXVlbmVzcyBvZiBhbiBpbm5lciBpcyBbcGFy dGlhbGx5XSBkZXJpdmVkIGZyb20KKy0tIGJhc2VyZXN0cmljdGluZm8gY2xhdXNlcy4KKy0t IFhYWDogV2UgcmVhbGx5IHNob3VsZCBhbGxvdyBTSkUgZm9yIHRoZXNlIGNvcm5lciBjYXNl cz8KKy0tCisKK0lOU0VSVCBJTlRPIHNqIFZBTFVFUyAoMywgMSwgMyk7CisKKy0tIERvbid0 IHJlbW92ZSBTSgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSBzaiBqMSwg c2ogajIgV0hFUkUgajEuYiA9IGoyLmIgQU5EIGoxLmEgPSAyIEFORCBqMi5hID0gMzsKKy0t IFJldHVybiBvbmUgcm93CitTRUxFQ1QgKiBGUk9NIHNqIGoxLCBzaiBqMiBXSEVSRSBqMS5i ID0gajIuYiBBTkQgajEuYSA9IDIgQU5EIGoyLmEgPSAzOworCistLSBSZW1vdmUgU0osIGRl ZmluZSB1bmlxdWVuZXNzIGJ5IGEgY29uc3RhbnQKK0VYUExBSU4gKENPU1RTIE9GRikKK1NF TEVDVCAqIEZST00gc2ogajEsIHNqIGoyIFdIRVJFIGoxLmIgPSBqMi5iIEFORCBqMS5hID0g MiBBTkQgajIuYSA9IDI7CistLSBSZXR1cm4gb25lIHJvdworU0VMRUNUICogRlJPTSBzaiBq MSwgc2ogajIgV0hFUkUgajEuYiA9IGoyLmIgQU5EIGoxLmEgPSAyIEFORCBqMi5hID0gMjsK KworLS0gUmVtb3ZlIFNKLCBkZWZpbmUgdW5pcXVlbmVzcyBieSBhIGNvbnN0YW50IGV4cHJl c3Npb24KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00gc2ogajEsIHNqIGoy CitXSEVSRSBqMS5iID0gajIuYgorICBBTkQgajEuYSA9IChFWFRSQUNUKERPVyBGUk9NIGN1 cnJlbnRfdGltZXN0YW1wKDApKS8xNSArIDMpOjppbnQKKyAgQU5EIChFWFRSQUNUKERPVyBG Uk9NIGN1cnJlbnRfdGltZXN0YW1wKDApKS8xNSArIDMpOjppbnQgPSBqMi5hOworLS0gUmV0 dXJuIG9uZSByb3cKK1NFTEVDVCAqIEZST00gc2ogajEsIHNqIGoyCitXSEVSRSBqMS5iID0g ajIuYgorICBBTkQgajEuYSA9IChFWFRSQUNUKERPVyBGUk9NIGN1cnJlbnRfdGltZXN0YW1w KDApKS8xNSArIDMpOjppbnQKKyAgQU5EIChFWFRSQUNUKERPVyBGUk9NIGN1cnJlbnRfdGlt ZXN0YW1wKDApKS8xNSArIDMpOjppbnQgPSBqMi5hOworCistLSBSZW1vdmUgU0oKK0VYUExB SU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00gc2ogajEsIHNqIGoyIFdIRVJFIGoxLmIg PSBqMi5iIEFORCBqMS5hID0gMSBBTkQgajIuYSA9IDE7CistLSBSZXR1cm4gbm8gcm93cwor U0VMRUNUICogRlJPTSBzaiBqMSwgc2ogajIgV0hFUkUgajEuYiA9IGoyLmIgQU5EIGoxLmEg PSAxIEFORCBqMi5hID0gMTsKKworLS0gU2h1ZmZsZSBhIGNsYXVzZS4gUmVtb3ZlIFNKCitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NIHNqIGoxLCBzaiBqMiBXSEVSRSBq MS5iID0gajIuYiBBTkQgMSA9IGoxLmEgQU5EIGoyLmEgPSAxOworLS0gUmV0dXJuIG5vIHJv d3MKK1NFTEVDVCAqIEZST00gc2ogajEsIHNqIGoyIFdIRVJFIGoxLmIgPSBqMi5iIEFORCAx ID0gajEuYSBBTkQgajIuYSA9IDE7CisKKy0tIFNKRSBDb3JuZXIgY2FzZTogYSAnYS54PWEu eCcgY2xhdXNlLCBoYXZlIHJlcGxhY2VkIHdpdGggJ2EueCBJUyBOT1QgTlVMTCcKKy0tIGFm dGVyIFNKIGVsaW1pbmF0aW9uIGl0IHNob3VsZG4ndCBiZSBhIG1lcmdlam9pbmFibGUgY2xh dXNlLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHQ0LioKK0ZST00gKFNFTEVDVCB0 MS4qLCB0Mi5hIEFTIGExIEZST00gc2ogdDEsIHNqIHQyIFdIRVJFIHQxLmIgPSB0Mi5iKSBB UyB0MworSk9JTiBzaiB0NCBPTiAodDQuYSA9IHQzLmEpIFdIRVJFIHQzLmExID0gNDI7CitT RUxFQ1QgdDQuKgorRlJPTSAoU0VMRUNUIHQxLiosIHQyLmEgQVMgYTEgRlJPTSBzaiB0MSwg c2ogdDIgV0hFUkUgdDEuYiA9IHQyLmIpIEFTIHQzCitKT0lOIHNqIHQ0IE9OICh0NC5hID0g dDMuYSkgV0hFUkUgdDMuYTEgPSA0MjsKKworLS0gRnVuY3Rpb25hbCBpbmRleAorQ1JFQVRF IFVOSVFVRSBJTkRFWCBzal9mbl9pZHggT04gc2ooKGEgKiBhKSk7CisKKy0tIFJlbW92ZSBT SgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSBzaiBqMSwgc2ogajIKKwlX SEVSRSBqMS5iID0gajIuYiBBTkQgajEuYSpqMS5hID0gMSBBTkQgajIuYSpqMi5hID0gMTsK Ky0tIERvbid0IHJlbW92ZSBTSgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJP TSBzaiBqMSwgc2ogajIKKwlXSEVSRSBqMS5iID0gajIuYiBBTkQgajEuYSpqMS5hID0gMSBB TkQgajIuYSpqMi5hID0gMjsKKworLS0gUmVzdHJpY3Rpb24gY29udGFpbnMgZXhwcmVzc2lv bnMgaW4gYm90aCBzaWRlcywgUmVtb3ZlIFNKLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VM RUNUICogRlJPTSBzaiBqMSwgc2ogajIKK1dIRVJFIGoxLmIgPSBqMi5iCisgIEFORCAoajEu YSpqMS5hKSA9IChFWFRSQUNUKERPVyBGUk9NIGN1cnJlbnRfdGltZXN0YW1wKDApKS8xNSAr IDMpOjppbnQKKyAgQU5EIChFWFRSQUNUKERPVyBGUk9NIGN1cnJlbnRfdGltZXN0YW1wKDAp KS8xNSArIDMpOjppbnQgPSAoajIuYSpqMi5hKTsKKy0tIEVtcHR5IHNldCBvZiByb3dzIHNo b3VsZCBiZSByZXR1cm5lZAorU0VMRUNUICogRlJPTSBzaiBqMSwgc2ogajIKK1dIRVJFIGox LmIgPSBqMi5iCisgIEFORCAoajEuYSpqMS5hKSA9IChFWFRSQUNUKERPVyBGUk9NIGN1cnJl bnRfdGltZXN0YW1wKDApKS8xNSArIDMpOjppbnQKKyAgQU5EIChFWFRSQUNUKERPVyBGUk9N IGN1cnJlbnRfdGltZXN0YW1wKDApKS8xNSArIDMpOjppbnQgPSAoajIuYSpqMi5hKTsKKwor LS0gUmVzdHJpY3Rpb24gY29udGFpbnMgdm9sYXRpbGUgZnVuY3Rpb24gLSBkaXNhYmxlIFNK RSBmZWF0dXJlLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSBzaiBqMSwg c2ogajIKK1dIRVJFIGoxLmIgPSBqMi5iCisgIEFORCAoajEuYSpqMS5jLzMpID0gKHJhbmRv bSgpLzMgKyAzKTo6aW50CisgIEFORCAocmFuZG9tKCkvMyArIDMpOjppbnQgPSAoajIuYSpq Mi5jLzMpOworLS0gUmV0dXJuIG9uZSByb3cKK1NFTEVDVCAqIEZST00gc2ogajEsIHNqIGoy CitXSEVSRSBqMS5iID0gajIuYgorICBBTkQgKGoxLmEqajEuYy8zKSA9IChyYW5kb20oKS8z ICsgMyk6OmludAorICBBTkQgKHJhbmRvbSgpLzMgKyAzKTo6aW50ID0gKGoyLmEqajIuYy8z KTsKKworLS0gTXVsdGlwbGUgZmlsdGVycworQ1JFQVRFIFVOSVFVRSBJTkRFWCBzal90ZW1w X2lkeDEgT04gc2ooYSxiLGMpOworCistLSBSZW1vdmUgU0oKK0VYUExBSU4gKENPU1RTIE9G RikKK1NFTEVDVCAqIEZST00gc2ogajEsIHNqIGoyCisJV0hFUkUgajEuYiA9IGoyLmIgQU5E IGoxLmEgPSAyIEFORCBqMS5jID0gMyBBTkQgajIuYSA9IDIgQU5EIDMgPSBqMi5jOworCist LSBEb24ndCByZW1vdmUgU0oKK0VYUExBSU4gKENPU1RTIE9GRikKKwlTRUxFQ1QgKiBGUk9N IHNqIGoxLCBzaiBqMgorCVdIRVJFIGoxLmIgPSBqMi5iIEFORCAyID0gajEuYSBBTkQgajEu YyA9IDMgQU5EIGoyLmEgPSAxIEFORCAzID0gajIuYzsKKworQ1JFQVRFIFVOSVFVRSBJTkRF WCBzal90ZW1wX2lkeCBPTiBzaihhLGIpOworCistLSBEb24ndCByZW1vdmUgU0oKK0VYUExB SU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00gc2ogajEsIHNqIGoyIFdIRVJFIGoxLmIg PSBqMi5iIEFORCBqMS5hID0gMjsKKworLS0gRG9uJ3QgcmVtb3ZlIFNKCitFWFBMQUlOIChD T1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NIHNqIGoxLCBzaiBqMiBXSEVSRSBqMS5iID0gajIu YiBBTkQgMiA9IGoyLmE7CisKKy0tIERvbid0IHJlbW92ZSBTSgorRVhQTEFJTiAoQ09TVFMg T0ZGKQorU0VMRUNUICogRlJPTSBzaiBqMSwgc2ogajIgV0hFUkUgajEuYiA9IGoyLmIgQU5E IChqMS5hID0gMSBPUiBqMi5hID0gMSk7CisKK0RST1AgSU5ERVggc2pfZm5faWR4LCBzal90 ZW1wX2lkeDEsIHNqX3RlbXBfaWR4OworCistLSBUZXN0IHRoYXQgT1IgcHJlZGljYXRlZCBh cmUgdXBkYXRlZCBjb3JyZWN0bHkgYWZ0ZXIgam9pbiByZW1vdmFsCitDUkVBVEUgVEFCTEUg dGFiX3dpdGhfZmxhZyAoIGlkIElOVCBQUklNQVJZIEtFWSwgaXNfZmxhZyBTTUFMTElOVCk7 CitDUkVBVEUgSU5ERVggaWR4X3Rlc3RfaXNfZmxhZyBPTiB0YWJfd2l0aF9mbGFnIChpc19m bGFnKTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gdGFi X3dpdGhfZmxhZworV0hFUkUKKwkoaXNfZmxhZyBJUyBOVUxMIE9SIGlzX2ZsYWcgPSAwKQor CUFORCBpZCBJTiAoU0VMRUNUIGlkIEZST00gdGFiX3dpdGhfZmxhZyBXSEVSRSBpZCBJTiAo MiwgMykpOworRFJPUCBUQUJMRSB0YWJfd2l0aF9mbGFnOworCistLSBIQVZJTkcgY2xhdXNl CitleHBsYWluIChjb3N0cyBvZmYpCitzZWxlY3QgcC5iIGZyb20gc2ogcCBqb2luIHNqIHEg b24gcC5hID0gcS5hIGdyb3VwIGJ5IHAuYiBoYXZpbmcgc3VtKHAuYSkgPSAxOworCistLSB1 cGRhdGUgbGF0ZXJhbCByZWZlcmVuY2VzIGFuZCByYW5nZSB0YWJsZSBlbnRyeSByZWZlcmVu Y2UKK2V4cGxhaW4gKHZlcmJvc2UsIGNvc3RzIG9mZikKK3NlbGVjdCAxIGZyb20gKHNlbGVj dCB4LiogZnJvbSBzaiB4LCBzaiB5IHdoZXJlIHguYSA9IHkuYSkgcSwKKyAgbGF0ZXJhbCBn ZW5lcmF0ZV9zZXJpZXMoMSwgcS5hKSBncyhpKTsKKworZXhwbGFpbiAodmVyYm9zZSwgY29z dHMgb2ZmKQorc2VsZWN0IDEgZnJvbSAoc2VsZWN0IHkuKiBmcm9tIHNqIHgsIHNqIHkgd2hl cmUgeC5hID0geS5hKSBxLAorICBsYXRlcmFsIGdlbmVyYXRlX3NlcmllcygxLCBxLmEpIGdz KGkpOworCistLSBUZXN0IHRoYXQgYSBub24tRUMtZGVyaXZlZCBqb2luIGNsYXVzZSBpcyBw cm9jZXNzZWQgY29ycmVjdGx5LiBVc2UgYW4KKy0tIG91dGVyIGpvaW4gc28gdGhhdCB3ZSBj YW4ndCBmb3JtIGFuIEVDLgorZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHNq IHAgam9pbiBzaiBxIG9uIHAuYSA9IHEuYQorICBsZWZ0IGpvaW4gc2ogciBvbiBwLmEgKyBx LmEgPSByLmE7CisKKy0tIEZJWE1FIHRoaXMgY29uc3RhbnQgZmFsc2UgZmlsdGVyIGRvZXNu J3QgbG9vayBnb29kLiBTaG91bGQgd2UgbWVyZ2UKKy0tIGVxdWl2YWxlbmNlIGNsYXNzZXM/ CitleHBsYWluIChjb3N0cyBvZmYpCitzZWxlY3QgKiBmcm9tIHNqIHAsIHNqIHEgd2hlcmUg cC5hID0gcS5hIGFuZCBwLmIgPSAxIGFuZCBxLmIgPSAyOworCistLSBDaGVjayB0aGF0IGF0 dHJfbmVlZGVkIGlzIHVwZGF0ZWQgY29ycmVjdGx5IGFmdGVyIHNlbGYtam9pbiByZW1vdmFs LiBJbiB0aGlzCistLSB0ZXN0LCB0aGUgam9pbiBvZiBqMSB3aXRoIGoyIGlzIHJlbW92ZWQu IGsxLmIgaXMgcmVxdWlyZWQgYXQgZWl0aGVyIGoxIG9yIGoyLgorLS0gSWYgdGhpcyBpbmZv IGlzIGxvc3QsIGpvaW4gdGFyZ2V0bGlzdCBmb3IgKGsxLCBrMikgd2lsbCBub3QgY29udGFp biBrMS5iLgorLS0gVXNlIGluZGV4IHNjYW4gZm9yIGsxIHNvIHRoYXQgd2UgZG9uJ3QgZ2V0 ICdiJyBmcm9tIHBoeXNpY2FsIHRsaXN0IHVzZWQgZm9yCistLSBzZXFzY2FuLiBBbHNvIGRp c2FibGUgcmVvcmRlcmluZyBvZiBqb2lucyBiZWNhdXNlIHRoaXMgdGVzdCBkZXBlbmRzIG9u IGEKKy0tIHBhcnRpY3VsYXIgam9pbiB0cmVlLgorY3JlYXRlIHRhYmxlIHNrIChhIGludCwg YiBpbnQpOworY3JlYXRlIGluZGV4IG9uIHNrKGEpOworc2V0IGpvaW5fY29sbGFwc2VfbGlt aXQgdG8gMTsKK3NldCBlbmFibGVfc2Vxc2NhbiB0byBvZmY7CitleHBsYWluIChjb3N0cyBv ZmYpIHNlbGVjdCAxIGZyb20KKwkoc2sgazEgam9pbiBzayBrMiBvbiBrMS5hID0gazIuYSkK Kwlqb2luIChzaiBqMSBqb2luIHNqIGoyIG9uIGoxLmEgPSBqMi5hKSBvbiBqMS5iID0gazEu YjsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0IDEgZnJvbQorCShzayBrMSBqb2luIHNr IGsyIG9uIGsxLmEgPSBrMi5hKQorCWpvaW4gKHNqIGoxIGpvaW4gc2ogajIgb24gajEuYSA9 IGoyLmEpIG9uIGoyLmIgPSBrMS5iOworcmVzZXQgam9pbl9jb2xsYXBzZV9saW1pdDsKK3Jl c2V0IGVuYWJsZV9zZXFzY2FuOworCistLSBDaGVjayB0aGF0IGNsYXVzZXMgZnJvbSB0aGUg am9pbiBmaWx0ZXIgbGlzdCBpcyBub3QgbG9zdCBvbiB0aGUgc2VsZi1qb2luIHJlbW92YWwK K0NSRUFURSBUQUJMRSBlbXAxIChpZCBTRVJJQUwgUFJJTUFSWSBLRVkgTk9UIE5VTEwsIGNv ZGUgaW50KTsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00g ZW1wMSBlMSwgZW1wMSBlMiBXSEVSRSBlMS5pZCA9IGUyLmlkIEFORCBlMi5jb2RlIDw+IGUx LmNvZGU7CisKKy0tIFNodWZmbGUgc2VsZi1qb2luZWQgcmVsYXRpb25zLiBPbmx5IGluIHRo ZSBjYXNlIG9mIGl0ZXJhdGl2ZSBkZWxldGlvbgorLS0gYXR0ZW1wdHMgZXhwbGFpbnMgb2Yg dGhlc2UgcXVlcmllcyB3aWxsIGJlIGlkZW50aWNhbC4KK0NSRUFURSBVTklRVUUgSU5ERVgg T04gZW1wMSgoaWQqaWQpKTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50 KCopIEZST00gZW1wMSBjMSwgZW1wMSBjMiwgZW1wMSBjMworV0hFUkUgYzEuaWQ9YzIuaWQg QU5EIGMxLmlkKmMyLmlkPWMzLmlkKmMzLmlkOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitT RUxFQ1QgY291bnQoKikgRlJPTSBlbXAxIGMxLCBlbXAxIGMyLCBlbXAxIGMzCitXSEVSRSBj MS5pZD1jMy5pZCBBTkQgYzEuaWQqYzMuaWQ9YzIuaWQqYzIuaWQ7CisKK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGVtcDEgYzEsIGVtcDEgYzIsIGVtcDEg YzMKK1dIRVJFIGMzLmlkPWMyLmlkIEFORCBjMy5pZCpjMi5pZD1jMS5pZCpjMS5pZDsKKwor LS0gQ2hlY2sgdGhlIHVzYWdlIG9mIGEgcGFyc2UgdHJlZSBieSB0aGUgc2V0IG9wZXJhdGlv bnMgKGJ1ZyAjMTgxNzApCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgYzEuY29kZSBG Uk9NIGVtcDEgYzEgTEVGVCBKT0lOIGVtcDEgYzIgT04gYzEuaWQgPSBjMi5pZAorV0hFUkUg YzIuaWQgSVMgTk9UIE5VTEwKK0VYQ0VQVCBBTEwKK1NFTEVDVCBjMy5jb2RlIEZST00gZW1w MSBjMzsKKworLS0gQ2hlY2sgdGhhdCBTSkUgcmVtb3ZlcyByZWZlcmVuY2VzIGZyb20gUEhW cyBjb3JyZWN0bHkKK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCAqIGZyb20gZW1wMSB0 MSBsZWZ0IGpvaW4KKyAgICAoc2VsZWN0IGNvYWxlc2NlKHQzLmNvZGUsIDEpIGZyb20gZW1w MSB0MgorICAgICAgICBsZWZ0IGpvaW4gKGVtcDEgdDMgam9pbiBlbXAxIHQ0IG9uIHQzLmlk ID0gdDQuaWQpCisgICAgICAgIG9uIHRydWUpCitvbiB0cnVlOworCistLSBDaGVjayB0aGF0 IFNKRSByZW1vdmVzIHRoZSB3aG9sZSBQSFZzIGNvcnJlY3RseQorZXhwbGFpbiAodmVyYm9z ZSwgY29zdHMgb2ZmKQorc2VsZWN0IDEgZnJvbSBlbXAxIHQxIGxlZnQgam9pbgorICAgICgo c2VsZWN0IDEgYXMgeCwgKiBmcm9tIGVtcDEgdDIpIHMxIGlubmVyIGpvaW4KKyAgICAgICAg KHNlbGVjdCAqIGZyb20gZW1wMSB0MykgczIgb24gczEuaWQgPSBzMi5pZCkKKyAgICBvbiB0 cnVlCit3aGVyZSBzMS54ID0gMTsKKworLS0gQ2hlY2sgdGhhdCBQSFZzIGRvIG5vdCBpbXBv c2UgYW55IGNvbnN0cmFpbnRzIG9uIHJlbW92aW5nIHNlbGYgam9pbnMKK2V4cGxhaW4gKHZl cmJvc2UsIGNvc3RzIG9mZikKK3NlbGVjdCAqIGZyb20gZW1wMSB0MSBqb2luIGVtcDEgdDIg b24gdDEuaWQgPSB0Mi5pZCBsZWZ0IGpvaW4KKyAgICBsYXRlcmFsIChzZWxlY3QgdDEuaWQg YXMgdDFpZCwgKiBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDEpIHQzKSBzIG9uIHRydWU7CisK K2V4cGxhaW4gKHZlcmJvc2UsIGNvc3RzIG9mZikKK3NlbGVjdCAqIGZyb20gZ2VuZXJhdGVf c2VyaWVzKDEsMTApIHQxKGlkKSBsZWZ0IGpvaW4KKyAgICBsYXRlcmFsIChzZWxlY3QgdDEu aWQgYXMgdDFpZCwgdDIuaWQgZnJvbSBlbXAxIHQyIGpvaW4gZW1wMSB0MyBvbiB0Mi5pZCA9 IHQzLmlkKQorb24gdHJ1ZTsKKworLS0gQ2hlY2sgdGhhdCBTSkUgcmVwbGFjZXMgam9pbiBj bGF1c2VzIGludm9sdmluZyB0aGUgcmVtb3ZlZCByZWwgY29ycmVjdGx5CitleHBsYWluIChj b3N0cyBvZmYpCitzZWxlY3QgKiBmcm9tIGVtcDEgdDEKKyAgIGlubmVyIGpvaW4gZW1wMSB0 MiBvbiB0MS5pZCA9IHQyLmlkCisgICAgbGVmdCBqb2luIGVtcDEgdDMgb24gdDEuaWQgPiAx IGFuZCB0MS5pZCA8IDI7CisKKy0tIENoZWNrIHRoYXQgU0pFIGRvZXNuJ3QgcmVwbGFjZSB0 aGUgdGFyZ2V0IHJlbGF0aW9uCitFWFBMQUlOIChDT1NUUyBPRkYpCitXSVRIIHQxIEFTIChT RUxFQ1QgKiBGUk9NIGVtcDEpCitVUERBVEUgZW1wMSBTRVQgY29kZSA9IHQxLmNvZGUgKyAx IEZST00gdDEKK1dIRVJFIHQxLmlkID0gZW1wMS5pZCBSRVRVUk5JTkcgZW1wMS5pZCwgZW1w MS5jb2RlLCB0MS5jb2RlOworCitJTlNFUlQgSU5UTyBlbXAxIFZBTFVFUyAoMSwgMSksICgy LCAxKTsKKworV0lUSCB0MSBBUyAoU0VMRUNUICogRlJPTSBlbXAxKQorVVBEQVRFIGVtcDEg U0VUIGNvZGUgPSB0MS5jb2RlICsgMSBGUk9NIHQxCitXSEVSRSB0MS5pZCA9IGVtcDEuaWQg UkVUVVJOSU5HIGVtcDEuaWQsIGVtcDEuY29kZSwgdDEuY29kZTsKKworVFJVTkNBVEUgZW1w MTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorVVBEQVRFIHNqIHNxIFNFVCBiID0gMSBGUk9N IHNqIGFzIHN6IFdIRVJFIHNxLmEgPSBzei5hOworCitDUkVBVEUgUlVMRSBzal9kZWxfcnVs ZSBBUyBPTiBERUxFVEUgVE8gc2oKKyAgRE8gSU5TVEVBRAorICAgIFVQREFURSBzaiBTRVQg YSA9IDEgV0hFUkUgYSA9IG9sZC5hOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBERUxFVEUgRlJP TSBzajsKK0RST1AgUlVMRSBzal9kZWxfcnVsZSBPTiBzaiBDQVNDQURFOworCistLSBDaGVj ayB0aGF0IFNKRSBkb2VzIG5vdCBtaXN0YWtlbmx5IG9taXQgcXVhbCBjbGF1c2VzIChidWcg IzE4MTg3KQoraW5zZXJ0IGludG8gZW1wMSB2YWx1ZXMgKDEsIDEpOworZXhwbGFpbiAoY29z dHMgb2ZmKQorc2VsZWN0IDEgZnJvbSBlbXAxIGZ1bGwgam9pbgorICAgIChzZWxlY3QgKiBm cm9tIGVtcDEgdDEgam9pbgorICAgICAgICBlbXAxIHQyIGpvaW4gZW1wMSB0MyBvbiB0Mi5p ZCA9IHQzLmlkCisgICAgICAgIG9uIHRydWUKKyAgICB3aGVyZSBmYWxzZSkgcyBvbiB0cnVl Cit3aGVyZSBmYWxzZTsKK3NlbGVjdCAxIGZyb20gZW1wMSBmdWxsIGpvaW4KKyAgICAoc2Vs ZWN0ICogZnJvbSBlbXAxIHQxIGpvaW4KKyAgICAgICAgZW1wMSB0MiBqb2luIGVtcDEgdDMg b24gdDIuaWQgPSB0My5pZAorICAgICAgICBvbiB0cnVlCisgICAgd2hlcmUgZmFsc2UpIHMg b24gdHJ1ZQord2hlcmUgZmFsc2U7CisKKy0tIENoZWNrIHRoYXQgU0pFIGRvZXMgbm90IG1p c3Rha2VubHkgcmUtdXNlIGtub3dsZWRnZSBvZiByZWxhdGlvbiB1bmlxdWVuZXNzCistLSBt YWRlIHdpdGggZGlmZmVyZW50IHNldCBvZiBxdWFscworaW5zZXJ0IGludG8gZW1wMSB2YWx1 ZXMgKDIsIDEpOworZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0ICogZnJvbSBlbXAxIHQx IHdoZXJlIGV4aXN0cyAoc2VsZWN0ICogZnJvbSBlbXAxIHQyCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB3aGVyZSB0Mi5pZCA9IHQxLmNvZGUgYW5kIHQyLmNvZGUg PiAwKTsKK3NlbGVjdCAqIGZyb20gZW1wMSB0MSB3aGVyZSBleGlzdHMgKHNlbGVjdCAqIGZy b20gZW1wMSB0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUg dDIuaWQgPSB0MS5jb2RlIGFuZCB0Mi5jb2RlID4gMCk7CisKKy0tIFdlIGNhbiByZW1vdmUg dGhlIGpvaW4gZXZlbiBpZiB3ZSBmaW5kIHRoZSBqb2luIGNhbid0IGR1cGxpY2F0ZSByb3dz IGFuZAorLS0gdGhlIGJhc2UgcXVhbHMgb2YgZWFjaCBzaWRlIGFyZSBkaWZmZXJlbnQuICBJ biB0aGUgZm9sbG93aW5nIGNhc2Ugd2UgZW5kIHVwCistLSBtb3ZpbmcgcXVhbHMgb3ZlciB0 byBzMSB0byBtYWtlIGl0IHNvIGl0IGNhbid0IG1hdGNoIGFueSByb3dzLgorY3JlYXRlIHRh YmxlIHNsKGEgaW50LCBiIGludCwgYyBpbnQpOworY3JlYXRlIHVuaXF1ZSBpbmRleCBvbiBz bChhLCBiKTsKK3ZhY3V1bSBhbmFseXplIHNsOworCistLSBCb3RoIHNpZGVzIGFyZSB1bmlx dWUsIGJ1dCBiYXNlIHF1YWxzIGFyZSBkaWZmZXJlbnQKK2V4cGxhaW4gKGNvc3RzIG9mZikK K3NlbGVjdCAqIGZyb20gc2wgdDEsIHNsIHQyIHdoZXJlIHQxLmEgPSB0Mi5hIGFuZCB0MS5i ID0gMSBhbmQgdDIuYiA9IDI7CisKKy0tIENoZWNrIE51bGxUZXN0IGluIGJhc2VyZXN0cmlj dGluZm8gbGlzdAorZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0ICogZnJvbSBzbCB0MSwg c2wgdDIKK3doZXJlIHQxLmEgPSB0Mi5hIGFuZCB0MS5iID0gMSBhbmQgdDIuYiA9IDIKKyAg YW5kIHQxLmMgSVMgTk9UIE5VTEwgYW5kIHQyLmMgSVMgTk9UIE5VTEwKKyAgYW5kIHQyLmIg SVMgTk9UIE5VTEwgYW5kIHQxLmIgSVMgTk9UIE5VTEwKKyAgYW5kIHQxLmEgSVMgTk9UIE5V TEwgYW5kIHQyLmEgSVMgTk9UIE5VTEw7CitleHBsYWluICh2ZXJib3NlLCBjb3N0cyBvZmYp CitzZWxlY3QgKiBmcm9tIHNsIHQxLCBzbCB0Mgord2hlcmUgdDEuYiA9IHQyLmIgYW5kIHQy LmEgPSAzIGFuZCB0MS5hID0gMworICBhbmQgdDEuYyBJUyBOT1QgTlVMTCBhbmQgdDIuYyBJ UyBOT1QgTlVMTAorICBhbmQgdDIuYiBJUyBOT1QgTlVMTCBhbmQgdDEuYiBJUyBOT1QgTlVM TAorICBhbmQgdDEuYSBJUyBOT1QgTlVMTCBhbmQgdDIuYSBJUyBOT1QgTlVMTDsKKworLS0g Sm9pbiBxdWFsIGlzbid0IG1lcmdlam9pbmFibGUsIGJ1dCBpbm5lciBpcyB1bmlxdWUuCitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgbjIuYSBGUk9NIHNqIG4xLCBzaiBuMiBXSEVS RSBuMS5hIDw+IG4yLmEgQU5EIG4yLmEgPSAxOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitT RUxFQ1QgKiBGUk9NCisoU0VMRUNUIG4yLmEgRlJPTSBzaiBuMSwgc2ogbjIgV0hFUkUgbjEu YSA8PiBuMi5hKSBxMCwgc2wKK1dIRVJFIHEwLmEgPSAxOworCistLSBDaGVjayBvcHRpbWl6 YXRpb24gZGlzYWJsaW5nIGlmIGl0IHdpbGwgdmlvbGF0ZSBzcGVjaWFsIGpvaW4gY29uZGl0 aW9ucy4KKy0tIFR3byBpZGVudGljYWwgam9pbmVkIHJlbGF0aW9ucyBzYXRpc2ZpZXMgc2Vs ZiBqb2luIHJlbW92YWwgY29uZGl0aW9ucyBidXQKKy0tIHN0YXkgaW4gZGlmZmVyZW50IHNw ZWNpYWwgam9pbiBpbmZvcy4KK0NSRUFURSBUQUJMRSBzal90MSAoaWQgc2VyaWFsLCBhIGlu dCk7CitDUkVBVEUgVEFCTEUgc2pfdDIgKGlkIHNlcmlhbCwgYSBpbnQpOworQ1JFQVRFIFRB QkxFIHNqX3QzIChpZCBzZXJpYWwsIGEgaW50KTsKK0NSRUFURSBUQUJMRSBzal90NCAoaWQg c2VyaWFsLCBhIGludCk7CisKK0NSRUFURSBVTklRVUUgSU5ERVggT04gc2pfdDMgVVNJTkcg YnRyZWUgKGEsaWQpOworQ1JFQVRFIFVOSVFVRSBJTkRFWCBPTiBzal90MiBVU0lORyBidHJl ZSAoaWQpOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NIHNqX3QxCitK T0lOICgKKwlTRUxFQ1Qgc2pfdDIuaWQgQVMgaWQgRlJPTSBzal90MgorCVdIRVJFIEVYSVNU UworCQkoCisJCVNFTEVDVCBUUlVFIEZST00gc2pfdDMsc2pfdDQgV0hFUkUgc2pfdDMuYSA9 IDEgQU5EIHNqX3QzLmlkID0gc2pfdDIuaWQKKwkJKQorCSkgdDJ0M3Q0CitPTiBzal90MS5p ZCA9IHQydDN0NC5pZAorSk9JTiAoCisJU0VMRUNUIHNqX3QyLmlkIEFTIGlkIEZST00gc2pf dDIKKwlXSEVSRSBFWElTVFMKKwkJKAorCQlTRUxFQ1QgVFJVRSBGUk9NIHNqX3QzLHNqX3Q0 IFdIRVJFIHNqX3QzLmEgPSAxIEFORCBzal90My5pZCA9IHNqX3QyLmlkCisJCSkKKwkpIF90 MnQzdDQKK09OIHNqX3QxLmlkID0gX3QydDN0NC5pZDsKKworLS0KKy0tIFRlc3QgUm93TWFy a3MtcmVsYXRlZCBjb2RlCistLQorCistLSBCb3RoIHNpZGVzIGhhdmUgZXhwbGljaXQgTG9j a1Jvd3MgbWFya3MKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBhMS5hIEZST00gc2og YTEsc2ogYTIgV0hFUkUgKGExLmE9YTIuYSkgRk9SIFVQREFURTsKKworcmVzZXQgZW5hYmxl X2hhc2hqb2luOworcmVzZXQgZW5hYmxlX21lcmdlam9pbjsKKwogLS0KIC0tIFRlc3QgaGlu dHMgZ2l2ZW4gb24gaW5jb3JyZWN0IGNvbHVtbiByZWZlcmVuY2VzIGFyZSB1c2VmdWwKIC0t CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IGI2YzE3MGFjMjQ5Li5iY2U0MjE0 NTAzZCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysr IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTI1OTMsNiArMjU5Myw3 IEBAIFNlZW5SZWxzRW50cnkKIFNlbGVjdExpbWl0CiBTZWxlY3RTdG10CiBTZWxlY3Rpdml0 eQorU2VsZkpvaW5DYW5kaWRhdGUKIFNlbVRQYWRkZWQKIFNlbWlBbnRpSm9pbkZhY3RvcnMK IFNlcVNjYW4KQEAgLTQwNTYsNiArNDA1Nyw3IEBAIHVuaWNvZGVTdHlsZUNvbHVtbkZvcm1h dAogdW5pY29kZVN0eWxlRm9ybWF0CiB1bmljb2RlU3R5bGVSb3dGb3JtYXQKIHVuaWNvZGVf bGluZXN0eWxlCitVbmlxdWVSZWxJbmZvCiB1bml0X2NvbnZlcnNpb24KIHVubG9nZ2VkX3Jl bGF0aW9uX2VudHJ5CiB1dGZfbG9jYWxfY29udmVyc2lvbl9mdW5jCi0tIAoyLjM0LjEKCg== --------------vHbj04KO08FC0gAES8o5Fvao Content-Type: text/x-patch; charset=UTF-8; name="v19-0002-Machinery-for-grabbing-an-extended-vacuum-statistics.patch" Content-Disposition: attachment; filename*0="v19-0002-Machinery-for-grabbing-an-extended-vacuum-statistic"; filename*1="s.patch" Content-Transfer-Encoding: base64 RnJvbSA0MGFiOTQzN2UwZWZhNmIzNTAwNWM0OTdkNTNkY2MyMTlhY2I3MDM4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVuYSBSeWJha2luYSA8YS5yeWJha2luYUBwb3N0 Z3Jlc3Byby5ydT4KRGF0ZTogTW9uLCAxNyBGZWIgMjAyNSAxNzoxMzo1NSArMDMwMApTdWJq ZWN0OiBbUEFUQ0ggMi80XSBNYWNoaW5lcnkgZm9yIGdyYWJiaW5nIGFuIGV4dGVuZGVkIHZh Y3V1bSBzdGF0aXN0aWNzIG9uIAogdGFibGUgcmVsYXRpb25zLgoKVmFsdWUgb2YgdG90YWxf Ymxrc19oaXQsIHRvdGFsX2Jsa3NfcmVhZCwgdG90YWxfYmxrc19kaXJ0aWVkIGFyZSBudW1i ZXIgb2YKaGl0dGVkLCBtaXNzZWQgYW5kIGRpcnRpZWQgcGFnZXMgaW4gc2hhcmVkIGJ1ZmZl cnMgZHVyaW5nIGEgdmFjdXVtIG9wZXJhdGlvbgpyZXNwZWN0aXZlbHkuCgp0b3RhbF9ibGtz X2RpcnRpZWQgbWVhbnMgJ2RpcnRpZWQgb25seSBieSB0aGlzIGFjdGlvbicuIFNvLCBpZiB0 aGlzIHBhZ2Ugd2FzCmRpcnR5IGJlZm9yZSB0aGUgdmFjdXVtIG9wZXJhdGlvbiwgaXQgZG9l c24ndCBjb3VudCB0aGlzIHBhZ2UgYXMgJ2RpcnRpZWQnLgoKVGhlIHR1cGxlc19kZWxldGVk IHBhcmFtZXRlciBpcyB0aGUgbnVtYmVyIG9mIHR1cGxlcyBjbGVhbmVkIHVwIGJ5IHRoZSB2 YWN1dW0Kb3BlcmF0aW9uLgoKVGhlIGRlbGF5X3RpbWUgdmFsdWUgbWVhbnMgdG90YWwgdmFj dXVtIHNsZWVwIHRpbWUgaW4gdmFjdXVtIGRlbGF5IHBvaW50LgpUaGUgcGFnZXNfcmVtb3Zl ZCB2YWx1ZSBpcyB0aGUgbnVtYmVyIG9mIHBhZ2VzIGJ5IHdoaWNoIHRoZSBwaHlzaWNhbCBk YXRhCnN0b3JhZ2Ugb2YgdGhlIHJlbGF0aW9uIHdhcyByZWR1Y2VkLgpUaGUgdmFsdWUgb2Yg cGFnZXNfZGVsZXRlZCBwYXJhbWV0ZXIgaXMgdGhlIG51bWJlciBvZiBmcmVlZCBwYWdlcyBp biB0aGUgdGFibGUKKGZpbGUgc2l6ZSBtYXkgbm90IGhhdmUgY2hhbmdlZCkuCgpUcmFja2lu ZyBvZiBJTyBkdXJpbmcgYW4gKGF1dG8pdmFjdXVtIG9wZXJhdGlvbi4KSW50cm9kdWNlZCB2 YXJpYWJsZXMgYmxrX3JlYWRfdGltZSBhbmQgYmxrX3dyaXRlX3RpbWUgdHJhY2tzIG9ubHkg YWNjZXNzIHRvCmJ1ZmZlciBwYWdlcyBhbmQgZmx1c2hpbmcgdGhlbSB0byBkaXNrLiBSZWFk aW5nIG9wZXJhdGlvbiBpcyB0cml2aWFsLCBidXQKd3JpdGluZyBtZWFzdXJlbWVudCB0ZWNo bmlxdWUgaXMgbm90IG9idmlvdXMuClNvLCBkdXJpbmcgYSB2YWN1dW0gd3JpdGluZyB0aW1l IGNhbiBiZSB6ZXJvIGluY3JlbWVudGVkIGJlY2F1c2Ugbm8gYW55IGZsdXNoaW5nCm9wZXJh dGlvbnMgd2VyZSBwZXJmb3JtZWQuCgpTeXN0ZW0gdGltZSBhbmQgdXNlciB0aW1lIGFyZSBw YXJhbWV0ZXJzIHRoYXQgZGVzY3JpYmVzIGhvdyBtdWNoIHRpbWUgYSB2YWN1dW0Kb3BlcmF0 aW9uIGhhcyBzcGVudCBpbiBleGVjdXRpbmcgb2YgY29kZSBpbiB1c2VyIHNwYWNlIGFuZCBr ZXJuZWwgc3BhY2UKYWNjb3JkaW5nbHkuIEFsc28sIGFjY3VtdWxhdGUgdG90YWwgdGltZSBv ZiBhIHZhY3V1bSB0aGF0IGlzIGEgZGlmZiBiZXR3ZWVuCnRpbWVzdGFtcHMgaW4gc3RhcnQg YW5kIGZpbmlzaCBwb2ludHMgaW4gdGhlIHZhY3V1bSBjb2RlLgpSZW1lbWJlciBhYm91dCBp ZGxlIHRpbWUsIHdoZW4gdmFjdXVtIHdhaXRlZCBmb3IgSU8gYW5kIGxvY2tzLCBzbyB0b3Rh bCB0aW1lCmlzbid0IGVxdWFsIGEgc3VtIG9mIHVzZXIgYW5kIHN5c3RlbSB0aW1lLCBidXQg bm8gbGVzcy4KCnBhZ2VzX2Zyb3plbiBpcyBhIG51bWJlciBvZiBwYWdlcyB0aGF0IGFyZSBt YXJrZWQgYXMgZnJvemVuIGluIHZtIGR1cmluZyB2YWN1dW0uClRoaXMgcGFyYW1ldGVyIGlz IGluY3JlbWVudGVkIGlmIHBhZ2UgaXMgbWFya2VkIGFzIGFsbC1mcm96ZW4uCnBhZ2VzX2Fs bF92aXNpYmxlIGlzIGEgbnVtYmVyIG9mIHBhZ2VzIHRoYXQgYXJlIG1hcmtlZCBhcyBhbGwt dmlzaWJsZSBpbiB2bSBkdXJpbmcKdmFjdXVtLgoKd3JhcGFyb3VuZF9mYWlsc2FmZV9jb3Vu dCBpcyBhIG51bWJlciBvZiB0aW1lcyB3aGVuIHRoZSB2YWN1dW0gc3RhcnRzIHVyZ2VudCBj bGVhbnVwCnRvIHByZXZlbnQgd3JhcGFyb3VuZCBwcm9ibGVtIHdoaWNoIGlzIGNyaXRpY2Fs IGZvciB0aGUgZGF0YWJhc2UuCgpBdXRob3JzOiBBbGVuYSBSeWJha2luYSA8bGVuYS5yaWJh Y2tpbmFAeWFuZGV4LnJ1PiwKCSBBbmRyZWkgTGVwaWtob3YgPGEubGVwaWtob3ZAcG9zdGdy ZXNwcm8ucnU+LAoJIEFuZHJlaSBadWJrb3YgPGEuenVia292QHBvc3RncmVzcHJvLnJ1PgpS ZXZpZXdlZC1ieTogRGlsaXAgS3VtYXIgPGRpbGlwYmFsYXV0QGdtYWlsLmNvbT4sIE1hc2Fo aWtvIFNhd2FkYSA8c2F3YWRhLm1zaGtAZ21haWwuY29tPiwKCSAgICAgSWxpYSBFdmRva2lt b3YgPGlseWEuZXZkb2tpbW92QHRhbnRvcmxhYnMuY29tPiwgamlhbiBoZSA8amlhbi51bml2 ZXJzYWxpdHlAZ21haWwuY29tPiwKCSAgICAgS2lyaWxsIFJlc2hrZSA8cmVzaGtla2lyaWxs QGdtYWlsLmNvbT4sIEFsZXhhbmRlciBLb3JvdGtvdiA8YWVrb3JvdGtvdkBnbWFpbC5jb20+ LAoJICAgICBKaW0gTmFzYnkgPGpuYXNieUB1cGdyYWRlLmNvbT4sIFNhbWkgSW1zZWloIDxz YW1pbXNlaWhAZ21haWwuY29tPgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1 bWxhenkuYyAgICAgICAgICB8IDE0OSArKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3Zpc2liaWxpdHltYXAuYyAgICAgICB8ICAxMCArCiBzcmMvYmFja2VuZC9jYXRh bG9nL3N5c3RlbV92aWV3cy5zcWwgICAgICAgICAgfCAgNTIgKysrLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvdmFjdXVtLmMgICAgICAgICAgICAgICAgIHwgICA0ICsKIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2Vu ZC91dGlscy9hY3Rpdml0eS9wZ3N0YXQuYyAgICAgICAgICAgfCAgMTIgKy0KIHNyYy9iYWNr ZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9yZWxhdGlvbi5jICB8ICA0NiArKystCiBzcmMv YmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYyAgICAgICAgICAgfCAxNDcgKysrKysr KysrKysrCiBzcmMvYmFja2VuZC91dGlscy9lcnJvci9lbG9nLmMgICAgICAgICAgICAgICAg fCAgMTMgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAgICAg IHwgICA5ICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBs ZSB8ICAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAg ICAgfCAgMTggKysKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5oICAgICAgICAgICAg ICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9wZ3N0YXQuaCAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgODAgKysrKystCiBzcmMvaW5jbHVkZS91dGlscy9lbG9nLmggICAgICAgICAg ICAgICAgICAgICAgfCAgIDEgKwogLi4uL3ZhY3V1bS1leHRlbmRpbmctaW4tcmVwZXRhYmxl LXJlYWQub3V0ICAgIHwgIDUzICsrKysKIHNyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25f c2NoZWR1bGUgICAgICAgICB8ICAgMSArCiAuLi4vdmFjdXVtLWV4dGVuZGluZy1pbi1yZXBl dGFibGUtcmVhZC5zcGVjICAgfCAgNTMgKysrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ydWxlcy5vdXQgICAgICAgICAgIHwgIDQ0ICsrKy0KIC4uLi9leHBlY3RlZC92YWN1dW1f dGFibGVzX3N0YXRpc3RpY3Mub3V0ICAgICB8IDIyNyArKysrKysrKysrKysrKysrKysKIHNy Yy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAgICB8ICAgNSArCiAu Li4vcmVncmVzcy9zcWwvdmFjdXVtX3RhYmxlc19zdGF0aXN0aWNzLnNxbCAgfCAxODMgKysr KysrKysrKysrKysKIDIyIGZpbGVzIGNoYW5nZWQsIDEwOTQgaW5zZXJ0aW9ucygrKSwgMTYg ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvaXNvbGF0aW9uL2V4 cGVjdGVkL3ZhY3V1bS1leHRlbmRpbmctaW4tcmVwZXRhYmxlLXJlYWQub3V0CiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3ZhY3V1bS1leHRlbmRpbmct aW4tcmVwZXRhYmxlLXJlYWQuc3BlYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvdmFjdXVtX3RhYmxlc19zdGF0aXN0aWNzLm91dAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ZhY3V1bV90YWJsZXNfc3RhdGlzdGlj cy5zcWwKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggOTExZjY4 YjQxM2QuLjgzOWJkNDFiZTYyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jCkBAIC0yOTAsNiArMjkwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgTFZSZWxTdGF0ZQogCS8q IEVycm9yIHJlcG9ydGluZyBzdGF0ZSAqLwogCWNoYXIJICAgKmRibmFtZTsKIAljaGFyCSAg ICpyZWxuYW1lc3BhY2U7CisJT2lkCQkJcmVsb2lkOwogCWNoYXIJICAgKnJlbG5hbWU7CiAJ Y2hhcgkgICAqaW5kbmFtZTsJCS8qIEN1cnJlbnQgaW5kZXggbmFtZSAqLwogCUJsb2NrTnVt YmVyIGJsa25vOwkJCS8qIHVzZWQgb25seSBmb3IgaGVhcCBvcGVyYXRpb25zICovCkBAIC00 MDgsNiArNDA5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgTFZSZWxTdGF0ZQogCSAqIGJlZW4gcGVy bWFuZW50bHkgZGlzYWJsZWQuCiAJICovCiAJQmxvY2tOdW1iZXIgZWFnZXJfc2Nhbl9yZW1h aW5pbmdfZmFpbHM7CisKKwlpbnQzMgkJd3JhcGFyb3VuZF9mYWlsc2FmZV9jb3VudDsgLyog dGhlIG51bWJlciBvZiB0aW1lcyB0byBwcmV2ZW50IHdvcmthcm91bmQgcHJvYmxlbSAqLwog fSBMVlJlbFN0YXRlOwogCiAKQEAgLTQxOSw2ICs0MjIsMTggQEAgdHlwZWRlZiBzdHJ1Y3Qg TFZTYXZlZEVyckluZm8KIAlWYWNFcnJQaGFzZSBwaGFzZTsKIH0gTFZTYXZlZEVyckluZm87 CiAKKy8qCisgKiBDb3VudGVycyBhbmQgdXNhZ2UgZGF0YSBmb3IgZXh0ZW5kZWQgc3RhdHMg dHJhY2tpbmcuCisgKi8KK3R5cGVkZWYgc3RydWN0IExWRXh0U3RhdENvdW50ZXJzCit7CisJ VGltZXN0YW1wVHogc3RhcnR0aW1lOworCVdhbFVzYWdlCXdhbHVzYWdlOworCUJ1ZmZlclVz YWdlIGJ1ZnVzYWdlOworCWRvdWJsZQkJVmFjdXVtRGVsYXlUaW1lOworCVBnU3RhdF9Db3Vu dGVyIGJsb2Nrc19mZXRjaGVkOworCVBnU3RhdF9Db3VudGVyIGJsb2Nrc19oaXQ7Cit9IExW RXh0U3RhdENvdW50ZXJzOwogCiAvKiBub24tZXhwb3J0IGZ1bmN0aW9uIHByb3RvdHlwZXMg Ki8KIHN0YXRpYyB2b2lkIGxhenlfc2Nhbl9oZWFwKExWUmVsU3RhdGUgKnZhY3JlbCk7CkBA IC00NzUsNyArNDkwLDEwNiBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfdmFjdXVtX2Vycm9yX2lu Zm8oTFZSZWxTdGF0ZSAqdmFjcmVsLAogc3RhdGljIHZvaWQgcmVzdG9yZV92YWN1dW1fZXJy b3JfaW5mbyhMVlJlbFN0YXRlICp2YWNyZWwsCiAJCQkJCQkJCQkgIGNvbnN0IExWU2F2ZWRF cnJJbmZvICpzYXZlZF92YWNyZWwpOwogCisvKiAtLS0tLS0tLS0tCisgKiBleHR2YWNfc3Rh dHNfc3RhcnQoKSAtCisgKgorICogU2F2ZSBjdXQtb2ZmIHZhbHVlcyBvZiBleHRlbmRlZCB2 YWN1dW0gY291bnRlcnMgYmVmb3JlIHN0YXJ0IG9mIGEgcmVsYXRpb24KKyAqIHByb2Nlc3Np bmcuCisgKiAtLS0tLS0tLS0tCisgKi8KK3N0YXRpYyB2b2lkCitleHR2YWNfc3RhdHNfc3Rh cnQoUmVsYXRpb24gcmVsLCBMVkV4dFN0YXRDb3VudGVycyAqY291bnRlcnMpCit7CisJVGlt ZXN0YW1wVHoJc3RhcnR0aW1lOworCisJaWYoIXBnc3RhdF90cmFja192YWN1dW1fc3RhdGlz dGljcykKKwkJcmV0dXJuOworCisJbWVtc2V0KGNvdW50ZXJzLCAwLCBzaXplb2YoTFZFeHRT dGF0Q291bnRlcnMpKTsKKworCXN0YXJ0dGltZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsK KworCWNvdW50ZXJzLT5zdGFydHRpbWUgPSBzdGFydHRpbWU7CisJY291bnRlcnMtPndhbHVz YWdlID0gcGdXYWxVc2FnZTsKKwljb3VudGVycy0+YnVmdXNhZ2UgPSBwZ0J1ZmZlclVzYWdl OworCWNvdW50ZXJzLT5WYWN1dW1EZWxheVRpbWUgPSBWYWN1dW1EZWxheVRpbWU7CisJY291 bnRlcnMtPmJsb2Nrc19mZXRjaGVkID0gMDsKKwljb3VudGVycy0+YmxvY2tzX2hpdCA9IDA7 CisKKwlpZiAoIXJlbC0+cGdzdGF0X2luZm8gfHwgIXBnc3RhdF90cmFja19jb3VudHMpCisJ CS8qCisJCSAqIGlmIHNvbWV0aGluZyBnb2VzIHdyb25nIG9yIHVzZXIgZG9lc24ndCB3YW50 IHRvIHRyYWNrIGEgZGF0YWJhc2UKKwkJICogYWN0aXZpdHkgLSBqdXN0IHN1cHByZXNzIGl0 LgorCQkgKi8KKwkJcmV0dXJuOworCisJY291bnRlcnMtPmJsb2Nrc19mZXRjaGVkID0gcmVs LT5wZ3N0YXRfaW5mby0+Y291bnRzLmJsb2Nrc19mZXRjaGVkOworCWNvdW50ZXJzLT5ibG9j a3NfaGl0ID0gcmVsLT5wZ3N0YXRfaW5mby0+Y291bnRzLmJsb2Nrc19oaXQ7Cit9CisKKy8q IC0tLS0tLS0tLS0KKyAqIGV4dHZhY19zdGF0c19lbmQoKSAtCisgKgorICoJQ2FsbGVkIHRv IGZpbmlzaCBhbiBleHRlbmRlZCB2YWN1dW0gc3RhdGlzdGljIGdhdGhlcmluZyBhbmQgZm9y bSBhIHJlcG9ydC4KKyAqIC0tLS0tLS0tLS0KKyAqLworc3RhdGljIHZvaWQKK2V4dHZhY19z dGF0c19lbmQoUmVsYXRpb24gcmVsLCBMVkV4dFN0YXRDb3VudGVycyAqY291bnRlcnMsCisJ CQkJICBFeHRWYWNSZXBvcnQgKnJlcG9ydCkKK3sKKwlXYWxVc2FnZQl3YWx1c2FnZTsKKwlC dWZmZXJVc2FnZQlidWZ1c2FnZTsKKwlUaW1lc3RhbXBUeiBlbmR0aW1lOworCWxvbmcJCXNl Y3M7CisJaW50CQkJdXNlY3M7CisKKwlpZighcGdzdGF0X3RyYWNrX3ZhY3V1bV9zdGF0aXN0 aWNzKQorCQlyZXR1cm47CisKKwkvKiBDYWxjdWxhdGUgZGlmZnMgb2YgZ2xvYmFsIHN0YXQg cGFyYW1ldGVycyBvbiBXQUwgYW5kIGJ1ZmZlciB1c2FnZS4gKi8KKwltZW1zZXQoJndhbHVz YWdlLCAwLCBzaXplb2YoV2FsVXNhZ2UpKTsKKwlXYWxVc2FnZUFjY3VtRGlmZigmd2FsdXNh Z2UsICZwZ1dhbFVzYWdlLCAmY291bnRlcnMtPndhbHVzYWdlKTsKKworCW1lbXNldCgmYnVm dXNhZ2UsIDAsIHNpemVvZihCdWZmZXJVc2FnZSkpOworCUJ1ZmZlclVzYWdlQWNjdW1EaWZm KCZidWZ1c2FnZSwgJnBnQnVmZmVyVXNhZ2UsICZjb3VudGVycy0+YnVmdXNhZ2UpOworCisJ ZW5kdGltZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKKwlUaW1lc3RhbXBEaWZmZXJlbmNl KGNvdW50ZXJzLT5zdGFydHRpbWUsIGVuZHRpbWUsICZzZWNzLCAmdXNlY3MpOworCisJbWVt c2V0KHJlcG9ydCwgMCwgc2l6ZW9mKEV4dFZhY1JlcG9ydCkpOworCisJLyoKKwkgKiBGaWxs IGFkZGl0aW9uYWwgc3RhdGlzdGljcyBvbiBhIHZhY3V1bSBwcm9jZXNzaW5nIG9wZXJhdGlv bi4KKwkgKi8KKwlyZXBvcnQtPnRvdGFsX2Jsa3NfcmVhZCA9IGJ1ZnVzYWdlLmxvY2FsX2Js a3NfcmVhZCArIGJ1ZnVzYWdlLnNoYXJlZF9ibGtzX3JlYWQ7CisJcmVwb3J0LT50b3RhbF9i bGtzX2hpdCA9IGJ1ZnVzYWdlLmxvY2FsX2Jsa3NfaGl0ICsgYnVmdXNhZ2Uuc2hhcmVkX2Js a3NfaGl0OworCXJlcG9ydC0+dG90YWxfYmxrc19kaXJ0aWVkID0gYnVmdXNhZ2UubG9jYWxf Ymxrc19kaXJ0aWVkICsgYnVmdXNhZ2Uuc2hhcmVkX2Jsa3NfZGlydGllZDsKKwlyZXBvcnQt PnRvdGFsX2Jsa3Nfd3JpdHRlbiA9IGJ1ZnVzYWdlLnNoYXJlZF9ibGtzX3dyaXR0ZW47CisK KwlyZXBvcnQtPndhbF9yZWNvcmRzID0gd2FsdXNhZ2Uud2FsX3JlY29yZHM7CisJcmVwb3J0 LT53YWxfZnBpID0gd2FsdXNhZ2Uud2FsX2ZwaTsKKwlyZXBvcnQtPndhbF9ieXRlcyA9IHdh bHVzYWdlLndhbF9ieXRlczsKKworCXJlcG9ydC0+YmxrX3JlYWRfdGltZSA9IElOU1RSX1RJ TUVfR0VUX01JTExJU0VDKGJ1ZnVzYWdlLmxvY2FsX2Jsa19yZWFkX3RpbWUpOworCXJlcG9y dC0+YmxrX3JlYWRfdGltZSArPSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhidWZ1c2FnZS5z aGFyZWRfYmxrX3JlYWRfdGltZSk7CisJcmVwb3J0LT5ibGtfd3JpdGVfdGltZSA9IElOU1RS X1RJTUVfR0VUX01JTExJU0VDKGJ1ZnVzYWdlLmxvY2FsX2Jsa193cml0ZV90aW1lKTsKKwly ZXBvcnQtPmJsa193cml0ZV90aW1lID0gSU5TVFJfVElNRV9HRVRfTUlMTElTRUMoYnVmdXNh Z2Uuc2hhcmVkX2Jsa193cml0ZV90aW1lKTsKKwlyZXBvcnQtPmRlbGF5X3RpbWUgPSBWYWN1 dW1EZWxheVRpbWUgLSBjb3VudGVycy0+VmFjdXVtRGVsYXlUaW1lOwogCisJcmVwb3J0LT50 b3RhbF90aW1lID0gc2VjcyAqIDEwMDAuICsgdXNlY3MgLyAxMDAwLjsKKworCWlmICghcmVs LT5wZ3N0YXRfaW5mbyB8fCAhcGdzdGF0X3RyYWNrX2NvdW50cykKKwkJLyoKKwkJICogaWYg c29tZXRoaW5nIGdvZXMgd3Jvbmcgb3IgYW4gdXNlciBkb2Vzbid0IHdhbnQgdG8gdHJhY2sg YSBkYXRhYmFzZQorCQkgKiBhY3Rpdml0eSAtIGp1c3Qgc3VwcHJlc3MgaXQuCisJCSAqLwor CQlyZXR1cm47CisKKwlyZXBvcnQtPmJsa3NfZmV0Y2hlZCA9CisJCXJlbC0+cGdzdGF0X2lu Zm8tPmNvdW50cy5ibG9ja3NfZmV0Y2hlZCAtIGNvdW50ZXJzLT5ibG9ja3NfZmV0Y2hlZDsK KwlyZXBvcnQtPmJsa3NfaGl0ID0KKwkJcmVsLT5wZ3N0YXRfaW5mby0+Y291bnRzLmJsb2Nr c19oaXQgLSBjb3VudGVycy0+YmxvY2tzX2hpdDsKK30KIAogLyoKICAqIEhlbHBlciB0byBz ZXQgdXAgdGhlIGVhZ2VyIHNjYW5uaW5nIHN0YXRlIGZvciB2YWN1dW1pbmcgYSBzaW5nbGUg cmVsYXRpb24uCkBAIC02MzEsNyArNzQ1LDE0IEBAIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlv biByZWwsIFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCVdhbFVzYWdlCXN0YXJ0d2FsdXNhZ2Ug PSBwZ1dhbFVzYWdlOwogCUJ1ZmZlclVzYWdlIHN0YXJ0YnVmZmVydXNhZ2UgPSBwZ0J1ZmZl clVzYWdlOwogCUVycm9yQ29udGV4dENhbGxiYWNrIGVycmNhbGxiYWNrOworCUxWRXh0U3Rh dENvdW50ZXJzIGV4dFZhY0NvdW50ZXJzOworCUV4dFZhY1JlcG9ydCBleHRWYWNSZXBvcnQ7 CiAJY2hhcgkgICoqaW5kbmFtZXMgPSBOVUxMOworCUV4dFZhY1JlcG9ydCBhbGx6ZXJvOwor CisJLyogSW5pdGlhbGl6ZSB2YWN1dW0gc3RhdGlzdGljcyAqLworCW1lbXNldCgmYWxsemVy bywgMCwgc2l6ZW9mKEV4dFZhY1JlcG9ydCkpOworCWV4dFZhY1JlcG9ydCA9IGFsbHplcm87 CiAKIAl2ZXJib3NlID0gKHBhcmFtcy0+b3B0aW9ucyAmIFZBQ09QVF9WRVJCT1NFKSAhPSAw OwogCWluc3RydW1lbnQgPSAodmVyYm9zZSB8fCAoQW1BdXRvVmFjdXVtV29ya2VyUHJvY2Vz cygpICYmCkBAIC02NTEsNyArNzcyLDcgQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJl bCwgVmFjdXVtUGFyYW1zICpwYXJhbXMsCiAKIAlwZ3N0YXRfcHJvZ3Jlc3Nfc3RhcnRfY29t bWFuZChQUk9HUkVTU19DT01NQU5EX1ZBQ1VVTSwKIAkJCQkJCQkJICBSZWxhdGlvbkdldFJl bGlkKHJlbCkpOwotCisJZXh0dmFjX3N0YXRzX3N0YXJ0KHJlbCwgJmV4dFZhY0NvdW50ZXJz KTsKIAkvKgogCSAqIFNldHVwIGVycm9yIHRyYWNlYmFjayBzdXBwb3J0IGZvciBlcmVwb3J0 KCkgZmlyc3QuICBUaGUgaWRlYSBpcyB0byBzZXQKIAkgKiB1cCBhbiBlcnJvciBjb250ZXh0 IGNhbGxiYWNrIHRvIGRpc3BsYXkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBhbnkKQEAg LTY2OCw2ICs3ODksNyBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLCBWYWN1dW1Q YXJhbXMgKnBhcmFtcywKIAl2YWNyZWwtPmRibmFtZSA9IGdldF9kYXRhYmFzZV9uYW1lKE15 RGF0YWJhc2VJZCk7CiAJdmFjcmVsLT5yZWxuYW1lc3BhY2UgPSBnZXRfbmFtZXNwYWNlX25h bWUoUmVsYXRpb25HZXROYW1lc3BhY2UocmVsKSk7CiAJdmFjcmVsLT5yZWxuYW1lID0gcHN0 cmR1cChSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKTsKKwl2YWNyZWwtPnJlbG9pZCA9 IFJlbGF0aW9uR2V0UmVsaWQocmVsKTsKIAl2YWNyZWwtPmluZG5hbWUgPSBOVUxMOwogCXZh Y3JlbC0+cGhhc2UgPSBWQUNVVU1fRVJSQ0JfUEhBU0VfVU5LTk9XTjsKIAl2YWNyZWwtPnZl cmJvc2UgPSB2ZXJib3NlOwpAQCAtNzU2LDYgKzg3OCw3IEBAIGhlYXBfdmFjdXVtX3JlbChS ZWxhdGlvbiByZWwsIFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCXZhY3JlbC0+dm1fbmV3X3Zp c2libGVfcGFnZXMgPSAwOwogCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2Vz ID0gMDsKIAl2YWNyZWwtPnZtX25ld19mcm96ZW5fcGFnZXMgPSAwOworCXZhY3JlbC0+d3Jh cGFyb3VuZF9mYWlsc2FmZV9jb3VudCA9IDA7CiAJdmFjcmVsLT5yZWxfcGFnZXMgPSBvcmln X3JlbF9wYWdlcyA9IFJlbGF0aW9uR2V0TnVtYmVyT2ZCbG9ja3MocmVsKTsKIAogCS8qCkBA IC05MTQsNiArMTAzNywyNiBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLCBWYWN1 dW1QYXJhbXMgKnBhcmFtcywKIAkJCQkJCXZhY3JlbC0+TmV3UmVsZnJvemVuWGlkLCB2YWNy ZWwtPk5ld1JlbG1pbk14aWQsCiAJCQkJCQkmZnJvemVueGlkX3VwZGF0ZWQsICZtaW5tdWx0 aV91cGRhdGVkLCBmYWxzZSk7CiAKKwkvKiBNYWtlIGdlbmVyaWMgZXh0ZW5kZWQgdmFjdXVt IHN0YXRzIHJlcG9ydCAqLworCWV4dHZhY19zdGF0c19lbmQocmVsLCAmZXh0VmFjQ291bnRl cnMsICZleHRWYWNSZXBvcnQpOworCisJaWYocGdzdGF0X3RyYWNrX3ZhY3V1bV9zdGF0aXN0 aWNzKQorCXsKKwkJLyogRmlsbCBoZWFwLXNwZWNpZmljIGV4dGVuZGVkIHN0YXRzIGZpZWxk cyAqLworCQlleHRWYWNSZXBvcnQucGFnZXNfc2Nhbm5lZCA9IHZhY3JlbC0+c2Nhbm5lZF9w YWdlczsKKwkJZXh0VmFjUmVwb3J0LnBhZ2VzX3JlbW92ZWQgPSB2YWNyZWwtPnJlbW92ZWRf cGFnZXM7CisJCWV4dFZhY1JlcG9ydC52bV9uZXdfZnJvemVuX3BhZ2VzID0gdmFjcmVsLT52 bV9uZXdfZnJvemVuX3BhZ2VzOworCQlleHRWYWNSZXBvcnQudm1fbmV3X3Zpc2libGVfcGFn ZXMgPSB2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzOworCQlleHRWYWNSZXBvcnQudm1f bmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzID0gdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9mcm96 ZW5fcGFnZXM7CisJCWV4dFZhY1JlcG9ydC50dXBsZXNfZGVsZXRlZCA9IHZhY3JlbC0+dHVw bGVzX2RlbGV0ZWQ7CisJCWV4dFZhY1JlcG9ydC50dXBsZXNfZnJvemVuID0gdmFjcmVsLT50 dXBsZXNfZnJvemVuOworCQlleHRWYWNSZXBvcnQucmVjZW50bHlfZGVhZF90dXBsZXMgPSB2 YWNyZWwtPnJlY2VudGx5X2RlYWRfdHVwbGVzOworCQlleHRWYWNSZXBvcnQubWlzc2VkX2Rl YWRfdHVwbGVzID0gdmFjcmVsLT5taXNzZWRfZGVhZF90dXBsZXM7CisJCWV4dFZhY1JlcG9y dC5taXNzZWRfZGVhZF9wYWdlcyA9IHZhY3JlbC0+bWlzc2VkX2RlYWRfcGFnZXM7CisJCWV4 dFZhY1JlcG9ydC5pbmRleF92YWN1dW1fY291bnQgPSB2YWNyZWwtPm51bV9pbmRleF9zY2Fu czsKKwkJZXh0VmFjUmVwb3J0LndyYXBhcm91bmRfZmFpbHNhZmVfY291bnQgPSB2YWNyZWwt PndyYXBhcm91bmRfZmFpbHNhZmVfY291bnQ7CisJfQorCiAJLyoKIAkgKiBSZXBvcnQgcmVz dWx0cyB0byB0aGUgY3VtdWxhdGl2ZSBzdGF0cyBzeXN0ZW0sIHRvby4KIAkgKgpAQCAtOTI5 LDcgKzEwNzIsOCBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLCBWYWN1dW1QYXJh bXMgKnBhcmFtcywKIAkJCQkJCSBNYXgodmFjcmVsLT5uZXdfbGl2ZV90dXBsZXMsIDApLAog CQkJCQkJIHZhY3JlbC0+cmVjZW50bHlfZGVhZF90dXBsZXMgKwogCQkJCQkJIHZhY3JlbC0+ bWlzc2VkX2RlYWRfdHVwbGVzLAotCQkJCQkJIHN0YXJ0dGltZSk7CisJCQkJCQkgc3RhcnR0 aW1lLAorCQkJCQkJICZleHRWYWNSZXBvcnQpOwogCXBnc3RhdF9wcm9ncmVzc19lbmRfY29t bWFuZCgpOwogCiAJaWYgKGluc3RydW1lbnQpCkBAIC0yOTQ0LDYgKzMwODgsNyBAQCBsYXp5 X2NoZWNrX3dyYXBhcm91bmRfZmFpbHNhZmUoTFZSZWxTdGF0ZSAqdmFjcmVsKQogCQlpbnQ2 NAkJcHJvZ3Jlc3NfdmFsWzJdID0gezAsIDB9OwogCiAJCVZhY3V1bUZhaWxzYWZlQWN0aXZl ID0gdHJ1ZTsKKwkJdmFjcmVsLT53cmFwYXJvdW5kX2ZhaWxzYWZlX2NvdW50ICsrOwogCiAJ CS8qCiAJCSAqIEFiYW5kb24gdXNlIG9mIGEgYnVmZmVyIGFjY2VzcyBzdHJhdGVneSB0byBh bGxvdyB1c2Ugb2YgYWxsIG9mCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92aXNpYmlsaXR5bWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5 bWFwLmMKaW5kZXggNzQ1YTA0ZWYyNmUuLjA3NjIzYTA0NWZhIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCkBAIC05MSw2ICs5MSw3IEBACiAjaW5jbHVk ZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3V0aWxzLmgi CiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVk ZSAicG9ydC9wZ19iaXR1dGlscy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9zbWdyLmgiCkBAIC0xNjAsNiArMTYxLDE1IEBAIHZpc2liaWxp dHltYXBfY2xlYXIoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIg dm1idWYsIHVpbnQ4IGZsYWdzCiAKIAlpZiAobWFwW21hcEJ5dGVdICYgbWFzaykKIAl7CisJ CS8qCisJCSAqIEFzIHBhcnQgb2YgdmFjdXVtIHN0YXRzLCB0cmFjayBob3cgb2Z0ZW4gYWxs LXZpc2libGUgb3IgYWxsLWZyb3plbgorCQkgKiBiaXRzIGFyZSBjbGVhcmVkLgorCQkgKi8K KwkJaWYgKG1hcFttYXBCeXRlXSA+PiBtYXBPZmZzZXQgJiBmbGFncyAmIFZJU0lCSUxJVFlN QVBfQUxMX1ZJU0lCTEUpCisJCQlwZ3N0YXRfY291bnRfdm1fcmV2X2FsbF92aXNpYmxlKHJl bCk7CisJCWlmIChtYXBbbWFwQnl0ZV0gPj4gbWFwT2Zmc2V0ICYgZmxhZ3MgJiBWSVNJQklM SVRZTUFQX0FMTF9GUk9aRU4pCisJCQlwZ3N0YXRfY291bnRfdm1fcmV2X2FsbF9mcm96ZW4o cmVsKTsKKwogCQltYXBbbWFwQnl0ZV0gJj0gfm1hc2s7CiAKIAkJTWFya0J1ZmZlckRpcnR5 KHZtYnVmKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdz LnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCBlZmYw OTkwOTU3ZS4uNzUyNmM4OTczZWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv c3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3 cy5zcWwKQEAgLTcwMCw3ICs3MDAsOSBAQCBDUkVBVEUgVklFVyBwZ19zdGF0X2FsbF90YWJs ZXMgQVMKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3RvdGFsX3ZhY3V1bV90aW1lKEMub2lk KSBBUyB0b3RhbF92YWN1dW1fdGltZSwKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3RvdGFs X2F1dG92YWN1dW1fdGltZShDLm9pZCkgQVMgdG90YWxfYXV0b3ZhY3V1bV90aW1lLAogICAg ICAgICAgICAgcGdfc3RhdF9nZXRfdG90YWxfYW5hbHl6ZV90aW1lKEMub2lkKSBBUyB0b3Rh bF9hbmFseXplX3RpbWUsCi0gICAgICAgICAgICBwZ19zdGF0X2dldF90b3RhbF9hdXRvYW5h bHl6ZV90aW1lKEMub2lkKSBBUyB0b3RhbF9hdXRvYW5hbHl6ZV90aW1lCisgICAgICAgICAg ICBwZ19zdGF0X2dldF90b3RhbF9hdXRvYW5hbHl6ZV90aW1lKEMub2lkKSBBUyB0b3RhbF9h dXRvYW5hbHl6ZV90aW1lLAorICAgICAgICAgICAgcGdfc3RhdF9nZXRfcmV2X2FsbF9mcm96 ZW5fcGFnZXMoQy5vaWQpIEFTIHJldl9hbGxfZnJvemVuX3BhZ2VzLAorICAgICAgICAgICAg cGdfc3RhdF9nZXRfcmV2X2FsbF92aXNpYmxlX3BhZ2VzKEMub2lkKSBBUyByZXZfYWxsX3Zp c2libGVfcGFnZXMKICAgICBGUk9NIHBnX2NsYXNzIEMgTEVGVCBKT0lOCiAgICAgICAgICBw Z19pbmRleCBJIE9OIEMub2lkID0gSS5pbmRyZWxpZAogICAgICAgICAgTEVGVCBKT0lOIHBn X25hbWVzcGFjZSBOIE9OIChOLm9pZCA9IEMucmVsbmFtZXNwYWNlKQpAQCAtMTM5NCwzICsx Mzk2LDUxIEBAIENSRUFURSBWSUVXIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0YXRzIEFTCiAK IENSRUFURSBWSUVXIHBnX3dhaXRfZXZlbnRzIEFTCiAgICAgU0VMRUNUICogRlJPTSBwZ19n ZXRfd2FpdF9ldmVudHMoKTsKKy0tCistLSBTaG93IGV4dGVuZGVkIGN1bXVsYXRpdmUgc3Rh dGlzdGljcyBvbiBhIHZhY3V1bSBvcGVyYXRpb24gb3ZlciBhbGwgdGFibGVzIGFuZAorLS0g ZGF0YWJhc2VzIG9mIHRoZSBpbnN0YW5jZS4KKy0tIFVzZSBJbnZhbGlkIE9pZCAiMCIgYXMg YW4gaW5wdXQgcmVsYXRpb24gaWQgdG8gZ2V0IHN0YXQgb24gZWFjaCB0YWJsZSBpbiBhCist LSBkYXRhYmFzZS4KKy0tCisKK0NSRUFURSBWSUVXIHBnX3N0YXRfdmFjdXVtX3RhYmxlcyBB UworU0VMRUNUCisgIG5zLm5zcG5hbWUgQVMgc2NoZW1hbmFtZSwKKyAgcmVsLnJlbG5hbWUg QVMgcmVsbmFtZSwKKyAgc3RhdHMucmVsaWQgYXMgcmVsaWQsCisKKyAgc3RhdHMudG90YWxf Ymxrc19yZWFkIEFTIHRvdGFsX2Jsa3NfcmVhZCwKKyAgc3RhdHMudG90YWxfYmxrc19oaXQg QVMgdG90YWxfYmxrc19oaXQsCisgIHN0YXRzLnRvdGFsX2Jsa3NfZGlydGllZCBBUyB0b3Rh bF9ibGtzX2RpcnRpZWQsCisgIHN0YXRzLnRvdGFsX2Jsa3Nfd3JpdHRlbiBBUyB0b3RhbF9i bGtzX3dyaXR0ZW4sCisKKyAgc3RhdHMucmVsX2Jsa3NfcmVhZCBBUyByZWxfYmxrc19yZWFk LAorICBzdGF0cy5yZWxfYmxrc19oaXQgQVMgcmVsX2Jsa3NfaGl0LAorCisgIHN0YXRzLnBh Z2VzX3NjYW5uZWQgQVMgcGFnZXNfc2Nhbm5lZCwKKyAgc3RhdHMucGFnZXNfcmVtb3ZlZCBB UyBwYWdlc19yZW1vdmVkLAorICBzdGF0cy52bV9uZXdfZnJvemVuX3BhZ2VzIEFTIHZtX25l d19mcm96ZW5fcGFnZXMsCisgIHN0YXRzLnZtX25ld192aXNpYmxlX3BhZ2VzIEFTIHZtX25l d192aXNpYmxlX3BhZ2VzLAorICBzdGF0cy52bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMg QVMgdm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzLAorICBzdGF0cy5taXNzZWRfZGVhZF9w YWdlcyBBUyBtaXNzZWRfZGVhZF9wYWdlcywKKyAgc3RhdHMudHVwbGVzX2RlbGV0ZWQgQVMg dHVwbGVzX2RlbGV0ZWQsCisgIHN0YXRzLnR1cGxlc19mcm96ZW4gQVMgdHVwbGVzX2Zyb3pl biwKKyAgc3RhdHMucmVjZW50bHlfZGVhZF90dXBsZXMgQVMgcmVjZW50bHlfZGVhZF90dXBs ZXMsCisgIHN0YXRzLm1pc3NlZF9kZWFkX3R1cGxlcyBBUyBtaXNzZWRfZGVhZF90dXBsZXMs CisKKyAgc3RhdHMud3JhcGFyb3VuZF9mYWlsc2FmZSBBUyB3cmFwYXJvdW5kX2ZhaWxzYWZl LAorICBzdGF0cy5pbmRleF92YWN1dW1fY291bnQgQVMgaW5kZXhfdmFjdXVtX2NvdW50LAor ICBzdGF0cy53YWxfcmVjb3JkcyBBUyB3YWxfcmVjb3JkcywKKyAgc3RhdHMud2FsX2ZwaSBB UyB3YWxfZnBpLAorICBzdGF0cy53YWxfYnl0ZXMgQVMgd2FsX2J5dGVzLAorCisgIHN0YXRz LmJsa19yZWFkX3RpbWUgQVMgYmxrX3JlYWRfdGltZSwKKyAgc3RhdHMuYmxrX3dyaXRlX3Rp bWUgQVMgYmxrX3dyaXRlX3RpbWUsCisKKyAgc3RhdHMuZGVsYXlfdGltZSBBUyBkZWxheV90 aW1lLAorICBzdGF0cy50b3RhbF90aW1lIEFTIHRvdGFsX3RpbWUKKworRlJPTSBwZ19jbGFz cyByZWwKKyAgSk9JTiBwZ19uYW1lc3BhY2UgbnMgT04gbnMub2lkID0gcmVsLnJlbG5hbWVz cGFjZSwKKyAgTEFURVJBTCBwZ19zdGF0X2dldF92YWN1dW1fdGFibGVzKHJlbC5vaWQpIHN0 YXRzCitXSEVSRSByZWwucmVsa2luZCA9ICdyJzsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMKaW5k ZXggMDIzOWQ5YmFlNjUuLmFlYTJjZjMwN2RhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwpA QCAtMTE0LDYgKzExNCw5IEBAIHBnX2F0b21pY191aW50MzIgKlZhY3V1bVNoYXJlZENvc3RC YWxhbmNlID0gTlVMTDsKIHBnX2F0b21pY191aW50MzIgKlZhY3V1bUFjdGl2ZU5Xb3JrZXJz ID0gTlVMTDsKIGludAkJCVZhY3V1bUNvc3RCYWxhbmNlTG9jYWwgPSAwOwogCisvKiBDdW11 bGF0aXZlIHN0b3JhZ2UgdG8gcmVwb3J0IHRvdGFsIHZhY3V1bSBkZWxheSB0aW1lLiAqLwor ZG91YmxlIFZhY3V1bURlbGF5VGltZSA9IDA7IC8qIG1zZWMuICovCisKIC8qIG5vbi1leHBv cnQgZnVuY3Rpb24gcHJvdG90eXBlcyAqLwogc3RhdGljIExpc3QgKmV4cGFuZF92YWN1dW1f cmVsKFZhY3V1bVJlbGF0aW9uICp2cmVsLAogCQkJCQkJCSAgIE1lbW9yeUNvbnRleHQgdmFj X2NvbnRleHQsIGludCBvcHRpb25zKTsKQEAgLTI0OTcsNiArMjUwMCw3IEBAIHZhY3V1bV9k ZWxheV9wb2ludChib29sIGlzX2FuYWx5emUpCiAJCQlleGl0KDEpOwogCiAJCVZhY3V1bUNv c3RCYWxhbmNlID0gMDsKKwkJVmFjdXVtRGVsYXlUaW1lICs9IG1zZWM7CiAKIAkJLyoKIAkJ ICogQmFsYW5jZSBhbmQgdXBkYXRlIGxpbWl0IHZhbHVlcyBmb3IgYXV0b3ZhY3V1bSB3b3Jr ZXJzLiBXZSBtdXN0IGRvCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1 dW1wYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwpp bmRleCAyYjlkNTQ4Y2RlYi4uNzkyNGM1MjZjYjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv dmFjdXVtcGFyYWxsZWwuYwpAQCAtMTA1NCw2ICsxMDU0LDcgQEAgcGFyYWxsZWxfdmFjdXVt X21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCS8qIFNldCBjb3N0LWJh c2VkIHZhY3V1bSBkZWxheSAqLwogCVZhY3V1bVVwZGF0ZUNvc3RzKCk7CiAJVmFjdXVtQ29z dEJhbGFuY2UgPSAwOworCVZhY3V1bURlbGF5VGltZSA9IDA7CiAJVmFjdXVtQ29zdEJhbGFu Y2VMb2NhbCA9IDA7CiAJVmFjdXVtU2hhcmVkQ29zdEJhbGFuY2UgPSAmKHNoYXJlZC0+Y29z dF9iYWxhbmNlKTsKIAlWYWN1dW1BY3RpdmVOV29ya2VycyA9ICYoc2hhcmVkLT5hY3RpdmVf bndvcmtlcnMpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdz dGF0LmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXQuYwppbmRleCAzMTY4 YjgyNWUyNS4uODI2YTU2ODViMmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fj dGl2aXR5L3Bnc3RhdC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3Rh dC5jCkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIHZvaWQgcGdzdGF0X3Jlc2V0X2FmdGVy X2ZhaWx1cmUodm9pZCk7CiBzdGF0aWMgYm9vbCBwZ3N0YXRfZmx1c2hfcGVuZGluZ19lbnRy aWVzKGJvb2wgbm93YWl0KTsKIAogc3RhdGljIHZvaWQgcGdzdGF0X3ByZXBfc25hcHNob3Qo dm9pZCk7Ci1zdGF0aWMgdm9pZCBwZ3N0YXRfYnVpbGRfc25hcHNob3Qodm9pZCk7CitzdGF0 aWMgdm9pZCBwZ3N0YXRfYnVpbGRfc25hcHNob3QoUGdTdGF0X0tpbmQgc3RhdEtpbmQpOwog c3RhdGljIHZvaWQgcGdzdGF0X2J1aWxkX3NuYXBzaG90X2ZpeGVkKFBnU3RhdF9LaW5kIGtp bmQpOwogCiBzdGF0aWMgaW5saW5lIGJvb2wgcGdzdGF0X2lzX2tpbmRfdmFsaWQoUGdTdGF0 X0tpbmQga2luZCk7CkBAIC0yMDQsNyArMjA0LDcgQEAgc3RhdGljIGlubGluZSBib29sIHBn c3RhdF9pc19raW5kX3ZhbGlkKFBnU3RhdF9LaW5kIGtpbmQpOwogCiBib29sCQlwZ3N0YXRf dHJhY2tfY291bnRzID0gZmFsc2U7CiBpbnQJCQlwZ3N0YXRfZmV0Y2hfY29uc2lzdGVuY3kg PSBQR1NUQVRfRkVUQ0hfQ09OU0lTVEVOQ1lfQ0FDSEU7Ci0KK2Jvb2wJCXBnc3RhdF90cmFj a192YWN1dW1fc3RhdGlzdGljcyA9IHRydWU7CiAKIC8qIC0tLS0tLS0tLS0KICAqIHN0YXRl IHNoYXJlZCB3aXRoIHBnc3RhdF8qLmMKQEAgLTI2MSw3ICsyNjEsNiBAQCBzdGF0aWMgYm9v bCBwZ3N0YXRfaXNfaW5pdGlhbGl6ZWQgPSBmYWxzZTsKIHN0YXRpYyBib29sIHBnc3RhdF9p c19zaHV0ZG93biA9IGZhbHNlOwogI2VuZGlmCiAKLQogLyoKICAqIFRoZSBkaWZmZXJlbnQg a2luZHMgb2YgYnVpbHQtaW4gc3RhdGlzdGljcy4KICAqCkBAIC05MDEsNyArOTAwLDYgQEAg cGdzdGF0X3Jlc2V0X29mX2tpbmQoUGdTdGF0X0tpbmQga2luZCkKIAkJcGdzdGF0X3Jlc2V0 X2VudHJpZXNfb2Zfa2luZChraW5kLCB0cyk7CiB9CiAKLQogLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBGZXRj aGluZyBvZiBzdGF0cwogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC05NzAsNyArOTY4LDcgQEAgcGdzdGF0X2Zl dGNoX2VudHJ5KFBnU3RhdF9LaW5kIGtpbmQsIE9pZCBkYm9pZCwgdWludDY0IG9iamlkKQog CiAJLyogaWYgd2UgbmVlZCB0byBidWlsZCBhIGZ1bGwgc25hcHNob3QsIGRvIHNvICovCiAJ aWYgKHBnc3RhdF9mZXRjaF9jb25zaXN0ZW5jeSA9PSBQR1NUQVRfRkVUQ0hfQ09OU0lTVEVO Q1lfU05BUFNIT1QpCi0JCXBnc3RhdF9idWlsZF9zbmFwc2hvdCgpOworCQlwZ3N0YXRfYnVp bGRfc25hcHNob3QoUEdTVEFUX0tJTkRfSU5WQUxJRCk7CiAKIAkvKiBpZiBjYWNoaW5nIGlz IGRlc2lyZWQsIGxvb2sgdXAgaW4gY2FjaGUgKi8KIAlpZiAocGdzdGF0X2ZldGNoX2NvbnNp c3RlbmN5ID4gUEdTVEFUX0ZFVENIX0NPTlNJU1RFTkNZX05PTkUpCkBAIC0xMDg2LDcgKzEw ODQsNyBAQCBwZ3N0YXRfc25hcHNob3RfZml4ZWQoUGdTdGF0X0tpbmQga2luZCkKIAkJcGdz dGF0X2NsZWFyX3NuYXBzaG90KCk7CiAKIAlpZiAocGdzdGF0X2ZldGNoX2NvbnNpc3RlbmN5 ID09IFBHU1RBVF9GRVRDSF9DT05TSVNURU5DWV9TTkFQU0hPVCkKLQkJcGdzdGF0X2J1aWxk X3NuYXBzaG90KCk7CisJCXBnc3RhdF9idWlsZF9zbmFwc2hvdChQR1NUQVRfS0lORF9JTlZB TElEKTsKIAllbHNlCiAJCXBnc3RhdF9idWlsZF9zbmFwc2hvdF9maXhlZChraW5kKTsKIApA QCAtMTEzNyw3ICsxMTM1LDcgQEAgcGdzdGF0X3ByZXBfc25hcHNob3Qodm9pZCkKIH0KIAog c3RhdGljIHZvaWQKLXBnc3RhdF9idWlsZF9zbmFwc2hvdCh2b2lkKQorcGdzdGF0X2J1aWxk X3NuYXBzaG90KFBnU3RhdF9LaW5kIHN0YXRLaW5kKQogewogCWRzaGFzaF9zZXFfc3RhdHVz IGhzdGF0OwogCVBnU3RhdFNoYXJlZF9IYXNoRW50cnkgKnA7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9yZWxhdGlvbi5jCmluZGV4IGQ2NDU5NWExNjVjLi4w MjcyZGQxZjM5MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdz dGF0X3JlbGF0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0 X3JlbGF0aW9uLmMKQEAgLTQ3LDYgKzQ3LDggQEAgc3RhdGljIHZvaWQgYWRkX3RhYnN0YXRf eGFjdF9sZXZlbChQZ1N0YXRfVGFibGVTdGF0dXMgKnBnc3RhdF9pbmZvLCBpbnQgbmVzdF9s ZXYKIHN0YXRpYyB2b2lkIGVuc3VyZV90YWJzdGF0X3hhY3RfbGV2ZWwoUGdTdGF0X1RhYmxl U3RhdHVzICpwZ3N0YXRfaW5mbyk7CiBzdGF0aWMgdm9pZCBzYXZlX3RydW5jZHJvcF9jb3Vu dGVycyhQZ1N0YXRfVGFibGVYYWN0U3RhdHVzICp0cmFucywgYm9vbCBpc19kcm9wKTsKIHN0 YXRpYyB2b2lkIHJlc3RvcmVfdHJ1bmNkcm9wX2NvdW50ZXJzKFBnU3RhdF9UYWJsZVhhY3RT dGF0dXMgKnRyYW5zKTsKK3N0YXRpYyB2b2lkIHBnc3RhdF9hY2N1bXVsYXRlX2V4dHZhY19z dGF0cyhFeHRWYWNSZXBvcnQgKmRzdCwgRXh0VmFjUmVwb3J0ICpzcmMsCisJCQkJCQkJICAg Ym9vbCBhY2N1bXVsYXRlX3JlbHR5cGVfc3BlY2lmaWNfaW5mbyk7CiAKIAogLyoKQEAgLTIw OSw3ICsyMTEsNyBAQCBwZ3N0YXRfZHJvcF9yZWxhdGlvbihSZWxhdGlvbiByZWwpCiB2b2lk CiBwZ3N0YXRfcmVwb3J0X3ZhY3V1bShPaWQgdGFibGVvaWQsIGJvb2wgc2hhcmVkLAogCQkJ CQkgUGdTdGF0X0NvdW50ZXIgbGl2ZXR1cGxlcywgUGdTdGF0X0NvdW50ZXIgZGVhZHR1cGxl cywKLQkJCQkJIFRpbWVzdGFtcFR6IHN0YXJ0dGltZSkKKwkJCQkJIFRpbWVzdGFtcFR6IHN0 YXJ0dGltZSwgRXh0VmFjUmVwb3J0ICpwYXJhbXMpCiB7CiAJUGdTdGF0X0VudHJ5UmVmICpl bnRyeV9yZWY7CiAJUGdTdGF0U2hhcmVkX1JlbGF0aW9uICpzaHRhYmVudHJ5OwpAQCAtMjM1 LDYgKzIzNyw4IEBAIHBnc3RhdF9yZXBvcnRfdmFjdXVtKE9pZCB0YWJsZW9pZCwgYm9vbCBz aGFyZWQsCiAJdGFiZW50cnktPmxpdmVfdHVwbGVzID0gbGl2ZXR1cGxlczsKIAl0YWJlbnRy eS0+ZGVhZF90dXBsZXMgPSBkZWFkdHVwbGVzOwogCisJcGdzdGF0X2FjY3VtdWxhdGVfZXh0 dmFjX3N0YXRzKCZ0YWJlbnRyeS0+dmFjdXVtX2V4dCwgcGFyYW1zLCB0cnVlKTsKKwogCS8q CiAJICogSXQgaXMgcXVpdGUgcG9zc2libGUgdGhhdCBhIG5vbi1hZ2dyZXNzaXZlIFZBQ1VV TSBlbmRlZCB1cCBza2lwcGluZwogCSAqIHZhcmlvdXMgcGFnZXMsIGhvd2V2ZXIsIHdlJ2xs IHplcm8gdGhlIGluc2VydCBjb3VudGVyIGhlcmUgcmVnYXJkbGVzcy4KQEAgLTg3Miw2ICs4 NzYsOSBAQCBwZ3N0YXRfcmVsYXRpb25fZmx1c2hfY2IoUGdTdGF0X0VudHJ5UmVmICplbnRy eV9yZWYsIGJvb2wgbm93YWl0KQogCXRhYmVudHJ5LT5ibG9ja3NfZmV0Y2hlZCArPSBsc3Rh dHMtPmNvdW50cy5ibG9ja3NfZmV0Y2hlZDsKIAl0YWJlbnRyeS0+YmxvY2tzX2hpdCArPSBs c3RhdHMtPmNvdW50cy5ibG9ja3NfaGl0OwogCisJdGFiZW50cnktPnJldl9hbGxfZnJvemVu X3BhZ2VzICs9IGxzdGF0cy0+Y291bnRzLnJldl9hbGxfZnJvemVuX3BhZ2VzOworCXRhYmVu dHJ5LT5yZXZfYWxsX3Zpc2libGVfcGFnZXMgKz0gbHN0YXRzLT5jb3VudHMucmV2X2FsbF92 aXNpYmxlX3BhZ2VzOworCiAJLyogQ2xhbXAgbGl2ZV90dXBsZXMgaW4gY2FzZSBvZiBuZWdh dGl2ZSBkZWx0YV9saXZlX3R1cGxlcyAqLwogCXRhYmVudHJ5LT5saXZlX3R1cGxlcyA9IE1h eCh0YWJlbnRyeS0+bGl2ZV90dXBsZXMsIDApOwogCS8qIExpa2V3aXNlIGZvciBkZWFkX3R1 cGxlcyAqLwpAQCAtOTk1LDMgKzEwMDIsNDAgQEAgcmVzdG9yZV90cnVuY2Ryb3BfY291bnRl cnMoUGdTdGF0X1RhYmxlWGFjdFN0YXR1cyAqdHJhbnMpCiAJCXRyYW5zLT50dXBsZXNfZGVs ZXRlZCA9IHRyYW5zLT5kZWxldGVkX3ByZV90cnVuY2Ryb3A7CiAJfQogfQorCitzdGF0aWMg dm9pZAorcGdzdGF0X2FjY3VtdWxhdGVfZXh0dmFjX3N0YXRzKEV4dFZhY1JlcG9ydCAqZHN0 LCBFeHRWYWNSZXBvcnQgKnNyYywKKwkJCQkJCQkgICBib29sIGFjY3VtdWxhdGVfcmVsdHlw ZV9zcGVjaWZpY19pbmZvKQoreworCWRzdC0+dG90YWxfYmxrc19yZWFkICs9IHNyYy0+dG90 YWxfYmxrc19yZWFkOworCWRzdC0+dG90YWxfYmxrc19oaXQgKz0gc3JjLT50b3RhbF9ibGtz X2hpdDsKKwlkc3QtPnRvdGFsX2Jsa3NfZGlydGllZCArPSBzcmMtPnRvdGFsX2Jsa3NfZGly dGllZDsKKwlkc3QtPnRvdGFsX2Jsa3Nfd3JpdHRlbiArPSBzcmMtPnRvdGFsX2Jsa3Nfd3Jp dHRlbjsKKwlkc3QtPndhbF9ieXRlcyArPSBzcmMtPndhbF9ieXRlczsKKwlkc3QtPndhbF9m cGkgKz0gc3JjLT53YWxfZnBpOworCWRzdC0+d2FsX3JlY29yZHMgKz0gc3JjLT53YWxfcmVj b3JkczsKKwlkc3QtPmJsa19yZWFkX3RpbWUgKz0gc3JjLT5ibGtfcmVhZF90aW1lOworCWRz dC0+YmxrX3dyaXRlX3RpbWUgKz0gc3JjLT5ibGtfd3JpdGVfdGltZTsKKwlkc3QtPmRlbGF5 X3RpbWUgKz0gc3JjLT5kZWxheV90aW1lOworCWRzdC0+dG90YWxfdGltZSArPSBzcmMtPnRv dGFsX3RpbWU7CisKKwlpZiAoIWFjY3VtdWxhdGVfcmVsdHlwZV9zcGVjaWZpY19pbmZvKQor CQlyZXR1cm47CisKKwlkc3QtPmJsa3NfZmV0Y2hlZCArPSBzcmMtPmJsa3NfZmV0Y2hlZDsK Kwlkc3QtPmJsa3NfaGl0ICs9IHNyYy0+Ymxrc19oaXQ7CisKKwlkc3QtPnBhZ2VzX3NjYW5u ZWQgKz0gc3JjLT5wYWdlc19zY2FubmVkOworCWRzdC0+cGFnZXNfcmVtb3ZlZCArPSBzcmMt PnBhZ2VzX3JlbW92ZWQ7CisJZHN0LT52bV9uZXdfZnJvemVuX3BhZ2VzICs9IHNyYy0+dm1f bmV3X2Zyb3plbl9wYWdlczsKKwlkc3QtPnZtX25ld192aXNpYmxlX3BhZ2VzICs9IHNyYy0+ dm1fbmV3X3Zpc2libGVfcGFnZXM7CisJZHN0LT52bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFn ZXMgKz0gc3JjLT52bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXM7CisJZHN0LT50dXBsZXNf ZGVsZXRlZCArPSBzcmMtPnR1cGxlc19kZWxldGVkOworCWRzdC0+dHVwbGVzX2Zyb3plbiAr PSBzcmMtPnR1cGxlc19mcm96ZW47CisJZHN0LT5yZWNlbnRseV9kZWFkX3R1cGxlcyArPSBz cmMtPnJlY2VudGx5X2RlYWRfdHVwbGVzOworCWRzdC0+aW5kZXhfdmFjdXVtX2NvdW50ICs9 IHNyYy0+aW5kZXhfdmFjdXVtX2NvdW50OworCWRzdC0+d3JhcGFyb3VuZF9mYWlsc2FmZV9j b3VudCArPSBzcmMtPndyYXBhcm91bmRfZmFpbHNhZmVfY291bnQ7CisJZHN0LT5taXNzZWRf ZGVhZF9wYWdlcyArPSBzcmMtPm1pc3NlZF9kZWFkX3BhZ2VzOworCWRzdC0+bWlzc2VkX2Rl YWRfdHVwbGVzICs9IHNyYy0+bWlzc2VkX2RlYWRfdHVwbGVzOworCit9ClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bn c3RhdGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYwppbmRl eCBlOTA5NmE4ODQ5Mi4uZTExMjc2MmVkMmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0 YXRmdW5jcy5jCkBAIC0xMDYsNiArMTA2LDEyIEBAIFBHX1NUQVRfR0VUX1JFTEVOVFJZX0lO VDY0KHR1cGxlc191cGRhdGVkKQogLyogcGdfc3RhdF9nZXRfdmFjdXVtX2NvdW50ICovCiBQ R19TVEFUX0dFVF9SRUxFTlRSWV9JTlQ2NCh2YWN1dW1fY291bnQpCiAKKy8qIHBnX3N0YXRf Z2V0X3Jldl9mcm96ZW5fcGFnZXMgKi8KK1BHX1NUQVRfR0VUX1JFTEVOVFJZX0lOVDY0KHJl dl9hbGxfZnJvemVuX3BhZ2VzKQorCisvKiBwZ19zdGF0X2dldF9yZXZfYWxsX3Zpc2libGVf cGFnZXMgKi8KK1BHX1NUQVRfR0VUX1JFTEVOVFJZX0lOVDY0KHJldl9hbGxfdmlzaWJsZV9w YWdlcykKKwogI2RlZmluZSBQR19TVEFUX0dFVF9SRUxFTlRSWV9GTE9BVDgoc3RhdCkJCQkJ CQlcCiBEYXR1bQkJCQkJCQkJCQkJCQkJCVwKIENwcENvbmNhdChwZ19zdGF0X2dldF8sc3Rh dCkoUEdfRlVOQ1RJT05fQVJHUykJCQkJCVwKQEAgLTIyNDQsMyArMjI1MCwxNDQgQEAgcGdf c3RhdF9oYXZlX3N0YXRzKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlQR19SRVRVUk5fQk9PTChw Z3N0YXRfaGF2ZV9lbnRyeShraW5kLCBkYm9pZCwgb2JqaWQpKTsKIH0KKworCisvKgorICog R2V0IHRoZSB2YWN1dW0gc3RhdGlzdGljcyBmb3IgdGhlIGhlYXAgdGFibGVzLgorICovCitE YXR1bQorcGdfc3RhdF9nZXRfdmFjdXVtX3RhYmxlcyhQR19GVU5DVElPTl9BUkdTKQorewor CSNkZWZpbmUgUEdfU1RBVF9HRVRfVkFDVVVNX1RBQkxFU19TVEFUU19DT0xTIDI2CisKKwlP aWQJCQkJCQlyZWxpZCA9IFBHX0dFVEFSR19PSUQoMCk7CisJUGdTdGF0X1N0YXRUYWJFbnRy eSAgICAgKnRhYmVudHJ5OworCUV4dFZhY1JlcG9ydCAJCQkqZXh0dmFjdXVtOworCVR1cGxl RGVzYwkJCQkgdHVwZGVzYzsKKwlEYXR1bQkJCQkJIHZhbHVlc1tQR19TVEFUX0dFVF9WQUNV VU1fVEFCTEVTX1NUQVRTX0NPTFNdID0gezB9OworCWJvb2wJCQkJCSBudWxsc1tQR19TVEFU X0dFVF9WQUNVVU1fVEFCTEVTX1NUQVRTX0NPTFNdID0gezB9OworCWNoYXIJCQkJCSBidWZb MjU2XTsKKwlpbnQJCQkJCQkgaSA9IDA7CisJRXh0VmFjUmVwb3J0IGFsbHplcm87CisKKwkv KiBJbml0aWFsaXNlIGF0dHJpYnV0ZXMgaW5mb3JtYXRpb24gaW4gdGhlIHR1cGxlIGRlc2Ny aXB0b3IgKi8KKwl0dXBkZXNjID0gQ3JlYXRlVGVtcGxhdGVUdXBsZURlc2MoUEdfU1RBVF9H RVRfVkFDVVVNX1RBQkxFU19TVEFUU19DT0xTKTsKKworCVR1cGxlRGVzY0luaXRFbnRyeSh0 dXBkZXNjLCAoQXR0ck51bWJlcikgKytpLCAicmVsaWQiLAorCQkJCQkgICBJTlQ0T0lELCAt MSwgMCk7CisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSArK2ks ICJ0b3RhbF9ibGtzX3JlYWQiLAorCQkJCQkgICBJTlQ4T0lELCAtMSwgMCk7CisJVHVwbGVE ZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSArK2ksICJ0b3RhbF9ibGtzX2hp dCIsCisJCQkJCSAgIElOVDhPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NJbml0RW50cnkodHVw ZGVzYywgKEF0dHJOdW1iZXIpICsraSwgInRvdGFsX2Jsa3NfZGlydGllZCIsCisJCQkJCSAg IElOVDhPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJO dW1iZXIpICsraSwgInRvdGFsX2Jsa3Nfd3JpdHRlbiIsCisJCQkJCSAgIElOVDhPSUQsIC0x LCAwKTsKKwlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpICsraSwg InJlbF9ibGtzX3JlYWQiLAorCQkJCQkgICBJTlQ4T0lELCAtMSwgMCk7CisJVHVwbGVEZXNj SW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSArK2ksICJyZWxfYmxrc19oaXQiLAor CQkJCQkgICBJTlQ4T0lELCAtMSwgMCk7CisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2Ms IChBdHRyTnVtYmVyKSArK2ksICJwYWdlc19zY2FubmVkIiwKKwkJCQkJICAgSU5UOE9JRCwg LTEsIDApOworCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgKytp LCAicGFnZXNfcmVtb3ZlZCIsCisJCQkJCSAgIElOVDhPSUQsIC0xLCAwKTsKKwlUdXBsZURl c2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpICsraSwgInZtX25ld19mcm96ZW5f cGFnZXMiLAorCQkJCQkgICBJTlQ4T0lELCAtMSwgMCk7CisJVHVwbGVEZXNjSW5pdEVudHJ5 KHR1cGRlc2MsIChBdHRyTnVtYmVyKSArK2ksICJ2bV9uZXdfdmlzaWJsZV9wYWdlcyIsCisJ CQkJCSAgIElOVDhPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywg KEF0dHJOdW1iZXIpICsraSwgInZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcyIsCisJCQkJ CSAgIElOVDhPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0 dHJOdW1iZXIpICsraSwgIm1pc3NlZF9kZWFkX3BhZ2VzIiwKKwkJCQkJICAgSU5UOE9JRCwg LTEsIDApOworCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgKytp LCAidHVwbGVzX2RlbGV0ZWQiLAorCQkJCQkgICBJTlQ4T0lELCAtMSwgMCk7CisJVHVwbGVE ZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSArK2ksICJ0dXBsZXNfZnJvemVu IiwKKwkJCQkJICAgSU5UOE9JRCwgLTEsIDApOworCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBk ZXNjLCAoQXR0ck51bWJlcikgKytpLCAicmVjZW50bHlfZGVhZF90dXBsZXMiLAorCQkJCQkg ICBJTlQ4T0lELCAtMSwgMCk7CisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRy TnVtYmVyKSArK2ksICJtaXNzZWRfZGVhZF90dXBsZXMiLAorCQkJCQkgICBJTlQ4T0lELCAt MSwgMCk7CisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSArK2ks ICJ3cmFwYXJvdW5kX2ZhaWxzYWZlX2NvdW50IiwKKwkJCQkJICAgSU5UNE9JRCwgLTEsIDAp OworCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgKytpLCAiaW5k ZXhfdmFjdXVtX2NvdW50IiwKKwkJCQkJICAgSU5UOE9JRCwgLTEsIDApOworCVR1cGxlRGVz Y0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgKytpLCAid2FsX3JlY29yZHMiLAor CQkJCQkgICBJTlQ4T0lELCAtMSwgMCk7CisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2Ms IChBdHRyTnVtYmVyKSArK2ksICJ3YWxfZnBpIiwKKwkJCQkJICAgSU5UOE9JRCwgLTEsIDAp OworCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgKytpLCAid2Fs X2J5dGVzIiwKKwkJCQkJICAgTlVNRVJJQ09JRCwgLTEsIDApOworCisJVHVwbGVEZXNjSW5p dEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSArK2ksICJibGtfcmVhZF90aW1lIiwKKwkJ CQkJICAgRkxPQVQ4T0lELCAtMSwgMCk7CisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2Ms IChBdHRyTnVtYmVyKSArK2ksICJibGtfd3JpdGVfdGltZSIsCisJCQkJCSAgIEZMT0FUOE9J RCwgLTEsIDApOworCisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVy KSArK2ksICJkZWxheV90aW1lIiwKKwkJCQkJICAgRkxPQVQ4T0lELCAtMSwgMCk7CisJVHVw bGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSArK2ksICJ0b3RhbF90aW1l IiwKKwkJCQkJICAgRkxPQVQ4T0lELCAtMSwgMCk7CisKKwlBc3NlcnQoaSA9PSBQR19TVEFU X0dFVF9WQUNVVU1fVEFCTEVTX1NUQVRTX0NPTFMpOworCisJQmxlc3NUdXBsZURlc2ModHVw ZGVzYyk7CisKKwl0YWJlbnRyeSA9IHBnc3RhdF9mZXRjaF9zdGF0X3RhYmVudHJ5KHJlbGlk KTsKKworCWlmICh0YWJlbnRyeSA9PSBOVUxMKQorCXsKKwkJLyogSWYgdGhlIHN1YnNjcmlw dGlvbiBpcyBub3QgZm91bmQsIGluaXRpYWxpc2UgaXRzIHN0YXRzICovCisJCW1lbXNldCgm YWxsemVybywgMCwgc2l6ZW9mKEV4dFZhY1JlcG9ydCkpOworCQlleHR2YWN1dW0gPSAmYWxs emVybzsKKwl9CisJZWxzZQorCXsKKwkJZXh0dmFjdXVtID0gJih0YWJlbnRyeS0+dmFjdXVt X2V4dCk7CisJfQorCisJaSA9IDA7CisKKwl2YWx1ZXNbaSsrXSA9IE9iamVjdElkR2V0RGF0 dW0ocmVsaWQpOworCisJdmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKGV4dHZhY3V1bS0+ dG90YWxfYmxrc19yZWFkKTsKKwl2YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0oZXh0dmFj dXVtLT50b3RhbF9ibGtzX2hpdCk7CisJdmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKGV4 dHZhY3V1bS0+dG90YWxfYmxrc19kaXJ0aWVkKTsKKwl2YWx1ZXNbaSsrXSA9IEludDY0R2V0 RGF0dW0oZXh0dmFjdXVtLT50b3RhbF9ibGtzX3dyaXR0ZW4pOworCisJdmFsdWVzW2krK10g PSBJbnQ2NEdldERhdHVtKGV4dHZhY3V1bS0+Ymxrc19mZXRjaGVkIC0KKwkJCQkJCQkJCWV4 dHZhY3V1bS0+Ymxrc19oaXQpOworCXZhbHVlc1tpKytdID0gSW50NjRHZXREYXR1bShleHR2 YWN1dW0tPmJsa3NfaGl0KTsKKworCXZhbHVlc1tpKytdID0gSW50NjRHZXREYXR1bShleHR2 YWN1dW0tPnBhZ2VzX3NjYW5uZWQpOworCXZhbHVlc1tpKytdID0gSW50NjRHZXREYXR1bShl eHR2YWN1dW0tPnBhZ2VzX3JlbW92ZWQpOworCXZhbHVlc1tpKytdID0gSW50NjRHZXREYXR1 bShleHR2YWN1dW0tPnZtX25ld19mcm96ZW5fcGFnZXMpOworCXZhbHVlc1tpKytdID0gSW50 NjRHZXREYXR1bShleHR2YWN1dW0tPnZtX25ld192aXNpYmxlX3BhZ2VzKTsKKwl2YWx1ZXNb aSsrXSA9IEludDY0R2V0RGF0dW0oZXh0dmFjdXVtLT52bV9uZXdfdmlzaWJsZV9mcm96ZW5f cGFnZXMpOworCXZhbHVlc1tpKytdID0gSW50NjRHZXREYXR1bShleHR2YWN1dW0tPm1pc3Nl ZF9kZWFkX3BhZ2VzKTsKKwl2YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0oZXh0dmFjdXVt LT50dXBsZXNfZGVsZXRlZCk7CisJdmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKGV4dHZh Y3V1bS0+dHVwbGVzX2Zyb3plbik7CisJdmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKGV4 dHZhY3V1bS0+cmVjZW50bHlfZGVhZF90dXBsZXMpOworCXZhbHVlc1tpKytdID0gSW50NjRH ZXREYXR1bShleHR2YWN1dW0tPm1pc3NlZF9kZWFkX3R1cGxlcyk7CisJdmFsdWVzW2krK10g PSBJbnQzMkdldERhdHVtKGV4dHZhY3V1bS0+d3JhcGFyb3VuZF9mYWlsc2FmZV9jb3VudCk7 CisJdmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKGV4dHZhY3V1bS0+aW5kZXhfdmFjdXVt X2NvdW50KTsKKworCXZhbHVlc1tpKytdID0gSW50NjRHZXREYXR1bShleHR2YWN1dW0tPndh bF9yZWNvcmRzKTsKKwl2YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0oZXh0dmFjdXVtLT53 YWxfZnBpKTsKKworCS8qIENvbnZlcnQgdG8gbnVtZXJpYywgbGlrZSBwZ19zdGF0X3N0YXRl bWVudHMgKi8KKwlzbnByaW50ZihidWYsIHNpemVvZiBidWYsIFVJTlQ2NF9GT1JNQVQsIGV4 dHZhY3V1bS0+d2FsX2J5dGVzKTsKKwl2YWx1ZXNbaSsrXSA9IERpcmVjdEZ1bmN0aW9uQ2Fs bDMobnVtZXJpY19pbiwKKwkJCQkJCQkJCSAgQ1N0cmluZ0dldERhdHVtKGJ1ZiksCisJCQkJ CQkJCQkgIE9iamVjdElkR2V0RGF0dW0oMCksCisJCQkJCQkJCQkgIEludDMyR2V0RGF0dW0o LTEpKTsKKworCXZhbHVlc1tpKytdID0gRmxvYXQ4R2V0RGF0dW0oZXh0dmFjdXVtLT5ibGtf cmVhZF90aW1lKTsKKwl2YWx1ZXNbaSsrXSA9IEZsb2F0OEdldERhdHVtKGV4dHZhY3V1bS0+ YmxrX3dyaXRlX3RpbWUpOworCXZhbHVlc1tpKytdID0gRmxvYXQ4R2V0RGF0dW0oZXh0dmFj dXVtLT5kZWxheV90aW1lKTsKKwl2YWx1ZXNbaSsrXSA9IEZsb2F0OEdldERhdHVtKGV4dHZh Y3V1bS0+dG90YWxfdGltZSk7CisKKwlBc3NlcnQoaSA9PSBQR19TVEFUX0dFVF9WQUNVVU1f VEFCTEVTX1NUQVRTX0NPTFMpOworCisJLyogUmV0dXJucyB0aGUgcmVjb3JkIGFzIERhdHVt ICovCisJUEdfUkVUVVJOX0RBVFVNKEhlYXBUdXBsZUdldERhdHVtKGhlYXBfZm9ybV90dXBs ZSh0dXBkZXNjLCB2YWx1ZXMsIG51bGxzKSkpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cuYwppbmRleCA4NjBiYmQ0MGQ0Mi4uNGRhOGQz Zjg3ZmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9lcnJvci9lbG9nLmMKQEAgLTE2MTksNiArMTYxOSwxOSBA QCBnZXRpbnRlcm5hbGVycnBvc2l0aW9uKHZvaWQpCiAJcmV0dXJuIGVkYXRhLT5pbnRlcm5h bHBvczsKIH0KIAorLyoKKyAqIFJldHVybiBlbGV2ZWwgb2YgZXJyb3JzCisgKi8KK2ludAor Z2V0ZXJyZWxldmVsKHZvaWQpCit7CisJRXJyb3JEYXRhICAqZWRhdGEgPSAmZXJyb3JkYXRh W2Vycm9yZGF0YV9zdGFja19kZXB0aF07CisKKwkvKiB3ZSBkb24ndCBib3RoZXIgaW5jcmVt ZW50aW5nIHJlY3Vyc2lvbl9kZXB0aCAqLworCUNIRUNLX1NUQUNLX0RFUFRIKCk7CisKKwly ZXR1cm4gZWRhdGEtPmVsZXZlbDsKK30KIAogLyoKICAqIEZ1bmN0aW9ucyB0byBhbGxvdyBj b25zdHJ1Y3Rpb24gb2YgZXJyb3IgbWVzc2FnZSBzdHJpbmdzIHNlcGFyYXRlbHkgZnJvbQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMv YmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRleCBjY2U3MzMxNDYwOS4uNmFh OThmOTkzMTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxl cy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCkBAIC0xNDk5 LDYgKzE0OTksMTUgQEAgc3RydWN0IGNvbmZpZ19ib29sIENvbmZpZ3VyZU5hbWVzQm9vbFtd ID0KIAkJZmFsc2UsCiAJCU5VTEwsIE5VTEwsIE5VTEwKIAl9LAorCXsKKwkJeyJ0cmFja192 YWN1dW1fc3RhdGlzdGljcyIsIFBHQ19TVVNFVCwgU1RBVFNfQ1VNVUxBVElWRSwKKwkJCWdl dHRleHRfbm9vcCgiQ29sbGVjdHMgdmFjdXVtIHN0YXRpc3RpY3MgZm9yIHRhYmxlIHJlbGF0 aW9ucy4iKSwKKwkJCU5VTEwKKwkJfSwKKwkJJnBnc3RhdF90cmFja192YWN1dW1fc3RhdGlz dGljcywKKwkJdHJ1ZSwKKwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCiAJewogCQl7InRyYWNr X3dhbF9pb190aW1pbmciLCBQR0NfU1VTRVQsIFNUQVRTX0NVTVVMQVRJVkUsCiAJCQlnZXR0 ZXh0X25vb3AoIkNvbGxlY3RzIHRpbWluZyBzdGF0aXN0aWNzIGZvciBXQUwgSS9PIGFjdGl2 aXR5LiIpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3Fs LmNvbmYuc2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYu c2FtcGxlCmluZGV4IGQ0NzI5ODdlZDQ2Li4yNDhlZjZjOWEzNiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtNjQwLDYgKzY0 MCw3IEBACiAjdHJhY2tfd2FsX2lvX3RpbWluZyA9IG9mZgogI3RyYWNrX2Z1bmN0aW9ucyA9 IG5vbmUJCQkjIG5vbmUsIHBsLCBhbGwKICNzdGF0c19mZXRjaF9jb25zaXN0ZW5jeSA9IGNh Y2hlCSMgY2FjaGUsIG5vbmUsIHNuYXBzaG90CisjdHJhY2tfdmFjdXVtX3N0YXRpc3RpY3Mg PSBvZmYKIAogCiAjIC0gTW9uaXRvcmluZyAtCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApp bmRleCA5ZTgwM2Q2MTBkNy4uM2NjMmVmZjM0MzcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9j LmRhdApAQCAtMTI0NjQsNCArMTI0NjQsMjIgQEAKICAgcHJvYXJndHlwZXMgPT4gJ2ludDQn LAogICBwcm9zcmMgPT4gJ2dpc3Rfc3RyYXRudW1fY29tbW9uJyB9LAogCit7IG9pZCA9PiAn ODAwMScsCisgIGRlc2NyID0+ICdwZ19zdGF0X2dldF92YWN1dW1fdGFibGVzIHJldHVybnMg dmFjdXVtIHN0YXRzIHZhbHVlcyBmb3IgdGFibGUnLAorICBwcm9uYW1lID0+ICdwZ19zdGF0 X2dldF92YWN1dW1fdGFibGVzJywgcHJvcm93cyA9PiAxMDAwLCBwcm92b2xhdGlsZSA9PiAn cycsIHByb3JldHR5cGUgPT4gJ3JlY29yZCcscHJvaXNzdHJpY3QgPT4gJ2YnLAorICBwcm9y ZXRzZXQgPT4gJ3QnLAorICBwcm9hcmd0eXBlcyA9PiAnb2lkJywKKyAgcHJvYWxsYXJndHlw ZXMgPT4gJ3tvaWQsb2lkLGludDgsaW50OCxpbnQ4LGludDgsaW50OCxpbnQ4LGludDgsaW50 OCxpbnQ4LGludDgsaW50OCxpbnQ4LGludDgsaW50OCxpbnQ4LGludDgsaW50NCxpbnQ4LGlu dDgsaW50OCxudW1lcmljLGZsb2F0OCxmbG9hdDgsZmxvYXQ4LGZsb2F0OH0nLAorICBwcm9h cmdtb2RlcyA9PiAne2ksbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxv LG8sbyxvLG8sbyxvfScsCisgIHByb2FyZ25hbWVzID0+ICd7cmVsb2lkLHJlbGlkLHRvdGFs X2Jsa3NfcmVhZCx0b3RhbF9ibGtzX2hpdCx0b3RhbF9ibGtzX2RpcnRpZWQsdG90YWxfYmxr c193cml0dGVuLHJlbF9ibGtzX3JlYWQscmVsX2Jsa3NfaGl0LHBhZ2VzX3NjYW5uZWQscGFn ZXNfcmVtb3ZlZCx2bV9uZXdfZnJvemVuX3BhZ2VzLHZtX25ld192aXNpYmxlX3BhZ2VzLHZt X25ld192aXNpYmxlX2Zyb3plbl9wYWdlcyxtaXNzZWRfZGVhZF9wYWdlcyx0dXBsZXNfZGVs ZXRlZCx0dXBsZXNfZnJvemVuLHJlY2VudGx5X2RlYWRfdHVwbGVzLG1pc3NlZF9kZWFkX3R1 cGxlcyx3cmFwYXJvdW5kX2ZhaWxzYWZlLGluZGV4X3ZhY3V1bV9jb3VudCx3YWxfcmVjb3Jk cyx3YWxfZnBpLHdhbF9ieXRlcyxibGtfcmVhZF90aW1lLGJsa193cml0ZV90aW1lLGRlbGF5 X3RpbWUsdG90YWxfdGltZX0nLAorICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X3ZhY3V1bV90 YWJsZXMnIH0sCisKKyAgeyBvaWQgPT4gJzgwMDInLCBkZXNjciA9PiAnc3RhdGlzdGljczog bnVtYmVyIG9mIHRpbWVzIHRoZSBhbGwtdmlzaWJsZSBwYWdlcyBpbiB0aGUgdmlzaWJpbGl0 eSBtYXAgd2FzIHJlbW92ZWQgZm9yIHBhZ2VzIG9mIHRhYmxlJywKKyAgcHJvbmFtZSA9PiAn cGdfc3RhdF9nZXRfcmV2X2FsbF92aXNpYmxlX3BhZ2VzJywgcHJvdm9sYXRpbGUgPT4gJ3Mn LAorICBwcm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0 eXBlcyA9PiAnb2lkJywKKyAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9yZXZfYWxsX3Zpc2li bGVfcGFnZXMnIH0sCisgIHsgb2lkID0+ICc4MDAzJywgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6 IG51bWJlciBvZiB0aW1lcyB0aGUgYWxsLWZyb3plbiBwYWdlcyBpbiB0aGUgdmlzaWJpbGl0 eSBtYXAgd2FzIHJlbW92ZWQgZm9yIHBhZ2VzIG9mIHRhYmxlJywKKyAgcHJvbmFtZSA9PiAn cGdfc3RhdF9nZXRfcmV2X2FsbF9mcm96ZW5fcGFnZXMnLCBwcm92b2xhdGlsZSA9PiAncycs CisgIHByb3BhcmFsbGVsID0+ICdyJywgcHJvcmV0dHlwZSA9PiAnaW50OCcsIHByb2FyZ3R5 cGVzID0+ICdvaWQnLAorICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X3Jldl9hbGxfZnJvemVu X3BhZ2VzJyB9LAogXQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVt LmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaAppbmRleCAxNTcxYTY2YzZiZi4u YTVmZTYyMmQ5MzIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5o CisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5oCkBAIC0zMjYsNiArMzI2LDcg QEAgZXh0ZXJuIFBHRExMSU1QT1JUIGRvdWJsZSB2YWN1dW1fbWF4X2VhZ2VyX2ZyZWV6ZV9m YWlsdXJlX3JhdGU7CiBleHRlcm4gUEdETExJTVBPUlQgcGdfYXRvbWljX3VpbnQzMiAqVmFj dXVtU2hhcmVkQ29zdEJhbGFuY2U7CiBleHRlcm4gUEdETExJTVBPUlQgcGdfYXRvbWljX3Vp bnQzMiAqVmFjdXVtQWN0aXZlTldvcmtlcnM7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IFZh Y3V1bUNvc3RCYWxhbmNlTG9jYWw7CitleHRlcm4gUEdETExJTVBPUlQgZG91YmxlIFZhY3V1 bURlbGF5VGltZTsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgVmFjdXVtRmFpbHNhZmVB Y3RpdmU7CiBleHRlcm4gUEdETExJTVBPUlQgZG91YmxlIHZhY3V1bV9jb3N0X2RlbGF5Owpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGdzdGF0LmggYi9zcmMvaW5jbHVkZS9wZ3N0YXQu aAppbmRleCA1M2YyYTg0NThlNi4uZDM2OTI4NDEwMWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3Bnc3RhdC5oCisrKyBiL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCkBAIC0xMTIsNiArMTEy LDUzIEBAIHR5cGVkZWYgc3RydWN0IFBnU3RhdF9CYWNrZW5kU3ViRW50cnkKIAlQZ1N0YXRf Q291bnRlciBjb25mbGljdF9jb3VudFtDT05GTElDVF9OVU1fVFlQRVNdOwogfSBQZ1N0YXRf QmFja2VuZFN1YkVudHJ5OwogCisvKiAtLS0tLS0tLS0tCisgKgorICogRXh0VmFjUmVwb3J0 CisgKgorICogQWRkaXRpb25hbCBzdGF0aXN0aWNzIG9mIHZhY3V1bSBwcm9jZXNzaW5nIG92 ZXIgYSBoZWFwIHJlbGF0aW9uLgorICogcGFnZXNfcmVtb3ZlZCBpcyB0aGUgYW1vdW50IGJ5 IHdoaWNoIHRoZSBwaHlzaWNhbGx5IHNocmFuaywKKyAqIGlmIGFueSAoaWUgdGhlIGNoYW5n ZSBpbiBpdHMgdG90YWwgc2l6ZSBvbiBkaXNrKQorICogcGFnZXNfZGVsZXRlZCByZWZlciB0 byBmcmVlIHNwYWNlIHdpdGhpbiB0aGUgaW5kZXggZmlsZQorICogLS0tLS0tLS0tLQorICov Cit0eXBlZGVmIHN0cnVjdCBFeHRWYWNSZXBvcnQKK3sKKwkvKiBudW1iZXIgb2YgYmxvY2tz IG1pc3NlZCwgaGl0LCBkaXJ0aWVkIGFuZCB3cml0dGVuIGR1cmluZyBhIHZhY3V1bSBvZiBz cGVjaWZpYyByZWxhdGlvbiAqLworCWludDY0CQl0b3RhbF9ibGtzX3JlYWQ7CisJaW50NjQJ CXRvdGFsX2Jsa3NfaGl0OworCWludDY0CQl0b3RhbF9ibGtzX2RpcnRpZWQ7CisJaW50NjQJ CXRvdGFsX2Jsa3Nfd3JpdHRlbjsKKworCS8qIGJsb2NrcyBtaXNzZWQgYW5kIGhpdCBmb3Ig anVzdCB0aGUgaGVhcCBkdXJpbmcgYSB2YWN1dW0gb2Ygc3BlY2lmaWMgcmVsYXRpb24gKi8K KwlpbnQ2NAkJYmxrc19mZXRjaGVkOworCWludDY0CQlibGtzX2hpdDsKKworCS8qIFZhY3V1 bSBXQUwgdXNhZ2Ugc3RhdHMgKi8KKwlpbnQ2NAkJd2FsX3JlY29yZHM7CS8qIHdhbCB1c2Fn ZTogbnVtYmVyIG9mIFdBTCByZWNvcmRzICovCisJaW50NjQJCXdhbF9mcGk7CQkvKiB3YWwg dXNhZ2U6IG51bWJlciBvZiBXQUwgZnVsbCBwYWdlIGltYWdlcyBwcm9kdWNlZCAqLworCXVp bnQ2NAkJd2FsX2J5dGVzOwkJLyogd2FsIHVzYWdlOiBzaXplIG9mIFdBTCByZWNvcmRzIHBy b2R1Y2VkICovCisKKwkvKiBUaW1lIHN0YXRzLiAqLworCWRvdWJsZQkJYmxrX3JlYWRfdGlt ZTsJLyogdGltZSBzcGVudCByZWFkaW5nIHBhZ2VzLCBpbiBtc2VjICovCisJZG91YmxlCQli bGtfd3JpdGVfdGltZTsgLyogdGltZSBzcGVudCB3cml0aW5nIHBhZ2VzLCBpbiBtc2VjICov CisJZG91YmxlCQlkZWxheV90aW1lOwkJLyogaG93IGxvbmcgdmFjdXVtIHNsZXB0IGluIHZh Y3V1bSBkZWxheSBwb2ludCwgaW4gbXNlYyAqLworCWRvdWJsZQkJdG90YWxfdGltZTsJCS8q IHRvdGFsIHRpbWUgb2YgYSB2YWN1dW0gb3BlcmF0aW9uLCBpbiBtc2VjICovCisKKwlpbnQ2 NAkJcGFnZXNfc2Nhbm5lZDsJCS8qIGhlYXAgcGFnZXMgZXhhbWluZWQgKG5vdCBza2lwcGVk IGJ5IFZNKSAqLworCWludDY0CQlwYWdlc19yZW1vdmVkOwkJLyogaGVhcCBwYWdlcyByZW1v dmVkIGJ5IHZhY3V1bSAidHJ1bmNhdGlvbiIgKi8KKwlpbnQ2NAkJdm1fbmV3X2Zyb3plbl9w YWdlczsJCS8qIHBhZ2VzIG1hcmtlZCBpbiBWTSBhcyBmcm96ZW4gKi8KKwlpbnQ2NAkJdm1f bmV3X3Zpc2libGVfcGFnZXM7CS8qIHBhZ2VzIG1hcmtlZCBpbiBWTSBhcyBhbGwtdmlzaWJs ZSAqLworCWludDY0CQl2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXM7CS8qIHBhZ2VzIG1h cmtlZCBpbiBWTSBhcyBhbGwtdmlzaWJsZSBhbmQgZnJvemVuICovCisJaW50NjQJCW1pc3Nl ZF9kZWFkX3R1cGxlczsJCS8qIHR1cGxlcyBub3QgcHJ1bmVkIGJ5IHZhY3V1bSBkdWUgdG8g ZmFpbHVyZSB0byBnZXQgYSBjbGVhbnVwIGxvY2sgKi8KKwlpbnQ2NAkJbWlzc2VkX2RlYWRf cGFnZXM7CQkvKiBwYWdlcyB3aXRoIG1pc3NlZCBkZWFkIHR1cGxlcyAqLworCWludDY0CQl0 dXBsZXNfZGVsZXRlZDsJCS8qIHR1cGxlcyBkZWxldGVkIGJ5IHZhY3V1bSAqLworCWludDY0 CQl0dXBsZXNfZnJvemVuOwkJLyogdHVwbGVzIGZyb3plbiB1cCBieSB2YWN1dW0gKi8KKwlp bnQ2NAkJcmVjZW50bHlfZGVhZF90dXBsZXM7CS8qIGRlbGV0ZWQgdHVwbGVzIHRoYXQgYXJl IHN0aWxsIHZpc2libGUgdG8gc29tZSB0cmFuc2FjdGlvbiAqLworCWludDY0CQlpbmRleF92 YWN1dW1fY291bnQ7CS8qIHRoZSBudW1iZXIgb2YgaW5kZXggdmFjdXVtaW5ncyAqLworCWlu dDMyCQl3cmFwYXJvdW5kX2ZhaWxzYWZlX2NvdW50OwkvKiB0aGUgbnVtYmVyIG9mIHRpbWVz IHRvIHByZXZlbnQgd29ya2Fyb3VuZCBwcm9ibGVtICovCit9IEV4dFZhY1JlcG9ydDsKKwog LyogLS0tLS0tLS0tLQogICogUGdTdGF0X1RhYmxlQ291bnRzCQkJVGhlIGFjdHVhbCBwZXIt dGFibGUgY291bnRzIGtlcHQgYnkgYSBiYWNrZW5kCiAgKgpAQCAtMTU0LDYgKzIwMSwxNiBA QCB0eXBlZGVmIHN0cnVjdCBQZ1N0YXRfVGFibGVDb3VudHMKIAogCVBnU3RhdF9Db3VudGVy IGJsb2Nrc19mZXRjaGVkOwogCVBnU3RhdF9Db3VudGVyIGJsb2Nrc19oaXQ7CisKKwlQZ1N0 YXRfQ291bnRlciByZXZfYWxsX3Zpc2libGVfcGFnZXM7CisJUGdTdGF0X0NvdW50ZXIgcmV2 X2FsbF9mcm96ZW5fcGFnZXM7CisKKwkvKgorCSAqIEFkZGl0aW9uYWwgY3VtdWxhdGl2ZSBz dGF0IG9uIHZhY3V1bSBvcGVyYXRpb25zLgorCSAqIFVzZSBhbiBleHBlbnNpdmUgc3RydWN0 dXJlIGFzIGFuIGFic3RyYWN0aW9uIGZvciBkaWZmZXJlbnQgdHlwZXMgb2YKKwkgKiByZWxh dGlvbnMuCisJICovCisJRXh0VmFjUmVwb3J0CXZhY3V1bV9leHQ7CiB9IFBnU3RhdF9UYWJs ZUNvdW50czsKIAogLyogLS0tLS0tLS0tLQpAQCAtMjEyLDcgKzI2OSw3IEBAIHR5cGVkZWYg c3RydWN0IFBnU3RhdF9UYWJsZVhhY3RTdGF0dXMKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAKLSNkZWZp bmUgUEdTVEFUX0ZJTEVfRk9STUFUX0lECTB4MDFBNUJDQjMKKyNkZWZpbmUgUEdTVEFUX0ZJ TEVfRk9STUFUX0lECTB4MDFBNUJDQjQKIAogdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X0FyY2hp dmVyU3RhdHMKIHsKQEAgLTM5NCw2ICs0NTEsOCBAQCB0eXBlZGVmIHN0cnVjdCBQZ1N0YXRf U3RhdERCRW50cnkKIAlQZ1N0YXRfQ291bnRlciBwYXJhbGxlbF93b3JrZXJzX2xhdW5jaGVk OwogCiAJVGltZXN0YW1wVHogc3RhdF9yZXNldF90aW1lc3RhbXA7CisKKwlFeHRWYWNSZXBv cnQgdmFjdXVtX2V4dDsJCS8qIGV4dGVuZGVkIHZhY3V1bSBzdGF0aXN0aWNzICovCiB9IFBn U3RhdF9TdGF0REJFbnRyeTsKIAogdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X1N0YXRGdW5jRW50 cnkKQEAgLTQ3Miw2ICs1MzEsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X1N0YXRUYWJF bnRyeQogCVBnU3RhdF9Db3VudGVyIHRvdGFsX2F1dG92YWN1dW1fdGltZTsKIAlQZ1N0YXRf Q291bnRlciB0b3RhbF9hbmFseXplX3RpbWU7CiAJUGdTdGF0X0NvdW50ZXIgdG90YWxfYXV0 b2FuYWx5emVfdGltZTsKKworCVBnU3RhdF9Db3VudGVyIHJldl9hbGxfdmlzaWJsZV9wYWdl czsKKwlQZ1N0YXRfQ291bnRlciByZXZfYWxsX2Zyb3plbl9wYWdlczsKKworCUV4dFZhY1Jl cG9ydCB2YWN1dW1fZXh0OwogfSBQZ1N0YXRfU3RhdFRhYkVudHJ5OwogCiB0eXBlZGVmIHN0 cnVjdCBQZ1N0YXRfV2FsU3RhdHMKQEAgLTY1Niw3ICs3MjAsNyBAQCBleHRlcm4gdm9pZCBw Z3N0YXRfdW5saW5rX3JlbGF0aW9uKFJlbGF0aW9uIHJlbCk7CiAKIGV4dGVybiB2b2lkIHBn c3RhdF9yZXBvcnRfdmFjdXVtKE9pZCB0YWJsZW9pZCwgYm9vbCBzaGFyZWQsCiAJCQkJCQkJ CSBQZ1N0YXRfQ291bnRlciBsaXZldHVwbGVzLCBQZ1N0YXRfQ291bnRlciBkZWFkdHVwbGVz LAotCQkJCQkJCQkgVGltZXN0YW1wVHogc3RhcnR0aW1lKTsKKwkJCQkJCQkJIFRpbWVzdGFt cFR6IHN0YXJ0dGltZSwgRXh0VmFjUmVwb3J0ICpwYXJhbXMpOwogZXh0ZXJuIHZvaWQgcGdz dGF0X3JlcG9ydF9hbmFseXplKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJICBQZ1N0YXRfQ291 bnRlciBsaXZldHVwbGVzLCBQZ1N0YXRfQ291bnRlciBkZWFkdHVwbGVzLAogCQkJCQkJCQkg IGJvb2wgcmVzZXRjb3VudGVyLCBUaW1lc3RhbXBUeiBzdGFydHRpbWUpOwpAQCAtNzA3LDYg Kzc3MSwxNyBAQCBleHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X2FuYWx5emUoUmVsYXRpb24g cmVsLAogCQlpZiAocGdzdGF0X3Nob3VsZF9jb3VudF9yZWxhdGlvbihyZWwpKQkJCQkJCVwK IAkJCShyZWwpLT5wZ3N0YXRfaW5mby0+Y291bnRzLmJsb2Nrc19oaXQrKzsJCQkJXAogCX0g d2hpbGUgKDApCisvKiBhY2N1bXVsYXRlIHVuZnJvemVuIGFsbC12aXNpYmxlIGFuZCBhbGwt ZnJvemVuIHBhZ2VzICovCisjZGVmaW5lIHBnc3RhdF9jb3VudF92bV9yZXZfYWxsX3Zpc2li bGUocmVsKQkJCQkJCVwKKwlkbyB7CQkJCQkJCQkJCQkJCQkJXAorCQlpZiAocGdzdGF0X3No b3VsZF9jb3VudF9yZWxhdGlvbihyZWwpKQkJCQkJCVwKKwkJCShyZWwpLT5wZ3N0YXRfaW5m by0+Y291bnRzLnJldl9hbGxfdmlzaWJsZV9wYWdlcysrOwlcCisJfSB3aGlsZSAoMCkKKyNk ZWZpbmUgcGdzdGF0X2NvdW50X3ZtX3Jldl9hbGxfZnJvemVuKHJlbCkJCQkJCQlcCisJZG8g ewkJCQkJCQkJCQkJCQkJCVwKKwkJaWYgKHBnc3RhdF9zaG91bGRfY291bnRfcmVsYXRpb24o cmVsKSkJCQkJCQlcCisJCQkocmVsKS0+cGdzdGF0X2luZm8tPmNvdW50cy5yZXZfYWxsX2Zy b3plbl9wYWdlcysrOwlcCisJfSB3aGlsZSAoMCkKIAogZXh0ZXJuIHZvaWQgcGdzdGF0X2Nv dW50X2hlYXBfaW5zZXJ0KFJlbGF0aW9uIHJlbCwgUGdTdGF0X0NvdW50ZXIgbik7CiBleHRl cm4gdm9pZCBwZ3N0YXRfY291bnRfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsLCBib29sIGhv dCwgYm9vbCBuZXdwYWdlKTsKQEAgLTc5NSw2ICs4NzAsNyBAQCBleHRlcm4gUGdTdGF0X1dh bFN0YXRzICpwZ3N0YXRfZmV0Y2hfc3RhdF93YWwodm9pZCk7CiBleHRlcm4gUEdETExJTVBP UlQgYm9vbCBwZ3N0YXRfdHJhY2tfY291bnRzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBw Z3N0YXRfdHJhY2tfZnVuY3Rpb25zOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBwZ3N0YXRf ZmV0Y2hfY29uc2lzdGVuY3k7CitleHRlcm4gUEdETExJTVBPUlQgYm9vbCBwZ3N0YXRfdHJh Y2tfdmFjdXVtX3N0YXRpc3RpY3M7CiAKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3V0aWxzL2Vsb2cuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2Vsb2cuaAppbmRleCA3MTYxZjVj NmFkNi4uOWUwODA3NDdhOTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2Vsb2cu aAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9lbG9nLmgKQEAgLTIzMCw2ICsyMzAsNyBAQCBl eHRlcm4gaW50CWdldGVycmxldmVsKHZvaWQpOwogZXh0ZXJuIGludAlnZXRlcnJwb3NpdGlv bih2b2lkKTsKIGV4dGVybiBpbnQJZ2V0aW50ZXJuYWxlcnJwb3NpdGlvbih2b2lkKTsKIAor ZXh0ZXJuIGludAlnZXRlcnJlbGV2ZWwodm9pZCk7CiAKIC8qLS0tLS0tLS0tLQogICogT2xk LXN0eWxlIGVycm9yIHJlcG9ydGluZyBBUEk6IHRvIGJlIHVzZWQgaW4gdGhpcyB3YXk6CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvdmFjdXVtLWV4dGVuZGlu Zy1pbi1yZXBldGFibGUtcmVhZC5vdXQgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQv dmFjdXVtLWV4dGVuZGluZy1pbi1yZXBldGFibGUtcmVhZC5vdXQKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjg3ZjdlNDBiNGE2Ci0tLSAvZGV2L251bGwKKysr IGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3ZhY3V1bS1leHRlbmRpbmctaW4tcmVw ZXRhYmxlLXJlYWQub3V0CkBAIC0wLDAgKzEsNTMgQEAKK3VudXNlZCBzdGVwIG5hbWU6IHMy X2RlbGV0ZQorUGFyc2VkIHRlc3Qgc3BlYyB3aXRoIDIgc2Vzc2lvbnMKKworc3RhcnRpbmcg cGVybXV0YXRpb246IHMyX2luc2VydCBzMl9wcmludF92YWN1dW1fc3RhdHNfdGFibGUgczFf YmVnaW5fcmVwZWF0YWJsZV9yZWFkIHMyX3VwZGF0ZSBzMl9pbnNlcnRfaW50ZXJydXB0IHMy X3ZhY3V1bSBzMl9wcmludF92YWN1dW1fc3RhdHNfdGFibGUgczFfY29tbWl0IHMyX2NoZWNr cG9pbnQgczJfdmFjdXVtIHMyX3ByaW50X3ZhY3V1bV9zdGF0c190YWJsZQorc3RlcCBzMl9p bnNlcnQ6IElOU0VSVCBJTlRPIHRlc3RfdmFjdXVtX3N0YXRfaXNvbGF0aW9uKGlkLCBpdmFs KSBTRUxFQ1QgaXZhbCwgaXZhbCUxMCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMDApIEFz IGl2YWw7CitzdGVwIHMyX3ByaW50X3ZhY3V1bV9zdGF0c190YWJsZTogCisgICAgU0VMRUNU CisgICAgdnQucmVsbmFtZSwgdnQudHVwbGVzX2RlbGV0ZWQsIHZ0LnJlY2VudGx5X2RlYWRf dHVwbGVzLCB2dC5taXNzZWRfZGVhZF90dXBsZXMsIHZ0Lm1pc3NlZF9kZWFkX3BhZ2VzLCB2 dC50dXBsZXNfZnJvemVuCisgICAgRlJPTSBwZ19zdGF0X3ZhY3V1bV90YWJsZXMgdnQsIHBn X2NsYXNzIGMKKyAgICBXSEVSRSB2dC5yZWxuYW1lID0gJ3Rlc3RfdmFjdXVtX3N0YXRfaXNv bGF0aW9uJyBBTkQgdnQucmVsaWQgPSBjLm9pZDsKKworcmVsbmFtZSAgICAgICAgICAgICAg ICAgICB8dHVwbGVzX2RlbGV0ZWR8cmVjZW50bHlfZGVhZF90dXBsZXN8bWlzc2VkX2RlYWRf dHVwbGVzfG1pc3NlZF9kZWFkX3BhZ2VzfHR1cGxlc19mcm96ZW4KKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCit0ZXN0X3Zh Y3V1bV9zdGF0X2lzb2xhdGlvbnwgICAgICAgICAgICAgMHwgICAgICAgICAgICAgICAgICAg MHwgICAgICAgICAgICAgICAgIDB8ICAgICAgICAgICAgICAgIDB8ICAgICAgICAgICAgMAor KDEgcm93KQorCitzdGVwIHMxX2JlZ2luX3JlcGVhdGFibGVfcmVhZDogCisgIEJFR0lOIHRy YW5zYWN0aW9uIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CisgIHNlbGVjdCBj b3VudChpdmFsKSBmcm9tIHRlc3RfdmFjdXVtX3N0YXRfaXNvbGF0aW9uIHdoZXJlIGlkPjkw MDsKKworY291bnQKKy0tLS0tCisgIDEwMAorKDEgcm93KQorCitzdGVwIHMyX3VwZGF0ZTog VVBEQVRFIHRlc3RfdmFjdXVtX3N0YXRfaXNvbGF0aW9uIFNFVCBpdmFsID0gaXZhbCArIDIg d2hlcmUgaWQgPiA5MDA7CitzdGVwIHMyX2luc2VydF9pbnRlcnJ1cHQ6IElOU0VSVCBJTlRP IHRlc3RfdmFjdXVtX3N0YXRfaXNvbGF0aW9uIHZhbHVlcyAoMSwxKTsKK3N0ZXAgczJfdmFj dXVtOiBWQUNVVU0gdGVzdF92YWN1dW1fc3RhdF9pc29sYXRpb247CitzdGVwIHMyX3ByaW50 X3ZhY3V1bV9zdGF0c190YWJsZTogCisgICAgU0VMRUNUCisgICAgdnQucmVsbmFtZSwgdnQu dHVwbGVzX2RlbGV0ZWQsIHZ0LnJlY2VudGx5X2RlYWRfdHVwbGVzLCB2dC5taXNzZWRfZGVh ZF90dXBsZXMsIHZ0Lm1pc3NlZF9kZWFkX3BhZ2VzLCB2dC50dXBsZXNfZnJvemVuCisgICAg RlJPTSBwZ19zdGF0X3ZhY3V1bV90YWJsZXMgdnQsIHBnX2NsYXNzIGMKKyAgICBXSEVSRSB2 dC5yZWxuYW1lID0gJ3Rlc3RfdmFjdXVtX3N0YXRfaXNvbGF0aW9uJyBBTkQgdnQucmVsaWQg PSBjLm9pZDsKKworcmVsbmFtZSAgICAgICAgICAgICAgICAgICB8dHVwbGVzX2RlbGV0ZWR8 cmVjZW50bHlfZGVhZF90dXBsZXN8bWlzc2VkX2RlYWRfdHVwbGVzfG1pc3NlZF9kZWFkX3Bh Z2VzfHR1cGxlc19mcm96ZW4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCit0ZXN0X3ZhY3V1bV9zdGF0X2lzb2xhdGlvbnwg ICAgICAgICAgICAgMHwgICAgICAgICAgICAgICAgIDEwMHwgICAgICAgICAgICAgICAgIDB8 ICAgICAgICAgICAgICAgIDB8ICAgICAgICAgICAgMAorKDEgcm93KQorCitzdGVwIHMxX2Nv bW1pdDogQ09NTUlUOworc3RlcCBzMl9jaGVja3BvaW50OiBDSEVDS1BPSU5UOworc3RlcCBz Ml92YWN1dW06IFZBQ1VVTSB0ZXN0X3ZhY3V1bV9zdGF0X2lzb2xhdGlvbjsKK3N0ZXAgczJf cHJpbnRfdmFjdXVtX3N0YXRzX3RhYmxlOiAKKyAgICBTRUxFQ1QKKyAgICB2dC5yZWxuYW1l LCB2dC50dXBsZXNfZGVsZXRlZCwgdnQucmVjZW50bHlfZGVhZF90dXBsZXMsIHZ0Lm1pc3Nl ZF9kZWFkX3R1cGxlcywgdnQubWlzc2VkX2RlYWRfcGFnZXMsIHZ0LnR1cGxlc19mcm96ZW4K KyAgICBGUk9NIHBnX3N0YXRfdmFjdXVtX3RhYmxlcyB2dCwgcGdfY2xhc3MgYworICAgIFdI RVJFIHZ0LnJlbG5hbWUgPSAndGVzdF92YWN1dW1fc3RhdF9pc29sYXRpb24nIEFORCB2dC5y ZWxpZCA9IGMub2lkOworCityZWxuYW1lICAgICAgICAgICAgICAgICAgIHx0dXBsZXNfZGVs ZXRlZHxyZWNlbnRseV9kZWFkX3R1cGxlc3xtaXNzZWRfZGVhZF90dXBsZXN8bWlzc2VkX2Rl YWRfcGFnZXN8dHVwbGVzX2Zyb3plbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KK3Rlc3RfdmFjdXVtX3N0YXRfaXNvbGF0 aW9ufCAgICAgICAgICAgMTAwfCAgICAgICAgICAgICAgICAgMTAwfCAgICAgICAgICAgICAg ICAgMHwgICAgICAgICAgICAgICAgMHwgICAgICAgICAgMTAxCisoMSByb3cpCisKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUgYi9zcmMvdGVz dC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCmluZGV4IDE0MzEwOWFhNGRhLi5lOTNk ZDRmNjI2YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hl ZHVsZQorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCkBAIC05 NSw2ICs5NSw3IEBAIHRlc3Q6IHRpbWVvdXRzCiB0ZXN0OiB2YWN1dW0tY29uY3VycmVudC1k cm9wCiB0ZXN0OiB2YWN1dW0tY29uZmxpY3QKIHRlc3Q6IHZhY3V1bS1za2lwLWxvY2tlZAor dGVzdDogdmFjdXVtLWV4dGVuZGluZy1pbi1yZXBldGFibGUtcmVhZAogdGVzdDogc3RhdHMK IHRlc3Q6IGhvcml6b25zCiB0ZXN0OiBwcmVkaWNhdGUtaGFzaApkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3ZhY3V1bS1leHRlbmRpbmctaW4tcmVwZXRhYmxlLXJl YWQuc3BlYyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy92YWN1dW0tZXh0ZW5kaW5nLWlu LXJlcGV0YWJsZS1yZWFkLnNwZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjU4OTNkODk1NzNkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvaXNvbGF0 aW9uL3NwZWNzL3ZhY3V1bS1leHRlbmRpbmctaW4tcmVwZXRhYmxlLXJlYWQuc3BlYwpAQCAt MCwwICsxLDUzIEBACisjIFRlc3QgZm9yIGNoZWNraW5nIHJlY2VudGx5X2RlYWRfdHVwbGVz LCB0dXBsZXNfZGVsZXRlZCBhbmQgZnJvemVuIHR1cGxlcyBpbiBwZ19zdGF0X3ZhY3V1bV90 YWJsZXMuCisjIHJlY2VudGx5X2RlYWRfdHVwbGVzIHZhbHVlcyBhcmUgY291bnRlZCB3aGVu IHZhY3V1bSBoYXNuJ3QgY2xlYXJlZCB0dXBsZXMgYmVjYXVzZSB0aGV5IHdlcmUgZGVsZXRl ZCByZWNlbnRseS4KKyMgcmVjZW50bHlfZGVhZF90dXBsZXMgYXJlbid0IGluY3JlYXNlZCBh ZnRlciByZWxlYXNpbmcgbG9jayBjb21wYXJlZCB3aXRoIHR1cGxlc19kZWxldGVkLCB3aGlj aCBpbmNyZWFzZWQKKyMgYnkgdGhlIHZhbHVlIG9mIHRoZSBjbGVhcmVkIHR1cGxlcyB0aGF0 IHRoZSB2YWN1dW0gbWFuYWdlZCB0byBjbGVhci4KKworc2V0dXAKK3sKKyAgICBDUkVBVEUg VEFCTEUgdGVzdF92YWN1dW1fc3RhdF9pc29sYXRpb24oaWQgaW50LCBpdmFsIGludCkgV0lU SCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gb2ZmKTsKKyAgICBTRVQgdHJhY2tfaW9fdGltaW5n ID0gb247CisgICAgU0VUIHRyYWNrX3ZhY3V1bV9zdGF0aXN0aWNzIFRPICdvbic7Cit9CisK K3RlYXJkb3duCit7CisgICAgRFJPUCBUQUJMRSB0ZXN0X3ZhY3V1bV9zdGF0X2lzb2xhdGlv biBDQVNDQURFOworICAgIFJFU0VUIHRyYWNrX2lvX3RpbWluZzsKKyAgICBSRVNFVCB0cmFj a192YWN1dW1fc3RhdGlzdGljczsKK30KKworc2Vzc2lvbiBzMQorc3RlcCBzMV9iZWdpbl9y ZXBlYXRhYmxlX3JlYWQgICB7CisgIEJFR0lOIHRyYW5zYWN0aW9uIElTT0xBVElPTiBMRVZF TCBSRVBFQVRBQkxFIFJFQUQ7CisgIHNlbGVjdCBjb3VudChpdmFsKSBmcm9tIHRlc3RfdmFj dXVtX3N0YXRfaXNvbGF0aW9uIHdoZXJlIGlkPjkwMDsKKyAgfQorc3RlcCBzMV9jb21taXQg ICAgICAgICAgICAgICAgICB7IENPTU1JVDsgfQorCitzZXNzaW9uIHMyCitzdGVwIHMyX2lu c2VydCAgICAgICAgICAgICAgICAgIHsgSU5TRVJUIElOVE8gdGVzdF92YWN1dW1fc3RhdF9p c29sYXRpb24oaWQsIGl2YWwpIFNFTEVDVCBpdmFsLCBpdmFsJTEwIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsMTAwMCkgQXMgaXZhbDsgfQorc3RlcCBzMl91cGRhdGUgICAgICAgICAgICAg ICAgICB7IFVQREFURSB0ZXN0X3ZhY3V1bV9zdGF0X2lzb2xhdGlvbiBTRVQgaXZhbCA9IGl2 YWwgKyAyIHdoZXJlIGlkID4gOTAwOyB9CitzdGVwIHMyX2RlbGV0ZSAgICAgICAgICAgICAg ICAgIHsgREVMRVRFIEZST00gdGVzdF92YWN1dW1fc3RhdF9pc29sYXRpb24gd2hlcmUgaWQg PiA5MDA7IH0KK3N0ZXAgczJfaW5zZXJ0X2ludGVycnVwdCAgICAgICAgeyBJTlNFUlQgSU5U TyB0ZXN0X3ZhY3V1bV9zdGF0X2lzb2xhdGlvbiB2YWx1ZXMgKDEsMSk7IH0KK3N0ZXAgczJf dmFjdXVtICAgICAgICAgICAgICAgICAgeyBWQUNVVU0gdGVzdF92YWN1dW1fc3RhdF9pc29s YXRpb247IH0KK3N0ZXAgczJfY2hlY2twb2ludCAgICAgICAgICAgICAgeyBDSEVDS1BPSU5U OyB9CitzdGVwIHMyX3ByaW50X3ZhY3V1bV9zdGF0c190YWJsZQoreworICAgIFNFTEVDVAor ICAgIHZ0LnJlbG5hbWUsIHZ0LnR1cGxlc19kZWxldGVkLCB2dC5yZWNlbnRseV9kZWFkX3R1 cGxlcywgdnQubWlzc2VkX2RlYWRfdHVwbGVzLCB2dC5taXNzZWRfZGVhZF9wYWdlcywgdnQu dHVwbGVzX2Zyb3plbgorICAgIEZST00gcGdfc3RhdF92YWN1dW1fdGFibGVzIHZ0LCBwZ19j bGFzcyBjCisgICAgV0hFUkUgdnQucmVsbmFtZSA9ICd0ZXN0X3ZhY3V1bV9zdGF0X2lzb2xh dGlvbicgQU5EIHZ0LnJlbGlkID0gYy5vaWQ7Cit9CisKK3Blcm11dGF0aW9uCisgICAgczJf aW5zZXJ0CisgICAgczJfcHJpbnRfdmFjdXVtX3N0YXRzX3RhYmxlCisgICAgczFfYmVnaW5f cmVwZWF0YWJsZV9yZWFkCisgICAgczJfdXBkYXRlCisgICAgczJfaW5zZXJ0X2ludGVycnVw dAorICAgIHMyX3ZhY3V1bQorICAgIHMyX3ByaW50X3ZhY3V1bV9zdGF0c190YWJsZQorICAg IHMxX2NvbW1pdAorICAgIHMyX2NoZWNrcG9pbnQKKyAgICBzMl92YWN1dW0KKyAgICBzMl9w cmludF92YWN1dW1fc3RhdHNfdGFibGUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CmluZGV4IDViYWJhOGQzOWZmLi43Y2M5 NGZiZjI3NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5v dXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKQEAgLTE4MDgs NyArMTgwOCw5IEBAIHBnX3N0YXRfYWxsX3RhYmxlc3wgU0VMRUNUIGMub2lkIEFTIHJlbGlk LAogICAgIHBnX3N0YXRfZ2V0X3RvdGFsX3ZhY3V1bV90aW1lKGMub2lkKSBBUyB0b3RhbF92 YWN1dW1fdGltZSwKICAgICBwZ19zdGF0X2dldF90b3RhbF9hdXRvdmFjdXVtX3RpbWUoYy5v aWQpIEFTIHRvdGFsX2F1dG92YWN1dW1fdGltZSwKICAgICBwZ19zdGF0X2dldF90b3RhbF9h bmFseXplX3RpbWUoYy5vaWQpIEFTIHRvdGFsX2FuYWx5emVfdGltZSwKLSAgICBwZ19zdGF0 X2dldF90b3RhbF9hdXRvYW5hbHl6ZV90aW1lKGMub2lkKSBBUyB0b3RhbF9hdXRvYW5hbHl6 ZV90aW1lCisgICAgcGdfc3RhdF9nZXRfdG90YWxfYXV0b2FuYWx5emVfdGltZShjLm9pZCkg QVMgdG90YWxfYXV0b2FuYWx5emVfdGltZSwKKyAgICBwZ19zdGF0X2dldF9yZXZfYWxsX2Zy b3plbl9wYWdlcyhjLm9pZCkgQVMgcmV2X2FsbF9mcm96ZW5fcGFnZXMsCisgICAgcGdfc3Rh dF9nZXRfcmV2X2FsbF92aXNpYmxlX3BhZ2VzKGMub2lkKSBBUyByZXZfYWxsX3Zpc2libGVf cGFnZXMKICAgIEZST00gKChwZ19jbGFzcyBjCiAgICAgIExFRlQgSk9JTiBwZ19pbmRleCBp IE9OICgoYy5vaWQgPSBpLmluZHJlbGlkKSkpCiAgICAgIExFRlQgSk9JTiBwZ19uYW1lc3Bh Y2UgbiBPTiAoKG4ub2lkID0gYy5yZWxuYW1lc3BhY2UpKSkKQEAgLTIyMDAsNyArMjIwMiw5 IEBAIHBnX3N0YXRfc3lzX3RhYmxlc3wgU0VMRUNUIHJlbGlkLAogICAgIHRvdGFsX3ZhY3V1 bV90aW1lLAogICAgIHRvdGFsX2F1dG92YWN1dW1fdGltZSwKICAgICB0b3RhbF9hbmFseXpl X3RpbWUsCi0gICAgdG90YWxfYXV0b2FuYWx5emVfdGltZQorICAgIHRvdGFsX2F1dG9hbmFs eXplX3RpbWUsCisgICAgcmV2X2FsbF9mcm96ZW5fcGFnZXMsCisgICAgcmV2X2FsbF92aXNp YmxlX3BhZ2VzCiAgICBGUk9NIHBnX3N0YXRfYWxsX3RhYmxlcwogICBXSEVSRSAoKHNjaGVt YW5hbWUgPSBBTlkgKEFSUkFZWydwZ19jYXRhbG9nJzo6bmFtZSwgJ2luZm9ybWF0aW9uX3Nj aGVtYSc6Om5hbWVdKSkgT1IgKHNjaGVtYW5hbWUgfiAnXnBnX3RvYXN0Jzo6dGV4dCkpOwog cGdfc3RhdF91c2VyX2Z1bmN0aW9uc3wgU0VMRUNUIHAub2lkIEFTIGZ1bmNpZCwKQEAgLTIy NTIsOSArMjI1Niw0MyBAQCBwZ19zdGF0X3VzZXJfdGFibGVzfCBTRUxFQ1QgcmVsaWQsCiAg ICAgdG90YWxfdmFjdXVtX3RpbWUsCiAgICAgdG90YWxfYXV0b3ZhY3V1bV90aW1lLAogICAg IHRvdGFsX2FuYWx5emVfdGltZSwKLSAgICB0b3RhbF9hdXRvYW5hbHl6ZV90aW1lCisgICAg dG90YWxfYXV0b2FuYWx5emVfdGltZSwKKyAgICByZXZfYWxsX2Zyb3plbl9wYWdlcywKKyAg ICByZXZfYWxsX3Zpc2libGVfcGFnZXMKICAgIEZST00gcGdfc3RhdF9hbGxfdGFibGVzCiAg IFdIRVJFICgoc2NoZW1hbmFtZSA8PiBBTEwgKEFSUkFZWydwZ19jYXRhbG9nJzo6bmFtZSwg J2luZm9ybWF0aW9uX3NjaGVtYSc6Om5hbWVdKSkgQU5EIChzY2hlbWFuYW1lICF+ICdecGdf dG9hc3QnOjp0ZXh0KSk7CitwZ19zdGF0X3ZhY3V1bV90YWJsZXN8IFNFTEVDVCBucy5uc3Bu YW1lIEFTIHNjaGVtYW5hbWUsCisgICAgcmVsLnJlbG5hbWUsCisgICAgc3RhdHMucmVsaWQs CisgICAgc3RhdHMudG90YWxfYmxrc19yZWFkLAorICAgIHN0YXRzLnRvdGFsX2Jsa3NfaGl0 LAorICAgIHN0YXRzLnRvdGFsX2Jsa3NfZGlydGllZCwKKyAgICBzdGF0cy50b3RhbF9ibGtz X3dyaXR0ZW4sCisgICAgc3RhdHMucmVsX2Jsa3NfcmVhZCwKKyAgICBzdGF0cy5yZWxfYmxr c19oaXQsCisgICAgc3RhdHMucGFnZXNfc2Nhbm5lZCwKKyAgICBzdGF0cy5wYWdlc19yZW1v dmVkLAorICAgIHN0YXRzLnZtX25ld19mcm96ZW5fcGFnZXMsCisgICAgc3RhdHMudm1fbmV3 X3Zpc2libGVfcGFnZXMsCisgICAgc3RhdHMudm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2Vz LAorICAgIHN0YXRzLm1pc3NlZF9kZWFkX3BhZ2VzLAorICAgIHN0YXRzLnR1cGxlc19kZWxl dGVkLAorICAgIHN0YXRzLnR1cGxlc19mcm96ZW4sCisgICAgc3RhdHMucmVjZW50bHlfZGVh ZF90dXBsZXMsCisgICAgc3RhdHMubWlzc2VkX2RlYWRfdHVwbGVzLAorICAgIHN0YXRzLndy YXBhcm91bmRfZmFpbHNhZmUsCisgICAgc3RhdHMuaW5kZXhfdmFjdXVtX2NvdW50LAorICAg IHN0YXRzLndhbF9yZWNvcmRzLAorICAgIHN0YXRzLndhbF9mcGksCisgICAgc3RhdHMud2Fs X2J5dGVzLAorICAgIHN0YXRzLmJsa19yZWFkX3RpbWUsCisgICAgc3RhdHMuYmxrX3dyaXRl X3RpbWUsCisgICAgc3RhdHMuZGVsYXlfdGltZSwKKyAgICBzdGF0cy50b3RhbF90aW1lCisg ICBGUk9NIChwZ19jbGFzcyByZWwKKyAgICAgSk9JTiBwZ19uYW1lc3BhY2UgbnMgT04gKChu cy5vaWQgPSByZWwucmVsbmFtZXNwYWNlKSkpLAorICAgIExBVEVSQUwgcGdfc3RhdF9nZXRf dmFjdXVtX3RhYmxlcyhyZWwub2lkKSBzdGF0cyhyZWxpZCwgdG90YWxfYmxrc19yZWFkLCB0 b3RhbF9ibGtzX2hpdCwgdG90YWxfYmxrc19kaXJ0aWVkLCB0b3RhbF9ibGtzX3dyaXR0ZW4s IHJlbF9ibGtzX3JlYWQsIHJlbF9ibGtzX2hpdCwgcGFnZXNfc2Nhbm5lZCwgcGFnZXNfcmVt b3ZlZCwgdm1fbmV3X2Zyb3plbl9wYWdlcywgdm1fbmV3X3Zpc2libGVfcGFnZXMsIHZtX25l d192aXNpYmxlX2Zyb3plbl9wYWdlcywgbWlzc2VkX2RlYWRfcGFnZXMsIHR1cGxlc19kZWxl dGVkLCB0dXBsZXNfZnJvemVuLCByZWNlbnRseV9kZWFkX3R1cGxlcywgbWlzc2VkX2RlYWRf dHVwbGVzLCB3cmFwYXJvdW5kX2ZhaWxzYWZlLCBpbmRleF92YWN1dW1fY291bnQsIHdhbF9y ZWNvcmRzLCB3YWxfZnBpLCB3YWxfYnl0ZXMsIGJsa19yZWFkX3RpbWUsIGJsa193cml0ZV90 aW1lLCBkZWxheV90aW1lLCB0b3RhbF90aW1lKQorICBXSEVSRSAocmVsLnJlbGtpbmQgPSAn cic6OiJjaGFyIik7CiBwZ19zdGF0X3dhbHwgU0VMRUNUIHdhbF9yZWNvcmRzLAogICAgIHdh bF9mcGksCiAgICAgd2FsX2J5dGVzLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC92YWN1dW1fdGFibGVzX3N0YXRpc3RpY3Mub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC92YWN1dW1fdGFibGVzX3N0YXRpc3RpY3Mub3V0Cm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iNWVhOWM5YWIxZQotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdmFjdXVtX3RhYmxlc19zdGF0aXN0aWNz Lm91dApAQCAtMCwwICsxLDIyNyBAQAorLS0KKy0tIFRlc3QgY3VtdWxhdGl2ZSB2YWN1dW0g c3RhdHMgc3lzdGVtCistLQorLS0gQ2hlY2sgdGhlIHdhbGwgc3RhdGlzdGljcyBjb2xsZWN0 ZWQgZHVyaW5nIHZhY3V1bSBvcGVyYXRpb246CistLSBudW1iZXIgb2YgZnJvemVuIGFuZCB2 aXNpYmxlIHBhZ2VzIHNldCBieSB2YWN1dW07CistLSBudW1iZXIgb2YgZnJvemVuIGFuZCB2 aXNpYmxlIHBhZ2VzIHJlbW92ZWQgYnkgYmFja2VuZC4KKy0tIFN0YXRpc3RpYyB3YWxfZnBp IGlzIG5vdCBkaXNwbGF5ZWQgaW4gdGhpcyB0ZXN0IGJlY2F1c2UgaXRzIGJlaGF2aW9yIGlz IHVuc3RhYmxlLgorLS0KKy0tIGNvbmRpdGlvIHNpbmUgcXVhIG5vbgorU0hPVyB0cmFja19j b3VudHM7ICAtLSBtdXN0IGJlIG9uCisgdHJhY2tfY291bnRzIAorLS0tLS0tLS0tLS0tLS0K KyBvbgorKDEgcm93KQorCitcc2V0IHNhbXBsZV9zaXplIDEwMDAwCistLSBub3QgZW5hYmxl ZCBieSBkZWZhdWx0LCBidXQgd2Ugd2FudCB0byB0ZXN0IGl0Li4uCitTRVQgdHJhY2tfZnVu Y3Rpb25zIFRPICdhbGwnOworLS0gVGVzdCB0aGF0IHZhY3V1bSBzdGF0aXN0aWNzIHdpbGwg YmUgZW1wdHkgd2hlbiBwYXJhbWV0ZXIgaXMgb2ZmLgorU0VUIHRyYWNrX3ZhY3V1bV9zdGF0 aXN0aWNzIFRPICdvZmYnOworQ1JFQVRFIFRBQkxFIHZlc3RhdCAoeCBpbnQpIFdJVEggKGF1 dG92YWN1dW1fZW5hYmxlZCA9IG9mZiwgZmlsbGZhY3RvciA9IDEwKTsKK0lOU0VSVCBJTlRP IHZlc3RhdCBTRUxFQ1QgeCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDpzYW1wbGVfc2l6ZSkg YXMgeDsKK0FOQUxZWkUgdmVzdGF0OworREVMRVRFIEZST00gdmVzdGF0IFdIRVJFIHggJSAy ID0gMDsKK1ZBQ1VVTSAoUEFSQUxMRUwgMCwgQlVGRkVSX1VTQUdFX0xJTUlUIDEyOCkgdmVz dGF0OworLS0gTXVzdCBiZSBlbXB0eS4KK1NFTEVDVCByZWxuYW1lLHRvdGFsX2Jsa3NfcmVh ZCwgdG90YWxfYmxrc19oaXQsIHRvdGFsX2Jsa3NfZGlydGllZCwgdG90YWxfYmxrc193cml0 dGVuLHJlbF9ibGtzX3JlYWQsIHJlbF9ibGtzX2hpdCwKK3BhZ2VzX3NjYW5uZWQsIHBhZ2Vz X3JlbW92ZWQsIHZtX25ld19mcm96ZW5fcGFnZXMsIHZtX25ld192aXNpYmxlX3BhZ2VzLCB2 bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMsIG1pc3NlZF9kZWFkX3BhZ2VzLAordHVwbGVz X2RlbGV0ZWQsIHR1cGxlc19mcm96ZW4sIHJlY2VudGx5X2RlYWRfdHVwbGVzLCBtaXNzZWRf ZGVhZF90dXBsZXMsIGluZGV4X3ZhY3V1bV9jb3VudCwKK3dhbF9yZWNvcmRzLCB3YWxfZnBp LCB3YWxfYnl0ZXMsIGJsa19yZWFkX3RpbWUsIGJsa193cml0ZV90aW1lLGRlbGF5X3RpbWUs IHRvdGFsX3RpbWUKK0ZST00gcGdfc3RhdF92YWN1dW1fdGFibGVzIHZ0CitXSEVSRSB2dC5y ZWxuYW1lID0gJ3Zlc3RhdCc7CisgcmVsbmFtZSB8IHRvdGFsX2Jsa3NfcmVhZCB8IHRvdGFs X2Jsa3NfaGl0IHwgdG90YWxfYmxrc19kaXJ0aWVkIHwgdG90YWxfYmxrc193cml0dGVuIHwg cmVsX2Jsa3NfcmVhZCB8IHJlbF9ibGtzX2hpdCB8IHBhZ2VzX3NjYW5uZWQgfCBwYWdlc19y ZW1vdmVkIHwgdm1fbmV3X2Zyb3plbl9wYWdlcyB8IHZtX25ld192aXNpYmxlX3BhZ2VzIHwg dm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzIHwgbWlzc2VkX2RlYWRfcGFnZXMgfCB0dXBs ZXNfZGVsZXRlZCB8IHR1cGxlc19mcm96ZW4gfCByZWNlbnRseV9kZWFkX3R1cGxlcyB8IG1p c3NlZF9kZWFkX3R1cGxlcyB8IGluZGV4X3ZhY3V1bV9jb3VudCB8IHdhbF9yZWNvcmRzIHwg d2FsX2ZwaSB8IHdhbF9ieXRlcyB8IGJsa19yZWFkX3RpbWUgfCBibGtfd3JpdGVfdGltZSB8 IGRlbGF5X3RpbWUgfCB0b3RhbF90aW1lIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyB2ZXN0YXQgIHwgICAgICAgICAg ICAgICAwIHwgICAgICAgICAgICAgIDAgfCAgICAgICAgICAgICAgICAgIDAgfCAgICAgICAg ICAgICAgICAgIDAgfCAgICAgICAgICAgICAwIHwgICAgICAgICAgICAwIHwgICAgICAgICAg ICAgMCB8ICAgICAgICAgICAgIDAgfCAgICAgICAgICAgICAgICAgICAwIHwgICAgICAgICAg ICAgICAgICAgIDAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgfCAgICAgICAgICAg ICAgICAgMCB8ICAgICAgICAgICAgICAwIHwgICAgICAgICAgICAgMCB8ICAgICAgICAgICAg ICAgICAgICAwIHwgICAgICAgICAgICAgICAgICAwIHwgICAgICAgICAgICAgICAgICAwIHwg ICAgICAgICAgIDAgfCAgICAgICAwIHwgICAgICAgICAwIHwgICAgICAgICAgICAgMCB8ICAg ICAgICAgICAgICAwIHwgICAgICAgICAgMCB8ICAgICAgICAgIDAKKygxIHJvdykKKworUkVT RVQgdHJhY2tfdmFjdXVtX3N0YXRpc3RpY3M7CitEUk9QIFRBQkxFIHZlc3RhdCBDQVNDQURF OworU0hPVyB0cmFja192YWN1dW1fc3RhdGlzdGljczsgIC0tIG11c3QgYmUgb24KKyB0cmFj a192YWN1dW1fc3RhdGlzdGljcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBvbgor KDEgcm93KQorCistLSBlbnN1cmUgcGVuZGluZyBzdGF0cyBhcmUgZmx1c2hlZAorU0VMRUNU IHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVz aCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tU0VUIHN0 YXRzX2ZldGNoX2NvbnNpc3RlbmN5ID0gc25hcHNob3Q7CitDUkVBVEUgVEFCTEUgdmVzdGF0 ICh4IGludCkgV0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gb2ZmLCBmaWxsZmFjdG9yID0g MTApOworSU5TRVJUIElOVE8gdmVzdGF0IFNFTEVDVCB4IEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsOnNhbXBsZV9zaXplKSBhcyB4OworQU5BTFlaRSB2ZXN0YXQ7CitTRUxFQ1Qgb2lkIEFT IHJvaWQgZnJvbSBwZ19jbGFzcyB3aGVyZSByZWxuYW1lID0gJ3Zlc3RhdCcgXGdzZXQKK0RF TEVURSBGUk9NIHZlc3RhdCBXSEVSRSB4ICUgMiA9IDA7CistLSBCZWZvcmUgdGhlIGZpcnN0 IHZhY3V1bSBleGVjdXRpb24gZXh0ZW5kZWQgc3RhdHMgdmlldyBpcyBlbXB0eS4KK1NFTEVD VCB2dC5yZWxuYW1lLHZtX25ld19mcm96ZW5fcGFnZXMsdHVwbGVzX2RlbGV0ZWQscmVscGFn ZXMscGFnZXNfc2Nhbm5lZCxwYWdlc19yZW1vdmVkCitGUk9NIHBnX3N0YXRfdmFjdXVtX3Rh YmxlcyB2dCwgcGdfY2xhc3MgYworV0hFUkUgdnQucmVsbmFtZSA9ICd2ZXN0YXQnIEFORCB2 dC5yZWxpZCA9IGMub2lkOworIHJlbG5hbWUgfCB2bV9uZXdfZnJvemVuX3BhZ2VzIHwgdHVw bGVzX2RlbGV0ZWQgfCByZWxwYWdlcyB8IHBhZ2VzX3NjYW5uZWQgfCBwYWdlc19yZW1vdmVk IAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorIHZlc3RhdCAgfCAg ICAgICAgICAgICAgICAgICAwIHwgICAgICAgICAgICAgIDAgfCAgICAgIDQ1NSB8ICAgICAg ICAgICAgIDAgfCAgICAgICAgICAgICAwCisoMSByb3cpCisKK1NFTEVDVCByZWxwYWdlcyBB UyBycAorRlJPTSBwZ19jbGFzcyBjCitXSEVSRSByZWxuYW1lID0gJ3Zlc3RhdCcgXGdzZXQK K1ZBQ1VVTSAoUEFSQUxMRUwgMCwgQlVGRkVSX1VTQUdFX0xJTUlUIDEyOCwgSU5ERVhfQ0xF QU5VUCBPRkYpIHZlc3RhdDsKKy0tIGl0IGlzIG5lY2Vzc2FyeSB0byBjaGVjayB0aGUgd2Fs IHN0YXRpc3RpY3MKK0NIRUNLUE9JTlQ7CistLSBUaGUgdGFibGUgYW5kIGluZGV4IGV4dGVu ZGVkIHZhY3V1bSBzdGF0aXN0aWNzIHNob3VsZCBzaG93IHVzIHRoYXQKKy0tIHZhY3V1bSBm cm96ZWQgcGFnZXMgYW5kIGNsZWFuIHVwIHBhZ2VzLCBidXQgcGFnZXNfcmVtb3ZlZCBzdGF5 ZWQgdGhlIHNhbWUKKy0tIGJlY2F1c2Ugb2Ygbm90IGZ1bGwgdGFibGUgaGF2ZSBjbGVhbmVk IHVwCitTRUxFQ1QgdnQucmVsbmFtZSx2bV9uZXdfZnJvemVuX3BhZ2VzID4gMCBBUyB2bV9u ZXdfZnJvemVuX3BhZ2VzLHR1cGxlc19kZWxldGVkID4gMCBBUyB0dXBsZXNfZGVsZXRlZCxy ZWxwYWdlcy06cnAgPSAwIEFTIHJlbHBhZ2VzLHBhZ2VzX3NjYW5uZWQgPiAwIEFTIHBhZ2Vz X3NjYW5uZWQscGFnZXNfcmVtb3ZlZCA9IDAgQVMgcGFnZXNfcmVtb3ZlZAorRlJPTSBwZ19z dGF0X3ZhY3V1bV90YWJsZXMgdnQsIHBnX2NsYXNzIGMKK1dIRVJFIHZ0LnJlbG5hbWUgPSAn dmVzdGF0JyBBTkQgdnQucmVsaWQgPSBjLm9pZDsKKyByZWxuYW1lIHwgdm1fbmV3X2Zyb3pl bl9wYWdlcyB8IHR1cGxlc19kZWxldGVkIHwgcmVscGFnZXMgfCBwYWdlc19zY2FubmVkIHwg cGFnZXNfcmVtb3ZlZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0K KyB2ZXN0YXQgIHwgZiAgICAgICAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgIHwgdCAg ICAgICAgfCB0ICAgICAgICAgICAgIHwgdAorKDEgcm93KQorCitTRUxFQ1Qgdm1fbmV3X2Zy b3plbl9wYWdlcyBBUyBmcCx0dXBsZXNfZGVsZXRlZCBBUyB0ZCxyZWxwYWdlcyBBUyBycCwg cGFnZXNfc2Nhbm5lZCBBUyBwcywgcGFnZXNfcmVtb3ZlZCBBUyBwcgorRlJPTSBwZ19zdGF0 X3ZhY3V1bV90YWJsZXMgdnQsIHBnX2NsYXNzIGMKK1dIRVJFIHZ0LnJlbG5hbWUgPSAndmVz dGF0JyBBTkQgdnQucmVsaWQgPSBjLm9pZCBcZ3NldAorLS0gU3RvcmUgV0FMIGFkdmFuY2Vz IGludG8gdmFyaWFibGVzCitTRUxFQ1Qgd2FsX3JlY29yZHMgQVMgaHdyLHdhbF9ieXRlcyBB UyBod2Isd2FsX2ZwaSBBUyBoZnBpIEZST00gcGdfc3RhdF92YWN1dW1fdGFibGVzIFdIRVJF IHJlbG5hbWUgPSAndmVzdGF0JyBcZ3NldAorLS0gTG9vayBpbnRvIFdBTCByZWNvcmRzIGRl bHRhcy4KK1NFTEVDVCB3YWxfcmVjb3JkcyA+IDAgQVMgZFdSLCB3YWxfYnl0ZXMgPiAwIEFT IGRXQgorRlJPTSBwZ19zdGF0X3ZhY3V1bV90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICd2ZXN0 YXQnOworIGR3ciB8IGR3YiAKKy0tLS0tKy0tLS0tCisgdCAgIHwgdAorKDEgcm93KQorCitE RUxFVEUgRlJPTSB2ZXN0YXQ7OworVkFDVVVNIChQQVJBTExFTCAwLCBCVUZGRVJfVVNBR0Vf TElNSVQgMTI4LCBJTkRFWF9DTEVBTlVQIE9GRikgdmVzdGF0OworLS0gaXQgaXMgbmVjZXNz YXJ5IHRvIGNoZWNrIHRoZSB3YWwgc3RhdGlzdGljcworQ0hFQ0tQT0lOVDsKKy0tIHBhZ2Vz X3JlbW92ZWQgbXVzdCBiZSBpbmNyZWFzZWQKK1NFTEVDVCB2dC5yZWxuYW1lLHZtX25ld19m cm96ZW5fcGFnZXMtOmZwID4gMCBBUyB2bV9uZXdfZnJvemVuX3BhZ2VzLHR1cGxlc19kZWxl dGVkLTp0ZCA+IDAgQVMgdHVwbGVzX2RlbGV0ZWQscmVscGFnZXMgLTpycCA9IDAgQVMgcmVs cGFnZXMscGFnZXNfc2Nhbm5lZC06cHMgPiAwIEFTIHBhZ2VzX3NjYW5uZWQscGFnZXNfcmVt b3ZlZC06cHIgPiAwIEFTIHBhZ2VzX3JlbW92ZWQKK0ZST00gcGdfc3RhdF92YWN1dW1fdGFi bGVzIHZ0LCBwZ19jbGFzcyBjCitXSEVSRSB2dC5yZWxuYW1lID0gJ3Zlc3RhdCcgQU5EIHZ0 LnJlbGlkID0gYy5vaWQ7CisgcmVsbmFtZSB8IHZtX25ld19mcm96ZW5fcGFnZXMgfCB0dXBs ZXNfZGVsZXRlZCB8IHJlbHBhZ2VzIHwgcGFnZXNfc2Nhbm5lZCB8IHBhZ2VzX3JlbW92ZWQg CistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgdmVzdGF0ICB8IGYg ICAgICAgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICB8IGYgICAgICAgIHwgdCAgICAg ICAgICAgICB8IHQKKygxIHJvdykKKworU0VMRUNUIHZtX25ld19mcm96ZW5fcGFnZXMgQVMg ZnAsdHVwbGVzX2RlbGV0ZWQgQVMgdGQscmVscGFnZXMgQVMgcnAsIHBhZ2VzX3NjYW5uZWQg QVMgcHMsIHBhZ2VzX3JlbW92ZWQgQVMgcHIKK0ZST00gcGdfc3RhdF92YWN1dW1fdGFibGVz IHZ0LCBwZ19jbGFzcyBjCitXSEVSRSB2dC5yZWxuYW1lID0gJ3Zlc3RhdCcgQU5EIHZ0LnJl bGlkID0gYy5vaWQgXGdzZXQKKy0tIFN0b3JlIFdBTCBhZHZhbmNlcyBpbnRvIHZhcmlhYmxl cworU0VMRUNUIHdhbF9yZWNvcmRzLTpod3IgQVMgZHdyLCB3YWxfYnl0ZXMtOmh3YiBBUyBk d2IsIHdhbF9mcGktOmhmcGkgQVMgZGZwaQorRlJPTSBwZ19zdGF0X3ZhY3V1bV90YWJsZXMg V0hFUkUgcmVsbmFtZSA9ICd2ZXN0YXQnIFxnc2V0CistLSBXQUwgYWR2YW5jZSBzaG91bGQg YmUgZGV0ZWN0ZWQuCitTRUxFQ1QgOmR3ciA+IDAgQVMgZFdSLCA6ZHdiID4gMCBBUyBkV0I7 CisgZHdyIHwgZHdiIAorLS0tLS0rLS0tLS0KKyB0ICAgfCB0CisoMSByb3cpCisKKy0tIFN0 b3JlIFdBTCBhZHZhbmNlcyBpbnRvIHZhcmlhYmxlcworU0VMRUNUIHdhbF9yZWNvcmRzIEFT IGh3cix3YWxfYnl0ZXMgQVMgaHdiLHdhbF9mcGkgQVMgaGZwaSBGUk9NIHBnX3N0YXRfdmFj dXVtX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ3Zlc3RhdCcgXGdzZXQKK0lOU0VSVCBJTlRP IHZlc3RhdCBTRUxFQ1QgeCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDpzYW1wbGVfc2l6ZSkg YXMgeDsKK0RFTEVURSBGUk9NIHZlc3RhdCBXSEVSRSB4ICUgMiA9IDA7CistLSBWQUNVVU0g RlVMTCBkb2Vzbid0IHJlcG9ydCB0byBzdGF0IGNvbGxlY3Rvci4gU28sIG5vIGFueSBhZHZh bmNlbWVudHMgb2Ygc3RhdGlzdGljcworLS0gYXJlIGRldGVjdGVkIGhlcmUuCitWQUNVVU0g RlVMTCB2ZXN0YXQ7CistLSBJdCBpcyBuZWNlc3NhcnkgdG8gY2hlY2sgdGhlIHdhbCBzdGF0 aXN0aWNzCitDSEVDS1BPSU5UOworLS0gU3RvcmUgV0FMIGFkdmFuY2VzIGludG8gdmFyaWFi bGVzCitTRUxFQ1Qgd2FsX3JlY29yZHMtOmh3ciBBUyBkd3IyLCB3YWxfYnl0ZXMtOmh3YiBB UyBkd2IyLCB3YWxfZnBpLTpoZnBpIEFTIGRmcGkyCitGUk9NIHBnX3N0YXRfdmFjdXVtX3Rh YmxlcyBXSEVSRSByZWxuYW1lID0gJ3Zlc3RhdCcgXGdzZXQKKy0tIFdBTCBhbmQgb3RoZXIg c3RhdGlzdGljcyBhZHZhbmNlIHNob3VsZCBub3QgYmUgZGV0ZWN0ZWQuCitTRUxFQ1QgOmR3 cjI9MCBBUyBkV1IsIDpkZnBpMj0wIEFTIGRGUEksIDpkd2IyPTAgQVMgZFdCOworIGR3ciB8 IGRmcGkgfCBkd2IgCistLS0tLSstLS0tLS0rLS0tLS0KKyB0ICAgfCB0ICAgIHwgdAorKDEg cm93KQorCitTRUxFQ1QgdnQucmVsbmFtZSx2bV9uZXdfZnJvemVuX3BhZ2VzLTpmcCA9IDAg QVMgdm1fbmV3X2Zyb3plbl9wYWdlcyx0dXBsZXNfZGVsZXRlZC06dGQgPSAwIEFTIHR1cGxl c19kZWxldGVkLHJlbHBhZ2VzIC06cnAgPCAwIEFTIHJlbHBhZ2VzLHBhZ2VzX3NjYW5uZWQt OnBzID0gMCBBUyBwYWdlc19zY2FubmVkLHBhZ2VzX3JlbW92ZWQtOnByID0gMCBBUyBwYWdl c19yZW1vdmVkCitGUk9NIHBnX3N0YXRfdmFjdXVtX3RhYmxlcyB2dCwgcGdfY2xhc3MgYwor V0hFUkUgdnQucmVsbmFtZSA9ICd2ZXN0YXQnIEFORCB2dC5yZWxpZCA9IGMub2lkOworIHJl bG5hbWUgfCB2bV9uZXdfZnJvemVuX3BhZ2VzIHwgdHVwbGVzX2RlbGV0ZWQgfCByZWxwYWdl cyB8IHBhZ2VzX3NjYW5uZWQgfCBwYWdlc19yZW1vdmVkIAorLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLQorIHZlc3RhdCAgfCB0ICAgICAgICAgICAgICAgICAgIHwg dCAgICAgICAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgICAgICAgfCB0CisoMSByb3cp CisKK1NFTEVDVCB2bV9uZXdfZnJvemVuX3BhZ2VzIEFTIGZwLHR1cGxlc19kZWxldGVkIEFT IHRkLHJlbHBhZ2VzIEFTIHJwLCBwYWdlc19zY2FubmVkIEFTIHBzLHBhZ2VzX3JlbW92ZWQg QVMgcHIKK0ZST00gcGdfc3RhdF92YWN1dW1fdGFibGVzIHZ0LCBwZ19jbGFzcyBjCitXSEVS RSB2dC5yZWxuYW1lID0gJ3Zlc3RhdCcgQU5EIHZ0LnJlbGlkID0gYy5vaWQgXGdzZXQKKy0t IFN0b3JlIFdBTCBhZHZhbmNlcyBpbnRvIHZhcmlhYmxlcworU0VMRUNUIHdhbF9yZWNvcmRz IEFTIGh3cix3YWxfYnl0ZXMgQVMgaHdiLHdhbF9mcGkgQVMgaGZwaSBGUk9NIHBnX3N0YXRf dmFjdXVtX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ3Zlc3RhdCcgXGdzZXQKK0RFTEVURSBG Uk9NIHZlc3RhdDsKK1RSVU5DQVRFIHZlc3RhdDsKK1ZBQ1VVTSAoUEFSQUxMRUwgMCwgQlVG RkVSX1VTQUdFX0xJTUlUIDEyOCwgSU5ERVhfQ0xFQU5VUCBPRkYpIHZlc3RhdDsKKy0tIGl0 IGlzIG5lY2Vzc2FyeSB0byBjaGVjayB0aGUgd2FsIHN0YXRpc3RpY3MKK0NIRUNLUE9JTlQ7 CistLSBTdG9yZSBXQUwgYWR2YW5jZXMgaW50byB2YXJpYWJsZXMgYWZ0ZXIgcmVtb3Zpbmcg YWxsIHR1cGxlcyBmcm9tIHRoZSB0YWJsZQorU0VMRUNUIHdhbF9yZWNvcmRzLTpod3IgQVMg ZHdyMywgd2FsX2J5dGVzLTpod2IgQVMgZHdiMywgd2FsX2ZwaS06aGZwaSBBUyBkZnBpMwor RlJPTSBwZ19zdGF0X3ZhY3V1bV90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICd2ZXN0YXQnIFxn c2V0CistLVRoZXJlIGFyZSBub3RoaW5nIGNoYW5nZWQKK1NFTEVDVCA6ZHdyMz4wIEFTIGRX UiwgOmRmcGkzPTAgQVMgZEZQSSwgOmR3YjM+MCBBUyBkV0I7CisgZHdyIHwgZGZwaSB8IGR3 YiAKKy0tLS0tKy0tLS0tLSstLS0tLQorIHQgICB8IHQgICAgfCB0CisoMSByb3cpCisKKy0t CistLSBOb3csIHRoZSB0YWJsZSBhbmQgaW5kZXggaXMgY29tcHJlc3NlZCBpbnRvIHplcm8g bnVtYmVyIG9mIHBhZ2VzLiBDaGVjayBpdAorLS0gaW4gdmFjdXVtIGV4dGVuZGVkIHN0YXRp c3RpY3MuCistLSBUaGUgdm1fbmV3X2Zyb3plbl9wYWdlcywgcGFnZXNfc2Nhbm5lZCB2YWx1 ZXMgc2hvdWxkbid0IGJlIGNoYW5nZWQKKy0tCitTRUxFQ1QgdnQucmVsbmFtZSx2bV9uZXdf ZnJvemVuX3BhZ2VzLTpmcCA9IDAgQVMgdm1fbmV3X2Zyb3plbl9wYWdlcyx0dXBsZXNfZGVs ZXRlZC06dGQgPSAwIEFTIHR1cGxlc19kZWxldGVkLHJlbHBhZ2VzIC06cnAgPSAwIEFTIHJl bHBhZ2VzLHBhZ2VzX3NjYW5uZWQtOnBzID0gMCBBUyBwYWdlc19zY2FubmVkLHBhZ2VzX3Jl bW92ZWQtOnByID0gMCBBUyBwYWdlc19yZW1vdmVkCitGUk9NIHBnX3N0YXRfdmFjdXVtX3Rh YmxlcyB2dCwgcGdfY2xhc3MgYworV0hFUkUgdnQucmVsbmFtZSA9ICd2ZXN0YXQnIEFORCB2 dC5yZWxpZCA9IGMub2lkOworIHJlbG5hbWUgfCB2bV9uZXdfZnJvemVuX3BhZ2VzIHwgdHVw bGVzX2RlbGV0ZWQgfCByZWxwYWdlcyB8IHBhZ2VzX3NjYW5uZWQgfCBwYWdlc19yZW1vdmVk IAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorIHZlc3RhdCAgfCB0 ICAgICAgICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICAgfCBmICAgICAgICB8IHQgICAg ICAgICAgICAgfCB0CisoMSByb3cpCisKK0RST1AgVEFCTEUgdmVzdGF0IENBU0NBREU7CitD UkVBVEUgVEFCTEUgdmVzdGF0ICh4IGludCkgV0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVkID0g b2ZmLCBmaWxsZmFjdG9yID0gMTApOworSU5TRVJUIElOVE8gdmVzdGF0IFNFTEVDVCB4IEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsOnNhbXBsZV9zaXplKSBhcyB4OworQU5BTFlaRSB2ZXN0 YXQ7CistLSBtdXN0IGJlIGVtcHR5CitTRUxFQ1Qgdm1fbmV3X2Zyb3plbl9wYWdlcywgdm1f bmV3X3Zpc2libGVfcGFnZXMsIHJldl9hbGxfZnJvemVuX3BhZ2VzLHJldl9hbGxfdmlzaWJs ZV9wYWdlcyx2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMKK0ZST00gcGdfc3RhdF92YWN1 dW1fdGFibGVzLCBwZ19zdGF0X2FsbF90YWJsZXMgV0hFUkUgcGdfc3RhdF92YWN1dW1fdGFi bGVzLnJlbG5hbWUgPSAndmVzdGF0JyBhbmQgcGdfc3RhdF92YWN1dW1fdGFibGVzLnJlbGlk ID0gcGdfc3RhdF9hbGxfdGFibGVzLnJlbGlkOworIHZtX25ld19mcm96ZW5fcGFnZXMgfCB2 bV9uZXdfdmlzaWJsZV9wYWdlcyB8IHJldl9hbGxfZnJvemVuX3BhZ2VzIHwgcmV2X2FsbF92 aXNpYmxlX3BhZ2VzIHwgdm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgICAgICAgICAgICAgICAgIDAgfCAgICAgICAgICAgICAgICAgICAgMCB8ICAg ICAgICAgICAgICAgICAgICAwIHwgICAgICAgICAgICAgICAgICAgICAwIHwgICAgICAgICAg ICAgICAgICAgICAgICAgICAwCisoMSByb3cpCisKK1ZBQ1VVTSAoUEFSQUxMRUwgMCwgQlVG RkVSX1VTQUdFX0xJTUlUIDEyOCkgdmVzdGF0OworLS0gYmFja2VuZCBkZWZyZWV6ZWQgcGFn ZXMKK1NFTEVDVCB2bV9uZXdfZnJvemVuX3BhZ2VzID4gMCBBUyB2bV9uZXdfZnJvemVuX3Bh Z2VzLHZtX25ld192aXNpYmxlX3BhZ2VzID4gMCBBUyB2bV9uZXdfdmlzaWJsZV9wYWdlcyx2 bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMgPiAwIEFTIHZtX25ld192aXNpYmxlX2Zyb3pl bl9wYWdlcyxyZXZfYWxsX2Zyb3plbl9wYWdlcyA9IDAgQVMgcmV2X2FsbF9mcm96ZW5fcGFn ZXMscmV2X2FsbF92aXNpYmxlX3BhZ2VzID0gMCBBUyByZXZfYWxsX3Zpc2libGVfcGFnZXMK K0ZST00gcGdfc3RhdF92YWN1dW1fdGFibGVzLCBwZ19zdGF0X2FsbF90YWJsZXMgV0hFUkUg cGdfc3RhdF92YWN1dW1fdGFibGVzLnJlbG5hbWUgPSAndmVzdGF0JyBhbmQgcGdfc3RhdF92 YWN1dW1fdGFibGVzLnJlbGlkID0gcGdfc3RhdF9hbGxfdGFibGVzLnJlbGlkOworIHZtX25l d19mcm96ZW5fcGFnZXMgfCB2bV9uZXdfdmlzaWJsZV9wYWdlcyB8IHZtX25ld192aXNpYmxl X2Zyb3plbl9wYWdlcyB8IHJldl9hbGxfZnJvemVuX3BhZ2VzIHwgcmV2X2FsbF92aXNpYmxl X3BhZ2VzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGYgICAgICAgICAgICAgICAgICAgfCB0ICAgICAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHQgICAgICAg ICAgICAgICAgICAgIHwgdAorKDEgcm93KQorCitTRUxFQ1Qgdm1fbmV3X2Zyb3plbl9wYWdl cyBBUyBwZiwgdm1fbmV3X3Zpc2libGVfcGFnZXMgQVMgcHYsdm1fbmV3X3Zpc2libGVfZnJv emVuX3BhZ2VzIEFTIHB2ZiwgcmV2X2FsbF9mcm96ZW5fcGFnZXMgQVMgaGFmcCxyZXZfYWxs X3Zpc2libGVfcGFnZXMgQVMgaGF2cAorRlJPTSBwZ19zdGF0X3ZhY3V1bV90YWJsZXMsIHBn X3N0YXRfYWxsX3RhYmxlcyBXSEVSRSBwZ19zdGF0X3ZhY3V1bV90YWJsZXMucmVsbmFtZSA9 ICd2ZXN0YXQnIGFuZCBwZ19zdGF0X3ZhY3V1bV90YWJsZXMucmVsaWQgPSBwZ19zdGF0X2Fs bF90YWJsZXMucmVsaWQgXGdzZXQKK1VQREFURSB2ZXN0YXQgU0VUIHggPSB4ICsgMTAwMTsK K1ZBQ1VVTSAoUEFSQUxMRUwgMCwgQlVGRkVSX1VTQUdFX0xJTUlUIDEyOCkgdmVzdGF0Owor U0VMRUNUIHZtX25ld19mcm96ZW5fcGFnZXMgPiA6cGYgQVMgdm1fbmV3X2Zyb3plbl9wYWdl cyx2bV9uZXdfdmlzaWJsZV9wYWdlcyA+IDpwdiBBUyB2bV9uZXdfdmlzaWJsZV9wYWdlcyx2 bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMgPiA6cHZmIEFTIHZtX25ld192aXNpYmxlX2Zy b3plbl9wYWdlcyxyZXZfYWxsX2Zyb3plbl9wYWdlcyA+IDpoYWZwIEFTIHJldl9hbGxfZnJv emVuX3BhZ2VzLHJldl9hbGxfdmlzaWJsZV9wYWdlcyA+IDpoYXZwIEFTIHJldl9hbGxfdmlz aWJsZV9wYWdlcworRlJPTSBwZ19zdGF0X3ZhY3V1bV90YWJsZXMsIHBnX3N0YXRfYWxsX3Rh YmxlcyBXSEVSRSBwZ19zdGF0X3ZhY3V1bV90YWJsZXMucmVsbmFtZSA9ICd2ZXN0YXQnIGFu ZCBwZ19zdGF0X3ZhY3V1bV90YWJsZXMucmVsaWQgPSBwZ19zdGF0X2FsbF90YWJsZXMucmVs aWQ7Cisgdm1fbmV3X2Zyb3plbl9wYWdlcyB8IHZtX25ld192aXNpYmxlX3BhZ2VzIHwgdm1f bmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzIHwgcmV2X2FsbF9mcm96ZW5fcGFnZXMgfCByZXZf YWxsX3Zpc2libGVfcGFnZXMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgZiAgICAgICAgICAgICAgICAg ICB8IHQgICAgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgZiAgICAgICAgICAgICAgICAgICAgfCBmCisoMSByb3cpCisKK1NFTEVDVCB2bV9uZXdf ZnJvemVuX3BhZ2VzIEFTIHBmLCB2bV9uZXdfdmlzaWJsZV9wYWdlcyBBUyBwdiwgdm1fbmV3 X3Zpc2libGVfZnJvemVuX3BhZ2VzIEFTIHB2ZiwgcmV2X2FsbF9mcm96ZW5fcGFnZXMgQVMg aGFmcCxyZXZfYWxsX3Zpc2libGVfcGFnZXMgQVMgaGF2cAorRlJPTSBwZ19zdGF0X3ZhY3V1 bV90YWJsZXMsIHBnX3N0YXRfYWxsX3RhYmxlcyBXSEVSRSBwZ19zdGF0X3ZhY3V1bV90YWJs ZXMucmVsbmFtZSA9ICd2ZXN0YXQnIGFuZCBwZ19zdGF0X3ZhY3V1bV90YWJsZXMucmVsaWQg PSBwZ19zdGF0X2FsbF90YWJsZXMucmVsaWQgXGdzZXQKK1ZBQ1VVTSAoUEFSQUxMRUwgMCwg QlVGRkVSX1VTQUdFX0xJTUlUIDEyOCkgdmVzdGF0OworLS0gdmFjdXVtIGZyZWV6ZWQgcGFn ZXMKK1NFTEVDVCB2bV9uZXdfZnJvemVuX3BhZ2VzID0gOnBmIEFTIHZtX25ld19mcm96ZW5f cGFnZXMsdm1fbmV3X3Zpc2libGVfcGFnZXMgPSA6cHYgQVMgdm1fbmV3X3Zpc2libGVfcGFn ZXMsdm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzID0gOnB2ZiBBUyB2bV9uZXdfdmlzaWJs ZV9mcm96ZW5fcGFnZXMsIHJldl9hbGxfZnJvemVuX3BhZ2VzID0gOmhhZnAgQVMgcmV2X2Fs bF9mcm96ZW5fcGFnZXMscmV2X2FsbF92aXNpYmxlX3BhZ2VzID0gOmhhdnAgQVMgcmV2X2Fs bF92aXNpYmxlX3BhZ2VzCitGUk9NIHBnX3N0YXRfdmFjdXVtX3RhYmxlcywgcGdfc3RhdF9h bGxfdGFibGVzIFdIRVJFIHBnX3N0YXRfdmFjdXVtX3RhYmxlcy5yZWxuYW1lID0gJ3Zlc3Rh dCcgYW5kIHBnX3N0YXRfdmFjdXVtX3RhYmxlcy5yZWxpZCA9IHBnX3N0YXRfYWxsX3RhYmxl cy5yZWxpZDsKKyB2bV9uZXdfZnJvemVuX3BhZ2VzIHwgdm1fbmV3X3Zpc2libGVfcGFnZXMg fCB2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMgfCByZXZfYWxsX2Zyb3plbl9wYWdlcyB8 IHJldl9hbGxfdmlzaWJsZV9wYWdlcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgICAg ICAgICAgIHwgdCAgICAgICAgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCB0ICAgICAgICAgICAgICAgICAgICB8IHQKKygxIHJvdykKKworRFJPUCBUQUJM RSB2ZXN0YXQgQ0FTQ0FERTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxs ZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4 IGU2M2VlMmNmMmJiLi42NDkzZTliNDY4MSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3Nj aGVkdWxlCkBAIC0xMzYsMyArMTM2LDggQEAgdGVzdDogZmFzdF9kZWZhdWx0CiAjIHJ1biB0 YWJsZXNwYWNlIHRlc3QgYXQgdGhlIGVuZCBiZWNhdXNlIGl0IGRyb3BzIHRoZSB0YWJsZXNw YWNlIGNyZWF0ZWQgZHVyaW5nCiAjIHNldHVwIHRoYXQgb3RoZXIgdGVzdHMgbWF5IHVzZS4K IHRlc3Q6IHRhYmxlc3BhY2UKKworIyAtLS0tLS0tLS0tCisjIENoZWNrIHZhY3V1bSBzdGF0 aXN0aWNzCisjIC0tLS0tLS0tLS0KK3Rlc3Q6IHZhY3V1bV90YWJsZXNfc3RhdGlzdGljcwpc IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3ZhY3V1bV90YWJsZXNfc3RhdGlzdGljcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC92YWN1dW1fdGFibGVzX3N0YXRpc3RpY3Muc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi41YmMzNGJlYzY0YgotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3ZhY3V1bV90YWJsZXNfc3RhdGlzdGljcy5zcWwKQEAgLTAs MCArMSwxODMgQEAKKy0tCistLSBUZXN0IGN1bXVsYXRpdmUgdmFjdXVtIHN0YXRzIHN5c3Rl bQorLS0KKy0tIENoZWNrIHRoZSB3YWxsIHN0YXRpc3RpY3MgY29sbGVjdGVkIGR1cmluZyB2 YWN1dW0gb3BlcmF0aW9uOgorLS0gbnVtYmVyIG9mIGZyb3plbiBhbmQgdmlzaWJsZSBwYWdl cyBzZXQgYnkgdmFjdXVtOworLS0gbnVtYmVyIG9mIGZyb3plbiBhbmQgdmlzaWJsZSBwYWdl cyByZW1vdmVkIGJ5IGJhY2tlbmQuCistLSBTdGF0aXN0aWMgd2FsX2ZwaSBpcyBub3QgZGlz cGxheWVkIGluIHRoaXMgdGVzdCBiZWNhdXNlIGl0cyBiZWhhdmlvciBpcyB1bnN0YWJsZS4K Ky0tCisKKy0tIGNvbmRpdGlvIHNpbmUgcXVhIG5vbgorU0hPVyB0cmFja19jb3VudHM7ICAt LSBtdXN0IGJlIG9uCitcc2V0IHNhbXBsZV9zaXplIDEwMDAwCisKKy0tIG5vdCBlbmFibGVk IGJ5IGRlZmF1bHQsIGJ1dCB3ZSB3YW50IHRvIHRlc3QgaXQuLi4KK1NFVCB0cmFja19mdW5j dGlvbnMgVE8gJ2FsbCc7CisKKy0tIFRlc3QgdGhhdCB2YWN1dW0gc3RhdGlzdGljcyB3aWxs IGJlIGVtcHR5IHdoZW4gcGFyYW1ldGVyIGlzIG9mZi4KK1NFVCB0cmFja192YWN1dW1fc3Rh dGlzdGljcyBUTyAnb2ZmJzsKKworQ1JFQVRFIFRBQkxFIHZlc3RhdCAoeCBpbnQpIFdJVEgg KGF1dG92YWN1dW1fZW5hYmxlZCA9IG9mZiwgZmlsbGZhY3RvciA9IDEwKTsKK0lOU0VSVCBJ TlRPIHZlc3RhdCBTRUxFQ1QgeCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDpzYW1wbGVfc2l6 ZSkgYXMgeDsKK0FOQUxZWkUgdmVzdGF0OworCitERUxFVEUgRlJPTSB2ZXN0YXQgV0hFUkUg eCAlIDIgPSAwOworCitWQUNVVU0gKFBBUkFMTEVMIDAsIEJVRkZFUl9VU0FHRV9MSU1JVCAx MjgpIHZlc3RhdDsKKworLS0gTXVzdCBiZSBlbXB0eS4KK1NFTEVDVCByZWxuYW1lLHRvdGFs X2Jsa3NfcmVhZCwgdG90YWxfYmxrc19oaXQsIHRvdGFsX2Jsa3NfZGlydGllZCwgdG90YWxf Ymxrc193cml0dGVuLHJlbF9ibGtzX3JlYWQsIHJlbF9ibGtzX2hpdCwKK3BhZ2VzX3NjYW5u ZWQsIHBhZ2VzX3JlbW92ZWQsIHZtX25ld19mcm96ZW5fcGFnZXMsIHZtX25ld192aXNpYmxl X3BhZ2VzLCB2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMsIG1pc3NlZF9kZWFkX3BhZ2Vz LAordHVwbGVzX2RlbGV0ZWQsIHR1cGxlc19mcm96ZW4sIHJlY2VudGx5X2RlYWRfdHVwbGVz LCBtaXNzZWRfZGVhZF90dXBsZXMsIGluZGV4X3ZhY3V1bV9jb3VudCwKK3dhbF9yZWNvcmRz LCB3YWxfZnBpLCB3YWxfYnl0ZXMsIGJsa19yZWFkX3RpbWUsIGJsa193cml0ZV90aW1lLGRl bGF5X3RpbWUsIHRvdGFsX3RpbWUKK0ZST00gcGdfc3RhdF92YWN1dW1fdGFibGVzIHZ0CitX SEVSRSB2dC5yZWxuYW1lID0gJ3Zlc3RhdCc7CisKK1JFU0VUIHRyYWNrX3ZhY3V1bV9zdGF0 aXN0aWNzOworRFJPUCBUQUJMRSB2ZXN0YXQgQ0FTQ0FERTsKKworU0hPVyB0cmFja192YWN1 dW1fc3RhdGlzdGljczsgIC0tIG11c3QgYmUgb24KKworLS0gZW5zdXJlIHBlbmRpbmcgc3Rh dHMgYXJlIGZsdXNoZWQKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKwor LS1TRVQgc3RhdHNfZmV0Y2hfY29uc2lzdGVuY3kgPSBzbmFwc2hvdDsKK0NSRUFURSBUQUJM RSB2ZXN0YXQgKHggaW50KSBXSVRIIChhdXRvdmFjdXVtX2VuYWJsZWQgPSBvZmYsIGZpbGxm YWN0b3IgPSAxMCk7CitJTlNFUlQgSU5UTyB2ZXN0YXQgU0VMRUNUIHggRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSw6c2FtcGxlX3NpemUpIGFzIHg7CitBTkFMWVpFIHZlc3RhdDsKKworU0VM RUNUIG9pZCBBUyByb2lkIGZyb20gcGdfY2xhc3Mgd2hlcmUgcmVsbmFtZSA9ICd2ZXN0YXQn IFxnc2V0CisKK0RFTEVURSBGUk9NIHZlc3RhdCBXSEVSRSB4ICUgMiA9IDA7CistLSBCZWZv cmUgdGhlIGZpcnN0IHZhY3V1bSBleGVjdXRpb24gZXh0ZW5kZWQgc3RhdHMgdmlldyBpcyBl bXB0eS4KK1NFTEVDVCB2dC5yZWxuYW1lLHZtX25ld19mcm96ZW5fcGFnZXMsdHVwbGVzX2Rl bGV0ZWQscmVscGFnZXMscGFnZXNfc2Nhbm5lZCxwYWdlc19yZW1vdmVkCitGUk9NIHBnX3N0 YXRfdmFjdXVtX3RhYmxlcyB2dCwgcGdfY2xhc3MgYworV0hFUkUgdnQucmVsbmFtZSA9ICd2 ZXN0YXQnIEFORCB2dC5yZWxpZCA9IGMub2lkOworU0VMRUNUIHJlbHBhZ2VzIEFTIHJwCitG Uk9NIHBnX2NsYXNzIGMKK1dIRVJFIHJlbG5hbWUgPSAndmVzdGF0JyBcZ3NldAorCitWQUNV VU0gKFBBUkFMTEVMIDAsIEJVRkZFUl9VU0FHRV9MSU1JVCAxMjgsIElOREVYX0NMRUFOVVAg T0ZGKSB2ZXN0YXQ7CistLSBpdCBpcyBuZWNlc3NhcnkgdG8gY2hlY2sgdGhlIHdhbCBzdGF0 aXN0aWNzCitDSEVDS1BPSU5UOworCistLSBUaGUgdGFibGUgYW5kIGluZGV4IGV4dGVuZGVk IHZhY3V1bSBzdGF0aXN0aWNzIHNob3VsZCBzaG93IHVzIHRoYXQKKy0tIHZhY3V1bSBmcm96 ZWQgcGFnZXMgYW5kIGNsZWFuIHVwIHBhZ2VzLCBidXQgcGFnZXNfcmVtb3ZlZCBzdGF5ZWQg dGhlIHNhbWUKKy0tIGJlY2F1c2Ugb2Ygbm90IGZ1bGwgdGFibGUgaGF2ZSBjbGVhbmVkIHVw CitTRUxFQ1QgdnQucmVsbmFtZSx2bV9uZXdfZnJvemVuX3BhZ2VzID4gMCBBUyB2bV9uZXdf ZnJvemVuX3BhZ2VzLHR1cGxlc19kZWxldGVkID4gMCBBUyB0dXBsZXNfZGVsZXRlZCxyZWxw YWdlcy06cnAgPSAwIEFTIHJlbHBhZ2VzLHBhZ2VzX3NjYW5uZWQgPiAwIEFTIHBhZ2VzX3Nj YW5uZWQscGFnZXNfcmVtb3ZlZCA9IDAgQVMgcGFnZXNfcmVtb3ZlZAorRlJPTSBwZ19zdGF0 X3ZhY3V1bV90YWJsZXMgdnQsIHBnX2NsYXNzIGMKK1dIRVJFIHZ0LnJlbG5hbWUgPSAndmVz dGF0JyBBTkQgdnQucmVsaWQgPSBjLm9pZDsKK1NFTEVDVCB2bV9uZXdfZnJvemVuX3BhZ2Vz IEFTIGZwLHR1cGxlc19kZWxldGVkIEFTIHRkLHJlbHBhZ2VzIEFTIHJwLCBwYWdlc19zY2Fu bmVkIEFTIHBzLCBwYWdlc19yZW1vdmVkIEFTIHByCitGUk9NIHBnX3N0YXRfdmFjdXVtX3Rh YmxlcyB2dCwgcGdfY2xhc3MgYworV0hFUkUgdnQucmVsbmFtZSA9ICd2ZXN0YXQnIEFORCB2 dC5yZWxpZCA9IGMub2lkIFxnc2V0CisKKy0tIFN0b3JlIFdBTCBhZHZhbmNlcyBpbnRvIHZh cmlhYmxlcworU0VMRUNUIHdhbF9yZWNvcmRzIEFTIGh3cix3YWxfYnl0ZXMgQVMgaHdiLHdh bF9mcGkgQVMgaGZwaSBGUk9NIHBnX3N0YXRfdmFjdXVtX3RhYmxlcyBXSEVSRSByZWxuYW1l ID0gJ3Zlc3RhdCcgXGdzZXQKKworLS0gTG9vayBpbnRvIFdBTCByZWNvcmRzIGRlbHRhcy4K K1NFTEVDVCB3YWxfcmVjb3JkcyA+IDAgQVMgZFdSLCB3YWxfYnl0ZXMgPiAwIEFTIGRXQgor RlJPTSBwZ19zdGF0X3ZhY3V1bV90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICd2ZXN0YXQnOwor CitERUxFVEUgRlJPTSB2ZXN0YXQ7OworVkFDVVVNIChQQVJBTExFTCAwLCBCVUZGRVJfVVNB R0VfTElNSVQgMTI4LCBJTkRFWF9DTEVBTlVQIE9GRikgdmVzdGF0OworLS0gaXQgaXMgbmVj ZXNzYXJ5IHRvIGNoZWNrIHRoZSB3YWwgc3RhdGlzdGljcworQ0hFQ0tQT0lOVDsKKworLS0g cGFnZXNfcmVtb3ZlZCBtdXN0IGJlIGluY3JlYXNlZAorU0VMRUNUIHZ0LnJlbG5hbWUsdm1f bmV3X2Zyb3plbl9wYWdlcy06ZnAgPiAwIEFTIHZtX25ld19mcm96ZW5fcGFnZXMsdHVwbGVz X2RlbGV0ZWQtOnRkID4gMCBBUyB0dXBsZXNfZGVsZXRlZCxyZWxwYWdlcyAtOnJwID0gMCBB UyByZWxwYWdlcyxwYWdlc19zY2FubmVkLTpwcyA+IDAgQVMgcGFnZXNfc2Nhbm5lZCxwYWdl c19yZW1vdmVkLTpwciA+IDAgQVMgcGFnZXNfcmVtb3ZlZAorRlJPTSBwZ19zdGF0X3ZhY3V1 bV90YWJsZXMgdnQsIHBnX2NsYXNzIGMKK1dIRVJFIHZ0LnJlbG5hbWUgPSAndmVzdGF0JyBB TkQgdnQucmVsaWQgPSBjLm9pZDsKK1NFTEVDVCB2bV9uZXdfZnJvemVuX3BhZ2VzIEFTIGZw LHR1cGxlc19kZWxldGVkIEFTIHRkLHJlbHBhZ2VzIEFTIHJwLCBwYWdlc19zY2FubmVkIEFT IHBzLCBwYWdlc19yZW1vdmVkIEFTIHByCitGUk9NIHBnX3N0YXRfdmFjdXVtX3RhYmxlcyB2 dCwgcGdfY2xhc3MgYworV0hFUkUgdnQucmVsbmFtZSA9ICd2ZXN0YXQnIEFORCB2dC5yZWxp ZCA9IGMub2lkIFxnc2V0CisKKy0tIFN0b3JlIFdBTCBhZHZhbmNlcyBpbnRvIHZhcmlhYmxl cworU0VMRUNUIHdhbF9yZWNvcmRzLTpod3IgQVMgZHdyLCB3YWxfYnl0ZXMtOmh3YiBBUyBk d2IsIHdhbF9mcGktOmhmcGkgQVMgZGZwaQorRlJPTSBwZ19zdGF0X3ZhY3V1bV90YWJsZXMg V0hFUkUgcmVsbmFtZSA9ICd2ZXN0YXQnIFxnc2V0CisKKy0tIFdBTCBhZHZhbmNlIHNob3Vs ZCBiZSBkZXRlY3RlZC4KK1NFTEVDVCA6ZHdyID4gMCBBUyBkV1IsIDpkd2IgPiAwIEFTIGRX QjsKKworLS0gU3RvcmUgV0FMIGFkdmFuY2VzIGludG8gdmFyaWFibGVzCitTRUxFQ1Qgd2Fs X3JlY29yZHMgQVMgaHdyLHdhbF9ieXRlcyBBUyBod2Isd2FsX2ZwaSBBUyBoZnBpIEZST00g cGdfc3RhdF92YWN1dW1fdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAndmVzdGF0JyBcZ3NldAor CitJTlNFUlQgSU5UTyB2ZXN0YXQgU0VMRUNUIHggRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSw6 c2FtcGxlX3NpemUpIGFzIHg7CitERUxFVEUgRlJPTSB2ZXN0YXQgV0hFUkUgeCAlIDIgPSAw OworLS0gVkFDVVVNIEZVTEwgZG9lc24ndCByZXBvcnQgdG8gc3RhdCBjb2xsZWN0b3IuIFNv LCBubyBhbnkgYWR2YW5jZW1lbnRzIG9mIHN0YXRpc3RpY3MKKy0tIGFyZSBkZXRlY3RlZCBo ZXJlLgorVkFDVVVNIEZVTEwgdmVzdGF0OworLS0gSXQgaXMgbmVjZXNzYXJ5IHRvIGNoZWNr IHRoZSB3YWwgc3RhdGlzdGljcworQ0hFQ0tQT0lOVDsKKworLS0gU3RvcmUgV0FMIGFkdmFu Y2VzIGludG8gdmFyaWFibGVzCitTRUxFQ1Qgd2FsX3JlY29yZHMtOmh3ciBBUyBkd3IyLCB3 YWxfYnl0ZXMtOmh3YiBBUyBkd2IyLCB3YWxfZnBpLTpoZnBpIEFTIGRmcGkyCitGUk9NIHBn X3N0YXRfdmFjdXVtX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ3Zlc3RhdCcgXGdzZXQKKwor LS0gV0FMIGFuZCBvdGhlciBzdGF0aXN0aWNzIGFkdmFuY2Ugc2hvdWxkIG5vdCBiZSBkZXRl Y3RlZC4KK1NFTEVDVCA6ZHdyMj0wIEFTIGRXUiwgOmRmcGkyPTAgQVMgZEZQSSwgOmR3YjI9 MCBBUyBkV0I7CisKK1NFTEVDVCB2dC5yZWxuYW1lLHZtX25ld19mcm96ZW5fcGFnZXMtOmZw ID0gMCBBUyB2bV9uZXdfZnJvemVuX3BhZ2VzLHR1cGxlc19kZWxldGVkLTp0ZCA9IDAgQVMg dHVwbGVzX2RlbGV0ZWQscmVscGFnZXMgLTpycCA8IDAgQVMgcmVscGFnZXMscGFnZXNfc2Nh bm5lZC06cHMgPSAwIEFTIHBhZ2VzX3NjYW5uZWQscGFnZXNfcmVtb3ZlZC06cHIgPSAwIEFT IHBhZ2VzX3JlbW92ZWQKK0ZST00gcGdfc3RhdF92YWN1dW1fdGFibGVzIHZ0LCBwZ19jbGFz cyBjCitXSEVSRSB2dC5yZWxuYW1lID0gJ3Zlc3RhdCcgQU5EIHZ0LnJlbGlkID0gYy5vaWQ7 CitTRUxFQ1Qgdm1fbmV3X2Zyb3plbl9wYWdlcyBBUyBmcCx0dXBsZXNfZGVsZXRlZCBBUyB0 ZCxyZWxwYWdlcyBBUyBycCwgcGFnZXNfc2Nhbm5lZCBBUyBwcyxwYWdlc19yZW1vdmVkIEFT IHByCitGUk9NIHBnX3N0YXRfdmFjdXVtX3RhYmxlcyB2dCwgcGdfY2xhc3MgYworV0hFUkUg dnQucmVsbmFtZSA9ICd2ZXN0YXQnIEFORCB2dC5yZWxpZCA9IGMub2lkIFxnc2V0CisKKy0t IFN0b3JlIFdBTCBhZHZhbmNlcyBpbnRvIHZhcmlhYmxlcworU0VMRUNUIHdhbF9yZWNvcmRz IEFTIGh3cix3YWxfYnl0ZXMgQVMgaHdiLHdhbF9mcGkgQVMgaGZwaSBGUk9NIHBnX3N0YXRf dmFjdXVtX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ3Zlc3RhdCcgXGdzZXQKKworREVMRVRF IEZST00gdmVzdGF0OworVFJVTkNBVEUgdmVzdGF0OworVkFDVVVNIChQQVJBTExFTCAwLCBC VUZGRVJfVVNBR0VfTElNSVQgMTI4LCBJTkRFWF9DTEVBTlVQIE9GRikgdmVzdGF0OworLS0g aXQgaXMgbmVjZXNzYXJ5IHRvIGNoZWNrIHRoZSB3YWwgc3RhdGlzdGljcworQ0hFQ0tQT0lO VDsKKworLS0gU3RvcmUgV0FMIGFkdmFuY2VzIGludG8gdmFyaWFibGVzIGFmdGVyIHJlbW92 aW5nIGFsbCB0dXBsZXMgZnJvbSB0aGUgdGFibGUKK1NFTEVDVCB3YWxfcmVjb3Jkcy06aHdy IEFTIGR3cjMsIHdhbF9ieXRlcy06aHdiIEFTIGR3YjMsIHdhbF9mcGktOmhmcGkgQVMgZGZw aTMKK0ZST00gcGdfc3RhdF92YWN1dW1fdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAndmVzdGF0 JyBcZ3NldAorCistLVRoZXJlIGFyZSBub3RoaW5nIGNoYW5nZWQKK1NFTEVDVCA6ZHdyMz4w IEFTIGRXUiwgOmRmcGkzPTAgQVMgZEZQSSwgOmR3YjM+MCBBUyBkV0I7CisKKy0tCistLSBO b3csIHRoZSB0YWJsZSBhbmQgaW5kZXggaXMgY29tcHJlc3NlZCBpbnRvIHplcm8gbnVtYmVy IG9mIHBhZ2VzLiBDaGVjayBpdAorLS0gaW4gdmFjdXVtIGV4dGVuZGVkIHN0YXRpc3RpY3Mu CistLSBUaGUgdm1fbmV3X2Zyb3plbl9wYWdlcywgcGFnZXNfc2Nhbm5lZCB2YWx1ZXMgc2hv dWxkbid0IGJlIGNoYW5nZWQKKy0tCitTRUxFQ1QgdnQucmVsbmFtZSx2bV9uZXdfZnJvemVu X3BhZ2VzLTpmcCA9IDAgQVMgdm1fbmV3X2Zyb3plbl9wYWdlcyx0dXBsZXNfZGVsZXRlZC06 dGQgPSAwIEFTIHR1cGxlc19kZWxldGVkLHJlbHBhZ2VzIC06cnAgPSAwIEFTIHJlbHBhZ2Vz LHBhZ2VzX3NjYW5uZWQtOnBzID0gMCBBUyBwYWdlc19zY2FubmVkLHBhZ2VzX3JlbW92ZWQt OnByID0gMCBBUyBwYWdlc19yZW1vdmVkCitGUk9NIHBnX3N0YXRfdmFjdXVtX3RhYmxlcyB2 dCwgcGdfY2xhc3MgYworV0hFUkUgdnQucmVsbmFtZSA9ICd2ZXN0YXQnIEFORCB2dC5yZWxp ZCA9IGMub2lkOworCitEUk9QIFRBQkxFIHZlc3RhdCBDQVNDQURFOworQ1JFQVRFIFRBQkxF IHZlc3RhdCAoeCBpbnQpIFdJVEggKGF1dG92YWN1dW1fZW5hYmxlZCA9IG9mZiwgZmlsbGZh Y3RvciA9IDEwKTsKKworSU5TRVJUIElOVE8gdmVzdGF0IFNFTEVDVCB4IEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsOnNhbXBsZV9zaXplKSBhcyB4OworQU5BTFlaRSB2ZXN0YXQ7CisKKy0t IG11c3QgYmUgZW1wdHkKK1NFTEVDVCB2bV9uZXdfZnJvemVuX3BhZ2VzLCB2bV9uZXdfdmlz aWJsZV9wYWdlcywgcmV2X2FsbF9mcm96ZW5fcGFnZXMscmV2X2FsbF92aXNpYmxlX3BhZ2Vz LHZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcworRlJPTSBwZ19zdGF0X3ZhY3V1bV90YWJs ZXMsIHBnX3N0YXRfYWxsX3RhYmxlcyBXSEVSRSBwZ19zdGF0X3ZhY3V1bV90YWJsZXMucmVs bmFtZSA9ICd2ZXN0YXQnIGFuZCBwZ19zdGF0X3ZhY3V1bV90YWJsZXMucmVsaWQgPSBwZ19z dGF0X2FsbF90YWJsZXMucmVsaWQ7CisKK1ZBQ1VVTSAoUEFSQUxMRUwgMCwgQlVGRkVSX1VT QUdFX0xJTUlUIDEyOCkgdmVzdGF0OworCistLSBiYWNrZW5kIGRlZnJlZXplZCBwYWdlcwor U0VMRUNUIHZtX25ld19mcm96ZW5fcGFnZXMgPiAwIEFTIHZtX25ld19mcm96ZW5fcGFnZXMs dm1fbmV3X3Zpc2libGVfcGFnZXMgPiAwIEFTIHZtX25ld192aXNpYmxlX3BhZ2VzLHZtX25l d192aXNpYmxlX2Zyb3plbl9wYWdlcyA+IDAgQVMgdm1fbmV3X3Zpc2libGVfZnJvemVuX3Bh Z2VzLHJldl9hbGxfZnJvemVuX3BhZ2VzID0gMCBBUyByZXZfYWxsX2Zyb3plbl9wYWdlcyxy ZXZfYWxsX3Zpc2libGVfcGFnZXMgPSAwIEFTIHJldl9hbGxfdmlzaWJsZV9wYWdlcworRlJP TSBwZ19zdGF0X3ZhY3V1bV90YWJsZXMsIHBnX3N0YXRfYWxsX3RhYmxlcyBXSEVSRSBwZ19z dGF0X3ZhY3V1bV90YWJsZXMucmVsbmFtZSA9ICd2ZXN0YXQnIGFuZCBwZ19zdGF0X3ZhY3V1 bV90YWJsZXMucmVsaWQgPSBwZ19zdGF0X2FsbF90YWJsZXMucmVsaWQ7CitTRUxFQ1Qgdm1f bmV3X2Zyb3plbl9wYWdlcyBBUyBwZiwgdm1fbmV3X3Zpc2libGVfcGFnZXMgQVMgcHYsdm1f bmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzIEFTIHB2ZiwgcmV2X2FsbF9mcm96ZW5fcGFnZXMg QVMgaGFmcCxyZXZfYWxsX3Zpc2libGVfcGFnZXMgQVMgaGF2cAorRlJPTSBwZ19zdGF0X3Zh Y3V1bV90YWJsZXMsIHBnX3N0YXRfYWxsX3RhYmxlcyBXSEVSRSBwZ19zdGF0X3ZhY3V1bV90 YWJsZXMucmVsbmFtZSA9ICd2ZXN0YXQnIGFuZCBwZ19zdGF0X3ZhY3V1bV90YWJsZXMucmVs aWQgPSBwZ19zdGF0X2FsbF90YWJsZXMucmVsaWQgXGdzZXQKKworVVBEQVRFIHZlc3RhdCBT RVQgeCA9IHggKyAxMDAxOworVkFDVVVNIChQQVJBTExFTCAwLCBCVUZGRVJfVVNBR0VfTElN SVQgMTI4KSB2ZXN0YXQ7CisKK1NFTEVDVCB2bV9uZXdfZnJvemVuX3BhZ2VzID4gOnBmIEFT IHZtX25ld19mcm96ZW5fcGFnZXMsdm1fbmV3X3Zpc2libGVfcGFnZXMgPiA6cHYgQVMgdm1f bmV3X3Zpc2libGVfcGFnZXMsdm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzID4gOnB2ZiBB UyB2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMscmV2X2FsbF9mcm96ZW5fcGFnZXMgPiA6 aGFmcCBBUyByZXZfYWxsX2Zyb3plbl9wYWdlcyxyZXZfYWxsX3Zpc2libGVfcGFnZXMgPiA6 aGF2cCBBUyByZXZfYWxsX3Zpc2libGVfcGFnZXMKK0ZST00gcGdfc3RhdF92YWN1dW1fdGFi bGVzLCBwZ19zdGF0X2FsbF90YWJsZXMgV0hFUkUgcGdfc3RhdF92YWN1dW1fdGFibGVzLnJl bG5hbWUgPSAndmVzdGF0JyBhbmQgcGdfc3RhdF92YWN1dW1fdGFibGVzLnJlbGlkID0gcGdf c3RhdF9hbGxfdGFibGVzLnJlbGlkOworU0VMRUNUIHZtX25ld19mcm96ZW5fcGFnZXMgQVMg cGYsIHZtX25ld192aXNpYmxlX3BhZ2VzIEFTIHB2LCB2bV9uZXdfdmlzaWJsZV9mcm96ZW5f cGFnZXMgQVMgcHZmLCByZXZfYWxsX2Zyb3plbl9wYWdlcyBBUyBoYWZwLHJldl9hbGxfdmlz aWJsZV9wYWdlcyBBUyBoYXZwCitGUk9NIHBnX3N0YXRfdmFjdXVtX3RhYmxlcywgcGdfc3Rh dF9hbGxfdGFibGVzIFdIRVJFIHBnX3N0YXRfdmFjdXVtX3RhYmxlcy5yZWxuYW1lID0gJ3Zl c3RhdCcgYW5kIHBnX3N0YXRfdmFjdXVtX3RhYmxlcy5yZWxpZCA9IHBnX3N0YXRfYWxsX3Rh Ymxlcy5yZWxpZCBcZ3NldAorCitWQUNVVU0gKFBBUkFMTEVMIDAsIEJVRkZFUl9VU0FHRV9M SU1JVCAxMjgpIHZlc3RhdDsKKworLS0gdmFjdXVtIGZyZWV6ZWQgcGFnZXMKK1NFTEVDVCB2 bV9uZXdfZnJvemVuX3BhZ2VzID0gOnBmIEFTIHZtX25ld19mcm96ZW5fcGFnZXMsdm1fbmV3 X3Zpc2libGVfcGFnZXMgPSA6cHYgQVMgdm1fbmV3X3Zpc2libGVfcGFnZXMsdm1fbmV3X3Zp c2libGVfZnJvemVuX3BhZ2VzID0gOnB2ZiBBUyB2bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFn ZXMsIHJldl9hbGxfZnJvemVuX3BhZ2VzID0gOmhhZnAgQVMgcmV2X2FsbF9mcm96ZW5fcGFn ZXMscmV2X2FsbF92aXNpYmxlX3BhZ2VzID0gOmhhdnAgQVMgcmV2X2FsbF92aXNpYmxlX3Bh Z2VzCitGUk9NIHBnX3N0YXRfdmFjdXVtX3RhYmxlcywgcGdfc3RhdF9hbGxfdGFibGVzIFdI RVJFIHBnX3N0YXRfdmFjdXVtX3RhYmxlcy5yZWxuYW1lID0gJ3Zlc3RhdCcgYW5kIHBnX3N0 YXRfdmFjdXVtX3RhYmxlcy5yZWxpZCA9IHBnX3N0YXRfYWxsX3RhYmxlcy5yZWxpZDsKKwor RFJPUCBUQUJMRSB2ZXN0YXQgQ0FTQ0FERTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl Ci0tIAoyLjM0LjEKCg== --------------vHbj04KO08FC0gAES8o5Fvao Content-Type: text/x-patch; charset=UTF-8; name="v19-0003-Machinery-for-grabbing-an-extended-vacuum-statistics.patch" Content-Disposition: attachment; filename*0="v19-0003-Machinery-for-grabbing-an-extended-vacuum-statistic"; filename*1="s.patch" Content-Transfer-Encoding: base64 RnJvbSBlZWQyYWUyOTI4ZjQwODJlOTY3OGU5NGQwYWRiNGFhMTM4NmY5ZTY2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVuYSBSeWJha2luYSA8YS5yeWJha2luYUBwb3N0 Z3Jlc3Byby5ydT4KRGF0ZTogTW9uLCAxNyBGZWIgMjAyNSAxNzoyODo1NSArMDMwMApTdWJq ZWN0OiBbUEFUQ0ggMy80XSBNYWNoaW5lcnkgZm9yIGdyYWJiaW5nIGFuIGV4dGVuZGVkIHZh Y3V1bSBzdGF0aXN0aWNzIG9uIAogZGF0YWJhc2VzLgoKRGF0YWJhc2UgdmFjdXVtIHN0YXRp c3RpY3MgaW5mb3JtYXRpb24gaXMgdGhlIGNvbGxlY3RlZCBnZW5lcmFsCnZhY3V1bSBzdGF0 aXN0aWNzIGluZGV4ZXMgYW5kIHRhYmxlcyBvd25lZCBieSB0aGUgZGF0YWJhc2VzLCB3aGlj aAp0aGV5IGJlbG9uZyB0by4KCkluIGFkZGl0aW9uIHRvIHRoZSBmYWN0IHRoYXQgdGhlcmUg YXJlIGZhciBmZXdlciBkYXRhYmFzZXMgaW4gYSBzeXN0ZW0KdGhhbiByZWxhdGlvbnMsIHZh Y3V1bSBzdGF0aXN0aWNzIGZvciBhIGRhdGFiYXNlIGNvbnRhaW4gZmV3ZXIgc3RhdGlzdGlj cwp0aGFuIHJlbGF0aW9ucywgYnV0IHRoZXkgYXJlIGVub3VnaCB0byBpbmRpY2F0ZSB0aGF0 IHNvbWV0aGluZyBtYXkgYmUKd3JvbmcgaW4gdGhlIHN5c3RlbSBhbmQgcHJvbXB0IHRoZSBh ZG1pbmlzdHJhdG9yIHRvIGVuYWJsZSBleHRlbmRlZAptb25pdG9yaW5nIGZvciByZWxhdGlv bnMuCgpTbywgYnVmZmVyLCB3YWwsIHN0YXRpc3RpY3Mgb2YgSS9PIHRpbWUgb2YgcmVhZCBh bmQgd3JpdGVuIGJsb2NrcwpzdGF0aXN0aWNzIHdpbGwgYmUgb2JzZXJ2ZWQgYmVjYXVzZSB0 aGV5IGFyZSBjb2xsZWN0ZWQgZm9yIGJvdGgKdGFibGVzLCBpbmRleGVzLiBJbiBhZGRpdGlv biwgd2Ugc2hvdyB0aGUgbnVtYmVyIG9mIGVycm9ycyBjYXVnaHQKZHVyaW5nIG9wZXJhdGlv biBvZiB0aGUgdmFjdXVtIG9ubHkgZm9yIHRoZSBlcnJvciBsZXZlbC4KCndyYXBhcm91bmRf ZmFpbHNhZmVfY291bnQgaXMgYSBudW1iZXIgb2YgdGltZXMgd2hlbiB0aGUgdmFjdXVtIHN0 YXJ0cwp1cmdlbnQgY2xlYW51cCB0byBwcmV2ZW50IHdyYXBhcm91bmQgcHJvYmxlbSB3aGlj aCBpcyBjcml0aWNhbCBmb3IKdGhlIGRhdGFiYXNlLgoKQXV0aG9yczogQWxlbmEgUnliYWtp bmEgPGxlbmEucmliYWNraW5hQHlhbmRleC5ydT4sCiAgIEFuZHJlaSBMZXBpa2hvdiA8YS5s ZXBpa2hvdkBwb3N0Z3Jlc3Byby5ydT4sCiAgIEFuZHJlaSBadWJrb3YgPGEuenVia292QHBv c3RncmVzcHJvLnJ1PgpSZXZpZXdlZC1ieTogRGlsaXAgS3VtYXIgPGRpbGlwYmFsYXV0QGdt YWlsLmNvbT4sIE1hc2FoaWtvIFNhd2FkYSA8c2F3YWRhLm1zaGtAZ21haWwuY29tPiwKICAg ICAgIElsaWEgRXZkb2tpbW92IDxpbHlhLmV2ZG9raW1vdkB0YW50b3JsYWJzLmNvbT4sIGpp YW4gaGUgPGppYW4udW5pdmVyc2FsaXR5QGdtYWlsLmNvbT4sCiAgICAgICBLaXJpbGwgUmVz aGtlIDxyZXNoa2VraXJpbGxAZ21haWwuY29tPiwgQWxleGFuZGVyIEtvcm90a292IDxhZWtv cm90a292QGdtYWlsLmNvbT4sCiAgICAgICBKaW0gTmFzYnkgPGpuYXNieUB1cGdyYWRlLmNv bT4sIFNhbWkgSW1zZWloIDxzYW1pbXNlaWhAZ21haWwuY29tPgotLS0KIHNyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAgICAgICB8IDI5MCArKysrKysrKysrKysr Ky0tLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCAgICAgICAgICB8 ICAzMiArKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyAgICAgICAg IHwgIDE0ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdC5jICAgICAgICAg ICB8ICAgNCArCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfcmVsYXRpb24u YyAgfCAgNDggKystCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYyAgICAg ICAgICAgfCAxMzMgKysrKysrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxl cy5jICAgICAgICAgICB8ICAgMiArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRh dCAgICAgICAgICAgICAgIHwgICA5ICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5o ICAgICAgICAgICAgICAgICB8ICAyNSArKwogc3JjL2luY2x1ZGUvcGdzdGF0LmggICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDU4ICsrKy0KIC4uLi92YWN1dW0tZXh0ZW5kaW5nLWlu LXJlcGV0YWJsZS1yZWFkLm91dCAgICB8ICAgNCArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9ydWxlcy5vdXQgICAgICAgICAgIHwgIDIyICsrCiAuLi4vZXhwZWN0ZWQvdmFjdXVt X2luZGV4X3N0YXRpc3RpY3Mub3V0ICAgICAgfCAxODMgKysrKysrKysrKysKIHNyYy90ZXN0 L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAgICB8ICAgMSArCiAuLi4vcmVn cmVzcy9zcWwvdmFjdXVtX2luZGV4X3N0YXRpc3RpY3Muc3FsICAgfCAxNTEgKysrKysrKysr CiAxNSBmaWxlcyBjaGFuZ2VkLCA4NzEgaW5zZXJ0aW9ucygrKSwgMTA1IGRlbGV0aW9ucygt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdmFjdXVt X2luZGV4X3N0YXRpc3RpY3Mub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVn cmVzcy9zcWwvdmFjdXVtX2luZGV4X3N0YXRpc3RpY3Muc3FsCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDgzOWJkNDFiZTYyLi5hMGM2OGFkMmM4ZCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtNDExLDYgKzQxMSw4IEBA IHR5cGVkZWYgc3RydWN0IExWUmVsU3RhdGUKIAlCbG9ja051bWJlciBlYWdlcl9zY2FuX3Jl bWFpbmluZ19mYWlsczsKIAogCWludDMyCQl3cmFwYXJvdW5kX2ZhaWxzYWZlX2NvdW50OyAv KiB0aGUgbnVtYmVyIG9mIHRpbWVzIHRvIHByZXZlbnQgd29ya2Fyb3VuZCBwcm9ibGVtICov CisKKwlFeHRWYWNSZXBvcnQgZXh0VmFjUmVwb3J0OwogfSBMVlJlbFN0YXRlOwogCiAKQEAg LTQyMiwxOSArNDI0LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgTFZTYXZlZEVyckluZm8KIAlWYWNF cnJQaGFzZSBwaGFzZTsKIH0gTFZTYXZlZEVyckluZm87CiAKLS8qCi0gKiBDb3VudGVycyBh bmQgdXNhZ2UgZGF0YSBmb3IgZXh0ZW5kZWQgc3RhdHMgdHJhY2tpbmcuCi0gKi8KLXR5cGVk ZWYgc3RydWN0IExWRXh0U3RhdENvdW50ZXJzCi17Ci0JVGltZXN0YW1wVHogc3RhcnR0aW1l OwotCVdhbFVzYWdlCXdhbHVzYWdlOwotCUJ1ZmZlclVzYWdlIGJ1ZnVzYWdlOwotCWRvdWJs ZQkJVmFjdXVtRGVsYXlUaW1lOwotCVBnU3RhdF9Db3VudGVyIGJsb2Nrc19mZXRjaGVkOwot CVBnU3RhdF9Db3VudGVyIGJsb2Nrc19oaXQ7Ci19IExWRXh0U3RhdENvdW50ZXJzOwotCiAv KiBub24tZXhwb3J0IGZ1bmN0aW9uIHByb3RvdHlwZXMgKi8KIHN0YXRpYyB2b2lkIGxhenlf c2Nhbl9oZWFwKExWUmVsU3RhdGUgKnZhY3JlbCk7CiBzdGF0aWMgdm9pZCBoZWFwX3ZhY3V1 bV9lYWdlcl9zY2FuX3NldHVwKExWUmVsU3RhdGUgKnZhY3JlbCwKQEAgLTU1NiwyNyArNTQ1 LDI1IEBAIGV4dHZhY19zdGF0c19lbmQoUmVsYXRpb24gcmVsLCBMVkV4dFN0YXRDb3VudGVy cyAqY291bnRlcnMsCiAJZW5kdGltZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKIAlUaW1l c3RhbXBEaWZmZXJlbmNlKGNvdW50ZXJzLT5zdGFydHRpbWUsIGVuZHRpbWUsICZzZWNzLCAm dXNlY3MpOwogCi0JbWVtc2V0KHJlcG9ydCwgMCwgc2l6ZW9mKEV4dFZhY1JlcG9ydCkpOwot CiAJLyoKIAkgKiBGaWxsIGFkZGl0aW9uYWwgc3RhdGlzdGljcyBvbiBhIHZhY3V1bSBwcm9j ZXNzaW5nIG9wZXJhdGlvbi4KIAkgKi8KLQlyZXBvcnQtPnRvdGFsX2Jsa3NfcmVhZCA9IGJ1 ZnVzYWdlLmxvY2FsX2Jsa3NfcmVhZCArIGJ1ZnVzYWdlLnNoYXJlZF9ibGtzX3JlYWQ7Ci0J cmVwb3J0LT50b3RhbF9ibGtzX2hpdCA9IGJ1ZnVzYWdlLmxvY2FsX2Jsa3NfaGl0ICsgYnVm dXNhZ2Uuc2hhcmVkX2Jsa3NfaGl0OwotCXJlcG9ydC0+dG90YWxfYmxrc19kaXJ0aWVkID0g YnVmdXNhZ2UubG9jYWxfYmxrc19kaXJ0aWVkICsgYnVmdXNhZ2Uuc2hhcmVkX2Jsa3NfZGly dGllZDsKLQlyZXBvcnQtPnRvdGFsX2Jsa3Nfd3JpdHRlbiA9IGJ1ZnVzYWdlLnNoYXJlZF9i bGtzX3dyaXR0ZW47CisJcmVwb3J0LT50b3RhbF9ibGtzX3JlYWQgKz0gYnVmdXNhZ2UubG9j YWxfYmxrc19yZWFkICsgYnVmdXNhZ2Uuc2hhcmVkX2Jsa3NfcmVhZDsKKwlyZXBvcnQtPnRv dGFsX2Jsa3NfaGl0ICs9IGJ1ZnVzYWdlLmxvY2FsX2Jsa3NfaGl0ICsgYnVmdXNhZ2Uuc2hh cmVkX2Jsa3NfaGl0OworCXJlcG9ydC0+dG90YWxfYmxrc19kaXJ0aWVkICs9IGJ1ZnVzYWdl LmxvY2FsX2Jsa3NfZGlydGllZCArIGJ1ZnVzYWdlLnNoYXJlZF9ibGtzX2RpcnRpZWQ7CisJ cmVwb3J0LT50b3RhbF9ibGtzX3dyaXR0ZW4gKz0gYnVmdXNhZ2Uuc2hhcmVkX2Jsa3Nfd3Jp dHRlbjsKIAotCXJlcG9ydC0+d2FsX3JlY29yZHMgPSB3YWx1c2FnZS53YWxfcmVjb3JkczsK LQlyZXBvcnQtPndhbF9mcGkgPSB3YWx1c2FnZS53YWxfZnBpOwotCXJlcG9ydC0+d2FsX2J5 dGVzID0gd2FsdXNhZ2Uud2FsX2J5dGVzOworCXJlcG9ydC0+d2FsX3JlY29yZHMgKz0gd2Fs dXNhZ2Uud2FsX3JlY29yZHM7CisJcmVwb3J0LT53YWxfZnBpICs9IHdhbHVzYWdlLndhbF9m cGk7CisJcmVwb3J0LT53YWxfYnl0ZXMgKz0gd2FsdXNhZ2Uud2FsX2J5dGVzOwogCi0JcmVw b3J0LT5ibGtfcmVhZF90aW1lID0gSU5TVFJfVElNRV9HRVRfTUlMTElTRUMoYnVmdXNhZ2Uu bG9jYWxfYmxrX3JlYWRfdGltZSk7CisJcmVwb3J0LT5ibGtfcmVhZF90aW1lICs9IElOU1RS X1RJTUVfR0VUX01JTExJU0VDKGJ1ZnVzYWdlLmxvY2FsX2Jsa19yZWFkX3RpbWUpOwogCXJl cG9ydC0+YmxrX3JlYWRfdGltZSArPSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhidWZ1c2Fn ZS5zaGFyZWRfYmxrX3JlYWRfdGltZSk7Ci0JcmVwb3J0LT5ibGtfd3JpdGVfdGltZSA9IElO U1RSX1RJTUVfR0VUX01JTExJU0VDKGJ1ZnVzYWdlLmxvY2FsX2Jsa193cml0ZV90aW1lKTsK LQlyZXBvcnQtPmJsa193cml0ZV90aW1lID0gSU5TVFJfVElNRV9HRVRfTUlMTElTRUMoYnVm dXNhZ2Uuc2hhcmVkX2Jsa193cml0ZV90aW1lKTsKLQlyZXBvcnQtPmRlbGF5X3RpbWUgPSBW YWN1dW1EZWxheVRpbWUgLSBjb3VudGVycy0+VmFjdXVtRGVsYXlUaW1lOworCXJlcG9ydC0+ YmxrX3dyaXRlX3RpbWUgKz0gSU5TVFJfVElNRV9HRVRfTUlMTElTRUMoYnVmdXNhZ2UubG9j YWxfYmxrX3dyaXRlX3RpbWUpOworCXJlcG9ydC0+YmxrX3dyaXRlX3RpbWUgKz0gSU5TVFJf VElNRV9HRVRfTUlMTElTRUMoYnVmdXNhZ2Uuc2hhcmVkX2Jsa193cml0ZV90aW1lKTsKKwly ZXBvcnQtPmRlbGF5X3RpbWUgKz0gVmFjdXVtRGVsYXlUaW1lIC0gY291bnRlcnMtPlZhY3V1 bURlbGF5VGltZTsKIAotCXJlcG9ydC0+dG90YWxfdGltZSA9IHNlY3MgKiAxMDAwLiArIHVz ZWNzIC8gMTAwMC47CisJcmVwb3J0LT50b3RhbF90aW1lICs9IHNlY3MgKiAxMDAwLiArIHVz ZWNzIC8gMTAwMC47CiAKIAlpZiAoIXJlbC0+cGdzdGF0X2luZm8gfHwgIXBnc3RhdF90cmFj a19jb3VudHMpCiAJCS8qCkBAIC01ODUsMTIgKzU3Miw5NyBAQCBleHR2YWNfc3RhdHNfZW5k KFJlbGF0aW9uIHJlbCwgTFZFeHRTdGF0Q291bnRlcnMgKmNvdW50ZXJzLAogCQkgKi8KIAkJ cmV0dXJuOwogCi0JcmVwb3J0LT5ibGtzX2ZldGNoZWQgPQorCXJlcG9ydC0+Ymxrc19mZXRj aGVkICs9CiAJCXJlbC0+cGdzdGF0X2luZm8tPmNvdW50cy5ibG9ja3NfZmV0Y2hlZCAtIGNv dW50ZXJzLT5ibG9ja3NfZmV0Y2hlZDsKLQlyZXBvcnQtPmJsa3NfaGl0ID0KKwlyZXBvcnQt PmJsa3NfaGl0ICs9CiAJCXJlbC0+cGdzdGF0X2luZm8tPmNvdW50cy5ibG9ja3NfaGl0IC0g Y291bnRlcnMtPmJsb2Nrc19oaXQ7CiB9CiAKK3ZvaWQKK2V4dHZhY19zdGF0c19zdGFydF9p ZHgoUmVsYXRpb24gcmVsLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzLAorCQkJCSAg IExWRXh0U3RhdENvdW50ZXJzSWR4ICpjb3VudGVycykKK3sKKwlpZighcGdzdGF0X3RyYWNr X3ZhY3V1bV9zdGF0aXN0aWNzKQorCQlyZXR1cm47CisKKwkvKiBTZXQgaW5pdGlhbCB2YWx1 ZXMgZm9yIGNvbW1vbiBoZWFwIGFuZCBpbmRleCBzdGF0aXN0aWNzKi8KKwlleHR2YWNfc3Rh dHNfc3RhcnQocmVsLCAmY291bnRlcnMtPmNvbW1vbik7CisJY291bnRlcnMtPnBhZ2VzX2Rl bGV0ZWQgPSBjb3VudGVycy0+dHVwbGVzX3JlbW92ZWQgPSAwOworCisJaWYgKHN0YXRzICE9 IE5VTEwpCisJeworCQkvKgorCQkgKiBYWFg6IFdoeSBkbyB3ZSBuZWVkIHRoaXMgY29kZSBo ZXJlPyBJZiBpdCBpcyBuZWVkZWQsIEkgZmVlbCBsYWNrIG9mCisJCSAqIGNvbW1lbnRzLCBk ZXNjcmliaW5nIHRoZSByZWFzb24uCisJCSAqLworCQljb3VudGVycy0+dHVwbGVzX3JlbW92 ZWQgPSBzdGF0cy0+dHVwbGVzX3JlbW92ZWQ7CisJCWNvdW50ZXJzLT5wYWdlc19kZWxldGVk ID0gc3RhdHMtPnBhZ2VzX2RlbGV0ZWQ7CisJfQorfQorCit2b2lkCitleHR2YWNfc3RhdHNf ZW5kX2lkeChSZWxhdGlvbiByZWwsIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RhdHMsCisJ CQkJCSBMVkV4dFN0YXRDb3VudGVyc0lkeCAqY291bnRlcnMsIEV4dFZhY1JlcG9ydCAqcmVw b3J0KQoreworCW1lbXNldChyZXBvcnQsIDAsIHNpemVvZihFeHRWYWNSZXBvcnQpKTsKKwor CWV4dHZhY19zdGF0c19lbmQocmVsLCAmY291bnRlcnMtPmNvbW1vbiwgcmVwb3J0KTsKKwly ZXBvcnQtPnR5cGUgPSBQR1NUQVRfRVhUVkFDX0lOREVYOworCisJaWYgKHN0YXRzICE9IE5V TEwpCisJeworCQkvKgorCQkgKiBpZiBzb21ldGhpbmcgZ29lcyB3cm9uZyBvciBhbiB1c2Vy IGRvZXNuJ3Qgd2FudCB0byB0cmFjayBhIGRhdGFiYXNlCisJCSAqIGFjdGl2aXR5IC0ganVz dCBzdXBwcmVzcyBpdC4KKwkJICovCisKKwkJLyogRmlsbCBpbmRleC1zcGVjaWZpYyBleHRl bmRlZCBzdGF0cyBmaWVsZHMgKi8KKwkJcmVwb3J0LT50dXBsZXNfZGVsZXRlZCA9CisJCQkJ CQkJc3RhdHMtPnR1cGxlc19yZW1vdmVkIC0gY291bnRlcnMtPnR1cGxlc19yZW1vdmVkOwor CQlyZXBvcnQtPmluZGV4LnBhZ2VzX2RlbGV0ZWQgPQorCQkJCQkJCXN0YXRzLT5wYWdlc19k ZWxldGVkIC0gY291bnRlcnMtPnBhZ2VzX2RlbGV0ZWQ7CisJfQorfQorCisvKiBBY2N1bXVs YXRlIHZhY3V1bSBzdGF0aXN0aWNzIGZvciBoZWFwLgorICoKKyAgKiBCZWNhdXNlIG9mIGNv bXBsZXhpdHkgb2YgdmFjdXVtIHByb2Nlc3Npbmc6IGl0IHN3aXRjaCBwcm9jZXNpbmcgYmV0 d2VlbgorICAqIHRoZSBoZWFwIHJlbGF0aW9uIHRvIGluZGV4IHJlbGF0aW9ucyBhbmQgdmlz YSB2ZXJzYSwgd2UgbmVlZCB0byBzdG9yZQorICAqIGdhdGhlcmVkIHN0YXRpc3RpY3MgaW5m b3JtYXRpb24gZm9yIGhlYXAgcmVsYXRpb25zIHNldmVyYWwgdGltZXMgYmVmb3JlCisgICog dGhlIHZhY3V1bSBzdGFydHMgcHJvY2Vzc2luZyB0aGUgaW5kZXhlcyBhZ2Fpbi4KKyAgKgor ICAqIEl0IGlzIG5lY2Vzc2FyeSB0byBnYXRoZXIgY29ycmVjdCBzdGF0aXN0aWNzIGluZm9y bWF0aW9uIGZvciBoZWFwIGFuZCBpbmRleGVzCisgICogb3RoZXJ3aWNlIHRoZSBpbmRleCBz dGF0aXN0aWNzIGluZm9ybWF0aW9uIHdvdWxkIGJlIGFkZGVkIHRvIGhpcyBwYXJlbnQgaGVh cAorICAqIHN0YXRpc3RpY3MgaW5mb3JtYXRpb24gYW5kIGl0IHdvdWxkIGJlIGRpZmZpY3Vs dCB0byBhbmFseXplIGl0IGxhdGVyLgorICAqCisgKiBXZSBjYW4ndCBzdWJ0cmFjdCB1bmlv biB2YWN1dW0gc3RhdGlzdGljcyBpbmZvcm1hdGlvbiBmb3IgaW5kZXggZnJvbSB0aGUgaGVh cCByZWxhdGlvbnMKKyAgKiBiZWNhdXNlIG9mIHRvdGFsIGFuZCBkZWxheSB0aW1lIHRpbWUg c3RhdGlzdGljcyBjb2xsZWN0aW5nIGR1cmluZyBwYXJhbGxlbCB2YWN1dW0KKyAgKiBwcm9j dWR1cmUuCisqLworc3RhdGljIHZvaWQKK2FjY3VtdWxhdGVfaGVhcF92YWN1dW1fc3RhdGlz dGljcyhMVkV4dFN0YXRDb3VudGVycyAqZXh0VmFjQ291bnRlcnMsIExWUmVsU3RhdGUgKnZh Y3JlbCkKK3sKKwlpZiAoIXBnc3RhdF90cmFja192YWN1dW1fc3RhdGlzdGljcykKKwkJcmV0 dXJuOworCisJLyogRmlsbCBoZWFwLXNwZWNpZmljIGV4dGVuZGVkIHN0YXRzIGZpZWxkcyAq LworCXZhY3JlbC0+ZXh0VmFjUmVwb3J0LnR5cGUgPSBQR1NUQVRfRVhUVkFDX1RBQkxFOwor CXZhY3JlbC0+ZXh0VmFjUmVwb3J0LnRhYmxlLnBhZ2VzX3NjYW5uZWQgKz0gdmFjcmVsLT5z Y2FubmVkX3BhZ2VzOworCXZhY3JlbC0+ZXh0VmFjUmVwb3J0LnRhYmxlLnBhZ2VzX3JlbW92 ZWQgKz0gdmFjcmVsLT5yZW1vdmVkX3BhZ2VzOworCXZhY3JlbC0+ZXh0VmFjUmVwb3J0LnRh YmxlLnZtX25ld19mcm96ZW5fcGFnZXMgKz0gdmFjcmVsLT52bV9uZXdfZnJvemVuX3BhZ2Vz OworCXZhY3JlbC0+ZXh0VmFjUmVwb3J0LnRhYmxlLnZtX25ld192aXNpYmxlX3BhZ2VzICs9 IHZhY3JlbC0+dm1fbmV3X3Zpc2libGVfcGFnZXM7CisJdmFjcmVsLT5leHRWYWNSZXBvcnQu dGFibGUudm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzICs9IHZhY3JlbC0+dm1fbmV3X3Zp c2libGVfZnJvemVuX3BhZ2VzOworCXZhY3JlbC0+ZXh0VmFjUmVwb3J0LnR1cGxlc19kZWxl dGVkICs9IHZhY3JlbC0+dHVwbGVzX2RlbGV0ZWQ7CisJdmFjcmVsLT5leHRWYWNSZXBvcnQu dGFibGUudHVwbGVzX2Zyb3plbiArPSB2YWNyZWwtPnR1cGxlc19mcm96ZW47CisJdmFjcmVs LT5leHRWYWNSZXBvcnQudGFibGUucmVjZW50bHlfZGVhZF90dXBsZXMgKz0gdmFjcmVsLT5y ZWNlbnRseV9kZWFkX3R1cGxlczsKKwl2YWNyZWwtPmV4dFZhY1JlcG9ydC50YWJsZS5yZWNl bnRseV9kZWFkX3R1cGxlcyArPSB2YWNyZWwtPnJlY2VudGx5X2RlYWRfdHVwbGVzOworCXZh Y3JlbC0+ZXh0VmFjUmVwb3J0LnRhYmxlLm1pc3NlZF9kZWFkX3R1cGxlcyArPSB2YWNyZWwt Pm1pc3NlZF9kZWFkX3R1cGxlczsKKwl2YWNyZWwtPmV4dFZhY1JlcG9ydC50YWJsZS5taXNz ZWRfZGVhZF9wYWdlcyArPSB2YWNyZWwtPm1pc3NlZF9kZWFkX3BhZ2VzOworCXZhY3JlbC0+ ZXh0VmFjUmVwb3J0LnRhYmxlLmluZGV4X3ZhY3V1bV9jb3VudCArPSB2YWNyZWwtPm51bV9p bmRleF9zY2FuczsKKwl2YWNyZWwtPmV4dFZhY1JlcG9ydC50YWJsZS53cmFwYXJvdW5kX2Zh aWxzYWZlX2NvdW50ICs9IHZhY3JlbC0+d3JhcGFyb3VuZF9mYWlsc2FmZV9jb3VudDsKK30K KworCiAvKgogICogSGVscGVyIHRvIHNldCB1cCB0aGUgZWFnZXIgc2Nhbm5pbmcgc3RhdGUg Zm9yIHZhY3V1bWluZyBhIHNpbmdsZSByZWxhdGlvbi4KICAqIEluaXRpYWxpemVzIHRoZSBl YWdlciBzY2FuIG1hbmFnZW1lbnQgcmVsYXRlZCBtZW1iZXJzIG9mIHRoZSBMVlJlbFN0YXRl LgpAQCAtNzQ2LDEzICs4MTgsNyBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLCBW YWN1dW1QYXJhbXMgKnBhcmFtcywKIAlCdWZmZXJVc2FnZSBzdGFydGJ1ZmZlcnVzYWdlID0g cGdCdWZmZXJVc2FnZTsKIAlFcnJvckNvbnRleHRDYWxsYmFjayBlcnJjYWxsYmFjazsKIAlM VkV4dFN0YXRDb3VudGVycyBleHRWYWNDb3VudGVyczsKLQlFeHRWYWNSZXBvcnQgZXh0VmFj UmVwb3J0OwogCWNoYXIJICAqKmluZG5hbWVzID0gTlVMTDsKLQlFeHRWYWNSZXBvcnQgYWxs emVybzsKLQotCS8qIEluaXRpYWxpemUgdmFjdXVtIHN0YXRpc3RpY3MgKi8KLQltZW1zZXQo JmFsbHplcm8sIDAsIHNpemVvZihFeHRWYWNSZXBvcnQpKTsKLQlleHRWYWNSZXBvcnQgPSBh bGx6ZXJvOwogCiAJdmVyYm9zZSA9IChwYXJhbXMtPm9wdGlvbnMgJiBWQUNPUFRfVkVSQk9T RSkgIT0gMDsKIAlpbnN0cnVtZW50ID0gKHZlcmJvc2UgfHwgKEFtQXV0b1ZhY3V1bVdvcmtl clByb2Nlc3MoKSAmJgpAQCAtNzcyLDcgKzgzOCw2IEBAIGhlYXBfdmFjdXVtX3JlbChSZWxh dGlvbiByZWwsIFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCiAJcGdzdGF0X3Byb2dyZXNzX3N0 YXJ0X2NvbW1hbmQoUFJPR1JFU1NfQ09NTUFORF9WQUNVVU0sCiAJCQkJCQkJCSAgUmVsYXRp b25HZXRSZWxpZChyZWwpKTsKLQlleHR2YWNfc3RhdHNfc3RhcnQocmVsLCAmZXh0VmFjQ291 bnRlcnMpOwogCS8qCiAJICogU2V0dXAgZXJyb3IgdHJhY2ViYWNrIHN1cHBvcnQgZm9yIGVy ZXBvcnQoKSBmaXJzdC4gIFRoZSBpZGVhIGlzIHRvIHNldAogCSAqIHVwIGFuIGVycm9yIGNv bnRleHQgY2FsbGJhY2sgdG8gZGlzcGxheSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGFu eQpAQCAtOTU5LDYgKzEwMjQsOCBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLCBW YWN1dW1QYXJhbXMgKnBhcmFtcywKIAkgKi8KIAlsYXp5X3NjYW5faGVhcCh2YWNyZWwpOwog CisJZXh0dmFjX3N0YXRzX3N0YXJ0KHJlbCwgJmV4dFZhY0NvdW50ZXJzKTsKKwogCS8qCiAJ ICogRnJlZSByZXNvdXJjZXMgbWFuYWdlZCBieSBkZWFkX2l0ZW1zX2FsbG9jLiAgVGhpcyBl bmRzIHBhcmFsbGVsIG1vZGUgaW4KIAkgKiBwYXNzaW5nIHdoZW4gbmVjZXNzYXJ5LgpAQCAt MTAzNywyNiArMTEwNCw2IEBAIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsIFZhY3V1 bVBhcmFtcyAqcGFyYW1zLAogCQkJCQkJdmFjcmVsLT5OZXdSZWxmcm96ZW5YaWQsIHZhY3Jl bC0+TmV3UmVsbWluTXhpZCwKIAkJCQkJCSZmcm96ZW54aWRfdXBkYXRlZCwgJm1pbm11bHRp X3VwZGF0ZWQsIGZhbHNlKTsKIAotCS8qIE1ha2UgZ2VuZXJpYyBleHRlbmRlZCB2YWN1dW0g c3RhdHMgcmVwb3J0ICovCi0JZXh0dmFjX3N0YXRzX2VuZChyZWwsICZleHRWYWNDb3VudGVy cywgJmV4dFZhY1JlcG9ydCk7Ci0KLQlpZihwZ3N0YXRfdHJhY2tfdmFjdXVtX3N0YXRpc3Rp Y3MpCi0JewotCQkvKiBGaWxsIGhlYXAtc3BlY2lmaWMgZXh0ZW5kZWQgc3RhdHMgZmllbGRz ICovCi0JCWV4dFZhY1JlcG9ydC5wYWdlc19zY2FubmVkID0gdmFjcmVsLT5zY2FubmVkX3Bh Z2VzOwotCQlleHRWYWNSZXBvcnQucGFnZXNfcmVtb3ZlZCA9IHZhY3JlbC0+cmVtb3ZlZF9w YWdlczsKLQkJZXh0VmFjUmVwb3J0LnZtX25ld19mcm96ZW5fcGFnZXMgPSB2YWNyZWwtPnZt X25ld19mcm96ZW5fcGFnZXM7Ci0JCWV4dFZhY1JlcG9ydC52bV9uZXdfdmlzaWJsZV9wYWdl cyA9IHZhY3JlbC0+dm1fbmV3X3Zpc2libGVfcGFnZXM7Ci0JCWV4dFZhY1JlcG9ydC52bV9u ZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMgPSB2YWNyZWwtPnZtX25ld192aXNpYmxlX2Zyb3pl bl9wYWdlczsKLQkJZXh0VmFjUmVwb3J0LnR1cGxlc19kZWxldGVkID0gdmFjcmVsLT50dXBs ZXNfZGVsZXRlZDsKLQkJZXh0VmFjUmVwb3J0LnR1cGxlc19mcm96ZW4gPSB2YWNyZWwtPnR1 cGxlc19mcm96ZW47Ci0JCWV4dFZhY1JlcG9ydC5yZWNlbnRseV9kZWFkX3R1cGxlcyA9IHZh Y3JlbC0+cmVjZW50bHlfZGVhZF90dXBsZXM7Ci0JCWV4dFZhY1JlcG9ydC5taXNzZWRfZGVh ZF90dXBsZXMgPSB2YWNyZWwtPm1pc3NlZF9kZWFkX3R1cGxlczsKLQkJZXh0VmFjUmVwb3J0 Lm1pc3NlZF9kZWFkX3BhZ2VzID0gdmFjcmVsLT5taXNzZWRfZGVhZF9wYWdlczsKLQkJZXh0 VmFjUmVwb3J0LmluZGV4X3ZhY3V1bV9jb3VudCA9IHZhY3JlbC0+bnVtX2luZGV4X3NjYW5z OwotCQlleHRWYWNSZXBvcnQud3JhcGFyb3VuZF9mYWlsc2FmZV9jb3VudCA9IHZhY3JlbC0+ d3JhcGFyb3VuZF9mYWlsc2FmZV9jb3VudDsKLQl9Ci0KIAkvKgogCSAqIFJlcG9ydCByZXN1 bHRzIHRvIHRoZSBjdW11bGF0aXZlIHN0YXRzIHN5c3RlbSwgdG9vLgogCSAqCkBAIC0xMDY2 LDE0ICsxMTEzLDM3IEBAIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsIFZhY3V1bVBh cmFtcyAqcGFyYW1zLAogCSAqIEl0IHNlZW1zIGxpa2UgYSBnb29kIGlkZWEgdG8gZXJyIG9u IHRoZSBzaWRlIG9mIG5vdCB2YWN1dW1pbmcgYWdhaW4gdG9vCiAJICogc29vbiBpbiBjYXNl cyB3aGVyZSB0aGUgZmFpbHNhZmUgcHJldmVudGVkIHNpZ25pZmljYW50IGFtb3VudHMgb2Yg aGVhcAogCSAqIHZhY3V1bWluZy4KKwkgKgorCSAqIFdlIGFyZSByZWFkeSB0byBzZW5kIHZh Y3V1bSBzdGF0aXN0aWNzIGluZm9ybWF0aW9uIGZvciBoZWFwIHJlbGF0aW9ucy4KIAkgKi8K LQlwZ3N0YXRfcmVwb3J0X3ZhY3V1bShSZWxhdGlvbkdldFJlbGlkKHJlbCksCisJaWYocGdz dGF0X3RyYWNrX3ZhY3V1bV9zdGF0aXN0aWNzKQorCXsKKwkJLyogTWFrZSBnZW5lcmljIGV4 dGVuZGVkIHZhY3V1bSBzdGF0cyByZXBvcnQgYW5kCisJCSAqIGZpbGwgaGVhcC1zcGVjaWZp YyBleHRlbmRlZCBzdGF0cyBmaWVsZHMuCisJCSAqLworCQlleHR2YWNfc3RhdHNfZW5kKHZh Y3JlbC0+cmVsLCAmZXh0VmFjQ291bnRlcnMsICYodmFjcmVsLT5leHRWYWNSZXBvcnQpKTsK KwkJYWNjdW11bGF0ZV9oZWFwX3ZhY3V1bV9zdGF0aXN0aWNzKCZleHRWYWNDb3VudGVycywg dmFjcmVsKTsKKworCQlwZ3N0YXRfcmVwb3J0X3ZhY3V1bShSZWxhdGlvbkdldFJlbGlkKHJl bCksCiAJCQkJCQkgcmVsLT5yZF9yZWwtPnJlbGlzc2hhcmVkLAogCQkJCQkJIE1heCh2YWNy ZWwtPm5ld19saXZlX3R1cGxlcywgMCksCiAJCQkJCQkgdmFjcmVsLT5yZWNlbnRseV9kZWFk X3R1cGxlcyArCi0JCQkJCQkgdmFjcmVsLT5taXNzZWRfZGVhZF90dXBsZXMsCisgCQkJCQkJ IHZhY3JlbC0+bWlzc2VkX2RlYWRfdHVwbGVzLAogCQkJCQkJIHN0YXJ0dGltZSwKLQkJCQkJ CSAmZXh0VmFjUmVwb3J0KTsKKwkJCQkJCSAmKHZhY3JlbC0+ZXh0VmFjUmVwb3J0KSk7CisK Kwl9CisJZWxzZQorCXsKKwkJcGdzdGF0X3JlcG9ydF92YWN1dW0oUmVsYXRpb25HZXRSZWxp ZChyZWwpLAorCQkJCQkJCSByZWwtPnJkX3JlbC0+cmVsaXNzaGFyZWQsCisJCQkJCQkJIE1h eCh2YWNyZWwtPm5ld19saXZlX3R1cGxlcywgMCksCisJCQkJCQkJIHZhY3JlbC0+cmVjZW50 bHlfZGVhZF90dXBsZXMgKworCQkJCQkJCSB2YWNyZWwtPm1pc3NlZF9kZWFkX3R1cGxlcywK KwkJCQkJCQkgc3RhcnR0aW1lLAorCQkJCQkJCSBOVUxMKTsKKwl9CisKIAlwZ3N0YXRfcHJv Z3Jlc3NfZW5kX2NvbW1hbmQoKTsKIAogCWlmIChpbnN0cnVtZW50KQpAQCAtMTM0Niw2ICsx NDE2LDcgQEAgbGF6eV9zY2FuX2hlYXAoTFZSZWxTdGF0ZSAqdmFjcmVsKQogCQlQUk9HUkVT U19WQUNVVU1fTUFYX0RFQURfVFVQTEVfQllURVMKIAl9OwogCWludDY0CQlpbml0cHJvZ192 YWxbM107CisJTFZFeHRTdGF0Q291bnRlcnMgZXh0VmFjQ291bnRlcnM7CiAKIAkvKiBSZXBv cnQgdGhhdCB3ZSdyZSBzY2FubmluZyB0aGUgaGVhcCwgYWR2ZXJ0aXNpbmcgdG90YWwgIyBv ZiBibG9ja3MgKi8KIAlpbml0cHJvZ192YWxbMF0gPSBQUk9HUkVTU19WQUNVVU1fUEhBU0Vf U0NBTl9IRUFQOwpAQCAtMTM2OSw2ICsxNDQwLDEzIEBAIGxhenlfc2Nhbl9oZWFwKExWUmVs U3RhdGUgKnZhY3JlbCkKIAkJCQkJCQkJCQl2YWNyZWwsCiAJCQkJCQkJCQkJc2l6ZW9mKHVp bnQ4KSk7CiAKKwkvKgorCSAqIER1ZSB0byB0aGUgZmFjdCB0aGF0IHZhY3V1bSBoZWFwIHBy b2Nlc3NpbmcgbmVlZHMgdGhlaXIgaW5kZXggdmFjdXVtaW5nCisJICogd2UgbmVlZCB0byB0 cmFjayB0aGVtIHNlcGFyYXRlbHkgYW5kIGFjY3VtdWxhdGUgaGVhcCB2YWN1dW0gc3RhdGlz dGljcworCSAqIHNlcGFyYXRlbHkuIFNvIGxhc3QgcHJvY2Vzc2VzIGFyZSByZWxhdGVkIHRv IG9ubHkgaGVhcCB2YWN1dW1pbmcgcHJvY2Vzcy4KKwkgKi8KKwlleHR2YWNfc3RhdHNfc3Rh cnQodmFjcmVsLT5yZWwsICZleHRWYWNDb3VudGVycyk7CisKIAl3aGlsZSAodHJ1ZSkKIAl7 CiAJCUJ1ZmZlcgkJYnVmOwpAQCAtMTQxNSw4ICsxNDkzLDI1IEBAIGxhenlfc2Nhbl9oZWFw KExWUmVsU3RhdGUgKnZhY3JlbCkKIAogCQkJLyogUGVyZm9ybSBhIHJvdW5kIG9mIGluZGV4 IGFuZCBoZWFwIHZhY3V1bWluZyAqLwogCQkJdmFjcmVsLT5jb25zaWRlcl9ieXBhc3Nfb3B0 aW1pemF0aW9uID0gZmFsc2U7CisKKwkJCS8qCisJCQkgKiBMYXp5IHZhY3V1bSBzdGFnZSBp bmNsdWRlcyBpbmRleCB2YWN1dW1pbmcgYW5kIGNsZWFuaW5nIHVwIHN0YWdlLCBzbworCQkJ ICogd2UgcHJlZmVyIHRyYWNraW5nIHRoZW0gc2VwYXJhdGVseS4KKwkJCSAqIEJlZm9yZSBz dGFydGluZyB0byBwcm9jZXNzIHRoZSBpbmRleGVzIHNhdmUgdGhlIGN1cnJlbnQgaGVhcCBz dGF0aXN0aWNzCisJCQkqLworCQkJZXh0dmFjX3N0YXRzX2VuZCh2YWNyZWwtPnJlbCwgJmV4 dFZhY0NvdW50ZXJzLCAmKHZhY3JlbC0+ZXh0VmFjUmVwb3J0KSk7CisJCQlhY2N1bXVsYXRl X2hlYXBfdmFjdXVtX3N0YXRpc3RpY3MoJmV4dFZhY0NvdW50ZXJzLCB2YWNyZWwpOwogCQkJ bGF6eV92YWN1dW0odmFjcmVsKTsKIAorCQkJLyoKKwkJCSAqIEFmdGVyIGNvbXBsZXRpb24g bGF6eSB2YWN1dW0sIHdlIHN0YXJ0IGFnYWluIHRyYWNraW5nIHZhY3V1bSBzdGF0aXN0aWNz IGZvcgorCQkJICogaGVhcC1yZWxhdGVkIG9iamVjdHMgbGlrZSBGU00sIFZNLCBwcm92aWRl IGhlYXAgcHJ1bm5pbmcuCisJCQkgKiBJdCBzZWVtcyBkYW5nZXJvdXNseSB0aGF0IHdlIGhh dmUgc3RhcnQgdHJhY2tpbmcgYnV0IHRoZXJlIGFyZSBubyBlbmQsIGJ1dAorCQkJICogaXQg aXMgc2FmZS4gVGhlIGVuZCB0cmFja2luZyBpcyBsb2NhdGVkIGJlZm9yZSBsYXp5IHZhY3V1 bSBzdGFnZSBpbiB0aGUgc2FtZQorCQkJICogbG9vcCBvciBhZnRlciBpdC4KKyAJCQkqLwor CQkJZXh0dmFjX3N0YXRzX3N0YXJ0KHZhY3JlbC0+cmVsLCAmZXh0VmFjQ291bnRlcnMpOwor CiAJCQkvKgogCQkJICogVmFjdXVtIHRoZSBGcmVlIFNwYWNlIE1hcCB0byBtYWtlIG5ld2x5 LWZyZWVkIHNwYWNlIHZpc2libGUgb24KIAkJCSAqIHVwcGVyLWxldmVsIEZTTSBwYWdlcy4g Tm90ZSB0aGF0IGJsa25vIGlzIHRoZSBwcmV2aW91c2x5CkBAIC0xNjM5LDYgKzE3MzQsMTMg QEAgbGF6eV9zY2FuX2hlYXAoTFZSZWxTdGF0ZSAqdmFjcmVsKQogCiAJcmVhZF9zdHJlYW1f ZW5kKHN0cmVhbSk7CiAKKwkvKgorCSAqIFZhY3V1bSBjYW4gcHJvY2VzcyBsYXp5IHZhY3V1 bSBhZ2FpbiBhbmQgd2Ugc2F2ZSBoZWFwIHN0YXRpc3RpY3Mgbm93CisJICoganVzdCBpbiBj YXNlIGluIHRlbmQgdG8gYXZvaWQgY29sbGVjdGluZyB2YWN1dW0gaW5kZXggc3RhdGlzdGlj cyBhZ2Fpbi4KKwkgKi8KKwlleHR2YWNfc3RhdHNfZW5kKHZhY3JlbC0+cmVsLCAmZXh0VmFj Q291bnRlcnMsICYodmFjcmVsLT5leHRWYWNSZXBvcnQpKTsKKwlhY2N1bXVsYXRlX2hlYXBf dmFjdXVtX3N0YXRpc3RpY3MoJmV4dFZhY0NvdW50ZXJzLCB2YWNyZWwpOworCiAJLyoKIAkg KiBEbyBpbmRleCB2YWN1dW1pbmcgKGNhbGwgZWFjaCBpbmRleCdzIGFtYnVsa2RlbGV0ZSBy b3V0aW5lKSwgdGhlbiBkbwogCSAqIHJlbGF0ZWQgaGVhcCB2YWN1dW1pbmcKQEAgLTE2NDYs NiArMTc0OCwxMiBAQCBsYXp5X3NjYW5faGVhcChMVlJlbFN0YXRlICp2YWNyZWwpCiAJaWYg KHZhY3JlbC0+ZGVhZF9pdGVtc19pbmZvLT5udW1faXRlbXMgPiAwKQogCQlsYXp5X3ZhY3V1 bSh2YWNyZWwpOwogCisJLyoKKwkgKiBXZSBuZWVkIHRvIHRha2UgaW50byBhY2NvdW50IGhl YXAgdmFjdXVtIHN0YXRpc3RpY3MgZHVyaW5nIHByb2Nlc3Mgb2YKKwkgKiBGU00uCisgCSAq LworCWV4dHZhY19zdGF0c19zdGFydCh2YWNyZWwtPnJlbCwgJmV4dFZhY0NvdW50ZXJzKTsK KwogCS8qCiAJICogVmFjdXVtIHRoZSByZW1haW5kZXIgb2YgdGhlIEZyZWUgU3BhY2UgTWFw LiAgV2UgbXVzdCBkbyB0aGlzIHdoZXRoZXIgb3IKIAkgKiBub3QgdGhlcmUgd2VyZSBpbmRl eGVzLCBhbmQgd2hldGhlciBvciBub3Qgd2UgYnlwYXNzZWQgaW5kZXggdmFjdXVtaW5nLgpA QCAtMTY1OCw2ICsxNzY2LDEwIEBAIGxhenlfc2Nhbl9oZWFwKExWUmVsU3RhdGUgKnZhY3Jl bCkKIAkvKiByZXBvcnQgYWxsIGJsb2NrcyB2YWN1dW1lZCAqLwogCXBnc3RhdF9wcm9ncmVz c191cGRhdGVfcGFyYW0oUFJPR1JFU1NfVkFDVVVNX0hFQVBfQkxLU19WQUNVVU1FRCwgcmVs X3BhZ2VzKTsKIAorCS8qIEJlZm9yZSBzdGFydGluZyBmaW5hbCBpbmRleCBjbGFuIHVwIHN0 YWdlIHNhdmUgaGVhcCBzdGF0aXN0aWNzICovCisJZXh0dmFjX3N0YXRzX2VuZCh2YWNyZWwt PnJlbCwgJmV4dFZhY0NvdW50ZXJzLCAmKHZhY3JlbC0+ZXh0VmFjUmVwb3J0KSk7CisJYWNj dW11bGF0ZV9oZWFwX3ZhY3V1bV9zdGF0aXN0aWNzKCZleHRWYWNDb3VudGVycywgdmFjcmVs KTsKKwogCS8qIERvIGZpbmFsIGluZGV4IGNsZWFudXAgKGNhbGwgZWFjaCBpbmRleCdzIGFt dmFjdXVtY2xlYW51cCByb3V0aW5lKSAqLwogCWlmICh2YWNyZWwtPm5pbmRleGVzID4gMCAm JiB2YWNyZWwtPmRvX2luZGV4X2NsZWFudXApCiAJCWxhenlfY2xlYW51cF9hbGxfaW5kZXhl cyh2YWNyZWwpOwpAQCAtMjU3NSw2ICsyNjg3LDcgQEAgc3RhdGljIHZvaWQKIGxhenlfdmFj dXVtKExWUmVsU3RhdGUgKnZhY3JlbCkKIHsKIAlib29sCQlieXBhc3M7CisJTFZFeHRTdGF0 Q291bnRlcnMgZXh0VmFjQ291bnRlcnM7CiAKIAkvKiBTaG91bGQgbm90IGVuZCB1cCBoZXJl IHdpdGggbm8gaW5kZXhlcyAqLwogCUFzc2VydCh2YWNyZWwtPm5pbmRleGVzID4gMCk7CkBA IC0yNTg3LDYgKzI3MDAsOSBAQCBsYXp5X3ZhY3V1bShMVlJlbFN0YXRlICp2YWNyZWwpCiAJ CXJldHVybjsKIAl9CiAKKwkvKiBTZXQgaW5pdGlhbCBzdGF0aXN0aWNzIHZhbHVlcyB0byBn YXRoZXIgdmFjdXVtIHN0YXRpc3RpY3MgZm9yIHRoZSBoZWFwICovCisJZXh0dmFjX3N0YXRz X3N0YXJ0KHZhY3JlbC0+cmVsLCAmZXh0VmFjQ291bnRlcnMpOworCiAJLyoKIAkgKiBDb25z aWRlciBieXBhc3NpbmcgaW5kZXggdmFjdXVtaW5nIChhbmQgaGVhcCB2YWN1dW1pbmcpIGVu dGlyZWx5LgogCSAqCkBAIC0yNjQzLDYgKzI3NTksMTQgQEAgbGF6eV92YWN1dW0oTFZSZWxT dGF0ZSAqdmFjcmVsKQogCQkJCSAgVGlkU3RvcmVNZW1vcnlVc2FnZSh2YWNyZWwtPmRlYWRf aXRlbXMpIDwgMzIgKiAxMDI0ICogMTAyNCk7CiAJfQogCisJLyoKKwkgKiBWYWN1dW0gaXMg bGlrZWx5IHRvIHZhY3V1bSBpbmRleGVzIGFnYWluLCBzbyBzYXZlIHZhY3V1bSBzdGF0aXN0 aWNzIGZvcgorCSAqIGhlYXAgcmVsYXRpb25zIG5vdy4KKwkgKiBUaGUgdmFjdXVtIHByb2Nl c3MgYmVsb3cgZG9lc24ndCBjb250YWluIGFueSB1c2VmdWwgc3RhdGlzdGljcyBpbmZvcm1h dGlvbgorCSAqIGZvciBoZWFwIGlmIGluZGV4ZXMgd29uJ3QgYmUgcHJvY2Vzc2VkLCBidXQg d2Ugd2lsbCB0cmFjayB0aGVtIHNlcGFyYXRlbHkuCisJICovCisJZXh0dmFjX3N0YXRzX2Vu ZCh2YWNyZWwtPnJlbCwgJmV4dFZhY0NvdW50ZXJzLCAmKHZhY3JlbC0+ZXh0VmFjUmVwb3J0 KSk7CisKIAlpZiAoYnlwYXNzKQogCXsKIAkJLyoKQEAgLTI2NTksMTEgKzI3ODMsMjEgQEAg bGF6eV92YWN1dW0oTFZSZWxTdGF0ZSAqdmFjcmVsKQogCX0KIAllbHNlIGlmIChsYXp5X3Zh Y3V1bV9hbGxfaW5kZXhlcyh2YWNyZWwpKQogCXsKLQkJLyoKLQkJICogV2Ugc3VjY2Vzc2Z1 bGx5IGNvbXBsZXRlZCBhIHJvdW5kIG9mIGluZGV4IHZhY3V1bWluZy4gIERvIHJlbGF0ZWQK LQkJICogaGVhcCB2YWN1dW1pbmcgbm93LgotCQkgKi8KLQkJbGF6eV92YWN1dW1faGVhcF9y ZWwodmFjcmVsKTsKKwkJLyogTm93IHRoZSB2YWN1dW0gaXMgZ29pbmcgdG8gcHJvY2VzcyBo ZWFwIHJlbGF0aW9uLCBzbworCQkgKiB3ZSBuZWVkIHRvIHNldCBpbnRpYWwgc3RhdGlzdGlj IHZhbHVlcyBmb3IgdHJhY2tpbmcuCisJCSovCisKKwkJLyogU2V0IGluaXRpYWwgc3RhdGlz dGljcyB2YWx1ZXMgdG8gZ2F0aGVyIHZhY3V1bSBzdGF0aXN0aWNzIGZvciB0aGUgaGVhcCAq LworCQlleHR2YWNfc3RhdHNfc3RhcnQodmFjcmVsLT5yZWwsICZleHRWYWNDb3VudGVycyk7 CisKKyAJCS8qCisgCQkgKiBXZSBzdWNjZXNzZnVsbHkgY29tcGxldGVkIGEgcm91bmQgb2Yg aW5kZXggdmFjdXVtaW5nLiAgRG8gcmVsYXRlZAorIAkJICogaGVhcCB2YWN1dW1pbmcgbm93 LgorIAkJICovCisgCQlsYXp5X3ZhY3V1bV9oZWFwX3JlbCh2YWNyZWwpOworCisJCWV4dHZh Y19zdGF0c19lbmQodmFjcmVsLT5yZWwsICZleHRWYWNDb3VudGVycywgJih2YWNyZWwtPmV4 dFZhY1JlcG9ydCkpOworCQlhY2N1bXVsYXRlX2hlYXBfdmFjdXVtX3N0YXRpc3RpY3MoJmV4 dFZhY0NvdW50ZXJzLCB2YWNyZWwpOwogCX0KIAllbHNlCiAJewpAQCAtMzIwMCw2ICszMzM0 LDExIEBAIGxhenlfdmFjdXVtX29uZV9pbmRleChSZWxhdGlvbiBpbmRyZWwsIEluZGV4QnVs a0RlbGV0ZVJlc3VsdCAqaXN0YXQsCiB7CiAJSW5kZXhWYWN1dW1JbmZvIGl2aW5mbzsKIAlM VlNhdmVkRXJySW5mbyBzYXZlZF9lcnJfaW5mbzsKKwlMVkV4dFN0YXRDb3VudGVyc0lkeCBl eHRWYWNDb3VudGVyczsKKwlFeHRWYWNSZXBvcnQgZXh0VmFjUmVwb3J0OworCisJLyogU2V0 IGluaXRpYWwgc3RhdGlzdGljcyB2YWx1ZXMgdG8gZ2F0aGVyIHZhY3V1bSBzdGF0aXN0aWNz IGZvciB0aGUgaW5kZXggKi8KKwlleHR2YWNfc3RhdHNfc3RhcnRfaWR4KGluZHJlbCwgaXN0 YXQsICZleHRWYWNDb3VudGVycyk7CiAKIAlpdmluZm8uaW5kZXggPSBpbmRyZWw7CiAJaXZp bmZvLmhlYXByZWwgPSB2YWNyZWwtPnJlbDsKQEAgLTMyMjYsNiArMzM2NSwxNSBAQCBsYXp5 X3ZhY3V1bV9vbmVfaW5kZXgoUmVsYXRpb24gaW5kcmVsLCBJbmRleEJ1bGtEZWxldGVSZXN1 bHQgKmlzdGF0LAogCWlzdGF0ID0gdmFjX2J1bGtkZWxfb25lX2luZGV4KCZpdmluZm8sIGlz dGF0LCB2YWNyZWwtPmRlYWRfaXRlbXMsCiAJCQkJCQkJCSAgdmFjcmVsLT5kZWFkX2l0ZW1z X2luZm8pOwogCisJaWYocGdzdGF0X3RyYWNrX3ZhY3V1bV9zdGF0aXN0aWNzKQorCXsKKwkJ LyogTWFrZSBleHRlbmRlZCB2YWN1dW0gc3RhdHMgcmVwb3J0IGZvciBpbmRleCAqLworCQll eHR2YWNfc3RhdHNfZW5kX2lkeChpbmRyZWwsIGlzdGF0LCAmZXh0VmFjQ291bnRlcnMsICZl eHRWYWNSZXBvcnQpOworCQlwZ3N0YXRfcmVwb3J0X3ZhY3V1bShSZWxhdGlvbkdldFJlbGlk KGluZHJlbCksCisJCQkJCQkJCWluZHJlbC0+cmRfcmVsLT5yZWxpc3NoYXJlZCwKKwkJCQkJ CQkJMCwgMCwgMCwgJmV4dFZhY1JlcG9ydCk7CisJfQorCiAJLyogUmV2ZXJ0IHRvIHRoZSBw cmV2aW91cyBwaGFzZSBpbmZvcm1hdGlvbiBmb3IgZXJyb3IgdHJhY2ViYWNrICovCiAJcmVz dG9yZV92YWN1dW1fZXJyb3JfaW5mbyh2YWNyZWwsICZzYXZlZF9lcnJfaW5mbyk7CiAJcGZy ZWUodmFjcmVsLT5pbmRuYW1lKTsKQEAgLTMyNTAsNiArMzM5OCwxMSBAQCBsYXp5X2NsZWFu dXBfb25lX2luZGV4KFJlbGF0aW9uIGluZHJlbCwgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpp c3RhdCwKIHsKIAlJbmRleFZhY3V1bUluZm8gaXZpbmZvOwogCUxWU2F2ZWRFcnJJbmZvIHNh dmVkX2Vycl9pbmZvOworCUxWRXh0U3RhdENvdW50ZXJzSWR4IGV4dFZhY0NvdW50ZXJzOwor CUV4dFZhY1JlcG9ydCBleHRWYWNSZXBvcnQ7CisKKwkvKiBTZXQgaW5pdGlhbCBzdGF0aXN0 aWNzIHZhbHVlcyB0byBnYXRoZXIgdmFjdXVtIHN0YXRpc3RpY3MgZm9yIHRoZSBpbmRleCAq LworCWV4dHZhY19zdGF0c19zdGFydF9pZHgoaW5kcmVsLCBpc3RhdCwgJmV4dFZhY0NvdW50 ZXJzKTsKIAogCWl2aW5mby5pbmRleCA9IGluZHJlbDsKIAlpdmluZm8uaGVhcHJlbCA9IHZh Y3JlbC0+cmVsOwpAQCAtMzI3NSw2ICszNDI4LDE1IEBAIGxhenlfY2xlYW51cF9vbmVfaW5k ZXgoUmVsYXRpb24gaW5kcmVsLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKmlzdGF0LAogCiAJ aXN0YXQgPSB2YWNfY2xlYW51cF9vbmVfaW5kZXgoJml2aW5mbywgaXN0YXQpOwogCisJaWYo cGdzdGF0X3RyYWNrX3ZhY3V1bV9zdGF0aXN0aWNzKQorCXsKKwkJLyogTWFrZSBleHRlbmRl ZCB2YWN1dW0gc3RhdHMgcmVwb3J0IGZvciBpbmRleCAqLworCQlleHR2YWNfc3RhdHNfZW5k X2lkeChpbmRyZWwsIGlzdGF0LCAmZXh0VmFjQ291bnRlcnMsICZleHRWYWNSZXBvcnQpOwor CQlwZ3N0YXRfcmVwb3J0X3ZhY3V1bShSZWxhdGlvbkdldFJlbGlkKGluZHJlbCksCisJCQkJ CQkJCWluZHJlbC0+cmRfcmVsLT5yZWxpc3NoYXJlZCwKKwkJCQkJCQkJMCwgMCwgMCwgJmV4 dFZhY1JlcG9ydCk7CisJfQorCiAJLyogUmV2ZXJ0IHRvIHRoZSBwcmV2aW91cyBwaGFzZSBp bmZvcm1hdGlvbiBmb3IgZXJyb3IgdHJhY2ViYWNrICovCiAJcmVzdG9yZV92YWN1dW1fZXJy b3JfaW5mbyh2YWNyZWwsICZzYXZlZF9lcnJfaW5mbyk7CiAJcGZyZWUodmFjcmVsLT5pbmRu YW1lKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNx bCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCA3NTI2Yzg5 NzNlZS4uZDhjN2MxNzkwOTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lz dGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5z cWwKQEAgLTE0NDQsMyArMTQ0NCwzNSBAQCBGUk9NIHBnX2NsYXNzIHJlbAogICBKT0lOIHBn X25hbWVzcGFjZSBucyBPTiBucy5vaWQgPSByZWwucmVsbmFtZXNwYWNlLAogICBMQVRFUkFM IHBnX3N0YXRfZ2V0X3ZhY3V1bV90YWJsZXMocmVsLm9pZCkgc3RhdHMKIFdIRVJFIHJlbC5y ZWxraW5kID0gJ3InOworCitDUkVBVEUgVklFVyBwZ19zdGF0X3ZhY3V1bV9pbmRleGVzIEFT CitTRUxFQ1QKKyAgcmVsLm9pZCBhcyByZWxpZCwKKyAgbnMubnNwbmFtZSBBUyBzY2hlbWFu YW1lLAorICByZWwucmVsbmFtZSBBUyByZWxuYW1lLAorCisgIHRvdGFsX2Jsa3NfcmVhZCBB UyB0b3RhbF9ibGtzX3JlYWQsCisgIHRvdGFsX2Jsa3NfaGl0IEFTIHRvdGFsX2Jsa3NfaGl0 LAorICB0b3RhbF9ibGtzX2RpcnRpZWQgQVMgdG90YWxfYmxrc19kaXJ0aWVkLAorICB0b3Rh bF9ibGtzX3dyaXR0ZW4gQVMgdG90YWxfYmxrc193cml0dGVuLAorCisgIHJlbF9ibGtzX3Jl YWQgQVMgcmVsX2Jsa3NfcmVhZCwKKyAgcmVsX2Jsa3NfaGl0IEFTIHJlbF9ibGtzX2hpdCwK KworICBwYWdlc19kZWxldGVkIEFTIHBhZ2VzX2RlbGV0ZWQsCisgIHR1cGxlc19kZWxldGVk IEFTIHR1cGxlc19kZWxldGVkLAorCisgIHdhbF9yZWNvcmRzIEFTIHdhbF9yZWNvcmRzLAor ICB3YWxfZnBpIEFTIHdhbF9mcGksCisgIHdhbF9ieXRlcyBBUyB3YWxfYnl0ZXMsCisKKyAg YmxrX3JlYWRfdGltZSBBUyBibGtfcmVhZF90aW1lLAorICBibGtfd3JpdGVfdGltZSBBUyBi bGtfd3JpdGVfdGltZSwKKworICBkZWxheV90aW1lIEFTIGRlbGF5X3RpbWUsCisgIHRvdGFs X3RpbWUgQVMgdG90YWxfdGltZQorRlJPTQorICBwZ19jbGFzcyByZWwKKyAgSk9JTiBwZ19u YW1lc3BhY2UgbnMgT04gbnMub2lkID0gcmVsLnJlbG5hbWVzcGFjZSwKKyAgTEFURVJBTCBw Z19zdGF0X2dldF92YWN1dW1faW5kZXhlcyhyZWwub2lkKSBzdGF0cworV0hFUkUgcmVsLnJl bGtpbmQgPSAnaSc7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKaW5kZXggNzkyNGM1MjZjYjAuLjAwMDM4OGE1NjVm IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKQEAgLTg2OCw2ICs4 NjgsOCBAQCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19vbmVfaW5kZXgoUGFyYWxsZWxWYWN1 dW1TdGF0ZSAqcHZzLCBSZWxhdGlvbiBpbmRyZWwsCiAJSW5kZXhCdWxrRGVsZXRlUmVzdWx0 ICppc3RhdCA9IE5VTEw7CiAJSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICppc3RhdF9yZXM7CiAJ SW5kZXhWYWN1dW1JbmZvIGl2aW5mbzsKKwlMVkV4dFN0YXRDb3VudGVyc0lkeCBleHRWYWND b3VudGVyczsKKwlFeHRWYWNSZXBvcnQgZXh0VmFjUmVwb3J0OwogCiAJLyoKIAkgKiBVcGRh dGUgdGhlIHBvaW50ZXIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYnVsay1kZWxldGlvbiByZXN1 bHQgaWYgc29tZW9uZQpAQCAtODc2LDYgKzg3OCw5IEBAIHBhcmFsbGVsX3ZhY3V1bV9wcm9j ZXNzX29uZV9pbmRleChQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIFJlbGF0aW9uIGluZHJl bCwKIAlpZiAoaW5kc3RhdHMtPmlzdGF0X3VwZGF0ZWQpCiAJCWlzdGF0ID0gJihpbmRzdGF0 cy0+aXN0YXQpOwogCisJLyogU2V0IGluaXRpYWwgc3RhdGlzdGljcyB2YWx1ZXMgdG8gZ2F0 aGVyIHZhY3V1bSBzdGF0aXN0aWNzIGZvciB0aGUgaW5kZXggKi8KKwlleHR2YWNfc3RhdHNf c3RhcnRfaWR4KGluZHJlbCwgJihpbmRzdGF0cy0+aXN0YXQpLCAmZXh0VmFjQ291bnRlcnMp OworCiAJaXZpbmZvLmluZGV4ID0gaW5kcmVsOwogCWl2aW5mby5oZWFwcmVsID0gcHZzLT5o ZWFwcmVsOwogCWl2aW5mby5hbmFseXplX29ubHkgPSBmYWxzZTsKQEAgLTkwNCw2ICs5MDks MTUgQEAgcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3Nfb25lX2luZGV4KFBhcmFsbGVsVmFjdXVt U3RhdGUgKnB2cywgUmVsYXRpb24gaW5kcmVsLAogCQkJCSBSZWxhdGlvbkdldFJlbGF0aW9u TmFtZShpbmRyZWwpKTsKIAl9CiAKKwlpZihwZ3N0YXRfdHJhY2tfdmFjdXVtX3N0YXRpc3Rp Y3MpCisJeworCQkvKiBNYWtlIGV4dGVuZGVkIHZhY3V1bSBzdGF0cyByZXBvcnQgZm9yIGlu ZGV4ICovCisJCWV4dHZhY19zdGF0c19lbmRfaWR4KGluZHJlbCwgaXN0YXRfcmVzLCAmZXh0 VmFjQ291bnRlcnMsICZleHRWYWNSZXBvcnQpOworCQlwZ3N0YXRfcmVwb3J0X3ZhY3V1bShS ZWxhdGlvbkdldFJlbGlkKGluZHJlbCksCisJCQkJCQkJCWluZHJlbC0+cmRfcmVsLT5yZWxp c3NoYXJlZCwKKwkJCQkJCQkJMCwgMCwgMCwgJmV4dFZhY1JlcG9ydCk7CisJfQorCiAJLyoK IAkgKiBDb3B5IHRoZSBpbmRleCBidWxrLWRlbGV0aW9uIHJlc3VsdCByZXR1cm5lZCBmcm9t IGFtYnVsa2RlbGV0ZSBhbmQKIAkgKiBhbXZhY3V1bWNsZWFudXAgdG8gdGhlIERTTSBzZWdt ZW50IGlmIGl0J3MgdGhlIGZpcnN0IGN5Y2xlIGJlY2F1c2UgdGhleQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0LmMgYi9zcmMvYmFja2VuZC91dGls cy9hY3Rpdml0eS9wZ3N0YXQuYwppbmRleCA4MjZhNTY4NWIyYS4uMzYzY2JmMmJiMDQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdC5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdC5jCkBAIC0xMTgwLDYgKzExODAsMTAg QEAgcGdzdGF0X2J1aWxkX3NuYXBzaG90KFBnU3RhdF9LaW5kIHN0YXRLaW5kKQogCQlpZiAo cC0+ZHJvcHBlZCkKIAkJCWNvbnRpbnVlOwogCisJCWlmIChzdGF0S2luZCAhPSBQR1NUQVRf S0lORF9JTlZBTElEICYmIHN0YXRLaW5kICE9IHAtPmtleS5raW5kKQorCQkJLyogTG9hZCBz dGF0IG9mIHNwZWNpZmljIHR5cGUsIGlmIGRlZmluZWQgKi8KKwkJCWNvbnRpbnVlOworCiAJ CUFzc2VydChwZ19hdG9taWNfcmVhZF91MzIoJnAtPnJlZmNvdW50KSA+IDApOwogCiAJCXN0 YXRzX2RhdGEgPSBkc2FfZ2V0X2FkZHJlc3MocGdTdGF0TG9jYWwuZHNhLCBwLT5ib2R5KTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9yZWxhdGlv bi5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMKaW5k ZXggMDI3MmRkMWYzOTMuLmNkNGZmYjUwYmNhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9hY3Rpdml0eS9wZ3N0YXRfcmVsYXRpb24uYworKysgYi9zcmMvYmFja2VuZC91dGls cy9hY3Rpdml0eS9wZ3N0YXRfcmVsYXRpb24uYwpAQCAtMTAwNyw2ICsxMDA3LDkgQEAgc3Rh dGljIHZvaWQKIHBnc3RhdF9hY2N1bXVsYXRlX2V4dHZhY19zdGF0cyhFeHRWYWNSZXBvcnQg KmRzdCwgRXh0VmFjUmVwb3J0ICpzcmMsCiAJCQkJCQkJICAgYm9vbCBhY2N1bXVsYXRlX3Jl bHR5cGVfc3BlY2lmaWNfaW5mbykKIHsKKwlpZighcGdzdGF0X3RyYWNrX3ZhY3V1bV9zdGF0 aXN0aWNzKQorCQlyZXR1cm47CisKIAlkc3QtPnRvdGFsX2Jsa3NfcmVhZCArPSBzcmMtPnRv dGFsX2Jsa3NfcmVhZDsKIAlkc3QtPnRvdGFsX2Jsa3NfaGl0ICs9IHNyYy0+dG90YWxfYmxr c19oaXQ7CiAJZHN0LT50b3RhbF9ibGtzX2RpcnRpZWQgKz0gc3JjLT50b3RhbF9ibGtzX2Rp cnRpZWQ7CkBAIC0xMDIyLDIwICsxMDI1LDM1IEBAIHBnc3RhdF9hY2N1bXVsYXRlX2V4dHZh Y19zdGF0cyhFeHRWYWNSZXBvcnQgKmRzdCwgRXh0VmFjUmVwb3J0ICpzcmMsCiAJaWYgKCFh Y2N1bXVsYXRlX3JlbHR5cGVfc3BlY2lmaWNfaW5mbykKIAkJcmV0dXJuOwogCi0JZHN0LT5i bGtzX2ZldGNoZWQgKz0gc3JjLT5ibGtzX2ZldGNoZWQ7Ci0JZHN0LT5ibGtzX2hpdCArPSBz cmMtPmJsa3NfaGl0OwotCi0JZHN0LT5wYWdlc19zY2FubmVkICs9IHNyYy0+cGFnZXNfc2Nh bm5lZDsKLQlkc3QtPnBhZ2VzX3JlbW92ZWQgKz0gc3JjLT5wYWdlc19yZW1vdmVkOwotCWRz dC0+dm1fbmV3X2Zyb3plbl9wYWdlcyArPSBzcmMtPnZtX25ld19mcm96ZW5fcGFnZXM7Ci0J ZHN0LT52bV9uZXdfdmlzaWJsZV9wYWdlcyArPSBzcmMtPnZtX25ld192aXNpYmxlX3BhZ2Vz OwotCWRzdC0+dm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzICs9IHNyYy0+dm1fbmV3X3Zp c2libGVfZnJvemVuX3BhZ2VzOwotCWRzdC0+dHVwbGVzX2RlbGV0ZWQgKz0gc3JjLT50dXBs ZXNfZGVsZXRlZDsKLQlkc3QtPnR1cGxlc19mcm96ZW4gKz0gc3JjLT50dXBsZXNfZnJvemVu OwotCWRzdC0+cmVjZW50bHlfZGVhZF90dXBsZXMgKz0gc3JjLT5yZWNlbnRseV9kZWFkX3R1 cGxlczsKLQlkc3QtPmluZGV4X3ZhY3V1bV9jb3VudCArPSBzcmMtPmluZGV4X3ZhY3V1bV9j b3VudDsKLQlkc3QtPndyYXBhcm91bmRfZmFpbHNhZmVfY291bnQgKz0gc3JjLT53cmFwYXJv dW5kX2ZhaWxzYWZlX2NvdW50OwotCWRzdC0+bWlzc2VkX2RlYWRfcGFnZXMgKz0gc3JjLT5t aXNzZWRfZGVhZF9wYWdlczsKLQlkc3QtPm1pc3NlZF9kZWFkX3R1cGxlcyArPSBzcmMtPm1p c3NlZF9kZWFkX3R1cGxlczsKKwlpZiAoZHN0LT50eXBlID09IFBHU1RBVF9FWFRWQUNfSU5W QUxJRCkKKwkJZHN0LT50eXBlID0gc3JjLT50eXBlOworCisJQXNzZXJ0KHNyYy0+dHlwZSA9 PSBQR1NUQVRfRVhUVkFDX0lOVkFMSUQgfHwgc3JjLT50eXBlID09IGRzdC0+dHlwZSk7CisK KwlpZiAoZHN0LT50eXBlID09IHNyYy0+dHlwZSkKKwl7CisJCWRzdC0+Ymxrc19mZXRjaGVk ICs9IHNyYy0+Ymxrc19mZXRjaGVkOworCQlkc3QtPmJsa3NfaGl0ICs9IHNyYy0+Ymxrc19o aXQ7CiAKKwkJaWYgKGRzdC0+dHlwZSA9PSBQR1NUQVRfRVhUVkFDX1RBQkxFKQorCQl7CisJ CQlkc3QtPnRhYmxlLnBhZ2VzX3NjYW5uZWQgKz0gc3JjLT50YWJsZS5wYWdlc19zY2FubmVk OworCQkJZHN0LT50YWJsZS5wYWdlc19yZW1vdmVkICs9IHNyYy0+dGFibGUucGFnZXNfcmVt b3ZlZDsKKwkJCWRzdC0+dGFibGUudm1fbmV3X2Zyb3plbl9wYWdlcyArPSBzcmMtPnRhYmxl LnZtX25ld19mcm96ZW5fcGFnZXM7CisJCQlkc3QtPnRhYmxlLnZtX25ld192aXNpYmxlX3Bh Z2VzICs9IHNyYy0+dGFibGUudm1fbmV3X3Zpc2libGVfcGFnZXM7CisJCQlkc3QtPnRhYmxl LnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcyArPSBzcmMtPnRhYmxlLnZtX25ld192aXNp YmxlX2Zyb3plbl9wYWdlczsKKwkJCWRzdC0+dHVwbGVzX2RlbGV0ZWQgKz0gc3JjLT50dXBs ZXNfZGVsZXRlZDsKKwkJCWRzdC0+dGFibGUudHVwbGVzX2Zyb3plbiArPSBzcmMtPnRhYmxl LnR1cGxlc19mcm96ZW47CisJCQlkc3QtPnRhYmxlLnJlY2VudGx5X2RlYWRfdHVwbGVzICs9 IHNyYy0+dGFibGUucmVjZW50bHlfZGVhZF90dXBsZXM7CisJCQlkc3QtPnRhYmxlLmluZGV4 X3ZhY3V1bV9jb3VudCArPSBzcmMtPnRhYmxlLmluZGV4X3ZhY3V1bV9jb3VudDsKKwkJCWRz dC0+dGFibGUubWlzc2VkX2RlYWRfcGFnZXMgKz0gc3JjLT50YWJsZS5taXNzZWRfZGVhZF9w YWdlczsKKwkJCWRzdC0+dGFibGUubWlzc2VkX2RlYWRfdHVwbGVzICs9IHNyYy0+dGFibGUu bWlzc2VkX2RlYWRfdHVwbGVzOworCQkJZHN0LT50YWJsZS53cmFwYXJvdW5kX2ZhaWxzYWZl X2NvdW50ICs9IHNyYy0+dGFibGUud3JhcGFyb3VuZF9mYWlsc2FmZV9jb3VudDsKKwkJfQor CQllbHNlIGlmIChkc3QtPnR5cGUgPT0gUEdTVEFUX0VYVFZBQ19JTkRFWCkKKwkJeworCQkJ ZHN0LT5pbmRleC5wYWdlc19kZWxldGVkICs9IHNyYy0+aW5kZXgucGFnZXNfZGVsZXRlZDsK KwkJCWRzdC0+dHVwbGVzX2RlbGV0ZWQgKz0gc3JjLT50dXBsZXNfZGVsZXRlZDsKKwkJfQor CX0KIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9w Z3N0YXRmdW5jcy5jCmluZGV4IGUxMTI3NjJlZDJmLi44MGU4NjdkNzczZiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKQEAgLTIzNTgsMTggKzIzNTgsMTkgQEAgcGdf c3RhdF9nZXRfdmFjdXVtX3RhYmxlcyhQR19GVU5DVElPTl9BUkdTKQogCQkJCQkJCQkJZXh0 dmFjdXVtLT5ibGtzX2hpdCk7CiAJdmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKGV4dHZh Y3V1bS0+Ymxrc19oaXQpOwogCi0JdmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKGV4dHZh Y3V1bS0+cGFnZXNfc2Nhbm5lZCk7Ci0JdmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKGV4 dHZhY3V1bS0+cGFnZXNfcmVtb3ZlZCk7Ci0JdmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVt KGV4dHZhY3V1bS0+dm1fbmV3X2Zyb3plbl9wYWdlcyk7Ci0JdmFsdWVzW2krK10gPSBJbnQ2 NEdldERhdHVtKGV4dHZhY3V1bS0+dm1fbmV3X3Zpc2libGVfcGFnZXMpOwotCXZhbHVlc1tp KytdID0gSW50NjRHZXREYXR1bShleHR2YWN1dW0tPnZtX25ld192aXNpYmxlX2Zyb3plbl9w YWdlcyk7Ci0JdmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKGV4dHZhY3V1bS0+bWlzc2Vk X2RlYWRfcGFnZXMpOworCXZhbHVlc1tpKytdID0gSW50NjRHZXREYXR1bShleHR2YWN1dW0t PnRhYmxlLnBhZ2VzX3NjYW5uZWQpOworCXZhbHVlc1tpKytdID0gSW50NjRHZXREYXR1bShl eHR2YWN1dW0tPnRhYmxlLnBhZ2VzX3JlbW92ZWQpOworCXZhbHVlc1tpKytdID0gSW50NjRH ZXREYXR1bShleHR2YWN1dW0tPnRhYmxlLnZtX25ld19mcm96ZW5fcGFnZXMpOworCXZhbHVl c1tpKytdID0gSW50NjRHZXREYXR1bShleHR2YWN1dW0tPnRhYmxlLnZtX25ld192aXNpYmxl X3BhZ2VzKTsKKwl2YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0oZXh0dmFjdXVtLT50YWJs ZS52bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMpOworCXZhbHVlc1tpKytdID0gSW50NjRH ZXREYXR1bShleHR2YWN1dW0tPnRhYmxlLm1pc3NlZF9kZWFkX3BhZ2VzKTsKIAl2YWx1ZXNb aSsrXSA9IEludDY0R2V0RGF0dW0oZXh0dmFjdXVtLT50dXBsZXNfZGVsZXRlZCk7Ci0JdmFs dWVzW2krK10gPSBJbnQ2NEdldERhdHVtKGV4dHZhY3V1bS0+dHVwbGVzX2Zyb3plbik7Ci0J dmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKGV4dHZhY3V1bS0+cmVjZW50bHlfZGVhZF90 dXBsZXMpOwotCXZhbHVlc1tpKytdID0gSW50NjRHZXREYXR1bShleHR2YWN1dW0tPm1pc3Nl ZF9kZWFkX3R1cGxlcyk7Ci0JdmFsdWVzW2krK10gPSBJbnQzMkdldERhdHVtKGV4dHZhY3V1 bS0+d3JhcGFyb3VuZF9mYWlsc2FmZV9jb3VudCk7Ci0JdmFsdWVzW2krK10gPSBJbnQ2NEdl dERhdHVtKGV4dHZhY3V1bS0+aW5kZXhfdmFjdXVtX2NvdW50KTsKKwl2YWx1ZXNbaSsrXSA9 IEludDY0R2V0RGF0dW0oZXh0dmFjdXVtLT50YWJsZS50dXBsZXNfZnJvemVuKTsKKwl2YWx1 ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0oZXh0dmFjdXVtLT50YWJsZS5yZWNlbnRseV9kZWFk X3R1cGxlcyk7CisJdmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKGV4dHZhY3V1bS0+dGFi bGUubWlzc2VkX2RlYWRfdHVwbGVzKTsKKworCXZhbHVlc1tpKytdID0gSW50MzJHZXREYXR1 bShleHR2YWN1dW0tPnRhYmxlLndyYXBhcm91bmRfZmFpbHNhZmVfY291bnQpOworCXZhbHVl c1tpKytdID0gSW50NjRHZXREYXR1bShleHR2YWN1dW0tPnRhYmxlLmluZGV4X3ZhY3V1bV9j b3VudCk7CiAKIAl2YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0oZXh0dmFjdXVtLT53YWxf cmVjb3Jkcyk7CiAJdmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKGV4dHZhY3V1bS0+d2Fs X2ZwaSk7CkBAIC0yMzg4LDYgKzIzODksMTE2IEBAIHBnX3N0YXRfZ2V0X3ZhY3V1bV90YWJs ZXMoUEdfRlVOQ1RJT05fQVJHUykKIAogCUFzc2VydChpID09IFBHX1NUQVRfR0VUX1ZBQ1VV TV9UQUJMRVNfU1RBVFNfQ09MUyk7CiAKKwkvKiBSZXR1cm5zIHRoZSByZWNvcmQgYXMgRGF0 dW0gKi8KKwlQR19SRVRVUk5fREFUVU0oSGVhcFR1cGxlR2V0RGF0dW0oaGVhcF9mb3JtX3R1 cGxlKHR1cGRlc2MsIHZhbHVlcywgbnVsbHMpKSk7Cit9CisKKy8qCisgKiBHZXQgdGhlIHZh Y3V1bSBzdGF0aXN0aWNzIGZvciB0aGUgaGVhcCB0YWJsZXMuCisgKi8KK0RhdHVtCitwZ19z dGF0X2dldF92YWN1dW1faW5kZXhlcyhQR19GVU5DVElPTl9BUkdTKQoreworCSNkZWZpbmUg UEdfU1RBVF9HRVRfVkFDVVVNX0lOREVYX1NUQVRTX0NPTFMJMTYKKworCU9pZAkJCQkJCXJl bGlkID0gUEdfR0VUQVJHX09JRCgwKTsKKwlQZ1N0YXRfU3RhdFRhYkVudHJ5ICAgICAqdGFi ZW50cnk7CisJRXh0VmFjUmVwb3J0IAkJCSpleHR2YWN1dW07CisJVHVwbGVEZXNjCQkJCSB0 dXBkZXNjOworCURhdHVtCQkJCQkgdmFsdWVzW1BHX1NUQVRfR0VUX1ZBQ1VVTV9JTkRFWF9T VEFUU19DT0xTXSA9IHswfTsKKwlib29sCQkJCQkgbnVsbHNbUEdfU1RBVF9HRVRfVkFDVVVN X0lOREVYX1NUQVRTX0NPTFNdID0gezB9OworCWNoYXIJCQkJCSBidWZbMjU2XTsKKwlpbnQJ CQkJCQkgaSA9IDA7CisJRXh0VmFjUmVwb3J0IGFsbHplcm87CisKKwkvKiBJbml0aWFsaXNl IGF0dHJpYnV0ZXMgaW5mb3JtYXRpb24gaW4gdGhlIHR1cGxlIGRlc2NyaXB0b3IgKi8KKwl0 dXBkZXNjID0gQ3JlYXRlVGVtcGxhdGVUdXBsZURlc2MoUEdfU1RBVF9HRVRfVkFDVVVNX0lO REVYX1NUQVRTX0NPTFMpOworCisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRy TnVtYmVyKSArK2ksICJyZWxpZCIsCisJCQkJCSAgIElOVDRPSUQsIC0xLCAwKTsKKwlUdXBs ZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpICsraSwgInRvdGFsXyBibGtz X3JlYWQiLAorCQkJCQkgICBJTlQ4T0lELCAtMSwgMCk7CisJVHVwbGVEZXNjSW5pdEVudHJ5 KHR1cGRlc2MsIChBdHRyTnVtYmVyKSArK2ksICJ0b3RhbF9ibGtzX2hpdCIsCisJCQkJCSAg IElOVDhPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJO dW1iZXIpICsraSwgInRvdGFsX2Jsa3NfZGlydGllZCIsCisJCQkJCSAgIElOVDhPSUQsIC0x LCAwKTsKKwlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpICsraSwg InRvdGFsX2Jsa3Nfd3JpdHRlbiIsCisJCQkJCSAgIElOVDhPSUQsIC0xLCAwKTsKKwlUdXBs ZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpICsraSwgInJlbF9ibGtzX3Jl YWQiLAorCQkJCQkgICBJTlQ4T0lELCAtMSwgMCk7CisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1 cGRlc2MsIChBdHRyTnVtYmVyKSArK2ksICJyZWxfYmxrc19oaXQiLAorCQkJCQkgICBJTlQ4 T0lELCAtMSwgMCk7CisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVy KSArK2ksICJwYWdlc19kZWxldGVkIiwKKwkJCQkJICAgSU5UOE9JRCwgLTEsIDApOworCVR1 cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgKytpLCAidHVwbGVzX2Rl bGV0ZWQiLAorCQkJCQkgICBJTlQ4T0lELCAtMSwgMCk7CisJVHVwbGVEZXNjSW5pdEVudHJ5 KHR1cGRlc2MsIChBdHRyTnVtYmVyKSArK2ksICJ3YWxfcmVjb3JkcyIsCisJCQkJCSAgIElO VDhPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1i ZXIpICsraSwgIndhbF9mcGkiLAorCQkJCQkgICBJTlQ4T0lELCAtMSwgMCk7CisJVHVwbGVE ZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSArK2ksICJ3YWxfYnl0ZXMiLAor CQkJCQkgICBOVU1FUklDT0lELCAtMSwgMCk7CisKKwlUdXBsZURlc2NJbml0RW50cnkodHVw ZGVzYywgKEF0dHJOdW1iZXIpICsraSwgImJsa19yZWFkX3RpbWUiLAorCQkJCQkgICBGTE9B VDhPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1i ZXIpICsraSwgImJsa193cml0ZV90aW1lIiwKKwkJCQkJICAgRkxPQVQ4T0lELCAtMSwgMCk7 CisKKwlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpICsraSwgImRl bGF5X3RpbWUiLAorCQkJCQkgICBGTE9BVDhPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NJbml0 RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpICsraSwgInRvdGFsX3RpbWUiLAorCQkJCQkg ICBGTE9BVDhPSUQsIC0xLCAwKTsKKworCUFzc2VydChpID09IFBHX1NUQVRfR0VUX1ZBQ1VV TV9JTkRFWF9TVEFUU19DT0xTKTsKKworCUJsZXNzVHVwbGVEZXNjKHR1cGRlc2MpOworCisJ dGFiZW50cnkgPSBwZ3N0YXRfZmV0Y2hfc3RhdF90YWJlbnRyeShyZWxpZCk7CisKKwlpZiAo dGFiZW50cnkgPT0gTlVMTCkKKwl7CisJCS8qIElmIHRoZSBzdWJzY3JpcHRpb24gaXMgbm90 IGZvdW5kLCBpbml0aWFsaXNlIGl0cyBzdGF0cyAqLworCQltZW1zZXQoJmFsbHplcm8sIDAs IHNpemVvZihFeHRWYWNSZXBvcnQpKTsKKwkJZXh0dmFjdXVtID0gJmFsbHplcm87CisJfQor CWVsc2UKKwl7CisJCWV4dHZhY3V1bSA9ICYodGFiZW50cnktPnZhY3V1bV9leHQpOworCX0K KworCWkgPSAwOworCisJdmFsdWVzW2krK10gPSBPYmplY3RJZEdldERhdHVtKHJlbGlkKTsK KworCXZhbHVlc1tpKytdID0gSW50NjRHZXREYXR1bShleHR2YWN1dW0tPnRvdGFsX2Jsa3Nf cmVhZCk7CisJdmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKGV4dHZhY3V1bS0+dG90YWxf Ymxrc19oaXQpOworCXZhbHVlc1tpKytdID0gSW50NjRHZXREYXR1bShleHR2YWN1dW0tPnRv dGFsX2Jsa3NfZGlydGllZCk7CisJdmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKGV4dHZh Y3V1bS0+dG90YWxfYmxrc193cml0dGVuKTsKKworCXZhbHVlc1tpKytdID0gSW50NjRHZXRE YXR1bShleHR2YWN1dW0tPmJsa3NfZmV0Y2hlZCAtCisJCQkJCQkJCQlleHR2YWN1dW0tPmJs a3NfaGl0KTsKKwl2YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0oZXh0dmFjdXVtLT5ibGtz X2hpdCk7CisKKwl2YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0oZXh0dmFjdXVtLT5pbmRl eC5wYWdlc19kZWxldGVkKTsKKwl2YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0oZXh0dmFj dXVtLT50dXBsZXNfZGVsZXRlZCk7CisKKwl2YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0o ZXh0dmFjdXVtLT53YWxfcmVjb3Jkcyk7CisJdmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVt KGV4dHZhY3V1bS0+d2FsX2ZwaSk7CisKKwkvKiBDb252ZXJ0IHRvIG51bWVyaWMsIGxpa2Ug cGdfc3RhdF9zdGF0ZW1lbnRzICovCisJc25wcmludGYoYnVmLCBzaXplb2YgYnVmLCBVSU5U NjRfRk9STUFULCBleHR2YWN1dW0tPndhbF9ieXRlcyk7CisJdmFsdWVzW2krK10gPSBEaXJl Y3RGdW5jdGlvbkNhbGwzKG51bWVyaWNfaW4sCisJCQkJCQkJCQkgIENTdHJpbmdHZXREYXR1 bShidWYpLAorCQkJCQkJCQkJICBPYmplY3RJZEdldERhdHVtKDApLAorCQkJCQkJCQkJICBJ bnQzMkdldERhdHVtKC0xKSk7CisKKwl2YWx1ZXNbaSsrXSA9IEZsb2F0OEdldERhdHVtKGV4 dHZhY3V1bS0+YmxrX3JlYWRfdGltZSk7CisJdmFsdWVzW2krK10gPSBGbG9hdDhHZXREYXR1 bShleHR2YWN1dW0tPmJsa193cml0ZV90aW1lKTsKKwl2YWx1ZXNbaSsrXSA9IEZsb2F0OEdl dERhdHVtKGV4dHZhY3V1bS0+ZGVsYXlfdGltZSk7CisJdmFsdWVzW2krK10gPSBGbG9hdDhH ZXREYXR1bShleHR2YWN1dW0tPnRvdGFsX3RpbWUpOworCisJQXNzZXJ0KGkgPT0gUEdfU1RB VF9HRVRfVkFDVVVNX0lOREVYX1NUQVRTX0NPTFMpOworCiAJLyogUmV0dXJucyB0aGUgcmVj b3JkIGFzIERhdHVtICovCiAJUEdfUkVUVVJOX0RBVFVNKEhlYXBUdXBsZUdldERhdHVtKGhl YXBfZm9ybV90dXBsZSh0dXBkZXNjLCB2YWx1ZXMsIG51bGxzKSkpOwogfQpcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv Z3VjX3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5k ZXggNmFhOThmOTkzMTcuLjQzZWRiOTE2OWQyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1 Y190YWJsZXMuYwpAQCAtMTUwMSw3ICsxNTAxLDcgQEAgc3RydWN0IGNvbmZpZ19ib29sIENv bmZpZ3VyZU5hbWVzQm9vbFtdID0KIAl9LAogCXsKIAkJeyJ0cmFja192YWN1dW1fc3RhdGlz dGljcyIsIFBHQ19TVVNFVCwgU1RBVFNfQ1VNVUxBVElWRSwKLQkJCWdldHRleHRfbm9vcCgi Q29sbGVjdHMgdmFjdXVtIHN0YXRpc3RpY3MgZm9yIHRhYmxlIHJlbGF0aW9ucy4iKSwKKwkJ CWdldHRleHRfbm9vcCgiQ29sbGVjdHMgdmFjdXVtIHN0YXRpc3RpY3MgZm9yIHJlbGF0aW9u cy4iKSwKIAkJCU5VTEwKIAkJfSwKIAkJJnBnc3RhdF90cmFja192YWN1dW1fc3RhdGlzdGlj cywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDNjYzJlZmYzNDM3Li5jNjgwNWM3 OWNhMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysg Yi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0xMjQ4Miw0ICsxMjQ4Miwx MyBAQAogICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF9yZXZfYWxsX2Zyb3plbl9wYWdlcycs IHByb3ZvbGF0aWxlID0+ICdzJywKICAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0eXBl ID0+ICdpbnQ4JywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCiAgIHByb3NyYyA9PiAncGdfc3Rh dF9nZXRfcmV2X2FsbF9mcm96ZW5fcGFnZXMnIH0sCit7IG9pZCA9PiAnODAwNCcsCisgIGRl c2NyID0+ICdwZ19zdGF0X2dldF92YWN1dW1faW5kZXhlcyByZXR1cm4gc3RhdHMgdmFsdWVz JywKKyAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfdmFjdXVtX2luZGV4ZXMnLCBwcm9yb3dz ID0+IDEwMDAsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcmV0dHlwZSA9PiAncmVjb3JkJyxw cm9pc3N0cmljdCA9PiAnZicsCisgIHByb3JldHNldCA9PiAndCcsCisgIHByb2FyZ3R5cGVz ID0+ICdvaWQnLAorICBwcm9hbGxhcmd0eXBlcyA9PiAne29pZCxvaWQsaW50OCxpbnQ4LGlu dDgsaW50OCxpbnQ4LGludDgsaW50OCxpbnQ4LGludDgsaW50OCxudW1lcmljLGZsb2F0OCxm bG9hdDgsZmxvYXQ4LGZsb2F0OH0nLAorICBwcm9hcmdtb2RlcyA9PiAne2ksbyxvLG8sbyxv LG8sbyxvLG8sbyxvLG8sbyxvLG8sb30nLAorICBwcm9hcmduYW1lcyA9PiAne3JlbG9pZCxy ZWxpZCx0b3RhbF9ibGtzX3JlYWQsdG90YWxfYmxrc19oaXQsdG90YWxfYmxrc19kaXJ0aWVk LHRvdGFsX2Jsa3Nfd3JpdHRlbixyZWxfYmxrc19yZWFkLHJlbF9ibGtzX2hpdCxwYWdlc19k ZWxldGVkLHR1cGxlc19kZWxldGVkLHdhbF9yZWNvcmRzLHdhbF9mcGksd2FsX2J5dGVzLGJs a19yZWFkX3RpbWUsYmxrX3dyaXRlX3RpbWUsZGVsYXlfdGltZSx0b3RhbF90aW1lfScsCisg IHByb3NyYyA9PiAncGdfc3RhdF9nZXRfdmFjdXVtX2luZGV4ZXMnIH0KIF0KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5oIGIvc3JjL2luY2x1ZGUvY29tbWFu ZHMvdmFjdXVtLmgKaW5kZXggYTVmZTYyMmQ5MzIuLjk1YTYwNTM0YzEyIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaAorKysgYi9zcmMvaW5jbHVkZS9jb21t YW5kcy92YWN1dW0uaApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvYnVm LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sb2NrLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsY2Fj aGUuaCIKKyNpbmNsdWRlICJwZ3N0YXQuaCIKIAogLyoKICAqIEZsYWdzIGZvciBhbXBhcmFs bGVsdmFjdXVtb3B0aW9ucyB0byBjb250cm9sIHRoZSBwYXJ0aWNpcGF0aW9uIG9mIGJ1bGtk ZWxldGUKQEAgLTI5NSw2ICsyOTYsMjYgQEAgdHlwZWRlZiBzdHJ1Y3QgVmFjRGVhZEl0ZW1z SW5mbwogCWludDY0CQludW1faXRlbXM7CQkvKiBjdXJyZW50ICMgb2YgZW50cmllcyAqLwog fSBWYWNEZWFkSXRlbXNJbmZvOwogCisvKgorICogQ291bnRlcnMgYW5kIHVzYWdlIGRhdGEg Zm9yIGV4dGVuZGVkIHN0YXRzIHRyYWNraW5nLgorICovCit0eXBlZGVmIHN0cnVjdCBMVkV4 dFN0YXRDb3VudGVycworeworCVRpbWVzdGFtcFR6IHN0YXJ0dGltZTsKKwlXYWxVc2FnZQl3 YWx1c2FnZTsKKwlCdWZmZXJVc2FnZSBidWZ1c2FnZTsKKwlkb3VibGUJCVZhY3V1bURlbGF5 VGltZTsKKwlQZ1N0YXRfQ291bnRlciBibG9ja3NfZmV0Y2hlZDsKKwlQZ1N0YXRfQ291bnRl ciBibG9ja3NfaGl0OworfSBMVkV4dFN0YXRDb3VudGVyczsKKwordHlwZWRlZiBzdHJ1Y3Qg TFZFeHRTdGF0Q291bnRlcnNJZHgKK3sKKwlMVkV4dFN0YXRDb3VudGVycyBjb21tb247CisJ aW50NjQJCXBhZ2VzX2RlbGV0ZWQ7CisJaW50NjQJCXR1cGxlc19yZW1vdmVkOworfSBMVkV4 dFN0YXRDb3VudGVyc0lkeDsKKwogLyogR1VDIHBhcmFtZXRlcnMgKi8KIGV4dGVybiBQR0RM TElNUE9SVCBpbnQgZGVmYXVsdF9zdGF0aXN0aWNzX3RhcmdldDsJLyogUEdETExJTVBPUlQg Zm9yIFBvc3RHSVMgKi8KIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgdmFjdXVtX2ZyZWV6ZV9t aW5fYWdlOwpAQCAtNDA2LDQgKzQyNyw4IEBAIGV4dGVybiBkb3VibGUgYW5sX3JhbmRvbV9m cmFjdCh2b2lkKTsKIGV4dGVybiBkb3VibGUgYW5sX2luaXRfc2VsZWN0aW9uX3N0YXRlKGlu dCBuKTsKIGV4dGVybiBkb3VibGUgYW5sX2dldF9uZXh0X1MoZG91YmxlIHQsIGludCBuLCBk b3VibGUgKnN0YXRlcHRyKTsKIAorZXh0ZXJuIHZvaWQgZXh0dmFjX3N0YXRzX3N0YXJ0X2lk eChSZWxhdGlvbiByZWwsIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RhdHMsCisJCQkJCSAg IExWRXh0U3RhdENvdW50ZXJzSWR4ICpjb3VudGVycyk7CitleHRlcm4gdm9pZCBleHR2YWNf c3RhdHNfZW5kX2lkeChSZWxhdGlvbiByZWwsIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3Rh dHMsCisJCQkJCSBMVkV4dFN0YXRDb3VudGVyc0lkeCAqY291bnRlcnMsIEV4dFZhY1JlcG9y dCAqcmVwb3J0KTsKICNlbmRpZgkJCQkJCQkvKiBWQUNVVU1fSCAqLwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcGdzdGF0LmggYi9zcmMvaW5jbHVkZS9wZ3N0YXQuaAppbmRleCBkMzY5 Mjg0MTAxYS4uMTE1Y2I3MzYzMDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Bnc3RhdC5o CisrKyBiL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCkBAIC0xMTIsMTEgKzExMiwxOSBAQCB0eXBl ZGVmIHN0cnVjdCBQZ1N0YXRfQmFja2VuZFN1YkVudHJ5CiAJUGdTdGF0X0NvdW50ZXIgY29u ZmxpY3RfY291bnRbQ09ORkxJQ1RfTlVNX1RZUEVTXTsKIH0gUGdTdGF0X0JhY2tlbmRTdWJF bnRyeTsKIAorLyogVHlwZSBvZiBFeHRWYWNSZXBvcnQgKi8KK3R5cGVkZWYgZW51bSBFeHRW YWNSZXBvcnRUeXBlCit7CisJUEdTVEFUX0VYVFZBQ19JTlZBTElEID0gMCwKKwlQR1NUQVRf RVhUVkFDX1RBQkxFID0gMSwKKwlQR1NUQVRfRVhUVkFDX0lOREVYID0gMgorfSBFeHRWYWNS ZXBvcnRUeXBlOworCiAvKiAtLS0tLS0tLS0tCiAgKgogICogRXh0VmFjUmVwb3J0CiAgKgot ICogQWRkaXRpb25hbCBzdGF0aXN0aWNzIG9mIHZhY3V1bSBwcm9jZXNzaW5nIG92ZXIgYSBo ZWFwIHJlbGF0aW9uLgorICogQWRkaXRpb25hbCBzdGF0aXN0aWNzIG9mIHZhY3V1bSBwcm9j ZXNzaW5nIG92ZXIgYSByZWxhdGlvbi4KICAqIHBhZ2VzX3JlbW92ZWQgaXMgdGhlIGFtb3Vu dCBieSB3aGljaCB0aGUgcGh5c2ljYWxseSBzaHJhbmssCiAgKiBpZiBhbnkgKGllIHRoZSBj aGFuZ2UgaW4gaXRzIHRvdGFsIHNpemUgb24gZGlzaykKICAqIHBhZ2VzX2RlbGV0ZWQgcmVm ZXIgdG8gZnJlZSBzcGFjZSB3aXRoaW4gdGhlIGluZGV4IGZpbGUKQEAgLTE0NSwxOCArMTUz LDQ0IEBAIHR5cGVkZWYgc3RydWN0IEV4dFZhY1JlcG9ydAogCWRvdWJsZQkJZGVsYXlfdGlt ZTsJCS8qIGhvdyBsb25nIHZhY3V1bSBzbGVwdCBpbiB2YWN1dW0gZGVsYXkgcG9pbnQsIGlu IG1zZWMgKi8KIAlkb3VibGUJCXRvdGFsX3RpbWU7CQkvKiB0b3RhbCB0aW1lIG9mIGEgdmFj dXVtIG9wZXJhdGlvbiwgaW4gbXNlYyAqLwogCi0JaW50NjQJCXBhZ2VzX3NjYW5uZWQ7CQkv KiBoZWFwIHBhZ2VzIGV4YW1pbmVkIChub3Qgc2tpcHBlZCBieSBWTSkgKi8KLQlpbnQ2NAkJ cGFnZXNfcmVtb3ZlZDsJCS8qIGhlYXAgcGFnZXMgcmVtb3ZlZCBieSB2YWN1dW0gInRydW5j YXRpb24iICovCi0JaW50NjQJCXZtX25ld19mcm96ZW5fcGFnZXM7CQkvKiBwYWdlcyBtYXJr ZWQgaW4gVk0gYXMgZnJvemVuICovCi0JaW50NjQJCXZtX25ld192aXNpYmxlX3BhZ2VzOwkv KiBwYWdlcyBtYXJrZWQgaW4gVk0gYXMgYWxsLXZpc2libGUgKi8KLQlpbnQ2NAkJdm1fbmV3 X3Zpc2libGVfZnJvemVuX3BhZ2VzOwkvKiBwYWdlcyBtYXJrZWQgaW4gVk0gYXMgYWxsLXZp c2libGUgYW5kIGZyb3plbiAqLwotCWludDY0CQltaXNzZWRfZGVhZF90dXBsZXM7CQkvKiB0 dXBsZXMgbm90IHBydW5lZCBieSB2YWN1dW0gZHVlIHRvIGZhaWx1cmUgdG8gZ2V0IGEgY2xl YW51cCBsb2NrICovCi0JaW50NjQJCW1pc3NlZF9kZWFkX3BhZ2VzOwkJLyogcGFnZXMgd2l0 aCBtaXNzZWQgZGVhZCB0dXBsZXMgKi8KIAlpbnQ2NAkJdHVwbGVzX2RlbGV0ZWQ7CQkvKiB0 dXBsZXMgZGVsZXRlZCBieSB2YWN1dW0gKi8KLQlpbnQ2NAkJdHVwbGVzX2Zyb3plbjsJCS8q IHR1cGxlcyBmcm96ZW4gdXAgYnkgdmFjdXVtICovCi0JaW50NjQJCXJlY2VudGx5X2RlYWRf dHVwbGVzOwkvKiBkZWxldGVkIHR1cGxlcyB0aGF0IGFyZSBzdGlsbCB2aXNpYmxlIHRvIHNv bWUgdHJhbnNhY3Rpb24gKi8KLQlpbnQ2NAkJaW5kZXhfdmFjdXVtX2NvdW50OwkvKiB0aGUg bnVtYmVyIG9mIGluZGV4IHZhY3V1bWluZ3MgKi8KLQlpbnQzMgkJd3JhcGFyb3VuZF9mYWls c2FmZV9jb3VudDsJLyogdGhlIG51bWJlciBvZiB0aW1lcyB0byBwcmV2ZW50IHdvcmthcm91 bmQgcHJvYmxlbSAqLworCisJRXh0VmFjUmVwb3J0VHlwZSB0eXBlOwkJLyogaGVhcCwgaW5k ZXgsIGV0Yy4gKi8KKworCS8qIC0tLS0tLS0tLS0KKwkgKgorCSAqIFRoZXJlIGFyZSBzZXBh cmF0ZSBtZXRyaWNzIG9mIHN0YXRpc3RpYyBmb3IgdGFibGVzIGFuZCBpbmRleGVzLAorCSAq IHdoaWNoIGNvbGxlY3QgZHVyaW5nIHZhY3V1bS4KKwkgKiBUaGUgdW5pb24gb3BlcmF0b3Ig YWxsb3dzIHRvIGNvbWJpbmUgdGhlc2Ugc3RhdGlzdGljcworCSAqIHNvIHRoYXQgZWFjaCBt ZXRyaWMgaXMgYXNzaWduZWQgdG8gYSBzcGVjaWZpYyBjbGFzcyBvZiBjb2xsZWN0ZWQgc3Rh dGlzdGljcy4KKwkgKiBTdWNoIGEgY29tYmluZWQgc3RydWN0dXJlIHdhcyBjYWxsZWQgcGVy X3R5cGVfc3RhdHMuCisJICogVGhlIG5hbWUgb2YgdGhlIHN0cnVjdHVyZSBpdHNlbGYgaXMg bm90IHVzZWQgYW55d2hlcmUsCisJICogaXQgZXhpc3RzIG9ubHkgZm9yIHVuZGVyc3RhbmRp bmcgdGhlIGNvZGUuCisJICogLS0tLS0tLS0tLQorCSovCisJdW5pb24KKwl7CisJCXN0cnVj dAorCQl7CisJCQlpbnQ2NAkJcGFnZXNfc2Nhbm5lZDsJCS8qIGhlYXAgcGFnZXMgZXhhbWlu ZWQgKG5vdCBza2lwcGVkIGJ5IFZNKSAqLworCQkJaW50NjQJCXBhZ2VzX3JlbW92ZWQ7CQkv KiBoZWFwIHBhZ2VzIHJlbW92ZWQgYnkgdmFjdXVtICJ0cnVuY2F0aW9uIiAqLworCQkJaW50 NjQJCXBhZ2VzX2Zyb3plbjsJCS8qIHBhZ2VzIG1hcmtlZCBpbiBWTSBhcyBmcm96ZW4gKi8K KwkJCWludDY0CQlwYWdlc19hbGxfdmlzaWJsZTsJLyogcGFnZXMgbWFya2VkIGluIFZNIGFz IGFsbC12aXNpYmxlICovCisJCQlpbnQ2NAkJdHVwbGVzX2Zyb3plbjsJCS8qIHR1cGxlcyBm cm96ZW4gdXAgYnkgdmFjdXVtICovCisJCQlpbnQ2NAkJcmVjZW50bHlfZGVhZF90dXBsZXM7 CS8qIGRlbGV0ZWQgdHVwbGVzIHRoYXQgYXJlIHN0aWxsIHZpc2libGUgdG8gc29tZSB0cmFu c2FjdGlvbiAqLworCQkJaW50NjQJCXZtX25ld19mcm96ZW5fcGFnZXM7CQkvKiBwYWdlcyBt YXJrZWQgaW4gVk0gYXMgZnJvemVuICovCisJCQlpbnQ2NAkJdm1fbmV3X3Zpc2libGVfcGFn ZXM7CS8qIHBhZ2VzIG1hcmtlZCBpbiBWTSBhcyBhbGwtdmlzaWJsZSAqLworCQkJaW50NjQJ CXZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlczsJLyogcGFnZXMgbWFya2VkIGluIFZNIGFz IGFsbC12aXNpYmxlIGFuZCBmcm96ZW4gKi8KKwkJCWludDY0CQltaXNzZWRfZGVhZF90dXBs ZXM7CQkvKiB0dXBsZXMgbm90IHBydW5lZCBieSB2YWN1dW0gZHVlIHRvIGZhaWx1cmUgdG8g Z2V0IGEgY2xlYW51cCBsb2NrICovCisJCQlpbnQ2NAkJbWlzc2VkX2RlYWRfcGFnZXM7CQkv KiBwYWdlcyB3aXRoIG1pc3NlZCBkZWFkIHR1cGxlcyAqLworCQkJaW50NjQJCWluZGV4X3Zh Y3V1bV9jb3VudDsJLyogbnVtYmVyIG9mIGluZGV4IHZhY3V1bWluZ3MgKi8KKwkJCWludDMy CQl3cmFwYXJvdW5kX2ZhaWxzYWZlX2NvdW50OwkvKiB0aGUgbnVtYmVyIG9mIHRpbWVzIHRv IHByZXZlbnQgd29ya2Fyb3VuZCBwcm9ibGVtICovCisJCX0JCQl0YWJsZTsKKwkJc3RydWN0 CisJCXsKKwkJCWludDY0CQlwYWdlc19kZWxldGVkOwkJLyogbnVtYmVyIG9mIHBhZ2VzIGRl bGV0ZWQgYnkgdmFjdXVtICovCisJCX0JCQlpbmRleDsKKwl9IC8qIHBlcl90eXBlX3N0YXRz ICovOwogfSBFeHRWYWNSZXBvcnQ7CiAKIC8qIC0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC92YWN1dW0tZXh0ZW5kaW5nLWluLXJlcGV0YWJs ZS1yZWFkLm91dCBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC92YWN1dW0tZXh0ZW5k aW5nLWluLXJlcGV0YWJsZS1yZWFkLm91dAppbmRleCA4N2Y3ZTQwYjRhNi4uNmQ5NjA0MjM5 MTIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC92YWN1dW0tZXh0 ZW5kaW5nLWluLXJlcGV0YWJsZS1yZWFkLm91dAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24v ZXhwZWN0ZWQvdmFjdXVtLWV4dGVuZGluZy1pbi1yZXBldGFibGUtcmVhZC5vdXQKQEAgLTM0 LDcgKzM0LDcgQEAgc3RlcCBzMl9wcmludF92YWN1dW1fc3RhdHNfdGFibGU6CiAKIHJlbG5h bWUgICAgICAgICAgICAgICAgICAgfHR1cGxlc19kZWxldGVkfHJlY2VudGx5X2RlYWRfdHVw bGVzfG1pc3NlZF9kZWFkX3R1cGxlc3xtaXNzZWRfZGVhZF9wYWdlc3x0dXBsZXNfZnJvemVu CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLQotdGVzdF92YWN1dW1fc3RhdF9pc29sYXRpb258ICAgICAgICAgICAgIDB8ICAg ICAgICAgICAgICAgICAxMDB8ICAgICAgICAgICAgICAgICAwfCAgICAgICAgICAgICAgICAw fCAgICAgICAgICAgIDAKK3Rlc3RfdmFjdXVtX3N0YXRfaXNvbGF0aW9ufCAgICAgICAgICAg ICAwfCAgICAgICAgICAgICAgICAgNjAwfCAgICAgICAgICAgICAgICAgMHwgICAgICAgICAg ICAgICAgMHwgICAgICAgICAgICAwCiAoMSByb3cpCiAKIHN0ZXAgczFfY29tbWl0OiBDT01N SVQ7CkBAIC00OCw2ICs0OCw2IEBAIHN0ZXAgczJfcHJpbnRfdmFjdXVtX3N0YXRzX3RhYmxl OgogCiByZWxuYW1lICAgICAgICAgICAgICAgICAgIHx0dXBsZXNfZGVsZXRlZHxyZWNlbnRs eV9kZWFkX3R1cGxlc3xtaXNzZWRfZGVhZF90dXBsZXN8bWlzc2VkX2RlYWRfcGFnZXN8dHVw bGVzX2Zyb3plbgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0KLXRlc3RfdmFjdXVtX3N0YXRfaXNvbGF0aW9ufCAgICAgICAg ICAgMTAwfCAgICAgICAgICAgICAgICAgMTAwfCAgICAgICAgICAgICAgICAgMHwgICAgICAg ICAgICAgICAgMHwgICAgICAgICAgMTAxCit0ZXN0X3ZhY3V1bV9zdGF0X2lzb2xhdGlvbnwg ICAgICAgICAgIDMwMHwgICAgICAgICAgICAgICAgIDYwMHwgICAgICAgICAgICAgICAgIDB8 ICAgICAgICAgICAgICAgIDB8ICAgICAgICAgIDMwMwogKDEgcm93KQogCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcnVsZXMub3V0CmluZGV4IDdjYzk0ZmJmMjc1Li43MDllMWQ2YTIyYiAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKQEAgLTIyNjEsNiArMjI2MSwy OCBAQCBwZ19zdGF0X3VzZXJfdGFibGVzfCBTRUxFQ1QgcmVsaWQsCiAgICAgcmV2X2FsbF92 aXNpYmxlX3BhZ2VzCiAgICBGUk9NIHBnX3N0YXRfYWxsX3RhYmxlcwogICBXSEVSRSAoKHNj aGVtYW5hbWUgPD4gQUxMIChBUlJBWVsncGdfY2F0YWxvZyc6Om5hbWUsICdpbmZvcm1hdGlv bl9zY2hlbWEnOjpuYW1lXSkpIEFORCAoc2NoZW1hbmFtZSAhfiAnXnBnX3RvYXN0Jzo6dGV4 dCkpOworcGdfc3RhdF92YWN1dW1faW5kZXhlc3wgU0VMRUNUIHJlbC5vaWQgQVMgcmVsaWQs CisgICAgbnMubnNwbmFtZSBBUyBzY2hlbWFuYW1lLAorICAgIHJlbC5yZWxuYW1lLAorICAg IHN0YXRzLnRvdGFsX2Jsa3NfcmVhZCwKKyAgICBzdGF0cy50b3RhbF9ibGtzX2hpdCwKKyAg ICBzdGF0cy50b3RhbF9ibGtzX2RpcnRpZWQsCisgICAgc3RhdHMudG90YWxfYmxrc193cml0 dGVuLAorICAgIHN0YXRzLnJlbF9ibGtzX3JlYWQsCisgICAgc3RhdHMucmVsX2Jsa3NfaGl0 LAorICAgIHN0YXRzLnBhZ2VzX2RlbGV0ZWQsCisgICAgc3RhdHMudHVwbGVzX2RlbGV0ZWQs CisgICAgc3RhdHMud2FsX3JlY29yZHMsCisgICAgc3RhdHMud2FsX2ZwaSwKKyAgICBzdGF0 cy53YWxfYnl0ZXMsCisgICAgc3RhdHMuYmxrX3JlYWRfdGltZSwKKyAgICBzdGF0cy5ibGtf d3JpdGVfdGltZSwKKyAgICBzdGF0cy5kZWxheV90aW1lLAorICAgIHN0YXRzLnRvdGFsX3Rp bWUKKyAgIEZST00gKHBnX2NsYXNzIHJlbAorICAgICBKT0lOIHBnX25hbWVzcGFjZSBucyBP TiAoKG5zLm9pZCA9IHJlbC5yZWxuYW1lc3BhY2UpKSksCisgICAgTEFURVJBTCBwZ19zdGF0 X2dldF92YWN1dW1faW5kZXhlcyhyZWwub2lkKSBzdGF0cyhyZWxpZCwgdG90YWxfYmxrc19y ZWFkLCB0b3RhbF9ibGtzX2hpdCwgdG90YWxfYmxrc19kaXJ0aWVkLCB0b3RhbF9ibGtzX3dy aXR0ZW4sIHJlbF9ibGtzX3JlYWQsIHJlbF9ibGtzX2hpdCwgcGFnZXNfZGVsZXRlZCwgdHVw bGVzX2RlbGV0ZWQsIHdhbF9yZWNvcmRzLCB3YWxfZnBpLCB3YWxfYnl0ZXMsIGJsa19yZWFk X3RpbWUsIGJsa193cml0ZV90aW1lLCBkZWxheV90aW1lLCB0b3RhbF90aW1lKQorICBXSEVS RSAocmVsLnJlbGtpbmQgPSAnaSc6OiJjaGFyIik7CiBwZ19zdGF0X3ZhY3V1bV90YWJsZXN8 IFNFTEVDVCBucy5uc3BuYW1lIEFTIHNjaGVtYW5hbWUsCiAgICAgcmVsLnJlbG5hbWUsCiAg ICAgc3RhdHMucmVsaWQsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3ZhY3V1bV9pbmRleF9zdGF0aXN0aWNzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvdmFjdXVtX2luZGV4X3N0YXRpc3RpY3Mub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi5lMDBhMGZjNjgzYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdmFjdXVtX2luZGV4X3N0YXRpc3RpY3Mub3V0CkBAIC0w LDAgKzEsMTgzIEBACistLQorLS0gVGVzdCBjdW11bGF0aXZlIHZhY3V1bSBzdGF0cyBzeXN0 ZW0KKy0tCistLSBDaGVjayB0aGUgd2FsbCBzdGF0aXN0aWNzIGNvbGxlY3RlZCBkdXJpbmcg dmFjdXVtIG9wZXJhdGlvbjoKKy0tIG51bWJlciBvZiBmcm96ZW4gYW5kIHZpc2libGUgcGFn ZXMgc2V0IGJ5IHZhY3V1bTsKKy0tIG51bWJlciBvZiBmcm96ZW4gYW5kIHZpc2libGUgcGFn ZXMgcmVtb3ZlZCBieSBiYWNrZW5kLgorLS0gU3RhdGlzdGljIHdhbF9mcGkgaXMgbm90IGRp c3BsYXllZCBpbiB0aGlzIHRlc3QgYmVjYXVzZSBpdHMgYmVoYXZpb3IgaXMgdW5zdGFibGUu CistLQorLS0gY29uZGl0aW8gc2luZSBxdWEgbm9uCitTSE9XIHRyYWNrX2NvdW50czsgIC0t IG11c3QgYmUgb24KKyB0cmFja19jb3VudHMgCistLS0tLS0tLS0tLS0tLQorIG9uCisoMSBy b3cpCisKK1xzZXQgc2FtcGxlX3NpemUgMTAwMDAKKy0tIG5vdCBlbmFibGVkIGJ5IGRlZmF1 bHQsIGJ1dCB3ZSB3YW50IHRvIHRlc3QgaXQuLi4KK1NFVCB0cmFja19mdW5jdGlvbnMgVE8g J2FsbCc7CistLSBUZXN0IHRoYXQgdmFjdXVtIHN0YXRpc3RpY3Mgd2lsbCBiZSBlbXB0eSB3 aGVuIHBhcmFtZXRlciBpcyBvZmYuCitTRVQgdHJhY2tfdmFjdXVtX3N0YXRpc3RpY3MgVE8g J29mZic7CitDUkVBVEUgVEFCTEUgdmVzdGF0ICh4IGludCkgV0lUSCAoYXV0b3ZhY3V1bV9l bmFibGVkID0gb2ZmLCBmaWxsZmFjdG9yID0gMTApOworSU5TRVJUIElOVE8gdmVzdGF0IFNF TEVDVCB4IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsOnNhbXBsZV9zaXplKSBhcyB4OworQU5B TFlaRSB2ZXN0YXQ7CitERUxFVEUgRlJPTSB2ZXN0YXQgV0hFUkUgeCAlIDIgPSAwOworVkFD VVVNIChQQVJBTExFTCAwLCBCVUZGRVJfVVNBR0VfTElNSVQgMTI4KSB2ZXN0YXQ7CistLSBN dXN0IGJlIGVtcHR5LgorU0VMRUNUICoKK0ZST00gcGdfc3RhdF92YWN1dW1faW5kZXhlcyB2 dAorV0hFUkUgdnQucmVsbmFtZSA9ICd2ZXN0YXQnOworIHJlbGlkIHwgc2NoZW1hbmFtZSB8 IHJlbG5hbWUgfCB0b3RhbF9ibGtzX3JlYWQgfCB0b3RhbF9ibGtzX2hpdCB8IHRvdGFsX2Js a3NfZGlydGllZCB8IHRvdGFsX2Jsa3Nfd3JpdHRlbiB8IHJlbF9ibGtzX3JlYWQgfCByZWxf Ymxrc19oaXQgfCBwYWdlc19kZWxldGVkIHwgdHVwbGVzX2RlbGV0ZWQgfCB3YWxfcmVjb3Jk cyB8IHdhbF9mcGkgfCB3YWxfYnl0ZXMgfCBibGtfcmVhZF90aW1lIHwgYmxrX3dyaXRlX3Rp bWUgfCBkZWxheV90aW1lIHwgdG90YWxfdGltZSAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisoMCByb3dzKQorCitSRVNFVCB0cmFja192 YWN1dW1fc3RhdGlzdGljczsKK0RST1AgVEFCTEUgdmVzdGF0IENBU0NBREU7CitTSE9XIHRy YWNrX3ZhY3V1bV9zdGF0aXN0aWNzOyAgLS0gbXVzdCBiZSBvbgorIHRyYWNrX3ZhY3V1bV9z dGF0aXN0aWNzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIG9uCisoMSByb3cpCisK Ky0tIGVuc3VyZSBwZW5kaW5nIHN0YXRzIGFyZSBmbHVzaGVkCitTRUxFQ1QgcGdfc3RhdF9m b3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworXHNldCBzYW1wbGVfc2l6ZSAx MDAwMAorU0VUIHZhY3V1bV9mcmVlemVfbWluX2FnZSA9IDA7CitTRVQgdmFjdXVtX2ZyZWV6 ZV90YWJsZV9hZ2UgPSAwOworLS1TRVQgc3RhdHNfZmV0Y2hfY29uc2lzdGVuY3kgPSBzbmFw c2hvdDsKK0NSRUFURSBUQUJMRSB2ZXN0YXQgKHggaW50IHByaW1hcnkga2V5KSBXSVRIIChh dXRvdmFjdXVtX2VuYWJsZWQgPSBvZmYsIGZpbGxmYWN0b3IgPSAxMCk7CitJTlNFUlQgSU5U TyB2ZXN0YXQgU0VMRUNUIHggRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSw6c2FtcGxlX3NpemUp IGFzIHg7CitBTkFMWVpFIHZlc3RhdDsKK1NFTEVDVCBvaWQgQVMgaW9pZCBmcm9tIHBnX2Ns YXNzIHdoZXJlIHJlbG5hbWUgPSAndmVzdGF0X3BrZXknIFxnc2V0CitERUxFVEUgRlJPTSB2 ZXN0YXQgV0hFUkUgeCAlIDIgPSAwOworLS0gQmVmb3JlIHRoZSBmaXJzdCB2YWN1dW0gZXhl Y3V0aW9uIGV4dGVuZGVkIHN0YXRzIHZpZXcgaXMgZW1wdHkuCitTRUxFQ1QgdnQucmVsbmFt ZSxyZWxwYWdlcyxwYWdlc19kZWxldGVkLHR1cGxlc19kZWxldGVkCitGUk9NIHBnX3N0YXRf dmFjdXVtX2luZGV4ZXMgdnQsIHBnX2NsYXNzIGMKK1dIRVJFIHZ0LnJlbG5hbWUgPSAndmVz dGF0X3BrZXknIEFORCB2dC5yZWxpZCA9IGMub2lkOworICAgcmVsbmFtZSAgIHwgcmVscGFn ZXMgfCBwYWdlc19kZWxldGVkIHwgdHVwbGVzX2RlbGV0ZWQgCistLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0KKyB2ZXN0YXRfcGtl eSB8ICAgICAgIDMwIHwgICAgICAgICAgICAgMCB8ICAgICAgICAgICAgICAwCisoMSByb3cp CisKK1NFTEVDVCByZWxwYWdlcyBBUyBpcnAKK0ZST00gcGdfY2xhc3MgYworV0hFUkUgcmVs bmFtZSA9ICd2ZXN0YXRfcGtleScgXGdzZXQKK1ZBQ1VVTSAoUEFSQUxMRUwgMCwgQlVGRkVS X1VTQUdFX0xJTUlUIDEyOCwgSU5ERVhfQ0xFQU5VUCBPTikgdmVzdGF0OworLS0gaXQgaXMg bmVjZXNzYXJ5IHRvIGNoZWNrIHRoZSB3YWwgc3RhdGlzdGljcworQ0hFQ0tQT0lOVDsKKy0t IFRoZSB0YWJsZSBhbmQgaW5kZXggZXh0ZW5kZWQgdmFjdXVtIHN0YXRpc3RpY3Mgc2hvdWxk IHNob3cgdXMgdGhhdAorLS0gdmFjdXVtIGZyb3plZCBwYWdlcyBhbmQgY2xlYW4gdXAgcGFn ZXMsIGJ1dCBwYWdlc19yZW1vdmVkIHN0YXllZCB0aGUgc2FtZQorLS0gYmVjYXVzZSBvZiBu b3QgZnVsbCB0YWJsZSBoYXZlIGNsZWFuZWQgdXAKK1NFTEVDVCB2dC5yZWxuYW1lLHJlbHBh Z2VzLTppcnAgPSAwIEFTIHJlbHBhZ2VzLHBhZ2VzX2RlbGV0ZWQgPSAwIEFTIHBhZ2VzX2Rl bGV0ZWQsdHVwbGVzX2RlbGV0ZWQgPiAwIEFTIHR1cGxlc19kZWxldGVkCitGUk9NIHBnX3N0 YXRfdmFjdXVtX2luZGV4ZXMgdnQsIHBnX2NsYXNzIGMKK1dIRVJFIHZ0LnJlbG5hbWUgPSAn dmVzdGF0X3BrZXknIEFORCB2dC5yZWxpZCA9IGMub2lkOworICAgcmVsbmFtZSAgIHwgcmVs cGFnZXMgfCBwYWdlc19kZWxldGVkIHwgdHVwbGVzX2RlbGV0ZWQgCistLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0KKyB2ZXN0YXRf cGtleSB8IHQgICAgICAgIHwgdCAgICAgICAgICAgICB8IHQKKygxIHJvdykKKworU0VMRUNU IHZ0LnJlbG5hbWUscmVscGFnZXMgQVMgaXJwLHBhZ2VzX2RlbGV0ZWQgQVMgaXBkLHR1cGxl c19kZWxldGVkIEFTIGl0ZAorRlJPTSBwZ19zdGF0X3ZhY3V1bV9pbmRleGVzIHZ0LCBwZ19j bGFzcyBjCitXSEVSRSB2dC5yZWxuYW1lID0gJ3Zlc3RhdF9wa2V5JyBBTkQgdnQucmVsaWQg PSBjLm9pZCBcZ3NldAorLS0gU3RvcmUgV0FMIGFkdmFuY2VzIGludG8gdmFyaWFibGVzCitT RUxFQ1Qgd2FsX3JlY29yZHMgQVMgaXdyLHdhbF9ieXRlcyBBUyBpd2Isd2FsX2ZwaSBBUyBp ZnBpIEZST00gcGdfc3RhdF92YWN1dW1faW5kZXhlcyBXSEVSRSByZWxuYW1lID0gJ3Zlc3Rh dF9wa2V5JyBcZ3NldAorLS0gTG9vayBpbnRvIFdBTCByZWNvcmRzIGRlbHRhcy4KK1NFTEVD VCB3YWxfcmVjb3JkcyA+IDAgQVMgZGlXUiwgd2FsX2J5dGVzID4gMCBBUyBkaVdCCitGUk9N IHBnX3N0YXRfdmFjdXVtX2luZGV4ZXMgV0hFUkUgcmVsbmFtZSA9ICd2ZXN0YXRfcGtleSc7 CisgZGl3ciB8IGRpd2IgCistLS0tLS0rLS0tLS0tCisgdCAgICB8IHQKKygxIHJvdykKKwor REVMRVRFIEZST00gdmVzdGF0OzsKK1ZBQ1VVTSAoUEFSQUxMRUwgMCwgQlVGRkVSX1VTQUdF X0xJTUlUIDEyOCwgSU5ERVhfQ0xFQU5VUCBPTikgdmVzdGF0OworLS0gaXQgaXMgbmVjZXNz YXJ5IHRvIGNoZWNrIHRoZSB3YWwgc3RhdGlzdGljcworQ0hFQ0tQT0lOVDsKKy0tIHBhZ2Vz X3JlbW92ZWQgbXVzdCBiZSBpbmNyZWFzZWQKK1NFTEVDVCB2dC5yZWxuYW1lLHJlbHBhZ2Vz LTppcnAgPSAwIEFTIHJlbHBhZ2VzLHBhZ2VzX2RlbGV0ZWQtOmlwZCA+IDAgQVMgcGFnZXNf ZGVsZXRlZCx0dXBsZXNfZGVsZXRlZC06aXRkID4gMCBBUyB0dXBsZXNfZGVsZXRlZAorRlJP TSBwZ19zdGF0X3ZhY3V1bV9pbmRleGVzIHZ0LCBwZ19jbGFzcyBjCitXSEVSRSB2dC5yZWxu YW1lID0gJ3Zlc3RhdF9wa2V5JyBBTkQgdnQucmVsaWQgPSBjLm9pZDsKKyAgIHJlbG5hbWUg ICB8IHJlbHBhZ2VzIHwgcGFnZXNfZGVsZXRlZCB8IHR1cGxlc19kZWxldGVkIAorLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tCisg dmVzdGF0X3BrZXkgfCB0ICAgICAgICB8IHQgICAgICAgICAgICAgfCB0CisoMSByb3cpCisK K1NFTEVDVCB2dC5yZWxuYW1lLHJlbHBhZ2VzIEFTIGlycCxwYWdlc19kZWxldGVkIEFTIGlw ZCx0dXBsZXNfZGVsZXRlZCBBUyBpdGQKK0ZST00gcGdfc3RhdF92YWN1dW1faW5kZXhlcyB2 dCwgcGdfY2xhc3MgYworV0hFUkUgdnQucmVsbmFtZSA9ICd2ZXN0YXRfcGtleScgQU5EIHZ0 LnJlbGlkID0gYy5vaWQgXGdzZXQKKy0tIFN0b3JlIFdBTCBhZHZhbmNlcyBpbnRvIHZhcmlh YmxlcworU0VMRUNUIHdhbF9yZWNvcmRzLTppd3IgQVMgZGl3ciwgd2FsX2J5dGVzLTppd2Ig QVMgZGl3Yiwgd2FsX2ZwaS06aWZwaSBBUyBkaWZwaQorRlJPTSBwZ19zdGF0X3ZhY3V1bV9p bmRleGVzIFdIRVJFIHJlbG5hbWUgPSAndmVzdGF0X3BrZXknIFxnc2V0CistLSBXQUwgYWR2 YW5jZSBzaG91bGQgYmUgZGV0ZWN0ZWQuCitTRUxFQ1QgOmRpd3IgPiAwIEFTIGRpV1IsIDpk aXdiID4gMCBBUyBkaVdCOworIGRpd3IgfCBkaXdiIAorLS0tLS0tKy0tLS0tLQorIHQgICAg fCB0CisoMSByb3cpCisKKy0tIFN0b3JlIFdBTCBhZHZhbmNlcyBpbnRvIHZhcmlhYmxlcwor U0VMRUNUIHdhbF9yZWNvcmRzIEFTIGl3cix3YWxfYnl0ZXMgQVMgaXdiLHdhbF9mcGkgQVMg aWZwaSBGUk9NIHBnX3N0YXRfdmFjdXVtX2luZGV4ZXMgV0hFUkUgcmVsbmFtZSA9ICd2ZXN0 YXRfcGtleScgXGdzZXQKK0lOU0VSVCBJTlRPIHZlc3RhdCBTRUxFQ1QgeCBGUk9NIGdlbmVy YXRlX3NlcmllcygxLDpzYW1wbGVfc2l6ZSkgYXMgeDsKK0RFTEVURSBGUk9NIHZlc3RhdCBX SEVSRSB4ICUgMiA9IDA7CistLSBWQUNVVU0gRlVMTCBkb2Vzbid0IHJlcG9ydCB0byBzdGF0 IGNvbGxlY3Rvci4gU28sIG5vIGFueSBhZHZhbmNlbWVudHMgb2Ygc3RhdGlzdGljcworLS0g YXJlIGRldGVjdGVkIGhlcmUuCitWQUNVVU0gRlVMTCB2ZXN0YXQ7CistLSBJdCBpcyBuZWNl c3NhcnkgdG8gY2hlY2sgdGhlIHdhbCBzdGF0aXN0aWNzCitDSEVDS1BPSU5UOworLS0gU3Rv cmUgV0FMIGFkdmFuY2VzIGludG8gdmFyaWFibGVzCitTRUxFQ1Qgd2FsX3JlY29yZHMtOml3 ciBBUyBkaXdyMiwgd2FsX2J5dGVzLTppd2IgQVMgZGl3YjIsIHdhbF9mcGktOmlmcGkgQVMg ZGlmcGkyCitGUk9NIHBnX3N0YXRfdmFjdXVtX2luZGV4ZXMgV0hFUkUgcmVsbmFtZSA9ICd2 ZXN0YXRfcGtleScgXGdzZXQKKy0tIFdBTCBhbmQgb3RoZXIgc3RhdGlzdGljcyBhZHZhbmNl IHNob3VsZCBub3QgYmUgZGV0ZWN0ZWQuCitTRUxFQ1QgOmRpd3IyPTAgQVMgZGlXUiwgOmRp ZnBpMj0wIEFTIGlGUEksIDpkaXdiMj0wIEFTIGRpV0I7CisgZGl3ciB8IGlmcGkgfCBkaXdi IAorLS0tLS0tKy0tLS0tLSstLS0tLS0KKyB0ICAgIHwgdCAgICB8IHQKKygxIHJvdykKKwor U0VMRUNUIHZ0LnJlbG5hbWUscmVscGFnZXMtOmlycCA8IDAgQVMgcmVscGFnZXMscGFnZXNf ZGVsZXRlZC06aXBkID0gMCBBUyBwYWdlc19kZWxldGVkLHR1cGxlc19kZWxldGVkLTppdGQg PSAwIEFTIHR1cGxlc19kZWxldGVkCitGUk9NIHBnX3N0YXRfdmFjdXVtX2luZGV4ZXMgdnQs IHBnX2NsYXNzIGMKK1dIRVJFIHZ0LnJlbG5hbWUgPSAndmVzdGF0X3BrZXknIEFORCB2dC5y ZWxpZCA9IGMub2lkOworICAgcmVsbmFtZSAgIHwgcmVscGFnZXMgfCBwYWdlc19kZWxldGVk IHwgdHVwbGVzX2RlbGV0ZWQgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0KKyB2ZXN0YXRfcGtleSB8IHQgICAgICAgIHwgdCAg ICAgICAgICAgICB8IHQKKygxIHJvdykKKworU0VMRUNUIHZ0LnJlbG5hbWUscmVscGFnZXMg QVMgaXJwLHBhZ2VzX2RlbGV0ZWQgQVMgaXBkLHR1cGxlc19kZWxldGVkIEFTIGl0ZAorRlJP TSBwZ19zdGF0X3ZhY3V1bV9pbmRleGVzIHZ0LCBwZ19jbGFzcyBjCitXSEVSRSB2dC5yZWxu YW1lID0gJ3Zlc3RhdF9wa2V5JyBBTkQgdnQucmVsaWQgPSBjLm9pZCBcZ3NldAorLS0gU3Rv cmUgV0FMIGFkdmFuY2VzIGludG8gdmFyaWFibGVzCitTRUxFQ1Qgd2FsX3JlY29yZHMgQVMg aXdyLHdhbF9ieXRlcyBBUyBpd2Isd2FsX2ZwaSBBUyBpZnBpIEZST00gcGdfc3RhdF92YWN1 dW1faW5kZXhlcyBXSEVSRSByZWxuYW1lID0gJ3Zlc3RhdF9wa2V5JyBcZ3NldAorREVMRVRF IEZST00gdmVzdGF0OworVFJVTkNBVEUgdmVzdGF0OworVkFDVVVNIChQQVJBTExFTCAwLCBC VUZGRVJfVVNBR0VfTElNSVQgMTI4LCBJTkRFWF9DTEVBTlVQIE9OKSB2ZXN0YXQ7CistLSBp dCBpcyBuZWNlc3NhcnkgdG8gY2hlY2sgdGhlIHdhbCBzdGF0aXN0aWNzCitDSEVDS1BPSU5U OworLS0gU3RvcmUgV0FMIGFkdmFuY2VzIGludG8gdmFyaWFibGVzIGFmdGVyIHJlbW92aW5n IGFsbCB0dXBsZXMgZnJvbSB0aGUgdGFibGUKK1NFTEVDVCB3YWxfcmVjb3Jkcy06aXdyIEFT IGRpd3IzLCB3YWxfYnl0ZXMtOml3YiBBUyBkaXdiMywgd2FsX2ZwaS06aWZwaSBBUyBkaWZw aTMKK0ZST00gcGdfc3RhdF92YWN1dW1faW5kZXhlcyBXSEVSRSByZWxuYW1lID0gJ3Zlc3Rh dF9wa2V5JyBcZ3NldAorLS1UaGVyZSBhcmUgbm90aGluZyBjaGFuZ2VkCitTRUxFQ1QgOmRp d3IzPTAgQVMgZGlXUiwgOmRpZnBpMz0wIEFTIGlGUEksIDpkaXdiMz0wIEFTIGRpV0I7Cisg ZGl3ciB8IGlmcGkgfCBkaXdiIAorLS0tLS0tKy0tLS0tLSstLS0tLS0KKyB0ICAgIHwgdCAg ICB8IHQKKygxIHJvdykKKworLS0KKy0tIE5vdywgdGhlIHRhYmxlIGFuZCBpbmRleCBpcyBj b21wcmVzc2VkIGludG8gemVybyBudW1iZXIgb2YgcGFnZXMuIENoZWNrIGl0CistLSBpbiB2 YWN1dW0gZXh0ZW5kZWQgc3RhdGlzdGljcy4KKy0tIFRoZSBwYWdlc19mcm96ZW4sIHBhZ2Vz X3NjYW5uZWQgdmFsdWVzIHNob3VsZG4ndCBiZSBjaGFuZ2VkCistLQorU0VMRUNUIHZ0LnJl bG5hbWUscmVscGFnZXMtOmlycCA9IDAgQVMgcmVscGFnZXMscGFnZXNfZGVsZXRlZC06aXBk ID0gMCBBUyBwYWdlc19kZWxldGVkLHR1cGxlc19kZWxldGVkLTppdGQgPSAwIEFTIHR1cGxl c19kZWxldGVkCitGUk9NIHBnX3N0YXRfdmFjdXVtX2luZGV4ZXMgdnQsIHBnX2NsYXNzIGMK K1dIRVJFIHZ0LnJlbG5hbWUgPSAndmVzdGF0X3BrZXknIEFORCB2dC5yZWxpZCA9IGMub2lk OworICAgcmVsbmFtZSAgIHwgcmVscGFnZXMgfCBwYWdlc19kZWxldGVkIHwgdHVwbGVzX2Rl bGV0ZWQgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0KKyB2ZXN0YXRfcGtleSB8IGYgICAgICAgIHwgdCAgICAgICAgICAgICB8 IHQKKygxIHJvdykKKworRFJPUCBUQUJMRSB2ZXN0YXQ7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxl bF9zY2hlZHVsZQppbmRleCA2NDkzZTliNDY4MS4uYmRiNzNjY2FiNmIgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtMTQwLDQgKzE0MCw1IEBAIHRlc3Q6IHRhYmxl c3BhY2UKICMgLS0tLS0tLS0tLQogIyBDaGVjayB2YWN1dW0gc3RhdGlzdGljcwogIyAtLS0t LS0tLS0tCit0ZXN0OiB2YWN1dW1faW5kZXhfc3RhdGlzdGljcwogdGVzdDogdmFjdXVtX3Rh Ymxlc19zdGF0aXN0aWNzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdmFjdXVtX2luZGV4X3N0YXRpc3RpY3Muc3FsIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvdmFjdXVtX2luZGV4X3N0YXRpc3RpY3Muc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hZTE0NmUxZDIzZgotLS0gL2Rl di9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ZhY3V1bV9pbmRleF9zdGF0aXN0 aWNzLnNxbApAQCAtMCwwICsxLDE1MSBAQAorLS0KKy0tIFRlc3QgY3VtdWxhdGl2ZSB2YWN1 dW0gc3RhdHMgc3lzdGVtCistLQorLS0gQ2hlY2sgdGhlIHdhbGwgc3RhdGlzdGljcyBjb2xs ZWN0ZWQgZHVyaW5nIHZhY3V1bSBvcGVyYXRpb246CistLSBudW1iZXIgb2YgZnJvemVuIGFu ZCB2aXNpYmxlIHBhZ2VzIHNldCBieSB2YWN1dW07CistLSBudW1iZXIgb2YgZnJvemVuIGFu ZCB2aXNpYmxlIHBhZ2VzIHJlbW92ZWQgYnkgYmFja2VuZC4KKy0tIFN0YXRpc3RpYyB3YWxf ZnBpIGlzIG5vdCBkaXNwbGF5ZWQgaW4gdGhpcyB0ZXN0IGJlY2F1c2UgaXRzIGJlaGF2aW9y IGlzIHVuc3RhYmxlLgorLS0KKy0tIGNvbmRpdGlvIHNpbmUgcXVhIG5vbgorU0hPVyB0cmFj a19jb3VudHM7ICAtLSBtdXN0IGJlIG9uCisKK1xzZXQgc2FtcGxlX3NpemUgMTAwMDAKKwor LS0gbm90IGVuYWJsZWQgYnkgZGVmYXVsdCwgYnV0IHdlIHdhbnQgdG8gdGVzdCBpdC4uLgor U0VUIHRyYWNrX2Z1bmN0aW9ucyBUTyAnYWxsJzsKKworLS0gVGVzdCB0aGF0IHZhY3V1bSBz dGF0aXN0aWNzIHdpbGwgYmUgZW1wdHkgd2hlbiBwYXJhbWV0ZXIgaXMgb2ZmLgorU0VUIHRy YWNrX3ZhY3V1bV9zdGF0aXN0aWNzIFRPICdvZmYnOworCitDUkVBVEUgVEFCTEUgdmVzdGF0 ICh4IGludCkgV0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gb2ZmLCBmaWxsZmFjdG9yID0g MTApOworSU5TRVJUIElOVE8gdmVzdGF0IFNFTEVDVCB4IEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsOnNhbXBsZV9zaXplKSBhcyB4OworQU5BTFlaRSB2ZXN0YXQ7CisKK0RFTEVURSBGUk9N IHZlc3RhdCBXSEVSRSB4ICUgMiA9IDA7CisKK1ZBQ1VVTSAoUEFSQUxMRUwgMCwgQlVGRkVS X1VTQUdFX0xJTUlUIDEyOCkgdmVzdGF0OworCistLSBNdXN0IGJlIGVtcHR5LgorU0VMRUNU ICoKK0ZST00gcGdfc3RhdF92YWN1dW1faW5kZXhlcyB2dAorV0hFUkUgdnQucmVsbmFtZSA9 ICd2ZXN0YXQnOworCitSRVNFVCB0cmFja192YWN1dW1fc3RhdGlzdGljczsKK0RST1AgVEFC TEUgdmVzdGF0IENBU0NBREU7CisKK1NIT1cgdHJhY2tfdmFjdXVtX3N0YXRpc3RpY3M7ICAt LSBtdXN0IGJlIG9uCisKKy0tIGVuc3VyZSBwZW5kaW5nIHN0YXRzIGFyZSBmbHVzaGVkCitT RUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisKK1xzZXQgc2FtcGxlX3NpemUg MTAwMDAKK1NFVCB2YWN1dW1fZnJlZXplX21pbl9hZ2UgPSAwOworU0VUIHZhY3V1bV9mcmVl emVfdGFibGVfYWdlID0gMDsKKy0tU0VUIHN0YXRzX2ZldGNoX2NvbnNpc3RlbmN5ID0gc25h cHNob3Q7CitDUkVBVEUgVEFCTEUgdmVzdGF0ICh4IGludCBwcmltYXJ5IGtleSkgV0lUSCAo YXV0b3ZhY3V1bV9lbmFibGVkID0gb2ZmLCBmaWxsZmFjdG9yID0gMTApOworSU5TRVJUIElO VE8gdmVzdGF0IFNFTEVDVCB4IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsOnNhbXBsZV9zaXpl KSBhcyB4OworQU5BTFlaRSB2ZXN0YXQ7CisKK1NFTEVDVCBvaWQgQVMgaW9pZCBmcm9tIHBn X2NsYXNzIHdoZXJlIHJlbG5hbWUgPSAndmVzdGF0X3BrZXknIFxnc2V0CisKK0RFTEVURSBG Uk9NIHZlc3RhdCBXSEVSRSB4ICUgMiA9IDA7CistLSBCZWZvcmUgdGhlIGZpcnN0IHZhY3V1 bSBleGVjdXRpb24gZXh0ZW5kZWQgc3RhdHMgdmlldyBpcyBlbXB0eS4KK1NFTEVDVCB2dC5y ZWxuYW1lLHJlbHBhZ2VzLHBhZ2VzX2RlbGV0ZWQsdHVwbGVzX2RlbGV0ZWQKK0ZST00gcGdf c3RhdF92YWN1dW1faW5kZXhlcyB2dCwgcGdfY2xhc3MgYworV0hFUkUgdnQucmVsbmFtZSA9 ICd2ZXN0YXRfcGtleScgQU5EIHZ0LnJlbGlkID0gYy5vaWQ7CitTRUxFQ1QgcmVscGFnZXMg QVMgaXJwCitGUk9NIHBnX2NsYXNzIGMKK1dIRVJFIHJlbG5hbWUgPSAndmVzdGF0X3BrZXkn IFxnc2V0CisKK1ZBQ1VVTSAoUEFSQUxMRUwgMCwgQlVGRkVSX1VTQUdFX0xJTUlUIDEyOCwg SU5ERVhfQ0xFQU5VUCBPTikgdmVzdGF0OworLS0gaXQgaXMgbmVjZXNzYXJ5IHRvIGNoZWNr IHRoZSB3YWwgc3RhdGlzdGljcworQ0hFQ0tQT0lOVDsKKworLS0gVGhlIHRhYmxlIGFuZCBp bmRleCBleHRlbmRlZCB2YWN1dW0gc3RhdGlzdGljcyBzaG91bGQgc2hvdyB1cyB0aGF0Cist LSB2YWN1dW0gZnJvemVkIHBhZ2VzIGFuZCBjbGVhbiB1cCBwYWdlcywgYnV0IHBhZ2VzX3Jl bW92ZWQgc3RheWVkIHRoZSBzYW1lCistLSBiZWNhdXNlIG9mIG5vdCBmdWxsIHRhYmxlIGhh dmUgY2xlYW5lZCB1cAorU0VMRUNUIHZ0LnJlbG5hbWUscmVscGFnZXMtOmlycCA9IDAgQVMg cmVscGFnZXMscGFnZXNfZGVsZXRlZCA9IDAgQVMgcGFnZXNfZGVsZXRlZCx0dXBsZXNfZGVs ZXRlZCA+IDAgQVMgdHVwbGVzX2RlbGV0ZWQKK0ZST00gcGdfc3RhdF92YWN1dW1faW5kZXhl cyB2dCwgcGdfY2xhc3MgYworV0hFUkUgdnQucmVsbmFtZSA9ICd2ZXN0YXRfcGtleScgQU5E IHZ0LnJlbGlkID0gYy5vaWQ7CitTRUxFQ1QgdnQucmVsbmFtZSxyZWxwYWdlcyBBUyBpcnAs cGFnZXNfZGVsZXRlZCBBUyBpcGQsdHVwbGVzX2RlbGV0ZWQgQVMgaXRkCitGUk9NIHBnX3N0 YXRfdmFjdXVtX2luZGV4ZXMgdnQsIHBnX2NsYXNzIGMKK1dIRVJFIHZ0LnJlbG5hbWUgPSAn dmVzdGF0X3BrZXknIEFORCB2dC5yZWxpZCA9IGMub2lkIFxnc2V0CisKKy0tIFN0b3JlIFdB TCBhZHZhbmNlcyBpbnRvIHZhcmlhYmxlcworU0VMRUNUIHdhbF9yZWNvcmRzIEFTIGl3cix3 YWxfYnl0ZXMgQVMgaXdiLHdhbF9mcGkgQVMgaWZwaSBGUk9NIHBnX3N0YXRfdmFjdXVtX2lu ZGV4ZXMgV0hFUkUgcmVsbmFtZSA9ICd2ZXN0YXRfcGtleScgXGdzZXQKKworLS0gTG9vayBp bnRvIFdBTCByZWNvcmRzIGRlbHRhcy4KK1NFTEVDVCB3YWxfcmVjb3JkcyA+IDAgQVMgZGlX Uiwgd2FsX2J5dGVzID4gMCBBUyBkaVdCCitGUk9NIHBnX3N0YXRfdmFjdXVtX2luZGV4ZXMg V0hFUkUgcmVsbmFtZSA9ICd2ZXN0YXRfcGtleSc7CisKK0RFTEVURSBGUk9NIHZlc3RhdDs7 CitWQUNVVU0gKFBBUkFMTEVMIDAsIEJVRkZFUl9VU0FHRV9MSU1JVCAxMjgsIElOREVYX0NM RUFOVVAgT04pIHZlc3RhdDsKKy0tIGl0IGlzIG5lY2Vzc2FyeSB0byBjaGVjayB0aGUgd2Fs IHN0YXRpc3RpY3MKK0NIRUNLUE9JTlQ7CisKKy0tIHBhZ2VzX3JlbW92ZWQgbXVzdCBiZSBp bmNyZWFzZWQKK1NFTEVDVCB2dC5yZWxuYW1lLHJlbHBhZ2VzLTppcnAgPSAwIEFTIHJlbHBh Z2VzLHBhZ2VzX2RlbGV0ZWQtOmlwZCA+IDAgQVMgcGFnZXNfZGVsZXRlZCx0dXBsZXNfZGVs ZXRlZC06aXRkID4gMCBBUyB0dXBsZXNfZGVsZXRlZAorRlJPTSBwZ19zdGF0X3ZhY3V1bV9p bmRleGVzIHZ0LCBwZ19jbGFzcyBjCitXSEVSRSB2dC5yZWxuYW1lID0gJ3Zlc3RhdF9wa2V5 JyBBTkQgdnQucmVsaWQgPSBjLm9pZDsKK1NFTEVDVCB2dC5yZWxuYW1lLHJlbHBhZ2VzIEFT IGlycCxwYWdlc19kZWxldGVkIEFTIGlwZCx0dXBsZXNfZGVsZXRlZCBBUyBpdGQKK0ZST00g cGdfc3RhdF92YWN1dW1faW5kZXhlcyB2dCwgcGdfY2xhc3MgYworV0hFUkUgdnQucmVsbmFt ZSA9ICd2ZXN0YXRfcGtleScgQU5EIHZ0LnJlbGlkID0gYy5vaWQgXGdzZXQKKworLS0gU3Rv cmUgV0FMIGFkdmFuY2VzIGludG8gdmFyaWFibGVzCitTRUxFQ1Qgd2FsX3JlY29yZHMtOml3 ciBBUyBkaXdyLCB3YWxfYnl0ZXMtOml3YiBBUyBkaXdiLCB3YWxfZnBpLTppZnBpIEFTIGRp ZnBpCitGUk9NIHBnX3N0YXRfdmFjdXVtX2luZGV4ZXMgV0hFUkUgcmVsbmFtZSA9ICd2ZXN0 YXRfcGtleScgXGdzZXQKKworLS0gV0FMIGFkdmFuY2Ugc2hvdWxkIGJlIGRldGVjdGVkLgor U0VMRUNUIDpkaXdyID4gMCBBUyBkaVdSLCA6ZGl3YiA+IDAgQVMgZGlXQjsKKworLS0gU3Rv cmUgV0FMIGFkdmFuY2VzIGludG8gdmFyaWFibGVzCitTRUxFQ1Qgd2FsX3JlY29yZHMgQVMg aXdyLHdhbF9ieXRlcyBBUyBpd2Isd2FsX2ZwaSBBUyBpZnBpIEZST00gcGdfc3RhdF92YWN1 dW1faW5kZXhlcyBXSEVSRSByZWxuYW1lID0gJ3Zlc3RhdF9wa2V5JyBcZ3NldAorCitJTlNF UlQgSU5UTyB2ZXN0YXQgU0VMRUNUIHggRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSw6c2FtcGxl X3NpemUpIGFzIHg7CitERUxFVEUgRlJPTSB2ZXN0YXQgV0hFUkUgeCAlIDIgPSAwOworLS0g VkFDVVVNIEZVTEwgZG9lc24ndCByZXBvcnQgdG8gc3RhdCBjb2xsZWN0b3IuIFNvLCBubyBh bnkgYWR2YW5jZW1lbnRzIG9mIHN0YXRpc3RpY3MKKy0tIGFyZSBkZXRlY3RlZCBoZXJlLgor VkFDVVVNIEZVTEwgdmVzdGF0OworLS0gSXQgaXMgbmVjZXNzYXJ5IHRvIGNoZWNrIHRoZSB3 YWwgc3RhdGlzdGljcworQ0hFQ0tQT0lOVDsKKworLS0gU3RvcmUgV0FMIGFkdmFuY2VzIGlu dG8gdmFyaWFibGVzCitTRUxFQ1Qgd2FsX3JlY29yZHMtOml3ciBBUyBkaXdyMiwgd2FsX2J5 dGVzLTppd2IgQVMgZGl3YjIsIHdhbF9mcGktOmlmcGkgQVMgZGlmcGkyCitGUk9NIHBnX3N0 YXRfdmFjdXVtX2luZGV4ZXMgV0hFUkUgcmVsbmFtZSA9ICd2ZXN0YXRfcGtleScgXGdzZXQK KworLS0gV0FMIGFuZCBvdGhlciBzdGF0aXN0aWNzIGFkdmFuY2Ugc2hvdWxkIG5vdCBiZSBk ZXRlY3RlZC4KK1NFTEVDVCA6ZGl3cjI9MCBBUyBkaVdSLCA6ZGlmcGkyPTAgQVMgaUZQSSwg OmRpd2IyPTAgQVMgZGlXQjsKKworU0VMRUNUIHZ0LnJlbG5hbWUscmVscGFnZXMtOmlycCA8 IDAgQVMgcmVscGFnZXMscGFnZXNfZGVsZXRlZC06aXBkID0gMCBBUyBwYWdlc19kZWxldGVk LHR1cGxlc19kZWxldGVkLTppdGQgPSAwIEFTIHR1cGxlc19kZWxldGVkCitGUk9NIHBnX3N0 YXRfdmFjdXVtX2luZGV4ZXMgdnQsIHBnX2NsYXNzIGMKK1dIRVJFIHZ0LnJlbG5hbWUgPSAn dmVzdGF0X3BrZXknIEFORCB2dC5yZWxpZCA9IGMub2lkOworU0VMRUNUIHZ0LnJlbG5hbWUs cmVscGFnZXMgQVMgaXJwLHBhZ2VzX2RlbGV0ZWQgQVMgaXBkLHR1cGxlc19kZWxldGVkIEFT IGl0ZAorRlJPTSBwZ19zdGF0X3ZhY3V1bV9pbmRleGVzIHZ0LCBwZ19jbGFzcyBjCitXSEVS RSB2dC5yZWxuYW1lID0gJ3Zlc3RhdF9wa2V5JyBBTkQgdnQucmVsaWQgPSBjLm9pZCBcZ3Nl dAorCistLSBTdG9yZSBXQUwgYWR2YW5jZXMgaW50byB2YXJpYWJsZXMKK1NFTEVDVCB3YWxf cmVjb3JkcyBBUyBpd3Isd2FsX2J5dGVzIEFTIGl3Yix3YWxfZnBpIEFTIGlmcGkgRlJPTSBw Z19zdGF0X3ZhY3V1bV9pbmRleGVzIFdIRVJFIHJlbG5hbWUgPSAndmVzdGF0X3BrZXknIFxn c2V0CisKK0RFTEVURSBGUk9NIHZlc3RhdDsKK1RSVU5DQVRFIHZlc3RhdDsKK1ZBQ1VVTSAo UEFSQUxMRUwgMCwgQlVGRkVSX1VTQUdFX0xJTUlUIDEyOCwgSU5ERVhfQ0xFQU5VUCBPTikg dmVzdGF0OworLS0gaXQgaXMgbmVjZXNzYXJ5IHRvIGNoZWNrIHRoZSB3YWwgc3RhdGlzdGlj cworQ0hFQ0tQT0lOVDsKKworLS0gU3RvcmUgV0FMIGFkdmFuY2VzIGludG8gdmFyaWFibGVz IGFmdGVyIHJlbW92aW5nIGFsbCB0dXBsZXMgZnJvbSB0aGUgdGFibGUKK1NFTEVDVCB3YWxf cmVjb3Jkcy06aXdyIEFTIGRpd3IzLCB3YWxfYnl0ZXMtOml3YiBBUyBkaXdiMywgd2FsX2Zw aS06aWZwaSBBUyBkaWZwaTMKK0ZST00gcGdfc3RhdF92YWN1dW1faW5kZXhlcyBXSEVSRSBy ZWxuYW1lID0gJ3Zlc3RhdF9wa2V5JyBcZ3NldAorCistLVRoZXJlIGFyZSBub3RoaW5nIGNo YW5nZWQKK1NFTEVDVCA6ZGl3cjM9MCBBUyBkaVdSLCA6ZGlmcGkzPTAgQVMgaUZQSSwgOmRp d2IzPTAgQVMgZGlXQjsKKworLS0KKy0tIE5vdywgdGhlIHRhYmxlIGFuZCBpbmRleCBpcyBj b21wcmVzc2VkIGludG8gemVybyBudW1iZXIgb2YgcGFnZXMuIENoZWNrIGl0CistLSBpbiB2 YWN1dW0gZXh0ZW5kZWQgc3RhdGlzdGljcy4KKy0tIFRoZSBwYWdlc19mcm96ZW4sIHBhZ2Vz X3NjYW5uZWQgdmFsdWVzIHNob3VsZG4ndCBiZSBjaGFuZ2VkCistLQorU0VMRUNUIHZ0LnJl bG5hbWUscmVscGFnZXMtOmlycCA9IDAgQVMgcmVscGFnZXMscGFnZXNfZGVsZXRlZC06aXBk ID0gMCBBUyBwYWdlc19kZWxldGVkLHR1cGxlc19kZWxldGVkLTppdGQgPSAwIEFTIHR1cGxl c19kZWxldGVkCitGUk9NIHBnX3N0YXRfdmFjdXVtX2luZGV4ZXMgdnQsIHBnX2NsYXNzIGMK K1dIRVJFIHZ0LnJlbG5hbWUgPSAndmVzdGF0X3BrZXknIEFORCB2dC5yZWxpZCA9IGMub2lk OworCitEUk9QIFRBQkxFIHZlc3RhdDsKLS0gCjIuMzQuMQoK --------------vHbj04KO08FC0gAES8o5Fvao Content-Type: text/x-patch; charset=UTF-8; name="v19-0004-Add-documentation-about-the-system-views-that-are-us.patch" Content-Disposition: attachment; filename*0="v19-0004-Add-documentation-about-the-system-views-that-are-u"; filename*1="s.patch" Content-Transfer-Encoding: base64 RnJvbSBhYzQ3ODNlZTI0NTFhNTdjOTEyN2VlY2RiMzE4NmU0ZGNmMDliMDc0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVuYSBSeWJha2luYSA8YS5yeWJha2luYUBwb3N0 Z3Jlc3Byby5ydT4KRGF0ZTogTW9uLCAxNyBGZWIgMjAyNSAxNzoyOTo0OCArMDMwMApTdWJq ZWN0OiBbUEFUQ0ggNC80XSBBZGQgZG9jdW1lbnRhdGlvbiBhYm91dCB0aGUgc3lzdGVtIHZp ZXdzIHRoYXQgYXJlIHVzZWQgaW4KIHRoZSBtYWNoaW5lcnkgb2YgdmFjdXVtIHN0YXRpc3Rp Y3MuCgotLS0KIGRvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbCB8IDc1NSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA3NTUgaW5zZXJ0 aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbCBi L2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbAppbmRleCBiZTgxYzJiNTFkMi4uYjA1 Y2IwNGEyMzUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKQEAgLTUwNjksNCArNTA2OSw3 NTkgQEAgU0VMRUNUICogRlJPTSBwZ19sb2NrcyBwbCBMRUZUIEpPSU4gcGdfcHJlcGFyZWRf eGFjdHMgcHB4CiAgIDwvdGFibGU+CiAgPC9zZWN0MT4KIAorPHNlY3QxIGlkPSJ2aWV3LXBn LXN0YXQtdmFjdXVtLWRhdGFiYXNlIj4KKyAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX3N0YXRf dmFjdXVtX2RhdGFiYXNlPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisKKyAgPGluZGV4dGVybSB6 b25lPSJ2aWV3LXBnLXN0YXQtdmFjdXVtLWRhdGFiYXNlIj4KKyAgIDxwcmltYXJ5PnBnX3N0 YXRfdmFjdXVtX2RhdGFiYXNlPC9wcmltYXJ5PgorICA8L2luZGV4dGVybT4KKworICA8cGFy YT4KKyAgIFRoZSB2aWV3IDxzdHJ1Y3RuYW1lPnBnX3N0YXRfdmFjdXVtX2RhdGFiYXNlPC9z dHJ1Y3RuYW1lPiB3aWxsIGNvbnRhaW4KKyAgIG9uZSByb3cgZm9yIGVhY2ggZGF0YWJhc2Ug aW4gdGhlIGN1cnJlbnQgY2x1c3Rlciwgc2hvd2luZyBzdGF0aXN0aWNzIGFib3V0CisgICB2 YWN1dW1pbmcgdGhhdCBkYXRhYmFzZS4KKyAgPC9wYXJhPgorCisgIDx0YWJsZT4KKyAgIDx0 aXRsZT48c3RydWN0bmFtZT5wZ19zdGF0X3ZhY3V1bV9kYXRhYmFzZTwvc3RydWN0bmFtZT4g Q29sdW1uczwvdGl0bGU+CisgICA8dGdyb3VwIGNvbHM9IjEiPgorICAgIDx0aGVhZD4KKyAg ICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFy YSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgQ29sdW1uIFR5cGUKKyAgICAg IDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIERlc2NyaXB0aW9uCisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVhZD4KKworICAgIDx0Ym9keT4K KyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48 cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmRi aWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAg ICA8cGFyYT4KKyAgICAgICBPSUQgb2YgYSBkYXRhYmFzZQorICAgICAgPC9wYXJhPjwvZW50 cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0 YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAg ICAgIDxzdHJ1Y3RmaWVsZD50b3RhbF9ibGtzX3JlYWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5p bnQ4PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIE51bWJl ciBvZiBkYXRhYmFzZSBibG9ja3MgcmVhZCBieSB2YWN1dW0gb3BlcmF0aW9ucworICAgICAg ICBwZXJmb3JtZWQgb24gdGhpcyBkYXRhYmFzZQorICAgICAgPC9wYXJhPjwvZW50cnk+Cisg ICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190 YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxz dHJ1Y3RmaWVsZD50b3RhbF9ibGtzX2hpdDwvc3RydWN0ZmllbGQ+IDx0eXBlPmludDg8L3R5 cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgTnVtYmVyIG9mIHRp bWVzIGRhdGFiYXNlIGJsb2NrcyB3ZXJlIGZvdW5kIGluIHRoZQorICAgICAgICBidWZmZXIg Y2FjaGUgYnkgdmFjdXVtIG9wZXJhdGlvbnMKKyAgICAgICAgcGVyZm9ybWVkIG9uIHRoaXMg ZGF0YWJhc2UKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8 cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+dG90YWxfYmxr c19kaXJ0aWVkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50ODwvdHlwZT4KKyAgICAgIDwvcGFy YT4KKyAgICAgIDxwYXJhPgorICAgICAgICBOdW1iZXIgb2YgZGF0YWJhc2UgYmxvY2tzIGRp cnRpZWQgYnkgdmFjdXVtIG9wZXJhdGlvbnMKKyAgICAgICAgcGVyZm9ybWVkIG9uIHRoaXMg ZGF0YWJhc2UKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8 cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+dG90YWxfYmxr c193cml0dGVuPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50ODwvdHlwZT4KKyAgICAgIDwvcGFy YT4KKyAgICAgIDxwYXJhPgorICAgICAgICBOdW1iZXIgb2YgZGF0YWJhc2UgYmxvY2tzIHdy aXR0ZW4gYnkgdmFjdXVtIG9wZXJhdGlvbnMKKyAgICAgICAgcGVyZm9ybWVkIG9uIHRoaXMg ZGF0YWJhc2UKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8 cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+d2FsX3JlY29y ZHM8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQ4PC90eXBlPgorICAgICAgPC9wYXJhPgorICAg ICAgPHBhcmE+CisgICAgICAgIFRvdGFsIG51bWJlciBvZiBXQUwgcmVjb3JkcyBnZW5lcmF0 ZWQgYnkgdmFjdXVtIG9wZXJhdGlvbnMKKyAgICAgICAgcGVyZm9ybWVkIG9uIHRoaXMgZGF0 YWJhc2UKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93 PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9 ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+d2FsX2ZwaTwvc3Ry dWN0ZmllbGQ+IDx0eXBlPmludDg8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFy YT4KKyAgICAgICAgVG90YWwgbnVtYmVyIG9mIFdBTCBmdWxsIHBhZ2UgaW1hZ2VzIGdlbmVy YXRlZCBieSB2YWN1dW0gb3BlcmF0aW9ucworICAgICAgICBwZXJmb3JtZWQgb24gdGhpcyBk YXRhYmFzZQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxy b3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9s ZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD53YWxfYnl0ZXM8 L3N0cnVjdGZpZWxkPiA8dHlwZT5udW1lcmljPC90eXBlPgorICAgICAgPC9wYXJhPgorICAg ICAgPHBhcmE+CisgICAgICAgIFRvdGFsIGFtb3VudCBvZiBXQUwgYnl0ZXMgZ2VuZXJhdGVk IGJ5IHZhY3V1bSBvcGVyYXRpb25zCisgICAgICAgIHBlcmZvcm1lZCBvbiB0aGlzIGRhdGFi YXNlCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4K KyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJj b2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmJsa19yZWFkX3RpbWU8 L3N0cnVjdGZpZWxkPiA8dHlwZT5mbG9hdDg8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAg ICA8cGFyYT4KKyAgICAgICAgVGltZSBzcGVudCByZWFkaW5nIGRhdGFiYXNlIGJsb2NrcyBi eSB2YWN1dW0gb3BlcmF0aW9ucyBwZXJmb3JtZWQgb24KKyAgICAgICAgdGhpcyBkYXRhYmFz ZSwgaW4gbWlsbGlzZWNvbmRzIChpZiA8eHJlZiBsaW5rZW5kPSJndWMtdHJhY2staW8tdGlt aW5nIi8+IGlzIGVuYWJsZWQsCisgICAgICAgIG90aGVyd2lzZSB6ZXJvKQorICAgICAgPC9w YXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkg cm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRp b24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5ibGtfd3JpdGVfdGltZTwvc3RydWN0ZmllbGQ+ IDx0eXBlPmZsb2F0ODwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAg ICAgICBUaW1lIHNwZW50IHdyaXRpbmcgZGF0YWJhc2UgYmxvY2tzIGJ5IHZhY3V1bSBvcGVy YXRpb25zIHBlcmZvcm1lZCBvbgorICAgICAgICB0aGlzIGRhdGFiYXNlLCBpbiBtaWxsaXNl Y29uZHMgKGlmIDx4cmVmIGxpbmtlbmQ9Imd1Yy10cmFjay1pby10aW1pbmciLz4gaXMgZW5h YmxlZCwKKyAgICAgICAgb3RoZXJ3aXNlIHplcm8pCisgICAgICA8L3BhcmE+PC9lbnRyeT4K KyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9n X3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAg PHN0cnVjdGZpZWxkPmRlbGF5X3RpbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT5mbG9hdDg8L3R5 cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgVGltZSBzcGVudCBz bGVlcGluZyBpbiBhIHZhY3V1bSBkZWxheSBwb2ludCBieSB2YWN1dW0gb3BlcmF0aW9ucyBw ZXJmb3JtZWQgb24KKyAgICAgICAgdGhpcyBkYXRhYmFzZSwgaW4gbWlsbGlzZWNvbmRzIChz ZWUgPHhyZWYgbGlua2VuZD0icnVudGltZS1jb25maWctcmVzb3VyY2UtdmFjdXVtLWNvc3Qi Lz4KKyAgICAgICAgZm9yIGRldGFpbHMpCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAg PC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVj dGZpZWxkPnN5c3RlbV90aW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+ZmxvYXQ4PC90eXBlPgor ICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIFN5c3RlbSBDUFUgdGltZSBv ZiB2YWN1dW1pbmcgdGhpcyBkYXRhYmFzZSwgaW4gbWlsbGlzZWNvbmRzCisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSBy b2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlv biI+CisgICAgICAgPHN0cnVjdGZpZWxkPnVzZXJfdGltZTwvc3RydWN0ZmllbGQ+IDx0eXBl PmZsb2F0ODwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgICBV c2VyIENQVSB0aW1lIG9mIHZhY3V1bWluZyB0aGlzIGRhdGFiYXNlLCBpbiBtaWxsaXNlY29u ZHMKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93Pgor ICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNv bHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+dG90YWxfdGltZTwvc3Ry dWN0ZmllbGQ+IDx0eXBlPmZsb2F0ODwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxw YXJhPgorICAgICAgICBUb3RhbCB0aW1lIG9mIHZhY3V1bWluZyB0aGlzIGRhdGFiYXNlLCBp biBtaWxsaXNlY29uZHMKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwor ICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxw YXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+d3Jh cGFyb3VuZF9mYWlsc2FmZV9jb3VudDwvc3RydWN0ZmllbGQ+IDx0eXBlPmludDQ8L3R5cGU+ CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgTnVtYmVyIG9mIHRpbWVz IHRoZSB2YWN1dW0gd2FzIHJ1biB0byBwcmV2ZW50IGEgd3JhcGFyb3VuZCBwcm9ibGVtLgor ICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAg ICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1u X2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5lcnJvcnM8L3N0cnVjdGZpZWxk PiA8dHlwZT5pbnQ0PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAg ICAgIE51bWJlciBvZiB0aW1lcyB2YWN1dW0gb3BlcmF0aW9ucyBwZXJmb3JtZWQgb24gdGhp cyBkYXRhYmFzZQorICAgICAgICB3ZXJlIGludGVycnVwdGVkIG9uIGFueSBlcnJvcnMKKyAg ICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3Rib2R5PgorICAgPC90 Z3JvdXA+CisgIDwvdGFibGU+CisgPC9zZWN0MT4KKworICA8c2VjdDEgaWQ9InZpZXctcGct c3RhdC12YWN1dW0taW5kZXhlcyI+CisgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19zdGF0X3Zh Y3V1bV9pbmRleGVzPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisKKyAgPGluZGV4dGVybSB6b25l PSJ2aWV3LXBnLXN0YXQtdmFjdXVtLWluZGV4ZXMiPgorICAgPHByaW1hcnk+cGdfc3RhdF92 YWN1dW1faW5kZXhlczwvcHJpbWFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAgPHBhcmE+Cisg ICBUaGUgdmlldyA8c3RydWN0bmFtZT5wZ19zdGF0X3ZhY3V1bV9pbmRleGVzPC9zdHJ1Y3Ru YW1lPiB3aWxsIGNvbnRhaW4KKyAgIG9uZSByb3cgZm9yIGVhY2ggaW5kZXggaW4gdGhlIGN1 cnJlbnQgZGF0YWJhc2UgKGluY2x1ZGluZyBUT0FTVAorICAgdGFibGUgaW5kZXhlcyksIHNo b3dpbmcgc3RhdGlzdGljcyBhYm91dCB2YWN1dW1pbmcgdGhhdCBzcGVjaWZpYyBpbmRleC4K KyAgPC9wYXJhPgorCisgIDx0YWJsZT4KKyAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19zdGF0 X3ZhY3V1bV9pbmRleGVzPC9zdHJ1Y3RuYW1lPiBDb2x1bW5zPC90aXRsZT4KKyAgIDx0Z3Jv dXAgY29scz0iMSI+CisgICAgPHRoZWFkPgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJv bGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9u Ij4KKyAgICAgICBDb2x1bW4gVHlwZQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+Cisg ICAgICAgRGVzY3JpcHRpb24KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4K KyAgICA8L3RoZWFkPgorCisgICAgPHRib2R5PgorICAgICA8cm93PgorICAgICAgPGVudHJ5 IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0 aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cmVsaWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5v aWQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBPSUQgb2Yg YW4gaW5kZXgKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8 cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+c2NoZW1hPC9z dHJ1Y3RmaWVsZD4gPHR5cGU+bmFtZTwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxw YXJhPgorICAgICAgICBOYW1lIG9mIHRoZSBzY2hlbWEgdGhpcyBpbmRleCBpcyBpbgorICAg ICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8 ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2Rl ZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5yZWxuYW1lPC9zdHJ1Y3RmaWVsZD4g PHR5cGU+bmFtZTwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAg IE5hbWUgb2YgdGhpcyBpbmRleAorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93 PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRy eSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVs ZD50b3RhbF9ibGtzX3JlYWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQ4PC90eXBlPgorICAg ICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIE51bWJlciBvZiBkYXRhYmFzZSBi bG9ja3MgcmVhZCBieSB2YWN1dW0gb3BlcmF0aW9ucworICAgICAgICBwZXJmb3JtZWQgb24g dGhpcyBpbmRleAorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAg IDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEg cm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD50b3RhbF9i bGtzX2hpdDwvc3RydWN0ZmllbGQ+IDx0eXBlPmludDg8L3R5cGU+CisgICAgICA8L3BhcmE+ CisgICAgICA8cGFyYT4KKyAgICAgICAgTnVtYmVyIG9mIHRpbWVzIGRhdGFiYXNlIGJsb2Nr cyB3ZXJlIGZvdW5kIGluIHRoZQorICAgICAgICBidWZmZXIgY2FjaGUgYnkgdmFjdXVtIG9w ZXJhdGlvbnMKKyAgICAgICAgcGVyZm9ybWVkIG9uIHRoaXMgaW5kZXgKKyAgICAgIDwvcGFy YT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJv bGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9u Ij4KKyAgICAgICA8c3RydWN0ZmllbGQ+dG90YWxfYmxrc19kaXJ0aWVkPC9zdHJ1Y3RmaWVs ZD4gPHR5cGU+aW50ODwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAg ICAgICBOdW1iZXIgb2YgZGF0YWJhc2UgYmxvY2tzIGRpcnRpZWQgYnkgdmFjdXVtIG9wZXJh dGlvbnMKKyAgICAgICAgcGVyZm9ybWVkIG9uIHRoaXMgaW5kZXgKKyAgICAgIDwvcGFyYT48 L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9 ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4K KyAgICAgICA8c3RydWN0ZmllbGQ+dG90YWxfYmxrc193cml0dGVuPC9zdHJ1Y3RmaWVsZD4g PHR5cGU+aW50ODwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAg ICBOdW1iZXIgb2YgZGF0YWJhc2UgYmxvY2tzIHdyaXR0ZW4gYnkgdmFjdXVtIG9wZXJhdGlv bnMKKyAgICAgICAgcGVyZm9ybWVkIG9uIHRoaXMgaW5kZXgKKyAgICAgIDwvcGFyYT48L2Vu dHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNh dGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAg ICAgICA8c3RydWN0ZmllbGQ+cmVsX2Jsa3NfcmVhZDwvc3RydWN0ZmllbGQ+IDx0eXBlPmlu dDg8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgTnVtYmVy IG9mIGJsb2NrcyB2YWN1dW0gb3BlcmF0aW9ucyByZWFkIGZyb20gdGhpcworICAgICAgICBp bmRleAorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+ CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5yZWxfYmxrc19oaXQ8 L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQ4PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAg PHBhcmE+CisgICAgICAgIE51bWJlciBvZiB0aW1lcyBibG9ja3Mgb2YgdGhpcyBpbmRleCB3 ZXJlIGFscmVhZHkgZm91bmQKKyAgICAgICAgaW4gdGhlIGJ1ZmZlciBjYWNoZSBieSB2YWN1 dW0gb3BlcmF0aW9ucywgc28gdGhhdCBhIHJlYWQgd2FzIG5vdCBuZWNlc3NhcnkKKyAgICAg ICAgKHRoaXMgb25seSBpbmNsdWRlcyBoaXRzIGluIHRoZQorICAgICAgICBwcm9qZWN0OyBi dWZmZXIgY2FjaGUsIG5vdCB0aGUgb3BlcmF0aW5nIHN5c3RlbSdzIGZpbGUgc3lzdGVtIGNh Y2hlKQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+ CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wYWdlc19kZWxldGVk PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50ODwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAg IDxwYXJhPgorICAgICAgICBOdW1iZXIgb2YgcGFnZXMgZGVsZXRlZCBieSB2YWN1dW0gb3Bl cmF0aW9ucworICAgICAgICBwZXJmb3JtZWQgb24gdGhpcyBpbmRleAorICAgICAgPC9wYXJh PjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9s ZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24i PgorICAgICAgIDxzdHJ1Y3RmaWVsZD50dXBsZXNfZGVsZXRlZDwvc3RydWN0ZmllbGQ+IDx0 eXBlPmludDg8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAg TnVtYmVyIG9mIGRlYWQgdHVwbGVzIHZhY3V1bSBvcGVyYXRpb25zIGRlbGV0ZWQgZnJvbSB0 aGlzIGluZGV4CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAg PHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSBy b2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPndhbF9yZWNv cmRzPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50ODwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAg ICAgIDxwYXJhPgorICAgICAgICBUb3RhbCBudW1iZXIgb2YgV0FMIHJlY29yZHMgZ2VuZXJh dGVkIGJ5IHZhY3V1bSBvcGVyYXRpb25zCisgICAgICAgIHBlcmZvcm1lZCBvbiB0aGlzIGlu ZGV4CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4K KyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJj b2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPndhbF9mcGk8L3N0cnVj dGZpZWxkPiA8dHlwZT5pbnQ4PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+ CisgICAgICAgIFRvdGFsIG51bWJlciBvZiBXQUwgZnVsbCBwYWdlIGltYWdlcyBnZW5lcmF0 ZWQgYnkgdmFjdXVtIG9wZXJhdGlvbnMKKyAgICAgICAgcGVyZm9ybWVkIG9uIHRoaXMgaW5k ZXgKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93Pgor ICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNv bHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+d2FsX2J5dGVzPC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+bnVtZXJpYzwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxw YXJhPgorICAgICAgICBUb3RhbCBhbW91bnQgb2YgV0FMIGJ5dGVzIGdlbmVyYXRlZCBieSB2 YWN1dW0gb3BlcmF0aW9ucworICAgICAgICBwZXJmb3JtZWQgb24gdGhpcyBpbmRleAorICAg ICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8 ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2Rl ZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5ibGtfcmVhZF90aW1lPC9zdHJ1Y3Rm aWVsZD4gPHR5cGU+aW50ODwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgor ICAgICAgICBUaW1lIHNwZW50IHJlYWRpbmcgZGF0YWJhc2UgYmxvY2tzIGJ5IHZhY3V1bSBv cGVyYXRpb25zIHBlcmZvcm1lZCBvbgorICAgICAgICB0aGlzIGluZGV4LCBpbiBtaWxsaXNl Y29uZHMgKGlmIDx4cmVmIGxpbmtlbmQ9Imd1Yy10cmFjay1pby10aW1pbmciLz4gaXMgZW5h YmxlZCwKKyAgICAgICAgb3RoZXJ3aXNlIHplcm8pCisgICAgICA8L3BhcmE+PC9lbnRyeT4K KyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9n X3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAg PHN0cnVjdGZpZWxkPmJsa193cml0ZV90aW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50ODwv dHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgICBUaW1lIHNwZW50 IHdyaXRpbmcgZGF0YWJhc2UgYmxvY2tzIGJ5IHZhY3V1bSBvcGVyYXRpb25zIHBlcmZvcm1l ZCBvbgorICAgICAgICB0aGlzIGluZGV4LCBpbiBtaWxsaXNlY29uZHMgKGlmIDx4cmVmIGxp bmtlbmQ9Imd1Yy10cmFjay1pby10aW1pbmciLz4gaXMgZW5hYmxlZCwKKyAgICAgICAgb3Ro ZXJ3aXNlIHplcm8pCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAg ICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFy YSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmRlbGF5 X3RpbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT5mbG9hdDg8L3R5cGU+CisgICAgICA8L3BhcmE+ CisgICAgICA8cGFyYT4KKyAgICAgICAgVGltZSBzcGVudCBzbGVlcGluZyBpbiBhIHZhY3V1 bSBkZWxheSBwb2ludCBieSB2YWN1dW0gb3BlcmF0aW9ucyBwZXJmb3JtZWQgb24KKyAgICAg ICAgdGhpcyBpbmRleCwgaW4gbWlsbGlzZWNvbmRzIChzZWUgPHhyZWYgbGlua2VuZD0icnVu dGltZS1jb25maWctcmVzb3VyY2UtdmFjdXVtLWNvc3QiLz4KKyAgICAgICAgZm9yIGRldGFp bHMpCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4K KyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJj b2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnN5c3RlbV90aW1lPC9z dHJ1Y3RmaWVsZD4gPHR5cGU+ZmxvYXQ4PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAg PHBhcmE+CisgICAgICAgIFN5c3RlbSBDUFUgdGltZSBvZiB2YWN1dW1pbmcgdGhpcyBpbmRl eCwgaW4gbWlsbGlzZWNvbmRzCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+ CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5 Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxk PnVzZXJfdGltZTwvc3RydWN0ZmllbGQ+IDx0eXBlPmZsb2F0ODwvdHlwZT4KKyAgICAgIDwv cGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgICBVc2VyIENQVSB0aW1lIG9mIHZhY3V1bWlu ZyB0aGlzIGluZGV4LCBpbiBtaWxsaXNlY29uZHMKKyAgICAgIDwvcGFyYT48L2VudHJ5Pgor ICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2df dGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8 c3RydWN0ZmllbGQ+dG90YWxfdGltZTwvc3RydWN0ZmllbGQ+IDx0eXBlPmZsb2F0ODwvdHlw ZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgICBUb3RhbCB0aW1lIG9m IHZhY3V1bWluZyB0aGlzIGluZGV4LCBpbiBtaWxsaXNlY29uZHMKKyAgICAgIDwvcGFyYT48 L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgIDwvdGJvZHk+CisgICA8L3Rncm91cD4KKyAg PC90YWJsZT4KKyA8L3NlY3QxPgorCisgPHNlY3QxIGlkPSJ2aWV3LXBnLXN0YXQtdmFjdXVt LXRhYmxlcyI+CisgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19zdGF0X3ZhY3V1bV90YWJsZXM8 L3N0cnVjdG5hbWU+PC90aXRsZT4KKworICA8aW5kZXh0ZXJtIHpvbmU9InZpZXctcGctc3Rh dC12YWN1dW0tdGFibGVzIj4KKyAgIDxwcmltYXJ5PnBnX3N0YXRfdmFjdXVtX3RhYmxlczwv cHJpbWFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAgPHBhcmE+CisgICBUaGUgdmlldyA8c3Ry dWN0bmFtZT5wZ19zdGF0X3ZhY3V1bV90YWJsZXM8L3N0cnVjdG5hbWU+IHdpbGwgY29udGFp bgorICAgb25lIHJvdyBmb3IgZWFjaCB0YWJsZSBpbiB0aGUgY3VycmVudCBkYXRhYmFzZSAo aW5jbHVkaW5nIFRPQVNUCisgICB0YWJsZXMpLCBzaG93aW5nIHN0YXRpc3RpY3MgYWJvdXQg dmFjdXVtaW5nIHRoYXQgc3BlY2lmaWMgdGFibGUuCisgIDwvcGFyYT4KKworICA8dGFibGU+ CisgICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfc3RhdF92YWN1dW1fdGFibGVzPC9zdHJ1Y3Ru YW1lPiBDb2x1bW5zPC90aXRsZT4KKyAgIDx0Z3JvdXAgY29scz0iMSI+CisgICAgPHRoZWFk PgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnki PjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICBDb2x1bW4gVHlwZQor ICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgRGVzY3JpcHRpb24KKyAgICAg IDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3RoZWFkPgorCisgICAgPHRi b2R5PgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50 cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0Zmll bGQ+cmVsaWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICA8L3BhcmE+ CisgICAgICA8cGFyYT4KKyAgICAgICBPSUQgb2YgYSB0YWJsZQorICAgICAgPC9wYXJhPjwv ZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0i Y2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgor ICAgICAgIDxzdHJ1Y3RmaWVsZD5zY2hlbWE8L3N0cnVjdGZpZWxkPiA8dHlwZT5uYW1lPC90 eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIE5hbWUgb2YgdGhl IHNjaGVtYSB0aGlzIHRhYmxlIGlzIGluCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAg PC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVj dGZpZWxkPnJlbG5hbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT5uYW1lPC90eXBlPgorICAgICAg PC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTmFtZSBvZiB0aGlzIHRhYmxlCisgICAg ICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxl bnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVm aW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnRvdGFsX2Jsa3NfcmVhZDwvc3RydWN0 ZmllbGQ+IDx0eXBlPmludDg8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4K KyAgICAgICAgTnVtYmVyIG9mIGRhdGFiYXNlIGJsb2NrcyByZWFkIGJ5IHZhY3V1bSBvcGVy YXRpb25zCisgICAgICAgIHBlcmZvcm1lZCBvbiB0aGlzIHRhYmxlCisgICAgICA8L3BhcmE+ PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xl PSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+ CisgICAgICAgPHN0cnVjdGZpZWxkPnRvdGFsX2Jsa3NfaGl0PC9zdHJ1Y3RmaWVsZD4gPHR5 cGU+aW50ODwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgICBO dW1iZXIgb2YgdGltZXMgZGF0YWJhc2UgYmxvY2tzIHdlcmUgZm91bmQgaW4gdGhlCisgICAg ICAgIGJ1ZmZlciBjYWNoZSBieSB2YWN1dW0gb3BlcmF0aW9ucworICAgICAgICBwZXJmb3Jt ZWQgb24gdGhpcyB0YWJsZQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93Pgor CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD50 b3RhbF9ibGtzX2RpcnRpZWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQ4PC90eXBlPgorICAg ICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIE51bWJlciBvZiBibG9ja3Mgd3Jp dHRlbiBkaXJlY3RseSBieSB2YWN1dW0gb3IgYXV0byB2YWN1dW0uCisgICAgICAgIEJsb2Nr cyB0aGF0IGFyZSBkaXJ0aWVkIGJ5IGEgdmFjdXVtIHByb2Nlc3MgY2FuIGJlIHdyaXR0ZW4g b3V0IGJ5IGFub3RoZXIgcHJvY2Vzcy4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8 L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVf ZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0 ZmllbGQ+dG90YWxfYmxrc193cml0dGVuPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50ODwvdHlw ZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgICBOdW1iZXIgb2YgZGF0 YWJhc2UgYmxvY2tzIHdyaXR0ZW4gYnkgdmFjdXVtIG9wZXJhdGlvbnMKKyAgICAgICAgcGVy Zm9ybWVkIG9uIHRoaXMgdGFibGUKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jv dz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50 cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0Zmll bGQ+cmVsX2Jsa3NfcmVhZDwvc3RydWN0ZmllbGQ+IDx0eXBlPmludDg8L3R5cGU+CisgICAg ICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgTnVtYmVyIG9mIGJsb2NrcyB2YWN1 dW0gb3BlcmF0aW9ucyByZWFkIGZyb20gdGhpcworICAgICAgICB0YWJsZQorICAgICAgPC9w YXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkg cm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRp b24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5yZWxfYmxrc19oaXQ8L3N0cnVjdGZpZWxkPiA8 dHlwZT5pbnQ4PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAg IE51bWJlciBvZiB0aW1lcyBibG9ja3Mgb2YgdGhpcyB0YWJsZSB3ZXJlIGFscmVhZHkgZm91 bmQKKyAgICAgICAgaW4gdGhlIGJ1ZmZlciBjYWNoZSBieSB2YWN1dW0gb3BlcmF0aW9ucywg c28gdGhhdCBhIHJlYWQgd2FzIG5vdCBuZWNlc3NhcnkKKyAgICAgICAgKHRoaXMgb25seSBp bmNsdWRlcyBoaXRzIGluIHRoZQorICAgICAgICBwcm9qZWN0OyBidWZmZXIgY2FjaGUsIG5v dCB0aGUgb3BlcmF0aW5nIHN5c3RlbSdzIGZpbGUgc3lzdGVtIGNhY2hlKQorICAgICAgPC9w YXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkg cm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRp b24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wYWdlc19zY2FubmVkPC9zdHJ1Y3RmaWVsZD4g PHR5cGU+aW50ODwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAg ICBOdW1iZXIgb2YgcGFnZXMgZXhhbWluZWQgYnkgdmFjdXVtIG9wZXJhdGlvbnMKKyAgICAg ICAgcGVyZm9ybWVkIG9uIHRoaXMgdGFibGUKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAg ICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFi bGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3Ry dWN0ZmllbGQ+cGFnZXNfcmVtb3ZlZDwvc3RydWN0ZmllbGQ+IDx0eXBlPmludDg8L3R5cGU+ CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgTnVtYmVyIG9mIHBhZ2Vz IHJlbW92ZWQgZnJvbSB0aGUgcGh5c2ljYWwgc3RvcmFnZSBieSB2YWN1dW0gb3BlcmF0aW9u cworICAgICAgICBwZXJmb3JtZWQgb24gdGhpcyB0YWJsZQorICAgICAgPC9wYXJhPjwvZW50 cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0 YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAg ICAgIDxzdHJ1Y3RmaWVsZD52bV9uZXdfZnJvemVuX3BhZ2VzPC9zdHJ1Y3RmaWVsZD4gPHR5 cGU+aW50ODwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgICBO dW1iZXIgb2YgdGhlIG51bWJlciBvZiBwYWdlcyBuZXdseSBzZXQgYWxsLWZyb3plbiBieSB2 YWN1dW0KKyAgICAgICAgaW4gdGhlIHZpc2liaWxpdHkgbWFwLgorICAgICAgPC9wYXJhPjwv ZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0i Y2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgor ICAgICAgIDxzdHJ1Y3RmaWVsZD52bV9uZXdfdmlzaWJsZV9wYWdlczwvc3RydWN0ZmllbGQ+ IDx0eXBlPmludDg8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAg ICAgTnVtYmVyIG9mIHRoZSBudW1iZXIgb2YgcGFnZXMgbmV3bHkgc2V0IGFsbC12aXNpYmxl IGJ5IHZhY3V1bQorICAgICAgICBpbiB0aGUgdmlzaWJpbGl0eSBtYXAuCisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSBy b2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlv biI+CisgICAgICAgPHN0cnVjdGZpZWxkPnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlczwv c3RydWN0ZmllbGQ+IDx0eXBlPmludDg8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8 cGFyYT4KKyAgICAgICAgTnVtYmVyIG9mIHRoZSBudW1iZXIgb2YgcGFnZXMgbmV3bHkgc2V0 IGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuCisgICAgICAgIGJ5IHZhY3V1bSBpbiB0aGUg dmlzaWJpbGl0eSBtYXAuCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisK KyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48 cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnR1 cGxlc19kZWxldGVkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50ODwvdHlwZT4KKyAgICAgIDwv cGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgICBOdW1iZXIgb2YgZGVhZCB0dXBsZXMgdmFj dXVtIG9wZXJhdGlvbnMgZGVsZXRlZCBmcm9tIHRoaXMgdGFibGUKKyAgICAgIDwvcGFyYT48 L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9 ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4K KyAgICAgICA8c3RydWN0ZmllbGQ+dHVwbGVzX2Zyb3plbjwvc3RydWN0ZmllbGQ+IDx0eXBl PmludDg8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgTnVt YmVyIG9mIHR1cGxlcyBvZiB0aGlzIHRhYmxlIHRoYXQgdmFjdXVtIG9wZXJhdGlvbnMgbWFy a2VkIGFzCisgICAgICAgIGZyb3plbgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwv cm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9l bnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3Rm aWVsZD5yZWNlbnRseV9kZWFkX3R1cGxlczwvc3RydWN0ZmllbGQ+IDx0eXBlPmludDg8L3R5 cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgTnVtYmVyIG9mIGRl YWQgdHVwbGVzIHZhY3V1bSBvcGVyYXRpb25zIGxlZnQgaW4gdGhpcyB0YWJsZSBkdWUKKyAg ICAgICAgdG8gdGhlaXIgdmlzaWJpbGl0eSBpbiB0cmFuc2FjdGlvbnMKKyAgICAgIDwvcGFy YT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9s ZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24i PgorICAgICAgIDxzdHJ1Y3RmaWVsZD5taXNzZWRfZGVhZF90dXBsZXM8L3N0cnVjdGZpZWxk PiA8dHlwZT5pbnQ4PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAg ICAgIE51bWJlciBvZiBmdWxseSBERUFEIChub3QganVzdCBSRUNFTlRMWV9ERUFEKSB0dXBs ZXMgIHRoYXQgY291bGQgbm90IGJlCisgICAgICAgIHBydW5lZCBkdWUgdG8gZmFpbHVyZSB0 byBhY3F1aXJlIGEgY2xlYW51cCBsb2NrIG9uIGEgaGVhcCBwYWdlLgorICAgICAgPC9wYXJh PjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9s ZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24i PgorICAgICAgIDxzdHJ1Y3RmaWVsZD5pbmRleF92YWN1dW1fY291bnQ8L3N0cnVjdGZpZWxk PiA8dHlwZT5pbnQ4PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAg ICAgIE51bWJlciBvZiB0aW1lcyBpbmRleGVzIG9uIHRoaXMgdGFibGUgd2VyZSB2YWN1dW1l ZAorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+Cisg ICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29s dW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD53cmFwYXJvdW5kX2ZhaWxz YWZlX2NvdW50PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50NDwvdHlwZT4KKyAgICAgIDwvcGFy YT4KKyAgICAgIDxwYXJhPgorICAgICAgICBOdW1iZXIgb2YgdGltZXMgdGhlIHZhY3V1bSB3 YXMgcnVuIHRvIHByZXZlbnQgYSB3cmFwYXJvdW5kIHByb2JsZW0uCisgICAgICA8L3BhcmE+ PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xl PSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+ CisgICAgICAgPHN0cnVjdGZpZWxkPm1pc3NlZF9kZWFkX3BhZ2VzPC9zdHJ1Y3RmaWVsZD4g PHR5cGU+aW50ODwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAg ICBOdW1iZXIgb2YgcGFnZXMgdGhhdCBoYWQgYXQgbGVhc3Qgb25lIG1pc3NlZF9kZWFkX3R1 cGxlcy4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93 PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9 ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+d2FsX3JlY29yZHM8 L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQ4PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAg PHBhcmE+CisgICAgICAgIFRvdGFsIG51bWJlciBvZiBXQUwgcmVjb3JkcyBnZW5lcmF0ZWQg YnkgdmFjdXVtIG9wZXJhdGlvbnMKKyAgICAgICAgcGVyZm9ybWVkIG9uIHRoaXMgdGFibGUK KyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAg ICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVt bl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+d2FsX2ZwaTwvc3RydWN0Zmll bGQ+IDx0eXBlPmludDg8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAg ICAgICAgVG90YWwgbnVtYmVyIG9mIFdBTCBmdWxsIHBhZ2UgaW1hZ2VzIGdlbmVyYXRlZCBi eSB2YWN1dW0gb3BlcmF0aW9ucworICAgICAgICBwZXJmb3JtZWQgb24gdGhpcyB0YWJsZQor ICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAg ICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1u X2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD53YWxfYnl0ZXM8L3N0cnVjdGZp ZWxkPiA8dHlwZT5udW1lcmljPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+ CisgICAgICAgIFRvdGFsIGFtb3VudCBvZiBXQUwgYnl0ZXMgZ2VuZXJhdGVkIGJ5IHZhY3V1 bSBvcGVyYXRpb25zCisgICAgICAgIHBlcmZvcm1lZCBvbiB0aGlzIHRhYmxlCisgICAgICA8 L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRy eSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5p dGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmJsa19yZWFkX3RpbWU8L3N0cnVjdGZpZWxk PiA8dHlwZT5pbnQ4PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAg ICAgIFRpbWUgc3BlbnQgcmVhZGluZyBkYXRhYmFzZSBibG9ja3MgYnkgdmFjdXVtIG9wZXJh dGlvbnMgcGVyZm9ybWVkIG9uCisgICAgICAgIHRoaXMgdGFibGUsIGluIG1pbGxpc2Vjb25k cyAoaWYgPHhyZWYgbGlua2VuZD0iZ3VjLXRyYWNrLWlvLXRpbWluZyIvPiBpcyBlbmFibGVk LAorICAgICAgICBvdGhlcndpc2UgemVybykKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAg ICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFi bGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3Ry dWN0ZmllbGQ+YmxrX3dyaXRlX3RpbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQ4PC90eXBl PgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIFRpbWUgc3BlbnQgd3Jp dGluZyBkYXRhYmFzZSBibG9ja3MgYnkgdmFjdXVtIG9wZXJhdGlvbnMgcGVyZm9ybWVkIG9u CisgICAgICAgIHRoaXMgdGFibGUsIGluIG1pbGxpc2Vjb25kcyAoaWYgPHhyZWYgbGlua2Vu ZD0iZ3VjLXRyYWNrLWlvLXRpbWluZyIvPiBpcyBlbmFibGVkLAorICAgICAgICBvdGhlcndp c2UgemVybykKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8 cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+ZGVsYXlfdGlt ZTwvc3RydWN0ZmllbGQ+IDx0eXBlPmZsb2F0ODwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAg ICAgIDxwYXJhPgorICAgICAgICBUaW1lIHNwZW50IHNsZWVwaW5nIGluIGEgdmFjdXVtIGRl bGF5IHBvaW50IGJ5IHZhY3V1bSBvcGVyYXRpb25zIHBlcmZvcm1lZCBvbgorICAgICAgICB0 aGlzIHRhYmxlLCBpbiBtaWxsaXNlY29uZHMgKHNlZSA8eHJlZiBsaW5rZW5kPSJydW50aW1l LWNvbmZpZy1yZXNvdXJjZS12YWN1dW0tY29zdCIvPgorICAgICAgICBmb3IgZGV0YWlscykK KyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAg ICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVt bl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+c3lzdGVtX3RpbWU8L3N0cnVj dGZpZWxkPiA8dHlwZT5mbG9hdDg8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFy YT4KKyAgICAgICAgU3lzdGVtIENQVSB0aW1lIG9mIHZhY3V1bWluZyB0aGlzIHRhYmxlLCBp biBtaWxsaXNlY29uZHMKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwor ICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxw YXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+dXNl cl90aW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+ZmxvYXQ4PC90eXBlPgorICAgICAgPC9wYXJh PgorICAgICAgPHBhcmE+CisgICAgICAgIFVzZXIgQ1BVIHRpbWUgb2YgdmFjdXVtaW5nIHRo aXMgdGFibGUsIGluIG1pbGxpc2Vjb25kcworICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAg IDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJs ZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1 Y3RmaWVsZD50b3RhbF90aW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+ZmxvYXQ4PC90eXBlPgor ICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIFRvdGFsIHRpbWUgb2YgdmFj dXVtaW5nIHRoaXMgdGFibGUsIGluIG1pbGxpc2Vjb25kcworICAgICAgPC9wYXJhPjwvZW50 cnk+CisgICAgIDwvcm93PgorCisgICAgPC90Ym9keT4KKyAgIDwvdGdyb3VwPgorICA8L3Rh YmxlPgorICA8cGFyYT5Db2x1bW5zIDxzdHJ1Y3RmaWVsZD50b3RhbF8qPC9zdHJ1Y3RmaWVs ZD4sIDxzdHJ1Y3RmaWVsZD53YWxfKjwvc3RydWN0ZmllbGQ+CisgICAgYW5kIDxzdHJ1Y3Rm aWVsZD5ibGtfKjwvc3RydWN0ZmllbGQ+IGluY2x1ZGUgZGF0YSBvbiB2YWN1dW1pbmcgaW5k ZXhlcyBvbiB0aGlzIHRhYmxlLCB3aGlsZSBjb2x1bW5zCisgICAgPHN0cnVjdGZpZWxkPnN5 c3RlbV90aW1lPC9zdHJ1Y3RmaWVsZD4gYW5kIDxzdHJ1Y3RmaWVsZD51c2VyX3RpbWU8L3N0 cnVjdGZpZWxkPiBvbmx5IGluY2x1ZGUgZGF0YQorICAgIG9uIHZhY3V1bWluZyB0aGUgaGVh cC48L3BhcmE+CisgPC9zZWN0MT4KIDwvY2hhcHRlcj4KLS0gCjIuMzQuMQoK --------------vHbj04KO08FC0gAES8o5Fvao--