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 1pgi3x-0003Jg-FB for pgsql-hackers@arkaria.postgresql.org; Mon, 27 Mar 2023 08:18:46 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pgi3w-0000Bj-CB for pgsql-hackers@arkaria.postgresql.org; Mon, 27 Mar 2023 08:18:44 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pgi3v-0000Ba-P2 for pgsql-hackers@lists.postgresql.org; Mon, 27 Mar 2023 08:18:44 +0000 Received: from mail-pg1-x529.google.com ([2607:f8b0:4864:20::529]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pgi3r-00089O-Sc for pgsql-hackers@postgresql.org; Mon, 27 Mar 2023 08:18:43 +0000 Received: by mail-pg1-x529.google.com with SMTP id d22so4649534pgw.2 for ; Mon, 27 Mar 2023 01:18:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679905117; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Ybc/c1SjENK701vDoXAThD8j9UGiufTa+yGgNwYkyro=; b=nq7oHNVlTkifqVJBRH57Za6i0CGh+u06E/dvaRXRYUQtOOPCw4NhpJWmOFdCGmfAHW S7kPmqUHrVyYjfVnaUh24qH0bcISM11h7QRSvKYKjfcBfNan4PVBc9+0lMVZgn3LjJCJ 75EjLMtIIwNBSaK9EHYJ3gYNSaDj/QJl+wPg/mEipa4k4B/wrmmLnRobZi5Qx7WR+2Yz zdqFDRO6sstn4ZqPZhaYPXvEg6uS9MCd2r/Iehhx1WdChWMWmCuWA5cTHBW7WjGC6csT +sCihTSE/PH+bMlZw5YBO4kenRKFmCnmIg6s1GgIgOanCSCJLCtANY/CZzlNpFmLjFUV nkWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679905117; 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=Ybc/c1SjENK701vDoXAThD8j9UGiufTa+yGgNwYkyro=; b=EoIrQSvd2LbpzCHcG3Dp4swNpOlsp1k/C5TFPgF1ruPJ+J+jT1nsL/G/WhSR4N3Tt9 +i8QEB8tpuIFILVs6KAJZQllnDAAv6tslNSqe88NXxzfm7Jv6tGuTXXAPQQTQCH5G5Qx Ptd4qtQmgb25awwhIaXPlIhgu4mHVUIlvfsBN6XQvlinlssOR210EJz6+LQwVeBRiusn veDfxCPdNjb6k10dZLKelsgHbx+uU1AI8WGg77pvRooamBDwtveWSnK8oz/N9kabccJY 9cFiEVDfwf7TIqJANMbl6zzLi4CJIdw8SkYx8L3OQmnbw9BGTmtbBoOrMJspZj2xxvPE wpJA== X-Gm-Message-State: AAQBX9fbokJXbx3uGckyFD57Ah6++ksbm8q9txDu3S/VIeyQGs4qCiaK 5Aiuaol59uHWOBduaNFH2TqVFyF7i3qyuHjs/f0XCm1Bi6A= X-Google-Smtp-Source: AKy350a10EIBzMat1e/2m50/awY4VL8bUHefAIESiocOjwwLBv+hruVFdcDUzTECXJIP0XyCMa3vyaDJe9kh38qVGMk= X-Received: by 2002:a63:1d08:0:b0:512:fd76:9f0a with SMTP id d8-20020a631d08000000b00512fd769f0amr2735688pgd.9.1679905117179; Mon, 27 Mar 2023 01:18:37 -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 17:18:20 +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="000000000000c4bc3705f7dd6369" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000c4bc3705f7dd6369 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Mar 22, 2023 at 9:48=E2=80=AFPM Amit Langote wrote: > On Tue, Mar 14, 2023 at 7:07=E2=80=AFPM Amit Langote wrote: > > On Thu, Mar 2, 2023 at 10:52=E2=80=AFPM Amit Langote wrote: > > > I think I have figured out what might be going wrong on that cfbot > > > animal after building with the same CPPFLAGS as that animal locally. > > > I had forgotten to update _out/_readRangeTblEntry() to account for th= e > > > patch's change that a view's RTE_SUBQUERY now also preserves relkind > > > in addition to relid and rellockmode for the locking consideration. > > > > > > Also, I noticed that a multi-query Portal execution with rules was > > > failing (thanks to a regression test added in a7d71c41db) because of > > > the snapshot used for the 2nd query onward not being updated for > > > command ID change under patched model of multi-query Portal execution= . > > > To wit, under the patched model, all queries in the multi-query Porta= l > > > case undergo ExecutorStart() before any of it is run with > > > ExecutorRun(). The patch hadn't changed things however to update the > > > snapshot's command ID for the 2nd query onwards, which caused the > > > aforementioned test case to fail. > > > > > > This new model does however mean that the 2nd query onwards must use > > > PushCopiedSnapshot() given the current requirement of > > > UpdateActiveSnapshotCommandId() that the snapshot passed to it must > > > not be referenced anywhere else. The new model basically requires > > > that each query's QueryDesc points to its own copy of the > > > ActiveSnapshot. That may not be a thing in favor of the patched mode= l > > > though. For now, I haven't been able to come up with a better > > > alternative. > > > > Here's a new version addressing the following 2 points. > > > > * Like views, I realized that non-leaf relations of partition trees > > scanned by an Append/MergeAppend would need to be locked separately, > > because ExecInitNode() traversal of the plan tree would not account > > for them. That is, they are not opened using > > ExecGetRangeTableRelation() or ExecOpenScanRelation(). One exception > > is that some (if not all) of those non-leaf relations may be > > referenced in PartitionPruneInfo and so locked as part of initializing > > the corresponding PartitionPruneState, but I decided not to complicate > > the code to filter out such relations from the set locked separately. > > To carry the set of relations to lock, the refactoring patch 0001 > > re-introduces the List of Bitmapset field named allpartrelids into > > Append/MergeAppend nodes, which we had previously removed on the > > grounds that those relations need not be locked separately (commits > > f2343653f5b, f003a7522bf). > > > > * 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 initialized > > PlanState tree. My earlier thinking that each PlanState node need not > > be visited for resource cleanup in such cases was naive after all. To > > 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. > > > > I'm also attaching a new (small) patch 0003 that eliminates the > > loop-over-rangetable in ExecCloseRangeTableRelations() in favor of > > iterating over a new List field of EState named es_opened_relations, > > which is populated by ExecGetRangeTableRelation() with only the > > relations that were opened. This speeds up > > ExecCloseRangeTableRelations() significantly for the cases with many > > runtime-prunable partitions. > > Here's another version with some cosmetic changes, like fixing some > factually incorrect / obsolete comments and typos that I found. I > also noticed that I had missed noting near some table_open() that > locks taken with those can't possibly invalidate a plan (such as > lazily opened partition routing target partitions) and thus need the > treatment that locking during execution initialization requires. Rebased over 3c05284d83b2 ("Invent GENERIC_PLAN option for EXPLAIN."). --=20 Thanks, Amit Langote EDB: http://www.enterprisedb.com --000000000000c4bc3705f7dd6369 Content-Type: application/octet-stream; name="v37-0001-Add-field-to-store-partitioned-relids-to-Append-.patch" Content-Disposition: attachment; filename="v37-0001-Add-field-to-store-partitioned-relids-to-Append-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lfqk3f8k2 RnJvbSBkZmM0MTUxMGVmM2ViZWMzOGU3YTU2YjYzOWZmYTQxMTkzMTA5YjQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogVGh1LCA5IE1hciAyMDIzIDExOjI2OjA2ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2MzcgMS8z 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 --000000000000c4bc3705f7dd6369 Content-Type: application/octet-stream; name="v37-0003-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Disposition: attachment; filename="v37-0003-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lfqk3f8f0 RnJvbSAzYzY3ZDMxNDIwNjIzMzRlNGFjMDYxZjNlYjViYzBiZTMwNmZiYjFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogTW9uLCAxMyBNYXIgMjAyMyAxNTo1OTozOCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjM3IDMv 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= --000000000000c4bc3705f7dd6369 Content-Type: application/octet-stream; name="v37-0002-Move-AcquireExecutorLocks-s-responsibility-into-.patch" Content-Disposition: attachment; filename="v37-0002-Move-AcquireExecutorLocks-s-responsibility-into-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lfqk3f8j1 RnJvbSA0YWM4MjRmNmYwZjY3OTVjM2E4MTNkNWIwNDZmM2I0NGVlMjIzMzc3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogRnJpLCAyMCBKYW4gMjAyMyAxNjo1MjozMSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjM3IDIv 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 c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgICAgICAgICAgICAgICAgIHwgICA0ICstCiBz cmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgICAgICAgICAgICB8IDE1MCArKysrKyst LS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jICAgICAgICAgICAgICB8ICAgMiAr CiBzcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMgICAgICAgICAgICAgICAgfCAgIDMgKy0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYyAgICAgICAgICAgICB8ICAxNiArLQog c3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jICAgICAgICAgICAgICAgIHwgIDMyICstCiBz cmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICAgICAgICAgICAgICAgfCAgODkgKysrKy0K IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jICAgICAgICAgICB8ICAgOCArLQog c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jICAgICAgICAgIHwgIDE1ICsKIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jICAgICAgICAgICB8ICAgOSArCiBzcmMv YmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyAgICAgICAgICAgICAgfCAgNjAgKysrLQogc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYyAgICAgICAgICAgICAgICB8ICAyMyArLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jICAgICAgICAgICAgIHwgIDIzICstCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQml0bWFwQW5kLmMgICAgICAgICAgfCAgMTAgKy0KIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jICAgICB8ICAxMCArLQogc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jICAgIHwgICAyICsKIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVCaXRtYXBPci5jICAgICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUN0ZXNjYW4uYyAgICAgICAgICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQ3VzdG9tLmMgICAgICAgICAgICAgfCAgMTIgKy0KIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5jICAgICAgICB8ICAyMiArLQogc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUZ1bmN0aW9uc2Nhbi5jICAgICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlR2F0aGVyLmMgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUdhdGhlck1lcmdlLmMgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVHcm91cC5jICAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUhhc2guYyAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVIYXNoam9pbi5jICAgICAgICAgICB8ICAxMyArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUluY3JlbWVudGFsU29ydC5jICAgIHwgIDE0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SW5kZXhvbmx5c2Nhbi5jICAgICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJ bmRleHNjYW4uYyAgICAgICAgICB8ICAgNyArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxp bWl0LmMgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2Nr Um93cy5jICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJp YWwuYyAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXpl LmMgICAgICAgICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBw ZW5kLmMgICAgICAgIHwgIDIzICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2lu LmMgICAgICAgICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJs ZS5jICAgICAgICB8ICAxMyArLQogLi4uL2V4ZWN1dG9yL25vZGVOYW1lZHR1cGxlc3RvcmVzY2Fu LmMgICAgICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmVzdGxvb3AuYyAg ICAgICAgICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0LmMg ICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9u LmMgICAgIHwgICA0ICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYyAgICAgICAg ICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNhbXBsZXNjYW4uYyAgICAg ICAgIHwgICA1ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jICAgICAgICAg ICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRPcC5jICAgICAgICAgICAg ICB8ICAgNSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYyAgICAgICAgICAgICAg IHwgICA4ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMgICAgICAg fCAgIDUgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUYWJsZUZ1bmNzY2FuLmMgICAgICB8 ICAgMyArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jICAgICAgIHwg ICA1ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jICAgICAgICAgICAgfCAg IDUgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUuYyAgICAgICAgICAgICB8ICAg NSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVZhbHVlc3NjYW4uYyAgICAgICAgIHwgICAz ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgICAgICAgICAgfCAgNTUg KysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdvcmt0YWJsZXNjYW4uYyAgICAgIHwgICAz ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyAgICAgICAgICAgICAgICAgICAgfCAgNTMg KystCiBzcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jICAgICAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMgICAgICAgICAgICAgICAgIHwgICAxICsK IHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyAgICAgICAgICB8ICAgMSArCiBz cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgICAgICAgICAgfCAgIDUgKwogc3Jj L2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jICAgICAgICAgIHwgICA3ICstCiBzcmMv YmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jICAgICAgICAgICAgICAgfCAgNDUgKysrCiBzcmMv YmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAgICAgfCAgMTMgKy0KIHNyYy9i YWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgICAgICAgICAgICAgICAgICAgICB8IDMxMSArKysrKysrKysr LS0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jICAgICAgICAgICB8 ICAyMSArKwogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMgICAgICAgICAgIHwg MTM0ICsrLS0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jICAgICAgICAg ICAgfCAgIDYgKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oICAgICAgICAgICAgICAg IHwgICA3ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oICAgICAgICAgICAgICAg fCAgIDUgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCAgICAgICAgICAgICAgIHwg IDE2ICsKIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAg MiArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDMg Kwogc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmggICAgICAgICAgICAgICAgIHwgICAzICsK IHNyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBz cmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3Jj L2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmggICAgICAgICAgICAgICAgIHwgIDE0ICsKIHNyYy9p bmNsdWRlL3V0aWxzL3BvcnRhbC5oICAgICAgICAgICAgICAgICAgICB8ICAgNCArCiBzcmMvdGVz dC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZSAgICAgfCAgIDMgKy0KIC4uLi9tb2R1 bGVzL2RlbGF5X2V4ZWN1dGlvbi9kZWxheV9leGVjdXRpb24uYyB8ICA2MyArKystCiAuLi4vZXhw ZWN0ZWQvY2FjaGVkLXBsYW4tcmVwbGFuLm91dCAgICAgICAgICAgfCAxMTcgKysrKysrKwogLi4u L3NwZWNzL2NhY2hlZC1wbGFuLXJlcGxhbi5zcGVjICAgICAgICAgICAgIHwgIDUwICsrKwogODIg ZmlsZXMgY2hhbmdlZCwgMTIzMCBpbnNlcnRpb25zKCspLCA0MjQgZGVsZXRpb25zKC0pCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZXhwZWN0ZWQv Y2FjaGVkLXBsYW4tcmVwbGFuLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVs ZXMvZGVsYXlfZXhlY3V0aW9uL3NwZWNzL2NhY2hlZC1wbGFuLXJlcGxhbi5zcGVjCgpkaWZmIC0t Z2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMgYi9jb250cmliL3Bvc3Rn cmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwppbmRleCBmNTkyNmFiODlkLi45M2YzZjhiNWQxIDEwMDY0 NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYworKysgYi9jb250cmli L3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwpAQCAtMjY1OSw3ICsyNjU5LDExIEBAIHBvc3Rn cmVzQmVnaW5EaXJlY3RNb2RpZnkoRm9yZWlnblNjYW5TdGF0ZSAqbm9kZSwgaW50IGVmbGFncykK IAkvKiBHZXQgaW5mbyBhYm91dCBmb3JlaWduIHRhYmxlLiAqLwogCXJ0aW5kZXggPSBub2RlLT5y ZXN1bHRSZWxJbmZvLT5yaV9SYW5nZVRhYmxlSW5kZXg7CiAJaWYgKGZzcGxhbi0+c2Nhbi5zY2Fu cmVsaWQgPT0gMCkKKwl7CiAJCWRtc3RhdGUtPnJlbCA9IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVz dGF0ZSwgcnRpbmRleCwgZWZsYWdzKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRl KSkKKwkJCXJldHVybjsKKwl9CiAJZWxzZQogCQlkbXN0YXRlLT5yZWwgPSBub2RlLT5zcy5zc19j dXJyZW50UmVsYXRpb247CiAJdGFibGUgPSBHZXRGb3JlaWduVGFibGUoUmVsYXRpb25HZXRSZWxp ZChkbXN0YXRlLT5yZWwpKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0 by5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKaW5kZXggYmVlYTFhYzY4Ny4uZTlm NzdkNTcxMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKQEAgLTU1OCw3ICs1NTgsOCBAQCBCZWdpbkNv cHlUbyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCSgoRFJfY29weSAqKSBkZXN0KS0+Y3N0YXRlID0g Y3N0YXRlOwogCiAJCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYyByZXF1ZXN0aW5nIG5vIG91dHB1dCAq LwotCQljc3RhdGUtPnF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBwc3RhdGUtPnBf c291cmNldGV4dCwKKwkJY3N0YXRlLT5xdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwg TlVMTCwKKwkJCQkJCQkJCQkJcHN0YXRlLT5wX3NvdXJjZXRleHQsCiAJCQkJCQkJCQkJCUdldEFj dGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJCQkJCUludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJCQkJ ZGVzdCwgTlVMTCwgTlVMTCwgMCk7CkBAIC01NjksNiArNTcwLDcgQEAgQmVnaW5Db3B5VG8oUGFy c2VTdGF0ZSAqcHN0YXRlLAogCQkgKiBFeGVjdXRvclN0YXJ0IGNvbXB1dGVzIGEgcmVzdWx0IHR1 cGRlc2MgZm9yIHVzCiAJCSAqLwogCQlFeGVjdXRvclN0YXJ0KGNzdGF0ZS0+cXVlcnlEZXNjLCAw KTsKKwkJQXNzZXJ0KGNzdGF0ZS0+cXVlcnlEZXNjLT5wbGFuX3ZhbGlkKTsKIAogCQl0dXBEZXNj ID0gY3N0YXRlLT5xdWVyeURlc2MtPnR1cERlc2M7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvY3JlYXRlYXMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMK aW5kZXggZDZjNmQ1MTRmMy4uYTU1Yjg1MTU3NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvY3JlYXRlYXMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCkBA IC0zMjUsNyArMzI1LDcgQEAgRXhlY0NyZWF0ZVRhYmxlQXMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBD cmVhdGVUYWJsZUFzU3RtdCAqc3RtdCwKIAkJVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQo KTsKIAogCQkvKiBDcmVhdGUgYSBRdWVyeURlc2MsIHJlZGlyZWN0aW5nIG91dHB1dCB0byBvdXIg dHVwbGUgcmVjZWl2ZXIgKi8KLQkJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHBz dGF0ZS0+cF9zb3VyY2V0ZXh0LAorCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwg TlVMTCwgcHN0YXRlLT5wX3NvdXJjZXRleHQsCiAJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgp LCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCAwKTsK IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IDg3OGQyZmQxNzIuLjgyNmE0N2FmMGEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9leHBsYWluLmMKQEAgLTM5Myw2ICszOTMsNyBAQCBFeHBsYWluT25lUXVlcnkoUXVl cnkgKnF1ZXJ5LCBpbnQgY3Vyc29yT3B0aW9ucywKIAllbHNlCiAJewogCQlQbGFubmVkU3RtdCAq cGxhbjsKKwkJUXVlcnlEZXNjICAgKnF1ZXJ5RGVzYzsKIAkJaW5zdHJfdGltZQlwbGFuc3RhcnQs CiAJCQkJCXBsYW5kdXJhdGlvbjsKIAkJQnVmZmVyVXNhZ2UgYnVmdXNhZ2Vfc3RhcnQsCkBAIC00 MTUsMTIgKzQxNiw5NSBAQCBFeHBsYWluT25lUXVlcnkoUXVlcnkgKnF1ZXJ5LCBpbnQgY3Vyc29y T3B0aW9ucywKIAkJCUJ1ZmZlclVzYWdlQWNjdW1EaWZmKCZidWZ1c2FnZSwgJnBnQnVmZmVyVXNh Z2UsICZidWZ1c2FnZV9zdGFydCk7CiAJCX0KIAorCQlxdWVyeURlc2MgPSBFeHBsYWluUXVlcnlE ZXNjKHBsYW4sIE5VTEwsIHF1ZXJ5U3RyaW5nLCBpbnRvLCBlcywKKwkJCQkJCQkJCSBwYXJhbXMs IHF1ZXJ5RW52KTsKKwkJQXNzZXJ0KHF1ZXJ5RGVzYyk7CisKIAkJLyogcnVuIGl0IChpZiBuZWVk ZWQpIGFuZCBwcm9kdWNlIG91dHB1dCAqLwotCQlFeHBsYWluT25lUGxhbihwbGFuLCBpbnRvLCBl cywgcXVlcnlTdHJpbmcsIHBhcmFtcywgcXVlcnlFbnYsCisJCUV4cGxhaW5PbmVQbGFuKHF1ZXJ5 RGVzYywgaW50bywgZXMsIHF1ZXJ5U3RyaW5nLCBwYXJhbXMsIHF1ZXJ5RW52LAogCQkJCQkgICAm cGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNhZ2UgOiBOVUxMKSk7CiAJfQogfQog CisvKgorICogRXhwbGFpblF1ZXJ5RGVzYworICoJCVNldCB1cCBRdWVyeURlc2MgZm9yIEVYUExB SU5pbmcgYSBnaXZlbiBwbGFuCisgKgorICogVGhpcyByZXR1cm5zIE5VTEwgaWYgY3BsYW4gaXMg Zm91bmQgdG8gaGF2ZSBiZWVuIGludmFsaWRhdGVkIHNpbmNlIGl0cworICogY3JlYXRpb24uCisg Ki8KK1F1ZXJ5RGVzYyAqCitFeHBsYWluUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpzdG10LCBDYWNo ZWRQbGFuICpjcGxhbiwKKwkJCQkgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsIEludG9DbGF1c2Ug KmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCisJCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVy eUVudmlyb25tZW50ICpxdWVyeUVudikKK3sKKwlRdWVyeURlc2MgICpxdWVyeURlc2M7CisJRGVz dFJlY2VpdmVyICpkZXN0OworCWludAkJCWVmbGFnczsKKwlpbnQJCQlpbnN0cnVtZW50X29wdGlv biA9IDA7CisKKwkvKgorCSAqIE5vcm1hbGx5IHdlIGRpc2NhcmQgdGhlIHF1ZXJ5J3Mgb3V0cHV0 LCBidXQgaWYgZXhwbGFpbmluZyBDUkVBVEUgVEFCTEUKKwkgKiBBUywgd2UnZCBiZXR0ZXIgdXNl IHRoZSBhcHByb3ByaWF0ZSB0dXBsZSByZWNlaXZlci4KKwkgKi8KKwlpZiAoaW50bykKKwkJZGVz dCA9IENyZWF0ZUludG9SZWxEZXN0UmVjZWl2ZXIoaW50byk7CisJZWxzZQorCQlkZXN0ID0gTm9u ZV9SZWNlaXZlcjsKKworCWlmIChlcy0+YW5hbHl6ZSAmJiBlcy0+dGltaW5nKQorCQlpbnN0cnVt ZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX1RJTUVSOworCWVsc2UgaWYgKGVzLT5hbmFseXplKQor CQlpbnN0cnVtZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX1JPV1M7CisKKwlpZiAoZXMtPmJ1ZmZl cnMpCisJCWluc3RydW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfQlVGRkVSUzsKKwlpZiAoZXMt PndhbCkKKwkJaW5zdHJ1bWVudF9vcHRpb24gfD0gSU5TVFJVTUVOVF9XQUw7CisKKwkvKgorCSAq IFVzZSBhIHNuYXBzaG90IHdpdGggYW4gdXBkYXRlZCBjb21tYW5kIElEIHRvIGVuc3VyZSB0aGlz IHF1ZXJ5IHNlZXMKKwkgKiByZXN1bHRzIG9mIGFueSBwcmV2aW91c2x5IGV4ZWN1dGVkIHF1ZXJp ZXMuCisJICovCisJUHVzaENvcGllZFNuYXBzaG90KEdldEFjdGl2ZVNuYXBzaG90KCkpOworCVVw ZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CisKKwkvKiBDcmVhdGUgYSBRdWVyeURlc2Mg Zm9yIHRoZSBxdWVyeSAqLworCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhzdG10LCBjcGxh biwgcXVlcnlTdHJpbmcsCisJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFw c2hvdCwKKwkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgaW5zdHJ1bWVudF9vcHRpb24p OworCisJLyogU2VsZWN0IGV4ZWN1dGlvbiBvcHRpb25zICovCisJaWYgKGVzLT5hbmFseXplKQor CQllZmxhZ3MgPSAwOwkJCQkvKiBkZWZhdWx0IHJ1bi10by1jb21wbGV0aW9uIGZsYWdzICovCisJ ZWxzZQorCQllZmxhZ3MgPSBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZOworCWlmIChlcy0+Z2VuZXJp YykKKwkJZWZsYWdzIHw9IEVYRUNfRkxBR19FWFBMQUlOX0dFTkVSSUM7CisJaWYgKGludG8pCisJ CWVmbGFncyB8PSBHZXRJbnRvUmVsRUZsYWdzKGludG8pOworCisJLyogVGFrZSBsb2NrcyBpZiB1 c2luZyBhIENhY2hlZFBsYW4gKi8KKwlpZiAocXVlcnlEZXNjLT5jcGxhbikKKwkJZWZsYWdzIHw9 IEVYRUNfRkxBR19HRVRfTE9DS1M7CisKKwkvKgorCSAqIENhbGwgRXhlY3V0b3JTdGFydCB0byBw cmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24uICBBIGNhY2hlZCBwbGFuCisJICogbWF5IGdl dCBpbnZhbGlkYXRlZCBhcyB3ZSdyZSBkb2luZyB0aGF0LgorCSAqLworCUV4ZWN1dG9yU3RhcnQo cXVlcnlEZXNjLCBlZmxhZ3MpOworCWlmICghcXVlcnlEZXNjLT5wbGFuX3ZhbGlkKQorCXsKKwkJ LyogQ2xlYW4gdXAuICovCisJCUV4ZWN1dG9yRW5kKHF1ZXJ5RGVzYyk7CisJCUZyZWVRdWVyeURl c2MocXVlcnlEZXNjKTsKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwkJcmV0dXJuIE5VTEw7CisJ fQorCisJcmV0dXJuIHF1ZXJ5RGVzYzsKK30KKwogLyoKICAqIEV4cGxhaW5PbmVVdGlsaXR5IC0K ICAqCSAgcHJpbnQgb3V0IHRoZSBleGVjdXRpb24gcGxhbiBmb3Igb25lIHV0aWxpdHkgc3RhdGVt ZW50CkBAIC01MjQsMjkgKzYwOCwxNiBAQCBFeHBsYWluT25lVXRpbGl0eShOb2RlICp1dGlsaXR5 U3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKICAqIHRvIGNhbGwgaXQu CiAgKi8KIHZvaWQKLUV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50 b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKK0V4cGxhaW5PbmVQbGFuKFF1ZXJ5RGVz YyAqcXVlcnlEZXNjLAorCQkJICAgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywK IAkJCSAgIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJ CSAgIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LCBjb25zdCBpbnN0cl90aW1lICpwbGFuZHVy YXRpb24sCiAJCQkgICBjb25zdCBCdWZmZXJVc2FnZSAqYnVmdXNhZ2UpCiB7Ci0JRGVzdFJlY2Vp dmVyICpkZXN0OwotCVF1ZXJ5RGVzYyAgKnF1ZXJ5RGVzYzsKIAlpbnN0cl90aW1lCXN0YXJ0dGlt ZTsKIAlkb3VibGUJCXRvdGFsdGltZSA9IDA7Ci0JaW50CQkJZWZsYWdzOwotCWludAkJCWluc3Ry dW1lbnRfb3B0aW9uID0gMDsKIAotCUFzc2VydChwbGFubmVkc3RtdC0+Y29tbWFuZFR5cGUgIT0g Q01EX1VUSUxJVFkpOwotCi0JaWYgKGVzLT5hbmFseXplICYmIGVzLT50aW1pbmcpCi0JCWluc3Ry dW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfVElNRVI7Ci0JZWxzZSBpZiAoZXMtPmFuYWx5emUp Ci0JCWluc3RydW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfUk9XUzsKLQotCWlmIChlcy0+YnVm ZmVycykKLQkJaW5zdHJ1bWVudF9vcHRpb24gfD0gSU5TVFJVTUVOVF9CVUZGRVJTOwotCWlmIChl cy0+d2FsKQotCQlpbnN0cnVtZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX1dBTDsKKwlBc3NlcnQo cXVlcnlEZXNjLT5wbGFubmVkc3RtdC0+Y29tbWFuZFR5cGUgIT0gQ01EX1VUSUxJVFkpOwogCiAJ LyoKIAkgKiBXZSBhbHdheXMgY29sbGVjdCB0aW1pbmcgZm9yIHRoZSBlbnRpcmUgc3RhdGVtZW50 LCBldmVuIHdoZW4gbm9kZS1sZXZlbApAQCAtNTU1LDQwICs2MjYsNiBAQCBFeHBsYWluT25lUGxh bihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0 ZSAqZXMsCiAJICovCiAJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChzdGFydHRpbWUpOwogCi0JLyoK LQkgKiBVc2UgYSBzbmFwc2hvdCB3aXRoIGFuIHVwZGF0ZWQgY29tbWFuZCBJRCB0byBlbnN1cmUg dGhpcyBxdWVyeSBzZWVzCi0JICogcmVzdWx0cyBvZiBhbnkgcHJldmlvdXNseSBleGVjdXRlZCBx dWVyaWVzLgotCSAqLwotCVB1c2hDb3BpZWRTbmFwc2hvdChHZXRBY3RpdmVTbmFwc2hvdCgpKTsK LQlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOwotCi0JLyoKLQkgKiBOb3JtYWxseSB3 ZSBkaXNjYXJkIHRoZSBxdWVyeSdzIG91dHB1dCwgYnV0IGlmIGV4cGxhaW5pbmcgQ1JFQVRFIFRB QkxFCi0JICogQVMsIHdlJ2QgYmV0dGVyIHVzZSB0aGUgYXBwcm9wcmlhdGUgdHVwbGUgcmVjZWl2 ZXIuCi0JICovCi0JaWYgKGludG8pCi0JCWRlc3QgPSBDcmVhdGVJbnRvUmVsRGVzdFJlY2VpdmVy KGludG8pOwotCWVsc2UKLQkJZGVzdCA9IE5vbmVfUmVjZWl2ZXI7Ci0KLQkvKiBDcmVhdGUgYSBR dWVyeURlc2MgZm9yIHRoZSBxdWVyeSAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhw bGFubmVkc3RtdCwgcXVlcnlTdHJpbmcsCi0JCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIElu dmFsaWRTbmFwc2hvdCwKLQkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgaW5zdHJ1bWVu dF9vcHRpb24pOwotCi0JLyogU2VsZWN0IGV4ZWN1dGlvbiBvcHRpb25zICovCi0JaWYgKGVzLT5h bmFseXplKQotCQllZmxhZ3MgPSAwOwkJCQkvKiBkZWZhdWx0IHJ1bi10by1jb21wbGV0aW9uIGZs YWdzICovCi0JZWxzZQotCQllZmxhZ3MgPSBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZOwotCWlmIChl cy0+Z2VuZXJpYykKLQkJZWZsYWdzIHw9IEVYRUNfRkxBR19FWFBMQUlOX0dFTkVSSUM7Ci0JaWYg KGludG8pCi0JCWVmbGFncyB8PSBHZXRJbnRvUmVsRUZsYWdzKGludG8pOwotCi0JLyogY2FsbCBF eGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbiAqLwotCUV4ZWN1 dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwotCiAJLyogRXhlY3V0ZSB0aGUgcGxhbiBmb3Ig c3RhdGlzdGljcyBpZiBhc2tlZCBmb3IgKi8KIAlpZiAoZXMtPmFuYWx5emUpCiAJewpAQCAtNDg2 Miw2ICs0ODk5LDE3IEBAIEV4cGxhaW5EdW1teUdyb3VwKGNvbnN0IGNoYXIgKm9ianR5cGUsIGNv bnN0IGNoYXIgKmxhYmVsbmFtZSwgRXhwbGFpblN0YXRlICplcykKIAl9CiB9CiAKKy8qCisgKiBE aXNjYXJkIG91dHB1dCBidWZmZXIgZm9yIGEgZnJlc2ggcmVzdGFydC4KKyAqLwordm9pZAorRXhw bGFpblJlc2V0T3V0cHV0KEV4cGxhaW5TdGF0ZSAqZXMpCit7CisJQXNzZXJ0KGVzLT5zdHIpOwor CXJlc2V0U3RyaW5nSW5mbyhlcy0+c3RyKTsKKwlFeHBsYWluQmVnaW5PdXRwdXQoZXMpOworfQor CiAvKgogICogRW1pdCB0aGUgc3RhcnQtb2Ytb3V0cHV0IGJvaWxlcnBsYXRlLgogICoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvZXh0ZW5zaW9uLmMKaW5kZXggMGVhYmUxODMzNS4uNWE3NjM0MzEyMyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvZXh0ZW5zaW9uLmMKQEAgLTc5NywxMSArNzk3LDEzIEBAIGV4ZWN1dGVfc3FsX3N0cmlu Zyhjb25zdCBjaGFyICpzcWwpCiAJCQkJUXVlcnlEZXNjICAqcWRlc2M7CiAKIAkJCQlxZGVzYyA9 IENyZWF0ZVF1ZXJ5RGVzYyhzdG10LAorCQkJCQkJCQkJCU5VTEwsCiAJCQkJCQkJCQkJc3FsLAog CQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIE5VTEwsCiAJCQkJCQkJCQkJZGVzdCwgTlVM TCwgTlVMTCwgMCk7CiAKIAkJCQlFeGVjdXRvclN0YXJ0KHFkZXNjLCAwKTsKKwkJCQlBc3NlcnQo cWRlc2MtPnBsYW5fdmFsaWQpOwogCQkJCUV4ZWN1dG9yUnVuKHFkZXNjLCBGb3J3YXJkU2NhbkRp cmVjdGlvbiwgMCwgdHJ1ZSk7CiAJCQkJRXhlY3V0b3JGaW5pc2gocWRlc2MpOwogCQkJCUV4ZWN1 dG9yRW5kKHFkZXNjKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYwppbmRleCBjMDBiOWRmM2UzLi44MGYy YzM4YjM1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCkBAIC00MDksMTIgKzQwOSwxMyBAQCByZWZy ZXNoX21hdHZpZXdfZGF0YWZpbGwoRGVzdFJlY2VpdmVyICpkZXN0LCBRdWVyeSAqcXVlcnksCiAJ VXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKIAogCS8qIENyZWF0ZSBhIFF1ZXJ5RGVz YywgcmVkaXJlY3Rpbmcgb3V0cHV0IHRvIG91ciB0dXBsZSByZWNlaXZlciAqLwotCXF1ZXJ5RGVz YyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBxdWVyeVN0cmluZywKKwlxdWVyeURlc2MgPSBDcmVh dGVRdWVyeURlc2MocGxhbiwgTlVMTCwgcXVlcnlTdHJpbmcsCiAJCQkJCQkJCUdldEFjdGl2ZVNu YXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7 CiAKIAkvKiBjYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0 aW9uICovCiAJRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIDApOworCUFzc2VydChxdWVyeURlc2Mt PnBsYW5fdmFsaWQpOwogCiAJLyogcnVuIHRoZSBwbGFuICovCiAJRXhlY3V0b3JSdW4ocXVlcnlE ZXNjLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgMEwsIHRydWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFs Y21kcy5jCmluZGV4IDhhM2NmOThjY2UuLjNjMzRhYjQzNTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0 YWxjbWRzLmMKQEAgLTE0Niw2ICsxNDYsNyBAQCBQZXJmb3JtQ3Vyc29yT3BlbihQYXJzZVN0YXRl ICpwc3RhdGUsIERlY2xhcmVDdXJzb3JTdG10ICpjc3RtdCwgUGFyYW1MaXN0SW5mbyBwYQogCVBv cnRhbFN0YXJ0KHBvcnRhbCwgcGFyYW1zLCAwLCBHZXRBY3RpdmVTbmFwc2hvdCgpKTsKIAogCUFz c2VydChwb3J0YWwtPnN0cmF0ZWd5ID09IFBPUlRBTF9PTkVfU0VMRUNUKTsKKwlBc3NlcnQocG9y dGFsLT5wbGFuX3ZhbGlkKTsKIAogCS8qCiAJICogV2UncmUgZG9uZTsgdGhlIHF1ZXJ5IHdvbid0 IGFjdHVhbGx5IGJlIHJ1biB1bnRpbCBQZXJmb3JtUG9ydGFsRmV0Y2ggaXMKQEAgLTI0OSw2ICsy NTAsMTcgQEAgUGVyZm9ybVBvcnRhbENsb3NlKGNvbnN0IGNoYXIgKm5hbWUpCiAJUG9ydGFsRHJv cChwb3J0YWwsIGZhbHNlKTsKIH0KIAorLyoKKyAqIFJlbGVhc2UgYSBwb3J0YWwncyBRdWVyeURl c2MuCisgKi8KK3ZvaWQKK1BvcnRhbFF1ZXJ5RmluaXNoKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQor eworCUV4ZWN1dG9yRmluaXNoKHF1ZXJ5RGVzYyk7CisJRXhlY3V0b3JFbmQocXVlcnlEZXNjKTsK KwlGcmVlUXVlcnlEZXNjKHF1ZXJ5RGVzYyk7Cit9CisKIC8qCiAgKiBQb3J0YWxDbGVhbnVwCiAg KgpAQCAtMjk1LDkgKzMwNyw3IEBAIFBvcnRhbENsZWFudXAoUG9ydGFsIHBvcnRhbCkKIAkJCWlm IChwb3J0YWwtPnJlc293bmVyKQogCQkJCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gcG9ydGFsLT5y ZXNvd25lcjsKIAotCQkJRXhlY3V0b3JGaW5pc2gocXVlcnlEZXNjKTsKLQkJCUV4ZWN1dG9yRW5k KHF1ZXJ5RGVzYyk7Ci0JCQlGcmVlUXVlcnlEZXNjKHF1ZXJ5RGVzYyk7CisJCQlQb3J0YWxRdWVy eUZpbmlzaChxdWVyeURlc2MpOwogCiAJCQlDdXJyZW50UmVzb3VyY2VPd25lciA9IHNhdmVSZXNv dXJjZU93bmVyOwogCQl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJl LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKaW5kZXggMThmNzAzMTlmYy4uYzkw NzBlZDk3ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwpAQCAtMTgzLDYgKzE4Myw3IEBAIEV4ZWN1 dGVRdWVyeShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCXBhcmFtTEkgPSBFdmFsdWF0ZVBhcmFtcyhw c3RhdGUsIGVudHJ5LCBzdG10LT5wYXJhbXMsIGVzdGF0ZSk7CiAJfQogCityZXBsYW46CiAJLyog Q3JlYXRlIGEgbmV3IHBvcnRhbCB0byBydW4gdGhlIHF1ZXJ5IGluICovCiAJcG9ydGFsID0gQ3Jl YXRlTmV3UG9ydGFsKCk7CiAJLyogRG9uJ3QgZGlzcGxheSB0aGUgcG9ydGFsIGluIHBnX2N1cnNv cnMsIGl0IGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seSAqLwpAQCAtMjUxLDEwICsyNTIsMTkgQEAg RXhlY3V0ZVF1ZXJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAl9CiAKIAkvKgotCSAqIFJ1biB0aGUg cG9ydGFsIGFzIGFwcHJvcHJpYXRlLgorCSAqIFJ1biB0aGUgcG9ydGFsIGFzIGFwcHJvcHJpYXRl LiAgSWYgdGhlIHBvcnRhbCBjb250YWlucyBhIGNhY2hlZCBwbGFuLCBpdAorCSAqIG11c3QgYmUg cmVjcmVhdGVkIGlmIHBvcnRhbC0+cGxhbl92YWxpZCBpcyBmYWxzZSB3aGljaCB0ZWxscyB0aGF0 IHRoZQorCSAqIGNhY2hlZCBwbGFuIHdhcyBmb3VuZCB0byBoYXZlIGJlZW4gaW52YWxpZGF0ZWQg d2hlbiBpbml0aWFsaXppbmcgb25lIG9mCisJICogdGhlIHBsYW4gdHJlZXMgY29udGFpbmVkIGlu IGl0LgogCSAqLwogCVBvcnRhbFN0YXJ0KHBvcnRhbCwgcGFyYW1MSSwgZWZsYWdzLCBHZXRBY3Rp dmVTbmFwc2hvdCgpKTsKIAorCWlmICghcG9ydGFsLT5wbGFuX3ZhbGlkKQorCXsKKwkJUG9ydGFs RHJvcChwb3J0YWwsIGZhbHNlKTsKKwkJZ290byByZXBsYW47CisJfQorCiAJKHZvaWQpIFBvcnRh bFJ1bihwb3J0YWwsIGNvdW50LCBmYWxzZSwgdHJ1ZSwgZGVzdCwgZGVzdCwgcWMpOwogCiAJUG9y dGFsRHJvcChwb3J0YWwsIGZhbHNlKTsKQEAgLTU3NCw3ICs1ODQsNyBAQCBFeHBsYWluRXhlY3V0 ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0 YXRlICplcywKIHsKIAlQcmVwYXJlZFN0YXRlbWVudCAqZW50cnk7CiAJY29uc3QgY2hhciAqcXVl cnlfc3RyaW5nOwotCUNhY2hlZFBsYW4gKmNwbGFuOworCUNhY2hlZFBsYW4gKmNwbGFuID0gTlVM TDsKIAlMaXN0CSAgICpwbGFuX2xpc3Q7CiAJTGlzdENlbGwgICAqcDsKIAlQYXJhbUxpc3RJbmZv IHBhcmFtTEkgPSBOVUxMOwpAQCAtNjE4LDYgKzYyOCw3IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnko RXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVz LAogCX0KIAogCS8qIFJlcGxhbiBpZiBuZWVkZWQsIGFuZCBhY3F1aXJlIGEgdHJhbnNpZW50IHJl ZmNvdW50ICovCityZXBsYW46CiAJY3BsYW4gPSBHZXRDYWNoZWRQbGFuKGVudHJ5LT5wbGFuc291 cmNlLCBwYXJhbUxJLAogCQkJCQkJICBDdXJyZW50UmVzb3VyY2VPd25lciwgcXVlcnlFbnYpOwog CkBAIC02MzksOCArNjUwLDIxIEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4 ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQlQbGFubmVkU3Rt dCAqcHN0bXQgPSBsZmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgcCk7CiAKIAkJaWYgKHBzdG10LT5j b21tYW5kVHlwZSAhPSBDTURfVVRJTElUWSkKLQkJCUV4cGxhaW5PbmVQbGFuKHBzdG10LCBpbnRv LCBlcywgcXVlcnlfc3RyaW5nLCBwYXJhbUxJLCBxdWVyeUVudiwKLQkJCQkJCSAgICZwbGFuZHVy YXRpb24sIChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6IE5VTEwpKTsKKwkJeworCQkJUXVlcnlE ZXNjICpxdWVyeURlc2M7CisKKwkJCXF1ZXJ5RGVzYyA9IEV4cGxhaW5RdWVyeURlc2MocHN0bXQs IGNwbGFuLCBxdWVyeVN0cmluZywKKwkJCQkJCQkJCQkgaW50bywgZXMsIHBhcmFtTEksIHF1ZXJ5 RW52KTsKKwkJCWlmIChxdWVyeURlc2MgPT0gTlVMTCkKKwkJCXsKKwkJCQlFeHBsYWluUmVzZXRP dXRwdXQoZXMpOworCQkJCVJlbGVhc2VDYWNoZWRQbGFuKGNwbGFuLCBDdXJyZW50UmVzb3VyY2VP d25lcik7CisJCQkJZ290byByZXBsYW47CisJCQl9CisJCQlFeHBsYWluT25lUGxhbihxdWVyeURl c2MsIGludG8sIGVzLCBxdWVyeV9zdHJpbmcsIHBhcmFtTEksCisJCQkJCQkgICBxdWVyeUVudiwg JnBsYW5kdXJhdGlvbiwKKwkJCQkJCSAgIChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6IE5VTEwp KTsKKwkJfQogCQllbHNlCiAJCQlFeHBsYWluT25lVXRpbGl0eShwc3RtdC0+dXRpbGl0eVN0bXQs IGludG8sIGVzLCBxdWVyeV9zdHJpbmcsCiAJCQkJCQkJICBwYXJhbUxJLCBxdWVyeUVudik7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCAxYjAwN2RjMzJjLi4wMzY2YmU5ZmQ2IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTEyNiwxMSArMTI2LDMyIEBAIHN0YXRpYyB2b2lkIEV2YWxQ bGFuUXVhbFN0YXJ0KEVQUVN0YXRlICplcHFzdGF0ZSwgUGxhbiAqcGxhblRyZWUpOwogICogZ2V0 IGNvbnRyb2wgd2hlbiBFeGVjdXRvclN0YXJ0IGlzIGNhbGxlZC4gIFN1Y2ggYSBwbHVnaW4gd291 bGQKICAqIG5vcm1hbGx5IGNhbGwgc3RhbmRhcmRfRXhlY3V0b3JTdGFydCgpLgogICoKKyAqIE5v cm1hbGx5LCB0aGUgcGxhbiB0cmVlIGdpdmVuIGluIHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQgaXMg a25vd24gdG8gYmUKKyAqIHZhbGlkIGluIHRoYXQgKmFsbCogcmVsYXRpb25zIGNvbnRhaW5lZCBp biBwbGFubmVkc3RtdC0+cmVsYXRpb25PaWRzIGhhdmUKKyAqIGFscmVhZHkgYmVlbiBsb2NrZWQu ICBUaGF0IG1heSBub3QgYmUgdGhlIGNhc2UgaG93ZXZlciBpZiB0aGUgcGxhbm5lZHN0bXQKKyAq IGNvbWVzIGZyb20gYSBDYWNoZWRQbGFuLCBvbmUgZ2l2ZW4gaW4gcXVlcnlEZXNjLT5jcGxhbiwg aW4gd2hpY2ggY2FzZSBvbmx5CisgKiBzb21lIG9mIHRoZSByZWxhdGlvbnMgcmVmZXJlbmNlZCBp biB0aGUgcGxhbiB3b3VsZCBoYXZlIGJlZW4gbG9ja2VkOyB0bworICogd2l0LCB0aG9zZSB0aGF0 IEFjcXVpcmVQbGFubmVyTG9ja3MoKSBkZWVtcyBuZWNlc3NhcnkuICBMb2NrcyBuZWNlc3NhcnkK KyAqIHRvIGZ1bGx5IHZhbGlkYXRlIHN1Y2ggYSBwbGFuIHRyZWUsIGluY2x1ZGluZyByZWxhdGlv bnMgdGhhdCBhcmUgYWRkZWQgYnkKKyAqIHRoZSBwbGFubmVyLCB3aWxsIGJlIHRha2VuIHdoZW4g aW5pdGlhbGl6aW5nIHRoZSBwbGFuIHRyZWUgaW4gSW5pdFBsYW4oKTsKKyAqIHRoZSB0aGUgY2Fs bGVyIG11c3QgaGF2ZSBzZXQgdGhlIEVYRUNfRkxBR19HRVRfTE9DS1MgYml0IGluIGVmbGFncy4g IElmIHRoZQorICogQ2FjaGVkUGxhbiBnZXRzIGludmFsaWRhdGVkIGFzIHRoZXNlIGxvY2tzIGFy ZSB0YWtlbiwgcGxhbiB0cmVlCisgKiBpbml0aWFsaXphdGlvbiBpcyBzdXNwZW5kZWQgYXQgdGhl IHBvaW50IHdoZW4gc3VjaCBpbnZhbGlkYXRpb24gaXMgZmlyc3QKKyAqIGRldGVjdGVkIGFuZCBJ bml0UGxhbigpIHJldHVybnMgYWZ0ZXIgc2V0dGluZyBxdWVyeURlc2MtPnBsYW5fdmFsaWQgdG8K KyAqIGZhbHNlLiAgcXVlcnlEZXNjLT5wbGFuc3RhdGUgd291bGQgYmUgcG9pbnRpbmcgdG8gYSBw b3RlbnRpYWxseSBwYXJ0aWFsbHkKKyAqIGluaXRpYWxpemVkIFBsYW5TdGF0ZSB0cmVlIGluIHRo YXQgY2FzZS4gIENhbGxlcnMgbXVzdCByZXRyeSB0aGUgZXhlY3V0aW9uCisgKiB3aXRoIGEgZnJl c2hseSBjcmVhdGVkIENhY2hlZFBsYW4gaW4gdGhhdCBjYXNlLCBhZnRlciBwcm9wZXJseSBmcmVl aW5nIHRoZQorICogcGFydGlhbGx5IHZhbGlkIFF1ZXJ5RGVzYy4KICAqIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwog dm9pZAogRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIHsK KwkvKiBUYWtlIGxvY2tzIGlmIHRoZSBwbGFuIHRyZWUgY29tZXMgZnJvbSBhIENhY2hlZFBsYW4u ICovCisJQXNzZXJ0KHF1ZXJ5RGVzYy0+Y3BsYW4gPT0gTlVMTCB8fAorCQkgICAoQ2FjaGVkUGxh blN0aWxsVmFsaWQocXVlcnlEZXNjLT5jcGxhbikgJiYKKwkJCShlZmxhZ3MgJiBFWEVDX0ZMQUdf R0VUX0xPQ0tTKSAhPSAwKSk7CisKIAkvKgogCSAqIEluIHNvbWUgY2FzZXMgKGUuZy4gYW4gRVhF Q1VURSBzdGF0ZW1lbnQpIGEgcXVlcnkgZXhlY3V0aW9uIHdpbGwgc2tpcAogCSAqIHBhcnNlIGFu YWx5c2lzLCB3aGljaCBtZWFucyB0aGF0IHRoZSBxdWVyeV9pZCB3b24ndCBiZSByZXBvcnRlZC4g IE5vdGUKQEAgLTU4Miw2ICs2MDMsMTYgQEAgRXhlY0NoZWNrUGVybWlzc2lvbnMoTGlzdCAqcmFu Z2VUYWJsZSwgTGlzdCAqcnRlcGVybWluZm9zLAogCQlSVEVQZXJtaXNzaW9uSW5mbyAqcGVybWlu Zm8gPSBsZmlyc3Rfbm9kZShSVEVQZXJtaXNzaW9uSW5mbywgbCk7CiAKIAkJQXNzZXJ0KE9pZElz VmFsaWQocGVybWluZm8tPnJlbGlkKSk7CisKKwkJLyoKKwkJICogUmVsYXRpb25zIHdob3NlIHBl cm1pc3Npb25zIG5lZWQgdG8gYmUgY2hlY2tlZCBtdXN0IGFscmVhZHkgaGF2ZQorCQkgKiBiZWVu IGxvY2tlZCBieSB0aGUgcGFyc2VyIG9yIGJ5IEFjcXVpcmVQbGFubmVyTG9ja3MoKSBpZiBhCisJ CSAqIGNhY2hlZCBwbGFuIGlzIGJlaW5nIGV4ZWN1dGVkLgorCQkgKiBYWFggc2hvdWxkbid0IHdl IHNraXAgY2FsbGluZyBFeGVjQ2hlY2tQZXJtaXNzaW9ucyBmcm9tIEluaXRQbGFuCisJCSAqIGlu IGEgcGFyYWxsZWwgd29ya2VyPworCQkgKi8KKwkJQXNzZXJ0KENoZWNrUmVsTG9ja2VkQnlNZShw ZXJtaW5mby0+cmVsaWQsIEFjY2Vzc1NoYXJlTG9jaywgdHJ1ZSkgfHwKKwkJCSAgIElzUGFyYWxs ZWxXb3JrZXIoKSk7CiAJCXJlc3VsdCA9IEV4ZWNDaGVja09uZVJlbFBlcm1zKHBlcm1pbmZvKTsK IAkJaWYgKCFyZXN1bHQpCiAJCXsKQEAgLTc4NSwxMiArODE2LDE5IEBAIEV4ZWNDaGVja1hhY3RS ZWFkT25seShQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQpCiAJCVByZXZlbnRDb21tYW5kSWZQYXJh bGxlbE1vZGUoQ3JlYXRlQ29tbWFuZE5hbWUoKE5vZGUgKikgcGxhbm5lZHN0bXQpKTsKIH0KIAot CiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAgKgkJSW5pdFBsYW4KICAqCiAgKgkJSW5pdGlhbGl6ZXMgdGhlIHF1ZXJ5 IHBsYW46IG9wZW4gZmlsZXMsIGFsbG9jYXRlIHN0b3JhZ2UKICAqCQlhbmQgc3RhcnQgdXAgdGhl IHJ1bGUgbWFuYWdlcgorICoKKyAqCQlJZiBxdWVyeURlc2MgY29udGFpbnMgYSBDYWNoZWRQbGFu LCB0aGlzIHRha2VzIGxvY2tzIG9uIHJlbGF0aW9ucy4KKyAqCQlJZiBhbnkgb2YgdGhvc2UgcmVs YXRpb25zIGhhdmUgdW5kZXJnb25lIGNvbmN1cnJlbnQgc2NoZW1hIGNoYW5nZXMKKyAqCQliZXR3 ZWVuIHN1Y2Nlc3NmdWxseSBwZXJmb3JtaW5nIFJldmFsaWRhdGVDYWNoZWRRdWVyeSgpIG9uIHRo ZQorICoJCWNvbnRhaW5pbmcgQ2FjaGVkUGxhblNvdXJjZSBhbmQgaGVyZSwgbG9ja2luZyB0aG9z ZSByZWxhdGlvbnMgd291bGQKKyAqCQlpbnZhbGlkYXRlIHRoZSBDYWNoZWRQbGFuIGJ5IHdheSBv ZiBQbGFuQ2FjaGVSZWxDYWxsYmFjaygpLiAgSW4gdGhhdAorICoJCWNhc2UsIHF1ZXJ5RGVzYy0+ cGxhbl92YWxpZCB3b3VsZCBiZSBzZXQgdG8gZmFsc2UgdG8gdGVsbCB0aGUgY2FsbGVyCisgKgkJ dG8gcmV0cnkgYWZ0ZXIgY3JlYXRpbmcgYSBuZXcgQ2FjaGVkUGxhbi4KICAqIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAq Lwogc3RhdGljIHZvaWQKQEAgLTgwMSwyMCArODM5LDMyIEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAq cXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCVBsYW4JICAgKnBsYW4gPSBwbGFubmVkc3RtdC0+cGxh blRyZWU7CiAJTGlzdAkgICAqcmFuZ2VUYWJsZSA9IHBsYW5uZWRzdG10LT5ydGFibGU7CiAJRVN0 YXRlCSAgICplc3RhdGUgPSBxdWVyeURlc2MtPmVzdGF0ZTsKLQlQbGFuU3RhdGUgICpwbGFuc3Rh dGU7CisJUGxhblN0YXRlICAqcGxhbnN0YXRlID0gTlVMTDsKIAlUdXBsZURlc2MJdHVwVHlwZTsK IAlMaXN0Q2VsbCAgICpsOwogCWludAkJCWk7CiAKIAkvKgotCSAqIERvIHBlcm1pc3Npb25zIGNo ZWNrcworCSAqIFNldCB1cCByYW5nZSB0YWJsZSBpbiBFU3RhdGUuCiAJICovCi0JRXhlY0NoZWNr UGVybWlzc2lvbnMocmFuZ2VUYWJsZSwgcGxhbm5lZHN0bXQtPnBlcm1JbmZvcywgdHJ1ZSk7CisJ RXhlY0luaXRSYW5nZVRhYmxlKGVzdGF0ZSwgcmFuZ2VUYWJsZSwgcGxhbm5lZHN0bXQtPnBlcm1J bmZvcyk7CisKKwkvKiBNYWtlIHN1cmUgRXhlY1BsYW5TdGlsbFZhbGlkKCkgY2FuIHdvcmsuICov CisJZXN0YXRlLT5lc19jYWNoZWRwbGFuID0gcXVlcnlEZXNjLT5jcGxhbjsKIAogCS8qCi0JICog aW5pdGlhbGl6ZSB0aGUgbm9kZSdzIGV4ZWN1dGlvbiBzdGF0ZQorCSAqIExvY2sgYW55IHZpZXdz IHRoYXQgd2VyZSBtZW50aW9uZWQgaW4gdGhlIHF1ZXJ5IGlmIG5lZWRlZC4gIFZpZXcKKwkgKiBy ZWxhdGlvbnMgbXVzdCBiZSBsb2NrZWQgc2VwYXJhdGVseSBsaWtlIHRoaXMsIGJlY2F1c2UgdGhl eSBhcmUgbm90CisJICogcmVmZXJlbmNlZCBpbiB0aGUgcGxhbiB0cmVlLgogCSAqLwotCUV4ZWNJ bml0UmFuZ2VUYWJsZShlc3RhdGUsIHJhbmdlVGFibGUsIHBsYW5uZWRzdG10LT5wZXJtSW5mb3Mp OworCUV4ZWNMb2NrVmlld1JlbGF0aW9ucyhwbGFubmVkc3RtdC0+dmlld1JlbGF0aW9ucywgZXN0 YXRlKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlnb3RvIGZhaWxlZDsK KworCS8qCisJICogRG8gcGVybWlzc2lvbnMgY2hlY2tzCisJICovCisJRXhlY0NoZWNrUGVybWlz c2lvbnMocmFuZ2VUYWJsZSwgcGxhbm5lZHN0bXQtPnBlcm1JbmZvcywgdHJ1ZSk7CiAKIAllc3Rh dGUtPmVzX3BsYW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7CiAJZXN0YXRlLT5lc19wYXJ0X3BydW5l X2luZm9zID0gcGxhbm5lZHN0bXQtPnBhcnRQcnVuZUluZm9zOwpAQCAtODQ5LDYgKzg5OSw4IEBA IEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCQkJCWNhc2UgUk9X X01BUktfS0VZU0hBUkU6CiAJCQkJY2FzZSBST1dfTUFSS19SRUZFUkVOQ0U6CiAJCQkJCXJlbGF0 aW9uID0gRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihlc3RhdGUsIHJjLT5ydGkpOworCQkJCQlp ZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJCQkJZ290byBmYWlsZWQ7CiAJCQkJ CWJyZWFrOwogCQkJCWNhc2UgUk9XX01BUktfQ09QWToKIAkJCQkJLyogbm8gcGh5c2ljYWwgdGFi bGUgYWNjZXNzIGlzIHJlcXVpcmVkICovCkBAIC05MTksNiArOTcxLDggQEAgSW5pdFBsYW4oUXVl cnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAKIAkJZXN0YXRlLT5lc19zdWJwbGFuc3Rh dGVzID0gbGFwcGVuZChlc3RhdGUtPmVzX3N1YnBsYW5zdGF0ZXMsCiAJCQkJCQkJCQkJICAgc3Vi cGxhbnN0YXRlKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCWdvdG8g ZmFpbGVkOwogCiAJCWkrKzsKIAl9CkBAIC05MjksNiArOTgzLDggQEAgSW5pdFBsYW4oUXVlcnlE ZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJICogcHJvY2Vzc2luZyB0dXBsZXMuCiAJICov CiAJcGxhbnN0YXRlID0gRXhlY0luaXROb2RlKHBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAo IUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlnb3RvIGZhaWxlZDsKIAogCS8qCiAJICog R2V0IHRoZSB0dXBsZSBkZXNjcmlwdG9yIGRlc2NyaWJpbmcgdGhlIHR5cGUgb2YgdHVwbGVzIHRv IHJldHVybi4KQEAgLTk3Miw2ICsxMDI4LDE3IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlE ZXNjLCBpbnQgZWZsYWdzKQogCiAJcXVlcnlEZXNjLT50dXBEZXNjID0gdHVwVHlwZTsKIAlxdWVy eURlc2MtPnBsYW5zdGF0ZSA9IHBsYW5zdGF0ZTsKKwlxdWVyeURlc2MtPnBsYW5fdmFsaWQgPSB0 cnVlOworCXJldHVybjsKKworZmFpbGVkOgorCS8qCisJICogUGxhbiBpbml0aWFsaXphdGlvbiBm YWlsZWQuICBNYXJrIFF1ZXJ5RGVzYyBhcyBzdWNoLiAgTm90ZSB0aGF0IHdlIGRvCisJICogc2V0 IHBsYW5zdGF0ZSwgZXZlbiBpZiBpdCBtYXkgb25seSBiZSBwYXJ0aWFsbHkgaW5pdGlhbGl6ZWQs IHNvIHRoYXQKKwkgKiBFeGVjRW5kUGxhbigpIGNhbiBwcm9jZXNzIGl0LgorCSAqLworCXF1ZXJ5 RGVzYy0+cGxhbnN0YXRlID0gcGxhbnN0YXRlOworCXF1ZXJ5RGVzYy0+cGxhbl92YWxpZCA9IGZh bHNlOwogfQogCiAvKgpAQCAtMTM4OSw3ICsxNDU2LDcgQEAgRXhlY0dldEFuY2VzdG9yUmVzdWx0 UmVscyhFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbykKIAogCQkJ LyoKIAkJCSAqIEFsbCBhbmNlc3RvcnMgdXAgdG8gdGhlIHJvb3QgdGFyZ2V0IHJlbGF0aW9uIG11 c3QgaGF2ZSBiZWVuCi0JCQkgKiBsb2NrZWQgYnkgdGhlIHBsYW5uZXIgb3IgQWNxdWlyZUV4ZWN1 dG9yTG9ja3MoKS4KKwkJCSAqIGxvY2tlZC4KIAkJCSAqLwogCQkJYW5jUmVsID0gdGFibGVfb3Bl bihhbmNPaWQsIE5vTG9jayk7CiAJCQlySW5mbyA9IG1ha2VOb2RlKFJlc3VsdFJlbEluZm8pOwpA QCAtMjc5Nyw3ICsyODY0LDggQEAgRXZhbFBsYW5RdWFsU3RhcnQoRVBRU3RhdGUgKmVwcXN0YXRl LCBQbGFuICpwbGFuVHJlZSkKIAkgKiBDaGlsZCBFUFEgRVN0YXRlcyBzaGFyZSB0aGUgcGFyZW50 J3MgY29weSBvZiB1bmNoYW5naW5nIHN0YXRlIHN1Y2ggYXMKIAkgKiB0aGUgc25hcHNob3QsIHJh bmdldGFibGUsIGFuZCBleHRlcm5hbCBQYXJhbSBpbmZvLiAgVGhleSBuZWVkIHRoZWlyIG93bgog CSAqIGNvcGllcyBvZiBsb2NhbCBzdGF0ZSwgaW5jbHVkaW5nIGEgdHVwbGUgdGFibGUsIGVzX3Bh cmFtX2V4ZWNfdmFscywKLQkgKiByZXN1bHQtcmVsIGluZm8sIGV0Yy4KKwkgKiByZXN1bHQtcmVs IGluZm8sIGV0Yy4gIEFsc28sIHdlIGRvbid0IHBhc3MgdGhlIHBhcmVudCd0IGNvcHkgb2YgdGhl CisJICogQ2FjaGVkUGxhbiwgYmVjYXVzZSBubyBuZXcgbG9ja3Mgd2lsbCBiZSB0YWtlbiBmb3Ig RXZhbFBsYW5RdWFsKCkuCiAJICovCiAJcmNlc3RhdGUtPmVzX2RpcmVjdGlvbiA9IEZvcndhcmRT Y2FuRGlyZWN0aW9uOwogCXJjZXN0YXRlLT5lc19zbmFwc2hvdCA9IHBhcmVudGVzdGF0ZS0+ZXNf c25hcHNob3Q7CkBAIC0yODg0LDYgKzI5NTIsNyBAQCBFdmFsUGxhblF1YWxTdGFydChFUFFTdGF0 ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKQogCQlQbGFuU3RhdGUgICpzdWJwbGFuc3RhdGU7 CiAKIAkJc3VicGxhbnN0YXRlID0gRXhlY0luaXROb2RlKHN1YnBsYW4sIHJjZXN0YXRlLCAwKTsK KwkJQXNzZXJ0KEV4ZWNQbGFuU3RpbGxWYWxpZChyY2VzdGF0ZSkpOwogCQlyY2VzdGF0ZS0+ZXNf c3VicGxhbnN0YXRlcyA9IGxhcHBlbmQocmNlc3RhdGUtPmVzX3N1YnBsYW5zdGF0ZXMsCiAJCQkJ CQkJCQkJCSBzdWJwbGFuc3RhdGUpOwogCX0KQEAgLTI5MzcsNiArMzAwNiwxMCBAQCBFdmFsUGxh blF1YWxFbmQoRVBRU3RhdGUgKmVwcXN0YXRlKQogCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsK IAlMaXN0Q2VsbCAgICpsOwogCisJLyogTm90aGluZyB0byBkbyBpZiBFdmFsUGxhblF1YWxJbml0 KCkgd2Fzbid0IGRvbmUgdG8gYmVnaW4gd2l0aC4gKi8KKwlpZiAoZXBxc3RhdGUtPnBhcmVudGVz dGF0ZSA9PSBOVUxMKQorCQlyZXR1cm47CisKIAlydHNpemUgPSBlcHFzdGF0ZS0+cGFyZW50ZXN0 YXRlLT5lc19yYW5nZV90YWJsZV9zaXplOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFs bGVsLmMKaW5kZXggYWEzZjI4MzQ1My4uZGY0Y2M1ZGRhZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1BhcmFsbGVsLmMKQEAgLTEyNDksOCArMTI0OSwxMyBAQCBFeGVjUGFyYWxsZWxHZXRRdWVyeURl c2Moc2htX3RvYyAqdG9jLCBEZXN0UmVjZWl2ZXIgKnJlY2VpdmVyLAogCXBhcmFtc3BhY2UgPSBz aG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9QQVJBTUxJU1RJTkZPLCBmYWxzZSk7CiAJ cGFyYW1MSSA9IFJlc3RvcmVQYXJhbUxpc3QoJnBhcmFtc3BhY2UpOwogCi0JLyogQ3JlYXRlIGEg UXVlcnlEZXNjIGZvciB0aGUgcXVlcnkuICovCisJLyoKKwkgKiBDcmVhdGUgYSBRdWVyeURlc2Mg Zm9yIHRoZSBxdWVyeS4gIE5vdGUgdGhhdCBubyBDYWNoZWRQbGFuIGlzIGF2YWlsYWJsZQorCSAq IGhlcmUgZXZlbiBpZiB0aGUgY29udGFpbmluZyBwbGFuIHRyZWUgbWF5IGhhdmUgY29tZSBmcm9t IG9uZSBpbiB0aGUKKwkgKiBsZWFkZXIuCisJICovCiAJcmV0dXJuIENyZWF0ZVF1ZXJ5RGVzYyhw c3RtdCwKKwkJCQkJCSAgIE5VTEwsCiAJCQkJCQkgICBxdWVyeVN0cmluZywKIAkJCQkJCSAgIEdl dEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCSAgIHJlY2VpdmVyLCBw YXJhbUxJLCBOVUxMLCBpbnN0cnVtZW50X29wdGlvbnMpOwpAQCAtMTQzMiw2ICsxNDM3LDcgQEAg UGFyYWxsZWxRdWVyeU1haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCS8qIFN0 YXJ0IHVwIHRoZSBleGVjdXRvciAqLwogCXF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPmppdEZsYWdz ID0gZnBlcy0+aml0X2ZsYWdzOwogCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBmcGVzLT5lZmxh Z3MpOworCUFzc2VydChxdWVyeURlc2MtPnBsYW5fdmFsaWQpOwogCiAJLyogU3BlY2lhbCBleGVj dXRvciBpbml0aWFsaXphdGlvbiBzdGVwcyBmb3IgcGFyYWxsZWwgd29ya2VycyAqLwogCXF1ZXJ5 RGVzYy0+cGxhbnN0YXRlLT5zdGF0ZS0+ZXNfcXVlcnlfZHNhID0gYXJlYTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNQYXJ0aXRpb24uYwppbmRleCA5Nzk5OTY4YTQyLi4zNDI1ZmZjY2E3IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCkBAIC01MTMsNiArNTEzLDEyIEBAIEV4ZWNJbml0 UGFydGl0aW9uSW5mbyhNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwK IAogCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhwcm91dGUtPm1lbWN4dCk7CiAKKwkv KgorCSAqIE5vdGUgdGhhdCB3aGlsZSB3ZSBtdXN0IGNoZWNrIEV4ZWNQbGFuU3RpbGxWYWxpZCgp IGZvciBvdGhlciBsb2NrcyB0YWtlbgorCSAqIGR1cmluZyBleGVjdXRpb24gaW5pdGlhbGl6YXRp b24sIGl0IGlzIE9LIHRvIG5vdCBkbyBzbyBmb3IgcGFydGl0aW9ucworCSAqIG9wZW5lZCBsaWtl IHRoaXMsIGZvciB0dXBsZSByb3V0aW5nLCBiZWNhdXNlIGl0IGNhbid0IHBvc3NpYmx5CisJICog aW52YWxpZGF0ZSB0aGUgcGxhbi4KKwkgKi8KIAlwYXJ0cmVsID0gdGFibGVfb3BlbihwYXJ0T2lk LCBSb3dFeGNsdXNpdmVMb2NrKTsKIAogCWxlYWZfcGFydF9ycmkgPSBtYWtlTm9kZShSZXN1bHRS ZWxJbmZvKTsKQEAgLTExMTEsNiArMTExNywxMSBAQCBFeGVjSW5pdFBhcnRpdGlvbkRpc3BhdGNo SW5mbyhFU3RhdGUgKmVzdGF0ZSwKIAkgKiBPbmx5IHN1Yi1wYXJ0aXRpb25lZCB0YWJsZXMgbmVl ZCB0byBiZSBsb2NrZWQgaGVyZS4gIFRoZSByb290CiAJICogcGFydGl0aW9uZWQgdGFibGUgd2ls bCBhbHJlYWR5IGhhdmUgYmVlbiBsb2NrZWQgYXMgaXQncyByZWZlcmVuY2VkIGluCiAJICogdGhl IHF1ZXJ5J3MgcnRhYmxlLgorCSAqCisJICogTm90ZSB0aGF0IHdoaWxlIHdlIG11c3QgY2hlY2sg RXhlY1BsYW5TdGlsbFZhbGlkKCkgZm9yIG90aGVyIGxvY2tzIHRha2VuCisJICogZHVyaW5nIGV4 ZWN1dGlvbiBpbml0aWFsaXphdGlvbiwgaXQgaXMgT0sgdG8gbm90IGRvIHNvIGZvciBwYXJ0aXRp b25zCisJICogb3BlbmVkIGxpa2UgdGhpcywgZm9yIHR1cGxlIHJvdXRpbmcsIGJlY2F1c2UgaXQg Y2FuJ3QgcG9zc2libHkKKwkgKiBpbnZhbGlkYXRlIHRoZSBwbGFuLgogCSAqLwogCWlmIChwYXJ0 b2lkICE9IFJlbGF0aW9uR2V0UmVsaWQocHJvdXRlLT5wYXJ0aXRpb25fcm9vdCkpCiAJCXJlbCA9 IHRhYmxlX29wZW4ocGFydG9pZCwgUm93RXhjbHVzaXZlTG9jayk7CkBAIC0xODE3LDYgKzE4Mjgs OCBAQCBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAKIAkv KiBDcmVhdGUgdGhlIHdvcmtpbmcgZGF0YSBzdHJ1Y3R1cmUgZm9yIHBydW5pbmcgKi8KIAlwcnVu ZXN0YXRlID0gQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShwbGFuc3RhdGUsIHBydW5laW5mbyk7 CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkv KgogCSAqIFBlcmZvcm0gYW4gaW5pdGlhbCBwYXJ0aXRpb24gcHJ1bmUgcGFzcywgaWYgcmVxdWly ZWQuCkBAIC0xOTQzLDYgKzE5NTYsOCBAQCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5T dGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJCSAqIGR1 cmF0aW9uIG9mIHRoaXMgZXhlY3V0b3IgcnVuLgogCQkJICovCiAJCQlwYXJ0cmVsID0gRXhlY0dl dFJhbmdlVGFibGVSZWxhdGlvbihlc3RhdGUsIHBpbmZvLT5ydGluZGV4KTsKKwkJCWlmICghRXhl Y1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQkJcmV0dXJuIE5VTEw7CiAJCQlwYXJ0a2V5ID0g UmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFydHJlbCk7CiAJCQlwYXJ0ZGVzYyA9IFBhcnRpdGlv bkRpcmVjdG9yeUxvb2t1cChlc3RhdGUtPmVzX3BhcnRpdGlvbl9kaXJlY3RvcnksCiAJCQkJCQkJ CQkJCQlwYXJ0cmVsKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9j bm9kZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKaW5kZXggNGQyODhi YzhkNC4uNmYzYzM3YjZmZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1By b2Nub2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKQEAgLTM4 OCw2ICszODgsOSBAQCBFeGVjSW5pdE5vZGUoUGxhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZ3MpCiAJCQlicmVhazsKIAl9CiAKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3Rh dGUpKQorCQlyZXR1cm4gcmVzdWx0OworCiAJRXhlY1NldEV4ZWNQcm9jTm9kZShyZXN1bHQsIHJl c3VsdC0+RXhlY1Byb2NOb2RlKTsKIAogCS8qCkBAIC00MDMsNiArNDA2LDEyIEBAIEV4ZWNJbml0 Tm9kZShQbGFuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJQXNzZXJ0KElz QShzdWJwbGFuLCBTdWJQbGFuKSk7CiAJCXNzdGF0ZSA9IEV4ZWNJbml0U3ViUGxhbihzdWJwbGFu LCByZXN1bHQpOwogCQlzdWJwcyA9IGxhcHBlbmQoc3VicHMsIHNzdGF0ZSk7CisJCWlmICghRXhl Y1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXsKKwkJCS8qIERvbid0IGxvc2UgdHJhY2sgb2Yg dGhvc2UgaW5pdGlhbGl6ZWQuICovCisJCQlyZXN1bHQtPmluaXRQbGFuID0gc3VicHM7CisJCQly ZXR1cm4gcmVzdWx0OworCQl9CiAJfQogCXJlc3VsdC0+aW5pdFBsYW4gPSBzdWJwczsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjVXRpbHMuYwppbmRleCAwMTJkYmI2OTY1Li5hNDg1ZTdkZmM1IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjVXRpbHMuYwpAQCAtODA0LDcgKzgwNCw4IEBAIEV4ZWNHZXRSYW5nZVRhYmxl UmVsYXRpb24oRVN0YXRlICplc3RhdGUsIEluZGV4IHJ0aSkKIAogCQlBc3NlcnQocnRlLT5ydGVr aW5kID09IFJURV9SRUxBVElPTik7CiAKLQkJaWYgKCFJc1BhcmFsbGVsV29ya2VyKCkpCisJCWlm ICghSXNQYXJhbGxlbFdvcmtlcigpICYmCisJCQkoZXN0YXRlLT5lc190b3BfZWZsYWdzICYgRVhF Q19GTEFHX0dFVF9MT0NLUykgPT0gMCkKIAkJewogCQkJLyoKIAkJCSAqIEluIGEgbm9ybWFsIHF1 ZXJ5LCB3ZSBzaG91bGQgYWxyZWFkeSBoYXZlIHRoZSBhcHByb3ByaWF0ZSBsb2NrLApAQCAtODMz LDYgKzgzNCw2MSBAQCBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBJ bmRleCBydGkpCiAJcmV0dXJuIHJlbDsKIH0KIAorLyoKKyAqIEV4ZWNMb2NrVmlld1JlbGF0aW9u cworICoJCUxvY2sgdmlldyByZWxhdGlvbnMsIGlmIGFueSwgaW4gYSBnaXZlbiBxdWVyeQorICov Cit2b2lkCitFeGVjTG9ja1ZpZXdSZWxhdGlvbnMoTGlzdCAqdmlld1JlbGF0aW9ucywgRVN0YXRl ICplc3RhdGUpCit7CisJTGlzdENlbGwgKmxjOworCisJLyogTm90aGluZyB0byBkbyBpZiBubyBs b2NrcyBuZWVkIHRvIGJlIHRha2VuLiAqLworCWlmICgoZXN0YXRlLT5lc190b3BfZWZsYWdzICYg RVhFQ19GTEFHX0dFVF9MT0NLUykgPT0gMCkKKwkJcmV0dXJuOworCisJZm9yZWFjaChsYywgdmll d1JlbGF0aW9ucykKKwl7CisJCUluZGV4CXJ0aSA9IGxmaXJzdF9pbnQobGMpOworCQlSYW5nZVRi bEVudHJ5ICpydGUgPSBleGVjX3J0X2ZldGNoKHJ0aSwgZXN0YXRlKTsKKworCQlBc3NlcnQoT2lk SXNWYWxpZChydGUtPnJlbGlkKSk7CisJCUFzc2VydChydGUtPnJlbGtpbmQgPT0gUkVMS0lORF9W SUVXKTsKKwkJQXNzZXJ0KHJ0ZS0+cmVsbG9ja21vZGUgIT0gTm9Mb2NrKTsKKworCQlMb2NrUmVs YXRpb25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7CisJfQorfQorCisvKgorICog RXhlY0xvY2tBcHBlbmROb25MZWFmUmVsYXRpb25zCisgKgkJTG9jayBub24tbGVhZiByZWxhdGlv bnMgd2hvc2UgY2hpbGRyZW4gYXJlIHNjYW5uZWQgYnkgYSBnaXZlbgorICoJCUFwcGVuZC9NZXJn ZUFwcGVuZCBub2RlCisgKi8KK3ZvaWQKK0V4ZWNMb2NrQXBwZW5kTm9uTGVhZlJlbGF0aW9ucyhF U3RhdGUgKmVzdGF0ZSwgTGlzdCAqYWxscGFydHJlbGlkcykKK3sKKwlMaXN0Q2VsbCAqbDsKKwor CS8qIE5vdGhpbmcgdG8gZG8gaWYgbm8gbG9ja3MgbmVlZCB0byBiZSB0YWtlbi4gKi8KKwlpZiAo KGVzdGF0ZS0+ZXNfdG9wX2VmbGFncyAmIEVYRUNfRkxBR19HRVRfTE9DS1MpID09IDApCisJCXJl dHVybjsKKworCWZvcmVhY2gobCwgYWxscGFydHJlbGlkcykKKwl7CisJCUJpdG1hcHNldCAqcGFy dHJlbGlkcyA9IGxmaXJzdF9ub2RlKEJpdG1hcHNldCwgbCk7CisJCWludAkJaTsKKworCQlpID0g LTE7CisJCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihwYXJ0cmVsaWRzLCBpKSkgPiAwKQor CQl7CisJCQlSYW5nZVRibEVudHJ5ICpydGUgPSBleGVjX3J0X2ZldGNoKGksIGVzdGF0ZSk7CisK KwkJCUxvY2tSZWxhdGlvbk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKKwkJfQor CX0KK30KKwogLyoKICAqIEV4ZWNJbml0UmVzdWx0UmVsYXRpb24KICAqCQlPcGVuIHJlbGF0aW9u IGdpdmVuIGJ5IHRoZSBwYXNzZWQtaW4gUlQgaW5kZXggYW5kIGZpbGwgaXRzCkBAIC04NDgsNiAr OTA0LDggQEAgRXhlY0luaXRSZXN1bHRSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVs SW5mbyAqcmVzdWx0UmVsSW5mbywKIAlSZWxhdGlvbglyZXN1bHRSZWxhdGlvbkRlc2M7CiAKIAly ZXN1bHRSZWxhdGlvbkRlc2MgPSBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKGVzdGF0ZSwgcnRp KTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm47CiAJSW5pdFJl c3VsdFJlbEluZm8ocmVzdWx0UmVsSW5mbywKIAkJCQkJICByZXN1bHRSZWxhdGlvbkRlc2MsCiAJ CQkJCSAgcnRpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwppbmRleCBmNTU0MjRlYjVhLi5jODhm NzJiYzRlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwpAQCAtODM4LDYgKzgzOCw3IEBAIHBv c3RxdWVsX3N0YXJ0KGV4ZWN1dGlvbl9zdGF0ZSAqZXMsIFNRTEZ1bmN0aW9uQ2FjaGVQdHIgZmNh Y2hlKQogCQlkZXN0ID0gTm9uZV9SZWNlaXZlcjsKIAogCWVzLT5xZCA9IENyZWF0ZVF1ZXJ5RGVz Yyhlcy0+c3RtdCwKKwkJCQkJCQkgTlVMTCwJLyogZm1ncl9zcWwoKSBkb2Vzbid0IHVzZSBDYWNo ZWRQbGFucyAqLwogCQkJCQkJCSBmY2FjaGUtPnNyYywKIAkJCQkJCQkgR2V0QWN0aXZlU25hcHNo b3QoKSwKIAkJCQkJCQkgSW52YWxpZFNuYXBzaG90LApAQCAtODYzLDYgKzg2NCw3IEBAIHBvc3Rx dWVsX3N0YXJ0KGV4ZWN1dGlvbl9zdGF0ZSAqZXMsIFNRTEZ1bmN0aW9uQ2FjaGVQdHIgZmNhY2hl KQogCQllbHNlCiAJCQllZmxhZ3MgPSAwOwkJCS8qIGRlZmF1bHQgcnVuLXRvLWNvbXBsZXRpb24g ZmxhZ3MgKi8KIAkJRXhlY3V0b3JTdGFydChlcy0+cWQsIGVmbGFncyk7CisJCUFzc2VydChlcy0+ cWQtPnBsYW5fdmFsaWQpOwogCX0KIAogCWVzLT5zdGF0dXMgPSBGX0VYRUNfUlVOOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUFnZy5jCmluZGV4IDE5MzQyYTQyMGMuLjA2ZTBkN2QxNDkgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlQWdnLmMKQEAgLTMxMzQsMTUgKzMxMzQsMTggQEAgaGFzaGFnZ19yZXNldF9zcGlsbF9zdGF0 ZShBZ2dTdGF0ZSAqYWdnc3RhdGUpCiAJCXsKIAkJCUhhc2hBZ2dTcGlsbCAqc3BpbGwgPSAmYWdn c3RhdGUtPmhhc2hfc3BpbGxzW3NldG5vXTsKIAotCQkJcGZyZWUoc3BpbGwtPm50dXBsZXMpOwot CQkJcGZyZWUoc3BpbGwtPnBhcnRpdGlvbnMpOworCQkJaWYgKHNwaWxsLT5udHVwbGVzKQorCQkJ CXBmcmVlKHNwaWxsLT5udHVwbGVzKTsKKwkJCWlmIChzcGlsbC0+cGFydGl0aW9ucykKKwkJCQlw ZnJlZShzcGlsbC0+cGFydGl0aW9ucyk7CiAJCX0KIAkJcGZyZWUoYWdnc3RhdGUtPmhhc2hfc3Bp bGxzKTsKIAkJYWdnc3RhdGUtPmhhc2hfc3BpbGxzID0gTlVMTDsKIAl9CiAKIAkvKiBmcmVlIGJh dGNoZXMgKi8KLQlsaXN0X2ZyZWVfZGVlcChhZ2dzdGF0ZS0+aGFzaF9iYXRjaGVzKTsKKwlpZiAo YWdnc3RhdGUtPmhhc2hfYmF0Y2hlcykKKwkJbGlzdF9mcmVlX2RlZXAoYWdnc3RhdGUtPmhhc2hf YmF0Y2hlcyk7CiAJYWdnc3RhdGUtPmhhc2hfYmF0Y2hlcyA9IE5JTDsKIAogCS8qIGNsb3NlIHRh cGUgc2V0ICovCkBAIC0zMjk2LDYgKzMyOTksOCBAQCBFeGVjSW5pdEFnZyhBZ2cgKm5vZGUsIEVT dGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQllZmxhZ3MgJj0gfkVYRUNfRkxBR19SRVdJTkQ7 CiAJb3V0ZXJQbGFuID0gb3V0ZXJQbGFuKG5vZGUpOwogCW91dGVyUGxhblN0YXRlKGFnZ3N0YXRl KSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQ bGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gYWdnc3RhdGU7CiAKIAkvKgogCSAqIGlu aXRpYWxpemUgc291cmNlIHR1cGxlIHR5cGUuCkBAIC00MzM2LDEwICs0MzQxLDEzIEBAIEV4ZWNF bmRBZ2coQWdnU3RhdGUgKm5vZGUpCiAJewogCQlBZ2dTdGF0ZVBlclRyYW5zIHBlcnRyYW5zID0g Jm5vZGUtPnBlcnRyYW5zW3RyYW5zbm9dOwogCi0JCWZvciAoc2V0bm8gPSAwOyBzZXRubyA8IG51 bUdyb3VwaW5nU2V0czsgc2V0bm8rKykKKwkJaWYgKHBlcnRyYW5zKQogCQl7Ci0JCQlpZiAocGVy dHJhbnMtPnNvcnRzdGF0ZXNbc2V0bm9dKQotCQkJCXR1cGxlc29ydF9lbmQocGVydHJhbnMtPnNv cnRzdGF0ZXNbc2V0bm9dKTsKKwkJCWZvciAoc2V0bm8gPSAwOyBzZXRubyA8IG51bUdyb3VwaW5n U2V0czsgc2V0bm8rKykKKwkJCXsKKwkJCQlpZiAocGVydHJhbnMtPnNvcnRzdGF0ZXNbc2V0bm9d KQorCQkJCQl0dXBsZXNvcnRfZW5kKHBlcnRyYW5zLT5zb3J0c3RhdGVzW3NldG5vXSk7CisJCQl9 CiAJCX0KIAl9CiAKQEAgLTQzNTcsNyArNDM2NSw4IEBAIEV4ZWNFbmRBZ2coQWdnU3RhdGUgKm5v ZGUpCiAJRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+c3MucHMpOwogCiAJLyogY2xlYW4gdXAg dHVwbGUgdGFibGUgKi8KLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90 KTsKKwlpZiAobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9k ZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CiAKIAlvdXRlclBsYW4gPSBvdXRlclBsYW5TdGF0ZShu b2RlKTsKIAlFeGVjRW5kTm9kZShvdXRlclBsYW4pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUFwcGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5j CmluZGV4IGMxODViMTFjNjcuLjA5MWY5NzljNDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVBcHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5k LmMKQEAgLTEwOSwxMCArMTA5LDExIEBAIEFwcGVuZFN0YXRlICoKIEV4ZWNJbml0QXBwZW5kKEFw cGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiB7CiAJQXBwZW5kU3RhdGUg KmFwcGVuZHN0YXRlID0gbWFrZU5vZGUoQXBwZW5kU3RhdGUpOwotCVBsYW5TdGF0ZSAqKmFwcGVu ZHBsYW5zdGF0ZXM7CisJUGxhblN0YXRlICoqYXBwZW5kcGxhbnN0YXRlcyA9IE5VTEw7CiAJQml0 bWFwc2V0ICAqdmFsaWRzdWJwbGFuczsKIAlCaXRtYXBzZXQgICphc3luY3BsYW5zOwogCWludAkJ CW5wbGFuczsKKwlpbnQJCQluaW5pdGVkID0gMDsKIAlpbnQJCQluYXN5bmNwbGFuczsKIAlpbnQJ CQlmaXJzdHZhbGlkOwogCWludAkJCWksCkBAIC0xMzMsNiArMTM0LDE1IEBAIEV4ZWNJbml0QXBw ZW5kKEFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJYXBwZW5kc3Rh dGUtPmFzX3N5bmNkb25lID0gZmFsc2U7CiAJYXBwZW5kc3RhdGUtPmFzX2JlZ3VuID0gZmFsc2U7 CiAKKwkvKgorCSAqIExvY2sgbm9uLWxlYWYgcGFydGl0aW9ucy4gIEluIHRoZSBwcnVuaW5nIGNh c2UsIHNvbWUgb2YgdGhlc2UgbG9ja3MKKwkgKiB3aWxsIGJlIHJldGFrZW4gd2hlbiB0aGUgcGFy dGl0aW9uIHdpbGwgYmUgb3BlbmVkIGZvciBwcnVuaW5nLCBidXQgaXQKKwkgKiBkb2VzIG5vdCBz ZWVtIHdvcnRod2hpbGUgdG8gc3BlbmQgY3ljbGVzIHRvIGZpbHRlciB0aG9zZSBvdXQgaGVyZS4K KwkgKi8KKwlFeGVjTG9ja0FwcGVuZE5vbkxlYWZSZWxhdGlvbnMoZXN0YXRlLCBub2RlLT5hbGxw YXJ0cmVsaWRzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlnb3RvIGVh cmx5X2V4aXQ7CisKIAkvKiBJZiBydW4tdGltZSBwYXJ0aXRpb24gcHJ1bmluZyBpcyBlbmFibGVk LCB0aGVuIHNldCB0aGF0IHVwIG5vdyAqLwogCWlmIChub2RlLT5wYXJ0X3BydW5lX2luZGV4ID49 IDApCiAJewpAQCAtMTQ4LDYgKzE1OCw4IEBAIEV4ZWNJbml0QXBwZW5kKEFwcGVuZCAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQkJCQkJCQkJCSAgbm9kZS0+cGFydF9wcnVu ZV9pbmRleCwKIAkJCQkJCQkJCQkJICBub2RlLT5hcHByZWxpZHMsCiAJCQkJCQkJCQkJCSAgJnZh bGlkc3VicGxhbnMpOworCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJZ290 byBlYXJseV9leGl0OwogCQlhcHBlbmRzdGF0ZS0+YXNfcHJ1bmVfc3RhdGUgPSBwcnVuZXN0YXRl OwogCQlucGxhbnMgPSBibXNfbnVtX21lbWJlcnModmFsaWRzdWJwbGFucyk7CiAKQEAgLTIyMiwx MSArMjM0LDEyIEBAIEV4ZWNJbml0QXBwZW5kKEFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUs IGludCBlZmxhZ3MpCiAJCQlmaXJzdHZhbGlkID0gajsKIAogCQlhcHBlbmRwbGFuc3RhdGVzW2or K10gPSBFeGVjSW5pdE5vZGUoaW5pdE5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwkJbmluaXRlZCsr OworCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJZ290byBlYXJseV9leGl0 OwogCX0KIAogCWFwcGVuZHN0YXRlLT5hc19maXJzdF9wYXJ0aWFsX3BsYW4gPSBmaXJzdHZhbGlk OwotCWFwcGVuZHN0YXRlLT5hcHBlbmRwbGFucyA9IGFwcGVuZHBsYW5zdGF0ZXM7Ci0JYXBwZW5k c3RhdGUtPmFzX25wbGFucyA9IG5wbGFuczsKIAogCS8qIEluaXRpYWxpemUgYXN5bmMgc3RhdGUg Ki8KIAlhcHBlbmRzdGF0ZS0+YXNfYXN5bmNwbGFucyA9IGFzeW5jcGxhbnM7CkBAIC0yNzYsNiAr Mjg5LDEwIEBAIEV4ZWNJbml0QXBwZW5kKEFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZ3MpCiAJLyogRm9yIHBhcmFsbGVsIHF1ZXJ5LCB0aGlzIHdpbGwgYmUgb3ZlcnJpZGRl biBsYXRlci4gKi8KIAlhcHBlbmRzdGF0ZS0+Y2hvb3NlX25leHRfc3VicGxhbiA9IGNob29zZV9u ZXh0X3N1YnBsYW5fbG9jYWxseTsKIAorZWFybHlfZXhpdDoKKwlhcHBlbmRzdGF0ZS0+YXBwZW5k cGxhbnMgPSBhcHBlbmRwbGFuc3RhdGVzOworCWFwcGVuZHN0YXRlLT5hc19ucGxhbnMgPSBuaW5p dGVkOworCiAJcmV0dXJuIGFwcGVuZHN0YXRlOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQml0bWFwQW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0 bWFwQW5kLmMKaW5kZXggNGM1ZWIyYjIzYi4uYWNjNmM1MGUyMCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVCaXRtYXBBbmQuYwpAQCAtNTcsNiArNTcsNyBAQCBFeGVjSW5pdEJpdG1hcEFuZChCaXRt YXBBbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCUJpdG1hcEFuZFN0YXRl ICpiaXRtYXBhbmRzdGF0ZSA9IG1ha2VOb2RlKEJpdG1hcEFuZFN0YXRlKTsKIAlQbGFuU3RhdGUg KipiaXRtYXBwbGFuc3RhdGVzOwogCWludAkJCW5wbGFuczsKKwlpbnQJCQluaW5pdGVkID0gMDsK IAlpbnQJCQlpOwogCUxpc3RDZWxsICAgKmw7CiAJUGxhbgkgICAqaW5pdE5vZGU7CkBAIC03Nyw4 ICs3OCw2IEBAIEV4ZWNJbml0Qml0bWFwQW5kKEJpdG1hcEFuZCAqbm9kZSwgRVN0YXRlICplc3Rh dGUsIGludCBlZmxhZ3MpCiAJYml0bWFwYW5kc3RhdGUtPnBzLnBsYW4gPSAoUGxhbiAqKSBub2Rl OwogCWJpdG1hcGFuZHN0YXRlLT5wcy5zdGF0ZSA9IGVzdGF0ZTsKIAliaXRtYXBhbmRzdGF0ZS0+ cHMuRXhlY1Byb2NOb2RlID0gRXhlY0JpdG1hcEFuZDsKLQliaXRtYXBhbmRzdGF0ZS0+Yml0bWFw cGxhbnMgPSBiaXRtYXBwbGFuc3RhdGVzOwotCWJpdG1hcGFuZHN0YXRlLT5ucGxhbnMgPSBucGxh bnM7CiAKIAkvKgogCSAqIGNhbGwgRXhlY0luaXROb2RlIG9uIGVhY2ggb2YgdGhlIHBsYW5zIHRv IGJlIGV4ZWN1dGVkIGFuZCBzYXZlIHRoZQpAQCAtODksNiArODgsOSBAQCBFeGVjSW5pdEJpdG1h cEFuZChCaXRtYXBBbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCXsKIAkJ aW5pdE5vZGUgPSAoUGxhbiAqKSBsZmlyc3QobCk7CiAJCWJpdG1hcHBsYW5zdGF0ZXNbaV0gPSBF eGVjSW5pdE5vZGUoaW5pdE5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwkJbmluaXRlZCsrOworCQlp ZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJZ290byBlYXJseV9leGl0OwogCQlp Kys7CiAJfQogCkBAIC05OSw2ICsxMDEsMTAgQEAgRXhlY0luaXRCaXRtYXBBbmQoQml0bWFwQW5k ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBFeGVjUXVhbCBvciBFeGVj UHJvamVjdC4gIFRoZXkgZG9uJ3QgbmVlZCBhbnkgdHVwbGUgc2xvdHMgZWl0aGVyLgogCSAqLwog CitlYXJseV9leGl0OgorCWJpdG1hcGFuZHN0YXRlLT5iaXRtYXBwbGFucyA9IGJpdG1hcHBsYW5z dGF0ZXM7CisJYml0bWFwYW5kc3RhdGUtPm5wbGFucyA9IG5pbml0ZWQ7CisKIAlyZXR1cm4gYml0 bWFwYW5kc3RhdGU7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVC aXRtYXBIZWFwc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2Fu LmMKaW5kZXggZjM1ZGYwYjhiZi4uZTZhNjg5ZWVmYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUJpdG1hcEhlYXBzY2FuLmMKQEAgLTY2NSw3ICs2NjUsOCBAQCBFeGVjRW5kQml0bWFwSGVh cFNjYW4oQml0bWFwSGVhcFNjYW5TdGF0ZSAqbm9kZSkKIAkgKi8KIAlpZiAobm9kZS0+c3MucHMu cHNfUmVzdWx0VHVwbGVTbG90KQogCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1 bHRUdXBsZVNsb3QpOwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3Qp OworCWlmIChub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KQorCQlFeGVjQ2xlYXJUdXBsZShub2Rl LT5zcy5zc19TY2FuVHVwbGVTbG90KTsKIAogCS8qCiAJICogY2xvc2UgZG93biBzdWJwbGFucwpA QCAtNjkzLDcgKzY5NCw4IEBAIEV4ZWNFbmRCaXRtYXBIZWFwU2NhbihCaXRtYXBIZWFwU2NhblN0 YXRlICpub2RlKQogCS8qCiAJICogY2xvc2UgaGVhcCBzY2FuCiAJICovCi0JdGFibGVfZW5kc2Nh bihzY2FuRGVzYyk7CisJaWYgKHNjYW5EZXNjKQorCQl0YWJsZV9lbmRzY2FuKHNjYW5EZXNjKTsK IH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQpAQCAtNzYzLDExICs3NjUsMTUgQEAgRXhlY0luaXRCaXRtYXBIZWFw U2NhbihCaXRtYXBIZWFwU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJ ICogb3BlbiB0aGUgc2NhbiByZWxhdGlvbgogCSAqLwogCWN1cnJlbnRSZWxhdGlvbiA9IEV4ZWNP cGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwgbm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVmbGFncyk7CisJ aWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIHNjYW5zdGF0ZTsKIAog CS8qCiAJICogaW5pdGlhbGl6ZSBjaGlsZCBub2RlcwogCSAqLwogCW91dGVyUGxhblN0YXRlKHNj YW5zdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7 CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIHNjYW5zdGF0ZTsK IAogCS8qCiAJICogZ2V0IHRoZSBzY2FuIHR5cGUgZnJvbSB0aGUgcmVsYXRpb24gZGVzY3JpcHRv ci4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4u YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYwppbmRleCA4M2Vj OWVkZTg5Li5jYzgzMzJlZjY4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl Qml0bWFwSW5kZXhzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcElu ZGV4c2Nhbi5jCkBAIC0yNjMsNiArMjYzLDggQEAgRXhlY0luaXRCaXRtYXBJbmRleFNjYW4oQml0 bWFwSW5kZXhTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkvKiBPcGVu IHRoZSBpbmRleCByZWxhdGlvbi4gKi8KIAlsb2NrbW9kZSA9IGV4ZWNfcnRfZmV0Y2gobm9kZS0+ c2Nhbi5zY2FucmVsaWQsIGVzdGF0ZSktPnJlbGxvY2ttb2RlOwogCWluZGV4c3RhdGUtPmJpc3Nf UmVsYXRpb25EZXNjID0gaW5kZXhfb3Blbihub2RlLT5pbmRleGlkLCBsb2NrbW9kZSk7CisJaWYg KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIGluZGV4c3RhdGU7CiAKIAkv KgogCSAqIEluaXRpYWxpemUgaW5kZXgtc3BlY2lmaWMgc2NhbiBzdGF0ZQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlQml0bWFwT3IuYwppbmRleCAwYmY4YWY5NjUyLi5iYWJhZDFiNGIyIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwT3IuYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQml0bWFwT3IuYwpAQCAtNTgsNiArNTgsNyBAQCBFeGVjSW5pdEJpdG1hcE9y KEJpdG1hcE9yICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlCaXRtYXBPclN0 YXRlICpiaXRtYXBvcnN0YXRlID0gbWFrZU5vZGUoQml0bWFwT3JTdGF0ZSk7CiAJUGxhblN0YXRl ICoqYml0bWFwcGxhbnN0YXRlczsKIAlpbnQJCQlucGxhbnM7CisJaW50CQkJbmluaXRlZCA9IDA7 CiAJaW50CQkJaTsKIAlMaXN0Q2VsbCAgICpsOwogCVBsYW4JICAgKmluaXROb2RlOwpAQCAtNzgs OCArNzksNiBAQCBFeGVjSW5pdEJpdG1hcE9yKEJpdG1hcE9yICpub2RlLCBFU3RhdGUgKmVzdGF0 ZSwgaW50IGVmbGFncykKIAliaXRtYXBvcnN0YXRlLT5wcy5wbGFuID0gKFBsYW4gKikgbm9kZTsK IAliaXRtYXBvcnN0YXRlLT5wcy5zdGF0ZSA9IGVzdGF0ZTsKIAliaXRtYXBvcnN0YXRlLT5wcy5F eGVjUHJvY05vZGUgPSBFeGVjQml0bWFwT3I7Ci0JYml0bWFwb3JzdGF0ZS0+Yml0bWFwcGxhbnMg PSBiaXRtYXBwbGFuc3RhdGVzOwotCWJpdG1hcG9yc3RhdGUtPm5wbGFucyA9IG5wbGFuczsKIAog CS8qCiAJICogY2FsbCBFeGVjSW5pdE5vZGUgb24gZWFjaCBvZiB0aGUgcGxhbnMgdG8gYmUgZXhl Y3V0ZWQgYW5kIHNhdmUgdGhlCkBAIC05MCw2ICs4OSw5IEBAIEV4ZWNJbml0Qml0bWFwT3IoQml0 bWFwT3IgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCXsKIAkJaW5pdE5vZGUg PSAoUGxhbiAqKSBsZmlyc3QobCk7CiAJCWJpdG1hcHBsYW5zdGF0ZXNbaV0gPSBFeGVjSW5pdE5v ZGUoaW5pdE5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwkJbmluaXRlZCsrOworCQlpZiAoIUV4ZWNQ bGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJZ290byBlYXJseV9leGl0OwogCQlpKys7CiAJfQog CkBAIC0xMDAsNiArMTAyLDEwIEBAIEV4ZWNJbml0Qml0bWFwT3IoQml0bWFwT3IgKm5vZGUsIEVT dGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIEV4ZWNRdWFsIG9yIEV4ZWNQcm9qZWN0LiAg VGhleSBkb24ndCBuZWVkIGFueSB0dXBsZSBzbG90cyBlaXRoZXIuCiAJICovCiAKK2Vhcmx5X2V4 aXQ6CisJYml0bWFwb3JzdGF0ZS0+Yml0bWFwcGxhbnMgPSBiaXRtYXBwbGFuc3RhdGVzOworCWJp dG1hcG9yc3RhdGUtPm5wbGFucyA9IG5pbml0ZWQ7CisKIAlyZXR1cm4gYml0bWFwb3JzdGF0ZTsK IH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN0ZXNjYW4uYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVDdGVzY2FuLmMKaW5kZXggY2M0YzQyNDNlMi4uZWVkNWI3 NWE0ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN0ZXNjYW4uYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3Rlc2Nhbi5jCkBAIC0yOTcsMTQgKzI5NywxNiBA QCBFeGVjRW5kQ3RlU2NhbihDdGVTY2FuU3RhdGUgKm5vZGUpCiAJICovCiAJaWYgKG5vZGUtPnNz LnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKIAkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNf UmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVT bG90KTsKKwlpZiAobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUo bm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CiAKIAkvKgogCSAqIElmIEkgYW0gdGhlIGxlYWRl ciwgZnJlZSB0aGUgdHVwbGVzdG9yZS4KIAkgKi8KIAlpZiAobm9kZS0+bGVhZGVyID09IG5vZGUp CiAJewotCQl0dXBsZXN0b3JlX2VuZChub2RlLT5jdGVfdGFibGUpOworCQlpZiAobm9kZS0+Y3Rl X3RhYmxlKQorCQkJdHVwbGVzdG9yZV9lbmQobm9kZS0+Y3RlX3RhYmxlKTsKIAkJbm9kZS0+Y3Rl X3RhYmxlID0gTlVMTDsKIAl9CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlQ3VzdG9tLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMKaW5kZXggYmQ0 MmM2NWIyOS4uYjAzNDk5ZmFlNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUN1c3RvbS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVDdXN0b20uYwpAQCAtNjEs NiArNjEsOCBAQCBFeGVjSW5pdEN1c3RvbVNjYW4oQ3VzdG9tU2NhbiAqY3NjYW4sIEVTdGF0ZSAq ZXN0YXRlLCBpbnQgZWZsYWdzKQogCWlmIChzY2FucmVsaWQgPiAwKQogCXsKIAkJc2Nhbl9yZWwg PSBFeGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUsIHNjYW5yZWxpZCwgZWZsYWdzKTsKKwkJaWYg KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJldHVybiBjc3M7CiAJCWNzcy0+c3Mu c3NfY3VycmVudFJlbGF0aW9uID0gc2Nhbl9yZWw7CiAJfQogCkBAIC0xMjcsNiArMTI5LDEwIEBA IEV4ZWNDdXN0b21TY2FuKFBsYW5TdGF0ZSAqcHN0YXRlKQogdm9pZAogRXhlY0VuZEN1c3RvbVNj YW4oQ3VzdG9tU2NhblN0YXRlICpub2RlKQogeworCS8qCisJICogWFhYIC0gQmVnaW5DdXN0b21T Y2FuKCkgbWF5IG5vdCBoYXZlIG9jY3VycmVkIGlmIEV4ZWNJbml0Q3VzdG9tU2NhbigpCisJICog aGl0IHRoZSBlYXJseSBleGl0IGNhc2UuCisJICovCiAJQXNzZXJ0KG5vZGUtPm1ldGhvZHMtPkVu ZEN1c3RvbVNjYW4gIT0gTlVMTCk7CiAJbm9kZS0+bWV0aG9kcy0+RW5kQ3VzdG9tU2Nhbihub2Rl KTsKIApAQCAtMTM0LDggKzE0MCwxMCBAQCBFeGVjRW5kQ3VzdG9tU2NhbihDdXN0b21TY2FuU3Rh dGUgKm5vZGUpCiAJRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+c3MucHMpOwogCiAJLyogQ2xl YW4gb3V0IHRoZSB0dXBsZSB0YWJsZSAqLwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBz X1Jlc3VsdFR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxl U2xvdCk7CisJaWYgKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKKwkJRXhlY0NsZWFy VHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKKwlpZiAobm9kZS0+c3Muc3Nf U2NhblR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xv dCk7CiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGb3Jl aWduc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZvcmVpZ25zY2FuLmMKaW5kZXgg YzIxMzlhY2NhMC4uZDNmMGE2NTQ4NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUZvcmVpZ25zY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZvcmVpZ25z Y2FuLmMKQEAgLTE3Myw2ICsxNzMsOCBAQCBFeGVjSW5pdEZvcmVpZ25TY2FuKEZvcmVpZ25TY2Fu ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlpZiAoc2NhbnJlbGlkID4gMCkK IAl7CiAJCWN1cnJlbnRSZWxhdGlvbiA9IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwgc2Nh bnJlbGlkLCBlZmxhZ3MpOworCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJ cmV0dXJuIHNjYW5zdGF0ZTsKIAkJc2NhbnN0YXRlLT5zcy5zc19jdXJyZW50UmVsYXRpb24gPSBj dXJyZW50UmVsYXRpb247CiAJCWZkd3JvdXRpbmUgPSBHZXRGZHdSb3V0aW5lRm9yUmVsYXRpb24o Y3VycmVudFJlbGF0aW9uLCB0cnVlKTsKIAl9CkBAIC0yNjQsNiArMjY2LDggQEAgRXhlY0luaXRG b3JlaWduU2NhbihGb3JlaWduU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3Mp CiAJaWYgKG91dGVyUGxhbihub2RlKSkKIAkJb3V0ZXJQbGFuU3RhdGUoc2NhbnN0YXRlKSA9CiAJ CQlFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFF eGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIHNjYW5zdGF0ZTsKIAogCS8qCiAJ ICogVGVsbCB0aGUgRkRXIHRvIGluaXRpYWxpemUgdGhlIHNjYW4uCkBAIC0zMDAsMTQgKzMwNCwx NyBAQCBFeGVjRW5kRm9yZWlnblNjYW4oRm9yZWlnblNjYW5TdGF0ZSAqbm9kZSkKIAlGb3JlaWdu U2NhbiAqcGxhbiA9IChGb3JlaWduU2NhbiAqKSBub2RlLT5zcy5wcy5wbGFuOwogCUVTdGF0ZQkg ICAqZXN0YXRlID0gbm9kZS0+c3MucHMuc3RhdGU7CiAKLQkvKiBMZXQgdGhlIEZEVyBzaHV0IGRv d24gKi8KLQlpZiAocGxhbi0+b3BlcmF0aW9uICE9IENNRF9TRUxFQ1QpCisJLyogTGV0IHRoZSBG RFcgc2h1dCBkb3duIGlmIG5lZWRlZC4gKi8KKwlpZiAobm9kZS0+ZmR3X3N0YXRlKQogCXsKLQkJ aWYgKGVzdGF0ZS0+ZXNfZXBxX2FjdGl2ZSA9PSBOVUxMKQotCQkJbm9kZS0+ZmR3cm91dGluZS0+ RW5kRGlyZWN0TW9kaWZ5KG5vZGUpOworCQlpZiAocGxhbi0+b3BlcmF0aW9uICE9IENNRF9TRUxF Q1QpCisJCXsKKwkJCWlmIChlc3RhdGUtPmVzX2VwcV9hY3RpdmUgPT0gTlVMTCkKKwkJCQlub2Rl LT5mZHdyb3V0aW5lLT5FbmREaXJlY3RNb2RpZnkobm9kZSk7CisJCX0KKwkJZWxzZQorCQkJbm9k ZS0+ZmR3cm91dGluZS0+RW5kRm9yZWlnblNjYW4obm9kZSk7CiAJfQotCWVsc2UKLQkJbm9kZS0+ ZmR3cm91dGluZS0+RW5kRm9yZWlnblNjYW4obm9kZSk7CiAKIAkvKiBTaHV0IGRvd24gYW55IG91 dGVyIHBsYW4uICovCiAJaWYgKG91dGVyUGxhblN0YXRlKG5vZGUpKQpAQCAtMzE5LDcgKzMyNiw4 IEBAIEV4ZWNFbmRGb3JlaWduU2NhbihGb3JlaWduU2NhblN0YXRlICpub2RlKQogCS8qIGNsZWFu IG91dCB0aGUgdHVwbGUgdGFibGUgKi8KIAlpZiAobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVT bG90KQogCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwot CUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOworCWlmIChub2RlLT5z cy5zc19TY2FuVHVwbGVTbG90KQorCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVw bGVTbG90KTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUZ1bmN0aW9uc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZ1bmN0aW9u c2Nhbi5jCmluZGV4IGRkMDZlZjhhZWUuLjc5MmVjZGE0YTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVGdW5jdGlvbnNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlRnVuY3Rpb25zY2FuLmMKQEAgLTUzMyw3ICs1MzMsOCBAQCBFeGVjRW5kRnVuY3Rpb25T Y2FuKEZ1bmN0aW9uU2NhblN0YXRlICpub2RlKQogCSAqLwogCWlmIChub2RlLT5zcy5wcy5wc19S ZXN1bHRUdXBsZVNsb3QpCiAJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1 cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CisJ aWYgKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNz LnNzX1NjYW5UdXBsZVNsb3QpOwogCiAJLyoKIAkgKiBSZWxlYXNlIHNsb3RzIGFuZCB0dXBsZXN0 b3JlIHJlc291cmNlcwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhl ci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jCmluZGV4IDMwN2ZjMTBlZWEu LjM2NWQzYWYzZTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKQEAgLTg5LDYgKzg5LDgg QEAgRXhlY0luaXRHYXRoZXIoR2F0aGVyICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFn cykKIAkgKi8KIAlvdXRlck5vZGUgPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQbGFuU3RhdGUo Z2F0aGVyc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyTm9kZSwgZXN0YXRlLCBlZmxhZ3MpOwor CWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBnYXRoZXJzdGF0ZTsK IAl0dXBEZXNjID0gRXhlY0dldFJlc3VsdFR5cGUob3V0ZXJQbGFuU3RhdGUoZ2F0aGVyc3RhdGUp KTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVy Z2UuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jCmluZGV4IDlkNWUx YTQ2ZTkuLjhkMjgwOWYwNzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVH YXRoZXJNZXJnZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5j CkBAIC0xMDgsNiArMTA4LDggQEAgRXhlY0luaXRHYXRoZXJNZXJnZShHYXRoZXJNZXJnZSAqbm9k ZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICovCiAJb3V0ZXJOb2RlID0gb3V0ZXJQ bGFuKG5vZGUpOwogCW91dGVyUGxhblN0YXRlKGdtX3N0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRl ck5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUp KQorCQlyZXR1cm4gZ21fc3RhdGU7CiAKIAkvKgogCSAqIExlYWRlciBtYXkgYWNjZXNzIEV4ZWNQ cm9jTm9kZSByZXN1bHQgZGlyZWN0bHkgKGlmCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlR3JvdXAuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5jCmluZGV4 IDI1YTE2MTg5NTIuLmUwODMyYmI3NzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVHcm91cC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5jCkBAIC0x ODUsNiArMTg1LDggQEAgRXhlY0luaXRHcm91cChHcm91cCAqbm9kZSwgRVN0YXRlICplc3RhdGUs IGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6ZSBjaGlsZCBub2RlcwogCSAqLwogCW91dGVyUGxh blN0YXRlKGdycHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwg ZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gZ3Jw c3RhdGU7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgc2NhbiBzbG90IGFuZCB0eXBlLgpAQCAtMjMx LDcgKzIzMyw4IEBAIEV4ZWNFbmRHcm91cChHcm91cFN0YXRlICpub2RlKQogCUV4ZWNGcmVlRXhw ckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKIAogCS8qIGNsZWFuIHVwIHR1cGxlIHRhYmxlICovCi0J RXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPnNz LnNzX1NjYW5UdXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBs ZVNsb3QpOwogCiAJb3V0ZXJQbGFuID0gb3V0ZXJQbGFuU3RhdGUobm9kZSk7CiAJRXhlY0VuZE5v ZGUob3V0ZXJQbGFuKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNo LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jCmluZGV4IDc0OGM5YjAwMjQuLjg5 MWJjZWU5MTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2guYwpAQCAtMzg2LDYgKzM4Niw4IEBAIEV4 ZWNJbml0SGFzaChIYXNoICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBp bml0aWFsaXplIGNoaWxkIG5vZGVzCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUoaGFzaHN0YXRlKSA9 IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4 ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gaGFzaHN0YXRlOwogCiAJLyoKIAkg KiBpbml0aWFsaXplIG91ciByZXN1bHQgc2xvdCBhbmQgdHlwZS4gTm8gbmVlZCB0byBidWlsZCBw cm9qZWN0aW9uCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaGpvaW4u YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jCmluZGV4IGYxODlmYjRkMjgu LjkzY2UwYzhiZTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9p bi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jCkBAIC02OTEsOCAr NjkxLDEyIEBAIEV4ZWNJbml0SGFzaEpvaW4oSGFzaEpvaW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRl LCBpbnQgZWZsYWdzKQogCWhhc2hOb2RlID0gKEhhc2ggKikgaW5uZXJQbGFuKG5vZGUpOwogCiAJ b3V0ZXJQbGFuU3RhdGUoaGpzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJOb2RlLCBlc3RhdGUs IGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIGhq c3RhdGU7CiAJb3V0ZXJEZXNjID0gRXhlY0dldFJlc3VsdFR5cGUob3V0ZXJQbGFuU3RhdGUoaGpz dGF0ZSkpOwogCWlubmVyUGxhblN0YXRlKGhqc3RhdGUpID0gRXhlY0luaXROb2RlKChQbGFuICop IGhhc2hOb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0 YXRlKSkKKwkJcmV0dXJuIGhqc3RhdGU7CiAJaW5uZXJEZXNjID0gRXhlY0dldFJlc3VsdFR5cGUo aW5uZXJQbGFuU3RhdGUoaGpzdGF0ZSkpOwogCiAJLyoKQEAgLTgxMyw5ICs4MTcsMTIgQEAgRXhl Y0VuZEhhc2hKb2luKEhhc2hKb2luU3RhdGUgKm5vZGUpCiAJLyoKIAkgKiBjbGVhbiBvdXQgdGhl IHR1cGxlIHRhYmxlCiAJICovCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+anMucHMucHNfUmVzdWx0 VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5oal9PdXRlclR1cGxlU2xvdCk7Ci0J RXhlY0NsZWFyVHVwbGUobm9kZS0+aGpfSGFzaFR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPmpzLnBz LnBzX1Jlc3VsdFR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+anMucHMucHNfUmVz dWx0VHVwbGVTbG90KTsKKwlpZiAobm9kZS0+aGpfT3V0ZXJUdXBsZVNsb3QpCisJCUV4ZWNDbGVh clR1cGxlKG5vZGUtPmhqX091dGVyVHVwbGVTbG90KTsKKwlpZiAobm9kZS0+aGpfSGFzaFR1cGxl U2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+aGpfSGFzaFR1cGxlU2xvdCk7CiAKIAkvKgog CSAqIGNsZWFuIHVwIHN1YnRyZWVzCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlSW5jcmVtZW50YWxTb3J0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5jcmVtZW50 YWxTb3J0LmMKaW5kZXggMTJiYzIyZjMzYy4uNmIyZGE1NjA0NCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNvcnQuYwpAQCAtMTA0MSw2ICsxMDQxLDggQEAgRXhlY0lu aXRJbmNyZW1lbnRhbFNvcnQoSW5jcmVtZW50YWxTb3J0ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncykKIAkgKiBub2RlcyBtYXkgYmUgYWJsZSB0byBkbyBzb21ldGhpbmcgbW9yZSB1 c2VmdWwuCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUoaW5jcnNvcnRzdGF0ZSkgPSBFeGVjSW5pdE5v ZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxs VmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIGluY3Jzb3J0c3RhdGU7CiAKIAkvKgogCSAqIEluaXRp YWxpemUgc2NhbiBzbG90IGFuZCB0eXBlLgpAQCAtMTA4MCwxMiArMTA4MiwxNiBAQCBFeGVjRW5k SW5jcmVtZW50YWxTb3J0KEluY3JlbWVudGFsU29ydFN0YXRlICpub2RlKQogCVNPX3ByaW50Zigi RXhlY0VuZEluY3JlbWVudGFsU29ydDogc2h1dHRpbmcgZG93biBzb3J0IG5vZGVcbiIpOwogCiAJ LyogY2xlYW4gb3V0IHRoZSBzY2FuIHR1cGxlICovCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Mu c3NfU2NhblR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpCisJCUV4 ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwogCS8qIG11c3QgZHJvcCBw b2ludGVyIHRvIHNvcnQgcmVzdWx0IHR1cGxlICovCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Mu cHMucHNfUmVzdWx0VHVwbGVTbG90KTsKKwlpZiAobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVT bG90KQorCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwog CS8qIG11c3QgZHJvcCBzdGFuZGFsb25lIHR1cGxlIHNsb3RzIGZyb20gb3V0ZXIgbm9kZSAqLwot CUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qobm9kZS0+Z3JvdXBfcGl2b3QpOwotCUV4ZWNE cm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qobm9kZS0+dHJhbnNmZXJfdHVwbGUpOworCWlmIChub2Rl LT5ncm91cF9waXZvdCkKKwkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChub2RlLT5ncm91 cF9waXZvdCk7CisJaWYgKG5vZGUtPnRyYW5zZmVyX3R1cGxlKQorCQlFeGVjRHJvcFNpbmdsZVR1 cGxlVGFibGVTbG90KG5vZGUtPnRyYW5zZmVyX3R1cGxlKTsKIAogCS8qCiAJICogUmVsZWFzZSB0 dXBsZXNvcnQgcmVzb3VyY2VzLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUluZGV4b25seXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2Fu LmMKaW5kZXggMGI0M2E5Yjk2OS4uYjYwYTA4NjQ2NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlSW5kZXhvbmx5c2Nhbi5jCkBAIC0zOTQsNyArMzk0LDggQEAgRXhlY0VuZEluZGV4T25seVNj YW4oSW5kZXhPbmx5U2NhblN0YXRlICpub2RlKQogCSAqLwogCWlmIChub2RlLT5zcy5wcy5wc19S ZXN1bHRUdXBsZVNsb3QpCiAJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1 cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CisJ aWYobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Mu c3NfU2NhblR1cGxlU2xvdCk7CiAKIAkvKgogCSAqIGNsb3NlIHRoZSBpbmRleCByZWxhdGlvbiAo bm8tb3AgaWYgd2UgZGlkbid0IG9wZW4gaXQpCkBAIC01MTIsNiArNTEzLDggQEAgRXhlY0luaXRJ bmRleE9ubHlTY2FuKEluZGV4T25seVNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZs YWdzKQogCSAqIG9wZW4gdGhlIHNjYW4gcmVsYXRpb24KIAkgKi8KIAljdXJyZW50UmVsYXRpb24g PSBFeGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUsIG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBlZmxh Z3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBpbmRleHN0 YXRlOwogCiAJaW5kZXhzdGF0ZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uID0gY3VycmVudFJlbGF0 aW9uOwogCWluZGV4c3RhdGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7CS8qIG5vIGhl YXAgc2NhbiBoZXJlICovCkBAIC01NjUsNiArNTY4LDggQEAgRXhlY0luaXRJbmRleE9ubHlTY2Fu KEluZGV4T25seVNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCS8qIE9w ZW4gdGhlIGluZGV4IHJlbGF0aW9uLiAqLwogCWxvY2ttb2RlID0gZXhlY19ydF9mZXRjaChub2Rl LT5zY2FuLnNjYW5yZWxpZCwgZXN0YXRlKS0+cmVsbG9ja21vZGU7CiAJaW5kZXhzdGF0ZS0+aW9z c19SZWxhdGlvbkRlc2MgPSBpbmRleF9vcGVuKG5vZGUtPmluZGV4aWQsIGxvY2ttb2RlKTsKKwlp ZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gaW5kZXhzdGF0ZTsKIAog CS8qCiAJICogSW5pdGlhbGl6ZSBpbmRleC1zcGVjaWZpYyBzY2FuIHN0YXRlCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlSW5kZXhzY2FuLmMKaW5kZXggNDU0MGM3NzgxZC4uNjI4YzIzMzkxOSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYwpAQCAtODA4LDcgKzgwOCw4IEBAIEV4ZWNFbmRJ bmRleFNjYW4oSW5kZXhTY2FuU3RhdGUgKm5vZGUpCiAJICovCiAJaWYgKG5vZGUtPnNzLnBzLnBz X1Jlc3VsdFR1cGxlU2xvdCkKIAkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0 VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsK KwlpZiAobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+ c3Muc3NfU2NhblR1cGxlU2xvdCk7CiAKIAkvKgogCSAqIGNsb3NlIHRoZSBpbmRleCByZWxhdGlv biAobm8tb3AgaWYgd2UgZGlkbid0IG9wZW4gaXQpCkBAIC05MjUsNiArOTI2LDggQEAgRXhlY0lu aXRJbmRleFNjYW4oSW5kZXhTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykK IAkgKiBvcGVuIHRoZSBzY2FuIHJlbGF0aW9uCiAJICovCiAJY3VycmVudFJlbGF0aW9uID0gRXhl Y09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLCBub2RlLT5zY2FuLnNjYW5yZWxpZCwgZWZsYWdzKTsK KwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gaW5kZXhzdGF0ZTsK IAogCWluZGV4c3RhdGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiA9IGN1cnJlbnRSZWxhdGlvbjsK IAlpbmRleHN0YXRlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPSBOVUxMOwkvKiBubyBoZWFwIHNj YW4gaGVyZSAqLwpAQCAtOTcwLDYgKzk3Myw4IEBAIEV4ZWNJbml0SW5kZXhTY2FuKEluZGV4U2Nh biAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJLyogT3BlbiB0aGUgaW5kZXgg cmVsYXRpb24uICovCiAJbG9ja21vZGUgPSBleGVjX3J0X2ZldGNoKG5vZGUtPnNjYW4uc2NhbnJl bGlkLCBlc3RhdGUpLT5yZWxsb2NrbW9kZTsKIAlpbmRleHN0YXRlLT5pc3NfUmVsYXRpb25EZXNj ID0gaW5kZXhfb3Blbihub2RlLT5pbmRleGlkLCBsb2NrbW9kZSk7CisJaWYgKCFFeGVjUGxhblN0 aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIGluZGV4c3RhdGU7CiAKIAkvKgogCSAqIEluaXRp YWxpemUgaW5kZXgtc3BlY2lmaWMgc2NhbiBzdGF0ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUxpbWl0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwpp bmRleCA0MjVmYmZjNDA1Li4yZmNiZGU3NGVkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTGltaXQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwpA QCAtNDc2LDYgKzQ3Niw4IEBAIEV4ZWNJbml0TGltaXQoTGltaXQgKm5vZGUsIEVTdGF0ZSAqZXN0 YXRlLCBpbnQgZWZsYWdzKQogCSAqLwogCW91dGVyUGxhbiA9IG91dGVyUGxhbihub2RlKTsKIAlv dXRlclBsYW5TdGF0ZShsaW1pdHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4sIGVzdGF0 ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4g bGltaXRzdGF0ZTsKIAogCS8qCiAJICogaW5pdGlhbGl6ZSBjaGlsZCBleHByZXNzaW9ucwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYwppbmRleCA0MDc0MTRmYzBjLi4zYThhYTJiNWE0IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYwpAQCAtMzIzLDYgKzMyMyw4IEBAIEV4ZWNJ bml0TG9ja1Jvd3MoTG9ja1Jvd3MgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQog CSAqIHRoZW4gaW5pdGlhbGl6ZSBvdXRlciBwbGFuCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUobHJz dGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFF eGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIGxyc3RhdGU7CiAKIAkvKiBub2Rl IHJldHVybnMgdW5tb2RpZmllZCBzbG90cyBmcm9tIHRoZSBvdXRlciBwbGFuICovCiAJbHJzdGF0 ZS0+cHMucmVzdWx0b3Bzc2V0ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVNYXRlcmlhbC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1hdGVyaWFsLmMK aW5kZXggMDk2MzI2NzhiMC4uZjE0NmViYjFkNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZU1hdGVyaWFsLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1hdGVy aWFsLmMKQEAgLTIxNCw2ICsyMTQsOCBAQCBFeGVjSW5pdE1hdGVyaWFsKE1hdGVyaWFsICpub2Rl LCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAogCW91dGVyUGxhbiA9IG91dGVyUGxhbihu b2RlKTsKIAlvdXRlclBsYW5TdGF0ZShtYXRzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFu LCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJ cmV0dXJuIG1hdHN0YXRlOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHJlc3VsdCB0eXBlIGFuZCBz bG90LiBObyBuZWVkIHRvIGluaXRpYWxpemUgcHJvamVjdGlvbiBpbmZvCkBAIC0yNDIsNyArMjQ0 LDggQEAgRXhlY0VuZE1hdGVyaWFsKE1hdGVyaWFsU3RhdGUgKm5vZGUpCiAJLyoKIAkgKiBjbGVh biBvdXQgdGhlIHR1cGxlIHRhYmxlCiAJICovCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3Nf U2NhblR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpCisJCUV4ZWND bGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwogCiAJLyoKIAkgKiBSZWxlYXNl IHR1cGxlc3RvcmUgcmVzb3VyY2VzCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTWVtb2l6ZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYwppbmRleCA0 ZjA0MjY5ZTI2Li4zMDAzZWUxZTVjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTWVtb2l6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMKQEAg LTkzOCw2ICs5MzgsOCBAQCBFeGVjSW5pdE1lbW9pemUoTWVtb2l6ZSAqbm9kZSwgRVN0YXRlICpl c3RhdGUsIGludCBlZmxhZ3MpCiAKIAlvdXRlck5vZGUgPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0 ZXJQbGFuU3RhdGUobXN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlck5vZGUsIGVzdGF0ZSwgZWZs YWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gbXN0YXRl OwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHJldHVybiBzbG90IGFuZCB0eXBlLiBObyBuZWVkIHRv IGluaXRpYWxpemUgcHJvamVjdGlvbiBpbmZvCkBAIC0xMDQzLDYgKzEwNDUsNyBAQCBFeGVjRW5k TWVtb2l6ZShNZW1vaXplU3RhdGUgKm5vZGUpCiB7CiAjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lO RwogCS8qIFZhbGlkYXRlIHRoZSBtZW1vcnkgYWNjb3VudGluZyBjb2RlIGlzIGNvcnJlY3QgaW4g YXNzZXJ0IGJ1aWxkcy4gKi8KKwlpZiAobm9kZS0+aGFzaHRhYmxlKQogCXsKIAkJaW50CQkJY291 bnQ7CiAJCXVpbnQ2NAkJbWVtID0gMDsKQEAgLTEwODksMTEgKzEwOTIsMTQgQEAgRXhlY0VuZE1l bW9pemUoTWVtb2l6ZVN0YXRlICpub2RlKQogCX0KIAogCS8qIFJlbW92ZSB0aGUgY2FjaGUgY29u dGV4dCAqLwotCU1lbW9yeUNvbnRleHREZWxldGUobm9kZS0+dGFibGVDb250ZXh0KTsKKwlpZiAo bm9kZS0+dGFibGVDb250ZXh0KQorCQlNZW1vcnlDb250ZXh0RGVsZXRlKG5vZGUtPnRhYmxlQ29u dGV4dCk7CiAKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKKwlp ZiAobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Mu c3NfU2NhblR1cGxlU2xvdCk7CiAJLyogbXVzdCBkcm9wIHBvaW50ZXIgdG8gY2FjaGUgcmVzdWx0 IHR1cGxlICovCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90 KTsKKwlpZiAobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KQorCQlFeGVjQ2xlYXJUdXBs ZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwogCiAJLyoKIAkgKiBmcmVlIGV4cHJj b250ZXh0CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQu YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCmluZGV4IDM5OWIzOWM1 OTguLjQwYmJhMzU0OTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJn ZUFwcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCkBA IC02NSw5ICs2NSwxMCBAQCBNZXJnZUFwcGVuZFN0YXRlICoKIEV4ZWNJbml0TWVyZ2VBcHBlbmQo TWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogewogCU1lcmdl QXBwZW5kU3RhdGUgKm1lcmdlc3RhdGUgPSBtYWtlTm9kZShNZXJnZUFwcGVuZFN0YXRlKTsKLQlQ bGFuU3RhdGUgKiptZXJnZXBsYW5zdGF0ZXM7CisJUGxhblN0YXRlICoqbWVyZ2VwbGFuc3RhdGVz ID0gTlVMTDsKIAlCaXRtYXBzZXQgICp2YWxpZHN1YnBsYW5zOwogCWludAkJCW5wbGFuczsKKwlp bnQJCQluaW5pdGVkID0gMDsKIAlpbnQJCQlpLAogCQkJCWo7CiAKQEAgLTgxLDYgKzgyLDE1IEBA IEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBp bnQgZWZsYWdzKQogCW1lcmdlc3RhdGUtPnBzLnN0YXRlID0gZXN0YXRlOwogCW1lcmdlc3RhdGUt PnBzLkV4ZWNQcm9jTm9kZSA9IEV4ZWNNZXJnZUFwcGVuZDsKIAorCS8qCisJICogTG9jayBub24t bGVhZiBwYXJ0aXRpb25zLiAgSW4gdGhlIHBydW5pbmcgY2FzZSwgc29tZSBvZiB0aGVzZSBsb2Nr cworCSAqIHdpbGwgYmUgcmV0YWtlbiB3aGVuIHRoZSBwYXJ0aXRpb24gd2lsbCBiZSBvcGVuZWQg Zm9yIHBydW5pbmcsIGJ1dCBpdAorCSAqIGRvZXMgbm90IHNlZW0gd29ydGh3aGlsZSB0byBzcGVu ZCBjeWNsZXMgdG8gZmlsdGVyIHRob3NlIG91dCBoZXJlLgorCSAqLworCUV4ZWNMb2NrQXBwZW5k Tm9uTGVhZlJlbGF0aW9ucyhlc3RhdGUsIG5vZGUtPmFsbHBhcnRyZWxpZHMpOworCWlmICghRXhl Y1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCWdvdG8gZWFybHlfZXhpdDsKKwogCS8qIElmIHJ1 bi10aW1lIHBhcnRpdGlvbiBwcnVuaW5nIGlzIGVuYWJsZWQsIHRoZW4gc2V0IHRoYXQgdXAgbm93 ICovCiAJaWYgKG5vZGUtPnBhcnRfcHJ1bmVfaW5kZXggPj0gMCkKIAl7CkBAIC05Niw2ICsxMDYs OCBAQCBFeGVjSW5pdE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0 ZSwgaW50IGVmbGFncykKIAkJCQkJCQkJCQkJICBub2RlLT5wYXJ0X3BydW5lX2luZGV4LAogCQkJ CQkJCQkJCQkgIG5vZGUtPmFwcHJlbGlkcywKIAkJCQkJCQkJCQkJICAmdmFsaWRzdWJwbGFucyk7 CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQlyZXR1cm4gbWVyZ2VzdGF0 ZTsKIAkJbWVyZ2VzdGF0ZS0+bXNfcHJ1bmVfc3RhdGUgPSBwcnVuZXN0YXRlOwogCQlucGxhbnMg PSBibXNfbnVtX21lbWJlcnModmFsaWRzdWJwbGFucyk7CiAKQEAgLTEyMiw4ICsxMzQsNiBAQCBF eGVjSW5pdE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50 IGVmbGFncykKIAl9CiAKIAltZXJnZXBsYW5zdGF0ZXMgPSAoUGxhblN0YXRlICoqKSBwYWxsb2Mo bnBsYW5zICogc2l6ZW9mKFBsYW5TdGF0ZSAqKSk7Ci0JbWVyZ2VzdGF0ZS0+bWVyZ2VwbGFucyA9 IG1lcmdlcGxhbnN0YXRlczsKLQltZXJnZXN0YXRlLT5tc19ucGxhbnMgPSBucGxhbnM7CiAKIAlt ZXJnZXN0YXRlLT5tc19zbG90cyA9IChUdXBsZVRhYmxlU2xvdCAqKikgcGFsbG9jMChzaXplb2Yo VHVwbGVUYWJsZVNsb3QgKikgKiBucGxhbnMpOwogCW1lcmdlc3RhdGUtPm1zX2hlYXAgPSBiaW5h cnloZWFwX2FsbG9jYXRlKG5wbGFucywgaGVhcF9jb21wYXJlX3Nsb3RzLApAQCAtMTUyLDYgKzE2 Miw5IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0 YXRlLCBpbnQgZWZsYWdzKQogCQlQbGFuCSAgICppbml0Tm9kZSA9IChQbGFuICopIGxpc3RfbnRo KG5vZGUtPm1lcmdlcGxhbnMsIGkpOwogCiAJCW1lcmdlcGxhbnN0YXRlc1tqKytdID0gRXhlY0lu aXROb2RlKGluaXROb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJCW5pbml0ZWQrKzsKKwkJaWYgKCFF eGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCWdvdG8gZWFybHlfZXhpdDsKIAl9CiAKIAlt ZXJnZXN0YXRlLT5wcy5wc19Qcm9qSW5mbyA9IE5VTEw7CkBAIC0xODgsNiArMjAxLDEwIEBAIEV4 ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQg ZWZsYWdzKQogCSAqLwogCW1lcmdlc3RhdGUtPm1zX2luaXRpYWxpemVkID0gZmFsc2U7CiAKK2Vh cmx5X2V4aXQ6CisJbWVyZ2VzdGF0ZS0+bWVyZ2VwbGFucyA9IG1lcmdlcGxhbnN0YXRlczsKKwlt ZXJnZXN0YXRlLT5tc19ucGxhbnMgPSBuaW5pdGVkOworCiAJcmV0dXJuIG1lcmdlc3RhdGU7CiB9 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYwppbmRleCA4MDlhYTIxNWM2Li45Njhi ZTA1NTY4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jCkBAIC0xNDgyLDExICsx NDgyLDE1IEBAIEV4ZWNJbml0TWVyZ2VKb2luKE1lcmdlSm9pbiAqbm9kZSwgRVN0YXRlICplc3Rh dGUsIGludCBlZmxhZ3MpCiAJbWVyZ2VzdGF0ZS0+bWpfU2tpcE1hcmtSZXN0b3JlID0gbm9kZS0+ c2tpcF9tYXJrX3Jlc3RvcmU7CiAKIAlvdXRlclBsYW5TdGF0ZShtZXJnZXN0YXRlKSA9IEV4ZWNJ bml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFu U3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gbWVyZ2VzdGF0ZTsKIAlvdXRlckRlc2MgPSBF eGVjR2V0UmVzdWx0VHlwZShvdXRlclBsYW5TdGF0ZShtZXJnZXN0YXRlKSk7CiAJaW5uZXJQbGFu U3RhdGUobWVyZ2VzdGF0ZSkgPSBFeGVjSW5pdE5vZGUoaW5uZXJQbGFuKG5vZGUpLCBlc3RhdGUs CiAJCQkJCQkJCQkJCSAgbWVyZ2VzdGF0ZS0+bWpfU2tpcE1hcmtSZXN0b3JlID8KIAkJCQkJCQkJ CQkJICBlZmxhZ3MgOgogCQkJCQkJCQkJCQkgIChlZmxhZ3MgfCBFWEVDX0ZMQUdfTUFSSykpOwor CWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBtZXJnZXN0YXRlOwog CWlubmVyRGVzYyA9IEV4ZWNHZXRSZXN1bHRUeXBlKGlubmVyUGxhblN0YXRlKG1lcmdlc3RhdGUp KTsKIAogCS8qCkBAIC0xNjQyLDggKzE2NDYsMTAgQEAgRXhlY0VuZE1lcmdlSm9pbihNZXJnZUpv aW5TdGF0ZSAqbm9kZSkKIAkvKgogCSAqIGNsZWFuIG91dCB0aGUgdHVwbGUgdGFibGUKIAkgKi8K LQlFeGVjQ2xlYXJUdXBsZShub2RlLT5qcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwotCUV4ZWND bGVhclR1cGxlKG5vZGUtPm1qX01hcmtlZFR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPmpzLnBzLnBz X1Jlc3VsdFR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+anMucHMucHNfUmVzdWx0 VHVwbGVTbG90KTsKKwlpZiAobm9kZS0+bWpfTWFya2VkVHVwbGVTbG90KQorCQlFeGVjQ2xlYXJU dXBsZShub2RlLT5tal9NYXJrZWRUdXBsZVNsb3QpOwogCiAJLyoKIAkgKiBzaHV0IGRvd24gdGhl IHN1YnBsYW5zCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFi bGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCmluZGV4IGUzNTAz NzU2ODEuLjhhNzA1NDMzMjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVN b2RpZnlUYWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5j CkBAIC0zOTAwLDYgKzM5MDAsNyBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpu b2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlQbGFuCSAgICpzdWJwbGFuID0gb3V0 ZXJQbGFuKG5vZGUpOwogCUNtZFR5cGUJCW9wZXJhdGlvbiA9IG5vZGUtPm9wZXJhdGlvbjsKIAlp bnQJCQlucmVscyA9IGxpc3RfbGVuZ3RoKG5vZGUtPnJlc3VsdFJlbGF0aW9ucyk7CisJaW50CQkJ bmluaXRlZCA9IDA7CiAJUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbzsKIAlMaXN0CSAgICph cm93bWFya3M7CiAJTGlzdENlbGwgICAqbDsKQEAgLTM5MjEsNyArMzkyMiw2IEBAIEV4ZWNJbml0 TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KQogCW10c3RhdGUtPmNhblNldFRhZyA9IG5vZGUtPmNhblNldFRhZzsKIAltdHN0YXRlLT5tdF9k b25lID0gZmFsc2U7CiAKLQltdHN0YXRlLT5tdF9ucmVscyA9IG5yZWxzOwogCW10c3RhdGUtPnJl c3VsdFJlbEluZm8gPSAoUmVzdWx0UmVsSW5mbyAqKQogCQlwYWxsb2MobnJlbHMgKiBzaXplb2Yo UmVzdWx0UmVsSW5mbykpOwogCkBAIC0zOTU2LDYgKzM5NTYsOSBAQCBFeGVjSW5pdE1vZGlmeVRh YmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJCQkJ CQkgICBsaW5pdGlhbF9pbnQobm9kZS0+cmVzdWx0UmVsYXRpb25zKSk7CiAJfQogCisJaWYgKCFF eGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJZ290byBlYXJseV9leGl0OworCiAJLyogc2V0 IHVwIGVwcXN0YXRlIHdpdGggZHVtbXkgc3VicGxhbiBkYXRhIGZvciB0aGUgbW9tZW50ICovCiAJ RXZhbFBsYW5RdWFsSW5pdCgmbXRzdGF0ZS0+bXRfZXBxc3RhdGUsIGVzdGF0ZSwgTlVMTCwgTklM LCBub2RlLT5lcHFQYXJhbSk7CiAJbXRzdGF0ZS0+ZmlyZUJTVHJpZ2dlcnMgPSB0cnVlOwpAQCAt Mzk4Miw2ICszOTg1LDggQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCWlmIChyZXN1bHRSZWxJbmZvICE9IG10c3Rh dGUtPnJvb3RSZXN1bHRSZWxJbmZvKQogCQl7CiAJCQlFeGVjSW5pdFJlc3VsdFJlbGF0aW9uKGVz dGF0ZSwgcmVzdWx0UmVsSW5mbywgcmVzdWx0UmVsYXRpb24pOworCQkJaWYgKCFFeGVjUGxhblN0 aWxsVmFsaWQoZXN0YXRlKSkKKwkJCQlnb3RvIGVhcmx5X2V4aXQ7CiAKIAkJCS8qCiAJCQkgKiBG b3IgY2hpbGQgcmVzdWx0IHJlbGF0aW9ucywgc3RvcmUgdGhlIHJvb3QgcmVzdWx0IHJlbGF0aW9u CkBAIC00MDA5LDExICs0MDE0LDEzIEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUg Km5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIE5vdyB3ZSBtYXkgaW5pdGlh bGl6ZSB0aGUgc3VicGxhbi4KIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShtdHN0YXRlKSA9IEV4ZWNJ bml0Tm9kZShzdWJwbGFuLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFs aWQoZXN0YXRlKSkKKwkJZ290byBlYXJseV9leGl0OwogCiAJLyoKIAkgKiBEbyBhZGRpdGlvbmFs IHBlci1yZXN1bHQtcmVsYXRpb24gaW5pdGlhbGl6YXRpb24uCiAJICovCi0JZm9yIChpID0gMDsg aSA8IG5yZWxzOyBpKyspCisJZm9yIChpID0gMDsgaSA8IG5yZWxzOyBpKyssIG5pbml0ZWQrKykK IAl7CiAJCXJlc3VsdFJlbEluZm8gPSAmbXRzdGF0ZS0+cmVzdWx0UmVsSW5mb1tpXTsKIApAQCAt NDM2Miw2ICs0MzY5LDggQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCWVzdGF0ZS0+ZXNfYXV4bW9kaWZ5dGFibGVz ID0gbGNvbnMobXRzdGF0ZSwKIAkJCQkJCQkJCQkgICBlc3RhdGUtPmVzX2F1eG1vZGlmeXRhYmxl cyk7CiAKK2Vhcmx5X2V4aXQ6CisJbXRzdGF0ZS0+bXRfbnJlbHMgPSBuaW5pdGVkOwogCXJldHVy biBtdHN0YXRlOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmFt ZWR0dXBsZXN0b3Jlc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5hbWVkdHVwbGVz dG9yZXNjYW4uYwppbmRleCA0NjgzMmFkODJmLi4xZjkyYzQzZDNiIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTmFtZWR0dXBsZXN0b3Jlc2Nhbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVOYW1lZHR1cGxlc3RvcmVzY2FuLmMKQEAgLTE3NCw3ICsxNzQsOCBA QCBFeGVjRW5kTmFtZWRUdXBsZXN0b3JlU2NhbihOYW1lZFR1cGxlc3RvcmVTY2FuU3RhdGUgKm5v ZGUpCiAJICovCiAJaWYgKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKIAkJRXhlY0Ns ZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBs ZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKKwlpZiAobm9kZS0+c3Muc3NfU2NhblR1cGxl U2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CiB9CiAK IC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOZXN0bG9v cC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMKaW5kZXggYjNkNTJlNjll Yy4uZGVkYTBjMjU1OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rs b29wLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMKQEAgLTI5NSwx MSArMjk1LDE1IEBAIEV4ZWNJbml0TmVzdExvb3AoTmVzdExvb3AgKm5vZGUsIEVTdGF0ZSAqZXN0 YXRlLCBpbnQgZWZsYWdzKQogCSAqIHZhbHVlcy4KIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShubHN0 YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlp ZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gbmxzdGF0ZTsKIAlpZiAo bm9kZS0+bmVzdFBhcmFtcyA9PSBOSUwpCiAJCWVmbGFncyB8PSBFWEVDX0ZMQUdfUkVXSU5EOwog CWVsc2UKIAkJZWZsYWdzICY9IH5FWEVDX0ZMQUdfUkVXSU5EOwogCWlubmVyUGxhblN0YXRlKG5s c3RhdGUpID0gRXhlY0luaXROb2RlKGlubmVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOwor CWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBubHN0YXRlOwogCiAJ LyoKIAkgKiBJbml0aWFsaXplIHJlc3VsdCBzbG90LCB0eXBlIGFuZCBwcm9qZWN0aW9uLgpAQCAt MzcyLDcgKzM3Niw4IEBAIEV4ZWNFbmROZXN0TG9vcChOZXN0TG9vcFN0YXRlICpub2RlKQogCS8q CiAJICogY2xlYW4gb3V0IHRoZSB0dXBsZSB0YWJsZQogCSAqLwotCUV4ZWNDbGVhclR1cGxlKG5v ZGUtPmpzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPmpzLnBzLnBzX1Jlc3Vs dFR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+anMucHMucHNfUmVzdWx0VHVwbGVT bG90KTsKIAogCS8qCiAJICogY2xvc2UgZG93biBzdWJwbGFucwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVQcm9qZWN0U2V0LmMKaW5kZXggZjZmZjNkYzQ0Yy4uODVkMjBjNDY4MCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQuYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlUHJvamVjdFNldC5jCkBAIC0yNDcsNiArMjQ3LDggQEAgRXhlY0luaXRQcm9q ZWN0U2V0KFByb2plY3RTZXQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAq IGluaXRpYWxpemUgY2hpbGQgbm9kZXMKIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShzdGF0ZSkgPSBF eGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVj UGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIHN0YXRlOwogCiAJLyoKIAkgKiB3ZSBk b24ndCB1c2UgaW5uZXIgcGxhbgpAQCAtMzI4LDcgKzMzMCw4IEBAIEV4ZWNFbmRQcm9qZWN0U2V0 KFByb2plY3RTZXRTdGF0ZSAqbm9kZSkKIAkvKgogCSAqIGNsZWFuIG91dCB0aGUgdHVwbGUgdGFi bGUKIAkgKi8KLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwor CWlmIChub2RlLT5wcy5wc19SZXN1bHRUdXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxlKG5vZGUt PnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7CiAKIAkvKgogCSAqIHNodXQgZG93biBzdWJwbGFucwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uYwppbmRleCBlNzgxMDAzOTM0 Li45NjdmZTRmMjg3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJz aXZldW5pb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24u YwpAQCAtMjQ0LDcgKzI0NCwxMSBAQCBFeGVjSW5pdFJlY3Vyc2l2ZVVuaW9uKFJlY3Vyc2l2ZVVu aW9uICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBpbml0aWFsaXplIGNo aWxkIG5vZGVzCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUocnVzdGF0ZSkgPSBFeGVjSW5pdE5vZGUo b3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFs aWQoZXN0YXRlKSkKKwkJcmV0dXJuIHJ1c3RhdGU7CiAJaW5uZXJQbGFuU3RhdGUocnVzdGF0ZSkg PSBFeGVjSW5pdE5vZGUoaW5uZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFF eGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIHJ1c3RhdGU7CiAKIAkvKgogCSAq IElmIGhhc2hpbmcsIHByZWNvbXB1dGUgZm1nciBsb29rdXAgZGF0YSBmb3IgaW5uZXIgbG9vcCwg YW5kIGNyZWF0ZSB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1 bHQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYwppbmRleCA0MjE5NzEyZDMw Li5jNTQ5YjY4NGEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0 LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jCkBAIC0yMDgsNiArMjA4 LDggQEAgRXhlY0luaXRSZXN1bHQoUmVzdWx0ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVm bGFncykKIAkgKiBpbml0aWFsaXplIGNoaWxkIG5vZGVzCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUo cmVzc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3Mp OworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiByZXNzdGF0ZTsK IAogCS8qCiAJICogd2UgZG9uJ3QgdXNlIGlubmVyIHBsYW4KQEAgLTI0OCw3ICsyNTAsOCBAQCBF eGVjRW5kUmVzdWx0KFJlc3VsdFN0YXRlICpub2RlKQogCS8qCiAJICogY2xlYW4gb3V0IHRoZSB0 dXBsZSB0YWJsZQogCSAqLwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnBzLnBzX1Jlc3VsdFR1cGxl U2xvdCk7CisJaWYgKG5vZGUtPnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVw bGUobm9kZS0+cHMucHNfUmVzdWx0VHVwbGVTbG90KTsKIAogCS8qCiAJICogc2h1dCBkb3duIHN1 YnBsYW5zCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNhbXBsZXNjYW4uYwppbmRleCBkN2UyMmIxZGJi Li5iM2JjOWIxZjc3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2FtcGxl c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTYW1wbGVzY2FuLmMKQEAgLTEy NSw2ICsxMjUsOCBAQCBFeGVjSW5pdFNhbXBsZVNjYW4oU2FtcGxlU2NhbiAqbm9kZSwgRVN0YXRl ICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCUV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwKIAkJ CQkJCQkgbm9kZS0+c2Nhbi5zY2FucmVsaWQsCiAJCQkJCQkJIGVmbGFncyk7CisJaWYgKCFFeGVj UGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIHNjYW5zdGF0ZTsKIAogCS8qIHdlIHdv bid0IHNldCB1cCB0aGUgSGVhcFNjYW5EZXNjIHRpbGwgbGF0ZXIgKi8KIAlzY2Fuc3RhdGUtPnNz LnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7CkBAIC0xOTgsNyArMjAwLDggQEAgRXhlY0VuZFNh bXBsZVNjYW4oU2FtcGxlU2NhblN0YXRlICpub2RlKQogCSAqLwogCWlmIChub2RlLT5zcy5wcy5w c19SZXN1bHRUdXBsZVNsb3QpCiAJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3Vs dFR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7 CisJaWYgKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxlKG5vZGUt PnNzLnNzX1NjYW5UdXBsZVNsb3QpOwogCiAJLyoKIAkgKiBjbG9zZSBoZWFwIHNjYW4KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlU2Vxc2Nhbi5jCmluZGV4IDRkYTBmMjhmN2IuLmU3Y2ExOWVlNGUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwpAQCAtMTUzLDYgKzE1Myw4IEBAIEV4ZWNJbml0U2Vx U2NhbihTZXFTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJRXhlY09w ZW5TY2FuUmVsYXRpb24oZXN0YXRlLAogCQkJCQkJCSBub2RlLT5zY2FuLnNjYW5yZWxpZCwKIAkJ CQkJCQkgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1 cm4gc2NhbnN0YXRlOwogCiAJLyogYW5kIGNyZWF0ZSBzbG90IHdpdGggdGhlIGFwcHJvcHJpYXRl IHJvd3R5cGUgKi8KIAlFeGVjSW5pdFNjYW5UdXBsZVNsb3QoZXN0YXRlLCAmc2NhbnN0YXRlLT5z cywKQEAgLTIwMCw3ICsyMDIsOCBAQCBFeGVjRW5kU2VxU2NhbihTZXFTY2FuU3RhdGUgKm5vZGUp CiAJICovCiAJaWYgKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKIAkJRXhlY0NsZWFy VHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShu b2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKKwlpZiAobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xv dCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CiAKIAkvKgog CSAqIGNsb3NlIGhlYXAgc2NhbgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVNldE9wLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYwppbmRleCA0YmMyNDA2 Yjg5Li45NTk1MGE1YzIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0 T3AuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYwpAQCAtNTI4LDYgKzUy OCw4IEBAIEV4ZWNJbml0U2V0T3AoU2V0T3AgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZs YWdzKQogCWlmIChub2RlLT5zdHJhdGVneSA9PSBTRVRPUF9IQVNIRUQpCiAJCWVmbGFncyAmPSB+ RVhFQ19GTEFHX1JFV0lORDsKIAlvdXRlclBsYW5TdGF0ZShzZXRvcHN0YXRlKSA9IEV4ZWNJbml0 Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3Rp bGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gc2V0b3BzdGF0ZTsKIAlvdXRlckRlc2MgPSBFeGVj R2V0UmVzdWx0VHlwZShvdXRlclBsYW5TdGF0ZShzZXRvcHN0YXRlKSk7CiAKIAkvKgpAQCAtNTgz LDcgKzU4NSw4IEBAIHZvaWQKIEV4ZWNFbmRTZXRPcChTZXRPcFN0YXRlICpub2RlKQogewogCS8q IGNsZWFuIHVwIHR1cGxlIHRhYmxlICovCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+cHMucHNfUmVz dWx0VHVwbGVTbG90KTsKKwlpZiAobm9kZS0+cHMucHNfUmVzdWx0VHVwbGVTbG90KQorCQlFeGVj Q2xlYXJUdXBsZShub2RlLT5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwogCiAJLyogZnJlZSBzdWJz aWRpYXJ5IHN0dWZmIGluY2x1ZGluZyBoYXNodGFibGUgKi8KIAlpZiAobm9kZS0+dGFibGVDb250 ZXh0KQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMKaW5kZXggYzZjNzJjNmU2Ny4uODlmZWY4NmFiYSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlU29ydC5jCkBAIC0yNjMsNiArMjYzLDggQEAgRXhlY0luaXRTb3J0 KFNvcnQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWVmbGFncyAmPSB+KEVY RUNfRkxBR19SRVdJTkQgfCBFWEVDX0ZMQUdfQkFDS1dBUkQgfCBFWEVDX0ZMQUdfTUFSSyk7CiAK IAlvdXRlclBsYW5TdGF0ZShzb3J0c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2Rl KSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJ CXJldHVybiBzb3J0c3RhdGU7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgc2NhbiBzbG90IGFuZCB0 eXBlLgpAQCAtMzA2LDkgKzMwOCwxMSBAQCBFeGVjRW5kU29ydChTb3J0U3RhdGUgKm5vZGUpCiAJ LyoKIAkgKiBjbGVhbiBvdXQgdGhlIHR1cGxlIHRhYmxlCiAJICovCi0JRXhlY0NsZWFyVHVwbGUo bm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNs b3QpCisJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwogCS8qIG11 c3QgZHJvcCBwb2ludGVyIHRvIHNvcnQgcmVzdWx0IHR1cGxlICovCi0JRXhlY0NsZWFyVHVwbGUo bm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKKwlpZiAobm9kZS0+c3MucHMucHNfUmVz dWx0VHVwbGVTbG90KQorCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBs ZVNsb3QpOwogCiAJLyoKIAkgKiBSZWxlYXNlIHR1cGxlc29ydCByZXNvdXJjZXMKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYwppbmRleCA0MjQ3MWJmYzA0Li45YjhjZGRjODlm IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5jCkBAIC0xMjQsNiArMTI0 LDggQEAgRXhlY0luaXRTdWJxdWVyeVNjYW4oU3VicXVlcnlTY2FuICpub2RlLCBFU3RhdGUgKmVz dGF0ZSwgaW50IGVmbGFncykKIAkgKiBpbml0aWFsaXplIHN1YnF1ZXJ5CiAJICovCiAJc3VicXVl cnlzdGF0ZS0+c3VicGxhbiA9IEV4ZWNJbml0Tm9kZShub2RlLT5zdWJwbGFuLCBlc3RhdGUsIGVm bGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIHN1YnF1 ZXJ5c3RhdGU7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgc2NhbiBzbG90IGFuZCB0eXBlIChuZWVk ZWQgYnkgRXhlY0Fzc2lnblNjYW5Qcm9qZWN0aW9uSW5mbykKQEAgLTE3Nyw3ICsxNzksOCBAQCBF eGVjRW5kU3VicXVlcnlTY2FuKFN1YnF1ZXJ5U2NhblN0YXRlICpub2RlKQogCSAqLwogCWlmIChu b2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpCiAJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNz LnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2Nh blR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpCisJCUV4ZWNDbGVh clR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwogCiAJLyoKIAkgKiBjbG9zZSBkb3du IHN1YnF1ZXJ5CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGFibGVGdW5j c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRhYmxlRnVuY3NjYW4uYwppbmRleCAw YzZjOTEyNzc4Li5kNzUzNjk1M2YxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlVGFibGVGdW5jc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUYWJsZUZ1 bmNzY2FuLmMKQEAgLTIyMyw3ICsyMjMsOCBAQCBFeGVjRW5kVGFibGVGdW5jU2NhbihUYWJsZUZ1 bmNTY2FuU3RhdGUgKm5vZGUpCiAJICovCiAJaWYgKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxl U2xvdCkKIAkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsK LQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKKwlpZiAobm9kZS0+ c3Muc3NfU2NhblR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1 cGxlU2xvdCk7CiAKIAkvKgogCSAqIFJlbGVhc2UgdHVwbGVzdG9yZSByZXNvdXJjZXMKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYwppbmRleCAyMTI0YzU1ZWY1Li4xYWU0NTFk N2E2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jCkBAIC0zNDIsNyAr MzQyLDggQEAgRXhlY0VuZFRpZFJhbmdlU2NhbihUaWRSYW5nZVNjYW5TdGF0ZSAqbm9kZSkKIAkg Ki8KIAlpZiAobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KQogCQlFeGVjQ2xlYXJUdXBs ZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwotCUV4ZWNDbGVhclR1cGxlKG5vZGUt PnNzLnNzX1NjYW5UdXBsZVNsb3QpOworCWlmIChub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KQor CQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKIH0KIAogLyogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQpAQCAtMzg2LDYgKzM4Nyw4IEBAIEV4ZWNJbml0VGlkUmFuZ2VTY2FuKFRpZFJhbmdlU2Nh biAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogb3BlbiB0aGUgc2NhbiBy ZWxhdGlvbgogCSAqLwogCWN1cnJlbnRSZWxhdGlvbiA9IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVz dGF0ZSwgbm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxs VmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIHRpZHJhbmdlc3RhdGU7CiAKIAl0aWRyYW5nZXN0YXRl LT5zcy5zc19jdXJyZW50UmVsYXRpb24gPSBjdXJyZW50UmVsYXRpb247CiAJdGlkcmFuZ2VzdGF0 ZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0gTlVMTDsJLyogbm8gdGFibGUgc2NhbiBoZXJlICov CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYwppbmRleCA4NjJiZDAzMzBiLi45ZmU3NmIxYzYw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2FuLmMKQEAgLTQ4Myw3ICs0ODMsOCBAQCBFeGVj RW5kVGlkU2NhbihUaWRTY2FuU3RhdGUgKm5vZGUpCiAJICovCiAJaWYgKG5vZGUtPnNzLnBzLnBz X1Jlc3VsdFR1cGxlU2xvdCkKIAkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0 VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsK KwlpZiAobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+ c3Muc3NfU2NhblR1cGxlU2xvdCk7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTUyOSw2ICs1MzAsOCBA QCBFeGVjSW5pdFRpZFNjYW4oVGlkU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJICogb3BlbiB0aGUgc2NhbiByZWxhdGlvbgogCSAqLwogCWN1cnJlbnRSZWxhdGlvbiA9 IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwgbm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVmbGFn cyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIHRpZHN0YXRl OwogCiAJdGlkc3RhdGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiA9IGN1cnJlbnRSZWxhdGlvbjsK IAl0aWRzdGF0ZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0gTlVMTDsgLyogbm8gaGVhcCBzY2Fu IGhlcmUgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUuYwppbmRleCA0NTAzNWQ3NGZhLi42OWYy M2IwMmM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jCkBAIC0xMzYsNiArMTM2LDggQEAg RXhlY0luaXRVbmlxdWUoVW5pcXVlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykK IAkgKiB0aGVuIGluaXRpYWxpemUgb3V0ZXIgcGxhbgogCSAqLwogCW91dGVyUGxhblN0YXRlKHVu aXF1ZXN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdz KTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gdW5pcXVlc3Rh dGU7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgcmVzdWx0IHNsb3QgYW5kIHR5cGUuIFVuaXF1ZSBu b2RlcyBkbyBubyBwcm9qZWN0aW9ucywgc28KQEAgLTE2OSw3ICsxNzEsOCBAQCB2b2lkCiBFeGVj RW5kVW5pcXVlKFVuaXF1ZVN0YXRlICpub2RlKQogewogCS8qIGNsZWFuIHVwIHR1cGxlIHRhYmxl ICovCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+cHMucHNfUmVzdWx0VHVwbGVTbG90KTsKKwlpZiAo bm9kZS0+cHMucHNfUmVzdWx0VHVwbGVTbG90KQorCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5wcy5w c19SZXN1bHRUdXBsZVNsb3QpOwogCiAJRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+cHMpOwog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVmFsdWVzc2Nhbi5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVZhbHVlc3NjYW4uYwppbmRleCAzMmFjZTYzMDE3Li5mNWRl ZGJhYjYzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVmFsdWVzc2Nhbi5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVWYWx1ZXNzY2FuLmMKQEAgLTM0MCw3ICsz NDAsOCBAQCBFeGVjRW5kVmFsdWVzU2NhbihWYWx1ZXNTY2FuU3RhdGUgKm5vZGUpCiAJICovCiAJ aWYgKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKIAkJRXhlY0NsZWFyVHVwbGUobm9k ZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5z c19TY2FuVHVwbGVTbG90KTsKKwlpZiAobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCkKKwkJRXhl Y0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CiB9CiAKIC8qIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYwppbmRleCA3YzA3ZmIwNjg0Li42MTZiYjk3 Njc1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCkBAIC0xMzM0LDcgKzEzMzQs NyBAQCByZWxlYXNlX3BhcnRpdGlvbihXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUpCiAJCVdpbmRv d1N0YXRlUGVyRnVuYyBwZXJmdW5jc3RhdGUgPSAmKHdpbnN0YXRlLT5wZXJmdW5jW2ldKTsKIAog CQkvKiBSZWxlYXNlIGFueSBwYXJ0aXRpb24tbG9jYWwgc3RhdGUgb2YgdGhpcyB3aW5kb3cgZnVu Y3Rpb24gKi8KLQkJaWYgKHBlcmZ1bmNzdGF0ZS0+d2lub2JqKQorCQlpZiAocGVyZnVuY3N0YXRl ICYmIHBlcmZ1bmNzdGF0ZS0+d2lub2JqKQogCQkJcGVyZnVuY3N0YXRlLT53aW5vYmotPmxvY2Fs bWVtID0gTlVMTDsKIAl9CiAKQEAgLTEzNDQsMTIgKzEzNDQsMTcgQEAgcmVsZWFzZV9wYXJ0aXRp b24oV2luZG93QWdnU3RhdGUgKndpbnN0YXRlKQogCSAqIGFueSBhZ2dyZWdhdGUgdGVtcCBkYXRh KS4gIFdlIGRvbid0IHJlbHkgb24gcmV0YWlsIHBmcmVlIGJlY2F1c2Ugc29tZQogCSAqIGFnZ3Jl Z2F0ZXMgbWlnaHQgaGF2ZSBhbGxvY2F0ZWQgZGF0YSB3ZSBkb24ndCBoYXZlIGRpcmVjdCBwb2lu dGVycyB0by4KIAkgKi8KLQlNZW1vcnlDb250ZXh0UmVzZXRBbmREZWxldGVDaGlsZHJlbih3aW5z dGF0ZS0+cGFydGNvbnRleHQpOwotCU1lbW9yeUNvbnRleHRSZXNldEFuZERlbGV0ZUNoaWxkcmVu KHdpbnN0YXRlLT5hZ2djb250ZXh0KTsKLQlmb3IgKGkgPSAwOyBpIDwgd2luc3RhdGUtPm51bWFn Z3M7IGkrKykKKwlpZiAod2luc3RhdGUtPnBhcnRjb250ZXh0KQorCQlNZW1vcnlDb250ZXh0UmVz ZXRBbmREZWxldGVDaGlsZHJlbih3aW5zdGF0ZS0+cGFydGNvbnRleHQpOworCWlmICh3aW5zdGF0 ZS0+YWdnY29udGV4dCkKKwkJTWVtb3J5Q29udGV4dFJlc2V0QW5kRGVsZXRlQ2hpbGRyZW4od2lu c3RhdGUtPmFnZ2NvbnRleHQpOworCWlmICh3aW5zdGF0ZS0+cGVyYWdnKQogCXsKLQkJaWYgKHdp bnN0YXRlLT5wZXJhZ2dbaV0uYWdnY29udGV4dCAhPSB3aW5zdGF0ZS0+YWdnY29udGV4dCkKLQkJ CU1lbW9yeUNvbnRleHRSZXNldEFuZERlbGV0ZUNoaWxkcmVuKHdpbnN0YXRlLT5wZXJhZ2dbaV0u YWdnY29udGV4dCk7CisJCWZvciAoaSA9IDA7IGkgPCB3aW5zdGF0ZS0+bnVtYWdnczsgaSsrKQor CQl7CisJCQlpZiAod2luc3RhdGUtPnBlcmFnZ1tpXS5hZ2djb250ZXh0ICE9IHdpbnN0YXRlLT5h Z2djb250ZXh0KQorCQkJCU1lbW9yeUNvbnRleHRSZXNldEFuZERlbGV0ZUNoaWxkcmVuKHdpbnN0 YXRlLT5wZXJhZ2dbaV0uYWdnY29udGV4dCk7CisJCX0KIAl9CiAKIAlpZiAod2luc3RhdGUtPmJ1 ZmZlcikKQEAgLTI0NTEsNiArMjQ1Niw4IEBAIEV4ZWNJbml0V2luZG93QWdnKFdpbmRvd0FnZyAq bm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICovCiAJb3V0ZXJQbGFuID0gb3V0 ZXJQbGFuKG5vZGUpOwogCW91dGVyUGxhblN0YXRlKHdpbnN0YXRlKSA9IEV4ZWNJbml0Tm9kZShv dXRlclBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3Rh dGUpKQorCQlyZXR1cm4gd2luc3RhdGU7CiAKIAkvKgogCSAqIGluaXRpYWxpemUgc291cmNlIHR1 cGxlIHR5cGUgKHdoaWNoIGlzIGFsc28gdGhlIHR1cGxlIHR5cGUgdGhhdCB3ZSdsbApAQCAtMjY3 OSwxMSArMjY4NiwxNiBAQCBFeGVjRW5kV2luZG93QWdnKFdpbmRvd0FnZ1N0YXRlICpub2RlKQog CiAJcmVsZWFzZV9wYXJ0aXRpb24obm9kZSk7CiAKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5z c19TY2FuVHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5maXJzdF9wYXJ0X3Nsb3Qp OwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPmFnZ19yb3dfc2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUo bm9kZS0+dGVtcF9zbG90XzEpOwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnRlbXBfc2xvdF8yKTsK KwlpZiAobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+ c3Muc3NfU2NhblR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPmZpcnN0X3BhcnRfc2xvdCkKKwkJRXhl Y0NsZWFyVHVwbGUobm9kZS0+Zmlyc3RfcGFydF9zbG90KTsKKwlpZiAobm9kZS0+YWdnX3Jvd19z bG90KQorCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5hZ2dfcm93X3Nsb3QpOworCWlmIChub2RlLT50 ZW1wX3Nsb3RfMSkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+dGVtcF9zbG90XzEpOworCWlmIChu b2RlLT50ZW1wX3Nsb3RfMikKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+dGVtcF9zbG90XzIpOwog CWlmIChub2RlLT5mcmFtZWhlYWRfc2xvdCkKIAkJRXhlY0NsZWFyVHVwbGUobm9kZS0+ZnJhbWVo ZWFkX3Nsb3QpOwogCWlmIChub2RlLT5mcmFtZXRhaWxfc2xvdCkKQEAgLTI2OTYsMTYgKzI3MDgs MjMgQEAgRXhlY0VuZFdpbmRvd0FnZyhXaW5kb3dBZ2dTdGF0ZSAqbm9kZSkKIAlub2RlLT5zcy5w cy5wc19FeHByQ29udGV4dCA9IG5vZGUtPnRtcGNvbnRleHQ7CiAJRXhlY0ZyZWVFeHByQ29udGV4 dCgmbm9kZS0+c3MucHMpOwogCi0JZm9yIChpID0gMDsgaSA8IG5vZGUtPm51bWFnZ3M7IGkrKykK KwlpZiAobm9kZS0+cGVyYWdnKQogCXsKLQkJaWYgKG5vZGUtPnBlcmFnZ1tpXS5hZ2djb250ZXh0 ICE9IG5vZGUtPmFnZ2NvbnRleHQpCi0JCQlNZW1vcnlDb250ZXh0RGVsZXRlKG5vZGUtPnBlcmFn Z1tpXS5hZ2djb250ZXh0KTsKKwkJZm9yIChpID0gMDsgaSA8IG5vZGUtPm51bWFnZ3M7IGkrKykK KwkJeworCQkJaWYgKG5vZGUtPnBlcmFnZ1tpXS5hZ2djb250ZXh0ICE9IG5vZGUtPmFnZ2NvbnRl eHQpCisJCQkJTWVtb3J5Q29udGV4dERlbGV0ZShub2RlLT5wZXJhZ2dbaV0uYWdnY29udGV4dCk7 CisJCX0KIAl9Ci0JTWVtb3J5Q29udGV4dERlbGV0ZShub2RlLT5wYXJ0Y29udGV4dCk7Ci0JTWVt b3J5Q29udGV4dERlbGV0ZShub2RlLT5hZ2djb250ZXh0KTsKKwlpZiAobm9kZS0+cGFydGNvbnRl eHQpCisJCU1lbW9yeUNvbnRleHREZWxldGUobm9kZS0+cGFydGNvbnRleHQpOworCWlmIChub2Rl LT5hZ2djb250ZXh0KQorCQlNZW1vcnlDb250ZXh0RGVsZXRlKG5vZGUtPmFnZ2NvbnRleHQpOwog Ci0JcGZyZWUobm9kZS0+cGVyZnVuYyk7Ci0JcGZyZWUobm9kZS0+cGVyYWdnKTsKKwlpZiAobm9k ZS0+cGVyZnVuYykKKwkJcGZyZWUobm9kZS0+cGVyZnVuYyk7CisJaWYgKG5vZGUtPnBlcmFnZykK KwkJcGZyZWUobm9kZS0+cGVyYWdnKTsKIAogCW91dGVyUGxhbiA9IG91dGVyUGxhblN0YXRlKG5v ZGUpOwogCUV4ZWNFbmROb2RlKG91dGVyUGxhbik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlV29ya3RhYmxlc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdv cmt0YWJsZXNjYW4uYwppbmRleCAwYzEzNDQ4MjM2Li5kNzBjNmFmZGUzIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlV29ya3RhYmxlc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVXb3JrdGFibGVzY2FuLmMKQEAgLTIwMCw3ICsyMDAsOCBAQCBFeGVjRW5k V29ya1RhYmxlU2NhbihXb3JrVGFibGVTY2FuU3RhdGUgKm5vZGUpCiAJICovCiAJaWYgKG5vZGUt PnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKIAkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMu cHNfUmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVw bGVTbG90KTsKKwlpZiAobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVw bGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3Bp LmMKaW5kZXggZTNhMTcwYzM4Yi4uMjZhOWVhMzQyYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivc3BpLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKQEAgLTcxLDcg KzcxLDcgQEAgc3RhdGljIGludAlfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNv bnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogc3RhdGljIFBhcmFtTGlzdEluZm8gX1NQ SV9jb252ZXJ0X3BhcmFtcyhpbnQgbmFyZ3MsIE9pZCAqYXJndHlwZXMsCiAJCQkJCQkJCQkJIERh dHVtICpWYWx1ZXMsIGNvbnN0IGNoYXIgKk51bGxzKTsKIAotc3RhdGljIGludAlfU1BJX3BxdWVy eShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBmaXJlX3RyaWdnZXJzLCB1aW50NjQgdGNvdW50 KTsKK3N0YXRpYyBpbnQJX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIHVpbnQ2NCB0 Y291bnQpOwogCiBzdGF0aWMgdm9pZCBfU1BJX2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CiAK QEAgLTE2MjMsNiArMTYyMyw3IEBAIFNQSV9jdXJzb3Jfb3Blbl9pbnRlcm5hbChjb25zdCBjaGFy ICpuYW1lLCBTUElQbGFuUHRyIHBsYW4sCiAJX1NQSV9jdXJyZW50LT5wcm9jZXNzZWQgPSAwOwog CV9TUElfY3VycmVudC0+dHVwdGFibGUgPSBOVUxMOwogCityZXBsYW46CiAJLyogQ3JlYXRlIHRo ZSBwb3J0YWwgKi8KIAlpZiAobmFtZSA9PSBOVUxMIHx8IG5hbWVbMF0gPT0gJ1wwJykKIAl7CkBA IC0xNzY2LDcgKzE3NjcsMTAgQEAgU1BJX2N1cnNvcl9vcGVuX2ludGVybmFsKGNvbnN0IGNoYXIg Km5hbWUsIFNQSVBsYW5QdHIgcGxhbiwKIAl9CiAKIAkvKgotCSAqIFN0YXJ0IHBvcnRhbCBleGVj dXRpb24uCisJICogU3RhcnQgcG9ydGFsIGV4ZWN1dGlvbi4gIElmIHRoZSBwb3J0YWwgY29udGFp bnMgYSBjYWNoZWQgcGxhbiwgaXQgbXVzdAorCSAqIGJlIHJlY3JlYXRlZCBpZiBwb3J0YWwtPnBs YW5fdmFsaWQgaXMgZmFsc2Ugd2hpY2ggdGVsbHMgdGhhdCB0aGUgY2FjaGVkCisJICogcGxhbiB3 YXMgZm91bmQgdG8gaGF2ZSBiZWVuIGludmFsaWRhdGVkIHdoZW4gaW5pdGlhbGl6aW5nIG9uZSBv ZiB0aGUKKwkgKiBwbGFuIHRyZWVzIGNvbnRhaW5lZCBpbiBpdC4KIAkgKi8KIAlQb3J0YWxTdGFy dChwb3J0YWwsIHBhcmFtTEksIDAsIHNuYXBzaG90KTsKIApAQCAtMTc3NSw2ICsxNzc5LDEyIEBA IFNQSV9jdXJzb3Jfb3Blbl9pbnRlcm5hbChjb25zdCBjaGFyICpuYW1lLCBTUElQbGFuUHRyIHBs YW4sCiAJLyogUG9wIHRoZSBlcnJvciBjb250ZXh0IHN0YWNrICovCiAJZXJyb3JfY29udGV4dF9z dGFjayA9IHNwaWVycmNvbnRleHQucHJldmlvdXM7CiAKKwlpZiAoIXBvcnRhbC0+cGxhbl92YWxp ZCkKKwl7CisJCVBvcnRhbERyb3AocG9ydGFsLCBmYWxzZSk7CisJCWdvdG8gcmVwbGFuOworCX0K KwogCS8qIFBvcCB0aGUgU1BJIHN0YWNrICovCiAJX1NQSV9lbmRfY2FsbCh0cnVlKTsKIApAQCAt MjU1Miw2ICsyNTYyLDcgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25z dCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJICogUmVwbGFuIGlmIG5lZWRlZCwgYW5k IGluY3JlbWVudCBwbGFuIHJlZmNvdW50LiAgSWYgaXQncyBhIHNhdmVkCiAJCSAqIHBsYW4sIHRo ZSByZWZjb3VudCBtdXN0IGJlIGJhY2tlZCBieSB0aGUgcGxhbl9vd25lci4KIAkJICovCityZXBs YW46CiAJCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihwbGFuc291cmNlLCBvcHRpb25zLT5wYXJhbXMs CiAJCQkJCQkJICBwbGFuX293bmVyLCBfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52KTsKIApAQCAtMjY2 MSw2ICsyNjcyLDcgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBT UElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJCXsKIAkJCQlRdWVyeURlc2MgICpxZGVzYzsK IAkJCQlTbmFwc2hvdAlzbmFwOworCQkJCWludAkJCWVmbGFnczsKIAogCQkJCWlmIChBY3RpdmVT bmFwc2hvdFNldCgpKQogCQkJCQlzbmFwID0gR2V0QWN0aXZlU25hcHNob3QoKTsKQEAgLTI2Njgs MTQgKzI2ODAsMzYgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBT UElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJCQkJc25hcCA9IEludmFsaWRTbmFwc2hvdDsK IAogCQkJCXFkZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHN0bXQsCisJCQkJCQkJCQkJY3BsYW4sCiAJ CQkJCQkJCQkJcGxhbnNvdXJjZS0+cXVlcnlfc3RyaW5nLAogCQkJCQkJCQkJCXNuYXAsIGNyb3Nz Y2hlY2tfc25hcHNob3QsCiAJCQkJCQkJCQkJZGVzdCwKIAkJCQkJCQkJCQlvcHRpb25zLT5wYXJh bXMsCiAJCQkJCQkJCQkJX1NQSV9jdXJyZW50LT5xdWVyeUVudiwKIAkJCQkJCQkJCQkwKTsKLQkJ CQlyZXMgPSBfU1BJX3BxdWVyeShxZGVzYywgZmlyZV90cmlnZ2VycywKLQkJCQkJCQkJICBjYW5T ZXRUYWcgPyBvcHRpb25zLT50Y291bnQgOiAwKTsKKworCQkJCS8qIFNlbGVjdCBleGVjdXRpb24g b3B0aW9ucyAqLworCQkJCWlmIChmaXJlX3RyaWdnZXJzKQorCQkJCQllZmxhZ3MgPSAwOwkJCQkv KiBkZWZhdWx0IHJ1bi10by1jb21wbGV0aW9uIGZsYWdzICovCisJCQkJZWxzZQorCQkJCQllZmxh Z3MgPSBFWEVDX0ZMQUdfU0tJUF9UUklHR0VSUzsKKworCQkJCS8qIFRha2UgbG9ja3MgaWYgdXNp bmcgYSBDYWNoZWRQbGFuICovCisJCQkJaWYgKHFkZXNjLT5jcGxhbikKKwkJCQkJZWZsYWdzIHw9 IEVYRUNfRkxBR19HRVRfTE9DS1M7CisKKwkJCQlFeGVjdXRvclN0YXJ0KHFkZXNjLCBlZmxhZ3Mp OworCQkJCWlmICghcWRlc2MtPnBsYW5fdmFsaWQpCisJCQkJeworCQkJCQlFeGVjdXRvckZpbmlz aChxZGVzYyk7CisJCQkJCUV4ZWN1dG9yRW5kKHFkZXNjKTsKKwkJCQkJRnJlZVF1ZXJ5RGVzYyhx ZGVzYyk7CisJCQkJCUFzc2VydChjcGxhbik7CisJCQkJCVJlbGVhc2VDYWNoZWRQbGFuKGNwbGFu LCBwbGFuX293bmVyKTsKKwkJCQkJZ290byByZXBsYW47CisJCQkJfQorCisJCQkJcmVzID0gX1NQ SV9wcXVlcnkocWRlc2MsIGNhblNldFRhZyA/IG9wdGlvbnMtPnRjb3VudCA6IDApOwogCQkJCUZy ZWVRdWVyeURlc2MocWRlc2MpOwogCQkJfQogCQkJZWxzZQpAQCAtMjg1MCwxMCArMjg4NCw5IEBA IF9TUElfY29udmVydF9wYXJhbXMoaW50IG5hcmdzLCBPaWQgKmFyZ3R5cGVzLAogfQogCiBzdGF0 aWMgaW50Ci1fU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBmaXJlX3RyaWdn ZXJzLCB1aW50NjQgdGNvdW50KQorX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIHVp bnQ2NCB0Y291bnQpCiB7CiAJaW50CQkJb3BlcmF0aW9uID0gcXVlcnlEZXNjLT5vcGVyYXRpb247 Ci0JaW50CQkJZWZsYWdzOwogCWludAkJCXJlczsKIAogCXN3aXRjaCAob3BlcmF0aW9uKQpAQCAt Mjg5NywxNCArMjkzMCw2IEBAIF9TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBib29s IGZpcmVfdHJpZ2dlcnMsIHVpbnQ2NCB0Y291bnQpCiAJCVJlc2V0VXNhZ2UoKTsKICNlbmRpZgog Ci0JLyogU2VsZWN0IGV4ZWN1dGlvbiBvcHRpb25zICovCi0JaWYgKGZpcmVfdHJpZ2dlcnMpCi0J CWVmbGFncyA9IDA7CQkJCS8qIGRlZmF1bHQgcnVuLXRvLWNvbXBsZXRpb24gZmxhZ3MgKi8KLQll bHNlCi0JCWVmbGFncyA9IEVYRUNfRkxBR19TS0lQX1RSSUdHRVJTOwotCi0JRXhlY3V0b3JTdGFy dChxdWVyeURlc2MsIGVmbGFncyk7Ci0KIAlFeGVjdXRvclJ1bihxdWVyeURlc2MsIEZvcndhcmRT Y2FuRGlyZWN0aW9uLCB0Y291bnQsIHRydWUpOwogCiAJX1NQSV9jdXJyZW50LT5wcm9jZXNzZWQg PSBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvbm9kZXMvb3V0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKaW5kZXgg YmEwMGI5OTI0OS4uOTU1Mjg2NTEzZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvb3V0 ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCkBAIC01MTMsNiArNTEz LDcgQEAgX291dFJhbmdlVGJsRW50cnkoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFJhbmdlVGJsRW50 cnkgKm5vZGUpCiAJCQlXUklURV9CT09MX0ZJRUxEKHNlY3VyaXR5X2JhcnJpZXIpOwogCQkJLyog d2UgcmUtdXNlIHRoZXNlIFJFTEFUSU9OIGZpZWxkcywgdG9vOiAqLwogCQkJV1JJVEVfT0lEX0ZJ RUxEKHJlbGlkKTsKKwkJCVdSSVRFX0NIQVJfRklFTEQocmVsa2luZCk7CiAJCQlXUklURV9JTlRf RklFTEQocmVsbG9ja21vZGUpOwogCQkJV1JJVEVfVUlOVF9GSUVMRChwZXJtaW5mb2luZGV4KTsK IAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMgYi9z cmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwppbmRleCA1OTdlNWIzZWE4Li5hMTM2YWUxZDYw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYworKysgYi9zcmMvYmFj a2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwpAQCAtNTAzLDYgKzUwMyw3IEBAIF9yZWFkUmFuZ2VUYmxF bnRyeSh2b2lkKQogCQkJUkVBRF9CT09MX0ZJRUxEKHNlY3VyaXR5X2JhcnJpZXIpOwogCQkJLyog d2UgcmUtdXNlIHRoZXNlIFJFTEFUSU9OIGZpZWxkcywgdG9vOiAqLwogCQkJUkVBRF9PSURfRklF TEQocmVsaWQpOworCQkJUkVBRF9DSEFSX0ZJRUxEKHJlbGtpbmQpOwogCQkJUkVBRF9JTlRfRklF TEQocmVsbG9ja21vZGUpOwogCQkJUkVBRF9VSU5UX0ZJRUxEKHBlcm1pbmZvaW5kZXgpOwogCQkJ YnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggNjJiM2VjOTZjYy4u NWYzZmZkOThhZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5l ci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtNTI3LDYg KzUyNyw3IEBAIHN0YW5kYXJkX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpxdWVy eV9zdHJpbmcsIGludCBjdXJzb3JPcHRpb25zLAogCXJlc3VsdC0+cGFydFBydW5lSW5mb3MgPSBn bG9iLT5wYXJ0UHJ1bmVJbmZvczsKIAlyZXN1bHQtPnJ0YWJsZSA9IGdsb2ItPmZpbmFscnRhYmxl OwogCXJlc3VsdC0+cGVybUluZm9zID0gZ2xvYi0+ZmluYWxydGVwZXJtaW5mb3M7CisJcmVzdWx0 LT52aWV3UmVsYXRpb25zID0gZ2xvYi0+dmlld1JlbGF0aW9uczsKIAlyZXN1bHQtPnJlc3VsdFJl bGF0aW9ucyA9IGdsb2ItPnJlc3VsdFJlbGF0aW9uczsKIAlyZXN1bHQtPmFwcGVuZFJlbGF0aW9u cyA9IGdsb2ItPmFwcGVuZFJlbGF0aW9uczsKIAlyZXN1bHQtPnN1YnBsYW5zID0gZ2xvYi0+c3Vi cGxhbnM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKaW5kZXggNWNjODM2NmFmNi4u ZjEzMjQwYmYzMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVm cy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwpAQCAtMTYsNiAr MTYsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJhY2Nlc3MvdHJhbnNh bS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfY2xhc3MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X3R5cGUuaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9u b2RlRnVuY3MuaCIKQEAgLTYwNCw2ICs2MDUsMTAgQEAgYWRkX3J0ZV90b19mbGF0X3J0YWJsZShQ bGFubmVyR2xvYmFsICpnbG9iLCBMaXN0ICpydGVwZXJtaW5mb3MsCiAJCShuZXdydGUtPnJ0ZWtp bmQgPT0gUlRFX1NVQlFVRVJZICYmIE9pZElzVmFsaWQobmV3cnRlLT5yZWxpZCkpKQogCQlnbG9i LT5yZWxhdGlvbk9pZHMgPSBsYXBwZW5kX29pZChnbG9iLT5yZWxhdGlvbk9pZHMsIG5ld3J0ZS0+ cmVsaWQpOwogCisJaWYgKG5ld3J0ZS0+cmVsa2luZCA9PSBSRUxLSU5EX1ZJRVcpCisJCWdsb2It PnZpZXdSZWxhdGlvbnMgPSBsYXBwZW5kX2ludChnbG9iLT52aWV3UmVsYXRpb25zLAorCQkJCQkJ CQkJCSAgbGlzdF9sZW5ndGgoZ2xvYi0+ZmluYWxydGFibGUpKTsKKwogCS8qCiAJICogQWRkIGEg Y29weSBvZiB0aGUgUlRFUGVybWlzc2lvbkluZm8sIGlmIGFueSwgY29ycmVzcG9uZGluZyB0byB0 aGlzIFJURQogCSAqIHRvIHRoZSBmbGF0dGVuZWQgZ2xvYmFsIGxpc3QuCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9yZXdyaXRl L3Jld3JpdGVIYW5kbGVyLmMKaW5kZXggOTgwZGMxODE2Zi4uMTYzMWM4Yjk5MyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5k L3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYwpAQCAtMTg0OSwxMSArMTg0OSwxMCBAQCBBcHBseVJl dHJpZXZlUnVsZShRdWVyeSAqcGFyc2V0cmVlLAogCiAJLyoKIAkgKiBDbGVhciBmaWVsZHMgdGhh dCBzaG91bGQgbm90IGJlIHNldCBpbiBhIHN1YnF1ZXJ5IFJURS4gIE5vdGUgdGhhdCB3ZQotCSAq IGxlYXZlIHRoZSByZWxpZCwgcmVsbG9ja21vZGUsIGFuZCBwZXJtaW5mb2luZGV4IGZpZWxkcyBz ZXQsIHNvIHRoYXQgdGhlCi0JICogdmlldyByZWxhdGlvbiBjYW4gYmUgYXBwcm9wcmlhdGVseSBs b2NrZWQgYmVmb3JlIGV4ZWN1dGlvbiBhbmQgaXRzCi0JICogcGVybWlzc2lvbnMgY2hlY2tlZC4K KwkgKiBsZWF2ZSB0aGUgcmVsaWQsIHJlbGtpbmQsIHJlbGxvY2ttb2RlLCBhbmQgcGVybWluZm9p bmRleCBmaWVsZHMgc2V0LAorCSAqIHNvIHRoYXQgdGhlIHZpZXcgcmVsYXRpb24gY2FuIGJlIGFw cHJvcHJpYXRlbHkgbG9ja2VkIGJlZm9yZSBleGVjdXRpb24KKwkgKiBhbmQgaXRzIHBlcm1pc3Np b25zIGNoZWNrZWQuCiAJICovCi0JcnRlLT5yZWxraW5kID0gMDsKIAlydGUtPnRhYmxlc2FtcGxl ID0gTlVMTDsKIAlydGUtPmluaCA9IGZhbHNlOwkJCS8qIG11c3Qgbm90IGJlIHNldCBmb3IgYSBz dWJxdWVyeSAqLwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5j IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYwppbmRleCBlZTliODlhNjcyLi5jODA3 ZTljZGNjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jCisrKyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs dWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2ludmFsYWR0Lmgi CiAjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIK IAogCiAvKgpAQCAtMzY0LDYgKzM2NSw1MCBAQCBDaGVja1JlbGF0aW9uTG9ja2VkQnlNZShSZWxh dGlvbiByZWxhdGlvbiwgTE9DS01PREUgbG9ja21vZGUsIGJvb2wgb3JzdHJvbmdlcikKIAlyZXR1 cm4gZmFsc2U7CiB9CiAKKy8qCisgKgkJQ2hlY2tSZWxMb2NrZWRCeU1lCisgKgorICogUmV0dXJu cyB0cnVlIGlmIGN1cnJlbnQgdHJhbnNhY3Rpb24gaG9sZHMgYSBsb2NrIG9uIHRoZSBnaXZlbiBy ZWxhdGlvbiBvZgorICogbW9kZSAnbG9ja21vZGUnLiAgSWYgJ29yc3Ryb25nZXInIGlzIHRydWUs IGEgc3Ryb25nZXIgbG9ja21vZGUgaXMgYWxzbyBPSy4KKyAqICgiU3Ryb25nZXIiIGlzIGRlZmlu ZWQgYXMgIm51bWVyaWNhbGx5IGhpZ2hlciIsIHdoaWNoIGlzIGEgYml0CisgKiBzZW1hbnRpY2Fs bHkgZHViaW91cyBidXQgaXMgT0sgZm9yIHRoZSBwdXJwb3NlcyB3ZSB1c2UgdGhpcyBmb3IuKQor ICovCitib29sCitDaGVja1JlbExvY2tlZEJ5TWUoT2lkIHJlbGlkLCBMT0NLTU9ERSBsb2NrbW9k ZSwgYm9vbCBvcnN0cm9uZ2VyKQoreworCU9pZAkJCWRiSWQgPSBnZXRfcmVsX3JlbGlzc2hhcmVk KHJlbGlkKSA/IEludmFsaWRPaWQgOiBNeURhdGFiYXNlSWQ7CisJTE9DS1RBRwkJdGFnOworCisJ U0VUX0xPQ0tUQUdfUkVMQVRJT04odGFnLCBkYklkLCByZWxpZCk7CisKKwlpZiAoTG9ja0hlbGRC eU1lKCZ0YWcsIGxvY2ttb2RlKSkKKwkJcmV0dXJuIHRydWU7CisKKwlpZiAob3JzdHJvbmdlcikK Kwl7CisJCUxPQ0tNT0RFCXNsb2NrbW9kZTsKKworCQlmb3IgKHNsb2NrbW9kZSA9IGxvY2ttb2Rl ICsgMTsKKwkJCSBzbG9ja21vZGUgPD0gTWF4TG9ja01vZGU7CisJCQkgc2xvY2ttb2RlKyspCisJ CXsKKwkJCWlmIChMb2NrSGVsZEJ5TWUoJnRhZywgc2xvY2ttb2RlKSkKKwkJCXsKKyNpZmRlZiBO T1RfVVNFRAorCQkJCS8qIFNvbWV0aW1lcyB0aGlzIG1pZ2h0IGJlIHVzZWZ1bCBmb3IgZGVidWdn aW5nIHB1cnBvc2VzICovCisJCQkJZWxvZyhXQVJOSU5HLCAibG9jayBtb2RlICVzIHN1YnN0aXR1 dGVkIGZvciAlcyBvbiByZWxhdGlvbiAlcyIsCisJCQkJCSBHZXRMb2NrbW9kZU5hbWUodGFnLmxv Y2t0YWdfbG9ja21ldGhvZGlkLCBzbG9ja21vZGUpLAorCQkJCQkgR2V0TG9ja21vZGVOYW1lKHRh Zy5sb2NrdGFnX2xvY2ttZXRob2RpZCwgbG9ja21vZGUpLAorCQkJCQkgUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUocmVsYXRpb24pKTsKKyNlbmRpZgorCQkJCXJldHVybiB0cnVlOworCQkJfQorCQl9 CisJfQorCisJcmV0dXJuIGZhbHNlOworfQorCiAvKgogICoJCUxvY2tIYXNXYWl0ZXJzUmVsYXRp b24KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFj a2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggY2FiNzA5YjA3Yi4uNmQwZWEwNzgwMSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3Av cG9zdGdyZXMuYwpAQCAtMTE5OSw2ICsxMTk5LDcgQEAgZXhlY19zaW1wbGVfcXVlcnkoY29uc3Qg Y2hhciAqcXVlcnlfc3RyaW5nKQogCQkgKiBTdGFydCB0aGUgcG9ydGFsLiAgTm8gcGFyYW1ldGVy cyBoZXJlLgogCQkgKi8KIAkJUG9ydGFsU3RhcnQocG9ydGFsLCBOVUxMLCAwLCBJbnZhbGlkU25h cHNob3QpOworCQlBc3NlcnQocG9ydGFsLT5wbGFuX3ZhbGlkKTsKIAogCQkvKgogCQkgKiBTZWxl Y3QgdGhlIGFwcHJvcHJpYXRlIG91dHB1dCBmb3JtYXQ6IHRleHQgdW5sZXNzIHdlIGFyZSBkb2lu ZyBhCkBAIC0xNzAzLDYgKzE3MDQsNyBAQCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZvIGlu cHV0X21lc3NhZ2UpCiAJCQkJCQkiY29tbWFuZHMgaWdub3JlZCB1bnRpbCBlbmQgb2YgdHJhbnNh Y3Rpb24gYmxvY2siKSwKIAkJCQkgZXJyZGV0YWlsX2Fib3J0KCkpKTsKIAorcmVwbGFuOgogCS8q CiAJICogQ3JlYXRlIHRoZSBwb3J0YWwuICBBbGxvdyBzaWxlbnQgcmVwbGFjZW1lbnQgb2YgYW4g ZXhpc3RpbmcgcG9ydGFsIG9ubHkKIAkgKiBpZiB0aGUgdW5uYW1lZCBwb3J0YWwgaXMgc3BlY2lm aWVkLgpAQCAtMTk5NCwxMCArMTk5NiwxOSBAQCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZv IGlucHV0X21lc3NhZ2UpCiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAKIAkvKgotCSAqIEFuZCB3 ZSdyZSByZWFkeSB0byBzdGFydCBwb3J0YWwgZXhlY3V0aW9uLgorCSAqIFN0YXJ0IHBvcnRhbCBl eGVjdXRpb24uICBJZiB0aGUgcG9ydGFsIGNvbnRhaW5zIGEgY2FjaGVkIHBsYW4sIGl0IG11c3QK KwkgKiBiZSByZWNyZWF0ZWQgaWYgcG9ydGFsLT5wbGFuX3ZhbGlkIGlzIGZhbHNlIHdoaWNoIHRl bGxzIHRoYXQgdGhlIGNhY2hlZAorCSAqIHBsYW4gd2FzIGZvdW5kIHRvIGhhdmUgYmVlbiBpbnZh bGlkYXRlZCB3aGVuIGluaXRpYWxpemluZyBvbmUgb2YgdGhlCisJICogcGxhbiB0cmVlcyBjb250 YWluZWQgaW4gaXQuCiAJICovCiAJUG9ydGFsU3RhcnQocG9ydGFsLCBwYXJhbXMsIDAsIEludmFs aWRTbmFwc2hvdCk7CiAKKwlpZiAoIXBvcnRhbC0+cGxhbl92YWxpZCkKKwl7CisJCVBvcnRhbERy b3AocG9ydGFsLCBmYWxzZSk7CisJCWdvdG8gcmVwbGFuOworCX0KKwogCS8qCiAJICogQXBwbHkg dGhlIHJlc3VsdCBmb3JtYXQgcmVxdWVzdHMgdG8gdGhlIHBvcnRhbC4KIAkgKi8KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5j CmluZGV4IDVmMDI0OGFjYzUuLmM5M2E5NTBkN2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rj b3AvcHF1ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYwpAQCAtMTksNiArMTks NyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcmVw YXJlLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY2Rlc2MuaCIKICNpbmNsdWRlICJleGVjdXRv ci90c3RvcmVSZWNlaXZlci5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBn X3RyYWNlLmgiCkBAIC0zNSwxMiArMzYsNiBAQAogUG9ydGFsCQlBY3RpdmVQb3J0YWwgPSBOVUxM OwogCiAKLXN0YXRpYyB2b2lkIFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwKLQkJCQkJ CSBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAotCQkJCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLAot CQkJCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAotCQkJCQkJIERlc3RSZWNlaXZlciAq ZGVzdCwKLQkJCQkJCSBRdWVyeUNvbXBsZXRpb24gKnFjKTsKIHN0YXRpYyB2b2lkIEZpbGxQb3J0 YWxTdG9yZShQb3J0YWwgcG9ydGFsLCBib29sIGlzVG9wTGV2ZWwpOwogc3RhdGljIHVpbnQ2NCBS dW5Gcm9tU3RvcmUoUG9ydGFsIHBvcnRhbCwgU2NhbkRpcmVjdGlvbiBkaXJlY3Rpb24sIHVpbnQ2 NCBjb3VudCwKIAkJCQkJCSAgIERlc3RSZWNlaXZlciAqZGVzdCk7CkBAIC02NSw2ICs2MCw3IEBA IHN0YXRpYyB2b2lkIERvUG9ydGFsUmV3aW5kKFBvcnRhbCBwb3J0YWwpOwogICovCiBRdWVyeURl c2MgKgogQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwKKwkJCQlDYWNo ZWRQbGFuICpjcGxhbiwKIAkJCQljb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJCVNuYXBzaG90 IHNuYXBzaG90LAogCQkJCVNuYXBzaG90IGNyb3NzY2hlY2tfc25hcHNob3QsCkBAIC03Nyw2ICs3 Myw3IEBAIENyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCiAKIAlxZC0+ b3BlcmF0aW9uID0gcGxhbm5lZHN0bXQtPmNvbW1hbmRUeXBlOwkvKiBvcGVyYXRpb24gKi8KIAlx ZC0+cGxhbm5lZHN0bXQgPSBwbGFubmVkc3RtdDsJLyogcGxhbiAqLworCXFkLT5jcGxhbiA9IGNw bGFuOwkJCQkvKiBDYWNoZWRQbGFuLCBpZiBwbGFuIGlzIGZyb20gb25lICovCiAJcWQtPnNvdXJj ZVRleHQgPSBzb3VyY2VUZXh0OwkvKiBxdWVyeSB0ZXh0ICovCiAJcWQtPnNuYXBzaG90ID0gUmVn aXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CS8qIHNuYXBzaG90ICovCiAJLyogUkkgY2hlY2sgc25h cHNob3QgKi8KQEAgLTExNiw4NiArMTEzLDYgQEAgRnJlZVF1ZXJ5RGVzYyhRdWVyeURlc2MgKnFk ZXNjKQogfQogCiAKLS8qCi0gKiBQcm9jZXNzUXVlcnkKLSAqCQlFeGVjdXRlIGEgc2luZ2xlIHBs YW5uYWJsZSBxdWVyeSB3aXRoaW4gYSBQT1JUQUxfTVVMVElfUVVFUlksCi0gKgkJUE9SVEFMX09O RV9SRVRVUk5JTkcsIG9yIFBPUlRBTF9PTkVfTU9EX1dJVEggcG9ydGFsCi0gKgotICoJcGxhbjog dGhlIHBsYW4gdHJlZSBmb3IgdGhlIHF1ZXJ5Ci0gKglzb3VyY2VUZXh0OiB0aGUgc291cmNlIHRl eHQgb2YgdGhlIHF1ZXJ5Ci0gKglwYXJhbXM6IGFueSBwYXJhbWV0ZXJzIG5lZWRlZAotICoJZGVz dDogd2hlcmUgdG8gc2VuZCByZXN1bHRzCi0gKglxYzogd2hlcmUgdG8gc3RvcmUgdGhlIGNvbW1h bmQgY29tcGxldGlvbiBzdGF0dXMgZGF0YS4KLSAqCi0gKiBxYyBtYXkgYmUgTlVMTCBpZiBjYWxs ZXIgZG9lc24ndCB3YW50IGEgc3RhdHVzIHN0cmluZy4KLSAqCi0gKiBNdXN0IGJlIGNhbGxlZCBp biBhIG1lbW9yeSBjb250ZXh0IHRoYXQgd2lsbCBiZSByZXNldCBvciBkZWxldGVkIG9uCi0gKiBl cnJvcjsgb3RoZXJ3aXNlIHRoZSBleGVjdXRvcidzIG1lbW9yeSB1c2FnZSB3aWxsIGJlIGxlYWtl ZC4KLSAqLwotc3RhdGljIHZvaWQKLVByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwKLQkJ CSBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAotCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLAotCQkJ IFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAotCQkJIERlc3RSZWNlaXZlciAqZGVzdCwKLQkJ CSBRdWVyeUNvbXBsZXRpb24gKnFjKQotewotCVF1ZXJ5RGVzYyAgKnF1ZXJ5RGVzYzsKLQotCS8q Ci0JICogQ3JlYXRlIHRoZSBRdWVyeURlc2Mgb2JqZWN0Ci0JICovCi0JcXVlcnlEZXNjID0gQ3Jl YXRlUXVlcnlEZXNjKHBsYW4sIHNvdXJjZVRleHQsCi0JCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90 KCksIEludmFsaWRTbmFwc2hvdCwKLQkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgMCk7 Ci0KLQkvKgotCSAqIENhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBl eGVjdXRpb24KLQkgKi8KLQlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgMCk7Ci0KLQkvKgotCSAq IFJ1biB0aGUgcGxhbiB0byBjb21wbGV0aW9uLgotCSAqLwotCUV4ZWN1dG9yUnVuKHF1ZXJ5RGVz YywgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIDBMLCB0cnVlKTsKLQotCS8qCi0JICogQnVpbGQgY29t bWFuZCBjb21wbGV0aW9uIHN0YXR1cyBkYXRhLCBpZiBjYWxsZXIgd2FudHMgb25lLgotCSAqLwot CWlmIChxYykKLQl7Ci0JCXN3aXRjaCAocXVlcnlEZXNjLT5vcGVyYXRpb24pCi0JCXsKLQkJCWNh c2UgQ01EX1NFTEVDVDoKLQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19TRUxFQ1Qs IHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOwotCQkJCWJyZWFrOwotCQkJY2FzZSBD TURfSU5TRVJUOgotCQkJCVNldFF1ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFHX0lOU0VSVCwgcXVl cnlEZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlIENNRF9V UERBVEU6Ci0JCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfVVBEQVRFLCBxdWVyeURl c2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKLQkJCQlicmVhazsKLQkJCWNhc2UgQ01EX0RFTEVU RToKLQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19ERUxFVEUsIHF1ZXJ5RGVzYy0+ ZXN0YXRlLT5lc19wcm9jZXNzZWQpOwotCQkJCWJyZWFrOwotCQkJY2FzZSBDTURfTUVSR0U6Ci0J CQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfTUVSR0UsIHF1ZXJ5RGVzYy0+ZXN0YXRl LT5lc19wcm9jZXNzZWQpOwotCQkJCWJyZWFrOwotCQkJZGVmYXVsdDoKLQkJCQlTZXRRdWVyeUNv bXBsZXRpb24ocWMsIENNRFRBR19VTktOT1dOLCBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vz c2VkKTsKLQkJCQlicmVhazsKLQkJfQotCX0KLQotCS8qCi0JICogTm93LCB3ZSBjbG9zZSBkb3du IGFsbCB0aGUgc2NhbnMgYW5kIGZyZWUgYWxsb2NhdGVkIHJlc291cmNlcy4KLQkgKi8KLQlFeGVj dXRvckZpbmlzaChxdWVyeURlc2MpOwotCUV4ZWN1dG9yRW5kKHF1ZXJ5RGVzYyk7Ci0KLQlGcmVl UXVlcnlEZXNjKHF1ZXJ5RGVzYyk7Ci19Ci0KIC8qCiAgKiBDaG9vc2VQb3J0YWxTdHJhdGVneQog ICoJCVNlbGVjdCBwb3J0YWwgZXhlY3V0aW9uIHN0cmF0ZWd5IGdpdmVuIHRoZSBpbnRlbmRlZCBz dGF0ZW1lbnQgbGlzdC4KQEAgLTQyNyw3ICszNDQsOCBAQCBGZXRjaFN0YXRlbWVudFRhcmdldExp c3QoTm9kZSAqc3RtdCkKICAqIHRvIGJlIHVzZWQgZm9yIGN1cnNvcnMpLgogICoKICAqIE9uIHJl dHVybiwgcG9ydGFsIGlzIHJlYWR5IHRvIGFjY2VwdCBQb3J0YWxSdW4oKSBjYWxscywgYW5kIHRo ZSByZXN1bHQKLSAqIHR1cGRlc2MgKGlmIGFueSkgaXMga25vd24uCisgKiB0dXBkZXNjIChpZiBh bnkpIGlzIGtub3duLCB1bmxlc3MgcG9ydGFsLT5wbGFuX3ZhbGlkIGlzIHNldCB0byBmYWxzZSwg aW4KKyAqIHdoaWNoIGNhc2UsIHRoZSBjYWxsZXIgbXVzdCByZXRyeSBhZnRlciBnZW5lcmF0aW5n IGEgbmV3IENhY2hlZFBsYW4uCiAgKi8KIHZvaWQKIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWws IFBhcmFtTGlzdEluZm8gcGFyYW1zLApAQCAtNDM1LDcgKzM1Myw2IEBAIFBvcnRhbFN0YXJ0KFBv cnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogewogCVBvcnRhbAkJc2F2ZUFjdGl2 ZVBvcnRhbDsKIAlSZXNvdXJjZU93bmVyIHNhdmVSZXNvdXJjZU93bmVyOwotCU1lbW9yeUNvbnRl eHQgc2F2ZVBvcnRhbENvbnRleHQ7CiAJTWVtb3J5Q29udGV4dCBvbGRDb250ZXh0OwogCVF1ZXJ5 RGVzYyAgKnF1ZXJ5RGVzYzsKIAlpbnQJCQlteWVmbGFnczsKQEAgLTQ0OCwxNSArMzY1LDEzIEBA IFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCSAqLwog CXNhdmVBY3RpdmVQb3J0YWwgPSBBY3RpdmVQb3J0YWw7CiAJc2F2ZVJlc291cmNlT3duZXIgPSBD dXJyZW50UmVzb3VyY2VPd25lcjsKLQlzYXZlUG9ydGFsQ29udGV4dCA9IFBvcnRhbENvbnRleHQ7 CiAJUEdfVFJZKCk7CiAJewogCQlBY3RpdmVQb3J0YWwgPSBwb3J0YWw7CiAJCWlmIChwb3J0YWwt PnJlc293bmVyKQogCQkJQ3VycmVudFJlc291cmNlT3duZXIgPSBwb3J0YWwtPnJlc293bmVyOwot CQlQb3J0YWxDb250ZXh0ID0gcG9ydGFsLT5wb3J0YWxDb250ZXh0OwogCi0JCW9sZENvbnRleHQg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oUG9ydGFsQ29udGV4dCk7CisJCW9sZENvbnRleHQgPSBN ZW1vcnlDb250ZXh0U3dpdGNoVG8ocG9ydGFsLT5xdWVyeUNvbnRleHQpOwogCiAJCS8qIE11c3Qg cmVtZW1iZXIgcG9ydGFsIHBhcmFtIGxpc3QsIGlmIGFueSAqLwogCQlwb3J0YWwtPnBvcnRhbFBh cmFtcyA9IHBhcmFtczsKQEAgLTQ3Miw2ICszODcsOCBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9y dGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJc3dpdGNoIChwb3J0YWwtPnN0cmF0ZWd5KQog CQl7CiAJCQljYXNlIFBPUlRBTF9PTkVfU0VMRUNUOgorCQkJY2FzZSBQT1JUQUxfT05FX1JFVFVS TklORzoKKwkJCWNhc2UgUE9SVEFMX09ORV9NT0RfV0lUSDoKIAogCQkJCS8qIE11c3Qgc2V0IHNu YXBzaG90IGJlZm9yZSBzdGFydGluZyBleGVjdXRvci4gKi8KIAkJCQlpZiAoc25hcHNob3QpCkBA IC00OTMsNiArNDEwLDcgQEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5m byBwYXJhbXMsCiAJCQkJICogdGhlIGRlc3RpbmF0aW9uIHRvIERlc3ROb25lLgogCQkJCSAqLwog CQkJCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhsaW5pdGlhbF9ub2RlKFBsYW5uZWRTdG10 LCBwb3J0YWwtPnN0bXRzKSwKKwkJCQkJCQkJCQkJcG9ydGFsLT5jcGxhbiwKIAkJCQkJCQkJCQkJ cG9ydGFsLT5zb3VyY2VUZXh0LAogCQkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLAogCQkJ CQkJCQkJCQlJbnZhbGlkU25hcHNob3QsCkBAIC01MDEsMzAgKzQxOSw1NiBAQCBQb3J0YWxTdGFy dChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkJCQkJCQkJcG9ydGFs LT5xdWVyeUVudiwKIAkJCQkJCQkJCQkJMCk7CiAKKwkJCQkvKiBSZW1lbWJlciBmb3IgUG9ydGFs UnVuTXVsdGkoKS4gKi8KKwkJCQlpZiAocG9ydGFsLT5zdHJhdGVneSA9PSBQT1JUQUxfT05FX1JF VFVSTklORyB8fAorCQkJCQlwb3J0YWwtPnN0cmF0ZWd5ID09IFBPUlRBTF9PTkVfTU9EX1dJVEgp CisJCQkJCXBvcnRhbC0+cWRlc2NzID0gbGlzdF9tYWtlMShxdWVyeURlc2MpOworCiAJCQkJLyoK IAkJCQkgKiBJZiBpdCdzIGEgc2Nyb2xsYWJsZSBjdXJzb3IsIGV4ZWN1dG9yIG5lZWRzIHRvIHN1 cHBvcnQKIAkJCQkgKiBSRVdJTkQgYW5kIGJhY2t3YXJkcyBzY2FuLCBhcyB3ZWxsIGFzIHdoYXRl dmVyIHRoZSBjYWxsZXIKIAkJCQkgKiBtaWdodCd2ZSBhc2tlZCBmb3IuCiAJCQkJICovCi0JCQkJ aWYgKHBvcnRhbC0+Y3Vyc29yT3B0aW9ucyAmIENVUlNPUl9PUFRfU0NST0xMKQorCQkJCWlmIChw b3J0YWwtPnN0cmF0ZWd5ID09IFBPUlRBTF9PTkVfU0VMRUNUICYmCisJCQkJCShwb3J0YWwtPmN1 cnNvck9wdGlvbnMgJiBDVVJTT1JfT1BUX1NDUk9MTCkpCiAJCQkJCW15ZWZsYWdzID0gZWZsYWdz IHwgRVhFQ19GTEFHX1JFV0lORCB8IEVYRUNfRkxBR19CQUNLV0FSRDsKIAkJCQllbHNlCiAJCQkJ CW15ZWZsYWdzID0gZWZsYWdzOwogCisJCQkJLyogVGFrZSBsb2NrcyBpZiB1c2luZyBhIENhY2hl ZFBsYW4gKi8KKwkJCQlpZiAocXVlcnlEZXNjLT5jcGxhbikKKwkJCQkJbXllZmxhZ3MgfD0gRVhF Q19GTEFHX0dFVF9MT0NLUzsKKwogCQkJCS8qCi0JCQkJICogQ2FsbCBFeGVjdXRvclN0YXJ0IHRv IHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbgorCQkJCSAqIENhbGwgRXhlY3V0b3JTdGFy dCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24uICBBCisJCQkJICogY2FjaGVkIHBs YW4gbWF5IGdldCBpbnZhbGlkYXRlZCBhcyB3ZSdyZSBkb2luZyB0aGF0LgogCQkJCSAqLwogCQkJ CUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBteWVmbGFncyk7CisJCQkJaWYgKCFxdWVyeURlc2Mt PnBsYW5fdmFsaWQpCisJCQkJeworCQkJCQlBc3NlcnQocXVlcnlEZXNjLT5jcGxhbik7CisJCQkJ CVBvcnRhbFF1ZXJ5RmluaXNoKHF1ZXJ5RGVzYyk7CisJCQkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7 CisJCQkJCXBvcnRhbC0+cGxhbl92YWxpZCA9IGZhbHNlOworCQkJCQlnb3RvIGVhcmx5X2V4aXQ7 CisJCQkJfQogCiAJCQkJLyoKLQkJCQkgKiBUaGlzIHRlbGxzIFBvcnRhbENsZWFudXAgdG8gc2h1 dCBkb3duIHRoZSBleGVjdXRvcgorCQkJCSAqIFRoaXMgdGVsbHMgUG9ydGFsQ2xlYW51cCB0byBz aHV0IGRvd24gdGhlIGV4ZWN1dG9yLCB0aG91Z2gKKwkJCQkgKiBub3QgbmVlZGVkIGZvciBxdWVy aWVzIGhhbmRsZWQgYnkgUG9ydGFsUnVuTXVsdGkoKS4KIAkJCQkgKi8KLQkJCQlwb3J0YWwtPnF1 ZXJ5RGVzYyA9IHF1ZXJ5RGVzYzsKKwkJCQlpZiAocG9ydGFsLT5zdHJhdGVneSA9PSBQT1JUQUxf T05FX1NFTEVDVCkKKwkJCQkJcG9ydGFsLT5xdWVyeURlc2MgPSBxdWVyeURlc2M7CiAKIAkJCQkv KgotCQkJCSAqIFJlbWVtYmVyIHR1cGxlIGRlc2NyaXB0b3IgKGNvbXB1dGVkIGJ5IEV4ZWN1dG9y U3RhcnQpCisJCQkJICogUmVtZW1iZXIgdHVwbGUgZGVzY3JpcHRvciAoY29tcHV0ZWQgYnkgRXhl Y3V0b3JTdGFydCksCisJCQkJICogdGhvdWdoIG1ha2UgaXQgaW5kZXBlbmRlbnQgb2YgUXVlcnlE ZXNjIGZvciBxdWVyaWVzIGhhbmRsZWQKKwkJCQkgKiBieSBQb3J0YWxSdW5NdWx0aSgpLgogCQkJ CSAqLwotCQkJCXBvcnRhbC0+dHVwRGVzYyA9IHF1ZXJ5RGVzYy0+dHVwRGVzYzsKKwkJCQlpZiAo cG9ydGFsLT5zdHJhdGVneSAhPSBQT1JUQUxfT05FX1NFTEVDVCkKKwkJCQkJcG9ydGFsLT50dXBE ZXNjID0gQ3JlYXRlVHVwbGVEZXNjQ29weShxdWVyeURlc2MtPnR1cERlc2MpOworCQkJCWVsc2UK KwkJCQkJcG9ydGFsLT50dXBEZXNjID0gcXVlcnlEZXNjLT50dXBEZXNjOwogCiAJCQkJLyoKIAkJ CQkgKiBSZXNldCBjdXJzb3IgcG9zaXRpb24gZGF0YSB0byAic3RhcnQgb2YgcXVlcnkiCkBAIC01 MzIsMzMgKzQ3NiwxMSBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZv IHBhcmFtcywKIAkJCQlwb3J0YWwtPmF0U3RhcnQgPSB0cnVlOwogCQkJCXBvcnRhbC0+YXRFbmQg PSBmYWxzZTsJLyogYWxsb3cgZmV0Y2hlcyAqLwogCQkJCXBvcnRhbC0+cG9ydGFsUG9zID0gMDsK KwkJCQlwb3J0YWwtPnBsYW5fdmFsaWQgPSB0cnVlOwogCiAJCQkJUG9wQWN0aXZlU25hcHNob3Qo KTsKIAkJCQlicmVhazsKIAotCQkJY2FzZSBQT1JUQUxfT05FX1JFVFVSTklORzoKLQkJCWNhc2Ug UE9SVEFMX09ORV9NT0RfV0lUSDoKLQotCQkJCS8qCi0JCQkJICogV2UgZG9uJ3Qgc3RhcnQgdGhl IGV4ZWN1dG9yIHVudGlsIHdlIGFyZSB0b2xkIHRvIHJ1biB0aGUKLQkJCQkgKiBwb3J0YWwuICBX ZSBkbyBuZWVkIHRvIHNldCB1cCB0aGUgcmVzdWx0IHR1cGRlc2MuCi0JCQkJICovCi0JCQkJewot CQkJCQlQbGFubmVkU3RtdCAqcHN0bXQ7Ci0KLQkJCQkJcHN0bXQgPSBQb3J0YWxHZXRQcmltYXJ5 U3RtdChwb3J0YWwpOwotCQkJCQlwb3J0YWwtPnR1cERlc2MgPQotCQkJCQkJRXhlY0NsZWFuVHlw ZUZyb21UTChwc3RtdC0+cGxhblRyZWUtPnRhcmdldGxpc3QpOwotCQkJCX0KLQotCQkJCS8qCi0J CQkJICogUmVzZXQgY3Vyc29yIHBvc2l0aW9uIGRhdGEgdG8gInN0YXJ0IG9mIHF1ZXJ5IgotCQkJ CSAqLwotCQkJCXBvcnRhbC0+YXRTdGFydCA9IHRydWU7Ci0JCQkJcG9ydGFsLT5hdEVuZCA9IGZh bHNlOwkvKiBhbGxvdyBmZXRjaGVzICovCi0JCQkJcG9ydGFsLT5wb3J0YWxQb3MgPSAwOwotCQkJ CWJyZWFrOwotCiAJCQljYXNlIFBPUlRBTF9VVElMX1NFTEVDVDoKIAogCQkJCS8qCkBAIC01Nzgs MTEgKzUwMCw5MCBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBh cmFtcywKIAkJCQlwb3J0YWwtPmF0U3RhcnQgPSB0cnVlOwogCQkJCXBvcnRhbC0+YXRFbmQgPSBm YWxzZTsJLyogYWxsb3cgZmV0Y2hlcyAqLwogCQkJCXBvcnRhbC0+cG9ydGFsUG9zID0gMDsKKwkJ CQlwb3J0YWwtPnBsYW5fdmFsaWQgPSB0cnVlOwogCQkJCWJyZWFrOwogCiAJCQljYXNlIFBPUlRB TF9NVUxUSV9RVUVSWToKLQkJCQkvKiBOZWVkIGRvIG5vdGhpbmcgbm93ICovCisJCQkJeworCQkJ CQlMaXN0Q2VsbCAgICpsYzsKKwkJCQkJYm9vbAkJZmlyc3QgPSB0cnVlOworCisJCQkJCS8qIFRh a2UgbG9ja3MgaWYgdXNpbmcgYSBDYWNoZWRQbGFuICovCisJCQkJCW15ZWZsYWdzID0gMDsKKwkJ CQkJaWYgKHBvcnRhbC0+Y3BsYW4pCisJCQkJCQlteWVmbGFncyB8PSBFWEVDX0ZMQUdfR0VUX0xP Q0tTOworCisJCQkJCWZvcmVhY2gobGMsIHBvcnRhbC0+c3RtdHMpCisJCQkJCXsKKwkJCQkJCVBs YW5uZWRTdG10ICpwbGFuID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIGxjKTsKKwkJCQkJCWJv b2wJCWlzX3V0aWxpdHkgPSAocGxhbi0+dXRpbGl0eVN0bXQgIT0gTlVMTCk7CisKKwkJCQkJCS8q CisJCQkJCQkgKiBQdXNoIHRoZSBzbmFwc2hvdCB0byBiZSB1c2VkIGJ5IHRoZSBleGVjdXRvci4K KwkJCQkJCSAqLworCQkJCQkJaWYgKCFpc191dGlsaXR5KQorCQkJCQkJeworCQkJCQkJCS8qCisJ CQkJCQkJICogTXVzdCBjb3B5IHRoZSBzbmFwc2hvdCBpZiB3ZSdsbCBuZWVkIHRvIHVwZGF0ZQor CQkJCQkJCSAqIGl0cyBjb21tYW5kIElELgorCQkJCQkJCSAqLworCQkJCQkJCWlmICghZmlyc3Qp CisJCQkJCQkJCVB1c2hDb3BpZWRTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwor CQkJCQkJCWVsc2UKKwkJCQkJCQkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25h cHNob3QoKSk7CisJCQkJCQl9CisKKwkJCQkJCS8qCisJCQkJCQkgKiBGcm9tIHRoZSAybmQgc3Rh dGVtZW50IG9ud2FyZHMsIHVwZGF0ZSB0aGUgY29tbWFuZAorCQkJCQkJICogSUQgYW5kIHRoZSBz bmFwc2hvdCB0byBtYXRjaC4KKwkJCQkJCSAqLworCQkJCQkJaWYgKCFmaXJzdCkKKwkJCQkJCXsK KwkJCQkJCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCQkJCQkJCVVwZGF0ZUFjdGl2ZVNu YXBzaG90Q29tbWFuZElkKCk7CisJCQkJCQl9CisKKwkJCQkJCWZpcnN0ID0gZmFsc2U7CisKKwkJ CQkJCS8qCisJCQkJCQkgKiBDcmVhdGUgdGhlIFF1ZXJ5RGVzYyBvYmplY3QuICBEZXN0UmVjZWl2 ZXIgd2lsbAorCQkJCQkJICogYmUgc2V0IGluIFBvcnRhbFJ1bk11bHRpKCkuCisJCQkJCQkgKi8K KwkJCQkJCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBwb3J0YWwtPmNwbGFuLAor CQkJCQkJCQkJCQkJCXBvcnRhbC0+c291cmNlVGV4dCwKKwkJCQkJCQkJCQkJCQkhaXNfdXRpbGl0 eSA/CisJCQkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSA6CisJCQkJCQkJCQkJCQkJSW52 YWxpZFNuYXBzaG90LAorCQkJCQkJCQkJCQkJCUludmFsaWRTbmFwc2hvdCwKKwkJCQkJCQkJCQkJ CQlOVUxMLAorCQkJCQkJCQkJCQkJCXBhcmFtcywKKwkJCQkJCQkJCQkJCQlwb3J0YWwtPnF1ZXJ5 RW52LCAwKTsKKworCQkJCQkJLyogUmVtZW1iZXIgZm9yIFBvcnRhbFJ1bk11bHRpKCkgKi8KKwkJ CQkJCXBvcnRhbC0+cWRlc2NzID0gbGFwcGVuZChwb3J0YWwtPnFkZXNjcywgcXVlcnlEZXNjKTsK KworCQkJCQkJaWYgKGlzX3V0aWxpdHkpCisJCQkJCQkJY29udGludWU7CisKKwkJCQkJCS8qCisJ CQkJCQkgKiBDYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IKKwkJCQkJ CSAqIGV4ZWN1dGlvbi4gIEEgY2FjaGVkIHBsYW4gbWF5IGdldCBpbnZhbGlkYXRlZCBhcworCQkJ CQkJICogd2UncmUgZG9pbmcgdGhhdC4KKwkJCQkJCSAqLworCQkJCQkJRXhlY3V0b3JTdGFydChx dWVyeURlc2MsIG15ZWZsYWdzKTsKKwkJCQkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCQkJCQlp ZiAoIXF1ZXJ5RGVzYy0+cGxhbl92YWxpZCkKKwkJCQkJCXsKKwkJCQkJCQlBc3NlcnQocXVlcnlE ZXNjLT5jcGxhbik7CisJCQkJCQkJUG9ydGFsUXVlcnlGaW5pc2gocXVlcnlEZXNjKTsKKwkJCQkJ CQlwb3J0YWwtPnBsYW5fdmFsaWQgPSBmYWxzZTsKKwkJCQkJCQlnb3RvIGVhcmx5X2V4aXQ7CisJ CQkJCQl9CisJCQkJCX0KKwkJCQl9CisKIAkJCQlwb3J0YWwtPnR1cERlc2MgPSBOVUxMOworCQkJ CXBvcnRhbC0+cGxhbl92YWxpZCA9IHRydWU7CiAJCQkJYnJlYWs7CiAJCX0KIAl9CkBAIC01OTQs MTkgKzU5NSwxOCBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBh cmFtcywKIAkJLyogUmVzdG9yZSBnbG9iYWwgdmFycyBhbmQgcHJvcGFnYXRlIGVycm9yICovCiAJ CUFjdGl2ZVBvcnRhbCA9IHNhdmVBY3RpdmVQb3J0YWw7CiAJCUN1cnJlbnRSZXNvdXJjZU93bmVy ID0gc2F2ZVJlc291cmNlT3duZXI7Ci0JCVBvcnRhbENvbnRleHQgPSBzYXZlUG9ydGFsQ29udGV4 dDsKIAogCQlQR19SRV9USFJPVygpOwogCX0KIAlQR19FTkRfVFJZKCk7CiAKKwlwb3J0YWwtPnN0 YXR1cyA9IFBPUlRBTF9SRUFEWTsKKworZWFybHlfZXhpdDoKIAlNZW1vcnlDb250ZXh0U3dpdGNo VG8ob2xkQ29udGV4dCk7CiAKIAlBY3RpdmVQb3J0YWwgPSBzYXZlQWN0aXZlUG9ydGFsOwogCUN1 cnJlbnRSZXNvdXJjZU93bmVyID0gc2F2ZVJlc291cmNlT3duZXI7Ci0JUG9ydGFsQ29udGV4dCA9 IHNhdmVQb3J0YWxDb250ZXh0OwotCi0JcG9ydGFsLT5zdGF0dXMgPSBQT1JUQUxfUkVBRFk7CiB9 CiAKIC8qCkBAIC0xMTkzLDcgKzExOTMsNyBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFs LAogCQkJICAgUXVlcnlDb21wbGV0aW9uICpxYykKIHsKIAlib29sCQlhY3RpdmVfc25hcHNob3Rf c2V0ID0gZmFsc2U7Ci0JTGlzdENlbGwgICAqc3RtdGxpc3RfaXRlbTsKKwlMaXN0Q2VsbCAgICpx ZGVzY19pdGVtOwogCiAJLyoKIAkgKiBJZiB0aGUgZGVzdGluYXRpb24gaXMgRGVzdFJlbW90ZUV4 ZWN1dGUsIGNoYW5nZSB0byBEZXN0Tm9uZS4gIFRoZQpAQCAtMTIxNCw5ICsxMjE0LDEwIEBAIFBv cnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJICogTG9vcCB0byBoYW5kbGUgdGhlIGluZGl2 aWR1YWwgcXVlcmllcyBnZW5lcmF0ZWQgZnJvbSBhIHNpbmdsZSBwYXJzZXRyZWUKIAkgKiBieSBh bmFseXNpcyBhbmQgcmV3cml0ZS4KIAkgKi8KLQlmb3JlYWNoKHN0bXRsaXN0X2l0ZW0sIHBvcnRh bC0+c3RtdHMpCisJZm9yZWFjaChxZGVzY19pdGVtLCBwb3J0YWwtPnFkZXNjcykKIAl7Ci0JCVBs YW5uZWRTdG10ICpwc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBzdG10bGlzdF9pdGVt KTsKKwkJUXVlcnlEZXNjICpxZGVzYyA9IChRdWVyeURlc2MgKikgbGZpcnN0KHFkZXNjX2l0ZW0p OworCQlQbGFubmVkU3RtdCAqcHN0bXQgPSBxZGVzYy0+cGxhbm5lZHN0bXQ7CiAKIAkJLyoKIAkJ ICogSWYgd2UgZ290IGEgY2FuY2VsIHNpZ25hbCBpbiBwcmlvciBjb21tYW5kLCBxdWl0CkBAIC0x MjcxLDIzICsxMjcyLDM4IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJCQllbHNl CiAJCQkJVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKIAorCQkJLyoKKwkJCSAqIFJ1 biB0aGUgcGxhbiB0byBjb21wbGV0aW9uLgorCQkJICovCisJCQlxZGVzYy0+ZGVzdCA9IGRlc3Q7 CisJCQlFeGVjdXRvclJ1bihxZGVzYywgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIDBMLCB0cnVlKTsK KworCQkJLyoKKwkJCSAqIEJ1aWxkIGNvbW1hbmQgY29tcGxldGlvbiBzdGF0dXMgZGF0YSBpZiBu ZWVkZWQuCisJCQkgKi8KIAkJCWlmIChwc3RtdC0+Y2FuU2V0VGFnKQogCQkJewotCQkJCS8qIHN0 YXRlbWVudCBjYW4gc2V0IHRhZyBzdHJpbmcgKi8KLQkJCQlQcm9jZXNzUXVlcnkocHN0bXQsCi0J CQkJCQkJIHBvcnRhbC0+c291cmNlVGV4dCwKLQkJCQkJCQkgcG9ydGFsLT5wb3J0YWxQYXJhbXMs Ci0JCQkJCQkJIHBvcnRhbC0+cXVlcnlFbnYsCi0JCQkJCQkJIGRlc3QsIHFjKTsKLQkJCX0KLQkJ CWVsc2UKLQkJCXsKLQkJCQkvKiBzdG10IGFkZGVkIGJ5IHJld3JpdGUgY2Fubm90IHNldCB0YWcg Ki8KLQkJCQlQcm9jZXNzUXVlcnkocHN0bXQsCi0JCQkJCQkJIHBvcnRhbC0+c291cmNlVGV4dCwK LQkJCQkJCQkgcG9ydGFsLT5wb3J0YWxQYXJhbXMsCi0JCQkJCQkJIHBvcnRhbC0+cXVlcnlFbnYs Ci0JCQkJCQkJIGFsdGRlc3QsIE5VTEwpOworCQkJCXN3aXRjaCAocWRlc2MtPm9wZXJhdGlvbikK KwkJCQl7CisJCQkJCWNhc2UgQ01EX1NFTEVDVDoKKwkJCQkJCVNldFF1ZXJ5Q29tcGxldGlvbihx YywgQ01EVEFHX1NFTEVDVCwgcWRlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKKwkJCQkJCWJy ZWFrOworCQkJCQljYXNlIENNRF9JTlNFUlQ6CisJCQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMs IENNRFRBR19JTlNFUlQsIHFkZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7CisJCQkJCQlicmVh azsKKwkJCQkJY2FzZSBDTURfVVBEQVRFOgorCQkJCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBD TURUQUdfVVBEQVRFLCBxZGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOworCQkJCQkJYnJlYWs7 CisJCQkJCWNhc2UgQ01EX0RFTEVURToKKwkJCQkJCVNldFF1ZXJ5Q29tcGxldGlvbihxYywgQ01E VEFHX0RFTEVURSwgcWRlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKKwkJCQkJCWJyZWFrOwor CQkJCQljYXNlIENNRF9NRVJHRToKKwkJCQkJCVNldFF1ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFH X01FUkdFLCBxZGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOworCQkJCQkJYnJlYWs7CisJCQkJ CWRlZmF1bHQ6CisJCQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19VTktOT1dOLCBx ZGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOworCQkJCQkJYnJlYWs7CisJCQkJfQogCQkJfQog CiAJCQlpZiAobG9nX2V4ZWN1dG9yX3N0YXRzKQpAQCAtMTM0Niw4ICsxMzYyLDE1IEBAIFBvcnRh bFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJCSAqIEluY3JlbWVudCBjb21tYW5kIGNvdW50ZXIg YmV0d2VlbiBxdWVyaWVzLCBidXQgbm90IGFmdGVyIHRoZSBsYXN0CiAJCSAqIG9uZS4KIAkJICov Ci0JCWlmIChsbmV4dChwb3J0YWwtPnN0bXRzLCBzdG10bGlzdF9pdGVtKSAhPSBOVUxMKQorCQlp ZiAobG5leHQocG9ydGFsLT5xZGVzY3MsIHFkZXNjX2l0ZW0pICE9IE5VTEwpCiAJCQlDb21tYW5k Q291bnRlckluY3JlbWVudCgpOworCisJCWlmIChxZGVzYy0+ZXN0YXRlKQorCQl7CisJCQlFeGVj dXRvckZpbmlzaChxZGVzYyk7CisJCQlFeGVjdXRvckVuZChxZGVzYyk7CisJCX0KKwkJRnJlZVF1 ZXJ5RGVzYyhxZGVzYyk7CiAJfQogCiAJLyogUG9wIHRoZSBzbmFwc2hvdCBpZiB3ZSBwdXNoZWQg b25lLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMg Yi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwppbmRleCBjNzYwNzg5NWNkLi4w MTRjZDQ3NmY0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwpAQCAtMjA3Myw2ICsy MDczLDI3IEBAIGdldF9yZWxfcGVyc2lzdGVuY2UoT2lkIHJlbGlkKQogCXJldHVybiByZXN1bHQ7 CiB9CiAKKy8qCisgKiBnZXRfcmVsX3JlbGlzc2hhcmVkCisgKgorICoJCVJldHVybnMgaWYgdGhl IGdpdmVuIHJlbGF0aW9uIGlzIHNoYXJlZCBvciBub3QKKyAqLworYm9vbAorZ2V0X3JlbF9yZWxp c3NoYXJlZChPaWQgcmVsaWQpCit7CisJSGVhcFR1cGxlCXRwOworCUZvcm1fcGdfY2xhc3MgcmVs dHVwOworCWJvb2wJCXJlc3VsdDsKKworCXRwID0gU2VhcmNoU3lzQ2FjaGUxKFJFTE9JRCwgT2Jq ZWN0SWRHZXREYXR1bShyZWxpZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJCWVs b2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciByZWxhdGlvbiAldSIsIHJlbGlkKTsK KwlyZWx0dXAgPSAoRm9ybV9wZ19jbGFzcykgR0VUU1RSVUNUKHRwKTsKKwlyZXN1bHQgPSByZWx0 dXAtPnJlbGlzc2hhcmVkOworCVJlbGVhc2VTeXNDYWNoZSh0cCk7CisKKwlyZXR1cm4gcmVzdWx0 OworfQogCiAvKgkJCQktLS0tLS0tLS0tIFRSQU5TRk9STSBDQUNIRSAtLS0tLS0tLS0tCQkJCQkJ ICovCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKaW5kZXggNzdjMmJhM2Y4Zi4uNGU0 NTVkODE1ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKQEAgLTEwMCwxMyArMTAw LDEzIEBAIHN0YXRpYyB2b2lkIFJlbGVhc2VHZW5lcmljUGxhbihDYWNoZWRQbGFuU291cmNlICpw bGFuc291cmNlKTsKIHN0YXRpYyBMaXN0ICpSZXZhbGlkYXRlQ2FjaGVkUXVlcnkoQ2FjaGVkUGxh blNvdXJjZSAqcGxhbnNvdXJjZSwKIAkJCQkJCQkJICAgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlF bnYpOwogc3RhdGljIGJvb2wgQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5z b3VyY2UpOworc3RhdGljIGJvb2wgR2VuZXJpY1BsYW5Jc1ZhbGlkKENhY2hlZFBsYW4gKmNwbGFu KTsKIHN0YXRpYyBDYWNoZWRQbGFuICpCdWlsZENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAq cGxhbnNvdXJjZSwgTGlzdCAqcWxpc3QsCiAJCQkJCQkJCSAgIFBhcmFtTGlzdEluZm8gYm91bmRQ YXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKIHN0YXRpYyBib29sIGNob29zZV9j dXN0b21fcGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQkJCQkJCSAgIFBhcmFt TGlzdEluZm8gYm91bmRQYXJhbXMpOwogc3RhdGljIGRvdWJsZSBjYWNoZWRfcGxhbl9jb3N0KENh Y2hlZFBsYW4gKnBsYW4sIGJvb2wgaW5jbHVkZV9wbGFubmVyKTsKIHN0YXRpYyBRdWVyeSAqUXVl cnlMaXN0R2V0UHJpbWFyeVN0bXQoTGlzdCAqc3RtdHMpOwotc3RhdGljIHZvaWQgQWNxdWlyZUV4 ZWN1dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpOwogc3RhdGljIHZvaWQg QWNxdWlyZVBsYW5uZXJMb2NrcyhMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWlyZSk7CiBzdGF0 aWMgdm9pZCBTY2FuUXVlcnlGb3JMb2NrcyhRdWVyeSAqcGFyc2V0cmVlLCBib29sIGFjcXVpcmUp Owogc3RhdGljIGJvb2wgU2NhblF1ZXJ5V2Fsa2VyKE5vZGUgKm5vZGUsIGJvb2wgKmFjcXVpcmUp OwpAQCAtNzg3LDkgKzc4Nyw2IEBAIFJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291 cmNlICpwbGFuc291cmNlLAogICoKICAqIENhbGxlciBtdXN0IGhhdmUgYWxyZWFkeSBjYWxsZWQg UmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5IHRvIHZlcmlmeSB0aGF0IHRoZQogICogcXVlcnl0cmVlIGlz IHVwIHRvIGRhdGUuCi0gKgotICogT24gYSAidHJ1ZSIgcmV0dXJuLCB3ZSBoYXZlIGFjcXVpcmVk IHRoZSBsb2NrcyBuZWVkZWQgdG8gcnVuIHRoZSBwbGFuLgotICogKFdlIG11c3QgZG8gdGhpcyBm b3IgdGhlICJ0cnVlIiByZXN1bHQgdG8gYmUgcmFjZS1jb25kaXRpb24tZnJlZS4pCiAgKi8KIHN0 YXRpYyBib29sCiBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkK QEAgLTgwMyw2MCArODAwLDU2IEBAIENoZWNrQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpw bGFuc291cmNlKQogCWlmICghcGxhbikKIAkJcmV0dXJuIGZhbHNlOwogCi0JQXNzZXJ0KHBsYW4t Pm1hZ2ljID09IENBQ0hFRFBMQU5fTUFHSUMpOwotCS8qIEdlbmVyaWMgcGxhbnMgYXJlIG5ldmVy IG9uZS1zaG90ICovCi0JQXNzZXJ0KCFwbGFuLT5pc19vbmVzaG90KTsKKwlpZiAoR2VuZXJpY1Bs YW5Jc1ZhbGlkKHBsYW4pKQorCQlyZXR1cm4gdHJ1ZTsKIAogCS8qCi0JICogSWYgcGxhbiBpc24n dCB2YWxpZCBmb3IgY3VycmVudCByb2xlLCB3ZSBjYW4ndCB1c2UgaXQuCisJICogUGxhbiBoYXMg YmVlbiBpbnZhbGlkYXRlZCwgc28gdW5saW5rIGl0IGZyb20gdGhlIHBhcmVudCBhbmQgcmVsZWFz ZSBpdC4KIAkgKi8KLQlpZiAocGxhbi0+aXNfdmFsaWQgJiYgcGxhbi0+ZGVwZW5kc09uUm9sZSAm JgotCQlwbGFuLT5wbGFuUm9sZUlkICE9IEdldFVzZXJJZCgpKQotCQlwbGFuLT5pc192YWxpZCA9 IGZhbHNlOworCVJlbGVhc2VHZW5lcmljUGxhbihwbGFuc291cmNlKTsKIAotCS8qCi0JICogSWYg aXQgYXBwZWFycyB2YWxpZCwgYWNxdWlyZSBsb2NrcyBhbmQgcmVjaGVjazsgdGhpcyBpcyBtdWNo IHRoZSBzYW1lCi0JICogbG9naWMgYXMgaW4gUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5LCBidXQgZm9y IGEgcGxhbi4KLQkgKi8KLQlpZiAocGxhbi0+aXNfdmFsaWQpCisJcmV0dXJuIGZhbHNlOworfQor CisvKgorICogR2VuZXJpY1BsYW5Jc1ZhbGlkCisgKgkJSXMgYSBnZW5lcmljIHBsYW4gc3RpbGwg dmFsaWQ/CisgKgorICogSXQgbWF5IGhhdmUgZ29uZSBzdGFsZSBkdWUgdG8gY29uY3VycmVudCBz Y2hlbWEgbW9kaWZpY2F0aW9ucyBvZiByZWxhdGlvbnMKKyAqIG1lbnRpb25lZCBpbiB0aGUgcGxh biBvciBhIGNvdXBsZSBvZiBvdGhlciB0aGluZ3MgbWVudGlvbmVkIGJlbG93LgorICovCitzdGF0 aWMgYm9vbAorR2VuZXJpY1BsYW5Jc1ZhbGlkKENhY2hlZFBsYW4gKmNwbGFuKQoreworCUFzc2Vy dChjcGxhbiAhPSBOVUxMKTsKKwlBc3NlcnQoY3BsYW4tPm1hZ2ljID09IENBQ0hFRFBMQU5fTUFH SUMpOworCS8qIEdlbmVyaWMgcGxhbnMgYXJlIG5ldmVyIG9uZS1zaG90ICovCisJQXNzZXJ0KCFj cGxhbi0+aXNfb25lc2hvdCk7CisKKwlpZiAoY3BsYW4tPmlzX3ZhbGlkKQogCXsKIAkJLyoKIAkJ ICogUGxhbiBtdXN0IGhhdmUgcG9zaXRpdmUgcmVmY291bnQgYmVjYXVzZSBpdCBpcyByZWZlcmVu Y2VkIGJ5CiAJCSAqIHBsYW5zb3VyY2U7IHNvIG5vIG5lZWQgdG8gZmVhciBpdCBkaXNhcHBlYXJz IHVuZGVyIHVzIGhlcmUuCiAJCSAqLwotCQlBc3NlcnQocGxhbi0+cmVmY291bnQgPiAwKTsKLQot CQlBY3F1aXJlRXhlY3V0b3JMb2NrcyhwbGFuLT5zdG10X2xpc3QsIHRydWUpOworCQlBc3NlcnQo Y3BsYW4tPnJlZmNvdW50ID4gMCk7CiAKIAkJLyoKLQkJICogSWYgcGxhbiB3YXMgdHJhbnNpZW50 LCBjaGVjayB0byBzZWUgaWYgVHJhbnNhY3Rpb25YbWluIGhhcwotCQkgKiBhZHZhbmNlZCwgYW5k IGlmIHNvIGludmFsaWRhdGUgaXQuCisJCSAqIElmIHBsYW4gaXNuJ3QgdmFsaWQgZm9yIGN1cnJl bnQgcm9sZSwgd2UgY2FuJ3QgdXNlIGl0LgogCQkgKi8KLQkJaWYgKHBsYW4tPmlzX3ZhbGlkICYm Ci0JCQlUcmFuc2FjdGlvbklkSXNWYWxpZChwbGFuLT5zYXZlZF94bWluKSAmJgotCQkJIVRyYW5z YWN0aW9uSWRFcXVhbHMocGxhbi0+c2F2ZWRfeG1pbiwgVHJhbnNhY3Rpb25YbWluKSkKLQkJCXBs YW4tPmlzX3ZhbGlkID0gZmFsc2U7CisJCWlmIChjcGxhbi0+ZGVwZW5kc09uUm9sZSAmJiBjcGxh bi0+cGxhblJvbGVJZCAhPSBHZXRVc2VySWQoKSkKKwkJCWNwbGFuLT5pc192YWxpZCA9IGZhbHNl OwogCiAJCS8qCi0JCSAqIEJ5IG5vdywgaWYgYW55IGludmFsaWRhdGlvbiBoYXMgaGFwcGVuZWQs IHRoZSBpbnZhbCBjYWxsYmFjawotCQkgKiBmdW5jdGlvbnMgd2lsbCBoYXZlIG1hcmtlZCB0aGUg cGxhbiBpbnZhbGlkLgorCQkgKiBJZiBwbGFuIHdhcyB0cmFuc2llbnQsIGNoZWNrIHRvIHNlZSBp ZiBUcmFuc2FjdGlvblhtaW4gaGFzCisJCSAqIGFkdmFuY2VkLCBhbmQgaWYgc28gaW52YWxpZGF0 ZSBpdC4KIAkJICovCi0JCWlmIChwbGFuLT5pc192YWxpZCkKLQkJewotCQkJLyogU3VjY2Vzc2Z1 bGx5IHJldmFsaWRhdGVkIGFuZCBsb2NrZWQgdGhlIHF1ZXJ5LiAqLwotCQkJcmV0dXJuIHRydWU7 Ci0JCX0KLQotCQkvKiBPb3BzLCB0aGUgcmFjZSBjYXNlIGhhcHBlbmVkLiAgUmVsZWFzZSB1c2Vs ZXNzIGxvY2tzLiAqLwotCQlBY3F1aXJlRXhlY3V0b3JMb2NrcyhwbGFuLT5zdG10X2xpc3QsIGZh bHNlKTsKKwkJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGNwbGFuLT5zYXZlZF94bWluKSAmJgor CQkJIVRyYW5zYWN0aW9uSWRFcXVhbHMoY3BsYW4tPnNhdmVkX3htaW4sIFRyYW5zYWN0aW9uWG1p bikpCisJCQljcGxhbi0+aXNfdmFsaWQgPSBmYWxzZTsKIAl9CiAKLQkvKgotCSAqIFBsYW4gaGFz IGJlZW4gaW52YWxpZGF0ZWQsIHNvIHVubGluayBpdCBmcm9tIHRoZSBwYXJlbnQgYW5kIHJlbGVh c2UgaXQuCi0JICovCi0JUmVsZWFzZUdlbmVyaWNQbGFuKHBsYW5zb3VyY2UpOwotCi0JcmV0dXJu IGZhbHNlOworCXJldHVybiBjcGxhbi0+aXNfdmFsaWQ7CiB9CiAKIC8qCkBAIC0xMTI2LDkgKzEx MTksNiBAQCBjYWNoZWRfcGxhbl9jb3N0KENhY2hlZFBsYW4gKnBsYW4sIGJvb2wgaW5jbHVkZV9w bGFubmVyKQogICogcGxhbiBvciBhIGN1c3RvbSBwbGFuIGZvciB0aGUgZ2l2ZW4gcGFyYW1ldGVy czogdGhlIGNhbGxlciBkb2VzIG5vdCBrbm93CiAgKiB3aGljaCBpdCB3aWxsIGdldC4KICAqCi0g KiBPbiByZXR1cm4sIHRoZSBwbGFuIGlzIHZhbGlkIGFuZCB3ZSBoYXZlIHN1ZmZpY2llbnQgbG9j a3MgdG8gYmVnaW4KLSAqIGV4ZWN1dGlvbi4KLSAqCiAgKiBPbiByZXR1cm4sIHRoZSByZWZjb3Vu dCBvZiB0aGUgcGxhbiBoYXMgYmVlbiBpbmNyZW1lbnRlZDsgYSBsYXRlcgogICogUmVsZWFzZUNh Y2hlZFBsYW4oKSBjYWxsIGlzIGV4cGVjdGVkLiAgSWYgIm93bmVyIiBpcyBub3QgTlVMTCB0aGVu CiAgKiB0aGUgcmVmY291bnQgaGFzIGJlZW4gcmVwb3J0ZWQgdG8gdGhhdCBSZXNvdXJjZU93bmVy IChub3RlIHRoYXQgdGhpcwpAQCAtMTM2MCw4ICsxMzUwLDggQEAgQ2FjaGVkUGxhbkFsbG93c1Np bXBsZVZhbGlkaXR5Q2hlY2soQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAl9CiAKIAkv KgotCSAqIFJlamVjdCBpZiBBY3F1aXJlRXhlY3V0b3JMb2NrcyB3b3VsZCBoYXZlIGFueXRoaW5n IHRvIGRvLiAgVGhpcyBpcwotCSAqIHByb2JhYmx5IHVubmVjZXNzYXJ5IGdpdmVuIHRoZSBwcmV2 aW91cyBjaGVjaywgYnV0IGxldCdzIGJlIHNhZmUuCisJICogUmVqZWN0IGlmIHRoZSBleGVjdXRv ciB3b3VsZCBuZWVkIHRvIHRha2UgYWRkaXRpb25hbCBsb2NrcywgdGhhdCBpcywgaW4KKwkgKiBh ZGRpdGlvbiB0byB0aG9zZSB0YWtlbiBieSBBY3F1aXJlUGxhbm5lckxvY2tzKCkgb24gYSBnaXZl biBxdWVyeS4KIAkgKi8KIAlmb3JlYWNoKGxjLCBwbGFuLT5zdG10X2xpc3QpCiAJewpAQCAtMTcz NSw1OCArMTcyNSw2IEBAIFF1ZXJ5TGlzdEdldFByaW1hcnlTdG10KExpc3QgKnN0bXRzKQogCXJl dHVybiBOVUxMOwogfQogCi0vKgotICogQWNxdWlyZUV4ZWN1dG9yTG9ja3M6IGFjcXVpcmUgbG9j a3MgbmVlZGVkIGZvciBleGVjdXRpb24gb2YgYSBjYWNoZWQgcGxhbjsKLSAqIG9yIHJlbGVhc2Ug dGhlbSBpZiBhY3F1aXJlIGlzIGZhbHNlLgotICovCi1zdGF0aWMgdm9pZAotQWNxdWlyZUV4ZWN1 dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpCi17Ci0JTGlzdENlbGwgICAq bGMxOwotCi0JZm9yZWFjaChsYzEsIHN0bXRfbGlzdCkKLQl7Ci0JCVBsYW5uZWRTdG10ICpwbGFu bmVkc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBsYzEpOwotCQlMaXN0Q2VsbCAgICps YzI7Ci0KLQkJaWYgKHBsYW5uZWRzdG10LT5jb21tYW5kVHlwZSA9PSBDTURfVVRJTElUWSkKLQkJ ewotCQkJLyoKLQkJCSAqIElnbm9yZSB1dGlsaXR5IHN0YXRlbWVudHMsIGV4Y2VwdCB0aG9zZSAo c3VjaCBhcyBFWFBMQUlOKSB0aGF0Ci0JCQkgKiBjb250YWluIGEgcGFyc2VkLWJ1dC1ub3QtcGxh bm5lZCBxdWVyeS4gIE5vdGU6IGl0J3Mgb2theSB0byB1c2UKLQkJCSAqIFNjYW5RdWVyeUZvckxv Y2tzLCBldmVuIHRob3VnaCB0aGUgcXVlcnkgaGFzbid0IGJlZW4gdGhyb3VnaAotCQkJICogcnVs ZSByZXdyaXRpbmcsIGJlY2F1c2UgcmV3cml0aW5nIGRvZXNuJ3QgY2hhbmdlIHRoZSBxdWVyeQot CQkJICogcmVwcmVzZW50YXRpb24uCi0JCQkgKi8KLQkJCVF1ZXJ5CSAgICpxdWVyeSA9IFV0aWxp dHlDb250YWluc1F1ZXJ5KHBsYW5uZWRzdG10LT51dGlsaXR5U3RtdCk7Ci0KLQkJCWlmIChxdWVy eSkKLQkJCQlTY2FuUXVlcnlGb3JMb2NrcyhxdWVyeSwgYWNxdWlyZSk7Ci0JCQljb250aW51ZTsK LQkJfQotCi0JCWZvcmVhY2gobGMyLCBwbGFubmVkc3RtdC0+cnRhYmxlKQotCQl7Ci0JCQlSYW5n ZVRibEVudHJ5ICpydGUgPSAoUmFuZ2VUYmxFbnRyeSAqKSBsZmlyc3QobGMyKTsKLQotCQkJaWYg KCEocnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTiB8fAotCQkJCSAgKHJ0ZS0+cnRla2luZCA9 PSBSVEVfU1VCUVVFUlkgJiYgT2lkSXNWYWxpZChydGUtPnJlbGlkKSkpKQotCQkJCWNvbnRpbnVl OwotCi0JCQkvKgotCQkJICogQWNxdWlyZSB0aGUgYXBwcm9wcmlhdGUgdHlwZSBvZiBsb2NrIG9u IGVhY2ggcmVsYXRpb24gT0lELiBOb3RlCi0JCQkgKiB0aGF0IHdlIGRvbid0IGFjdHVhbGx5IHRy eSB0byBvcGVuIHRoZSByZWwsIGFuZCBoZW5jZSB3aWxsIG5vdAotCQkJICogZmFpbCBpZiBpdCdz IGJlZW4gZHJvcHBlZCBlbnRpcmVseSAtLS0gd2UnbGwganVzdCB0cmFuc2llbnRseQotCQkJICog YWNxdWlyZSBhIG5vbi1jb25mbGljdGluZyBsb2NrLgotCQkJICovCi0JCQlpZiAoYWNxdWlyZSkK LQkJCQlMb2NrUmVsYXRpb25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7Ci0JCQll bHNlCi0JCQkJVW5sb2NrUmVsYXRpb25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7 Ci0JCX0KLQl9Ci19Ci0KIC8qCiAgKiBBY3F1aXJlUGxhbm5lckxvY2tzOiBhY3F1aXJlIGxvY2tz IG5lZWRlZCBmb3IgcGxhbm5pbmcgb2YgYSBxdWVyeXRyZWUgbGlzdDsKICAqIG9yIHJlbGVhc2Ug dGhlbSBpZiBhY3F1aXJlIGlzIGZhbHNlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv bW1nci9wb3J0YWxtZW0uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKaW5k ZXggMDZkZmE4NWYwNC4uM2FkODBjN2VjYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv bW1nci9wb3J0YWxtZW0uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5j CkBAIC0yMDEsNiArMjAxLDEwIEBAIENyZWF0ZVBvcnRhbChjb25zdCBjaGFyICpuYW1lLCBib29s IGFsbG93RHVwLCBib29sIGR1cFNpbGVudCkKIAlwb3J0YWwtPnBvcnRhbENvbnRleHQgPSBBbGxv Y1NldENvbnRleHRDcmVhdGUoVG9wUG9ydGFsQ29udGV4dCwKIAkJCQkJCQkJCQkJCSAgIlBvcnRh bENvbnRleHQiLAogCQkJCQkJCQkJCQkJICBBTExPQ1NFVF9TTUFMTF9TSVpFUyk7CisJLyogaW5p dGlhbGl6ZSBwb3J0YWwncyBxdWVyeSBjb250ZXh0IHRvIHN0b3JlIFF1ZXJ5RGVzY3MgKi8KKwlw b3J0YWwtPnF1ZXJ5Q29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShUb3BQb3J0YWxDb250 ZXh0LAorCQkJCQkJCQkJCQkJICJQb3J0YWxRdWVyeUNvbnRleHQiLAorCQkJCQkJCQkJCQkJIEFM TE9DU0VUX1NNQUxMX1NJWkVTKTsKIAogCS8qIGNyZWF0ZSBhIHJlc291cmNlIG93bmVyIGZvciB0 aGUgcG9ydGFsICovCiAJcG9ydGFsLT5yZXNvd25lciA9IFJlc291cmNlT3duZXJDcmVhdGUoQ3Vy VHJhbnNhY3Rpb25SZXNvdXJjZU93bmVyLApAQCAtMjI0LDYgKzIyOCw3IEBAIENyZWF0ZVBvcnRh bChjb25zdCBjaGFyICpuYW1lLCBib29sIGFsbG93RHVwLCBib29sIGR1cFNpbGVudCkKIAogCS8q IGZvciBuYW1lZCBwb3J0YWxzIHJldXNlIHBvcnRhbC0+bmFtZSBjb3B5ICovCiAJTWVtb3J5Q29u dGV4dFNldElkZW50aWZpZXIocG9ydGFsLT5wb3J0YWxDb250ZXh0LCBwb3J0YWwtPm5hbWVbMF0g PyBwb3J0YWwtPm5hbWUgOiAiPHVubmFtZWQ+Iik7CisJTWVtb3J5Q29udGV4dFNldElkZW50aWZp ZXIocG9ydGFsLT5xdWVyeUNvbnRleHQsIHBvcnRhbC0+bmFtZVswXSA/IHBvcnRhbC0+bmFtZSA6 ICI8dW5uYW1lZD4iKTsKIAogCXJldHVybiBwb3J0YWw7CiB9CkBAIC01OTQsNiArNTk5LDcgQEAg UG9ydGFsRHJvcChQb3J0YWwgcG9ydGFsLCBib29sIGlzVG9wQ29tbWl0KQogCiAJLyogcmVsZWFz ZSBzdWJzaWRpYXJ5IHN0b3JhZ2UgKi8KIAlNZW1vcnlDb250ZXh0RGVsZXRlKHBvcnRhbC0+cG9y dGFsQ29udGV4dCk7CisJTWVtb3J5Q29udGV4dERlbGV0ZShwb3J0YWwtPnF1ZXJ5Q29udGV4dCk7 CiAKIAkvKiByZWxlYXNlIHBvcnRhbCBzdHJ1Y3QgKGl0J3MgaW4gVG9wUG9ydGFsQ29udGV4dCkg Ki8KIAlwZnJlZShwb3J0YWwpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhw bGFpbi5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCmluZGV4IDNkM2U2MzJhMGMu LjM5MmFiYjUxNTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAor KysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKQEAgLTg4LDcgKzg4LDExIEBAIGV4 dGVybiB2b2lkIEV4cGxhaW5PbmVVdGlsaXR5KE5vZGUgKnV0aWxpdHlTdG10LCBJbnRvQ2xhdXNl ICppbnRvLAogCQkJCQkJCSAgRXhwbGFpblN0YXRlICplcywgY29uc3QgY2hhciAqcXVlcnlTdHJp bmcsCiAJCQkJCQkJICBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVl cnlFbnYpOwogCi1leHRlcm4gdm9pZCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5l ZHN0bXQsIEludG9DbGF1c2UgKmludG8sCitleHRlcm4gUXVlcnlEZXNjICpFeHBsYWluUXVlcnlE ZXNjKFBsYW5uZWRTdG10ICpzdG10LCBzdHJ1Y3QgQ2FjaGVkUGxhbiAqY3BsYW4sCisJCQkJIGNv bnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVz LAorCQkJCSBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYp OworZXh0ZXJuIHZvaWQgRXhwbGFpbk9uZVBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCisJCQkJ CQkgICBJbnRvQ2xhdXNlICppbnRvLAogCQkJCQkJICAgRXhwbGFpblN0YXRlICplcywgY29uc3Qg Y2hhciAqcXVlcnlTdHJpbmcsCiAJCQkJCQkgICBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlF bnZpcm9ubWVudCAqcXVlcnlFbnYsCiAJCQkJCQkgICBjb25zdCBpbnN0cl90aW1lICpwbGFuZHVy YXRpb24sCkBAIC0xMDQsNiArMTA4LDcgQEAgZXh0ZXJuIHZvaWQgRXhwbGFpblF1ZXJ5UGFyYW1l dGVycyhFeHBsYWluU3RhdGUgKmVzLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywgaW50IG0KIAogZXh0 ZXJuIHZvaWQgRXhwbGFpbkJlZ2luT3V0cHV0KEV4cGxhaW5TdGF0ZSAqZXMpOwogZXh0ZXJuIHZv aWQgRXhwbGFpbkVuZE91dHB1dChFeHBsYWluU3RhdGUgKmVzKTsKK2V4dGVybiB2b2lkIEV4cGxh aW5SZXNldE91dHB1dChFeHBsYWluU3RhdGUgKmVzKTsKIGV4dGVybiB2b2lkIEV4cGxhaW5TZXBh cmF0ZVBsYW5zKEV4cGxhaW5TdGF0ZSAqZXMpOwogCiBleHRlcm4gdm9pZCBFeHBsYWluUHJvcGVy dHlMaXN0KGNvbnN0IGNoYXIgKnFsYWJlbCwgTGlzdCAqZGF0YSwKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVz Yy5oCmluZGV4IGFmMmJmMzZkZmIuLmMzNmMyNWI0OTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL2V4ZWNkZXNjLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2Mu aApAQCAtMzIsOSArMzIsMTIgQEAKICAqLwogdHlwZWRlZiBzdHJ1Y3QgUXVlcnlEZXNjCiB7CisJ Tm9kZVRhZwkJdHlwZTsKKwogCS8qIFRoZXNlIGZpZWxkcyBhcmUgcHJvdmlkZWQgYnkgQ3JlYXRl UXVlcnlEZXNjICovCiAJQ21kVHlwZQkJb3BlcmF0aW9uOwkJLyogQ01EX1NFTEVDVCwgQ01EX1VQ REFURSwgZXRjLiAqLwogCVBsYW5uZWRTdG10ICpwbGFubmVkc3RtdDsJLyogcGxhbm5lcidzIG91 dHB1dCAoY291bGQgYmUgdXRpbGl0eSwgdG9vKSAqLworCXN0cnVjdCBDYWNoZWRQbGFuICpjcGxh bjsJLyogQ2FjaGVkUGxhbiwgaWYgcGxhbm5lZHN0bXQgaXMgZnJvbSBvbmUgKi8KIAljb25zdCBj aGFyICpzb3VyY2VUZXh0OwkJLyogc291cmNlIHRleHQgb2YgdGhlIHF1ZXJ5ICovCiAJU25hcHNo b3QJc25hcHNob3Q7CQkvKiBzbmFwc2hvdCB0byB1c2UgZm9yIHF1ZXJ5ICovCiAJU25hcHNob3QJ Y3Jvc3NjaGVja19zbmFwc2hvdDsJLyogY3Jvc3NjaGVjayBmb3IgUkkgdXBkYXRlL2RlbGV0ZSAq LwpAQCAtNDcsNiArNTAsNyBAQCB0eXBlZGVmIHN0cnVjdCBRdWVyeURlc2MKIAlUdXBsZURlc2MJ dHVwRGVzYzsJCS8qIGRlc2NyaXB0b3IgZm9yIHJlc3VsdCB0dXBsZXMgKi8KIAlFU3RhdGUJICAg KmVzdGF0ZTsJCQkvKiBleGVjdXRvcidzIHF1ZXJ5LXdpZGUgc3RhdGUgKi8KIAlQbGFuU3RhdGUg ICpwbGFuc3RhdGU7CQkvKiB0cmVlIG9mIHBlci1wbGFuLW5vZGUgc3RhdGUgKi8KKwlib29sCQlw bGFuX3ZhbGlkOwkJLyogaXMgcGxhbnN0YXRlIHRyZWUgZnVsbHkgdmFsaWQ/ICovCiAKIAkvKiBU aGlzIGZpZWxkIGlzIHNldCBieSBFeGVjdXRvclJ1biAqLwogCWJvb2wJCWFscmVhZHlfZXhlY3V0 ZWQ7CS8qIHRydWUgaWYgcHJldmlvdXNseSBleGVjdXRlZCAqLwpAQCAtNTcsNiArNjEsNyBAQCB0 eXBlZGVmIHN0cnVjdCBRdWVyeURlc2MKIAogLyogaW4gcHF1ZXJ5LmMgKi8KIGV4dGVybiBRdWVy eURlc2MgKkNyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCisJCQkJCQkJ CSAgc3RydWN0IENhY2hlZFBsYW4gKmNwbGFuLAogCQkJCQkJCQkgIGNvbnN0IGNoYXIgKnNvdXJj ZVRleHQsCiAJCQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QsCiAJCQkJCQkJCSAgU25hcHNob3Qg Y3Jvc3NjaGVja19zbmFwc2hvdCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4 ZWN1dG9yLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCmluZGV4IGY5ZTZiZjNk NGEuLmE2YWM3NzI0MDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9y LmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaApAQCAtMTksNiArMTksNyBA QAogI2luY2x1ZGUgIm5vZGVzL2xvY2tvcHRpb25zLmgiCiAjaW5jbHVkZSAibm9kZXMvcGFyc2Vu b2Rlcy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMvcGxh bmNhY2hlLmgiCiAKIAogLyoKQEAgLTYxLDYgKzYyLDEwIEBACiAgKiBXSVRIX05PX0RBVEEgaW5k aWNhdGVzIHRoYXQgd2UgYXJlIHBlcmZvcm1pbmcgUkVGUkVTSCBNQVRFUklBTElaRUQgVklFVwog ICogLi4uIFdJVEggTk8gREFUQS4gIEN1cnJlbnRseSwgdGhlIG9ubHkgZWZmZWN0IGlzIHRvIHN1 cHByZXNzIGVycm9ycyBhYm91dAogICogc2Nhbm5pbmcgdW5wb3B1bGF0ZWQgbWF0ZXJpYWxpemVk IHZpZXdzLgorICoKKyAqIEdFVF9MT0NLUyBpbmRpY2F0ZXMgdGhhdCB0aGUgY2FsbGVyIG9mIEV4 ZWN1dG9yU3RhcnQoKSBpcyBleGVjdXRpbmcgYQorICogY2FjaGVkIHBsYW4gd2hpY2ggbXVzdCBi ZSB2YWxpZGF0ZWQgYnkgdGFraW5nIHRoZSByZW1haW5pbmcgbG9ja3MgbmVjZXNzYXJ5CisgKiBm b3IgZXhlY3V0aW9uLgogICovCiAjZGVmaW5lIEVYRUNfRkxBR19FWFBMQUlOX09OTFkJCTB4MDAw MQkvKiBFWFBMQUlOLCBubyBBTkFMWVpFICovCiAjZGVmaW5lIEVYRUNfRkxBR19FWFBMQUlOX0dF TkVSSUMJMHgwMDAyCS8qIEVYUExBSU4gKEdFTkVSSUNfUExBTikgKi8KQEAgLTY5LDYgKzc0LDgg QEAKICNkZWZpbmUgRVhFQ19GTEFHX01BUksJCQkJMHgwMDEwCS8qIG5lZWQgbWFyay9yZXN0b3Jl ICovCiAjZGVmaW5lIEVYRUNfRkxBR19TS0lQX1RSSUdHRVJTCQkweDAwMjAJLyogc2tpcCBBZnRl clRyaWdnZXIgc2V0dXAgKi8KICNkZWZpbmUgRVhFQ19GTEFHX1dJVEhfTk9fREFUQQkJMHgwMDQw CS8qIFJFRlJFU0ggLi4uIFdJVEggTk8gREFUQSAqLworI2RlZmluZSBFWEVDX0ZMQUdfR0VUX0xP Q0tTCQkJMHgwNDAwCS8qIHNob3VsZCB0aGUgZXhlY3V0b3IgbG9jaworCQkJCQkJCQkJCQkgKiBy ZWxhdGlvbnM/ICovCiAKIAogLyogSG9vayBmb3IgcGx1Z2lucyB0byBnZXQgY29udHJvbCBpbiBF eGVjdXRvclN0YXJ0KCkgKi8KQEAgLTI1NSw2ICsyNjIsMTMgQEAgZXh0ZXJuIHZvaWQgRXhlY0Vu ZE5vZGUoUGxhblN0YXRlICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNTaHV0ZG93bk5vZGUoUGxh blN0YXRlICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNTZXRUdXBsZUJvdW5kKGludDY0IHR1cGxl c19uZWVkZWQsIFBsYW5TdGF0ZSAqY2hpbGRfbm9kZSk7CiAKKy8qIElzIHRoZSBjYWNoZWQgcGxh biovCitzdGF0aWMgaW5saW5lIGJvb2wKK0V4ZWNQbGFuU3RpbGxWYWxpZChFU3RhdGUgKmVzdGF0 ZSkKK3sKKwlyZXR1cm4gZXN0YXRlLT5lc19jYWNoZWRwbGFuID09IE5VTEwgPyB0cnVlIDoKKwkJ Q2FjaGVkUGxhblN0aWxsVmFsaWQoZXN0YXRlLT5lc19jYWNoZWRwbGFuKTsKK30KIAogLyogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogICoJCUV4ZWNQcm9jTm9kZQpAQCAtNTg5LDYgKzYwMyw4IEBAIGV4ZWNfcnRfZmV0Y2go SW5kZXggcnRpLCBFU3RhdGUgKmVzdGF0ZSkKIH0KIAogZXh0ZXJuIFJlbGF0aW9uIEV4ZWNHZXRS YW5nZVRhYmxlUmVsYXRpb24oRVN0YXRlICplc3RhdGUsIEluZGV4IHJ0aSk7CitleHRlcm4gdm9p ZCBFeGVjTG9ja1ZpZXdSZWxhdGlvbnMoTGlzdCAqdmlld1JlbGF0aW9ucywgRVN0YXRlICplc3Rh dGUpOworZXh0ZXJuIHZvaWQgRXhlY0xvY2tBcHBlbmROb25MZWFmUmVsYXRpb25zKEVTdGF0ZSAq ZXN0YXRlLCBMaXN0ICphbGxwYXJ0cmVsaWRzKTsKIGV4dGVybiB2b2lkIEV4ZWNJbml0UmVzdWx0 UmVsYXRpb24oRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJ CQkJCQkJCSAgIEluZGV4IHJ0aSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggZDk3ZjVhOGU3 ZC4uZGZhNzI4NDhjNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTYyMyw2ICs2MjMsOCBAQCB0 eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAkJCQkJCQkJCQkgKiBFeGVjUm93TWFya3MsIG9yIE5VTEwg aWYgbm9uZSAqLwogCUxpc3QJICAgKmVzX3J0ZXBlcm1pbmZvczsJLyogTGlzdCBvZiBSVEVQZXJt aXNzaW9uSW5mbyAqLwogCVBsYW5uZWRTdG10ICplc19wbGFubmVkc3RtdDsJLyogbGluayB0byB0 b3Agb2YgcGxhbiB0cmVlICovCisJc3RydWN0IENhY2hlZFBsYW4gKmVzX2NhY2hlZHBsYW47CS8q IENhY2hlZFBsYW4gaWYgcGxhbm5lZHN0bXQgaXMgZnJvbQorCQkJCQkJCQkJCSAqIG9uZSAqLwog CUxpc3QJICAgKmVzX3BhcnRfcHJ1bmVfaW5mb3M7CS8qIFBsYW5uZWRTdG10LnBhcnRQcnVuZUlu Zm9zICovCiAJY29uc3QgY2hhciAqZXNfc291cmNlVGV4dDsJLyogU291cmNlIHRleHQgZnJvbSBR dWVyeURlc2MgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAppbmRleCBkNjFhNjJkYTE5Li45Yjg4OGIw ZDc1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAorKysgYi9zcmMv aW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaApAQCAtMTE2LDYgKzExNiw5IEBAIHR5cGVkZWYgc3Ry dWN0IFBsYW5uZXJHbG9iYWwKIAkvKiAiZmxhdCIgbGlzdCBvZiBSVEVQZXJtaXNzaW9uSW5mb3Mg Ki8KIAlMaXN0CSAgICpmaW5hbHJ0ZXBlcm1pbmZvczsKIAorCS8qICJmbGF0IiBsaXN0IG9mIGlu dGVnZXIgUlQgaW5kZXhlcyAqLworCUxpc3QJICAgKnZpZXdSZWxhdGlvbnM7CisKIAkvKiAiZmxh dCIgbGlzdCBvZiBQbGFuUm93TWFya3MgKi8KIAlMaXN0CSAgICpmaW5hbHJvd21hcmtzOwogCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3NyYy9pbmNsdWRlL25v ZGVzL3BsYW5ub2Rlcy5oCmluZGV4IGEwYmIxNmNmZjQuLjdjYWU2MjRiYmQgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3Bs YW5ub2Rlcy5oCkBAIC03OCw2ICs3OCw5IEBAIHR5cGVkZWYgc3RydWN0IFBsYW5uZWRTdG10CiAJ TGlzdAkgICAqcGVybUluZm9zOwkJLyogbGlzdCBvZiBSVEVQZXJtaXNzaW9uSW5mbyBub2RlcyBm b3IgcnRhYmxlCiAJCQkJCQkJCSAqIGVudHJpZXMgbmVlZGluZyBvbmUgKi8KIAorCUxpc3QJICAg KnZpZXdSZWxhdGlvbnM7CS8qIGludGVnZXIgbGlzdCBvZiBSVCBpbmRleGVzLCBvciBOSUwgaWYg bm8KKwkJCQkJCQkJICogdmlld3MgYXJlIHF1ZXJpZWQgKi8KKwogCS8qIHJ0YWJsZSBpbmRleGVz IG9mIHRhcmdldCByZWxhdGlvbnMgZm9yIElOU0VSVC9VUERBVEUvREVMRVRFL01FUkdFICovCiAJ TGlzdAkgICAqcmVzdWx0UmVsYXRpb25zOwkvKiBpbnRlZ2VyIGxpc3Qgb2YgUlQgaW5kZXhlcywg b3IgTklMICovCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oIGIvc3Jj L2luY2x1ZGUvc3RvcmFnZS9sbWdyLmgKaW5kZXggNGVlOTFlM2NmOS4uNTk4YmYyNjg4YSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmgKKysrIGIvc3JjL2luY2x1ZGUvc3Rv cmFnZS9sbWdyLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgZXh0ZXJuIGJvb2wgQ29uZGl0aW9uYWxMb2Nr UmVsYXRpb24oUmVsYXRpb24gcmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlKTsKIGV4dGVybiB2 b2lkIFVubG9ja1JlbGF0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLCBMT0NLTU9ERSBsb2NrbW9kZSk7 CiBleHRlcm4gYm9vbCBDaGVja1JlbGF0aW9uTG9ja2VkQnlNZShSZWxhdGlvbiByZWxhdGlvbiwg TE9DS01PREUgbG9ja21vZGUsCiAJCQkJCQkJCQlib29sIG9yc3Ryb25nZXIpOworZXh0ZXJuIGJv b2wgQ2hlY2tSZWxMb2NrZWRCeU1lKE9pZCByZWxpZCwgTE9DS01PREUgbG9ja21vZGUsIGJvb2wg b3JzdHJvbmdlcik7CiBleHRlcm4gYm9vbCBMb2NrSGFzV2FpdGVyc1JlbGF0aW9uKFJlbGF0aW9u IHJlbGF0aW9uLCBMT0NLTU9ERSBsb2NrbW9kZSk7CiAKIGV4dGVybiB2b2lkIExvY2tSZWxhdGlv bklkRm9yU2Vzc2lvbihMb2NrUmVsSWQgKnJlbGlkLCBMT0NLTU9ERSBsb2NrbW9kZSk7CmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxz L2xzeXNjYWNoZS5oCmluZGV4IDRmNTQxOGI5NzIuLjMwNzRlNjA0ZGQgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNj YWNoZS5oCkBAIC0xMzksNiArMTM5LDcgQEAgZXh0ZXJuIGNoYXIgZ2V0X3JlbF9yZWxraW5kKE9p ZCByZWxpZCk7CiBleHRlcm4gYm9vbCBnZXRfcmVsX3JlbGlzcGFydGl0aW9uKE9pZCByZWxpZCk7 CiBleHRlcm4gT2lkCWdldF9yZWxfdGFibGVzcGFjZShPaWQgcmVsaWQpOwogZXh0ZXJuIGNoYXIg Z2V0X3JlbF9wZXJzaXN0ZW5jZShPaWQgcmVsaWQpOworZXh0ZXJuIGJvb2wgZ2V0X3JlbF9yZWxp c3NoYXJlZChPaWQgcmVsaWQpOwogZXh0ZXJuIE9pZAlnZXRfdHJhbnNmb3JtX2Zyb21zcWwoT2lk IHR5cGlkLCBPaWQgbGFuZ2lkLCBMaXN0ICp0cmZ0eXBlcyk7CiBleHRlcm4gT2lkCWdldF90cmFu c2Zvcm1fdG9zcWwoT2lkIHR5cGlkLCBPaWQgbGFuZ2lkLCBMaXN0ICp0cmZ0eXBlcyk7CiBleHRl cm4gYm9vbCBnZXRfdHlwaXNkZWZpbmVkKE9pZCB0eXBpZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS91dGlscy9wbGFuY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCmlu ZGV4IGE0NDMxODFkNDEuLjg5OTBmZTcyZTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxz L3BsYW5jYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCkBAIC0yMjEs NiArMjIxLDIwIEBAIGV4dGVybiBDYWNoZWRQbGFuICpHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5T b3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJCSBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAog CQkJCQkJCQkgUmVzb3VyY2VPd25lciBvd25lciwKIAkJCQkJCQkJIFF1ZXJ5RW52aXJvbm1lbnQg KnF1ZXJ5RW52KTsKKworLyoKKyAqIENhY2hlZFBsYW5TdGlsbFZhbGlkCisgKgkJUmV0dXJucyBp ZiBhIGNhY2hlZCBnZW5lcmljIHBsYW4gaXMgc3RpbGwgdmFsaWQKKyAqCisgKiBDYWxsZWQgYnkg dGhlIGV4ZWN1dG9yIG9uIGV2ZXJ5IHJlbGF0aW9uIGxvY2sgdGFrZW4gd2hlbiBpbml0aWFsaXpp bmcgdGhlCisgKiBwbGFuIHRyZWUgaW4gdGhlIENhY2hlZFBsYW4uCisgKi8KK3N0YXRpYyBpbmxp bmUgYm9vbAorQ2FjaGVkUGxhblN0aWxsVmFsaWQoQ2FjaGVkUGxhbiAqY3BsYW4pCit7CisJcmV0 dXJuIGNwbGFuLT5pc192YWxpZDsKK30KKwogZXh0ZXJuIHZvaWQgUmVsZWFzZUNhY2hlZFBsYW4o Q2FjaGVkUGxhbiAqcGxhbiwgUmVzb3VyY2VPd25lciBvd25lcik7CiAKIGV4dGVybiBib29sIENh Y2hlZFBsYW5BbGxvd3NTaW1wbGVWYWxpZGl0eUNoZWNrKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5z b3VyY2UsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaCBiL3NyYy9pbmNs dWRlL3V0aWxzL3BvcnRhbC5oCmluZGV4IGFhMDhiMWUwZmMuLjMzMmEwOGNjYjQgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3Bv cnRhbC5oCkBAIC0xMzgsNiArMTM4LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUG9ydGFsRGF0YQogCVF1 ZXJ5Q29tcGxldGlvbiBxYzsJCQkvKiBjb21tYW5kIGNvbXBsZXRpb24gZGF0YSBmb3IgZXhlY3V0 ZWQgcXVlcnkgKi8KIAlMaXN0CSAgICpzdG10czsJCQkvKiBsaXN0IG9mIFBsYW5uZWRTdG10cyAq LwogCUNhY2hlZFBsYW4gKmNwbGFuOwkJCS8qIENhY2hlZFBsYW4sIGlmIHN0bXRzIGFyZSBmcm9t IG9uZSAqLworCUxpc3QJICAgKnFkZXNjczsJCQkvKiBsaXN0IG9mIFF1ZXJ5RGVzY3MgKi8KKwli b29sCQlwbGFuX3ZhbGlkOwkJLyogYXJlIHBsYW4ocykgcmVhZHkgZm9yIGV4ZWN1dGlvbj8gKi8K KwlNZW1vcnlDb250ZXh0IHF1ZXJ5Q29udGV4dDsJLyogbWVtb3J5IGZvciBRdWVyeURlc2NzIGFu ZCBjaGlsZHJlbiAqLwogCiAJUGFyYW1MaXN0SW5mbyBwb3J0YWxQYXJhbXM7IC8qIHBhcmFtcyB0 byBwYXNzIHRvIHF1ZXJ5ICovCiAJUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnY7IC8qIGVudmly b25tZW50IGZvciBxdWVyeSAqLwpAQCAtMjQyLDYgKzI0NSw3IEBAIGV4dGVybiB2b2lkIFBvcnRh bERlZmluZVF1ZXJ5KFBvcnRhbCBwb3J0YWwsCiAJCQkJCQkJICBDb21tYW5kVGFnIGNvbW1hbmRU YWcsCiAJCQkJCQkJICBMaXN0ICpzdG10cywKIAkJCQkJCQkgIENhY2hlZFBsYW4gKmNwbGFuKTsK K2V4dGVybiB2b2lkIFBvcnRhbFF1ZXJ5RmluaXNoKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKTsKIGV4 dGVybiBQbGFubmVkU3RtdCAqUG9ydGFsR2V0UHJpbWFyeVN0bXQoUG9ydGFsIHBvcnRhbCk7CiBl eHRlcm4gdm9pZCBQb3J0YWxDcmVhdGVIb2xkU3RvcmUoUG9ydGFsIHBvcnRhbCk7CiBleHRlcm4g dm9pZCBQb3J0YWxIYXNoVGFibGVEZWxldGVBbGwodm9pZCk7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvZGVs YXlfZXhlY3V0aW9uL01ha2VmaWxlCmluZGV4IDcwZjI0ZTg0NmQuLjJmY2E4NGQwMjcgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlCisrKyBiL3Ny Yy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlCkBAIC04LDcgKzgsOCBAQCBP QkpTID0gXAogCWRlbGF5X2V4ZWN1dGlvbi5vCiAKIElTT0xBVElPTiA9IHBhcnRpdGlvbi1hZGRp dGlvbiBcCi0JICAgIHBhcnRpdGlvbi1yZW1vdmFsLTEKKwkgICAgcGFydGl0aW9uLXJlbW92YWwt MSBcCisJCWNhY2hlZC1wbGFuLXJlcGxhbgogCiBpZmRlZiBVU0VfUEdYUwogUEdfQ09ORklHID0g cGdfY29uZmlnCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9k ZWxheV9leGVjdXRpb24uYyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5 X2V4ZWN1dGlvbi5jCmluZGV4IDdjZDc2ZWIzNGIuLjVkN2EzZTk4NTggMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jCisrKyBiL3Ny Yy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jCkBAIC0xLDE0 ICsxLDE4IEBACiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCiAgKiBkZWxheV9leGVjdXRpb24uYwot ICoJCVRlc3QgbW9kdWxlIHRvIGFsbG93IGRlbGF5IGJldHdlZW4gcGFyc2luZyBhbmQgZXhlY3V0 aW9uIG9mIGEgcXVlcnkuCisgKgkJVGVzdCBtb2R1bGUgdG8gaW50cm9kdWNlIGRlbGF5IGF0IHZh cmlvdXMgcG9pbnRzIGR1cmluZyBleGVjdXRpb24gb2YgYQorICoJCXF1ZXJ5IHRvIHRlc3QgdGhh dCBleGVjdXRpb24gcHJvY2VlZHMgc2FmZWx5IGluIGxpZ2h0IG9mIGNvbmN1cnJlbnQKKyAqCQlj aGFuZ2VzLgogICoKICAqIFRoZSBkZWxheSBpcyBpbXBsZW1lbnRlZCBieSB0YWtpbmcgYW5kIGlt bWVkaWF0ZWx5IHJlbGVhc2luZyBhIHNwZWNpZmllZAogICogYWR2aXNvcnkgbG9jay4gIElmIGFu b3RoZXIgcHJvY2VzcyBoYXMgcHJldmlvdXNseSB0YWtlbiB0aGF0IGxvY2ssIHRoZQogICogY3Vy cmVudCBwcm9jZXNzIHdpbGwgYmUgYmxvY2tlZCB1bnRpbCB0aGUgbG9jayBpcyByZWxlYXNlZDsg b3RoZXJ3aXNlLAogICogdGhlcmUncyBubyBlZmZlY3QuICBUaGlzIGFsbG93cyBhbiBpc29sYXRp b250ZXN0ZXIgc2NyaXB0IHRvIHJlbGlhYmx5Ci0gKiB0ZXN0IGJlaGF2aW9ycyB3aGVyZSBzb21l IHNwZWNpZmllZCBhY3Rpb24gaGFwcGVucyBpbiBhbm90aGVyIGJhY2tlbmQKLSAqIGJldHdlZW4g cGFyc2luZyBhbmQgZXhlY3V0aW9uIG9mIGFueSBkZXNpcmVkIHF1ZXJ5LgorICogdGVzdCBiZWhh dmlvcnMgd2hlcmUgc29tZSBzcGVjaWZpZWQgYWN0aW9uIGhhcHBlbnMgaW4gYW5vdGhlciBiYWNr ZW5kIGluCisgKiBhIGNvdXBsZSBvZiBjYXNlczogMSkgYmV0d2VlbiBwYXJzaW5nIGFuZCBleGVj dXRpb24gb2YgYW55IGRlc2lyZWQgcXVlcnkKKyAqIHdoZW4gdXNpbmcgdGhlIHBsYW5uZXJfaG9v aywgMikgYmV0d2VlbiBSZXZhbGlkYXRlQ2FjaGVkUXVlcnkoKSBhbmQKKyAqIEV4ZWN1dG9yU3Rh cnQoKSB3aGVuIHVzaW5nIHRoZSBFeGVjdXRvclN0YXJ0X2hvb2suCiAgKgogICogQ29weXJpZ2h0 IChjKSAyMDIwLTIwMjMsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAgKgpA QCAtMjIsNiArMjYsNyBAQAogCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAKKyNpbmNsdWRlICJleGVj dXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgIm9wdGltaXplci9wbGFubmVyLmgiCiAjaW5jbHVk ZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKQEAgLTMyLDkgKzM3 LDExIEBAIFBHX01PRFVMRV9NQUdJQzsKIAogLyogR1VDOiBhZHZpc29yeSBsb2NrIElEIHRvIHVz ZS4gIFplcm8gZGlzYWJsZXMgdGhlIGZlYXR1cmUuICovCiBzdGF0aWMgaW50CXBvc3RfcGxhbm5p bmdfbG9ja19pZCA9IDA7CitzdGF0aWMgaW50CWV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAwOwog Ci0vKiBTYXZlIHByZXZpb3VzIHBsYW5uZXIgaG9vayB1c2VyIHRvIGJlIGEgZ29vZCBjaXRpemVu ICovCisvKiBTYXZlIHByZXZpb3VzIGhvb2sgdXNlcnMgdG8gYmUgYSBnb29kIGNpdGl6ZW4gKi8K IHN0YXRpYyBwbGFubmVyX2hvb2tfdHlwZSBwcmV2X3BsYW5uZXJfaG9vayA9IE5VTEw7CitzdGF0 aWMgRXhlY3V0b3JTdGFydF9ob29rX3R5cGUgcHJldl9FeGVjdXRvclN0YXJ0X2hvb2sgPSBOVUxM OwogCiAKIC8qIHBsYW5uZXJfaG9vayBmdW5jdGlvbiB0byBwcm92aWRlIHRoZSBkZXNpcmVkIGRl bGF5ICovCkBAIC03MCwxMSArNzcsNDEgQEAgZGVsYXlfZXhlY3V0aW9uX3BsYW5uZXIoUXVlcnkg KnBhcnNlLCBjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcsCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAor LyogcGxhbm5lcl9ob29rIGZ1bmN0aW9uIHRvIHByb3ZpZGUgdGhlIGRlc2lyZWQgZGVsYXkgKi8K K3N0YXRpYyB2b2lkCitkZWxheV9leGVjdXRpb25fRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1 ZXJ5RGVzYywgaW50IGVmbGFncykKK3sKKwkvKiBJZiBlbmFibGVkLCBkZWxheSBieSB0YWtpbmcg YW5kIHJlbGVhc2luZyB0aGUgc3BlY2lmaWVkIGxvY2sgKi8KKwlpZiAoZXhlY3V0b3Jfc3RhcnRf bG9ja19pZCAhPSAwKQorCXsKKwkJRGlyZWN0RnVuY3Rpb25DYWxsMShwZ19hZHZpc29yeV9sb2Nr X2ludDgsCisJCQkJCQkJSW50NjRHZXREYXR1bSgoaW50NjQpIGV4ZWN1dG9yX3N0YXJ0X2xvY2tf aWQpKTsKKwkJRGlyZWN0RnVuY3Rpb25DYWxsMShwZ19hZHZpc29yeV91bmxvY2tfaW50OCwKKwkJ CQkJCQlJbnQ2NEdldERhdHVtKChpbnQ2NCkgZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCkpOworCisJ CS8qCisJCSAqIEVuc3VyZSB0aGF0IHdlIG5vdGljZSBhbnkgcGVuZGluZyBpbnZhbGlkYXRpb25z LCBzaW5jZSB0aGUgYWR2aXNvcnkKKwkJICogbG9jayBmdW5jdGlvbnMgZG9uJ3QgZG8gdGhpcy4K KwkJICovCisJCUFjY2VwdEludmFsaWRhdGlvbk1lc3NhZ2VzKCk7CisJfQorCisJLyogTm93IHN0 YXJ0IHRoZSBleGVjdXRvciwgcG9zc2libHkgdmlhIGEgcHJldmlvdXMgaG9vayB1c2VyICovCisJ aWYgKHByZXZfRXhlY3V0b3JTdGFydF9ob29rKQorCQlwcmV2X0V4ZWN1dG9yU3RhcnRfaG9vayhx dWVyeURlc2MsIGVmbGFncyk7CisJZWxzZQorCQlzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5 RGVzYywgZWZsYWdzKTsKKworCWlmIChleGVjdXRvcl9zdGFydF9sb2NrX2lkICE9IDApCisJCWVs b2coTk9USUNFLCAiRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzICVzIiwK KwkJCSBxdWVyeURlc2MtPmNwbGFuLT5pc192YWxpZCA/ICJ2YWxpZCIgOiAibm90IHZhbGlkIik7 Cit9CisKIC8qIE1vZHVsZSBsb2FkIGZ1bmN0aW9uICovCiB2b2lkCiBfUEdfaW5pdCh2b2lkKQog ewotCS8qIFNldCB1cCB0aGUgR1VDIHRvIGNvbnRyb2wgd2hpY2ggbG9jayBpcyB1c2VkICovCisJ LyogU2V0IHVwIEdVQ3MgdG8gY29udHJvbCB3aGljaCBsb2NrIGlzIHVzZWQgKi8KIAlEZWZpbmVD dXN0b21JbnRWYXJpYWJsZSgiZGVsYXlfZXhlY3V0aW9uLnBvc3RfcGxhbm5pbmdfbG9ja19pZCIs CiAJCQkJCQkJIlNldHMgdGhlIGFkdmlzb3J5IGxvY2sgSUQgdG8gYmUgbG9ja2VkL3VubG9ja2Vk IGFmdGVyIHBsYW5uaW5nLiIsCiAJCQkJCQkJIlplcm8gZGlzYWJsZXMgdGhlIGRlbGF5LiIsCkBA IC04NiwxMCArMTIzLDIyIEBAIF9QR19pbml0KHZvaWQpCiAJCQkJCQkJTlVMTCwKIAkJCQkJCQlO VUxMLAogCQkJCQkJCU5VTEwpOwotCisJRGVmaW5lQ3VzdG9tSW50VmFyaWFibGUoImRlbGF5X2V4 ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkIiwKKwkJCQkJCQkiU2V0cyB0aGUgYWR2aXNv cnkgbG9jayBJRCB0byBiZSBsb2NrZWQvdW5sb2NrZWQgYmVmb3JlIHN0YXJ0aW5nIGV4ZWN1dGlv bi4iLAorCQkJCQkJCSJaZXJvIGRpc2FibGVzIHRoZSBkZWxheS4iLAorCQkJCQkJCSZleGVjdXRv cl9zdGFydF9sb2NrX2lkLAorCQkJCQkJCTAsCisJCQkJCQkJMCwgSU5UX01BWCwKKwkJCQkJCQlQ R0NfVVNFUlNFVCwKKwkJCQkJCQkwLAorCQkJCQkJCU5VTEwsCisJCQkJCQkJTlVMTCwKKwkJCQkJ CQlOVUxMKTsKIAlNYXJrR1VDUHJlZml4UmVzZXJ2ZWQoImRlbGF5X2V4ZWN1dGlvbiIpOwogCi0J LyogSW5zdGFsbCBvdXIgaG9vayAqLworCS8qIEluc3RhbGwgb3VyIGhvb2tzLiAqLwogCXByZXZf cGxhbm5lcl9ob29rID0gcGxhbm5lcl9ob29rOwogCXBsYW5uZXJfaG9vayA9IGRlbGF5X2V4ZWN1 dGlvbl9wbGFubmVyOworCXByZXZfRXhlY3V0b3JTdGFydF9ob29rID0gRXhlY3V0b3JTdGFydF9o b29rOworCUV4ZWN1dG9yU3RhcnRfaG9vayA9IGRlbGF5X2V4ZWN1dGlvbl9FeGVjdXRvclN0YXJ0 OwogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZXhwZWN0 ZWQvY2FjaGVkLXBsYW4tcmVwbGFuLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0 aW9uL2V4cGVjdGVkL2NhY2hlZC1wbGFuLXJlcGxhbi5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMC4uNGY0NTBiOWQ5YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0 L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2V4cGVjdGVkL2NhY2hlZC1wbGFuLXJlcGxhbi5vdXQK QEAgLTAsMCArMSwxMTcgQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCAyIHNlc3Npb25zCisKK3N0 YXJ0aW5nIHBlcm11dGF0aW9uOiBzMXByZXAgczJsb2NrIHMxZXhlYyBzMmRyb3BpIHMydW5sb2Nr CitzdGVwIHMxcHJlcDogU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsK KwkJICBQUkVQQVJFIHEgQVMgU0VMRUNUICogRlJPTSBmb292IFdIRVJFIGEgPSAkMTsKKwkJICBF WFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcSAoMSk7CitRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KK0FwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CisgIFN1YnBsYW5zIFJlbW92ZWQ6IDEgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgQml0 bWFwIEhlYXAgU2NhbiBvbiBmb28xMSBmb29fMSAgICAgICAKKyAgICAgICAgUmVjaGVjayBDb25k OiAoYSA9ICQxKSAgICAgICAgICAgICAgCisgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBv biBmb28xMV9hX2lkeAorICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9ICQxKSAgICAgICAg ICAKKyg2IHJvd3MpCisKK3N0ZXAgczJsb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfbG9jaygxMjM0 NSk7CitwZ19hZHZpc29yeV9sb2NrCistLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAg CisoMSByb3cpCisKK3N0ZXAgczFleGVjOiBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNF VCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVY UExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxICgxKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMmRy b3BpOiBEUk9QIElOREVYIGZvbzExX2E7CitzdGVwIHMydW5sb2NrOiBTRUxFQ1QgcGdfYWR2aXNv cnlfdW5sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X3VubG9jaworLS0tLS0tLS0tLS0tLS0tLS0t Cit0ICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMWV4ZWM6IDwuLi4gY29tcGxl dGVkPgorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBp cyBub3QgdmFsaWQKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hl ZFBsYW4gaXMgdmFsaWQKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAKKyAgU3Vi cGxhbnMgUmVtb3ZlZDogMSAgICAgICAgCisgIC0+ICBTZXEgU2NhbiBvbiBmb28xMSBmb29fMQor ICAgICAgICBGaWx0ZXI6IChhID0gJDEpICAgICAKKyg0IHJvd3MpCisKKworc3RhcnRpbmcgcGVy bXV0YXRpb246IHMxcHJlcDIgczJsb2NrIHMxZXhlYzIgczJkcm9waSBzMnVubG9jaworc3RlcCBz MXByZXAyOiBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworCQkgIFNF VCBlbmFibGVfcGFydGl0aW9ud2lzZV9hZ2dyZWdhdGUgPSBvbjsKKwkJICBTRVQgZW5hYmxlX3Bh cnRpdGlvbndpc2Vfam9pbiA9IG9uOworCQkgIFBSRVBBUkUgcTIgQVMgU0VMRUNUIHQxLmEsIGNv dW50KHQyLmIpIEZST00gZm9vIHQxLCBmb28gdDIgV0hFUkUgdDEuYSA9IHQyLmEgR1JPVVAgQlkg MTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTI7CitzMTogTk9USUNFOiAgRmlu aXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCitBcHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCisgIC0+ICBHcm91cEFnZ3JlZ2F0ZSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIEdyb3VwIEtleTogdDEuYSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIC0+ICBNZXJnZSBKb2luICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIE1l cmdlIENvbmQ6ICh0MS5hID0gdDIuYSkgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAg ICAgICAgIC0+ICBJbmRleCBPbmx5IFNjYW4gdXNpbmcgZm9vMTFfYV9pZHggb24gZm9vMTEgdDEg CisgICAgICAgICAgICAgIC0+ICBNYXRlcmlhbGl6ZSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC0+ICBJbmRleCBTY2FuIHVzaW5nIGZvbzEx X2FfaWR4IG9uIGZvbzExIHQyCisgIC0+ICBHcm91cEFnZ3JlZ2F0ZSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIEdyb3VwIEtleTogdDFfMS5hICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIC0+ICBNZXJnZSBK b2luICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAg ICAgIE1lcmdlIENvbmQ6ICh0MV8xLmEgPSB0Ml8xLmEpICAgICAgICAgICAgICAgICAgICAgCisg ICAgICAgICAgICAgIC0+ICBTb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCisgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0MV8xLmEgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBmb28y IHQxXzEgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIC0+ICBTb3J0ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIFNv cnQgS2V5OiB0Ml8xLmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBmb28yIHQyXzEgICAgICAgICAgICAgICAgICAgCisoMTgg cm93cykKKworc3RlcCBzMmxvY2s6IFNFTEVDVCBwZ19hZHZpc29yeV9sb2NrKDEyMzQ1KTsKK3Bn X2Fkdmlzb3J5X2xvY2sKKy0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAKKygxIHJv dykKKworc3RlcCBzMWV4ZWMyOiBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxh eV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4g KENPU1RTIE9GRikgRVhFQ1VURSBxMjsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMmRyb3BpOiBEUk9Q IElOREVYIGZvbzExX2E7CitzdGVwIHMydW5sb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2Nr KDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X3VubG9jaworLS0tLS0tLS0tLS0tLS0tLS0tCit0ICAgICAg ICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMWV4ZWMyOiA8Li4uIGNvbXBsZXRlZD4KK3Mx OiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgbm90IHZh bGlkCitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlz IHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQXBwZW5kICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIC0+ICBHcm91cEFnZ3JlZ2F0ZSAg ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgR3JvdXAgS2V5OiB0MS5hICAgICAgICAg ICAgICAgICAgICAgIAorICAgICAgICAtPiAgTWVyZ2UgSm9pbiAgICAgICAgICAgICAgICAgICAg ICAgCisgICAgICAgICAgICAgIE1lcmdlIENvbmQ6ICh0MS5hID0gdDIuYSkgICAgICAKKyAgICAg ICAgICAgICAgLT4gIFNvcnQgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg ICAgICBTb3J0IEtleTogdDEuYSAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBmb28xMSB0MSAKKyAgICAgICAgICAgICAgLT4gIFNvcnQgICAgICAgICAgICAg ICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogdDIuYSAgICAgICAgICAg CisgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBmb28xMSB0MiAKKyAgLT4gIEdy b3VwQWdncmVnYXRlICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBHcm91cCBLZXk6 IHQxXzEuYSAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIC0+ICBNZXJnZSBKb2luICAgICAg ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgTWVyZ2UgQ29uZDogKHQxXzEuYSA9IHQy XzEuYSkgIAorICAgICAgICAgICAgICAtPiAgU29ydCAgICAgICAgICAgICAgICAgICAgICAgCisg ICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0MV8xLmEgICAgICAgICAKKyAgICAgICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzIgdDFfMQorICAgICAgICAgICAgICAtPiAgU29y dCAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0 Ml8xLmEgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzIg dDJfMQorKDIxIHJvd3MpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhl Y3V0aW9uL3NwZWNzL2NhY2hlZC1wbGFuLXJlcGxhbi5zcGVjIGIvc3JjL3Rlc3QvbW9kdWxlcy9k ZWxheV9leGVjdXRpb24vc3BlY3MvY2FjaGVkLXBsYW4tcmVwbGFuLnNwZWMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNjdjZmVkNzA0NAotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL3NwZWNzL2NhY2hlZC1wbGFuLXJlcGxh bi5zcGVjCkBAIC0wLDAgKzEsNTAgQEAKKyMgVGVzdCB0byBjaGVjayB0aGF0IGludmFsaWRhdGlv biBvZiBhIGNhY2hlZCBwbGFuIGR1cmluZyBFeGVjdXRvclN0YXJ0CisjIGNvcnJlY3RseSB0cmln Z2VycyByZXBsYW5uaW5nIGFuZCByZS1leGVjdXRpb24uCisKK3NldHVwCit7CisgIENSRUFURSBU QUJMRSBmb28gKGEgaW50LCBiIHRleHQpIFBBUlRJVElPTiBCWSBMSVNUKGEpOworICBDUkVBVEUg VEFCTEUgZm9vMSBQQVJUSVRJT04gT0YgZm9vIEZPUiBWQUxVRVMgSU4gKDEpIFBBUlRJVElPTiBC WSBMSVNUIChhKTsKKyAgQ1JFQVRFIFRBQkxFIGZvbzExIFBBUlRJVElPTiBPRiBmb28xIEZPUiBW QUxVRVMgSU4gKDEpOworICBDUkVBVEUgSU5ERVggZm9vMTFfYSBPTiBmb28xIChhKTsKKyAgQ1JF QVRFIFRBQkxFIGZvbzIgUEFSVElUSU9OIE9GIGZvbyBGT1IgVkFMVUVTIElOICgyKTsKKyAgQ1JF QVRFIFZJRVcgZm9vdiBBUyBTRUxFQ1QgKiBGUk9NIGZvbzsKK30KKwordGVhcmRvd24KK3sKKyAg RFJPUCBWSUVXIGZvb3Y7CisgIERST1AgVEFCTEUgZm9vOworfQorCitzZXNzaW9uICJzMSIKKyMg Q3JlYXRlcyBhIHByZXBhcmVkIHN0YXRlbWVudCBhbmQgZm9yY2VzIGNyZWF0aW9uIG9mIGEgZ2Vu ZXJpYyBwbGFuCitzdGVwICJzMXByZXAiICAgeyBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2Vf Z2VuZXJpY19wbGFuOworCQkgIFBSRVBBUkUgcSBBUyBTRUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUg YSA9ICQxOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxICgxKTsgfQorCitzdGVw ICJzMXByZXAyIiAgIHsgU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsK KwkJICBTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2VfYWdncmVnYXRlID0gb247CisJCSAgU0VUIGVu YWJsZV9wYXJ0aXRpb253aXNlX2pvaW4gPSBvbjsKKwkJICBQUkVQQVJFIHEyIEFTIFNFTEVDVCB0 MS5hLCBjb3VudCh0Mi5iKSBGUk9NIGZvbyB0MSwgZm9vIHQyIFdIRVJFIHQxLmEgPSB0Mi5hIEdS T1VQIEJZIDE7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEyOyB9CisjIEV4ZWN1 dGVzIGEgZ2VuZXJpYyBwbGFuCitzdGVwICJzMWV4ZWMiCXsgTE9BRCAnZGVsYXlfZXhlY3V0aW9u JzsKKwkJICBTRVQgZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAxMjM0 NTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcSAoMSk7IH0KK3N0ZXAgInMxZXhl YzIiCXsgTE9BRCAnZGVsYXlfZXhlY3V0aW9uJzsKKwkJICBTRVQgZGVsYXlfZXhlY3V0aW9uLmV4 ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAxMjM0NTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVY RUNVVEUgcTI7IH0KKworc2Vzc2lvbiAiczIiCitzdGVwICJzMmxvY2siCXsgU0VMRUNUIHBnX2Fk dmlzb3J5X2xvY2soMTIzNDUpOyB9CitzdGVwICJzMnVubG9jayIJeyBTRUxFQ1QgcGdfYWR2aXNv cnlfdW5sb2NrKDEyMzQ1KTsgfQorc3RlcCAiczJkcm9waSIJeyBEUk9QIElOREVYIGZvbzExX2E7 IH0KKworIyBXaGlsZSAiczFleGVjIiB3YWl0cyB0byBhY3F1aXJlIHRoZSBhZHZpc29yeSBsb2Nr LCAiczJkcm9wIiBpcyBhYmxlIHRvIGRyb3AKKyMgdGhlIGluZGV4IGJlaW5nIHVzZWQgaW4gdGhl IGNhY2hlZCBwbGFuIGZvciBgcWAsIHNvIHdoZW4gInMxZXhlYyIgaXMgdGhlbgorIyB1bmJsb2Nr ZWQgYW5kIGluaXRpYWxpemVzIHRoZSBjYWNoZWQgcGxhbiBmb3IgZXhlY3V0aW9uLCBpdCBkZXRl Y3RzIHRoZQorIyBjb25jdXJyZW50IGluZGV4IGRyb3AgYW5kIGNhdXNlcyB0aGUgY2FjaGVkIHBs YW4gdG8gYmUgZGlzY2FyZGVkIGFuZAorIyByZWNyZWF0ZWQgd2l0aG91dCB0aGUgaW5kZXguCitw ZXJtdXRhdGlvbiAiczFwcmVwIiAiczJsb2NrIiAiczFleGVjIiAiczJkcm9waSIgInMydW5sb2Nr IgorcGVybXV0YXRpb24gInMxcHJlcDIiICJzMmxvY2siICJzMWV4ZWMyIiAiczJkcm9waSIgInMy dW5sb2NrIgotLSAKMi4zNS4zCgo= --000000000000c4bc3705f7dd6369--