Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rUbgH-00Bwfs-RU for pgsql-hackers@arkaria.postgresql.org; Tue, 30 Jan 2024 00:08:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rUbgD-001Q7w-KC for pgsql-hackers@arkaria.postgresql.org; Tue, 30 Jan 2024 00:08:45 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rUbgC-001Q7o-Vs for pgsql-hackers@lists.postgresql.org; Tue, 30 Jan 2024 00:08:45 +0000 Received: from lahtoruutu.iki.fi ([185.185.170.37]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rUbg7-004QQU-BQ for pgsql-hackers@postgresql.org; Tue, 30 Jan 2024 00:08:44 +0000 Received: from [192.168.1.115] (dsl-hkibng22-54f8db-125.dhcp.inet.fi [84.248.219.125]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: hlinnaka) by lahtoruutu.iki.fi (Postfix) with ESMTPSA id 4TP59d2m1Gz49PsS; Tue, 30 Jan 2024 02:08:37 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1706573317; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=RUZz0GOrpSXjMgeT38V0RAo21VxQpvUw+HeTkgUCiO4=; b=uW+uZgjuJQxztJAktOObkUiemzBGnkqdlulB78i8G3Ihe6vcTPRHS4VZsYW5nAhBrN3WH6 Tz6qZZ+ySNYqaUs2JhgUqJ3gotO7j4r6xdXGsdFmZBiTX5pXqJWMEhJIVy3BjMCJ+exxSg PLiCm4Q+5bL1lc28UaJHlzSyS2e/UdZdp2VgU+NnMG2cgWMEYw9ggL5Efi8dWWccv9DJyN 60tI5JBIhFDomfA8O5EgFeqM53ta5hxiQ2lu0zfQDED9qnBmzu+vTVZzRWD6ie81x7X9Cr 0NB7eyYcWK3EcTqs4bszEh5dJPeem/0J3GeJwFjm3pTt9pmOQY8uhPGWF8ixZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1706573317; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=RUZz0GOrpSXjMgeT38V0RAo21VxQpvUw+HeTkgUCiO4=; b=l/5l8SqMAGcGN9Q6PE31+UrQLoDp/VizG7kYC6lD2OI94lucCozZg0M6JzxcQduB3+YH0M cA5T1U7+LQk9/iA/3jfn/ejV2kcPKrAHlN7stDgLJhmOVr6jighn0uA0nBhu3/cH6s1un/ xzu0w/SJO73IqcwjrfBgixYitia1YSOxkC75gaUPYnU/1j61Po9W90rTMks4z09DsYOlMy /TAVFiTtlQ32yjGgvQmAiLOLA+OHB+ghRAgQWriAhYQKgDQqK1GwwEu9XyQ9JsDk56LZdl VrutpXzwVEDShdOCV809kQbxuntZy0XJlqX2CdB9wSm8m62ynuDfkfQn0IMoQQ== ARC-Seal: i=1; s=lahtoruutu; d=iki.fi; t=1706573317; a=rsa-sha256; cv=none; b=NX5gB+ZdTgWwK2ksXC39XhCGBxuhkySMtkJWgjLGk0kDLjurFWGT7PmIoDe1S9/L0E1gdD HVCrvMpNCAt3gLo4hocTv93haVV4ot4L963KwlFEVPAjuIdC+pX3LyJTN9GO5o/K/apLbC NNP4B9o+7tRIOAvTjuqibwcCXRm5ddmCbYlcVj8bun2dP2ui0XX40ew174eL5PPiEY/2xk MEwRAYJlMbJwbm/9q+5e4NeseEdfS+YHrHw4Af3D+97F4Gqa/sXNai4sFk67wB2KGgSPtI 7VgXW6ZWNdvbzx8j5la5C+aE1HoIcfJFWczedtPlskuCGWH+L5IoUz3uxTNyTw== ARC-Authentication-Results: i=1; ORIGINATING; auth=pass smtp.auth=hlinnaka smtp.mailfrom=hlinnaka@iki.fi Content-Type: multipart/mixed; boundary="------------RUX0UwSvsUmik3v5mDKrFt0g" Message-ID: <606a62d6-321c-4967-92c1-2d4e20a2c136@iki.fi> Date: Tue, 30 Jan 2024 02:08:36 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Refactoring backend fork+exec code Content-Language: en-US To: reid.thompson@crunchydata.com, Andres Freund Cc: Tristan Partin , pgsql-hackers , Thomas Munro References: <7a59b073-5b5b-151e-7ed3-8b01ff7ce9ef@iki.fi> <20230710225043.svl7fqxecwshwc7a@awork3.anarazel.de> <119551e6-60f6-49b2-ae04-a382a89f900c@iki.fi> <20231130202648.7k6agmuizdilufnv@awork3.anarazel.de> <59527c9b-c3f7-4d0c-a3f1-00d0ed5cc186@iki.fi> <20240122210740.7vq5fd4woixpwx3f@awork3.anarazel.de> <8171f1aa-496f-46a6-afc3-c46fe7a9b407@iki.fi> <20240123195009.44wtutga24p5sh3s@awork3.anarazel.de> <08eff756-beeb-4a11-9eb5-d45b6af38998@iki.fi> <5997ff317a5827496537580078bcd19f4441f8d2.camel@crunchydata.com> From: Heikki Linnakangas In-Reply-To: <5997ff317a5827496537580078bcd19f4441f8d2.camel@crunchydata.com> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------RUX0UwSvsUmik3v5mDKrFt0g Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 29/01/2024 17:54, reid.thompson@crunchydata.com wrote: > On Thu, 2024-01-25 at 01:51 +0200, Heikki Linnakangas wrote: >> >> And here we go. BackendID is now a 1-based index directly into the >> PGPROC array. > > Would it be worthwhile to also note in this comment FIRST_AUX_PROC's > and IsAuxProcess()'s dependency on B_ARCHIVER and it's location in the > enum table? Yeah, that might be in order. Although looking closer, it's only used in IsAuxProcess, which is only used in one sanity check in AuxProcessMain(). And even that gets refactored away by the later patches in this thread. So on second thoughts, I'll just remove it altogether. I spent some more time on the 'lastBackend' optimization in sinvaladt.c. I realized that it became very useless with these patches, because aux processes are allocated pgprocno's after all the slots for regular backends. There are always aux processes running, so lastBackend would always have a value close to the max anyway. I replaced that with a dense 'pgprocnos' array that keeps track of the exact slots that are in use. I'm not 100% sure this is worth the effort; does any real world workload send shared invalidations so frequently that this matters? In any case, this should avoid the regression if such a workload exists. New patch set attached. I think these are ready to be committed, but would appreciate a final review. -- Heikki Linnakangas Neon (https://neon.tech) --------------RUX0UwSvsUmik3v5mDKrFt0g Content-Type: text/x-patch; charset=UTF-8; name="v8-0001-Remove-superfluous-pgprocno-field-from-PGPROC.patch" Content-Disposition: attachment; filename*0="v8-0001-Remove-superfluous-pgprocno-field-from-PGPROC.patch" Content-Transfer-Encoding: base64 RnJvbSA1NGYyMjIzMWJiMjU0MGZjNTk1N2MxNDAwNTk1NjE2MWU2ZmM5ZGFjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwgMjQgSmFuIDIwMjQgMjM6MTU6NTUgKzAyMDAK U3ViamVjdDogW1BBVENIIHY4IDEvNV0gUmVtb3ZlIHN1cGVyZmx1b3VzICdwZ3Byb2Nubycg ZmllbGQgZnJvbSBQR1BST0MKCkl0IHdhcyBhbHdheXMganVzdCB0aGUgaW5kZXggb2YgdGhl IFBHUFJPQyBlbnRyeSBmcm9tIHRoZSBiZWdpbm5pbmcgb2YKdGhlIHByb2MgYXJyYXkuIElu dHJvZHVjZSBhIG1hY3JvIHRvIGNvbXB1dGUgaXQgZnJvbSB0aGUgcG9pbnRlcgppbnN0ZWFk LgoKUmV2aWV3ZWQtYnk6IFhYWApEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3Fs Lm9yZy9tZXNzYWdlLWlkLzgxNzFmMWFhLTQ5NmYtNDZhNi1hZmMzLWM0NmZlN2E5YjQwNyU0 MGlraS5maQotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2Nsb2cuYyAgICAgICAg ICAgICB8ICA0ICsrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMg ICAgICAgICB8IDExICsrKysrLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9nLmMgICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dy aXRlci5jICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdh cmNoLmMgICAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dh bHN1bW1hcml6ZXIuYyAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZm ZXIvYnVmbWdyLmMgICAgICAgICAgIHwgIDYgKysrLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9wcm9jYXJyYXkuYyAgICAgICAgICAgfCAgNiArKystLS0KIHNyYy9iYWNrZW5kL3N0 b3JhZ2UvbG1nci9jb25kaXRpb25fdmFyaWFibGUuYyB8IDEyICsrKysrKy0tLS0tLQogc3Jj L2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9jay5jICAgICAgICAgICAgIHwgIDYgKysrLS0t CiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMgICAgICAgICAgfCAgMiAr LQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyAgICAgICAgICAgICAgIHwgIDEg LQogc3JjL2luY2x1ZGUvc3RvcmFnZS9sb2NrLmggICAgICAgICAgICAgICAgICAgIHwgIDIg Ky0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oICAgICAgICAgICAgICAgICAgICB8ICA2 ICstLS0tLQogMTQgZmlsZXMgY2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5jCmluZGV4IGY2ZTdkYTdmZmM5 Li43NTUwMzA5YzI1YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v Y2xvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2Nsb2cuYwpAQCAtNDU4 LDcgKzQ1OCw3IEBAIFRyYW5zYWN0aW9uR3JvdXBVcGRhdGVYaWRTdGF0dXMoVHJhbnNhY3Rp b25JZCB4aWQsIFhpZFN0YXR1cyBzdGF0dXMsCiAJCSAqIGxlc3MgZWZmaWNpZW50bHkuCiAJ CSAqLwogCQlpZiAobmV4dGlkeCAhPSBJTlZBTElEX1BHUFJPQ05PICYmCi0JCQlQcm9jR2xv YmFsLT5hbGxQcm9jc1tuZXh0aWR4XS5jbG9nR3JvdXBNZW1iZXJQYWdlICE9IHByb2MtPmNs b2dHcm91cE1lbWJlclBhZ2UpCisJCQlHZXRQR1Byb2NCeU51bWJlcihuZXh0aWR4KS0+Y2xv Z0dyb3VwTWVtYmVyUGFnZSAhPSBwcm9jLT5jbG9nR3JvdXBNZW1iZXJQYWdlKQogCQl7CiAJ CQkvKgogCQkJICogRW5zdXJlIHRoYXQgdGhpcyBwcm9jIGlzIG5vdCBhIG1lbWJlciBvZiBh bnkgY2xvZyBncm91cCB0aGF0CkBAIC00NzMsNyArNDczLDcgQEAgVHJhbnNhY3Rpb25Hcm91 cFVwZGF0ZVhpZFN0YXR1cyhUcmFuc2FjdGlvbklkIHhpZCwgWGlkU3RhdHVzIHN0YXR1cywK IAogCQlpZiAocGdfYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfdTMyKCZwcm9jZ2xvYmFsLT5j bG9nR3JvdXBGaXJzdCwKIAkJCQkJCQkJCQkgICAmbmV4dGlkeCwKLQkJCQkJCQkJCQkgICAo dWludDMyKSBwcm9jLT5wZ3Byb2NubykpCisJCQkJCQkJCQkJICAgKHVpbnQzMikgR2V0TnVt YmVyRnJvbVBHUHJvYyhwcm9jKSkpCiAJCQlicmVhazsKIAl9CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS90d29waGFzZS5jCmluZGV4IDg0MjY0NThmN2Y1Li4yMzRjOGQwOGViYyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHdvcGhhc2UuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90d29waGFzZS5jCkBAIC0yODQsNyArMjg0 LDcgQEAgVHdvUGhhc2VTaG1lbUluaXQodm9pZCkKIAkJCVR3b1BoYXNlU3RhdGUtPmZyZWVH WGFjdHMgPSAmZ3hhY3RzW2ldOwogCiAJCQkvKiBhc3NvY2lhdGUgaXQgd2l0aCBhIFBHUFJP QyBhc3NpZ25lZCBieSBJbml0UHJvY0dsb2JhbCAqLwotCQkJZ3hhY3RzW2ldLnBncHJvY25v ID0gUHJlcGFyZWRYYWN0UHJvY3NbaV0ucGdwcm9jbm87CisJCQlneGFjdHNbaV0ucGdwcm9j bm8gPSBHZXROdW1iZXJGcm9tUEdQcm9jKCZQcmVwYXJlZFhhY3RQcm9jc1tpXSk7CiAKIAkJ CS8qCiAJCQkgKiBBc3NpZ24gYSB1bmlxdWUgSUQgZm9yIGVhY2ggZHVtbXkgcHJvYywgc28g dGhhdCB0aGUgcmFuZ2Ugb2YKQEAgLTQ2MSw3ICs0NjEsNiBAQCBNYXJrQXNQcmVwYXJpbmdH dXRzKEdsb2JhbFRyYW5zYWN0aW9uIGd4YWN0LCBUcmFuc2FjdGlvbklkIHhpZCwgY29uc3Qg Y2hhciAqZ2lkLAogCiAJLyogSW5pdGlhbGl6ZSB0aGUgUEdQUk9DIGVudHJ5ICovCiAJTWVt U2V0KHByb2MsIDAsIHNpemVvZihQR1BST0MpKTsKLQlwcm9jLT5wZ3Byb2NubyA9IGd4YWN0 LT5wZ3Byb2NubzsKIAlkbGlzdF9ub2RlX2luaXQoJnByb2MtPmxpbmtzKTsKIAlwcm9jLT53 YWl0U3RhdHVzID0gUFJPQ19XQUlUX1NUQVRVU19PSzsKIAlpZiAoTG9jYWxUcmFuc2FjdGlv bklkSXNWYWxpZChNeVByb2MtPmx4aWQpKQpAQCAtNzgwLDcgKzc3OSw3IEBAIHBnX3ByZXBh cmVkX3hhY3QoUEdfRlVOQ1RJT05fQVJHUykKIAl3aGlsZSAoc3RhdHVzLT5hcnJheSAhPSBO VUxMICYmIHN0YXR1cy0+Y3VycklkeCA8IHN0YXR1cy0+bmd4YWN0cykKIAl7CiAJCUdsb2Jh bFRyYW5zYWN0aW9uIGd4YWN0ID0gJnN0YXR1cy0+YXJyYXlbc3RhdHVzLT5jdXJySWR4Kytd OwotCQlQR1BST0MJICAgKnByb2MgPSAmUHJvY0dsb2JhbC0+YWxsUHJvY3NbZ3hhY3QtPnBn cHJvY25vXTsKKwkJUEdQUk9DCSAgICpwcm9jID0gR2V0UEdQcm9jQnlOdW1iZXIoZ3hhY3Qt PnBncHJvY25vKTsKIAkJRGF0dW0JCXZhbHVlc1s1XSA9IHswfTsKIAkJYm9vbAkJbnVsbHNb NV0gPSB7MH07CiAJCUhlYXBUdXBsZQl0dXBsZTsKQEAgLTkzNSw3ICs5MzQsNyBAQCBUd29Q aGFzZUdldER1bW15UHJvYyhUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBsb2NrX2hlbGQpCiB7 CiAJR2xvYmFsVHJhbnNhY3Rpb24gZ3hhY3QgPSBUd29QaGFzZUdldEdYYWN0KHhpZCwgbG9j a19oZWxkKTsKIAotCXJldHVybiAmUHJvY0dsb2JhbC0+YWxsUHJvY3NbZ3hhY3QtPnBncHJv Y25vXTsKKwlyZXR1cm4gR2V0UEdQcm9jQnlOdW1iZXIoZ3hhY3QtPnBncHJvY25vKTsKIH0K IAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTEwODAsNyArMTA3OSw3IEBAIHNhdmVfc3Rh dGVfZGF0YShjb25zdCB2b2lkICpkYXRhLCB1aW50MzIgbGVuKQogdm9pZAogU3RhcnRQcmVw YXJlKEdsb2JhbFRyYW5zYWN0aW9uIGd4YWN0KQogewotCVBHUFJPQwkgICAqcHJvYyA9ICZQ cm9jR2xvYmFsLT5hbGxQcm9jc1tneGFjdC0+cGdwcm9jbm9dOworCVBHUFJPQwkgICAqcHJv YyA9IEdldFBHUHJvY0J5TnVtYmVyKGd4YWN0LT5wZ3Byb2Nubyk7CiAJVHJhbnNhY3Rpb25J ZCB4aWQgPSBneGFjdC0+eGlkOwogCVR3b1BoYXNlRmlsZUhlYWRlciBoZHI7CiAJVHJhbnNh Y3Rpb25JZCAqY2hpbGRyZW47CkBAIC0xNTM5LDcgKzE1MzgsNyBAQCBGaW5pc2hQcmVwYXJl ZFRyYW5zYWN0aW9uKGNvbnN0IGNoYXIgKmdpZCwgYm9vbCBpc0NvbW1pdCkKIAkgKiB0cnkg dG8gY29tbWl0IHRoZSBzYW1lIEdJRCBhdCBvbmNlLgogCSAqLwogCWd4YWN0ID0gTG9ja0dY YWN0KGdpZCwgR2V0VXNlcklkKCkpOwotCXByb2MgPSAmUHJvY0dsb2JhbC0+YWxsUHJvY3Nb Z3hhY3QtPnBncHJvY25vXTsKKwlwcm9jID0gR2V0UEdQcm9jQnlOdW1iZXIoZ3hhY3QtPnBn cHJvY25vKTsKIAl4aWQgPSBneGFjdC0+eGlkOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3hsb2cuYwppbmRleCA0NzgzNzdjNGEyMy4uYmUzMGEyMzg4ZjUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94bG9nLmMKQEAgLTEzNzksNyArMTM3OSw3IEBAIFdBTEluc2VydExv Y2tBY3F1aXJlKHZvaWQpCiAJc3RhdGljIGludAlsb2NrVG9UcnkgPSAtMTsKIAogCWlmIChs b2NrVG9UcnkgPT0gLTEpCi0JCWxvY2tUb1RyeSA9IE15UHJvYy0+cGdwcm9jbm8gJSBOVU1f WExPR0lOU0VSVF9MT0NLUzsKKwkJbG9ja1RvVHJ5ID0gR2V0TnVtYmVyRnJvbVBHUHJvYyhN eVByb2MpICUgTlVNX1hMT0dJTlNFUlRfTE9DS1M7CiAJTXlMb2NrTm8gPSBsb2NrVG9Ucnk7 CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dyaXRlci5j IGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dyaXRlci5jCmluZGV4IGQ3ZDZjYzBjZDdi Li4wNjc3ZTA2MTIxNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dy aXRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3cml0ZXIuYwpAQCAtMzMx LDcgKzMzMSw3IEBAIEJhY2tncm91bmRXcml0ZXJNYWluKHZvaWQpCiAJCWlmIChyYyA9PSBX TF9USU1FT1VUICYmIGNhbl9oaWJlcm5hdGUgJiYgcHJldl9oaWJlcm5hdGUpCiAJCXsKIAkJ CS8qIEFzayBmb3Igbm90aWZpY2F0aW9uIGF0IG5leHQgYnVmZmVyIGFsbG9jYXRpb24gKi8K LQkJCVN0cmF0ZWd5Tm90aWZ5QmdXcml0ZXIoTXlQcm9jLT5wZ3Byb2Nubyk7CisJCQlTdHJh dGVneU5vdGlmeUJnV3JpdGVyKEdldE51bWJlckZyb21QR1Byb2MoTXlQcm9jKSk7CiAJCQkv KiBTbGVlcCAuLi4gKi8KIAkJCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKIAkJCQkJCQkg V0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3BnYXJjaC5jIGIvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9wZ2FyY2guYwppbmRleCA2NzY5M2IwNTgwNi4uOWJmZTRmYWUwNDYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdhcmNoLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYwpAQCAtMjQyLDcgKzI0Miw3IEBAIFBnQXJjaGl2 ZXJNYWluKHZvaWQpCiAJICogQWR2ZXJ0aXNlIG91ciBwZ3Byb2NubyBzbyB0aGF0IGJhY2tl bmRzIGNhbiB1c2Ugb3VyIGxhdGNoIHRvIHdha2UgdXMgdXAKIAkgKiB3aGlsZSB3ZSdyZSBz bGVlcGluZy4KIAkgKi8KLQlQZ0FyY2gtPnBncHJvY25vID0gTXlQcm9jLT5wZ3Byb2NubzsK KwlQZ0FyY2gtPnBncHJvY25vID0gR2V0TnVtYmVyRnJvbVBHUHJvYyhNeVByb2MpOwogCiAJ LyogQ3JlYXRlIHdvcmtzcGFjZSBmb3IgcGdhcmNoX3JlYWR5WGxvZygpICovCiAJYXJjaF9m aWxlcyA9IHBhbGxvYyhzaXplb2Yoc3RydWN0IGFyY2hfZmlsZXNfc3RhdGUpKTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jIGIvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmMKaW5kZXggOWI4ODNjMjFjYTQuLjE2 NWJkZDkzZmEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1h cml6ZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYwpA QCAtMjQ4LDcgKzI0OCw3IEBAIFdhbFN1bW1hcml6ZXJNYWluKHZvaWQpCiAJLyogQWR2ZXJ0 aXNlIG91cnNlbHZlcy4gKi8KIAlvbl9zaG1lbV9leGl0KFdhbFN1bW1hcml6ZXJTaHV0ZG93 biwgKERhdHVtKSAwKTsKIAlMV0xvY2tBY3F1aXJlKFdBTFN1bW1hcml6ZXJMb2NrLCBMV19F WENMVVNJVkUpOwotCVdhbFN1bW1hcml6ZXJDdGwtPnN1bW1hcml6ZXJfcGdwcm9jbm8gPSBN eVByb2MtPnBncHJvY25vOworCVdhbFN1bW1hcml6ZXJDdGwtPnN1bW1hcml6ZXJfcGdwcm9j bm8gPSBHZXROdW1iZXJGcm9tUEdQcm9jKE15UHJvYyk7CiAJTFdMb2NrUmVsZWFzZShXQUxT dW1tYXJpemVyTG9jayk7CiAKIAkvKiBDcmVhdGUgYW5kIHN3aXRjaCB0byBhIG1lbW9yeSBj b250ZXh0IHRoYXQgd2UgY2FuIHJlc2V0IG9uIGVycm9yLiAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2J1ZmZlci9idWZtZ3IuYwppbmRleCA3ZDYwMWJlZjZkZC4uZTE5ZDQzM2E4ZDMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCisrKyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCkBAIC00NzkyLDcgKzQ3OTIsNyBAQCBV bmxvY2tCdWZmZXJzKHZvaWQpCiAJCSAqIGdvdCBhIGNhbmNlbC9kaWUgaW50ZXJydXB0IGJl Zm9yZSBnZXR0aW5nIHRoZSBzaWduYWwuCiAJCSAqLwogCQlpZiAoKGJ1Zl9zdGF0ZSAmIEJN X1BJTl9DT1VOVF9XQUlURVIpICE9IDAgJiYKLQkJCWJ1Zi0+d2FpdF9iYWNrZW5kX3BncHJv Y25vID09IE15UHJvYy0+cGdwcm9jbm8pCisJCQlidWYtPndhaXRfYmFja2VuZF9wZ3Byb2Nu byA9PSBHZXROdW1iZXJGcm9tUEdQcm9jKE15UHJvYykpCiAJCQlidWZfc3RhdGUgJj0gfkJN X1BJTl9DT1VOVF9XQUlURVI7CiAKIAkJVW5sb2NrQnVmSGRyKGJ1ZiwgYnVmX3N0YXRlKTsK QEAgLTQ5NDIsNyArNDk0Miw3IEBAIExvY2tCdWZmZXJGb3JDbGVhbnVwKEJ1ZmZlciBidWZm ZXIpCiAJCQlMb2NrQnVmZmVyKGJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKIAkJCWVs b2coRVJST1IsICJtdWx0aXBsZSBiYWNrZW5kcyBhdHRlbXB0aW5nIHRvIHdhaXQgZm9yIHBp bmNvdW50IDEiKTsKIAkJfQotCQlidWZIZHItPndhaXRfYmFja2VuZF9wZ3Byb2NubyA9IE15 UHJvYy0+cGdwcm9jbm87CisJCWJ1Zkhkci0+d2FpdF9iYWNrZW5kX3BncHJvY25vID0gR2V0 TnVtYmVyRnJvbVBHUHJvYyhNeVByb2MpOwogCQlQaW5Db3VudFdhaXRCdWYgPSBidWZIZHI7 CiAJCWJ1Zl9zdGF0ZSB8PSBCTV9QSU5fQ09VTlRfV0FJVEVSOwogCQlVbmxvY2tCdWZIZHIo YnVmSGRyLCBidWZfc3RhdGUpOwpAQCAtNTAwNiw3ICs1MDA2LDcgQEAgTG9ja0J1ZmZlckZv ckNsZWFudXAoQnVmZmVyIGJ1ZmZlcikKIAkJICovCiAJCWJ1Zl9zdGF0ZSA9IExvY2tCdWZI ZHIoYnVmSGRyKTsKIAkJaWYgKChidWZfc3RhdGUgJiBCTV9QSU5fQ09VTlRfV0FJVEVSKSAh PSAwICYmCi0JCQlidWZIZHItPndhaXRfYmFja2VuZF9wZ3Byb2NubyA9PSBNeVByb2MtPnBn cHJvY25vKQorCQkJYnVmSGRyLT53YWl0X2JhY2tlbmRfcGdwcm9jbm8gPT0gR2V0TnVtYmVy RnJvbVBHUHJvYyhNeVByb2MpKQogCQkJYnVmX3N0YXRlICY9IH5CTV9QSU5fQ09VTlRfV0FJ VEVSOwogCQlVbmxvY2tCdWZIZHIoYnVmSGRyLCBidWZfc3RhdGUpOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvaXBjL3Byb2NhcnJheS5jCmluZGV4IGVlMmQ3Zjg1ODVhLi41YTMzZWI3ZjdmNyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKKysrIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKQEAgLTUwNSw3ICs1MDUsNyBA QCBQcm9jQXJyYXlBZGQoUEdQUk9DICpwcm9jKQogCQlBc3NlcnQoYWxsUHJvY3NbcHJvY25v XS5wZ3hhY3RvZmYgPT0gaW5kZXgpOwogCiAJCS8qIElmIHdlIGhhdmUgZm91bmQgb3VyIHJp Z2h0IHBvc2l0aW9uIGluIHRoZSBhcnJheSwgYnJlYWsgKi8KLQkJaWYgKGFycmF5UC0+cGdw cm9jbm9zW2luZGV4XSA+IHByb2MtPnBncHJvY25vKQorCQlpZiAoYXJyYXlQLT5wZ3Byb2Nu b3NbaW5kZXhdID4gR2V0TnVtYmVyRnJvbVBHUHJvYyhwcm9jKSkKIAkJCWJyZWFrOwogCX0K IApAQCAtNTIzLDcgKzUyMyw3IEBAIFByb2NBcnJheUFkZChQR1BST0MgKnByb2MpCiAJCQkm UHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3NbaW5kZXhdLAogCQkJbW92ZWNvdW50ICogc2l6ZW9m KCpQcm9jR2xvYmFsLT5zdGF0dXNGbGFncykpOwogCi0JYXJyYXlQLT5wZ3Byb2Nub3NbaW5k ZXhdID0gcHJvYy0+cGdwcm9jbm87CisJYXJyYXlQLT5wZ3Byb2Nub3NbaW5kZXhdID0gR2V0 TnVtYmVyRnJvbVBHUHJvYyhwcm9jKTsKIAlwcm9jLT5wZ3hhY3RvZmYgPSBpbmRleDsKIAlQ cm9jR2xvYmFsLT54aWRzW2luZGV4XSA9IHByb2MtPnhpZDsKIAlQcm9jR2xvYmFsLT5zdWJ4 aWRTdGF0ZXNbaW5kZXhdID0gcHJvYy0+c3VieGlkU3RhdHVzOwpAQCAtODA4LDcgKzgwOCw3 IEBAIFByb2NBcnJheUdyb3VwQ2xlYXJYaWQoUEdQUk9DICpwcm9jLCBUcmFuc2FjdGlvbklk IGxhdGVzdFhpZCkKIAogCQlpZiAocGdfYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfdTMyKCZw cm9jZ2xvYmFsLT5wcm9jQXJyYXlHcm91cEZpcnN0LAogCQkJCQkJCQkJCSAgICZuZXh0aWR4 LAotCQkJCQkJCQkJCSAgICh1aW50MzIpIHByb2MtPnBncHJvY25vKSkKKwkJCQkJCQkJCQkg ICAodWludDMyKSBHZXROdW1iZXJGcm9tUEdQcm9jKHByb2MpKSkKIAkJCWJyZWFrOwogCX0K IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2NvbmRpdGlvbl92YXJp YWJsZS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2NvbmRpdGlvbl92YXJpYWJsZS5j CmluZGV4IGUyZDZkNjg1MjIwLi5kNGE1MGM3MGVhNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9sbWdyL2NvbmRpdGlvbl92YXJpYWJsZS5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvbG1nci9jb25kaXRpb25fdmFyaWFibGUuYwpAQCAtNTcsNyArNTcsNyBAQCBD b25kaXRpb25WYXJpYWJsZUluaXQoQ29uZGl0aW9uVmFyaWFibGUgKmN2KQogdm9pZAogQ29u ZGl0aW9uVmFyaWFibGVQcmVwYXJlVG9TbGVlcChDb25kaXRpb25WYXJpYWJsZSAqY3YpCiB7 Ci0JaW50CQkJcGdwcm9jbm8gPSBNeVByb2MtPnBncHJvY25vOworCWludAkJCXBncHJvY25v ID0gR2V0TnVtYmVyRnJvbVBHUHJvYyhNeVByb2MpOwogCiAJLyoKIAkgKiBJZiBzb21lIG90 aGVyIHNsZWVwIGlzIGFscmVhZHkgcHJlcGFyZWQsIGNhbmNlbCBpdDsgdGhpcyBpcyBuZWNl c3NhcnkKQEAgLTE4MSwxMCArMTgxLDEwIEBAIENvbmRpdGlvblZhcmlhYmxlVGltZWRTbGVl cChDb25kaXRpb25WYXJpYWJsZSAqY3YsIGxvbmcgdGltZW91dCwKIAkJICogZ3VhcmFudGVl IG5vdCB0byByZXR1cm4gc3B1cmlvdXNseSwgd2UnbGwgYXZvaWQgdGhpcyBvYnZpb3VzIGNh c2UuCiAJCSAqLwogCQlTcGluTG9ja0FjcXVpcmUoJmN2LT5tdXRleCk7Ci0JCWlmICghcHJv Y2xpc3RfY29udGFpbnMoJmN2LT53YWtldXAsIE15UHJvYy0+cGdwcm9jbm8sIGN2V2FpdExp bmspKQorCQlpZiAoIXByb2NsaXN0X2NvbnRhaW5zKCZjdi0+d2FrZXVwLCBHZXROdW1iZXJG cm9tUEdQcm9jKE15UHJvYyksIGN2V2FpdExpbmspKQogCQl7CiAJCQlkb25lID0gdHJ1ZTsK LQkJCXByb2NsaXN0X3B1c2hfdGFpbCgmY3YtPndha2V1cCwgTXlQcm9jLT5wZ3Byb2Nubywg Y3ZXYWl0TGluayk7CisJCQlwcm9jbGlzdF9wdXNoX3RhaWwoJmN2LT53YWtldXAsIEdldE51 bWJlckZyb21QR1Byb2MoTXlQcm9jKSwgY3ZXYWl0TGluayk7CiAJCX0KIAkJU3BpbkxvY2tS ZWxlYXNlKCZjdi0+bXV0ZXgpOwogCkBAIC0yMzYsOCArMjM2LDggQEAgQ29uZGl0aW9uVmFy aWFibGVDYW5jZWxTbGVlcCh2b2lkKQogCQlyZXR1cm4gZmFsc2U7CiAKIAlTcGluTG9ja0Fj cXVpcmUoJmN2LT5tdXRleCk7Ci0JaWYgKHByb2NsaXN0X2NvbnRhaW5zKCZjdi0+d2FrZXVw LCBNeVByb2MtPnBncHJvY25vLCBjdldhaXRMaW5rKSkKLQkJcHJvY2xpc3RfZGVsZXRlKCZj di0+d2FrZXVwLCBNeVByb2MtPnBncHJvY25vLCBjdldhaXRMaW5rKTsKKwlpZiAocHJvY2xp c3RfY29udGFpbnMoJmN2LT53YWtldXAsIEdldE51bWJlckZyb21QR1Byb2MoTXlQcm9jKSwg Y3ZXYWl0TGluaykpCisJCXByb2NsaXN0X2RlbGV0ZSgmY3YtPndha2V1cCwgR2V0TnVtYmVy RnJvbVBHUHJvYyhNeVByb2MpLCBjdldhaXRMaW5rKTsKIAllbHNlCiAJCXNpZ25hbGVkID0g dHJ1ZTsKIAlTcGluTG9ja1JlbGVhc2UoJmN2LT5tdXRleCk7CkBAIC0yODEsNyArMjgxLDcg QEAgQ29uZGl0aW9uVmFyaWFibGVTaWduYWwoQ29uZGl0aW9uVmFyaWFibGUgKmN2KQogdm9p ZAogQ29uZGl0aW9uVmFyaWFibGVCcm9hZGNhc3QoQ29uZGl0aW9uVmFyaWFibGUgKmN2KQog ewotCWludAkJCXBncHJvY25vID0gTXlQcm9jLT5wZ3Byb2NubzsKKwlpbnQJCQlwZ3Byb2Nu byA9IEdldE51bWJlckZyb21QR1Byb2MoTXlQcm9jKTsKIAlQR1BST0MJICAgKnByb2MgPSBO VUxMOwogCWJvb2wJCWhhdmVfc2VudGluZWwgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9jay5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9s bWdyL2x3bG9jay5jCmluZGV4IDk4ZmE2MDM1Y2M1Li45YjY5ZTlmMWUzMiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9jay5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvbG1nci9sd2xvY2suYwpAQCAtMTA1Niw5ICsxMDU2LDkgQEAgTFdMb2NrUXVl dWVTZWxmKExXTG9jayAqbG9jaywgTFdMb2NrTW9kZSBtb2RlKQogCiAJLyogTFdfV0FJVF9V TlRJTF9GUkVFIHdhaXRlcnMgYXJlIGFsd2F5cyBhdCB0aGUgZnJvbnQgb2YgdGhlIHF1ZXVl ICovCiAJaWYgKG1vZGUgPT0gTFdfV0FJVF9VTlRJTF9GUkVFKQotCQlwcm9jbGlzdF9wdXNo X2hlYWQoJmxvY2stPndhaXRlcnMsIE15UHJvYy0+cGdwcm9jbm8sIGx3V2FpdExpbmspOwor CQlwcm9jbGlzdF9wdXNoX2hlYWQoJmxvY2stPndhaXRlcnMsIEdldE51bWJlckZyb21QR1By b2MoTXlQcm9jKSwgbHdXYWl0TGluayk7CiAJZWxzZQotCQlwcm9jbGlzdF9wdXNoX3RhaWwo JmxvY2stPndhaXRlcnMsIE15UHJvYy0+cGdwcm9jbm8sIGx3V2FpdExpbmspOworCQlwcm9j bGlzdF9wdXNoX3RhaWwoJmxvY2stPndhaXRlcnMsIEdldE51bWJlckZyb21QR1Byb2MoTXlQ cm9jKSwgbHdXYWl0TGluayk7CiAKIAkvKiBDYW4gcmVsZWFzZSB0aGUgbXV0ZXggbm93ICov CiAJTFdMb2NrV2FpdExpc3RVbmxvY2sobG9jayk7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCBM V0xvY2tEZXF1ZXVlU2VsZihMV0xvY2sgKmxvY2spCiAJICovCiAJb25fd2FpdGxpc3QgPSBN eVByb2MtPmx3V2FpdGluZyA9PSBMV19XU19XQUlUSU5HOwogCWlmIChvbl93YWl0bGlzdCkK LQkJcHJvY2xpc3RfZGVsZXRlKCZsb2NrLT53YWl0ZXJzLCBNeVByb2MtPnBncHJvY25vLCBs d1dhaXRMaW5rKTsKKwkJcHJvY2xpc3RfZGVsZXRlKCZsb2NrLT53YWl0ZXJzLCBHZXROdW1i ZXJGcm9tUEdQcm9jKE15UHJvYyksIGx3V2FpdExpbmspOwogCiAJaWYgKHByb2NsaXN0X2lz X2VtcHR5KCZsb2NrLT53YWl0ZXJzKSAmJgogCQkocGdfYXRvbWljX3JlYWRfdTMyKCZsb2Nr LT5zdGF0ZSkgJiBMV19GTEFHX0hBU19XQUlURVJTKSAhPSAwKQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9sbWdyL3ByZWRpY2F0ZS5jCmluZGV4IGVlNWVhMTE3NWM3Li45M2U0MGFlMjJmMCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYwpAQCAtMTgxMSw3ICsxODExLDcg QEAgR2V0U2VyaWFsaXphYmxlVHJhbnNhY3Rpb25TbmFwc2hvdEludChTbmFwc2hvdCBzbmFw c2hvdCwKIAlzeGFjdC0+ZmluaXNoZWRCZWZvcmUgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsK IAlzeGFjdC0+eG1pbiA9IHNuYXBzaG90LT54bWluOwogCXN4YWN0LT5waWQgPSBNeVByb2NQ aWQ7Ci0Jc3hhY3QtPnBncHJvY25vID0gTXlQcm9jLT5wZ3Byb2NubzsKKwlzeGFjdC0+cGdw cm9jbm8gPSBHZXROdW1iZXJGcm9tUEdQcm9jKE15UHJvYyk7CiAJZGxpc3RfaW5pdCgmc3hh Y3QtPnByZWRpY2F0ZUxvY2tzKTsKIAlkbGlzdF9ub2RlX2luaXQoJnN4YWN0LT5maW5pc2hl ZExpbmspOwogCXN4YWN0LT5mbGFncyA9IDA7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvcHJvYy5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwpp bmRleCBlNTk3NzU0OGZlMi4uZTM1NTc2ODYzNGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvbG1nci9wcm9jLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3By b2MuYwpAQCAtMjI3LDcgKzIyNyw2IEBAIEluaXRQcm9jR2xvYmFsKHZvaWQpCiAJCQlJbml0 U2hhcmVkTGF0Y2goJihwcm9jLT5wcm9jTGF0Y2gpKTsKIAkJCUxXTG9ja0luaXRpYWxpemUo Jihwcm9jLT5mcEluZm9Mb2NrKSwgTFdUUkFOQ0hFX0xPQ0tfRkFTVFBBVEgpOwogCQl9Ci0J CXByb2MtPnBncHJvY25vID0gaTsKIAogCQkvKgogCQkgKiBOZXdseSBjcmVhdGVkIFBHUFJP Q3MgZm9yIG5vcm1hbCBiYWNrZW5kcywgYXV0b3ZhY3V1bSBhbmQgYmd3b3JrZXJzCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaCBiL3NyYy9pbmNsdWRlL3N0b3Jh Z2UvbG9jay5oCmluZGV4IDAwNjc5NjI0ZjdkLi5lZDYwNzFmMzI4NiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvc3RvcmFnZS9sb2NrLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9s b2NrLmgKQEAgLTU0MCw3ICs1NDAsNyBAQCB0eXBlZGVmIGVudW0KICAqIHVzZWQgZm9yIGEg Z2l2ZW4gbG9jayBncm91cCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBncm91cCBsZWFkZXIncyBw Z3Byb2Nuby4KICAqLwogI2RlZmluZSBMb2NrSGFzaFBhcnRpdGlvbkxvY2tCeVByb2MobGVh ZGVyX3BncHJvYykgXAotCUxvY2tIYXNoUGFydGl0aW9uTG9jaygobGVhZGVyX3BncHJvYykt PnBncHJvY25vKQorCUxvY2tIYXNoUGFydGl0aW9uTG9jayhHZXROdW1iZXJGcm9tUEdQcm9j KGxlYWRlcl9wZ3Byb2MpKQogCiAvKgogICogZnVuY3Rpb24gcHJvdG90eXBlcwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdl L3Byb2MuaAppbmRleCA0YmMyMjZlMzZjZC4uMzdjZjhiNDA2N2QgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJv Yy5oCkBAIC0xOTQsMTEgKzE5NCw2IEBAIHN0cnVjdCBQR1BST0MKIAlpbnQJCQlwZ3hhY3Rv ZmY7CQkvKiBvZmZzZXQgaW50byB2YXJpb3VzIFByb2NHbG9iYWwtPmFycmF5cyB3aXRoCiAJ CQkJCQkJCSAqIGRhdGEgbWlycm9yZWQgZnJvbSB0aGlzIFBHUFJPQyAqLwogCi0JaW50CQkJ cGdwcm9jbm87CQkvKiBOdW1iZXIgb2YgdGhpcyBQR1BST0MgaW4KLQkJCQkJCQkJICogUHJv Y0dsb2JhbC0+YWxsUHJvY3MgYXJyYXkuIFRoaXMgaXMgc2V0Ci0JCQkJCQkJCSAqIG9uY2Ug YnkgSW5pdFByb2NHbG9iYWwoKS4KLQkJCQkJCQkJICogUHJvY0dsb2JhbC0+YWxsUHJvY3Nb bl0ucGdwcm9jbm8gPT0gbiAqLwotCiAJLyogVGhlc2UgZmllbGRzIGFyZSB6ZXJvIHdoaWxl IGEgYmFja2VuZCBpcyBzdGlsbCBzdGFydGluZyB1cDogKi8KIAlCYWNrZW5kSWQJYmFja2Vu ZElkOwkJLyogVGhpcyBiYWNrZW5kJ3MgYmFja2VuZCBJRCAoaWYgYXNzaWduZWQpICovCiAJ T2lkCQkJZGF0YWJhc2VJZDsJCS8qIE9JRCBvZiBkYXRhYmFzZSB0aGlzIGJhY2tlbmQgaXMg dXNpbmcgKi8KQEAgLTQxMiw2ICs0MDcsNyBAQCBleHRlcm4gUEdETExJTVBPUlQgUEdQUk9D ICpQcmVwYXJlZFhhY3RQcm9jczsKIAogLyogQWNjZXNzb3IgZm9yIFBHUFJPQyBnaXZlbiBh IHBncHJvY25vLiAqLwogI2RlZmluZSBHZXRQR1Byb2NCeU51bWJlcihuKSAoJlByb2NHbG9i YWwtPmFsbFByb2NzWyhuKV0pCisjZGVmaW5lIEdldE51bWJlckZyb21QR1Byb2MocHJvYykg KChwcm9jKSAtICZQcm9jR2xvYmFsLT5hbGxQcm9jc1swXSkKIAogLyoKICAqIFdlIHNldCBh c2lkZSBzb21lIGV4dHJhIFBHUFJPQyBzdHJ1Y3R1cmVzIGZvciBhdXhpbGlhcnkgcHJvY2Vz c2VzLAotLSAKMi4zOS4yCgo= --------------RUX0UwSvsUmik3v5mDKrFt0g Content-Type: text/x-patch; charset=UTF-8; name="v8-0002-Redefine-backend-ID-to-be-an-index-into-the-proc-.patch" Content-Disposition: attachment; filename*0="v8-0002-Redefine-backend-ID-to-be-an-index-into-the-proc-.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA0ZTAxMjFlMDY0ODA0YjczZWY4YTVkYzEwYmUyN2I4NTk2OGVhMWFmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IE1vbiwgMjkgSmFuIDIwMjQgMjM6NTA6MzQgKzAyMDAK U3ViamVjdDogW1BBVENIIHY4IDIvNV0gUmVkZWZpbmUgYmFja2VuZCBJRCB0byBiZSBhbiBp bmRleCBpbnRvIHRoZSBwcm9jCiBhcnJheS4KClByZXZpb3VzbHksIGJhY2tlbmQgSUQgd2Fz IGFuIGluZGV4IGludG8gdGhlIFByb2NTdGF0ZSBhcnJheSwgaW4gdGhlCnNoYXJlZCBjYWNo ZSBpbnZhbGlkYXRpb24gbWFuYWdlciAoc2ludmFsYWR0LmMpLiBUaGUgZW50cnkgaW4gdGhl ClByb2NTdGF0ZSBhcnJheSB3YXMgcmVzZXJ2ZWQgYXQgYmFja2VuZCBzdGFydHVwIGJ5IHNj YW5uaW5nIHRoZSBhcnJheQpmb3IgYSBmcmVlIGVudHJ5LCBhbmQgdGhhdCB3YXMgYWxzbyB3 aGVuIHRoZSBiYWNrZW5kIGdvdCBpdHMgYmFja2VuZApJRC4gVGhpbmdzIGJlY29tZXMgc2xp Z2h0bHkgc2ltcGxlciBpZiB3ZSByZWRlZmluZSBiYWNrZW5kIElEIHRvIGJlCnRoZSBpbmRl eCBpbnRvIHRoZSBQR1BST0MgYXJyYXksIGFuZCBkaXJlY3RseSB1c2UgaXQgYWxzbyBhcyBh biBpbmRleAp0byB0aGUgUHJvY1N0YXRlIGFycmF5LiBUaGlzIHVzZXMgYSBsaXR0bGUgbW9y ZSBtZW1vcnksIGFzIHdlIHJlc2VydmUKYSBmZXcgZXh0cmEgc2xvdHMgaW4gdGhlIFByb2NT dGF0ZSBhcnJheSBmb3IgYXV4IHByb2Nlc3NlcyB0aGF0IGRvbid0Cm5lZWQgdGhlbSwgYnV0 IHRoZSBzaW1wbGljaXR5IGlzIHdvcnRoIGl0LgoKQXV4IHByb2Nlc3NlcyBub3cgYWxzbyBo YXZlIGEgYmFja2VuZCBJRC4gVGhpcyBzaW1wbGlmaWVzIHRoZQpyZXNlcnZhdGlvbiBvZiBC YWNrZW5kU3RhdHVzQXJyYXkgYW5kIFByb2NTaWduYWwgc2xvdHMuCgpZb3UgY2FuIG5vdyBj b252ZXJ0IGEgYmFja2VuZCBJRCBpbnRvIGFuIGluZGV4IGludG8gdGhlIFBHUFJPQyBhcnJh eQpzaW1wbHkgYnkgc3VidHJhY3RpbmcgMS4gV2Ugc3RpbGwgdXNlIDAtYmFzZWQgInBncHJv Y25vcyIgaW4gdmFyaW91cwpwbGFjZXMsIGZvciBpbmRleGVzIGludG8gdGhlIFBHUFJPQyBh cnJheSwgYnV0IHRoZSBvbmx5IGRpZmZlcmVuY2Ugbm93CmlzIHRoYXQgYmFja2VuZCBJRHMg c3RhcnQgYXQgMSB3aGlsZSBwZ3Byb2Nub3Mgc3RhcnQgYXQgMC4KCk9uZSBwb3RlbnRpYWwg ZG93bnNpZGUgb2YgdGhpcyBwYXRjaCBpcyB0aGF0IHRoZSBQcm9jU3RhdGUgYXJyYXkgbWln aHQKZ2V0IGxlc3MgZGVuc2VseSBwYWNrZWQsIGFzIHdlIHdlIGRvbid0IHRyeSBzbyBoYXJk IHRvIGFzc2lnbgpsb3ctbnVtYmVyZWQgYmFja2VuZCBJRCBhbnltb3JlLiBJZiBpdCdzIGxl c3MgZGVuc2VseSBwYWNrZWQsCmxhc3RCYWNrZW5kIHdpbGwgc3RheSBhdCBhIGhpZ2hlciB2 YWx1ZSwgYW5kIFNJSW5zZXJ0RGF0YUVudHJpZXMoKSBhbmQKU0lDbGVhbnVwUXVldWUoKSBu ZWVkIHRvIHNjYW4gb3ZlciBtb3JlIHVudXNlZCBlbnRyaWVzLiBJIHRoaW5rIHRoYXQncwpm aW5lLiBUaGV5IGFyZSBwZXJmb3JtYW5jZSBjcml0aWNhbCBlbm91Z2ggdG8gbWF0dGVyLCBh bmQgdGhlcmUgd2FzIG5vCmd1YXJhbnRlZSBvbiBkZW5zZSBwYWNraW5nIGJlZm9yZSBlaXRo ZXI6IElmIHlvdSBsYXVuY2hlZCBhIGxvdCBvZgpiYWNrZW5kcyBjb25jdXJyZW50bHksIGFu ZCBrZXB0IHRoZSBsYXN0IG9uZSBvcGVuLCBsYXN0QmFja2VuZCB3b3VsZAphbHNvIHN0YXkg YXQgYSBoaWdoIHZhbHVlLgoKQW5vdGhlciBwb3RlbnRpYWwgZG93bnNpZGUgb2Ygbm90IGFz c2lnbmluZyBsb3cgYmFja2VuZCBJRHMgYXMKYWdncmVzc2l2ZWx5IGlzIHRoYXQgeW91IG1p Z2h0IGVuZCB1cCB3aXRoIG1vcmUgcGdfdGVtcCBuYW1lc3BhY2VzLCBpZgptb3JlIGRpc3Rp bmN0IGJhY2tlbmQgSURzIGFyZSB1c2VkLiBJIHRoaW5rIHRoYXQncyBmaW5lLCBhbmQgdGhl cmUKaGFzbid0IGJlZW4gYW55IGd1YXJhbnRlZXMgb24gdGhhdCBlaXRoZXIuIEJ1dCBpZiB0 aG9zZSB0aGluZ3MgbWF0dGVyLAp3ZSBjb3VsZCB3b3JrIG9uIHRoZSBtYW5hZ2VtZW50IG9m IGZyZWUgUEdQUk9DIGVudHJpZXMgaW4gcHJvYy5jLCB0bwphc3NpZ24gUEdQUk9DIGVudHJp ZXMgYW5kIGhlbmNlIGJhY2tlbmQgSURzIGRpZmZlcmVudGx5LgoKUmV2aWV3ZWQtYnk6IFhY WApEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkLzgx NzFmMWFhLTQ5NmYtNDZhNi1hZmMzLWM0NmZlN2E5YjQwN0Bpa2kuZmkKLS0tCiBzcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS90d29waGFzZS5jICAgICAgIHwgIDI5ICstLS0KIHNyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYyAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9i YWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5jICAgICAgICAgfCAgMTIgKy0KIHNyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jICAgICAgICAgfCAgNjAgKysrKysrKy0K IHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyAgICAgICAgfCAgMjcgKyst LQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2ludmFsYWR0LmMgICAgICAgICB8IDE0NSAr KysrLS0tLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYyAg ICAgICAgICAgICB8ICAxNiArLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMg ICAgICAgICAgICAgfCAgMTQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L2JhY2tl bmRfc3RhdHVzLmMgfCAgNTIgKysrLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRm dW5jcy5jICAgICAgICAgICB8ICAxNCArLQogc3JjL2JhY2tlbmQvdXRpbHMvZXJyb3IvY3N2 bG9nLmMgICAgICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvdXRpbHMvZXJyb3IvZWxv Zy5jICAgICAgICAgICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQvdXRpbHMvZXJyb3IvanNv bmxvZy5jICAgICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0 aW5pdC5jICAgICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFw bWdyLmMgICAgICAgICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvbWlzY2FkbWluLmggICAg ICAgICAgICAgICAgICAgICB8ICAgMiAtCiBzcmMvaW5jbHVkZS9zdG9yYWdlL2JhY2tlbmRp ZC5oICAgICAgICAgICAgIHwgIDEyICstCiBzcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaCAg ICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaCAg ICAgICAgICAgICAgICAgIHwgIDEwICstCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NhcnJh eS5oICAgICAgICAgICAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25h bC5oICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc2ludmFsYWR0 LmggICAgICAgICAgICAgfCAgIDQgLQogMjMgZmlsZXMgY2hhbmdlZCwgMTczIGluc2VydGlv bnMoKyksIDI2NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS90d29waGFzZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHdv cGhhc2UuYwppbmRleCAyMzRjOGQwOGViYy4uMGI2ZGQzYjNjZjAgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vdHdvcGhhc2UuYwpAQCAtMTUxLDcgKzE1MSw2IEBAIHR5cGVkZWYg c3RydWN0IEdsb2JhbFRyYW5zYWN0aW9uRGF0YQogewogCUdsb2JhbFRyYW5zYWN0aW9uIG5l eHQ7CQkvKiBsaXN0IGxpbmsgZm9yIGZyZWUgbGlzdCAqLwogCWludAkJCXBncHJvY25vOwkJ LyogSUQgb2YgYXNzb2NpYXRlZCBkdW1teSBQR1BST0MgKi8KLQlCYWNrZW5kSWQJZHVtbXlC YWNrZW5kSWQ7IC8qIHNpbWlsYXIgdG8gYmFja2VuZCBpZCBmb3IgYmFja2VuZHMgKi8KIAlU aW1lc3RhbXBUeiBwcmVwYXJlZF9hdDsJLyogdGltZSBvZiBwcmVwYXJhdGlvbiAqLwogCiAJ LyoKQEAgLTI4NSwyMCArMjg0LDYgQEAgVHdvUGhhc2VTaG1lbUluaXQodm9pZCkKIAogCQkJ LyogYXNzb2NpYXRlIGl0IHdpdGggYSBQR1BST0MgYXNzaWduZWQgYnkgSW5pdFByb2NHbG9i YWwgKi8KIAkJCWd4YWN0c1tpXS5wZ3Byb2NubyA9IEdldE51bWJlckZyb21QR1Byb2MoJlBy ZXBhcmVkWGFjdFByb2NzW2ldKTsKLQotCQkJLyoKLQkJCSAqIEFzc2lnbiBhIHVuaXF1ZSBJ RCBmb3IgZWFjaCBkdW1teSBwcm9jLCBzbyB0aGF0IHRoZSByYW5nZSBvZgotCQkJICogZHVt bXkgYmFja2VuZCBJRHMgaW1tZWRpYXRlbHkgZm9sbG93cyB0aGUgcmFuZ2Ugb2Ygbm9ybWFs Ci0JCQkgKiBiYWNrZW5kIElEcy4gV2UgZG9uJ3QgZGFyZSB0byBhc3NpZ24gYSByZWFsIGJh Y2tlbmQgSUQgdG8gZHVtbXkKLQkJCSAqIHByb2NzLCBiZWNhdXNlIHByZXBhcmVkIHRyYW5z YWN0aW9ucyBkb24ndCB0YWtlIHBhcnQgaW4gY2FjaGUKLQkJCSAqIGludmFsaWRhdGlvbiBs aWtlIGEgcmVhbCBiYWNrZW5kIElEIHdvdWxkIGltcGx5LCBidXQgaGF2aW5nIGEKLQkJCSAq IHVuaXF1ZSBJRCBmb3IgdGhlbSBpcyBuZXZlcnRoZWxlc3MgaGFuZHkuIFRoaXMgYXJyYW5n ZW1lbnQKLQkJCSAqIGFsbG93cyB5b3UgdG8gYWxsb2NhdGUgYW4gYXJyYXkgb2Ygc2l6ZSAo TWF4QmFja2VuZHMgKwotCQkJICogbWF4X3ByZXBhcmVkX3hhY3RzICsgMSksIGFuZCBoYXZl IGEgc2xvdCBmb3IgZXZlcnkgYmFja2VuZCBhbmQKLQkJCSAqIHByZXBhcmVkIHRyYW5zYWN0 aW9uLiBDdXJyZW50bHkgbXVsdGl4YWN0LmMgdXNlcyB0aGF0Ci0JCQkgKiB0ZWNobmlxdWUu Ci0JCQkgKi8KLQkJCWd4YWN0c1tpXS5kdW1teUJhY2tlbmRJZCA9IE1heEJhY2tlbmRzICsg MSArIGk7CiAJCX0KIAl9CiAJZWxzZQpAQCAtNDU3LDcgKzQ0Miw3IEBAIE1hcmtBc1ByZXBh cmluZ0d1dHMoR2xvYmFsVHJhbnNhY3Rpb24gZ3hhY3QsIFRyYW5zYWN0aW9uSWQgeGlkLCBj b25zdCBjaGFyICpnaWQsCiAJQXNzZXJ0KExXTG9ja0hlbGRCeU1lSW5Nb2RlKFR3b1BoYXNl U3RhdGVMb2NrLCBMV19FWENMVVNJVkUpKTsKIAogCUFzc2VydChneGFjdCAhPSBOVUxMKTsK LQlwcm9jID0gJlByb2NHbG9iYWwtPmFsbFByb2NzW2d4YWN0LT5wZ3Byb2Nub107CisJcHJv YyA9IEdldFBHUHJvY0J5TnVtYmVyKGd4YWN0LT5wZ3Byb2Nubyk7CiAKIAkvKiBJbml0aWFs aXplIHRoZSBQR1BST0MgZW50cnkgKi8KIAlNZW1TZXQocHJvYywgMCwgc2l6ZW9mKFBHUFJP QykpOwpAQCAtNDY3LDE0ICs0NTIsMTIgQEAgTWFya0FzUHJlcGFyaW5nR3V0cyhHbG9iYWxU cmFuc2FjdGlvbiBneGFjdCwgVHJhbnNhY3Rpb25JZCB4aWQsIGNvbnN0IGNoYXIgKmdpZCwK IAl7CiAJCS8qIGNsb25lIFZYSUQsIGZvciBUd29QaGFzZUdldFhpZEJ5VmlydHVhbFhJRCgp IHRvIGZpbmQgKi8KIAkJcHJvYy0+bHhpZCA9IE15UHJvYy0+bHhpZDsKLQkJcHJvYy0+YmFj a2VuZElkID0gTXlCYWNrZW5kSWQ7CiAJfQogCWVsc2UKIAl7CiAJCUFzc2VydChBbVN0YXJ0 dXBQcm9jZXNzKCkgfHwgIUlzUG9zdG1hc3RlckVudmlyb25tZW50KTsKIAkJLyogR2V0TG9j a0NvbmZsaWN0cygpIHVzZXMgdGhpcyB0byBzcGVjaWZ5IGEgd2FpdCBvbiB0aGUgWElEICov CiAJCXByb2MtPmx4aWQgPSB4aWQ7Ci0JCXByb2MtPmJhY2tlbmRJZCA9IEludmFsaWRCYWNr ZW5kSWQ7CiAJfQogCXByb2MtPnhpZCA9IHhpZDsKIAlBc3NlcnQocHJvYy0+eG1pbiA9PSBJ bnZhbGlkVHJhbnNhY3Rpb25JZCk7CkBAIC01MjIsNyArNTA1LDcgQEAgc3RhdGljIHZvaWQK IEdYYWN0TG9hZFN1YnhhY3REYXRhKEdsb2JhbFRyYW5zYWN0aW9uIGd4YWN0LCBpbnQgbnN1 YnhhY3RzLAogCQkJCQkgVHJhbnNhY3Rpb25JZCAqY2hpbGRyZW4pCiB7Ci0JUEdQUk9DCSAg ICpwcm9jID0gJlByb2NHbG9iYWwtPmFsbFByb2NzW2d4YWN0LT5wZ3Byb2Nub107CisJUEdQ Uk9DCSAgICpwcm9jID0gR2V0UEdQcm9jQnlOdW1iZXIoZ3hhY3QtPnBncHJvY25vKTsKIAog CS8qIFdlIG5lZWQgbm8gZXh0cmEgbG9jayBzaW5jZSB0aGUgR1hBQ1QgaXNuJ3QgdmFsaWQg eWV0ICovCiAJaWYgKG5zdWJ4YWN0cyA+IFBHUFJPQ19NQVhfQ0FDSEVEX1NVQlhJRFMpCkBA IC01NTksNyArNTQyLDcgQEAgTWFya0FzUHJlcGFyZWQoR2xvYmFsVHJhbnNhY3Rpb24gZ3hh Y3QsIGJvb2wgbG9ja19oZWxkKQogCSAqIFB1dCBpdCBpbnRvIHRoZSBnbG9iYWwgUHJvY0Fy cmF5IHNvIFRyYW5zYWN0aW9uSWRJc0luUHJvZ3Jlc3MgY29uc2lkZXJzCiAJICogdGhlIFhJ RCBhcyBzdGlsbCBydW5uaW5nLgogCSAqLwotCVByb2NBcnJheUFkZCgmUHJvY0dsb2JhbC0+ YWxsUHJvY3NbZ3hhY3QtPnBncHJvY25vXSk7CisJUHJvY0FycmF5QWRkKEdldFBHUHJvY0J5 TnVtYmVyKGd4YWN0LT5wZ3Byb2NubykpOwogfQogCiAvKgpAQCAtNTgzLDcgKzU2Niw3IEBA IExvY2tHWGFjdChjb25zdCBjaGFyICpnaWQsIE9pZCB1c2VyKQogCWZvciAoaSA9IDA7IGkg PCBUd29QaGFzZVN0YXRlLT5udW1QcmVwWGFjdHM7IGkrKykKIAl7CiAJCUdsb2JhbFRyYW5z YWN0aW9uIGd4YWN0ID0gVHdvUGhhc2VTdGF0ZS0+cHJlcFhhY3RzW2ldOwotCQlQR1BST0MJ ICAgKnByb2MgPSAmUHJvY0dsb2JhbC0+YWxsUHJvY3NbZ3hhY3QtPnBncHJvY25vXTsKKwkJ UEdQUk9DCSAgICpwcm9jID0gR2V0UEdQcm9jQnlOdW1iZXIoZ3hhY3QtPnBncHJvY25vKTsK IAogCQkvKiBJZ25vcmUgbm90LXlldC12YWxpZCBHSURzICovCiAJCWlmICghZ3hhY3QtPnZh bGlkKQpAQCAtODg0LDcgKzg2Nyw3IEBAIFR3b1BoYXNlR2V0WGlkQnlWaXJ0dWFsWElEKFZp cnR1YWxUcmFuc2FjdGlvbklkIHZ4aWQsCiAKIAkJaWYgKCFneGFjdC0+dmFsaWQpCiAJCQlj b250aW51ZTsKLQkJcHJvYyA9ICZQcm9jR2xvYmFsLT5hbGxQcm9jc1tneGFjdC0+cGdwcm9j bm9dOworCQlwcm9jID0gR2V0UEdQcm9jQnlOdW1iZXIoZ3hhY3QtPnBncHJvY25vKTsKIAkJ R0VUX1ZYSURfRlJPTV9QR1BST0MocHJvY192eGlkLCAqcHJvYyk7CiAJCWlmIChWaXJ0dWFs VHJhbnNhY3Rpb25JZEVxdWFscyh2eGlkLCBwcm9jX3Z4aWQpKQogCQl7CkBAIC05MTksNyAr OTAyLDcgQEAgVHdvUGhhc2VHZXREdW1teUJhY2tlbmRJZChUcmFuc2FjdGlvbklkIHhpZCwg Ym9vbCBsb2NrX2hlbGQpCiB7CiAJR2xvYmFsVHJhbnNhY3Rpb24gZ3hhY3QgPSBUd29QaGFz ZUdldEdYYWN0KHhpZCwgbG9ja19oZWxkKTsKIAotCXJldHVybiBneGFjdC0+ZHVtbXlCYWNr ZW5kSWQ7CisJcmV0dXJuIGd4YWN0LT5wZ3Byb2NubyArIDE7CiB9CiAKIC8qCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94YWN0LmMKaW5kZXggNDY0ODU4MTE3ZTAuLjZjNWM2MTQ3ZjEzIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCkBAIC0yMDk3LDkgKzIwOTcsOCBAQCBT dGFydFRyYW5zYWN0aW9uKHZvaWQpCiAKIAkvKgogCSAqIEFkdmVydGlzZSBpdCBpbiB0aGUg cHJvYyBhcnJheS4gIFdlIGFzc3VtZSBhc3NpZ25tZW50IG9mCi0JICogbG9jYWxUcmFuc2Fj dGlvbklkIGlzIGF0b21pYywgYW5kIHRoZSBiYWNrZW5kSWQgc2hvdWxkIGJlIHNldCBhbHJl YWR5LgorCSAqIGxvY2FsVHJhbnNhY3Rpb25JZCBpcyBhdG9taWMuCiAJICovCi0JQXNzZXJ0 KE15UHJvYy0+YmFja2VuZElkID09IHZ4aWQuYmFja2VuZElkKTsKIAlNeVByb2MtPmx4aWQg PSB2eGlkLmxvY2FsVHJhbnNhY3Rpb25JZDsKIAogCVRSQUNFX1BPU1RHUkVTUUxfVFJBTlNB Q1RJT05fU1RBUlQodnhpZC5sb2NhbFRyYW5zYWN0aW9uSWQpOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFt ZXNwYWNlLmMKaW5kZXggYjYxMGFhNjI0MjMuLmU2ZWVhOTJhYmQ2IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jYXRhbG9nL25hbWVzcGFjZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvbmFtZXNwYWNlLmMKQEAgLTQ5LDcgKzQ5LDcgQEAKICNpbmNsdWRlICJwYXJzZXIvcGFy c2VfZnVuYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9sbWdyLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9zaW52YWxhZHQuaCIKKyNpbmNsdWRlICJz dG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgogI2luY2x1ZGUg InV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvY2F0Y2FjaGUuaCIKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5jIGIvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9hdXhwcm9jZXNzLmMKaW5kZXggYWI4NmU4MDJmMjEuLjM5MTcxZmVh MDZiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1eHByb2Nlc3MuYwor KysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1eHByb2Nlc3MuYwpAQCAtMTA3LDE3ICsx MDcsNyBAQCBBdXhpbGlhcnlQcm9jZXNzTWFpbihBdXhQcm9jVHlwZSBhdXh0eXBlKQogCiAJ QmFzZUluaXQoKTsKIAotCS8qCi0JICogQXNzaWduIHRoZSBQcm9jU2lnbmFsU2xvdCBmb3Ig YW4gYXV4aWxpYXJ5IHByb2Nlc3MuICBTaW5jZSBpdCBkb2Vzbid0Ci0JICogaGF2ZSBhIEJh Y2tlbmRJZCwgdGhlIHNsb3QgaXMgc3RhdGljYWxseSBhbGxvY2F0ZWQgYmFzZWQgb24gdGhl Ci0JICogYXV4aWxpYXJ5IHByb2Nlc3MgdHlwZSAoTXlBdXhQcm9jVHlwZSkuICBCYWNrZW5k cyB1c2Ugc2xvdHMgaW5kZXhlZCBpbgotCSAqIHRoZSByYW5nZSBmcm9tIDEgdG8gTWF4QmFj a2VuZHMgKGluY2x1c2l2ZSksIHNvIHdlIHVzZSBNYXhCYWNrZW5kcyArCi0JICogQXV4UHJv Y1R5cGUgKyAxIGFzIHRoZSBpbmRleCBvZiB0aGUgc2xvdCBmb3IgYW4gYXV4aWxpYXJ5IHBy b2Nlc3MuCi0JICoKLQkgKiBUaGlzIHdpbGwgbmVlZCByZXRoaW5raW5nIGlmIHdlIGV2ZXIg d2FudCBtb3JlIHRoYW4gb25lIG9mIGEgcGFydGljdWxhcgotCSAqIGF1eGlsaWFyeSBwcm9j ZXNzIHR5cGUuCi0JICovCi0JUHJvY1NpZ25hbEluaXQoTWF4QmFja2VuZHMgKyBNeUF1eFBy b2NUeXBlICsgMSk7CisJUHJvY1NpZ25hbEluaXQoKTsKIAogCS8qCiAJICogQXV4aWxpYXJ5 IHByb2Nlc3NlcyBkb24ndCBydW4gdHJhbnNhY3Rpb25zLCBidXQgdGhleSBtYXkgbmVlZCBh CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jCmluZGV4IDVhMzNlYjdmN2Y3Li5j ZDEyN2E1MzU3YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2Fy cmF5LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKQEAgLTI1 NDYsNyArMjU0Niw3IEBAIFByb2NBcnJheUluc3RhbGxJbXBvcnRlZFhtaW4oVHJhbnNhY3Rp b25JZCB4bWluLAogCQkJY29udGludWU7CiAKIAkJLyogV2UgYXJlIG9ubHkgaW50ZXJlc3Rl ZCBpbiB0aGUgc3BlY2lmaWMgdmlydHVhbCB0cmFuc2FjdGlvbi4gKi8KLQkJaWYgKHByb2Mt PmJhY2tlbmRJZCAhPSBzb3VyY2V2eGlkLT5iYWNrZW5kSWQpCisJCWlmIChHZXRCYWNrZW5k SWRGcm9tUEdQcm9jKHByb2MpICE9IHNvdXJjZXZ4aWQtPmJhY2tlbmRJZCkKIAkJCWNvbnRp bnVlOwogCQlpZiAocHJvYy0+bHhpZCAhPSBzb3VyY2V2eGlkLT5sb2NhbFRyYW5zYWN0aW9u SWQpCiAJCQljb250aW51ZTsKQEAgLTMwOTcsNiArMzA5Nyw2NCBAQCBIYXZlVmlydHVhbFhJ RHNEZWxheWluZ0Noa3B0KFZpcnR1YWxUcmFuc2FjdGlvbklkICp2eGlkcywgaW50IG52eGlk cywgaW50IHR5cGUpCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoKKyAqIEJhY2tlbmRJZEdl dFByb2MgLS0gZ2V0IGEgYmFja2VuZCdzIFBHUFJPQyBnaXZlbiBpdHMgYmFja2VuZCBJRAor ICoKKyAqIFRoZSByZXN1bHQgbWF5IGJlIG91dCBvZiBkYXRlIGFyYml0cmFyaWx5IHF1aWNr bHksIHNvIHRoZSBjYWxsZXIKKyAqIG11c3QgYmUgY2FyZWZ1bCBhYm91dCBob3cgdGhpcyBp bmZvcm1hdGlvbiBpcyB1c2VkLiAgTlVMTCBpcworICogcmV0dXJuZWQgaWYgdGhlIGJhY2tl bmQgaXMgbm90IGFjdGl2ZS4KKyAqLworUEdQUk9DICoKK0JhY2tlbmRJZEdldFByb2MoaW50 IGJhY2tlbmRJRCkKK3sKKwlQR1BST0MJICAgKnJlc3VsdDsKKworCWlmIChiYWNrZW5kSUQg PCAxIHx8IGJhY2tlbmRJRCA+IFByb2NHbG9iYWwtPmFsbFByb2NDb3VudCkKKwkJcmV0dXJu IE5VTEw7CisJcmVzdWx0ID0gR2V0UEdQcm9jQnlCYWNrZW5kSWQoYmFja2VuZElEKTsKKwor CWlmIChyZXN1bHQtPnBpZCA9PSAwKQorCQlyZXR1cm4gTlVMTDsKKworCXJldHVybiByZXN1 bHQ7Cit9CisKKy8qCisgKiBCYWNrZW5kSWRHZXRUcmFuc2FjdGlvbklkcyAtLSBnZXQgYSBi YWNrZW5kJ3MgdHJhbnNhY3Rpb24gc3RhdHVzCisgKgorICogR2V0IHRoZSB4aWQsIHhtaW4s IG5zdWJ4aWQgYW5kIG92ZXJmbG93IHN0YXR1cyBvZiB0aGUgYmFja2VuZC4gIFRoZQorICog cmVzdWx0IG1heSBiZSBvdXQgb2YgZGF0ZSBhcmJpdHJhcmlseSBxdWlja2x5LCBzbyB0aGUg Y2FsbGVyIG11c3QgYmUKKyAqIGNhcmVmdWwgYWJvdXQgaG93IHRoaXMgaW5mb3JtYXRpb24g aXMgdXNlZC4KKyAqLwordm9pZAorQmFja2VuZElkR2V0VHJhbnNhY3Rpb25JZHMoaW50IGJh Y2tlbmRJRCwgVHJhbnNhY3Rpb25JZCAqeGlkLAorCQkJCQkJICAgVHJhbnNhY3Rpb25JZCAq eG1pbiwgaW50ICpuc3VieGlkLCBib29sICpvdmVyZmxvd2VkKQoreworCVBHUFJPQwkgICAq cHJvYzsKKworCSp4aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwkqeG1pbiA9IEludmFs aWRUcmFuc2FjdGlvbklkOworCSpuc3VieGlkID0gMDsKKwkqb3ZlcmZsb3dlZCA9IGZhbHNl OworCisJaWYgKGJhY2tlbmRJRCA8IDEgfHwgYmFja2VuZElEID4gUHJvY0dsb2JhbC0+YWxs UHJvY0NvdW50KQorCQlyZXR1cm47CisJcHJvYyA9IEdldFBHUHJvY0J5QmFja2VuZElkKGJh Y2tlbmRJRCk7CisKKwkvKiBOZWVkIHRvIGxvY2sgb3V0IGFkZGl0aW9ucy9yZW1vdmFscyBv ZiBiYWNrZW5kcyAqLworCUxXTG9ja0FjcXVpcmUoUHJvY0FycmF5TG9jaywgTFdfU0hBUkVE KTsKKworCWlmIChwcm9jLT5waWQgIT0gMCkKKwl7CisJCSp4aWQgPSBwcm9jLT54aWQ7CisJ CSp4bWluID0gcHJvYy0+eG1pbjsKKwkJKm5zdWJ4aWQgPSBwcm9jLT5zdWJ4aWRTdGF0dXMu Y291bnQ7CisJCSpvdmVyZmxvd2VkID0gcHJvYy0+c3VieGlkU3RhdHVzLm92ZXJmbG93ZWQ7 CisJfQorCisJTFdMb2NrUmVsZWFzZShQcm9jQXJyYXlMb2NrKTsKK30KKwogLyoKICAqIEJh Y2tlbmRQaWRHZXRQcm9jIC0tIGdldCBhIGJhY2tlbmQncyBQR1BST0MgZ2l2ZW4gaXRzIFBJ RAogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwu YyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwppbmRleCBlODQ2MTll NWE1OC4uZDFkNWJmMGMxNTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3Byb2NzaWduYWwuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFs LmMKQEAgLTg3LDcgKzg3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QKICAqIHBvc3NpYmxlIGF1eGls aWFyeSBwcm9jZXNzIHR5cGUuICAoVGhpcyBzY2hlbWUgYXNzdW1lcyB0aGVyZSBpcyBub3QK ICAqIG1vcmUgdGhhbiBvbmUgb2YgYW55IGF1eGlsaWFyeSBwcm9jZXNzIHR5cGUgYXQgYSB0 aW1lLikKICAqLwotI2RlZmluZSBOdW1Qcm9jU2lnbmFsU2xvdHMJKE1heEJhY2tlbmRzICsg TlVNX0FVWFBST0NUWVBFUykKKyNkZWZpbmUgTnVtUHJvY1NpZ25hbFNsb3RzCShNYXhCYWNr ZW5kcyArIE5VTV9BVVhJTElBUllfUFJPQ1MpCiAKIC8qIENoZWNrIHdoZXRoZXIgdGhlIHJl bGV2YW50IHR5cGUgYml0IGlzIHNldCBpbiB0aGUgZmxhZ3MuICovCiAjZGVmaW5lIEJBUlJJ RVJfU0hPVUxEX0NIRUNLKGZsYWdzLCB0eXBlKSBcCkBAIC0xNTQsMjQgKzE1NCwyMyBAQCBQ cm9jU2lnbmFsU2htZW1Jbml0KHZvaWQpCiAvKgogICogUHJvY1NpZ25hbEluaXQKICAqCQlS ZWdpc3RlciB0aGUgY3VycmVudCBwcm9jZXNzIGluIHRoZSBQcm9jU2lnbmFsIGFycmF5Ci0g KgotICogVGhlIHBhc3NlZCBpbmRleCBzaG91bGQgYmUgbXkgQmFja2VuZElkIGlmIHRoZSBw cm9jZXNzIGhhcyBvbmUsCi0gKiBvciBNYXhCYWNrZW5kcyArIGF1eCBwcm9jZXNzIHR5cGUg aWYgbm90LgogICovCiB2b2lkCi1Qcm9jU2lnbmFsSW5pdChpbnQgcHNzX2lkeCkKK1Byb2NT aWduYWxJbml0KHZvaWQpCiB7CiAJUHJvY1NpZ25hbFNsb3QgKnNsb3Q7CiAJdWludDY0CQli YXJyaWVyX2dlbmVyYXRpb247CiAKLQlBc3NlcnQocHNzX2lkeCA+PSAxICYmIHBzc19pZHgg PD0gTnVtUHJvY1NpZ25hbFNsb3RzKTsKLQotCXNsb3QgPSAmUHJvY1NpZ25hbC0+cHNoX3Ns b3RbcHNzX2lkeCAtIDFdOworCWlmIChNeUJhY2tlbmRJZCA8PSAwKQorCQllbG9nKEVSUk9S LCAiTXlCYWNrZW5kSWQgbm90IHNldCIpOworCWlmIChNeUJhY2tlbmRJZCA+IE51bVByb2NT aWduYWxTbG90cykKKwkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgTXlCYWNrZW5kSWQgJWQg aW4gUHJvY1NpZ25hbEluaXQgKG1heCAlZCkiLCBNeUJhY2tlbmRJZCwgTnVtUHJvY1NpZ25h bFNsb3RzKTsKKwlzbG90ID0gJlByb2NTaWduYWwtPnBzaF9zbG90W015QmFja2VuZElkIC0g MV07CiAKIAkvKiBzYW5pdHkgY2hlY2sgKi8KIAlpZiAoc2xvdC0+cHNzX3BpZCAhPSAwKQog CQllbG9nKExPRywgInByb2Nlc3MgJWQgdGFraW5nIG92ZXIgUHJvY1NpZ25hbCBzbG90ICVk LCBidXQgaXQncyBub3QgZW1wdHkiLAotCQkJIE15UHJvY1BpZCwgcHNzX2lkeCk7CisJCQkg TXlQcm9jUGlkLCAoaW50KSAoc2xvdCAtIFByb2NTaWduYWwtPnBzaF9zbG90KSk7CiAKIAkv KiBDbGVhciBvdXQgYW55IGxlZnRvdmVyIHNpZ25hbCByZWFzb25zICovCiAJTWVtU2V0KHNs b3QtPnBzc19zaWduYWxGbGFncywgMCwgTlVNX1BST0NTSUdOQUxTICogc2l6ZW9mKHNpZ19h dG9taWNfdCkpOwpAQCAtMjAwLDcgKzE5OSw3IEBAIFByb2NTaWduYWxJbml0KGludCBwc3Nf aWR4KQogCU15UHJvY1NpZ25hbFNsb3QgPSBzbG90OwogCiAJLyogU2V0IHVwIHRvIHJlbGVh c2UgdGhlIHNsb3Qgb24gcHJvY2VzcyBleGl0ICovCi0Jb25fc2htZW1fZXhpdChDbGVhbnVw UHJvY1NpZ25hbFN0YXRlLCBJbnQzMkdldERhdHVtKHBzc19pZHgpKTsKKwlvbl9zaG1lbV9l eGl0KENsZWFudXBQcm9jU2lnbmFsU3RhdGUsIChEYXR1bSkgMCk7CiB9CiAKIC8qCkBAIC0y MTIsMTEgKzIxMSw3IEBAIFByb2NTaWduYWxJbml0KGludCBwc3NfaWR4KQogc3RhdGljIHZv aWQKIENsZWFudXBQcm9jU2lnbmFsU3RhdGUoaW50IHN0YXR1cywgRGF0dW0gYXJnKQogewot CWludAkJCXBzc19pZHggPSBEYXR1bUdldEludDMyKGFyZyk7Ci0JUHJvY1NpZ25hbFNsb3Qg KnNsb3Q7Ci0KLQlzbG90ID0gJlByb2NTaWduYWwtPnBzaF9zbG90W3Bzc19pZHggLSAxXTsK LQlBc3NlcnQoc2xvdCA9PSBNeVByb2NTaWduYWxTbG90KTsKKwlQcm9jU2lnbmFsU2xvdCAq c2xvdCA9IE15UHJvY1NpZ25hbFNsb3Q7CiAKIAkvKgogCSAqIENsZWFyIE15UHJvY1NpZ25h bFNsb3QsIHNvIHRoYXQgYSBTSUdVU1IxIHJlY2VpdmVkIGFmdGVyIHRoaXMgcG9pbnQKQEAg LTIzMyw3ICsyMjgsNyBAQCBDbGVhbnVwUHJvY1NpZ25hbFN0YXRlKGludCBzdGF0dXMsIERh dHVtIGFyZykKIAkJICogaW5maW5pdGUgbG9vcCB0cnlpbmcgdG8gZXhpdAogCQkgKi8KIAkJ ZWxvZyhMT0csICJwcm9jZXNzICVkIHJlbGVhc2luZyBQcm9jU2lnbmFsIHNsb3QgJWQsIGJ1 dCBpdCBjb250YWlucyAlZCIsCi0JCQkgTXlQcm9jUGlkLCBwc3NfaWR4LCAoaW50KSBzbG90 LT5wc3NfcGlkKTsKKwkJCSBNeVByb2NQaWQsIChpbnQpIChzbG90IC0gUHJvY1NpZ25hbC0+ cHNoX3Nsb3QpLCAoaW50KSBzbG90LT5wc3NfcGlkKTsKIAkJcmV0dXJuOwkJCQkJLyogWFhY IGJldHRlciB0byB6ZXJvIHRoZSBzbG90IGFueXdheT8gKi8KIAl9CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpbnZhbGFkdC5jIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvc2ludmFsYWR0LmMKaW5kZXggNzQ4YTc5MmE4NTQuLjgxMDU3MTdjNTc4IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWxhZHQuYworKysgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWxhZHQuYwpAQCAtMTM5LDcgKzEzOSw2IEBA IHR5cGVkZWYgc3RydWN0IFByb2NTdGF0ZQogewogCS8qIHByb2NQaWQgaXMgemVybyBpbiBh biBpbmFjdGl2ZSBQcm9jU3RhdGUgYXJyYXkgZW50cnkuICovCiAJcGlkX3QJCXByb2NQaWQ7 CQkvKiBQSUQgb2YgYmFja2VuZCwgZm9yIHNpZ25hbGluZyAqLwotCVBHUFJPQwkgICAqcHJv YzsJCQkvKiBQR1BST0Mgb2YgYmFja2VuZCAqLwogCS8qIG5leHRNc2dOdW0gaXMgbWVhbmlu Z2xlc3MgaWYgcHJvY1BpZCA9PSAwIG9yIHJlc2V0U3RhdGUgaXMgdHJ1ZS4gKi8KIAlpbnQJ CQluZXh0TXNnTnVtOwkJLyogbmV4dCBtZXNzYWdlIG51bWJlciB0byByZWFkICovCiAJYm9v bAkJcmVzZXRTdGF0ZTsJCS8qIGJhY2tlbmQgbmVlZHMgdG8gcmVzZXQgaXRzIHN0YXRlICov CkBAIC0xNzMsNyArMTcyLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgU0lTZWcKIAlpbnQJCQltYXhN c2dOdW07CQkvKiBuZXh0IG1lc3NhZ2UgbnVtYmVyIHRvIGJlIGFzc2lnbmVkICovCiAJaW50 CQkJbmV4dFRocmVzaG9sZDsJLyogIyBvZiBtZXNzYWdlcyB0byBjYWxsIFNJQ2xlYW51cFF1 ZXVlICovCiAJaW50CQkJbGFzdEJhY2tlbmQ7CS8qIGluZGV4IG9mIGxhc3QgYWN0aXZlIHBy b2NTdGF0ZSBlbnRyeSwgKzEgKi8KLQlpbnQJCQltYXhCYWNrZW5kczsJLyogc2l6ZSBvZiBw cm9jU3RhdGUgYXJyYXkgKi8KIAogCXNsb2NrX3QJCW1zZ251bUxvY2s7CQkvKiBzcGlubG9j ayBwcm90ZWN0aW5nIG1heE1zZ051bSAqLwogCkBAIC0xODMsMTEgKzE4MSwxOCBAQCB0eXBl ZGVmIHN0cnVjdCBTSVNlZwogCVNoYXJlZEludmFsaWRhdGlvbk1lc3NhZ2UgYnVmZmVyW01B WE5VTU1FU1NBR0VTXTsKIAogCS8qCi0JICogUGVyLWJhY2tlbmQgaW52YWxpZGF0aW9uIHN0 YXRlIGluZm8gKGhhcyBNYXhCYWNrZW5kcyBlbnRyaWVzKS4KKwkgKiBQZXItYmFja2VuZCBp bnZhbGlkYXRpb24gc3RhdGUgaW5mbyAoaGFzIE51bVByb2NTdGF0ZVNsb3RzIGVudHJpZXMp LgogCSAqLwogCVByb2NTdGF0ZQlwcm9jU3RhdGVbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsK IH0gU0lTZWc7CiAKKy8qCisgKiBXZSByZXNlcnZlIGEgc2xvdCBmb3IgZWFjaCBwb3NzaWJs ZSBCYWNrZW5kSWQsIHBsdXMgb25lIGZvciBlYWNoCisgKiBwb3NzaWJsZSBhdXhpbGlhcnkg cHJvY2VzcyB0eXBlLiAgKFRoaXMgc2NoZW1lIGFzc3VtZXMgdGhlcmUgaXMgbm90CisgKiBt b3JlIHRoYW4gb25lIG9mIGFueSBhdXhpbGlhcnkgcHJvY2VzcyB0eXBlIGF0IGEgdGltZS4p CisgKi8KKyNkZWZpbmUgTnVtUHJvY1N0YXRlU2xvdHMJKE1heEJhY2tlbmRzICsgTlVNX0FV WElMSUFSWV9QUk9DUykKKwogc3RhdGljIFNJU2VnICpzaG1JbnZhbEJ1ZmZlcjsJLyogcG9p bnRlciB0byB0aGUgc2hhcmVkIGludmFsIGJ1ZmZlciAqLwogCiAKQEAgLTIwNSwxNiArMjEw LDcgQEAgU0ludmFsU2htZW1TaXplKHZvaWQpCiAJU2l6ZQkJc2l6ZTsKIAogCXNpemUgPSBv ZmZzZXRvZihTSVNlZywgcHJvY1N0YXRlKTsKLQotCS8qCi0JICogSW4gSG90IFN0YW5kYnkg bW9kZSwgdGhlIHN0YXJ0dXAgcHJvY2VzcyByZXF1ZXN0cyBhIHByb2NTdGF0ZSBhcnJheQot CSAqIHNsb3QgdXNpbmcgSW5pdFJlY292ZXJ5VHJhbnNhY3Rpb25FbnZpcm9ubWVudCgpLiBF dmVuIHRob3VnaAotCSAqIE1heEJhY2tlbmRzIGRvZXNuJ3QgYWNjb3VudCBmb3IgdGhlIHN0 YXJ0dXAgcHJvY2VzcywgaXQgaXMgZ3VhcmFudGVlZAotCSAqIHRvIGdldCBhIGZyZWUgc2xv dC4gVGhpcyBpcyBiZWNhdXNlIHRoZSBhdXRvdmFjdXVtIGxhdW5jaGVyIGFuZCB3b3JrZXIK LQkgKiBwcm9jZXNzZXMsIHdoaWNoIGFyZSBpbmNsdWRlZCBpbiBNYXhCYWNrZW5kcywgYXJl IG5vdCBzdGFydGVkIGluIEhvdAotCSAqIFN0YW5kYnkgbW9kZS4KLQkgKi8KLQlzaXplID0g YWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoc2l6ZW9mKFByb2NTdGF0ZSksIE1heEJhY2tlbmRz KSk7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXplKHNpemVvZihQcm9jU3RhdGUp LCBOdW1Qcm9jU3RhdGVTbG90cykpOwogCiAJcmV0dXJuIHNpemU7CiB9CkBAIC0yNDAsMTYg KzIzNiwxNCBAQCBDcmVhdGVTaGFyZWRJbnZhbGlkYXRpb25TdGF0ZSh2b2lkKQogCXNobUlu dmFsQnVmZmVyLT5tYXhNc2dOdW0gPSAwOwogCXNobUludmFsQnVmZmVyLT5uZXh0VGhyZXNo b2xkID0gQ0xFQU5VUF9NSU47CiAJc2htSW52YWxCdWZmZXItPmxhc3RCYWNrZW5kID0gMDsK LQlzaG1JbnZhbEJ1ZmZlci0+bWF4QmFja2VuZHMgPSBNYXhCYWNrZW5kczsKIAlTcGluTG9j a0luaXQoJnNobUludmFsQnVmZmVyLT5tc2dudW1Mb2NrKTsKIAogCS8qIFRoZSBidWZmZXJb XSBhcnJheSBpcyBpbml0aWFsbHkgYWxsIHVudXNlZCwgc28gd2UgbmVlZCBub3QgZmlsbCBp dCAqLwogCiAJLyogTWFyayBhbGwgYmFja2VuZHMgaW5hY3RpdmUsIGFuZCBpbml0aWFsaXpl IG5leHRMWElEICovCi0JZm9yIChpID0gMDsgaSA8IHNobUludmFsQnVmZmVyLT5tYXhCYWNr ZW5kczsgaSsrKQorCWZvciAoaSA9IDA7IGkgPCBOdW1Qcm9jU3RhdGVTbG90czsgaSsrKQog CXsKIAkJc2htSW52YWxCdWZmZXItPnByb2NTdGF0ZVtpXS5wcm9jUGlkID0gMDsJLyogaW5h Y3RpdmUgKi8KLQkJc2htSW52YWxCdWZmZXItPnByb2NTdGF0ZVtpXS5wcm9jID0gTlVMTDsK IAkJc2htSW52YWxCdWZmZXItPnByb2NTdGF0ZVtpXS5uZXh0TXNnTnVtID0gMDsJLyogbWVh bmluZ2xlc3MgKi8KIAkJc2htSW52YWxCdWZmZXItPnByb2NTdGF0ZVtpXS5yZXNldFN0YXRl ID0gZmFsc2U7CiAJCXNobUludmFsQnVmZmVyLT5wcm9jU3RhdGVbaV0uc2lnbmFsZWQgPSBm YWxzZTsKQEAgLTI2NSwxMCArMjU5LDE3IEBAIENyZWF0ZVNoYXJlZEludmFsaWRhdGlvblN0 YXRlKHZvaWQpCiB2b2lkCiBTaGFyZWRJbnZhbEJhY2tlbmRJbml0KGJvb2wgc2VuZE9ubHkp CiB7Ci0JaW50CQkJaW5kZXg7Ci0JUHJvY1N0YXRlICAqc3RhdGVQID0gTlVMTDsKKwlQcm9j U3RhdGUgICpzdGF0ZVA7CisJcGlkX3QJCW9sZFBpZDsKIAlTSVNlZwkgICAqc2VnUCA9IHNo bUludmFsQnVmZmVyOwogCisJaWYgKE15QmFja2VuZElkIDw9IDApCisJCWVsb2coRVJST1Is ICJNeUJhY2tlbmRJZCBub3Qgc2V0Iik7CisJaWYgKE15QmFja2VuZElkID4gTnVtUHJvY1N0 YXRlU2xvdHMpCisJCWVsb2coUEFOSUMsICJ1bmV4cGVjdGVkIE15QmFja2VuZElkICVkIGlu IFNoYXJlZEludmFsQmFja2VuZEluaXQgKG1heCAlZCkiLAorCQkJIE15QmFja2VuZElkLCBO dW1Qcm9jU3RhdGVTbG90cyk7CisJc3RhdGVQID0gJnNlZ1AtPnByb2NTdGF0ZVtNeUJhY2tl bmRJZCAtIDFdOworCiAJLyoKIAkgKiBUaGlzIGNhbiBydW4gaW4gcGFyYWxsZWwgd2l0aCBy ZWFkIG9wZXJhdGlvbnMsIGJ1dCBub3Qgd2l0aCB3cml0ZQogCSAqIG9wZXJhdGlvbnMsIHNp bmNlIFNJSW5zZXJ0RGF0YUVudHJpZXMgcmVsaWVzIG9uIGxhc3RCYWNrZW5kIHRvIHNldApA QCAtMjc2LDQ4ICsyNzcsMjIgQEAgU2hhcmVkSW52YWxCYWNrZW5kSW5pdChib29sIHNlbmRP bmx5KQogCSAqLwogCUxXTG9ja0FjcXVpcmUoU0ludmFsV3JpdGVMb2NrLCBMV19FWENMVVNJ VkUpOwogCi0JLyogTG9vayBmb3IgYSBmcmVlIGVudHJ5IGluIHRoZSBwcm9jU3RhdGUgYXJy YXkgKi8KLQlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBzZWdQLT5sYXN0QmFja2VuZDsgaW5k ZXgrKykKLQl7Ci0JCWlmIChzZWdQLT5wcm9jU3RhdGVbaW5kZXhdLnByb2NQaWQgPT0gMCkJ LyogaW5hY3RpdmUgc2xvdD8gKi8KLQkJewotCQkJc3RhdGVQID0gJnNlZ1AtPnByb2NTdGF0 ZVtpbmRleF07Ci0JCQlicmVhazsKLQkJfQotCX0KLQotCWlmIChzdGF0ZVAgPT0gTlVMTCkK KwlvbGRQaWQgPSBzdGF0ZVAtPnByb2NQaWQ7CisJaWYgKG9sZFBpZCAhPSAwKQogCXsKLQkJ aWYgKHNlZ1AtPmxhc3RCYWNrZW5kIDwgc2VnUC0+bWF4QmFja2VuZHMpCi0JCXsKLQkJCXN0 YXRlUCA9ICZzZWdQLT5wcm9jU3RhdGVbc2VnUC0+bGFzdEJhY2tlbmRdOwotCQkJQXNzZXJ0 KHN0YXRlUC0+cHJvY1BpZCA9PSAwKTsKLQkJCXNlZ1AtPmxhc3RCYWNrZW5kKys7Ci0JCX0K LQkJZWxzZQotCQl7Ci0JCQkvKgotCQkJICogb3V0IG9mIHByb2NTdGF0ZSBzbG90czogTWF4 QmFja2VuZHMgZXhjZWVkZWQgLS0gcmVwb3J0IG5vcm1hbGx5Ci0JCQkgKi8KLQkJCU15QmFj a2VuZElkID0gSW52YWxpZEJhY2tlbmRJZDsKLQkJCUxXTG9ja1JlbGVhc2UoU0ludmFsV3Jp dGVMb2NrKTsKLQkJCWVyZXBvcnQoRkFUQUwsCi0JCQkJCShlcnJjb2RlKEVSUkNPREVfVE9P X01BTllfQ09OTkVDVElPTlMpLAotCQkJCQkgZXJybXNnKCJzb3JyeSwgdG9vIG1hbnkgY2xp ZW50cyBhbHJlYWR5IikpKTsKLQkJfQorCQlMV0xvY2tSZWxlYXNlKFNJbnZhbFdyaXRlTG9j ayk7CisJCWVsb2coRVJST1IsICJzaW52YWwgc2xvdCBmb3IgYmFja2VuZCAlZCBpcyBhbHJl YWR5IGluIHVzZSBieSBwcm9jZXNzICVkIiwKKwkJCSBNeUJhY2tlbmRJZCwgb2xkUGlkKTsK IAl9CiAKLQlNeUJhY2tlbmRJZCA9IChzdGF0ZVAgLSAmc2VnUC0+cHJvY1N0YXRlWzBdKSAr IDE7Ci0KLQkvKiBBZHZlcnRpc2UgYXNzaWduZWQgYmFja2VuZCBJRCBpbiBNeVByb2MgKi8K LQlNeVByb2MtPmJhY2tlbmRJZCA9IE15QmFja2VuZElkOworCWlmIChNeUJhY2tlbmRJZCA+ IHNlZ1AtPmxhc3RCYWNrZW5kKQorCQlzZWdQLT5sYXN0QmFja2VuZCA9IE15QmFja2VuZElk OwogCiAJLyogRmV0Y2ggbmV4dCBsb2NhbCB0cmFuc2FjdGlvbiBJRCBpbnRvIGxvY2FsIG1l bW9yeSAqLwogCW5leHRMb2NhbFRyYW5zYWN0aW9uSWQgPSBzdGF0ZVAtPm5leHRMWElEOwog CiAJLyogbWFyayBteXNlbGYgYWN0aXZlLCB3aXRoIGFsbCBleHRhbnQgbWVzc2FnZXMgYWxy ZWFkeSByZWFkICovCiAJc3RhdGVQLT5wcm9jUGlkID0gTXlQcm9jUGlkOwotCXN0YXRlUC0+ cHJvYyA9IE15UHJvYzsKIAlzdGF0ZVAtPm5leHRNc2dOdW0gPSBzZWdQLT5tYXhNc2dOdW07 CiAJc3RhdGVQLT5yZXNldFN0YXRlID0gZmFsc2U7CiAJc3RhdGVQLT5zaWduYWxlZCA9IGZh bHNlOwpAQCAtMzI4LDggKzMwMyw2IEBAIFNoYXJlZEludmFsQmFja2VuZEluaXQoYm9vbCBz ZW5kT25seSkKIAogCS8qIHJlZ2lzdGVyIGV4aXQgcm91dGluZSB0byBtYXJrIG15IGVudHJ5 IGluYWN0aXZlIGF0IGV4aXQgKi8KIAlvbl9zaG1lbV9leGl0KENsZWFudXBJbnZhbGlkYXRp b25TdGF0ZSwgUG9pbnRlckdldERhdHVtKHNlZ1ApKTsKLQotCWVsb2coREVCVUc0LCAibXkg YmFja2VuZCBJRCBpcyAlZCIsIE15QmFja2VuZElkKTsKIH0KIAogLyoKQEAgLTM1OCw3ICsz MzEsNiBAQCBDbGVhbnVwSW52YWxpZGF0aW9uU3RhdGUoaW50IHN0YXR1cywgRGF0dW0gYXJn KQogCiAJLyogTWFyayBteXNlbGYgaW5hY3RpdmUgKi8KIAlzdGF0ZVAtPnByb2NQaWQgPSAw OwotCXN0YXRlUC0+cHJvYyA9IE5VTEw7CiAJc3RhdGVQLT5uZXh0TXNnTnVtID0gMDsKIAlz dGF0ZVAtPnJlc2V0U3RhdGUgPSBmYWxzZTsKIAlzdGF0ZVAtPnNpZ25hbGVkID0gZmFsc2U7 CkBAIC0zNzQsNzEgKzM0Niw2IEBAIENsZWFudXBJbnZhbGlkYXRpb25TdGF0ZShpbnQgc3Rh dHVzLCBEYXR1bSBhcmcpCiAJTFdMb2NrUmVsZWFzZShTSW52YWxXcml0ZUxvY2spOwogfQog Ci0vKgotICogQmFja2VuZElkR2V0UHJvYwotICoJCUdldCB0aGUgUEdQUk9DIHN0cnVjdHVy ZSBmb3IgYSBiYWNrZW5kLCBnaXZlbiB0aGUgYmFja2VuZCBJRC4KLSAqCQlUaGUgcmVzdWx0 IG1heSBiZSBvdXQgb2YgZGF0ZSBhcmJpdHJhcmlseSBxdWlja2x5LCBzbyB0aGUgY2FsbGVy Ci0gKgkJbXVzdCBiZSBjYXJlZnVsIGFib3V0IGhvdyB0aGlzIGluZm9ybWF0aW9uIGlzIHVz ZWQuICBOVUxMIGlzCi0gKgkJcmV0dXJuZWQgaWYgdGhlIGJhY2tlbmQgaXMgbm90IGFjdGl2 ZS4KLSAqLwotUEdQUk9DICoKLUJhY2tlbmRJZEdldFByb2MoaW50IGJhY2tlbmRJRCkKLXsK LQlQR1BST0MJICAgKnJlc3VsdCA9IE5VTEw7Ci0JU0lTZWcJICAgKnNlZ1AgPSBzaG1JbnZh bEJ1ZmZlcjsKLQotCS8qIE5lZWQgdG8gbG9jayBvdXQgYWRkaXRpb25zL3JlbW92YWxzIG9m IGJhY2tlbmRzICovCi0JTFdMb2NrQWNxdWlyZShTSW52YWxXcml0ZUxvY2ssIExXX1NIQVJF RCk7Ci0KLQlpZiAoYmFja2VuZElEID4gMCAmJiBiYWNrZW5kSUQgPD0gc2VnUC0+bGFzdEJh Y2tlbmQpCi0JewotCQlQcm9jU3RhdGUgICpzdGF0ZVAgPSAmc2VnUC0+cHJvY1N0YXRlW2Jh Y2tlbmRJRCAtIDFdOwotCi0JCXJlc3VsdCA9IHN0YXRlUC0+cHJvYzsKLQl9Ci0KLQlMV0xv Y2tSZWxlYXNlKFNJbnZhbFdyaXRlTG9jayk7Ci0KLQlyZXR1cm4gcmVzdWx0OwotfQotCi0v KgotICogQmFja2VuZElkR2V0VHJhbnNhY3Rpb25JZHMKLSAqCQlHZXQgdGhlIHhpZCwgeG1p biwgbnN1YnhpZCBhbmQgb3ZlcmZsb3cgc3RhdHVzIG9mIHRoZSBiYWNrZW5kLiBUaGUKLSAq CQlyZXN1bHQgbWF5IGJlIG91dCBvZiBkYXRlIGFyYml0cmFyaWx5IHF1aWNrbHksIHNvIHRo ZSBjYWxsZXIgbXVzdCBiZQotICoJCWNhcmVmdWwgYWJvdXQgaG93IHRoaXMgaW5mb3JtYXRp b24gaXMgdXNlZC4KLSAqLwotdm9pZAotQmFja2VuZElkR2V0VHJhbnNhY3Rpb25JZHMoaW50 IGJhY2tlbmRJRCwgVHJhbnNhY3Rpb25JZCAqeGlkLAotCQkJCQkJICAgVHJhbnNhY3Rpb25J ZCAqeG1pbiwgaW50ICpuc3VieGlkLCBib29sICpvdmVyZmxvd2VkKQotewotCVNJU2VnCSAg ICpzZWdQID0gc2htSW52YWxCdWZmZXI7Ci0KLQkqeGlkID0gSW52YWxpZFRyYW5zYWN0aW9u SWQ7Ci0JKnhtaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKLQkqbnN1YnhpZCA9IDA7Ci0J Km92ZXJmbG93ZWQgPSBmYWxzZTsKLQotCS8qIE5lZWQgdG8gbG9jayBvdXQgYWRkaXRpb25z L3JlbW92YWxzIG9mIGJhY2tlbmRzICovCi0JTFdMb2NrQWNxdWlyZShTSW52YWxXcml0ZUxv Y2ssIExXX1NIQVJFRCk7Ci0KLQlpZiAoYmFja2VuZElEID4gMCAmJiBiYWNrZW5kSUQgPD0g c2VnUC0+bGFzdEJhY2tlbmQpCi0JewotCQlQcm9jU3RhdGUgICpzdGF0ZVAgPSAmc2VnUC0+ cHJvY1N0YXRlW2JhY2tlbmRJRCAtIDFdOwotCQlQR1BST0MJICAgKnByb2MgPSBzdGF0ZVAt PnByb2M7Ci0KLQkJaWYgKHByb2MgIT0gTlVMTCkKLQkJewotCQkJKnhpZCA9IHByb2MtPnhp ZDsKLQkJCSp4bWluID0gcHJvYy0+eG1pbjsKLQkJCSpuc3VieGlkID0gcHJvYy0+c3VieGlk U3RhdHVzLmNvdW50OwotCQkJKm92ZXJmbG93ZWQgPSBwcm9jLT5zdWJ4aWRTdGF0dXMub3Zl cmZsb3dlZDsKLQkJfQotCX0KLQotCUxXTG9ja1JlbGVhc2UoU0ludmFsV3JpdGVMb2NrKTsK LX0KLQogLyoKICAqIFNJSW5zZXJ0RGF0YUVudHJpZXMKICAqCQlBZGQgbmV3IGludmFsaWRh dGlvbiBtZXNzYWdlKHMpIHRvIHRoZSBidWZmZXIuCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2xtZ3IvbG9jay5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2su YwppbmRleCBjNzBhMWFkYjlhZC4uMDI1MmNhY2YwYTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdy L2xvY2suYwpAQCAtMzYyNSw3ICszNjI1LDcgQEAgR2V0TG9ja1N0YXR1c0RhdGEodm9pZCkK IAkJCQkJCQkJIHByb2MtPmZwUmVsSWRbZl0pOwogCQkJaW5zdGFuY2UtPmhvbGRNYXNrID0g bG9ja2JpdHMgPDwgRkFTVF9QQVRIX0xPQ0tOVU1CRVJfT0ZGU0VUOwogCQkJaW5zdGFuY2Ut PndhaXRMb2NrTW9kZSA9IE5vTG9jazsKLQkJCWluc3RhbmNlLT5iYWNrZW5kID0gcHJvYy0+ YmFja2VuZElkOworCQkJaW5zdGFuY2UtPmJhY2tlbmQgPSBHZXRCYWNrZW5kSWRGcm9tUEdQ cm9jKHByb2MpOwogCQkJaW5zdGFuY2UtPmx4aWQgPSBwcm9jLT5seGlkOwogCQkJaW5zdGFu Y2UtPnBpZCA9IHByb2MtPnBpZDsKIAkJCWluc3RhbmNlLT5sZWFkZXJQaWQgPSBwcm9jLT5w aWQ7CkBAIC0zNjUyLDE0ICszNjUyLDE0IEBAIEdldExvY2tTdGF0dXNEYXRhKHZvaWQpCiAJ CQkJCXJlcGFsbG9jKGRhdGEtPmxvY2tzLCBzaXplb2YoTG9ja0luc3RhbmNlRGF0YSkgKiBl bHMpOwogCQkJfQogCi0JCQl2eGlkLmJhY2tlbmRJZCA9IHByb2MtPmJhY2tlbmRJZDsKKwkJ CXZ4aWQuYmFja2VuZElkID0gR2V0QmFja2VuZElkRnJvbVBHUHJvYyhwcm9jKTsKIAkJCXZ4 aWQubG9jYWxUcmFuc2FjdGlvbklkID0gcHJvYy0+ZnBMb2NhbFRyYW5zYWN0aW9uSWQ7CiAK IAkJCWluc3RhbmNlID0gJmRhdGEtPmxvY2tzW2VsXTsKIAkJCVNFVF9MT0NLVEFHX1ZJUlRV QUxUUkFOU0FDVElPTihpbnN0YW5jZS0+bG9ja3RhZywgdnhpZCk7CiAJCQlpbnN0YW5jZS0+ aG9sZE1hc2sgPSBMT0NLQklUX09OKEV4Y2x1c2l2ZUxvY2spOwogCQkJaW5zdGFuY2UtPndh aXRMb2NrTW9kZSA9IE5vTG9jazsKLQkJCWluc3RhbmNlLT5iYWNrZW5kID0gcHJvYy0+YmFj a2VuZElkOworCQkJaW5zdGFuY2UtPmJhY2tlbmQgPSBHZXRCYWNrZW5kSWRGcm9tUEdQcm9j KHByb2MpOwogCQkJaW5zdGFuY2UtPmx4aWQgPSBwcm9jLT5seGlkOwogCQkJaW5zdGFuY2Ut PnBpZCA9IHByb2MtPnBpZDsKIAkJCWluc3RhbmNlLT5sZWFkZXJQaWQgPSBwcm9jLT5waWQ7 CkBAIC0zNzEyLDcgKzM3MTIsNyBAQCBHZXRMb2NrU3RhdHVzRGF0YSh2b2lkKQogCQkJaW5z dGFuY2UtPndhaXRMb2NrTW9kZSA9IHByb2MtPndhaXRMb2NrTW9kZTsKIAkJZWxzZQogCQkJ aW5zdGFuY2UtPndhaXRMb2NrTW9kZSA9IE5vTG9jazsKLQkJaW5zdGFuY2UtPmJhY2tlbmQg PSBwcm9jLT5iYWNrZW5kSWQ7CisJCWluc3RhbmNlLT5iYWNrZW5kID0gR2V0QmFja2VuZElk RnJvbVBHUHJvYyhwcm9jKTsKIAkJaW5zdGFuY2UtPmx4aWQgPSBwcm9jLT5seGlkOwogCQlp bnN0YW5jZS0+cGlkID0gcHJvYy0+cGlkOwogCQlpbnN0YW5jZS0+bGVhZGVyUGlkID0gcHJv Y2xvY2stPmdyb3VwTGVhZGVyLT5waWQ7CkBAIC0zODg4LDcgKzM4ODgsNyBAQCBHZXRTaW5n bGVQcm9jQmxvY2tlclN0YXR1c0RhdGEoUEdQUk9DICpibG9ja2VkX3Byb2MsIEJsb2NrZWRQ cm9jc0RhdGEgKmRhdGEpCiAJCQlpbnN0YW5jZS0+d2FpdExvY2tNb2RlID0gcHJvYy0+d2Fp dExvY2tNb2RlOwogCQllbHNlCiAJCQlpbnN0YW5jZS0+d2FpdExvY2tNb2RlID0gTm9Mb2Nr OwotCQlpbnN0YW5jZS0+YmFja2VuZCA9IHByb2MtPmJhY2tlbmRJZDsKKwkJaW5zdGFuY2Ut PmJhY2tlbmQgPSBHZXRCYWNrZW5kSWRGcm9tUEdQcm9jKHByb2MpOwogCQlpbnN0YW5jZS0+ bHhpZCA9IHByb2MtPmx4aWQ7CiAJCWluc3RhbmNlLT5waWQgPSBwcm9jLT5waWQ7CiAJCWlu c3RhbmNlLT5sZWFkZXJQaWQgPSBwcm9jbG9jay0+Z3JvdXBMZWFkZXItPnBpZDsKQEAgLTQz OTEsNyArNDM5MSw3IEBAIFZpcnR1YWxYYWN0TG9ja1RhYmxlSW5zZXJ0KFZpcnR1YWxUcmFu c2FjdGlvbklkIHZ4aWQpCiAKIAlMV0xvY2tBY3F1aXJlKCZNeVByb2MtPmZwSW5mb0xvY2ss IExXX0VYQ0xVU0lWRSk7CiAKLQlBc3NlcnQoTXlQcm9jLT5iYWNrZW5kSWQgPT0gdnhpZC5i YWNrZW5kSWQpOworCUFzc2VydChNeUJhY2tlbmRJZCA9PSB2eGlkLmJhY2tlbmRJZCk7CiAJ QXNzZXJ0KE15UHJvYy0+ZnBMb2NhbFRyYW5zYWN0aW9uSWQgPT0gSW52YWxpZExvY2FsVHJh bnNhY3Rpb25JZCk7CiAJQXNzZXJ0KE15UHJvYy0+ZnBWWElETG9jayA9PSBmYWxzZSk7CiAK QEAgLTQ0MTMsOCArNDQxMyw2IEBAIFZpcnR1YWxYYWN0TG9ja1RhYmxlQ2xlYW51cCh2b2lk KQogCWJvb2wJCWZhc3RwYXRoOwogCUxvY2FsVHJhbnNhY3Rpb25JZCBseGlkOwogCi0JQXNz ZXJ0KE15UHJvYy0+YmFja2VuZElkICE9IEludmFsaWRCYWNrZW5kSWQpOwotCiAJLyoKIAkg KiBDbGVhbiB1cCBzaGFyZWQgbWVtb3J5IHN0YXRlLgogCSAqLwpAQCAtNDU0MSw3ICs0NTM5 LDcgQEAgVmlydHVhbFhhY3RMb2NrKFZpcnR1YWxUcmFuc2FjdGlvbklkIHZ4aWQsIGJvb2wg d2FpdCkKIAkgKi8KIAlMV0xvY2tBY3F1aXJlKCZwcm9jLT5mcEluZm9Mb2NrLCBMV19FWENM VVNJVkUpOwogCi0JaWYgKHByb2MtPmJhY2tlbmRJZCAhPSB2eGlkLmJhY2tlbmRJZAorCWlm IChHZXRCYWNrZW5kSWRGcm9tUEdQcm9jKHByb2MpICE9IHZ4aWQuYmFja2VuZElkCiAJCXx8 IHByb2MtPmZwTG9jYWxUcmFuc2FjdGlvbklkICE9IHZ4aWQubG9jYWxUcmFuc2FjdGlvbklk KQogCXsKIAkJLyogVlhJRCBlbmRlZCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9sbWdyL3Byb2MuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKaW5k ZXggZTM1NTc2ODYzNGUuLjljMjVmNjMxYzVkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvcHJvYy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9j LmMKQEAgLTIzOSwyNSArMjM5LDI1IEBAIEluaXRQcm9jR2xvYmFsKHZvaWQpCiAJCWlmIChp IDwgTWF4Q29ubmVjdGlvbnMpCiAJCXsKIAkJCS8qIFBHUFJPQyBmb3Igbm9ybWFsIGJhY2tl bmQsIGFkZCB0byBmcmVlUHJvY3MgbGlzdCAqLwotCQkJZGxpc3RfcHVzaF9oZWFkKCZQcm9j R2xvYmFsLT5mcmVlUHJvY3MsICZwcm9jLT5saW5rcyk7CisJCQlkbGlzdF9wdXNoX3RhaWwo JlByb2NHbG9iYWwtPmZyZWVQcm9jcywgJnByb2MtPmxpbmtzKTsKIAkJCXByb2MtPnByb2Nn bG9iYWxsaXN0ID0gJlByb2NHbG9iYWwtPmZyZWVQcm9jczsKIAkJfQogCQllbHNlIGlmIChp IDwgTWF4Q29ubmVjdGlvbnMgKyBhdXRvdmFjdXVtX21heF93b3JrZXJzICsgMSkKIAkJewog CQkJLyogUEdQUk9DIGZvciBBViBsYXVuY2hlci93b3JrZXIsIGFkZCB0byBhdXRvdmFjRnJl ZVByb2NzIGxpc3QgKi8KLQkJCWRsaXN0X3B1c2hfaGVhZCgmUHJvY0dsb2JhbC0+YXV0b3Zh Y0ZyZWVQcm9jcywgJnByb2MtPmxpbmtzKTsKKwkJCWRsaXN0X3B1c2hfdGFpbCgmUHJvY0ds b2JhbC0+YXV0b3ZhY0ZyZWVQcm9jcywgJnByb2MtPmxpbmtzKTsKIAkJCXByb2MtPnByb2Nn bG9iYWxsaXN0ID0gJlByb2NHbG9iYWwtPmF1dG92YWNGcmVlUHJvY3M7CiAJCX0KIAkJZWxz ZSBpZiAoaSA8IE1heENvbm5lY3Rpb25zICsgYXV0b3ZhY3V1bV9tYXhfd29ya2VycyArIDEg KyBtYXhfd29ya2VyX3Byb2Nlc3NlcykKIAkJewogCQkJLyogUEdQUk9DIGZvciBiZ3dvcmtl ciwgYWRkIHRvIGJnd29ya2VyRnJlZVByb2NzIGxpc3QgKi8KLQkJCWRsaXN0X3B1c2hfaGVh ZCgmUHJvY0dsb2JhbC0+Ymd3b3JrZXJGcmVlUHJvY3MsICZwcm9jLT5saW5rcyk7CisJCQlk bGlzdF9wdXNoX3RhaWwoJlByb2NHbG9iYWwtPmJnd29ya2VyRnJlZVByb2NzLCAmcHJvYy0+ bGlua3MpOwogCQkJcHJvYy0+cHJvY2dsb2JhbGxpc3QgPSAmUHJvY0dsb2JhbC0+Ymd3b3Jr ZXJGcmVlUHJvY3M7CiAJCX0KIAkJZWxzZSBpZiAoaSA8IE1heEJhY2tlbmRzKQogCQl7CiAJ CQkvKiBQR1BST0MgZm9yIHdhbHNlbmRlciwgYWRkIHRvIHdhbHNlbmRlckZyZWVQcm9jcyBs aXN0ICovCi0JCQlkbGlzdF9wdXNoX2hlYWQoJlByb2NHbG9iYWwtPndhbHNlbmRlckZyZWVQ cm9jcywgJnByb2MtPmxpbmtzKTsKKwkJCWRsaXN0X3B1c2hfdGFpbCgmUHJvY0dsb2JhbC0+ d2Fsc2VuZGVyRnJlZVByb2NzLCAmcHJvYy0+bGlua3MpOwogCQkJcHJvYy0+cHJvY2dsb2Jh bGxpc3QgPSAmUHJvY0dsb2JhbC0+d2Fsc2VuZGVyRnJlZVByb2NzOwogCQl9CiAKQEAgLTM1 MSw2ICszNTEsNyBAQCBJbml0UHJvY2Vzcyh2b2lkKQogCQkJCShlcnJjb2RlKEVSUkNPREVf VE9PX01BTllfQ09OTkVDVElPTlMpLAogCQkJCSBlcnJtc2coInNvcnJ5LCB0b28gbWFueSBj bGllbnRzIGFscmVhZHkiKSkpOwogCX0KKwlNeUJhY2tlbmRJZCA9IEdldEJhY2tlbmRJZEZy b21QR1Byb2MoTXlQcm9jKTsKIAogCS8qCiAJICogQ3Jvc3MtY2hlY2sgdGhhdCB0aGUgUEdQ Uk9DIGlzIG9mIHRoZSB0eXBlIHdlIGV4cGVjdDsgaWYgdGhpcyB3ZXJlIG5vdApAQCAtMzgw LDcgKzM4MSw2IEBAIEluaXRQcm9jZXNzKHZvaWQpCiAJTXlQcm9jLT54bWluID0gSW52YWxp ZFRyYW5zYWN0aW9uSWQ7CiAJTXlQcm9jLT5waWQgPSBNeVByb2NQaWQ7CiAJLyogYmFja2Vu ZElkLCBkYXRhYmFzZUlkIGFuZCByb2xlSWQgd2lsbCBiZSBmaWxsZWQgaW4gbGF0ZXIgKi8K LQlNeVByb2MtPmJhY2tlbmRJZCA9IEludmFsaWRCYWNrZW5kSWQ7CiAJTXlQcm9jLT5kYXRh YmFzZUlkID0gSW52YWxpZE9pZDsKIAlNeVByb2MtPnJvbGVJZCA9IEludmFsaWRPaWQ7CiAJ TXlQcm9jLT50ZW1wTmFtZXNwYWNlSWQgPSBJbnZhbGlkT2lkOwpAQCAtNTYxLDYgKzU2MSw3 IEBAIEluaXRBdXhpbGlhcnlQcm9jZXNzKHZvaWQpCiAJKCh2b2xhdGlsZSBQR1BST0MgKikg YXV4cHJvYyktPnBpZCA9IE15UHJvY1BpZDsKIAogCU15UHJvYyA9IGF1eHByb2M7CisJTXlC YWNrZW5kSWQgPSBHZXRCYWNrZW5kSWRGcm9tUEdQcm9jKE15UHJvYyk7CiAKIAlTcGluTG9j a1JlbGVhc2UoUHJvY1N0cnVjdExvY2spOwogCkBAIC01NzUsNyArNTc2LDYgQEAgSW5pdEF1 eGlsaWFyeVByb2Nlc3Modm9pZCkKIAlNeVByb2MtPmZwTG9jYWxUcmFuc2FjdGlvbklkID0g SW52YWxpZExvY2FsVHJhbnNhY3Rpb25JZDsKIAlNeVByb2MtPnhpZCA9IEludmFsaWRUcmFu c2FjdGlvbklkOwogCU15UHJvYy0+eG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwotCU15 UHJvYy0+YmFja2VuZElkID0gSW52YWxpZEJhY2tlbmRJZDsKIAlNeVByb2MtPmRhdGFiYXNl SWQgPSBJbnZhbGlkT2lkOwogCU15UHJvYy0+cm9sZUlkID0gSW52YWxpZE9pZDsKIAlNeVBy b2MtPnRlbXBOYW1lc3BhY2VJZCA9IEludmFsaWRPaWQ7CkBAIC05MDUsNiArOTA1LDcgQEAg UHJvY0tpbGwoaW50IGNvZGUsIERhdHVtIGFyZykKIAogCXByb2MgPSBNeVByb2M7CiAJTXlQ cm9jID0gTlVMTDsKKwlNeUJhY2tlbmRJZCA9IEludmFsaWRCYWNrZW5kSWQ7CiAJRGlzb3du TGF0Y2goJnByb2MtPnByb2NMYXRjaCk7CiAKIAlwcm9jZ2xvYmFsbGlzdCA9IHByb2MtPnBy b2NnbG9iYWxsaXN0OwpAQCAtOTc2LDYgKzk3Nyw3IEBAIEF1eGlsaWFyeVByb2NLaWxsKGlu dCBjb2RlLCBEYXR1bSBhcmcpCiAKIAlwcm9jID0gTXlQcm9jOwogCU15UHJvYyA9IE5VTEw7 CisJTXlCYWNrZW5kSWQgPSBJbnZhbGlkQmFja2VuZElkOwogCURpc293bkxhdGNoKCZwcm9j LT5wcm9jTGF0Y2gpOwogCiAJU3BpbkxvY2tBY3F1aXJlKFByb2NTdHJ1Y3RMb2NrKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L2JhY2tlbmRfc3RhdHVzLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9iYWNrZW5kX3N0YXR1cy5jCmluZGV4IDFh MTA1MGM4ZGExLi4zZDNmN2IwNjcyMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWN0aXZpdHkvYmFja2VuZF9zdGF0dXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS9iYWNrZW5kX3N0YXR1cy5jCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSAicG9y dC9hdG9taWNzLmgiCQkvKiBmb3IgbWVtb3J5IGJhcnJpZXJzICovCiAjaW5jbHVkZSAic3Rv cmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIJCS8qIGZvciBNeVByb2Mg Ki8KKyNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv c2ludmFsYWR0LmgiCiAjaW5jbHVkZSAidXRpbHMvYXNjaWkuaCIKICNpbmNsdWRlICJ1dGls cy9iYWNrZW5kX3N0YXR1cy5oIgpAQCAtMjksMTMgKzMwLDEyIEBACiAvKiAtLS0tLS0tLS0t CiAgKiBUb3RhbCBudW1iZXIgb2YgYmFja2VuZHMgaW5jbHVkaW5nIGF1eGlsaWFyeQogICoK LSAqIFdlIHJlc2VydmUgYSBzbG90IGZvciBlYWNoIHBvc3NpYmxlIEJhY2tlbmRJZCwgcGx1 cyBvbmUgZm9yIGVhY2gKLSAqIHBvc3NpYmxlIGF1eGlsaWFyeSBwcm9jZXNzIHR5cGUuICAo VGhpcyBzY2hlbWUgYXNzdW1lcyB0aGVyZSBpcyBub3QKLSAqIG1vcmUgdGhhbiBvbmUgb2Yg YW55IGF1eGlsaWFyeSBwcm9jZXNzIHR5cGUgYXQgYSB0aW1lLikgTWF4QmFja2VuZHMKLSAq IGluY2x1ZGVzIGF1dG92YWN1dW0gd29ya2VycyBhbmQgYmFja2dyb3VuZCB3b3JrZXJzIGFz IHdlbGwuCisgKiBXZSByZXNlcnZlIGEgc2xvdCBmb3IgZWFjaCBwb3NzaWJsZSBQR1BST0Mg ZW50cnksIGluY2x1ZGluZyBhdXggcHJvY2Vzc2VzLgorICogKEJ1dCBub3QgaW5jbHVkaW5n IFBHUFJPQyBlbnRyaWVzIHJlc2VydmVkIGZvciBwcmVwYXJlZCB4YWN0czsgdGhleSBhcmUg bm90CisgKiByZWFsIHByb2Nlc3Nlcy4pCiAgKiAtLS0tLS0tLS0tCiAgKi8KLSNkZWZpbmUg TnVtQmFja2VuZFN0YXRTbG90cyAoTWF4QmFja2VuZHMgKyBOVU1fQVVYUFJPQ1RZUEVTKQor I2RlZmluZSBOdW1CYWNrZW5kU3RhdFNsb3RzIChNYXhCYWNrZW5kcyArIE5VTV9BVVhJTElB UllfUFJPQ1MpCiAKIAogLyogLS0tLS0tLS0tLQpAQCAtMjM4LDEwICsyMzgsOSBAQCBDcmVh dGVTaGFyZWRCYWNrZW5kU3RhdHVzKHZvaWQpCiAKIC8qCiAgKiBJbml0aWFsaXplIHBnc3Rh dHMgYmFja2VuZCBhY3Rpdml0eSBzdGF0ZSwgYW5kIHNldCB1cCBvdXIgb24tcHJvYy1leGl0 Ci0gKiBob29rLiAgQ2FsbGVkIGZyb20gSW5pdFBvc3RncmVzIGFuZCBBdXhpbGlhcnlQcm9j ZXNzTWFpbi4gRm9yIGF1eGlsaWFyeQotICogcHJvY2VzcywgTXlCYWNrZW5kSWQgaXMgaW52 YWxpZC4gT3RoZXJ3aXNlLCBNeUJhY2tlbmRJZCBtdXN0IGJlIHNldCwgYnV0IHdlCi0gKiBt dXN0IG5vdCBoYXZlIHN0YXJ0ZWQgYW55IHRyYW5zYWN0aW9uIHlldCAoc2luY2UgdGhlIGV4 aXQgaG9vayBtdXN0IHJ1bgotICogYWZ0ZXIgdGhlIGxhc3QgdHJhbnNhY3Rpb24gZXhpdCku CisgKiBob29rLiAgQ2FsbGVkIGZyb20gSW5pdFBvc3RncmVzIGFuZCBBdXhpbGlhcnlQcm9j ZXNzTWFpbi4gIE15QmFja2VuZElkIG11c3QKKyAqIGJlIHNldCwgYnV0IHdlIG11c3Qgbm90 IGhhdmUgc3RhcnRlZCBhbnkgdHJhbnNhY3Rpb24geWV0IChzaW5jZSB0aGUgZXhpdAorICog aG9vayBtdXN0IHJ1biBhZnRlciB0aGUgbGFzdCB0cmFuc2FjdGlvbiBleGl0KS4KICAqCiAg KiBOT1RFOiBNeURhdGFiYXNlSWQgaXNuJ3Qgc2V0IHlldDsgc28gdGhlIHNodXRkb3duIGhv b2sgaGFzIHRvIGJlIGNhcmVmdWwuCiAgKi8KQEAgLTI0OSwyNiArMjQ4LDkgQEAgdm9pZAog cGdzdGF0X2JlaW5pdCh2b2lkKQogewogCS8qIEluaXRpYWxpemUgTXlCRUVudHJ5ICovCi0J aWYgKE15QmFja2VuZElkICE9IEludmFsaWRCYWNrZW5kSWQpCi0JewotCQlBc3NlcnQoTXlC YWNrZW5kSWQgPj0gMSAmJiBNeUJhY2tlbmRJZCA8PSBNYXhCYWNrZW5kcyk7Ci0JCU15QkVF bnRyeSA9ICZCYWNrZW5kU3RhdHVzQXJyYXlbTXlCYWNrZW5kSWQgLSAxXTsKLQl9Ci0JZWxz ZQotCXsKLQkJLyogTXVzdCBiZSBhbiBhdXhpbGlhcnkgcHJvY2VzcyAqLwotCQlBc3NlcnQo TXlBdXhQcm9jVHlwZSAhPSBOb3RBbkF1eFByb2Nlc3MpOwotCi0JCS8qCi0JCSAqIEFzc2ln biB0aGUgTXlCRUVudHJ5IGZvciBhbiBhdXhpbGlhcnkgcHJvY2Vzcy4gIFNpbmNlIGl0IGRv ZXNuJ3QKLQkJICogaGF2ZSBhIEJhY2tlbmRJZCwgdGhlIHNsb3QgaXMgc3RhdGljYWxseSBh bGxvY2F0ZWQgYmFzZWQgb24gdGhlCi0JCSAqIGF1eGlsaWFyeSBwcm9jZXNzIHR5cGUgKE15 QXV4UHJvY1R5cGUpLiAgQmFja2VuZHMgdXNlIHNsb3RzIGluZGV4ZWQKLQkJICogaW4gdGhl IHJhbmdlIGZyb20gMCB0byBNYXhCYWNrZW5kcyAoZXhjbHVzaXZlKSwgc28gd2UgdXNlCi0J CSAqIE1heEJhY2tlbmRzICsgQXV4UHJvY1R5cGUgYXMgdGhlIGluZGV4IG9mIHRoZSBzbG90 IGZvciBhbiBhdXhpbGlhcnkKLQkJICogcHJvY2Vzcy4KLQkJICovCi0JCU15QkVFbnRyeSA9 ICZCYWNrZW5kU3RhdHVzQXJyYXlbTWF4QmFja2VuZHMgKyBNeUF1eFByb2NUeXBlXTsKLQl9 CisJQXNzZXJ0KE15QmFja2VuZElkICE9IEludmFsaWRCYWNrZW5kSWQpOworCUFzc2VydChN eUJhY2tlbmRJZCA+PSAxICYmIE15QmFja2VuZElkIDw9IE51bUJhY2tlbmRTdGF0U2xvdHMp OworCU15QkVFbnRyeSA9ICZCYWNrZW5kU3RhdHVzQXJyYXlbTXlCYWNrZW5kSWQgLSAxXTsK IAogCS8qIFNldCB1cCBhIHByb2Nlc3MtZXhpdCBob29rIHRvIGNsZWFuIHVwICovCiAJb25f c2htZW1fZXhpdChwZ3N0YXRfYmVzaHV0ZG93bl9ob29rLCAwKTsKQEAgLTI4MSwxMiArMjYz LDEyIEBAIHBnc3RhdF9iZWluaXQodm9pZCkKICAqCUluaXRpYWxpemUgdGhpcyBiYWNrZW5k J3MgZW50cnkgaW4gdGhlIFBnQmFja2VuZFN0YXR1cyBhcnJheS4KICAqCUNhbGxlZCBmcm9t IEluaXRQb3N0Z3Jlcy4KICAqCi0gKglBcGFydCBmcm9tIGF1eGlsaWFyeSBwcm9jZXNzZXMs IE15QmFja2VuZElkLCBNeURhdGFiYXNlSWQsCi0gKglzZXNzaW9uIHVzZXJpZCwgYW5kIGFw cGxpY2F0aW9uX25hbWUgbXVzdCBiZSBzZXQgZm9yIGEKLSAqCWJhY2tlbmQgKGhlbmNlLCB0 aGlzIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIHBnc3RhdF9iZWluaXQpLgotICoJTm90ZSBh bHNvIHRoYXQgd2UgbXVzdCBiZSBpbnNpZGUgYSB0cmFuc2FjdGlvbiBpZiB0aGlzIGlzbid0 IGFuIGF1eAotICoJcHJvY2VzcywgYXMgd2UgbWF5IG5lZWQgdG8gZG8gZW5jb2RpbmcgY29u dmVyc2lvbiBvbiBzb21lIHN0cmluZ3MuCi0gKiAtLS0tLS0tLS0tCisgKglBcGFydCBmcm9t IGF1eGlsaWFyeSBwcm9jZXNzZXMsIE15RGF0YWJhc2VJZCwgc2Vzc2lvbiB1c2VyaWQsIGFu ZAorICoJYXBwbGljYXRpb25fbmFtZSBtdXN0IGFscmVhZHkgYmUgc2V0IChoZW5jZSwgdGhp cyBjYW5ub3QgYmUgY29tYmluZWQKKyAqCXdpdGggcGdzdGF0X2JlaW5pdCkuICBOb3RlIGFs c28gdGhhdCB3ZSBtdXN0IGJlIGluc2lkZSBhIHRyYW5zYWN0aW9uCisgKglpZiB0aGlzIGlz bid0IGFuIGF1eCBwcm9jZXNzLCBhcyB3ZSBtYXkgbmVlZCB0byBkbyBlbmNvZGluZyBjb252 ZXJzaW9uCisgKglvbiBzb21lIHN0cmluZ3MuCisgKi0tLS0tLS0tLS0KICAqLwogdm9pZAog cGdzdGF0X2Jlc3RhcnQodm9pZCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9tY3h0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tY3h0ZnVuY3MuYwppbmRl eCA0NzA4ZDczZjVmYS4uYTcyNjdkYzE1ZDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9tY3h0ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbWN4dGZ1 bmNzLmMKQEAgLTE0OCwxOSArMTQ4LDExIEBAIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250 ZXh0cyhQR19GVU5DVElPTl9BUkdTKQogCVBHUFJPQwkgICAqcHJvYzsKIAlCYWNrZW5kSWQJ YmFja2VuZElkID0gSW52YWxpZEJhY2tlbmRJZDsKIAotCXByb2MgPSBCYWNrZW5kUGlkR2V0 UHJvYyhwaWQpOwotCiAJLyoKIAkgKiBTZWUgaWYgdGhlIHByb2Nlc3Mgd2l0aCBnaXZlbiBw aWQgaXMgYSBiYWNrZW5kIG9yIGFuIGF1eGlsaWFyeSBwcm9jZXNzLgotCSAqCi0JICogSWYg dGhlIGdpdmVuIHByb2Nlc3MgaXMgYSBiYWNrZW5kLCB1c2UgaXRzIGJhY2tlbmQgaWQgaW4K LQkgKiBTZW5kUHJvY1NpZ25hbCgpIGxhdGVyIHRvIHNwZWVkIHVwIHRoZSBvcGVyYXRpb24u IE90aGVyd2lzZSwgZG9uJ3QgZG8KLQkgKiB0aGF0IGJlY2F1c2UgYXV4aWxpYXJ5IHByb2Nl c3NlcyAoZXhjZXB0IHRoZSBzdGFydHVwIHByb2Nlc3MpIGRvbid0Ci0JICogaGF2ZSBhIHZh bGlkIGJhY2tlbmQgaWQuCiAJICovCi0JaWYgKHByb2MgIT0gTlVMTCkKLQkJYmFja2VuZElk ID0gcHJvYy0+YmFja2VuZElkOwotCWVsc2UKKwlwcm9jID0gQmFja2VuZFBpZEdldFByb2Mo cGlkKTsKKwlpZiAocHJvYyA9PSBOVUxMKQogCQlwcm9jID0gQXV4aWxpYXJ5UGlkR2V0UHJv YyhwaWQpOwogCiAJLyoKQEAgLTE4Myw2ICsxNzUsOCBAQCBwZ19sb2dfYmFja2VuZF9tZW1v cnlfY29udGV4dHMoUEdfRlVOQ1RJT05fQVJHUykKIAkJUEdfUkVUVVJOX0JPT0woZmFsc2Up OwogCX0KIAorCWlmIChwcm9jICE9IE5VTEwpCisJCWJhY2tlbmRJZCA9IEdldEJhY2tlbmRJ ZEZyb21QR1Byb2MocHJvYyk7CiAJaWYgKFNlbmRQcm9jU2lnbmFsKHBpZCwgUFJPQ1NJR19M T0dfTUVNT1JZX0NPTlRFWFQsIGJhY2tlbmRJZCkgPCAwKQogCXsKIAkJLyogQWdhaW4sIGp1 c3QgYSB3YXJuaW5nIHRvIGFsbG93IGxvb3BzICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9lcnJvci9jc3Zsb2cuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2Nzdmxv Zy5jCmluZGV4IDFiNjJiMDdmMjMxLi42OTJlZTNjMTQ5MSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvZXJyb3IvY3N2bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvZXJy b3IvY3N2bG9nLmMKQEAgLTE1Miw4ICsxNTIsOCBAQCB3cml0ZV9jc3Zsb2coRXJyb3JEYXRh ICplZGF0YSkKIAogCS8qIFZpcnR1YWwgdHJhbnNhY3Rpb24gaWQgKi8KIAkvKiBrZWVwIFZY SUQgZm9ybWF0IGluIHN5bmMgd2l0aCBsb2NrZnVuY3MuYyAqLwotCWlmIChNeVByb2MgIT0g TlVMTCAmJiBNeVByb2MtPmJhY2tlbmRJZCAhPSBJbnZhbGlkQmFja2VuZElkKQotCQlhcHBl bmRTdHJpbmdJbmZvKCZidWYsICIlZC8ldSIsIE15UHJvYy0+YmFja2VuZElkLCBNeVByb2Mt Pmx4aWQpOworCWlmIChNeVByb2MgIT0gTlVMTCkKKwkJYXBwZW5kU3RyaW5nSW5mbygmYnVm LCAiJWQvJXUiLCBNeUJhY2tlbmRJZCwgTXlQcm9jLT5seGlkKTsKIAlhcHBlbmRTdHJpbmdJ bmZvQ2hhcigmYnVmLCAnLCcpOwogCiAJLyogVHJhbnNhY3Rpb24gaWQgKi8KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2Vycm9yL2Vsb2cuYwppbmRleCAyYzdhMjBlM2QzMS4uMTAyNDlmMTQwZmUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9lcnJvci9lbG9nLmMKQEAgLTMwNzQsMTggKzMwNzQsMTggQEAgbG9nX3N0YXR1c19m b3JtYXQoU3RyaW5nSW5mbyBidWYsIGNvbnN0IGNoYXIgKmZvcm1hdCwgRXJyb3JEYXRhICpl ZGF0YSkKIAkJCQlicmVhazsKIAkJCWNhc2UgJ3YnOgogCQkJCS8qIGtlZXAgVlhJRCBmb3Jt YXQgaW4gc3luYyB3aXRoIGxvY2tmdW5jcy5jICovCi0JCQkJaWYgKE15UHJvYyAhPSBOVUxM ICYmIE15UHJvYy0+YmFja2VuZElkICE9IEludmFsaWRCYWNrZW5kSWQpCisJCQkJaWYgKE15 UHJvYyAhPSBOVUxMKQogCQkJCXsKIAkJCQkJaWYgKHBhZGRpbmcgIT0gMCkKIAkJCQkJewog CQkJCQkJY2hhcgkJc3RyZmJ1ZlsxMjhdOwogCiAJCQkJCQlzbnByaW50ZihzdHJmYnVmLCBz aXplb2Yoc3RyZmJ1ZikgLSAxLCAiJWQvJXUiLAotCQkJCQkJCQkgTXlQcm9jLT5iYWNrZW5k SWQsIE15UHJvYy0+bHhpZCk7CisJCQkJCQkJCSBNeUJhY2tlbmRJZCwgTXlQcm9jLT5seGlk KTsKIAkJCQkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiJSpzIiwgcGFkZGluZywgc3RyZmJ1 Zik7CiAJCQkJCX0KIAkJCQkJZWxzZQotCQkJCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIl ZC8ldSIsIE15UHJvYy0+YmFja2VuZElkLCBNeVByb2MtPmx4aWQpOworCQkJCQkJYXBwZW5k U3RyaW5nSW5mbyhidWYsICIlZC8ldSIsIE15QmFja2VuZElkLCBNeVByb2MtPmx4aWQpOwog CQkJCX0KIAkJCQllbHNlIGlmIChwYWRkaW5nICE9IDApCiAJCQkJCWFwcGVuZFN0cmluZ0lu Zm9TcGFjZXMoYnVmLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvZXJyb3IvanNv bmxvZy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvZXJyb3IvanNvbmxvZy5jCmluZGV4IDI5MDM1 NjFmMWM0Li4zZWJlMGI3YjEzYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvZXJy b3IvanNvbmxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2pzb25sb2cuYwpA QCAtMTk3LDggKzE5Nyw4IEBAIHdyaXRlX2pzb25sb2coRXJyb3JEYXRhICplZGF0YSkKIAog CS8qIFZpcnR1YWwgdHJhbnNhY3Rpb24gaWQgKi8KIAkvKiBrZWVwIFZYSUQgZm9ybWF0IGlu IHN5bmMgd2l0aCBsb2NrZnVuY3MuYyAqLwotCWlmIChNeVByb2MgIT0gTlVMTCAmJiBNeVBy b2MtPmJhY2tlbmRJZCAhPSBJbnZhbGlkQmFja2VuZElkKQotCQlhcHBlbmRKU09OS2V5VmFs dWVGbXQoJmJ1ZiwgInZ4aWQiLCB0cnVlLCAiJWQvJXUiLCBNeVByb2MtPmJhY2tlbmRJZCwK KwlpZiAoTXlQcm9jICE9IE5VTEwpCisJCWFwcGVuZEpTT05LZXlWYWx1ZUZtdCgmYnVmLCAi dnhpZCIsIHRydWUsICIlZC8ldSIsIE15QmFja2VuZElkLAogCQkJCQkJCSAgTXlQcm9jLT5s eGlkKTsKIAogCS8qIFRyYW5zYWN0aW9uIGlkICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9pbml0L3Bvc3Rpbml0LmMgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rp bml0LmMKaW5kZXggMWFkMzM2NzE1OTguLmU4MjJjZDYxZDVmIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv aW5pdC9wb3N0aW5pdC5jCkBAIC03NDAsMTggKzc0MCwxMCBAQCBJbml0UG9zdGdyZXMoY29u c3QgY2hhciAqaW5fZGJuYW1lLCBPaWQgZGJvaWQsCiAJLyoKIAkgKiBJbml0aWFsaXplIG15 IGVudHJ5IGluIHRoZSBzaGFyZWQtaW52YWxpZGF0aW9uIG1hbmFnZXIncyBhcnJheSBvZgog CSAqIHBlci1iYWNrZW5kIGRhdGEuCi0JICoKLQkgKiBTZXRzIHVwIE15QmFja2VuZElkLCBh IHVuaXF1ZSBiYWNrZW5kIGlkZW50aWZpZXIuCiAJICovCi0JTXlCYWNrZW5kSWQgPSBJbnZh bGlkQmFja2VuZElkOwotCiAJU2hhcmVkSW52YWxCYWNrZW5kSW5pdChmYWxzZSk7CiAKLQlp ZiAoTXlCYWNrZW5kSWQgPiBNYXhCYWNrZW5kcyB8fCBNeUJhY2tlbmRJZCA8PSAwKQotCQll bG9nKEZBVEFMLCAiYmFkIGJhY2tlbmQgSUQ6ICVkIiwgTXlCYWNrZW5kSWQpOwotCi0JLyog Tm93IHRoYXQgd2UgaGF2ZSBhIEJhY2tlbmRJZCwgd2UgY2FuIHBhcnRpY2lwYXRlIGluIFBy b2NTaWduYWwgKi8KLQlQcm9jU2lnbmFsSW5pdChNeUJhY2tlbmRJZCk7CisJUHJvY1NpZ25h bEluaXQoKTsKIAogCS8qCiAJICogQWxzbyBzZXQgdXAgdGltZW91dCBoYW5kbGVycyBuZWVk ZWQgZm9yIGJhY2tlbmQgb3BlcmF0aW9uLiAgV2UgbmVlZApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMgYi9zcmMvYmFja2VuZC91dGlscy90aW1lL3Nu YXBtZ3IuYwppbmRleCA2NzVlODFkODJkNy4uOTRkZGY2OGZhNTIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL3RpbWUvc25hcG1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L3RpbWUvc25hcG1nci5jCkBAIC0xMTU0LDcgKzExNTQsNyBAQCBFeHBvcnRTbmFwc2hvdChT bmFwc2hvdCBzbmFwc2hvdCkKIAkgKiBpbnNpZGUgdGhlIHRyYW5zYWN0aW9uIGZyb20gMS4K IAkgKi8KIAlzbnByaW50ZihwYXRoLCBzaXplb2YocGF0aCksIFNOQVBTSE9UX0VYUE9SVF9E SVIgIi8lMDhYLSUwOFgtJWQiLAotCQkJIE15UHJvYy0+YmFja2VuZElkLCBNeVByb2MtPmx4 aWQsIGxpc3RfbGVuZ3RoKGV4cG9ydGVkU25hcHNob3RzKSArIDEpOworCQkJIE15QmFja2Vu ZElkLCBNeVByb2MtPmx4aWQsIGxpc3RfbGVuZ3RoKGV4cG9ydGVkU25hcHNob3RzKSArIDEp OwogCiAJLyoKIAkgKiBDb3B5IHRoZSBzbmFwc2hvdCBpbnRvIFRvcFRyYW5zYWN0aW9uQ29u dGV4dCwgYWRkIGl0IHRvIHRoZQpAQCAtMTE4MSw3ICsxMTgxLDcgQEAgRXhwb3J0U25hcHNo b3QoU25hcHNob3Qgc25hcHNob3QpCiAJICovCiAJaW5pdFN0cmluZ0luZm8oJmJ1Zik7CiAK LQlhcHBlbmRTdHJpbmdJbmZvKCZidWYsICJ2eGlkOiVkLyV1XG4iLCBNeVByb2MtPmJhY2tl bmRJZCwgTXlQcm9jLT5seGlkKTsKKwlhcHBlbmRTdHJpbmdJbmZvKCZidWYsICJ2eGlkOiVk LyV1XG4iLCBNeUJhY2tlbmRJZCwgTXlQcm9jLT5seGlkKTsKIAlhcHBlbmRTdHJpbmdJbmZv KCZidWYsICJwaWQ6JWRcbiIsIE15UHJvY1BpZCk7CiAJYXBwZW5kU3RyaW5nSW5mbygmYnVm LCAiZGJpZDoldVxuIiwgTXlEYXRhYmFzZUlkKTsKIAlhcHBlbmRTdHJpbmdJbmZvKCZidWYs ICJpc286JWRcbiIsIFhhY3RJc29MZXZlbCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9t aXNjYWRtaW4uaCBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCmluZGV4IDBiMDFjMWYwOTM1 Li5jYmRjNjFiODU3NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKKysr IGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKQEAgLTQ0NCw4ICs0NDQsNiBAQCB0eXBlZGVm IGVudW0KIAlXYWxXcml0ZXJQcm9jZXNzLAogCVdhbFJlY2VpdmVyUHJvY2VzcywKIAlXYWxT dW1tYXJpemVyUHJvY2VzcywKLQotCU5VTV9BVVhQUk9DVFlQRVMJCQkvKiBNdXN0IGJlIGxh c3QhICovCiB9IEF1eFByb2NUeXBlOwogCiBleHRlcm4gUEdETExJTVBPUlQgQXV4UHJvY1R5 cGUgTXlBdXhQcm9jVHlwZTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYmFj a2VuZGlkLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2JhY2tlbmRpZC5oCmluZGV4IDUwYWM5 ODJkYTE5Li4wMTM4NzcyM2Y3OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9i YWNrZW5kaWQuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2JhY2tlbmRpZC5oCkBAIC0x NCwxMSArMTQsMTUgQEAKICNpZm5kZWYgQkFDS0VORElEX0gKICNkZWZpbmUgQkFDS0VORElE X0gKIAotLyogLS0tLS0tLS0tLS0tLS0tLQotICoJCS1jaW0gOC8xNy85MAotICogLS0tLS0t LS0tLS0tLS0tLQorLyoKKyAqIEJhY2tlbmRJZCB1bmlxdWVseSBpZGVudGlmaWVzIGFuIGFj dGl2ZSBiYWNrZW5kIG9yIGF1eGlsaWFyeSBwcm9jZXNzLiAgSXQncworICogYXNzaWduZWQg YXQgYmFja2VuZCBzdGFydHVwIGFmdGVyIGF1dGhlbnRpY2F0aW9uLiAgTm90ZSB0aGF0IGEg YmFja2VuZCBJRAorICogY2FuIGJlIHJldXNlZCBmb3IgYSBkaWZmZXJlbnQgYmFja2VuZCBp bW1lZGlhdGVseSBhZnRlciBhIGJhY2tlbmQgZXhpdHMuCisgKgorICogQmFja2VuZCBJRHMg YXJlIGFzc2lnbmVkIHN0YXJ0aW5nIGZyb20gMS4gRm9yIGhpc3RvcmljYWwgcmVhc29ucywg QmFja2VuZElkCisgKiAwIGlzIHVudXNlZCwgYnV0IEludmFsaWRCYWNrZW5kSWQgaXMgZGVm aW5lZCBhcyAtMS4KICAqLwotdHlwZWRlZiBpbnQgQmFja2VuZElkOwkJCS8qIHVuaXF1ZSBj dXJyZW50bHkgYWN0aXZlIGJhY2tlbmQgaWRlbnRpZmllciAqLwordHlwZWRlZiBpbnQgQmFj a2VuZElkOwogCiAjZGVmaW5lIEludmFsaWRCYWNrZW5kSWQJCSgtMSkKIApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9sb2NrLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2xv Y2suaAppbmRleCBlZDYwNzFmMzI4Ni4uMDNhOTIwYjIyNTQgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3N0b3JhZ2UvbG9jay5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG9jay5o CkBAIC03NSw3ICs3NSw3IEBAIHR5cGVkZWYgc3RydWN0CiAJKCh2eGlkKS5iYWNrZW5kSWQg PSBJbnZhbGlkQmFja2VuZElkLCBcCiAJICh2eGlkKS5sb2NhbFRyYW5zYWN0aW9uSWQgPSBJ bnZhbGlkTG9jYWxUcmFuc2FjdGlvbklkKQogI2RlZmluZSBHRVRfVlhJRF9GUk9NX1BHUFJP Qyh2eGlkLCBwcm9jKSBcCi0JKCh2eGlkKS5iYWNrZW5kSWQgPSAocHJvYykuYmFja2VuZElk LCBcCisJKCh2eGlkKS5iYWNrZW5kSWQgPSBHZXRCYWNrZW5kSWRGcm9tUEdQcm9jKCYocHJv YykpLCBcCiAJICh2eGlkKS5sb2NhbFRyYW5zYWN0aW9uSWQgPSAocHJvYykubHhpZCkKIAog LyogTUFYX0xPQ0tNT0RFUyBjYW5ub3QgYmUgbGFyZ2VyIHRoYW4gdGhlICMgb2YgYml0cyBp biBMT0NLTUFTSyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgg Yi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaAppbmRleCAzN2NmOGI0MDY3ZC4uMGQ0MjRh MzMzNGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCisrKyBiL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCkBAIC0xOTUsNyArMTk1LDYgQEAgc3RydWN0IFBH UFJPQwogCQkJCQkJCQkgKiBkYXRhIG1pcnJvcmVkIGZyb20gdGhpcyBQR1BST0MgKi8KIAog CS8qIFRoZXNlIGZpZWxkcyBhcmUgemVybyB3aGlsZSBhIGJhY2tlbmQgaXMgc3RpbGwgc3Rh cnRpbmcgdXA6ICovCi0JQmFja2VuZElkCWJhY2tlbmRJZDsJCS8qIFRoaXMgYmFja2VuZCdz IGJhY2tlbmQgSUQgKGlmIGFzc2lnbmVkKSAqLwogCU9pZAkJCWRhdGFiYXNlSWQ7CQkvKiBP SUQgb2YgZGF0YWJhc2UgdGhpcyBiYWNrZW5kIGlzIHVzaW5nICovCiAJT2lkCQkJcm9sZUlk OwkJCS8qIE9JRCBvZiByb2xlIHVzaW5nIHRoaXMgYmFja2VuZCAqLwogCkBAIC00MDUsOSAr NDA0LDE2IEBAIGV4dGVybiBQR0RMTElNUE9SVCBQUk9DX0hEUiAqUHJvY0dsb2JhbDsKIAog ZXh0ZXJuIFBHRExMSU1QT1JUIFBHUFJPQyAqUHJlcGFyZWRYYWN0UHJvY3M7CiAKLS8qIEFj Y2Vzc29yIGZvciBQR1BST0MgZ2l2ZW4gYSBwZ3Byb2Nuby4gKi8KKy8qCisgKiBBY2Nlc3Nv cnMgZm9yIGdldHRpbmcgUEdQUk9DIGdpdmVuIGEgcGdwcm9jbm8gb3IgQmFja2VuZElkLCBh bmQgdmljZSB2ZXJzYS4KKyAqCisgKiBGb3IgaGlzdG9yaWNhbCByZWFzb25zLCBzb21lIGNv ZGUgdXNlcyAwLWJhc2VkICJwcm9jIG51bWJlcnMiLCB3aGlsZSBvdGhlcgorICogY29kZSB1 c2VzIDEtYmFzZWQgYmFja2VuZCBJRHMuCisgKi8KICNkZWZpbmUgR2V0UEdQcm9jQnlOdW1i ZXIobikgKCZQcm9jR2xvYmFsLT5hbGxQcm9jc1sobildKQogI2RlZmluZSBHZXROdW1iZXJG cm9tUEdQcm9jKHByb2MpICgocHJvYykgLSAmUHJvY0dsb2JhbC0+YWxsUHJvY3NbMF0pCisj ZGVmaW5lIEdldFBHUHJvY0J5QmFja2VuZElkKG4pICgmUHJvY0dsb2JhbC0+YWxsUHJvY3Nb KG4pIC0gMV0pCisjZGVmaW5lIEdldEJhY2tlbmRJZEZyb21QR1Byb2MocHJvYykgKEdldE51 bWJlckZyb21QR1Byb2MocHJvYykgKyAxKQogCiAvKgogICogV2Ugc2V0IGFzaWRlIHNvbWUg ZXh0cmEgUEdQUk9DIHN0cnVjdHVyZXMgZm9yIGF1eGlsaWFyeSBwcm9jZXNzZXMsCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NhcnJheS5oIGIvc3JjL2luY2x1ZGUv c3RvcmFnZS9wcm9jYXJyYXkuaAppbmRleCBmM2ViYTliNzY0MC4uM2FmNzU3N2U4YzYgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY2FycmF5LmgKKysrIGIvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9wcm9jYXJyYXkuaApAQCAtNjQsNiArNjQsMTAgQEAgZXh0ZXJuIFZp cnR1YWxUcmFuc2FjdGlvbklkICpHZXRWaXJ0dWFsWElEc0RlbGF5aW5nQ2hrcHQoaW50ICpu dnhpZHMsIGludCB0eXBlKTsKIGV4dGVybiBib29sIEhhdmVWaXJ0dWFsWElEc0RlbGF5aW5n Q2hrcHQoVmlydHVhbFRyYW5zYWN0aW9uSWQgKnZ4aWRzLAogCQkJCQkJCQkJCSBpbnQgbnZ4 aWRzLCBpbnQgdHlwZSk7CiAKK2V4dGVybiBQR1BST0MgKkJhY2tlbmRJZEdldFByb2MoaW50 IGJhY2tlbmRJRCk7CitleHRlcm4gdm9pZCBCYWNrZW5kSWRHZXRUcmFuc2FjdGlvbklkcyhp bnQgYmFja2VuZElELCBUcmFuc2FjdGlvbklkICp4aWQsCisJCQkJCQkJCQkgICBUcmFuc2Fj dGlvbklkICp4bWluLCBpbnQgKm5zdWJ4aWQsCisJCQkJCQkJCQkgICBib29sICpvdmVyZmxv d2VkKTsKIGV4dGVybiBQR1BST0MgKkJhY2tlbmRQaWRHZXRQcm9jKGludCBwaWQpOwogZXh0 ZXJuIFBHUFJPQyAqQmFja2VuZFBpZEdldFByb2NXaXRoTG9jayhpbnQgcGlkKTsKIGV4dGVy biBpbnQJQmFja2VuZFhpZEdldFBpZChUcmFuc2FjdGlvbklkIHhpZCk7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCBiL3NyYy9pbmNsdWRlL3N0b3Jh Z2UvcHJvY3NpZ25hbC5oCmluZGV4IDUyZGNiNGMyYWRmLi5mZWJkZGEzNjExYyAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKKysrIGIvc3JjL2luY2x1 ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKQEAgLTYyLDcgKzYyLDcgQEAgdHlwZWRlZiBlbnVt CiBleHRlcm4gU2l6ZSBQcm9jU2lnbmFsU2htZW1TaXplKHZvaWQpOwogZXh0ZXJuIHZvaWQg UHJvY1NpZ25hbFNobWVtSW5pdCh2b2lkKTsKIAotZXh0ZXJuIHZvaWQgUHJvY1NpZ25hbElu aXQoaW50IHBzc19pZHgpOworZXh0ZXJuIHZvaWQgUHJvY1NpZ25hbEluaXQodm9pZCk7CiBl eHRlcm4gaW50CVNlbmRQcm9jU2lnbmFsKHBpZF90IHBpZCwgUHJvY1NpZ25hbFJlYXNvbiBy ZWFzb24sCiAJCQkJCQkgICBCYWNrZW5kSWQgYmFja2VuZElkKTsKIApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvc3RvcmFnZS9zaW52YWxhZHQuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv c2ludmFsYWR0LmgKaW5kZXggYWEzZDIwM2VmY2EuLmMzYzk3YjNmOGI3IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9zdG9yYWdlL3NpbnZhbGFkdC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0 b3JhZ2Uvc2ludmFsYWR0LmgKQEAgLTMxLDEwICszMSw2IEBACiBleHRlcm4gU2l6ZSBTSW52 YWxTaG1lbVNpemUodm9pZCk7CiBleHRlcm4gdm9pZCBDcmVhdGVTaGFyZWRJbnZhbGlkYXRp b25TdGF0ZSh2b2lkKTsKIGV4dGVybiB2b2lkIFNoYXJlZEludmFsQmFja2VuZEluaXQoYm9v bCBzZW5kT25seSk7Ci1leHRlcm4gUEdQUk9DICpCYWNrZW5kSWRHZXRQcm9jKGludCBiYWNr ZW5kSUQpOwotZXh0ZXJuIHZvaWQgQmFja2VuZElkR2V0VHJhbnNhY3Rpb25JZHMoaW50IGJh Y2tlbmRJRCwgVHJhbnNhY3Rpb25JZCAqeGlkLAotCQkJCQkJCQkJICAgVHJhbnNhY3Rpb25J ZCAqeG1pbiwgaW50ICpuc3VieGlkLAotCQkJCQkJCQkJICAgYm9vbCAqb3ZlcmZsb3dlZCk7 CiAKIGV4dGVybiB2b2lkIFNJSW5zZXJ0RGF0YUVudHJpZXMoY29uc3QgU2hhcmVkSW52YWxp ZGF0aW9uTWVzc2FnZSAqZGF0YSwgaW50IG4pOwogZXh0ZXJuIGludAlTSUdldERhdGFFbnRy aWVzKFNoYXJlZEludmFsaWRhdGlvbk1lc3NhZ2UgKmRhdGEsIGludCBkYXRhc2l6ZSk7Ci0t IAoyLjM5LjIKCg== --------------RUX0UwSvsUmik3v5mDKrFt0g Content-Type: text/x-patch; charset=UTF-8; name="v8-0003-Replace-lastBackend-with-an-array-of-in-use-slots.patch" Content-Disposition: attachment; filename*0="v8-0003-Replace-lastBackend-with-an-array-of-in-use-slots.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA5NGZkNDZjOWVmMzBiYTVlOGFjMWE4ODczZmNlNTc3YTRiZTQyNWY0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IE1vbiwgMjkgSmFuIDIwMjQgMjI6NTc6NDkgKzAyMDAK U3ViamVjdDogW1BBVENIIHY4IDMvNV0gUmVwbGFjZSAnbGFzdEJhY2tlbmQnIHdpdGggYW4g YXJyYXkgb2YgaW4tdXNlIHNsb3RzCgpOb3cgdGhhdCB0aGUgcHJvY1N0YXRlIGFycmF5IGlz IGluZGV4ZWQgYnkgcGdwcm9jbm8sIHRoZSAnbGFzdEJhY2tlbmQnCm9wdGltaXphdGlvbiBp cyB1c2VsZXNzLCBiZWNhdXNlIGF1eCBwcm9jZXNzZXMgYXJlIGFzc2lnbmVkIFBHUFJPQwpz bG90cyBhbmQgaGVuY2UgaGF2ZSBudW1iZXJzIGhpZ2hlciB0aGFuIG1heF9jb25uZWN0aW9u LiBTbwonbGFzdEJhY2tlbmQnIHdhcyBhbHdheXMgc2V0IHRvIGFsbW9zdCB0aGUgZW5kIG9m IHRoZSBhcnJheS4KClRvIHJlcGxhY2UgdGhhdCBvcHRpbWl6YXRpb24sIG1hbnRhaW4gYSBk ZW5zZSBhcnJheSBvZiBpbi11c2UKaW5kZXhlcy4gVGhpcydzIHJlZHVuZGFudCB3aXRoIFBy b2dHbG9iYWwtPnByb2NhcnJheSwgYnV0IEkgd2FzIGFmcmFpZApvZiBhZGRpbmcgYW55IG1v cmUgY29udGVudGlvbiB0byBQcm9jQXJyYXlMb2NrLCBhbmQgdGhpcyBrZWVwcyB0aGUKY29k ZSBpc29sYXRlZCB0byBzaW52YWxhZHQuYyB0b28uCgpJdCdzIG5vdCBjbGVhciBpZiB3ZSBu ZWVkIHRoYXQgb3B0aW1pemF0aW9uIGF0IGFsbC4gSSB3YXMgYWJsZSB0bwp3cml0ZSBhIHRl c3QgY2FzZSB0aGF0IGJlY29tZSBzbG93ZXIgd2l0aG91dCB0aGlzOiBzZXQgbWF4X2Nvbm5l Y3Rpb25zCnRvIGEgdmVyeSBoaWdoIG51bWJlciAoPiA1MDAwKSwgYW5kIGNyZWF0ZSt0cnVu Y2F0ZSBhIHRhYmxlIGluIHRoZQpzYW1lIHRyYW5zYWN0aW9uIHRob3VzYW5kcyBvZiB0aW1l cyB0byBzZW5kIGludmFsaWRhdGlvbiBtZXNzYWdlcywKd2l0aCBmc3luYz1vZmYuIFRoYXQg YmVjYW1lIGFib3V0IDIwJSBzbG93ZXIgb24gbXkgbGFwdG9wLiAgQXJndWFibHkKdGhhdCdz IHNvIHVucmVhbGlzdGljIHRoYXQgaXQgZG9lc24ndCBtYXR0ZXIsIGJ1dCBuZXZlcnRoZWxl c3MsIHRoaXMKY29tbWl0IHJlc3RvcmVzIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGF0LgotLS0K IHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpbnZhbGFkdC5jIHwgNTggKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAzNSBpbnNlcnRpb25zKCspLCAy MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9z aW52YWxhZHQuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpbnZhbGFkdC5jCmluZGV4 IDgxMDU3MTdjNTc4Li40ZDQ0YjkwZTdiOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvc2ludmFsYWR0LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2lu dmFsYWR0LmMKQEAgLTE3MSw3ICsxNzEsNiBAQCB0eXBlZGVmIHN0cnVjdCBTSVNlZwogCWlu dAkJCW1pbk1zZ051bTsJCS8qIG9sZGVzdCBtZXNzYWdlIHN0aWxsIG5lZWRlZCAqLwogCWlu dAkJCW1heE1zZ051bTsJCS8qIG5leHQgbWVzc2FnZSBudW1iZXIgdG8gYmUgYXNzaWduZWQg Ki8KIAlpbnQJCQluZXh0VGhyZXNob2xkOwkvKiAjIG9mIG1lc3NhZ2VzIHRvIGNhbGwgU0lD bGVhbnVwUXVldWUgKi8KLQlpbnQJCQlsYXN0QmFja2VuZDsJLyogaW5kZXggb2YgbGFzdCBh Y3RpdmUgcHJvY1N0YXRlIGVudHJ5LCArMSAqLwogCiAJc2xvY2tfdAkJbXNnbnVtTG9jazsJ CS8qIHNwaW5sb2NrIHByb3RlY3RpbmcgbWF4TXNnTnVtICovCiAKQEAgLTE4MSw4ICsxODAs MTQgQEAgdHlwZWRlZiBzdHJ1Y3QgU0lTZWcKIAlTaGFyZWRJbnZhbGlkYXRpb25NZXNzYWdl IGJ1ZmZlcltNQVhOVU1NRVNTQUdFU107CiAKIAkvKgotCSAqIFBlci1iYWNrZW5kIGludmFs aWRhdGlvbiBzdGF0ZSBpbmZvIChoYXMgTnVtUHJvY1N0YXRlU2xvdHMgZW50cmllcykuCisJ ICogUGVyLWJhY2tlbmQgaW52YWxpZGF0aW9uIHN0YXRlIGluZm8uCisJICoKKwkgKiAncHJv Y1N0YXRlJyBoYXMgTnVtUHJvY1N0YXRlU2xvdHMgZW50cmllcywgYW5kIGlzIGluZGV4ZWQg YnkgcGdwcm9jbm8uCisJICogJ251bVByb2NzJyBpcyB0aGUgbnVtYmVyIG9mIHNsb3RzIGN1 cnJlbnRseSBpbiB1c2UsIGFuZCAncGdwcm9jbm9zJyBpcworCSAqIGEgZGVuc2UgYXJyYXkg b2YgdGhlaXIgaW5kZXhlcywgdG8gc3BlZWQgdXAgc2Nhbm5pbmcgYWxsIGluLXVzZSBzbG90 cy4KIAkgKi8KKwlpbnQJCQludW1Qcm9jczsKKwlpbnQJCSAgICpwZ3Byb2Nub3M7CiAJUHJv Y1N0YXRlCXByb2NTdGF0ZVtGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOwogfSBTSVNlZzsKIApA QCAtMjEwLDcgKzIxNSw4IEBAIFNJbnZhbFNobWVtU2l6ZSh2b2lkKQogCVNpemUJCXNpemU7 CiAKIAlzaXplID0gb2Zmc2V0b2YoU0lTZWcsIHByb2NTdGF0ZSk7Ci0Jc2l6ZSA9IGFkZF9z aXplKHNpemUsIG11bF9zaXplKHNpemVvZihQcm9jU3RhdGUpLCBOdW1Qcm9jU3RhdGVTbG90 cykpOworCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShzaXplb2YoUHJvY1N0YXRl KSwgTnVtUHJvY1N0YXRlU2xvdHMpKTsJLyogcHJvY1N0YXRlICovCisJc2l6ZSA9IGFkZF9z aXplKHNpemUsIG11bF9zaXplKHNpemVvZihpbnQpLCBOdW1Qcm9jU3RhdGVTbG90cykpOwkv KiBwZ3Byb2Nub3MgKi8KIAogCXJldHVybiBzaXplOwogfQpAQCAtMjM1LDcgKzI0MSw2IEBA IENyZWF0ZVNoYXJlZEludmFsaWRhdGlvblN0YXRlKHZvaWQpCiAJc2htSW52YWxCdWZmZXIt Pm1pbk1zZ051bSA9IDA7CiAJc2htSW52YWxCdWZmZXItPm1heE1zZ051bSA9IDA7CiAJc2ht SW52YWxCdWZmZXItPm5leHRUaHJlc2hvbGQgPSBDTEVBTlVQX01JTjsKLQlzaG1JbnZhbEJ1 ZmZlci0+bGFzdEJhY2tlbmQgPSAwOwogCVNwaW5Mb2NrSW5pdCgmc2htSW52YWxCdWZmZXIt Pm1zZ251bUxvY2spOwogCiAJLyogVGhlIGJ1ZmZlcltdIGFycmF5IGlzIGluaXRpYWxseSBh bGwgdW51c2VkLCBzbyB3ZSBuZWVkIG5vdCBmaWxsIGl0ICovCkBAIC0yNTAsNiArMjU1LDgg QEAgQ3JlYXRlU2hhcmVkSW52YWxpZGF0aW9uU3RhdGUodm9pZCkKIAkJc2htSW52YWxCdWZm ZXItPnByb2NTdGF0ZVtpXS5oYXNNZXNzYWdlcyA9IGZhbHNlOwogCQlzaG1JbnZhbEJ1ZmZl ci0+cHJvY1N0YXRlW2ldLm5leHRMWElEID0gSW52YWxpZExvY2FsVHJhbnNhY3Rpb25JZDsK IAl9CisJc2htSW52YWxCdWZmZXItPm51bVByb2NzID0gMDsKKwlzaG1JbnZhbEJ1ZmZlci0+ cGdwcm9jbm9zID0gKGludCAqKSAmc2htSW52YWxCdWZmZXItPnByb2NTdGF0ZVtpXTsKIH0K IAogLyoKQEAgLTI2MiwxMyArMjY5LDE1IEBAIFNoYXJlZEludmFsQmFja2VuZEluaXQoYm9v bCBzZW5kT25seSkKIAlQcm9jU3RhdGUgICpzdGF0ZVA7CiAJcGlkX3QJCW9sZFBpZDsKIAlT SVNlZwkgICAqc2VnUCA9IHNobUludmFsQnVmZmVyOworCWludAkJCXBncHJvY25vOwogCiAJ aWYgKE15QmFja2VuZElkIDw9IDApCiAJCWVsb2coRVJST1IsICJNeUJhY2tlbmRJZCBub3Qg c2V0Iik7CiAJaWYgKE15QmFja2VuZElkID4gTnVtUHJvY1N0YXRlU2xvdHMpCiAJCWVsb2co UEFOSUMsICJ1bmV4cGVjdGVkIE15QmFja2VuZElkICVkIGluIFNoYXJlZEludmFsQmFja2Vu ZEluaXQgKG1heCAlZCkiLAogCQkJIE15QmFja2VuZElkLCBOdW1Qcm9jU3RhdGVTbG90cyk7 Ci0Jc3RhdGVQID0gJnNlZ1AtPnByb2NTdGF0ZVtNeUJhY2tlbmRJZCAtIDFdOworCXBncHJv Y25vID0gTXlCYWNrZW5kSWQgLSAxOworCXN0YXRlUCA9ICZzZWdQLT5wcm9jU3RhdGVbcGdw cm9jbm9dOwogCiAJLyoKIAkgKiBUaGlzIGNhbiBydW4gaW4gcGFyYWxsZWwgd2l0aCByZWFk IG9wZXJhdGlvbnMsIGJ1dCBub3Qgd2l0aCB3cml0ZQpAQCAtMjg1LDggKzI5NCw3IEBAIFNo YXJlZEludmFsQmFja2VuZEluaXQoYm9vbCBzZW5kT25seSkKIAkJCSBNeUJhY2tlbmRJZCwg b2xkUGlkKTsKIAl9CiAKLQlpZiAoTXlCYWNrZW5kSWQgPiBzZWdQLT5sYXN0QmFja2VuZCkK LQkJc2VnUC0+bGFzdEJhY2tlbmQgPSBNeUJhY2tlbmRJZDsKKwlzaG1JbnZhbEJ1ZmZlci0+ cGdwcm9jbm9zW3NobUludmFsQnVmZmVyLT5udW1Qcm9jcysrXSA9IHBncHJvY25vOwogCiAJ LyogRmV0Y2ggbmV4dCBsb2NhbCB0cmFuc2FjdGlvbiBJRCBpbnRvIGxvY2FsIG1lbW9yeSAq LwogCW5leHRMb2NhbFRyYW5zYWN0aW9uSWQgPSBzdGF0ZVAtPm5leHRMWElEOwpAQCAtMzE4 LDEzICszMjYsMTQgQEAgQ2xlYW51cEludmFsaWRhdGlvblN0YXRlKGludCBzdGF0dXMsIERh dHVtIGFyZykKIHsKIAlTSVNlZwkgICAqc2VnUCA9IChTSVNlZyAqKSBEYXR1bUdldFBvaW50 ZXIoYXJnKTsKIAlQcm9jU3RhdGUgICpzdGF0ZVA7CisJaW50CQkJcGdwcm9jbm8gPSBNeUJh Y2tlbmRJZCAtIDE7CiAJaW50CQkJaTsKIAogCUFzc2VydChQb2ludGVySXNWYWxpZChzZWdQ KSk7CiAKIAlMV0xvY2tBY3F1aXJlKFNJbnZhbFdyaXRlTG9jaywgTFdfRVhDTFVTSVZFKTsK IAotCXN0YXRlUCA9ICZzZWdQLT5wcm9jU3RhdGVbTXlCYWNrZW5kSWQgLSAxXTsKKwlzdGF0 ZVAgPSAmc2VnUC0+cHJvY1N0YXRlW3BncHJvY25vXTsKIAogCS8qIFVwZGF0ZSBuZXh0IGxv Y2FsIHRyYW5zYWN0aW9uIElEIGZvciBuZXh0IGhvbGRlciBvZiB0aGlzIGJhY2tlbmRJRCAq LwogCXN0YXRlUC0+bmV4dExYSUQgPSBuZXh0TG9jYWxUcmFuc2FjdGlvbklkOwpAQCAtMzM1 LDEzICszNDQsMTggQEAgQ2xlYW51cEludmFsaWRhdGlvblN0YXRlKGludCBzdGF0dXMsIERh dHVtIGFyZykKIAlzdGF0ZVAtPnJlc2V0U3RhdGUgPSBmYWxzZTsKIAlzdGF0ZVAtPnNpZ25h bGVkID0gZmFsc2U7CiAKLQkvKiBSZWNvbXB1dGUgaW5kZXggb2YgbGFzdCBhY3RpdmUgYmFj a2VuZCAqLwotCWZvciAoaSA9IHNlZ1AtPmxhc3RCYWNrZW5kOyBpID4gMDsgaS0tKQorCWZv ciAoaSA9IHNlZ1AtPm51bVByb2NzIC0gMTsgaSA+PSAwOyBpLS0pCiAJewotCQlpZiAoc2Vn UC0+cHJvY1N0YXRlW2kgLSAxXS5wcm9jUGlkICE9IDApCisJCWlmIChzZWdQLT5wZ3Byb2Nu b3NbaV0gPT0gcGdwcm9jbm8pCisJCXsKKwkJCWlmIChpICE9IHNlZ1AtPm51bVByb2NzIC0g MSkKKwkJCQlzZWdQLT5wZ3Byb2Nub3NbaV0gPSBzZWdQLT5wZ3Byb2Nub3Nbc2VnUC0+bnVt UHJvY3MgLSAxXTsKIAkJCWJyZWFrOworCQl9CiAJfQotCXNlZ1AtPmxhc3RCYWNrZW5kID0g aTsKKwlpZiAoaSA8IDApCisJCWVsb2coUEFOSUMsICJjb3VsZCBub3QgZmluZCBlbnRyeSBp biBzaW52YWwgYXJyYXkiKTsKKwlzZWdQLT5udW1Qcm9jcy0tOwogCiAJTFdMb2NrUmVsZWFz ZShTSW52YWxXcml0ZUxvY2spOwogfQpAQCAtNDE0LDkgKzQyOCw5IEBAIFNJSW5zZXJ0RGF0 YUVudHJpZXMoY29uc3QgU2hhcmVkSW52YWxpZGF0aW9uTWVzc2FnZSAqZGF0YSwgaW50IG4p CiAJCSAqIHRoZXNlICh1bmxvY2tlZCkgY2hhbmdlcyB3aWxsIGJlIGNvbW1pdHRlZCB0byBt ZW1vcnkgYmVmb3JlIHdlIGV4aXQKIAkJICogdGhlIGZ1bmN0aW9uLgogCQkgKi8KLQkJZm9y IChpID0gMDsgaSA8IHNlZ1AtPmxhc3RCYWNrZW5kOyBpKyspCisJCWZvciAoaSA9IDA7IGkg PCBzZWdQLT5udW1Qcm9jczsgaSsrKQogCQl7Ci0JCQlQcm9jU3RhdGUgICpzdGF0ZVAgPSAm c2VnUC0+cHJvY1N0YXRlW2ldOworCQkJUHJvY1N0YXRlICAqc3RhdGVQID0gJnNlZ1AtPnBy b2NTdGF0ZVtzZWdQLT5wZ3Byb2Nub3NbaV1dOwogCiAJCQlzdGF0ZVAtPmhhc01lc3NhZ2Vz ID0gdHJ1ZTsKIAkJfQpAQCAtNTg0LDEzICs1OTgsMTQgQEAgU0lDbGVhbnVwUXVldWUoYm9v bCBjYWxsZXJIYXNXcml0ZUxvY2ssIGludCBtaW5GcmVlKQogCW1pbnNpZyA9IG1pbiAtIFNJ R19USFJFU0hPTEQ7CiAJbG93Ym91bmQgPSBtaW4gLSBNQVhOVU1NRVNTQUdFUyArIG1pbkZy ZWU7CiAKLQlmb3IgKGkgPSAwOyBpIDwgc2VnUC0+bGFzdEJhY2tlbmQ7IGkrKykKKwlmb3Ig KGkgPSAwOyBpIDwgc2VnUC0+bnVtUHJvY3M7IGkrKykKIAl7Ci0JCVByb2NTdGF0ZSAgKnN0 YXRlUCA9ICZzZWdQLT5wcm9jU3RhdGVbaV07CisJCVByb2NTdGF0ZSAgKnN0YXRlUCA9ICZz ZWdQLT5wcm9jU3RhdGVbc2VnUC0+cGdwcm9jbm9zW2ldXTsKIAkJaW50CQkJbiA9IHN0YXRl UC0+bmV4dE1zZ051bTsKIAotCQkvKiBJZ25vcmUgaWYgaW5hY3RpdmUgb3IgYWxyZWFkeSBp biByZXNldCBzdGF0ZSAqLwotCQlpZiAoc3RhdGVQLT5wcm9jUGlkID09IDAgfHwgc3RhdGVQ LT5yZXNldFN0YXRlIHx8IHN0YXRlUC0+c2VuZE9ubHkpCisJCS8qIElnbm9yZSBpZiBhbHJl YWR5IGluIHJlc2V0IHN0YXRlICovCisJCUFzc2VydChzdGF0ZVAtPnByb2NQaWQgIT0gMCk7 CisJCWlmIChzdGF0ZVAtPnJlc2V0U3RhdGUgfHwgc3RhdGVQLT5zZW5kT25seSkKIAkJCWNv bnRpbnVlOwogCiAJCS8qCkBAIC02MjYsMTEgKzY0MSw4IEBAIFNJQ2xlYW51cFF1ZXVlKGJv b2wgY2FsbGVySGFzV3JpdGVMb2NrLCBpbnQgbWluRnJlZSkKIAl7CiAJCXNlZ1AtPm1pbk1z Z051bSAtPSBNU0dOVU1XUkFQQVJPVU5EOwogCQlzZWdQLT5tYXhNc2dOdW0gLT0gTVNHTlVN V1JBUEFST1VORDsKLQkJZm9yIChpID0gMDsgaSA8IHNlZ1AtPmxhc3RCYWNrZW5kOyBpKysp Ci0JCXsKLQkJCS8qIHdlIGRvbid0IGJvdGhlciBza2lwcGluZyBpbmFjdGl2ZSBlbnRyaWVz IGhlcmUgKi8KLQkJCXNlZ1AtPnByb2NTdGF0ZVtpXS5uZXh0TXNnTnVtIC09IE1TR05VTVdS QVBBUk9VTkQ7Ci0JCX0KKwkJZm9yIChpID0gMDsgaSA8IHNlZ1AtPm51bVByb2NzOyBpKysp CisJCQlzZWdQLT5wcm9jU3RhdGVbc2VnUC0+cGdwcm9jbm9zW2ldXS5uZXh0TXNnTnVtIC09 IE1TR05VTVdSQVBBUk9VTkQ7CiAJfQogCiAJLyoKLS0gCjIuMzkuMgoK --------------RUX0UwSvsUmik3v5mDKrFt0g Content-Type: text/x-patch; charset=UTF-8; name="v8-0004-Remove-MyAuxProcType-use-MyBackendType-instead.patch" Content-Disposition: attachment; filename*0="v8-0004-Remove-MyAuxProcType-use-MyBackendType-instead.patch" Content-Transfer-Encoding: base64 RnJvbSBmYzg2Yjg4NzZlMzlmYTNjMjI5OGZiMDNiNzE2ZjA4OTZkOWNhNWI4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IE1vbiwgMjkgSmFuIDIwMjQgMjA6NTg6NTIgKzAyMDAK U3ViamVjdDogW1BBVENIIHY4IDQvNV0gUmVtb3ZlIE15QXV4UHJvY1R5cGUsIHVzZSBNeUJh Y2tlbmRUeXBlIGluc3RlYWQKCk15QXV4UHJvY1R5cGUgd2FzIHJlZHVuZGFudCB3aXRoIE15 QmFja2VuZFR5cGUuCgpSZXZpZXdlZC1ieTogUmVpZCBUaG9tcHNvbiwgQW5kcmVzIEZyZXVu ZApEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2Yz ZWNkNGNiLTg1ZWUtNGU1NC04Mjc4LTVmYWJmYjNhNGVkMEBpa2kuZmkKLS0tCiBzcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2F1eHByb2Nlc3MuYyB8IDU4ICsrKysrLS0tLS0tLS0tLS0tLS0t LS0tLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMgfCAzNiArKysrKysr LS0tLS0tLS0KIHNyYy9pbmNsdWRlL21pc2NhZG1pbi5oICAgICAgICAgICAgIHwgNjkgKysr KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYXV4 cHJvY2Vzcy5oIHwgIDIgKy0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAg IHwgIDEgLQogNSBmaWxlcyBjaGFuZ2VkLCA2MyBpbnNlcnRpb25zKCspLCAxMDMgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXhwcm9jZXNz LmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1eHByb2Nlc3MuYwppbmRleCAzOTE3MWZl YTA2Yi4uZmMxM2NkNzYzMjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv YXV4cHJvY2Vzcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5j CkBAIC0zOCwxNCArMzgsNiBAQAogc3RhdGljIHZvaWQgU2h1dGRvd25BdXhpbGlhcnlQcm9j ZXNzKGludCBjb2RlLCBEYXR1bSBhcmcpOwogCiAKLS8qIC0tLS0tLS0tLS0tLS0tLS0KLSAq CQlnbG9iYWwgdmFyaWFibGVzCi0gKiAtLS0tLS0tLS0tLS0tLS0tCi0gKi8KLQotQXV4UHJv Y1R5cGUgTXlBdXhQcm9jVHlwZSA9IE5vdEFuQXV4UHJvY2VzczsJLyogZGVjbGFyZWQgaW4g bWlzY2FkbWluLmggKi8KLQotCiAvKgogICoJIEF1eGlsaWFyeVByb2Nlc3NNYWluCiAgKgpA QCAtNTUsMzkgKzQ3LDExIEBAIEF1eFByb2NUeXBlIE15QXV4UHJvY1R5cGUgPSBOb3RBbkF1 eFByb2Nlc3M7CS8qIGRlY2xhcmVkIGluIG1pc2NhZG1pbi5oICovCiAgKgkgVGhpcyBjb2Rl IGlzIGhlcmUganVzdCBiZWNhdXNlIG9mIGhpc3RvcmljYWwgcmVhc29ucy4KICAqLwogdm9p ZAotQXV4aWxpYXJ5UHJvY2Vzc01haW4oQXV4UHJvY1R5cGUgYXV4dHlwZSkKK0F1eGlsaWFy eVByb2Nlc3NNYWluKEJhY2tlbmRUeXBlIGF1eHR5cGUpCiB7CiAJQXNzZXJ0KElzVW5kZXJQ b3N0bWFzdGVyKTsKIAotCU15QXV4UHJvY1R5cGUgPSBhdXh0eXBlOwotCi0Jc3dpdGNoIChN eUF1eFByb2NUeXBlKQotCXsKLQkJY2FzZSBTdGFydHVwUHJvY2VzczoKLQkJCU15QmFja2Vu ZFR5cGUgPSBCX1NUQVJUVVA7Ci0JCQlicmVhazsKLQkJY2FzZSBBcmNoaXZlclByb2Nlc3M6 Ci0JCQlNeUJhY2tlbmRUeXBlID0gQl9BUkNISVZFUjsKLQkJCWJyZWFrOwotCQljYXNlIEJn V3JpdGVyUHJvY2VzczoKLQkJCU15QmFja2VuZFR5cGUgPSBCX0JHX1dSSVRFUjsKLQkJCWJy ZWFrOwotCQljYXNlIENoZWNrcG9pbnRlclByb2Nlc3M6Ci0JCQlNeUJhY2tlbmRUeXBlID0g Ql9DSEVDS1BPSU5URVI7Ci0JCQlicmVhazsKLQkJY2FzZSBXYWxXcml0ZXJQcm9jZXNzOgot CQkJTXlCYWNrZW5kVHlwZSA9IEJfV0FMX1dSSVRFUjsKLQkJCWJyZWFrOwotCQljYXNlIFdh bFJlY2VpdmVyUHJvY2VzczoKLQkJCU15QmFja2VuZFR5cGUgPSBCX1dBTF9SRUNFSVZFUjsK LQkJCWJyZWFrOwotCQljYXNlIFdhbFN1bW1hcml6ZXJQcm9jZXNzOgotCQkJTXlCYWNrZW5k VHlwZSA9IEJfV0FMX1NVTU1BUklaRVI7Ci0JCQlicmVhazsKLQkJZGVmYXVsdDoKLQkJCWVs b2coUEFOSUMsICJ1bnJlY29nbml6ZWQgcHJvY2VzcyB0eXBlOiAlZCIsIChpbnQpIE15QXV4 UHJvY1R5cGUpOwotCQkJTXlCYWNrZW5kVHlwZSA9IEJfSU5WQUxJRDsKLQl9CisJTXlCYWNr ZW5kVHlwZSA9IGF1eHR5cGU7CiAKIAlpbml0X3BzX2Rpc3BsYXkoTlVMTCk7CiAKQEAgLTEy NiwzOCArOTAsMzggQEAgQXV4aWxpYXJ5UHJvY2Vzc01haW4oQXV4UHJvY1R5cGUgYXV4dHlw ZSkKIAogCVNldFByb2Nlc3NpbmdNb2RlKE5vcm1hbFByb2Nlc3NpbmcpOwogCi0Jc3dpdGNo IChNeUF1eFByb2NUeXBlKQorCXN3aXRjaCAoTXlCYWNrZW5kVHlwZSkKIAl7Ci0JCWNhc2Ug U3RhcnR1cFByb2Nlc3M6CisJCWNhc2UgQl9TVEFSVFVQOgogCQkJU3RhcnR1cFByb2Nlc3NN YWluKCk7CiAJCQlwcm9jX2V4aXQoMSk7CiAKLQkJY2FzZSBBcmNoaXZlclByb2Nlc3M6CisJ CWNhc2UgQl9BUkNISVZFUjoKIAkJCVBnQXJjaGl2ZXJNYWluKCk7CiAJCQlwcm9jX2V4aXQo MSk7CiAKLQkJY2FzZSBCZ1dyaXRlclByb2Nlc3M6CisJCWNhc2UgQl9CR19XUklURVI6CiAJ CQlCYWNrZ3JvdW5kV3JpdGVyTWFpbigpOwogCQkJcHJvY19leGl0KDEpOwogCi0JCWNhc2Ug Q2hlY2twb2ludGVyUHJvY2VzczoKKwkJY2FzZSBCX0NIRUNLUE9JTlRFUjoKIAkJCUNoZWNr cG9pbnRlck1haW4oKTsKIAkJCXByb2NfZXhpdCgxKTsKIAotCQljYXNlIFdhbFdyaXRlclBy b2Nlc3M6CisJCWNhc2UgQl9XQUxfV1JJVEVSOgogCQkJV2FsV3JpdGVyTWFpbigpOwogCQkJ cHJvY19leGl0KDEpOwogCi0JCWNhc2UgV2FsUmVjZWl2ZXJQcm9jZXNzOgorCQljYXNlIEJf V0FMX1JFQ0VJVkVSOgogCQkJV2FsUmVjZWl2ZXJNYWluKCk7CiAJCQlwcm9jX2V4aXQoMSk7 CiAKLQkJY2FzZSBXYWxTdW1tYXJpemVyUHJvY2VzczoKKwkJY2FzZSBCX1dBTF9TVU1NQVJJ WkVSOgogCQkJV2FsU3VtbWFyaXplck1haW4oKTsKIAkJCXByb2NfZXhpdCgxKTsKIAogCQlk ZWZhdWx0OgotCQkJZWxvZyhQQU5JQywgInVucmVjb2duaXplZCBwcm9jZXNzIHR5cGU6ICVk IiwgKGludCkgTXlBdXhQcm9jVHlwZSk7CisJCQllbG9nKFBBTklDLCAidW5yZWNvZ25pemVk IHByb2Nlc3MgdHlwZTogJWQiLCAoaW50KSBNeUJhY2tlbmRUeXBlKTsKIAkJCXByb2NfZXhp dCgxKTsKIAl9CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3Rt YXN0ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCmluZGV4IGZl YjQ3MWRkMWRmLi5jNTFiNmExMzc2YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9wb3N0bWFzdGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFz dGVyLmMKQEAgLTQ0MCw3ICs0NDAsNyBAQCBzdGF0aWMgaW50CUNvdW50Q2hpbGRyZW4oaW50 IHRhcmdldCk7CiBzdGF0aWMgYm9vbCBhc3NpZ25fYmFja2VuZGxpc3RfZW50cnkoUmVnaXN0 ZXJlZEJnV29ya2VyICpydyk7CiBzdGF0aWMgdm9pZCBtYXliZV9zdGFydF9iZ3dvcmtlcnMo dm9pZCk7CiBzdGF0aWMgYm9vbCBDcmVhdGVPcHRzRmlsZShpbnQgYXJnYywgY2hhciAqYXJn dltdLCBjaGFyICpmdWxscHJvZ25hbWUpOwotc3RhdGljIHBpZF90IFN0YXJ0Q2hpbGRQcm9j ZXNzKEF1eFByb2NUeXBlIHR5cGUpOworc3RhdGljIHBpZF90IFN0YXJ0Q2hpbGRQcm9jZXNz KEJhY2tlbmRUeXBlIHR5cGUpOwogc3RhdGljIHZvaWQgU3RhcnRBdXRvdmFjdXVtV29ya2Vy KHZvaWQpOwogc3RhdGljIHZvaWQgTWF5YmVTdGFydFdhbFJlY2VpdmVyKHZvaWQpOwogc3Rh dGljIHZvaWQgTWF5YmVTdGFydFdhbFN1bW1hcml6ZXIodm9pZCk7CkBAIC01NjEsMTMgKzU2 MSwxMyBAQCBzdGF0aWMgdm9pZCBTaG1lbUJhY2tlbmRBcnJheUFkZChCYWNrZW5kICpibik7 CiBzdGF0aWMgdm9pZCBTaG1lbUJhY2tlbmRBcnJheVJlbW92ZShCYWNrZW5kICpibik7CiAj ZW5kaWYJCQkJCQkJLyogRVhFQ19CQUNLRU5EICovCiAKLSNkZWZpbmUgU3RhcnR1cERhdGFC YXNlKCkJCVN0YXJ0Q2hpbGRQcm9jZXNzKFN0YXJ0dXBQcm9jZXNzKQotI2RlZmluZSBTdGFy dEFyY2hpdmVyKCkJCQlTdGFydENoaWxkUHJvY2VzcyhBcmNoaXZlclByb2Nlc3MpCi0jZGVm aW5lIFN0YXJ0QmFja2dyb3VuZFdyaXRlcigpIFN0YXJ0Q2hpbGRQcm9jZXNzKEJnV3JpdGVy UHJvY2VzcykKLSNkZWZpbmUgU3RhcnRDaGVja3BvaW50ZXIoKQkJU3RhcnRDaGlsZFByb2Nl c3MoQ2hlY2twb2ludGVyUHJvY2VzcykKLSNkZWZpbmUgU3RhcnRXYWxXcml0ZXIoKQkJU3Rh cnRDaGlsZFByb2Nlc3MoV2FsV3JpdGVyUHJvY2VzcykKLSNkZWZpbmUgU3RhcnRXYWxSZWNl aXZlcigpCQlTdGFydENoaWxkUHJvY2VzcyhXYWxSZWNlaXZlclByb2Nlc3MpCi0jZGVmaW5l IFN0YXJ0V2FsU3VtbWFyaXplcigpCVN0YXJ0Q2hpbGRQcm9jZXNzKFdhbFN1bW1hcml6ZXJQ cm9jZXNzKQorI2RlZmluZSBTdGFydHVwRGF0YUJhc2UoKQkJU3RhcnRDaGlsZFByb2Nlc3Mo Ql9TVEFSVFVQKQorI2RlZmluZSBTdGFydEFyY2hpdmVyKCkJCQlTdGFydENoaWxkUHJvY2Vz cyhCX0FSQ0hJVkVSKQorI2RlZmluZSBTdGFydEJhY2tncm91bmRXcml0ZXIoKSBTdGFydENo aWxkUHJvY2VzcyhCX0JHX1dSSVRFUikKKyNkZWZpbmUgU3RhcnRDaGVja3BvaW50ZXIoKQkJ U3RhcnRDaGlsZFByb2Nlc3MoQl9DSEVDS1BPSU5URVIpCisjZGVmaW5lIFN0YXJ0V2FsV3Jp dGVyKCkJCVN0YXJ0Q2hpbGRQcm9jZXNzKEJfV0FMX1dSSVRFUikKKyNkZWZpbmUgU3RhcnRX YWxSZWNlaXZlcigpCQlTdGFydENoaWxkUHJvY2VzcyhCX1dBTF9SRUNFSVZFUikKKyNkZWZp bmUgU3RhcnRXYWxTdW1tYXJpemVyKCkJU3RhcnRDaGlsZFByb2Nlc3MoQl9XQUxfU1VNTUFS SVpFUikKIAogLyogTWFjcm9zIHRvIGNoZWNrIGV4aXQgc3RhdHVzIG9mIGEgY2hpbGQgcHJv Y2VzcyAqLwogI2RlZmluZSBFWElUX1NUQVRVU18wKHN0KSAgKChzdCkgPT0gMCkKQEAgLTQ5 NTMsNyArNDk1Myw3IEBAIFN1YlBvc3RtYXN0ZXJNYWluKGludCBhcmdjLCBjaGFyICphcmd2 W10pCiAJfQogCWlmIChzdHJjbXAoYXJndlsxXSwgIi0tZm9ya2F1eCIpID09IDApCiAJewot CQlBdXhQcm9jVHlwZSBhdXh0eXBlOworCQlCYWNrZW5kVHlwZSBhdXh0eXBlOwogCiAJCUFz c2VydChhcmdjID09IDQpOwogCkBAIC01MjkyLDcgKzUyOTIsNyBAQCBDb3VudENoaWxkcmVu KGludCB0YXJnZXQpCiAgKiB0byBzdGFydCBzdWJwcm9jZXNzLgogICovCiBzdGF0aWMgcGlk X3QKLVN0YXJ0Q2hpbGRQcm9jZXNzKEF1eFByb2NUeXBlIHR5cGUpCitTdGFydENoaWxkUHJv Y2VzcyhCYWNrZW5kVHlwZSB0eXBlKQogewogCXBpZF90CQlwaWQ7CiAKQEAgLTUzNDQsMzEg KzUzNDQsMzEgQEAgU3RhcnRDaGlsZFByb2Nlc3MoQXV4UHJvY1R5cGUgdHlwZSkKIAkJZXJy bm8gPSBzYXZlX2Vycm5vOwogCQlzd2l0Y2ggKHR5cGUpCiAJCXsKLQkJCWNhc2UgU3RhcnR1 cFByb2Nlc3M6CisJCQljYXNlIEJfU1RBUlRVUDoKIAkJCQllcmVwb3J0KExPRywKIAkJCQkJ CShlcnJtc2coImNvdWxkIG5vdCBmb3JrIHN0YXJ0dXAgcHJvY2VzczogJW0iKSkpOwogCQkJ CWJyZWFrOwotCQkJY2FzZSBBcmNoaXZlclByb2Nlc3M6CisJCQljYXNlIEJfQVJDSElWRVI6 CiAJCQkJZXJlcG9ydChMT0csCiAJCQkJCQkoZXJybXNnKCJjb3VsZCBub3QgZm9yayBhcmNo aXZlciBwcm9jZXNzOiAlbSIpKSk7CiAJCQkJYnJlYWs7Ci0JCQljYXNlIEJnV3JpdGVyUHJv Y2VzczoKKwkJCWNhc2UgQl9CR19XUklURVI6CiAJCQkJZXJlcG9ydChMT0csCiAJCQkJCQko ZXJybXNnKCJjb3VsZCBub3QgZm9yayBiYWNrZ3JvdW5kIHdyaXRlciBwcm9jZXNzOiAlbSIp KSk7CiAJCQkJYnJlYWs7Ci0JCQljYXNlIENoZWNrcG9pbnRlclByb2Nlc3M6CisJCQljYXNl IEJfQ0hFQ0tQT0lOVEVSOgogCQkJCWVyZXBvcnQoTE9HLAogCQkJCQkJKGVycm1zZygiY291 bGQgbm90IGZvcmsgY2hlY2twb2ludGVyIHByb2Nlc3M6ICVtIikpKTsKIAkJCQlicmVhazsK LQkJCWNhc2UgV2FsV3JpdGVyUHJvY2VzczoKKwkJCWNhc2UgQl9XQUxfV1JJVEVSOgogCQkJ CWVyZXBvcnQoTE9HLAogCQkJCQkJKGVycm1zZygiY291bGQgbm90IGZvcmsgV0FMIHdyaXRl ciBwcm9jZXNzOiAlbSIpKSk7CiAJCQkJYnJlYWs7Ci0JCQljYXNlIFdhbFJlY2VpdmVyUHJv Y2VzczoKKwkJCWNhc2UgQl9XQUxfUkVDRUlWRVI6CiAJCQkJZXJlcG9ydChMT0csCiAJCQkJ CQkoZXJybXNnKCJjb3VsZCBub3QgZm9yayBXQUwgcmVjZWl2ZXIgcHJvY2VzczogJW0iKSkp OwogCQkJCWJyZWFrOwotCQkJY2FzZSBXYWxTdW1tYXJpemVyUHJvY2VzczoKKwkJCWNhc2Ug Ql9XQUxfU1VNTUFSSVpFUjoKIAkJCQllcmVwb3J0KExPRywKIAkJCQkJCShlcnJtc2coImNv dWxkIG5vdCBmb3JrIFdBTCBzdW1tYXJpemVyIHByb2Nlc3M6ICVtIikpKTsKIAkJCQlicmVh azsKQEAgLTUzODIsNyArNTM4Miw3IEBAIFN0YXJ0Q2hpbGRQcm9jZXNzKEF1eFByb2NUeXBl IHR5cGUpCiAJCSAqIGZvcmsgZmFpbHVyZSBpcyBmYXRhbCBkdXJpbmcgc3RhcnR1cCwgYnV0 IHRoZXJlJ3Mgbm8gbmVlZCB0byBjaG9rZQogCQkgKiBpbW1lZGlhdGVseSBpZiBzdGFydGlu ZyBvdGhlciBjaGlsZCB0eXBlcyBmYWlscy4KIAkJICovCi0JCWlmICh0eXBlID09IFN0YXJ0 dXBQcm9jZXNzKQorCQlpZiAodHlwZSA9PSBCX1NUQVJUVVApCiAJCQlFeGl0UG9zdG1hc3Rl cigxKTsKIAkJcmV0dXJuIDA7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbWlzY2Fk bWluLmggYi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAppbmRleCBjYmRjNjFiODU3Ni4uNGVj YWU0ZjgzNGUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCisrKyBiL3Ny Yy9pbmNsdWRlL21pc2NhZG1pbi5oCkBAIC0zMjEsMjkgKzMyMSw1NyBAQCBleHRlcm4gdm9p ZCBJbml0UHJvY2Vzc0xvY2FsTGF0Y2godm9pZCk7CiBleHRlcm4gdm9pZCBTd2l0Y2hUb1No YXJlZExhdGNoKHZvaWQpOwogZXh0ZXJuIHZvaWQgU3dpdGNoQmFja1RvTG9jYWxMYXRjaCh2 b2lkKTsKIAorLyoKKyAqIE15QmFja2VuZFR5cGUgaW5kaWNhdGVzIHdoYXQga2luZCBvZiBh IGJhY2tlbmQgdGhpcyBpcy4KKyAqLwogdHlwZWRlZiBlbnVtIEJhY2tlbmRUeXBlCiB7CiAJ Ql9JTlZBTElEID0gMCwKLQlCX0FSQ0hJVkVSLAorCisJLyogQmFja2VuZHMgYW5kIG90aGVy IGJhY2tlbmQtbGlrZSBwcm9jZXNzZXMgKi8KKwlCX0JBQ0tFTkQsCiAJQl9BVVRPVkFDX0xB VU5DSEVSLAogCUJfQVVUT1ZBQ19XT1JLRVIsCi0JQl9CQUNLRU5ELAogCUJfQkdfV09SS0VS LAorCUJfV0FMX1NFTkRFUiwKKworCUJfU1RBTkRBTE9ORV9CQUNLRU5ELAorCisJLyoKKwkg KiBBdXhpbGlhcnkgcHJvY2Vzc2VzLiBUaGVzZSBoYXZlIFBHUFJPQyBlbnRyaWVzLCBidXQg dGhleSBhcmUgbm90CisJICogYXR0YWNoZWQgdG8gYW55IHBhcnRpY3VsYXIgZGF0YWJhc2Uu IFRoZXJlIGNhbiBiZSBvbmx5IG9uZSBvZiBlYWNoIG9mCisJICogdGhlc2UgcnVubmluZyBh dCBhIHRpbWUuCisJICoKKwkgKiBJZiB5b3UgbW9kaWZ5IHRoZXNlLCBtYWtlIHN1cmUgdG8g dXBkYXRlIE5VTV9BVVhJTElBUllfUFJPQ1MgYW5kIHRoZQorCSAqIGdsb3NzYXJ5IGluIHRo ZSBkb2NzLgorCSAqLworCUJfQVJDSElWRVIsCiAJQl9CR19XUklURVIsCiAJQl9DSEVDS1BP SU5URVIsCi0JQl9MT0dHRVIsCi0JQl9TVEFOREFMT05FX0JBQ0tFTkQsCiAJQl9TVEFSVFVQ LAogCUJfV0FMX1JFQ0VJVkVSLAotCUJfV0FMX1NFTkRFUiwKIAlCX1dBTF9TVU1NQVJJWkVS LAogCUJfV0FMX1dSSVRFUiwKKworCS8qCisJICogTG9nZ2VyIGlzIG5vdCBjb25uZWN0ZWQg dG8gc2hhcmVkIG1lbW9yeSBhbmQgZG9lcyBub3QgaGF2ZSBhIFBHUFJPQworCSAqIGVudHJ5 LgorCSAqLworCUJfTE9HR0VSLAogfSBCYWNrZW5kVHlwZTsKIAogI2RlZmluZSBCQUNLRU5E X05VTV9UWVBFUyAoQl9XQUxfV1JJVEVSICsgMSkKIAogZXh0ZXJuIFBHRExMSU1QT1JUIEJh Y2tlbmRUeXBlIE15QmFja2VuZFR5cGU7CiAKKyNkZWZpbmUgQW1TdGFydHVwUHJvY2Vzcygp CQkJKE15QmFja2VuZFR5cGUgPT0gQl9TVEFSVFVQKQorI2RlZmluZSBBbUJhY2tncm91bmRX cml0ZXJQcm9jZXNzKCkgKE15QmFja2VuZFR5cGUgPT0gQl9CR19XUklURVIpCisjZGVmaW5l IEFtQXJjaGl2ZXJQcm9jZXNzKCkJCQkoTXlCYWNrZW5kVHlwZSA9PSBCX0FSQ0hJVkVSKQor I2RlZmluZSBBbUNoZWNrcG9pbnRlclByb2Nlc3MoKQkJKE15QmFja2VuZFR5cGUgPT0gQl9D SEVDS1BPSU5URVIpCisjZGVmaW5lIEFtV2FsV3JpdGVyUHJvY2VzcygpCQkoTXlCYWNrZW5k VHlwZSA9PSBCX1dBTF9XUklURVIpCisjZGVmaW5lIEFtV2FsUmVjZWl2ZXJQcm9jZXNzKCkJ CShNeUJhY2tlbmRUeXBlID09IEJfV0FMX1JFQ0VJVkVSKQorI2RlZmluZSBBbVdhbFN1bW1h cml6ZXJQcm9jZXNzKCkJKE15QmFja2VuZFR5cGUgPT0gQl9XQUxfU1VNTUFSSVpFUikKKwog ZXh0ZXJuIGNvbnN0IGNoYXIgKkdldEJhY2tlbmRUeXBlRGVzYyhCYWNrZW5kVHlwZSBiYWNr ZW5kVHlwZSk7CiAKIGV4dGVybiB2b2lkIFNldERhdGFiYXNlUGF0aChjb25zdCBjaGFyICpw YXRoKTsKQEAgLTQyNiwzNyArNDU0LDYgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIFByb2Nlc3Np bmdNb2RlIE1vZGU7CiAJfSB3aGlsZSgwKQogCiAKLS8qCi0gKiBBdXhpbGlhcnktcHJvY2Vz cyB0eXBlIGlkZW50aWZpZXJzLiAgVGhlc2UgdXNlZCB0byBiZSBpbiBib290c3RyYXAuaAot ICogYnV0IGl0IHNlZW1zIHNhbmVyIHRvIGhhdmUgdGhlbSBoZXJlLCB3aXRoIHRoZSBQcm9j ZXNzaW5nTW9kZSBzdHVmZi4KLSAqIFRoZSBNeUF1eFByb2NUeXBlIGdsb2JhbCBpcyBkZWZp bmVkIGFuZCBzZXQgaW4gYXV4cHJvY2Vzcy5jLgotICoKLSAqIE1ha2Ugc3VyZSB0byBsaXN0 IGluIHRoZSBnbG9zc2FyeSBhbnkgaXRlbXMgeW91IGFkZCBoZXJlLgotICovCi0KLXR5cGVk ZWYgZW51bQotewotCU5vdEFuQXV4UHJvY2VzcyA9IC0xLAotCVN0YXJ0dXBQcm9jZXNzID0g MCwKLQlCZ1dyaXRlclByb2Nlc3MsCi0JQXJjaGl2ZXJQcm9jZXNzLAotCUNoZWNrcG9pbnRl clByb2Nlc3MsCi0JV2FsV3JpdGVyUHJvY2VzcywKLQlXYWxSZWNlaXZlclByb2Nlc3MsCi0J V2FsU3VtbWFyaXplclByb2Nlc3MsCi19IEF1eFByb2NUeXBlOwotCi1leHRlcm4gUEdETExJ TVBPUlQgQXV4UHJvY1R5cGUgTXlBdXhQcm9jVHlwZTsKLQotI2RlZmluZSBBbVN0YXJ0dXBQ cm9jZXNzKCkJCQkoTXlBdXhQcm9jVHlwZSA9PSBTdGFydHVwUHJvY2VzcykKLSNkZWZpbmUg QW1CYWNrZ3JvdW5kV3JpdGVyUHJvY2VzcygpIChNeUF1eFByb2NUeXBlID09IEJnV3JpdGVy UHJvY2VzcykKLSNkZWZpbmUgQW1BcmNoaXZlclByb2Nlc3MoKQkJCShNeUF1eFByb2NUeXBl ID09IEFyY2hpdmVyUHJvY2VzcykKLSNkZWZpbmUgQW1DaGVja3BvaW50ZXJQcm9jZXNzKCkJ CShNeUF1eFByb2NUeXBlID09IENoZWNrcG9pbnRlclByb2Nlc3MpCi0jZGVmaW5lIEFtV2Fs V3JpdGVyUHJvY2VzcygpCQkoTXlBdXhQcm9jVHlwZSA9PSBXYWxXcml0ZXJQcm9jZXNzKQot I2RlZmluZSBBbVdhbFJlY2VpdmVyUHJvY2VzcygpCQkoTXlBdXhQcm9jVHlwZSA9PSBXYWxS ZWNlaXZlclByb2Nlc3MpCi0jZGVmaW5lIEFtV2FsU3VtbWFyaXplclByb2Nlc3MoKQkoTXlB dXhQcm9jVHlwZSA9PSBXYWxTdW1tYXJpemVyUHJvY2VzcykKLQotCiAvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKICAqCSAgcGluaXQuaCAtLQkJCQkJCQkJCQkJCQkJCSAqCiAgKgkJCVBP U1RHUkVTIGluaXRpYWxpemF0aW9uIGFuZCBjbGVhbnVwIGRlZmluaXRpb25zLiAgICAgICAg ICAgICAgICAgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9hdXhwcm9j ZXNzLmggYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1eHByb2Nlc3MuaAppbmRleCAxZmRk ZTNiYjc3Yi4uM2U0NDNlZGRlNzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0 ZXIvYXV4cHJvY2Vzcy5oCisrKyBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYXV4cHJvY2Vz cy5oCkBAIC0xNSw2ICsxNSw2IEBACiAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKIAotZXh0 ZXJuIHZvaWQgQXV4aWxpYXJ5UHJvY2Vzc01haW4oQXV4UHJvY1R5cGUgYXV4dHlwZSkgcGdf YXR0cmlidXRlX25vcmV0dXJuKCk7CitleHRlcm4gdm9pZCBBdXhpbGlhcnlQcm9jZXNzTWFp bihCYWNrZW5kVHlwZSBhdXh0eXBlKSBwZ19hdHRyaWJ1dGVfbm9yZXR1cm4oKTsKIAogI2Vu ZGlmCQkJCQkJCS8qIEFVWFBST0NFU1NfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dAppbmRleCA5MGIzN2I5MTljMi4uOTY0NWM3YjczNWMgMTAwNjQ0Ci0tLSBhL3NyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0CkBAIC0xNzMsNyArMTczLDYgQEAgQXV0b1ZhY09wdHMKIEF1dG9WYWN1dW1T aG1lbVN0cnVjdAogQXV0b1ZhY3V1bVdvcmtJdGVtCiBBdXRvVmFjdXVtV29ya0l0ZW1UeXBl Ci1BdXhQcm9jVHlwZQogQkZfY3R4CiBCRl9rZXkKIEJGX3dvcmQKLS0gCjIuMzkuMgoK --------------RUX0UwSvsUmik3v5mDKrFt0g Content-Type: text/x-patch; charset=UTF-8; name="v8-0005-Use-MyBackendType-in-more-places-to-check-what-pr.patch" Content-Disposition: attachment; filename*0="v8-0005-Use-MyBackendType-in-more-places-to-check-what-pr.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA5MWUzYmRiYzNmNGQ3YWI5MTc2OTk3MmZlMDNmMjJkNmUwNzE3NTQ5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwgMTAgSmFuIDIwMjQgMTI6NTk6NDggKzAyMDAK U3ViamVjdDogW1BBVENIIHY4IDUvNV0gVXNlIE15QmFja2VuZFR5cGUgaW4gbW9yZSBwbGFj ZXMgdG8gY2hlY2sgd2hhdCBwcm9jZXNzCiB0aGlzIGlzCgpSZW1vdmUgSXNCYWNrZ3JvdW5k V29ya2VyLCBJc0F1dG9WYWN1dW1MYXVuY2hlclByb2Nlc3MoKSBhbmQKSXNBdXRvVmFjdXVt V29ya2VyUHJvY2VzcygpIGluIGZhdm9yIG9mIG5ldyBBbSpQcm9jZXNzKCkgbWFjcm9zIHRo YXQKdXNlIE15QmFja2VuZFR5cGUuIEZvciBjb25zaXN0ZW5jeSB3aXRoIHRoZSBleGlzdGlu ZyBBbSpQcm9jZXNzKCkKbWFjcm9zLgoKUmV2aWV3ZWQtYnk6IFhYWApEaXNjdXNzaW9uOiBY WFgKLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmZhc3QuYyAgICAgICAgICAgICB8 ICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnZhY3V1bS5jICAgICAgICAgICB8 ICA2ICsrLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgICAgICAg ICB8ICA0ICstLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jICAgICAgICAgICAg ICAgfCAgNCArLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jICAgICAgICAgICAg ICAgIHwgIDggKysrLS0tCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyAg ICAgICAgICB8IDI2IC0tLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9wb3N0bWFz dGVyL2Jnd29ya2VyLmMgICAgICAgICAgICB8ICAyIC0tCiBzcmMvYmFja2VuZC9wb3N0bWFz dGVyL3Bvc3RtYXN0ZXIuYyAgICAgICAgICB8ICAzIC0tLQogc3JjL2JhY2tlbmQvc3RhdGlz dGljcy9leHRlbmRlZF9zdGF0cy5jICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvaXBjLmMgICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvc3RvcmFn ZS9sbWdyL3Byb2MuYyAgICAgICAgICAgICAgfCAxOSArKysrKysrLS0tLS0tLQogc3JjL2Jh Y2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAgICAgICAgfCAgNiArKy0tLQogc3Jj L2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMgfCAgNCArLS0KIHNy Yy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jICAgICAgICAgICAgIHwgIDEgLQogc3Jj L2JhY2tlbmQvdXRpbHMvaW5pdC9taXNjaW5pdC5jICAgICAgICAgICAgfCAgMiArLQogc3Jj L2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jICAgICAgICAgICAgfCAgOCArKystLS0K IHNyYy9pbmNsdWRlL21pc2NhZG1pbi5oICAgICAgICAgICAgICAgICAgICAgIHwgIDUgKysr LQogc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmggICAgICAgICAgfCAgNSAt LS0tCiAxOCBmaWxlcyBjaGFuZ2VkLCAzNyBpbnNlcnRpb25zKCspLCA3MiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmZhc3QuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luZmFzdC5jCmluZGV4IGNmZjY4NTBlZjg2Li5lMTE4 Y2VjYjlhNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5mYXN0LmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5mYXN0LmMKQEAgLTgxMiw3ICs4MTIs NyBAQCBnaW5JbnNlcnRDbGVhbnVwKEdpblN0YXRlICpnaW5zdGF0ZSwgYm9vbCBmdWxsX2Ns ZWFuLAogCQkgKi8KIAkJTG9ja1BhZ2UoaW5kZXgsIEdJTl9NRVRBUEFHRV9CTEtOTywgRXhj bHVzaXZlTG9jayk7CiAJCXdvcmtNZW1vcnkgPQotCQkJKElzQXV0b1ZhY3V1bVdvcmtlclBy b2Nlc3MoKSAmJiBhdXRvdmFjdXVtX3dvcmtfbWVtICE9IC0xKSA/CisJCQkoQW1BdXRvVmFj dXVtV29ya2VyUHJvY2VzcygpICYmIGF1dG92YWN1dW1fd29ya19tZW0gIT0gLTEpID8KIAkJ CWF1dG92YWN1dW1fd29ya19tZW0gOiBtYWludGVuYW5jZV93b3JrX21lbTsKIAl9CiAJZWxz ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW52YWN1dW0uYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2ludmFjdXVtLmMKaW5kZXggYWVlNmFhYjQ0YWUuLmIz ZjQxNWUyODQ5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnZhY3V1 bS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2ludmFjdXVtLmMKQEAgLTU5MCw3 ICs1OTAsNyBAQCBnaW5idWxrZGVsZXRlKEluZGV4VmFjdXVtSW5mbyAqaW5mbywgSW5kZXhC dWxrRGVsZXRlUmVzdWx0ICpzdGF0cywKIAkJLyoKIAkJICogYW5kIGNsZWFudXAgYW55IHBl bmRpbmcgaW5zZXJ0cwogCQkgKi8KLQkJZ2luSW5zZXJ0Q2xlYW51cCgmZ3ZzLmdpbnN0YXRl LCAhSXNBdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpLAorCQlnaW5JbnNlcnRDbGVhbnVwKCZn dnMuZ2luc3RhdGUsICFBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCksCiAJCQkJCQkgZmFs c2UsIHRydWUsIHN0YXRzKTsKIAl9CiAKQEAgLTcwMSw3ICs3MDEsNyBAQCBnaW52YWN1dW1j bGVhbnVwKEluZGV4VmFjdXVtSW5mbyAqaW5mbywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpz dGF0cykKIAkgKi8KIAlpZiAoaW5mby0+YW5hbHl6ZV9vbmx5KQogCXsKLQkJaWYgKElzQXV0 b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSkKKwkJaWYgKEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nl c3MoKSkKIAkJewogCQkJaW5pdEdpblN0YXRlKCZnaW5zdGF0ZSwgaW5kZXgpOwogCQkJZ2lu SW5zZXJ0Q2xlYW51cCgmZ2luc3RhdGUsIGZhbHNlLCB0cnVlLCB0cnVlLCBzdGF0cyk7CkBA IC03MTcsNyArNzE3LDcgQEAgZ2ludmFjdXVtY2xlYW51cChJbmRleFZhY3V1bUluZm8gKmlu Zm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RhdHMpCiAJewogCQlzdGF0cyA9IChJbmRl eEJ1bGtEZWxldGVSZXN1bHQgKikgcGFsbG9jMChzaXplb2YoSW5kZXhCdWxrRGVsZXRlUmVz dWx0KSk7CiAJCWluaXRHaW5TdGF0ZSgmZ2luc3RhdGUsIGluZGV4KTsKLQkJZ2luSW5zZXJ0 Q2xlYW51cCgmZ2luc3RhdGUsICFJc0F1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCksCisJCWdp bkluc2VydENsZWFudXAoJmdpbnN0YXRlLCAhQW1BdXRvVmFjdXVtV29ya2VyUHJvY2Vzcygp LAogCQkJCQkJIGZhbHNlLCB0cnVlLCBzdGF0cyk7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC92YWN1dW1sYXp5LmMKaW5kZXggZmE1NjQ4MDgwOGIuLjVhY2VhNGE0M2E0IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0zMDcsNyArMzA3LDcgQEAg aGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwgVmFjdXVtUGFyYW1zICpwYXJhbXMsCiAJ Y2hhcgkgICoqaW5kbmFtZXMgPSBOVUxMOwogCiAJdmVyYm9zZSA9IChwYXJhbXMtPm9wdGlv bnMgJiBWQUNPUFRfVkVSQk9TRSkgIT0gMDsKLQlpbnN0cnVtZW50ID0gKHZlcmJvc2UgfHwg KElzQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSAmJgorCWluc3RydW1lbnQgPSAodmVyYm9z ZSB8fCAoQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpICYmCiAJCQkJCQkJICBwYXJhbXMt PmxvZ19taW5fZHVyYXRpb24gPj0gMCkpOwogCWlmIChpbnN0cnVtZW50KQogCXsKQEAgLTMw ODcsNyArMzA4Nyw3IEBAIHN0YXRpYyBpbnQKIGRlYWRfaXRlbXNfbWF4X2l0ZW1zKExWUmVs U3RhdGUgKnZhY3JlbCkKIHsKIAlpbnQ2NAkJbWF4X2l0ZW1zOwotCWludAkJCXZhY193b3Jr X21lbSA9IElzQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSAmJgorCWludAkJCXZhY193b3Jr X21lbSA9IEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSAmJgogCQlhdXRvdmFjdXVtX3dv cmtfbWVtICE9IC0xID8KIAkJYXV0b3ZhY3V1bV93b3JrX21lbSA6IG1haW50ZW5hbmNlX3dv cmtfbWVtOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKaW5kZXggYTAzNDk1ZDZjOTUuLmQx MDVkMmZhZDdiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jCkBAIC0zNTEsNyArMzUxLDcg QEAgZG9fYW5hbHl6ZV9yZWwoUmVsYXRpb24gb25lcmVsLCBWYWN1dW1QYXJhbXMgKnBhcmFt cywKIAlzYXZlX25lc3RsZXZlbCA9IE5ld0dVQ05lc3RMZXZlbCgpOwogCiAJLyogbWVhc3Vy ZSBlbGFwc2VkIHRpbWUgaWZmIGF1dG92YWN1dW0gbG9nZ2luZyByZXF1aXJlcyBpdCAqLwot CWlmIChJc0F1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgJiYgcGFyYW1zLT5sb2dfbWluX2R1 cmF0aW9uID49IDApCisJaWYgKEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSAmJiBwYXJh bXMtPmxvZ19taW5fZHVyYXRpb24gPj0gMCkKIAl7CiAJCWlmICh0cmFja19pb190aW1pbmcp CiAJCXsKQEAgLTcyOSw3ICs3MjksNyBAQCBkb19hbmFseXplX3JlbChSZWxhdGlvbiBvbmVy ZWwsIFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCXZhY19jbG9zZV9pbmRleGVzKG5pbmRleGVz LCBJcmVsLCBOb0xvY2spOwogCiAJLyogTG9nIHRoZSBhY3Rpb24gaWYgYXBwcm9wcmlhdGUg Ki8KLQlpZiAoSXNBdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpICYmIHBhcmFtcy0+bG9nX21p bl9kdXJhdGlvbiA+PSAwKQorCWlmIChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgJiYg cGFyYW1zLT5sb2dfbWluX2R1cmF0aW9uID49IDApCiAJewogCQlUaW1lc3RhbXBUeiBlbmR0 aW1lID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCmlu ZGV4IDY0ZGE4NDg2Mjc2Li5lNDBjZWY2NTY2ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMK QEAgLTU2NCw3ICs1NjQsNyBAQCB2YWN1dW0oTGlzdCAqcmVsYXRpb25zLCBWYWN1dW1QYXJh bXMgKnBhcmFtcywgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5LAogCWVsc2UKIAl7 CiAJCUFzc2VydChwYXJhbXMtPm9wdGlvbnMgJiBWQUNPUFRfQU5BTFlaRSk7Ci0JCWlmIChJ c0F1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkpCisJCWlmIChBbUF1dG9WYWN1dW1Xb3JrZXJQ cm9jZXNzKCkpCiAJCQl1c2Vfb3duX3hhY3RzID0gdHJ1ZTsKIAkJZWxzZSBpZiAoaW5fb3V0 ZXJfeGFjdCkKIAkJCXVzZV9vd25feGFjdHMgPSBmYWxzZTsKQEAgLTgwOSw3ICs4MDksNyBA QCB2YWN1dW1fb3Blbl9yZWxhdGlvbihPaWQgcmVsaWQsIFJhbmdlVmFyICpyZWxhdGlvbiwg Yml0czMyIG9wdGlvbnMsCiAJICogc3RhdGVtZW50cyBpbiB0aGUgcGVybWlzc2lvbiBjaGVj a3M7IG90aGVyd2lzZSwgb25seSBsb2cgaWYgdGhlIGNhbGxlcgogCSAqIHNvIHJlcXVlc3Rl ZC4KIAkgKi8KLQlpZiAoIUlzQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSkKKwlpZiAoIUFt QXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSkKIAkJZWxldmVsID0gV0FSTklORzsKIAllbHNl IGlmICh2ZXJib3NlKQogCQllbGV2ZWwgPSBMT0c7CkBAIC04OTYsNyArODk2LDcgQEAgZXhw YW5kX3ZhY3V1bV9yZWwoVmFjdXVtUmVsYXRpb24gKnZyZWwsIE1lbW9yeUNvbnRleHQgdmFj X2NvbnRleHQsCiAJCSAqIFNpbmNlIGF1dG92YWN1dW0gd29ya2VycyBzdXBwbHkgT0lEcyB3 aGVuIGNhbGxpbmcgdmFjdXVtKCksIG5vCiAJCSAqIGF1dG92YWN1dW0gd29ya2VyIHNob3Vs ZCByZWFjaCB0aGlzIGNvZGUuCiAJCSAqLwotCQlBc3NlcnQoIUlzQXV0b1ZhY3V1bVdvcmtl clByb2Nlc3MoKSk7CisJCUFzc2VydCghQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpKTsK IAogCQkvKgogCQkgKiBXZSB0cmFuc2llbnRseSB0YWtlIEFjY2Vzc1NoYXJlTG9jayB0byBw cm90ZWN0IHRoZSBzeXNjYWNoZSBsb29rdXAKQEAgLTIzMzYsNyArMjMzNiw3IEBAIHZhY3V1 bV9kZWxheV9wb2ludCh2b2lkKQogCSAqIFthdXRvdmFjdXVtX112YWN1dW1fY29zdF9kZWxh eSB0byB0YWtlIGVmZmVjdCB3aGlsZSBhIHRhYmxlIGlzIGJlaW5nCiAJICogdmFjdXVtZWQg b3IgYW5hbHl6ZWQuCiAJICovCi0JaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcgJiYgSXNBdXRv VmFjdXVtV29ya2VyUHJvY2VzcygpKQorCWlmIChDb25maWdSZWxvYWRQZW5kaW5nICYmIEFt QXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSkKIAl7CiAJCUNvbmZpZ1JlbG9hZFBlbmRpbmcg PSBmYWxzZTsKIAkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCmluZGV4IDJjMzA5OWY3NmYxLi5jZWNiYWFhNWI5MSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKKysrIGIv c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKQEAgLTEzNSwxMCArMTM1LDYg QEAgaW50CQkJTG9nX2F1dG92YWN1dW1fbWluX2R1cmF0aW9uID0gNjAwMDAwOwogI2RlZmlu ZSBNSU5fQVVUT1ZBQ19TTEVFUFRJTUUgMTAwLjAgLyogbWlsbGlzZWNvbmRzICovCiAjZGVm aW5lIE1BWF9BVVRPVkFDX1NMRUVQVElNRSAzMDAJLyogc2Vjb25kcyAqLwogCi0vKiBGbGFn cyB0byB0ZWxsIGlmIHdlIGFyZSBpbiBhbiBhdXRvdmFjdXVtIHByb2Nlc3MgKi8KLXN0YXRp YyBib29sIGFtX2F1dG92YWN1dW1fbGF1bmNoZXIgPSBmYWxzZTsKLXN0YXRpYyBib29sIGFt X2F1dG92YWN1dW1fd29ya2VyID0gZmFsc2U7Ci0KIC8qCiAgKiBWYXJpYWJsZXMgdG8gc2F2 ZSB0aGUgY29zdC1yZWxhdGVkIHN0b3JhZ2UgcGFyYW1ldGVycyBmb3IgdGhlIGN1cnJlbnQK ICAqIHJlbGF0aW9uIGJlaW5nIHZhY3V1bWVkIGJ5IHRoaXMgYXV0b3ZhY3V1bSB3b3JrZXIu IFVzaW5nIHRoZXNlLCB3ZSBjYW4KQEAgLTQzNSw4ICs0MzEsNiBAQCBBdXRvVmFjTGF1bmNo ZXJNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiB7CiAJc2lnam1wX2J1Zglsb2NhbF9z aWdqbXBfYnVmOwogCi0JYW1fYXV0b3ZhY3V1bV9sYXVuY2hlciA9IHRydWU7Ci0KIAlNeUJh Y2tlbmRUeXBlID0gQl9BVVRPVkFDX0xBVU5DSEVSOwogCWluaXRfcHNfZGlzcGxheShOVUxM KTsKIApAQCAtMTQ5NSw4ICsxNDg5LDYgQEAgQXV0b1ZhY1dvcmtlck1haW4oaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSkKIAlzaWdqbXBfYnVmCWxvY2FsX3NpZ2ptcF9idWY7CiAJT2lkCQkJ ZGJpZDsKIAotCWFtX2F1dG92YWN1dW1fd29ya2VyID0gdHJ1ZTsKLQogCU15QmFja2VuZFR5 cGUgPSBCX0FVVE9WQUNfV09SS0VSOwogCWluaXRfcHNfZGlzcGxheShOVUxMKTsKIApAQCAt MzM1NSwyNCArMzM0Nyw2IEBAIGF1dG92YWNfaW5pdCh2b2lkKQogCQkJCSBlcnJoaW50KCJF bmFibGUgdGhlIFwidHJhY2tfY291bnRzXCIgb3B0aW9uLiIpKSk7CiB9CiAKLS8qCi0gKiBJ c0F1dG9WYWN1dW0gZnVuY3Rpb25zCi0gKgkJUmV0dXJuIHdoZXRoZXIgdGhpcyBpcyBlaXRo ZXIgYSBsYXVuY2hlciBhdXRvdmFjdXVtIHByb2Nlc3Mgb3IgYSB3b3JrZXIKLSAqCQlwcm9j ZXNzLgotICovCi1ib29sCi1Jc0F1dG9WYWN1dW1MYXVuY2hlclByb2Nlc3Modm9pZCkKLXsK LQlyZXR1cm4gYW1fYXV0b3ZhY3V1bV9sYXVuY2hlcjsKLX0KLQotYm9vbAotSXNBdXRvVmFj dXVtV29ya2VyUHJvY2Vzcyh2b2lkKQotewotCXJldHVybiBhbV9hdXRvdmFjdXVtX3dvcmtl cjsKLX0KLQotCiAvKgogICogQXV0b1ZhY3V1bVNobWVtU2l6ZQogICoJCUNvbXB1dGUgc3Bh Y2UgbmVlZGVkIGZvciBhdXRvdmFjdXVtLXJlbGF0ZWQgc2hhcmVkIG1lbW9yeQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jIGIvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9iZ3dvcmtlci5jCmluZGV4IDY3ZjkyYzI0ZGIxLi5kOGU4OWRlNzQ5NCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCisrKyBiL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYwpAQCAtNzMxLDggKzczMSw2IEBAIEJh Y2tncm91bmRXb3JrZXJNYWluKHZvaWQpCiAJaWYgKHdvcmtlciA9PSBOVUxMKQogCQllbG9n KEZBVEFMLCAidW5hYmxlIHRvIGZpbmQgYmd3b3JrZXIgZW50cnkiKTsKIAotCUlzQmFja2dy b3VuZFdvcmtlciA9IHRydWU7Ci0KIAlNeUJhY2tlbmRUeXBlID0gQl9CR19XT1JLRVI7CiAJ aW5pdF9wc19kaXNwbGF5KHdvcmtlci0+Ymd3X25hbWUpOwogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvcG9zdG1hc3Rlci5jCmluZGV4IGM1MWI2YTEzNzZhLi44YWEyZGRmMGM0NiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMKQEAgLTQ5NzksOSArNDk3OSw2IEBAIFN1 YlBvc3RtYXN0ZXJNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJfQogCWlmIChzdHJj bXAoYXJndlsxXSwgIi0tZm9ya2Jnd29ya2VyIikgPT0gMCkKIAl7Ci0JCS8qIGRvIHRoaXMg YXMgZWFybHkgYXMgcG9zc2libGU7IGluIHBhcnRpY3VsYXIsIGJlZm9yZSBJbml0UHJvY2Vz cygpICovCi0JCUlzQmFja2dyb3VuZFdvcmtlciA9IHRydWU7Ci0KIAkJLyogUmVzdG9yZSBi YXNpYyBzaGFyZWQgbWVtb3J5IHBvaW50ZXJzICovCiAJCUluaXRTaG1lbUFjY2VzcyhVc2Vk U2htZW1TZWdBZGRyKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9l eHRlbmRlZF9zdGF0cy5jIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9leHRlbmRlZF9zdGF0 cy5jCmluZGV4IGM1NDYxNTE0ZDhmLi4xMzUxNTFhMjcyMyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvc3RhdGlzdGljcy9leHRlbmRlZF9zdGF0cy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0 YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHMuYwpAQCAtMTczLDcgKzE3Myw3IEBAIEJ1aWxkUmVs YXRpb25FeHRTdGF0aXN0aWNzKFJlbGF0aW9uIG9uZXJlbCwgYm9vbCBpbmgsIGRvdWJsZSB0 b3RhbHJvd3MsCiAJCQkJCQkJCQkgIG5hdHRzLCB2YWNhdHRyc3RhdHMpOwogCQlpZiAoIXN0 YXRzKQogCQl7Ci0JCQlpZiAoIUlzQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSkKKwkJCWlm ICghQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpKQogCQkJCWVyZXBvcnQoV0FSTklORywK IAkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCiAJ CQkJCQkgZXJybXNnKCJzdGF0aXN0aWNzIG9iamVjdCBcIiVzLiVzXCIgY291bGQgbm90IGJl IGNvbXB1dGVkIGZvciByZWxhdGlvbiBcIiVzLiVzXCIiLApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvaXBjLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGMu YwppbmRleCAyNjgxZTRjZGZmNS4uYjA2ZTRiODQ1MjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL2lwYy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lw Yy5jCkBAIC0xMzYsNyArMTM2LDcgQEAgcHJvY19leGl0KGludCBjb2RlKQogCQkgKi8KIAkJ Y2hhcgkJZ3Byb2ZEaXJOYW1lWzMyXTsKIAotCQlpZiAoSXNBdXRvVmFjdXVtV29ya2VyUHJv Y2VzcygpKQorCQlpZiAoQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpKQogCQkJc25wcmlu dGYoZ3Byb2ZEaXJOYW1lLCAzMiwgImdwcm9mL2F2d29ya2VyIik7CiAJCWVsc2UKIAkJCXNu cHJpbnRmKGdwcm9mRGlyTmFtZSwgMzIsICJncHJvZi8lZCIsIChpbnQpIGdldHBpZCgpKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCmluZGV4IDljMjVmNjMxYzVkLi5jMGU0ZTFjZjM5 YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYworKysgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCkBAIC00MSw3ICs0MSw2IEBACiAjaW5j bHVkZSAicG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24v c2xvdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3N5bmNyZXAuaCIKLSNpbmNsdWRlICJy ZXBsaWNhdGlvbi93YWxzZW5kZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92 YXJpYWJsZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9sbWdyLmgiCkBAIC0zMDgsMTEgKzMwNywxMSBAQCBJbml0UHJvY2Vzcyh2b2lkKQogCQll bG9nKEVSUk9SLCAieW91IGFscmVhZHkgZXhpc3QiKTsKIAogCS8qIERlY2lkZSB3aGljaCBs aXN0IHNob3VsZCBzdXBwbHkgb3VyIFBHUFJPQy4gKi8KLQlpZiAoSXNBbnlBdXRvVmFjdXVt UHJvY2VzcygpKQorCWlmIChBbUF1dG9WYWN1dW1MYXVuY2hlclByb2Nlc3MoKSB8fCBBbUF1 dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkpCiAJCXByb2NnbG9iYWxsaXN0ID0gJlByb2NHbG9i YWwtPmF1dG92YWNGcmVlUHJvY3M7Ci0JZWxzZSBpZiAoSXNCYWNrZ3JvdW5kV29ya2VyKQor CWVsc2UgaWYgKEFtQmFja2dyb3VuZFdvcmtlclByb2Nlc3MoKSkKIAkJcHJvY2dsb2JhbGxp c3QgPSAmUHJvY0dsb2JhbC0+Ymd3b3JrZXJGcmVlUHJvY3M7Ci0JZWxzZSBpZiAoYW1fd2Fs c2VuZGVyKQorCWVsc2UgaWYgKEFtV2FsU2VuZGVyUHJvY2VzcygpKQogCQlwcm9jZ2xvYmFs bGlzdCA9ICZQcm9jR2xvYmFsLT53YWxzZW5kZXJGcmVlUHJvY3M7CiAJZWxzZQogCQlwcm9j Z2xvYmFsbGlzdCA9ICZQcm9jR2xvYmFsLT5mcmVlUHJvY3M7CkBAIC0zNDIsNyArMzQxLDcg QEAgSW5pdFByb2Nlc3Modm9pZCkKIAkJICogaW4gdGhlIGF1dG92YWN1dW0gY2FzZT8KIAkJ ICovCiAJCVNwaW5Mb2NrUmVsZWFzZShQcm9jU3RydWN0TG9jayk7Ci0JCWlmIChhbV93YWxz ZW5kZXIpCisJCWlmIChBbVdhbFNlbmRlclByb2Nlc3MoKSkKIAkJCWVyZXBvcnQoRkFUQUws CiAJCQkJCShlcnJjb2RlKEVSUkNPREVfVE9PX01BTllfQ09OTkVDVElPTlMpLAogCQkJCQkg ZXJybXNnKCJudW1iZXIgb2YgcmVxdWVzdGVkIHN0YW5kYnkgY29ubmVjdGlvbnMgZXhjZWVk cyBtYXhfd2FsX3NlbmRlcnMgKGN1cnJlbnRseSAlZCkiLApAQCAtMzY1LDcgKzM2NCw3IEBA IEluaXRQcm9jZXNzKHZvaWQpCiAJICogY2xlYW5pbmcgdXAuICAoWFhYIGF1dG92YWMgbGF1 bmNoZXIgY3VycmVudGx5IGRvZXNuJ3QgcGFydGljaXBhdGUgaW4KIAkgKiB0aGlzOyBpdCBw cm9iYWJseSBzaG91bGQuKQogCSAqLwotCWlmIChJc1VuZGVyUG9zdG1hc3RlciAmJiAhSXNB dXRvVmFjdXVtTGF1bmNoZXJQcm9jZXNzKCkpCisJaWYgKElzVW5kZXJQb3N0bWFzdGVyICYm ICFBbUF1dG9WYWN1dW1MYXVuY2hlclByb2Nlc3MoKSkKIAkJTWFya1Bvc3RtYXN0ZXJDaGls ZEFjdGl2ZSgpOwogCiAJLyoKQEAgLTM4NCwxMSArMzgzLDExIEBAIEluaXRQcm9jZXNzKHZv aWQpCiAJTXlQcm9jLT5kYXRhYmFzZUlkID0gSW52YWxpZE9pZDsKIAlNeVByb2MtPnJvbGVJ ZCA9IEludmFsaWRPaWQ7CiAJTXlQcm9jLT50ZW1wTmFtZXNwYWNlSWQgPSBJbnZhbGlkT2lk OwotCU15UHJvYy0+aXNCYWNrZ3JvdW5kV29ya2VyID0gSXNCYWNrZ3JvdW5kV29ya2VyOwor CU15UHJvYy0+aXNCYWNrZ3JvdW5kV29ya2VyID0gQW1CYWNrZ3JvdW5kV29ya2VyUHJvY2Vz cygpOwogCU15UHJvYy0+ZGVsYXlDaGtwdEZsYWdzID0gMDsKIAlNeVByb2MtPnN0YXR1c0Zs YWdzID0gMDsKIAkvKiBOQiAtLSBhdXRvdmFjIGxhdW5jaGVyIGludGVudGlvbmFsbHkgZG9l cyBub3Qgc2V0IElTX0FVVE9WQUNVVU0gKi8KLQlpZiAoSXNBdXRvVmFjdXVtV29ya2VyUHJv Y2VzcygpKQorCWlmIChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkpCiAJCU15UHJvYy0+ c3RhdHVzRmxhZ3MgfD0gUFJPQ19JU19BVVRPVkFDVVVNOwogCU15UHJvYy0+bHdXYWl0aW5n ID0gTFdfV1NfTk9UX1dBSVRJTkc7CiAJTXlQcm9jLT5sd1dhaXRNb2RlID0gMDsKQEAgLTU3 OSw3ICs1NzgsNyBAQCBJbml0QXV4aWxpYXJ5UHJvY2Vzcyh2b2lkKQogCU15UHJvYy0+ZGF0 YWJhc2VJZCA9IEludmFsaWRPaWQ7CiAJTXlQcm9jLT5yb2xlSWQgPSBJbnZhbGlkT2lkOwog CU15UHJvYy0+dGVtcE5hbWVzcGFjZUlkID0gSW52YWxpZE9pZDsKLQlNeVByb2MtPmlzQmFj a2dyb3VuZFdvcmtlciA9IElzQmFja2dyb3VuZFdvcmtlcjsKKwlNeVByb2MtPmlzQmFja2dy b3VuZFdvcmtlciA9IEFtQmFja2dyb3VuZFdvcmtlclByb2Nlc3MoKTsKIAlNeVByb2MtPmRl bGF5Q2hrcHRGbGFncyA9IDA7CiAJTXlQcm9jLT5zdGF0dXNGbGFncyA9IDA7CiAJTXlQcm9j LT5sd1dhaXRpbmcgPSBMV19XU19OT1RfV0FJVElORzsKQEAgLTkzNSw3ICs5MzQsNyBAQCBQ cm9jS2lsbChpbnQgY29kZSwgRGF0dW0gYXJnKQogCSAqIHdheSwgc28gdGVsbCB0aGUgcG9z dG1hc3RlciB3ZSd2ZSBjbGVhbmVkIHVwIGFjY2VwdGFibHkgd2VsbC4gKFhYWAogCSAqIGF1 dG92YWMgbGF1bmNoZXIgc2hvdWxkIGJlIGluY2x1ZGVkIGhlcmUgc29tZWRheSkKIAkgKi8K LQlpZiAoSXNVbmRlclBvc3RtYXN0ZXIgJiYgIUlzQXV0b1ZhY3V1bUxhdW5jaGVyUHJvY2Vz cygpKQorCWlmIChJc1VuZGVyUG9zdG1hc3RlciAmJiAhQW1BdXRvVmFjdXVtTGF1bmNoZXJQ cm9jZXNzKCkpCiAJCU1hcmtQb3N0bWFzdGVyQ2hpbGRJbmFjdGl2ZSgpOwogCiAJLyogd2Fr ZSBhdXRvdmFjIGxhdW5jaGVyIGlmIG5lZWRlZCAtLSBzZWUgY29tbWVudHMgaW4gRnJlZVdv cmtlckluZm8gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBi L3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRleCAxYTM0YmQzNzE1Zi4uMzg2MTBi NzIzYWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9z cmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTMyNjcsNyArMzI2Nyw3IEBAIFByb2Nl c3NJbnRlcnJ1cHRzKHZvaWQpCiAJCQllcmVwb3J0KEZBVEFMLAogCQkJCQkoZXJyY29kZShF UlJDT0RFX1FVRVJZX0NBTkNFTEVEKSwKIAkJCQkJIGVycm1zZygiY2FuY2VsaW5nIGF1dGhl bnRpY2F0aW9uIGR1ZSB0byB0aW1lb3V0IikpKTsKLQkJZWxzZSBpZiAoSXNBdXRvVmFjdXVt V29ya2VyUHJvY2VzcygpKQorCQllbHNlIGlmIChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNz KCkpCiAJCQllcmVwb3J0KEZBVEFMLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0FETUlOX1NI VVRET1dOKSwKIAkJCQkJIGVycm1zZygidGVybWluYXRpbmcgYXV0b3ZhY3V1bSBwcm9jZXNz IGR1ZSB0byBhZG1pbmlzdHJhdG9yIGNvbW1hbmQiKSkpOwpAQCAtMzI4Niw3ICszMjg2LDcg QEAgUHJvY2Vzc0ludGVycnVwdHModm9pZCkKIAkJCSAqLwogCQkJcHJvY19leGl0KDEpOwog CQl9Ci0JCWVsc2UgaWYgKElzQmFja2dyb3VuZFdvcmtlcikKKwkJZWxzZSBpZiAoQW1CYWNr Z3JvdW5kV29ya2VyUHJvY2VzcygpKQogCQkJZXJlcG9ydChGQVRBTCwKIAkJCQkJKGVycmNv ZGUoRVJSQ09ERV9BRE1JTl9TSFVURE9XTiksCiAJCQkJCSBlcnJtc2coInRlcm1pbmF0aW5n IGJhY2tncm91bmQgd29ya2VyIFwiJXNcIiBkdWUgdG8gYWRtaW5pc3RyYXRvciBjb21tYW5k IiwKQEAgLTMzODYsNyArMzM4Niw3IEBAIFByb2Nlc3NJbnRlcnJ1cHRzKHZvaWQpCiAJCQkJ CShlcnJjb2RlKEVSUkNPREVfUVVFUllfQ0FOQ0VMRUQpLAogCQkJCQkgZXJybXNnKCJjYW5j ZWxpbmcgc3RhdGVtZW50IGR1ZSB0byBzdGF0ZW1lbnQgdGltZW91dCIpKSk7CiAJCX0KLQkJ aWYgKElzQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSkKKwkJaWYgKEFtQXV0b1ZhY3V1bVdv cmtlclByb2Nlc3MoKSkKIAkJewogCQkJTG9ja0Vycm9yQ2xlYW51cCgpOwogCQkJZXJlcG9y dChFUlJPUiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3Rh dF9yZWxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0 aW9uLmMKaW5kZXggMTExMDUwNzI1YTYuLmIyMGE2MGI1YTg3IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfcmVsYXRpb24uYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfcmVsYXRpb24uYwpAQCAtMjQ2LDcgKzI0Niw3 IEBAIHBnc3RhdF9yZXBvcnRfdmFjdXVtKE9pZCB0YWJsZW9pZCwgYm9vbCBzaGFyZWQsCiAJ ICovCiAJdGFiZW50cnktPmluc19zaW5jZV92YWN1dW0gPSAwOwogCi0JaWYgKElzQXV0b1Zh Y3V1bVdvcmtlclByb2Nlc3MoKSkKKwlpZiAoQW1BdXRvVmFjdXVtV29ya2VyUHJvY2Vzcygp KQogCXsKIAkJdGFiZW50cnktPmxhc3RfYXV0b3ZhY3V1bV90aW1lID0gdHM7CiAJCXRhYmVu dHJ5LT5hdXRvdmFjdXVtX2NvdW50Kys7CkBAIC0zMzcsNyArMzM3LDcgQEAgcGdzdGF0X3Jl cG9ydF9hbmFseXplKFJlbGF0aW9uIHJlbCwKIAlpZiAocmVzZXRjb3VudGVyKQogCQl0YWJl bnRyeS0+bW9kX3NpbmNlX2FuYWx5emUgPSAwOwogCi0JaWYgKElzQXV0b1ZhY3V1bVdvcmtl clByb2Nlc3MoKSkKKwlpZiAoQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpKQogCXsKIAkJ dGFiZW50cnktPmxhc3RfYXV0b2FuYWx5emVfdGltZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAo KTsKIAkJdGFiZW50cnktPmF1dG9hbmFseXplX2NvdW50Kys7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQv Z2xvYmFscy5jCmluZGV4IDg4YjAzZThmYTNjLi5jZTFmYTEwOTJmMiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvaW5pdC9nbG9iYWxzLmMKQEAgLTExNCw3ICsxMTQsNiBAQCBwaWRfdAkJUG9zdG1hc3Rl clBpZCA9IDA7CiBib29sCQlJc1Bvc3RtYXN0ZXJFbnZpcm9ubWVudCA9IGZhbHNlOwogYm9v bAkJSXNVbmRlclBvc3RtYXN0ZXIgPSBmYWxzZTsKIGJvb2wJCUlzQmluYXJ5VXBncmFkZSA9 IGZhbHNlOwotYm9vbAkJSXNCYWNrZ3JvdW5kV29ya2VyID0gZmFsc2U7CiAKIGJvb2wJCUV4 aXRPbkFueUVycm9yID0gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2luaXQvbWlzY2luaXQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYwpp bmRleCAyM2Y3N2E1OWU1OC4uOWM5MWU5YTEzMjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2luaXQvbWlzY2luaXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L21p c2Npbml0LmMKQEAgLTgzNyw3ICs4MzcsNyBAQCBJbml0aWFsaXplU2Vzc2lvblVzZXJJZFN0 YW5kYWxvbmUodm9pZCkKIAkgKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBvbmx5IGJlIGNhbGxl ZCBpbiBzaW5nbGUtdXNlciBtb2RlLCBpbiBhdXRvdmFjdXVtCiAJICogd29ya2VycywgYW5k IGluIGJhY2tncm91bmQgd29ya2Vycy4KIAkgKi8KLQlBc3NlcnQoIUlzVW5kZXJQb3N0bWFz dGVyIHx8IElzQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSB8fCBJc0JhY2tncm91bmRXb3Jr ZXIpOworCUFzc2VydCghSXNVbmRlclBvc3RtYXN0ZXIgfHwgQW1BdXRvVmFjdXVtV29ya2Vy UHJvY2VzcygpIHx8IEFtQmFja2dyb3VuZFdvcmtlclByb2Nlc3MoKSk7CiAKIAkvKiBjYWxs IG9ubHkgb25jZSAqLwogCUFzc2VydCghT2lkSXNWYWxpZChBdXRoZW50aWNhdGVkVXNlcklk KSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMgYi9z cmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMKaW5kZXggZTgyMmNkNjFkNWYuLjZi ZjcxYjJkNGUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0 LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCkBAIC0zNDQsNyAr MzQ0LDcgQEAgQ2hlY2tNeURhdGFiYXNlKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgYW1fc3Vw ZXJ1c2VyLCBib29sIG92ZXJyaWRlX2FsbG93X2Nvbm5lY3QKIAkgKgogCSAqIFdlIGRvIG5v dCBlbmZvcmNlIHRoZW0gZm9yIGF1dG92YWN1dW0gd29ya2VyIHByb2Nlc3NlcyBlaXRoZXIu CiAJICovCi0JaWYgKElzVW5kZXJQb3N0bWFzdGVyICYmICFJc0F1dG9WYWN1dW1Xb3JrZXJQ cm9jZXNzKCkpCisJaWYgKElzVW5kZXJQb3N0bWFzdGVyICYmICFBbUF1dG9WYWN1dW1Xb3Jr ZXJQcm9jZXNzKCkpCiAJewogCQkvKgogCQkgKiBDaGVjayB0aGF0IHRoZSBkYXRhYmFzZSBp cyBjdXJyZW50bHkgYWxsb3dpbmcgY29ubmVjdGlvbnMuCkBAIC04MjUsNyArODI1LDcgQEAg SW5pdFBvc3RncmVzKGNvbnN0IGNoYXIgKmluX2RibmFtZSwgT2lkIGRib2lkLAogCWJlZm9y ZV9zaG1lbV9leGl0KFNodXRkb3duUG9zdGdyZXMsIDApOwogCiAJLyogVGhlIGF1dG92YWN1 dW0gbGF1bmNoZXIgaXMgZG9uZSBoZXJlICovCi0JaWYgKElzQXV0b1ZhY3V1bUxhdW5jaGVy UHJvY2VzcygpKQorCWlmIChBbUF1dG9WYWN1dW1MYXVuY2hlclByb2Nlc3MoKSkKIAl7CiAJ CS8qIHJlcG9ydCB0aGlzIGJhY2tlbmQgaW4gdGhlIFBnQmFja2VuZFN0YXR1cyBhcnJheSAq LwogCQlwZ3N0YXRfYmVzdGFydCgpOwpAQCAtODY5LDcgKzg2OSw3IEBAIEluaXRQb3N0Z3Jl cyhjb25zdCBjaGFyICppbl9kYm5hbWUsIE9pZCBkYm9pZCwKIAkgKiBJbiBzdGFuZGFsb25l IG1vZGUgYW5kIGluIGF1dG92YWN1dW0gd29ya2VyIHByb2Nlc3Nlcywgd2UgdXNlIGEgZml4 ZWQKIAkgKiBJRCwgb3RoZXJ3aXNlIHdlIGZpZ3VyZSBpdCBvdXQgZnJvbSB0aGUgYXV0aGVu dGljYXRlZCB1c2VyIG5hbWUuCiAJICovCi0JaWYgKGJvb3RzdHJhcCB8fCBJc0F1dG9WYWN1 dW1Xb3JrZXJQcm9jZXNzKCkpCisJaWYgKGJvb3RzdHJhcCB8fCBBbUF1dG9WYWN1dW1Xb3Jr ZXJQcm9jZXNzKCkpCiAJewogCQlJbml0aWFsaXplU2Vzc2lvblVzZXJJZFN0YW5kYWxvbmUo KTsKIAkJYW1fc3VwZXJ1c2VyID0gdHJ1ZTsKQEAgLTg4NSw3ICs4ODUsNyBAQCBJbml0UG9z dGdyZXMoY29uc3QgY2hhciAqaW5fZGJuYW1lLCBPaWQgZGJvaWQsCiAJCQkJCSBlcnJoaW50 KCJZb3Ugc2hvdWxkIGltbWVkaWF0ZWx5IHJ1biBDUkVBVEUgVVNFUiBcIiVzXCIgU1VQRVJV U0VSOy4iLAogCQkJCQkJCSB1c2VybmFtZSAhPSBOVUxMID8gdXNlcm5hbWUgOiAicG9zdGdy ZXMiKSkpOwogCX0KLQllbHNlIGlmIChJc0JhY2tncm91bmRXb3JrZXIpCisJZWxzZSBpZiAo QW1CYWNrZ3JvdW5kV29ya2VyUHJvY2VzcygpKQogCXsKIAkJaWYgKHVzZXJuYW1lID09IE5V TEwgJiYgIU9pZElzVmFsaWQodXNlcm9pZCkpCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL21pc2NhZG1pbi5oIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKaW5kZXggNGVjYWU0 ZjgzNGUuLjYzMWZmMjhjYjIwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4u aAorKysgYi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaApAQCAtMTY0LDcgKzE2NCw2IEBAIGRv IHsgXAogZXh0ZXJuIFBHRExMSU1QT1JUIHBpZF90IFBvc3RtYXN0ZXJQaWQ7CiBleHRlcm4g UEdETExJTVBPUlQgYm9vbCBJc1Bvc3RtYXN0ZXJFbnZpcm9ubWVudDsKIGV4dGVybiBQR0RM TElNUE9SVCBib29sIElzVW5kZXJQb3N0bWFzdGVyOwotZXh0ZXJuIFBHRExMSU1QT1JUIGJv b2wgSXNCYWNrZ3JvdW5kV29ya2VyOwogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgSXNCaW5h cnlVcGdyYWRlOwogCiBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBFeGl0T25BbnlFcnJvcjsK QEAgLTM2NCw2ICszNjMsMTAgQEAgdHlwZWRlZiBlbnVtIEJhY2tlbmRUeXBlCiAKIGV4dGVy biBQR0RMTElNUE9SVCBCYWNrZW5kVHlwZSBNeUJhY2tlbmRUeXBlOwogCisjZGVmaW5lIEFt QXV0b1ZhY3V1bUxhdW5jaGVyUHJvY2VzcygpIChNeUJhY2tlbmRUeXBlID09IEJfQVVUT1ZB Q19MQVVOQ0hFUikKKyNkZWZpbmUgQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpCShNeUJh Y2tlbmRUeXBlID09IEJfQVVUT1ZBQ19XT1JLRVIpCisjZGVmaW5lIEFtQmFja2dyb3VuZFdv cmtlclByb2Nlc3MoKSAoTXlCYWNrZW5kVHlwZSA9PSBCX0JHX1dPUktFUikKKyNkZWZpbmUg QW1XYWxTZW5kZXJQcm9jZXNzKCkgICAgICAgIChNeUJhY2tlbmRUeXBlID09IEJfV0FMX1NF TkRFUikKICNkZWZpbmUgQW1TdGFydHVwUHJvY2VzcygpCQkJKE15QmFja2VuZFR5cGUgPT0g Ql9TVEFSVFVQKQogI2RlZmluZSBBbUJhY2tncm91bmRXcml0ZXJQcm9jZXNzKCkgKE15QmFj a2VuZFR5cGUgPT0gQl9CR19XUklURVIpCiAjZGVmaW5lIEFtQXJjaGl2ZXJQcm9jZXNzKCkJ CQkoTXlCYWNrZW5kVHlwZSA9PSBCX0FSQ0hJVkVSKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmggYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1 dG92YWN1dW0uaAppbmRleCAxOTk0YWVkZWYwMy4uODBjZjRjZGQ5NjkgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oCisrKyBiL3NyYy9pbmNsdWRl L3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oCkBAIC00OSwxMSArNDksNiBAQCBleHRlcm4gUEdE TExJTVBPUlQgaW50IExvZ19hdXRvdmFjdXVtX21pbl9kdXJhdGlvbjsKIAogLyogU3RhdHVz IGlucXVpcnkgZnVuY3Rpb25zICovCiBleHRlcm4gYm9vbCBBdXRvVmFjdXVtaW5nQWN0aXZl KHZvaWQpOwotZXh0ZXJuIGJvb2wgSXNBdXRvVmFjdXVtTGF1bmNoZXJQcm9jZXNzKHZvaWQp OwotZXh0ZXJuIGJvb2wgSXNBdXRvVmFjdXVtV29ya2VyUHJvY2Vzcyh2b2lkKTsKLQotI2Rl ZmluZSBJc0FueUF1dG9WYWN1dW1Qcm9jZXNzKCkgXAotCShJc0F1dG9WYWN1dW1MYXVuY2hl clByb2Nlc3MoKSB8fCBJc0F1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkpCiAKIC8qIEZ1bmN0 aW9ucyB0byBzdGFydCBhdXRvdmFjdXVtIHByb2Nlc3MsIGNhbGxlZCBmcm9tIHBvc3RtYXN0 ZXIgKi8KIGV4dGVybiB2b2lkIGF1dG92YWNfaW5pdCh2b2lkKTsKLS0gCjIuMzkuMgoK --------------RUX0UwSvsUmik3v5mDKrFt0g--