Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qdoaj-004p4x-0C for pgsql-hackers@arkaria.postgresql.org; Wed, 06 Sep 2023 09:12:53 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1qdoah-008eVu-Pm for pgsql-hackers@arkaria.postgresql.org; Wed, 06 Sep 2023 09:12:51 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qdoag-008eVH-Nb for pgsql-hackers@lists.postgresql.org; Wed, 06 Sep 2023 09:12:51 +0000 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qdoac-003200-IY for pgsql-hackers@postgresql.org; Wed, 06 Sep 2023 09:12:49 +0000 Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-26fc9e49859so2217459a91.0 for ; Wed, 06 Sep 2023 02:12:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693991565; x=1694596365; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=fmha8THdDmTb20fF+bpq0xqxNoiw5WNbTrWue7TPiRQ=; b=TMlNpbPmGpDtSW+7aaWttNMMwxyVYMcvHK1ZKDeQ4MmyeQcPqHfv2wlRT1vCd3O+uJ u3JpyLP9abxg2dY8qBhRb1kTvXBCxMW9gC45YgryRa9PXpiGrC6zVVFVW58V/rC2EQoC bC/Keir4l6sDK7t/HF60iCkYzqDeWmlyGVMo1sz8pK1/4OwgByeRwHOC+0V2LdW5s78y VDdWcmc3AUjze2dh5Co+SjwnqXBOaI0NvLAJAabiGN7z6UOjmTWtVs+M6cbTczCL58kT A10QdydAudYrzyISKc5NMNlg7uHWlZNo6A2XjywOW4UuyDBjPrWicU10ycF7UdUIv1iA n2OQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693991565; x=1694596365; 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=fmha8THdDmTb20fF+bpq0xqxNoiw5WNbTrWue7TPiRQ=; b=hNUsDAhvv2HB6xmJCTKO0wYbltMV1ppPVd4DhLD41Z7wcI68AkxYvs9xS6HKP0V+s9 sbTyvFhYmULdh3whkWaDOThogEmCcZLohDXMEABAV0K16k14oAZmnxhCsmciyYp7e4Vd AiS9LCE1DMYrG8e78BJGFk52CBDysaREKyuTtFO/ycwFfsiY0Q6jZ6IWKwmRokRFejy7 +EKl0yS0LAEvnlUEby5juduWROfWB7i+/gzWfgazkDTcYMBt2AkDc50B2vPOpQGWJz4d ZY9v2gJKZETU6i/VFM7+CqvbPZlN5lApsRpJE9chp5SCAAYJK04BGlDrXFl8CYdpIFpM YQXQ== X-Gm-Message-State: AOJu0YzsA2SPuuVX+0bzGXzvviBeAGduvmFL6FrGPnFFAexd5WCZnzrV znFNW6cPZCBSXba/nqcatbN3aRc/6Bfc+ZdnAoY= X-Google-Smtp-Source: AGHT+IE49adOZfhjvjUpGd5TEgn3HnVIslimir7u6uRwwTuwnC1pMh1CFFhnzr9PYOM/Fy/oJk2tsa+CX/lImUqFdoc= X-Received: by 2002:a17:90a:138e:b0:268:3f6d:9751 with SMTP id i14-20020a17090a138e00b002683f6d9751mr12522254pja.23.1693991565434; Wed, 06 Sep 2023 02:12:45 -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> <1274885.1680558101@sss.pgh.pa.us> <9D23D8BB-83EE-451E-95C1-CF42ADB76869@yesql.se> In-Reply-To: From: Amit Langote Date: Wed, 6 Sep 2023 18:12:28 +0900 Message-ID: Subject: Re: generic plans and "initial" pruning To: Robert Haas Cc: Alvaro Herrera , Andres Freund , Daniel Gustafsson , David Rowley , Jacob Champion , PostgreSQL Hackers , Thom Brown , Tom Lane Content-Type: multipart/mixed; boundary="00000000000082dd050604ad25e6" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000082dd050604ad25e6 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Sep 5, 2023 at 11:41=E2=80=AFPM Robert Haas = wrote: > On Tue, Sep 5, 2023 at 3:13=E2=80=AFAM Amit Langote wrote: > > Attached 0001 removes unnecessary cleanup calls from ExecEnd*() routine= s. > > It also adds a few random Assert()s to verify that unrelated pointers > are not NULL. I suggest that it shouldn't do that. OK, removed. > The commit message doesn't mention the removal of the calls to > ExecDropSingleTupleTableSlot. It's not clear to me why that's OK and I > think it would be nice to mention it in the commit message, assuming > that it is in fact OK. That is not OK, so I dropped their removal. I think I confused them with slots in other functions initialized with ExecInitExtraTupleSlot() that *are* put into the estate. > I suggest changing the subject line of the commit to something like > "Remove obsolete executor cleanup code." Sure. > > 0002 adds NULLness checks in ExecEnd*() routines on some pointers that > > may not be initialized by the corresponding ExecInit*() routines in > > the case where it returns early. > > I think you should only add these where it's needed. For example, I > think list_free_deep(NIL) is fine. OK, done. > The changes to ExecEndForeignScan look like they include stuff that > belongs in 0001. Oops, yes. Moved to 0001. > Personally, I prefer explicit NULL-tests i.e. if (x !=3D NULL) to > implicit ones like if (x), but opinions vary. I agree, so changed all the new tests to use (x !=3D NULL) form. Typically, I try to stick with whatever style is used in the nearby code, though I can see both styles being used in the ExecEnd*() routines. I opted to use the style that we both happen to prefer. Attached updated patches. Thanks for the review. -- Thanks, Amit Langote EDB: http://www.enterprisedb.com --00000000000082dd050604ad25e6 Content-Type: application/octet-stream; name="v47-0005-Add-field-to-store-parent-relids-to-Append-Merge.patch" Content-Disposition: attachment; filename="v47-0005-Add-field-to-store-parent-relids-to-Append-Merge.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lm7ic0ob3 RnJvbSAzMmI3MDZkNjFlNDUxNzY1NGU4NTY3NjQ3NzY3NmNjMTFmNjgyZjYzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNiBTZXAgMjAyMyAxNzo1NDowMiArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ3 IDUvOF0gQWRkIGZpZWxkIHRvIHN0b3JlIHBhcmVudCByZWxpZHMgdG8KIEFwcGVuZC9NZXJnZUFw cGVuZAoKVGhlcmUncyBubyB3YXkgY3VycmVudGx5IGluIHRoZSBleGVjdXRvciB0byB0ZWxsIGlm IHRoZSBjaGlsZApzdWJwbGFucyBvZiBBcHBlbmQvTWVyZ2VBcHBlbmQgYXJlIHNjYW5uaW5nIHBh cnRpdGlvbnMsIGFuZCBpZgp0aGV5IGluZGVlZCBkbywgd2hhdCB0aGUgUlQgaW5kZXhlcyBvZiB0 aGVpciBwYXJlbnQvYW5jZXN0b3IgdGFibGVzCmFyZS4gIEV4ZWN1dG9yIGRvZXNuJ3QgbmVlZCB0 byBzZWUgdGhlaXIgUlQgaW5kZXhlcyBleGNlcHQgZm9yCnJ1bi10aW1lIHBydW5pbmcsIGluIHdo aWNoIGNhc2UgdGhleSBjYW4gY2FuIGJlIGZvdW5kIGluIHRoZQpQYXJ0aXRpb25QcnVuZUluZm8s IGJ1dCBhIGZ1dHVyZSBjb21taXQgd2lsbCBjcmVhdGUgYSBuZWVkIGZvcgp0aGVtIHRvIGJlIGF2 YWlsYWJsZSBhdCBhbGwgdGltZXMgZm9yIHRoZSBwdXJwb3NlIG9mIGxvY2tpbmcKdGhvc2UgcGFy ZW50L2FuY2VzdG9yIHRhYmxlcyB3aGVuIGV4ZWN1dGluZyBhIGNhY2hlZCBwbGFuLgoKVGhlIGNv ZGUgdG8gbG9vayB1cCBwYXJ0aXRpb25lZCBwYXJlbnQgcmVsaWRzIGZvciBhIGdpdmVuIGxpc3Qg b2YKcGFydGl0aW9uIHNjYW4gc3VicGF0aHMgb2YgYW4gQXBwZW5kL01lcmdlQXBwZW5kIGlzIGFs cmVhZHkgcHJlc2VudAppbiBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oKSBidXQgaXQncyBsb2Nh bCB0byBwYXJ0cHJ1bmUuYy4gIFRoaXMKY29tbWl0IHJlZmFjdG9ycyB0aGF0IGNvZGUgaW50byBp dHMgb3duIGZ1bmN0aW9uIGNhbGxlZAphZGRfYXBwZW5kX3N1YnBhdGhfcGFydHJlbGlkcygpIGRl ZmluZWQgaW4gYXBwZW5kaW5mby5jIGFuZApnZW5lcmFsaXplcyBpdCB0byBjb25zaWRlciBjaGls ZCBqb2luIGFuZCBhZ2dyZWdhdGUgcGF0aHMuICBUbwpmYWNpbGl0YXRlIGxvb2tpbmcgdXAgb2Yg cGFyZW50IHJlbHMgb2YgY2hpbGQgZ3JvdXBpbmcgcmVscyBpbgphZGRfYXBwZW5kX3N1YnBhdGhf cGFydHJlbGlkcygpLCBwYXJlbnQgbGlua3MgYXJlIG5vdyBhbHNvIHNldCBpbgp0aGUgUmVsT3B0 SW5mb3Mgb2YgY2hpbGQgZ3JvdXBpbmcgcmVscyB0b28sIGxpa2UgdGhleSBhcmUgaW4KdGhvc2Ug b2YgY2hpbGQgYmFzZSBhbmQgam9pbiByZWxzLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3Iu ZXMvbS9DQStIaXdxRkdrTVNnZTZUZ0M5S1F6ZGUwb2hwQXljTFF1Vjdvb2l0RUVwYktCME9fbWdA bWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFu LmMgfCAgNDEgKysrKysrLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyAg ICB8ICAgMyArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgICAgfCAgIDQg Kwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5kaW5mby5jIHwgMTM0ICsrKysrKysr KysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jICAg IHwgMTI0ICsrKy0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rl cy5oICAgICAgICAgICB8ICAxNCArKysKIHNyYy9pbmNsdWRlL29wdGltaXplci9hcHBlbmRpbmZv LmggICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmggICAg fCAgIDMgKy0KIDggZmlsZXMgY2hhbmdlZCwgMjAzIGluc2VydGlvbnMoKyksIDEyMyBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFu LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKaW5kZXggMzRjYTZk NGFjMi4uZDFmNGY2MDZiZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v Y3JlYXRlcGxhbi5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4u YwpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIm5vZGVzL2V4dGVuc2libGUuaCIKICNpbmNs dWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKKyNp bmNsdWRlICJvcHRpbWl6ZXIvYXBwZW5kaW5mby5oIgogI2luY2x1ZGUgIm9wdGltaXplci9jbGF1 c2VzLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL2Nvc3QuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIv b3B0aW1pemVyLmgiCkBAIC0xMjI5LDYgKzEyMzAsNyBAQCBjcmVhdGVfYXBwZW5kX3BsYW4oUGxh bm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJlc3RfcGF0aCwgaW50IGZsYWdzKQogCU9pZAkJ ICAgKm5vZGVDb2xsYXRpb25zID0gTlVMTDsKIAlib29sCSAgICpub2RlTnVsbHNGaXJzdCA9IE5V TEw7CiAJYm9vbAkJY29uc2lkZXJfYXN5bmMgPSBmYWxzZTsKKwlMaXN0CSAgICphbGxwYXJ0cmVs aWRzID0gTklMOwogCiAJLyoKIAkgKiBUaGUgc3VicGF0aHMgbGlzdCBjb3VsZCBiZSBlbXB0eSwg aWYgZXZlcnkgY2hpbGQgd2FzIHByb3ZlbiBlbXB0eSBieQpAQCAtMTM3MCwxNSArMTM3MiwyMyBA QCBjcmVhdGVfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJlc3Rf cGF0aCwgaW50IGZsYWdzKQogCQkJKytuYXN5bmNwbGFuczsKIAkJfQogCisJCS8qCisJCSAqIEZp bmQgcGFydGl0aW9uZWQgcGFyZW50IHJlbChzKSBvZiB0aGUgc3VicGF0aCdzIHJlbChzKS4KKwkJ ICovCisJCWFsbHBhcnRyZWxpZHMgPSBhZGRfYXBwZW5kX3N1YnBhdGhfcGFydHJlbGlkcyhyb290 LCBzdWJwYXRoLCByZWwsCisJCQkJCQkJCQkJCQkJICBhbGxwYXJ0cmVsaWRzKTsKKwogCQlzdWJw bGFucyA9IGxhcHBlbmQoc3VicGxhbnMsIHN1YnBsYW4pOwogCX0KIAorCXBsYW4tPmFsbHBhcnRy ZWxpZHMgPSBhbGxwYXJ0cmVsaWRzOworCiAJLyoKLQkgKiBJZiBhbnkgcXVhbHMgZXhpc3QsIHRo ZXkgbWF5IGJlIHVzZWZ1bCB0byBwZXJmb3JtIGZ1cnRoZXIgcGFydGl0aW9uCi0JICogcHJ1bmlu ZyBkdXJpbmcgZXhlY3V0aW9uLiAgR2F0aGVyIGluZm9ybWF0aW9uIG5lZWRlZCBieSB0aGUgZXhl Y3V0b3IgdG8KLQkgKiBkbyBwYXJ0aXRpb24gcHJ1bmluZy4KKwkgKiBJZiBzY2FubmluZyBwYXJ0 aXRpb25zLCBjaGVjayBpZiB0aGVyZSBhcmUgcXVhbHMgdGhhdCBtYXkgYmUgdXNlZnVsIHRvCisJ ICogcGVyZm9ybSBmdXJ0aGVyIHBhcnRpdGlvbiBwcnVuaW5nIGR1cmluZyBleGVjdXRpb24uICBH YXRoZXIgaW5mb3JtYXRpb24KKwkgKiBuZWVkZWQgYnkgdGhlIGV4ZWN1dG9yIHRvIGRvIHBhcnRp dGlvbiBwcnVuaW5nLgogCSAqLwotCWlmIChlbmFibGVfcGFydGl0aW9uX3BydW5pbmcpCisJaWYg KGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZyAmJiBhbGxwYXJ0cmVsaWRzICE9IE5JTCkKIAl7CiAJ CUxpc3QJICAgKnBydW5lcXVhbDsKIApAQCAtMTM5OSw3ICsxNDA5LDggQEAgY3JlYXRlX2FwcGVu ZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBBcHBlbmRQYXRoICpiZXN0X3BhdGgsIGludCBmbGFn cykKIAkJCXBhcnRwcnVuZWluZm8gPQogCQkJCW1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhyb290 LCByZWwsCiAJCQkJCQkJCQkJIGJlc3RfcGF0aC0+c3VicGF0aHMsCi0JCQkJCQkJCQkJIHBydW5l cXVhbCk7CisJCQkJCQkJCQkJIHBydW5lcXVhbCwKKwkJCQkJCQkJCQkgYWxscGFydHJlbGlkcyk7 CiAJfQogCiAJcGxhbi0+YXBwZW5kcGxhbnMgPSBzdWJwbGFuczsKQEAgLTE0NDUsNiArMTQ1Niw3 IEBAIGNyZWF0ZV9tZXJnZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgTWVyZ2VBcHBl bmRQYXRoICpiZXN0X3BhdGgsCiAJTGlzdENlbGwgICAqc3VicGF0aHM7CiAJUmVsT3B0SW5mbyAq cmVsID0gYmVzdF9wYXRoLT5wYXRoLnBhcmVudDsKIAlQYXJ0aXRpb25QcnVuZUluZm8gKnBhcnRw cnVuZWluZm8gPSBOVUxMOworCUxpc3QJICAgKmFsbHBhcnRyZWxpZHMgPSBOSUw7CiAKIAkvKgog CSAqIFdlIGRvbid0IGhhdmUgdGhlIGFjdHVhbCBjcmVhdGlvbiBvZiB0aGUgTWVyZ2VBcHBlbmQg bm9kZSBzcGxpdCBvdXQKQEAgLTE1MzQsMTUgKzE1NDYsMjMgQEAgY3JlYXRlX21lcmdlX2FwcGVu ZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBNZXJnZUFwcGVuZFBhdGggKmJlc3RfcGF0aCwKIAkJ CXN1YnBsYW4gPSAoUGxhbiAqKSBzb3J0OwogCQl9CiAKKwkJLyoKKwkJICogRmluZCBwYXJ0aXRp b25lZCBwYXJlbnQgcmVsKHMpIG9mIHRoZSBzdWJwYXRoJ3MgcmVsKHMpLgorCQkgKi8KKwkJYWxs cGFydHJlbGlkcyA9IGFkZF9hcHBlbmRfc3VicGF0aF9wYXJ0cmVsaWRzKHJvb3QsIHN1YnBhdGgs IHJlbCwKKwkJCQkJCQkJCQkJCQkgIGFsbHBhcnRyZWxpZHMpOworCiAJCXN1YnBsYW5zID0gbGFw cGVuZChzdWJwbGFucywgc3VicGxhbik7CiAJfQogCisJbm9kZS0+YWxscGFydHJlbGlkcyA9IGFs bHBhcnRyZWxpZHM7CisKIAkvKgotCSAqIElmIGFueSBxdWFscyBleGlzdCwgdGhleSBtYXkgYmUg dXNlZnVsIHRvIHBlcmZvcm0gZnVydGhlciBwYXJ0aXRpb24KLQkgKiBwcnVuaW5nIGR1cmluZyBl eGVjdXRpb24uICBHYXRoZXIgaW5mb3JtYXRpb24gbmVlZGVkIGJ5IHRoZSBleGVjdXRvciB0bwot CSAqIGRvIHBhcnRpdGlvbiBwcnVuaW5nLgorCSAqIElmIHNjYW5uaW5nIHBhcnRpdGlvbnMsIGNo ZWNrIGlmIHRoZXJlIGFyZSBxdWFscyB0aGF0IG1heSBiZSB1c2VmdWwgdG8KKwkgKiBwZXJmb3Jt IGZ1cnRoZXIgcGFydGl0aW9uIHBydW5pbmcgZHVyaW5nIGV4ZWN1dGlvbi4gIEdhdGhlciBpbmZv cm1hdGlvbgorCSAqIG5lZWRlZCBieSB0aGUgZXhlY3V0b3IgdG8gZG8gcGFydGl0aW9uIHBydW5p bmcuCiAJICovCi0JaWYgKGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZykKKwlpZiAoZW5hYmxlX3Bh cnRpdGlvbl9wcnVuaW5nICYmIGFsbHBhcnRyZWxpZHMgIT0gTklMKQogCXsKIAkJTGlzdAkgICAq cHJ1bmVxdWFsOwogCkBAIC0xNTU0LDcgKzE1NzQsOCBAQCBjcmVhdGVfbWVyZ2VfYXBwZW5kX3Bs YW4oUGxhbm5lckluZm8gKnJvb3QsIE1lcmdlQXBwZW5kUGF0aCAqYmVzdF9wYXRoLAogCQlpZiAo cHJ1bmVxdWFsICE9IE5JTCkKIAkJCXBhcnRwcnVuZWluZm8gPSBtYWtlX3BhcnRpdGlvbl9wcnVu ZWluZm8ocm9vdCwgcmVsLAogCQkJCQkJCQkJCQkJCSBiZXN0X3BhdGgtPnN1YnBhdGhzLAotCQkJ CQkJCQkJCQkJCSBwcnVuZXF1YWwpOworCQkJCQkJCQkJCQkJCSBwcnVuZXF1YWwsCisJCQkJCQkJ CQkJCQkJIGFsbHBhcnRyZWxpZHMpOwogCX0KIAogCW5vZGUtPm1lcmdlcGxhbnMgPSBzdWJwbGFu czsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRleCA0NGVmYjFmNGViLi5mOTdi YzA5MTEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC03ODU1LDggKzc4 NTUsMTEgQEAgY3JlYXRlX3BhcnRpdGlvbndpc2VfZ3JvdXBpbmdfcGF0aHMoUGxhbm5lckluZm8g KnJvb3QsCiAJCQkJCQkJCQkgICBhZ2dfY29zdHMsIGdkLCAmY2hpbGRfZXh0cmEsCiAJCQkJCQkJ CQkgICAmY2hpbGRfcGFydGlhbGx5X2dyb3VwZWRfcmVsKTsKIAorCQkvKiBNYXJrIGFzIGNoaWxk IG9mIGdyb3VwZWRfcmVsLiAqLworCQljaGlsZF9ncm91cGVkX3JlbC0+cGFyZW50ID0gZ3JvdXBl ZF9yZWw7CiAJCWlmIChjaGlsZF9wYXJ0aWFsbHlfZ3JvdXBlZF9yZWwpCiAJCXsKKwkJCWNoaWxk X3BhcnRpYWxseV9ncm91cGVkX3JlbC0+cGFyZW50ID0gZ3JvdXBlZF9yZWw7CiAJCQlwYXJ0aWFs bHlfZ3JvdXBlZF9saXZlX2NoaWxkcmVuID0KIAkJCQlsYXBwZW5kKHBhcnRpYWxseV9ncm91cGVk X2xpdmVfY2hpbGRyZW4sCiAJCQkJCQljaGlsZF9wYXJ0aWFsbHlfZ3JvdXBlZF9yZWwpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCmluZGV4IDk3ZmE1NjFlNGUuLjg1NGRkN2M4YWYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYworKysgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKQEAgLTE3NjYsNiArMTc2Niw4IEBA IHNldF9hcHBlbmRfcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwKIAlzZXRfZHVtbXlfdGxp c3RfcmVmZXJlbmNlcygoUGxhbiAqKSBhcGxhbiwgcnRvZmZzZXQpOwogCiAJYXBsYW4tPmFwcHJl bGlkcyA9IG9mZnNldF9yZWxpZF9zZXQoYXBsYW4tPmFwcHJlbGlkcywgcnRvZmZzZXQpOworCWZv cmVhY2gobCwgYXBsYW4tPmFsbHBhcnRyZWxpZHMpCisJCWxmaXJzdChsKSA9IG9mZnNldF9yZWxp ZF9zZXQoKFJlbGlkcykgbGZpcnN0KGwpLCBydG9mZnNldCk7CiAKIAlpZiAoYXBsYW4tPnBhcnRf cHJ1bmVfaW5mbykKIAl7CkBAIC0xODQyLDYgKzE4NDQsOCBAQCBzZXRfbWVyZ2VhcHBlbmRfcmVm ZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwKIAlzZXRfZHVtbXlfdGxpc3RfcmVmZXJlbmNlcygo UGxhbiAqKSBtcGxhbiwgcnRvZmZzZXQpOwogCiAJbXBsYW4tPmFwcHJlbGlkcyA9IG9mZnNldF9y ZWxpZF9zZXQobXBsYW4tPmFwcHJlbGlkcywgcnRvZmZzZXQpOworCWZvcmVhY2gobCwgbXBsYW4t PmFsbHBhcnRyZWxpZHMpCisJCWxmaXJzdChsKSA9IG9mZnNldF9yZWxpZF9zZXQoKFJlbGlkcykg bGZpcnN0KGwpLCBydG9mZnNldCk7CiAKIAlpZiAobXBsYW4tPnBhcnRfcHJ1bmVfaW5mbykKIAl7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMKaW5kZXggZjQ1NmIzYjBhNC4u NWJkOGU4MmI5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5k aW5mby5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2FwcGVuZGluZm8uYwpAQCAt NDEsNiArNDEsNyBAQCBzdGF0aWMgdm9pZCBtYWtlX2luaF90cmFuc2xhdGlvbl9saXN0KFJlbGF0 aW9uIG9sZHJlbGF0aW9uLAogCQkJCQkJCQkJICBBcHBlbmRSZWxJbmZvICphcHBpbmZvKTsKIHN0 YXRpYyBOb2RlICphZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211dGF0b3IoTm9kZSAqbm9kZSwKIAkJ CQkJCQkJCQkJYWRqdXN0X2FwcGVuZHJlbF9hdHRyc19jb250ZXh0ICpjb250ZXh0KTsKK3N0YXRp YyBMaXN0ICphZGRfcGFydF9yZWxpZHMoTGlzdCAqYWxscGFydHJlbGlkcywgQml0bWFwc2V0ICpw YXJ0cmVsaWRzKTsKIAogCiAvKgpAQCAtMTAzNSwzICsxMDM2LDEzNiBAQCBkaXN0cmlidXRlX3Jv d19pZGVudGl0eV92YXJzKFBsYW5uZXJJbmZvICpyb290KQogCQl9CiAJfQogfQorCisvKgorICog YWRkX2FwcGVuZF9zdWJwYXRoX3BhcnRyZWxpZHMKKyAqCQlMb29rIHVwIGEgY2hpbGQgc3VicGF0 aCdzIHJlbCdzIHBhcnRpdGlvbmVkIHBhcmVudCByZWxpZHMgdXAgdG8KKyAqCQlwYXJlbnRyZWwg YW5kIGFkZCB0aGUgYml0bWFwc2V0IGNvbnRhaW5pbmcgdGhvc2UgaW50bworICoJCSdhbGxwYXJ0 cmVsaWRzJworICovCitMaXN0ICoKK2FkZF9hcHBlbmRfc3VicGF0aF9wYXJ0cmVsaWRzKFBsYW5u ZXJJbmZvICpyb290LCBQYXRoICpzdWJwYXRoLAorCQkJCQkJCSAgUmVsT3B0SW5mbyAqcGFyZW50 cmVsLAorCQkJCQkJCSAgTGlzdCAqYWxscGFydHJlbGlkcykKK3sKKwlSZWxPcHRJbmZvICpwcmVs ID0gc3VicGF0aC0+cGFyZW50OworCVJlbGlkcwkJcGFydHJlbGlkcyA9IE5VTEw7CisKKwkvKiBO b3RoaW5nIHRvIGRvIGlmIHRoZXJlJ3Mgbm8gcGFyZW50IHRvIGJlZ2luIHdpdGguICovCisJaWYg KCFJU19PVEhFUl9SRUwocHJlbCkpCisJCXJldHVybiBhbGxwYXJ0cmVsaWRzOworCisJLyoKKwkg KiBUcmF2ZXJzZSB1cCB0byB0aGUgcGF0aHJlbCdzIHRvcG1vc3QgcGFydGl0aW9uZWQgcGFyZW50 LCBjb2xsZWN0aW5nCisJICogcGFyZW50IHJlbGlkcyBhcyB3ZSBnbzsgYnV0IHN0b3AgaWYgd2Ug cmVhY2ggcGFyZW50cmVsLiAgKE5vcm1hbGx5LCBhCisJICogcGF0aHJlbCdzIHRvcG1vc3QgcGFy dGl0aW9uZWQgcGFyZW50IGlzIGVpdGhlciBwYXJlbnRyZWwgb3IgYSBVTklPTiBBTEwKKwkgKiBh cHBlbmRyZWwgY2hpbGQgb2YgcGFyZW50cmVsLiAgQnV0IHdoZW4gaGFuZGxpbmcgcGFydGl0aW9u d2lzZSBqb2lucyBvZgorCSAqIG11bHRpLWxldmVsIHBhcnRpdGlvbmluZyB0cmVlcywgd2UgY2Fu IHNlZSBhbiBhcHBlbmQgcGF0aCB3aG9zZQorCSAqIHBhcmVudHJlbCBpcyBhbiBpbnRlcm1lZGlh dGUgcGFydGl0aW9uZWQgdGFibGUuKQorCSAqLworCWRvCisJeworCQlSZWxpZHMJcGFyZW50X3Jl bGlkcyA9IE5VTEw7CisKKwkJLyoKKwkJICogRm9yIHNpbXBsZSBjaGlsZCByZWxzLCB3ZSBjYW4g c2ltcGx5IHNldCB0aGUgcGFyZW50X3JlbGlkcyB0bworCQkgKiBwcmVsLT5wYXJlbnQtPnJlbGlk cy4gIEJ1dCBmb3IgcGFydGl0aW9ud2lzZSBqb2luIGFuZCBhZ2dyZWdhdGUKKwkJICogY2hpbGQg cmVscywgd2hpbGUgd2UgY2FuIHVzZSBwcmVsLT5wYXJlbnQgdG8gbW92ZSB1cCB0aGUgdHJlZSwK KwkJICogcGFyZW50X3JlbGlkcyBtdXN0IGJlIGZvdW5kIHRoZSBoYXJkIHdheSB0aHJvdWdoIEFw cGVuZEluZm9JbmZvcywKKwkJICogYmVjYXVzZSAxKSBhIGpvaW5yZWwncyByZWxpZHMgbWF5IHBv aW50IHRvIFJURV9KT0lOIGVudHJpZXMsCisJCSAqIDIpIHRvcG1vc3QgcGFyZW50IGdyb3VwaW5n IHJlbCdzIHJlbGlkcyBmaWVsZCBpcyBOVUxMLgorCQkgKi8KKwkJaWYgKElTX1NJTVBMRV9SRUwo cHJlbCkpCisJCXsKKwkJCXByZWwgPSBwcmVsLT5wYXJlbnQ7CisJCQkvKiBTdG9wIG9uY2Ugd2Ug cmVhY2ggdGhlIHJvb3QgcGFydGl0aW9uZWQgcmVsLiAqLworCQkJaWYgKCFJU19QQVJUSVRJT05F RF9SRUwocHJlbCkpCisJCQkJYnJlYWs7CisJCQlwYXJlbnRfcmVsaWRzID0gYm1zX2FkZF9tZW1i ZXJzKHBhcmVudF9yZWxpZHMsIHByZWwtPnJlbGlkcyk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlB cHBlbmRSZWxJbmZvICoqYXBwaW5mb3M7CisJCQlpbnQJCW5hcHBpbmZvcywKKwkJCQkJaTsKKwor CQkJYXBwaW5mb3MgPSBmaW5kX2FwcGluZm9zX2J5X3JlbGlkcyhyb290LCBwcmVsLT5yZWxpZHMs CisJCQkJCQkJCQkJCSAgICZuYXBwaW5mb3MpOworCQkJZm9yIChpID0gMDsgaSA8IG5hcHBpbmZv czsgaSsrKQorCQkJeworCQkJCUFwcGVuZFJlbEluZm8gKmFwcGluZm8gPSBhcHBpbmZvc1tpXTsK KworCQkJCXBhcmVudF9yZWxpZHMgPSBibXNfYWRkX21lbWJlcihwYXJlbnRfcmVsaWRzLAorCQkJ CQkJCQkJCQkgICBhcHBpbmZvLT5wYXJlbnRfcmVsaWQpOworCQkJfQorCQkJcGZyZWUoYXBwaW5m b3MpOworCQkJcHJlbCA9IHByZWwtPnBhcmVudDsKKwkJfQorCQkvKiBhY2NlcHQgdGhpcyBsZXZl bCBhcyBhbiBpbnRlcmVzdGluZyBwYXJlbnQgKi8KKwkJcGFydHJlbGlkcyA9IGJtc19hZGRfbWVt YmVycyhwYXJ0cmVsaWRzLCBwYXJlbnRfcmVsaWRzKTsKKwkJaWYgKHByZWwgPT0gcGFyZW50cmVs KQorCQkJYnJlYWs7CQkvKiBkb24ndCB0cmF2ZXJzZSBhYm92ZSBwYXJlbnRyZWwgKi8KKwl9IHdo aWxlIChJU19PVEhFUl9SRUwocHJlbCkpOworCisJaWYgKHBhcnRyZWxpZHMgPT0gTlVMTCkKKwkJ cmV0dXJuIGFsbHBhcnRyZWxpZHM7CisKKwlyZXR1cm4gYWRkX3BhcnRfcmVsaWRzKGFsbHBhcnRy ZWxpZHMsIHBhcnRyZWxpZHMpOworfQorCisvKgorICogYWRkX3BhcnRfcmVsaWRzCisgKgkJQWRk IG5ldyBpbmZvIHRvIGEgbGlzdCBvZiBCaXRtYXBzZXRzIG9mIHBhcnRpdGlvbmVkIHJlbGlkcy4K KyAqCisgKiBXaXRoaW4gJ2FsbHBhcnRyZWxpZHMnLCB0aGVyZSBpcyBvbmUgQml0bWFwc2V0IGZv ciBlYWNoIHRvcG1vc3QgcGFyZW50CisgKiBwYXJ0aXRpb25lZCByZWwuICBFYWNoIEJpdG1hcHNl dCBjb250YWlucyB0aGUgUlQgaW5kZXhlcyBvZiB0aGUgdG9wbW9zdAorICogcGFyZW50IGFzIHdl bGwgYXMgaXRzIHJlbGV2YW50IG5vbi1sZWFmIGNoaWxkIHBhcnRpdGlvbnMuICBTaW5jZSAoYnkK KyAqIGNvbnN0cnVjdGlvbiBvZiB0aGUgcmFuZ2V0YWJsZSBsaXN0KSBwYXJlbnQgcGFydGl0aW9u cyBtdXN0IGhhdmUgbG93ZXIKKyAqIFJUIGluZGV4ZXMgdGhhbiB0aGVpciBjaGlsZHJlbiwgd2Ug Y2FuIGRpc3Rpbmd1aXNoIHRoZSB0b3Btb3N0IHBhcmVudAorICogYXMgYmVpbmcgdGhlIGxvd2Vz dCBzZXQgYml0IGluIHRoZSBCaXRtYXBzZXQuCisgKgorICogJ3BhcnRyZWxpZHMnIGNvbnRhaW5z IHRoZSBSVCBpbmRleGVzIG9mIGEgcGFyZW50IHBhcnRpdGlvbmVkIHJlbCwgYW5kCisgKiBwb3Nz aWJseSBzb21lIG5vbi1sZWFmIGNoaWxkcmVuLCB0aGF0IGFyZSBuZXdseSBpZGVudGlmaWVkIGFz IHBhcmVudHMgb2YKKyAqIHNvbWUgc3VicGF0aCByZWwgcGFzc2VkIHRvIG1ha2VfcGFydGl0aW9u X3BydW5laW5mbygpLiAgVGhlc2UgYXJlIGFkZGVkCisgKiB0byBhbiBhcHByb3ByaWF0ZSBtZW1i ZXIgb2YgJ2FsbHBhcnRyZWxpZHMnLgorICoKKyAqIE5vdGUgdGhhdCB0aGUgbGlzdCBjb250YWlu cyBvbmx5IFJUIGluZGV4ZXMgb2YgcGFydGl0aW9uZWQgdGFibGVzIHRoYXQKKyAqIGFyZSBwYXJl bnRzIG9mIHNvbWUgc2Nhbi1sZXZlbCByZWxhdGlvbiBhcHBlYXJpbmcgaW4gdGhlICdzdWJwYXRo cycgdGhhdAorICogbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKCkgaXMgZGVhbGluZyB3aXRoLiAg QWxzbywgInRvcG1vc3QiIHBhcmVudHMgYXJlCisgKiBub3QgYWxsb3dlZCB0byBiZSBoaWdoZXIg dGhhbiB0aGUgJ3BhcmVudHJlbCcgYXNzb2NpYXRlZCB3aXRoIHRoZSBhcHBlbmQKKyAqIHBhdGgu ICBJbiB0aGlzIHdheSwgd2UgYXZvaWQgZXhwZW5kaW5nIGN5Y2xlcyBvbiBwYXJ0aXRpb25lZCBy ZWxzIHRoYXQKKyAqIGNhbid0IGNvbnRyaWJ1dGUgdXNlZnVsIHBydW5pbmcgaW5mb3JtYXRpb24g Zm9yIHRoZSBwcm9ibGVtIGF0IGhhbmQuCisgKiAoSXQgaXMgcG9zc2libGUgZm9yICdwYXJlbnRy ZWwnIHRvIGJlIGEgY2hpbGQgcGFydGl0aW9uZWQgdGFibGUsIGFuZCBpdAorICogaXMgYWxzbyBw b3NzaWJsZSBmb3Igc2Nhbi1sZXZlbCByZWxhdGlvbnMgdG8gYmUgY2hpbGQgcGFydGl0aW9uZWQg dGFibGVzCisgKiByYXRoZXIgdGhhbiBsZWFmIHBhcnRpdGlvbnMuICBIZW5jZSB3ZSBtdXN0IGNv bnN0cnVjdCB0aGlzIHJlbGF0aW9uIHNldAorICogd2l0aCByZWZlcmVuY2UgdG8gdGhlIHBhcnRp Y3VsYXIgYXBwZW5kIHBhdGggd2UncmUgZGVhbGluZyB3aXRoLCByYXRoZXIKKyAqIHRoYW4gbG9v a2luZyBhdCB0aGUgZnVsbCBwYXJ0aXRpb25pbmcgc3RydWN0dXJlIHJlcHJlc2VudGVkIGluIHRo ZQorICogUmVsT3B0SW5mb3MuKQorICovCitzdGF0aWMgTGlzdCAqCithZGRfcGFydF9yZWxpZHMo TGlzdCAqYWxscGFydHJlbGlkcywgQml0bWFwc2V0ICpwYXJ0cmVsaWRzKQoreworCUluZGV4CQl0 YXJnZXRwYXJ0OworCUxpc3RDZWxsICAgKmxjOworCisJLyogV2UgY2FuIGVhc2lseSBnZXQgdGhl IGxvd2VzdCBzZXQgYml0IHRoaXMgd2F5OiAqLworCXRhcmdldHBhcnQgPSBibXNfbmV4dF9tZW1i ZXIocGFydHJlbGlkcywgLTEpOworCUFzc2VydCh0YXJnZXRwYXJ0ID4gMCk7CisKKwkvKiBMb29r IGZvciBhIG1hdGNoaW5nIHRvcG1vc3QgcGFyZW50ICovCisJZm9yZWFjaChsYywgYWxscGFydHJl bGlkcykKKwl7CisJCUJpdG1hcHNldCAgKmN1cnJwYXJ0cmVsaWRzID0gKEJpdG1hcHNldCAqKSBs Zmlyc3QobGMpOworCQlJbmRleAkJY3VycnRhcmdldCA9IGJtc19uZXh0X21lbWJlcihjdXJycGFy dHJlbGlkcywgLTEpOworCisJCWlmICh0YXJnZXRwYXJ0ID09IGN1cnJ0YXJnZXQpCisJCXsKKwkJ CS8qIEZvdW5kIGEgbWF0Y2gsIHNvIGFkZCBhbnkgbmV3IFJUIGluZGV4ZXMgdG8gdGhpcyBoaWVy YXJjaHkgKi8KKwkJCWN1cnJwYXJ0cmVsaWRzID0gYm1zX2FkZF9tZW1iZXJzKGN1cnJwYXJ0cmVs aWRzLCBwYXJ0cmVsaWRzKTsKKwkJCWxmaXJzdChsYykgPSBjdXJycGFydHJlbGlkczsKKwkJCXJl dHVybiBhbGxwYXJ0cmVsaWRzOworCQl9CisJfQorCS8qIE5vIG1hdGNoLCBzbyBhZGQgdGhlIG5l dyBwYXJ0aXRpb24gaGllcmFyY2h5IHRvIHRoZSBsaXN0ICovCisJcmV0dXJuIGxhcHBlbmQoYWxs cGFydHJlbGlkcywgcGFydHJlbGlkcyk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0 aXRpb25pbmcvcGFydHBydW5lLmMgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5l LmMKaW5kZXggNzE3OWIyMmEwNS4uMjEzNTEyYTVmNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9w YXJ0cHJ1bmUuYwpAQCAtMTM4LDcgKzEzOCw2IEBAIHR5cGVkZWYgc3RydWN0IFBydW5lU3RlcFJl c3VsdAogfSBQcnVuZVN0ZXBSZXN1bHQ7CiAKIAotc3RhdGljIExpc3QgKmFkZF9wYXJ0X3JlbGlk cyhMaXN0ICphbGxwYXJ0cmVsaWRzLCBCaXRtYXBzZXQgKnBhcnRyZWxpZHMpOwogc3RhdGljIExp c3QgKm1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LAogCQkJ CQkJCQkJCSAgIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJCQkJCQkJCQkgICBMaXN0ICpwcnVu ZXF1YWwsCkBAIC0yMTgsMzMgKzIxNywzMiBAQCBzdGF0aWMgdm9pZCBwYXJ0a2V5X2RhdHVtX2Zy b21fZXhwcihQYXJ0aXRpb25QcnVuZUNvbnRleHQgKmNvbnRleHQsCiAgKiBvZiBzY2FuIHBhdGhz IGZvciBpdHMgY2hpbGQgcmVscy4KICAqICdwcnVuZXF1YWwnIGlzIGEgbGlzdCBvZiBwb3RlbnRp YWwgcHJ1bmluZyBxdWFscyAoaS5lLiwgcmVzdHJpY3Rpb24KICAqIGNsYXVzZXMgdGhhdCBhcmUg YXBwbGljYWJsZSB0byB0aGUgYXBwZW5kcmVsKS4KKyAqICdhbGxwYXJ0cmVsaWRzJyBjb250YWlu cyBCaXRtYXBzZXRzIG9mIFJUIGluZGV4ZXMgb2YgcGFydGl0aW9uZWQgcGFyZW50cworICogd2hv c2UgcGFydGl0aW9ucycgUGF0aHMgYXJlIGluICdzdWJwYXRocyc7IHRoZXJlJ3Mgb25lIEJpdG1h cHNldCBmb3IgZXZlcnkKKyAqIHBhcnRpdGlvbiB0cmVlIGludm9sdmVkLgogICovCiBQYXJ0aXRp b25QcnVuZUluZm8gKgogbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCQkJCQkgTGlzdCAqc3VicGF0aHMsCi0JCQkJCQkg TGlzdCAqcHJ1bmVxdWFsKQorCQkJCQkJIExpc3QgKnBydW5lcXVhbCwKKwkJCQkJCSBMaXN0ICph bGxwYXJ0cmVsaWRzKQogewogCVBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvOwogCUJpdG1h cHNldCAgKmFsbG1hdGNoZWRzdWJwbGFucyA9IE5VTEw7Ci0JTGlzdAkgICAqYWxscGFydHJlbGlk czsKIAlMaXN0CSAgICpwcnVuZXJlbGluZm9zOwogCWludAkJICAgKnJlbGlkX3N1YnBsYW5fbWFw OwogCUxpc3RDZWxsICAgKmxjOwogCWludAkJCWk7CiAKKwlBc3NlcnQobGlzdF9sZW5ndGgoYWxs cGFydHJlbGlkcykgPiAwKTsKKwogCS8qCi0JICogU2NhbiB0aGUgc3VicGF0aHMgdG8gc2VlIHdo aWNoIG9uZXMgYXJlIHNjYW5zIG9mIHBhcnRpdGlvbiBjaGlsZAotCSAqIHJlbGF0aW9ucywgYW5k IGlkZW50aWZ5IHRoZWlyIHBhcmVudCBwYXJ0aXRpb25lZCByZWxzLiAgKE5vdGU6IHdlIG11c3QK LQkgKiByZXN0cmljdCB0aGUgcGFyZW50IHBhcnRpdGlvbmVkIHJlbHMgdG8gYmUgcGFyZW50cmVs IG9yIGNoaWxkcmVuIG9mCi0JICogcGFyZW50cmVsLCBvdGhlcndpc2Ugd2UgY291bGRuJ3QgdHJh bnNsYXRlIHBydW5lcXVhbCB0byBtYXRjaC4pCi0JICoKLQkgKiBBbHNvIGNvbnN0cnVjdCBhIHRl bXBvcmFyeSBhcnJheSB0byBtYXAgZnJvbSBwYXJ0aXRpb24tY2hpbGQtcmVsYXRpb24KLQkgKiBy ZWxpZCB0byB0aGUgaW5kZXggaW4gJ3N1YnBhdGhzJyBvZiB0aGUgc2NhbiBwbGFuIGZvciB0aGF0 IHBhcnRpdGlvbi4KKwkgKiBDb25zdHJ1Y3QgYSB0ZW1wb3JhcnkgYXJyYXkgdG8gbWFwIGZyb20g cGFydGl0aW9uLWNoaWxkLXJlbGF0aW9uIHJlbGlkCisJICogdG8gdGhlIGluZGV4IGluICdzdWJw YXRocycgb2YgdGhlIHNjYW4gcGxhbiBmb3IgdGhhdCBwYXJ0aXRpb24uCiAJICogKFVzZSBvZiAi c3VicGxhbiIgcmF0aGVyIHRoYW4gInN1YnBhdGgiIGlzIGEgYml0IG9mIGEgbWlzbm9tZXIsIGJ1 dAogCSAqIHdlJ2xsIGxldCBpdCBzdGFuZC4pICBGb3IgY29udmVuaWVuY2UsIHdlIHVzZSAxLWJh c2VkIGluZGV4ZXMgaGVyZSwgc28KIAkgKiB0aGF0IHplcm8gY2FuIHJlcHJlc2VudCBhbiB1bi1m aWxsZWQgYXJyYXkgZW50cnkuCiAJICovCi0JYWxscGFydHJlbGlkcyA9IE5JTDsKIAlyZWxpZF9z dWJwbGFuX21hcCA9IHBhbGxvYzAoc2l6ZW9mKGludCkgKiByb290LT5zaW1wbGVfcmVsX2FycmF5 X3NpemUpOwogCiAJaSA9IDE7CkBAIC0yNTMsNTAgKzI1MSw5IEBAIG1ha2VfcGFydGl0aW9uX3By dW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQlQYXRo CSAgICpwYXRoID0gKFBhdGggKikgbGZpcnN0KGxjKTsKIAkJUmVsT3B0SW5mbyAqcGF0aHJlbCA9 IHBhdGgtPnBhcmVudDsKIAotCQkvKiBXZSBkb24ndCBjb25zaWRlciBwYXJ0aXRpb25lZCBqb2lu cyBoZXJlICovCi0JCWlmIChwYXRocmVsLT5yZWxvcHRraW5kID09IFJFTE9QVF9PVEhFUl9NRU1C RVJfUkVMKQotCQl7Ci0JCQlSZWxPcHRJbmZvICpwcmVsID0gcGF0aHJlbDsKLQkJCUJpdG1hcHNl dCAgKnBhcnRyZWxpZHMgPSBOVUxMOwotCi0JCQkvKgotCQkJICogVHJhdmVyc2UgdXAgdG8gdGhl IHBhdGhyZWwncyB0b3Btb3N0IHBhcnRpdGlvbmVkIHBhcmVudCwKLQkJCSAqIGNvbGxlY3Rpbmcg cGFyZW50IHJlbGlkcyBhcyB3ZSBnbzsgYnV0IHN0b3AgaWYgd2UgcmVhY2gKLQkJCSAqIHBhcmVu dHJlbC4gIChOb3JtYWxseSwgYSBwYXRocmVsJ3MgdG9wbW9zdCBwYXJ0aXRpb25lZCBwYXJlbnQK LQkJCSAqIGlzIGVpdGhlciBwYXJlbnRyZWwgb3IgYSBVTklPTiBBTEwgYXBwZW5kcmVsIGNoaWxk IG9mCi0JCQkgKiBwYXJlbnRyZWwuICBCdXQgd2hlbiBoYW5kbGluZyBwYXJ0aXRpb253aXNlIGpv aW5zIG9mCi0JCQkgKiBtdWx0aS1sZXZlbCBwYXJ0aXRpb25pbmcgdHJlZXMsIHdlIGNhbiBzZWUg YW4gYXBwZW5kIHBhdGggd2hvc2UKLQkJCSAqIHBhcmVudHJlbCBpcyBhbiBpbnRlcm1lZGlhdGUg cGFydGl0aW9uZWQgdGFibGUuKQotCQkJICovCi0JCQlkbwotCQkJewotCQkJCUFwcGVuZFJlbElu Zm8gKmFwcGluZm87Ci0KLQkJCQlBc3NlcnQocHJlbC0+cmVsaWQgPCByb290LT5zaW1wbGVfcmVs X2FycmF5X3NpemUpOwotCQkJCWFwcGluZm8gPSByb290LT5hcHBlbmRfcmVsX2FycmF5W3ByZWwt PnJlbGlkXTsKLQkJCQlwcmVsID0gZmluZF9iYXNlX3JlbChyb290LCBhcHBpbmZvLT5wYXJlbnRf cmVsaWQpOwotCQkJCWlmICghSVNfUEFSVElUSU9ORURfUkVMKHByZWwpKQotCQkJCQlicmVhazsJ CS8qIHJlYWNoZWQgYSBub24tcGFydGl0aW9uZWQgcGFyZW50ICovCi0JCQkJLyogYWNjZXB0IHRo aXMgbGV2ZWwgYXMgYW4gaW50ZXJlc3RpbmcgcGFyZW50ICovCi0JCQkJcGFydHJlbGlkcyA9IGJt c19hZGRfbWVtYmVyKHBhcnRyZWxpZHMsIHByZWwtPnJlbGlkKTsKLQkJCQlpZiAocHJlbCA9PSBw YXJlbnRyZWwpCi0JCQkJCWJyZWFrOwkJLyogZG9uJ3QgdHJhdmVyc2UgYWJvdmUgcGFyZW50cmVs ICovCi0JCQl9IHdoaWxlIChwcmVsLT5yZWxvcHRraW5kID09IFJFTE9QVF9PVEhFUl9NRU1CRVJf UkVMKTsKLQotCQkJaWYgKHBhcnRyZWxpZHMpCi0JCQl7Ci0JCQkJLyoKLQkJCQkgKiBGb3VuZCBz b21lIHJlbGV2YW50IHBhcmVudCBwYXJ0aXRpb25zLCB3aGljaCBtYXkgb3IgbWF5IG5vdAotCQkJ CSAqIG92ZXJsYXAgd2l0aCBwYXJ0aXRpb24gdHJlZXMgd2UgYWxyZWFkeSBmb3VuZC4gIEFkZCBu ZXcKLQkJCQkgKiBpbmZvcm1hdGlvbiB0byB0aGUgYWxscGFydHJlbGlkcyBsaXN0LgotCQkJCSAq LwotCQkJCWFsbHBhcnRyZWxpZHMgPSBhZGRfcGFydF9yZWxpZHMoYWxscGFydHJlbGlkcywgcGFy dHJlbGlkcyk7Ci0JCQkJLyogQWxzbyByZWNvcmQgdGhlIHN1YnBsYW4gaW4gcmVsaWRfc3VicGxh bl9tYXBbXSAqLwotCQkJCS8qIE5vIGR1cGxpY2F0ZXMgcGxlYXNlICovCi0JCQkJQXNzZXJ0KHJl bGlkX3N1YnBsYW5fbWFwW3BhdGhyZWwtPnJlbGlkXSA9PSAwKTsKLQkJCQlyZWxpZF9zdWJwbGFu X21hcFtwYXRocmVsLT5yZWxpZF0gPSBpOwotCQkJfQotCQl9CisJCS8qIE5vIGR1cGxpY2F0ZXMg cGxlYXNlICovCisJCUFzc2VydChyZWxpZF9zdWJwbGFuX21hcFtwYXRocmVsLT5yZWxpZF0gPT0g MCk7CisJCXJlbGlkX3N1YnBsYW5fbWFwW3BhdGhyZWwtPnJlbGlkXSA9IGk7CiAJCWkrKzsKIAl9 CiAKQEAgLTM2Miw2MyArMzE5LDYgQEAgbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJ bmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJcmV0dXJuIHBydW5laW5mbzsKIH0K IAotLyoKLSAqIGFkZF9wYXJ0X3JlbGlkcwotICoJCUFkZCBuZXcgaW5mbyB0byBhIGxpc3Qgb2Yg Qml0bWFwc2V0cyBvZiBwYXJ0aXRpb25lZCByZWxpZHMuCi0gKgotICogV2l0aGluICdhbGxwYXJ0 cmVsaWRzJywgdGhlcmUgaXMgb25lIEJpdG1hcHNldCBmb3IgZWFjaCB0b3Btb3N0IHBhcmVudAot ICogcGFydGl0aW9uZWQgcmVsLiAgRWFjaCBCaXRtYXBzZXQgY29udGFpbnMgdGhlIFJUIGluZGV4 ZXMgb2YgdGhlIHRvcG1vc3QKLSAqIHBhcmVudCBhcyB3ZWxsIGFzIGl0cyByZWxldmFudCBub24t bGVhZiBjaGlsZCBwYXJ0aXRpb25zLiAgU2luY2UgKGJ5Ci0gKiBjb25zdHJ1Y3Rpb24gb2YgdGhl IHJhbmdldGFibGUgbGlzdCkgcGFyZW50IHBhcnRpdGlvbnMgbXVzdCBoYXZlIGxvd2VyCi0gKiBS VCBpbmRleGVzIHRoYW4gdGhlaXIgY2hpbGRyZW4sIHdlIGNhbiBkaXN0aW5ndWlzaCB0aGUgdG9w bW9zdCBwYXJlbnQKLSAqIGFzIGJlaW5nIHRoZSBsb3dlc3Qgc2V0IGJpdCBpbiB0aGUgQml0bWFw c2V0LgotICoKLSAqICdwYXJ0cmVsaWRzJyBjb250YWlucyB0aGUgUlQgaW5kZXhlcyBvZiBhIHBh cmVudCBwYXJ0aXRpb25lZCByZWwsIGFuZAotICogcG9zc2libHkgc29tZSBub24tbGVhZiBjaGls ZHJlbiwgdGhhdCBhcmUgbmV3bHkgaWRlbnRpZmllZCBhcyBwYXJlbnRzIG9mCi0gKiBzb21lIHN1 YnBhdGggcmVsIHBhc3NlZCB0byBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oKS4gIFRoZXNlIGFy ZSBhZGRlZAotICogdG8gYW4gYXBwcm9wcmlhdGUgbWVtYmVyIG9mICdhbGxwYXJ0cmVsaWRzJy4K LSAqCi0gKiBOb3RlIHRoYXQgdGhlIGxpc3QgY29udGFpbnMgb25seSBSVCBpbmRleGVzIG9mIHBh cnRpdGlvbmVkIHRhYmxlcyB0aGF0Ci0gKiBhcmUgcGFyZW50cyBvZiBzb21lIHNjYW4tbGV2ZWwg cmVsYXRpb24gYXBwZWFyaW5nIGluIHRoZSAnc3VicGF0aHMnIHRoYXQKLSAqIG1ha2VfcGFydGl0 aW9uX3BydW5laW5mbygpIGlzIGRlYWxpbmcgd2l0aC4gIEFsc28sICJ0b3Btb3N0IiBwYXJlbnRz IGFyZQotICogbm90IGFsbG93ZWQgdG8gYmUgaGlnaGVyIHRoYW4gdGhlICdwYXJlbnRyZWwnIGFz c29jaWF0ZWQgd2l0aCB0aGUgYXBwZW5kCi0gKiBwYXRoLiAgSW4gdGhpcyB3YXksIHdlIGF2b2lk IGV4cGVuZGluZyBjeWNsZXMgb24gcGFydGl0aW9uZWQgcmVscyB0aGF0Ci0gKiBjYW4ndCBjb250 cmlidXRlIHVzZWZ1bCBwcnVuaW5nIGluZm9ybWF0aW9uIGZvciB0aGUgcHJvYmxlbSBhdCBoYW5k LgotICogKEl0IGlzIHBvc3NpYmxlIGZvciAncGFyZW50cmVsJyB0byBiZSBhIGNoaWxkIHBhcnRp dGlvbmVkIHRhYmxlLCBhbmQgaXQKLSAqIGlzIGFsc28gcG9zc2libGUgZm9yIHNjYW4tbGV2ZWwg cmVsYXRpb25zIHRvIGJlIGNoaWxkIHBhcnRpdGlvbmVkIHRhYmxlcwotICogcmF0aGVyIHRoYW4g bGVhZiBwYXJ0aXRpb25zLiAgSGVuY2Ugd2UgbXVzdCBjb25zdHJ1Y3QgdGhpcyByZWxhdGlvbiBz ZXQKLSAqIHdpdGggcmVmZXJlbmNlIHRvIHRoZSBwYXJ0aWN1bGFyIGFwcGVuZCBwYXRoIHdlJ3Jl IGRlYWxpbmcgd2l0aCwgcmF0aGVyCi0gKiB0aGFuIGxvb2tpbmcgYXQgdGhlIGZ1bGwgcGFydGl0 aW9uaW5nIHN0cnVjdHVyZSByZXByZXNlbnRlZCBpbiB0aGUKLSAqIFJlbE9wdEluZm9zLikKLSAq Lwotc3RhdGljIExpc3QgKgotYWRkX3BhcnRfcmVsaWRzKExpc3QgKmFsbHBhcnRyZWxpZHMsIEJp dG1hcHNldCAqcGFydHJlbGlkcykKLXsKLQlJbmRleAkJdGFyZ2V0cGFydDsKLQlMaXN0Q2VsbCAg ICpsYzsKLQotCS8qIFdlIGNhbiBlYXNpbHkgZ2V0IHRoZSBsb3dlc3Qgc2V0IGJpdCB0aGlzIHdh eTogKi8KLQl0YXJnZXRwYXJ0ID0gYm1zX25leHRfbWVtYmVyKHBhcnRyZWxpZHMsIC0xKTsKLQlB c3NlcnQodGFyZ2V0cGFydCA+IDApOwotCi0JLyogTG9vayBmb3IgYSBtYXRjaGluZyB0b3Btb3N0 IHBhcmVudCAqLwotCWZvcmVhY2gobGMsIGFsbHBhcnRyZWxpZHMpCi0JewotCQlCaXRtYXBzZXQg ICpjdXJycGFydHJlbGlkcyA9IChCaXRtYXBzZXQgKikgbGZpcnN0KGxjKTsKLQkJSW5kZXgJCWN1 cnJ0YXJnZXQgPSBibXNfbmV4dF9tZW1iZXIoY3VycnBhcnRyZWxpZHMsIC0xKTsKLQotCQlpZiAo dGFyZ2V0cGFydCA9PSBjdXJydGFyZ2V0KQotCQl7Ci0JCQkvKiBGb3VuZCBhIG1hdGNoLCBzbyBh ZGQgYW55IG5ldyBSVCBpbmRleGVzIHRvIHRoaXMgaGllcmFyY2h5ICovCi0JCQljdXJycGFydHJl bGlkcyA9IGJtc19hZGRfbWVtYmVycyhjdXJycGFydHJlbGlkcywgcGFydHJlbGlkcyk7Ci0JCQls Zmlyc3QobGMpID0gY3VycnBhcnRyZWxpZHM7Ci0JCQlyZXR1cm4gYWxscGFydHJlbGlkczsKLQkJ fQotCX0KLQkvKiBObyBtYXRjaCwgc28gYWRkIHRoZSBuZXcgcGFydGl0aW9uIGhpZXJhcmNoeSB0 byB0aGUgbGlzdCAqLwotCXJldHVybiBsYXBwZW5kKGFsbHBhcnRyZWxpZHMsIHBhcnRyZWxpZHMp OwotfQotCiAvKgogICogbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8KICAqCQlCdWlsZCBh IExpc3Qgb2YgUGFydGl0aW9uZWRSZWxQcnVuZUluZm9zLCBvbmUgZm9yIGVhY2ggaW50ZXJlc3Rp bmcKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oIGIvc3JjL2luY2x1 ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggMWI3ODdmZTAzMS4uN2E1ZjNiYTYyNSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9k ZXMvcGxhbm5vZGVzLmgKQEAgLTI2Nyw2ICsyNjcsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQXBwZW5k CiAJTGlzdAkgICAqYXBwZW5kcGxhbnM7CiAJaW50CQkJbmFzeW5jcGxhbnM7CS8qICMgb2YgYXN5 bmNocm9ub3VzIHBsYW5zICovCiAKKwkvKgorCSAqIFJUSXMgb2YgYWxsIHBhcnRpdGlvbmVkIHRh YmxlcyB3aG9zZSBjaGlsZHJlbiBhcmUgc2Nhbm5lZCBieQorCSAqIGFwcGVuZHBsYW5zLiBUaGUg bGlzdCBjb250YWlucyBhIGJpdG1hcHNldCBmb3IgZXZlcnkgcGFydGl0aW9uIHRyZWUKKwkgKiBj b3ZlcmVkIGJ5IHRoaXMgQXBwZW5kLgorCSAqLworCUxpc3QJICAgKmFsbHBhcnRyZWxpZHM7CisK IAkvKgogCSAqIEFsbCAnYXBwZW5kcGxhbnMnIHByZWNlZGluZyB0aGlzIGluZGV4IGFyZSBub24t cGFydGlhbCBwbGFucy4gQWxsCiAJICogJ2FwcGVuZHBsYW5zJyBmcm9tIHRoaXMgaW5kZXggb253 YXJkcyBhcmUgcGFydGlhbCBwbGFucy4KQEAgLTI5MSw2ICsyOTgsMTMgQEAgdHlwZWRlZiBzdHJ1 Y3QgTWVyZ2VBcHBlbmQKIAogCUxpc3QJICAgKm1lcmdlcGxhbnM7CiAKKwkvKgorCSAqIFJUSXMg b2YgYWxsIHBhcnRpdGlvbmVkIHRhYmxlcyB3aG9zZSBjaGlsZHJlbiBhcmUgc2Nhbm5lZCBieQor CSAqIG1lcmdlcGxhbnMuIFRoZSBsaXN0IGNvbnRhaW5zIGEgYml0bWFwc2V0IGZvciBldmVyeSBw YXJ0aXRpb24gdHJlZQorCSAqIGNvdmVyZWQgYnkgdGhpcyBNZXJnZUFwcGVuZC4KKwkgKi8KKwlM aXN0CSAgICphbGxwYXJ0cmVsaWRzOworCiAJLyogdGhlc2UgZmllbGRzIGFyZSBqdXN0IGxpa2Ug dGhlIHNvcnQta2V5IGluZm8gaW4gc3RydWN0IFNvcnQ6ICovCiAKIAkvKiBudW1iZXIgb2Ygc29y dC1rZXkgY29sdW1ucyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2FwcGVu ZGluZm8uaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9hcHBlbmRpbmZvLmgKaW5kZXggYTA1Zjkx Zjc3ZC4uMTYyMWE3MzE5YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2FwcGVu ZGluZm8uaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvYXBwZW5kaW5mby5oCkBAIC00Niw1 ICs0Niw4IEBAIGV4dGVybiB2b2lkIGFkZF9yb3dfaWRlbnRpdHlfY29sdW1ucyhQbGFubmVySW5m byAqcm9vdCwgSW5kZXggcnRpbmRleCwKIAkJCQkJCQkJCSBSYW5nZVRibEVudHJ5ICp0YXJnZXRf cnRlLAogCQkJCQkJCQkJIFJlbGF0aW9uIHRhcmdldF9yZWxhdGlvbik7CiBleHRlcm4gdm9pZCBk aXN0cmlidXRlX3Jvd19pZGVudGl0eV92YXJzKFBsYW5uZXJJbmZvICpyb290KTsKK2V4dGVybiBM aXN0ICphZGRfYXBwZW5kX3N1YnBhdGhfcGFydHJlbGlkcyhQbGFubmVySW5mbyAqcm9vdCwgUGF0 aCAqc3VicGF0aCwKKwkJCQkJCQkgIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKKwkJCQkJCQkgIExp c3QgKmFsbHBhcnRyZWxpZHMpOwogCiAjZW5kaWYJCQkJCQkJLyogQVBQRU5ESU5GT19IICovCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmggYi9zcmMvaW5j bHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmgKaW5kZXggODYzNmUwNGUzNy4uY2FhNzc0YTEx MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oCisrKyBi L3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaApAQCAtNzMsNyArNzMsOCBAQCB0 eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25QcnVuZUNvbnRleHQKIGV4dGVybiBQYXJ0aXRpb25QcnVu ZUluZm8gKm1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhzdHJ1Y3QgUGxhbm5lckluZm8gKnJvb3Qs CiAJCQkJCQkJCQkJCQkJc3RydWN0IFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJCQkJCQkJCQkJ CQlMaXN0ICpzdWJwYXRocywKLQkJCQkJCQkJCQkJCQlMaXN0ICpwcnVuZXF1YWwpOworCQkJCQkJ CQkJCQkJCUxpc3QgKnBydW5lcXVhbCwKKwkJCQkJCQkJCQkJCQlMaXN0ICphbGxwYXJ0cmVsaWRz KTsKIGV4dGVybiBCaXRtYXBzZXQgKnBydW5lX2FwcGVuZF9yZWxfcGFydGl0aW9ucyhzdHJ1Y3Qg UmVsT3B0SW5mbyAqcmVsKTsKIGV4dGVybiBCaXRtYXBzZXQgKmdldF9tYXRjaGluZ19wYXJ0aXRp b25zKFBhcnRpdGlvblBydW5lQ29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkJCQkgIExpc3QgKnBy dW5pbmdfc3RlcHMpOwotLSAKMi4zNS4zCgo= --00000000000082dd050604ad25e6 Content-Type: application/octet-stream; name="v47-0006-Set-inFromCl-to-false-in-child-table-RTEs.patch" Content-Disposition: attachment; filename="v47-0006-Set-inFromCl-to-false-in-child-table-RTEs.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lm7ic0oa2 RnJvbSBjMjRiZWIzZjFhNzRhOWQzZDQ4NWI4NWVhMmEzMDI2ZjcxNjc0YWFhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNiBTZXAgMjAyMyAxNzo1NDoxMSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ3 IDYvOF0gU2V0IGluRnJvbUNsIHRvIGZhbHNlIGluIGNoaWxkIHRhYmxlIFJURXMKClRoaXMgaXMg dG8gYWxsb3cgdGhlIGV4ZWN1dG9yIGJlIGFibGUgdG8gZGlzdGluZ3Vpc2ggdGFibGVzIHRoYXQg YXJlCmRpcmVjdGx5IG1lbnRpb25lZCBpbiB0aGUgcXVlcnkgZnJvbSB0aG9zZSB0aGF0IGdldCBh ZGRlZCB0byB0aGUKcXVlcnkgZHVyaW5nIHBsYW5uaW5nLiAgQSBzdWJzZXF1ZW50IGNvbW1pdCB3 aWxsIHRlYWNoIHRoZSBleGVjdXRvcgp0byBsb2NrIG9ubHkgdGhlIHRhYmxlcyBvZiB0aGUgbGF0 dGVyIGtpbmQgd2hlbiBleGVjdXRpbmcgYSBjYWNoZWQKcGxhbi4KCkRpc2N1c3Npb246IGh0dHBz Oi8vcG9zdGdyLmVzL20vQ0ErSGl3cUZHa01TZ2U2VGdDOUtRemRlMG9ocEF5Y0xRdVY3b29pdEVF cGJLQjBPX21nQG1haWwuZ21haWwuY29tawotLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci91dGls L2luaGVyaXQuYyB8IDYgKysrKysrCiBzcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jICAgICAg ICAgfCA3ICsrKy0tLS0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICB8IDkg KysrKysrKy0tCiAzIGZpbGVzIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvaW5oZXJpdC5jIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvaW5oZXJpdC5jCmluZGV4IDk0ZGU4NTVhMjIuLjli YWMwN2JmNDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2luaGVyaXQu YworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9pbmhlcml0LmMKQEAgLTQ5Miw2ICs0 OTIsMTIgQEAgZXhwYW5kX3NpbmdsZV9pbmhlcml0YW5jZV9jaGlsZChQbGFubmVySW5mbyAqcm9v dCwgUmFuZ2VUYmxFbnRyeSAqcGFyZW50cnRlLAogCX0KIAllbHNlCiAJCWNoaWxkcnRlLT5pbmgg PSBmYWxzZTsKKwkvKgorCSAqIE1hcmsgY2hpbGQgdGFibGVzIGFzIG5vdCBiZWluZyBkaXJlY3Rs eSBtZW50aW9uZWQgaW4gdGhlIHF1ZXJ5LiAgVGhpcworCSAqIGFsbG93cyB0aGUgZXhlY3V0b3In cyBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKCkgdG8gY29udmVuaWVudGx5CisJICogaWRlbnRp ZnkgaXQgYXMgYW4gaW5oZXJpdGFuY2UgY2hpbGQgdGFibGUuCisJICovCisJY2hpbGRydGUtPmlu RnJvbUNsID0gZmFsc2U7CiAJY2hpbGRydGUtPnNlY3VyaXR5UXVhbHMgPSBOSUw7CiAKIAkvKgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9hbmFseXplLmMKaW5kZXggN2ExZGZiNjM2NC4uY2YyNjlmOGM1MyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvYW5h bHl6ZS5jCkBAIC0zMzA1LDEwICszMzA1LDkgQEAgdHJhbnNmb3JtTG9ja2luZ0NsYXVzZShQYXJz ZVN0YXRlICpwc3RhdGUsIFF1ZXJ5ICpxcnksIExvY2tpbmdDbGF1c2UgKmxjLAogCQkvKgogCQkg KiBMb2NrIGFsbCByZWd1bGFyIHRhYmxlcyB1c2VkIGluIHF1ZXJ5IGFuZCBpdHMgc3VicXVlcmll cy4gIFdlCiAJCSAqIGV4YW1pbmUgaW5Gcm9tQ2wgdG8gZXhjbHVkZSBhdXRvLWFkZGVkIFJURXMs IHBhcnRpY3VsYXJseSBORVcvT0xECi0JCSAqIGluIHJ1bGVzLiAgVGhpcyBpcyBhIGJpdCBvZiBh biBhYnVzZSBvZiBhIG1vc3RseS1vYnNvbGV0ZSBmbGFnLCBidXQKLQkJICogaXQncyBjb252ZW5p ZW50LiAgV2UgY2FuJ3QgcmVseSBvbiB0aGUgbmFtZXNwYWNlIG1lY2hhbmlzbSB0aGF0IGhhcwot CQkgKiBsYXJnZWx5IHJlcGxhY2VkIGluRnJvbUNsLCBzaW5jZSBmb3IgZXhhbXBsZSB3ZSBuZWVk IHRvIGxvY2sKLQkJICogYmFzZS1yZWxhdGlvbiBSVEVzIGV2ZW4gaWYgdGhleSBhcmUgbWFza2Vk IGJ5IHVwcGVyIGpvaW5zLgorCQkgKiBpbiBydWxlcy4gIFdlIGNhbid0IHJlbHkgb24gdGhlIG5h bWVzcGFjZSBtZWNoYW5pc20gc2luY2UgZm9yCisJCSAqIGV4YW1wbGUgd2UgbmVlZCB0byBsb2Nr IGJhc2UtcmVsYXRpb24gUlRFcyBldmVuIGlmIHRoZXkgYXJlIG1hc2tlZAorCQkgKiBieSB1cHBl ciBqb2lucy4KIAkJICovCiAJCWkgPSAwOwogCQlmb3JlYWNoKHJ0LCBxcnktPnJ0YWJsZSkKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25v ZGVzL3BhcnNlbm9kZXMuaAppbmRleCBmZWY0YzcxNGI4Li5kODc1ZTExMTkyIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCkBAIC05OTQsMTEgKzk5NCwxNiBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRp b25DbWQKICAqCiAgKgkgIGluRnJvbUNsIG1hcmtzIHRob3NlIHJhbmdlIHZhcmlhYmxlcyB0aGF0 IGFyZSBsaXN0ZWQgaW4gdGhlIEZST00gY2xhdXNlLgogICoJICBJdCdzIGZhbHNlIGZvciBSVEVz IHRoYXQgYXJlIGFkZGVkIHRvIGEgcXVlcnkgYmVoaW5kIHRoZSBzY2VuZXMsIHN1Y2gKLSAqCSAg YXMgdGhlIE5FVyBhbmQgT0xEIHZhcmlhYmxlcyBmb3IgYSBydWxlLCBvciB0aGUgc3VicXVlcmll cyBvZiBhIFVOSU9OLgorICoJICBhcyB0aGUgTkVXIGFuZCBPTEQgdmFyaWFibGVzIGZvciBhIHJ1 bGUsIG9yIHRoZSBzdWJxdWVyaWVzIG9mIGEgVU5JT04sCisgKgkgIG9yIHRoZSBSVEVzIG9mIGlu aGVyaXRhbmNlIGNoaWxkIHRhYmxlcyB0aGF0IGFyZSBhZGRlZCBieSB0aGUgcGxhbm5lci4KICAq CSAgVGhpcyBmbGFnIGlzIG5vdCB1c2VkIGR1cmluZyBwYXJzaW5nIChleGNlcHQgaW4gdHJhbnNm b3JtTG9ja2luZ0NsYXVzZSwKICAqCSAgcS52Lik7IHRoZSBwYXJzZXIgbm93IHVzZXMgYSBzZXBh cmF0ZSAibmFtZXNwYWNlIiBkYXRhIHN0cnVjdHVyZSB0bwogICoJICBjb250cm9sIHZpc2liaWxp dHkuICBCdXQgaXQgaXMgbmVlZGVkIGJ5IHJ1bGV1dGlscy5jIHRvIGRldGVybWluZQotICoJICB3 aGV0aGVyIFJURXMgc2hvdWxkIGJlIHNob3duIGluIGRlY29tcGlsZWQgcXVlcmllcy4KKyAqCSAg d2hldGhlciBSVEVzIHNob3VsZCBiZSBzaG93biBpbiBkZWNvbXBpbGVkIHF1ZXJpZXMuICBJdCBp cyB1c2VkIGJ5IHRoZQorICoJICBleGVjdXRvciB0byBkZXRlcm1pbmUgdGhhdCBhIGdpdmVuIFJU RV9SRUxBVElPTiBlbnRyeSBiZWxvbmdzIHRvIGEgdGFibGUKKyAqCSAgZGlyZWN0bHkgbWVudGlv bmVkIGluIHRoZSBxdWVyeSBvciB0byBhIGNoaWxkIHRhYmxlIGFkZGVkIGJ5IHRoZSBwbGFubmVy LgorICoJICBJdCBuZWVkcyB0byBrbm93IHRoYXQgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZSBjaGls ZCB0YWJsZXMgaW4gYSBwbGFuIG5lZWQKKyAqCSAgdG8gYmUgbG9ja2VkLgogICoKICAqCSAgc2Vj dXJpdHlRdWFscyBpcyBhIGxpc3Qgb2Ygc2VjdXJpdHkgYmFycmllciBxdWFscyAoYm9vbGVhbiBl eHByZXNzaW9ucyksCiAgKgkgIHRvIGJlIHRlc3RlZCBpbiB0aGUgbGlzdGVkIG9yZGVyIGJlZm9y ZSByZXR1cm5pbmcgYSByb3cgZnJvbSB0aGUKLS0gCjIuMzUuMwoK --00000000000082dd050604ad25e6 Content-Type: application/octet-stream; name="v47-0008-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Disposition: attachment; filename="v47-0008-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lm7ic0o50 RnJvbSBmMjhmOGU1OGQzZmQ0MTIwZTQ3MTBmNWFhOWZlNDA2MGQwNjRkZjIyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNiBTZXAgMjAyMyAxNzo1NDoxOSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ3 IDgvOF0gVHJhY2sgb3BlbmVkIHJhbmdlIHRhYmxlIHJlbGF0aW9ucyBpbiBhIExpc3QgaW4KIEVT dGF0ZQoKVGhpcyBtYWtlcyBFeGVjQ2xvc2VSYW5nZVRhYmxlUmVsYXRpb25zIGZhc3RlciB3aGVu IHRoZXJlIGFyZSBtYW55CnJlbGF0aW9ucyBpbiB0aGUgcmFuZ2UgdGFibGUgYnV0IG9ubHkgYSBm ZXcgYXJlIG9wZW5lZCBkdXJpbmcKZXhlY3V0aW9uLCBzdWNoIGFzIHdoZW4gcnVuLXRpbWUgcHJ1 bmluZyBraWNrcyBpbiBvbiBhbiBBcHBlbmQKY29udGFpbmluZyB0aG91c2FuZHMgb2YgcGFydGl0 aW9uIHN1YnBsYW5zLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQStIaXdxRkdr TVNnZTZUZ0M5S1F6ZGUwb2hwQXljTFF1Vjdvb2l0RUVwYktCME9fbWdAbWFpbC5nbWFpbC5jb20K LS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICB8IDkgKysrKystLS0tCiBzcmMv YmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyB8IDIgKysKIHNyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oICAgIHwgMiArKwogMyBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDQg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggOWEzZjZjNTk3OC4uOWQ4 OGNmMzBjYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC0xNjUwLDEyICsxNjUwLDEzIEBA IEV4ZWNDbG9zZVJlc3VsdFJlbGF0aW9ucyhFU3RhdGUgKmVzdGF0ZSkKIHZvaWQKIEV4ZWNDbG9z ZVJhbmdlVGFibGVSZWxhdGlvbnMoRVN0YXRlICplc3RhdGUpCiB7Ci0JaW50CQkJaTsKKwlMaXN0 Q2VsbCAqbGM7CiAKLQlmb3IgKGkgPSAwOyBpIDwgZXN0YXRlLT5lc19yYW5nZV90YWJsZV9zaXpl OyBpKyspCisJZm9yZWFjaChsYywgZXN0YXRlLT5lc19vcGVuZWRfcmVsYXRpb25zKQogCXsKLQkJ aWYgKGVzdGF0ZS0+ZXNfcmVsYXRpb25zW2ldKQotCQkJdGFibGVfY2xvc2UoZXN0YXRlLT5lc19y ZWxhdGlvbnNbaV0sIE5vTG9jayk7CisJCVJlbGF0aW9uIHJlbCA9IGxmaXJzdChsYyk7CisKKwkJ dGFibGVfY2xvc2UocmVsLCBOb0xvY2spOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMu YwppbmRleCA5NGM4ZTVlODc1Li4zZDFkNDY3ODA3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjVXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMu YwpAQCAtODEyLDYgKzgxMiw4IEBAIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oRVN0YXRlICpl c3RhdGUsIEluZGV4IHJ0aSkKIAkJfQogCiAJCWVzdGF0ZS0+ZXNfcmVsYXRpb25zW3J0aSAtIDFd ID0gcmVsOworCQllc3RhdGUtPmVzX29wZW5lZF9yZWxhdGlvbnMgPSBsYXBwZW5kKGVzdGF0ZS0+ ZXNfb3BlbmVkX3JlbGF0aW9ucywKKwkJCQkJCQkJCQkJICByZWwpOwogCX0KIAogCXJldHVybiBy ZWw7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDA5MjJiZTY2NzguLmZiYTE1Mjc3OTIgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL2V4ZWNub2Rlcy5oCkBAIC02MTksNiArNjE5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgRVN0YXRl CiAJSW5kZXgJCWVzX3JhbmdlX3RhYmxlX3NpemU7CS8qIHNpemUgb2YgdGhlIHJhbmdlIHRhYmxl IGFycmF5cyAqLwogCVJlbGF0aW9uICAgKmVzX3JlbGF0aW9uczsJLyogQXJyYXkgb2YgcGVyLXJh bmdlLXRhYmxlLWVudHJ5IFJlbGF0aW9uCiAJCQkJCQkJCSAqIHBvaW50ZXJzLCBvciBOVUxMIGlm IG5vdCB5ZXQgb3BlbmVkICovCisJTGlzdAkgICAqZXNfb3BlbmVkX3JlbGF0aW9uczsgLyogTGlz dCBvZiBub24tTlVMTCBlbnRyaWVzIGluCisJCQkJCQkJCQkgICogZXNfcmVsYXRpb25zIGluIG5v IHNwZWNpZmljIG9yZGVyICovCiAJc3RydWN0IEV4ZWNSb3dNYXJrICoqZXNfcm93bWFya3M7CS8q IEFycmF5IG9mIHBlci1yYW5nZS10YWJsZS1lbnRyeQogCQkJCQkJCQkJCSAqIEV4ZWNSb3dNYXJr cywgb3IgTlVMTCBpZiBub25lICovCiAJTGlzdAkgICAqZXNfcnRlcGVybWluZm9zOwkvKiBMaXN0 IG9mIFJURVBlcm1pc3Npb25JbmZvICovCi0tIAoyLjM1LjMKCg== --00000000000082dd050604ad25e6 Content-Type: application/octet-stream; name="v47-0007-Delay-locking-of-child-tables-in-cached-plans-un.patch" Content-Disposition: attachment; filename="v47-0007-Delay-locking-of-child-tables-in-cached-plans-un.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lm7ic0o91 RnJvbSAzYWNmMjM5ZDdkM2U0Y2ExZGIxYWFiMmIyNTg1OTBjY2Q2Y2RhODdiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNiBTZXAgMjAyMyAxNzo1NDoxNSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ3 IDcvOF0gRGVsYXkgbG9ja2luZyBvZiBjaGlsZCB0YWJsZXMgaW4gY2FjaGVkIHBsYW5zIHVudGls CiBFeGVjdXRvclN0YXJ0KCkKCkN1cnJlbnRseSwgR2V0Q2FjaGVkUGxhbigpIHRha2VzIGEgbG9j ayBvbiBhbGwgcmVsYXRpb25zIGNvbnRhaW5lZCBpbgphIGNhY2hlZCBwbGFuIGJlZm9yZSByZXR1 cm5pbmcgaXQgYXMgYSB2YWxpZCBwbGFuIHRvIGl0cyBjYWxsZXJzIGZvcgpleGVjdXRpb24uICBP bmUgZGlzYWR2YW50YWdlIGlzIHRoYXQgaWYgdGhlIHBsYW4gY29udGFpbnMgcGFydGl0aW9ucwp0 aGF0IGFyZSBwcnVuYWJsZSB3aXRoIGNvbmRpdGlvbnMgaW52b2x2aW5nIEVYVEVSTiBwYXJhbWV0 ZXJzIGFuZApvdGhlciBzdGFibGUgZXhwcmVzc2lvbnMgKGtub3duIGFzICJpbml0aWFsIHBydW5p bmciKSwgbWFueSBvZiB0aGVtCndvdWxkIGJlIGxvY2tlZCB1bm5lY2Vzc2FyaWx5LCBiZWNhdXNl IG9ubHkgdGhvc2UgdGhhdCBzdXJ2aXZlCmluaXRpYWwgcHJ1bmluZyBuZWVkIHRvIGhhdmUgYmVl biBsb2NrZWQuICBMb2NraW5nIGFsbCBwYXJ0aXRpb25zIHRoaXMKd2F5IGNhdXNlcyBzaWduaWZp Y2FudCBkZWxheSB3aGVuIHRoZXJlIGFyZSBtYW55IHBhcnRpdGlvbnMuICBOb3RlCnRoYXQgaW5p dGlhbCBwcnVuaW5nIG9jY3VycyBkdXJpbmcgZXhlY3V0b3IncyBpbml0aWFsaXphdGlvbiBvZiB0 aGUKcGxhbiwgdGhhdCBpcywgRXhlY0luaXROb2RlKCkuCgpUaGlzIGNvbW1pdCByZWFycmFuZ2Vz IHRoaW5ncyB0byBtb3ZlIHRoZSBsb2NraW5nIG9mIGNoaWxkIHRhYmxlcwpyZWZlcmVuY2VkIGlu IGEgY2FjaGVkIHBsYW4gdG8gb2NjdXIgZHVyaW5nIEV4ZWNJbml0Tm9kZSgpIHNvIHRoYXQKaW5p dGlhbCBwcnVuaW5nIGluIHRoZSBFeGVjSW5pdE5vZGUoKSBzdWJyb3V0aW5lcyBvZiB0aGUgcGxh biBub2Rlcwp0aGF0IHN1cHBvcnQgcHJ1bmluZyBjYW4gZWxpbWluYXRlIGFueSBjaGlsZCB0YWJs ZXMgdGhhdCBuZWVkIG5vdCBiZQpzY2FubmVkIGFuZCB0aHVzIGxvY2tlZC4KClRvIGRldGVybWlu ZSB0aGF0IGEgZ2l2ZW4gdGFibGUgaXMgYSBjaGlsZCB0YWJsZSwKRXhlY0dldFJhbmdlVGFibGVS ZWxhdGlvbigpIG5vdyBsb29rcyBhdCB0aGUgUlRFJ3MgaW5Gcm9tQ2wgZmllbGQsCndoaWNoIGlz IG9ubHkgdHJ1ZSBmb3IgdGFibGVzIHRoYXQgYXJlIGRpcmVjdGx5IG1lbnRpb25lZCBpbiB0aGUK cXVlcnkgYnV0IGZhbHNlIGZvciBjaGlsZCB0YWJsZXMuICBOb3RlIHRoYXQgYW55IHRhYmxlcyB3 aG9zZSBSVEVzJwppbkZyb21DbCBpcyB0cnVlIHdvdWxkIGFscmVhZHkgaGF2ZSBiZWVuIGxvY2tl ZCBieSBHZXRDYWNoZWRQbGFuKCksCnNvIG5lZWQgbm90IGJlIGxvY2tlZCBhZ2FpbiBkdXJpbmcg ZXhlY3V0aW9uLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQStIaXdxRkdrTVNn ZTZUZ0M5S1F6ZGUwb2hwQXljTFF1Vjdvb2l0RUVwYktCME9fbWdAbWFpbC5nbWFpbC5jb20KLS0t CiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyAgICAgICAgICAgICAgICAgfCAgIDMgKy0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMgICAgICAgICAgICAgICB8ICAgMiArLQog c3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgICAgICAgICAgICAgIHwgICA4ICstCiBz cmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYyAgICAgICAgICAgICAgfCAgIDEgKwogc3Jj L2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMv YmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL1JFQURNRSAgICAgICAgICAgICAgICAgICB8ICAzNiArKystCiBzcmMv YmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICAgICAgICAgICAgICAgfCAgMTggKy0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jICAgICAgICAgICB8ICAgOSArLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jICAgICAgICAgIHwgIDEwICsrCiBzcmMvYmFj a2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyAgICAgICAgICAgICAgfCAgNjEgKysrKystLQogc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyAgICAgICAgICAgICB8ICAxOSArKysKIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jICAgICAgICB8ICAxOSArKysKIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL3NwaS5jICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jICAgICAgICAgICAgICAgfCAgNDUgKysrKysKIHNyYy9i YWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgICAgICAgICAgICAgICAgICAgICB8ICAgNyArLQogc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgICAgICAgICAgIHwgIDIxICsrKwogc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMgICAgICAgICAgIHwgMTU0ICsrKysrKystLS0t LS0tLS0tCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmggICAgICAgICAgICAgICAgfCAg IDIgKy0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmggICAgICAgICAgICAgICB8ICAg NCArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oICAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmggICAgICAgICAgICAgICAgICAgIHwgICAxICsK IHNyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oICAgICAgICAgICAgICAgICB8ICAgMSArCiBz cmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZSAgICAgfCAgIDMgKy0KIC4u Li9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9kZWxheV9leGVjdXRpb24uYyB8ICA2NyArKysrKysr LQogLi4uL2V4cGVjdGVkL2NhY2hlZC1wbGFuLXJlcGxhbi5vdXQgICAgICAgICAgIHwgMTU2ICsr KysrKysrKysrKysrKysrKwogLi4uL3NwZWNzL2NhY2hlZC1wbGFuLXJlcGxhbi5zcGVjICAgICAg ICAgICAgIHwgIDYxICsrKysrKysKIDI4IGZpbGVzIGNoYW5nZWQsIDU4NiBpbnNlcnRpb25zKCsp LCAxMjkgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9k ZWxheV9leGVjdXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4tcmVwbGFuLm91dAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL3NwZWNzL2NhY2hlZC1w bGFuLXJlcGxhbi5zcGVjCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRv LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwppbmRleCBhNDU0ODlmOGY1Li5hYjhi ZjBkZjcyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwpAQCAtNTU4LDcgKzU1OCw4IEBAIEJlZ2luQ29w eVRvKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJKChEUl9jb3B5ICopIGRlc3QpLT5jc3RhdGUgPSBj c3RhdGU7CiAKIAkJLyogQ3JlYXRlIGEgUXVlcnlEZXNjIHJlcXVlc3Rpbmcgbm8gb3V0cHV0ICov Ci0JCWNzdGF0ZS0+cXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHBzdGF0ZS0+cF9z b3VyY2V0ZXh0LAorCQljc3RhdGUtPnF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBO VUxMLAorCQkJCQkJCQkJCQlwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkJCQkJR2V0QWN0 aXZlU25hcHNob3QoKSwKIAkJCQkJCQkJCQkJSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQkJCQlk ZXN0LCBOVUxMLCBOVUxMLCAwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Ny ZWF0ZWFzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCmluZGV4IDE2N2RiNGNm NTYuLmU1Y2NlNGMwN2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFz LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYwpAQCAtMzI1LDcgKzMyNSw3 IEBAIEV4ZWNDcmVhdGVUYWJsZUFzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlVGFibGVBc1N0 bXQgKnN0bXQsCiAJCVVwZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CiAKIAkJLyogQ3Jl YXRlIGEgUXVlcnlEZXNjLCByZWRpcmVjdGluZyBvdXRwdXQgdG8gb3VyIHR1cGxlIHJlY2VpdmVy ICovCi0JCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBwc3RhdGUtPnBfc291cmNl dGV4dCwKKwkJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIE5VTEwsIHBzdGF0ZS0+ cF9zb3VyY2V0ZXh0LAogCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBz aG90LAogCQkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgMCk7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 cGxhaW4uYwppbmRleCBmZTkzMTRiYzk2Li42MTcxYTIwZmUyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFp bi5jCkBAIC00MTYsNyArNDE2LDcgQEAgRXhwbGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50 IGN1cnNvck9wdGlvbnMsCiAJCQlCdWZmZXJVc2FnZUFjY3VtRGlmZigmYnVmdXNhZ2UsICZwZ0J1 ZmZlclVzYWdlLCAmYnVmdXNhZ2Vfc3RhcnQpOwogCQl9CiAKLQkJcXVlcnlEZXNjID0gRXhwbGFp blF1ZXJ5RGVzYyhwbGFuLCBxdWVyeVN0cmluZywgaW50bywgZXMsCisJCXF1ZXJ5RGVzYyA9IEV4 cGxhaW5RdWVyeURlc2MocGxhbiwgTlVMTCwgcXVlcnlTdHJpbmcsIGludG8sIGVzLAogCQkJCQkJ CQkJIHBhcmFtcywgcXVlcnlFbnYpOwogCQlBc3NlcnQocXVlcnlEZXNjKTsKIApAQCAtNDI5LDkg KzQyOSwxMSBAQCBFeHBsYWluT25lUXVlcnkoUXVlcnkgKnF1ZXJ5LCBpbnQgY3Vyc29yT3B0aW9u cywKIC8qCiAgKiBFeHBsYWluUXVlcnlEZXNjCiAgKgkJU2V0IHVwIFF1ZXJ5RGVzYyBmb3IgRVhQ TEFJTmluZyBhIGdpdmVuIHBsYW4KKyAqCisgKiBUaGlzIHJldHVybnMgTlVMTCBpZiBjcGxhbiBp cyBmb3VuZCB0byBiZSBubyBsb25nZXIgdmFsaWQuCiAgKi8KIFF1ZXJ5RGVzYyAqCi1FeHBsYWlu UXVlcnlEZXNjKFBsYW5uZWRTdG10ICpzdG10LAorRXhwbGFpblF1ZXJ5RGVzYyhQbGFubmVkU3Rt dCAqc3RtdCwgQ2FjaGVkUGxhbiAqY3BsYW4sCiAJCQkJIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5n LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQkJCSBQYXJhbUxpc3RJbmZv IHBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpCiB7CkBAIC00NjcsNyArNDY5LDcg QEAgRXhwbGFpblF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqc3RtdCwKIAlVcGRhdGVBY3RpdmVTbmFw c2hvdENvbW1hbmRJZCgpOwogCiAJLyogQ3JlYXRlIGEgUXVlcnlEZXNjIGZvciB0aGUgcXVlcnkg Ki8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2Moc3RtdCwgcXVlcnlTdHJpbmcsCisJcXVl cnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHN0bXQsIGNwbGFuLCBxdWVyeVN0cmluZywKIAkJCQkJ CQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQlkZXN0LCBw YXJhbXMsIHF1ZXJ5RW52LCBpbnN0cnVtZW50X29wdGlvbik7CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5z aW9uLmMKaW5kZXggYjcwMmE2NWU4MS4uOTNhNjgzZTMxMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5z aW9uLmMKQEAgLTc5Nyw2ICs3OTcsNyBAQCBleGVjdXRlX3NxbF9zdHJpbmcoY29uc3QgY2hhciAq c3FsKQogCQkJCVF1ZXJ5RGVzYyAgKnFkZXNjOwogCiAJCQkJcWRlc2MgPSBDcmVhdGVRdWVyeURl c2Moc3RtdCwKKwkJCQkJCQkJCQlOVUxMLAogCQkJCQkJCQkJCXNxbCwKIAkJCQkJCQkJCQlHZXRB Y3RpdmVTbmFwc2hvdCgpLCBOVUxMLAogCQkJCQkJCQkJCWRlc3QsIE5VTEwsIE5VTEwsIDApOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvbWF0dmlldy5jCmluZGV4IDcxMjQ5OTRhNDMuLjM4Nzk1Y2U3Y2EgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9tYXR2aWV3LmMKQEAgLTQwOCw3ICs0MDgsNyBAQCByZWZyZXNoX21hdHZpZXdfZGF0YWZp bGwoRGVzdFJlY2VpdmVyICpkZXN0LCBRdWVyeSAqcXVlcnksCiAJVXBkYXRlQWN0aXZlU25hcHNo b3RDb21tYW5kSWQoKTsKIAogCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYywgcmVkaXJlY3Rpbmcgb3V0 cHV0IHRvIG91ciB0dXBsZSByZWNlaXZlciAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVz YyhwbGFuLCBxdWVyeVN0cmluZywKKwlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwg TlVMTCwgcXVlcnlTdHJpbmcsCiAJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRT bmFwc2hvdCwKIAkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBh cmUuYwppbmRleCBiY2RmNTZmZTMyLi5mOGQwYjBlZTI1IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9wcmVwYXJlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5j CkBAIC02NTAsNyArNjUwLDcgQEAgcmVwbGFuOgogCQl7CiAJCQlRdWVyeURlc2MgKnF1ZXJ5RGVz YzsKIAotCQkJcXVlcnlEZXNjID0gRXhwbGFpblF1ZXJ5RGVzYyhwc3RtdCwgcXVlcnlTdHJpbmcs CisJCQlxdWVyeURlc2MgPSBFeHBsYWluUXVlcnlEZXNjKHBzdG10LCBjcGxhbiwgcXVlcnlTdHJp bmcsCiAJCQkJCQkJCQkJIGludG8sIGVzLCBwYXJhbUxJLCBxdWVyeUVudik7CiAJCQlpZiAocXVl cnlEZXNjID09IE5VTEwpCiAJCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9S RUFETUUgYi9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUKaW5kZXggMTc3NzVhNDllMi4uNmQy MjQwNjEwZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRQpAQCAtMjgwLDYgKzI4MCwzNCBAQCBhcmUgdHlwaWNh bGx5IHJlc2V0IHRvIGVtcHR5IG9uY2UgcGVyIHR1cGxlLiAgUGVyLXR1cGxlIGNvbnRleHRzIGFy ZSB1c3VhbGx5CiBhc3NvY2lhdGVkIHdpdGggRXhwckNvbnRleHRzLCBhbmQgY29tbW9ubHkgZWFj aCBQbGFuU3RhdGUgbm9kZSBoYXMgaXRzIG93bgogRXhwckNvbnRleHQgdG8gZXZhbHVhdGUgaXRz IHF1YWwgYW5kIHRhcmdldGxpc3QgZXhwcmVzc2lvbnMgaW4uCiAKK1JlbGF0aW9uIExvY2tpbmcK Ky0tLS0tLS0tLS0tLS0tLS0KKworVHlwaWNhbGx5LCB3aGVuIHRoZSBleGVjdXRvciBpbml0aWFs aXplcyBhIHBsYW4gdHJlZSBmb3IgZXhlY3V0aW9uLCBpdCBkb2Vzbid0Citsb2NrIG5vbi1pbmRl eCByZWxhdGlvbnMgaWYgdGhlIHBsYW4gdHJlZSBpcyBmcmVzaGx5IGdlbmVyYXRlZCBhbmQgbm90 IGRlcml2ZWQKK2Zyb20gYSBDYWNoZWRQbGFuLiBUaGlzIGlzIGJlY2F1c2Ugc3VjaCBsb2NrcyBo YXZlIGFscmVhZHkgYmVlbiBlc3RhYmxpc2hlZAorZHVyaW5nIHRoZSBxdWVyeSdzIHBhcnNpbmcs IHJld3JpdGluZywgYW5kIHBsYW5uaW5nIHBoYXNlcy4gSG93ZXZlciwgd2l0aCBhCitjYWNoZWQg cGxhbiB0cmVlLCB0aGVyZSBjYW4gYmUgcmVsYXRpb25zIHRoYXQgcmVtYWluIHVubG9ja2VkLiBU aGUgZnVuY3Rpb24KK0dldENhY2hlZFBsYW4oKSBsb2NrcyByZWxhdGlvbnMgZXhpc3RpbmcgaW4g dGhlIHF1ZXJ5J3MgcmFuZ2UgdGFibGUgcHJlLXBsYW5uaW5nCitidXQgZG9lc24ndCBhY2NvdW50 IGZvciB0aG9zZSBhZGRlZCBkdXJpbmcgdGhlIHBsYW5uaW5nIHBoYXNlLiBDb25zZXF1ZW50bHks Citpbmhlcml0YW5jZSBjaGlsZCB0YWJsZXMsIGludHJvZHVjZWQgdG8gdGhlIHF1ZXJ5J3MgcmFu Z2UgdGFibGUgZHVyaW5nIHBsYW5uaW5nLAord29uJ3QgYmUgbG9ja2VkIHdoZW4gdGhlIGNhY2hl ZCBwbGFuIHJlYWNoZXMgdGhlIGV4ZWN1dG9yLgorCitUaGUgZGVjaXNpb24gdG8gZGVmZXIgbG9j a2luZyBjaGlsZCB0YWJsZXMgd2l0aCBHZXRDYWNoZWRQbGFuKCkgYXJpc2VzIGZyb20gdGhlCitm YWN0IHRoYXQgbm90IGFsbCBtaWdodCBiZSBhY2Nlc3NlZCBkdXJpbmcgcGxhbiBleGVjdXRpb24u IEZvciBpbnN0YW5jZSwgaWYKK2NoaWxkIHRhYmxlcyBhcmUgcGFydGl0aW9ucywgc29tZSBtaWdo dCBiZSBvbWl0dGVkIGR1ZSB0byBwcnVuaW5nIGF0CitleGVjdXRpb24taW5pdGlhbGl6YXRpb24t dGltZS4gVGh1cywgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIGxvY2tpbmcgdGhlc2UgY2hpbGQKK3Rh YmxlcyBpcyBwdXNoZWQgdG8gZXhlY3V0aW9uLWluaXRpYWxpemF0aW9uLXRpbWUsIHRha2luZyBw bGFjZSBpbiBFeGVjSW5pdE5vZGUoKQorZm9yIHBsYW4gbm9kZXMgZW5jb21wYXNzaW5nIHRoZXNl IHRhYmxlcy4KKworVGhpcyBhcHByb2FjaCBvcGVucyBhIHdpbmRvdyB3aGVyZSBhIGNhY2hlZCBw bGFuIHRyZWUgd2l0aCBjaGlsZCB0YWJsZXMgY291bGQKK2JlY29tZSBvdXRkYXRlZCBpZiBhbm90 aGVyIGJhY2tlbmQgbW9kaWZpZXMgdGhlc2UgdGFibGVzIGJlZm9yZSBFeGVjSW5pdE5vZGUoKQor bG9ja3MgdGhlbS4gR2l2ZW4gdGhpcywgdGhlIGV4ZWN1dG9yIGhhcyB0aGUgYWRkZWQgZHV0eSB0 byBjb25maXJtIHRoZSBwbGFuCit0cmVlJ3MgdmFsaWRpdHkgd2hlbmV2ZXIgaXQgbG9ja3MgYSBj aGlsZCB0YWJsZSBwb3N0IGV4ZWN1dGlvbi1pbml0aWFsaXphdGlvbi0KK3BydW5pbmcuIFRoaXMg dmFsaWRhdGlvbiBpcyBkb25lIGJ5IGNoZWNraW5nIHRoZSBDYWNoZWRQbGFuLmlzX3ZhbGlkIGF0 dHJpYnV0ZQorb2YgdGhlIENhY2hlZFBsYW4gcHJvdmlkZWQuIElmIHRoZSBwbGFuIHRyZWUgaXMg b3V0ZGF0ZWQgKGlzX3ZhbGlkPWZhbHNlKSwgdGhlCitleGVjdXRvciBoYWx0cyBhbnkgZnVydGhl ciBpbml0aWFsaXphdGlvbiBhbmQgYWxlcnRzIHRoZSBjYWxsZXIgdGhhdCB0aGV5IHNob3VsZAor cmV0cnkgZXhlY3V0aW9uIHdpdGggYW5vdGhlciBmcmVzaGx5IGNyZWF0ZWQgcGxhbiB0cmVlLgog CiBRdWVyeSBQcm9jZXNzaW5nIENvbnRyb2wgRmxvdwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KQEAgLTMxNiw3ICszNDQsMTMgQEAgVGhpcyBpcyBhIHNrZXRjaCBvZiBjb250cm9sIGZs b3cgZm9yIGZ1bGwgcXVlcnkgcHJvY2Vzc2luZzoKIAogCUZyZWVRdWVyeURlc2MKIAotUGVyIGFi b3ZlIGNvbW1lbnRzLCBpdCdzIG5vdCByZWFsbHkgY3JpdGljYWwgZm9yIEV4ZWNFbmROb2RlIHRv IGZyZWUgYW55CitBcyBtZW50aW9uZWQgaW4gdGhlICJSZWxhdGlvbiBMb2NraW5nIiBzZWN0aW9u LCBpZiB0aGUgcGxhbiB0cmVlIGlzIGZvdW5kIHRvCitiZSBzdGFsZSBkdXJpbmcgb25lIG9mIHRo ZSByZWN1cnNpdmUgY2FsbHMgb2YgRXhlY0luaXROb2RlKCkgYWZ0ZXIgdGFraW5nIGEKK2xvY2sg b24gYSBjaGlsZCB0YWJsZSwgdGhlIGNvbnRyb2wgaXMgaW1tbWVkaWF0ZWx5IHJldHVybmVkIHRv IHRoZSBjYWxsZXIgb2YKK0V4ZWN1dG9yU3RhcnQoKSwgd2hpY2ggbXVzdCByZWRvIHRoZSBzdGVw cyBmcm9tIENyZWF0ZVF1ZXJ5RGVzYyB3aXRoIGEgbmV3CitwbGFuIHRyZWUuCisKK1BlciBhYm92 ZSBjb21tZW50cywgaXQncyBub3QgcmVhbGx5IGNyaXRpY2FsIGZvciBFeGVjRW5kUGxhbiB0byBm cmVlIGFueQogbWVtb3J5OyBpdCdsbCBhbGwgZ28gYXdheSBpbiBGcmVlRXhlY3V0b3JTdGF0ZSBh bnl3YXkuICBIb3dldmVyLCB3ZSBkbyBuZWVkIHRvCiBiZSBjYXJlZnVsIHRvIGNsb3NlIHJlbGF0 aW9ucywgZHJvcCBidWZmZXIgcGlucywgZXRjLCBzbyB3ZSBkbyBuZWVkIHRvIHNjYW4KIHRoZSBw bGFuIHN0YXRlIHRyZWUgdG8gZmluZCB0aGVzZSBzb3J0cyBvZiByZXNvdXJjZXMuCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYwppbmRleCAzODNlYmVlMDA4Li45YTNmNmM1OTc4IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNNYWluLmMKQEAgLTY0Miw2ICs2NDIsMTcgQEAgRXhlY0NoZWNrUGVybWlzc2lvbnMoTGlz dCAqcmFuZ2VUYWJsZSwgTGlzdCAqcnRlcGVybWluZm9zLAogCQlSVEVQZXJtaXNzaW9uSW5mbyAq cGVybWluZm8gPSBsZmlyc3Rfbm9kZShSVEVQZXJtaXNzaW9uSW5mbywgbCk7CiAKIAkJQXNzZXJ0 KE9pZElzVmFsaWQocGVybWluZm8tPnJlbGlkKSk7CisKKwkJLyoKKwkJICogUmVsYXRpb25zIHdo b3NlIHBlcm1pc3Npb25zIG5lZWQgdG8gYmUgY2hlY2tlZCBtdXN0IGFscmVhZHkgaGF2ZQorCQkg KiBiZWVuIGxvY2tlZCBieSB0aGUgcGFyc2VyIG9yIGJ5IEdldENhY2hlZFBsYW4oKSBpZiBhIGNh Y2hlZCBwbGFuIGlzCisJCSAqIGJlaW5nIGV4ZWN1dGVkLgorCQkgKgorCQkgKiBYWFggc2hvdWxk bid0IHdlIHNraXAgY2FsbGluZyBFeGVjQ2hlY2tQZXJtaXNzaW9ucyBmcm9tIEluaXRQbGFuCisJ CSAqIGluIGEgcGFyYWxsZWwgd29ya2VyPworCQkgKi8KKwkJQXNzZXJ0KENoZWNrUmVsTG9ja2Vk QnlNZShwZXJtaW5mby0+cmVsaWQsIEFjY2Vzc1NoYXJlTG9jaywgdHJ1ZSkgfHwKKwkJCSAgIElz UGFyYWxsZWxXb3JrZXIoKSk7CiAJCXJlc3VsdCA9IEV4ZWNDaGVja09uZVJlbFBlcm1zKHBlcm1p bmZvKTsKIAkJaWYgKCFyZXN1bHQpCiAJCXsKQEAgLTg4MCw3ICs4OTEsNyBAQCBJbml0UGxhbihR dWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAlFeGVjSW5pdFJhbmdlVGFibGUoZXN0 YXRlLCByYW5nZVRhYmxlLCBwbGFubmVkc3RtdC0+cGVybUluZm9zKTsKIAogCWVzdGF0ZS0+ZXNf cGxhbm5lZHN0bXQgPSBwbGFubmVkc3RtdDsKLQllc3RhdGUtPmVzX2NhY2hlZHBsYW4gPSBOVUxM OworCWVzdGF0ZS0+ZXNfY2FjaGVkcGxhbiA9IHF1ZXJ5RGVzYy0+Y3BsYW47CiAKIAkvKgogCSAq IE5leHQsIGJ1aWxkIHRoZSBFeGVjUm93TWFyayBhcnJheSBmcm9tIHRoZSBQbGFuUm93TWFyayhz KSwgaWYgYW55LgpAQCAtMTQ2NSw3ICsxNDc2LDcgQEAgRXhlY0dldEFuY2VzdG9yUmVzdWx0UmVs cyhFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbykKIAogCQkJLyoK IAkJCSAqIEFsbCBhbmNlc3RvcnMgdXAgdG8gdGhlIHJvb3QgdGFyZ2V0IHJlbGF0aW9uIG11c3Qg aGF2ZSBiZWVuCi0JCQkgKiBsb2NrZWQgYnkgdGhlIHBsYW5uZXIgb3IgQWNxdWlyZUV4ZWN1dG9y TG9ja3MoKS4KKwkJCSAqIGxvY2tlZCBieSB0aGUgcGxhbm5lciBvciBFeGVjTG9ja0FwcGVuZE5v bkxlYWZSZWxhdGlvbnMoKS4KIAkJCSAqLwogCQkJYW5jUmVsID0gdGFibGVfb3BlbihhbmNPaWQs IE5vTG9jayk7CiAJCQlySW5mbyA9IG1ha2VOb2RlKFJlc3VsdFJlbEluZm8pOwpAQCAtMjg5Nyw3 ICsyOTA4LDggQEAgRXZhbFBsYW5RdWFsU3RhcnQoRVBRU3RhdGUgKmVwcXN0YXRlLCBQbGFuICpw bGFuVHJlZSkKIAkgKiBDaGlsZCBFUFEgRVN0YXRlcyBzaGFyZSB0aGUgcGFyZW50J3MgY29weSBv ZiB1bmNoYW5naW5nIHN0YXRlIHN1Y2ggYXMKIAkgKiB0aGUgc25hcHNob3QsIHJhbmdldGFibGUs IGFuZCBleHRlcm5hbCBQYXJhbSBpbmZvLiAgVGhleSBuZWVkIHRoZWlyIG93bgogCSAqIGNvcGll cyBvZiBsb2NhbCBzdGF0ZSwgaW5jbHVkaW5nIGEgdHVwbGUgdGFibGUsIGVzX3BhcmFtX2V4ZWNf dmFscywKLQkgKiByZXN1bHQtcmVsIGluZm8sIGV0Yy4KKwkgKiByZXN1bHQtcmVsIGluZm8sIGV0 Yy4gIEFsc28sIHdlIGRvbid0IHBhc3MgdGhlIHBhcmVudCd0IGNvcHkgb2YgdGhlCisJICogQ2Fj aGVkUGxhbiwgYmVjYXVzZSBubyBuZXcgbG9ja3Mgd2lsbCBiZSB0YWtlbiBmb3IgRXZhbFBsYW5R dWFsKCkuCiAJICovCiAJcmNlc3RhdGUtPmVzX2RpcmVjdGlvbiA9IEZvcndhcmRTY2FuRGlyZWN0 aW9uOwogCXJjZXN0YXRlLT5lc19zbmFwc2hvdCA9IHBhcmVudGVzdGF0ZS0+ZXNfc25hcHNob3Q7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCmluZGV4IGY4NGEzYTE3ZDUuLjIwOWY2MThh MDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCkBAIC0xMjQ4LDggKzEyNDgsMTUg QEAgRXhlY1BhcmFsbGVsR2V0UXVlcnlEZXNjKHNobV90b2MgKnRvYywgRGVzdFJlY2VpdmVyICpy ZWNlaXZlciwKIAlwYXJhbXNwYWNlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlf UEFSQU1MSVNUSU5GTywgZmFsc2UpOwogCXBhcmFtTEkgPSBSZXN0b3JlUGFyYW1MaXN0KCZwYXJh bXNwYWNlKTsKIAotCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYyBmb3IgdGhlIHF1ZXJ5LiAqLworCS8q CisJICogU2V0IHVwIGEgUXVlcnlEZXNjIGZvciB0aGUgcXVlcnkuIFdoaWxlIHRoZSBsZWFkZXIg bWlnaHQndmUgc291cmNlZAorCSAqIHRoZSBwbGFuIHRyZWUgZnJvbSBhIENhY2hlZFBsYW4sIHdl IGRvbid0IGhhdmUgb25lIGhlcmUuIFRoaXMgaXNuJ3QKKwkgKiBhbiBpc3N1ZSBzaW5jZSB0aGUg bGVhZGVyIGVuc3VyZWQgdGhlIHJlcXVpcmVkIGxvY2tzLCBtYWtpbmcgb3VyCisJICogcGxhbiB0 cmVlIHZhbGlkLiBFdmVuIGFzIHdlIGdldCBvdXIgb3duIGxvY2sgY29waWVzIGluCisJICogRXhl Y0dldFJhbmdlVGFibGVSZWxhdGlvbigpLCB0aGV5J3JlIGFsbCBhbHJlYWR5IGhlbGQgYnkgdGhl IGxlYWRlci4KKwkgKi8KIAlyZXR1cm4gQ3JlYXRlUXVlcnlEZXNjKHBzdG10LAorCQkJCQkJICAg TlVMTCwKIAkJCQkJCSAgIHF1ZXJ5U3RyaW5nLAogCQkJCQkJICAgR2V0QWN0aXZlU25hcHNob3Qo KSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJICAgcmVjZWl2ZXIsIHBhcmFtTEksIE5VTEwsIGlu c3RydW1lbnRfb3B0aW9ucyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UGFydGl0aW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKaW5kZXgg ZTg4NDU1MzY4Yy4uY2Y3M2QyOGJhYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1BhcnRpdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24u YwpAQCAtNTEzLDYgKzUxMywxMyBAQCBFeGVjSW5pdFBhcnRpdGlvbkluZm8oTW9kaWZ5VGFibGVT dGF0ZSAqbXRzdGF0ZSwgRVN0YXRlICplc3RhdGUsCiAKIAlvbGRjeHQgPSBNZW1vcnlDb250ZXh0 U3dpdGNoVG8ocHJvdXRlLT5tZW1jeHQpOwogCisJLyoKKwkgKiBOb3RlIHRoYXQgd2hpbGUgd2Ug bm9ybWFsbHkgY2hlY2sgRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkgYWZ0ZXIgZWFjaAorCSAq IGxvY2sgdGFrZW4gZHVyaW5nIGV4ZWN1dGlvbiBpbml0aWFsaXphdGlvbiwgaXQgaXMgZmluZSBu b3QgZG8gc28gZm9yCisJICogcGFydGl0aW9ucyBvcGVuZWQgaGVyZSwgZm9yIHR1cGxlIHJvdXRp bmcuICBMb2NrcyB0YWtlbiBoZXJlIGNhbid0CisJICogcG9zc2libHkgaW52YWxpZGF0ZSB0aGUg cGxhbiBnaXZlbiB0aGF0IHRoZSBwbGFuIGRvZXNuJ3QgY29udGFpbiBhbnkKKwkgKiBpbmZvIGFi b3V0IHRob3NlIHBhcnRpdGlvbnMuCisJICovCiAJcGFydHJlbCA9IHRhYmxlX29wZW4ocGFydE9p ZCwgUm93RXhjbHVzaXZlTG9jayk7CiAKIAlsZWFmX3BhcnRfcnJpID0gbWFrZU5vZGUoUmVzdWx0 UmVsSW5mbyk7CkBAIC0xMTExLDYgKzExMTgsOSBAQCBFeGVjSW5pdFBhcnRpdGlvbkRpc3BhdGNo SW5mbyhFU3RhdGUgKmVzdGF0ZSwKIAkgKiBPbmx5IHN1Yi1wYXJ0aXRpb25lZCB0YWJsZXMgbmVl ZCB0byBiZSBsb2NrZWQgaGVyZS4gIFRoZSByb290CiAJICogcGFydGl0aW9uZWQgdGFibGUgd2ls bCBhbHJlYWR5IGhhdmUgYmVlbiBsb2NrZWQgYXMgaXQncyByZWZlcmVuY2VkIGluCiAJICogdGhl IHF1ZXJ5J3MgcnRhYmxlLgorCSAqCisJICogU2VlIHRoZSBjb21tZW50IGluIEV4ZWNJbml0UGFy dGl0aW9uSW5mbygpIGFib3V0IHRha2luZyBsb2NrcyBhbmQKKwkgKiBub3QgY2hlY2tpbmcgRXhl Y1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkgaGVyZS4KIAkgKi8KIAlpZiAocGFydG9pZCAhPSBSZWxh dGlvbkdldFJlbGlkKHByb3V0ZS0+cGFydGl0aW9uX3Jvb3QpKQogCQlyZWwgPSB0YWJsZV9vcGVu KHBhcnRvaWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1V0aWxzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwppbmRl eCBkYThhMTUxMWFjLi45NGM4ZTVlODc1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjVXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwpAQCAt Nzc5LDcgKzc3OSwyNSBAQCBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRl LCBJbmRleCBydGkpCiAKIAkJQXNzZXJ0KHJ0ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04pOwog Ci0JCWlmICghSXNQYXJhbGxlbFdvcmtlcigpKQorCQlpZiAoSXNQYXJhbGxlbFdvcmtlcigpIHx8 CisJCQkoZXN0YXRlLT5lc19jYWNoZWRwbGFuICE9IE5VTEwgJiYgIXJ0ZS0+aW5Gcm9tQ2wpKQor CQl7CisJCQkvKgorCQkJICogVGFrZSBhIGxvY2sgaWYgd2UgYXJlIGEgcGFyYWxsZWwgd29ya2Vy IG9yIGlmIHRoaXMgaXMgYSBjaGlsZAorCQkJICogdGFibGUgcmVmZXJlbmNlZCBpbiBhIGNhY2hl ZCBwbGFuLgorCQkJICoKKwkJCSAqIFBhcmFsbGVsIHdvcmtlcnMgbmVlZCB0byBoYXZlIHRoZWly IG93biBsb2NhbCBsb2NrIG9uIHRoZQorCQkJICogcmVsYXRpb24uICBUaGlzIGVuc3VyZXMgc2Fu ZSBiZWhhdmlvciBpbiBjYXNlIHRoZSBwYXJlbnQgcHJvY2VzcworCQkJICogZXhpdHMgYmVmb3Jl IHdlIGRvLgorCQkJICoKKwkJCSAqIFdoZW4gZXhlY3V0aW5nIGEgY2FjaGVkIHBsYW4sIGNoaWxk IHRhYmxlcyBtdXN0IGJlIGxvY2tlZAorCQkJICogaGVyZSwgYmVjYXVzZSBwbGFuY2FjaGUuYyAo R2V0Q2FjaGVkUGxhbigpKSB3b3VsZCBvbmx5IGhhdmUKKwkJCSAqIGxvY2tlZCB0YWJsZXMgbWVu dGlvbmVkIGluIHRoZSBxdWVyeSwgdGhhdCBpcywgdGFibGVzIHdob3NlCisJCQkgKiBSVEVzJyBp bkZyb21DbCBpcyB0cnVlLgorCQkJICovCisJCQlyZWwgPSB0YWJsZV9vcGVuKHJ0ZS0+cmVsaWQs IHJ0ZS0+cmVsbG9ja21vZGUpOworCQl9CisJCWVsc2UKIAkJewogCQkJLyoKIAkJCSAqIEluIGEg bm9ybWFsIHF1ZXJ5LCB3ZSBzaG91bGQgYWxyZWFkeSBoYXZlIHRoZSBhcHByb3ByaWF0ZSBsb2Nr LApAQCAtNzkyLDE1ICs4MTAsNiBAQCBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKEVTdGF0ZSAq ZXN0YXRlLCBJbmRleCBydGkpCiAJCQlBc3NlcnQocnRlLT5yZWxsb2NrbW9kZSA9PSBBY2Nlc3NT aGFyZUxvY2sgfHwKIAkJCQkgICBDaGVja1JlbGF0aW9uTG9ja2VkQnlNZShyZWwsIHJ0ZS0+cmVs bG9ja21vZGUsIGZhbHNlKSk7CiAJCX0KLQkJZWxzZQotCQl7Ci0JCQkvKgotCQkJICogSWYgd2Ug YXJlIGEgcGFyYWxsZWwgd29ya2VyLCB3ZSBuZWVkIHRvIG9idGFpbiBvdXIgb3duIGxvY2FsCi0J CQkgKiBsb2NrIG9uIHRoZSByZWxhdGlvbi4gIFRoaXMgZW5zdXJlcyBzYW5lIGJlaGF2aW9yIGlu IGNhc2UgdGhlCi0JCQkgKiBwYXJlbnQgcHJvY2VzcyBleGl0cyBiZWZvcmUgd2UgZG8uCi0JCQkg Ki8KLQkJCXJlbCA9IHRhYmxlX29wZW4ocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7Ci0J CX0KIAogCQllc3RhdGUtPmVzX3JlbGF0aW9uc1tydGkgLSAxXSA9IHJlbDsKIAl9CkBAIC04MDgs NiArODE3LDM4IEBAIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oRVN0YXRlICplc3RhdGUsIElu ZGV4IHJ0aSkKIAlyZXR1cm4gcmVsOwogfQogCisvKgorICogRXhlY0xvY2tBcHBlbmROb25MZWFm UmVsYXRpb25zCisgKgkJTG9jayBub24tbGVhZiByZWxhdGlvbnMgd2hvc2UgY2hpbGRyZW4gYXJl IHNjYW5uZWQgYnkgYSBnaXZlbgorICoJCUFwcGVuZC9NZXJnZUFwcGVuZCBub2RlCisgKi8KK3Zv aWQKK0V4ZWNMb2NrQXBwZW5kTm9uTGVhZlJlbGF0aW9ucyhFU3RhdGUgKmVzdGF0ZSwgTGlzdCAq YWxscGFydHJlbGlkcykKK3sKKwlMaXN0Q2VsbCAqbDsKKworCS8qIFRoaXMgc2hvdWxkIGdldCBj YWxsZWQgb25seSB3aGVuIGV4ZWN1dGluZyBjYWNoZWQgcGxhbnMuICovCisJQXNzZXJ0KGVzdGF0 ZS0+ZXNfY2FjaGVkcGxhbiAhPSBOVUxMKTsKKwlmb3JlYWNoKGwsIGFsbHBhcnRyZWxpZHMpCisJ eworCQlCaXRtYXBzZXQgKnBhcnRyZWxpZHMgPSBsZmlyc3Rfbm9kZShCaXRtYXBzZXQsIGwpOwor CQlpbnQJCWk7CisKKwkJLyoKKwkJICogTm90ZSB0aGF0IHdlIGRvbid0IGxvY2sgdGhlIGZpcnN0 IG1lbWJlciAoaT0wKSBvZiBlYWNoIGJpdG1hcHNldAorCQkgKiBiZWNhdXNlIGl0IHN0YW5kcyBm b3IgdGhlIHJvb3QgcGFyZW50IG1lbnRpb25lZCBpbiB0aGUgcXVlcnkgdGhhdAorCQkgKiBzaG91 bGQgYWx3YXlzIGhhdmUgYmVlbiBsb2NrZWQgYmVmb3JlIGVudGVyaW5nIHRoZSBleGVjdXRvci4K KwkJICovCisJCWkgPSAwOworCQl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIocGFydHJlbGlk cywgaSkpID4gMCkKKwkJeworCQkJUmFuZ2VUYmxFbnRyeSAqcnRlID0gZXhlY19ydF9mZXRjaChp LCBlc3RhdGUpOworCisJCQlMb2NrUmVsYXRpb25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2Nr bW9kZSk7CisJCX0KKwl9Cit9CisKIC8qCiAgKiBFeGVjSW5pdFJlc3VsdFJlbGF0aW9uCiAgKgkJ T3BlbiByZWxhdGlvbiBnaXZlbiBieSB0aGUgcGFzc2VkLWluIFJUIGluZGV4IGFuZCBmaWxsIGl0 cwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwppbmRleCA4Y2YwYjMxMzJkLi40ZGRmNGZkN2E5IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwpAQCAtODM4LDYgKzgzOCw3IEBAIHBvc3RxdWVsX3N0 YXJ0KGV4ZWN1dGlvbl9zdGF0ZSAqZXMsIFNRTEZ1bmN0aW9uQ2FjaGVQdHIgZmNhY2hlKQogCQlk ZXN0ID0gTm9uZV9SZWNlaXZlcjsKIAogCWVzLT5xZCA9IENyZWF0ZVF1ZXJ5RGVzYyhlcy0+c3Rt dCwKKwkJCQkJCQkgTlVMTCwJLyogZm1ncl9zcWwoKSBkb2Vzbid0IHVzZSBDYWNoZWRQbGFucyAq LwogCQkJCQkJCSBmY2FjaGUtPnNyYywKIAkJCQkJCQkgR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJ CQkJCQkgSW52YWxpZFNuYXBzaG90LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUFwcGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCmluZGV4IDU4 OGY1Mzg4YzcuLjIwMzMwYzVjNTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVBcHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKQEAgLTEz Myw2ICsxMzMsMjUgQEAgRXhlY0luaXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0 ZSwgaW50IGVmbGFncykKIAlhcHBlbmRzdGF0ZS0+YXNfc3luY2RvbmUgPSBmYWxzZTsKIAlhcHBl bmRzdGF0ZS0+YXNfYmVndW4gPSBmYWxzZTsKIAorCS8qCisJICogTG9jayBub24tbGVhZiBwYXJ0 aXRpb25zIHdob3NlIGxlYWYgY2hpbGRyZW4gYXJlIHByZXNlbnQgaW4KKwkgKiBub2RlLT5hcHBl bmRwbGFucy4gIE9ubHkgbmVlZCB0byBkbyBzbyBpZiBleGVjdXRpbmcgYSBjYWNoZWQKKwkgKiBw bGFuLCBiZWNhdXNlIGNoaWxkIHRhYmxlcyBwcmVzZW50IGluIGNhY2hlZCBwbGFucyBhcmUgbm90 CisJICogbG9ja2VkIGJlZm9yZSBleGVjdXRpb24uCisJICoKKwkgKiBYWFggLSBzb21lIG9mIHRo ZSBub24tbGVhZiBwYXJ0aXRpb25zIG1heSBhbHNvIGJlIG1lbnRpb25lZCBpbgorCSAqIHBhcnRf cHJ1bmVfaW5mbywgd2hpY2ggaWYgdGhleSBhcmUgd291bGQgZ2V0IGxvY2tlZCBhZ2FpbiBpbgor CSAqIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZygpIGJlY2F1c2UgaXQgY2FsbHMKKwkgKiBFeGVj R2V0UmFuZ2VUYWJsZVJlbGF0aW9uKCkgd2hpY2ggbG9ja3MgY2hpbGQgdGFibGVzLgorCSAqLwor CWlmIChlc3RhdGUtPmVzX2NhY2hlZHBsYW4pCisJeworCQlFeGVjTG9ja0FwcGVuZE5vbkxlYWZS ZWxhdGlvbnMoZXN0YXRlLCBub2RlLT5hbGxwYXJ0cmVsaWRzKTsKKwkJaWYgKCFFeGVjUGxhblN0 aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJldHVybiBOVUxMOworCisJfQorCiAJLyogSWYgcnVuLXRp bWUgcGFydGl0aW9uIHBydW5pbmcgaXMgZW5hYmxlZCwgdGhlbiBzZXQgdGhhdCB1cCBub3cgKi8K IAlpZiAobm9kZS0+cGFydF9wcnVuZV9pbmZvICE9IE5VTEwpCiAJewpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlTWVyZ2VBcHBlbmQuYwppbmRleCBjOWQ0MDZjMjMwLi5hOGY5MTU3MTkyIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwpAQCAtODEsNiArODEsMjUgQEAgRXhlY0lu aXRNZXJnZUFwcGVuZChNZXJnZUFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJbWVyZ2VzdGF0ZS0+cHMuc3RhdGUgPSBlc3RhdGU7CiAJbWVyZ2VzdGF0ZS0+cHMuRXhl Y1Byb2NOb2RlID0gRXhlY01lcmdlQXBwZW5kOwogCisJLyoKKwkgKiBMb2NrIG5vbi1sZWFmIHBh cnRpdGlvbnMgd2hvc2UgbGVhZiBjaGlsZHJlbiBhcmUgcHJlc2VudCBpbgorCSAqIG5vZGUtPm1l cmdlcGxhbnMuICBPbmx5IG5lZWQgdG8gZG8gc28gaWYgZXhlY3V0aW5nIGEgY2FjaGVkCisJICog cGxhbiwgYmVjYXVzZSBjaGlsZCB0YWJsZXMgcHJlc2VudCBpbiBjYWNoZWQgcGxhbnMgYXJlIG5v dAorCSAqIGxvY2tlZCBiZWZvcmUgZXhlY3V0aW9uLgorCSAqCisJICogWFhYIC0gc29tZSBvZiB0 aGUgbm9uLWxlYWYgcGFydGl0aW9ucyBtYXkgYWxzbyBiZSBtZW50aW9uZWQgaW4KKwkgKiBwYXJ0 X3BydW5lX2luZm8sIHdoaWNoIGlmIHRoZXkgYXJlIHdvdWxkIGdldCBsb2NrZWQgYWdhaW4gaW4K KwkgKiBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoKSBiZWNhdXNlIGl0IGNhbGxzCisJICogRXhl Y0dldFJhbmdlVGFibGVSZWxhdGlvbigpIHdoaWNoIGxvY2tzIGNoaWxkIHRhYmxlcy4KKwkgKi8K KwlpZiAoZXN0YXRlLT5lc19jYWNoZWRwbGFuKQorCXsKKwkJRXhlY0xvY2tBcHBlbmROb25MZWFm UmVsYXRpb25zKGVzdGF0ZSwgbm9kZS0+YWxscGFydHJlbGlkcyk7CisJCWlmICghRXhlY1BsYW5T dGlsbFZhbGlkKGVzdGF0ZSkpCisJCQlyZXR1cm4gTlVMTDsKKworCX0KKwogCS8qIElmIHJ1bi10 aW1lIHBhcnRpdGlvbiBwcnVuaW5nIGlzIGVuYWJsZWQsIHRoZW4gc2V0IHRoYXQgdXAgbm93ICov CiAJaWYgKG5vZGUtPnBhcnRfcHJ1bmVfaW5mbyAhPSBOVUxMKQogCXsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKaW5k ZXggNmE5NmQ3ZmMyMi4uOWM0ZWQ3NDI0MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivc3BpLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKQEAgLTI2ODAsNiArMjY4 MCw3IEBAIHJlcGxhbjoKIAkJCQkJc25hcCA9IEludmFsaWRTbmFwc2hvdDsKIAogCQkJCXFkZXNj ID0gQ3JlYXRlUXVlcnlEZXNjKHN0bXQsCisJCQkJCQkJCQkJY3BsYW4sCiAJCQkJCQkJCQkJcGxh bnNvdXJjZS0+cXVlcnlfc3RyaW5nLAogCQkJCQkJCQkJCXNuYXAsIGNyb3NzY2hlY2tfc25hcHNo b3QsCiAJCQkJCQkJCQkJZGVzdCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1n ci9sbWdyLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jCmluZGV4IGVlOWI4OWE2 NzIuLmM4MDdlOWNkY2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdy LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYwpAQCAtMjcsNiArMjcsNyBA QAogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaW52 YWxhZHQuaCIKICNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNj YWNoZS5oIgogCiAKIC8qCkBAIC0zNjQsNiArMzY1LDUwIEBAIENoZWNrUmVsYXRpb25Mb2NrZWRC eU1lKFJlbGF0aW9uIHJlbGF0aW9uLCBMT0NLTU9ERSBsb2NrbW9kZSwgYm9vbCBvcnN0cm9uZ2Vy KQogCXJldHVybiBmYWxzZTsKIH0KIAorLyoKKyAqCQlDaGVja1JlbExvY2tlZEJ5TWUKKyAqCisg KiBSZXR1cm5zIHRydWUgaWYgY3VycmVudCB0cmFuc2FjdGlvbiBob2xkcyBhIGxvY2sgb24gdGhl IGdpdmVuIHJlbGF0aW9uIG9mCisgKiBtb2RlICdsb2NrbW9kZScuICBJZiAnb3JzdHJvbmdlcicg aXMgdHJ1ZSwgYSBzdHJvbmdlciBsb2NrbW9kZSBpcyBhbHNvIE9LLgorICogKCJTdHJvbmdlciIg aXMgZGVmaW5lZCBhcyAibnVtZXJpY2FsbHkgaGlnaGVyIiwgd2hpY2ggaXMgYSBiaXQKKyAqIHNl bWFudGljYWxseSBkdWJpb3VzIGJ1dCBpcyBPSyBmb3IgdGhlIHB1cnBvc2VzIHdlIHVzZSB0aGlz IGZvci4pCisgKi8KK2Jvb2wKK0NoZWNrUmVsTG9ja2VkQnlNZShPaWQgcmVsaWQsIExPQ0tNT0RF IGxvY2ttb2RlLCBib29sIG9yc3Ryb25nZXIpCit7CisJT2lkCQkJZGJJZCA9IGdldF9yZWxfcmVs aXNzaGFyZWQocmVsaWQpID8gSW52YWxpZE9pZCA6IE15RGF0YWJhc2VJZDsKKwlMT0NLVEFHCQl0 YWc7CisKKwlTRVRfTE9DS1RBR19SRUxBVElPTih0YWcsIGRiSWQsIHJlbGlkKTsKKworCWlmIChM b2NrSGVsZEJ5TWUoJnRhZywgbG9ja21vZGUpKQorCQlyZXR1cm4gdHJ1ZTsKKworCWlmIChvcnN0 cm9uZ2VyKQorCXsKKwkJTE9DS01PREUJc2xvY2ttb2RlOworCisJCWZvciAoc2xvY2ttb2RlID0g bG9ja21vZGUgKyAxOworCQkJIHNsb2NrbW9kZSA8PSBNYXhMb2NrTW9kZTsKKwkJCSBzbG9ja21v ZGUrKykKKwkJeworCQkJaWYgKExvY2tIZWxkQnlNZSgmdGFnLCBzbG9ja21vZGUpKQorCQkJewor I2lmZGVmIE5PVF9VU0VECisJCQkJLyogU29tZXRpbWVzIHRoaXMgbWlnaHQgYmUgdXNlZnVsIGZv ciBkZWJ1Z2dpbmcgcHVycG9zZXMgKi8KKwkJCQllbG9nKFdBUk5JTkcsICJsb2NrIG1vZGUgJXMg c3Vic3RpdHV0ZWQgZm9yICVzIG9uIHJlbGF0aW9uICVzIiwKKwkJCQkJIEdldExvY2ttb2RlTmFt ZSh0YWcubG9ja3RhZ19sb2NrbWV0aG9kaWQsIHNsb2NrbW9kZSksCisJCQkJCSBHZXRMb2NrbW9k ZU5hbWUodGFnLmxvY2t0YWdfbG9ja21ldGhvZGlkLCBsb2NrbW9kZSksCisJCQkJCSBSZWxhdGlv bkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbikpOworI2VuZGlmCisJCQkJcmV0dXJuIHRydWU7CisJ CQl9CisJCX0KKwl9CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKIC8qCiAgKgkJTG9ja0hhc1dhaXRl cnNSZWxhdGlvbgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgYi9z cmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCmluZGV4IDlhOTZiNzdmMWUuLjQ4Y2Q2ZjQzMDQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNv cC9wcXVlcnkuYwpAQCAtNjAsNiArNjAsNyBAQCBzdGF0aWMgdm9pZCBEb1BvcnRhbFJld2luZChQ b3J0YWwgcG9ydGFsKTsKICAqLwogUXVlcnlEZXNjICoKIENyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVk U3RtdCAqcGxhbm5lZHN0bXQsCisJCQkJQ2FjaGVkUGxhbiAqY3BsYW4sCiAJCQkJY29uc3QgY2hh ciAqc291cmNlVGV4dCwKIAkJCQlTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQlTbmFwc2hvdCBjcm9z c2NoZWNrX3NuYXBzaG90LApAQCAtNzIsNiArNzMsNyBAQCBDcmVhdGVRdWVyeURlc2MoUGxhbm5l ZFN0bXQgKnBsYW5uZWRzdG10LAogCiAJcWQtPm9wZXJhdGlvbiA9IHBsYW5uZWRzdG10LT5jb21t YW5kVHlwZTsJLyogb3BlcmF0aW9uICovCiAJcWQtPnBsYW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7 CS8qIHBsYW4gKi8KKwlxZC0+Y3BsYW4gPSBjcGxhbjsJCQkJLyogQ2FjaGVkUGxhbiwgaWYgcGxh biBpcyBmcm9tIG9uZSAqLwogCXFkLT5zb3VyY2VUZXh0ID0gc291cmNlVGV4dDsJLyogcXVlcnkg dGV4dCAqLwogCXFkLT5zbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3QpOwkvKiBz bmFwc2hvdCAqLwogCS8qIFJJIGNoZWNrIHNuYXBzaG90ICovCkBAIC00MTAsNiArNDEyLDcgQEAg UG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJICog c2V0IHRoZSBkZXN0aW5hdGlvbiB0byBEZXN0Tm9uZS4KIAkJCQkgKi8KIAkJCQlxdWVyeURlc2Mg PSBDcmVhdGVRdWVyeURlc2MobGluaXRpYWxfbm9kZShQbGFubmVkU3RtdCwgcG9ydGFsLT5zdG10 cyksCisJCQkJCQkJCQkJCXBvcnRhbC0+Y3BsYW4sCiAJCQkJCQkJCQkJCXBvcnRhbC0+c291cmNl VGV4dCwKIAkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkJCQkJSW52YWxp ZFNuYXBzaG90LApAQCAtNDQwLDYgKzQ0Myw3IEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWws IFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCSAqLwogCQkJCWlmICghRXhlY3V0b3JTdGFydChx dWVyeURlc2MsIG15ZWZsYWdzKSkKIAkJCQl7CisJCQkJCUFzc2VydChxdWVyeURlc2MtPmNwbGFu KTsKIAkJCQkJRXhlY3V0b3JFbmQocXVlcnlEZXNjKTsKIAkJCQkJRnJlZVF1ZXJ5RGVzYyhxdWVy eURlc2MpOwogCQkJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwpAQCAtNTM4LDcgKzU0Miw3IEBAIFBv cnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCQkJICog Q3JlYXRlIHRoZSBRdWVyeURlc2MuICBEZXN0UmVjZWl2ZXIgd2lsbCBiZSBzZXQgaW4KIAkJCQkJ CSAqIFBvcnRhbFJ1bk11bHRpKCkgYmVmb3JlIGNhbGxpbmcgRXhlY3V0b3JSdW4oKS4KIAkJCQkJ CSAqLwotCQkJCQkJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sCisJCQkJCQlxdWVy eURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcG9ydGFsLT5jcGxhbiwKIAkJCQkJCQkJCQkJ CQlwb3J0YWwtPnNvdXJjZVRleHQsCiAJCQkJCQkJCQkJCQkJIWlzX3V0aWxpdHkgPwogCQkJCQkJ CQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCkgOgpAQCAtNTYyLDYgKzU2Niw3IEBAIFBvcnRhbFN0 YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCQkJaWYgKCFFeGVj dXRvclN0YXJ0KHF1ZXJ5RGVzYywgbXllZmxhZ3MpKQogCQkJCQkJewogCQkJCQkJCVBvcEFjdGl2 ZVNuYXBzaG90KCk7CisJCQkJCQkJQXNzZXJ0KHF1ZXJ5RGVzYy0+Y3BsYW4pOwogCQkJCQkJCUV4 ZWN1dG9yRW5kKHF1ZXJ5RGVzYyk7CiAJCQkJCQkJRnJlZVF1ZXJ5RGVzYyhxdWVyeURlc2MpOwog CQkJCQkJCXBsYW5fdmFsaWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL2xzeXNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMK aW5kZXggZmM2ZDI2N2U0NC4uMjcyNWQwMjMxMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvbHN5c2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2Nh Y2hlLmMKQEAgLTIwOTUsNiArMjA5NSwyNyBAQCBnZXRfcmVsX3BlcnNpc3RlbmNlKE9pZCByZWxp ZCkKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKgorICogZ2V0X3JlbF9yZWxpc3NoYXJlZAorICoK KyAqCQlSZXR1cm5zIGlmIHRoZSBnaXZlbiByZWxhdGlvbiBpcyBzaGFyZWQgb3Igbm90CisgKi8K K2Jvb2wKK2dldF9yZWxfcmVsaXNzaGFyZWQoT2lkIHJlbGlkKQoreworCUhlYXBUdXBsZQl0cDsK KwlGb3JtX3BnX2NsYXNzIHJlbHR1cDsKKwlib29sCQlyZXN1bHQ7CisKKwl0cCA9IFNlYXJjaFN5 c0NhY2hlMShSRUxPSUQsIE9iamVjdElkR2V0RGF0dW0ocmVsaWQpKTsKKwlpZiAoIUhlYXBUdXBs ZUlzVmFsaWQodHApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcmVs YXRpb24gJXUiLCByZWxpZCk7CisJcmVsdHVwID0gKEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVDVCh0 cCk7CisJcmVzdWx0ID0gcmVsdHVwLT5yZWxpc3NoYXJlZDsKKwlSZWxlYXNlU3lzQ2FjaGUodHAp OworCisJcmV0dXJuIHJlc3VsdDsKK30KIAogLyoJCQkJLS0tLS0tLS0tLSBUUkFOU0ZPUk0gQ0FD SEUgLS0tLS0tLS0tLQkJCQkJCSAqLwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9wbGFuY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCmlu ZGV4IDdkNDE2OGY4MmYuLjM1ZDkwM2NiOTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL3BsYW5jYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNo ZS5jCkBAIC0xMDQsMTMgKzEwNCwxMyBAQCBzdGF0aWMgdm9pZCBSZWxlYXNlR2VuZXJpY1BsYW4o Q2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSk7CiBzdGF0aWMgTGlzdCAqUmV2YWxpZGF0ZUNh Y2hlZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJCSAgIFF1ZXJ5 RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKIHN0YXRpYyBib29sIENoZWNrQ2FjaGVkUGxhbihDYWNo ZWRQbGFuU291cmNlICpwbGFuc291cmNlKTsKK3N0YXRpYyBib29sIEdlbmVyaWNQbGFuSXNWYWxp ZChDYWNoZWRQbGFuICpjcGxhbik7CiBzdGF0aWMgQ2FjaGVkUGxhbiAqQnVpbGRDYWNoZWRQbGFu KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIExpc3QgKnFsaXN0LAogCQkJCQkJCQkgICBQ YXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CiBz dGF0aWMgYm9vbCBjaG9vc2VfY3VzdG9tX3BsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJj ZSwKIAkJCQkJCQkgICBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zKTsKIHN0YXRpYyBkb3VibGUg Y2FjaGVkX3BsYW5fY29zdChDYWNoZWRQbGFuICpwbGFuLCBib29sIGluY2x1ZGVfcGxhbm5lcik7 CiBzdGF0aWMgUXVlcnkgKlF1ZXJ5TGlzdEdldFByaW1hcnlTdG10KExpc3QgKnN0bXRzKTsKLXN0 YXRpYyB2b2lkIEFjcXVpcmVFeGVjdXRvckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1 aXJlKTsKIHN0YXRpYyB2b2lkIEFjcXVpcmVQbGFubmVyTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBi b29sIGFjcXVpcmUpOwogc3RhdGljIHZvaWQgU2NhblF1ZXJ5Rm9yTG9ja3MoUXVlcnkgKnBhcnNl dHJlZSwgYm9vbCBhY3F1aXJlKTsKIHN0YXRpYyBib29sIFNjYW5RdWVyeVdhbGtlcihOb2RlICpu b2RlLCBib29sICphY3F1aXJlKTsKQEAgLTc5Miw4ICs3OTIsMTMgQEAgUmV2YWxpZGF0ZUNhY2hl ZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAgKiBDYWxsZXIgbXVzdCBoYXZl IGFscmVhZHkgY2FsbGVkIFJldmFsaWRhdGVDYWNoZWRRdWVyeSB0byB2ZXJpZnkgdGhhdCB0aGUK ICAqIHF1ZXJ5dHJlZSBpcyB1cCB0byBkYXRlLgogICoKLSAqIE9uIGEgInRydWUiIHJldHVybiwg d2UgaGF2ZSBhY3F1aXJlZCB0aGUgbG9ja3MgbmVlZGVkIHRvIHJ1biB0aGUgcGxhbi4KLSAqIChX ZSBtdXN0IGRvIHRoaXMgZm9yIHRoZSAidHJ1ZSIgcmVzdWx0IHRvIGJlIHJhY2UtY29uZGl0aW9u LWZyZWUuKQorICogSWYgdGhlIHBsYW4gaW5jbHVkZXMgY2hpbGQgcmVsYXRpb25zIGludHJvZHVj ZWQgYnkgdGhlIHBsYW5uZXIsIHRoZXkKKyAqIHdvdWxkbid0IGJlIGxvY2tlZCB5ZXQuIFRoaXMg aXMgYmVjYXVzZSBBY3F1aXJlUGxhbm5lckxvY2tzKCkgb25seSBsb2NrcworICogcmVsYXRpb25z IHByZXNlbnQgaW4gdGhlIG9yaWdpbmFsIHF1ZXJ5J3MgcmFuZ2UgdGFibGUgKGJlZm9yZSBwbGFu bmVyCisgKiBlbnRyeSkuIEhlbmNlLCB0aGUgcGxhbiBtaWdodCBiZWNvbWUgc3RhbGUgaWYgY2hp bGQgcmVsYXRpb25zIGFyZSBtb2RpZmllZAorICogY29uY3VycmVudGx5LiBEdXJpbmcgdGhlIHBs YW4gaW5pdGlhbGl6YXRpb24sIHRoZSBleGVjdXRvciBtdXN0IGVuc3VyZSB0aGUKKyAqIHBsYW4g KENhY2hlZFBsYW4pIHJlbWFpbnMgdmFsaWQgYWZ0ZXIgbG9ja2luZyBlYWNoIGNoaWxkIHRhYmxl LiBJZiBmb3VuZAorICogaW52YWxpZCwgdGhlIGNhbGxlciBzaG91bGQgYmUgcHJvbXB0ZWQgdG8g cmVjcmVhdGUgdGhlIHBsYW4uCiAgKi8KIHN0YXRpYyBib29sCiBDaGVja0NhY2hlZFBsYW4oQ2Fj aGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKQEAgLTgwNyw2MCArODEyLDU2IEBAIENoZWNrQ2Fj aGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQogCWlmICghcGxhbikKIAkJcmV0 dXJuIGZhbHNlOwogCi0JQXNzZXJ0KHBsYW4tPm1hZ2ljID09IENBQ0hFRFBMQU5fTUFHSUMpOwot CS8qIEdlbmVyaWMgcGxhbnMgYXJlIG5ldmVyIG9uZS1zaG90ICovCi0JQXNzZXJ0KCFwbGFuLT5p c19vbmVzaG90KTsKKwlpZiAoR2VuZXJpY1BsYW5Jc1ZhbGlkKHBsYW4pKQorCQlyZXR1cm4gdHJ1 ZTsKIAogCS8qCi0JICogSWYgcGxhbiBpc24ndCB2YWxpZCBmb3IgY3VycmVudCByb2xlLCB3ZSBj YW4ndCB1c2UgaXQuCisJICogUGxhbiBoYXMgYmVlbiBpbnZhbGlkYXRlZCwgc28gdW5saW5rIGl0 IGZyb20gdGhlIHBhcmVudCBhbmQgcmVsZWFzZSBpdC4KIAkgKi8KLQlpZiAocGxhbi0+aXNfdmFs aWQgJiYgcGxhbi0+ZGVwZW5kc09uUm9sZSAmJgotCQlwbGFuLT5wbGFuUm9sZUlkICE9IEdldFVz ZXJJZCgpKQotCQlwbGFuLT5pc192YWxpZCA9IGZhbHNlOworCVJlbGVhc2VHZW5lcmljUGxhbihw bGFuc291cmNlKTsKIAotCS8qCi0JICogSWYgaXQgYXBwZWFycyB2YWxpZCwgYWNxdWlyZSBsb2Nr cyBhbmQgcmVjaGVjazsgdGhpcyBpcyBtdWNoIHRoZSBzYW1lCi0JICogbG9naWMgYXMgaW4gUmV2 YWxpZGF0ZUNhY2hlZFF1ZXJ5LCBidXQgZm9yIGEgcGxhbi4KLQkgKi8KLQlpZiAocGxhbi0+aXNf dmFsaWQpCisJcmV0dXJuIGZhbHNlOworfQorCisvKgorICogR2VuZXJpY1BsYW5Jc1ZhbGlkCisg KgkJSXMgYSBnZW5lcmljIHBsYW4gc3RpbGwgdmFsaWQ/CisgKgorICogSXQgbWF5IGhhdmUgZ29u ZSBzdGFsZSBkdWUgdG8gY29uY3VycmVudCBzY2hlbWEgbW9kaWZpY2F0aW9ucyBvZiByZWxhdGlv bnMKKyAqIG1lbnRpb25lZCBpbiB0aGUgcGxhbiBvciBhIGNvdXBsZSBvZiBvdGhlciB0aGluZ3Mg bWVudGlvbmVkIGJlbG93LgorICovCitzdGF0aWMgYm9vbAorR2VuZXJpY1BsYW5Jc1ZhbGlkKENh Y2hlZFBsYW4gKmNwbGFuKQoreworCUFzc2VydChjcGxhbiAhPSBOVUxMKTsKKwlBc3NlcnQoY3Bs YW4tPm1hZ2ljID09IENBQ0hFRFBMQU5fTUFHSUMpOworCS8qIEdlbmVyaWMgcGxhbnMgYXJlIG5l dmVyIG9uZS1zaG90ICovCisJQXNzZXJ0KCFjcGxhbi0+aXNfb25lc2hvdCk7CisKKwlpZiAoY3Bs YW4tPmlzX3ZhbGlkKQogCXsKIAkJLyoKIAkJICogUGxhbiBtdXN0IGhhdmUgcG9zaXRpdmUgcmVm Y291bnQgYmVjYXVzZSBpdCBpcyByZWZlcmVuY2VkIGJ5CiAJCSAqIHBsYW5zb3VyY2U7IHNvIG5v IG5lZWQgdG8gZmVhciBpdCBkaXNhcHBlYXJzIHVuZGVyIHVzIGhlcmUuCiAJCSAqLwotCQlBc3Nl cnQocGxhbi0+cmVmY291bnQgPiAwKTsKLQotCQlBY3F1aXJlRXhlY3V0b3JMb2NrcyhwbGFuLT5z dG10X2xpc3QsIHRydWUpOworCQlBc3NlcnQoY3BsYW4tPnJlZmNvdW50ID4gMCk7CiAKIAkJLyoK LQkJICogSWYgcGxhbiB3YXMgdHJhbnNpZW50LCBjaGVjayB0byBzZWUgaWYgVHJhbnNhY3Rpb25Y bWluIGhhcwotCQkgKiBhZHZhbmNlZCwgYW5kIGlmIHNvIGludmFsaWRhdGUgaXQuCisJCSAqIElm IHBsYW4gaXNuJ3QgdmFsaWQgZm9yIGN1cnJlbnQgcm9sZSwgd2UgY2FuJ3QgdXNlIGl0LgogCQkg Ki8KLQkJaWYgKHBsYW4tPmlzX3ZhbGlkICYmCi0JCQlUcmFuc2FjdGlvbklkSXNWYWxpZChwbGFu LT5zYXZlZF94bWluKSAmJgotCQkJIVRyYW5zYWN0aW9uSWRFcXVhbHMocGxhbi0+c2F2ZWRfeG1p biwgVHJhbnNhY3Rpb25YbWluKSkKLQkJCXBsYW4tPmlzX3ZhbGlkID0gZmFsc2U7CisJCWlmIChj cGxhbi0+ZGVwZW5kc09uUm9sZSAmJiBjcGxhbi0+cGxhblJvbGVJZCAhPSBHZXRVc2VySWQoKSkK KwkJCWNwbGFuLT5pc192YWxpZCA9IGZhbHNlOwogCiAJCS8qCi0JCSAqIEJ5IG5vdywgaWYgYW55 IGludmFsaWRhdGlvbiBoYXMgaGFwcGVuZWQsIHRoZSBpbnZhbCBjYWxsYmFjawotCQkgKiBmdW5j dGlvbnMgd2lsbCBoYXZlIG1hcmtlZCB0aGUgcGxhbiBpbnZhbGlkLgorCQkgKiBJZiBwbGFuIHdh cyB0cmFuc2llbnQsIGNoZWNrIHRvIHNlZSBpZiBUcmFuc2FjdGlvblhtaW4gaGFzCisJCSAqIGFk dmFuY2VkLCBhbmQgaWYgc28gaW52YWxpZGF0ZSBpdC4KIAkJICovCi0JCWlmIChwbGFuLT5pc192 YWxpZCkKLQkJewotCQkJLyogU3VjY2Vzc2Z1bGx5IHJldmFsaWRhdGVkIGFuZCBsb2NrZWQgdGhl IHF1ZXJ5LiAqLwotCQkJcmV0dXJuIHRydWU7Ci0JCX0KLQotCQkvKiBPb3BzLCB0aGUgcmFjZSBj YXNlIGhhcHBlbmVkLiAgUmVsZWFzZSB1c2VsZXNzIGxvY2tzLiAqLwotCQlBY3F1aXJlRXhlY3V0 b3JMb2NrcyhwbGFuLT5zdG10X2xpc3QsIGZhbHNlKTsKKwkJaWYgKFRyYW5zYWN0aW9uSWRJc1Zh bGlkKGNwbGFuLT5zYXZlZF94bWluKSAmJgorCQkJIVRyYW5zYWN0aW9uSWRFcXVhbHMoY3BsYW4t PnNhdmVkX3htaW4sIFRyYW5zYWN0aW9uWG1pbikpCisJCQljcGxhbi0+aXNfdmFsaWQgPSBmYWxz ZTsKIAl9CiAKLQkvKgotCSAqIFBsYW4gaGFzIGJlZW4gaW52YWxpZGF0ZWQsIHNvIHVubGluayBp dCBmcm9tIHRoZSBwYXJlbnQgYW5kIHJlbGVhc2UgaXQuCi0JICovCi0JUmVsZWFzZUdlbmVyaWNQ bGFuKHBsYW5zb3VyY2UpOwotCi0JcmV0dXJuIGZhbHNlOworCXJldHVybiBjcGxhbi0+aXNfdmFs aWQ7CiB9CiAKIC8qCkBAIC0xMTMwLDggKzExMzEsMTYgQEAgY2FjaGVkX3BsYW5fY29zdChDYWNo ZWRQbGFuICpwbGFuLCBib29sIGluY2x1ZGVfcGxhbm5lcikKICAqIHBsYW4gb3IgYSBjdXN0b20g cGxhbiBmb3IgdGhlIGdpdmVuIHBhcmFtZXRlcnM6IHRoZSBjYWxsZXIgZG9lcyBub3Qga25vdwog ICogd2hpY2ggaXQgd2lsbCBnZXQuCiAgKgotICogT24gcmV0dXJuLCB0aGUgcGxhbiBpcyB2YWxp ZCBhbmQgd2UgaGF2ZSBzdWZmaWNpZW50IGxvY2tzIHRvIGJlZ2luCi0gKiBleGVjdXRpb24uCisg KiBUeXBpY2FsbHksIHRoZSBwbGFuIHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24gaXMgdmFsaWQu IEhvd2V2ZXIsIGEgY2F2ZWF0CisgKiBhcmlzZXMgd2l0aCBpbmhlcml0YW5jZS9wYXJ0aXRpb24g Y2hpbGQgdGFibGVzLiBUaGVzZSBhcmVuJ3QgbG9ja2VkIGJ5CisgKiB0aGlzIGZ1bmN0aW9uLCBh cyB3ZSBvbmx5IGxvY2sgdGFibGVzIGRpcmVjdGx5IG1lbnRpb25lZCBpbiB0aGUgb3JpZ2luYWwK KyAqIHF1ZXJ5IGhlcmUuICBUaGUgdGFzayBvZiBsb2NraW5nIHRoZXNlIGNoaWxkIHRhYmxlcyBm YWxscyB0byB0aGUgZXhlY3V0b3IKKyAqIGR1cmluZyBwbGFuIHRyZWUgc2V0dXAuIElmIGFjcXVp cmluZyB0aGVzZSBsb2NrcyBpbnZhbGlkYXRlcyB0aGUgcGxhbiwgdGhlCisgKiBleGVjdXRvciBz aG91bGQgaW5mb3JtIHRoZSBjYWxsZXIgdG8gcmVnZW5lcmF0ZSB0aGUgcGxhbiBieSBpbnZva2lu ZyB0aGlzCisgKiBmdW5jdGlvbiBhZ2Fpbi4gIFRoZSByZWFzb24gZm9yIHRoaXMgZGVmZXJyZWQg Y2hpbGQgdGFibGUgbG9ja2luZyBtZWNoYW5pc20KKyAqIGlzIGVmZmljaWVuY3k6IG5vdCBhbGwg bWlnaHQgbmVlZCB0byBiZSBsb2NrZWQuIFNvbWUgY291bGQgYmUgcHJ1bmVkIGR1cmluZworICog ZXhlY3V0b3IgaW5pdGlhbGl6YXRpb24sIGVzcGVjaWFsbHkgaWYgdGhlaXIgY29ycmVzcG9uZGlu ZyBwbGFuIG5vZGVzCisgKiBmYWNpbGl0YXRlIHBhcnRpdGlvbiBwcnVuaW5nLgogICoKICAqIE9u IHJldHVybiwgdGhlIHJlZmNvdW50IG9mIHRoZSBwbGFuIGhhcyBiZWVuIGluY3JlbWVudGVkOyBh IGxhdGVyCiAgKiBSZWxlYXNlQ2FjaGVkUGxhbigpIGNhbGwgaXMgZXhwZWN0ZWQuICBJZiAib3du ZXIiIGlzIG5vdCBOVUxMIHRoZW4KQEAgLTExNjYsNyArMTE3NSwxMCBAQCBHZXRDYWNoZWRQbGFu KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMs CiAJewogCQlpZiAoQ2hlY2tDYWNoZWRQbGFuKHBsYW5zb3VyY2UpKQogCQl7Ci0JCQkvKiBXZSB3 YW50IGEgZ2VuZXJpYyBwbGFuLCBhbmQgd2UgYWxyZWFkeSBoYXZlIGEgdmFsaWQgb25lICovCisJ CQkvKgorCQkJICogV2Ugd2FudCBhIGdlbmVyaWMgcGxhbiwgYW5kIHdlIGFscmVhZHkgaGF2ZSBh IHZhbGlkIG9uZSwgdGhvdWdoCisJCQkgKiBzZWUgdGhlIGhlYWRlciBjb21tZW50LgorCQkJICov CiAJCQlwbGFuID0gcGxhbnNvdXJjZS0+Z3BsYW47CiAJCQlBc3NlcnQocGxhbi0+bWFnaWMgPT0g Q0FDSEVEUExBTl9NQUdJQyk7CiAJCX0KQEAgLTEzNjQsOCArMTM3Niw4IEBAIENhY2hlZFBsYW5B bGxvd3NTaW1wbGVWYWxpZGl0eUNoZWNrKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJ fQogCiAJLyoKLQkgKiBSZWplY3QgaWYgQWNxdWlyZUV4ZWN1dG9yTG9ja3Mgd291bGQgaGF2ZSBh bnl0aGluZyB0byBkby4gIFRoaXMgaXMKLQkgKiBwcm9iYWJseSB1bm5lY2Vzc2FyeSBnaXZlbiB0 aGUgcHJldmlvdXMgY2hlY2ssIGJ1dCBsZXQncyBiZSBzYWZlLgorCSAqIFJlamVjdCBpZiB0aGUg ZXhlY3V0b3Igd291bGQgbmVlZCB0byB0YWtlIGFkZGl0aW9uYWwgbG9ja3MsIHRoYXQgaXMsIGlu CisJICogYWRkaXRpb24gdG8gdGhvc2UgdGFrZW4gYnkgQWNxdWlyZVBsYW5uZXJMb2NrcygpIG9u IGEgZ2l2ZW4gcXVlcnkuCiAJICovCiAJZm9yZWFjaChsYywgcGxhbi0+c3RtdF9saXN0KQogCXsK QEAgLTE3NDEsNTggKzE3NTMsNiBAQCBRdWVyeUxpc3RHZXRQcmltYXJ5U3RtdChMaXN0ICpzdG10 cykKIAlyZXR1cm4gTlVMTDsKIH0KIAotLyoKLSAqIEFjcXVpcmVFeGVjdXRvckxvY2tzOiBhY3F1 aXJlIGxvY2tzIG5lZWRlZCBmb3IgZXhlY3V0aW9uIG9mIGEgY2FjaGVkIHBsYW47Ci0gKiBvciBy ZWxlYXNlIHRoZW0gaWYgYWNxdWlyZSBpcyBmYWxzZS4KLSAqLwotc3RhdGljIHZvaWQKLUFjcXVp cmVFeGVjdXRvckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKQotewotCUxpc3RD ZWxsICAgKmxjMTsKLQotCWZvcmVhY2gobGMxLCBzdG10X2xpc3QpCi0JewotCQlQbGFubmVkU3Rt dCAqcGxhbm5lZHN0bXQgPSBsZmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgbGMxKTsKLQkJTGlzdENl bGwgICAqbGMyOwotCi0JCWlmIChwbGFubmVkc3RtdC0+Y29tbWFuZFR5cGUgPT0gQ01EX1VUSUxJ VFkpCi0JCXsKLQkJCS8qCi0JCQkgKiBJZ25vcmUgdXRpbGl0eSBzdGF0ZW1lbnRzLCBleGNlcHQg dGhvc2UgKHN1Y2ggYXMgRVhQTEFJTikgdGhhdAotCQkJICogY29udGFpbiBhIHBhcnNlZC1idXQt bm90LXBsYW5uZWQgcXVlcnkuICBOb3RlOiBpdCdzIG9rYXkgdG8gdXNlCi0JCQkgKiBTY2FuUXVl cnlGb3JMb2NrcywgZXZlbiB0aG91Z2ggdGhlIHF1ZXJ5IGhhc24ndCBiZWVuIHRocm91Z2gKLQkJ CSAqIHJ1bGUgcmV3cml0aW5nLCBiZWNhdXNlIHJld3JpdGluZyBkb2Vzbid0IGNoYW5nZSB0aGUg cXVlcnkKLQkJCSAqIHJlcHJlc2VudGF0aW9uLgotCQkJICovCi0JCQlRdWVyeQkgICAqcXVlcnkg PSBVdGlsaXR5Q29udGFpbnNRdWVyeShwbGFubmVkc3RtdC0+dXRpbGl0eVN0bXQpOwotCi0JCQlp ZiAocXVlcnkpCi0JCQkJU2NhblF1ZXJ5Rm9yTG9ja3MocXVlcnksIGFjcXVpcmUpOwotCQkJY29u dGludWU7Ci0JCX0KLQotCQlmb3JlYWNoKGxjMiwgcGxhbm5lZHN0bXQtPnJ0YWJsZSkKLQkJewot CQkJUmFuZ2VUYmxFbnRyeSAqcnRlID0gKFJhbmdlVGJsRW50cnkgKikgbGZpcnN0KGxjMik7Ci0K LQkJCWlmICghKHJ0ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04gfHwKLQkJCQkgIChydGUtPnJ0 ZWtpbmQgPT0gUlRFX1NVQlFVRVJZICYmIE9pZElzVmFsaWQocnRlLT5yZWxpZCkpKSkKLQkJCQlj b250aW51ZTsKLQotCQkJLyoKLQkJCSAqIEFjcXVpcmUgdGhlIGFwcHJvcHJpYXRlIHR5cGUgb2Yg bG9jayBvbiBlYWNoIHJlbGF0aW9uIE9JRC4gTm90ZQotCQkJICogdGhhdCB3ZSBkb24ndCBhY3R1 YWxseSB0cnkgdG8gb3BlbiB0aGUgcmVsLCBhbmQgaGVuY2Ugd2lsbCBub3QKLQkJCSAqIGZhaWwg aWYgaXQncyBiZWVuIGRyb3BwZWQgZW50aXJlbHkgLS0tIHdlJ2xsIGp1c3QgdHJhbnNpZW50bHkK LQkJCSAqIGFjcXVpcmUgYSBub24tY29uZmxpY3RpbmcgbG9jay4KLQkJCSAqLwotCQkJaWYgKGFj cXVpcmUpCi0JCQkJTG9ja1JlbGF0aW9uT2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUp OwotCQkJZWxzZQotCQkJCVVubG9ja1JlbGF0aW9uT2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9j a21vZGUpOwotCQl9Ci0JfQotfQotCiAvKgogICogQWNxdWlyZVBsYW5uZXJMb2NrczogYWNxdWly ZSBsb2NrcyBuZWVkZWQgZm9yIHBsYW5uaW5nIG9mIGEgcXVlcnl0cmVlIGxpc3Q7CiAgKiBvciBy ZWxlYXNlIHRoZW0gaWYgYWNxdWlyZSBpcyBmYWxzZS4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NvbW1hbmRzL2V4cGxhaW4uaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAppbmRl eCAzNzU1NDcyN2VlLi4zOTJhYmI1MTUwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5k cy9leHBsYWluLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCkBAIC04OCw3 ICs4OCw3IEBAIGV4dGVybiB2b2lkIEV4cGxhaW5PbmVVdGlsaXR5KE5vZGUgKnV0aWxpdHlTdG10 LCBJbnRvQ2xhdXNlICppbnRvLAogCQkJCQkJCSAgRXhwbGFpblN0YXRlICplcywgY29uc3QgY2hh ciAqcXVlcnlTdHJpbmcsCiAJCQkJCQkJICBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZp cm9ubWVudCAqcXVlcnlFbnYpOwogCi1leHRlcm4gUXVlcnlEZXNjICpFeHBsYWluUXVlcnlEZXNj KFBsYW5uZWRTdG10ICpzdG10LAorZXh0ZXJuIFF1ZXJ5RGVzYyAqRXhwbGFpblF1ZXJ5RGVzYyhQ bGFubmVkU3RtdCAqc3RtdCwgc3RydWN0IENhY2hlZFBsYW4gKmNwbGFuLAogCQkJCSBjb25zdCBj aGFyICpxdWVyeVN0cmluZywgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJ CQkgUGFyYW1MaXN0SW5mbyBwYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKIGV4 dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L2V4ZWNkZXNjLmgKaW5kZXggYWYyYmYzNmRmYi4uNGI3MzY4YTBkYyAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9l eGVjZGVzYy5oCkBAIC0zMiw5ICszMiwxMiBAQAogICovCiB0eXBlZGVmIHN0cnVjdCBRdWVyeURl c2MKIHsKKwlOb2RlVGFnCQl0eXBlOworCiAJLyogVGhlc2UgZmllbGRzIGFyZSBwcm92aWRlZCBi eSBDcmVhdGVRdWVyeURlc2MgKi8KIAlDbWRUeXBlCQlvcGVyYXRpb247CQkvKiBDTURfU0VMRUNU LCBDTURfVVBEQVRFLCBldGMuICovCiAJUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10OwkvKiBwbGFu bmVyJ3Mgb3V0cHV0IChjb3VsZCBiZSB1dGlsaXR5LCB0b28pICovCisJc3RydWN0IENhY2hlZFBs YW4gKmNwbGFuOwkvKiBDYWNoZWRQbGFuLCBpZiBwbGFubmVkc3RtdCBpcyBmcm9tIG9uZSAqLwog CWNvbnN0IGNoYXIgKnNvdXJjZVRleHQ7CQkvKiBzb3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkgKi8K IAlTbmFwc2hvdAlzbmFwc2hvdDsJCS8qIHNuYXBzaG90IHRvIHVzZSBmb3IgcXVlcnkgKi8KIAlT bmFwc2hvdAljcm9zc2NoZWNrX3NuYXBzaG90OwkvKiBjcm9zc2NoZWNrIGZvciBSSSB1cGRhdGUv ZGVsZXRlICovCkBAIC01Nyw2ICs2MCw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogCiAv KiBpbiBwcXVlcnkuYyAqLwogZXh0ZXJuIFF1ZXJ5RGVzYyAqQ3JlYXRlUXVlcnlEZXNjKFBsYW5u ZWRTdG10ICpwbGFubmVkc3RtdCwKKwkJCQkJCQkJICBzdHJ1Y3QgQ2FjaGVkUGxhbiAqY3BsYW4s CiAJCQkJCQkJCSAgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkJCQkJICBTbmFwc2hvdCBz bmFwc2hvdCwKIAkJCQkJCQkJICBTbmFwc2hvdCBjcm9zc2NoZWNrX3NuYXBzaG90LApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL2V4ZWN1dG9yLmgKaW5kZXggMTBjNWNkYTE2OS4uZWFhNjA1ZTUxMyAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRv ci9leGVjdXRvci5oCkBAIC01OTksNiArNTk5LDcgQEAgZXhlY19ydF9mZXRjaChJbmRleCBydGks IEVTdGF0ZSAqZXN0YXRlKQogfQogCiBleHRlcm4gUmVsYXRpb24gRXhlY0dldFJhbmdlVGFibGVS ZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgSW5kZXggcnRpKTsKK2V4dGVybiB2b2lkIEV4ZWNMb2Nr QXBwZW5kTm9uTGVhZlJlbGF0aW9ucyhFU3RhdGUgKmVzdGF0ZSwgTGlzdCAqYWxscGFydHJlbGlk cyk7CiBleHRlcm4gdm9pZCBFeGVjSW5pdFJlc3VsdFJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBS ZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkJCQkJCQkgICBJbmRleCBydGkpOwogCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xtZ3IuaCBiL3NyYy9pbmNsdWRlL3N0b3Jh Z2UvbG1nci5oCmluZGV4IDRlZTkxZTNjZjkuLjU5OGJmMjY4OGEgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3N0b3JhZ2UvbG1nci5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oCkBA IC00OCw2ICs0OCw3IEBAIGV4dGVybiBib29sIENvbmRpdGlvbmFsTG9ja1JlbGF0aW9uKFJlbGF0 aW9uIHJlbGF0aW9uLCBMT0NLTU9ERSBsb2NrbW9kZSk7CiBleHRlcm4gdm9pZCBVbmxvY2tSZWxh dGlvbihSZWxhdGlvbiByZWxhdGlvbiwgTE9DS01PREUgbG9ja21vZGUpOwogZXh0ZXJuIGJvb2wg Q2hlY2tSZWxhdGlvbkxvY2tlZEJ5TWUoUmVsYXRpb24gcmVsYXRpb24sIExPQ0tNT0RFIGxvY2tt b2RlLAogCQkJCQkJCQkJYm9vbCBvcnN0cm9uZ2VyKTsKK2V4dGVybiBib29sIENoZWNrUmVsTG9j a2VkQnlNZShPaWQgcmVsaWQsIExPQ0tNT0RFIGxvY2ttb2RlLCBib29sIG9yc3Ryb25nZXIpOwog ZXh0ZXJuIGJvb2wgTG9ja0hhc1dhaXRlcnNSZWxhdGlvbihSZWxhdGlvbiByZWxhdGlvbiwgTE9D S01PREUgbG9ja21vZGUpOwogCiBleHRlcm4gdm9pZCBMb2NrUmVsYXRpb25JZEZvclNlc3Npb24o TG9ja1JlbElkICpyZWxpZCwgTE9DS01PREUgbG9ja21vZGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaApp bmRleCBmNWZkYmZlMTE2Li5hMDI0ZTVkY2QwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGls cy9sc3lzY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaApAQCAtMTQw LDYgKzE0MCw3IEBAIGV4dGVybiBjaGFyIGdldF9yZWxfcmVsa2luZChPaWQgcmVsaWQpOwogZXh0 ZXJuIGJvb2wgZ2V0X3JlbF9yZWxpc3BhcnRpdGlvbihPaWQgcmVsaWQpOwogZXh0ZXJuIE9pZAln ZXRfcmVsX3RhYmxlc3BhY2UoT2lkIHJlbGlkKTsKIGV4dGVybiBjaGFyIGdldF9yZWxfcGVyc2lz dGVuY2UoT2lkIHJlbGlkKTsKK2V4dGVybiBib29sIGdldF9yZWxfcmVsaXNzaGFyZWQoT2lkIHJl bGlkKTsKIGV4dGVybiBPaWQJZ2V0X3RyYW5zZm9ybV9mcm9tc3FsKE9pZCB0eXBpZCwgT2lkIGxh bmdpZCwgTGlzdCAqdHJmdHlwZXMpOwogZXh0ZXJuIE9pZAlnZXRfdHJhbnNmb3JtX3Rvc3FsKE9p ZCB0eXBpZCwgT2lkIGxhbmdpZCwgTGlzdCAqdHJmdHlwZXMpOwogZXh0ZXJuIGJvb2wgZ2V0X3R5 cGlzZGVmaW5lZChPaWQgdHlwaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxh eV9leGVjdXRpb24vTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9N YWtlZmlsZQppbmRleCA3MGYyNGU4NDZkLi4yZmNhODRkMDI3IDEwMDY0NAotLS0gYS9zcmMvdGVz dC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZQorKysgYi9zcmMvdGVzdC9tb2R1bGVz L2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZQpAQCAtOCw3ICs4LDggQEAgT0JKUyA9IFwKIAlkZWxh eV9leGVjdXRpb24ubwogCiBJU09MQVRJT04gPSBwYXJ0aXRpb24tYWRkaXRpb24gXAotCSAgICBw YXJ0aXRpb24tcmVtb3ZhbC0xCisJICAgIHBhcnRpdGlvbi1yZW1vdmFsLTEgXAorCQljYWNoZWQt cGxhbi1yZXBsYW4KIAogaWZkZWYgVVNFX1BHWFMKIFBHX0NPTkZJRyA9IHBnX2NvbmZpZwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZGVsYXlfZXhlY3V0aW9u LmMgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9kZWxheV9leGVjdXRpb24uYwpp bmRleCA3Y2Q3NmViMzRiLi5jZTE4OTE1NmFkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVz L2RlbGF5X2V4ZWN1dGlvbi9kZWxheV9leGVjdXRpb24uYworKysgYi9zcmMvdGVzdC9tb2R1bGVz L2RlbGF5X2V4ZWN1dGlvbi9kZWxheV9leGVjdXRpb24uYwpAQCAtMSwxNCArMSwxOCBAQAogLyot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgKgogICogZGVsYXlfZXhlY3V0aW9uLmMKLSAqCQlUZXN0IG1vZHVs ZSB0byBhbGxvdyBkZWxheSBiZXR3ZWVuIHBhcnNpbmcgYW5kIGV4ZWN1dGlvbiBvZiBhIHF1ZXJ5 LgorICoJCVRlc3QgbW9kdWxlIHRvIGludHJvZHVjZSBkZWxheSBhdCB2YXJpb3VzIHBvaW50cyBk dXJpbmcgZXhlY3V0aW9uIG9mIGEKKyAqCQlxdWVyeSB0byB0ZXN0IHRoYXQgZXhlY3V0aW9uIHBy b2NlZWRzIHNhZmVseSBpbiBsaWdodCBvZiBjb25jdXJyZW50CisgKgkJY2hhbmdlcy4KICAqCiAg KiBUaGUgZGVsYXkgaXMgaW1wbGVtZW50ZWQgYnkgdGFraW5nIGFuZCBpbW1lZGlhdGVseSByZWxl YXNpbmcgYSBzcGVjaWZpZWQKICAqIGFkdmlzb3J5IGxvY2suICBJZiBhbm90aGVyIHByb2Nlc3Mg aGFzIHByZXZpb3VzbHkgdGFrZW4gdGhhdCBsb2NrLCB0aGUKICAqIGN1cnJlbnQgcHJvY2VzcyB3 aWxsIGJlIGJsb2NrZWQgdW50aWwgdGhlIGxvY2sgaXMgcmVsZWFzZWQ7IG90aGVyd2lzZSwKICAq IHRoZXJlJ3Mgbm8gZWZmZWN0LiAgVGhpcyBhbGxvd3MgYW4gaXNvbGF0aW9udGVzdGVyIHNjcmlw dCB0byByZWxpYWJseQotICogdGVzdCBiZWhhdmlvcnMgd2hlcmUgc29tZSBzcGVjaWZpZWQgYWN0 aW9uIGhhcHBlbnMgaW4gYW5vdGhlciBiYWNrZW5kCi0gKiBiZXR3ZWVuIHBhcnNpbmcgYW5kIGV4 ZWN1dGlvbiBvZiBhbnkgZGVzaXJlZCBxdWVyeS4KKyAqIHRlc3QgYmVoYXZpb3JzIHdoZXJlIHNv bWUgc3BlY2lmaWVkIGFjdGlvbiBoYXBwZW5zIGluIGFub3RoZXIgYmFja2VuZCBpbgorICogYSBj b3VwbGUgb2YgY2FzZXM6IDEpIGJldHdlZW4gcGFyc2luZyBhbmQgZXhlY3V0aW9uIG9mIGFueSBk ZXNpcmVkIHF1ZXJ5CisgKiB3aGVuIHVzaW5nIHRoZSBwbGFubmVyX2hvb2ssIDIpIGJldHdlZW4g UmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5KCkgYW5kCisgKiBFeGVjdXRvclN0YXJ0KCkgd2hlbiB1c2lu ZyB0aGUgRXhlY3V0b3JTdGFydF9ob29rLgogICoKICAqIENvcHlyaWdodCAoYykgMjAyMC0yMDIz LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAogICoKQEAgLTIyLDYgKzI2LDcg QEAKIAogI2luY2x1ZGUgPGxpbWl0cy5oPgogCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3Iu aCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcGxhbm5lci5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0 aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCkBAIC0zMiw5ICszNywxMSBAQCBQR19NT0RV TEVfTUFHSUM7CiAKIC8qIEdVQzogYWR2aXNvcnkgbG9jayBJRCB0byB1c2UuICBaZXJvIGRpc2Fi bGVzIHRoZSBmZWF0dXJlLiAqLwogc3RhdGljIGludAlwb3N0X3BsYW5uaW5nX2xvY2tfaWQgPSAw Oworc3RhdGljIGludAlleGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMDsKIAotLyogU2F2ZSBwcmV2 aW91cyBwbGFubmVyIGhvb2sgdXNlciB0byBiZSBhIGdvb2QgY2l0aXplbiAqLworLyogU2F2ZSBw cmV2aW91cyBob29rIHVzZXJzIHRvIGJlIGEgZ29vZCBjaXRpemVuICovCiBzdGF0aWMgcGxhbm5l cl9ob29rX3R5cGUgcHJldl9wbGFubmVyX2hvb2sgPSBOVUxMOworc3RhdGljIEV4ZWN1dG9yU3Rh cnRfaG9va190eXBlIHByZXZfRXhlY3V0b3JTdGFydF9ob29rID0gTlVMTDsKIAogCiAvKiBwbGFu bmVyX2hvb2sgZnVuY3Rpb24gdG8gcHJvdmlkZSB0aGUgZGVzaXJlZCBkZWxheSAqLwpAQCAtNzAs MTEgKzc3LDQ1IEBAIGRlbGF5X2V4ZWN1dGlvbl9wbGFubmVyKFF1ZXJ5ICpwYXJzZSwgY29uc3Qg Y2hhciAqcXVlcnlfc3RyaW5nLAogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8qIEV4ZWN1dG9yU3Rh cnRfaG9vayBmdW5jdGlvbiB0byBwcm92aWRlIHRoZSBkZXNpcmVkIGRlbGF5ICovCitzdGF0aWMg Ym9vbAorZGVsYXlfZXhlY3V0aW9uX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2Ms IGludCBlZmxhZ3MpCit7CisJYm9vbAlwbGFuX3ZhbGlkOworCisJLyogSWYgZW5hYmxlZCwgZGVs YXkgYnkgdGFraW5nIGFuZCByZWxlYXNpbmcgdGhlIHNwZWNpZmllZCBsb2NrICovCisJaWYgKGV4 ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgIT0gMCkKKwl7CisJCURpcmVjdEZ1bmN0aW9uQ2FsbDEocGdf YWR2aXNvcnlfbG9ja19pbnQ4LAorCQkJCQkJCUludDY0R2V0RGF0dW0oKGludDY0KSBleGVjdXRv cl9zdGFydF9sb2NrX2lkKSk7CisJCURpcmVjdEZ1bmN0aW9uQ2FsbDEocGdfYWR2aXNvcnlfdW5s b2NrX2ludDgsCisJCQkJCQkJSW50NjRHZXREYXR1bSgoaW50NjQpIGV4ZWN1dG9yX3N0YXJ0X2xv Y2tfaWQpKTsKKworCQkvKgorCQkgKiBFbnN1cmUgdGhhdCB3ZSBub3RpY2UgYW55IHBlbmRpbmcg aW52YWxpZGF0aW9ucywgc2luY2UgdGhlIGFkdmlzb3J5CisJCSAqIGxvY2sgZnVuY3Rpb25zIGRv bid0IGRvIHRoaXMuCisJCSAqLworCQlBY2NlcHRJbnZhbGlkYXRpb25NZXNzYWdlcygpOworCX0K KworCS8qIE5vdyBzdGFydCB0aGUgZXhlY3V0b3IsIHBvc3NpYmx5IHZpYSBhIHByZXZpb3VzIGhv b2sgdXNlciAqLworCWlmIChwcmV2X0V4ZWN1dG9yU3RhcnRfaG9vaykKKwkJcGxhbl92YWxpZCA9 IHByZXZfRXhlY3V0b3JTdGFydF9ob29rKHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwllbHNlCisJCXBs YW5fdmFsaWQgPSBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwor CWlmIChleGVjdXRvcl9zdGFydF9sb2NrX2lkICE9IDApCisJCWVsb2coTk9USUNFLCAiRmluaXNo ZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzICVzIiwKKwkJCSBwbGFuX3ZhbGlkID8g InZhbGlkIiA6ICJub3QgdmFsaWQiKTsKKworCXJldHVybiBwbGFuX3ZhbGlkOworfQorCiAvKiBN b2R1bGUgbG9hZCBmdW5jdGlvbiAqLwogdm9pZAogX1BHX2luaXQodm9pZCkKIHsKLQkvKiBTZXQg dXAgdGhlIEdVQyB0byBjb250cm9sIHdoaWNoIGxvY2sgaXMgdXNlZCAqLworCS8qIFNldCB1cCBH VUNzIHRvIGNvbnRyb2wgd2hpY2ggbG9jayBpcyB1c2VkICovCiAJRGVmaW5lQ3VzdG9tSW50VmFy aWFibGUoImRlbGF5X2V4ZWN1dGlvbi5wb3N0X3BsYW5uaW5nX2xvY2tfaWQiLAogCQkJCQkJCSJT ZXRzIHRoZSBhZHZpc29yeSBsb2NrIElEIHRvIGJlIGxvY2tlZC91bmxvY2tlZCBhZnRlciBwbGFu bmluZy4iLAogCQkJCQkJCSJaZXJvIGRpc2FibGVzIHRoZSBkZWxheS4iLApAQCAtODYsMTAgKzEy NywyMiBAQCBfUEdfaW5pdCh2b2lkKQogCQkJCQkJCU5VTEwsCiAJCQkJCQkJTlVMTCwKIAkJCQkJ CQlOVUxMKTsKLQorCURlZmluZUN1c3RvbUludFZhcmlhYmxlKCJkZWxheV9leGVjdXRpb24uZXhl Y3V0b3Jfc3RhcnRfbG9ja19pZCIsCisJCQkJCQkJIlNldHMgdGhlIGFkdmlzb3J5IGxvY2sgSUQg dG8gYmUgbG9ja2VkL3VubG9ja2VkIGJlZm9yZSBzdGFydGluZyBleGVjdXRpb24uIiwKKwkJCQkJ CQkiWmVybyBkaXNhYmxlcyB0aGUgZGVsYXkuIiwKKwkJCQkJCQkmZXhlY3V0b3Jfc3RhcnRfbG9j a19pZCwKKwkJCQkJCQkwLAorCQkJCQkJCTAsIElOVF9NQVgsCisJCQkJCQkJUEdDX1VTRVJTRVQs CisJCQkJCQkJMCwKKwkJCQkJCQlOVUxMLAorCQkJCQkJCU5VTEwsCisJCQkJCQkJTlVMTCk7CiAJ TWFya0dVQ1ByZWZpeFJlc2VydmVkKCJkZWxheV9leGVjdXRpb24iKTsKIAotCS8qIEluc3RhbGwg b3VyIGhvb2sgKi8KKwkvKiBJbnN0YWxsIG91ciBob29rcy4gKi8KIAlwcmV2X3BsYW5uZXJfaG9v ayA9IHBsYW5uZXJfaG9vazsKIAlwbGFubmVyX2hvb2sgPSBkZWxheV9leGVjdXRpb25fcGxhbm5l cjsKKwlwcmV2X0V4ZWN1dG9yU3RhcnRfaG9vayA9IEV4ZWN1dG9yU3RhcnRfaG9vazsKKwlFeGVj dXRvclN0YXJ0X2hvb2sgPSBkZWxheV9leGVjdXRpb25fRXhlY3V0b3JTdGFydDsKIH0KZGlmZiAt LWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2V4cGVjdGVkL2NhY2hlZC1w bGFuLXJlcGxhbi5vdXQgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9leHBlY3Rl ZC9jYWNoZWQtcGxhbi1yZXBsYW4ub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAuLjBhYzZhMTdjMmIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2Rl bGF5X2V4ZWN1dGlvbi9leHBlY3RlZC9jYWNoZWQtcGxhbi1yZXBsYW4ub3V0CkBAIC0wLDAgKzEs MTU2IEBACitQYXJzZWQgdGVzdCBzcGVjIHdpdGggMiBzZXNzaW9ucworCitzdGFydGluZyBwZXJt dXRhdGlvbjogczFwcmVwIHMybG9jayBzMWV4ZWMgczJkcm9waSBzMnVubG9jaworc3RlcCBzMXBy ZXA6IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisJCSAgUFJFUEFS RSBxIEFTIFNFTEVDVCAqIEZST00gZm9vdiBXSEVSRSBhID0gJDE7CisJCSAgRVhQTEFJTiAoQ09T VFMgT0ZGKSBFWEVDVVRFIHEgKDEpOworUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CitBcHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBTdWJwbGFu cyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAgICAgICAKKyAgLT4gIEJpdG1hcCBIZWFwIFNj YW4gb24gZm9vMTEgZm9vXzEgICAgICAgCisgICAgICAgIFJlY2hlY2sgQ29uZDogKGEgPSAkMSkg ICAgICAgICAgICAgIAorICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gZm9vMTFfYV9p ZHgKKyAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgPSAkMSkgICAgICAgICAgCisoNiByb3dz KQorCitzdGVwIHMybG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUpOworcGdfYWR2 aXNvcnlfbG9jaworLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgIAorKDEgcm93KQor CitzdGVwIHMxZXhlYzogTE9BRCAnZGVsYXlfZXhlY3V0aW9uJzsKKwkJICBTRVQgZGVsYXlfZXhl Y3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAxMjM0NTsKKwkJICBFWFBMQUlOIChDT1NU UyBPRkYpIEVYRUNVVEUgcSAoMSk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczJkcm9waTogRFJPUCBJ TkRFWCBmb28xMV9hOworc3RlcCBzMnVubG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jaygx MjM0NSk7CitwZ19hZHZpc29yeV91bmxvY2sKKy0tLS0tLS0tLS0tLS0tLS0tLQordCAgICAgICAg ICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjOiA8Li4uIGNvbXBsZXRlZD4KK3MxOiBO T1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgbm90IHZhbGlk CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIHZh bGlkCitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KK0FwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgCisgIFN1YnBsYW5zIFJlbW92 ZWQ6IDEgICAgICAgIAorICAtPiAgU2VxIFNjYW4gb24gZm9vMTEgZm9vXzEKKyAgICAgICAgRmls dGVyOiAoYSA9ICQxKSAgICAgCisoNCByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBz MXByZXAyIHMybG9jayBzMWV4ZWMyIHMyZHJvcGkgczJ1bmxvY2sKK3N0ZXAgczFwcmVwMjogU0VU IHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBQUkVQQVJFIHEyIEFT IFNFTEVDVCAqIEZST00gZm9vdiBXSEVSRSBhID0gMTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYp IEVYRUNVVEUgcTI7CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNo ZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0JpdG1hcCBIZWFwIFNjYW4g b24gZm9vMTEgZm9vICAgICAgICAgCisgIFJlY2hlY2sgQ29uZDogKGEgPSAxKSAgICAgICAgICAg ICAgIAorICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gZm9vMTFfYV9pZHgKKyAgICAgICAgSW5k ZXggQ29uZDogKGEgPSAxKSAgICAgICAgICAgCisoNCByb3dzKQorCitzdGVwIHMybG9jazogU0VM RUNUIHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfbG9jaworLS0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzI6IExPQUQg J2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFy dF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEyOyA8 d2FpdGluZyAuLi4+CitzdGVwIHMyZHJvcGk6IERST1AgSU5ERVggZm9vMTFfYTsKK3N0ZXAgczJ1 bmxvY2s6IFNFTEVDVCBwZ19hZHZpc29yeV91bmxvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfdW5s b2NrCistLS0tLS0tLS0tLS0tLS0tLS0KK3QgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitz dGVwIHMxZXhlYzI6IDwuLi4gY29tcGxldGVkPgorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1 dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyBub3QgdmFsaWQKK3MxOiBOT1RJQ0U6ICBGaW5pc2hl ZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQKK1FVRVJZIFBMQU4gICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitTZXEgU2NhbiBvbiBmb28xMSBmb28KKyAgRmls dGVyOiAoYSA9IDEpICAgIAorKDIgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFw cmVwMyBzMmxvY2sgczFleGVjMyBzMmRyb3BpIHMydW5sb2NrCitzdGVwIHMxcHJlcDM6IFNFVCBw bGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisJCSAgU0VUIGVuYWJsZV9wYXJ0 aXRpb253aXNlX2FnZ3JlZ2F0ZSA9IG9uOworCQkgIFNFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9q b2luID0gb247CisJCSAgUFJFUEFSRSBxMyBBUyBTRUxFQ1QgdDEuYSwgY291bnQodDIuYikgRlJP TSBmb28gdDEsIGZvbyB0MiBXSEVSRSB0MS5hID0gdDIuYSBHUk9VUCBCWSAxOworCQkgIEVYUExB SU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMzsKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRv clN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FwcGVuZCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK KyAgLT4gIEdyb3VwQWdncmVnYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKyAgICAgICAgR3JvdXAgS2V5OiB0MS5hICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIE1lcmdlIEpvaW4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgTWVyZ2UgQ29uZDogKHQx LmEgPSB0Mi5hKSAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgLT4gIElu ZGV4IE9ubHkgU2NhbiB1c2luZyBmb28xMV9hX2lkeCBvbiBmb28xMSB0MSAKKyAgICAgICAgICAg ICAgLT4gIE1hdGVyaWFsaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAg ICAgICAgICAgICAgICAgICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgZm9vMTFfYV9pZHggb24gZm9v MTEgdDIKKyAgLT4gIEdyb3VwQWdncmVnYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKyAgICAgICAgR3JvdXAgS2V5OiB0MV8xLmEgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIE1lcmdlIEpvaW4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgTWVyZ2UgQ29u ZDogKHQxXzEuYSA9IHQyXzEuYSkgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg LT4gIFNvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAg ICAgICAgICAgICAgICAgU29ydCBLZXk6IHQxXzEuYSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKyAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzIgdDFfMSAgICAgICAg ICAgICAgICAgICAKKyAgICAgICAgICAgICAgLT4gIFNvcnQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHQyXzEu YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIGZvbzIgdDJfMSAgICAgICAgICAgICAgICAgICAKKygxOCByb3dzKQorCitzdGVw IHMybG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfbG9j aworLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMx ZXhlYzM6IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5l eGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBF WEVDVVRFIHEzOyA8d2FpdGluZyAuLi4+CitzdGVwIHMyZHJvcGk6IERST1AgSU5ERVggZm9vMTFf YTsKK3N0ZXAgczJ1bmxvY2s6IFNFTEVDVCBwZ19hZHZpc29yeV91bmxvY2soMTIzNDUpOworcGdf YWR2aXNvcnlfdW5sb2NrCistLS0tLS0tLS0tLS0tLS0tLS0KK3QgICAgICAgICAgICAgICAgIAor KDEgcm93KQorCitzdGVwIHMxZXhlYzM6IDwuLi4gY29tcGxldGVkPgorczE6IE5PVElDRTogIEZp bmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyBub3QgdmFsaWQKK3MxOiBOT1RJ Q0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQKK1FVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBcHBlbmQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKyAgLT4gIEdyb3VwQWdncmVnYXRlICAgICAgICAgICAgICAg ICAgICAgICAgIAorICAgICAgICBHcm91cCBLZXk6IHQxLmEgICAgICAgICAgICAgICAgICAgICAg CisgICAgICAgIC0+ICBNZXJnZSBKb2luICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg ICAgICAgTWVyZ2UgQ29uZDogKHQxLmEgPSB0Mi5hKSAgICAgIAorICAgICAgICAgICAgICAtPiAg U29ydCAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5 OiB0MS5hICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZv bzExIHQxIAorICAgICAgICAgICAgICAtPiAgU29ydCAgICAgICAgICAgICAgICAgICAgICAgCisg ICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0Mi5hICAgICAgICAgICAKKyAgICAgICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzExIHQyIAorICAtPiAgR3JvdXBBZ2dyZWdhdGUg ICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIEdyb3VwIEtleTogdDFfMS5hICAgICAg ICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIE1lcmdlIEpvaW4gICAgICAgICAgICAgICAgICAg ICAgIAorICAgICAgICAgICAgICBNZXJnZSBDb25kOiAodDFfMS5hID0gdDJfMS5hKSAgCisgICAg ICAgICAgICAgIC0+ICBTb3J0ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg ICAgICAgU29ydCBLZXk6IHQxXzEuYSAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAtPiAg U2VxIFNjYW4gb24gZm9vMiB0MV8xCisgICAgICAgICAgICAgIC0+ICBTb3J0ICAgICAgICAgICAg ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHQyXzEuYSAgICAgICAg IAorICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMiB0Ml8xCisoMjEgcm93 cykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vc3BlY3Mv Y2FjaGVkLXBsYW4tcmVwbGFuLnNwZWMgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlv bi9zcGVjcy9jYWNoZWQtcGxhbi1yZXBsYW4uc3BlYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwLi4zYzkyY2JkNWM2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9k dWxlcy9kZWxheV9leGVjdXRpb24vc3BlY3MvY2FjaGVkLXBsYW4tcmVwbGFuLnNwZWMKQEAgLTAs MCArMSw2MSBAQAorIyBUZXN0IHRvIGNoZWNrIHRoYXQgaW52YWxpZGF0aW9uIG9mIGNhY2hlZCBn ZW5lcmljIHBsYW5zIGR1cmluZyBFeGVjdXRvclN0YXJ0CisjIGNvcnJlY3RseSB0cmlnZ2VycyBy ZXBsYW5uaW5nIGFuZCByZS1leGVjdXRpb24uCisKK3NldHVwCit7CisgIENSRUFURSBUQUJMRSBm b28gKGEgaW50LCBiIHRleHQpIFBBUlRJVElPTiBCWSBMSVNUKGEpOworICBDUkVBVEUgVEFCTEUg Zm9vMSBQQVJUSVRJT04gT0YgZm9vIEZPUiBWQUxVRVMgSU4gKDEpIFBBUlRJVElPTiBCWSBMSVNU IChhKTsKKyAgQ1JFQVRFIFRBQkxFIGZvbzExIFBBUlRJVElPTiBPRiBmb28xIEZPUiBWQUxVRVMg SU4gKDEpOworICBDUkVBVEUgSU5ERVggZm9vMTFfYSBPTiBmb28xIChhKTsKKyAgQ1JFQVRFIFRB QkxFIGZvbzIgUEFSVElUSU9OIE9GIGZvbyBGT1IgVkFMVUVTIElOICgyKTsKKyAgQ1JFQVRFIFZJ RVcgZm9vdiBBUyBTRUxFQ1QgKiBGUk9NIGZvbzsKK30KKwordGVhcmRvd24KK3sKKyAgRFJPUCBW SUVXIGZvb3Y7CisgIERST1AgVEFCTEUgZm9vOworfQorCitzZXNzaW9uICJzMSIKKyMgQXBwZW5k IHdpdGggcnVuLXRpbWUgcHJ1bmluZworc3RlcCAiczFwcmVwIiAgIHsgU0VUIHBsYW5fY2FjaGVf bW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBQUkVQQVJFIHEgQVMgU0VMRUNUICogRlJP TSBmb292IFdIRVJFIGEgPSAkMTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcSAo MSk7IH0KKworIyBubyBBcHBlbmQgY2FzZSAob25seSBvbmUgcGFydGl0aW9uIHNlbGVjdGVkIGJ5 IHRoZSBwbGFubmVyKQorc3RlcCAiczFwcmVwMiIgICB7IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBm b3JjZV9nZW5lcmljX3BsYW47CisJCSAgUFJFUEFSRSBxMiBBUyBTRUxFQ1QgKiBGUk9NIGZvb3Yg V0hFUkUgYSA9IDE7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEyOyB9CisKKyMg QXBwZW5kIHdpdGggcGFydGl0aW9uLXdpc2Ugam9pbiBhZ2dyZWdhdGUgYW5kIGpvaW4gcGxhbnMg YXMgY2hpbGQgc3VicGxhbnMKK3N0ZXAgInMxcHJlcDMiICAgeyBTRVQgcGxhbl9jYWNoZV9tb2Rl ID0gZm9yY2VfZ2VuZXJpY19wbGFuOworCQkgIFNFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9hZ2dy ZWdhdGUgPSBvbjsKKwkJICBTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2Vfam9pbiA9IG9uOworCQkg IFBSRVBBUkUgcTMgQVMgU0VMRUNUIHQxLmEsIGNvdW50KHQyLmIpIEZST00gZm9vIHQxLCBmb28g dDIgV0hFUkUgdDEuYSA9IHQyLmEgR1JPVVAgQlkgMTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYp IEVYRUNVVEUgcTM7IH0KKworIyBFeGVjdXRlcyBhIGdlbmVyaWMgcGxhbgorc3RlcCAiczFleGVj Igl7IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVj dXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVD VVRFIHEgKDEpOyB9CitzdGVwICJzMWV4ZWMyIgl7IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJ CSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJ CSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEyOyB9CitzdGVwICJzMWV4ZWMzIgl7IExP QUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9z dGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEz OyB9CisKK3Nlc3Npb24gInMyIgorc3RlcCAiczJsb2NrIgl7IFNFTEVDVCBwZ19hZHZpc29yeV9s b2NrKDEyMzQ1KTsgfQorc3RlcCAiczJ1bmxvY2siCXsgU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9j aygxMjM0NSk7IH0KK3N0ZXAgInMyZHJvcGkiCXsgRFJPUCBJTkRFWCBmb28xMV9hOyB9CisKKyMg V2hpbGUgInMxZXhlYyIsIGV0Yy4gd2FpdCB0byBhY3F1aXJlIHRoZSBhZHZpc29yeSBsb2NrLCAi czJkcm9wIiBpcyBhYmxlIHRvCisjIGRyb3AgdGhlIGluZGV4IGJlaW5nIHVzZWQgaW4gdGhlIGNh Y2hlZCBwbGFuLiAgV2hlbiAiczFleGVjIiBpcyB0aGVuCisjIHVuYmxvY2tlZCBhbmQgaW5pdGlh bGl6ZXMgdGhlIGNhY2hlZCBwbGFuIGZvciBleGVjdXRpb24sIGl0IGRldGVjdHMgdGhlCisjIGNv bmN1cnJlbnQgaW5kZXggZHJvcCBhbmQgY2F1c2VzIHRoZSBjYWNoZWQgcGxhbiB0byBiZSBkaXNj YXJkZWQgYW5kCisjIHJlY3JlYXRlZCB3aXRob3V0IHRoZSBpbmRleC4KK3Blcm11dGF0aW9uICJz MXByZXAiICJzMmxvY2siICJzMWV4ZWMiICJzMmRyb3BpIiAiczJ1bmxvY2siCitwZXJtdXRhdGlv biAiczFwcmVwMiIgInMybG9jayIgInMxZXhlYzIiICJzMmRyb3BpIiAiczJ1bmxvY2siCitwZXJt dXRhdGlvbiAiczFwcmVwMyIgInMybG9jayIgInMxZXhlYzMiICJzMmRyb3BpIiAiczJ1bmxvY2si Ci0tIAoyLjM1LjMKCg== --00000000000082dd050604ad25e6 Content-Type: application/octet-stream; name="v47-0004-Adjustments-to-allow-ExecutorStart-to-sometimes-.patch" Content-Disposition: attachment; filename="v47-0004-Adjustments-to-allow-ExecutorStart-to-sometimes-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lm7ic0ob4 RnJvbSBmOWZmOWFhM2RkYzA1ZWU5NDhkNzIxYTA1ZWM1NTJkNWU5NTljNDk4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNiBTZXAgMjAyMyAxNzo1Mzo0NiArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ3 IDQvOF0gQWRqdXN0bWVudHMgdG8gYWxsb3cgRXhlY3V0b3JTdGFydCgpIHRvIHNvbWV0aW1lcwog ZmFpbAoKVXBvbiBwYXNzaW5nIGEgcGxhbiB0cmVlIGZyb20gYSBDYWNoZWRQbGFuIHRvIHRoZSBl eGVjdXRvciwgdGhlcmUncyBhCnBvc3NpYmlsaXR5IHRoYXQgRXhlY3V0b3JTdGFydCgpIG1pZ2h0 IHJldHVybiBhbiBpbmNvbXBsZXRlbHkgc2V0IHVwCnBsYW5zdGF0ZSB0cmVlLiBUaGlzIGNhbiBo YXBwZW4gaWYgdGhlIENhY2hlZFBsYW4gdW5kZXJnb2VzIGludmFsaWRhdGlvbgpkdXJpbmcgdGhl IEV4ZWNJbml0Tm9kZSgpIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIEluIHN1Y2ggY2FzZXMsIHRo ZQpleGVjdXRpb24gc2hvdWxkIGJlIHJlYXR0ZW1wdGVkIHVzaW5nIGEgZnJlc2ggQ2FjaGVkUGxh bi4gQWxzbywgYW55CnBhcnRpYWxseSBpbml0aWFsaXplZCBFU3RhdGUgbXVzdCBiZSBjbGVhbmVk IHVwIGJ5IGludm9raW5nIGJvdGgKRXhlY3V0b3JFbmQoKSBhbmQgRnJlZUV4ZWN1dG9yU3RhdGUo KS4KCkV4ZWN1dG9yU3RhcnQoKSAoYW5kIEV4ZWN1dG9yU3RhcnRfaG9vaygpKSBub3cgcmV0dXJu IGEgQm9vbGVhbiB0ZWxsaW5nCnRoZSBjYWxsZXIgaWYgdGhlIHBsYW4gaW5pdGlhbGl6YXRpb24g ZmFpbGVkLgoKRm9yIHRoZSByZXBsYW4gbG9vcCBpbiB0aGF0IGNvbnRleHQsIGl0IG1ha2VzIG1v cmUgc2Vuc2UgdG8gaGF2ZQpFeGVjdXRvclN0YXJ0KCkgZWl0aGVyIGluIHRoZSBzYW1lIHNjb3Bl IG9yIGNsb3NlciB0byB3aGVyZQpHZXRDYWNoZWRQbGFuKCkgaXMgaW52b2tlZC4gIFNvIHRoaXMg Y29tbWl0IG1vZGlmaWVzIHRoZSBmb2xsb3dpbmcKc2l0ZXM6CgoqIFRoZSBFeGVjdXRvclN0YXJ0 KCkgY2FsbCBpbiBFeHBsYWluT25lUGxhbigpIGlzIG1vdmVkIGludG8gYSBuZXcKICBmdW5jdGlv biBFeHBsYWluUXVlcnlEZXNjKCkgYWxvbmcgd2l0aCBDcmVhdGVRdWVyeURlc2MoKS4gIENhbGxl cnMKICBvZiBFeHBsYWluT25lUGxhbigpIHNob3VsZCBub3cgY2FsbCB0aGUgbmV3IGZ1bmN0aW9u IGZpcnN0LgoKKiBUaGUgRXhlY3V0b3JTdGFydCgpIGNhbGwgaW4gX1NQSV9wcXVlcnkoKSBpcyBt b3ZlZCB0byBpdHMgY2FsbGVyCiAgX1NQSV9leGVjdXRlX3BsYW4oKS4KCiogVGhlIEV4ZWN1dG9y U3RhcnQoKSBjYWxsIGluIFBvcnRhbFJ1bk11bHRpKCkgaXMgbW92ZWQgdG8KICBQb3J0YWxTdGFy dCgpLiAgVGhpcyByZXF1aXJlcyBhIG5ldyBMaXN0IGZpZWxkIGluIFBvcnRhbERhdGEgdG8KICBz dG9yZSB0aGUgUXVlcnlEZXNjcyBjcmVhdGVkIGluIFBvcnRhbFN0YXJ0KCkgYW5kIGEgbmV3IG1l bW9yeQogIGNvbnRleHQgZm9yIHRob3NlLiAgT25lIHVuaW50ZW5kZWQgY29uc2VxdWVuY2UgaXMg dGhhdAogIENvbW1hbmRDb3VudGVySW5jcmVtZW50KCkgYmV0d2VlbiBxdWVyaWVzIGluIHRoZSBQ T1JUQUxfTVVMVElfUVVFUlkKICBjYXNlIGlzIG5vdyBkb25lIGluIHRoZSBsb29wIGluIFBvcnRh bFN0YXJ0KCkgYW5kIG5vdCBpbgogIFBvcnRhbFJ1bk11bHRpKCkuICBUaGF0IHN0aWxsIHdvcmtz IGJlY2F1c2UgdGhlIFNuYXBzaG90IHJlZ2lzdGVyZWQKICBpbiBRdWVyeURlc2MvRVN0YXRlIGlz IHVwZGF0ZWQgdG8gYWNjb3VudCBmb3IgdGhlIENDSSgpLgoKVGhpcyBjb21taXQgYWxzbyBhZGRz IGEgbmV3IGZsYWcgdG8gRVN0YXRlIGNhbGxlZCBlc19jYW5jZWxlZCB0aGF0CmNvbXBsZW1lbnRz IGVzX2ZpbmlzaGVkIHRvIGRlbm90ZSB0aGUgbmV3IHNjZW5hcmlvIHdoZXJlCkV4ZWN1dG9yU3Rh cnQoKSByZXR1cm5zIHdpdGggYSBwYXJ0aWFsbHkgc2V0dXAgcGxhbnN0YXRlIHRyZWUuICBBbHNv LAp0byByZXNldCB0aGUgQUZURVIgdHJpZ2dlciBzdGF0ZSB0aGF0IHdvdWxkIGhhdmUgYmVlbiBz ZXQgdXAgaW4gdGhlCkV4ZWN1dG9yU3RhcnQoKSwgdGhpcyBhZGRzIGEgbmV3IGZ1bmN0aW9uIEFm dGVyVHJpZ2dlckNhbmNlbFF1ZXJ5KCkKd2hpY2ggaXMgY2FsbGVkIGZyb20gRXhlY3V0b3JFbmQo KSAobm90IEV4ZWN1dG9yRmluaXNoKCkpIHdoZW4KZXNfY2FuY2VsZWQgaXMgdHJ1ZS4KCk5vdGUg dGhhdCB0aGlzIGNvbW1pdCBieSBpdHNlbGYgZG9lc24ndCBtYWtlIGFueSBmdW5jdGlvbmFsIGNo YW5nZSwKYmVjYXVzZSB0aGUgQ2FjaGVkUGxhbiBpcyBub3QgcGFzc2VkIGludG8gdGhlIGV4ZWN1 dG9yIHlldC4KLS0tCiBjb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYyAgICAgICAg ICAgfCAgMTIgKy0KIC4uLi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMg ICB8ICAxMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgICAgICAgICAgICAgICAg IHwgICA0ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jICAgICAgICAgICAgICAg fCAgIDggKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgICAgICAgICAgICB8 IDE0MiArKysrLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYyAgICAgICAgICAg ICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYyAgICAgICAgICAgICAg ICB8ICAgOCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jICAgICAgICAgICAg IHwgICA1ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgICAgICAgICAgICAg fCAgMzEgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyAgICAgICAgICAgICAgICB8 ICAxMyArCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICAgICAgICAgICAgICAgfCAg NTcgKystCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyAgICAgICAgICAgfCAg IDMgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jICAgICAgICAgICAgICB8ICAg MSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYyAgICAgICAgICAgICAgfCAgIDQg Ky0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jICAgICAgICAgICAgICAgICAgICB8ICA0OCAr Ky0KIHNyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICAgICAgICAgICB8ICAxOCAr LQogc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyAgICAgICAgICAgICAgICAgICAgIHwgMzQ1ICsr KysrKysrKy0tLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYyAgICAg ICAgICAgIHwgICA5ICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaCAgICAgICAgICAg ICAgICB8ICAgNyArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oICAgICAgICAgICAg ICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggICAgICAgICAgICAg ICB8ICAgNiArLQogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgICAg IHwgICAzICsKIHNyYy9pbmNsdWRlL3Rjb3AvcHF1ZXJ5LmggICAgICAgICAgICAgICAgICAgICB8 ICAgMiArLQogc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmggICAgICAgICAgICAgICAgICAgIHwg ICAyICsKIDI0IGZpbGVzIGNoYW5nZWQsIDQ2MCBpbnNlcnRpb25zKCspLCAyODQgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMgYi9j b250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYwppbmRleCBjM2FjMjdhZTk5Li5hMDYz MGQ3OTQ0IDEwMDY0NAotLS0gYS9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYwor KysgYi9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYwpAQCAtNzgsNyArNzgsNyBA QCBzdGF0aWMgRXhlY3V0b3JSdW5faG9va190eXBlIHByZXZfRXhlY3V0b3JSdW4gPSBOVUxMOwog c3RhdGljIEV4ZWN1dG9yRmluaXNoX2hvb2tfdHlwZSBwcmV2X0V4ZWN1dG9yRmluaXNoID0gTlVM TDsKIHN0YXRpYyBFeGVjdXRvckVuZF9ob29rX3R5cGUgcHJldl9FeGVjdXRvckVuZCA9IE5VTEw7 CiAKLXN0YXRpYyB2b2lkIGV4cGxhaW5fRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVz YywgaW50IGVmbGFncyk7CitzdGF0aWMgYm9vbCBleHBsYWluX0V4ZWN1dG9yU3RhcnQoUXVlcnlE ZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOwogc3RhdGljIHZvaWQgZXhwbGFpbl9FeGVjdXRv clJ1bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKIAkJCQkJCQkJU2NhbkRpcmVjdGlvbiBkaXJlY3Rp b24sCiAJCQkJCQkJCXVpbnQ2NCBjb3VudCwgYm9vbCBleGVjdXRlX29uY2UpOwpAQCAtMjU4LDkg KzI1OCwxMSBAQCBfUEdfaW5pdCh2b2lkKQogLyoKICAqIEV4ZWN1dG9yU3RhcnQgaG9vazogc3Rh cnQgdXAgbG9nZ2luZyBpZiBuZWVkZWQKICAqLwotc3RhdGljIHZvaWQKK3N0YXRpYyBib29sCiBl eHBsYWluX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiB7 CisJYm9vbAlwbGFuX3ZhbGlkOworCiAJLyoKIAkgKiBBdCB0aGUgYmVnaW5uaW5nIG9mIGVhY2gg dG9wLWxldmVsIHN0YXRlbWVudCwgZGVjaWRlIHdoZXRoZXIgd2UnbGwKIAkgKiBzYW1wbGUgdGhp cyBzdGF0ZW1lbnQuICBJZiBuZXN0ZWQtc3RhdGVtZW50IGV4cGxhaW5pbmcgaXMgZW5hYmxlZCwK QEAgLTI5Niw5ICsyOTgsOSBAQCBleHBsYWluX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVy eURlc2MsIGludCBlZmxhZ3MpCiAJfQogCiAJaWYgKHByZXZfRXhlY3V0b3JTdGFydCkKLQkJcHJl dl9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwkJcGxhbl92YWxpZCA9IHByZXZf RXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CiAJZWxzZQotCQlzdGFuZGFyZF9FeGVj dXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwkJcGxhbl92YWxpZCA9IHN0YW5kYXJkX0V4 ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwogCiAJaWYgKGF1dG9fZXhwbGFpbl9lbmFi bGVkKCkpCiAJewpAQCAtMzE2LDYgKzMxOCw4IEBAIGV4cGxhaW5fRXhlY3V0b3JTdGFydChRdWVy eURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhv bGRjeHQpOwogCQl9CiAJfQorCisJcmV0dXJuIHBsYW5fdmFsaWQ7CiB9CiAKIC8qCmRpZmYgLS1n aXQgYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyBiL2Nv bnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCmluZGV4IDA2YjY1 YWVlZjUuLjUzNTRkZmY3ZDcgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRz L3BnX3N0YXRfc3RhdGVtZW50cy5jCisrKyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3Bn X3N0YXRfc3RhdGVtZW50cy5jCkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIFBsYW5uZWRTdG10 ICpwZ3NzX3BsYW5uZXIoUXVlcnkgKnBhcnNlLAogCQkJCQkJCQkgY29uc3QgY2hhciAqcXVlcnlf c3RyaW5nLAogCQkJCQkJCQkgaW50IGN1cnNvck9wdGlvbnMsCiAJCQkJCQkJCSBQYXJhbUxpc3RJ bmZvIGJvdW5kUGFyYW1zKTsKLXN0YXRpYyB2b2lkIHBnc3NfRXhlY3V0b3JTdGFydChRdWVyeURl c2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CitzdGF0aWMgYm9vbCBwZ3NzX0V4ZWN1dG9yU3Rh cnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOwogc3RhdGljIHZvaWQgcGdzc19F eGVjdXRvclJ1bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKIAkJCQkJCQkgU2NhbkRpcmVjdGlvbiBk aXJlY3Rpb24sCiAJCQkJCQkJIHVpbnQ2NCBjb3VudCwgYm9vbCBleGVjdXRlX29uY2UpOwpAQCAt OTYxLDEzICs5NjEsMTUgQEAgcGdzc19wbGFubmVyKFF1ZXJ5ICpwYXJzZSwKIC8qCiAgKiBFeGVj dXRvclN0YXJ0IGhvb2s6IHN0YXJ0IHVwIHRyYWNraW5nIGlmIG5lZWRlZAogICovCi1zdGF0aWMg dm9pZAorc3RhdGljIGJvb2wKIHBnc3NfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVz YywgaW50IGVmbGFncykKIHsKKwlib29sCXBsYW5fdmFsaWQ7CisKIAlpZiAocHJldl9FeGVjdXRv clN0YXJ0KQotCQlwcmV2X0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOworCQlwbGFu X3ZhbGlkID0gcHJldl9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKIAllbHNlCi0J CXN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOworCQlwbGFuX3ZhbGlk ID0gc3RhbmRhcmRfRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CiAKIAkvKgogCSAq IElmIHF1ZXJ5IGhhcyBxdWVyeUlkIHplcm8sIGRvbid0IHRyYWNrIGl0LiAgVGhpcyBwcmV2ZW50 cyBkb3VibGUKQEAgLTk5MCw2ICs5OTIsOCBAQCBwZ3NzX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNj ICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0 KTsKIAkJfQogCX0KKworCXJldHVybiBwbGFuX3ZhbGlkOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5 dG8uYwppbmRleCBlYWEzMTcyNzkzLi5hNDU0ODlmOGY1IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9jb3B5dG8uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwpA QCAtNTY3LDggKzU2NywxMCBAQCBCZWdpbkNvcHlUbyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCSAq IENhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24uCiAJ CSAqCiAJCSAqIEV4ZWN1dG9yU3RhcnQgY29tcHV0ZXMgYSByZXN1bHQgdHVwZGVzYyBmb3IgdXMK KwkJICoKKwkJICogT0sgdG8gaWdub3JlIHRoZSByZXR1cm4gdmFsdWU7IHBsYW4gY2FuJ3QgYmVj b21lIGludmFsaWQuCiAJCSAqLwotCQlFeGVjdXRvclN0YXJ0KGNzdGF0ZS0+cXVlcnlEZXNjLCAw KTsKKwkJKHZvaWQpIEV4ZWN1dG9yU3RhcnQoY3N0YXRlLT5xdWVyeURlc2MsIDApOwogCiAJCXR1 cERlc2MgPSBjc3RhdGUtPnF1ZXJ5RGVzYy0+dHVwRGVzYzsKIAl9CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRl YXMuYwppbmRleCBlOTE5MjBjYTE0Li4xNjdkYjRjZjU2IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9jcmVhdGVhcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFz LmMKQEAgLTMyOSw4ICszMjksMTIgQEAgRXhlY0NyZWF0ZVRhYmxlQXMoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBDcmVhdGVUYWJsZUFzU3RtdCAqc3RtdCwKIAkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90 KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJCWRlc3QsIHBhcmFtcywgcXVlcnlFbnYsIDAp OwogCi0JCS8qIGNhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVj dXRpb24gKi8KLQkJRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIEdldEludG9SZWxFRmxhZ3MoaW50 bykpOworCQkvKgorCQkgKiBjYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBm b3IgZXhlY3V0aW9uCisJCSAqCisJCSAqIE9LIHRvIGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlOyBw bGFuIGNhbid0IGJlY29tZSBpbnZhbGlkLgorCQkgKi8KKwkJKHZvaWQpIEV4ZWN1dG9yU3RhcnQo cXVlcnlEZXNjLCBHZXRJbnRvUmVsRUZsYWdzKGludG8pKTsKIAogCQkvKiBydW4gdGhlIHBsYW4g dG8gY29tcGxldGlvbiAqLwogCQlFeGVjdXRvclJ1bihxdWVyeURlc2MsIEZvcndhcmRTY2FuRGly ZWN0aW9uLCAwLCB0cnVlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxh aW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCA4NTcwYjE0ZjYyLi5m ZTkzMTRiYzk2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC0zOTMsNiArMzkzLDcgQEAgRXhw bGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJZWxzZQogCXsK IAkJUGxhbm5lZFN0bXQgKnBsYW47CisJCVF1ZXJ5RGVzYyAgICpxdWVyeURlc2M7CiAJCWluc3Ry X3RpbWUJcGxhbnN0YXJ0LAogCQkJCQlwbGFuZHVyYXRpb247CiAJCUJ1ZmZlclVzYWdlIGJ1ZnVz YWdlX3N0YXJ0LApAQCAtNDE1LDEyICs0MTYsODcgQEAgRXhwbGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpx dWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJCQlCdWZmZXJVc2FnZUFjY3VtRGlmZigmYnVmdXNh Z2UsICZwZ0J1ZmZlclVzYWdlLCAmYnVmdXNhZ2Vfc3RhcnQpOwogCQl9CiAKKwkJcXVlcnlEZXNj ID0gRXhwbGFpblF1ZXJ5RGVzYyhwbGFuLCBxdWVyeVN0cmluZywgaW50bywgZXMsCisJCQkJCQkJ CQkgcGFyYW1zLCBxdWVyeUVudik7CisJCUFzc2VydChxdWVyeURlc2MpOworCiAJCS8qIHJ1biBp dCAoaWYgbmVlZGVkKSBhbmQgcHJvZHVjZSBvdXRwdXQgKi8KLQkJRXhwbGFpbk9uZVBsYW4ocGxh biwgaW50bywgZXMsIHF1ZXJ5U3RyaW5nLCBwYXJhbXMsIHF1ZXJ5RW52LAorCQlFeHBsYWluT25l UGxhbihxdWVyeURlc2MsIGludG8sIGVzLCBxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVyeUVudiwK IAkJCQkJICAgJnBsYW5kdXJhdGlvbiwgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCkp OwogCX0KIH0KIAorLyoKKyAqIEV4cGxhaW5RdWVyeURlc2MKKyAqCQlTZXQgdXAgUXVlcnlEZXNj IGZvciBFWFBMQUlOaW5nIGEgZ2l2ZW4gcGxhbgorICovCitRdWVyeURlc2MgKgorRXhwbGFpblF1 ZXJ5RGVzYyhQbGFubmVkU3RtdCAqc3RtdCwKKwkJCQkgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcs IEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCisJCQkJIFBhcmFtTGlzdEluZm8g cGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudikKK3sKKwlRdWVyeURlc2MgICpxdWVy eURlc2M7CisJRGVzdFJlY2VpdmVyICpkZXN0OworCWludAkJCWVmbGFnczsKKwlpbnQJCQlpbnN0 cnVtZW50X29wdGlvbiA9IDA7CisKKwkvKgorCSAqIE5vcm1hbGx5IHdlIGRpc2NhcmQgdGhlIHF1 ZXJ5J3Mgb3V0cHV0LCBidXQgaWYgZXhwbGFpbmluZyBDUkVBVEUgVEFCTEUKKwkgKiBBUywgd2Un ZCBiZXR0ZXIgdXNlIHRoZSBhcHByb3ByaWF0ZSB0dXBsZSByZWNlaXZlci4KKwkgKi8KKwlpZiAo aW50bykKKwkJZGVzdCA9IENyZWF0ZUludG9SZWxEZXN0UmVjZWl2ZXIoaW50byk7CisJZWxzZQor CQlkZXN0ID0gTm9uZV9SZWNlaXZlcjsKKworCWlmIChlcy0+YW5hbHl6ZSAmJiBlcy0+dGltaW5n KQorCQlpbnN0cnVtZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX1RJTUVSOworCWVsc2UgaWYgKGVz LT5hbmFseXplKQorCQlpbnN0cnVtZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX1JPV1M7CisKKwlp ZiAoZXMtPmJ1ZmZlcnMpCisJCWluc3RydW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfQlVGRkVS UzsKKwlpZiAoZXMtPndhbCkKKwkJaW5zdHJ1bWVudF9vcHRpb24gfD0gSU5TVFJVTUVOVF9XQUw7 CisKKwkvKgorCSAqIFVzZSBhIHNuYXBzaG90IHdpdGggYW4gdXBkYXRlZCBjb21tYW5kIElEIHRv IGVuc3VyZSB0aGlzIHF1ZXJ5IHNlZXMKKwkgKiByZXN1bHRzIG9mIGFueSBwcmV2aW91c2x5IGV4 ZWN1dGVkIHF1ZXJpZXMuCisJICovCisJUHVzaENvcGllZFNuYXBzaG90KEdldEFjdGl2ZVNuYXBz aG90KCkpOworCVVwZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CisKKwkvKiBDcmVhdGUg YSBRdWVyeURlc2MgZm9yIHRoZSBxdWVyeSAqLworCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVz YyhzdG10LCBxdWVyeVN0cmluZywKKwkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxp ZFNuYXBzaG90LAorCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCBpbnN0cnVtZW50X29w dGlvbik7CisKKwkvKiBTZWxlY3QgZXhlY3V0aW9uIG9wdGlvbnMgKi8KKwlpZiAoZXMtPmFuYWx5 emUpCisJCWVmbGFncyA9IDA7CQkJCS8qIGRlZmF1bHQgcnVuLXRvLWNvbXBsZXRpb24gZmxhZ3Mg Ki8KKwllbHNlCisJCWVmbGFncyA9IEVYRUNfRkxBR19FWFBMQUlOX09OTFk7CisJaWYgKGVzLT5n ZW5lcmljKQorCQllZmxhZ3MgfD0gRVhFQ19GTEFHX0VYUExBSU5fR0VORVJJQzsKKwlpZiAoaW50 bykKKwkJZWZsYWdzIHw9IEdldEludG9SZWxFRmxhZ3MoaW50byk7CisKKwkvKgorCSAqIENhbGwg RXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24uICBBIGNhY2hl ZCBwbGFuCisJICogbWF5IGdldCBpbnZhbGlkYXRlZCBkdXJpbmcgcGxhbiBpbnRpYWxpemF0aW9u LgorCSAqLworCWlmICghRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncykpCisJeworCQkv KiBDbGVhbiB1cC4gKi8KKwkJRXhlY3V0b3JFbmQocXVlcnlEZXNjKTsKKwkJRnJlZVF1ZXJ5RGVz YyhxdWVyeURlc2MpOworCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCQlyZXR1cm4gTlVMTDsKKwl9 CisKKwlyZXR1cm4gcXVlcnlEZXNjOworfQorCiAvKgogICogRXhwbGFpbk9uZVV0aWxpdHkgLQog ICoJICBwcmludCBvdXQgdGhlIGV4ZWN1dGlvbiBwbGFuIGZvciBvbmUgdXRpbGl0eSBzdGF0ZW1l bnQKQEAgLTUyNCwyOSArNjAwLDE2IEBAIEV4cGxhaW5PbmVVdGlsaXR5KE5vZGUgKnV0aWxpdHlT dG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogICogdG8gY2FsbCBpdC4K ICAqLwogdm9pZAotRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBJbnRv Q2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAorRXhwbGFpbk9uZVBsYW4oUXVlcnlEZXNj ICpxdWVyeURlc2MsCisJCQkgICBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAog CQkJICAgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJ ICAgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsIGNvbnN0IGluc3RyX3RpbWUgKnBsYW5kdXJh dGlvbiwKIAkJCSAgIGNvbnN0IEJ1ZmZlclVzYWdlICpidWZ1c2FnZSkKIHsKLQlEZXN0UmVjZWl2 ZXIgKmRlc3Q7Ci0JUXVlcnlEZXNjICAqcXVlcnlEZXNjOwogCWluc3RyX3RpbWUJc3RhcnR0aW1l OwogCWRvdWJsZQkJdG90YWx0aW1lID0gMDsKLQlpbnQJCQllZmxhZ3M7Ci0JaW50CQkJaW5zdHJ1 bWVudF9vcHRpb24gPSAwOwotCi0JQXNzZXJ0KHBsYW5uZWRzdG10LT5jb21tYW5kVHlwZSAhPSBD TURfVVRJTElUWSk7CiAKLQlpZiAoZXMtPmFuYWx5emUgJiYgZXMtPnRpbWluZykKLQkJaW5zdHJ1 bWVudF9vcHRpb24gfD0gSU5TVFJVTUVOVF9USU1FUjsKLQllbHNlIGlmIChlcy0+YW5hbHl6ZSkK LQkJaW5zdHJ1bWVudF9vcHRpb24gfD0gSU5TVFJVTUVOVF9ST1dTOwotCi0JaWYgKGVzLT5idWZm ZXJzKQotCQlpbnN0cnVtZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX0JVRkZFUlM7Ci0JaWYgKGVz LT53YWwpCi0JCWluc3RydW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfV0FMOworCUFzc2VydChx dWVyeURlc2MtPnBsYW5uZWRzdG10LT5jb21tYW5kVHlwZSAhPSBDTURfVVRJTElUWSk7CiAKIAkv KgogCSAqIFdlIGFsd2F5cyBjb2xsZWN0IHRpbWluZyBmb3IgdGhlIGVudGlyZSBzdGF0ZW1lbnQs IGV2ZW4gd2hlbiBub2RlLWxldmVsCkBAIC01NTUsNDAgKzYxOCw2IEBAIEV4cGxhaW5PbmVQbGFu KFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRl ICplcywKIAkgKi8KIAlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHN0YXJ0dGltZSk7CiAKLQkvKgot CSAqIFVzZSBhIHNuYXBzaG90IHdpdGggYW4gdXBkYXRlZCBjb21tYW5kIElEIHRvIGVuc3VyZSB0 aGlzIHF1ZXJ5IHNlZXMKLQkgKiByZXN1bHRzIG9mIGFueSBwcmV2aW91c2x5IGV4ZWN1dGVkIHF1 ZXJpZXMuCi0JICovCi0JUHVzaENvcGllZFNuYXBzaG90KEdldEFjdGl2ZVNuYXBzaG90KCkpOwot CVVwZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7Ci0KLQkvKgotCSAqIE5vcm1hbGx5IHdl IGRpc2NhcmQgdGhlIHF1ZXJ5J3Mgb3V0cHV0LCBidXQgaWYgZXhwbGFpbmluZyBDUkVBVEUgVEFC TEUKLQkgKiBBUywgd2UnZCBiZXR0ZXIgdXNlIHRoZSBhcHByb3ByaWF0ZSB0dXBsZSByZWNlaXZl ci4KLQkgKi8KLQlpZiAoaW50bykKLQkJZGVzdCA9IENyZWF0ZUludG9SZWxEZXN0UmVjZWl2ZXIo aW50byk7Ci0JZWxzZQotCQlkZXN0ID0gTm9uZV9SZWNlaXZlcjsKLQotCS8qIENyZWF0ZSBhIFF1 ZXJ5RGVzYyBmb3IgdGhlIHF1ZXJ5ICovCi0JcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBs YW5uZWRzdG10LCBxdWVyeVN0cmluZywKLQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52 YWxpZFNuYXBzaG90LAotCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCBpbnN0cnVtZW50 X29wdGlvbik7Ci0KLQkvKiBTZWxlY3QgZXhlY3V0aW9uIG9wdGlvbnMgKi8KLQlpZiAoZXMtPmFu YWx5emUpCi0JCWVmbGFncyA9IDA7CQkJCS8qIGRlZmF1bHQgcnVuLXRvLWNvbXBsZXRpb24gZmxh Z3MgKi8KLQllbHNlCi0JCWVmbGFncyA9IEVYRUNfRkxBR19FWFBMQUlOX09OTFk7Ci0JaWYgKGVz LT5nZW5lcmljKQotCQllZmxhZ3MgfD0gRVhFQ19GTEFHX0VYUExBSU5fR0VORVJJQzsKLQlpZiAo aW50bykKLQkJZWZsYWdzIHw9IEdldEludG9SZWxFRmxhZ3MoaW50byk7Ci0KLQkvKiBjYWxsIEV4 ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uICovCi0JRXhlY3V0 b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7Ci0KIAkvKiBFeGVjdXRlIHRoZSBwbGFuIGZvciBz dGF0aXN0aWNzIGlmIGFza2VkIGZvciAqLwogCWlmIChlcy0+YW5hbHl6ZSkKIAl7CkBAIC00ODY1 LDYgKzQ4OTQsMTcgQEAgRXhwbGFpbkR1bW15R3JvdXAoY29uc3QgY2hhciAqb2JqdHlwZSwgY29u c3QgY2hhciAqbGFiZWxuYW1lLCBFeHBsYWluU3RhdGUgKmVzKQogCX0KIH0KIAorLyoKKyAqIERp c2NhcmQgb3V0cHV0IGJ1ZmZlciBmb3IgYSBmcmVzaCByZXN0YXJ0LgorICovCit2b2lkCitFeHBs YWluUmVzZXRPdXRwdXQoRXhwbGFpblN0YXRlICplcykKK3sKKwlBc3NlcnQoZXMtPnN0cik7CisJ cmVzZXRTdHJpbmdJbmZvKGVzLT5zdHIpOworCUV4cGxhaW5CZWdpbk91dHB1dChlcyk7Cit9CisK IC8qCiAgKiBFbWl0IHRoZSBzdGFydC1vZi1vdXRwdXQgYm9pbGVycGxhdGUuCiAgKgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9leHRlbnNpb24uYwppbmRleCA1MzUwNzJkMTgxLi5iNzAyYTY1ZTgxIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9leHRlbnNpb24uYwpAQCAtODAxLDcgKzgwMSw4IEBAIGV4ZWN1dGVfc3FsX3N0cmluZyhj b25zdCBjaGFyICpzcWwpCiAJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgTlVMTCwKIAkJ CQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsKIAotCQkJCUV4ZWN1dG9yU3RhcnQocWRlc2Ms IDApOworCQkJCS8qIE9LIHRvIGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlOyBwbGFuIGNhbid0IGJl Y29tZSBpbnZhbGlkLiAqLworCQkJCSh2b2lkKSBFeGVjdXRvclN0YXJ0KHFkZXNjLCAwKTsKIAkJ CQlFeGVjdXRvclJ1bihxZGVzYywgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIDAsIHRydWUpOwogCQkJ CUV4ZWN1dG9yRmluaXNoKHFkZXNjKTsKIAkJCQlFeGVjdXRvckVuZChxZGVzYyk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9tYXR2aWV3LmMKaW5kZXggYWMyZTc0ZmEzZi4uNzEyNDk5NGE0MyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21h dHZpZXcuYwpAQCAtNDEyLDggKzQxMiwxMiBAQCByZWZyZXNoX21hdHZpZXdfZGF0YWZpbGwoRGVz dFJlY2VpdmVyICpkZXN0LCBRdWVyeSAqcXVlcnksCiAJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90 KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CiAKLQkv KiBjYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uICov Ci0JRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIDApOworCS8qCisJICogY2FsbCBFeGVjdXRvclN0 YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbgorCSAqCisJICogT0sgdG8gaWdu b3JlIHRoZSByZXR1cm4gdmFsdWU7IHBsYW4gY2FuJ3QgYmVjb21lIGludmFsaWQuCisJICovCisJ KHZvaWQpIEV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCAwKTsKIAogCS8qIHJ1biB0aGUgcGxhbiAq LwogCUV4ZWN1dG9yUnVuKHF1ZXJ5RGVzYywgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIDAsIHRydWUp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jCmluZGV4IDczZWQ3YWEyZjAuLjUxMjBmOTM0MTQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMKQEAgLTE0Miw5ICsxNDIsMTAgQEAgUGVyZm9y bUN1cnNvck9wZW4oUGFyc2VTdGF0ZSAqcHN0YXRlLCBEZWNsYXJlQ3Vyc29yU3RtdCAqY3N0bXQs IFBhcmFtTGlzdEluZm8gcGEKIAogCS8qCiAJICogU3RhcnQgZXhlY3V0aW9uLCBpbnNlcnRpbmcg cGFyYW1ldGVycyBpZiBhbnkuCisJICoKKwkgKiBPSyB0byBpZ25vcmUgdGhlIHJldHVybiB2YWx1 ZTsgcGxhbiBjYW4ndCBiZWNvbWUgaW52YWxpZCBoZXJlLgogCSAqLwotCVBvcnRhbFN0YXJ0KHBv cnRhbCwgcGFyYW1zLCAwLCBHZXRBY3RpdmVTbmFwc2hvdCgpKTsKLQorCSh2b2lkKSBQb3J0YWxT dGFydChwb3J0YWwsIHBhcmFtcywgMCwgR2V0QWN0aXZlU25hcHNob3QoKSk7CiAJQXNzZXJ0KHBv cnRhbC0+c3RyYXRlZ3kgPT0gUE9SVEFMX09ORV9TRUxFQ1QpOwogCiAJLyoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3By ZXBhcmUuYwppbmRleCAxOGY3MDMxOWZjLi5iY2RmNTZmZTMyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFy ZS5jCkBAIC0xODMsNiArMTgzLDcgQEAgRXhlY3V0ZVF1ZXJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwK IAkJcGFyYW1MSSA9IEV2YWx1YXRlUGFyYW1zKHBzdGF0ZSwgZW50cnksIHN0bXQtPnBhcmFtcywg ZXN0YXRlKTsKIAl9CiAKK3JlcGxhbjoKIAkvKiBDcmVhdGUgYSBuZXcgcG9ydGFsIHRvIHJ1biB0 aGUgcXVlcnkgaW4gKi8KIAlwb3J0YWwgPSBDcmVhdGVOZXdQb3J0YWwoKTsKIAkvKiBEb24ndCBk aXNwbGF5IHRoZSBwb3J0YWwgaW4gcGdfY3Vyc29ycywgaXQgaXMgZm9yIGludGVybmFsIHVzZSBv bmx5ICovCkBAIC0yNTEsOSArMjUyLDE1IEBAIEV4ZWN1dGVRdWVyeShQYXJzZVN0YXRlICpwc3Rh dGUsCiAJfQogCiAJLyoKLQkgKiBSdW4gdGhlIHBvcnRhbCBhcyBhcHByb3ByaWF0ZS4KKwkgKiBS dW4gdGhlIHBvcnRhbCBhcyBhcHByb3ByaWF0ZS4gSWYgdGhlIHBvcnRhbCBoYXMgYSBjYWNoZWQg cGxhbiBhbmQgCisJICogaXQncyBmb3VuZCB0byBiZSBpbnZhbGlkYXRlZCBkdXJpbmcgdGhlIGlu aXRpYWxpemF0aW9uIG9mIGl0cyBwbGFuCisJICogdHJlZXMsIHRoZSBwbGFuIG11c3QgYmUgcmVn ZW5lcmF0ZWQuCiAJICovCi0JUG9ydGFsU3RhcnQocG9ydGFsLCBwYXJhbUxJLCBlZmxhZ3MsIEdl dEFjdGl2ZVNuYXBzaG90KCkpOworCWlmICghUG9ydGFsU3RhcnQocG9ydGFsLCBwYXJhbUxJLCBl ZmxhZ3MsIEdldEFjdGl2ZVNuYXBzaG90KCkpKQorCXsKKwkJUG9ydGFsRHJvcChwb3J0YWwsIGZh bHNlKTsKKwkJZ290byByZXBsYW47CisJfQogCiAJKHZvaWQpIFBvcnRhbFJ1bihwb3J0YWwsIGNv dW50LCBmYWxzZSwgdHJ1ZSwgZGVzdCwgZGVzdCwgcWMpOwogCkBAIC01NzQsNyArNTgxLDcgQEAg RXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmlu dG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiB7CiAJUHJlcGFyZWRTdGF0ZW1lbnQgKmVudHJ5OwogCWNv bnN0IGNoYXIgKnF1ZXJ5X3N0cmluZzsKLQlDYWNoZWRQbGFuICpjcGxhbjsKKwlDYWNoZWRQbGFu ICpjcGxhbiA9IE5VTEw7CiAJTGlzdAkgICAqcGxhbl9saXN0OwogCUxpc3RDZWxsICAgKnA7CiAJ UGFyYW1MaXN0SW5mbyBwYXJhbUxJID0gTlVMTDsKQEAgLTYxOCw2ICs2MjUsNyBAQCBFeHBsYWlu RXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhw bGFpblN0YXRlICplcywKIAl9CiAKIAkvKiBSZXBsYW4gaWYgbmVlZGVkLCBhbmQgYWNxdWlyZSBh IHRyYW5zaWVudCByZWZjb3VudCAqLworcmVwbGFuOgogCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihl bnRyeS0+cGxhbnNvdXJjZSwgcGFyYW1MSSwKIAkJCQkJCSAgQ3VycmVudFJlc291cmNlT3duZXIs IHF1ZXJ5RW52KTsKIApAQCAtNjM5LDggKzY0NywyMSBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4 ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywK IAkJUGxhbm5lZFN0bXQgKnBzdG10ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIHApOwogCiAJ CWlmIChwc3RtdC0+Y29tbWFuZFR5cGUgIT0gQ01EX1VUSUxJVFkpCi0JCQlFeHBsYWluT25lUGxh bihwc3RtdCwgaW50bywgZXMsIHF1ZXJ5X3N0cmluZywgcGFyYW1MSSwgcXVlcnlFbnYsCi0JCQkJ CQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNhZ2UgOiBOVUxMKSk7CisJ CXsKKwkJCVF1ZXJ5RGVzYyAqcXVlcnlEZXNjOworCisJCQlxdWVyeURlc2MgPSBFeHBsYWluUXVl cnlEZXNjKHBzdG10LCBxdWVyeVN0cmluZywKKwkJCQkJCQkJCQkgaW50bywgZXMsIHBhcmFtTEks IHF1ZXJ5RW52KTsKKwkJCWlmIChxdWVyeURlc2MgPT0gTlVMTCkKKwkJCXsKKwkJCQlFeHBsYWlu UmVzZXRPdXRwdXQoZXMpOworCQkJCVJlbGVhc2VDYWNoZWRQbGFuKGNwbGFuLCBDdXJyZW50UmVz b3VyY2VPd25lcik7CisJCQkJZ290byByZXBsYW47CisJCQl9CisJCQlFeHBsYWluT25lUGxhbihx dWVyeURlc2MsIGludG8sIGVzLCBxdWVyeV9zdHJpbmcsIHBhcmFtTEksCisJCQkJCQkgICBxdWVy eUVudiwgJnBsYW5kdXJhdGlvbiwKKwkJCQkJCSAgIChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6 IE5VTEwpKTsKKwkJfQogCQllbHNlCiAJCQlFeHBsYWluT25lVXRpbGl0eShwc3RtdC0+dXRpbGl0 eVN0bXQsIGludG8sIGVzLCBxdWVyeV9zdHJpbmcsCiAJCQkJCQkJICBwYXJhbUxJLCBxdWVyeUVu dik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKaW5kZXggNTIxNzc3NTlhYi4uZGQxMzk0MzJiOSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RyaWdnZXIuYwpAQCAtNTAwOSw2ICs1MDA5LDE5IEBAIEFmdGVyVHJpZ2dlckJl Z2luUXVlcnkodm9pZCkKIAlhZnRlclRyaWdnZXJzLnF1ZXJ5X2RlcHRoKys7CiB9CiAKKy8qIC0t LS0tLS0tLS0KKyAqIEFmdGVyVHJpZ2dlckNhbmNlbFF1ZXJ5KCkKKyAqCisgKglDYWxsZWQgZnJv bSBFeGVjdXRvckVuZCgpIGlmIHRoZSBxdWVyeSBleGVjdXRpb24gd2FzIGNhbmNlbGVkLgorICog LS0tLS0tLS0tLQorICovCit2b2lkCitBZnRlclRyaWdnZXJDYW5jZWxRdWVyeSh2b2lkKQorewor CS8qIFNldCB0byBhIHZhbHVlIGRlbm90aW5nIHRoYXQgbm8gcXVlcnkgaXMgYWN0aXZlLiAqLwor CWFmdGVyVHJpZ2dlcnMucXVlcnlfZGVwdGggPSAtMTsKK30KKwogCiAvKiAtLS0tLS0tLS0tCiAg KiBBZnRlclRyaWdnZXJFbmRRdWVyeSgpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCA2NmYx YjczOThkLi4zODNlYmVlMDA4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj TWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTc5LDcgKzc5 LDcgQEAgRXhlY3V0b3JFbmRfaG9va190eXBlIEV4ZWN1dG9yRW5kX2hvb2sgPSBOVUxMOwogRXhl Y3V0b3JDaGVja1Blcm1zX2hvb2tfdHlwZSBFeGVjdXRvckNoZWNrUGVybXNfaG9vayA9IE5VTEw7 CiAKIC8qIGRlY2xzIGZvciBsb2NhbCByb3V0aW5lcyBvbmx5IHVzZWQgd2l0aGluIHRoaXMgbW9k dWxlICovCi1zdGF0aWMgdm9pZCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVm bGFncyk7CitzdGF0aWMgYm9vbCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVm bGFncyk7CiBzdGF0aWMgdm9pZCBDaGVja1ZhbGlkUm93TWFya1JlbChSZWxhdGlvbiByZWwsIFJv d01hcmtUeXBlIG1hcmtUeXBlKTsKIHN0YXRpYyB2b2lkIEV4ZWNQb3N0cHJvY2Vzc1BsYW4oRVN0 YXRlICplc3RhdGUpOwogc3RhdGljIHZvaWQgRXhlY0VuZFBsYW4oUGxhblN0YXRlICpwbGFuc3Rh dGUsIEVTdGF0ZSAqZXN0YXRlKTsKQEAgLTExOSw2ICsxMTksMTMgQEAgc3RhdGljIHZvaWQgRXZh bFBsYW5RdWFsU3RhcnQoRVBRU3RhdGUgKmVwcXN0YXRlLCBQbGFuICpwbGFuVHJlZSk7CiAgKgog ICogZWZsYWdzIGNvbnRhaW5zIGZsYWcgYml0cyBhcyBkZXNjcmliZWQgaW4gZXhlY3V0b3IuaC4K ICAqCisgKiBQbGFuIGluaXRpYWxpemF0aW9uIG1heSBmYWlsIGlmIHRoZSBpbnB1dCBwbGFuIHRy ZWUgaXMgZm91bmQgdG8gaGF2ZSBiZWVuCisgKiBpbnZhbGlkYXRlZCwgd2hpY2ggY2FuIGhhcHBl biBpZiBpdCBjb21lcyBmcm9tIGEgQ2FjaGVkUGxhbi4KKyAqCisgKiBSZXR1cm5zIHRydWUgaWYg cGxhbiB3YXMgc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemVkIGFuZCBmYWxzZSBvdGhlcndpc2UuICBJ ZgorICogdGhlIGxhdHRlciwgdGhlIGNhbGxlciBtdXN0IGNhbGwgRXhlY3V0b3JFbmQoKSBvbiAn cXVlcnlEZXNjJyB0byBjbGVhbiB1cAorICogYWZ0ZXIgZmFpbGVkIHBsYW4gaW5pdGlhbGl6YXRp b24uCisgKgogICogTkI6IHRoZSBDdXJyZW50TWVtb3J5Q29udGV4dCB3aGVuIHRoaXMgaXMgY2Fs bGVkIHdpbGwgYmVjb21lIHRoZSBwYXJlbnQKICAqIG9mIHRoZSBwZXItcXVlcnkgY29udGV4dCB1 c2VkIGZvciB0aGlzIEV4ZWN1dG9yIGludm9jYXRpb24uCiAgKgpAQCAtMTI4LDcgKzEzNSw3IEBA IHN0YXRpYyB2b2lkIEV2YWxQbGFuUXVhbFN0YXJ0KEVQUVN0YXRlICplcHFzdGF0ZSwgUGxhbiAq cGxhblRyZWUpOwogICoKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwotdm9pZAorYm9vbAogRXhlY3V0b3JTdGFy dChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIHsKIAkvKgpAQCAtMTQwLDE0ICsx NDcsMTUgQEAgRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykK IAlwZ3N0YXRfcmVwb3J0X3F1ZXJ5X2lkKHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPnF1ZXJ5SWQs IGZhbHNlKTsKIAogCWlmIChFeGVjdXRvclN0YXJ0X2hvb2spCi0JCSgqRXhlY3V0b3JTdGFydF9o b29rKSAocXVlcnlEZXNjLCBlZmxhZ3MpOwotCWVsc2UKLQkJc3RhbmRhcmRfRXhlY3V0b3JTdGFy dChxdWVyeURlc2MsIGVmbGFncyk7CisJCXJldHVybiAoKkV4ZWN1dG9yU3RhcnRfaG9vaykgKHF1 ZXJ5RGVzYywgZWZsYWdzKTsKKworCXJldHVybiBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5 RGVzYywgZWZsYWdzKTsKIH0KIAotdm9pZAorYm9vbAogc3RhbmRhcmRfRXhlY3V0b3JTdGFydChR dWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIHsKKwlib29sCQlwbGFuX3ZhbGlkOwog CUVTdGF0ZQkgICAqZXN0YXRlOwogCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKIApAQCAtMjYz LDkgKzI3MSwxNCBAQCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNj LCBpbnQgZWZsYWdzKQogCS8qCiAJICogSW5pdGlhbGl6ZSB0aGUgcGxhbiBzdGF0ZSB0cmVlCiAJ ICovCi0JSW5pdFBsYW4ocXVlcnlEZXNjLCBlZmxhZ3MpOworCXBsYW5fdmFsaWQgPSBJbml0UGxh bihxdWVyeURlc2MsIGVmbGFncyk7CisKKwkvKiBNYXJrIGV4ZWN1dGlvbiBhcyBjYW5jZWxlZCBp ZiBwbGFuIHdvbid0IGJlIGV4ZWN1dGVkLiAqLworCWVzdGF0ZS0+ZXNfY2FuY2VsZWQgPSAhcGxh bl92YWxpZDsKIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKworCXJldHVy biBwbGFuX3ZhbGlkOwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zMjUsNiArMzM4LDcgQEAgc3RhbmRh cmRfRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJZXN0YXRlID0gcXVlcnlEZXNj LT5lc3RhdGU7CiAKIAlBc3NlcnQoZXN0YXRlICE9IE5VTEwpOworCUFzc2VydCghZXN0YXRlLT5l c19jYW5jZWxlZCk7CiAJQXNzZXJ0KCEoZXN0YXRlLT5lc190b3BfZWZsYWdzICYgRVhFQ19GTEFH X0VYUExBSU5fT05MWSkpOwogCiAJLyoKQEAgLTQyOSw3ICs0NDMsNyBAQCBzdGFuZGFyZF9FeGVj dXRvckZpbmlzaChRdWVyeURlc2MgKnF1ZXJ5RGVzYykKIAlBc3NlcnQoIShlc3RhdGUtPmVzX3Rv cF9lZmxhZ3MgJiBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZKSk7CiAKIAkvKiBUaGlzIHNob3VsZCBi ZSBydW4gb25jZSBhbmQgb25seSBvbmNlIHBlciBFeGVjdXRvciBpbnN0YW5jZSAqLwotCUFzc2Vy dCghZXN0YXRlLT5lc19maW5pc2hlZCk7CisJQXNzZXJ0KCFlc3RhdGUtPmVzX2ZpbmlzaGVkICYm ICFlc3RhdGUtPmVzX2NhbmNlbGVkKTsKIAogCS8qIFN3aXRjaCBpbnRvIHBlci1xdWVyeSBtZW1v cnkgY29udGV4dCAqLwogCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZXN0YXRl LT5lc19xdWVyeV9jeHQpOwpAQCAtNDg4LDExICs1MDIsMTEgQEAgc3RhbmRhcmRfRXhlY3V0b3JF bmQoUXVlcnlEZXNjICpxdWVyeURlc2MpCiAJQXNzZXJ0KGVzdGF0ZSAhPSBOVUxMKTsKIAogCS8q Ci0JICogQ2hlY2sgdGhhdCBFeGVjdXRvckZpbmlzaCB3YXMgY2FsbGVkLCB1bmxlc3MgaW4gRVhQ TEFJTi1vbmx5IG1vZGUuIFRoaXMKLQkgKiBBc3NlcnQgaXMgbmVlZGVkIGJlY2F1c2UgRXhlY3V0 b3JGaW5pc2ggaXMgbmV3IGFzIG9mIDkuMSwgYW5kIGNhbGxlcnMKLQkgKiBtaWdodCBmb3JnZXQg dG8gY2FsbCBpdC4KKwkgKiBDaGVjayB0aGF0IEV4ZWN1dG9yRmluaXNoIHdhcyBjYWxsZWQsIHVu bGVzcyBpbiBFWFBMQUlOLW9ubHkgbW9kZSBvciBpZgorCSAqIGV4ZWN1dGlvbiB3YXMgY2FuY2Vs ZWQuIFRoaXMgQXNzZXJ0IGlzIG5lZWRlZCBiZWNhdXNlIEV4ZWN1dG9yRmluaXNoIGlzCisJICog bmV3IGFzIG9mIDkuMSwgYW5kIGNhbGxlcnMgbWlnaHQgZm9yZ2V0IHRvIGNhbGwgaXQuCiAJICov Ci0JQXNzZXJ0KGVzdGF0ZS0+ZXNfZmluaXNoZWQgfHwKKwlBc3NlcnQoZXN0YXRlLT5lc19maW5p c2hlZCB8fCBlc3RhdGUtPmVzX2NhbmNlbGVkIHx8CiAJCSAgIChlc3RhdGUtPmVzX3RvcF9lZmxh Z3MgJiBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZKSk7CiAKIAkvKgpAQCAtNTA2LDYgKzUyMCwxNCBA QCBzdGFuZGFyZF9FeGVjdXRvckVuZChRdWVyeURlc2MgKnF1ZXJ5RGVzYykKIAlVbnJlZ2lzdGVy U25hcHNob3QoZXN0YXRlLT5lc19zbmFwc2hvdCk7CiAJVW5yZWdpc3RlclNuYXBzaG90KGVzdGF0 ZS0+ZXNfY3Jvc3NjaGVja19zbmFwc2hvdCk7CiAKKwkvKgorCSAqIENhbmNlbCB0cmlnZ2VyIGV4 ZWN1dGlvbiB0b28gaWYgdGhlIHF1ZXJ5IGV4ZWN1dGlvbiB3YXMgY2FuY2VsZWQuCisJICovCisJ aWYgKGVzdGF0ZS0+ZXNfY2FuY2VsZWQgJiYKKwkJIShlc3RhdGUtPmVzX3RvcF9lZmxhZ3MgJgor CQkgIChFWEVDX0ZMQUdfU0tJUF9UUklHR0VSUyB8IEVYRUNfRkxBR19FWFBMQUlOX09OTFkpKSkK KwkJQWZ0ZXJUcmlnZ2VyQ2FuY2VsUXVlcnkoKTsKKwogCS8qCiAJICogTXVzdCBzd2l0Y2ggb3V0 IG9mIGNvbnRleHQgYmVmb3JlIGRlc3Ryb3lpbmcgaXQKIAkgKi8KQEAgLTgyOSw5ICs4NTEsMTIg QEAgRXhlY0NoZWNrWGFjdFJlYWRPbmx5KFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCkKICAqCiAg KgkJSW5pdGlhbGl6ZXMgdGhlIHF1ZXJ5IHBsYW46IG9wZW4gZmlsZXMsIGFsbG9jYXRlIHN0b3Jh Z2UKICAqCQlhbmQgc3RhcnQgdXAgdGhlIHJ1bGUgbWFuYWdlcgorICoKKyAqIFJldHVybnMgdHJ1 ZSBpZiB0aGUgcGxhbiB0cmVlIGlzIHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplZCBmb3IgZXhlY3V0 aW9uLAorICogZmFsc2Ugb3RoZXJ3aXNlLgogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCi1zdGF0aWMgdm9pZAor c3RhdGljIGJvb2wKIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQog ewogCUNtZFR5cGUJCW9wZXJhdGlvbiA9IHF1ZXJ5RGVzYy0+b3BlcmF0aW9uOwpAQCAtMTAxNCw5 ICsxMDM5LDE1IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQog CQl9CiAJfQogCisJcXVlcnlEZXNjLT50dXBEZXNjID0gdHVwVHlwZTsKKwlBc3NlcnQocGxhbnN0 YXRlICE9IE5VTEwpOworCXF1ZXJ5RGVzYy0+cGxhbnN0YXRlID0gcGxhbnN0YXRlOworCXJldHVy biB0cnVlOworCiBwbGFuX2luaXRfc3VzcGVuZGVkOgogCXF1ZXJ5RGVzYy0+dHVwRGVzYyA9IHR1 cFR5cGU7CiAJcXVlcnlEZXNjLT5wbGFuc3RhdGUgPSBwbGFuc3RhdGU7CisJcmV0dXJuIGZhbHNl OwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVs LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwppbmRleCBjYzJiOGNjYWI3 Li5mODRhM2ExN2Q1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxs ZWwuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwpAQCAtMTQzMCw3 ICsxNDMwLDggQEAgUGFyYWxsZWxRdWVyeU1haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAq dG9jKQogCiAJLyogU3RhcnQgdXAgdGhlIGV4ZWN1dG9yICovCiAJcXVlcnlEZXNjLT5wbGFubmVk c3RtdC0+aml0RmxhZ3MgPSBmcGVzLT5qaXRfZmxhZ3M7Ci0JRXhlY3V0b3JTdGFydChxdWVyeURl c2MsIGZwZXMtPmVmbGFncyk7CisJLyogT0sgdG8gaWdub3JlIHRoZSByZXR1cm4gdmFsdWU7IHBs YW4gY2FuJ3QgYmVjb21lIGludmFsaWQuICovCisJKHZvaWQpIEV4ZWN1dG9yU3RhcnQocXVlcnlE ZXNjLCBmcGVzLT5lZmxhZ3MpOwogCiAJLyogU3BlY2lhbCBleGVjdXRvciBpbml0aWFsaXphdGlv biBzdGVwcyBmb3IgcGFyYWxsZWwgd29ya2VycyAqLwogCXF1ZXJ5RGVzYy0+cGxhbnN0YXRlLT5z dGF0ZS0+ZXNfcXVlcnlfZHNhID0gYXJlYTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNVdGlscy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKaW5kZXgg YzNmNzI3OWIwNi4uZGE4YTE1MTFhYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1V0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKQEAgLTE1 MSw2ICsxNTEsNyBAQCBDcmVhdGVFeGVjdXRvclN0YXRlKHZvaWQpCiAJZXN0YXRlLT5lc190b3Bf ZWZsYWdzID0gMDsKIAllc3RhdGUtPmVzX2luc3RydW1lbnQgPSAwOwogCWVzdGF0ZS0+ZXNfZmlu aXNoZWQgPSBmYWxzZTsKKwllc3RhdGUtPmVzX2NhbmNlbGVkID0gZmFsc2U7CiAKIAllc3RhdGUt PmVzX2V4cHJjb250ZXh0cyA9IE5JTDsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZnVuY3Rpb25zLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwppbmRleCBm NTU0MjRlYjVhLi44Y2YwYjMxMzJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9m dW5jdGlvbnMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwpAQCAtODYy LDcgKzg2Miw5IEBAIHBvc3RxdWVsX3N0YXJ0KGV4ZWN1dGlvbl9zdGF0ZSAqZXMsIFNRTEZ1bmN0 aW9uQ2FjaGVQdHIgZmNhY2hlKQogCQkJZWZsYWdzID0gRVhFQ19GTEFHX1NLSVBfVFJJR0dFUlM7 CiAJCWVsc2UKIAkJCWVmbGFncyA9IDA7CQkJLyogZGVmYXVsdCBydW4tdG8tY29tcGxldGlvbiBm bGFncyAqLwotCQlFeGVjdXRvclN0YXJ0KGVzLT5xZCwgZWZsYWdzKTsKKworCQkvKiBPSyB0byBp Z25vcmUgdGhlIHJldHVybiB2YWx1ZTsgcGxhbiBjYW4ndCBiZWNvbWUgaW52YWxpZC4gKi8KKwkJ KHZvaWQpIEV4ZWN1dG9yU3RhcnQoZXMtPnFkLCBlZmxhZ3MpOwogCX0KIAogCWVzLT5zdGF0dXMg PSBGX0VYRUNfUlVOOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwppbmRleCAzMzk3NTY4N2IzLi42YTk2ZDdmYzIyIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9zcGkuYwpAQCAtNzEsNyArNzEsNyBAQCBzdGF0aWMgaW50CV9TUElfZXhlY3V0ZV9w bGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiBz dGF0aWMgUGFyYW1MaXN0SW5mbyBfU1BJX2NvbnZlcnRfcGFyYW1zKGludCBuYXJncywgT2lkICph cmd0eXBlcywKIAkJCQkJCQkJCQkgRGF0dW0gKlZhbHVlcywgY29uc3QgY2hhciAqTnVsbHMpOwog Ci1zdGF0aWMgaW50CV9TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBib29sIGZpcmVf dHJpZ2dlcnMsIHVpbnQ2NCB0Y291bnQpOworc3RhdGljIGludAlfU1BJX3BxdWVyeShRdWVyeURl c2MgKnF1ZXJ5RGVzYywgdWludDY0IHRjb3VudCk7CiAKIHN0YXRpYyB2b2lkIF9TUElfZXJyb3Jf Y2FsbGJhY2sodm9pZCAqYXJnKTsKIApAQCAtMTU4Miw2ICsxNTgyLDcgQEAgU1BJX2N1cnNvcl9v cGVuX2ludGVybmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwKIAlTbmFwc2hv dAlzbmFwc2hvdDsKIAlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CiAJUG9ydGFsCQlwb3J0YWw7 CisJYm9vbAkJcGxhbl92YWxpZDsKIAlTUElDYWxsYmFja0FyZyBzcGljYWxsYmFja2FyZzsKIAlF cnJvckNvbnRleHRDYWxsYmFjayBzcGllcnJjb250ZXh0OwogCkBAIC0xNjIzLDYgKzE2MjQsNyBA QCBTUElfY3Vyc29yX29wZW5faW50ZXJuYWwoY29uc3QgY2hhciAqbmFtZSwgU1BJUGxhblB0ciBw bGFuLAogCV9TUElfY3VycmVudC0+cHJvY2Vzc2VkID0gMDsKIAlfU1BJX2N1cnJlbnQtPnR1cHRh YmxlID0gTlVMTDsKIAorcmVwbGFuOgogCS8qIENyZWF0ZSB0aGUgcG9ydGFsICovCiAJaWYgKG5h bWUgPT0gTlVMTCB8fCBuYW1lWzBdID09ICdcMCcpCiAJewpAQCAtMTc2NiwxNSArMTc2OCwyMyBA QCBTUElfY3Vyc29yX29wZW5faW50ZXJuYWwoY29uc3QgY2hhciAqbmFtZSwgU1BJUGxhblB0ciBw bGFuLAogCX0KIAogCS8qCi0JICogU3RhcnQgcG9ydGFsIGV4ZWN1dGlvbi4KKwkgKiBTdGFydCBw b3J0YWwgZXhlY3V0aW9uLiAgSWYgdGhlIHBvcnRhbCBjb250YWlucyBhIGNhY2hlZCBwbGFuLCBp dCBtdXN0CisJICogYmUgcmVjcmVhdGVkIGlmIHRoZSBjYWNoZWQgcGxhbiB3YXMgZm91bmQgdG8g aGF2ZSBiZWVuIGludmFsaWRhdGVkIHdoZW4KKwkgKiBpbml0aWFsaXppbmcgb25lIG9mIHRoZSBw bGFuIHRyZWVzIGNvbnRhaW5lZCBpbiBpdC4KIAkgKi8KLQlQb3J0YWxTdGFydChwb3J0YWwsIHBh cmFtTEksIDAsIHNuYXBzaG90KTsKKwlwbGFuX3ZhbGlkID0gUG9ydGFsU3RhcnQocG9ydGFsLCBw YXJhbUxJLCAwLCBzbmFwc2hvdCk7CiAKIAlBc3NlcnQocG9ydGFsLT5zdHJhdGVneSAhPSBQT1JU QUxfTVVMVElfUVVFUlkpOwogCiAJLyogUG9wIHRoZSBlcnJvciBjb250ZXh0IHN0YWNrICovCiAJ ZXJyb3JfY29udGV4dF9zdGFjayA9IHNwaWVycmNvbnRleHQucHJldmlvdXM7CiAKKwlpZiAoIXBs YW5fdmFsaWQpCisJeworCQlQb3J0YWxEcm9wKHBvcnRhbCwgZmFsc2UpOworCQlnb3RvIHJlcGxh bjsKKwl9CisKIAkvKiBQb3AgdGhlIFNQSSBzdGFjayAqLwogCV9TUElfZW5kX2NhbGwodHJ1ZSk7 CiAKQEAgLTI1NTIsNiArMjU2Miw3IEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxh biwgY29uc3QgU1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCSAqIFJlcGxhbiBpZiBuZWVk ZWQsIGFuZCBpbmNyZW1lbnQgcGxhbiByZWZjb3VudC4gIElmIGl0J3MgYSBzYXZlZAogCQkgKiBw bGFuLCB0aGUgcmVmY291bnQgbXVzdCBiZSBiYWNrZWQgYnkgdGhlIHBsYW5fb3duZXIuCiAJCSAq LworcmVwbGFuOgogCQljcGxhbiA9IEdldENhY2hlZFBsYW4ocGxhbnNvdXJjZSwgb3B0aW9ucy0+ cGFyYW1zLAogCQkJCQkJCSAgcGxhbl9vd25lciwgX1NQSV9jdXJyZW50LT5xdWVyeUVudik7CiAK QEAgLTI2NjEsNiArMjY3Miw3IEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwg Y29uc3QgU1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCQl7CiAJCQkJUXVlcnlEZXNjICAq cWRlc2M7CiAJCQkJU25hcHNob3QJc25hcDsKKwkJCQlpbnQJCQllZmxhZ3M7CiAKIAkJCQlpZiAo QWN0aXZlU25hcHNob3RTZXQoKSkKIAkJCQkJc25hcCA9IEdldEFjdGl2ZVNuYXBzaG90KCk7CkBA IC0yNjc0LDggKzI2ODYsMjMgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBj b25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJCQkJCQkJCQlvcHRpb25zLT5wYXJh bXMsCiAJCQkJCQkJCQkJX1NQSV9jdXJyZW50LT5xdWVyeUVudiwKIAkJCQkJCQkJCQkwKTsKLQkJ CQlyZXMgPSBfU1BJX3BxdWVyeShxZGVzYywgZmlyZV90cmlnZ2VycywKLQkJCQkJCQkJICBjYW5T ZXRUYWcgPyBvcHRpb25zLT50Y291bnQgOiAwKTsKKworCQkJCS8qIFNlbGVjdCBleGVjdXRpb24g b3B0aW9ucyAqLworCQkJCWlmIChmaXJlX3RyaWdnZXJzKQorCQkJCQllZmxhZ3MgPSAwOwkJCQkv KiBkZWZhdWx0IHJ1bi10by1jb21wbGV0aW9uIGZsYWdzICovCisJCQkJZWxzZQorCQkJCQllZmxh Z3MgPSBFWEVDX0ZMQUdfU0tJUF9UUklHR0VSUzsKKworCQkJCWlmICghRXhlY3V0b3JTdGFydChx ZGVzYywgZWZsYWdzKSkKKwkJCQl7CisJCQkJCUV4ZWN1dG9yRW5kKHFkZXNjKTsKKwkJCQkJRnJl ZVF1ZXJ5RGVzYyhxZGVzYyk7CisJCQkJCUFzc2VydChjcGxhbik7CisJCQkJCVJlbGVhc2VDYWNo ZWRQbGFuKGNwbGFuLCBwbGFuX293bmVyKTsKKwkJCQkJZ290byByZXBsYW47CisJCQkJfQorCisJ CQkJcmVzID0gX1NQSV9wcXVlcnkocWRlc2MsIGNhblNldFRhZyA/IG9wdGlvbnMtPnRjb3VudCA6 IDApOwogCQkJCUZyZWVRdWVyeURlc2MocWRlc2MpOwogCQkJfQogCQkJZWxzZQpAQCAtMjg1MCwx MCArMjg3Nyw5IEBAIF9TUElfY29udmVydF9wYXJhbXMoaW50IG5hcmdzLCBPaWQgKmFyZ3R5cGVz LAogfQogCiBzdGF0aWMgaW50Ci1fU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9v bCBmaXJlX3RyaWdnZXJzLCB1aW50NjQgdGNvdW50KQorX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpx dWVyeURlc2MsIHVpbnQ2NCB0Y291bnQpCiB7CiAJaW50CQkJb3BlcmF0aW9uID0gcXVlcnlEZXNj LT5vcGVyYXRpb247Ci0JaW50CQkJZWZsYWdzOwogCWludAkJCXJlczsKIAogCXN3aXRjaCAob3Bl cmF0aW9uKQpAQCAtMjg5NywxNCArMjkyMyw2IEBAIF9TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVl cnlEZXNjLCBib29sIGZpcmVfdHJpZ2dlcnMsIHVpbnQ2NCB0Y291bnQpCiAJCVJlc2V0VXNhZ2Uo KTsKICNlbmRpZgogCi0JLyogU2VsZWN0IGV4ZWN1dGlvbiBvcHRpb25zICovCi0JaWYgKGZpcmVf dHJpZ2dlcnMpCi0JCWVmbGFncyA9IDA7CQkJCS8qIGRlZmF1bHQgcnVuLXRvLWNvbXBsZXRpb24g ZmxhZ3MgKi8KLQllbHNlCi0JCWVmbGFncyA9IEVYRUNfRkxBR19TS0lQX1RSSUdHRVJTOwotCi0J RXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7Ci0KIAlFeGVjdXRvclJ1bihxdWVyeURl c2MsIEZvcndhcmRTY2FuRGlyZWN0aW9uLCB0Y291bnQsIHRydWUpOwogCiAJX1NQSV9jdXJyZW50 LT5wcm9jZXNzZWQgPSBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jl cy5jCmluZGV4IGU0NzU2ZjhiZTIuLjIwNDAwMmNmZjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTEy MzIsNyArMTIzMiwxMiBAQCBleGVjX3NpbXBsZV9xdWVyeShjb25zdCBjaGFyICpxdWVyeV9zdHJp bmcpCiAJCS8qCiAJCSAqIFN0YXJ0IHRoZSBwb3J0YWwuICBObyBwYXJhbWV0ZXJzIGhlcmUuCiAJ CSAqLwotCQlQb3J0YWxTdGFydChwb3J0YWwsIE5VTEwsIDAsIEludmFsaWRTbmFwc2hvdCk7CisJ CXsKKwkJCWJvb2wJcGxhbl92YWxpZCBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFk7CisKKwkJCXBs YW5fdmFsaWQgPSBQb3J0YWxTdGFydChwb3J0YWwsIE5VTEwsIDAsIEludmFsaWRTbmFwc2hvdCk7 CisJCQlBc3NlcnQocGxhbl92YWxpZCk7CisJCX0KIAogCQkvKgogCQkgKiBTZWxlY3QgdGhlIGFw cHJvcHJpYXRlIG91dHB1dCBmb3JtYXQ6IHRleHQgdW5sZXNzIHdlIGFyZSBkb2luZyBhCkBAIC0x NzM3LDYgKzE3NDIsNyBAQCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZvIGlucHV0X21lc3Nh Z2UpCiAJCQkJCQkiY29tbWFuZHMgaWdub3JlZCB1bnRpbCBlbmQgb2YgdHJhbnNhY3Rpb24gYmxv Y2siKSwKIAkJCQkgZXJyZGV0YWlsX2Fib3J0KCkpKTsKIAorcmVwbGFuOgogCS8qCiAJICogQ3Jl YXRlIHRoZSBwb3J0YWwuICBBbGxvdyBzaWxlbnQgcmVwbGFjZW1lbnQgb2YgYW4gZXhpc3Rpbmcg cG9ydGFsIG9ubHkKIAkgKiBpZiB0aGUgdW5uYW1lZCBwb3J0YWwgaXMgc3BlY2lmaWVkLgpAQCAt MjAyOCw5ICsyMDM0LDE1IEBAIGV4ZWNfYmluZF9tZXNzYWdlKFN0cmluZ0luZm8gaW5wdXRfbWVz c2FnZSkKIAkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAogCS8qCi0JICogQW5kIHdlJ3JlIHJlYWR5 IHRvIHN0YXJ0IHBvcnRhbCBleGVjdXRpb24uCisJICogU3RhcnQgcG9ydGFsIGV4ZWN1dGlvbi4g IElmIHRoZSBwb3J0YWwgY29udGFpbnMgYSBjYWNoZWQgcGxhbiwgaXQgbXVzdAorCSAqIGJlIHJl Y3JlYXRlZCBpZiB0aGUgY2FjaGVkIHBsYW4gd2FzIGZvdW5kIHRvIGhhdmUgYmVlbiBpbnZhbGlk YXRlZCB3aGVuCisJICogaW5pdGlhbGl6aW5nIG9uZSBvZiB0aGUgcGxhbiB0cmVlcyBjb250YWlu ZWQgaW4gaXQuCiAJICovCi0JUG9ydGFsU3RhcnQocG9ydGFsLCBwYXJhbXMsIDAsIEludmFsaWRT bmFwc2hvdCk7CisJaWYgKCFQb3J0YWxTdGFydChwb3J0YWwsIHBhcmFtcywgMCwgSW52YWxpZFNu YXBzaG90KSkKKwl7CisJCVBvcnRhbERyb3AocG9ydGFsLCBmYWxzZSk7CisJCWdvdG8gcmVwbGFu OworCX0KIAogCS8qCiAJICogQXBwbHkgdGhlIHJlc3VsdCBmb3JtYXQgcmVxdWVzdHMgdG8gdGhl IHBvcnRhbC4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgYi9zcmMvYmFj a2VuZC90Y29wL3BxdWVyeS5jCmluZGV4IDU1NjVmMjAwYzMuLjlhOTZiNzdmMWUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wcXVl cnkuYwpAQCAtMTksNiArMTksNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNs dWRlICJjb21tYW5kcy9wcmVwYXJlLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY2Rlc2MuaCIK ICNpbmNsdWRlICJleGVjdXRvci90c3RvcmVSZWNlaXZlci5oIgogI2luY2x1ZGUgIm1pc2NhZG1p bi5oIgogI2luY2x1ZGUgInBnX3RyYWNlLmgiCkBAIC0zNSwxMiArMzYsNiBAQAogUG9ydGFsCQlB Y3RpdmVQb3J0YWwgPSBOVUxMOwogCiAKLXN0YXRpYyB2b2lkIFByb2Nlc3NRdWVyeShQbGFubmVk U3RtdCAqcGxhbiwKLQkJCQkJCSBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAotCQkJCQkJIFBhcmFt TGlzdEluZm8gcGFyYW1zLAotCQkJCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAotCQkJ CQkJIERlc3RSZWNlaXZlciAqZGVzdCwKLQkJCQkJCSBRdWVyeUNvbXBsZXRpb24gKnFjKTsKIHN0 YXRpYyB2b2lkIEZpbGxQb3J0YWxTdG9yZShQb3J0YWwgcG9ydGFsLCBib29sIGlzVG9wTGV2ZWwp Owogc3RhdGljIHVpbnQ2NCBSdW5Gcm9tU3RvcmUoUG9ydGFsIHBvcnRhbCwgU2NhbkRpcmVjdGlv biBkaXJlY3Rpb24sIHVpbnQ2NCBjb3VudCwKIAkJCQkJCSAgIERlc3RSZWNlaXZlciAqZGVzdCk7 CkBAIC0xMTYsODYgKzExMSw2IEBAIEZyZWVRdWVyeURlc2MoUXVlcnlEZXNjICpxZGVzYykKIH0K IAogCi0vKgotICogUHJvY2Vzc1F1ZXJ5Ci0gKgkJRXhlY3V0ZSBhIHNpbmdsZSBwbGFubmFibGUg cXVlcnkgd2l0aGluIGEgUE9SVEFMX01VTFRJX1FVRVJZLAotICoJCVBPUlRBTF9PTkVfUkVUVVJO SU5HLCBvciBQT1JUQUxfT05FX01PRF9XSVRIIHBvcnRhbAotICoKLSAqCXBsYW46IHRoZSBwbGFu IHRyZWUgZm9yIHRoZSBxdWVyeQotICoJc291cmNlVGV4dDogdGhlIHNvdXJjZSB0ZXh0IG9mIHRo ZSBxdWVyeQotICoJcGFyYW1zOiBhbnkgcGFyYW1ldGVycyBuZWVkZWQKLSAqCWRlc3Q6IHdoZXJl IHRvIHNlbmQgcmVzdWx0cwotICoJcWM6IHdoZXJlIHRvIHN0b3JlIHRoZSBjb21tYW5kIGNvbXBs ZXRpb24gc3RhdHVzIGRhdGEuCi0gKgotICogcWMgbWF5IGJlIE5VTEwgaWYgY2FsbGVyIGRvZXNu J3Qgd2FudCBhIHN0YXR1cyBzdHJpbmcuCi0gKgotICogTXVzdCBiZSBjYWxsZWQgaW4gYSBtZW1v cnkgY29udGV4dCB0aGF0IHdpbGwgYmUgcmVzZXQgb3IgZGVsZXRlZCBvbgotICogZXJyb3I7IG90 aGVyd2lzZSB0aGUgZXhlY3V0b3IncyBtZW1vcnkgdXNhZ2Ugd2lsbCBiZSBsZWFrZWQuCi0gKi8K LXN0YXRpYyB2b2lkCi1Qcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCi0JCQkgY29uc3Qg Y2hhciAqc291cmNlVGV4dCwKLQkJCSBQYXJhbUxpc3RJbmZvIHBhcmFtcywKLQkJCSBRdWVyeUVu dmlyb25tZW50ICpxdWVyeUVudiwKLQkJCSBEZXN0UmVjZWl2ZXIgKmRlc3QsCi0JCQkgUXVlcnlD b21wbGV0aW9uICpxYykKLXsKLQlRdWVyeURlc2MgICpxdWVyeURlc2M7Ci0KLQkvKgotCSAqIENy ZWF0ZSB0aGUgUXVlcnlEZXNjIG9iamVjdAotCSAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5 RGVzYyhwbGFuLCBzb3VyY2VUZXh0LAotCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZh bGlkU25hcHNob3QsCi0JCQkJCQkJCWRlc3QsIHBhcmFtcywgcXVlcnlFbnYsIDApOwotCi0JLyoK LQkgKiBDYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9u Ci0JICovCi0JRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIDApOwotCi0JLyoKLQkgKiBSdW4gdGhl IHBsYW4gdG8gY29tcGxldGlvbi4KLQkgKi8KLQlFeGVjdXRvclJ1bihxdWVyeURlc2MsIEZvcndh cmRTY2FuRGlyZWN0aW9uLCAwLCB0cnVlKTsKLQotCS8qCi0JICogQnVpbGQgY29tbWFuZCBjb21w bGV0aW9uIHN0YXR1cyBkYXRhLCBpZiBjYWxsZXIgd2FudHMgb25lLgotCSAqLwotCWlmIChxYykK LQl7Ci0JCXN3aXRjaCAocXVlcnlEZXNjLT5vcGVyYXRpb24pCi0JCXsKLQkJCWNhc2UgQ01EX1NF TEVDVDoKLQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19TRUxFQ1QsIHF1ZXJ5RGVz Yy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOwotCQkJCWJyZWFrOwotCQkJY2FzZSBDTURfSU5TRVJU OgotCQkJCVNldFF1ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFHX0lOU0VSVCwgcXVlcnlEZXNjLT5l c3RhdGUtPmVzX3Byb2Nlc3NlZCk7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlIENNRF9VUERBVEU6Ci0J CQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfVVBEQVRFLCBxdWVyeURlc2MtPmVzdGF0 ZS0+ZXNfcHJvY2Vzc2VkKTsKLQkJCQlicmVhazsKLQkJCWNhc2UgQ01EX0RFTEVURToKLQkJCQlT ZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19ERUxFVEUsIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5l c19wcm9jZXNzZWQpOwotCQkJCWJyZWFrOwotCQkJY2FzZSBDTURfTUVSR0U6Ci0JCQkJU2V0UXVl cnlDb21wbGV0aW9uKHFjLCBDTURUQUdfTUVSR0UsIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19wcm9j ZXNzZWQpOwotCQkJCWJyZWFrOwotCQkJZGVmYXVsdDoKLQkJCQlTZXRRdWVyeUNvbXBsZXRpb24o cWMsIENNRFRBR19VTktOT1dOLCBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKLQkJ CQlicmVhazsKLQkJfQotCX0KLQotCS8qCi0JICogTm93LCB3ZSBjbG9zZSBkb3duIGFsbCB0aGUg c2NhbnMgYW5kIGZyZWUgYWxsb2NhdGVkIHJlc291cmNlcy4KLQkgKi8KLQlFeGVjdXRvckZpbmlz aChxdWVyeURlc2MpOwotCUV4ZWN1dG9yRW5kKHF1ZXJ5RGVzYyk7Ci0KLQlGcmVlUXVlcnlEZXNj KHF1ZXJ5RGVzYyk7Ci19Ci0KIC8qCiAgKiBDaG9vc2VQb3J0YWxTdHJhdGVneQogICoJCVNlbGVj dCBwb3J0YWwgZXhlY3V0aW9uIHN0cmF0ZWd5IGdpdmVuIHRoZSBpbnRlbmRlZCBzdGF0ZW1lbnQg bGlzdC4KQEAgLTQyNiwxOSArMzQxLDIxIEBAIEZldGNoU3RhdGVtZW50VGFyZ2V0TGlzdChOb2Rl ICpzdG10KQogICogcHJlc2VudGx5IGlnbm9yZWQgZm9yIG5vbi1QT1JUQUxfT05FX1NFTEVDVCBw b3J0YWxzIChpdCdzIG9ubHkgaW50ZW5kZWQKICAqIHRvIGJlIHVzZWQgZm9yIGN1cnNvcnMpLgog ICoKLSAqIE9uIHJldHVybiwgcG9ydGFsIGlzIHJlYWR5IHRvIGFjY2VwdCBQb3J0YWxSdW4oKSBj YWxscywgYW5kIHRoZSByZXN1bHQKLSAqIHR1cGRlc2MgKGlmIGFueSkgaXMga25vd24uCisgKiBU cnVlIGlzIHJldHVybmVkIGlmIHBvcnRhbCBpcyByZWFkeSB0byBhY2NlcHQgUG9ydGFsUnVuKCkg Y2FsbHMsIGFuZCB0aGUKKyAqIHJlc3VsdCB0dXBkZXNjIChpZiBhbnkpIGlzIGtub3duLiAgRmFs c2UgaWYgdGhlIHBsYW4gdHJlZSBpcyBubyBsb25nZXIKKyAqIHZhbGlkLCBpbiB3aGljaCBjYXNl LCB0aGUgY2FsbGVyIG11c3QgcmV0cnkgYWZ0ZXIgZ2VuZXJhdGluZyBhIG5ldworICogQ2FjaGVk UGxhbi4KICAqLwotdm9pZAorYm9vbAogUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1M aXN0SW5mbyBwYXJhbXMsCiAJCQlpbnQgZWZsYWdzLCBTbmFwc2hvdCBzbmFwc2hvdCkKIHsKIAlQ b3J0YWwJCXNhdmVBY3RpdmVQb3J0YWw7CiAJUmVzb3VyY2VPd25lciBzYXZlUmVzb3VyY2VPd25l cjsKLQlNZW1vcnlDb250ZXh0IHNhdmVQb3J0YWxDb250ZXh0OwogCU1lbW9yeUNvbnRleHQgb2xk Q29udGV4dDsKIAlRdWVyeURlc2MgICpxdWVyeURlc2M7Ci0JaW50CQkJbXllZmxhZ3M7CisJaW50 CQkJbXllZmxhZ3MgPSAwOworCWJvb2wJCXBsYW5fdmFsaWQgPSB0cnVlOwogCiAJQXNzZXJ0KFBv cnRhbElzVmFsaWQocG9ydGFsKSk7CiAJQXNzZXJ0KHBvcnRhbC0+c3RhdHVzID09IFBPUlRBTF9E RUZJTkVEKTsKQEAgLTQ0OCwxNSArMzY1LDEzIEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWws IFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCSAqLwogCXNhdmVBY3RpdmVQb3J0YWwgPSBBY3RpdmVQ b3J0YWw7CiAJc2F2ZVJlc291cmNlT3duZXIgPSBDdXJyZW50UmVzb3VyY2VPd25lcjsKLQlzYXZl UG9ydGFsQ29udGV4dCA9IFBvcnRhbENvbnRleHQ7CiAJUEdfVFJZKCk7CiAJewogCQlBY3RpdmVQ b3J0YWwgPSBwb3J0YWw7CiAJCWlmIChwb3J0YWwtPnJlc293bmVyKQogCQkJQ3VycmVudFJlc291 cmNlT3duZXIgPSBwb3J0YWwtPnJlc293bmVyOwotCQlQb3J0YWxDb250ZXh0ID0gcG9ydGFsLT5w b3J0YWxDb250ZXh0OwogCi0JCW9sZENvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oUG9y dGFsQ29udGV4dCk7CisJCW9sZENvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocG9ydGFs LT5xdWVyeUNvbnRleHQpOwogCiAJCS8qIE11c3QgcmVtZW1iZXIgcG9ydGFsIHBhcmFtIGxpc3Qs IGlmIGFueSAqLwogCQlwb3J0YWwtPnBvcnRhbFBhcmFtcyA9IHBhcmFtczsKQEAgLTQ3Miw2ICsz ODcsOCBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywK IAkJc3dpdGNoIChwb3J0YWwtPnN0cmF0ZWd5KQogCQl7CiAJCQljYXNlIFBPUlRBTF9PTkVfU0VM RUNUOgorCQkJY2FzZSBQT1JUQUxfT05FX1JFVFVSTklORzoKKwkJCWNhc2UgUE9SVEFMX09ORV9N T0RfV0lUSDoKIAogCQkJCS8qIE11c3Qgc2V0IHNuYXBzaG90IGJlZm9yZSBzdGFydGluZyBleGVj dXRvci4gKi8KIAkJCQlpZiAoc25hcHNob3QpCkBAIC00ODksOCArNDA2LDggQEAgUG9ydGFsU3Rh cnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJICovCiAKIAkJCQkv KgotCQkJCSAqIENyZWF0ZSBRdWVyeURlc2MgaW4gcG9ydGFsJ3MgY29udGV4dDsgZm9yIHRoZSBt b21lbnQsIHNldAotCQkJCSAqIHRoZSBkZXN0aW5hdGlvbiB0byBEZXN0Tm9uZS4KKwkJCQkgKiBD cmVhdGUgUXVlcnlEZXNjIGluIHBvcnRhbC0+cXVlcnlDb250ZXh0OyBmb3IgdGhlIG1vbWVudCwK KwkJCQkgKiBzZXQgdGhlIGRlc3RpbmF0aW9uIHRvIERlc3ROb25lLgogCQkJCSAqLwogCQkJCXF1 ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhsaW5pdGlhbF9ub2RlKFBsYW5uZWRTdG10LCBwb3J0 YWwtPnN0bXRzKSwKIAkJCQkJCQkJCQkJcG9ydGFsLT5zb3VyY2VUZXh0LApAQCAtNTAxLDMwICs0 MTgsNTEgQEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMs CiAJCQkJCQkJCQkJCXBvcnRhbC0+cXVlcnlFbnYsCiAJCQkJCQkJCQkJCTApOwogCisJCQkJLyog UmVtZW1iZXIgZm9yIFBvcnRhbFJ1bk11bHRpKCkuICovCisJCQkJaWYgKHBvcnRhbC0+c3RyYXRl Z3kgPT0gUE9SVEFMX09ORV9SRVRVUk5JTkcgfHwKKwkJCQkJcG9ydGFsLT5zdHJhdGVneSA9PSBQ T1JUQUxfT05FX01PRF9XSVRIKQorCQkJCQlwb3J0YWwtPnFkZXNjcyA9IGxpc3RfbWFrZTEocXVl cnlEZXNjKTsKKwogCQkJCS8qCiAJCQkJICogSWYgaXQncyBhIHNjcm9sbGFibGUgY3Vyc29yLCBl eGVjdXRvciBuZWVkcyB0byBzdXBwb3J0CiAJCQkJICogUkVXSU5EIGFuZCBiYWNrd2FyZHMgc2Nh biwgYXMgd2VsbCBhcyB3aGF0ZXZlciB0aGUgY2FsbGVyCiAJCQkJICogbWlnaHQndmUgYXNrZWQg Zm9yLgogCQkJCSAqLwotCQkJCWlmIChwb3J0YWwtPmN1cnNvck9wdGlvbnMgJiBDVVJTT1JfT1BU X1NDUk9MTCkKKwkJCQlpZiAocG9ydGFsLT5zdHJhdGVneSA9PSBQT1JUQUxfT05FX1NFTEVDVCAm JgorCQkJCQkocG9ydGFsLT5jdXJzb3JPcHRpb25zICYgQ1VSU09SX09QVF9TQ1JPTEwpKQogCQkJ CQlteWVmbGFncyA9IGVmbGFncyB8IEVYRUNfRkxBR19SRVdJTkQgfCBFWEVDX0ZMQUdfQkFDS1dB UkQ7CiAJCQkJZWxzZQogCQkJCQlteWVmbGFncyA9IGVmbGFnczsKIAogCQkJCS8qCi0JCQkJICog Q2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbgorCQkJ CSAqIENhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24u ICBBCisJCQkJICogY2FjaGVkIHBsYW4gbWF5IGdldCBpbnZhbGlkYXRlZCBkdXJpbmcgcGxhbiBp bnRpYWxpemF0aW9uLgogCQkJCSAqLwotCQkJCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBteWVm bGFncyk7CisJCQkJaWYgKCFFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgbXllZmxhZ3MpKQorCQkJ CXsKKwkJCQkJRXhlY3V0b3JFbmQocXVlcnlEZXNjKTsKKwkJCQkJRnJlZVF1ZXJ5RGVzYyhxdWVy eURlc2MpOworCQkJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCQkJCQlwbGFuX3ZhbGlkID0gZmFs c2U7CisJCQkJCWdvdG8gcGxhbl9pbml0X2ZhaWxlZDsKKwkJCQl9CiAKIAkJCQkvKgotCQkJCSAq IFRoaXMgdGVsbHMgUG9ydGFsQ2xlYW51cCB0byBzaHV0IGRvd24gdGhlIGV4ZWN1dG9yCisJCQkJ ICogVGhpcyB0ZWxscyBQb3J0YWxDbGVhbnVwIHRvIHNodXQgZG93biB0aGUgZXhlY3V0b3IsIHRo b3VnaAorCQkJCSAqIG5vdCBuZWVkZWQgZm9yIHF1ZXJpZXMgaGFuZGxlZCBieSBQb3J0YWxSdW5N dWx0aSgpLgogCQkJCSAqLwotCQkJCXBvcnRhbC0+cXVlcnlEZXNjID0gcXVlcnlEZXNjOworCQkJ CWlmIChwb3J0YWwtPnN0cmF0ZWd5ID09IFBPUlRBTF9PTkVfU0VMRUNUKQorCQkJCQlwb3J0YWwt PnF1ZXJ5RGVzYyA9IHF1ZXJ5RGVzYzsKIAogCQkJCS8qCi0JCQkJICogUmVtZW1iZXIgdHVwbGUg ZGVzY3JpcHRvciAoY29tcHV0ZWQgYnkgRXhlY3V0b3JTdGFydCkKKwkJCQkgKiBSZW1lbWJlciB0 dXBsZSBkZXNjcmlwdG9yIChjb21wdXRlZCBieSBFeGVjdXRvclN0YXJ0KSwKKwkJCQkgKiB0aG91 Z2ggbWFrZSBpdCBpbmRlcGVuZGVudCBvZiBRdWVyeURlc2MgZm9yIHF1ZXJpZXMgaGFuZGxlZAor CQkJCSAqIGJ5IFBvcnRhbFJ1bk11bHRpKCkuCiAJCQkJICovCi0JCQkJcG9ydGFsLT50dXBEZXNj ID0gcXVlcnlEZXNjLT50dXBEZXNjOworCQkJCWlmIChwb3J0YWwtPnN0cmF0ZWd5ICE9IFBPUlRB TF9PTkVfU0VMRUNUKQorCQkJCQlwb3J0YWwtPnR1cERlc2MgPSBDcmVhdGVUdXBsZURlc2NDb3B5 KHF1ZXJ5RGVzYy0+dHVwRGVzYyk7CisJCQkJZWxzZQorCQkJCQlwb3J0YWwtPnR1cERlc2MgPSBx dWVyeURlc2MtPnR1cERlc2M7CiAKIAkJCQkvKgogCQkJCSAqIFJlc2V0IGN1cnNvciBwb3NpdGlv biBkYXRhIHRvICJzdGFydCBvZiBxdWVyeSIKQEAgLTUzNiwyOSArNDc0LDYgQEAgUG9ydGFsU3Rh cnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJUG9wQWN0aXZlU25h cHNob3QoKTsKIAkJCQlicmVhazsKIAotCQkJY2FzZSBQT1JUQUxfT05FX1JFVFVSTklORzoKLQkJ CWNhc2UgUE9SVEFMX09ORV9NT0RfV0lUSDoKLQotCQkJCS8qCi0JCQkJICogV2UgZG9uJ3Qgc3Rh cnQgdGhlIGV4ZWN1dG9yIHVudGlsIHdlIGFyZSB0b2xkIHRvIHJ1biB0aGUKLQkJCQkgKiBwb3J0 YWwuICBXZSBkbyBuZWVkIHRvIHNldCB1cCB0aGUgcmVzdWx0IHR1cGRlc2MuCi0JCQkJICovCi0J CQkJewotCQkJCQlQbGFubmVkU3RtdCAqcHN0bXQ7Ci0KLQkJCQkJcHN0bXQgPSBQb3J0YWxHZXRQ cmltYXJ5U3RtdChwb3J0YWwpOwotCQkJCQlwb3J0YWwtPnR1cERlc2MgPQotCQkJCQkJRXhlY0Ns ZWFuVHlwZUZyb21UTChwc3RtdC0+cGxhblRyZWUtPnRhcmdldGxpc3QpOwotCQkJCX0KLQotCQkJ CS8qCi0JCQkJICogUmVzZXQgY3Vyc29yIHBvc2l0aW9uIGRhdGEgdG8gInN0YXJ0IG9mIHF1ZXJ5 IgotCQkJCSAqLwotCQkJCXBvcnRhbC0+YXRTdGFydCA9IHRydWU7Ci0JCQkJcG9ydGFsLT5hdEVu ZCA9IGZhbHNlOwkvKiBhbGxvdyBmZXRjaGVzICovCi0JCQkJcG9ydGFsLT5wb3J0YWxQb3MgPSAw OwotCQkJCWJyZWFrOwotCiAJCQljYXNlIFBPUlRBTF9VVElMX1NFTEVDVDoKIAogCQkJCS8qCkBA IC01ODEsNyArNDk2LDgxIEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdElu Zm8gcGFyYW1zLAogCQkJCWJyZWFrOwogCiAJCQljYXNlIFBPUlRBTF9NVUxUSV9RVUVSWToKLQkJ CQkvKiBOZWVkIGRvIG5vdGhpbmcgbm93ICovCisJCQkJeworCQkJCQlMaXN0Q2VsbCAgICpsYzsK KwkJCQkJYm9vbAkJZmlyc3QgPSB0cnVlOworCisJCQkJCW15ZWZsYWdzID0gZWZsYWdzOworCQkJ CQlmb3JlYWNoKGxjLCBwb3J0YWwtPnN0bXRzKQorCQkJCQl7CisJCQkJCQlQbGFubmVkU3RtdCAq cGxhbiA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBsYyk7CisJCQkJCQlib29sCQlpc191dGls aXR5ID0gKHBsYW4tPnV0aWxpdHlTdG10ICE9IE5VTEwpOworCisJCQkJCQkvKgorCQkJCQkJICog UHVzaCB0aGUgc25hcHNob3QgdG8gYmUgdXNlZCBieSB0aGUgZXhlY3V0b3IuCisJCQkJCQkgKi8K KwkJCQkJCWlmICghaXNfdXRpbGl0eSkKKwkJCQkJCXsKKwkJCQkJCQkvKgorCQkJCQkJCSAqIE11 c3QgY29weSB0aGUgc25hcHNob3QgZm9yIGFsbCBzdGF0ZW1lbnRzCisJCQkJCQkJICogZXhjZXB0 IHRoZWMgZmlyc3QgYXMgd2UnbGwgbmVlZCB0byB1cGRhdGUgaXRzCisJCQkJCQkJICogY29tbWFu ZCBJRC4KKwkJCQkJCQkgKi8KKwkJCQkJCQlpZiAoIWZpcnN0KQorCQkJCQkJCQlQdXNoQ29waWVk U25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJCQkJCQllbHNlCisJCQkJCQkJ CVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQkJCQkJfQor CisJCQkJCQkvKgorCQkJCQkJICogRnJvbSB0aGUgMm5kIHN0YXRlbWVudCBvbndhcmRzLCB1cGRh dGUgdGhlIGNvbW1hbmQKKwkJCQkJCSAqIElEIGFuZCB0aGUgc25hcHNob3QgdG8gbWF0Y2guCisJ CQkJCQkgKi8KKwkJCQkJCWlmICghZmlyc3QpCisJCQkJCQl7CisJCQkJCQkJQ29tbWFuZENvdW50 ZXJJbmNyZW1lbnQoKTsKKwkJCQkJCQlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOwor CQkJCQkJfQorCisJCQkJCQlmaXJzdCA9IGZhbHNlOworCisJCQkJCQkvKgorCQkJCQkJICogQ3Jl YXRlIHRoZSBRdWVyeURlc2MuICBEZXN0UmVjZWl2ZXIgd2lsbCBiZSBzZXQgaW4KKwkJCQkJCSAq IFBvcnRhbFJ1bk11bHRpKCkgYmVmb3JlIGNhbGxpbmcgRXhlY3V0b3JSdW4oKS4KKwkJCQkJCSAq LworCQkJCQkJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sCisJCQkJCQkJCQkJCQkJ cG9ydGFsLT5zb3VyY2VUZXh0LAorCQkJCQkJCQkJCQkJCSFpc191dGlsaXR5ID8KKwkJCQkJCQkJ CQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpIDoKKwkJCQkJCQkJCQkJCQlJbnZhbGlkU25hcHNob3Qs CisJCQkJCQkJCQkJCQkJSW52YWxpZFNuYXBzaG90LAorCQkJCQkJCQkJCQkJCU5VTEwsCisJCQkJ CQkJCQkJCQkJcGFyYW1zLAorCQkJCQkJCQkJCQkJCXBvcnRhbC0+cXVlcnlFbnYsIDApOworCisJ CQkJCQkvKiBSZW1lbWJlciBmb3IgUG9ydGFsUnVuTXVsdGkoKSAqLworCQkJCQkJcG9ydGFsLT5x ZGVzY3MgPSBsYXBwZW5kKHBvcnRhbC0+cWRlc2NzLCBxdWVyeURlc2MpOworCisJCQkJCQlpZiAo aXNfdXRpbGl0eSkKKwkJCQkJCQljb250aW51ZTsKKworCQkJCQkJLyoKKwkJCQkJCSAqIENhbGwg RXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvcgorCQkJCQkJICogZXhlY3V0aW9u LiAgQSBjYWNoZWQgcGxhbiBtYXkgZ2V0IGludmFsaWRhdGVkCisJCQkJCQkgKiBkdXJpbmcgcGxh biBpbnRpYWxpemF0aW9uLgorCQkJCQkJICovCisJCQkJCQlpZiAoIUV4ZWN1dG9yU3RhcnQocXVl cnlEZXNjLCBteWVmbGFncykpCisJCQkJCQl7CisJCQkJCQkJUG9wQWN0aXZlU25hcHNob3QoKTsK KwkJCQkJCQlFeGVjdXRvckVuZChxdWVyeURlc2MpOworCQkJCQkJCUZyZWVRdWVyeURlc2MocXVl cnlEZXNjKTsKKwkJCQkJCQlwbGFuX3ZhbGlkID0gZmFsc2U7CisJCQkJCQkJZ290byBwbGFuX2lu aXRfZmFpbGVkOworCQkJCQkJfQorCQkJCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwkJCQkJfQor CQkJCX0KKwogCQkJCXBvcnRhbC0+dHVwRGVzYyA9IE5VTEw7CiAJCQkJYnJlYWs7CiAJCX0KQEAg LTU5NCwxOSArNTgzLDIwIEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdElu Zm8gcGFyYW1zLAogCQkvKiBSZXN0b3JlIGdsb2JhbCB2YXJzIGFuZCBwcm9wYWdhdGUgZXJyb3Ig Ki8KIAkJQWN0aXZlUG9ydGFsID0gc2F2ZUFjdGl2ZVBvcnRhbDsKIAkJQ3VycmVudFJlc291cmNl T3duZXIgPSBzYXZlUmVzb3VyY2VPd25lcjsKLQkJUG9ydGFsQ29udGV4dCA9IHNhdmVQb3J0YWxD b250ZXh0OwogCiAJCVBHX1JFX1RIUk9XKCk7CiAJfQogCVBHX0VORF9UUlkoKTsKIAorCXBvcnRh bC0+c3RhdHVzID0gUE9SVEFMX1JFQURZOworCitwbGFuX2luaXRfZmFpbGVkOgogCU1lbW9yeUNv bnRleHRTd2l0Y2hUbyhvbGRDb250ZXh0KTsKIAogCUFjdGl2ZVBvcnRhbCA9IHNhdmVBY3RpdmVQ b3J0YWw7CiAJQ3VycmVudFJlc291cmNlT3duZXIgPSBzYXZlUmVzb3VyY2VPd25lcjsKLQlQb3J0 YWxDb250ZXh0ID0gc2F2ZVBvcnRhbENvbnRleHQ7CiAKLQlwb3J0YWwtPnN0YXR1cyA9IFBPUlRB TF9SRUFEWTsKKwlyZXR1cm4gcGxhbl92YWxpZDsKIH0KIAogLyoKQEAgLTExOTMsNyArMTE4Myw3 IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJCQkgICBRdWVyeUNvbXBsZXRpb24g KnFjKQogewogCWJvb2wJCWFjdGl2ZV9zbmFwc2hvdF9zZXQgPSBmYWxzZTsKLQlMaXN0Q2VsbCAg ICpzdG10bGlzdF9pdGVtOworCUxpc3RDZWxsICAgKnFkZXNjX2l0ZW07CiAKIAkvKgogCSAqIElm IHRoZSBkZXN0aW5hdGlvbiBpcyBEZXN0UmVtb3RlRXhlY3V0ZSwgY2hhbmdlIHRvIERlc3ROb25l LiAgVGhlCkBAIC0xMjE0LDkgKzEyMDQsMTAgQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRh bCwKIAkgKiBMb29wIHRvIGhhbmRsZSB0aGUgaW5kaXZpZHVhbCBxdWVyaWVzIGdlbmVyYXRlZCBm cm9tIGEgc2luZ2xlIHBhcnNldHJlZQogCSAqIGJ5IGFuYWx5c2lzIGFuZCByZXdyaXRlLgogCSAq LwotCWZvcmVhY2goc3RtdGxpc3RfaXRlbSwgcG9ydGFsLT5zdG10cykKKwlmb3JlYWNoKHFkZXNj X2l0ZW0sIHBvcnRhbC0+cWRlc2NzKQogCXsKLQkJUGxhbm5lZFN0bXQgKnBzdG10ID0gbGZpcnN0 X25vZGUoUGxhbm5lZFN0bXQsIHN0bXRsaXN0X2l0ZW0pOworCQlRdWVyeURlc2MgKnFkZXNjID0g KFF1ZXJ5RGVzYyAqKSBsZmlyc3QocWRlc2NfaXRlbSk7CisJCVBsYW5uZWRTdG10ICpwc3RtdCA9 IHFkZXNjLT5wbGFubmVkc3RtdDsKIAogCQkvKgogCQkgKiBJZiB3ZSBnb3QgYSBjYW5jZWwgc2ln bmFsIGluIHByaW9yIGNvbW1hbmQsIHF1aXQKQEAgLTEyMzMsMzMgKzEyMjQsMjYgQEAgUG9ydGFs UnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwKIAkJCWlmIChsb2dfZXhlY3V0b3Jfc3RhdHMpCiAJCQkJ UmVzZXRVc2FnZSgpOwogCi0JCQkvKgotCQkJICogTXVzdCBhbHdheXMgaGF2ZSBhIHNuYXBzaG90 IGZvciBwbGFubmFibGUgcXVlcmllcy4gIEZpcnN0IHRpbWUKLQkJCSAqIHRocm91Z2gsIHRha2Ug YSBuZXcgc25hcHNob3Q7IGZvciBzdWJzZXF1ZW50IHF1ZXJpZXMgaW4gdGhlCi0JCQkgKiBzYW1l IHBvcnRhbCwganVzdCB1cGRhdGUgdGhlIHNuYXBzaG90J3MgY29weSBvZiB0aGUgY29tbWFuZAot CQkJICogY291bnRlci4KLQkJCSAqLworCQkJLyogUHVzaCB0aGUgc25hcHNob3QgZm9yIHBsYW5u YWJsZSBxdWVyaWVzLiAqLwogCQkJaWYgKCFhY3RpdmVfc25hcHNob3Rfc2V0KQogCQkJewotCQkJ CVNuYXBzaG90CXNuYXBzaG90ID0gR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpOworCQkJCVNuYXBz aG90CXNuYXBzaG90ID0gcWRlc2MtPnNuYXBzaG90OwogCi0JCQkJLyogSWYgdG9sZCB0bywgcmVn aXN0ZXIgdGhlIHNuYXBzaG90IGFuZCBzYXZlIGluIHBvcnRhbCAqLworCQkJCS8qCisJCQkJICog SWYgdG9sZCB0bywgcmVnaXN0ZXIgdGhlIHNuYXBzaG90IGFuZCBzYXZlIGluIHBvcnRhbAorCQkJ CSAqCisJCQkJICogTm90ZSB0aGF0IHRoZSBjb21tYW5kIElEIG9mIHFkZXNjLT5zbmFwc2hvdCBm b3IgMm5kIHF1ZXJ5CisJCQkJICogb253YXJkcyB3b3VsZCBoYXZlIGJlZW4gdXBkYXRlZCBpbiBQ b3J0YWxTdGFydCgpIHRvIGFjY291bnQKKwkJCQkgKiBmb3IgQ0NJKCkgZG9uZSBiZXR3ZWVuIHF1 ZXJpZXMsIGJ1dCBpdCdzIE9LIHRoYXQgaGVyZSB3ZQorCQkJCSAqIGRvbid0IGxpa2V3aXNlIHVw ZGF0ZSBob2xkU25hcHNob3QncyBjb21tYW5kIElELgorCQkJCSAqLwogCQkJCWlmIChzZXRIb2xk U25hcHNob3QpCiAJCQkJewogCQkJCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3Qoc25hcHNo b3QpOwogCQkJCQlwb3J0YWwtPmhvbGRTbmFwc2hvdCA9IHNuYXBzaG90OwogCQkJCX0KIAotCQkJ CS8qCi0JCQkJICogV2UgY2FuJ3QgaGF2ZSB0aGUgaG9sZFNuYXBzaG90IGFsc28gYmUgdGhlIGFj dGl2ZSBvbmUsCi0JCQkJICogYmVjYXVzZSBVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCB3 b3VsZCBjb21wbGFpbi4gIFNvCi0JCQkJICogZm9yY2UgYW4gZXh0cmEgc25hcHNob3QgY29weS4g IFBsYWluIFB1c2hBY3RpdmVTbmFwc2hvdAotCQkJCSAqIHdvdWxkIGhhdmUgY29waWVkIHRoZSB0 cmFuc2FjdGlvbiBzbmFwc2hvdCBhbnl3YXksIHNvIHRoaXMKLQkJCQkgKiBvbmx5IGFkZHMgYSBj b3B5IHN0ZXAgd2hlbiBzZXRIb2xkU25hcHNob3QgaXMgdHJ1ZS4gIChJdCdzCi0JCQkJICogb2th eSBmb3IgdGhlIGNvbW1hbmQgSUQgb2YgdGhlIGFjdGl2ZSBzbmFwc2hvdCB0byBkaXZlcmdlCi0J CQkJICogZnJvbSB3aGF0IGhvbGRTbmFwc2hvdCBoYXMuKQotCQkJCSAqLwotCQkJCVB1c2hDb3Bp ZWRTbmFwc2hvdChzbmFwc2hvdCk7CisJCQkJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsK IAogCQkJCS8qCiAJCQkJICogQXMgZm9yIFBPUlRBTF9PTkVfU0VMRUNUIHBvcnRhbHMsIGl0IGRv ZXMgbm90IHNlZW0KQEAgLTEyNjgsMjYgKzEyNTIsMzkgQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFs IHBvcnRhbCwKIAogCQkJCWFjdGl2ZV9zbmFwc2hvdF9zZXQgPSB0cnVlOwogCQkJfQotCQkJZWxz ZQotCQkJCVVwZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CiAKKwkJCS8qCisJCQkgKiBS dW4gdGhlIHBsYW4gdG8gY29tcGxldGlvbi4KKwkJCSAqLworCQkJcWRlc2MtPmRlc3QgPSBkZXN0 OworCQkJRXhlY3V0b3JSdW4ocWRlc2MsIEZvcndhcmRTY2FuRGlyZWN0aW9uLCAwLCB0cnVlKTsK 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 CiAJCQlpZiAobG9nX2V4ZWN1dG9yX3N0YXRzKQpAQCAtMTM0MiwxMiArMTMzOSwxMiBAQCBQb3J0 YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAogCQlpZiAocG9ydGFsLT5zdG10cyA9PSBOSUwpCiAJ CQlicmVhazsKIAotCQkvKgotCQkgKiBJbmNyZW1lbnQgY29tbWFuZCBjb3VudGVyIGJldHdlZW4g cXVlcmllcywgYnV0IG5vdCBhZnRlciB0aGUgbGFzdAotCQkgKiBvbmUuCi0JCSAqLwotCQlpZiAo bG5leHQocG9ydGFsLT5zdG10cywgc3RtdGxpc3RfaXRlbSkgIT0gTlVMTCkKLQkJCUNvbW1hbmRD b3VudGVySW5jcmVtZW50KCk7CisJCWlmIChxZGVzYy0+ZXN0YXRlKQorCQl7CisJCQlFeGVjdXRv ckZpbmlzaChxZGVzYyk7CisJCQlFeGVjdXRvckVuZChxZGVzYyk7CisJCX0KKwkJRnJlZVF1ZXJ5 RGVzYyhxZGVzYyk7CiAJfQogCiAJLyogUG9wIHRoZSBzbmFwc2hvdCBpZiB3ZSBwdXNoZWQgb25l LiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKaW5kZXggMDZkZmE4NWYwNC4uMGNhZDQ1 MGRjZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCkBAIC0yMDEsNiArMjAxLDEzIEBA IENyZWF0ZVBvcnRhbChjb25zdCBjaGFyICpuYW1lLCBib29sIGFsbG93RHVwLCBib29sIGR1cFNp bGVudCkKIAlwb3J0YWwtPnBvcnRhbENvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoVG9w UG9ydGFsQ29udGV4dCwKIAkJCQkJCQkJCQkJCSAgIlBvcnRhbENvbnRleHQiLAogCQkJCQkJCQkJ CQkJICBBTExPQ1NFVF9TTUFMTF9TSVpFUyk7CisJLyoKKwkgKiBpbml0aWFsaXplIHBvcnRhbCdz IHF1ZXJ5IGNvbnRleHQgdG8gc3RvcmUgUXVlcnlEZXNjcyBjcmVhdGVkIGR1cmluZworCSAqIFBv cnRhbFN0YXJ0KCkgYW5kIHRoZW4gdXNlZCBpbiBQb3J0YWxSdW4oKS4KKwkgKi8KKwlwb3J0YWwt PnF1ZXJ5Q29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShUb3BQb3J0YWxDb250ZXh0LAor CQkJCQkJCQkJCQkJICJQb3J0YWxRdWVyeUNvbnRleHQiLAorCQkJCQkJCQkJCQkJIEFMTE9DU0VU X1NNQUxMX1NJWkVTKTsKIAogCS8qIGNyZWF0ZSBhIHJlc291cmNlIG93bmVyIGZvciB0aGUgcG9y dGFsICovCiAJcG9ydGFsLT5yZXNvd25lciA9IFJlc291cmNlT3duZXJDcmVhdGUoQ3VyVHJhbnNh Y3Rpb25SZXNvdXJjZU93bmVyLApAQCAtMjI0LDYgKzIzMSw3IEBAIENyZWF0ZVBvcnRhbChjb25z dCBjaGFyICpuYW1lLCBib29sIGFsbG93RHVwLCBib29sIGR1cFNpbGVudCkKIAogCS8qIGZvciBu YW1lZCBwb3J0YWxzIHJldXNlIHBvcnRhbC0+bmFtZSBjb3B5ICovCiAJTWVtb3J5Q29udGV4dFNl dElkZW50aWZpZXIocG9ydGFsLT5wb3J0YWxDb250ZXh0LCBwb3J0YWwtPm5hbWVbMF0gPyBwb3J0 YWwtPm5hbWUgOiAiPHVubmFtZWQ+Iik7CisJTWVtb3J5Q29udGV4dFNldElkZW50aWZpZXIocG9y dGFsLT5xdWVyeUNvbnRleHQsIHBvcnRhbC0+bmFtZVswXSA/IHBvcnRhbC0+bmFtZSA6ICI8dW5u YW1lZD4iKTsKIAogCXJldHVybiBwb3J0YWw7CiB9CkBAIC01OTQsNiArNjAyLDcgQEAgUG9ydGFs RHJvcChQb3J0YWwgcG9ydGFsLCBib29sIGlzVG9wQ29tbWl0KQogCiAJLyogcmVsZWFzZSBzdWJz aWRpYXJ5IHN0b3JhZ2UgKi8KIAlNZW1vcnlDb250ZXh0RGVsZXRlKHBvcnRhbC0+cG9ydGFsQ29u dGV4dCk7CisJTWVtb3J5Q29udGV4dERlbGV0ZShwb3J0YWwtPnF1ZXJ5Q29udGV4dCk7CiAKIAkv KiByZWxlYXNlIHBvcnRhbCBzdHJ1Y3QgKGl0J3MgaW4gVG9wUG9ydGFsQ29udGV4dCkgKi8KIAlw ZnJlZShwb3J0YWwpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5o IGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCmluZGV4IDNkM2U2MzJhMGMuLjM3NTU0 NzI3ZWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAorKysgYi9z cmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKQEAgLTg4LDcgKzg4LDExIEBAIGV4dGVybiB2 b2lkIEV4cGxhaW5PbmVVdGlsaXR5KE5vZGUgKnV0aWxpdHlTdG10LCBJbnRvQ2xhdXNlICppbnRv LAogCQkJCQkJCSAgRXhwbGFpblN0YXRlICplcywgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJ CQkJCQkJICBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYp OwogCi1leHRlcm4gdm9pZCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQs IEludG9DbGF1c2UgKmludG8sCitleHRlcm4gUXVlcnlEZXNjICpFeHBsYWluUXVlcnlEZXNjKFBs YW5uZWRTdG10ICpzdG10LAorCQkJCSBjb25zdCBjaGFyICpxdWVyeVN0cmluZywgSW50b0NsYXVz ZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKKwkJCQkgUGFyYW1MaXN0SW5mbyBwYXJhbXMsIFF1 ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKK2V4dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFuKFF1 ZXJ5RGVzYyAqcXVlcnlEZXNjLAorCQkJCQkJICAgSW50b0NsYXVzZSAqaW50bywKIAkJCQkJCSAg IEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCQkJCQkJICAgUGFy YW1MaXN0SW5mbyBwYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAogCQkJCQkJICAg Y29uc3QgaW5zdHJfdGltZSAqcGxhbmR1cmF0aW9uLApAQCAtMTA0LDYgKzEwOCw3IEBAIGV4dGVy biB2b2lkIEV4cGxhaW5RdWVyeVBhcmFtZXRlcnMoRXhwbGFpblN0YXRlICplcywgUGFyYW1MaXN0 SW5mbyBwYXJhbXMsIGludCBtCiAKIGV4dGVybiB2b2lkIEV4cGxhaW5CZWdpbk91dHB1dChFeHBs YWluU3RhdGUgKmVzKTsKIGV4dGVybiB2b2lkIEV4cGxhaW5FbmRPdXRwdXQoRXhwbGFpblN0YXRl ICplcyk7CitleHRlcm4gdm9pZCBFeHBsYWluUmVzZXRPdXRwdXQoRXhwbGFpblN0YXRlICplcyk7 CiBleHRlcm4gdm9pZCBFeHBsYWluU2VwYXJhdGVQbGFucyhFeHBsYWluU3RhdGUgKmVzKTsKIAog ZXh0ZXJuIHZvaWQgRXhwbGFpblByb3BlcnR5TGlzdChjb25zdCBjaGFyICpxbGFiZWwsIExpc3Qg KmRhdGEsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy90cmlnZ2VyLmggYi9zcmMv aW5jbHVkZS9jb21tYW5kcy90cmlnZ2VyLmgKaW5kZXggNDMwZTNjYTdkZC4uZDRmN2MyOTMwMSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oCisrKyBiL3NyYy9pbmNs dWRlL2NvbW1hbmRzL3RyaWdnZXIuaApAQCAtMjU3LDYgKzI1Nyw3IEBAIGV4dGVybiB2b2lkIEV4 ZWNBU1RydW5jYXRlVHJpZ2dlcnMoRVN0YXRlICplc3RhdGUsCiAKIGV4dGVybiB2b2lkIEFmdGVy VHJpZ2dlckJlZ2luWGFjdCh2b2lkKTsKIGV4dGVybiB2b2lkIEFmdGVyVHJpZ2dlckJlZ2luUXVl cnkodm9pZCk7CitleHRlcm4gdm9pZCBBZnRlclRyaWdnZXJDYW5jZWxRdWVyeSh2b2lkKTsKIGV4 dGVybiB2b2lkIEFmdGVyVHJpZ2dlckVuZFF1ZXJ5KEVTdGF0ZSAqZXN0YXRlKTsKIGV4dGVybiB2 b2lkIEFmdGVyVHJpZ2dlckZpcmVEZWZlcnJlZCh2b2lkKTsKIGV4dGVybiB2b2lkIEFmdGVyVHJp Z2dlckVuZFhhY3QoYm9vbCBpc0NvbW1pdCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVj dXRvci9leGVjdXRvci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAppbmRleCA3 MmNiZjEyMGM1Li4xMGM1Y2RhMTY5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9l eGVjdXRvci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKQEAgLTczLDcg KzczLDcgQEAKIAogCiAvKiBIb29rIGZvciBwbHVnaW5zIHRvIGdldCBjb250cm9sIGluIEV4ZWN1 dG9yU3RhcnQoKSAqLwotdHlwZWRlZiB2b2lkICgqRXhlY3V0b3JTdGFydF9ob29rX3R5cGUpIChR dWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7Cit0eXBlZGVmIGJvb2wgKCpFeGVjdXRv clN0YXJ0X2hvb2tfdHlwZSkgKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIGV4 dGVybiBQR0RMTElNUE9SVCBFeGVjdXRvclN0YXJ0X2hvb2tfdHlwZSBFeGVjdXRvclN0YXJ0X2hv b2s7CiAKIC8qIEhvb2sgZm9yIHBsdWdpbnMgdG8gZ2V0IGNvbnRyb2wgaW4gRXhlY3V0b3JSdW4o KSAqLwpAQCAtMTk4LDggKzE5OCw4IEBAIEV4ZWNHZXRKdW5rQXR0cmlidXRlKFR1cGxlVGFibGVT bG90ICpzbG90LCBBdHRyTnVtYmVyIGF0dG5vLCBib29sICppc051bGwpCiAvKgogICogcHJvdG90 eXBlcyBmcm9tIGZ1bmN0aW9ucyBpbiBleGVjTWFpbi5jCiAgKi8KLWV4dGVybiB2b2lkIEV4ZWN1 dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOwotZXh0ZXJuIHZvaWQg c3RhbmRhcmRfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7 CitleHRlcm4gYm9vbCBFeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZs YWdzKTsKK2V4dGVybiBib29sIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVy eURlc2MsIGludCBlZmxhZ3MpOwogZXh0ZXJuIHZvaWQgRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpx dWVyeURlc2MsCiAJCQkJCQlTY2FuRGlyZWN0aW9uIGRpcmVjdGlvbiwgdWludDY0IGNvdW50LCBi b29sIGV4ZWN1dGVfb25jZSk7CiBleHRlcm4gdm9pZCBzdGFuZGFyZF9FeGVjdXRvclJ1bihRdWVy eURlc2MgKnF1ZXJ5RGVzYywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggYjJhNTc2Yjc2ZC4uMDky MmJlNjY3OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIv c3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTY3MCw2ICs2NzAsOSBAQCB0eXBlZGVm IHN0cnVjdCBFU3RhdGUKIAlpbnQJCQllc190b3BfZWZsYWdzOwkvKiBlZmxhZ3MgcGFzc2VkIHRv IEV4ZWN1dG9yU3RhcnQgKi8KIAlpbnQJCQllc19pbnN0cnVtZW50OwkvKiBPUiBvZiBJbnN0cnVt ZW50T3B0aW9uIGZsYWdzICovCiAJYm9vbAkJZXNfZmluaXNoZWQ7CS8qIHRydWUgd2hlbiBFeGVj dXRvckZpbmlzaCBpcyBkb25lICovCisJYm9vbAkJZXNfY2FuY2VsZWQ7CS8qIHRydWUgd2hlbiBl eGVjdXRpb24gd2FzIGNhbmNlbGVkCisJCQkJCQkJCSAqIHVwb24gZW5jb3VudGVyaW5nIHRoYXQg cGxhbiB3YXMgaW52YWxpZGVkCisJCQkJCQkJCSAqIGR1cmluZyBFeGVjSW5pdE5vZGUoKSAqLwog CiAJTGlzdAkgICAqZXNfZXhwcmNvbnRleHRzOwkvKiBMaXN0IG9mIEV4cHJDb250ZXh0cyB3aXRo aW4gRVN0YXRlICovCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvcHF1ZXJ5LmggYi9z cmMvaW5jbHVkZS90Y29wL3BxdWVyeS5oCmluZGV4IGE1ZTY1Yjk4YWEuLjU3N2I4MWE5ZWUgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvcHF1ZXJ5LmgKKysrIGIvc3JjL2luY2x1ZGUvdGNv cC9wcXVlcnkuaApAQCAtMjksNyArMjksNyBAQCBleHRlcm4gTGlzdCAqRmV0Y2hQb3J0YWxUYXJn ZXRMaXN0KFBvcnRhbCBwb3J0YWwpOwogCiBleHRlcm4gTGlzdCAqRmV0Y2hTdGF0ZW1lbnRUYXJn ZXRMaXN0KE5vZGUgKnN0bXQpOwogCi1leHRlcm4gdm9pZCBQb3J0YWxTdGFydChQb3J0YWwgcG9y dGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKK2V4dGVybiBib29sIFBvcnRhbFN0YXJ0KFBvcnRh bCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCQkJaW50IGVmbGFncywgU25hcHNo b3Qgc25hcHNob3QpOwogCiBleHRlcm4gdm9pZCBQb3J0YWxTZXRSZXN1bHRGb3JtYXQoUG9ydGFs IHBvcnRhbCwgaW50IG5Gb3JtYXRzLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcG9y dGFsLmggYi9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaAppbmRleCBhYTA4YjFlMGZjLi5hZjA1 OWUzMGY4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaAorKysgYi9zcmMv aW5jbHVkZS91dGlscy9wb3J0YWwuaApAQCAtMTM4LDYgKzEzOCw4IEBAIHR5cGVkZWYgc3RydWN0 IFBvcnRhbERhdGEKIAlRdWVyeUNvbXBsZXRpb24gcWM7CQkJLyogY29tbWFuZCBjb21wbGV0aW9u IGRhdGEgZm9yIGV4ZWN1dGVkIHF1ZXJ5ICovCiAJTGlzdAkgICAqc3RtdHM7CQkJLyogbGlzdCBv ZiBQbGFubmVkU3RtdHMgKi8KIAlDYWNoZWRQbGFuICpjcGxhbjsJCQkvKiBDYWNoZWRQbGFuLCBp ZiBzdG10cyBhcmUgZnJvbSBvbmUgKi8KKwlMaXN0CSAgICpxZGVzY3M7CQkJLyogbGlzdCBvZiBR dWVyeURlc2NzICovCisJTWVtb3J5Q29udGV4dCBxdWVyeUNvbnRleHQ7CS8qIG1lbW9yeSBmb3Ig UXVlcnlEZXNjcyBhbmQgY2hpbGRyZW4gKi8KIAogCVBhcmFtTGlzdEluZm8gcG9ydGFsUGFyYW1z OyAvKiBwYXJhbXMgdG8gcGFzcyB0byBxdWVyeSAqLwogCVF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5 RW52OyAvKiBlbnZpcm9ubWVudCBmb3IgcXVlcnkgKi8KLS0gCjIuMzUuMwoK --00000000000082dd050604ad25e6 Content-Type: application/octet-stream; name="v47-0003-Support-for-ExecInitNode-to-detect-CachedPlan-in.patch" Content-Disposition: attachment; filename="v47-0003-Support-for-ExecInitNode-to-detect-CachedPlan-in.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lm7ic0oc5 RnJvbSAxNmYyZGVhNjJiY2ZmNTM0YTQxZjMxODVjMzQ5MjQ4NDk4ZDAxMzgzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNiBTZXAgMjAyMyAxNzo1MzozNCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ3 IDMvOF0gU3VwcG9ydCBmb3IgRXhlY0luaXROb2RlKCkgdG8gZGV0ZWN0IENhY2hlZFBsYW4KIGlu dmFsaWRhdGlvbgoKVGhpcyBjb21taXQgYWRkcyBjaGVja3MgdG8gZGV0ZXJtaW5lIGlmIGEgQ2Fj aGVkUGxhbiByZW1haW5zIHZhbGlkCmR1cmluZyBFeGVjSW5pdE5vZGUoKSB0cmF2ZXJzYWwgb2Yg dGhlIHBsYW4gZnJvbSB0aGUgQ2FjaGVkUGxhbi4gVGhpcwppbmNsdWRlcyAgcG9pbnRzIHJpZ2h0 IGFmdGVyIG9wZW5pbmcvbG9ja2luZyB0YWJsZXMgYW5kIGR1cmluZwpyZWN1cnNpdmUgRXhlY0lu aXROb2RlKCkgY2FsbHMgdG8gaW5pdGlhbGl6ZSBjaGlsZCBwbGFucy4gRGVwZW5kaW5nCm9uIHRo ZSBzaXR1YXRpb24sIHNwZWNpZmljIEV4ZWNJbml0KigpIHJvdXRpbmVzIHdpbGw6CgoqIFJldHVy biBOVUxMIGlmIGludmFsaWRhdGlvbiBpcyBzcG90dGVkIHJpZ2h0IGFmdGVyIG9wZW5pbmcgYSB0 YWJsZQogIG9yIGFmdGVyIGEgZnVuY3Rpb24gdGhhdCBvcGVucyBvbmUsIGJ1dCBiZWZvcmUgaW5p dGlhbGl6aW5nIGNoaWxkCiAgbm9kZXMuCgoqIFJldHVybiB0aGUgcGFydGlhbGx5IGluaXRpYWxp emVkIFBsYW5TdGF0ZSBub2RlIGlmIGludmFsaWRhdGlvbiBpcwogIGZvdW5kIGFmdGVyIHJlY3Vy c2l2ZWx5IGluaXRpYWxpemluZyBhIGNoaWxkIG5vZGUgdmlhCiAgRXhlY0luaXROb2RlKCkuCgpB IHByaW9yIGNvbW1pdCBhbHJlYWR5IGZvcnRpZmllZCBFeGVjRW5kKigpIHRvIG1hbmFnZSB0aGVz ZSBwYXJ0aWFsbHkKaW5pdGlhbGl6ZWQgbm9kZXMuCgpJbXBvcnRhbnRseSwgdGhpcyBjb21taXQg ZG9lc24ndCBhbHRlciBmdW5jdGlvbmFsaXR5LiBUaGUgQ2FjaGVkUGxhbgppc24ndCBmZWQgdG8g dGhlIGV4ZWN1dG9yIGFzIG9mIG5vdywgYW5kIHRoZSBleGVjdXRvciBkb2Vzbid0IGxvY2sKdGFi bGVzLgoKUmV2aWV3ZWQtYnk6IFJvYmVydCBIYWFzCi0tLQogY29udHJpYi9wb3N0Z3Jlc19mZHcv cG9zdGdyZXNfZmR3LmMgICAgICAgIHwgIDQgKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y01haW4uYyAgICAgICAgICAgIHwgMjQgKysrKysrKysrKysrKysrKysrKystLQogc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jICAgICAgIHwgIDQgKysrKwogc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMgICAgICAgIHwgMTkgKysrKysrKysrKysrKysrKy0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jICAgICAgICAgICB8ICAyICsrCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQWdnLmMgICAgICAgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUFwcGVuZC5jICAgICAgICAgIHwgMTQgKysrKysrKysrKy0tLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5jICAgICAgIHwgMTEgKysrKysrKy0tLQogc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgIHwgIDQgKysrKwogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jIHwgIDIgKysKIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVCaXRtYXBPci5jICAgICAgICB8IDExICsrKysrKystLS0KIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVDdXN0b20uYyAgICAgICAgICB8ICAyICsrCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYyAgICAgfCAgNCArKysrCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlR2F0aGVyLmMgICAgICAgICAgfCAgMyArKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVHYXRoZXJNZXJnZS5jICAgICB8ICAyICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl R3JvdXAuYyAgICAgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2gu YyAgICAgICAgICAgIHwgIDIgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5j ICAgICAgICB8ICA0ICsrKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNv cnQuYyB8ICAyICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jICAg fCAgNCArKysrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMgICAgICAgfCAg NCArKysrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYyAgICAgICAgICAgfCAgMiAr Kwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMgICAgICAgIHwgIDIgKysKIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlhbC5jICAgICAgICB8ICAyICsrCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jICAgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgICAgIHwgMTAgKysrKysrKystCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMgICAgICAgfCAgNCArKysrCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyAgICAgfCAgNyArKysrKysrCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTmVzdGxvb3AuYyAgICAgICAgfCAgNCArKysrCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlUHJvamVjdFNldC5jICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVJlY3Vyc2l2ZXVuaW9uLmMgIHwgIDQgKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVJlc3VsdC5jICAgICAgICAgIHwgIDIgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTYW1w bGVzY2FuLmMgICAgICB8ICAyICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5j ICAgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNldE9wLmMgICAgICAg ICAgIHwgIDIgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMgICAgICAgICAgICB8 ICAyICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMgICAgfCAgMiAr Kwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jICAgIHwgIDIgKysKIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2FuLmMgICAgICAgICB8ICAyICsrCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMgICAgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jICAgICAgIHwgIDIgKysKIHNyYy9pbmNsdWRlL2V4ZWN1 dG9yL2V4ZWN1dG9yLmggICAgICAgICAgICB8IDEwICsrKysrKysrKwogc3JjL2luY2x1ZGUvbm9k ZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgIHwgIDIgKysKIHNyYy9pbmNsdWRlL3V0aWxzL3Bs YW5jYWNoZS5oICAgICAgICAgICAgICB8IDE0ICsrKysrKysrKysrKysKIDQ0IGZpbGVzIGNoYW5n ZWQsIDE5OCBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250 cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bv c3RncmVzX2Zkdy5jCmluZGV4IDEzOTM3MTY1ODcuLmFiN2VjYjkyNWMgMTAwNjQ0Ci0tLSBhL2Nv bnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNf ZmR3L3Bvc3RncmVzX2Zkdy5jCkBAIC0yNjYwLDcgKzI2NjAsMTEgQEAgcG9zdGdyZXNCZWdpbkRp cmVjdE1vZGlmeShGb3JlaWduU2NhblN0YXRlICpub2RlLCBpbnQgZWZsYWdzKQogCS8qIEdldCBp bmZvIGFib3V0IGZvcmVpZ24gdGFibGUuICovCiAJcnRpbmRleCA9IG5vZGUtPnJlc3VsdFJlbElu Zm8tPnJpX1JhbmdlVGFibGVJbmRleDsKIAlpZiAoZnNwbGFuLT5zY2FuLnNjYW5yZWxpZCA9PSAw KQorCXsKIAkJZG1zdGF0ZS0+cmVsID0gRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLCBydGlu ZGV4LCBlZmxhZ3MpOworCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJcmV0 dXJuOworCX0KIAllbHNlCiAJCWRtc3RhdGUtPnJlbCA9IG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxh dGlvbjsKIAl0YWJsZSA9IEdldEZvcmVpZ25UYWJsZShSZWxhdGlvbkdldFJlbGlkKGRtc3RhdGUt PnJlbCkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggNGM1YTdiYmY2Mi4uNjZmMWI3Mzk4 ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC04MzksOCArODM5LDggQEAgSW5pdFBsYW4o UXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJUGxhbgkgICAqcGxhbiA9IHBsYW5u ZWRzdG10LT5wbGFuVHJlZTsKIAlMaXN0CSAgICpyYW5nZVRhYmxlID0gcGxhbm5lZHN0bXQtPnJ0 YWJsZTsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IHF1ZXJ5RGVzYy0+ZXN0YXRlOwotCVBsYW5TdGF0 ZSAgKnBsYW5zdGF0ZTsKLQlUdXBsZURlc2MJdHVwVHlwZTsKKwlQbGFuU3RhdGUgICpwbGFuc3Rh dGUgPSBOVUxMOworCVR1cGxlRGVzYwl0dXBUeXBlID0gTlVMTDsKIAlMaXN0Q2VsbCAgICpsOwog CWludAkJCWk7CiAKQEAgLTg1NSw2ICs4NTUsNyBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5 RGVzYywgaW50IGVmbGFncykKIAlFeGVjSW5pdFJhbmdlVGFibGUoZXN0YXRlLCByYW5nZVRhYmxl LCBwbGFubmVkc3RtdC0+cGVybUluZm9zKTsKIAogCWVzdGF0ZS0+ZXNfcGxhbm5lZHN0bXQgPSBw bGFubmVkc3RtdDsKKwllc3RhdGUtPmVzX2NhY2hlZHBsYW4gPSBOVUxMOwogCiAJLyoKIAkgKiBO ZXh0LCBidWlsZCB0aGUgRXhlY1Jvd01hcmsgYXJyYXkgZnJvbSB0aGUgUGxhblJvd01hcmsocyks IGlmIGFueS4KQEAgLTg4Niw2ICs4ODcsOCBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVz YywgaW50IGVmbGFncykKIAkJCQljYXNlIFJPV19NQVJLX0tFWVNIQVJFOgogCQkJCWNhc2UgUk9X X01BUktfUkVGRVJFTkNFOgogCQkJCQlyZWxhdGlvbiA9IEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRp b24oZXN0YXRlLCByYy0+cnRpKTsKKwkJCQkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRl KSkKKwkJCQkJCWdvdG8gcGxhbl9pbml0X3N1c3BlbmRlZDsKIAkJCQkJYnJlYWs7CiAJCQkJY2Fz ZSBST1dfTUFSS19DT1BZOgogCQkJCQkvKiBubyBwaHlzaWNhbCB0YWJsZSBhY2Nlc3MgaXMgcmVx dWlyZWQgKi8KQEAgLTk1Niw2ICs5NTksOCBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVz YywgaW50IGVmbGFncykKIAogCQllc3RhdGUtPmVzX3N1YnBsYW5zdGF0ZXMgPSBsYXBwZW5kKGVz dGF0ZS0+ZXNfc3VicGxhbnN0YXRlcywKIAkJCQkJCQkJCQkgICBzdWJwbGFuc3RhdGUpOworCQlp ZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJZ290byBwbGFuX2luaXRfc3VzcGVu ZGVkOwogCiAJCWkrKzsKIAl9CkBAIC05NjYsNiArOTcxLDggQEAgSW5pdFBsYW4oUXVlcnlEZXNj ICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJICogcHJvY2Vzc2luZyB0dXBsZXMuCiAJICovCiAJ cGxhbnN0YXRlID0gRXhlY0luaXROb2RlKHBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4 ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlnb3RvIHBsYW5faW5pdF9zdXNwZW5kZWQ7CiAK IAkvKgogCSAqIEdldCB0aGUgdHVwbGUgZGVzY3JpcHRvciBkZXNjcmliaW5nIHRoZSB0eXBlIG9m IHR1cGxlcyB0byByZXR1cm4uCkBAIC0xMDA3LDYgKzEwMTQsNyBAQCBJbml0UGxhbihRdWVyeURl c2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkJfQogCX0KIAorcGxhbl9pbml0X3N1c3BlbmRl ZDoKIAlxdWVyeURlc2MtPnR1cERlc2MgPSB0dXBUeXBlOwogCXF1ZXJ5RGVzYy0+cGxhbnN0YXRl ID0gcGxhbnN0YXRlOwogfQpAQCAtMjk0NSw2ICsyOTUzLDEyIEBAIEV2YWxQbGFuUXVhbFN0YXJ0 KEVQUVN0YXRlICplcHFzdGF0ZSwgUGxhbiAqcGxhblRyZWUpCiAJCVBsYW5TdGF0ZSAgKnN1YnBs YW5zdGF0ZTsKIAogCQlzdWJwbGFuc3RhdGUgPSBFeGVjSW5pdE5vZGUoc3VicGxhbiwgcmNlc3Rh dGUsIDApOworCisJCS8qCisJCSAqIEF0IHRoaXMgcG9pbnQsIHdlIHNob3VsZG4ndCBoYXZlIHJl Y2VpdmVkIGFueSBuZXcgaW52YWxpZGF0aW9uCisJCSAqIG1lc3NhZ2VzIHRoYXQgd291bGQgbWFr ZSB0aGUgcGxhbiB0cmVlIHN0YWxlLgorCQkgKi8KKwkJQXNzZXJ0KEV4ZWNQbGFuU3RpbGxWYWxp ZChyY2VzdGF0ZSkpOwogCQlyY2VzdGF0ZS0+ZXNfc3VicGxhbnN0YXRlcyA9IGxhcHBlbmQocmNl c3RhdGUtPmVzX3N1YnBsYW5zdGF0ZXMsCiAJCQkJCQkJCQkJCSBzdWJwbGFuc3RhdGUpOwogCX0K QEAgLTI5ODgsNiArMzAwMiwxMiBAQCBFdmFsUGxhblF1YWxTdGFydChFUFFTdGF0ZSAqZXBxc3Rh dGUsIFBsYW4gKnBsYW5UcmVlKQogCSAqLwogCWVwcXN0YXRlLT5yZWNoZWNrcGxhbnN0YXRlID0g RXhlY0luaXROb2RlKHBsYW5UcmVlLCByY2VzdGF0ZSwgMCk7CiAKKwkvKgorCSAqIEF0IHRoaXMg cG9pbnQsIHdlIHNob3VsZG4ndCBoYXZlIHJlY2VpdmVkIGFueSBuZXcgaW52YWxpZGF0aW9uIG1l c3NhZ2VzCisJICogdGhhdCB3b3VsZCBtYWtlIHRoZSBwbGFuIHRyZWUgc3RhbGUuCisJICovCisJ QXNzZXJ0KEV4ZWNQbGFuU3RpbGxWYWxpZChyY2VzdGF0ZSkpOworCiAJTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG9sZGNvbnRleHQpOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUGFydGl0aW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMK aW5kZXggZWI4YTg3ZmQ2My4uZTg4NDU1MzY4YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1BhcnRpdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0 aXRpb24uYwpAQCAtMTgwMSw2ICsxODAxLDggQEAgRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKFBs YW5TdGF0ZSAqcGxhbnN0YXRlLAogCiAJLyogQ3JlYXRlIHRoZSB3b3JraW5nIGRhdGEgc3RydWN0 dXJlIGZvciBwcnVuaW5nICovCiAJcHJ1bmVzdGF0ZSA9IENyZWF0ZVBhcnRpdGlvblBydW5lU3Rh dGUocGxhbnN0YXRlLCBwcnVuZWluZm8pOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0 ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiBQZXJmb3JtIGFuIGluaXRpYWwgcGFydGl0 aW9uIHBydW5lIHBhc3MsIGlmIHJlcXVpcmVkLgpAQCAtMTkyNyw2ICsxOTI5LDggQEAgQ3JlYXRl UGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1bmVJ bmZvICpwcnVuZWluZm8pCiAJCQkgKiBkdXJhdGlvbiBvZiB0aGlzIGV4ZWN1dG9yIHJ1bi4KIAkJ CSAqLwogCQkJcGFydHJlbCA9IEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oZXN0YXRlLCBwaW5m by0+cnRpbmRleCk7CisJCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJCXJl dHVybiBOVUxMOwogCQkJcGFydGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcnRyZWwp OwogCQkJcGFydGRlc2MgPSBQYXJ0aXRpb25EaXJlY3RvcnlMb29rdXAoZXN0YXRlLT5lc19wYXJ0 aXRpb25fZGlyZWN0b3J5LAogCQkJCQkJCQkJCQkJcGFydHJlbCk7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQcm9jbm9kZS5jCmluZGV4IDYwOThjZGNhNjkuLjE2OWE1MmIwMzggMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNQcm9jbm9kZS5jCkBAIC0xMzUsNyArMTM1LDIwIEBAIHN0YXRpYyBib29sIEV4ZWNT aHV0ZG93bk5vZGVfd2Fsa2VyKFBsYW5TdGF0ZSAqbm9kZSwgdm9pZCAqY29udGV4dCk7CiAgKgkJ ICAnZXN0YXRlJyBpcyB0aGUgc2hhcmVkIGV4ZWN1dGlvbiBzdGF0ZSBmb3IgdGhlIHBsYW4gdHJl ZQogICoJCSAgJ2VmbGFncycgaXMgYSBiaXR3aXNlIE9SIG9mIGZsYWcgYml0cyBkZXNjcmliZWQg aW4gZXhlY3V0b3IuaAogICoKLSAqCQlSZXR1cm5zIGEgUGxhblN0YXRlIG5vZGUgY29ycmVzcG9u ZGluZyB0byB0aGUgZ2l2ZW4gUGxhbiBub2RlLgorICoJCVJldHVybnMgYSBQbGFuU3RhdGUgbm9k ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlbiBQbGFuIG5vZGUgb3IgTlVMTC4KKyAqCisgKgkJ VGhlIG5vZGUgdHlwZS1zcGVjaWZpYyBFeGVjSW5pdCogcm91dGluZXMgbGlzdGVkIGluIHRoaXMg ZnVuY3Rpb24gY2FuCisgKgkJZWl0aGVyIHJldHVybiBOVUxMIG9yIGEgcGFydGlhbGx5IGluaXRp YWxpemVkIFBsYW5TdGF0ZSB0cmVlIHdoZW4gdGhleQorICoJCWRldGVjdCB0aGF0IHRoZSBDYWNo ZWRQbGFuIGhhcyBiZWVuIGludmFsaWRhdGVkLiBUaGlzIGlzIGRldGVybWluZWQgYnkKKyAqCQlp bnZva2luZyBFeGVjUGxhblN0aWxsVmFsaWQoKSBhdCBrZXkgaW50ZXJ2YWxzLCBmb3IgaW5zdGFu Y2UsIHJpZ2h0CisgKgkJYWZ0ZXIgb3BlbmluZy9sb2NraW5nIGEgcmVsYXRpb24sIG9yIGZvbGxv d2luZyB0aGUgY2FsbCB0byBhIGZ1bmN0aW9uCisgKgkJdGhhdCBtaWdodCBvcGVuL2xvY2sgYSBy ZWxhdGlvbi4gVGhlIGxhdHRlciBpbnZvbHZlcyByZWN1cnNpdmUgY2FsbHMKKyAqCQl0byBFeGVj SW5pdE5vZGUoKSBmb3IgY2hpbGQgbm9kZSBpbml0aWFsaXphdGlvbi4gSWYgYW4gRXhlY0luaXQq CisgKgkJcm91dGluZSBnZXRzIGEgZmFsc2UgZnJvbSBFeGVjUGxhblN0aWxsVmFsaWQoKSwgaXQg c2hvdWxkOgorICoJCS0gUmV0dXJuIE5VTEwgaWYgbm8gY2hpbGQgbm9kZSB3YXMgaW5pdGlhbGl6 ZWQgYXQgdGhlIHRpbWUgb2YKKyAqCQkgIGNoZWNraW5nLgorICoJCS0gUHJvdmlkZSB0aGUgcGFy dGlhbGx5IGluaXRpYWxpemVkIFBsYW5TdGF0ZSBub2RlIGlmIGFueSBjaGlsZCBub2RlCisgKgkJ ICB3YXMgc2V0IHVwIHJlY3Vyc2l2ZWx5IGJ5IHRoZW4uCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAq LwogUGxhblN0YXRlICoKQEAgLTM4OCw2ICs0MDEsMTAgQEAgRXhlY0luaXROb2RlKFBsYW4gKm5v ZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkJYnJlYWs7CiAJfQogCisJaWYgKCFF eGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIHJlc3VsdDsKKworCUFzc2VydChy ZXN1bHQgIT0gTlVMTCk7CiAJRXhlY1NldEV4ZWNQcm9jTm9kZShyZXN1bHQsIHJlc3VsdC0+RXhl Y1Byb2NOb2RlKTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj VXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCmluZGV4IDE2NzA0YzBj MmYuLmMzZjcyNzliMDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGls cy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC04MjIsNiArODIy LDggQEAgRXhlY0luaXRSZXN1bHRSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5m byAqcmVzdWx0UmVsSW5mbywKIAlSZWxhdGlvbglyZXN1bHRSZWxhdGlvbkRlc2M7CiAKIAlyZXN1 bHRSZWxhdGlvbkRlc2MgPSBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKGVzdGF0ZSwgcnRpKTsK KwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm47CiAJSW5pdFJlc3Vs dFJlbEluZm8ocmVzdWx0UmVsSW5mbywKIAkJCQkJICByZXN1bHRSZWxhdGlvbkRlc2MsCiAJCQkJ CSAgcnRpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jCmluZGV4IGYxNTRmMjg5MDIuLmI3MGU4YzJjZDYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQWdnLmMKQEAgLTMzMDQsNiArMzMwNCw4IEBAIEV4ZWNJbml0QWdn KEFnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCWVmbGFncyAmPSB+RVhF Q19GTEFHX1JFV0lORDsKIAlvdXRlclBsYW4gPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQbGFu U3RhdGUoYWdnc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbiwgZXN0YXRlLCBlZmxhZ3Mp OworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBhZ2dzdGF0ZTsK IAogCS8qCiAJICogaW5pdGlhbGl6ZSBzb3VyY2UgdHVwbGUgdHlwZS4KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVBcHBlbmQuYwppbmRleCA2MDlkZjZiOWU2Li41ODhmNTM4OGM3IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUFwcGVuZC5jCkBAIC0xNDcsNiArMTQ3LDggQEAgRXhlY0luaXRBcHBlbmQoQXBwZW5kICpu b2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJCQkJCQkJCQkJICBsaXN0X2xlbmd0 aChub2RlLT5hcHBlbmRwbGFucyksCiAJCQkJCQkJCQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmZv LAogCQkJCQkJCQkJCQkgICZ2YWxpZHN1YnBsYW5zKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFs aWQoZXN0YXRlKSkKKwkJCXJldHVybiBOVUxMOwogCQlhcHBlbmRzdGF0ZS0+YXNfcHJ1bmVfc3Rh dGUgPSBwcnVuZXN0YXRlOwogCQlucGxhbnMgPSBibXNfbnVtX21lbWJlcnModmFsaWRzdWJwbGFu cyk7CiAKQEAgLTE4NSw4ICsxODcsMTMgQEAgRXhlY0luaXRBcHBlbmQoQXBwZW5kICpub2RlLCBF U3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlhcHBlbmRzdGF0ZS0+cHMucmVzdWx0b3Bzc2V0 ID0gdHJ1ZTsKIAlhcHBlbmRzdGF0ZS0+cHMucmVzdWx0b3BzZml4ZWQgPSBmYWxzZTsKIAotCWFw cGVuZHBsYW5zdGF0ZXMgPSAoUGxhblN0YXRlICoqKSBwYWxsb2MobnBsYW5zICoKLQkJCQkJCQkJ CQkJIHNpemVvZihQbGFuU3RhdGUgKikpOworCS8qCisJICogQW55IHVuaW5pdGlhbGl6ZWQgc3Vu Ym9kZXMgd2lsbCBoYXZlIE5VTEwgaW4gYXBwZW5kcGxhbnMgaW4gdGhlIGNhc2Ugb2YKKwkgKiBh biBlYXJseSByZXR1cm4uCisJICovCisJYXBwZW5kc3RhdGUtPmFwcGVuZHBsYW5zID0gYXBwZW5k cGxhbnN0YXRlcyA9CisJCShQbGFuU3RhdGUgKiopIHBhbGxvYzAobnBsYW5zICogc2l6ZW9mKFBs YW5TdGF0ZSAqKSk7CisJYXBwZW5kc3RhdGUtPmFzX25wbGFucyA9IG5wbGFuczsKIAogCS8qCiAJ ICogY2FsbCBFeGVjSW5pdE5vZGUgb24gZWFjaCBvZiB0aGUgdmFsaWQgcGxhbnMgdG8gYmUgZXhl Y3V0ZWQgYW5kIHNhdmUKQEAgLTIyMSwxMSArMjI4LDEyIEBAIEV4ZWNJbml0QXBwZW5kKEFwcGVu ZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQlmaXJzdHZhbGlkID0gajsK IAogCQlhcHBlbmRwbGFuc3RhdGVzW2orK10gPSBFeGVjSW5pdE5vZGUoaW5pdE5vZGUsIGVzdGF0 ZSwgZWZsYWdzKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJldHVy biBhcHBlbmRzdGF0ZTsKIAl9CiAKIAlhcHBlbmRzdGF0ZS0+YXNfZmlyc3RfcGFydGlhbF9wbGFu ID0gZmlyc3R2YWxpZDsKIAlhcHBlbmRzdGF0ZS0+YXBwZW5kcGxhbnMgPSBhcHBlbmRwbGFuc3Rh dGVzOwotCWFwcGVuZHN0YXRlLT5hc19ucGxhbnMgPSBucGxhbnM7CiAKIAkvKiBJbml0aWFsaXpl IGFzeW5jIHN0YXRlICovCiAJYXBwZW5kc3RhdGUtPmFzX2FzeW5jcGxhbnMgPSBhc3luY3BsYW5z OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5jCmluZGV4IDRjNWViMmIyM2IuLmMwNDk1 ZWM5MGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBBbmQuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwQW5kLmMKQEAgLTY5LDYgKzY5LDEw IEBAIEV4ZWNJbml0Qml0bWFwQW5kKEJpdG1hcEFuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZ3MpCiAJICovCiAJbnBsYW5zID0gbGlzdF9sZW5ndGgobm9kZS0+Yml0bWFwcGxhbnMp OwogCisJLyoKKwkgKiBBbnkgdW5pbml0aWFsaXplZCBzdW5ib2RlcyB3aWxsIGhhdmUgTlVMTCBp biBiaXRtYXBwbGFucyBpbiB0aGUgY2FzZSBvZgorCSAqIGFuIGVhcmx5IHJldHVybi4KKwkgKi8K IAliaXRtYXBwbGFuc3RhdGVzID0gKFBsYW5TdGF0ZSAqKikgcGFsbG9jMChucGxhbnMgKiBzaXpl b2YoUGxhblN0YXRlICopKTsKIAogCS8qCkBAIC03OCw3ICs4Miw2IEBAIEV4ZWNJbml0Qml0bWFw QW5kKEJpdG1hcEFuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJYml0bWFw YW5kc3RhdGUtPnBzLnN0YXRlID0gZXN0YXRlOwogCWJpdG1hcGFuZHN0YXRlLT5wcy5FeGVjUHJv Y05vZGUgPSBFeGVjQml0bWFwQW5kOwogCWJpdG1hcGFuZHN0YXRlLT5iaXRtYXBwbGFucyA9IGJp dG1hcHBsYW5zdGF0ZXM7Ci0JYml0bWFwYW5kc3RhdGUtPm5wbGFucyA9IG5wbGFuczsKIAogCS8q CiAJICogY2FsbCBFeGVjSW5pdE5vZGUgb24gZWFjaCBvZiB0aGUgcGxhbnMgdG8gYmUgZXhlY3V0 ZWQgYW5kIHNhdmUgdGhlCkBAIC04OCw4ICs5MSwxMCBAQCBFeGVjSW5pdEJpdG1hcEFuZChCaXRt YXBBbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWZvcmVhY2gobCwgbm9k ZS0+Yml0bWFwcGxhbnMpCiAJewogCQlpbml0Tm9kZSA9IChQbGFuICopIGxmaXJzdChsKTsKLQkJ Yml0bWFwcGxhbnN0YXRlc1tpXSA9IEV4ZWNJbml0Tm9kZShpbml0Tm9kZSwgZXN0YXRlLCBlZmxh Z3MpOwotCQlpKys7CisJCWJpdG1hcHBsYW5zdGF0ZXNbaSsrXSA9IEV4ZWNJbml0Tm9kZShpbml0 Tm9kZSwgZXN0YXRlLCBlZmxhZ3MpOworCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUp KQorCQkJcmV0dXJuIGJpdG1hcGFuZHN0YXRlOworCQliaXRtYXBhbmRzdGF0ZS0+bnBsYW5zID0g aTsKIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1h cEhlYXBzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYwpp bmRleCBjOGMxYzlkODhlLi43MTVjMTExYmU5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl Qml0bWFwSGVhcHNjYW4uYwpAQCAtNzUyLDExICs3NTIsMTUgQEAgRXhlY0luaXRCaXRtYXBIZWFw U2NhbihCaXRtYXBIZWFwU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJ ICogb3BlbiB0aGUgc2NhbiByZWxhdGlvbgogCSAqLwogCWN1cnJlbnRSZWxhdGlvbiA9IEV4ZWNP cGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwgbm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVmbGFncyk7CisJ aWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIHNjYW5zdGF0ZTsKIAog CS8qCiAJICogaW5pdGlhbGl6ZSBjaGlsZCBub2RlcwogCSAqLwogCW91dGVyUGxhblN0YXRlKHNj YW5zdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7 CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIHNjYW5zdGF0ZTsK IAogCS8qCiAJICogZ2V0IHRoZSBzY2FuIHR5cGUgZnJvbSB0aGUgcmVsYXRpb24gZGVzY3JpcHRv ci4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4u YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYwppbmRleCA3Y2Y4 NTMyYmM5Li40MjAwNDcyZDAyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl Qml0bWFwSW5kZXhzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcElu ZGV4c2Nhbi5jCkBAIC0yNTUsNiArMjU1LDggQEAgRXhlY0luaXRCaXRtYXBJbmRleFNjYW4oQml0 bWFwSW5kZXhTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkvKiBPcGVu IHRoZSBpbmRleCByZWxhdGlvbi4gKi8KIAlsb2NrbW9kZSA9IGV4ZWNfcnRfZmV0Y2gobm9kZS0+ c2Nhbi5zY2FucmVsaWQsIGVzdGF0ZSktPnJlbGxvY2ttb2RlOwogCWluZGV4c3RhdGUtPmJpc3Nf UmVsYXRpb25EZXNjID0gaW5kZXhfb3Blbihub2RlLT5pbmRleGlkLCBsb2NrbW9kZSk7CisJaWYg KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIGluZGV4c3RhdGU7CiAKIAkv KgogCSAqIEluaXRpYWxpemUgaW5kZXgtc3BlY2lmaWMgc2NhbiBzdGF0ZQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlQml0bWFwT3IuYwppbmRleCAwYmY4YWY5NjUyLi4wMDEyMDY2OWE1IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwT3IuYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQml0bWFwT3IuYwpAQCAtNzAsNiArNzAsMTAgQEAgRXhlY0luaXRCaXRtYXBP cihCaXRtYXBPciAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICovCiAJbnBs YW5zID0gbGlzdF9sZW5ndGgobm9kZS0+Yml0bWFwcGxhbnMpOwogCisJLyoKKwkgKiBBbnkgdW5p bml0aWFsaXplZCBzdW5ib2RlcyB3aWxsIGhhdmUgTlVMTCBpbiBiaXRtYXBwbGFucyBpbiB0aGUg Y2FzZSBvZgorCSAqIGFuIGVhcmx5IHJldHVybi4KKwkgKi8KIAliaXRtYXBwbGFuc3RhdGVzID0g KFBsYW5TdGF0ZSAqKikgcGFsbG9jMChucGxhbnMgKiBzaXplb2YoUGxhblN0YXRlICopKTsKIAog CS8qCkBAIC03OSw3ICs4Myw2IEBAIEV4ZWNJbml0Qml0bWFwT3IoQml0bWFwT3IgKm5vZGUsIEVT dGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWJpdG1hcG9yc3RhdGUtPnBzLnN0YXRlID0gZXN0 YXRlOwogCWJpdG1hcG9yc3RhdGUtPnBzLkV4ZWNQcm9jTm9kZSA9IEV4ZWNCaXRtYXBPcjsKIAli aXRtYXBvcnN0YXRlLT5iaXRtYXBwbGFucyA9IGJpdG1hcHBsYW5zdGF0ZXM7Ci0JYml0bWFwb3Jz dGF0ZS0+bnBsYW5zID0gbnBsYW5zOwogCiAJLyoKIAkgKiBjYWxsIEV4ZWNJbml0Tm9kZSBvbiBl YWNoIG9mIHRoZSBwbGFucyB0byBiZSBleGVjdXRlZCBhbmQgc2F2ZSB0aGUKQEAgLTg5LDggKzky LDEwIEBAIEV4ZWNJbml0Qml0bWFwT3IoQml0bWFwT3IgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBp bnQgZWZsYWdzKQogCWZvcmVhY2gobCwgbm9kZS0+Yml0bWFwcGxhbnMpCiAJewogCQlpbml0Tm9k ZSA9IChQbGFuICopIGxmaXJzdChsKTsKLQkJYml0bWFwcGxhbnN0YXRlc1tpXSA9IEV4ZWNJbml0 Tm9kZShpbml0Tm9kZSwgZXN0YXRlLCBlZmxhZ3MpOwotCQlpKys7CisJCWJpdG1hcHBsYW5zdGF0 ZXNbaSsrXSA9IEV4ZWNJbml0Tm9kZShpbml0Tm9kZSwgZXN0YXRlLCBlZmxhZ3MpOworCQlpZiAo IUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJcmV0dXJuIGJpdG1hcG9yc3RhdGU7CisJ CWJpdG1hcG9yc3RhdGUtPm5wbGFucyA9IGk7CiAJfQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVDdXN0b20uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVD dXN0b20uYwppbmRleCAyOGI1YmI5MzUzLi4xNjBlZWVlMDcxIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUN1c3RvbS5jCkBAIC02MSw2ICs2MSw4IEBAIEV4ZWNJbml0Q3VzdG9tU2NhbihDdXN0b21TY2Fu ICpjc2NhbiwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJaWYgKHNjYW5yZWxpZCA+IDAp CiAJewogCQlzY2FuX3JlbCA9IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwgc2NhbnJlbGlk LCBlZmxhZ3MpOworCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJcmV0dXJu IE5VTEw7CiAJCWNzcy0+c3Muc3NfY3VycmVudFJlbGF0aW9uID0gc2Nhbl9yZWw7CiAJfQogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5jCmluZGV4IDI5OGVhNTlhMWUuLjBmMjli MDM5NzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5jCkBAIC0xNzMsNiAr MTczLDggQEAgRXhlY0luaXRGb3JlaWduU2NhbihGb3JlaWduU2NhbiAqbm9kZSwgRVN0YXRlICpl c3RhdGUsIGludCBlZmxhZ3MpCiAJaWYgKHNjYW5yZWxpZCA+IDApCiAJewogCQljdXJyZW50UmVs YXRpb24gPSBFeGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUsIHNjYW5yZWxpZCwgZWZsYWdzKTsK KwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJldHVybiBOVUxMOwogCQlz Y2Fuc3RhdGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiA9IGN1cnJlbnRSZWxhdGlvbjsKIAkJZmR3 cm91dGluZSA9IEdldEZkd1JvdXRpbmVGb3JSZWxhdGlvbihjdXJyZW50UmVsYXRpb24sIHRydWUp OwogCX0KQEAgLTI2NCw2ICsyNjYsOCBAQCBFeGVjSW5pdEZvcmVpZ25TY2FuKEZvcmVpZ25TY2Fu ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlpZiAob3V0ZXJQbGFuKG5vZGUp KQogCQlvdXRlclBsYW5TdGF0ZShzY2Fuc3RhdGUpID0KIAkJCUV4ZWNJbml0Tm9kZShvdXRlclBs YW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3Rh dGUpKQorCQlyZXR1cm4gc2NhbnN0YXRlOwogCiAJLyoKIAkgKiBUZWxsIHRoZSBGRFcgdG8gaW5p dGlhbGl6ZSB0aGUgc2Nhbi4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVH YXRoZXIuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYwppbmRleCBiYjI1MDBh NDY5Li42YjI2ZTAzZjc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0 aGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jCkBAIC04OSw2ICs4 OSw5IEBAIEV4ZWNJbml0R2F0aGVyKEdhdGhlciAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiAJICovCiAJb3V0ZXJOb2RlID0gb3V0ZXJQbGFuKG5vZGUpOwogCW91dGVyUGxhblN0 YXRlKGdhdGhlcnN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlck5vZGUsIGVzdGF0ZSwgZWZsYWdz KTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gZ2F0aGVyc3Rh dGU7CisKIAl0dXBEZXNjID0gRXhlY0dldFJlc3VsdFR5cGUob3V0ZXJQbGFuU3RhdGUoZ2F0aGVy c3RhdGUpKTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0 aGVyTWVyZ2UuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jCmluZGV4 IDdhNzFhNTg1MDkuLjg0NDEyZjk0YmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVHYXRoZXJNZXJnZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJN ZXJnZS5jCkBAIC0xMDgsNiArMTA4LDggQEAgRXhlY0luaXRHYXRoZXJNZXJnZShHYXRoZXJNZXJn ZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICovCiAJb3V0ZXJOb2RlID0g b3V0ZXJQbGFuKG5vZGUpOwogCW91dGVyUGxhblN0YXRlKGdtX3N0YXRlKSA9IEV4ZWNJbml0Tm9k ZShvdXRlck5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChl c3RhdGUpKQorCQlyZXR1cm4gZ21fc3RhdGU7CiAKIAkvKgogCSAqIExlYWRlciBtYXkgYWNjZXNz IEV4ZWNQcm9jTm9kZSByZXN1bHQgZGlyZWN0bHkgKGlmCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlR3JvdXAuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5j CmluZGV4IDhjNjUwZjBlNDYuLmI2MDY4ODg3ZjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVHcm91cC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5j CkBAIC0xODUsNiArMTg1LDggQEAgRXhlY0luaXRHcm91cChHcm91cCAqbm9kZSwgRVN0YXRlICpl c3RhdGUsIGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6ZSBjaGlsZCBub2RlcwogCSAqLwogCW91 dGVyUGxhblN0YXRlKGdycHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVz dGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1 cm4gZ3Jwc3RhdGU7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgc2NhbiBzbG90IGFuZCB0eXBlLgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2guYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVIYXNoLmMKaW5kZXggZTcyZjA5ODZjMi4uMDMwYmYwZWQ0MyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2guYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlSGFzaC5jCkBAIC0zODYsNiArMzg2LDggQEAgRXhlY0luaXRIYXNoKEhhc2gg Km5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIGluaXRpYWxpemUgY2hpbGQg bm9kZXMKIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShoYXNoc3RhdGUpID0gRXhlY0luaXROb2RlKG91 dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlk KGVzdGF0ZSkpCisJCXJldHVybiBoYXNoc3RhdGU7CiAKIAkvKgogCSAqIGluaXRpYWxpemUgb3Vy IHJlc3VsdCBzbG90IGFuZCB0eXBlLiBObyBuZWVkIHRvIGJ1aWxkIHByb2plY3Rpb24KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKaW5kZXggYWVhNDRhOWQ1Ni4uNDlhNmJhNDI3NiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKQEAgLTc1Miw4ICs3NTIsMTIgQEAgRXhlY0lu aXRIYXNoSm9pbihIYXNoSm9pbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJ aGFzaE5vZGUgPSAoSGFzaCAqKSBpbm5lclBsYW4obm9kZSk7CiAKIAlvdXRlclBsYW5TdGF0ZSho anN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlck5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAo IUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gaGpzdGF0ZTsKIAlvdXRlckRl c2MgPSBFeGVjR2V0UmVzdWx0VHlwZShvdXRlclBsYW5TdGF0ZShoanN0YXRlKSk7CiAJaW5uZXJQ bGFuU3RhdGUoaGpzdGF0ZSkgPSBFeGVjSW5pdE5vZGUoKFBsYW4gKikgaGFzaE5vZGUsIGVzdGF0 ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4g aGpzdGF0ZTsKIAlpbm5lckRlc2MgPSBFeGVjR2V0UmVzdWx0VHlwZShpbm5lclBsYW5TdGF0ZSho anN0YXRlKSk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUlu Y3JlbWVudGFsU29ydC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29y dC5jCmluZGV4IDU0NGU2NGRmYWIuLmU4M2ZlYWUzNTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNvcnQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlSW5jcmVtZW50YWxTb3J0LmMKQEAgLTEwNDEsNiArMTA0MSw4IEBAIEV4ZWNJbml0SW5j cmVtZW50YWxTb3J0KEluY3JlbWVudGFsU29ydCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiAJICogbm9kZXMgbWF5IGJlIGFibGUgdG8gZG8gc29tZXRoaW5nIG1vcmUgdXNlZnVs LgogCSAqLwogCW91dGVyUGxhblN0YXRlKGluY3Jzb3J0c3RhdGUpID0gRXhlY0luaXROb2RlKG91 dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlk KGVzdGF0ZSkpCisJCXJldHVybiBpbmNyc29ydHN0YXRlOwogCiAJLyoKIAkgKiBJbml0aWFsaXpl IHNjYW4gc2xvdCBhbmQgdHlwZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVJbmRleG9ubHlzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nh bi5jCmluZGV4IGYxZGIzNTY2NWMuLmVhN2ZkODljMGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUluZGV4b25seXNjYW4uYwpAQCAtNDk2LDYgKzQ5Niw4IEBAIEV4ZWNJbml0SW5kZXhPbmx5 U2NhbihJbmRleE9ubHlTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkg KiBvcGVuIHRoZSBzY2FuIHJlbGF0aW9uCiAJICovCiAJY3VycmVudFJlbGF0aW9uID0gRXhlY09w ZW5TY2FuUmVsYXRpb24oZXN0YXRlLCBub2RlLT5zY2FuLnNjYW5yZWxpZCwgZWZsYWdzKTsKKwlp ZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCWluZGV4 c3RhdGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiA9IGN1cnJlbnRSZWxhdGlvbjsKIAlpbmRleHN0 YXRlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPSBOVUxMOwkvKiBubyBoZWFwIHNjYW4gaGVyZSAq LwpAQCAtNTQ5LDYgKzU1MSw4IEBAIEV4ZWNJbml0SW5kZXhPbmx5U2NhbihJbmRleE9ubHlTY2Fu ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkvKiBPcGVuIHRoZSBpbmRleCBy ZWxhdGlvbi4gKi8KIAlsb2NrbW9kZSA9IGV4ZWNfcnRfZmV0Y2gobm9kZS0+c2Nhbi5zY2FucmVs aWQsIGVzdGF0ZSktPnJlbGxvY2ttb2RlOwogCWluZGV4c3RhdGUtPmlvc3NfUmVsYXRpb25EZXNj ID0gaW5kZXhfb3Blbihub2RlLT5pbmRleGlkLCBsb2NrbW9kZSk7CisJaWYgKCFFeGVjUGxhblN0 aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIEluaXRpYWxpemUg aW5kZXgtc3BlY2lmaWMgc2NhbiBzdGF0ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUluZGV4c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5j CmluZGV4IDE0YjljMDAyMTcuLjkwNjM1ODAxMWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVJbmRleHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5k ZXhzY2FuLmMKQEAgLTkwOSw2ICs5MDksOCBAQCBFeGVjSW5pdEluZGV4U2NhbihJbmRleFNjYW4g Km5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIG9wZW4gdGhlIHNjYW4gcmVs YXRpb24KIAkgKi8KIAljdXJyZW50UmVsYXRpb24gPSBFeGVjT3BlblNjYW5SZWxhdGlvbihlc3Rh dGUsIG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZh bGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJaW5kZXhzdGF0ZS0+c3Muc3NfY3VycmVu dFJlbGF0aW9uID0gY3VycmVudFJlbGF0aW9uOwogCWluZGV4c3RhdGUtPnNzLnNzX2N1cnJlbnRT Y2FuRGVzYyA9IE5VTEw7CS8qIG5vIGhlYXAgc2NhbiBoZXJlICovCkBAIC05NTQsNiArOTU2LDgg QEAgRXhlY0luaXRJbmRleFNjYW4oSW5kZXhTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50 IGVmbGFncykKIAkvKiBPcGVuIHRoZSBpbmRleCByZWxhdGlvbi4gKi8KIAlsb2NrbW9kZSA9IGV4 ZWNfcnRfZmV0Y2gobm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVzdGF0ZSktPnJlbGxvY2ttb2RlOwog CWluZGV4c3RhdGUtPmlzc19SZWxhdGlvbkRlc2MgPSBpbmRleF9vcGVuKG5vZGUtPmluZGV4aWQs IGxvY2ttb2RlKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4g TlVMTDsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSBpbmRleC1zcGVjaWZpYyBzY2FuIHN0YXRlCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVMaW1pdC5jCmluZGV4IDU2NTQxNThlM2UuLjY3NjBkZTBmMjUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMaW1pdC5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVMaW1pdC5jCkBAIC00NzYsNiArNDc2LDggQEAgRXhlY0luaXRMaW1pdChM aW1pdCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICovCiAJb3V0ZXJQbGFu ID0gb3V0ZXJQbGFuKG5vZGUpOwogCW91dGVyUGxhblN0YXRlKGxpbWl0c3RhdGUpID0gRXhlY0lu aXROb2RlKG91dGVyUGxhbiwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZh bGlkKGVzdGF0ZSkpCisJCXJldHVybiBsaW1pdHN0YXRlOwogCiAJLyoKIAkgKiBpbml0aWFsaXpl IGNoaWxkIGV4cHJlc3Npb25zCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TG9ja1Jvd3MuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jCmluZGV4IGU0 NTk5NzFkMzIuLjI1OTkzMzJmMDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVMb2NrUm93cy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jCkBA IC0zMjIsNiArMzIyLDggQEAgRXhlY0luaXRMb2NrUm93cyhMb2NrUm93cyAqbm9kZSwgRVN0YXRl ICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogdGhlbiBpbml0aWFsaXplIG91dGVyIHBsYW4KIAkg Ki8KIAlvdXRlclBsYW5TdGF0ZShscnN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4sIGVz dGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1 cm4gbHJzdGF0ZTsKIAogCS8qIG5vZGUgcmV0dXJucyB1bm1vZGlmaWVkIHNsb3RzIGZyb20gdGhl IG91dGVyIHBsYW4gKi8KIAlscnN0YXRlLT5wcy5yZXN1bHRvcHNzZXQgPSB0cnVlOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1hdGVyaWFsLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTWF0ZXJpYWwuYwppbmRleCA3NTNlYTI4OTE1Li5iOTc0ZWJkYzhhIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYwpAQCAtMjE0LDYgKzIxNCw4IEBAIEV4ZWNJbml0 TWF0ZXJpYWwoTWF0ZXJpYWwgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCiAJ b3V0ZXJQbGFuID0gb3V0ZXJQbGFuKG5vZGUpOwogCW91dGVyUGxhblN0YXRlKG1hdHN0YXRlKSA9 IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFu U3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gbWF0c3RhdGU7CiAKIAkvKgogCSAqIEluaXRp YWxpemUgcmVzdWx0IHR5cGUgYW5kIHNsb3QuIE5vIG5lZWQgdG8gaW5pdGlhbGl6ZSBwcm9qZWN0 aW9uIGluZm8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jCmluZGV4IDgxZjJhY2RlNWUuLmFj MGE4YTBhZTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYwpAQCAtOTM4LDYgKzkzOCw4 IEBAIEV4ZWNJbml0TWVtb2l6ZShNZW1vaXplICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVm bGFncykKIAogCW91dGVyTm9kZSA9IG91dGVyUGxhbihub2RlKTsKIAlvdXRlclBsYW5TdGF0ZSht c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyTm9kZSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICgh RXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBtc3RhdGU7CiAKIAkvKgogCSAq IEluaXRpYWxpemUgcmV0dXJuIHNsb3QgYW5kIHR5cGUuIE5vIG5lZWQgdG8gaW5pdGlhbGl6ZSBw cm9qZWN0aW9uIGluZm8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJn ZUFwcGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKaW5kZXgg MjFiNTcyNmU2ZS4uYzlkNDA2YzIzMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZU1lcmdlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBw ZW5kLmMKQEAgLTk1LDYgKzk1LDggQEAgRXhlY0luaXRNZXJnZUFwcGVuZChNZXJnZUFwcGVuZCAq bm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQkJCQkJCQkJCSAgbGlzdF9sZW5n dGgobm9kZS0+bWVyZ2VwbGFucyksCiAJCQkJCQkJCQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmZv LAogCQkJCQkJCQkJCQkgICZ2YWxpZHN1YnBsYW5zKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFs aWQoZXN0YXRlKSkKKwkJCXJldHVybiBOVUxMOwogCQltZXJnZXN0YXRlLT5tc19wcnVuZV9zdGF0 ZSA9IHBydW5lc3RhdGU7CiAJCW5wbGFucyA9IGJtc19udW1fbWVtYmVycyh2YWxpZHN1YnBsYW5z KTsKIApAQCAtMTIwLDcgKzEyMiwxMSBAQCBFeGVjSW5pdE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5k ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJbWVyZ2VzdGF0ZS0+bXNfcHJ1 bmVfc3RhdGUgPSBOVUxMOwogCX0KIAotCW1lcmdlcGxhbnN0YXRlcyA9IChQbGFuU3RhdGUgKiop IHBhbGxvYyhucGxhbnMgKiBzaXplb2YoUGxhblN0YXRlICopKTsKKwkvKgorCSAqIEFueSB1bmlu aXRpYWxpemVkIHN1bmJvZGVzIHdpbGwgaGF2ZSBOVUxMIGluIG1lcmdlcGxhbnMgaW4gdGhlIGNh c2Ugb2YKKwkgKiBhbiBlYXJseSByZXR1cm4uCisJICovCisJbWVyZ2VwbGFuc3RhdGVzID0gKFBs YW5TdGF0ZSAqKikgcGFsbG9jMChucGxhbnMgKiBzaXplb2YoUGxhblN0YXRlICopKTsKIAltZXJn ZXN0YXRlLT5tZXJnZXBsYW5zID0gbWVyZ2VwbGFuc3RhdGVzOwogCW1lcmdlc3RhdGUtPm1zX25w bGFucyA9IG5wbGFuczsKIApAQCAtMTUxLDYgKzE1Nyw4IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQo TWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQlQbGFuCSAg ICppbml0Tm9kZSA9IChQbGFuICopIGxpc3RfbnRoKG5vZGUtPm1lcmdlcGxhbnMsIGkpOwogCiAJ CW1lcmdlcGxhbnN0YXRlc1tqKytdID0gRXhlY0luaXROb2RlKGluaXROb2RlLCBlc3RhdGUsIGVm bGFncyk7CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQlyZXR1cm4gbWVy Z2VzdGF0ZTsKIAl9CiAKIAltZXJnZXN0YXRlLT5wcy5wc19Qcm9qSW5mbyA9IE5VTEw7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMKaW5kZXggNjQ4ZmRkOWE1Zi4uZTdmNDUxMjQxOSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYwpAQCAtMTQ5MCwxMSArMTQ5MCwxNSBA QCBFeGVjSW5pdE1lcmdlSm9pbihNZXJnZUpvaW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQg ZWZsYWdzKQogCW1lcmdlc3RhdGUtPm1qX1NraXBNYXJrUmVzdG9yZSA9IG5vZGUtPnNraXBfbWFy a19yZXN0b3JlOwogCiAJb3V0ZXJQbGFuU3RhdGUobWVyZ2VzdGF0ZSkgPSBFeGVjSW5pdE5vZGUo b3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFs aWQoZXN0YXRlKSkKKwkJcmV0dXJuIG1lcmdlc3RhdGU7CiAJb3V0ZXJEZXNjID0gRXhlY0dldFJl c3VsdFR5cGUob3V0ZXJQbGFuU3RhdGUobWVyZ2VzdGF0ZSkpOwogCWlubmVyUGxhblN0YXRlKG1l cmdlc3RhdGUpID0gRXhlY0luaXROb2RlKGlubmVyUGxhbihub2RlKSwgZXN0YXRlLAogCQkJCQkJ CQkJCQkgIG1lcmdlc3RhdGUtPm1qX1NraXBNYXJrUmVzdG9yZSA/CiAJCQkJCQkJCQkJCSAgZWZs YWdzIDoKIAkJCQkJCQkJCQkJICAoZWZsYWdzIHwgRVhFQ19GTEFHX01BUkspKTsKKwlpZiAoIUV4 ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gbWVyZ2VzdGF0ZTsKIAlpbm5lckRl c2MgPSBFeGVjR2V0UmVzdWx0VHlwZShpbm5lclBsYW5TdGF0ZShtZXJnZXN0YXRlKSk7CiAKIAkv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCBkMjFhMTc4YWQ1Li5j MjhkNTA1OGU5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFi bGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtMzk4 NSw2ICszOTg1LDkgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0 YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQkJCQkJICAgbGluaXRpYWxfaW50KG5vZGUtPnJl c3VsdFJlbGF0aW9ucykpOwogCX0KIAorCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkp CisJCXJldHVybiBOVUxMOworCiAJLyogc2V0IHVwIGVwcXN0YXRlIHdpdGggZHVtbXkgc3VicGxh biBkYXRhIGZvciB0aGUgbW9tZW50ICovCiAJRXZhbFBsYW5RdWFsSW5pdCgmbXRzdGF0ZS0+bXRf ZXBxc3RhdGUsIGVzdGF0ZSwgTlVMTCwgTklMLAogCQkJCQkgbm9kZS0+ZXBxUGFyYW0sIG5vZGUt PnJlc3VsdFJlbGF0aW9ucyk7CkBAIC00MDEyLDYgKzQwMTUsOCBAQCBFeGVjSW5pdE1vZGlmeVRh YmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJaWYg KHJlc3VsdFJlbEluZm8gIT0gbXRzdGF0ZS0+cm9vdFJlc3VsdFJlbEluZm8pCiAJCXsKIAkJCUV4 ZWNJbml0UmVzdWx0UmVsYXRpb24oZXN0YXRlLCByZXN1bHRSZWxJbmZvLCByZXN1bHRSZWxhdGlv bik7CisJCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJCXJldHVybiBOVUxM OwogCiAJCQkvKgogCQkJICogRm9yIGNoaWxkIHJlc3VsdCByZWxhdGlvbnMsIHN0b3JlIHRoZSBy b290IHJlc3VsdCByZWxhdGlvbgpAQCAtNDAzOSw2ICs0MDQ0LDggQEAgRXhlY0luaXRNb2RpZnlU YWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICog Tm93IHdlIG1heSBpbml0aWFsaXplIHRoZSBzdWJwbGFuLgogCSAqLwogCW91dGVyUGxhblN0YXRl KG10c3RhdGUpID0gRXhlY0luaXROb2RlKHN1YnBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAo IUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gbXRzdGF0ZTsKIAogCS8qCiAJ ICogRG8gYWRkaXRpb25hbCBwZXItcmVzdWx0LXJlbGF0aW9uIGluaXRpYWxpemF0aW9uLgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlTmVzdGxvb3AuYwppbmRleCBmYzhmODMzZDhiLi4wMTU4YTNlNTkyIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmVzdGxvb3AuYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTmVzdGxvb3AuYwpAQCAtMjk1LDExICsyOTUsMTUgQEAgRXhl Y0luaXROZXN0TG9vcChOZXN0TG9vcCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3Mp CiAJICogdmFsdWVzLgogCSAqLwogCW91dGVyUGxhblN0YXRlKG5sc3RhdGUpID0gRXhlY0luaXRO b2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGls bFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBubHN0YXRlOwogCWlmIChub2RlLT5uZXN0UGFyYW1z ID09IE5JTCkKIAkJZWZsYWdzIHw9IEVYRUNfRkxBR19SRVdJTkQ7CiAJZWxzZQogCQllZmxhZ3Mg Jj0gfkVYRUNfRkxBR19SRVdJTkQ7CiAJaW5uZXJQbGFuU3RhdGUobmxzdGF0ZSkgPSBFeGVjSW5p dE5vZGUoaW5uZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0 aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIG5sc3RhdGU7CiAKIAkvKgogCSAqIEluaXRpYWxp emUgcmVzdWx0IHNsb3QsIHR5cGUgYW5kIHByb2plY3Rpb24uCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVByb2plY3RTZXQuYwppbmRleCBiNGJiZGM4OWIxLi4xYjQ3NzRkNGY3IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVQcm9qZWN0U2V0LmMKQEAgLTI0Nyw2ICsyNDcsOCBAQCBFeGVjSW5pdFByb2pl Y3RTZXQoUHJvamVjdFNldCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICog aW5pdGlhbGl6ZSBjaGlsZCBub2RlcwogCSAqLwogCW91dGVyUGxhblN0YXRlKHN0YXRlKSA9IEV4 ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQ bGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gc3RhdGU7CiAKIAkvKgogCSAqIHdlIGRv bid0IHVzZSBpbm5lciBwbGFuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl UmVjdXJzaXZldW5pb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlv bi5jCmluZGV4IDU0Y2Q2ZjIzNDcuLjYzOTg0NzVjNjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVSZWN1cnNpdmV1bmlvbi5jCkBAIC0yNDQsNyArMjQ0LDExIEBAIEV4ZWNJbml0UmVjdXJz aXZlVW5pb24oUmVjdXJzaXZlVW5pb24gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KQogCSAqIGluaXRpYWxpemUgY2hpbGQgbm9kZXMKIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShydXN0 YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlp ZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gcnVzdGF0ZTsKIAlpbm5l clBsYW5TdGF0ZShydXN0YXRlKSA9IEV4ZWNJbml0Tm9kZShpbm5lclBsYW4obm9kZSksIGVzdGF0 ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4g cnVzdGF0ZTsKIAogCS8qCiAJICogSWYgaGFzaGluZywgcHJlY29tcHV0ZSBmbWdyIGxvb2t1cCBk YXRhIGZvciBpbm5lciBsb29wLCBhbmQgY3JlYXRlIHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3Vs dC5jCmluZGV4IGU5ZjU3MzJmMzMuLmQ0ZWExMDFjYmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVSZXN1bHQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVz dWx0LmMKQEAgLTIwOCw2ICsyMDgsOCBAQCBFeGVjSW5pdFJlc3VsdChSZXN1bHQgKm5vZGUsIEVT dGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIGluaXRpYWxpemUgY2hpbGQgbm9kZXMKIAkg Ki8KIAlvdXRlclBsYW5TdGF0ZShyZXNzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5v ZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkK KwkJcmV0dXJuIHJlc3N0YXRlOwogCiAJLyoKIAkgKiB3ZSBkb24ndCB1c2UgaW5uZXIgcGxhbgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNhbXBsZXNjYW4uYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVTYW1wbGVzY2FuLmMKaW5kZXggNDFjMWVhMzdhZC4uNWJlYzVj MWY2NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNhbXBsZXNjYW4uYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5jCkBAIC0xMjUsNiArMTI1 LDggQEAgRXhlY0luaXRTYW1wbGVTY2FuKFNhbXBsZVNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRl LCBpbnQgZWZsYWdzKQogCQlFeGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUsCiAJCQkJCQkJIG5v ZGUtPnNjYW4uc2NhbnJlbGlkLAogCQkJCQkJCSBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGls bFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyogd2Ugd29uJ3Qgc2V0IHVwIHRo ZSBIZWFwU2NhbkRlc2MgdGlsbCBsYXRlciAqLwogCXNjYW5zdGF0ZS0+c3Muc3NfY3VycmVudFNj YW5EZXNjID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFz Y2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCmluZGV4IDQ5YTU5MzNh ZmYuLjQ4ZTIwYWE3MzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFz Y2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwpAQCAtMTUzLDYg KzE1Myw4IEBAIEV4ZWNJbml0U2VxU2NhbihTZXFTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncykKIAkJRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLAogCQkJCQkJCSBub2Rl LT5zY2FuLnNjYW5yZWxpZCwKIAkJCQkJCQkgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxW YWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qIGFuZCBjcmVhdGUgc2xvdCB3aXRo IHRoZSBhcHByb3ByaWF0ZSByb3d0eXBlICovCiAJRXhlY0luaXRTY2FuVHVwbGVTbG90KGVzdGF0 ZSwgJnNjYW5zdGF0ZS0+c3MsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl U2V0T3AuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRPcC5jCmluZGV4IDk4YzFiODRk NDMuLjdhM2ExNDIyMDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRP cC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRPcC5jCkBAIC01MjgsNiArNTI4 LDggQEAgRXhlY0luaXRTZXRPcChTZXRPcCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJaWYgKG5vZGUtPnN0cmF0ZWd5ID09IFNFVE9QX0hBU0hFRCkKIAkJZWZsYWdzICY9IH5F WEVDX0ZMQUdfUkVXSU5EOwogCW91dGVyUGxhblN0YXRlKHNldG9wc3RhdGUpID0gRXhlY0luaXRO b2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGls bFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBzZXRvcHN0YXRlOwogCW91dGVyRGVzYyA9IEV4ZWNH ZXRSZXN1bHRUeXBlKG91dGVyUGxhblN0YXRlKHNldG9wc3RhdGUpKTsKIAogCS8qCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU29ydC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVNvcnQuYwppbmRleCBlZWE3ZjJhZTE1Li4zZWJiYzQ2NjA0IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlU29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVTb3J0LmMKQEAgLTI2Myw2ICsyNjMsOCBAQCBFeGVjSW5pdFNvcnQoU29ydCAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJZWZsYWdzICY9IH4oRVhFQ19GTEFHX1JFV0lO RCB8IEVYRUNfRkxBR19CQUNLV0FSRCB8IEVYRUNfRkxBR19NQVJLKTsKIAogCW91dGVyUGxhblN0 YXRlKHNvcnRzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVm bGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIHNvcnRz dGF0ZTsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSBzY2FuIHNsb3QgYW5kIHR5cGUuCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMKaW5kZXggMWVlNjI5NTY2MC4uM2M1YzdjMmVi YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYwpAQCAtMTI0LDYgKzEy NCw4IEBAIEV4ZWNJbml0U3VicXVlcnlTY2FuKFN1YnF1ZXJ5U2NhbiAqbm9kZSwgRVN0YXRlICpl c3RhdGUsIGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6ZSBzdWJxdWVyeQogCSAqLwogCXN1YnF1 ZXJ5c3RhdGUtPnN1YnBsYW4gPSBFeGVjSW5pdE5vZGUobm9kZS0+c3VicGxhbiwgZXN0YXRlLCBl ZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBzdWJx dWVyeXN0YXRlOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHNjYW4gc2xvdCBhbmQgdHlwZSAobmVl ZGVkIGJ5IEV4ZWNBc3NpZ25TY2FuUHJvamVjdGlvbkluZm8pCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlVGlkcmFuZ2VzY2FuLmMKaW5kZXggZGE2MjJkM2Y1Zi4uZDMzN2YzZDU0YSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYwpAQCAtMzc0LDYgKzM3NCw4IEBAIEV4ZWNJ bml0VGlkUmFuZ2VTY2FuKFRpZFJhbmdlU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiAJICogb3BlbiB0aGUgc2NhbiByZWxhdGlvbgogCSAqLwogCWN1cnJlbnRSZWxhdGlv biA9IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwgbm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVm bGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7 CiAKIAl0aWRyYW5nZXN0YXRlLT5zcy5zc19jdXJyZW50UmVsYXRpb24gPSBjdXJyZW50UmVsYXRp b247CiAJdGlkcmFuZ2VzdGF0ZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0gTlVMTDsJLyogbm8g dGFibGUgc2NhbiBoZXJlICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl VGlkc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYwppbmRleCAxNTA1 NTA3N2QwLi45NjM3ZjM1NGIyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl VGlkc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2FuLmMKQEAgLTUx Nyw2ICs1MTcsOCBAQCBFeGVjSW5pdFRpZFNjYW4oVGlkU2NhbiAqbm9kZSwgRVN0YXRlICplc3Rh dGUsIGludCBlZmxhZ3MpCiAJICogb3BlbiB0aGUgc2NhbiByZWxhdGlvbgogCSAqLwogCWN1cnJl bnRSZWxhdGlvbiA9IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwgbm9kZS0+c2Nhbi5zY2Fu cmVsaWQsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0 dXJuIE5VTEw7CiAKIAl0aWRzdGF0ZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uID0gY3VycmVudFJl bGF0aW9uOwogCXRpZHN0YXRlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPSBOVUxMOyAvKiBubyBo ZWFwIHNjYW4gaGVyZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVu aXF1ZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jCmluZGV4IDAxZjk1MTE5 N2MuLjI4NjMwZTM4MGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlx dWUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMKQEAgLTEzNiw2ICsx MzYsOCBAQCBFeGVjSW5pdFVuaXF1ZShVbmlxdWUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQg ZWZsYWdzKQogCSAqIHRoZW4gaW5pdGlhbGl6ZSBvdXRlciBwbGFuCiAJICovCiAJb3V0ZXJQbGFu U3RhdGUodW5pcXVlc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRl LCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiB1 bmlxdWVzdGF0ZTsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSByZXN1bHQgc2xvdCBhbmQgdHlwZS4g VW5pcXVlIG5vZGVzIGRvIG5vIHByb2plY3Rpb25zLCBzbwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdp bmRvd0FnZy5jCmluZGV4IGY1MTcwNzk5ZTQuLjI5MTUxZmU0NGIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlV2luZG93QWdnLmMKQEAgLTI0NjEsNiArMjQ2MSw4IEBAIEV4ZWNJbml0V2luZG93QWdn KFdpbmRvd0FnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICovCiAJb3V0 ZXJQbGFuID0gb3V0ZXJQbGFuKG5vZGUpOwogCW91dGVyUGxhblN0YXRlKHdpbnN0YXRlKSA9IEV4 ZWNJbml0Tm9kZShvdXRlclBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3Rp bGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gd2luc3RhdGU7CiAKIAkvKgogCSAqIGluaXRpYWxp emUgc291cmNlIHR1cGxlIHR5cGUgKHdoaWNoIGlzIGFsc28gdGhlIHR1cGxlIHR5cGUgdGhhdCB3 ZSdsbApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9p bmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggYWVlYmUwZTBmZi4uNzJjYmYxMjBjNSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAorKysgYi9zcmMvaW5j bHVkZS9leGVjdXRvci9leGVjdXRvci5oCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSAibm9k ZXMvbG9ja29wdGlvbnMuaCIKICNpbmNsdWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCiAjaW5jbHVk ZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9wbGFuY2FjaGUuaCIKIAogCiAv KgpAQCAtMjU2LDYgKzI1NywxNSBAQCBleHRlcm4gdm9pZCBFeGVjRW5kTm9kZShQbGFuU3RhdGUg Km5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1NodXRkb3duTm9kZShQbGFuU3RhdGUgKm5vZGUpOwog ZXh0ZXJuIHZvaWQgRXhlY1NldFR1cGxlQm91bmQoaW50NjQgdHVwbGVzX25lZWRlZCwgUGxhblN0 YXRlICpjaGlsZF9ub2RlKTsKIAorLyoKKyAqIElzIHRoZSBDYWNoZWRQbGFuIGluIGVzX2NhY2hl ZHBsYW4gc3RpbGwgdmFsaWQ/CisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorRXhlY1BsYW5TdGls bFZhbGlkKEVTdGF0ZSAqZXN0YXRlKQoreworCXJldHVybiBlc3RhdGUtPmVzX2NhY2hlZHBsYW4g PT0gTlVMTCA/IHRydWUgOgorCQlDYWNoZWRQbGFuU3RpbGxWYWxpZChlc3RhdGUtPmVzX2NhY2hl ZHBsYW4pOworfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY1Byb2NOb2RlCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oCmluZGV4IGNiNzE0ZjRhMTkuLmIyYTU3NmI3NmQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBA IC02MjMsNiArNjIzLDggQEAgdHlwZWRlZiBzdHJ1Y3QgRVN0YXRlCiAJCQkJCQkJCQkJICogRXhl Y1Jvd01hcmtzLCBvciBOVUxMIGlmIG5vbmUgKi8KIAlMaXN0CSAgICplc19ydGVwZXJtaW5mb3M7 CS8qIExpc3Qgb2YgUlRFUGVybWlzc2lvbkluZm8gKi8KIAlQbGFubmVkU3RtdCAqZXNfcGxhbm5l ZHN0bXQ7CS8qIGxpbmsgdG8gdG9wIG9mIHBsYW4gdHJlZSAqLworCXN0cnVjdCBDYWNoZWRQbGFu ICAqZXNfY2FjaGVkcGxhbjsJLyogQ2FjaGVkUGxhbiBpZiBwbGFubmVkc3RtdCBpcyBmcm9tCisJ CQkJCQkJCQkJICogb25lIG9yIE5VTEwgaWYgbm90ICovCiAJY29uc3QgY2hhciAqZXNfc291cmNl VGV4dDsJLyogU291cmNlIHRleHQgZnJvbSBRdWVyeURlc2MgKi8KIAogCUp1bmtGaWx0ZXIgKmVz X2p1bmtGaWx0ZXI7CS8qIHRvcC1sZXZlbCBqdW5rIGZpbHRlciwgaWYgYW55ICovCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3Bs YW5jYWNoZS5oCmluZGV4IDkxNmU1OWQ5ZmUuLjBhOWUwNDFkNTEgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNo ZS5oCkBAIC0yMjEsNiArMjIxLDIwIEBAIGV4dGVybiBDYWNoZWRQbGFuICpHZXRDYWNoZWRQbGFu KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJCSBQYXJhbUxpc3RJbmZvIGJv dW5kUGFyYW1zLAogCQkJCQkJCQkgUmVzb3VyY2VPd25lciBvd25lciwKIAkJCQkJCQkJIFF1ZXJ5 RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKKworLyoKKyAqIENhY2hlZFBsYW5TdGlsbFZhbGlkCisg KgkJUmV0dXJucyBpZiBhIGNhY2hlZCBnZW5lcmljIHBsYW4gaXMgc3RpbGwgdmFsaWQKKyAqCisg KiBJbnZva2VkIGJ5IHRoZSBleGVjdXRvciBmb3IgZWFjaCByZWxhdGlvbiBsb2NrIGFjcXVpcmVk IGR1cmluZyB0aGUKKyAqIGluaXRpYWxpemF0aW9uIG9mIHRoZSBwbGFuIHRyZWUgd2l0aGluIHRo ZSBDYWNoZWRQbGFuLgorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0NhY2hlZFBsYW5TdGlsbFZh bGlkKENhY2hlZFBsYW4gKmNwbGFuKQoreworCXJldHVybiBjcGxhbi0+aXNfdmFsaWQ7Cit9CisK IGV4dGVybiB2b2lkIFJlbGVhc2VDYWNoZWRQbGFuKENhY2hlZFBsYW4gKnBsYW4sIFJlc291cmNl T3duZXIgb3duZXIpOwogCiBleHRlcm4gYm9vbCBDYWNoZWRQbGFuQWxsb3dzU2ltcGxlVmFsaWRp dHlDaGVjayhDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAotLSAKMi4zNS4zCgo= --00000000000082dd050604ad25e6 Content-Type: application/octet-stream; name="v47-0002-Check-pointer-NULLness-before-cleanup-in-ExecEnd.patch" Content-Disposition: attachment; filename="v47-0002-Check-pointer-NULLness-before-cleanup-in-ExecEnd.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lm7ic0od6 RnJvbSAxM2U0ZDBiOGQzODFjMWQwZTUwN2EwOWUyMzUwMTUwZDRmMWJjNjcxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNiBTZXAgMjAyMyAxNzo1MzoxNiArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ3 IDIvOF0gQ2hlY2sgcG9pbnRlciBOVUxMbmVzcyBiZWZvcmUgY2xlYW51cCBpbiBFeGVjRW5kKgog cm91dGluZXMKCk1hbnkgcm91dGluZXMgYWxyZWFkeSBwZXJmb3JtIHRoaXMgY2hlY2ssIGJ1dCBh IGZldyBpbnN0YW5jZXMgcmVtYWluLgoKQ3VycmVudGx5LCB0aGVzZSBOVUxMbmVzcyBjaGVja3Mg bWlnaHQgc2VlbSByZWR1bmRhbnQgc2luY2UgRXhlY0VuZCoKcm91dGluZXMgb3BlcmF0ZSB1bmRl ciB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoZWlyIG1hdGNoaW5nIEV4ZWNJbml0Kgpyb3V0aW5lIHdv dWxkIGhhdmUgZnVsbHkgZXhlY3V0ZWQsIGVuc3VyaW5nIHBvaW50ZXJzIGFyZSBzZXQuIEhvd2V2 ZXIsCmEgZm9ydGhjb21pbmcgcGF0Y2ggd2lsbCBtb2RpZnkgRXhlY0luaXQqIHJvdXRpbmVzIHRv IHNvbWV0aW1lcyBleGl0CmVhcmx5LCBwb3RlbnRpYWxseSBsZWF2aW5nIHNvbWUgcG9pbnRlcnMg aW4gYW4gdW5kZXRlcm1pbmVkIHN0YXRlLgoKUmV2aWV3ZWQtYnk6IFJvYmVydCBIYWFzCi0tLQog c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgIHwgIDMgKystCiBzcmMv YmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYyAgICAgfCAxMyArKysrKysrLS0tLS0K IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNvcnQuYyB8ICA2ICsrKystLQog c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYyAgICAgICAgIHwgIDEgKwogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMgIHwgIDYgKysrKy0tCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgICAgICAgfCAyNCArKysrKysrKysrKysrKy0t LS0tLS0tCiA2IGZpbGVzIGNoYW5nZWQsIDM1IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKaW5kZXggMmRiMGFj ZmM3Ni4uYzhjMWM5ZDg4ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJp dG1hcEhlYXBzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBz Y2FuLmMKQEAgLTY4MSw3ICs2ODEsOCBAQCBFeGVjRW5kQml0bWFwSGVhcFNjYW4oQml0bWFwSGVh cFNjYW5TdGF0ZSAqbm9kZSkKIAkvKgogCSAqIGNsb3NlIGhlYXAgc2NhbgogCSAqLwotCXRhYmxl X2VuZHNjYW4oc2NhbkRlc2MpOworCWlmIChzY2FuRGVzYyAhPSBOVUxMKQorCQl0YWJsZV9lbmRz Y2FuKHNjYW5EZXNjKTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUZvcmVpZ25zY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9y ZWlnbnNjYW4uYwppbmRleCA3MzkxM2ViYjE4Li4yOThlYTU5YTFlIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlRm9yZWlnbnNjYW4uYwpAQCAtMzAxLDEzICszMDEsMTYgQEAgRXhlY0VuZEZvcmVp Z25TY2FuKEZvcmVpZ25TY2FuU3RhdGUgKm5vZGUpCiAJRVN0YXRlCSAgICplc3RhdGUgPSBub2Rl LT5zcy5wcy5zdGF0ZTsKIAogCS8qIExldCB0aGUgRkRXIHNodXQgZG93biAqLwotCWlmIChwbGFu LT5vcGVyYXRpb24gIT0gQ01EX1NFTEVDVCkKKwlpZiAobm9kZS0+ZmR3cm91dGluZSAhPSBOVUxM KQogCXsKLQkJaWYgKGVzdGF0ZS0+ZXNfZXBxX2FjdGl2ZSA9PSBOVUxMKQotCQkJbm9kZS0+ZmR3 cm91dGluZS0+RW5kRGlyZWN0TW9kaWZ5KG5vZGUpOworCQlpZiAocGxhbi0+b3BlcmF0aW9uICE9 IENNRF9TRUxFQ1QpCisJCXsKKwkJCWlmIChlc3RhdGUtPmVzX2VwcV9hY3RpdmUgPT0gTlVMTCkK KwkJCQlub2RlLT5mZHdyb3V0aW5lLT5FbmREaXJlY3RNb2RpZnkobm9kZSk7CisJCX0KKwkJZWxz ZQorCQkJbm9kZS0+ZmR3cm91dGluZS0+RW5kRm9yZWlnblNjYW4obm9kZSk7CiAJfQotCWVsc2UK LQkJbm9kZS0+ZmR3cm91dGluZS0+RW5kRm9yZWlnblNjYW4obm9kZSk7CiAKIAkvKiBTaHV0IGRv d24gYW55IG91dGVyIHBsYW4uICovCiAJaWYgKG91dGVyUGxhblN0YXRlKG5vZGUpKQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jCmluZGV4IGNkMDk0YTE5MGMuLjU0 NGU2NGRmYWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmNyZW1lbnRh bFNvcnQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5jcmVtZW50YWxTb3J0LmMK QEAgLTEwNzksOCArMTA3OSwxMCBAQCBFeGVjRW5kSW5jcmVtZW50YWxTb3J0KEluY3JlbWVudGFs U29ydFN0YXRlICpub2RlKQogewogCVNPX3ByaW50ZigiRXhlY0VuZEluY3JlbWVudGFsU29ydDog c2h1dHRpbmcgZG93biBzb3J0IG5vZGVcbiIpOwogCi0JRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxl U2xvdChub2RlLT5ncm91cF9waXZvdCk7Ci0JRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChu b2RlLT50cmFuc2Zlcl90dXBsZSk7CisJaWYgKG5vZGUtPmdyb3VwX3Bpdm90ICE9IE5VTEwpCisJ CUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qobm9kZS0+Z3JvdXBfcGl2b3QpOworCWlmIChu b2RlLT50cmFuc2Zlcl90dXBsZSAhPSBOVUxMKQorCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVT bG90KG5vZGUtPnRyYW5zZmVyX3R1cGxlKTsKIAogCS8qCiAJICogUmVsZWFzZSB0dXBsZXNvcnQg cmVzb3VyY2VzLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUu YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMKaW5kZXggOTRiZjQ3OTI4Ny4u ODFmMmFjZGU1ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jCkBAIC0xMDQzLDYgKzEw NDMsNyBAQCBFeGVjRW5kTWVtb2l6ZShNZW1vaXplU3RhdGUgKm5vZGUpCiB7CiAjaWZkZWYgVVNF X0FTU0VSVF9DSEVDS0lORwogCS8qIFZhbGlkYXRlIHRoZSBtZW1vcnkgYWNjb3VudGluZyBjb2Rl IGlzIGNvcnJlY3QgaW4gYXNzZXJ0IGJ1aWxkcy4gKi8KKwlpZiAobm9kZS0+aGFzaHRhYmxlICE9 IE5VTEwpCiAJewogCQlpbnQJCQljb3VudDsKIAkJdWludDY0CQltZW0gPSAwOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uYwppbmRleCBlNzgxMDAzOTM0Li41NGNkNmYy MzQ3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24u YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uYwpAQCAtMjcy LDggKzI3MiwxMCBAQCB2b2lkCiBFeGVjRW5kUmVjdXJzaXZlVW5pb24oUmVjdXJzaXZlVW5pb25T dGF0ZSAqbm9kZSkKIHsKIAkvKiBSZWxlYXNlIHR1cGxlc3RvcmVzICovCi0JdHVwbGVzdG9yZV9l bmQobm9kZS0+d29ya2luZ190YWJsZSk7Ci0JdHVwbGVzdG9yZV9lbmQobm9kZS0+aW50ZXJtZWRp YXRlX3RhYmxlKTsKKwlpZiAobm9kZS0+d29ya2luZ190YWJsZSAhPSBOVUxMKQorCQl0dXBsZXN0 b3JlX2VuZChub2RlLT53b3JraW5nX3RhYmxlKTsKKwlpZiAobm9kZS0+aW50ZXJtZWRpYXRlX3Rh YmxlICE9IE5VTEwpCisJCXR1cGxlc3RvcmVfZW5kKG5vZGUtPmludGVybWVkaWF0ZV90YWJsZSk7 CiAKIAkvKiBmcmVlIHN1YnNpZGlhcnkgc3R1ZmYgaW5jbHVkaW5nIGhhc2h0YWJsZSAqLwogCWlm IChub2RlLT50ZW1wQ29udGV4dCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVXaW5kb3dBZ2cuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYwppbmRl eCA3NzcyNGE2ZGFhLi5mNTE3MDc5OWU0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlV2luZG93QWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0Fn Zy5jCkBAIC0xMzUxLDExICsxMzUxLDE0IEBAIHJlbGVhc2VfcGFydGl0aW9uKFdpbmRvd0FnZ1N0 YXRlICp3aW5zdGF0ZSkKIAkgKiBhbnkgYWdncmVnYXRlIHRlbXAgZGF0YSkuICBXZSBkb24ndCBy ZWx5IG9uIHJldGFpbCBwZnJlZSBiZWNhdXNlIHNvbWUKIAkgKiBhZ2dyZWdhdGVzIG1pZ2h0IGhh dmUgYWxsb2NhdGVkIGRhdGEgd2UgZG9uJ3QgaGF2ZSBkaXJlY3QgcG9pbnRlcnMgdG8uCiAJICov Ci0JTWVtb3J5Q29udGV4dFJlc2V0QW5kRGVsZXRlQ2hpbGRyZW4od2luc3RhdGUtPnBhcnRjb250 ZXh0KTsKLQlNZW1vcnlDb250ZXh0UmVzZXRBbmREZWxldGVDaGlsZHJlbih3aW5zdGF0ZS0+YWdn Y29udGV4dCk7CisJaWYgKHdpbnN0YXRlLT5wYXJ0Y29udGV4dCAhPSBOVUxMKQorCQlNZW1vcnlD b250ZXh0UmVzZXRBbmREZWxldGVDaGlsZHJlbih3aW5zdGF0ZS0+cGFydGNvbnRleHQpOworCWlm ICh3aW5zdGF0ZS0+YWdnY29udGV4dCAhPSBOVUxMKQorCQlNZW1vcnlDb250ZXh0UmVzZXRBbmRE ZWxldGVDaGlsZHJlbih3aW5zdGF0ZS0+YWdnY29udGV4dCk7CiAJZm9yIChpID0gMDsgaSA8IHdp bnN0YXRlLT5udW1hZ2dzOyBpKyspCiAJewotCQlpZiAod2luc3RhdGUtPnBlcmFnZ1tpXS5hZ2dj b250ZXh0ICE9IHdpbnN0YXRlLT5hZ2djb250ZXh0KQorCQlpZiAod2luc3RhdGUtPnBlcmFnZ1tp XS5hZ2djb250ZXh0ICE9IE5VTEwgJiYKKwkJCXdpbnN0YXRlLT5wZXJhZ2dbaV0uYWdnY29udGV4 dCAhPSB3aW5zdGF0ZS0+YWdnY29udGV4dCkKIAkJCU1lbW9yeUNvbnRleHRSZXNldEFuZERlbGV0 ZUNoaWxkcmVuKHdpbnN0YXRlLT5wZXJhZ2dbaV0uYWdnY29udGV4dCk7CiAJfQogCkBAIC0yNjg4 LDE0ICsyNjkxLDE5IEBAIEV4ZWNFbmRXaW5kb3dBZ2coV2luZG93QWdnU3RhdGUgKm5vZGUpCiAK IAlmb3IgKGkgPSAwOyBpIDwgbm9kZS0+bnVtYWdnczsgaSsrKQogCXsKLQkJaWYgKG5vZGUtPnBl cmFnZ1tpXS5hZ2djb250ZXh0ICE9IG5vZGUtPmFnZ2NvbnRleHQpCisJCWlmIChub2RlLT5wZXJh Z2dbaV0uYWdnY29udGV4dCAhPSBOVUxMICYmCisJCQlub2RlLT5wZXJhZ2dbaV0uYWdnY29udGV4 dCAhPSBub2RlLT5hZ2djb250ZXh0KQogCQkJTWVtb3J5Q29udGV4dERlbGV0ZShub2RlLT5wZXJh Z2dbaV0uYWdnY29udGV4dCk7CiAJfQotCU1lbW9yeUNvbnRleHREZWxldGUobm9kZS0+cGFydGNv bnRleHQpOwotCU1lbW9yeUNvbnRleHREZWxldGUobm9kZS0+YWdnY29udGV4dCk7CisJaWYgKG5v ZGUtPnBhcnRjb250ZXh0ICE9IE5VTEwpCisJCU1lbW9yeUNvbnRleHREZWxldGUobm9kZS0+cGFy dGNvbnRleHQpOworCWlmIChub2RlLT5hZ2djb250ZXh0ICE9IE5VTEwpCisJCU1lbW9yeUNvbnRl eHREZWxldGUobm9kZS0+YWdnY29udGV4dCk7CiAKLQlwZnJlZShub2RlLT5wZXJmdW5jKTsKLQlw ZnJlZShub2RlLT5wZXJhZ2cpOworCWlmIChub2RlLT5wZXJmdW5jICE9IE5VTEwpCisJCXBmcmVl KG5vZGUtPnBlcmZ1bmMpOworCWlmIChub2RlLT5wZXJhZ2cgIT0gTlVMTCkKKwkJcGZyZWUobm9k ZS0+cGVyYWdnKTsKIAogCW91dGVyUGxhbiA9IG91dGVyUGxhblN0YXRlKG5vZGUpOwogCUV4ZWNF bmROb2RlKG91dGVyUGxhbik7Ci0tIAoyLjM1LjMKCg== --00000000000082dd050604ad25e6 Content-Type: application/octet-stream; name="v47-0001-Remove-obsolete-executor-cleanup-code.patch" Content-Disposition: attachment; filename="v47-0001-Remove-obsolete-executor-cleanup-code.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lm7ic0of7 RnJvbSBlY2M1MzY4MGQ2ZTY4NWM4YWQxZWZkYjE4YzhkNDMyNzUxYzE0MmRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNiBTZXAgMjAyMyAxNzo1MjozOSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ3 IDEvOF0gUmVtb3ZlIG9ic29sZXRlIGV4ZWN1dG9yIGNsZWFudXAgY29kZQoKVGhpcyBjb21taXQg cmVtb3ZlcyB1bm5lY2Vzc2FyeSBFeGVjRXhwckZyZWVDb250ZXh0KCkgY2FsbHMgaW4gRXhlY0Vu ZCoKcm91dGluZXMgYXMgdGhlIGFjdHVhbCBjbGVhbnVwIGlzIG1hbmFnZWQgYnkgRnJlZUV4ZWN1 dG9yU3RhdGUuIFdpdGgKbm8gcmVtYWluaW5nIGNhbGxlcnMgZm9yIEV4ZWNFeHByRnJlZUNvbnRl eHQoKSwgdGhpcyBjb21taXQgYWxzbwpyZW1vdmVzIHRoZSBmdW5jdGlvbi4KClRoaXMgY29tbWl0 IGFsc28gZHJvcHMgcmVkdW5kYW50IEV4ZWNDbGVhclR1cGxlKCkgY2FsbHMsIGFzCkV4ZWNSZXNl dFR1cGxlVGFibGUoKSBpbiBFeGVjRW5kUGxhbigpIGFscmVhZHkgdGFrZXMgY2FyZSBvZiByZXNl dHRpbmcKYWxsIFR1cGxlVGFibGVTbG90cy4KCkFmdGVyIHRoZXNlIG1vZGlmaWNhdGlvbnMsIHRo ZSBFeGVjRW5kKigpIHJvdXRpbmVzIGZvciBWYWx1ZXNTY2FuLApOYW1lZFR1cGxlc3RvcmVTY2Fu LCBhbmQgV29ya1RhYmxlU2NhbiBiZWNhbWUgcmVkdW5kYW50LiBUaHVzLCB0aGlzCmNvbW1pdCBy ZW1vdmVzIHRoZW0uIFRoZXNlIGNoYW5nZXMgbm90IG9ubHkgb3B0aW1pemUgQ1BVIHVzYWdlIGR1 cmluZwpFeGVjRW5kTm9kZSgpIHByb2Nlc3NpbmcgYnV0IGFsc28gcGF2ZSB0aGUgd2F5IGZvciBh biB1cGNvbWluZyBwYXRjaC4KVGhpcyBmdXR1cmUgcGF0Y2ggYWltcyB0byBhbGxvdyBFeGVjRW5k Tm9kZSgpIHRvIGV4cGVjdCBQbGFuU3RhdGUKdHJlZXMgdGhhdCBhcmUgb25seSBwYXJ0aWFsbHkg aW5pdGlhbGl6ZWQgaW4gc29tZSBjYXNlcy4KClJldmlld2VkLWJ5OiBSb2JlcnQgSGFhcwotLS0K IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jICAgICAgICAgICB8IDE4ICsrKysr LS0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jICAgICAgICAgICAgICB8 IDI2IC0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYyAg ICAgICAgICAgICAgICB8IDEwIC0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRt YXBIZWFwc2Nhbi5jICAgICB8IDEyIC0tLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUJpdG1hcEluZGV4c2Nhbi5jICAgIHwgIDggLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9u b2RlQ3Rlc2Nhbi5jICAgICAgICAgICAgfCAxMiAtLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVDdXN0b20uYyAgICAgICAgICAgICB8ICA3IC0tLS0tCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlRm9yZWlnbnNjYW4uYyAgICAgICAgfCAgOCAtLS0tLS0KIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVGdW5jdGlvbnNjYW4uYyAgICAgICB8IDEyIC0tLS0tLS0tLQogc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jICAgICAgICAgICAgIHwgIDMgLS0tCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYyAgICAgICAgfCAgMyAtLS0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVHcm91cC5jICAgICAgICAgICAgICB8ICA1IC0tLS0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVIYXNoLmMgICAgICAgICAgICAgICB8ICA1IC0tLS0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jICAgICAgICAgICB8IDEyIC0tLS0tLS0tLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jICAgIHwgIDUgLS0tLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYyAgICAgIHwgMTYgLS0tLS0tLS0tLS0t CiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMgICAgICAgICAgfCAxNiAtLS0t LS0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMaW1pdC5jICAgICAgICAgICAgICB8 ICAxIC0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlhbC5jICAgICAgICAgICB8ICA1 IC0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMgICAgICAgICAgICB8ICA5 IC0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYyAgICAgICAgICB8 IDEyIC0tLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgICAg ICAgIHwgMTEgLS0tLS0tLS0KIC4uLi9leGVjdXRvci9ub2RlTmFtZWR0dXBsZXN0b3Jlc2Nhbi5j ICAgICAgICB8IDIyIC0tLS0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVO ZXN0bG9vcC5jICAgICAgICAgICB8IDExIC0tLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9u b2RlUHJvamVjdFNldC5jICAgICAgICAgfCAxMCAtLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlUmVzdWx0LmMgICAgICAgICAgICAgfCAxMCAtLS0tLS0tCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlU2FtcGxlc2Nhbi5jICAgICAgICAgfCAxMiAtLS0tLS0tLS0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgICAgICAgICAgICB8IDEyIC0tLS0tLS0tLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVNldE9wLmMgICAgICAgICAgICAgIHwgIDQgLS0tCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlU29ydC5jICAgICAgICAgICAgICAgfCAgNyAtLS0tLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5jICAgICAgIHwgMTIgLS0tLS0tLS0tCiBz cmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jICAgICAgfCAxMiAtLS0tLS0t LS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYyAgICAgICB8IDEyIC0t LS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYyAgICAgICAgICAgIHwg MTIgLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMgICAgICAgICAg ICAgfCAgNSAtLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVmFsdWVzc2Nhbi5jICAgICAg ICAgfCAyNCAtLS0tLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRv d0FnZy5jICAgICAgICAgIHwgMTcgLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9u b2RlV29ya3RhYmxlc2Nhbi5jICAgICAgfCAyMiAtLS0tLS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjdXRvci5oICAgICAgICAgICAgICAgfCAgMSAtCiAuLi4vZXhlY3V0b3Iv bm9kZU5hbWVkdHVwbGVzdG9yZXNjYW4uaCAgICAgICAgfCAgMSAtCiBzcmMvaW5jbHVkZS9leGVj dXRvci9ub2RlVmFsdWVzc2Nhbi5oICAgICAgICAgfCAgMSAtCiBzcmMvaW5jbHVkZS9leGVjdXRv ci9ub2RlV29ya3RhYmxlc2Nhbi5oICAgICAgfCAgMSAtCiA0MiBmaWxlcyBjaGFuZ2VkLCA2IGlu c2VydGlvbnMoKyksIDQxOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUHJvY25vZGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9k ZS5jCmluZGV4IDRkMjg4YmM4ZDQuLjYwOThjZGNhNjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQ cm9jbm9kZS5jCkBAIC02NjcsMjIgKzY2NywxMCBAQCBFeGVjRW5kTm9kZShQbGFuU3RhdGUgKm5v ZGUpCiAJCQlFeGVjRW5kVGFibGVGdW5jU2NhbigoVGFibGVGdW5jU2NhblN0YXRlICopIG5vZGUp OwogCQkJYnJlYWs7CiAKLQkJY2FzZSBUX1ZhbHVlc1NjYW5TdGF0ZToKLQkJCUV4ZWNFbmRWYWx1 ZXNTY2FuKChWYWx1ZXNTY2FuU3RhdGUgKikgbm9kZSk7Ci0JCQlicmVhazsKLQogCQljYXNlIFRf Q3RlU2NhblN0YXRlOgogCQkJRXhlY0VuZEN0ZVNjYW4oKEN0ZVNjYW5TdGF0ZSAqKSBub2RlKTsK IAkJCWJyZWFrOwogCi0JCWNhc2UgVF9OYW1lZFR1cGxlc3RvcmVTY2FuU3RhdGU6Ci0JCQlFeGVj RW5kTmFtZWRUdXBsZXN0b3JlU2NhbigoTmFtZWRUdXBsZXN0b3JlU2NhblN0YXRlICopIG5vZGUp OwotCQkJYnJlYWs7Ci0KLQkJY2FzZSBUX1dvcmtUYWJsZVNjYW5TdGF0ZToKLQkJCUV4ZWNFbmRX b3JrVGFibGVTY2FuKChXb3JrVGFibGVTY2FuU3RhdGUgKikgbm9kZSk7Ci0JCQlicmVhazsKLQog CQljYXNlIFRfRm9yZWlnblNjYW5TdGF0ZToKIAkJCUV4ZWNFbmRGb3JlaWduU2NhbigoRm9yZWln blNjYW5TdGF0ZSAqKSBub2RlKTsKIAkJCWJyZWFrOwpAQCAtNzU3LDYgKzc0NSwxMiBAQCBFeGVj RW5kTm9kZShQbGFuU3RhdGUgKm5vZGUpCiAJCQlFeGVjRW5kTGltaXQoKExpbWl0U3RhdGUgKikg bm9kZSk7CiAJCQlicmVhazsKIAorCQkvKiBObyBjbGVhbiB1cCBhY3Rpb25zIGZvciB0aGVzZSBu b2Rlcy4gKi8KKwkJY2FzZSBUX1ZhbHVlc1NjYW5TdGF0ZToKKwkJY2FzZSBUX05hbWVkVHVwbGVz dG9yZVNjYW5TdGF0ZToKKwkJY2FzZSBUX1dvcmtUYWJsZVNjYW5TdGF0ZToKKwkJCWJyZWFrOwor CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG5vZGUgdHlwZTogJWQi LCAoaW50KSBub2RlVGFnKG5vZGUpKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMu YwppbmRleCBjMDZiMjI4ODU4Li4xNjcwNGMwYzJmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjVXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMu YwpAQCAtNjM4LDMyICs2MzgsNiBAQCB0bGlzdF9tYXRjaGVzX3R1cGRlc2MoUGxhblN0YXRlICpw cywgTGlzdCAqdGxpc3QsIGludCB2YXJubywgVHVwbGVEZXNjIHR1cGRlc2MpCiAJcmV0dXJuIHRy dWU7CiB9CiAKLS8qIC0tLS0tLS0tLS0tLS0tLS0KLSAqCQlFeGVjRnJlZUV4cHJDb250ZXh0Ci0g KgotICogQSBwbGFuIG5vZGUncyBFeHByQ29udGV4dCBzaG91bGQgYmUgZnJlZWQgZXhwbGljaXRs eSBkdXJpbmcgZXhlY3V0b3IKLSAqIHNodXRkb3duIGJlY2F1c2UgdGhlcmUgbWF5IGJlIHNodXRk b3duIGNhbGxiYWNrcyB0byBjYWxsLiAgKE90aGVyIHJlc291cmNlcwotICogbWFkZSBieSB0aGUg YWJvdmUgcm91dGluZXMsIHN1Y2ggYXMgcHJvamVjdGlvbiBpbmZvLCBkb24ndCBuZWVkIHRvIGJl IGZyZWVkCi0gKiBleHBsaWNpdGx5IGJlY2F1c2UgdGhleSdyZSBqdXN0IG1lbW9yeSBpbiB0aGUg cGVyLXF1ZXJ5IG1lbW9yeSBjb250ZXh0LikKLSAqCi0gKiBIb3dldmVyIC4uLiB0aGVyZSBpcyBu byBwYXJ0aWN1bGFyIG5lZWQgdG8gZG8gaXQgZHVyaW5nIEV4ZWNFbmROb2RlLAotICogYmVjYXVz ZSBGcmVlRXhlY3V0b3JTdGF0ZSB3aWxsIGZyZWUgYW55IHJlbWFpbmluZyBFeHByQ29udGV4dHMg d2l0aGluCi0gKiB0aGUgRVN0YXRlLiAgTGV0dGluZyBGcmVlRXhlY3V0b3JTdGF0ZSBkbyBpdCBh bGxvd3MgdGhlIEV4cHJDb250ZXh0cyB0bwotICogYmUgZnJlZWQgaW4gcmV2ZXJzZSBvcmRlciBv ZiBjcmVhdGlvbiwgcmF0aGVyIHRoYW4gb3JkZXIgb2YgY3JlYXRpb24gYXMKLSAqIHdpbGwgaGFw cGVuIGlmIHdlIGRlbGV0ZSB0aGVtIGhlcmUsIHdoaWNoIHNhdmVzIE8oTl4yKSB3b3JrIGluIHRo ZSBsaXN0Ci0gKiBjbGVhbnVwIGluc2lkZSBGcmVlRXhwckNvbnRleHQuCi0gKiAtLS0tLS0tLS0t LS0tLS0tCi0gKi8KLXZvaWQKLUV4ZWNGcmVlRXhwckNvbnRleHQoUGxhblN0YXRlICpwbGFuc3Rh dGUpCi17Ci0JLyoKLQkgKiBQZXIgYWJvdmUgZGlzY3Vzc2lvbiwgZG9uJ3QgYWN0dWFsbHkgZGVs ZXRlIHRoZSBFeHByQ29udGV4dC4gV2UgZG8KLQkgKiB1bmxpbmsgaXQgZnJvbSB0aGUgcGxhbiBu b2RlLCB0aG91Z2guCi0JICovCi0JcGxhbnN0YXRlLT5wc19FeHByQ29udGV4dCA9IE5VTEw7Ci19 Ci0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogICoJCQkJICBTY2FuIG5vZGUgc3VwcG9ydApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUFnZy5jCmluZGV4IDQ2OGRiOTRmZTUuLmYxNTRmMjg5MDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdn LmMKQEAgLTQzNTcsMTYgKzQzNTcsNiBAQCBFeGVjRW5kQWdnKEFnZ1N0YXRlICpub2RlKQogCWlm IChub2RlLT5oYXNoY29udGV4dCkKIAkJUmVTY2FuRXhwckNvbnRleHQobm9kZS0+aGFzaGNvbnRl eHQpOwogCi0JLyoKLQkgKiBXZSBkb24ndCBhY3R1YWxseSBmcmVlIGFueSBFeHByQ29udGV4dHMg aGVyZSAoc2VlIGNvbW1lbnQgaW4KLQkgKiBFeGVjRnJlZUV4cHJDb250ZXh0KSwganVzdCB1bmxp bmtpbmcgdGhlIG91dHB1dCBvbmUgZnJvbSB0aGUgcGxhbiBub2RlCi0JICogc3VmZmljZXMuCi0J ICovCi0JRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+c3MucHMpOwotCi0JLyogY2xlYW4gdXAg dHVwbGUgdGFibGUgKi8KLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90 KTsKLQogCW91dGVyUGxhbiA9IG91dGVyUGxhblN0YXRlKG5vZGUpOwogCUV4ZWNFbmROb2RlKG91 dGVyUGxhbik7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFw SGVhcHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCmlu ZGV4IGYzNWRmMGI4YmYuLjJkYjBhY2ZjNzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVC aXRtYXBIZWFwc2Nhbi5jCkBAIC02NTUsMTggKzY1NSw2IEBAIEV4ZWNFbmRCaXRtYXBIZWFwU2Nh bihCaXRtYXBIZWFwU2NhblN0YXRlICpub2RlKQogCSAqLwogCXNjYW5EZXNjID0gbm9kZS0+c3Mu c3NfY3VycmVudFNjYW5EZXNjOwogCi0JLyoKLQkgKiBGcmVlIHRoZSBleHByY29udGV4dAotCSAq LwotCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKLQotCS8qCi0JICogY2xlYXIg b3V0IHR1cGxlIHRhYmxlIHNsb3RzCi0JICovCi0JaWYgKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1 cGxlU2xvdCkKLQkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90 KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKLQogCS8qCiAJ ICogY2xvc2UgZG93biBzdWJwbGFucwogCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJp dG1hcEluZGV4c2Nhbi5jCmluZGV4IDgzZWM5ZWRlODkuLjdjZjg1MzJiYzkgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMKQEAgLTE4NCwxNCArMTg0LDYgQEAg RXhlY0VuZEJpdG1hcEluZGV4U2NhbihCaXRtYXBJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAlpbmRl eFJlbGF0aW9uRGVzYyA9IG5vZGUtPmJpc3NfUmVsYXRpb25EZXNjOwogCWluZGV4U2NhbkRlc2Mg PSBub2RlLT5iaXNzX1NjYW5EZXNjOwogCi0JLyoKLQkgKiBGcmVlIHRoZSBleHByY29udGV4dCAu Li4gbm93IGRlYWQgY29kZSwgc2VlIEV4ZWNGcmVlRXhwckNvbnRleHQKLQkgKi8KLSNpZmRlZiBO T1RfVVNFRAotCWlmIChub2RlLT5iaXNzX1J1bnRpbWVDb250ZXh0KQotCQlGcmVlRXhwckNvbnRl eHQobm9kZS0+Ymlzc19SdW50aW1lQ29udGV4dCwgdHJ1ZSk7Ci0jZW5kaWYKLQogCS8qCiAJICog Y2xvc2UgdGhlIGluZGV4IHJlbGF0aW9uIChuby1vcCBpZiB3ZSBkaWRuJ3Qgb3BlbiBpdCkKIAkg Ki8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVDdGVzY2FuLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlQ3Rlc2Nhbi5jCmluZGV4IGNjNGM0MjQzZTIuLmEwYzBjNGJl MzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVDdGVzY2FuLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN0ZXNjYW4uYwpAQCAtMjg3LDE4ICsyODcsNiBAQCBF eGVjSW5pdEN0ZVNjYW4oQ3RlU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3Mp CiB2b2lkCiBFeGVjRW5kQ3RlU2NhbihDdGVTY2FuU3RhdGUgKm5vZGUpCiB7Ci0JLyoKLQkgKiBG cmVlIGV4cHJjb250ZXh0Ci0JICovCi0JRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+c3MucHMp OwotCi0JLyoKLQkgKiBjbGVhbiBvdXQgdGhlIHR1cGxlIHRhYmxlCi0JICovCi0JaWYgKG5vZGUt PnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKLQkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMu cHNfUmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVw bGVTbG90KTsKLQogCS8qCiAJICogSWYgSSBhbSB0aGUgbGVhZGVyLCBmcmVlIHRoZSB0dXBsZXN0 b3JlLgogCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN1c3RvbS5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN1c3RvbS5jCmluZGV4IGJkNDJjNjViMjkuLjI4 YjViYjkzNTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVDdXN0b20uYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMKQEAgLTEyOSwxMyArMTI5LDYg QEAgRXhlY0VuZEN1c3RvbVNjYW4oQ3VzdG9tU2NhblN0YXRlICpub2RlKQogewogCUFzc2VydChu b2RlLT5tZXRob2RzLT5FbmRDdXN0b21TY2FuICE9IE5VTEwpOwogCW5vZGUtPm1ldGhvZHMtPkVu ZEN1c3RvbVNjYW4obm9kZSk7Ci0KLQkvKiBGcmVlIHRoZSBleHByY29udGV4dCAqLwotCUV4ZWNG cmVlRXhwckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKLQotCS8qIENsZWFuIG91dCB0aGUgdHVwbGUg dGFibGUgKi8KLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3Qp OwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwogfQogCiB2b2lk CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5jCmluZGV4IGMyMTM5YWNjYTAuLjcz OTEzZWJiMTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nh bi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5jCkBAIC0zMTIs MTQgKzMxMiw2IEBAIEV4ZWNFbmRGb3JlaWduU2NhbihGb3JlaWduU2NhblN0YXRlICpub2RlKQog CS8qIFNodXQgZG93biBhbnkgb3V0ZXIgcGxhbi4gKi8KIAlpZiAob3V0ZXJQbGFuU3RhdGUobm9k ZSkpCiAJCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKLQotCS8qIEZyZWUgdGhl IGV4cHJjb250ZXh0ICovCi0JRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+c3MucHMpOwotCi0J LyogY2xlYW4gb3V0IHRoZSB0dXBsZSB0YWJsZSAqLwotCWlmIChub2RlLT5zcy5wcy5wc19SZXN1 bHRUdXBsZVNsb3QpCi0JCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxl U2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CiB9CiAK IC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGdW5jdGlv bnNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGdW5jdGlvbnNjYW4uYwppbmRleCBk ZDA2ZWY4YWVlLi5hNDljMWEyYzg1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlRnVuY3Rpb25zY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZ1bmN0aW9u c2Nhbi5jCkBAIC01MjMsMTggKzUyMyw2IEBAIEV4ZWNFbmRGdW5jdGlvblNjYW4oRnVuY3Rpb25T Y2FuU3RhdGUgKm5vZGUpCiB7CiAJaW50CQkJaTsKIAotCS8qCi0JICogRnJlZSB0aGUgZXhwcmNv bnRleHQKLQkgKi8KLQlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5zcy5wcyk7Ci0KLQkvKgot CSAqIGNsZWFuIG91dCB0aGUgdHVwbGUgdGFibGUKLQkgKi8KLQlpZiAobm9kZS0+c3MucHMucHNf UmVzdWx0VHVwbGVTbG90KQotCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1bHRU dXBsZVNsb3QpOwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwot CiAJLyoKIAkgKiBSZWxlYXNlIHNsb3RzIGFuZCB0dXBsZXN0b3JlIHJlc291cmNlcwogCSAqLwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jCmluZGV4IDMwN2ZjMTBlZWEuLmJiMjUwMGE0NjkgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKQEAgLTI1MCw5ICsyNTAsNiBAQCBFeGVjRW5kR2F0 aGVyKEdhdGhlclN0YXRlICpub2RlKQogewogCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5v ZGUpKTsJLyogbGV0IGNoaWxkcmVuIGNsZWFuIHVwIGZpcnN0ICovCiAJRXhlY1NodXRkb3duR2F0 aGVyKG5vZGUpOwotCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnBzKTsKLQlpZiAobm9kZS0+ cHMucHNfUmVzdWx0VHVwbGVTbG90KQotCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5wcy5wc19SZXN1 bHRUdXBsZVNsb3QpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUdhdGhlck1lcmdlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVyZ2Uu YwppbmRleCA5ZDVlMWE0NmU5Li43YTcxYTU4NTA5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl R2F0aGVyTWVyZ2UuYwpAQCAtMjkwLDkgKzI5MCw2IEBAIEV4ZWNFbmRHYXRoZXJNZXJnZShHYXRo ZXJNZXJnZVN0YXRlICpub2RlKQogewogCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUp KTsJLyogbGV0IGNoaWxkcmVuIGNsZWFuIHVwIGZpcnN0ICovCiAJRXhlY1NodXRkb3duR2F0aGVy TWVyZ2Uobm9kZSk7Ci0JRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+cHMpOwotCWlmIChub2Rl LT5wcy5wc19SZXN1bHRUdXBsZVNsb3QpCi0JCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnBzLnBzX1Jl c3VsdFR1cGxlU2xvdCk7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVHcm91cC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMK aW5kZXggMjVhMTYxODk1Mi4uOGM2NTBmMGU0NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUdyb3VwLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMK QEAgLTIyOCwxMSArMjI4LDYgQEAgRXhlY0VuZEdyb3VwKEdyb3VwU3RhdGUgKm5vZGUpCiB7CiAJ UGxhblN0YXRlICAqb3V0ZXJQbGFuOwogCi0JRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+c3Mu cHMpOwotCi0JLyogY2xlYW4gdXAgdHVwbGUgdGFibGUgKi8KLQlFeGVjQ2xlYXJUdXBsZShub2Rl LT5zcy5zc19TY2FuVHVwbGVTbG90KTsKLQogCW91dGVyUGxhbiA9IG91dGVyUGxhblN0YXRlKG5v ZGUpOwogCUV4ZWNFbmROb2RlKG91dGVyUGxhbik7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlSGFzaC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2guYwpp bmRleCA4YjVjMzViODJiLi5lNzJmMDk4NmMyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlSGFzaC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMKQEAg LTQxNSwxMSArNDE1LDYgQEAgRXhlY0VuZEhhc2goSGFzaFN0YXRlICpub2RlKQogewogCVBsYW5T dGF0ZSAgKm91dGVyUGxhbjsKIAotCS8qCi0JICogZnJlZSBleHByY29udGV4dAotCSAqLwotCUV4 ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnBzKTsKLQogCS8qCiAJICogc2h1dCBkb3duIHRoZSBz dWJwbGFuCiAJICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaGpv aW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jCmluZGV4IDk4MDc0NjEy OGIuLmFlYTQ0YTlkNTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNo am9pbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jCkBAIC04Njcs MTggKzg2Nyw2IEBAIEV4ZWNFbmRIYXNoSm9pbihIYXNoSm9pblN0YXRlICpub2RlKQogCQlub2Rl LT5oal9IYXNoVGFibGUgPSBOVUxMOwogCX0KIAotCS8qCi0JICogRnJlZSB0aGUgZXhwcmNvbnRl eHQKLQkgKi8KLQlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5qcy5wcyk7Ci0KLQkvKgotCSAq IGNsZWFuIG91dCB0aGUgdHVwbGUgdGFibGUKLQkgKi8KLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5q cy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPmhqX091dGVy VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5oal9IYXNoVHVwbGVTbG90KTsKLQog CS8qCiAJICogY2xlYW4gdXAgc3VidHJlZXMKIAkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNvcnQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVJbmNyZW1lbnRhbFNvcnQuYwppbmRleCA3NjgzZTMzNDFjLi5jZDA5NGExOTBjIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5jcmVtZW50YWxTb3J0LmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jCkBAIC0xMDc5LDExICsxMDc5 LDYgQEAgRXhlY0VuZEluY3JlbWVudGFsU29ydChJbmNyZW1lbnRhbFNvcnRTdGF0ZSAqbm9kZSkK IHsKIAlTT19wcmludGYoIkV4ZWNFbmRJbmNyZW1lbnRhbFNvcnQ6IHNodXR0aW5nIGRvd24gc29y dCBub2RlXG4iKTsKIAotCS8qIGNsZWFuIG91dCB0aGUgc2NhbiB0dXBsZSAqLwotCUV4ZWNDbGVh clR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwotCS8qIG11c3QgZHJvcCBwb2ludGVy IHRvIHNvcnQgcmVzdWx0IHR1cGxlICovCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNf UmVzdWx0VHVwbGVTbG90KTsKLQkvKiBtdXN0IGRyb3Agc3RhbmRhbG9uZSB0dXBsZSBzbG90cyBm cm9tIG91dGVyIG5vZGUgKi8KIAlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KG5vZGUtPmdy b3VwX3Bpdm90KTsKIAlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KG5vZGUtPnRyYW5zZmVy X3R1cGxlKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25s eXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKaW5kZXgg MGI0M2E5Yjk2OS4uZjFkYjM1NjY1YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUluZGV4b25seXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhv bmx5c2Nhbi5jCkBAIC0zODAsMjIgKzM4MCw2IEBAIEV4ZWNFbmRJbmRleE9ubHlTY2FuKEluZGV4 T25seVNjYW5TdGF0ZSAqbm9kZSkKIAkJbm9kZS0+aW9zc19WTUJ1ZmZlciA9IEludmFsaWRCdWZm ZXI7CiAJfQogCi0JLyoKLQkgKiBGcmVlIHRoZSBleHByY29udGV4dChzKSAuLi4gbm93IGRlYWQg Y29kZSwgc2VlIEV4ZWNGcmVlRXhwckNvbnRleHQKLQkgKi8KLSNpZmRlZiBOT1RfVVNFRAotCUV4 ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKLQlpZiAobm9kZS0+aW9zc19SdW50aW1l Q29udGV4dCkKLQkJRnJlZUV4cHJDb250ZXh0KG5vZGUtPmlvc3NfUnVudGltZUNvbnRleHQsIHRy dWUpOwotI2VuZGlmCi0KLQkvKgotCSAqIGNsZWFyIG91dCB0dXBsZSB0YWJsZSBzbG90cwotCSAq LwotCWlmIChub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpCi0JCUV4ZWNDbGVhclR1cGxl KG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+ c3Muc3NfU2NhblR1cGxlU2xvdCk7Ci0KIAkvKgogCSAqIGNsb3NlIHRoZSBpbmRleCByZWxhdGlv biAobm8tb3AgaWYgd2UgZGlkbid0IG9wZW4gaXQpCiAJICovCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SW5kZXhzY2FuLmMKaW5kZXggNDU0MGM3NzgxZC4uMTRiOWMwMDIxNyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVJbmRleHNjYW4uYwpAQCAtNzk0LDIyICs3OTQsNiBAQCBFeGVjRW5kSW5kZXhTY2Fu KEluZGV4U2NhblN0YXRlICpub2RlKQogCWluZGV4UmVsYXRpb25EZXNjID0gbm9kZS0+aXNzX1Jl bGF0aW9uRGVzYzsKIAlpbmRleFNjYW5EZXNjID0gbm9kZS0+aXNzX1NjYW5EZXNjOwogCi0JLyoK LQkgKiBGcmVlIHRoZSBleHByY29udGV4dChzKSAuLi4gbm93IGRlYWQgY29kZSwgc2VlIEV4ZWNG cmVlRXhwckNvbnRleHQKLQkgKi8KLSNpZmRlZiBOT1RfVVNFRAotCUV4ZWNGcmVlRXhwckNvbnRl eHQoJm5vZGUtPnNzLnBzKTsKLQlpZiAobm9kZS0+aXNzX1J1bnRpbWVDb250ZXh0KQotCQlGcmVl RXhwckNvbnRleHQobm9kZS0+aXNzX1J1bnRpbWVDb250ZXh0LCB0cnVlKTsKLSNlbmRpZgotCi0J LyoKLQkgKiBjbGVhciBvdXQgdHVwbGUgdGFibGUgc2xvdHMKLQkgKi8KLQlpZiAobm9kZS0+c3Mu cHMucHNfUmVzdWx0VHVwbGVTbG90KQotCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19S ZXN1bHRUdXBsZVNsb3QpOwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNs b3QpOwotCiAJLyoKIAkgKiBjbG9zZSB0aGUgaW5kZXggcmVsYXRpb24gKG5vLW9wIGlmIHdlIGRp ZG4ndCBvcGVuIGl0KQogCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUxpbWl0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwppbmRleCA0MjVmYmZj NDA1Li41NjU0MTU4ZTNlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGlt aXQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwpAQCAtNTM0LDcgKzUz NCw2IEBAIEV4ZWNJbml0TGltaXQoTGltaXQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZs YWdzKQogdm9pZAogRXhlY0VuZExpbWl0KExpbWl0U3RhdGUgKm5vZGUpCiB7Ci0JRXhlY0ZyZWVF eHByQ29udGV4dCgmbm9kZS0+cHMpOwogCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUp KTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1hdGVyaWFsLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYwppbmRleCAwOTYzMjY3OGIwLi43 NTNlYTI4OTE1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYwpAQCAtMjM5LDExICsy MzksNiBAQCBFeGVjSW5pdE1hdGVyaWFsKE1hdGVyaWFsICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncykKIHZvaWQKIEV4ZWNFbmRNYXRlcmlhbChNYXRlcmlhbFN0YXRlICpub2RlKQog ewotCS8qCi0JICogY2xlYW4gb3V0IHRoZSB0dXBsZSB0YWJsZQotCSAqLwotCUV4ZWNDbGVhclR1 cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwotCiAJLyoKIAkgKiBSZWxlYXNlIHR1cGxl c3RvcmUgcmVzb3VyY2VzCiAJICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTWVtb2l6ZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYwppbmRleCA0 ZjA0MjY5ZTI2Li45NGJmNDc5Mjg3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTWVtb2l6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMKQEAg LTEwOTEsMTUgKzEwOTEsNiBAQCBFeGVjRW5kTWVtb2l6ZShNZW1vaXplU3RhdGUgKm5vZGUpCiAJ LyogUmVtb3ZlIHRoZSBjYWNoZSBjb250ZXh0ICovCiAJTWVtb3J5Q29udGV4dERlbGV0ZShub2Rl LT50YWJsZUNvbnRleHQpOwogCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxl U2xvdCk7Ci0JLyogbXVzdCBkcm9wIHBvaW50ZXIgdG8gY2FjaGUgcmVzdWx0IHR1cGxlICovCi0J RXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQotCS8qCi0J ICogZnJlZSBleHByY29udGV4dAotCSAqLwotCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnNz LnBzKTsKLQogCS8qCiAJICogc2h1dCBkb3duIHRoZSBzdWJwbGFuCiAJICovCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTWVyZ2Vqb2luLmMKaW5kZXggMDBmOTZkMDQ1ZS4uNjQ4ZmRkOWE1ZiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYwpAQCAtMTY0MiwxOCArMTY0Miw2IEBAIEV4ZWNF bmRNZXJnZUpvaW4oTWVyZ2VKb2luU3RhdGUgKm5vZGUpCiB7CiAJTUoxX3ByaW50ZigiRXhlY0Vu ZE1lcmdlSm9pbjogJXNcbiIsCiAJCQkgICAiZW5kaW5nIG5vZGUgcHJvY2Vzc2luZyIpOwotCi0J LyoKLQkgKiBGcmVlIHRoZSBleHByY29udGV4dAotCSAqLwotCUV4ZWNGcmVlRXhwckNvbnRleHQo Jm5vZGUtPmpzLnBzKTsKLQotCS8qCi0JICogY2xlYW4gb3V0IHRoZSB0dXBsZSB0YWJsZQotCSAq LwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPmpzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0JRXhl Y0NsZWFyVHVwbGUobm9kZS0+bWpfTWFya2VkVHVwbGVTbG90KTsKLQogCS8qCiAJICogc2h1dCBk b3duIHRoZSBzdWJwbGFucwogCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZU1vZGlmeVRhYmxlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUu YwppbmRleCA1MDA1ZDhjMGQxLi5kMjFhMTc4YWQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TW9kaWZ5VGFibGUuYwpAQCAtNDQ0NiwxNyArNDQ0Niw2IEBAIEV4ZWNFbmRNb2RpZnlUYWJsZShN b2RpZnlUYWJsZVN0YXRlICpub2RlKQogCQkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChu b2RlLT5tdF9yb290X3R1cGxlX3Nsb3QpOwogCX0KIAotCS8qCi0JICogRnJlZSB0aGUgZXhwcmNv bnRleHQKLQkgKi8KLQlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5wcyk7Ci0KLQkvKgotCSAq IGNsZWFuIG91dCB0aGUgdHVwbGUgdGFibGUKLQkgKi8KLQlpZiAobm9kZS0+cHMucHNfUmVzdWx0 VHVwbGVTbG90KQotCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5wcy5wc19SZXN1bHRUdXBsZVNsb3Qp OwotCiAJLyoKIAkgKiBUZXJtaW5hdGUgRVBRIGV4ZWN1dGlvbiBpZiBhY3RpdmUKIAkgKi8KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOYW1lZHR1cGxlc3RvcmVzY2FuLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmFtZWR0dXBsZXN0b3Jlc2Nhbi5jCmluZGV4IDQ2 ODMyYWQ4MmYuLjM1NDdkYzJiMTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVOYW1lZHR1cGxlc3RvcmVzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5h bWVkdHVwbGVzdG9yZXNjYW4uYwpAQCAtMTU1LDI4ICsxNTUsNiBAQCBFeGVjSW5pdE5hbWVkVHVw bGVzdG9yZVNjYW4oTmFtZWRUdXBsZXN0b3JlU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZwogCXJldHVybiBzY2Fuc3RhdGU7CiB9CiAKLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqCQlFeGVjRW5k TmFtZWRUdXBsZXN0b3JlU2NhbgotICoKLSAqCQlmcmVlcyBhbnkgc3RvcmFnZSBhbGxvY2F0ZWQg dGhyb3VnaCBDIHJvdXRpbmVzLgotICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICovCi12b2lkCi1FeGVjRW5kTmFtZWRU dXBsZXN0b3JlU2NhbihOYW1lZFR1cGxlc3RvcmVTY2FuU3RhdGUgKm5vZGUpCi17Ci0JLyoKLQkg KiBGcmVlIGV4cHJjb250ZXh0Ci0JICovCi0JRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+c3Mu cHMpOwotCi0JLyoKLQkgKiBjbGVhbiBvdXQgdGhlIHR1cGxlIHRhYmxlCi0JICovCi0JaWYgKG5v ZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKLQkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Mu cHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2Fu VHVwbGVTbG90KTsKLX0KLQogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4ZWNSZVNjYW5OYW1lZFR1cGxlc3Rv cmVTY2FuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29w LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmVzdGxvb3AuYwppbmRleCBiM2Q1MmU2OWVj Li5mYzhmODMzZDhiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmVzdGxv b3AuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmVzdGxvb3AuYwpAQCAtMzYzLDE3 ICszNjMsNiBAQCBFeGVjRW5kTmVzdExvb3AoTmVzdExvb3BTdGF0ZSAqbm9kZSkKIHsKIAlOTDFf cHJpbnRmKCJFeGVjRW5kTmVzdExvb3A6ICVzXG4iLAogCQkJICAgImVuZGluZyBub2RlIHByb2Nl c3NpbmciKTsKLQotCS8qCi0JICogRnJlZSB0aGUgZXhwcmNvbnRleHQKLQkgKi8KLQlFeGVjRnJl ZUV4cHJDb250ZXh0KCZub2RlLT5qcy5wcyk7Ci0KLQkvKgotCSAqIGNsZWFuIG91dCB0aGUgdHVw bGUgdGFibGUKLQkgKi8KLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5qcy5wcy5wc19SZXN1bHRUdXBs ZVNsb3QpOwotCiAJLyoKIAkgKiBjbG9zZSBkb3duIHN1YnBsYW5zCiAJICovCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVByb2plY3RTZXQuYwppbmRleCBmNmZmM2RjNDRjLi5iNGJiZGM4OWIxIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0LmMKQEAgLTMyMCwxNiArMzIwLDYgQEAgRXhl Y0luaXRQcm9qZWN0U2V0KFByb2plY3RTZXQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZs YWdzKQogdm9pZAogRXhlY0VuZFByb2plY3RTZXQoUHJvamVjdFNldFN0YXRlICpub2RlKQogewot CS8qCi0JICogRnJlZSB0aGUgZXhwcmNvbnRleHQKLQkgKi8KLQlFeGVjRnJlZUV4cHJDb250ZXh0 KCZub2RlLT5wcyk7Ci0KLQkvKgotCSAqIGNsZWFuIG91dCB0aGUgdHVwbGUgdGFibGUKLQkgKi8K LQlFeGVjQ2xlYXJUdXBsZShub2RlLT5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwotCiAJLyoKIAkg KiBzaHV0IGRvd24gc3VicGxhbnMKIAkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVSZXN1bHQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYwppbmRl eCA0MjE5NzEyZDMwLi5lOWY1NzMyZjMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlUmVzdWx0LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jCkBA IC0yNDAsMTYgKzI0MCw2IEBAIEV4ZWNJbml0UmVzdWx0KFJlc3VsdCAqbm9kZSwgRVN0YXRlICpl c3RhdGUsIGludCBlZmxhZ3MpCiB2b2lkCiBFeGVjRW5kUmVzdWx0KFJlc3VsdFN0YXRlICpub2Rl KQogewotCS8qCi0JICogRnJlZSB0aGUgZXhwcmNvbnRleHQKLQkgKi8KLQlFeGVjRnJlZUV4cHJD b250ZXh0KCZub2RlLT5wcyk7Ci0KLQkvKgotCSAqIGNsZWFuIG91dCB0aGUgdHVwbGUgdGFibGUK LQkgKi8KLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwotCiAJ LyoKIAkgKiBzaHV0IGRvd24gc3VicGxhbnMKIAkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVTYW1wbGVzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Ft cGxlc2Nhbi5jCmluZGV4IGQ3ZTIyYjFkYmIuLjQxYzFlYTM3YWQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVTYW1wbGVzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVNhbXBsZXNjYW4uYwpAQCAtMTg4LDE4ICsxODgsNiBAQCBFeGVjRW5kU2FtcGxlU2Nh bihTYW1wbGVTY2FuU3RhdGUgKm5vZGUpCiAJaWYgKG5vZGUtPnRzbXJvdXRpbmUtPkVuZFNhbXBs ZVNjYW4pCiAJCW5vZGUtPnRzbXJvdXRpbmUtPkVuZFNhbXBsZVNjYW4obm9kZSk7CiAKLQkvKgot CSAqIEZyZWUgdGhlIGV4cHJjb250ZXh0Ci0JICovCi0JRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9k ZS0+c3MucHMpOwotCi0JLyoKLQkgKiBjbGVhbiBvdXQgdGhlIHR1cGxlIHRhYmxlCi0JICovCi0J aWYgKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKLQkJRXhlY0NsZWFyVHVwbGUobm9k ZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5z c19TY2FuVHVwbGVTbG90KTsKLQogCS8qCiAJICogY2xvc2UgaGVhcCBzY2FuCiAJICovCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwppbmRleCA0ZGEwZjI4ZjdiLi40OWE1OTMzYWZmIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKQEAgLTE5MCwxOCArMTkwLDYgQEAgRXhlY0VuZFNl cVNjYW4oU2VxU2NhblN0YXRlICpub2RlKQogCSAqLwogCXNjYW5EZXNjID0gbm9kZS0+c3Muc3Nf Y3VycmVudFNjYW5EZXNjOwogCi0JLyoKLQkgKiBGcmVlIHRoZSBleHByY29udGV4dAotCSAqLwot CUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKLQotCS8qCi0JICogY2xlYW4gb3V0 IHRoZSB0dXBsZSB0YWJsZQotCSAqLwotCWlmIChub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNs b3QpCi0JCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0J RXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7Ci0KIAkvKgogCSAqIGNs b3NlIGhlYXAgc2NhbgogCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVNldE9wLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYwppbmRleCA0YmMyNDA2 Yjg5Li45OGMxYjg0ZDQzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0 T3AuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYwpAQCAtNTgyLDEzICs1 ODIsOSBAQCBFeGVjSW5pdFNldE9wKFNldE9wICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVm bGFncykKIHZvaWQKIEV4ZWNFbmRTZXRPcChTZXRPcFN0YXRlICpub2RlKQogewotCS8qIGNsZWFu IHVwIHR1cGxlIHRhYmxlICovCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+cHMucHNfUmVzdWx0VHVw bGVTbG90KTsKLQogCS8qIGZyZWUgc3Vic2lkaWFyeSBzdHVmZiBpbmNsdWRpbmcgaGFzaHRhYmxl ICovCiAJaWYgKG5vZGUtPnRhYmxlQ29udGV4dCkKIAkJTWVtb3J5Q29udGV4dERlbGV0ZShub2Rl LT50YWJsZUNvbnRleHQpOwotCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnBzKTsKIAogCUV4 ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU29ydC5j CmluZGV4IGM2YzcyYzZlNjcuLmVlYTdmMmFlMTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVTb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYwpA QCAtMzAzLDEzICszMDMsNiBAQCBFeGVjRW5kU29ydChTb3J0U3RhdGUgKm5vZGUpCiAJU08xX3By aW50ZigiRXhlY0VuZFNvcnQ6ICVzXG4iLAogCQkJICAgInNodXR0aW5nIGRvd24gc29ydCBub2Rl Iik7CiAKLQkvKgotCSAqIGNsZWFuIG91dCB0aGUgdHVwbGUgdGFibGUKLQkgKi8KLQlFeGVjQ2xl YXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKLQkvKiBtdXN0IGRyb3AgcG9pbnRl ciB0byBzb3J0IHJlc3VsdCB0dXBsZSAqLwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBz X1Jlc3VsdFR1cGxlU2xvdCk7Ci0KIAkvKgogCSAqIFJlbGVhc2UgdHVwbGVzb3J0IHJlc291cmNl cwogCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nh bi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5jCmluZGV4IDQyNDcx YmZjMDQuLjFlZTYyOTU2NjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVT dWJxdWVyeXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2Fu LmMKQEAgLTE2NywxOCArMTY3LDYgQEAgRXhlY0luaXRTdWJxdWVyeVNjYW4oU3VicXVlcnlTY2Fu ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIHZvaWQKIEV4ZWNFbmRTdWJxdWVy eVNjYW4oU3VicXVlcnlTY2FuU3RhdGUgKm5vZGUpCiB7Ci0JLyoKLQkgKiBGcmVlIHRoZSBleHBy Y29udGV4dAotCSAqLwotCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKLQotCS8q Ci0JICogY2xlYW4gb3V0IHRoZSB1cHBlciB0dXBsZSB0YWJsZQotCSAqLwotCWlmIChub2RlLT5z cy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpCi0JCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBz X1Jlc3VsdFR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxl U2xvdCk7Ci0KIAkvKgogCSAqIGNsb3NlIGRvd24gc3VicXVlcnkKIAkgKi8KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUYWJsZUZ1bmNzY2FuLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jCmluZGV4IDc5MWNiZDIzNzIuLmE2MGRjZDQ5NDMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUYWJsZUZ1bmNzY2FuLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRhYmxlRnVuY3NjYW4uYwpAQCAtMjEzLDE4ICsy MTMsNiBAQCBFeGVjSW5pdFRhYmxlRnVuY1NjYW4oVGFibGVGdW5jU2NhbiAqbm9kZSwgRVN0YXRl ICplc3RhdGUsIGludCBlZmxhZ3MpCiB2b2lkCiBFeGVjRW5kVGFibGVGdW5jU2NhbihUYWJsZUZ1 bmNTY2FuU3RhdGUgKm5vZGUpCiB7Ci0JLyoKLQkgKiBGcmVlIHRoZSBleHByY29udGV4dAotCSAq LwotCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKLQotCS8qCi0JICogY2xlYW4g b3V0IHRoZSB0dXBsZSB0YWJsZQotCSAqLwotCWlmIChub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBs ZVNsb3QpCi0JCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7 Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7Ci0KIAkvKgogCSAq IFJlbGVhc2UgdHVwbGVzdG9yZSByZXNvdXJjZXMKIAkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVUaWRyYW5nZXNjYW4uYwppbmRleCAyMTI0YzU1ZWY1Li5kYTYyMmQzZjVmIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jCkBAIC0zMzEsMTggKzMzMSw2IEBAIEV4ZWNF bmRUaWRSYW5nZVNjYW4oVGlkUmFuZ2VTY2FuU3RhdGUgKm5vZGUpCiAKIAlpZiAoc2NhbiAhPSBO VUxMKQogCQl0YWJsZV9lbmRzY2FuKHNjYW4pOwotCi0JLyoKLQkgKiBGcmVlIHRoZSBleHByY29u dGV4dAotCSAqLwotCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKLQotCS8qCi0J ICogY2xlYXIgb3V0IHR1cGxlIHRhYmxlIHNsb3RzCi0JICovCi0JaWYgKG5vZGUtPnNzLnBzLnBz X1Jlc3VsdFR1cGxlU2xvdCkKLQkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0 VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsK IH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRp ZHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2FuLmMKaW5kZXggODYyYmQw MzMwYi4uMTUwNTUwNzdkMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRp ZHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jCkBAIC00NzIs MTggKzQ3Miw2IEBAIEV4ZWNFbmRUaWRTY2FuKFRpZFNjYW5TdGF0ZSAqbm9kZSkKIHsKIAlpZiAo bm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjKQogCQl0YWJsZV9lbmRzY2FuKG5vZGUtPnNzLnNz X2N1cnJlbnRTY2FuRGVzYyk7Ci0KLQkvKgotCSAqIEZyZWUgdGhlIGV4cHJjb250ZXh0Ci0JICov Ci0JRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+c3MucHMpOwotCi0JLyoKLQkgKiBjbGVhciBv dXQgdHVwbGUgdGFibGUgc2xvdHMKLQkgKi8KLQlpZiAobm9kZS0+c3MucHMucHNfUmVzdWx0VHVw bGVTbG90KQotCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3Qp OwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwogfQogCiAvKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMKaW5kZXggNDUwMzVkNzRmYS4uMDFmOTUx MTk3YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUuYwpAQCAtMTY4LDExICsxNjgsNiBAQCBF eGVjSW5pdFVuaXF1ZShVbmlxdWUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQog dm9pZAogRXhlY0VuZFVuaXF1ZShVbmlxdWVTdGF0ZSAqbm9kZSkKIHsKLQkvKiBjbGVhbiB1cCB0 dXBsZSB0YWJsZSAqLwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnBzLnBzX1Jlc3VsdFR1cGxlU2xv dCk7Ci0KLQlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5wcyk7Ci0KIAlFeGVjRW5kTm9kZShv dXRlclBsYW5TdGF0ZShub2RlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVWYWx1ZXNzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVmFsdWVzc2Nh bi5jCmluZGV4IDMyYWNlNjMwMTcuLmZiZmIwNjdmM2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVWYWx1ZXNzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVZhbHVlc3NjYW4uYwpAQCAtMzE5LDMwICszMTksNiBAQCBFeGVjSW5pdFZhbHVlc1NjYW4oVmFs dWVzU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJcmV0dXJuIHNjYW5z dGF0ZTsKIH0KIAotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICoJCUV4ZWNFbmRWYWx1ZXNTY2FuCi0gKgotICoJCWZy ZWVzIGFueSBzdG9yYWdlIGFsbG9jYXRlZCB0aHJvdWdoIEMgcm91dGluZXMuCi0gKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ci0gKi8KLXZvaWQKLUV4ZWNFbmRWYWx1ZXNTY2FuKFZhbHVlc1NjYW5TdGF0ZSAqbm9kZSkKLXsK LQkvKgotCSAqIEZyZWUgYm90aCBleHByY29udGV4dHMKLQkgKi8KLQlFeGVjRnJlZUV4cHJDb250 ZXh0KCZub2RlLT5zcy5wcyk7Ci0Jbm9kZS0+c3MucHMucHNfRXhwckNvbnRleHQgPSBub2RlLT5y b3djb250ZXh0OwotCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKLQotCS8qCi0J ICogY2xlYW4gb3V0IHRoZSB0dXBsZSB0YWJsZQotCSAqLwotCWlmIChub2RlLT5zcy5wcy5wc19S ZXN1bHRUdXBsZVNsb3QpCi0JCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1 cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7Ci19 Ci0KIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KICAqCQlFeGVjUmVTY2FuVmFsdWVzU2NhbgogICoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVXaW5kb3dBZ2cuYwppbmRleCAzMTBhYzIzZTNhLi43NzcyNGE2ZGFhIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCkBAIC0yNjg2LDIzICsyNjg2LDYgQEAgRXhlY0Vu ZFdpbmRvd0FnZyhXaW5kb3dBZ2dTdGF0ZSAqbm9kZSkKIAogCXJlbGVhc2VfcGFydGl0aW9uKG5v ZGUpOwogCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7Ci0JRXhl Y0NsZWFyVHVwbGUobm9kZS0+Zmlyc3RfcGFydF9zbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2Rl LT5hZ2dfcm93X3Nsb3QpOwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnRlbXBfc2xvdF8xKTsKLQlF eGVjQ2xlYXJUdXBsZShub2RlLT50ZW1wX3Nsb3RfMik7Ci0JaWYgKG5vZGUtPmZyYW1laGVhZF9z bG90KQotCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5mcmFtZWhlYWRfc2xvdCk7Ci0JaWYgKG5vZGUt PmZyYW1ldGFpbF9zbG90KQotCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5mcmFtZXRhaWxfc2xvdCk7 Ci0KLQkvKgotCSAqIEZyZWUgYm90aCB0aGUgZXhwciBjb250ZXh0cy4KLQkgKi8KLQlFeGVjRnJl ZUV4cHJDb250ZXh0KCZub2RlLT5zcy5wcyk7Ci0Jbm9kZS0+c3MucHMucHNfRXhwckNvbnRleHQg PSBub2RlLT50bXBjb250ZXh0OwotCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnNzLnBzKTsK LQogCWZvciAoaSA9IDA7IGkgPCBub2RlLT5udW1hZ2dzOyBpKyspCiAJewogCQlpZiAobm9kZS0+ cGVyYWdnW2ldLmFnZ2NvbnRleHQgIT0gbm9kZS0+YWdnY29udGV4dCkKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXb3JrdGFibGVzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlV29ya3RhYmxlc2Nhbi5jCmluZGV4IDBjMTM0NDgyMzYuLjE3YTU0ODg2NWUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXb3JrdGFibGVzY2FuLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdvcmt0YWJsZXNjYW4uYwpAQCAtMTgxLDI4ICsxODEs NiBAQCBFeGVjSW5pdFdvcmtUYWJsZVNjYW4oV29ya1RhYmxlU2NhbiAqbm9kZSwgRVN0YXRlICpl c3RhdGUsIGludCBlZmxhZ3MpCiAJcmV0dXJuIHNjYW5zdGF0ZTsKIH0KIAotLyogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot ICoJCUV4ZWNFbmRXb3JrVGFibGVTY2FuCi0gKgotICoJCWZyZWVzIGFueSBzdG9yYWdlIGFsbG9j YXRlZCB0aHJvdWdoIEMgcm91dGluZXMuCi0gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKi8KLXZvaWQKLUV4ZWNFbmRX b3JrVGFibGVTY2FuKFdvcmtUYWJsZVNjYW5TdGF0ZSAqbm9kZSkKLXsKLQkvKgotCSAqIEZyZWUg ZXhwcmNvbnRleHQKLQkgKi8KLQlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5zcy5wcyk7Ci0K LQkvKgotCSAqIGNsZWFuIG91dCB0aGUgdHVwbGUgdGFibGUKLQkgKi8KLQlpZiAobm9kZS0+c3Mu cHMucHNfUmVzdWx0VHVwbGVTbG90KQotCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19S ZXN1bHRUdXBsZVNsb3QpOwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNs b3QpOwotfQotCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY1JlU2NhbldvcmtUYWJsZVNjYW4KICAqCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oIGIvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY3V0b3IuaAppbmRleCBjNjc3ZTQ5MGQ3Li5hZWViZTBlMGZmIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWN1dG9yLmgKQEAgLTU2OSw3ICs1NjksNiBAQCBleHRlcm4gdm9pZCBFeGVjQXNz aWduUHJvamVjdGlvbkluZm8oUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJCQkJCQkJCQkgVHVwbGVE ZXNjIGlucHV0RGVzYyk7CiBleHRlcm4gdm9pZCBFeGVjQ29uZGl0aW9uYWxBc3NpZ25Qcm9qZWN0 aW9uSW5mbyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAkJCQkJCQkJCQkJCVR1cGxlRGVzYyBpbnB1 dERlc2MsIGludCB2YXJubyk7Ci1leHRlcm4gdm9pZCBFeGVjRnJlZUV4cHJDb250ZXh0KFBsYW5T dGF0ZSAqcGxhbnN0YXRlKTsKIGV4dGVybiB2b2lkIEV4ZWNBc3NpZ25TY2FuVHlwZShTY2FuU3Rh dGUgKnNjYW5zdGF0ZSwgVHVwbGVEZXNjIHR1cERlc2MpOwogZXh0ZXJuIHZvaWQgRXhlY0NyZWF0 ZVNjYW5TbG90RnJvbU91dGVyUGxhbihFU3RhdGUgKmVzdGF0ZSwKIAkJCQkJCQkJCQkJU2NhblN0 YXRlICpzY2Fuc3RhdGUsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlTmFt ZWR0dXBsZXN0b3Jlc2Nhbi5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZU5hbWVkdHVwbGVz dG9yZXNjYW4uaAppbmRleCAzZmY2ODcwMjNhLi45ZDgwMjM2ZmU1IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9leGVjdXRvci9ub2RlTmFtZWR0dXBsZXN0b3Jlc2Nhbi5oCisrKyBiL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL25vZGVOYW1lZHR1cGxlc3RvcmVzY2FuLmgKQEAgLTE3LDcgKzE3LDYgQEAK ICNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIKIAogZXh0ZXJuIE5hbWVkVHVwbGVzdG9yZVNj YW5TdGF0ZSAqRXhlY0luaXROYW1lZFR1cGxlc3RvcmVTY2FuKE5hbWVkVHVwbGVzdG9yZVNjYW4g Km5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKTsKLWV4dGVybiB2b2lkIEV4ZWNFbmRO YW1lZFR1cGxlc3RvcmVTY2FuKE5hbWVkVHVwbGVzdG9yZVNjYW5TdGF0ZSAqbm9kZSk7CiBleHRl cm4gdm9pZCBFeGVjUmVTY2FuTmFtZWRUdXBsZXN0b3JlU2NhbihOYW1lZFR1cGxlc3RvcmVTY2Fu U3RhdGUgKm5vZGUpOwogCiAjZW5kaWYJCQkJCQkJLyogTk9ERU5BTUVEVFVQTEVTVE9SRVNDQU5f SCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZVZhbHVlc3NjYW4uaCBi L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVWYWx1ZXNzY2FuLmgKaW5kZXggYTUyZmE2NzhkZi4u ZmUzZjA0Mzk1MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZVZhbHVlc3Nj YW4uaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlVmFsdWVzc2Nhbi5oCkBAIC0xNyw3 ICsxNyw2IEBACiAjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCiAKIGV4dGVybiBWYWx1ZXNT Y2FuU3RhdGUgKkV4ZWNJbml0VmFsdWVzU2NhbihWYWx1ZXNTY2FuICpub2RlLCBFU3RhdGUgKmVz dGF0ZSwgaW50IGVmbGFncyk7Ci1leHRlcm4gdm9pZCBFeGVjRW5kVmFsdWVzU2NhbihWYWx1ZXNT Y2FuU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1JlU2NhblZhbHVlc1NjYW4oVmFsdWVz U2NhblN0YXRlICpub2RlKTsKIAogI2VuZGlmCQkJCQkJCS8qIE5PREVWQUxVRVNTQ0FOX0ggKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVXb3JrdGFibGVzY2FuLmggYi9z cmMvaW5jbHVkZS9leGVjdXRvci9ub2RlV29ya3RhYmxlc2Nhbi5oCmluZGV4IGU1NTNhNDUzZjMu LmYzMWIyMmNlYzQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVXb3JrdGFi bGVzY2FuLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZVdvcmt0YWJsZXNjYW4uaApA QCAtMTcsNyArMTcsNiBAQAogI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgogCiBleHRlcm4g V29ya1RhYmxlU2NhblN0YXRlICpFeGVjSW5pdFdvcmtUYWJsZVNjYW4oV29ya1RhYmxlU2NhbiAq bm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpOwotZXh0ZXJuIHZvaWQgRXhlY0VuZFdv cmtUYWJsZVNjYW4oV29ya1RhYmxlU2NhblN0YXRlICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNS ZVNjYW5Xb3JrVGFibGVTY2FuKFdvcmtUYWJsZVNjYW5TdGF0ZSAqbm9kZSk7CiAKICNlbmRpZgkJ CQkJCQkvKiBOT0RFV09SS1RBQkxFU0NBTl9IICovCi0tIAoyLjM1LjMKCg== --00000000000082dd050604ad25e6--