Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pgnPC-0003UA-IG for pgsql-hackers@arkaria.postgresql.org; Mon, 27 Mar 2023 14:01:03 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pgnPA-0003Qr-Je for pgsql-hackers@arkaria.postgresql.org; Mon, 27 Mar 2023 14:01:00 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pgnP9-0003Qh-Gw for pgsql-hackers@lists.postgresql.org; Mon, 27 Mar 2023 14:01:00 +0000 Received: from mail-pg1-x531.google.com ([2607:f8b0:4864:20::531]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pgnP6-0007YR-EE for pgsql-hackers@postgresql.org; Mon, 27 Mar 2023 14:00:58 +0000 Received: by mail-pg1-x531.google.com with SMTP id h14so5192856pgj.7 for ; Mon, 27 Mar 2023 07:00:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679925655; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=FuOx2JZq3+TAxueeiHd5KBQZ3+F0ELHd68Wo7X68INw=; b=GdT8cyjBWPpal5j3PHGqPp/tR9ATHgaiUyb+C+mMtDvk612dgZKMxasPnZD880owqP ELVAnomg2x5WF5YAPLEQjvbie/6QjBBrVxRTrOsAsnYmdMnI2NAQrh8kTT7hTi9razIH w6VvxXyM7qYRz2Ch1OkdqBo67JYQX0hVwv/akbH7CHE4ZbkQsffJut95UoxSu1RZRXOT 1abyop6Qg2q6WfUGSctRb6QNT1bXgr0+swVxEQ97QBgTWK0zdCg/sIn4Pe4vXZogl6Wb UTa0OOX1XbGHP9nsfi+lFSbx3dZDE8ze+Fi2M74IM66sZYlFtNdV63bsYvuH/ZM+RpNv ahTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679925655; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=FuOx2JZq3+TAxueeiHd5KBQZ3+F0ELHd68Wo7X68INw=; b=yCteBE9AMthLn0MPjDiNK9oYl8sZ7JZaAyvEkX57l5Dh4ro2rz3NiBEN6Jvlp9jiJs pSNbAcyImp8kLANnYOjIzbN7WJ6y4aUYYHWhuRU9a4NR4UP4zUAYq5ispuySJyPzY9lP B9nQ776BPszss52OB8f+8JUmln4qqd6JhmCwE1YJ48Vyp7z2z6M8r4I/1FczbW+ldnjq 3d+ApTtDqvW/v9aBjamp5ITWfmF32g2xUk+I+HSffoQWIxQDZ8bhGUZz8NAdZgYnivAu TTLIjAU0xd6SKx20DgwNh/Dqrm8klRM1oFFaRPX91M/Hx4JSZxeZAtefoonDuIYkdnyO 8FsA== X-Gm-Message-State: AAQBX9eKkf4dyMB4WVEOp8K/i6auVwfqRYurZ5a+Gx05pKm8LVoJApJC ItH24L31DUZ1VOzuxx+LFekBAhHsapnHHqUNrfo= X-Google-Smtp-Source: AKy350bXB3cImkZpFXlOP0YPKAbDfAQBAbRxHf8piSrl6ltY2Cp3/Zm4PDw+YUUu3nvXXOgqTnTzJOgIzig5YCWlfTg= X-Received: by 2002:a63:1714:0:b0:50b:18ac:fbea with SMTP id x20-20020a631714000000b0050b18acfbeamr3086812pgl.9.1679925655160; Mon, 27 Mar 2023 07:00:55 -0700 (PDT) MIME-Version: 1.0 References: <20221221101846.7zsi7lscnm5ediik@alvherre.pgsql> <1350682.1671635927@sss.pgh.pa.us> <4191508.1674157166@sss.pgh.pa.us> <349124.1674185509@sss.pgh.pa.us> <20230207180855.xy5m4puwh5gzd7xy@awork3.anarazel.de> In-Reply-To: From: Amit Langote Date: Mon, 27 Mar 2023 23:00:38 +0900 Message-ID: Subject: Re: generic plans and "initial" pruning To: Andres Freund Cc: Alvaro Herrera , David Rowley , Jacob Champion , PostgreSQL-development , Robert Haas , Tom Lane Content-Type: multipart/mixed; boundary="000000000000ed32f505f7e22b0a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000ed32f505f7e22b0a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable > > On Tue, Mar 14, 2023 at 7:07=E2=80=AFPM Amit Langote wrote: > > > * I decided to initialize QueryDesc.planstate even in the cases where > > > ExecInitNode() traversal is aborted in the middle on detecting > > > CachedPlan invalidation such that it points to a partially initialize= d > > > PlanState tree. My earlier thinking that each PlanState node need no= t > > > be visited for resource cleanup in such cases was naive after all. T= o > > > that end, I've fixed the ExecEndNode() subroutines of all Plan node > > > types to account for potentially uninitialized fields. There are a > > > couple of cases where I'm a bit doubtful though. In > > > ExecEndCustomScan(), there's no indication in CustomScanState whether > > > it's OK to call EndCustomScan() when BeginCustomScan() may not have > > > been called. For ForeignScanState, I've assumed that > > > ForeignScanState.fdw_state being set can be used as a marker that > > > BeginForeignScan would have been called, though maybe that's not a > > > solid assumption. It seems I hadn't noted in the ExecEndNode()'s comment that all node types' recursive subroutines need to handle the change made by this patch that the corresponding ExecInitNode() subroutine may now return early without having initialized all state struct fields. Also noted in the documentation for CustomScan and ForeignScan that the Begin*Scan callback may not have been called at all, so the End*Scan should handle that gracefully. --=20 Thanks, Amit Langote EDB: http://www.enterprisedb.com --000000000000ed32f505f7e22b0a Content-Type: application/octet-stream; name="v38-0001-Add-field-to-store-partitioned-relids-to-Append-.patch" Content-Disposition: attachment; filename="v38-0001-Add-field-to-store-partitioned-relids-to-Append-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lfqwb3gy2 RnJvbSBkZmM0MTUxMGVmM2ViZWMzOGU3YTU2YjYzOWZmYTQxMTkzMTA5YjQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogVGh1LCA5IE1hciAyMDIzIDExOjI2OjA2ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2MzggMS8z XSBBZGQgZmllbGQgdG8gc3RvcmUgcGFydGl0aW9uZWQgcmVsaWRzIHRvCiBBcHBlbmQvTWVyZ2VB cHBlbmQKCkEgZnV0dXJlIGNvbW1pdCB3b3VsZCBsaWtlIHRvIG1vdmUgdGhlIHRpbWluZyBvZiBs b2NraW5nIHJlbGF0aW9ucwpyZWZlcmVuY2VkIGluIGEgY2FjaGVkIHBsYW4gdG8gRXhlY0luaXRO b2RlKCkgdHJhdmVyc2FsIG9mIHRoZSBwbGFuCnRyZWUgZnJvbSB0aGUgY3VycmVudCBsb29wLW92 ZXItcmFuZ2V0YWJsZSBpbiBBY3F1aXJlRXhlY3V0b3JMb2NrcygpLgpHaXZlbiB0aGF0IHBhcnRp dGlvbmVkIHRhYmxlcyAodGhlaXIgUlQgaW5kZXhlcykgd291bGQgbm90IGJlCmFjY2Vzc2libGUg dmlhIHRoZSBuZXcgd2F5IG9mIGZpbmRpbmcgdGhlIHJlbGF0aW9ucyB0byBsb2NrLCBhZGQgYQpm aWVsZCB0byBBcHBlbmQvTWVyZ2VBcHBlbmQgdG8gdHJhY2sgdGhlbSBzZXBhcmF0ZWx5LgoKVGhp cyByZWZhY3RvcnMgdGhlIGNvZGUgdG8gbG9vayB1cCBwYXJ0aXRpb25lZCBwYXJlbnQgcmVsaWRz IGZyb20gYQpnaXZlbiBsaXN0IG9mIGxlYWYgcGFydGl0aW9uIHN1YnBhdGhzIG9mIGFuIEFwcGVu ZC9NZXJnZUFwcGVuZCBvdXQKb2YgbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKCkgaW50byBpdHMg b3duIGZ1bmN0aW9uIGNhbGxlZAphZGRfYXBwZW5kX3N1YnBhdGhfcGFydHJlbGlkcygpLiAgVGhv dWdoLCB0aGUgY29kZSBuZWVkcyB0byBiZQpnZW5lcmFsaXplZCB0byB0aGUgY2FzZXMgd2hlcmUg Y2hpbGQgcmVscyBjYW4gYmUgam9pbnJlbHMgb3IKdXBwZXIgKGdyb3VwaW5nKSByZWxzLiAgQWxz bywgdG8gbWFrZSBpdCBlYXNpZXIgdG8gdHJhdmVyc2UgdGhlIHBhcmVudApjaGFpbiBvZiBhIGNo aWxkIGdyb3VwaW5nIHJlbCwgdGhpcyBtYWtlcyBpdHMgUmVsT3B0SW5mby5wYXJlbnQgdG8gYmUK c2V0LCB3aGljaCBpcyBhbHJlYWR5IGRvbmUgZm9yIGJhc2VyZWxzIGFuZCBqb2lucmVscy4KLS0t CiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgfCAgMzYgKysrKystLQog c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgIHwgICAzICsKIHNyYy9iYWNr ZW5kL29wdGltaXplci91dGlsL2FwcGVuZGluZm8uYyB8IDEzNCArKysrKysrKysrKysrKysrKysr KysrKysKIHNyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYyAgICB8IDEyNCArKyst LS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCAgICAgICAg ICAgfCAgMTQgKysrCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvYXBwZW5kaW5mby5oICAgICAgfCAg IDMgKwogc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oICAgIHwgICAzICstCiA3 IGZpbGVzIGNoYW5nZWQsIDE5NCBpbnNlcnRpb25zKCspLCAxMjMgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCmluZGV4IDkxMGZmYmYxZTEuLjc5NGNk YjVlM2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4u YworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKQEAgLTI1LDYg KzI1LDcgQEAKICNpbmNsdWRlICJub2Rlcy9leHRlbnNpYmxlLmgiCiAjaW5jbHVkZSAibm9kZXMv bWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCisjaW5jbHVkZSAib3B0 aW1pemVyL2FwcGVuZGluZm8uaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvY2xhdXNlcy5oIgogI2lu Y2x1ZGUgIm9wdGltaXplci9jb3N0LmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5o IgpAQCAtMTIwOSw2ICsxMjEwLDcgQEAgY3JlYXRlX2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZvICpy b290LCBBcHBlbmRQYXRoICpiZXN0X3BhdGgsIGludCBmbGFncykKIAlPaWQJCSAgICpub2RlQ29s bGF0aW9ucyA9IE5VTEw7CiAJYm9vbAkgICAqbm9kZU51bGxzRmlyc3QgPSBOVUxMOwogCWJvb2wJ CWNvbnNpZGVyX2FzeW5jID0gZmFsc2U7CisJTGlzdAkgICAqYWxscGFydHJlbGlkcyA9IE5JTDsK IAogCS8qCiAJICogVGhlIHN1YnBhdGhzIGxpc3QgY291bGQgYmUgZW1wdHksIGlmIGV2ZXJ5IGNo aWxkIHdhcyBwcm92ZW4gZW1wdHkgYnkKQEAgLTEzNTAsMTggKzEzNTIsMjQgQEAgY3JlYXRlX2Fw cGVuZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBBcHBlbmRQYXRoICpiZXN0X3BhdGgsIGludCBm bGFncykKIAkJCSsrbmFzeW5jcGxhbnM7CiAJCX0KIAorCQkvKiBQb3B1bGF0ZSBwYXJ0aXRpb25l ZCBwYXJlbnQgcmVsaWRzLiAqLworCQlhbGxwYXJ0cmVsaWRzID0gYWRkX2FwcGVuZF9zdWJwYXRo X3BhcnRyZWxpZHMocm9vdCwgc3VicGF0aCwgcmVsLAorCQkJCQkJCQkJCQkJCSAgYWxscGFydHJl bGlkcyk7CisKIAkJc3VicGxhbnMgPSBsYXBwZW5kKHN1YnBsYW5zLCBzdWJwbGFuKTsKIAl9CiAK KwlwbGFuLT5hbGxwYXJ0cmVsaWRzID0gYWxscGFydHJlbGlkczsKKwogCS8qIFNldCBiZWxvdyBp ZiB3ZSBmaW5kIHF1YWxzIHRoYXQgd2UgY2FuIHVzZSB0byBydW4tdGltZSBwcnVuZSAqLwogCXBs YW4tPnBhcnRfcHJ1bmVfaW5kZXggPSAtMTsKIAogCS8qCi0JICogSWYgYW55IHF1YWxzIGV4aXN0 LCB0aGV5IG1heSBiZSB1c2VmdWwgdG8gcGVyZm9ybSBmdXJ0aGVyIHBhcnRpdGlvbgotCSAqIHBy dW5pbmcgZHVyaW5nIGV4ZWN1dGlvbi4gIEdhdGhlciBpbmZvcm1hdGlvbiBuZWVkZWQgYnkgdGhl IGV4ZWN1dG9yIHRvCi0JICogZG8gcGFydGl0aW9uIHBydW5pbmcuCisJICogSWYgc2Nhbm5pbmcg cGFydGl0aW9ucywgY2hlY2sgaWYgdGhlcmUgYXJlIHF1YWxzIHRoYXQgbWF5IGJlIHVzZWZ1bCB0 bworCSAqIHBlcmZvcm0gZnVydGhlciBwYXJ0aXRpb24gcHJ1bmluZyBkdXJpbmcgZXhlY3V0aW9u LiAgR2F0aGVyIGluZm9ybWF0aW9uCisJICogbmVlZGVkIGJ5IHRoZSBleGVjdXRvciB0byBkbyBw YXJ0aXRpb24gcHJ1bmluZy4KIAkgKi8KLQlpZiAoZW5hYmxlX3BhcnRpdGlvbl9wcnVuaW5nKQor CWlmIChlbmFibGVfcGFydGl0aW9uX3BydW5pbmcgJiYgYWxscGFydHJlbGlkcyAhPSBOSUwpCiAJ ewogCQlMaXN0CSAgICpwcnVuZXF1YWw7CiAKQEAgLTEzODEsNyArMTM4OSw4IEBAIGNyZWF0ZV9h cHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgQXBwZW5kUGF0aCAqYmVzdF9wYXRoLCBpbnQg ZmxhZ3MpCiAJCWlmIChwcnVuZXF1YWwgIT0gTklMKQogCQkJcGxhbi0+cGFydF9wcnVuZV9pbmRl eCA9IG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhyb290LCByZWwsCiAJCQkJCQkJCQkJCQkJCQkg IGJlc3RfcGF0aC0+c3VicGF0aHMsCi0JCQkJCQkJCQkJCQkJCQkgIHBydW5lcXVhbCk7CisJCQkJ CQkJCQkJCQkJCQkgIHBydW5lcXVhbCwKKwkJCQkJCQkJCQkJCQkJCSAgYWxscGFydHJlbGlkcyk7 CiAJfQogCiAJcGxhbi0+YXBwZW5kcGxhbnMgPSBzdWJwbGFuczsKQEAgLTE0MjUsNiArMTQzNCw3 IEBAIGNyZWF0ZV9tZXJnZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgTWVyZ2VBcHBl bmRQYXRoICpiZXN0X3BhdGgsCiAJTGlzdAkgICAqc3VicGxhbnMgPSBOSUw7CiAJTGlzdENlbGwg ICAqc3VicGF0aHM7CiAJUmVsT3B0SW5mbyAqcmVsID0gYmVzdF9wYXRoLT5wYXRoLnBhcmVudDsK KwlMaXN0CSAgICphbGxwYXJ0cmVsaWRzID0gTklMOwogCiAJLyoKIAkgKiBXZSBkb24ndCBoYXZl IHRoZSBhY3R1YWwgY3JlYXRpb24gb2YgdGhlIE1lcmdlQXBwZW5kIG5vZGUgc3BsaXQgb3V0CkBA IC0xNTE0LDE4ICsxNTI0LDIzIEBAIGNyZWF0ZV9tZXJnZV9hcHBlbmRfcGxhbihQbGFubmVySW5m byAqcm9vdCwgTWVyZ2VBcHBlbmRQYXRoICpiZXN0X3BhdGgsCiAJCQlzdWJwbGFuID0gKFBsYW4g Kikgc29ydDsKIAkJfQogCisJCWFsbHBhcnRyZWxpZHMgPSBhZGRfYXBwZW5kX3N1YnBhdGhfcGFy dHJlbGlkcyhyb290LCBzdWJwYXRoLCByZWwsCisJCQkJCQkJCQkJCQkJICBhbGxwYXJ0cmVsaWRz KTsKKwogCQlzdWJwbGFucyA9IGxhcHBlbmQoc3VicGxhbnMsIHN1YnBsYW4pOwogCX0KIAorCW5v ZGUtPmFsbHBhcnRyZWxpZHMgPSBhbGxwYXJ0cmVsaWRzOworCiAJLyogU2V0IGJlbG93IGlmIHdl IGZpbmQgcXVhbHMgdGhhdCB3ZSBjYW4gdXNlIHRvIHJ1bi10aW1lIHBydW5lICovCiAJbm9kZS0+ cGFydF9wcnVuZV9pbmRleCA9IC0xOwogCiAJLyoKLQkgKiBJZiBhbnkgcXVhbHMgZXhpc3QsIHRo ZXkgbWF5IGJlIHVzZWZ1bCB0byBwZXJmb3JtIGZ1cnRoZXIgcGFydGl0aW9uCi0JICogcHJ1bmlu ZyBkdXJpbmcgZXhlY3V0aW9uLiAgR2F0aGVyIGluZm9ybWF0aW9uIG5lZWRlZCBieSB0aGUgZXhl Y3V0b3IgdG8KLQkgKiBkbyBwYXJ0aXRpb24gcHJ1bmluZy4KKwkgKiBJZiBzY2FubmluZyBwYXJ0 aXRpb25zLCBjaGVjayBpZiB0aGVyZSBhcmUgcXVhbHMgdGhhdCBtYXkgYmUgdXNlZnVsIHRvCisJ ICogcGVyZm9ybSBmdXJ0aGVyIHBhcnRpdGlvbiBwcnVuaW5nIGR1cmluZyBleGVjdXRpb24uICBH YXRoZXIgaW5mb3JtYXRpb24KKwkgKiBuZWVkZWQgYnkgdGhlIGV4ZWN1dG9yIHRvIGRvIHBhcnRp dGlvbiBwcnVuaW5nLgogCSAqLwotCWlmIChlbmFibGVfcGFydGl0aW9uX3BydW5pbmcpCisJaWYg KGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZyAmJiBhbGxwYXJ0cmVsaWRzICE9IE5JTCkKIAl7CiAJ CUxpc3QJICAgKnBydW5lcXVhbDsKIApAQCAtMTUzNyw3ICsxNTUyLDggQEAgY3JlYXRlX21lcmdl X2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBNZXJnZUFwcGVuZFBhdGggKmJlc3RfcGF0 aCwKIAkJaWYgKHBydW5lcXVhbCAhPSBOSUwpCiAJCQlub2RlLT5wYXJ0X3BydW5lX2luZGV4ID0g bWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKHJvb3QsIHJlbCwKIAkJCQkJCQkJCQkJCQkJCSAgYmVz dF9wYXRoLT5zdWJwYXRocywKLQkJCQkJCQkJCQkJCQkJCSAgcHJ1bmVxdWFsKTsKKwkJCQkJCQkJ CQkJCQkJCSAgcHJ1bmVxdWFsLAorCQkJCQkJCQkJCQkJCQkJICBhbGxwYXJ0cmVsaWRzKTsKIAl9 CiAKIAlub2RlLT5tZXJnZXBsYW5zID0gc3VicGxhbnM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9w bGFubmVyLmMKaW5kZXggYTE4NzNjZTI2ZC4uNjJiM2VjOTZjYyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL3BsYW5uZXIuYwpAQCAtNzgwMSw4ICs3ODAxLDExIEBAIGNyZWF0ZV9wYXJ0aXRpb253 aXNlX2dyb3VwaW5nX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJICAgYWdnX2Nv c3RzLCBnZCwgJmNoaWxkX2V4dHJhLAogCQkJCQkJCQkJICAgJmNoaWxkX3BhcnRpYWxseV9ncm91 cGVkX3JlbCk7CiAKKwkJLyogTWFyayBhcyBjaGlsZCBvZiBncm91cGVkX3JlbC4gKi8KKwkJY2hp bGRfZ3JvdXBlZF9yZWwtPnBhcmVudCA9IGdyb3VwZWRfcmVsOwogCQlpZiAoY2hpbGRfcGFydGlh bGx5X2dyb3VwZWRfcmVsKQogCQl7CisJCQljaGlsZF9wYXJ0aWFsbHlfZ3JvdXBlZF9yZWwtPnBh cmVudCA9IGdyb3VwZWRfcmVsOwogCQkJcGFydGlhbGx5X2dyb3VwZWRfbGl2ZV9jaGlsZHJlbiA9 CiAJCQkJbGFwcGVuZChwYXJ0aWFsbHlfZ3JvdXBlZF9saXZlX2NoaWxkcmVuLAogCQkJCQkJY2hp bGRfcGFydGlhbGx5X2dyb3VwZWRfcmVsKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGlt aXplci91dGlsL2FwcGVuZGluZm8uYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2FwcGVu ZGluZm8uYwppbmRleCA5ZDM3NzM4NWYxLi40ODc2NzQyYWIyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvYXBwZW5kaW5mby5jCkBAIC00MCw2ICs0MCw3IEBAIHN0YXRpYyB2b2lkIG1ha2Vf aW5oX3RyYW5zbGF0aW9uX2xpc3QoUmVsYXRpb24gb2xkcmVsYXRpb24sCiAJCQkJCQkJCQkgIEFw cGVuZFJlbEluZm8gKmFwcGluZm8pOwogc3RhdGljIE5vZGUgKmFkanVzdF9hcHBlbmRyZWxfYXR0 cnNfbXV0YXRvcihOb2RlICpub2RlLAogCQkJCQkJCQkJCQlhZGp1c3RfYXBwZW5kcmVsX2F0dHJz X2NvbnRleHQgKmNvbnRleHQpOworc3RhdGljIExpc3QgKmFkZF9wYXJ0X3JlbGlkcyhMaXN0ICph bGxwYXJ0cmVsaWRzLCBCaXRtYXBzZXQgKnBhcnRyZWxpZHMpOwogCiAKIC8qCkBAIC0xMDMxLDMg KzEwMzIsMTM2IEBAIGRpc3RyaWJ1dGVfcm93X2lkZW50aXR5X3ZhcnMoUGxhbm5lckluZm8gKnJv b3QpCiAJCX0KIAl9CiB9CisKKy8qCisgKiBhZGRfYXBwZW5kX3N1YnBhdGhfcGFydHJlbGlkcwor ICoJCUxvb2sgdXAgYSBjaGlsZCBzdWJwYXRoJ3MgcmVsJ3MgcGFydGl0aW9uZWQgcGFyZW50IHJl bGlkcyB1cCB0bworICoJCXBhcmVudHJlbCBhbmQgYWRkIHRoZSBiaXRtYXBzZXQgY29udGFpbmlu ZyB0aG9zZSBpbnRvCisgKgkJJ2FsbHBhcnRyZWxpZHMnCisgKi8KK0xpc3QgKgorYWRkX2FwcGVu ZF9zdWJwYXRoX3BhcnRyZWxpZHMoUGxhbm5lckluZm8gKnJvb3QsIFBhdGggKnN1YnBhdGgsCisJ CQkJCQkJICBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCisJCQkJCQkJICBMaXN0ICphbGxwYXJ0cmVs aWRzKQoreworCVJlbE9wdEluZm8gKnByZWwgPSBzdWJwYXRoLT5wYXJlbnQ7CisJUmVsaWRzCQlw YXJ0cmVsaWRzID0gTlVMTDsKKworCS8qIE5vdGhpbmcgdG8gZG8gaWYgdGhlcmUncyBubyBwYXJl bnQgdG8gYmVnaW4gd2l0aC4gKi8KKwlpZiAoIUlTX09USEVSX1JFTChwcmVsKSkKKwkJcmV0dXJu IGFsbHBhcnRyZWxpZHM7CisKKwkvKgorCSAqIFRyYXZlcnNlIHVwIHRvIHRoZSBwYXRocmVsJ3Mg dG9wbW9zdCBwYXJ0aXRpb25lZCBwYXJlbnQsIGNvbGxlY3RpbmcKKwkgKiBwYXJlbnQgcmVsaWRz IGFzIHdlIGdvOyBidXQgc3RvcCBpZiB3ZSByZWFjaCBwYXJlbnRyZWwuICAoTm9ybWFsbHksIGEK KwkgKiBwYXRocmVsJ3MgdG9wbW9zdCBwYXJ0aXRpb25lZCBwYXJlbnQgaXMgZWl0aGVyIHBhcmVu dHJlbCBvciBhIFVOSU9OIEFMTAorCSAqIGFwcGVuZHJlbCBjaGlsZCBvZiBwYXJlbnRyZWwuICBC dXQgd2hlbiBoYW5kbGluZyBwYXJ0aXRpb253aXNlIGpvaW5zIG9mCisJICogbXVsdGktbGV2ZWwg cGFydGl0aW9uaW5nIHRyZWVzLCB3ZSBjYW4gc2VlIGFuIGFwcGVuZCBwYXRoIHdob3NlCisJICog cGFyZW50cmVsIGlzIGFuIGludGVybWVkaWF0ZSBwYXJ0aXRpb25lZCB0YWJsZS4pCisJICovCisJ ZG8KKwl7CisJCVJlbGlkcwlwYXJlbnRfcmVsaWRzID0gTlVMTDsKKworCQkvKgorCQkgKiBGb3Ig c2ltcGxlIGNoaWxkIHJlbHMsIHdlIGNhbiBzaW1wbHkgZ2V0IHRoZSBwYXJlbnQgcmVsaWQgZnJv bQorCQkgKiBwcmVsLT5wYXJlbnQuICBCdXQgZm9yIHBhcnRpdGlvbndpc2Ugam9pbiBhbmQgYWdn cmVnYXRlIGNoaWxkIHJlbHMsCisJCSAqIHdoaWxlIHdlIGNhbiB1c2UgcHJlbC0+cGFyZW50IHRv IG1vdmUgdXAgdGhlIHRyZWUsIHBhcmVudCByZWxpZHMgdG8KKwkJICogYWRkIGludG8gJ3BhcnRy ZWxpZHMnIG11c3QgYmUgZm91bmQgdGhlIGhhcmQgd2F5IHRocm91Z2ggdGhlCisJCSAqIEFwcGVu ZEluZm9JbmZvcywgYmVjYXVzZSAxKSBhIGpvaW5yZWwncyByZWxpZHMgbWF5IHBvaW50IHRvIFJU RV9KT0lOCisJCSAqIGVudHJpZXMsIDIpIHRvcG1vc3QgcGFyZW50IGdyb3VwaW5nIHJlbCdzIHJl bGlkcyBmaWVsZCBpcyBsZWZ0IE5VTEwuCisJCSAqLworCQlpZiAoSVNfU0lNUExFX1JFTChwcmVs KSkKKwkJeworCQkJcHJlbCA9IHByZWwtPnBhcmVudDsKKwkJCS8qIFN0b3Agb25jZSB3ZSByZWFj aCB0aGUgcm9vdCBwYXJ0aXRpb25lZCByZWwuICovCisJCQlpZiAoIUlTX1BBUlRJVElPTkVEX1JF TChwcmVsKSkKKwkJCQlicmVhazsKKwkJCXBhcmVudF9yZWxpZHMgPSBibXNfYWRkX21lbWJlcnMo cGFyZW50X3JlbGlkcywgcHJlbC0+cmVsaWRzKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCUFwcGVu ZFJlbEluZm8gKiphcHBpbmZvczsKKwkJCWludAkJbmFwcGluZm9zLAorCQkJCQlpOworCisJCQlh cHBpbmZvcyA9IGZpbmRfYXBwaW5mb3NfYnlfcmVsaWRzKHJvb3QsIHByZWwtPnJlbGlkcywKKwkJ CQkJCQkJCQkJICAgJm5hcHBpbmZvcyk7CisJCQlmb3IgKGkgPSAwOyBpIDwgbmFwcGluZm9zOyBp KyspCisJCQl7CisJCQkJQXBwZW5kUmVsSW5mbyAqYXBwaW5mbyA9IGFwcGluZm9zW2ldOworCisJ CQkJcGFyZW50X3JlbGlkcyA9IGJtc19hZGRfbWVtYmVyKHBhcmVudF9yZWxpZHMsCisJCQkJCQkJ CQkJCSAgIGFwcGluZm8tPnBhcmVudF9yZWxpZCk7CisJCQl9CisJCQlwZnJlZShhcHBpbmZvcyk7 CisJCQlwcmVsID0gcHJlbC0+cGFyZW50OworCQl9CisJCS8qIGFjY2VwdCB0aGlzIGxldmVsIGFz IGFuIGludGVyZXN0aW5nIHBhcmVudCAqLworCQlwYXJ0cmVsaWRzID0gYm1zX2FkZF9tZW1iZXJz KHBhcnRyZWxpZHMsIHBhcmVudF9yZWxpZHMpOworCQlpZiAocHJlbCA9PSBwYXJlbnRyZWwpCisJ CQlicmVhazsJCS8qIGRvbid0IHRyYXZlcnNlIGFib3ZlIHBhcmVudHJlbCAqLworCX0gd2hpbGUg KElTX09USEVSX1JFTChwcmVsKSk7CisKKwlpZiAocGFydHJlbGlkcyA9PSBOVUxMKQorCQlyZXR1 cm4gYWxscGFydHJlbGlkczsKKworCXJldHVybiBhZGRfcGFydF9yZWxpZHMoYWxscGFydHJlbGlk cywgcGFydHJlbGlkcyk7Cit9CisKKy8qCisgKiBhZGRfcGFydF9yZWxpZHMKKyAqCQlBZGQgbmV3 IGluZm8gdG8gYSBsaXN0IG9mIEJpdG1hcHNldHMgb2YgcGFydGl0aW9uZWQgcmVsaWRzLgorICoK KyAqIFdpdGhpbiAnYWxscGFydHJlbGlkcycsIHRoZXJlIGlzIG9uZSBCaXRtYXBzZXQgZm9yIGVh Y2ggdG9wbW9zdCBwYXJlbnQKKyAqIHBhcnRpdGlvbmVkIHJlbC4gIEVhY2ggQml0bWFwc2V0IGNv bnRhaW5zIHRoZSBSVCBpbmRleGVzIG9mIHRoZSB0b3Btb3N0CisgKiBwYXJlbnQgYXMgd2VsbCBh cyBpdHMgcmVsZXZhbnQgbm9uLWxlYWYgY2hpbGQgcGFydGl0aW9ucy4gIFNpbmNlIChieQorICog Y29uc3RydWN0aW9uIG9mIHRoZSByYW5nZXRhYmxlIGxpc3QpIHBhcmVudCBwYXJ0aXRpb25zIG11 c3QgaGF2ZSBsb3dlcgorICogUlQgaW5kZXhlcyB0aGFuIHRoZWlyIGNoaWxkcmVuLCB3ZSBjYW4g ZGlzdGluZ3Vpc2ggdGhlIHRvcG1vc3QgcGFyZW50CisgKiBhcyBiZWluZyB0aGUgbG93ZXN0IHNl dCBiaXQgaW4gdGhlIEJpdG1hcHNldC4KKyAqCisgKiAncGFydHJlbGlkcycgY29udGFpbnMgdGhl IFJUIGluZGV4ZXMgb2YgYSBwYXJlbnQgcGFydGl0aW9uZWQgcmVsLCBhbmQKKyAqIHBvc3NpYmx5 IHNvbWUgbm9uLWxlYWYgY2hpbGRyZW4sIHRoYXQgYXJlIG5ld2x5IGlkZW50aWZpZWQgYXMgcGFy ZW50cyBvZgorICogc29tZSBzdWJwYXRoIHJlbCBwYXNzZWQgdG8gbWFrZV9wYXJ0aXRpb25fcHJ1 bmVpbmZvKCkuICBUaGVzZSBhcmUgYWRkZWQKKyAqIHRvIGFuIGFwcHJvcHJpYXRlIG1lbWJlciBv ZiAnYWxscGFydHJlbGlkcycuCisgKgorICogTm90ZSB0aGF0IHRoZSBsaXN0IGNvbnRhaW5zIG9u bHkgUlQgaW5kZXhlcyBvZiBwYXJ0aXRpb25lZCB0YWJsZXMgdGhhdAorICogYXJlIHBhcmVudHMg b2Ygc29tZSBzY2FuLWxldmVsIHJlbGF0aW9uIGFwcGVhcmluZyBpbiB0aGUgJ3N1YnBhdGhzJyB0 aGF0CisgKiBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oKSBpcyBkZWFsaW5nIHdpdGguICBBbHNv LCAidG9wbW9zdCIgcGFyZW50cyBhcmUKKyAqIG5vdCBhbGxvd2VkIHRvIGJlIGhpZ2hlciB0aGFu IHRoZSAncGFyZW50cmVsJyBhc3NvY2lhdGVkIHdpdGggdGhlIGFwcGVuZAorICogcGF0aC4gIElu IHRoaXMgd2F5LCB3ZSBhdm9pZCBleHBlbmRpbmcgY3ljbGVzIG9uIHBhcnRpdGlvbmVkIHJlbHMg dGhhdAorICogY2FuJ3QgY29udHJpYnV0ZSB1c2VmdWwgcHJ1bmluZyBpbmZvcm1hdGlvbiBmb3Ig dGhlIHByb2JsZW0gYXQgaGFuZC4KKyAqIChJdCBpcyBwb3NzaWJsZSBmb3IgJ3BhcmVudHJlbCcg dG8gYmUgYSBjaGlsZCBwYXJ0aXRpb25lZCB0YWJsZSwgYW5kIGl0CisgKiBpcyBhbHNvIHBvc3Np YmxlIGZvciBzY2FuLWxldmVsIHJlbGF0aW9ucyB0byBiZSBjaGlsZCBwYXJ0aXRpb25lZCB0YWJs ZXMKKyAqIHJhdGhlciB0aGFuIGxlYWYgcGFydGl0aW9ucy4gIEhlbmNlIHdlIG11c3QgY29uc3Ry dWN0IHRoaXMgcmVsYXRpb24gc2V0CisgKiB3aXRoIHJlZmVyZW5jZSB0byB0aGUgcGFydGljdWxh ciBhcHBlbmQgcGF0aCB3ZSdyZSBkZWFsaW5nIHdpdGgsIHJhdGhlcgorICogdGhhbiBsb29raW5n IGF0IHRoZSBmdWxsIHBhcnRpdGlvbmluZyBzdHJ1Y3R1cmUgcmVwcmVzZW50ZWQgaW4gdGhlCisg KiBSZWxPcHRJbmZvcy4pCisgKi8KK3N0YXRpYyBMaXN0ICoKK2FkZF9wYXJ0X3JlbGlkcyhMaXN0 ICphbGxwYXJ0cmVsaWRzLCBCaXRtYXBzZXQgKnBhcnRyZWxpZHMpCit7CisJSW5kZXgJCXRhcmdl dHBhcnQ7CisJTGlzdENlbGwgICAqbGM7CisKKwkvKiBXZSBjYW4gZWFzaWx5IGdldCB0aGUgbG93 ZXN0IHNldCBiaXQgdGhpcyB3YXk6ICovCisJdGFyZ2V0cGFydCA9IGJtc19uZXh0X21lbWJlcihw YXJ0cmVsaWRzLCAtMSk7CisJQXNzZXJ0KHRhcmdldHBhcnQgPiAwKTsKKworCS8qIExvb2sgZm9y IGEgbWF0Y2hpbmcgdG9wbW9zdCBwYXJlbnQgKi8KKwlmb3JlYWNoKGxjLCBhbGxwYXJ0cmVsaWRz KQorCXsKKwkJQml0bWFwc2V0ICAqY3VycnBhcnRyZWxpZHMgPSAoQml0bWFwc2V0ICopIGxmaXJz dChsYyk7CisJCUluZGV4CQljdXJydGFyZ2V0ID0gYm1zX25leHRfbWVtYmVyKGN1cnJwYXJ0cmVs aWRzLCAtMSk7CisKKwkJaWYgKHRhcmdldHBhcnQgPT0gY3VycnRhcmdldCkKKwkJeworCQkJLyog Rm91bmQgYSBtYXRjaCwgc28gYWRkIGFueSBuZXcgUlQgaW5kZXhlcyB0byB0aGlzIGhpZXJhcmNo eSAqLworCQkJY3VycnBhcnRyZWxpZHMgPSBibXNfYWRkX21lbWJlcnMoY3VycnBhcnRyZWxpZHMs IHBhcnRyZWxpZHMpOworCQkJbGZpcnN0KGxjKSA9IGN1cnJwYXJ0cmVsaWRzOworCQkJcmV0dXJu IGFsbHBhcnRyZWxpZHM7CisJCX0KKwl9CisJLyogTm8gbWF0Y2gsIHNvIGFkZCB0aGUgbmV3IHBh cnRpdGlvbiBoaWVyYXJjaHkgdG8gdGhlIGxpc3QgKi8KKwlyZXR1cm4gbGFwcGVuZChhbGxwYXJ0 cmVsaWRzLCBwYXJ0cmVsaWRzKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRpdGlv bmluZy9wYXJ0cHJ1bmUuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwpp bmRleCA1MTAxNDVlM2MwLi4zNTU3ZTA3MDgyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0 aXRpb25pbmcvcGFydHBydW5lLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRw cnVuZS5jCkBAIC0xMzgsNyArMTM4LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgUHJ1bmVTdGVwUmVzdWx0 CiB9IFBydW5lU3RlcFJlc3VsdDsKIAogCi1zdGF0aWMgTGlzdCAqYWRkX3BhcnRfcmVsaWRzKExp c3QgKmFsbHBhcnRyZWxpZHMsIEJpdG1hcHNldCAqcGFydHJlbGlkcyk7CiBzdGF0aWMgTGlzdCAq bWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJ CQkJICAgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQkJCQkJCQkJCSAgIExpc3QgKnBydW5lcXVh bCwKQEAgLTIyMSwzMyArMjIwLDMyIEBAIHN0YXRpYyB2b2lkIHBhcnRrZXlfZGF0dW1fZnJvbV9l eHByKFBhcnRpdGlvblBydW5lQ29udGV4dCAqY29udGV4dCwKICAqIG9mIHNjYW4gcGF0aHMgZm9y IGl0cyBjaGlsZCByZWxzLgogICogJ3BydW5lcXVhbCcgaXMgYSBsaXN0IG9mIHBvdGVudGlhbCBw cnVuaW5nIHF1YWxzIChpLmUuLCByZXN0cmljdGlvbgogICogY2xhdXNlcyB0aGF0IGFyZSBhcHBs aWNhYmxlIHRvIHRoZSBhcHBlbmRyZWwpLgorICogJ2FsbHBhcnRyZWxpZHMnIGNvbnRhaW5zIEJp dG1hcHNldHMgb2YgUlQgaW5kZXhlcyBvZiBwYXJ0aXRpb25lZCBwYXJlbnRzCisgKiB3aG9zZSBw YXJ0aXRpb25zJyBQYXRocyBhcmUgaW4gJ3N1YnBhdGhzJzsgdGhlcmUncyBvbmUgQml0bWFwc2V0 IGZvciBldmVyeQorICogcGFydGl0aW9uIHRyZWUgaW52b2x2ZWQuCiAgKi8KIGludAogbWFrZV9w YXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRy ZWwsCiAJCQkJCQkgTGlzdCAqc3VicGF0aHMsCi0JCQkJCQkgTGlzdCAqcHJ1bmVxdWFsKQorCQkJ CQkJIExpc3QgKnBydW5lcXVhbCwKKwkJCQkJCSBMaXN0ICphbGxwYXJ0cmVsaWRzKQogewogCVBh cnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvOwogCUJpdG1hcHNldCAgKmFsbG1hdGNoZWRzdWJw bGFucyA9IE5VTEw7Ci0JTGlzdAkgICAqYWxscGFydHJlbGlkczsKIAlMaXN0CSAgICpwcnVuZXJl bGluZm9zOwogCWludAkJICAgKnJlbGlkX3N1YnBsYW5fbWFwOwogCUxpc3RDZWxsICAgKmxjOwog CWludAkJCWk7CiAKKwlBc3NlcnQobGlzdF9sZW5ndGgoYWxscGFydHJlbGlkcykgPiAwKTsKKwog CS8qCi0JICogU2NhbiB0aGUgc3VicGF0aHMgdG8gc2VlIHdoaWNoIG9uZXMgYXJlIHNjYW5zIG9m IHBhcnRpdGlvbiBjaGlsZAotCSAqIHJlbGF0aW9ucywgYW5kIGlkZW50aWZ5IHRoZWlyIHBhcmVu dCBwYXJ0aXRpb25lZCByZWxzLiAgKE5vdGU6IHdlIG11c3QKLQkgKiByZXN0cmljdCB0aGUgcGFy ZW50IHBhcnRpdGlvbmVkIHJlbHMgdG8gYmUgcGFyZW50cmVsIG9yIGNoaWxkcmVuIG9mCi0JICog cGFyZW50cmVsLCBvdGhlcndpc2Ugd2UgY291bGRuJ3QgdHJhbnNsYXRlIHBydW5lcXVhbCB0byBt YXRjaC4pCi0JICoKLQkgKiBBbHNvIGNvbnN0cnVjdCBhIHRlbXBvcmFyeSBhcnJheSB0byBtYXAg ZnJvbSBwYXJ0aXRpb24tY2hpbGQtcmVsYXRpb24KLQkgKiByZWxpZCB0byB0aGUgaW5kZXggaW4g J3N1YnBhdGhzJyBvZiB0aGUgc2NhbiBwbGFuIGZvciB0aGF0IHBhcnRpdGlvbi4KKwkgKiBDb25z dHJ1Y3QgYSB0ZW1wb3JhcnkgYXJyYXkgdG8gbWFwIGZyb20gcGFydGl0aW9uLWNoaWxkLXJlbGF0 aW9uIHJlbGlkCisJICogdG8gdGhlIGluZGV4IGluICdzdWJwYXRocycgb2YgdGhlIHNjYW4gcGxh biBmb3IgdGhhdCBwYXJ0aXRpb24uCiAJICogKFVzZSBvZiAic3VicGxhbiIgcmF0aGVyIHRoYW4g InN1YnBhdGgiIGlzIGEgYml0IG9mIGEgbWlzbm9tZXIsIGJ1dAogCSAqIHdlJ2xsIGxldCBpdCBz dGFuZC4pICBGb3IgY29udmVuaWVuY2UsIHdlIHVzZSAxLWJhc2VkIGluZGV4ZXMgaGVyZSwgc28K IAkgKiB0aGF0IHplcm8gY2FuIHJlcHJlc2VudCBhbiB1bi1maWxsZWQgYXJyYXkgZW50cnkuCiAJ ICovCi0JYWxscGFydHJlbGlkcyA9IE5JTDsKIAlyZWxpZF9zdWJwbGFuX21hcCA9IHBhbGxvYzAo c2l6ZW9mKGludCkgKiByb290LT5zaW1wbGVfcmVsX2FycmF5X3NpemUpOwogCiAJaSA9IDE7CkBA IC0yNTYsNTAgKzI1NCw5IEBAIG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhQbGFubmVySW5mbyAq cm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQlQYXRoCSAgICpwYXRoID0gKFBhdGggKikg bGZpcnN0KGxjKTsKIAkJUmVsT3B0SW5mbyAqcGF0aHJlbCA9IHBhdGgtPnBhcmVudDsKIAotCQkv KiBXZSBkb24ndCBjb25zaWRlciBwYXJ0aXRpb25lZCBqb2lucyBoZXJlICovCi0JCWlmIChwYXRo cmVsLT5yZWxvcHRraW5kID09IFJFTE9QVF9PVEhFUl9NRU1CRVJfUkVMKQotCQl7Ci0JCQlSZWxP cHRJbmZvICpwcmVsID0gcGF0aHJlbDsKLQkJCUJpdG1hcHNldCAgKnBhcnRyZWxpZHMgPSBOVUxM OwotCi0JCQkvKgotCQkJICogVHJhdmVyc2UgdXAgdG8gdGhlIHBhdGhyZWwncyB0b3Btb3N0IHBh cnRpdGlvbmVkIHBhcmVudCwKLQkJCSAqIGNvbGxlY3RpbmcgcGFyZW50IHJlbGlkcyBhcyB3ZSBn bzsgYnV0IHN0b3AgaWYgd2UgcmVhY2gKLQkJCSAqIHBhcmVudHJlbC4gIChOb3JtYWxseSwgYSBw YXRocmVsJ3MgdG9wbW9zdCBwYXJ0aXRpb25lZCBwYXJlbnQKLQkJCSAqIGlzIGVpdGhlciBwYXJl bnRyZWwgb3IgYSBVTklPTiBBTEwgYXBwZW5kcmVsIGNoaWxkIG9mCi0JCQkgKiBwYXJlbnRyZWwu ICBCdXQgd2hlbiBoYW5kbGluZyBwYXJ0aXRpb253aXNlIGpvaW5zIG9mCi0JCQkgKiBtdWx0aS1s ZXZlbCBwYXJ0aXRpb25pbmcgdHJlZXMsIHdlIGNhbiBzZWUgYW4gYXBwZW5kIHBhdGggd2hvc2UK LQkJCSAqIHBhcmVudHJlbCBpcyBhbiBpbnRlcm1lZGlhdGUgcGFydGl0aW9uZWQgdGFibGUuKQot CQkJICovCi0JCQlkbwotCQkJewotCQkJCUFwcGVuZFJlbEluZm8gKmFwcGluZm87Ci0KLQkJCQlB c3NlcnQocHJlbC0+cmVsaWQgPCByb290LT5zaW1wbGVfcmVsX2FycmF5X3NpemUpOwotCQkJCWFw cGluZm8gPSByb290LT5hcHBlbmRfcmVsX2FycmF5W3ByZWwtPnJlbGlkXTsKLQkJCQlwcmVsID0g ZmluZF9iYXNlX3JlbChyb290LCBhcHBpbmZvLT5wYXJlbnRfcmVsaWQpOwotCQkJCWlmICghSVNf UEFSVElUSU9ORURfUkVMKHByZWwpKQotCQkJCQlicmVhazsJCS8qIHJlYWNoZWQgYSBub24tcGFy dGl0aW9uZWQgcGFyZW50ICovCi0JCQkJLyogYWNjZXB0IHRoaXMgbGV2ZWwgYXMgYW4gaW50ZXJl c3RpbmcgcGFyZW50ICovCi0JCQkJcGFydHJlbGlkcyA9IGJtc19hZGRfbWVtYmVyKHBhcnRyZWxp ZHMsIHByZWwtPnJlbGlkKTsKLQkJCQlpZiAocHJlbCA9PSBwYXJlbnRyZWwpCi0JCQkJCWJyZWFr OwkJLyogZG9uJ3QgdHJhdmVyc2UgYWJvdmUgcGFyZW50cmVsICovCi0JCQl9IHdoaWxlIChwcmVs LT5yZWxvcHRraW5kID09IFJFTE9QVF9PVEhFUl9NRU1CRVJfUkVMKTsKLQotCQkJaWYgKHBhcnRy ZWxpZHMpCi0JCQl7Ci0JCQkJLyoKLQkJCQkgKiBGb3VuZCBzb21lIHJlbGV2YW50IHBhcmVudCBw YXJ0aXRpb25zLCB3aGljaCBtYXkgb3IgbWF5IG5vdAotCQkJCSAqIG92ZXJsYXAgd2l0aCBwYXJ0 aXRpb24gdHJlZXMgd2UgYWxyZWFkeSBmb3VuZC4gIEFkZCBuZXcKLQkJCQkgKiBpbmZvcm1hdGlv biB0byB0aGUgYWxscGFydHJlbGlkcyBsaXN0LgotCQkJCSAqLwotCQkJCWFsbHBhcnRyZWxpZHMg PSBhZGRfcGFydF9yZWxpZHMoYWxscGFydHJlbGlkcywgcGFydHJlbGlkcyk7Ci0JCQkJLyogQWxz byByZWNvcmQgdGhlIHN1YnBsYW4gaW4gcmVsaWRfc3VicGxhbl9tYXBbXSAqLwotCQkJCS8qIE5v IGR1cGxpY2F0ZXMgcGxlYXNlICovCi0JCQkJQXNzZXJ0KHJlbGlkX3N1YnBsYW5fbWFwW3BhdGhy ZWwtPnJlbGlkXSA9PSAwKTsKLQkJCQlyZWxpZF9zdWJwbGFuX21hcFtwYXRocmVsLT5yZWxpZF0g PSBpOwotCQkJfQotCQl9CisJCS8qIE5vIGR1cGxpY2F0ZXMgcGxlYXNlICovCisJCUFzc2VydChy ZWxpZF9zdWJwbGFuX21hcFtwYXRocmVsLT5yZWxpZF0gPT0gMCk7CisJCXJlbGlkX3N1YnBsYW5f bWFwW3BhdGhyZWwtPnJlbGlkXSA9IGk7CiAJCWkrKzsKIAl9CiAKQEAgLTM2OCw2MyArMzI1LDYg QEAgbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZv ICpwYXJlbnRyZWwsCiAJcmV0dXJuIGxpc3RfbGVuZ3RoKHJvb3QtPnBhcnRQcnVuZUluZm9zKSAt IDE7CiB9CiAKLS8qCi0gKiBhZGRfcGFydF9yZWxpZHMKLSAqCQlBZGQgbmV3IGluZm8gdG8gYSBs aXN0IG9mIEJpdG1hcHNldHMgb2YgcGFydGl0aW9uZWQgcmVsaWRzLgotICoKLSAqIFdpdGhpbiAn YWxscGFydHJlbGlkcycsIHRoZXJlIGlzIG9uZSBCaXRtYXBzZXQgZm9yIGVhY2ggdG9wbW9zdCBw YXJlbnQKLSAqIHBhcnRpdGlvbmVkIHJlbC4gIEVhY2ggQml0bWFwc2V0IGNvbnRhaW5zIHRoZSBS VCBpbmRleGVzIG9mIHRoZSB0b3Btb3N0Ci0gKiBwYXJlbnQgYXMgd2VsbCBhcyBpdHMgcmVsZXZh bnQgbm9uLWxlYWYgY2hpbGQgcGFydGl0aW9ucy4gIFNpbmNlIChieQotICogY29uc3RydWN0aW9u IG9mIHRoZSByYW5nZXRhYmxlIGxpc3QpIHBhcmVudCBwYXJ0aXRpb25zIG11c3QgaGF2ZSBsb3dl cgotICogUlQgaW5kZXhlcyB0aGFuIHRoZWlyIGNoaWxkcmVuLCB3ZSBjYW4gZGlzdGluZ3Vpc2gg dGhlIHRvcG1vc3QgcGFyZW50Ci0gKiBhcyBiZWluZyB0aGUgbG93ZXN0IHNldCBiaXQgaW4gdGhl IEJpdG1hcHNldC4KLSAqCi0gKiAncGFydHJlbGlkcycgY29udGFpbnMgdGhlIFJUIGluZGV4ZXMg b2YgYSBwYXJlbnQgcGFydGl0aW9uZWQgcmVsLCBhbmQKLSAqIHBvc3NpYmx5IHNvbWUgbm9uLWxl YWYgY2hpbGRyZW4sIHRoYXQgYXJlIG5ld2x5IGlkZW50aWZpZWQgYXMgcGFyZW50cyBvZgotICog c29tZSBzdWJwYXRoIHJlbCBwYXNzZWQgdG8gbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKCkuICBU aGVzZSBhcmUgYWRkZWQKLSAqIHRvIGFuIGFwcHJvcHJpYXRlIG1lbWJlciBvZiAnYWxscGFydHJl bGlkcycuCi0gKgotICogTm90ZSB0aGF0IHRoZSBsaXN0IGNvbnRhaW5zIG9ubHkgUlQgaW5kZXhl cyBvZiBwYXJ0aXRpb25lZCB0YWJsZXMgdGhhdAotICogYXJlIHBhcmVudHMgb2Ygc29tZSBzY2Fu LWxldmVsIHJlbGF0aW9uIGFwcGVhcmluZyBpbiB0aGUgJ3N1YnBhdGhzJyB0aGF0Ci0gKiBtYWtl X3BhcnRpdGlvbl9wcnVuZWluZm8oKSBpcyBkZWFsaW5nIHdpdGguICBBbHNvLCAidG9wbW9zdCIg cGFyZW50cyBhcmUKLSAqIG5vdCBhbGxvd2VkIHRvIGJlIGhpZ2hlciB0aGFuIHRoZSAncGFyZW50 cmVsJyBhc3NvY2lhdGVkIHdpdGggdGhlIGFwcGVuZAotICogcGF0aC4gIEluIHRoaXMgd2F5LCB3 ZSBhdm9pZCBleHBlbmRpbmcgY3ljbGVzIG9uIHBhcnRpdGlvbmVkIHJlbHMgdGhhdAotICogY2Fu J3QgY29udHJpYnV0ZSB1c2VmdWwgcHJ1bmluZyBpbmZvcm1hdGlvbiBmb3IgdGhlIHByb2JsZW0g YXQgaGFuZC4KLSAqIChJdCBpcyBwb3NzaWJsZSBmb3IgJ3BhcmVudHJlbCcgdG8gYmUgYSBjaGls ZCBwYXJ0aXRpb25lZCB0YWJsZSwgYW5kIGl0Ci0gKiBpcyBhbHNvIHBvc3NpYmxlIGZvciBzY2Fu LWxldmVsIHJlbGF0aW9ucyB0byBiZSBjaGlsZCBwYXJ0aXRpb25lZCB0YWJsZXMKLSAqIHJhdGhl ciB0aGFuIGxlYWYgcGFydGl0aW9ucy4gIEhlbmNlIHdlIG11c3QgY29uc3RydWN0IHRoaXMgcmVs YXRpb24gc2V0Ci0gKiB3aXRoIHJlZmVyZW5jZSB0byB0aGUgcGFydGljdWxhciBhcHBlbmQgcGF0 aCB3ZSdyZSBkZWFsaW5nIHdpdGgsIHJhdGhlcgotICogdGhhbiBsb29raW5nIGF0IHRoZSBmdWxs IHBhcnRpdGlvbmluZyBzdHJ1Y3R1cmUgcmVwcmVzZW50ZWQgaW4gdGhlCi0gKiBSZWxPcHRJbmZv cy4pCi0gKi8KLXN0YXRpYyBMaXN0ICoKLWFkZF9wYXJ0X3JlbGlkcyhMaXN0ICphbGxwYXJ0cmVs aWRzLCBCaXRtYXBzZXQgKnBhcnRyZWxpZHMpCi17Ci0JSW5kZXgJCXRhcmdldHBhcnQ7Ci0JTGlz dENlbGwgICAqbGM7Ci0KLQkvKiBXZSBjYW4gZWFzaWx5IGdldCB0aGUgbG93ZXN0IHNldCBiaXQg dGhpcyB3YXk6ICovCi0JdGFyZ2V0cGFydCA9IGJtc19uZXh0X21lbWJlcihwYXJ0cmVsaWRzLCAt MSk7Ci0JQXNzZXJ0KHRhcmdldHBhcnQgPiAwKTsKLQotCS8qIExvb2sgZm9yIGEgbWF0Y2hpbmcg dG9wbW9zdCBwYXJlbnQgKi8KLQlmb3JlYWNoKGxjLCBhbGxwYXJ0cmVsaWRzKQotCXsKLQkJQml0 bWFwc2V0ICAqY3VycnBhcnRyZWxpZHMgPSAoQml0bWFwc2V0ICopIGxmaXJzdChsYyk7Ci0JCUlu ZGV4CQljdXJydGFyZ2V0ID0gYm1zX25leHRfbWVtYmVyKGN1cnJwYXJ0cmVsaWRzLCAtMSk7Ci0K LQkJaWYgKHRhcmdldHBhcnQgPT0gY3VycnRhcmdldCkKLQkJewotCQkJLyogRm91bmQgYSBtYXRj aCwgc28gYWRkIGFueSBuZXcgUlQgaW5kZXhlcyB0byB0aGlzIGhpZXJhcmNoeSAqLwotCQkJY3Vy cnBhcnRyZWxpZHMgPSBibXNfYWRkX21lbWJlcnMoY3VycnBhcnRyZWxpZHMsIHBhcnRyZWxpZHMp OwotCQkJbGZpcnN0KGxjKSA9IGN1cnJwYXJ0cmVsaWRzOwotCQkJcmV0dXJuIGFsbHBhcnRyZWxp ZHM7Ci0JCX0KLQl9Ci0JLyogTm8gbWF0Y2gsIHNvIGFkZCB0aGUgbmV3IHBhcnRpdGlvbiBoaWVy YXJjaHkgdG8gdGhlIGxpc3QgKi8KLQlyZXR1cm4gbGFwcGVuZChhbGxwYXJ0cmVsaWRzLCBwYXJ0 cmVsaWRzKTsKLX0KLQogLyoKICAqIG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvCiAgKgkJ QnVpbGQgYSBMaXN0IG9mIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvcywgb25lIGZvciBlYWNoIGlu dGVyZXN0aW5nCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3Ny Yy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCmluZGV4IDY1OWJkMDVjMGMuLmEwYmIxNmNmZjQg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNs dWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBAIC0yNzAsNiArMjcwLDEzIEBAIHR5cGVkZWYgc3RydWN0 IEFwcGVuZAogCUxpc3QJICAgKmFwcGVuZHBsYW5zOwogCWludAkJCW5hc3luY3BsYW5zOwkvKiAj IG9mIGFzeW5jaHJvbm91cyBwbGFucyAqLwogCisJLyoKKwkgKiBSVElzIG9mIGFsbCBwYXJ0aXRp b25lZCB0YWJsZXMgd2hvc2UgY2hpbGRyZW4gYXJlIHNjYW5uZWQgYnkKKwkgKiBhcHBlbmRwbGFu cy4gVGhlIGxpc3QgY29udGFpbnMgYSBiaXRtYXBzZXQgZm9yIGV2ZXJ5IHBhcnRpdGlvbiB0cmVl CisJICogY292ZXJlZCBieSB0aGlzIEFwcGVuZC4KKwkgKi8KKwlMaXN0CSAgICphbGxwYXJ0cmVs aWRzOworCiAJLyoKIAkgKiBBbGwgJ2FwcGVuZHBsYW5zJyBwcmVjZWRpbmcgdGhpcyBpbmRleCBh cmUgbm9uLXBhcnRpYWwgcGxhbnMuIEFsbAogCSAqICdhcHBlbmRwbGFucycgZnJvbSB0aGlzIGlu ZGV4IG9ud2FyZHMgYXJlIHBhcnRpYWwgcGxhbnMuCkBAIC0yOTQsNiArMzAxLDEzIEBAIHR5cGVk ZWYgc3RydWN0IE1lcmdlQXBwZW5kCiAKIAlMaXN0CSAgICptZXJnZXBsYW5zOwogCisJLyoKKwkg KiBSVElzIG9mIGFsbCBwYXJ0aXRpb25lZCB0YWJsZXMgd2hvc2UgY2hpbGRyZW4gYXJlIHNjYW5u ZWQgYnkKKwkgKiBtZXJnZXBsYW5zLiBUaGUgbGlzdCBjb250YWlucyBhIGJpdG1hcHNldCBmb3Ig ZXZlcnkgcGFydGl0aW9uIHRyZWUKKwkgKiBjb3ZlcmVkIGJ5IHRoaXMgTWVyZ2VBcHBlbmQuCisJ ICovCisJTGlzdAkgICAqYWxscGFydHJlbGlkczsKKwogCS8qIHRoZXNlIGZpZWxkcyBhcmUganVz dCBsaWtlIHRoZSBzb3J0LWtleSBpbmZvIGluIHN0cnVjdCBTb3J0OiAqLwogCiAJLyogbnVtYmVy IG9mIHNvcnQta2V5IGNvbHVtbnMgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXpl ci9hcHBlbmRpbmZvLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvYXBwZW5kaW5mby5oCmluZGV4 IGEwNWY5MWY3N2QuLjE2MjFhNzMxOWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXpl ci9hcHBlbmRpbmZvLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2FwcGVuZGluZm8uaApA QCAtNDYsNSArNDYsOCBAQCBleHRlcm4gdm9pZCBhZGRfcm93X2lkZW50aXR5X2NvbHVtbnMoUGxh bm5lckluZm8gKnJvb3QsIEluZGV4IHJ0aW5kZXgsCiAJCQkJCQkJCQkgUmFuZ2VUYmxFbnRyeSAq dGFyZ2V0X3J0ZSwKIAkJCQkJCQkJCSBSZWxhdGlvbiB0YXJnZXRfcmVsYXRpb24pOwogZXh0ZXJu IHZvaWQgZGlzdHJpYnV0ZV9yb3dfaWRlbnRpdHlfdmFycyhQbGFubmVySW5mbyAqcm9vdCk7Citl eHRlcm4gTGlzdCAqYWRkX2FwcGVuZF9zdWJwYXRoX3BhcnRyZWxpZHMoUGxhbm5lckluZm8gKnJv b3QsIFBhdGggKnN1YnBhdGgsCisJCQkJCQkJICBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCisJCQkJ CQkJICBMaXN0ICphbGxwYXJ0cmVsaWRzKTsKIAogI2VuZGlmCQkJCQkJCS8qIEFQUEVORElORk9f SCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oIGIv c3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oCmluZGV4IGMwZDY4ODlkNDcuLjJk OTA3ZDMxZDQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUu aAorKysgYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmgKQEAgLTczLDcgKzcz LDggQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVDb250ZXh0CiBleHRlcm4gaW50IG1h a2VfcGFydGl0aW9uX3BydW5laW5mbyhzdHJ1Y3QgUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJ CQlzdHJ1Y3QgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQkJCQkJCQkJTGlzdCAqc3VicGF0aHMs Ci0JCQkJCQkJCQlMaXN0ICpwcnVuZXF1YWwpOworCQkJCQkJCQkJTGlzdCAqcHJ1bmVxdWFsLAor CQkJCQkJCQkJTGlzdCAqYWxscGFydHJlbGlkcyk7CiBleHRlcm4gQml0bWFwc2V0ICpwcnVuZV9h cHBlbmRfcmVsX3BhcnRpdGlvbnMoc3RydWN0IFJlbE9wdEluZm8gKnJlbCk7CiBleHRlcm4gQml0 bWFwc2V0ICpnZXRfbWF0Y2hpbmdfcGFydGl0aW9ucyhQYXJ0aXRpb25QcnVuZUNvbnRleHQgKmNv bnRleHQsCiAJCQkJCQkJCQkJICBMaXN0ICpwcnVuaW5nX3N0ZXBzKTsKLS0gCjIuMzUuMwoK --000000000000ed32f505f7e22b0a Content-Type: application/octet-stream; name="v38-0003-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Disposition: attachment; filename="v38-0003-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lfqwb3gt0 RnJvbSA3ODU5YzNlZTEwZGJlODE2MDYyNDE0NzhlZjA4NWFlYjdkNDVhOTVkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogTW9uLCAxMyBNYXIgMjAyMyAxNTo1OTozOCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjM4IDMv M10gVHJhY2sgb3BlbmVkIHJhbmdlIHRhYmxlIHJlbGF0aW9ucyBpbiBhIExpc3QgaW4KIEVTdGF0 ZQoKVGhpcyBtYWtlcyBFeGVjQ2xvc2VSYW5nZVRhYmxlUmVsYXRpb25zIGZhc3RlciB3aGVuIHRo ZXJlIGFyZSBtYW55CnJlbGF0aW9ucyBpbiB0aGUgcmFuZ2UgdGFibGUgYnV0IG9ubHkgYSBmZXcg YXJlIG9wZW5lZCBkdXJpbmcKZXhlY3V0aW9uLCBzdWNoIGFzIHdoZW4gcnVuLXRpbWUgcHJ1bmlu ZyBraWNrcyBpbiBvbiBhbiBBcHBlbmQKY29udGFpbmluZyAxMDAwcyBvZiBwYXJ0aXRpb24gc3Vi cGxhbnMuCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgfCA5ICsrKysrLS0t LQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgfCAyICsrCiBzcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaCAgICB8IDIgKysKIDMgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25z KCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDAzNjZiZTlm ZDYuLjk0ZjgzMjRjZmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWlu LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtMTYzMCwxMiArMTYz MCwxMyBAQCBFeGVjQ2xvc2VSZXN1bHRSZWxhdGlvbnMoRVN0YXRlICplc3RhdGUpCiB2b2lkCiBF eGVjQ2xvc2VSYW5nZVRhYmxlUmVsYXRpb25zKEVTdGF0ZSAqZXN0YXRlKQogewotCWludAkJCWk7 CisJTGlzdENlbGwgKmxjOwogCi0JZm9yIChpID0gMDsgaSA8IGVzdGF0ZS0+ZXNfcmFuZ2VfdGFi bGVfc2l6ZTsgaSsrKQorCWZvcmVhY2gobGMsIGVzdGF0ZS0+ZXNfb3BlbmVkX3JlbGF0aW9ucykK IAl7Ci0JCWlmIChlc3RhdGUtPmVzX3JlbGF0aW9uc1tpXSkKLQkJCXRhYmxlX2Nsb3NlKGVzdGF0 ZS0+ZXNfcmVsYXRpb25zW2ldLCBOb0xvY2spOworCQlSZWxhdGlvbiByZWwgPSBsZmlyc3QobGMp OworCisJCXRhYmxlX2Nsb3NlKHJlbCwgTm9Mb2NrKTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1V0aWxzLmMKaW5kZXggYTQ4NWU3ZGZjNS4uZjcwNTMwNzJkOSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1V0aWxzLmMKQEAgLTgyOSw2ICs4MjksOCBAQCBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKEVT dGF0ZSAqZXN0YXRlLCBJbmRleCBydGkpCiAJCX0KIAogCQllc3RhdGUtPmVzX3JlbGF0aW9uc1ty dGkgLSAxXSA9IHJlbDsKKwkJZXN0YXRlLT5lc19vcGVuZWRfcmVsYXRpb25zID0gbGFwcGVuZChl c3RhdGUtPmVzX29wZW5lZF9yZWxhdGlvbnMsCisJCQkJCQkJCQkJCSAgcmVsKTsKIAl9CiAKIAly ZXR1cm4gcmVsOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9z cmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCBkZmE3Mjg0OGM3Li45ODRmZDJlNDIz IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5j bHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNjE5LDYgKzYxOSw4IEBAIHR5cGVkZWYgc3RydWN0 IEVTdGF0ZQogCUluZGV4CQllc19yYW5nZV90YWJsZV9zaXplOwkvKiBzaXplIG9mIHRoZSByYW5n ZSB0YWJsZSBhcnJheXMgKi8KIAlSZWxhdGlvbiAgICplc19yZWxhdGlvbnM7CS8qIEFycmF5IG9m IHBlci1yYW5nZS10YWJsZS1lbnRyeSBSZWxhdGlvbgogCQkJCQkJCQkgKiBwb2ludGVycywgb3Ig TlVMTCBpZiBub3QgeWV0IG9wZW5lZCAqLworCUxpc3QJICAgKmVzX29wZW5lZF9yZWxhdGlvbnM7 IC8qIExpc3Qgb2Ygbm9uLU5VTEwgZW50cmllcyBpbgorCQkJCQkJCQkJICAqIGVzX3JlbGF0aW9u cyBpbiBubyBzcGVjaWZpYyBvcmRlciAqLwogCXN0cnVjdCBFeGVjUm93TWFyayAqKmVzX3Jvd21h cmtzOwkvKiBBcnJheSBvZiBwZXItcmFuZ2UtdGFibGUtZW50cnkKIAkJCQkJCQkJCQkgKiBFeGVj Um93TWFya3MsIG9yIE5VTEwgaWYgbm9uZSAqLwogCUxpc3QJICAgKmVzX3J0ZXBlcm1pbmZvczsJ LyogTGlzdCBvZiBSVEVQZXJtaXNzaW9uSW5mbyAqLwotLSAKMi4zNS4zCgo= --000000000000ed32f505f7e22b0a Content-Type: application/octet-stream; name="v38-0002-Move-AcquireExecutorLocks-s-responsibility-into-.patch" Content-Disposition: attachment; filename="v38-0002-Move-AcquireExecutorLocks-s-responsibility-into-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lfqwb3gy1 RnJvbSAzNDc2NzQzZWYyMDdiYTIzZjBjMzY2YWJhNTA5YzQzOWE0Y2RmNTU5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogRnJpLCAyMCBKYW4gMjAyMyAxNjo1MjozMSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjM4IDIv M10gTW92ZSBBY3F1aXJlRXhlY3V0b3JMb2NrcygpJ3MgcmVzcG9uc2liaWxpdHkgaW50byB0aGUK IGV4ZWN1dG9yCgpUaGlzIGNvbW1pdCBpbnRyb2R1Y2VzIGEgbmV3IGV4ZWN1dG9yIGZsYWcgRVhF Q19GTEFHX0dFVF9MT0NLUyB0aGF0CnNob3VsZCBiZSBwYXNzZWQgaW4gZWZsYWdzIHRvIEV4ZWN1 dG9yU3RhcnQoKSBpZiB0aGUgUGxhbm5lZFN0bXQKY29tZXMgZnJvbSBhIENhY2hlZFBsYW4uICBX aGVuIHNldCwgdGhlIGV4ZWN1dG9yIHdpbGwgdGFrZSBsb2NrcwpvbiBhbnkgcmVsYXRpb25zIHJl ZmVyZW5jZWQgaW4gdGhlIHBsYW4gbm9kZXMgdGhhdCBuZWVkIHRvIGJlCmluaXRpYWxpemVkIGZv ciBleGVjdXRpb24uICBUaGF0IGV4Y2x1ZGVzIGFueSBwYXJ0aXRpb25zIHRoYXQgY2FuCmJlIHBy dW5lZCBkdXJpbmcgdGhlIGV4ZWN1dG9yIGluaXRpYWxpemF0aW9uIHBoYXNlLCB0aGF0IGlzLCBi YXNlZApvbiB0aGUgdmFsdWVzIG9mIG9ubHkgdGhlIGV4dGVybmFsIChQQVJBTV9FWFRFUk4pIHBh cmFtZXRlcnMuClJlbGF0aW9ucyB0aGF0IGFyZSBub3QgZXhwbGljaXRseSBtZW50aW9uZWQgaW4g dGhlIHBsYW4gdHJlZSwgc3VjaAphcyB2aWV3cyBhbmQgbm9uLWxlYWYgcGFydGl0aW9uIHBhcmVu dHMgd2hvc2UgY2hpbGRyZW4gYXJlIG1lbnRpb25lZAppbiBBcHBlbmQvTWVyZ2VBcHBlbmQgbm9k ZXMsIGFyZSBsb2NrZWQgc2VwYXJhdGVseS4gIEFmdGVyIHRha2luZyBlYWNoCmxvY2ssIHRoZSBl eGVjdXRvciBjYWxscyBDYWNoZWRQbGFuU3RpbGxWYWxpZCgpIHRvIGNoZWNrIGlmCkNhY2hlZFBs YW4uaXNfdmFsaWQgaGFzIGJlZW4gcmVzZXQgYnkgUGxhbkNhY2hlUmVsQ2FsbGJhY2soKSBkdWUg dG8KY29uY3VycmVudCBtb2RpZmljYXRpb24gb2YgcmVsYXRpb25zIHJlZmVyZW5jZWQgaW4gdGhl IHBsYW4uICBJZiBpdAppcyBmb3VuZCB0aGF0IHRoZSBDYWNoZWRQbGFuIGlzIGluZGVlZCBpbnZh bGlkLCB0aGUgcmVjdXJzaXZlCkV4ZWNJbml0Tm9kZSgpIHRyYXZlcnNhbCBpcyBhYm9ydGVkIGF0 IHRoYXQgcG9pbnQuICBUbyBhbGxvdyB0aGUKcHJvcGVyIGNsZWFudXAgb2Ygc3VjaCBhIHBhcnRp YWxseSBpbml0aWFsaXplZCBwbGFuc3RhdGUgdHJlZSwKRXhlY0VuZE5vZGUoKSBzdWJyb3V0aW5l cyBvZiB2YXJpb3VzIHBsYW4gbm9kZXMgaGF2ZSBiZWVuIGZpeGVkIHRvCmFjY291bnQgZm9yIHBv dGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgZmllbGRzLiAgSXQgaXMgdGhlIGNhbGxlcidzCihvZiBF eGVjdXRvclN0YXJ0KCkpIHJlc3BvbnNpYmlsaXR5IHRvIGNhbGwgRXhlY3V0b3JFbmQoKSBldmVu IG9uCmEgUXVlcnlEZXNjIGNvbnRhaW5pbmcgc3VjaCBhIHBhcnRpYWxseSBpbml0aWFsaXplZCBQ bGFuU3RhdGUgdHJlZS4KCkNhbGwgc2l0ZXMgdGhhdCB1c2UgcGxhbmNhY2hlIChHZXRDYWNoZWRQ bGFuKSB0byBnZXQgdGhlIHBsYW4gdHJlZXMKdG8gcGFzcyB0byB0aGUgZXhlY3V0b3IgZm9yIGV4 ZWN1dGlvbiBzaG91bGQgbm93IGJlIHByZXBhcmVkIHRvCmhhbmRsZSB0aGUgY2FzZSB0aGF0IHRo ZSBwbGFuIHRyZWUgbWF5IGJlIGZsYWdnZWQgYnkgdGhlIGV4ZWN1dG9yIGFzCnN0YWxlIGFzIGRl c2NyaWJlZCBhYm92ZS4gIFRvIHRoYXQgZW5kLCB0aGlzIGNvbW1pdCByZWZhY3RvcnMgdGhlCnJl bGV2YW50IGNvZGUgc2l0ZXMgdG8gbW92ZSB0aGUgRXhlY3V0b3JTdGFydCgpIGNhbGwgIGNsb3Nl ciB0byB0aGUKR2V0Q2FjaGVkUGxhbigpIGNhbGwgdG8gcmVkdWNlIHRoZSBmcmljdGlvbiBpbiB0 aGUgY2FzZXMgd2hlcmUKcmVwbGFubmluZyBpcyBuZWVkZWQgZHVlIHRvIGEgQ2FjaGVkUGxhbiBi ZWluZyBtYXJrZWQgc3RhbGUgaW4gdGhpcwptYW5uZXIuICBDYWxsZXJzIG11c3QgY2hlY2sgdGhh dCBRdWVyeURlc2MucGxhbl92YWxpZCBpcyB0cnVlIGJlZm9yZQpwYXNzaW5nIGl0IG9uIHRvIEV4 ZWN1dG9yUnVuKCkgZm9yIGV4ZWN1dGlvbi4KClBvcnRhbFN0YXJ0KCkgbm93IHBlcmZvcm1zIENy ZWF0ZVF1ZXJ5RGVzYygpIGFuZCBFeGVjdXRvclN0YXJ0KCkgZm9yCmFsbCBwb3J0YWwgc3RyYXRl Z2llcywgaW5jbHVkaW5nIHRob3NlIHBlcnRhaW5pbmcgdG8gbXVsdGlwbGUgcXVlcmllcy4KVGhl IFF1ZXJ5RGVzY3MgZm9yIHN0cmF0ZWdpZXMgaGFuZGxlZCBieSBQb3J0YWxSdW5NdWx0aSgpIGFy ZQpyZW1lbWJlcmVkIGluIHRoZSBQb3J0YWwgaW4gYSBuZXcgTGlzdCBmaWVsZCAncWRlc2NzJywg YWxsb2NhdGVkIGluIGEKbmV3IG1lbW9yeSBjb250ZXh0ICdxdWVyeUNvbnRleHQnLiAgVGhpcyBu ZXcgYXJyYW5nbWVudCBpcyB0byBtYWtlIGl0CmVhc2llciB0byBkaXNjYXJkIGFuZCByZWNyZWF0 ZSBhIFBvcnRhbCBpZiB0aGUgQ2FjaGVkUGxhbiBnb2VzIHN0YWxlCmR1cmluZyBzZXR1cC4KLS0t CiBjb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyAgICAgICAgICAgfCAgIDQgKwog ZG9jL3NyYy9zZ21sL2N1c3RvbS1zY2FuLnNnbWwgICAgICAgICAgICAgICAgIHwgICA0ICstCiBk b2Mvc3JjL3NnbWwvZmR3aGFuZGxlci5zZ21sICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jICAgICAgICAgICAgICAgICB8ICAgNCArLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYyAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMv YmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICAgICAgICAgfCAxNTAgKysrKysrLS0t CiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYyAgICAgICAgICAgICAgfCAgIDIgKwog c3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jICAgICAgICAgICAgICAgIHwgICAzICstCiBz cmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMgICAgICAgICAgICAgfCAgMTYgKy0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyAgICAgICAgICAgICAgICB8ICAzMiArLQogc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgICAgICAgIHwgIDg5ICsrKystCiBz cmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyAgICAgICAgICAgfCAgIDggKy0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyAgICAgICAgICB8ICAxNSArCiBzcmMv YmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYyAgICAgICAgICAgfCAgMTYgKwogc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgICAgICAgICAgICAgIHwgIDYwICsrKy0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQWdnLmMgICAgICAgICAgICAgICAgfCAgMjMgKy0KIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyAgICAgICAgICAgICB8ICAyMyArLQogc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5jICAgICAgICAgIHwgIDEwICstCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYyAgICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYyAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQml0bWFwT3IuYyAgICAgICAgICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVDdGVzY2FuLmMgICAgICAgICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUN1c3RvbS5jICAgICAgICAgICAgIHwgIDEzICstCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlRm9yZWlnbnNjYW4uYyAgICAgICAgfCAgMjggKy0KIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVGdW5jdGlvbnNjYW4uYyAgICAgICB8ICAgMyArLQogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUdhdGhlci5jICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVHYXRoZXJNZXJnZS5jICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9u b2RlR3JvdXAuYyAgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVIYXNoLmMgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SGFzaGpvaW4uYyAgICAgICAgICAgfCAgMTMgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJ bmNyZW1lbnRhbFNvcnQuYyAgICB8ICAxNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUlu ZGV4b25seXNjYW4uYyAgICAgIHwgICA3ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5k ZXhzY2FuLmMgICAgICAgICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMaW1p dC5jICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jv d3MuYyAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1hdGVyaWFs LmMgICAgICAgICAgIHwgICA1ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5j ICAgICAgICAgICAgfCAgMTIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVu ZC5jICAgICAgICB8ICAyMyArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5j ICAgICAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUu YyAgICAgICAgfCAgMTMgKy0KIC4uLi9leGVjdXRvci9ub2RlTmFtZWR0dXBsZXN0b3Jlc2Nhbi5j ICAgICAgICB8ICAgMyArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMgICAg ICAgICAgIHwgICA3ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jICAg ICAgICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5j ICAgICB8ICAgNCArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0LmMgICAgICAgICAg ICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTYW1wbGVzY2FuLmMgICAgICAg ICB8ICAgNSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyAgICAgICAgICAg IHwgICA1ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYyAgICAgICAgICAgICAg fCAgIDUgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMgICAgICAgICAgICAgICB8 ICAgOCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5jICAgICAgIHwg ICA1ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jICAgICAgfCAg IDMgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYyAgICAgICB8ICAg NSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYyAgICAgICAgICAgIHwgICA1 ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMgICAgICAgICAgICAgfCAgIDUg Ky0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVWYWx1ZXNzY2FuLmMgICAgICAgICB8ICAgMyAr LQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jICAgICAgICAgIHwgIDU1ICsr Ky0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXb3JrdGFibGVzY2FuLmMgICAgICB8ICAgMyAr LQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMgICAgICAgICAgICAgICAgICAgIHwgIDUzICsr LQogc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyAgICAgICAgICAgICAgICAgIHwgICAxICsK IHNyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jICAgICAgICAgICAgICAgICB8ICAgMSArCiBz cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgICAgICAgICAgfCAgIDEgKwogc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jICAgICAgICAgIHwgICA1ICsKIHNyYy9i YWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYyAgICAgICAgICB8ICAgNyArLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYyAgICAgICAgICAgICAgIHwgIDQ1ICsrKwogc3JjL2Jh Y2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAgICAgICAgIHwgIDEzICstCiBzcmMvYmFj a2VuZC90Y29wL3BxdWVyeS5jICAgICAgICAgICAgICAgICAgICAgfCAzMTEgKysrKysrKysrKy0t LS0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYyAgICAgICAgICAgfCAg MjEgKysKIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jICAgICAgICAgICB8IDEz NCArKy0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYyAgICAgICAgICAg IHwgICA2ICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaCAgICAgICAgICAgICAgICB8 ICAgNyArLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaCAgICAgICAgICAgICAgIHwg ICA1ICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggICAgICAgICAgICAgICB8ICAx NiArCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDIg Kwogc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggICAgICAgICAgICAgICAgIHwgICAzICsK IHNyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAgMyArCiBz cmMvaW5jbHVkZS9zdG9yYWdlL2xtZ3IuaCAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3Jj L2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmggICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9p bmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oICAgICAgICAgICAgICAgICB8ICAxNCArCiBzcmMvaW5j bHVkZS91dGlscy9wb3J0YWwuaCAgICAgICAgICAgICAgICAgICAgfCAgIDQgKwogc3JjL3Rlc3Qv bW9kdWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZpbGUgICAgIHwgICAzICstCiAuLi4vbW9kdWxl cy9kZWxheV9leGVjdXRpb24vZGVsYXlfZXhlY3V0aW9uLmMgfCAgNjMgKysrLQogLi4uL2V4cGVj dGVkL2NhY2hlZC1wbGFuLXJlcGxhbi5vdXQgICAgICAgICAgIHwgMTE3ICsrKysrKysKIC4uLi9z cGVjcy9jYWNoZWQtcGxhbi1yZXBsYW4uc3BlYyAgICAgICAgICAgICB8ICA1MCArKysKIDg0IGZp bGVzIGNoYW5nZWQsIDEyNTAgaW5zZXJ0aW9ucygrKSwgNDI2IGRlbGV0aW9ucygtKQogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2V4cGVjdGVkL2Nh Y2hlZC1wbGFuLXJlcGxhbi5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVz L2RlbGF5X2V4ZWN1dGlvbi9zcGVjcy9jYWNoZWQtcGxhbi1yZXBsYW4uc3BlYwoKZGlmZiAtLWdp dCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jIGIvY29udHJpYi9wb3N0Z3Jl c19mZHcvcG9zdGdyZXNfZmR3LmMKaW5kZXggZjU5MjZhYjg5ZC4uOTNmM2Y4YjVkMSAxMDA2NDQK LS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKKysrIGIvY29udHJpYi9w b3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKQEAgLTI2NTksNyArMjY1OSwxMSBAQCBwb3N0Z3Jl c0JlZ2luRGlyZWN0TW9kaWZ5KEZvcmVpZ25TY2FuU3RhdGUgKm5vZGUsIGludCBlZmxhZ3MpCiAJ LyogR2V0IGluZm8gYWJvdXQgZm9yZWlnbiB0YWJsZS4gKi8KIAlydGluZGV4ID0gbm9kZS0+cmVz dWx0UmVsSW5mby0+cmlfUmFuZ2VUYWJsZUluZGV4OwogCWlmIChmc3BsYW4tPnNjYW4uc2NhbnJl bGlkID09IDApCisJewogCQlkbXN0YXRlLT5yZWwgPSBFeGVjT3BlblNjYW5SZWxhdGlvbihlc3Rh dGUsIHJ0aW5kZXgsIGVmbGFncyk7CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkp CisJCQlyZXR1cm47CisJfQogCWVsc2UKIAkJZG1zdGF0ZS0+cmVsID0gbm9kZS0+c3Muc3NfY3Vy cmVudFJlbGF0aW9uOwogCXRhYmxlID0gR2V0Rm9yZWlnblRhYmxlKFJlbGF0aW9uR2V0UmVsaWQo ZG1zdGF0ZS0+cmVsKSk7CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY3VzdG9tLXNjYW4uc2dt bCBiL2RvYy9zcmMvc2dtbC9jdXN0b20tc2Nhbi5zZ21sCmluZGV4IDkzZDk2ZjJmNTYuLmM3NTVl MmQ2ODEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jdXN0b20tc2Nhbi5zZ21sCisrKyBiL2Rv Yy9zcmMvc2dtbC9jdXN0b20tc2Nhbi5zZ21sCkBAIC0yNzUsNyArMjc1LDkgQEAgdm9pZCAoKkVu ZEN1c3RvbVNjYW4pIChDdXN0b21TY2FuU3RhdGUgKm5vZGUpOwogPC9wcm9ncmFtbGlzdGluZz4K ICAgICBDbGVhbiB1cCBhbnkgcHJpdmF0ZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgPGxpdGVy YWw+Q3VzdG9tU2NhblN0YXRlPC9saXRlcmFsPi4KICAgICBUaGlzIG1ldGhvZCBpcyByZXF1aXJl ZCwgYnV0IGl0IGRvZXMgbm90IG5lZWQgdG8gZG8gYW55dGhpbmcgaWYgdGhlcmUgaXMKLSAgICBu byBhc3NvY2lhdGVkIGRhdGEgb3IgaXQgd2lsbCBiZSBjbGVhbmVkIHVwIGF1dG9tYXRpY2FsbHku CisgICAgbm8gYXNzb2NpYXRlZCBkYXRhIG9yIGl0IHdpbGwgYmUgY2xlYW5lZCB1cCBhdXRvbWF0 aWNhbGx5LiAgTm90ZSB0aGF0IHRoaXMKKyAgICBtYXkgYmUgY2FsbGVkIGV2ZW4gaWYgdGhlIGNv cnJlc3BvbmRpbmcgPGZ1bmN0aW9uPkJlZ2luQ3VzdG9tU2NhbjwvZnVuY3Rpb24+CisgICAgd2Fz IG5vdCBjYWxsZWQgYnkgPGZ1bmN0aW9uPkV4ZWNJbml0Q3VzdG9tU2NhbjwvZnVuY3Rpb24+Lgog ICAgPC9wYXJhPgogCiAgICA8cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mZHdoYW5k bGVyLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZmR3aGFuZGxlci5zZ21sCmluZGV4IGFjMTcxN2JjM2Mu LmE5N2RjZDkwNTQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9mZHdoYW5kbGVyLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL2Zkd2hhbmRsZXIuc2dtbApAQCAtMjg5LDcgKzI4OSw5IEBAIEVuZEZv cmVpZ25TY2FuKEZvcmVpZ25TY2FuU3RhdGUgKm5vZGUpOwogCiAgICAgIEVuZCB0aGUgc2NhbiBh bmQgcmVsZWFzZSByZXNvdXJjZXMuICBJdCBpcyBub3JtYWxseSBub3QgaW1wb3J0YW50CiAgICAg IHRvIHJlbGVhc2UgcGFsbG9jJ2QgbWVtb3J5LCBidXQgZm9yIGV4YW1wbGUgb3BlbiBmaWxlcyBh bmQgY29ubmVjdGlvbnMKLSAgICAgdG8gcmVtb3RlIHNlcnZlcnMgc2hvdWxkIGJlIGNsZWFuZWQg dXAuCisgICAgIHRvIHJlbW90ZSBzZXJ2ZXJzIHNob3VsZCBiZSBjbGVhbmVkIHVwLiAgTm90ZSB0 aGF0IHRoaXMgbWF5IGJlIGNhbGxlZAorICAgICBldmVuIGlmIHRoZSBjb3JyZXNwb25kaW5nIDxm dW5jdGlvbj5CZWdpbkZvcmVpZ25TY2FuPC9mdW5jdGlvbj4gd2FzCisgICAgIG5vdCBjYWxsZWQg YnkgPGZ1bmN0aW9uPkV4ZWNJbml0Rm9yZWlnblNjYW48L2Z1bmN0aW9uPi4KICAgICA8L3BhcmE+ CiAKICAgIDwvc2VjdDI+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8u YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCmluZGV4IGJlZWExYWM2ODcuLmU5Zjc3 ZDU3MTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCkBAIC01NTgsNyArNTU4LDggQEAgQmVnaW5Db3B5 VG8oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkoKERSX2NvcHkgKikgZGVzdCktPmNzdGF0ZSA9IGNz dGF0ZTsKIAogCQkvKiBDcmVhdGUgYSBRdWVyeURlc2MgcmVxdWVzdGluZyBubyBvdXRwdXQgKi8K LQkJY3N0YXRlLT5xdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcHN0YXRlLT5wX3Nv dXJjZXRleHQsCisJCWNzdGF0ZS0+cXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIE5V TEwsCisJCQkJCQkJCQkJCXBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkJCQkJCQlHZXRBY3Rp dmVTbmFwc2hvdCgpLAogCQkJCQkJCQkJCQlJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCQkJCWRl c3QsIE5VTEwsIE5VTEwsIDApOwpAQCAtNTY5LDYgKzU3MCw3IEBAIEJlZ2luQ29weVRvKFBhcnNl U3RhdGUgKnBzdGF0ZSwKIAkJICogRXhlY3V0b3JTdGFydCBjb21wdXRlcyBhIHJlc3VsdCB0dXBk ZXNjIGZvciB1cwogCQkgKi8KIAkJRXhlY3V0b3JTdGFydChjc3RhdGUtPnF1ZXJ5RGVzYywgMCk7 CisJCUFzc2VydChjc3RhdGUtPnF1ZXJ5RGVzYy0+cGxhbl92YWxpZCk7CiAKIAkJdHVwRGVzYyA9 IGNzdGF0ZS0+cXVlcnlEZXNjLT50dXBEZXNjOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2NyZWF0ZWFzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCmlu ZGV4IGQ2YzZkNTE0ZjMuLmE1NWI4NTE1NzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2NyZWF0ZWFzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYwpAQCAt MzI1LDcgKzMyNSw3IEBAIEV4ZWNDcmVhdGVUYWJsZUFzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3Jl YXRlVGFibGVBc1N0bXQgKnN0bXQsCiAJCVVwZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7 CiAKIAkJLyogQ3JlYXRlIGEgUXVlcnlEZXNjLCByZWRpcmVjdGluZyBvdXRwdXQgdG8gb3VyIHR1 cGxlIHJlY2VpdmVyICovCi0JCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBwc3Rh dGUtPnBfc291cmNldGV4dCwKKwkJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIE5V TEwsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwg SW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgMCk7CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCA4NzhkMmZkMTcyLi44MjZhNDdhZjBhIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvZXhwbGFpbi5jCkBAIC0zOTMsNiArMzkzLDcgQEAgRXhwbGFpbk9uZVF1ZXJ5KFF1ZXJ5 ICpxdWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJZWxzZQogCXsKIAkJUGxhbm5lZFN0bXQgKnBs YW47CisJCVF1ZXJ5RGVzYyAgICpxdWVyeURlc2M7CiAJCWluc3RyX3RpbWUJcGxhbnN0YXJ0LAog CQkJCQlwbGFuZHVyYXRpb247CiAJCUJ1ZmZlclVzYWdlIGJ1ZnVzYWdlX3N0YXJ0LApAQCAtNDE1 LDEyICs0MTYsOTUgQEAgRXhwbGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9w dGlvbnMsCiAJCQlCdWZmZXJVc2FnZUFjY3VtRGlmZigmYnVmdXNhZ2UsICZwZ0J1ZmZlclVzYWdl LCAmYnVmdXNhZ2Vfc3RhcnQpOwogCQl9CiAKKwkJcXVlcnlEZXNjID0gRXhwbGFpblF1ZXJ5RGVz YyhwbGFuLCBOVUxMLCBxdWVyeVN0cmluZywgaW50bywgZXMsCisJCQkJCQkJCQkgcGFyYW1zLCBx dWVyeUVudik7CisJCUFzc2VydChxdWVyeURlc2MpOworCiAJCS8qIHJ1biBpdCAoaWYgbmVlZGVk KSBhbmQgcHJvZHVjZSBvdXRwdXQgKi8KLQkJRXhwbGFpbk9uZVBsYW4ocGxhbiwgaW50bywgZXMs IHF1ZXJ5U3RyaW5nLCBwYXJhbXMsIHF1ZXJ5RW52LAorCQlFeHBsYWluT25lUGxhbihxdWVyeURl c2MsIGludG8sIGVzLCBxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVyeUVudiwKIAkJCQkJICAgJnBs YW5kdXJhdGlvbiwgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCkpOwogCX0KIH0KIAor LyoKKyAqIEV4cGxhaW5RdWVyeURlc2MKKyAqCQlTZXQgdXAgUXVlcnlEZXNjIGZvciBFWFBMQUlO aW5nIGEgZ2l2ZW4gcGxhbgorICoKKyAqIFRoaXMgcmV0dXJucyBOVUxMIGlmIGNwbGFuIGlzIGZv dW5kIHRvIGhhdmUgYmVlbiBpbnZhbGlkYXRlZCBzaW5jZSBpdHMKKyAqIGNyZWF0aW9uLgorICov CitRdWVyeURlc2MgKgorRXhwbGFpblF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqc3RtdCwgQ2FjaGVk UGxhbiAqY3BsYW4sCisJCQkJIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLCBJbnRvQ2xhdXNlICpp bnRvLCBFeHBsYWluU3RhdGUgKmVzLAorCQkJCSBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlF bnZpcm9ubWVudCAqcXVlcnlFbnYpCit7CisJUXVlcnlEZXNjICAqcXVlcnlEZXNjOworCURlc3RS ZWNlaXZlciAqZGVzdDsKKwlpbnQJCQllZmxhZ3M7CisJaW50CQkJaW5zdHJ1bWVudF9vcHRpb24g PSAwOworCisJLyoKKwkgKiBOb3JtYWxseSB3ZSBkaXNjYXJkIHRoZSBxdWVyeSdzIG91dHB1dCwg YnV0IGlmIGV4cGxhaW5pbmcgQ1JFQVRFIFRBQkxFCisJICogQVMsIHdlJ2QgYmV0dGVyIHVzZSB0 aGUgYXBwcm9wcmlhdGUgdHVwbGUgcmVjZWl2ZXIuCisJICovCisJaWYgKGludG8pCisJCWRlc3Qg PSBDcmVhdGVJbnRvUmVsRGVzdFJlY2VpdmVyKGludG8pOworCWVsc2UKKwkJZGVzdCA9IE5vbmVf UmVjZWl2ZXI7CisKKwlpZiAoZXMtPmFuYWx5emUgJiYgZXMtPnRpbWluZykKKwkJaW5zdHJ1bWVu dF9vcHRpb24gfD0gSU5TVFJVTUVOVF9USU1FUjsKKwllbHNlIGlmIChlcy0+YW5hbHl6ZSkKKwkJ aW5zdHJ1bWVudF9vcHRpb24gfD0gSU5TVFJVTUVOVF9ST1dTOworCisJaWYgKGVzLT5idWZmZXJz KQorCQlpbnN0cnVtZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX0JVRkZFUlM7CisJaWYgKGVzLT53 YWwpCisJCWluc3RydW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfV0FMOworCisJLyoKKwkgKiBV c2UgYSBzbmFwc2hvdCB3aXRoIGFuIHVwZGF0ZWQgY29tbWFuZCBJRCB0byBlbnN1cmUgdGhpcyBx dWVyeSBzZWVzCisJICogcmVzdWx0cyBvZiBhbnkgcHJldmlvdXNseSBleGVjdXRlZCBxdWVyaWVz LgorCSAqLworCVB1c2hDb3BpZWRTbmFwc2hvdChHZXRBY3RpdmVTbmFwc2hvdCgpKTsKKwlVcGRh dGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOworCisJLyogQ3JlYXRlIGEgUXVlcnlEZXNjIGZv ciB0aGUgcXVlcnkgKi8KKwlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2Moc3RtdCwgY3BsYW4s IHF1ZXJ5U3RyaW5nLAorCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNo b3QsCisJCQkJCQkJCWRlc3QsIHBhcmFtcywgcXVlcnlFbnYsIGluc3RydW1lbnRfb3B0aW9uKTsK KworCS8qIFNlbGVjdCBleGVjdXRpb24gb3B0aW9ucyAqLworCWlmIChlcy0+YW5hbHl6ZSkKKwkJ ZWZsYWdzID0gMDsJCQkJLyogZGVmYXVsdCBydW4tdG8tY29tcGxldGlvbiBmbGFncyAqLworCWVs c2UKKwkJZWZsYWdzID0gRVhFQ19GTEFHX0VYUExBSU5fT05MWTsKKwlpZiAoZXMtPmdlbmVyaWMp CisJCWVmbGFncyB8PSBFWEVDX0ZMQUdfRVhQTEFJTl9HRU5FUklDOworCWlmIChpbnRvKQorCQll ZmxhZ3MgfD0gR2V0SW50b1JlbEVGbGFncyhpbnRvKTsKKworCS8qIFRha2UgbG9ja3MgaWYgdXNp bmcgYSBDYWNoZWRQbGFuICovCisJaWYgKHF1ZXJ5RGVzYy0+Y3BsYW4pCisJCWVmbGFncyB8PSBF WEVDX0ZMQUdfR0VUX0xPQ0tTOworCisJLyoKKwkgKiBDYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJl cGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uLiAgQSBjYWNoZWQgcGxhbgorCSAqIG1heSBnZXQg aW52YWxpZGF0ZWQgYXMgd2UncmUgZG9pbmcgdGhhdC4KKwkgKi8KKwlFeGVjdXRvclN0YXJ0KHF1 ZXJ5RGVzYywgZWZsYWdzKTsKKwlpZiAoIXF1ZXJ5RGVzYy0+cGxhbl92YWxpZCkKKwl7CisJCS8q IENsZWFuIHVwLiAqLworCQlFeGVjdXRvckVuZChxdWVyeURlc2MpOworCQlGcmVlUXVlcnlEZXNj KHF1ZXJ5RGVzYyk7CisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCXJldHVybiBOVUxMOworCX0K KworCXJldHVybiBxdWVyeURlc2M7Cit9CisKIC8qCiAgKiBFeHBsYWluT25lVXRpbGl0eSAtCiAg KgkgIHByaW50IG91dCB0aGUgZXhlY3V0aW9uIHBsYW4gZm9yIG9uZSB1dGlsaXR5IHN0YXRlbWVu dApAQCAtNTI0LDI5ICs2MDgsMTYgQEAgRXhwbGFpbk9uZVV0aWxpdHkoTm9kZSAqdXRpbGl0eVN0 bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAgKiB0byBjYWxsIGl0Lgog ICovCiB2b2lkCi1FeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9D bGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCitFeHBsYWluT25lUGxhbihRdWVyeURlc2Mg KnF1ZXJ5RGVzYywKKwkJCSAgIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJ CQkgICBjb25zdCBjaGFyICpxdWVyeVN0cmluZywgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkg ICBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwgY29uc3QgaW5zdHJfdGltZSAqcGxhbmR1cmF0 aW9uLAogCQkJICAgY29uc3QgQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlKQogewotCURlc3RSZWNlaXZl ciAqZGVzdDsKLQlRdWVyeURlc2MgICpxdWVyeURlc2M7CiAJaW5zdHJfdGltZQlzdGFydHRpbWU7 CiAJZG91YmxlCQl0b3RhbHRpbWUgPSAwOwotCWludAkJCWVmbGFnczsKLQlpbnQJCQlpbnN0cnVt ZW50X29wdGlvbiA9IDA7CiAKLQlBc3NlcnQocGxhbm5lZHN0bXQtPmNvbW1hbmRUeXBlICE9IENN RF9VVElMSVRZKTsKLQotCWlmIChlcy0+YW5hbHl6ZSAmJiBlcy0+dGltaW5nKQotCQlpbnN0cnVt ZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX1RJTUVSOwotCWVsc2UgaWYgKGVzLT5hbmFseXplKQot CQlpbnN0cnVtZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX1JPV1M7Ci0KLQlpZiAoZXMtPmJ1ZmZl cnMpCi0JCWluc3RydW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfQlVGRkVSUzsKLQlpZiAoZXMt PndhbCkKLQkJaW5zdHJ1bWVudF9vcHRpb24gfD0gSU5TVFJVTUVOVF9XQUw7CisJQXNzZXJ0KHF1 ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPmNvbW1hbmRUeXBlICE9IENNRF9VVElMSVRZKTsKIAogCS8q CiAJICogV2UgYWx3YXlzIGNvbGxlY3QgdGltaW5nIGZvciB0aGUgZW50aXJlIHN0YXRlbWVudCwg ZXZlbiB3aGVuIG5vZGUtbGV2ZWwKQEAgLTU1NSw0MCArNjI2LDYgQEAgRXhwbGFpbk9uZVBsYW4o UGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUg KmVzLAogCSAqLwogCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoc3RhcnR0aW1lKTsKIAotCS8qCi0J ICogVXNlIGEgc25hcHNob3Qgd2l0aCBhbiB1cGRhdGVkIGNvbW1hbmQgSUQgdG8gZW5zdXJlIHRo aXMgcXVlcnkgc2VlcwotCSAqIHJlc3VsdHMgb2YgYW55IHByZXZpb3VzbHkgZXhlY3V0ZWQgcXVl cmllcy4KLQkgKi8KLQlQdXNoQ29waWVkU25hcHNob3QoR2V0QWN0aXZlU25hcHNob3QoKSk7Ci0J VXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKLQotCS8qCi0JICogTm9ybWFsbHkgd2Ug ZGlzY2FyZCB0aGUgcXVlcnkncyBvdXRwdXQsIGJ1dCBpZiBleHBsYWluaW5nIENSRUFURSBUQUJM RQotCSAqIEFTLCB3ZSdkIGJldHRlciB1c2UgdGhlIGFwcHJvcHJpYXRlIHR1cGxlIHJlY2VpdmVy LgotCSAqLwotCWlmIChpbnRvKQotCQlkZXN0ID0gQ3JlYXRlSW50b1JlbERlc3RSZWNlaXZlcihp bnRvKTsKLQllbHNlCi0JCWRlc3QgPSBOb25lX1JlY2VpdmVyOwotCi0JLyogQ3JlYXRlIGEgUXVl cnlEZXNjIGZvciB0aGUgcXVlcnkgKi8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxh bm5lZHN0bXQsIHF1ZXJ5U3RyaW5nLAotCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZh bGlkU25hcHNob3QsCi0JCQkJCQkJCWRlc3QsIHBhcmFtcywgcXVlcnlFbnYsIGluc3RydW1lbnRf b3B0aW9uKTsKLQotCS8qIFNlbGVjdCBleGVjdXRpb24gb3B0aW9ucyAqLwotCWlmIChlcy0+YW5h bHl6ZSkKLQkJZWZsYWdzID0gMDsJCQkJLyogZGVmYXVsdCBydW4tdG8tY29tcGxldGlvbiBmbGFn cyAqLwotCWVsc2UKLQkJZWZsYWdzID0gRVhFQ19GTEFHX0VYUExBSU5fT05MWTsKLQlpZiAoZXMt PmdlbmVyaWMpCi0JCWVmbGFncyB8PSBFWEVDX0ZMQUdfRVhQTEFJTl9HRU5FUklDOwotCWlmIChp bnRvKQotCQllZmxhZ3MgfD0gR2V0SW50b1JlbEVGbGFncyhpbnRvKTsKLQotCS8qIGNhbGwgRXhl Y3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24gKi8KLQlFeGVjdXRv clN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKLQogCS8qIEV4ZWN1dGUgdGhlIHBsYW4gZm9yIHN0 YXRpc3RpY3MgaWYgYXNrZWQgZm9yICovCiAJaWYgKGVzLT5hbmFseXplKQogCXsKQEAgLTQ4NjIs NiArNDg5OSwxNyBAQCBFeHBsYWluRHVtbXlHcm91cChjb25zdCBjaGFyICpvYmp0eXBlLCBjb25z dCBjaGFyICpsYWJlbG5hbWUsIEV4cGxhaW5TdGF0ZSAqZXMpCiAJfQogfQogCisvKgorICogRGlz Y2FyZCBvdXRwdXQgYnVmZmVyIGZvciBhIGZyZXNoIHJlc3RhcnQuCisgKi8KK3ZvaWQKK0V4cGxh aW5SZXNldE91dHB1dChFeHBsYWluU3RhdGUgKmVzKQoreworCUFzc2VydChlcy0+c3RyKTsKKwly ZXNldFN0cmluZ0luZm8oZXMtPnN0cik7CisJRXhwbGFpbkJlZ2luT3V0cHV0KGVzKTsKK30KKwog LyoKICAqIEVtaXQgdGhlIHN0YXJ0LW9mLW91dHB1dCBib2lsZXJwbGF0ZS4KICAqCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2V4dGVuc2lvbi5jCmluZGV4IDBlYWJlMTgzMzUuLjVhNzYzNDMxMjMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2V4dGVuc2lvbi5jCkBAIC03OTcsMTEgKzc5NywxMyBAQCBleGVjdXRlX3NxbF9zdHJpbmco Y29uc3QgY2hhciAqc3FsKQogCQkJCVF1ZXJ5RGVzYyAgKnFkZXNjOwogCiAJCQkJcWRlc2MgPSBD cmVhdGVRdWVyeURlc2Moc3RtdCwKKwkJCQkJCQkJCQlOVUxMLAogCQkJCQkJCQkJCXNxbCwKIAkJ CQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBOVUxMLAogCQkJCQkJCQkJCWRlc3QsIE5VTEws IE5VTEwsIDApOwogCiAJCQkJRXhlY3V0b3JTdGFydChxZGVzYywgMCk7CisJCQkJQXNzZXJ0KHFk ZXNjLT5wbGFuX3ZhbGlkKTsKIAkJCQlFeGVjdXRvclJ1bihxZGVzYywgRm9yd2FyZFNjYW5EaXJl Y3Rpb24sIDAsIHRydWUpOwogCQkJCUV4ZWN1dG9yRmluaXNoKHFkZXNjKTsKIAkJCQlFeGVjdXRv ckVuZChxZGVzYyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKaW5kZXggYzAwYjlkZjNlMy4uODBmMmMz OGIzNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYwpAQCAtNDA5LDEyICs0MDksMTMgQEAgcmVmcmVz aF9tYXR2aWV3X2RhdGFmaWxsKERlc3RSZWNlaXZlciAqZGVzdCwgUXVlcnkgKnF1ZXJ5LAogCVVw ZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CiAKIAkvKiBDcmVhdGUgYSBRdWVyeURlc2Ms IHJlZGlyZWN0aW5nIG91dHB1dCB0byBvdXIgdHVwbGUgcmVjZWl2ZXIgKi8KLQlxdWVyeURlc2Mg PSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcXVlcnlTdHJpbmcsCisJcXVlcnlEZXNjID0gQ3JlYXRl UXVlcnlEZXNjKHBsYW4sIE5VTEwsIHF1ZXJ5U3RyaW5nLAogCQkJCQkJCQlHZXRBY3RpdmVTbmFw c2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCWRlc3QsIE5VTEwsIE5VTEwsIDApOwog CiAJLyogY2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlv biAqLwogCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCAwKTsKKwlBc3NlcnQocXVlcnlEZXNjLT5w bGFuX3ZhbGlkKTsKIAogCS8qIHJ1biB0aGUgcGxhbiAqLwogCUV4ZWN1dG9yUnVuKHF1ZXJ5RGVz YywgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIDBMLCB0cnVlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNt ZHMuYwppbmRleCA4YTNjZjk4Y2NlLi4zYzM0YWI0MzUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFs Y21kcy5jCkBAIC0xNDYsNiArMTQ2LDcgQEAgUGVyZm9ybUN1cnNvck9wZW4oUGFyc2VTdGF0ZSAq cHN0YXRlLCBEZWNsYXJlQ3Vyc29yU3RtdCAqY3N0bXQsIFBhcmFtTGlzdEluZm8gcGEKIAlQb3J0 YWxTdGFydChwb3J0YWwsIHBhcmFtcywgMCwgR2V0QWN0aXZlU25hcHNob3QoKSk7CiAKIAlBc3Nl cnQocG9ydGFsLT5zdHJhdGVneSA9PSBQT1JUQUxfT05FX1NFTEVDVCk7CisJQXNzZXJ0KHBvcnRh bC0+cGxhbl92YWxpZCk7CiAKIAkvKgogCSAqIFdlJ3JlIGRvbmU7IHRoZSBxdWVyeSB3b24ndCBh Y3R1YWxseSBiZSBydW4gdW50aWwgUGVyZm9ybVBvcnRhbEZldGNoIGlzCkBAIC0yNDksNiArMjUw LDE3IEBAIFBlcmZvcm1Qb3J0YWxDbG9zZShjb25zdCBjaGFyICpuYW1lKQogCVBvcnRhbERyb3Ao cG9ydGFsLCBmYWxzZSk7CiB9CiAKKy8qCisgKiBSZWxlYXNlIGEgcG9ydGFsJ3MgUXVlcnlEZXNj LgorICovCit2b2lkCitQb3J0YWxRdWVyeUZpbmlzaChRdWVyeURlc2MgKnF1ZXJ5RGVzYykKK3sK KwlFeGVjdXRvckZpbmlzaChxdWVyeURlc2MpOworCUV4ZWN1dG9yRW5kKHF1ZXJ5RGVzYyk7CisJ RnJlZVF1ZXJ5RGVzYyhxdWVyeURlc2MpOworfQorCiAvKgogICogUG9ydGFsQ2xlYW51cAogICoK QEAgLTI5NSw5ICszMDcsNyBAQCBQb3J0YWxDbGVhbnVwKFBvcnRhbCBwb3J0YWwpCiAJCQlpZiAo cG9ydGFsLT5yZXNvd25lcikKIAkJCQlDdXJyZW50UmVzb3VyY2VPd25lciA9IHBvcnRhbC0+cmVz b3duZXI7CiAKLQkJCUV4ZWN1dG9yRmluaXNoKHF1ZXJ5RGVzYyk7Ci0JCQlFeGVjdXRvckVuZChx dWVyeURlc2MpOwotCQkJRnJlZVF1ZXJ5RGVzYyhxdWVyeURlc2MpOworCQkJUG9ydGFsUXVlcnlG aW5pc2gocXVlcnlEZXNjKTsKIAogCQkJQ3VycmVudFJlc291cmNlT3duZXIgPSBzYXZlUmVzb3Vy Y2VPd25lcjsKIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCmluZGV4IDE4ZjcwMzE5ZmMuLmM5MDcw ZWQ5N2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKQEAgLTE4Myw2ICsxODMsNyBAQCBFeGVjdXRl UXVlcnkoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQlwYXJhbUxJID0gRXZhbHVhdGVQYXJhbXMocHN0 YXRlLCBlbnRyeSwgc3RtdC0+cGFyYW1zLCBlc3RhdGUpOwogCX0KIAorcmVwbGFuOgogCS8qIENy ZWF0ZSBhIG5ldyBwb3J0YWwgdG8gcnVuIHRoZSBxdWVyeSBpbiAqLwogCXBvcnRhbCA9IENyZWF0 ZU5ld1BvcnRhbCgpOwogCS8qIERvbid0IGRpc3BsYXkgdGhlIHBvcnRhbCBpbiBwZ19jdXJzb3Jz LCBpdCBpcyBmb3IgaW50ZXJuYWwgdXNlIG9ubHkgKi8KQEAgLTI1MSwxMCArMjUyLDE5IEBAIEV4 ZWN1dGVRdWVyeShQYXJzZVN0YXRlICpwc3RhdGUsCiAJfQogCiAJLyoKLQkgKiBSdW4gdGhlIHBv cnRhbCBhcyBhcHByb3ByaWF0ZS4KKwkgKiBSdW4gdGhlIHBvcnRhbCBhcyBhcHByb3ByaWF0ZS4g IElmIHRoZSBwb3J0YWwgY29udGFpbnMgYSBjYWNoZWQgcGxhbiwgaXQKKwkgKiBtdXN0IGJlIHJl Y3JlYXRlZCBpZiBwb3J0YWwtPnBsYW5fdmFsaWQgaXMgZmFsc2Ugd2hpY2ggdGVsbHMgdGhhdCB0 aGUKKwkgKiBjYWNoZWQgcGxhbiB3YXMgZm91bmQgdG8gaGF2ZSBiZWVuIGludmFsaWRhdGVkIHdo ZW4gaW5pdGlhbGl6aW5nIG9uZSBvZgorCSAqIHRoZSBwbGFuIHRyZWVzIGNvbnRhaW5lZCBpbiBp dC4KIAkgKi8KIAlQb3J0YWxTdGFydChwb3J0YWwsIHBhcmFtTEksIGVmbGFncywgR2V0QWN0aXZl U25hcHNob3QoKSk7CiAKKwlpZiAoIXBvcnRhbC0+cGxhbl92YWxpZCkKKwl7CisJCVBvcnRhbERy b3AocG9ydGFsLCBmYWxzZSk7CisJCWdvdG8gcmVwbGFuOworCX0KKwogCSh2b2lkKSBQb3J0YWxS dW4ocG9ydGFsLCBjb3VudCwgZmFsc2UsIHRydWUsIGRlc3QsIGRlc3QsIHFjKTsKIAogCVBvcnRh bERyb3AocG9ydGFsLCBmYWxzZSk7CkBAIC01NzQsNyArNTg0LDcgQEAgRXhwbGFpbkV4ZWN1dGVR dWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0 ZSAqZXMsCiB7CiAJUHJlcGFyZWRTdGF0ZW1lbnQgKmVudHJ5OwogCWNvbnN0IGNoYXIgKnF1ZXJ5 X3N0cmluZzsKLQlDYWNoZWRQbGFuICpjcGxhbjsKKwlDYWNoZWRQbGFuICpjcGxhbiA9IE5VTEw7 CiAJTGlzdAkgICAqcGxhbl9saXN0OwogCUxpc3RDZWxsICAgKnA7CiAJUGFyYW1MaXN0SW5mbyBw YXJhbUxJID0gTlVMTDsKQEAgLTYxOCw2ICs2MjgsNyBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4 ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywK IAl9CiAKIAkvKiBSZXBsYW4gaWYgbmVlZGVkLCBhbmQgYWNxdWlyZSBhIHRyYW5zaWVudCByZWZj b3VudCAqLworcmVwbGFuOgogCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihlbnRyeS0+cGxhbnNvdXJj ZSwgcGFyYW1MSSwKIAkJCQkJCSAgQ3VycmVudFJlc291cmNlT3duZXIsIHF1ZXJ5RW52KTsKIApA QCAtNjM5LDggKzY1MCwyMSBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVj c3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJUGxhbm5lZFN0bXQg KnBzdG10ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIHApOwogCiAJCWlmIChwc3RtdC0+Y29t bWFuZFR5cGUgIT0gQ01EX1VUSUxJVFkpCi0JCQlFeHBsYWluT25lUGxhbihwc3RtdCwgaW50bywg ZXMsIHF1ZXJ5X3N0cmluZywgcGFyYW1MSSwgcXVlcnlFbnYsCi0JCQkJCQkgICAmcGxhbmR1cmF0 aW9uLCAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNhZ2UgOiBOVUxMKSk7CisJCXsKKwkJCVF1ZXJ5RGVz YyAqcXVlcnlEZXNjOworCisJCQlxdWVyeURlc2MgPSBFeHBsYWluUXVlcnlEZXNjKHBzdG10LCBj cGxhbiwgcXVlcnlTdHJpbmcsCisJCQkJCQkJCQkJIGludG8sIGVzLCBwYXJhbUxJLCBxdWVyeUVu dik7CisJCQlpZiAocXVlcnlEZXNjID09IE5VTEwpCisJCQl7CisJCQkJRXhwbGFpblJlc2V0T3V0 cHV0KGVzKTsKKwkJCQlSZWxlYXNlQ2FjaGVkUGxhbihjcGxhbiwgQ3VycmVudFJlc291cmNlT3du ZXIpOworCQkJCWdvdG8gcmVwbGFuOworCQkJfQorCQkJRXhwbGFpbk9uZVBsYW4ocXVlcnlEZXNj LCBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLCBwYXJhbUxJLAorCQkJCQkJICAgcXVlcnlFbnYsICZw bGFuZHVyYXRpb24sCisJCQkJCQkgICAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNhZ2UgOiBOVUxMKSk7 CisJCX0KIAkJZWxzZQogCQkJRXhwbGFpbk9uZVV0aWxpdHkocHN0bXQtPnV0aWxpdHlTdG10LCBp bnRvLCBlcywgcXVlcnlfc3RyaW5nLAogCQkJCQkJCSAgcGFyYW1MSSwgcXVlcnlFbnYpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggMWIwMDdkYzMyYy4uMDM2NmJlOWZkNiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjTWFpbi5jCkBAIC0xMjYsMTEgKzEyNiwzMiBAQCBzdGF0aWMgdm9pZCBFdmFsUGxh blF1YWxTdGFydChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKTsKICAqIGdldCBj b250cm9sIHdoZW4gRXhlY3V0b3JTdGFydCBpcyBjYWxsZWQuICBTdWNoIGEgcGx1Z2luIHdvdWxk CiAgKiBub3JtYWxseSBjYWxsIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoKS4KICAqCisgKiBOb3Jt YWxseSwgdGhlIHBsYW4gdHJlZSBnaXZlbiBpbiBxdWVyeURlc2MtPnBsYW5uZWRzdG10IGlzIGtu b3duIHRvIGJlCisgKiB2YWxpZCBpbiB0aGF0ICphbGwqIHJlbGF0aW9ucyBjb250YWluZWQgaW4g cGxhbm5lZHN0bXQtPnJlbGF0aW9uT2lkcyBoYXZlCisgKiBhbHJlYWR5IGJlZW4gbG9ja2VkLiAg VGhhdCBtYXkgbm90IGJlIHRoZSBjYXNlIGhvd2V2ZXIgaWYgdGhlIHBsYW5uZWRzdG10CisgKiBj b21lcyBmcm9tIGEgQ2FjaGVkUGxhbiwgb25lIGdpdmVuIGluIHF1ZXJ5RGVzYy0+Y3BsYW4sIGlu IHdoaWNoIGNhc2Ugb25seQorICogc29tZSBvZiB0aGUgcmVsYXRpb25zIHJlZmVyZW5jZWQgaW4g dGhlIHBsYW4gd291bGQgaGF2ZSBiZWVuIGxvY2tlZDsgdG8KKyAqIHdpdCwgdGhvc2UgdGhhdCBB Y3F1aXJlUGxhbm5lckxvY2tzKCkgZGVlbXMgbmVjZXNzYXJ5LiAgTG9ja3MgbmVjZXNzYXJ5Cisg KiB0byBmdWxseSB2YWxpZGF0ZSBzdWNoIGEgcGxhbiB0cmVlLCBpbmNsdWRpbmcgcmVsYXRpb25z IHRoYXQgYXJlIGFkZGVkIGJ5CisgKiB0aGUgcGxhbm5lciwgd2lsbCBiZSB0YWtlbiB3aGVuIGlu aXRpYWxpemluZyB0aGUgcGxhbiB0cmVlIGluIEluaXRQbGFuKCk7CisgKiB0aGUgdGhlIGNhbGxl ciBtdXN0IGhhdmUgc2V0IHRoZSBFWEVDX0ZMQUdfR0VUX0xPQ0tTIGJpdCBpbiBlZmxhZ3MuICBJ ZiB0aGUKKyAqIENhY2hlZFBsYW4gZ2V0cyBpbnZhbGlkYXRlZCBhcyB0aGVzZSBsb2NrcyBhcmUg dGFrZW4sIHBsYW4gdHJlZQorICogaW5pdGlhbGl6YXRpb24gaXMgc3VzcGVuZGVkIGF0IHRoZSBw b2ludCB3aGVuIHN1Y2ggaW52YWxpZGF0aW9uIGlzIGZpcnN0CisgKiBkZXRlY3RlZCBhbmQgSW5p dFBsYW4oKSByZXR1cm5zIGFmdGVyIHNldHRpbmcgcXVlcnlEZXNjLT5wbGFuX3ZhbGlkIHRvCisg KiBmYWxzZS4gIHF1ZXJ5RGVzYy0+cGxhbnN0YXRlIHdvdWxkIGJlIHBvaW50aW5nIHRvIGEgcG90 ZW50aWFsbHkgcGFydGlhbGx5CisgKiBpbml0aWFsaXplZCBQbGFuU3RhdGUgdHJlZSBpbiB0aGF0 IGNhc2UuICBDYWxsZXJzIG11c3QgcmV0cnkgdGhlIGV4ZWN1dGlvbgorICogd2l0aCBhIGZyZXNo bHkgY3JlYXRlZCBDYWNoZWRQbGFuIGluIHRoYXQgY2FzZSwgYWZ0ZXIgcHJvcGVybHkgZnJlZWlu ZyB0aGUKKyAqIHBhcnRpYWxseSB2YWxpZCBRdWVyeURlc2MuCiAgKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIHZv aWQKIEV4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiB7CisJ LyogVGFrZSBsb2NrcyBpZiB0aGUgcGxhbiB0cmVlIGNvbWVzIGZyb20gYSBDYWNoZWRQbGFuLiAq LworCUFzc2VydChxdWVyeURlc2MtPmNwbGFuID09IE5VTEwgfHwKKwkJICAgKENhY2hlZFBsYW5T dGlsbFZhbGlkKHF1ZXJ5RGVzYy0+Y3BsYW4pICYmCisJCQkoZWZsYWdzICYgRVhFQ19GTEFHX0dF VF9MT0NLUykgIT0gMCkpOworCiAJLyoKIAkgKiBJbiBzb21lIGNhc2VzIChlLmcuIGFuIEVYRUNV VEUgc3RhdGVtZW50KSBhIHF1ZXJ5IGV4ZWN1dGlvbiB3aWxsIHNraXAKIAkgKiBwYXJzZSBhbmFs eXNpcywgd2hpY2ggbWVhbnMgdGhhdCB0aGUgcXVlcnlfaWQgd29uJ3QgYmUgcmVwb3J0ZWQuICBO b3RlCkBAIC01ODIsNiArNjAzLDE2IEBAIEV4ZWNDaGVja1Blcm1pc3Npb25zKExpc3QgKnJhbmdl VGFibGUsIExpc3QgKnJ0ZXBlcm1pbmZvcywKIAkJUlRFUGVybWlzc2lvbkluZm8gKnBlcm1pbmZv ID0gbGZpcnN0X25vZGUoUlRFUGVybWlzc2lvbkluZm8sIGwpOwogCiAJCUFzc2VydChPaWRJc1Zh bGlkKHBlcm1pbmZvLT5yZWxpZCkpOworCisJCS8qCisJCSAqIFJlbGF0aW9ucyB3aG9zZSBwZXJt aXNzaW9ucyBuZWVkIHRvIGJlIGNoZWNrZWQgbXVzdCBhbHJlYWR5IGhhdmUKKwkJICogYmVlbiBs b2NrZWQgYnkgdGhlIHBhcnNlciBvciBieSBBY3F1aXJlUGxhbm5lckxvY2tzKCkgaWYgYQorCQkg KiBjYWNoZWQgcGxhbiBpcyBiZWluZyBleGVjdXRlZC4KKwkJICogWFhYIHNob3VsZG4ndCB3ZSBz a2lwIGNhbGxpbmcgRXhlY0NoZWNrUGVybWlzc2lvbnMgZnJvbSBJbml0UGxhbgorCQkgKiBpbiBh IHBhcmFsbGVsIHdvcmtlcj8KKwkJICovCisJCUFzc2VydChDaGVja1JlbExvY2tlZEJ5TWUocGVy bWluZm8tPnJlbGlkLCBBY2Nlc3NTaGFyZUxvY2ssIHRydWUpIHx8CisJCQkgICBJc1BhcmFsbGVs V29ya2VyKCkpOwogCQlyZXN1bHQgPSBFeGVjQ2hlY2tPbmVSZWxQZXJtcyhwZXJtaW5mbyk7CiAJ CWlmICghcmVzdWx0KQogCQl7CkBAIC03ODUsMTIgKzgxNiwxOSBAQCBFeGVjQ2hlY2tYYWN0UmVh ZE9ubHkoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10KQogCQlQcmV2ZW50Q29tbWFuZElmUGFyYWxs ZWxNb2RlKENyZWF0ZUNvbW1hbmROYW1lKChOb2RlICopIHBsYW5uZWRzdG10KSk7CiB9CiAKLQog LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogICoJCUluaXRQbGFuCiAgKgogICoJCUluaXRpYWxpemVzIHRoZSBxdWVyeSBw bGFuOiBvcGVuIGZpbGVzLCBhbGxvY2F0ZSBzdG9yYWdlCiAgKgkJYW5kIHN0YXJ0IHVwIHRoZSBy dWxlIG1hbmFnZXIKKyAqCisgKgkJSWYgcXVlcnlEZXNjIGNvbnRhaW5zIGEgQ2FjaGVkUGxhbiwg dGhpcyB0YWtlcyBsb2NrcyBvbiByZWxhdGlvbnMuCisgKgkJSWYgYW55IG9mIHRob3NlIHJlbGF0 aW9ucyBoYXZlIHVuZGVyZ29uZSBjb25jdXJyZW50IHNjaGVtYSBjaGFuZ2VzCisgKgkJYmV0d2Vl biBzdWNjZXNzZnVsbHkgcGVyZm9ybWluZyBSZXZhbGlkYXRlQ2FjaGVkUXVlcnkoKSBvbiB0aGUK KyAqCQljb250YWluaW5nIENhY2hlZFBsYW5Tb3VyY2UgYW5kIGhlcmUsIGxvY2tpbmcgdGhvc2Ug cmVsYXRpb25zIHdvdWxkCisgKgkJaW52YWxpZGF0ZSB0aGUgQ2FjaGVkUGxhbiBieSB3YXkgb2Yg UGxhbkNhY2hlUmVsQ2FsbGJhY2soKS4gIEluIHRoYXQKKyAqCQljYXNlLCBxdWVyeURlc2MtPnBs YW5fdmFsaWQgd291bGQgYmUgc2V0IHRvIGZhbHNlIHRvIHRlbGwgdGhlIGNhbGxlcgorICoJCXRv IHJldHJ5IGFmdGVyIGNyZWF0aW5nIGEgbmV3IENhY2hlZFBsYW4uCiAgKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8K IHN0YXRpYyB2b2lkCkBAIC04MDEsMjAgKzgzOSwzMiBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1 ZXJ5RGVzYywgaW50IGVmbGFncykKIAlQbGFuCSAgICpwbGFuID0gcGxhbm5lZHN0bXQtPnBsYW5U cmVlOwogCUxpc3QJICAgKnJhbmdlVGFibGUgPSBwbGFubmVkc3RtdC0+cnRhYmxlOwogCUVTdGF0 ZQkgICAqZXN0YXRlID0gcXVlcnlEZXNjLT5lc3RhdGU7Ci0JUGxhblN0YXRlICAqcGxhbnN0YXRl OworCVBsYW5TdGF0ZSAgKnBsYW5zdGF0ZSA9IE5VTEw7CiAJVHVwbGVEZXNjCXR1cFR5cGU7CiAJ TGlzdENlbGwgICAqbDsKIAlpbnQJCQlpOwogCiAJLyoKLQkgKiBEbyBwZXJtaXNzaW9ucyBjaGVj a3MKKwkgKiBTZXQgdXAgcmFuZ2UgdGFibGUgaW4gRVN0YXRlLgogCSAqLwotCUV4ZWNDaGVja1Bl cm1pc3Npb25zKHJhbmdlVGFibGUsIHBsYW5uZWRzdG10LT5wZXJtSW5mb3MsIHRydWUpOworCUV4 ZWNJbml0UmFuZ2VUYWJsZShlc3RhdGUsIHJhbmdlVGFibGUsIHBsYW5uZWRzdG10LT5wZXJtSW5m b3MpOworCisJLyogTWFrZSBzdXJlIEV4ZWNQbGFuU3RpbGxWYWxpZCgpIGNhbiB3b3JrLiAqLwor CWVzdGF0ZS0+ZXNfY2FjaGVkcGxhbiA9IHF1ZXJ5RGVzYy0+Y3BsYW47CiAKIAkvKgotCSAqIGlu aXRpYWxpemUgdGhlIG5vZGUncyBleGVjdXRpb24gc3RhdGUKKwkgKiBMb2NrIGFueSB2aWV3cyB0 aGF0IHdlcmUgbWVudGlvbmVkIGluIHRoZSBxdWVyeSBpZiBuZWVkZWQuICBWaWV3CisJICogcmVs YXRpb25zIG11c3QgYmUgbG9ja2VkIHNlcGFyYXRlbHkgbGlrZSB0aGlzLCBiZWNhdXNlIHRoZXkg YXJlIG5vdAorCSAqIHJlZmVyZW5jZWQgaW4gdGhlIHBsYW4gdHJlZS4KIAkgKi8KLQlFeGVjSW5p dFJhbmdlVGFibGUoZXN0YXRlLCByYW5nZVRhYmxlLCBwbGFubmVkc3RtdC0+cGVybUluZm9zKTsK KwlFeGVjTG9ja1ZpZXdSZWxhdGlvbnMocGxhbm5lZHN0bXQtPnZpZXdSZWxhdGlvbnMsIGVzdGF0 ZSk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJZ290byBmYWlsZWQ7CisK KwkvKgorCSAqIERvIHBlcm1pc3Npb25zIGNoZWNrcworCSAqLworCUV4ZWNDaGVja1Blcm1pc3Np b25zKHJhbmdlVGFibGUsIHBsYW5uZWRzdG10LT5wZXJtSW5mb3MsIHRydWUpOwogCiAJZXN0YXRl LT5lc19wbGFubmVkc3RtdCA9IHBsYW5uZWRzdG10OwogCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9p bmZvcyA9IHBsYW5uZWRzdG10LT5wYXJ0UHJ1bmVJbmZvczsKQEAgLTg0OSw2ICs4OTksOCBAQCBJ bml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkJCQljYXNlIFJPV19N QVJLX0tFWVNIQVJFOgogCQkJCWNhc2UgUk9XX01BUktfUkVGRVJFTkNFOgogCQkJCQlyZWxhdGlv biA9IEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oZXN0YXRlLCByYy0+cnRpKTsKKwkJCQkJaWYg KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCQkJCWdvdG8gZmFpbGVkOwogCQkJCQli cmVhazsKIAkJCQljYXNlIFJPV19NQVJLX0NPUFk6CiAJCQkJCS8qIG5vIHBoeXNpY2FsIHRhYmxl IGFjY2VzcyBpcyByZXF1aXJlZCAqLwpAQCAtOTE5LDYgKzk3MSw4IEBAIEluaXRQbGFuKFF1ZXJ5 RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCiAJCWVzdGF0ZS0+ZXNfc3VicGxhbnN0YXRl cyA9IGxhcHBlbmQoZXN0YXRlLT5lc19zdWJwbGFuc3RhdGVzLAogCQkJCQkJCQkJCSAgIHN1YnBs YW5zdGF0ZSk7CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQlnb3RvIGZh aWxlZDsKIAogCQlpKys7CiAJfQpAQCAtOTI5LDYgKzk4Myw4IEBAIEluaXRQbGFuKFF1ZXJ5RGVz YyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCSAqIHByb2Nlc3NpbmcgdHVwbGVzLgogCSAqLwog CXBsYW5zdGF0ZSA9IEV4ZWNJbml0Tm9kZShwbGFuLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFF eGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJZ290byBmYWlsZWQ7CiAKIAkvKgogCSAqIEdl dCB0aGUgdHVwbGUgZGVzY3JpcHRvciBkZXNjcmliaW5nIHRoZSB0eXBlIG9mIHR1cGxlcyB0byBy ZXR1cm4uCkBAIC05NzIsNiArMTAyOCwxNyBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVz YywgaW50IGVmbGFncykKIAogCXF1ZXJ5RGVzYy0+dHVwRGVzYyA9IHR1cFR5cGU7CiAJcXVlcnlE ZXNjLT5wbGFuc3RhdGUgPSBwbGFuc3RhdGU7CisJcXVlcnlEZXNjLT5wbGFuX3ZhbGlkID0gdHJ1 ZTsKKwlyZXR1cm47CisKK2ZhaWxlZDoKKwkvKgorCSAqIFBsYW4gaW5pdGlhbGl6YXRpb24gZmFp bGVkLiAgTWFyayBRdWVyeURlc2MgYXMgc3VjaC4gIE5vdGUgdGhhdCB3ZSBkbworCSAqIHNldCBw bGFuc3RhdGUsIGV2ZW4gaWYgaXQgbWF5IG9ubHkgYmUgcGFydGlhbGx5IGluaXRpYWxpemVkLCBz byB0aGF0CisJICogRXhlY0VuZFBsYW4oKSBjYW4gcHJvY2VzcyBpdC4KKwkgKi8KKwlxdWVyeURl c2MtPnBsYW5zdGF0ZSA9IHBsYW5zdGF0ZTsKKwlxdWVyeURlc2MtPnBsYW5fdmFsaWQgPSBmYWxz ZTsKIH0KIAogLyoKQEAgLTEzODksNyArMTQ1Niw3IEBAIEV4ZWNHZXRBbmNlc3RvclJlc3VsdFJl bHMoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8pCiAKIAkJCS8q CiAJCQkgKiBBbGwgYW5jZXN0b3JzIHVwIHRvIHRoZSByb290IHRhcmdldCByZWxhdGlvbiBtdXN0 IGhhdmUgYmVlbgotCQkJICogbG9ja2VkIGJ5IHRoZSBwbGFubmVyIG9yIEFjcXVpcmVFeGVjdXRv ckxvY2tzKCkuCisJCQkgKiBsb2NrZWQuCiAJCQkgKi8KIAkJCWFuY1JlbCA9IHRhYmxlX29wZW4o YW5jT2lkLCBOb0xvY2spOwogCQkJckluZm8gPSBtYWtlTm9kZShSZXN1bHRSZWxJbmZvKTsKQEAg LTI3OTcsNyArMjg2NCw4IEBAIEV2YWxQbGFuUXVhbFN0YXJ0KEVQUVN0YXRlICplcHFzdGF0ZSwg UGxhbiAqcGxhblRyZWUpCiAJICogQ2hpbGQgRVBRIEVTdGF0ZXMgc2hhcmUgdGhlIHBhcmVudCdz IGNvcHkgb2YgdW5jaGFuZ2luZyBzdGF0ZSBzdWNoIGFzCiAJICogdGhlIHNuYXBzaG90LCByYW5n ZXRhYmxlLCBhbmQgZXh0ZXJuYWwgUGFyYW0gaW5mby4gIFRoZXkgbmVlZCB0aGVpciBvd24KIAkg KiBjb3BpZXMgb2YgbG9jYWwgc3RhdGUsIGluY2x1ZGluZyBhIHR1cGxlIHRhYmxlLCBlc19wYXJh bV9leGVjX3ZhbHMsCi0JICogcmVzdWx0LXJlbCBpbmZvLCBldGMuCisJICogcmVzdWx0LXJlbCBp bmZvLCBldGMuICBBbHNvLCB3ZSBkb24ndCBwYXNzIHRoZSBwYXJlbnQndCBjb3B5IG9mIHRoZQor CSAqIENhY2hlZFBsYW4sIGJlY2F1c2Ugbm8gbmV3IGxvY2tzIHdpbGwgYmUgdGFrZW4gZm9yIEV2 YWxQbGFuUXVhbCgpLgogCSAqLwogCXJjZXN0YXRlLT5lc19kaXJlY3Rpb24gPSBGb3J3YXJkU2Nh bkRpcmVjdGlvbjsKIAlyY2VzdGF0ZS0+ZXNfc25hcHNob3QgPSBwYXJlbnRlc3RhdGUtPmVzX3Nu YXBzaG90OwpAQCAtMjg4NCw2ICsyOTUyLDcgQEAgRXZhbFBsYW5RdWFsU3RhcnQoRVBRU3RhdGUg KmVwcXN0YXRlLCBQbGFuICpwbGFuVHJlZSkKIAkJUGxhblN0YXRlICAqc3VicGxhbnN0YXRlOwog CiAJCXN1YnBsYW5zdGF0ZSA9IEV4ZWNJbml0Tm9kZShzdWJwbGFuLCByY2VzdGF0ZSwgMCk7CisJ CUFzc2VydChFeGVjUGxhblN0aWxsVmFsaWQocmNlc3RhdGUpKTsKIAkJcmNlc3RhdGUtPmVzX3N1 YnBsYW5zdGF0ZXMgPSBsYXBwZW5kKHJjZXN0YXRlLT5lc19zdWJwbGFuc3RhdGVzLAogCQkJCQkJ CQkJCQkgc3VicGxhbnN0YXRlKTsKIAl9CkBAIC0yOTM3LDYgKzMwMDYsMTAgQEAgRXZhbFBsYW5R dWFsRW5kKEVQUVN0YXRlICplcHFzdGF0ZSkKIAlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CiAJ TGlzdENlbGwgICAqbDsKIAorCS8qIE5vdGhpbmcgdG8gZG8gaWYgRXZhbFBsYW5RdWFsSW5pdCgp IHdhc24ndCBkb25lIHRvIGJlZ2luIHdpdGguICovCisJaWYgKGVwcXN0YXRlLT5wYXJlbnRlc3Rh dGUgPT0gTlVMTCkKKwkJcmV0dXJuOworCiAJcnRzaXplID0gZXBxc3RhdGUtPnBhcmVudGVzdGF0 ZS0+ZXNfcmFuZ2VfdGFibGVfc2l6ZTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxl bC5jCmluZGV4IGFhM2YyODM0NTMuLmRmNGNjNWRkYWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQ YXJhbGxlbC5jCkBAIC0xMjQ5LDggKzEyNDksMTMgQEAgRXhlY1BhcmFsbGVsR2V0UXVlcnlEZXNj KHNobV90b2MgKnRvYywgRGVzdFJlY2VpdmVyICpyZWNlaXZlciwKIAlwYXJhbXNwYWNlID0gc2ht X3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfUEFSQU1MSVNUSU5GTywgZmFsc2UpOwogCXBh cmFtTEkgPSBSZXN0b3JlUGFyYW1MaXN0KCZwYXJhbXNwYWNlKTsKIAotCS8qIENyZWF0ZSBhIFF1 ZXJ5RGVzYyBmb3IgdGhlIHF1ZXJ5LiAqLworCS8qCisJICogQ3JlYXRlIGEgUXVlcnlEZXNjIGZv ciB0aGUgcXVlcnkuICBOb3RlIHRoYXQgbm8gQ2FjaGVkUGxhbiBpcyBhdmFpbGFibGUKKwkgKiBo ZXJlIGV2ZW4gaWYgdGhlIGNvbnRhaW5pbmcgcGxhbiB0cmVlIG1heSBoYXZlIGNvbWUgZnJvbSBv bmUgaW4gdGhlCisJICogbGVhZGVyLgorCSAqLwogCXJldHVybiBDcmVhdGVRdWVyeURlc2MocHN0 bXQsCisJCQkJCQkgICBOVUxMLAogCQkJCQkJICAgcXVlcnlTdHJpbmcsCiAJCQkJCQkgICBHZXRB Y3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkgICByZWNlaXZlciwgcGFy YW1MSSwgTlVMTCwgaW5zdHJ1bWVudF9vcHRpb25zKTsKQEAgLTE0MzIsNiArMTQzNyw3IEBAIFBh cmFsbGVsUXVlcnlNYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAkvKiBTdGFy dCB1cCB0aGUgZXhlY3V0b3IgKi8KIAlxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5qaXRGbGFncyA9 IGZwZXMtPmppdF9mbGFnczsKIAlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZnBlcy0+ZWZsYWdz KTsKKwlBc3NlcnQocXVlcnlEZXNjLT5wbGFuX3ZhbGlkKTsKIAogCS8qIFNwZWNpYWwgZXhlY3V0 b3IgaW5pdGlhbGl6YXRpb24gc3RlcHMgZm9yIHBhcmFsbGVsIHdvcmtlcnMgKi8KIAlxdWVyeURl c2MtPnBsYW5zdGF0ZS0+c3RhdGUtPmVzX3F1ZXJ5X2RzYSA9IGFyZWE7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUGFydGl0aW9uLmMKaW5kZXggOTc5OTk2OGE0Mi4uMzQyNWZmY2NhNyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwpAQCAtNTEzLDYgKzUxMywxMiBAQCBFeGVjSW5pdFBh cnRpdGlvbkluZm8oTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwgRVN0YXRlICplc3RhdGUsCiAK IAlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocHJvdXRlLT5tZW1jeHQpOwogCisJLyoK KwkgKiBOb3RlIHRoYXQgd2hpbGUgd2UgbXVzdCBjaGVjayBFeGVjUGxhblN0aWxsVmFsaWQoKSBm b3Igb3RoZXIgbG9ja3MgdGFrZW4KKwkgKiBkdXJpbmcgZXhlY3V0aW9uIGluaXRpYWxpemF0aW9u LCBpdCBpcyBPSyB0byBub3QgZG8gc28gZm9yIHBhcnRpdGlvbnMKKwkgKiBvcGVuZWQgbGlrZSB0 aGlzLCBmb3IgdHVwbGUgcm91dGluZywgYmVjYXVzZSBpdCBjYW4ndCBwb3NzaWJseQorCSAqIGlu dmFsaWRhdGUgdGhlIHBsYW4uCisJICovCiAJcGFydHJlbCA9IHRhYmxlX29wZW4ocGFydE9pZCwg Um93RXhjbHVzaXZlTG9jayk7CiAKIAlsZWFmX3BhcnRfcnJpID0gbWFrZU5vZGUoUmVzdWx0UmVs SW5mbyk7CkBAIC0xMTExLDYgKzExMTcsMTEgQEAgRXhlY0luaXRQYXJ0aXRpb25EaXNwYXRjaElu Zm8oRVN0YXRlICplc3RhdGUsCiAJICogT25seSBzdWItcGFydGl0aW9uZWQgdGFibGVzIG5lZWQg dG8gYmUgbG9ja2VkIGhlcmUuICBUaGUgcm9vdAogCSAqIHBhcnRpdGlvbmVkIHRhYmxlIHdpbGwg YWxyZWFkeSBoYXZlIGJlZW4gbG9ja2VkIGFzIGl0J3MgcmVmZXJlbmNlZCBpbgogCSAqIHRoZSBx dWVyeSdzIHJ0YWJsZS4KKwkgKgorCSAqIE5vdGUgdGhhdCB3aGlsZSB3ZSBtdXN0IGNoZWNrIEV4 ZWNQbGFuU3RpbGxWYWxpZCgpIGZvciBvdGhlciBsb2NrcyB0YWtlbgorCSAqIGR1cmluZyBleGVj dXRpb24gaW5pdGlhbGl6YXRpb24sIGl0IGlzIE9LIHRvIG5vdCBkbyBzbyBmb3IgcGFydGl0aW9u cworCSAqIG9wZW5lZCBsaWtlIHRoaXMsIGZvciB0dXBsZSByb3V0aW5nLCBiZWNhdXNlIGl0IGNh bid0IHBvc3NpYmx5CisJICogaW52YWxpZGF0ZSB0aGUgcGxhbi4KIAkgKi8KIAlpZiAocGFydG9p ZCAhPSBSZWxhdGlvbkdldFJlbGlkKHByb3V0ZS0+cGFydGl0aW9uX3Jvb3QpKQogCQlyZWwgPSB0 YWJsZV9vcGVuKHBhcnRvaWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwpAQCAtMTgxNyw2ICsxODI4LDgg QEAgRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogCiAJLyog Q3JlYXRlIHRoZSB3b3JraW5nIGRhdGEgc3RydWN0dXJlIGZvciBwcnVuaW5nICovCiAJcHJ1bmVz dGF0ZSA9IENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUocGxhbnN0YXRlLCBwcnVuZWluZm8pOwor CWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyoK IAkgKiBQZXJmb3JtIGFuIGluaXRpYWwgcGFydGl0aW9uIHBydW5lIHBhc3MsIGlmIHJlcXVpcmVk LgpAQCAtMTk0Myw2ICsxOTU2LDggQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3Rh dGUgKnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCiAJCQkgKiBkdXJh dGlvbiBvZiB0aGlzIGV4ZWN1dG9yIHJ1bi4KIAkJCSAqLwogCQkJcGFydHJlbCA9IEV4ZWNHZXRS YW5nZVRhYmxlUmVsYXRpb24oZXN0YXRlLCBwaW5mby0+cnRpbmRleCk7CisJCQlpZiAoIUV4ZWNQ bGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJCXJldHVybiBOVUxMOwogCQkJcGFydGtleSA9IFJl bGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcnRyZWwpOwogCQkJcGFydGRlc2MgPSBQYXJ0aXRpb25E aXJlY3RvcnlMb29rdXAoZXN0YXRlLT5lc19wYXJ0aXRpb25fZGlyZWN0b3J5LAogCQkJCQkJCQkJ CQkJcGFydHJlbCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25v ZGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCmluZGV4IDRkMjg4YmM4 ZDQuLmE5YjIyZTBmMTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9j bm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCkBAIC0zODgs NiArMzg4LDkgQEAgRXhlY0luaXROb2RlKFBsYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQg ZWZsYWdzKQogCQkJYnJlYWs7CiAJfQogCisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRl KSkKKwkJcmV0dXJuIHJlc3VsdDsKKwogCUV4ZWNTZXRFeGVjUHJvY05vZGUocmVzdWx0LCByZXN1 bHQtPkV4ZWNQcm9jTm9kZSk7CiAKIAkvKgpAQCAtNDAzLDYgKzQwNiwxMiBAQCBFeGVjSW5pdE5v ZGUoUGxhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCUFzc2VydChJc0Eo c3VicGxhbiwgU3ViUGxhbikpOwogCQlzc3RhdGUgPSBFeGVjSW5pdFN1YlBsYW4oc3VicGxhbiwg cmVzdWx0KTsKIAkJc3VicHMgPSBsYXBwZW5kKHN1YnBzLCBzc3RhdGUpOworCQlpZiAoIUV4ZWNQ bGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQl7CisJCQkvKiBEb24ndCBsb3NlIHRyYWNrIG9mIHRo b3NlIGluaXRpYWxpemVkLiAqLworCQkJcmVzdWx0LT5pbml0UGxhbiA9IHN1YnBzOworCQkJcmV0 dXJuIHJlc3VsdDsKKwkJfQogCX0KIAlyZXN1bHQtPmluaXRQbGFuID0gc3VicHM7CiAKQEAgLTU1 MSw2ICs1NjAsMTMgQEAgTXVsdGlFeGVjUHJvY05vZGUoUGxhblN0YXRlICpub2RlKQogICoJCUFm dGVyIHRoaXMgb3BlcmF0aW9uLCB0aGUgcXVlcnkgcGxhbiB3aWxsIG5vdCBiZSBhYmxlIHRvIGJl CiAgKgkJcHJvY2Vzc2VkIGFueSBmdXJ0aGVyLiAgVGhpcyBzaG91bGQgYmUgY2FsbGVkIG9ubHkg YWZ0ZXIKICAqCQl0aGUgcXVlcnkgcGxhbiBoYXMgYmVlbiBmdWxseSBleGVjdXRlZC4KKyAqCisg KgkJTm90ZTogU3Vicm91dGluZXMgZm9yIHZhcmlvdXMgbm9kZSB0eXBlcyBzaG91bGQgYmUgcHJl cGFyZWQgdG8gaGFuZGxlCisgKgkJdGhlIGNhc2VzIHdoZXJlIHRoZSBjb3JyZXNwb25kaW5nIEV4 ZWNJbml0Tm9kZSgpIHN1YnJvdXRpbmVzIG1heSByZXR1cm4KKyAqCQllYXJseSBpZiB0aGUgbG9j ayB0YWtlbiBvbiByZWxhdGlvbiBoYW5kbGVkIGJ5IGEgZ2l2ZW4gbm9kZSBjYXVzZWQgdGhlCisg KgkJcGxhbiB0byBiZSBpbnZhbGlkYXRlZCAoRXhlY1BsYW5TdGlsbFZhbGlkKCkgc3RvcHMgcmV0 dXJuaW5zIHRydWUpLCBpbgorICoJCXdoaWNoIGNhc2UsIG5vdCBhbGwgb2YgdGhlIG5vZGUncyBQ bGFuU3RhdGUgc3RydWN0J3MgZmllbGRzIHdvdWxkIGhhdmUKKyAqCQliZWVuIGluaXRpYWxpemVk LgogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogICovCiB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCmluZGV4IDAx MmRiYjY5NjUuLmE0ODVlN2RmYzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNVdGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC04MDQs NyArODA0LDggQEAgRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgSW5k ZXggcnRpKQogCiAJCUFzc2VydChydGUtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OKTsKIAotCQlp ZiAoIUlzUGFyYWxsZWxXb3JrZXIoKSkKKwkJaWYgKCFJc1BhcmFsbGVsV29ya2VyKCkgJiYKKwkJ CShlc3RhdGUtPmVzX3RvcF9lZmxhZ3MgJiBFWEVDX0ZMQUdfR0VUX0xPQ0tTKSA9PSAwKQogCQl7 CiAJCQkvKgogCQkJICogSW4gYSBub3JtYWwgcXVlcnksIHdlIHNob3VsZCBhbHJlYWR5IGhhdmUg dGhlIGFwcHJvcHJpYXRlIGxvY2ssCkBAIC04MzMsNiArODM0LDYxIEBAIEV4ZWNHZXRSYW5nZVRh YmxlUmVsYXRpb24oRVN0YXRlICplc3RhdGUsIEluZGV4IHJ0aSkKIAlyZXR1cm4gcmVsOwogfQog CisvKgorICogRXhlY0xvY2tWaWV3UmVsYXRpb25zCisgKgkJTG9jayB2aWV3IHJlbGF0aW9ucywg aWYgYW55LCBpbiBhIGdpdmVuIHF1ZXJ5CisgKi8KK3ZvaWQKK0V4ZWNMb2NrVmlld1JlbGF0aW9u cyhMaXN0ICp2aWV3UmVsYXRpb25zLCBFU3RhdGUgKmVzdGF0ZSkKK3sKKwlMaXN0Q2VsbCAqbGM7 CisKKwkvKiBOb3RoaW5nIHRvIGRvIGlmIG5vIGxvY2tzIG5lZWQgdG8gYmUgdGFrZW4uICovCisJ aWYgKChlc3RhdGUtPmVzX3RvcF9lZmxhZ3MgJiBFWEVDX0ZMQUdfR0VUX0xPQ0tTKSA9PSAwKQor CQlyZXR1cm47CisKKwlmb3JlYWNoKGxjLCB2aWV3UmVsYXRpb25zKQorCXsKKwkJSW5kZXgJcnRp ID0gbGZpcnN0X2ludChsYyk7CisJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IGV4ZWNfcnRfZmV0Y2go cnRpLCBlc3RhdGUpOworCisJCUFzc2VydChPaWRJc1ZhbGlkKHJ0ZS0+cmVsaWQpKTsKKwkJQXNz ZXJ0KHJ0ZS0+cmVsa2luZCA9PSBSRUxLSU5EX1ZJRVcpOworCQlBc3NlcnQocnRlLT5yZWxsb2Nr bW9kZSAhPSBOb0xvY2spOworCisJCUxvY2tSZWxhdGlvbk9pZChydGUtPnJlbGlkLCBydGUtPnJl bGxvY2ttb2RlKTsKKwl9Cit9CisKKy8qCisgKiBFeGVjTG9ja0FwcGVuZE5vbkxlYWZSZWxhdGlv bnMKKyAqCQlMb2NrIG5vbi1sZWFmIHJlbGF0aW9ucyB3aG9zZSBjaGlsZHJlbiBhcmUgc2Nhbm5l ZCBieSBhIGdpdmVuCisgKgkJQXBwZW5kL01lcmdlQXBwZW5kIG5vZGUKKyAqLwordm9pZAorRXhl Y0xvY2tBcHBlbmROb25MZWFmUmVsYXRpb25zKEVTdGF0ZSAqZXN0YXRlLCBMaXN0ICphbGxwYXJ0 cmVsaWRzKQoreworCUxpc3RDZWxsICpsOworCisJLyogTm90aGluZyB0byBkbyBpZiBubyBsb2Nr cyBuZWVkIHRvIGJlIHRha2VuLiAqLworCWlmICgoZXN0YXRlLT5lc190b3BfZWZsYWdzICYgRVhF Q19GTEFHX0dFVF9MT0NLUykgPT0gMCkKKwkJcmV0dXJuOworCisJZm9yZWFjaChsLCBhbGxwYXJ0 cmVsaWRzKQorCXsKKwkJQml0bWFwc2V0ICpwYXJ0cmVsaWRzID0gbGZpcnN0X25vZGUoQml0bWFw c2V0LCBsKTsKKwkJaW50CQlpOworCisJCWkgPSAtMTsKKwkJd2hpbGUgKChpID0gYm1zX25leHRf bWVtYmVyKHBhcnRyZWxpZHMsIGkpKSA+IDApCisJCXsKKwkJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9 IGV4ZWNfcnRfZmV0Y2goaSwgZXN0YXRlKTsKKworCQkJTG9ja1JlbGF0aW9uT2lkKHJ0ZS0+cmVs aWQsIHJ0ZS0+cmVsbG9ja21vZGUpOworCQl9CisJfQorfQorCiAvKgogICogRXhlY0luaXRSZXN1 bHRSZWxhdGlvbgogICoJCU9wZW4gcmVsYXRpb24gZ2l2ZW4gYnkgdGhlIHBhc3NlZC1pbiBSVCBp bmRleCBhbmQgZmlsbCBpdHMKQEAgLTg0OCw2ICs5MDQsOCBAQCBFeGVjSW5pdFJlc3VsdFJlbGF0 aW9uKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCVJlbGF0 aW9uCXJlc3VsdFJlbGF0aW9uRGVzYzsKIAogCXJlc3VsdFJlbGF0aW9uRGVzYyA9IEV4ZWNHZXRS YW5nZVRhYmxlUmVsYXRpb24oZXN0YXRlLCBydGkpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlk KGVzdGF0ZSkpCisJCXJldHVybjsKIAlJbml0UmVzdWx0UmVsSW5mbyhyZXN1bHRSZWxJbmZvLAog CQkJCQkgIHJlc3VsdFJlbGF0aW9uRGVzYywKIAkJCQkJICBydGksCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0 aW9ucy5jCmluZGV4IGY1NTQyNGViNWEuLmM4OGY3MmJjNGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0 aW9ucy5jCkBAIC04MzgsNiArODM4LDcgQEAgcG9zdHF1ZWxfc3RhcnQoZXhlY3V0aW9uX3N0YXRl ICplcywgU1FMRnVuY3Rpb25DYWNoZVB0ciBmY2FjaGUpCiAJCWRlc3QgPSBOb25lX1JlY2VpdmVy OwogCiAJZXMtPnFkID0gQ3JlYXRlUXVlcnlEZXNjKGVzLT5zdG10LAorCQkJCQkJCSBOVUxMLAkv KiBmbWdyX3NxbCgpIGRvZXNuJ3QgdXNlIENhY2hlZFBsYW5zICovCiAJCQkJCQkJIGZjYWNoZS0+ c3JjLAogCQkJCQkJCSBHZXRBY3RpdmVTbmFwc2hvdCgpLAogCQkJCQkJCSBJbnZhbGlkU25hcHNo b3QsCkBAIC04NjMsNiArODY0LDcgQEAgcG9zdHF1ZWxfc3RhcnQoZXhlY3V0aW9uX3N0YXRlICpl cywgU1FMRnVuY3Rpb25DYWNoZVB0ciBmY2FjaGUpCiAJCWVsc2UKIAkJCWVmbGFncyA9IDA7CQkJ LyogZGVmYXVsdCBydW4tdG8tY29tcGxldGlvbiBmbGFncyAqLwogCQlFeGVjdXRvclN0YXJ0KGVz LT5xZCwgZWZsYWdzKTsKKwkJQXNzZXJ0KGVzLT5xZC0+cGxhbl92YWxpZCk7CiAJfQogCiAJZXMt PnN0YXR1cyA9IEZfRVhFQ19SVU47CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlQWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMKaW5kZXggMTkzNDJhNDIw Yy4uMDZlMGQ3ZDE0OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYwpAQCAtMzEzNCwxNSArMzEzNCwx OCBAQCBoYXNoYWdnX3Jlc2V0X3NwaWxsX3N0YXRlKEFnZ1N0YXRlICphZ2dzdGF0ZSkKIAkJewog CQkJSGFzaEFnZ1NwaWxsICpzcGlsbCA9ICZhZ2dzdGF0ZS0+aGFzaF9zcGlsbHNbc2V0bm9dOwog Ci0JCQlwZnJlZShzcGlsbC0+bnR1cGxlcyk7Ci0JCQlwZnJlZShzcGlsbC0+cGFydGl0aW9ucyk7 CisJCQlpZiAoc3BpbGwtPm50dXBsZXMpCisJCQkJcGZyZWUoc3BpbGwtPm50dXBsZXMpOworCQkJ aWYgKHNwaWxsLT5wYXJ0aXRpb25zKQorCQkJCXBmcmVlKHNwaWxsLT5wYXJ0aXRpb25zKTsKIAkJ fQogCQlwZnJlZShhZ2dzdGF0ZS0+aGFzaF9zcGlsbHMpOwogCQlhZ2dzdGF0ZS0+aGFzaF9zcGls bHMgPSBOVUxMOwogCX0KIAogCS8qIGZyZWUgYmF0Y2hlcyAqLwotCWxpc3RfZnJlZV9kZWVwKGFn Z3N0YXRlLT5oYXNoX2JhdGNoZXMpOworCWlmIChhZ2dzdGF0ZS0+aGFzaF9iYXRjaGVzKQorCQls aXN0X2ZyZWVfZGVlcChhZ2dzdGF0ZS0+aGFzaF9iYXRjaGVzKTsKIAlhZ2dzdGF0ZS0+aGFzaF9i YXRjaGVzID0gTklMOwogCiAJLyogY2xvc2UgdGFwZSBzZXQgKi8KQEAgLTMyOTYsNiArMzI5OSw4 IEBAIEV4ZWNJbml0QWdnKEFnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJ CWVmbGFncyAmPSB+RVhFQ19GTEFHX1JFV0lORDsKIAlvdXRlclBsYW4gPSBvdXRlclBsYW4obm9k ZSk7CiAJb3V0ZXJQbGFuU3RhdGUoYWdnc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbiwg ZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJl dHVybiBhZ2dzdGF0ZTsKIAogCS8qCiAJICogaW5pdGlhbGl6ZSBzb3VyY2UgdHVwbGUgdHlwZS4K QEAgLTQzMzYsMTAgKzQzNDEsMTMgQEAgRXhlY0VuZEFnZyhBZ2dTdGF0ZSAqbm9kZSkKIAl7CiAJ CUFnZ1N0YXRlUGVyVHJhbnMgcGVydHJhbnMgPSAmbm9kZS0+cGVydHJhbnNbdHJhbnNub107CiAK LQkJZm9yIChzZXRubyA9IDA7IHNldG5vIDwgbnVtR3JvdXBpbmdTZXRzOyBzZXRubysrKQorCQlp ZiAocGVydHJhbnMpCiAJCXsKLQkJCWlmIChwZXJ0cmFucy0+c29ydHN0YXRlc1tzZXRub10pCi0J CQkJdHVwbGVzb3J0X2VuZChwZXJ0cmFucy0+c29ydHN0YXRlc1tzZXRub10pOworCQkJZm9yIChz ZXRubyA9IDA7IHNldG5vIDwgbnVtR3JvdXBpbmdTZXRzOyBzZXRubysrKQorCQkJeworCQkJCWlm IChwZXJ0cmFucy0+c29ydHN0YXRlc1tzZXRub10pCisJCQkJCXR1cGxlc29ydF9lbmQocGVydHJh bnMtPnNvcnRzdGF0ZXNbc2V0bm9dKTsKKwkJCX0KIAkJfQogCX0KIApAQCAtNDM1Nyw3ICs0MzY1 LDggQEAgRXhlY0VuZEFnZyhBZ2dTdGF0ZSAqbm9kZSkKIAlFeGVjRnJlZUV4cHJDb250ZXh0KCZu b2RlLT5zcy5wcyk7CiAKIAkvKiBjbGVhbiB1cCB0dXBsZSB0YWJsZSAqLwotCUV4ZWNDbGVhclR1 cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOworCWlmIChub2RlLT5zcy5zc19TY2FuVHVw bGVTbG90KQorCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKIAog CW91dGVyUGxhbiA9IG91dGVyUGxhblN0YXRlKG5vZGUpOwogCUV4ZWNFbmROb2RlKG91dGVyUGxh bik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKaW5kZXggYzE4NWIxMWM2Ny4uMDkxZjk3OWM0 NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwpAQCAtMTA5LDEwICsxMDksMTEgQEAgQXBw ZW5kU3RhdGUgKgogRXhlY0luaXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncykKIHsKIAlBcHBlbmRTdGF0ZSAqYXBwZW5kc3RhdGUgPSBtYWtlTm9kZShBcHBl bmRTdGF0ZSk7Ci0JUGxhblN0YXRlICoqYXBwZW5kcGxhbnN0YXRlczsKKwlQbGFuU3RhdGUgKiph cHBlbmRwbGFuc3RhdGVzID0gTlVMTDsKIAlCaXRtYXBzZXQgICp2YWxpZHN1YnBsYW5zOwogCUJp dG1hcHNldCAgKmFzeW5jcGxhbnM7CiAJaW50CQkJbnBsYW5zOworCWludAkJCW5pbml0ZWQgPSAw OwogCWludAkJCW5hc3luY3BsYW5zOwogCWludAkJCWZpcnN0dmFsaWQ7CiAJaW50CQkJaSwKQEAg LTEzMyw2ICsxMzQsMTUgQEAgRXhlY0luaXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVz dGF0ZSwgaW50IGVmbGFncykKIAlhcHBlbmRzdGF0ZS0+YXNfc3luY2RvbmUgPSBmYWxzZTsKIAlh cHBlbmRzdGF0ZS0+YXNfYmVndW4gPSBmYWxzZTsKIAorCS8qCisJICogTG9jayBub24tbGVhZiBw YXJ0aXRpb25zLiAgSW4gdGhlIHBydW5pbmcgY2FzZSwgc29tZSBvZiB0aGVzZSBsb2NrcworCSAq IHdpbGwgYmUgcmV0YWtlbiB3aGVuIHRoZSBwYXJ0aXRpb24gd2lsbCBiZSBvcGVuZWQgZm9yIHBy dW5pbmcsIGJ1dCBpdAorCSAqIGRvZXMgbm90IHNlZW0gd29ydGh3aGlsZSB0byBzcGVuZCBjeWNs ZXMgdG8gZmlsdGVyIHRob3NlIG91dCBoZXJlLgorCSAqLworCUV4ZWNMb2NrQXBwZW5kTm9uTGVh ZlJlbGF0aW9ucyhlc3RhdGUsIG5vZGUtPmFsbHBhcnRyZWxpZHMpOworCWlmICghRXhlY1BsYW5T dGlsbFZhbGlkKGVzdGF0ZSkpCisJCWdvdG8gZWFybHlfZXhpdDsKKwogCS8qIElmIHJ1bi10aW1l IHBhcnRpdGlvbiBwcnVuaW5nIGlzIGVuYWJsZWQsIHRoZW4gc2V0IHRoYXQgdXAgbm93ICovCiAJ aWYgKG5vZGUtPnBhcnRfcHJ1bmVfaW5kZXggPj0gMCkKIAl7CkBAIC0xNDgsNiArMTU4LDggQEAg RXhlY0luaXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykK IAkJCQkJCQkJCQkJICBub2RlLT5wYXJ0X3BydW5lX2luZGV4LAogCQkJCQkJCQkJCQkgIG5vZGUt PmFwcHJlbGlkcywKIAkJCQkJCQkJCQkJICAmdmFsaWRzdWJwbGFucyk7CisJCWlmICghRXhlY1Bs YW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQlnb3RvIGVhcmx5X2V4aXQ7CiAJCWFwcGVuZHN0YXRl LT5hc19wcnVuZV9zdGF0ZSA9IHBydW5lc3RhdGU7CiAJCW5wbGFucyA9IGJtc19udW1fbWVtYmVy cyh2YWxpZHN1YnBsYW5zKTsKIApAQCAtMjIyLDExICsyMzQsMTIgQEAgRXhlY0luaXRBcHBlbmQo QXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJCWZpcnN0dmFsaWQg PSBqOwogCiAJCWFwcGVuZHBsYW5zdGF0ZXNbaisrXSA9IEV4ZWNJbml0Tm9kZShpbml0Tm9kZSwg ZXN0YXRlLCBlZmxhZ3MpOworCQluaW5pdGVkKys7CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlk KGVzdGF0ZSkpCisJCQlnb3RvIGVhcmx5X2V4aXQ7CiAJfQogCiAJYXBwZW5kc3RhdGUtPmFzX2Zp cnN0X3BhcnRpYWxfcGxhbiA9IGZpcnN0dmFsaWQ7Ci0JYXBwZW5kc3RhdGUtPmFwcGVuZHBsYW5z ID0gYXBwZW5kcGxhbnN0YXRlczsKLQlhcHBlbmRzdGF0ZS0+YXNfbnBsYW5zID0gbnBsYW5zOwog CiAJLyogSW5pdGlhbGl6ZSBhc3luYyBzdGF0ZSAqLwogCWFwcGVuZHN0YXRlLT5hc19hc3luY3Bs YW5zID0gYXN5bmNwbGFuczsKQEAgLTI3Niw2ICsyODksMTAgQEAgRXhlY0luaXRBcHBlbmQoQXBw ZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkvKiBGb3IgcGFyYWxsZWwg cXVlcnksIHRoaXMgd2lsbCBiZSBvdmVycmlkZGVuIGxhdGVyLiAqLwogCWFwcGVuZHN0YXRlLT5j aG9vc2VfbmV4dF9zdWJwbGFuID0gY2hvb3NlX25leHRfc3VicGxhbl9sb2NhbGx5OwogCitlYXJs eV9leGl0OgorCWFwcGVuZHN0YXRlLT5hcHBlbmRwbGFucyA9IGFwcGVuZHBsYW5zdGF0ZXM7CisJ YXBwZW5kc3RhdGUtPmFzX25wbGFucyA9IG5pbml0ZWQ7CisKIAlyZXR1cm4gYXBwZW5kc3RhdGU7 CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBBbmQuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBBbmQuYwppbmRleCA0YzVlYjJiMjNiLi5h Y2M2YzUwZTIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwQW5k LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5jCkBAIC01Nyw2ICs1 Nyw3IEBAIEV4ZWNJbml0Qml0bWFwQW5kKEJpdG1hcEFuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUs IGludCBlZmxhZ3MpCiAJQml0bWFwQW5kU3RhdGUgKmJpdG1hcGFuZHN0YXRlID0gbWFrZU5vZGUo Qml0bWFwQW5kU3RhdGUpOwogCVBsYW5TdGF0ZSAqKmJpdG1hcHBsYW5zdGF0ZXM7CiAJaW50CQkJ bnBsYW5zOworCWludAkJCW5pbml0ZWQgPSAwOwogCWludAkJCWk7CiAJTGlzdENlbGwgICAqbDsK IAlQbGFuCSAgICppbml0Tm9kZTsKQEAgLTc3LDggKzc4LDYgQEAgRXhlY0luaXRCaXRtYXBBbmQo Qml0bWFwQW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAliaXRtYXBhbmRz dGF0ZS0+cHMucGxhbiA9IChQbGFuICopIG5vZGU7CiAJYml0bWFwYW5kc3RhdGUtPnBzLnN0YXRl ID0gZXN0YXRlOwogCWJpdG1hcGFuZHN0YXRlLT5wcy5FeGVjUHJvY05vZGUgPSBFeGVjQml0bWFw QW5kOwotCWJpdG1hcGFuZHN0YXRlLT5iaXRtYXBwbGFucyA9IGJpdG1hcHBsYW5zdGF0ZXM7Ci0J Yml0bWFwYW5kc3RhdGUtPm5wbGFucyA9IG5wbGFuczsKIAogCS8qCiAJICogY2FsbCBFeGVjSW5p dE5vZGUgb24gZWFjaCBvZiB0aGUgcGxhbnMgdG8gYmUgZXhlY3V0ZWQgYW5kIHNhdmUgdGhlCkBA IC04OSw2ICs4OCw5IEBAIEV4ZWNJbml0Qml0bWFwQW5kKEJpdG1hcEFuZCAqbm9kZSwgRVN0YXRl ICplc3RhdGUsIGludCBlZmxhZ3MpCiAJewogCQlpbml0Tm9kZSA9IChQbGFuICopIGxmaXJzdChs KTsKIAkJYml0bWFwcGxhbnN0YXRlc1tpXSA9IEV4ZWNJbml0Tm9kZShpbml0Tm9kZSwgZXN0YXRl LCBlZmxhZ3MpOworCQluaW5pdGVkKys7CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0 ZSkpCisJCQlnb3RvIGVhcmx5X2V4aXQ7CiAJCWkrKzsKIAl9CiAKQEAgLTk5LDYgKzEwMSwxMCBA QCBFeGVjSW5pdEJpdG1hcEFuZChCaXRtYXBBbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQg ZWZsYWdzKQogCSAqIEV4ZWNRdWFsIG9yIEV4ZWNQcm9qZWN0LiAgVGhleSBkb24ndCBuZWVkIGFu eSB0dXBsZSBzbG90cyBlaXRoZXIuCiAJICovCiAKK2Vhcmx5X2V4aXQ6CisJYml0bWFwYW5kc3Rh dGUtPmJpdG1hcHBsYW5zID0gYml0bWFwcGxhbnN0YXRlczsKKwliaXRtYXBhbmRzdGF0ZS0+bnBs YW5zID0gbmluaXRlZDsKKwogCXJldHVybiBiaXRtYXBhbmRzdGF0ZTsKIH0KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYwppbmRleCBmMzVkZjBiOGJmLi5lNmE2ODll ZWZiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4u YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYwpAQCAtNjY1 LDcgKzY2NSw4IEBAIEV4ZWNFbmRCaXRtYXBIZWFwU2NhbihCaXRtYXBIZWFwU2NhblN0YXRlICpu b2RlKQogCSAqLwogCWlmIChub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpCiAJCUV4ZWND bGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVw bGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPnNzLnNzX1NjYW5UdXBs ZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwogCiAJ LyoKIAkgKiBjbG9zZSBkb3duIHN1YnBsYW5zCkBAIC02OTMsNyArNjk0LDggQEAgRXhlY0VuZEJp dG1hcEhlYXBTY2FuKEJpdG1hcEhlYXBTY2FuU3RhdGUgKm5vZGUpCiAJLyoKIAkgKiBjbG9zZSBo ZWFwIHNjYW4KIAkgKi8KLQl0YWJsZV9lbmRzY2FuKHNjYW5EZXNjKTsKKwlpZiAoc2NhbkRlc2Mp CisJCXRhYmxlX2VuZHNjYW4oc2NhbkRlc2MpOwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC03NjMsMTEg Kzc2NSwxNSBAQCBFeGVjSW5pdEJpdG1hcEhlYXBTY2FuKEJpdG1hcEhlYXBTY2FuICpub2RlLCBF U3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBvcGVuIHRoZSBzY2FuIHJlbGF0aW9uCiAJ ICovCiAJY3VycmVudFJlbGF0aW9uID0gRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLCBub2Rl LT5zY2FuLnNjYW5yZWxpZCwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3Rh dGUpKQorCQlyZXR1cm4gc2NhbnN0YXRlOwogCiAJLyoKIAkgKiBpbml0aWFsaXplIGNoaWxkIG5v ZGVzCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUoc2NhbnN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRl clBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChl c3RhdGUpKQorCQlyZXR1cm4gc2NhbnN0YXRlOwogCiAJLyoKIAkgKiBnZXQgdGhlIHNjYW4gdHlw ZSBmcm9tIHRoZSByZWxhdGlvbiBkZXNjcmlwdG9yLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUJpdG1hcEluZGV4c2Nhbi5jCmluZGV4IDgzZWM5ZWRlODkuLmNjODMzMmVmNjggMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMKQEAgLTI2Myw2ICsyNjMsOCBA QCBFeGVjSW5pdEJpdG1hcEluZGV4U2NhbihCaXRtYXBJbmRleFNjYW4gKm5vZGUsIEVTdGF0ZSAq ZXN0YXRlLCBpbnQgZWZsYWdzKQogCS8qIE9wZW4gdGhlIGluZGV4IHJlbGF0aW9uLiAqLwogCWxv Y2ttb2RlID0gZXhlY19ydF9mZXRjaChub2RlLT5zY2FuLnNjYW5yZWxpZCwgZXN0YXRlKS0+cmVs bG9ja21vZGU7CiAJaW5kZXhzdGF0ZS0+Ymlzc19SZWxhdGlvbkRlc2MgPSBpbmRleF9vcGVuKG5v ZGUtPmluZGV4aWQsIGxvY2ttb2RlKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUp KQorCQlyZXR1cm4gaW5kZXhzdGF0ZTsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSBpbmRleC1zcGVj aWZpYyBzY2FuIHN0YXRlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0 bWFwT3IuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBPci5jCmluZGV4IDBiZjhh Zjk2NTIuLmJhYmFkMWI0YjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVC aXRtYXBPci5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBPci5jCkBAIC01 OCw2ICs1OCw3IEBAIEV4ZWNJbml0Qml0bWFwT3IoQml0bWFwT3IgKm5vZGUsIEVTdGF0ZSAqZXN0 YXRlLCBpbnQgZWZsYWdzKQogCUJpdG1hcE9yU3RhdGUgKmJpdG1hcG9yc3RhdGUgPSBtYWtlTm9k ZShCaXRtYXBPclN0YXRlKTsKIAlQbGFuU3RhdGUgKipiaXRtYXBwbGFuc3RhdGVzOwogCWludAkJ CW5wbGFuczsKKwlpbnQJCQluaW5pdGVkID0gMDsKIAlpbnQJCQlpOwogCUxpc3RDZWxsICAgKmw7 CiAJUGxhbgkgICAqaW5pdE5vZGU7CkBAIC03OCw4ICs3OSw2IEBAIEV4ZWNJbml0Qml0bWFwT3Io Qml0bWFwT3IgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWJpdG1hcG9yc3Rh dGUtPnBzLnBsYW4gPSAoUGxhbiAqKSBub2RlOwogCWJpdG1hcG9yc3RhdGUtPnBzLnN0YXRlID0g ZXN0YXRlOwogCWJpdG1hcG9yc3RhdGUtPnBzLkV4ZWNQcm9jTm9kZSA9IEV4ZWNCaXRtYXBPcjsK LQliaXRtYXBvcnN0YXRlLT5iaXRtYXBwbGFucyA9IGJpdG1hcHBsYW5zdGF0ZXM7Ci0JYml0bWFw b3JzdGF0ZS0+bnBsYW5zID0gbnBsYW5zOwogCiAJLyoKIAkgKiBjYWxsIEV4ZWNJbml0Tm9kZSBv biBlYWNoIG9mIHRoZSBwbGFucyB0byBiZSBleGVjdXRlZCBhbmQgc2F2ZSB0aGUKQEAgLTkwLDYg Kzg5LDkgQEAgRXhlY0luaXRCaXRtYXBPcihCaXRtYXBPciAqbm9kZSwgRVN0YXRlICplc3RhdGUs IGludCBlZmxhZ3MpCiAJewogCQlpbml0Tm9kZSA9IChQbGFuICopIGxmaXJzdChsKTsKIAkJYml0 bWFwcGxhbnN0YXRlc1tpXSA9IEV4ZWNJbml0Tm9kZShpbml0Tm9kZSwgZXN0YXRlLCBlZmxhZ3Mp OworCQluaW5pdGVkKys7CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQln b3RvIGVhcmx5X2V4aXQ7CiAJCWkrKzsKIAl9CiAKQEAgLTEwMCw2ICsxMDIsMTAgQEAgRXhlY0lu aXRCaXRtYXBPcihCaXRtYXBPciAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJ ICogRXhlY1F1YWwgb3IgRXhlY1Byb2plY3QuICBUaGV5IGRvbid0IG5lZWQgYW55IHR1cGxlIHNs b3RzIGVpdGhlci4KIAkgKi8KIAorZWFybHlfZXhpdDoKKwliaXRtYXBvcnN0YXRlLT5iaXRtYXBw bGFucyA9IGJpdG1hcHBsYW5zdGF0ZXM7CisJYml0bWFwb3JzdGF0ZS0+bnBsYW5zID0gbmluaXRl ZDsKKwogCXJldHVybiBiaXRtYXBvcnN0YXRlOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQ3Rlc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN0ZXNj YW4uYwppbmRleCBjYzRjNDI0M2UyLi5lZWQ1Yjc1YTRmIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQ3Rlc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVD dGVzY2FuLmMKQEAgLTI5NywxNCArMjk3LDE2IEBAIEV4ZWNFbmRDdGVTY2FuKEN0ZVNjYW5TdGF0 ZSAqbm9kZSkKIAkgKi8KIAlpZiAobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KQogCQlF eGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwotCUV4ZWNDbGVh clR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOworCWlmIChub2RlLT5zcy5zc19TY2Fu VHVwbGVTbG90KQorCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsK IAogCS8qCiAJICogSWYgSSBhbSB0aGUgbGVhZGVyLCBmcmVlIHRoZSB0dXBsZXN0b3JlLgogCSAq LwogCWlmIChub2RlLT5sZWFkZXIgPT0gbm9kZSkKIAl7Ci0JCXR1cGxlc3RvcmVfZW5kKG5vZGUt PmN0ZV90YWJsZSk7CisJCWlmIChub2RlLT5jdGVfdGFibGUpCisJCQl0dXBsZXN0b3JlX2VuZChu b2RlLT5jdGVfdGFibGUpOwogCQlub2RlLT5jdGVfdGFibGUgPSBOVUxMOwogCX0KIH0KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVDdXN0b20uYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVDdXN0b20uYwppbmRleCBiZDQyYzY1YjI5Li41NDQ1OTNjY2FmIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUN1c3RvbS5jCkBAIC02MSw2ICs2MSw4IEBAIEV4ZWNJbml0Q3VzdG9tU2Nh bihDdXN0b21TY2FuICpjc2NhbiwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJaWYgKHNj YW5yZWxpZCA+IDApCiAJewogCQlzY2FuX3JlbCA9IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0 ZSwgc2NhbnJlbGlkLCBlZmxhZ3MpOworCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUp KQorCQkJcmV0dXJuIGNzczsKIAkJY3NzLT5zcy5zc19jdXJyZW50UmVsYXRpb24gPSBzY2FuX3Jl bDsKIAl9CiAKQEAgLTEyNyw2ICsxMjksMTEgQEAgRXhlY0N1c3RvbVNjYW4oUGxhblN0YXRlICpw c3RhdGUpCiB2b2lkCiBFeGVjRW5kQ3VzdG9tU2NhbihDdXN0b21TY2FuU3RhdGUgKm5vZGUpCiB7 CisJLyoKKwkgKiBYWFggLSBCZWdpbkN1c3RvbVNjYW4oKSBtYXkgbm90IGhhdmUgb2NjdXJyZWQg aWYgRXhlY0luaXRDdXN0b21TY2FuKCkKKwkgKiBoaXQgdGhlIGVhcmx5IGV4aXQgY2FzZS4gIFBl cmhhcHMgd2Ugc2hvdWxkIGRvY3VtZW50IHRoYXQgdGhlIGN1c3RvbQorCSAqIHNjYW4gcHJvdmlk ZXIgc2hvdWxkIGJlIHJlYWR5IHRvIGVuY291bnRlciBzdWNoIGEgc2l0dWF0aW9uLgorCSAqLwog CUFzc2VydChub2RlLT5tZXRob2RzLT5FbmRDdXN0b21TY2FuICE9IE5VTEwpOwogCW5vZGUtPm1l dGhvZHMtPkVuZEN1c3RvbVNjYW4obm9kZSk7CiAKQEAgLTEzNCw4ICsxNDEsMTAgQEAgRXhlY0Vu ZEN1c3RvbVNjYW4oQ3VzdG9tU2NhblN0YXRlICpub2RlKQogCUV4ZWNGcmVlRXhwckNvbnRleHQo Jm5vZGUtPnNzLnBzKTsKIAogCS8qIENsZWFuIG91dCB0aGUgdHVwbGUgdGFibGUgKi8KLQlFeGVj Q2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwotCUV4ZWNDbGVhclR1 cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOworCWlmIChub2RlLT5zcy5wcy5wc19SZXN1 bHRUdXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxl U2xvdCk7CisJaWYgKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxl KG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwogfQogCiB2b2lkCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVGb3JlaWduc2Nhbi5jCmluZGV4IGMyMTM5YWNjYTAuLmFhNTRmNjAxMjcgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5jCkBAIC0xNzMsNiArMTczLDggQEAgRXhlY0lu aXRGb3JlaWduU2NhbihGb3JlaWduU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJaWYgKHNjYW5yZWxpZCA+IDApCiAJewogCQljdXJyZW50UmVsYXRpb24gPSBFeGVjT3Bl blNjYW5SZWxhdGlvbihlc3RhdGUsIHNjYW5yZWxpZCwgZWZsYWdzKTsKKwkJaWYgKCFFeGVjUGxh blN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJldHVybiBzY2Fuc3RhdGU7CiAJCXNjYW5zdGF0ZS0+ c3Muc3NfY3VycmVudFJlbGF0aW9uID0gY3VycmVudFJlbGF0aW9uOwogCQlmZHdyb3V0aW5lID0g R2V0RmR3Um91dGluZUZvclJlbGF0aW9uKGN1cnJlbnRSZWxhdGlvbiwgdHJ1ZSk7CiAJfQpAQCAt MjY0LDYgKzI2Niw4IEBAIEV4ZWNJbml0Rm9yZWlnblNjYW4oRm9yZWlnblNjYW4gKm5vZGUsIEVT dGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWlmIChvdXRlclBsYW4obm9kZSkpCiAJCW91dGVy UGxhblN0YXRlKHNjYW5zdGF0ZSkgPQogCQkJRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwg ZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJl dHVybiBzY2Fuc3RhdGU7CiAKIAkvKgogCSAqIFRlbGwgdGhlIEZEVyB0byBpbml0aWFsaXplIHRo ZSBzY2FuLgpAQCAtMzAwLDE0ICszMDQsMjMgQEAgRXhlY0VuZEZvcmVpZ25TY2FuKEZvcmVpZ25T Y2FuU3RhdGUgKm5vZGUpCiAJRm9yZWlnblNjYW4gKnBsYW4gPSAoRm9yZWlnblNjYW4gKikgbm9k ZS0+c3MucHMucGxhbjsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IG5vZGUtPnNzLnBzLnN0YXRlOwog Ci0JLyogTGV0IHRoZSBGRFcgc2h1dCBkb3duICovCi0JaWYgKHBsYW4tPm9wZXJhdGlvbiAhPSBD TURfU0VMRUNUKQorCS8qCisJICogTGV0IHRoZSBGRFcgc2h1dCBkb3duIGlmIG5lZWRlZC4KKwkg KgorCSAqIFhYWCAtIEJlZ2luRGlyZWN0TW9kaWZ5KCkvQmVnaW5Gb3JlaWduU2NhbigpIG1heSBu b3QgaGF2ZSBiZWVuIGNhbGxlZAorCSAqIGlmIEV4ZWNJbml0Rm9yZWlnblNjYW4oKSByZXR1cm5l ZCBlYXJseSBkdWUgdG8gcGxhbiBiZWluZyBpbnZhbGlkYXRlZAorCSAqIHVwb24gdGFraW5nIGEg bG9jayBvbiB0aGUgZm9yZWlnbiB0YWJsZS4KKwkgKi8KKwlpZiAobm9kZS0+ZmR3X3N0YXRlKQog CXsKLQkJaWYgKGVzdGF0ZS0+ZXNfZXBxX2FjdGl2ZSA9PSBOVUxMKQotCQkJbm9kZS0+ZmR3cm91 dGluZS0+RW5kRGlyZWN0TW9kaWZ5KG5vZGUpOworCQlpZiAocGxhbi0+b3BlcmF0aW9uICE9IENN RF9TRUxFQ1QpCisJCXsKKwkJCWlmIChlc3RhdGUtPmVzX2VwcV9hY3RpdmUgPT0gTlVMTCkKKwkJ CQlub2RlLT5mZHdyb3V0aW5lLT5FbmREaXJlY3RNb2RpZnkobm9kZSk7CisJCX0KKwkJZWxzZQor CQkJbm9kZS0+ZmR3cm91dGluZS0+RW5kRm9yZWlnblNjYW4obm9kZSk7CiAJfQotCWVsc2UKLQkJ bm9kZS0+ZmR3cm91dGluZS0+RW5kRm9yZWlnblNjYW4obm9kZSk7CiAKIAkvKiBTaHV0IGRvd24g YW55IG91dGVyIHBsYW4uICovCiAJaWYgKG91dGVyUGxhblN0YXRlKG5vZGUpKQpAQCAtMzE5LDcg KzMzMiw4IEBAIEV4ZWNFbmRGb3JlaWduU2NhbihGb3JlaWduU2NhblN0YXRlICpub2RlKQogCS8q IGNsZWFuIG91dCB0aGUgdHVwbGUgdGFibGUgKi8KIAlpZiAobm9kZS0+c3MucHMucHNfUmVzdWx0 VHVwbGVTbG90KQogCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNs b3QpOwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOworCWlmIChu b2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KQorCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19T Y2FuVHVwbGVTbG90KTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUZ1bmN0aW9uc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZ1 bmN0aW9uc2Nhbi5jCmluZGV4IGRkMDZlZjhhZWUuLjc5MmVjZGE0YTkgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGdW5jdGlvbnNjYW4uYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlRnVuY3Rpb25zY2FuLmMKQEAgLTUzMyw3ICs1MzMsOCBAQCBFeGVjRW5kRnVu Y3Rpb25TY2FuKEZ1bmN0aW9uU2NhblN0YXRlICpub2RlKQogCSAqLwogCWlmIChub2RlLT5zcy5w cy5wc19SZXN1bHRUdXBsZVNsb3QpCiAJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jl c3VsdFR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xv dCk7CisJaWYgKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxlKG5v ZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwogCiAJLyoKIAkgKiBSZWxlYXNlIHNsb3RzIGFuZCB0 dXBsZXN0b3JlIHJlc291cmNlcwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUdhdGhlci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jCmluZGV4IDMwN2Zj MTBlZWEuLjM2NWQzYWYzZTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVH YXRoZXIuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKQEAgLTg5LDYg Kzg5LDggQEAgRXhlY0luaXRHYXRoZXIoR2F0aGVyICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50 IGVmbGFncykKIAkgKi8KIAlvdXRlck5vZGUgPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQbGFu U3RhdGUoZ2F0aGVyc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyTm9kZSwgZXN0YXRlLCBlZmxh Z3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBnYXRoZXJz dGF0ZTsKIAl0dXBEZXNjID0gRXhlY0dldFJlc3VsdFR5cGUob3V0ZXJQbGFuU3RhdGUoZ2F0aGVy c3RhdGUpKTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0 aGVyTWVyZ2UuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jCmluZGV4 IDlkNWUxYTQ2ZTkuLjhkMjgwOWYwNzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVHYXRoZXJNZXJnZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJN ZXJnZS5jCkBAIC0xMDgsNiArMTA4LDggQEAgRXhlY0luaXRHYXRoZXJNZXJnZShHYXRoZXJNZXJn ZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICovCiAJb3V0ZXJOb2RlID0g b3V0ZXJQbGFuKG5vZGUpOwogCW91dGVyUGxhblN0YXRlKGdtX3N0YXRlKSA9IEV4ZWNJbml0Tm9k ZShvdXRlck5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChl c3RhdGUpKQorCQlyZXR1cm4gZ21fc3RhdGU7CiAKIAkvKgogCSAqIExlYWRlciBtYXkgYWNjZXNz IEV4ZWNQcm9jTm9kZSByZXN1bHQgZGlyZWN0bHkgKGlmCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlR3JvdXAuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5j CmluZGV4IDI1YTE2MTg5NTIuLmUwODMyYmI3NzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVHcm91cC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5j CkBAIC0xODUsNiArMTg1LDggQEAgRXhlY0luaXRHcm91cChHcm91cCAqbm9kZSwgRVN0YXRlICpl c3RhdGUsIGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6ZSBjaGlsZCBub2RlcwogCSAqLwogCW91 dGVyUGxhblN0YXRlKGdycHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVz dGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1 cm4gZ3Jwc3RhdGU7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgc2NhbiBzbG90IGFuZCB0eXBlLgpA QCAtMjMxLDcgKzIzMyw4IEBAIEV4ZWNFbmRHcm91cChHcm91cFN0YXRlICpub2RlKQogCUV4ZWNG cmVlRXhwckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKIAogCS8qIGNsZWFuIHVwIHR1cGxlIHRhYmxl ICovCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CisJaWYgKG5v ZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1Nj YW5UdXBsZVNsb3QpOwogCiAJb3V0ZXJQbGFuID0gb3V0ZXJQbGFuU3RhdGUobm9kZSk7CiAJRXhl Y0VuZE5vZGUob3V0ZXJQbGFuKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVIYXNoLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jCmluZGV4IDc0OGM5YjAw MjQuLjg5MWJjZWU5MTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNo LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2guYwpAQCAtMzg2LDYgKzM4Niw4 IEBAIEV4ZWNJbml0SGFzaChIYXNoICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykK IAkgKiBpbml0aWFsaXplIGNoaWxkIG5vZGVzCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUoaGFzaHN0 YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlp ZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gaGFzaHN0YXRlOwogCiAJ LyoKIAkgKiBpbml0aWFsaXplIG91ciByZXN1bHQgc2xvdCBhbmQgdHlwZS4gTm8gbmVlZCB0byBi dWlsZCBwcm9qZWN0aW9uCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFz aGpvaW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jCmluZGV4IGYxODlm YjRkMjguLjkzY2UwYzhiZTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVI YXNoam9pbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jCkBAIC02 OTEsOCArNjkxLDEyIEBAIEV4ZWNJbml0SGFzaEpvaW4oSGFzaEpvaW4gKm5vZGUsIEVTdGF0ZSAq ZXN0YXRlLCBpbnQgZWZsYWdzKQogCWhhc2hOb2RlID0gKEhhc2ggKikgaW5uZXJQbGFuKG5vZGUp OwogCiAJb3V0ZXJQbGFuU3RhdGUoaGpzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJOb2RlLCBl c3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0 dXJuIGhqc3RhdGU7CiAJb3V0ZXJEZXNjID0gRXhlY0dldFJlc3VsdFR5cGUob3V0ZXJQbGFuU3Rh dGUoaGpzdGF0ZSkpOwogCWlubmVyUGxhblN0YXRlKGhqc3RhdGUpID0gRXhlY0luaXROb2RlKChQ bGFuICopIGhhc2hOb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFs aWQoZXN0YXRlKSkKKwkJcmV0dXJuIGhqc3RhdGU7CiAJaW5uZXJEZXNjID0gRXhlY0dldFJlc3Vs dFR5cGUoaW5uZXJQbGFuU3RhdGUoaGpzdGF0ZSkpOwogCiAJLyoKQEAgLTgxMyw5ICs4MTcsMTIg QEAgRXhlY0VuZEhhc2hKb2luKEhhc2hKb2luU3RhdGUgKm5vZGUpCiAJLyoKIAkgKiBjbGVhbiBv dXQgdGhlIHR1cGxlIHRhYmxlCiAJICovCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+anMucHMucHNf UmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5oal9PdXRlclR1cGxlU2xv dCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+aGpfSGFzaFR1cGxlU2xvdCk7CisJaWYgKG5vZGUt PmpzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+anMucHMu cHNfUmVzdWx0VHVwbGVTbG90KTsKKwlpZiAobm9kZS0+aGpfT3V0ZXJUdXBsZVNsb3QpCisJCUV4 ZWNDbGVhclR1cGxlKG5vZGUtPmhqX091dGVyVHVwbGVTbG90KTsKKwlpZiAobm9kZS0+aGpfSGFz aFR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+aGpfSGFzaFR1cGxlU2xvdCk7CiAK IAkvKgogCSAqIGNsZWFuIHVwIHN1YnRyZWVzCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlSW5jcmVtZW50YWxTb3J0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5j cmVtZW50YWxTb3J0LmMKaW5kZXggMTJiYzIyZjMzYy4uNmIyZGE1NjA0NCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNvcnQuYwpAQCAtMTA0MSw2ICsxMDQxLDggQEAg RXhlY0luaXRJbmNyZW1lbnRhbFNvcnQoSW5jcmVtZW50YWxTb3J0ICpub2RlLCBFU3RhdGUgKmVz dGF0ZSwgaW50IGVmbGFncykKIAkgKiBub2RlcyBtYXkgYmUgYWJsZSB0byBkbyBzb21ldGhpbmcg bW9yZSB1c2VmdWwuCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUoaW5jcnNvcnRzdGF0ZSkgPSBFeGVj SW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxh blN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIGluY3Jzb3J0c3RhdGU7CiAKIAkvKgogCSAq IEluaXRpYWxpemUgc2NhbiBzbG90IGFuZCB0eXBlLgpAQCAtMTA4MCwxMiArMTA4MiwxNiBAQCBF eGVjRW5kSW5jcmVtZW50YWxTb3J0KEluY3JlbWVudGFsU29ydFN0YXRlICpub2RlKQogCVNPX3By aW50ZigiRXhlY0VuZEluY3JlbWVudGFsU29ydDogc2h1dHRpbmcgZG93biBzb3J0IG5vZGVcbiIp OwogCiAJLyogY2xlYW4gb3V0IHRoZSBzY2FuIHR1cGxlICovCi0JRXhlY0NsZWFyVHVwbGUobm9k ZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3Qp CisJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwogCS8qIG11c3Qg ZHJvcCBwb2ludGVyIHRvIHNvcnQgcmVzdWx0IHR1cGxlICovCi0JRXhlY0NsZWFyVHVwbGUobm9k ZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKKwlpZiAobm9kZS0+c3MucHMucHNfUmVzdWx0 VHVwbGVTbG90KQorCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNs b3QpOwogCS8qIG11c3QgZHJvcCBzdGFuZGFsb25lIHR1cGxlIHNsb3RzIGZyb20gb3V0ZXIgbm9k ZSAqLwotCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qobm9kZS0+Z3JvdXBfcGl2b3QpOwot CUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qobm9kZS0+dHJhbnNmZXJfdHVwbGUpOworCWlm IChub2RlLT5ncm91cF9waXZvdCkKKwkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChub2Rl LT5ncm91cF9waXZvdCk7CisJaWYgKG5vZGUtPnRyYW5zZmVyX3R1cGxlKQorCQlFeGVjRHJvcFNp bmdsZVR1cGxlVGFibGVTbG90KG5vZGUtPnRyYW5zZmVyX3R1cGxlKTsKIAogCS8qCiAJICogUmVs ZWFzZSB0dXBsZXNvcnQgcmVzb3VyY2VzLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUluZGV4b25seXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9u bHlzY2FuLmMKaW5kZXggMGI0M2E5Yjk2OS4uYjYwYTA4NjQ2NCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCkBAIC0zOTQsNyArMzk0LDggQEAgRXhlY0VuZEluZGV4 T25seVNjYW4oSW5kZXhPbmx5U2NhblN0YXRlICpub2RlKQogCSAqLwogCWlmIChub2RlLT5zcy5w cy5wc19SZXN1bHRUdXBsZVNsb3QpCiAJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jl c3VsdFR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xv dCk7CisJaWYobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9k ZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CiAKIAkvKgogCSAqIGNsb3NlIHRoZSBpbmRleCByZWxh dGlvbiAobm8tb3AgaWYgd2UgZGlkbid0IG9wZW4gaXQpCkBAIC01MTIsNiArNTEzLDggQEAgRXhl Y0luaXRJbmRleE9ubHlTY2FuKEluZGV4T25seVNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBp bnQgZWZsYWdzKQogCSAqIG9wZW4gdGhlIHNjYW4gcmVsYXRpb24KIAkgKi8KIAljdXJyZW50UmVs YXRpb24gPSBFeGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUsIG5vZGUtPnNjYW4uc2NhbnJlbGlk LCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBp bmRleHN0YXRlOwogCiAJaW5kZXhzdGF0ZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uID0gY3VycmVu dFJlbGF0aW9uOwogCWluZGV4c3RhdGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7CS8q IG5vIGhlYXAgc2NhbiBoZXJlICovCkBAIC01NjUsNiArNTY4LDggQEAgRXhlY0luaXRJbmRleE9u bHlTY2FuKEluZGV4T25seVNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQog CS8qIE9wZW4gdGhlIGluZGV4IHJlbGF0aW9uLiAqLwogCWxvY2ttb2RlID0gZXhlY19ydF9mZXRj aChub2RlLT5zY2FuLnNjYW5yZWxpZCwgZXN0YXRlKS0+cmVsbG9ja21vZGU7CiAJaW5kZXhzdGF0 ZS0+aW9zc19SZWxhdGlvbkRlc2MgPSBpbmRleF9vcGVuKG5vZGUtPmluZGV4aWQsIGxvY2ttb2Rl KTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gaW5kZXhzdGF0 ZTsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSBpbmRleC1zcGVjaWZpYyBzY2FuIHN0YXRlCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKaW5kZXggNDU0MGM3NzgxZC4uNjI4YzIzMzkxOSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYwpAQCAtODA4LDcgKzgwOCw4IEBAIEV4 ZWNFbmRJbmRleFNjYW4oSW5kZXhTY2FuU3RhdGUgKm5vZGUpCiAJICovCiAJaWYgKG5vZGUtPnNz LnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKIAkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNf UmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVT bG90KTsKKwlpZiAobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUo bm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CiAKIAkvKgogCSAqIGNsb3NlIHRoZSBpbmRleCBy ZWxhdGlvbiAobm8tb3AgaWYgd2UgZGlkbid0IG9wZW4gaXQpCkBAIC05MjUsNiArOTI2LDggQEAg RXhlY0luaXRJbmRleFNjYW4oSW5kZXhTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVm bGFncykKIAkgKiBvcGVuIHRoZSBzY2FuIHJlbGF0aW9uCiAJICovCiAJY3VycmVudFJlbGF0aW9u ID0gRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLCBub2RlLT5zY2FuLnNjYW5yZWxpZCwgZWZs YWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gaW5kZXhz dGF0ZTsKIAogCWluZGV4c3RhdGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiA9IGN1cnJlbnRSZWxh dGlvbjsKIAlpbmRleHN0YXRlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPSBOVUxMOwkvKiBubyBo ZWFwIHNjYW4gaGVyZSAqLwpAQCAtOTcwLDYgKzk3Myw4IEBAIEV4ZWNJbml0SW5kZXhTY2FuKElu ZGV4U2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJLyogT3BlbiB0aGUg aW5kZXggcmVsYXRpb24uICovCiAJbG9ja21vZGUgPSBleGVjX3J0X2ZldGNoKG5vZGUtPnNjYW4u c2NhbnJlbGlkLCBlc3RhdGUpLT5yZWxsb2NrbW9kZTsKIAlpbmRleHN0YXRlLT5pc3NfUmVsYXRp b25EZXNjID0gaW5kZXhfb3Blbihub2RlLT5pbmRleGlkLCBsb2NrbW9kZSk7CisJaWYgKCFFeGVj UGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIGluZGV4c3RhdGU7CiAKIAkvKgogCSAq IEluaXRpYWxpemUgaW5kZXgtc3BlY2lmaWMgc2NhbiBzdGF0ZQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUxpbWl0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGlt aXQuYwppbmRleCA0MjVmYmZjNDA1Li4yZmNiZGU3NGVkIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlTGltaXQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGlt aXQuYwpAQCAtNDc2LDYgKzQ3Niw4IEBAIEV4ZWNJbml0TGltaXQoTGltaXQgKm5vZGUsIEVTdGF0 ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqLwogCW91dGVyUGxhbiA9IG91dGVyUGxhbihub2Rl KTsKIAlvdXRlclBsYW5TdGF0ZShsaW1pdHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4s IGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQly ZXR1cm4gbGltaXRzdGF0ZTsKIAogCS8qCiAJICogaW5pdGlhbGl6ZSBjaGlsZCBleHByZXNzaW9u cwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYwppbmRleCA0MDc0MTRmYzBjLi4zYThhYTJi NWE0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYwpAQCAtMzIzLDYgKzMyMyw4IEBA IEV4ZWNJbml0TG9ja1Jvd3MoTG9ja1Jvd3MgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZs YWdzKQogCSAqIHRoZW4gaW5pdGlhbGl6ZSBvdXRlciBwbGFuCiAJICovCiAJb3V0ZXJQbGFuU3Rh dGUobHJzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuLCBlc3RhdGUsIGVmbGFncyk7CisJ aWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIGxyc3RhdGU7CiAKIAkv KiBub2RlIHJldHVybnMgdW5tb2RpZmllZCBzbG90cyBmcm9tIHRoZSBvdXRlciBwbGFuICovCiAJ bHJzdGF0ZS0+cHMucmVzdWx0b3Bzc2V0ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVNYXRlcmlhbC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1hdGVy aWFsLmMKaW5kZXggMDk2MzI2NzhiMC4uZjE0NmViYjFkNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZU1hdGVyaWFsLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZU1hdGVyaWFsLmMKQEAgLTIxNCw2ICsyMTQsOCBAQCBFeGVjSW5pdE1hdGVyaWFsKE1hdGVyaWFs ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAogCW91dGVyUGxhbiA9IG91dGVy UGxhbihub2RlKTsKIAlvdXRlclBsYW5TdGF0ZShtYXRzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0 ZXJQbGFuLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRl KSkKKwkJcmV0dXJuIG1hdHN0YXRlOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHJlc3VsdCB0eXBl IGFuZCBzbG90LiBObyBuZWVkIHRvIGluaXRpYWxpemUgcHJvamVjdGlvbiBpbmZvCkBAIC0yNDIs NyArMjQ0LDggQEAgRXhlY0VuZE1hdGVyaWFsKE1hdGVyaWFsU3RhdGUgKm5vZGUpCiAJLyoKIAkg KiBjbGVhbiBvdXQgdGhlIHR1cGxlIHRhYmxlCiAJICovCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+ c3Muc3NfU2NhblR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpCisJ CUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwogCiAJLyoKIAkgKiBS ZWxlYXNlIHR1cGxlc3RvcmUgcmVzb3VyY2VzCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTWVtb2l6ZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYwpp bmRleCA0ZjA0MjY5ZTI2Li4zMDAzZWUxZTVjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTWVtb2l6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXpl LmMKQEAgLTkzOCw2ICs5MzgsOCBAQCBFeGVjSW5pdE1lbW9pemUoTWVtb2l6ZSAqbm9kZSwgRVN0 YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAKIAlvdXRlck5vZGUgPSBvdXRlclBsYW4obm9kZSk7 CiAJb3V0ZXJQbGFuU3RhdGUobXN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlck5vZGUsIGVzdGF0 ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4g bXN0YXRlOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHJldHVybiBzbG90IGFuZCB0eXBlLiBObyBu ZWVkIHRvIGluaXRpYWxpemUgcHJvamVjdGlvbiBpbmZvCkBAIC0xMDQzLDYgKzEwNDUsNyBAQCBF eGVjRW5kTWVtb2l6ZShNZW1vaXplU3RhdGUgKm5vZGUpCiB7CiAjaWZkZWYgVVNFX0FTU0VSVF9D SEVDS0lORwogCS8qIFZhbGlkYXRlIHRoZSBtZW1vcnkgYWNjb3VudGluZyBjb2RlIGlzIGNvcnJl Y3QgaW4gYXNzZXJ0IGJ1aWxkcy4gKi8KKwlpZiAobm9kZS0+aGFzaHRhYmxlKQogCXsKIAkJaW50 CQkJY291bnQ7CiAJCXVpbnQ2NAkJbWVtID0gMDsKQEAgLTEwODksMTEgKzEwOTIsMTQgQEAgRXhl Y0VuZE1lbW9pemUoTWVtb2l6ZVN0YXRlICpub2RlKQogCX0KIAogCS8qIFJlbW92ZSB0aGUgY2Fj aGUgY29udGV4dCAqLwotCU1lbW9yeUNvbnRleHREZWxldGUobm9kZS0+dGFibGVDb250ZXh0KTsK KwlpZiAobm9kZS0+dGFibGVDb250ZXh0KQorCQlNZW1vcnlDb250ZXh0RGVsZXRlKG5vZGUtPnRh YmxlQ29udGV4dCk7CiAKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90 KTsKKwlpZiAobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9k ZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CiAJLyogbXVzdCBkcm9wIHBvaW50ZXIgdG8gY2FjaGUg cmVzdWx0IHR1cGxlICovCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVw bGVTbG90KTsKKwlpZiAobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KQorCQlFeGVjQ2xl YXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwogCiAJLyoKIAkgKiBmcmVl IGV4cHJjb250ZXh0CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VB cHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCmluZGV4IDM5 OWIzOWM1OTguLjQwYmJhMzU0OTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVNZXJnZUFwcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVu ZC5jCkBAIC02NSw5ICs2NSwxMCBAQCBNZXJnZUFwcGVuZFN0YXRlICoKIEV4ZWNJbml0TWVyZ2VB cHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogewog CU1lcmdlQXBwZW5kU3RhdGUgKm1lcmdlc3RhdGUgPSBtYWtlTm9kZShNZXJnZUFwcGVuZFN0YXRl KTsKLQlQbGFuU3RhdGUgKiptZXJnZXBsYW5zdGF0ZXM7CisJUGxhblN0YXRlICoqbWVyZ2VwbGFu c3RhdGVzID0gTlVMTDsKIAlCaXRtYXBzZXQgICp2YWxpZHN1YnBsYW5zOwogCWludAkJCW5wbGFu czsKKwlpbnQJCQluaW5pdGVkID0gMDsKIAlpbnQJCQlpLAogCQkJCWo7CiAKQEAgLTgxLDYgKzgy LDE1IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0 YXRlLCBpbnQgZWZsYWdzKQogCW1lcmdlc3RhdGUtPnBzLnN0YXRlID0gZXN0YXRlOwogCW1lcmdl c3RhdGUtPnBzLkV4ZWNQcm9jTm9kZSA9IEV4ZWNNZXJnZUFwcGVuZDsKIAorCS8qCisJICogTG9j ayBub24tbGVhZiBwYXJ0aXRpb25zLiAgSW4gdGhlIHBydW5pbmcgY2FzZSwgc29tZSBvZiB0aGVz ZSBsb2NrcworCSAqIHdpbGwgYmUgcmV0YWtlbiB3aGVuIHRoZSBwYXJ0aXRpb24gd2lsbCBiZSBv cGVuZWQgZm9yIHBydW5pbmcsIGJ1dCBpdAorCSAqIGRvZXMgbm90IHNlZW0gd29ydGh3aGlsZSB0 byBzcGVuZCBjeWNsZXMgdG8gZmlsdGVyIHRob3NlIG91dCBoZXJlLgorCSAqLworCUV4ZWNMb2Nr QXBwZW5kTm9uTGVhZlJlbGF0aW9ucyhlc3RhdGUsIG5vZGUtPmFsbHBhcnRyZWxpZHMpOworCWlm ICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCWdvdG8gZWFybHlfZXhpdDsKKwogCS8q IElmIHJ1bi10aW1lIHBhcnRpdGlvbiBwcnVuaW5nIGlzIGVuYWJsZWQsIHRoZW4gc2V0IHRoYXQg dXAgbm93ICovCiAJaWYgKG5vZGUtPnBhcnRfcHJ1bmVfaW5kZXggPj0gMCkKIAl7CkBAIC05Niw2 ICsxMDYsOCBAQCBFeGVjSW5pdE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5kICpub2RlLCBFU3RhdGUg KmVzdGF0ZSwgaW50IGVmbGFncykKIAkJCQkJCQkJCQkJICBub2RlLT5wYXJ0X3BydW5lX2luZGV4 LAogCQkJCQkJCQkJCQkgIG5vZGUtPmFwcHJlbGlkcywKIAkJCQkJCQkJCQkJICAmdmFsaWRzdWJw bGFucyk7CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQlyZXR1cm4gbWVy Z2VzdGF0ZTsKIAkJbWVyZ2VzdGF0ZS0+bXNfcHJ1bmVfc3RhdGUgPSBwcnVuZXN0YXRlOwogCQlu cGxhbnMgPSBibXNfbnVtX21lbWJlcnModmFsaWRzdWJwbGFucyk7CiAKQEAgLTEyMiw4ICsxMzQs NiBAQCBFeGVjSW5pdE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0 ZSwgaW50IGVmbGFncykKIAl9CiAKIAltZXJnZXBsYW5zdGF0ZXMgPSAoUGxhblN0YXRlICoqKSBw YWxsb2MobnBsYW5zICogc2l6ZW9mKFBsYW5TdGF0ZSAqKSk7Ci0JbWVyZ2VzdGF0ZS0+bWVyZ2Vw bGFucyA9IG1lcmdlcGxhbnN0YXRlczsKLQltZXJnZXN0YXRlLT5tc19ucGxhbnMgPSBucGxhbnM7 CiAKIAltZXJnZXN0YXRlLT5tc19zbG90cyA9IChUdXBsZVRhYmxlU2xvdCAqKikgcGFsbG9jMChz aXplb2YoVHVwbGVUYWJsZVNsb3QgKikgKiBucGxhbnMpOwogCW1lcmdlc3RhdGUtPm1zX2hlYXAg PSBiaW5hcnloZWFwX2FsbG9jYXRlKG5wbGFucywgaGVhcF9jb21wYXJlX3Nsb3RzLApAQCAtMTUy LDYgKzE2Miw5IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0 ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQlQbGFuCSAgICppbml0Tm9kZSA9IChQbGFuICopIGxp c3RfbnRoKG5vZGUtPm1lcmdlcGxhbnMsIGkpOwogCiAJCW1lcmdlcGxhbnN0YXRlc1tqKytdID0g RXhlY0luaXROb2RlKGluaXROb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJCW5pbml0ZWQrKzsKKwkJ aWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCWdvdG8gZWFybHlfZXhpdDsKIAl9 CiAKIAltZXJnZXN0YXRlLT5wcy5wc19Qcm9qSW5mbyA9IE5VTEw7CkBAIC0xODgsNiArMjAxLDEw IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRl LCBpbnQgZWZsYWdzKQogCSAqLwogCW1lcmdlc3RhdGUtPm1zX2luaXRpYWxpemVkID0gZmFsc2U7 CiAKK2Vhcmx5X2V4aXQ6CisJbWVyZ2VzdGF0ZS0+bWVyZ2VwbGFucyA9IG1lcmdlcGxhbnN0YXRl czsKKwltZXJnZXN0YXRlLT5tc19ucGxhbnMgPSBuaW5pdGVkOworCiAJcmV0dXJuIG1lcmdlc3Rh dGU7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4u YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYwppbmRleCA4MDlhYTIxNWM2 Li45NjhiZTA1NTY4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vq b2luLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jCkBAIC0xNDgy LDExICsxNDgyLDE1IEBAIEV4ZWNJbml0TWVyZ2VKb2luKE1lcmdlSm9pbiAqbm9kZSwgRVN0YXRl ICplc3RhdGUsIGludCBlZmxhZ3MpCiAJbWVyZ2VzdGF0ZS0+bWpfU2tpcE1hcmtSZXN0b3JlID0g bm9kZS0+c2tpcF9tYXJrX3Jlc3RvcmU7CiAKIAlvdXRlclBsYW5TdGF0ZShtZXJnZXN0YXRlKSA9 IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4 ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gbWVyZ2VzdGF0ZTsKIAlvdXRlckRl c2MgPSBFeGVjR2V0UmVzdWx0VHlwZShvdXRlclBsYW5TdGF0ZShtZXJnZXN0YXRlKSk7CiAJaW5u ZXJQbGFuU3RhdGUobWVyZ2VzdGF0ZSkgPSBFeGVjSW5pdE5vZGUoaW5uZXJQbGFuKG5vZGUpLCBl c3RhdGUsCiAJCQkJCQkJCQkJCSAgbWVyZ2VzdGF0ZS0+bWpfU2tpcE1hcmtSZXN0b3JlID8KIAkJ CQkJCQkJCQkJICBlZmxhZ3MgOgogCQkJCQkJCQkJCQkgIChlZmxhZ3MgfCBFWEVDX0ZMQUdfTUFS SykpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBtZXJnZXN0 YXRlOwogCWlubmVyRGVzYyA9IEV4ZWNHZXRSZXN1bHRUeXBlKGlubmVyUGxhblN0YXRlKG1lcmdl c3RhdGUpKTsKIAogCS8qCkBAIC0xNjQyLDggKzE2NDYsMTAgQEAgRXhlY0VuZE1lcmdlSm9pbihN ZXJnZUpvaW5TdGF0ZSAqbm9kZSkKIAkvKgogCSAqIGNsZWFuIG91dCB0aGUgdHVwbGUgdGFibGUK IAkgKi8KLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5qcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwot CUV4ZWNDbGVhclR1cGxlKG5vZGUtPm1qX01hcmtlZFR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPmpz LnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+anMucHMucHNf UmVzdWx0VHVwbGVTbG90KTsKKwlpZiAobm9kZS0+bWpfTWFya2VkVHVwbGVTbG90KQorCQlFeGVj Q2xlYXJUdXBsZShub2RlLT5tal9NYXJrZWRUdXBsZVNsb3QpOwogCiAJLyoKIAkgKiBzaHV0IGRv d24gdGhlIHN1YnBsYW5zCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9k aWZ5VGFibGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCmluZGV4 IGUzNTAzNzU2ODEuLjhhNzA1NDMzMjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVNb2RpZnlUYWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlU YWJsZS5jCkBAIC0zOTAwLDYgKzM5MDAsNyBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRh YmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlQbGFuCSAgICpzdWJwbGFu ID0gb3V0ZXJQbGFuKG5vZGUpOwogCUNtZFR5cGUJCW9wZXJhdGlvbiA9IG5vZGUtPm9wZXJhdGlv bjsKIAlpbnQJCQlucmVscyA9IGxpc3RfbGVuZ3RoKG5vZGUtPnJlc3VsdFJlbGF0aW9ucyk7CisJ aW50CQkJbmluaXRlZCA9IDA7CiAJUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbzsKIAlMaXN0 CSAgICphcm93bWFya3M7CiAJTGlzdENlbGwgICAqbDsKQEAgLTM5MjEsNyArMzkyMiw2IEBAIEV4 ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQg ZWZsYWdzKQogCW10c3RhdGUtPmNhblNldFRhZyA9IG5vZGUtPmNhblNldFRhZzsKIAltdHN0YXRl LT5tdF9kb25lID0gZmFsc2U7CiAKLQltdHN0YXRlLT5tdF9ucmVscyA9IG5yZWxzOwogCW10c3Rh dGUtPnJlc3VsdFJlbEluZm8gPSAoUmVzdWx0UmVsSW5mbyAqKQogCQlwYWxsb2MobnJlbHMgKiBz aXplb2YoUmVzdWx0UmVsSW5mbykpOwogCkBAIC0zOTU2LDYgKzM5NTYsOSBAQCBFeGVjSW5pdE1v ZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykK IAkJCQkJCQkgICBsaW5pdGlhbF9pbnQobm9kZS0+cmVzdWx0UmVsYXRpb25zKSk7CiAJfQogCisJ aWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJZ290byBlYXJseV9leGl0OworCiAJ Lyogc2V0IHVwIGVwcXN0YXRlIHdpdGggZHVtbXkgc3VicGxhbiBkYXRhIGZvciB0aGUgbW9tZW50 ICovCiAJRXZhbFBsYW5RdWFsSW5pdCgmbXRzdGF0ZS0+bXRfZXBxc3RhdGUsIGVzdGF0ZSwgTlVM TCwgTklMLCBub2RlLT5lcHFQYXJhbSk7CiAJbXRzdGF0ZS0+ZmlyZUJTVHJpZ2dlcnMgPSB0cnVl OwpAQCAtMzk4Miw2ICszOTg1LDggQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAq bm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCWlmIChyZXN1bHRSZWxJbmZvICE9 IG10c3RhdGUtPnJvb3RSZXN1bHRSZWxJbmZvKQogCQl7CiAJCQlFeGVjSW5pdFJlc3VsdFJlbGF0 aW9uKGVzdGF0ZSwgcmVzdWx0UmVsSW5mbywgcmVzdWx0UmVsYXRpb24pOworCQkJaWYgKCFFeGVj UGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCQlnb3RvIGVhcmx5X2V4aXQ7CiAKIAkJCS8qCiAJ CQkgKiBGb3IgY2hpbGQgcmVzdWx0IHJlbGF0aW9ucywgc3RvcmUgdGhlIHJvb3QgcmVzdWx0IHJl bGF0aW9uCkBAIC00MDA5LDExICs0MDE0LDEzIEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5 VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIE5vdyB3ZSBtYXkg aW5pdGlhbGl6ZSB0aGUgc3VicGxhbi4KIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShtdHN0YXRlKSA9 IEV4ZWNJbml0Tm9kZShzdWJwbGFuLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0 aWxsVmFsaWQoZXN0YXRlKSkKKwkJZ290byBlYXJseV9leGl0OwogCiAJLyoKIAkgKiBEbyBhZGRp dGlvbmFsIHBlci1yZXN1bHQtcmVsYXRpb24gaW5pdGlhbGl6YXRpb24uCiAJICovCi0JZm9yIChp ID0gMDsgaSA8IG5yZWxzOyBpKyspCisJZm9yIChpID0gMDsgaSA8IG5yZWxzOyBpKyssIG5pbml0 ZWQrKykKIAl7CiAJCXJlc3VsdFJlbEluZm8gPSAmbXRzdGF0ZS0+cmVzdWx0UmVsSW5mb1tpXTsK IApAQCAtNDM2Miw2ICs0MzY5LDggQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAq bm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCWVzdGF0ZS0+ZXNfYXV4bW9kaWZ5 dGFibGVzID0gbGNvbnMobXRzdGF0ZSwKIAkJCQkJCQkJCQkgICBlc3RhdGUtPmVzX2F1eG1vZGlm eXRhYmxlcyk7CiAKK2Vhcmx5X2V4aXQ6CisJbXRzdGF0ZS0+bXRfbnJlbHMgPSBuaW5pdGVkOwog CXJldHVybiBtdHN0YXRlOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTmFtZWR0dXBsZXN0b3Jlc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5hbWVk dHVwbGVzdG9yZXNjYW4uYwppbmRleCA0NjgzMmFkODJmLi4xZjkyYzQzZDNiIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmFtZWR0dXBsZXN0b3Jlc2Nhbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOYW1lZHR1cGxlc3RvcmVzY2FuLmMKQEAgLTE3NCw3ICsx NzQsOCBAQCBFeGVjRW5kTmFtZWRUdXBsZXN0b3JlU2NhbihOYW1lZFR1cGxlc3RvcmVTY2FuU3Rh dGUgKm5vZGUpCiAJICovCiAJaWYgKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKIAkJ RXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xl YXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKKwlpZiAobm9kZS0+c3Muc3NfU2Nh blR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7 CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVO ZXN0bG9vcC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMKaW5kZXggYjNk NTJlNjllYy4uZGVkYTBjMjU1OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZU5lc3Rsb29wLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMKQEAg LTI5NSwxMSArMjk1LDE1IEBAIEV4ZWNJbml0TmVzdExvb3AoTmVzdExvb3AgKm5vZGUsIEVTdGF0 ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIHZhbHVlcy4KIAkgKi8KIAlvdXRlclBsYW5TdGF0 ZShubHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdz KTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gbmxzdGF0ZTsK IAlpZiAobm9kZS0+bmVzdFBhcmFtcyA9PSBOSUwpCiAJCWVmbGFncyB8PSBFWEVDX0ZMQUdfUkVX SU5EOwogCWVsc2UKIAkJZWZsYWdzICY9IH5FWEVDX0ZMQUdfUkVXSU5EOwogCWlubmVyUGxhblN0 YXRlKG5sc3RhdGUpID0gRXhlY0luaXROb2RlKGlubmVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxh Z3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBubHN0YXRl OwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHJlc3VsdCBzbG90LCB0eXBlIGFuZCBwcm9qZWN0aW9u LgpAQCAtMzcyLDcgKzM3Niw4IEBAIEV4ZWNFbmROZXN0TG9vcChOZXN0TG9vcFN0YXRlICpub2Rl KQogCS8qCiAJICogY2xlYW4gb3V0IHRoZSB0dXBsZSB0YWJsZQogCSAqLwotCUV4ZWNDbGVhclR1 cGxlKG5vZGUtPmpzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPmpzLnBzLnBz X1Jlc3VsdFR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+anMucHMucHNfUmVzdWx0 VHVwbGVTbG90KTsKIAogCS8qCiAJICogY2xvc2UgZG93biBzdWJwbGFucwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVQcm9qZWN0U2V0LmMKaW5kZXggZjZmZjNkYzQ0Yy4uODVkMjBjNDY4MCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jCkBAIC0yNDcsNiArMjQ3LDggQEAgRXhlY0lu aXRQcm9qZWN0U2V0KFByb2plY3RTZXQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KQogCSAqIGluaXRpYWxpemUgY2hpbGQgbm9kZXMKIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShzdGF0 ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYg KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIHN0YXRlOwogCiAJLyoKIAkg KiB3ZSBkb24ndCB1c2UgaW5uZXIgcGxhbgpAQCAtMzI4LDcgKzMzMCw4IEBAIEV4ZWNFbmRQcm9q ZWN0U2V0KFByb2plY3RTZXRTdGF0ZSAqbm9kZSkKIAkvKgogCSAqIGNsZWFuIG91dCB0aGUgdHVw bGUgdGFibGUKIAkgKi8KLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5wcy5wc19SZXN1bHRUdXBsZVNs b3QpOworCWlmIChub2RlLT5wcy5wc19SZXN1bHRUdXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxl KG5vZGUtPnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7CiAKIAkvKgogCSAqIHNodXQgZG93biBzdWJw bGFucwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9u LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uYwppbmRleCBlNzgx MDAzOTM0Li45NjdmZTRmMjg3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl UmVjdXJzaXZldW5pb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZl dW5pb24uYwpAQCAtMjQ0LDcgKzI0NCwxMSBAQCBFeGVjSW5pdFJlY3Vyc2l2ZVVuaW9uKFJlY3Vy c2l2ZVVuaW9uICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBpbml0aWFs aXplIGNoaWxkIG5vZGVzCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUocnVzdGF0ZSkgPSBFeGVjSW5p dE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0 aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIHJ1c3RhdGU7CiAJaW5uZXJQbGFuU3RhdGUocnVz dGF0ZSkgPSBFeGVjSW5pdE5vZGUoaW5uZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJ aWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIHJ1c3RhdGU7CiAKIAkv KgogCSAqIElmIGhhc2hpbmcsIHByZWNvbXB1dGUgZm1nciBsb29rdXAgZGF0YSBmb3IgaW5uZXIg bG9vcCwgYW5kIGNyZWF0ZSB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVSZXN1bHQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYwppbmRleCA0MjE5 NzEyZDMwLi5jNTQ5YjY4NGEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl UmVzdWx0LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jCkBAIC0yMDgs NiArMjA4LDggQEAgRXhlY0luaXRSZXN1bHQoUmVzdWx0ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncykKIAkgKiBpbml0aWFsaXplIGNoaWxkIG5vZGVzCiAJICovCiAJb3V0ZXJQbGFu U3RhdGUocmVzc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBl ZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiByZXNz dGF0ZTsKIAogCS8qCiAJICogd2UgZG9uJ3QgdXNlIGlubmVyIHBsYW4KQEAgLTI0OCw3ICsyNTAs OCBAQCBFeGVjRW5kUmVzdWx0KFJlc3VsdFN0YXRlICpub2RlKQogCS8qCiAJICogY2xlYW4gb3V0 IHRoZSB0dXBsZSB0YWJsZQogCSAqLwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnBzLnBzX1Jlc3Vs dFR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKKwkJRXhlY0Ns ZWFyVHVwbGUobm9kZS0+cHMucHNfUmVzdWx0VHVwbGVTbG90KTsKIAogCS8qCiAJICogc2h1dCBk b3duIHN1YnBsYW5zCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2FtcGxl c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNhbXBsZXNjYW4uYwppbmRleCBkN2Uy MmIxZGJiLi5iM2JjOWIxZjc3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl U2FtcGxlc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTYW1wbGVzY2FuLmMK QEAgLTEyNSw2ICsxMjUsOCBAQCBFeGVjSW5pdFNhbXBsZVNjYW4oU2FtcGxlU2NhbiAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCUV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0 ZSwKIAkJCQkJCQkgbm9kZS0+c2Nhbi5zY2FucmVsaWQsCiAJCQkJCQkJIGVmbGFncyk7CisJaWYg KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIHNjYW5zdGF0ZTsKIAogCS8q IHdlIHdvbid0IHNldCB1cCB0aGUgSGVhcFNjYW5EZXNjIHRpbGwgbGF0ZXIgKi8KIAlzY2Fuc3Rh dGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7CkBAIC0xOTgsNyArMjAwLDggQEAgRXhl Y0VuZFNhbXBsZVNjYW4oU2FtcGxlU2NhblN0YXRlICpub2RlKQogCSAqLwogCWlmIChub2RlLT5z cy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpCiAJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBz X1Jlc3VsdFR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxl U2xvdCk7CisJaWYgKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxl KG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwogCiAJLyoKIAkgKiBjbG9zZSBoZWFwIHNjYW4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCmluZGV4IDRkYTBmMjhmN2IuLmU3Y2ExOWVlNGUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwpAQCAtMTUzLDYgKzE1Myw4IEBAIEV4ZWNJ bml0U2VxU2NhbihTZXFTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJ RXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLAogCQkJCQkJCSBub2RlLT5zY2FuLnNjYW5yZWxp ZCwKIAkJCQkJCQkgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQor CQlyZXR1cm4gc2NhbnN0YXRlOwogCiAJLyogYW5kIGNyZWF0ZSBzbG90IHdpdGggdGhlIGFwcHJv cHJpYXRlIHJvd3R5cGUgKi8KIAlFeGVjSW5pdFNjYW5UdXBsZVNsb3QoZXN0YXRlLCAmc2NhbnN0 YXRlLT5zcywKQEAgLTIwMCw3ICsyMDIsOCBAQCBFeGVjRW5kU2VxU2NhbihTZXFTY2FuU3RhdGUg Km5vZGUpCiAJICovCiAJaWYgKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKIAkJRXhl Y0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJU dXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKKwlpZiAobm9kZS0+c3Muc3NfU2NhblR1 cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CiAK IAkvKgogCSAqIGNsb3NlIGhlYXAgc2NhbgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVNldE9wLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYwppbmRleCA0 YmMyNDA2Yjg5Li45NTk1MGE1YzIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlU2V0T3AuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYwpAQCAtNTI4 LDYgKzUyOCw4IEBAIEV4ZWNJbml0U2V0T3AoU2V0T3AgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBp bnQgZWZsYWdzKQogCWlmIChub2RlLT5zdHJhdGVneSA9PSBTRVRPUF9IQVNIRUQpCiAJCWVmbGFn cyAmPSB+RVhFQ19GTEFHX1JFV0lORDsKIAlvdXRlclBsYW5TdGF0ZShzZXRvcHN0YXRlKSA9IEV4 ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQ bGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gc2V0b3BzdGF0ZTsKIAlvdXRlckRlc2Mg PSBFeGVjR2V0UmVzdWx0VHlwZShvdXRlclBsYW5TdGF0ZShzZXRvcHN0YXRlKSk7CiAKIAkvKgpA QCAtNTgzLDcgKzU4NSw4IEBAIHZvaWQKIEV4ZWNFbmRTZXRPcChTZXRPcFN0YXRlICpub2RlKQog ewogCS8qIGNsZWFuIHVwIHR1cGxlIHRhYmxlICovCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+cHMu cHNfUmVzdWx0VHVwbGVTbG90KTsKKwlpZiAobm9kZS0+cHMucHNfUmVzdWx0VHVwbGVTbG90KQor CQlFeGVjQ2xlYXJUdXBsZShub2RlLT5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwogCiAJLyogZnJl ZSBzdWJzaWRpYXJ5IHN0dWZmIGluY2x1ZGluZyBoYXNodGFibGUgKi8KIAlpZiAobm9kZS0+dGFi bGVDb250ZXh0KQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMKaW5kZXggYzZjNzJjNmU2Ny4uODlmZWY4 NmFiYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlU29ydC5jCkBAIC0yNjMsNiArMjYzLDggQEAgRXhlY0lu aXRTb3J0KFNvcnQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWVmbGFncyAm PSB+KEVYRUNfRkxBR19SRVdJTkQgfCBFWEVDX0ZMQUdfQkFDS1dBUkQgfCBFWEVDX0ZMQUdfTUFS Syk7CiAKIAlvdXRlclBsYW5TdGF0ZShzb3J0c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxh bihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0 ZSkpCisJCXJldHVybiBzb3J0c3RhdGU7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgc2NhbiBzbG90 IGFuZCB0eXBlLgpAQCAtMzA2LDkgKzMwOCwxMSBAQCBFeGVjRW5kU29ydChTb3J0U3RhdGUgKm5v ZGUpCiAJLyoKIAkgKiBjbGVhbiBvdXQgdGhlIHR1cGxlIHRhYmxlCiAJICovCi0JRXhlY0NsZWFy VHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPnNzLnNzX1NjYW5U dXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwog CS8qIG11c3QgZHJvcCBwb2ludGVyIHRvIHNvcnQgcmVzdWx0IHR1cGxlICovCi0JRXhlY0NsZWFy VHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKKwlpZiAobm9kZS0+c3MucHMu cHNfUmVzdWx0VHVwbGVTbG90KQorCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1 bHRUdXBsZVNsb3QpOwogCiAJLyoKIAkgKiBSZWxlYXNlIHR1cGxlc29ydCByZXNvdXJjZXMKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYwppbmRleCA0MjQ3MWJmYzA0Li45Yjhj ZGRjODlmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2Fu LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5jCkBAIC0xMjQs NiArMTI0LDggQEAgRXhlY0luaXRTdWJxdWVyeVNjYW4oU3VicXVlcnlTY2FuICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBpbml0aWFsaXplIHN1YnF1ZXJ5CiAJICovCiAJ c3VicXVlcnlzdGF0ZS0+c3VicGxhbiA9IEV4ZWNJbml0Tm9kZShub2RlLT5zdWJwbGFuLCBlc3Rh dGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJu IHN1YnF1ZXJ5c3RhdGU7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgc2NhbiBzbG90IGFuZCB0eXBl IChuZWVkZWQgYnkgRXhlY0Fzc2lnblNjYW5Qcm9qZWN0aW9uSW5mbykKQEAgLTE3Nyw3ICsxNzks OCBAQCBFeGVjRW5kU3VicXVlcnlTY2FuKFN1YnF1ZXJ5U2NhblN0YXRlICpub2RlKQogCSAqLwog CWlmIChub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpCiAJCUV4ZWNDbGVhclR1cGxlKG5v ZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Mu c3NfU2NhblR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpCisJCUV4 ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwogCiAJLyoKIAkgKiBjbG9z ZSBkb3duIHN1YnF1ZXJ5CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGFi bGVGdW5jc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRhYmxlRnVuY3NjYW4uYwpp bmRleCAwYzZjOTEyNzc4Li5kNzUzNjk1M2YxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVU YWJsZUZ1bmNzY2FuLmMKQEAgLTIyMyw3ICsyMjMsOCBAQCBFeGVjRW5kVGFibGVGdW5jU2NhbihU YWJsZUZ1bmNTY2FuU3RhdGUgKm5vZGUpCiAJICovCiAJaWYgKG5vZGUtPnNzLnBzLnBzX1Jlc3Vs dFR1cGxlU2xvdCkKIAkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVT bG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKKwlpZiAo bm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3Nf U2NhblR1cGxlU2xvdCk7CiAKIAkvKgogCSAqIFJlbGVhc2UgdHVwbGVzdG9yZSByZXNvdXJjZXMK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYwppbmRleCAyMTI0YzU1ZWY1Li4x YWU0NTFkN2E2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2Vz Y2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jCkBAIC0z NDIsNyArMzQyLDggQEAgRXhlY0VuZFRpZFJhbmdlU2NhbihUaWRSYW5nZVNjYW5TdGF0ZSAqbm9k ZSkKIAkgKi8KIAlpZiAobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KQogCQlFeGVjQ2xl YXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwotCUV4ZWNDbGVhclR1cGxl KG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOworCWlmIChub2RlLT5zcy5zc19TY2FuVHVwbGVT bG90KQorCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKIH0KIAog LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQpAQCAtMzg2LDYgKzM4Nyw4IEBAIEV4ZWNJbml0VGlkUmFuZ2VTY2FuKFRpZFJh bmdlU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogb3BlbiB0aGUg c2NhbiByZWxhdGlvbgogCSAqLwogCWN1cnJlbnRSZWxhdGlvbiA9IEV4ZWNPcGVuU2NhblJlbGF0 aW9uKGVzdGF0ZSwgbm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxh blN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIHRpZHJhbmdlc3RhdGU7CiAKIAl0aWRyYW5n ZXN0YXRlLT5zcy5zc19jdXJyZW50UmVsYXRpb24gPSBjdXJyZW50UmVsYXRpb247CiAJdGlkcmFu Z2VzdGF0ZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0gTlVMTDsJLyogbm8gdGFibGUgc2NhbiBo ZXJlICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYwppbmRleCA4NjJiZDAzMzBiLi45ZmU3 NmIxYzYwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2FuLmMKQEAgLTQ4Myw3ICs0ODMsOCBA QCBFeGVjRW5kVGlkU2NhbihUaWRTY2FuU3RhdGUgKm5vZGUpCiAJICovCiAJaWYgKG5vZGUtPnNz LnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKIAkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNf UmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVT bG90KTsKKwlpZiAobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUo bm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTUyOSw2ICs1 MzAsOCBAQCBFeGVjSW5pdFRpZFNjYW4oVGlkU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZ3MpCiAJICogb3BlbiB0aGUgc2NhbiByZWxhdGlvbgogCSAqLwogCWN1cnJlbnRSZWxh dGlvbiA9IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwgbm9kZS0+c2Nhbi5zY2FucmVsaWQs IGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIHRp ZHN0YXRlOwogCiAJdGlkc3RhdGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiA9IGN1cnJlbnRSZWxh dGlvbjsKIAl0aWRzdGF0ZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0gTlVMTDsgLyogbm8gaGVh cCBzY2FuIGhlcmUgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlx dWUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUuYwppbmRleCA0NTAzNWQ3NGZh Li42OWYyM2IwMmM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVl LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jCkBAIC0xMzYsNiArMTM2 LDggQEAgRXhlY0luaXRVbmlxdWUoVW5pcXVlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVm bGFncykKIAkgKiB0aGVuIGluaXRpYWxpemUgb3V0ZXIgcGxhbgogCSAqLwogCW91dGVyUGxhblN0 YXRlKHVuaXF1ZXN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwg ZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gdW5p cXVlc3RhdGU7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgcmVzdWx0IHNsb3QgYW5kIHR5cGUuIFVu aXF1ZSBub2RlcyBkbyBubyBwcm9qZWN0aW9ucywgc28KQEAgLTE2OSw3ICsxNzEsOCBAQCB2b2lk CiBFeGVjRW5kVW5pcXVlKFVuaXF1ZVN0YXRlICpub2RlKQogewogCS8qIGNsZWFuIHVwIHR1cGxl IHRhYmxlICovCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+cHMucHNfUmVzdWx0VHVwbGVTbG90KTsK KwlpZiAobm9kZS0+cHMucHNfUmVzdWx0VHVwbGVTbG90KQorCQlFeGVjQ2xlYXJUdXBsZShub2Rl LT5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwogCiAJRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+ cHMpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVmFsdWVzc2Nhbi5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVZhbHVlc3NjYW4uYwppbmRleCAzMmFjZTYzMDE3 Li5mNWRlZGJhYjYzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVmFsdWVz c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVWYWx1ZXNzY2FuLmMKQEAgLTM0 MCw3ICszNDAsOCBAQCBFeGVjRW5kVmFsdWVzU2NhbihWYWx1ZXNTY2FuU3RhdGUgKm5vZGUpCiAJ ICovCiAJaWYgKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKIAkJRXhlY0NsZWFyVHVw bGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2Rl LT5zcy5zc19TY2FuVHVwbGVTbG90KTsKKwlpZiAobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCkK KwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CiB9CiAKIC8qIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYwppbmRleCA3YzA3ZmIwNjg0Li42 MTZiYjk3Njc1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdn LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCkBAIC0xMzM0LDcg KzEzMzQsNyBAQCByZWxlYXNlX3BhcnRpdGlvbihXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUpCiAJ CVdpbmRvd1N0YXRlUGVyRnVuYyBwZXJmdW5jc3RhdGUgPSAmKHdpbnN0YXRlLT5wZXJmdW5jW2ld KTsKIAogCQkvKiBSZWxlYXNlIGFueSBwYXJ0aXRpb24tbG9jYWwgc3RhdGUgb2YgdGhpcyB3aW5k b3cgZnVuY3Rpb24gKi8KLQkJaWYgKHBlcmZ1bmNzdGF0ZS0+d2lub2JqKQorCQlpZiAocGVyZnVu Y3N0YXRlICYmIHBlcmZ1bmNzdGF0ZS0+d2lub2JqKQogCQkJcGVyZnVuY3N0YXRlLT53aW5vYmot PmxvY2FsbWVtID0gTlVMTDsKIAl9CiAKQEAgLTEzNDQsMTIgKzEzNDQsMTcgQEAgcmVsZWFzZV9w YXJ0aXRpb24oV2luZG93QWdnU3RhdGUgKndpbnN0YXRlKQogCSAqIGFueSBhZ2dyZWdhdGUgdGVt cCBkYXRhKS4gIFdlIGRvbid0IHJlbHkgb24gcmV0YWlsIHBmcmVlIGJlY2F1c2Ugc29tZQogCSAq IGFnZ3JlZ2F0ZXMgbWlnaHQgaGF2ZSBhbGxvY2F0ZWQgZGF0YSB3ZSBkb24ndCBoYXZlIGRpcmVj dCBwb2ludGVycyB0by4KIAkgKi8KLQlNZW1vcnlDb250ZXh0UmVzZXRBbmREZWxldGVDaGlsZHJl bih3aW5zdGF0ZS0+cGFydGNvbnRleHQpOwotCU1lbW9yeUNvbnRleHRSZXNldEFuZERlbGV0ZUNo aWxkcmVuKHdpbnN0YXRlLT5hZ2djb250ZXh0KTsKLQlmb3IgKGkgPSAwOyBpIDwgd2luc3RhdGUt Pm51bWFnZ3M7IGkrKykKKwlpZiAod2luc3RhdGUtPnBhcnRjb250ZXh0KQorCQlNZW1vcnlDb250 ZXh0UmVzZXRBbmREZWxldGVDaGlsZHJlbih3aW5zdGF0ZS0+cGFydGNvbnRleHQpOworCWlmICh3 aW5zdGF0ZS0+YWdnY29udGV4dCkKKwkJTWVtb3J5Q29udGV4dFJlc2V0QW5kRGVsZXRlQ2hpbGRy ZW4od2luc3RhdGUtPmFnZ2NvbnRleHQpOworCWlmICh3aW5zdGF0ZS0+cGVyYWdnKQogCXsKLQkJ aWYgKHdpbnN0YXRlLT5wZXJhZ2dbaV0uYWdnY29udGV4dCAhPSB3aW5zdGF0ZS0+YWdnY29udGV4 dCkKLQkJCU1lbW9yeUNvbnRleHRSZXNldEFuZERlbGV0ZUNoaWxkcmVuKHdpbnN0YXRlLT5wZXJh Z2dbaV0uYWdnY29udGV4dCk7CisJCWZvciAoaSA9IDA7IGkgPCB3aW5zdGF0ZS0+bnVtYWdnczsg aSsrKQorCQl7CisJCQlpZiAod2luc3RhdGUtPnBlcmFnZ1tpXS5hZ2djb250ZXh0ICE9IHdpbnN0 YXRlLT5hZ2djb250ZXh0KQorCQkJCU1lbW9yeUNvbnRleHRSZXNldEFuZERlbGV0ZUNoaWxkcmVu KHdpbnN0YXRlLT5wZXJhZ2dbaV0uYWdnY29udGV4dCk7CisJCX0KIAl9CiAKIAlpZiAod2luc3Rh dGUtPmJ1ZmZlcikKQEAgLTI0NTEsNiArMjQ1Niw4IEBAIEV4ZWNJbml0V2luZG93QWdnKFdpbmRv d0FnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICovCiAJb3V0ZXJQbGFu ID0gb3V0ZXJQbGFuKG5vZGUpOwogCW91dGVyUGxhblN0YXRlKHdpbnN0YXRlKSA9IEV4ZWNJbml0 Tm9kZShvdXRlclBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxp ZChlc3RhdGUpKQorCQlyZXR1cm4gd2luc3RhdGU7CiAKIAkvKgogCSAqIGluaXRpYWxpemUgc291 cmNlIHR1cGxlIHR5cGUgKHdoaWNoIGlzIGFsc28gdGhlIHR1cGxlIHR5cGUgdGhhdCB3ZSdsbApA QCAtMjY3OSwxMSArMjY4NiwxNiBAQCBFeGVjRW5kV2luZG93QWdnKFdpbmRvd0FnZ1N0YXRlICpu b2RlKQogCiAJcmVsZWFzZV9wYXJ0aXRpb24obm9kZSk7CiAKLQlFeGVjQ2xlYXJUdXBsZShub2Rl LT5zcy5zc19TY2FuVHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5maXJzdF9wYXJ0 X3Nsb3QpOwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPmFnZ19yb3dfc2xvdCk7Ci0JRXhlY0NsZWFy VHVwbGUobm9kZS0+dGVtcF9zbG90XzEpOwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnRlbXBfc2xv dF8yKTsKKwlpZiAobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUo bm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPmZpcnN0X3BhcnRfc2xvdCkK KwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+Zmlyc3RfcGFydF9zbG90KTsKKwlpZiAobm9kZS0+YWdn X3Jvd19zbG90KQorCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5hZ2dfcm93X3Nsb3QpOworCWlmIChu b2RlLT50ZW1wX3Nsb3RfMSkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+dGVtcF9zbG90XzEpOwor CWlmIChub2RlLT50ZW1wX3Nsb3RfMikKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+dGVtcF9zbG90 XzIpOwogCWlmIChub2RlLT5mcmFtZWhlYWRfc2xvdCkKIAkJRXhlY0NsZWFyVHVwbGUobm9kZS0+ ZnJhbWVoZWFkX3Nsb3QpOwogCWlmIChub2RlLT5mcmFtZXRhaWxfc2xvdCkKQEAgLTI2OTYsMTYg KzI3MDgsMjMgQEAgRXhlY0VuZFdpbmRvd0FnZyhXaW5kb3dBZ2dTdGF0ZSAqbm9kZSkKIAlub2Rl LT5zcy5wcy5wc19FeHByQ29udGV4dCA9IG5vZGUtPnRtcGNvbnRleHQ7CiAJRXhlY0ZyZWVFeHBy Q29udGV4dCgmbm9kZS0+c3MucHMpOwogCi0JZm9yIChpID0gMDsgaSA8IG5vZGUtPm51bWFnZ3M7 IGkrKykKKwlpZiAobm9kZS0+cGVyYWdnKQogCXsKLQkJaWYgKG5vZGUtPnBlcmFnZ1tpXS5hZ2dj b250ZXh0ICE9IG5vZGUtPmFnZ2NvbnRleHQpCi0JCQlNZW1vcnlDb250ZXh0RGVsZXRlKG5vZGUt PnBlcmFnZ1tpXS5hZ2djb250ZXh0KTsKKwkJZm9yIChpID0gMDsgaSA8IG5vZGUtPm51bWFnZ3M7 IGkrKykKKwkJeworCQkJaWYgKG5vZGUtPnBlcmFnZ1tpXS5hZ2djb250ZXh0ICE9IG5vZGUtPmFn Z2NvbnRleHQpCisJCQkJTWVtb3J5Q29udGV4dERlbGV0ZShub2RlLT5wZXJhZ2dbaV0uYWdnY29u dGV4dCk7CisJCX0KIAl9Ci0JTWVtb3J5Q29udGV4dERlbGV0ZShub2RlLT5wYXJ0Y29udGV4dCk7 Ci0JTWVtb3J5Q29udGV4dERlbGV0ZShub2RlLT5hZ2djb250ZXh0KTsKKwlpZiAobm9kZS0+cGFy dGNvbnRleHQpCisJCU1lbW9yeUNvbnRleHREZWxldGUobm9kZS0+cGFydGNvbnRleHQpOworCWlm IChub2RlLT5hZ2djb250ZXh0KQorCQlNZW1vcnlDb250ZXh0RGVsZXRlKG5vZGUtPmFnZ2NvbnRl eHQpOwogCi0JcGZyZWUobm9kZS0+cGVyZnVuYyk7Ci0JcGZyZWUobm9kZS0+cGVyYWdnKTsKKwlp ZiAobm9kZS0+cGVyZnVuYykKKwkJcGZyZWUobm9kZS0+cGVyZnVuYyk7CisJaWYgKG5vZGUtPnBl cmFnZykKKwkJcGZyZWUobm9kZS0+cGVyYWdnKTsKIAogCW91dGVyUGxhbiA9IG91dGVyUGxhblN0 YXRlKG5vZGUpOwogCUV4ZWNFbmROb2RlKG91dGVyUGxhbik7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlV29ya3RhYmxlc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVdvcmt0YWJsZXNjYW4uYwppbmRleCAwYzEzNDQ4MjM2Li5kNzBjNmFmZGUzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV29ya3RhYmxlc2Nhbi5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVXb3JrdGFibGVzY2FuLmMKQEAgLTIwMCw3ICsyMDAsOCBAQCBF eGVjRW5kV29ya1RhYmxlU2NhbihXb3JrVGFibGVTY2FuU3RhdGUgKm5vZGUpCiAJICovCiAJaWYg KG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKIAkJRXhlY0NsZWFyVHVwbGUobm9kZS0+ c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19T Y2FuVHVwbGVTbG90KTsKKwlpZiAobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCkKKwkJRXhlY0Ns ZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CiB9CiAKIC8qIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivc3BpLmMKaW5kZXggZTNhMTcwYzM4Yi4uMjZhOWVhMzQyYSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivc3BpLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKQEAg LTcxLDcgKzcxLDcgQEAgc3RhdGljIGludAlfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBs YW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogc3RhdGljIFBhcmFtTGlzdElu Zm8gX1NQSV9jb252ZXJ0X3BhcmFtcyhpbnQgbmFyZ3MsIE9pZCAqYXJndHlwZXMsCiAJCQkJCQkJ CQkJIERhdHVtICpWYWx1ZXMsIGNvbnN0IGNoYXIgKk51bGxzKTsKIAotc3RhdGljIGludAlfU1BJ X3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBmaXJlX3RyaWdnZXJzLCB1aW50NjQg dGNvdW50KTsKK3N0YXRpYyBpbnQJX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIHVp bnQ2NCB0Y291bnQpOwogCiBzdGF0aWMgdm9pZCBfU1BJX2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFy Zyk7CiAKQEAgLTE2MjMsNiArMTYyMyw3IEBAIFNQSV9jdXJzb3Jfb3Blbl9pbnRlcm5hbChjb25z dCBjaGFyICpuYW1lLCBTUElQbGFuUHRyIHBsYW4sCiAJX1NQSV9jdXJyZW50LT5wcm9jZXNzZWQg PSAwOwogCV9TUElfY3VycmVudC0+dHVwdGFibGUgPSBOVUxMOwogCityZXBsYW46CiAJLyogQ3Jl YXRlIHRoZSBwb3J0YWwgKi8KIAlpZiAobmFtZSA9PSBOVUxMIHx8IG5hbWVbMF0gPT0gJ1wwJykK IAl7CkBAIC0xNzY2LDcgKzE3NjcsMTAgQEAgU1BJX2N1cnNvcl9vcGVuX2ludGVybmFsKGNvbnN0 IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwKIAl9CiAKIAkvKgotCSAqIFN0YXJ0IHBvcnRh bCBleGVjdXRpb24uCisJICogU3RhcnQgcG9ydGFsIGV4ZWN1dGlvbi4gIElmIHRoZSBwb3J0YWwg Y29udGFpbnMgYSBjYWNoZWQgcGxhbiwgaXQgbXVzdAorCSAqIGJlIHJlY3JlYXRlZCBpZiBwb3J0 YWwtPnBsYW5fdmFsaWQgaXMgZmFsc2Ugd2hpY2ggdGVsbHMgdGhhdCB0aGUgY2FjaGVkCisJICog cGxhbiB3YXMgZm91bmQgdG8gaGF2ZSBiZWVuIGludmFsaWRhdGVkIHdoZW4gaW5pdGlhbGl6aW5n IG9uZSBvZiB0aGUKKwkgKiBwbGFuIHRyZWVzIGNvbnRhaW5lZCBpbiBpdC4KIAkgKi8KIAlQb3J0 YWxTdGFydChwb3J0YWwsIHBhcmFtTEksIDAsIHNuYXBzaG90KTsKIApAQCAtMTc3NSw2ICsxNzc5 LDEyIEBAIFNQSV9jdXJzb3Jfb3Blbl9pbnRlcm5hbChjb25zdCBjaGFyICpuYW1lLCBTUElQbGFu UHRyIHBsYW4sCiAJLyogUG9wIHRoZSBlcnJvciBjb250ZXh0IHN0YWNrICovCiAJZXJyb3JfY29u dGV4dF9zdGFjayA9IHNwaWVycmNvbnRleHQucHJldmlvdXM7CiAKKwlpZiAoIXBvcnRhbC0+cGxh bl92YWxpZCkKKwl7CisJCVBvcnRhbERyb3AocG9ydGFsLCBmYWxzZSk7CisJCWdvdG8gcmVwbGFu OworCX0KKwogCS8qIFBvcCB0aGUgU1BJIHN0YWNrICovCiAJX1NQSV9lbmRfY2FsbCh0cnVlKTsK IApAQCAtMjU1Miw2ICsyNTYyLDcgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFu LCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJICogUmVwbGFuIGlmIG5lZWRl ZCwgYW5kIGluY3JlbWVudCBwbGFuIHJlZmNvdW50LiAgSWYgaXQncyBhIHNhdmVkCiAJCSAqIHBs YW4sIHRoZSByZWZjb3VudCBtdXN0IGJlIGJhY2tlZCBieSB0aGUgcGxhbl9vd25lci4KIAkJICov CityZXBsYW46CiAJCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihwbGFuc291cmNlLCBvcHRpb25zLT5w YXJhbXMsCiAJCQkJCQkJICBwbGFuX293bmVyLCBfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52KTsKIApA QCAtMjY2MSw2ICsyNjcyLDcgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBj b25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJCXsKIAkJCQlRdWVyeURlc2MgICpx ZGVzYzsKIAkJCQlTbmFwc2hvdAlzbmFwOworCQkJCWludAkJCWVmbGFnczsKIAogCQkJCWlmIChB Y3RpdmVTbmFwc2hvdFNldCgpKQogCQkJCQlzbmFwID0gR2V0QWN0aXZlU25hcHNob3QoKTsKQEAg LTI2NjgsMTQgKzI2ODAsMzYgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBj b25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJCQkJc25hcCA9IEludmFsaWRTbmFw c2hvdDsKIAogCQkJCXFkZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHN0bXQsCisJCQkJCQkJCQkJY3Bs YW4sCiAJCQkJCQkJCQkJcGxhbnNvdXJjZS0+cXVlcnlfc3RyaW5nLAogCQkJCQkJCQkJCXNuYXAs IGNyb3NzY2hlY2tfc25hcHNob3QsCiAJCQkJCQkJCQkJZGVzdCwKIAkJCQkJCQkJCQlvcHRpb25z LT5wYXJhbXMsCiAJCQkJCQkJCQkJX1NQSV9jdXJyZW50LT5xdWVyeUVudiwKIAkJCQkJCQkJCQkw KTsKLQkJCQlyZXMgPSBfU1BJX3BxdWVyeShxZGVzYywgZmlyZV90cmlnZ2VycywKLQkJCQkJCQkJ ICBjYW5TZXRUYWcgPyBvcHRpb25zLT50Y291bnQgOiAwKTsKKworCQkJCS8qIFNlbGVjdCBleGVj dXRpb24gb3B0aW9ucyAqLworCQkJCWlmIChmaXJlX3RyaWdnZXJzKQorCQkJCQllZmxhZ3MgPSAw OwkJCQkvKiBkZWZhdWx0IHJ1bi10by1jb21wbGV0aW9uIGZsYWdzICovCisJCQkJZWxzZQorCQkJ CQllZmxhZ3MgPSBFWEVDX0ZMQUdfU0tJUF9UUklHR0VSUzsKKworCQkJCS8qIFRha2UgbG9ja3Mg aWYgdXNpbmcgYSBDYWNoZWRQbGFuICovCisJCQkJaWYgKHFkZXNjLT5jcGxhbikKKwkJCQkJZWZs YWdzIHw9IEVYRUNfRkxBR19HRVRfTE9DS1M7CisKKwkJCQlFeGVjdXRvclN0YXJ0KHFkZXNjLCBl ZmxhZ3MpOworCQkJCWlmICghcWRlc2MtPnBsYW5fdmFsaWQpCisJCQkJeworCQkJCQlFeGVjdXRv ckZpbmlzaChxZGVzYyk7CisJCQkJCUV4ZWN1dG9yRW5kKHFkZXNjKTsKKwkJCQkJRnJlZVF1ZXJ5 RGVzYyhxZGVzYyk7CisJCQkJCUFzc2VydChjcGxhbik7CisJCQkJCVJlbGVhc2VDYWNoZWRQbGFu KGNwbGFuLCBwbGFuX293bmVyKTsKKwkJCQkJZ290byByZXBsYW47CisJCQkJfQorCisJCQkJcmVz ID0gX1NQSV9wcXVlcnkocWRlc2MsIGNhblNldFRhZyA/IG9wdGlvbnMtPnRjb3VudCA6IDApOwog CQkJCUZyZWVRdWVyeURlc2MocWRlc2MpOwogCQkJfQogCQkJZWxzZQpAQCAtMjg1MCwxMCArMjg4 NCw5IEBAIF9TUElfY29udmVydF9wYXJhbXMoaW50IG5hcmdzLCBPaWQgKmFyZ3R5cGVzLAogfQog CiBzdGF0aWMgaW50Ci1fU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBmaXJl X3RyaWdnZXJzLCB1aW50NjQgdGNvdW50KQorX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURl c2MsIHVpbnQ2NCB0Y291bnQpCiB7CiAJaW50CQkJb3BlcmF0aW9uID0gcXVlcnlEZXNjLT5vcGVy YXRpb247Ci0JaW50CQkJZWZsYWdzOwogCWludAkJCXJlczsKIAogCXN3aXRjaCAob3BlcmF0aW9u KQpAQCAtMjg5NywxNCArMjkzMCw2IEBAIF9TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVlcnlEZXNj LCBib29sIGZpcmVfdHJpZ2dlcnMsIHVpbnQ2NCB0Y291bnQpCiAJCVJlc2V0VXNhZ2UoKTsKICNl bmRpZgogCi0JLyogU2VsZWN0IGV4ZWN1dGlvbiBvcHRpb25zICovCi0JaWYgKGZpcmVfdHJpZ2dl cnMpCi0JCWVmbGFncyA9IDA7CQkJCS8qIGRlZmF1bHQgcnVuLXRvLWNvbXBsZXRpb24gZmxhZ3Mg Ki8KLQllbHNlCi0JCWVmbGFncyA9IEVYRUNfRkxBR19TS0lQX1RSSUdHRVJTOwotCi0JRXhlY3V0 b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7Ci0KIAlFeGVjdXRvclJ1bihxdWVyeURlc2MsIEZv cndhcmRTY2FuRGlyZWN0aW9uLCB0Y291bnQsIHRydWUpOwogCiAJX1NQSV9jdXJyZW50LT5wcm9j ZXNzZWQgPSBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMK aW5kZXggYmEwMGI5OTI0OS4uOTU1Mjg2NTEzZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9k ZXMvb3V0ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCkBAIC01MTMs NiArNTEzLDcgQEAgX291dFJhbmdlVGJsRW50cnkoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFJhbmdl VGJsRW50cnkgKm5vZGUpCiAJCQlXUklURV9CT09MX0ZJRUxEKHNlY3VyaXR5X2JhcnJpZXIpOwog CQkJLyogd2UgcmUtdXNlIHRoZXNlIFJFTEFUSU9OIGZpZWxkcywgdG9vOiAqLwogCQkJV1JJVEVf T0lEX0ZJRUxEKHJlbGlkKTsKKwkJCVdSSVRFX0NIQVJfRklFTEQocmVsa2luZCk7CiAJCQlXUklU RV9JTlRfRklFTEQocmVsbG9ja21vZGUpOwogCQkJV1JJVEVfVUlOVF9GSUVMRChwZXJtaW5mb2lu ZGV4KTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNz LmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwppbmRleCA1OTdlNWIzZWE4Li5hMTM2 YWUxZDYwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYworKysgYi9z cmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwpAQCAtNTAzLDYgKzUwMyw3IEBAIF9yZWFkUmFu Z2VUYmxFbnRyeSh2b2lkKQogCQkJUkVBRF9CT09MX0ZJRUxEKHNlY3VyaXR5X2JhcnJpZXIpOwog CQkJLyogd2UgcmUtdXNlIHRoZXNlIFJFTEFUSU9OIGZpZWxkcywgdG9vOiAqLwogCQkJUkVBRF9P SURfRklFTEQocmVsaWQpOworCQkJUkVBRF9DSEFSX0ZJRUxEKHJlbGtpbmQpOwogCQkJUkVBRF9J TlRfRklFTEQocmVsbG9ja21vZGUpOwogCQkJUkVBRF9VSU5UX0ZJRUxEKHBlcm1pbmZvaW5kZXgp OwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFu bmVyLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggNjJiM2Vj OTZjYy4uNWYzZmZkOThhZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v cGxhbm5lci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAt NTI3LDYgKzUyNyw3IEBAIHN0YW5kYXJkX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBjb25zdCBjaGFy ICpxdWVyeV9zdHJpbmcsIGludCBjdXJzb3JPcHRpb25zLAogCXJlc3VsdC0+cGFydFBydW5lSW5m b3MgPSBnbG9iLT5wYXJ0UHJ1bmVJbmZvczsKIAlyZXN1bHQtPnJ0YWJsZSA9IGdsb2ItPmZpbmFs cnRhYmxlOwogCXJlc3VsdC0+cGVybUluZm9zID0gZ2xvYi0+ZmluYWxydGVwZXJtaW5mb3M7CisJ cmVzdWx0LT52aWV3UmVsYXRpb25zID0gZ2xvYi0+dmlld1JlbGF0aW9uczsKIAlyZXN1bHQtPnJl c3VsdFJlbGF0aW9ucyA9IGdsb2ItPnJlc3VsdFJlbGF0aW9uczsKIAlyZXN1bHQtPmFwcGVuZFJl bGF0aW9ucyA9IGdsb2ItPmFwcGVuZFJlbGF0aW9uczsKIAlyZXN1bHQtPnN1YnBsYW5zID0gZ2xv Yi0+c3VicGxhbnM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRy ZWZzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKaW5kZXggNWNjODM2 NmFmNi4uZjEzMjQwYmYzMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v c2V0cmVmcy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwpAQCAt MTYsNiArMTYsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJhY2Nlc3Mv dHJhbnNhbS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfY2xhc3MuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJu b2Rlcy9ub2RlRnVuY3MuaCIKQEAgLTYwNCw2ICs2MDUsMTAgQEAgYWRkX3J0ZV90b19mbGF0X3J0 YWJsZShQbGFubmVyR2xvYmFsICpnbG9iLCBMaXN0ICpydGVwZXJtaW5mb3MsCiAJCShuZXdydGUt PnJ0ZWtpbmQgPT0gUlRFX1NVQlFVRVJZICYmIE9pZElzVmFsaWQobmV3cnRlLT5yZWxpZCkpKQog CQlnbG9iLT5yZWxhdGlvbk9pZHMgPSBsYXBwZW5kX29pZChnbG9iLT5yZWxhdGlvbk9pZHMsIG5l d3J0ZS0+cmVsaWQpOwogCisJaWYgKG5ld3J0ZS0+cmVsa2luZCA9PSBSRUxLSU5EX1ZJRVcpCisJ CWdsb2ItPnZpZXdSZWxhdGlvbnMgPSBsYXBwZW5kX2ludChnbG9iLT52aWV3UmVsYXRpb25zLAor CQkJCQkJCQkJCSAgbGlzdF9sZW5ndGgoZ2xvYi0+ZmluYWxydGFibGUpKTsKKwogCS8qCiAJICog QWRkIGEgY29weSBvZiB0aGUgUlRFUGVybWlzc2lvbkluZm8sIGlmIGFueSwgY29ycmVzcG9uZGlu ZyB0byB0aGlzIFJURQogCSAqIHRvIHRoZSBmbGF0dGVuZWQgZ2xvYmFsIGxpc3QuCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9y ZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKaW5kZXggOTgwZGMxODE2Zi4uMTYzMWM4Yjk5MyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCisrKyBiL3NyYy9i YWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYwpAQCAtMTg0OSwxMSArMTg0OSwxMCBAQCBB cHBseVJldHJpZXZlUnVsZShRdWVyeSAqcGFyc2V0cmVlLAogCiAJLyoKIAkgKiBDbGVhciBmaWVs ZHMgdGhhdCBzaG91bGQgbm90IGJlIHNldCBpbiBhIHN1YnF1ZXJ5IFJURS4gIE5vdGUgdGhhdCB3 ZQotCSAqIGxlYXZlIHRoZSByZWxpZCwgcmVsbG9ja21vZGUsIGFuZCBwZXJtaW5mb2luZGV4IGZp ZWxkcyBzZXQsIHNvIHRoYXQgdGhlCi0JICogdmlldyByZWxhdGlvbiBjYW4gYmUgYXBwcm9wcmlh dGVseSBsb2NrZWQgYmVmb3JlIGV4ZWN1dGlvbiBhbmQgaXRzCi0JICogcGVybWlzc2lvbnMgY2hl Y2tlZC4KKwkgKiBsZWF2ZSB0aGUgcmVsaWQsIHJlbGtpbmQsIHJlbGxvY2ttb2RlLCBhbmQgcGVy bWluZm9pbmRleCBmaWVsZHMgc2V0LAorCSAqIHNvIHRoYXQgdGhlIHZpZXcgcmVsYXRpb24gY2Fu IGJlIGFwcHJvcHJpYXRlbHkgbG9ja2VkIGJlZm9yZSBleGVjdXRpb24KKwkgKiBhbmQgaXRzIHBl cm1pc3Npb25zIGNoZWNrZWQuCiAJICovCi0JcnRlLT5yZWxraW5kID0gMDsKIAlydGUtPnRhYmxl c2FtcGxlID0gTlVMTDsKIAlydGUtPmluaCA9IGZhbHNlOwkJCS8qIG11c3Qgbm90IGJlIHNldCBm b3IgYSBzdWJxdWVyeSAqLwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3Iv bG1nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYwppbmRleCBlZTliODlhNjcy Li5jODA3ZTljZGNjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5j CisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMKQEAgLTI3LDYgKzI3LDcgQEAK ICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2ludmFs YWR0LmgiCiAjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2Fj aGUuaCIKIAogCiAvKgpAQCAtMzY0LDYgKzM2NSw1MCBAQCBDaGVja1JlbGF0aW9uTG9ja2VkQnlN ZShSZWxhdGlvbiByZWxhdGlvbiwgTE9DS01PREUgbG9ja21vZGUsIGJvb2wgb3JzdHJvbmdlcikK IAlyZXR1cm4gZmFsc2U7CiB9CiAKKy8qCisgKgkJQ2hlY2tSZWxMb2NrZWRCeU1lCisgKgorICog UmV0dXJucyB0cnVlIGlmIGN1cnJlbnQgdHJhbnNhY3Rpb24gaG9sZHMgYSBsb2NrIG9uIHRoZSBn aXZlbiByZWxhdGlvbiBvZgorICogbW9kZSAnbG9ja21vZGUnLiAgSWYgJ29yc3Ryb25nZXInIGlz IHRydWUsIGEgc3Ryb25nZXIgbG9ja21vZGUgaXMgYWxzbyBPSy4KKyAqICgiU3Ryb25nZXIiIGlz IGRlZmluZWQgYXMgIm51bWVyaWNhbGx5IGhpZ2hlciIsIHdoaWNoIGlzIGEgYml0CisgKiBzZW1h bnRpY2FsbHkgZHViaW91cyBidXQgaXMgT0sgZm9yIHRoZSBwdXJwb3NlcyB3ZSB1c2UgdGhpcyBm b3IuKQorICovCitib29sCitDaGVja1JlbExvY2tlZEJ5TWUoT2lkIHJlbGlkLCBMT0NLTU9ERSBs b2NrbW9kZSwgYm9vbCBvcnN0cm9uZ2VyKQoreworCU9pZAkJCWRiSWQgPSBnZXRfcmVsX3JlbGlz c2hhcmVkKHJlbGlkKSA/IEludmFsaWRPaWQgOiBNeURhdGFiYXNlSWQ7CisJTE9DS1RBRwkJdGFn OworCisJU0VUX0xPQ0tUQUdfUkVMQVRJT04odGFnLCBkYklkLCByZWxpZCk7CisKKwlpZiAoTG9j a0hlbGRCeU1lKCZ0YWcsIGxvY2ttb2RlKSkKKwkJcmV0dXJuIHRydWU7CisKKwlpZiAob3JzdHJv bmdlcikKKwl7CisJCUxPQ0tNT0RFCXNsb2NrbW9kZTsKKworCQlmb3IgKHNsb2NrbW9kZSA9IGxv Y2ttb2RlICsgMTsKKwkJCSBzbG9ja21vZGUgPD0gTWF4TG9ja01vZGU7CisJCQkgc2xvY2ttb2Rl KyspCisJCXsKKwkJCWlmIChMb2NrSGVsZEJ5TWUoJnRhZywgc2xvY2ttb2RlKSkKKwkJCXsKKyNp ZmRlZiBOT1RfVVNFRAorCQkJCS8qIFNvbWV0aW1lcyB0aGlzIG1pZ2h0IGJlIHVzZWZ1bCBmb3Ig ZGVidWdnaW5nIHB1cnBvc2VzICovCisJCQkJZWxvZyhXQVJOSU5HLCAibG9jayBtb2RlICVzIHN1 YnN0aXR1dGVkIGZvciAlcyBvbiByZWxhdGlvbiAlcyIsCisJCQkJCSBHZXRMb2NrbW9kZU5hbWUo dGFnLmxvY2t0YWdfbG9ja21ldGhvZGlkLCBzbG9ja21vZGUpLAorCQkJCQkgR2V0TG9ja21vZGVO YW1lKHRhZy5sb2NrdGFnX2xvY2ttZXRob2RpZCwgbG9ja21vZGUpLAorCQkJCQkgUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pKTsKKyNlbmRpZgorCQkJCXJldHVybiB0cnVlOworCQkJ fQorCQl9CisJfQorCisJcmV0dXJuIGZhbHNlOworfQorCiAvKgogICoJCUxvY2tIYXNXYWl0ZXJz UmVsYXRpb24KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9z cmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggY2FiNzA5YjA3Yi4uNmQwZWEwNzgwMSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5k L3Rjb3AvcG9zdGdyZXMuYwpAQCAtMTE5OSw2ICsxMTk5LDcgQEAgZXhlY19zaW1wbGVfcXVlcnko Y29uc3QgY2hhciAqcXVlcnlfc3RyaW5nKQogCQkgKiBTdGFydCB0aGUgcG9ydGFsLiAgTm8gcGFy YW1ldGVycyBoZXJlLgogCQkgKi8KIAkJUG9ydGFsU3RhcnQocG9ydGFsLCBOVUxMLCAwLCBJbnZh bGlkU25hcHNob3QpOworCQlBc3NlcnQocG9ydGFsLT5wbGFuX3ZhbGlkKTsKIAogCQkvKgogCQkg KiBTZWxlY3QgdGhlIGFwcHJvcHJpYXRlIG91dHB1dCBmb3JtYXQ6IHRleHQgdW5sZXNzIHdlIGFy ZSBkb2luZyBhCkBAIC0xNzAzLDYgKzE3MDQsNyBAQCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJ bmZvIGlucHV0X21lc3NhZ2UpCiAJCQkJCQkiY29tbWFuZHMgaWdub3JlZCB1bnRpbCBlbmQgb2Yg dHJhbnNhY3Rpb24gYmxvY2siKSwKIAkJCQkgZXJyZGV0YWlsX2Fib3J0KCkpKTsKIAorcmVwbGFu OgogCS8qCiAJICogQ3JlYXRlIHRoZSBwb3J0YWwuICBBbGxvdyBzaWxlbnQgcmVwbGFjZW1lbnQg b2YgYW4gZXhpc3RpbmcgcG9ydGFsIG9ubHkKIAkgKiBpZiB0aGUgdW5uYW1lZCBwb3J0YWwgaXMg c3BlY2lmaWVkLgpAQCAtMTk5NCwxMCArMTk5NiwxOSBAQCBleGVjX2JpbmRfbWVzc2FnZShTdHJp bmdJbmZvIGlucHV0X21lc3NhZ2UpCiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAKIAkvKgotCSAq IEFuZCB3ZSdyZSByZWFkeSB0byBzdGFydCBwb3J0YWwgZXhlY3V0aW9uLgorCSAqIFN0YXJ0IHBv cnRhbCBleGVjdXRpb24uICBJZiB0aGUgcG9ydGFsIGNvbnRhaW5zIGEgY2FjaGVkIHBsYW4sIGl0 IG11c3QKKwkgKiBiZSByZWNyZWF0ZWQgaWYgcG9ydGFsLT5wbGFuX3ZhbGlkIGlzIGZhbHNlIHdo aWNoIHRlbGxzIHRoYXQgdGhlIGNhY2hlZAorCSAqIHBsYW4gd2FzIGZvdW5kIHRvIGhhdmUgYmVl biBpbnZhbGlkYXRlZCB3aGVuIGluaXRpYWxpemluZyBvbmUgb2YgdGhlCisJICogcGxhbiB0cmVl cyBjb250YWluZWQgaW4gaXQuCiAJICovCiAJUG9ydGFsU3RhcnQocG9ydGFsLCBwYXJhbXMsIDAs IEludmFsaWRTbmFwc2hvdCk7CiAKKwlpZiAoIXBvcnRhbC0+cGxhbl92YWxpZCkKKwl7CisJCVBv cnRhbERyb3AocG9ydGFsLCBmYWxzZSk7CisJCWdvdG8gcmVwbGFuOworCX0KKwogCS8qCiAJICog QXBwbHkgdGhlIHJlc3VsdCBmb3JtYXQgcmVxdWVzdHMgdG8gdGhlIHBvcnRhbC4KIAkgKi8KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgYi9zcmMvYmFja2VuZC90Y29wL3Bx dWVyeS5jCmluZGV4IDVmMDI0OGFjYzUuLmM5M2E5NTBkN2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3Rjb3AvcHF1ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYwpAQCAtMTks NiArMTksNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNsdWRlICJjb21tYW5k cy9wcmVwYXJlLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY2Rlc2MuaCIKICNpbmNsdWRlICJl eGVjdXRvci90c3RvcmVSZWNlaXZlci5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1 ZGUgInBnX3RyYWNlLmgiCkBAIC0zNSwxMiArMzYsNiBAQAogUG9ydGFsCQlBY3RpdmVQb3J0YWwg PSBOVUxMOwogCiAKLXN0YXRpYyB2b2lkIFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwK LQkJCQkJCSBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAotCQkJCQkJIFBhcmFtTGlzdEluZm8gcGFy YW1zLAotCQkJCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAotCQkJCQkJIERlc3RSZWNl aXZlciAqZGVzdCwKLQkJCQkJCSBRdWVyeUNvbXBsZXRpb24gKnFjKTsKIHN0YXRpYyB2b2lkIEZp bGxQb3J0YWxTdG9yZShQb3J0YWwgcG9ydGFsLCBib29sIGlzVG9wTGV2ZWwpOwogc3RhdGljIHVp bnQ2NCBSdW5Gcm9tU3RvcmUoUG9ydGFsIHBvcnRhbCwgU2NhbkRpcmVjdGlvbiBkaXJlY3Rpb24s IHVpbnQ2NCBjb3VudCwKIAkJCQkJCSAgIERlc3RSZWNlaXZlciAqZGVzdCk7CkBAIC02NSw2ICs2 MCw3IEBAIHN0YXRpYyB2b2lkIERvUG9ydGFsUmV3aW5kKFBvcnRhbCBwb3J0YWwpOwogICovCiBR dWVyeURlc2MgKgogQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwKKwkJ CQlDYWNoZWRQbGFuICpjcGxhbiwKIAkJCQljb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJCVNu YXBzaG90IHNuYXBzaG90LAogCQkJCVNuYXBzaG90IGNyb3NzY2hlY2tfc25hcHNob3QsCkBAIC03 Nyw2ICs3Myw3IEBAIENyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCiAK IAlxZC0+b3BlcmF0aW9uID0gcGxhbm5lZHN0bXQtPmNvbW1hbmRUeXBlOwkvKiBvcGVyYXRpb24g Ki8KIAlxZC0+cGxhbm5lZHN0bXQgPSBwbGFubmVkc3RtdDsJLyogcGxhbiAqLworCXFkLT5jcGxh biA9IGNwbGFuOwkJCQkvKiBDYWNoZWRQbGFuLCBpZiBwbGFuIGlzIGZyb20gb25lICovCiAJcWQt PnNvdXJjZVRleHQgPSBzb3VyY2VUZXh0OwkvKiBxdWVyeSB0ZXh0ICovCiAJcWQtPnNuYXBzaG90 ID0gUmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CS8qIHNuYXBzaG90ICovCiAJLyogUkkgY2hl Y2sgc25hcHNob3QgKi8KQEAgLTExNiw4NiArMTEzLDYgQEAgRnJlZVF1ZXJ5RGVzYyhRdWVyeURl c2MgKnFkZXNjKQogfQogCiAKLS8qCi0gKiBQcm9jZXNzUXVlcnkKLSAqCQlFeGVjdXRlIGEgc2lu Z2xlIHBsYW5uYWJsZSBxdWVyeSB3aXRoaW4gYSBQT1JUQUxfTVVMVElfUVVFUlksCi0gKgkJUE9S VEFMX09ORV9SRVRVUk5JTkcsIG9yIFBPUlRBTF9PTkVfTU9EX1dJVEggcG9ydGFsCi0gKgotICoJ cGxhbjogdGhlIHBsYW4gdHJlZSBmb3IgdGhlIHF1ZXJ5Ci0gKglzb3VyY2VUZXh0OiB0aGUgc291 cmNlIHRleHQgb2YgdGhlIHF1ZXJ5Ci0gKglwYXJhbXM6IGFueSBwYXJhbWV0ZXJzIG5lZWRlZAot ICoJZGVzdDogd2hlcmUgdG8gc2VuZCByZXN1bHRzCi0gKglxYzogd2hlcmUgdG8gc3RvcmUgdGhl IGNvbW1hbmQgY29tcGxldGlvbiBzdGF0dXMgZGF0YS4KLSAqCi0gKiBxYyBtYXkgYmUgTlVMTCBp ZiBjYWxsZXIgZG9lc24ndCB3YW50IGEgc3RhdHVzIHN0cmluZy4KLSAqCi0gKiBNdXN0IGJlIGNh bGxlZCBpbiBhIG1lbW9yeSBjb250ZXh0IHRoYXQgd2lsbCBiZSByZXNldCBvciBkZWxldGVkIG9u Ci0gKiBlcnJvcjsgb3RoZXJ3aXNlIHRoZSBleGVjdXRvcidzIG1lbW9yeSB1c2FnZSB3aWxsIGJl IGxlYWtlZC4KLSAqLwotc3RhdGljIHZvaWQKLVByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxh biwKLQkJCSBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAotCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1z LAotCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAotCQkJIERlc3RSZWNlaXZlciAqZGVz dCwKLQkJCSBRdWVyeUNvbXBsZXRpb24gKnFjKQotewotCVF1ZXJ5RGVzYyAgKnF1ZXJ5RGVzYzsK LQotCS8qCi0JICogQ3JlYXRlIHRoZSBRdWVyeURlc2Mgb2JqZWN0Ci0JICovCi0JcXVlcnlEZXNj ID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHNvdXJjZVRleHQsCi0JCQkJCQkJCUdldEFjdGl2ZVNu YXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKLQkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVu diwgMCk7Ci0KLQkvKgotCSAqIENhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFu IGZvciBleGVjdXRpb24KLQkgKi8KLQlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgMCk7Ci0KLQkv KgotCSAqIFJ1biB0aGUgcGxhbiB0byBjb21wbGV0aW9uLgotCSAqLwotCUV4ZWN1dG9yUnVuKHF1 ZXJ5RGVzYywgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIDBMLCB0cnVlKTsKLQotCS8qCi0JICogQnVp bGQgY29tbWFuZCBjb21wbGV0aW9uIHN0YXR1cyBkYXRhLCBpZiBjYWxsZXIgd2FudHMgb25lLgot CSAqLwotCWlmIChxYykKLQl7Ci0JCXN3aXRjaCAocXVlcnlEZXNjLT5vcGVyYXRpb24pCi0JCXsK LQkJCWNhc2UgQ01EX1NFTEVDVDoKLQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19T RUxFQ1QsIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOwotCQkJCWJyZWFrOwotCQkJ Y2FzZSBDTURfSU5TRVJUOgotCQkJCVNldFF1ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFHX0lOU0VS VCwgcXVlcnlEZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7Ci0JCQkJYnJlYWs7Ci0JCQljYXNl IENNRF9VUERBVEU6Ci0JCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfVVBEQVRFLCBx dWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKLQkJCQlicmVhazsKLQkJCWNhc2UgQ01E X0RFTEVURToKLQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19ERUxFVEUsIHF1ZXJ5 RGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOwotCQkJCWJyZWFrOwotCQkJY2FzZSBDTURfTUVS R0U6Ci0JCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfTUVSR0UsIHF1ZXJ5RGVzYy0+ ZXN0YXRlLT5lc19wcm9jZXNzZWQpOwotCQkJCWJyZWFrOwotCQkJZGVmYXVsdDoKLQkJCQlTZXRR dWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19VTktOT1dOLCBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNf cHJvY2Vzc2VkKTsKLQkJCQlicmVhazsKLQkJfQotCX0KLQotCS8qCi0JICogTm93LCB3ZSBjbG9z ZSBkb3duIGFsbCB0aGUgc2NhbnMgYW5kIGZyZWUgYWxsb2NhdGVkIHJlc291cmNlcy4KLQkgKi8K LQlFeGVjdXRvckZpbmlzaChxdWVyeURlc2MpOwotCUV4ZWN1dG9yRW5kKHF1ZXJ5RGVzYyk7Ci0K LQlGcmVlUXVlcnlEZXNjKHF1ZXJ5RGVzYyk7Ci19Ci0KIC8qCiAgKiBDaG9vc2VQb3J0YWxTdHJh dGVneQogICoJCVNlbGVjdCBwb3J0YWwgZXhlY3V0aW9uIHN0cmF0ZWd5IGdpdmVuIHRoZSBpbnRl bmRlZCBzdGF0ZW1lbnQgbGlzdC4KQEAgLTQyNyw3ICszNDQsOCBAQCBGZXRjaFN0YXRlbWVudFRh cmdldExpc3QoTm9kZSAqc3RtdCkKICAqIHRvIGJlIHVzZWQgZm9yIGN1cnNvcnMpLgogICoKICAq IE9uIHJldHVybiwgcG9ydGFsIGlzIHJlYWR5IHRvIGFjY2VwdCBQb3J0YWxSdW4oKSBjYWxscywg YW5kIHRoZSByZXN1bHQKLSAqIHR1cGRlc2MgKGlmIGFueSkgaXMga25vd24uCisgKiB0dXBkZXNj IChpZiBhbnkpIGlzIGtub3duLCB1bmxlc3MgcG9ydGFsLT5wbGFuX3ZhbGlkIGlzIHNldCB0byBm YWxzZSwgaW4KKyAqIHdoaWNoIGNhc2UsIHRoZSBjYWxsZXIgbXVzdCByZXRyeSBhZnRlciBnZW5l cmF0aW5nIGEgbmV3IENhY2hlZFBsYW4uCiAgKi8KIHZvaWQKIFBvcnRhbFN0YXJ0KFBvcnRhbCBw b3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLApAQCAtNDM1LDcgKzM1Myw2IEBAIFBvcnRhbFN0 YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogewogCVBvcnRhbAkJc2F2 ZUFjdGl2ZVBvcnRhbDsKIAlSZXNvdXJjZU93bmVyIHNhdmVSZXNvdXJjZU93bmVyOwotCU1lbW9y eUNvbnRleHQgc2F2ZVBvcnRhbENvbnRleHQ7CiAJTWVtb3J5Q29udGV4dCBvbGRDb250ZXh0Owog CVF1ZXJ5RGVzYyAgKnF1ZXJ5RGVzYzsKIAlpbnQJCQlteWVmbGFnczsKQEAgLTQ0OCwxNSArMzY1 LDEzIEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAog CSAqLwogCXNhdmVBY3RpdmVQb3J0YWwgPSBBY3RpdmVQb3J0YWw7CiAJc2F2ZVJlc291cmNlT3du ZXIgPSBDdXJyZW50UmVzb3VyY2VPd25lcjsKLQlzYXZlUG9ydGFsQ29udGV4dCA9IFBvcnRhbENv bnRleHQ7CiAJUEdfVFJZKCk7CiAJewogCQlBY3RpdmVQb3J0YWwgPSBwb3J0YWw7CiAJCWlmIChw b3J0YWwtPnJlc293bmVyKQogCQkJQ3VycmVudFJlc291cmNlT3duZXIgPSBwb3J0YWwtPnJlc293 bmVyOwotCQlQb3J0YWxDb250ZXh0ID0gcG9ydGFsLT5wb3J0YWxDb250ZXh0OwogCi0JCW9sZENv bnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oUG9ydGFsQ29udGV4dCk7CisJCW9sZENvbnRl eHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocG9ydGFsLT5xdWVyeUNvbnRleHQpOwogCiAJCS8q IE11c3QgcmVtZW1iZXIgcG9ydGFsIHBhcmFtIGxpc3QsIGlmIGFueSAqLwogCQlwb3J0YWwtPnBv cnRhbFBhcmFtcyA9IHBhcmFtczsKQEAgLTQ3Miw2ICszODcsOCBAQCBQb3J0YWxTdGFydChQb3J0 YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJc3dpdGNoIChwb3J0YWwtPnN0cmF0 ZWd5KQogCQl7CiAJCQljYXNlIFBPUlRBTF9PTkVfU0VMRUNUOgorCQkJY2FzZSBQT1JUQUxfT05F X1JFVFVSTklORzoKKwkJCWNhc2UgUE9SVEFMX09ORV9NT0RfV0lUSDoKIAogCQkJCS8qIE11c3Qg c2V0IHNuYXBzaG90IGJlZm9yZSBzdGFydGluZyBleGVjdXRvci4gKi8KIAkJCQlpZiAoc25hcHNo b3QpCkBAIC00OTMsNiArNDEwLDcgQEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1M aXN0SW5mbyBwYXJhbXMsCiAJCQkJICogdGhlIGRlc3RpbmF0aW9uIHRvIERlc3ROb25lLgogCQkJ CSAqLwogCQkJCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhsaW5pdGlhbF9ub2RlKFBsYW5u ZWRTdG10LCBwb3J0YWwtPnN0bXRzKSwKKwkJCQkJCQkJCQkJcG9ydGFsLT5jcGxhbiwKIAkJCQkJ CQkJCQkJcG9ydGFsLT5zb3VyY2VUZXh0LAogCQkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgp LAogCQkJCQkJCQkJCQlJbnZhbGlkU25hcHNob3QsCkBAIC01MDEsMzAgKzQxOSw1NiBAQCBQb3J0 YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkJCQkJCQkJ cG9ydGFsLT5xdWVyeUVudiwKIAkJCQkJCQkJCQkJMCk7CiAKKwkJCQkvKiBSZW1lbWJlciBmb3Ig UG9ydGFsUnVuTXVsdGkoKS4gKi8KKwkJCQlpZiAocG9ydGFsLT5zdHJhdGVneSA9PSBQT1JUQUxf T05FX1JFVFVSTklORyB8fAorCQkJCQlwb3J0YWwtPnN0cmF0ZWd5ID09IFBPUlRBTF9PTkVfTU9E X1dJVEgpCisJCQkJCXBvcnRhbC0+cWRlc2NzID0gbGlzdF9tYWtlMShxdWVyeURlc2MpOworCiAJ CQkJLyoKIAkJCQkgKiBJZiBpdCdzIGEgc2Nyb2xsYWJsZSBjdXJzb3IsIGV4ZWN1dG9yIG5lZWRz IHRvIHN1cHBvcnQKIAkJCQkgKiBSRVdJTkQgYW5kIGJhY2t3YXJkcyBzY2FuLCBhcyB3ZWxsIGFz IHdoYXRldmVyIHRoZSBjYWxsZXIKIAkJCQkgKiBtaWdodCd2ZSBhc2tlZCBmb3IuCiAJCQkJICov Ci0JCQkJaWYgKHBvcnRhbC0+Y3Vyc29yT3B0aW9ucyAmIENVUlNPUl9PUFRfU0NST0xMKQorCQkJ CWlmIChwb3J0YWwtPnN0cmF0ZWd5ID09IFBPUlRBTF9PTkVfU0VMRUNUICYmCisJCQkJCShwb3J0 YWwtPmN1cnNvck9wdGlvbnMgJiBDVVJTT1JfT1BUX1NDUk9MTCkpCiAJCQkJCW15ZWZsYWdzID0g ZWZsYWdzIHwgRVhFQ19GTEFHX1JFV0lORCB8IEVYRUNfRkxBR19CQUNLV0FSRDsKIAkJCQllbHNl CiAJCQkJCW15ZWZsYWdzID0gZWZsYWdzOwogCisJCQkJLyogVGFrZSBsb2NrcyBpZiB1c2luZyBh IENhY2hlZFBsYW4gKi8KKwkJCQlpZiAocXVlcnlEZXNjLT5jcGxhbikKKwkJCQkJbXllZmxhZ3Mg fD0gRVhFQ19GTEFHX0dFVF9MT0NLUzsKKwogCQkJCS8qCi0JCQkJICogQ2FsbCBFeGVjdXRvclN0 YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbgorCQkJCSAqIENhbGwgRXhlY3V0 b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24uICBBCisJCQkJICogY2Fj aGVkIHBsYW4gbWF5IGdldCBpbnZhbGlkYXRlZCBhcyB3ZSdyZSBkb2luZyB0aGF0LgogCQkJCSAq LwogCQkJCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBteWVmbGFncyk7CisJCQkJaWYgKCFxdWVy eURlc2MtPnBsYW5fdmFsaWQpCisJCQkJeworCQkJCQlBc3NlcnQocXVlcnlEZXNjLT5jcGxhbik7 CisJCQkJCVBvcnRhbFF1ZXJ5RmluaXNoKHF1ZXJ5RGVzYyk7CisJCQkJCVBvcEFjdGl2ZVNuYXBz aG90KCk7CisJCQkJCXBvcnRhbC0+cGxhbl92YWxpZCA9IGZhbHNlOworCQkJCQlnb3RvIGVhcmx5 X2V4aXQ7CisJCQkJfQogCiAJCQkJLyoKLQkJCQkgKiBUaGlzIHRlbGxzIFBvcnRhbENsZWFudXAg dG8gc2h1dCBkb3duIHRoZSBleGVjdXRvcgorCQkJCSAqIFRoaXMgdGVsbHMgUG9ydGFsQ2xlYW51 cCB0byBzaHV0IGRvd24gdGhlIGV4ZWN1dG9yLCB0aG91Z2gKKwkJCQkgKiBub3QgbmVlZGVkIGZv ciBxdWVyaWVzIGhhbmRsZWQgYnkgUG9ydGFsUnVuTXVsdGkoKS4KIAkJCQkgKi8KLQkJCQlwb3J0 YWwtPnF1ZXJ5RGVzYyA9IHF1ZXJ5RGVzYzsKKwkJCQlpZiAocG9ydGFsLT5zdHJhdGVneSA9PSBQ T1JUQUxfT05FX1NFTEVDVCkKKwkJCQkJcG9ydGFsLT5xdWVyeURlc2MgPSBxdWVyeURlc2M7CiAK IAkJCQkvKgotCQkJCSAqIFJlbWVtYmVyIHR1cGxlIGRlc2NyaXB0b3IgKGNvbXB1dGVkIGJ5IEV4 ZWN1dG9yU3RhcnQpCisJCQkJICogUmVtZW1iZXIgdHVwbGUgZGVzY3JpcHRvciAoY29tcHV0ZWQg YnkgRXhlY3V0b3JTdGFydCksCisJCQkJICogdGhvdWdoIG1ha2UgaXQgaW5kZXBlbmRlbnQgb2Yg UXVlcnlEZXNjIGZvciBxdWVyaWVzIGhhbmRsZWQKKwkJCQkgKiBieSBQb3J0YWxSdW5NdWx0aSgp LgogCQkJCSAqLwotCQkJCXBvcnRhbC0+dHVwRGVzYyA9IHF1ZXJ5RGVzYy0+dHVwRGVzYzsKKwkJ CQlpZiAocG9ydGFsLT5zdHJhdGVneSAhPSBQT1JUQUxfT05FX1NFTEVDVCkKKwkJCQkJcG9ydGFs LT50dXBEZXNjID0gQ3JlYXRlVHVwbGVEZXNjQ29weShxdWVyeURlc2MtPnR1cERlc2MpOworCQkJ CWVsc2UKKwkJCQkJcG9ydGFsLT50dXBEZXNjID0gcXVlcnlEZXNjLT50dXBEZXNjOwogCiAJCQkJ LyoKIAkJCQkgKiBSZXNldCBjdXJzb3IgcG9zaXRpb24gZGF0YSB0byAic3RhcnQgb2YgcXVlcnki CkBAIC01MzIsMzMgKzQ3NiwxMSBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxp c3RJbmZvIHBhcmFtcywKIAkJCQlwb3J0YWwtPmF0U3RhcnQgPSB0cnVlOwogCQkJCXBvcnRhbC0+ YXRFbmQgPSBmYWxzZTsJLyogYWxsb3cgZmV0Y2hlcyAqLwogCQkJCXBvcnRhbC0+cG9ydGFsUG9z ID0gMDsKKwkJCQlwb3J0YWwtPnBsYW5fdmFsaWQgPSB0cnVlOwogCiAJCQkJUG9wQWN0aXZlU25h cHNob3QoKTsKIAkJCQlicmVhazsKIAotCQkJY2FzZSBQT1JUQUxfT05FX1JFVFVSTklORzoKLQkJ CWNhc2UgUE9SVEFMX09ORV9NT0RfV0lUSDoKLQotCQkJCS8qCi0JCQkJICogV2UgZG9uJ3Qgc3Rh cnQgdGhlIGV4ZWN1dG9yIHVudGlsIHdlIGFyZSB0b2xkIHRvIHJ1biB0aGUKLQkJCQkgKiBwb3J0 YWwuICBXZSBkbyBuZWVkIHRvIHNldCB1cCB0aGUgcmVzdWx0IHR1cGRlc2MuCi0JCQkJICovCi0J CQkJewotCQkJCQlQbGFubmVkU3RtdCAqcHN0bXQ7Ci0KLQkJCQkJcHN0bXQgPSBQb3J0YWxHZXRQ cmltYXJ5U3RtdChwb3J0YWwpOwotCQkJCQlwb3J0YWwtPnR1cERlc2MgPQotCQkJCQkJRXhlY0Ns ZWFuVHlwZUZyb21UTChwc3RtdC0+cGxhblRyZWUtPnRhcmdldGxpc3QpOwotCQkJCX0KLQotCQkJ CS8qCi0JCQkJICogUmVzZXQgY3Vyc29yIHBvc2l0aW9uIGRhdGEgdG8gInN0YXJ0IG9mIHF1ZXJ5 IgotCQkJCSAqLwotCQkJCXBvcnRhbC0+YXRTdGFydCA9IHRydWU7Ci0JCQkJcG9ydGFsLT5hdEVu ZCA9IGZhbHNlOwkvKiBhbGxvdyBmZXRjaGVzICovCi0JCQkJcG9ydGFsLT5wb3J0YWxQb3MgPSAw OwotCQkJCWJyZWFrOwotCiAJCQljYXNlIFBPUlRBTF9VVElMX1NFTEVDVDoKIAogCQkJCS8qCkBA IC01NzgsMTEgKzUwMCw5MCBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJ bmZvIHBhcmFtcywKIAkJCQlwb3J0YWwtPmF0U3RhcnQgPSB0cnVlOwogCQkJCXBvcnRhbC0+YXRF bmQgPSBmYWxzZTsJLyogYWxsb3cgZmV0Y2hlcyAqLwogCQkJCXBvcnRhbC0+cG9ydGFsUG9zID0g MDsKKwkJCQlwb3J0YWwtPnBsYW5fdmFsaWQgPSB0cnVlOwogCQkJCWJyZWFrOwogCiAJCQljYXNl IFBPUlRBTF9NVUxUSV9RVUVSWToKLQkJCQkvKiBOZWVkIGRvIG5vdGhpbmcgbm93ICovCisJCQkJ eworCQkJCQlMaXN0Q2VsbCAgICpsYzsKKwkJCQkJYm9vbAkJZmlyc3QgPSB0cnVlOworCisJCQkJ CS8qIFRha2UgbG9ja3MgaWYgdXNpbmcgYSBDYWNoZWRQbGFuICovCisJCQkJCW15ZWZsYWdzID0g MDsKKwkJCQkJaWYgKHBvcnRhbC0+Y3BsYW4pCisJCQkJCQlteWVmbGFncyB8PSBFWEVDX0ZMQUdf R0VUX0xPQ0tTOworCisJCQkJCWZvcmVhY2gobGMsIHBvcnRhbC0+c3RtdHMpCisJCQkJCXsKKwkJ CQkJCVBsYW5uZWRTdG10ICpwbGFuID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIGxjKTsKKwkJ CQkJCWJvb2wJCWlzX3V0aWxpdHkgPSAocGxhbi0+dXRpbGl0eVN0bXQgIT0gTlVMTCk7CisKKwkJ CQkJCS8qCisJCQkJCQkgKiBQdXNoIHRoZSBzbmFwc2hvdCB0byBiZSB1c2VkIGJ5IHRoZSBleGVj dXRvci4KKwkJCQkJCSAqLworCQkJCQkJaWYgKCFpc191dGlsaXR5KQorCQkJCQkJeworCQkJCQkJ CS8qCisJCQkJCQkJICogTXVzdCBjb3B5IHRoZSBzbmFwc2hvdCBpZiB3ZSdsbCBuZWVkIHRvIHVw ZGF0ZQorCQkJCQkJCSAqIGl0cyBjb21tYW5kIElELgorCQkJCQkJCSAqLworCQkJCQkJCWlmICgh Zmlyc3QpCisJCQkJCQkJCVB1c2hDb3BpZWRTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90 KCkpOworCQkJCQkJCWVsc2UKKwkJCQkJCQkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0 aW9uU25hcHNob3QoKSk7CisJCQkJCQl9CisKKwkJCQkJCS8qCisJCQkJCQkgKiBGcm9tIHRoZSAy bmQgc3RhdGVtZW50IG9ud2FyZHMsIHVwZGF0ZSB0aGUgY29tbWFuZAorCQkJCQkJICogSUQgYW5k IHRoZSBzbmFwc2hvdCB0byBtYXRjaC4KKwkJCQkJCSAqLworCQkJCQkJaWYgKCFmaXJzdCkKKwkJ CQkJCXsKKwkJCQkJCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCQkJCQkJCVVwZGF0ZUFj dGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CisJCQkJCQl9CisKKwkJCQkJCWZpcnN0ID0gZmFsc2U7 CisKKwkJCQkJCS8qCisJCQkJCQkgKiBDcmVhdGUgdGhlIFF1ZXJ5RGVzYyBvYmplY3QuICBEZXN0 UmVjZWl2ZXIgd2lsbAorCQkJCQkJICogYmUgc2V0IGluIFBvcnRhbFJ1bk11bHRpKCkuCisJCQkJ CQkgKi8KKwkJCQkJCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBwb3J0YWwtPmNw bGFuLAorCQkJCQkJCQkJCQkJCXBvcnRhbC0+c291cmNlVGV4dCwKKwkJCQkJCQkJCQkJCQkhaXNf dXRpbGl0eSA/CisJCQkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSA6CisJCQkJCQkJCQkJ CQkJSW52YWxpZFNuYXBzaG90LAorCQkJCQkJCQkJCQkJCUludmFsaWRTbmFwc2hvdCwKKwkJCQkJ CQkJCQkJCQlOVUxMLAorCQkJCQkJCQkJCQkJCXBhcmFtcywKKwkJCQkJCQkJCQkJCQlwb3J0YWwt PnF1ZXJ5RW52LCAwKTsKKworCQkJCQkJLyogUmVtZW1iZXIgZm9yIFBvcnRhbFJ1bk11bHRpKCkg Ki8KKwkJCQkJCXBvcnRhbC0+cWRlc2NzID0gbGFwcGVuZChwb3J0YWwtPnFkZXNjcywgcXVlcnlE ZXNjKTsKKworCQkJCQkJaWYgKGlzX3V0aWxpdHkpCisJCQkJCQkJY29udGludWU7CisKKwkJCQkJ CS8qCisJCQkJCQkgKiBDYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IK KwkJCQkJCSAqIGV4ZWN1dGlvbi4gIEEgY2FjaGVkIHBsYW4gbWF5IGdldCBpbnZhbGlkYXRlZCBh cworCQkJCQkJICogd2UncmUgZG9pbmcgdGhhdC4KKwkJCQkJCSAqLworCQkJCQkJRXhlY3V0b3JT dGFydChxdWVyeURlc2MsIG15ZWZsYWdzKTsKKwkJCQkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJ CQkJCQlpZiAoIXF1ZXJ5RGVzYy0+cGxhbl92YWxpZCkKKwkJCQkJCXsKKwkJCQkJCQlBc3NlcnQo cXVlcnlEZXNjLT5jcGxhbik7CisJCQkJCQkJUG9ydGFsUXVlcnlGaW5pc2gocXVlcnlEZXNjKTsK KwkJCQkJCQlwb3J0YWwtPnBsYW5fdmFsaWQgPSBmYWxzZTsKKwkJCQkJCQlnb3RvIGVhcmx5X2V4 aXQ7CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisKIAkJCQlwb3J0YWwtPnR1cERlc2MgPSBOVUxM OworCQkJCXBvcnRhbC0+cGxhbl92YWxpZCA9IHRydWU7CiAJCQkJYnJlYWs7CiAJCX0KIAl9CkBA IC01OTQsMTkgKzU5NSwxOCBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJ bmZvIHBhcmFtcywKIAkJLyogUmVzdG9yZSBnbG9iYWwgdmFycyBhbmQgcHJvcGFnYXRlIGVycm9y ICovCiAJCUFjdGl2ZVBvcnRhbCA9IHNhdmVBY3RpdmVQb3J0YWw7CiAJCUN1cnJlbnRSZXNvdXJj ZU93bmVyID0gc2F2ZVJlc291cmNlT3duZXI7Ci0JCVBvcnRhbENvbnRleHQgPSBzYXZlUG9ydGFs Q29udGV4dDsKIAogCQlQR19SRV9USFJPVygpOwogCX0KIAlQR19FTkRfVFJZKCk7CiAKKwlwb3J0 YWwtPnN0YXR1cyA9IFBPUlRBTF9SRUFEWTsKKworZWFybHlfZXhpdDoKIAlNZW1vcnlDb250ZXh0 U3dpdGNoVG8ob2xkQ29udGV4dCk7CiAKIAlBY3RpdmVQb3J0YWwgPSBzYXZlQWN0aXZlUG9ydGFs OwogCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gc2F2ZVJlc291cmNlT3duZXI7Ci0JUG9ydGFsQ29u dGV4dCA9IHNhdmVQb3J0YWxDb250ZXh0OwotCi0JcG9ydGFsLT5zdGF0dXMgPSBQT1JUQUxfUkVB RFk7CiB9CiAKIC8qCkBAIC0xMTkzLDcgKzExOTMsNyBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwg cG9ydGFsLAogCQkJICAgUXVlcnlDb21wbGV0aW9uICpxYykKIHsKIAlib29sCQlhY3RpdmVfc25h cHNob3Rfc2V0ID0gZmFsc2U7Ci0JTGlzdENlbGwgICAqc3RtdGxpc3RfaXRlbTsKKwlMaXN0Q2Vs bCAgICpxZGVzY19pdGVtOwogCiAJLyoKIAkgKiBJZiB0aGUgZGVzdGluYXRpb24gaXMgRGVzdFJl bW90ZUV4ZWN1dGUsIGNoYW5nZSB0byBEZXN0Tm9uZS4gIFRoZQpAQCAtMTIxNCw5ICsxMjE0LDEw IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJICogTG9vcCB0byBoYW5kbGUgdGhl IGluZGl2aWR1YWwgcXVlcmllcyBnZW5lcmF0ZWQgZnJvbSBhIHNpbmdsZSBwYXJzZXRyZWUKIAkg KiBieSBhbmFseXNpcyBhbmQgcmV3cml0ZS4KIAkgKi8KLQlmb3JlYWNoKHN0bXRsaXN0X2l0ZW0s IHBvcnRhbC0+c3RtdHMpCisJZm9yZWFjaChxZGVzY19pdGVtLCBwb3J0YWwtPnFkZXNjcykKIAl7 Ci0JCVBsYW5uZWRTdG10ICpwc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBzdG10bGlz dF9pdGVtKTsKKwkJUXVlcnlEZXNjICpxZGVzYyA9IChRdWVyeURlc2MgKikgbGZpcnN0KHFkZXNj X2l0ZW0pOworCQlQbGFubmVkU3RtdCAqcHN0bXQgPSBxZGVzYy0+cGxhbm5lZHN0bXQ7CiAKIAkJ LyoKIAkJICogSWYgd2UgZ290IGEgY2FuY2VsIHNpZ25hbCBpbiBwcmlvciBjb21tYW5kLCBxdWl0 CkBAIC0xMjcxLDIzICsxMjcyLDM4IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJ CQllbHNlCiAJCQkJVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKIAorCQkJLyoKKwkJ CSAqIFJ1biB0aGUgcGxhbiB0byBjb21wbGV0aW9uLgorCQkJICovCisJCQlxZGVzYy0+ZGVzdCA9 IGRlc3Q7CisJCQlFeGVjdXRvclJ1bihxZGVzYywgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIDBMLCB0 cnVlKTsKKworCQkJLyoKKwkJCSAqIEJ1aWxkIGNvbW1hbmQgY29tcGxldGlvbiBzdGF0dXMgZGF0 YSBpZiBuZWVkZWQuCisJCQkgKi8KIAkJCWlmIChwc3RtdC0+Y2FuU2V0VGFnKQogCQkJewotCQkJ CS8qIHN0YXRlbWVudCBjYW4gc2V0IHRhZyBzdHJpbmcgKi8KLQkJCQlQcm9jZXNzUXVlcnkocHN0 bXQsCi0JCQkJCQkJIHBvcnRhbC0+c291cmNlVGV4dCwKLQkJCQkJCQkgcG9ydGFsLT5wb3J0YWxQ YXJhbXMsCi0JCQkJCQkJIHBvcnRhbC0+cXVlcnlFbnYsCi0JCQkJCQkJIGRlc3QsIHFjKTsKLQkJ CX0KLQkJCWVsc2UKLQkJCXsKLQkJCQkvKiBzdG10IGFkZGVkIGJ5IHJld3JpdGUgY2Fubm90IHNl dCB0YWcgKi8KLQkJCQlQcm9jZXNzUXVlcnkocHN0bXQsCi0JCQkJCQkJIHBvcnRhbC0+c291cmNl VGV4dCwKLQkJCQkJCQkgcG9ydGFsLT5wb3J0YWxQYXJhbXMsCi0JCQkJCQkJIHBvcnRhbC0+cXVl cnlFbnYsCi0JCQkJCQkJIGFsdGRlc3QsIE5VTEwpOworCQkJCXN3aXRjaCAocWRlc2MtPm9wZXJh dGlvbikKKwkJCQl7CisJCQkJCWNhc2UgQ01EX1NFTEVDVDoKKwkJCQkJCVNldFF1ZXJ5Q29tcGxl dGlvbihxYywgQ01EVEFHX1NFTEVDVCwgcWRlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKKwkJ CQkJCWJyZWFrOworCQkJCQljYXNlIENNRF9JTlNFUlQ6CisJCQkJCQlTZXRRdWVyeUNvbXBsZXRp b24ocWMsIENNRFRBR19JTlNFUlQsIHFkZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7CisJCQkJ CQlicmVhazsKKwkJCQkJY2FzZSBDTURfVVBEQVRFOgorCQkJCQkJU2V0UXVlcnlDb21wbGV0aW9u KHFjLCBDTURUQUdfVVBEQVRFLCBxZGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOworCQkJCQkJ YnJlYWs7CisJCQkJCWNhc2UgQ01EX0RFTEVURToKKwkJCQkJCVNldFF1ZXJ5Q29tcGxldGlvbihx YywgQ01EVEFHX0RFTEVURSwgcWRlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKKwkJCQkJCWJy ZWFrOworCQkJCQljYXNlIENNRF9NRVJHRToKKwkJCQkJCVNldFF1ZXJ5Q29tcGxldGlvbihxYywg Q01EVEFHX01FUkdFLCBxZGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOworCQkJCQkJYnJlYWs7 CisJCQkJCWRlZmF1bHQ6CisJCQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19VTktO T1dOLCBxZGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOworCQkJCQkJYnJlYWs7CisJCQkJfQog CQkJfQogCiAJCQlpZiAobG9nX2V4ZWN1dG9yX3N0YXRzKQpAQCAtMTM0Niw4ICsxMzYyLDE1IEBA IFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJCSAqIEluY3JlbWVudCBjb21tYW5kIGNv dW50ZXIgYmV0d2VlbiBxdWVyaWVzLCBidXQgbm90IGFmdGVyIHRoZSBsYXN0CiAJCSAqIG9uZS4K IAkJICovCi0JCWlmIChsbmV4dChwb3J0YWwtPnN0bXRzLCBzdG10bGlzdF9pdGVtKSAhPSBOVUxM KQorCQlpZiAobG5leHQocG9ydGFsLT5xZGVzY3MsIHFkZXNjX2l0ZW0pICE9IE5VTEwpCiAJCQlD b21tYW5kQ291bnRlckluY3JlbWVudCgpOworCisJCWlmIChxZGVzYy0+ZXN0YXRlKQorCQl7CisJ CQlFeGVjdXRvckZpbmlzaChxZGVzYyk7CisJCQlFeGVjdXRvckVuZChxZGVzYyk7CisJCX0KKwkJ RnJlZVF1ZXJ5RGVzYyhxZGVzYyk7CiAJfQogCiAJLyogUG9wIHRoZSBzbmFwc2hvdCBpZiB3ZSBw dXNoZWQgb25lLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2Nh Y2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwppbmRleCBjNzYwNzg5 NWNkLi4wMTRjZDQ3NmY0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lz Y2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwpAQCAtMjA3 Myw2ICsyMDczLDI3IEBAIGdldF9yZWxfcGVyc2lzdGVuY2UoT2lkIHJlbGlkKQogCXJldHVybiBy ZXN1bHQ7CiB9CiAKKy8qCisgKiBnZXRfcmVsX3JlbGlzc2hhcmVkCisgKgorICoJCVJldHVybnMg aWYgdGhlIGdpdmVuIHJlbGF0aW9uIGlzIHNoYXJlZCBvciBub3QKKyAqLworYm9vbAorZ2V0X3Jl bF9yZWxpc3NoYXJlZChPaWQgcmVsaWQpCit7CisJSGVhcFR1cGxlCXRwOworCUZvcm1fcGdfY2xh c3MgcmVsdHVwOworCWJvb2wJCXJlc3VsdDsKKworCXRwID0gU2VhcmNoU3lzQ2FjaGUxKFJFTE9J RCwgT2JqZWN0SWRHZXREYXR1bShyZWxpZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0cCkp CisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciByZWxhdGlvbiAldSIsIHJl bGlkKTsKKwlyZWx0dXAgPSAoRm9ybV9wZ19jbGFzcykgR0VUU1RSVUNUKHRwKTsKKwlyZXN1bHQg PSByZWx0dXAtPnJlbGlzc2hhcmVkOworCVJlbGVhc2VTeXNDYWNoZSh0cCk7CisKKwlyZXR1cm4g cmVzdWx0OworfQogCiAvKgkJCQktLS0tLS0tLS0tIFRSQU5TRk9STSBDQUNIRSAtLS0tLS0tLS0t CQkJCQkJICovCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNo ZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKaW5kZXggNzdjMmJhM2Y4 Zi4uNGU0NTVkODE1ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNh Y2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKQEAgLTEwMCwx MyArMTAwLDEzIEBAIHN0YXRpYyB2b2lkIFJlbGVhc2VHZW5lcmljUGxhbihDYWNoZWRQbGFuU291 cmNlICpwbGFuc291cmNlKTsKIHN0YXRpYyBMaXN0ICpSZXZhbGlkYXRlQ2FjaGVkUXVlcnkoQ2Fj aGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAkJCQkJCQkJICAgUXVlcnlFbnZpcm9ubWVudCAq cXVlcnlFbnYpOwogc3RhdGljIGJvb2wgQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2Ug KnBsYW5zb3VyY2UpOworc3RhdGljIGJvb2wgR2VuZXJpY1BsYW5Jc1ZhbGlkKENhY2hlZFBsYW4g KmNwbGFuKTsKIHN0YXRpYyBDYWNoZWRQbGFuICpCdWlsZENhY2hlZFBsYW4oQ2FjaGVkUGxhblNv dXJjZSAqcGxhbnNvdXJjZSwgTGlzdCAqcWxpc3QsCiAJCQkJCQkJCSAgIFBhcmFtTGlzdEluZm8g Ym91bmRQYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKIHN0YXRpYyBib29sIGNo b29zZV9jdXN0b21fcGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQkJCQkJCSAg IFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMpOwogc3RhdGljIGRvdWJsZSBjYWNoZWRfcGxhbl9j b3N0KENhY2hlZFBsYW4gKnBsYW4sIGJvb2wgaW5jbHVkZV9wbGFubmVyKTsKIHN0YXRpYyBRdWVy eSAqUXVlcnlMaXN0R2V0UHJpbWFyeVN0bXQoTGlzdCAqc3RtdHMpOwotc3RhdGljIHZvaWQgQWNx dWlyZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpOwogc3RhdGlj IHZvaWQgQWNxdWlyZVBsYW5uZXJMb2NrcyhMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWlyZSk7 CiBzdGF0aWMgdm9pZCBTY2FuUXVlcnlGb3JMb2NrcyhRdWVyeSAqcGFyc2V0cmVlLCBib29sIGFj cXVpcmUpOwogc3RhdGljIGJvb2wgU2NhblF1ZXJ5V2Fsa2VyKE5vZGUgKm5vZGUsIGJvb2wgKmFj cXVpcmUpOwpAQCAtNzg3LDkgKzc4Nyw2IEBAIFJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQ bGFuU291cmNlICpwbGFuc291cmNlLAogICoKICAqIENhbGxlciBtdXN0IGhhdmUgYWxyZWFkeSBj YWxsZWQgUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5IHRvIHZlcmlmeSB0aGF0IHRoZQogICogcXVlcnl0 cmVlIGlzIHVwIHRvIGRhdGUuCi0gKgotICogT24gYSAidHJ1ZSIgcmV0dXJuLCB3ZSBoYXZlIGFj cXVpcmVkIHRoZSBsb2NrcyBuZWVkZWQgdG8gcnVuIHRoZSBwbGFuLgotICogKFdlIG11c3QgZG8g dGhpcyBmb3IgdGhlICJ0cnVlIiByZXN1bHQgdG8gYmUgcmFjZS1jb25kaXRpb24tZnJlZS4pCiAg Ki8KIHN0YXRpYyBib29sCiBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNv dXJjZSkKQEAgLTgwMyw2MCArODAwLDU2IEBAIENoZWNrQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291 cmNlICpwbGFuc291cmNlKQogCWlmICghcGxhbikKIAkJcmV0dXJuIGZhbHNlOwogCi0JQXNzZXJ0 KHBsYW4tPm1hZ2ljID09IENBQ0hFRFBMQU5fTUFHSUMpOwotCS8qIEdlbmVyaWMgcGxhbnMgYXJl IG5ldmVyIG9uZS1zaG90ICovCi0JQXNzZXJ0KCFwbGFuLT5pc19vbmVzaG90KTsKKwlpZiAoR2Vu ZXJpY1BsYW5Jc1ZhbGlkKHBsYW4pKQorCQlyZXR1cm4gdHJ1ZTsKIAogCS8qCi0JICogSWYgcGxh biBpc24ndCB2YWxpZCBmb3IgY3VycmVudCByb2xlLCB3ZSBjYW4ndCB1c2UgaXQuCisJICogUGxh biBoYXMgYmVlbiBpbnZhbGlkYXRlZCwgc28gdW5saW5rIGl0IGZyb20gdGhlIHBhcmVudCBhbmQg cmVsZWFzZSBpdC4KIAkgKi8KLQlpZiAocGxhbi0+aXNfdmFsaWQgJiYgcGxhbi0+ZGVwZW5kc09u Um9sZSAmJgotCQlwbGFuLT5wbGFuUm9sZUlkICE9IEdldFVzZXJJZCgpKQotCQlwbGFuLT5pc192 YWxpZCA9IGZhbHNlOworCVJlbGVhc2VHZW5lcmljUGxhbihwbGFuc291cmNlKTsKIAotCS8qCi0J ICogSWYgaXQgYXBwZWFycyB2YWxpZCwgYWNxdWlyZSBsb2NrcyBhbmQgcmVjaGVjazsgdGhpcyBp cyBtdWNoIHRoZSBzYW1lCi0JICogbG9naWMgYXMgaW4gUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5LCBi dXQgZm9yIGEgcGxhbi4KLQkgKi8KLQlpZiAocGxhbi0+aXNfdmFsaWQpCisJcmV0dXJuIGZhbHNl OworfQorCisvKgorICogR2VuZXJpY1BsYW5Jc1ZhbGlkCisgKgkJSXMgYSBnZW5lcmljIHBsYW4g c3RpbGwgdmFsaWQ/CisgKgorICogSXQgbWF5IGhhdmUgZ29uZSBzdGFsZSBkdWUgdG8gY29uY3Vy cmVudCBzY2hlbWEgbW9kaWZpY2F0aW9ucyBvZiByZWxhdGlvbnMKKyAqIG1lbnRpb25lZCBpbiB0 aGUgcGxhbiBvciBhIGNvdXBsZSBvZiBvdGhlciB0aGluZ3MgbWVudGlvbmVkIGJlbG93LgorICov CitzdGF0aWMgYm9vbAorR2VuZXJpY1BsYW5Jc1ZhbGlkKENhY2hlZFBsYW4gKmNwbGFuKQorewor CUFzc2VydChjcGxhbiAhPSBOVUxMKTsKKwlBc3NlcnQoY3BsYW4tPm1hZ2ljID09IENBQ0hFRFBM QU5fTUFHSUMpOworCS8qIEdlbmVyaWMgcGxhbnMgYXJlIG5ldmVyIG9uZS1zaG90ICovCisJQXNz ZXJ0KCFjcGxhbi0+aXNfb25lc2hvdCk7CisKKwlpZiAoY3BsYW4tPmlzX3ZhbGlkKQogCXsKIAkJ LyoKIAkJICogUGxhbiBtdXN0IGhhdmUgcG9zaXRpdmUgcmVmY291bnQgYmVjYXVzZSBpdCBpcyBy ZWZlcmVuY2VkIGJ5CiAJCSAqIHBsYW5zb3VyY2U7IHNvIG5vIG5lZWQgdG8gZmVhciBpdCBkaXNh cHBlYXJzIHVuZGVyIHVzIGhlcmUuCiAJCSAqLwotCQlBc3NlcnQocGxhbi0+cmVmY291bnQgPiAw KTsKLQotCQlBY3F1aXJlRXhlY3V0b3JMb2NrcyhwbGFuLT5zdG10X2xpc3QsIHRydWUpOworCQlB c3NlcnQoY3BsYW4tPnJlZmNvdW50ID4gMCk7CiAKIAkJLyoKLQkJICogSWYgcGxhbiB3YXMgdHJh bnNpZW50LCBjaGVjayB0byBzZWUgaWYgVHJhbnNhY3Rpb25YbWluIGhhcwotCQkgKiBhZHZhbmNl ZCwgYW5kIGlmIHNvIGludmFsaWRhdGUgaXQuCisJCSAqIElmIHBsYW4gaXNuJ3QgdmFsaWQgZm9y IGN1cnJlbnQgcm9sZSwgd2UgY2FuJ3QgdXNlIGl0LgogCQkgKi8KLQkJaWYgKHBsYW4tPmlzX3Zh bGlkICYmCi0JCQlUcmFuc2FjdGlvbklkSXNWYWxpZChwbGFuLT5zYXZlZF94bWluKSAmJgotCQkJ IVRyYW5zYWN0aW9uSWRFcXVhbHMocGxhbi0+c2F2ZWRfeG1pbiwgVHJhbnNhY3Rpb25YbWluKSkK LQkJCXBsYW4tPmlzX3ZhbGlkID0gZmFsc2U7CisJCWlmIChjcGxhbi0+ZGVwZW5kc09uUm9sZSAm JiBjcGxhbi0+cGxhblJvbGVJZCAhPSBHZXRVc2VySWQoKSkKKwkJCWNwbGFuLT5pc192YWxpZCA9 IGZhbHNlOwogCiAJCS8qCi0JCSAqIEJ5IG5vdywgaWYgYW55IGludmFsaWRhdGlvbiBoYXMgaGFw cGVuZWQsIHRoZSBpbnZhbCBjYWxsYmFjawotCQkgKiBmdW5jdGlvbnMgd2lsbCBoYXZlIG1hcmtl ZCB0aGUgcGxhbiBpbnZhbGlkLgorCQkgKiBJZiBwbGFuIHdhcyB0cmFuc2llbnQsIGNoZWNrIHRv IHNlZSBpZiBUcmFuc2FjdGlvblhtaW4gaGFzCisJCSAqIGFkdmFuY2VkLCBhbmQgaWYgc28gaW52 YWxpZGF0ZSBpdC4KIAkJICovCi0JCWlmIChwbGFuLT5pc192YWxpZCkKLQkJewotCQkJLyogU3Vj Y2Vzc2Z1bGx5IHJldmFsaWRhdGVkIGFuZCBsb2NrZWQgdGhlIHF1ZXJ5LiAqLwotCQkJcmV0dXJu IHRydWU7Ci0JCX0KLQotCQkvKiBPb3BzLCB0aGUgcmFjZSBjYXNlIGhhcHBlbmVkLiAgUmVsZWFz ZSB1c2VsZXNzIGxvY2tzLiAqLwotCQlBY3F1aXJlRXhlY3V0b3JMb2NrcyhwbGFuLT5zdG10X2xp c3QsIGZhbHNlKTsKKwkJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGNwbGFuLT5zYXZlZF94bWlu KSAmJgorCQkJIVRyYW5zYWN0aW9uSWRFcXVhbHMoY3BsYW4tPnNhdmVkX3htaW4sIFRyYW5zYWN0 aW9uWG1pbikpCisJCQljcGxhbi0+aXNfdmFsaWQgPSBmYWxzZTsKIAl9CiAKLQkvKgotCSAqIFBs YW4gaGFzIGJlZW4gaW52YWxpZGF0ZWQsIHNvIHVubGluayBpdCBmcm9tIHRoZSBwYXJlbnQgYW5k IHJlbGVhc2UgaXQuCi0JICovCi0JUmVsZWFzZUdlbmVyaWNQbGFuKHBsYW5zb3VyY2UpOwotCi0J cmV0dXJuIGZhbHNlOworCXJldHVybiBjcGxhbi0+aXNfdmFsaWQ7CiB9CiAKIC8qCkBAIC0xMTI2 LDkgKzExMTksNiBAQCBjYWNoZWRfcGxhbl9jb3N0KENhY2hlZFBsYW4gKnBsYW4sIGJvb2wgaW5j bHVkZV9wbGFubmVyKQogICogcGxhbiBvciBhIGN1c3RvbSBwbGFuIGZvciB0aGUgZ2l2ZW4gcGFy YW1ldGVyczogdGhlIGNhbGxlciBkb2VzIG5vdCBrbm93CiAgKiB3aGljaCBpdCB3aWxsIGdldC4K ICAqCi0gKiBPbiByZXR1cm4sIHRoZSBwbGFuIGlzIHZhbGlkIGFuZCB3ZSBoYXZlIHN1ZmZpY2ll bnQgbG9ja3MgdG8gYmVnaW4KLSAqIGV4ZWN1dGlvbi4KLSAqCiAgKiBPbiByZXR1cm4sIHRoZSBy ZWZjb3VudCBvZiB0aGUgcGxhbiBoYXMgYmVlbiBpbmNyZW1lbnRlZDsgYSBsYXRlcgogICogUmVs ZWFzZUNhY2hlZFBsYW4oKSBjYWxsIGlzIGV4cGVjdGVkLiAgSWYgIm93bmVyIiBpcyBub3QgTlVM TCB0aGVuCiAgKiB0aGUgcmVmY291bnQgaGFzIGJlZW4gcmVwb3J0ZWQgdG8gdGhhdCBSZXNvdXJj ZU93bmVyIChub3RlIHRoYXQgdGhpcwpAQCAtMTM2MCw4ICsxMzUwLDggQEAgQ2FjaGVkUGxhbkFs bG93c1NpbXBsZVZhbGlkaXR5Q2hlY2soQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAl9 CiAKIAkvKgotCSAqIFJlamVjdCBpZiBBY3F1aXJlRXhlY3V0b3JMb2NrcyB3b3VsZCBoYXZlIGFu eXRoaW5nIHRvIGRvLiAgVGhpcyBpcwotCSAqIHByb2JhYmx5IHVubmVjZXNzYXJ5IGdpdmVuIHRo ZSBwcmV2aW91cyBjaGVjaywgYnV0IGxldCdzIGJlIHNhZmUuCisJICogUmVqZWN0IGlmIHRoZSBl eGVjdXRvciB3b3VsZCBuZWVkIHRvIHRha2UgYWRkaXRpb25hbCBsb2NrcywgdGhhdCBpcywgaW4K KwkgKiBhZGRpdGlvbiB0byB0aG9zZSB0YWtlbiBieSBBY3F1aXJlUGxhbm5lckxvY2tzKCkgb24g YSBnaXZlbiBxdWVyeS4KIAkgKi8KIAlmb3JlYWNoKGxjLCBwbGFuLT5zdG10X2xpc3QpCiAJewpA QCAtMTczNSw1OCArMTcyNSw2IEBAIFF1ZXJ5TGlzdEdldFByaW1hcnlTdG10KExpc3QgKnN0bXRz KQogCXJldHVybiBOVUxMOwogfQogCi0vKgotICogQWNxdWlyZUV4ZWN1dG9yTG9ja3M6IGFjcXVp cmUgbG9ja3MgbmVlZGVkIGZvciBleGVjdXRpb24gb2YgYSBjYWNoZWQgcGxhbjsKLSAqIG9yIHJl bGVhc2UgdGhlbSBpZiBhY3F1aXJlIGlzIGZhbHNlLgotICovCi1zdGF0aWMgdm9pZAotQWNxdWly ZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpCi17Ci0JTGlzdENl bGwgICAqbGMxOwotCi0JZm9yZWFjaChsYzEsIHN0bXRfbGlzdCkKLQl7Ci0JCVBsYW5uZWRTdG10 ICpwbGFubmVkc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBsYzEpOwotCQlMaXN0Q2Vs bCAgICpsYzI7Ci0KLQkJaWYgKHBsYW5uZWRzdG10LT5jb21tYW5kVHlwZSA9PSBDTURfVVRJTElU WSkKLQkJewotCQkJLyoKLQkJCSAqIElnbm9yZSB1dGlsaXR5IHN0YXRlbWVudHMsIGV4Y2VwdCB0 aG9zZSAoc3VjaCBhcyBFWFBMQUlOKSB0aGF0Ci0JCQkgKiBjb250YWluIGEgcGFyc2VkLWJ1dC1u b3QtcGxhbm5lZCBxdWVyeS4gIE5vdGU6IGl0J3Mgb2theSB0byB1c2UKLQkJCSAqIFNjYW5RdWVy eUZvckxvY2tzLCBldmVuIHRob3VnaCB0aGUgcXVlcnkgaGFzbid0IGJlZW4gdGhyb3VnaAotCQkJ ICogcnVsZSByZXdyaXRpbmcsIGJlY2F1c2UgcmV3cml0aW5nIGRvZXNuJ3QgY2hhbmdlIHRoZSBx dWVyeQotCQkJICogcmVwcmVzZW50YXRpb24uCi0JCQkgKi8KLQkJCVF1ZXJ5CSAgICpxdWVyeSA9 IFV0aWxpdHlDb250YWluc1F1ZXJ5KHBsYW5uZWRzdG10LT51dGlsaXR5U3RtdCk7Ci0KLQkJCWlm IChxdWVyeSkKLQkJCQlTY2FuUXVlcnlGb3JMb2NrcyhxdWVyeSwgYWNxdWlyZSk7Ci0JCQljb250 aW51ZTsKLQkJfQotCi0JCWZvcmVhY2gobGMyLCBwbGFubmVkc3RtdC0+cnRhYmxlKQotCQl7Ci0J CQlSYW5nZVRibEVudHJ5ICpydGUgPSAoUmFuZ2VUYmxFbnRyeSAqKSBsZmlyc3QobGMyKTsKLQot CQkJaWYgKCEocnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTiB8fAotCQkJCSAgKHJ0ZS0+cnRl a2luZCA9PSBSVEVfU1VCUVVFUlkgJiYgT2lkSXNWYWxpZChydGUtPnJlbGlkKSkpKQotCQkJCWNv bnRpbnVlOwotCi0JCQkvKgotCQkJICogQWNxdWlyZSB0aGUgYXBwcm9wcmlhdGUgdHlwZSBvZiBs b2NrIG9uIGVhY2ggcmVsYXRpb24gT0lELiBOb3RlCi0JCQkgKiB0aGF0IHdlIGRvbid0IGFjdHVh bGx5IHRyeSB0byBvcGVuIHRoZSByZWwsIGFuZCBoZW5jZSB3aWxsIG5vdAotCQkJICogZmFpbCBp ZiBpdCdzIGJlZW4gZHJvcHBlZCBlbnRpcmVseSAtLS0gd2UnbGwganVzdCB0cmFuc2llbnRseQot CQkJICogYWNxdWlyZSBhIG5vbi1jb25mbGljdGluZyBsb2NrLgotCQkJICovCi0JCQlpZiAoYWNx dWlyZSkKLQkJCQlMb2NrUmVsYXRpb25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7 Ci0JCQllbHNlCi0JCQkJVW5sb2NrUmVsYXRpb25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2Nr bW9kZSk7Ci0JCX0KLQl9Ci19Ci0KIC8qCiAgKiBBY3F1aXJlUGxhbm5lckxvY2tzOiBhY3F1aXJl IGxvY2tzIG5lZWRlZCBmb3IgcGxhbm5pbmcgb2YgYSBxdWVyeXRyZWUgbGlzdDsKICAqIG9yIHJl bGVhc2UgdGhlbSBpZiBhY3F1aXJlIGlzIGZhbHNlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvbW1nci9wb3J0YWxtZW0uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVt LmMKaW5kZXggMDZkZmE4NWYwNC4uM2FkODBjN2VjYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvbW1nci9wb3J0YWxtZW0uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRh bG1lbS5jCkBAIC0yMDEsNiArMjAxLDEwIEBAIENyZWF0ZVBvcnRhbChjb25zdCBjaGFyICpuYW1l LCBib29sIGFsbG93RHVwLCBib29sIGR1cFNpbGVudCkKIAlwb3J0YWwtPnBvcnRhbENvbnRleHQg PSBBbGxvY1NldENvbnRleHRDcmVhdGUoVG9wUG9ydGFsQ29udGV4dCwKIAkJCQkJCQkJCQkJCSAg IlBvcnRhbENvbnRleHQiLAogCQkJCQkJCQkJCQkJICBBTExPQ1NFVF9TTUFMTF9TSVpFUyk7CisJ LyogaW5pdGlhbGl6ZSBwb3J0YWwncyBxdWVyeSBjb250ZXh0IHRvIHN0b3JlIFF1ZXJ5RGVzY3Mg Ki8KKwlwb3J0YWwtPnF1ZXJ5Q29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShUb3BQb3J0 YWxDb250ZXh0LAorCQkJCQkJCQkJCQkJICJQb3J0YWxRdWVyeUNvbnRleHQiLAorCQkJCQkJCQkJ CQkJIEFMTE9DU0VUX1NNQUxMX1NJWkVTKTsKIAogCS8qIGNyZWF0ZSBhIHJlc291cmNlIG93bmVy IGZvciB0aGUgcG9ydGFsICovCiAJcG9ydGFsLT5yZXNvd25lciA9IFJlc291cmNlT3duZXJDcmVh dGUoQ3VyVHJhbnNhY3Rpb25SZXNvdXJjZU93bmVyLApAQCAtMjI0LDYgKzIyOCw3IEBAIENyZWF0 ZVBvcnRhbChjb25zdCBjaGFyICpuYW1lLCBib29sIGFsbG93RHVwLCBib29sIGR1cFNpbGVudCkK IAogCS8qIGZvciBuYW1lZCBwb3J0YWxzIHJldXNlIHBvcnRhbC0+bmFtZSBjb3B5ICovCiAJTWVt b3J5Q29udGV4dFNldElkZW50aWZpZXIocG9ydGFsLT5wb3J0YWxDb250ZXh0LCBwb3J0YWwtPm5h bWVbMF0gPyBwb3J0YWwtPm5hbWUgOiAiPHVubmFtZWQ+Iik7CisJTWVtb3J5Q29udGV4dFNldElk ZW50aWZpZXIocG9ydGFsLT5xdWVyeUNvbnRleHQsIHBvcnRhbC0+bmFtZVswXSA/IHBvcnRhbC0+ bmFtZSA6ICI8dW5uYW1lZD4iKTsKIAogCXJldHVybiBwb3J0YWw7CiB9CkBAIC01OTQsNiArNTk5 LDcgQEAgUG9ydGFsRHJvcChQb3J0YWwgcG9ydGFsLCBib29sIGlzVG9wQ29tbWl0KQogCiAJLyog cmVsZWFzZSBzdWJzaWRpYXJ5IHN0b3JhZ2UgKi8KIAlNZW1vcnlDb250ZXh0RGVsZXRlKHBvcnRh bC0+cG9ydGFsQ29udGV4dCk7CisJTWVtb3J5Q29udGV4dERlbGV0ZShwb3J0YWwtPnF1ZXJ5Q29u dGV4dCk7CiAKIAkvKiByZWxlYXNlIHBvcnRhbCBzdHJ1Y3QgKGl0J3MgaW4gVG9wUG9ydGFsQ29u dGV4dCkgKi8KIAlwZnJlZShwb3J0YWwpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFu ZHMvZXhwbGFpbi5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCmluZGV4IDNkM2U2 MzJhMGMuLjM5MmFiYjUxNTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxh aW4uaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKQEAgLTg4LDcgKzg4LDEx IEBAIGV4dGVybiB2b2lkIEV4cGxhaW5PbmVVdGlsaXR5KE5vZGUgKnV0aWxpdHlTdG10LCBJbnRv Q2xhdXNlICppbnRvLAogCQkJCQkJCSAgRXhwbGFpblN0YXRlICplcywgY29uc3QgY2hhciAqcXVl cnlTdHJpbmcsCiAJCQkJCQkJICBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZpcm9ubWVu dCAqcXVlcnlFbnYpOwogCi1leHRlcm4gdm9pZCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAq cGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sCitleHRlcm4gUXVlcnlEZXNjICpFeHBsYWlu UXVlcnlEZXNjKFBsYW5uZWRTdG10ICpzdG10LCBzdHJ1Y3QgQ2FjaGVkUGxhbiAqY3BsYW4sCisJ CQkJIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3Rh dGUgKmVzLAorCQkJCSBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVl cnlFbnYpOworZXh0ZXJuIHZvaWQgRXhwbGFpbk9uZVBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2Ms CisJCQkJCQkgICBJbnRvQ2xhdXNlICppbnRvLAogCQkJCQkJICAgRXhwbGFpblN0YXRlICplcywg Y29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCQkJCQkgICBQYXJhbUxpc3RJbmZvIHBhcmFtcywg UXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCiAJCQkJCQkgICBjb25zdCBpbnN0cl90aW1lICpw bGFuZHVyYXRpb24sCkBAIC0xMDQsNiArMTA4LDcgQEAgZXh0ZXJuIHZvaWQgRXhwbGFpblF1ZXJ5 UGFyYW1ldGVycyhFeHBsYWluU3RhdGUgKmVzLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywgaW50IG0K IAogZXh0ZXJuIHZvaWQgRXhwbGFpbkJlZ2luT3V0cHV0KEV4cGxhaW5TdGF0ZSAqZXMpOwogZXh0 ZXJuIHZvaWQgRXhwbGFpbkVuZE91dHB1dChFeHBsYWluU3RhdGUgKmVzKTsKK2V4dGVybiB2b2lk IEV4cGxhaW5SZXNldE91dHB1dChFeHBsYWluU3RhdGUgKmVzKTsKIGV4dGVybiB2b2lkIEV4cGxh aW5TZXBhcmF0ZVBsYW5zKEV4cGxhaW5TdGF0ZSAqZXMpOwogCiBleHRlcm4gdm9pZCBFeHBsYWlu UHJvcGVydHlMaXN0KGNvbnN0IGNoYXIgKnFsYWJlbCwgTGlzdCAqZGF0YSwKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9l eGVjZGVzYy5oCmluZGV4IGFmMmJmMzZkZmIuLmMzNmMyNWI0OTcgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhl Y2Rlc2MuaApAQCAtMzIsOSArMzIsMTIgQEAKICAqLwogdHlwZWRlZiBzdHJ1Y3QgUXVlcnlEZXNj CiB7CisJTm9kZVRhZwkJdHlwZTsKKwogCS8qIFRoZXNlIGZpZWxkcyBhcmUgcHJvdmlkZWQgYnkg Q3JlYXRlUXVlcnlEZXNjICovCiAJQ21kVHlwZQkJb3BlcmF0aW9uOwkJLyogQ01EX1NFTEVDVCwg Q01EX1VQREFURSwgZXRjLiAqLwogCVBsYW5uZWRTdG10ICpwbGFubmVkc3RtdDsJLyogcGxhbm5l cidzIG91dHB1dCAoY291bGQgYmUgdXRpbGl0eSwgdG9vKSAqLworCXN0cnVjdCBDYWNoZWRQbGFu ICpjcGxhbjsJLyogQ2FjaGVkUGxhbiwgaWYgcGxhbm5lZHN0bXQgaXMgZnJvbSBvbmUgKi8KIAlj b25zdCBjaGFyICpzb3VyY2VUZXh0OwkJLyogc291cmNlIHRleHQgb2YgdGhlIHF1ZXJ5ICovCiAJ U25hcHNob3QJc25hcHNob3Q7CQkvKiBzbmFwc2hvdCB0byB1c2UgZm9yIHF1ZXJ5ICovCiAJU25h cHNob3QJY3Jvc3NjaGVja19zbmFwc2hvdDsJLyogY3Jvc3NjaGVjayBmb3IgUkkgdXBkYXRlL2Rl bGV0ZSAqLwpAQCAtNDcsNiArNTAsNyBAQCB0eXBlZGVmIHN0cnVjdCBRdWVyeURlc2MKIAlUdXBs ZURlc2MJdHVwRGVzYzsJCS8qIGRlc2NyaXB0b3IgZm9yIHJlc3VsdCB0dXBsZXMgKi8KIAlFU3Rh dGUJICAgKmVzdGF0ZTsJCQkvKiBleGVjdXRvcidzIHF1ZXJ5LXdpZGUgc3RhdGUgKi8KIAlQbGFu U3RhdGUgICpwbGFuc3RhdGU7CQkvKiB0cmVlIG9mIHBlci1wbGFuLW5vZGUgc3RhdGUgKi8KKwli b29sCQlwbGFuX3ZhbGlkOwkJLyogaXMgcGxhbnN0YXRlIHRyZWUgZnVsbHkgdmFsaWQ/ICovCiAK IAkvKiBUaGlzIGZpZWxkIGlzIHNldCBieSBFeGVjdXRvclJ1biAqLwogCWJvb2wJCWFscmVhZHlf ZXhlY3V0ZWQ7CS8qIHRydWUgaWYgcHJldmlvdXNseSBleGVjdXRlZCAqLwpAQCAtNTcsNiArNjEs NyBAQCB0eXBlZGVmIHN0cnVjdCBRdWVyeURlc2MKIAogLyogaW4gcHF1ZXJ5LmMgKi8KIGV4dGVy biBRdWVyeURlc2MgKkNyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCisJ CQkJCQkJCSAgc3RydWN0IENhY2hlZFBsYW4gKmNwbGFuLAogCQkJCQkJCQkgIGNvbnN0IGNoYXIg KnNvdXJjZVRleHQsCiAJCQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QsCiAJCQkJCQkJCSAgU25h cHNob3QgY3Jvc3NjaGVja19zbmFwc2hvdCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL2V4ZWN1dG9yLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCmluZGV4IGY5 ZTZiZjNkNGEuLmE2YWM3NzI0MDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4 ZWN1dG9yLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaApAQCAtMTksNiAr MTksNyBAQAogI2luY2x1ZGUgIm5vZGVzL2xvY2tvcHRpb25zLmgiCiAjaW5jbHVkZSAibm9kZXMv cGFyc2Vub2Rlcy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRp bHMvcGxhbmNhY2hlLmgiCiAKIAogLyoKQEAgLTYxLDYgKzYyLDEwIEBACiAgKiBXSVRIX05PX0RB VEEgaW5kaWNhdGVzIHRoYXQgd2UgYXJlIHBlcmZvcm1pbmcgUkVGUkVTSCBNQVRFUklBTElaRUQg VklFVwogICogLi4uIFdJVEggTk8gREFUQS4gIEN1cnJlbnRseSwgdGhlIG9ubHkgZWZmZWN0IGlz IHRvIHN1cHByZXNzIGVycm9ycyBhYm91dAogICogc2Nhbm5pbmcgdW5wb3B1bGF0ZWQgbWF0ZXJp YWxpemVkIHZpZXdzLgorICoKKyAqIEdFVF9MT0NLUyBpbmRpY2F0ZXMgdGhhdCB0aGUgY2FsbGVy IG9mIEV4ZWN1dG9yU3RhcnQoKSBpcyBleGVjdXRpbmcgYQorICogY2FjaGVkIHBsYW4gd2hpY2gg bXVzdCBiZSB2YWxpZGF0ZWQgYnkgdGFraW5nIHRoZSByZW1haW5pbmcgbG9ja3MgbmVjZXNzYXJ5 CisgKiBmb3IgZXhlY3V0aW9uLgogICovCiAjZGVmaW5lIEVYRUNfRkxBR19FWFBMQUlOX09OTFkJ CTB4MDAwMQkvKiBFWFBMQUlOLCBubyBBTkFMWVpFICovCiAjZGVmaW5lIEVYRUNfRkxBR19FWFBM QUlOX0dFTkVSSUMJMHgwMDAyCS8qIEVYUExBSU4gKEdFTkVSSUNfUExBTikgKi8KQEAgLTY5LDYg Kzc0LDggQEAKICNkZWZpbmUgRVhFQ19GTEFHX01BUksJCQkJMHgwMDEwCS8qIG5lZWQgbWFyay9y ZXN0b3JlICovCiAjZGVmaW5lIEVYRUNfRkxBR19TS0lQX1RSSUdHRVJTCQkweDAwMjAJLyogc2tp cCBBZnRlclRyaWdnZXIgc2V0dXAgKi8KICNkZWZpbmUgRVhFQ19GTEFHX1dJVEhfTk9fREFUQQkJ MHgwMDQwCS8qIFJFRlJFU0ggLi4uIFdJVEggTk8gREFUQSAqLworI2RlZmluZSBFWEVDX0ZMQUdf R0VUX0xPQ0tTCQkJMHgwNDAwCS8qIHNob3VsZCB0aGUgZXhlY3V0b3IgbG9jaworCQkJCQkJCQkJ CQkgKiByZWxhdGlvbnM/ICovCiAKIAogLyogSG9vayBmb3IgcGx1Z2lucyB0byBnZXQgY29udHJv bCBpbiBFeGVjdXRvclN0YXJ0KCkgKi8KQEAgLTI1NSw2ICsyNjIsMTMgQEAgZXh0ZXJuIHZvaWQg RXhlY0VuZE5vZGUoUGxhblN0YXRlICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNTaHV0ZG93bk5v ZGUoUGxhblN0YXRlICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNTZXRUdXBsZUJvdW5kKGludDY0 IHR1cGxlc19uZWVkZWQsIFBsYW5TdGF0ZSAqY2hpbGRfbm9kZSk7CiAKKy8qIElzIHRoZSBjYWNo ZWQgcGxhbiovCitzdGF0aWMgaW5saW5lIGJvb2wKK0V4ZWNQbGFuU3RpbGxWYWxpZChFU3RhdGUg KmVzdGF0ZSkKK3sKKwlyZXR1cm4gZXN0YXRlLT5lc19jYWNoZWRwbGFuID09IE5VTEwgPyB0cnVl IDoKKwkJQ2FjaGVkUGxhblN0aWxsVmFsaWQoZXN0YXRlLT5lc19jYWNoZWRwbGFuKTsKK30KIAog LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogICoJCUV4ZWNQcm9jTm9kZQpAQCAtNTg5LDYgKzYwMyw4IEBAIGV4ZWNfcnRf ZmV0Y2goSW5kZXggcnRpLCBFU3RhdGUgKmVzdGF0ZSkKIH0KIAogZXh0ZXJuIFJlbGF0aW9uIEV4 ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oRVN0YXRlICplc3RhdGUsIEluZGV4IHJ0aSk7CitleHRl cm4gdm9pZCBFeGVjTG9ja1ZpZXdSZWxhdGlvbnMoTGlzdCAqdmlld1JlbGF0aW9ucywgRVN0YXRl ICplc3RhdGUpOworZXh0ZXJuIHZvaWQgRXhlY0xvY2tBcHBlbmROb25MZWFmUmVsYXRpb25zKEVT dGF0ZSAqZXN0YXRlLCBMaXN0ICphbGxwYXJ0cmVsaWRzKTsKIGV4dGVybiB2b2lkIEV4ZWNJbml0 UmVzdWx0UmVsYXRpb24oRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbElu Zm8sCiAJCQkJCQkJCSAgIEluZGV4IHJ0aSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25v ZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggZDk3 ZjVhOGU3ZC4uZGZhNzI4NDhjNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTYyMyw2ICs2MjMs OCBAQCB0eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAkJCQkJCQkJCQkgKiBFeGVjUm93TWFya3MsIG9y IE5VTEwgaWYgbm9uZSAqLwogCUxpc3QJICAgKmVzX3J0ZXBlcm1pbmZvczsJLyogTGlzdCBvZiBS VEVQZXJtaXNzaW9uSW5mbyAqLwogCVBsYW5uZWRTdG10ICplc19wbGFubmVkc3RtdDsJLyogbGlu ayB0byB0b3Agb2YgcGxhbiB0cmVlICovCisJc3RydWN0IENhY2hlZFBsYW4gKmVzX2NhY2hlZHBs YW47CS8qIENhY2hlZFBsYW4gaWYgcGxhbm5lZHN0bXQgaXMgZnJvbQorCQkJCQkJCQkJCSAqIG9u ZSAqLwogCUxpc3QJICAgKmVzX3BhcnRfcHJ1bmVfaW5mb3M7CS8qIFBsYW5uZWRTdG10LnBhcnRQ cnVuZUluZm9zICovCiAJY29uc3QgY2hhciAqZXNfc291cmNlVGV4dDsJLyogU291cmNlIHRleHQg ZnJvbSBRdWVyeURlc2MgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5v ZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAppbmRleCBkNjFhNjJkYTE5Li45 Yjg4OGIwZDc1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAorKysg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaApAQCAtMTE2LDYgKzExNiw5IEBAIHR5cGVk ZWYgc3RydWN0IFBsYW5uZXJHbG9iYWwKIAkvKiAiZmxhdCIgbGlzdCBvZiBSVEVQZXJtaXNzaW9u SW5mb3MgKi8KIAlMaXN0CSAgICpmaW5hbHJ0ZXBlcm1pbmZvczsKIAorCS8qICJmbGF0IiBsaXN0 IG9mIGludGVnZXIgUlQgaW5kZXhlcyAqLworCUxpc3QJICAgKnZpZXdSZWxhdGlvbnM7CisKIAkv KiAiZmxhdCIgbGlzdCBvZiBQbGFuUm93TWFya3MgKi8KIAlMaXN0CSAgICpmaW5hbHJvd21hcmtz OwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3NyYy9pbmNs dWRlL25vZGVzL3BsYW5ub2Rlcy5oCmluZGV4IGEwYmIxNmNmZjQuLjdjYWU2MjRiYmQgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL3BsYW5ub2Rlcy5oCkBAIC03OCw2ICs3OCw5IEBAIHR5cGVkZWYgc3RydWN0IFBsYW5uZWRT dG10CiAJTGlzdAkgICAqcGVybUluZm9zOwkJLyogbGlzdCBvZiBSVEVQZXJtaXNzaW9uSW5mbyBu b2RlcyBmb3IgcnRhYmxlCiAJCQkJCQkJCSAqIGVudHJpZXMgbmVlZGluZyBvbmUgKi8KIAorCUxp c3QJICAgKnZpZXdSZWxhdGlvbnM7CS8qIGludGVnZXIgbGlzdCBvZiBSVCBpbmRleGVzLCBvciBO SUwgaWYgbm8KKwkJCQkJCQkJICogdmlld3MgYXJlIHF1ZXJpZWQgKi8KKwogCS8qIHJ0YWJsZSBp bmRleGVzIG9mIHRhcmdldCByZWxhdGlvbnMgZm9yIElOU0VSVC9VUERBVEUvREVMRVRFL01FUkdF ICovCiAJTGlzdAkgICAqcmVzdWx0UmVsYXRpb25zOwkvKiBpbnRlZ2VyIGxpc3Qgb2YgUlQgaW5k ZXhlcywgb3IgTklMICovCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5o IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmgKaW5kZXggNGVlOTFlM2NmOS4uNTk4YmYyNjg4 YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmgKKysrIGIvc3JjL2luY2x1 ZGUvc3RvcmFnZS9sbWdyLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgZXh0ZXJuIGJvb2wgQ29uZGl0aW9u YWxMb2NrUmVsYXRpb24oUmVsYXRpb24gcmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlKTsKIGV4 dGVybiB2b2lkIFVubG9ja1JlbGF0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLCBMT0NLTU9ERSBsb2Nr bW9kZSk7CiBleHRlcm4gYm9vbCBDaGVja1JlbGF0aW9uTG9ja2VkQnlNZShSZWxhdGlvbiByZWxh dGlvbiwgTE9DS01PREUgbG9ja21vZGUsCiAJCQkJCQkJCQlib29sIG9yc3Ryb25nZXIpOworZXh0 ZXJuIGJvb2wgQ2hlY2tSZWxMb2NrZWRCeU1lKE9pZCByZWxpZCwgTE9DS01PREUgbG9ja21vZGUs IGJvb2wgb3JzdHJvbmdlcik7CiBleHRlcm4gYm9vbCBMb2NrSGFzV2FpdGVyc1JlbGF0aW9uKFJl bGF0aW9uIHJlbGF0aW9uLCBMT0NLTU9ERSBsb2NrbW9kZSk7CiAKIGV4dGVybiB2b2lkIExvY2tS ZWxhdGlvbklkRm9yU2Vzc2lvbihMb2NrUmVsSWQgKnJlbGlkLCBMT0NLTU9ERSBsb2NrbW9kZSk7 CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCBiL3NyYy9pbmNsdWRl L3V0aWxzL2xzeXNjYWNoZS5oCmluZGV4IDRmNTQxOGI5NzIuLjMwNzRlNjA0ZGQgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxz L2xzeXNjYWNoZS5oCkBAIC0xMzksNiArMTM5LDcgQEAgZXh0ZXJuIGNoYXIgZ2V0X3JlbF9yZWxr aW5kKE9pZCByZWxpZCk7CiBleHRlcm4gYm9vbCBnZXRfcmVsX3JlbGlzcGFydGl0aW9uKE9pZCBy ZWxpZCk7CiBleHRlcm4gT2lkCWdldF9yZWxfdGFibGVzcGFjZShPaWQgcmVsaWQpOwogZXh0ZXJu IGNoYXIgZ2V0X3JlbF9wZXJzaXN0ZW5jZShPaWQgcmVsaWQpOworZXh0ZXJuIGJvb2wgZ2V0X3Jl bF9yZWxpc3NoYXJlZChPaWQgcmVsaWQpOwogZXh0ZXJuIE9pZAlnZXRfdHJhbnNmb3JtX2Zyb21z cWwoT2lkIHR5cGlkLCBPaWQgbGFuZ2lkLCBMaXN0ICp0cmZ0eXBlcyk7CiBleHRlcm4gT2lkCWdl dF90cmFuc2Zvcm1fdG9zcWwoT2lkIHR5cGlkLCBPaWQgbGFuZ2lkLCBMaXN0ICp0cmZ0eXBlcyk7 CiBleHRlcm4gYm9vbCBnZXRfdHlwaXNkZWZpbmVkKE9pZCB0eXBpZCk7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNo ZS5oCmluZGV4IGE0NDMxODFkNDEuLjg5OTBmZTcyZTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3V0aWxzL3BsYW5jYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCkBA IC0yMjEsNiArMjIxLDIwIEBAIGV4dGVybiBDYWNoZWRQbGFuICpHZXRDYWNoZWRQbGFuKENhY2hl ZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJCSBQYXJhbUxpc3RJbmZvIGJvdW5kUGFy YW1zLAogCQkJCQkJCQkgUmVzb3VyY2VPd25lciBvd25lciwKIAkJCQkJCQkJIFF1ZXJ5RW52aXJv bm1lbnQgKnF1ZXJ5RW52KTsKKworLyoKKyAqIENhY2hlZFBsYW5TdGlsbFZhbGlkCisgKgkJUmV0 dXJucyBpZiBhIGNhY2hlZCBnZW5lcmljIHBsYW4gaXMgc3RpbGwgdmFsaWQKKyAqCisgKiBDYWxs ZWQgYnkgdGhlIGV4ZWN1dG9yIG9uIGV2ZXJ5IHJlbGF0aW9uIGxvY2sgdGFrZW4gd2hlbiBpbml0 aWFsaXppbmcgdGhlCisgKiBwbGFuIHRyZWUgaW4gdGhlIENhY2hlZFBsYW4uCisgKi8KK3N0YXRp YyBpbmxpbmUgYm9vbAorQ2FjaGVkUGxhblN0aWxsVmFsaWQoQ2FjaGVkUGxhbiAqY3BsYW4pCit7 CisJcmV0dXJuIGNwbGFuLT5pc192YWxpZDsKK30KKwogZXh0ZXJuIHZvaWQgUmVsZWFzZUNhY2hl ZFBsYW4oQ2FjaGVkUGxhbiAqcGxhbiwgUmVzb3VyY2VPd25lciBvd25lcik7CiAKIGV4dGVybiBi b29sIENhY2hlZFBsYW5BbGxvd3NTaW1wbGVWYWxpZGl0eUNoZWNrKENhY2hlZFBsYW5Tb3VyY2Ug KnBsYW5zb3VyY2UsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaCBiL3Ny Yy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oCmluZGV4IGFhMDhiMWUwZmMuLjMzMmEwOGNjYjQgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0 aWxzL3BvcnRhbC5oCkBAIC0xMzgsNiArMTM4LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUG9ydGFsRGF0 YQogCVF1ZXJ5Q29tcGxldGlvbiBxYzsJCQkvKiBjb21tYW5kIGNvbXBsZXRpb24gZGF0YSBmb3Ig ZXhlY3V0ZWQgcXVlcnkgKi8KIAlMaXN0CSAgICpzdG10czsJCQkvKiBsaXN0IG9mIFBsYW5uZWRT dG10cyAqLwogCUNhY2hlZFBsYW4gKmNwbGFuOwkJCS8qIENhY2hlZFBsYW4sIGlmIHN0bXRzIGFy ZSBmcm9tIG9uZSAqLworCUxpc3QJICAgKnFkZXNjczsJCQkvKiBsaXN0IG9mIFF1ZXJ5RGVzY3Mg Ki8KKwlib29sCQlwbGFuX3ZhbGlkOwkJLyogYXJlIHBsYW4ocykgcmVhZHkgZm9yIGV4ZWN1dGlv bj8gKi8KKwlNZW1vcnlDb250ZXh0IHF1ZXJ5Q29udGV4dDsJLyogbWVtb3J5IGZvciBRdWVyeURl c2NzIGFuZCBjaGlsZHJlbiAqLwogCiAJUGFyYW1MaXN0SW5mbyBwb3J0YWxQYXJhbXM7IC8qIHBh cmFtcyB0byBwYXNzIHRvIHF1ZXJ5ICovCiAJUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnY7IC8q IGVudmlyb25tZW50IGZvciBxdWVyeSAqLwpAQCAtMjQyLDYgKzI0NSw3IEBAIGV4dGVybiB2b2lk IFBvcnRhbERlZmluZVF1ZXJ5KFBvcnRhbCBwb3J0YWwsCiAJCQkJCQkJICBDb21tYW5kVGFnIGNv bW1hbmRUYWcsCiAJCQkJCQkJICBMaXN0ICpzdG10cywKIAkJCQkJCQkgIENhY2hlZFBsYW4gKmNw bGFuKTsKK2V4dGVybiB2b2lkIFBvcnRhbFF1ZXJ5RmluaXNoKFF1ZXJ5RGVzYyAqcXVlcnlEZXNj KTsKIGV4dGVybiBQbGFubmVkU3RtdCAqUG9ydGFsR2V0UHJpbWFyeVN0bXQoUG9ydGFsIHBvcnRh bCk7CiBleHRlcm4gdm9pZCBQb3J0YWxDcmVhdGVIb2xkU3RvcmUoUG9ydGFsIHBvcnRhbCk7CiBl eHRlcm4gdm9pZCBQb3J0YWxIYXNoVGFibGVEZWxldGVBbGwodm9pZCk7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVs ZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlCmluZGV4IDcwZjI0ZTg0NmQuLjJmY2E4NGQwMjcg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlCisr KyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlCkBAIC04LDcgKzgs OCBAQCBPQkpTID0gXAogCWRlbGF5X2V4ZWN1dGlvbi5vCiAKIElTT0xBVElPTiA9IHBhcnRpdGlv bi1hZGRpdGlvbiBcCi0JICAgIHBhcnRpdGlvbi1yZW1vdmFsLTEKKwkgICAgcGFydGl0aW9uLXJl bW92YWwtMSBcCisJCWNhY2hlZC1wbGFuLXJlcGxhbgogCiBpZmRlZiBVU0VfUEdYUwogUEdfQ09O RklHID0gcGdfY29uZmlnCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1 dGlvbi9kZWxheV9leGVjdXRpb24uYyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9u L2RlbGF5X2V4ZWN1dGlvbi5jCmluZGV4IDdjZDc2ZWIzNGIuLjVkN2EzZTk4NTggMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jCisr KyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jCkBA IC0xLDE0ICsxLDE4IEBACiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCiAgKiBkZWxheV9leGVjdXRp b24uYwotICoJCVRlc3QgbW9kdWxlIHRvIGFsbG93IGRlbGF5IGJldHdlZW4gcGFyc2luZyBhbmQg ZXhlY3V0aW9uIG9mIGEgcXVlcnkuCisgKgkJVGVzdCBtb2R1bGUgdG8gaW50cm9kdWNlIGRlbGF5 IGF0IHZhcmlvdXMgcG9pbnRzIGR1cmluZyBleGVjdXRpb24gb2YgYQorICoJCXF1ZXJ5IHRvIHRl c3QgdGhhdCBleGVjdXRpb24gcHJvY2VlZHMgc2FmZWx5IGluIGxpZ2h0IG9mIGNvbmN1cnJlbnQK KyAqCQljaGFuZ2VzLgogICoKICAqIFRoZSBkZWxheSBpcyBpbXBsZW1lbnRlZCBieSB0YWtpbmcg YW5kIGltbWVkaWF0ZWx5IHJlbGVhc2luZyBhIHNwZWNpZmllZAogICogYWR2aXNvcnkgbG9jay4g IElmIGFub3RoZXIgcHJvY2VzcyBoYXMgcHJldmlvdXNseSB0YWtlbiB0aGF0IGxvY2ssIHRoZQog ICogY3VycmVudCBwcm9jZXNzIHdpbGwgYmUgYmxvY2tlZCB1bnRpbCB0aGUgbG9jayBpcyByZWxl YXNlZDsgb3RoZXJ3aXNlLAogICogdGhlcmUncyBubyBlZmZlY3QuICBUaGlzIGFsbG93cyBhbiBp c29sYXRpb250ZXN0ZXIgc2NyaXB0IHRvIHJlbGlhYmx5Ci0gKiB0ZXN0IGJlaGF2aW9ycyB3aGVy ZSBzb21lIHNwZWNpZmllZCBhY3Rpb24gaGFwcGVucyBpbiBhbm90aGVyIGJhY2tlbmQKLSAqIGJl dHdlZW4gcGFyc2luZyBhbmQgZXhlY3V0aW9uIG9mIGFueSBkZXNpcmVkIHF1ZXJ5LgorICogdGVz dCBiZWhhdmlvcnMgd2hlcmUgc29tZSBzcGVjaWZpZWQgYWN0aW9uIGhhcHBlbnMgaW4gYW5vdGhl ciBiYWNrZW5kIGluCisgKiBhIGNvdXBsZSBvZiBjYXNlczogMSkgYmV0d2VlbiBwYXJzaW5nIGFu ZCBleGVjdXRpb24gb2YgYW55IGRlc2lyZWQgcXVlcnkKKyAqIHdoZW4gdXNpbmcgdGhlIHBsYW5u ZXJfaG9vaywgMikgYmV0d2VlbiBSZXZhbGlkYXRlQ2FjaGVkUXVlcnkoKSBhbmQKKyAqIEV4ZWN1 dG9yU3RhcnQoKSB3aGVuIHVzaW5nIHRoZSBFeGVjdXRvclN0YXJ0X2hvb2suCiAgKgogICogQ29w eXJpZ2h0IChjKSAyMDIwLTIwMjMsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3Vw CiAgKgpAQCAtMjIsNiArMjYsNyBAQAogCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAKKyNpbmNsdWRl ICJleGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgIm9wdGltaXplci9wbGFubmVyLmgiCiAj aW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKQEAgLTMy LDkgKzM3LDExIEBAIFBHX01PRFVMRV9NQUdJQzsKIAogLyogR1VDOiBhZHZpc29yeSBsb2NrIElE IHRvIHVzZS4gIFplcm8gZGlzYWJsZXMgdGhlIGZlYXR1cmUuICovCiBzdGF0aWMgaW50CXBvc3Rf cGxhbm5pbmdfbG9ja19pZCA9IDA7CitzdGF0aWMgaW50CWV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQg PSAwOwogCi0vKiBTYXZlIHByZXZpb3VzIHBsYW5uZXIgaG9vayB1c2VyIHRvIGJlIGEgZ29vZCBj aXRpemVuICovCisvKiBTYXZlIHByZXZpb3VzIGhvb2sgdXNlcnMgdG8gYmUgYSBnb29kIGNpdGl6 ZW4gKi8KIHN0YXRpYyBwbGFubmVyX2hvb2tfdHlwZSBwcmV2X3BsYW5uZXJfaG9vayA9IE5VTEw7 CitzdGF0aWMgRXhlY3V0b3JTdGFydF9ob29rX3R5cGUgcHJldl9FeGVjdXRvclN0YXJ0X2hvb2sg PSBOVUxMOwogCiAKIC8qIHBsYW5uZXJfaG9vayBmdW5jdGlvbiB0byBwcm92aWRlIHRoZSBkZXNp cmVkIGRlbGF5ICovCkBAIC03MCwxMSArNzcsNDEgQEAgZGVsYXlfZXhlY3V0aW9uX3BsYW5uZXIo UXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcsCiAJcmV0dXJuIHJlc3VsdDsK IH0KIAorLyogcGxhbm5lcl9ob29rIGZ1bmN0aW9uIHRvIHByb3ZpZGUgdGhlIGRlc2lyZWQgZGVs YXkgKi8KK3N0YXRpYyB2b2lkCitkZWxheV9leGVjdXRpb25fRXhlY3V0b3JTdGFydChRdWVyeURl c2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKK3sKKwkvKiBJZiBlbmFibGVkLCBkZWxheSBieSB0 YWtpbmcgYW5kIHJlbGVhc2luZyB0aGUgc3BlY2lmaWVkIGxvY2sgKi8KKwlpZiAoZXhlY3V0b3Jf c3RhcnRfbG9ja19pZCAhPSAwKQorCXsKKwkJRGlyZWN0RnVuY3Rpb25DYWxsMShwZ19hZHZpc29y eV9sb2NrX2ludDgsCisJCQkJCQkJSW50NjRHZXREYXR1bSgoaW50NjQpIGV4ZWN1dG9yX3N0YXJ0 X2xvY2tfaWQpKTsKKwkJRGlyZWN0RnVuY3Rpb25DYWxsMShwZ19hZHZpc29yeV91bmxvY2tfaW50 OCwKKwkJCQkJCQlJbnQ2NEdldERhdHVtKChpbnQ2NCkgZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCkp OworCisJCS8qCisJCSAqIEVuc3VyZSB0aGF0IHdlIG5vdGljZSBhbnkgcGVuZGluZyBpbnZhbGlk YXRpb25zLCBzaW5jZSB0aGUgYWR2aXNvcnkKKwkJICogbG9jayBmdW5jdGlvbnMgZG9uJ3QgZG8g dGhpcy4KKwkJICovCisJCUFjY2VwdEludmFsaWRhdGlvbk1lc3NhZ2VzKCk7CisJfQorCisJLyog Tm93IHN0YXJ0IHRoZSBleGVjdXRvciwgcG9zc2libHkgdmlhIGEgcHJldmlvdXMgaG9vayB1c2Vy ICovCisJaWYgKHByZXZfRXhlY3V0b3JTdGFydF9ob29rKQorCQlwcmV2X0V4ZWN1dG9yU3RhcnRf aG9vayhxdWVyeURlc2MsIGVmbGFncyk7CisJZWxzZQorCQlzdGFuZGFyZF9FeGVjdXRvclN0YXJ0 KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKworCWlmIChleGVjdXRvcl9zdGFydF9sb2NrX2lkICE9IDAp CisJCWVsb2coTk9USUNFLCAiRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlz ICVzIiwKKwkJCSBxdWVyeURlc2MtPmNwbGFuLT5pc192YWxpZCA/ICJ2YWxpZCIgOiAibm90IHZh bGlkIik7Cit9CisKIC8qIE1vZHVsZSBsb2FkIGZ1bmN0aW9uICovCiB2b2lkCiBfUEdfaW5pdCh2 b2lkKQogewotCS8qIFNldCB1cCB0aGUgR1VDIHRvIGNvbnRyb2wgd2hpY2ggbG9jayBpcyB1c2Vk ICovCisJLyogU2V0IHVwIEdVQ3MgdG8gY29udHJvbCB3aGljaCBsb2NrIGlzIHVzZWQgKi8KIAlE ZWZpbmVDdXN0b21JbnRWYXJpYWJsZSgiZGVsYXlfZXhlY3V0aW9uLnBvc3RfcGxhbm5pbmdfbG9j a19pZCIsCiAJCQkJCQkJIlNldHMgdGhlIGFkdmlzb3J5IGxvY2sgSUQgdG8gYmUgbG9ja2VkL3Vu bG9ja2VkIGFmdGVyIHBsYW5uaW5nLiIsCiAJCQkJCQkJIlplcm8gZGlzYWJsZXMgdGhlIGRlbGF5 LiIsCkBAIC04NiwxMCArMTIzLDIyIEBAIF9QR19pbml0KHZvaWQpCiAJCQkJCQkJTlVMTCwKIAkJ CQkJCQlOVUxMLAogCQkJCQkJCU5VTEwpOwotCisJRGVmaW5lQ3VzdG9tSW50VmFyaWFibGUoImRl bGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkIiwKKwkJCQkJCQkiU2V0cyB0aGUg YWR2aXNvcnkgbG9jayBJRCB0byBiZSBsb2NrZWQvdW5sb2NrZWQgYmVmb3JlIHN0YXJ0aW5nIGV4 ZWN1dGlvbi4iLAorCQkJCQkJCSJaZXJvIGRpc2FibGVzIHRoZSBkZWxheS4iLAorCQkJCQkJCSZl eGVjdXRvcl9zdGFydF9sb2NrX2lkLAorCQkJCQkJCTAsCisJCQkJCQkJMCwgSU5UX01BWCwKKwkJ CQkJCQlQR0NfVVNFUlNFVCwKKwkJCQkJCQkwLAorCQkJCQkJCU5VTEwsCisJCQkJCQkJTlVMTCwK KwkJCQkJCQlOVUxMKTsKIAlNYXJrR1VDUHJlZml4UmVzZXJ2ZWQoImRlbGF5X2V4ZWN1dGlvbiIp OwogCi0JLyogSW5zdGFsbCBvdXIgaG9vayAqLworCS8qIEluc3RhbGwgb3VyIGhvb2tzLiAqLwog CXByZXZfcGxhbm5lcl9ob29rID0gcGxhbm5lcl9ob29rOwogCXBsYW5uZXJfaG9vayA9IGRlbGF5 X2V4ZWN1dGlvbl9wbGFubmVyOworCXByZXZfRXhlY3V0b3JTdGFydF9ob29rID0gRXhlY3V0b3JT dGFydF9ob29rOworCUV4ZWN1dG9yU3RhcnRfaG9vayA9IGRlbGF5X2V4ZWN1dGlvbl9FeGVjdXRv clN0YXJ0OwogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24v ZXhwZWN0ZWQvY2FjaGVkLXBsYW4tcmVwbGFuLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlf ZXhlY3V0aW9uL2V4cGVjdGVkL2NhY2hlZC1wbGFuLXJlcGxhbi5vdXQKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNGY0NTBiOWQ5YgotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2V4cGVjdGVkL2NhY2hlZC1wbGFuLXJlcGxh bi5vdXQKQEAgLTAsMCArMSwxMTcgQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCAyIHNlc3Npb25z CisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMXByZXAgczJsb2NrIHMxZXhlYyBzMmRyb3BpIHMy dW5sb2NrCitzdGVwIHMxcHJlcDogU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNf cGxhbjsKKwkJICBQUkVQQVJFIHEgQVMgU0VMRUNUICogRlJPTSBmb292IFdIRVJFIGEgPSAkMTsK KwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcSAoMSk7CitRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KK0FwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCisgIFN1YnBsYW5zIFJlbW92ZWQ6IDEgICAgICAgICAgICAgICAgICAgICAgIAorICAt PiAgQml0bWFwIEhlYXAgU2NhbiBvbiBmb28xMSBmb29fMSAgICAgICAKKyAgICAgICAgUmVjaGVj ayBDb25kOiAoYSA9ICQxKSAgICAgICAgICAgICAgCisgICAgICAgIC0+ICBCaXRtYXAgSW5kZXgg U2NhbiBvbiBmb28xMV9hX2lkeAorICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9ICQxKSAg ICAgICAgICAKKyg2IHJvd3MpCisKK3N0ZXAgczJsb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfbG9j aygxMjM0NSk7CitwZ19hZHZpc29yeV9sb2NrCistLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjOiBMT0FEICdkZWxheV9leGVjdXRpb24nOwor CQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1Owor CQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxICgxKTsgPHdhaXRpbmcgLi4uPgorc3Rl cCBzMmRyb3BpOiBEUk9QIElOREVYIGZvbzExX2E7CitzdGVwIHMydW5sb2NrOiBTRUxFQ1QgcGdf YWR2aXNvcnlfdW5sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X3VubG9jaworLS0tLS0tLS0tLS0t LS0tLS0tCit0ICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMWV4ZWM6IDwuLi4g Y29tcGxldGVkPgorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVk UGxhbiBpcyBub3QgdmFsaWQKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6 IENhY2hlZFBsYW4gaXMgdmFsaWQKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAK KyAgU3VicGxhbnMgUmVtb3ZlZDogMSAgICAgICAgCisgIC0+ICBTZXEgU2NhbiBvbiBmb28xMSBm b29fMQorICAgICAgICBGaWx0ZXI6IChhID0gJDEpICAgICAKKyg0IHJvd3MpCisKKworc3RhcnRp bmcgcGVybXV0YXRpb246IHMxcHJlcDIgczJsb2NrIHMxZXhlYzIgczJkcm9waSBzMnVubG9jawor c3RlcCBzMXByZXAyOiBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOwor CQkgIFNFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9hZ2dyZWdhdGUgPSBvbjsKKwkJICBTRVQgZW5h YmxlX3BhcnRpdGlvbndpc2Vfam9pbiA9IG9uOworCQkgIFBSRVBBUkUgcTIgQVMgU0VMRUNUIHQx LmEsIGNvdW50KHQyLmIpIEZST00gZm9vIHQxLCBmb28gdDIgV0hFUkUgdDEuYSA9IHQyLmEgR1JP VVAgQlkgMTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTI7CitzMTogTk9USUNF OiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCitBcHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCisgIC0+ICBHcm91cEFnZ3JlZ2F0ZSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIEdyb3VwIEtleTogdDEuYSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIC0+ICBNZXJnZSBK b2luICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAg ICAgIE1lcmdlIENvbmQ6ICh0MS5hID0gdDIuYSkgICAgICAgICAgICAgICAgICAgICAgICAgCisg ICAgICAgICAgICAgIC0+ICBJbmRleCBPbmx5IFNjYW4gdXNpbmcgZm9vMTFfYV9pZHggb24gZm9v MTEgdDEgCisgICAgICAgICAgICAgIC0+ICBNYXRlcmlhbGl6ZSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC0+ICBJbmRleCBTY2FuIHVzaW5n IGZvbzExX2FfaWR4IG9uIGZvbzExIHQyCisgIC0+ICBHcm91cEFnZ3JlZ2F0ZSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIEdyb3VwIEtleTogdDFf MS5hICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIC0+ICBN ZXJnZSBKb2luICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAg ICAgICAgICAgIE1lcmdlIENvbmQ6ICh0MV8xLmEgPSB0Ml8xLmEpICAgICAgICAgICAgICAgICAg ICAgCisgICAgICAgICAgICAgIC0+ICBTb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0MV8xLmEgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBmb28yIHQxXzEgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIC0+ICBTb3J0ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg ICAgIFNvcnQgS2V5OiB0Ml8xLmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBmb28yIHQyXzEgICAgICAgICAgICAgICAgICAg CisoMTggcm93cykKKworc3RlcCBzMmxvY2s6IFNFTEVDVCBwZ19hZHZpc29yeV9sb2NrKDEyMzQ1 KTsKK3BnX2Fkdmlzb3J5X2xvY2sKKy0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAK KygxIHJvdykKKworc3RlcCBzMWV4ZWMyOiBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNF VCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVY UExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMjsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMmRyb3Bp OiBEUk9QIElOREVYIGZvbzExX2E7CitzdGVwIHMydW5sb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlf dW5sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X3VubG9jaworLS0tLS0tLS0tLS0tLS0tLS0tCit0 ICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMWV4ZWMyOiA8Li4uIGNvbXBsZXRl ZD4KK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMg bm90IHZhbGlkCitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQ bGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQXBwZW5k ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIC0+ICBHcm91cEFnZ3Jl Z2F0ZSAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgR3JvdXAgS2V5OiB0MS5hICAg ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAtPiAgTWVyZ2UgSm9pbiAgICAgICAgICAgICAg ICAgICAgICAgCisgICAgICAgICAgICAgIE1lcmdlIENvbmQ6ICh0MS5hID0gdDIuYSkgICAgICAK KyAgICAgICAgICAgICAgLT4gIFNvcnQgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg ICAgICAgICAgICBTb3J0IEtleTogdDEuYSAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBmb28xMSB0MSAKKyAgICAgICAgICAgICAgLT4gIFNvcnQgICAgICAg ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogdDIuYSAgICAg ICAgICAgCisgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBmb28xMSB0MiAKKyAg LT4gIEdyb3VwQWdncmVnYXRlICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBHcm91 cCBLZXk6IHQxXzEuYSAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIC0+ICBNZXJnZSBKb2lu ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgTWVyZ2UgQ29uZDogKHQxXzEu YSA9IHQyXzEuYSkgIAorICAgICAgICAgICAgICAtPiAgU29ydCAgICAgICAgICAgICAgICAgICAg ICAgCisgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0MV8xLmEgICAgICAgICAKKyAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzIgdDFfMQorICAgICAgICAgICAgICAt PiAgU29ydCAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIFNvcnQg S2V5OiB0Ml8xLmEgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9u IGZvbzIgdDJfMQorKDIxIHJvd3MpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvZGVs YXlfZXhlY3V0aW9uL3NwZWNzL2NhY2hlZC1wbGFuLXJlcGxhbi5zcGVjIGIvc3JjL3Rlc3QvbW9k dWxlcy9kZWxheV9leGVjdXRpb24vc3BlY3MvY2FjaGVkLXBsYW4tcmVwbGFuLnNwZWMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNjdjZmVkNzA0NAotLS0gL2Rldi9udWxs CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL3NwZWNzL2NhY2hlZC1wbGFu LXJlcGxhbi5zcGVjCkBAIC0wLDAgKzEsNTAgQEAKKyMgVGVzdCB0byBjaGVjayB0aGF0IGludmFs aWRhdGlvbiBvZiBhIGNhY2hlZCBwbGFuIGR1cmluZyBFeGVjdXRvclN0YXJ0CisjIGNvcnJlY3Rs eSB0cmlnZ2VycyByZXBsYW5uaW5nIGFuZCByZS1leGVjdXRpb24uCisKK3NldHVwCit7CisgIENS RUFURSBUQUJMRSBmb28gKGEgaW50LCBiIHRleHQpIFBBUlRJVElPTiBCWSBMSVNUKGEpOworICBD UkVBVEUgVEFCTEUgZm9vMSBQQVJUSVRJT04gT0YgZm9vIEZPUiBWQUxVRVMgSU4gKDEpIFBBUlRJ VElPTiBCWSBMSVNUIChhKTsKKyAgQ1JFQVRFIFRBQkxFIGZvbzExIFBBUlRJVElPTiBPRiBmb28x IEZPUiBWQUxVRVMgSU4gKDEpOworICBDUkVBVEUgSU5ERVggZm9vMTFfYSBPTiBmb28xIChhKTsK KyAgQ1JFQVRFIFRBQkxFIGZvbzIgUEFSVElUSU9OIE9GIGZvbyBGT1IgVkFMVUVTIElOICgyKTsK KyAgQ1JFQVRFIFZJRVcgZm9vdiBBUyBTRUxFQ1QgKiBGUk9NIGZvbzsKK30KKwordGVhcmRvd24K K3sKKyAgRFJPUCBWSUVXIGZvb3Y7CisgIERST1AgVEFCTEUgZm9vOworfQorCitzZXNzaW9uICJz MSIKKyMgQ3JlYXRlcyBhIHByZXBhcmVkIHN0YXRlbWVudCBhbmQgZm9yY2VzIGNyZWF0aW9uIG9m IGEgZ2VuZXJpYyBwbGFuCitzdGVwICJzMXByZXAiICAgeyBTRVQgcGxhbl9jYWNoZV9tb2RlID0g Zm9yY2VfZ2VuZXJpY19wbGFuOworCQkgIFBSRVBBUkUgcSBBUyBTRUxFQ1QgKiBGUk9NIGZvb3Yg V0hFUkUgYSA9ICQxOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxICgxKTsgfQor CitzdGVwICJzMXByZXAyIiAgIHsgU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNf cGxhbjsKKwkJICBTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2VfYWdncmVnYXRlID0gb247CisJCSAg U0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2pvaW4gPSBvbjsKKwkJICBQUkVQQVJFIHEyIEFTIFNF TEVDVCB0MS5hLCBjb3VudCh0Mi5iKSBGUk9NIGZvbyB0MSwgZm9vIHQyIFdIRVJFIHQxLmEgPSB0 Mi5hIEdST1VQIEJZIDE7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEyOyB9Cisj IEV4ZWN1dGVzIGEgZ2VuZXJpYyBwbGFuCitzdGVwICJzMWV4ZWMiCXsgTE9BRCAnZGVsYXlfZXhl Y3V0aW9uJzsKKwkJICBTRVQgZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQg PSAxMjM0NTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcSAoMSk7IH0KK3N0ZXAg InMxZXhlYzIiCXsgTE9BRCAnZGVsYXlfZXhlY3V0aW9uJzsKKwkJICBTRVQgZGVsYXlfZXhlY3V0 aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAxMjM0NTsKKwkJICBFWFBMQUlOIChDT1NUUyBP RkYpIEVYRUNVVEUgcTI7IH0KKworc2Vzc2lvbiAiczIiCitzdGVwICJzMmxvY2siCXsgU0VMRUNU IHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUpOyB9CitzdGVwICJzMnVubG9jayIJeyBTRUxFQ1QgcGdf YWR2aXNvcnlfdW5sb2NrKDEyMzQ1KTsgfQorc3RlcCAiczJkcm9waSIJeyBEUk9QIElOREVYIGZv bzExX2E7IH0KKworIyBXaGlsZSAiczFleGVjIiB3YWl0cyB0byBhY3F1aXJlIHRoZSBhZHZpc29y eSBsb2NrLCAiczJkcm9wIiBpcyBhYmxlIHRvIGRyb3AKKyMgdGhlIGluZGV4IGJlaW5nIHVzZWQg aW4gdGhlIGNhY2hlZCBwbGFuIGZvciBgcWAsIHNvIHdoZW4gInMxZXhlYyIgaXMgdGhlbgorIyB1 bmJsb2NrZWQgYW5kIGluaXRpYWxpemVzIHRoZSBjYWNoZWQgcGxhbiBmb3IgZXhlY3V0aW9uLCBp dCBkZXRlY3RzIHRoZQorIyBjb25jdXJyZW50IGluZGV4IGRyb3AgYW5kIGNhdXNlcyB0aGUgY2Fj aGVkIHBsYW4gdG8gYmUgZGlzY2FyZGVkIGFuZAorIyByZWNyZWF0ZWQgd2l0aG91dCB0aGUgaW5k ZXguCitwZXJtdXRhdGlvbiAiczFwcmVwIiAiczJsb2NrIiAiczFleGVjIiAiczJkcm9waSIgInMy dW5sb2NrIgorcGVybXV0YXRpb24gInMxcHJlcDIiICJzMmxvY2siICJzMWV4ZWMyIiAiczJkcm9w aSIgInMydW5sb2NrIgotLSAKMi4zNS4zCgo= --000000000000ed32f505f7e22b0a--