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 1rABUS-005Efz-6p for pgsql-hackers@arkaria.postgresql.org; Mon, 04 Dec 2023 16:08:12 +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 1rABUQ-0007wx-T4 for pgsql-hackers@arkaria.postgresql.org; Mon, 04 Dec 2023 16:08:10 +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 1rABUQ-0007wk-CV for pgsql-hackers@lists.postgresql.org; Mon, 04 Dec 2023 16:08:10 +0000 Received: from smtp-fw-52002.amazon.com ([52.119.213.150]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rABUN-00A4ia-NT for pgsql-hackers@postgresql.org; Mon, 04 Dec 2023 16:08:09 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1701706088; x=1733242088; h=from:to:cc:date:message-id:references:in-reply-to: mime-version:subject; bh=wmUbPd3xsui7o1yBVl30WQ70yNu04lWvIpQkIW5M/LU=; b=aLI90DE34HLNrRuAdGJFVEjl7JZaHafeOg80P8n3o+pc2vYqB67tmbQ9 FseiCSJx1uVqJBDwNdFSW/nPHdsO2d0s9ZDlobbgjP1CV4dt7z8QqxZjA ukV1TZW2axIRpCnxIPsqcbHyI2vjzMBMvUvDdiD4gePuOfKm7phiPY7BM Q=; X-Amazon-filename: pg_upgrade_improvements_v7.diff X-IronPort-AV: E=Sophos;i="6.04,250,1695686400"; d="diff'?scan'208";a="598571669" Subject: Re: pg_upgrade failing for 200+ million Large Objects Thread-Topic: pg_upgrade failing for 200+ million Large Objects Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO email-inbound-relay-iad-1d-m6i4x-d23e07e8.us-east-1.amazon.com) ([10.43.8.6]) by smtp-border-fw-52002.iad7.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Dec 2023 16:08:04 +0000 Received: from smtpout.prod.us-west-2.prod.farcaster.email.amazon.dev (iad7-ws-svc-p70-lb3-vlan3.iad.amazon.com [10.32.235.38]) by email-inbound-relay-iad-1d-m6i4x-d23e07e8.us-east-1.amazon.com (Postfix) with ESMTPS id 40AFB838A4; Mon, 4 Dec 2023 16:08:01 +0000 (UTC) Received: from EX19MTAEUA002.ant.amazon.com [10.0.43.254:47913] by smtpin.naws.eu-west-1.prod.farcaster.email.amazon.dev [10.0.7.163:2525] with esmtp (Farcaster) id c250ac85-2fc0-41eb-bace-17234308210b; Mon, 4 Dec 2023 16:07:59 +0000 (UTC) X-Farcaster-Flow-ID: c250ac85-2fc0-41eb-bace-17234308210b Received: from EX19D040EUC001.ant.amazon.com (10.252.61.226) by EX19MTAEUA002.ant.amazon.com (10.252.50.126) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Mon, 4 Dec 2023 16:07:59 +0000 Received: from EX19D040EUC002.ant.amazon.com (10.252.61.192) by EX19D040EUC001.ant.amazon.com (10.252.61.226) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Mon, 4 Dec 2023 16:07:59 +0000 Received: from EX19D040EUC002.ant.amazon.com ([fe80::f5ad:6b9e:9eb3:808f]) by EX19D040EUC002.ant.amazon.com ([fe80::f5ad:6b9e:9eb3:808f%4]) with mapi id 15.02.1118.040; Mon, 4 Dec 2023 16:07:59 +0000 From: "Kumar, Sachin" To: Tom Lane CC: Jacob Champion , Nathan Bossart , Jan Wieck , Bruce Momjian , Zhihong Yu , Andrew Dunstan , Magnus Hagander , Robins Tharakan , Peter Eisentraut , "pgsql-hackers@postgresql.org" Thread-Index: AQHZ/dSQ82fNvcIj80qBVj8+n9DrarByaniAgAAScYCAJx+GAA== Date: Mon, 4 Dec 2023 16:07:59 +0000 Message-ID: <83D44BE5-0088-4D41-8AE6-20A05D026F46@amazon.com> References: <986904.1616525964@sss.pgh.pa.us> <6cccaa33-c263-b8a2-b064-985605d33d25@wi3ck.info> <988415.1616528159@sss.pgh.pa.us> <872315a8-99fc-da4e-463d-784cfb5a025d@wi3ck.info> <1010642.1616532950@sss.pgh.pa.us> <802b96e9-f5e1-015c-dfb9-8756974b11fc@wi3ck.info> <0263bf35-05d6-02a1-519b-b7895a918314@wi3ck.info> <20220825003227.GA1456581@nathanxps13> <663393ca-b2ff-26f0-2e2d-adc942aff4fd@timescale.com> <20220908231807.GA2242918@nathanxps13> <0643CC11-223A-4039-AC34-94E127462796@amazon.com> <1152134.1699555261@sss.pgh.pa.us> In-Reply-To: <1152134.1699555261@sss.pgh.pa.us> Accept-Language: en-US Content-Language: en-GB X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-originating-ip: [10.252.51.153] Content-Type: multipart/mixed; boundary="_002_83D44BE500884D418AE620A05D026F46amazoncom_" MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_002_83D44BE500884D418AE620A05D026F46amazoncom_ Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 DQoNCu+7vz4gIlRvbSBMYW5lIiA8dGdsQHNzcy5wZ2gucGEudXMgPG1haWx0bzp0Z2xAc3NzLnBn aC5wYS51cz4+IHdyb3RlOg0KDQo+IEZXSVcsIEkgYWdyZWUgd2l0aCBKYWNvYidzIGNvbmNlcm4g YWJvdXQgaXQgYmVpbmcgYSBiYWQgaWRlYSB0byBsZXQNCj4gdXNlcnMgb2YgcGdfdXBncmFkZSBw YXNzIGRvd24gYXJiaXRyYXJ5IG9wdGlvbnMgdG8gcGdfZHVtcC9wZ19yZXN0b3JlLg0KPiBJIHRo aW5rIHdlJ2QgcmVncmV0IGdvaW5nIHRoZXJlLCBiZWNhdXNlIGl0J2QgaHVnZWx5IGV4cGFuZCB0 aGUgc2V0DQo+IG9mIGNhc2VzIHBnX3VwZ3JhZGUgaGFzIHRvIGRlYWwgd2l0aC4NCg0KPiBBbHNv LCBwZ191cGdyYWRlIGlzIG9mdGVuIGludm9rZWQgaW5kaXJlY3RseSB2aWEgc2NyaXB0cywgc28g SSBkbw0KPiBub3QgZXNwZWNpYWxseSBidXkgdGhlIGlkZWEgdGhhdCB3ZSdyZSBnb2luZyB0byBn ZXQgdXNlZnVsIGNvbnRyb2wNCj4gaW5wdXQgZnJvbSBzb21lIGh1bWFuIHNvbWV3aGVyZS4gSSB0 aGluayB3ZSdkIGJlIGJldHRlciBvZmYgdG8NCj4gYXNzdW1lIHRoYXQgcGdfdXBncmFkZSBpcyBv biBpdHMgb3duIHRvIG1hbmFnZSB0aGUgcHJvY2Vzcywgc28gdGhhdA0KPiBpZiB3ZSBuZWVkIHRv IHN3aXRjaCBzdHJhdGVnaWVzIGJhc2VkIG9uIG9iamVjdCBjb3VudCBvciB3aGF0ZXZlciwNCj4g d2Ugc2hvdWxkIHB1dCBpbiBhIGhldXJpc3RpYyB0byBjaG9vc2UgdGhlIHN0cmF0ZWd5IGF1dG9t YXRpY2FsbHkuDQo+IEl0IG1pZ2h0IG5vdCBiZSBwZXJmZWN0LCBidXQgdGhhdCB3aWxsIGdpdmUg YmV0dGVyIHJlc3VsdHMgZm9yIHRoZQ0KPiBwcmV0dHkgbGFyZ2UgZnJhY3Rpb24gb2YgdXNlcnMg d2hvIGFyZSBub3QgZ29pbmcgdG8gbWVzcyB3aXRoDQo+IHdlaXJkIGxpdHRsZSBzd2l0Y2hlcy4N Cg0KDQpJIGhhdmUgdXBkYXRlZCB0aGUgcGF0Y2ggdG8gdXNlIGhldXJpc3RpYywgRHVyaW5nIHBn X3VwZ3JhZGUgd2UgY291bnQNCkxhcmdlIG9iamVjdHMgcGVyIGRhdGFiYXNlLiBEdXJpbmcgcGdf cmVzdG9yZSBleGVjdXRpb24gaWYgZGIgbGFyZ2Vfb2JqZWN0cw0KY291bnQgaXMgZ3JlYXRlciB0 aGFuIExBUkdFX09CSkVDVFNfVEhSRVNPTEQgKDFrKSB3ZSB3aWxsIHVzZSANCi0tcmVzdG9yZS1i bG9iLWJhdGNoLXNpemUuDQpJIGFsc28gbW9kaWZpZWQgcGdfdXBncmFkZSAtLWpvYnMgYmVoYXZp b3IgaWYgd2UgaGF2ZSBsYXJnZV9vYmplY3RzICg+IExBUkdFX09CSkVDVFNfVEhSRVNPTEQpDQoN CisgIC8qICBSZXN0b3JlIGFsbCB0aGUgZGJzIHdoZXJlIExBUkdFX09CSkVDVFNfVEhSRVNPTEQg aXMgbm90IGJyZWFjaGVkICovDQorICByZXN0b3JlX2RicyhzdGF0cywgdHJ1ZSk7DQorICAvKiBy ZWFwIGFsbCBjaGlsZHJlbiAqLw0KKyAgd2hpbGUgKHJlYXBfY2hpbGQodHJ1ZSkgPT0gdHJ1ZSkN CisgICAgIDsNCisgIC8qICBSZXN0b3JlIHJlc3Qgb2YgdGhlIGRicyBvbmUgYnkgb25lICB3aXRo IHBnX3Jlc3RvcmUgLS1qb2JzID0gdXNlcl9vcHRzLmpvYnMgKi8NCisgIHJlc3RvcmVfZGJzKHN0 YXRzLCBmYWxzZSk7DQogICAvKiByZWFwIGFsbCBjaGlsZHJlbiAqLw0KICAgd2hpbGUgKHJlYXBf Y2hpbGQodHJ1ZSkgPT0gdHJ1ZSkNCiAgICAgIDsNCg0KUmVnYXJkcw0KU2FjaGluDQoNCg0KDQoN Cg0KDQoNCg0KDQo= --_002_83D44BE500884D418AE620A05D026F46amazoncom_ Content-Type: application/octet-stream; name="pg_upgrade_improvements_v7.diff" Content-Description: pg_upgrade_improvements_v7.diff Content-Disposition: attachment; filename="pg_upgrade_improvements_v7.diff"; size=28576; creation-date="Mon, 04 Dec 2023 16:07:59 GMT"; modification-date="Mon, 04 Dec 2023 16:07:59 GMT" Content-ID: <232E76C82312CC48AE9DCDB8BE9F4545@amazon.com> Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wYXJhbGxlbC5jIGIvc3JjL2Jpbi9wZ19kdW1w L3BhcmFsbGVsLmMKaW5kZXggODVlNjUxNWFjMi4uOTMyODgzMGIyZSAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ19kdW1wL3BhcmFsbGVsLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BhcmFsbGVsLmMK QEAgLTg1OCw2ICs4NTgsMTEgQEAgUnVuV29ya2VyKEFyY2hpdmVIYW5kbGUgKkFILCBQYXJhbGxl bFNsb3QgKnNsb3QpCiAJICovCiAJV2FpdEZvckNvbW1hbmRzKEFILCBwaXBlZmQpOwogCisJLyoK KwkgKiBDbG9zZSBhbiBldmVudHVhbGx5IG9wZW4gQkxPQiBiYXRjaCB0cmFuc2FjdGlvbi4KKwkg Ki8KKwlDb21taXRCbG9iVHJhbnNhY3Rpb24oKEFyY2hpdmUgKilBSCk7CisKIAkvKgogCSAqIERp c2Nvbm5lY3QgZnJvbSBkYXRhYmFzZSBhbmQgY2xlYW4gdXAuCiAJICovCmRpZmYgLS1naXQgYS9z cmMvYmluL3BnX2R1bXAvcGdfYmFja3VwLmggYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwLmgK aW5kZXggOWVmMmYyMDE3ZS4uNjU1MTk3OTFlOSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1w L3BnX2JhY2t1cC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXAuaApAQCAtMjIzLDYg KzIyMyw4IEBAIHR5cGVkZWYgc3RydWN0IEFyY2hpdmUKIAlpbnQJCQludW1Xb3JrZXJzOwkJLyog bnVtYmVyIG9mIHBhcmFsbGVsIHByb2Nlc3NlcyAqLwogCWNoYXIJICAgKnN5bmNfc25hcHNob3Rf aWQ7CS8qIHN5bmMgc25hcHNob3QgaWQgZm9yIHBhcmFsbGVsIG9wZXJhdGlvbiAqLwogCisJaW50 CQkJYmxvYkJhdGNoU2l6ZTsJLyogIyBvZiBibG9icyB0byByZXN0b3JlIHBlciB0cmFuc2FjdGlv biAqLworCiAJLyogaW5mbyBuZWVkZWQgZm9yIHN0cmluZyBlc2NhcGluZyAqLwogCWludAkJCWVu Y29kaW5nOwkJLyogbGlicHEgY29kZSBmb3IgY2xpZW50X2VuY29kaW5nICovCiAJYm9vbAkJc3Rk X3N0cmluZ3M7CS8qIHN0YW5kYXJkX2NvbmZvcm1pbmdfc3RyaW5ncyAqLwpAQCAtMjkzLDYgKzI5 NSw3IEBAIGV4dGVybiB2b2lkIFdyaXRlRGF0YShBcmNoaXZlICpBSFgsIGNvbnN0IHZvaWQgKmRh dGEsIHNpemVfdCBkTGVuKTsKIGV4dGVybiBpbnQJU3RhcnRMTyhBcmNoaXZlICpBSFgsIE9pZCBv aWQpOwogZXh0ZXJuIGludAlFbmRMTyhBcmNoaXZlICpBSFgsIE9pZCBvaWQpOwogCitleHRlcm4g dm9pZAlDb21taXRCbG9iVHJhbnNhY3Rpb24oQXJjaGl2ZSAqQUgpOwogZXh0ZXJuIHZvaWQgQ2xv c2VBcmNoaXZlKEFyY2hpdmUgKkFIWCk7CiAKIGV4dGVybiB2b2lkIFNldEFyY2hpdmVPcHRpb25z KEFyY2hpdmUgKkFILCBEdW1wT3B0aW9ucyAqZG9wdCwgUmVzdG9yZU9wdGlvbnMgKnJvcHQpOwpk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jIGIvc3JjL2Jp bi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCmluZGV4IDI1NmQxZTM1YTQuLjQzYmU5NDUw NjQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYworKysg Yi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKQEAgLTQ1LDYgKzQ1LDcgQEAK ICNkZWZpbmUgVEVYVF9EVU1QX0hFQURFUiAiLS1cbi0tIFBvc3RncmVTUUwgZGF0YWJhc2UgZHVt cFxuLS1cblxuIgogI2RlZmluZSBURVhUX0RVTVBBTExfSEVBREVSICItLVxuLS0gUG9zdGdyZVNR TCBkYXRhYmFzZSBjbHVzdGVyIGR1bXBcbi0tXG5cbiIKIAorc3RhdGljIGludAkJYmxvYkJhdGNo Q291bnQgPSAwOwogCiBzdGF0aWMgQXJjaGl2ZUhhbmRsZSAqX2FsbG9jQUgoY29uc3QgY2hhciAq RmlsZVNwZWMsIGNvbnN0IEFyY2hpdmVGb3JtYXQgZm10LAogCQkJCQkJCSAgIGNvbnN0IHBnX2Nv bXByZXNzX3NwZWNpZmljYXRpb24gY29tcHJlc3Npb25fc3BlYywKQEAgLTI1OCw2ICsyNTksMjMg QEAgQ2xvc2VBcmNoaXZlKEFyY2hpdmUgKkFIWCkKIAkJcGdfZmF0YWwoImNvdWxkIG5vdCBjbG9z ZSBvdXRwdXQgZmlsZTogJW0iKTsKIH0KIAorLyogUHVibGljICovCit2b2lkCitDb21taXRCbG9i VHJhbnNhY3Rpb24oQXJjaGl2ZSAqQUhYKQoreworCUFyY2hpdmVIYW5kbGUgKkFIID0gKEFyY2hp dmVIYW5kbGUgKikgQUhYOworCisJaWYgKGJsb2JCYXRjaENvdW50ID4gMCkKKwl7CisJCWFocHJp bnRmKEFILCAiLS1cbiIpOworCQlhaHByaW50ZihBSCwgIi0tIEVuZCBCTE9CIHJlc3RvcmUgYmF0 Y2hcbiIpOworCQlhaHByaW50ZihBSCwgIi0tXG4iKTsKKwkJYWhwcmludGYoQUgsICJDT01NSVQ7 XG5cbiIpOworCisJCWJsb2JCYXRjaENvdW50ID0gMDsKKwl9Cit9CisKIC8qIFB1YmxpYyAqLwog dm9pZAogU2V0QXJjaGl2ZU9wdGlvbnMoQXJjaGl2ZSAqQUgsIER1bXBPcHRpb25zICpkb3B0LCBS ZXN0b3JlT3B0aW9ucyAqcm9wdCkKQEAgLTcxOSw2ICs3MzcsOCBAQCBSZXN0b3JlQXJjaGl2ZShB cmNoaXZlICpBSFgpCiAJCQlhaHByaW50ZihBSCwgIkNPTU1JVDtcblxuIik7CiAJfQogCisJQ29t bWl0QmxvYlRyYW5zYWN0aW9uKEFIWCk7CisKIAlpZiAoQUgtPnB1YmxpYy52ZXJib3NlKQogCQlk dW1wVGltZXN0YW1wKEFILCAiQ29tcGxldGVkIG9uIiwgdGltZShOVUxMKSk7CiAKQEAgLTM1NDMs NiArMzU2Myw1NyBAQCBfcHJpbnRUb2NFbnRyeShBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkg KnRlLCBib29sIGlzRGF0YSkKIHsKIAlSZXN0b3JlT3B0aW9ucyAqcm9wdCA9IEFILT5wdWJsaWMu cm9wdDsKIAorCS8qIFdlIHJlc3RvcmUgQkxPQnMgaW4gYmF0Y2hlcyB0byByZWR1Y2UgWElEIGNv bnN1bXB0aW9uICovCisJaWYgKHN0cmNtcCh0ZS0+ZGVzYywgIkJMT0IiKSA9PSAwICYmIEFILT5w dWJsaWMuYmxvYkJhdGNoU2l6ZSA+IDEpCisJeworCQlpZiAoYmxvYkJhdGNoQ291bnQgPiAwKQor CQl7CisJCQkvKiBXZSBhcmUgaW5zaWRlIGEgQkxPQiByZXN0b3JlIHRyYW5zYWN0aW9uICovCisJ CQlpZiAoYmxvYkJhdGNoQ291bnQgPj0gQUgtPnB1YmxpYy5ibG9iQmF0Y2hTaXplKQorCQkJewor CQkJCS8qCisJCQkJICogV2UgZGlkIHJlYWNoIHRoZSBiYXRjaCBzaXplIHdpdGggdGhlIHByZXZp b3VzIEJMT0IuCisJCQkJICogQ29tbWl0IGFuZCBzdGFydCBhIG5ldyBiYXRjaC4KKwkJCQkgKi8K KwkJCQlhaHByaW50ZihBSCwgIi0tXG4iKTsKKwkJCQlhaHByaW50ZihBSCwgIi0tIEJMT0IgYmF0 Y2ggc2l6ZSByZWFjaGVkXG4iKTsKKwkJCQlhaHByaW50ZihBSCwgIi0tXG4iKTsKKwkJCQlhaHBy aW50ZihBSCwgIkNPTU1JVDtcbiIpOworCQkJCWFocHJpbnRmKEFILCAiQkVHSU47XG5cbiIpOwor CisJCQkJYmxvYkJhdGNoQ291bnQgPSAxOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCS8qIFRo aXMgb25lIHN0aWxsIGZpdHMgaW50byB0aGUgY3VycmVudCBiYXRjaCAqLworCQkJCWJsb2JCYXRj aENvdW50Kys7CisJCQl9CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKiBOb3QgaW5zaWRlIGEgdHJh bnNhY3Rpb24sIHN0YXJ0IGEgbmV3IGJhdGNoICovCisJCQlhaHByaW50ZihBSCwgIi0tXG4iKTsK KwkJCWFocHJpbnRmKEFILCAiLS0gU3RhcnQgQkxPQiByZXN0b3JlIGJhdGNoXG4iKTsKKwkJCWFo cHJpbnRmKEFILCAiLS1cbiIpOworCQkJYWhwcmludGYoQUgsICJCRUdJTjtcblxuIik7CisKKwkJ CWJsb2JCYXRjaENvdW50ID0gMTsKKwkJfQorCX0KKwllbHNlCisJeworCQkvKiBOb3QgYSBCTE9C LiBJZiB3ZSBoYXZlIGEgQkxPQiBiYXRjaCBvcGVuLCBjbG9zZSBpdC4gKi8KKwkJaWYgKGJsb2JC YXRjaENvdW50ID4gMCkKKwkJeworCQkJYWhwcmludGYoQUgsICItLVxuIik7CisJCQlhaHByaW50 ZihBSCwgIi0tIEVuZCBCTE9CIHJlc3RvcmUgYmF0Y2hcbiIpOworCQkJYWhwcmludGYoQUgsICIt LVxuIik7CisJCQlhaHByaW50ZihBSCwgIkNPTU1JVDtcblxuIik7CisKKwkJCWJsb2JCYXRjaENv dW50ID0gMDsKKwkJfQorCX0KKwogCS8qIFNlbGVjdCBvd25lciwgc2NoZW1hLCB0YWJsZXNwYWNl IGFuZCBkZWZhdWx0IEFNIGFzIG5lY2Vzc2FyeSAqLwogCV9iZWNvbWVPd25lcihBSCwgdGUpOwog CV9zZWxlY3RPdXRwdXRTY2hlbWEoQUgsIHRlLT5uYW1lc3BhY2UpOwpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXgg ZTg2MzkxMzg0OS4uMmM2ZDQ5NzMyYiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC0yMDUsMTEgKzIwNSwyMCBA QCBzdGF0aWMgaW5saW5lIHZvaWQgZHVtcENvbW1lbnQoQXJjaGl2ZSAqZm91dCwgY29uc3QgY2hh ciAqdHlwZSwKIAkJCQkJCQkgICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpuYW1lc3Bh Y2UsCiAJCQkJCQkJICAgY29uc3QgY2hhciAqb3duZXIsIENhdGFsb2dJZCBjYXRhbG9nSWQsCiAJ CQkJCQkJICAgaW50IHN1YmlkLCBEdW1wSWQgZHVtcElkKTsKK3N0YXRpYyBib29sIGR1bXBDb21t ZW50UXVlcnkoQXJjaGl2ZSAqZm91dCwgUFFFeHBCdWZmZXIgcXVlcnksIFBRRXhwQnVmZmVyIHRh ZywKKwkJCQkJCQkgY29uc3QgY2hhciAqdHlwZSwgY29uc3QgY2hhciAqbmFtZSwKKwkJCQkJCQkg Y29uc3QgY2hhciAqbmFtZXNwYWNlLCBjb25zdCBjaGFyICpvd25lciwKKwkJCQkJCQkgQ2F0YWxv Z0lkIGNhdGFsb2dJZCwgaW50IHN1YmlkLCBEdW1wSWQgZHVtcElkLAorCQkJCQkJCSBjb25zdCBj aGFyICppbml0ZGJfY29tbWVudCk7CiBzdGF0aWMgaW50CWZpbmRDb21tZW50cyhPaWQgY2xhc3Nv aWQsIE9pZCBvYmpvaWQsIENvbW1lbnRJdGVtICoqaXRlbXMpOwogc3RhdGljIHZvaWQgY29sbGVj dENvbW1lbnRzKEFyY2hpdmUgKmZvdXQpOwogc3RhdGljIHZvaWQgZHVtcFNlY0xhYmVsKEFyY2hp dmUgKmZvdXQsIGNvbnN0IGNoYXIgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsCiAJCQkJCQkgY29u c3QgY2hhciAqbmFtZXNwYWNlLCBjb25zdCBjaGFyICpvd25lciwKIAkJCQkJCSBDYXRhbG9nSWQg Y2F0YWxvZ0lkLCBpbnQgc3ViaWQsIER1bXBJZCBkdW1wSWQpOworc3RhdGljIGJvb2wgZHVtcFNl Y0xhYmVsUXVlcnkoQXJjaGl2ZSAqZm91dCwgUFFFeHBCdWZmZXIgcXVlcnksIFBRRXhwQnVmZmVy IHRhZywKKwkJCQkJCQkgIGNvbnN0IGNoYXIgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsCisJCQkJ CQkJICBjb25zdCBjaGFyICpuYW1lc3BhY2UsIGNvbnN0IGNoYXIgKm93bmVyLAorCQkJCQkJCSAg Q2F0YWxvZ0lkIGNhdGFsb2dJZCwgaW50IHN1YmlkLCBEdW1wSWQgZHVtcElkKTsKIHN0YXRpYyBp bnQJZmluZFNlY0xhYmVscyhPaWQgY2xhc3NvaWQsIE9pZCBvYmpvaWQsIFNlY0xhYmVsSXRlbSAq Kml0ZW1zKTsKIHN0YXRpYyB2b2lkIGNvbGxlY3RTZWNMYWJlbHMoQXJjaGl2ZSAqZm91dCk7CiBz dGF0aWMgdm9pZCBkdW1wRHVtcGFibGVPYmplY3QoQXJjaGl2ZSAqZm91dCwgRHVtcGFibGVPYmpl Y3QgKmRvYmopOwpAQCAtMjY1LDYgKzI3NCwxMiBAQCBzdGF0aWMgRHVtcElkIGR1bXBBQ0woQXJj aGl2ZSAqZm91dCwgRHVtcElkIG9iakR1bXBJZCwgRHVtcElkIGFsdER1bXBJZCwKIAkJCQkJICBj b25zdCBjaGFyICp0eXBlLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpzdWJuYW1lLAog CQkJCQkgIGNvbnN0IGNoYXIgKm5zcG5hbWUsIGNvbnN0IGNoYXIgKm93bmVyLAogCQkJCQkgIGNv bnN0IER1bXBhYmxlQWNsICpkYWNsKTsKK3N0YXRpYyBib29sIGR1bXBBQ0xRdWVyeShBcmNoaXZl ICpmb3V0LCBQUUV4cEJ1ZmZlciBxdWVyeSwgUFFFeHBCdWZmZXIgdGFnLAorCQkJCQkJIER1bXBJ ZCBvYmpEdW1wSWQsIER1bXBJZCBhbHREdW1wSWQsCisJCQkJCQkgY29uc3QgY2hhciAqdHlwZSwg Y29uc3QgY2hhciAqbmFtZSwKKwkJCQkJCSBjb25zdCBjaGFyICpzdWJuYW1lLAorCQkJCQkJIGNv bnN0IGNoYXIgKm5zcG5hbWUsIGNvbnN0IGNoYXIgKm93bmVyLAorCQkJCQkJIGNvbnN0IER1bXBh YmxlQWNsICpkYWNsKTsKIAogc3RhdGljIHZvaWQgZ2V0RGVwZW5kZW5jaWVzKEFyY2hpdmUgKmZv dXQpOwogc3RhdGljIHZvaWQgQnVpbGRBcmNoaXZlRGVwZW5kZW5jaWVzKEFyY2hpdmUgKmZvdXQp OwpAQCAtMzY0MSwxMCArMzY1Niw0MiBAQCBkdW1wTE8oQXJjaGl2ZSAqZm91dCwgY29uc3QgTG9J bmZvICpsb2luZm8pCiB7CiAJUFFFeHBCdWZmZXIgY3F1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIo KTsKIAlQUUV4cEJ1ZmZlciBkcXVlcnkgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOworCVBRRXhwQnVm ZmVyIHRhZyAgICA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisJdGVTZWN0aW9uCXNlY3Rpb24gPSBT RUNUSU9OX1BSRV9EQVRBOwogCiAJYXBwZW5kUFFFeHBCdWZmZXIoY3F1ZXJ5LAogCQkJCQkgICJT RUxFQ1QgcGdfY2F0YWxvZy5sb19jcmVhdGUoJyVzJyk7XG4iLAogCQkJCQkgIGxvaW5mby0+ZG9i ai5uYW1lKTsKKwkvKgorCSAqIEluIGJpbmFyeSB1cGdyYWRlIG1vZGUgd2UgcHV0IGFsbCB0aGUg cXVlcmllcyB0byByZXN0b3JlCisJICogb25lIGxhcmdlIG9iamVjdCBpbnRvIGEgc2luZ2xlIFRP QyBlbnRyeSBhbmQgZW1pdCBpdCBhcworCSAqIFNFQ1RJT05fREFUQSBzbyB0aGF0IHRoZXkgY2Fu IGJlIHJlc3RvcmVkIGluIHBhcmFsbGVsLgorCSAqLworCWlmIChmb3V0LT5kb3B0LT5iaW5hcnlf dXBncmFkZSkKKwl7CisJCXNlY3Rpb24gPSBTRUNUSU9OX0RBVEE7CisKKwkJLyogRHVtcCBjb21t ZW50IGlmIGFueSAqLworCQlpZiAobG9pbmZvLT5kb2JqLmR1bXAgJiBEVU1QX0NPTVBPTkVOVF9D T01NRU5UKQorCQkJZHVtcENvbW1lbnRRdWVyeShmb3V0LCBjcXVlcnksIHRhZywgIkxBUkdFIE9C SkVDVCIsCisJCQkJCQkJIGxvaW5mby0+ZG9iai5uYW1lLCBOVUxMLCBsb2luZm8tPnJvbG5hbWUs CisJCQkJCQkJIGxvaW5mby0+ZG9iai5jYXRJZCwgMCwgbG9pbmZvLT5kb2JqLmR1bXBJZCwgTlVM TCk7CisKKwkJLyogRHVtcCBzZWN1cml0eSBsYWJlbCBpZiBhbnkgKi8KKwkJaWYgKGxvaW5mby0+ ZG9iai5kdW1wICYgRFVNUF9DT01QT05FTlRfU0VDTEFCRUwpCisJCQlkdW1wU2VjTGFiZWxRdWVy eShmb3V0LCBjcXVlcnksIHRhZywgIkxBUkdFIE9CSkVDVCIsCisJCQkJCQkJICBsb2luZm8tPmRv YmoubmFtZSwKKwkJCQkJCQkgIE5VTEwsIGxvaW5mby0+cm9sbmFtZSwKKwkJCQkJCQkgIGxvaW5m by0+ZG9iai5jYXRJZCwgMCwgbG9pbmZvLT5kb2JqLmR1bXBJZCk7CisKKwkJLyogRHVtcCBBQ0wg aWYgYW55ICovCisJCWlmIChsb2luZm8tPmRvYmouZHVtcCAmIERVTVBfQ09NUE9ORU5UX0FDTCkK KwkJCWR1bXBBQ0xRdWVyeShmb3V0LCBjcXVlcnksIHRhZywKKwkJCQkJCSBsb2luZm8tPmRvYmou ZHVtcElkLCBJbnZhbGlkRHVtcElkLCAiTEFSR0UgT0JKRUNUIiwKKwkJCQkJCSBsb2luZm8tPmRv YmoubmFtZSwgTlVMTCwKKwkJCQkJCSBOVUxMLCBsb2luZm8tPnJvbG5hbWUsICZsb2luZm8tPmRh Y2wpOworCX0KKwogCiAJYXBwZW5kUFFFeHBCdWZmZXIoZHF1ZXJ5LAogCQkJCQkgICJTRUxFQ1Qg cGdfY2F0YWxvZy5sb191bmxpbmsoJyVzJyk7XG4iLApAQCAtMzY1NSwyNyArMzcwMiwyOCBAQCBk dW1wTE8oQXJjaGl2ZSAqZm91dCwgY29uc3QgTG9JbmZvICpsb2luZm8pCiAJCQkJCSBBUkNISVZF X09QVFMoLnRhZyA9IGxvaW5mby0+ZG9iai5uYW1lLAogCQkJCQkJCQkgIC5vd25lciA9IGxvaW5m by0+cm9sbmFtZSwKIAkJCQkJCQkJICAuZGVzY3JpcHRpb24gPSAiQkxPQiIsCi0JCQkJCQkJCSAg LnNlY3Rpb24gPSBTRUNUSU9OX1BSRV9EQVRBLAorCQkJCQkJCQkgIC5zZWN0aW9uID0gc2VjdGlv biwKIAkJCQkJCQkJICAuY3JlYXRlU3RtdCA9IGNxdWVyeS0+ZGF0YSwKIAkJCQkJCQkJICAuZHJv cFN0bXQgPSBkcXVlcnktPmRhdGEpKTsKIAotCS8qIER1bXAgY29tbWVudCBpZiBhbnkgKi8KLQlp ZiAobG9pbmZvLT5kb2JqLmR1bXAgJiBEVU1QX0NPTVBPTkVOVF9DT01NRU5UKQotCQlkdW1wQ29t bWVudChmb3V0LCAiTEFSR0UgT0JKRUNUIiwgbG9pbmZvLT5kb2JqLm5hbWUsCi0JCQkJCU5VTEws IGxvaW5mby0+cm9sbmFtZSwKLQkJCQkJbG9pbmZvLT5kb2JqLmNhdElkLCAwLCBsb2luZm8tPmRv YmouZHVtcElkKTsKLQotCS8qIER1bXAgc2VjdXJpdHkgbGFiZWwgaWYgYW55ICovCi0JaWYgKGxv aW5mby0+ZG9iai5kdW1wICYgRFVNUF9DT01QT05FTlRfU0VDTEFCRUwpCi0JCWR1bXBTZWNMYWJl bChmb3V0LCAiTEFSR0UgT0JKRUNUIiwgbG9pbmZvLT5kb2JqLm5hbWUsCi0JCQkJCSBOVUxMLCBs b2luZm8tPnJvbG5hbWUsCi0JCQkJCSBsb2luZm8tPmRvYmouY2F0SWQsIDAsIGxvaW5mby0+ZG9i ai5kdW1wSWQpOwotCi0JLyogRHVtcCBBQ0wgaWYgYW55ICovCi0JaWYgKGxvaW5mby0+ZG9iai5k dW1wICYgRFVNUF9DT01QT05FTlRfQUNMKQotCQlkdW1wQUNMKGZvdXQsIGxvaW5mby0+ZG9iai5k dW1wSWQsIEludmFsaWREdW1wSWQsICJMQVJHRSBPQkpFQ1QiLAotCQkJCWxvaW5mby0+ZG9iai5u YW1lLCBOVUxMLAotCQkJCU5VTEwsIGxvaW5mby0+cm9sbmFtZSwgJmxvaW5mby0+ZGFjbCk7CisJ aWYgKCFmb3V0LT5kb3B0LT5iaW5hcnlfdXBncmFkZSkKKwl7CisJCS8qIER1bXAgY29tbWVudCBp ZiBhbnkgKi8KKwkJaWYgKGxvaW5mby0+ZG9iai5kdW1wICYgRFVNUF9DT01QT05FTlRfQ09NTUVO VCkKKwkJCWR1bXBDb21tZW50KGZvdXQsICJMQVJHRSBPQkpFQ1QiLCBsb2luZm8tPmRvYmoubmFt ZSwKKwkJCQkJCU5VTEwsIGxvaW5mby0+cm9sbmFtZSwKKwkJCQkJCWxvaW5mby0+ZG9iai5jYXRJ ZCwgMCwgbG9pbmZvLT5kb2JqLmR1bXBJZCk7CisJCS8qIER1bXAgc2VjdXJpdHkgbGFiZWwgaWYg YW55ICovCisJCWlmIChsb2luZm8tPmRvYmouZHVtcCAmIERVTVBfQ09NUE9ORU5UX1NFQ0xBQkVM KQorCQkJZHVtcFNlY0xhYmVsKGZvdXQsICJMQVJHRSBPQkpFQ1QiLCBsb2luZm8tPmRvYmoubmFt ZSwKKwkJCQkJCSBOVUxMLCBsb2luZm8tPnJvbG5hbWUsCisJCQkJCQkgbG9pbmZvLT5kb2JqLmNh dElkLCAwLCBsb2luZm8tPmRvYmouZHVtcElkKTsKKwkJLyogRHVtcCBBQ0wgaWYgYW55ICovCisJ CWlmIChsb2luZm8tPmRvYmouZHVtcCAmIERVTVBfQ09NUE9ORU5UX0FDTCkKKwkJCWR1bXBBQ0wo Zm91dCwgbG9pbmZvLT5kb2JqLmR1bXBJZCwgSW52YWxpZER1bXBJZCwgIkxBUkdFIE9CSkVDVCIs CisJCQkJCWxvaW5mby0+ZG9iai5uYW1lLCBOVUxMLAorCQkJCQlOVUxMLCBsb2luZm8tPnJvbG5h bWUsICZsb2luZm8tPmRhY2wpOworCX0KIAogCWRlc3Ryb3lQUUV4cEJ1ZmZlcihjcXVlcnkpOwog CWRlc3Ryb3lQUUV4cEJ1ZmZlcihkcXVlcnkpOwpAQCAtOTg5OSw2ICs5OTQ3LDM4IEBAIGR1bXBD b21tZW50RXh0ZW5kZWQoQXJjaGl2ZSAqZm91dCwgY29uc3QgY2hhciAqdHlwZSwKIAkJCQkJY29u c3QgY2hhciAqb3duZXIsIENhdGFsb2dJZCBjYXRhbG9nSWQsCiAJCQkJCWludCBzdWJpZCwgRHVt cElkIGR1bXBJZCwKIAkJCQkJY29uc3QgY2hhciAqaW5pdGRiX2NvbW1lbnQpCit7CisJUFFFeHBC dWZmZXIgcXVlcnkgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOworCVBRRXhwQnVmZmVyIHRhZyA9IGNy ZWF0ZVBRRXhwQnVmZmVyKCk7CisKKwlpZiAoZHVtcENvbW1lbnRRdWVyeShmb3V0LCBxdWVyeSwg dGFnLCB0eXBlLCBuYW1lLCBuYW1lc3BhY2UsIG93bmVyLAorCQkJCQkJIGNhdGFsb2dJZCwgc3Vi aWQsIGR1bXBJZCwgaW5pdGRiX2NvbW1lbnQpKQorCXsKKwkJLyoKKwkJICogV2UgbWFyayBjb21t ZW50cyBhcyBTRUNUSU9OX05PTkUgYmVjYXVzZSB0aGV5IHJlYWxseSBiZWxvbmcgaW4gdGhlCisJ CSAqIHNhbWUgc2VjdGlvbiBhcyB0aGVpciBwYXJlbnQsIHdoZXRoZXIgdGhhdCBpcyBwcmUtZGF0 YSBvcgorCQkgKiBwb3N0LWRhdGEuCisJCSAqLworCQlBcmNoaXZlRW50cnkoZm91dCwgbmlsQ2F0 YWxvZ0lkLCBjcmVhdGVEdW1wSWQoKSwKKwkJCQkJIEFSQ0hJVkVfT1BUUygudGFnID0gdGFnLT5k YXRhLAorCQkJCQkJCQkgIC5uYW1lc3BhY2UgPSBuYW1lc3BhY2UsCisJCQkJCQkJCSAgLm93bmVy ID0gb3duZXIsCisJCQkJCQkJCSAgLmRlc2NyaXB0aW9uID0gIkNPTU1FTlQiLAorCQkJCQkJCQkg IC5zZWN0aW9uID0gU0VDVElPTl9OT05FLAorCQkJCQkJCQkgIC5jcmVhdGVTdG10ID0gcXVlcnkt PmRhdGEsCisJCQkJCQkJCSAgLmRlcHMgPSAmZHVtcElkLAorCQkJCQkJCQkgIC5uRGVwcyA9IDEp KTsKKwl9CisJZGVzdHJveVBRRXhwQnVmZmVyKHF1ZXJ5KTsKKwlkZXN0cm95UFFFeHBCdWZmZXIo dGFnKTsKK30KKworc3RhdGljIGJvb2wKK2R1bXBDb21tZW50UXVlcnkoQXJjaGl2ZSAqZm91dCwg UFFFeHBCdWZmZXIgcXVlcnksIFBRRXhwQnVmZmVyIHRhZywKKwkJCQkgY29uc3QgY2hhciAqdHlw ZSwgY29uc3QgY2hhciAqbmFtZSwKKwkJCQkgY29uc3QgY2hhciAqbmFtZXNwYWNlLCBjb25zdCBj aGFyICpvd25lciwKKwkJCQkgQ2F0YWxvZ0lkIGNhdGFsb2dJZCwgaW50IHN1YmlkLCBEdW1wSWQg ZHVtcElkLAorCQkJCSBjb25zdCBjaGFyICppbml0ZGJfY29tbWVudCkKIHsKIAlEdW1wT3B0aW9u cyAqZG9wdCA9IGZvdXQtPmRvcHQ7CiAJQ29tbWVudEl0ZW0gKmNvbW1lbnRzOwpAQCAtOTkwNiwx OSArOTk4NiwxOSBAQCBkdW1wQ29tbWVudEV4dGVuZGVkKEFyY2hpdmUgKmZvdXQsIGNvbnN0IGNo YXIgKnR5cGUsCiAKIAkvKiBkbyBub3RoaW5nLCBpZiAtLW5vLWNvbW1lbnRzIGlzIHN1cHBsaWVk ICovCiAJaWYgKGRvcHQtPm5vX2NvbW1lbnRzKQotCQlyZXR1cm47CisJCXJldHVybiBmYWxzZTsK IAogCS8qIENvbW1lbnRzIGFyZSBzY2hlbWEgbm90IGRhdGEgLi4uIGV4Y2VwdCBMTyBjb21tZW50 cyBhcmUgZGF0YSAqLwogCWlmIChzdHJjbXAodHlwZSwgIkxBUkdFIE9CSkVDVCIpICE9IDApCiAJ ewogCQlpZiAoZG9wdC0+ZGF0YU9ubHkpCi0JCQlyZXR1cm47CisJCQlyZXR1cm4gZmFsc2U7CiAJ fQogCWVsc2UKIAl7CiAJCS8qIFdlIGRvIGR1bXAgTE8gY29tbWVudHMgaW4gYmluYXJ5LXVwZ3Jh ZGUgbW9kZSAqLwogCQlpZiAoZG9wdC0+c2NoZW1hT25seSAmJiAhZG9wdC0+YmluYXJ5X3VwZ3Jh ZGUpCi0JCQlyZXR1cm47CisJCQlyZXR1cm4gZmFsc2U7CiAJfQogCiAJLyogU2VhcmNoIGZvciBj b21tZW50cyBhc3NvY2lhdGVkIHdpdGggY2F0YWxvZ0lkLCB1c2luZyB0YWJsZSAqLwpAQCAtOTk1 Niw5ICsxMDAzNiw2IEBAIGR1bXBDb21tZW50RXh0ZW5kZWQoQXJjaGl2ZSAqZm91dCwgY29uc3Qg Y2hhciAqdHlwZSwKIAkvKiBJZiBhIGNvbW1lbnQgZXhpc3RzLCBidWlsZCBDT01NRU5UIE9OIHN0 YXRlbWVudCAqLwogCWlmIChuY29tbWVudHMgPiAwKQogCXsKLQkJUFFFeHBCdWZmZXIgcXVlcnkg PSBjcmVhdGVQUUV4cEJ1ZmZlcigpOwotCQlQUUV4cEJ1ZmZlciB0YWcgPSBjcmVhdGVQUUV4cEJ1 ZmZlcigpOwotCiAJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiQ09NTUVOVCBPTiAlcyAiLCB0 eXBlKTsKIAkJaWYgKG5hbWVzcGFjZSAmJiAqbmFtZXNwYWNlKQogCQkJYXBwZW5kUFFFeHBCdWZm ZXIocXVlcnksICIlcy4iLCBmbXRJZChuYW1lc3BhY2UpKTsKQEAgLTk5NjgsMjQgKzEwMDQ1LDEw IEBAIGR1bXBDb21tZW50RXh0ZW5kZWQoQXJjaGl2ZSAqZm91dCwgY29uc3QgY2hhciAqdHlwZSwK IAogCQlhcHBlbmRQUUV4cEJ1ZmZlcih0YWcsICIlcyAlcyIsIHR5cGUsIG5hbWUpOwogCi0JCS8q Ci0JCSAqIFdlIG1hcmsgY29tbWVudHMgYXMgU0VDVElPTl9OT05FIGJlY2F1c2UgdGhleSByZWFs bHkgYmVsb25nIGluIHRoZQotCQkgKiBzYW1lIHNlY3Rpb24gYXMgdGhlaXIgcGFyZW50LCB3aGV0 aGVyIHRoYXQgaXMgcHJlLWRhdGEgb3IKLQkJICogcG9zdC1kYXRhLgotCQkgKi8KLQkJQXJjaGl2 ZUVudHJ5KGZvdXQsIG5pbENhdGFsb2dJZCwgY3JlYXRlRHVtcElkKCksCi0JCQkJCSBBUkNISVZF X09QVFMoLnRhZyA9IHRhZy0+ZGF0YSwKLQkJCQkJCQkJICAubmFtZXNwYWNlID0gbmFtZXNwYWNl LAotCQkJCQkJCQkgIC5vd25lciA9IG93bmVyLAotCQkJCQkJCQkgIC5kZXNjcmlwdGlvbiA9ICJD T01NRU5UIiwKLQkJCQkJCQkJICAuc2VjdGlvbiA9IFNFQ1RJT05fTk9ORSwKLQkJCQkJCQkJICAu Y3JlYXRlU3RtdCA9IHF1ZXJ5LT5kYXRhLAotCQkJCQkJCQkgIC5kZXBzID0gJmR1bXBJZCwKLQkJ CQkJCQkJICAubkRlcHMgPSAxKSk7Ci0KLQkJZGVzdHJveVBRRXhwQnVmZmVyKHF1ZXJ5KTsKLQkJ ZGVzdHJveVBRRXhwQnVmZmVyKHRhZyk7CisJCXJldHVybiB0cnVlOwogCX0KKworCXJldHVybiBm YWxzZTsKIH0KIAogLyoKQEAgLTE0OTM5LDIzICsxNTAwMiw2NSBAQCBkdW1wQUNMKEFyY2hpdmUg KmZvdXQsIER1bXBJZCBvYmpEdW1wSWQsIER1bXBJZCBhbHREdW1wSWQsCiAJCWNvbnN0IER1bXBh YmxlQWNsICpkYWNsKQogewogCUR1bXBJZAkJYWNsRHVtcElkID0gSW52YWxpZER1bXBJZDsKKwlQ UUV4cEJ1ZmZlciBxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisJUFFFeHBCdWZmZXIgdGFn ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKworCWlmIChkdW1wQUNMUXVlcnkoZm91dCwgcXVlcnks IHRhZywgb2JqRHVtcElkLCBhbHREdW1wSWQsCisJCQkJCSB0eXBlLCBuYW1lLCBzdWJuYW1lLCBu c3BuYW1lLCBvd25lciwgZGFjbCkpCisJeworCQlEdW1wSWQJCWFjbERlcHNbMl07CisJCWludAkJ CW5EZXBzID0gMDsKKworCQlpZiAoc3VibmFtZSkKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKHRhZywg IkNPTFVNTiAlcy4lcyIsIG5hbWUsIHN1Ym5hbWUpOworCQllbHNlCisJCQlhcHBlbmRQUUV4cEJ1 ZmZlcih0YWcsICIlcyAlcyIsIHR5cGUsIG5hbWUpOworCisJCWFjbERlcHNbbkRlcHMrK10gPSBv YmpEdW1wSWQ7CisJCWlmIChhbHREdW1wSWQgIT0gSW52YWxpZER1bXBJZCkKKwkJCWFjbERlcHNb bkRlcHMrK10gPSBhbHREdW1wSWQ7CisKKwkJYWNsRHVtcElkID0gY3JlYXRlRHVtcElkKCk7CisK KwkJQXJjaGl2ZUVudHJ5KGZvdXQsIG5pbENhdGFsb2dJZCwgYWNsRHVtcElkLAorCQkJCQkgQVJD SElWRV9PUFRTKC50YWcgPSB0YWctPmRhdGEsCisJCQkJCQkJCSAgLm5hbWVzcGFjZSA9IG5zcG5h bWUsCisJCQkJCQkJCSAgLm93bmVyID0gb3duZXIsCisJCQkJCQkJCSAgLmRlc2NyaXB0aW9uID0g IkFDTCIsCisJCQkJCQkJCSAgLnNlY3Rpb24gPSBTRUNUSU9OX05PTkUsCisJCQkJCQkJCSAgLmNy ZWF0ZVN0bXQgPSBxdWVyeS0+ZGF0YSwKKwkJCQkJCQkJICAuZGVwcyA9IGFjbERlcHMsCisJCQkJ CQkJCSAgLm5EZXBzID0gbkRlcHMpKTsKKworCX0KKworCWRlc3Ryb3lQUUV4cEJ1ZmZlcihxdWVy eSk7CisJZGVzdHJveVBRRXhwQnVmZmVyKHRhZyk7CisKKwlyZXR1cm4gYWNsRHVtcElkOworfQor CitzdGF0aWMgYm9vbAorZHVtcEFDTFF1ZXJ5KEFyY2hpdmUgKmZvdXQsIFBRRXhwQnVmZmVyIHF1 ZXJ5LCBQUUV4cEJ1ZmZlciB0YWcsCisJCQkgRHVtcElkIG9iakR1bXBJZCwgRHVtcElkIGFsdER1 bXBJZCwKKwkJCSBjb25zdCBjaGFyICp0eXBlLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFy ICpzdWJuYW1lLAorCQkJIGNvbnN0IGNoYXIgKm5zcG5hbWUsIGNvbnN0IGNoYXIgKm93bmVyLAor CQkJIGNvbnN0IER1bXBhYmxlQWNsICpkYWNsKQorewogCUR1bXBPcHRpb25zICpkb3B0ID0gZm91 dC0+ZG9wdDsKIAljb25zdCBjaGFyICphY2xzID0gZGFjbC0+YWNsOwogCWNvbnN0IGNoYXIgKmFj bGRlZmF1bHQgPSBkYWNsLT5hY2xkZWZhdWx0OwogCWNoYXIJCXByaXZ0eXBlID0gZGFjbC0+cHJp dnR5cGU7CiAJY29uc3QgY2hhciAqaW5pdHByaXZzID0gZGFjbC0+aW5pdHByaXZzOwogCWNvbnN0 IGNoYXIgKmJhc2VhY2xzOwotCVBRRXhwQnVmZmVyIHNxbDsKIAogCS8qIERvIG5vdGhpbmcgaWYg QUNMIGR1bXAgaXMgbm90IGVuYWJsZWQgKi8KIAlpZiAoZG9wdC0+YWNsc1NraXApCi0JCXJldHVy biBJbnZhbGlkRHVtcElkOworCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiAtLWRhdGEtb25seSBza2lw cyBBQ0xzICpleGNlcHQqIGxhcmdlIG9iamVjdCBBQ0xzICovCiAJaWYgKGRvcHQtPmRhdGFPbmx5 ICYmIHN0cmNtcCh0eXBlLCAiTEFSR0UgT0JKRUNUIikgIT0gMCkKLQkJcmV0dXJuIEludmFsaWRE dW1wSWQ7Ci0KLQlzcWwgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOworCQlyZXR1cm4gZmFsc2U7CiAK IAkvKgogCSAqIEluIGJpbmFyeSB1cGdyYWRlIG1vZGUsIHdlIGRvbid0IHJ1biBhbiBleHRlbnNp b24ncyBzY3JpcHQgYnV0IGluc3RlYWQKQEAgLTE0OTczLDEzICsxNTA3OCwxMyBAQCBkdW1wQUNM KEFyY2hpdmUgKmZvdXQsIER1bXBJZCBvYmpEdW1wSWQsIER1bXBJZCBhbHREdW1wSWQsCiAJaWYg KGRvcHQtPmJpbmFyeV91cGdyYWRlICYmIHByaXZ0eXBlID09ICdlJyAmJgogCQlpbml0cHJpdnMg JiYgKmluaXRwcml2cyAhPSAnXDAnKQogCXsKLQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoc3FsLCAi U0VMRUNUIHBnX2NhdGFsb2cuYmluYXJ5X3VwZ3JhZGVfc2V0X3JlY29yZF9pbml0X3ByaXZzKHRy dWUpO1xuIik7CisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiU0VMRUNUIHBnX2NhdGFs b2cuYmluYXJ5X3VwZ3JhZGVfc2V0X3JlY29yZF9pbml0X3ByaXZzKHRydWUpO1xuIik7CiAJCWlm ICghYnVpbGRBQ0xDb21tYW5kcyhuYW1lLCBzdWJuYW1lLCBuc3BuYW1lLCB0eXBlLAogCQkJCQkJ CSAgaW5pdHByaXZzLCBhY2xkZWZhdWx0LCBvd25lciwKLQkJCQkJCQkgICIiLCBmb3V0LT5yZW1v dGVWZXJzaW9uLCBzcWwpKQorCQkJCQkJCSAgIiIsIGZvdXQtPnJlbW90ZVZlcnNpb24sIHF1ZXJ5 KSkKIAkJCXBnX2ZhdGFsKCJjb3VsZCBub3QgcGFyc2UgaW5pdGlhbCBBQ0wgbGlzdCAoJXMpIG9y IGRlZmF1bHQgKCVzKSBmb3Igb2JqZWN0IFwiJXNcIiAoJXMpIiwKIAkJCQkJIGluaXRwcml2cywg YWNsZGVmYXVsdCwgbmFtZSwgdHlwZSk7Ci0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHNxbCwgIlNF TEVDVCBwZ19jYXRhbG9nLmJpbmFyeV91cGdyYWRlX3NldF9yZWNvcmRfaW5pdF9wcml2cyhmYWxz ZSk7XG4iKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICJTRUxFQ1QgcGdfY2F0YWxv Zy5iaW5hcnlfdXBncmFkZV9zZXRfcmVjb3JkX2luaXRfcHJpdnMoZmFsc2UpO1xuIik7CiAJfQog CiAJLyoKQEAgLTE1MDAxLDQzICsxNTEwNiwxOSBAQCBkdW1wQUNMKEFyY2hpdmUgKmZvdXQsIER1 bXBJZCBvYmpEdW1wSWQsIER1bXBJZCBhbHREdW1wSWQsCiAKIAlpZiAoIWJ1aWxkQUNMQ29tbWFu ZHMobmFtZSwgc3VibmFtZSwgbnNwbmFtZSwgdHlwZSwKIAkJCQkJCSAgYWNscywgYmFzZWFjbHMs IG93bmVyLAotCQkJCQkJICAiIiwgZm91dC0+cmVtb3RlVmVyc2lvbiwgc3FsKSkKKwkJCQkJCSAg IiIsIGZvdXQtPnJlbW90ZVZlcnNpb24sIHF1ZXJ5KSkKIAkJcGdfZmF0YWwoImNvdWxkIG5vdCBw YXJzZSBBQ0wgbGlzdCAoJXMpIG9yIGRlZmF1bHQgKCVzKSBmb3Igb2JqZWN0IFwiJXNcIiAoJXMp IiwKIAkJCQkgYWNscywgYmFzZWFjbHMsIG5hbWUsIHR5cGUpOwogCi0JaWYgKHNxbC0+bGVuID4g MCkKKwlpZiAocXVlcnktPmxlbiA+IDAgJiYgdGFnICE9IE5VTEwpCiAJewotCQlQUUV4cEJ1ZmZl ciB0YWcgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOwotCQlEdW1wSWQJCWFjbERlcHNbMl07Ci0JCWlu dAkJCW5EZXBzID0gMDsKLQogCQlpZiAoc3VibmFtZSkKIAkJCWFwcGVuZFBRRXhwQnVmZmVyKHRh ZywgIkNPTFVNTiAlcy4lcyIsIG5hbWUsIHN1Ym5hbWUpOwogCQllbHNlCiAJCQlhcHBlbmRQUUV4 cEJ1ZmZlcih0YWcsICIlcyAlcyIsIHR5cGUsIG5hbWUpOwotCi0JCWFjbERlcHNbbkRlcHMrK10g PSBvYmpEdW1wSWQ7Ci0JCWlmIChhbHREdW1wSWQgIT0gSW52YWxpZER1bXBJZCkKLQkJCWFjbERl cHNbbkRlcHMrK10gPSBhbHREdW1wSWQ7Ci0KLQkJYWNsRHVtcElkID0gY3JlYXRlRHVtcElkKCk7 Ci0KLQkJQXJjaGl2ZUVudHJ5KGZvdXQsIG5pbENhdGFsb2dJZCwgYWNsRHVtcElkLAotCQkJCQkg QVJDSElWRV9PUFRTKC50YWcgPSB0YWctPmRhdGEsCi0JCQkJCQkJCSAgLm5hbWVzcGFjZSA9IG5z cG5hbWUsCi0JCQkJCQkJCSAgLm93bmVyID0gb3duZXIsCi0JCQkJCQkJCSAgLmRlc2NyaXB0aW9u ID0gIkFDTCIsCi0JCQkJCQkJCSAgLnNlY3Rpb24gPSBTRUNUSU9OX05PTkUsCi0JCQkJCQkJCSAg LmNyZWF0ZVN0bXQgPSBzcWwtPmRhdGEsCi0JCQkJCQkJCSAgLmRlcHMgPSBhY2xEZXBzLAotCQkJ CQkJCQkgIC5uRGVwcyA9IG5EZXBzKSk7Ci0KLQkJZGVzdHJveVBRRXhwQnVmZmVyKHRhZyk7CiAJ fQogCi0JZGVzdHJveVBRRXhwQnVmZmVyKHNxbCk7Ci0KLQlyZXR1cm4gYWNsRHVtcElkOworCXJl dHVybiB0cnVlOwogfQogCiAvKgpAQCAtMTUwNjIsMTYgKzE1MTQzLDQyIEBAIHN0YXRpYyB2b2lk CiBkdW1wU2VjTGFiZWwoQXJjaGl2ZSAqZm91dCwgY29uc3QgY2hhciAqdHlwZSwgY29uc3QgY2hh ciAqbmFtZSwKIAkJCSBjb25zdCBjaGFyICpuYW1lc3BhY2UsIGNvbnN0IGNoYXIgKm93bmVyLAog CQkJIENhdGFsb2dJZCBjYXRhbG9nSWQsIGludCBzdWJpZCwgRHVtcElkIGR1bXBJZCkKK3sKKwlQ UUV4cEJ1ZmZlciBxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisJUFFFeHBCdWZmZXIgdGFn ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKworCWlmIChkdW1wU2VjTGFiZWxRdWVyeShmb3V0LCBx dWVyeSwgdGFnLCB0eXBlLCBuYW1lLAorCQkJCQkJICBuYW1lc3BhY2UsIG93bmVyLCBjYXRhbG9n SWQsIHN1YmlkLCBkdW1wSWQpKQorCXsKKwkJQXJjaGl2ZUVudHJ5KGZvdXQsIG5pbENhdGFsb2dJ ZCwgY3JlYXRlRHVtcElkKCksCisJCQkJCSBBUkNISVZFX09QVFMoLnRhZyA9IHRhZy0+ZGF0YSwK KwkJCQkJCQkJICAubmFtZXNwYWNlID0gbmFtZXNwYWNlLAorCQkJCQkJCQkgIC5vd25lciA9IG93 bmVyLAorCQkJCQkJCQkgIC5kZXNjcmlwdGlvbiA9ICJTRUNVUklUWSBMQUJFTCIsCisJCQkJCQkJ CSAgLnNlY3Rpb24gPSBTRUNUSU9OX05PTkUsCisJCQkJCQkJCSAgLmNyZWF0ZVN0bXQgPSBxdWVy eS0+ZGF0YSwKKwkJCQkJCQkJICAuZGVwcyA9ICZkdW1wSWQsCisJCQkJCQkJCSAgLm5EZXBzID0g MSkpOworCX0KKworCWRlc3Ryb3lQUUV4cEJ1ZmZlcihxdWVyeSk7CisJZGVzdHJveVBRRXhwQnVm ZmVyKHRhZyk7Cit9CisKK3N0YXRpYyBib29sCitkdW1wU2VjTGFiZWxRdWVyeShBcmNoaXZlICpm b3V0LCBQUUV4cEJ1ZmZlciBxdWVyeSwgUFFFeHBCdWZmZXIgdGFnLAorCQkJCSAgY29uc3QgY2hh ciAqdHlwZSwgY29uc3QgY2hhciAqbmFtZSwKKwkJCQkgIGNvbnN0IGNoYXIgKm5hbWVzcGFjZSwg Y29uc3QgY2hhciAqb3duZXIsCisJCQkJICBDYXRhbG9nSWQgY2F0YWxvZ0lkLCBpbnQgc3ViaWQs IER1bXBJZCBkdW1wSWQpCiB7CiAJRHVtcE9wdGlvbnMgKmRvcHQgPSBmb3V0LT5kb3B0OwogCVNl Y0xhYmVsSXRlbSAqbGFiZWxzOwogCWludAkJCW5sYWJlbHM7CiAJaW50CQkJaTsKLQlQUUV4cEJ1 ZmZlciBxdWVyeTsKIAogCS8qIGRvIG5vdGhpbmcsIGlmIC0tbm8tc2VjdXJpdHktbGFiZWxzIGlz IHN1cHBsaWVkICovCiAJaWYgKGRvcHQtPm5vX3NlY3VyaXR5X2xhYmVscykKLQkJcmV0dXJuOwor CQlyZXR1cm4gZmFsc2U7CiAKIAkvKgogCSAqIFNlY3VyaXR5IGxhYmVscyBhcmUgc2NoZW1hIG5v dCBkYXRhIC4uLiBleGNlcHQgbGFyZ2Ugb2JqZWN0IGxhYmVscyBhcmUKQEAgLTE1MDgwLDIwICsx NTE4NywxOCBAQCBkdW1wU2VjTGFiZWwoQXJjaGl2ZSAqZm91dCwgY29uc3QgY2hhciAqdHlwZSwg Y29uc3QgY2hhciAqbmFtZSwKIAlpZiAoc3RyY21wKHR5cGUsICJMQVJHRSBPQkpFQ1QiKSAhPSAw KQogCXsKIAkJaWYgKGRvcHQtPmRhdGFPbmx5KQotCQkJcmV0dXJuOworCQkJcmV0dXJuIGZhbHNl OwogCX0KIAllbHNlCiAJewogCQkvKiBXZSBkbyBkdW1wIGxhcmdlIG9iamVjdCBzZWN1cml0eSBs YWJlbHMgaW4gYmluYXJ5LXVwZ3JhZGUgbW9kZSAqLwogCQlpZiAoZG9wdC0+c2NoZW1hT25seSAm JiAhZG9wdC0+YmluYXJ5X3VwZ3JhZGUpCi0JCQlyZXR1cm47CisJCQlyZXR1cm4gZmFsc2U7CiAJ fQogCiAJLyogU2VhcmNoIGZvciBzZWN1cml0eSBsYWJlbHMgYXNzb2NpYXRlZCB3aXRoIGNhdGFs b2dJZCwgdXNpbmcgdGFibGUgKi8KIAlubGFiZWxzID0gZmluZFNlY0xhYmVscyhjYXRhbG9nSWQu dGFibGVvaWQsIGNhdGFsb2dJZC5vaWQsICZsYWJlbHMpOwogCi0JcXVlcnkgPSBjcmVhdGVQUUV4 cEJ1ZmZlcigpOwotCiAJZm9yIChpID0gMDsgaSA8IG5sYWJlbHM7IGkrKykKIAl7CiAJCS8qCkBA IC0xNTExNCwyMiArMTUyMTksMTEgQEAgZHVtcFNlY0xhYmVsKEFyY2hpdmUgKmZvdXQsIGNvbnN0 IGNoYXIgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsCiAKIAlpZiAocXVlcnktPmxlbiA+IDApCiAJ ewotCQlQUUV4cEJ1ZmZlciB0YWcgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOwotCiAJCWFwcGVuZFBR RXhwQnVmZmVyKHRhZywgIiVzICVzIiwgdHlwZSwgbmFtZSk7Ci0JCUFyY2hpdmVFbnRyeShmb3V0 LCBuaWxDYXRhbG9nSWQsIGNyZWF0ZUR1bXBJZCgpLAotCQkJCQkgQVJDSElWRV9PUFRTKC50YWcg PSB0YWctPmRhdGEsCi0JCQkJCQkJCSAgLm5hbWVzcGFjZSA9IG5hbWVzcGFjZSwKLQkJCQkJCQkJ ICAub3duZXIgPSBvd25lciwKLQkJCQkJCQkJICAuZGVzY3JpcHRpb24gPSAiU0VDVVJJVFkgTEFC RUwiLAotCQkJCQkJCQkgIC5zZWN0aW9uID0gU0VDVElPTl9OT05FLAotCQkJCQkJCQkgIC5jcmVh dGVTdG10ID0gcXVlcnktPmRhdGEsCi0JCQkJCQkJCSAgLmRlcHMgPSAmZHVtcElkLAotCQkJCQkJ CQkgIC5uRGVwcyA9IDEpKTsKLQkJZGVzdHJveVBRRXhwQnVmZmVyKHRhZyk7CisJCXJldHVybiB0 cnVlOwogCX0KIAotCWRlc3Ryb3lQUUV4cEJ1ZmZlcihxdWVyeSk7CisJcmV0dXJuIGZhbHNlOwog fQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX3Jlc3RvcmUuYyBiL3NyYy9i aW4vcGdfZHVtcC9wZ19yZXN0b3JlLmMKaW5kZXggMDQ5YTEwMDYzNC4uMjE1OWY3MmZmYiAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX3Jlc3RvcmUuYworKysgYi9zcmMvYmluL3BnX2R1 bXAvcGdfcmVzdG9yZS5jCkBAIC02MCw2ICs2MCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQogCWludAkJCWM7CiAJaW50CQkJZXhpdF9jb2RlOwogCWludAkJCW51bVdvcmtlcnMgPSAx OworCWludAkJCWJsb2JCYXRjaFNpemUgPSAwOwogCUFyY2hpdmUgICAgKkFIOwogCWNoYXIJICAg KmlucHV0RmlsZVNwZWM7CiAJc3RhdGljIGludAlkaXNhYmxlX3RyaWdnZXJzID0gMDsKQEAgLTEy Myw2ICsxMjQsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJeyJuby1wdWJsaWNh dGlvbnMiLCBub19hcmd1bWVudCwgJm5vX3B1YmxpY2F0aW9ucywgMX0sCiAJCXsibm8tc2VjdXJp dHktbGFiZWxzIiwgbm9fYXJndW1lbnQsICZub19zZWN1cml0eV9sYWJlbHMsIDF9LAogCQl7Im5v LXN1YnNjcmlwdGlvbnMiLCBub19hcmd1bWVudCwgJm5vX3N1YnNjcmlwdGlvbnMsIDF9LAorCQl7 InJlc3RvcmUtYmxvYi1iYXRjaC1zaXplIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIDR9LAog CiAJCXtOVUxMLCAwLCBOVUxMLCAwfQogCX07CkBAIC0yODYsNiArMjg4LDEwIEBAIG1haW4oaW50 IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJCXNldF9kdW1wX3NlY3Rpb24ob3B0YXJnLCAmKG9wdHMt PmR1bXBTZWN0aW9ucykpOwogCQkJCWJyZWFrOwogCisJCQljYXNlIDQ6CQkJCS8qICMgb2YgYmxv YnMgdG8gcmVzdG9yZSBwZXIgdHJhbnNhY3Rpb24gKi8KKwkJCQlibG9iQmF0Y2hTaXplID0gYXRv aShvcHRhcmcpOworCQkJCWJyZWFrOworCiAJCQlkZWZhdWx0OgogCQkJCS8qIGdldG9wdF9sb25n IGFscmVhZHkgZW1pdHRlZCBhIGNvbXBsYWludCAqLwogCQkJCXBnX2xvZ19lcnJvcl9oaW50KCJU cnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iLCBwcm9nbmFtZSk7CkBAIC00 MDUsNiArNDExLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCVNvcnRUb2NGcm9t RmlsZShBSCk7CiAKIAlBSC0+bnVtV29ya2VycyA9IG51bVdvcmtlcnM7CisJQUgtPmJsb2JCYXRj aFNpemUgPSBibG9iQmF0Y2hTaXplOwogCiAJaWYgKG9wdHMtPnRvY1N1bW1hcnkpCiAJCVByaW50 VE9DU3VtbWFyeShBSCk7CkBAIC00NzgsNiArNDg1LDggQEAgdXNhZ2UoY29uc3QgY2hhciAqcHJv Z25hbWUpCiAJcHJpbnRmKF8oIiAgLS11c2Utc2V0LXNlc3Npb24tYXV0aG9yaXphdGlvblxuIgog CQkJICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlIFNFVCBTRVNTSU9OIEFVVEhP UklaQVRJT04gY29tbWFuZHMgaW5zdGVhZCBvZlxuIgogCQkJICIgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQUxURVIgT1dORVIgY29tbWFuZHMgdG8gc2V0IG93bmVyc2hpcFxuIikpOwor CXByaW50ZihfKCIgIC0tcmVzdG9yZS1ibG9iLWJhdGNoLXNpemU9TlVNXG4iCisJCQkgIiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRlbXB0IHRvIHJlc3RvcmUgTlVNIGxhcmdlIG9i amVjdHMgcGVyIHRyYW5zYWN0aW9uXG4iKSk7CiAKIAlwcmludGYoXygiXG5Db25uZWN0aW9uIG9w dGlvbnM6XG4iKSk7CiAJcHJpbnRmKF8oIiAgLWgsIC0taG9zdD1IT1NUTkFNRSAgICAgIGRhdGFi YXNlIHNlcnZlciBob3N0IG9yIHNvY2tldCBkaXJlY3RvcnlcbiIpKTsKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfdXBncmFkZS9jaGVjay5jIGIvc3JjL2Jpbi9wZ191cGdyYWRlL2NoZWNrLmMKaW5k ZXggZmE1MmFhMmMyMi4uNDU5ZDgzNGFjMyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ191cGdyYWRl L2NoZWNrLmMKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL2NoZWNrLmMKQEAgLTg0LDcgKzg0LDcg QEAgb3V0cHV0X2NoZWNrX2Jhbm5lcihib29sIGxpdmVfY2hlY2spCiAKIAogdm9pZAotY2hlY2tf YW5kX2R1bXBfb2xkX2NsdXN0ZXIoYm9vbCBsaXZlX2NoZWNrKQorY2hlY2tfYW5kX2R1bXBfb2xk X2NsdXN0ZXIoYm9vbCBsaXZlX2NoZWNrLCBEYkR1bXBTdGF0cyAqKnN0YXRzKQogewogCS8qIC0t IE9MRCAtLSAqLwogCkBAIC0yMDIsMTIgKzIwMiwzNiBAQCBjaGVja19hbmRfZHVtcF9vbGRfY2x1 c3Rlcihib29sIGxpdmVfY2hlY2spCiAJICogdGhlIG9sZCBzZXJ2ZXIgaXMgcnVubmluZy4KIAkg Ki8KIAlpZiAoIXVzZXJfb3B0cy5jaGVjaykKKwl7CisJCSpzdGF0cyA9IGNvbGxlY3RfZGJfc3Rh dHMoKTsKIAkJZ2VuZXJhdGVfb2xkX2R1bXAoKTsKKwl9CiAKIAlpZiAoIWxpdmVfY2hlY2spCiAJ CXN0b3BfcG9zdG1hc3RlcihmYWxzZSk7CiB9CiAKK0RiRHVtcFN0YXRzKiBjb2xsZWN0X2RiX3N0 YXRzKHZvaWQpCit7CisJdWludCBkYm51bTsKKwlEYkR1bXBTdGF0cyAqc3RhdHMgPSAoRGJEdW1w U3RhdHMgKilwZ19tYWxsb2Moc2l6ZW9mKERiRHVtcFN0YXRzKSk7CisJc3RhdHMtPmxhcmdlX29i amVjdHMgPSAodWludDY0ICopcGdfbWFsbG9jKHNpemVvZihvbGRfY2x1c3Rlci5kYmFyci5uZGJz ICogc2l6ZW9mKHVpbnQ2NCkpKTsKKwlwcmVwX3N0YXR1cygiQ29sbGVjdGluZyBkYXRhYmFzZSBz dGF0cyIpOworCWZvciAoZGJudW0gPSAwOyBkYm51bSA8IG9sZF9jbHVzdGVyLmRiYXJyLm5kYnM7 IGRibnVtKyspCisJeworCQlQR3Jlc3VsdCAgICpyZXM7CisJCURiSW5mbwkgICAqYWN0aXZlX2Ri ID0gJm9sZF9jbHVzdGVyLmRiYXJyLmRic1tkYm51bV07CisJCVBHY29ubgkgICAqY29ubiA9IGNv bm5lY3RUb1NlcnZlcigmb2xkX2NsdXN0ZXIsIGFjdGl2ZV9kYi0+ZGJfbmFtZSk7CisKKwkJcmVz ID0gZXhlY3V0ZVF1ZXJ5T3JEaWUoY29ubiwgIlNFTEVDVCBjb3VudCgqKSBmcm9tIHBnX2xhcmdl b2JqZWN0X21ldGFkYXRhIik7CisJCXN0YXRzLT5sYXJnZV9vYmplY3RzW2RibnVtXSA9IGF0b2xs KFBRZ2V0dmFsdWUocmVzLCAwLCAwKSk7CisJCVBRY2xlYXIocmVzKTsKKwkJUFFmaW5pc2goY29u bik7CisJfQorCWNoZWNrX29rKCk7CisKKwlyZXR1cm4gc3RhdHM7Cit9CiAKIHZvaWQKIGNoZWNr X25ld19jbHVzdGVyKHZvaWQpCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBn cmFkZS5jIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuYwppbmRleCAzOTYwYWY0MDM2 Li4xMjYwNTIwMGI1IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5j CisrKyBiL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmMKQEAgLTU0LDcgKzU0LDggQEAK IHN0YXRpYyB2b2lkIHNldF9sb2NhbGVfYW5kX2VuY29kaW5nKHZvaWQpOwogc3RhdGljIHZvaWQg cHJlcGFyZV9uZXdfY2x1c3Rlcih2b2lkKTsKIHN0YXRpYyB2b2lkIHByZXBhcmVfbmV3X2dsb2Jh bHModm9pZCk7Ci1zdGF0aWMgdm9pZCBjcmVhdGVfbmV3X29iamVjdHModm9pZCk7CitzdGF0aWMg dm9pZCByZXN0b3JlX2RicyhEYkR1bXBTdGF0cyAqc3RhdHMsIGJvb2wgcGFyYWxsZWxfcmVzdG9y ZSk7CitzdGF0aWMgdm9pZCBjcmVhdGVfbmV3X29iamVjdHMoRGJEdW1wU3RhdHMgKnN0YXRzKTsK IHN0YXRpYyB2b2lkIGNvcHlfeGFjdF94bG9nX3hpZCh2b2lkKTsKIHN0YXRpYyB2b2lkIHNldF9m cm96ZW54aWRzKGJvb2wgbWlubXhpZF9vbmx5KTsKIHN0YXRpYyB2b2lkIG1ha2Vfb3V0cHV0ZGly cyhjaGFyICpwZ2RhdGEpOwpAQCAtODIsNiArODMsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoq YXJndikKIHsKIAljaGFyCSAgICpkZWxldGlvbl9zY3JpcHRfZmlsZV9uYW1lID0gTlVMTDsKIAli b29sCQlsaXZlX2NoZWNrID0gZmFsc2U7CisJRGJEdW1wU3RhdHMgKnN0YXRzOwogCiAJLyoKIAkg KiBwZ191cGdyYWRlIGRvZXNuJ3QgY3VycmVudGx5IHVzZSBjb21tb24vbG9nZ2luZy5jLCBidXQg aW5pdGlhbGl6ZSBpdApAQCAtMTI3LDcgKzEyOSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQogCiAJY2hlY2tfY2x1c3Rlcl9jb21wYXRpYmlsaXR5KGxpdmVfY2hlY2spOwogCi0JY2hl Y2tfYW5kX2R1bXBfb2xkX2NsdXN0ZXIobGl2ZV9jaGVjayk7CisJY2hlY2tfYW5kX2R1bXBfb2xk X2NsdXN0ZXIobGl2ZV9jaGVjaywgJnN0YXRzKTsKIAogCiAJLyogLS0gTkVXIC0tICovCkBAIC0x NjAsNyArMTYyLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKIAlwcmVwYXJlX25l d19nbG9iYWxzKCk7CiAKLQljcmVhdGVfbmV3X29iamVjdHMoKTsKKwljcmVhdGVfbmV3X29iamVj dHMoc3RhdHMpOwogCiAJc3RvcF9wb3N0bWFzdGVyKGZhbHNlKTsKIApAQCAtNTA4LDkgKzUxMCw3 MiBAQCBwcmVwYXJlX25ld19nbG9iYWxzKHZvaWQpCiAJY2hlY2tfb2soKTsKIH0KIAorc3RhdGlj IHZvaWQKK3Jlc3RvcmVfZGJzKERiRHVtcFN0YXRzICpzdGF0cywgYm9vbCBwYXJhbGxlbF9yZXN0 b3JlKQoreworCWludAkJCWRibnVtOworCWZvciAoZGJudW0gPSAwOyBkYm51bSA8IG9sZF9jbHVz dGVyLmRiYXJyLm5kYnM7IGRibnVtKyspCisJeworCQljaGFyCQlzcWxfZmlsZV9uYW1lW01BWFBH UEFUSF0sCisJCQkJCWxvZ19maWxlX25hbWVbTUFYUEdQQVRIXTsKKwkJRGJJbmZvCSAgICpvbGRf ZGIgPSAmb2xkX2NsdXN0ZXIuZGJhcnIuZGJzW2RibnVtXTsKKwkJY29uc3QgY2hhciAqY3JlYXRl X29wdHM7CisJCWludCBqb2JzID0gdXNlcl9vcHRzLmpvYnMgPyB1c2VyX29wdHMuam9icyA6IDEg OworCQlib29sIGxhcmdlX29iamVjdHNfdGhyZXNvbGRfYnJlYWNoZWQgPSBzdGF0cyAmJiBzdGF0 cy0+bGFyZ2Vfb2JqZWN0c1tkYm51bV0gPiBMQVJHRV9PQkpFQ1RTX1RIUkVTT0xEOworCisJCS8q IFNraXAgdGVtcGxhdGUxIGluIHRoaXMgcGFzcyAqLworCQlpZiAoc3RyY21wKG9sZF9kYi0+ZGJf bmFtZSwgInRlbXBsYXRlMSIpID09IDApCisJCQljb250aW51ZTsKKwkJLyogU2tpcCBkYnMgd2hl cmUgTEFSR0VfT0JKRUNUU19USFJFU09MRCBpcyBicmVhY2hlZCBhbmQgcGFyYWxsZWxfcmVzdG9y ZSBpcyBlbmFibGVkKi8KKwkJaWYgKGxhcmdlX29iamVjdHNfdGhyZXNvbGRfYnJlYWNoZWQgJiYg cGFyYWxsZWxfcmVzdG9yZSkKKwkJCWNvbnRpbnVlOworCisJCXBnX2xvZyhQR19TVEFUVVMsICIl cyIsIG9sZF9kYi0+ZGJfbmFtZSk7CisJCXNucHJpbnRmKHNxbF9maWxlX25hbWUsIHNpemVvZihz cWxfZmlsZV9uYW1lKSwgREJfRFVNUF9GSUxFX01BU0ssIG9sZF9kYi0+ZGJfb2lkKTsKKwkJc25w cmludGYobG9nX2ZpbGVfbmFtZSwgc2l6ZW9mKGxvZ19maWxlX25hbWUpLCBEQl9EVU1QX0xPR19G SUxFX01BU0ssIG9sZF9kYi0+ZGJfb2lkKTsKKworCQkvKgorCQkgKiBwb3N0Z3JlcyBkYXRhYmFz ZSB3aWxsIGFscmVhZHkgZXhpc3QgaW4gdGhlIHRhcmdldCBpbnN0YWxsYXRpb24sIHNvCisJCSAq IHRlbGwgcGdfcmVzdG9yZSB0byBkcm9wIGFuZCByZWNyZWF0ZSBpdDsgb3RoZXJ3aXNlIHdlIHdv dWxkIGZhaWwgdG8KKwkJICogcHJvcGFnYXRlIGl0cyBkYXRhYmFzZS1sZXZlbCBwcm9wZXJ0aWVz LgorCQkgKi8KKwkJaWYgKHN0cmNtcChvbGRfZGItPmRiX25hbWUsICJwb3N0Z3JlcyIpID09IDAp CisJCQljcmVhdGVfb3B0cyA9ICItLWNsZWFuIC0tY3JlYXRlIjsKKwkJZWxzZQorCQkJY3JlYXRl X29wdHMgPSAiLS1jcmVhdGUiOworCisJCWlmIChwYXJhbGxlbF9yZXN0b3JlKQorCQkJcGFyYWxs ZWxfZXhlY19wcm9nKGxvZ19maWxlX25hbWUsCisJCQkJCQkJICAgTlVMTCwKKwkJCQkJCQkgICAi XCIlcy9wZ19yZXN0b3JlXCIgJXMgJXMgLS1leGl0LW9uLWVycm9yIC0tdmVyYm9zZSAiCisJCQkJ CQkJICAgIi0tZGJuYW1lIHRlbXBsYXRlMSBcIiVzLyVzXCIiLAorCQkJCQkJCSAgIG5ld19jbHVz dGVyLmJpbmRpciwKKwkJCQkJCQkgICBjbHVzdGVyX2Nvbm5fb3B0cygmbmV3X2NsdXN0ZXIpLAor CQkJCQkJCSAgIGNyZWF0ZV9vcHRzLAorCQkJCQkJCSAgIGxvZ19vcHRzLmR1bXBkaXIsCisJCQkJ CQkJICAgc3FsX2ZpbGVfbmFtZSk7CisJCWVsc2UKKwkJCWV4ZWNfcHJvZyhsb2dfZmlsZV9uYW1l LAorCQkJCQkJCSAgIE5VTEwsCisJCQkJCQkJICAgdHJ1ZSwKKwkJCQkJCQkgICB0cnVlLAorCQkJ CQkJCSAgICJcIiVzL3BnX3Jlc3RvcmVcIiAlcyAlcyAtLWV4aXQtb24tZXJyb3IgLS12ZXJib3Nl ICIKKwkJCQkJICAJCSAgICItLXJlc3RvcmUtYmxvYi1iYXRjaC1zaXplICVkIC0tam9icyAlZCAi CisJCQkJCQkJICAgIi0tZGJuYW1lIHRlbXBsYXRlMSBcIiVzLyVzXCIiLAorCQkJCQkJCSAgIG5l d19jbHVzdGVyLmJpbmRpciwKKwkJCQkJCQkgICBjbHVzdGVyX2Nvbm5fb3B0cygmbmV3X2NsdXN0 ZXIpLAorCQkJCQkJCSAgIGNyZWF0ZV9vcHRzLAorCQkJCQkgIAkJICAgbGFyZ2Vfb2JqZWN0c190 aHJlc29sZF9icmVhY2hlZCA/CisJCQkJCQkJCUxBUkdFX09CSkVDVFNfVEhSRVNPTEQgOiAwLAor CQkJCSAgCQkJICAgbGFyZ2Vfb2JqZWN0c190aHJlc29sZF9icmVhY2hlZCA/CisJCQkJICAJCQkJ am9icyA6IDEsCisJCQkJCQkJICAgbG9nX29wdHMuZHVtcGRpciwKKwkJCQkJCQkgICBzcWxfZmls ZV9uYW1lKTsKKwl9Cit9CiAKIHN0YXRpYyB2b2lkCi1jcmVhdGVfbmV3X29iamVjdHModm9pZCkK K2NyZWF0ZV9uZXdfb2JqZWN0cyhEYkR1bXBTdGF0cyAqc3RhdHMpCiB7CiAJaW50CQkJZGJudW07 CiAKQEAgLTU1Nyw0MyArNjIyLDEzIEBAIGNyZWF0ZV9uZXdfb2JqZWN0cyh2b2lkKQogCiAJCWJy ZWFrOwkJCQkJLyogZG9uZSBvbmNlIHdlJ3ZlIHByb2Nlc3NlZCB0ZW1wbGF0ZTEgKi8KIAl9Ci0K LQlmb3IgKGRibnVtID0gMDsgZGJudW0gPCBvbGRfY2x1c3Rlci5kYmFyci5uZGJzOyBkYm51bSsr KQotCXsKLQkJY2hhcgkJc3FsX2ZpbGVfbmFtZVtNQVhQR1BBVEhdLAotCQkJCQlsb2dfZmlsZV9u YW1lW01BWFBHUEFUSF07Ci0JCURiSW5mbwkgICAqb2xkX2RiID0gJm9sZF9jbHVzdGVyLmRiYXJy LmRic1tkYm51bV07Ci0JCWNvbnN0IGNoYXIgKmNyZWF0ZV9vcHRzOwotCi0JCS8qIFNraXAgdGVt cGxhdGUxIGluIHRoaXMgcGFzcyAqLwotCQlpZiAoc3RyY21wKG9sZF9kYi0+ZGJfbmFtZSwgInRl bXBsYXRlMSIpID09IDApCi0JCQljb250aW51ZTsKLQotCQlwZ19sb2coUEdfU1RBVFVTLCAiJXMi LCBvbGRfZGItPmRiX25hbWUpOwotCQlzbnByaW50ZihzcWxfZmlsZV9uYW1lLCBzaXplb2Yoc3Fs X2ZpbGVfbmFtZSksIERCX0RVTVBfRklMRV9NQVNLLCBvbGRfZGItPmRiX29pZCk7Ci0JCXNucHJp bnRmKGxvZ19maWxlX25hbWUsIHNpemVvZihsb2dfZmlsZV9uYW1lKSwgREJfRFVNUF9MT0dfRklM RV9NQVNLLCBvbGRfZGItPmRiX29pZCk7Ci0KLQkJLyoKLQkJICogcG9zdGdyZXMgZGF0YWJhc2Ug d2lsbCBhbHJlYWR5IGV4aXN0IGluIHRoZSB0YXJnZXQgaW5zdGFsbGF0aW9uLCBzbwotCQkgKiB0 ZWxsIHBnX3Jlc3RvcmUgdG8gZHJvcCBhbmQgcmVjcmVhdGUgaXQ7IG90aGVyd2lzZSB3ZSB3b3Vs ZCBmYWlsIHRvCi0JCSAqIHByb3BhZ2F0ZSBpdHMgZGF0YWJhc2UtbGV2ZWwgcHJvcGVydGllcy4K LQkJICovCi0JCWlmIChzdHJjbXAob2xkX2RiLT5kYl9uYW1lLCAicG9zdGdyZXMiKSA9PSAwKQot CQkJY3JlYXRlX29wdHMgPSAiLS1jbGVhbiAtLWNyZWF0ZSI7Ci0JCWVsc2UKLQkJCWNyZWF0ZV9v cHRzID0gIi0tY3JlYXRlIjsKLQotCQlwYXJhbGxlbF9leGVjX3Byb2cobG9nX2ZpbGVfbmFtZSwK LQkJCQkJCSAgIE5VTEwsCi0JCQkJCQkgICAiXCIlcy9wZ19yZXN0b3JlXCIgJXMgJXMgLS1leGl0 LW9uLWVycm9yIC0tdmVyYm9zZSAiCi0JCQkJCQkgICAiLS1kYm5hbWUgdGVtcGxhdGUxIFwiJXMv JXNcIiIsCi0JCQkJCQkgICBuZXdfY2x1c3Rlci5iaW5kaXIsCi0JCQkJCQkgICBjbHVzdGVyX2Nv bm5fb3B0cygmbmV3X2NsdXN0ZXIpLAotCQkJCQkJICAgY3JlYXRlX29wdHMsCi0JCQkJCQkgICBs b2dfb3B0cy5kdW1wZGlyLAotCQkJCQkJICAgc3FsX2ZpbGVfbmFtZSk7Ci0JfQotCisJLyogIFJl c3RvcmUgYWxsIHRoZSBkYnMgd2hlcmUgTEFSR0VfT0JKRUNUU19USFJFU09MRCBpcyBub3QgYnJl YWNoZWQgKi8KKwlyZXN0b3JlX2RicyhzdGF0cywgdHJ1ZSk7CisJLyogcmVhcCBhbGwgY2hpbGRy ZW4gKi8KKwl3aGlsZSAocmVhcF9jaGlsZCh0cnVlKSA9PSB0cnVlKQorCQk7CisJLyogIFJlc3Rv cmUgcmVzdCBvZiB0aGUgZGJzIG9uZSBieSBvbmUgIHdpdGggcGdfcmVzdG9yZSAtLWpvYnMgPSB1 c2VyX29wdHMuam9icyAqLworCXJlc3RvcmVfZGJzKHN0YXRzLCBmYWxzZSk7CiAJLyogcmVhcCBh bGwgY2hpbGRyZW4gKi8KIAl3aGlsZSAocmVhcF9jaGlsZCh0cnVlKSA9PSB0cnVlKQogCQk7CmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oIGIvc3JjL2Jpbi9wZ191 cGdyYWRlL3BnX3VwZ3JhZGUuaAppbmRleCBhNzEwZjMyNWRlLi5mNDEwNjNkYmM3IDEwMDY0NAot LS0gYS9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oCisrKyBiL3NyYy9iaW4vcGdfdXBn cmFkZS9wZ191cGdyYWRlLmgKQEAgLTI0LDYgKzI0LDggQEAKIAogI2RlZmluZSBNRVNTQUdFX1dJ RFRICQk2MgogCisjZGVmaW5lIExBUkdFX09CSkVDVFNfVEhSRVNPTEQgMjAwIC8vIG1heWJlIDEw ayA/IAorCiAjZGVmaW5lIEdFVF9NQUpPUl9WRVJTSU9OKHYpCSgodikgLyAxMDApCiAKIC8qIGNv bnRhaW5zIGJvdGggZ2xvYmFsIGRiIGluZm9ybWF0aW9uIGFuZCBDUkVBVEUgREFUQUJBU0UgY29t bWFuZHMgKi8KQEAgLTM0Nyw2ICszNDksMTUgQEAgdHlwZWRlZiBzdHJ1Y3QKIAlDbHVzdGVySW5m byAqcnVubmluZ19jbHVzdGVyOwogfSBPU0luZm87CiAKKy8qCisgKiBEdW1wIHN0YXRzLCB3aWxs IGJlIHVzZWQgYnkgcGdfdXBncmFkZSB0byBlZmZpY2VudGx5IHJ1biBwZ19yZXN0b3JlIAorICov CisKK3R5cGVkZWYgc3RydWN0Cit7CisJdWludDY0ICpsYXJnZV9vYmplY3RzOworfURiRHVtcFN0 YXRzOworCiAKIC8qCiAgKiBHbG9iYWwgdmFyaWFibGVzCkBAIC0zNjEsNyArMzcyLDcgQEAgZXh0 ZXJuIE9TSW5mbyBvc19pbmZvOwogLyogY2hlY2suYyAqLwogCiB2b2lkCQlvdXRwdXRfY2hlY2tf YmFubmVyKGJvb2wgbGl2ZV9jaGVjayk7Ci12b2lkCQljaGVja19hbmRfZHVtcF9vbGRfY2x1c3Rl cihib29sIGxpdmVfY2hlY2spOwordm9pZAkJY2hlY2tfYW5kX2R1bXBfb2xkX2NsdXN0ZXIoYm9v bCBsaXZlX2NoZWNrLCBEYkR1bXBTdGF0cyAqKnN0YXRzKTsKIHZvaWQJCWNoZWNrX25ld19jbHVz dGVyKHZvaWQpOwogdm9pZAkJcmVwb3J0X2NsdXN0ZXJzX2NvbXBhdGlibGUodm9pZCk7CiB2b2lk CQlpc3N1ZV93YXJuaW5nc19hbmRfc2V0X3dhbF9sZXZlbCh2b2lkKTsKQEAgLTM2OSw2ICszODAs NyBAQCB2b2lkCQlvdXRwdXRfY29tcGxldGlvbl9iYW5uZXIoY2hhciAqZGVsZXRpb25fc2NyaXB0 X2ZpbGVfbmFtZSk7CiB2b2lkCQljaGVja19jbHVzdGVyX3ZlcnNpb25zKHZvaWQpOwogdm9pZAkJ Y2hlY2tfY2x1c3Rlcl9jb21wYXRpYmlsaXR5KGJvb2wgbGl2ZV9jaGVjayk7CiB2b2lkCQljcmVh dGVfc2NyaXB0X2Zvcl9vbGRfY2x1c3Rlcl9kZWxldGlvbihjaGFyICoqZGVsZXRpb25fc2NyaXB0 X2ZpbGVfbmFtZSk7CitEYkR1bXBTdGF0cyogY29sbGVjdF9kYl9zdGF0cyh2b2lkKTsKIAogCiAv KiBjb250cm9sZGF0YS5jICovCg== --_002_83D44BE500884D418AE620A05D026F46amazoncom_--