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.96) (envelope-from ) id 1vTTj7-002ihc-0r for pgsql-hackers@arkaria.postgresql.org; Wed, 10 Dec 2025 23:36:10 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vTTj6-001avf-0C for pgsql-hackers@arkaria.postgresql.org; Wed, 10 Dec 2025 23:36:08 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vTTj5-001avX-08 for pgsql-hackers@lists.postgresql.org; Wed, 10 Dec 2025 23:36:08 +0000 Received: from mail-ed1-x52a.google.com ([2a00:1450:4864:20::52a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vTTj2-0003HB-27 for pgsql-hackers@lists.postgresql.org; Wed, 10 Dec 2025 23:36:06 +0000 Received: by mail-ed1-x52a.google.com with SMTP id 4fb4d7f45d1cf-63c489f1e6cso600466a12.1 for ; Wed, 10 Dec 2025 15:36:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765409761; x=1766014561; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=UaemOTdKV6IQvgoR83VAIjj4SV2tQRE8AaRVOL1pCCA=; b=gEoR4aEmfxLZcytbkgVWInmvTCgjxRSnwajSEl4+6PXb+Mn9QGYzEX1X/FLdPOuxCP KejFhsK9aqpzOAQIaydbQixhkeDhhs5qxny0E+Sq649jnSL43+9VFKQodPkrGG1uk1Oh bpJM1Jb4W7eI+FjM1dpMHHsc7xq1PJRTS9YfAgefDpQQnPwyUSwC7LsRDyIuyWwSHAPY tAsl5CFrf9Q+JnQJDTrStzdqQ1eHNTQT3jK6dm7LgkOUdPSQFqKuz59aQ2u5gNTtOLAt aHSViunS5bTAutWSBVukqeYtjGrpGsYgiqGHE+k9EPwWt+5+08mgj/YWuyWy1cazdFmb 4yrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765409761; x=1766014561; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=UaemOTdKV6IQvgoR83VAIjj4SV2tQRE8AaRVOL1pCCA=; b=havjKLFS8ldOFZWjUkLhgT507PhcKgErO+3mYcSb9v7VHwejdzjm/bBQDu9jC+Nbe9 QOmlvmZLXXGdqHt8pkWtvK3jlcxklg3AOldJlxmS6I/9BEM2m2Utcp0k2F/uW+5GEM2j Slr7ZrFLsdU+MlbZmgikBmejgJRrI4S1z09TX3RuJieQecMHePhpBO5T1V5QKM53B7mB JCBQOGLldVXaDrmcKbVF+k1D4LD7O2FKmlvEhSdY6BFOY3X/HTjIkrfwZ6T3bjUE9Wuh y9soPvrkf0j7kTFQrFAM+rT6aR6JQTEJ8Q06cKLPpamn7kPLHBHNERzgptpoJ+AEowTd dKVQ== X-Forwarded-Encrypted: i=1; AJvYcCUjXmobhs1rRK9DjzcG4/2kIj1Gb3Z95b9lIERdKexJwWmJYcLTpwE9lNx8tBB5IBIyYTDFHEW43evmV3m3@lists.postgresql.org X-Gm-Message-State: AOJu0YzLV3fzNLadpaegdh67qVM7rOICFfHekkqakWIsw79vZceo3Uan 65lnsJlPWOMvRtRrhfj1Jvav+ELHFkDIPzyy+GyL2gdY1OIFWZk+T5wuuFHM/njvBGfF4BzEYX/ 1traqLDEVzFctzFFcZpNcWoJ2vPRJCkY= X-Gm-Gg: AY/fxX4sVAAnLaUJrGdkVDBVl3hO20dvwig9/vVvhTvdyZWePJlbHcEx3K2cIHeRdwe 9UJi3+ejHEWhCFKflWRaC/UbagxM4wqIcfV2E4RoFgoJgwgBRfFkE3zMo6qdExTWARe/1aF54+0 ed0BdOX76bdFXrXQ1CGNbWvs46EO/O1aTixHd0fuWxKGk8nY9NlCfb+L5+XFyQiSg+fpE3Ud8al xuyv/ag0lBxuhufk4C7IOrThRyQsjSxqrCt0+mwhmsA9XBK8QuTsO25d3aTsb0CDejPLX/Q X-Google-Smtp-Source: AGHT+IEltTslJ4i5EZXrJ/4l1lqTZXGkTYHVVAQLTxxB057ePULXlNtiZcQWy0mYqk9GUJDNq6x9qDK3LJNKJrzNws0= X-Received: by 2002:a05:6402:318c:b0:640:aae6:adc5 with SMTP id 4fb4d7f45d1cf-649874487ebmr102602a12.4.1765409761086; Wed, 10 Dec 2025 15:36:01 -0800 (PST) MIME-Version: 1.0 References: <2wk7jo4m4qwh5sn33pfgerdjfujebbccsmmlownybddbh6nawl@mdyyqpqzxjek> <9B2211B5-14B4-4C22-96BD-F7B32E577DB6@gmail.com> In-Reply-To: From: Melanie Plageman Date: Wed, 10 Dec 2025 18:35:47 -0500 X-Gm-Features: AQt7F2p56Vfyw2fIRI0HwRNSyFVLjGzHOWEPIIa9OZ--MWKDkpCM8lR8Hb5QF7c Message-ID: Subject: Re: eliminate xl_heap_visible to reduce WAL (and eventually set VM on-access) To: Chao Li Cc: Andres Freund , Kirill Reshke , Robert Haas , Andrey Borodin , PostgreSQL Hackers , Heikki Linnakangas Content-Type: multipart/mixed; boundary="000000000000b196150645a17d5e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000b196150645a17d5e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Dec 9, 2025 at 12:48=E2=80=AFPM Melanie Plageman wrote: > > In this set 0001 and 0002 are independent. 0003-0007 are all small > steps toward the single change in 0007 which combines the VM updates > into the same WAL record as pruning and freezing. 0008 and 0009 are > removing the rest of XLOG_HEAP2_VISIBLE. 0010 - 0012 are refactoring > needed to set the VM during on-access pruning. 0013 - 0015 are small > steps toward setting the VM on-access. And 0016 sets the prune xid on > insert so we may set the VM on-access for pages that have only new > data. I committed 0001 and 0002. attached v25 reflects that. 0001-0004 refactoring steps for eliminate visible record from phase I (not probably independent commits in the end) 0005 eliminate XLOG_HEAP2_VISIBLE from phase I vac 0006-0007 removing the rest of XLOG_HEAP2_VISIBLE 0008-0010 refactoring for setting VM on-access 0011-0013 setting the VM on-access 0014 - setting pd_prune_xid on insert - Melanie --000000000000b196150645a17d5e Content-Type: application/x-patch; name="v25-0001-Combine-visibilitymap_set-cases-in-lazy_scan_pru.patch" Content-Disposition: attachment; filename="v25-0001-Combine-visibilitymap_set-cases-in-lazy_scan_pru.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj0m7g830 RnJvbSAwODYzYzVkYjU2ZDhmNjJjZjUyNWU4Yjk4YWI3MTI0NWUyN2MxN2E2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDggRGVjIDIwMjUgMTU6NDk6NTQgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyNSAwMS8xNF0gQ29tYmluZSB2aXNpYmlsaXR5bWFwX3NldCgpIGNhc2VzIGluCiBsYXp5 X3NjYW5fcHJ1bmUoKQoKVGhlIGhlYXAgYnVmZmVyIGlzIHVuY29uZGl0aW9uYWxseSBhZGRlZCB0 byB0aGUgV0FMIGNoYWluIHdoZW4gc2V0dGluZwp0aGUgVk0sIHNvIGl0IG11c3QgYWx3YXlzIGJl IG1hcmtlZCBkaXJ0eS4KCkluIG9uZSBvZiB0aGUgY2FzZXMgaW4gbGF6eV9zY2FuX3BydW5lKCks IHdlIHRyeSB0byBhdm9pZCBzZXR0aW5nClBEX0FMTF9WSVNJQkxFIGFuZCBtYXJraW5nIHRoZSBi dWZmZXIgZGlydHkgYWdhaW4gaWYgUERfQUxMX1ZJU0lCTEUgaXMKYWxyZWFkeSBzZXQuIFRoZXJl IGlzIGxpdHRsZSBnYWluIGhlcmUsIGFuZCBpZiB3ZSBlbGltaW5hdGUgdGhhdApjb25kaXRpb24s IHdlIGNhbiBlYXNpbHkgY29tYmluZSB0aGUgdHdvIGNhc2VzIHdoaWNoIHNldCB0aGUgVk0gaW4K bGF6eV9zY2FuX3BydW5lKCkuIFRoaXMgaXMgbW9yZSBzdHJhaWdodGZvcndhcmQgYW5kIG1ha2Vz IGl0IGNsZWFyIHRoYXQKdGhlIGhlYXAgYnVmZmVyIG11c3QgYmUgbWFya2VkIGRpcnR5IHNpbmNl IGl0IGlzIGFkZGVkIHRvIHRoZSBXQUwgY2hhaW4uCgpJbiB0aGUgcHJldmlvdXNseSBzZXBhcmF0 ZSBzZWNvbmQgVk0gc2V0IGNhc2UsIHRoZSBoZWFwIGJ1ZmZlciB3b3VsZAphbHdheXMgYmUgZGly dHkgYW55d2F5IC0tIGVpdGhlciBiZWNhdXNlIHdlIGp1c3QgZnJvemUgYSB0dXBsZSBhbmQKbWFy a2VkIHRoZSBidWZmZXIgZGlydHkgb3IgYmVjYXVzZSB3ZSBtb2RpZmllZCB0aGUgYnVmZmVyIGJl dHdlZW4KZmluZF9uZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrKCkgYW5kIGhlYXBfcGFnZV9wcnVuZV9h bmRfZnJlZXplKCkgYW5kIHRoZW4KcHJ1bmVkIGl0IGluIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJl ZXplKCkuCgpUaGlzIGNvbW1pdCBhbHNvIGFkZHMgYSB0ZXN0IGNhc2UgZm9yIHZhY3V1bSB3aGVu IGl0IGRvZXMgbm90IG5lZWQKdG8gbW9kaWZ5IHRoZSBoZWFwIHBhZ2UuIEN1cnJlbnRseSB0aGF0 IHdvdWxkIGVuc3VyZSB0aGUgaGVhcCBidWZmZXIgaXMKbWFya2VkIGRpcnR5IGJlZm9yZSBhZGRp bmcgaXQgdG8gdGhlIFdBTCBjaGFpbiwgYnV0IGlmIHdlIGV2ZXIgcmVtb3ZlIGl0CmZyb20gdGhl IFZNIHNldCBXQUwgY2hhaW4gb3IgcGFzcyBpdCB3aXRoIFJFR0JVRl9OT19DSEFOR0VTLCBpdCB3 b3VsZAphbHNvIHNlcnZlIGFzIGNvdmVyYWdlIG9mIHRoYXQuCi0tLQogLi4uL3BnX3Zpc2liaWxp dHkvZXhwZWN0ZWQvcGdfdmlzaWJpbGl0eS5vdXQgIHwgMTcgKysrKwogY29udHJpYi9wZ192aXNp YmlsaXR5L3NxbC9wZ192aXNpYmlsaXR5LnNxbCAgIHwgMTMgKysrCiBzcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMgICAgICAgICAgfCA5MSArKysrLS0tLS0tLS0tLS0tLS0tCiAz IGZpbGVzIGNoYW5nZWQsIDQ4IGluc2VydGlvbnMoKyksIDczIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2NvbnRyaWIvcGdfdmlzaWJpbGl0eS9leHBlY3RlZC9wZ192aXNpYmlsaXR5Lm91dCBi L2NvbnRyaWIvcGdfdmlzaWJpbGl0eS9leHBlY3RlZC9wZ192aXNpYmlsaXR5Lm91dAppbmRleCAw OWZhNTkzM2EzNS4uMzYwOGY4MDFlZWUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfdmlzaWJpbGl0 eS9leHBlY3RlZC9wZ192aXNpYmlsaXR5Lm91dAorKysgYi9jb250cmliL3BnX3Zpc2liaWxpdHkv ZXhwZWN0ZWQvcGdfdmlzaWJpbGl0eS5vdXQKQEAgLTIwNCw2ICsyMDQsMjMgQEAgc2VsZWN0IHBn X3RydW5jYXRlX3Zpc2liaWxpdHlfbWFwKCd0ZXN0X3BhcnRpdGlvbicpOwogIAogKDEgcm93KQog CistLSB0ZXN0IHRoZSBjYXNlIHdoZXJlIHZhY3V1bSBwaGFzZSBJIGRvZXMgbm90IG5lZWQgdG8g bW9kaWZ5IHRoZSBoZWFwIGJ1ZmZlcgorLS0gYW5kIG9ubHkgbmVlZHMgdG8gc2V0IHRoZSBWTQor Y3JlYXRlIHRhYmxlIHRlc3RfdmFjX3VubW9kaWZpZWRfaGVhcChhIGludCk7CitpbnNlcnQgaW50 byB0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXAgdmFsdWVzICgxKTsKK3ZhY3V1bSAoZnJlZXplKSB0 ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXA7CistLSB0aGUgY2hlY2twb2ludCBjbGVhbnMgdGhlIGJ1 ZmZlciBkaXJ0aWVkIGJ5IGZyZWV6aW5nIHRoZSBzb2xlIHR1cGxlCitjaGVja3BvaW50OworLS0g dHJ1bmNhdGluZyB0aGUgVk0gZW5zdXJlcyB0aGF0IHRoZSBuZXh0IHZhY3V1bSB3aWxsIG5lZWQg dG8gc2V0IGl0CitzZWxlY3QgcGdfdHJ1bmNhdGVfdmlzaWJpbGl0eV9tYXAoJ3Rlc3RfdmFjX3Vu bW9kaWZpZWRfaGVhcCcpOworIHBnX3RydW5jYXRlX3Zpc2liaWxpdHlfbWFwIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSB2YWN1dW0gc2V0cyB0aGUgVk0g YnV0IGRvZXMgbm90IG5lZWQgdG8gc2V0IFBEX0FMTF9WSVNJQkxFIHNvIG5vIGhlYXAgcGFnZQor LS0gbW9kaWZpY2F0aW9uCit2YWN1dW0gdGVzdF92YWNfdW5tb2RpZmllZF9oZWFwOwogLS0gdGVz dCBjb3B5IGZyZWV6ZQogY3JlYXRlIHRhYmxlIGNvcHlmcmVlemUgKGEgaW50LCBiIGNoYXIoMTUw MCkpOwogLS0gbG9hZCBhbGwgcm93cyB2aWEgQ09QWSBGUkVFWkUgYW5kIGVuc3VyZSB0aGF0IGFs bCBwYWdlcyBhcmUgc2V0IGFsbC12aXNpYmxlCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3Zpc2li aWxpdHkvc3FsL3BnX3Zpc2liaWxpdHkuc3FsIGIvY29udHJpYi9wZ192aXNpYmlsaXR5L3NxbC9w Z192aXNpYmlsaXR5LnNxbAppbmRleCA1YWYwNmVjNWI3Ni4uNmFmN2MxNzlkZjAgMTAwNjQ0Ci0t LSBhL2NvbnRyaWIvcGdfdmlzaWJpbGl0eS9zcWwvcGdfdmlzaWJpbGl0eS5zcWwKKysrIGIvY29u dHJpYi9wZ192aXNpYmlsaXR5L3NxbC9wZ192aXNpYmlsaXR5LnNxbApAQCAtOTQsNiArOTQsMTkg QEAgc2VsZWN0IGNvdW50KCopID4gMCBmcm9tIHBnX3Zpc2liaWxpdHlfbWFwX3N1bW1hcnkoJ3Rl c3RfcGFydGl0aW9uJyk7CiBzZWxlY3QgKiBmcm9tIHBnX2NoZWNrX2Zyb3plbigndGVzdF9wYXJ0 aXRpb24nKTsgLS0gaG9wZWZ1bGx5IG5vbmUKIHNlbGVjdCBwZ190cnVuY2F0ZV92aXNpYmlsaXR5 X21hcCgndGVzdF9wYXJ0aXRpb24nKTsKIAorLS0gdGVzdCB0aGUgY2FzZSB3aGVyZSB2YWN1dW0g cGhhc2UgSSBkb2VzIG5vdCBuZWVkIHRvIG1vZGlmeSB0aGUgaGVhcCBidWZmZXIKKy0tIGFuZCBv bmx5IG5lZWRzIHRvIHNldCB0aGUgVk0KK2NyZWF0ZSB0YWJsZSB0ZXN0X3ZhY191bm1vZGlmaWVk X2hlYXAoYSBpbnQpOworaW5zZXJ0IGludG8gdGVzdF92YWNfdW5tb2RpZmllZF9oZWFwIHZhbHVl cyAoMSk7Cit2YWN1dW0gKGZyZWV6ZSkgdGVzdF92YWNfdW5tb2RpZmllZF9oZWFwOworLS0gdGhl IGNoZWNrcG9pbnQgY2xlYW5zIHRoZSBidWZmZXIgZGlydGllZCBieSBmcmVlemluZyB0aGUgc29s ZSB0dXBsZQorY2hlY2twb2ludDsKKy0tIHRydW5jYXRpbmcgdGhlIFZNIGVuc3VyZXMgdGhhdCB0 aGUgbmV4dCB2YWN1dW0gd2lsbCBuZWVkIHRvIHNldCBpdAorc2VsZWN0IHBnX3RydW5jYXRlX3Zp c2liaWxpdHlfbWFwKCd0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXAnKTsKKy0tIHZhY3V1bSBzZXRz IHRoZSBWTSBidXQgZG9lcyBub3QgbmVlZCB0byBzZXQgUERfQUxMX1ZJU0lCTEUgc28gbm8gaGVh cCBwYWdlCistLSBtb2RpZmljYXRpb24KK3ZhY3V1bSB0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXA7 CisKIC0tIHRlc3QgY29weSBmcmVlemUKIGNyZWF0ZSB0YWJsZSBjb3B5ZnJlZXplIChhIGludCwg YiBjaGFyKDE1MDApKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IGU4 Yzk5YzM3NzNkLi4zOGExMjY4YjAwNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YwpAQCAtMjA5NCwxNSArMjA5NCwyMSBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFj cmVsLAogCSAqIG9mIGxhc3QgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgY2FsbCksIGFuZCBm cm9tIGFsbF92aXNpYmxlIGFuZAogCSAqIGFsbF9mcm96ZW4gdmFyaWFibGVzCiAJICovCi0JaWYg KCFhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gJiYgcHJlc3VsdC5hbGxfdmlzaWJsZSkKKwlp ZiAoKHByZXN1bHQuYWxsX3Zpc2libGUgJiYgIWFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSkg fHwKKwkJKHByZXN1bHQuYWxsX2Zyb3plbiAmJiAhVk1fQUxMX0ZST1pFTihyZWwsIGJsa25vLCAm dm1idWZmZXIpKSkKIAl7CiAJCXVpbnQ4CQlvbGRfdm1iaXRzOwotCQl1aW50OAkJZmxhZ3MgPSBW SVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOworCQl1aW50OAkJbmV3X3ZtYml0cyA9IFZJU0lCSUxJ VFlNQVBfQUxMX1ZJU0lCTEU7CiAKIAkJaWYgKHByZXN1bHQuYWxsX2Zyb3plbikKIAkJeworCQkJ LyoKKwkJCSAqIFdlIGNhbiBwYXNzIEludmFsaWRUcmFuc2FjdGlvbklkIGFzIG91ciBjdXRvZmZf eGlkLCBzaW5jZSBhCisJCQkgKiBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiBzdWZmaWNpZW50IHRv IG1ha2UgZXZlcnl0aGluZyBzYWZlIGZvcgorCQkJICogUkVETyB3YXMgbG9nZ2VkIHdoZW4gdGhl IHBhZ2UncyB0dXBsZXMgd2VyZSBmcm96ZW4uCisJCQkgKi8KIAkJCUFzc2VydCghVHJhbnNhY3Rp b25JZElzVmFsaWQocHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9uKSk7Ci0JCQlmbGFncyB8PSBW SVNJQklMSVRZTUFQX0FMTF9GUk9aRU47CisJCQluZXdfdm1iaXRzIHw9IFZJU0lCSUxJVFlNQVBf QUxMX0ZST1pFTjsKIAkJfQogCiAJCS8qCkBAIC0yMTExLDM1ICsyMTE3LDMzIEBAIGxhenlfc2Nh bl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJCSAqIGNoZWNrc3VtcyBhcmUgbm90IGVuYWJs ZWQpLiAgUmVnYXJkbGVzcywgc2V0IGJvdGggYml0cyBzbyB0aGF0IHdlCiAJCSAqIGdldCBiYWNr IGluIHN5bmMuCiAJCSAqCi0JCSAqIE5COiBJZiB0aGUgaGVhcCBwYWdlIGlzIGFsbC12aXNpYmxl IGJ1dCB0aGUgVk0gYml0IGlzIG5vdCBzZXQsIHdlCi0JCSAqIGRvbid0IG5lZWQgdG8gZGlydHkg dGhlIGhlYXAgcGFnZS4gIEhvd2V2ZXIsIGlmIGNoZWNrc3VtcyBhcmUKLQkJICogZW5hYmxlZCwg d2UgZG8gbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgaGVhcCBwYWdlIGlzIGRpcnRpZWQKLQkJ ICogYmVmb3JlIHBhc3NpbmcgaXQgdG8gdmlzaWJpbGl0eW1hcF9zZXQoKSwgYmVjYXVzZSBpdCBt YXkgYmUgbG9nZ2VkLgotCQkgKiBHaXZlbiB0aGF0IHRoaXMgc2l0dWF0aW9uIHNob3VsZCBvbmx5 IGhhcHBlbiBpbiByYXJlIGNhc2VzIGFmdGVyIGEKLQkJICogY3Jhc2gsIGl0IGlzIG5vdCB3b3J0 aCBvcHRpbWl6aW5nLgorCQkgKiBUaGUgaGVhcCBwYWdlIGlzIGFkZGVkIHRvIHRoZSBXQUwgY2hh aW4gZXZlbiBpZiBpdCB3YXNuJ3QgbW9kaWZpZWQsCisJCSAqIHNvIHdlIHN0aWxsIG5lZWQgdG8g bWFyayBpdCBkaXJ0eS4gVGhlIG9ubHkgc2NlbmFyaW8gd2hlcmUgaXQgaXNuJ3QKKwkJICogbW9k aWZpZWQgaW4gcGhhc2UgSSBpcyB3aGVuIHRoZSBWTSB3YXMgdHJ1bmNhdGVkIG9yIHJlbW92ZWQs IHdoaWNoCisJCSAqIGlzbid0IHdvcnRoIG9wdGltaXppbmcgZm9yLgogCQkgKi8KIAkJUGFnZVNl dEFsbFZpc2libGUocGFnZSk7CiAJCU1hcmtCdWZmZXJEaXJ0eShidWYpOwogCQlvbGRfdm1iaXRz ID0gdmlzaWJpbGl0eW1hcF9zZXQodmFjcmVsLT5yZWwsIGJsa25vLCBidWYsCiAJCQkJCQkJCQkg ICBJbnZhbGlkWExvZ1JlY1B0ciwKIAkJCQkJCQkJCSAgIHZtYnVmZmVyLCBwcmVzdWx0LnZtX2Nv bmZsaWN0X2hvcml6b24sCi0JCQkJCQkJCQkgICBmbGFncyk7CisJCQkJCQkJCQkgICBuZXdfdm1i aXRzKTsKIAogCQkvKgotCQkgKiBJZiB0aGUgcGFnZSB3YXNuJ3QgYWxyZWFkeSBzZXQgYWxsLXZp c2libGUgYW5kL29yIGFsbC1mcm96ZW4gaW4gdGhlCi0JCSAqIFZNLCBjb3VudCBpdCBhcyBuZXds eSBzZXQgZm9yIGxvZ2dpbmcuCisJCSAqIEZvciB0aGUgcHVycG9zZXMgb2YgbG9nZ2luZywgY291 bnQgd2hldGhlciBvciBub3QgdGhlIHBhZ2Ugd2FzCisJCSAqIG5ld2x5IHNldCBhbGwtdmlzaWJs ZSBhbmQsIHBvdGVudGlhbGx5LCBhbGwtZnJvemVuLgogCQkgKi8KIAkJaWYgKChvbGRfdm1iaXRz ICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkgPT0gMCkKIAkJewogCQkJdmFjcmVsLT52bV9u ZXdfdmlzaWJsZV9wYWdlcysrOwotCQkJaWYgKHByZXN1bHQuYWxsX2Zyb3plbikKKwkJCWlmICgo bmV3X3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTikgIT0gMCkKIAkJCXsKIAkJCQl2 YWNyZWwtPnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwogCQkJCSp2bV9wYWdlX2Zyb3pl biA9IHRydWU7CiAJCQl9CiAJCX0KIAkJZWxzZSBpZiAoKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZ TUFQX0FMTF9GUk9aRU4pID09IDAgJiYKLQkJCQkgcHJlc3VsdC5hbGxfZnJvemVuKQorCQkJCSAo bmV3X3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTikgIT0gMCkKIAkJewogCQkJdmFj cmVsLT52bV9uZXdfZnJvemVuX3BhZ2VzKys7CiAJCQkqdm1fcGFnZV9mcm96ZW4gPSB0cnVlOwpA QCAtMjE5MSw2NSArMjE5NSw2IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWws CiAJCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsKIAl9CiAKLQkvKgotCSAqIElmIHRo ZSBhbGwtdmlzaWJsZSBwYWdlIGlzIGFsbC1mcm96ZW4gYnV0IG5vdCBtYXJrZWQgYXMgc3VjaCB5 ZXQsIG1hcmsKLQkgKiBpdCBhcyBhbGwtZnJvemVuLgotCSAqLwotCWVsc2UgaWYgKGFsbF92aXNp YmxlX2FjY29yZGluZ190b192bSAmJiBwcmVzdWx0LmFsbF9mcm96ZW4gJiYKLQkJCSAhVk1fQUxM X0ZST1pFTih2YWNyZWwtPnJlbCwgYmxrbm8sICZ2bWJ1ZmZlcikpCi0JewotCQl1aW50OAkJb2xk X3ZtYml0czsKLQotCQkvKgotCQkgKiBBdm9pZCByZWx5aW5nIG9uIGFsbF92aXNpYmxlX2FjY29y ZGluZ190b192bSBhcyBhIHByb3h5IGZvciB0aGUKLQkJICogcGFnZS1sZXZlbCBQRF9BTExfVklT SUJMRSBiaXQgYmVpbmcgc2V0LCBzaW5jZSBpdCBtaWdodCBoYXZlIGJlY29tZQotCQkgKiBzdGFs ZSAtLSBldmVuIHdoZW4gYWxsX3Zpc2libGUgaXMgc2V0Ci0JCSAqLwotCQlpZiAoIVBhZ2VJc0Fs bFZpc2libGUocGFnZSkpCi0JCXsKLQkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQkJTWFy a0J1ZmZlckRpcnR5KGJ1Zik7Ci0JCX0KLQotCQkvKgotCQkgKiBTZXQgdGhlIHBhZ2UgYWxsLWZy b3plbiAoYW5kIGFsbC12aXNpYmxlKSBpbiB0aGUgVk0uCi0JCSAqCi0JCSAqIFdlIGNhbiBwYXNz IEludmFsaWRUcmFuc2FjdGlvbklkIGFzIG91ciBjdXRvZmZfeGlkLCBzaW5jZSBhCi0JCSAqIHNu YXBzaG90Q29uZmxpY3RIb3Jpem9uIHN1ZmZpY2llbnQgdG8gbWFrZSBldmVyeXRoaW5nIHNhZmUg Zm9yIFJFRE8KLQkJICogd2FzIGxvZ2dlZCB3aGVuIHRoZSBwYWdlJ3MgdHVwbGVzIHdlcmUgZnJv emVuLgotCQkgKi8KLQkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChwcmVzdWx0LnZtX2Nv bmZsaWN0X2hvcml6b24pKTsKLQkJb2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBfc2V0KHZhY3Jl bC0+cmVsLCBibGtubywgYnVmLAotCQkJCQkJCQkJICAgSW52YWxpZFhMb2dSZWNQdHIsCi0JCQkJ CQkJCQkgICB2bWJ1ZmZlciwgSW52YWxpZFRyYW5zYWN0aW9uSWQsCi0JCQkJCQkJCQkgICBWSVNJ QklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKLQkJCQkJCQkJCSAgIFZJU0lCSUxJVFlNQVBfQUxMX0ZS T1pFTik7Ci0KLQkJLyoKLQkJICogVGhlIHBhZ2Ugd2FzIGxpa2VseSBhbHJlYWR5IHNldCBhbGwt dmlzaWJsZSBpbiB0aGUgVk0uIEhvd2V2ZXIsCi0JCSAqIHRoZXJlIGlzIGEgc21hbGwgY2hhbmNl IHRoYXQgaXQgd2FzIG1vZGlmaWVkIHNvbWV0aW1lIGJldHdlZW4KLQkJICogc2V0dGluZyBhbGxf dmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gYW5kIGNoZWNraW5nIHRoZSB2aXNpYmlsaXR5Ci0JCSAq IGR1cmluZyBwcnVuaW5nLiBDaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIG9sZF92bWJpdHMgYW55 d2F5IHRvCi0JCSAqIGVuc3VyZSB0aGUgdmlzaWJpbGl0eSBtYXAgY291bnRlcnMgdXNlZCBmb3Ig bG9nZ2luZyBhcmUgYWNjdXJhdGUuCi0JCSAqLwotCQlpZiAoKG9sZF92bWJpdHMgJiBWSVNJQklM SVRZTUFQX0FMTF9WSVNJQkxFKSA9PSAwKQotCQl7Ci0JCQl2YWNyZWwtPnZtX25ld192aXNpYmxl X3BhZ2VzKys7Ci0JCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwotCQkJ KnZtX3BhZ2VfZnJvemVuID0gdHJ1ZTsKLQkJfQotCi0JCS8qCi0JCSAqIFdlIGFscmVhZHkgY2hl Y2tlZCB0aGF0IHRoZSBwYWdlIHdhcyBub3Qgc2V0IGFsbC1mcm96ZW4gaW4gdGhlIFZNCi0JCSAq IGFib3ZlLCBzbyB3ZSBkb24ndCBuZWVkIHRvIHRlc3QgdGhlIHZhbHVlIG9mIG9sZF92bWJpdHMu Ci0JCSAqLwotCQllbHNlCi0JCXsKLQkJCXZhY3JlbC0+dm1fbmV3X2Zyb3plbl9wYWdlcysrOwot CQkJKnZtX3BhZ2VfZnJvemVuID0gdHJ1ZTsKLQkJfQotCX0KLQogCXJldHVybiBwcmVzdWx0Lm5k ZWxldGVkOwogfQogCi0tIAoyLjQzLjAKCg== --000000000000b196150645a17d5e Content-Type: application/x-patch; name="v25-0002-Refactor-lazy_scan_prune-VM-set-logic-into-helpe.patch" Content-Disposition: attachment; filename="v25-0002-Refactor-lazy_scan_prune-VM-set-logic-into-helpe.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj0m7j951 RnJvbSBlNjk3YTNjODU5ZTE4MzY1ZDE0ZDdjNzU0YzQ3ZWNjY2ZiMGY4ZTlhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTM6MzY6MzkgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyNSAwMi8xNF0gUmVmYWN0b3IgbGF6eV9zY2FuX3BydW5lKCkgVk0gc2V0IGxvZ2ljIGlu dG8gaGVscGVyCgpXaGlsZSB0aGlzIG1heSBub3QgYmUgYW4gaW1wcm92ZW1lbnQgb24gaXRzIG93 biwgZW5jYXBzdWxhdGluZyB0aGUgbG9naWMKZm9yIGRldGVybWluaW5nIHdoYXQgdG8gc2V0IHRo ZSBWTSBiaXRzIHRvIGluIGEgaGVscGVyIGlzIG9uZSBzdGVwCnRvd2FyZCBzZXR0aW5nIHRoZSBW TSBpbiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3ZhY3V1bWxhenkuYyB8IDIwNyArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KIDEg ZmlsZSBjaGFuZ2VkLCAxMjYgaW5zZXJ0aW9ucygrKSwgODEgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDM4YTEyNjhiMDA0Li42ZDVkNzA4MzUyZSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMTk0OCw2ICsxOTQ4LDEwNCBA QCBjbXBPZmZzZXROdW1iZXJzKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCiAJcmV0dXJu IHBnX2NtcF91MTYoKihjb25zdCBPZmZzZXROdW1iZXIgKikgYSwgKihjb25zdCBPZmZzZXROdW1i ZXIgKikgYik7CiB9CiAKKworLyoKKyAqIERlY2lkZSB3aGV0aGVyIHRvIHNldCB0aGUgdmlzaWJp bGl0eSBtYXAgYml0cyAoYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4pCisgKiBmb3IgaGVhcF9i bGsgdXNpbmcgaW5mb3JtYXRpb24gZnJvbSBQcnVuZUZyZWV6ZVJlc3VsdCBhbmQKKyAqIGFsbF92 aXNpYmxlX2FjY29yZGluZ190b192bS4gVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBhY3R1YWxseSBz ZXQgdGhlIFZNCisgKiBiaXRzIG9yIHBhZ2UtbGV2ZWwgdmlzaWJpbGl0eSBoaW50LCBQRF9BTExf VklTSUJMRS4KKyAqCisgKiBJZiBpdCBmaW5kcyB0aGF0IHRoZSBwYWdlLWxldmVsIHZpc2liaWxp dHkgaGludCBvciBWTSBpcyBjb3JydXB0ZWQsIGl0IHdpbGwKKyAqIGZpeCB0aGVtIGJ5IGNsZWFy aW5nIHRoZSBWTSBiaXRzIGFuZCB2aXNpYmlsaXR5IHBhZ2UgaGludC4gVGhpcyBkb2VzIG5vdAor ICogbmVlZCB0byBiZSBkb25lIGluIGEgY3JpdGljYWwgc2VjdGlvbi4KKyAqCisgKiBSZXR1cm5z IHRydWUgaWYgb25lIG9yIGJvdGggVk0gYml0cyBzaG91bGQgYmUgc2V0LCBhbG9uZyB3aXRoIHJl dHVybmluZworICogd2hhdCBiaXRzIHNob3VsZCBiZSBzZXQgaW4gdGhlIFZNIGluICpuZXdfdm1i aXRzLgorICovCitzdGF0aWMgYm9vbAoraGVhcF9wYWdlX3dpbGxfc2V0X3ZtKFJlbGF0aW9uIHJl bGF0aW9uLAorCQkJCQkgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLAorCQkJCQkgIEJ1ZmZlciBoZWFw X2J1ZiwKKwkJCQkJICBCdWZmZXIgdm1idWZmZXIsCisJCQkJCSAgYm9vbCBhbGxfdmlzaWJsZV9h Y2NvcmRpbmdfdG9fdm0sCisJCQkJCSAgY29uc3QgUHJ1bmVGcmVlemVSZXN1bHQgKnByZXN1bHQs CisJCQkJCSAgdWludDggKm5ld192bWJpdHMpCit7CisJUGFnZQkJaGVhcF9wYWdlID0gQnVmZmVy R2V0UGFnZShoZWFwX2J1Zik7CisKKwkqbmV3X3ZtYml0cyA9IDA7CisKKwkvKgorCSAqIERldGVy bWluZSB3aGF0IHRvIHNldCB0aGUgdmlzaWJpbGl0eSBtYXAgYml0cyB0byBiYXNlZCBvbiBpbmZv cm1hdGlvbgorCSAqIGZyb20gdGhlIFZNIChhcyBvZiBsYXN0IGhlYXBfdmFjX3NjYW5fbmV4dF9i bG9jaygpIGNhbGwpLCBhbmQgZnJvbQorCSAqIGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVuIHZh cmlhYmxlcy4KKwkgKi8KKwlpZiAoKHByZXN1bHQtPmFsbF92aXNpYmxlICYmICFhbGxfdmlzaWJs ZV9hY2NvcmRpbmdfdG9fdm0pIHx8CisJCShwcmVzdWx0LT5hbGxfZnJvemVuICYmICFWTV9BTExf RlJPWkVOKHJlbGF0aW9uLCBoZWFwX2JsaywgJnZtYnVmZmVyKSkpCisJeworCQkqbmV3X3ZtYml0 cyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7CisJCWlmIChwcmVzdWx0LT5hbGxfZnJvemVu KQorCQl7CisJCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHByZXN1bHQtPnZtX2NvbmZs aWN0X2hvcml6b24pKTsKKwkJCSpuZXdfdm1iaXRzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pF TjsKKwkJfQorCisJCXJldHVybiB0cnVlOworCX0KKworCS8qCisJICogTm93IGhhbmRsZSB0d28g cG90ZW50aWFsIGNvcnJ1cHRpb24gY2FzZXM6CisJICoKKwkgKiBUaGVzZSBkbyBub3QgbmVlZCB0 byBoYXBwZW4gaW4gYSBjcml0aWNhbCBzZWN0aW9uIGFuZCBhcmUgbm90CisJICogV0FMLWxvZ2dl ZC4KKwkgKgorCSAqIEFzIG9mIFBvc3RncmVTUUwgOS4yLCB0aGUgdmlzaWJpbGl0eSBtYXAgYml0 IHNob3VsZCBuZXZlciBiZSBzZXQgaWYgdGhlCisJICogcGFnZS1sZXZlbCBiaXQgaXMgY2xlYXIu ICBIb3dldmVyLCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGJpdCBnb3QKKwkgKiBjbGVhcmVkIGFm dGVyIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIHdhcyBjYWxsZWQsIHNvIHdlIG11c3QgcmVj aGVjaworCSAqIHdpdGggYnVmZmVyIGxvY2sgYmVmb3JlIGNvbmNsdWRpbmcgdGhhdCB0aGUgVk0g aXMgY29ycnVwdC4KKwkgKi8KKwllbHNlIGlmIChhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0g JiYgIVBhZ2VJc0FsbFZpc2libGUoaGVhcF9wYWdlKSAmJgorCQkJIHZpc2liaWxpdHltYXBfZ2V0 X3N0YXR1cyhyZWxhdGlvbiwgaGVhcF9ibGssICZ2bWJ1ZmZlcikgIT0gMCkKKwl7CisJCWVyZXBv cnQoV0FSTklORywKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKKwkJCQkg ZXJybXNnKCJwYWdlIGlzIG5vdCBtYXJrZWQgYWxsLXZpc2libGUgYnV0IHZpc2liaWxpdHkgbWFw IGJpdCBpcyBzZXQgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAorCQkJCQkJUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pLCBoZWFwX2JsaykpKTsKKworCQl2aXNpYmlsaXR5bWFw X2NsZWFyKHJlbGF0aW9uLCBoZWFwX2Jsaywgdm1idWZmZXIsCisJCQkJCQkJVklTSUJJTElUWU1B UF9WQUxJRF9CSVRTKTsKKwl9CisKKwkvKgorCSAqIEl0J3MgcG9zc2libGUgZm9yIHRoZSB2YWx1 ZSByZXR1cm5lZCBieQorCSAqIEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWQoKSB0 byBtb3ZlIGJhY2t3YXJkcywgc28gaXQncyBub3QKKwkgKiB3cm9uZyBmb3IgdXMgdG8gc2VlIHR1 cGxlcyB0aGF0IGFwcGVhciB0byBub3QgYmUgdmlzaWJsZSB0byBldmVyeW9uZQorCSAqIHlldCwg d2hpbGUgUERfQUxMX1ZJU0lCTEUgaXMgYWxyZWFkeSBzZXQuIFRoZSByZWFsIHNhZmUgeG1pbiB2 YWx1ZQorCSAqIG5ldmVyIG1vdmVzIGJhY2t3YXJkcywgYnV0IEdldE9sZGVzdE5vblJlbW92YWJs ZVRyYW5zYWN0aW9uSWQoKSBpcworCSAqIGNvbnNlcnZhdGl2ZSBhbmQgc29tZXRpbWVzIHJldHVy bnMgYSB2YWx1ZSB0aGF0J3MgdW5uZWNlc3NhcmlseSBzbWFsbCwKKwkgKiBzbyBpZiB3ZSBzZWUg dGhhdCBjb250cmFkaWN0aW9uIGl0IGp1c3QgbWVhbnMgdGhhdCB0aGUgdHVwbGVzIHRoYXQgd2UK KwkgKiB0aGluayBhcmUgbm90IHZpc2libGUgdG8gZXZlcnlvbmUgeWV0IGFjdHVhbGx5IGFyZSwg YW5kIHRoZQorCSAqIFBEX0FMTF9WSVNJQkxFIGZsYWcgaXMgY29ycmVjdC4KKwkgKgorCSAqIFRo ZXJlIHNob3VsZCBuZXZlciBiZSBMUF9ERUFEIGl0ZW1zIG9uIGEgcGFnZSB3aXRoIFBEX0FMTF9W SVNJQkxFIHNldCwKKwkgKiBob3dldmVyLgorCSAqLworCWVsc2UgaWYgKHByZXN1bHQtPmxwZGVh ZF9pdGVtcyA+IDAgJiYgUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpKQorCXsKKwkJZXJlcG9y dChXQVJOSU5HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAorCQkJCSBl cnJtc2coInBhZ2UgY29udGFpbmluZyBMUF9ERUFEIGl0ZW1zIGlzIG1hcmtlZCBhcyBhbGwtdmlz aWJsZSBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShyZWxhdGlvbiksIGhlYXBfYmxrKSkpOworCisJCVBhZ2VDbGVhckFsbFZpc2libGUo aGVhcF9wYWdlKTsKKwkJTWFya0J1ZmZlckRpcnR5KGhlYXBfYnVmKTsKKwkJdmlzaWJpbGl0eW1h cF9jbGVhcihyZWxhdGlvbiwgaGVhcF9ibGssIHZtYnVmZmVyLAorCQkJCQkJCVZJU0lCSUxJVFlN QVBfVkFMSURfQklUUyk7CisJfQorCisJcmV0dXJuIGZhbHNlOworfQorCiAvKgogICoJbGF6eV9z Y2FuX3BydW5lKCkgLS0gbGF6eV9zY2FuX2hlYXAoKSBwcnVuaW5nIGFuZCBmcmVlemluZy4KICAq CkBAIC0xOTc4LDYgKzIwNzYsOSBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVs LAogCQkJCWJvb2wgKnZtX3BhZ2VfZnJvemVuKQogewogCVJlbGF0aW9uCXJlbCA9IHZhY3JlbC0+ cmVsOworCWJvb2wJCWRvX3NldF92bSA9IGZhbHNlOworCXVpbnQ4CQluZXdfdm1iaXRzID0gMDsK Kwl1aW50OAkJb2xkX3ZtYml0cyA9IDA7CiAJUHJ1bmVGcmVlemVSZXN1bHQgcHJlc3VsdDsKIAlQ cnVuZUZyZWV6ZVBhcmFtcyBwYXJhbXMgPSB7CiAJCS5yZWxhdGlvbiA9IHJlbCwKQEAgLTIwODks MzMgKzIxOTAsMjAgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAlBc3Nl cnQoIXByZXN1bHQuYWxsX3Zpc2libGUgfHwgISgqaGFzX2xwZGVhZF9pdGVtcykpOwogCUFzc2Vy dCghcHJlc3VsdC5hbGxfZnJvemVuIHx8IHByZXN1bHQuYWxsX3Zpc2libGUpOwogCi0JLyoKLQkg KiBIYW5kbGUgc2V0dGluZyB2aXNpYmlsaXR5IG1hcCBiaXQgYmFzZWQgb24gaW5mb3JtYXRpb24g ZnJvbSB0aGUgVk0gKGFzCi0JICogb2YgbGFzdCBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSBj YWxsKSwgYW5kIGZyb20gYWxsX3Zpc2libGUgYW5kCi0JICogYWxsX2Zyb3plbiB2YXJpYWJsZXMK LQkgKi8KLQlpZiAoKHByZXN1bHQuYWxsX3Zpc2libGUgJiYgIWFsbF92aXNpYmxlX2FjY29yZGlu Z190b192bSkgfHwKLQkJKHByZXN1bHQuYWxsX2Zyb3plbiAmJiAhVk1fQUxMX0ZST1pFTihyZWws IGJsa25vLCAmdm1idWZmZXIpKSkKLQl7Ci0JCXVpbnQ4CQlvbGRfdm1iaXRzOwotCQl1aW50OAkJ bmV3X3ZtYml0cyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7Ci0KLQkJaWYgKHByZXN1bHQu YWxsX2Zyb3plbikKLQkJewotCQkJLyoKLQkJCSAqIFdlIGNhbiBwYXNzIEludmFsaWRUcmFuc2Fj dGlvbklkIGFzIG91ciBjdXRvZmZfeGlkLCBzaW5jZSBhCi0JCQkgKiBzbmFwc2hvdENvbmZsaWN0 SG9yaXpvbiBzdWZmaWNpZW50IHRvIG1ha2UgZXZlcnl0aGluZyBzYWZlIGZvcgotCQkJICogUkVE TyB3YXMgbG9nZ2VkIHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMgd2VyZSBmcm96ZW4uCi0JCQkgKi8K LQkJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQocHJlc3VsdC52bV9jb25mbGljdF9ob3Jp em9uKSk7Ci0JCQluZXdfdm1iaXRzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKLQkJfQor CWRvX3NldF92bSA9IGhlYXBfcGFnZV93aWxsX3NldF92bShyZWwsCisJCQkJCQkJCQkgIGJsa25v LAorCQkJCQkJCQkJICBidWYsCisJCQkJCQkJCQkgIHZtYnVmZmVyLAorCQkJCQkJCQkJICBhbGxf dmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0sCisJCQkJCQkJCQkgICZwcmVzdWx0LAorCQkJCQkJCQkJ ICAmbmV3X3ZtYml0cyk7CiAKKwlpZiAoZG9fc2V0X3ZtKQorCXsKIAkJLyoKIAkJICogSXQgc2hv dWxkIG5ldmVyIGJlIHRoZSBjYXNlIHRoYXQgdGhlIHZpc2liaWxpdHkgbWFwIHBhZ2UgaXMgc2V0 CiAJCSAqIHdoaWxlIHRoZSBwYWdlLWxldmVsIGJpdCBpcyBjbGVhciwgYnV0IHRoZSByZXZlcnNl IGlzIGFsbG93ZWQgKGlmCi0JCSAqIGNoZWNrc3VtcyBhcmUgbm90IGVuYWJsZWQpLiAgUmVnYXJk bGVzcywgc2V0IGJvdGggYml0cyBzbyB0aGF0IHdlCi0JCSAqIGdldCBiYWNrIGluIHN5bmMuCisJ CSAqIGNoZWNrc3VtcyBhcmUgbm90IGVuYWJsZWQpLgogCQkgKgogCQkgKiBUaGUgaGVhcCBwYWdl IGlzIGFkZGVkIHRvIHRoZSBXQUwgY2hhaW4gZXZlbiBpZiBpdCB3YXNuJ3QgbW9kaWZpZWQsCiAJ CSAqIHNvIHdlIHN0aWxsIG5lZWQgdG8gbWFyayBpdCBkaXJ0eS4gVGhlIG9ubHkgc2NlbmFyaW8g d2hlcmUgaXQgaXNuJ3QKQEAgLTIxMjgsNzEgKzIyMTYsMjggQEAgbGF6eV9zY2FuX3BydW5lKExW UmVsU3RhdGUgKnZhY3JlbCwKIAkJCQkJCQkJCSAgIEludmFsaWRYTG9nUmVjUHRyLAogCQkJCQkJ CQkJICAgdm1idWZmZXIsIHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbiwKIAkJCQkJCQkJCSAg IG5ld192bWJpdHMpOwotCi0JCS8qCi0JCSAqIEZvciB0aGUgcHVycG9zZXMgb2YgbG9nZ2luZywg Y291bnQgd2hldGhlciBvciBub3QgdGhlIHBhZ2Ugd2FzCi0JCSAqIG5ld2x5IHNldCBhbGwtdmlz aWJsZSBhbmQsIHBvdGVudGlhbGx5LCBhbGwtZnJvemVuLgotCQkgKi8KLQkJaWYgKChvbGRfdm1i aXRzICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkgPT0gMCkKLQkJewotCQkJdmFjcmVsLT52 bV9uZXdfdmlzaWJsZV9wYWdlcysrOwotCQkJaWYgKChuZXdfdm1iaXRzICYgVklTSUJJTElUWU1B UF9BTExfRlJPWkVOKSAhPSAwKQotCQkJewotCQkJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfZnJv emVuX3BhZ2VzKys7Ci0JCQkJKnZtX3BhZ2VfZnJvemVuID0gdHJ1ZTsKLQkJCX0KLQkJfQotCQll bHNlIGlmICgob2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTikgPT0gMCAmJgot CQkJCSAobmV3X3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTikgIT0gMCkKLQkJewot CQkJdmFjcmVsLT52bV9uZXdfZnJvemVuX3BhZ2VzKys7Ci0JCQkqdm1fcGFnZV9mcm96ZW4gPSB0 cnVlOwotCQl9CiAJfQogCiAJLyoKLQkgKiBBcyBvZiBQb3N0Z3JlU1FMIDkuMiwgdGhlIHZpc2li aWxpdHkgbWFwIGJpdCBzaG91bGQgbmV2ZXIgYmUgc2V0IGlmIHRoZQotCSAqIHBhZ2UtbGV2ZWwg Yml0IGlzIGNsZWFyLiAgSG93ZXZlciwgaXQncyBwb3NzaWJsZSB0aGF0IHRoZSBiaXQgZ290Ci0J ICogY2xlYXJlZCBhZnRlciBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSB3YXMgY2FsbGVkLCBz byB3ZSBtdXN0IHJlY2hlY2sKLQkgKiB3aXRoIGJ1ZmZlciBsb2NrIGJlZm9yZSBjb25jbHVkaW5n IHRoYXQgdGhlIFZNIGlzIGNvcnJ1cHQuCisJICogRm9yIHRoZSBwdXJwb3NlcyBvZiBsb2dnaW5n LCBjb3VudCB3aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSB3YXMgbmV3bHkKKwkgKiBzZXQgYWxsLXZp c2libGUgYW5kLCBwb3RlbnRpYWxseSwgYWxsLWZyb3plbi4KIAkgKi8KLQllbHNlIGlmIChhbGxf dmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gJiYgIVBhZ2VJc0FsbFZpc2libGUocGFnZSkgJiYKLQkJ CSB2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXModmFjcmVsLT5yZWwsIGJsa25vLCAmdm1idWZmZXIp ICE9IDApCisJaWYgKChvbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkgPT0g MCAmJgorCQkobmV3X3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpICE9IDApCiAJ ewotCQllcmVwb3J0KFdBUk5JTkcsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRF RCksCi0JCQkJIGVycm1zZygicGFnZSBpcyBub3QgbWFya2VkIGFsbC12aXNpYmxlIGJ1dCB2aXNp YmlsaXR5IG1hcCBiaXQgaXMgc2V0IGluIHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwKLQkJCQkJ CXZhY3JlbC0+cmVsbmFtZSwgYmxrbm8pKSk7Ci0KLQkJdmlzaWJpbGl0eW1hcF9jbGVhcih2YWNy ZWwtPnJlbCwgYmxrbm8sIHZtYnVmZmVyLAotCQkJCQkJCVZJU0lCSUxJVFlNQVBfVkFMSURfQklU Uyk7CisJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfcGFnZXMrKzsKKwkJaWYgKChuZXdfdm1iaXRz ICYgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKSAhPSAwKQorCQl7CisJCQl2YWNyZWwtPnZtX25l d192aXNpYmxlX2Zyb3plbl9wYWdlcysrOworCQkJKnZtX3BhZ2VfZnJvemVuID0gdHJ1ZTsKKwkJ fQogCX0KLQotCS8qCi0JICogSXQncyBwb3NzaWJsZSBmb3IgdGhlIHZhbHVlIHJldHVybmVkIGJ5 Ci0JICogR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25JZCgpIHRvIG1vdmUgYmFja3dh cmRzLCBzbyBpdCdzIG5vdAotCSAqIHdyb25nIGZvciB1cyB0byBzZWUgdHVwbGVzIHRoYXQgYXBw ZWFyIHRvIG5vdCBiZSB2aXNpYmxlIHRvIGV2ZXJ5b25lCi0JICogeWV0LCB3aGlsZSBQRF9BTExf VklTSUJMRSBpcyBhbHJlYWR5IHNldC4gVGhlIHJlYWwgc2FmZSB4bWluIHZhbHVlCi0JICogbmV2 ZXIgbW92ZXMgYmFja3dhcmRzLCBidXQgR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25J ZCgpIGlzCi0JICogY29uc2VydmF0aXZlIGFuZCBzb21ldGltZXMgcmV0dXJucyBhIHZhbHVlIHRo YXQncyB1bm5lY2Vzc2FyaWx5IHNtYWxsLAotCSAqIHNvIGlmIHdlIHNlZSB0aGF0IGNvbnRyYWRp Y3Rpb24gaXQganVzdCBtZWFucyB0aGF0IHRoZSB0dXBsZXMgdGhhdCB3ZQotCSAqIHRoaW5rIGFy ZSBub3QgdmlzaWJsZSB0byBldmVyeW9uZSB5ZXQgYWN0dWFsbHkgYXJlLCBhbmQgdGhlCi0JICog UERfQUxMX1ZJU0lCTEUgZmxhZyBpcyBjb3JyZWN0LgotCSAqCi0JICogVGhlcmUgc2hvdWxkIG5l dmVyIGJlIExQX0RFQUQgaXRlbXMgb24gYSBwYWdlIHdpdGggUERfQUxMX1ZJU0lCTEUgc2V0LAot CSAqIGhvd2V2ZXIuCi0JICovCi0JZWxzZSBpZiAocHJlc3VsdC5scGRlYWRfaXRlbXMgPiAwICYm IFBhZ2VJc0FsbFZpc2libGUocGFnZSkpCisJZWxzZSBpZiAoKG9sZF92bWJpdHMgJiBWSVNJQklM SVRZTUFQX0FMTF9GUk9aRU4pID09IDAgJiYKKwkJCSAobmV3X3ZtYml0cyAmIFZJU0lCSUxJVFlN QVBfQUxMX0ZST1pFTikgIT0gMCkKIAl7Ci0JCWVyZXBvcnQoV0FSTklORywKLQkJCQkoZXJyY29k ZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKLQkJCQkgZXJybXNnKCJwYWdlIGNvbnRhaW5pbmcg TFBfREVBRCBpdGVtcyBpcyBtYXJrZWQgYXMgYWxsLXZpc2libGUgaW4gcmVsYXRpb24gXCIlc1wi IHBhZ2UgJXUiLAotCQkJCQkJdmFjcmVsLT5yZWxuYW1lLCBibGtubykpKTsKLQotCQlQYWdlQ2xl YXJBbGxWaXNpYmxlKHBhZ2UpOwotCQlNYXJrQnVmZmVyRGlydHkoYnVmKTsKLQkJdmlzaWJpbGl0 eW1hcF9jbGVhcih2YWNyZWwtPnJlbCwgYmxrbm8sIHZtYnVmZmVyLAotCQkJCQkJCVZJU0lCSUxJ VFlNQVBfVkFMSURfQklUUyk7CisJCUFzc2VydCgobmV3X3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBf QUxMX1ZJU0lCTEUpICE9IDApOworCQl2YWNyZWwtPnZtX25ld19mcm96ZW5fcGFnZXMrKzsKKwkJ KnZtX3BhZ2VfZnJvemVuID0gdHJ1ZTsKIAl9CiAKIAlyZXR1cm4gcHJlc3VsdC5uZGVsZXRlZDsK LS0gCjIuNDMuMAoK --000000000000b196150645a17d5e Content-Type: application/x-patch; name="v25-0003-Set-the-VM-in-heap_page_prune_and_freeze.patch" Content-Disposition: attachment; filename="v25-0003-Set-the-VM-in-heap_page_prune_and_freeze.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj0m7mdw2 RnJvbSAyMjUzZTRmMDk4MjA3MjUxNmNlNWRhNjVlOWNiYWRmZjgxODgzNmU1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTU6MDc6NDIgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyNSAwMy8xNF0gU2V0IHRoZSBWTSBpbiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgp CgpUaGlzIGhhcyBubyBpbmRlcGVuZGVudCBiZW5lZml0LiBJdCBpcyBtZWFudCBmb3IgZWFzZSBv ZiByZXZpZXcuIEFzIG9mCnRoaXMgY29tbWl0LCB0aGVyZSBpcyBzdGlsbCBhIHNlcGFyYXRlIFdB TCByZWNvcmQgZW1pdHRlZCBmb3Igc2V0dGluZwp0aGUgVk0gYWZ0ZXIgcHJ1bmluZyBhbmQgZnJl ZXppbmcuIEJ1dCBpdCBpcyBlYXNpZXIgdG8gcmV2aWV3IGlmIG1vdmluZwp0aGUgbG9naWMgaW50 byBwcnVuZWhlYXAuYyBpcyBzZXBhcmF0ZSBmcm9tIHNldHRpbmcgdGhlIFZNIGluIHRoZSBzYW1l CldBTCByZWNvcmQuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgIHwg MjYzICsrKysrKysrKysrKysrKysrKysrKystLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmFjdXVtbGF6eS5jIHwgMTQ3ICstLS0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbS5oICAgICAgICAgIHwgIDI3ICsrKwogMyBmaWxlcyBjaGFuZ2VkLCAyNTQgaW5zZXJ0aW9u cygrKSwgMTgzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5k ZXggY2E0NDIyNWExMGUuLmQ3ZjM2ZTI3NjRmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhl YXAuYwpAQCAtMTksNyArMTksNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIK ICNpbmNsdWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0u aCIKLSNpbmNsdWRlICJhY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaCIKKyNpbmNsdWRlICJhY2Nl c3MvdmlzaWJpbGl0eW1hcC5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9nLmgiCiAjaW5jbHVkZSAi YWNjZXNzL3hsb2dpbnNlcnQuaCIKICNpbmNsdWRlICJjb21tYW5kcy92YWN1dW0uaCIKQEAgLTQ0 LDYgKzQ0LDggQEAgdHlwZWRlZiBzdHJ1Y3QKIAlib29sCQltYXJrX3VudXNlZF9ub3c7CiAJLyog d2hldGhlciB0byBhdHRlbXB0IGZyZWV6aW5nIHR1cGxlcyAqLwogCWJvb2wJCWF0dGVtcHRfZnJl ZXplOworCS8qIHdoZXRoZXIgb3Igbm90IHRvIGF0dGVtcHQgdXBkYXRpbmcgdGhlIFZNICovCisJ Ym9vbAkJYXR0ZW1wdF91cGRhdGVfdm07CiAJc3RydWN0IFZhY3V1bUN1dG9mZnMgKmN1dG9mZnM7 CiAKIAkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KQEAgLTE0MCwxNiArMTQyLDE3IEBAIHR5cGVkZWYgc3RydWN0CiAJICogYWxsX3Zpc2li bGUgYW5kIGFsbF9mcm96ZW4gaW5kaWNhdGUgaWYgdGhlIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJv emVuCiAJICogYml0cyBpbiB0aGUgdmlzaWJpbGl0eSBtYXAgY2FuIGJlIHNldCBmb3IgdGhpcyBw YWdlIGFmdGVyIHBydW5pbmcuCiAJICoKLQkgKiB2aXNpYmlsaXR5X2N1dG9mZl94aWQgaXMgdGhl IG5ld2VzdCB4bWluIG9mIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLgotCSAqIFRoZSBjYWxsZXIg Y2FuIHVzZSBpdCBhcyB0aGUgY29uZmxpY3QgaG9yaXpvbiwgd2hlbiBzZXR0aW5nIHRoZSBWTQot CSAqIGJpdHMuICBJdCBpcyBvbmx5IHZhbGlkIGlmIHdlIGZyb3plIHNvbWUgdHVwbGVzLCBhbmQg YWxsX2Zyb3plbiBpcwotCSAqIHRydWUuCisJICogdmlzaWJpbGl0eV9jdXRvZmZfeGlkIGlzIHRo ZSBuZXdlc3QgeG1pbiBvZiBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZS4gSXQKKwkgKiBjYW4gYmUg dXNlZCBhcyB0aGUgY29uZmxpY3QgaG9yaXpvbiB3aGVuIHNldHRpbmcgdGhlIFZNIG9yIHdoZW4K KwkgKiBmcmVlemluZyBhbGwgdGhlIHR1cGxlcyBvbiB0aGUgcGFnZS4gSXQgaXMgb25seSB2YWxp ZCB3aGVuIGFsbCB0aGUgbGl2ZQorCSAqIHR1cGxlcyBvbiB0aGUgcGFnZSBhcmUgYWxsLXZpc2li bGUuCiAJICoKIAkgKiBOT1RFOiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBpbml0aWFsbHkg ZG9uJ3QgaW5jbHVkZSBMUF9ERUFEIGl0ZW1zLgogCSAqIFRoYXQncyBjb252ZW5pZW50IGZvciBo ZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpIHRvIHVzZSB0aGVtIHRvCi0JICogZGVjaWRlIHdo ZXRoZXIgdG8gZnJlZXplIHRoZSBwYWdlIG9yIG5vdC4gIFRoZSBhbGxfdmlzaWJsZSBhbmQKLQkg KiBhbGxfZnJvemVuIHZhbHVlcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyIGFyZSBhZGp1c3RlZCB0 byBpbmNsdWRlCi0JICogTFBfREVBRCBpdGVtcyBhZnRlciB3ZSBkZXRlcm1pbmUgd2hldGhlciB0 byBvcHBvcnR1bmlzdGljYWxseSBmcmVlemUuCisJICogZGVjaWRlIHdoZXRoZXIgdG8gb3Bwb3J0 dW5pc3RpY2FsbHkgZnJlZXplIHRoZSBwYWdlIG9yIG5vdC4gIFRoZQorCSAqIGFsbF92aXNpYmxl IGFuZCBhbGxfZnJvemVuIHZhbHVlcyB1bHRpbWF0ZWx5IHVzZWQgdG8gc2V0IHRoZSBWTSBhcmUK KwkgKiBhZGp1c3RlZCB0byBpbmNsdWRlIExQX0RFQUQgaXRlbXMgYWZ0ZXIgd2UgZGV0ZXJtaW5l IHdoZXRoZXIgb3Igbm90IHRvCisJICogb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXplLgogCSAqLwog CWJvb2wJCWFsbF92aXNpYmxlOwogCWJvb2wJCWFsbF9mcm96ZW47CkBAIC0xOTEsNiArMTk0LDEz IEBAIHN0YXRpYyB2b2lkIHBhZ2VfdmVyaWZ5X3JlZGlyZWN0cyhQYWdlIHBhZ2UpOwogc3RhdGlj IGJvb2wgaGVhcF9wYWdlX3dpbGxfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVm ZmVyLAogCQkJCQkJCQkgIGJvb2wgZGlkX3R1cGxlX2hpbnRfZnBpLCBib29sIGRvX3BydW5lLCBi b29sIGRvX2hpbnRfcHJ1bmUsCiAJCQkJCQkJCSAgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSk7CitzdGF0 aWMgYm9vbCBoZWFwX3BhZ2Vfd2lsbF9zZXRfdm0oUmVsYXRpb24gcmVsYXRpb24sCisJCQkJCQkJ CSAgQmxvY2tOdW1iZXIgaGVhcF9ibGssCisJCQkJCQkJCSAgQnVmZmVyIGhlYXBfYnVmLAorCQkJ CQkJCQkgIEJ1ZmZlciB2bWJ1ZmZlciwKKwkJCQkJCQkJICBib29sIGJsa19rbm93bl9hdiwKKwkJ CQkJCQkJICBjb25zdCBQcnVuZUZyZWV6ZVJlc3VsdCAqcHJlc3VsdCwKKwkJCQkJCQkJICB1aW50 OCAqbmV3X3ZtYml0cyk7CiAKIAogLyoKQEAgLTI4MCw2ICsyOTAsOCBAQCBoZWFwX3BhZ2VfcHJ1 bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyKQogCQkJUHJ1bmVGcmVlemVQ YXJhbXMgcGFyYW1zID0gewogCQkJCS5yZWxhdGlvbiA9IHJlbGF0aW9uLAogCQkJCS5idWZmZXIg PSBidWZmZXIsCisJCQkJLnZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlciwKKwkJCQkuYmxrX2tub3du X2F2ID0gZmFsc2UsCiAJCQkJLnJlYXNvbiA9IFBSVU5FX09OX0FDQ0VTUywKIAkJCQkub3B0aW9u cyA9IDAsCiAJCQkJLnZpc3Rlc3QgPSB2aXN0ZXN0LApAQCAtMzM4LDYgKzM1MCw4IEBAIHBydW5l X2ZyZWV6ZV9zZXR1cChQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCS8qIGN1dG9mZnMgbXVz dCBiZSBwcm92aWRlZCBpZiB3ZSB3aWxsIGF0dGVtcHQgZnJlZXppbmcgKi8KIAlBc3NlcnQoIShw YXJhbXMtPm9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFKSB8fCBwYXJhbXMtPmN1dG9m ZnMpOwogCXByc3RhdGUtPmF0dGVtcHRfZnJlZXplID0gKHBhcmFtcy0+b3B0aW9ucyAmIEhFQVBf UEFHRV9QUlVORV9GUkVFWkUpICE9IDA7CisJcHJzdGF0ZS0+YXR0ZW1wdF91cGRhdGVfdm0gPQor CQkocGFyYW1zLT5vcHRpb25zICYgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WTSkgIT0gMDsKIAlw cnN0YXRlLT5jdXRvZmZzID0gcGFyYW1zLT5jdXRvZmZzOwogCiAJLyoKQEAgLTM4Niw1MSArNDAw LDU0IEBAIHBydW5lX2ZyZWV6ZV9zZXR1cChQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCXBy c3RhdGUtPmZyel9jb25mbGljdF9ob3Jpem9uID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKIAkv KgotCSAqIFZhY3V1bSBtYXkgdXBkYXRlIHRoZSBWTSBhZnRlciB3ZSdyZSBkb25lLiAgV2UgY2Fu IGtlZXAgdHJhY2sgb2YKLQkgKiB3aGV0aGVyIHRoZSBwYWdlIHdpbGwgYmUgYWxsLXZpc2libGUg YW5kIGFsbC1mcm96ZW4gYWZ0ZXIgcHJ1bmluZyBhbmQKLQkgKiBmcmVlemluZyB0byBoZWxwIHRo ZSBjYWxsZXIgdG8gZG8gdGhhdC4KKwkgKiBUcmFjayB3aGV0aGVyIHRoZSBwYWdlIGNvdWxkIGJl IG1hcmtlZCBhbGwtdmlzaWJsZSBhbmQvb3IgYWxsLWZyb3plbi4KKwkgKiBUaGlzIGluZm9ybWF0 aW9uIGlzIHVzZWQgZm9yIG9wcG9ydHVuaXN0aWMgZnJlZXppbmcgYW5kIGZvciB1cGRhdGluZwor CSAqIHRoZSB2aXNpYmlsaXR5IG1hcCAoVk0pIGlmIHJlcXVlc3RlZCBieSB0aGUgY2FsbGVyLgog CSAqCi0JICogQ3VycmVudGx5LCBvbmx5IFZBQ1VVTSBzZXRzIHRoZSBWTSBiaXRzLiAgVG8gc2F2 ZSB0aGUgZWZmb3J0LCBvbmx5IGRvCi0JICogdGhlIGJvb2trZWVwaW5nIGlmIHRoZSBjYWxsZXIg bmVlZHMgaXQuICBDdXJyZW50bHksIHRoYXQncyB0aWVkIHRvCi0JICogSEVBUF9QQUdFX1BSVU5F X0ZSRUVaRSwgYnV0IGl0IGNvdWxkIGJlIGEgc2VwYXJhdGUgZmxhZyBpZiB5b3Ugd2FudGVkCi0J ICogdG8gdXBkYXRlIHRoZSBWTSBiaXRzIHdpdGhvdXQgYWxzbyBmcmVlemluZyBvciBmcmVlemUg d2l0aG91dCBhbHNvCi0JICogc2V0dGluZyB0aGUgVk0gYml0cy4KKwkgKiBDdXJyZW50bHksIG9u bHkgVkFDVVVNIHBlcmZvcm1zIGZyZWV6aW5nLCBidXQgb3RoZXIgY2FsbGVycyBtYXkgaW4gdGhl CisJICogZnV0dXJlLiBWaXNpYmlsaXR5IGJvb2trZWVwaW5nIGlzIHJlcXVpcmVkIG5vdCBqdXN0 IGZvciBzZXR0aW5nIHRoZSBWTQorCSAqIGJpdHMsIGJ1dCBhbHNvIGZvciBvcHBvcnR1bmlzdGlj IGZyZWV6aW5nOiB3ZSBvbmx5IGNvbnNpZGVyIGZyZWV6aW5nIGlmCisJICogdGhlIHBhZ2Ugd291 bGQgYmVjb21lIGFsbC1mcm96ZW4sIG9yIGlmIGl0IHdvdWxkIGJlIGFsbC1mcm96ZW4gZXhjZXB0 CisJICogZm9yIGRlYWQgdHVwbGVzIHRoYXQgVkFDVVVNIHdpbGwgcmVtb3ZlLiBJZiBhdHRlbXB0 X3VwZGF0ZV92bSBpcyBmYWxzZSwKKwkgKiB3ZSB3aWxsIG5vdCBzZXQgdGhlIFZNIGJpdCBldmVu IGlmIHRoZSBwYWdlIGlzIGZvdW5kIHRvIGJlIGFsbC12aXNpYmxlLgogCSAqCi0JICogSW4gYWRk aXRpb24gdG8gdGVsbGluZyB0aGUgY2FsbGVyIHdoZXRoZXIgaXQgY2FuIHNldCB0aGUgVk0gYml0 LCB3ZQotCSAqIGFsc28gdXNlICdhbGxfdmlzaWJsZScgYW5kICdhbGxfZnJvemVuJyBmb3Igb3Vy IG93biBkZWNpc2lvbi1tYWtpbmcuIElmCi0JICogdGhlIHdob2xlIHBhZ2Ugd291bGQgYmVjb21l IGZyb3plbiwgd2UgY29uc2lkZXIgb3Bwb3J0dW5pc3RpY2FsbHkKLQkgKiBmcmVlemluZyB0dXBs ZXMuICBXZSB3aWxsIG5vdCBiZSBhYmxlIHRvIGZyZWV6ZSB0aGUgd2hvbGUgcGFnZSBpZiB0aGVy ZQotCSAqIGFyZSB0dXBsZXMgcHJlc2VudCB0aGF0IGFyZSBub3QgdmlzaWJsZSB0byBldmVyeW9u ZSBvciBpZiB0aGVyZSBhcmUKLQkgKiBkZWFkIHR1cGxlcyB3aGljaCBhcmUgbm90IHlldCByZW1v dmFibGUuICBIb3dldmVyLCBkZWFkIHR1cGxlcyB3aGljaAotCSAqIHdpbGwgYmUgcmVtb3ZlZCBi eSB0aGUgZW5kIG9mIHZhY3V1bWluZyBzaG91bGQgbm90IHByZWNsdWRlIHVzIGZyb20KLQkgKiBv cHBvcnR1bmlzdGljYWxseSBmcmVlemluZy4gIEJlY2F1c2Ugb2YgdGhhdCwgd2UgZG8gbm90IGlt bWVkaWF0ZWx5Ci0JICogY2xlYXIgYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4gd2hlbiB3ZSBz ZWUgTFBfREVBRCBpdGVtcy4gIFdlIGZpeAotCSAqIHRoYXQgYWZ0ZXIgc2Nhbm5pbmcgdGhlIGxp bmUgcG9pbnRlcnMuIFdlIG11c3QgY29ycmVjdCBhbGxfdmlzaWJsZSBhbmQKLQkgKiBhbGxfZnJv emVuIGJlZm9yZSB3ZSByZXR1cm4gdGhlbSB0byB0aGUgY2FsbGVyLCBzbyB0aGF0IHRoZSBjYWxs ZXIKLQkgKiBkb2Vzbid0IHNldCB0aGUgVk0gYml0cyBpbmNvcnJlY3RseS4KKwkgKiBJZiBIRUFQ X1BBR0VfUFJVTkVfVVBEQVRFX1ZNIGlzIHBhc3NlZCB3aXRob3V0IEhFQVBfUEFHRV9QUlVORV9G UkVFWkUsCisJICogcHJzdGF0ZS5hbGxfZnJvemVuIG11c3QgYmUgaW5pdGlhbGl6ZWQgdG8gZmFs c2UsIHNpbmNlIHdlIHdpbGwgbm90IGNhbGwKKwkgKiBoZWFwX3ByZXBhcmVfZnJlZXplX3R1cGxl KCkgZm9yIGVhY2ggdHVwbGUuCisJICoKKwkgKiBEZWFkIHR1cGxlcyB0aGF0IHdpbGwgYmUgcmVt b3ZlZCBieSB0aGUgZW5kIG9mIHZhY3V1bSBzaG91bGQgbm90CisJICogcHJldmVudCBvcHBvcnR1 bmlzdGljIGZyZWV6aW5nLiBUaGVyZWZvcmUsIHdlIGRvIG5vdCBjbGVhciBhbGxfdmlzaWJsZQor CSAqIGFuZCBhbGxfZnJvemVuIHdoZW4gd2UgZW5jb3VudGVyIExQX0RFQUQgaXRlbXMuIEluc3Rl YWQsIHdlIGNvcnJlY3QKKwkgKiB0aGVtIGFmdGVyIGRlY2lkaW5nIHdoZXRoZXIgdG8gZnJlZXpl LCBidXQgYmVmb3JlIHVwZGF0aW5nIHRoZSBWTSwgdG8KKwkgKiBhdm9pZCBzZXR0aW5nIHRoZSBW TSBiaXRzIGluY29ycmVjdGx5LgorCSAqCisJICogSWYgbmVpdGhlciBmcmVlemluZyBub3IgVk0g dXBkYXRlcyBhcmUgcmVxdWVzdGVkLCB3ZSBza2lwIHRoZSBleHRyYQorCSAqIGJvb2trZWVwaW5n LiBJbiB0aGlzIGNhc2UsIGluaXRpYWxpemluZyBhbGxfdmlzaWJsZSB0byBmYWxzZSBhbGxvd3MK KwkgKiBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKCkgdG8gYnlwYXNzIHVu bmVjZXNzYXJ5IHdvcmsuCiAJICovCiAJaWYgKHByc3RhdGUtPmF0dGVtcHRfZnJlZXplKQogCXsK IAkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSB0cnVlOwogCQlwcnN0YXRlLT5hbGxfZnJvemVuID0g dHJ1ZTsKIAl9CisJZWxzZSBpZiAocHJzdGF0ZS0+YXR0ZW1wdF91cGRhdGVfdm0pCisJeworCQlw cnN0YXRlLT5hbGxfdmlzaWJsZSA9IHRydWU7CisJCXByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxz ZTsKKwl9CiAJZWxzZQogCXsKLQkJLyoKLQkJICogSW5pdGlhbGl6aW5nIHRvIGZhbHNlIGFsbG93 cyBza2lwcGluZyB0aGUgd29yayB0byB1cGRhdGUgdGhlbSBpbgotCQkgKiBoZWFwX3BydW5lX3Jl Y29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKCkuCi0JCSAqLwogCQlwcnN0YXRlLT5hbGxfdmlzaWJs ZSA9IGZhbHNlOwogCQlwcnN0YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7CiAJfQogCiAJLyoKLQkg KiBUaGUgdmlzaWJpbGl0eSBjdXRvZmYgeGlkIGlzIHRoZSBuZXdlc3QgeG1pbiBvZiBsaXZlIHR1 cGxlcyBvbiB0aGUKLQkgKiBwYWdlLiAgSW4gdGhlIGNvbW1vbiBjYXNlLCB0aGlzIHdpbGwgYmUg c2V0IGFzIHRoZSBjb25mbGljdCBob3Jpem9uIHRoZQotCSAqIGNhbGxlciBjYW4gdXNlIGZvciB1 cGRhdGluZyB0aGUgVk0uICBJZiwgYXQgdGhlIGVuZCBvZiBmcmVlemluZyBhbmQKLQkgKiBwcnVu aW5nLCB0aGUgcGFnZSBpcyBhbGwtZnJvemVuLCB0aGVyZSBpcyBubyBwb3NzaWJpbGl0eSB0aGF0 IGFueQotCSAqIHJ1bm5pbmcgdHJhbnNhY3Rpb24gb24gdGhlIHN0YW5kYnkgZG9lcyBub3Qgc2Vl IHR1cGxlcyBvbiB0aGUgcGFnZSBhcwotCSAqIGFsbC12aXNpYmxlLCBzbyB0aGUgY29uZmxpY3Qg aG9yaXpvbiByZW1haW5zIEludmFsaWRUcmFuc2FjdGlvbklkLgorCSAqIFRoZSB2aXNpYmlsaXR5 IGN1dG9mZiB4aWQgaXMgdGhlIG5ld2VzdCB4bWluIG9mIGxpdmUsIGNvbW1pdHRlZCB0dXBsZXMK KwkgKiBvbGRlciB0aGFuIE9sZGVzdFhtaW4gb24gdGhlIHBhZ2UuIFRoaXMgZmllbGQgaXMgb25s eSBrZXB0IHVwLXRvLWRhdGUKKwkgKiBpZiB0aGUgcGFnZSBpcyBhbGwtdmlzaWJsZS4gQXMgc29v biBhcyBhIHR1cGxlIGlzIGVuY291bnRlcmVkIHRoYXQgaXMKKwkgKiBub3QgdmlzaWJsZSB0byBh bGwsIHRoaXMgZmllbGQgaXMgdW5tYWludGFpbmVkLiBBcyBsb25nIGFzIGl0IGlzCisJICogbWFp bnRhaW5lZCwgaXQgY2FuIGJlIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBzbmFwc2hvdCBjb25mbGlj dCBob3Jpem9uCisJICogd2hlbiB1cGRhdGluZyB0aGUgVk0gYW5kL29yIGZyZWV6aW5nIGFsbCB0 aGUgdHVwbGVzIG9uIHRoZSBwYWdlLgogCSAqLwogCXByc3RhdGUtPnZpc2liaWxpdHlfY3V0b2Zm X3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogfQpAQCAtNzY1LDEwICs3ODIsMTE4IEBAIGhl YXBfcGFnZV93aWxsX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAly ZXR1cm4gZG9fZnJlZXplOwogfQogCisvKgorICogRGVjaWRlIHdoZXRoZXIgdG8gc2V0IHRoZSB2 aXNpYmlsaXR5IG1hcCBiaXRzIChhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3plbikKKyAqIGZvciBo ZWFwX2JsayB1c2luZyBpbmZvcm1hdGlvbiBmcm9tIFBydW5lRnJlZXplUmVzdWx0IGFuZCBibGtf a25vd25fYXYuCisgKiBTb21lIGNhbGxlcnMgbWF5IGFscmVhZHkgaGF2ZSBleGFtaW5lZCB0aGlz IHBhZ2XigJlzIFZNIGJpdHMgKGUuZy4sIFZBQ1VVTSBpbgorICogdGhlIHByZXZpb3VzIGhlYXBf dmFjX3NjYW5fbmV4dF9ibG9jaygpIGNhbGwpIGFuZCBjYW4gcGFzcyB0aGF0IGFsb25nIGFzCisg KiBibGtfa25vd25fYXYuIENhbGxlcnMgdGhhdCBoYXZlIG5vdCBwcmV2aW91c2x5IGNoZWNrZWQg dGhlIHBhZ2UncyBzdGF0dXMgaW4KKyAqIHRoZSBWTSBzaG91bGQgcGFzcyBmYWxzZSBmb3IgYmxr X2tub3duX2F2LgorICoKKyAqIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgYWN0dWFsbHkgc2V0IHRo ZSBWTSBiaXRzIG9yIHBhZ2UtbGV2ZWwgdmlzaWJpbGl0eQorICogaGludCwgUERfQUxMX1ZJU0lC TEUuCisgKgorICogSG93ZXZlciwgaWYgaXQgZmluZHMgdGhhdCB0aGUgcGFnZS1sZXZlbCB2aXNp YmlsaXR5IGhpbnQgb3IgVk0gaXMKKyAqIGNvcnJ1cHRlZCwgaXQgd2lsbCBmaXggdGhlbSBieSBj bGVhcmluZyB0aGUgVk0gYml0cyBhbmQgcGFnZSB2aXNpYmlsaXR5CisgKiBoaW50LiBUaGlzIGRv ZXMgbm90IG5lZWQgdG8gYmUgZG9uZSBpbiBhIGNyaXRpY2FsIHNlY3Rpb24uCisgKgorICogUmV0 dXJucyB0cnVlIGlmIG9uZSBvciBib3RoIFZNIGJpdHMgc2hvdWxkIGJlIHNldCwgYWxvbmcgd2l0 aCByZXR1cm5pbmcgdGhlCisgKiBkZXNpcmVkIHdoYXQgYml0cyBzaG91bGQgYmUgc2V0IGluIHRo ZSBWTSBpbiAqbmV3X3ZtYml0cy4KKyAqLworc3RhdGljIGJvb2wKK2hlYXBfcGFnZV93aWxsX3Nl dF92bShSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJICBCbG9ja051bWJlciBoZWFwX2JsaywKKwkJ CQkJICBCdWZmZXIgaGVhcF9idWYsCisJCQkJCSAgQnVmZmVyIHZtYnVmZmVyLAorCQkJCQkgIGJv b2wgYmxrX2tub3duX2F2LAorCQkJCQkgIGNvbnN0IFBydW5lRnJlZXplUmVzdWx0ICpwcmVzdWx0 LAorCQkJCQkgIHVpbnQ4ICpuZXdfdm1iaXRzKQoreworCVBhZ2UJCWhlYXBfcGFnZSA9IEJ1ZmZl ckdldFBhZ2UoaGVhcF9idWYpOworCisJKm5ld192bWJpdHMgPSAwOworCisJLyoKKwkgKiBEZXRl cm1pbmUgd2hhdCB0aGUgdmlzaWJpbGl0eSBtYXAgYml0cyBzaG91bGQgYmUgc2V0IHRvIHVzaW5n IHRoZQorCSAqIHZhbHVlcyBvZiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBkZXRlcm1pbmVk IGR1cmluZworCSAqIHBydW5pbmcvZnJlZXppbmcuCisJICovCisJaWYgKChwcmVzdWx0LT5hbGxf dmlzaWJsZSAmJiAhYmxrX2tub3duX2F2KSB8fAorCQkocHJlc3VsdC0+YWxsX2Zyb3plbiAmJiAh Vk1fQUxMX0ZST1pFTihyZWxhdGlvbiwgaGVhcF9ibGssICZ2bWJ1ZmZlcikpKQorCXsKKwkJKm5l d192bWJpdHMgPSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOworCQlpZiAocHJlc3VsdC0+YWxs X2Zyb3plbikKKwkJeworCQkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChwcmVzdWx0LT52 bV9jb25mbGljdF9ob3Jpem9uKSk7CisJCQkqbmV3X3ZtYml0cyB8PSBWSVNJQklMSVRZTUFQX0FM TF9GUk9aRU47CisJCX0KKworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwkvKgorCSAqIE5vdyBoYW5k bGUgdHdvIHBvdGVudGlhbCBjb3JydXB0aW9uIGNhc2VzOgorCSAqCisJICogVGhlc2UgZG8gbm90 IG5lZWQgdG8gaGFwcGVuIGluIGEgY3JpdGljYWwgc2VjdGlvbiBhbmQgYXJlIG5vdAorCSAqIFdB TC1sb2dnZWQuCisJICoKKwkgKiBBcyBvZiBQb3N0Z3JlU1FMIDkuMiwgdGhlIHZpc2liaWxpdHkg bWFwIGJpdCBzaG91bGQgbmV2ZXIgYmUgc2V0IGlmIHRoZQorCSAqIHBhZ2UtbGV2ZWwgYml0IGlz IGNsZWFyLiAgSG93ZXZlciwgaXQncyBwb3NzaWJsZSB0aGF0IHRoZSBiaXQgZ290CisJICogY2xl YXJlZCBhZnRlciBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSB3YXMgY2FsbGVkLCBzbyB3ZSBt dXN0IHJlY2hlY2sKKwkgKiB3aXRoIGJ1ZmZlciBsb2NrIGJlZm9yZSBjb25jbHVkaW5nIHRoYXQg dGhlIFZNIGlzIGNvcnJ1cHQuCisJICoKKwkgKiBDYWxsZXJzIHdoaWNoIGRpZCBub3QgY2hlY2sg dGhlIHZpc2liaWxpdHkgbWFwIGFuZCBkZXRlcm1pbmUKKwkgKiBibGtfa25vd25fYXYgd2lsbCBu b3QgYmUgZWxpZ2libGUgZm9yIHRoaXMsIGhvd2V2ZXIgdGhlIGNvc3Qgb2YKKwkgKiBwb3RlbnRp YWxseSBuZWVkaW5nIHRvIHJlYWQgdGhlIHZpc2liaWxpdHkgbWFwIGZvciBwYWdlcyB0aGF0IGFy ZSBub3QKKwkgKiBhbGwtdmlzaWJsZSBpcyB0b28gaGlnaCB0byBqdXN0aWZ5IGdlbmVyYWxpemlu ZyB0aGUgY2hlY2suCisJICovCisJZWxzZSBpZiAoYmxrX2tub3duX2F2ICYmICFQYWdlSXNBbGxW aXNpYmxlKGhlYXBfcGFnZSkgJiYKKwkJCSB2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMocmVsYXRp b24sIGhlYXBfYmxrLCAmdm1idWZmZXIpICE9IDApCisJeworCQllcmVwb3J0KFdBUk5JTkcsCisJ CQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCisJCQkJIGVycm1zZygicGFnZSBp cyBub3QgbWFya2VkIGFsbC12aXNpYmxlIGJ1dCB2aXNpYmlsaXR5IG1hcCBiaXQgaXMgc2V0IGlu IHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1l KHJlbGF0aW9uKSwgaGVhcF9ibGspKSk7CisKKwkJdmlzaWJpbGl0eW1hcF9jbGVhcihyZWxhdGlv biwgaGVhcF9ibGssIHZtYnVmZmVyLAorCQkJCQkJCVZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7 CisJfQorCisJLyoKKwkgKiBJdCdzIHBvc3NpYmxlIGZvciB0aGUgdmFsdWUgcmV0dXJuZWQgYnkK KwkgKiBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlvbklkKCkgdG8gbW92ZSBiYWNrd2Fy ZHMsIHNvIGl0J3Mgbm90CisJICogd3JvbmcgZm9yIHVzIHRvIHNlZSB0dXBsZXMgdGhhdCBhcHBl YXIgdG8gbm90IGJlIHZpc2libGUgdG8gZXZlcnlvbmUKKwkgKiB5ZXQsIHdoaWxlIFBEX0FMTF9W SVNJQkxFIGlzIGFscmVhZHkgc2V0LiBUaGUgcmVhbCBzYWZlIHhtaW4gdmFsdWUKKwkgKiBuZXZl ciBtb3ZlcyBiYWNrd2FyZHMsIGJ1dCBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlvbklk KCkgaXMKKwkgKiBjb25zZXJ2YXRpdmUgYW5kIHNvbWV0aW1lcyByZXR1cm5zIGEgdmFsdWUgdGhh dCdzIHVubmVjZXNzYXJpbHkgc21hbGwsCisJICogc28gaWYgd2Ugc2VlIHRoYXQgY29udHJhZGlj dGlvbiBpdCBqdXN0IG1lYW5zIHRoYXQgdGhlIHR1cGxlcyB0aGF0IHdlCisJICogdGhpbmsgYXJl IG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIHlldCBhY3R1YWxseSBhcmUsIGFuZCB0aGUKKwkgKiBQ RF9BTExfVklTSUJMRSBmbGFnIGlzIGNvcnJlY3QuCisJICoKKwkgKiBUaGVyZSBzaG91bGQgbmV2 ZXIgYmUgTFBfREVBRCBpdGVtcyBvbiBhIHBhZ2Ugd2l0aCBQRF9BTExfVklTSUJMRSBzZXQsCisJ ICogaG93ZXZlci4KKwkgKi8KKwllbHNlIGlmIChwcmVzdWx0LT5scGRlYWRfaXRlbXMgPiAwICYm IFBhZ2VJc0FsbFZpc2libGUoaGVhcF9wYWdlKSkKKwl7CisJCWVyZXBvcnQoV0FSTklORywKKwkJ CQkoZXJyY29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKKwkJCQkgZXJybXNnKCJwYWdlIGNv bnRhaW5pbmcgTFBfREVBRCBpdGVtcyBpcyBtYXJrZWQgYXMgYWxsLXZpc2libGUgaW4gcmVsYXRp b24gXCIlc1wiIHBhZ2UgJXUiLAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRp b24pLCBoZWFwX2JsaykpKTsKKworCQlQYWdlQ2xlYXJBbGxWaXNpYmxlKGhlYXBfcGFnZSk7CisJ CU1hcmtCdWZmZXJEaXJ0eShoZWFwX2J1Zik7CisJCXZpc2liaWxpdHltYXBfY2xlYXIocmVsYXRp b24sIGhlYXBfYmxrLCB2bWJ1ZmZlciwKKwkJCQkJCQlWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMp OworCX0KKworCXJldHVybiBmYWxzZTsKK30KKwogCiAvKgogICogUHJ1bmUgYW5kIHJlcGFpciBm cmFnbWVudGF0aW9uIGFuZCBwb3RlbnRpYWxseSBmcmVlemUgdHVwbGVzIG9uIHRoZQotICogc3Bl Y2lmaWVkIHBhZ2UuCisgKiBzcGVjaWZpZWQgcGFnZS4gSWYgdGhlIHBhZ2UncyB2aXNpYmlsaXR5 IHN0YXR1cyBoYXMgY2hhbmdlZCwgdXBkYXRlIGl0IGluCisgKiB0aGUgVk0uCiAgKgogICogQ2Fs bGVyIG11c3QgaGF2ZSBwaW4gYW5kIGJ1ZmZlciBjbGVhbnVwIGxvY2sgb24gdGhlIHBhZ2UuICBO b3RlIHRoYXQgd2UKICAqIGRvbid0IHVwZGF0ZSB0aGUgRlNNIGluZm9ybWF0aW9uIGZvciBwYWdl IG9uIGNhbGxlcidzIGJlaGFsZi4gIENhbGxlciBtaWdodApAQCAtNzgzLDEyICs5MDgsMTMgQEAg aGVhcF9wYWdlX3dpbGxfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAog ICogdHVwbGVzIGlmIGl0J3MgcmVxdWlyZWQgaW4gb3JkZXIgdG8gYWR2YW5jZSByZWxmcm96ZW54 aWQgLyByZWxtaW5teGlkLCBvcgogICogaWYgaXQncyBjb25zaWRlcmVkIGFkdmFudGFnZW91cyBm b3Igb3ZlcmFsbCBzeXN0ZW0gcGVyZm9ybWFuY2UgdG8gZG8gc28KICAqIG5vdy4gIFRoZSAncGFy YW1zLmN1dG9mZnMnLCAncHJlc3VsdCcsICduZXdfcmVsZnJvemVuX3hpZCcgYW5kCi0gKiAnbmV3 X3JlbG1pbl9teGlkJyBhcmd1bWVudHMgYXJlIHJlcXVpcmVkIHdoZW4gZnJlZXppbmcuICBXaGVu Ci0gKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBwYXNzZWQsIHdlIGFsc28gc2V0 IHByZXN1bHQtPmFsbF92aXNpYmxlCi0gKiBhbmQgcHJlc3VsdC0+YWxsX2Zyb3plbiBhZnRlciBk ZXRlcm1pbmluZyB3aGV0aGVyIG9yIG5vdCB0bwotICogb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXpl LCB0byBpbmRpY2F0ZSBpZiB0aGUgVk0gYml0cyBjYW4gYmUgc2V0LiAgVGhleSBhcmUKLSAqIGFs d2F5cyBzZXQgdG8gZmFsc2Ugd2hlbiB0aGUgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSBvcHRpb24g aXMgbm90IHBhc3NlZCwKLSAqIGJlY2F1c2UgYXQgdGhlIG1vbWVudCBvbmx5IGNhbGxlcnMgdGhh dCBhbHNvIGZyZWV6ZSBuZWVkIHRoYXQgaW5mb3JtYXRpb24uCisgKiAnbmV3X3JlbG1pbl9teGlk JyBhcmd1bWVudHMgYXJlIHJlcXVpcmVkIHdoZW4gZnJlZXppbmcuCisgKgorICogSWYgSEVBUF9Q QUdFX1BSVU5FX1VQREFURV9WTSBpcyBzZXQgaW4gcGFyYW1zIGFuZCB0aGUgdmlzaWJpbGl0eSBz dGF0dXMgb2YKKyAqIHRoZSBwYWdlIGhhcyBjaGFuZ2VkLCB3ZSB3aWxsIHVwZGF0ZSB0aGUgVk0g YXQgdGhlIHNhbWUgdGltZSBhcyBwcnVuaW5nIGFuZAorICogZnJlZXppbmcgdGhlIGhlYXAgcGFn ZS4gV2Ugd2lsbCBhbHNvIHVwZGF0ZSBwcmVzdWx0LT5vbGRfdm1iaXRzIGFuZAorICogcHJlc3Vs dC0+bmV3X3ZtYml0cyB3aXRoIHRoZSBzdGF0ZSBvZiB0aGUgVk0gYmVmb3JlIGFuZCBhZnRlciB1 cGRhdGluZyBpdAorICogZm9yIHRoZSBjYWxsZXIgdG8gdXNlIGluIGJvb2trZWVwaW5nLgogICoK ICAqIHByZXN1bHQgY29udGFpbnMgb3V0cHV0IHBhcmFtZXRlcnMgbmVlZGVkIGJ5IGNhbGxlcnMs IHN1Y2ggYXMgdGhlIG51bWJlciBvZgogICogdHVwbGVzIHJlbW92ZWQgYW5kIHRoZSBvZmZzZXRz IG9mIGRlYWQgaXRlbXMgb24gdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4KQEAgLTgxMywxMSArOTM5 LDE0IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJh bXMsCiAJCQkJCQkgICBNdWx0aVhhY3RJZCAqbmV3X3JlbG1pbl9teGlkKQogewogCUJ1ZmZlcgkJ YnVmZmVyID0gcGFyYW1zLT5idWZmZXI7CisJQnVmZmVyCQl2bWJ1ZmZlciA9IHBhcmFtcy0+dm1i dWZmZXI7CiAJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKKwlCbG9ja051bWJl ciBibG9ja25vID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKTsKIAlQcnVuZVN0YXRlCXBy c3RhdGU7CiAJYm9vbAkJZG9fZnJlZXplOwogCWJvb2wJCWRvX3BydW5lOwogCWJvb2wJCWRvX2hp bnRfcHJ1bmU7CisJYm9vbAkJZG9fc2V0X3ZtOwogCWJvb2wJCWRpZF90dXBsZV9oaW50X2ZwaTsK IAlpbnQ2NAkJZnBpX2JlZm9yZSA9IHBnV2FsVXNhZ2Uud2FsX2ZwaTsKIApAQCAtMTAwMSw2ICsx MTMwLDQ4IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpw YXJhbXMsCiAJCQkqbmV3X3JlbG1pbl9teGlkID0gcHJzdGF0ZS5wYWdlZnJ6Lk5vRnJlZXplUGFn ZVJlbG1pbk14aWQ7CiAJCX0KIAl9CisKKwlwcmVzdWx0LT5uZXdfdm1iaXRzID0gMDsKKwlwcmVz dWx0LT5vbGRfdm1iaXRzID0gMDsKKworCS8qIE5vdyB1cGRhdGUgdGhlIHZpc2liaWxpdHkgbWFw IGFuZCBQRF9BTExfVklTSUJMRSBoaW50ICovCisJQXNzZXJ0KCFwcnN0YXRlLmFsbF92aXNpYmxl IHx8IChwcnN0YXRlLmxwZGVhZF9pdGVtcyA9PSAwKSk7CisKKwlkb19zZXRfdm0gPSBmYWxzZTsK KwlpZiAocHJzdGF0ZS5hdHRlbXB0X3VwZGF0ZV92bSkKKwkJZG9fc2V0X3ZtID0gaGVhcF9wYWdl X3dpbGxfc2V0X3ZtKHBhcmFtcy0+cmVsYXRpb24sCisJCQkJCQkJCQkJICBibG9ja25vLAorCQkJ CQkJCQkJCSAgYnVmZmVyLAorCQkJCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJCQkJICBwYXJh bXMtPmJsa19rbm93bl9hdiwKKwkJCQkJCQkJCQkgIHByZXN1bHQsCisJCQkJCQkJCQkJICAmcHJl c3VsdC0+bmV3X3ZtYml0cyk7CisKKwkvKgorCSAqIG5ld192bWJpdHMgc2hvdWxkIGJlIDAgcmVn YXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSBpcworCSAqIGFsbC12aXNpYmxlIGlm IHdlIGRvIG5vdCBpbnRlbmQgdG8gc2V0IHRoZSBWTS4KKwkgKi8KKwlBc3NlcnQoZG9fc2V0X3Zt IHx8IHByZXN1bHQtPm5ld192bWJpdHMgPT0gMCk7CisKKwlpZiAoZG9fc2V0X3ZtKQorCXsKKwkJ LyoKKwkJICogSXQgc2hvdWxkIG5ldmVyIGJlIHRoZSBjYXNlIHRoYXQgdGhlIHZpc2liaWxpdHkg bWFwIHBhZ2UgaXMgc2V0CisJCSAqIHdoaWxlIHRoZSBwYWdlLWxldmVsIGJpdCBpcyBjbGVhciwg YnV0IHRoZSByZXZlcnNlIGlzIGFsbG93ZWQgKGlmCisJCSAqIGNoZWNrc3VtcyBhcmUgbm90IGVu YWJsZWQpLgorCQkgKgorCQkgKiBUaGUgaGVhcCBwYWdlIGlzIGFkZGVkIHRvIHRoZSBXQUwgY2hh aW4gZXZlbiBpZiBpdCB3YXNuJ3QgbW9kaWZpZWQsCisJCSAqIHNvIHdlIHN0aWxsIG5lZWQgdG8g bWFyayBpdCBkaXJ0eS4gVGhlIG9ubHkgc2NlbmFyaW8gd2hlcmUgaXQgaXNuJ3QKKwkJICogbW9k aWZpZWQgaW4gcGhhc2UgSSBpcyB3aGVuIHRoZSBWTSB3YXMgdHJ1bmNhdGVkIG9yIHJlbW92ZWQs IHdoaWNoCisJCSAqIGlzbid0IHdvcnRoIG9wdGltaXppbmcgZm9yLgorCQkgKi8KKwkJUGFnZVNl dEFsbFZpc2libGUocGFnZSk7CisJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOworCQlwcmVzdWx0 LT5vbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9zZXQocGFyYW1zLT5yZWxhdGlvbiwgYmxvY2tu bywgYnVmZmVyLAorCQkJCQkJCQkJCQkJSW52YWxpZFhMb2dSZWNQdHIsCisJCQkJCQkJCQkJCQl2 bWJ1ZmZlciwgcHJlc3VsdC0+dm1fY29uZmxpY3RfaG9yaXpvbiwKKwkJCQkJCQkJCQkJCXByZXN1 bHQtPm5ld192bWJpdHMpOworCX0KIH0KIAogCkBAIC0xNDc1LDYgKzE2NDYsOCBAQCBoZWFwX3By dW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKFBhZ2UgcGFnZSwgUHJ1bmVTdGF0ZSAqcHJz dGF0ZSwgT2Zmc2V0TnVtYgogCQkJewogCQkJCVRyYW5zYWN0aW9uSWQgeG1pbjsKIAorCQkJCUFz c2VydChwcnN0YXRlLT5hdHRlbXB0X3VwZGF0ZV92bSk7CisKIAkJCQlpZiAoIUhlYXBUdXBsZUhl YWRlclhtaW5Db21taXR0ZWQoaHR1cCkpCiAJCQkJewogCQkJCQlwcnN0YXRlLT5hbGxfdmlzaWJs ZSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDZkNWQ3MDgz NTJlLi44MWVmODFjYjhmMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAt MTk0OSwxMDMgKzE5NDksNiBAQCBjbXBPZmZzZXROdW1iZXJzKGNvbnN0IHZvaWQgKmEsIGNvbnN0 IHZvaWQgKmIpCiB9CiAKIAotLyoKLSAqIERlY2lkZSB3aGV0aGVyIHRvIHNldCB0aGUgdmlzaWJp bGl0eSBtYXAgYml0cyAoYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4pCi0gKiBmb3IgaGVhcF9i bGsgdXNpbmcgaW5mb3JtYXRpb24gZnJvbSBQcnVuZUZyZWV6ZVJlc3VsdCBhbmQKLSAqIGFsbF92 aXNpYmxlX2FjY29yZGluZ190b192bS4gVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBhY3R1YWxseSBz ZXQgdGhlIFZNCi0gKiBiaXRzIG9yIHBhZ2UtbGV2ZWwgdmlzaWJpbGl0eSBoaW50LCBQRF9BTExf VklTSUJMRS4KLSAqCi0gKiBJZiBpdCBmaW5kcyB0aGF0IHRoZSBwYWdlLWxldmVsIHZpc2liaWxp dHkgaGludCBvciBWTSBpcyBjb3JydXB0ZWQsIGl0IHdpbGwKLSAqIGZpeCB0aGVtIGJ5IGNsZWFy aW5nIHRoZSBWTSBiaXRzIGFuZCB2aXNpYmlsaXR5IHBhZ2UgaGludC4gVGhpcyBkb2VzIG5vdAot ICogbmVlZCB0byBiZSBkb25lIGluIGEgY3JpdGljYWwgc2VjdGlvbi4KLSAqCi0gKiBSZXR1cm5z IHRydWUgaWYgb25lIG9yIGJvdGggVk0gYml0cyBzaG91bGQgYmUgc2V0LCBhbG9uZyB3aXRoIHJl dHVybmluZwotICogd2hhdCBiaXRzIHNob3VsZCBiZSBzZXQgaW4gdGhlIFZNIGluICpuZXdfdm1i aXRzLgotICovCi1zdGF0aWMgYm9vbAotaGVhcF9wYWdlX3dpbGxfc2V0X3ZtKFJlbGF0aW9uIHJl bGF0aW9uLAotCQkJCQkgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLAotCQkJCQkgIEJ1ZmZlciBoZWFw X2J1ZiwKLQkJCQkJICBCdWZmZXIgdm1idWZmZXIsCi0JCQkJCSAgYm9vbCBhbGxfdmlzaWJsZV9h Y2NvcmRpbmdfdG9fdm0sCi0JCQkJCSAgY29uc3QgUHJ1bmVGcmVlemVSZXN1bHQgKnByZXN1bHQs Ci0JCQkJCSAgdWludDggKm5ld192bWJpdHMpCi17Ci0JUGFnZQkJaGVhcF9wYWdlID0gQnVmZmVy R2V0UGFnZShoZWFwX2J1Zik7Ci0KLQkqbmV3X3ZtYml0cyA9IDA7Ci0KLQkvKgotCSAqIERldGVy bWluZSB3aGF0IHRvIHNldCB0aGUgdmlzaWJpbGl0eSBtYXAgYml0cyB0byBiYXNlZCBvbiBpbmZv cm1hdGlvbgotCSAqIGZyb20gdGhlIFZNIChhcyBvZiBsYXN0IGhlYXBfdmFjX3NjYW5fbmV4dF9i bG9jaygpIGNhbGwpLCBhbmQgZnJvbQotCSAqIGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVuIHZh cmlhYmxlcy4KLQkgKi8KLQlpZiAoKHByZXN1bHQtPmFsbF92aXNpYmxlICYmICFhbGxfdmlzaWJs ZV9hY2NvcmRpbmdfdG9fdm0pIHx8Ci0JCShwcmVzdWx0LT5hbGxfZnJvemVuICYmICFWTV9BTExf RlJPWkVOKHJlbGF0aW9uLCBoZWFwX2JsaywgJnZtYnVmZmVyKSkpCi0JewotCQkqbmV3X3ZtYml0 cyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7Ci0JCWlmIChwcmVzdWx0LT5hbGxfZnJvemVu KQotCQl7Ci0JCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHByZXN1bHQtPnZtX2NvbmZs aWN0X2hvcml6b24pKTsKLQkJCSpuZXdfdm1iaXRzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pF TjsKLQkJfQotCi0JCXJldHVybiB0cnVlOwotCX0KLQotCS8qCi0JICogTm93IGhhbmRsZSB0d28g cG90ZW50aWFsIGNvcnJ1cHRpb24gY2FzZXM6Ci0JICoKLQkgKiBUaGVzZSBkbyBub3QgbmVlZCB0 byBoYXBwZW4gaW4gYSBjcml0aWNhbCBzZWN0aW9uIGFuZCBhcmUgbm90Ci0JICogV0FMLWxvZ2dl ZC4KLQkgKgotCSAqIEFzIG9mIFBvc3RncmVTUUwgOS4yLCB0aGUgdmlzaWJpbGl0eSBtYXAgYml0 IHNob3VsZCBuZXZlciBiZSBzZXQgaWYgdGhlCi0JICogcGFnZS1sZXZlbCBiaXQgaXMgY2xlYXIu ICBIb3dldmVyLCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGJpdCBnb3QKLQkgKiBjbGVhcmVkIGFm dGVyIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIHdhcyBjYWxsZWQsIHNvIHdlIG11c3QgcmVj aGVjawotCSAqIHdpdGggYnVmZmVyIGxvY2sgYmVmb3JlIGNvbmNsdWRpbmcgdGhhdCB0aGUgVk0g aXMgY29ycnVwdC4KLQkgKi8KLQllbHNlIGlmIChhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0g JiYgIVBhZ2VJc0FsbFZpc2libGUoaGVhcF9wYWdlKSAmJgotCQkJIHZpc2liaWxpdHltYXBfZ2V0 X3N0YXR1cyhyZWxhdGlvbiwgaGVhcF9ibGssICZ2bWJ1ZmZlcikgIT0gMCkKLQl7Ci0JCWVyZXBv cnQoV0FSTklORywKLQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKLQkJCQkg ZXJybXNnKCJwYWdlIGlzIG5vdCBtYXJrZWQgYWxsLXZpc2libGUgYnV0IHZpc2liaWxpdHkgbWFw IGJpdCBpcyBzZXQgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAotCQkJCQkJUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pLCBoZWFwX2JsaykpKTsKLQotCQl2aXNpYmlsaXR5bWFw X2NsZWFyKHJlbGF0aW9uLCBoZWFwX2Jsaywgdm1idWZmZXIsCi0JCQkJCQkJVklTSUJJTElUWU1B UF9WQUxJRF9CSVRTKTsKLQl9Ci0KLQkvKgotCSAqIEl0J3MgcG9zc2libGUgZm9yIHRoZSB2YWx1 ZSByZXR1cm5lZCBieQotCSAqIEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWQoKSB0 byBtb3ZlIGJhY2t3YXJkcywgc28gaXQncyBub3QKLQkgKiB3cm9uZyBmb3IgdXMgdG8gc2VlIHR1 cGxlcyB0aGF0IGFwcGVhciB0byBub3QgYmUgdmlzaWJsZSB0byBldmVyeW9uZQotCSAqIHlldCwg d2hpbGUgUERfQUxMX1ZJU0lCTEUgaXMgYWxyZWFkeSBzZXQuIFRoZSByZWFsIHNhZmUgeG1pbiB2 YWx1ZQotCSAqIG5ldmVyIG1vdmVzIGJhY2t3YXJkcywgYnV0IEdldE9sZGVzdE5vblJlbW92YWJs ZVRyYW5zYWN0aW9uSWQoKSBpcwotCSAqIGNvbnNlcnZhdGl2ZSBhbmQgc29tZXRpbWVzIHJldHVy bnMgYSB2YWx1ZSB0aGF0J3MgdW5uZWNlc3NhcmlseSBzbWFsbCwKLQkgKiBzbyBpZiB3ZSBzZWUg dGhhdCBjb250cmFkaWN0aW9uIGl0IGp1c3QgbWVhbnMgdGhhdCB0aGUgdHVwbGVzIHRoYXQgd2UK LQkgKiB0aGluayBhcmUgbm90IHZpc2libGUgdG8gZXZlcnlvbmUgeWV0IGFjdHVhbGx5IGFyZSwg YW5kIHRoZQotCSAqIFBEX0FMTF9WSVNJQkxFIGZsYWcgaXMgY29ycmVjdC4KLQkgKgotCSAqIFRo ZXJlIHNob3VsZCBuZXZlciBiZSBMUF9ERUFEIGl0ZW1zIG9uIGEgcGFnZSB3aXRoIFBEX0FMTF9W SVNJQkxFIHNldCwKLQkgKiBob3dldmVyLgotCSAqLwotCWVsc2UgaWYgKHByZXN1bHQtPmxwZGVh ZF9pdGVtcyA+IDAgJiYgUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpKQotCXsKLQkJZXJlcG9y dChXQVJOSU5HLAotCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAotCQkJCSBl cnJtc2coInBhZ2UgY29udGFpbmluZyBMUF9ERUFEIGl0ZW1zIGlzIG1hcmtlZCBhcyBhbGwtdmlz aWJsZSBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCi0JCQkJCQlSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShyZWxhdGlvbiksIGhlYXBfYmxrKSkpOwotCi0JCVBhZ2VDbGVhckFsbFZpc2libGUo aGVhcF9wYWdlKTsKLQkJTWFya0J1ZmZlckRpcnR5KGhlYXBfYnVmKTsKLQkJdmlzaWJpbGl0eW1h cF9jbGVhcihyZWxhdGlvbiwgaGVhcF9ibGssIHZtYnVmZmVyLAotCQkJCQkJCVZJU0lCSUxJVFlN QVBfVkFMSURfQklUUyk7Ci0JfQotCi0JcmV0dXJuIGZhbHNlOwotfQotCiAvKgogICoJbGF6eV9z Y2FuX3BydW5lKCkgLS0gbGF6eV9zY2FuX2hlYXAoKSBwcnVuaW5nIGFuZCBmcmVlemluZy4KICAq CkBAIC0yMDc2LDE1ICsxOTc5LDE0IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNy ZWwsCiAJCQkJYm9vbCAqdm1fcGFnZV9mcm96ZW4pCiB7CiAJUmVsYXRpb24JcmVsID0gdmFjcmVs LT5yZWw7Ci0JYm9vbAkJZG9fc2V0X3ZtID0gZmFsc2U7Ci0JdWludDgJCW5ld192bWJpdHMgPSAw OwotCXVpbnQ4CQlvbGRfdm1iaXRzID0gMDsKIAlQcnVuZUZyZWV6ZVJlc3VsdCBwcmVzdWx0Owog CVBydW5lRnJlZXplUGFyYW1zIHBhcmFtcyA9IHsKIAkJLnJlbGF0aW9uID0gcmVsLAogCQkuYnVm ZmVyID0gYnVmLAorCQkudm1idWZmZXIgPSB2bWJ1ZmZlciwKKwkJLmJsa19rbm93bl9hdiA9IGFs bF92aXNpYmxlX2FjY29yZGluZ190b192bSwKIAkJLnJlYXNvbiA9IFBSVU5FX1ZBQ1VVTV9TQ0FO LAotCQkub3B0aW9ucyA9IEhFQVBfUEFHRV9QUlVORV9GUkVFWkUsCisJCS5vcHRpb25zID0gSEVB UF9QQUdFX1BSVU5FX0ZSRUVaRSB8IEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVk0sCiAJCS52aXN0 ZXN0ID0gdmFjcmVsLT52aXN0ZXN0LAogCQkuY3V0b2ZmcyA9ICZ2YWNyZWwtPmN1dG9mZnMsCiAJ fTsKQEAgLTIxODcsNTUgKzIwODksMjQgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZh Y3JlbCwKIAkvKiBEaWQgd2UgZmluZCBMUF9ERUFEIGl0ZW1zPyAqLwogCSpoYXNfbHBkZWFkX2l0 ZW1zID0gKHByZXN1bHQubHBkZWFkX2l0ZW1zID4gMCk7CiAKLQlBc3NlcnQoIXByZXN1bHQuYWxs X3Zpc2libGUgfHwgISgqaGFzX2xwZGVhZF9pdGVtcykpOwotCUFzc2VydCghcHJlc3VsdC5hbGxf ZnJvemVuIHx8IHByZXN1bHQuYWxsX3Zpc2libGUpOwotCi0JZG9fc2V0X3ZtID0gaGVhcF9wYWdl X3dpbGxfc2V0X3ZtKHJlbCwKLQkJCQkJCQkJCSAgYmxrbm8sCi0JCQkJCQkJCQkgIGJ1ZiwKLQkJ CQkJCQkJCSAgdm1idWZmZXIsCi0JCQkJCQkJCQkgIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192 bSwKLQkJCQkJCQkJCSAgJnByZXN1bHQsCi0JCQkJCQkJCQkgICZuZXdfdm1iaXRzKTsKLQotCWlm IChkb19zZXRfdm0pCi0JewotCQkvKgotCQkgKiBJdCBzaG91bGQgbmV2ZXIgYmUgdGhlIGNhc2Ug dGhhdCB0aGUgdmlzaWJpbGl0eSBtYXAgcGFnZSBpcyBzZXQKLQkJICogd2hpbGUgdGhlIHBhZ2Ut bGV2ZWwgYml0IGlzIGNsZWFyLCBidXQgdGhlIHJldmVyc2UgaXMgYWxsb3dlZCAoaWYKLQkJICog Y2hlY2tzdW1zIGFyZSBub3QgZW5hYmxlZCkuCi0JCSAqCi0JCSAqIFRoZSBoZWFwIHBhZ2UgaXMg YWRkZWQgdG8gdGhlIFdBTCBjaGFpbiBldmVuIGlmIGl0IHdhc24ndCBtb2RpZmllZCwKLQkJICog c28gd2Ugc3RpbGwgbmVlZCB0byBtYXJrIGl0IGRpcnR5LiBUaGUgb25seSBzY2VuYXJpbyB3aGVy ZSBpdCBpc24ndAotCQkgKiBtb2RpZmllZCBpbiBwaGFzZSBJIGlzIHdoZW4gdGhlIFZNIHdhcyB0 cnVuY2F0ZWQgb3IgcmVtb3ZlZCwgd2hpY2gKLQkJICogaXNuJ3Qgd29ydGggb3B0aW1pemluZyBm b3IuCi0JCSAqLwotCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJTWFya0J1ZmZlckRpcnR5 KGJ1Zik7Ci0JCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3NldCh2YWNyZWwtPnJlbCwgYmxr bm8sIGJ1ZiwKLQkJCQkJCQkJCSAgIEludmFsaWRYTG9nUmVjUHRyLAotCQkJCQkJCQkJICAgdm1i dWZmZXIsIHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbiwKLQkJCQkJCQkJCSAgIG5ld192bWJp dHMpOwotCX0KLQogCS8qCiAJICogRm9yIHRoZSBwdXJwb3NlcyBvZiBsb2dnaW5nLCBjb3VudCB3 aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSB3YXMgbmV3bHkKIAkgKiBzZXQgYWxsLXZpc2libGUgYW5k LCBwb3RlbnRpYWxseSwgYWxsLWZyb3plbi4KIAkgKi8KLQlpZiAoKG9sZF92bWJpdHMgJiBWSVNJ QklMSVRZTUFQX0FMTF9WSVNJQkxFKSA9PSAwICYmCi0JCShuZXdfdm1iaXRzICYgVklTSUJJTElU WU1BUF9BTExfVklTSUJMRSkgIT0gMCkKKwlpZiAoKHByZXN1bHQub2xkX3ZtYml0cyAmIFZJU0lC SUxJVFlNQVBfQUxMX1ZJU0lCTEUpID09IDAgJiYKKwkJKHByZXN1bHQubmV3X3ZtYml0cyAmIFZJ U0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpICE9IDApCiAJewogCQl2YWNyZWwtPnZtX25ld192aXNp YmxlX3BhZ2VzKys7Ci0JCWlmICgobmV3X3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pF TikgIT0gMCkKKwkJaWYgKChwcmVzdWx0Lm5ld192bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9G Uk9aRU4pICE9IDApCiAJCXsKIAkJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2Vz Kys7CiAJCQkqdm1fcGFnZV9mcm96ZW4gPSB0cnVlOwogCQl9CiAJfQotCWVsc2UgaWYgKChvbGRf dm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKSA9PSAwICYmCi0JCQkgKG5ld192bWJp dHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pICE9IDApCisJZWxzZSBpZiAoKHByZXN1bHQu b2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTikgPT0gMCAmJgorCQkJIChwcmVz dWx0Lm5ld192bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pICE9IDApCiAJewotCQlB c3NlcnQoKG5ld192bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSAhPSAwKTsKKwkJ QXNzZXJ0KChwcmVzdWx0Lm5ld192bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSAh PSAwKTsKIAkJdmFjcmVsLT52bV9uZXdfZnJvemVuX3BhZ2VzKys7CiAJCSp2bV9wYWdlX2Zyb3pl biA9IHRydWU7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIv c3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IDYzMmM0MzMyYThjLi5iYjcxMmM1YjI5 ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAtNDIsNiArNDIsNyBAQAogLyogIm9wdGlvbnMiIGZsYWcg Yml0cyBmb3IgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUgKi8KICNkZWZpbmUgSEVBUF9QQUdF X1BSVU5FX01BUktfVU5VU0VEX05PVwkJKDEgPDwgMCkKICNkZWZpbmUgSEVBUF9QQUdFX1BSVU5F X0ZSRUVaRQkJCQkoMSA8PCAxKQorI2RlZmluZSBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZNCQkJ KDEgPDwgMikKIAogdHlwZWRlZiBzdHJ1Y3QgQnVsa0luc2VydFN0YXRlRGF0YSAqQnVsa0luc2Vy dFN0YXRlOwogdHlwZWRlZiBzdHJ1Y3QgR2xvYmFsVmlzU3RhdGUgR2xvYmFsVmlzU3RhdGU7CkBA IC0yMzgsNiArMjM5LDE4IEBAIHR5cGVkZWYgc3RydWN0IFBydW5lRnJlZXplUGFyYW1zCiAJUmVs YXRpb24JcmVsYXRpb247CQkvKiByZWxhdGlvbiBjb250YWluaW5nIGJ1ZmZlciB0byBiZSBwcnVu ZWQgKi8KIAlCdWZmZXIJCWJ1ZmZlcjsJCQkvKiBidWZmZXIgdG8gYmUgcHJ1bmVkICovCiAKKwkv KgorCSAqIHZtYnVmZmVyIGlzIHRoZSBidWZmZXIgdGhhdCBtdXN0IGFscmVhZHkgY29udGFpbiB0 aGUgcmVxdWlyZWQgYmxvY2sgb2YKKwkgKiB0aGUgdmlzaWJpbGl0eSBtYXAgaWYgd2UgYXJlIHRv IHVwZGF0ZSBpdC4gYmxrX2tub3duX2F2IGlzIHRoZQorCSAqIHZpc2liaWxpdHkgc3RhdHVzIG9m IHRoZSBoZWFwIGJsb2NrIGFzIG9mIHRoZSBsYXN0IGNhbGwgdG8KKwkgKiBmaW5kX25leHRfdW5z a2lwcGFibGVfYmxvY2soKS4gQ2FsbGVycyB3aGljaCBkaWQgbm90IGNoZWNrIHRoZQorCSAqIHZp c2liaWxpdHkgbWFwIGFscmVhZHkgc2hvdWxkIHBhc3MgZmFsc2UgZm9yIGJsa19rbm93bl9hdi4g VGhpcyBpcyBvbmx5CisJICogYW4gb3B0aW1pemF0aW9uIGZvciBjYWxsZXJzIHRoYXQgZGlkIGNo ZWNrIHRoZSBWTSBhbmQgd29uJ3QgYWZmZWN0CisJICogY29ycmVjdG5lc3MuCisJICovCisJQnVm ZmVyCQl2bWJ1ZmZlcjsKKwlib29sCQlibGtfa25vd25fYXY7CisKIAkvKgogCSAqIFRoZSByZWFz b24gcHJ1bmluZyB3YXMgcGVyZm9ybWVkLiAgSXQgaXMgdXNlZCB0byBzZXQgdGhlIFdBTCByZWNv cmQKIAkgKiBvcGNvZGUgd2hpY2ggaXMgdXNlZCBmb3IgZGVidWdnaW5nIGFuZCBhbmFseXNpcyBw dXJwb3Nlcy4KQEAgLTI1Miw2ICsyNjUsOSBAQCB0eXBlZGVmIHN0cnVjdCBQcnVuZUZyZWV6ZVBh cmFtcwogCSAqCiAJICogSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSBpbmRpY2F0ZXMgdGhhdCB3ZSB3 aWxsIGFsc28gZnJlZXplIHR1cGxlcywgYW5kCiAJICogd2lsbCByZXR1cm4gJ2FsbF92aXNpYmxl JywgJ2FsbF9mcm96ZW4nIGZsYWdzIHRvIHRoZSBjYWxsZXIuCisJICoKKwkgKiBIRUFQX1BBR0Vf UFJVTkVfVVBEQVRFX1ZNIGluZGljYXRlcyB0aGF0IHdlIHdpbGwgc2V0IHRoZSBwYWdlJ3Mgc3Rh dHVzCisJICogaW4gdGhlIFZNLgogCSAqLwogCWludAkJCW9wdGlvbnM7CiAKQEAgLTI5OSw2ICsz MTUsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgUHJ1bmVGcmVlemVSZXN1bHQKIAlib29sCQlhbGxfZnJv emVuOwogCVRyYW5zYWN0aW9uSWQgdm1fY29uZmxpY3RfaG9yaXpvbjsKIAorCS8qCisJICogb2xk X3ZtYml0cyBhcmUgdGhlIHN0YXRlIG9mIHRoZSBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3plbiBi aXRzIGluIHRoZQorCSAqIHZpc2liaWxpdHkgbWFwIGJlZm9yZSB1cGRhdGluZyBpdCBkdXJpbmcg cGhhc2UgSSBvZiB2YWN1dW1pbmcuCisJICogbmV3X3ZtYml0cyBhcmUgdGhlIHN0YXRlIG9mIHRo b3NlIGJpdHMgYWZ0ZXIgcGhhc2UgSSBvZiB2YWN1dW1pbmcuCisJICoKKwkgKiBUaGVzZSBhcmUg b25seSBzZXQgaWYgdGhlIEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVk0gb3B0aW9uIGlzIHNldCBh bmQKKwkgKiB3ZSBoYXZlIGF0dGVtcHRlZCB0byB1cGRhdGUgdGhlIFZNLgorCSAqLworCXVpbnQ4 CQluZXdfdm1iaXRzOworCXVpbnQ4CQlvbGRfdm1iaXRzOworCiAJLyoKIAkgKiBXaGV0aGVyIG9y IG5vdCB0aGUgcGFnZSBtYWtlcyByZWwgdHJ1bmNhdGlvbiB1bnNhZmUuICBUaGlzIGlzIHNldCB0 bwogCSAqICd0cnVlJywgZXZlbiBpZiB0aGUgcGFnZSBjb250YWlucyBMUF9ERUFEIGl0ZW1zLiAg VkFDVVVNIHdpbGwgcmVtb3ZlCi0tIAoyLjQzLjAKCg== --000000000000b196150645a17d5e Content-Type: application/x-patch; name="v25-0004-Move-VM-assert-into-prune-freeze-code.patch" Content-Disposition: attachment; filename="v25-0004-Move-VM-assert-into-prune-freeze-code.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj0m7pk13 RnJvbSAwMDc2ZGExNDY2OGI4MTk4NmM3ZGI5YjZlZWI0NjRmNzBmYzM4NzBkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTU6NTc6MzQgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyNSAwNC8xNF0gTW92ZSBWTSBhc3NlcnQgaW50byBwcnVuZS9mcmVlemUgY29kZQoKVGhp cyBpcyBhIHN0ZXAgdG93YXJkIHNldHRpbmcgdGhlIFZNIGluIHRoZSBzYW1lIFdBTCByZWNvcmQg YXMgcHJ1bmluZwphbmQgZnJlZXppbmcuIEl0IG1vdmVzIHRoZSBjaGVjayBvZiB0aGUgaGVhcCBw YWdlIGludG8gcHJ1bmUvZnJlZXplIGNvZGUKYmVmb3JlIHNldHRpbmcgdGhlIFZNLiBUaGlzIGFs bG93cyB1cyB0byByZW1vdmUgc29tZSBmaWVsZHMgb2YgdGhlClBydW5lRnJlZXplUmVzdWx0Lgot LS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICB8IDEzNCArKysrKysrKysr KysrKysrKysrLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8 ICA2OCArLS0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAg IHwgIDI1ICsrLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDEwNCBpbnNlcnRpb25zKCspLCAxMjMgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFw LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCBkN2YzNmUyNzY0 Zi4uMWIwMjczYzAyYzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5l aGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0xOTks NyArMTk5LDcgQEAgc3RhdGljIGJvb2wgaGVhcF9wYWdlX3dpbGxfc2V0X3ZtKFJlbGF0aW9uIHJl bGF0aW9uLAogCQkJCQkJCQkgIEJ1ZmZlciBoZWFwX2J1ZiwKIAkJCQkJCQkJICBCdWZmZXIgdm1i dWZmZXIsCiAJCQkJCQkJCSAgYm9vbCBibGtfa25vd25fYXYsCi0JCQkJCQkJCSAgY29uc3QgUHJ1 bmVGcmVlemVSZXN1bHQgKnByZXN1bHQsCisJCQkJCQkJCSAgY29uc3QgUHJ1bmVTdGF0ZSAqcHJz dGF0ZSwKIAkJCQkJCQkJICB1aW50OCAqbmV3X3ZtYml0cyk7CiAKIApAQCAtNzg0LDkgKzc4NCw5 IEBAIGhlYXBfcGFnZV93aWxsX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZl ciwKIAogLyoKICAqIERlY2lkZSB3aGV0aGVyIHRvIHNldCB0aGUgdmlzaWJpbGl0eSBtYXAgYml0 cyAoYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4pCi0gKiBmb3IgaGVhcF9ibGsgdXNpbmcgaW5m b3JtYXRpb24gZnJvbSBQcnVuZUZyZWV6ZVJlc3VsdCBhbmQgYmxrX2tub3duX2F2LgotICogU29t ZSBjYWxsZXJzIG1heSBhbHJlYWR5IGhhdmUgZXhhbWluZWQgdGhpcyBwYWdl4oCZcyBWTSBiaXRz IChlLmcuLCBWQUNVVU0gaW4KLSAqIHRoZSBwcmV2aW91cyBoZWFwX3ZhY19zY2FuX25leHRfYmxv Y2soKSBjYWxsKSBhbmQgY2FuIHBhc3MgdGhhdCBhbG9uZyBhcworICogZm9yIGhlYXBfYmxrIHVz aW5nIGluZm9ybWF0aW9uIGZyb20gUHJ1bmVTdGF0ZSBhbmQgYmxrX2tub3duX2F2LiBTb21lCisg KiBjYWxsZXJzIG1heSBhbHJlYWR5IGhhdmUgZXhhbWluZWQgdGhpcyBwYWdl4oCZcyBWTSBiaXRz IChlLmcuLCBWQUNVVU0gaW4gdGhlCisgKiBwcmV2aW91cyBoZWFwX3ZhY19zY2FuX25leHRfYmxv Y2soKSBjYWxsKSBhbmQgY2FuIHBhc3MgdGhhdCBhbG9uZyBhcwogICogYmxrX2tub3duX2F2LiBD YWxsZXJzIHRoYXQgaGF2ZSBub3QgcHJldmlvdXNseSBjaGVja2VkIHRoZSBwYWdlJ3Mgc3RhdHVz IGluCiAgKiB0aGUgVk0gc2hvdWxkIHBhc3MgZmFsc2UgZm9yIGJsa19rbm93bl9hdi4KICAqCkBA IC04MDYsMjcgKzgwNiwzMCBAQCBoZWFwX3BhZ2Vfd2lsbF9zZXRfdm0oUmVsYXRpb24gcmVsYXRp b24sCiAJCQkJCSAgQnVmZmVyIGhlYXBfYnVmLAogCQkJCQkgIEJ1ZmZlciB2bWJ1ZmZlciwKIAkJ CQkJICBib29sIGJsa19rbm93bl9hdiwKLQkJCQkJICBjb25zdCBQcnVuZUZyZWV6ZVJlc3VsdCAq cHJlc3VsdCwKKwkJCQkJICBjb25zdCBQcnVuZVN0YXRlICpwcnN0YXRlLAogCQkJCQkgIHVpbnQ4 ICpuZXdfdm1iaXRzKQogewogCVBhZ2UJCWhlYXBfcGFnZSA9IEJ1ZmZlckdldFBhZ2UoaGVhcF9i dWYpOwogCiAJKm5ld192bWJpdHMgPSAwOwogCisJaWYgKCFwcnN0YXRlLT5hdHRlbXB0X3VwZGF0 ZV92bSkKKwl7CisJCUFzc2VydCghcHJzdGF0ZS0+YWxsX3Zpc2libGUgJiYgIXByc3RhdGUtPmFs bF9mcm96ZW4pOworCQlyZXR1cm4gZmFsc2U7CisJfQorCiAJLyoKIAkgKiBEZXRlcm1pbmUgd2hh dCB0aGUgdmlzaWJpbGl0eSBtYXAgYml0cyBzaG91bGQgYmUgc2V0IHRvIHVzaW5nIHRoZQogCSAq IHZhbHVlcyBvZiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBkZXRlcm1pbmVkIGR1cmluZwog CSAqIHBydW5pbmcvZnJlZXppbmcuCiAJICovCi0JaWYgKChwcmVzdWx0LT5hbGxfdmlzaWJsZSAm JiAhYmxrX2tub3duX2F2KSB8fAotCQkocHJlc3VsdC0+YWxsX2Zyb3plbiAmJiAhVk1fQUxMX0ZS T1pFTihyZWxhdGlvbiwgaGVhcF9ibGssICZ2bWJ1ZmZlcikpKQorCWlmICgocHJzdGF0ZS0+YWxs X3Zpc2libGUgJiYgIWJsa19rbm93bl9hdikgfHwKKwkJKHByc3RhdGUtPmFsbF9mcm96ZW4gJiYg IVZNX0FMTF9GUk9aRU4ocmVsYXRpb24sIGhlYXBfYmxrLCAmdm1idWZmZXIpKSkKIAl7CiAJCSpu ZXdfdm1iaXRzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKLQkJaWYgKHByZXN1bHQtPmFs bF9mcm96ZW4pCi0JCXsKLQkJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQocHJlc3VsdC0+ dm1fY29uZmxpY3RfaG9yaXpvbikpOworCQlpZiAocHJzdGF0ZS0+YWxsX2Zyb3plbikKIAkJCSpu ZXdfdm1iaXRzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKLQkJfQogCiAJCXJldHVybiB0 cnVlOwogCX0KQEAgLTg3Myw3ICs4NzYsNyBAQCBoZWFwX3BhZ2Vfd2lsbF9zZXRfdm0oUmVsYXRp b24gcmVsYXRpb24sCiAJICogVGhlcmUgc2hvdWxkIG5ldmVyIGJlIExQX0RFQUQgaXRlbXMgb24g YSBwYWdlIHdpdGggUERfQUxMX1ZJU0lCTEUgc2V0LAogCSAqIGhvd2V2ZXIuCiAJICovCi0JZWxz ZSBpZiAocHJlc3VsdC0+bHBkZWFkX2l0ZW1zID4gMCAmJiBQYWdlSXNBbGxWaXNpYmxlKGhlYXBf cGFnZSkpCisJZWxzZSBpZiAocHJzdGF0ZS0+bHBkZWFkX2l0ZW1zID4gMCAmJiBQYWdlSXNBbGxW aXNpYmxlKGhlYXBfcGFnZSkpCiAJewogCQllcmVwb3J0KFdBUk5JTkcsCiAJCQkJKGVycmNvZGUo RVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCkBAIC04ODksNiArODkyLDMwIEBAIGhlYXBfcGFnZV93 aWxsX3NldF92bShSZWxhdGlvbiByZWxhdGlvbiwKIAlyZXR1cm4gZmFsc2U7CiB9CiAKKyNpZmRl ZiBVU0VfQVNTRVJUX0NIRUNLSU5HCisKKy8qCisgKiBXcmFwcGVyIGZvciBoZWFwX3BhZ2Vfd291 bGRfYmVfYWxsX3Zpc2libGUoKSB3aGljaCBjYW4gYmUgdXNlZCBmb3IgY2FsbGVycworICogdGhh dCBleHBlY3Qgbm8gTFBfREVBRCBvbiB0aGUgcGFnZS4gQ3VycmVudGx5IGFzc2VydC1vbmx5LCBi dXQgdGhlcmUgaXMgbm8KKyAqIHJlYXNvbiBub3QgdG8gdXNlIGl0IG91dHNpZGUgb2YgYXNzZXJ0 cy4KKyAqLworc3RhdGljIGJvb2wKK2hlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiBy ZWwsIEJ1ZmZlciBidWYsCisJCQkJCQkgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJCQkJ IGJvb2wgKmFsbF9mcm96ZW4sCisJCQkJCQkgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRv ZmZfeGlkLAorCQkJCQkJIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0pCit7CisKKwlyZXR1 cm4gaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKHJlbCwgYnVmLAorCQkJCQkJCQkJCSAg T2xkZXN0WG1pbiwKKwkJCQkJCQkJCQkgIE5VTEwsIDAsCisJCQkJCQkJCQkJICBhbGxfZnJvemVu LAorCQkJCQkJCQkJCSAgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAorCQkJCQkJCQkJCSAgbG9nZ2lu Z19vZmZudW0pOworfQorI2VuZGlmCisKIAogLyoKICAqIFBydW5lIGFuZCByZXBhaXIgZnJhZ21l bnRhdGlvbiBhbmQgcG90ZW50aWFsbHkgZnJlZXplIHR1cGxlcyBvbiB0aGUKQEAgLTk0Miw2ICs5 NjksNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFy YW1zLAogCUJ1ZmZlcgkJdm1idWZmZXIgPSBwYXJhbXMtPnZtYnVmZmVyOwogCVBhZ2UJCXBhZ2Ug PSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAJQmxvY2tOdW1iZXIgYmxvY2tubyA9IEJ1ZmZlckdl dEJsb2NrTnVtYmVyKGJ1ZmZlcik7CisJVHJhbnNhY3Rpb25JZCB2bV9jb25mbGljdF9ob3Jpem9u ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJUHJ1bmVTdGF0ZQlwcnN0YXRlOwogCWJvb2wJCWRv X2ZyZWV6ZTsKIAlib29sCQlkb19wcnVuZTsKQEAgLTEwOTcsMjMgKzExMjUsOCBAQCBoZWFwX3Bh Z2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCXByZXN1bHQt Pm5mcm96ZW4gPSBwcnN0YXRlLm5mcm96ZW47CiAJcHJlc3VsdC0+bGl2ZV90dXBsZXMgPSBwcnN0 YXRlLmxpdmVfdHVwbGVzOwogCXByZXN1bHQtPnJlY2VudGx5X2RlYWRfdHVwbGVzID0gcHJzdGF0 ZS5yZWNlbnRseV9kZWFkX3R1cGxlczsKLQlwcmVzdWx0LT5hbGxfdmlzaWJsZSA9IHByc3RhdGUu YWxsX3Zpc2libGU7Ci0JcHJlc3VsdC0+YWxsX2Zyb3plbiA9IHByc3RhdGUuYWxsX2Zyb3plbjsK IAlwcmVzdWx0LT5oYXN0dXAgPSBwcnN0YXRlLmhhc3R1cDsKIAotCS8qCi0JICogRm9yIGNhbGxl cnMgcGxhbm5pbmcgdG8gdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcCwgdGhlIGNvbmZsaWN0IGhv cml6b24KLQkgKiBmb3IgdGhhdCByZWNvcmQgbXVzdCBiZSB0aGUgbmV3ZXN0IHhtaW4gb24gdGhl IHBhZ2UuICBIb3dldmVyLCBpZiB0aGUKLQkgKiBwYWdlIGlzIGNvbXBsZXRlbHkgZnJvemVuLCB0 aGVyZSBjYW4gYmUgbm8gY29uZmxpY3QgYW5kIHRoZQotCSAqIHZtX2NvbmZsaWN0X2hvcml6b24g c2hvdWxkIHJlbWFpbiBJbnZhbGlkVHJhbnNhY3Rpb25JZC4gIFRoaXMgaW5jbHVkZXMKLQkgKiB0 aGUgY2FzZSB0aGF0IHdlIGp1c3QgZnJvemUgYWxsIHRoZSB0dXBsZXM7IHRoZSBwcnVuZS1mcmVl emUgcmVjb3JkCi0JICogaW5jbHVkZWQgdGhlIGNvbmZsaWN0IFhJRCBhbHJlYWR5IHNvIHRoZSBj YWxsZXIgZG9lc24ndCBuZWVkIGl0LgotCSAqLwotCWlmIChwcmVzdWx0LT5hbGxfZnJvemVuKQot CQlwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9uID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7Ci0J ZWxzZQotCQlwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9uID0gcHJzdGF0ZS52aXNpYmlsaXR5 X2N1dG9mZl94aWQ7Ci0KIAlwcmVzdWx0LT5scGRlYWRfaXRlbXMgPSBwcnN0YXRlLmxwZGVhZF9p dGVtczsKIAkvKiB0aGUgcHJlc3VsdC0+ZGVhZG9mZnNldHMgYXJyYXkgd2FzIGFscmVhZHkgZmls bGVkIGluICovCiAKQEAgLTExMzQsMTggKzExNDcsNjAgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9m cmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAlwcmVzdWx0LT5uZXdfdm1iaXRzID0g MDsKIAlwcmVzdWx0LT5vbGRfdm1iaXRzID0gMDsKIAotCS8qIE5vdyB1cGRhdGUgdGhlIHZpc2li aWxpdHkgbWFwIGFuZCBQRF9BTExfVklTSUJMRSBoaW50ICovCisJLyoKKwkgKiBJZiB1cGRhdGlu ZyB0aGUgdmlzaWJpbGl0eSBtYXAsIHRoZSBjb25mbGljdCBob3Jpem9uIGZvciB0aGF0IHJlY29y ZAorCSAqIG11c3QgYmUgdGhlIG5ld2VzdCB4bWluIG9uIHRoZSBwYWdlLiAgSG93ZXZlciwgaWYg dGhlIHBhZ2UgaXMKKwkgKiBjb21wbGV0ZWx5IGZyb3plbiwgdGhlcmUgY2FuIGJlIG5vIGNvbmZs aWN0IGFuZCB0aGUgdm1fY29uZmxpY3RfaG9yaXpvbgorCSAqIHNob3VsZCByZW1haW4gSW52YWxp ZFRyYW5zYWN0aW9uSWQuICBUaGlzIGluY2x1ZGVzIHRoZSBjYXNlIHRoYXQgd2UKKwkgKiBqdXN0 IGZyb3plIGFsbCB0aGUgdHVwbGVzOyB0aGUgcHJ1bmUtZnJlZXplIHJlY29yZCBpbmNsdWRlZCB0 aGUKKwkgKiBjb25mbGljdCBYSUQgYWxyZWFkeSBzbyB3ZSBkb24ndCBuZWVkIHRvIGFnYWluLgor CSAqLworCWlmIChwcnN0YXRlLmFsbF9mcm96ZW4pCisJCXZtX2NvbmZsaWN0X2hvcml6b24gPSBJ bnZhbGlkVHJhbnNhY3Rpb25JZDsKKwllbHNlCisJCXZtX2NvbmZsaWN0X2hvcml6b24gPSBwcnN0 YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKKworCS8qCisJICogRHVyaW5nIGl0cyBzZWNvbmQg cGFzcyBvdmVyIHRoZSBoZWFwLCBWQUNVVU0gY2FsbHMKKwkgKiBoZWFwX3BhZ2Vfd291bGRfYmVf YWxsX3Zpc2libGUoKSB0byBkZXRlcm1pbmUgd2hldGhlciBhIHBhZ2UgaXMKKwkgKiBhbGwtdmlz aWJsZSBhbmQgYWxsLWZyb3plbi4gVGhlIGxvZ2ljIGhlcmUgaXMgc2ltaWxhci4gQWZ0ZXIgY29t cGxldGluZworCSAqIHBydW5pbmcgYW5kIGZyZWV6aW5nLCB1c2UgYW4gYXNzZXJ0aW9uIHRvIHZl cmlmeSB0aGF0IG91ciByZXN1bHRzCisJICogcmVtYWluIGNvbnNpc3RlbnQgd2l0aCBoZWFwX3Bh Z2Vfd291bGRfYmVfYWxsX3Zpc2libGUoKS4KKwkgKi8KKyNpZmRlZiBVU0VfQVNTRVJUX0NIRUNL SU5HCisJaWYgKHByc3RhdGUuYWxsX3Zpc2libGUpCisJeworCQlUcmFuc2FjdGlvbklkIGRlYnVn X2N1dG9mZjsKKwkJYm9vbAkJZGVidWdfYWxsX2Zyb3plbjsKKworCQlBc3NlcnQocHJlc3VsdC0+ bHBkZWFkX2l0ZW1zID09IDApOworCisJCUFzc2VydChoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUo cGFyYW1zLT5yZWxhdGlvbiwgYnVmZmVyLAorCQkJCQkJCQkJCXByc3RhdGUuY3V0b2Zmcy0+T2xk ZXN0WG1pbiwKKwkJCQkJCQkJCQkmZGVidWdfYWxsX2Zyb3plbiwKKwkJCQkJCQkJCQkmZGVidWdf Y3V0b2ZmLCBvZmZfbG9jKSk7CisKKwkJQXNzZXJ0KHByc3RhdGUuYWxsX2Zyb3plbiA9PSBkZWJ1 Z19hbGxfZnJvemVuKTsKKworCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGRlYnVnX2N1 dG9mZikgfHwKKwkJCSAgIGRlYnVnX2N1dG9mZiA9PSB2bV9jb25mbGljdF9ob3Jpem9uKTsKKwl9 CisjZW5kaWYKKworCUFzc2VydCghcHJzdGF0ZS5hbGxfZnJvemVuIHx8IHByc3RhdGUuYWxsX3Zp c2libGUpOwogCUFzc2VydCghcHJzdGF0ZS5hbGxfdmlzaWJsZSB8fCAocHJzdGF0ZS5scGRlYWRf aXRlbXMgPT0gMCkpOwogCi0JZG9fc2V0X3ZtID0gZmFsc2U7Ci0JaWYgKHByc3RhdGUuYXR0ZW1w dF91cGRhdGVfdm0pCi0JCWRvX3NldF92bSA9IGhlYXBfcGFnZV93aWxsX3NldF92bShwYXJhbXMt PnJlbGF0aW9uLAotCQkJCQkJCQkJCSAgYmxvY2tubywKLQkJCQkJCQkJCQkgIGJ1ZmZlciwKLQkJ CQkJCQkJCQkgIHZtYnVmZmVyLAotCQkJCQkJCQkJCSAgcGFyYW1zLT5ibGtfa25vd25fYXYsCi0J CQkJCQkJCQkJICBwcmVzdWx0LAotCQkJCQkJCQkJCSAgJnByZXN1bHQtPm5ld192bWJpdHMpOwor CS8qCisJICogRGVjaWRlIHdoZXRoZXIgdG8gc2V0IHRoZSBWTSBiaXRzIGJhc2VkIG9uIGluZm9y bWF0aW9uIGZyb20gdGhlIFZNIGFuZAorCSAqIHRoZSBhbGxfdmlzaWJsZS9hbGxfZnJvemVuIGZs YWdzLgorCSAqLworCWRvX3NldF92bSA9IGhlYXBfcGFnZV93aWxsX3NldF92bShwYXJhbXMtPnJl bGF0aW9uLAorCQkJCQkJCQkJICBibG9ja25vLAorCQkJCQkJCQkJICBidWZmZXIsCisJCQkJCQkJ CQkgIHZtYnVmZmVyLAorCQkJCQkJCQkJICBwYXJhbXMtPmJsa19rbm93bl9hdiwKKwkJCQkJCQkJ CSAgJnByc3RhdGUsCisJCQkJCQkJCQkgICZwcmVzdWx0LT5uZXdfdm1iaXRzKTsKIAogCS8qCiAJ ICogbmV3X3ZtYml0cyBzaG91bGQgYmUgMCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3Igbm90IHRo ZSBwYWdlIGlzCkBAIC0xMTU4LDcgKzEyMTMsOCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6 ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkvKgogCQkgKiBJdCBzaG91bGQgbmV2ZXIg YmUgdGhlIGNhc2UgdGhhdCB0aGUgdmlzaWJpbGl0eSBtYXAgcGFnZSBpcyBzZXQKIAkJICogd2hp bGUgdGhlIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLCBidXQgdGhlIHJldmVyc2UgaXMgYWxsb3dl ZCAoaWYKLQkJICogY2hlY2tzdW1zIGFyZSBub3QgZW5hYmxlZCkuCisJCSAqIGNoZWNrc3VtcyBh cmUgbm90IGVuYWJsZWQpLiBIb3dldmVyLCB3ZSBzdHJvbmdseSBwcmVmZXIgdG8ga2VlcAorCQkg KiB0aGVtIGluIHN5bmMuCiAJCSAqCiAJCSAqIFRoZSBoZWFwIHBhZ2UgaXMgYWRkZWQgdG8gdGhl IFdBTCBjaGFpbiBldmVuIGlmIGl0IHdhc24ndCBtb2RpZmllZCwKIAkJICogc28gd2Ugc3RpbGwg bmVlZCB0byBtYXJrIGl0IGRpcnR5LiBUaGUgb25seSBzY2VuYXJpbyB3aGVyZSBpdCBpc24ndApA QCAtMTE2OSw3ICsxMjI1LDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVl emVQYXJhbXMgKnBhcmFtcywKIAkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CiAJCXByZXN1bHQt Pm9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3NldChwYXJhbXMtPnJlbGF0aW9uLCBibG9ja25v LCBidWZmZXIsCiAJCQkJCQkJCQkJCQlJbnZhbGlkWExvZ1JlY1B0ciwKLQkJCQkJCQkJCQkJCXZt YnVmZmVyLCBwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9uLAorCQkJCQkJCQkJCQkJdm1idWZm ZXIsIHZtX2NvbmZsaWN0X2hvcml6b24sCiAJCQkJCQkJCQkJCQlwcmVzdWx0LT5uZXdfdm1iaXRz KTsKIAl9CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggODFlZjgxY2I4 ZjMuLjI5MzgyNTUwYzAzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC00 NjQsMjAgKzQ2NCw2IEBAIHN0YXRpYyB2b2lkIGRlYWRfaXRlbXNfYWRkKExWUmVsU3RhdGUgKnZh Y3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIE9mZnNldE51bWJlciAqCiBzdGF0aWMgdm9pZCBkZWFk X2l0ZW1zX3Jlc2V0KExWUmVsU3RhdGUgKnZhY3JlbCk7CiBzdGF0aWMgdm9pZCBkZWFkX2l0ZW1z X2NsZWFudXAoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIAotI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJ TkcKLXN0YXRpYyBib29sIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1 ZmZlciBidWYsCi0JCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAotCQkJCQkJCQkJ IGJvb2wgKmFsbF9mcm96ZW4sCi0JCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9j dXRvZmZfeGlkLAotCQkJCQkJCQkJIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0pOwotI2Vu ZGlmCi1zdGF0aWMgYm9vbCBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24g cmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwK LQkJCQkJCQkJCQkgICBPZmZzZXROdW1iZXIgKmRlYWRvZmZzZXRzLAotCQkJCQkJCQkJCSAgIGlu dCBuZGVhZG9mZnNldHMsCi0JCQkJCQkJCQkJICAgYm9vbCAqYWxsX2Zyb3plbiwKLQkJCQkJCQkJ CQkgICBUcmFuc2FjdGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsCi0JCQkJCQkJCQkJICAg T2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSk7CiBzdGF0aWMgdm9pZCB1cGRhdGVfcmVsc3Rh dHNfYWxsX2luZGV4ZXMoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIHN0YXRpYyB2b2lkIHZhY3V1bV9l cnJvcl9jYWxsYmFjayh2b2lkICphcmcpOwogc3RhdGljIHZvaWQgdXBkYXRlX3ZhY3V1bV9lcnJv cl9pbmZvKExWUmVsU3RhdGUgKnZhY3JlbCwKQEAgLTIwMzAsMzIgKzIwMTYsNiBAQCBsYXp5X3Nj YW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCQl2YWNyZWwtPm5ld19mcm96ZW5fdHVwbGVf cGFnZXMrKzsKIAl9CiAKLQkvKgotCSAqIFZBQ1VVTSB3aWxsIGNhbGwgaGVhcF9wYWdlX2lzX2Fs bF92aXNpYmxlKCkgZHVyaW5nIHRoZSBzZWNvbmQgcGFzcyBvdmVyCi0JICogdGhlIGhlYXAgdG8g ZGV0ZXJtaW5lIGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVuIGZvciB0aGUgcGFnZSAtLSB0aGlz Ci0JICogaXMgYSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIHRoZSBsb2dpYyBmcm9tIHRoaXMgZnVu Y3Rpb24uICBOb3cgdGhhdAotCSAqIHdlJ3ZlIGZpbmlzaGVkIHBydW5pbmcgYW5kIGZyZWV6aW5n LCBtYWtlIHN1cmUgdGhhdCB3ZSdyZSBpbiB0b3RhbAotCSAqIGFncmVlbWVudCB3aXRoIGhlYXBf cGFnZV9pc19hbGxfdmlzaWJsZSgpIHVzaW5nIGFuIGFzc2VydGlvbi4KLQkgKi8KLSNpZmRlZiBV U0VfQVNTRVJUX0NIRUNLSU5HCi0JaWYgKHByZXN1bHQuYWxsX3Zpc2libGUpCi0JewotCQlUcmFu c2FjdGlvbklkIGRlYnVnX2N1dG9mZjsKLQkJYm9vbAkJZGVidWdfYWxsX2Zyb3plbjsKLQotCQlB c3NlcnQocHJlc3VsdC5scGRlYWRfaXRlbXMgPT0gMCk7Ci0KLQkJQXNzZXJ0KGhlYXBfcGFnZV9p c19hbGxfdmlzaWJsZSh2YWNyZWwtPnJlbCwgYnVmLAotCQkJCQkJCQkJCXZhY3JlbC0+Y3V0b2Zm cy5PbGRlc3RYbWluLCAmZGVidWdfYWxsX2Zyb3plbiwKLQkJCQkJCQkJCQkmZGVidWdfY3V0b2Zm LCAmdmFjcmVsLT5vZmZudW0pKTsKLQotCQlBc3NlcnQocHJlc3VsdC5hbGxfZnJvemVuID09IGRl YnVnX2FsbF9mcm96ZW4pOwotCi0JCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVidWdf Y3V0b2ZmKSB8fAotCQkJICAgZGVidWdfY3V0b2ZmID09IHByZXN1bHQudm1fY29uZmxpY3RfaG9y aXpvbik7Ci0JfQotI2VuZGlmCi0KIAkvKgogCSAqIE5vdyBzYXZlIGRldGFpbHMgb2YgdGhlIExQ X0RFQUQgaXRlbXMgZnJvbSB0aGUgcGFnZSBpbiB2YWNyZWwKIAkgKi8KQEAgLTM1MTEsMjkgKzM0 NzEsNiBAQCBkZWFkX2l0ZW1zX2NsZWFudXAoTFZSZWxTdGF0ZSAqdmFjcmVsKQogCXZhY3JlbC0+ cHZzID0gTlVMTDsKIH0KIAotI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKLQotLyoKLSAqIFdy YXBwZXIgZm9yIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSgpIHdoaWNoIGNhbiBiZSB1 c2VkIGZvciBjYWxsZXJzCi0gKiB0aGF0IGV4cGVjdCBubyBMUF9ERUFEIG9uIHRoZSBwYWdlLiBD dXJyZW50bHkgYXNzZXJ0LW9ubHksIGJ1dCB0aGVyZSBpcyBubwotICogcmVhc29uIG5vdCB0byB1 c2UgaXQgb3V0c2lkZSBvZiBhc3NlcnRzLgotICovCi1zdGF0aWMgYm9vbAotaGVhcF9wYWdlX2lz X2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKLQkJCQkJCSBUcmFuc2FjdGlv bklkIE9sZGVzdFhtaW4sCi0JCQkJCQkgYm9vbCAqYWxsX2Zyb3plbiwKLQkJCQkJCSBUcmFuc2Fj dGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsCi0JCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dn aW5nX29mZm51bSkKLXsKLQotCXJldHVybiBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUo cmVsLCBidWYsCi0JCQkJCQkJCQkJICBPbGRlc3RYbWluLAotCQkJCQkJCQkJCSAgTlVMTCwgMCwK LQkJCQkJCQkJCQkgIGFsbF9mcm96ZW4sCi0JCQkJCQkJCQkJICB2aXNpYmlsaXR5X2N1dG9mZl94 aWQsCi0JCQkJCQkJCQkJICBsb2dnaW5nX29mZm51bSk7Ci19Ci0jZW5kaWYKIAogLyoKICAqIENo ZWNrIHdoZXRoZXIgdGhlIGhlYXAgcGFnZSBpbiBidWYgaXMgYWxsLXZpc2libGUgZXhjZXB0IGZv ciB0aGUgZGVhZApAQCAtMzU1NywxNSArMzQ5NCwxMiBAQCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2li bGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogICogIC0gKmxvZ2dpbmdfb2ZmbnVtOiBPZmZz ZXROdW1iZXIgb2YgY3VycmVudCB0dXBsZSBiZWluZyBwcm9jZXNzZWQ7CiAgKiAgICAgdXNlZCBi eSB2YWN1dW0ncyBlcnJvciBjYWxsYmFjayBzeXN0ZW0uCiAgKgotICogQ2FsbGVycyBsb29raW5n IHRvIHZlcmlmeSB0aGF0IHRoZSBwYWdlIGlzIGFscmVhZHkgYWxsLXZpc2libGUgY2FuIGNhbGwK LSAqIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSgpLgotICoKICAqIFRoaXMgbG9naWMgaXMgY2xv c2VseSByZWxhdGVkIHRvIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoKS4K ICAqIElmIHlvdSBtb2RpZnkgdGhpcyBmdW5jdGlvbiwgZW5zdXJlIGNvbnNpc3RlbmN5IHdpdGgg dGhhdCBjb2RlLiBBbgogICogYXNzZXJ0aW9uIGNyb3NzLWNoZWNrcyB0aGF0IGJvdGggcmVtYWlu IGluIGFncmVlbWVudC4gRG8gbm90IGludHJvZHVjZSBuZXcKICAqIHNpZGUtZWZmZWN0cy4KICAq Lwotc3RhdGljIGJvb2wKK2Jvb2wKIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxh dGlvbiByZWwsIEJ1ZmZlciBidWYsCiAJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWlu LAogCQkJCQkJCSAgIE9mZnNldE51bWJlciAqZGVhZG9mZnNldHMsCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5k ZXggYmI3MTJjNWIyOWYuLjM5MmFmNjUwM2RhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nl c3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC0yNjMsOCAr MjYzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUHJ1bmVGcmVlemVQYXJhbXMKIAkgKiBIRUFQX1BBR0Vf UFJVTkVfTUFSS19VTlVTRURfTk9XIGluZGljYXRlcyB0aGF0IGRlYWQgaXRlbXMgY2FuIGJlIHNl dAogCSAqIExQX1VOVVNFRCBkdXJpbmcgcHJ1bmluZy4KIAkgKgotCSAqIEhFQVBfUEFHRV9QUlVO RV9GUkVFWkUgaW5kaWNhdGVzIHRoYXQgd2Ugd2lsbCBhbHNvIGZyZWV6ZSB0dXBsZXMsIGFuZAot CSAqIHdpbGwgcmV0dXJuICdhbGxfdmlzaWJsZScsICdhbGxfZnJvemVuJyBmbGFncyB0byB0aGUg Y2FsbGVyLgorCSAqIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUgaW5kaWNhdGVzIHRoYXQgd2Ugd2ls bCBhbHNvIGZyZWV6ZSB0dXBsZXMKIAkgKgogCSAqIEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVk0g aW5kaWNhdGVzIHRoYXQgd2Ugd2lsbCBzZXQgdGhlIHBhZ2UncyBzdGF0dXMKIAkgKiBpbiB0aGUg Vk0uCkBAIC0zMDAsMjEgKzI5OSw2IEBAIHR5cGVkZWYgc3RydWN0IFBydW5lRnJlZXplUmVzdWx0 CiAJaW50CQkJbGl2ZV90dXBsZXM7CiAJaW50CQkJcmVjZW50bHlfZGVhZF90dXBsZXM7CiAKLQkv KgotCSAqIGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVuIGluZGljYXRlIGlmIHRoZSBhbGwtdmlz aWJsZSBhbmQgYWxsLWZyb3plbgotCSAqIGJpdHMgaW4gdGhlIHZpc2liaWxpdHkgbWFwIGNhbiBi ZSBzZXQgZm9yIHRoaXMgcGFnZSwgYWZ0ZXIgcHJ1bmluZy4KLQkgKgotCSAqIHZtX2NvbmZsaWN0 X2hvcml6b24gaXMgdGhlIG5ld2VzdCB4bWluIG9mIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLiAg VGhlCi0JICogY2FsbGVyIGNhbiB1c2UgaXQgYXMgdGhlIGNvbmZsaWN0IGhvcml6b24gd2hlbiBz ZXR0aW5nIHRoZSBWTSBiaXRzLiAgSXQKLQkgKiBpcyBvbmx5IHZhbGlkIGlmIHdlIGZyb3plIHNv bWUgdHVwbGVzIChuZnJvemVuID4gMCksIGFuZCBhbGxfZnJvemVuIGlzCi0JICogdHJ1ZS4KLQkg KgotCSAqIFRoZXNlIGFyZSBvbmx5IHNldCBpZiB0aGUgSEVBUF9QUlVORV9GUkVFWkUgb3B0aW9u IGlzIHNldC4KLQkgKi8KLQlib29sCQlhbGxfdmlzaWJsZTsKLQlib29sCQlhbGxfZnJvemVuOwot CVRyYW5zYWN0aW9uSWQgdm1fY29uZmxpY3RfaG9yaXpvbjsKLQogCS8qCiAJICogb2xkX3ZtYml0 cyBhcmUgdGhlIHN0YXRlIG9mIHRoZSBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3plbiBiaXRzIGlu IHRoZQogCSAqIHZpc2liaWxpdHkgbWFwIGJlZm9yZSB1cGRhdGluZyBpdCBkdXJpbmcgcGhhc2Ug SSBvZiB2YWN1dW1pbmcuCkBAIC00NjAsNiArNDQ0LDEzIEBAIGV4dGVybiB2b2lkIGxvZ19oZWFw X3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAvKiBp biBoZWFwL3ZhY3V1bWxhenkuYyAqLwogZXh0ZXJuIHZvaWQgaGVhcF92YWN1dW1fcmVsKFJlbGF0 aW9uIHJlbCwKIAkJCQkJCQljb25zdCBWYWN1dW1QYXJhbXMgcGFyYW1zLCBCdWZmZXJBY2Nlc3NT dHJhdGVneSBic3RyYXRlZ3kpOworZXh0ZXJuIGJvb2wgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92 aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKKwkJCQkJCQkJCQkgICBUcmFuc2FjdGlv bklkIE9sZGVzdFhtaW4sCisJCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpkZWFkb2Zmc2V0cywK KwkJCQkJCQkJCQkgICBpbnQgbmRlYWRvZmZzZXRzLAorCQkJCQkJCQkJCSAgIGJvb2wgKmFsbF9m cm96ZW4sCisJCQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlk LAorCQkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0pOwogCiAvKiBpbiBo ZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMgKi8KIGV4dGVybiBib29sIEhlYXBUdXBsZVNhdGlzZmll c1Zpc2liaWxpdHkoSGVhcFR1cGxlIGh0dXAsIFNuYXBzaG90IHNuYXBzaG90LAotLSAKMi40My4w Cgo= --000000000000b196150645a17d5e Content-Type: application/x-patch; name="v25-0005-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Disposition: attachment; filename="v25-0005-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj0m7su04 RnJvbSA0ZWE4MTUwYzdjZDNhMmVkYjQ4N2YzYmFjMWY4NmU1NzQ0MTZlZTY3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTY6MTY6MjIgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyNSAwNS8xNF0gRWxpbWluYXRlIFhMT0dfSEVBUDJfVklTSUJMRSBmcm9tIHZhY3V1bSBw aGFzZSBJCiBwcnVuZS9mcmVlemUKClZhY3V1bSBubyBsb25nZXIgZW1pdHMgYSBzZXBhcmF0ZSBX QUwgcmVjb3JkIGZvciBlYWNoIHBhZ2Ugc2V0CmFsbC12aXNpYmxlIG9yIGFsbC1mcm96ZW4gZHVy aW5nIHBoYXNlIEkuIEluc3RlYWQsIHZpc2liaWxpdHkgbWFwCnVwZGF0ZXMgYXJlIG5vdyBpbmNs dWRlZCBpbiB0aGUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmQgdGhhdAppcyBh bHJlYWR5IGVtaXR0ZWQgZm9yIHBydW5pbmcgYW5kIGZyZWV6aW5nLgoKUHJldmlvdXNseSwgaGVh cF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSBkZXRlcm1pbmVkIHdoZXRoZXIgYSBwYWdlIHdhcwph bGwtdmlzaWJsZSwgYnV0IHRoZSBjb3JyZXNwb25kaW5nIFZNIGJpdHMgd2VyZSBvbmx5IHNldCBs YXRlciBpbgpsYXp5X3NjYW5fcHJ1bmUoKS4gTm93IHRoZSBWTSBpcyB1cGRhdGVkIGltbWVkaWF0 ZWx5IGluCmhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCksIGF0IHRoZSBzYW1lIHRpbWUgYXMg dGhlIGhlYXAKbW9kaWZpY2F0aW9ucy4KClRoaXMgY2hhbmdlIGFwcGxpZXMgb25seSB0byB2YWN1 dW0gcGhhc2UgSSwgbm90IHRvIHBydW5pbmcgcGVyZm9ybWVkCmR1cmluZyBub3JtYWwgcGFnZSBh Y2Nlc3MuCgpOT1RFOiBUaGlzIGNvbW1pdCBpcyB0aGUgbWFpbiBjb21taXQgYW5kIGFsbCByZXZp ZXctb25seSBjb21taXRzCnByZWNlZGluZyBpdCB3aWxsIGJlIHNxdWFzaGVkIGludG8gaXQuCgpB dXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+ClJldmll d2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJldmlld2VkLWJ5OiBS b2JlcnQgSGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogS2lyaWxsIFJl c2hrZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2 YW4uY2hhb0BnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vZmxhdC9D QUFLUnVfWk13Nk5wZF9xbTJLTSUyQkZ3UTNjTU9NeDFEaDNWTWhwOC1WN1NPTHhkSzktZyU0MG1h aWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgfCAy NDcgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE0MiBpbnNl cnRpb25zKCspLCAxMDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YwppbmRleCAxYjAyNzNjMDJjOS4uZmI4MmIwYzBmODYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3By dW5laGVhcC5jCkBAIC0xOTQsNiArMTk0LDEyIEBAIHN0YXRpYyB2b2lkIHBhZ2VfdmVyaWZ5X3Jl ZGlyZWN0cyhQYWdlIHBhZ2UpOwogc3RhdGljIGJvb2wgaGVhcF9wYWdlX3dpbGxfZnJlZXplKFJl bGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkgIGJvb2wgZGlkX3R1cGxl X2hpbnRfZnBpLCBib29sIGRvX3BydW5lLCBib29sIGRvX2hpbnRfcHJ1bmUsCiAJCQkJCQkJCSAg UHJ1bmVTdGF0ZSAqcHJzdGF0ZSk7CitzdGF0aWMgVHJhbnNhY3Rpb25JZCBnZXRfY29uZmxpY3Rf eGlkKGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9fZnJlZXplLCBib29sIGRvX3NldF92bSwKKwkJCQkJ CQkJCSAgdWludDggbmV3X3ZtYml0cywKKwkJCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBsYXRlc3Rf eGlkX3JlbW92ZWQsCisJCQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgZnJ6X2NvbmZsaWN0X2hvcml6 b24sCisJCQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAorCQkJ CQkJCQkJICBib29sIGJsa19hbHJlYWR5X2F2KTsKIHN0YXRpYyBib29sIGhlYXBfcGFnZV93aWxs X3NldF92bShSZWxhdGlvbiByZWxhdGlvbiwKIAkJCQkJCQkJICBCbG9ja051bWJlciBoZWFwX2Js aywKIAkJCQkJCQkJICBCdWZmZXIgaGVhcF9idWYsCkBAIC03ODIsNiArNzg4LDY0IEBAIGhlYXBf cGFnZV93aWxsX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAlyZXR1 cm4gZG9fZnJlZXplOwogfQogCisvKgorICogQ2FsY3VsYXRlIHRoZSBjb25mbGljdCBob3Jpem9u IGZvciB0aGUgd2hvbGUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTgorICogb3IgWExPR19I RUFQMl9QUlVORV9PTl9BQ0NFU1MgcmVjb3JkLgorICovCitzdGF0aWMgVHJhbnNhY3Rpb25JZAor Z2V0X2NvbmZsaWN0X3hpZChib29sIGRvX3BydW5lLCBib29sIGRvX2ZyZWV6ZSwgYm9vbCBkb19z ZXRfdm0sIHVpbnQ4IG5ld192bWJpdHMsCisJCQkJIFRyYW5zYWN0aW9uSWQgbGF0ZXN0X3hpZF9y ZW1vdmVkLCBUcmFuc2FjdGlvbklkIGZyel9jb25mbGljdF9ob3Jpem9uLAorCQkJCSBUcmFuc2Fj dGlvbklkIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCwgYm9vbCBibGtfYWxyZWFkeV9hdikKK3sKKwlU cmFuc2FjdGlvbklkIGNvbmZsaWN0X3hpZDsKKworCS8qCisJICogV2UgY2FuIG9taXQgdGhlIHNu YXBzaG90IGNvbmZsaWN0IGhvcml6b24gaWYgd2UgYXJlIG5vdCBwcnVuaW5nIG9yCisJICogZnJl ZXppbmcgYW55IHR1cGxlcyBhbmQgYXJlIHNldHRpbmcgYW4gYWxyZWFkeSBhbGwtdmlzaWJsZSBw YWdlCisJICogYWxsLWZyb3plbiBpbiB0aGUgVk0uIEluIHRoaXMgY2FzZSwgYWxsIG9mIHRoZSB0 dXBsZXMgb24gdGhlIHBhZ2UgbXVzdAorCSAqIGFscmVhZHkgYmUgdmlzaWJsZSB0byBhbGwgTVZD QyBzbmFwc2hvdHMgb24gdGhlIHN0YW5kYnkuCisJICovCisJaWYgKCFkb19wcnVuZSAmJiAhZG9f ZnJlZXplICYmCisJCWRvX3NldF92bSAmJiBibGtfYWxyZWFkeV9hdiAmJiAobmV3X3ZtYml0cyAm IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTikpCisJCXJldHVybiBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKKworCS8qCisJICogVGhlIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uIGZvciB0aGUgd2hvbGUg cmVjb3JkIHNob3VsZCBiZSB0aGUgbW9zdAorCSAqIGNvbnNlcnZhdGl2ZSBvZiBhbGwgdGhlIGhv cml6b25zIGNhbGN1bGF0ZWQgZm9yIGFueSBvZiB0aGUgcG9zc2libGUKKwkgKiBtb2RpZmljYXRp b25zLiAgSWYgdGhpcyByZWNvcmQgd2lsbCBwcnVuZSB0dXBsZXMsIGFueSB0cmFuc2FjdGlvbnMg b24KKwkgKiB0aGUgc3RhbmRieSBvbGRlciB0aGFuIHRoZSB5b3VuZ2VzdCB4bWF4IG9mIHRoZSBt b3N0IHJlY2VudGx5IHJlbW92ZWQKKwkgKiB0dXBsZSB0aGlzIHJlY29yZCB3aWxsIHBydW5lIHdp bGwgY29uZmxpY3QuICBJZiB0aGlzIHJlY29yZCB3aWxsIGZyZWV6ZQorCSAqIHR1cGxlcywgYW55 IHRyYW5zYWN0aW9ucyBvbiB0aGUgc3RhbmRieSB3aXRoIHhpZHMgb2xkZXIgdGhhbiB0aGUKKwkg KiB5b3VuZ2VzdCB0dXBsZSB0aGlzIHJlY29yZCB3aWxsIGZyZWV6ZSB3aWxsIGNvbmZsaWN0Lgor CSAqLworCWNvbmZsaWN0X3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCisJLyoKKwkgKiBJ ZiB3ZSBhcmUgdXBkYXRpbmcgdGhlIFZNLCB0aGUgY29uZmxpY3QgaG9yaXpvbiBpcyBhbG1vc3Qg YWx3YXlzIHRoZQorCSAqIHZpc2liaWxpdHkgY3V0b2ZmIFhJRC4KKwkgKgorCSAqIFNlcGFyYXRl bHksIGlmIHdlIGFyZSBmcmVlemluZyBhbnkgdHVwbGVzLCBhcyBhbiBvcHRpbWl6YXRpb24sIHdl IGNhbgorCSAqIHVzZSB0aGUgdmlzaWJpbGl0eV9jdXRvZmZfeGlkIGFzIHRoZSBjb25mbGljdCBo b3Jpem9uIGlmIHRoZSBwYWdlIHdpbGwKKwkgKiBiZSBhbGwtZnJvemVuLiBUaGlzIGlzIHRydWUg ZXZlbiBpZiB0aGVyZSBhcmUgTFBfREVBRCBsaW5lIHBvaW50ZXJzCisJICogYmVjYXVzZSB3ZSBp Z25vcmVkIHRob3NlIHdoZW4gbWFpbnRhaW5pbmcgdGhlIHZpc2liaWxpdHlfY3V0b2ZmX3hpZC4K KwkgKiBUaGlzIHdpbGwgaGF2ZSBiZWVuIGNhbGN1bGF0ZWQgZWFybGllciBhcyB0aGUgZnJ6X2Nv bmZsaWN0X2hvcml6b24gd2hlbgorCSAqIHdlIGRldGVybWluZWQgd2Ugd291bGQgZnJlZXplLgor CSAqLworCWlmIChkb19zZXRfdm0pCisJCWNvbmZsaWN0X3hpZCA9IHZpc2liaWxpdHlfY3V0b2Zm X3hpZDsKKwllbHNlIGlmIChkb19mcmVlemUpCisJCWNvbmZsaWN0X3hpZCA9IGZyel9jb25mbGlj dF9ob3Jpem9uOworCisJLyoKKwkgKiBJZiB3ZSBhcmUgcmVtb3ZpbmcgdHVwbGVzIHdpdGggYSB5 b3VuZ2VyIHhtYXggdGhhbiBvdXIgc28gZmFyCisJICogY2FsY3VsYXRlZCBjb25mbGljdF94aWQs IHdlIG11c3QgdXNlIHRoaXMgYXMgb3VyIGhvcml6b24uCisJICovCisJaWYgKFRyYW5zYWN0aW9u SWRGb2xsb3dzKGxhdGVzdF94aWRfcmVtb3ZlZCwgY29uZmxpY3RfeGlkKSkKKwkJY29uZmxpY3Rf eGlkID0gbGF0ZXN0X3hpZF9yZW1vdmVkOworCisJcmV0dXJuIGNvbmZsaWN0X3hpZDsKK30KKwog LyoKICAqIERlY2lkZSB3aGV0aGVyIHRvIHNldCB0aGUgdmlzaWJpbGl0eSBtYXAgYml0cyAoYWxs LXZpc2libGUgYW5kIGFsbC1mcm96ZW4pCiAgKiBmb3IgaGVhcF9ibGsgdXNpbmcgaW5mb3JtYXRp b24gZnJvbSBQcnVuZVN0YXRlIGFuZCBibGtfa25vd25fYXYuIFNvbWUKQEAgLTk2OSw3ICsxMDMz LDYgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFt cywKIAlCdWZmZXIJCXZtYnVmZmVyID0gcGFyYW1zLT52bWJ1ZmZlcjsKIAlQYWdlCQlwYWdlID0g QnVmZmVyR2V0UGFnZShidWZmZXIpOwogCUJsb2NrTnVtYmVyIGJsb2Nrbm8gPSBCdWZmZXJHZXRC bG9ja051bWJlcihidWZmZXIpOwotCVRyYW5zYWN0aW9uSWQgdm1fY29uZmxpY3RfaG9yaXpvbiA9 IEludmFsaWRUcmFuc2FjdGlvbklkOwogCVBydW5lU3RhdGUJcHJzdGF0ZTsKIAlib29sCQlkb19m cmVlemU7CiAJYm9vbAkJZG9fcHJ1bmU7CkBAIC05NzcsNiArMTA0MCw5IEBAIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJYm9vbAkJZG9fc2V0 X3ZtOwogCWJvb2wJCWRpZF90dXBsZV9oaW50X2ZwaTsKIAlpbnQ2NAkJZnBpX2JlZm9yZSA9IHBn V2FsVXNhZ2Uud2FsX2ZwaTsKKwlUcmFuc2FjdGlvbklkIGNvbmZsaWN0X3hpZCA9IEludmFsaWRU cmFuc2FjdGlvbklkOworCXVpbnQ4CQluZXdfdm1iaXRzID0gMDsKKwl1aW50OAkJb2xkX3ZtYml0 cyA9IDA7CiAKIAkvKiBJbml0aWFsaXplIHByc3RhdGUgKi8KIAlwcnVuZV9mcmVlemVfc2V0dXAo cGFyYW1zLApAQCAtMTAzOCw2ICsxMTA0LDI5IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCXByc3RhdGUuYWxsX3Zpc2libGUgPSBwcnN0 YXRlLmFsbF9mcm96ZW4gPSBmYWxzZTsKIAogCUFzc2VydCghcHJzdGF0ZS5hbGxfZnJvemVuIHx8 IHByc3RhdGUuYWxsX3Zpc2libGUpOworCUFzc2VydCghcHJzdGF0ZS5hbGxfdmlzaWJsZSB8fCAo cHJzdGF0ZS5scGRlYWRfaXRlbXMgPT0gMCkpOworCisJLyoKKwkgKiBEZWNpZGUgd2hldGhlciB0 byBzZXQgdGhlIFZNIGJpdHMgYmFzZWQgb24gaW5mb3JtYXRpb24gZnJvbSB0aGUgVk0gYW5kCisJ ICogdGhlIGFsbF92aXNpYmxlL2FsbF9mcm96ZW4gZmxhZ3MuCisJICovCisJZG9fc2V0X3ZtID0g aGVhcF9wYWdlX3dpbGxfc2V0X3ZtKHBhcmFtcy0+cmVsYXRpb24sCisJCQkJCQkJCQkgIGJsb2Nr bm8sIGJ1ZmZlciwgdm1idWZmZXIsIHBhcmFtcy0+YmxrX2tub3duX2F2LAorCQkJCQkJCQkJICAm cHJzdGF0ZSwgJm5ld192bWJpdHMpOworCisJLyoKKwkgKiBuZXdfdm1iaXRzIHNob3VsZCBiZSAw IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBub3QgdGhlIHBhZ2UgaXMKKwkgKiBhbGwtdmlzaWJs ZSBpZiB3ZSBkbyBub3QgaW50ZW5kIHRvIHNldCB0aGUgVk0uCisJICovCisJQXNzZXJ0KGRvX3Nl dF92bSB8fCBuZXdfdm1iaXRzID09IDApOworCisJY29uZmxpY3RfeGlkID0gZ2V0X2NvbmZsaWN0 X3hpZChkb19wcnVuZSwgZG9fZnJlZXplLCBkb19zZXRfdm0sIG5ld192bWJpdHMsCisJCQkJCQkJ CQlwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZCwgcHJzdGF0ZS5mcnpfY29uZmxpY3RfaG9yaXpv biwKKwkJCQkJCQkJCXByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkLCBwYXJhbXMtPmJsa19r bm93bl9hdik7CisKKwkvKiBMb2NrIHZtYnVmZmVyIGJlZm9yZSBlbnRlcmluZyBhIGNyaXRpY2Fs IHNlY3Rpb24gKi8KKwlpZiAoZG9fc2V0X3ZtKQorCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZG RVJfTE9DS19FWENMVVNJVkUpOwogCiAJLyogQW55IGVycm9yIHdoaWxlIGFwcGx5aW5nIHRoZSBj aGFuZ2VzIGlzIGNyaXRpY2FsICovCiAJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CkBAIC0xMDU5LDE0 ICsxMTQ4LDE3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1z ICpwYXJhbXMsCiAKIAkJLyoKIAkJICogSWYgdGhhdCdzIGFsbCB3ZSBoYWQgdG8gZG8gdG8gdGhl IHBhZ2UsIHRoaXMgaXMgYSBub24tV0FMLWxvZ2dlZAotCQkgKiBoaW50LiAgSWYgd2UgYXJlIGdv aW5nIHRvIGZyZWV6ZSBvciBwcnVuZSB0aGUgcGFnZSwgd2Ugd2lsbCBtYXJrCi0JCSAqIHRoZSBi dWZmZXIgZGlydHkgYmVsb3cuCisJCSAqIGhpbnQuICBJZiB3ZSBhcmUgZ29pbmcgdG8gZnJlZXpl IG9yIHBydW5lIHRoZSBwYWdlIG9yIHNldAorCQkgKiBQRF9BTExfVklTSUJMRSwgd2Ugd2lsbCBt YXJrIHRoZSBidWZmZXIgZGlydHkgYmVsb3cuCisJCSAqCisJCSAqIFNldHRpbmcgUERfQUxMX1ZJ U0lCTEUgaXMgZnVsbHkgV0FMLWxvZ2dlZCBiZWNhdXNlIGl0IGlzIGZvcmJpZGRlbgorCQkgKiBm b3IgdGhlIFZNIHRvIGJlIHNldCBhbmQgUERfQUxMX1ZJU0lCTEUgdG8gYmUgY2xlYXIuCiAJCSAq LwotCQlpZiAoIWRvX2ZyZWV6ZSAmJiAhZG9fcHJ1bmUpCisJCWlmICghZG9fZnJlZXplICYmICFk b19wcnVuZSAmJiAhZG9fc2V0X3ZtKQogCQkJTWFya0J1ZmZlckRpcnR5SGludChidWZmZXIsIHRy dWUpOwogCX0KIAotCWlmIChkb19wcnVuZSB8fCBkb19mcmVlemUpCisJaWYgKGRvX3BydW5lIHx8 IGRvX2ZyZWV6ZSB8fCBkb19zZXRfdm0pCiAJewogCQkvKiBBcHBseSB0aGUgcGxhbm5lZCBpdGVt IGNoYW5nZXMgYW5kIHJlcGFpciBwYWdlIGZyYWdtZW50YXRpb24uICovCiAJCWlmIChkb19wcnVu ZSkKQEAgLTEwODAsNiArMTE3MiwyMCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVu ZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQlpZiAoZG9fZnJlZXplKQogCQkJaGVhcF9mcmVlemVf cHJlcGFyZWRfdHVwbGVzKGJ1ZmZlciwgcHJzdGF0ZS5mcm96ZW4sIHByc3RhdGUubmZyb3plbik7 CiAKKwkJaWYgKGRvX3NldF92bSkKKwkJeworCQkJLyoKKwkJCSAqIFdoaWxlIGl0IGlzIHZhbGlk IGZvciBQRF9BTExfVklTSUJMRSB0byBiZSBzZXQgd2hlbiB0aGUKKwkJCSAqIGNvcnJlc3BvbmRp bmcgVk0gYml0IGlzIGNsZWFyLCB3ZSBzdHJvbmdseSBwcmVmZXIgdG8ga2VlcCB0aGVtCisJCQkg KiBpbiBzeW5jLgorCQkJICovCisJCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKKwkJCW9sZF92 bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoYmxvY2tubywKKwkJCQkJCQkJCQkJCSAg dm1idWZmZXIsIG5ld192bWJpdHMsCisJCQkJCQkJCQkJCQkgIHBhcmFtcy0+cmVsYXRpb24tPnJk X2xvY2F0b3IpOworCQkJQXNzZXJ0KG9sZF92bWJpdHMgIT0gbmV3X3ZtYml0cyk7CisJCX0KKwog CQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKIAogCQkvKgpAQCAtMTA4NywyOSArMTE5MywxMiBA QCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAog CQkgKi8KIAkJaWYgKFJlbGF0aW9uTmVlZHNXQUwocGFyYW1zLT5yZWxhdGlvbikpCiAJCXsKLQkJ CS8qCi0JCQkgKiBUaGUgc25hcHNob3RDb25mbGljdEhvcml6b24gZm9yIHRoZSB3aG9sZSByZWNv cmQgc2hvdWxkIGJlIHRoZQotCQkJICogbW9zdCBjb25zZXJ2YXRpdmUgb2YgYWxsIHRoZSBob3Jp em9ucyBjYWxjdWxhdGVkIGZvciBhbnkgb2YgdGhlCi0JCQkgKiBwb3NzaWJsZSBtb2RpZmljYXRp b25zLiAgSWYgdGhpcyByZWNvcmQgd2lsbCBwcnVuZSB0dXBsZXMsIGFueQotCQkJICogdHJhbnNh Y3Rpb25zIG9uIHRoZSBzdGFuZGJ5IG9sZGVyIHRoYW4gdGhlIHlvdW5nZXN0IHhtYXggb2YgdGhl Ci0JCQkgKiBtb3N0IHJlY2VudGx5IHJlbW92ZWQgdHVwbGUgdGhpcyByZWNvcmQgd2lsbCBwcnVu ZSB3aWxsCi0JCQkgKiBjb25mbGljdC4gIElmIHRoaXMgcmVjb3JkIHdpbGwgZnJlZXplIHR1cGxl cywgYW55IHRyYW5zYWN0aW9ucwotCQkJICogb24gdGhlIHN0YW5kYnkgd2l0aCB4aWRzIG9sZGVy IHRoYW4gdGhlIHlvdW5nZXN0IHR1cGxlIHRoaXMKLQkJCSAqIHJlY29yZCB3aWxsIGZyZWV6ZSB3 aWxsIGNvbmZsaWN0LgotCQkJICovCi0JCQlUcmFuc2FjdGlvbklkIGNvbmZsaWN0X3hpZDsKLQot CQkJaWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dzKHByc3RhdGUuZnJ6X2NvbmZsaWN0X2hvcml6b24s Ci0JCQkJCQkJCQkgcHJzdGF0ZS5sYXRlc3RfeGlkX3JlbW92ZWQpKQotCQkJCWNvbmZsaWN0X3hp ZCA9IHByc3RhdGUuZnJ6X2NvbmZsaWN0X2hvcml6b247Ci0JCQllbHNlCi0JCQkJY29uZmxpY3Rf eGlkID0gcHJzdGF0ZS5sYXRlc3RfeGlkX3JlbW92ZWQ7Ci0KIAkJCWxvZ19oZWFwX3BydW5lX2Fu ZF9mcmVlemUocGFyYW1zLT5yZWxhdGlvbiwgYnVmZmVyLAotCQkJCQkJCQkJICBJbnZhbGlkQnVm ZmVyLAkvKiB2bWJ1ZmZlciAqLwotCQkJCQkJCQkJICAwLAkvKiB2bWZsYWdzICovCisJCQkJCQkJ CQkgIGRvX3NldF92bSA/IHZtYnVmZmVyIDogSW52YWxpZEJ1ZmZlciwKKwkJCQkJCQkJCSAgZG9f c2V0X3ZtID8gbmV3X3ZtYml0cyA6IDAsCiAJCQkJCQkJCQkgIGNvbmZsaWN0X3hpZCwKLQkJCQkJ CQkJCSAgdHJ1ZSwgcGFyYW1zLT5yZWFzb24sCisJCQkJCQkJCQkgIHRydWUsIC8qIGNsZWFudXAg bG9jayAqLworCQkJCQkJCQkJICBwYXJhbXMtPnJlYXNvbiwKIAkJCQkJCQkJCSAgcHJzdGF0ZS5m cm96ZW4sIHByc3RhdGUubmZyb3plbiwKIAkJCQkJCQkJCSAgcHJzdGF0ZS5yZWRpcmVjdGVkLCBw cnN0YXRlLm5yZWRpcmVjdGVkLAogCQkJCQkJCQkJICBwcnN0YXRlLm5vd2RlYWQsIHByc3RhdGUu bmRlYWQsCkBAIC0xMTE5LDQ2ICsxMjA4LDggQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUo UHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAogCUVORF9DUklUX1NFQ1RJT04oKTsKIAotCS8q IENvcHkgaW5mb3JtYXRpb24gYmFjayBmb3IgY2FsbGVyICovCi0JcHJlc3VsdC0+bmRlbGV0ZWQg PSBwcnN0YXRlLm5kZWxldGVkOwotCXByZXN1bHQtPm5uZXdscGRlYWQgPSBwcnN0YXRlLm5kZWFk OwotCXByZXN1bHQtPm5mcm96ZW4gPSBwcnN0YXRlLm5mcm96ZW47Ci0JcHJlc3VsdC0+bGl2ZV90 dXBsZXMgPSBwcnN0YXRlLmxpdmVfdHVwbGVzOwotCXByZXN1bHQtPnJlY2VudGx5X2RlYWRfdHVw bGVzID0gcHJzdGF0ZS5yZWNlbnRseV9kZWFkX3R1cGxlczsKLQlwcmVzdWx0LT5oYXN0dXAgPSBw cnN0YXRlLmhhc3R1cDsKLQotCXByZXN1bHQtPmxwZGVhZF9pdGVtcyA9IHByc3RhdGUubHBkZWFk X2l0ZW1zOwotCS8qIHRoZSBwcmVzdWx0LT5kZWFkb2Zmc2V0cyBhcnJheSB3YXMgYWxyZWFkeSBm aWxsZWQgaW4gKi8KLQotCWlmIChwcnN0YXRlLmF0dGVtcHRfZnJlZXplKQotCXsKLQkJaWYgKHBy ZXN1bHQtPm5mcm96ZW4gPiAwKQotCQl7Ci0JCQkqbmV3X3JlbGZyb3plbl94aWQgPSBwcnN0YXRl LnBhZ2VmcnouRnJlZXplUGFnZVJlbGZyb3plblhpZDsKLQkJCSpuZXdfcmVsbWluX214aWQgPSBw cnN0YXRlLnBhZ2VmcnouRnJlZXplUGFnZVJlbG1pbk14aWQ7Ci0JCX0KLQkJZWxzZQotCQl7Ci0J CQkqbmV3X3JlbGZyb3plbl94aWQgPSBwcnN0YXRlLnBhZ2VmcnouTm9GcmVlemVQYWdlUmVsZnJv emVuWGlkOwotCQkJKm5ld19yZWxtaW5fbXhpZCA9IHByc3RhdGUucGFnZWZyei5Ob0ZyZWV6ZVBh Z2VSZWxtaW5NeGlkOwotCQl9Ci0JfQotCi0JcHJlc3VsdC0+bmV3X3ZtYml0cyA9IDA7Ci0JcHJl c3VsdC0+b2xkX3ZtYml0cyA9IDA7Ci0KLQkvKgotCSAqIElmIHVwZGF0aW5nIHRoZSB2aXNpYmls aXR5IG1hcCwgdGhlIGNvbmZsaWN0IGhvcml6b24gZm9yIHRoYXQgcmVjb3JkCi0JICogbXVzdCBi ZSB0aGUgbmV3ZXN0IHhtaW4gb24gdGhlIHBhZ2UuICBIb3dldmVyLCBpZiB0aGUgcGFnZSBpcwot CSAqIGNvbXBsZXRlbHkgZnJvemVuLCB0aGVyZSBjYW4gYmUgbm8gY29uZmxpY3QgYW5kIHRoZSB2 bV9jb25mbGljdF9ob3Jpem9uCi0JICogc2hvdWxkIHJlbWFpbiBJbnZhbGlkVHJhbnNhY3Rpb25J ZC4gIFRoaXMgaW5jbHVkZXMgdGhlIGNhc2UgdGhhdCB3ZQotCSAqIGp1c3QgZnJvemUgYWxsIHRo ZSB0dXBsZXM7IHRoZSBwcnVuZS1mcmVlemUgcmVjb3JkIGluY2x1ZGVkIHRoZQotCSAqIGNvbmZs aWN0IFhJRCBhbHJlYWR5IHNvIHdlIGRvbid0IG5lZWQgdG8gYWdhaW4uCi0JICovCi0JaWYgKHBy c3RhdGUuYWxsX2Zyb3plbikKLQkJdm1fY29uZmxpY3RfaG9yaXpvbiA9IEludmFsaWRUcmFuc2Fj dGlvbklkOwotCWVsc2UKLQkJdm1fY29uZmxpY3RfaG9yaXpvbiA9IHByc3RhdGUudmlzaWJpbGl0 eV9jdXRvZmZfeGlkOworCWlmIChkb19zZXRfdm0pCisJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJV RkZFUl9MT0NLX1VOTE9DSyk7CiAKIAkvKgogCSAqIER1cmluZyBpdHMgc2Vjb25kIHBhc3Mgb3Zl ciB0aGUgaGVhcCwgVkFDVVVNIGNhbGxzCkBAIC0xMTczLDcgKzEyMjQsOCBAQCBoZWFwX3BhZ2Vf cHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQlUcmFuc2FjdGlv bklkIGRlYnVnX2N1dG9mZjsKIAkJYm9vbAkJZGVidWdfYWxsX2Zyb3plbjsKIAotCQlBc3NlcnQo cHJlc3VsdC0+bHBkZWFkX2l0ZW1zID09IDApOworCQlBc3NlcnQocHJzdGF0ZS5scGRlYWRfaXRl bXMgPT0gMCk7CisJCUFzc2VydChwcnN0YXRlLmN1dG9mZnMpOwogCiAJCUFzc2VydChoZWFwX3Bh Z2VfaXNfYWxsX3Zpc2libGUocGFyYW1zLT5yZWxhdGlvbiwgYnVmZmVyLAogCQkJCQkJCQkJCXBy c3RhdGUuY3V0b2Zmcy0+T2xkZXN0WG1pbiwKQEAgLTExODMsNTAgKzEyMzUsMzUgQEAgaGVhcF9w YWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJQXNzZXJ0 KHByc3RhdGUuYWxsX2Zyb3plbiA9PSBkZWJ1Z19hbGxfZnJvemVuKTsKIAogCQlBc3NlcnQoIVRy YW5zYWN0aW9uSWRJc1ZhbGlkKGRlYnVnX2N1dG9mZikgfHwKLQkJCSAgIGRlYnVnX2N1dG9mZiA9 PSB2bV9jb25mbGljdF9ob3Jpem9uKTsKKwkJCSAgIGRlYnVnX2N1dG9mZiA9PSBwcnN0YXRlLnZp c2liaWxpdHlfY3V0b2ZmX3hpZCk7CiAJfQogI2VuZGlmCiAKLQlBc3NlcnQoIXByc3RhdGUuYWxs X2Zyb3plbiB8fCBwcnN0YXRlLmFsbF92aXNpYmxlKTsKLQlBc3NlcnQoIXByc3RhdGUuYWxsX3Zp c2libGUgfHwgKHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApKTsKLQotCS8qCi0JICogRGVjaWRl IHdoZXRoZXIgdG8gc2V0IHRoZSBWTSBiaXRzIGJhc2VkIG9uIGluZm9ybWF0aW9uIGZyb20gdGhl IFZNIGFuZAotCSAqIHRoZSBhbGxfdmlzaWJsZS9hbGxfZnJvemVuIGZsYWdzLgotCSAqLwotCWRv X3NldF92bSA9IGhlYXBfcGFnZV93aWxsX3NldF92bShwYXJhbXMtPnJlbGF0aW9uLAotCQkJCQkJ CQkJICBibG9ja25vLAotCQkJCQkJCQkJICBidWZmZXIsCi0JCQkJCQkJCQkgIHZtYnVmZmVyLAot CQkJCQkJCQkJICBwYXJhbXMtPmJsa19rbm93bl9hdiwKLQkJCQkJCQkJCSAgJnByc3RhdGUsCi0J CQkJCQkJCQkgICZwcmVzdWx0LT5uZXdfdm1iaXRzKTsKKwkvKiBDb3B5IGluZm9ybWF0aW9uIGJh Y2sgZm9yIGNhbGxlciAqLworCXByZXN1bHQtPm5kZWxldGVkID0gcHJzdGF0ZS5uZGVsZXRlZDsK KwlwcmVzdWx0LT5ubmV3bHBkZWFkID0gcHJzdGF0ZS5uZGVhZDsKKwlwcmVzdWx0LT5uZnJvemVu ID0gcHJzdGF0ZS5uZnJvemVuOworCXByZXN1bHQtPmxpdmVfdHVwbGVzID0gcHJzdGF0ZS5saXZl X3R1cGxlczsKKwlwcmVzdWx0LT5yZWNlbnRseV9kZWFkX3R1cGxlcyA9IHByc3RhdGUucmVjZW50 bHlfZGVhZF90dXBsZXM7CisJcHJlc3VsdC0+aGFzdHVwID0gcHJzdGF0ZS5oYXN0dXA7CisJcHJl c3VsdC0+bmV3X3ZtYml0cyA9IG5ld192bWJpdHM7CisJcHJlc3VsdC0+b2xkX3ZtYml0cyA9IG9s ZF92bWJpdHM7CiAKLQkvKgotCSAqIG5ld192bWJpdHMgc2hvdWxkIGJlIDAgcmVnYXJkbGVzcyBv ZiB3aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSBpcwotCSAqIGFsbC12aXNpYmxlIGlmIHdlIGRvIG5v dCBpbnRlbmQgdG8gc2V0IHRoZSBWTS4KLQkgKi8KLQlBc3NlcnQoZG9fc2V0X3ZtIHx8IHByZXN1 bHQtPm5ld192bWJpdHMgPT0gMCk7CisJcHJlc3VsdC0+bHBkZWFkX2l0ZW1zID0gcHJzdGF0ZS5s cGRlYWRfaXRlbXM7CisJLyogdGhlIHByZXN1bHQtPmRlYWRvZmZzZXRzIGFycmF5IHdhcyBhbHJl YWR5IGZpbGxlZCBpbiAqLwogCi0JaWYgKGRvX3NldF92bSkKKwlpZiAocHJzdGF0ZS5hdHRlbXB0 X2ZyZWV6ZSkKIAl7Ci0JCS8qCi0JCSAqIEl0IHNob3VsZCBuZXZlciBiZSB0aGUgY2FzZSB0aGF0 IHRoZSB2aXNpYmlsaXR5IG1hcCBwYWdlIGlzIHNldAotCQkgKiB3aGlsZSB0aGUgcGFnZS1sZXZl bCBiaXQgaXMgY2xlYXIsIGJ1dCB0aGUgcmV2ZXJzZSBpcyBhbGxvd2VkIChpZgotCQkgKiBjaGVj a3N1bXMgYXJlIG5vdCBlbmFibGVkKS4gSG93ZXZlciwgd2Ugc3Ryb25nbHkgcHJlZmVyIHRvIGtl ZXAKLQkJICogdGhlbSBpbiBzeW5jLgotCQkgKgotCQkgKiBUaGUgaGVhcCBwYWdlIGlzIGFkZGVk IHRvIHRoZSBXQUwgY2hhaW4gZXZlbiBpZiBpdCB3YXNuJ3QgbW9kaWZpZWQsCi0JCSAqIHNvIHdl IHN0aWxsIG5lZWQgdG8gbWFyayBpdCBkaXJ0eS4gVGhlIG9ubHkgc2NlbmFyaW8gd2hlcmUgaXQg aXNuJ3QKLQkJICogbW9kaWZpZWQgaW4gcGhhc2UgSSBpcyB3aGVuIHRoZSBWTSB3YXMgdHJ1bmNh dGVkIG9yIHJlbW92ZWQsIHdoaWNoCi0JCSAqIGlzbid0IHdvcnRoIG9wdGltaXppbmcgZm9yLgot CQkgKi8KLQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCU1hcmtCdWZmZXJEaXJ0eShidWZm ZXIpOwotCQlwcmVzdWx0LT5vbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9zZXQocGFyYW1zLT5y ZWxhdGlvbiwgYmxvY2tubywgYnVmZmVyLAotCQkJCQkJCQkJCQkJSW52YWxpZFhMb2dSZWNQdHIs Ci0JCQkJCQkJCQkJCQl2bWJ1ZmZlciwgdm1fY29uZmxpY3RfaG9yaXpvbiwKLQkJCQkJCQkJCQkJ CXByZXN1bHQtPm5ld192bWJpdHMpOworCQlpZiAocHJlc3VsdC0+bmZyb3plbiA+IDApCisJCXsK KwkJCSpuZXdfcmVsZnJvemVuX3hpZCA9IHByc3RhdGUucGFnZWZyei5GcmVlemVQYWdlUmVsZnJv emVuWGlkOworCQkJKm5ld19yZWxtaW5fbXhpZCA9IHByc3RhdGUucGFnZWZyei5GcmVlemVQYWdl UmVsbWluTXhpZDsKKwkJfQorCQllbHNlCisJCXsKKwkJCSpuZXdfcmVsZnJvemVuX3hpZCA9IHBy c3RhdGUucGFnZWZyei5Ob0ZyZWV6ZVBhZ2VSZWxmcm96ZW5YaWQ7CisJCQkqbmV3X3JlbG1pbl9t eGlkID0gcHJzdGF0ZS5wYWdlZnJ6Lk5vRnJlZXplUGFnZVJlbG1pbk14aWQ7CisJCX0KIAl9CiB9 CiAKLS0gCjIuNDMuMAoK --000000000000b196150645a17d5e Content-Type: application/x-patch; name="v25-0006-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Disposition: attachment; filename="v25-0006-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj0m7w3b5 RnJvbSA4MDE4OWQ5YTc2YThhOTkzZDM5MGZjMzM3MmMxYjRkODY2Y2M0ZmI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjIxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjUgMDYvMTRdIEVsaW1pbmF0ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZnJvbSBlbXB0eS1w YWdlIHZhY3V1bQoKQXMgcGFydCBvZiByZW1vdmluZyBYTE9HX0hFQVAyX1ZJU0lCTEUgcmVjb3Jk cywgcGhhc2UgSSBvZiBWQUNVVU0gbm93Cm1hcmtzIGVtcHR5IHBhZ2VzIGFsbC12aXNpYmxlIGlu IGEgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmQuCgpBdXRob3I6IE1lbGFuaWUg UGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBSb2JlcnQg SGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmVzIEZyZXVuZCA8 YW5kcmVzQGFuYXJhemVsLmRlPgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdt YWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgfCAzNSAr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjkgaW5zZXJ0aW9u cygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5k ZXggMjkzODI1NTBjMDMuLmI1MTExMmE3MWE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jCkBAIC0xODg2LDkgKzE4ODYsMTIgQEAgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJl bFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsIEJsb2NrTnVtYmVyIGJsa25vLAogCQkgKi8KIAkJ aWYgKCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKQogCQl7CisJCQkvKiBMb2NrIHZtYnVmZmVyIGJl Zm9yZSBlbnRlcmluZyBjcml0aWNhbCBzZWN0aW9uICovCisJCQlMb2NrQnVmZmVyKHZtYnVmZmVy LCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCiAJCQlTVEFSVF9DUklUX1NFQ1RJT04oKTsKIAot CQkJLyogbWFyayBidWZmZXIgZGlydHkgYmVmb3JlIHdyaXRpbmcgYSBXQUwgcmVjb3JkICovCisJ CQkvKiBNYXJrIGJ1ZmZlciBkaXJ0eSBiZWZvcmUgd3JpdGluZyBhbnkgV0FMIHJlY29yZHMgKi8K IAkJCU1hcmtCdWZmZXJEaXJ0eShidWYpOwogCiAJCQkvKgpAQCAtMTkwNSwxMyArMTkwOCwzMyBA QCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1Ziwg QmxvY2tOdW1iZXIgYmxrbm8sCiAJCQkJbG9nX25ld3BhZ2VfYnVmZmVyKGJ1ZiwgdHJ1ZSk7CiAK IAkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQkJdmlzaWJpbGl0eW1hcF9zZXQodmFjcmVs LT5yZWwsIGJsa25vLCBidWYsCi0JCQkJCQkJICBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJCQkJCQkg IHZtYnVmZmVyLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKLQkJCQkJCQkgIFZJU0lCSUxJVFlNQVBf QUxMX1ZJU0lCTEUgfAotCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsKKwkJCXZp c2liaWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywKKwkJCQkJCQkJCSB2bWJ1ZmZlciwKKwkJCQkJ CQkJCSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkJCSBWSVNJQklMSVRZTUFQ X0FMTF9GUk9aRU4sCisJCQkJCQkJCQkgdmFjcmVsLT5yZWwtPnJkX2xvY2F0b3IpOworCisJCQkv KgorCQkJICogRW1pdCBXQUwgZm9yIHNldHRpbmcgUERfQUxMX1ZJU0lCTEUgb24gdGhlIGhlYXAg cGFnZSBhbmQKKwkJCSAqIHNldHRpbmcgdGhlIFZNLgorCQkJICovCisJCQlpZiAoUmVsYXRpb25O ZWVkc1dBTCh2YWNyZWwtPnJlbCkpCisJCQkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZSh2YWNy ZWwtPnJlbCwgYnVmLAorCQkJCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJCQkJICBWSVNJQklM SVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pF TiwKKwkJCQkJCQkJCQkgIEludmFsaWRUcmFuc2FjdGlvbklkLCAvKiBjb25mbGljdCB4aWQgKi8K KwkJCQkJCQkJCQkgIGZhbHNlLAkvKiBjbGVhbnVwIGxvY2sgKi8KKwkJCQkJCQkJCQkgIFBSVU5F X1ZBQ1VVTV9TQ0FOLAkvKiByZWFzb24gKi8KKwkJCQkJCQkJCQkgIE5VTEwsIDAsCisJCQkJCQkJ CQkJICBOVUxMLCAwLAorCQkJCQkJCQkJCSAgTlVMTCwgMCwKKwkJCQkJCQkJCQkgIE5VTEwsIDAp OworCiAJCQlFTkRfQ1JJVF9TRUNUSU9OKCk7CiAKKwkJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJV RkZFUl9MT0NLX1VOTE9DSyk7CisKIAkJCS8qIENvdW50IHRoZSBuZXdseSBhbGwtZnJvemVuIHBh Z2VzIGZvciBsb2dnaW5nICovCiAJCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7CiAJ CQl2YWNyZWwtPnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwotLSAKMi40My4wCgo= --000000000000b196150645a17d5e Content-Type: application/x-patch; name="v25-0007-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Disposition: attachment; filename="v25-0007-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj0m7yo86 RnJvbSA0MWRmYjY4ODY4ODE2YzE3OGJjMjgwOTE0NGNiNGZlNmNiZWY4YjM3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjM2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjUgMDcvMTRdIFJlbW92ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZW50aXJlbHkKCkFzIG5v IHJlbWFpbmluZyB1c2VycyBlbWl0IFhMT0dfSEVBUDJfVklTSUJMRSByZWNvcmRzLgpUaGlzIGlu Y2x1ZGVzIGRlbGV0aW5nIHRoZSB4bF9oZWFwX3Zpc2libGUgc3RydWN0IGFuZCBhbGwgZnVuY3Rp b25zCnJlc3BvbnNpYmxlIGZvciBlbWl0dGluZyBvciByZXBsYXlpbmcgWExPR19IRUFQMl9WSVNJ QkxFIHJlY29yZHMuCgpUaGlzIGNoYW5nZXMgdGhlIHZpc2liaWxpdHkgbWFwIEFQSSwgc28gYW55 IGV4dGVybmFsIHVzZXJzL2NvbnN1bWVycyBvZgp0aGUgVk0tb25seSBXQUwgcmVjb3JkIHdpbGwg bmVlZCB0byBjaGFuZ2UuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1h bkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXkgQm9yb2RpbiA8eDRtbW1AeWFuZGV4LXRl YW0ucnU+ClJldmlld2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJl dmlld2VkLWJ5OiBDaGFvIExpIDxsaS5ldmFuLmNoYW9AZ21haWwuY29tPgotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5jICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgfCAgNTQgKy0tLS0tLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgICAgfCAxNTUgKystLS0tLS0tLS0tLS0tLS0tLS0tLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICAgfCAgIDYgKy0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAgfCAgMTYgKy0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgIHwgMTEyICstLS0tLS0tLS0tLS0tLS0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jICAgfCAgMTAgLS0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgfCAgIDEgLQogc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvc3RhbmRieS5jICAgICAgICB8ICAxMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbV94bG9nLmggICAgICAgICB8ICAyOCArLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJp bGl0eW1hcC5oICAgICAgIHwgIDEzICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1h cGRlZnMuaCAgIHwgICA5IC0tCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAg ICAgIHwgICAxIC0KIDEzIGZpbGVzIGNoYW5nZWQsIDQ2IGluc2VydGlvbnMoKyksIDM3NSBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2J1Zm1hc2su YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5jCmluZGV4IGJiMjYwY2ZmYTY4 Li41ZjA3ZjE3OTQxNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9idWZt YXNrLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9idWZtYXNrLmMKQEAgLTU2LDgg KzU2LDggQEAgbWFza19wYWdlX2hpbnRfYml0cyhQYWdlIHBhZ2UpCiAKIAkvKgogCSAqIER1cmlu ZyByZXBsYXksIGlmIHRoZSBwYWdlIExTTiBoYXMgYWR2YW5jZWQgcGFzdCBvdXIgWExPRyByZWNv cmQncyBMU04sCi0JICogd2UgZG9uJ3QgbWFyayB0aGUgcGFnZSBhbGwtdmlzaWJsZS4gU2VlIGhl YXBfeGxvZ192aXNpYmxlKCkgZm9yCi0JICogZGV0YWlscy4KKwkgKiB3ZSBkb24ndCBtYXJrIHRo ZSBwYWdlIGFsbC12aXNpYmxlLiBTZWUgaGVhcF94bG9nX3BydW5lX2FuZF9mcmVlemUoKQorCSAq IGZvciBtb3JlIGRldGFpbHMuCiAJICovCiAJUGFnZUNsZWFyQWxsVmlzaWJsZShwYWdlKTsKIH0K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggMjI1Zjk4MjlmMjIuLjYwY2M2YmE5OThkIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtMjUzOSwxMSArMjUzOSwxMSBAQCBoZWFwX211 bHRpX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgVHVwbGVUYWJsZVNsb3QgKipzbG90cywgaW50 IG50dXBsZXMsCiAJCWVsc2UgaWYgKGFsbF9mcm96ZW5fc2V0KQogCQl7CiAJCQlQYWdlU2V0QWxs VmlzaWJsZShwYWdlKTsKLQkJCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhCdWZmZXJHZXRCbG9j a051bWJlcihidWZmZXIpLAotCQkJCQkJCQkJIHZtYnVmZmVyLAotCQkJCQkJCQkJIFZJU0lCSUxJ VFlNQVBfQUxMX1ZJU0lCTEUgfAotCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwK LQkJCQkJCQkJCSByZWxhdGlvbi0+cmRfbG9jYXRvcik7CisJCQl2aXNpYmlsaXR5bWFwX3NldChC dWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpLAorCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJ ICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxM X0ZST1pFTiwKKwkJCQkJCQkgIHJlbGF0aW9uLT5yZF9sb2NhdG9yKTsKIAkJfQogCiAJCS8qCkBA IC04ODEyLDUwICs4ODEyLDYgQEAgYm90dG9tdXBfc29ydF9hbmRfc2hyaW5rKFRNX0luZGV4RGVs ZXRlT3AgKmRlbHN0YXRlKQogCXJldHVybiBuYmxvY2tzZmF2b3JhYmxlOwogfQogCi0vKgotICog UGVyZm9ybSBYTG9nSW5zZXJ0IGZvciBhIGhlYXAtdmlzaWJsZSBvcGVyYXRpb24uICAnYmxvY2sn IGlzIHRoZSBibG9jawotICogYmVpbmcgbWFya2VkIGFsbC12aXNpYmxlLCBhbmQgdm1fYnVmZmVy IGlzIHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUKLSAqIGNvcnJlc3BvbmRpbmcgdmlzaWJpbGl0 eSBtYXAgYmxvY2suICBCb3RoIHNob3VsZCBoYXZlIGFscmVhZHkgYmVlbiBtb2RpZmllZAotICog YW5kIGRpcnRpZWQuCi0gKgotICogc25hcHNob3RDb25mbGljdEhvcml6b24gY29tZXMgZnJvbSB0 aGUgbGFyZ2VzdCB4bWluIG9uIHRoZSBwYWdlIGJlaW5nCi0gKiBtYXJrZWQgYWxsLXZpc2libGUu ICBSRURPIHJvdXRpbmUgdXNlcyBpdCB0byBnZW5lcmF0ZSByZWNvdmVyeSBjb25mbGljdHMuCi0g KgotICogSWYgY2hlY2tzdW1zIG9yIHdhbF9sb2dfaGludHMgYXJlIGVuYWJsZWQsIHdlIG1heSBh bHNvIGdlbmVyYXRlIGEgZnVsbC1wYWdlCi0gKiBpbWFnZSBvZiBoZWFwX2J1ZmZlci4gT3RoZXJ3 aXNlLCB3ZSBvcHRpbWl6ZSBhd2F5IHRoZSBGUEkgKGJ5IHNwZWNpZnlpbmcKLSAqIFJFR0JVRl9O T19JTUFHRSBmb3IgdGhlIGhlYXAgYnVmZmVyKSwgaW4gd2hpY2ggY2FzZSB0aGUgY2FsbGVyIHNo b3VsZCAqbm90KgotICogdXBkYXRlIHRoZSBoZWFwIHBhZ2UncyBMU04uCi0gKi8KLVhMb2dSZWNQ dHIKLWxvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsIEJ1 ZmZlciB2bV9idWZmZXIsCi0JCQkJIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6 b24sIHVpbnQ4IHZtZmxhZ3MpCi17Ci0JeGxfaGVhcF92aXNpYmxlIHhscmVjOwotCVhMb2dSZWNQ dHIJcmVjcHRyOwotCXVpbnQ4CQlmbGFnczsKLQotCUFzc2VydChCdWZmZXJJc1ZhbGlkKGhlYXBf YnVmZmVyKSk7Ci0JQXNzZXJ0KEJ1ZmZlcklzVmFsaWQodm1fYnVmZmVyKSk7Ci0KLQl4bHJlYy5z bmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwotCXhscmVj LmZsYWdzID0gdm1mbGFnczsKLQlpZiAoUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNv ZGluZyhyZWwpKQotCQl4bHJlYy5mbGFncyB8PSBWSVNJQklMSVRZTUFQX1hMT0dfQ0FUQUxPR19S RUw7Ci0JWExvZ0JlZ2luSW5zZXJ0KCk7Ci0JWExvZ1JlZ2lzdGVyRGF0YSgmeGxyZWMsIFNpemVP ZkhlYXBWaXNpYmxlKTsKLQotCVhMb2dSZWdpc3RlckJ1ZmZlcigwLCB2bV9idWZmZXIsIDApOwot Ci0JZmxhZ3MgPSBSRUdCVUZfU1RBTkRBUkQ7Ci0JaWYgKCFYTG9nSGludEJpdElzTmVlZGVkKCkp Ci0JCWZsYWdzIHw9IFJFR0JVRl9OT19JTUFHRTsKLQlYTG9nUmVnaXN0ZXJCdWZmZXIoMSwgaGVh cF9idWZmZXIsIGZsYWdzKTsKLQotCXJlY3B0ciA9IFhMb2dJbnNlcnQoUk1fSEVBUDJfSUQsIFhM T0dfSEVBUDJfVklTSUJMRSk7Ci0KLQlyZXR1cm4gcmVjcHRyOwotfQotCiAvKgogICogUGVyZm9y bSBYTG9nSW5zZXJ0IGZvciBhIGhlYXAtdXBkYXRlIG9wZXJhdGlvbi4gIENhbGxlciBtdXN0IGFs cmVhZHkKICAqIGhhdmUgbW9kaWZpZWQgdGhlIGJ1ZmZlcihzKSBhbmQgbWFya2VkIHRoZW0gZGly dHkuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwppbmRleCBhMDlmYjRiODAzYS4u YjY2NzM2ZWEyODIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94 bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwpAQCAtMjM2 LDcgKzIzNiw3IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNv cmQpCiAJCWlmIChQYWdlSXNOZXcodm1wYWdlKSkKIAkJCVBhZ2VJbml0KHZtcGFnZSwgQkxDS1Na LCAwKTsKIAotCQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoYmxrbm8sIHZtYnVmZmVyLCB2bWZs YWdzLCBybG9jYXRvcik7CisJCXZpc2liaWxpdHltYXBfc2V0KGJsa25vLCB2bWJ1ZmZlciwgdm1m bGFncywgcmxvY2F0b3IpOwogCiAJCUFzc2VydChCdWZmZXJJc0RpcnR5KHZtYnVmZmVyKSk7CiAJ CVBhZ2VTZXRMU04odm1wYWdlLCBsc24pOwpAQCAtMjQ5LDE0MiArMjQ5LDYgQEAgaGVhcF94bG9n X3BydW5lX2ZyZWV6ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJWExvZ1JlY29yZFBhZ2VX aXRoRnJlZVNwYWNlKHJsb2NhdG9yLCBibGtubywgZnJlZXNwYWNlKTsKIH0KIAotLyoKLSAqIFJl cGxheSBYTE9HX0hFQVAyX1ZJU0lCTEUgcmVjb3Jkcy4KLSAqCi0gKiBUaGUgY3JpdGljYWwgaW50 ZWdyaXR5IHJlcXVpcmVtZW50IGhlcmUgaXMgdGhhdCB3ZSBtdXN0IG5ldmVyIGVuZCB1cCB3aXRo Ci0gKiBhIHNpdHVhdGlvbiB3aGVyZSB0aGUgdmlzaWJpbGl0eSBtYXAgYml0IGlzIHNldCwgYW5k IHRoZSBwYWdlLWxldmVsCi0gKiBQRF9BTExfVklTSUJMRSBiaXQgaXMgY2xlYXIuICBJZiB0aGF0 IHdlcmUgdG8gb2NjdXIsIHRoZW4gYSBzdWJzZXF1ZW50Ci0gKiBwYWdlIG1vZGlmaWNhdGlvbiB3 b3VsZCBmYWlsIHRvIGNsZWFyIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQuCi0gKi8KLXN0YXRpYyB2 b2lkCi1oZWFwX3hsb2dfdmlzaWJsZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKLXsKLQlYTG9n UmVjUHRyCWxzbiA9IHJlY29yZC0+RW5kUmVjUHRyOwotCXhsX2hlYXBfdmlzaWJsZSAqeGxyZWMg PSAoeGxfaGVhcF92aXNpYmxlICopIFhMb2dSZWNHZXREYXRhKHJlY29yZCk7Ci0JQnVmZmVyCQl2 bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7Ci0JQnVmZmVyCQlidWZmZXI7Ci0JUGFnZQkJcGFnZTsK LQlSZWxGaWxlTG9jYXRvciBybG9jYXRvcjsKLQlCbG9ja051bWJlciBibGtubzsKLQlYTG9nUmVk b0FjdGlvbiBhY3Rpb247Ci0KLQlBc3NlcnQoKHhscmVjLT5mbGFncyAmIFZJU0lCSUxJVFlNQVBf WExPR19WQUxJRF9CSVRTKSA9PSB4bHJlYy0+ZmxhZ3MpOwotCi0JWExvZ1JlY0dldEJsb2NrVGFn KHJlY29yZCwgMSwgJnJsb2NhdG9yLCBOVUxMLCAmYmxrbm8pOwotCi0JLyoKLQkgKiBJZiB0aGVy ZSBhcmUgYW55IEhvdCBTdGFuZGJ5IHRyYW5zYWN0aW9ucyBydW5uaW5nIHRoYXQgaGF2ZSBhbiB4 bWluCi0JICogaG9yaXpvbiBvbGQgZW5vdWdoIHRoYXQgdGhpcyBwYWdlIGlzbid0IGFsbC12aXNp YmxlIGZvciB0aGVtLCB0aGV5Ci0JICogbWlnaHQgaW5jb3JyZWN0bHkgZGVjaWRlIHRoYXQgYW4g aW5kZXgtb25seSBzY2FuIGNhbiBza2lwIGEgaGVhcCBmZXRjaC4KLQkgKgotCSAqIE5COiBJdCBt aWdodCBiZSBiZXR0ZXIgdG8gdGhyb3cgc29tZSBraW5kIG9mICJzb2Z0IiBjb25mbGljdCBoZXJl IHRoYXQKLQkgKiBmb3JjZXMgYW55IGluZGV4LW9ubHkgc2NhbiB0aGF0IGlzIGluIGZsaWdodCB0 byBwZXJmb3JtIGhlYXAgZmV0Y2hlcywKLQkgKiByYXRoZXIgdGhhbiBraWxsaW5nIHRoZSB0cmFu c2FjdGlvbiBvdXRyaWdodC4KLQkgKi8KLQlpZiAoSW5Ib3RTdGFuZGJ5KQotCQlSZXNvbHZlUmVj b3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6b24s Ci0JCQkJCQkJCQkJCXhscmVjLT5mbGFncyAmIFZJU0lCSUxJVFlNQVBfWExPR19DQVRBTE9HX1JF TCwKLQkJCQkJCQkJCQkJcmxvY2F0b3IpOwotCi0JLyoKLQkgKiBSZWFkIHRoZSBoZWFwIHBhZ2Us IGlmIGl0IHN0aWxsIGV4aXN0cy4gSWYgdGhlIGhlYXAgZmlsZSBoYXMgZHJvcHBlZCBvcgotCSAq IHRydW5jYXRlZCBsYXRlciBpbiByZWNvdmVyeSwgd2UgZG9uJ3QgbmVlZCB0byB1cGRhdGUgdGhl IHBhZ2UsIGJ1dCB3ZSdkCi0JICogYmV0dGVyIHN0aWxsIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBt YXAuCi0JICovCi0JYWN0aW9uID0gWExvZ1JlYWRCdWZmZXJGb3JSZWRvKHJlY29yZCwgMSwgJmJ1 ZmZlcik7Ci0JaWYgKGFjdGlvbiA9PSBCTEtfTkVFRFNfUkVETykKLQl7Ci0JCS8qCi0JCSAqIFdl IGRvbid0IGJ1bXAgdGhlIExTTiBvZiB0aGUgaGVhcCBwYWdlIHdoZW4gc2V0dGluZyB0aGUgdmlz aWJpbGl0eQotCQkgKiBtYXAgYml0ICh1bmxlc3MgY2hlY2tzdW1zIG9yIHdhbF9oaW50X2JpdHMg aXMgZW5hYmxlZCwgaW4gd2hpY2gKLQkJICogY2FzZSB3ZSBtdXN0KS4gVGhpcyBleHBvc2VzIHVz IHRvIHRvcm4gcGFnZSBoYXphcmRzLCBidXQgc2luY2UKLQkJICogd2UncmUgbm90IGluc3BlY3Rp bmcgdGhlIGV4aXN0aW5nIHBhZ2UgY29udGVudHMgaW4gYW55IHdheSwgd2UKLQkJICogZG9uJ3Qg Y2FyZS4KLQkJICovCi0JCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7Ci0KLQkJUGFnZVNl dEFsbFZpc2libGUocGFnZSk7Ci0KLQkJaWYgKFhMb2dIaW50Qml0SXNOZWVkZWQoKSkKLQkJCVBh Z2VTZXRMU04ocGFnZSwgbHNuKTsKLQotCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKLQl9Ci0J ZWxzZSBpZiAoYWN0aW9uID09IEJMS19SRVNUT1JFRCkKLQl7Ci0JCS8qCi0JCSAqIElmIGhlYXAg YmxvY2sgd2FzIGJhY2tlZCB1cCwgd2UgYWxyZWFkeSByZXN0b3JlZCBpdCBhbmQgdGhlcmUncwot CQkgKiBub3RoaW5nIG1vcmUgdG8gZG8uIChUaGlzIGNhbiBvbmx5IGhhcHBlbiB3aXRoIGNoZWNr c3VtcyBvcgotCQkgKiB3YWxfbG9nX2hpbnRzIGVuYWJsZWQuKQotCQkgKi8KLQl9Ci0KLQlpZiAo QnVmZmVySXNWYWxpZChidWZmZXIpKQotCXsKLQkJU2l6ZQkJc3BhY2UgPSBQYWdlR2V0RnJlZVNw YWNlKEJ1ZmZlckdldFBhZ2UoYnVmZmVyKSk7Ci0KLQkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZm ZXIpOwotCi0JCS8qCi0JCSAqIFNpbmNlIEZTTSBpcyBub3QgV0FMLWxvZ2dlZCBhbmQgb25seSB1 cGRhdGVkIGhldXJpc3RpY2FsbHksIGl0Ci0JCSAqIGVhc2lseSBiZWNvbWVzIHN0YWxlIGluIHN0 YW5kYnlzLiAgSWYgdGhlIHN0YW5kYnkgaXMgbGF0ZXIgcHJvbW90ZWQKLQkJICogYW5kIHJ1bnMg VkFDVVVNLCBpdCB3aWxsIHNraXAgdXBkYXRpbmcgaW5kaXZpZHVhbCBmcmVlIHNwYWNlCi0JCSAq IGZpZ3VyZXMgZm9yIHBhZ2VzIHRoYXQgYmVjYW1lIGFsbC12aXNpYmxlIChvciBhbGwtZnJvemVu LCBkZXBlbmRpbmcKLQkJICogb24gdGhlIHZhY3V1bSBtb2RlLCkgd2hpY2ggaXMgdHJvdWJsZXNv bWUgd2hlbiBGcmVlU3BhY2VNYXBWYWN1dW0KLQkJICogcHJvcGFnYXRlcyB0b28gb3B0aW1pc3Rp YyBmcmVlIHNwYWNlIHZhbHVlcyB0byB1cHBlciBGU00gbGF5ZXJzOwotCQkgKiBsYXRlciBpbnNl cnRlcnMgdHJ5IHRvIHVzZSBzdWNoIHBhZ2VzIG9ubHkgdG8gZmluZCBvdXQgdGhhdCB0aGV5Ci0J CSAqIGFyZSB1bnVzYWJsZS4gIFRoaXMgY2FuIGNhdXNlIGxvbmcgc3RhbGxzIHdoZW4gdGhlcmUg YXJlIG1hbnkgc3VjaAotCQkgKiBwYWdlcy4KLQkJICoKLQkJICogRm9yZXN0YWxsIHRob3NlIHBy b2JsZW1zIGJ5IHVwZGF0aW5nIEZTTSdzIGlkZWEgYWJvdXQgYSBwYWdlIHRoYXQKLQkJICogaXMg YmVjb21pbmcgYWxsLXZpc2libGUgb3IgYWxsLWZyb3plbi4KLQkJICoKLQkJICogRG8gdGhpcyBy ZWdhcmRsZXNzIG9mIGEgZnVsbC1wYWdlIGltYWdlIGJlaW5nIGFwcGxpZWQsIHNpbmNlIHRoZQot CQkgKiBGU00gZGF0YSBpcyBub3QgaW4gdGhlIHBhZ2UgYW55d2F5LgotCQkgKi8KLQkJaWYgKHhs cmVjLT5mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykKLQkJCVhMb2dSZWNvcmRQYWdl V2l0aEZyZWVTcGFjZShybG9jYXRvciwgYmxrbm8sIHNwYWNlKTsKLQl9Ci0KLQkvKgotCSAqIEV2 ZW4gaWYgd2Ugc2tpcHBlZCB0aGUgaGVhcCBwYWdlIHVwZGF0ZSBkdWUgdG8gdGhlIExTTiBpbnRl cmxvY2ssIGl0J3MKLQkgKiBzdGlsbCBzYWZlIHRvIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBtYXAu ICBBbnkgV0FMIHJlY29yZCB0aGF0IGNsZWFycwotCSAqIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQg ZG9lcyBzbyBiZWZvcmUgY2hlY2tpbmcgdGhlIHBhZ2UgTFNOLCBzbyBhbnkKLQkgKiBiaXRzIHRo YXQgbmVlZCB0byBiZSBjbGVhcmVkIHdpbGwgc3RpbGwgYmUgY2xlYXJlZC4KLQkgKi8KLQlpZiAo WExvZ1JlYWRCdWZmZXJGb3JSZWRvRXh0ZW5kZWQocmVjb3JkLCAwLCBSQk1fWkVST19PTl9FUlJP UiwgZmFsc2UsCi0JCQkJCQkJCQkgICZ2bWJ1ZmZlcikgPT0gQkxLX05FRURTX1JFRE8pCi0Jewot CQlQYWdlCQl2bXBhZ2UgPSBCdWZmZXJHZXRQYWdlKHZtYnVmZmVyKTsKLQkJUmVsYXRpb24JcmVs bjsKLQkJdWludDgJCXZtYml0czsKLQotCQkvKiBpbml0aWFsaXplIHRoZSBwYWdlIGlmIGl0IHdh cyByZWFkIGFzIHplcm9zICovCi0JCWlmIChQYWdlSXNOZXcodm1wYWdlKSkKLQkJCVBhZ2VJbml0 KHZtcGFnZSwgQkxDS1NaLCAwKTsKLQotCQkvKiByZW1vdmUgVklTSUJJTElUWU1BUF9YTE9HXyog Ki8KLQkJdm1iaXRzID0geGxyZWMtPmZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTOwot Ci0JCS8qCi0JCSAqIFhMb2dSZWFkQnVmZmVyRm9yUmVkb0V4dGVuZGVkIGxvY2tlZCB0aGUgYnVm ZmVyLiBCdXQKLQkJICogdmlzaWJpbGl0eW1hcF9zZXQgd2lsbCBoYW5kbGUgbG9ja2luZyBpdHNl bGYuCi0JCSAqLwotCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0spOwot Ci0JCXJlbG4gPSBDcmVhdGVGYWtlUmVsY2FjaGVFbnRyeShybG9jYXRvcik7Ci0KLQkJdmlzaWJp bGl0eW1hcF9zZXQocmVsbiwgYmxrbm8sIEludmFsaWRCdWZmZXIsIGxzbiwgdm1idWZmZXIsCi0J CQkJCQkgIHhscmVjLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwgdm1iaXRzKTsKLQotCQlSZWxl YXNlQnVmZmVyKHZtYnVmZmVyKTsKLQkJRnJlZUZha2VSZWxjYWNoZUVudHJ5KHJlbG4pOwotCX0K LQllbHNlIGlmIChCdWZmZXJJc1ZhbGlkKHZtYnVmZmVyKSkKLQkJVW5sb2NrUmVsZWFzZUJ1ZmZl cih2bWJ1ZmZlcik7Ci19Ci0KIC8qCiAgKiBHaXZlbiBhbiAiaW5mb2JpdHMiIGZpZWxkIGZyb20g YW4gWExvZyByZWNvcmQsIHNldCB0aGUgY29ycmVjdCBiaXRzIGluIHRoZQogICogZ2l2ZW4gaW5m b21hc2sgYW5kIGluZm9tYXNrMiBmb3IgdGhlIHR1cGxlIHRvdWNoZWQgYnkgdGhlIHJlY29yZC4K QEAgLTc2Miw4ICs2MjYsOCBAQCBoZWFwX3hsb2dfbXVsdGlfaW5zZXJ0KFhMb2dSZWFkZXJTdGF0 ZSAqcmVjb3JkKQogCSAqCiAJICogRHVyaW5nIHJlY292ZXJ5LCBob3dldmVyLCBubyBjb25jdXJy ZW50IHdyaXRlcnMgZXhpc3QuIFRoZXJlZm9yZSwKIAkgKiB1cGRhdGluZyB0aGUgVk0gd2l0aG91 dCBob2xkaW5nIHRoZSBoZWFwIHBhZ2UgbG9jayBpcyBzYWZlIGVub3VnaC4gVGhpcwotCSAqIHNh bWUgYXBwcm9hY2ggaXMgdGFrZW4gd2hlbiByZXBsYXlpbmcgeGxfaGVhcF92aXNpYmxlIHJlY29y ZHMgKHNlZQotCSAqIGhlYXBfeGxvZ192aXNpYmxlKCkpLgorCSAqIHNhbWUgYXBwcm9hY2ggaXMg dGFrZW4gd2hlbiByZXBsYXlpbmcgWExPR19IRUFQMl9QUlVORSogcmVjb3JkcyAoc2VlCisJICog aGVhcF94bG9nX3BydW5lX2FuZF9mcmVlemUoKSkuCiAJICovCiAJaWYgKCh4bHJlYy0+ZmxhZ3Mg JiBYTEhfSU5TRVJUX0FMTF9GUk9aRU5fU0VUKSAmJgogCQlYTG9nUmVhZEJ1ZmZlckZvclJlZG9F eHRlbmRlZChyZWNvcmQsIDEsIFJCTV9aRVJPX09OX0VSUk9SLCBmYWxzZSwKQEAgLTc3NSwxMSAr NjM5LDExIEBAIGhlYXBfeGxvZ19tdWx0aV9pbnNlcnQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQp CiAJCWlmIChQYWdlSXNOZXcodm1wYWdlKSkKIAkJCVBhZ2VJbml0KHZtcGFnZSwgQkxDS1NaLCAw KTsKIAotCQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoYmxrbm8sCi0JCQkJCQkJCSB2bWJ1ZmZl ciwKLQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAotCQkJCQkJCQkgVklTSUJJ TElUWU1BUF9BTExfRlJPWkVOLAotCQkJCQkJCQkgcmxvY2F0b3IpOworCQl2aXNpYmlsaXR5bWFw X3NldChibGtubywKKwkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxM X1ZJU0lCTEUgfAorCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4sCisJCQkJCQkgIHJs b2NhdG9yKTsKIAogCQlBc3NlcnQoQnVmZmVySXNEaXJ0eSh2bWJ1ZmZlcikpOwogCQlQYWdlU2V0 TFNOKHZtcGFnZSwgbHNuKTsKQEAgLTEzNjAsOSArMTIyNCw2IEBAIGhlYXAyX3JlZG8oWExvZ1Jl YWRlclN0YXRlICpyZWNvcmQpCiAJCWNhc2UgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fQ0xFQU5V UDoKIAkJCWhlYXBfeGxvZ19wcnVuZV9mcmVlemUocmVjb3JkKTsKIAkJCWJyZWFrOwotCQljYXNl IFhMT0dfSEVBUDJfVklTSUJMRToKLQkJCWhlYXBfeGxvZ192aXNpYmxlKHJlY29yZCk7Ci0JCQli cmVhazsKIAkJY2FzZSBYTE9HX0hFQVAyX01VTFRJX0lOU0VSVDoKIAkJCWhlYXBfeGxvZ19tdWx0 aV9pbnNlcnQocmVjb3JkKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YwppbmRleCBmYjgyYjBjMGY4Ni4uN2MzNmI4OTMyNGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3By dW5laGVhcC5jCkBAIC0xMTgwLDkgKzExODAsOSBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6 ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJICogaW4gc3luYy4KIAkJCSAqLwogCQkJ UGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCQlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9z ZXRfdm1iaXRzKGJsb2Nrbm8sCi0JCQkJCQkJCQkJCQkgIHZtYnVmZmVyLCBuZXdfdm1iaXRzLAot CQkJCQkJCQkJCQkJICBwYXJhbXMtPnJlbGF0aW9uLT5yZF9sb2NhdG9yKTsKKwkJCW9sZF92bWJp dHMgPSB2aXNpYmlsaXR5bWFwX3NldChibG9ja25vLAorCQkJCQkJCQkJCSAgIHZtYnVmZmVyLCBu ZXdfdm1iaXRzLAorCQkJCQkJCQkJCSAgIHBhcmFtcy0+cmVsYXRpb24tPnJkX2xvY2F0b3IpOwog CQkJQXNzZXJ0KG9sZF92bWJpdHMgIT0gbmV3X3ZtYml0cyk7CiAJCX0KIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IGI1MTExMmE3MWE3Li5jMTgwMzAwODdjMSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMTkwOCwxMSArMTkwOCwxMSBAQCBsYXp5 X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwgQmxvY2tO dW1iZXIgYmxrbm8sCiAJCQkJbG9nX25ld3BhZ2VfYnVmZmVyKGJ1ZiwgdHJ1ZSk7CiAKIAkJCVBh Z2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKGJsa25v LAotCQkJCQkJCQkJIHZtYnVmZmVyLAotCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lC TEUgfAotCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwKLQkJCQkJCQkJCSB2YWNy ZWwtPnJlbC0+cmRfbG9jYXRvcik7CisJCQl2aXNpYmlsaXR5bWFwX3NldChibGtubywKKwkJCQkJ CQkgIHZtYnVmZmVyLAorCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8CisJCQkJ CQkJICBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4sCisJCQkJCQkJICB2YWNyZWwtPnJlbC0+cmRf bG9jYXRvcik7CiAKIAkJCS8qCiAJCQkgKiBFbWl0IFdBTCBmb3Igc2V0dGluZyBQRF9BTExfVklT SUJMRSBvbiB0aGUgaGVhcCBwYWdlIGFuZApAQCAtMjc5NCw5ICsyNzk0LDkgQEAgbGF6eV92YWN1 dW1faGVhcF9wYWdlKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZl ciBidWZmZXIsCiAJCSAqIHNldCBQRF9BTExfVklTSUJMRS4KIAkJICovCiAJCVBhZ2VTZXRBbGxW aXNpYmxlKHBhZ2UpOwotCQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoYmxrbm8sCi0JCQkJCQkJ CSB2bWJ1ZmZlciwgdm1mbGFncywKLQkJCQkJCQkJIHZhY3JlbC0+cmVsLT5yZF9sb2NhdG9yKTsK KwkJdmlzaWJpbGl0eW1hcF9zZXQoYmxrbm8sCisJCQkJCQkgIHZtYnVmZmVyLCB2bWZsYWdzLAor CQkJCQkJICB2YWNyZWwtPnJlbC0+cmRfbG9jYXRvcik7CiAJCWNvbmZsaWN0X3hpZCA9IHZpc2li aWxpdHlfY3V0b2ZmX3hpZDsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3Zpc2liaWxpdHltYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHlt YXAuYwppbmRleCBkMTQ1ODhlOTJhZS4uNzk5N2U5MjY4NzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC92aXNpYmlsaXR5bWFwLmMKQEAgLTE0LDggKzE0LDcgQEAKICAqCQl2aXNpYmlsaXR5bWFw X2NsZWFyICAtIGNsZWFyIGJpdHMgZm9yIG9uZSBwYWdlIGluIHRoZSB2aXNpYmlsaXR5IG1hcAog ICoJCXZpc2liaWxpdHltYXBfcGluCSAtIHBpbiBhIG1hcCBwYWdlIGZvciBzZXR0aW5nIGEgYml0 CiAgKgkJdmlzaWJpbGl0eW1hcF9waW5fb2sgLSBjaGVjayB3aGV0aGVyIGNvcnJlY3QgbWFwIHBh Z2UgaXMgYWxyZWFkeSBwaW5uZWQKLSAqCQl2aXNpYmlsaXR5bWFwX3NldAkgLSBzZXQgYml0KHMp IGluIGEgcHJldmlvdXNseSBwaW5uZWQgcGFnZSBhbmQgbG9nCi0gKgkJdmlzaWJpbGl0eW1hcF9z ZXRfdm1iaXRzIC0gc2V0IGJpdChzKSBpbiBhIHBpbm5lZCBwYWdlCisgKgkJdmlzaWJpbGl0eW1h cF9zZXQJIC0gc2V0IGJpdChzKSBpbiBhIHByZXZpb3VzbHkgcGlubmVkIHBhZ2UKICAqCQl2aXNp YmlsaXR5bWFwX2dldF9zdGF0dXMgLSBnZXQgc3RhdHVzIG9mIGJpdHMKICAqCQl2aXNpYmlsaXR5 bWFwX2NvdW50ICAtIGNvdW50IG51bWJlciBvZiBiaXRzIHNldCBpbiB2aXNpYmlsaXR5IG1hcAog ICoJCXZpc2liaWxpdHltYXBfcHJlcGFyZV90cnVuY2F0ZSAtCkBAIC0yMjAsMTA5ICsyMTksNiBA QCB2aXNpYmlsaXR5bWFwX3Bpbl9vayhCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIgdm1idWYp CiAJcmV0dXJuIEJ1ZmZlcklzVmFsaWQodm1idWYpICYmIEJ1ZmZlckdldEJsb2NrTnVtYmVyKHZt YnVmKSA9PSBtYXBCbG9jazsKIH0KIAotLyoKLSAqCXZpc2liaWxpdHltYXBfc2V0IC0gc2V0IGJp dChzKSBvbiBhIHByZXZpb3VzbHkgcGlubmVkIHBhZ2UKLSAqCi0gKiByZWNwdHIgaXMgdGhlIExT TiBvZiB0aGUgWExPRyByZWNvcmQgd2UncmUgcmVwbGF5aW5nLCBpZiB3ZSdyZSBpbiByZWNvdmVy eSwKLSAqIG9yIEludmFsaWRYTG9nUmVjUHRyIGluIG5vcm1hbCBydW5uaW5nLiAgVGhlIFZNIHBh Z2UgTFNOIGlzIGFkdmFuY2VkIHRvIHRoZQotICogb25lIHByb3ZpZGVkOyBpbiBub3JtYWwgcnVu bmluZywgd2UgZ2VuZXJhdGUgYSBuZXcgWExPRyByZWNvcmQgYW5kIHNldCB0aGUKLSAqIHBhZ2Ug TFNOIHRvIHRoYXQgdmFsdWUgKHRob3VnaCB0aGUgaGVhcCBwYWdlJ3MgTFNOIG1heSAqbm90KiBi ZSB1cGRhdGVkOwotICogc2VlIGJlbG93KS4gIGN1dG9mZl94aWQgaXMgdGhlIGxhcmdlc3QgeG1p biBvbiB0aGUgcGFnZSBiZWluZyBtYXJrZWQKLSAqIGFsbC12aXNpYmxlOyBpdCBpcyBuZWVkZWQg Zm9yIEhvdCBTdGFuZGJ5LCBhbmQgY2FuIGJlIEludmFsaWRUcmFuc2FjdGlvbklkCi0gKiBpZiB0 aGUgcGFnZSBjb250YWlucyBubyB0dXBsZXMuICBJdCBjYW4gYWxzbyBiZSBzZXQgdG8gSW52YWxp ZFRyYW5zYWN0aW9uSWQKLSAqIHdoZW4gYSBwYWdlIHRoYXQgaXMgYWxyZWFkeSBhbGwtdmlzaWJs ZSBpcyBiZWluZyBtYXJrZWQgYWxsLWZyb3plbi4KLSAqCi0gKiBDYWxsZXIgaXMgZXhwZWN0ZWQg dG8gc2V0IHRoZSBoZWFwIHBhZ2UncyBQRF9BTExfVklTSUJMRSBiaXQgYmVmb3JlIGNhbGxpbmcK LSAqIHRoaXMgZnVuY3Rpb24uIEV4Y2VwdCBpbiByZWNvdmVyeSwgY2FsbGVyIHNob3VsZCBhbHNv IHBhc3MgdGhlIGhlYXAKLSAqIGJ1ZmZlci4gV2hlbiBjaGVja3N1bXMgYXJlIGVuYWJsZWQgYW5k IHdlJ3JlIG5vdCBpbiByZWNvdmVyeSwgd2UgbXVzdCBhZGQKLSAqIHRoZSBoZWFwIGJ1ZmZlciB0 byB0aGUgV0FMIGNoYWluIHRvIHByb3RlY3QgaXQgZnJvbSBiZWluZyB0b3JuLgotICoKLSAqIFlv dSBtdXN0IHBhc3MgYSBidWZmZXIgY29udGFpbmluZyB0aGUgY29ycmVjdCBtYXAgcGFnZSB0byB0 aGlzIGZ1bmN0aW9uLgotICogQ2FsbCB2aXNpYmlsaXR5bWFwX3BpbiBmaXJzdCB0byBwaW4gdGhl IHJpZ2h0IG9uZS4gVGhpcyBmdW5jdGlvbiBkb2Vzbid0IGRvCi0gKiBhbnkgSS9PLgotICoKLSAq IFJldHVybnMgdGhlIHN0YXRlIG9mIHRoZSBwYWdlJ3MgVk0gYml0cyBiZWZvcmUgc2V0dGluZyBm bGFncy4KLSAqLwotdWludDgKLXZpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9uIHJlbCwgQmxvY2tO dW1iZXIgaGVhcEJsaywgQnVmZmVyIGhlYXBCdWYsCi0JCQkJICBYTG9nUmVjUHRyIHJlY3B0ciwg QnVmZmVyIHZtQnVmLCBUcmFuc2FjdGlvbklkIGN1dG9mZl94aWQsCi0JCQkJICB1aW50OCBmbGFn cykKLXsKLQlCbG9ja051bWJlciBtYXBCbG9jayA9IEhFQVBCTEtfVE9fTUFQQkxPQ0soaGVhcEJs ayk7Ci0JdWludDMyCQltYXBCeXRlID0gSEVBUEJMS19UT19NQVBCWVRFKGhlYXBCbGspOwotCXVp bnQ4CQltYXBPZmZzZXQgPSBIRUFQQkxLX1RPX09GRlNFVChoZWFwQmxrKTsKLQlQYWdlCQlwYWdl OwotCXVpbnQ4CSAgICptYXA7Ci0JdWludDgJCXN0YXR1czsKLQotI2lmZGVmIFRSQUNFX1ZJU0lC SUxJVFlNQVAKLQllbG9nKERFQlVHMSwgInZtX3NldCBmbGFncyAweCUwMlggZm9yICVzICVkIiwK LQkJIGZsYWdzLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCBoZWFwQmxrKTsKLSNlbmRp ZgotCi0JQXNzZXJ0KEluUmVjb3ZlcnkgfHwgIVhMb2dSZWNQdHJJc1ZhbGlkKHJlY3B0cikpOwot CUFzc2VydChJblJlY292ZXJ5IHx8IFBhZ2VJc0FsbFZpc2libGUoQnVmZmVyR2V0UGFnZShoZWFw QnVmKSkpOwotCUFzc2VydCgoZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpID09IGZs YWdzKTsKLQotCS8qIE11c3QgbmV2ZXIgc2V0IGFsbF9mcm96ZW4gYml0IHdpdGhvdXQgYWxzbyBz ZXR0aW5nIGFsbF92aXNpYmxlIGJpdCAqLwotCUFzc2VydChmbGFncyAhPSBWSVNJQklMSVRZTUFQ X0FMTF9GUk9aRU4pOwotCi0JLyogQ2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSByaWdodCBoZWFwIHBh Z2UgcGlubmVkLCBpZiBwcmVzZW50ICovCi0JaWYgKEJ1ZmZlcklzVmFsaWQoaGVhcEJ1ZikgJiYg QnVmZmVyR2V0QmxvY2tOdW1iZXIoaGVhcEJ1ZikgIT0gaGVhcEJsaykKLQkJZWxvZyhFUlJPUiwg Indyb25nIGhlYXAgYnVmZmVyIHBhc3NlZCB0byB2aXNpYmlsaXR5bWFwX3NldCIpOwotCi0JQXNz ZXJ0KCFCdWZmZXJJc1ZhbGlkKGhlYXBCdWYpIHx8Ci0JCSAgIEJ1ZmZlcklzTG9ja2VkQnlNZUlu TW9kZShoZWFwQnVmLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpKTsKLQotCS8qIENoZWNrIHRoYXQg d2UgaGF2ZSB0aGUgcmlnaHQgVk0gcGFnZSBwaW5uZWQgKi8KLQlpZiAoIUJ1ZmZlcklzVmFsaWQo dm1CdWYpIHx8IEJ1ZmZlckdldEJsb2NrTnVtYmVyKHZtQnVmKSAhPSBtYXBCbG9jaykKLQkJZWxv ZyhFUlJPUiwgIndyb25nIFZNIGJ1ZmZlciBwYXNzZWQgdG8gdmlzaWJpbGl0eW1hcF9zZXQiKTsK LQotCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKHZtQnVmKTsKLQltYXAgPSAodWludDggKikgUGFnZUdl dENvbnRlbnRzKHBhZ2UpOwotCUxvY2tCdWZmZXIodm1CdWYsIEJVRkZFUl9MT0NLX0VYQ0xVU0lW RSk7Ci0KLQlzdGF0dXMgPSAobWFwW21hcEJ5dGVdID4+IG1hcE9mZnNldCkgJiBWSVNJQklMSVRZ TUFQX1ZBTElEX0JJVFM7Ci0JaWYgKGZsYWdzICE9IHN0YXR1cykKLQl7Ci0JCVNUQVJUX0NSSVRf U0VDVElPTigpOwotCi0JCW1hcFttYXBCeXRlXSB8PSAoZmxhZ3MgPDwgbWFwT2Zmc2V0KTsKLQkJ TWFya0J1ZmZlckRpcnR5KHZtQnVmKTsKLQotCQlpZiAoUmVsYXRpb25OZWVkc1dBTChyZWwpKQot CQl7Ci0JCQlpZiAoIVhMb2dSZWNQdHJJc1ZhbGlkKHJlY3B0cikpCi0JCQl7Ci0JCQkJQXNzZXJ0 KCFJblJlY292ZXJ5KTsKLQkJCQlyZWNwdHIgPSBsb2dfaGVhcF92aXNpYmxlKHJlbCwgaGVhcEJ1 Ziwgdm1CdWYsIGN1dG9mZl94aWQsIGZsYWdzKTsKLQotCQkJCS8qCi0JCQkJICogSWYgZGF0YSBj aGVja3N1bXMgYXJlIGVuYWJsZWQgKG9yIHdhbF9sb2dfaGludHM9b24pLCB3ZQotCQkJCSAqIG5l ZWQgdG8gcHJvdGVjdCB0aGUgaGVhcCBwYWdlIGZyb20gYmVpbmcgdG9ybi4KLQkJCQkgKgotCQkJ CSAqIElmIG5vdCwgdGhlbiB3ZSBtdXN0ICpub3QqIHVwZGF0ZSB0aGUgaGVhcCBwYWdlJ3MgTFNO LiBJbgotCQkJCSAqIHRoaXMgY2FzZSwgdGhlIEZQSSBmb3IgdGhlIGhlYXAgcGFnZSB3YXMgb21p dHRlZCBmcm9tIHRoZQotCQkJCSAqIFdBTCByZWNvcmQgaW5zZXJ0ZWQgYWJvdmUsIHNvIGl0IHdv dWxkIGJlIGluY29ycmVjdCB0bwotCQkJCSAqIHVwZGF0ZSB0aGUgaGVhcCBwYWdlJ3MgTFNOLgot CQkJCSAqLwotCQkJCWlmIChYTG9nSGludEJpdElzTmVlZGVkKCkpCi0JCQkJewotCQkJCQlQYWdl CQloZWFwUGFnZSA9IEJ1ZmZlckdldFBhZ2UoaGVhcEJ1Zik7Ci0KLQkJCQkJUGFnZVNldExTTiho ZWFwUGFnZSwgcmVjcHRyKTsKLQkJCQl9Ci0JCQl9Ci0JCQlQYWdlU2V0TFNOKHBhZ2UsIHJlY3B0 cik7Ci0JCX0KLQotCQlFTkRfQ1JJVF9TRUNUSU9OKCk7Ci0JfQotCi0JTG9ja0J1ZmZlcih2bUJ1 ZiwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKLQlyZXR1cm4gc3RhdHVzOwotfQotCiAvKgogICogU2V0 IFZNICh2aXNpYmlsaXR5IG1hcCkgZmxhZ3MgaW4gdGhlIFZNIGJsb2NrIGluIHZtQnVmLgogICoK QEAgLTM0NCw5ICsyNDAsOSBAQCB2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJsb2Nr TnVtYmVyIGhlYXBCbGssIEJ1ZmZlciBoZWFwQnVmLAogICogcmxvY2F0b3IgaXMgdXNlZCBvbmx5 IGZvciBkZWJ1Z2dpbmcgbWVzc2FnZXMuCiAgKi8KIHVpbnQ4Ci12aXNpYmlsaXR5bWFwX3NldF92 bWJpdHMoQmxvY2tOdW1iZXIgaGVhcEJsaywKLQkJCQkJCSBCdWZmZXIgdm1CdWYsIHVpbnQ4IGZs YWdzLAotCQkJCQkJIGNvbnN0IFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yKQordmlzaWJpbGl0eW1h cF9zZXQoQmxvY2tOdW1iZXIgaGVhcEJsaywKKwkJCQkgIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxh Z3MsCisJCQkJICBjb25zdCBSZWxGaWxlTG9jYXRvciBybG9jYXRvcikKIHsKIAlCbG9ja051bWJl ciBtYXBCbG9jayA9IEhFQVBCTEtfVE9fTUFQQkxPQ0soaGVhcEJsayk7CiAJdWludDMyCQltYXBC eXRlID0gSEVBUEJMS19UT19NQVBCWVRFKGhlYXBCbGspOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRl c2MvaGVhcGRlc2MuYwppbmRleCBjYTI2ZDFmMGVkMS4uMDg0NjFmZGY1OTMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jCkBAIC0zNDksMTMgKzM0OSw2IEBAIGhlYXAyX2Rl c2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJfQogCQl9CiAJ fQotCWVsc2UgaWYgKGluZm8gPT0gWExPR19IRUFQMl9WSVNJQkxFKQotCXsKLQkJeGxfaGVhcF92 aXNpYmxlICp4bHJlYyA9ICh4bF9oZWFwX3Zpc2libGUgKikgcmVjOwotCi0JCWFwcGVuZFN0cmlu Z0luZm8oYnVmLCAic25hcHNob3RDb25mbGljdEhvcml6b246ICV1LCBmbGFnczogMHglMDJYIiwK LQkJCQkJCSB4bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6b24sIHhscmVjLT5mbGFncyk7Ci0J fQogCWVsc2UgaWYgKGluZm8gPT0gWExPR19IRUFQMl9NVUxUSV9JTlNFUlQpCiAJewogCQl4bF9o ZWFwX211bHRpX2luc2VydCAqeGxyZWMgPSAoeGxfaGVhcF9tdWx0aV9pbnNlcnQgKikgcmVjOwpA QCAtNDYxLDkgKzQ1NCw2IEBAIGhlYXAyX2lkZW50aWZ5KHVpbnQ4IGluZm8pCiAJCWNhc2UgWExP R19IRUFQMl9QUlVORV9WQUNVVU1fQ0xFQU5VUDoKIAkJCWlkID0gIlBSVU5FX1ZBQ1VVTV9DTEVB TlVQIjsKIAkJCWJyZWFrOwotCQljYXNlIFhMT0dfSEVBUDJfVklTSUJMRToKLQkJCWlkID0gIlZJ U0lCTEUiOwotCQkJYnJlYWs7CiAJCWNhc2UgWExPR19IRUFQMl9NVUxUSV9JTlNFUlQ6CiAJCQlp ZCA9ICJNVUxUSV9JTlNFUlQiOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9kZWNvZGUuYwppbmRleCBjYzAzZjA3MDZlOS4uMmZkZDRhZjkwYTggMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKKysrIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwpAQCAtNDU0LDcgKzQ1NCw2IEBAIGhlYXAy X2RlY29kZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1 ZikKIAkJY2FzZSBYTE9HX0hFQVAyX1BSVU5FX09OX0FDQ0VTUzoKIAkJY2FzZSBYTE9HX0hFQVAy X1BSVU5FX1ZBQ1VVTV9TQ0FOOgogCQljYXNlIFhMT0dfSEVBUDJfUFJVTkVfVkFDVVVNX0NMRUFO VVA6Ci0JCWNhc2UgWExPR19IRUFQMl9WSVNJQkxFOgogCQljYXNlIFhMT0dfSEVBUDJfTE9DS19V UERBVEVEOgogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9zdGFuZGJ5LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMK aW5kZXggZmM0NWQ3MmM3OWIuLjM2NTUzNThlZDZiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9zdGFuZGJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRi eS5jCkBAIC00NzUsMTIgKzQ3NSwxMiBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFw c2hvdChUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAogCSAqIElmIHdlIGdl dCBwYXNzZWQgSW52YWxpZFRyYW5zYWN0aW9uSWQgdGhlbiB3ZSBkbyBub3RoaW5nIChubyBjb25m bGljdCkuCiAJICoKIAkgKiBUaGlzIGNhbiBoYXBwZW4gd2hlbiByZXBsYXlpbmcgYWxyZWFkeS1h cHBsaWVkIFdBTCByZWNvcmRzIGFmdGVyIGEKLQkgKiBzdGFuZGJ5IGNyYXNoIG9yIHJlc3RhcnQs IG9yIHdoZW4gcmVwbGF5aW5nIGFuIFhMT0dfSEVBUDJfVklTSUJMRQotCSAqIHJlY29yZCB0aGF0 IG1hcmtzIGFzIGZyb3plbiBhIHBhZ2Ugd2hpY2ggd2FzIGFscmVhZHkgYWxsLXZpc2libGUuICBJ dCdzCi0JICogYWxzbyBxdWl0ZSBjb21tb24gd2l0aCByZWNvcmRzIGdlbmVyYXRlZCBkdXJpbmcg aW5kZXggZGVsZXRpb24KLQkgKiAob3JpZ2luYWwgZXhlY3V0aW9uIG9mIHRoZSBkZWxldGlvbiBj YW4gcmVhc29uIHRoYXQgYSByZWNvdmVyeSBjb25mbGljdAotCSAqIHdoaWNoIGlzIHN1ZmZpY2ll bnQgZm9yIHRoZSBkZWxldGlvbiBvcGVyYXRpb24gbXVzdCB0YWtlIHBsYWNlIGJlZm9yZQotCSAq IHJlcGxheSBvZiB0aGUgZGVsZXRpb24gcmVjb3JkIGl0c2VsZikuCisJICogc3RhbmRieSBjcmFz aCBvciByZXN0YXJ0LCBvciB3aGVuIHJlcGxheWluZyBhIHJlY29yZCB0aGF0IG1hcmtzIGFzCisJ ICogZnJvemVuIGEgcGFnZSB3aGljaCB3YXMgYWxyZWFkeSBtYXJrZWQgYWxsLXZpc2libGUgaW4g dGhlIHZpc2liaWxpdHkKKwkgKiBtYXAuICBJdCdzIGFsc28gcXVpdGUgY29tbW9uIHdpdGggcmVj b3JkcyBnZW5lcmF0ZWQgZHVyaW5nIGluZGV4CisJICogZGVsZXRpb24gKG9yaWdpbmFsIGV4ZWN1 dGlvbiBvZiB0aGUgZGVsZXRpb24gY2FuIHJlYXNvbiB0aGF0IGEgcmVjb3ZlcnkKKwkgKiBjb25m bGljdCB3aGljaCBpcyBzdWZmaWNpZW50IGZvciB0aGUgZGVsZXRpb24gb3BlcmF0aW9uIG11c3Qg dGFrZSBwbGFjZQorCSAqIGJlZm9yZSByZXBsYXkgb2YgdGhlIGRlbGV0aW9uIHJlY29yZCBpdHNl bGYpLgogCSAqLwogCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoc25hcHNob3RDb25mbGljdEhv cml6b24pKQogCQlyZXR1cm47CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFt X3hsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCmluZGV4IDE2YzJiMmUz YzljLi42OTY3ODE4NzgzMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94 bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKQEAgLTYwLDcgKzYw LDYgQEAKICNkZWZpbmUgWExPR19IRUFQMl9QUlVORV9PTl9BQ0NFU1MJCTB4MTAKICNkZWZpbmUg WExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTgkweDIwCiAjZGVmaW5lIFhMT0dfSEVBUDJfUFJV TkVfVkFDVVVNX0NMRUFOVVAJMHgzMAotI2RlZmluZSBYTE9HX0hFQVAyX1ZJU0lCTEUJCTB4NDAK ICNkZWZpbmUgWExPR19IRUFQMl9NVUxUSV9JTlNFUlQgMHg1MAogI2RlZmluZSBYTE9HX0hFQVAy X0xPQ0tfVVBEQVRFRCAweDYwCiAjZGVmaW5lIFhMT0dfSEVBUDJfTkVXX0NJRAkJMHg3MApAQCAt Mjk0LDcgKzI5MywxMyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3BydW5lCiAKICNkZWZpbmUg U2l6ZU9mSGVhcFBydW5lIChvZmZzZXRvZih4bF9oZWFwX3BydW5lLCBmbGFncykgKyBzaXplb2Yo dWludDE2KSkKIAotLyogdG8gaGFuZGxlIHJlY292ZXJ5IGNvbmZsaWN0IGR1cmluZyBsb2dpY2Fs IGRlY29kaW5nIG9uIHN0YW5kYnkgKi8KKy8qCisgKiBUbyBoYW5kbGUgcmVjb3ZlcnkgY29uZmxp Y3QgZHVyaW5nIGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSwgd2UgbXVzdCBrbm93CisgKiBp ZiB0aGUgdGFibGUgaXMgYSBjYXRhbG9nIHRhYmxlLiBOb3RlIHRoYXQgaW4gdmlzaWJpbGl0eW1h cGRlZnMuaAorICogVklTSUJJTElUWU1BUF9YTE9HX0NBVEFMT0dfUkVMIGlzIGFsc28gZGVmaW5l ZCBhcyAoMSA8PCAyKS4geGxfaGVhcF9wcnVuZQorICogcmVjb3JkcyBzaG91bGQgdXNlIFhMSFBf SVNfQ0FUQUxPR19SRUwsIG5vdCBWSVNJQklMSVlUTUFQX1hMT0dfQ0FUQUxPR19SRUwgLS0KKyAq IGV2ZW4gaWYgdGhleSBvbmx5IGNvbnRhaW4gdXBkYXRlcyB0byB0aGUgVk0uCisgKi8KICNkZWZp bmUJCVhMSFBfSVNfQ0FUQUxPR19SRUwJCQkoMSA8PCAxKQogCiAvKgpAQCAtNDQzLDIwICs0NDgs NiBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX2lucGxhY2UKIAogI2RlZmluZSBNaW5TaXplT2ZI ZWFwSW5wbGFjZQkob2Zmc2V0b2YoeGxfaGVhcF9pbnBsYWNlLCBubXNncykgKyBzaXplb2YoaW50 KSkKIAotLyoKLSAqIFRoaXMgaXMgd2hhdCB3ZSBuZWVkIHRvIGtub3cgYWJvdXQgc2V0dGluZyBh IHZpc2liaWxpdHkgbWFwIGJpdAotICoKLSAqIEJhY2t1cCBibGsgMDogdmlzaWJpbGl0eSBtYXAg YnVmZmVyCi0gKiBCYWNrdXAgYmxrIDE6IGhlYXAgYnVmZmVyCi0gKi8KLXR5cGVkZWYgc3RydWN0 IHhsX2hlYXBfdmlzaWJsZQotewotCVRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6 b247Ci0JdWludDgJCWZsYWdzOwotfSB4bF9oZWFwX3Zpc2libGU7Ci0KLSNkZWZpbmUgU2l6ZU9m SGVhcFZpc2libGUgKG9mZnNldG9mKHhsX2hlYXBfdmlzaWJsZSwgZmxhZ3MpICsgc2l6ZW9mKHVp bnQ4KSkKLQogdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9uZXdfY2lkCiB7CiAJLyoKQEAgLTUwMCwx MSArNDkxLDYgQEAgZXh0ZXJuIHZvaWQgaGVhcDJfZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1Jl YWRlclN0YXRlICpyZWNvcmQpOwogZXh0ZXJuIGNvbnN0IGNoYXIgKmhlYXAyX2lkZW50aWZ5KHVp bnQ4IGluZm8pOwogZXh0ZXJuIHZvaWQgaGVhcF94bG9nX2xvZ2ljYWxfcmV3cml0ZShYTG9nUmVh ZGVyU3RhdGUgKnIpOwogCi1leHRlcm4gWExvZ1JlY1B0ciBsb2dfaGVhcF92aXNpYmxlKFJlbGF0 aW9uIHJlbCwgQnVmZmVyIGhlYXBfYnVmZmVyLAotCQkJCQkJCQkgICBCdWZmZXIgdm1fYnVmZmVy LAotCQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAotCQkJ CQkJCQkgICB1aW50OCB2bWZsYWdzKTsKLQogLyogaW4gaGVhcGRlc2MuYywgc28gaXQgY2FuIGJl IHNoYXJlZCBiZXR3ZWVuIGZyb250ZW5kL2JhY2tlbmQgY29kZSAqLwogZXh0ZXJuIHZvaWQgaGVh cF94bG9nX2Rlc2VyaWFsaXplX3BydW5lX2FuZF9mcmVlemUoY2hhciAqY3Vyc29yLCB1aW50MTYg ZmxhZ3MsCiAJCQkJCQkJCQkJCQkgICBpbnQgKm5wbGFucywgeGxocF9mcmVlemVfcGxhbiAqKnBs YW5zLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaCBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKaW5kZXggYzZmYTM3YmU5NjguLjA1YmE2 Nzg2YjQ3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oCisr KyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKQEAgLTE1LDcgKzE1LDYgQEAK ICNkZWZpbmUgVklTSUJJTElUWU1BUF9ICiAKICNpbmNsdWRlICJhY2Nlc3MvdmlzaWJpbGl0eW1h cGRlZnMuaCIKLSNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKICNpbmNsdWRlICJzdG9yYWdl L2Jsb2NrLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWYuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Jl bGZpbGVsb2NhdG9yLmgiCkBAIC0zMiwxNSArMzEsOSBAQCBleHRlcm4gYm9vbCB2aXNpYmlsaXR5 bWFwX2NsZWFyKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywKIGV4dGVybiB2b2lk IHZpc2liaWxpdHltYXBfcGluKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywKIAkJ CQkJCQkgIEJ1ZmZlciAqdm1idWYpOwogZXh0ZXJuIGJvb2wgdmlzaWJpbGl0eW1hcF9waW5fb2so QmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIHZtYnVmKTsKLWV4dGVybiB1aW50OCB2aXNpYmls aXR5bWFwX3NldChSZWxhdGlvbiByZWwsCi0JCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcEJsaywg QnVmZmVyIGhlYXBCdWYsCi0JCQkJCQkJICAgWExvZ1JlY1B0ciByZWNwdHIsCi0JCQkJCQkJICAg QnVmZmVyIHZtQnVmLAotCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwKLQkJCQkJ CQkgICB1aW50OCBmbGFncyk7Ci1leHRlcm4gdWludDggdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRz KEJsb2NrTnVtYmVyIGhlYXBCbGssCi0JCQkJCQkJCQkgIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxh Z3MsCi0JCQkJCQkJCQkgIGNvbnN0IFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yKTsKK2V4dGVybiB1 aW50OCB2aXNpYmlsaXR5bWFwX3NldChCbG9ja051bWJlciBoZWFwQmxrLAorCQkJCQkJCSAgIEJ1 ZmZlciB2bUJ1ZiwgdWludDggZmxhZ3MsCisJCQkJCQkJICAgY29uc3QgUmVsRmlsZUxvY2F0b3Ig cmxvY2F0b3IpOwogZXh0ZXJuIHVpbnQ4IHZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyhSZWxhdGlv biByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciAqdm1idWYpOwogZXh0ZXJuIHZvaWQg dmlzaWJpbGl0eW1hcF9jb3VudChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyICphbGxfdmlzaWJs ZSwgQmxvY2tOdW1iZXIgKmFsbF9mcm96ZW4pOwogZXh0ZXJuIEJsb2NrTnVtYmVyIHZpc2liaWxp dHltYXBfcHJlcGFyZV90cnVuY2F0ZShSZWxhdGlvbiByZWwsCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNp YmlsaXR5bWFwZGVmcy5oCmluZGV4IDVhZDVjMDIwODc3Li5lMDFiY2U0Yzk5ZiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgKQEAgLTIxLDE0ICsyMSw1IEBACiAjZGVmaW5l IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTgkweDAyCiAjZGVmaW5lIFZJU0lCSUxJVFlNQVBfVkFM SURfQklUUwkweDAzCS8qIE9SIG9mIGFsbCB2YWxpZCB2aXNpYmlsaXR5bWFwCiAJCQkJCQkJCQkJ CSAqIGZsYWdzIGJpdHMgKi8KLS8qCi0gKiBUbyBkZXRlY3QgcmVjb3ZlcnkgY29uZmxpY3RzIGR1 cmluZyBsb2dpY2FsIGRlY29kaW5nIG9uIGEgc3RhbmRieSwgd2UgbmVlZAotICogdG8ga25vdyBp ZiBhIHRhYmxlIGlzIGEgdXNlciBjYXRhbG9nIHRhYmxlLiBGb3IgdGhhdCB3ZSBhZGQgYW4gYWRk aXRpb25hbAotICogYml0IGludG8geGxfaGVhcF92aXNpYmxlLmZsYWdzLCBpbiBhZGRpdGlvbiB0 byB0aGUgYWJvdmUuCi0gKgotICogTkI6IFZJU0lCSUxJVFlNQVBfWExPR18qIG1heSBub3QgYmUg cGFzc2VkIHRvIHZpc2liaWxpdHltYXBfc2V0KCkuCi0gKi8KLSNkZWZpbmUgVklTSUJJTElUWU1B UF9YTE9HX0NBVEFMT0dfUkVMCTB4MDQKLSNkZWZpbmUgVklTSUJJTElUWU1BUF9YTE9HX1ZBTElE X0JJVFMJKFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyB8IFZJU0lCSUxJVFlNQVBfWExPR19DQVRB TE9HX1JFTCkKIAogI2VuZGlmCQkJCQkJCS8qIFZJU0lCSUxJVFlNQVBERUZTX0ggKi8KZGlmZiAt LWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggOWRkNjViMTAyNTQuLjE4MTlmM2RiYjc3IDEwMDY0NAot LS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdApAQCAtNDMwNiw3ICs0MzA2LDYgQEAgeGxfaGVhcF9wcnVuZQog eGxfaGVhcF9yZXdyaXRlX21hcHBpbmcKIHhsX2hlYXBfdHJ1bmNhdGUKIHhsX2hlYXBfdXBkYXRl Ci14bF9oZWFwX3Zpc2libGUKIHhsX2ludmFsaWRfcGFnZQogeGxfaW52YWxpZF9wYWdlX2tleQog eGxfaW52YWxpZGF0aW9ucwotLSAKMi40My4wCgo= --000000000000b196150645a17d5e Content-Type: application/x-patch; name="v25-0008-Rename-GlobalVisTestIsRemovableXid-to-GlobalVisX.patch" Content-Disposition: attachment; filename="v25-0008-Rename-GlobalVisTestIsRemovableXid-to-GlobalVisX.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj0m80wz7 RnJvbSA2NmY2YzczYTVhYjc0M2RiODU5ZTVhOTE3OTBjMTE0OGVmMmZmM2U2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBGcmksIDE4IEp1bCAyMDI1IDE2OjMwOjA0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjUgMDgvMTRdIFJlbmFtZSBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoKSB0bwog R2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKCkKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBl OiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhi aXQKClRoZSBmdW5jdGlvbiBpcyBjdXJyZW50bHkgb25seSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIg YSB0dXBsZeKAmXMgeG1heCBpcwp2aXNpYmxlIHRvIGFsbCB0cmFuc2FjdGlvbnMgKGFuZCB0aHVz IHJlbW92YWJsZSkuIFVwY29taW5nIGNoYW5nZXMgd2lsbAphbHNvIHVzZSBpdCB0byB0ZXN0IHdo ZXRoZXIgYSB0dXBsZeKAmXMgeG1pbiBpcyB2aXNpYmxlIHRvIGFsbCB0bwpkZWNpZGUgaWYgYSBw YWdlIGNhbiBiZSBtYXJrZWQgYWxsLXZpc2libGUgaW4gdGhlIHZpc2liaWxpdHkgbWFwLgoKVGhl IG5ldyBuYW1lLCBHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwoKSwgYmV0dGVyIHJlZmxlY3RzIHRo aXMgYnJvYWRlcgpwdXJwb3NlLgoKUmV2aWV3ZWQtYnk6IEFuZHJlcyBGcmV1bmQgPGFuZHJlc0Bh bmFyYXplbC5kZT4KUmV2aWV3ZWQtYnk6IEtpcmlsbCBSZXNoa2UgPHJlc2hrZWtpcmlsbEBnbWFp bC5jb20+ClJldmlld2VkLWJ5OiBDaGFvIExpIDxsaS5ldmFuLmNoYW9AZ21haWwuY29tPgotLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMgfCAgNiArKystLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICAgICAgfCAxMiArKysrKyst LS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMgICAgICAgfCAgMiAr LQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMgICAgICAgICB8IDE3ICsrKysr KysrLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS91dGlscy9zbmFwbWdyLmggICAgICAgICAgICAgICAg IHwgIDQgKystLQogNSBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJp bGl0eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYwppbmRl eCAwNWY2OTQ2ZmU2MC4uNGViYzhhYmRiZWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX3Zpc2liaWxpdHkuYwpAQCAtMTQ0Nyw3ICsxNDQ3LDcgQEAgSGVhcFR1cGxlU2F0aXNm aWVzTm9uVmFjdXVtYWJsZShIZWFwVHVwbGUgaHR1cCwgU25hcHNob3Qgc25hcHNob3QsCiAJewog CQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVhZF9hZnRlcikpOwogCi0JCWlmIChHbG9i YWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoc25hcHNob3QtPnZpc3Rlc3QsIGRlYWRfYWZ0ZXIpKQor CQlpZiAoR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKHNuYXBzaG90LT52aXN0ZXN0LCBkZWFkX2Fm dGVyKSkKIAkJCXJlcyA9IEhFQVBUVVBMRV9ERUFEOwogCX0KIAllbHNlCkBAIC0xNTEyLDggKzE1 MTIsOCBAQCBIZWFwVHVwbGVJc1N1cmVseURlYWQoSGVhcFR1cGxlIGh0dXAsIEdsb2JhbFZpc1N0 YXRlICp2aXN0ZXN0KQogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiBEZWxldGVyIGNvbW1pdHRlZCwg c28gdHVwbGUgaXMgZGVhZCBpZiB0aGUgWElEIGlzIG9sZCBlbm91Z2guICovCi0JcmV0dXJuIEds b2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZCh2aXN0ZXN0LAotCQkJCQkJCQkJICAgSGVhcFR1cGxl SGVhZGVyR2V0UmF3WG1heCh0dXBsZSkpOworCXJldHVybiBHbG9iYWxWaXNYaWRWaXNpYmxlVG9B bGwodmlzdGVzdCwKKwkJCQkJCQkJCUhlYXBUdXBsZUhlYWRlckdldFJhd1htYXgodHVwbGUpKTsK IH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggN2MzNmI4OTMyNGUu LmI3Y2NlZjFjMDg0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhl YXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMjUyLDcg KzI1Miw3IEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBi dWZmZXIpCiAJICovCiAJdmlzdGVzdCA9IEdsb2JhbFZpc1Rlc3RGb3IocmVsYXRpb24pOwogCi0J aWYgKCFHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQodmlzdGVzdCwgcHJ1bmVfeGlkKSkKKwlp ZiAoIUdsb2JhbFZpc1hpZFZpc2libGVUb0FsbCh2aXN0ZXN0LCBwcnVuZV94aWQpKQogCQlyZXR1 cm47CiAKIAkvKgpAQCAtNDg2LDcgKzQ4Niw3IEBAIHBydW5lX2ZyZWV6ZV9wbGFuKE9pZCByZWxv aWQsIEJ1ZmZlciBidWZmZXIsIFBydW5lU3RhdGUgKnByc3RhdGUsCiAJICogRGV0ZXJtaW5pbmcg SFRTViBvbmx5IG9uY2UgZm9yIGVhY2ggdHVwbGUgaXMgcmVxdWlyZWQgZm9yIGNvcnJlY3RuZXNz LAogCSAqIHRvIGRlYWwgd2l0aCBjYXNlcyB3aGVyZSBydW5uaW5nIEhUU1YgdHdpY2UgY291bGQg cmVzdWx0IGluIGRpZmZlcmVudAogCSAqIHJlc3VsdHMuICBGb3IgZXhhbXBsZSwgUkVDRU5UTFlf REVBRCBjYW4gdHVybiB0byBERUFEIGlmIGFub3RoZXIKLQkgKiBjaGVja2VkIGl0ZW0gY2F1c2Vz IEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZUZ1bGxYaWQoKSB0byB1cGRhdGUgdGhlCisJICogY2hl Y2tlZCBpdGVtIGNhdXNlcyBHbG9iYWxWaXNGdWxsWGlkVmlzaWJsZVRvQWxsKCkgdG8gdXBkYXRl IHRoZQogCSAqIGhvcml6b24sIG9yIElOU0VSVF9JTl9QUk9HUkVTUyBjYW4gY2hhbmdlIHRvIERF QUQgaWYgdGhlIGluc2VydGluZwogCSAqIHRyYW5zYWN0aW9uIGFib3J0cy4KIAkgKgpAQCAtMTI5 NywxMSArMTI5NywxMSBAQCBoZWFwX3BydW5lX3NhdGlzZmllc192YWN1dW0oUHJ1bmVTdGF0ZSAq cHJzdGF0ZSwgSGVhcFR1cGxlIHR1cCwgQnVmZmVyIGJ1ZmZlcikKIAkgKiBEZXRlcm1pbmUgd2hl dGhlciBvciBub3QgdGhlIHR1cGxlIGlzIGNvbnNpZGVyZWQgZGVhZCB3aGVuIGNvbXBhcmVkCiAJ ICogd2l0aCB0aGUgcHJvdmlkZWQgR2xvYmFsVmlzU3RhdGUuIE9uLWFjY2VzcyBwcnVuaW5nIGRv ZXMgbm90IHByb3ZpZGUKIAkgKiBWYWN1dW1DdXRvZmZzLiBBbmQgZm9yIHZhY3V1bSwgZXZlbiBp ZiB0aGUgdHVwbGUncyB4bWF4IGlzIG5vdCBvbGRlcgotCSAqIHRoYW4gT2xkZXN0WG1pbiwgR2xv YmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKCkgY291bGQgZmluZCB0aGUgcm93IGRlYWQKLQkgKiBp ZiB0aGUgR2xvYmFsVmlzU3RhdGUgaGFzIGJlZW4gdXBkYXRlZCBzaW5jZSB0aGUgYmVnaW5uaW5n IG9mIHZhY3V1bWluZworCSAqIHRoYW4gT2xkZXN0WG1pbiwgR2xvYmFsVmlzWGlkVmlzaWJsZVRv QWxsKCkgY291bGQgZmluZCB0aGUgcm93IGRlYWQgaWYKKwkgKiB0aGUgR2xvYmFsVmlzU3RhdGUg aGFzIGJlZW4gdXBkYXRlZCBzaW5jZSB0aGUgYmVnaW5uaW5nIG9mIHZhY3V1bWluZwogCSAqIHRo ZSByZWxhdGlvbi4KIAkgKi8KLQlpZiAoR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKHByc3Rh dGUtPnZpc3Rlc3QsIGRlYWRfYWZ0ZXIpKQorCWlmIChHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwo cHJzdGF0ZS0+dmlzdGVzdCwgZGVhZF9hZnRlcikpCiAJCXJldHVybiBIRUFQVFVQTEVfREVBRDsK IAogCXJldHVybiByZXM7CkBAIC0xNzYwLDcgKzE3NjAsNyBAQCBoZWFwX3BydW5lX3JlY29yZF91 bmNoYW5nZWRfbHBfbm9ybWFsKFBhZ2UgcGFnZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0 TnVtYgogCQkJCS8qCiAJCQkJICogRm9yIG5vdyBhbHdheXMgdXNlIHByc3RhdGUtPmN1dG9mZnMg Zm9yIHRoaXMgdGVzdCwgYmVjYXVzZQogCQkJCSAqIHdlIG9ubHkgdXBkYXRlICdhbGxfdmlzaWJs ZScgYW5kICdhbGxfZnJvemVuJyB3aGVuIGZyZWV6aW5nCi0JCQkJICogaXMgcmVxdWVzdGVkLiBX ZSBjb3VsZCB1c2UgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkCisJCQkJICogaXMgcmVxdWVz dGVkLiBXZSBjb3VsZCB1c2UgR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKCkKIAkJCQkgKiBpbnN0 ZWFkLCBpZiBhIG5vbi1mcmVlemluZyBjYWxsZXIgd2FudGVkIHRvIHNldCB0aGUgVk0gYml0Lgog CQkJCSAqLwogCQkJCUFzc2VydChwcnN0YXRlLT5jdXRvZmZzKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Bn aXN0L3NwZ3ZhY3V1bS5jCmluZGV4IGNiNTY3MWMxYTRlLi4zYTY4NzU3YzA5YSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCkBAIC01MzYsNyArNTM2LDcgQEAgdmFjdXVtUmVk aXJlY3RBbmRQbGFjZWhvbGRlcihSZWxhdGlvbiBpbmRleCwgUmVsYXRpb24gaGVhcHJlbCwgQnVm ZmVyIGJ1ZmZlcikKIAkJICovCiAJCWlmIChkdC0+dHVwc3RhdGUgPT0gU1BHSVNUX1JFRElSRUNU ICYmCiAJCQkoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGR0LT54aWQpIHx8Ci0JCQkgR2xvYmFsVmlz VGVzdElzUmVtb3ZhYmxlWGlkKHZpc3Rlc3QsIGR0LT54aWQpKSkKKwkJCSBHbG9iYWxWaXNYaWRW aXNpYmxlVG9BbGwodmlzdGVzdCwgZHQtPnhpZCkpKQogCQl7CiAJCQlkdC0+dHVwc3RhdGUgPSBT UEdJU1RfUExBQ0VIT0xERVI7CiAJCQlBc3NlcnQob3BhcXVlLT5uUmVkaXJlY3Rpb24gPiAwKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKaW5kZXggZjNhMTYwMzIwNGUuLjY3ZGE2NzM3 NDk2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYworKysg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYwpAQCAtNDE3OSw4ICs0MTc5LDcg QEAgR2xvYmFsVmlzVXBkYXRlKHZvaWQpCiAgKiBTZWUgY29tbWVudCBmb3IgR2xvYmFsVmlzU3Rh dGUgZm9yIGRldGFpbHMuCiAgKi8KIGJvb2wKLUdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZUZ1bGxY aWQoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLAotCQkJCQkJCQlGdWxsVHJhbnNhY3Rpb25JZCBmeGlk KQorR2xvYmFsVmlzRnVsbFhpZFZpc2libGVUb0FsbChHbG9iYWxWaXNTdGF0ZSAqc3RhdGUsIEZ1 bGxUcmFuc2FjdGlvbklkIGZ4aWQpCiB7CiAJLyoKIAkgKiBJZiBmeGlkIGlzIG9sZGVyIHRoYW4g bWF5YmVfbmVlZGVkIGJvdW5kLCBpdCBkZWZpbml0ZWx5IGlzIHZpc2libGUgdG8KQEAgLTQyMTQs MTQgKzQyMTMsMTQgQEAgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlRnVsbFhpZChHbG9iYWxWaXNT dGF0ZSAqc3RhdGUsCiB9CiAKIC8qCi0gKiBXcmFwcGVyIGFyb3VuZCBHbG9iYWxWaXNUZXN0SXNS ZW1vdmFibGVGdWxsWGlkKCkgZm9yIDMyYml0IHhpZHMuCisgKiBXcmFwcGVyIGFyb3VuZCBHbG9i YWxWaXNGdWxsWGlkVmlzaWJsZVRvQWxsKCkgZm9yIDMyYml0IHhpZHMuCiAgKgogICogSXQgaXMg Y3J1Y2lhbCB0aGF0IHRoaXMgb25seSBnZXRzIGNhbGxlZCBmb3IgeGlkcyBmcm9tIGEgc291cmNl IHRoYXQKICAqIHByb3RlY3RzIGFnYWluc3QgeGlkIHdyYXBhcm91bmRzIChlLmcuIGZyb20gYSB0 YWJsZSBhbmQgdGh1cyBwcm90ZWN0ZWQgYnkKICAqIHJlbGZyb3plbnhpZCkuCiAgKi8KIGJvb2wK LUdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZChHbG9iYWxWaXNTdGF0ZSAqc3RhdGUsIFRyYW5z YWN0aW9uSWQgeGlkKQorR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKEdsb2JhbFZpc1N0YXRlICpz dGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQpCiB7CiAJRnVsbFRyYW5zYWN0aW9uSWQgZnhpZDsKIApA QCAtNDIzNSwxMiArNDIzNCwxMiBAQCBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoR2xvYmFs VmlzU3RhdGUgKnN0YXRlLCBUcmFuc2FjdGlvbklkIHhpZCkKIAkgKi8KIAlmeGlkID0gRnVsbFhp ZFJlbGF0aXZlVG8oc3RhdGUtPmRlZmluaXRlbHlfbmVlZGVkLCB4aWQpOwogCi0JcmV0dXJuIEds b2JhbFZpc1Rlc3RJc1JlbW92YWJsZUZ1bGxYaWQoc3RhdGUsIGZ4aWQpOworCXJldHVybiBHbG9i YWxWaXNGdWxsWGlkVmlzaWJsZVRvQWxsKHN0YXRlLCBmeGlkKTsKIH0KIAogLyoKICAqIENvbnZl bmllbmNlIHdyYXBwZXIgYXJvdW5kIEdsb2JhbFZpc1Rlc3RGb3IoKSBhbmQKLSAqIEdsb2JhbFZp c1Rlc3RJc1JlbW92YWJsZUZ1bGxYaWQoKSwgc2VlIHRoZWlyIGNvbW1lbnRzLgorICogR2xvYmFs VmlzRnVsbFhpZFZpc2libGVUb0FsbCgpLCBzZWUgdGhlaXIgY29tbWVudHMuCiAgKi8KIGJvb2wK IEdsb2JhbFZpc0NoZWNrUmVtb3ZhYmxlRnVsbFhpZChSZWxhdGlvbiByZWwsIEZ1bGxUcmFuc2Fj dGlvbklkIGZ4aWQpCkBAIC00MjQ5LDEyICs0MjQ4LDEyIEBAIEdsb2JhbFZpc0NoZWNrUmVtb3Zh YmxlRnVsbFhpZChSZWxhdGlvbiByZWwsIEZ1bGxUcmFuc2FjdGlvbklkIGZ4aWQpCiAKIAlzdGF0 ZSA9IEdsb2JhbFZpc1Rlc3RGb3IocmVsKTsKIAotCXJldHVybiBHbG9iYWxWaXNUZXN0SXNSZW1v dmFibGVGdWxsWGlkKHN0YXRlLCBmeGlkKTsKKwlyZXR1cm4gR2xvYmFsVmlzRnVsbFhpZFZpc2li bGVUb0FsbChzdGF0ZSwgZnhpZCk7CiB9CiAKIC8qCiAgKiBDb252ZW5pZW5jZSB3cmFwcGVyIGFy b3VuZCBHbG9iYWxWaXNUZXN0Rm9yKCkgYW5kCi0gKiBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVY aWQoKSwgc2VlIHRoZWlyIGNvbW1lbnRzLgorICogR2xvYmFsVmlzVGVzdElzVmlzaWJsZVhpZCgp LCBzZWUgdGhlaXIgY29tbWVudHMuCiAgKi8KIGJvb2wKIEdsb2JhbFZpc0NoZWNrUmVtb3ZhYmxl WGlkKFJlbGF0aW9uIHJlbCwgVHJhbnNhY3Rpb25JZCB4aWQpCkBAIC00MjYzLDcgKzQyNjIsNyBA QCBHbG9iYWxWaXNDaGVja1JlbW92YWJsZVhpZChSZWxhdGlvbiByZWwsIFRyYW5zYWN0aW9uSWQg eGlkKQogCiAJc3RhdGUgPSBHbG9iYWxWaXNUZXN0Rm9yKHJlbCk7CiAKLQlyZXR1cm4gR2xvYmFs VmlzVGVzdElzUmVtb3ZhYmxlWGlkKHN0YXRlLCB4aWQpOworCXJldHVybiBHbG9iYWxWaXNYaWRW aXNpYmxlVG9BbGwoc3RhdGUsIHhpZCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS91dGlscy9zbmFwbWdyLmggYi9zcmMvaW5jbHVkZS91dGlscy9zbmFwbWdyLmgKaW5kZXggNjA0 YzFmOTAyMTYuLmEwZWEyY2ZjZWEyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9zbmFw bWdyLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvc25hcG1nci5oCkBAIC0xMDAsOCArMTAwLDgg QEAgZXh0ZXJuIGNoYXIgKkV4cG9ydFNuYXBzaG90KFNuYXBzaG90IHNuYXBzaG90KTsKICAqLwog dHlwZWRlZiBzdHJ1Y3QgR2xvYmFsVmlzU3RhdGUgR2xvYmFsVmlzU3RhdGU7CiBleHRlcm4gR2xv YmFsVmlzU3RhdGUgKkdsb2JhbFZpc1Rlc3RGb3IoUmVsYXRpb24gcmVsKTsKLWV4dGVybiBib29s IEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZChHbG9iYWxWaXNTdGF0ZSAqc3RhdGUsIFRyYW5z YWN0aW9uSWQgeGlkKTsKLWV4dGVybiBib29sIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZUZ1bGxY aWQoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBGdWxsVHJhbnNhY3Rpb25JZCBmeGlkKTsKK2V4dGVy biBib29sIEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbChHbG9iYWxWaXNTdGF0ZSAqc3RhdGUsIFRy YW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVybiBib29sIEdsb2JhbFZpc0Z1bGxYaWRWaXNpYmxlVG9B bGwoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBGdWxsVHJhbnNhY3Rpb25JZCBmeGlkKTsKIGV4dGVy biBib29sIEdsb2JhbFZpc0NoZWNrUmVtb3ZhYmxlWGlkKFJlbGF0aW9uIHJlbCwgVHJhbnNhY3Rp b25JZCB4aWQpOwogZXh0ZXJuIGJvb2wgR2xvYmFsVmlzQ2hlY2tSZW1vdmFibGVGdWxsWGlkKFJl bGF0aW9uIHJlbCwgRnVsbFRyYW5zYWN0aW9uSWQgZnhpZCk7CiAKLS0gCjIuNDMuMAoK --000000000000b196150645a17d5e Content-Type: application/x-patch; name="v25-0009-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Disposition: attachment; filename="v25-0009-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj0m848w8 RnJvbSBlYmYyZTNkZGQwZDIyMjk5MWJmMDg5ZGRjOGFjNzg0ZTQzZGZhMTQwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM4OjI0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjUgMDkvMTRdIFVzZSBHbG9iYWxWaXNTdGF0ZSBpbiB2YWN1dW0gdG8gZGV0ZXJtaW5l IHBhZ2UKIGxldmVsIHZpc2liaWxpdHkKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0 ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQK CkR1cmluZyB2YWN1dW0ncyBmaXJzdCBhbmQgdGhpcmQgcGhhc2VzLCB3ZSBleGFtaW5lIHR1cGxl cycgdmlzaWJpbGl0eQp0byBkZXRlcm1pbmUgaWYgd2UgY2FuIHNldCB0aGUgcGFnZSBhbGwtdmlz aWJsZSBpbiB0aGUgdmlzaWJpbGl0eSBtYXAuCgpQcmV2aW91c2x5LCB0aGlzIGNoZWNrIGNvbXBh cmVkIHR1cGxlIHhtaW5zIGFnYWluc3QgYSBzaW5nbGUgWElEIGNob3NlbiBhdAp0aGUgc3RhcnQg b2YgdmFjdXVtIChPbGRlc3RYbWluKS4gV2Ugbm93IHVzZSBHbG9iYWxWaXNTdGF0ZSwgd2hpY2gg YWxzbwplbmFibGVzIGZ1dHVyZSB3b3JrIHRvIHNldCB0aGUgVk0gZHVyaW5nIG9uLWFjY2VzcyBw cnVuaW5nLCBzaW5jZSBvcmRpbmFyeQpxdWVyaWVzIGhhdmUgYWNjZXNzIHRvIEdsb2JhbFZpc1N0 YXRlIGJ1dCBub3QgT2xkZXN0WG1pbi4KClRoaXMgYWxzbyBiZW5lZml0cyB2YWN1dW0gZGlyZWN0 bHk6IGluIHNvbWUgY2FzZXMsIEdsb2JhbFZpc1N0YXRlIG1heQphZHZhbmNlIGR1cmluZyBhIHZh Y3V1bSwgYWxsb3dpbmcgbW9yZSBwYWdlcyB0byBiZWNvbWUgY29uc2lkZXJlZAphbGwtdmlzaWJs ZS4gQW5kLCBpbiB0aGUgZnV0dXJlLCB3ZSBjb3VsZCBlYXNpbHkgYWRkIGEgaGV1cmlzdGljIHRv CnVwZGF0ZSBHbG9iYWxWaXNTdGF0ZSBtb3JlIGZyZXF1ZW50bHkgZHVyaW5nIHZhY3V1bXMgb2Yg bGFyZ2UgdGFibGVzLiBJbgp0aGUgcmFyZSBjYXNlIHRoYXQgdGhlIEdsb2JhbFZpc1N0YXRlIG1v dmVzIGJhY2t3YXJkLCB2YWN1dW0gZmFsbHMgYmFjawp0byBPbGRlc3RYbWluIHRvIGVuc3VyZSB3 ZSBkb27igJl0IGF0dGVtcHQgdG8gZnJlZXplIGEgZGVhZCB0dXBsZSB0aGF0Cndhc27igJl0IHll dCBwcnVuYWJsZSBhY2NvcmRpbmcgdG8gdGhlIEdsb2JhbFZpc1N0YXRlLgoKQmVjYXVzZSBjb21w YXJpbmcgYSB0cmFuc2FjdGlvbiBJRCBhZ2FpbnN0IEdsb2JhbFZpc1N0YXRlIGlzIG1vcmUKZXhw ZW5zaXZlIHRoYW4gY29tcGFyaW5nIGFnYWluc3QgYSBzaW5nbGUgWElELCB3ZSBkZWZlciB0aGlz IGNoZWNrIHVudGlsCmFmdGVyIHNjYW5uaW5nIGFsbCB0dXBsZXMgb24gdGhlIHBhZ2UuIElmIHZp c2liaWxpdHlfY3V0b2ZmX3hpZCB3YXMKbWFpbnRhaW5lZCwgd2UgcGVyZm9ybSB0aGUgR2xvYmFs VmlzU3RhdGUgY2hlY2sgb25seSBvbmNlIHBlciBwYWdlLgpUaGlzIGlzIHNhZmUgYmVjYXVzZSB2 aXNpYmlsaXR5X2N1dG9mZl94aWQgcmVjb3JkcyB0aGUgbmV3ZXN0IHhtaW4gb24KdGhlIHBhZ2U7 IGlmIGl0IGlzIGdsb2JhbGx5IHZpc2libGUsIHRoZW4gdGhlIGVudGlyZSBwYWdlIGlzIGFsbC12 aXNpYmxlLgoKVGhpcyBhcHByb2FjaCBtYXkgcmVzdWx0IGluIGV4YW1pbmluZyBtb3JlIHR1cGxl IHhtaW5zIHRoYW4gYmVmb3JlLApzaW5jZSB3aXRoIE9sZGVzdFhtaW4gd2UgY291bGQgc29tZXRp bWVzIHJ1bGUgb3V0IHRoZSBwYWdlIGJlaW5nCmFsbC12aXNpYmxlIGVhcmxpZXIuIEhvd2V2ZXIs IHByb2ZpbGluZyBzaG93cyB0aGUgYWRkaXRpb25hbCBjb3N0IGlzIG5vdApzaWduaWZpY2FudC4K ClJldmlld2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJldmlld2Vk LWJ5OiBDaGFvIExpIDxsaS5ldmFuLmNoYW9AZ21haWwuY29tPgotLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMgfCAyOCArKysrKysrKysrKysrKwogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAgICAgICB8IDQzICsrKysrKysrKy0tLS0t LS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jICAgICAgICB8IDEw ICsrLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggICAgICAgICAgICAgICAgIHwgMTEg KysrLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDU4IGluc2VydGlvbnMoKyksIDM0IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5 LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jCmluZGV4IDRl YmM4YWJkYmViLi5lZGQ1MjlkYzNjMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX3Zpc2liaWxpdHkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW1fdmlzaWJpbGl0eS5jCkBAIC0xMTg5LDYgKzExODksMzQgQEAgSGVhcFR1cGxlU2F0aXNmaWVz VmFjdXVtKEhlYXBUdXBsZSBodHVwLCBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCiAJcmV0dXJu IHJlczsKIH0KIAorLyoKKyAqIE5lYXJseSB0aGUgc2FtZSBhcyBIZWFwVHVwbGVTYXRpc2ZpZXNW YWN1dW0sIGJ1dCB1c2VzIGEgR2xvYmFsVmlzU3RhdGUgdG8KKyAqIGRldGVybWluZSB3aGV0aGVy IG9yIG5vdCBhIHR1cGxlIGlzIEhFQVBUVVBMRV9ERUFEIE9yCisgKiBIRUFQVFVQTEVfUkVDRU5U TFlfREVBRC4gSXQgc2VydmVzIHRoZSBzYW1lIHB1cnBvc2UgYnV0IGNhbiBiZSB1c2VkIGJ5Cisg KiBjYWxsZXJzIHRoYXQgaGF2ZSBub3QgY2FsY3VsYXRlZCBhIHNpbmdsZSBPbGRlc3RYbWluIHZh bHVlLgorICovCitIVFNWX1Jlc3VsdAorSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtR2xvYmFsVmlz KEhlYXBUdXBsZSBodHVwLCBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKKwkJCQkJCQkJICBCdWZm ZXIgYnVmZmVyKQoreworCVRyYW5zYWN0aW9uSWQgZGVhZF9hZnRlciA9IEludmFsaWRUcmFuc2Fj dGlvbklkOworCUhUU1ZfUmVzdWx0IHJlczsKKworCXJlcyA9IEhlYXBUdXBsZVNhdGlzZmllc1Zh Y3V1bUhvcml6b24oaHR1cCwgYnVmZmVyLCAmZGVhZF9hZnRlcik7CisKKwlpZiAocmVzID09IEhF QVBUVVBMRV9SRUNFTlRMWV9ERUFEKQorCXsKKwkJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlk KGRlYWRfYWZ0ZXIpKTsKKworCQlpZiAoR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKHZpc3Rlc3Qs IGRlYWRfYWZ0ZXIpKQorCQkJcmVzID0gSEVBUFRVUExFX0RFQUQ7CisJfQorCWVsc2UKKwkJQXNz ZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChkZWFkX2FmdGVyKSk7CisKKwlyZXR1cm4gcmVzOwor fQorCiAvKgogICogV29yayBob3JzZSBmb3IgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtIGFuZCBz aW1pbGFyIHJvdXRpbmVzLgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXgg YjdjY2VmMWMwODQuLmE1ZWFiMmI0MWEwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YwpAQCAtNDQ5LDExICs0NDksMTIgQEAgcHJ1bmVfZnJlZXplX3NldHVwKFBydW5lRnJlZXplUGFy YW1zICpwYXJhbXMsCiAKIAkvKgogCSAqIFRoZSB2aXNpYmlsaXR5IGN1dG9mZiB4aWQgaXMgdGhl IG5ld2VzdCB4bWluIG9mIGxpdmUsIGNvbW1pdHRlZCB0dXBsZXMKLQkgKiBvbGRlciB0aGFuIE9s ZGVzdFhtaW4gb24gdGhlIHBhZ2UuIFRoaXMgZmllbGQgaXMgb25seSBrZXB0IHVwLXRvLWRhdGUK LQkgKiBpZiB0aGUgcGFnZSBpcyBhbGwtdmlzaWJsZS4gQXMgc29vbiBhcyBhIHR1cGxlIGlzIGVu Y291bnRlcmVkIHRoYXQgaXMKLQkgKiBub3QgdmlzaWJsZSB0byBhbGwsIHRoaXMgZmllbGQgaXMg dW5tYWludGFpbmVkLiBBcyBsb25nIGFzIGl0IGlzCi0JICogbWFpbnRhaW5lZCwgaXQgY2FuIGJl IHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uCi0JICogd2hl biB1cGRhdGluZyB0aGUgVk0gYW5kL29yIGZyZWV6aW5nIGFsbCB0aGUgdHVwbGVzIG9uIHRoZSBw YWdlLgorCSAqIG9uIHRoZSBwYWdlIG9sZGVyIHRoYW4gdGhlIHZpc2liaWxpdHkgaG9yaXpvbiBy ZXByZXNlbnRlZCBpbiB0aGUKKwkgKiBHbG9iYWxWaXNTdGF0ZS4gVGhpcyBmaWVsZCBpcyBvbmx5 IGtlcHQgdXAtdG8tZGF0ZSBpZiB0aGUgcGFnZSBpcworCSAqIGFsbC12aXNpYmxlLiBBcyBzb29u IGFzIGEgdHVwbGUgaXMgZW5jb3VudGVyZWQgdGhhdCBpcyBub3QgdmlzaWJsZSB0bworCSAqIGFs bCwgdGhpcyBmaWVsZCBpcyB1bm1haW50YWluZWQuIEFzIGxvbmcgYXMgaXQgaXMgbWFpbnRhaW5l ZCwgaXQgY2FuIGJlCisJICogdXNlZCB0byBjYWxjdWxhdGUgdGhlIHNuYXBzaG90IGNvbmZsaWN0 IGhvcml6b24gd2hlbiB1cGRhdGluZyB0aGUgVk0KKwkgKiBhbmQvb3IgZnJlZXppbmcgYWxsIHRo ZSB0dXBsZXMgb24gdGhlIHBhZ2UuCiAJICovCiAJcHJzdGF0ZS0+dmlzaWJpbGl0eV9jdXRvZmZf eGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiB9CkBAIC05NjUsMTQgKzk2NiwxMyBAQCBoZWFw X3BhZ2Vfd2lsbF9zZXRfdm0oUmVsYXRpb24gcmVsYXRpb24sCiAgKi8KIHN0YXRpYyBib29sCiBo ZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJ IFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJCSBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVz dCwKIAkJCQkJCSBib29sICphbGxfZnJvemVuLAogCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2li aWxpdHlfY3V0b2ZmX3hpZCwKIAkJCQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKQog ewogCi0JcmV0dXJuIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShyZWwsIGJ1ZiwKLQkJ CQkJCQkJCQkgIE9sZGVzdFhtaW4sCisJcmV0dXJuIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlz aWJsZShyZWwsIGJ1ZiwgdmlzdGVzdCwKIAkJCQkJCQkJCQkgIE5VTEwsIDAsCiAJCQkJCQkJCQkJ ICBhbGxfZnJvemVuLAogCQkJCQkJCQkJCSAgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLApAQCAtMTA1 OCw2ICsxMDU4LDE2IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFy YW1zICpwYXJhbXMsCiAJcHJ1bmVfZnJlZXplX3BsYW4oUmVsYXRpb25HZXRSZWxpZChwYXJhbXMt PnJlbGF0aW9uKSwKIAkJCQkJICBidWZmZXIsICZwcnN0YXRlLCBvZmZfbG9jKTsKIAorCS8qCisJ ICogQWZ0ZXIgcHJvY2Vzc2luZyBhbGwgdGhlIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLCBpZiB0 aGUgbmV3ZXN0IHhtaW4KKwkgKiBhbW9uZ3N0IHRoZW0gaXMgbm90IHZpc2libGUgdG8gZXZlcnlv bmUsIHRoZSBwYWdlIGNhbm5vdCBiZQorCSAqIGFsbC12aXNpYmxlLgorCSAqLworCWlmIChwcnN0 YXRlLmFsbF92aXNpYmxlICYmCisJCVRyYW5zYWN0aW9uSWRJc05vcm1hbChwcnN0YXRlLnZpc2li aWxpdHlfY3V0b2ZmX3hpZCkgJiYKKwkJIUdsb2JhbFZpc1hpZFZpc2libGVUb0FsbChwcnN0YXRl LnZpc3Rlc3QsIHByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkKSkKKwkJcHJzdGF0ZS5hbGxf dmlzaWJsZSA9IHByc3RhdGUuYWxsX2Zyb3plbiA9IGZhbHNlOworCiAJLyoKIAkgKiBJZiBjaGVj a3N1bXMgYXJlIGVuYWJsZWQsIGNhbGxpbmcgaGVhcF9wcnVuZV9zYXRpc2ZpZXNfdmFjdXVtKCkg d2hpbGUKIAkgKiBjaGVja2luZyB0dXBsZSB2aXNpYmlsaXR5IGluZm9ybWF0aW9uIGluIHBydW5l X2ZyZWV6ZV9wbGFuKCkgbWF5IGhhdmUKQEAgLTEyMjUsMTAgKzEyMzUsOSBAQCBoZWFwX3BhZ2Vf cHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQlib29sCQlkZWJ1 Z19hbGxfZnJvemVuOwogCiAJCUFzc2VydChwcnN0YXRlLmxwZGVhZF9pdGVtcyA9PSAwKTsKLQkJ QXNzZXJ0KHByc3RhdGUuY3V0b2Zmcyk7CiAKIAkJQXNzZXJ0KGhlYXBfcGFnZV9pc19hbGxfdmlz aWJsZShwYXJhbXMtPnJlbGF0aW9uLCBidWZmZXIsCi0JCQkJCQkJCQkJcHJzdGF0ZS5jdXRvZmZz LT5PbGRlc3RYbWluLAorCQkJCQkJCQkJCXByc3RhdGUudmlzdGVzdCwKIAkJCQkJCQkJCQkmZGVi dWdfYWxsX2Zyb3plbiwKIAkJCQkJCQkJCQkmZGVidWdfY3V0b2ZmLCBvZmZfbG9jKSk7CiAKQEAg LTE3NTcsMjAgKzE3NjYsNiBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFs KFBhZ2UgcGFnZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYgogCQkJCSAqLwogCQkJ CXhtaW4gPSBIZWFwVHVwbGVIZWFkZXJHZXRYbWluKGh0dXApOwogCi0JCQkJLyoKLQkJCQkgKiBG b3Igbm93IGFsd2F5cyB1c2UgcHJzdGF0ZS0+Y3V0b2ZmcyBmb3IgdGhpcyB0ZXN0LCBiZWNhdXNl Ci0JCQkJICogd2Ugb25seSB1cGRhdGUgJ2FsbF92aXNpYmxlJyBhbmQgJ2FsbF9mcm96ZW4nIHdo ZW4gZnJlZXppbmcKLQkJCQkgKiBpcyByZXF1ZXN0ZWQuIFdlIGNvdWxkIHVzZSBHbG9iYWxWaXNY aWRWaXNpYmxlVG9BbGwoKQotCQkJCSAqIGluc3RlYWQsIGlmIGEgbm9uLWZyZWV6aW5nIGNhbGxl ciB3YW50ZWQgdG8gc2V0IHRoZSBWTSBiaXQuCi0JCQkJICovCi0JCQkJQXNzZXJ0KHByc3RhdGUt PmN1dG9mZnMpOwotCQkJCWlmICghVHJhbnNhY3Rpb25JZFByZWNlZGVzKHhtaW4sIHByc3RhdGUt PmN1dG9mZnMtPk9sZGVzdFhtaW4pKQotCQkJCXsKLQkJCQkJcHJzdGF0ZS0+YWxsX3Zpc2libGUg PSBmYWxzZTsKLQkJCQkJcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOwotCQkJCQlicmVhazsK LQkJCQl9Ci0KIAkJCQkvKiBUcmFjayBuZXdlc3QgeG1pbiBvbiBwYWdlLiAqLwogCQkJCWlmIChU cmFuc2FjdGlvbklkRm9sbG93cyh4bWluLCBwcnN0YXRlLT52aXNpYmlsaXR5X2N1dG9mZl94aWQp ICYmCiAJCQkJCVRyYW5zYWN0aW9uSWRJc05vcm1hbCh4bWluKSkKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3ZhY3V1bWxhenkuYwppbmRleCBjMTgwMzAwODdjMS4uMTA1NDNlY2EwNjUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTI3NDgsNyArMjc0OCw3IEBAIGxhenlfdmFjdXVt X2hlYXBfcGFnZShMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBCdWZmZXIg YnVmZmVyLAogCSAqIGRvbmUgb3V0c2lkZSB0aGUgY3JpdGljYWwgc2VjdGlvbi4KIAkgKi8KIAlp ZiAoaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKHZhY3JlbC0+cmVsLCBidWZmZXIsCi0J CQkJCQkJCQkgICB2YWNyZWwtPmN1dG9mZnMuT2xkZXN0WG1pbiwKKwkJCQkJCQkJCSAgIHZhY3Jl bC0+dmlzdGVzdCwKIAkJCQkJCQkJCSAgIGRlYWRvZmZzZXRzLCBudW1fb2Zmc2V0cywKIAkJCQkJ CQkJCSAgICZhbGxfZnJvemVuLCAmdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAogCQkJCQkJCQkJICAg JnZhY3JlbC0+b2ZmbnVtKSkKQEAgLTM1MDgsNyArMzUwOCw3IEBAIGRlYWRfaXRlbXNfY2xlYW51 cChMVlJlbFN0YXRlICp2YWNyZWwpCiAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHBhZ2UgaXMgYWxs LXZpc2libGUgb3RoZXIgdGhhbiB0aGUgcHJvdmlkZWQKICAqIGRlYWRvZmZzZXRzIGFuZCBmYWxz ZSBvdGhlcndpc2UuCiAgKgotICogT2xkZXN0WG1pbiBpcyB1c2VkIHRvIGRldGVybWluZSB2aXNp YmlsaXR5LgorICogdmlzdGVzdCBpcyB1c2VkIHRvIGRldGVybWluZSB2aXNpYmlsaXR5LgogICoK ICAqIE91dHB1dCBwYXJhbWV0ZXJzOgogICoKQEAgLTM1MjQsNyArMzUyNCw3IEBAIGRlYWRfaXRl bXNfY2xlYW51cChMVlJlbFN0YXRlICp2YWNyZWwpCiAgKi8KIGJvb2wKIGhlYXBfcGFnZV93b3Vs ZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCi0JCQkJCQkJICAgVHJh bnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJCQkJCSAgIEdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0 LAogCQkJCQkJCSAgIE9mZnNldE51bWJlciAqZGVhZG9mZnNldHMsCiAJCQkJCQkJICAgaW50IG5k ZWFkb2Zmc2V0cywKIAkJCQkJCQkgICBib29sICphbGxfZnJvemVuLApAQCAtMzU5OCw3ICszNTk4 LDcgQEAgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVy IGJ1ZiwKIAogCQkvKiBWaXNpYmlsaXR5IGNoZWNrcyBtYXkgZG8gSU8gb3IgYWxsb2NhdGUgbWVt b3J5ICovCiAJCUFzc2VydChDcml0U2VjdGlvbkNvdW50ID09IDApOwotCQlzd2l0Y2ggKEhlYXBU dXBsZVNhdGlzZmllc1ZhY3V1bSgmdHVwbGUsIE9sZGVzdFhtaW4sIGJ1ZikpCisJCXN3aXRjaCAo SGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtR2xvYmFsVmlzKCZ0dXBsZSwgdmlzdGVzdCwgYnVmKSkK IAkJewogCQkJY2FzZSBIRUFQVFVQTEVfTElWRToKIAkJCQl7CkBAIC0zNjE3LDcgKzM2MTcsNyBA QCBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVm LAogCQkJCQkgKiB0aGF0IGV2ZXJ5b25lIHNlZXMgaXQgYXMgY29tbWl0dGVkPwogCQkJCQkgKi8K IAkJCQkJeG1pbiA9IEhlYXBUdXBsZUhlYWRlckdldFhtaW4odHVwbGUudF9kYXRhKTsKLQkJCQkJ aWYgKCFUcmFuc2FjdGlvbklkUHJlY2VkZXMoeG1pbiwgT2xkZXN0WG1pbikpCisJCQkJCWlmICgh R2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKHZpc3Rlc3QsIHhtaW4pKQogCQkJCQl7CiAJCQkJCQlh bGxfdmlzaWJsZSA9IGZhbHNlOwogCQkJCQkJKmFsbF9mcm96ZW4gPSBmYWxzZTsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFw YW0uaAppbmRleCAzOTJhZjY1MDNkYS4uYjZmMWIzZmI0NDggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAg LTI3OCwxMCArMjc4LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUHJ1bmVGcmVlemVQYXJhbXMKIAogCS8q CiAJICogQ29udGFpbnMgdGhlIGN1dG9mZnMgdXNlZCBmb3IgZnJlZXppbmcuIFRoZXkgYXJlIHJl cXVpcmVkIGlmIHRoZQotCSAqIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUgb3B0aW9uIGlzIHNldC4g Y3V0b2Zmcy0+T2xkZXN0WG1pbiBpcyBhbHNvIHVzZWQKLQkgKiB0byBkZXRlcm1pbmUgaWYgZGVh ZCB0dXBsZXMgYXJlIEhFQVBUVVBMRV9SRUNFTlRMWV9ERUFEIG9yCi0JICogSEVBUFRVUExFX0RF QUQuIEN1cnJlbnRseSBvbmx5IHZhY3V1bSBwYXNzZXMgaW4gY3V0b2Zmcy4gVmFjdXVtCi0JICog Y2FsY3VsYXRlcyB0aGVtIG9uY2UsIGF0IHRoZSBiZWdpbm5pbmcgb2YgdmFjdXVtaW5nIHRoZSBy ZWxhdGlvbi4KKwkgKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQuIEN1cnJl bnRseSBvbmx5IHZhY3V1bSBwYXNzZXMgaW4KKwkgKiBjdXRvZmZzLiBWYWN1dW0gY2FsY3VsYXRl cyB0aGVtIG9uY2UsIGF0IHRoZSBiZWdpbm5pbmcgb2YgdmFjdXVtaW5nIHRoZQorCSAqIHJlbGF0 aW9uLgogCSAqLwogCXN0cnVjdCBWYWN1dW1DdXRvZmZzICpjdXRvZmZzOwogfSBQcnVuZUZyZWV6 ZVBhcmFtczsKQEAgLTQ0NSw3ICs0NDQsNyBAQCBleHRlcm4gdm9pZCBsb2dfaGVhcF9wcnVuZV9h bmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogZXh0ZXJuIHZvaWQg aGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQljb25zdCBWYWN1dW1QYXJhbXMg cGFyYW1zLCBCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3kpOwogZXh0ZXJuIGJvb2wgaGVh cF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKLQkJ CQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkJCQkJICAgR2xvYmFs VmlzU3RhdGUgKnZpc3Rlc3QsCiAJCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpkZWFkb2Zmc2V0 cywKIAkJCQkJCQkJCQkgICBpbnQgbmRlYWRvZmZzZXRzLAogCQkJCQkJCQkJCSAgIGJvb2wgKmFs bF9mcm96ZW4sCkBAIC00NTksNiArNDU4LDggQEAgZXh0ZXJuIFRNX1Jlc3VsdCBIZWFwVHVwbGVT YXRpc2ZpZXNVcGRhdGUoSGVhcFR1cGxlIGh0dXAsIENvbW1hbmRJZCBjdXJjaWQsCiAJCQkJCQkJ CQkJICBCdWZmZXIgYnVmZmVyKTsKIGV4dGVybiBIVFNWX1Jlc3VsdCBIZWFwVHVwbGVTYXRpc2Zp ZXNWYWN1dW0oSGVhcFR1cGxlIGh0dXAsIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKIAkJCQkJ CQkJCQkJQnVmZmVyIGJ1ZmZlcik7CitleHRlcm4gSFRTVl9SZXN1bHQgSGVhcFR1cGxlU2F0aXNm aWVzVmFjdXVtR2xvYmFsVmlzKEhlYXBUdXBsZSBodHVwLAorCQkJCQkJCQkJCQkJCSBHbG9iYWxW aXNTdGF0ZSAqdmlzdGVzdCwgQnVmZmVyIGJ1ZmZlcik7CiBleHRlcm4gSFRTVl9SZXN1bHQgSGVh cFR1cGxlU2F0aXNmaWVzVmFjdXVtSG9yaXpvbihIZWFwVHVwbGUgaHR1cCwgQnVmZmVyIGJ1ZmZl ciwKIAkJCQkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKmRlYWRfYWZ0ZXIpOwogZXh0ZXJuIHZv aWQgSGVhcFR1cGxlU2V0SGludEJpdHMoSGVhcFR1cGxlSGVhZGVyIHR1cGxlLCBCdWZmZXIgYnVm ZmVyLAotLSAKMi40My4wCgo= --000000000000b196150645a17d5e Content-Type: application/x-patch; name="v25-0011-Track-which-relations-are-modified-by-a-query.patch" Content-Disposition: attachment; filename="v25-0011-Track-which-relations-are-modified-by-a-query.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj0m86mn9 RnJvbSAxNWVlYjNhMDFjZWQwMjE0YmIyYjE4OWI5ZTI3MzkzNmIyNWQ1MjNmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMTU6MDc6MjQgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyNSAxMS8xNF0gVHJhY2sgd2hpY2ggcmVsYXRpb25zIGFyZSBtb2RpZmllZCBieSBhIHF1 ZXJ5CgpTYXZlIHRoZSByZWxpZHMgaW4gYSBiaXRtYXAgaW4gdGhlIGVzdGF0ZS4gQSBsYXRlciBj b21taXQgd2lsbCBwYXNzIHRoaXMKaW5mb3JtYXRpb24gZG93biB0byBzY2FuIG5vZGVzIHRvIGNv bnRyb2wgd2hldGhlciBvciBub3QgdGhlIHNjYW4gYWxsb3dzCnNldHRpbmcgdGhlIHZpc2liaWxp dHkgbWFwIHdoaWxlIG9uLWFjY2VzcyBwcnVuaW5nLiBXZSBkb24ndCB3YW50IHRvIHNldAp0aGUg dmlzaWJpbGl0eSBtYXAgaWYgdGhlIHF1ZXJ5IGlzIGp1c3QgZ29pbmcgdG8gbW9kaWZ5IHRoZSBw YWdlCmltbWVkaWF0ZWx5IGFmdGVyLgotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWlu LmMgIHwgNCArKysrCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyB8IDIgKysKIHNy Yy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgIHwgNiArKysrKysKIDMgZmlsZXMgY2hhbmdl ZCwgMTIgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDc5N2Q4YjFj YTFjLi41YjI5OWVmODFhYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01h aW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC05MTYsNiArOTE2 LDEwIEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCQkJCQli cmVhazsKIAkJCX0KIAorCQkJLyogSWYgaXQgaGFzIGEgcm93bWFyaywgdGhlIHJlbGF0aW9uIGlz IG1vZGlmaWVkICovCisJCQllc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcyA9IGJtc19hZGRfbWVt YmVyKGVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzLAorCQkJCQkJCQkJCQkJCQlyYy0+cnRpKTsK KwogCQkJLyogQ2hlY2sgdGhhdCByZWxhdGlvbiBpcyBhIGxlZ2FsIHRhcmdldCBmb3IgbWFya2lu ZyAqLwogCQkJaWYgKHJlbGF0aW9uKQogCQkJCUNoZWNrVmFsaWRSb3dNYXJrUmVsKHJlbGF0aW9u LCByYy0+bWFya1R5cGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0 aWxzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwppbmRleCBmZGM2NWMyYjQy Yi4uMjhhMDZkY2QyNDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGls cy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC04OTMsNiArODkz LDggQEAgRXhlY0luaXRSZXN1bHRSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5m byAqcmVzdWx0UmVsSW5mbywKIAkJZXN0YXRlLT5lc19yZXN1bHRfcmVsYXRpb25zID0gKFJlc3Vs dFJlbEluZm8gKiopCiAJCQlwYWxsb2MwKGVzdGF0ZS0+ZXNfcmFuZ2VfdGFibGVfc2l6ZSAqIHNp emVvZihSZXN1bHRSZWxJbmZvICopKTsKIAllc3RhdGUtPmVzX3Jlc3VsdF9yZWxhdGlvbnNbcnRp IC0gMV0gPSByZXN1bHRSZWxJbmZvOworCWVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzID0gYm1z X2FkZF9tZW1iZXIoZXN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMsCisJCQkJCQkJCQkJCQlydGkp OwogCiAJLyoKIAkgKiBTYXZpbmcgaW4gdGhlIGxpc3QgYWxsb3dzIHRvIGF2b2lkIG5lZWRsZXNz bHkgdHJhdmVyc2luZyB0aGUgd2hvbGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggNjRmZjY5OTY0 MzEuLjdmNjUyMmNlYThlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMu aAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNjc2LDYgKzY3NiwxMiBA QCB0eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAkJCQkJCQkJCSAqIEV4ZWNEb0luaXRpYWxQcnVuaW5n KCkgKi8KIAljb25zdCBjaGFyICplc19zb3VyY2VUZXh0OwkvKiBTb3VyY2UgdGV4dCBmcm9tIFF1 ZXJ5RGVzYyAqLwogCisJLyoKKwkgKiBSVCBpbmRleGVzIG9mIHJlbGF0aW9ucyBtb2RpZmllZCBi eSB0aGUgcXVlcnkgZWl0aGVyIHRocm91Z2gKKwkgKiBVUERBVEUvREVMRVRFL0lOU0VSVC9NRVJH RSBvciBTRUxFQ1QgRk9SIFVQREFURQorCSAqLworCUJpdG1hcHNldCAgKmVzX21vZGlmaWVkX3Jl bGlkczsKKwogCUp1bmtGaWx0ZXIgKmVzX2p1bmtGaWx0ZXI7CS8qIHRvcC1sZXZlbCBqdW5rIGZp bHRlciwgaWYgYW55ICovCiAKIAkvKiBJZiBxdWVyeSBjYW4gaW5zZXJ0L2RlbGV0ZSB0dXBsZXMs IHRoZSBjb21tYW5kIElEIHRvIG1hcmsgdGhlbSB3aXRoICovCi0tIAoyLjQzLjAKCg== --000000000000b196150645a17d5e Content-Type: application/x-patch; name="v25-0012-Pass-down-information-on-table-modification-to-s.patch" Content-Disposition: attachment; filename="v25-0012-Pass-down-information-on-table-modification-to-s.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj0m893p10 RnJvbSA3ZDM1MmIxMjViMzIzOWEzYTNjYzAzMGI2YTU4ZDVmY2FlNDNjMTM5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMTU6MTI6MTggLTA1MDAKU3ViamVjdDogW1BB VENIIHYyNSAxMi8xNF0gUGFzcyBkb3duIGluZm9ybWF0aW9uIG9uIHRhYmxlIG1vZGlmaWNhdGlv biB0byBzY2FuCiBub2RlCgpQYXNzIGRvd24gaW5mb3JtYXRpb24gdG8gc2VxdWVudGlhbCBzY2Fu LCBpbmRleCBzY2FuLCBhbmQgYml0bWFwIHRhYmxlCnNjYW4gbm9kZXMgb24gd2hldGhlciBvciBu b3QgdGhlIHF1ZXJ5IG1vZGlmaWVzIHRoZSByZWxhdGlvbiBiZWluZwpzY2FubmVkLiBBIGxhdGVy IGNvbW1pdCB3aWxsIHVzZSB0aGlzIGluZm9ybWF0aW9uIHRvIHVwZGF0ZSB0aGUgVk0KZHVyaW5n IG9uLWFjY2VzcyBwcnVuaW5nIG9ubHkgaWYgdGhlIHJlbGF0aW9uIGlzIG5vdCBtb2RpZmllZCBi eSB0aGUKcXVlcnkuCi0tLQogY29udHJpYi9wZ3Jvd2xvY2tzL3Bncm93bG9ja3MuYyAgICAgICAg ICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jICAgICAgICAgICAgfCAg MyArKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMgICAgICAgIHwgIDMgKyst CiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICB8ICA3ICsrKy0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMgICAgICAgICAgfCAgNCArKy0tCiBzcmMv YmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jICAgICAgICB8ICA2ICsrKy0tLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQv YWNjZXNzL3RhYmxlL3RhYmxlYW0uYyAgICAgICAgfCAgNyArKystLS0KIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvbnN0cmFpbnQuYyAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2NvcHl0by5jICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jICAgICAgICAgIHwgIDQgKystLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMu YyAgICAgICAgICAgfCAgNCArKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcu YyAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYyAg ICB8ICA4ICsrKy0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5j IHwgIDkgKysrKysrKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMg IHwgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYyAgICAgIHwgMTEg KysrKysrKystLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyAgICAgICAgfCAy NiArKysrKysrKysrKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRi b3VuZHMuYyAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMgICAg ICAgICAgfCAgMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmggICAgICAgICAgICAgICAg fCAgMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgICAgICAgfCAgNiAr KysrKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAgICAgIHwgMTkgKysr KysrKysrKy0tLS0tLS0KIDIzIGZpbGVzIGNoYW5nZWQsIDkxIGluc2VydGlvbnMoKyksIDQ0IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdyb3dsb2Nrcy9wZ3Jvd2xvY2tzLmMg Yi9jb250cmliL3Bncm93bG9ja3MvcGdyb3dsb2Nrcy5jCmluZGV4IGY4ODI2OTMzMmI2Li4yN2Yw MWQ4MDU1ZiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ3Jvd2xvY2tzL3Bncm93bG9ja3MuYworKysg Yi9jb250cmliL3Bncm93bG9ja3MvcGdyb3dsb2Nrcy5jCkBAIC0xMTQsNyArMTE0LDcgQEAgcGdy b3dsb2NrcyhQR19GVU5DVElPTl9BUkdTKQogCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShyZWwpKTsKIAogCS8qIFNjYW4gdGhlIHJlbGF0aW9uICovCi0Jc2NhbiA9IHRhYmxlX2JlZ2lu c2NhbihyZWwsIEdldEFjdGl2ZVNuYXBzaG90KCksIDAsIE5VTEwpOworCXNjYW4gPSB0YWJsZV9i ZWdpbnNjYW4ocmVsLCBHZXRBY3RpdmVTbmFwc2hvdCgpLCAwLCBOVUxMLCAwKTsKIAloc2NhbiA9 IChIZWFwU2NhbkRlc2MpIHNjYW47CiAKIAlhdHRpbm1ldGEgPSBUdXBsZURlc2NHZXRBdHRJbk1l dGFkYXRhKHJzaW5mby0+c2V0RGVzYyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv YnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKaW5kZXggMjZjYjc1 MDU4ZDEuLjRhZDg5NDFjNjBhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9i cmluLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCkBAIC0yODQyLDcgKzI4 NDIsOCBAQCBfYnJpbl9wYXJhbGxlbF9zY2FuX2FuZF9idWlsZChCcmluQnVpbGRTdGF0ZSAqc3Rh dGUsCiAJaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ID0gYnJpbnNoYXJlZC0+aXNjb25jdXJyZW50 OwogCiAJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChoZWFwLAotCQkJCQkJCQkJUGFy YWxsZWxUYWJsZVNjYW5Gcm9tQnJpblNoYXJlZChicmluc2hhcmVkKSk7CisJCQkJCQkJCQlQYXJh bGxlbFRhYmxlU2NhbkZyb21CcmluU2hhcmVkKGJyaW5zaGFyZWQpLAorCQkJCQkJCQkJMCk7CiAK IAlyZWx0dXBsZXMgPSB0YWJsZV9pbmRleF9idWlsZF9zY2FuKGhlYXAsIGluZGV4LCBpbmRleElu Zm8sIHRydWUsIHRydWUsCiAJCQkJCQkJCQkgICBicmluYnVpbGRDYWxsYmFja1BhcmFsbGVsLCBz dGF0ZSwgc2Nhbik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2Vy dC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwppbmRleCBkZjMwZGNjMDIy OC4uYWFhNTQwMWI3MzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5z ZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwpAQCAtMjA1OCw3 ICsyMDU4LDggQEAgX2dpbl9wYXJhbGxlbF9zY2FuX2FuZF9idWlsZChHaW5CdWlsZFN0YXRlICpz dGF0ZSwKIAlpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgPSBnaW5zaGFyZWQtPmlzY29uY3VycmVu dDsKIAogCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwoaGVhcCwKLQkJCQkJCQkJCVBh cmFsbGVsVGFibGVTY2FuRnJvbUdpbkJ1aWxkU2hhcmVkKGdpbnNoYXJlZCkpOworCQkJCQkJCQkJ UGFyYWxsZWxUYWJsZVNjYW5Gcm9tR2luQnVpbGRTaGFyZWQoZ2luc2hhcmVkKSwKKwkJCQkJCQkJ CTApOwogCiAJcmVsdHVwbGVzID0gdGFibGVfaW5kZXhfYnVpbGRfc2NhbihoZWFwLCBpbmRleCwg aW5kZXhJbmZvLCB0cnVlLCBwcm9ncmVzcywKIAkJCQkJCQkJCSAgIGdpbkJ1aWxkQ2FsbGJhY2tQ YXJhbGxlbCwgc3RhdGUsIHNjYW4pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5k bGVyLmMKaW5kZXggZGQ0ZmU2YmY2MmYuLjZjMmU0ZTA4YjE2IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTc5LDEyICs3OSwxMyBAQCBoZWFwYW1fc2xvdF9j YWxsYmFja3MoUmVsYXRpb24gcmVsYXRpb24pCiAgKi8KIAogc3RhdGljIEluZGV4RmV0Y2hUYWJs ZURhdGEgKgotaGVhcGFtX2luZGV4X2ZldGNoX2JlZ2luKFJlbGF0aW9uIHJlbCkKK2hlYXBhbV9p bmRleF9mZXRjaF9iZWdpbihSZWxhdGlvbiByZWwsIHVpbnQzMiBmbGFncykKIHsKIAlJbmRleEZl dGNoSGVhcERhdGEgKmhzY2FuID0gcGFsbG9jMF9vYmplY3QoSW5kZXhGZXRjaEhlYXBEYXRhKTsK IAogCWhzY2FuLT54c19iYXNlLnJlbCA9IHJlbDsKIAloc2Nhbi0+eHNfY2J1ZiA9IEludmFsaWRC dWZmZXI7CisJaHNjYW4tPm1vZGlmaWVzX2Jhc2VfcmVsID0gIShmbGFncyAmIFNPX0hJTlRfUkVM X1JFQURfT05MWSk7CiAKIAlyZXR1cm4gJmhzY2FuLT54c19iYXNlOwogfQpAQCAtNzUzLDcgKzc1 NCw3IEBAIGhlYXBhbV9yZWxhdGlvbl9jb3B5X2Zvcl9jbHVzdGVyKFJlbGF0aW9uIE9sZEhlYXAs IFJlbGF0aW9uIE5ld0hlYXAsCiAKIAkJdGFibGVTY2FuID0gTlVMTDsKIAkJaGVhcFNjYW4gPSBO VUxMOwotCQlpbmRleFNjYW4gPSBpbmRleF9iZWdpbnNjYW4oT2xkSGVhcCwgT2xkSW5kZXgsIFNu YXBzaG90QW55LCBOVUxMLCAwLCAwKTsKKwkJaW5kZXhTY2FuID0gaW5kZXhfYmVnaW5zY2FuKE9s ZEhlYXAsIE9sZEluZGV4LCBTbmFwc2hvdEFueSwgTlVMTCwgMCwgMCwgMCk7CiAJCWluZGV4X3Jl c2NhbihpbmRleFNjYW4sIE5VTEwsIDAsIE5VTEwsIDApOwogCX0KIAllbHNlCkBAIC03NjIsNyAr NzYzLDcgQEAgaGVhcGFtX3JlbGF0aW9uX2NvcHlfZm9yX2NsdXN0ZXIoUmVsYXRpb24gT2xkSGVh cCwgUmVsYXRpb24gTmV3SGVhcCwKIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9H UkVTU19DTFVTVEVSX1BIQVNFLAogCQkJCQkJCQkJIFBST0dSRVNTX0NMVVNURVJfUEhBU0VfU0VR X1NDQU5fSEVBUCk7CiAKLQkJdGFibGVTY2FuID0gdGFibGVfYmVnaW5zY2FuKE9sZEhlYXAsIFNu YXBzaG90QW55LCAwLCAoU2NhbktleSkgTlVMTCk7CisJCXRhYmxlU2NhbiA9IHRhYmxlX2JlZ2lu c2NhbihPbGRIZWFwLCBTbmFwc2hvdEFueSwgMCwgKFNjYW5LZXkpIE5VTEwsIDApOwogCQloZWFw U2NhbiA9IChIZWFwU2NhbkRlc2MpIHRhYmxlU2NhbjsKIAkJaW5kZXhTY2FuID0gTlVMTDsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYwppbmRleCA3MDdjMjUyODljZC4uNDY4ODMwY2MwYjggMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jCkBAIC00NDcsNyArNDQ3LDcgQEAgc3lzdGFibGVfYmVn aW5zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJfQogCiAJCXN5c3NjYW4tPmlzY2FuID0g aW5kZXhfYmVnaW5zY2FuKGhlYXBSZWxhdGlvbiwgaXJlbCwKLQkJCQkJCQkJCQkgc25hcHNob3Qs IE5VTEwsIG5rZXlzLCAwKTsKKwkJCQkJCQkJCQkgc25hcHNob3QsIE5VTEwsIG5rZXlzLCAwLCAw KTsKIAkJaW5kZXhfcmVzY2FuKHN5c3NjYW4tPmlzY2FuLCBpZHhrZXksIG5rZXlzLCBOVUxMLCAw KTsKIAkJc3lzc2Nhbi0+c2NhbiA9IE5VTEw7CiAKQEAgLTcwOCw3ICs3MDgsNyBAQCBzeXN0YWJs ZV9iZWdpbnNjYW5fb3JkZXJlZChSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJfQogCiAJc3lzc2Nh bi0+aXNjYW4gPSBpbmRleF9iZWdpbnNjYW4oaGVhcFJlbGF0aW9uLCBpbmRleFJlbGF0aW9uLAot CQkJCQkJCQkJIHNuYXBzaG90LCBOVUxMLCBua2V5cywgMCk7CisJCQkJCQkJCQkgc25hcHNob3Qs IE5VTEwsIG5rZXlzLCAwLCAwKTsKIAlpbmRleF9yZXNjYW4oc3lzc2Nhbi0+aXNjYW4sIGlkeGtl eSwgbmtleXMsIE5VTEwsIDApOwogCXN5c3NjYW4tPnNjYW4gPSBOVUxMOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2luZGV4L2luZGV4YW0uYwppbmRleCAwNDkyZDkyZDIzYi4uYjU1MjNjZjJhYjEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2luZGV4L2luZGV4YW0uYwpAQCAtMjU3LDcgKzI1Nyw3IEBAIGluZGV4X2JlZ2luc2Nh bihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwKIAkJ CQlTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQlJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmluc3Ry dW1lbnQsCi0JCQkJaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzKQorCQkJCWludCBua2V5cywgaW50 IG5vcmRlcmJ5cywgdWludDMyIGZsYWdzKQogewogCUluZGV4U2NhbkRlc2Mgc2NhbjsKIApAQCAt Mjg0LDcgKzI4NCw3IEBAIGluZGV4X2JlZ2luc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJ c2Nhbi0+aW5zdHJ1bWVudCA9IGluc3RydW1lbnQ7CiAKIAkvKiBwcmVwYXJlIHRvIGZldGNoIGlu ZGV4IG1hdGNoZXMgZnJvbSB0YWJsZSAqLwotCXNjYW4tPnhzX2hlYXBmZXRjaCA9IHRhYmxlX2lu ZGV4X2ZldGNoX2JlZ2luKGhlYXBSZWxhdGlvbik7CisJc2Nhbi0+eHNfaGVhcGZldGNoID0gdGFi bGVfaW5kZXhfZmV0Y2hfYmVnaW4oaGVhcFJlbGF0aW9uLCBmbGFncyk7CiAKIAlyZXR1cm4gc2Nh bjsKIH0KQEAgLTYxNSw3ICs2MTUsNyBAQCBpbmRleF9iZWdpbnNjYW5fcGFyYWxsZWwoUmVsYXRp b24gaGVhcHJlbCwgUmVsYXRpb24gaW5kZXhyZWwsCiAJc2Nhbi0+aW5zdHJ1bWVudCA9IGluc3Ry dW1lbnQ7CiAKIAkvKiBwcmVwYXJlIHRvIGZldGNoIGluZGV4IG1hdGNoZXMgZnJvbSB0YWJsZSAq LwotCXNjYW4tPnhzX2hlYXBmZXRjaCA9IHRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKGhlYXByZWwp OworCXNjYW4tPnhzX2hlYXBmZXRjaCA9IHRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKGhlYXByZWws IDApOwogCiAJcmV0dXJuIHNjYW47CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idHNvcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCmlu ZGV4IGQ3Njk1ZGMxMTA4Li43YmRiYzdlNWZhNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL25idHJlZS9uYnRzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRz b3J0LmMKQEAgLTE5MjUsNyArMTkyNSw3IEBAIF9idF9wYXJhbGxlbF9zY2FuX2FuZF9zb3J0KEJU U3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCWluZGV4SW5mbyA9IEJ1aWxkSW5k ZXhJbmZvKGJ0c3Bvb2wtPmluZGV4KTsKIAlpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgPSBidHNo YXJlZC0+aXNjb25jdXJyZW50OwogCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwoYnRz cG9vbC0+aGVhcCwKLQkJCQkJCQkJCVBhcmFsbGVsVGFibGVTY2FuRnJvbUJUU2hhcmVkKGJ0c2hh cmVkKSk7CisJCQkJCQkJCQlQYXJhbGxlbFRhYmxlU2NhbkZyb21CVFNoYXJlZChidHNoYXJlZCks IDApOwogCXJlbHR1cGxlcyA9IHRhYmxlX2luZGV4X2J1aWxkX3NjYW4oYnRzcG9vbC0+aGVhcCwg YnRzcG9vbC0+aW5kZXgsIGluZGV4SW5mbywKIAkJCQkJCQkJCSAgIHRydWUsIHByb2dyZXNzLCBf YnRfYnVpbGRfY2FsbGJhY2ssCiAJCQkJCQkJCQkgICAmYnVpbGRzdGF0ZSwgc2Nhbik7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RhYmxlL3RhYmxlYW0uYwppbmRleCAxZTA5OWZlYmRjOC4uZGIyYTMwMmE0ODYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYwpAQCAtMTYzLDEwICsxNjMsMTEgQEAgdGFibGVf cGFyYWxsZWxzY2FuX2luaXRpYWxpemUoUmVsYXRpb24gcmVsLCBQYXJhbGxlbFRhYmxlU2NhbkRl c2MgcHNjYW4sCiB9CiAKIFRhYmxlU2NhbkRlc2MKLXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChS ZWxhdGlvbiByZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuKQordGFibGVfYmVn aW5zY2FuX3BhcmFsbGVsKFJlbGF0aW9uIHJlbGF0aW9uLCBQYXJhbGxlbFRhYmxlU2NhbkRlc2Mg cHNjYW4sIHVpbnQzMiBmbGFncykKIHsKIAlTbmFwc2hvdAlzbmFwc2hvdDsKLQl1aW50MzIJCWZs YWdzID0gU09fVFlQRV9TRVFTQ0FOIHwKKworCWZsYWdzIHw9IFNPX1RZUEVfU0VRU0NBTiB8CiAJ CVNPX0FMTE9XX1NUUkFUIHwgU09fQUxMT1dfU1lOQyB8IFNPX0FMTE9XX1BBR0VNT0RFOwogCiAJ QXNzZXJ0KFJlbEZpbGVMb2NhdG9yRXF1YWxzKHJlbGF0aW9uLT5yZF9sb2NhdG9yLCBwc2Nhbi0+ cGhzX2xvY2F0b3IpKTsKQEAgLTI0OCw3ICsyNDksNyBAQCB0YWJsZV9pbmRleF9mZXRjaF90dXBs ZV9jaGVjayhSZWxhdGlvbiByZWwsCiAJYm9vbAkJZm91bmQ7CiAKIAlzbG90ID0gdGFibGVfc2xv dF9jcmVhdGUocmVsLCBOVUxMKTsKLQlzY2FuID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4ocmVs KTsKKwlzY2FuID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4ocmVsLCAwKTsKIAlmb3VuZCA9IHRh YmxlX2luZGV4X2ZldGNoX3R1cGxlKHNjYW4sIHRpZCwgc25hcHNob3QsIHNsb3QsICZjYWxsX2Fn YWluLAogCQkJCQkJCQkJYWxsX2RlYWQpOwogCXRhYmxlX2luZGV4X2ZldGNoX2VuZChzY2FuKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbnN0cmFpbnQuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2NvbnN0cmFpbnQuYwppbmRleCAzNDk3YTgyMjFmMi4uOTdjODI3OGUzNmQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbnN0cmFpbnQuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9jb25zdHJhaW50LmMKQEAgLTEwNiw3ICsxMDYsNyBAQCB1bmlxdWVf a2V5X3JlY2hlY2soUEdfRlVOQ1RJT05fQVJHUykKIAkgKi8KIAl0bXB0aWQgPSBjaGVja3RpZDsK IAl7Ci0JCUluZGV4RmV0Y2hUYWJsZURhdGEgKnNjYW4gPSB0YWJsZV9pbmRleF9mZXRjaF9iZWdp bih0cmlnZGF0YS0+dGdfcmVsYXRpb24pOworCQlJbmRleEZldGNoVGFibGVEYXRhICpzY2FuID0g dGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4odHJpZ2RhdGEtPnRnX3JlbGF0aW9uLCAwKTsKIAkJYm9v bAkJY2FsbF9hZ2FpbiA9IGZhbHNlOwogCiAJCWlmICghdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUo c2NhbiwgJnRtcHRpZCwgU25hcHNob3RTZWxmLCBzbG90LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwppbmRl eCBkYWU5MTYzMGFjMy4uMTk1N2JiMGYxYTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2NvcHl0by5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCkBAIC0xMTU2 LDcgKzExNTYsNyBAQCBDb3B5UmVsYXRpb25UbyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFJlbGF0aW9u IHJlbCwgUmVsYXRpb24gcm9vdF9yZWwsIHVpbnQ2NCAqcHJvYwogCUF0dHJNYXAgICAgKm1hcCA9 IE5VTEw7CiAJVHVwbGVUYWJsZVNsb3QgKnJvb3Rfc2xvdCA9IE5VTEw7CiAKLQlzY2FuZGVzYyA9 IHRhYmxlX2JlZ2luc2NhbihyZWwsIEdldEFjdGl2ZVNuYXBzaG90KCksIDAsIE5VTEwpOworCXNj YW5kZXNjID0gdGFibGVfYmVnaW5zY2FuKHJlbCwgR2V0QWN0aXZlU25hcHNob3QoKSwgMCwgTlVM TCwgMCk7CiAJc2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHJlbCwgTlVMTCk7CiAKIAkvKgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYwppbmRleCAxYzllZjUzYmUyMC4uMWMwMGUwNTNlMDUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC02MzQ1LDcgKzYzNDUsNyBAQCBBVFJld3JpdGVUYWJs ZShBbHRlcmVkVGFibGVJbmZvICp0YWIsIE9pZCBPSUROZXdIZWFwKQogCQkgKiBjaGVja2luZyBh bGwgdGhlIGNvbnN0cmFpbnRzLgogCQkgKi8KIAkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90 KEdldExhdGVzdFNuYXBzaG90KCkpOwotCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKG9sZHJlbCwg c25hcHNob3QsIDAsIE5VTEwpOworCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKG9sZHJlbCwgc25h cHNob3QsIDAsIE5VTEwsIDApOwogCiAJCS8qCiAJCSAqIFN3aXRjaCB0byBwZXItdHVwbGUgbWVt b3J5IGNvbnRleHQgYW5kIHJlc2V0IGl0IGZvciBlYWNoIHR1cGxlCkBAIC0xMzczMCw3ICsxMzcz MCw3IEBAIHZhbGlkYXRlRm9yZWlnbktleUNvbnN0cmFpbnQoY2hhciAqY29ubmFtZSwKIAkgKi8K IAlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7CiAJc2xv dCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHJlbCwgTlVMTCk7Ci0Jc2NhbiA9IHRhYmxlX2JlZ2luc2Nh bihyZWwsIHNuYXBzaG90LCAwLCBOVUxMKTsKKwlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHJlbCwg c25hcHNob3QsIDAsIE5VTEwsIDApOwogCiAJcGVyVHVwQ3h0ID0gQWxsb2NTZXRDb250ZXh0Q3Jl YXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LAogCQkJCQkJCQkJICAidmFsaWRhdGVGb3JlaWduS2V5 Q29uc3RyYWludCIsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYwppbmRleCAwZWI4ZTBhMmJiMC4uNjMx OWRiNDg4ZmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYwpAQCAtMzE1Nyw3ICszMTU3LDcgQEAg dmFsaWRhdGVEb21haW5Ob3ROdWxsQ29uc3RyYWludChPaWQgZG9tYWlub2lkKQogCiAJCS8qIFNj YW4gYWxsIHR1cGxlcyBpbiB0aGlzIHJlbGF0aW9uICovCiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJT bmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgpKTsKLQkJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbih0 ZXN0cmVsLCBzbmFwc2hvdCwgMCwgTlVMTCk7CisJCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4odGVz dHJlbCwgc25hcHNob3QsIDAsIE5VTEwsIDApOwogCQlzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUo dGVzdHJlbCwgTlVMTCk7CiAJCXdoaWxlICh0YWJsZV9zY2FuX2dldG5leHRzbG90KHNjYW4sIEZv cndhcmRTY2FuRGlyZWN0aW9uLCBzbG90KSkKIAkJewpAQCAtMzIzOCw3ICszMjM4LDcgQEAgdmFs aWRhdGVEb21haW5DaGVja0NvbnN0cmFpbnQoT2lkIGRvbWFpbm9pZCwgY29uc3QgY2hhciAqY2Ni aW4sIExPQ0tNT0RFIGxvY2ttb2QKIAogCQkvKiBTY2FuIGFsbCB0dXBsZXMgaW4gdGhpcyByZWxh dGlvbiAqLwogCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3Qo KSk7Ci0JCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4odGVzdHJlbCwgc25hcHNob3QsIDAsIE5VTEwp OworCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHRlc3RyZWwsIHNuYXBzaG90LCAwLCBOVUxMLCAw KTsKIAkJc2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHRlc3RyZWwsIE5VTEwpOwogCQl3aGlsZSAo dGFibGVfc2Nhbl9nZXRuZXh0c2xvdChzY2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgc2xvdCkp CiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKaW5kZXggMGIzYTMxZjE3MDMuLjc0 MjYyYTM0ODE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwpAQCAtODE2LDcgKzgx Niw3IEBAIGNoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludChSZWxhdGlvbiBoZWFw LCBSZWxhdGlvbiBpbmRleCwKIHJldHJ5OgogCWNvbmZsaWN0ID0gZmFsc2U7CiAJZm91bmRfc2Vs ZiA9IGZhbHNlOwotCWluZGV4X3NjYW4gPSBpbmRleF9iZWdpbnNjYW4oaGVhcCwgaW5kZXgsICZE aXJ0eVNuYXBzaG90LCBOVUxMLCBpbmRua2V5YXR0cywgMCk7CisJaW5kZXhfc2NhbiA9IGluZGV4 X2JlZ2luc2NhbihoZWFwLCBpbmRleCwgJkRpcnR5U25hcHNob3QsIE5VTEwsIGluZG5rZXlhdHRz LCAwLCAwKTsKIAlpbmRleF9yZXNjYW4oaW5kZXhfc2Nhbiwgc2NhbmtleXMsIGluZG5rZXlhdHRz LCBOVUxMLCAwKTsKIAogCXdoaWxlIChpbmRleF9nZXRuZXh0X3Nsb3QoaW5kZXhfc2NhbiwgRm9y d2FyZFNjYW5EaXJlY3Rpb24sIGV4aXN0aW5nX3Nsb3QpKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UmVwbGljYXRpb24uYwppbmRleCA4NjBmNzlmOWNjMS4uNmU0OWVhNWM1ZDggMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCkBAIC0yMDQsNyArMjA0LDcgQEAgUmVsYXRpb25G aW5kUmVwbFR1cGxlQnlJbmRleChSZWxhdGlvbiByZWwsIE9pZCBpZHhvaWQsCiAJc2tleV9hdHRv ZmYgPSBidWlsZF9yZXBsaW5kZXhfc2Nhbl9rZXkoc2tleSwgcmVsLCBpZHhyZWwsIHNlYXJjaHNs b3QpOwogCiAJLyogU3RhcnQgYW4gaW5kZXggc2Nhbi4gKi8KLQlzY2FuID0gaW5kZXhfYmVnaW5z Y2FuKHJlbCwgaWR4cmVsLCAmc25hcCwgTlVMTCwgc2tleV9hdHRvZmYsIDApOworCXNjYW4gPSBp bmRleF9iZWdpbnNjYW4ocmVsLCBpZHhyZWwsICZzbmFwLCBOVUxMLCBza2V5X2F0dG9mZiwgMCwg MCk7CiAKIHJldHJ5OgogCWZvdW5kID0gZmFsc2U7CkBAIC0zODIsNyArMzgyLDcgQEAgUmVsYXRp b25GaW5kUmVwbFR1cGxlU2VxKFJlbGF0aW9uIHJlbCwgTG9ja1R1cGxlTW9kZSBsb2NrbW9kZSwK IAogCS8qIFN0YXJ0IGEgaGVhcCBzY2FuLiAqLwogCUluaXREaXJ0eVNuYXBzaG90KHNuYXApOwot CXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocmVsLCAmc25hcCwgMCwgTlVMTCk7CisJc2NhbiA9IHRh YmxlX2JlZ2luc2NhbihyZWwsICZzbmFwLCAwLCBOVUxMLCAwKTsKIAlzY2Fuc2xvdCA9IHRhYmxl X3Nsb3RfY3JlYXRlKHJlbCwgTlVMTCk7CiAKIHJldHJ5OgpAQCAtNjAxLDcgKzYwMSw3IEBAIFJl bGF0aW9uRmluZERlbGV0ZWRUdXBsZUluZm9TZXEoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xv dCAqc2VhcmNoc2xvdCwKIAkgKiBub3QgeWV0IGNvbW1pdHRlZCBvciB0aG9zZSBqdXN0IGNvbW1p dHRlZCBwcmlvciB0byB0aGUgc2NhbiBhcmUKIAkgKiBleGNsdWRlZCBpbiB1cGRhdGVfbW9zdF9y ZWNlbnRfZGVsZXRpb25faW5mbygpLgogCSAqLwotCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocmVs LCBTbmFwc2hvdEFueSwgMCwgTlVMTCk7CisJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihyZWwsIFNu YXBzaG90QW55LCAwLCBOVUxMLCAwKTsKIAlzY2Fuc2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHJl bCwgTlVMTCk7CiAKIAl0YWJsZV9yZXNjYW4oc2NhbiwgTlVMTCk7CkBAIC02NjUsNyArNjY1LDcg QEAgUmVsYXRpb25GaW5kRGVsZXRlZFR1cGxlSW5mb0J5SW5kZXgoUmVsYXRpb24gcmVsLCBPaWQg aWR4b2lkLAogCSAqIG5vdCB5ZXQgY29tbWl0dGVkIG9yIHRob3NlIGp1c3QgY29tbWl0dGVkIHBy aW9yIHRvIHRoZSBzY2FuIGFyZQogCSAqIGV4Y2x1ZGVkIGluIHVwZGF0ZV9tb3N0X3JlY2VudF9k ZWxldGlvbl9pbmZvKCkuCiAJICovCi0Jc2NhbiA9IGluZGV4X2JlZ2luc2NhbihyZWwsIGlkeHJl bCwgU25hcHNob3RBbnksIE5VTEwsIHNrZXlfYXR0b2ZmLCAwKTsKKwlzY2FuID0gaW5kZXhfYmVn aW5zY2FuKHJlbCwgaWR4cmVsLCBTbmFwc2hvdEFueSwgTlVMTCwgc2tleV9hdHRvZmYsIDAsIDAp OwogCiAJaW5kZXhfcmVzY2FuKHNjYW4sIHNrZXksIHNrZXlfYXR0b2ZmLCBOVUxMLCAwKTsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYwppbmRleCBiZjI0ZjNkN2Zl MC4uMGQ4NTRkYjUxYTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRt YXBIZWFwc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nh bi5jCkBAIC0xMDUsMTEgKzEwNSwxOCBAQCBCaXRtYXBUYWJsZVNjYW5TZXR1cChCaXRtYXBIZWFw U2NhblN0YXRlICpub2RlKQogCSAqLwogCWlmICghbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNj KQogCXsKKwkJdWludDMyCQlmbGFncyA9IDA7CisKKwkJaWYgKCFibXNfaXNfbWVtYmVyKCgoU2Nh biAqKSBub2RlLT5zcy5wcy5wbGFuKS0+c2NhbnJlbGlkLAorCQkJCQkJICAgbm9kZS0+c3MucHMu c3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcykpCisJCQlmbGFncyA9IFNPX0hJTlRfUkVMX1JFQURf T05MWTsKKwogCQlub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPQogCQkJdGFibGVfYmVnaW5z Y2FuX2JtKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKIAkJCQkJCQkgICBub2RlLT5zcy5w cy5zdGF0ZS0+ZXNfc25hcHNob3QsCiAJCQkJCQkJICAgMCwKLQkJCQkJCQkgICBOVUxMKTsKKwkJ CQkJCQkgICBOVUxMLAorCQkJCQkJCSAgIGZsYWdzKTsKIAl9CiAKIAlub2RlLT5zcy5zc19jdXJy ZW50U2NhbkRlc2MtPnN0LnJzX3RibWl0ZXJhdG9yID0gdGJtaXRlcmF0b3I7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYwppbmRleCA2YmVhNDJmMTI4Zi4uMmM4N2JhNWY3 NjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYwpAQCAtOTQsNyAr OTQsNyBAQCBJbmRleE9ubHlOZXh0KEluZGV4T25seVNjYW5TdGF0ZSAqbm9kZSkKIAkJCQkJCQkJ ICAgZXN0YXRlLT5lc19zbmFwc2hvdCwKIAkJCQkJCQkJICAgJm5vZGUtPmlvc3NfSW5zdHJ1bWVu dCwKIAkJCQkJCQkJICAgbm9kZS0+aW9zc19OdW1TY2FuS2V5cywKLQkJCQkJCQkJICAgbm9kZS0+ aW9zc19OdW1PcmRlckJ5S2V5cyk7CisJCQkJCQkJCSAgIG5vZGUtPmlvc3NfTnVtT3JkZXJCeUtl eXMsIDApOwogCiAJCW5vZGUtPmlvc3NfU2NhbkRlc2MgPSBzY2FuZGVzYzsKIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUluZGV4c2Nhbi5jCmluZGV4IDcyYjEzNWU1ZGNmLi45MjY3NDQ0MWM2ZCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYwpAQCAtMTAyLDYgKzEwMiwxMiBAQCBJbmRl eE5leHQoSW5kZXhTY2FuU3RhdGUgKm5vZGUpCiAKIAlpZiAoc2NhbmRlc2MgPT0gTlVMTCkKIAl7 CisJCXVpbnQzMgkJZmxhZ3MgPSAwOworCisJCWlmICghYm1zX2lzX21lbWJlcigoKFNjYW4gKikg bm9kZS0+c3MucHMucGxhbiktPnNjYW5yZWxpZCwKKwkJCQkJCSAgIGVzdGF0ZS0+ZXNfbW9kaWZp ZWRfcmVsaWRzKSkKKwkJCWZsYWdzID0gU09fSElOVF9SRUxfUkVBRF9PTkxZOworCiAJCS8qCiAJ CSAqIFdlIHJlYWNoIGhlcmUgaWYgdGhlIGluZGV4IHNjYW4gaXMgbm90IHBhcmFsbGVsLCBvciBp ZiB3ZSdyZQogCQkgKiBzZXJpYWxseSBleGVjdXRpbmcgYW4gaW5kZXggc2NhbiB0aGF0IHdhcyBw bGFubmVkIHRvIGJlIHBhcmFsbGVsLgpAQCAtMTExLDcgKzExNyw4IEBAIEluZGV4TmV4dChJbmRl eFNjYW5TdGF0ZSAqbm9kZSkKIAkJCQkJCQkJICAgZXN0YXRlLT5lc19zbmFwc2hvdCwKIAkJCQkJ CQkJICAgJm5vZGUtPmlzc19JbnN0cnVtZW50LAogCQkJCQkJCQkgICBub2RlLT5pc3NfTnVtU2Nh bktleXMsCi0JCQkJCQkJCSAgIG5vZGUtPmlzc19OdW1PcmRlckJ5S2V5cyk7CisJCQkJCQkJCSAg IG5vZGUtPmlzc19OdW1PcmRlckJ5S2V5cywKKwkJCQkJCQkJICAgZmxhZ3MpOwogCiAJCW5vZGUt Pmlzc19TY2FuRGVzYyA9IHNjYW5kZXNjOwogCkBAIC0yMDcsNyArMjE0LDcgQEAgSW5kZXhOZXh0 V2l0aFJlb3JkZXIoSW5kZXhTY2FuU3RhdGUgKm5vZGUpCiAJCQkJCQkJCSAgIGVzdGF0ZS0+ZXNf c25hcHNob3QsCiAJCQkJCQkJCSAgICZub2RlLT5pc3NfSW5zdHJ1bWVudCwKIAkJCQkJCQkJICAg bm9kZS0+aXNzX051bVNjYW5LZXlzLAotCQkJCQkJCQkgICBub2RlLT5pc3NfTnVtT3JkZXJCeUtl eXMpOworCQkJCQkJCQkgICBub2RlLT5pc3NfTnVtT3JkZXJCeUtleXMsIDApOwogCiAJCW5vZGUt Pmlzc19TY2FuRGVzYyA9IHNjYW5kZXNjOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlU2Vxc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwpp bmRleCA5NDA0N2QyOTQzMC4uNGQwY2JiOWRlZTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVTZXFzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNj YW4uYwpAQCAtNjUsMTMgKzY1LDIwIEBAIFNlcU5leHQoU2VxU2NhblN0YXRlICpub2RlKQogCiAJ aWYgKHNjYW5kZXNjID09IE5VTEwpCiAJeworCQl1aW50MzIJCWZsYWdzID0gMDsKKworCQlpZiAo IWJtc19pc19tZW1iZXIoKChTY2FuICopIG5vZGUtPnNzLnBzLnBsYW4pLT5zY2FucmVsaWQsCisJ CQkJCQkgICBlc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcykpCisJCQlmbGFncyA9IFNPX0hJTlRf UkVMX1JFQURfT05MWTsKKwogCQkvKgogCQkgKiBXZSByZWFjaCBoZXJlIGlmIHRoZSBzY2FuIGlz IG5vdCBwYXJhbGxlbCwgb3IgaWYgd2UncmUgc2VyaWFsbHkKIAkJICogZXhlY3V0aW5nIGEgc2Nh biB0aGF0IHdhcyBwbGFubmVkIHRvIGJlIHBhcmFsbGVsLgogCQkgKi8KIAkJc2NhbmRlc2MgPSB0 YWJsZV9iZWdpbnNjYW4obm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAogCQkJCQkJCQkgICBl c3RhdGUtPmVzX3NuYXBzaG90LAotCQkJCQkJCQkgICAwLCBOVUxMKTsKKwkJCQkJCQkJICAgMCwg TlVMTCwgZmxhZ3MpOworCiAJCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IHNjYW5kZXNj OwogCX0KIApAQCAtMzY3LDE0ICszNzQsMjAgQEAgRXhlY1NlcVNjYW5Jbml0aWFsaXplRFNNKFNl cVNjYW5TdGF0ZSAqbm9kZSwKIHsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IG5vZGUtPnNzLnBzLnN0 YXRlOwogCVBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbjsKKwl1aW50MzIJCWZsYWdzID0gMDsK IAogCXBzY2FuID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsIG5vZGUtPnBzY2FuX2xlbik7 CiAJdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0 aW9uLAogCQkJCQkJCQkgIHBzY2FuLAogCQkJCQkJCQkgIGVzdGF0ZS0+ZXNfc25hcHNob3QpOwog CXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgbm9kZS0+c3MucHMucGxhbi0+cGxhbl9ub2RlX2lk LCBwc2Nhbik7CisJaWYgKCFibXNfaXNfbWVtYmVyKCgoU2NhbiAqKSBub2RlLT5zcy5wcy5wbGFu KS0+c2NhbnJlbGlkLAorCQkJCQkgICBlc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcykpCisJCWZs YWdzID0gU09fSElOVF9SRUxfUkVBRF9PTkxZOworCiAJbm9kZS0+c3Muc3NfY3VycmVudFNjYW5E ZXNjID0KLQkJdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxh dGlvbiwgcHNjYW4pOworCQl0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwobm9kZS0+c3Muc3NfY3Vy cmVudFJlbGF0aW9uLCBwc2NhbiwKKwkJCQkJCQkJIGZsYWdzKTsKIH0KIAogLyogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpA QCAtNDA0LDggKzQxNywxNSBAQCBFeGVjU2VxU2NhbkluaXRpYWxpemVXb3JrZXIoU2VxU2NhblN0 YXRlICpub2RlLAogCQkJCQkJCVBhcmFsbGVsV29ya2VyQ29udGV4dCAqcHdjeHQpCiB7CiAJUGFy YWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuOworCXVpbnQzMgkJZmxhZ3MgPSAwOworCisJaWYgKCFi bXNfaXNfbWVtYmVyKCgoU2NhbiAqKSBub2RlLT5zcy5wcy5wbGFuKS0+c2NhbnJlbGlkLAorCQkJ CQkgICBub2RlLT5zcy5wcy5zdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzKSkKKwkJZmxhZ3MgPSBT T19ISU5UX1JFTF9SRUFEX09OTFk7CiAKIAlwc2NhbiA9IHNobV90b2NfbG9va3VwKHB3Y3h0LT50 b2MsIG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5fbm9kZV9pZCwgZmFsc2UpOwogCW5vZGUtPnNzLnNz X2N1cnJlbnRTY2FuRGVzYyA9Ci0JCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChub2RlLT5zcy5z c19jdXJyZW50UmVsYXRpb24sIHBzY2FuKTsKKwkJdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKG5v ZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKKwkJCQkJCQkJIHBzY2FuLAorCQkJCQkJCQkgZmxh Z3MpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMu YyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKaW5kZXggNDBhYzcwMGQ1 MjkuLmE2NjI2MzI1Mjk2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFy dGJvdW5kcy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKQEAg LTMzNjEsNyArMzM2MSw3IEBAIGNoZWNrX2RlZmF1bHRfcGFydGl0aW9uX2NvbnRlbnRzKFJlbGF0 aW9uIHBhcmVudCwgUmVsYXRpb24gZGVmYXVsdF9yZWwsCiAJCWVjb250ZXh0ID0gR2V0UGVyVHVw bGVFeHByQ29udGV4dChlc3RhdGUpOwogCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0 TGF0ZXN0U25hcHNob3QoKSk7CiAJCXR1cHNsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShwYXJ0X3Jl bCwgJmVzdGF0ZS0+ZXNfdHVwbGVUYWJsZSk7Ci0JCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocGFy dF9yZWwsIHNuYXBzaG90LCAwLCBOVUxMKTsKKwkJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihwYXJ0 X3JlbCwgc25hcHNob3QsIDAsIE5VTEwsIDApOwogCiAJCS8qCiAJCSAqIFN3aXRjaCB0byBwZXIt dHVwbGUgbWVtb3J5IGNvbnRleHQgYW5kIHJlc2V0IGl0IGZvciBlYWNoIHR1cGxlCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9zZWxmdW5jcy5jCmluZGV4IGM3NjBiMTlkYjU1Li5lYzBkZWYwZDFlMiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3NlbGZ1bmNzLmMKQEAgLTcxMDAsNyArNzEwMCw3IEBAIGdldF9hY3R1YWxfdmFyaWFi bGVfZW5kcG9pbnQoUmVsYXRpb24gaGVhcFJlbCwKIAogCWluZGV4X3NjYW4gPSBpbmRleF9iZWdp bnNjYW4oaGVhcFJlbCwgaW5kZXhSZWwsCiAJCQkJCQkJCSAmU25hcHNob3ROb25WYWN1dW1hYmxl LCBOVUxMLAotCQkJCQkJCQkgMSwgMCk7CisJCQkJCQkJCSAxLCAwLCAwKTsKIAkvKiBTZXQgaXQg dXAgZm9yIGluZGV4LW9ubHkgc2NhbiAqLwogCWluZGV4X3NjYW4tPnhzX3dhbnRfaXR1cCA9IHRy dWU7CiAJaW5kZXhfcmVzY2FuKGluZGV4X3NjYW4sIHNjYW5rZXlzLCAxLCBOVUxMLCAwKTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNz L2dlbmFtLmgKaW5kZXggOTIwMGEyMmJkOWYuLmQyOWQ5ZTkwNWZjIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaApA QCAtMTc3LDcgKzE3Nyw3IEBAIGV4dGVybiBJbmRleFNjYW5EZXNjIGluZGV4X2JlZ2luc2NhbihS ZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJCQkJCQkgUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwK IAkJCQkJCQkJCSBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCQkJCSBJbmRleFNjYW5JbnN0cnVt ZW50YXRpb24gKmluc3RydW1lbnQsCi0JCQkJCQkJCQkgaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlz KTsKKwkJCQkJCQkJCSBpbnQgbmtleXMsIGludCBub3JkZXJieXMsIHVpbnQzMiBmbGFncyk7CiBl eHRlcm4gSW5kZXhTY2FuRGVzYyBpbmRleF9iZWdpbnNjYW5fYml0bWFwKFJlbGF0aW9uIGluZGV4 UmVsYXRpb24sCiAJCQkJCQkJCQkJCVNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJCQkJCQlJbmRl eFNjYW5JbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggYjZm MWIzZmI0NDguLjQ4MGExYmQ2NTRmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVh cGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC0xMTksNiArMTE5LDEy IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4RmV0Y2hIZWFwRGF0YQogCiAJQnVmZmVyCQl4c19jYnVm OwkJLyogY3VycmVudCBoZWFwIGJ1ZmZlciBpbiBzY2FuLCBpZiBhbnkgKi8KIAkvKiBOQjogaWYg eHNfY2J1ZiBpcyBub3QgSW52YWxpZEJ1ZmZlciwgd2UgaG9sZCBhIHBpbiBvbiB0aGF0IGJ1ZmZl ciAqLworCisJLyoKKwkgKiBTb21lIG9wdGltaXphdGlvbnMgY2FuIG9ubHkgYmUgcGVyZm9ybWVk IGlmIHRoZSBxdWVyeSBkb2VzIG5vdCBtb2RpZnkKKwkgKiB0aGUgdW5kZXJseWluZyByZWxhdGlv bi4gVHJhY2sgdGhhdCBoZXJlLgorCSAqLworCWJvb2wJCW1vZGlmaWVzX2Jhc2VfcmVsOwogfSBJ bmRleEZldGNoSGVhcERhdGE7CiAKIC8qIFJlc3VsdCBjb2RlcyBmb3IgSGVhcFR1cGxlU2F0aXNm aWVzVmFjdXVtICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIv c3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCAyZmE3OTBiNmJmNS4uZDEwYjFiMDNj ZGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtNjMsNiArNjMsOCBAQCB0eXBlZGVmIGVudW0gU2Nh bk9wdGlvbnMKIAogCS8qIHVucmVnaXN0ZXIgc25hcHNob3QgYXQgc2NhbiBlbmQ/ICovCiAJU09f VEVNUF9TTkFQU0hPVCA9IDEgPDwgOSwKKwkvKiBzZXQgaWYgdGhlIHF1ZXJ5IGRvZXNuJ3QgbW9k aWZ5IHRoZSByZWwgKi8KKwlTT19ISU5UX1JFTF9SRUFEX09OTFkgPSAxIDw8IDEwLAogfQkJCVNj YW5PcHRpb25zOwogCiAvKgpAQCAtNDIwLDcgKzQyMiw3IEBAIHR5cGVkZWYgc3RydWN0IFRhYmxl QW1Sb3V0aW5lCiAJICoKIAkgKiBUdXBsZXMgZm9yIGFuIGluZGV4IHNjYW4gY2FuIHRoZW4gYmUg ZmV0Y2hlZCB2aWEgaW5kZXhfZmV0Y2hfdHVwbGUuCiAJICovCi0Jc3RydWN0IEluZGV4RmV0Y2hU YWJsZURhdGEgKigqaW5kZXhfZmV0Y2hfYmVnaW4pIChSZWxhdGlvbiByZWwpOworCXN0cnVjdCBJ bmRleEZldGNoVGFibGVEYXRhICooKmluZGV4X2ZldGNoX2JlZ2luKSAoUmVsYXRpb24gcmVsLCB1 aW50MzIgZmxhZ3MpOwogCiAJLyoKIAkgKiBSZXNldCBpbmRleCBmZXRjaC4gVHlwaWNhbGx5IHRo aXMgd2lsbCByZWxlYXNlIGNyb3NzIGluZGV4IGZldGNoCkBAIC04NzQsOSArODc2LDkgQEAgZXh0 ZXJuIFR1cGxlVGFibGVTbG90ICp0YWJsZV9zbG90X2NyZWF0ZShSZWxhdGlvbiByZWxhdGlvbiwg TGlzdCAqKnJlZ2xpc3QpOwogICovCiBzdGF0aWMgaW5saW5lIFRhYmxlU2NhbkRlc2MKIHRhYmxl X2JlZ2luc2NhbihSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90LAotCQkJCWludCBua2V5 cywgU2NhbktleURhdGEgKmtleSkKKwkJCQlpbnQgbmtleXMsIFNjYW5LZXlEYXRhICprZXksIHVp bnQzMiBmbGFncykKIHsKLQl1aW50MzIJCWZsYWdzID0gU09fVFlQRV9TRVFTQ0FOIHwKKwlmbGFn cyB8PSBTT19UWVBFX1NFUVNDQU4gfAogCQlTT19BTExPV19TVFJBVCB8IFNPX0FMTE9XX1NZTkMg fCBTT19BTExPV19QQUdFTU9ERTsKIAogCXJldHVybiByZWwtPnJkX3RhYmxlYW0tPnNjYW5fYmVn aW4ocmVsLCBzbmFwc2hvdCwgbmtleXMsIGtleSwgTlVMTCwgZmxhZ3MpOwpAQCAtOTE5LDkgKzky MSw5IEBAIHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBz aG90LAogICovCiBzdGF0aWMgaW5saW5lIFRhYmxlU2NhbkRlc2MKIHRhYmxlX2JlZ2luc2Nhbl9i bShSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90LAotCQkJCSAgIGludCBua2V5cywgU2Nh bktleURhdGEgKmtleSkKKwkJCQkgICBpbnQgbmtleXMsIFNjYW5LZXlEYXRhICprZXksIHVpbnQz MiBmbGFncykKIHsKLQl1aW50MzIJCWZsYWdzID0gU09fVFlQRV9CSVRNQVBTQ0FOIHwgU09fQUxM T1dfUEFHRU1PREU7CisJZmxhZ3MgfD0gU09fVFlQRV9CSVRNQVBTQ0FOIHwgU09fQUxMT1dfUEFH RU1PREU7CiAKIAlyZXR1cm4gcmVsLT5yZF90YWJsZWFtLT5zY2FuX2JlZ2luKHJlbCwgc25hcHNo b3QsIG5rZXlzLCBrZXksCiAJCQkJCQkJCQkgICBOVUxMLCBmbGFncyk7CkBAIC0xMTI4LDcgKzEx MzAsOCBAQCBleHRlcm4gdm9pZCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShSZWxhdGlv biByZWwsCiAgKiBDYWxsZXIgbXVzdCBob2xkIGEgc3VpdGFibGUgbG9jayBvbiB0aGUgcmVsYXRp b24uCiAgKi8KIGV4dGVybiBUYWJsZVNjYW5EZXNjIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChS ZWxhdGlvbiByZWxhdGlvbiwKLQkJCQkJCQkJCQkJICBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNj YW4pOworCQkJCQkJCQkJCQkgIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbiwKKwkJCQkJCQkJ CQkJICB1aW50MzIgZmxhZ3MpOwogCiAvKgogICogQmVnaW4gYSBwYXJhbGxlbCB0aWQgcmFuZ2Ug c2Nhbi4gYHBzY2FuYCBuZWVkcyB0byBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQKQEAgLTExNjQsOSAr MTE2Nyw5IEBAIHRhYmxlX3BhcmFsbGVsc2Nhbl9yZWluaXRpYWxpemUoUmVsYXRpb24gcmVsLCBQ YXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4pCiAgKiBUdXBsZXMgZm9yIGFuIGluZGV4IHNjYW4g Y2FuIHRoZW4gYmUgZmV0Y2hlZCB2aWEgdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUoKS4KICAqLwog c3RhdGljIGlubGluZSBJbmRleEZldGNoVGFibGVEYXRhICoKLXRhYmxlX2luZGV4X2ZldGNoX2Jl Z2luKFJlbGF0aW9uIHJlbCkKK3RhYmxlX2luZGV4X2ZldGNoX2JlZ2luKFJlbGF0aW9uIHJlbCwg dWludDMyIGZsYWdzKQogewotCXJldHVybiByZWwtPnJkX3RhYmxlYW0tPmluZGV4X2ZldGNoX2Jl Z2luKHJlbCk7CisJcmV0dXJuIHJlbC0+cmRfdGFibGVhbS0+aW5kZXhfZmV0Y2hfYmVnaW4ocmVs LCBmbGFncyk7CiB9CiAKIC8qCi0tIAoyLjQzLjAKCg== --000000000000b196150645a17d5e Content-Type: application/x-patch; name="v25-0013-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Disposition: attachment; filename="v25-0013-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj0m8cju11 RnJvbSA2M2U0YWQwZjJjYmE3NmI4NzRlODkxNWRhOGE1YjkyZTJlYzAwZmI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMTU6MjQ6MDggLTA1MDAKU3ViamVjdDogW1BB VENIIHYyNSAxMy8xNF0gQWxsb3cgb24tYWNjZXNzIHBydW5pbmcgdG8gc2V0IHBhZ2VzIGFsbC12 aXNpYmxlCgpNYW55IHF1ZXJpZXMgZG8gbm90IG1vZGlmeSB0aGUgdW5kZXJseWluZyByZWxhdGlv bi4gRm9yIHN1Y2ggcXVlcmllcywgaWYKb24tYWNjZXNzIHBydW5pbmcgb2NjdXJzIGR1cmluZyB0 aGUgc2Nhbiwgd2UgY2FuIGNoZWNrIHdoZXRoZXIgdGhlIHBhZ2UKaGFzIGJlY29tZSBhbGwtdmlz aWJsZSBhbmQgdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcCBhY2NvcmRpbmdseS4KUHJldmlvdXNs eSwgb25seSB2YWN1dW0gYW5kIENPUFkgRlJFRVpFIG1hcmtlZCBwYWdlcyBhcyBhbGwtdmlzaWJs ZSBvcgphbGwtZnJvemVuLgoKVGhpcyBjb21taXQgaW1wbGVtZW50cyBvbi1hY2Nlc3MgVk0gc2V0 dGluZyBmb3Igc2VxdWVudGlhbCBzY2FucyBhcyB3ZWxsCmFzIGZvciB0aGUgdW5kZXJseWluZyBo ZWFwIHJlbGF0aW9uIGluIGluZGV4IHNjYW5zIGFuZCBiaXRtYXAgaGVhcApzY2Fucy4KCkF1dGhv cjogTWVsYW5pZSBQbGFnZW1hbiA8bWVsYW5pZXBsYWdlbWFuQGdtYWlsLmNvbT4KUmV2aWV3ZWQt Ynk6IEFuZHJlcyBGcmV1bmQgPGFuZHJlc0BhbmFyYXplbC5kZT4KUmV2aWV3ZWQtYnk6IEtpcmls bCBSZXNoa2UgPHJlc2hrZWtpcmlsbEBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9z dGdyLmVzL20vZmxhdC9DQUFLUnVfWk13Nk5wZF9xbTJLTSUyQkZ3UTNjTU9NeDFEaDNWTWhwOC1W N1NPTHhkSzktZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtLmMgICAgICAgICAgICAgIHwgMTUgKysrKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbV9oYW5kbGVyLmMgICAgICB8IDE1ICsrKystCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9wcnVuZWhlYXAuYyAgICAgICAgICAgfCA2MSArKysrKysrKysrKysrKysrLS0tCiBzcmMvaW5j bHVkZS9hY2Nlc3MvaGVhcGFtLmggICAgICAgICAgICAgICAgICAgfCAyNCArKysrKysrLQogLi4u L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbCAgICAgICAgIHwgIDMgKy0KIDUgZmls ZXMgY2hhbmdlZCwgMTAxIGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtLmMKaW5kZXggNjBjYzZiYTk5OGQuLmRlYjY0ZTE5YWU4IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW0uYwpAQCAtNTcwLDYgKzU3MCw3IEBAIGhlYXBfcHJlcGFyZV9wYWdlc2Nh bihUYWJsZVNjYW5EZXNjIHNzY2FuKQogCUJ1ZmZlcgkJYnVmZmVyID0gc2Nhbi0+cnNfY2J1ZjsK IAlCbG9ja051bWJlciBibG9jayA9IHNjYW4tPnJzX2NibG9jazsKIAlTbmFwc2hvdAlzbmFwc2hv dDsKKwlCdWZmZXIJICAgKnZtYnVmZmVyID0gTlVMTDsKIAlQYWdlCQlwYWdlOwogCWludAkJCWxp bmVzOwogCWJvb2wJCWFsbF92aXNpYmxlOwpAQCAtNTg0LDcgKzU4NSw5IEBAIGhlYXBfcHJlcGFy ZV9wYWdlc2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuKQogCS8qCiAJICogUHJ1bmUgYW5kIHJlcGFp ciBmcmFnbWVudGF0aW9uIGZvciB0aGUgd2hvbGUgcGFnZSwgaWYgcG9zc2libGUuCiAJICovCi0J aGVhcF9wYWdlX3BydW5lX29wdChzY2FuLT5yc19iYXNlLnJzX3JkLCBidWZmZXIpOworCWlmIChz c2Nhbi0+cnNfZmxhZ3MgJiBTT19ISU5UX1JFTF9SRUFEX09OTFkpCisJCXZtYnVmZmVyID0gJnNj YW4tPnJzX3ZtYnVmZmVyOworCWhlYXBfcGFnZV9wcnVuZV9vcHQoc2Nhbi0+cnNfYmFzZS5yc19y ZCwgYnVmZmVyLCB2bWJ1ZmZlcik7CiAKIAkvKgogCSAqIFdlIG11c3QgaG9sZCBzaGFyZSBsb2Nr IG9uIHRoZSBidWZmZXIgY29udGVudCB3aGlsZSBleGFtaW5pbmcgdHVwbGUKQEAgLTEyNjEsNiAr MTI2NCw3IEBAIGhlYXBfYmVnaW5zY2FuKFJlbGF0aW9uIHJlbGF0aW9uLCBTbmFwc2hvdCBzbmFw c2hvdCwKIAkJCQkJCQkJCQkJCQkJICBzaXplb2YoVEJNSXRlcmF0ZVJlc3VsdCkpOwogCX0KIAor CXNjYW4tPnJzX3ZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKIAogCXJldHVybiAoVGFibGVTY2Fu RGVzYykgc2NhbjsKIH0KQEAgLTEyOTksNiArMTMwMywxMiBAQCBoZWFwX3Jlc2NhbihUYWJsZVNj YW5EZXNjIHNzY2FuLCBTY2FuS2V5IGtleSwgYm9vbCBzZXRfcGFyYW1zLAogCQlzY2FuLT5yc19j YnVmID0gSW52YWxpZEJ1ZmZlcjsKIAl9CiAKKwlpZiAoQnVmZmVySXNWYWxpZChzY2FuLT5yc192 bWJ1ZmZlcikpCisJeworCQlSZWxlYXNlQnVmZmVyKHNjYW4tPnJzX3ZtYnVmZmVyKTsKKwkJc2Nh bi0+cnNfdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOworCX0KKwogCS8qCiAJICogU09fVFlQRV9C SVRNQVBTQ0FOIHdvdWxkIGJlIGNsZWFuZWQgdXAgaGVyZSwgYnV0IGl0IGRvZXMgbm90IGhvbGQg YW55CiAJICogYWRkaXRpb25hbCBkYXRhIHZzIGEgbm9ybWFsIEhlYXBTY2FuCkBAIC0xMzMxLDYg KzEzNDEsOSBAQCBoZWFwX2VuZHNjYW4oVGFibGVTY2FuRGVzYyBzc2NhbikKIAlpZiAoQnVmZmVy SXNWYWxpZChzY2FuLT5yc19jYnVmKSkKIAkJUmVsZWFzZUJ1ZmZlcihzY2FuLT5yc19jYnVmKTsK IAorCWlmIChCdWZmZXJJc1ZhbGlkKHNjYW4tPnJzX3ZtYnVmZmVyKSkKKwkJUmVsZWFzZUJ1ZmZl cihzY2FuLT5yc192bWJ1ZmZlcik7CisKIAkvKgogCSAqIE11c3QgZnJlZSB0aGUgcmVhZCBzdHJl YW0gYmVmb3JlIGZyZWVpbmcgdGhlIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5LgogCSAqLwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKaW5kZXggNmMyZTRlMDhiMTYuLjJjYjk4 ZTU4OTU2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxl ci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTg1 LDYgKzg1LDcgQEAgaGVhcGFtX2luZGV4X2ZldGNoX2JlZ2luKFJlbGF0aW9uIHJlbCwgdWludDMy IGZsYWdzKQogCiAJaHNjYW4tPnhzX2Jhc2UucmVsID0gcmVsOwogCWhzY2FuLT54c19jYnVmID0g SW52YWxpZEJ1ZmZlcjsKKwloc2Nhbi0+eHNfdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCWhz Y2FuLT5tb2RpZmllc19iYXNlX3JlbCA9ICEoZmxhZ3MgJiBTT19ISU5UX1JFTF9SRUFEX09OTFkp OwogCiAJcmV0dXJuICZoc2Nhbi0+eHNfYmFzZTsKQEAgLTEwMCw2ICsxMDEsMTIgQEAgaGVhcGFt X2luZGV4X2ZldGNoX3Jlc2V0KEluZGV4RmV0Y2hUYWJsZURhdGEgKnNjYW4pCiAJCVJlbGVhc2VC dWZmZXIoaHNjYW4tPnhzX2NidWYpOwogCQloc2Nhbi0+eHNfY2J1ZiA9IEludmFsaWRCdWZmZXI7 CiAJfQorCisJaWYgKEJ1ZmZlcklzVmFsaWQoaHNjYW4tPnhzX3ZtYnVmZmVyKSkKKwl7CisJCVJl bGVhc2VCdWZmZXIoaHNjYW4tPnhzX3ZtYnVmZmVyKTsKKwkJaHNjYW4tPnhzX3ZtYnVmZmVyID0g SW52YWxpZEJ1ZmZlcjsKKwl9CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xMzksNyArMTQ2LDggQEAg aGVhcGFtX2luZGV4X2ZldGNoX3R1cGxlKHN0cnVjdCBJbmRleEZldGNoVGFibGVEYXRhICpzY2Fu LAogCQkgKiBQcnVuZSBwYWdlLCBidXQgb25seSBpZiB3ZSB3ZXJlbid0IGFscmVhZHkgb24gdGhp cyBwYWdlCiAJCSAqLwogCQlpZiAocHJldl9idWYgIT0gaHNjYW4tPnhzX2NidWYpCi0JCQloZWFw X3BhZ2VfcHJ1bmVfb3B0KGhzY2FuLT54c19iYXNlLnJlbCwgaHNjYW4tPnhzX2NidWYpOworCQkJ aGVhcF9wYWdlX3BydW5lX29wdChoc2Nhbi0+eHNfYmFzZS5yZWwsIGhzY2FuLT54c19jYnVmLAor CQkJCQkJCQloc2Nhbi0+bW9kaWZpZXNfYmFzZV9yZWwgPyBOVUxMIDogJmhzY2FuLT54c192bWJ1 ZmZlcik7CiAJfQogCiAJLyogT2J0YWluIHNoYXJlLWxvY2sgb24gdGhlIGJ1ZmZlciBzbyB3ZSBj YW4gZXhhbWluZSB2aXNpYmlsaXR5ICovCkBAIC0yNDcyLDYgKzI0ODAsNyBAQCBCaXRtYXBIZWFw U2Nhbk5leHRCbG9jayhUYWJsZVNjYW5EZXNjIHNjYW4sCiAJVEJNSXRlcmF0ZVJlc3VsdCAqdGJt cmVzOwogCU9mZnNldE51bWJlciBvZmZzZXRzW1RCTV9NQVhfVFVQTEVTX1BFUl9QQUdFXTsKIAlp bnQJCQlub2Zmc2V0cyA9IC0xOworCUJ1ZmZlcgkgICAqdm1idWZmZXIgPSBOVUxMOwogCiAJQXNz ZXJ0KHNjYW4tPnJzX2ZsYWdzICYgU09fVFlQRV9CSVRNQVBTQ0FOKTsKIAlBc3NlcnQoaHNjYW4t PnJzX3JlYWRfc3RyZWFtKTsKQEAgLTI1MTgsNyArMjUyNyw5IEBAIEJpdG1hcEhlYXBTY2FuTmV4 dEJsb2NrKFRhYmxlU2NhbkRlc2Mgc2NhbiwKIAkvKgogCSAqIFBydW5lIGFuZCByZXBhaXIgZnJh Z21lbnRhdGlvbiBmb3IgdGhlIHdob2xlIHBhZ2UsIGlmIHBvc3NpYmxlLgogCSAqLwotCWhlYXBf cGFnZV9wcnVuZV9vcHQoc2Nhbi0+cnNfcmQsIGJ1ZmZlcik7CisJaWYgKHNjYW4tPnJzX2ZsYWdz ICYgU09fSElOVF9SRUxfUkVBRF9PTkxZKQorCQl2bWJ1ZmZlciA9ICZoc2Nhbi0+cnNfdm1idWZm ZXI7CisJaGVhcF9wYWdlX3BydW5lX29wdChzY2FuLT5yc19yZCwgYnVmZmVyLCB2bWJ1ZmZlcik7 CiAKIAkvKgogCSAqIFdlIG11c3QgaG9sZCBzaGFyZSBsb2NrIG9uIHRoZSBidWZmZXIgY29udGVu dCB3aGlsZSBleGFtaW5pbmcgdHVwbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5k ZXggNGZlODY5ZmVhOTkuLjkxMjY4NGVhZDYzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhl YXAuYwpAQCAtMjA1LDcgKzIwNSw5IEBAIHN0YXRpYyBib29sIGhlYXBfcGFnZV93aWxsX3NldF92 bShSZWxhdGlvbiByZWxhdGlvbiwKIAkJCQkJCQkJICBCdWZmZXIgaGVhcF9idWYsCiAJCQkJCQkJ CSAgQnVmZmVyIHZtYnVmZmVyLAogCQkJCQkJCQkgIGJvb2wgYmxrX2tub3duX2F2LAotCQkJCQkJ CQkgIGNvbnN0IFBydW5lU3RhdGUgKnByc3RhdGUsCisJCQkJCQkJCSAgUHJ1bmVSZWFzb24gcmVh c29uLAorCQkJCQkJCQkgIGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9fZnJlZXplLAorCQkJCQkJCQkg IFBydW5lU3RhdGUgKnByc3RhdGUsCiAJCQkJCQkJCSAgdWludDggKm5ld192bWJpdHMpOwogCiAK QEAgLTIyMCw5ICsyMjIsMTMgQEAgc3RhdGljIGJvb2wgaGVhcF9wYWdlX3dpbGxfc2V0X3ZtKFJl bGF0aW9uIHJlbGF0aW9uLAogICogaWYgdGhlcmUncyBub3QgYW55IHVzZSBpbiBwcnVuaW5nLgog ICoKICAqIENhbGxlciBtdXN0IGhhdmUgcGluIG9uIHRoZSBidWZmZXIsIGFuZCBtdXN0ICpub3Qq IGhhdmUgYSBsb2NrIG9uIGl0LgorICoKKyAqIElmIHZtYnVmZmVyIGlzIG5vdCBOVUxMLCBpdCBp cyBva2F5IGZvciBwcnVuaW5nIHRvIHNldCB0aGUgdmlzaWJpbGl0eSBtYXAgaWYKKyAqIHRoZSBw YWdlIGlzIGFsbC12aXNpYmxlLiBXZSB3aWxsIHRha2UgY2FyZSBvZiBwaW5uaW5nIGFuZCwgaWYg bmVlZGVkLAorICogcmVhZGluZyBpbiB0aGUgcGFnZSBvZiB0aGUgdmlzaWJpbGl0eSBtYXAuCiAg Ki8KIHZvaWQKLWhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBi dWZmZXIpCitoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVm ZmVyLCBCdWZmZXIgKnZtYnVmZmVyKQogewogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1 ZmZlcik7CiAJVHJhbnNhY3Rpb25JZCBwcnVuZV94aWQ7CkBAIC0zMDQsNiArMzEwLDEzIEBAIGhl YXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIpCiAJCQkJ LmN1dG9mZnMgPSBOVUxMLAogCQkJfTsKIAorCQkJaWYgKHZtYnVmZmVyKQorCQkJeworCQkJCXZp c2liaWxpdHltYXBfcGluKHJlbGF0aW9uLCBCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpLCB2 bWJ1ZmZlcik7CisJCQkJcGFyYW1zLm9wdGlvbnMgfD0gSEVBUF9QQUdFX1BSVU5FX1VQREFURV9W TTsKKwkJCQlwYXJhbXMudm1idWZmZXIgPSAqdm1idWZmZXI7CisJCQl9CisKIAkJCWhlYXBfcGFn ZV9wcnVuZV9hbmRfZnJlZXplKCZwYXJhbXMsICZwcmVzdWx0LCAmZHVtbXlfb2ZmX2xvYywKIAkJ CQkJCQkJCSAgIE5VTEwsIE5VTEwpOwogCkBAIC04NjIsNiArODc1LDkgQEAgZ2V0X2NvbmZsaWN0 X3hpZChib29sIGRvX3BydW5lLCBib29sIGRvX2ZyZWV6ZSwgYm9vbCBkb19zZXRfdm0sIHVpbnQ4 IG5ld192bWJpdHMKICAqIGNvcnJ1cHRlZCwgaXQgd2lsbCBmaXggdGhlbSBieSBjbGVhcmluZyB0 aGUgVk0gYml0cyBhbmQgcGFnZSB2aXNpYmlsaXR5CiAgKiBoaW50LiBUaGlzIGRvZXMgbm90IG5l ZWQgdG8gYmUgZG9uZSBpbiBhIGNyaXRpY2FsIHNlY3Rpb24uCiAgKgorICogVGhpcyBzaG91bGQg YmUgY2FsbGVkIG9ubHkgYWZ0ZXIgZG9fZnJlZXplIGhhcyBiZWVuIGRlY2lkZWQgKGFuZCBkb19w cnVuZQorICogaGFzIGJlZW4gc2V0KSwgYXMgdGhlc2UgZmFjdG9yIGludG8gb3VyIGhldXJpc3Rp Yy1iYXNlZCBkZWNpc2lvbi4KKyAqCiAgKiBSZXR1cm5zIHRydWUgaWYgb25lIG9yIGJvdGggVk0g Yml0cyBzaG91bGQgYmUgc2V0LCBhbG9uZyB3aXRoIHJldHVybmluZyB0aGUKICAqIGRlc2lyZWQg d2hhdCBiaXRzIHNob3VsZCBiZSBzZXQgaW4gdGhlIFZNIGluICpuZXdfdm1iaXRzLgogICovCkBA IC04NzEsNyArODg3LDkgQEAgaGVhcF9wYWdlX3dpbGxfc2V0X3ZtKFJlbGF0aW9uIHJlbGF0aW9u LAogCQkJCQkgIEJ1ZmZlciBoZWFwX2J1ZiwKIAkJCQkJICBCdWZmZXIgdm1idWZmZXIsCiAJCQkJ CSAgYm9vbCBibGtfa25vd25fYXYsCi0JCQkJCSAgY29uc3QgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwK KwkJCQkJICBQcnVuZVJlYXNvbiByZWFzb24sCisJCQkJCSAgYm9vbCBkb19wcnVuZSwgYm9vbCBk b19mcmVlemUsCisJCQkJCSAgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKIAkJCQkJICB1aW50OCAqbmV3 X3ZtYml0cykKIHsKIAlQYWdlCQloZWFwX3BhZ2UgPSBCdWZmZXJHZXRQYWdlKGhlYXBfYnVmKTsK QEAgLTg4NCw2ICs5MDIsMjQgQEAgaGVhcF9wYWdlX3dpbGxfc2V0X3ZtKFJlbGF0aW9uIHJlbGF0 aW9uLAogCQlyZXR1cm4gZmFsc2U7CiAJfQogCisJLyoKKwkgKiBJZiB0aGlzIGlzIGFuIG9uLWFj Y2VzcyBjYWxsIGFuZCB3ZSdyZSBub3QgYWN0dWFsbHkgcHJ1bmluZywgYXZvaWQKKwkgKiBzZXR0 aW5nIHRoZSB2aXNpYmlsaXR5IG1hcCBpZiBpdCB3b3VsZCBuZXdseSBkaXJ0eSB0aGUgaGVhcCBw YWdlIG9yLCBpZgorCSAqIHRoZSBwYWdlIGlzIGFscmVhZHkgZGlydHksIGlmIGRvaW5nIHNvIHdv dWxkIHJlcXVpcmUgaW5jbHVkaW5nIGEKKwkgKiBmdWxsLXBhZ2UgaW1hZ2UgKEZQSSkgb2YgdGhl IGhlYXAgcGFnZSBpbiB0aGUgV0FMLiBUaGlzIHNpdHVhdGlvbgorCSAqIHNob3VsZCBiZSByYXJl LCBhcyBvbi1hY2Nlc3MgcHJ1bmluZyBpcyBvbmx5IGF0dGVtcHRlZCB3aGVuCisJICogcGRfcHJ1 bmVfeGlkIGlzIHZhbGlkLgorCSAqLworCWlmIChyZWFzb24gPT0gUFJVTkVfT05fQUNDRVNTICYm CisJCXByc3RhdGUtPmFsbF92aXNpYmxlICYmCisJCSFkb19wcnVuZSAmJiAhZG9fZnJlZXplICYm CisJCSghQnVmZmVySXNEaXJ0eShoZWFwX2J1ZikgfHwgWExvZ0NoZWNrQnVmZmVyTmVlZHNCYWNr dXAoaGVhcF9idWYpKSkKKwl7CisJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7CisJCXBy c3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwogCS8qCiAJ ICogRGV0ZXJtaW5lIHdoYXQgdGhlIHZpc2liaWxpdHkgbWFwIGJpdHMgc2hvdWxkIGJlIHNldCB0 byB1c2luZyB0aGUKIAkgKiB2YWx1ZXMgb2YgYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4gZGV0 ZXJtaW5lZCBkdXJpbmcKQEAgLTkwNiwxNCArOTQyLDE1IEBAIGhlYXBfcGFnZV93aWxsX3NldF92 bShSZWxhdGlvbiByZWxhdGlvbiwKIAkgKiBXQUwtbG9nZ2VkLgogCSAqCiAJICogQXMgb2YgUG9z dGdyZVNRTCA5LjIsIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQgc2hvdWxkIG5ldmVyIGJlIHNldCBp ZiB0aGUKLQkgKiBwYWdlLWxldmVsIGJpdCBpcyBjbGVhci4gIEhvd2V2ZXIsIGl0J3MgcG9zc2li bGUgdGhhdCB0aGUgYml0IGdvdAotCSAqIGNsZWFyZWQgYWZ0ZXIgaGVhcF92YWNfc2Nhbl9uZXh0 X2Jsb2NrKCkgd2FzIGNhbGxlZCwgc28gd2UgbXVzdCByZWNoZWNrCi0JICogd2l0aCBidWZmZXIg bG9jayBiZWZvcmUgY29uY2x1ZGluZyB0aGF0IHRoZSBWTSBpcyBjb3JydXB0LgorCSAqIHBhZ2Ut bGV2ZWwgYml0IGlzIGNsZWFyLiAgSG93ZXZlciwgaXQncyBwb3NzaWJsZSB0aGF0IGluIHZhY3V1 bSB0aGUgYml0CisJICogZ290IGNsZWFyZWQgYWZ0ZXIgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2Nr KCkgd2FzIGNhbGxlZCwgc28gd2UgbXVzdAorCSAqIHJlY2hlY2sgd2l0aCBidWZmZXIgbG9jayBi ZWZvcmUgY29uY2x1ZGluZyB0aGF0IHRoZSBWTSBpcyBjb3JydXB0LgogCSAqCiAJICogQ2FsbGVy cyB3aGljaCBkaWQgbm90IGNoZWNrIHRoZSB2aXNpYmlsaXR5IG1hcCBhbmQgZGV0ZXJtaW5lCiAJ ICogYmxrX2tub3duX2F2IHdpbGwgbm90IGJlIGVsaWdpYmxlIGZvciB0aGlzLCBob3dldmVyIHRo ZSBjb3N0IG9mCiAJICogcG90ZW50aWFsbHkgbmVlZGluZyB0byByZWFkIHRoZSB2aXNpYmlsaXR5 IG1hcCBmb3IgcGFnZXMgdGhhdCBhcmUgbm90Ci0JICogYWxsLXZpc2libGUgaXMgdG9vIGhpZ2gg dG8ganVzdGlmeSBnZW5lcmFsaXppbmcgdGhlIGNoZWNrLgorCSAqIGFsbC12aXNpYmxlIGlzIHRv byBoaWdoIHRvIGp1c3RpZnkgZ2VuZXJhbGl6aW5nIHRoZSBjaGVjay4gQSBmdXR1cmUKKwkgKiB2 YWN1dW0gd2lsbCBoYXZlIHRvIHRha2UgY2FyZSBvZiBmaXhpbmcgdGhlIGNvcnJ1cHRpb24uCiAJ ICovCiAJZWxzZSBpZiAoYmxrX2tub3duX2F2ICYmICFQYWdlSXNBbGxWaXNpYmxlKGhlYXBfcGFn ZSkgJiYKIAkJCSB2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMocmVsYXRpb24sIGhlYXBfYmxrLCAm dm1idWZmZXIpICE9IDApCkBAIC0xMTIyLDYgKzExNTksNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5k X2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCSAqLwogCWRvX3NldF92bSA9IGhl YXBfcGFnZV93aWxsX3NldF92bShwYXJhbXMtPnJlbGF0aW9uLAogCQkJCQkJCQkJICBibG9ja25v LCBidWZmZXIsIHZtYnVmZmVyLCBwYXJhbXMtPmJsa19rbm93bl9hdiwKKwkJCQkJCQkJCSAgcGFy YW1zLT5yZWFzb24sIGRvX3BydW5lLCBkb19mcmVlemUsCiAJCQkJCQkJCQkgICZwcnN0YXRlLCAm bmV3X3ZtYml0cyk7CiAKIAkvKgpAQCAtMTE5MywxNSArMTIzMSwxOCBAQCBoZWFwX3BhZ2VfcHJ1 bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJb2xkX3ZtYml0cyA9 IHZpc2liaWxpdHltYXBfc2V0KGJsb2Nrbm8sCiAJCQkJCQkJCQkJICAgdm1idWZmZXIsIG5ld192 bWJpdHMsCiAJCQkJCQkJCQkJICAgcGFyYW1zLT5yZWxhdGlvbi0+cmRfbG9jYXRvcik7Ci0JCQlB c3NlcnQob2xkX3ZtYml0cyAhPSBuZXdfdm1iaXRzKTsKIAkJfQogCiAJCU1hcmtCdWZmZXJEaXJ0 eShidWZmZXIpOwogCiAJCS8qCi0JCSAqIEVtaXQgYSBXQUwgWExPR19IRUFQMl9QUlVORSogcmVj b3JkIHNob3dpbmcgd2hhdCB3ZSBkaWQKKwkJICogRW1pdCBhIFdBTCBYTE9HX0hFQVAyX1BSVU5F KiByZWNvcmQgc2hvd2luZyB3aGF0IHdlIGRpZC4gSWYgd2Ugd2VyZQorCQkgKiBvbmx5IHBsYW5u aW5nIHRvIHVwZGF0ZSB0aGUgVk0sIGFuZCBpdCB0dXJucyBvdXQgdGhhdCBpdCB3YXMKKwkJICog YWxyZWFkeSBzZXQsIHRoZXJlIGlzIG5vIG5lZWQgdG8gZW1pdCBXQUwuIEFzIHN1Y2gsIHdlIG11 c3QgY2hlY2sKKwkJICogYWdhaW4gdGhhdCB0aGVyZSBpcyBzb21lIGNoYW5nZSB0byBlbWl0IFdB TCBmb3IuCiAJCSAqLwotCQlpZiAoUmVsYXRpb25OZWVkc1dBTChwYXJhbXMtPnJlbGF0aW9uKSkK KwkJaWYgKFJlbGF0aW9uTmVlZHNXQUwocGFyYW1zLT5yZWxhdGlvbikgJiYKKwkJCShkb19wcnVu ZSB8fCBkb19mcmVlemUgfHwgKGRvX3NldF92bSAmJiBvbGRfdm1iaXRzICE9IG5ld192bWJpdHMp KSkKIAkJewogCQkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShwYXJhbXMtPnJlbGF0aW9uLCBi dWZmZXIsCiAJCQkJCQkJCQkgIGRvX3NldF92bSA/IHZtYnVmZmVyIDogSW52YWxpZEJ1ZmZlciwK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwYW0uaAppbmRleCA0ODBhMWJkNjU0Zi4uODk1Mzg2NTI1NjYgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVh cGFtLmgKQEAgLTk1LDYgKzk1LDEzIEBAIHR5cGVkZWYgc3RydWN0IEhlYXBTY2FuRGVzY0RhdGEK IAkgKi8KIAlQYXJhbGxlbEJsb2NrVGFibGVTY2FuV29ya2VyRGF0YSAqcnNfcGFyYWxsZWx3b3Jr ZXJkYXRhOwogCisJLyoKKwkgKiBGb3Igc2VxdWVudGlhbCBzY2FucyBhbmQgYml0bWFwIGhlYXAg c2NhbnMuIElmIHRoZSByZWxhdGlvbiBpcyBub3QKKwkgKiBiZWluZyBtb2RpZmllZCwgb24tYWNj ZXNzIHBydW5pbmcgbWF5IHJlYWQgaW4gdGhlIGN1cnJlbnQgaGVhcCBwYWdlJ3MKKwkgKiBjb3Jy ZXNwb25kaW5nIFZNIGJsb2NrIHRvIHRoaXMgYnVmZmVyLgorCSAqLworCUJ1ZmZlcgkJcnNfdm1i dWZmZXI7CisKIAkvKiB0aGVzZSBmaWVsZHMgb25seSB1c2VkIGluIHBhZ2UtYXQtYS10aW1lIG1v ZGUgYW5kIGZvciBiaXRtYXAgc2NhbnMgKi8KIAl1aW50MzIJCXJzX2NpbmRleDsJCS8qIGN1cnJl bnQgdHVwbGUncyBpbmRleCBpbiB2aXN0dXBsZXMgKi8KIAl1aW50MzIJCXJzX250dXBsZXM7CQkv KiBudW1iZXIgb2YgdmlzaWJsZSB0dXBsZXMgb24gcGFnZSAqLwpAQCAtMTE3LDggKzEyNCwxOCBA QCB0eXBlZGVmIHN0cnVjdCBJbmRleEZldGNoSGVhcERhdGEKIHsKIAlJbmRleEZldGNoVGFibGVE YXRhIHhzX2Jhc2U7CS8qIEFNIGluZGVwZW5kZW50IHBhcnQgb2YgdGhlIGRlc2NyaXB0b3IgKi8K IAotCUJ1ZmZlcgkJeHNfY2J1ZjsJCS8qIGN1cnJlbnQgaGVhcCBidWZmZXIgaW4gc2NhbiwgaWYg YW55ICovCi0JLyogTkI6IGlmIHhzX2NidWYgaXMgbm90IEludmFsaWRCdWZmZXIsIHdlIGhvbGQg YSBwaW4gb24gdGhhdCBidWZmZXIgKi8KKwkvKgorCSAqIEN1cnJlbnQgaGVhcCBidWZmZXIgaW4g c2NhbiwgaWYgYW55LiBOQjogaWYgeHNfY2J1ZiBpcyBub3QKKwkgKiBJbnZhbGlkQnVmZmVyLCB3 ZSBob2xkIGEgcGluIG9uIHRoYXQgYnVmZmVyLgorCSAqLworCUJ1ZmZlcgkJeHNfY2J1ZjsKKwor CS8qCisJICogRm9yIGluZGV4IHNjYW5zIHRoYXQgZG8gbm90IG1vZGlmeSB0aGUgdW5kZXJseWlu ZyBoZWFwIHRhYmxlLCBvbi1hY2Nlc3MKKwkgKiBwcnVuaW5nIG1heSByZWFkIGluIHRoZSBjdXJy ZW50IGhlYXAgcGFnZSdzIGNvcnJlc3BvbmRpbmcgVk0gYmxvY2sgdG8KKwkgKiB0aGlzIGJ1ZmZl ci4KKwkgKi8KKwlCdWZmZXIJCXhzX3ZtYnVmZmVyOwogCiAJLyoKIAkgKiBTb21lIG9wdGltaXph dGlvbnMgY2FuIG9ubHkgYmUgcGVyZm9ybWVkIGlmIHRoZSBxdWVyeSBkb2VzIG5vdCBtb2RpZnkK QEAgLTQyNSw3ICs0NDIsOCBAQCBleHRlcm4gVHJhbnNhY3Rpb25JZCBoZWFwX2luZGV4X2RlbGV0 ZV90dXBsZXMoUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJCQkgIFRNX0luZGV4RGVsZXRlT3AgKmRl bHN0YXRlKTsKIAogLyogaW4gaGVhcC9wcnVuZWhlYXAuYyAqLwotZXh0ZXJuIHZvaWQgaGVhcF9w YWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlcik7CitleHRlcm4g dm9pZCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVy LAorCQkJCQkJCQlCdWZmZXIgKnZtYnVmZmVyKTsKIGV4dGVybiB2b2lkIGhlYXBfcGFnZV9wcnVu ZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCQkJCQkJCQkgICBQcnVu ZUZyZWV6ZVJlc3VsdCAqcHJlc3VsdCwKIAkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqb2ZmX2xv YywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9k ZWNvZGluZy5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNv ZGluZy5wbAppbmRleCBlYmUyZmFlMTc4OS4uYmRkOWYwYTYyY2QgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbAorKysgYi9zcmMv dGVzdC9yZWNvdmVyeS90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwKQEAgLTI5Niw2 ICsyOTYsNyBAQCB3YWxfbGV2ZWwgPSAnbG9naWNhbCcKIG1heF9yZXBsaWNhdGlvbl9zbG90cyA9 IDQKIG1heF93YWxfc2VuZGVycyA9IDQKIGF1dG92YWN1dW0gPSBvZmYKK2hvdF9zdGFuZGJ5X2Zl ZWRiYWNrID0gb24KIH0pOwogJG5vZGVfcHJpbWFyeS0+ZHVtcF9pbmZvOwogJG5vZGVfcHJpbWFy eS0+c3RhcnQ7CkBAIC03NDgsNyArNzQ5LDcgQEAgY2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJy KCRoYW5kbGUsCiAkbG9nc3RhcnQgPSAtcyAkbm9kZV9zdGFuZGJ5LT5sb2dmaWxlOwogCiByZWFj dGl2ZV9zbG90c19jaGFuZ2VfaGZzX2FuZF93YWl0X2Zvcl94bWlucygnc2hhcmVkX3Jvd19yZW1v dmFsXycsCi0JJ25vX2NvbmZsaWN0XycsIDAsIDEpOworCSdub19jb25mbGljdF8nLCAxLCAwKTsK IAogIyBUaGlzIHNob3VsZCBub3QgdHJpZ2dlciBhIGNvbmZsaWN0CiB3YWl0X3VudGlsX3ZhY3V1 bV9jYW5fcmVtb3ZlKAotLSAKMi40My4wCgo= --000000000000b196150645a17d5e Content-Type: text/x-patch; charset="UTF-8"; name="v25-0014-Set-pd_prune_xid-on-insert.patch" Content-Disposition: attachment; filename="v25-0014-Set-pd_prune_xid-on-insert.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj0ndfqz12 RnJvbSA2MGJjYjIyYjdmOTY0ZmRmZWZmZDI4NWNhNWRhZTg0ZDY2Mzk4N2U1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE2OjEyOjU2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjUgMTQvMTRdIFNldCBwZF9wcnVuZV94aWQgb24gaW5zZXJ0Ck1JTUUtVmVyc2lvbjog MS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5z ZmVyLUVuY29kaW5nOiA4Yml0CgpOb3cgdGhhdCB2aXNpYmlsaXR5IG1hcCAoVk0pIHVwZGF0ZXMg Y2FuIG9jY3VyIGR1cmluZyByZWFkLW9ubHkgcXVlcmllcywKaXQgbWFrZXMgc2Vuc2UgdG8gYWxz byBzZXQgdGhlIHBhZ2XigJlzIHBkX3BydW5lX3hpZCBoaW50IGR1cmluZyBpbnNlcnRzLgpUaGlz IGVuYWJsZXMgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSB0byBydW4gYWZ0ZXIgYSBwYWdl IGlzCmZpbGxlZCB3aXRoIG5ld2x5IGluc2VydGVkIHR1cGxlcyB0aGUgZmlyc3QgdGltZSBpdCBp cyByZWFkLgoKVGhpcyBjaGFuZ2UgYWxzbyBhZGRyZXNzZXMgYSBsb25nLXN0YW5kaW5nIG5vdGUg aW4gaGVhcF9pbnNlcnQoKSBhbmQKaGVhcF9tdWx0aV9pbnNlcnQoKSwgd2hpY2ggb2JzZXJ2ZWQg dGhhdCBzZXR0aW5nIHBkX3BydW5lX3hpZCB3b3VsZApoZWxwIGNsZWFuIHVwIGFib3J0ZWQgaW5z ZXJ0aW9ucyBzb29uZXIuIFdpdGhvdXQgaXQsIHN1Y2ggdHVwbGVzIG1pZ2h0CmxpbmdlciB1bnRp bCBWQUNVVU0sIHdoZXJlYXMgbm93IHRoZXkgY2FuIGJlIHBydW5lZCBlYXJsaWVyLgoKU2V0dGlu ZyBwZF9wcnVuZV94aWQgb24gaW5zZXJ0IGNhbiBjYXVzZSBhIHBhZ2UgdG8gYmUgZGlydGllZCBh bmQKd3JpdHRlbiBvdXQgd2hlbiBpdCBwcmV2aW91c2x5IHdvdWxkIG5vdCBoYXZlIGJlZW4sIGFm ZmV0Y3RpbmcgdGhlCnJlcG9ydGVkIG51bWJlciBvZiBoaXRzIGluIHRoZSBpbmRleC1raWxsdHVw bGVzIGlzb2xhdGlvbiB0ZXN0LiBJdCBpcwp1bmNsZWFyIGlmIHRoaXMgaXMgYSBidWcgaW4gdGhl IHdheSBoaXRzIGFyZSB0cmFja2VkLCBhIGZhdWx0eSB0ZXN0CmV4cGVjdGF0aW9uLCBvciBpZiBz aW1wbHkgdXBkYXRpbmcgdGhlIHRlc3QncyBleHBlY3RlZCBvdXRwdXQgaXMKc3VmZmljaWVudCBy ZW1lZGlhdGlvbi4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAg ICAgICAgfCAyNSArKysrKysrKysrKysrLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1feGxvZy5jICAgICAgICAgfCAxNSArKysrKysrKysrLQogLi4uL21vZHVsZXMvaW5kZXgv ZXhwZWN0ZWQva2lsbHR1cGxlcy5vdXQgICAgIHwgIDYgKystLS0KIDMgZmlsZXMgY2hhbmdlZCwg MzQgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0u YwppbmRleCBkZWI2NGUxOWFlOC4uZWU5NWRmOTE5YzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBh bS5jCkBAIC0yMTE5LDYgKzIxMTksNyBAQCBoZWFwX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwg SGVhcFR1cGxlIHR1cCwgQ29tbWFuZElkIGNpZCwKIAlUcmFuc2FjdGlvbklkIHhpZCA9IEdldEN1 cnJlbnRUcmFuc2FjdGlvbklkKCk7CiAJSGVhcFR1cGxlCWhlYXB0dXA7CiAJQnVmZmVyCQlidWZm ZXI7CisJUGFnZQkJcGFnZTsKIAlCdWZmZXIJCXZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKIAli b29sCQlhbGxfdmlzaWJsZV9jbGVhcmVkID0gZmFsc2U7CiAKQEAgLTIxNzgsMTUgKzIxNzksMTkg QEAgaGVhcF9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXAsIENvbW1hbmRJ ZCBjaWQsCiAJfQogCiAJLyoKLQkgKiBYWFggU2hvdWxkIHdlIHNldCBQYWdlU2V0UHJ1bmFibGUg b24gdGhpcyBwYWdlID8KKwkgKiBTZXQgcGRfcHJ1bmVfeGlkIHRvIHRyaWdnZXIgaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUoKSBvbmNlIHRoZSBwYWdlCisJICogaXMgZnVsbCBzbyB0aGF0IHdl IGNhbiBzZXQgdGhlIHBhZ2UgYWxsLXZpc2libGUgaW4gdGhlIFZNLgogCSAqCi0JICogVGhlIGlu c2VydGluZyB0cmFuc2FjdGlvbiBtYXkgZXZlbnR1YWxseSBhYm9ydCB0aHVzIG1ha2luZyB0aGlz IHR1cGxlCi0JICogREVBRCBhbmQgaGVuY2UgYXZhaWxhYmxlIGZvciBwcnVuaW5nLiBUaG91Z2gg d2UgZG9uJ3Qgd2FudCB0byBvcHRpbWl6ZQotCSAqIGZvciBhYm9ydHMsIGlmIG5vIG90aGVyIHR1 cGxlIGluIHRoaXMgcGFnZSBpcyBVUERBVEVkL0RFTEVURWQsIHRoZQotCSAqIGFib3J0ZWQgdHVw bGUgd2lsbCBuZXZlciBiZSBwcnVuZWQgdW50aWwgbmV4dCB2YWN1dW0gaXMgdHJpZ2dlcmVkLgor CSAqIFNldHRpbmcgcGRfcHJ1bmVfeGlkIGlzIGFsc28gaGFuZHkgaWYgdGhlIGluc2VydGluZyB0 cmFuc2FjdGlvbgorCSAqIGV2ZW50dWFsbHkgYWJvcnRzIG1ha2luZyB0aGlzIHR1cGxlIERFQUQg YW5kIGhlbmNlIGF2YWlsYWJsZSBmb3IKKwkgKiBwcnVuaW5nLiBJZiBubyBvdGhlciB0dXBsZSBp biB0aGlzIHBhZ2UgaXMgVVBEQVRFZC9ERUxFVEVkLCB0aGUgYWJvcnRlZAorCSAqIHR1cGxlIHdv dWxkIG5ldmVyIG90aGVyd2lzZSBiZSBwcnVuZWQgdW50aWwgbmV4dCB2YWN1dW0gaXMgdHJpZ2dl cmVkLgogCSAqCi0JICogSWYgeW91IGRvIGFkZCBQYWdlU2V0UHJ1bmFibGUgaGVyZSwgYWRkIGl0 IGluIGhlYXBfeGxvZ19pbnNlcnQgdG9vLgorCSAqIERvbid0IHNldCBpdCBpZiB3ZSBhcmUgaW4g Ym9vdHN0cmFwIG1vZGUsIHRob3VnaC4KIAkgKi8KKwlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZm ZXIpOworCWlmIChUcmFuc2FjdGlvbklkSXNOb3JtYWwoeGlkKSkKKwkJUGFnZVNldFBydW5hYmxl KHBhZ2UsIHhpZCk7CiAKIAlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKIApAQCAtMjE5Niw3ICsy MjAxLDYgQEAgaGVhcF9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXAsIENv bW1hbmRJZCBjaWQsCiAJCXhsX2hlYXBfaW5zZXJ0IHhscmVjOwogCQl4bF9oZWFwX2hlYWRlciB4 bGhkcjsKIAkJWExvZ1JlY1B0cglyZWNwdHI7Ci0JCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdl KGJ1ZmZlcik7CiAJCXVpbnQ4CQlpbmZvID0gWExPR19IRUFQX0lOU0VSVDsKIAkJaW50CQkJYnVm ZmxhZ3MgPSAwOwogCkBAIC0yNTYwLDggKzI1NjQsMTMgQEAgaGVhcF9tdWx0aV9pbnNlcnQoUmVs YXRpb24gcmVsYXRpb24sIFR1cGxlVGFibGVTbG90ICoqc2xvdHMsIGludCBudHVwbGVzLAogCQl9 CiAKIAkJLyoKLQkJICogWFhYIFNob3VsZCB3ZSBzZXQgUGFnZVNldFBydW5hYmxlIG9uIHRoaXMg cGFnZSA/IFNlZSBoZWFwX2luc2VydCgpCisJCSAqIFNldCBwZF9wcnVuZV94aWQuIFNlZSBoZWFw X2luc2VydCgpIGZvciBtb3JlIG9uIHdoeSB3ZSBkbyB0aGlzIHdoZW4KKwkJICogaW5zZXJ0aW5n IHR1cGxlcy4gVGhpcyBvbmx5IG1ha2VzIHNlbnNlIGlmIHdlIGFyZW4ndCBhbHJlYWR5CisJCSAq IHNldHRpbmcgdGhlIHBhZ2UgZnJvemVuIGluIHRoZSBWTS4gV2UgYWxzbyBkb24ndCBzZXQgaXQg aW4KKwkJICogYm9vdHN0cmFwIG1vZGUuCiAJCSAqLworCQlpZiAoIWFsbF9mcm96ZW5fc2V0ICYm IFRyYW5zYWN0aW9uSWRJc05vcm1hbCh4aWQpKQorCQkJUGFnZVNldFBydW5hYmxlKHBhZ2UsIHhp ZCk7CiAKIAkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1feGxvZy5jCmluZGV4IGI2NjczNmVhMjgyLi41YzhkYzI3MThjZSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCkBAIC00NDcsNiArNDQ3LDEyIEBAIGhlYXBfeGxvZ19p bnNlcnQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAkJZnJlZXNwYWNlID0gUGFnZUdldEhl YXBGcmVlU3BhY2UocGFnZSk7IC8qIG5lZWRlZCB0byB1cGRhdGUgRlNNIGJlbG93ICovCiAKKwkJ LyoKKwkJICogU2V0IHRoZSBwYWdlIHBydW5hYmxlIHRvIHRyaWdnZXIgb24tYWNjZXNzIHBydW5p bmcgbGF0ZXIgd2hpY2ggbWF5CisJCSAqIHNldCB0aGUgcGFnZSBhbGwtdmlzaWJsZSBpbiB0aGUg Vk0uCisJCSAqLworCQlQYWdlU2V0UHJ1bmFibGUocGFnZSwgWExvZ1JlY0dldFhpZChyZWNvcmQp KTsKKwogCQlQYWdlU2V0TFNOKHBhZ2UsIGxzbik7CiAKIAkJaWYgKHhscmVjLT5mbGFncyAmIFhM SF9JTlNFUlRfQUxMX1ZJU0lCTEVfQ0xFQVJFRCkKQEAgLTU5Niw5ICs2MDIsMTYgQEAgaGVhcF94 bG9nX211bHRpX2luc2VydChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJaWYgKHhscmVjLT5m bGFncyAmIFhMSF9JTlNFUlRfQUxMX1ZJU0lCTEVfQ0xFQVJFRCkKIAkJCVBhZ2VDbGVhckFsbFZp c2libGUocGFnZSk7CiAKLQkJLyogWExIX0lOU0VSVF9BTExfRlJPWkVOX1NFVCBpbXBsaWVzIHRo YXQgYWxsIHR1cGxlcyBhcmUgdmlzaWJsZSAqLworCQkvKgorCQkgKiBYTEhfSU5TRVJUX0FMTF9G Uk9aRU5fU0VUIGltcGxpZXMgdGhhdCBhbGwgdHVwbGVzIGFyZSB2aXNpYmxlLiBJZgorCQkgKiB3 ZSBhcmUgbm90IHNldHRpbmcgdGhlIHBhZ2UgZnJvemVuLCB0aGVuIHNldCB0aGUgcGFnZSdzIHBy dW5hYmxlCisJCSAqIGhpbnQgc28gdGhhdCB3ZSB0cmlnZ2VyIG9uLWFjY2VzcyBwcnVuaW5nIGxh dGVyIHdoaWNoIG1heSBzZXQgdGhlCisJCSAqIHBhZ2UgYWxsLXZpc2libGUgaW4gdGhlIFZNLgor CQkgKi8KIAkJaWYgKHhscmVjLT5mbGFncyAmIFhMSF9JTlNFUlRfQUxMX0ZST1pFTl9TRVQpCiAJ CQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKKwkJZWxzZQorCQkJUGFnZVNldFBydW5hYmxlKHBh Z2UsIFhMb2dSZWNHZXRYaWQocmVjb3JkKSk7CiAKIAkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7 CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmRleC9leHBlY3RlZC9raWxsdHVw bGVzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5kZXgvZXhwZWN0ZWQva2lsbHR1cGxlcy5vdXQK aW5kZXggYmU3ZGRkNzU2ZWYuLmIyOWYyNDM0YjAwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1 bGVzL2luZGV4L2V4cGVjdGVkL2tpbGx0dXBsZXMub3V0CisrKyBiL3NyYy90ZXN0L21vZHVsZXMv aW5kZXgvZXhwZWN0ZWQva2lsbHR1cGxlcy5vdXQKQEAgLTU0LDcgKzU0LDcgQEAgc3RlcCBmbHVz aDogU0VMRUNUIEZST00gcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBzdGVwIHJlc3VsdDog U0VMRUNUIGhlYXBfYmxrc19yZWFkICsgaGVhcF9ibGtzX2hpdCAtIGNvdW50ZXIuaGVhcF9hY2Nl c3NlcyBBUyBuZXdfaGVhcF9hY2Nlc3NlcyBGUk9NIGNvdW50ZXIsIHBnX3N0YXRpb19hbGxfdGFi bGVzIFdIRVJFIHJlbG5hbWUgPSAna2lsbF9wcmlvcl90dXBsZSc7CiBuZXdfaGVhcF9hY2Nlc3Nl cwogLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAgICAxCisgICAgICAgICAgICAgICAg MgogKDEgcm93KQogCiBzdGVwIG1lYXN1cmU6IFVQREFURSBjb3VudGVyIFNFVCBoZWFwX2FjY2Vz c2VzID0gKFNFTEVDVCBoZWFwX2Jsa3NfcmVhZCArIGhlYXBfYmxrc19oaXQgRlJPTSBwZ19zdGF0 aW9fYWxsX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ2tpbGxfcHJpb3JfdHVwbGUnKTsKQEAgLTEz MCw3ICsxMzAsNyBAQCBzdGVwIGZsdXNoOiBTRUxFQ1QgRlJPTSBwZ19zdGF0X2ZvcmNlX25leHRf Zmx1c2goKTsKIHN0ZXAgcmVzdWx0OiBTRUxFQ1QgaGVhcF9ibGtzX3JlYWQgKyBoZWFwX2Jsa3Nf aGl0IC0gY291bnRlci5oZWFwX2FjY2Vzc2VzIEFTIG5ld19oZWFwX2FjY2Vzc2VzIEZST00gY291 bnRlciwgcGdfc3RhdGlvX2FsbF90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICdraWxsX3ByaW9yX3R1 cGxlJzsKIG5ld19oZWFwX2FjY2Vzc2VzCiAtLS0tLS0tLS0tLS0tLS0tLQotICAgICAgICAgICAg ICAgIDEKKyAgICAgICAgICAgICAgICAyCiAoMSByb3cpCiAKIHN0ZXAgbWVhc3VyZTogVVBEQVRF IGNvdW50ZXIgU0VUIGhlYXBfYWNjZXNzZXMgPSAoU0VMRUNUIGhlYXBfYmxrc19yZWFkICsgaGVh cF9ibGtzX2hpdCBGUk9NIHBnX3N0YXRpb19hbGxfdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAna2ls bF9wcmlvcl90dXBsZScpOwpAQCAtMjgzLDcgKzI4Myw3IEBAIHN0ZXAgZmx1c2g6IFNFTEVDVCBG Uk9NIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwogc3RlcCByZXN1bHQ6IFNFTEVDVCBoZWFw X2Jsa3NfcmVhZCArIGhlYXBfYmxrc19oaXQgLSBjb3VudGVyLmhlYXBfYWNjZXNzZXMgQVMgbmV3 X2hlYXBfYWNjZXNzZXMgRlJPTSBjb3VudGVyLCBwZ19zdGF0aW9fYWxsX3RhYmxlcyBXSEVSRSBy ZWxuYW1lID0gJ2tpbGxfcHJpb3JfdHVwbGUnOwogbmV3X2hlYXBfYWNjZXNzZXMKIC0tLS0tLS0t LS0tLS0tLS0tCi0gICAgICAgICAgICAgICAgMQorICAgICAgICAgICAgICAgIDIKICgxIHJvdykK IAogc3RlcCBtZWFzdXJlOiBVUERBVEUgY291bnRlciBTRVQgaGVhcF9hY2Nlc3NlcyA9IChTRUxF Q1QgaGVhcF9ibGtzX3JlYWQgKyBoZWFwX2Jsa3NfaGl0IEZST00gcGdfc3RhdGlvX2FsbF90YWJs ZXMgV0hFUkUgcmVsbmFtZSA9ICdraWxsX3ByaW9yX3R1cGxlJyk7Ci0tIAoyLjQzLjAKCg== --000000000000b196150645a17d5e--