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 1sCkUL-007pEL-VE for pgsql-hackers@arkaria.postgresql.org; Thu, 30 May 2024 18:26:59 +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 1sCkUL-0055ff-MS for pgsql-hackers@arkaria.postgresql.org; Thu, 30 May 2024 18:26:57 +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 1sCkUL-0055fX-5z for pgsql-hackers@lists.postgresql.org; Thu, 30 May 2024 18:26:57 +0000 Received: from forward502b.mail.yandex.net ([178.154.239.146]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sCkUC-001YAm-4c for pgsql-hackers@lists.postgresql.org; Thu, 30 May 2024 18:26:56 +0000 Received: from mail-nwsmtp-smtp-production-main-45.sas.yp-c.yandex.net (mail-nwsmtp-smtp-production-main-45.sas.yp-c.yandex.net [IPv6:2a02:6b8:c23:3ac8:0:640:5c26:0]) by forward502b.mail.yandex.net (Yandex) with ESMTPS id 94B2B5F7B2; Thu, 30 May 2024 21:26:44 +0300 (MSK) Received: by mail-nwsmtp-smtp-production-main-45.sas.yp-c.yandex.net (smtp/Yandex) with ESMTPSA id dQX90J2xKW20-Yn1Ddl06; Thu, 30 May 2024 21:26:43 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1717093604; bh=KWfzcCLorhox8IIA/1DBNblsgvG/GqT5w0uARR2mRaQ=; h=In-Reply-To:References:To:Subject:Message-ID:Date:From; b=YMMTsJsR94uP3z1i9dcERBER4X05zK2GWgg2JnMDI6zbuKEMCdVhgL7d5po3+X/PW UjqSkASanlpAWde3cTOm0cV35zXniid4aHkoBhNQCfqqXjkHhB0/fjDVbUI1MLExA/ YFGAxK8nPqiaX7hQreYqyGLvqCJlPUsO4ig0mZRM= Authentication-Results: mail-nwsmtp-smtp-production-main-45.sas.yp-c.yandex.net; dkim=pass header.i=@yandex.ru Content-Type: multipart/mixed; boundary="------------8Gft2d5JY0ReR95bAj6Hf3Z0" Message-ID: <70e1cca9-ff89-4e76-a611-d38bcc0e14ad@yandex.ru> Date: Thu, 30 May 2024 11:26:38 -0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Vacuum statistics From: Alena Rybakina To: PostgreSQL Developers , Andrey Lepikhov , Andrei Zubkov References: Content-Language: en-US In-Reply-To: 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. --------------8Gft2d5JY0ReR95bAj6Hf3Z0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 30.05.2024 10:33, Alena Rybakina wrote: > > I suggest gathering information about vacuum resource consumption for > processing indexes and tables and storing it in the table and index > relationships (for example, PgStat_StatTabEntry structure like it has > realized for usual statistics). It will allow us to determine how well > the vacuum is configured and evaluate the effect of overhead on the > system at the strategic level, the vacuum has gathered this > information already, but this valuable information doesn't store it. > My colleagues and I have prepared a patch that can help to solve this problem. We are open to feedback. -- Regards, Alena Rybakina Postgres Professional: http://www.postgrespro.com The Russian Postgres Company --------------8Gft2d5JY0ReR95bAj6Hf3Z0 Content-Type: text/x-patch; charset=UTF-8; name="0001-Machinery-for-grabbing-an-extended-vacuum-statistics.patch" Content-Disposition: attachment; filename*0="0001-Machinery-for-grabbing-an-extended-vacuum-statistics.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBkZmRhNjU2YjM1YmUyYTczYzA3NmNiNzIzZmRlYjkxNzYzMGU2MWUzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVuYSBSeWJha2luYSA8YS5yeWJha2luYUBwb3N0 Z3Jlc3Byby5ydT4KRGF0ZTogVGh1LCAzMCBNYXkgMjAyNCAxMTowMjoxMCAtMDcwMApTdWJq ZWN0OiBbUEFUQ0hdIE1hY2hpbmVyeSBmb3IgZ3JhYmJpbmcgYW4gZXh0ZW5kZWQgdmFjdXVt IHN0YXRpc3RpY3Mgb24gCiByZWxhdGlvbnMuIFJlbWVtYmVyLCBzdGF0aXN0aWMgb24gaGVh cCBhbmQgaW5kZXggcmVsYXRpb25zIGEgYml0IGRpZmZlcmVudC4KClZhbHVlIG9mIHRvdGFs X2Jsa3NfaGl0LCB0b3RhbF9ibGtzX3JlYWQsIHRvdGFsX2Jsa3NfZGlydGllZCBhcmUgbnVt YmVyIG9mCmhpdHRlZCwgbWlzc2VkIGFuZCBkaXJ0aWVkIHBhZ2VzIGluIHNoYXJlZCBidWZm ZXJzIGR1cmluZyBhIHZhY3V1bSBvcGVyYXRpb24KcmVzcGVjdGl2ZWx5LgoKdG90YWxfYmxr c19kaXJ0aWVkIG1lYW5zICdkaXJ0aWVkIG9ubHkgYnkgdGhpcyBhY3Rpb24nLiBTbywgaWYg dGhpcyBwYWdlIHdhcwpkaXJ0eSBiZWZvcmUgdGhlIHZhY3V1bSBvcGVyYXRpb24sIGl0IGRv ZXNuJ3QgY291bnQgdGhpcyBwYWdlIGFzICdkaXJ0aWVkJy4KClRoZSB0dXBsZXNfZGVsZXRl ZCBwYXJhbWV0ZXIgaXMgdGhlIG51bWJlciBvZiB0dXBsZXMgY2xlYW5lZCB1cCBieSB0aGUg dmFjdXVtCm9wZXJhdGlvbi4KClRoZSBkZWxheV90aW1lIHZhbHVlIG1lYW5zIHRvdGFsIHZh Y3V1bSBzbGVlcCB0aW1lIGluIHZhY3V1bSBkZWxheSBwb2ludC4KVGhlIHBhZ2VzX3JlbW92 ZWQgdmFsdWUgaXMgdGhlIG51bWJlciBvZiBwYWdlcyBieSB3aGljaCB0aGUgcGh5c2ljYWwg ZGF0YQpzdG9yYWdlIG9mIHRoZSByZWxhdGlvbiB3YXMgcmVkdWNlZC4KVGhlIHZhbHVlIG9m IHBhZ2VzX2RlbGV0ZWQgcGFyYW1ldGVyIGlzIHRoZSBudW1iZXIgb2YgZnJlZWQgcGFnZXMg aW4gdGhlIHRhYmxlCihmaWxlIHNpemUgbWF5IG5vdCBoYXZlIGNoYW5nZWQpLgoKSW50ZXJy dXB0aW9ucyBudW1iZXIgb2YgKGF1dG8pdmFjdXVtIHByb2Nlc3MgZHVyaW5nIHZhY3V1bWlu ZyBvZiBhIHJlbGF0aW9uLgpXZSByZXBvcnQgZnJvbSB0aGUgdmFjdXVtX2Vycm9yX2NhbGxi YWNrIHJvdXRpbmUuIFNvIHdlIGNhbiBsb2cgYWxsIEVSUk9SCnJlcG9ydHMuIEluIHRoZSBj YXNlIG9mIGF1dG92YWN1dW0gd2UgY2FuIHJlcG9ydCBTSUdJTlQgc2lnbmFscyB0b28uCkl0 IG1heWJlIGRhbmdlcm91cyB0byBtYWtlIHN1Y2ggY29tcGxleCB0YXNrIChzZW5kKSBpbiBh biBlcnJvciBjYWxsYmFjayAtCndlIGNhbiBjYXRjaCBFUlJPUiBpbiBFUlJPUiBwcm9ibGVt LiBCdXQgaXQgbG9va3MgbGlrZSB3ZSBoYXZlIHNvIHNtYWxsCmNoYW5jZSB0byBzdHVjayBp bnRvIHRoaXMgcHJvYmxlbS4gU28sIGxldCdzIHRyeSB0byB1c2UuClRoaXMgcGFyYW1ldGVy IHJlbGF0ZXMgdG8gYSBwcm9ibGVtLCBjb3ZlcmVkIGJ5IGIxOWU0MjUwLgoKVHJhY2tpbmcg b2YgSU8gZHVyaW5nIGFuIChhdXRvKXZhY3V1bSBvcGVyYXRpb24uCkludHJvZHVjZWQgdmFy aWFibGVzIGJsa19yZWFkX3RpbWUgYW5kIGJsa193cml0ZV90aW1lIHRyYWNrcyBvbmx5IGFj Y2VzcyB0bwpidWZmZXIgcGFnZXMgYW5kIGZsdXNoaW5nIHRoZW0gdG8gZGlzay4gUmVhZGlu ZyBvcGVyYXRpb24gaXMgdHJpdmlhbCwgYnV0CndyaXRpbmcgbWVhc3VyZW1lbnQgdGVjaG5p cXVlIGlzIG5vdCBvYnZpb3VzLgpTbywgZHVyaW5nIGEgdmFjdXVtIHdyaXRpbmcgdGltZSBj YW4gYmUgemVybyBpbmNyZW1lbnRlZCBiZWNhdXNlIG5vIGFueSBmbHVzaGluZwpvcGVyYXRp b25zIHdlcmUgcGVyZm9ybWVkLgoKU3lzdGVtIHRpbWUgYW5kIHVzZXIgdGltZSBhcmUgcGFy YW1ldGVycyB0aGF0IGRlc2NyaWJlcyBob3cgbXVjaCB0aW1lIGEgdmFjdXVtCm9wZXJhdGlv biBoYXMgc3BlbnQgaW4gZXhlY3V0aW5nIG9mIGNvZGUgaW4gdXNlciBzcGFjZSBhbmQga2Vy bmVsIHNwYWNlCmFjY29yZGluZ2x5LiBBbHNvLCBhY2N1bXVsYXRlIHRvdGFsIHRpbWUgb2Yg YSB2YWN1dW0gdGhhdCBpcyBhIGRpZmYgYmV0d2Vlbgp0aW1lc3RhbXBzIGluIHN0YXJ0IGFu ZCBmaW5pc2ggcG9pbnRzIGluIHRoZSB2YWN1dW0gY29kZS4KUmVtZW1iZXIgYWJvdXQgaWRs ZSB0aW1lLCB3aGVuIHZhY3V1bSB3YWl0ZWQgZm9yIElPIGFuZCBsb2Nrcywgc28gdG90YWwg dGltZQppc24ndCBlcXVhbCBhIHN1bSBvZiB1c2VyIGFuZCBzeXN0ZW0gdGltZSwgYnV0IG5v IGxlc3MuCgpwYWdlc19mcm96ZW4gLSBudW1iZXIgb2YgcGFnZXMgdGhhdCBhcmUgbWFya2Vk IGFzIGZyb3plbiBpbiB2bSBkdXJpbmcgdmFjdXVtLgpUaGlzIHBhcmFtZXRlciBpcyBpbmNy ZW1lbnRlZCBpZiBwYWdlIGlzIG1hcmtlZCBhcyBhbGwtZnJvemVuLgpwYWdlc19hbGxfdmlz aWJsZSAtIG51bWJlciBvZiBwYWdlcyB0aGF0IGFyZSBtYXJrZWQgYXMgYWxsLXZpc2libGUg aW4gdm0gZHVyaW5nCnZhY3V1bS4KCkF1dGhvcnM6IEFsZW5hIFJ5YmFraW5hIDxsZW5hLnJp YmFja2luYUB5YW5kZXgucnU+LCBBbmRyZWkgTGVwaWtob3YgPGEubGVwaWtob3ZAcG9zdGdy ZXNwcm8ucnU+LCBBbmRyZWkgWnVia292IDxhLnp1YmtvdkBwb3N0Z3Jlc3Byby5ydT4KLS0t CiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgICAgICAgICAgfCAyNDUg KysrKysrKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jICAg ICAgIHwgIDEzICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCAgICAg ICAgICB8IDEyMyArKysrKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMgICAgICAg ICAgICAgICAgIHwgICA0ICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVs LmMgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXQu YyAgICAgICAgICAgfCAxMTcgKysrLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bn c3RhdF9kYXRhYmFzZS5jICB8ICAgMSArCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9w Z3N0YXRfcmVsYXRpb24uYyAgfCAgNTIgKystCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcGdz dGF0ZnVuY3MuYyAgICAgICAgICAgfCAyOTAgKysrKysrKysrKysrCiBzcmMvYmFja2VuZC91 dGlscy9lcnJvci9lbG9nLmMgICAgICAgICAgICAgICAgfCAgMTMgKwogc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgICAgIHwgIDI4ICstCiBzcmMvaW5jbHVk ZS9jb21tYW5kcy92YWN1dW0uaCAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1 ZGUvcGdzdGF0LmggICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTE4ICsrKystCiBzcmMv aW5jbHVkZS91dGlscy9lbG9nLmggICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNy Yy9pbmNsdWRlL3V0aWxzL3Bnc3RhdF9pbnRlcm5hbC5oICAgICAgICAgICB8ICAzNiArLQog Li4uL2V4cGVjdGVkL3ZhY3V1bS1leHRlbmRlZC1zdGF0aXN0aWMub3V0ICAgIHwgNDE5ICsr KysrKysrKysrKysrKysrKwogLi4uL2lzb2xhdGlvbi9leHBlY3RlZC92YWN1dW0tZXh0ZW5k aW5nLm91dCAgIHwgIDY4ICsrKwogc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hl ZHVsZSAgICAgICAgIHwgICAyICsKIC4uLi9zcGVjcy92YWN1dW0tZXh0ZW5kZWQtc3RhdGlz dGljLnNwZWMgICAgICB8IDE3OSArKysrKysrKwogLi4uL2lzb2xhdGlvbi9zcGVjcy92YWN1 dW0tZXh0ZW5kaW5nLnNwZWMgICAgIHwgIDU4ICsrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9vcHJfc2FuaXR5Lm91dCAgICAgIHwgICA5ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3J1bGVzLm91dCAgICAgICAgICAgfCAgNzkgKysrKwogMjIgZmlsZXMgY2hhbmdl ZCwgMTgxMiBpbnNlcnRpb25zKCspLCA0NiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvdmFjdXVtLWV4dGVuZGVkLXN0YXRp c3RpYy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0 ZWQvdmFjdXVtLWV4dGVuZGluZy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9p c29sYXRpb24vc3BlY3MvdmFjdXVtLWV4dGVuZGVkLXN0YXRpc3RpYy5zcGVjCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3ZhY3V1bS1leHRlbmRpbmcu c3BlYwoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCA4MTQ1ZWE4 ZmMzZi4uYWE4NGYzMDQ0M2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMKQEAgLTE2OCw2ICsxNjgsOSBAQCB0eXBlZGVmIHN0cnVjdCBMVlJlbFN0YXRlCiAJY2hh cgkgICAqZGJuYW1lOwogCWNoYXIJICAgKnJlbG5hbWVzcGFjZTsKIAljaGFyCSAgICpyZWxu YW1lOworCU9pZAkJCXJlbG9pZDsKKwlPaWQJCQlpbmRvaWQ7CisKIAljaGFyCSAgICppbmRu YW1lOwkJLyogQ3VycmVudCBpbmRleCBuYW1lICovCiAJQmxvY2tOdW1iZXIgYmxrbm87CQkJ LyogdXNlZCBvbmx5IGZvciBoZWFwIG9wZXJhdGlvbnMgKi8KIAlPZmZzZXROdW1iZXIgb2Zm bnVtOwkJLyogdXNlZCBvbmx5IGZvciBoZWFwIG9wZXJhdGlvbnMgKi8KQEAgLTE5NCw2ICsx OTcsOCBAQCB0eXBlZGVmIHN0cnVjdCBMVlJlbFN0YXRlCiAJQmxvY2tOdW1iZXIgbHBkZWFk X2l0ZW1fcGFnZXM7CS8qICMgcGFnZXMgd2l0aCBMUF9ERUFEIGl0ZW1zICovCiAJQmxvY2tO dW1iZXIgbWlzc2VkX2RlYWRfcGFnZXM7CS8qICMgcGFnZXMgd2l0aCBtaXNzZWQgZGVhZCB0 dXBsZXMgKi8KIAlCbG9ja051bWJlciBub25lbXB0eV9wYWdlczsgLyogYWN0dWFsbHksIGxh c3Qgbm9uZW1wdHkgcGFnZSArIDEgKi8KKwlCbG9ja051bWJlciBzZXRfZnJvemVuX3BhZ2Vz OyAvKiBwYWdlcyBhcmUgbWFya2VkIGFzIGZyb3plbiBpbiB2bSBkdXJpbmcgdmFjdXVtICov CisJQmxvY2tOdW1iZXIgc2V0X2FsbF92aXNpYmxlX3BhZ2VzOwkvKiBwYWdlcyBhcmUgbWFy a2VkIGFzIGFsbC12aXNpYmxlIGluIHZtIGR1cmluZyB2YWN1dW0gKi8KIAogCS8qIFN0YXRp c3RpY3Mgb3V0cHV0IGJ5IHVzLCBmb3IgdGFibGUgKi8KIAlkb3VibGUJCW5ld19yZWxfdHVw bGVzOyAvKiBuZXcgZXN0aW1hdGVkIHRvdGFsICMgb2YgdHVwbGVzICovCkBAIC0yMjYsNiAr MjMxLDMyIEBAIHR5cGVkZWYgc3RydWN0IExWU2F2ZWRFcnJJbmZvCiAJVmFjRXJyUGhhc2Ug cGhhc2U7CiB9IExWU2F2ZWRFcnJJbmZvOwogCisvKgorICogQ3V0LW9mZiB2YWx1ZXMgb2Yg cGFyYW1ldGVycyB3aGljaCBjaGFuZ2VzIGltcGxpY2l0bHkgZHVyaW5nIGEgdmFjdXVtCisg KiBwcm9jZXNzLgorICogVmFjdXVtIGNhbid0IGNvbnRyb2wgdGhlaXIgdmFsdWVzLCBzbyB3 ZSBzaG91bGQgc3RvcmUgdGhlbSBiZWZvcmUgYW5kIGFmdGVyCisgKiB0aGUgcHJvY2Vzc2lu Zy4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgTFZFeHRTdGF0Q291bnRlcnMKK3sKKwlUaW1lc3Rh bXBUeiB0aW1lOworCVBHUlVzYWdlCXJ1OworCVdhbFVzYWdlCXdhbHVzYWdlOworCUJ1ZmZl clVzYWdlIGJ1ZnVzYWdlOworCWludDY0CQlWYWN1dW1QYWdlTWlzczsKKwlpbnQ2NAkJVmFj dXVtUGFnZUhpdDsKKwlpbnQ2NAkJVmFjdXVtUGFnZURpcnR5OworCWRvdWJsZQkJVmFjdXVt RGVsYXlUaW1lOworCVBnU3RhdF9Db3VudGVyIGJsb2Nrc19mZXRjaGVkOworCVBnU3RhdF9D b3VudGVyIGJsb2Nrc19oaXQ7Cit9IExWRXh0U3RhdENvdW50ZXJzOworCit0eXBlZGVmIHN0 cnVjdCBMVkV4dFN0YXRDb3VudGVyc0lkeAoreworCUxWRXh0U3RhdENvdW50ZXJzIGNvbW1v bjsKKwlpbnQ2NAkJcGFnZXNfZGVsZXRlZDsKKwlpbnQ2NAkJdHVwbGVzX3JlbW92ZWQ7Cit9 IExWRXh0U3RhdENvdW50ZXJzSWR4OwogCiAvKiBub24tZXhwb3J0IGZ1bmN0aW9uIHByb3Rv dHlwZXMgKi8KIHN0YXRpYyB2b2lkIGxhenlfc2Nhbl9oZWFwKExWUmVsU3RhdGUgKnZhY3Jl bCk7CkBAIC0yNzksNiArMzEwLDE1OCBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfdmFjdXVtX2Vy cm9yX2luZm8oTFZSZWxTdGF0ZSAqdmFjcmVsLAogc3RhdGljIHZvaWQgcmVzdG9yZV92YWN1 dW1fZXJyb3JfaW5mbyhMVlJlbFN0YXRlICp2YWNyZWwsCiAJCQkJCQkJCQkgIGNvbnN0IExW U2F2ZWRFcnJJbmZvICpzYXZlZF92YWNyZWwpOwogCisvKiAtLS0tLS0tLS0tCisgKiBleHR2 YWNfc3RhdHNfc3RhcnQoKSAtCisgKgorICogU2F2ZSBjdXQtb2ZmIHZhbHVlcyBvZiBleHRl bmRlZCB2YWN1dW0gY291bnRlcnMgYmVmb3JlIHN0YXJ0IG9mIGEgcmVsYXRpb24KKyAqIHBy b2Nlc3NpbmcuCisgKiAtLS0tLS0tLS0tCisgKi8KK3N0YXRpYyB2b2lkCitleHR2YWNfc3Rh dHNfc3RhcnQoUmVsYXRpb24gcmVsLCBMVkV4dFN0YXRDb3VudGVycyAqY291bnRlcnMpCit7 CisJVGltZXN0YW1wVHoJc3RhcnR0aW1lOworCVBHUlVzYWdlCXJ1MDsKKworCW1lbXNldChj b3VudGVycywgMCwgc2l6ZW9mKExWRXh0U3RhdENvdW50ZXJzKSk7CisKKwlwZ19ydXNhZ2Vf aW5pdCgmcnUwKTsKKwlzdGFydHRpbWUgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CisKKwlj b3VudGVycy0+cnUgPSBydTA7CisJY291bnRlcnMtPnRpbWUgPSBzdGFydHRpbWU7CisJY291 bnRlcnMtPndhbHVzYWdlID0gcGdXYWxVc2FnZTsKKwljb3VudGVycy0+YnVmdXNhZ2UgPSBw Z0J1ZmZlclVzYWdlOworCWNvdW50ZXJzLT5WYWN1dW1QYWdlTWlzcyA9IFZhY3V1bVBhZ2VN aXNzOworCWNvdW50ZXJzLT5WYWN1dW1QYWdlSGl0ID0gVmFjdXVtUGFnZUhpdDsKKwljb3Vu dGVycy0+VmFjdXVtUGFnZURpcnR5ID0gVmFjdXVtUGFnZURpcnR5OworCWNvdW50ZXJzLT5W YWN1dW1EZWxheVRpbWUgPSBWYWN1dW1EZWxheVRpbWU7CisJY291bnRlcnMtPmJsb2Nrc19m ZXRjaGVkID0gMDsKKwljb3VudGVycy0+YmxvY2tzX2hpdCA9IDA7CisKKwlpZiAoIXJlbC0+ cGdzdGF0X2luZm8gfHwgIXBnc3RhdF90cmFja19jb3VudHMpCisJCS8qCisJCSAqIGlmIHNv bWV0aGluZyBnb2VzIHdyb25nIG9yIGFuIHVzZXIgZG9lc24ndCB3YW50IHRvIHRyYWNrIGEg ZGF0YWJhc2UKKwkJICogYWN0aXZpdHkgLSBqdXN0IHN1cHByZXNzIGl0LgorCQkgKi8KKwkJ cmV0dXJuOworCisJY291bnRlcnMtPmJsb2Nrc19mZXRjaGVkID0gcmVsLT5wZ3N0YXRfaW5m by0+Y291bnRzLmJsb2Nrc19mZXRjaGVkOworCWNvdW50ZXJzLT5ibG9ja3NfaGl0ID0gcmVs LT5wZ3N0YXRfaW5mby0+Y291bnRzLmJsb2Nrc19oaXQ7Cit9CisKKy8qIC0tLS0tLS0tLS0K KyAqIGV4dHZhY19zdGF0c19lbmQoKSAtCisgKgorICoJQ2FsbGVkIHRvIGZpbmlzaCBhbiBl eHRlbmRlZCB2YWN1dW0gc3RhdGlzdGljIGdhdGhlcmluZyBhbmQgZm9ybSBhIHJlcG9ydC4K KyAqIC0tLS0tLS0tLS0KKyAqLworc3RhdGljIHZvaWQKK2V4dHZhY19zdGF0c19lbmQoUmVs YXRpb24gcmVsLCBMVkV4dFN0YXRDb3VudGVycyAqY291bnRlcnMsCisJCQkJICBFeHRWYWNS ZXBvcnQgKnJlcG9ydCkKK3sKKwlXYWxVc2FnZQl3YWx1c2FnZTsKKwlCdWZmZXJVc2FnZQli dWZ1c2FnZTsKKwlUaW1lc3RhbXBUeiBlbmR0aW1lOworCWxvbmcJCXNlY3M7CisJaW50CQkJ dXNlY3M7CisJUEdSVXNhZ2UJcnUxOworCisJLyogQ2FsY3VsYXRlIGRpZmZzIG9mIGdsb2Jh bCBzdGF0IHBhcmFtZXRlcnMgb24gV0FMIGFuZCBidWZmZXIgdXNhZ2UuICovCisJbWVtc2V0 KCZ3YWx1c2FnZSwgMCwgc2l6ZW9mKFdhbFVzYWdlKSk7CisJV2FsVXNhZ2VBY2N1bURpZmYo JndhbHVzYWdlLCAmcGdXYWxVc2FnZSwgJmNvdW50ZXJzLT53YWx1c2FnZSk7CisKKwltZW1z ZXQoJmJ1ZnVzYWdlLCAwLCBzaXplb2YoQnVmZmVyVXNhZ2UpKTsKKwlCdWZmZXJVc2FnZUFj Y3VtRGlmZigmYnVmdXNhZ2UsICZwZ0J1ZmZlclVzYWdlLCAmY291bnRlcnMtPmJ1ZnVzYWdl KTsKKworCWVuZHRpbWUgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CisJVGltZXN0YW1wRGlm ZmVyZW5jZShjb3VudGVycy0+dGltZSwgZW5kdGltZSwgJnNlY3MsICZ1c2Vjcyk7CisKKwlt ZW1zZXQocmVwb3J0LCAwLCBzaXplb2YoRXh0VmFjUmVwb3J0KSk7CisKKwkvKgorCSAqIEZp bGwgYWRkaXRpb25hbCBzdGF0aXN0aWNzIG9uIGEgdmFjdXVtIHByb2Nlc3Npbmcgb3BlcmF0 aW9uLgorCSAqLworCXJlcG9ydC0+dG90YWxfYmxrc19yZWFkID0gVmFjdXVtUGFnZU1pc3Mg LSBjb3VudGVycy0+VmFjdXVtUGFnZU1pc3M7CisJcmVwb3J0LT50b3RhbF9ibGtzX2hpdCA9 IFZhY3V1bVBhZ2VIaXQgLSBjb3VudGVycy0+VmFjdXVtUGFnZUhpdDsKKwlyZXBvcnQtPnRv dGFsX2Jsa3NfZGlydGllZCA9IFZhY3V1bVBhZ2VEaXJ0eSAtIGNvdW50ZXJzLT5WYWN1dW1Q YWdlRGlydHk7CisJcmVwb3J0LT50b3RhbF9ibGtzX3dyaXR0ZW4gPSBidWZ1c2FnZS5zaGFy ZWRfYmxrc193cml0dGVuOworCisJcmVwb3J0LT53YWxfcmVjb3JkcyA9IHdhbHVzYWdlLndh bF9yZWNvcmRzOworCXJlcG9ydC0+d2FsX2ZwaSA9IHdhbHVzYWdlLndhbF9mcGk7CisJcmVw b3J0LT53YWxfYnl0ZXMgPSB3YWx1c2FnZS53YWxfYnl0ZXM7CisKKwlyZXBvcnQtPmJsa19y ZWFkX3RpbWUgPSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhidWZ1c2FnZS5sb2NhbF9ibGtf cmVhZF90aW1lKTsKKwlyZXBvcnQtPmJsa19yZWFkX3RpbWUgKz0gSU5TVFJfVElNRV9HRVRf TUlMTElTRUMoYnVmdXNhZ2Uuc2hhcmVkX2Jsa19yZWFkX3RpbWUpOworCXJlcG9ydC0+Ymxr X3dyaXRlX3RpbWUgPSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhidWZ1c2FnZS5sb2NhbF9i bGtfd3JpdGVfdGltZSk7CisJcmVwb3J0LT5ibGtfd3JpdGVfdGltZSA9IElOU1RSX1RJTUVf R0VUX01JTExJU0VDKGJ1ZnVzYWdlLnNoYXJlZF9ibGtfd3JpdGVfdGltZSk7CisJcmVwb3J0 LT5kZWxheV90aW1lID0gVmFjdXVtRGVsYXlUaW1lIC0gY291bnRlcnMtPlZhY3V1bURlbGF5 VGltZTsKKworCS8qCisJICogR2V0IGRpZmZlcmVuY2Ugb2YgYSBzeXN0ZW0gdGltZSBhbmQg dXNlciB0aW1lIHZhbHVlcyBpbiBtaWxsaXNlY29uZHMuCisJICogVXNlIGZsb2F0aW5nIHBv aW50IHJlcHJlc2VudGF0aW9uIHRvIHNob3cgdGFpbHMgb2YgdGltZSBkaWZmcy4KKwkgKi8K KwlwZ19ydXNhZ2VfaW5pdCgmcnUxKTsKKwlyZXBvcnQtPnN5c3RlbV90aW1lID0KKwkJKHJ1 MS5ydS5ydV9zdGltZS50dl9zZWMgLSBjb3VudGVycy0+cnUucnUucnVfc3RpbWUudHZfc2Vj KSAqIDEwMDAuICsKKwkJKHJ1MS5ydS5ydV9zdGltZS50dl91c2VjIC0gY291bnRlcnMtPnJ1 LnJ1LnJ1X3N0aW1lLnR2X3VzZWMpICogMC4wMDE7CisJcmVwb3J0LT51c2VyX3RpbWUgPQor CQkocnUxLnJ1LnJ1X3V0aW1lLnR2X3NlYyAtIGNvdW50ZXJzLT5ydS5ydS5ydV91dGltZS50 dl9zZWMpICogMTAwMC4gKworCQkocnUxLnJ1LnJ1X3V0aW1lLnR2X3VzZWMgLSBjb3VudGVy cy0+cnUucnUucnVfdXRpbWUudHZfdXNlYykgKiAwLjAwMTsKKwlyZXBvcnQtPnRvdGFsX3Rp bWUgPSBzZWNzICogMTAwMC4gKyB1c2VjcyAvIDEwMDAuOworCisJaWYgKCFyZWwtPnBnc3Rh dF9pbmZvIHx8ICFwZ3N0YXRfdHJhY2tfY291bnRzKQorCQkvKgorCQkgKiBpZiBzb21ldGhp bmcgZ29lcyB3cm9uZyBvciBhbiB1c2VyIGRvZXNuJ3Qgd2FudCB0byB0cmFjayBhIGRhdGFi YXNlCisJCSAqIGFjdGl2aXR5IC0ganVzdCBzdXBwcmVzcyBpdC4KKwkJICovCisJCXJldHVy bjsKKworCXJlcG9ydC0+Ymxrc19mZXRjaGVkID0KKwkJcmVsLT5wZ3N0YXRfaW5mby0+Y291 bnRzLmJsb2Nrc19mZXRjaGVkIC0gY291bnRlcnMtPmJsb2Nrc19mZXRjaGVkOworCXJlcG9y dC0+Ymxrc19oaXQgPQorCQlyZWwtPnBnc3RhdF9pbmZvLT5jb3VudHMuYmxvY2tzX2hpdCAt IGNvdW50ZXJzLT5ibG9ja3NfaGl0OworfQorCitzdGF0aWMgdm9pZAorZXh0dmFjX3N0YXRz X3N0YXJ0X2lkeChSZWxhdGlvbiByZWwsIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RhdHMs CisJCQkJCSAgIExWRXh0U3RhdENvdW50ZXJzSWR4ICpjb3VudGVycykKK3sKKwlleHR2YWNf c3RhdHNfc3RhcnQocmVsLCAmY291bnRlcnMtPmNvbW1vbik7CisJY291bnRlcnMtPnBhZ2Vz X2RlbGV0ZWQgPSBjb3VudGVycy0+dHVwbGVzX3JlbW92ZWQgPSAwOworCisJaWYgKHN0YXRz ICE9IE5VTEwpCisJeworCQkvKgorCQkgKiBYWFg6IFdoeSBkbyB3ZSBuZWVkIHRoaXMgY29k ZSBoZXJlPyBJZiBpdCBpcyBuZWVkZWQsIEkgZmVlbCBsYWNrIG9mCisJCSAqIGNvbW1lbnRz LCBkZXNjcmliaW5nIHRoZSByZWFzb24uCisJCSAqLworCQljb3VudGVycy0+dHVwbGVzX3Jl bW92ZWQgPSBzdGF0cy0+dHVwbGVzX3JlbW92ZWQ7CisJCWNvdW50ZXJzLT5wYWdlc19kZWxl dGVkID0gc3RhdHMtPnBhZ2VzX2RlbGV0ZWQ7CisJfQorfQorCitzdGF0aWMgdm9pZAorZXh0 dmFjX3N0YXRzX2VuZF9pZHgoUmVsYXRpb24gcmVsLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQg KnN0YXRzLAorCQkJCQkgTFZFeHRTdGF0Q291bnRlcnNJZHggKmNvdW50ZXJzLCBFeHRWYWNS ZXBvcnQgKnJlcG9ydCkKK3sKKwlleHR2YWNfc3RhdHNfZW5kKHJlbCwgJmNvdW50ZXJzLT5j b21tb24sIHJlcG9ydCk7CisJcmVwb3J0LT50eXBlID0gUEdTVEFUX0VYVFZBQ19JTkRFWDsK KworCWlmIChzdGF0cyAhPSBOVUxMKQorCXsKKwkJLyoKKwkJICogaWYgc29tZXRoaW5nIGdv ZXMgd3Jvbmcgb3IgYW4gdXNlciBkb2Vzbid0IHdhbnQgdG8gdHJhY2sgYSBkYXRhYmFzZQor CQkgKiBhY3Rpdml0eSAtIGp1c3Qgc3VwcHJlc3MgaXQuCisJCSAqLworCisJCS8qIEZpbGwg aW5kZXgtc3BlY2lmaWMgZXh0ZW5kZWQgc3RhdHMgZmllbGRzICovCisJCXJlcG9ydC0+aW5k ZXgudHVwbGVzX2RlbGV0ZWQgPQorCQkJCQkJCXN0YXRzLT50dXBsZXNfcmVtb3ZlZCAtIGNv dW50ZXJzLT50dXBsZXNfcmVtb3ZlZDsKKwkJcmVwb3J0LT5pbmRleC5wYWdlc19kZWxldGVk ID0KKwkJCQkJCQlzdGF0cy0+cGFnZXNfZGVsZXRlZCAtIGNvdW50ZXJzLT5wYWdlc19kZWxl dGVkOworCX0KK30KIAogLyoKICAqCWhlYXBfdmFjdXVtX3JlbCgpIC0tIHBlcmZvcm0gVkFD VVVNIGZvciBvbmUgaGVhcCByZWxhdGlvbgpAQCAtMzExLDYgKzQ5NCw4IEBAIGhlYXBfdmFj dXVtX3JlbChSZWxhdGlvbiByZWwsIFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCVdhbFVzYWdl CXN0YXJ0d2FsdXNhZ2UgPSBwZ1dhbFVzYWdlOwogCUJ1ZmZlclVzYWdlIHN0YXJ0YnVmZmVy dXNhZ2UgPSBwZ0J1ZmZlclVzYWdlOwogCUVycm9yQ29udGV4dENhbGxiYWNrIGVycmNhbGxi YWNrOworCUxWRXh0U3RhdENvdW50ZXJzIGV4dFZhY0NvdW50ZXJzOworCUV4dFZhY1JlcG9y dCBleHRWYWNSZXBvcnQ7CiAJY2hhcgkgICoqaW5kbmFtZXMgPSBOVUxMOwogCiAJdmVyYm9z ZSA9IChwYXJhbXMtPm9wdGlvbnMgJiBWQUNPUFRfVkVSQk9TRSkgIT0gMDsKQEAgLTMyOSw3 ICs1MTQsNyBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLCBWYWN1dW1QYXJhbXMg KnBhcmFtcywKIAogCXBnc3RhdF9wcm9ncmVzc19zdGFydF9jb21tYW5kKFBST0dSRVNTX0NP TU1BTkRfVkFDVVVNLAogCQkJCQkJCQkgIFJlbGF0aW9uR2V0UmVsaWQocmVsKSk7Ci0KKwll eHR2YWNfc3RhdHNfc3RhcnQocmVsLCAmZXh0VmFjQ291bnRlcnMpOwogCS8qCiAJICogU2V0 dXAgZXJyb3IgdHJhY2ViYWNrIHN1cHBvcnQgZm9yIGVyZXBvcnQoKSBmaXJzdC4gIFRoZSBp ZGVhIGlzIHRvIHNldAogCSAqIHVwIGFuIGVycm9yIGNvbnRleHQgY2FsbGJhY2sgdG8gZGlz cGxheSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGFueQpAQCAtMzQ2LDYgKzUzMSw3IEBA IGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsIFZhY3V1bVBhcmFtcyAqcGFyYW1zLAog CXZhY3JlbC0+ZGJuYW1lID0gZ2V0X2RhdGFiYXNlX25hbWUoTXlEYXRhYmFzZUlkKTsKIAl2 YWNyZWwtPnJlbG5hbWVzcGFjZSA9IGdldF9uYW1lc3BhY2VfbmFtZShSZWxhdGlvbkdldE5h bWVzcGFjZShyZWwpKTsKIAl2YWNyZWwtPnJlbG5hbWUgPSBwc3RyZHVwKFJlbGF0aW9uR2V0 UmVsYXRpb25OYW1lKHJlbCkpOworCXZhY3JlbC0+cmVsb2lkID0gUmVsYXRpb25HZXRSZWxp ZChyZWwpOwogCXZhY3JlbC0+aW5kbmFtZSA9IE5VTEw7CiAJdmFjcmVsLT5waGFzZSA9IFZB Q1VVTV9FUlJDQl9QSEFTRV9VTktOT1dOOwogCXZhY3JlbC0+dmVyYm9zZSA9IHZlcmJvc2U7 CkBAIC00MTMsNiArNTk5LDggQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwgVmFj dXVtUGFyYW1zICpwYXJhbXMsCiAJdmFjcmVsLT5scGRlYWRfaXRlbV9wYWdlcyA9IDA7CiAJ dmFjcmVsLT5taXNzZWRfZGVhZF9wYWdlcyA9IDA7CiAJdmFjcmVsLT5ub25lbXB0eV9wYWdl cyA9IDA7CisJdmFjcmVsLT5zZXRfZnJvemVuX3BhZ2VzID0gMDsKKwl2YWNyZWwtPnNldF9h bGxfdmlzaWJsZV9wYWdlcyA9IDA7CiAJLyogZGVhZF9pdGVtc19hbGxvYyBhbGxvY2F0ZXMg dmFjcmVsLT5kZWFkX2l0ZW1zIGxhdGVyIG9uICovCiAKIAkvKiBBbGxvY2F0ZS9pbml0aWFs aXplIG91dHB1dCBzdGF0aXN0aWNzIHN0YXRlICovCkBAIC01NzQsNiArNzYyLDIwIEBAIGhl YXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsIFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCQkJ CQkJdmFjcmVsLT5OZXdSZWxmcm96ZW5YaWQsIHZhY3JlbC0+TmV3UmVsbWluTXhpZCwKIAkJ CQkJCSZmcm96ZW54aWRfdXBkYXRlZCwgJm1pbm11bHRpX3VwZGF0ZWQsIGZhbHNlKTsKIAor CS8qIE1ha2UgZ2VuZXJpYyBleHRlbmRlZCB2YWN1dW0gc3RhdHMgcmVwb3J0ICovCisJZXh0 dmFjX3N0YXRzX2VuZChyZWwsICZleHRWYWNDb3VudGVycywgJmV4dFZhY1JlcG9ydCk7CisK KwkvKiBGaWxsIGhlYXAtc3BlY2lmaWMgZXh0ZW5kZWQgc3RhdHMgZmllbGRzICovCisJZXh0 VmFjUmVwb3J0LnR5cGUgPSBQR1NUQVRfRVhUVkFDX0hFQVA7CisJZXh0VmFjUmVwb3J0Lmhl YXAucGFnZXNfc2Nhbm5lZCA9IHZhY3JlbC0+c2Nhbm5lZF9wYWdlczsKKwlleHRWYWNSZXBv cnQuaGVhcC5wYWdlc19yZW1vdmVkID0gdmFjcmVsLT5yZW1vdmVkX3BhZ2VzOworCWV4dFZh Y1JlcG9ydC5oZWFwLnBhZ2VzX2Zyb3plbiA9IHZhY3JlbC0+c2V0X2Zyb3plbl9wYWdlczsK KwlleHRWYWNSZXBvcnQuaGVhcC5wYWdlc19hbGxfdmlzaWJsZSA9IHZhY3JlbC0+c2V0X2Fs bF92aXNpYmxlX3BhZ2VzOworCWV4dFZhY1JlcG9ydC5oZWFwLnR1cGxlc19kZWxldGVkID0g dmFjcmVsLT50dXBsZXNfZGVsZXRlZDsKKwlleHRWYWNSZXBvcnQuaGVhcC50dXBsZXNfZnJv emVuID0gdmFjcmVsLT50dXBsZXNfZnJvemVuOworCWV4dFZhY1JlcG9ydC5oZWFwLmRlYWRf dHVwbGVzID0gdmFjcmVsLT5yZWNlbnRseV9kZWFkX3R1cGxlcyArIHZhY3JlbC0+bWlzc2Vk X2RlYWRfdHVwbGVzOworCWV4dFZhY1JlcG9ydC5oZWFwLmluZGV4X3ZhY3V1bV9jb3VudCA9 IHZhY3JlbC0+bnVtX2luZGV4X3NjYW5zOworCiAJLyoKIAkgKiBSZXBvcnQgcmVzdWx0cyB0 byB0aGUgY3VtdWxhdGl2ZSBzdGF0cyBzeXN0ZW0sIHRvby4KIAkgKgpAQCAtNTg4LDcgKzc5 MCw4IEBAIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsIFZhY3V1bVBhcmFtcyAqcGFy YW1zLAogCQkJCQkJIHJlbC0+cmRfcmVsLT5yZWxpc3NoYXJlZCwKIAkJCQkJCSBNYXgodmFj cmVsLT5uZXdfbGl2ZV90dXBsZXMsIDApLAogCQkJCQkJIHZhY3JlbC0+cmVjZW50bHlfZGVh ZF90dXBsZXMgKwotCQkJCQkJIHZhY3JlbC0+bWlzc2VkX2RlYWRfdHVwbGVzKTsKKwkJCQkJ CSB2YWNyZWwtPm1pc3NlZF9kZWFkX3R1cGxlcywKKwkJCQkJCSAmZXh0VmFjUmVwb3J0KTsK IAlwZ3N0YXRfcHJvZ3Jlc3NfZW5kX2NvbW1hbmQoKTsKIAogCWlmIChpbnN0cnVtZW50KQpA QCAtMTM3MCw2ICsxNTczLDggQEAgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJlbFN0YXRl ICp2YWNyZWwsIEJ1ZmZlciBidWYsIEJsb2NrTnVtYmVyIGJsa25vLAogCQkJCQkJCSAgdm1i dWZmZXIsIEludmFsaWRUcmFuc2FjdGlvbklkLAogCQkJCQkJCSAgVklTSUJJTElUWU1BUF9B TExfVklTSUJMRSB8IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTik7CiAJCQlFTkRfQ1JJVF9T RUNUSU9OKCk7CisJCQl2YWNyZWwtPnNldF9hbGxfdmlzaWJsZV9wYWdlcysrOworCQkJdmFj cmVsLT5zZXRfZnJvemVuX3BhZ2VzKys7CiAJCX0KIAogCQlmcmVlc3BhY2UgPSBQYWdlR2V0 SGVhcEZyZWVTcGFjZShwYWdlKTsKQEAgLTIyNjIsMTEgKzI0NjcsMTMgQEAgbGF6eV92YWN1 dW1faGVhcF9wYWdlKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1 ZmZlciBidWZmZXIsCiAJCQkJCQkJCSAmYWxsX2Zyb3plbikpCiAJewogCQl1aW50OAkJZmxh Z3MgPSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOworCQl2YWNyZWwtPnNldF9hbGxfdmlz aWJsZV9wYWdlcysrOwogCiAJCWlmIChhbGxfZnJvemVuKQogCQl7CiAJCQlBc3NlcnQoIVRy YW5zYWN0aW9uSWRJc1ZhbGlkKHZpc2liaWxpdHlfY3V0b2ZmX3hpZCkpOwogCQkJZmxhZ3Mg fD0gVklTSUJJTElUWU1BUF9BTExfRlJPWkVOOworCQkJdmFjcmVsLT5zZXRfZnJvemVuX3Bh Z2VzKys7CiAJCX0KIAogCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKQEAgLTI0MTcsNiAr MjYyNCwxMCBAQCBsYXp5X3ZhY3V1bV9vbmVfaW5kZXgoUmVsYXRpb24gaW5kcmVsLCBJbmRl eEJ1bGtEZWxldGVSZXN1bHQgKmlzdGF0LAogewogCUluZGV4VmFjdXVtSW5mbyBpdmluZm87 CiAJTFZTYXZlZEVyckluZm8gc2F2ZWRfZXJyX2luZm87CisJTFZFeHRTdGF0Q291bnRlcnNJ ZHggZXh0VmFjQ291bnRlcnM7CisJRXh0VmFjUmVwb3J0IGV4dFZhY1JlcG9ydDsKKworCWV4 dHZhY19zdGF0c19zdGFydF9pZHgoaW5kcmVsLCBpc3RhdCwgJmV4dFZhY0NvdW50ZXJzKTsK IAogCWl2aW5mby5pbmRleCA9IGluZHJlbDsKIAlpdmluZm8uaGVhcHJlbCA9IHZhY3JlbC0+ cmVsOwpAQCAtMjQzNSw2ICsyNjQ2LDcgQEAgbGF6eV92YWN1dW1fb25lX2luZGV4KFJlbGF0 aW9uIGluZHJlbCwgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICppc3RhdCwKIAkgKi8KIAlBc3Nl cnQodmFjcmVsLT5pbmRuYW1lID09IE5VTEwpOwogCXZhY3JlbC0+aW5kbmFtZSA9IHBzdHJk dXAoUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaW5kcmVsKSk7CisJdmFjcmVsLT5pbmRvaWQg PSBSZWxhdGlvbkdldFJlbGlkKGluZHJlbCk7CiAJdXBkYXRlX3ZhY3V1bV9lcnJvcl9pbmZv KHZhY3JlbCwgJnNhdmVkX2Vycl9pbmZvLAogCQkJCQkJCSBWQUNVVU1fRVJSQ0JfUEhBU0Vf VkFDVVVNX0lOREVYLAogCQkJCQkJCSBJbnZhbGlkQmxvY2tOdW1iZXIsIEludmFsaWRPZmZz ZXROdW1iZXIpOwpAQCAtMjQ0Myw2ICsyNjU1LDEzIEBAIGxhenlfdmFjdXVtX29uZV9pbmRl eChSZWxhdGlvbiBpbmRyZWwsIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqaXN0YXQsCiAJaXN0 YXQgPSB2YWNfYnVsa2RlbF9vbmVfaW5kZXgoJml2aW5mbywgaXN0YXQsICh2b2lkICopIHZh Y3JlbC0+ZGVhZF9pdGVtcywKIAkJCQkJCQkJICB2YWNyZWwtPmRlYWRfaXRlbXNfaW5mbyk7 CiAKKwkvKiBNYWtlIGV4dGVuZGVkIHZhY3V1bSBzdGF0cyByZXBvcnQgZm9yIGluZGV4ICov CisJZXh0dmFjX3N0YXRzX2VuZF9pZHgoaW5kcmVsLCBpc3RhdCwgJmV4dFZhY0NvdW50ZXJz LCAmZXh0VmFjUmVwb3J0KTsKKworCXBnc3RhdF9yZXBvcnRfdmFjdXVtKFJlbGF0aW9uR2V0 UmVsaWQoaW5kcmVsKSwKKwkJCQkJCQlpbmRyZWwtPnJkX3JlbC0+cmVsaXNzaGFyZWQsCisJ CQkJCQkJMCwgMCwgJmV4dFZhY1JlcG9ydCk7CisKIAkvKiBSZXZlcnQgdG8gdGhlIHByZXZp b3VzIHBoYXNlIGluZm9ybWF0aW9uIGZvciBlcnJvciB0cmFjZWJhY2sgKi8KIAlyZXN0b3Jl X3ZhY3V1bV9lcnJvcl9pbmZvKHZhY3JlbCwgJnNhdmVkX2Vycl9pbmZvKTsKIAlwZnJlZSh2 YWNyZWwtPmluZG5hbWUpOwpAQCAtMjQ2Nyw2ICsyNjg2LDEwIEBAIGxhenlfY2xlYW51cF9v bmVfaW5kZXgoUmVsYXRpb24gaW5kcmVsLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKmlzdGF0 LAogewogCUluZGV4VmFjdXVtSW5mbyBpdmluZm87CiAJTFZTYXZlZEVyckluZm8gc2F2ZWRf ZXJyX2luZm87CisJTFZFeHRTdGF0Q291bnRlcnNJZHggZXh0VmFjQ291bnRlcnM7CisJRXh0 VmFjUmVwb3J0IGV4dFZhY1JlcG9ydDsKKworCWV4dHZhY19zdGF0c19zdGFydF9pZHgoaW5k cmVsLCBpc3RhdCwgJmV4dFZhY0NvdW50ZXJzKTsKIAogCWl2aW5mby5pbmRleCA9IGluZHJl bDsKIAlpdmluZm8uaGVhcHJlbCA9IHZhY3JlbC0+cmVsOwpAQCAtMjQ4NiwxMiArMjcwOSwy MCBAQCBsYXp5X2NsZWFudXBfb25lX2luZGV4KFJlbGF0aW9uIGluZHJlbCwgSW5kZXhCdWxr RGVsZXRlUmVzdWx0ICppc3RhdCwKIAkgKi8KIAlBc3NlcnQodmFjcmVsLT5pbmRuYW1lID09 IE5VTEwpOwogCXZhY3JlbC0+aW5kbmFtZSA9IHBzdHJkdXAoUmVsYXRpb25HZXRSZWxhdGlv bk5hbWUoaW5kcmVsKSk7CisJdmFjcmVsLT5pbmRvaWQgPSBSZWxhdGlvbkdldFJlbGlkKGlu ZHJlbCk7CiAJdXBkYXRlX3ZhY3V1bV9lcnJvcl9pbmZvKHZhY3JlbCwgJnNhdmVkX2Vycl9p bmZvLAogCQkJCQkJCSBWQUNVVU1fRVJSQ0JfUEhBU0VfSU5ERVhfQ0xFQU5VUCwKIAkJCQkJ CQkgSW52YWxpZEJsb2NrTnVtYmVyLCBJbnZhbGlkT2Zmc2V0TnVtYmVyKTsKIAogCWlzdGF0 ID0gdmFjX2NsZWFudXBfb25lX2luZGV4KCZpdmluZm8sIGlzdGF0KTsKIAorCS8qIE1ha2Ug ZXh0ZW5kZWQgdmFjdXVtIHN0YXRzIHJlcG9ydCBmb3IgaW5kZXggKi8KKwlleHR2YWNfc3Rh dHNfZW5kX2lkeChpbmRyZWwsIGlzdGF0LCAmZXh0VmFjQ291bnRlcnMsICZleHRWYWNSZXBv cnQpOworCisJcGdzdGF0X3JlcG9ydF92YWN1dW0oUmVsYXRpb25HZXRSZWxpZChpbmRyZWwp LAorCQkJCQkJCWluZHJlbC0+cmRfcmVsLT5yZWxpc3NoYXJlZCwKKwkJCQkJCQkwLCAwLCAm ZXh0VmFjUmVwb3J0KTsKKwogCS8qIFJldmVydCB0byB0aGUgcHJldmlvdXMgcGhhc2UgaW5m b3JtYXRpb24gZm9yIGVycm9yIHRyYWNlYmFjayAqLwogCXJlc3RvcmVfdmFjdXVtX2Vycm9y X2luZm8odmFjcmVsLCAmc2F2ZWRfZXJyX2luZm8pOwogCXBmcmVlKHZhY3JlbC0+aW5kbmFt ZSk7CkBAIC0zMTAxLDYgKzMzMzIsOCBAQCB2YWN1dW1fZXJyb3JfY2FsbGJhY2sodm9pZCAq YXJnKQogCXN3aXRjaCAoZXJyaW5mby0+cGhhc2UpCiAJewogCQljYXNlIFZBQ1VVTV9FUlJD Ql9QSEFTRV9TQ0FOX0hFQVA6CisJCQlpZihnZXRlcnJlbGV2ZWwoKSA+PSBFUlJPUikKKwkJ CQlwZ3N0YXRfcmVwb3J0X3ZhY3V1bV9lcnJvcihlcnJpbmZvLT5yZWxvaWQsIFBHU1RBVF9F WFRWQUNfSEVBUCk7CiAJCQlpZiAoQmxvY2tOdW1iZXJJc1ZhbGlkKGVycmluZm8tPmJsa25v KSkKIAkJCXsKIAkJCQlpZiAoT2Zmc2V0TnVtYmVySXNWYWxpZChlcnJpbmZvLT5vZmZudW0p KQpAQCAtMzExNiw2ICszMzQ5LDggQEAgdmFjdXVtX2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFy ZykKIAkJCWJyZWFrOwogCiAJCWNhc2UgVkFDVVVNX0VSUkNCX1BIQVNFX1ZBQ1VVTV9IRUFQ OgorCQkJaWYoZ2V0ZXJyZWxldmVsKCkgPj0gRVJST1IpCisJCQkJcGdzdGF0X3JlcG9ydF92 YWN1dW1fZXJyb3IoZXJyaW5mby0+cmVsb2lkLCBQR1NUQVRfRVhUVkFDX0hFQVApOwogCQkJ aWYgKEJsb2NrTnVtYmVySXNWYWxpZChlcnJpbmZvLT5ibGtubykpCiAJCQl7CiAJCQkJaWYg KE9mZnNldE51bWJlcklzVmFsaWQoZXJyaW5mby0+b2ZmbnVtKSkKQEAgLTMxMzEsMTYgKzMz NjYsMjIgQEAgdmFjdXVtX2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZykKIAkJCWJyZWFrOwog CiAJCWNhc2UgVkFDVVVNX0VSUkNCX1BIQVNFX1ZBQ1VVTV9JTkRFWDoKKwkJCWlmKGdldGVy cmVsZXZlbCgpID49IEVSUk9SKQorCQkJCXBnc3RhdF9yZXBvcnRfdmFjdXVtX2Vycm9yKGVy cmluZm8tPmluZG9pZCwgUEdTVEFUX0VYVFZBQ19JTkRFWCk7CiAJCQllcnJjb250ZXh0KCJ3 aGlsZSB2YWN1dW1pbmcgaW5kZXggXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXMuJXNcIiIsCiAJ CQkJCSAgIGVycmluZm8tPmluZG5hbWUsIGVycmluZm8tPnJlbG5hbWVzcGFjZSwgZXJyaW5m by0+cmVsbmFtZSk7CiAJCQlicmVhazsKIAogCQljYXNlIFZBQ1VVTV9FUlJDQl9QSEFTRV9J TkRFWF9DTEVBTlVQOgorCQkJaWYoZ2V0ZXJyZWxldmVsKCkgPj0gRVJST1IpCisJCQkJcGdz dGF0X3JlcG9ydF92YWN1dW1fZXJyb3IoZXJyaW5mby0+aW5kb2lkLCBQR1NUQVRfRVhUVkFD X0lOREVYKTsKIAkJCWVycmNvbnRleHQoIndoaWxlIGNsZWFuaW5nIHVwIGluZGV4IFwiJXNc IiBvZiByZWxhdGlvbiBcIiVzLiVzXCIiLAogCQkJCQkgICBlcnJpbmZvLT5pbmRuYW1lLCBl cnJpbmZvLT5yZWxuYW1lc3BhY2UsIGVycmluZm8tPnJlbG5hbWUpOwogCQkJYnJlYWs7CiAK IAkJY2FzZSBWQUNVVU1fRVJSQ0JfUEhBU0VfVFJVTkNBVEU6CisJCQlpZihnZXRlcnJlbGV2 ZWwoKSA+PSBFUlJPUikKKwkJCQlwZ3N0YXRfcmVwb3J0X3ZhY3V1bV9lcnJvcihlcnJpbmZv LT5yZWxvaWQsIFBHU1RBVF9FWFRWQUNfSEVBUCk7CiAJCQlpZiAoQmxvY2tOdW1iZXJJc1Zh bGlkKGVycmluZm8tPmJsa25vKSkKIAkJCQllcnJjb250ZXh0KCJ3aGlsZSB0cnVuY2F0aW5n IHJlbGF0aW9uIFwiJXMuJXNcIiB0byAldSBibG9ja3MiLAogCQkJCQkJICAgZXJyaW5mby0+ cmVsbmFtZXNwYWNlLCBlcnJpbmZvLT5yZWxuYW1lLCBlcnJpbmZvLT5ibGtubyk7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKaW5kZXggOGIyNGU3YmMzM2Mu LjI1ODhiYjg0YzhiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNp YmlsaXR5bWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1h cC5jCkBAIC05Niw2ICs5Niw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9zbWdyLmgiCiAjaW5j bHVkZSAidXRpbHMvaW52YWwuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKKyNpbmNsdWRl ICJwZ3N0YXQuaCIKIAogCiAvKiNkZWZpbmUgVFJBQ0VfVklTSUJJTElUWU1BUCAqLwpAQCAt MTYwLDYgKzE2MSwxOCBAQCB2aXNpYmlsaXR5bWFwX2NsZWFyKFJlbGF0aW9uIHJlbCwgQmxv Y2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIHZtYnVmLCB1aW50OCBmbGFncwogCiAJaWYgKG1h cFttYXBCeXRlXSAmIG1hc2spCiAJeworCQkvKgorCQkgKiBJbml0aWFsbHksIGl0IGRpZG4n dCBtYXR0ZXIgd2hhdCB0eXBlIG9mIGZsYWdzIChhbGwtdmlzaWJsZSBvciBmcm96ZW4pIHdl IHJlY2VpdmVkLAorCQkgKiB3ZSBqdXN0IHBlcmZvcm1lZCBhIHJldmVyc2UgY29uY2F0ZW5h dGlvbiBvcGVyYXRpb24uIEJ1dCB0aGlzIGluZm9ybWF0aW9uIGlzIHZlcnkgaW1wb3J0YW50 CisJCSAqIGZvciB2YWN1dW0gc3RhdGlzdGljcy4gV2UgbmVlZCB0byBmaW5kIG91dCB0aGlz IHVzaW5ndGhlIGJpdCBjb25jYXRlbmF0aW9uIG9wZXJhdGlvbgorCQkgKiB3aXRoIHRoZSBW SVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIGFuZCBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4g bWFza3MsCisJCSAqIGFuZCB3aGVyZSB0aGUgZGVzaXJlZCBvbmUgbWF0Y2hlcywgd2UgaW5j cmVtZW50IHRoZSB2YWx1ZSB0aGVyZS4KKwkJKi8KKwkJaWYgKG1hcFttYXBCeXRlXSA+PiBt YXBPZmZzZXQgJiBmbGFncyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpCisJCQlwZ3N0 YXRfY291bnRfdm1fcmV2X2FsbF92aXNpYmxlKHJlbCk7CisJCWlmIChtYXBbbWFwQnl0ZV0g Pj4gbWFwT2Zmc2V0ICYgZmxhZ3MgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pCisJCQlw Z3N0YXRfY291bnRfdm1fcmV2X2FsbF9mcm96ZW4ocmVsKTsKKwogCQltYXBbbWFwQnl0ZV0g Jj0gfm1hc2s7CiAKIAkJTWFya0J1ZmZlckRpcnR5KHZtYnVmKTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCA1MzA0N2NhYjVmYy4uN2Y1ODVmNzU4ZjYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9z cmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTEzNzQsMyArMTM3NCwx MjYgQEAgQ1JFQVRFIFZJRVcgcGdfc3RhdF9zdWJzY3JpcHRpb25fc3RhdHMgQVMKIAogQ1JF QVRFIFZJRVcgcGdfd2FpdF9ldmVudHMgQVMKICAgICBTRUxFQ1QgKiBGUk9NIHBnX2dldF93 YWl0X2V2ZW50cygpOworLS0KKy0tIFNob3cgZXh0ZW5kZWQgY3VtdWxhdGl2ZSBzdGF0aXN0 aWNzIG9uIGEgdmFjdXVtIG9wZXJhdGlvbiBvdmVyIGFsbCB0YWJsZXMgYW5kCistLSBkYXRh YmFzZXMgb2YgdGhlIGluc3RhbmNlLgorLS0gVXNlIEludmFsaWQgT2lkICIwIiBhcyBhbiBp bnB1dCByZWxhdGlvbiBpZCB0byBnZXQgc3RhdCBvbiBlYWNoIHRhYmxlIGluIGEKKy0tIGRh dGFiYXNlLgorLS0KKworQ1JFQVRFIFZJRVcgcGdfc3RhdHNfdmFjdXVtX3RhYmxlcyBBUwor U0VMRUNUCisgIHJlbC5vaWQgYXMgcmVsaWQsCisgIG5zLm5zcG5hbWUgQVMgInNjaGVtYSIs CisgIHJlbC5yZWxuYW1lIEFTIHJlbG5hbWUsCisKKyAgc3RhdHMudG90YWxfYmxrc19yZWFk LAorICBzdGF0cy50b3RhbF9ibGtzX2hpdCwKKyAgc3RhdHMudG90YWxfYmxrc19kaXJ0aWVk LAorICBzdGF0cy50b3RhbF9ibGtzX3dyaXR0ZW4sCisKKyAgc3RhdHMucmVsX2Jsa3NfcmVh ZCwKKyAgc3RhdHMucmVsX2Jsa3NfaGl0LAorCisgIHN0YXRzLnBhZ2VzX3NjYW5uZWQsCisg IHN0YXRzLnBhZ2VzX3JlbW92ZWQsCisgIHN0YXRzLnBhZ2VzX2Zyb3plbiwKKyAgc3RhdHMu cGFnZXNfYWxsX3Zpc2libGUsCisgIHN0YXRzLnR1cGxlc19kZWxldGVkLAorICBzdGF0cy50 dXBsZXNfZnJvemVuLAorICBzdGF0cy5kZWFkX3R1cGxlcywKKworICBzdGF0cy5pbmRleF92 YWN1dW1fY291bnQsCisgIHN0YXRzLnJldl9hbGxfZnJvemVuX3BhZ2VzLAorICBzdGF0cy5y ZXZfYWxsX3Zpc2libGVfcGFnZXMsCisKKyAgc3RhdHMud2FsX3JlY29yZHMsCisgIHN0YXRz LndhbF9mcGksCisgIHN0YXRzLndhbF9ieXRlcywKKworICBzdGF0cy5ibGtfcmVhZF90aW1l LAorICBzdGF0cy5ibGtfd3JpdGVfdGltZSwKKworICBzdGF0cy5kZWxheV90aW1lLAorICBz dGF0cy5zeXN0ZW1fdGltZSwKKyAgc3RhdHMudXNlcl90aW1lLAorICBzdGF0cy50b3RhbF90 aW1lLAorICBzdGF0cy5pbnRlcnJ1cHRzCitGUk9NCisgIHBnX2RhdGFiYXNlIGRiLAorICBw Z19jbGFzcyByZWwsCisgIHBnX25hbWVzcGFjZSBucywKKyAgcGdfc3RhdHNfdmFjdXVtX3Rh YmxlcyhkYi5vaWQsIHJlbC5vaWQpIHN0YXRzCitXSEVSRQorICBkYi5kYXRuYW1lID0gY3Vy cmVudF9kYXRhYmFzZSgpIEFORAorICByZWwub2lkID0gc3RhdHMucmVsaWQgQU5ECisgIG5z Lm9pZCA9IHJlbC5yZWxuYW1lc3BhY2U7CisKK0NSRUFURSBWSUVXIHBnX3N0YXRzX3ZhY3V1 bV9pbmRleGVzIEFTCitTRUxFQ1QKKyAgcmVsLm9pZCBhcyByZWxpZCwKKyAgbnMubnNwbmFt ZSBBUyAic2NoZW1hIiwKKyAgcmVsLnJlbG5hbWUgQVMgcmVsbmFtZSwKKworICBzdGF0cy50 b3RhbF9ibGtzX3JlYWQsCisgIHN0YXRzLnRvdGFsX2Jsa3NfaGl0LAorICBzdGF0cy50b3Rh bF9ibGtzX2RpcnRpZWQsCisgIHN0YXRzLnRvdGFsX2Jsa3Nfd3JpdHRlbiwKKworICBzdGF0 cy5yZWxfYmxrc19yZWFkLAorICBzdGF0cy5yZWxfYmxrc19oaXQsCisKKyAgc3RhdHMucGFn ZXNfZGVsZXRlZCwKKyAgc3RhdHMudHVwbGVzX2RlbGV0ZWQsCisKKyAgc3RhdHMud2FsX3Jl Y29yZHMsCisgIHN0YXRzLndhbF9mcGksCisgIHN0YXRzLndhbF9ieXRlcywKKworICBzdGF0 cy5ibGtfcmVhZF90aW1lLAorICBzdGF0cy5ibGtfd3JpdGVfdGltZSwKKworICBzdGF0cy5k ZWxheV90aW1lLAorICBzdGF0cy5zeXN0ZW1fdGltZSwKKyAgc3RhdHMudXNlcl90aW1lLAor ICBzdGF0cy50b3RhbF90aW1lLAorCisgIHN0YXRzLmludGVycnVwdHMKK0ZST00KKyAgcGdf ZGF0YWJhc2UgZGIsCisgIHBnX2NsYXNzIHJlbCwKKyAgcGdfbmFtZXNwYWNlIG5zLAorICBw Z19zdGF0c192YWN1dW1faW5kZXhlcyhkYi5vaWQsIHJlbC5vaWQpIHN0YXRzCitXSEVSRQor ICBkYi5kYXRuYW1lID0gY3VycmVudF9kYXRhYmFzZSgpIEFORAorICByZWwub2lkID0gc3Rh dHMucmVsaWQgQU5ECisgIG5zLm9pZCA9IHJlbC5yZWxuYW1lc3BhY2U7CisKK0NSRUFURSBW SUVXIHBnX3N0YXRzX3ZhY3V1bV9kYXRhYmFzZSBBUworU0VMRUNUCisgIGRiLm9pZCBhcyBk Ym9pZCwKKworICBzdGF0cy5kYl9ibGtzX3JlYWQsCisgIHN0YXRzLmRiX2Jsa3NfaGl0LAor ICBzdGF0cy50b3RhbF9ibGtzX2RpcnRpZWQsCisgIHN0YXRzLnRvdGFsX2Jsa3Nfd3JpdHRl biwKKworICBzdGF0cy53YWxfcmVjb3JkcywKKyAgc3RhdHMud2FsX2ZwaSwKKyAgc3RhdHMu d2FsX2J5dGVzLAorCisgIHN0YXRzLmJsa19yZWFkX3RpbWUsCisgIHN0YXRzLmJsa193cml0 ZV90aW1lLAorCisgIHN0YXRzLmRlbGF5X3RpbWUsCisgIHN0YXRzLnN5c3RlbV90aW1lLAor ICBzdGF0cy51c2VyX3RpbWUsCisgIHN0YXRzLnRvdGFsX3RpbWUsCisKKyAgc3RhdHMuaW50 ZXJydXB0cworRlJPTQorICBwZ19kYXRhYmFzZSBkYiwKKyAgcGdfbmFtZXNwYWNlIG5zLAor ICBwZ19zdGF0c192YWN1dW1fZGF0YWJhc2UoZGIub2lkKSBzdGF0cworV0hFUkUKKyAgZGIu ZGF0bmFtZSA9IGN1cnJlbnRfZGF0YWJhc2UoKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMKaW5k ZXggNDhmOGVhYjIwMjIuLmNhMWY0ZjgwMThjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwpA QCAtMTAzLDYgKzEwMyw5IEBAIHBnX2F0b21pY191aW50MzIgKlZhY3V1bVNoYXJlZENvc3RC YWxhbmNlID0gTlVMTDsKIHBnX2F0b21pY191aW50MzIgKlZhY3V1bUFjdGl2ZU5Xb3JrZXJz ID0gTlVMTDsKIGludAkJCVZhY3V1bUNvc3RCYWxhbmNlTG9jYWwgPSAwOwogCisvKiBDdW11 bGF0aXZlIHN0b3JhZ2UgdG8gcmVwb3J0IHRvdGFsIHZhY3V1bSBkZWxheSB0aW1lLiAqLwor ZG91YmxlIFZhY3V1bURlbGF5VGltZSA9IDA7IC8qIG1zZWMuICovCisKIC8qIG5vbi1leHBv cnQgZnVuY3Rpb24gcHJvdG90eXBlcyAqLwogc3RhdGljIExpc3QgKmV4cGFuZF92YWN1dW1f cmVsKFZhY3V1bVJlbGF0aW9uICp2cmVsLAogCQkJCQkJCSAgIE1lbW9yeUNvbnRleHQgdmFj X2NvbnRleHQsIGludCBvcHRpb25zKTsKQEAgLTIzOTcsNiArMjQwMCw3IEBAIHZhY3V1bV9k ZWxheV9wb2ludCh2b2lkKQogCQkJZXhpdCgxKTsKIAogCQlWYWN1dW1Db3N0QmFsYW5jZSA9 IDA7CisJCVZhY3V1bURlbGF5VGltZSArPSBtc2VjOwogCiAJCS8qCiAJCSAqIEJhbGFuY2Ug YW5kIHVwZGF0ZSBsaW1pdCB2YWx1ZXMgZm9yIGF1dG92YWN1dW0gd29ya2Vycy4gV2UgbXVz dCBkbwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKaW5kZXggZjI2MDcw YmZmMmEuLmRlZGIwMjk2M2EwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92 YWN1dW1wYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFs bGVsLmMKQEAgLTEwNDYsNiArMTA0Niw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9tYWluKGRzbV9z ZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAlWYWN1dW1QYWdlSGl0ID0gMDsKIAlWYWN1 dW1QYWdlTWlzcyA9IDA7CiAJVmFjdXVtUGFnZURpcnR5ID0gMDsKKwlWYWN1dW1EZWxheVRp bWUgPSAwLjsKIAlWYWN1dW1Db3N0QmFsYW5jZUxvY2FsID0gMDsKIAlWYWN1dW1TaGFyZWRD b3N0QmFsYW5jZSA9ICYoc2hhcmVkLT5jb3N0X2JhbGFuY2UpOwogCVZhY3V1bUFjdGl2ZU5X b3JrZXJzID0gJihzaGFyZWQtPmFjdGl2ZV9ud29ya2Vycyk7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fj dGl2aXR5L3Bnc3RhdC5jCmluZGV4IGRjYzJhZDhkOTU0Li44OGU0YmJkMWY4OCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0LmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0LmMKQEAgLTEyNywzNiArMTI3LDYgQEAKIAog I2RlZmluZSBQR1NUQVRfU05BUFNIT1RfSEFTSF9TSVpFCTUxMgogCi0KLS8qIGhhc2ggdGFi bGUgZm9yIHN0YXRpc3RpY3Mgc25hcHNob3RzIGVudHJ5ICovCi10eXBlZGVmIHN0cnVjdCBQ Z1N0YXRfU25hcHNob3RFbnRyeQotewotCVBnU3RhdF9IYXNoS2V5IGtleTsKLQljaGFyCQlz dGF0dXM7CQkJLyogZm9yIHNpbXBsZWhhc2ggdXNlICovCi0Jdm9pZAkgICAqZGF0YTsJCQkv KiB0aGUgc3RhdHMgZGF0YSBpdHNlbGYgKi8KLX0gUGdTdGF0X1NuYXBzaG90RW50cnk7Ci0K LQotLyogLS0tLS0tLS0tLQotICogQmFja2VuZC1sb2NhbCBIYXNoIFRhYmxlIERlZmluaXRp b25zCi0gKiAtLS0tLS0tLS0tCi0gKi8KLQotLyogZm9yIHN0YXRzIHNuYXBzaG90IGVudHJp ZXMgKi8KLSNkZWZpbmUgU0hfUFJFRklYIHBnc3RhdF9zbmFwc2hvdAotI2RlZmluZSBTSF9F TEVNRU5UX1RZUEUgUGdTdGF0X1NuYXBzaG90RW50cnkKLSNkZWZpbmUgU0hfS0VZX1RZUEUg UGdTdGF0X0hhc2hLZXkKLSNkZWZpbmUgU0hfS0VZIGtleQotI2RlZmluZSBTSF9IQVNIX0tF WSh0Yiwga2V5KSBcCi0JcGdzdGF0X2hhc2hfaGFzaF9rZXkoJmtleSwgc2l6ZW9mKFBnU3Rh dF9IYXNoS2V5KSwgTlVMTCkKLSNkZWZpbmUgU0hfRVFVQUwodGIsIGEsIGIpIFwKLQlwZ3N0 YXRfY21wX2hhc2hfa2V5KCZhLCAmYiwgc2l6ZW9mKFBnU3RhdF9IYXNoS2V5KSwgTlVMTCkg PT0gMAotI2RlZmluZSBTSF9TQ09QRSBzdGF0aWMgaW5saW5lCi0jZGVmaW5lIFNIX0RFRklO RQotI2RlZmluZSBTSF9ERUNMQVJFCi0jaW5jbHVkZSAibGliL3NpbXBsZWhhc2guaCIKLQot CiAvKiAtLS0tLS0tLS0tCiAgKiBMb2NhbCBmdW5jdGlvbiBmb3J3YXJkIGRlY2xhcmF0aW9u cwogICogLS0tLS0tLS0tLQpAQCAtMTcwLDcgKzE0MCw3IEBAIHN0YXRpYyB2b2lkIHBnc3Rh dF9yZXNldF9hZnRlcl9mYWlsdXJlKHZvaWQpOwogc3RhdGljIGJvb2wgcGdzdGF0X2ZsdXNo X3BlbmRpbmdfZW50cmllcyhib29sIG5vd2FpdCk7CiAKIHN0YXRpYyB2b2lkIHBnc3RhdF9w cmVwX3NuYXBzaG90KHZvaWQpOwotc3RhdGljIHZvaWQgcGdzdGF0X2J1aWxkX3NuYXBzaG90 KHZvaWQpOworc3RhdGljIHZvaWQgcGdzdGF0X2J1aWxkX3NuYXBzaG90KFBnU3RhdF9LaW5k IHN0YXRLaW5kKTsKIHN0YXRpYyB2b2lkIHBnc3RhdF9idWlsZF9zbmFwc2hvdF9maXhlZChQ Z1N0YXRfS2luZCBraW5kKTsKIAogc3RhdGljIGlubGluZSBib29sIHBnc3RhdF9pc19raW5k X3ZhbGlkKGludCBpa2luZCk7CkBAIC03NjQsNiArNzM0LDU2IEBAIHBnc3RhdF9yZXNldF9v Zl9raW5kKFBnU3RhdF9LaW5kIGtpbmQpCiAJCXBnc3RhdF9yZXNldF9lbnRyaWVzX29mX2tp bmQoa2luZCwgdHMpOwogfQogCit2b2lkCitwZ3N0YXRfYWNjdW11bGF0ZV9leHR2YWNfc3Rh dHMoRXh0VmFjUmVwb3J0ICpkc3QsIEV4dFZhY1JlcG9ydCAqc3JjLAorCQkJCQkJCSAgIGJv b2wgYWNjdW11bGF0ZV9yZWx0eXBlX3NwZWNpZmljX2luZm8pCit7CisJZHN0LT50b3RhbF9i bGtzX3JlYWQgKz0gc3JjLT50b3RhbF9ibGtzX3JlYWQ7CisJZHN0LT50b3RhbF9ibGtzX2hp dCArPSBzcmMtPnRvdGFsX2Jsa3NfaGl0OworCWRzdC0+dG90YWxfYmxrc19kaXJ0aWVkICs9 IHNyYy0+dG90YWxfYmxrc19kaXJ0aWVkOworCWRzdC0+dG90YWxfYmxrc193cml0dGVuICs9 IHNyYy0+dG90YWxfYmxrc193cml0dGVuOworCWRzdC0+d2FsX2J5dGVzICs9IHNyYy0+d2Fs X2J5dGVzOworCWRzdC0+d2FsX2ZwaSArPSBzcmMtPndhbF9mcGk7CisJZHN0LT53YWxfcmVj b3JkcyArPSBzcmMtPndhbF9yZWNvcmRzOworCWRzdC0+YmxrX3JlYWRfdGltZSArPSBzcmMt PmJsa19yZWFkX3RpbWU7CisJZHN0LT5ibGtfd3JpdGVfdGltZSArPSBzcmMtPmJsa193cml0 ZV90aW1lOworCWRzdC0+ZGVsYXlfdGltZSArPSBzcmMtPmRlbGF5X3RpbWU7CisJZHN0LT5z eXN0ZW1fdGltZSArPSBzcmMtPnN5c3RlbV90aW1lOworCWRzdC0+dXNlcl90aW1lICs9IHNy Yy0+dXNlcl90aW1lOworCWRzdC0+dG90YWxfdGltZSArPSBzcmMtPnRvdGFsX3RpbWU7CisJ ZHN0LT5pbnRlcnJ1cHRzICs9IHNyYy0+aW50ZXJydXB0czsKKworCWlmICghYWNjdW11bGF0 ZV9yZWx0eXBlX3NwZWNpZmljX2luZm8pCisJCXJldHVybjsKKworCWlmIChkc3QtPnR5cGUg PT0gUEdTVEFUX0VYVFZBQ19JTlZBTElEKQorCQlkc3QtPnR5cGUgPSBzcmMtPnR5cGU7CisK KwlBc3NlcnQoc3JjLT50eXBlID09IFBHU1RBVF9FWFRWQUNfSU5WQUxJRCB8fCBzcmMtPnR5 cGUgPT0gZHN0LT50eXBlKTsKKworCWlmIChkc3QtPnR5cGUgPT0gc3JjLT50eXBlKQorCXsK KwkJZHN0LT5ibGtzX2ZldGNoZWQgKz0gc3JjLT5ibGtzX2ZldGNoZWQ7CisJCWRzdC0+Ymxr c19oaXQgKz0gc3JjLT5ibGtzX2hpdDsKKworCQlpZiAoZHN0LT50eXBlID09IFBHU1RBVF9F WFRWQUNfSEVBUCkKKwkJeworCQkJZHN0LT5oZWFwLnBhZ2VzX3NjYW5uZWQgKz0gc3JjLT5o ZWFwLnBhZ2VzX3NjYW5uZWQ7CisJCQlkc3QtPmhlYXAucGFnZXNfcmVtb3ZlZCArPSBzcmMt PmhlYXAucGFnZXNfcmVtb3ZlZDsKKwkJCWRzdC0+aGVhcC5wYWdlc19mcm96ZW4gKz0gc3Jj LT5oZWFwLnBhZ2VzX2Zyb3plbjsKKwkJCWRzdC0+aGVhcC5wYWdlc19hbGxfdmlzaWJsZSAr PSBzcmMtPmhlYXAucGFnZXNfYWxsX3Zpc2libGU7CisJCQlkc3QtPmhlYXAudHVwbGVzX2Rl bGV0ZWQgKz0gc3JjLT5oZWFwLnR1cGxlc19kZWxldGVkOworCQkJZHN0LT5oZWFwLnR1cGxl c19mcm96ZW4gKz0gc3JjLT5oZWFwLnR1cGxlc19mcm96ZW47CisJCQlkc3QtPmhlYXAuZGVh ZF90dXBsZXMgKz0gc3JjLT5oZWFwLmRlYWRfdHVwbGVzOworCQkJZHN0LT5oZWFwLmluZGV4 X3ZhY3V1bV9jb3VudCArPSBzcmMtPmhlYXAuaW5kZXhfdmFjdXVtX2NvdW50OworCQl9CisJ CWVsc2UgaWYgKGRzdC0+dHlwZSA9PSBQR1NUQVRfRVhUVkFDX0lOREVYKQorCQl7CisJCQlk c3QtPmluZGV4LnBhZ2VzX2RlbGV0ZWQgKz0gc3JjLT5pbmRleC5wYWdlc19kZWxldGVkOwor CQkJZHN0LT5pbmRleC50dXBsZXNfZGVsZXRlZCArPSBzcmMtPmluZGV4LnR1cGxlc19kZWxl dGVkOworCQl9CisJfQorfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIEZldGNoaW5nIG9mIHN0YXRzCkBA IC04MjgsNyArODQ4LDcgQEAgcGdzdGF0X2ZldGNoX2VudHJ5KFBnU3RhdF9LaW5kIGtpbmQs IE9pZCBkYm9pZCwgT2lkIG9iam9pZCkKIAogCS8qIGlmIHdlIG5lZWQgdG8gYnVpbGQgYSBm dWxsIHNuYXBzaG90LCBkbyBzbyAqLwogCWlmIChwZ3N0YXRfZmV0Y2hfY29uc2lzdGVuY3kg PT0gUEdTVEFUX0ZFVENIX0NPTlNJU1RFTkNZX1NOQVBTSE9UKQotCQlwZ3N0YXRfYnVpbGRf c25hcHNob3QoKTsKKwkJcGdzdGF0X2J1aWxkX3NuYXBzaG90KFBHU1RBVF9LSU5EX0lOVkFM SUQpOwogCiAJLyogaWYgY2FjaGluZyBpcyBkZXNpcmVkLCBsb29rIHVwIGluIGNhY2hlICov CiAJaWYgKHBnc3RhdF9mZXRjaF9jb25zaXN0ZW5jeSA+IFBHU1RBVF9GRVRDSF9DT05TSVNU RU5DWV9OT05FKQpAQCAtOTQ0LDcgKzk2NCw3IEBAIHBnc3RhdF9zbmFwc2hvdF9maXhlZChQ Z1N0YXRfS2luZCBraW5kKQogCQlwZ3N0YXRfY2xlYXJfc25hcHNob3QoKTsKIAogCWlmIChw Z3N0YXRfZmV0Y2hfY29uc2lzdGVuY3kgPT0gUEdTVEFUX0ZFVENIX0NPTlNJU1RFTkNZX1NO QVBTSE9UKQotCQlwZ3N0YXRfYnVpbGRfc25hcHNob3QoKTsKKwkJcGdzdGF0X2J1aWxkX3Nu YXBzaG90KFBHU1RBVF9LSU5EX0lOVkFMSUQpOwogCWVsc2UKIAkJcGdzdGF0X2J1aWxkX3Nu YXBzaG90X2ZpeGVkKGtpbmQpOwogCkBAIC05NzIsOCArOTkyLDMzIEBAIHBnc3RhdF9wcmVw X3NuYXBzaG90KHZvaWQpCiAJCQkJCQkJICAgTlVMTCk7CiB9CiAKKworLyoKKyAqIFRyaXZp YWwgZXh0ZXJuYWwgaW50ZXJmYWNlIHRvIGJ1aWxkIGEgc25hcHNob3QgZm9yIHRhYmxlIHN0 YXRpc3RpY3Mgb25seS4KKyAqLwordm9pZAorcGdzdGF0X3VwZGF0ZV9zbmFwc2hvdChQZ1N0 YXRfS2luZCBraW5kKQoreworCWludCBzYXZlX2NvbnNpc3RlbmN5X2d1YyA9IHBnc3RhdF9m ZXRjaF9jb25zaXN0ZW5jeTsKKwlwZ3N0YXRfY2xlYXJfc25hcHNob3QoKTsKKworCVBHX1RS WSgpOworCXsKKwkJcGdzdGF0X2ZldGNoX2NvbnNpc3RlbmN5ID0gUEdTVEFUX0ZFVENIX0NP TlNJU1RFTkNZX1NOQVBTSE9UOworCQlpZiAoa2luZCA9PSBQR1NUQVRfS0lORF9SRUxBVElP TikKKwkJCXBnc3RhdF9idWlsZF9zbmFwc2hvdChQR1NUQVRfS0lORF9SRUxBVElPTik7CisJ CWVsc2UgaWYgKGtpbmQgPT0gUEdTVEFUX0tJTkRfREFUQUJBU0UpCisJCQlwZ3N0YXRfYnVp bGRfc25hcHNob3QoUEdTVEFUX0tJTkRfREFUQUJBU0UpOworCX0KKwlQR19GSU5BTExZKCk7 CisJeworCQlwZ3N0YXRfZmV0Y2hfY29uc2lzdGVuY3kgPSBzYXZlX2NvbnNpc3RlbmN5X2d1 YzsKKwl9CisJUEdfRU5EX1RSWSgpOworfQorCiBzdGF0aWMgdm9pZAotcGdzdGF0X2J1aWxk X3NuYXBzaG90KHZvaWQpCitwZ3N0YXRfYnVpbGRfc25hcHNob3QoUGdTdGF0X0tpbmQgc3Rh dEtpbmQpCiB7CiAJZHNoYXNoX3NlcV9zdGF0dXMgaHN0YXQ7CiAJUGdTdGF0U2hhcmVkX0hh c2hFbnRyeSAqcDsKQEAgLTEwMTgsNiArMTA2MywxMCBAQCBwZ3N0YXRfYnVpbGRfc25hcHNo b3Qodm9pZCkKIAkJaWYgKHAtPmRyb3BwZWQpCiAJCQljb250aW51ZTsKIAorCQlpZiAoc3Rh dEtpbmQgIT0gUEdTVEFUX0tJTkRfSU5WQUxJRCAmJiBzdGF0S2luZCAhPSBwLT5rZXkua2lu ZCkKKwkJCS8qIExvYWQgc3RhdCBvZiBzcGVjaWZpYyB0eXBlLCBpZiBkZWZpbmVkICovCisJ CQljb250aW51ZTsKKwogCQlBc3NlcnQocGdfYXRvbWljX3JlYWRfdTMyKCZwLT5yZWZjb3Vu dCkgPiAwKTsKIAogCQlzdGF0c19kYXRhID0gZHNhX2dldF9hZGRyZXNzKHBnU3RhdExvY2Fs LmRzYSwgcC0+Ym9keSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS9wZ3N0YXRfZGF0YWJhc2UuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3Rh dF9kYXRhYmFzZS5jCmluZGV4IDI5YmMwOTA5NzQ4Li5hMDYwZDFhNDA0MiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2RhdGFiYXNlLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2RhdGFiYXNlLmMKQEAgLTQzMCw2 ICs0MzAsNyBAQCBwZ3N0YXRfZGF0YWJhc2VfZmx1c2hfY2IoUGdTdGF0X0VudHJ5UmVmICpl bnRyeV9yZWYsIGJvb2wgbm93YWl0KQogCXBnc3RhdF91bmxvY2tfZW50cnkoZW50cnlfcmVm KTsKIAogCW1lbXNldChwZW5kaW5nZW50LCAwLCBzaXplb2YoKnBlbmRpbmdlbnQpKTsKKwlt ZW1zZXQoJihwZW5kaW5nZW50KS0+dmFjdXVtX2V4dCwgMCwgc2l6ZW9mKEV4dFZhY1JlcG9y dCkpOwogCiAJcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9hY3Rpdml0eS9wZ3N0YXRfcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2 aXR5L3Bnc3RhdF9yZWxhdGlvbi5jCmluZGV4IDhhM2Y3ZDQzNGNmLi5jYzA5YWJhNTcxZiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9u LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMK QEAgLTIwNCwxNiArMjA0LDUxIEBAIHBnc3RhdF9kcm9wX3JlbGF0aW9uKFJlbGF0aW9uIHJl bCkKIAl9CiB9CiAKKy8qIC0tLS0tLS0tLQorICogcGdzdGF0X3JlcG9ydF92YWN1dW1fZXJy b3IoKSAtCisgKgorICoJVGVsbCB0aGUgY29sbGVjdG9yIGFib3V0IGFuIChhdXRvKXZhY3V1 bSBpbnRlcnJ1cHRpb24uCisgKiAtLS0tLS0tLS0KKyAqLwordm9pZAorcGdzdGF0X3JlcG9y dF92YWN1dW1fZXJyb3IoT2lkIHRhYmxlb2lkLCBFeHRWYWNSZXBvcnRUeXBlIG1fdHlwZSkK K3sKKwlQZ1N0YXRfRW50cnlSZWYgKmVudHJ5X3JlZjsKKwlQZ1N0YXRTaGFyZWRfUmVsYXRp b24gKnNodGFiZW50cnk7CisJUGdTdGF0X1N0YXRUYWJFbnRyeSAqdGFiZW50cnk7CisJT2lk CQkJZGJvaWQgPSAgTXlEYXRhYmFzZUlkOworCVBnU3RhdF9TdGF0REJFbnRyeSAqZGJlbnRy eTsJLyogcGVuZGluZyBkYXRhYmFzZSBlbnRyeSAqLworCisJaWYgKCFwZ3N0YXRfdHJhY2tf Y291bnRzKQorCQlyZXR1cm47CisKKwllbnRyeV9yZWYgPSBwZ3N0YXRfZ2V0X2VudHJ5X3Jl Zl9sb2NrZWQoUEdTVEFUX0tJTkRfUkVMQVRJT04sCisJCQkJCQkJCQkJCWRib2lkLCB0YWJs ZW9pZCwgZmFsc2UpOworCisJc2h0YWJlbnRyeSA9IChQZ1N0YXRTaGFyZWRfUmVsYXRpb24g KikgZW50cnlfcmVmLT5zaGFyZWRfc3RhdHM7CisJdGFiZW50cnkgPSAmc2h0YWJlbnRyeS0+ c3RhdHM7CisKKwl0YWJlbnRyeS0+dmFjdXVtX2V4dC5pbnRlcnJ1cHRzKys7CisJdGFiZW50 cnktPnZhY3V1bV9leHQudHlwZSA9IG1fdHlwZTsKKwlwZ3N0YXRfdW5sb2NrX2VudHJ5KGVu dHJ5X3JlZik7CisKKwlkYmVudHJ5ID0gcGdzdGF0X3ByZXBfZGF0YWJhc2VfcGVuZGluZyhk Ym9pZCk7CisJZGJlbnRyeS0+dmFjdXVtX2V4dC5pbnRlcnJ1cHRzKys7CisJZGJlbnRyeS0+ dmFjdXVtX2V4dC50eXBlID0gbV90eXBlOworfQorCiAvKgogICogUmVwb3J0IHRoYXQgdGhl IHRhYmxlIHdhcyBqdXN0IHZhY3V1bWVkIGFuZCBmbHVzaCBJTyBzdGF0aXN0aWNzLgogICov CiB2b2lkCiBwZ3N0YXRfcmVwb3J0X3ZhY3V1bShPaWQgdGFibGVvaWQsIGJvb2wgc2hhcmVk LAotCQkJCQkgUGdTdGF0X0NvdW50ZXIgbGl2ZXR1cGxlcywgUGdTdGF0X0NvdW50ZXIgZGVh ZHR1cGxlcykKKwkJCQkJIFBnU3RhdF9Db3VudGVyIGxpdmV0dXBsZXMsIFBnU3RhdF9Db3Vu dGVyIGRlYWR0dXBsZXMsCisJCQkJCSBFeHRWYWNSZXBvcnQgKnBhcmFtcykKIHsKIAlQZ1N0 YXRfRW50cnlSZWYgKmVudHJ5X3JlZjsKIAlQZ1N0YXRTaGFyZWRfUmVsYXRpb24gKnNodGFi ZW50cnk7CiAJUGdTdGF0X1N0YXRUYWJFbnRyeSAqdGFiZW50cnk7CisJUGdTdGF0U2hhcmVk X0RhdGFiYXNlICpkYmVudHJ5OwogCU9pZAkJCWRib2lkID0gKHNoYXJlZCA/IEludmFsaWRP aWQgOiBNeURhdGFiYXNlSWQpOwogCVRpbWVzdGFtcFR6IHRzOwogCkBAIC0yMzMsNiArMjY4 LDggQEAgcGdzdGF0X3JlcG9ydF92YWN1dW0oT2lkIHRhYmxlb2lkLCBib29sIHNoYXJlZCwK IAl0YWJlbnRyeS0+bGl2ZV90dXBsZXMgPSBsaXZldHVwbGVzOwogCXRhYmVudHJ5LT5kZWFk X3R1cGxlcyA9IGRlYWR0dXBsZXM7CiAKKwlwZ3N0YXRfYWNjdW11bGF0ZV9leHR2YWNfc3Rh dHMoJnRhYmVudHJ5LT52YWN1dW1fZXh0LCBwYXJhbXMsIHRydWUpOworCiAJLyoKIAkgKiBJ dCBpcyBxdWl0ZSBwb3NzaWJsZSB0aGF0IGEgbm9uLWFnZ3Jlc3NpdmUgVkFDVVVNIGVuZGVk IHVwIHNraXBwaW5nCiAJICogdmFyaW91cyBwYWdlcywgaG93ZXZlciwgd2UnbGwgemVybyB0 aGUgaW5zZXJ0IGNvdW50ZXIgaGVyZSByZWdhcmRsZXNzLgpAQCAtMjY1LDYgKzMwMiwxNiBA QCBwZ3N0YXRfcmVwb3J0X3ZhY3V1bShPaWQgdGFibGVvaWQsIGJvb2wgc2hhcmVkLAogCSAq IFZBQ1VVTSBjb21tYW5kIGhhcyBwcm9jZXNzZWQgYWxsIHRhYmxlcyBhbmQgY29tbWl0dGVk LgogCSAqLwogCXBnc3RhdF9mbHVzaF9pbyhmYWxzZSk7CisJaWYgKGRib2lkICE9IEludmFs aWRPaWQpCisJeworCQllbnRyeV9yZWYgPSBwZ3N0YXRfZ2V0X2VudHJ5X3JlZl9sb2NrZWQo UEdTVEFUX0tJTkRfREFUQUJBU0UsCisJCQkJCQkJCQkJCWRib2lkLCBJbnZhbGlkT2lkLCBm YWxzZSk7CisJCWRiZW50cnkgPSAoUGdTdGF0U2hhcmVkX0RhdGFiYXNlICopIGVudHJ5X3Jl Zi0+c2hhcmVkX3N0YXRzOworCisJCXBnc3RhdF9hY2N1bXVsYXRlX2V4dHZhY19zdGF0cygm ZGJlbnRyeS0+c3RhdHMudmFjdXVtX2V4dCwgcGFyYW1zLCBmYWxzZSk7CisJCXBnc3RhdF91 bmxvY2tfZW50cnkoZW50cnlfcmVmKTsKKwl9CisKIH0KIAogLyoKQEAgLTg2MSw2ICs5MDgs OSBAQCBwZ3N0YXRfcmVsYXRpb25fZmx1c2hfY2IoUGdTdGF0X0VudHJ5UmVmICplbnRyeV9y ZWYsIGJvb2wgbm93YWl0KQogCXRhYmVudHJ5LT5ibG9ja3NfZmV0Y2hlZCArPSBsc3RhdHMt PmNvdW50cy5ibG9ja3NfZmV0Y2hlZDsKIAl0YWJlbnRyeS0+YmxvY2tzX2hpdCArPSBsc3Rh dHMtPmNvdW50cy5ibG9ja3NfaGl0OwogCisJdGFiZW50cnktPnJldl9hbGxfZnJvemVuX3Bh Z2VzICs9IGxzdGF0cy0+Y291bnRzLnJldl9hbGxfZnJvemVuX3BhZ2VzOworCXRhYmVudHJ5 LT5yZXZfYWxsX3Zpc2libGVfcGFnZXMgKz0gbHN0YXRzLT5jb3VudHMucmV2X2FsbF92aXNp YmxlX3BhZ2VzOworCiAJLyogQ2xhbXAgbGl2ZV90dXBsZXMgaW4gY2FzZSBvZiBuZWdhdGl2 ZSBkZWx0YV9saXZlX3R1cGxlcyAqLwogCXRhYmVudHJ5LT5saXZlX3R1cGxlcyA9IE1heCh0 YWJlbnRyeS0+bGl2ZV90dXBsZXMsIDApOwogCS8qIExpa2V3aXNlIGZvciBkZWFkX3R1cGxl cyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYwppbmRleCAzODc2MzM5ZWUx Yi4uYTc3OGU1YjJmZWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0 YXRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCkBA IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAidXRp bHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKKyNpbmNsdWRl ICJ1dGlscy9wZ3N0YXRfaW50ZXJuYWwuaCIKIAogI2RlZmluZSBVSU5UMzJfQUNDRVNTX09O Q0UodmFyKQkJICgodWludDMyKSgqKCh2b2xhdGlsZSB1aW50MzIgKikmKHZhcikpKSkKIApA QCAtMjAzMiwzICsyMDMzLDI5MiBAQCBwZ19zdGF0X2hhdmVfc3RhdHMoUEdfRlVOQ1RJT05f QVJHUykKIAogCVBHX1JFVFVSTl9CT09MKHBnc3RhdF9oYXZlX2VudHJ5KGtpbmQsIGRib2lk LCBvYmpvaWQpKTsKIH0KKworI2RlZmluZSBFWFRWQUNIRUFQU1RBVF9DT0xVTU5TCTI3Cisj ZGVmaW5lIEVYVFZBQ0lEWFNUQVRfQ09MVU1OUwkxOQorI2RlZmluZSBFWFRWQUNEQlNUQVRf Q09MVU1OUwkxNQorI2RlZmluZSBFWFRWQUNTVEFUX0NPTFVNTlMgTWF4KEVYVFZBQ0hFQVBT VEFUX0NPTFVNTlMsIEVYVFZBQ0lEWFNUQVRfQ09MVU1OUykKKworc3RhdGljIE9pZCBDdXJy ZW50RGF0YWJhc2VJZCA9IEludmFsaWRPaWQ7CisKKworLyoKKyAqIEZldGNoIHN0YXQgY29s bGVjdG9yIGRhdGEgZm9yIHNwZWNpZmljIGRhdGFiYXNlIGFuZCB0YWJsZSwgd2hpY2ggbG9h ZGluZyBmcm9tIGRpc2MuCisgKiBJdCBpcyBtYXliZSBleHBlbnNpdmUsIGJ1dCBpIGd1ZXNz IHdlIHdvbid0IHVzZSB0aGF0IG1hY2hpbmVyeSBvZnRlbi4KKyAqIFRoZSBraW5kIG9mIGJ1 ZmZlcml6YXRpb24gaXMgYmFzZWQgb24gQ3VycmVudERhdGFiYXNlSWQgdmFsdWUuCisgKi8K K3N0YXRpYyBQZ1N0YXRfU3RhdFRhYkVudHJ5ICoKK2ZldGNoX2Ric3RhdF90YWJlbnRyeShP aWQgZGJpZCwgT2lkIHJlbGlkKQoreworCU9pZAkJCQkJCXN0b3JlZE15RGF0YWJhc2VJZCA9 IE15RGF0YWJhc2VJZDsKKwlQZ1N0YXRfU3RhdFRhYkVudHJ5IAkqdGFiZW50cnkgPSBOVUxM OworCisJaWYgKE9pZElzVmFsaWQoQ3VycmVudERhdGFiYXNlSWQpICYmIEN1cnJlbnREYXRh YmFzZUlkID09IGRiaWQpCisJCS8qIFF1aWNrIHBhdGggd2hlbiB3ZSByZWFkIGRhdGEgZnJv bSB0aGUgc2FtZSBkYXRhYmFzZSAqLworCQlyZXR1cm4gcGdzdGF0X2ZldGNoX3N0YXRfdGFi ZW50cnkocmVsaWQpOworCisJcGdzdGF0X2NsZWFyX3NuYXBzaG90KCk7CisKKwkvKiBUcmlj a3kgdHVybiBoZXJlOiBlbmZvcmNlIHBnc3RhdCB0byB0aGluayB0aGF0IG91ciBkYXRhYmFz ZSB1cyBkYmlkICovCisKKwlNeURhdGFiYXNlSWQgPSBkYmlkOworCisJUEdfVFJZKCk7CisJ eworCQl0YWJlbnRyeSA9IHBnc3RhdF9mZXRjaF9zdGF0X3RhYmVudHJ5KHJlbGlkKTsKKwkJ TXlEYXRhYmFzZUlkID0gc3RvcmVkTXlEYXRhYmFzZUlkOworCX0KKwlQR19DQVRDSCgpOwor CXsKKwkJTXlEYXRhYmFzZUlkID0gc3RvcmVkTXlEYXRhYmFzZUlkOworCX0KKwlQR19FTkRf VFJZKCk7CisKKwlyZXR1cm4gdGFiZW50cnk7Cit9CisKK3N0YXRpYyB2b2lkCit0dXBsZXN0 b3JlX3B1dF9mb3JfZGF0YWJhc2UoT2lkIGRiaWQsIFR1cGxlc3RvcmVzdGF0ZSAqdHVwc3Rv cmUsCisJCQkgICBUdXBsZURlc2MgdHVwZGVzYywgUGdTdGF0U2hhcmVkX0RhdGFiYXNlICpk YmVudHJ5LCBpbnQgbmNvbHVtbnMpCit7CisJRGF0dW0JCXZhbHVlc1tFWFRWQUNEQlNUQVRf Q09MVU1OU107CisJYm9vbAkJbnVsbHNbRVhUVkFDREJTVEFUX0NPTFVNTlNdOworCWNoYXIJ CWJ1ZlsyNTZdOworCWludAkJCWkgPSAwOworCisJbWVtc2V0KG51bGxzLCAwLCBFWFRWQUNE QlNUQVRfQ09MVU1OUyAqIHNpemVvZihib29sKSk7CisKKwl2YWx1ZXNbaSsrXSA9IE9iamVj dElkR2V0RGF0dW0oZGJpZCk7CisKKwl2YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0oZGJl bnRyeS0+c3RhdHMudmFjdXVtX2V4dC50b3RhbF9ibGtzX3JlYWQpOworCXZhbHVlc1tpKytd ID0gSW50NjRHZXREYXR1bShkYmVudHJ5LT5zdGF0cy52YWN1dW1fZXh0LnRvdGFsX2Jsa3Nf aGl0KTsKKwl2YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0oZGJlbnRyeS0+c3RhdHMudmFj dXVtX2V4dC50b3RhbF9ibGtzX2RpcnRpZWQpOworCXZhbHVlc1tpKytdID0gSW50NjRHZXRE YXR1bShkYmVudHJ5LT5zdGF0cy52YWN1dW1fZXh0LnRvdGFsX2Jsa3Nfd3JpdHRlbik7CisK Kwl2YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0oZGJlbnRyeS0+c3RhdHMudmFjdXVtX2V4 dC53YWxfcmVjb3Jkcyk7CisJdmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKGRiZW50cnkt PnN0YXRzLnZhY3V1bV9leHQud2FsX2ZwaSk7CisKKwkvKiBDb252ZXJ0IHRvIG51bWVyaWMs IGxpa2UgcGdfc3RhdF9zdGF0ZW1lbnRzICovCisJc25wcmludGYoYnVmLCBzaXplb2YgYnVm LCBVSU5UNjRfRk9STUFULCBkYmVudHJ5LT5zdGF0cy52YWN1dW1fZXh0LndhbF9ieXRlcyk7 CisJdmFsdWVzW2krK10gPSBEaXJlY3RGdW5jdGlvbkNhbGwzKG51bWVyaWNfaW4sCisJCQkJ CQkJCQkgIENTdHJpbmdHZXREYXR1bShidWYpLAorCQkJCQkJCQkJICBPYmplY3RJZEdldERh dHVtKDApLAorCQkJCQkJCQkJICBJbnQzMkdldERhdHVtKC0xKSk7CisKKwl2YWx1ZXNbaSsr XSA9IEZsb2F0OEdldERhdHVtKGRiZW50cnktPnN0YXRzLnZhY3V1bV9leHQuYmxrX3JlYWRf dGltZSk7CisJdmFsdWVzW2krK10gPSBGbG9hdDhHZXREYXR1bShkYmVudHJ5LT5zdGF0cy52 YWN1dW1fZXh0LmJsa193cml0ZV90aW1lKTsKKwl2YWx1ZXNbaSsrXSA9IEZsb2F0OEdldERh dHVtKGRiZW50cnktPnN0YXRzLnZhY3V1bV9leHQuZGVsYXlfdGltZSk7CisJdmFsdWVzW2kr K10gPSBGbG9hdDhHZXREYXR1bShkYmVudHJ5LT5zdGF0cy52YWN1dW1fZXh0LnN5c3RlbV90 aW1lKTsKKwl2YWx1ZXNbaSsrXSA9IEZsb2F0OEdldERhdHVtKGRiZW50cnktPnN0YXRzLnZh Y3V1bV9leHQudXNlcl90aW1lKTsKKwl2YWx1ZXNbaSsrXSA9IEZsb2F0OEdldERhdHVtKGRi ZW50cnktPnN0YXRzLnZhY3V1bV9leHQudG90YWxfdGltZSk7CisJdmFsdWVzW2krK10gPSBJ bnQzMkdldERhdHVtKGRiZW50cnktPnN0YXRzLnZhY3V1bV9leHQuaW50ZXJydXB0cyk7CisK KworCUFzc2VydChpID09IG5jb2x1bW5zKTsKKworCXR1cGxlc3RvcmVfcHV0dmFsdWVzKHR1 cHN0b3JlLCB0dXBkZXNjLCB2YWx1ZXMsIG51bGxzKTsKK30KKworc3RhdGljIHZvaWQKK3R1 cGxlc3RvcmVfcHV0X2Zvcl9yZWxhdGlvbihPaWQgcmVsaWQsIFR1cGxlc3RvcmVzdGF0ZSAq dHVwc3RvcmUsCisJCQkgICBUdXBsZURlc2MgdHVwZGVzYywgUGdTdGF0X1N0YXRUYWJFbnRy eSAqdGFiZW50cnksIGludCBuY29sdW1ucykKK3sKKwlEYXR1bQkJdmFsdWVzW0VYVFZBQ1NU QVRfQ09MVU1OU107CisJYm9vbAkJbnVsbHNbRVhUVkFDU1RBVF9DT0xVTU5TXTsKKwljaGFy CQlidWZbMjU2XTsKKwlpbnQJCQlpID0gMDsKKworCW1lbXNldChudWxscywgMCwgRVhUVkFD U1RBVF9DT0xVTU5TICogc2l6ZW9mKGJvb2wpKTsKKworCXZhbHVlc1tpKytdID0gT2JqZWN0 SWRHZXREYXR1bShyZWxpZCk7CisKKwl2YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0odGFi ZW50cnktPnZhY3V1bV9leHQudG90YWxfYmxrc19yZWFkKTsKKwl2YWx1ZXNbaSsrXSA9IElu dDY0R2V0RGF0dW0odGFiZW50cnktPnZhY3V1bV9leHQudG90YWxfYmxrc19oaXQpOworCXZh bHVlc1tpKytdID0gSW50NjRHZXREYXR1bSh0YWJlbnRyeS0+dmFjdXVtX2V4dC50b3RhbF9i bGtzX2RpcnRpZWQpOworCXZhbHVlc1tpKytdID0gSW50NjRHZXREYXR1bSh0YWJlbnRyeS0+ dmFjdXVtX2V4dC50b3RhbF9ibGtzX3dyaXR0ZW4pOworCisJdmFsdWVzW2krK10gPSBJbnQ2 NEdldERhdHVtKHRhYmVudHJ5LT52YWN1dW1fZXh0LmJsa3NfZmV0Y2hlZCAtCisJCQkJCQkJ CQl0YWJlbnRyeS0+dmFjdXVtX2V4dC5ibGtzX2hpdCk7CisJdmFsdWVzW2krK10gPSBJbnQ2 NEdldERhdHVtKHRhYmVudHJ5LT52YWN1dW1fZXh0LmJsa3NfaGl0KTsKKworCWlmICh0YWJl bnRyeS0+dmFjdXVtX2V4dC50eXBlID09IFBHU1RBVF9FWFRWQUNfSEVBUCkKKwl7CisJCXZh bHVlc1tpKytdID0gSW50NjRHZXREYXR1bSh0YWJlbnRyeS0+dmFjdXVtX2V4dC5oZWFwLnBh Z2VzX3NjYW5uZWQpOworCQl2YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0odGFiZW50cnkt PnZhY3V1bV9leHQuaGVhcC5wYWdlc19yZW1vdmVkKTsKKwkJdmFsdWVzW2krK10gPSBJbnQ2 NEdldERhdHVtKHRhYmVudHJ5LT52YWN1dW1fZXh0LmhlYXAucGFnZXNfZnJvemVuKTsKKwkJ dmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKHRhYmVudHJ5LT52YWN1dW1fZXh0LmhlYXAu cGFnZXNfYWxsX3Zpc2libGUpOworCQl2YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0odGFi ZW50cnktPnZhY3V1bV9leHQuaGVhcC50dXBsZXNfZGVsZXRlZCk7CisJCXZhbHVlc1tpKytd ID0gSW50NjRHZXREYXR1bSh0YWJlbnRyeS0+dmFjdXVtX2V4dC5oZWFwLnR1cGxlc19mcm96 ZW4pOworCQl2YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0odGFiZW50cnktPnZhY3V1bV9l eHQuaGVhcC5kZWFkX3R1cGxlcyk7CisJCXZhbHVlc1tpKytdID0gSW50NjRHZXREYXR1bSh0 YWJlbnRyeS0+dmFjdXVtX2V4dC5oZWFwLmluZGV4X3ZhY3V1bV9jb3VudCk7CisJCXZhbHVl c1tpKytdID0gSW50NjRHZXREYXR1bSh0YWJlbnRyeS0+cmV2X2FsbF9mcm96ZW5fcGFnZXMp OworCQl2YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0odGFiZW50cnktPnJldl9hbGxfdmlz aWJsZV9wYWdlcyk7CisKKwl9CisJZWxzZSBpZiAodGFiZW50cnktPnZhY3V1bV9leHQudHlw ZSA9PSBQR1NUQVRfRVhUVkFDX0lOREVYKQorCXsKKwkJdmFsdWVzW2krK10gPSBJbnQ2NEdl dERhdHVtKHRhYmVudHJ5LT52YWN1dW1fZXh0LmluZGV4LnBhZ2VzX2RlbGV0ZWQpOworCQl2 YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0odGFiZW50cnktPnZhY3V1bV9leHQuaW5kZXgu dHVwbGVzX2RlbGV0ZWQpOworCX0KKworCXZhbHVlc1tpKytdID0gSW50NjRHZXREYXR1bSh0 YWJlbnRyeS0+dmFjdXVtX2V4dC53YWxfcmVjb3Jkcyk7CisJdmFsdWVzW2krK10gPSBJbnQ2 NEdldERhdHVtKHRhYmVudHJ5LT52YWN1dW1fZXh0LndhbF9mcGkpOworCisJLyogQ29udmVy dCB0byBudW1lcmljLCBsaWtlIHBnX3N0YXRfc3RhdGVtZW50cyAqLworCXNucHJpbnRmKGJ1 Ziwgc2l6ZW9mIGJ1ZiwgVUlOVDY0X0ZPUk1BVCwgdGFiZW50cnktPnZhY3V1bV9leHQud2Fs X2J5dGVzKTsKKwl2YWx1ZXNbaSsrXSA9IERpcmVjdEZ1bmN0aW9uQ2FsbDMobnVtZXJpY19p biwKKwkJCQkJCQkJCSAgQ1N0cmluZ0dldERhdHVtKGJ1ZiksCisJCQkJCQkJCQkgIE9iamVj dElkR2V0RGF0dW0oMCksCisJCQkJCQkJCQkgIEludDMyR2V0RGF0dW0oLTEpKTsKKworCXZh bHVlc1tpKytdID0gRmxvYXQ4R2V0RGF0dW0odGFiZW50cnktPnZhY3V1bV9leHQuYmxrX3Jl YWRfdGltZSk7CisJdmFsdWVzW2krK10gPSBGbG9hdDhHZXREYXR1bSh0YWJlbnRyeS0+dmFj dXVtX2V4dC5ibGtfd3JpdGVfdGltZSk7CisJdmFsdWVzW2krK10gPSBGbG9hdDhHZXREYXR1 bSh0YWJlbnRyeS0+dmFjdXVtX2V4dC5kZWxheV90aW1lKTsKKwl2YWx1ZXNbaSsrXSA9IEZs b2F0OEdldERhdHVtKHRhYmVudHJ5LT52YWN1dW1fZXh0LnN5c3RlbV90aW1lKTsKKwl2YWx1 ZXNbaSsrXSA9IEZsb2F0OEdldERhdHVtKHRhYmVudHJ5LT52YWN1dW1fZXh0LnVzZXJfdGlt ZSk7CisJdmFsdWVzW2krK10gPSBGbG9hdDhHZXREYXR1bSh0YWJlbnRyeS0+dmFjdXVtX2V4 dC50b3RhbF90aW1lKTsKKwl2YWx1ZXNbaSsrXSA9IEludDMyR2V0RGF0dW0odGFiZW50cnkt PnZhY3V1bV9leHQuaW50ZXJydXB0cyk7CisKKwlBc3NlcnQoaSA9PSBuY29sdW1ucyk7CisK Kwl0dXBsZXN0b3JlX3B1dHZhbHVlcyh0dXBzdG9yZSwgdHVwZGVzYywgdmFsdWVzLCBudWxs cyk7Cit9CisKKy8qCisgKiBHZXQgdGhlIHZhY3V1bSBzdGF0aXN0aWNzIGZvciB0aGUgaGVh cCB0YWJsZXMgb3IgaW5kZXhlcy4KKyAqLworc3RhdGljIERhdHVtCitwZ19zdGF0c192YWN1 dW0oRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIEV4dFZhY1JlcG9ydFR5cGUgdHlwZSwgaW50 IG5jb2x1bW5zKQoreworCVJldHVyblNldEluZm8JCSAgICpyc2luZm8gPSAoUmV0dXJuU2V0 SW5mbyAqKSBmY2luZm8tPnJlc3VsdGluZm87CisJTWVtb3J5Q29udGV4dAkJCXBlcl9xdWVy eV9jdHg7CisJTWVtb3J5Q29udGV4dAkJCW9sZGNvbnRleHQ7CisJVHVwbGVzdG9yZXN0YXRl CQkgICAqdHVwc3RvcmU7CisJVHVwbGVEZXNjCQkJCXR1cGRlc2M7CisJT2lkCQkJCQkJZGJp ZCA9IFBHX0dFVEFSR19PSUQoMCk7CisJUGdTdGF0X1N0YXRUYWJFbnRyeSAgICAqdGFiZW50 cnk7CisKKwlJbml0TWF0ZXJpYWxpemVkU1JGKGZjaW5mbywgMCk7CisKKwkvKiBDaGVjayBp ZiBjYWxsZXIgc3VwcG9ydHMgdXMgcmV0dXJuaW5nIGEgdHVwbGVzdG9yZSAqLworCWlmIChy c2luZm8gPT0gTlVMTCB8fCAhSXNBKHJzaW5mbywgUmV0dXJuU2V0SW5mbykpCisJCWVyZXBv cnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQp LAorCQkJCSBlcnJtc2coInNldC12YWx1ZWQgZnVuY3Rpb24gY2FsbGVkIGluIGNvbnRleHQg dGhhdCBjYW5ub3QgYWNjZXB0IGEgc2V0IikpKTsKKwkvKiBTd2l0Y2ggdG8gbG9uZy1saXZl ZCBjb250ZXh0IHRvIGNyZWF0ZSB0aGUgcmV0dXJuZWQgZGF0YSBzdHJ1Y3R1cmVzICovCisJ cGVyX3F1ZXJ5X2N0eCA9IHJzaW5mby0+ZWNvbnRleHQtPmVjeHRfcGVyX3F1ZXJ5X21lbW9y eTsKKwlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHBlcl9xdWVyeV9jdHgp OworCisJLyogQnVpbGQgYSB0dXBsZSBkZXNjcmlwdG9yIGZvciBvdXIgcmVzdWx0IHR5cGUg Ki8KKwlpZiAoZ2V0X2NhbGxfcmVzdWx0X3R5cGUoZmNpbmZvLCBOVUxMLCAmdHVwZGVzYykg IT0gVFlQRUZVTkNfQ09NUE9TSVRFKQorCQllbG9nKEVSUk9SLCAicmV0dXJuIHR5cGUgbXVz dCBiZSBhIHJvdyB0eXBlIik7CisKKwlBc3NlcnQodHVwZGVzYy0+bmF0dHMgPT0gbmNvbHVt bnMpOworCisJdHVwc3RvcmUgPSB0dXBsZXN0b3JlX2JlZ2luX2hlYXAodHJ1ZSwgZmFsc2Us IHdvcmtfbWVtKTsKKwlBc3NlcnQgKHR1cHN0b3JlICE9IE5VTEwpOworCXJzaW5mby0+c2V0 UmVzdWx0ID0gdHVwc3RvcmU7CisJcnNpbmZvLT5zZXREZXNjID0gdHVwZGVzYzsKKworCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKworCWlmICh0eXBlID09IFBHU1RB VF9FWFRWQUNfSU5ERVggfHwgdHlwZSA9PSBQR1NUQVRfRVhUVkFDX0hFQVApCisJeworCQlP aWQJCQkJCXJlbGlkID0gUEdfR0VUQVJHX09JRCgxKTsKKworCQkvKiBMb2FkIHRhYmxlIHN0 YXRpc3RpY3MgZm9yIHNwZWNpZmllZCBkYXRhYmFzZS4gKi8KKwkJaWYgKE9pZElzVmFsaWQo cmVsaWQpKQorCQl7CisJCQl0YWJlbnRyeSA9IGZldGNoX2Ric3RhdF90YWJlbnRyeShkYmlk LCByZWxpZCk7CisJCQlpZiAodGFiZW50cnkgPT0gTlVMTCB8fCB0YWJlbnRyeS0+dmFjdXVt X2V4dC50eXBlICE9IHR5cGUpCisJCQkJLyogVGFibGUgZG9uJ3QgZXhpc3RzIG9yIGlzbid0 IGFuIGhlYXAgcmVsYXRpb24uICovCisJCQkJUEdfUkVUVVJOX05VTEwoKTsKKworCQkJdHVw bGVzdG9yZV9wdXRfZm9yX3JlbGF0aW9uKHJlbGlkLCB0dXBzdG9yZSwgdHVwZGVzYywgdGFi ZW50cnksIG5jb2x1bW5zKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCVNuYXBzaG90SXRlcmF0 b3IJCWhhc2hpdGVyOworCQkJUGdTdGF0X1NuYXBzaG90RW50cnkgICAqZW50cnk7CisJCQlP aWQJCQkJCQlzdG9yZWRNeURhdGFiYXNlSWQgPSBNeURhdGFiYXNlSWQ7CisKKwkJCXBnc3Rh dF91cGRhdGVfc25hcHNob3QoUEdTVEFUX0tJTkRfUkVMQVRJT04pOworCQkJTXlEYXRhYmFz ZUlkID0gc3RvcmVkTXlEYXRhYmFzZUlkOworCisKKwkJCS8qIEl0ZXJhdGUgdGhlIHNuYXBz aG90ICovCisJCQlJbml0U25hcHNob3RJdGVyYXRvcihwZ1N0YXRMb2NhbC5zbmFwc2hvdC5z dGF0cywgJmhhc2hpdGVyKTsKKworCQkJd2hpbGUgKChlbnRyeSA9IFNjYW5TdGF0U25hcHNo b3QocGdTdGF0TG9jYWwuc25hcHNob3Quc3RhdHMsICZoYXNoaXRlcikpICE9IE5VTEwpCisJ CQl7CisJCQkJT2lkCXJlbG9pZDsKKworCQkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisK KwkJCQl0YWJlbnRyeSA9IChQZ1N0YXRfU3RhdFRhYkVudHJ5ICopIGVudHJ5LT5kYXRhOwor CQkJCXJlbG9pZCA9IGVudHJ5LT5rZXkub2Jqb2lkOworCisJCQkJaWYgKHRhYmVudHJ5ICE9 IE5VTEwgJiYgdGFiZW50cnktPnZhY3V1bV9leHQudHlwZSA9PSB0eXBlKQorCQkJCQl0dXBs ZXN0b3JlX3B1dF9mb3JfcmVsYXRpb24ocmVsb2lkLCB0dXBzdG9yZSwgdHVwZGVzYywgdGFi ZW50cnksIG5jb2x1bW5zKTsKKwkJCX0KKwkJfQorCX0KKwllbHNlIGlmICh0eXBlID09IFBH U1RBVF9FWFRWQUNfREIpCisJeworCQlQZ1N0YXRTaGFyZWRfRGF0YWJhc2UJICAgKmRiZW50 cnk7CisJCVBnU3RhdF9FbnRyeVJlZiAJCSAgICplbnRyeV9yZWY7CisJCU9pZAkJCQkJCXN0 b3JlZE15RGF0YWJhc2VJZCA9IE15RGF0YWJhc2VJZDsKKworCQlwZ3N0YXRfdXBkYXRlX3Nu YXBzaG90KFBHU1RBVF9LSU5EX0RBVEFCQVNFKTsKKwkJTXlEYXRhYmFzZUlkID0gc3RvcmVk TXlEYXRhYmFzZUlkOworCisJCWlmIChPaWRJc1ZhbGlkKGRiaWQpKQorCQl7CisJCQllbnRy eV9yZWYgPSBwZ3N0YXRfZ2V0X2VudHJ5X3JlZl9sb2NrZWQoUEdTVEFUX0tJTkRfREFUQUJB U0UsCisJCQkJCQkJCQkJCWRiaWQsIEludmFsaWRPaWQsIGZhbHNlKTsKKwkJCWRiZW50cnkg PSAoUGdTdGF0U2hhcmVkX0RhdGFiYXNlICopIGVudHJ5X3JlZi0+c2hhcmVkX3N0YXRzOwor CisJCQlpZiAoZGJlbnRyeSA9PSBOVUxMKQorCQkJCS8qIFRhYmxlIGRvZXNuJ3QgZXhpc3Qg b3IgaXNuJ3QgYSBoZWFwIHJlbGF0aW9uICovCisJCQkJUEdfUkVUVVJOX05VTEwoKTsKKwkJ CXR1cGxlc3RvcmVfcHV0X2Zvcl9kYXRhYmFzZShkYmlkLCB0dXBzdG9yZSwgdHVwZGVzYywg ZGJlbnRyeSwgbmNvbHVtbnMpOworCQkJcGdzdGF0X3VubG9ja19lbnRyeShlbnRyeV9yZWYp OworCQl9CisJCWVsc2UKKwkJCVBHX1JFVFVSTl9OVUxMKCk7CisJfQorCVBHX1JFVFVSTl9O VUxMKCk7Cit9CisKKy8qCisgKiBHZXQgdGhlIHZhY3V1bSBzdGF0aXN0aWNzIGZvciB0aGUg aGVhcCB0YWJsZXMuCisgKi8KK0RhdHVtCitwZ19zdGF0c192YWN1dW1fdGFibGVzKFBHX0ZV TkNUSU9OX0FSR1MpCit7CisJcmV0dXJuIHBnX3N0YXRzX3ZhY3V1bShmY2luZm8sIFBHU1RB VF9FWFRWQUNfSEVBUCwgRVhUVkFDSEVBUFNUQVRfQ09MVU1OUyk7CisKKwlQR19SRVRVUk5f TlVMTCgpOworfQorCisvKgorICogR2V0IHRoZSB2YWN1dW0gc3RhdGlzdGljcyBmb3IgdGhl IGluZGV4ZXMuCisgKi8KK0RhdHVtCitwZ19zdGF0c192YWN1dW1faW5kZXhlcyhQR19GVU5D VElPTl9BUkdTKQoreworCXJldHVybiBwZ19zdGF0c192YWN1dW0oZmNpbmZvLCBQR1NUQVRf RVhUVkFDX0lOREVYLCBFWFRWQUNJRFhTVEFUX0NPTFVNTlMpOworCisJUEdfUkVUVVJOX05V TEwoKTsKK30KKworLyoKKyAqIEdldCB0aGUgdmFjdXVtIHN0YXRpc3RpY3MgZm9yIHRoZSBk YXRhYmFzZS4KKyAqLworRGF0dW0KK3BnX3N0YXRzX3ZhY3V1bV9kYXRhYmFzZShQR19GVU5D VElPTl9BUkdTKQoreworCQlyZXR1cm4gcGdfc3RhdHNfdmFjdXVtKGZjaW5mbywgUEdTVEFU X0VYVFZBQ19EQiwgRVhUVkFDREJTVEFUX0NPTFVNTlMpOworCisJUEdfUkVUVVJOX05VTEwo KTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cuYwppbmRleCBkOTFhODVjYjJkNy4uM2NlZTM0 MzZkOWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9lcnJvci9lbG9nLmMKQEAgLTE2MDIsNiArMTYwMiwxOSBA QCBnZXRpbnRlcm5hbGVycnBvc2l0aW9uKHZvaWQpCiAJcmV0dXJuIGVkYXRhLT5pbnRlcm5h bHBvczsKIH0KIAorLyoKKyAqIFJldHVybiBlbGV2ZWwgb2YgZXJyb3JzCisgKi8KK2ludAor Z2V0ZXJyZWxldmVsKHZvaWQpCit7CisJRXJyb3JEYXRhICAqZWRhdGEgPSAmZXJyb3JkYXRh W2Vycm9yZGF0YV9zdGFja19kZXB0aF07CisKKwkvKiB3ZSBkb24ndCBib3RoZXIgaW5jcmVt ZW50aW5nIHJlY3Vyc2lvbl9kZXB0aCAqLworCUNIRUNLX1NUQUNLX0RFUFRIKCk7CisKKwly ZXR1cm4gZWRhdGEtPmVsZXZlbDsKK30KIAogLyoKICAqIEZ1bmN0aW9ucyB0byBhbGxvdyBj b25zdHJ1Y3Rpb24gb2YgZXJyb3IgbWVzc2FnZSBzdHJpbmdzIHNlcGFyYXRlbHkgZnJvbQpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggNmE1NDc2ZDNjNGMuLjM2YzY5MTk4NmMw IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTEyMTg0LDUgKzEyMTg0LDMxIEBA CiAgIHByb2FsbGFyZ3R5cGVzID0+ICd7aW50OCxwZ19sc24scGdfbHNuLGludDR9JywgcHJv YXJnbW9kZXMgPT4gJ3tvLG8sbyxvfScsCiAgIHByb2FyZ25hbWVzID0+ICd7c3VtbWFyaXpl ZF90bGksc3VtbWFyaXplZF9sc24scGVuZGluZ19sc24sc3VtbWFyaXplcl9waWR9JywKICAg cHJvc3JjID0+ICdwZ19nZXRfd2FsX3N1bW1hcml6ZXJfc3RhdGUnIH0sCi0KK3sgb2lkID0+ ICc0NzAxJywKKyAgZGVzY3IgPT4gJ3BnX3N0YXRzX3ZhY3V1bV90YWJsZXMgcmV0dXJuIHN0 YXRzIHZhbHVlcycsCisgIHByb25hbWUgPT4gJ3BnX3N0YXRzX3ZhY3V1bV90YWJsZXMnLCBw cm92b2xhdGlsZSA9PiAncycsIHByb3JldHR5cGUgPT4gJ3JlY29yZCcscHJvaXNzdHJpY3Qg PT4gJ2YnLAorICBwcm9yZXRzZXQgPT4gJ3QnLAorICBwcm9hcmd0eXBlcyA9PiAnb2lkIG9p ZCcsCisgIHByb2FsbGFyZ3R5cGVzID0+ICd7b2lkLG9pZCxvaWQsaW50OCxpbnQ4LGludDgs aW50OCxpbnQ4LGludDgsaW50OCxpbnQ4LGludDgsaW50OCxpbnQ4LGludDgsaW50OCxpbnQ4 LGludDgsaW50OCxpbnQ4LGludDgsbnVtZXJpYyxmbG9hdDgsZmxvYXQ4LGZsb2F0OCxmbG9h dDgsZmxvYXQ4LGZsb2F0OCxpbnQ0fScsCisgIHByb2FyZ21vZGVzID0+ICd7aSxpLG8sbyxv LG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvfScsCisg IHByb2FyZ25hbWVzID0+ICd7ZGJvaWQscmVsb2lkLHJlbGlkLHRvdGFsX2Jsa3NfcmVhZCx0 b3RhbF9ibGtzX2hpdCx0b3RhbF9ibGtzX2RpcnRpZWQsdG90YWxfYmxrc193cml0dGVuLHJl bF9ibGtzX3JlYWQscmVsX2Jsa3NfaGl0LHBhZ2VzX3NjYW5uZWQscGFnZXNfcmVtb3ZlZCxw YWdlc19mcm96ZW4scGFnZXNfYWxsX3Zpc2libGUsdHVwbGVzX2RlbGV0ZWQsdHVwbGVzX2Zy b3plbixkZWFkX3R1cGxlcyxpbmRleF92YWN1dW1fY291bnQscmV2X2FsbF9mcm96ZW5fcGFn ZXMscmV2X2FsbF92aXNpYmxlX3BhZ2VzLHdhbF9yZWNvcmRzLHdhbF9mcGksd2FsX2J5dGVz LGJsa19yZWFkX3RpbWUsYmxrX3dyaXRlX3RpbWUsZGVsYXlfdGltZSxzeXN0ZW1fdGltZSx1 c2VyX3RpbWUsdG90YWxfdGltZSxpbnRlcnJ1cHRzfScsCisgIHByb3NyYyA9PiAncGdfc3Rh dHNfdmFjdXVtX3RhYmxlcycgfSwKK3sgb2lkID0+ICc0NzAyJywKKyAgZGVzY3IgPT4gJ3Bn X3N0YXRzX3ZhY3V1bV9pbmRleGVzIHJldHVybiBzdGF0cyB2YWx1ZXMnLAorICBwcm9uYW1l ID0+ICdwZ19zdGF0c192YWN1dW1faW5kZXhlcycsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJv cmV0dHlwZSA9PiAncmVjb3JkJyxwcm9pc3N0cmljdCA9PiAnZicsCisgIHByb3JldHNldCA9 PiAndCcsCisgIHByb2FyZ3R5cGVzID0+ICdvaWQgb2lkJywKKyAgcHJvYWxsYXJndHlwZXMg PT4gJ3tvaWQsb2lkLG9pZCxpbnQ4LGludDgsaW50OCxpbnQ4LGludDgsaW50OCxpbnQ4LGlu dDgsaW50OCxpbnQ4LG51bWVyaWMsZmxvYXQ4LGZsb2F0OCxmbG9hdDgsZmxvYXQ4LGZsb2F0 OCxmbG9hdDgsaW50NH0nLAorICBwcm9hcmdtb2RlcyA9PiAne2ksaSxvLG8sbyxvLG8sbyxv LG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvfScsCisgIHByb2FyZ25hbWVzID0+ICd7ZGJvaWQs cmVsb2lkLHJlbGlkLHRvdGFsX2Jsa3NfcmVhZCx0b3RhbF9ibGtzX2hpdCx0b3RhbF9ibGtz X2RpcnRpZWQsdG90YWxfYmxrc193cml0dGVuLHJlbF9ibGtzX3JlYWQscmVsX2Jsa3NfaGl0 LHBhZ2VzX2RlbGV0ZWQsdHVwbGVzX2RlbGV0ZWQsd2FsX3JlY29yZHMsd2FsX2ZwaSx3YWxf Ynl0ZXMsYmxrX3JlYWRfdGltZSxibGtfd3JpdGVfdGltZSxkZWxheV90aW1lLHN5c3RlbV90 aW1lLHVzZXJfdGltZSx0b3RhbF90aW1lLGludGVycnVwdHN9JywKKyAgcHJvc3JjID0+ICdw Z19zdGF0c192YWN1dW1faW5kZXhlcycgfSwKKyAgeyBvaWQgPT4gJzQ3MDMnLAorICBkZXNj ciA9PiAncGdfc3RhdHNfdmFjdXVtX2RhdGFiYXNlIHJldHVybiBzdGF0cyB2YWx1ZXMnLAor ICBwcm9uYW1lID0+ICdwZ19zdGF0c192YWN1dW1fZGF0YWJhc2UnLCBwcm92b2xhdGlsZSA9 PiAncycsIHByb3JldHR5cGUgPT4gJ3JlY29yZCcscHJvaXNzdHJpY3QgPT4gJ2YnLAorICBw cm9yZXRzZXQgPT4gJ3QnLAorICBwcm9hcmd0eXBlcyA9PiAnb2lkJywKKyAgcHJvYWxsYXJn dHlwZXMgPT4gJ3tvaWQsb2lkLGludDgsaW50OCxpbnQ4LGludDgsaW50OCxpbnQ4LG51bWVy aWMsZmxvYXQ4LGZsb2F0OCxmbG9hdDgsZmxvYXQ4LGZsb2F0OCxmbG9hdDgsaW50NH0nLAor ICBwcm9hcmdtb2RlcyA9PiAne2ksbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG99JywK KyAgcHJvYXJnbmFtZXMgPT4gJ3tkYm9pZCxkYm9pZCxkYl9ibGtzX3JlYWQsZGJfYmxrc19o aXQsdG90YWxfYmxrc19kaXJ0aWVkLHRvdGFsX2Jsa3Nfd3JpdHRlbix3YWxfcmVjb3Jkcyx3 YWxfZnBpLHdhbF9ieXRlcyxibGtfcmVhZF90aW1lLGJsa193cml0ZV90aW1lLGRlbGF5X3Rp bWUsc3lzdGVtX3RpbWUsdXNlcl90aW1lLHRvdGFsX3RpbWUsaW50ZXJydXB0c30nLAorICBw cm9zcmMgPT4gJ3BnX3N0YXRzX3ZhY3V1bV9kYXRhYmFzZScgfSwKIF0KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMv dmFjdXVtLmgKaW5kZXggNzU5ZjlhODdkMzguLjA3YjI4YjE1ZDlmIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5k cy92YWN1dW0uaApAQCAtMzA4LDYgKzMwOCw3IEBAIGV4dGVybiBQR0RMTElNUE9SVCBpbnQg dmFjdXVtX211bHRpeGFjdF9mYWlsc2FmZV9hZ2U7CiBleHRlcm4gUEdETExJTVBPUlQgcGdf YXRvbWljX3VpbnQzMiAqVmFjdXVtU2hhcmVkQ29zdEJhbGFuY2U7CiBleHRlcm4gUEdETExJ TVBPUlQgcGdfYXRvbWljX3VpbnQzMiAqVmFjdXVtQWN0aXZlTldvcmtlcnM7CiBleHRlcm4g UEdETExJTVBPUlQgaW50IFZhY3V1bUNvc3RCYWxhbmNlTG9jYWw7CitleHRlcm4gUEdETExJ TVBPUlQgZG91YmxlIFZhY3V1bURlbGF5VGltZTsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGJv b2wgVmFjdXVtRmFpbHNhZmVBY3RpdmU7CiBleHRlcm4gUEdETExJTVBPUlQgZG91YmxlIHZh Y3V1bV9jb3N0X2RlbGF5OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGdzdGF0LmggYi9z cmMvaW5jbHVkZS9wZ3N0YXQuaAppbmRleCAyMTM2MjM5NzEwZS4uYjIwOGU1MzA4MjYgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCisrKyBiL3NyYy9pbmNsdWRlL3Bnc3Rh dC5oCkBAIC0xMzcsNiArMTM3LDg2IEBAIHR5cGVkZWYgc3RydWN0IFBnU3RhdF9CYWNrZW5k U3ViRW50cnkKIAlQZ1N0YXRfQ291bnRlciBzeW5jX2Vycm9yX2NvdW50OwogfSBQZ1N0YXRf QmFja2VuZFN1YkVudHJ5OwogCisKKy8qIFR5cGUgb2YgRXh0VmFjUmVwb3J0ICovCit0eXBl ZGVmIGVudW0gRXh0VmFjUmVwb3J0VHlwZQoreworCVBHU1RBVF9FWFRWQUNfSU5WQUxJRCA9 IDAsCisJUEdTVEFUX0VYVFZBQ19IRUFQID0gMSwKKwlQR1NUQVRfRVhUVkFDX0lOREVYID0g MiwKKwlQR1NUQVRfRVhUVkFDX0RCID0gMywKK30gRXh0VmFjUmVwb3J0VHlwZTsKKworLyog LS0tLS0tLS0tLQorICoKKyAqIEV4dFZhY1JlcG9ydAorICoKKyAqIEFkZGl0aW9uYWwgc3Rh dGlzdGljcyBvZiB2YWN1dW0gcHJvY2Vzc2luZyBvdmVyIGEgcmVsYXRpb24uCisgKiBwYWdl c19yZW1vdmVkIGlzIHRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHBoeXNpY2FsbHkgc2hyYW5r LAorICogaWYgYW55IChpZSB0aGUgY2hhbmdlIGluIGl0cyB0b3RhbCBzaXplIG9uIGRpc2sp CisgKiBwYWdlc19kZWxldGVkIHJlZmVyIHRvIGZyZWUgc3BhY2Ugd2l0aGluIHRoZSBpbmRl eCBmaWxlCisgKiAtLS0tLS0tLS0tCisgKi8KK3R5cGVkZWYgc3RydWN0IEV4dFZhY1JlcG9y dAoreworCWludDY0CQl0b3RhbF9ibGtzX3JlYWQ7IAkvKiBudW1iZXIgb2YgcGFnZXMgdGhh dCB3ZXJlIG1pc3NlZCBpbiBzaGFyZWQgYnVmZmVycyBkdXJpbmcgYSB2YWN1dW0gb2Ygc3Bl Y2lmaWMgcmVsYXRpb24gKi8KKwlpbnQ2NAkJdG90YWxfYmxrc19oaXQ7IAkvKiBudW1iZXIg b2YgcGFnZXMgdGhhdCB3ZXJlIGZvdW5kIGluIHNoYXJlZCBidWZmZXJzIGR1cmluZyBhIHZh Y3V1bSBvZiBzcGVjaWZpYyByZWxhdGlvbiAqLworCWludDY0CQl0b3RhbF9ibGtzX2RpcnRp ZWQ7CS8qIG51bWJlciBvZiBwYWdlcyBtYXJrZWQgYXMgJ0RpcnR5JyBkdXJpbmcgYSB2YWN1 dW0gb2Ygc3BlY2lmaWMgcmVsYXRpb24uICovCisJaW50NjQJCXRvdGFsX2Jsa3Nfd3JpdHRl bjsJLyogbnVtYmVyIG9mIHBhZ2VzIHdyaXR0ZW4gZHVyaW5nIGEgdmFjdXVtIG9mIHNwZWNp ZmljIHJlbGF0aW9uLiAqLworCisJaW50NjQJCWJsa3NfZmV0Y2hlZDsgCQkvKiBudW1iZXIg b2YgYSByZWxhdGlvbiBibG9ja3MsIGZldGNoZWQgZHVyaW5nIHRoZSB2YWN1dW0uICovCisJ aW50NjQJCWJsa3NfaGl0OwkJLyogbnVtYmVyIG9mIGEgcmVsYXRpb24gYmxvY2tzLCBmb3Vu ZCBpbiBzaGFyZWQgYnVmZmVycyBkdXJpbmcgdGhlIHZhY3V1bS4gKi8KKworCS8qIFZhY3V1 bSBXQUwgdXNhZ2Ugc3RhdHMgKi8KKwlpbnQ2NAkJd2FsX3JlY29yZHM7CS8qIHdhbCB1c2Fn ZTogbnVtYmVyIG9mIFdBTCByZWNvcmRzICovCisJaW50NjQJCXdhbF9mcGk7CQkvKiB3YWwg dXNhZ2U6IG51bWJlciBvZiBXQUwgZnVsbCBwYWdlIGltYWdlcyBwcm9kdWNlZCAqLworCXVp bnQ2NAkJd2FsX2J5dGVzOwkJLyogd2FsIHVzYWdlOiBzaXplIG9mIFdBTCByZWNvcmRzIHBy b2R1Y2VkICovCisKKwkvKiBUaW1lIHN0YXRzLiAqLworCWRvdWJsZQkJYmxrX3JlYWRfdGlt ZTsJLyogdGltZSBzcGVudCByZWFkaW5nIHBhZ2VzLCBpbiBtc2VjICovCisJZG91YmxlCQli bGtfd3JpdGVfdGltZTsgLyogdGltZSBzcGVudCB3cml0aW5nIHBhZ2VzLCBpbiBtc2VjICov CisJZG91YmxlCQlkZWxheV90aW1lOwkJLyogaG93IGxvbmcgdmFjdXVtIHNsZXB0IGluIHZh Y3V1bSBkZWxheSBwb2ludCwgaW4gbXNlYyAqLworCWRvdWJsZQkJc3lzdGVtX3RpbWU7CS8q IGFtb3VudCBvZiB0aW1lIHRoZSBDUFUgd2FzIGJ1c3kgZXhlY3V0aW5nIHZhY3V1bSBjb2Rl IGluIGtlcm5lbCBzcGFjZSwgaW4gbXNlYyAqLworCWRvdWJsZQkJdXNlcl90aW1lOwkJLyog YW1vdW50IG9mIHRpbWUgdGhlIENQVSB3YXMgYnVzeSBleGVjdXRpbmcgdmFjdXVtIGNvZGUg aW4gdXNlciBzcGFjZSwgaW4gbXNlYyAqLworCWRvdWJsZQkJdG90YWxfdGltZTsJCS8qIHRv dGFsIHRpbWUgb2YgYSB2YWN1dW0gb3BlcmF0aW9uLCBpbiBtc2VjICovCisKKwkvKiBJbnRl cnJ1cHRpb25zIG9uIGFueSBlcnJvcnMuICovCisJaW50MzIJCWludGVycnVwdHM7CisKKwlF eHRWYWNSZXBvcnRUeXBlIHR5cGU7CQkvKiBoZWFwLCBpbmRleCwgZXRjLiAqLworCisJLyog LS0tLS0tLS0tLQorCSAqCisJICogVGhlcmUgYXJlIHNlcGFyYXRlIG1ldHJpY3Mgb2Ygc3Rh dGlzdGljIGZvciB0YWJsZXMgYW5kIGluZGV4ZXMsCisJICogd2hpY2ggY29sbGVjdCBkdXJp bmcgdmFjdXVtLgorCSAqIFRoZSB1bmlvbiBvcGVyYXRvciBhbGxvd3MgdG8gY29tYmluZSB0 aGVzZSBzdGF0aXN0aWNzCisJICogc28gdGhhdCBlYWNoIG1ldHJpYyBpcyBhc3NpZ25lZCB0 byBhIHNwZWNpZmljIGNsYXNzIG9mIGNvbGxlY3RlZCBzdGF0aXN0aWNzLgorCSAqIFN1Y2gg YSBjb21iaW5lZCBzdHJ1Y3R1cmUgd2FzIGNhbGxlZCBwZXJfdHlwZV9zdGF0cy4KKwkgKiBU aGUgbmFtZSBvZiB0aGUgc3RydWN0dXJlIGl0c2VsZiBpcyBub3QgdXNlZCBhbnl3aGVyZSwK KwkgKiBpdCBleGlzdHMgb25seSBmb3IgdW5kZXJzdGFuZGluZyB0aGUgY29kZS4KKwkgKiAt LS0tLS0tLS0tCisJKi8KKwl1bmlvbgorCXsKKwkJc3RydWN0CisJCXsKKwkJCWludDY0CQlw YWdlc19zY2FubmVkOwkJLyogbnVtYmVyIG9mIHBhZ2VzIHdlIGV4YW1pbmVkICovCisJCQlp bnQ2NAkJcGFnZXNfcmVtb3ZlZDsJCS8qIG51bWJlciBvZiBwYWdlcyByZW1vdmVkIGJ5IHZh Y3V1bSAqLworCQkJaW50NjQJCXBhZ2VzX2Zyb3plbjsJCS8qIG51bWJlciBvZiBwYWdlcyBt YXJrZWQgaW4gVk0gYXMgZnJvemVuICovCisJCQlpbnQ2NAkJcGFnZXNfYWxsX3Zpc2libGU7 CS8qIG51bWJlciBvZiBwYWdlcyBtYXJrZWQgaW4gVk0gYXMgYWxsLXZpc2libGUgKi8KKwkJ CWludDY0CQl0dXBsZXNfZGVsZXRlZDsJCS8qIHR1cGxlcyBkZWxldGVkIGJ5IHZhY3V1bSAq LworCQkJaW50NjQJCXR1cGxlc19mcm96ZW47CQkvKiB0dXBsZXMgZnJvemVuIHVwIGJ5IHZh Y3V1bSAqLworCQkJaW50NjQJCWRlYWRfdHVwbGVzOwkJLyogbnVtYmVyIG9mIGRlbGV0ZWQg dHVwbGVzIHdoaWNoIHZhY3V1bSBjYW5ub3QgY2xlYW4gdXAgYnkgdmFjdXVtIG9wZXJhdGlv biAqLworCQkJaW50NjQJCWluZGV4X3ZhY3V1bV9jb3VudDsJLyogbnVtYmVyIG9mIGluZGV4 IHZhY3V1bWluZ3MgKi8KKwkJfQkJCWhlYXA7CisJCXN0cnVjdAorCQl7CisJCQlpbnQ2NAkJ cGFnZXNfZGVsZXRlZDsJCS8qIG51bWJlciBvZiBwYWdlcyBkZWxldGVkIGJ5IHZhY3V1bSAq LworCQkJaW50NjQJCXR1cGxlc19kZWxldGVkOwkJLyogdHVwbGVzIGRlbGV0ZWQgYnkgdmFj dXVtICovCisJCX0JCQlpbmRleDsKKwl9IC8qIHBlcl90eXBlX3N0YXRzICovOworfSBFeHRW YWNSZXBvcnQ7CisKIC8qIC0tLS0tLS0tLS0KICAqIFBnU3RhdF9UYWJsZUNvdW50cwkJCVRo ZSBhY3R1YWwgcGVyLXRhYmxlIGNvdW50cyBrZXB0IGJ5IGEgYmFja2VuZAogICoKQEAgLTE3 Nyw2ICsyNTcsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X1RhYmxlQ291bnRzCiAKIAlQ Z1N0YXRfQ291bnRlciBibG9ja3NfZmV0Y2hlZDsKIAlQZ1N0YXRfQ291bnRlciBibG9ja3Nf aGl0OworCisJUGdTdGF0X0NvdW50ZXIgcmV2X2FsbF92aXNpYmxlX3BhZ2VzOworCVBnU3Rh dF9Db3VudGVyIHJldl9hbGxfZnJvemVuX3BhZ2VzOworCisJLyoKKwkgKiBBZGRpdGlvbmFs IGN1bXVsYXRpdmUgc3RhdCBvbiB2YWN1dW0gb3BlcmF0aW9ucy4KKwkgKiBVc2UgYW4gZXhw ZW5zaXZlIHN0cnVjdHVyZSBhcyBhbiBhYnN0cmFjdGlvbiBmb3IgZGlmZmVyZW50IHR5cGVz IG9mCisJICogcmVsYXRpb25zLgorCSAqLworCUV4dFZhY1JlcG9ydAl2YWN1dW1fZXh0Owog fSBQZ1N0YXRfVGFibGVDb3VudHM7CiAKIC8qIC0tLS0tLS0tLS0KQEAgLTIzNSw3ICszMjUs NyBAQCB0eXBlZGVmIHN0cnVjdCBQZ1N0YXRfVGFibGVYYWN0U3RhdHVzCiAgKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K ICAqLwogCi0jZGVmaW5lIFBHU1RBVF9GSUxFX0ZPUk1BVF9JRAkweDAxQTVCQ0FDCisjZGVm aW5lIFBHU1RBVF9GSUxFX0ZPUk1BVF9JRAkweDAxQTVCQ0FECiAKIHR5cGVkZWYgc3RydWN0 IFBnU3RhdF9BcmNoaXZlclN0YXRzCiB7CkBAIC0zNTQsNiArNDQ0LDggQEAgdHlwZWRlZiBz dHJ1Y3QgUGdTdGF0X1N0YXREQkVudHJ5CiAJUGdTdGF0X0NvdW50ZXIgc2Vzc2lvbnNfa2ls bGVkOwogCiAJVGltZXN0YW1wVHogc3RhdF9yZXNldF90aW1lc3RhbXA7CisKKwlFeHRWYWNS ZXBvcnQgdmFjdXVtX2V4dDsJCS8qIGV4dGVuZGVkIHZhY3V1bSBzdGF0aXN0aWNzICovCiB9 IFBnU3RhdF9TdGF0REJFbnRyeTsKIAogdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X1N0YXRGdW5j RW50cnkKQEAgLTQyNiw2ICs1MTgsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X1N0YXRU YWJFbnRyeQogCVBnU3RhdF9Db3VudGVyIGFuYWx5emVfY291bnQ7CiAJVGltZXN0YW1wVHog bGFzdF9hdXRvYW5hbHl6ZV90aW1lOwkvKiBhdXRvdmFjdXVtIGluaXRpYXRlZCAqLwogCVBn U3RhdF9Db3VudGVyIGF1dG9hbmFseXplX2NvdW50OworCisJUGdTdGF0X0NvdW50ZXIgcmV2 X2FsbF92aXNpYmxlX3BhZ2VzOworCVBnU3RhdF9Db3VudGVyIHJldl9hbGxfZnJvemVuX3Bh Z2VzOworCisJRXh0VmFjUmVwb3J0IHZhY3V1bV9leHQ7CiB9IFBnU3RhdF9TdGF0VGFiRW50 cnk7CiAKIHR5cGVkZWYgc3RydWN0IFBnU3RhdF9XYWxTdGF0cwpAQCAtNTkxLDEwICs2ODgs MTIgQEAgZXh0ZXJuIHZvaWQgcGdzdGF0X2Fzc29jX3JlbGF0aW9uKFJlbGF0aW9uIHJlbCk7 CiBleHRlcm4gdm9pZCBwZ3N0YXRfdW5saW5rX3JlbGF0aW9uKFJlbGF0aW9uIHJlbCk7CiAK IGV4dGVybiB2b2lkIHBnc3RhdF9yZXBvcnRfdmFjdXVtKE9pZCB0YWJsZW9pZCwgYm9vbCBz aGFyZWQsCi0JCQkJCQkJCSBQZ1N0YXRfQ291bnRlciBsaXZldHVwbGVzLCBQZ1N0YXRfQ291 bnRlciBkZWFkdHVwbGVzKTsKKwkJCQkJCQkJIFBnU3RhdF9Db3VudGVyIGxpdmV0dXBsZXMs IFBnU3RhdF9Db3VudGVyIGRlYWR0dXBsZXMsCisJCQkJCQkJCSBFeHRWYWNSZXBvcnQgKnBh cmFtcyk7CiBleHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X2FuYWx5emUoUmVsYXRpb24gcmVs LAogCQkJCQkJCQkgIFBnU3RhdF9Db3VudGVyIGxpdmV0dXBsZXMsIFBnU3RhdF9Db3VudGVy IGRlYWR0dXBsZXMsCiAJCQkJCQkJCSAgYm9vbCByZXNldGNvdW50ZXIpOworZXh0ZXJuIHZv aWQgcGdzdGF0X3JlcG9ydF92YWN1dW1fZXJyb3IoT2lkIHRhYmxlb2lkLCBFeHRWYWNSZXBv cnRUeXBlIG1fdHlwZSk7CiAKIC8qCiAgKiBJZiBzdGF0cyBhcmUgZW5hYmxlZCwgYnV0IHBl bmRpbmcgZGF0YSBoYXNuJ3QgYmVlbiBwcmVwYXJlZCB5ZXQsIGNhbGwKQEAgLTY0Miw2ICs3 NDEsMTcgQEAgZXh0ZXJuIHZvaWQgcGdzdGF0X3JlcG9ydF9hbmFseXplKFJlbGF0aW9uIHJl bCwKIAkJaWYgKHBnc3RhdF9zaG91bGRfY291bnRfcmVsYXRpb24ocmVsKSkJCQkJCQlcCiAJ CQkocmVsKS0+cGdzdGF0X2luZm8tPmNvdW50cy5ibG9ja3NfaGl0Kys7CQkJCVwKIAl9IHdo aWxlICgwKQorLyogYWNjdW11bGF0ZSB1bmZyb3plbiBhbGwtdmlzaWJsZSBhbmQgYWxsLWZy b3plbiBwYWdlcyAqLworI2RlZmluZSBwZ3N0YXRfY291bnRfdm1fcmV2X2FsbF92aXNpYmxl KHJlbCkJCQkJCQlcCisJZG8gewkJCQkJCQkJCQkJCQkJCVwKKwkJaWYgKHBnc3RhdF9zaG91 bGRfY291bnRfcmVsYXRpb24ocmVsKSkJCQkJCQlcCisJCQkocmVsKS0+cGdzdGF0X2luZm8t PmNvdW50cy5yZXZfYWxsX3Zpc2libGVfcGFnZXMrKzsJXAorCX0gd2hpbGUgKDApCisjZGVm aW5lIHBnc3RhdF9jb3VudF92bV9yZXZfYWxsX2Zyb3plbihyZWwpCQkJCQkJXAorCWRvIHsJ CQkJCQkJCQkJCQkJCQlcCisJCWlmIChwZ3N0YXRfc2hvdWxkX2NvdW50X3JlbGF0aW9uKHJl bCkpCQkJCQkJXAorCQkJKHJlbCktPnBnc3RhdF9pbmZvLT5jb3VudHMucmV2X2FsbF9mcm96 ZW5fcGFnZXMrKzsJXAorCX0gd2hpbGUgKDApCiAKIGV4dGVybiB2b2lkIHBnc3RhdF9jb3Vu dF9oZWFwX2luc2VydChSZWxhdGlvbiByZWwsIFBnU3RhdF9Db3VudGVyIG4pOwogZXh0ZXJu IHZvaWQgcGdzdGF0X2NvdW50X2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbCwgYm9vbCBob3Qs IGJvb2wgbmV3cGFnZSk7CkBAIC02NTgsNyArNzY4LDkgQEAgZXh0ZXJuIFBnU3RhdF9TdGF0 VGFiRW50cnkgKnBnc3RhdF9mZXRjaF9zdGF0X3RhYmVudHJ5KE9pZCByZWxpZCk7CiBleHRl cm4gUGdTdGF0X1N0YXRUYWJFbnRyeSAqcGdzdGF0X2ZldGNoX3N0YXRfdGFiZW50cnlfZXh0 KGJvb2wgc2hhcmVkLAogCQkJCQkJCQkJCQkJCQkgICBPaWQgcmVsb2lkKTsKIGV4dGVybiBQ Z1N0YXRfVGFibGVTdGF0dXMgKmZpbmRfdGFic3RhdF9lbnRyeShPaWQgcmVsX2lkKTsKLQor ZXh0ZXJuIHZvaWQKK3Bnc3RhdF9hY2N1bXVsYXRlX2V4dHZhY19zdGF0cyhFeHRWYWNSZXBv cnQgKmRzdCwgRXh0VmFjUmVwb3J0ICpzcmMsCisJCQkJCQkJICAgYm9vbCBhY2N1bXVsYXRl X3JlbHR5cGVfc3BlY2lmaWNfaW5mbyk7CiAKIC8qCiAgKiBGdW5jdGlvbnMgaW4gcGdzdGF0 X3JlcGxzbG90LmMKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2Vsb2cuaCBiL3Ny Yy9pbmNsdWRlL3V0aWxzL2Vsb2cuaAppbmRleCAwNTRkZDJiZjYyZi4uYzYyMjViOWNkZGQg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2Vsb2cuaAorKysgYi9zcmMvaW5jbHVk ZS91dGlscy9lbG9nLmgKQEAgLTIyOCw3ICsyMjgsNyBAQCBleHRlcm4gaW50CWVycl9nZW5l cmljX3N0cmluZyhpbnQgZmllbGQsIGNvbnN0IGNoYXIgKnN0cik7CiBleHRlcm4gaW50CWdl dGVycmNvZGUodm9pZCk7CiBleHRlcm4gaW50CWdldGVycnBvc2l0aW9uKHZvaWQpOwogZXh0 ZXJuIGludAlnZXRpbnRlcm5hbGVycnBvc2l0aW9uKHZvaWQpOwotCitleHRlcm4gaW50CWdl dGVycmVsZXZlbCh2b2lkKTsKIAogLyotLS0tLS0tLS0tCiAgKiBPbGQtc3R5bGUgZXJyb3Ig cmVwb3J0aW5nIEFQSTogdG8gYmUgdXNlZCBpbiB0aGlzIHdheToKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3V0aWxzL3Bnc3RhdF9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMv cGdzdGF0X2ludGVybmFsLmgKaW5kZXggZGJiY2EzMTYwMjUuLmU2MDc5YzY3NDIxIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9wZ3N0YXRfaW50ZXJuYWwuaAorKysgYi9zcmMv aW5jbHVkZS91dGlscy9wZ3N0YXRfaW50ZXJuYWwuaApAQCAtNTE2LDcgKzUxNiw3IEBAIGV4 dGVybiBQZ1N0YXRfRW50cnlSZWYgKnBnc3RhdF9mZXRjaF9wZW5kaW5nX2VudHJ5KFBnU3Rh dF9LaW5kIGtpbmQsIE9pZCBkYm9pZCwKIAogZXh0ZXJuIHZvaWQgKnBnc3RhdF9mZXRjaF9l bnRyeShQZ1N0YXRfS2luZCBraW5kLCBPaWQgZGJvaWQsIE9pZCBvYmpvaWQpOwogZXh0ZXJu IHZvaWQgcGdzdGF0X3NuYXBzaG90X2ZpeGVkKFBnU3RhdF9LaW5kIGtpbmQpOwotCitleHRl cm4gdm9pZCBwZ3N0YXRfdXBkYXRlX3NuYXBzaG90KFBnU3RhdF9LaW5kIGtpbmQpOwogCiAv KgogICogRnVuY3Rpb25zIGluIHBnc3RhdF9hcmNoaXZlci5jCkBAIC04MDUsNCArODA1LDM4 IEBAIHBnc3RhdF9nZXRfZW50cnlfZGF0YShQZ1N0YXRfS2luZCBraW5kLCBQZ1N0YXRTaGFy ZWRfQ29tbW9uICplbnRyeSkKIAlyZXR1cm4gKChjaGFyICopIChlbnRyeSkpICsgb2ZmOwog fQogCisvKiBoYXNoIHRhYmxlIGZvciBzdGF0aXN0aWNzIHNuYXBzaG90cyBlbnRyeSAqLwor dHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X1NuYXBzaG90RW50cnkKK3sKKwlQZ1N0YXRfSGFzaEtl eSBrZXk7CisJY2hhcgkJc3RhdHVzOwkJCS8qIGZvciBzaW1wbGVoYXNoIHVzZSAqLworCXZv aWQJICAgKmRhdGE7CQkJLyogdGhlIHN0YXRzIGRhdGEgaXRzZWxmICovCit9IFBnU3RhdF9T bmFwc2hvdEVudHJ5OworCisvKiAtLS0tLS0tLS0tCisgKiBCYWNrZW5kLWxvY2FsIEhhc2gg VGFibGUgRGVmaW5pdGlvbnMKKyAqIC0tLS0tLS0tLS0KKyAqLworCisvKiBmb3Igc3RhdHMg c25hcHNob3QgZW50cmllcyAqLworI2RlZmluZSBTSF9QUkVGSVggcGdzdGF0X3NuYXBzaG90 CisjZGVmaW5lIFNIX0VMRU1FTlRfVFlQRSBQZ1N0YXRfU25hcHNob3RFbnRyeQorI2RlZmlu ZSBTSF9LRVlfVFlQRSBQZ1N0YXRfSGFzaEtleQorI2RlZmluZSBTSF9LRVkga2V5CisjZGVm aW5lIFNIX0hBU0hfS0VZKHRiLCBrZXkpIFwKKwlwZ3N0YXRfaGFzaF9oYXNoX2tleSgma2V5 LCBzaXplb2YoUGdTdGF0X0hhc2hLZXkpLCBOVUxMKQorI2RlZmluZSBTSF9FUVVBTCh0Yiwg YSwgYikgXAorCXBnc3RhdF9jbXBfaGFzaF9rZXkoJmEsICZiLCBzaXplb2YoUGdTdGF0X0hh c2hLZXkpLCBOVUxMKSA9PSAwCisjZGVmaW5lIFNIX1NDT1BFIHN0YXRpYyBpbmxpbmUKKyNk ZWZpbmUgU0hfREVGSU5FCisjZGVmaW5lIFNIX0RFQ0xBUkUKKyNpbmNsdWRlICJsaWIvc2lt cGxlaGFzaC5oIgorCit0eXBlZGVmIHBnc3RhdF9zbmFwc2hvdF9pdGVyYXRvciBTbmFwc2hv dEl0ZXJhdG9yOworCisjZGVmaW5lIEluaXRTbmFwc2hvdEl0ZXJhdG9yKGh0YWJsZSwgaXRl cikgXAorCXBnc3RhdF9zbmFwc2hvdF9zdGFydF9pdGVyYXRlKGh0YWJsZSwgaXRlcik7Cisj ZGVmaW5lIFNjYW5TdGF0U25hcHNob3QoaHRhYmxlLCBpdGVyKSBcCisJcGdzdGF0X3NuYXBz aG90X2l0ZXJhdGUoaHRhYmxlLCBpdGVyKQorCiAjZW5kaWYJCQkJCQkJLyogUEdTVEFUX0lO VEVSTkFMX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC92 YWN1dW0tZXh0ZW5kZWQtc3RhdGlzdGljLm91dCBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBl Y3RlZC92YWN1dW0tZXh0ZW5kZWQtc3RhdGlzdGljLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uODMzMzNiN2RkMjcKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvdmFjdXVtLWV4dGVuZGVkLXN0YXRpc3RpYy5v dXQKQEAgLTAsMCArMSw0MTkgQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCAxIHNlc3Npb25z CisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMV9pbnNlcnQgczFfcHJpbnRfdmFjdXVtX3N0 YXRzX3RhYmxlcyBzMV9wcmludF92YWN1dW1fc3RhdHNfaW5kZXhlcyBzMV9zZXRfYWdyZXNz aXZlX3ZhY3V1bSBzMV9hbmFseXplIHMxX2RlbGV0ZV9oYWxmX3RhYmxlIHMxX3ByaW50X3Zh Y3V1bV9zdGF0c190YWJsZXMgczFfcHJpbnRfdmFjdXVtX3N0YXRzX2luZGV4ZXMgczFfY2hl Y2twb2ludCBzMV92YWN1dW0gczFfcHJpbnRfdmFjdXVtX3N0YXRzX3RhYmxlcyBzMV9wcmlu dF92YWN1dW1fc3RhdHNfaW5kZXhlcyBzMV9kZWxldGVfZnVsbF90YWJsZSBzMV9jaGVja3Bv aW50IHMxX3ZhY3V1bV9wYXJhbGxlbCBzMV9wcmludF92YWN1dW1fc3RhdHNfdGFibGVzIHMx X3ByaW50X3ZhY3V1bV9zdGF0c19pbmRleGVzIHMxX2luc2VydCBzMV91cGRhdGUgczFfY2hl Y2twb2ludCBzMV92YWN1dW1fZnVsbCBzMV9wcmludF92YWN1dW1fc3RhdHNfdGFibGVzIHMx X3ByaW50X3ZhY3V1bV9zdGF0c19pbmRleGVzIHMxX2NoZWNrcG9pbnQgczFfZGVsZXRlX2Z1 bGxfdGFibGUgczFfdHJhbmNhdGUgczFfY2hlY2twb2ludCBzMV92YWN1dW0gczFfcHJpbnRf dmFjdXVtX3N0YXRzX3RhYmxlcyBzMV9wcmludF92YWN1dW1fc3RhdHNfaW5kZXhlcworc3Rl cCBzMV9pbnNlcnQ6IElOU0VSVCBJTlRPIHZlc3RhdCh4KSBTRUxFQ1QgaWQgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSw3NzApIEFzIGlkOworc3RlcCBzMV9wcmludF92YWN1dW1fc3RhdHNf dGFibGVzOiAKKyAgICBTRUxFQ1QgdnQucmVsbmFtZSwKKyAgICAgICAgICAgcGFnZXNfZnJv emVuLAorICAgICAgICAgICB0dXBsZXNfZGVsZXRlZCwKKyAgICAgICAgICAgcGFnZXNfc2Nh bm5lZCwKKyAgICAgICAgICAgcGFnZXNfcmVtb3ZlZAorICAgIEZST00gcGdfc3RhdHNfdmFj dXVtX3RhYmxlcyB2dCwgcGdfY2xhc3MgYworICAgIFdIRVJFIHZ0LnJlbG5hbWUgPSAndmVz dGF0JyBBTkQKKyAgICAgICAgICB2dC5yZWxpZCA9IGMub2lkOworCityZWxuYW1lfHBhZ2Vz X2Zyb3plbnx0dXBsZXNfZGVsZXRlZHxwYWdlc19zY2FubmVkfHBhZ2VzX3JlbW92ZWQKKy0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLQorKDAgcm93cykKKworc3RlcCBzMV9wcmludF92YWN1dW1fc3RhdHNfaW5kZXhl czogCisgICAgU0VMRUNUIHZ0LnJlbG5hbWUsCisgICAgICAgICAgIHBhZ2VzX2RlbGV0ZWQs CisgICAgICAgICAgIHR1cGxlc19kZWxldGVkCisgICAgRlJPTSBwZ19zdGF0c192YWN1dW1f aW5kZXhlcyB2dCwgcGdfY2xhc3MgYworICAgIFdIRVJFIHZ0LnJlbG5hbWUgPSAndmVzdGF0 X3BrZXknIEFORAorICAgICAgICAgIHZ0LnJlbGlkID0gYy5vaWQ7CisKK3JlbG5hbWV8cGFn ZXNfZGVsZXRlZHx0dXBsZXNfZGVsZXRlZAorLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tCisoMCByb3dzKQorCitzdGVwIHMxX3NldF9hZ3Jlc3NpdmVfdmFjdXVtOiBT RVQgdmFjdXVtX2ZyZWV6ZV9taW5fYWdlID0gMDsKK3N0ZXAgczFfYW5hbHl6ZTogQU5BTFla RSB2ZXN0YXQ7CitzdGVwIHMxX2RlbGV0ZV9oYWxmX3RhYmxlOiBERUxFVEUgRlJPTSB2ZXN0 YXQgV0hFUkUgeCAlIDIgPSAwOworc3RlcCBzMV9wcmludF92YWN1dW1fc3RhdHNfdGFibGVz OiAKKyAgICBTRUxFQ1QgdnQucmVsbmFtZSwKKyAgICAgICAgICAgcGFnZXNfZnJvemVuLAor ICAgICAgICAgICB0dXBsZXNfZGVsZXRlZCwKKyAgICAgICAgICAgcGFnZXNfc2Nhbm5lZCwK KyAgICAgICAgICAgcGFnZXNfcmVtb3ZlZAorICAgIEZST00gcGdfc3RhdHNfdmFjdXVtX3Rh YmxlcyB2dCwgcGdfY2xhc3MgYworICAgIFdIRVJFIHZ0LnJlbG5hbWUgPSAndmVzdGF0JyBB TkQKKyAgICAgICAgICB2dC5yZWxpZCA9IGMub2lkOworCityZWxuYW1lfHBhZ2VzX2Zyb3pl bnx0dXBsZXNfZGVsZXRlZHxwYWdlc19zY2FubmVkfHBhZ2VzX3JlbW92ZWQKKy0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LQorKDAgcm93cykKKworc3RlcCBzMV9wcmludF92YWN1dW1fc3RhdHNfaW5kZXhlczogCisg ICAgU0VMRUNUIHZ0LnJlbG5hbWUsCisgICAgICAgICAgIHBhZ2VzX2RlbGV0ZWQsCisgICAg ICAgICAgIHR1cGxlc19kZWxldGVkCisgICAgRlJPTSBwZ19zdGF0c192YWN1dW1faW5kZXhl cyB2dCwgcGdfY2xhc3MgYworICAgIFdIRVJFIHZ0LnJlbG5hbWUgPSAndmVzdGF0X3BrZXkn IEFORAorICAgICAgICAgIHZ0LnJlbGlkID0gYy5vaWQ7CisKK3JlbG5hbWV8cGFnZXNfZGVs ZXRlZHx0dXBsZXNfZGVsZXRlZAorLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tCisoMCByb3dzKQorCitzdGVwIHMxX2NoZWNrcG9pbnQ6IENIRUNLUE9JTlQ7CitzdGVw IHMxX3ZhY3V1bTogVkFDVVVNIHZlc3RhdDsKK3N0ZXAgczFfcHJpbnRfdmFjdXVtX3N0YXRz X3RhYmxlczogCisgICAgU0VMRUNUIHZ0LnJlbG5hbWUsCisgICAgICAgICAgIHBhZ2VzX2Zy b3plbiwKKyAgICAgICAgICAgdHVwbGVzX2RlbGV0ZWQsCisgICAgICAgICAgIHBhZ2VzX3Nj YW5uZWQsCisgICAgICAgICAgIHBhZ2VzX3JlbW92ZWQKKyAgICBGUk9NIHBnX3N0YXRzX3Zh Y3V1bV90YWJsZXMgdnQsIHBnX2NsYXNzIGMKKyAgICBXSEVSRSB2dC5yZWxuYW1lID0gJ3Zl c3RhdCcgQU5ECisgICAgICAgICAgdnQucmVsaWQgPSBjLm9pZDsKKworcmVsbmFtZXxwYWdl c19mcm96ZW58dHVwbGVzX2RlbGV0ZWR8cGFnZXNfc2Nhbm5lZHxwYWdlc19yZW1vdmVkCist LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0KK3Zlc3RhdCB8ICAgICAgICAgICA0fCAgICAgICAgICAgMzg1fCAgICAgICAg ICAgIDR8ICAgICAgICAgICAgMAorKDEgcm93KQorCitzdGVwIHMxX3ByaW50X3ZhY3V1bV9z dGF0c19pbmRleGVzOiAKKyAgICBTRUxFQ1QgdnQucmVsbmFtZSwKKyAgICAgICAgICAgcGFn ZXNfZGVsZXRlZCwKKyAgICAgICAgICAgdHVwbGVzX2RlbGV0ZWQKKyAgICBGUk9NIHBnX3N0 YXRzX3ZhY3V1bV9pbmRleGVzIHZ0LCBwZ19jbGFzcyBjCisgICAgV0hFUkUgdnQucmVsbmFt ZSA9ICd2ZXN0YXRfcGtleScgQU5ECisgICAgICAgICAgdnQucmVsaWQgPSBjLm9pZDsKKwor cmVsbmFtZSAgICB8cGFnZXNfZGVsZXRlZHx0dXBsZXNfZGVsZXRlZAorLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQordmVzdGF0X3BrZXl8ICAgICAgICAgICAg MHwgICAgICAgICAgIDM4NQorKDEgcm93KQorCitzdGVwIHMxX2RlbGV0ZV9mdWxsX3RhYmxl OiBERUxFVEUgRlJPTSB2ZXN0YXQ7CitzdGVwIHMxX2NoZWNrcG9pbnQ6IENIRUNLUE9JTlQ7 CitzdGVwIHMxX3ZhY3V1bV9wYXJhbGxlbDogVkFDVVVNIChQQVJBTExFTCAyLCBJTkRFWF9D TEVBTlVQIE9OKSB2ZXN0YXQ7CitzdGVwIHMxX3ByaW50X3ZhY3V1bV9zdGF0c190YWJsZXM6 IAorICAgIFNFTEVDVCB2dC5yZWxuYW1lLAorICAgICAgICAgICBwYWdlc19mcm96ZW4sCisg ICAgICAgICAgIHR1cGxlc19kZWxldGVkLAorICAgICAgICAgICBwYWdlc19zY2FubmVkLAor ICAgICAgICAgICBwYWdlc19yZW1vdmVkCisgICAgRlJPTSBwZ19zdGF0c192YWN1dW1fdGFi bGVzIHZ0LCBwZ19jbGFzcyBjCisgICAgV0hFUkUgdnQucmVsbmFtZSA9ICd2ZXN0YXQnIEFO RAorICAgICAgICAgIHZ0LnJlbGlkID0gYy5vaWQ7CisKK3JlbG5hbWV8cGFnZXNfZnJvemVu fHR1cGxlc19kZWxldGVkfHBhZ2VzX3NjYW5uZWR8cGFnZXNfcmVtb3ZlZAorLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Cit2ZXN0YXQgfCAgICAgICAgICAgOHwgICAgICAgICAgIDc3MHwgICAgICAgICAgICA4fCAg ICAgICAgICAgIDQKKygxIHJvdykKKworc3RlcCBzMV9wcmludF92YWN1dW1fc3RhdHNfaW5k ZXhlczogCisgICAgU0VMRUNUIHZ0LnJlbG5hbWUsCisgICAgICAgICAgIHBhZ2VzX2RlbGV0 ZWQsCisgICAgICAgICAgIHR1cGxlc19kZWxldGVkCisgICAgRlJPTSBwZ19zdGF0c192YWN1 dW1faW5kZXhlcyB2dCwgcGdfY2xhc3MgYworICAgIFdIRVJFIHZ0LnJlbG5hbWUgPSAndmVz dGF0X3BrZXknIEFORAorICAgICAgICAgIHZ0LnJlbGlkID0gYy5vaWQ7CisKK3JlbG5hbWUg ICAgfHBhZ2VzX2RlbGV0ZWR8dHVwbGVzX2RlbGV0ZWQKKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0KK3Zlc3RhdF9wa2V5fCAgICAgICAgICAgIDF8ICAgICAg ICAgICA3NzAKKygxIHJvdykKKworc3RlcCBzMV9pbnNlcnQ6IElOU0VSVCBJTlRPIHZlc3Rh dCh4KSBTRUxFQ1QgaWQgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSw3NzApIEFzIGlkOworc3Rl cCBzMV91cGRhdGU6IFVQREFURSB2ZXN0YXQgU0VUIHggPSB4KzE7CitFUlJPUjogIGR1cGxp Y2F0ZSBrZXkgdmFsdWUgdmlvbGF0ZXMgdW5pcXVlIGNvbnN0cmFpbnQgInZlc3RhdF9wa2V5 Igorc3RlcCBzMV9jaGVja3BvaW50OiBDSEVDS1BPSU5UOworc3RlcCBzMV92YWN1dW1fZnVs bDogVkFDVVVNIEZVTEwgdmVzdGF0Oworc3RlcCBzMV9wcmludF92YWN1dW1fc3RhdHNfdGFi bGVzOiAKKyAgICBTRUxFQ1QgdnQucmVsbmFtZSwKKyAgICAgICAgICAgcGFnZXNfZnJvemVu LAorICAgICAgICAgICB0dXBsZXNfZGVsZXRlZCwKKyAgICAgICAgICAgcGFnZXNfc2Nhbm5l ZCwKKyAgICAgICAgICAgcGFnZXNfcmVtb3ZlZAorICAgIEZST00gcGdfc3RhdHNfdmFjdXVt X3RhYmxlcyB2dCwgcGdfY2xhc3MgYworICAgIFdIRVJFIHZ0LnJlbG5hbWUgPSAndmVzdGF0 JyBBTkQKKyAgICAgICAgICB2dC5yZWxpZCA9IGMub2lkOworCityZWxuYW1lfHBhZ2VzX2Zy b3plbnx0dXBsZXNfZGVsZXRlZHxwYWdlc19zY2FubmVkfHBhZ2VzX3JlbW92ZWQKKy0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLQordmVzdGF0IHwgICAgICAgICAgIDh8ICAgICAgICAgICA3NzB8ICAgICAgICAgICAg OHwgICAgICAgICAgICA0CisoMSByb3cpCisKK3N0ZXAgczFfcHJpbnRfdmFjdXVtX3N0YXRz X2luZGV4ZXM6IAorICAgIFNFTEVDVCB2dC5yZWxuYW1lLAorICAgICAgICAgICBwYWdlc19k ZWxldGVkLAorICAgICAgICAgICB0dXBsZXNfZGVsZXRlZAorICAgIEZST00gcGdfc3RhdHNf dmFjdXVtX2luZGV4ZXMgdnQsIHBnX2NsYXNzIGMKKyAgICBXSEVSRSB2dC5yZWxuYW1lID0g J3Zlc3RhdF9wa2V5JyBBTkQKKyAgICAgICAgICB2dC5yZWxpZCA9IGMub2lkOworCityZWxu YW1lICAgIHxwYWdlc19kZWxldGVkfHR1cGxlc19kZWxldGVkCistLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCit2ZXN0YXRfcGtleXwgICAgICAgICAgICAxfCAg ICAgICAgICAgNzcwCisoMSByb3cpCisKK3N0ZXAgczFfY2hlY2twb2ludDogQ0hFQ0tQT0lO VDsKK3N0ZXAgczFfZGVsZXRlX2Z1bGxfdGFibGU6IERFTEVURSBGUk9NIHZlc3RhdDsKK3N0 ZXAgczFfdHJhbmNhdGU6IFRSVU5DQVRFIHZlc3RhdDsKK3N0ZXAgczFfY2hlY2twb2ludDog Q0hFQ0tQT0lOVDsKK3N0ZXAgczFfdmFjdXVtOiBWQUNVVU0gdmVzdGF0Oworc3RlcCBzMV9w cmludF92YWN1dW1fc3RhdHNfdGFibGVzOiAKKyAgICBTRUxFQ1QgdnQucmVsbmFtZSwKKyAg ICAgICAgICAgcGFnZXNfZnJvemVuLAorICAgICAgICAgICB0dXBsZXNfZGVsZXRlZCwKKyAg ICAgICAgICAgcGFnZXNfc2Nhbm5lZCwKKyAgICAgICAgICAgcGFnZXNfcmVtb3ZlZAorICAg IEZST00gcGdfc3RhdHNfdmFjdXVtX3RhYmxlcyB2dCwgcGdfY2xhc3MgYworICAgIFdIRVJF IHZ0LnJlbG5hbWUgPSAndmVzdGF0JyBBTkQKKyAgICAgICAgICB2dC5yZWxpZCA9IGMub2lk OworCityZWxuYW1lfHBhZ2VzX2Zyb3plbnx0dXBsZXNfZGVsZXRlZHxwYWdlc19zY2FubmVk fHBhZ2VzX3JlbW92ZWQKKy0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQordmVzdGF0IHwgICAgICAgICAgIDh8ICAgICAg ICAgICA3NzB8ICAgICAgICAgICAgOHwgICAgICAgICAgICA0CisoMSByb3cpCisKK3N0ZXAg czFfcHJpbnRfdmFjdXVtX3N0YXRzX2luZGV4ZXM6IAorICAgIFNFTEVDVCB2dC5yZWxuYW1l LAorICAgICAgICAgICBwYWdlc19kZWxldGVkLAorICAgICAgICAgICB0dXBsZXNfZGVsZXRl ZAorICAgIEZST00gcGdfc3RhdHNfdmFjdXVtX2luZGV4ZXMgdnQsIHBnX2NsYXNzIGMKKyAg ICBXSEVSRSB2dC5yZWxuYW1lID0gJ3Zlc3RhdF9wa2V5JyBBTkQKKyAgICAgICAgICB2dC5y ZWxpZCA9IGMub2lkOworCityZWxuYW1lICAgIHxwYWdlc19kZWxldGVkfHR1cGxlc19kZWxl dGVkCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCit2ZXN0YXRf cGtleXwgICAgICAgICAgICAxfCAgICAgICAgICAgNzcwCisoMSByb3cpCisKKworc3RhcnRp bmcgcGVybXV0YXRpb246IHMxX2luc2VydCBzMV9zZXRfYWdyZXNzaXZlX3ZhY3V1bSBzMV9h bmFseXplIHMxX2RlbGV0ZV9oYWxmX3RhYmxlIHMxX2NoZWNrcG9pbnQgczFfZGlmZmVyZW5j ZSBzMV9zYXZlX3dhbGxzIHMxX2NoZWNrcG9pbnQgczFfdmFjdXVtIHMxX2NoZWNrcG9pbnQg czFfZGlmZmVyZW5jZSBzMV9zYXZlX3dhbGxzIHMxX2RlbGV0ZV9mdWxsX3RhYmxlIHMxX2No ZWNrcG9pbnQgczFfdmFjdXVtX3BhcmFsbGVsIHMxX2NoZWNrcG9pbnQgczFfZGlmZmVyZW5j ZSBzMV9zYXZlX3dhbGxzIHMxX2luc2VydCBzMV91cGRhdGUgczFfY2hlY2twb2ludCBzMV92 YWN1dW1fZnVsbCBzMV9jaGVja3BvaW50IHMxX2RpZmZlcmVuY2UgczFfc2F2ZV93YWxscyBz MV9jaGVja3BvaW50IHMxX2RlbGV0ZV9mdWxsX3RhYmxlIHMxX3RyYW5jYXRlIHMxX3ZhY3V1 bSBzMV9jaGVja3BvaW50IHMxX2RpZmZlcmVuY2UgczFfc2F2ZV93YWxscworc3RlcCBzMV9p bnNlcnQ6IElOU0VSVCBJTlRPIHZlc3RhdCh4KSBTRUxFQ1QgaWQgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSw3NzApIEFzIGlkOworc3RlcCBzMV9zZXRfYWdyZXNzaXZlX3ZhY3V1bTogU0VU IHZhY3V1bV9mcmVlemVfbWluX2FnZSA9IDA7CitzdGVwIHMxX2FuYWx5emU6IEFOQUxZWkUg dmVzdGF0Oworc3RlcCBzMV9kZWxldGVfaGFsZl90YWJsZTogREVMRVRFIEZST00gdmVzdGF0 IFdIRVJFIHggJSAyID0gMDsKK3N0ZXAgczFfY2hlY2twb2ludDogQ0hFQ0tQT0lOVDsKK3N0 ZXAgczFfZGlmZmVyZW5jZTogCisgICAgU0VMRUNUIHQxLndhbF9yZWNvcmRzIC0gdDAud2Fs X3JlY29yZHMgPiAwIEFTIGRXUiwKKyAgICAgICAgICAgdDEud2FsX2ZwaSAtIHQwLndhbF9m cGkgPiAwIEFTIGRGUEksCisgICAgICAgICAgIHQxLndhbF9ieXRlcyAtIHQwLndhbF9ieXRl cyA+IDAgQVMgZFdCCisgICAgRlJPTSB2YWN1dW1fd2FsX3N0YXRzX3RhYmxlIHQwLCBwZ19z dGF0c192YWN1dW1fdGFibGVzIHQxCisgICAgV0hFUkUgdDAucmVsaWQgPSB0MS5yZWxpZDsK KworICAgIFNFTEVDVCB0MS53YWxfcmVjb3JkcyAtIHQwLndhbF9yZWNvcmRzID4gMCBBUyBp V1IsCisgICAgICAgICAgIHQxLndhbF9mcGkgLSB0MC53YWxfZnBpID4gMCBBUyBpRlBJLAor ICAgICAgICAgICB0MS53YWxfYnl0ZXMgLSB0MC53YWxfYnl0ZXMgPiAwIEFTIGlXQgorICAg IEZST00gdmFjdXVtX3dhbF9zdGF0c190YWJsZSB0MCwgcGdfc3RhdHNfdmFjdXVtX3RhYmxl cyB0MQorICAgIFdIRVJFIHQwLnJlbGlkID0gdDEucmVsaWQ7CisKK2R3cnxkZnBpfGR3Ygor LS0tKy0tLS0rLS0tCisoMCByb3dzKQorCitpd3J8aWZwaXxpd2IKKy0tLSstLS0tKy0tLQor KDAgcm93cykKKworc3RlcCBzMV9zYXZlX3dhbGxzOiAKKyAgICBVUERBVEUgdmFjdXVtX3dh bF9zdGF0c190YWJsZSBTRVQKKyAgICB3YWxfcmVjb3JkcyA9IGRXUiwgd2FsX2ZwaSA9IGRG UEksIHdhbF9ieXRlcyA9IGRXQgorICAgIEZST00gKFNFTEVDVCByZWxpZCwgd2FsX3JlY29y ZHMgQVMgZFdSLCB3YWxfZnBpIEFTIGRGUEksIHdhbF9ieXRlcyBBUyBkV0IKKyAgICBGUk9N IHBnX3N0YXRzX3ZhY3V1bV90YWJsZXMgdnQsIHBnX2NsYXNzIGMKKyAgICBXSEVSRSB2dC5y ZWxuYW1lID0gJ3Zlc3RhdCcgQU5ECisgICAgICAgICAgdnQucmVsaWQgPSBjLm9pZCkgdAor ICAgIFdIRVJFCisgICAgICAgICAgdC5yZWxpZCA9IHQucmVsaWQ7CisKKyAgIFVQREFURSB2 YWN1dW1fd2FsX3N0YXRzX2luZGV4IFNFVAorICAgIHdhbF9yZWNvcmRzID0gaVdSLCB3YWxf ZnBpID0gaUZQSSwgd2FsX2J5dGVzID0gaVdCCisgICAgRlJPTSAoU0VMRUNUIHJlbGlkLCB3 YWxfcmVjb3JkcyBBUyBpV1IsIHdhbF9mcGkgQVMgaUZQSSwgd2FsX2J5dGVzIEFTIGlXQgor ICAgIEZST00gcGdfc3RhdHNfdmFjdXVtX2luZGV4ZXMgdnQsIHBnX2NsYXNzIGMKKyAgICBX SEVSRSB2dC5yZWxuYW1lID0gJ3Zlc3RhdF9wa2V5JyBBTkQKKyAgICAgICAgICB2dC5yZWxp ZCA9IGMub2lkKSB0CisgICAgV0hFUkUKKyAgICAgICAgICB0LnJlbGlkID0gdC5yZWxpZDsK Kworc3RlcCBzMV9jaGVja3BvaW50OiBDSEVDS1BPSU5UOworc3RlcCBzMV92YWN1dW06IFZB Q1VVTSB2ZXN0YXQ7CitzdGVwIHMxX2NoZWNrcG9pbnQ6IENIRUNLUE9JTlQ7CitzdGVwIHMx X2RpZmZlcmVuY2U6IAorICAgIFNFTEVDVCB0MS53YWxfcmVjb3JkcyAtIHQwLndhbF9yZWNv cmRzID4gMCBBUyBkV1IsCisgICAgICAgICAgIHQxLndhbF9mcGkgLSB0MC53YWxfZnBpID4g MCBBUyBkRlBJLAorICAgICAgICAgICB0MS53YWxfYnl0ZXMgLSB0MC53YWxfYnl0ZXMgPiAw IEFTIGRXQgorICAgIEZST00gdmFjdXVtX3dhbF9zdGF0c190YWJsZSB0MCwgcGdfc3RhdHNf dmFjdXVtX3RhYmxlcyB0MQorICAgIFdIRVJFIHQwLnJlbGlkID0gdDEucmVsaWQ7CisKKyAg ICBTRUxFQ1QgdDEud2FsX3JlY29yZHMgLSB0MC53YWxfcmVjb3JkcyA+IDAgQVMgaVdSLAor ICAgICAgICAgICB0MS53YWxfZnBpIC0gdDAud2FsX2ZwaSA+IDAgQVMgaUZQSSwKKyAgICAg ICAgICAgdDEud2FsX2J5dGVzIC0gdDAud2FsX2J5dGVzID4gMCBBUyBpV0IKKyAgICBGUk9N IHZhY3V1bV93YWxfc3RhdHNfdGFibGUgdDAsIHBnX3N0YXRzX3ZhY3V1bV90YWJsZXMgdDEK KyAgICBXSEVSRSB0MC5yZWxpZCA9IHQxLnJlbGlkOworCitkd3J8ZGZwaXxkd2IKKy0tLSst LS0tKy0tLQordCAgfHQgICB8dCAgCisoMSByb3cpCisKK2l3cnxpZnBpfGl3YgorLS0tKy0t LS0rLS0tCit0ICB8dCAgIHx0ICAKKygxIHJvdykKKworc3RlcCBzMV9zYXZlX3dhbGxzOiAK KyAgICBVUERBVEUgdmFjdXVtX3dhbF9zdGF0c190YWJsZSBTRVQKKyAgICB3YWxfcmVjb3Jk cyA9IGRXUiwgd2FsX2ZwaSA9IGRGUEksIHdhbF9ieXRlcyA9IGRXQgorICAgIEZST00gKFNF TEVDVCByZWxpZCwgd2FsX3JlY29yZHMgQVMgZFdSLCB3YWxfZnBpIEFTIGRGUEksIHdhbF9i eXRlcyBBUyBkV0IKKyAgICBGUk9NIHBnX3N0YXRzX3ZhY3V1bV90YWJsZXMgdnQsIHBnX2Ns YXNzIGMKKyAgICBXSEVSRSB2dC5yZWxuYW1lID0gJ3Zlc3RhdCcgQU5ECisgICAgICAgICAg dnQucmVsaWQgPSBjLm9pZCkgdAorICAgIFdIRVJFCisgICAgICAgICAgdC5yZWxpZCA9IHQu cmVsaWQ7CisKKyAgIFVQREFURSB2YWN1dW1fd2FsX3N0YXRzX2luZGV4IFNFVAorICAgIHdh bF9yZWNvcmRzID0gaVdSLCB3YWxfZnBpID0gaUZQSSwgd2FsX2J5dGVzID0gaVdCCisgICAg RlJPTSAoU0VMRUNUIHJlbGlkLCB3YWxfcmVjb3JkcyBBUyBpV1IsIHdhbF9mcGkgQVMgaUZQ SSwgd2FsX2J5dGVzIEFTIGlXQgorICAgIEZST00gcGdfc3RhdHNfdmFjdXVtX2luZGV4ZXMg dnQsIHBnX2NsYXNzIGMKKyAgICBXSEVSRSB2dC5yZWxuYW1lID0gJ3Zlc3RhdF9wa2V5JyBB TkQKKyAgICAgICAgICB2dC5yZWxpZCA9IGMub2lkKSB0CisgICAgV0hFUkUKKyAgICAgICAg ICB0LnJlbGlkID0gdC5yZWxpZDsKKworc3RlcCBzMV9kZWxldGVfZnVsbF90YWJsZTogREVM RVRFIEZST00gdmVzdGF0Oworc3RlcCBzMV9jaGVja3BvaW50OiBDSEVDS1BPSU5UOworc3Rl cCBzMV92YWN1dW1fcGFyYWxsZWw6IFZBQ1VVTSAoUEFSQUxMRUwgMiwgSU5ERVhfQ0xFQU5V UCBPTikgdmVzdGF0Oworc3RlcCBzMV9jaGVja3BvaW50OiBDSEVDS1BPSU5UOworc3RlcCBz MV9kaWZmZXJlbmNlOiAKKyAgICBTRUxFQ1QgdDEud2FsX3JlY29yZHMgLSB0MC53YWxfcmVj b3JkcyA+IDAgQVMgZFdSLAorICAgICAgICAgICB0MS53YWxfZnBpIC0gdDAud2FsX2ZwaSA+ IDAgQVMgZEZQSSwKKyAgICAgICAgICAgdDEud2FsX2J5dGVzIC0gdDAud2FsX2J5dGVzID4g MCBBUyBkV0IKKyAgICBGUk9NIHZhY3V1bV93YWxfc3RhdHNfdGFibGUgdDAsIHBnX3N0YXRz X3ZhY3V1bV90YWJsZXMgdDEKKyAgICBXSEVSRSB0MC5yZWxpZCA9IHQxLnJlbGlkOworCisg ICAgU0VMRUNUIHQxLndhbF9yZWNvcmRzIC0gdDAud2FsX3JlY29yZHMgPiAwIEFTIGlXUiwK KyAgICAgICAgICAgdDEud2FsX2ZwaSAtIHQwLndhbF9mcGkgPiAwIEFTIGlGUEksCisgICAg ICAgICAgIHQxLndhbF9ieXRlcyAtIHQwLndhbF9ieXRlcyA+IDAgQVMgaVdCCisgICAgRlJP TSB2YWN1dW1fd2FsX3N0YXRzX3RhYmxlIHQwLCBwZ19zdGF0c192YWN1dW1fdGFibGVzIHQx CisgICAgV0hFUkUgdDAucmVsaWQgPSB0MS5yZWxpZDsKKworZHdyfGRmcGl8ZHdiCistLS0r LS0tLSstLS0KK3QgIHx0ICAgfHQgIAorKDEgcm93KQorCitpd3J8aWZwaXxpd2IKKy0tLSst LS0tKy0tLQordCAgfHQgICB8dCAgCisoMSByb3cpCisKK3N0ZXAgczFfc2F2ZV93YWxsczog CisgICAgVVBEQVRFIHZhY3V1bV93YWxfc3RhdHNfdGFibGUgU0VUCisgICAgd2FsX3JlY29y ZHMgPSBkV1IsIHdhbF9mcGkgPSBkRlBJLCB3YWxfYnl0ZXMgPSBkV0IKKyAgICBGUk9NIChT RUxFQ1QgcmVsaWQsIHdhbF9yZWNvcmRzIEFTIGRXUiwgd2FsX2ZwaSBBUyBkRlBJLCB3YWxf Ynl0ZXMgQVMgZFdCCisgICAgRlJPTSBwZ19zdGF0c192YWN1dW1fdGFibGVzIHZ0LCBwZ19j bGFzcyBjCisgICAgV0hFUkUgdnQucmVsbmFtZSA9ICd2ZXN0YXQnIEFORAorICAgICAgICAg IHZ0LnJlbGlkID0gYy5vaWQpIHQKKyAgICBXSEVSRQorICAgICAgICAgIHQucmVsaWQgPSB0 LnJlbGlkOworCisgICBVUERBVEUgdmFjdXVtX3dhbF9zdGF0c19pbmRleCBTRVQKKyAgICB3 YWxfcmVjb3JkcyA9IGlXUiwgd2FsX2ZwaSA9IGlGUEksIHdhbF9ieXRlcyA9IGlXQgorICAg IEZST00gKFNFTEVDVCByZWxpZCwgd2FsX3JlY29yZHMgQVMgaVdSLCB3YWxfZnBpIEFTIGlG UEksIHdhbF9ieXRlcyBBUyBpV0IKKyAgICBGUk9NIHBnX3N0YXRzX3ZhY3V1bV9pbmRleGVz IHZ0LCBwZ19jbGFzcyBjCisgICAgV0hFUkUgdnQucmVsbmFtZSA9ICd2ZXN0YXRfcGtleScg QU5ECisgICAgICAgICAgdnQucmVsaWQgPSBjLm9pZCkgdAorICAgIFdIRVJFCisgICAgICAg ICAgdC5yZWxpZCA9IHQucmVsaWQ7CisKK3N0ZXAgczFfaW5zZXJ0OiBJTlNFUlQgSU5UTyB2 ZXN0YXQoeCkgU0VMRUNUIGlkIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsNzcwKSBBcyBpZDsK K3N0ZXAgczFfdXBkYXRlOiBVUERBVEUgdmVzdGF0IFNFVCB4ID0geCsxOworRVJST1I6ICBk dXBsaWNhdGUga2V5IHZhbHVlIHZpb2xhdGVzIHVuaXF1ZSBjb25zdHJhaW50ICJ2ZXN0YXRf cGtleSIKK3N0ZXAgczFfY2hlY2twb2ludDogQ0hFQ0tQT0lOVDsKK3N0ZXAgczFfdmFjdXVt X2Z1bGw6IFZBQ1VVTSBGVUxMIHZlc3RhdDsKK3N0ZXAgczFfY2hlY2twb2ludDogQ0hFQ0tQ T0lOVDsKK3N0ZXAgczFfZGlmZmVyZW5jZTogCisgICAgU0VMRUNUIHQxLndhbF9yZWNvcmRz IC0gdDAud2FsX3JlY29yZHMgPiAwIEFTIGRXUiwKKyAgICAgICAgICAgdDEud2FsX2ZwaSAt IHQwLndhbF9mcGkgPiAwIEFTIGRGUEksCisgICAgICAgICAgIHQxLndhbF9ieXRlcyAtIHQw LndhbF9ieXRlcyA+IDAgQVMgZFdCCisgICAgRlJPTSB2YWN1dW1fd2FsX3N0YXRzX3RhYmxl IHQwLCBwZ19zdGF0c192YWN1dW1fdGFibGVzIHQxCisgICAgV0hFUkUgdDAucmVsaWQgPSB0 MS5yZWxpZDsKKworICAgIFNFTEVDVCB0MS53YWxfcmVjb3JkcyAtIHQwLndhbF9yZWNvcmRz ID4gMCBBUyBpV1IsCisgICAgICAgICAgIHQxLndhbF9mcGkgLSB0MC53YWxfZnBpID4gMCBB UyBpRlBJLAorICAgICAgICAgICB0MS53YWxfYnl0ZXMgLSB0MC53YWxfYnl0ZXMgPiAwIEFT IGlXQgorICAgIEZST00gdmFjdXVtX3dhbF9zdGF0c190YWJsZSB0MCwgcGdfc3RhdHNfdmFj dXVtX3RhYmxlcyB0MQorICAgIFdIRVJFIHQwLnJlbGlkID0gdDEucmVsaWQ7CisKK2R3cnxk ZnBpfGR3YgorLS0tKy0tLS0rLS0tCitmICB8ZiAgIHxmICAKKygxIHJvdykKKworaXdyfGlm cGl8aXdiCistLS0rLS0tLSstLS0KK2YgIHxmICAgfGYgIAorKDEgcm93KQorCitzdGVwIHMx X3NhdmVfd2FsbHM6IAorICAgIFVQREFURSB2YWN1dW1fd2FsX3N0YXRzX3RhYmxlIFNFVAor ICAgIHdhbF9yZWNvcmRzID0gZFdSLCB3YWxfZnBpID0gZEZQSSwgd2FsX2J5dGVzID0gZFdC CisgICAgRlJPTSAoU0VMRUNUIHJlbGlkLCB3YWxfcmVjb3JkcyBBUyBkV1IsIHdhbF9mcGkg QVMgZEZQSSwgd2FsX2J5dGVzIEFTIGRXQgorICAgIEZST00gcGdfc3RhdHNfdmFjdXVtX3Rh YmxlcyB2dCwgcGdfY2xhc3MgYworICAgIFdIRVJFIHZ0LnJlbG5hbWUgPSAndmVzdGF0JyBB TkQKKyAgICAgICAgICB2dC5yZWxpZCA9IGMub2lkKSB0CisgICAgV0hFUkUKKyAgICAgICAg ICB0LnJlbGlkID0gdC5yZWxpZDsKKworICAgVVBEQVRFIHZhY3V1bV93YWxfc3RhdHNfaW5k ZXggU0VUCisgICAgd2FsX3JlY29yZHMgPSBpV1IsIHdhbF9mcGkgPSBpRlBJLCB3YWxfYnl0 ZXMgPSBpV0IKKyAgICBGUk9NIChTRUxFQ1QgcmVsaWQsIHdhbF9yZWNvcmRzIEFTIGlXUiwg d2FsX2ZwaSBBUyBpRlBJLCB3YWxfYnl0ZXMgQVMgaVdCCisgICAgRlJPTSBwZ19zdGF0c192 YWN1dW1faW5kZXhlcyB2dCwgcGdfY2xhc3MgYworICAgIFdIRVJFIHZ0LnJlbG5hbWUgPSAn dmVzdGF0X3BrZXknIEFORAorICAgICAgICAgIHZ0LnJlbGlkID0gYy5vaWQpIHQKKyAgICBX SEVSRQorICAgICAgICAgIHQucmVsaWQgPSB0LnJlbGlkOworCitzdGVwIHMxX2NoZWNrcG9p bnQ6IENIRUNLUE9JTlQ7CitzdGVwIHMxX2RlbGV0ZV9mdWxsX3RhYmxlOiBERUxFVEUgRlJP TSB2ZXN0YXQ7CitzdGVwIHMxX3RyYW5jYXRlOiBUUlVOQ0FURSB2ZXN0YXQ7CitzdGVwIHMx X3ZhY3V1bTogVkFDVVVNIHZlc3RhdDsKK3N0ZXAgczFfY2hlY2twb2ludDogQ0hFQ0tQT0lO VDsKK3N0ZXAgczFfZGlmZmVyZW5jZTogCisgICAgU0VMRUNUIHQxLndhbF9yZWNvcmRzIC0g dDAud2FsX3JlY29yZHMgPiAwIEFTIGRXUiwKKyAgICAgICAgICAgdDEud2FsX2ZwaSAtIHQw LndhbF9mcGkgPiAwIEFTIGRGUEksCisgICAgICAgICAgIHQxLndhbF9ieXRlcyAtIHQwLndh bF9ieXRlcyA+IDAgQVMgZFdCCisgICAgRlJPTSB2YWN1dW1fd2FsX3N0YXRzX3RhYmxlIHQw LCBwZ19zdGF0c192YWN1dW1fdGFibGVzIHQxCisgICAgV0hFUkUgdDAucmVsaWQgPSB0MS5y ZWxpZDsKKworICAgIFNFTEVDVCB0MS53YWxfcmVjb3JkcyAtIHQwLndhbF9yZWNvcmRzID4g MCBBUyBpV1IsCisgICAgICAgICAgIHQxLndhbF9mcGkgLSB0MC53YWxfZnBpID4gMCBBUyBp RlBJLAorICAgICAgICAgICB0MS53YWxfYnl0ZXMgLSB0MC53YWxfYnl0ZXMgPiAwIEFTIGlX QgorICAgIEZST00gdmFjdXVtX3dhbF9zdGF0c190YWJsZSB0MCwgcGdfc3RhdHNfdmFjdXVt X3RhYmxlcyB0MQorICAgIFdIRVJFIHQwLnJlbGlkID0gdDEucmVsaWQ7CisKK2R3cnxkZnBp fGR3YgorLS0tKy0tLS0rLS0tCit0ICB8ZiAgIHx0ICAKKygxIHJvdykKKworaXdyfGlmcGl8 aXdiCistLS0rLS0tLSstLS0KK3QgIHxmICAgfHQgIAorKDEgcm93KQorCitzdGVwIHMxX3Nh dmVfd2FsbHM6IAorICAgIFVQREFURSB2YWN1dW1fd2FsX3N0YXRzX3RhYmxlIFNFVAorICAg IHdhbF9yZWNvcmRzID0gZFdSLCB3YWxfZnBpID0gZEZQSSwgd2FsX2J5dGVzID0gZFdCCisg ICAgRlJPTSAoU0VMRUNUIHJlbGlkLCB3YWxfcmVjb3JkcyBBUyBkV1IsIHdhbF9mcGkgQVMg ZEZQSSwgd2FsX2J5dGVzIEFTIGRXQgorICAgIEZST00gcGdfc3RhdHNfdmFjdXVtX3RhYmxl cyB2dCwgcGdfY2xhc3MgYworICAgIFdIRVJFIHZ0LnJlbG5hbWUgPSAndmVzdGF0JyBBTkQK KyAgICAgICAgICB2dC5yZWxpZCA9IGMub2lkKSB0CisgICAgV0hFUkUKKyAgICAgICAgICB0 LnJlbGlkID0gdC5yZWxpZDsKKworICAgVVBEQVRFIHZhY3V1bV93YWxfc3RhdHNfaW5kZXgg U0VUCisgICAgd2FsX3JlY29yZHMgPSBpV1IsIHdhbF9mcGkgPSBpRlBJLCB3YWxfYnl0ZXMg PSBpV0IKKyAgICBGUk9NIChTRUxFQ1QgcmVsaWQsIHdhbF9yZWNvcmRzIEFTIGlXUiwgd2Fs X2ZwaSBBUyBpRlBJLCB3YWxfYnl0ZXMgQVMgaVdCCisgICAgRlJPTSBwZ19zdGF0c192YWN1 dW1faW5kZXhlcyB2dCwgcGdfY2xhc3MgYworICAgIFdIRVJFIHZ0LnJlbG5hbWUgPSAndmVz dGF0X3BrZXknIEFORAorICAgICAgICAgIHZ0LnJlbGlkID0gYy5vaWQpIHQKKyAgICBXSEVS RQorICAgICAgICAgIHQucmVsaWQgPSB0LnJlbGlkOworCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9pc29sYXRpb24vZXhwZWN0ZWQvdmFjdXVtLWV4dGVuZGluZy5vdXQgYi9zcmMvdGVzdC9p c29sYXRpb24vZXhwZWN0ZWQvdmFjdXVtLWV4dGVuZGluZy5vdXQKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjY1MTZkMzFiZTYwCi0tLSAvZGV2L251bGwKKysr IGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3ZhY3V1bS1leHRlbmRpbmcub3V0CkBA IC0wLDAgKzEsNjggQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCAyIHNlc3Npb25zCisKK3N0 YXJ0aW5nIHBlcm11dGF0aW9uOiBzMl9pbnNlcnQgczJfcHJpbnRfdmFjdXVtX3N0YXRzX3Rh YmxlIHMxX2JlZ2luX3JlcGVhdGFibGVfcmVhZCBzMl91cGRhdGUgczJfaW5zZXJ0X2ludGVy cnVwdCBzMl92YWN1dW0gczJfcHJpbnRfdmFjdXVtX3N0YXRzX3RhYmxlIHMxX2NvbW1pdCBz Ml9jaGVja3BvaW50IHMyX3ZhY3V1bSBzMl9wcmludF92YWN1dW1fc3RhdHNfdGFibGUKK3N0 ZXAgczJfaW5zZXJ0OiBJTlNFUlQgSU5UTyB0ZXN0X3ZhY3V1bV9zdGF0X2lzb2xhdGlvbihp ZCwgaXZhbCkgU0VMRUNUIGl2YWwsIGl2YWwlMTAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwx MDAwKSBBcyBpdmFsOworc3RlcCBzMl9wcmludF92YWN1dW1fc3RhdHNfdGFibGU6IAorICAg IFNFTEVDVAorICAgIHZ0LnJlbG5hbWUsIHZ0LnR1cGxlc19kZWxldGVkLCB2dC5kZWFkX3R1 cGxlcywgdnQudHVwbGVzX2Zyb3plbgorICAgIEZST00gcGdfc3RhdHNfdmFjdXVtX3RhYmxl cyB2dCwgcGdfY2xhc3MgYworICAgIFdIRVJFIHZ0LnJlbG5hbWUgPSAndGVzdF92YWN1dW1f c3RhdF9pc29sYXRpb24nIEFORCB2dC5yZWxpZCA9IGMub2lkOworCityZWxuYW1lfHR1cGxl c19kZWxldGVkfGRlYWRfdHVwbGVzfHR1cGxlc19mcm96ZW4KKy0tLS0tLS0rLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorKDAgcm93cykKKworc3RlcCBzMV9i ZWdpbl9yZXBlYXRhYmxlX3JlYWQ6IAorICBCRUdJTiB0cmFuc2FjdGlvbiBJU09MQVRJT04g TEVWRUwgUkVQRUFUQUJMRSBSRUFEOworICBzZWxlY3QgY291bnQoaXZhbCkgZnJvbSB0ZXN0 X3ZhY3V1bV9zdGF0X2lzb2xhdGlvbiB3aGVyZSBpZD45MDA7CisKK2NvdW50CistLS0tLQor ICAxMDAKKygxIHJvdykKKworc3RlcCBzMl91cGRhdGU6IFVQREFURSB0ZXN0X3ZhY3V1bV9z dGF0X2lzb2xhdGlvbiBTRVQgaXZhbCA9IGl2YWwgKyAyIHdoZXJlIGlkID4gOTAwOworc3Rl cCBzMl9pbnNlcnRfaW50ZXJydXB0OiBJTlNFUlQgSU5UTyB0ZXN0X3ZhY3V1bV9zdGF0X2lz b2xhdGlvbiB2YWx1ZXMgKDEsMSk7CitzdGVwIHMyX3ZhY3V1bTogVkFDVVVNIHRlc3RfdmFj dXVtX3N0YXRfaXNvbGF0aW9uOworc3RlcCBzMl9wcmludF92YWN1dW1fc3RhdHNfdGFibGU6 IAorICAgIFNFTEVDVAorICAgIHZ0LnJlbG5hbWUsIHZ0LnR1cGxlc19kZWxldGVkLCB2dC5k ZWFkX3R1cGxlcywgdnQudHVwbGVzX2Zyb3plbgorICAgIEZST00gcGdfc3RhdHNfdmFjdXVt X3RhYmxlcyB2dCwgcGdfY2xhc3MgYworICAgIFdIRVJFIHZ0LnJlbG5hbWUgPSAndGVzdF92 YWN1dW1fc3RhdF9pc29sYXRpb24nIEFORCB2dC5yZWxpZCA9IGMub2lkOworCityZWxuYW1l ICAgICAgICAgICAgICAgICAgIHx0dXBsZXNfZGVsZXRlZHxkZWFkX3R1cGxlc3x0dXBsZXNf ZnJvemVuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tCit0ZXN0X3ZhY3V1bV9zdGF0X2lzb2xhdGlvbnwgICAg ICAgICAgICAgMHwgICAgICAgIDEwMHwgICAgICAgICAgICAwCisoMSByb3cpCisKK3N0ZXAg czFfY29tbWl0OiBDT01NSVQ7CitzdGVwIHMyX2NoZWNrcG9pbnQ6IENIRUNLUE9JTlQ7Citz dGVwIHMyX3ZhY3V1bTogVkFDVVVNIHRlc3RfdmFjdXVtX3N0YXRfaXNvbGF0aW9uOworc3Rl cCBzMl9wcmludF92YWN1dW1fc3RhdHNfdGFibGU6IAorICAgIFNFTEVDVAorICAgIHZ0LnJl bG5hbWUsIHZ0LnR1cGxlc19kZWxldGVkLCB2dC5kZWFkX3R1cGxlcywgdnQudHVwbGVzX2Zy b3plbgorICAgIEZST00gcGdfc3RhdHNfdmFjdXVtX3RhYmxlcyB2dCwgcGdfY2xhc3MgYwor ICAgIFdIRVJFIHZ0LnJlbG5hbWUgPSAndGVzdF92YWN1dW1fc3RhdF9pc29sYXRpb24nIEFO RCB2dC5yZWxpZCA9IGMub2lkOworCityZWxuYW1lICAgICAgICAgICAgICAgICAgIHx0dXBs ZXNfZGVsZXRlZHxkZWFkX3R1cGxlc3x0dXBsZXNfZnJvemVuCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCit0 ZXN0X3ZhY3V1bV9zdGF0X2lzb2xhdGlvbnwgICAgICAgICAgIDEwMHwgICAgICAgIDEwMHwg ICAgICAgICAgMTAxCisoMSByb3cpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyX2lu c2VydCBzMl9kZWxldGUgczJfY2hlY2twb2ludCBzMl92YWN1dW0gczJfcHJpbnRfdmFjdXVt X3N0YXRzX3RhYmxlCitzdGVwIHMyX2luc2VydDogSU5TRVJUIElOVE8gdGVzdF92YWN1dW1f c3RhdF9pc29sYXRpb24oaWQsIGl2YWwpIFNFTEVDVCBpdmFsLCBpdmFsJTEwIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsMTAwMCkgQXMgaXZhbDsKK3N0ZXAgczJfZGVsZXRlOiBERUxFVEUg RlJPTSB0ZXN0X3ZhY3V1bV9zdGF0X2lzb2xhdGlvbiB3aGVyZSBpZCA+IDkwMDsKK3N0ZXAg czJfY2hlY2twb2ludDogQ0hFQ0tQT0lOVDsKK3N0ZXAgczJfdmFjdXVtOiBWQUNVVU0gdGVz dF92YWN1dW1fc3RhdF9pc29sYXRpb247CitzdGVwIHMyX3ByaW50X3ZhY3V1bV9zdGF0c190 YWJsZTogCisgICAgU0VMRUNUCisgICAgdnQucmVsbmFtZSwgdnQudHVwbGVzX2RlbGV0ZWQs IHZ0LmRlYWRfdHVwbGVzLCB2dC50dXBsZXNfZnJvemVuCisgICAgRlJPTSBwZ19zdGF0c192 YWN1dW1fdGFibGVzIHZ0LCBwZ19jbGFzcyBjCisgICAgV0hFUkUgdnQucmVsbmFtZSA9ICd0 ZXN0X3ZhY3V1bV9zdGF0X2lzb2xhdGlvbicgQU5EIHZ0LnJlbGlkID0gYy5vaWQ7CisKK3Jl bG5hbWUgICAgICAgICAgICAgICAgICAgfHR1cGxlc19kZWxldGVkfGRlYWRfdHVwbGVzfHR1 cGxlc19mcm96ZW4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KK3Rlc3RfdmFjdXVtX3N0YXRfaXNvbGF0aW9u fCAgICAgICAgICAgMTAwfCAgICAgICAgICAwfCAgICAgICAgICAyMjIKKygxIHJvdykKKwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZSBiL3Ny Yy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKaW5kZXggMDM0MmViMzllNDAu LjEzZTkyYmZjMjIwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9u X3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUK QEAgLTkyLDYgKzkyLDggQEAgdGVzdDogdGltZW91dHMKIHRlc3Q6IHZhY3V1bS1jb25jdXJy ZW50LWRyb3AKIHRlc3Q6IHZhY3V1bS1jb25mbGljdAogdGVzdDogdmFjdXVtLXNraXAtbG9j a2VkCit0ZXN0OiB2YWN1dW0tZXh0ZW5kaW5nCit0ZXN0OiB2YWN1dW0tZXh0ZW5kZWQtc3Rh dGlzdGljCiB0ZXN0OiBzdGF0cwogdGVzdDogaG9yaXpvbnMKIHRlc3Q6IHByZWRpY2F0ZS1o YXNoCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvdmFjdXVtLWV4dGVu ZGVkLXN0YXRpc3RpYy5zcGVjIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3ZhY3V1bS1l eHRlbmRlZC1zdGF0aXN0aWMuc3BlYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uZjc0OWJlOGIwMjAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9pc29s YXRpb24vc3BlY3MvdmFjdXVtLWV4dGVuZGVkLXN0YXRpc3RpYy5zcGVjCkBAIC0wLDAgKzEs MTc5IEBACisjIEEgbnVtYmVyIG9mIHRlc3RzIGRlZGljYXRlZCB0byB2ZXJpZmljYXRpb24g b2YgdGhlICdFeHRlbmRlZCBWYWN1dW0gU3RhdGlzdGljcycKKyMgZmVhdHVyZS4KKyMgQnkg ZGVmYXVsdCwgc3RhdGlzdGljcyBoYXMgYSB2b2xhdGlsZSBuYXR1cmUuIFNvLCBzZWxlY3Rp b24gcmVzdWx0IGNhbiBkZXBlbmQKKyMgb24gYSBidW5jaCBvZiB0aGluZ3MuIEhlcmUgc29t ZSB0cml2aWFsIHRlc3RzIGFyZSBwZXJmb3JtZWQgdGhhdCBzaG91bGQgd29yaworIyBpbiB0 aGUgbW9zdCBjYXNlcy4KKyMgVGVzdCBmb3IgY2hlY2tpbmcgcGFnZXM6IGZyb3plbiwgc2Nh bm5lZCwgcmVtb3ZlZCwgbnVtYmVyIG9mIHR1cGxlX2RlbGV0ZWQgaW4gcGdwcm9fc3RhdHNf dmFjdXVtX3RhYmxlcy4KKyMgQmVzaWRlcywgdGhpcyB0ZXN0IGNoZWNrIHBhZ2VzIHNjYW5u ZWQsIHBhZ2VzIHJlbW92ZWQsIHR1cGxlc19kZWxldGVkIGluIHBncHJvX3N0YXRzX3ZhY3V1 bV90YWJsZXMgYW5kCisjIHdhbCB2YWx1ZXMgc3RhdGlzdGljIGNvbGxlY3RlZCBvdmVyIHZh Y3V1bSBvcGVyYXRpb24gYXMgZm9yIHRhYmxlcyBhcyBmb3IgaW5kZXhlcy4KKworc2V0dXAK K3sKKyAgICBDUkVBVEUgVEFCTEUgdmVzdGF0ICh4IGludCBwcmltYXJ5IGtleSkgV0lUSCAo YXV0b3ZhY3V1bV9lbmFibGVkID0gb2ZmKTsKKworICAgIENSRUFURSBUQUJMRSB2YWN1dW1f d2FsX3N0YXRzX3RhYmxlCisgICAgKHJlbGlkIGludCwgd2FsX3JlY29yZHMgaW50LCB3YWxf ZnBpIGludCwgd2FsX2J5dGVzIGludCk7CisgICAgaW5zZXJ0IGludG8gdmFjdXVtX3dhbF9z dGF0c190YWJsZSAocmVsaWQpCisgICAgc2VsZWN0IG9pZCBmcm9tIHBnX2NsYXNzIGMKKyAg ICBXSEVSRSByZWxuYW1lID0gJ3Zlc3RhdCc7CisgICAgVVBEQVRFIHZhY3V1bV93YWxfc3Rh dHNfdGFibGUgU0VUCisgICAgd2FsX3JlY29yZHMgPSAwLCB3YWxfZnBpID0gMCwgd2FsX2J5 dGVzID0gMDsKKworICAgIENSRUFURSBUQUJMRSB2YWN1dW1fd2FsX3N0YXRzX2luZGV4Cisg ICAgKHJlbGlkIGludCwgd2FsX3JlY29yZHMgaW50LCB3YWxfZnBpIGludCwgd2FsX2J5dGVz IGludCk7CisgICAgaW5zZXJ0IGludG8gdmFjdXVtX3dhbF9zdGF0c19pbmRleCAocmVsaWQp CisgICAgc2VsZWN0IG9pZCBmcm9tIHBnX2NsYXNzIGMKKyAgICBXSEVSRSByZWxuYW1lID0g J3Zlc3RhdF9wa2V5JzsKKyAgICBVUERBVEUgdmFjdXVtX3dhbF9zdGF0c19pbmRleCBTRVQK KyAgICB3YWxfcmVjb3JkcyA9IDAsIHdhbF9mcGkgPSAwLCB3YWxfYnl0ZXMgPSAwOworCisg ICAgU0VUIHRyYWNrX2lvX3RpbWluZyA9IG9uOworICAgIFNIT1cgdHJhY2tfY291bnRzOyAg LS0gbXVzdCBiZSBvbgorICAgIFNFVCB0cmFja19mdW5jdGlvbnMgVE8gJ2FsbCc7CisKK30K KwordGVhcmRvd24KK3sKKyAgICBSRVNFVCB2YWN1dW1fZnJlZXplX21pbl9hZ2U7CisgICAg UkVTRVQgdmFjdXVtX2ZyZWV6ZV90YWJsZV9hZ2U7CisgICAgRFJPUCBUQUJMRSB2ZXN0YXQg Q0FTQ0FERTsKKyAgICBEUk9QIFRBQkxFIHZhY3V1bV93YWxfc3RhdHNfaW5kZXg7CisgICAg RFJPUCBUQUJMRSB2YWN1dW1fd2FsX3N0YXRzX3RhYmxlOworfQorCitzZXNzaW9uIHMxCitz dGVwIHMxX3NldF9hZ3Jlc3NpdmVfdmFjdXVtICAgIHsgU0VUIHZhY3V1bV9mcmVlemVfbWlu X2FnZSA9IDA7IH0KK3N0ZXAgczFfaW5zZXJ0ICAgICAgICAgICAgICAgICAgeyBJTlNFUlQg SU5UTyB2ZXN0YXQoeCkgU0VMRUNUIGlkIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsNzcwKSBB cyBpZDsgfQorc3RlcCBzMV91cGRhdGUgICAgICAgICAgICAgICAgICB7IFVQREFURSB2ZXN0 YXQgU0VUIHggPSB4KzE7IH0KK3N0ZXAgczFfZGVsZXRlX2hhbGZfdGFibGUgICAgICAgeyBE RUxFVEUgRlJPTSB2ZXN0YXQgV0hFUkUgeCAlIDIgPSAwOyB9CitzdGVwIHMxX2RlbGV0ZV9m dWxsX3RhYmxlICAgICAgIHsgREVMRVRFIEZST00gdmVzdGF0OyB9CitzdGVwIHMxX3ZhY3V1 bSAgICAgICAgICAgICAgICAgIHsgVkFDVVVNIHZlc3RhdDsgfQorc3RlcCBzMV92YWN1dW1f ZnVsbCAgICAgICAgICAgICB7IFZBQ1VVTSBGVUxMIHZlc3RhdDsgfQorc3RlcCBzMV92YWN1 dW1fcGFyYWxsZWwgICAgICAgICB7IFZBQ1VVTSAoUEFSQUxMRUwgMiwgSU5ERVhfQ0xFQU5V UCBPTikgdmVzdGF0OyB9CitzdGVwIHMxX2FuYWx5emUgICAgICAgICAgICAgICAgIHsgQU5B TFlaRSB2ZXN0YXQ7IH0KK3N0ZXAgczFfdHJhbmNhdGUgICAgICAgICAgICAgICAgeyBUUlVO Q0FURSB2ZXN0YXQ7IH0KK3N0ZXAgczFfY2hlY2twb2ludCAgICAgICAgICAgICAgeyBDSEVD S1BPSU5UOyB9CitzdGVwIHMxX3ByaW50X3ZhY3V1bV9zdGF0c190YWJsZXMKK3sKKyAgICBT RUxFQ1QgdnQucmVsbmFtZSwKKyAgICAgICAgICAgcGFnZXNfZnJvemVuLAorICAgICAgICAg ICB0dXBsZXNfZGVsZXRlZCwKKyAgICAgICAgICAgcGFnZXNfc2Nhbm5lZCwKKyAgICAgICAg ICAgcGFnZXNfcmVtb3ZlZAorICAgIEZST00gcGdfc3RhdHNfdmFjdXVtX3RhYmxlcyB2dCwg cGdfY2xhc3MgYworICAgIFdIRVJFIHZ0LnJlbG5hbWUgPSAndmVzdGF0JyBBTkQKKyAgICAg ICAgICB2dC5yZWxpZCA9IGMub2lkOworfQorCitzdGVwIHMxX3ByaW50X3ZhY3V1bV9zdGF0 c19pbmRleGVzCit7CisgICAgU0VMRUNUIHZ0LnJlbG5hbWUsCisgICAgICAgICAgIHBhZ2Vz X2RlbGV0ZWQsCisgICAgICAgICAgIHR1cGxlc19kZWxldGVkCisgICAgRlJPTSBwZ19zdGF0 c192YWN1dW1faW5kZXhlcyB2dCwgcGdfY2xhc3MgYworICAgIFdIRVJFIHZ0LnJlbG5hbWUg PSAndmVzdGF0X3BrZXknIEFORAorICAgICAgICAgIHZ0LnJlbGlkID0gYy5vaWQ7Cit9CisK K3N0ZXAgczFfc2F2ZV93YWxscworeworICAgIFVQREFURSB2YWN1dW1fd2FsX3N0YXRzX3Rh YmxlIFNFVAorICAgIHdhbF9yZWNvcmRzID0gZFdSLCB3YWxfZnBpID0gZEZQSSwgd2FsX2J5 dGVzID0gZFdCCisgICAgRlJPTSAoU0VMRUNUIHJlbGlkLCB3YWxfcmVjb3JkcyBBUyBkV1Is IHdhbF9mcGkgQVMgZEZQSSwgd2FsX2J5dGVzIEFTIGRXQgorICAgIEZST00gcGdfc3RhdHNf dmFjdXVtX3RhYmxlcyB2dCwgcGdfY2xhc3MgYworICAgIFdIRVJFIHZ0LnJlbG5hbWUgPSAn dmVzdGF0JyBBTkQKKyAgICAgICAgICB2dC5yZWxpZCA9IGMub2lkKSB0CisgICAgV0hFUkUK KyAgICAgICAgICB0LnJlbGlkID0gdC5yZWxpZDsKKworICAgVVBEQVRFIHZhY3V1bV93YWxf c3RhdHNfaW5kZXggU0VUCisgICAgd2FsX3JlY29yZHMgPSBpV1IsIHdhbF9mcGkgPSBpRlBJ LCB3YWxfYnl0ZXMgPSBpV0IKKyAgICBGUk9NIChTRUxFQ1QgcmVsaWQsIHdhbF9yZWNvcmRz IEFTIGlXUiwgd2FsX2ZwaSBBUyBpRlBJLCB3YWxfYnl0ZXMgQVMgaVdCCisgICAgRlJPTSBw Z19zdGF0c192YWN1dW1faW5kZXhlcyB2dCwgcGdfY2xhc3MgYworICAgIFdIRVJFIHZ0LnJl bG5hbWUgPSAndmVzdGF0X3BrZXknIEFORAorICAgICAgICAgIHZ0LnJlbGlkID0gYy5vaWQp IHQKKyAgICBXSEVSRQorICAgICAgICAgIHQucmVsaWQgPSB0LnJlbGlkOworfQorCitzdGVw IHMxX2RpZmZlcmVuY2UKK3sKKyAgICBTRUxFQ1QgdDEud2FsX3JlY29yZHMgLSB0MC53YWxf cmVjb3JkcyA+IDAgQVMgZFdSLAorICAgICAgICAgICB0MS53YWxfZnBpIC0gdDAud2FsX2Zw aSA+IDAgQVMgZEZQSSwKKyAgICAgICAgICAgdDEud2FsX2J5dGVzIC0gdDAud2FsX2J5dGVz ID4gMCBBUyBkV0IKKyAgICBGUk9NIHZhY3V1bV93YWxfc3RhdHNfdGFibGUgdDAsIHBnX3N0 YXRzX3ZhY3V1bV90YWJsZXMgdDEKKyAgICBXSEVSRSB0MC5yZWxpZCA9IHQxLnJlbGlkOwor CisgICAgU0VMRUNUIHQxLndhbF9yZWNvcmRzIC0gdDAud2FsX3JlY29yZHMgPiAwIEFTIGlX UiwKKyAgICAgICAgICAgdDEud2FsX2ZwaSAtIHQwLndhbF9mcGkgPiAwIEFTIGlGUEksCisg ICAgICAgICAgIHQxLndhbF9ieXRlcyAtIHQwLndhbF9ieXRlcyA+IDAgQVMgaVdCCisgICAg RlJPTSB2YWN1dW1fd2FsX3N0YXRzX3RhYmxlIHQwLCBwZ19zdGF0c192YWN1dW1fdGFibGVz IHQxCisgICAgV0hFUkUgdDAucmVsaWQgPSB0MS5yZWxpZDsKK30KKworcGVybXV0YXRpb24K KyAgICBzMV9pbnNlcnQKKyAgICBzMV9wcmludF92YWN1dW1fc3RhdHNfdGFibGVzCisgICAg czFfcHJpbnRfdmFjdXVtX3N0YXRzX2luZGV4ZXMKKyAgICBzMV9zZXRfYWdyZXNzaXZlX3Zh Y3V1bQorICAgIHMxX2FuYWx5emUKKyAgICBzMV9kZWxldGVfaGFsZl90YWJsZQorICAgIHMx X3ByaW50X3ZhY3V1bV9zdGF0c190YWJsZXMKKyAgICBzMV9wcmludF92YWN1dW1fc3RhdHNf aW5kZXhlcworICAgIHMxX2NoZWNrcG9pbnQKKyAgICBzMV92YWN1dW0KKyAgICBzMV9wcmlu dF92YWN1dW1fc3RhdHNfdGFibGVzCisgICAgczFfcHJpbnRfdmFjdXVtX3N0YXRzX2luZGV4 ZXMKKyAgICBzMV9kZWxldGVfZnVsbF90YWJsZQorICAgIHMxX2NoZWNrcG9pbnQKKyAgICBz MV92YWN1dW1fcGFyYWxsZWwKKyAgICBzMV9wcmludF92YWN1dW1fc3RhdHNfdGFibGVzCisg ICAgczFfcHJpbnRfdmFjdXVtX3N0YXRzX2luZGV4ZXMKKyAgICBzMV9pbnNlcnQKKyAgICBz MV91cGRhdGUKKyAgICBzMV9jaGVja3BvaW50CisgICAgczFfdmFjdXVtX2Z1bGwKKyAgICBz MV9wcmludF92YWN1dW1fc3RhdHNfdGFibGVzCisgICAgczFfcHJpbnRfdmFjdXVtX3N0YXRz X2luZGV4ZXMKKyAgICBzMV9jaGVja3BvaW50CisgICAgczFfZGVsZXRlX2Z1bGxfdGFibGUK KyAgICBzMV90cmFuY2F0ZQorICAgIHMxX2NoZWNrcG9pbnQKKyAgICBzMV92YWN1dW0KKyAg ICBzMV9wcmludF92YWN1dW1fc3RhdHNfdGFibGVzCisgICAgczFfcHJpbnRfdmFjdXVtX3N0 YXRzX2luZGV4ZXMKKworcGVybXV0YXRpb24KKyAgICBzMV9pbnNlcnQKKyAgICBzMV9zZXRf YWdyZXNzaXZlX3ZhY3V1bQorICAgIHMxX2FuYWx5emUKKyAgICBzMV9kZWxldGVfaGFsZl90 YWJsZQorICAgIHMxX2NoZWNrcG9pbnQKKyAgICBzMV9kaWZmZXJlbmNlCisgICAgczFfc2F2 ZV93YWxscworICAgIHMxX2NoZWNrcG9pbnQKKyAgICBzMV92YWN1dW0KKyAgICBzMV9jaGVj a3BvaW50CisgICAgczFfZGlmZmVyZW5jZQorICAgIHMxX3NhdmVfd2FsbHMKKyAgICBzMV9k ZWxldGVfZnVsbF90YWJsZQorICAgIHMxX2NoZWNrcG9pbnQKKyAgICBzMV92YWN1dW1fcGFy YWxsZWwKKyAgICBzMV9jaGVja3BvaW50CisgICAgczFfZGlmZmVyZW5jZQorICAgIHMxX3Nh dmVfd2FsbHMKKyAgICBzMV9pbnNlcnQKKyAgICBzMV91cGRhdGUKKyAgICBzMV9jaGVja3Bv aW50CisgICAgczFfdmFjdXVtX2Z1bGwKKyAgICBzMV9jaGVja3BvaW50CisgICAgczFfZGlm ZmVyZW5jZQorICAgIHMxX3NhdmVfd2FsbHMKKyAgICBzMV9jaGVja3BvaW50CisgICAgczFf ZGVsZXRlX2Z1bGxfdGFibGUKKyAgICBzMV90cmFuY2F0ZQorICAgIHMxX3ZhY3V1bQorICAg IHMxX2NoZWNrcG9pbnQKKyAgICBzMV9kaWZmZXJlbmNlCisgICAgczFfc2F2ZV93YWxscwpc IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xh dGlvbi9zcGVjcy92YWN1dW0tZXh0ZW5kaW5nLnNwZWMgYi9zcmMvdGVzdC9pc29sYXRpb24v c3BlY3MvdmFjdXVtLWV4dGVuZGluZy5zcGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi45YjRkYWM2OGEzYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0 L2lzb2xhdGlvbi9zcGVjcy92YWN1dW0tZXh0ZW5kaW5nLnNwZWMKQEAgLTAsMCArMSw1OCBA QAorIyBUZXN0IGZvciBjaGVja2luZyBkZWFkX3R1cGxlcywgdHVwbGVzX2RlbGV0ZWQgYW5k IGZyb3plbiB0dXBsZXMgaW4gcGdfc3RhdHNfdmFjdXVtX3RhYmxlcy4KKyMgRGVhZF90dXBs ZXMgdmFsdWVzIGFyZSBjb3VudGVkIHdoZW4gdmFjdXVtIGNhbm5vdCBjbGVhbiB1cCB1bnVz ZWQgdHVwbGVzIHdoaWxlIGxvY2sgaXMgdXNpbmcgYW5vdGhlciB0cmFuc2FjdGlvbi4KKyMg RGVhZF90dXBsZXMgYXJlbid0IGluY3JlYXNlZCBhZnRlciByZWxlYXNpbmcgbG9jayBjb21w YXJlZCB3aXRoIHR1cGxlc19kZWxldGVkLCB3aGljaCBpbmNyZWFzZWQKKyMgYnkgdGhlIHZh bHVlIG9mIHRoZSBjbGVhcmVkIHR1cGxlcyB0aGF0IHRoZSB2YWN1dW0gbWFuYWdlZCB0byBj bGVhci4KKworc2V0dXAKK3sKKyAgICBDUkVBVEUgVEFCTEUgdGVzdF92YWN1dW1fc3RhdF9p c29sYXRpb24oaWQgaW50LCBpdmFsIGludCkgV0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVkID0g b2ZmKTsKKyAgICBTRVQgdHJhY2tfaW9fdGltaW5nID0gb247Cit9CisKK3RlYXJkb3duCit7 CisgICAgRFJPUCBUQUJMRSB0ZXN0X3ZhY3V1bV9zdGF0X2lzb2xhdGlvbiBDQVNDQURFOwor ICAgIFJFU0VUIHRyYWNrX2lvX3RpbWluZzsKK30KKworc2Vzc2lvbiBzMQorc3RlcCBzMV9i ZWdpbl9yZXBlYXRhYmxlX3JlYWQgICB7CisgIEJFR0lOIHRyYW5zYWN0aW9uIElTT0xBVElP TiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CisgIHNlbGVjdCBjb3VudChpdmFsKSBmcm9tIHRl c3RfdmFjdXVtX3N0YXRfaXNvbGF0aW9uIHdoZXJlIGlkPjkwMDsKKyAgfQorc3RlcCBzMV9j b21taXQgICAgICAgICAgICAgICAgICB7IENPTU1JVDsgfQorCitzZXNzaW9uIHMyCitzdGVw IHMyX2luc2VydCAgICAgICAgICAgICAgICAgIHsgSU5TRVJUIElOVE8gdGVzdF92YWN1dW1f c3RhdF9pc29sYXRpb24oaWQsIGl2YWwpIFNFTEVDVCBpdmFsLCBpdmFsJTEwIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsMTAwMCkgQXMgaXZhbDsgfQorc3RlcCBzMl91cGRhdGUgICAgICAg ICAgICAgICAgICB7IFVQREFURSB0ZXN0X3ZhY3V1bV9zdGF0X2lzb2xhdGlvbiBTRVQgaXZh bCA9IGl2YWwgKyAyIHdoZXJlIGlkID4gOTAwOyB9CitzdGVwIHMyX2RlbGV0ZSAgICAgICAg ICAgICAgICAgIHsgREVMRVRFIEZST00gdGVzdF92YWN1dW1fc3RhdF9pc29sYXRpb24gd2hl cmUgaWQgPiA5MDA7IH0KK3N0ZXAgczJfaW5zZXJ0X2ludGVycnVwdCAgICAgICAgeyBJTlNF UlQgSU5UTyB0ZXN0X3ZhY3V1bV9zdGF0X2lzb2xhdGlvbiB2YWx1ZXMgKDEsMSk7IH0KK3N0 ZXAgczJfdmFjdXVtICAgICAgICAgICAgICAgICAgeyBWQUNVVU0gdGVzdF92YWN1dW1fc3Rh dF9pc29sYXRpb247IH0KK3N0ZXAgczJfY2hlY2twb2ludCAgICAgICAgICAgICAgeyBDSEVD S1BPSU5UOyB9CitzdGVwIHMyX3ByaW50X3ZhY3V1bV9zdGF0c190YWJsZQoreworICAgIFNF TEVDVAorICAgIHZ0LnJlbG5hbWUsIHZ0LnR1cGxlc19kZWxldGVkLCB2dC5kZWFkX3R1cGxl cywgdnQudHVwbGVzX2Zyb3plbgorICAgIEZST00gcGdfc3RhdHNfdmFjdXVtX3RhYmxlcyB2 dCwgcGdfY2xhc3MgYworICAgIFdIRVJFIHZ0LnJlbG5hbWUgPSAndGVzdF92YWN1dW1fc3Rh dF9pc29sYXRpb24nIEFORCB2dC5yZWxpZCA9IGMub2lkOworfQorCitwZXJtdXRhdGlvbgor ICAgIHMyX2luc2VydAorICAgIHMyX3ByaW50X3ZhY3V1bV9zdGF0c190YWJsZQorICAgIHMx X2JlZ2luX3JlcGVhdGFibGVfcmVhZAorICAgIHMyX3VwZGF0ZQorICAgIHMyX2luc2VydF9p bnRlcnJ1cHQKKyAgICBzMl92YWN1dW0KKyAgICBzMl9wcmludF92YWN1dW1fc3RhdHNfdGFi bGUKKyAgICBzMV9jb21taXQKKyAgICBzMl9jaGVja3BvaW50CisgICAgczJfdmFjdXVtCisg ICAgczJfcHJpbnRfdmFjdXVtX3N0YXRzX3RhYmxlCisKK3Blcm11dGF0aW9uCisgICAgczJf aW5zZXJ0CisgICAgczJfZGVsZXRlCisgICAgczJfY2hlY2twb2ludAorICAgIHMyX3ZhY3V1 bQorICAgIHMyX3ByaW50X3ZhY3V1bV9zdGF0c190YWJsZQpcIE5vIG5ld2xpbmUgYXQgZW5k IG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nh bml0eS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0Cmlu ZGV4IDlkMDQ3YjIxYjg4Li44YmE1OGY0OWY0YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL29wcl9zYW5pdHkub3V0CkBAIC0zMiw5ICszMiwxMiBAQCBXSEVSRSBwMS5wcm9s YW5nID0gMCBPUiBwMS5wcm9yZXR0eXBlID0gMCBPUgogICAgICAgIHByb2tpbmQgTk9UIElO ICgnZicsICdhJywgJ3cnLCAncCcpIE9SCiAgICAgICAgcHJvdm9sYXRpbGUgTk9UIElOICgn aScsICdzJywgJ3YnKSBPUgogICAgICAgIHByb3BhcmFsbGVsIE5PVCBJTiAoJ3MnLCAncics ICd1Jyk7Ci0gb2lkIHwgcHJvbmFtZSAKLS0tLS0tKy0tLS0tLS0tLQotKDAgcm93cykKKyBv aWQgIHwgICAgICAgICBwcm9uYW1lICAgICAgICAgIAorLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgNDcwMSB8IHBnX3N0YXRzX3ZhY3V1bV90YWJsZXMKKyA0NzAyIHwg cGdfc3RhdHNfdmFjdXVtX2luZGV4ZXMKKyA0NzAzIHwgcGdfc3RhdHNfdmFjdXVtX2RhdGFi YXNlCisoMyByb3dzKQogCiAtLSBwcm9zcmMgc2hvdWxkIG5ldmVyIGJlIG51bGw7IGl0IGNh biBiZSBlbXB0eSBvbmx5IGlmIHByb3NxbGJvZHkgaXNuJ3QgbnVsbAogU0VMRUNUIHAxLm9p ZCwgcDEucHJvbmFtZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9y dWxlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRleCBl ZjY1OGFkNzQwNS4uNTZhNzZmNDU2OTMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcnVsZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVs ZXMub3V0CkBAIC0yNjA2LDYgKzI2MDYsODUgQEAgcGdfc3RhdHNfZXh0X2V4cHJzfCBTRUxF Q1QgY24ubnNwbmFtZSBBUyBzY2hlbWFuYW1lLAogICAgICBKT0lOIExBVEVSQUwgKCBTRUxF Q1QgdW5uZXN0KHBnX2dldF9zdGF0aXN0aWNzb2JqZGVmX2V4cHJlc3Npb25zKHMub2lkKSkg QVMgZXhwciwKICAgICAgICAgICAgIHVubmVzdChzZC5zdHhkZXhwcikgQVMgYSkgc3RhdCBP TiAoKHN0YXQuZXhwciBJUyBOT1QgTlVMTCkpKQogICBXSEVSRSAocGdfaGFzX3JvbGUoYy5y ZWxvd25lciwgJ1VTQUdFJzo6dGV4dCkgQU5EICgoYy5yZWxyb3dzZWN1cml0eSA9IGZhbHNl KSBPUiAoTk9UIHJvd19zZWN1cml0eV9hY3RpdmUoYy5vaWQpKSkpOworcGdfc3RhdHNfdmFj dXVtX2RhdGFiYXNlfCBTRUxFQ1QgZGIub2lkIEFTIGRib2lkLAorICAgIHN0YXRzLmRiX2Js a3NfcmVhZCwKKyAgICBzdGF0cy5kYl9ibGtzX2hpdCwKKyAgICBzdGF0cy50b3RhbF9ibGtz X2RpcnRpZWQsCisgICAgc3RhdHMudG90YWxfYmxrc193cml0dGVuLAorICAgIHN0YXRzLndh bF9yZWNvcmRzLAorICAgIHN0YXRzLndhbF9mcGksCisgICAgc3RhdHMud2FsX2J5dGVzLAor ICAgIHN0YXRzLmJsa19yZWFkX3RpbWUsCisgICAgc3RhdHMuYmxrX3dyaXRlX3RpbWUsCisg ICAgc3RhdHMuZGVsYXlfdGltZSwKKyAgICBzdGF0cy5zeXN0ZW1fdGltZSwKKyAgICBzdGF0 cy51c2VyX3RpbWUsCisgICAgc3RhdHMudG90YWxfdGltZSwKKyAgICBzdGF0cy5pbnRlcnJ1 cHRzCisgICBGUk9NIHBnX2RhdGFiYXNlIGRiLAorICAgIHBnX25hbWVzcGFjZSBucywKKyAg ICBMQVRFUkFMIHBnX3N0YXRzX3ZhY3V1bV9kYXRhYmFzZShkYi5vaWQpIHN0YXRzKGRib2lk LCBkYl9ibGtzX3JlYWQsIGRiX2Jsa3NfaGl0LCB0b3RhbF9ibGtzX2RpcnRpZWQsIHRvdGFs X2Jsa3Nfd3JpdHRlbiwgd2FsX3JlY29yZHMsIHdhbF9mcGksIHdhbF9ieXRlcywgYmxrX3Jl YWRfdGltZSwgYmxrX3dyaXRlX3RpbWUsIGRlbGF5X3RpbWUsIHN5c3RlbV90aW1lLCB1c2Vy X3RpbWUsIHRvdGFsX3RpbWUsIGludGVycnVwdHMpCisgIFdIRVJFIChkYi5kYXRuYW1lID0g Y3VycmVudF9kYXRhYmFzZSgpKTsKK3BnX3N0YXRzX3ZhY3V1bV9pbmRleGVzfCBTRUxFQ1Qg cmVsLm9pZCBBUyByZWxpZCwKKyAgICBucy5uc3BuYW1lIEFTIHNjaGVtYSwKKyAgICByZWwu cmVsbmFtZSwKKyAgICBzdGF0cy50b3RhbF9ibGtzX3JlYWQsCisgICAgc3RhdHMudG90YWxf Ymxrc19oaXQsCisgICAgc3RhdHMudG90YWxfYmxrc19kaXJ0aWVkLAorICAgIHN0YXRzLnRv dGFsX2Jsa3Nfd3JpdHRlbiwKKyAgICBzdGF0cy5yZWxfYmxrc19yZWFkLAorICAgIHN0YXRz LnJlbF9ibGtzX2hpdCwKKyAgICBzdGF0cy5wYWdlc19kZWxldGVkLAorICAgIHN0YXRzLnR1 cGxlc19kZWxldGVkLAorICAgIHN0YXRzLndhbF9yZWNvcmRzLAorICAgIHN0YXRzLndhbF9m cGksCisgICAgc3RhdHMud2FsX2J5dGVzLAorICAgIHN0YXRzLmJsa19yZWFkX3RpbWUsCisg ICAgc3RhdHMuYmxrX3dyaXRlX3RpbWUsCisgICAgc3RhdHMuZGVsYXlfdGltZSwKKyAgICBz dGF0cy5zeXN0ZW1fdGltZSwKKyAgICBzdGF0cy51c2VyX3RpbWUsCisgICAgc3RhdHMudG90 YWxfdGltZSwKKyAgICBzdGF0cy5pbnRlcnJ1cHRzCisgICBGUk9NIHBnX2RhdGFiYXNlIGRi LAorICAgIHBnX2NsYXNzIHJlbCwKKyAgICBwZ19uYW1lc3BhY2UgbnMsCisgICAgTEFURVJB TCBwZ19zdGF0c192YWN1dW1faW5kZXhlcyhkYi5vaWQsIHJlbC5vaWQpIHN0YXRzKHJlbGlk LCB0b3RhbF9ibGtzX3JlYWQsIHRvdGFsX2Jsa3NfaGl0LCB0b3RhbF9ibGtzX2RpcnRpZWQs IHRvdGFsX2Jsa3Nfd3JpdHRlbiwgcmVsX2Jsa3NfcmVhZCwgcmVsX2Jsa3NfaGl0LCBwYWdl c19kZWxldGVkLCB0dXBsZXNfZGVsZXRlZCwgd2FsX3JlY29yZHMsIHdhbF9mcGksIHdhbF9i eXRlcywgYmxrX3JlYWRfdGltZSwgYmxrX3dyaXRlX3RpbWUsIGRlbGF5X3RpbWUsIHN5c3Rl bV90aW1lLCB1c2VyX3RpbWUsIHRvdGFsX3RpbWUsIGludGVycnVwdHMpCisgIFdIRVJFICgo ZGIuZGF0bmFtZSA9IGN1cnJlbnRfZGF0YWJhc2UoKSkgQU5EIChyZWwub2lkID0gc3RhdHMu cmVsaWQpIEFORCAobnMub2lkID0gcmVsLnJlbG5hbWVzcGFjZSkpOworcGdfc3RhdHNfdmFj dXVtX3RhYmxlc3wgU0VMRUNUIHJlbC5vaWQgQVMgcmVsaWQsCisgICAgbnMubnNwbmFtZSBB UyBzY2hlbWEsCisgICAgcmVsLnJlbG5hbWUsCisgICAgc3RhdHMudG90YWxfYmxrc19yZWFk LAorICAgIHN0YXRzLnRvdGFsX2Jsa3NfaGl0LAorICAgIHN0YXRzLnRvdGFsX2Jsa3NfZGly dGllZCwKKyAgICBzdGF0cy50b3RhbF9ibGtzX3dyaXR0ZW4sCisgICAgc3RhdHMucmVsX2Js a3NfcmVhZCwKKyAgICBzdGF0cy5yZWxfYmxrc19oaXQsCisgICAgc3RhdHMucGFnZXNfc2Nh bm5lZCwKKyAgICBzdGF0cy5wYWdlc19yZW1vdmVkLAorICAgIHN0YXRzLnBhZ2VzX2Zyb3pl biwKKyAgICBzdGF0cy5wYWdlc19hbGxfdmlzaWJsZSwKKyAgICBzdGF0cy50dXBsZXNfZGVs ZXRlZCwKKyAgICBzdGF0cy50dXBsZXNfZnJvemVuLAorICAgIHN0YXRzLmRlYWRfdHVwbGVz LAorICAgIHN0YXRzLmluZGV4X3ZhY3V1bV9jb3VudCwKKyAgICBzdGF0cy5yZXZfYWxsX2Zy b3plbl9wYWdlcywKKyAgICBzdGF0cy5yZXZfYWxsX3Zpc2libGVfcGFnZXMsCisgICAgc3Rh dHMud2FsX3JlY29yZHMsCisgICAgc3RhdHMud2FsX2ZwaSwKKyAgICBzdGF0cy53YWxfYnl0 ZXMsCisgICAgc3RhdHMuYmxrX3JlYWRfdGltZSwKKyAgICBzdGF0cy5ibGtfd3JpdGVfdGlt ZSwKKyAgICBzdGF0cy5kZWxheV90aW1lLAorICAgIHN0YXRzLnN5c3RlbV90aW1lLAorICAg IHN0YXRzLnVzZXJfdGltZSwKKyAgICBzdGF0cy50b3RhbF90aW1lLAorICAgIHN0YXRzLmlu dGVycnVwdHMKKyAgIEZST00gcGdfZGF0YWJhc2UgZGIsCisgICAgcGdfY2xhc3MgcmVsLAor ICAgIHBnX25hbWVzcGFjZSBucywKKyAgICBMQVRFUkFMIHBnX3N0YXRzX3ZhY3V1bV90YWJs ZXMoZGIub2lkLCByZWwub2lkKSBzdGF0cyhyZWxpZCwgdG90YWxfYmxrc19yZWFkLCB0b3Rh bF9ibGtzX2hpdCwgdG90YWxfYmxrc19kaXJ0aWVkLCB0b3RhbF9ibGtzX3dyaXR0ZW4sIHJl bF9ibGtzX3JlYWQsIHJlbF9ibGtzX2hpdCwgcGFnZXNfc2Nhbm5lZCwgcGFnZXNfcmVtb3Zl ZCwgcGFnZXNfZnJvemVuLCBwYWdlc19hbGxfdmlzaWJsZSwgdHVwbGVzX2RlbGV0ZWQsIHR1 cGxlc19mcm96ZW4sIGRlYWRfdHVwbGVzLCBpbmRleF92YWN1dW1fY291bnQsIHJldl9hbGxf ZnJvemVuX3BhZ2VzLCByZXZfYWxsX3Zpc2libGVfcGFnZXMsIHdhbF9yZWNvcmRzLCB3YWxf ZnBpLCB3YWxfYnl0ZXMsIGJsa19yZWFkX3RpbWUsIGJsa193cml0ZV90aW1lLCBkZWxheV90 aW1lLCBzeXN0ZW1fdGltZSwgdXNlcl90aW1lLCB0b3RhbF90aW1lLCBpbnRlcnJ1cHRzKQor ICBXSEVSRSAoKGRiLmRhdG5hbWUgPSBjdXJyZW50X2RhdGFiYXNlKCkpIEFORCAocmVsLm9p ZCA9IHN0YXRzLnJlbGlkKSBBTkQgKG5zLm9pZCA9IHJlbC5yZWxuYW1lc3BhY2UpKTsKIHBn X3RhYmxlc3wgU0VMRUNUIG4ubnNwbmFtZSBBUyBzY2hlbWFuYW1lLAogICAgIGMucmVsbmFt ZSBBUyB0YWJsZW5hbWUsCiAgICAgcGdfZ2V0X3VzZXJieWlkKGMucmVsb3duZXIpIEFTIHRh Ymxlb3duZXIsCi0tIAoyLjM0LjEKCg== --------------8Gft2d5JY0ReR95bAj6Hf3Z0--