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 1qdQFk-003JOw-Ku for pgsql-hackers@arkaria.postgresql.org; Tue, 05 Sep 2023 07:13:37 +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 1qdQFi-00HQMQ-VZ for pgsql-hackers@arkaria.postgresql.org; Tue, 05 Sep 2023 07:13:34 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qdQFi-00HQME-BX for pgsql-hackers@lists.postgresql.org; Tue, 05 Sep 2023 07:13:34 +0000 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qdQFd-0038uZ-7x for pgsql-hackers@postgresql.org; Tue, 05 Sep 2023 07:13:33 +0000 Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-271b102659fso1359253a91.0 for ; Tue, 05 Sep 2023 00:13:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693898007; x=1694502807; 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=EDnDCnMO0QxAuTKqoep+GnarQ77HWHKZnfUxSkS6y+k=; b=NXAwlfsbv+TkNeePZdxWHAbkcALqLNVunMZXMdGVrjeHkwZpB5vLABcOmhEal5RjyT xUBq1qb+0vefDlAlujTjZx7STwd93b15taKLLIicCVQhHQpMal3HBMKBjsJjvFdmmBMS oNuZXP38FHDSKl9joVMbh+jSB3bVc4OkOXtNc4Us9xxbtuq4aZF70gif7wWycuracxU3 14DTeM/x9eCTjKoMLYiErHKmsLzB6S23WrrubVzLSbRBhYvn9lZFhz48C3SKT7ClfrAh QkFApwn71RCOoKhdRwT9m/J+Apu/Yg94iTfc3K3dkBWXQT92k2qLyNoXjbBoIsEwl/Mn OMpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693898007; x=1694502807; 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=EDnDCnMO0QxAuTKqoep+GnarQ77HWHKZnfUxSkS6y+k=; b=c65Pm0SPTWTHHLCIkYEYMXtdifUHPZczIN7HK+fijCFv3AhbnDoHJrCvcuLXlih29z /PLOB6AC8gqYhATspb4YrQjKTKwDwLIjno5KoAQLTJnqVRJhBn7GU9HNtge2uVRqdIwt Kk3SuRqoP0g2sma6JBVL5ZXRZ1/bTo2r7PxuWPk6mM1D22tjnnrbpZr4r7Y1rhfyDjzB CupsLxTzY7fLShpXg6QSltJqM50PaJq4HxuVeIKtpumNPUaaiL0yuq8dMZFKKC/6SSiz 3DGg29PlBwSX7tHBd+yFXELVgVCkPxvNTnZvgYKtohbYsTl+eZeBsYSHms4ZFjsPrybI 4m8Q== X-Gm-Message-State: AOJu0YyUlzHbYxXDxiuzGSa0NLtywmygT9KvZg1H8tZ5DOnRfkCQkhnO VBq6rbHSbG+3bPt7GmMnUZBs/9qVPQEWuw6flrk= X-Google-Smtp-Source: AGHT+IEZ8ZfR15EypsdI5wjLR/dON0ycVHfPJEzIuctpz1noN/k9NaS5YIaZx/9H426d8ORE+yixzzgxBkmT4Ah9GRE= X-Received: by 2002:a17:90b:230b:b0:273:7bf5:b1bf with SMTP id mt11-20020a17090b230b00b002737bf5b1bfmr8559035pjb.9.1693898006640; Tue, 05 Sep 2023 00:13:26 -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: Tue, 5 Sep 2023 16:13:09 +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="000000000000f8d8750604975ca4" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000f8d8750604975ca4 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thanks for taking a look. On Mon, Aug 28, 2023 at 10:43=E2=80=AFPM Robert Haas wrote: > On Fri, Aug 11, 2023 at 9:50=E2=80=AFAM Amit Langote wrote: > > After removing the unnecessary cleanup code from most node types=E2=80= =99 ExecEnd* functions, one thing I=E2=80=99m tempted to do is remove the f= unctions that do nothing else but recurse to close the outerPlan, innerPlan= child nodes. We could instead have ExecEndNode() itself recurse to close = outerPlan, innerPlan child nodes at the top, which preserves the close-chil= d-before-self behavior for Gather* nodes, and close node type specific clea= nup functions for nodes that do have any local cleanup to do. Perhaps, we = could even use planstate_tree_walker() called at the top instead of the usu= al bottom so that nodes with a list of child subplans like Append also don= =E2=80=99t need to have their own ExecEnd* functions. > > I think 0001 needs to be split up. Like, this is code cleanup: > > - /* > - * Free the exprcontext > - */ > - ExecFreeExprContext(&node->ss.ps); > > This is providing for NULL pointers where we don't currently: > > - list_free_deep(aggstate->hash_batches); > + if (aggstate->hash_batches) > + list_free_deep(aggstate->hash_batches); > > And this is the early return mechanism per se: > > + if (!ExecPlanStillValid(estate)) > + return aggstate; > > I think at least those 3 kinds of changes deserve to be in separate > patches with separate commit messages explaining the rationale behind > each e.g. "Remove unnecessary cleanup calls in ExecEnd* functions. > These calls are no longer required, because . Removing them > saves a few CPU cycles and simplifies planned refactoring, so do > that." Breaking up the patch as you describe makes sense, so I've done that: Attached 0001 removes unnecessary cleanup calls from ExecEnd*() routines. 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. 0003 adds the early return mechanism based on checking CachedPlan invalidation, though no CachedPlan is actually passed to the executor yet, so no functional changes here yet. Other patches are rebased over these. One significant change is in 0004 which does the refactoring to make the callers of ExecutorStart() aware that it may now return with a partially initialized planstate tree that should not be executed. I added a new flag EState.es_canceled to denote that state of the execution to complement the existing es_finished. I also needed to add AfterTriggerCancelQuery() to ensure that we don't attempt to fire a canceled query's triggers. Most of these changes are needed only to appease the various Asserts in these parts of the code and I thought they are warranted given the introduction of a new state of query execution. -- Thanks, Amit Langote EDB: http://www.enterprisedb.com --000000000000f8d8750604975ca4 Content-Type: application/octet-stream; name="v46-0004-Make-ExecutorStart-return-early-upon-plan-invali.patch" Content-Disposition: attachment; filename="v46-0004-Make-ExecutorStart-return-early-upon-plan-invali.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lm5z2oe84 RnJvbSA3NmEyODQ4ZThmNzBjY2JiZjljMTg0NGM1ZjNjNDlmYTcyOGFlMTY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMyBBdWcgMjAyMyAxMjozNDozMSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ2 IDQvOF0gTWFrZSBFeGVjdXRvclN0YXJ0KCkgcmV0dXJuIGVhcmx5IHVwb24gcGxhbgogaW52YWxp ZGF0aW9uCgpXaGVuIHBhc3NpbmcgYSBwbGFuIHRyZWUgZnJvbSBhIENhY2hlZFBsYW4gdG8gdGhl IGV4ZWN1dG9yLApFeGVjdXRvclN0YXJ0KCkgY2FuIG5vdyByZXR1cm4gYSBwbGFuc3RhdGUgdHJl ZSB0aGF0IGlzbid0IGNvbXBsZXRlbHkKc2V0IHVwLiBUaGlzIHNjZW5hcmlvIG9jY3VycyBpZiB0 aGUgQ2FjaGVkUGxhbiBiZWNvbWVzIGludmFsaWRhdGVkIHdoaWxlCml0J3MgYmVpbmcgaW5pdGlh bGl6ZWQgd2l0aCBFeGVjSW5pdE5vZGUoKS4gIEV4ZWN1dGlvbiBtdXN0IGJlIHJldHJpZWQKd2l0 aCBhIG5ldyBDYWNoZWRQbGFuIHdoZW4gdGhhdCBzY2VuYXJpbyBvY2N1cnMuICBQYXJ0aWFsbHkg aW5pdGlsaXplZApFU3RhdGUgbXVzdCBiZSBjbGVhbmVkIHVwIGJ5IGNhbGxpbmcgRXhlY3V0b3JF bmQoKSBhbmQKRnJlZUV4ZWN1dG9yU3RhdGUoKS4KCkV4ZWN1dG9yU3RhcnQoKSBhbmQgRXhlY3V0 b3JTdGFydF9ob29rKCkgbm93IHJldHVybiBhIEJvb2xlYW4gdGVsbGluZwp0aGUgY2FsbGVyIGlm IHRoZSBwbGFuIGluaXRpYWxpemF0aW9uIGZhaWxlZC4KCkZvciB0aGUgcmVwbGFuIGxvb3AgaW4g dGhhdCBjb250ZXh0LCBpdCBtYWtlcyBtb3JlIHNlbnNlIHRvIGhhdmUKRXhlY3V0b3JTdGFydCgp IGVpdGhlciBpbiB0aGUgc2FtZSBzY29wZSBvciBjbG9zZXIgdG8gd2hlcmUKR2V0Q2FjaGVkUGxh bigpIGlzIGludm9rZWQuICBTbyB0aGlzIGNvbW1pdCBtb2RpZmllcyB0aGUgZm9sbG93aW5nCnNp dGVzOgoKKiBUaGUgRXhlY3V0b3JTdGFydCgpIGNhbGwgaW4gRXhwbGFpbk9uZVBsYW4oKSBpcyBt b3ZlZCBpbnRvIGEgbmV3CiAgZnVuY3Rpb24gRXhwbGFpblF1ZXJ5RGVzYygpIGFsb25nIHdpdGgg Q3JlYXRlUXVlcnlEZXNjKCkuICBDYWxsZXJzCiAgb2YgRXhwbGFpbk9uZVBsYW4oKSBzaG91bGQg bm93IGNhbGwgdGhlIG5ldyBmdW5jdGlvbiBmaXJzdC4KCiogVGhlIEV4ZWN1dG9yU3RhcnQoKSBj YWxsIGluIF9TUElfcHF1ZXJ5KCkgaXMgbW92ZWQgdG8gaXRzIGNhbGxlcgogIF9TUElfZXhlY3V0 ZV9wbGFuKCkuCgoqIFRoZSBFeGVjdXRvclN0YXJ0KCkgY2FsbCBpbiBQb3J0YWxSdW5NdWx0aSgp IGlzIG1vdmVkIHRvCiAgUG9ydGFsU3RhcnQoKS4gIFRoaXMgcmVxdWlyZXMgYSBuZXcgTGlzdCBm aWVsZCBpbiBQb3J0YWxEYXRhIHRvCiAgc3RvcmUgdGhlIFF1ZXJ5RGVzY3MgY3JlYXRlZCBpbiBQ b3J0YWxTdGFydCgpIGFuZCBhIG5ldyBtZW1vcnkKICBjb250ZXh0IGZvciB0aG9zZS4gIE9uZSB1 bmludGVuZGVkIGNvbnNlcXVlbmNlIGlzIHRoYXQKICBDb21tYW5kQ291bnRlckluY3JlbWVudCgp IGJldHdlZW4gcXVlcmllcyBpbiBQT1JUQUxfTVVMVElfUVVFUlkKICBjYXNlcyBpcyBub3cgZG9u ZSBpbiB0aGUgbG9vcCBpbiBQb3J0YWxTdGFydCgpIGFuZCBub3QgaW4KICBQb3J0YWxSdW5NdWx0 aSgpLiAgVGhhdCBzdGlsbCB3b3JrcyBiZWNhdXNlIHRoZSBTbmFwc2hvdCByZWdpc3RlcmVkCiAg aW4gUXVlcnlEZXNjL0VTdGF0ZSBpcyB1cGRhdGVkIHRvIGFjY291bnQgZm9yIHRoZSBDQ0koKS4K ClRoaXMgY29tbWl0IGFsc28gYWRkcyBhIG5ldyBmbGFnIHRvIEVTdGF0ZSBjYWxsZWQgZXNfY2Fu Y2VsZWQgdGhhdApjb21wbGVtZW50cyBlc19maW5pc2hlZCB0byBkZW5vdGUgdGhlIG5ldyBzY2Vu YXJpbyB3aGVyZQpFeGVjdXRvclN0YXJ0KCkgcmV0dXJucyB3aXRoIGEgcGFydGlhbGx5IHNldHVw IHBsYW5zdGF0ZSB0cmVlLiAgQWxzbywKdG8gcmVzZXQgdGhlIEFGVEVSIHRyaWdnZXIgc3RhdGUg dGhhdCB3b3VsZCBoYXZlIGJlZW4gc2V0IHVwIGluIHRoZQpFeGVjdXRvclN0YXJ0KCksIHRoaXMg YWRkcyBhIG5ldyBmdW5jdGlvbiBBZnRlclRyaWdnZXJDYW5jZWxRdWVyeSgpCndoaWNoIGlzIGNh bGxlZCBmcm9tIEV4ZWN1dG9yRW5kKCkgKG5vdCBFeGVjdXRvckZpbmlzaCgpKSB3aGVuCmVzX2Nh bmNlbGVkIGlzIHRydWUuCgpOb3RlIHRoYXQgdGhpcyBjb21taXQgYnkgaXRzZWxmIGRvZXNuJ3Qg bWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2UsCmJlY2F1c2UgdGhlIENhY2hlZFBsYW4gaXMgbm90 IHBhc3NlZCBpbnRvIHRoZSBleGVjdXRvciB5ZXQuCi0tLQogY29udHJpYi9hdXRvX2V4cGxhaW4v YXV0b19leHBsYWluLmMgICAgICAgICAgIHwgIDEyICstCiAuLi4vcGdfc3RhdF9zdGF0ZW1lbnRz L3BnX3N0YXRfc3RhdGVtZW50cy5jICAgfCAgMTIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2Nv cHl0by5jICAgICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY3Jl YXRlYXMuYyAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBs YWluLmMgICAgICAgICAgICAgICAgfCAxNDIgKysrKy0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMv ZXh0ZW5zaW9uLmMgICAgICAgICAgICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9t YXR2aWV3LmMgICAgICAgICAgICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3Bv cnRhbGNtZHMuYyAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJl cGFyZS5jICAgICAgICAgICAgICAgIHwgIDMxICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy90cmln Z2VyLmMgICAgICAgICAgICAgICAgfCAgMTMgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01h aW4uYyAgICAgICAgICAgICAgIHwgIDU3ICsrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Bh cmFsbGVsLmMgICAgICAgICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRp bHMuYyAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25z LmMgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyAgICAg ICAgICAgICAgICAgICAgfCAgNDggKystCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAg ICAgICAgICAgICAgICAgfCAgMTggKy0KIHNyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgICAgICAg ICAgICAgICAgICAgICB8IDM0NSArKysrKysrKystLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxz L21tZ3IvcG9ydGFsbWVtLmMgICAgICAgICAgICB8ICAgOSArCiBzcmMvaW5jbHVkZS9jb21tYW5k cy9leHBsYWluLmggICAgICAgICAgICAgICAgfCAgIDcgKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRz L3RyaWdnZXIuaCAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9l eGVjdXRvci5oICAgICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNu b2Rlcy5oICAgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS90Y29wL3BxdWVyeS5o ICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5o ICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiAyNCBmaWxlcyBjaGFuZ2VkLCA0NjAgaW5zZXJ0 aW9ucygrKSwgMjg0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYXV0b19leHBs YWluL2F1dG9fZXhwbGFpbi5jIGIvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMK aW5kZXggYzNhYzI3YWU5OS4uYTA2MzBkNzk0NCAxMDA2NDQKLS0tIGEvY29udHJpYi9hdXRvX2V4 cGxhaW4vYXV0b19leHBsYWluLmMKKysrIGIvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBs YWluLmMKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIEV4ZWN1dG9yUnVuX2hvb2tfdHlwZSBwcmV2 X0V4ZWN1dG9yUnVuID0gTlVMTDsKIHN0YXRpYyBFeGVjdXRvckZpbmlzaF9ob29rX3R5cGUgcHJl dl9FeGVjdXRvckZpbmlzaCA9IE5VTEw7CiBzdGF0aWMgRXhlY3V0b3JFbmRfaG9va190eXBlIHBy ZXZfRXhlY3V0b3JFbmQgPSBOVUxMOwogCi1zdGF0aWMgdm9pZCBleHBsYWluX0V4ZWN1dG9yU3Rh cnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOworc3RhdGljIGJvb2wgZXhwbGFp bl9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIHN0YXRp YyB2b2lkIGV4cGxhaW5fRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJCQkJCQkJ CVNjYW5EaXJlY3Rpb24gZGlyZWN0aW9uLAogCQkJCQkJCQl1aW50NjQgY291bnQsIGJvb2wgZXhl Y3V0ZV9vbmNlKTsKQEAgLTI1OCw5ICsyNTgsMTEgQEAgX1BHX2luaXQodm9pZCkKIC8qCiAgKiBF eGVjdXRvclN0YXJ0IGhvb2s6IHN0YXJ0IHVwIGxvZ2dpbmcgaWYgbmVlZGVkCiAgKi8KLXN0YXRp YyB2b2lkCitzdGF0aWMgYm9vbAogZXhwbGFpbl9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVl cnlEZXNjLCBpbnQgZWZsYWdzKQogeworCWJvb2wJcGxhbl92YWxpZDsKKwogCS8qCiAJICogQXQg dGhlIGJlZ2lubmluZyBvZiBlYWNoIHRvcC1sZXZlbCBzdGF0ZW1lbnQsIGRlY2lkZSB3aGV0aGVy IHdlJ2xsCiAJICogc2FtcGxlIHRoaXMgc3RhdGVtZW50LiAgSWYgbmVzdGVkLXN0YXRlbWVudCBl eHBsYWluaW5nIGlzIGVuYWJsZWQsCkBAIC0yOTYsOSArMjk4LDkgQEAgZXhwbGFpbl9FeGVjdXRv clN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCX0KIAogCWlmIChwcmV2 X0V4ZWN1dG9yU3RhcnQpCi0JCXByZXZfRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7 CisJCXBsYW5fdmFsaWQgPSBwcmV2X0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwog CWVsc2UKLQkJc3RhbmRhcmRfRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CisJCXBs YW5fdmFsaWQgPSBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKIAog CWlmIChhdXRvX2V4cGxhaW5fZW5hYmxlZCgpKQogCXsKQEAgLTMxNiw2ICszMTgsOCBAQCBleHBs YWluX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJCQlN ZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKIAkJfQogCX0KKworCXJldHVybiBwbGFuX3Zh bGlkOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdf c3RhdF9zdGF0ZW1lbnRzLmMgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0 YXRlbWVudHMuYwppbmRleCAwNmI2NWFlZWY1Li41MzU0ZGZmN2Q3IDEwMDY0NAotLS0gYS9jb250 cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYworKysgYi9jb250cmli L3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYwpAQCAtMzI0LDcgKzMyNCw3 IEBAIHN0YXRpYyBQbGFubmVkU3RtdCAqcGdzc19wbGFubmVyKFF1ZXJ5ICpwYXJzZSwKIAkJCQkJ CQkJIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywKIAkJCQkJCQkJIGludCBjdXJzb3JPcHRpb25z LAogCQkJCQkJCQkgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcyk7Ci1zdGF0aWMgdm9pZCBwZ3Nz X0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOworc3RhdGlj IGJvb2wgcGdzc19FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdz KTsKIHN0YXRpYyB2b2lkIHBnc3NfRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJ CQkJCQkJIFNjYW5EaXJlY3Rpb24gZGlyZWN0aW9uLAogCQkJCQkJCSB1aW50NjQgY291bnQsIGJv b2wgZXhlY3V0ZV9vbmNlKTsKQEAgLTk2MSwxMyArOTYxLDE1IEBAIHBnc3NfcGxhbm5lcihRdWVy eSAqcGFyc2UsCiAvKgogICogRXhlY3V0b3JTdGFydCBob29rOiBzdGFydCB1cCB0cmFja2luZyBp ZiBuZWVkZWQKICAqLwotc3RhdGljIHZvaWQKK3N0YXRpYyBib29sCiBwZ3NzX0V4ZWN1dG9yU3Rh cnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiB7CisJYm9vbAlwbGFuX3ZhbGlk OworCiAJaWYgKHByZXZfRXhlY3V0b3JTdGFydCkKLQkJcHJldl9FeGVjdXRvclN0YXJ0KHF1ZXJ5 RGVzYywgZWZsYWdzKTsKKwkJcGxhbl92YWxpZCA9IHByZXZfRXhlY3V0b3JTdGFydChxdWVyeURl c2MsIGVmbGFncyk7CiAJZWxzZQotCQlzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywg ZWZsYWdzKTsKKwkJcGxhbl92YWxpZCA9IHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNj LCBlZmxhZ3MpOwogCiAJLyoKIAkgKiBJZiBxdWVyeSBoYXMgcXVlcnlJZCB6ZXJvLCBkb24ndCB0 cmFjayBpdC4gIFRoaXMgcHJldmVudHMgZG91YmxlCkBAIC05OTAsNiArOTkyLDggQEAgcGdzc19F eGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCQkJTWVtb3J5 Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CiAJCX0KIAl9CisKKwlyZXR1cm4gcGxhbl92YWxpZDsK IH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKaW5kZXggZWFhMzE3Mjc5My4uYTQ1NDg5ZjhmNSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvY29weXRvLmMKQEAgLTU2Nyw4ICs1NjcsMTAgQEAgQmVnaW5Db3B5VG8oUGFy c2VTdGF0ZSAqcHN0YXRlLAogCQkgKiBDYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUg cGxhbiBmb3IgZXhlY3V0aW9uLgogCQkgKgogCQkgKiBFeGVjdXRvclN0YXJ0IGNvbXB1dGVzIGEg cmVzdWx0IHR1cGRlc2MgZm9yIHVzCisJCSAqCisJCSAqIE9LIHRvIGlnbm9yZSB0aGUgcmV0dXJu IHZhbHVlOyBwbGFuIGNhbid0IGJlY29tZSBpbnZhbGlkLgogCQkgKi8KLQkJRXhlY3V0b3JTdGFy dChjc3RhdGUtPnF1ZXJ5RGVzYywgMCk7CisJCSh2b2lkKSBFeGVjdXRvclN0YXJ0KGNzdGF0ZS0+ cXVlcnlEZXNjLCAwKTsKIAogCQl0dXBEZXNjID0gY3N0YXRlLT5xdWVyeURlc2MtPnR1cERlc2M7 CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKaW5kZXggZTkxOTIwY2ExNC4uMTY3ZGI0Y2Y1NiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCkBAIC0zMjksOCArMzI5LDEyIEBAIEV4ZWNDcmVhdGVU YWJsZUFzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlVGFibGVBc1N0bXQgKnN0bXQsCiAJCQkJ CQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCQlkZXN0 LCBwYXJhbXMsIHF1ZXJ5RW52LCAwKTsKIAotCQkvKiBjYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJl cGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uICovCi0JCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNj LCBHZXRJbnRvUmVsRUZsYWdzKGludG8pKTsKKwkJLyoKKwkJICogY2FsbCBFeGVjdXRvclN0YXJ0 IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbgorCQkgKgorCQkgKiBPSyB0byBpZ25v cmUgdGhlIHJldHVybiB2YWx1ZTsgcGxhbiBjYW4ndCBiZWNvbWUgaW52YWxpZC4KKwkJICovCisJ CSh2b2lkKSBFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgR2V0SW50b1JlbEVGbGFncyhpbnRvKSk7 CiAKIAkJLyogcnVuIHRoZSBwbGFuIHRvIGNvbXBsZXRpb24gKi8KIAkJRXhlY3V0b3JSdW4ocXVl cnlEZXNjLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgMCwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWlu LmMKaW5kZXggODU3MGIxNGY2Mi4uZmU5MzE0YmM5NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpA QCAtMzkzLDYgKzM5Myw3IEBAIEV4cGxhaW5PbmVRdWVyeShRdWVyeSAqcXVlcnksIGludCBjdXJz b3JPcHRpb25zLAogCWVsc2UKIAl7CiAJCVBsYW5uZWRTdG10ICpwbGFuOworCQlRdWVyeURlc2Mg ICAqcXVlcnlEZXNjOwogCQlpbnN0cl90aW1lCXBsYW5zdGFydCwKIAkJCQkJcGxhbmR1cmF0aW9u OwogCQlCdWZmZXJVc2FnZSBidWZ1c2FnZV9zdGFydCwKQEAgLTQxNSwxMiArNDE2LDg3IEBAIEV4 cGxhaW5PbmVRdWVyeShRdWVyeSAqcXVlcnksIGludCBjdXJzb3JPcHRpb25zLAogCQkJQnVmZmVy VXNhZ2VBY2N1bURpZmYoJmJ1ZnVzYWdlLCAmcGdCdWZmZXJVc2FnZSwgJmJ1ZnVzYWdlX3N0YXJ0 KTsKIAkJfQogCisJCXF1ZXJ5RGVzYyA9IEV4cGxhaW5RdWVyeURlc2MocGxhbiwgcXVlcnlTdHJp bmcsIGludG8sIGVzLAorCQkJCQkJCQkJIHBhcmFtcywgcXVlcnlFbnYpOworCQlBc3NlcnQocXVl cnlEZXNjKTsKKwogCQkvKiBydW4gaXQgKGlmIG5lZWRlZCkgYW5kIHByb2R1Y2Ugb3V0cHV0ICov Ci0JCUV4cGxhaW5PbmVQbGFuKHBsYW4sIGludG8sIGVzLCBxdWVyeVN0cmluZywgcGFyYW1zLCBx dWVyeUVudiwKKwkJRXhwbGFpbk9uZVBsYW4ocXVlcnlEZXNjLCBpbnRvLCBlcywgcXVlcnlTdHJp bmcsIHBhcmFtcywgcXVlcnlFbnYsCiAJCQkJCSAgICZwbGFuZHVyYXRpb24sIChlcy0+YnVmZmVy cyA/ICZidWZ1c2FnZSA6IE5VTEwpKTsKIAl9CiB9CiAKKy8qCisgKiBFeHBsYWluUXVlcnlEZXNj CisgKgkJU2V0IHVwIFF1ZXJ5RGVzYyBmb3IgRVhQTEFJTmluZyBhIGdpdmVuIHBsYW4KKyAqLwor UXVlcnlEZXNjICoKK0V4cGxhaW5RdWVyeURlc2MoUGxhbm5lZFN0bXQgKnN0bXQsCisJCQkJIGNv bnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVz LAorCQkJCSBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYp Cit7CisJUXVlcnlEZXNjICAqcXVlcnlEZXNjOworCURlc3RSZWNlaXZlciAqZGVzdDsKKwlpbnQJ CQllZmxhZ3M7CisJaW50CQkJaW5zdHJ1bWVudF9vcHRpb24gPSAwOworCisJLyoKKwkgKiBOb3Jt YWxseSB3ZSBkaXNjYXJkIHRoZSBxdWVyeSdzIG91dHB1dCwgYnV0IGlmIGV4cGxhaW5pbmcgQ1JF QVRFIFRBQkxFCisJICogQVMsIHdlJ2QgYmV0dGVyIHVzZSB0aGUgYXBwcm9wcmlhdGUgdHVwbGUg cmVjZWl2ZXIuCisJICovCisJaWYgKGludG8pCisJCWRlc3QgPSBDcmVhdGVJbnRvUmVsRGVzdFJl Y2VpdmVyKGludG8pOworCWVsc2UKKwkJZGVzdCA9IE5vbmVfUmVjZWl2ZXI7CisKKwlpZiAoZXMt PmFuYWx5emUgJiYgZXMtPnRpbWluZykKKwkJaW5zdHJ1bWVudF9vcHRpb24gfD0gSU5TVFJVTUVO VF9USU1FUjsKKwllbHNlIGlmIChlcy0+YW5hbHl6ZSkKKwkJaW5zdHJ1bWVudF9vcHRpb24gfD0g SU5TVFJVTUVOVF9ST1dTOworCisJaWYgKGVzLT5idWZmZXJzKQorCQlpbnN0cnVtZW50X29wdGlv biB8PSBJTlNUUlVNRU5UX0JVRkZFUlM7CisJaWYgKGVzLT53YWwpCisJCWluc3RydW1lbnRfb3B0 aW9uIHw9IElOU1RSVU1FTlRfV0FMOworCisJLyoKKwkgKiBVc2UgYSBzbmFwc2hvdCB3aXRoIGFu IHVwZGF0ZWQgY29tbWFuZCBJRCB0byBlbnN1cmUgdGhpcyBxdWVyeSBzZWVzCisJICogcmVzdWx0 cyBvZiBhbnkgcHJldmlvdXNseSBleGVjdXRlZCBxdWVyaWVzLgorCSAqLworCVB1c2hDb3BpZWRT bmFwc2hvdChHZXRBY3RpdmVTbmFwc2hvdCgpKTsKKwlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1h bmRJZCgpOworCisJLyogQ3JlYXRlIGEgUXVlcnlEZXNjIGZvciB0aGUgcXVlcnkgKi8KKwlxdWVy eURlc2MgPSBDcmVhdGVRdWVyeURlc2Moc3RtdCwgcXVlcnlTdHJpbmcsCisJCQkJCQkJCUdldEFj dGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKKwkJCQkJCQkJZGVzdCwgcGFyYW1zLCBx dWVyeUVudiwgaW5zdHJ1bWVudF9vcHRpb24pOworCisJLyogU2VsZWN0IGV4ZWN1dGlvbiBvcHRp b25zICovCisJaWYgKGVzLT5hbmFseXplKQorCQllZmxhZ3MgPSAwOwkJCQkvKiBkZWZhdWx0IHJ1 bi10by1jb21wbGV0aW9uIGZsYWdzICovCisJZWxzZQorCQllZmxhZ3MgPSBFWEVDX0ZMQUdfRVhQ TEFJTl9PTkxZOworCWlmIChlcy0+Z2VuZXJpYykKKwkJZWZsYWdzIHw9IEVYRUNfRkxBR19FWFBM QUlOX0dFTkVSSUM7CisJaWYgKGludG8pCisJCWVmbGFncyB8PSBHZXRJbnRvUmVsRUZsYWdzKGlu dG8pOworCisJLyoKKwkgKiBDYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBm b3IgZXhlY3V0aW9uLiAgQSBjYWNoZWQgcGxhbgorCSAqIG1heSBnZXQgaW52YWxpZGF0ZWQgZHVy aW5nIHBsYW4gaW50aWFsaXphdGlvbi4KKwkgKi8KKwlpZiAoIUV4ZWN1dG9yU3RhcnQocXVlcnlE ZXNjLCBlZmxhZ3MpKQorCXsKKwkJLyogQ2xlYW4gdXAuICovCisJCUV4ZWN1dG9yRW5kKHF1ZXJ5 RGVzYyk7CisJCUZyZWVRdWVyeURlc2MocXVlcnlEZXNjKTsKKwkJUG9wQWN0aXZlU25hcHNob3Qo KTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJcmV0dXJuIHF1ZXJ5RGVzYzsKK30KKwogLyoKICAq IEV4cGxhaW5PbmVVdGlsaXR5IC0KICAqCSAgcHJpbnQgb3V0IHRoZSBleGVjdXRpb24gcGxhbiBm b3Igb25lIHV0aWxpdHkgc3RhdGVtZW50CkBAIC01MjQsMjkgKzYwMCwxNiBAQCBFeHBsYWluT25l VXRpbGl0eShOb2RlICp1dGlsaXR5U3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRl ICplcywKICAqIHRvIGNhbGwgaXQuCiAgKi8KIHZvaWQKLUV4cGxhaW5PbmVQbGFuKFBsYW5uZWRT dG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKK0V4 cGxhaW5PbmVQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLAorCQkJICAgSW50b0NsYXVzZSAqaW50 bywgRXhwbGFpblN0YXRlICplcywKIAkJCSAgIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLCBQYXJh bUxpc3RJbmZvIHBhcmFtcywKIAkJCSAgIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LCBjb25z dCBpbnN0cl90aW1lICpwbGFuZHVyYXRpb24sCiAJCQkgICBjb25zdCBCdWZmZXJVc2FnZSAqYnVm dXNhZ2UpCiB7Ci0JRGVzdFJlY2VpdmVyICpkZXN0OwotCVF1ZXJ5RGVzYyAgKnF1ZXJ5RGVzYzsK IAlpbnN0cl90aW1lCXN0YXJ0dGltZTsKIAlkb3VibGUJCXRvdGFsdGltZSA9IDA7Ci0JaW50CQkJ ZWZsYWdzOwotCWludAkJCWluc3RydW1lbnRfb3B0aW9uID0gMDsKLQotCUFzc2VydChwbGFubmVk c3RtdC0+Y29tbWFuZFR5cGUgIT0gQ01EX1VUSUxJVFkpOwogCi0JaWYgKGVzLT5hbmFseXplICYm IGVzLT50aW1pbmcpCi0JCWluc3RydW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfVElNRVI7Ci0J ZWxzZSBpZiAoZXMtPmFuYWx5emUpCi0JCWluc3RydW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRf Uk9XUzsKLQotCWlmIChlcy0+YnVmZmVycykKLQkJaW5zdHJ1bWVudF9vcHRpb24gfD0gSU5TVFJV TUVOVF9CVUZGRVJTOwotCWlmIChlcy0+d2FsKQotCQlpbnN0cnVtZW50X29wdGlvbiB8PSBJTlNU UlVNRU5UX1dBTDsKKwlBc3NlcnQocXVlcnlEZXNjLT5wbGFubmVkc3RtdC0+Y29tbWFuZFR5cGUg IT0gQ01EX1VUSUxJVFkpOwogCiAJLyoKIAkgKiBXZSBhbHdheXMgY29sbGVjdCB0aW1pbmcgZm9y IHRoZSBlbnRpcmUgc3RhdGVtZW50LCBldmVuIHdoZW4gbm9kZS1sZXZlbApAQCAtNTU1LDQwICs2 MTgsNiBAQCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1 c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJICovCiAJSU5TVFJfVElNRV9TRVRfQ1VSUkVO VChzdGFydHRpbWUpOwogCi0JLyoKLQkgKiBVc2UgYSBzbmFwc2hvdCB3aXRoIGFuIHVwZGF0ZWQg Y29tbWFuZCBJRCB0byBlbnN1cmUgdGhpcyBxdWVyeSBzZWVzCi0JICogcmVzdWx0cyBvZiBhbnkg cHJldmlvdXNseSBleGVjdXRlZCBxdWVyaWVzLgotCSAqLwotCVB1c2hDb3BpZWRTbmFwc2hvdChH ZXRBY3RpdmVTbmFwc2hvdCgpKTsKLQlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOwot Ci0JLyoKLQkgKiBOb3JtYWxseSB3ZSBkaXNjYXJkIHRoZSBxdWVyeSdzIG91dHB1dCwgYnV0IGlm IGV4cGxhaW5pbmcgQ1JFQVRFIFRBQkxFCi0JICogQVMsIHdlJ2QgYmV0dGVyIHVzZSB0aGUgYXBw cm9wcmlhdGUgdHVwbGUgcmVjZWl2ZXIuCi0JICovCi0JaWYgKGludG8pCi0JCWRlc3QgPSBDcmVh dGVJbnRvUmVsRGVzdFJlY2VpdmVyKGludG8pOwotCWVsc2UKLQkJZGVzdCA9IE5vbmVfUmVjZWl2 ZXI7Ci0KLQkvKiBDcmVhdGUgYSBRdWVyeURlc2MgZm9yIHRoZSBxdWVyeSAqLwotCXF1ZXJ5RGVz YyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFubmVkc3RtdCwgcXVlcnlTdHJpbmcsCi0JCQkJCQkJCUdl dEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKLQkJCQkJCQkJZGVzdCwgcGFyYW1z LCBxdWVyeUVudiwgaW5zdHJ1bWVudF9vcHRpb24pOwotCi0JLyogU2VsZWN0IGV4ZWN1dGlvbiBv cHRpb25zICovCi0JaWYgKGVzLT5hbmFseXplKQotCQllZmxhZ3MgPSAwOwkJCQkvKiBkZWZhdWx0 IHJ1bi10by1jb21wbGV0aW9uIGZsYWdzICovCi0JZWxzZQotCQllZmxhZ3MgPSBFWEVDX0ZMQUdf RVhQTEFJTl9PTkxZOwotCWlmIChlcy0+Z2VuZXJpYykKLQkJZWZsYWdzIHw9IEVYRUNfRkxBR19F WFBMQUlOX0dFTkVSSUM7Ci0JaWYgKGludG8pCi0JCWVmbGFncyB8PSBHZXRJbnRvUmVsRUZsYWdz KGludG8pOwotCi0JLyogY2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9y IGV4ZWN1dGlvbiAqLwotCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwotCiAJLyog RXhlY3V0ZSB0aGUgcGxhbiBmb3Igc3RhdGlzdGljcyBpZiBhc2tlZCBmb3IgKi8KIAlpZiAoZXMt PmFuYWx5emUpCiAJewpAQCAtNDg2NSw2ICs0ODk0LDE3IEBAIEV4cGxhaW5EdW1teUdyb3VwKGNv bnN0IGNoYXIgKm9ianR5cGUsIGNvbnN0IGNoYXIgKmxhYmVsbmFtZSwgRXhwbGFpblN0YXRlICpl cykKIAl9CiB9CiAKKy8qCisgKiBEaXNjYXJkIG91dHB1dCBidWZmZXIgZm9yIGEgZnJlc2ggcmVz dGFydC4KKyAqLwordm9pZAorRXhwbGFpblJlc2V0T3V0cHV0KEV4cGxhaW5TdGF0ZSAqZXMpCit7 CisJQXNzZXJ0KGVzLT5zdHIpOworCXJlc2V0U3RyaW5nSW5mbyhlcy0+c3RyKTsKKwlFeHBsYWlu QmVnaW5PdXRwdXQoZXMpOworfQorCiAvKgogICogRW1pdCB0aGUgc3RhcnQtb2Ytb3V0cHV0IGJv aWxlcnBsYXRlLgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lv bi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKaW5kZXggNTM1MDcyZDE4MS4u YjcwMmE2NWU4MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKQEAgLTgwMSw3ICs4MDEsOCBA QCBleGVjdXRlX3NxbF9zdHJpbmcoY29uc3QgY2hhciAqc3FsKQogCQkJCQkJCQkJCUdldEFjdGl2 ZVNuYXBzaG90KCksIE5VTEwsCiAJCQkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CiAKLQkJ CQlFeGVjdXRvclN0YXJ0KHFkZXNjLCAwKTsKKwkJCQkvKiBPSyB0byBpZ25vcmUgdGhlIHJldHVy biB2YWx1ZTsgcGxhbiBjYW4ndCBiZWNvbWUgaW52YWxpZC4gKi8KKwkJCQkodm9pZCkgRXhlY3V0 b3JTdGFydChxZGVzYywgMCk7CiAJCQkJRXhlY3V0b3JSdW4ocWRlc2MsIEZvcndhcmRTY2FuRGly ZWN0aW9uLCAwLCB0cnVlKTsKIAkJCQlFeGVjdXRvckZpbmlzaChxZGVzYyk7CiAJCQkJRXhlY3V0 b3JFbmQocWRlc2MpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCmluZGV4IGFjMmU3NGZhM2YuLjcxMjQ5 OTRhNDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKQEAgLTQxMiw4ICs0MTIsMTIgQEAgcmVmcmVz aF9tYXR2aWV3X2RhdGFmaWxsKERlc3RSZWNlaXZlciAqZGVzdCwgUXVlcnkgKnF1ZXJ5LAogCQkJ CQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCWRlc3Qs IE5VTEwsIE5VTEwsIDApOwogCi0JLyogY2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhl IHBsYW4gZm9yIGV4ZWN1dGlvbiAqLwotCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCAwKTsKKwkv KgorCSAqIGNhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRp b24KKwkgKgorCSAqIE9LIHRvIGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlOyBwbGFuIGNhbid0IGJl Y29tZSBpbnZhbGlkLgorCSAqLworCSh2b2lkKSBFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgMCk7 CiAKIAkvKiBydW4gdGhlIHBsYW4gKi8KIAlFeGVjdXRvclJ1bihxdWVyeURlc2MsIEZvcndhcmRT Y2FuRGlyZWN0aW9uLCAwLCB0cnVlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3BvcnRhbGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYwppbmRleCA3 M2VkN2FhMmYwLi41MTIwZjkzNDE0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9w b3J0YWxjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jCkBAIC0x NDIsOSArMTQyLDEwIEBAIFBlcmZvcm1DdXJzb3JPcGVuKFBhcnNlU3RhdGUgKnBzdGF0ZSwgRGVj bGFyZUN1cnNvclN0bXQgKmNzdG10LCBQYXJhbUxpc3RJbmZvIHBhCiAKIAkvKgogCSAqIFN0YXJ0 IGV4ZWN1dGlvbiwgaW5zZXJ0aW5nIHBhcmFtZXRlcnMgaWYgYW55LgorCSAqCisJICogT0sgdG8g aWdub3JlIHRoZSByZXR1cm4gdmFsdWU7IHBsYW4gY2FuJ3QgYmVjb21lIGludmFsaWQgaGVyZS4K IAkgKi8KLQlQb3J0YWxTdGFydChwb3J0YWwsIHBhcmFtcywgMCwgR2V0QWN0aXZlU25hcHNob3Qo KSk7Ci0KKwkodm9pZCkgUG9ydGFsU3RhcnQocG9ydGFsLCBwYXJhbXMsIDAsIEdldEFjdGl2ZVNu YXBzaG90KCkpOwogCUFzc2VydChwb3J0YWwtPnN0cmF0ZWd5ID09IFBPUlRBTF9PTkVfU0VMRUNU KTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKaW5kZXggMThmNzAzMTlmYy4uNjk5ZGY0Mjlj NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwpAQCAtMTgzLDYgKzE4Myw3IEBAIEV4ZWN1dGVRdWVy eShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCXBhcmFtTEkgPSBFdmFsdWF0ZVBhcmFtcyhwc3RhdGUs IGVudHJ5LCBzdG10LT5wYXJhbXMsIGVzdGF0ZSk7CiAJfQogCityZXBsYW46CiAJLyogQ3JlYXRl IGEgbmV3IHBvcnRhbCB0byBydW4gdGhlIHF1ZXJ5IGluICovCiAJcG9ydGFsID0gQ3JlYXRlTmV3 UG9ydGFsKCk7CiAJLyogRG9uJ3QgZGlzcGxheSB0aGUgcG9ydGFsIGluIHBnX2N1cnNvcnMsIGl0 IGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seSAqLwpAQCAtMjUxLDkgKzI1MiwxNSBAQCBFeGVjdXRl UXVlcnkoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCX0KIAogCS8qCi0JICogUnVuIHRoZSBwb3J0YWwg YXMgYXBwcm9wcmlhdGUuCisJICogUnVuIHRoZSBwb3J0YWwgYXMgYXBwcm9wcmlhdGUuICBJZiB0 aGUgcG9ydGFsIGNvbnRhaW5zIGEgY2FjaGVkIHBsYW4sIGl0CisJICogbXVzdCBiZSByZWNyZWF0 ZWQgaWYgdGhlIGNhY2hlZCBwbGFuIHdhcyBmb3VuZCB0byBoYXZlIGJlZW4gaW52YWxpZGF0ZWQK KwkgKiB3aGVuIGluaXRpYWxpemluZyBvbmUgb2YgdGhlIHBsYW4gdHJlZXMgY29udGFpbmVkIGlu IGl0LgogCSAqLwotCVBvcnRhbFN0YXJ0KHBvcnRhbCwgcGFyYW1MSSwgZWZsYWdzLCBHZXRBY3Rp dmVTbmFwc2hvdCgpKTsKKwlpZiAoIVBvcnRhbFN0YXJ0KHBvcnRhbCwgcGFyYW1MSSwgZWZsYWdz LCBHZXRBY3RpdmVTbmFwc2hvdCgpKSkKKwl7CisJCVBvcnRhbERyb3AocG9ydGFsLCBmYWxzZSk7 CisJCWdvdG8gcmVwbGFuOworCX0KIAogCSh2b2lkKSBQb3J0YWxSdW4ocG9ydGFsLCBjb3VudCwg ZmFsc2UsIHRydWUsIGRlc3QsIGRlc3QsIHFjKTsKIApAQCAtNTc0LDcgKzU4MSw3IEBAIEV4cGxh aW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBF eHBsYWluU3RhdGUgKmVzLAogewogCVByZXBhcmVkU3RhdGVtZW50ICplbnRyeTsKIAljb25zdCBj aGFyICpxdWVyeV9zdHJpbmc7Ci0JQ2FjaGVkUGxhbiAqY3BsYW47CisJQ2FjaGVkUGxhbiAqY3Bs YW4gPSBOVUxMOwogCUxpc3QJICAgKnBsYW5fbGlzdDsKIAlMaXN0Q2VsbCAgICpwOwogCVBhcmFt TGlzdEluZm8gcGFyYW1MSSA9IE5VTEw7CkBAIC02MTgsNiArNjI1LDcgQEAgRXhwbGFpbkV4ZWN1 dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5T dGF0ZSAqZXMsCiAJfQogCiAJLyogUmVwbGFuIGlmIG5lZWRlZCwgYW5kIGFjcXVpcmUgYSB0cmFu c2llbnQgcmVmY291bnQgKi8KK3JlcGxhbjoKIAljcGxhbiA9IEdldENhY2hlZFBsYW4oZW50cnkt PnBsYW5zb3VyY2UsIHBhcmFtTEksCiAJCQkJCQkgIEN1cnJlbnRSZXNvdXJjZU93bmVyLCBxdWVy eUVudik7CiAKQEAgLTYzOSw4ICs2NDcsMjEgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRl U3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCVBs YW5uZWRTdG10ICpwc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBwKTsKIAogCQlpZiAo cHN0bXQtPmNvbW1hbmRUeXBlICE9IENNRF9VVElMSVRZKQotCQkJRXhwbGFpbk9uZVBsYW4ocHN0 bXQsIGludG8sIGVzLCBxdWVyeV9zdHJpbmcsIHBhcmFtTEksIHF1ZXJ5RW52LAotCQkJCQkJICAg JnBsYW5kdXJhdGlvbiwgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCkpOworCQl7CisJ CQlRdWVyeURlc2MgKnF1ZXJ5RGVzYzsKKworCQkJcXVlcnlEZXNjID0gRXhwbGFpblF1ZXJ5RGVz Yyhwc3RtdCwgcXVlcnlTdHJpbmcsCisJCQkJCQkJCQkJIGludG8sIGVzLCBwYXJhbUxJLCBxdWVy eUVudik7CisJCQlpZiAocXVlcnlEZXNjID09IE5VTEwpCisJCQl7CisJCQkJRXhwbGFpblJlc2V0 T3V0cHV0KGVzKTsKKwkJCQlSZWxlYXNlQ2FjaGVkUGxhbihjcGxhbiwgQ3VycmVudFJlc291cmNl T3duZXIpOworCQkJCWdvdG8gcmVwbGFuOworCQkJfQorCQkJRXhwbGFpbk9uZVBsYW4ocXVlcnlE ZXNjLCBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLCBwYXJhbUxJLAorCQkJCQkJICAgcXVlcnlFbnYs ICZwbGFuZHVyYXRpb24sCisJCQkJCQkgICAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNhZ2UgOiBOVUxM KSk7CisJCX0KIAkJZWxzZQogCQkJRXhwbGFpbk9uZVV0aWxpdHkocHN0bXQtPnV0aWxpdHlTdG10 LCBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLAogCQkJCQkJCSAgcGFyYW1MSSwgcXVlcnlFbnYpOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdHJpZ2dlci5jCmluZGV4IDUyMTc3NzU5YWIuLmRkMTM5NDMyYjkgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy90cmlnZ2VyLmMKQEAgLTUwMDksNiArNTAwOSwxOSBAQCBBZnRlclRyaWdnZXJCZWdpblF1 ZXJ5KHZvaWQpCiAJYWZ0ZXJUcmlnZ2Vycy5xdWVyeV9kZXB0aCsrOwogfQogCisvKiAtLS0tLS0t LS0tCisgKiBBZnRlclRyaWdnZXJDYW5jZWxRdWVyeSgpCisgKgorICoJQ2FsbGVkIGZyb20gRXhl Y3V0b3JFbmQoKSBpZiB0aGUgcXVlcnkgZXhlY3V0aW9uIHdhcyBjYW5jZWxlZC4KKyAqIC0tLS0t LS0tLS0KKyAqLwordm9pZAorQWZ0ZXJUcmlnZ2VyQ2FuY2VsUXVlcnkodm9pZCkKK3sKKwkvKiBT ZXQgdG8gYSB2YWx1ZSBkZW5vdGluZyB0aGF0IG5vIHF1ZXJ5IGlzIGFjdGl2ZS4gKi8KKwlhZnRl clRyaWdnZXJzLnF1ZXJ5X2RlcHRoID0gLTE7Cit9CisKIAogLyogLS0tLS0tLS0tLQogICogQWZ0 ZXJUcmlnZ2VyRW5kUXVlcnkoKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggZjMwNTRjYmU3 ZS4uODhlYmZiMjE4YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC03OSw3ICs3OSw3IEBA IEV4ZWN1dG9yRW5kX2hvb2tfdHlwZSBFeGVjdXRvckVuZF9ob29rID0gTlVMTDsKIEV4ZWN1dG9y Q2hlY2tQZXJtc19ob29rX3R5cGUgRXhlY3V0b3JDaGVja1Blcm1zX2hvb2sgPSBOVUxMOwogCiAv KiBkZWNscyBmb3IgbG9jYWwgcm91dGluZXMgb25seSB1c2VkIHdpdGhpbiB0aGlzIG1vZHVsZSAq Lwotc3RhdGljIHZvaWQgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3Mp Oworc3RhdGljIGJvb2wgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3Mp Owogc3RhdGljIHZvaWQgQ2hlY2tWYWxpZFJvd01hcmtSZWwoUmVsYXRpb24gcmVsLCBSb3dNYXJr VHlwZSBtYXJrVHlwZSk7CiBzdGF0aWMgdm9pZCBFeGVjUG9zdHByb2Nlc3NQbGFuKEVTdGF0ZSAq ZXN0YXRlKTsKIHN0YXRpYyB2b2lkIEV4ZWNFbmRQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBF U3RhdGUgKmVzdGF0ZSk7CkBAIC0xMTksNiArMTE5LDEzIEBAIHN0YXRpYyB2b2lkIEV2YWxQbGFu UXVhbFN0YXJ0KEVQUVN0YXRlICplcHFzdGF0ZSwgUGxhbiAqcGxhblRyZWUpOwogICoKICAqIGVm bGFncyBjb250YWlucyBmbGFnIGJpdHMgYXMgZGVzY3JpYmVkIGluIGV4ZWN1dG9yLmguCiAgKgor ICogUGxhbiBpbml0aWFsaXphdGlvbiBtYXkgZmFpbCBpZiB0aGUgaW5wdXQgcGxhbiB0cmVlIGlz IGZvdW5kIHRvIGhhdmUgYmVlbgorICogaW52YWxpZGF0ZWQsIHdoaWNoIGNhbiBoYXBwZW4gaWYg aXQgY29tZXMgZnJvbSBhIENhY2hlZFBsYW4uCisgKgorICogUmV0dXJucyB0cnVlIGlmIHBsYW4g d2FzIHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplZCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLiAgSWYKKyAq IHRoZSBsYXR0ZXIsIHRoZSBjYWxsZXIgbXVzdCBjYWxsIEV4ZWN1dG9yRW5kKCkgb24gJ3F1ZXJ5 RGVzYycgdG8gY2xlYW4gdXAKKyAqIGFmdGVyIGZhaWxlZCBwbGFuIGluaXRpYWxpemF0aW9uLgor ICoKICAqIE5COiB0aGUgQ3VycmVudE1lbW9yeUNvbnRleHQgd2hlbiB0aGlzIGlzIGNhbGxlZCB3 aWxsIGJlY29tZSB0aGUgcGFyZW50CiAgKiBvZiB0aGUgcGVyLXF1ZXJ5IGNvbnRleHQgdXNlZCBm b3IgdGhpcyBFeGVjdXRvciBpbnZvY2F0aW9uLgogICoKQEAgLTEyOCw3ICsxMzUsNyBAQCBzdGF0 aWMgdm9pZCBFdmFsUGxhblF1YWxTdGFydChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5U cmVlKTsKICAqCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KLXZvaWQKK2Jvb2wKIEV4ZWN1dG9yU3RhcnQoUXVl cnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiB7CiAJLyoKQEAgLTE0MCwxNCArMTQ3LDE1 IEBAIEV4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJcGdz dGF0X3JlcG9ydF9xdWVyeV9pZChxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5xdWVyeUlkLCBmYWxz ZSk7CiAKIAlpZiAoRXhlY3V0b3JTdGFydF9ob29rKQotCQkoKkV4ZWN1dG9yU3RhcnRfaG9vaykg KHF1ZXJ5RGVzYywgZWZsYWdzKTsKLQllbHNlCi0JCXN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQocXVl cnlEZXNjLCBlZmxhZ3MpOworCQlyZXR1cm4gKCpFeGVjdXRvclN0YXJ0X2hvb2spIChxdWVyeURl c2MsIGVmbGFncyk7CisKKwlyZXR1cm4gc3RhbmRhcmRfRXhlY3V0b3JTdGFydChxdWVyeURlc2Ms IGVmbGFncyk7CiB9CiAKLXZvaWQKK2Jvb2wKIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlE ZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiB7CisJYm9vbAkJcGxhbl92YWxpZDsKIAlFU3Rh dGUJICAgKmVzdGF0ZTsKIAlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CiAKQEAgLTI2Myw5ICsy NzEsMTQgQEAgc3RhbmRhcmRfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50 IGVmbGFncykKIAkvKgogCSAqIEluaXRpYWxpemUgdGhlIHBsYW4gc3RhdGUgdHJlZQogCSAqLwot CUluaXRQbGFuKHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwlwbGFuX3ZhbGlkID0gSW5pdFBsYW4ocXVl cnlEZXNjLCBlZmxhZ3MpOworCisJLyogTWFyayBleGVjdXRpb24gYXMgY2FuY2VsZWQgaWYgcGxh biB3b24ndCBiZSBleGVjdXRlZC4gKi8KKwllc3RhdGUtPmVzX2NhbmNlbGVkID0gIXBsYW5fdmFs aWQ7CiAKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisKKwlyZXR1cm4gcGxh bl92YWxpZDsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzI1LDYgKzMzOCw3IEBAIHN0YW5kYXJkX0V4 ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLAogCWVzdGF0ZSA9IHF1ZXJ5RGVzYy0+ZXN0 YXRlOwogCiAJQXNzZXJ0KGVzdGF0ZSAhPSBOVUxMKTsKKwlBc3NlcnQoIWVzdGF0ZS0+ZXNfY2Fu Y2VsZWQpOwogCUFzc2VydCghKGVzdGF0ZS0+ZXNfdG9wX2VmbGFncyAmIEVYRUNfRkxBR19FWFBM QUlOX09OTFkpKTsKIAogCS8qCkBAIC00MjksNyArNDQzLDcgQEAgc3RhbmRhcmRfRXhlY3V0b3JG aW5pc2goUXVlcnlEZXNjICpxdWVyeURlc2MpCiAJQXNzZXJ0KCEoZXN0YXRlLT5lc190b3BfZWZs YWdzICYgRVhFQ19GTEFHX0VYUExBSU5fT05MWSkpOwogCiAJLyogVGhpcyBzaG91bGQgYmUgcnVu IG9uY2UgYW5kIG9ubHkgb25jZSBwZXIgRXhlY3V0b3IgaW5zdGFuY2UgKi8KLQlBc3NlcnQoIWVz dGF0ZS0+ZXNfZmluaXNoZWQpOworCUFzc2VydCghZXN0YXRlLT5lc19maW5pc2hlZCAmJiAhZXN0 YXRlLT5lc19jYW5jZWxlZCk7CiAKIAkvKiBTd2l0Y2ggaW50byBwZXItcXVlcnkgbWVtb3J5IGNv bnRleHQgKi8KIAlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGVzdGF0ZS0+ZXNf cXVlcnlfY3h0KTsKQEAgLTQ4OCwxMSArNTAyLDExIEBAIHN0YW5kYXJkX0V4ZWN1dG9yRW5kKFF1 ZXJ5RGVzYyAqcXVlcnlEZXNjKQogCUFzc2VydChlc3RhdGUgIT0gTlVMTCk7CiAKIAkvKgotCSAq IENoZWNrIHRoYXQgRXhlY3V0b3JGaW5pc2ggd2FzIGNhbGxlZCwgdW5sZXNzIGluIEVYUExBSU4t b25seSBtb2RlLiBUaGlzCi0JICogQXNzZXJ0IGlzIG5lZWRlZCBiZWNhdXNlIEV4ZWN1dG9yRmlu aXNoIGlzIG5ldyBhcyBvZiA5LjEsIGFuZCBjYWxsZXJzCi0JICogbWlnaHQgZm9yZ2V0IHRvIGNh bGwgaXQuCisJICogQ2hlY2sgdGhhdCBFeGVjdXRvckZpbmlzaCB3YXMgY2FsbGVkLCB1bmxlc3Mg aW4gRVhQTEFJTi1vbmx5IG1vZGUgb3IgaWYKKwkgKiBleGVjdXRpb24gd2FzIGNhbmNlbGVkLiBU aGlzIEFzc2VydCBpcyBuZWVkZWQgYmVjYXVzZSBFeGVjdXRvckZpbmlzaCBpcworCSAqIG5ldyBh cyBvZiA5LjEsIGFuZCBjYWxsZXJzIG1pZ2h0IGZvcmdldCB0byBjYWxsIGl0LgogCSAqLwotCUFz c2VydChlc3RhdGUtPmVzX2ZpbmlzaGVkIHx8CisJQXNzZXJ0KGVzdGF0ZS0+ZXNfZmluaXNoZWQg fHwgZXN0YXRlLT5lc19jYW5jZWxlZCB8fAogCQkgICAoZXN0YXRlLT5lc190b3BfZWZsYWdzICYg RVhFQ19GTEFHX0VYUExBSU5fT05MWSkpOwogCiAJLyoKQEAgLTUwNiw2ICs1MjAsMTQgQEAgc3Rh bmRhcmRfRXhlY3V0b3JFbmQoUXVlcnlEZXNjICpxdWVyeURlc2MpCiAJVW5yZWdpc3RlclNuYXBz aG90KGVzdGF0ZS0+ZXNfc25hcHNob3QpOwogCVVucmVnaXN0ZXJTbmFwc2hvdChlc3RhdGUtPmVz X2Nyb3NzY2hlY2tfc25hcHNob3QpOwogCisJLyoKKwkgKiBDYW5jZWwgdHJpZ2dlciBleGVjdXRp b24gdG9vIGlmIHRoZSBxdWVyeSBleGVjdXRpb24gd2FzIGNhbmNlbGVkLgorCSAqLworCWlmIChl c3RhdGUtPmVzX2NhbmNlbGVkICYmCisJCSEoZXN0YXRlLT5lc190b3BfZWZsYWdzICYKKwkJICAo RVhFQ19GTEFHX1NLSVBfVFJJR0dFUlMgfCBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZKSkpCisJCUFm dGVyVHJpZ2dlckNhbmNlbFF1ZXJ5KCk7CisKIAkvKgogCSAqIE11c3Qgc3dpdGNoIG91dCBvZiBj b250ZXh0IGJlZm9yZSBkZXN0cm95aW5nIGl0CiAJICovCkBAIC04MjksOSArODUxLDEyIEBAIEV4 ZWNDaGVja1hhY3RSZWFkT25seShQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQpCiAgKgogICoJCUlu aXRpYWxpemVzIHRoZSBxdWVyeSBwbGFuOiBvcGVuIGZpbGVzLCBhbGxvY2F0ZSBzdG9yYWdlCiAg KgkJYW5kIHN0YXJ0IHVwIHRoZSBydWxlIG1hbmFnZXIKKyAqCisgKiBSZXR1cm5zIHRydWUgaWYg dGhlIHBsYW4gdHJlZSBpcyBzdWNjZXNzZnVsbHkgaW5pdGlhbGl6ZWQgZm9yIGV4ZWN1dGlvbiwK KyAqIGZhbHNlIG90aGVyd2lzZS4KICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwotc3RhdGljIHZvaWQKK3N0YXRp YyBib29sCiBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIHsKIAlD bWRUeXBlCQlvcGVyYXRpb24gPSBxdWVyeURlc2MtPm9wZXJhdGlvbjsKQEAgLTEwMTQsOSArMTAz OSwxNSBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkJfQog CX0KIAorCXF1ZXJ5RGVzYy0+dHVwRGVzYyA9IHR1cFR5cGU7CisJQXNzZXJ0KHBsYW5zdGF0ZSAh PSBOVUxMKTsKKwlxdWVyeURlc2MtPnBsYW5zdGF0ZSA9IHBsYW5zdGF0ZTsKKwlyZXR1cm4gdHJ1 ZTsKKwogcGxhbl9pbml0X3N1c3BlbmRlZDoKIAlxdWVyeURlc2MtPnR1cERlc2MgPSB0dXBUeXBl OwogCXF1ZXJ5RGVzYy0+cGxhbnN0YXRlID0gcGxhbnN0YXRlOworCXJldHVybiBmYWxzZTsKIH0K IAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKaW5kZXggY2MyYjhjY2FiNy4uZjg0 YTNhMTdkNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKQEAgLTE0MzAsNyArMTQz MCw4IEBAIFBhcmFsbGVsUXVlcnlNYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykK IAogCS8qIFN0YXJ0IHVwIHRoZSBleGVjdXRvciAqLwogCXF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQt PmppdEZsYWdzID0gZnBlcy0+aml0X2ZsYWdzOwotCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBm cGVzLT5lZmxhZ3MpOworCS8qIE9LIHRvIGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlOyBwbGFuIGNh bid0IGJlY29tZSBpbnZhbGlkLiAqLworCSh2b2lkKSBFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywg ZnBlcy0+ZWZsYWdzKTsKIAogCS8qIFNwZWNpYWwgZXhlY3V0b3IgaW5pdGlhbGl6YXRpb24gc3Rl cHMgZm9yIHBhcmFsbGVsIHdvcmtlcnMgKi8KIAlxdWVyeURlc2MtPnBsYW5zdGF0ZS0+c3RhdGUt PmVzX3F1ZXJ5X2RzYSA9IGFyZWE7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCmluZGV4IGMzZjcy NzliMDYuLmRhOGExNTExYWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNV dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC0xNTEsNiAr MTUxLDcgQEAgQ3JlYXRlRXhlY3V0b3JTdGF0ZSh2b2lkKQogCWVzdGF0ZS0+ZXNfdG9wX2VmbGFn cyA9IDA7CiAJZXN0YXRlLT5lc19pbnN0cnVtZW50ID0gMDsKIAllc3RhdGUtPmVzX2ZpbmlzaGVk ID0gZmFsc2U7CisJZXN0YXRlLT5lc19jYW5jZWxlZCA9IGZhbHNlOwogCiAJZXN0YXRlLT5lc19l eHByY29udGV4dHMgPSBOSUw7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1 bmN0aW9ucy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKaW5kZXggZjU1NDI0 ZWI1YS4uOGNmMGIzMTMyZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rp b25zLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKQEAgLTg2Miw3ICs4 NjIsOSBAQCBwb3N0cXVlbF9zdGFydChleGVjdXRpb25fc3RhdGUgKmVzLCBTUUxGdW5jdGlvbkNh Y2hlUHRyIGZjYWNoZSkKIAkJCWVmbGFncyA9IEVYRUNfRkxBR19TS0lQX1RSSUdHRVJTOwogCQll bHNlCiAJCQllZmxhZ3MgPSAwOwkJCS8qIGRlZmF1bHQgcnVuLXRvLWNvbXBsZXRpb24gZmxhZ3Mg Ki8KLQkJRXhlY3V0b3JTdGFydChlcy0+cWQsIGVmbGFncyk7CisKKwkJLyogT0sgdG8gaWdub3Jl IHRoZSByZXR1cm4gdmFsdWU7IHBsYW4gY2FuJ3QgYmVjb21lIGludmFsaWQuICovCisJCSh2b2lk KSBFeGVjdXRvclN0YXJ0KGVzLT5xZCwgZWZsYWdzKTsKIAl9CiAKIAllcy0+c3RhdHVzID0gRl9F WEVDX1JVTjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivc3BpLmMKaW5kZXggMzM5NzU2ODdiMy4uNmE5NmQ3ZmMyMiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivc3BpLmMKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIGludAlfU1BJX2V4ZWN1dGVfcGxhbihT UElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogc3RhdGlj IFBhcmFtTGlzdEluZm8gX1NQSV9jb252ZXJ0X3BhcmFtcyhpbnQgbmFyZ3MsIE9pZCAqYXJndHlw ZXMsCiAJCQkJCQkJCQkJIERhdHVtICpWYWx1ZXMsIGNvbnN0IGNoYXIgKk51bGxzKTsKIAotc3Rh dGljIGludAlfU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBmaXJlX3RyaWdn ZXJzLCB1aW50NjQgdGNvdW50KTsKK3N0YXRpYyBpbnQJX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpx dWVyeURlc2MsIHVpbnQ2NCB0Y291bnQpOwogCiBzdGF0aWMgdm9pZCBfU1BJX2Vycm9yX2NhbGxi YWNrKHZvaWQgKmFyZyk7CiAKQEAgLTE1ODIsNiArMTU4Miw3IEBAIFNQSV9jdXJzb3Jfb3Blbl9p bnRlcm5hbChjb25zdCBjaGFyICpuYW1lLCBTUElQbGFuUHRyIHBsYW4sCiAJU25hcHNob3QJc25h cHNob3Q7CiAJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OwogCVBvcnRhbAkJcG9ydGFsOworCWJv b2wJCXBsYW5fdmFsaWQ7CiAJU1BJQ2FsbGJhY2tBcmcgc3BpY2FsbGJhY2thcmc7CiAJRXJyb3JD b250ZXh0Q2FsbGJhY2sgc3BpZXJyY29udGV4dDsKIApAQCAtMTYyMyw2ICsxNjI0LDcgQEAgU1BJ X2N1cnNvcl9vcGVuX2ludGVybmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwK IAlfU1BJX2N1cnJlbnQtPnByb2Nlc3NlZCA9IDA7CiAJX1NQSV9jdXJyZW50LT50dXB0YWJsZSA9 IE5VTEw7CiAKK3JlcGxhbjoKIAkvKiBDcmVhdGUgdGhlIHBvcnRhbCAqLwogCWlmIChuYW1lID09 IE5VTEwgfHwgbmFtZVswXSA9PSAnXDAnKQogCXsKQEAgLTE3NjYsMTUgKzE3NjgsMjMgQEAgU1BJ X2N1cnNvcl9vcGVuX2ludGVybmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwK IAl9CiAKIAkvKgotCSAqIFN0YXJ0IHBvcnRhbCBleGVjdXRpb24uCisJICogU3RhcnQgcG9ydGFs IGV4ZWN1dGlvbi4gIElmIHRoZSBwb3J0YWwgY29udGFpbnMgYSBjYWNoZWQgcGxhbiwgaXQgbXVz dAorCSAqIGJlIHJlY3JlYXRlZCBpZiB0aGUgY2FjaGVkIHBsYW4gd2FzIGZvdW5kIHRvIGhhdmUg YmVlbiBpbnZhbGlkYXRlZCB3aGVuCisJICogaW5pdGlhbGl6aW5nIG9uZSBvZiB0aGUgcGxhbiB0 cmVlcyBjb250YWluZWQgaW4gaXQuCiAJICovCi0JUG9ydGFsU3RhcnQocG9ydGFsLCBwYXJhbUxJ LCAwLCBzbmFwc2hvdCk7CisJcGxhbl92YWxpZCA9IFBvcnRhbFN0YXJ0KHBvcnRhbCwgcGFyYW1M SSwgMCwgc25hcHNob3QpOwogCiAJQXNzZXJ0KHBvcnRhbC0+c3RyYXRlZ3kgIT0gUE9SVEFMX01V TFRJX1FVRVJZKTsKIAogCS8qIFBvcCB0aGUgZXJyb3IgY29udGV4dCBzdGFjayAqLwogCWVycm9y X2NvbnRleHRfc3RhY2sgPSBzcGllcnJjb250ZXh0LnByZXZpb3VzOwogCisJaWYgKCFwbGFuX3Zh bGlkKQorCXsKKwkJUG9ydGFsRHJvcChwb3J0YWwsIGZhbHNlKTsKKwkJZ290byByZXBsYW47CisJ fQorCiAJLyogUG9wIHRoZSBTUEkgc3RhY2sgKi8KIAlfU1BJX2VuZF9jYWxsKHRydWUpOwogCkBA IC0yNTUyLDYgKzI1NjIsNyBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNv bnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCQkgKiBSZXBsYW4gaWYgbmVlZGVkLCBh bmQgaW5jcmVtZW50IHBsYW4gcmVmY291bnQuICBJZiBpdCdzIGEgc2F2ZWQKIAkJICogcGxhbiwg dGhlIHJlZmNvdW50IG11c3QgYmUgYmFja2VkIGJ5IHRoZSBwbGFuX293bmVyLgogCQkgKi8KK3Jl cGxhbjoKIAkJY3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIG9wdGlvbnMtPnBhcmFt cywKIAkJCQkJCQkgIHBsYW5fb3duZXIsIF9TUElfY3VycmVudC0+cXVlcnlFbnYpOwogCkBAIC0y NjYxLDYgKzI2NzIsNyBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0 IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCQkJewogCQkJCVF1ZXJ5RGVzYyAgKnFkZXNj OwogCQkJCVNuYXBzaG90CXNuYXA7CisJCQkJaW50CQkJZWZsYWdzOwogCiAJCQkJaWYgKEFjdGl2 ZVNuYXBzaG90U2V0KCkpCiAJCQkJCXNuYXAgPSBHZXRBY3RpdmVTbmFwc2hvdCgpOwpAQCAtMjY3 NCw4ICsyNjg2LDIzIEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3Qg U1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCQkJCQkJCQkJb3B0aW9ucy0+cGFyYW1zLAog CQkJCQkJCQkJCV9TUElfY3VycmVudC0+cXVlcnlFbnYsCiAJCQkJCQkJCQkJMCk7Ci0JCQkJcmVz ID0gX1NQSV9wcXVlcnkocWRlc2MsIGZpcmVfdHJpZ2dlcnMsCi0JCQkJCQkJCSAgY2FuU2V0VGFn ID8gb3B0aW9ucy0+dGNvdW50IDogMCk7CisKKwkJCQkvKiBTZWxlY3QgZXhlY3V0aW9uIG9wdGlv bnMgKi8KKwkJCQlpZiAoZmlyZV90cmlnZ2VycykKKwkJCQkJZWZsYWdzID0gMDsJCQkJLyogZGVm YXVsdCBydW4tdG8tY29tcGxldGlvbiBmbGFncyAqLworCQkJCWVsc2UKKwkJCQkJZWZsYWdzID0g RVhFQ19GTEFHX1NLSVBfVFJJR0dFUlM7CisKKwkJCQlpZiAoIUV4ZWN1dG9yU3RhcnQocWRlc2Ms IGVmbGFncykpCisJCQkJeworCQkJCQlFeGVjdXRvckVuZChxZGVzYyk7CisJCQkJCUZyZWVRdWVy eURlc2MocWRlc2MpOworCQkJCQlBc3NlcnQoY3BsYW4pOworCQkJCQlSZWxlYXNlQ2FjaGVkUGxh bihjcGxhbiwgcGxhbl9vd25lcik7CisJCQkJCWdvdG8gcmVwbGFuOworCQkJCX0KKworCQkJCXJl cyA9IF9TUElfcHF1ZXJ5KHFkZXNjLCBjYW5TZXRUYWcgPyBvcHRpb25zLT50Y291bnQgOiAwKTsK IAkJCQlGcmVlUXVlcnlEZXNjKHFkZXNjKTsKIAkJCX0KIAkJCWVsc2UKQEAgLTI4NTAsMTAgKzI4 NzcsOSBAQCBfU1BJX2NvbnZlcnRfcGFyYW1zKGludCBuYXJncywgT2lkICphcmd0eXBlcywKIH0K IAogc3RhdGljIGludAotX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIGJvb2wgZmly ZV90cmlnZ2VycywgdWludDY0IHRjb3VudCkKK19TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVlcnlE ZXNjLCB1aW50NjQgdGNvdW50KQogewogCWludAkJCW9wZXJhdGlvbiA9IHF1ZXJ5RGVzYy0+b3Bl cmF0aW9uOwotCWludAkJCWVmbGFnczsKIAlpbnQJCQlyZXM7CiAKIAlzd2l0Y2ggKG9wZXJhdGlv bikKQEAgLTI4OTcsMTQgKzI5MjMsNiBAQCBfU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVz YywgYm9vbCBmaXJlX3RyaWdnZXJzLCB1aW50NjQgdGNvdW50KQogCQlSZXNldFVzYWdlKCk7CiAj ZW5kaWYKIAotCS8qIFNlbGVjdCBleGVjdXRpb24gb3B0aW9ucyAqLwotCWlmIChmaXJlX3RyaWdn ZXJzKQotCQllZmxhZ3MgPSAwOwkJCQkvKiBkZWZhdWx0IHJ1bi10by1jb21wbGV0aW9uIGZsYWdz ICovCi0JZWxzZQotCQllZmxhZ3MgPSBFWEVDX0ZMQUdfU0tJUF9UUklHR0VSUzsKLQotCUV4ZWN1 dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwotCiAJRXhlY3V0b3JSdW4ocXVlcnlEZXNjLCBG b3J3YXJkU2NhbkRpcmVjdGlvbiwgdGNvdW50LCB0cnVlKTsKIAogCV9TUElfY3VycmVudC0+cHJv Y2Vzc2VkID0gcXVlcnlEZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZDsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpp bmRleCBlNDc1NmY4YmUyLi4yMDQwMDJjZmYyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29w L3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC0xMjMyLDcg KzEyMzIsMTIgQEAgZXhlY19zaW1wbGVfcXVlcnkoY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nKQog CQkvKgogCQkgKiBTdGFydCB0aGUgcG9ydGFsLiAgTm8gcGFyYW1ldGVycyBoZXJlLgogCQkgKi8K LQkJUG9ydGFsU3RhcnQocG9ydGFsLCBOVUxMLCAwLCBJbnZhbGlkU25hcHNob3QpOworCQl7CisJ CQlib29sCXBsYW5fdmFsaWQgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZOworCisJCQlwbGFuX3Zh bGlkID0gUG9ydGFsU3RhcnQocG9ydGFsLCBOVUxMLCAwLCBJbnZhbGlkU25hcHNob3QpOworCQkJ QXNzZXJ0KHBsYW5fdmFsaWQpOworCQl9CiAKIAkJLyoKIAkJICogU2VsZWN0IHRoZSBhcHByb3By aWF0ZSBvdXRwdXQgZm9ybWF0OiB0ZXh0IHVubGVzcyB3ZSBhcmUgZG9pbmcgYQpAQCAtMTczNyw2 ICsxNzQyLDcgQEAgZXhlY19iaW5kX21lc3NhZ2UoU3RyaW5nSW5mbyBpbnB1dF9tZXNzYWdlKQog CQkJCQkJImNvbW1hbmRzIGlnbm9yZWQgdW50aWwgZW5kIG9mIHRyYW5zYWN0aW9uIGJsb2NrIiks CiAJCQkJIGVycmRldGFpbF9hYm9ydCgpKSk7CiAKK3JlcGxhbjoKIAkvKgogCSAqIENyZWF0ZSB0 aGUgcG9ydGFsLiAgQWxsb3cgc2lsZW50IHJlcGxhY2VtZW50IG9mIGFuIGV4aXN0aW5nIHBvcnRh bCBvbmx5CiAJICogaWYgdGhlIHVubmFtZWQgcG9ydGFsIGlzIHNwZWNpZmllZC4KQEAgLTIwMjgs OSArMjAzNCwxNSBAQCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZvIGlucHV0X21lc3NhZ2Up CiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAKIAkvKgotCSAqIEFuZCB3ZSdyZSByZWFkeSB0byBz dGFydCBwb3J0YWwgZXhlY3V0aW9uLgorCSAqIFN0YXJ0IHBvcnRhbCBleGVjdXRpb24uICBJZiB0 aGUgcG9ydGFsIGNvbnRhaW5zIGEgY2FjaGVkIHBsYW4sIGl0IG11c3QKKwkgKiBiZSByZWNyZWF0 ZWQgaWYgdGhlIGNhY2hlZCBwbGFuIHdhcyBmb3VuZCB0byBoYXZlIGJlZW4gaW52YWxpZGF0ZWQg d2hlbgorCSAqIGluaXRpYWxpemluZyBvbmUgb2YgdGhlIHBsYW4gdHJlZXMgY29udGFpbmVkIGlu IGl0LgogCSAqLwotCVBvcnRhbFN0YXJ0KHBvcnRhbCwgcGFyYW1zLCAwLCBJbnZhbGlkU25hcHNo b3QpOworCWlmICghUG9ydGFsU3RhcnQocG9ydGFsLCBwYXJhbXMsIDAsIEludmFsaWRTbmFwc2hv dCkpCisJeworCQlQb3J0YWxEcm9wKHBvcnRhbCwgZmFsc2UpOworCQlnb3RvIHJlcGxhbjsKKwl9 CiAKIAkvKgogCSAqIEFwcGx5IHRoZSByZXN1bHQgZm9ybWF0IHJlcXVlc3RzIHRvIHRoZSBwb3J0 YWwuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jIGIvc3JjL2JhY2tlbmQv dGNvcC9wcXVlcnkuYwppbmRleCA1NTY1ZjIwMGMzLi45YTk2Yjc3ZjFlIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMK QEAgLTE5LDYgKzE5LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAi Y29tbWFuZHMvcHJlcGFyZS5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNkZXNjLmgiCiAjaW5j bHVkZSAiZXhlY3V0b3IvdHN0b3JlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIK ICNpbmNsdWRlICJwZ190cmFjZS5oIgpAQCAtMzUsMTIgKzM2LDYgQEAKIFBvcnRhbAkJQWN0aXZl UG9ydGFsID0gTlVMTDsKIAogCi1zdGF0aWMgdm9pZCBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQg KnBsYW4sCi0JCQkJCQkgY29uc3QgY2hhciAqc291cmNlVGV4dCwKLQkJCQkJCSBQYXJhbUxpc3RJ bmZvIHBhcmFtcywKLQkJCQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKLQkJCQkJCSBE ZXN0UmVjZWl2ZXIgKmRlc3QsCi0JCQkJCQkgUXVlcnlDb21wbGV0aW9uICpxYyk7CiBzdGF0aWMg dm9pZCBGaWxsUG9ydGFsU3RvcmUoUG9ydGFsIHBvcnRhbCwgYm9vbCBpc1RvcExldmVsKTsKIHN0 YXRpYyB1aW50NjQgUnVuRnJvbVN0b3JlKFBvcnRhbCBwb3J0YWwsIFNjYW5EaXJlY3Rpb24gZGly ZWN0aW9uLCB1aW50NjQgY291bnQsCiAJCQkJCQkgICBEZXN0UmVjZWl2ZXIgKmRlc3QpOwpAQCAt MTE2LDg2ICsxMTEsNiBAQCBGcmVlUXVlcnlEZXNjKFF1ZXJ5RGVzYyAqcWRlc2MpCiB9CiAKIAot LyoKLSAqIFByb2Nlc3NRdWVyeQotICoJCUV4ZWN1dGUgYSBzaW5nbGUgcGxhbm5hYmxlIHF1ZXJ5 IHdpdGhpbiBhIFBPUlRBTF9NVUxUSV9RVUVSWSwKLSAqCQlQT1JUQUxfT05FX1JFVFVSTklORywg b3IgUE9SVEFMX09ORV9NT0RfV0lUSCBwb3J0YWwKLSAqCi0gKglwbGFuOiB0aGUgcGxhbiB0cmVl IGZvciB0aGUgcXVlcnkKLSAqCXNvdXJjZVRleHQ6IHRoZSBzb3VyY2UgdGV4dCBvZiB0aGUgcXVl cnkKLSAqCXBhcmFtczogYW55IHBhcmFtZXRlcnMgbmVlZGVkCi0gKglkZXN0OiB3aGVyZSB0byBz ZW5kIHJlc3VsdHMKLSAqCXFjOiB3aGVyZSB0byBzdG9yZSB0aGUgY29tbWFuZCBjb21wbGV0aW9u IHN0YXR1cyBkYXRhLgotICoKLSAqIHFjIG1heSBiZSBOVUxMIGlmIGNhbGxlciBkb2Vzbid0IHdh bnQgYSBzdGF0dXMgc3RyaW5nLgotICoKLSAqIE11c3QgYmUgY2FsbGVkIGluIGEgbWVtb3J5IGNv bnRleHQgdGhhdCB3aWxsIGJlIHJlc2V0IG9yIGRlbGV0ZWQgb24KLSAqIGVycm9yOyBvdGhlcndp c2UgdGhlIGV4ZWN1dG9yJ3MgbWVtb3J5IHVzYWdlIHdpbGwgYmUgbGVha2VkLgotICovCi1zdGF0 aWMgdm9pZAotUHJvY2Vzc1F1ZXJ5KFBsYW5uZWRTdG10ICpwbGFuLAotCQkJIGNvbnN0IGNoYXIg KnNvdXJjZVRleHQsCi0JCQkgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCi0JCQkgUXVlcnlFbnZpcm9u bWVudCAqcXVlcnlFbnYsCi0JCQkgRGVzdFJlY2VpdmVyICpkZXN0LAotCQkJIFF1ZXJ5Q29tcGxl dGlvbiAqcWMpCi17Ci0JUXVlcnlEZXNjICAqcXVlcnlEZXNjOwotCi0JLyoKLQkgKiBDcmVhdGUg dGhlIFF1ZXJ5RGVzYyBvYmplY3QKLQkgKi8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2Mo cGxhbiwgc291cmNlVGV4dCwKLQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNu YXBzaG90LAotCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCAwKTsKLQotCS8qCi0JICog Q2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbgotCSAq LwotCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCAwKTsKLQotCS8qCi0JICogUnVuIHRoZSBwbGFu IHRvIGNvbXBsZXRpb24uCi0JICovCi0JRXhlY3V0b3JSdW4ocXVlcnlEZXNjLCBGb3J3YXJkU2Nh bkRpcmVjdGlvbiwgMCwgdHJ1ZSk7Ci0KLQkvKgotCSAqIEJ1aWxkIGNvbW1hbmQgY29tcGxldGlv biBzdGF0dXMgZGF0YSwgaWYgY2FsbGVyIHdhbnRzIG9uZS4KLQkgKi8KLQlpZiAocWMpCi0Jewot CQlzd2l0Y2ggKHF1ZXJ5RGVzYy0+b3BlcmF0aW9uKQotCQl7Ci0JCQljYXNlIENNRF9TRUxFQ1Q6 Ci0JCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfU0VMRUNULCBxdWVyeURlc2MtPmVz dGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKLQkJCQlicmVhazsKLQkJCWNhc2UgQ01EX0lOU0VSVDoKLQkJ CQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19JTlNFUlQsIHF1ZXJ5RGVzYy0+ZXN0YXRl LT5lc19wcm9jZXNzZWQpOwotCQkJCWJyZWFrOwotCQkJY2FzZSBDTURfVVBEQVRFOgotCQkJCVNl dFF1ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFHX1VQREFURSwgcXVlcnlEZXNjLT5lc3RhdGUtPmVz X3Byb2Nlc3NlZCk7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlIENNRF9ERUxFVEU6Ci0JCQkJU2V0UXVl cnlDb21wbGV0aW9uKHFjLCBDTURUQUdfREVMRVRFLCBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJv Y2Vzc2VkKTsKLQkJCQlicmVhazsKLQkJCWNhc2UgQ01EX01FUkdFOgotCQkJCVNldFF1ZXJ5Q29t cGxldGlvbihxYywgQ01EVEFHX01FUkdFLCBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2Vk KTsKLQkJCQlicmVhazsKLQkJCWRlZmF1bHQ6Ci0JCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBD TURUQUdfVU5LTk9XTiwgcXVlcnlEZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7Ci0JCQkJYnJl YWs7Ci0JCX0KLQl9Ci0KLQkvKgotCSAqIE5vdywgd2UgY2xvc2UgZG93biBhbGwgdGhlIHNjYW5z IGFuZCBmcmVlIGFsbG9jYXRlZCByZXNvdXJjZXMuCi0JICovCi0JRXhlY3V0b3JGaW5pc2gocXVl cnlEZXNjKTsKLQlFeGVjdXRvckVuZChxdWVyeURlc2MpOwotCi0JRnJlZVF1ZXJ5RGVzYyhxdWVy eURlc2MpOwotfQotCiAvKgogICogQ2hvb3NlUG9ydGFsU3RyYXRlZ3kKICAqCQlTZWxlY3QgcG9y dGFsIGV4ZWN1dGlvbiBzdHJhdGVneSBnaXZlbiB0aGUgaW50ZW5kZWQgc3RhdGVtZW50IGxpc3Qu CkBAIC00MjYsMTkgKzM0MSwyMSBAQCBGZXRjaFN0YXRlbWVudFRhcmdldExpc3QoTm9kZSAqc3Rt dCkKICAqIHByZXNlbnRseSBpZ25vcmVkIGZvciBub24tUE9SVEFMX09ORV9TRUxFQ1QgcG9ydGFs cyAoaXQncyBvbmx5IGludGVuZGVkCiAgKiB0byBiZSB1c2VkIGZvciBjdXJzb3JzKS4KICAqCi0g KiBPbiByZXR1cm4sIHBvcnRhbCBpcyByZWFkeSB0byBhY2NlcHQgUG9ydGFsUnVuKCkgY2FsbHMs IGFuZCB0aGUgcmVzdWx0Ci0gKiB0dXBkZXNjIChpZiBhbnkpIGlzIGtub3duLgorICogVHJ1ZSBp cyByZXR1cm5lZCBpZiBwb3J0YWwgaXMgcmVhZHkgdG8gYWNjZXB0IFBvcnRhbFJ1bigpIGNhbGxz LCBhbmQgdGhlCisgKiByZXN1bHQgdHVwZGVzYyAoaWYgYW55KSBpcyBrbm93bi4gIEZhbHNlIGlm IHRoZSBwbGFuIHRyZWUgaXMgbm8gbG9uZ2VyCisgKiB2YWxpZCwgaW4gd2hpY2ggY2FzZSwgdGhl IGNhbGxlciBtdXN0IHJldHJ5IGFmdGVyIGdlbmVyYXRpbmcgYSBuZXcKKyAqIENhY2hlZFBsYW4u CiAgKi8KLXZvaWQKK2Jvb2wKIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdElu Zm8gcGFyYW1zLAogCQkJaW50IGVmbGFncywgU25hcHNob3Qgc25hcHNob3QpCiB7CiAJUG9ydGFs CQlzYXZlQWN0aXZlUG9ydGFsOwogCVJlc291cmNlT3duZXIgc2F2ZVJlc291cmNlT3duZXI7Ci0J TWVtb3J5Q29udGV4dCBzYXZlUG9ydGFsQ29udGV4dDsKIAlNZW1vcnlDb250ZXh0IG9sZENvbnRl eHQ7CiAJUXVlcnlEZXNjICAqcXVlcnlEZXNjOwotCWludAkJCW15ZWZsYWdzOworCWludAkJCW15 ZWZsYWdzID0gMDsKKwlib29sCQlwbGFuX3ZhbGlkID0gdHJ1ZTsKIAogCUFzc2VydChQb3J0YWxJ c1ZhbGlkKHBvcnRhbCkpOwogCUFzc2VydChwb3J0YWwtPnN0YXR1cyA9PSBQT1JUQUxfREVGSU5F RCk7CkBAIC00NDgsMTUgKzM2NSwxMyBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJh bUxpc3RJbmZvIHBhcmFtcywKIAkgKi8KIAlzYXZlQWN0aXZlUG9ydGFsID0gQWN0aXZlUG9ydGFs OwogCXNhdmVSZXNvdXJjZU93bmVyID0gQ3VycmVudFJlc291cmNlT3duZXI7Ci0Jc2F2ZVBvcnRh bENvbnRleHQgPSBQb3J0YWxDb250ZXh0OwogCVBHX1RSWSgpOwogCXsKIAkJQWN0aXZlUG9ydGFs ID0gcG9ydGFsOwogCQlpZiAocG9ydGFsLT5yZXNvd25lcikKIAkJCUN1cnJlbnRSZXNvdXJjZU93 bmVyID0gcG9ydGFsLT5yZXNvd25lcjsKLQkJUG9ydGFsQ29udGV4dCA9IHBvcnRhbC0+cG9ydGFs Q29udGV4dDsKIAotCQlvbGRDb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKFBvcnRhbENv bnRleHQpOworCQlvbGRDb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHBvcnRhbC0+cXVl cnlDb250ZXh0KTsKIAogCQkvKiBNdXN0IHJlbWVtYmVyIHBvcnRhbCBwYXJhbSBsaXN0LCBpZiBh bnkgKi8KIAkJcG9ydGFsLT5wb3J0YWxQYXJhbXMgPSBwYXJhbXM7CkBAIC00NzIsNiArMzg3LDgg QEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCXN3 aXRjaCAocG9ydGFsLT5zdHJhdGVneSkKIAkJewogCQkJY2FzZSBQT1JUQUxfT05FX1NFTEVDVDoK KwkJCWNhc2UgUE9SVEFMX09ORV9SRVRVUk5JTkc6CisJCQljYXNlIFBPUlRBTF9PTkVfTU9EX1dJ VEg6CiAKIAkJCQkvKiBNdXN0IHNldCBzbmFwc2hvdCBiZWZvcmUgc3RhcnRpbmcgZXhlY3V0b3Iu ICovCiAJCQkJaWYgKHNuYXBzaG90KQpAQCAtNDg5LDggKzQwNiw4IEBAIFBvcnRhbFN0YXJ0KFBv cnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCSAqLwogCiAJCQkJLyoKLQkJ CQkgKiBDcmVhdGUgUXVlcnlEZXNjIGluIHBvcnRhbCdzIGNvbnRleHQ7IGZvciB0aGUgbW9tZW50 LCBzZXQKLQkJCQkgKiB0aGUgZGVzdGluYXRpb24gdG8gRGVzdE5vbmUuCisJCQkJICogQ3JlYXRl IFF1ZXJ5RGVzYyBpbiBwb3J0YWwtPnF1ZXJ5Q29udGV4dDsgZm9yIHRoZSBtb21lbnQsCisJCQkJ ICogc2V0IHRoZSBkZXN0aW5hdGlvbiB0byBEZXN0Tm9uZS4KIAkJCQkgKi8KIAkJCQlxdWVyeURl c2MgPSBDcmVhdGVRdWVyeURlc2MobGluaXRpYWxfbm9kZShQbGFubmVkU3RtdCwgcG9ydGFsLT5z dG10cyksCiAJCQkJCQkJCQkJCXBvcnRhbC0+c291cmNlVGV4dCwKQEAgLTUwMSwzMCArNDE4LDUx IEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJ CQkJCQkJCQlwb3J0YWwtPnF1ZXJ5RW52LAogCQkJCQkJCQkJCQkwKTsKIAorCQkJCS8qIFJlbWVt YmVyIGZvciBQb3J0YWxSdW5NdWx0aSgpLiAqLworCQkJCWlmIChwb3J0YWwtPnN0cmF0ZWd5ID09 IFBPUlRBTF9PTkVfUkVUVVJOSU5HIHx8CisJCQkJCXBvcnRhbC0+c3RyYXRlZ3kgPT0gUE9SVEFM X09ORV9NT0RfV0lUSCkKKwkJCQkJcG9ydGFsLT5xZGVzY3MgPSBsaXN0X21ha2UxKHF1ZXJ5RGVz Yyk7CisKIAkJCQkvKgogCQkJCSAqIElmIGl0J3MgYSBzY3JvbGxhYmxlIGN1cnNvciwgZXhlY3V0 b3IgbmVlZHMgdG8gc3VwcG9ydAogCQkJCSAqIFJFV0lORCBhbmQgYmFja3dhcmRzIHNjYW4sIGFz IHdlbGwgYXMgd2hhdGV2ZXIgdGhlIGNhbGxlcgogCQkJCSAqIG1pZ2h0J3ZlIGFza2VkIGZvci4K IAkJCQkgKi8KLQkJCQlpZiAocG9ydGFsLT5jdXJzb3JPcHRpb25zICYgQ1VSU09SX09QVF9TQ1JP TEwpCisJCQkJaWYgKHBvcnRhbC0+c3RyYXRlZ3kgPT0gUE9SVEFMX09ORV9TRUxFQ1QgJiYKKwkJ CQkJKHBvcnRhbC0+Y3Vyc29yT3B0aW9ucyAmIENVUlNPUl9PUFRfU0NST0xMKSkKIAkJCQkJbXll ZmxhZ3MgPSBlZmxhZ3MgfCBFWEVDX0ZMQUdfUkVXSU5EIHwgRVhFQ19GTEFHX0JBQ0tXQVJEOwog CQkJCWVsc2UKIAkJCQkJbXllZmxhZ3MgPSBlZmxhZ3M7CiAKIAkJCQkvKgotCQkJCSAqIENhbGwg RXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24KKwkJCQkgKiBD YWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uLiAgQQor CQkJCSAqIGNhY2hlZCBwbGFuIG1heSBnZXQgaW52YWxpZGF0ZWQgZHVyaW5nIHBsYW4gaW50aWFs aXphdGlvbi4KIAkJCQkgKi8KLQkJCQlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgbXllZmxhZ3Mp OworCQkJCWlmICghRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIG15ZWZsYWdzKSkKKwkJCQl7CisJ CQkJCUV4ZWN1dG9yRW5kKHF1ZXJ5RGVzYyk7CisJCQkJCUZyZWVRdWVyeURlc2MocXVlcnlEZXNj KTsKKwkJCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwkJCQkJcGxhbl92YWxpZCA9IGZhbHNlOwor CQkJCQlnb3RvIHBsYW5faW5pdF9mYWlsZWQ7CisJCQkJfQogCiAJCQkJLyoKLQkJCQkgKiBUaGlz IHRlbGxzIFBvcnRhbENsZWFudXAgdG8gc2h1dCBkb3duIHRoZSBleGVjdXRvcgorCQkJCSAqIFRo aXMgdGVsbHMgUG9ydGFsQ2xlYW51cCB0byBzaHV0IGRvd24gdGhlIGV4ZWN1dG9yLCB0aG91Z2gK KwkJCQkgKiBub3QgbmVlZGVkIGZvciBxdWVyaWVzIGhhbmRsZWQgYnkgUG9ydGFsUnVuTXVsdGko KS4KIAkJCQkgKi8KLQkJCQlwb3J0YWwtPnF1ZXJ5RGVzYyA9IHF1ZXJ5RGVzYzsKKwkJCQlpZiAo cG9ydGFsLT5zdHJhdGVneSA9PSBQT1JUQUxfT05FX1NFTEVDVCkKKwkJCQkJcG9ydGFsLT5xdWVy eURlc2MgPSBxdWVyeURlc2M7CiAKIAkJCQkvKgotCQkJCSAqIFJlbWVtYmVyIHR1cGxlIGRlc2Ny aXB0b3IgKGNvbXB1dGVkIGJ5IEV4ZWN1dG9yU3RhcnQpCisJCQkJICogUmVtZW1iZXIgdHVwbGUg ZGVzY3JpcHRvciAoY29tcHV0ZWQgYnkgRXhlY3V0b3JTdGFydCksCisJCQkJICogdGhvdWdoIG1h a2UgaXQgaW5kZXBlbmRlbnQgb2YgUXVlcnlEZXNjIGZvciBxdWVyaWVzIGhhbmRsZWQKKwkJCQkg KiBieSBQb3J0YWxSdW5NdWx0aSgpLgogCQkJCSAqLwotCQkJCXBvcnRhbC0+dHVwRGVzYyA9IHF1 ZXJ5RGVzYy0+dHVwRGVzYzsKKwkJCQlpZiAocG9ydGFsLT5zdHJhdGVneSAhPSBQT1JUQUxfT05F X1NFTEVDVCkKKwkJCQkJcG9ydGFsLT50dXBEZXNjID0gQ3JlYXRlVHVwbGVEZXNjQ29weShxdWVy eURlc2MtPnR1cERlc2MpOworCQkJCWVsc2UKKwkJCQkJcG9ydGFsLT50dXBEZXNjID0gcXVlcnlE ZXNjLT50dXBEZXNjOwogCiAJCQkJLyoKIAkJCQkgKiBSZXNldCBjdXJzb3IgcG9zaXRpb24gZGF0 YSB0byAic3RhcnQgb2YgcXVlcnkiCkBAIC01MzYsMjkgKzQ3NCw2IEBAIFBvcnRhbFN0YXJ0KFBv cnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCVBvcEFjdGl2ZVNuYXBzaG90 KCk7CiAJCQkJYnJlYWs7CiAKLQkJCWNhc2UgUE9SVEFMX09ORV9SRVRVUk5JTkc6Ci0JCQljYXNl IFBPUlRBTF9PTkVfTU9EX1dJVEg6Ci0KLQkJCQkvKgotCQkJCSAqIFdlIGRvbid0IHN0YXJ0IHRo ZSBleGVjdXRvciB1bnRpbCB3ZSBhcmUgdG9sZCB0byBydW4gdGhlCi0JCQkJICogcG9ydGFsLiAg V2UgZG8gbmVlZCB0byBzZXQgdXAgdGhlIHJlc3VsdCB0dXBkZXNjLgotCQkJCSAqLwotCQkJCXsK LQkJCQkJUGxhbm5lZFN0bXQgKnBzdG10OwotCi0JCQkJCXBzdG10ID0gUG9ydGFsR2V0UHJpbWFy eVN0bXQocG9ydGFsKTsKLQkJCQkJcG9ydGFsLT50dXBEZXNjID0KLQkJCQkJCUV4ZWNDbGVhblR5 cGVGcm9tVEwocHN0bXQtPnBsYW5UcmVlLT50YXJnZXRsaXN0KTsKLQkJCQl9Ci0KLQkJCQkvKgot CQkJCSAqIFJlc2V0IGN1cnNvciBwb3NpdGlvbiBkYXRhIHRvICJzdGFydCBvZiBxdWVyeSIKLQkJ CQkgKi8KLQkJCQlwb3J0YWwtPmF0U3RhcnQgPSB0cnVlOwotCQkJCXBvcnRhbC0+YXRFbmQgPSBm YWxzZTsJLyogYWxsb3cgZmV0Y2hlcyAqLwotCQkJCXBvcnRhbC0+cG9ydGFsUG9zID0gMDsKLQkJ CQlicmVhazsKLQogCQkJY2FzZSBQT1JUQUxfVVRJTF9TRUxFQ1Q6CiAKIAkJCQkvKgpAQCAtNTgx LDcgKzQ5Niw4MSBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBh cmFtcywKIAkJCQlicmVhazsKIAogCQkJY2FzZSBQT1JUQUxfTVVMVElfUVVFUlk6Ci0JCQkJLyog TmVlZCBkbyBub3RoaW5nIG5vdyAqLworCQkJCXsKKwkJCQkJTGlzdENlbGwgICAqbGM7CisJCQkJ CWJvb2wJCWZpcnN0ID0gdHJ1ZTsKKworCQkJCQlteWVmbGFncyA9IGVmbGFnczsKKwkJCQkJZm9y ZWFjaChsYywgcG9ydGFsLT5zdG10cykKKwkJCQkJeworCQkJCQkJUGxhbm5lZFN0bXQgKnBsYW4g PSBsZmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgbGMpOworCQkJCQkJYm9vbAkJaXNfdXRpbGl0eSA9 IChwbGFuLT51dGlsaXR5U3RtdCAhPSBOVUxMKTsKKworCQkJCQkJLyoKKwkJCQkJCSAqIFB1c2gg dGhlIHNuYXBzaG90IHRvIGJlIHVzZWQgYnkgdGhlIGV4ZWN1dG9yLgorCQkJCQkJICovCisJCQkJ CQlpZiAoIWlzX3V0aWxpdHkpCisJCQkJCQl7CisJCQkJCQkJLyoKKwkJCQkJCQkgKiBNdXN0IGNv cHkgdGhlIHNuYXBzaG90IGZvciBhbGwgc3RhdGVtZW50cworCQkJCQkJCSAqIGV4Y2VwdCB0aGVj IGZpcnN0IGFzIHdlJ2xsIG5lZWQgdG8gdXBkYXRlIGl0cworCQkJCQkJCSAqIGNvbW1hbmQgSUQu CisJCQkJCQkJICovCisJCQkJCQkJaWYgKCFmaXJzdCkKKwkJCQkJCQkJUHVzaENvcGllZFNuYXBz aG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJCQkJCQkJZWxzZQorCQkJCQkJCQlQdXNo QWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJCQkJCX0KKworCQkJ CQkJLyoKKwkJCQkJCSAqIEZyb20gdGhlIDJuZCBzdGF0ZW1lbnQgb253YXJkcywgdXBkYXRlIHRo ZSBjb21tYW5kCisJCQkJCQkgKiBJRCBhbmQgdGhlIHNuYXBzaG90IHRvIG1hdGNoLgorCQkJCQkJ ICovCisJCQkJCQlpZiAoIWZpcnN0KQorCQkJCQkJeworCQkJCQkJCUNvbW1hbmRDb3VudGVySW5j cmVtZW50KCk7CisJCQkJCQkJVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKKwkJCQkJ CX0KKworCQkJCQkJZmlyc3QgPSBmYWxzZTsKKworCQkJCQkJLyoKKwkJCQkJCSAqIENyZWF0ZSB0 aGUgUXVlcnlEZXNjLiAgRGVzdFJlY2VpdmVyIHdpbGwgYmUgc2V0IGluCisJCQkJCQkgKiBQb3J0 YWxSdW5NdWx0aSgpIGJlZm9yZSBjYWxsaW5nIEV4ZWN1dG9yUnVuKCkuCisJCQkJCQkgKi8KKwkJ CQkJCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLAorCQkJCQkJCQkJCQkJCXBvcnRh bC0+c291cmNlVGV4dCwKKwkJCQkJCQkJCQkJCQkhaXNfdXRpbGl0eSA/CisJCQkJCQkJCQkJCQkJ R2V0QWN0aXZlU25hcHNob3QoKSA6CisJCQkJCQkJCQkJCQkJSW52YWxpZFNuYXBzaG90LAorCQkJ CQkJCQkJCQkJCUludmFsaWRTbmFwc2hvdCwKKwkJCQkJCQkJCQkJCQlOVUxMLAorCQkJCQkJCQkJ CQkJCXBhcmFtcywKKwkJCQkJCQkJCQkJCQlwb3J0YWwtPnF1ZXJ5RW52LCAwKTsKKworCQkJCQkJ LyogUmVtZW1iZXIgZm9yIFBvcnRhbFJ1bk11bHRpKCkgKi8KKwkJCQkJCXBvcnRhbC0+cWRlc2Nz ID0gbGFwcGVuZChwb3J0YWwtPnFkZXNjcywgcXVlcnlEZXNjKTsKKworCQkJCQkJaWYgKGlzX3V0 aWxpdHkpCisJCQkJCQkJY29udGludWU7CisKKwkJCQkJCS8qCisJCQkJCQkgKiBDYWxsIEV4ZWN1 dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IKKwkJCQkJCSAqIGV4ZWN1dGlvbi4gIEEg Y2FjaGVkIHBsYW4gbWF5IGdldCBpbnZhbGlkYXRlZAorCQkJCQkJICogZHVyaW5nIHBsYW4gaW50 aWFsaXphdGlvbi4KKwkJCQkJCSAqLworCQkJCQkJaWYgKCFFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVz YywgbXllZmxhZ3MpKQorCQkJCQkJeworCQkJCQkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCQkJ CQkJRXhlY3V0b3JFbmQocXVlcnlEZXNjKTsKKwkJCQkJCQlGcmVlUXVlcnlEZXNjKHF1ZXJ5RGVz Yyk7CisJCQkJCQkJcGxhbl92YWxpZCA9IGZhbHNlOworCQkJCQkJCWdvdG8gcGxhbl9pbml0X2Zh aWxlZDsKKwkJCQkJCX0KKwkJCQkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCQkJCX0KKwkJCQl9 CisKIAkJCQlwb3J0YWwtPnR1cERlc2MgPSBOVUxMOwogCQkJCWJyZWFrOwogCQl9CkBAIC01OTQs MTkgKzU4MywyMCBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBh cmFtcywKIAkJLyogUmVzdG9yZSBnbG9iYWwgdmFycyBhbmQgcHJvcGFnYXRlIGVycm9yICovCiAJ CUFjdGl2ZVBvcnRhbCA9IHNhdmVBY3RpdmVQb3J0YWw7CiAJCUN1cnJlbnRSZXNvdXJjZU93bmVy ID0gc2F2ZVJlc291cmNlT3duZXI7Ci0JCVBvcnRhbENvbnRleHQgPSBzYXZlUG9ydGFsQ29udGV4 dDsKIAogCQlQR19SRV9USFJPVygpOwogCX0KIAlQR19FTkRfVFJZKCk7CiAKKwlwb3J0YWwtPnN0 YXR1cyA9IFBPUlRBTF9SRUFEWTsKKworcGxhbl9pbml0X2ZhaWxlZDoKIAlNZW1vcnlDb250ZXh0 U3dpdGNoVG8ob2xkQ29udGV4dCk7CiAKIAlBY3RpdmVQb3J0YWwgPSBzYXZlQWN0aXZlUG9ydGFs OwogCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gc2F2ZVJlc291cmNlT3duZXI7Ci0JUG9ydGFsQ29u dGV4dCA9IHNhdmVQb3J0YWxDb250ZXh0OwogCi0JcG9ydGFsLT5zdGF0dXMgPSBQT1JUQUxfUkVB RFk7CisJcmV0dXJuIHBsYW5fdmFsaWQ7CiB9CiAKIC8qCkBAIC0xMTkzLDcgKzExODMsNyBAQCBQ b3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAogCQkJICAgUXVlcnlDb21wbGV0aW9uICpxYykK IHsKIAlib29sCQlhY3RpdmVfc25hcHNob3Rfc2V0ID0gZmFsc2U7Ci0JTGlzdENlbGwgICAqc3Rt dGxpc3RfaXRlbTsKKwlMaXN0Q2VsbCAgICpxZGVzY19pdGVtOwogCiAJLyoKIAkgKiBJZiB0aGUg ZGVzdGluYXRpb24gaXMgRGVzdFJlbW90ZUV4ZWN1dGUsIGNoYW5nZSB0byBEZXN0Tm9uZS4gIFRo ZQpAQCAtMTIxNCw5ICsxMjA0LDEwIEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJ ICogTG9vcCB0byBoYW5kbGUgdGhlIGluZGl2aWR1YWwgcXVlcmllcyBnZW5lcmF0ZWQgZnJvbSBh IHNpbmdsZSBwYXJzZXRyZWUKIAkgKiBieSBhbmFseXNpcyBhbmQgcmV3cml0ZS4KIAkgKi8KLQlm b3JlYWNoKHN0bXRsaXN0X2l0ZW0sIHBvcnRhbC0+c3RtdHMpCisJZm9yZWFjaChxZGVzY19pdGVt LCBwb3J0YWwtPnFkZXNjcykKIAl7Ci0JCVBsYW5uZWRTdG10ICpwc3RtdCA9IGxmaXJzdF9ub2Rl KFBsYW5uZWRTdG10LCBzdG10bGlzdF9pdGVtKTsKKwkJUXVlcnlEZXNjICpxZGVzYyA9IChRdWVy eURlc2MgKikgbGZpcnN0KHFkZXNjX2l0ZW0pOworCQlQbGFubmVkU3RtdCAqcHN0bXQgPSBxZGVz Yy0+cGxhbm5lZHN0bXQ7CiAKIAkJLyoKIAkJICogSWYgd2UgZ290IGEgY2FuY2VsIHNpZ25hbCBp biBwcmlvciBjb21tYW5kLCBxdWl0CkBAIC0xMjMzLDMzICsxMjI0LDI2IEBAIFBvcnRhbFJ1bk11 bHRpKFBvcnRhbCBwb3J0YWwsCiAJCQlpZiAobG9nX2V4ZWN1dG9yX3N0YXRzKQogCQkJCVJlc2V0 VXNhZ2UoKTsKIAotCQkJLyoKLQkJCSAqIE11c3QgYWx3YXlzIGhhdmUgYSBzbmFwc2hvdCBmb3Ig cGxhbm5hYmxlIHF1ZXJpZXMuICBGaXJzdCB0aW1lCi0JCQkgKiB0aHJvdWdoLCB0YWtlIGEgbmV3 IHNuYXBzaG90OyBmb3Igc3Vic2VxdWVudCBxdWVyaWVzIGluIHRoZQotCQkJICogc2FtZSBwb3J0 YWwsIGp1c3QgdXBkYXRlIHRoZSBzbmFwc2hvdCdzIGNvcHkgb2YgdGhlIGNvbW1hbmQKLQkJCSAq IGNvdW50ZXIuCi0JCQkgKi8KKwkJCS8qIFB1c2ggdGhlIHNuYXBzaG90IGZvciBwbGFubmFibGUg cXVlcmllcy4gKi8KIAkJCWlmICghYWN0aXZlX3NuYXBzaG90X3NldCkKIAkJCXsKLQkJCQlTbmFw c2hvdAlzbmFwc2hvdCA9IEdldFRyYW5zYWN0aW9uU25hcHNob3QoKTsKKwkJCQlTbmFwc2hvdAlz bmFwc2hvdCA9IHFkZXNjLT5zbmFwc2hvdDsKIAotCQkJCS8qIElmIHRvbGQgdG8sIHJlZ2lzdGVy IHRoZSBzbmFwc2hvdCBhbmQgc2F2ZSBpbiBwb3J0YWwgKi8KKwkJCQkvKgorCQkJCSAqIElmIHRv bGQgdG8sIHJlZ2lzdGVyIHRoZSBzbmFwc2hvdCBhbmQgc2F2ZSBpbiBwb3J0YWwKKwkJCQkgKgor CQkJCSAqIE5vdGUgdGhhdCB0aGUgY29tbWFuZCBJRCBvZiBxZGVzYy0+c25hcHNob3QgZm9yIDJu ZCBxdWVyeQorCQkJCSAqIG9ud2FyZHMgd291bGQgaGF2ZSBiZWVuIHVwZGF0ZWQgaW4gUG9ydGFs U3RhcnQoKSB0byBhY2NvdW50CisJCQkJICogZm9yIENDSSgpIGRvbmUgYmV0d2VlbiBxdWVyaWVz LCBidXQgaXQncyBPSyB0aGF0IGhlcmUgd2UKKwkJCQkgKiBkb24ndCBsaWtld2lzZSB1cGRhdGUg aG9sZFNuYXBzaG90J3MgY29tbWFuZCBJRC4KKwkJCQkgKi8KIAkJCQlpZiAoc2V0SG9sZFNuYXBz aG90KQogCQkJCXsKIAkJCQkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsK IAkJCQkJcG9ydGFsLT5ob2xkU25hcHNob3QgPSBzbmFwc2hvdDsKIAkJCQl9CiAKLQkJCQkvKgot CQkJCSAqIFdlIGNhbid0IGhhdmUgdGhlIGhvbGRTbmFwc2hvdCBhbHNvIGJlIHRoZSBhY3RpdmUg b25lLAotCQkJCSAqIGJlY2F1c2UgVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQgd291bGQg Y29tcGxhaW4uICBTbwotCQkJCSAqIGZvcmNlIGFuIGV4dHJhIHNuYXBzaG90IGNvcHkuICBQbGFp biBQdXNoQWN0aXZlU25hcHNob3QKLQkJCQkgKiB3b3VsZCBoYXZlIGNvcGllZCB0aGUgdHJhbnNh Y3Rpb24gc25hcHNob3QgYW55d2F5LCBzbyB0aGlzCi0JCQkJICogb25seSBhZGRzIGEgY29weSBz dGVwIHdoZW4gc2V0SG9sZFNuYXBzaG90IGlzIHRydWUuICAoSXQncwotCQkJCSAqIG9rYXkgZm9y IHRoZSBjb21tYW5kIElEIG9mIHRoZSBhY3RpdmUgc25hcHNob3QgdG8gZGl2ZXJnZQotCQkJCSAq IGZyb20gd2hhdCBob2xkU25hcHNob3QgaGFzLikKLQkJCQkgKi8KLQkJCQlQdXNoQ29waWVkU25h cHNob3Qoc25hcHNob3QpOworCQkJCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7CiAKIAkJ CQkvKgogCQkJCSAqIEFzIGZvciBQT1JUQUxfT05FX1NFTEVDVCBwb3J0YWxzLCBpdCBkb2VzIG5v dCBzZWVtCkBAIC0xMjY4LDI2ICsxMjUyLDM5IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0 YWwsCiAKIAkJCQlhY3RpdmVfc25hcHNob3Rfc2V0ID0gdHJ1ZTsKIAkJCX0KLQkJCWVsc2UKLQkJ CQlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOwogCisJCQkvKgorCQkJICogUnVuIHRo ZSBwbGFuIHRvIGNvbXBsZXRpb24uCisJCQkgKi8KKwkJCXFkZXNjLT5kZXN0ID0gZGVzdDsKKwkJ CUV4ZWN1dG9yUnVuKHFkZXNjLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgMCwgdHJ1ZSk7CisKKwkJ CS8qCisJCQkgKiBCdWlsZCBjb21tYW5kIGNvbXBsZXRpb24gc3RhdHVzIGRhdGEgaWYgbmVlZGVk LgorCQkJICovCiAJCQlpZiAocHN0bXQtPmNhblNldFRhZykKIAkJCXsKLQkJCQkvKiBzdGF0ZW1l bnQgY2FuIHNldCB0YWcgc3RyaW5nICovCi0JCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAotCQkJCQkJ CSBwb3J0YWwtPnNvdXJjZVRleHQsCi0JCQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFyYW1zLAotCQkJ CQkJCSBwb3J0YWwtPnF1ZXJ5RW52LAotCQkJCQkJCSBkZXN0LCBxYyk7Ci0JCQl9Ci0JCQllbHNl Ci0JCQl7Ci0JCQkJLyogc3RtdCBhZGRlZCBieSByZXdyaXRlIGNhbm5vdCBzZXQgdGFnICovCi0J CQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAotCQkJCQkJCSBwb3J0YWwtPnNvdXJjZVRleHQsCi0JCQkJ CQkJIHBvcnRhbC0+cG9ydGFsUGFyYW1zLAotCQkJCQkJCSBwb3J0YWwtPnF1ZXJ5RW52LAotCQkJ CQkJCSBhbHRkZXN0LCBOVUxMKTsKKwkJCQlzd2l0Y2ggKHFkZXNjLT5vcGVyYXRpb24pCisJCQkJ eworCQkJCQljYXNlIENNRF9TRUxFQ1Q6CisJCQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENN RFRBR19TRUxFQ1QsIHFkZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7CisJCQkJCQlicmVhazsK KwkJCQkJY2FzZSBDTURfSU5TRVJUOgorCQkJCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURU QUdfSU5TRVJULCBxZGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOworCQkJCQkJYnJlYWs7CisJ CQkJCWNhc2UgQ01EX1VQREFURToKKwkJCQkJCVNldFF1ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFH X1VQREFURSwgcWRlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKKwkJCQkJCWJyZWFrOworCQkJ CQljYXNlIENNRF9ERUxFVEU6CisJCQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19E RUxFVEUsIHFkZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7CisJCQkJCQlicmVhazsKKwkJCQkJ Y2FzZSBDTURfTUVSR0U6CisJCQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19NRVJH RSwgcWRlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKKwkJCQkJCWJyZWFrOworCQkJCQlkZWZh dWx0OgorCQkJCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfVU5LTk9XTiwgcWRlc2Mt PmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKKwkJCQkJCWJyZWFrOworCQkJCX0KIAkJCX0KIAogCQkJ aWYgKGxvZ19leGVjdXRvcl9zdGF0cykKQEAgLTEzNDIsMTIgKzEzMzksMTIgQEAgUG9ydGFsUnVu TXVsdGkoUG9ydGFsIHBvcnRhbCwKIAkJaWYgKHBvcnRhbC0+c3RtdHMgPT0gTklMKQogCQkJYnJl YWs7CiAKLQkJLyoKLQkJICogSW5jcmVtZW50IGNvbW1hbmQgY291bnRlciBiZXR3ZWVuIHF1ZXJp ZXMsIGJ1dCBub3QgYWZ0ZXIgdGhlIGxhc3QKLQkJICogb25lLgotCQkgKi8KLQkJaWYgKGxuZXh0 KHBvcnRhbC0+c3RtdHMsIHN0bXRsaXN0X2l0ZW0pICE9IE5VTEwpCi0JCQlDb21tYW5kQ291bnRl ckluY3JlbWVudCgpOworCQlpZiAocWRlc2MtPmVzdGF0ZSkKKwkJeworCQkJRXhlY3V0b3JGaW5p c2gocWRlc2MpOworCQkJRXhlY3V0b3JFbmQocWRlc2MpOworCQl9CisJCUZyZWVRdWVyeURlc2Mo cWRlc2MpOwogCX0KIAogCS8qIFBvcCB0aGUgc25hcHNob3QgaWYgd2UgcHVzaGVkIG9uZS4gKi8K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMgYi9zcmMvYmFj a2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCmluZGV4IDA2ZGZhODVmMDQuLjBjYWQ0NTBkY2Qg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwpAQCAtMjAxLDYgKzIwMSwxMyBAQCBDcmVh dGVQb3J0YWwoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBhbGxvd0R1cCwgYm9vbCBkdXBTaWxlbnQp CiAJcG9ydGFsLT5wb3J0YWxDb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKFRvcFBvcnRh bENvbnRleHQsCiAJCQkJCQkJCQkJCQkgICJQb3J0YWxDb250ZXh0IiwKIAkJCQkJCQkJCQkJCSAg QUxMT0NTRVRfU01BTExfU0laRVMpOworCS8qCisJICogaW5pdGlhbGl6ZSBwb3J0YWwncyBxdWVy eSBjb250ZXh0IHRvIHN0b3JlIFF1ZXJ5RGVzY3MgY3JlYXRlZCBkdXJpbmcKKwkgKiBQb3J0YWxT dGFydCgpIGFuZCB0aGVuIHVzZWQgaW4gUG9ydGFsUnVuKCkuCisJICovCisJcG9ydGFsLT5xdWVy eUNvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoVG9wUG9ydGFsQ29udGV4dCwKKwkJCQkJ CQkJCQkJCSAiUG9ydGFsUXVlcnlDb250ZXh0IiwKKwkJCQkJCQkJCQkJCSBBTExPQ1NFVF9TTUFM TF9TSVpFUyk7CiAKIAkvKiBjcmVhdGUgYSByZXNvdXJjZSBvd25lciBmb3IgdGhlIHBvcnRhbCAq LwogCXBvcnRhbC0+cmVzb3duZXIgPSBSZXNvdXJjZU93bmVyQ3JlYXRlKEN1clRyYW5zYWN0aW9u UmVzb3VyY2VPd25lciwKQEAgLTIyNCw2ICsyMzEsNyBAQCBDcmVhdGVQb3J0YWwoY29uc3QgY2hh ciAqbmFtZSwgYm9vbCBhbGxvd0R1cCwgYm9vbCBkdXBTaWxlbnQpCiAKIAkvKiBmb3IgbmFtZWQg cG9ydGFscyByZXVzZSBwb3J0YWwtPm5hbWUgY29weSAqLwogCU1lbW9yeUNvbnRleHRTZXRJZGVu dGlmaWVyKHBvcnRhbC0+cG9ydGFsQ29udGV4dCwgcG9ydGFsLT5uYW1lWzBdID8gcG9ydGFsLT5u YW1lIDogIjx1bm5hbWVkPiIpOworCU1lbW9yeUNvbnRleHRTZXRJZGVudGlmaWVyKHBvcnRhbC0+ cXVlcnlDb250ZXh0LCBwb3J0YWwtPm5hbWVbMF0gPyBwb3J0YWwtPm5hbWUgOiAiPHVubmFtZWQ+ Iik7CiAKIAlyZXR1cm4gcG9ydGFsOwogfQpAQCAtNTk0LDYgKzYwMiw3IEBAIFBvcnRhbERyb3Ao UG9ydGFsIHBvcnRhbCwgYm9vbCBpc1RvcENvbW1pdCkKIAogCS8qIHJlbGVhc2Ugc3Vic2lkaWFy eSBzdG9yYWdlICovCiAJTWVtb3J5Q29udGV4dERlbGV0ZShwb3J0YWwtPnBvcnRhbENvbnRleHQp OworCU1lbW9yeUNvbnRleHREZWxldGUocG9ydGFsLT5xdWVyeUNvbnRleHQpOwogCiAJLyogcmVs ZWFzZSBwb3J0YWwgc3RydWN0IChpdCdzIGluIFRvcFBvcnRhbENvbnRleHQpICovCiAJcGZyZWUo cG9ydGFsKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaCBiL3Ny Yy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAppbmRleCAzZDNlNjMyYTBjLi4zNzU1NDcyN2Vl IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKKysrIGIvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCkBAIC04OCw3ICs4OCwxMSBAQCBleHRlcm4gdm9pZCBF eHBsYWluT25lVXRpbGl0eShOb2RlICp1dGlsaXR5U3RtdCwgSW50b0NsYXVzZSAqaW50bywKIAkJ CQkJCQkgIEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCQkJCQkJ CSAgUGFyYW1MaXN0SW5mbyBwYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKIAot ZXh0ZXJuIHZvaWQgRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBJbnRv Q2xhdXNlICppbnRvLAorZXh0ZXJuIFF1ZXJ5RGVzYyAqRXhwbGFpblF1ZXJ5RGVzYyhQbGFubmVk U3RtdCAqc3RtdCwKKwkJCQkgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsIEludG9DbGF1c2UgKmlu dG8sIEV4cGxhaW5TdGF0ZSAqZXMsCisJCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVu dmlyb25tZW50ICpxdWVyeUVudik7CitleHRlcm4gdm9pZCBFeHBsYWluT25lUGxhbihRdWVyeURl c2MgKnF1ZXJ5RGVzYywKKwkJCQkJCSAgIEludG9DbGF1c2UgKmludG8sCiAJCQkJCQkgICBFeHBs YWluU3RhdGUgKmVzLCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJCQkJCSAgIFBhcmFtTGlz dEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKIAkJCQkJCSAgIGNvbnN0 IGluc3RyX3RpbWUgKnBsYW5kdXJhdGlvbiwKQEAgLTEwNCw2ICsxMDgsNyBAQCBleHRlcm4gdm9p ZCBFeHBsYWluUXVlcnlQYXJhbWV0ZXJzKEV4cGxhaW5TdGF0ZSAqZXMsIFBhcmFtTGlzdEluZm8g cGFyYW1zLCBpbnQgbQogCiBleHRlcm4gdm9pZCBFeHBsYWluQmVnaW5PdXRwdXQoRXhwbGFpblN0 YXRlICplcyk7CiBleHRlcm4gdm9pZCBFeHBsYWluRW5kT3V0cHV0KEV4cGxhaW5TdGF0ZSAqZXMp OworZXh0ZXJuIHZvaWQgRXhwbGFpblJlc2V0T3V0cHV0KEV4cGxhaW5TdGF0ZSAqZXMpOwogZXh0 ZXJuIHZvaWQgRXhwbGFpblNlcGFyYXRlUGxhbnMoRXhwbGFpblN0YXRlICplcyk7CiAKIGV4dGVy biB2b2lkIEV4cGxhaW5Qcm9wZXJ0eUxpc3QoY29uc3QgY2hhciAqcWxhYmVsLCBMaXN0ICpkYXRh LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oIGIvc3JjL2luY2x1 ZGUvY29tbWFuZHMvdHJpZ2dlci5oCmluZGV4IDQzMGUzY2E3ZGQuLmQ0ZjdjMjkzMDEgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaAorKysgYi9zcmMvaW5jbHVkZS9j b21tYW5kcy90cmlnZ2VyLmgKQEAgLTI1Nyw2ICsyNTcsNyBAQCBleHRlcm4gdm9pZCBFeGVjQVNU cnVuY2F0ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLAogCiBleHRlcm4gdm9pZCBBZnRlclRyaWdn ZXJCZWdpblhhY3Qodm9pZCk7CiBleHRlcm4gdm9pZCBBZnRlclRyaWdnZXJCZWdpblF1ZXJ5KHZv aWQpOworZXh0ZXJuIHZvaWQgQWZ0ZXJUcmlnZ2VyQ2FuY2VsUXVlcnkodm9pZCk7CiBleHRlcm4g dm9pZCBBZnRlclRyaWdnZXJFbmRRdWVyeShFU3RhdGUgKmVzdGF0ZSk7CiBleHRlcm4gdm9pZCBB ZnRlclRyaWdnZXJGaXJlRGVmZXJyZWQodm9pZCk7CiBleHRlcm4gdm9pZCBBZnRlclRyaWdnZXJF bmRYYWN0KGJvb2wgaXNDb21taXQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv ZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggNzJjYmYx MjBjNS4uMTBjNWNkYTE2OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0 b3IuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCkBAIC03Myw3ICs3Myw3 IEBACiAKIAogLyogSG9vayBmb3IgcGx1Z2lucyB0byBnZXQgY29udHJvbCBpbiBFeGVjdXRvclN0 YXJ0KCkgKi8KLXR5cGVkZWYgdm9pZCAoKkV4ZWN1dG9yU3RhcnRfaG9va190eXBlKSAoUXVlcnlE ZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOwordHlwZWRlZiBib29sICgqRXhlY3V0b3JTdGFy dF9ob29rX3R5cGUpIChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CiBleHRlcm4g UEdETExJTVBPUlQgRXhlY3V0b3JTdGFydF9ob29rX3R5cGUgRXhlY3V0b3JTdGFydF9ob29rOwog CiAvKiBIb29rIGZvciBwbHVnaW5zIHRvIGdldCBjb250cm9sIGluIEV4ZWN1dG9yUnVuKCkgKi8K QEAgLTE5OCw4ICsxOTgsOCBAQCBFeGVjR2V0SnVua0F0dHJpYnV0ZShUdXBsZVRhYmxlU2xvdCAq c2xvdCwgQXR0ck51bWJlciBhdHRubywgYm9vbCAqaXNOdWxsKQogLyoKICAqIHByb3RvdHlwZXMg ZnJvbSBmdW5jdGlvbnMgaW4gZXhlY01haW4uYwogICovCi1leHRlcm4gdm9pZCBFeGVjdXRvclN0 YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKLWV4dGVybiB2b2lkIHN0YW5k YXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOworZXh0 ZXJuIGJvb2wgRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7 CitleHRlcm4gYm9vbCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNj LCBpbnQgZWZsYWdzKTsKIGV4dGVybiB2b2lkIEV4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlE ZXNjLAogCQkJCQkJU2NhbkRpcmVjdGlvbiBkaXJlY3Rpb24sIHVpbnQ2NCBjb3VudCwgYm9vbCBl eGVjdXRlX29uY2UpOwogZXh0ZXJuIHZvaWQgc3RhbmRhcmRfRXhlY3V0b3JSdW4oUXVlcnlEZXNj ICpxdWVyeURlc2MsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBi L3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IGIyYTU3NmI3NmQuLjA5MjJiZTY2 NzggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9p bmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC02NzAsNiArNjcwLDkgQEAgdHlwZWRlZiBzdHJ1 Y3QgRVN0YXRlCiAJaW50CQkJZXNfdG9wX2VmbGFnczsJLyogZWZsYWdzIHBhc3NlZCB0byBFeGVj dXRvclN0YXJ0ICovCiAJaW50CQkJZXNfaW5zdHJ1bWVudDsJLyogT1Igb2YgSW5zdHJ1bWVudE9w dGlvbiBmbGFncyAqLwogCWJvb2wJCWVzX2ZpbmlzaGVkOwkvKiB0cnVlIHdoZW4gRXhlY3V0b3JG aW5pc2ggaXMgZG9uZSAqLworCWJvb2wJCWVzX2NhbmNlbGVkOwkvKiB0cnVlIHdoZW4gZXhlY3V0 aW9uIHdhcyBjYW5jZWxlZAorCQkJCQkJCQkgKiB1cG9uIGVuY291bnRlcmluZyB0aGF0IHBsYW4g d2FzIGludmFsaWRlZAorCQkJCQkJCQkgKiBkdXJpbmcgRXhlY0luaXROb2RlKCkgKi8KIAogCUxp c3QJICAgKmVzX2V4cHJjb250ZXh0czsJLyogTGlzdCBvZiBFeHByQ29udGV4dHMgd2l0aGluIEVT dGF0ZSAqLwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS90Y29wL3BxdWVyeS5oIGIvc3JjL2lu Y2x1ZGUvdGNvcC9wcXVlcnkuaAppbmRleCBhNWU2NWI5OGFhLi41NzdiODFhOWVlIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS90Y29wL3BxdWVyeS5oCisrKyBiL3NyYy9pbmNsdWRlL3Rjb3AvcHF1 ZXJ5LmgKQEAgLTI5LDcgKzI5LDcgQEAgZXh0ZXJuIExpc3QgKkZldGNoUG9ydGFsVGFyZ2V0TGlz dChQb3J0YWwgcG9ydGFsKTsKIAogZXh0ZXJuIExpc3QgKkZldGNoU3RhdGVtZW50VGFyZ2V0TGlz dChOb2RlICpzdG10KTsKIAotZXh0ZXJuIHZvaWQgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwg UGFyYW1MaXN0SW5mbyBwYXJhbXMsCitleHRlcm4gYm9vbCBQb3J0YWxTdGFydChQb3J0YWwgcG9y dGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkJCWludCBlZmxhZ3MsIFNuYXBzaG90IHNu YXBzaG90KTsKIAogZXh0ZXJuIHZvaWQgUG9ydGFsU2V0UmVzdWx0Rm9ybWF0KFBvcnRhbCBwb3J0 YWwsIGludCBuRm9ybWF0cywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5o IGIvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKaW5kZXggYWEwOGIxZTBmYy4uYWYwNTllMzBm OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKKysrIGIvc3JjL2luY2x1 ZGUvdXRpbHMvcG9ydGFsLmgKQEAgLTEzOCw2ICsxMzgsOCBAQCB0eXBlZGVmIHN0cnVjdCBQb3J0 YWxEYXRhCiAJUXVlcnlDb21wbGV0aW9uIHFjOwkJCS8qIGNvbW1hbmQgY29tcGxldGlvbiBkYXRh IGZvciBleGVjdXRlZCBxdWVyeSAqLwogCUxpc3QJICAgKnN0bXRzOwkJCS8qIGxpc3Qgb2YgUGxh bm5lZFN0bXRzICovCiAJQ2FjaGVkUGxhbiAqY3BsYW47CQkJLyogQ2FjaGVkUGxhbiwgaWYgc3Rt dHMgYXJlIGZyb20gb25lICovCisJTGlzdAkgICAqcWRlc2NzOwkJCS8qIGxpc3Qgb2YgUXVlcnlE ZXNjcyAqLworCU1lbW9yeUNvbnRleHQgcXVlcnlDb250ZXh0OwkvKiBtZW1vcnkgZm9yIFF1ZXJ5 RGVzY3MgYW5kIGNoaWxkcmVuICovCiAKIAlQYXJhbUxpc3RJbmZvIHBvcnRhbFBhcmFtczsgLyog cGFyYW1zIHRvIHBhc3MgdG8gcXVlcnkgKi8KIAlRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudjsg LyogZW52aXJvbm1lbnQgZm9yIHF1ZXJ5ICovCi0tIAoyLjM1LjMKCg== --000000000000f8d8750604975ca4 Content-Type: application/octet-stream; name="v46-0006-Set-inFromCl-to-false-in-child-table-RTEs.patch" Content-Disposition: attachment; filename="v46-0006-Set-inFromCl-to-false-in-child-table-RTEs.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lm5z2oe62 RnJvbSA3ZjZlYzQ3NGM2NmM3NTEyNGM0OGM2MmE3ZmM1ZDY4ZDM3NTBjYzM3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgNCBKdWwgMjAyMyAyMjozNjo0MyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ2 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 --000000000000f8d8750604975ca4 Content-Type: application/octet-stream; name="v46-0005-Add-field-to-store-parent-relids-to-Append-Merge.patch" Content-Disposition: attachment; filename="v46-0005-Add-field-to-store-parent-relids-to-Append-Merge.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lm5z2oe73 RnJvbSA3NjYwMDNhMDM0MmZiMmViNjU5YzVjODI4MGNlYWQ1YTc0MDUzYzIyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgNCBKdWwgMjAyMyAyMjozNjozMSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ2 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= --000000000000f8d8750604975ca4 Content-Type: application/octet-stream; name="v46-0008-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Disposition: attachment; filename="v46-0008-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lm5z2oe20 RnJvbSA1ZGE1OTMwNWIwMDAwMDk4Y2FiZjUwOGY3YzBlNGE0YTc0YTBjMTFhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgNCBKdWwgMjAyMyAyMjozNjo0OSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ2 IDgvOF0gVHJhY2sgb3BlbmVkIHJhbmdlIHRhYmxlIHJlbGF0aW9ucyBpbiBhIExpc3QgaW4KIEVT dGF0ZQoKVGhpcyBtYWtlcyBFeGVjQ2xvc2VSYW5nZVRhYmxlUmVsYXRpb25zIGZhc3RlciB3aGVu IHRoZXJlIGFyZSBtYW55CnJlbGF0aW9ucyBpbiB0aGUgcmFuZ2UgdGFibGUgYnV0IG9ubHkgYSBm ZXcgYXJlIG9wZW5lZCBkdXJpbmcKZXhlY3V0aW9uLCBzdWNoIGFzIHdoZW4gcnVuLXRpbWUgcHJ1 bmluZyBraWNrcyBpbiBvbiBhbiBBcHBlbmQKY29udGFpbmluZyB0aG91c2FuZHMgb2YgcGFydGl0 aW9uIHN1YnBsYW5zLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQStIaXdxRkdr TVNnZTZUZ0M5S1F6ZGUwb2hwQXljTFF1Vjdvb2l0RUVwYktCME9fbWdAbWFpbC5nbWFpbC5jb20K LS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICB8IDkgKysrKystLS0tCiBzcmMv YmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyB8IDIgKysKIHNyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oICAgIHwgMiArKwogMyBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDQg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggMDlhMTA0ZjBhMy4uNmEw MTBiNzRkZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysg 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== --000000000000f8d8750604975ca4 Content-Type: application/octet-stream; name="v46-0007-Delay-locking-of-child-tables-in-cached-plans-un.patch" Content-Disposition: attachment; filename="v46-0007-Delay-locking-of-child-tables-in-cached-plans-un.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lm5z2oe51 RnJvbSA4YzU2MTc5ODc5ODI0M2Q5NzJhZTUwYjNjNDY3MTJjNGMwNzc4NzZjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgNCBKdWwgMjAyMyAyMjozNjo0NSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ2 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 YWNrZW5kL2V4ZWN1dG9yL1JFQURNRSAgICAgICAgICAgICAgICAgICB8ICAzOSArKysrLQogc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgICAgICAgIHwgIDIwICsrLQogc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICAgICAgICAgIHwgICA5ICstCiBzcmMv YmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgICAgICAgICAgfCAgMTAgKysKIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jICAgICAgICAgICAgICB8ICA2MSArKysrKy0tCiBz cmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYyAgICAgICAgICAgICAgfCAgIDEgKwogc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jICAgICAgICAgICAgIHwgIDE5ICsrKwogc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgICAgICAgIHwgIDE5ICsrKwogc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9i YWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMgICAgICAgICAgICAgICB8ICA0NSArKysrKwogc3Jj L2JhY2tlbmQvdGNvcC9wcXVlcnkuYyAgICAgICAgICAgICAgICAgICAgIHwgICA3ICstCiBzcmMv YmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYyAgICAgICAgICAgfCAgMjEgKysrCiBzcmMv YmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyAgICAgICAgICAgfCAxNTcgKysrKysrKy0t LS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmggICAgICAgICAgICAgICAg fCAgIDIgKy0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmggICAgICAgICAgICAgICB8 ICAgNCArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oICAgICAgICAgICAgICAgfCAg IDEgKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmggICAgICAgICAgICAgICAgICAgIHwgICAx ICsKIHNyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oICAgICAgICAgICAgICAgICB8ICAgMSAr CiBzcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZSAgICAgfCAgIDMgKy0K IC4uLi9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9kZWxheV9leGVjdXRpb24uYyB8ICA2NyArKysr KysrLQogLi4uL2V4cGVjdGVkL2NhY2hlZC1wbGFuLXJlcGxhbi5vdXQgICAgICAgICAgIHwgMTU2 ICsrKysrKysrKysrKysrKysrCiAuLi4vc3BlY3MvY2FjaGVkLXBsYW4tcmVwbGFuLnNwZWMgICAg ICAgICAgICAgfCAgNjEgKysrKysrKwogMjggZmlsZXMgY2hhbmdlZCwgNTkyIGluc2VydGlvbnMo KyksIDEzMSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVz L2RlbGF5X2V4ZWN1dGlvbi9leHBlY3RlZC9jYWNoZWQtcGxhbi1yZXBsYW4ub3V0CiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vc3BlY3MvY2FjaGVk LXBsYW4tcmVwbGFuLnNwZWMKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5 dG8uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCmluZGV4IGE0NTQ4OWY4ZjUuLmFi OGJmMGRmNzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCkBAIC01NTgsNyArNTU4LDggQEAgQmVnaW5D b3B5VG8oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkoKERSX2NvcHkgKikgZGVzdCktPmNzdGF0ZSA9 IGNzdGF0ZTsKIAogCQkvKiBDcmVhdGUgYSBRdWVyeURlc2MgcmVxdWVzdGluZyBubyBvdXRwdXQg Ki8KLQkJY3N0YXRlLT5xdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcHN0YXRlLT5w X3NvdXJjZXRleHQsCisJCWNzdGF0ZS0+cXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4s IE5VTEwsCisJCQkJCQkJCQkJCXBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkJCQkJCQlHZXRB Y3RpdmVTbmFwc2hvdCgpLAogCQkJCQkJCQkJCQlJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCQkJ CWRlc3QsIE5VTEwsIE5VTEwsIDApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv Y3JlYXRlYXMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKaW5kZXggMTY3ZGI0 Y2Y1Ni4uZTVjY2U0YzA3YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRl YXMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCkBAIC0zMjUsNyArMzI1 LDcgQEAgRXhlY0NyZWF0ZVRhYmxlQXMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVUYWJsZUFz U3RtdCAqc3RtdCwKIAkJVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKIAogCQkvKiBD cmVhdGUgYSBRdWVyeURlc2MsIHJlZGlyZWN0aW5nIG91dHB1dCB0byBvdXIgdHVwbGUgcmVjZWl2 ZXIgKi8KLQkJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHBzdGF0ZS0+cF9zb3Vy Y2V0ZXh0LAorCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgTlVMTCwgcHN0YXRl LT5wX3NvdXJjZXRleHQsCiAJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25h cHNob3QsCiAJCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCAwKTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv ZXhwbGFpbi5jCmluZGV4IGZlOTMxNGJjOTYuLjYxNzFhMjBmZTIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBs YWluLmMKQEAgLTQxNiw3ICs0MTYsNyBAQCBFeHBsYWluT25lUXVlcnkoUXVlcnkgKnF1ZXJ5LCBp bnQgY3Vyc29yT3B0aW9ucywKIAkJCUJ1ZmZlclVzYWdlQWNjdW1EaWZmKCZidWZ1c2FnZSwgJnBn QnVmZmVyVXNhZ2UsICZidWZ1c2FnZV9zdGFydCk7CiAJCX0KIAotCQlxdWVyeURlc2MgPSBFeHBs YWluUXVlcnlEZXNjKHBsYW4sIHF1ZXJ5U3RyaW5nLCBpbnRvLCBlcywKKwkJcXVlcnlEZXNjID0g RXhwbGFpblF1ZXJ5RGVzYyhwbGFuLCBOVUxMLCBxdWVyeVN0cmluZywgaW50bywgZXMsCiAJCQkJ CQkJCQkgcGFyYW1zLCBxdWVyeUVudik7CiAJCUFzc2VydChxdWVyeURlc2MpOwogCkBAIC00Mjks OSArNDI5LDExIEBAIEV4cGxhaW5PbmVRdWVyeShRdWVyeSAqcXVlcnksIGludCBjdXJzb3JPcHRp b25zLAogLyoKICAqIEV4cGxhaW5RdWVyeURlc2MKICAqCQlTZXQgdXAgUXVlcnlEZXNjIGZvciBF WFBMQUlOaW5nIGEgZ2l2ZW4gcGxhbgorICoKKyAqIFRoaXMgcmV0dXJucyBOVUxMIGlmIGNwbGFu IGlzIGZvdW5kIHRvIGJlIG5vIGxvbmdlciB2YWxpZC4KICAqLwogUXVlcnlEZXNjICoKLUV4cGxh aW5RdWVyeURlc2MoUGxhbm5lZFN0bXQgKnN0bXQsCitFeHBsYWluUXVlcnlEZXNjKFBsYW5uZWRT dG10ICpzdG10LCBDYWNoZWRQbGFuICpjcGxhbiwKIAkJCQkgY29uc3QgY2hhciAqcXVlcnlTdHJp bmcsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCQkJIFBhcmFtTGlzdElu Zm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudikKIHsKQEAgLTQ2Nyw3ICs0Njks NyBAQCBFeHBsYWluUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpzdG10LAogCVVwZGF0ZUFjdGl2ZVNu YXBzaG90Q29tbWFuZElkKCk7CiAKIAkvKiBDcmVhdGUgYSBRdWVyeURlc2MgZm9yIHRoZSBxdWVy eSAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhzdG10LCBxdWVyeVN0cmluZywKKwlx dWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2Moc3RtdCwgY3BsYW4sIHF1ZXJ5U3RyaW5nLAogCQkJ CQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCWRlc3Qs IHBhcmFtcywgcXVlcnlFbnYsIGluc3RydW1lbnRfb3B0aW9uKTsKIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRl bnNpb24uYwppbmRleCBiNzAyYTY1ZTgxLi45M2E2ODNlMzEyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9leHRlbnNpb24uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRl bnNpb24uYwpAQCAtNzk3LDYgKzc5Nyw3IEBAIGV4ZWN1dGVfc3FsX3N0cmluZyhjb25zdCBjaGFy ICpzcWwpCiAJCQkJUXVlcnlEZXNjICAqcWRlc2M7CiAKIAkJCQlxZGVzYyA9IENyZWF0ZVF1ZXJ5 RGVzYyhzdG10LAorCQkJCQkJCQkJCU5VTEwsCiAJCQkJCQkJCQkJc3FsLAogCQkJCQkJCQkJCUdl dEFjdGl2ZVNuYXBzaG90KCksIE5VTEwsCiAJCQkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9tYXR2aWV3LmMKaW5kZXggNzEyNDk5NGE0My4uMzg3OTVjZTdjYSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL21hdHZpZXcuYwpAQCAtNDA4LDcgKzQwOCw3IEBAIHJlZnJlc2hfbWF0dmlld19kYXRh ZmlsbChEZXN0UmVjZWl2ZXIgKmRlc3QsIFF1ZXJ5ICpxdWVyeSwKIAlVcGRhdGVBY3RpdmVTbmFw c2hvdENvbW1hbmRJZCgpOwogCiAJLyogQ3JlYXRlIGEgUXVlcnlEZXNjLCByZWRpcmVjdGluZyBv dXRwdXQgdG8gb3VyIHR1cGxlIHJlY2VpdmVyICovCi0JcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlE ZXNjKHBsYW4sIHF1ZXJ5U3RyaW5nLAorCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFu LCBOVUxMLCBxdWVyeVN0cmluZywKIAkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxp ZFNuYXBzaG90LAogCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsKIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJl cGFyZS5jCmluZGV4IDY5OWRmNDI5YzQuLjE1NmMzYzVmZWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3ByZXBhcmUuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJl LmMKQEAgLTY1MCw3ICs2NTAsNyBAQCByZXBsYW46CiAJCXsKIAkJCVF1ZXJ5RGVzYyAqcXVlcnlE ZXNjOwogCi0JCQlxdWVyeURlc2MgPSBFeHBsYWluUXVlcnlEZXNjKHBzdG10LCBxdWVyeVN0cmlu ZywKKwkJCXF1ZXJ5RGVzYyA9IEV4cGxhaW5RdWVyeURlc2MocHN0bXQsIGNwbGFuLCBxdWVyeVN0 cmluZywKIAkJCQkJCQkJCQkgaW50bywgZXMsIHBhcmFtTEksIHF1ZXJ5RW52KTsKIAkJCWlmIChx dWVyeURlc2MgPT0gTlVMTCkKIAkJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L1JFQURNRSBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRQppbmRleCAxNzc3NWE0OWUyLi4w YTdiYjQyY2NiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FCkBAIC0yODAsNiArMjgwLDM3IEBAIGFyZSB0eXBp Y2FsbHkgcmVzZXQgdG8gZW1wdHkgb25jZSBwZXIgdHVwbGUuICBQZXItdHVwbGUgY29udGV4dHMg YXJlIHVzdWFsbHkKIGFzc29jaWF0ZWQgd2l0aCBFeHByQ29udGV4dHMsIGFuZCBjb21tb25seSBl YWNoIFBsYW5TdGF0ZSBub2RlIGhhcyBpdHMgb3duCiBFeHByQ29udGV4dCB0byBldmFsdWF0ZSBp dHMgcXVhbCBhbmQgdGFyZ2V0bGlzdCBleHByZXNzaW9ucyBpbi4KIAorUmVsYXRpb24gTG9ja2lu ZworLS0tLS0tLS0tLS0tLS0tLQorCitOb3JtYWxseSwgdGhlIGV4ZWN1dG9yIGRvZXMgbm90IGxv Y2sgbm9uLWluZGV4IHJlbGF0aW9ucyBhcHBlYXJpbmcgaW4gYSBnaXZlbgorcGxhbiB0cmVlIHdo ZW4gaW5pdGlhbGl6aW5nIGl0IGZvciBleGVjdXRpb24gaWYgdGhlIHBsYW4gdHJlZSBpcyBmcmVz aGx5CitjcmVhdGVkLCB0aGF0IGlzLCBub3QgZGVyaXZlZCBmcm9tIGEgQ2FjaGVkUGxhbi4gIFRo ZSByZWFzb24gZm9yIHRoYXQgaXMgdGhhdAordGhlIGxvY2tzIG11c3QgYWxyZWFkeSBoYXZlIGJl ZW4gdGFrZW4gZHVyaW5nIHBhcnNpbmcsIHJld3JpdGluZywgYW5kIHBsYW5uaW5nCitvZiB0aGUg cXVlcnkgaW4gdGhhdCBjYXNlLiAgSWYgdGhlIHBsYW4gdHJlZSBpcyBhIGNhY2hlZCBvbmUsIHRo ZXJlIG1heSBzdGlsbAorYmUgdW5sb2NrZWQgcmVsYXRpb25zIHByZXNlbnQgaW4gdGhlIHBsYW4g dHJlZSwgYmVjYXVzZSBHZXRDYWNoZWRQbGFuKCkgb25seQorbG9ja3MgdGhlIHJlbGF0aW9ucyB0 aGF0IHdvdWxkIGJlIHByZXNlbnQgaW4gdGhlIHF1ZXJ5J3MgcmFuZ2UgdGFibGUgYmVmb3JlCitw bGFubmluZyBvY2N1cnMsIGJ1dCBub3QgcmVsYXRpb25zIHRoYXQgd291bGQgaGF2ZSBiZWVuIGFk ZGVkIHRvIHRoZSByYW5nZQordGFibGUgZHVyaW5nIHBsYW5uaW5nLiAgVGhpcyBtZWFucyB0aGF0 IGluaGVyaXRhbmNlIGNoaWxkIHRhYmxlcyBwcmVzZW50IGluCithIGNhY2hlZCBwbGFuLCB3aGlj aCBhcmUgYWRkZWQgdG8gdGhlIHF1ZXJ5J3MgcmFuZ2UgdGFibGUgZHVyaW5nIHBsYW5uaW5nLAor d291bGQgbm90IGhhdmUgYmVlbiBsb2NrZWQgd2hlbiB0aGUgcGxhbiBlbnRlcnMgdGhlIGV4ZWN1 dG9yLgorCitHZXRDYWNoZWRQbGFuKCkgcHVudHMgb24gbG9ja2luZyBjaGlsZCB0YWJsZXMgYmVj YXVzZSBub3QgYWxsIG1heSBhY3R1YWxseSBiZQorc2Nhbm5lZCBkdXJpbmcgYSBnaXZlbiBleGVj dXRpb24gb2YgdGhlIHBsYW4gaWYgdGhlIGNoaWxkIHRhYmxlcyBhcmUgcGFydGl0aW9ucword2hp Y2ggbWF5IGdldCBwcnVuZWQgYXdheSBkdWUgdG8gZXhlY3V0aW9uLWluaXRpYWxpemF0aW9uLXRp bWUgcHJ1bmluZy4gIFNvIHRoZQorbG9ja2luZyBvZiBjaGlsZCB0YWJsZXMgaXMgbWFkZSB0byB3 YWl0IHRpbGwgZXhlY3V0aW9uLWluaXRpYWxpemF0aW9uLXRpbWUsCit3aGljaCBvY2N1cnMgZHVy aW5nIEV4ZWNJbml0Tm9kZSgpIG9uIHRoZSBwbGFuIG5vZGVzIGNvbnRhaW5pbmcgdGhlIGNoaWxk Cit0YWJsZXMuCisKK1NvLCB0aGVyZSdzIGEgdGltZSB3aW5kb3cgZHVyaW5nIHdoaWNoIGEgY2Fj aGVkIHBsYW4gdHJlZSBjb3VsZCBnbyBzdGFsZQoraWYgaXQgY29udGFpbnMgY2hpbGQgdGFibGVz LCBiZWNhdXNlIHRoZXkgY291bGQgZ2V0IGNoYW5nZWQgaW4gb3RoZXIgYmFja2VuZHMKK2JlZm9y ZSBFeGVjSW5pdE5vZGUoKSBnZXRzIGEgbG9jayBvbiB0aGVtLiAgVGhpcyBtZWFucyB0aGUgZXhl Y3V0b3Igbm93IG11c3QKK2NoZWNrIHRoZSB2YWxpZGl0eSBvZiB0aGUgcGxhbiB0cmVlIGV2ZXJ5 IHRpbWUgaXQgdGFrZXMgYSBsb2NrIG9uIGEgY2hpbGQKK3RhYmxlIGNvbnRhaW5lZCBpbiB0aGUg dHJlZSBhZnRlciBleGVjdXRpb24taW5pdGlhbGl6YXRpb24tcHJ1bmluZyBoYXMgYmVlbgorcGVy Zm9ybWVkLiAgSXQgZG9lcyB0aGF0IGJ5IGxvb2tpbmcgYXQgQ2FjaGVkUGxhbi5pc192YWxpZCBv ZiB0aGUgQ2FjaGVkUGxhbgorcGFzc2VkIHRvIGl0LiAgSWYgdGhlIHBsYW4gdHJlZSBpcyBpbmRl ZWQgc3RhbGUgKGlzX3ZhbGlkPWZhbHNlKSwgdGhlIGV4ZWN1dG9yCittdXN0IGdpdmUgdXAgY29u dGludWluZyB0byBpbml0aWFsaXplIGl0IGFueSBmdXJ0aGVyIGFuZCByZXR1cm4gdG8gdGhlIGNh bGxlcgorbGV0dGluZyBpdCBrbm93IHRoYXQgdGhlIGV4ZWN1dGlvbiBtdXN0IGJlIHJldHJpZWQg d2l0aCBhIG5ldyBwbGFuIHRyZWUuCiAKIFF1ZXJ5IFByb2Nlc3NpbmcgQ29udHJvbCBGbG93CiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzE2LDcgKzM0NywxMyBAQCBUaGlzIGlz IGEgc2tldGNoIG9mIGNvbnRyb2wgZmxvdyBmb3IgZnVsbCBxdWVyeSBwcm9jZXNzaW5nOgogCiAJ RnJlZVF1ZXJ5RGVzYwogCi1QZXIgYWJvdmUgY29tbWVudHMsIGl0J3Mgbm90IHJlYWxseSBjcml0 aWNhbCBmb3IgRXhlY0VuZE5vZGUgdG8gZnJlZSBhbnkKK0FzIG1lbnRpb25lZCBpbiB0aGUgIlJl bGF0aW9uIExvY2tpbmciIHNlY3Rpb24sIGlmIHRoZSBwbGFuIHRyZWUgaXMgZm91bmQgdG8KK2Jl IHN0YWxlIGR1cmluZyBvbmUgb2YgdGhlIHJlY3Vyc2l2ZSBjYWxscyBvZiBFeGVjSW5pdE5vZGUo KSBhZnRlciB0YWtpbmcgYQorbG9jayBvbiBhIGNoaWxkIHRhYmxlLCB0aGUgY29udHJvbCBpcyBp bW1tZWRpYXRlbHkgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciBvZgorRXhlY3V0b3JTdGFydCgpLCB3 aGljaCBtdXN0IHJlZG8gdGhlIHN0ZXBzIGZyb20gQ3JlYXRlUXVlcnlEZXNjIHdpdGggYSBuZXcK K3BsYW4gdHJlZS4KKworUGVyIGFib3ZlIGNvbW1lbnRzLCBpdCdzIG5vdCByZWFsbHkgY3JpdGlj YWwgZm9yIEV4ZWNFbmRQbGFuIHRvIGZyZWUgYW55CiBtZW1vcnk7IGl0J2xsIGFsbCBnbyBhd2F5 IGluIEZyZWVFeGVjdXRvclN0YXRlIGFueXdheS4gIEhvd2V2ZXIsIHdlIGRvIG5lZWQgdG8KIGJl IGNhcmVmdWwgdG8gY2xvc2UgcmVsYXRpb25zLCBkcm9wIGJ1ZmZlciBwaW5zLCBldGMsIHNvIHdl IGRvIG5lZWQgdG8gc2NhbgogdGhlIHBsYW4gc3RhdGUgdHJlZSB0byBmaW5kIHRoZXNlIHNvcnRz IG9mIHJlc291cmNlcy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWlu LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDg4ZWJmYjIxOGIuLjA5 YTEwNGYwYTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtNjQyLDYgKzY0MiwxNyBAQCBF eGVjQ2hlY2tQZXJtaXNzaW9ucyhMaXN0ICpyYW5nZVRhYmxlLCBMaXN0ICpydGVwZXJtaW5mb3Ms CiAJCVJURVBlcm1pc3Npb25JbmZvICpwZXJtaW5mbyA9IGxmaXJzdF9ub2RlKFJURVBlcm1pc3Np b25JbmZvLCBsKTsKIAogCQlBc3NlcnQoT2lkSXNWYWxpZChwZXJtaW5mby0+cmVsaWQpKTsKKwor CQkvKgorCQkgKiBSZWxhdGlvbnMgd2hvc2UgcGVybWlzc2lvbnMgbmVlZCB0byBiZSBjaGVja2Vk IG11c3QgYWxyZWFkeSBoYXZlCisJCSAqIGJlZW4gbG9ja2VkIGJ5IHRoZSBwYXJzZXIgb3IgYnkg R2V0Q2FjaGVkUGxhbigpIGlmIGEgY2FjaGVkIHBsYW4gaXMKKwkJICogYmVpbmcgZXhlY3V0ZWQu CisJCSAqCisJCSAqIFhYWCBzaG91bGRuJ3Qgd2Ugc2tpcCBjYWxsaW5nIEV4ZWNDaGVja1Blcm1p c3Npb25zIGZyb20gSW5pdFBsYW4KKwkJICogaW4gYSBwYXJhbGxlbCB3b3JrZXI/CisJCSAqLwor CQlBc3NlcnQoQ2hlY2tSZWxMb2NrZWRCeU1lKHBlcm1pbmZvLT5yZWxpZCwgQWNjZXNzU2hhcmVM b2NrLCB0cnVlKSB8fAorCQkJICAgSXNQYXJhbGxlbFdvcmtlcigpKTsKIAkJcmVzdWx0ID0gRXhl Y0NoZWNrT25lUmVsUGVybXMocGVybWluZm8pOwogCQlpZiAoIXJlc3VsdCkKIAkJewpAQCAtODc1 LDEyICs4ODYsMTIgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3Mp CiAJRXhlY0NoZWNrUGVybWlzc2lvbnMocmFuZ2VUYWJsZSwgcGxhbm5lZHN0bXQtPnBlcm1JbmZv cywgdHJ1ZSk7CiAKIAkvKgotCSAqIGluaXRpYWxpemUgdGhlIG5vZGUncyBleGVjdXRpb24gc3Rh dGUKKwkgKiBTZXQgdXAgcmFuZ2UgdGFibGUgaW4gRVN0YXRlLgogCSAqLwogCUV4ZWNJbml0UmFu Z2VUYWJsZShlc3RhdGUsIHJhbmdlVGFibGUsIHBsYW5uZWRzdG10LT5wZXJtSW5mb3MpOwogCiAJ ZXN0YXRlLT5lc19wbGFubmVkc3RtdCA9IHBsYW5uZWRzdG10OwotCWVzdGF0ZS0+ZXNfY2FjaGVk cGxhbiA9IE5VTEw7CisJZXN0YXRlLT5lc19jYWNoZWRwbGFuID0gcXVlcnlEZXNjLT5jcGxhbjsK IAogCS8qCiAJICogTmV4dCwgYnVpbGQgdGhlIEV4ZWNSb3dNYXJrIGFycmF5IGZyb20gdGhlIFBs YW5Sb3dNYXJrKHMpLCBpZiBhbnkuCkBAIC0xNDY1LDcgKzE0NzYsNyBAQCBFeGVjR2V0QW5jZXN0 b3JSZXN1bHRSZWxzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZv KQogCiAJCQkvKgogCQkJICogQWxsIGFuY2VzdG9ycyB1cCB0byB0aGUgcm9vdCB0YXJnZXQgcmVs YXRpb24gbXVzdCBoYXZlIGJlZW4KLQkJCSAqIGxvY2tlZCBieSB0aGUgcGxhbm5lciBvciBBY3F1 aXJlRXhlY3V0b3JMb2NrcygpLgorCQkJICogbG9ja2VkIGJ5IHRoZSBwbGFubmVyIG9yIEV4ZWNM b2NrQXBwZW5kTm9uTGVhZlJlbGF0aW9ucygpLgogCQkJICovCiAJCQlhbmNSZWwgPSB0YWJsZV9v cGVuKGFuY09pZCwgTm9Mb2NrKTsKIAkJCXJJbmZvID0gbWFrZU5vZGUoUmVzdWx0UmVsSW5mbyk7 CkBAIC0yODk3LDcgKzI5MDgsOCBAQCBFdmFsUGxhblF1YWxTdGFydChFUFFTdGF0ZSAqZXBxc3Rh dGUsIFBsYW4gKnBsYW5UcmVlKQogCSAqIENoaWxkIEVQUSBFU3RhdGVzIHNoYXJlIHRoZSBwYXJl bnQncyBjb3B5IG9mIHVuY2hhbmdpbmcgc3RhdGUgc3VjaCBhcwogCSAqIHRoZSBzbmFwc2hvdCwg cmFuZ2V0YWJsZSwgYW5kIGV4dGVybmFsIFBhcmFtIGluZm8uICBUaGV5IG5lZWQgdGhlaXIgb3du CiAJICogY29waWVzIG9mIGxvY2FsIHN0YXRlLCBpbmNsdWRpbmcgYSB0dXBsZSB0YWJsZSwgZXNf cGFyYW1fZXhlY192YWxzLAotCSAqIHJlc3VsdC1yZWwgaW5mbywgZXRjLgorCSAqIHJlc3VsdC1y ZWwgaW5mbywgZXRjLiAgQWxzbywgd2UgZG9uJ3QgcGFzcyB0aGUgcGFyZW50J3QgY29weSBvZiB0 aGUKKwkgKiBDYWNoZWRQbGFuLCBiZWNhdXNlIG5vIG5ldyBsb2NrcyB3aWxsIGJlIHRha2VuIGZv ciBFdmFsUGxhblF1YWwoKS4KIAkgKi8KIAlyY2VzdGF0ZS0+ZXNfZGlyZWN0aW9uID0gRm9yd2Fy ZFNjYW5EaXJlY3Rpb247CiAJcmNlc3RhdGUtPmVzX3NuYXBzaG90ID0gcGFyZW50ZXN0YXRlLT5l c19zbmFwc2hvdDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxl bC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKaW5kZXggZjg0YTNhMTdk NS4uMjA5ZjYxOGEwNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFs bGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKQEAgLTEyNDgs OCArMTI0OCwxNSBAQCBFeGVjUGFyYWxsZWxHZXRRdWVyeURlc2Moc2htX3RvYyAqdG9jLCBEZXN0 UmVjZWl2ZXIgKnJlY2VpdmVyLAogCXBhcmFtc3BhY2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBB UkFMTEVMX0tFWV9QQVJBTUxJU1RJTkZPLCBmYWxzZSk7CiAJcGFyYW1MSSA9IFJlc3RvcmVQYXJh bUxpc3QoJnBhcmFtc3BhY2UpOwogCi0JLyogQ3JlYXRlIGEgUXVlcnlEZXNjIGZvciB0aGUgcXVl cnkuICovCisJLyoKKwkgKiBTZXQgdXAgYSBRdWVyeURlc2MgZm9yIHRoZSBxdWVyeS4gV2hpbGUg dGhlIGxlYWRlciBtaWdodCd2ZSBzb3VyY2VkCisJICogdGhlIHBsYW4gdHJlZSBmcm9tIGEgQ2Fj aGVkUGxhbiwgd2UgZG9uJ3QgaGF2ZSBvbmUgaGVyZS4gVGhpcyBpc24ndAorCSAqIGFuIGlzc3Vl IHNpbmNlIHRoZSBsZWFkZXIgZW5zdXJlZCB0aGUgcmVxdWlyZWQgbG9ja3MsIG1ha2luZyBvdXIK KwkgKiBwbGFuIHRyZWUgdmFsaWQuIEV2ZW4gYXMgd2UgZ2V0IG91ciBvd24gbG9jayBjb3BpZXMg aW4KKwkgKiBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKCksIHRoZXkncmUgYWxsIGFscmVhZHkg aGVsZCBieSB0aGUgbGVhZGVyLgorCSAqLwogCXJldHVybiBDcmVhdGVRdWVyeURlc2MocHN0bXQs CisJCQkJCQkgICBOVUxMLAogCQkJCQkJICAgcXVlcnlTdHJpbmcsCiAJCQkJCQkgICBHZXRBY3Rp dmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkgICByZWNlaXZlciwgcGFyYW1M SSwgTlVMTCwgaW5zdHJ1bWVudF9vcHRpb25zKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRp b24uYwppbmRleCBlODg0NTUzNjhjLi5jZjczZDI4YmFhIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1BhcnRpdGlvbi5jCkBAIC01MTMsNiArNTEzLDEzIEBAIEV4ZWNJbml0UGFydGl0aW9uSW5mbyhN b2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAogCW9sZGN4dCA9IE1l bW9yeUNvbnRleHRTd2l0Y2hUbyhwcm91dGUtPm1lbWN4dCk7CiAKKwkvKgorCSAqIE5vdGUgdGhh dCB3aGlsZSB3ZSBub3JtYWxseSBjaGVjayBFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSBhZnRl ciBlYWNoCisJICogbG9jayB0YWtlbiBkdXJpbmcgZXhlY3V0aW9uIGluaXRpYWxpemF0aW9uLCBp dCBpcyBmaW5lIG5vdCBkbyBzbyBmb3IKKwkgKiBwYXJ0aXRpb25zIG9wZW5lZCBoZXJlLCBmb3Ig dHVwbGUgcm91dGluZy4gIExvY2tzIHRha2VuIGhlcmUgY2FuJ3QKKwkgKiBwb3NzaWJseSBpbnZh bGlkYXRlIHRoZSBwbGFuIGdpdmVuIHRoYXQgdGhlIHBsYW4gZG9lc24ndCBjb250YWluIGFueQor CSAqIGluZm8gYWJvdXQgdGhvc2UgcGFydGl0aW9ucy4KKwkgKi8KIAlwYXJ0cmVsID0gdGFibGVf b3BlbihwYXJ0T2lkLCBSb3dFeGNsdXNpdmVMb2NrKTsKIAogCWxlYWZfcGFydF9ycmkgPSBtYWtl Tm9kZShSZXN1bHRSZWxJbmZvKTsKQEAgLTExMTEsNiArMTExOCw5IEBAIEV4ZWNJbml0UGFydGl0 aW9uRGlzcGF0Y2hJbmZvKEVTdGF0ZSAqZXN0YXRlLAogCSAqIE9ubHkgc3ViLXBhcnRpdGlvbmVk IHRhYmxlcyBuZWVkIHRvIGJlIGxvY2tlZCBoZXJlLiAgVGhlIHJvb3QKIAkgKiBwYXJ0aXRpb25l ZCB0YWJsZSB3aWxsIGFscmVhZHkgaGF2ZSBiZWVuIGxvY2tlZCBhcyBpdCdzIHJlZmVyZW5jZWQg aW4KIAkgKiB0aGUgcXVlcnkncyBydGFibGUuCisJICoKKwkgKiBTZWUgdGhlIGNvbW1lbnQgaW4g RXhlY0luaXRQYXJ0aXRpb25JbmZvKCkgYWJvdXQgdGFraW5nIGxvY2tzIGFuZAorCSAqIG5vdCBj aGVja2luZyBFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSBoZXJlLgogCSAqLwogCWlmIChwYXJ0 b2lkICE9IFJlbGF0aW9uR2V0UmVsaWQocHJvdXRlLT5wYXJ0aXRpb25fcm9vdCkpCiAJCXJlbCA9 IHRhYmxlX29wZW4ocGFydG9pZCwgUm93RXhjbHVzaXZlTG9jayk7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNV dGlscy5jCmluZGV4IGRhOGExNTExYWMuLjk0YzhlNWU4NzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNV dGlscy5jCkBAIC03NzksNyArNzc5LDI1IEBAIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oRVN0 YXRlICplc3RhdGUsIEluZGV4IHJ0aSkKIAogCQlBc3NlcnQocnRlLT5ydGVraW5kID09IFJURV9S RUxBVElPTik7CiAKLQkJaWYgKCFJc1BhcmFsbGVsV29ya2VyKCkpCisJCWlmIChJc1BhcmFsbGVs V29ya2VyKCkgfHwKKwkJCShlc3RhdGUtPmVzX2NhY2hlZHBsYW4gIT0gTlVMTCAmJiAhcnRlLT5p bkZyb21DbCkpCisJCXsKKwkJCS8qCisJCQkgKiBUYWtlIGEgbG9jayBpZiB3ZSBhcmUgYSBwYXJh bGxlbCB3b3JrZXIgb3IgaWYgdGhpcyBpcyBhIGNoaWxkCisJCQkgKiB0YWJsZSByZWZlcmVuY2Vk IGluIGEgY2FjaGVkIHBsYW4uCisJCQkgKgorCQkJICogUGFyYWxsZWwgd29ya2VycyBuZWVkIHRv IGhhdmUgdGhlaXIgb3duIGxvY2FsIGxvY2sgb24gdGhlCisJCQkgKiByZWxhdGlvbi4gIFRoaXMg ZW5zdXJlcyBzYW5lIGJlaGF2aW9yIGluIGNhc2UgdGhlIHBhcmVudCBwcm9jZXNzCisJCQkgKiBl eGl0cyBiZWZvcmUgd2UgZG8uCisJCQkgKgorCQkJICogV2hlbiBleGVjdXRpbmcgYSBjYWNoZWQg cGxhbiwgY2hpbGQgdGFibGVzIG11c3QgYmUgbG9ja2VkCisJCQkgKiBoZXJlLCBiZWNhdXNlIHBs YW5jYWNoZS5jIChHZXRDYWNoZWRQbGFuKCkpIHdvdWxkIG9ubHkgaGF2ZQorCQkJICogbG9ja2Vk IHRhYmxlcyBtZW50aW9uZWQgaW4gdGhlIHF1ZXJ5LCB0aGF0IGlzLCB0YWJsZXMgd2hvc2UKKwkJ CSAqIFJURXMnIGluRnJvbUNsIGlzIHRydWUuCisJCQkgKi8KKwkJCXJlbCA9IHRhYmxlX29wZW4o cnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7CisJCX0KKwkJZWxzZQogCQl7CiAJCQkvKgog CQkJICogSW4gYSBub3JtYWwgcXVlcnksIHdlIHNob3VsZCBhbHJlYWR5IGhhdmUgdGhlIGFwcHJv cHJpYXRlIGxvY2ssCkBAIC03OTIsMTUgKzgxMCw2IEBAIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRp b24oRVN0YXRlICplc3RhdGUsIEluZGV4IHJ0aSkKIAkJCUFzc2VydChydGUtPnJlbGxvY2ttb2Rl ID09IEFjY2Vzc1NoYXJlTG9jayB8fAogCQkJCSAgIENoZWNrUmVsYXRpb25Mb2NrZWRCeU1lKHJl bCwgcnRlLT5yZWxsb2NrbW9kZSwgZmFsc2UpKTsKIAkJfQotCQllbHNlCi0JCXsKLQkJCS8qCi0J CQkgKiBJZiB3ZSBhcmUgYSBwYXJhbGxlbCB3b3JrZXIsIHdlIG5lZWQgdG8gb2J0YWluIG91ciBv d24gbG9jYWwKLQkJCSAqIGxvY2sgb24gdGhlIHJlbGF0aW9uLiAgVGhpcyBlbnN1cmVzIHNhbmUg YmVoYXZpb3IgaW4gY2FzZSB0aGUKLQkJCSAqIHBhcmVudCBwcm9jZXNzIGV4aXRzIGJlZm9yZSB3 ZSBkby4KLQkJCSAqLwotCQkJcmVsID0gdGFibGVfb3BlbihydGUtPnJlbGlkLCBydGUtPnJlbGxv Y2ttb2RlKTsKLQkJfQogCiAJCWVzdGF0ZS0+ZXNfcmVsYXRpb25zW3J0aSAtIDFdID0gcmVsOwog CX0KQEAgLTgwOCw2ICs4MTcsMzggQEAgRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihFU3RhdGUg KmVzdGF0ZSwgSW5kZXggcnRpKQogCXJldHVybiByZWw7CiB9CiAKKy8qCisgKiBFeGVjTG9ja0Fw cGVuZE5vbkxlYWZSZWxhdGlvbnMKKyAqCQlMb2NrIG5vbi1sZWFmIHJlbGF0aW9ucyB3aG9zZSBj aGlsZHJlbiBhcmUgc2Nhbm5lZCBieSBhIGdpdmVuCisgKgkJQXBwZW5kL01lcmdlQXBwZW5kIG5v ZGUKKyAqLwordm9pZAorRXhlY0xvY2tBcHBlbmROb25MZWFmUmVsYXRpb25zKEVTdGF0ZSAqZXN0 YXRlLCBMaXN0ICphbGxwYXJ0cmVsaWRzKQoreworCUxpc3RDZWxsICpsOworCisJLyogVGhpcyBz aG91bGQgZ2V0IGNhbGxlZCBvbmx5IHdoZW4gZXhlY3V0aW5nIGNhY2hlZCBwbGFucy4gKi8KKwlB c3NlcnQoZXN0YXRlLT5lc19jYWNoZWRwbGFuICE9IE5VTEwpOworCWZvcmVhY2gobCwgYWxscGFy dHJlbGlkcykKKwl7CisJCUJpdG1hcHNldCAqcGFydHJlbGlkcyA9IGxmaXJzdF9ub2RlKEJpdG1h cHNldCwgbCk7CisJCWludAkJaTsKKworCQkvKgorCQkgKiBOb3RlIHRoYXQgd2UgZG9uJ3QgbG9j ayB0aGUgZmlyc3QgbWVtYmVyIChpPTApIG9mIGVhY2ggYml0bWFwc2V0CisJCSAqIGJlY2F1c2Ug aXQgc3RhbmRzIGZvciB0aGUgcm9vdCBwYXJlbnQgbWVudGlvbmVkIGluIHRoZSBxdWVyeSB0aGF0 CisJCSAqIHNob3VsZCBhbHdheXMgaGF2ZSBiZWVuIGxvY2tlZCBiZWZvcmUgZW50ZXJpbmcgdGhl IGV4ZWN1dG9yLgorCQkgKi8KKwkJaSA9IDA7CisJCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJl cihwYXJ0cmVsaWRzLCBpKSkgPiAwKQorCQl7CisJCQlSYW5nZVRibEVudHJ5ICpydGUgPSBleGVj X3J0X2ZldGNoKGksIGVzdGF0ZSk7CisKKwkJCUxvY2tSZWxhdGlvbk9pZChydGUtPnJlbGlkLCBy dGUtPnJlbGxvY2ttb2RlKTsKKwkJfQorCX0KK30KKwogLyoKICAqIEV4ZWNJbml0UmVzdWx0UmVs YXRpb24KICAqCQlPcGVuIHJlbGF0aW9uIGdpdmVuIGJ5IHRoZSBwYXNzZWQtaW4gUlQgaW5kZXgg YW5kIGZpbGwgaXRzCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMu YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCmluZGV4IDhjZjBiMzEzMmQuLjRk ZGY0ZmQ3YTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCkBAIC04MzgsNiArODM4LDcgQEAg cG9zdHF1ZWxfc3RhcnQoZXhlY3V0aW9uX3N0YXRlICplcywgU1FMRnVuY3Rpb25DYWNoZVB0ciBm Y2FjaGUpCiAJCWRlc3QgPSBOb25lX1JlY2VpdmVyOwogCiAJZXMtPnFkID0gQ3JlYXRlUXVlcnlE ZXNjKGVzLT5zdG10LAorCQkJCQkJCSBOVUxMLAkvKiBmbWdyX3NxbCgpIGRvZXNuJ3QgdXNlIENh Y2hlZFBsYW5zICovCiAJCQkJCQkJIGZjYWNoZS0+c3JjLAogCQkJCQkJCSBHZXRBY3RpdmVTbmFw c2hvdCgpLAogCQkJCQkJCSBJbnZhbGlkU25hcHNob3QsCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5k LmMKaW5kZXggNTg4ZjUzODhjNy4uMjAzMzBjNWM1OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBl bmQuYwpAQCAtMTMzLDYgKzEzMywyNSBAQCBFeGVjSW5pdEFwcGVuZChBcHBlbmQgKm5vZGUsIEVT dGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWFwcGVuZHN0YXRlLT5hc19zeW5jZG9uZSA9IGZh bHNlOwogCWFwcGVuZHN0YXRlLT5hc19iZWd1biA9IGZhbHNlOwogCisJLyoKKwkgKiBMb2NrIG5v bi1sZWFmIHBhcnRpdGlvbnMgd2hvc2UgbGVhZiBjaGlsZHJlbiBhcmUgcHJlc2VudCBpbgorCSAq IG5vZGUtPmFwcGVuZHBsYW5zLiAgT25seSBuZWVkIHRvIGRvIHNvIGlmIGV4ZWN1dGluZyBhIGNh Y2hlZAorCSAqIHBsYW4sIGJlY2F1c2UgY2hpbGQgdGFibGVzIHByZXNlbnQgaW4gY2FjaGVkIHBs YW5zIGFyZSBub3QKKwkgKiBsb2NrZWQgYmVmb3JlIGV4ZWN1dGlvbi4KKwkgKgorCSAqIFhYWCAt IHNvbWUgb2YgdGhlIG5vbi1sZWFmIHBhcnRpdGlvbnMgbWF5IGFsc28gYmUgbWVudGlvbmVkIGlu CisJICogcGFydF9wcnVuZV9pbmZvLCB3aGljaCBpZiB0aGV5IGFyZSB3b3VsZCBnZXQgbG9ja2Vk IGFnYWluIGluCisJICogRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKCkgYmVjYXVzZSBpdCBjYWxs cworCSAqIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oKSB3aGljaCBsb2NrcyBjaGlsZCB0YWJs ZXMuCisJICovCisJaWYgKGVzdGF0ZS0+ZXNfY2FjaGVkcGxhbikKKwl7CisJCUV4ZWNMb2NrQXBw ZW5kTm9uTGVhZlJlbGF0aW9ucyhlc3RhdGUsIG5vZGUtPmFsbHBhcnRyZWxpZHMpOworCQlpZiAo IUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJcmV0dXJuIE5VTEw7CisKKwl9CisKIAkv KiBJZiBydW4tdGltZSBwYXJ0aXRpb24gcHJ1bmluZyBpcyBlbmFibGVkLCB0aGVuIHNldCB0aGF0 IHVwIG5vdyAqLwogCWlmIChub2RlLT5wYXJ0X3BydW5lX2luZm8gIT0gTlVMTCkKIAl7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCmluZGV4IGM5ZDQwNmMyMzAuLmE4ZjkxNTcx OTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCkBAIC04MSw2ICs4MSwy NSBAQCBFeGVjSW5pdE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0 ZSwgaW50IGVmbGFncykKIAltZXJnZXN0YXRlLT5wcy5zdGF0ZSA9IGVzdGF0ZTsKIAltZXJnZXN0 YXRlLT5wcy5FeGVjUHJvY05vZGUgPSBFeGVjTWVyZ2VBcHBlbmQ7CiAKKwkvKgorCSAqIExvY2sg bm9uLWxlYWYgcGFydGl0aW9ucyB3aG9zZSBsZWFmIGNoaWxkcmVuIGFyZSBwcmVzZW50IGluCisJ ICogbm9kZS0+bWVyZ2VwbGFucy4gIE9ubHkgbmVlZCB0byBkbyBzbyBpZiBleGVjdXRpbmcgYSBj YWNoZWQKKwkgKiBwbGFuLCBiZWNhdXNlIGNoaWxkIHRhYmxlcyBwcmVzZW50IGluIGNhY2hlZCBw bGFucyBhcmUgbm90CisJICogbG9ja2VkIGJlZm9yZSBleGVjdXRpb24uCisJICoKKwkgKiBYWFgg LSBzb21lIG9mIHRoZSBub24tbGVhZiBwYXJ0aXRpb25zIG1heSBhbHNvIGJlIG1lbnRpb25lZCBp bgorCSAqIHBhcnRfcHJ1bmVfaW5mbywgd2hpY2ggaWYgdGhleSBhcmUgd291bGQgZ2V0IGxvY2tl ZCBhZ2FpbiBpbgorCSAqIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZygpIGJlY2F1c2UgaXQgY2Fs bHMKKwkgKiBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKCkgd2hpY2ggbG9ja3MgY2hpbGQgdGFi bGVzLgorCSAqLworCWlmIChlc3RhdGUtPmVzX2NhY2hlZHBsYW4pCisJeworCQlFeGVjTG9ja0Fw cGVuZE5vbkxlYWZSZWxhdGlvbnMoZXN0YXRlLCBub2RlLT5hbGxwYXJ0cmVsaWRzKTsKKwkJaWYg KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJldHVybiBOVUxMOworCisJfQorCiAJ LyogSWYgcnVuLXRpbWUgcGFydGl0aW9uIHBydW5pbmcgaXMgZW5hYmxlZCwgdGhlbiBzZXQgdGhh dCB1cCBub3cgKi8KIAlpZiAobm9kZS0+cGFydF9wcnVuZV9pbmZvICE9IE5VTEwpCiAJewpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9zcGkuYwppbmRleCA2YTk2ZDdmYzIyLi45YzRlZDc0MjQwIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9zcGkuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwpAQCAt MjY4MCw2ICsyNjgwLDcgQEAgcmVwbGFuOgogCQkJCQlzbmFwID0gSW52YWxpZFNuYXBzaG90Owog CiAJCQkJcWRlc2MgPSBDcmVhdGVRdWVyeURlc2Moc3RtdCwKKwkJCQkJCQkJCQljcGxhbiwKIAkJ CQkJCQkJCQlwbGFuc291cmNlLT5xdWVyeV9zdHJpbmcsCiAJCQkJCQkJCQkJc25hcCwgY3Jvc3Nj aGVja19zbmFwc2hvdCwKIAkJCQkJCQkJCQlkZXN0LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv c3RvcmFnZS9sbWdyL2xtZ3IuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMKaW5k ZXggZWU5Yjg5YTY3Mi4uYzgwN2U5Y2RjYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9sbWdyL2xtZ3IuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jCkBAIC0y Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKICNpbmNsdWRlICJz dG9yYWdlL3NpbnZhbGFkdC5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCisjaW5jbHVkZSAi dXRpbHMvbHN5c2NhY2hlLmgiCiAKIAogLyoKQEAgLTM2NCw2ICszNjUsNTAgQEAgQ2hlY2tSZWxh dGlvbkxvY2tlZEJ5TWUoUmVsYXRpb24gcmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlLCBib29s IG9yc3Ryb25nZXIpCiAJcmV0dXJuIGZhbHNlOwogfQogCisvKgorICoJCUNoZWNrUmVsTG9ja2Vk QnlNZQorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiBjdXJyZW50IHRyYW5zYWN0aW9uIGhvbGRzIGEg bG9jayBvbiB0aGUgZ2l2ZW4gcmVsYXRpb24gb2YKKyAqIG1vZGUgJ2xvY2ttb2RlJy4gIElmICdv cnN0cm9uZ2VyJyBpcyB0cnVlLCBhIHN0cm9uZ2VyIGxvY2ttb2RlIGlzIGFsc28gT0suCisgKiAo IlN0cm9uZ2VyIiBpcyBkZWZpbmVkIGFzICJudW1lcmljYWxseSBoaWdoZXIiLCB3aGljaCBpcyBh IGJpdAorICogc2VtYW50aWNhbGx5IGR1YmlvdXMgYnV0IGlzIE9LIGZvciB0aGUgcHVycG9zZXMg d2UgdXNlIHRoaXMgZm9yLikKKyAqLworYm9vbAorQ2hlY2tSZWxMb2NrZWRCeU1lKE9pZCByZWxp ZCwgTE9DS01PREUgbG9ja21vZGUsIGJvb2wgb3JzdHJvbmdlcikKK3sKKwlPaWQJCQlkYklkID0g Z2V0X3JlbF9yZWxpc3NoYXJlZChyZWxpZCkgPyBJbnZhbGlkT2lkIDogTXlEYXRhYmFzZUlkOwor CUxPQ0tUQUcJCXRhZzsKKworCVNFVF9MT0NLVEFHX1JFTEFUSU9OKHRhZywgZGJJZCwgcmVsaWQp OworCisJaWYgKExvY2tIZWxkQnlNZSgmdGFnLCBsb2NrbW9kZSkpCisJCXJldHVybiB0cnVlOwor CisJaWYgKG9yc3Ryb25nZXIpCisJeworCQlMT0NLTU9ERQlzbG9ja21vZGU7CisKKwkJZm9yIChz bG9ja21vZGUgPSBsb2NrbW9kZSArIDE7CisJCQkgc2xvY2ttb2RlIDw9IE1heExvY2tNb2RlOwor CQkJIHNsb2NrbW9kZSsrKQorCQl7CisJCQlpZiAoTG9ja0hlbGRCeU1lKCZ0YWcsIHNsb2NrbW9k ZSkpCisJCQl7CisjaWZkZWYgTk9UX1VTRUQKKwkJCQkvKiBTb21ldGltZXMgdGhpcyBtaWdodCBi ZSB1c2VmdWwgZm9yIGRlYnVnZ2luZyBwdXJwb3NlcyAqLworCQkJCWVsb2coV0FSTklORywgImxv Y2sgbW9kZSAlcyBzdWJzdGl0dXRlZCBmb3IgJXMgb24gcmVsYXRpb24gJXMiLAorCQkJCQkgR2V0 TG9ja21vZGVOYW1lKHRhZy5sb2NrdGFnX2xvY2ttZXRob2RpZCwgc2xvY2ttb2RlKSwKKwkJCQkJ IEdldExvY2ttb2RlTmFtZSh0YWcubG9ja3RhZ19sb2NrbWV0aG9kaWQsIGxvY2ttb2RlKSwKKwkJ CQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9uKSk7CisjZW5kaWYKKwkJCQlyZXR1 cm4gdHJ1ZTsKKwkJCX0KKwkJfQorCX0KKworCXJldHVybiBmYWxzZTsKK30KKwogLyoKICAqCQlM b2NrSGFzV2FpdGVyc1JlbGF0aW9uCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9w cXVlcnkuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKaW5kZXggOWE5NmI3N2YxZS4uNDhj ZDZmNDMwNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYworKysgYi9zcmMv YmFja2VuZC90Y29wL3BxdWVyeS5jCkBAIC02MCw2ICs2MCw3IEBAIHN0YXRpYyB2b2lkIERvUG9y dGFsUmV3aW5kKFBvcnRhbCBwb3J0YWwpOwogICovCiBRdWVyeURlc2MgKgogQ3JlYXRlUXVlcnlE ZXNjKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwKKwkJCQlDYWNoZWRQbGFuICpjcGxhbiwKIAkJ CQljb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJCVNuYXBzaG90IHNuYXBzaG90LAogCQkJCVNu YXBzaG90IGNyb3NzY2hlY2tfc25hcHNob3QsCkBAIC03Miw2ICs3Myw3IEBAIENyZWF0ZVF1ZXJ5 RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCiAKIAlxZC0+b3BlcmF0aW9uID0gcGxhbm5l ZHN0bXQtPmNvbW1hbmRUeXBlOwkvKiBvcGVyYXRpb24gKi8KIAlxZC0+cGxhbm5lZHN0bXQgPSBw bGFubmVkc3RtdDsJLyogcGxhbiAqLworCXFkLT5jcGxhbiA9IGNwbGFuOwkJCQkvKiBDYWNoZWRQ bGFuLCBpZiBwbGFuIGlzIGZyb20gb25lICovCiAJcWQtPnNvdXJjZVRleHQgPSBzb3VyY2VUZXh0 OwkvKiBxdWVyeSB0ZXh0ICovCiAJcWQtPnNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChzbmFw c2hvdCk7CS8qIHNuYXBzaG90ICovCiAJLyogUkkgY2hlY2sgc25hcHNob3QgKi8KQEAgLTQxMCw2 ICs0MTIsNyBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFt cywKIAkJCQkgKiBzZXQgdGhlIGRlc3RpbmF0aW9uIHRvIERlc3ROb25lLgogCQkJCSAqLwogCQkJ CXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhsaW5pdGlhbF9ub2RlKFBsYW5uZWRTdG10LCBw b3J0YWwtPnN0bXRzKSwKKwkJCQkJCQkJCQkJcG9ydGFsLT5jcGxhbiwKIAkJCQkJCQkJCQkJcG9y dGFsLT5zb3VyY2VUZXh0LAogCQkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLAogCQkJCQkJ CQkJCQlJbnZhbGlkU25hcHNob3QsCkBAIC00NDAsNiArNDQzLDcgQEAgUG9ydGFsU3RhcnQoUG9y dGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJICovCiAJCQkJaWYgKCFFeGVj dXRvclN0YXJ0KHF1ZXJ5RGVzYywgbXllZmxhZ3MpKQogCQkJCXsKKwkJCQkJQXNzZXJ0KHF1ZXJ5 RGVzYy0+Y3BsYW4pOwogCQkJCQlFeGVjdXRvckVuZChxdWVyeURlc2MpOwogCQkJCQlGcmVlUXVl cnlEZXNjKHF1ZXJ5RGVzYyk7CiAJCQkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CkBAIC01MzgsNyAr NTQyLDcgQEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMs CiAJCQkJCQkgKiBDcmVhdGUgdGhlIFF1ZXJ5RGVzYy4gIERlc3RSZWNlaXZlciB3aWxsIGJlIHNl dCBpbgogCQkJCQkJICogUG9ydGFsUnVuTXVsdGkoKSBiZWZvcmUgY2FsbGluZyBFeGVjdXRvclJ1 bigpLgogCQkJCQkJICovCi0JCQkJCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwK KwkJCQkJCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBwb3J0YWwtPmNwbGFuLAog CQkJCQkJCQkJCQkJCXBvcnRhbC0+c291cmNlVGV4dCwKIAkJCQkJCQkJCQkJCQkhaXNfdXRpbGl0 eSA/CiAJCQkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSA6CkBAIC01NjIsNiArNTY2LDcg QEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJ CQlpZiAoIUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBteWVmbGFncykpCiAJCQkJCQl7CiAJCQkJ CQkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwkJCQkJCQlBc3NlcnQocXVlcnlEZXNjLT5jcGxhbik7 CiAJCQkJCQkJRXhlY3V0b3JFbmQocXVlcnlEZXNjKTsKIAkJCQkJCQlGcmVlUXVlcnlEZXNjKHF1 ZXJ5RGVzYyk7CiAJCQkJCQkJcGxhbl92YWxpZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9s c3lzY2FjaGUuYwppbmRleCBmYzZkMjY3ZTQ0Li4yNzI1ZDAyMzEyIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9sc3lzY2FjaGUuYwpAQCAtMjA5NSw2ICsyMDk1LDI3IEBAIGdldF9yZWxfcGVyc2lzdGVu Y2UoT2lkIHJlbGlkKQogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8qCisgKiBnZXRfcmVsX3JlbGlz c2hhcmVkCisgKgorICoJCVJldHVybnMgaWYgdGhlIGdpdmVuIHJlbGF0aW9uIGlzIHNoYXJlZCBv ciBub3QKKyAqLworYm9vbAorZ2V0X3JlbF9yZWxpc3NoYXJlZChPaWQgcmVsaWQpCit7CisJSGVh cFR1cGxlCXRwOworCUZvcm1fcGdfY2xhc3MgcmVsdHVwOworCWJvb2wJCXJlc3VsdDsKKworCXRw ID0gU2VhcmNoU3lzQ2FjaGUxKFJFTE9JRCwgT2JqZWN0SWRHZXREYXR1bShyZWxpZCkpOworCWlm ICghSGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFp bGVkIGZvciByZWxhdGlvbiAldSIsIHJlbGlkKTsKKwlyZWx0dXAgPSAoRm9ybV9wZ19jbGFzcykg R0VUU1RSVUNUKHRwKTsKKwlyZXN1bHQgPSByZWx0dXAtPnJlbGlzc2hhcmVkOworCVJlbGVhc2VT eXNDYWNoZSh0cCk7CisKKwlyZXR1cm4gcmVzdWx0OworfQogCiAvKgkJCQktLS0tLS0tLS0tIFRS QU5TRk9STSBDQUNIRSAtLS0tLS0tLS0tCQkJCQkJICovCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxh bmNhY2hlLmMKaW5kZXggN2Q0MTY4ZjgyZi4uMzlmYjA4NzhmZSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvcGxhbmNhY2hlLmMKQEAgLTEwNCwxMyArMTA0LDEzIEBAIHN0YXRpYyB2b2lkIFJlbGVhc2VH ZW5lcmljUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKTsKIHN0YXRpYyBMaXN0ICpS ZXZhbGlkYXRlQ2FjaGVkUXVlcnkoQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAkJCQkJ CQkJICAgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOwogc3RhdGljIGJvb2wgQ2hlY2tDYWNo ZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpOworc3RhdGljIGJvb2wgR2VuZXJp Y1BsYW5Jc1ZhbGlkKENhY2hlZFBsYW4gKmNwbGFuKTsKIHN0YXRpYyBDYWNoZWRQbGFuICpCdWls ZENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgTGlzdCAqcWxpc3QsCiAJ CQkJCQkJCSAgIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1 ZXJ5RW52KTsKIHN0YXRpYyBib29sIGNob29zZV9jdXN0b21fcGxhbihDYWNoZWRQbGFuU291cmNl ICpwbGFuc291cmNlLAogCQkJCQkJCSAgIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMpOwogc3Rh dGljIGRvdWJsZSBjYWNoZWRfcGxhbl9jb3N0KENhY2hlZFBsYW4gKnBsYW4sIGJvb2wgaW5jbHVk ZV9wbGFubmVyKTsKIHN0YXRpYyBRdWVyeSAqUXVlcnlMaXN0R2V0UHJpbWFyeVN0bXQoTGlzdCAq c3RtdHMpOwotc3RhdGljIHZvaWQgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0 LCBib29sIGFjcXVpcmUpOwogc3RhdGljIHZvaWQgQWNxdWlyZVBsYW5uZXJMb2NrcyhMaXN0ICpz dG10X2xpc3QsIGJvb2wgYWNxdWlyZSk7CiBzdGF0aWMgdm9pZCBTY2FuUXVlcnlGb3JMb2NrcyhR dWVyeSAqcGFyc2V0cmVlLCBib29sIGFjcXVpcmUpOwogc3RhdGljIGJvb2wgU2NhblF1ZXJ5V2Fs a2VyKE5vZGUgKm5vZGUsIGJvb2wgKmFjcXVpcmUpOwpAQCAtNzkyLDggKzc5MiwxNSBAQCBSZXZh bGlkYXRlQ2FjaGVkUXVlcnkoQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKICAqIENhbGxl ciBtdXN0IGhhdmUgYWxyZWFkeSBjYWxsZWQgUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5IHRvIHZlcmlm eSB0aGF0IHRoZQogICogcXVlcnl0cmVlIGlzIHVwIHRvIGRhdGUuCiAgKgotICogT24gYSAidHJ1 ZSIgcmV0dXJuLCB3ZSBoYXZlIGFjcXVpcmVkIHRoZSBsb2NrcyBuZWVkZWQgdG8gcnVuIHRoZSBw bGFuLgotICogKFdlIG11c3QgZG8gdGhpcyBmb3IgdGhlICJ0cnVlIiByZXN1bHQgdG8gYmUgcmFj ZS1jb25kaXRpb24tZnJlZS4pCisgKiBJZiB0aGUgcGxhbiBjb250YWlucyBhbnkgY2hpbGQgcmVs YXRpb25zIHRoYXQgd291bGQgaGF2ZSBiZWVuIGFkZGVkIGJ5IHRoZQorICogcGxhbm5lciwgdGhl eSB3b3VsZCBub3QgaGF2ZSBiZWVuIGxvY2tlZCB5ZXQsIGJlY2F1c2UgQWNxdWlyZVBsYW5uZXJM b2NrcygpCisgKiBvbmx5IGxvY2tzIHJlbGF0aW9ucyB0aGF0IHdvdWxkIGJlIHByZXNlbnQgaW4g dGhlIG9yaWdpbmFsIHF1ZXJ5J3MgcmFuZ2UKKyAqIHRhYmxlICh0aGF0IGlzLCBiZWZvcmUgZW50 ZXJpbmcgdGhlIHBsYW5uZXIpLiAgU28sIHRoZSBwbGFuIGNvdWxkIGdvIHN0YWxlCisgKiBiZWZv cmUgaXQgcmVhY2hlcyBleGVjdXRpb24gaWYgYW55IG9mIHRob3NlIGNoaWxkIHJlbGF0aW9ucyBn ZXQgbW9kaWZpZWQKKyAqIGNvbmN1cnJlbnRseS4gIFRoZSBleGVjdXRvciBtdXN0IGNoZWNrIHRo YXQgdGhlIHBsYW4gKENhY2hlZFBsYW4pIGlzIHN0aWxsCisgKiB2YWxpZCBhZnRlciB0YWtpbmcg YSBsb2NrIG9uIGVhY2ggb2YgdGhlIGNoaWxkIHRhYmxlcyBkdXJpbmcgdGhlIHBsYW4KKyAqIGlu aXRpYWxpemF0aW9uIHBoYXNlLCBhbmQgaWYgaXQgaXMgbm90LCBhc2sgdGhlIGNhbGxlciB0byBy ZWNyZWF0ZSB0aGUKKyAqIHBsYW4uCiAgKi8KIHN0YXRpYyBib29sCiBDaGVja0NhY2hlZFBsYW4o Q2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKQEAgLTgwNyw2MCArODE0LDU2IEBAIENoZWNr Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQogCWlmICghcGxhbikKIAkJ cmV0dXJuIGZhbHNlOwogCi0JQXNzZXJ0KHBsYW4tPm1hZ2ljID09IENBQ0hFRFBMQU5fTUFHSUMp OwotCS8qIEdlbmVyaWMgcGxhbnMgYXJlIG5ldmVyIG9uZS1zaG90ICovCi0JQXNzZXJ0KCFwbGFu LT5pc19vbmVzaG90KTsKKwlpZiAoR2VuZXJpY1BsYW5Jc1ZhbGlkKHBsYW4pKQorCQlyZXR1cm4g dHJ1ZTsKIAogCS8qCi0JICogSWYgcGxhbiBpc24ndCB2YWxpZCBmb3IgY3VycmVudCByb2xlLCB3 ZSBjYW4ndCB1c2UgaXQuCisJICogUGxhbiBoYXMgYmVlbiBpbnZhbGlkYXRlZCwgc28gdW5saW5r IGl0IGZyb20gdGhlIHBhcmVudCBhbmQgcmVsZWFzZSBpdC4KIAkgKi8KLQlpZiAocGxhbi0+aXNf dmFsaWQgJiYgcGxhbi0+ZGVwZW5kc09uUm9sZSAmJgotCQlwbGFuLT5wbGFuUm9sZUlkICE9IEdl dFVzZXJJZCgpKQotCQlwbGFuLT5pc192YWxpZCA9IGZhbHNlOworCVJlbGVhc2VHZW5lcmljUGxh bihwbGFuc291cmNlKTsKIAotCS8qCi0JICogSWYgaXQgYXBwZWFycyB2YWxpZCwgYWNxdWlyZSBs b2NrcyBhbmQgcmVjaGVjazsgdGhpcyBpcyBtdWNoIHRoZSBzYW1lCi0JICogbG9naWMgYXMgaW4g UmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5LCBidXQgZm9yIGEgcGxhbi4KLQkgKi8KLQlpZiAocGxhbi0+ aXNfdmFsaWQpCisJcmV0dXJuIGZhbHNlOworfQorCisvKgorICogR2VuZXJpY1BsYW5Jc1ZhbGlk CisgKgkJSXMgYSBnZW5lcmljIHBsYW4gc3RpbGwgdmFsaWQ/CisgKgorICogSXQgbWF5IGhhdmUg Z29uZSBzdGFsZSBkdWUgdG8gY29uY3VycmVudCBzY2hlbWEgbW9kaWZpY2F0aW9ucyBvZiByZWxh dGlvbnMKKyAqIG1lbnRpb25lZCBpbiB0aGUgcGxhbiBvciBhIGNvdXBsZSBvZiBvdGhlciB0aGlu Z3MgbWVudGlvbmVkIGJlbG93LgorICovCitzdGF0aWMgYm9vbAorR2VuZXJpY1BsYW5Jc1ZhbGlk KENhY2hlZFBsYW4gKmNwbGFuKQoreworCUFzc2VydChjcGxhbiAhPSBOVUxMKTsKKwlBc3NlcnQo Y3BsYW4tPm1hZ2ljID09IENBQ0hFRFBMQU5fTUFHSUMpOworCS8qIEdlbmVyaWMgcGxhbnMgYXJl IG5ldmVyIG9uZS1zaG90ICovCisJQXNzZXJ0KCFjcGxhbi0+aXNfb25lc2hvdCk7CisKKwlpZiAo Y3BsYW4tPmlzX3ZhbGlkKQogCXsKIAkJLyoKIAkJICogUGxhbiBtdXN0IGhhdmUgcG9zaXRpdmUg cmVmY291bnQgYmVjYXVzZSBpdCBpcyByZWZlcmVuY2VkIGJ5CiAJCSAqIHBsYW5zb3VyY2U7IHNv IG5vIG5lZWQgdG8gZmVhciBpdCBkaXNhcHBlYXJzIHVuZGVyIHVzIGhlcmUuCiAJCSAqLwotCQlB c3NlcnQocGxhbi0+cmVmY291bnQgPiAwKTsKLQotCQlBY3F1aXJlRXhlY3V0b3JMb2NrcyhwbGFu LT5zdG10X2xpc3QsIHRydWUpOworCQlBc3NlcnQoY3BsYW4tPnJlZmNvdW50ID4gMCk7CiAKIAkJ LyoKLQkJICogSWYgcGxhbiB3YXMgdHJhbnNpZW50LCBjaGVjayB0byBzZWUgaWYgVHJhbnNhY3Rp b25YbWluIGhhcwotCQkgKiBhZHZhbmNlZCwgYW5kIGlmIHNvIGludmFsaWRhdGUgaXQuCisJCSAq IElmIHBsYW4gaXNuJ3QgdmFsaWQgZm9yIGN1cnJlbnQgcm9sZSwgd2UgY2FuJ3QgdXNlIGl0Lgog CQkgKi8KLQkJaWYgKHBsYW4tPmlzX3ZhbGlkICYmCi0JCQlUcmFuc2FjdGlvbklkSXNWYWxpZChw bGFuLT5zYXZlZF94bWluKSAmJgotCQkJIVRyYW5zYWN0aW9uSWRFcXVhbHMocGxhbi0+c2F2ZWRf eG1pbiwgVHJhbnNhY3Rpb25YbWluKSkKLQkJCXBsYW4tPmlzX3ZhbGlkID0gZmFsc2U7CisJCWlm IChjcGxhbi0+ZGVwZW5kc09uUm9sZSAmJiBjcGxhbi0+cGxhblJvbGVJZCAhPSBHZXRVc2VySWQo KSkKKwkJCWNwbGFuLT5pc192YWxpZCA9IGZhbHNlOwogCiAJCS8qCi0JCSAqIEJ5IG5vdywgaWYg YW55IGludmFsaWRhdGlvbiBoYXMgaGFwcGVuZWQsIHRoZSBpbnZhbCBjYWxsYmFjawotCQkgKiBm dW5jdGlvbnMgd2lsbCBoYXZlIG1hcmtlZCB0aGUgcGxhbiBpbnZhbGlkLgorCQkgKiBJZiBwbGFu IHdhcyB0cmFuc2llbnQsIGNoZWNrIHRvIHNlZSBpZiBUcmFuc2FjdGlvblhtaW4gaGFzCisJCSAq IGFkdmFuY2VkLCBhbmQgaWYgc28gaW52YWxpZGF0ZSBpdC4KIAkJICovCi0JCWlmIChwbGFuLT5p c192YWxpZCkKLQkJewotCQkJLyogU3VjY2Vzc2Z1bGx5IHJldmFsaWRhdGVkIGFuZCBsb2NrZWQg dGhlIHF1ZXJ5LiAqLwotCQkJcmV0dXJuIHRydWU7Ci0JCX0KLQotCQkvKiBPb3BzLCB0aGUgcmFj ZSBjYXNlIGhhcHBlbmVkLiAgUmVsZWFzZSB1c2VsZXNzIGxvY2tzLiAqLwotCQlBY3F1aXJlRXhl Y3V0b3JMb2NrcyhwbGFuLT5zdG10X2xpc3QsIGZhbHNlKTsKKwkJaWYgKFRyYW5zYWN0aW9uSWRJ c1ZhbGlkKGNwbGFuLT5zYXZlZF94bWluKSAmJgorCQkJIVRyYW5zYWN0aW9uSWRFcXVhbHMoY3Bs YW4tPnNhdmVkX3htaW4sIFRyYW5zYWN0aW9uWG1pbikpCisJCQljcGxhbi0+aXNfdmFsaWQgPSBm YWxzZTsKIAl9CiAKLQkvKgotCSAqIFBsYW4gaGFzIGJlZW4gaW52YWxpZGF0ZWQsIHNvIHVubGlu ayBpdCBmcm9tIHRoZSBwYXJlbnQgYW5kIHJlbGVhc2UgaXQuCi0JICovCi0JUmVsZWFzZUdlbmVy aWNQbGFuKHBsYW5zb3VyY2UpOwotCi0JcmV0dXJuIGZhbHNlOworCXJldHVybiBjcGxhbi0+aXNf dmFsaWQ7CiB9CiAKIC8qCkBAIC0xMTI5LDkgKzExMzIsMTYgQEAgY2FjaGVkX3BsYW5fY29zdChD YWNoZWRQbGFuICpwbGFuLCBib29sIGluY2x1ZGVfcGxhbm5lcikKICAqIFRoaXMgZnVuY3Rpb24g aGlkZXMgdGhlIGxvZ2ljIHRoYXQgZGVjaWRlcyB3aGV0aGVyIHRvIHVzZSBhIGdlbmVyaWMKICAq IHBsYW4gb3IgYSBjdXN0b20gcGxhbiBmb3IgdGhlIGdpdmVuIHBhcmFtZXRlcnM6IHRoZSBjYWxs ZXIgZG9lcyBub3Qga25vdwogICogd2hpY2ggaXQgd2lsbCBnZXQuCi0gKgotICogT24gcmV0dXJu LCB0aGUgcGxhbiBpcyB2YWxpZCBhbmQgd2UgaGF2ZSBzdWZmaWNpZW50IGxvY2tzIHRvIGJlZ2lu Ci0gKiBleGVjdXRpb24uCisKKyAqIFVwb24gcmV0dXJuLCB0aGUgcGxhbiBpcyBnZW5lcmFsbHkg dmFsaWQuIEhvd2V2ZXIsIGlmIGl0IGluY2x1ZGVzCisgKiBpbmhlcml0YW5jZS9wYXJ0aXRpb24g Y2hpbGQgdGFibGVzLCB0aGV5IHdpbGwgbm90IGhhdmUgYmVlbiBsb2NrZWQsIHNpbmNlCisgKiBv bmx5IHRhYmxlcyBtZW50aW9uZWQgaW4gdGhlIG9yaWdpbmFsIHF1ZXJ5IGFyZSBsb2NrZWQgaGVy ZS4gVGhlIGV4ZWN1dG9yCisgKiBsb2NrcyB0aGVzZSBjaGlsZCB0YWJsZXMgd2hlbiBzZXR0aW5n IHVwIHRoZSBwbGFuIHRyZWUuIElmIHRoZSBwbGFuIGlzCisgKiBpbnZhbGlkYXRlZCAgZHVlIHRv IHRoZXNlIGxvY2tzLCB0aGUgZXhlY3V0b3Igc2hvdWxkIHByb21wdCB0aGUgY2FsbGluZworICog bW9kdWxlIHRvIGZldGNoIGEgbmV3IHBsYW4gYnkgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIGFnYWlu LiBXZSBkZWZlciBjaGlsZAorICogdGFibGUgbG9ja2luZyB0byB0aGUgZXhlY3V0b3IgbGlrZSB0 aGlzIGJlY2F1c2Ugbm90IGFsbCBtaWdodCBuZWVkIGxvY2tpbmc7CisgKiBzb21lIG1pZ2h0IGJl IHBydW5lZCBkdXJpbmcgZXhlY3V0b3IgcGxhbiBpbml0aWFsaXphdGlvbiwgZXNwZWNpYWxseSBp ZgorICogdGhlIHBsYW4gbm9kZXMgdW5kZXIgd2hpY2ggdGhleSBhcmUgc2Nhbm5lZCBzdXBwb3J0 IHBhcnRpdGlvbiBwcnVuaW5nLgogICoKICAqIE9uIHJldHVybiwgdGhlIHJlZmNvdW50IG9mIHRo ZSBwbGFuIGhhcyBiZWVuIGluY3JlbWVudGVkOyBhIGxhdGVyCiAgKiBSZWxlYXNlQ2FjaGVkUGxh bigpIGNhbGwgaXMgZXhwZWN0ZWQuICBJZiAib3duZXIiIGlzIG5vdCBOVUxMIHRoZW4KQEAgLTEx NjYsNyArMTE3NiwxMCBAQCBHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3Vy Y2UsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCiAJewogCQlpZiAoQ2hlY2tDYWNoZWRQbGFu KHBsYW5zb3VyY2UpKQogCQl7Ci0JCQkvKiBXZSB3YW50IGEgZ2VuZXJpYyBwbGFuLCBhbmQgd2Ug YWxyZWFkeSBoYXZlIGEgdmFsaWQgb25lICovCisJCQkvKgorCQkJICogV2Ugd2FudCBhIGdlbmVy aWMgcGxhbiwgYW5kIHdlIGFscmVhZHkgaGF2ZSBhIHZhbGlkIG9uZSwgdGhvdWdoCisJCQkgKiBz ZWUgdGhlIGhlYWRlciBjb21tZW50LgorCQkJICovCiAJCQlwbGFuID0gcGxhbnNvdXJjZS0+Z3Bs YW47CiAJCQlBc3NlcnQocGxhbi0+bWFnaWMgPT0gQ0FDSEVEUExBTl9NQUdJQyk7CiAJCX0KQEAg LTEzNjQsOCArMTM3Nyw4IEBAIENhY2hlZFBsYW5BbGxvd3NTaW1wbGVWYWxpZGl0eUNoZWNrKENh Y2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJfQogCiAJLyoKLQkgKiBSZWplY3QgaWYgQWNx dWlyZUV4ZWN1dG9yTG9ja3Mgd291bGQgaGF2ZSBhbnl0aGluZyB0byBkby4gIFRoaXMgaXMKLQkg KiBwcm9iYWJseSB1bm5lY2Vzc2FyeSBnaXZlbiB0aGUgcHJldmlvdXMgY2hlY2ssIGJ1dCBsZXQn cyBiZSBzYWZlLgorCSAqIFJlamVjdCBpZiB0aGUgZXhlY3V0b3Igd291bGQgbmVlZCB0byB0YWtl IGFkZGl0aW9uYWwgbG9ja3MsIHRoYXQgaXMsIGluCisJICogYWRkaXRpb24gdG8gdGhvc2UgdGFr ZW4gYnkgQWNxdWlyZVBsYW5uZXJMb2NrcygpIG9uIGEgZ2l2ZW4gcXVlcnkuCiAJICovCiAJZm9y ZWFjaChsYywgcGxhbi0+c3RtdF9saXN0KQogCXsKQEAgLTE3NDEsNTggKzE3NTQsNiBAQCBRdWVy eUxpc3RHZXRQcmltYXJ5U3RtdChMaXN0ICpzdG10cykKIAlyZXR1cm4gTlVMTDsKIH0KIAotLyoK LSAqIEFjcXVpcmVFeGVjdXRvckxvY2tzOiBhY3F1aXJlIGxvY2tzIG5lZWRlZCBmb3IgZXhlY3V0 aW9uIG9mIGEgY2FjaGVkIHBsYW47Ci0gKiBvciByZWxlYXNlIHRoZW0gaWYgYWNxdWlyZSBpcyBm YWxzZS4KLSAqLwotc3RhdGljIHZvaWQKLUFjcXVpcmVFeGVjdXRvckxvY2tzKExpc3QgKnN0bXRf bGlzdCwgYm9vbCBhY3F1aXJlKQotewotCUxpc3RDZWxsICAgKmxjMTsKLQotCWZvcmVhY2gobGMx LCBzdG10X2xpc3QpCi0JewotCQlQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQgPSBsZmlyc3Rfbm9k ZShQbGFubmVkU3RtdCwgbGMxKTsKLQkJTGlzdENlbGwgICAqbGMyOwotCi0JCWlmIChwbGFubmVk c3RtdC0+Y29tbWFuZFR5cGUgPT0gQ01EX1VUSUxJVFkpCi0JCXsKLQkJCS8qCi0JCQkgKiBJZ25v cmUgdXRpbGl0eSBzdGF0ZW1lbnRzLCBleGNlcHQgdGhvc2UgKHN1Y2ggYXMgRVhQTEFJTikgdGhh dAotCQkJICogY29udGFpbiBhIHBhcnNlZC1idXQtbm90LXBsYW5uZWQgcXVlcnkuICBOb3RlOiBp dCdzIG9rYXkgdG8gdXNlCi0JCQkgKiBTY2FuUXVlcnlGb3JMb2NrcywgZXZlbiB0aG91Z2ggdGhl IHF1ZXJ5IGhhc24ndCBiZWVuIHRocm91Z2gKLQkJCSAqIHJ1bGUgcmV3cml0aW5nLCBiZWNhdXNl IHJld3JpdGluZyBkb2Vzbid0IGNoYW5nZSB0aGUgcXVlcnkKLQkJCSAqIHJlcHJlc2VudGF0aW9u LgotCQkJICovCi0JCQlRdWVyeQkgICAqcXVlcnkgPSBVdGlsaXR5Q29udGFpbnNRdWVyeShwbGFu bmVkc3RtdC0+dXRpbGl0eVN0bXQpOwotCi0JCQlpZiAocXVlcnkpCi0JCQkJU2NhblF1ZXJ5Rm9y TG9ja3MocXVlcnksIGFjcXVpcmUpOwotCQkJY29udGludWU7Ci0JCX0KLQotCQlmb3JlYWNoKGxj MiwgcGxhbm5lZHN0bXQtPnJ0YWJsZSkKLQkJewotCQkJUmFuZ2VUYmxFbnRyeSAqcnRlID0gKFJh bmdlVGJsRW50cnkgKikgbGZpcnN0KGxjMik7Ci0KLQkJCWlmICghKHJ0ZS0+cnRla2luZCA9PSBS VEVfUkVMQVRJT04gfHwKLQkJCQkgIChydGUtPnJ0ZWtpbmQgPT0gUlRFX1NVQlFVRVJZICYmIE9p ZElzVmFsaWQocnRlLT5yZWxpZCkpKSkKLQkJCQljb250aW51ZTsKLQotCQkJLyoKLQkJCSAqIEFj cXVpcmUgdGhlIGFwcHJvcHJpYXRlIHR5cGUgb2YgbG9jayBvbiBlYWNoIHJlbGF0aW9uIE9JRC4g Tm90ZQotCQkJICogdGhhdCB3ZSBkb24ndCBhY3R1YWxseSB0cnkgdG8gb3BlbiB0aGUgcmVsLCBh bmQgaGVuY2Ugd2lsbCBub3QKLQkJCSAqIGZhaWwgaWYgaXQncyBiZWVuIGRyb3BwZWQgZW50aXJl bHkgLS0tIHdlJ2xsIGp1c3QgdHJhbnNpZW50bHkKLQkJCSAqIGFjcXVpcmUgYSBub24tY29uZmxp Y3RpbmcgbG9jay4KLQkJCSAqLwotCQkJaWYgKGFjcXVpcmUpCi0JCQkJTG9ja1JlbGF0aW9uT2lk KHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOwotCQkJZWxzZQotCQkJCVVubG9ja1JlbGF0 aW9uT2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOwotCQl9Ci0JfQotfQotCiAvKgog ICogQWNxdWlyZVBsYW5uZXJMb2NrczogYWNxdWlyZSBsb2NrcyBuZWVkZWQgZm9yIHBsYW5uaW5n IG9mIGEgcXVlcnl0cmVlIGxpc3Q7CiAgKiBvciByZWxlYXNlIHRoZW0gaWYgYWNxdWlyZSBpcyBm YWxzZS4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaCBiL3NyYy9p bmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAppbmRleCAzNzU1NDcyN2VlLi4zOTJhYmI1MTUwIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKKysrIGIvc3JjL2luY2x1 ZGUvY29tbWFuZHMvZXhwbGFpbi5oCkBAIC04OCw3ICs4OCw3IEBAIGV4dGVybiB2b2lkIEV4cGxh aW5PbmVVdGlsaXR5KE5vZGUgKnV0aWxpdHlTdG10LCBJbnRvQ2xhdXNlICppbnRvLAogCQkJCQkJ CSAgRXhwbGFpblN0YXRlICplcywgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCQkJCQkJICBQ YXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOwogCi1leHRl cm4gUXVlcnlEZXNjICpFeHBsYWluUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpzdG10LAorZXh0ZXJu IFF1ZXJ5RGVzYyAqRXhwbGFpblF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqc3RtdCwgc3RydWN0IENh Y2hlZFBsYW4gKmNwbGFuLAogCQkJCSBjb25zdCBjaGFyICpxdWVyeVN0cmluZywgSW50b0NsYXVz ZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJCQkgUGFyYW1MaXN0SW5mbyBwYXJhbXMsIFF1 ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKIGV4dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFuKFF1 ZXJ5RGVzYyAqcXVlcnlEZXNjLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhl Y2Rlc2MuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKaW5kZXggYWYyYmYzNmRm Yi4uNGI3MzY4YTBkYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2Mu aAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCkBAIC0zMiw5ICszMiwxMiBA QAogICovCiB0eXBlZGVmIHN0cnVjdCBRdWVyeURlc2MKIHsKKwlOb2RlVGFnCQl0eXBlOworCiAJ LyogVGhlc2UgZmllbGRzIGFyZSBwcm92aWRlZCBieSBDcmVhdGVRdWVyeURlc2MgKi8KIAlDbWRU eXBlCQlvcGVyYXRpb247CQkvKiBDTURfU0VMRUNULCBDTURfVVBEQVRFLCBldGMuICovCiAJUGxh bm5lZFN0bXQgKnBsYW5uZWRzdG10OwkvKiBwbGFubmVyJ3Mgb3V0cHV0IChjb3VsZCBiZSB1dGls aXR5LCB0b28pICovCisJc3RydWN0IENhY2hlZFBsYW4gKmNwbGFuOwkvKiBDYWNoZWRQbGFuLCBp ZiBwbGFubmVkc3RtdCBpcyBmcm9tIG9uZSAqLwogCWNvbnN0IGNoYXIgKnNvdXJjZVRleHQ7CQkv KiBzb3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkgKi8KIAlTbmFwc2hvdAlzbmFwc2hvdDsJCS8qIHNu YXBzaG90IHRvIHVzZSBmb3IgcXVlcnkgKi8KIAlTbmFwc2hvdAljcm9zc2NoZWNrX3NuYXBzaG90 OwkvKiBjcm9zc2NoZWNrIGZvciBSSSB1cGRhdGUvZGVsZXRlICovCkBAIC01Nyw2ICs2MCw3IEBA IHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogCiAvKiBpbiBwcXVlcnkuYyAqLwogZXh0ZXJuIFF1 ZXJ5RGVzYyAqQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwKKwkJCQkJ CQkJICBzdHJ1Y3QgQ2FjaGVkUGxhbiAqY3BsYW4sCiAJCQkJCQkJCSAgY29uc3QgY2hhciAqc291 cmNlVGV4dCwKIAkJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCQkJICBTbmFwc2hv dCBjcm9zc2NoZWNrX3NuYXBzaG90LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv ZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggMTBjNWNk YTE2OS4uZWFhNjA1ZTUxMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0 b3IuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCkBAIC01OTksNiArNTk5 LDcgQEAgZXhlY19ydF9mZXRjaChJbmRleCBydGksIEVTdGF0ZSAqZXN0YXRlKQogfQogCiBleHRl cm4gUmVsYXRpb24gRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgSW5k ZXggcnRpKTsKK2V4dGVybiB2b2lkIEV4ZWNMb2NrQXBwZW5kTm9uTGVhZlJlbGF0aW9ucyhFU3Rh dGUgKmVzdGF0ZSwgTGlzdCAqYWxscGFydHJlbGlkcyk7CiBleHRlcm4gdm9pZCBFeGVjSW5pdFJl c3VsdFJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZv LAogCQkJCQkJCQkgICBJbmRleCBydGkpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9y YWdlL2xtZ3IuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oCmluZGV4IDRlZTkxZTNjZjku LjU5OGJmMjY4OGEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oCisrKyBi L3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oCkBAIC00OCw2ICs0OCw3IEBAIGV4dGVybiBib29s IENvbmRpdGlvbmFsTG9ja1JlbGF0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLCBMT0NLTU9ERSBsb2Nr bW9kZSk7CiBleHRlcm4gdm9pZCBVbmxvY2tSZWxhdGlvbihSZWxhdGlvbiByZWxhdGlvbiwgTE9D S01PREUgbG9ja21vZGUpOwogZXh0ZXJuIGJvb2wgQ2hlY2tSZWxhdGlvbkxvY2tlZEJ5TWUoUmVs YXRpb24gcmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlLAogCQkJCQkJCQkJYm9vbCBvcnN0cm9u Z2VyKTsKK2V4dGVybiBib29sIENoZWNrUmVsTG9ja2VkQnlNZShPaWQgcmVsaWQsIExPQ0tNT0RF IGxvY2ttb2RlLCBib29sIG9yc3Ryb25nZXIpOwogZXh0ZXJuIGJvb2wgTG9ja0hhc1dhaXRlcnNS ZWxhdGlvbihSZWxhdGlvbiByZWxhdGlvbiwgTE9DS01PREUgbG9ja21vZGUpOwogCiBleHRlcm4g dm9pZCBMb2NrUmVsYXRpb25JZEZvclNlc3Npb24oTG9ja1JlbElkICpyZWxpZCwgTE9DS01PREUg bG9ja21vZGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmggYi9z cmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAppbmRleCBmNWZkYmZlMTE2Li5hMDI0ZTVkY2Qw IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAorKysgYi9zcmMvaW5j bHVkZS91dGlscy9sc3lzY2FjaGUuaApAQCAtMTQwLDYgKzE0MCw3IEBAIGV4dGVybiBjaGFyIGdl dF9yZWxfcmVsa2luZChPaWQgcmVsaWQpOwogZXh0ZXJuIGJvb2wgZ2V0X3JlbF9yZWxpc3BhcnRp dGlvbihPaWQgcmVsaWQpOwogZXh0ZXJuIE9pZAlnZXRfcmVsX3RhYmxlc3BhY2UoT2lkIHJlbGlk KTsKIGV4dGVybiBjaGFyIGdldF9yZWxfcGVyc2lzdGVuY2UoT2lkIHJlbGlkKTsKK2V4dGVybiBi b29sIGdldF9yZWxfcmVsaXNzaGFyZWQoT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3RyYW5z Zm9ybV9mcm9tc3FsKE9pZCB0eXBpZCwgT2lkIGxhbmdpZCwgTGlzdCAqdHJmdHlwZXMpOwogZXh0 ZXJuIE9pZAlnZXRfdHJhbnNmb3JtX3Rvc3FsKE9pZCB0eXBpZCwgT2lkIGxhbmdpZCwgTGlzdCAq dHJmdHlwZXMpOwogZXh0ZXJuIGJvb2wgZ2V0X3R5cGlzZGVmaW5lZChPaWQgdHlwaWQpOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZpbGUgYi9zcmMv dGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZQppbmRleCA3MGYyNGU4NDZkLi4y ZmNhODRkMDI3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9N YWtlZmlsZQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZQpA QCAtOCw3ICs4LDggQEAgT0JKUyA9IFwKIAlkZWxheV9leGVjdXRpb24ubwogCiBJU09MQVRJT04g PSBwYXJ0aXRpb24tYWRkaXRpb24gXAotCSAgICBwYXJ0aXRpb24tcmVtb3ZhbC0xCisJICAgIHBh cnRpdGlvbi1yZW1vdmFsLTEgXAorCQljYWNoZWQtcGxhbi1yZXBsYW4KIAogaWZkZWYgVVNFX1BH WFMKIFBHX0NPTkZJRyA9IHBnX2NvbmZpZwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9k ZWxheV9leGVjdXRpb24vZGVsYXlfZXhlY3V0aW9uLmMgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5 X2V4ZWN1dGlvbi9kZWxheV9leGVjdXRpb24uYwppbmRleCA3Y2Q3NmViMzRiLi5jZTE4OTE1NmFk IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9kZWxheV9leGVj dXRpb24uYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9kZWxheV9leGVj dXRpb24uYwpAQCAtMSwxNCArMSwxOCBAQAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgogICogZGVs YXlfZXhlY3V0aW9uLmMKLSAqCQlUZXN0IG1vZHVsZSB0byBhbGxvdyBkZWxheSBiZXR3ZWVuIHBh cnNpbmcgYW5kIGV4ZWN1dGlvbiBvZiBhIHF1ZXJ5LgorICoJCVRlc3QgbW9kdWxlIHRvIGludHJv ZHVjZSBkZWxheSBhdCB2YXJpb3VzIHBvaW50cyBkdXJpbmcgZXhlY3V0aW9uIG9mIGEKKyAqCQlx dWVyeSB0byB0ZXN0IHRoYXQgZXhlY3V0aW9uIHByb2NlZWRzIHNhZmVseSBpbiBsaWdodCBvZiBj b25jdXJyZW50CisgKgkJY2hhbmdlcy4KICAqCiAgKiBUaGUgZGVsYXkgaXMgaW1wbGVtZW50ZWQg YnkgdGFraW5nIGFuZCBpbW1lZGlhdGVseSByZWxlYXNpbmcgYSBzcGVjaWZpZWQKICAqIGFkdmlz b3J5IGxvY2suICBJZiBhbm90aGVyIHByb2Nlc3MgaGFzIHByZXZpb3VzbHkgdGFrZW4gdGhhdCBs b2NrLCB0aGUKICAqIGN1cnJlbnQgcHJvY2VzcyB3aWxsIGJlIGJsb2NrZWQgdW50aWwgdGhlIGxv Y2sgaXMgcmVsZWFzZWQ7IG90aGVyd2lzZSwKICAqIHRoZXJlJ3Mgbm8gZWZmZWN0LiAgVGhpcyBh bGxvd3MgYW4gaXNvbGF0aW9udGVzdGVyIHNjcmlwdCB0byByZWxpYWJseQotICogdGVzdCBiZWhh dmlvcnMgd2hlcmUgc29tZSBzcGVjaWZpZWQgYWN0aW9uIGhhcHBlbnMgaW4gYW5vdGhlciBiYWNr ZW5kCi0gKiBiZXR3ZWVuIHBhcnNpbmcgYW5kIGV4ZWN1dGlvbiBvZiBhbnkgZGVzaXJlZCBxdWVy eS4KKyAqIHRlc3QgYmVoYXZpb3JzIHdoZXJlIHNvbWUgc3BlY2lmaWVkIGFjdGlvbiBoYXBwZW5z IGluIGFub3RoZXIgYmFja2VuZCBpbgorICogYSBjb3VwbGUgb2YgY2FzZXM6IDEpIGJldHdlZW4g cGFyc2luZyBhbmQgZXhlY3V0aW9uIG9mIGFueSBkZXNpcmVkIHF1ZXJ5CisgKiB3aGVuIHVzaW5n IHRoZSBwbGFubmVyX2hvb2ssIDIpIGJldHdlZW4gUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5KCkgYW5k CisgKiBFeGVjdXRvclN0YXJ0KCkgd2hlbiB1c2luZyB0aGUgRXhlY3V0b3JTdGFydF9ob29rLgog ICoKICAqIENvcHlyaWdodCAoYykgMjAyMC0yMDIzLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAogICoKQEAgLTIyLDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgPGxpbWl0cy5oPgog CisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcGxh bm5lci5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3Vj LmgiCkBAIC0zMiw5ICszNywxMSBAQCBQR19NT0RVTEVfTUFHSUM7CiAKIC8qIEdVQzogYWR2aXNv cnkgbG9jayBJRCB0byB1c2UuICBaZXJvIGRpc2FibGVzIHRoZSBmZWF0dXJlLiAqLwogc3RhdGlj IGludAlwb3N0X3BsYW5uaW5nX2xvY2tfaWQgPSAwOworc3RhdGljIGludAlleGVjdXRvcl9zdGFy dF9sb2NrX2lkID0gMDsKIAotLyogU2F2ZSBwcmV2aW91cyBwbGFubmVyIGhvb2sgdXNlciB0byBi ZSBhIGdvb2QgY2l0aXplbiAqLworLyogU2F2ZSBwcmV2aW91cyBob29rIHVzZXJzIHRvIGJlIGEg Z29vZCBjaXRpemVuICovCiBzdGF0aWMgcGxhbm5lcl9ob29rX3R5cGUgcHJldl9wbGFubmVyX2hv b2sgPSBOVUxMOworc3RhdGljIEV4ZWN1dG9yU3RhcnRfaG9va190eXBlIHByZXZfRXhlY3V0b3JT dGFydF9ob29rID0gTlVMTDsKIAogCiAvKiBwbGFubmVyX2hvb2sgZnVuY3Rpb24gdG8gcHJvdmlk ZSB0aGUgZGVzaXJlZCBkZWxheSAqLwpAQCAtNzAsMTEgKzc3LDQ1IEBAIGRlbGF5X2V4ZWN1dGlv bl9wbGFubmVyKFF1ZXJ5ICpwYXJzZSwgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLAogCXJldHVy biByZXN1bHQ7CiB9CiAKKy8qIEV4ZWN1dG9yU3RhcnRfaG9vayBmdW5jdGlvbiB0byBwcm92aWRl IHRoZSBkZXNpcmVkIGRlbGF5ICovCitzdGF0aWMgYm9vbAorZGVsYXlfZXhlY3V0aW9uX0V4ZWN1 dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCit7CisJYm9vbAlwbGFu X3ZhbGlkOworCisJLyogSWYgZW5hYmxlZCwgZGVsYXkgYnkgdGFraW5nIGFuZCByZWxlYXNpbmcg dGhlIHNwZWNpZmllZCBsb2NrICovCisJaWYgKGV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgIT0gMCkK Kwl7CisJCURpcmVjdEZ1bmN0aW9uQ2FsbDEocGdfYWR2aXNvcnlfbG9ja19pbnQ4LAorCQkJCQkJ CUludDY0R2V0RGF0dW0oKGludDY0KSBleGVjdXRvcl9zdGFydF9sb2NrX2lkKSk7CisJCURpcmVj dEZ1bmN0aW9uQ2FsbDEocGdfYWR2aXNvcnlfdW5sb2NrX2ludDgsCisJCQkJCQkJSW50NjRHZXRE YXR1bSgoaW50NjQpIGV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQpKTsKKworCQkvKgorCQkgKiBFbnN1 cmUgdGhhdCB3ZSBub3RpY2UgYW55IHBlbmRpbmcgaW52YWxpZGF0aW9ucywgc2luY2UgdGhlIGFk dmlzb3J5CisJCSAqIGxvY2sgZnVuY3Rpb25zIGRvbid0IGRvIHRoaXMuCisJCSAqLworCQlBY2Nl cHRJbnZhbGlkYXRpb25NZXNzYWdlcygpOworCX0KKworCS8qIE5vdyBzdGFydCB0aGUgZXhlY3V0 b3IsIHBvc3NpYmx5IHZpYSBhIHByZXZpb3VzIGhvb2sgdXNlciAqLworCWlmIChwcmV2X0V4ZWN1 dG9yU3RhcnRfaG9vaykKKwkJcGxhbl92YWxpZCA9IHByZXZfRXhlY3V0b3JTdGFydF9ob29rKHF1 ZXJ5RGVzYywgZWZsYWdzKTsKKwllbHNlCisJCXBsYW5fdmFsaWQgPSBzdGFuZGFyZF9FeGVjdXRv clN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKworCWlmIChleGVjdXRvcl9zdGFydF9sb2NrX2lk ICE9IDApCisJCWVsb2coTk9USUNFLCAiRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQ bGFuIGlzICVzIiwKKwkJCSBwbGFuX3ZhbGlkID8gInZhbGlkIiA6ICJub3QgdmFsaWQiKTsKKwor CXJldHVybiBwbGFuX3ZhbGlkOworfQorCiAvKiBNb2R1bGUgbG9hZCBmdW5jdGlvbiAqLwogdm9p ZAogX1BHX2luaXQodm9pZCkKIHsKLQkvKiBTZXQgdXAgdGhlIEdVQyB0byBjb250cm9sIHdoaWNo IGxvY2sgaXMgdXNlZCAqLworCS8qIFNldCB1cCBHVUNzIHRvIGNvbnRyb2wgd2hpY2ggbG9jayBp cyB1c2VkICovCiAJRGVmaW5lQ3VzdG9tSW50VmFyaWFibGUoImRlbGF5X2V4ZWN1dGlvbi5wb3N0 X3BsYW5uaW5nX2xvY2tfaWQiLAogCQkJCQkJCSJTZXRzIHRoZSBhZHZpc29yeSBsb2NrIElEIHRv IGJlIGxvY2tlZC91bmxvY2tlZCBhZnRlciBwbGFubmluZy4iLAogCQkJCQkJCSJaZXJvIGRpc2Fi bGVzIHRoZSBkZWxheS4iLApAQCAtODYsMTAgKzEyNywyMiBAQCBfUEdfaW5pdCh2b2lkKQogCQkJ CQkJCU5VTEwsCiAJCQkJCQkJTlVMTCwKIAkJCQkJCQlOVUxMKTsKLQorCURlZmluZUN1c3RvbUlu dFZhcmlhYmxlKCJkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCIsCisJCQkJ CQkJIlNldHMgdGhlIGFkdmlzb3J5IGxvY2sgSUQgdG8gYmUgbG9ja2VkL3VubG9ja2VkIGJlZm9y ZSBzdGFydGluZyBleGVjdXRpb24uIiwKKwkJCQkJCQkiWmVybyBkaXNhYmxlcyB0aGUgZGVsYXku IiwKKwkJCQkJCQkmZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCwKKwkJCQkJCQkwLAorCQkJCQkJCTAs IElOVF9NQVgsCisJCQkJCQkJUEdDX1VTRVJTRVQsCisJCQkJCQkJMCwKKwkJCQkJCQlOVUxMLAor CQkJCQkJCU5VTEwsCisJCQkJCQkJTlVMTCk7CiAJTWFya0dVQ1ByZWZpeFJlc2VydmVkKCJkZWxh eV9leGVjdXRpb24iKTsKIAotCS8qIEluc3RhbGwgb3VyIGhvb2sgKi8KKwkvKiBJbnN0YWxsIG91 ciBob29rcy4gKi8KIAlwcmV2X3BsYW5uZXJfaG9vayA9IHBsYW5uZXJfaG9vazsKIAlwbGFubmVy X2hvb2sgPSBkZWxheV9leGVjdXRpb25fcGxhbm5lcjsKKwlwcmV2X0V4ZWN1dG9yU3RhcnRfaG9v ayA9IEV4ZWN1dG9yU3RhcnRfaG9vazsKKwlFeGVjdXRvclN0YXJ0X2hvb2sgPSBkZWxheV9leGVj dXRpb25fRXhlY3V0b3JTdGFydDsKIH0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvZGVs YXlfZXhlY3V0aW9uL2V4cGVjdGVkL2NhY2hlZC1wbGFuLXJlcGxhbi5vdXQgYi9zcmMvdGVzdC9t b2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9leHBlY3RlZC9jYWNoZWQtcGxhbi1yZXBsYW4ub3V0Cm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjBhYzZhMTdjMmIKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9leHBlY3RlZC9jYWNo ZWQtcGxhbi1yZXBsYW4ub3V0CkBAIC0wLDAgKzEsMTU2IEBACitQYXJzZWQgdGVzdCBzcGVjIHdp dGggMiBzZXNzaW9ucworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFwcmVwIHMybG9jayBzMWV4 ZWMgczJkcm9waSBzMnVubG9jaworc3RlcCBzMXByZXA6IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBm b3JjZV9nZW5lcmljX3BsYW47CisJCSAgUFJFUEFSRSBxIEFTIFNFTEVDVCAqIEZST00gZm9vdiBX SEVSRSBhID0gJDE7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEgKDEpOworUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBcHBlbmQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAg ICAgICAgICAKKyAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gZm9vMTEgZm9vXzEgICAgICAgCisg ICAgICAgIFJlY2hlY2sgQ29uZDogKGEgPSAkMSkgICAgICAgICAgICAgIAorICAgICAgICAtPiAg Qml0bWFwIEluZGV4IFNjYW4gb24gZm9vMTFfYV9pZHgKKyAgICAgICAgICAgICAgSW5kZXggQ29u ZDogKGEgPSAkMSkgICAgICAgICAgCisoNiByb3dzKQorCitzdGVwIHMybG9jazogU0VMRUNUIHBn X2Fkdmlzb3J5X2xvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfbG9jaworLS0tLS0tLS0tLS0tLS0t LQorICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzogTE9BRCAnZGVsYXlf ZXhlY3V0aW9uJzsKKwkJICBTRVQgZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tf aWQgPSAxMjM0NTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcSAoMSk7IDx3YWl0 aW5nIC4uLj4KK3N0ZXAgczJkcm9waTogRFJPUCBJTkRFWCBmb28xMV9hOworc3RlcCBzMnVubG9j azogU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jaygxMjM0NSk7CitwZ19hZHZpc29yeV91bmxvY2sK Ky0tLS0tLS0tLS0tLS0tLS0tLQordCAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAg czFleGVjOiA8Li4uIGNvbXBsZXRlZD4KK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0 YXJ0KCk6IENhY2hlZFBsYW4gaXMgbm90IHZhbGlkCitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhl Y3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FwcGVuZCAgICAgICAgICAg ICAgICAgICAgICAgCisgIFN1YnBsYW5zIFJlbW92ZWQ6IDEgICAgICAgIAorICAtPiAgU2VxIFNj YW4gb24gZm9vMTEgZm9vXzEKKyAgICAgICAgRmlsdGVyOiAoYSA9ICQxKSAgICAgCisoNCByb3dz KQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMXByZXAyIHMybG9jayBzMWV4ZWMyIHMyZHJv cGkgczJ1bmxvY2sKK3N0ZXAgczFwcmVwMjogU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dl bmVyaWNfcGxhbjsKKwkJICBQUkVQQVJFIHEyIEFTIFNFTEVDVCAqIEZST00gZm9vdiBXSEVSRSBh ID0gMTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTI7CitzMTogTk9USUNFOiAg RmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KK0JpdG1hcCBIZWFwIFNjYW4gb24gZm9vMTEgZm9vICAgICAgICAgCisgIFJl Y2hlY2sgQ29uZDogKGEgPSAxKSAgICAgICAgICAgICAgIAorICAtPiAgQml0bWFwIEluZGV4IFNj YW4gb24gZm9vMTFfYV9pZHgKKyAgICAgICAgSW5kZXggQ29uZDogKGEgPSAxKSAgICAgICAgICAg CisoNCByb3dzKQorCitzdGVwIHMybG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUp OworcGdfYWR2aXNvcnlfbG9jaworLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgIAor KDEgcm93KQorCitzdGVwIHMxZXhlYzI6IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VU IGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQ TEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEyOyA8d2FpdGluZyAuLi4+CitzdGVwIHMyZHJvcGk6 IERST1AgSU5ERVggZm9vMTFfYTsKK3N0ZXAgczJ1bmxvY2s6IFNFTEVDVCBwZ19hZHZpc29yeV91 bmxvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfdW5sb2NrCistLS0tLS0tLS0tLS0tLS0tLS0KK3Qg ICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzI6IDwuLi4gY29tcGxldGVk PgorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyBu b3QgdmFsaWQKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBs YW4gaXMgdmFsaWQKK1FVRVJZIFBMQU4gICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t CitTZXEgU2NhbiBvbiBmb28xMSBmb28KKyAgRmlsdGVyOiAoYSA9IDEpICAgIAorKDIgcm93cykK KworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFwcmVwMyBzMmxvY2sgczFleGVjMyBzMmRyb3Bp IHMydW5sb2NrCitzdGVwIHMxcHJlcDM6IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5l cmljX3BsYW47CisJCSAgU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2FnZ3JlZ2F0ZSA9IG9uOwor CQkgIFNFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9qb2luID0gb247CisJCSAgUFJFUEFSRSBxMyBB UyBTRUxFQ1QgdDEuYSwgY291bnQodDIuYikgRlJPTSBmb28gdDEsIGZvbyB0MiBXSEVSRSB0MS5h ID0gdDIuYSBHUk9VUCBCWSAxOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMzsK K3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFs aWQKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgLT4gIEdyb3VwQWdncmVnYXRlICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgR3JvdXAgS2V5 OiB0MS5hICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg LT4gIE1lcmdlIEpvaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK KyAgICAgICAgICAgICAgTWVyZ2UgQ29uZDogKHQxLmEgPSB0Mi5hKSAgICAgICAgICAgICAgICAg ICAgICAgICAKKyAgICAgICAgICAgICAgLT4gIEluZGV4IE9ubHkgU2NhbiB1c2luZyBmb28xMV9h X2lkeCBvbiBmb28xMSB0MSAKKyAgICAgICAgICAgICAgLT4gIE1hdGVyaWFsaXplICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLT4gIEluZGV4 IFNjYW4gdXNpbmcgZm9vMTFfYV9pZHggb24gZm9vMTEgdDIKKyAgLT4gIEdyb3VwQWdncmVnYXRl ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgR3Jv dXAgS2V5OiB0MV8xLmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAg ICAgICAgLT4gIE1lcmdlIEpvaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKyAgICAgICAgICAgICAgTWVyZ2UgQ29uZDogKHQxXzEuYSA9IHQyXzEuYSkgICAgICAg ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgLT4gIFNvcnQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHQx XzEuYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIGZvbzIgdDFfMSAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg LT4gIFNvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAg ICAgICAgICAgICAgICAgU29ydCBLZXk6IHQyXzEuYSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKyAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzIgdDJfMSAgICAgICAg ICAgICAgICAgICAKKygxOCByb3dzKQorCitzdGVwIHMybG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5 X2xvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfbG9jaworLS0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzM6IExPQUQgJ2RlbGF5X2V4ZWN1dGlv bic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIz NDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEzOyA8d2FpdGluZyAuLi4+Citz dGVwIHMyZHJvcGk6IERST1AgSU5ERVggZm9vMTFfYTsKK3N0ZXAgczJ1bmxvY2s6IFNFTEVDVCBw Z19hZHZpc29yeV91bmxvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfdW5sb2NrCistLS0tLS0tLS0t LS0tLS0tLS0KK3QgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzM6IDwu Li4gY29tcGxldGVkPgorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2Fj aGVkUGxhbiBpcyBub3QgdmFsaWQKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0 KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCitBcHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgLT4g IEdyb3VwQWdncmVnYXRlICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBHcm91cCBL ZXk6IHQxLmEgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIC0+ICBNZXJnZSBKb2luICAg ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgTWVyZ2UgQ29uZDogKHQxLmEgPSB0 Mi5hKSAgICAgIAorICAgICAgICAgICAgICAtPiAgU29ydCAgICAgICAgICAgICAgICAgICAgICAg CisgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0MS5hICAgICAgICAgICAKKyAgICAgICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzExIHQxIAorICAgICAgICAgICAgICAtPiAg U29ydCAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5 OiB0Mi5hICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZv bzExIHQyIAorICAtPiAgR3JvdXBBZ2dyZWdhdGUgICAgICAgICAgICAgICAgICAgICAgICAgCisg ICAgICAgIEdyb3VwIEtleTogdDFfMS5hICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgLT4g IE1lcmdlIEpvaW4gICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBNZXJnZSBD b25kOiAodDFfMS5hID0gdDJfMS5hKSAgCisgICAgICAgICAgICAgIC0+ICBTb3J0ICAgICAgICAg ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHQxXzEuYSAgICAg ICAgIAorICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMiB0MV8xCisgICAg ICAgICAgICAgIC0+ICBTb3J0ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg ICAgICAgU29ydCBLZXk6IHQyXzEuYSAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAtPiAg U2VxIFNjYW4gb24gZm9vMiB0Ml8xCisoMjEgcm93cykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv bW9kdWxlcy9kZWxheV9leGVjdXRpb24vc3BlY3MvY2FjaGVkLXBsYW4tcmVwbGFuLnNwZWMgYi9z cmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9zcGVjcy9jYWNoZWQtcGxhbi1yZXBsYW4u c3BlYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zYzkyY2JkNWM2Ci0t LSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vc3BlY3Mv Y2FjaGVkLXBsYW4tcmVwbGFuLnNwZWMKQEAgLTAsMCArMSw2MSBAQAorIyBUZXN0IHRvIGNoZWNr IHRoYXQgaW52YWxpZGF0aW9uIG9mIGNhY2hlZCBnZW5lcmljIHBsYW5zIGR1cmluZyBFeGVjdXRv clN0YXJ0CisjIGNvcnJlY3RseSB0cmlnZ2VycyByZXBsYW5uaW5nIGFuZCByZS1leGVjdXRpb24u CisKK3NldHVwCit7CisgIENSRUFURSBUQUJMRSBmb28gKGEgaW50LCBiIHRleHQpIFBBUlRJVElP TiBCWSBMSVNUKGEpOworICBDUkVBVEUgVEFCTEUgZm9vMSBQQVJUSVRJT04gT0YgZm9vIEZPUiBW QUxVRVMgSU4gKDEpIFBBUlRJVElPTiBCWSBMSVNUIChhKTsKKyAgQ1JFQVRFIFRBQkxFIGZvbzEx IFBBUlRJVElPTiBPRiBmb28xIEZPUiBWQUxVRVMgSU4gKDEpOworICBDUkVBVEUgSU5ERVggZm9v MTFfYSBPTiBmb28xIChhKTsKKyAgQ1JFQVRFIFRBQkxFIGZvbzIgUEFSVElUSU9OIE9GIGZvbyBG T1IgVkFMVUVTIElOICgyKTsKKyAgQ1JFQVRFIFZJRVcgZm9vdiBBUyBTRUxFQ1QgKiBGUk9NIGZv bzsKK30KKwordGVhcmRvd24KK3sKKyAgRFJPUCBWSUVXIGZvb3Y7CisgIERST1AgVEFCTEUgZm9v OworfQorCitzZXNzaW9uICJzMSIKKyMgQXBwZW5kIHdpdGggcnVuLXRpbWUgcHJ1bmluZworc3Rl cCAiczFwcmVwIiAgIHsgU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsK KwkJICBQUkVQQVJFIHEgQVMgU0VMRUNUICogRlJPTSBmb292IFdIRVJFIGEgPSAkMTsKKwkJICBF WFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcSAoMSk7IH0KKworIyBubyBBcHBlbmQgY2FzZSAo b25seSBvbmUgcGFydGl0aW9uIHNlbGVjdGVkIGJ5IHRoZSBwbGFubmVyKQorc3RlcCAiczFwcmVw MiIgICB7IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisJCSAgUFJF UEFSRSBxMiBBUyBTRUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9IDE7CisJCSAgRVhQTEFJTiAo Q09TVFMgT0ZGKSBFWEVDVVRFIHEyOyB9CisKKyMgQXBwZW5kIHdpdGggcGFydGl0aW9uLXdpc2Ug am9pbiBhZ2dyZWdhdGUgYW5kIGpvaW4gcGxhbnMgYXMgY2hpbGQgc3VicGxhbnMKK3N0ZXAgInMx cHJlcDMiICAgeyBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworCQkg IFNFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9hZ2dyZWdhdGUgPSBvbjsKKwkJICBTRVQgZW5hYmxl X3BhcnRpdGlvbndpc2Vfam9pbiA9IG9uOworCQkgIFBSRVBBUkUgcTMgQVMgU0VMRUNUIHQxLmEs IGNvdW50KHQyLmIpIEZST00gZm9vIHQxLCBmb28gdDIgV0hFUkUgdDEuYSA9IHQyLmEgR1JPVVAg QlkgMTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTM7IH0KKworIyBFeGVjdXRl cyBhIGdlbmVyaWMgcGxhbgorc3RlcCAiczFleGVjIgl7IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7 CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7 CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEgKDEpOyB9CitzdGVwICJzMWV4ZWMy Igl7IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVj dXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVD VVRFIHEyOyB9CitzdGVwICJzMWV4ZWMzIgl7IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAg U0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAg RVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEzOyB9CisKK3Nlc3Npb24gInMyIgorc3RlcCAi czJsb2NrIgl7IFNFTEVDVCBwZ19hZHZpc29yeV9sb2NrKDEyMzQ1KTsgfQorc3RlcCAiczJ1bmxv Y2siCXsgU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jaygxMjM0NSk7IH0KK3N0ZXAgInMyZHJvcGki CXsgRFJPUCBJTkRFWCBmb28xMV9hOyB9CisKKyMgV2hpbGUgInMxZXhlYyIsIGV0Yy4gd2FpdCB0 byBhY3F1aXJlIHRoZSBhZHZpc29yeSBsb2NrLCAiczJkcm9wIiBpcyBhYmxlIHRvCisjIGRyb3Ag dGhlIGluZGV4IGJlaW5nIHVzZWQgaW4gdGhlIGNhY2hlZCBwbGFuLiAgV2hlbiAiczFleGVjIiBp cyB0aGVuCisjIHVuYmxvY2tlZCBhbmQgaW5pdGlhbGl6ZXMgdGhlIGNhY2hlZCBwbGFuIGZvciBl eGVjdXRpb24sIGl0IGRldGVjdHMgdGhlCisjIGNvbmN1cnJlbnQgaW5kZXggZHJvcCBhbmQgY2F1 c2VzIHRoZSBjYWNoZWQgcGxhbiB0byBiZSBkaXNjYXJkZWQgYW5kCisjIHJlY3JlYXRlZCB3aXRo b3V0IHRoZSBpbmRleC4KK3Blcm11dGF0aW9uICJzMXByZXAiICJzMmxvY2siICJzMWV4ZWMiICJz MmRyb3BpIiAiczJ1bmxvY2siCitwZXJtdXRhdGlvbiAiczFwcmVwMiIgInMybG9jayIgInMxZXhl YzIiICJzMmRyb3BpIiAiczJ1bmxvY2siCitwZXJtdXRhdGlvbiAiczFwcmVwMyIgInMybG9jayIg InMxZXhlYzMiICJzMmRyb3BpIiAiczJ1bmxvY2siCi0tIAoyLjM1LjMKCg== --000000000000f8d8750604975ca4 Content-Type: application/octet-stream; name="v46-0003-Support-for-ExecInitNode-to-detect-CachedPlan-in.patch" Content-Disposition: attachment; filename="v46-0003-Support-for-ExecInitNode-to-detect-CachedPlan-in.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lm5z2oe85 RnJvbSBjNjIzNGM2OTAyMzFkMGFhOWNjMjExMzA5ZTcwNTlkNWMzNjZkMDZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IEZyaSwgMTEgQXVnIDIwMjMgMTQ6MDk6MjkgKzA5MDAKU3ViamVjdDogW1BBVENIIHY0 NiAzLzhdIFN1cHBvcnQgZm9yIEV4ZWNJbml0Tm9kZSgpIHRvIGRldGVjdCBDYWNoZWRQbGFuCiBp bnZhbGlkYXRpb24KClRoaXMgY29tbWl0IGFkZHMgY2hlY2tzIHRvIGRldGVybWluZSBpZiBhIENh Y2hlZFBsYW4gcmVtYWlucyB2YWxpZApkdXJpbmcgRXhlY0luaXROb2RlKCkgdHJhdmVyc2FsIG9m IHRoZSBwbGFuIGZyb20gdGhlIENhY2hlZFBsYW4uIFRoaXMKaW5jbHVkZXMgIHBvaW50cyByaWdo dCBhZnRlciBvcGVuaW5nL2xvY2tpbmcgdGFibGVzIGFuZCBkdXJpbmcKcmVjdXJzaXZlIEV4ZWNJ bml0Tm9kZSgpIGNhbGxzIHRvIGluaXRpYWxpemUgY2hpbGQgcGxhbnMuIERlcGVuZGluZwpvbiB0 aGUgc2l0dWF0aW9uLCBzcGVjaWZpYyBFeGVjSW5pdCooKSByb3V0aW5lcyB3aWxsOgoKKiBSZXR1 cm4gTlVMTCBpZiBpbnZhbGlkYXRpb24gaXMgc3BvdHRlZCByaWdodCBhZnRlciBvcGVuaW5nIGEg dGFibGUKICBvciBhZnRlciBhIGZ1bmN0aW9uIHRoYXQgb3BlbnMgb25lLCBidXQgYmVmb3JlIGlu aXRpYWxpemluZyBjaGlsZAogIG5vZGVzLgoKKiBSZXR1cm4gdGhlIHBhcnRpYWxseSBpbml0aWFs aXplZCBQbGFuU3RhdGUgbm9kZSBpZiBpbnZhbGlkYXRpb24gaXMKICBmb3VuZCBhZnRlciByZWN1 cnNpdmVseSBpbml0aWFsaXppbmcgYSBjaGlsZCBub2RlIHZpYQogIEV4ZWNJbml0Tm9kZSgpLgoK QSBwcmlvciBjb21taXQgYWxyZWFkeSBmb3J0aWZpZWQgRXhlY0VuZCooKSB0byBtYW5hZ2UgdGhl c2UgcGFydGlhbApub2RlcywgY29udGFpbmluZyBwYXJ0aWFsbHkgaW5pdGlhbGl6ZWQgbm9kZXMg YW5kIG1pc3NpbmcgY2hpbGQgbm9kZQpsaW5rcy4KCkltcG9ydGFudGx5LCB0aGlzIGNvbW1pdCBk b2Vzbid0IGFsdGVyIGZ1bmN0aW9uYWxpdHkuIFRoZSBDYWNoZWRQbGFuCmlzbid0IGZlZCB0byB0 aGUgZXhlY3V0b3IgYXMgb2Ygbm93LCBhbmQgdGhlIGV4ZWN1dG9yIGRvZXNuJ3QgbG9jawp0YWJs ZXMuCi0tLQogY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMgICAgICAgIHwgIDQg KysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgICAgIHwgMjQgKysr KysrKysrKysrKysrKysrKystLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5j ICAgICAgIHwgIDQgKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMgICAg ICAgIHwgMTcgKysrKysrKysrKysrKystCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMu YyAgICAgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jICAgICAg ICAgICAgIHwgIDIgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyAgICAgICAg ICB8IDE0ICsrKysrKysrKystLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBBbmQu YyAgICAgICB8IDExICsrKysrKystLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBI ZWFwc2Nhbi5jICB8ICA0ICsrKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRl eHNjYW4uYyB8ICAyICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwT3IuYyAgICAg ICAgfCAxMSArKysrKysrLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMgICAg ICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZvcmVpZ25zY2FuLmMgICAg IHwgIDQgKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jICAgICAgICAgIHwg IDMgKysrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYyAgICAgfCAgMiAr Kwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMgICAgICAgICAgIHwgIDIgKysKIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMgICAgICAgICAgICB8ICAyICsrCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlSGFzaGpvaW4uYyAgICAgICAgfCAgNCArKysrCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlSW5jcmVtZW50YWxTb3J0LmMgfCAgMiArKwogc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYyAgIHwgIDQgKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUluZGV4c2Nhbi5jICAgICAgIHwgIDQgKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUxpbWl0LmMgICAgICAgICAgIHwgIDIgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVM b2NrUm93cy5jICAgICAgICB8ICAyICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJp YWwuYyAgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYyAg ICAgICAgIHwgIDIgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jICAg ICB8IDEwICsrKysrKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jICAg ICAgIHwgIDQgKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgICAg IHwgIDcgKysrKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMgICAgICAg IHwgIDQgKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQuYyAgICAgIHwg IDIgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5jICB8ICA0ICsr KysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYyAgICAgICAgICB8ICAyICsrCiBz cmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5jICAgICAgfCAgMiArKwogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyAgICAgICAgIHwgIDIgKysKIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVTZXRPcC5jICAgICAgICAgICB8ICAyICsrCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlU29ydC5jICAgICAgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVN1YnF1ZXJ5c2Nhbi5jICAgIHwgIDIgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVU aWRyYW5nZXNjYW4uYyAgICB8ICAyICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nh bi5jICAgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jICAg ICAgICAgIHwgIDIgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyAgICAg ICB8ICAyICsrCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oICAgICAgICAgICAgfCAx MCArKysrKysrKysKIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgICB8 ICAyICsrCiBzcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCAgICAgICAgICAgICAgfCAxNCAr KysrKysrKysrKysrCiA0NCBmaWxlcyBjaGFuZ2VkLCAxOTYgaW5zZXJ0aW9ucygrKSwgMTMgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3 LmMgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwppbmRleCAxMzkzNzE2NTg3 Li5hYjdlY2I5MjVjIDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19m ZHcuYworKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwpAQCAtMjY2MCw3 ICsyNjYwLDExIEBAIHBvc3RncmVzQmVnaW5EaXJlY3RNb2RpZnkoRm9yZWlnblNjYW5TdGF0ZSAq bm9kZSwgaW50IGVmbGFncykKIAkvKiBHZXQgaW5mbyBhYm91dCBmb3JlaWduIHRhYmxlLiAqLwog CXJ0aW5kZXggPSBub2RlLT5yZXN1bHRSZWxJbmZvLT5yaV9SYW5nZVRhYmxlSW5kZXg7CiAJaWYg KGZzcGxhbi0+c2Nhbi5zY2FucmVsaWQgPT0gMCkKKwl7CiAJCWRtc3RhdGUtPnJlbCA9IEV4ZWNP cGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwgcnRpbmRleCwgZWZsYWdzKTsKKwkJaWYgKCFFeGVjUGxh blN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJldHVybjsKKwl9CiAJZWxzZQogCQlkbXN0YXRlLT5y ZWwgPSBub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb247CiAJdGFibGUgPSBHZXRGb3JlaWduVGFi bGUoUmVsYXRpb25HZXRSZWxpZChkbXN0YXRlLT5yZWwpKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5j CmluZGV4IDRjNWE3YmJmNjIuLmYzMDU0Y2JlN2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpA QCAtODM5LDggKzgzOSw4IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZs YWdzKQogCVBsYW4JICAgKnBsYW4gPSBwbGFubmVkc3RtdC0+cGxhblRyZWU7CiAJTGlzdAkgICAq cmFuZ2VUYWJsZSA9IHBsYW5uZWRzdG10LT5ydGFibGU7CiAJRVN0YXRlCSAgICplc3RhdGUgPSBx dWVyeURlc2MtPmVzdGF0ZTsKLQlQbGFuU3RhdGUgICpwbGFuc3RhdGU7Ci0JVHVwbGVEZXNjCXR1 cFR5cGU7CisJUGxhblN0YXRlICAqcGxhbnN0YXRlID0gTlVMTDsKKwlUdXBsZURlc2MJdHVwVHlw ZSA9IE5VTEw7CiAJTGlzdENlbGwgICAqbDsKIAlpbnQJCQlpOwogCkBAIC04NTUsNiArODU1LDcg QEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJRXhlY0luaXRS YW5nZVRhYmxlKGVzdGF0ZSwgcmFuZ2VUYWJsZSwgcGxhbm5lZHN0bXQtPnBlcm1JbmZvcyk7CiAK IAllc3RhdGUtPmVzX3BsYW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7CisJZXN0YXRlLT5lc19jYWNo ZWRwbGFuID0gTlVMTDsKIAogCS8qCiAJICogTmV4dCwgYnVpbGQgdGhlIEV4ZWNSb3dNYXJrIGFy cmF5IGZyb20gdGhlIFBsYW5Sb3dNYXJrKHMpLCBpZiBhbnkuCkBAIC04ODYsNiArODg3LDggQEAg SW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJCQkJY2FzZSBST1df TUFSS19LRVlTSEFSRToKIAkJCQljYXNlIFJPV19NQVJLX1JFRkVSRU5DRToKIAkJCQkJcmVsYXRp b24gPSBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKGVzdGF0ZSwgcmMtPnJ0aSk7CisJCQkJCWlm ICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQkJCQlnb3RvIHBsYW5faW5pdF9zdXNw ZW5kZWQ7CiAJCQkJCWJyZWFrOwogCQkJCWNhc2UgUk9XX01BUktfQ09QWToKIAkJCQkJLyogbm8g cGh5c2ljYWwgdGFibGUgYWNjZXNzIGlzIHJlcXVpcmVkICovCkBAIC05NTYsNiArOTU5LDggQEAg SW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAKIAkJZXN0YXRlLT5l c19zdWJwbGFuc3RhdGVzID0gbGFwcGVuZChlc3RhdGUtPmVzX3N1YnBsYW5zdGF0ZXMsCiAJCQkJ CQkJCQkJICAgc3VicGxhbnN0YXRlKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRl KSkKKwkJCWdvdG8gcGxhbl9pbml0X3N1c3BlbmRlZDsKIAogCQlpKys7CiAJfQpAQCAtOTY2LDYg Kzk3MSw4IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCSAq IHByb2Nlc3NpbmcgdHVwbGVzLgogCSAqLwogCXBsYW5zdGF0ZSA9IEV4ZWNJbml0Tm9kZShwbGFu LCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJ Z290byBwbGFuX2luaXRfc3VzcGVuZGVkOwogCiAJLyoKIAkgKiBHZXQgdGhlIHR1cGxlIGRlc2Ny aXB0b3IgZGVzY3JpYmluZyB0aGUgdHlwZSBvZiB0dXBsZXMgdG8gcmV0dXJuLgpAQCAtMTAwNyw2 ICsxMDE0LDcgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJ CX0KIAl9CiAKK3BsYW5faW5pdF9zdXNwZW5kZWQ6CiAJcXVlcnlEZXNjLT50dXBEZXNjID0gdHVw VHlwZTsKIAlxdWVyeURlc2MtPnBsYW5zdGF0ZSA9IHBsYW5zdGF0ZTsKIH0KQEAgLTI5NDUsNiAr Mjk1MywxMiBAQCBFdmFsUGxhblF1YWxTdGFydChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBs YW5UcmVlKQogCQlQbGFuU3RhdGUgICpzdWJwbGFuc3RhdGU7CiAKIAkJc3VicGxhbnN0YXRlID0g RXhlY0luaXROb2RlKHN1YnBsYW4sIHJjZXN0YXRlLCAwKTsKKworCQkvKgorCQkgKiBBdCB0aGlz IHBvaW50LCB3ZSBoYWQgYmV0dGVyIG5vdCByZWNlaXZlZCBhbnkgbmV3IGludmFsaWRhdGlvbgor CQkgKiBtZXNzYWdlcyB0aGF0IHdvdWxkIGhhdmUgY2F1c2VkIHRoZSBwbGFuIHRyZWUgdG8gZ28g c3RhbGUuCisJCSAqLworCQlBc3NlcnQoRXhlY1BsYW5TdGlsbFZhbGlkKHJjZXN0YXRlKSk7CiAJ CXJjZXN0YXRlLT5lc19zdWJwbGFuc3RhdGVzID0gbGFwcGVuZChyY2VzdGF0ZS0+ZXNfc3VicGxh bnN0YXRlcywKIAkJCQkJCQkJCQkJIHN1YnBsYW5zdGF0ZSk7CiAJfQpAQCAtMjk4OCw2ICszMDAy LDEyIEBAIEV2YWxQbGFuUXVhbFN0YXJ0KEVQUVN0YXRlICplcHFzdGF0ZSwgUGxhbiAqcGxhblRy ZWUpCiAJICovCiAJZXBxc3RhdGUtPnJlY2hlY2twbGFuc3RhdGUgPSBFeGVjSW5pdE5vZGUocGxh blRyZWUsIHJjZXN0YXRlLCAwKTsKIAorCS8qCisJICogQXQgdGhpcyBwb2ludCwgd2UgaGFkIGJl dHRlciBub3QgcmVjZWl2ZWQgYW55IG5ldyBpbnZhbGlkYXRpb24gbWVzc2FnZXMKKwkgKiB0aGF0 IHdvdWxkIGhhdmUgY2F1c2VkIHRoZSBwbGFuIHRyZWUgdG8gZ28gc3RhbGUuCisJICovCisJQXNz ZXJ0KEV4ZWNQbGFuU3RpbGxWYWxpZChyY2VzdGF0ZSkpOworCiAJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZGNvbnRleHQpOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjUGFydGl0aW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKaW5k ZXggZWI4YTg3ZmQ2My4uZTg4NDU1MzY4YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1BhcnRpdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRp b24uYwpAQCAtMTgwMSw2ICsxODAxLDggQEAgRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKFBsYW5T dGF0ZSAqcGxhbnN0YXRlLAogCiAJLyogQ3JlYXRlIHRoZSB3b3JraW5nIGRhdGEgc3RydWN0dXJl IGZvciBwcnVuaW5nICovCiAJcHJ1bmVzdGF0ZSA9IENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUo cGxhbnN0YXRlLCBwcnVuZWluZm8pOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkp CisJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiBQZXJmb3JtIGFuIGluaXRpYWwgcGFydGl0aW9u IHBydW5lIHBhc3MsIGlmIHJlcXVpcmVkLgpAQCAtMTkyNyw2ICsxOTI5LDggQEAgQ3JlYXRlUGFy dGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZv ICpwcnVuZWluZm8pCiAJCQkgKiBkdXJhdGlvbiBvZiB0aGlzIGV4ZWN1dG9yIHJ1bi4KIAkJCSAq LwogCQkJcGFydHJlbCA9IEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oZXN0YXRlLCBwaW5mby0+ cnRpbmRleCk7CisJCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJCXJldHVy biBOVUxMOwogCQkJcGFydGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcnRyZWwpOwog CQkJcGFydGRlc2MgPSBQYXJ0aXRpb25EaXJlY3RvcnlMb29rdXAoZXN0YXRlLT5lc19wYXJ0aXRp b25fZGlyZWN0b3J5LAogCQkJCQkJCQkJCQkJcGFydHJlbCk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQ cm9jbm9kZS5jCmluZGV4IDYwOThjZGNhNjkuLmQ1OTUyZDBkNTAgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQcm9jbm9kZS5jCkBAIC0xMzUsNyArMTM1LDE4IEBAIHN0YXRpYyBib29sIEV4ZWNTaHV0 ZG93bk5vZGVfd2Fsa2VyKFBsYW5TdGF0ZSAqbm9kZSwgdm9pZCAqY29udGV4dCk7CiAgKgkJICAn ZXN0YXRlJyBpcyB0aGUgc2hhcmVkIGV4ZWN1dGlvbiBzdGF0ZSBmb3IgdGhlIHBsYW4gdHJlZQog ICoJCSAgJ2VmbGFncycgaXMgYSBiaXR3aXNlIE9SIG9mIGZsYWcgYml0cyBkZXNjcmliZWQgaW4g ZXhlY3V0b3IuaAogICoKLSAqCQlSZXR1cm5zIGEgUGxhblN0YXRlIG5vZGUgY29ycmVzcG9uZGlu ZyB0byB0aGUgZ2l2ZW4gUGxhbiBub2RlLgorICoJCVJldHVybnMgYSBQbGFuU3RhdGUgbm9kZSBj b3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlbiBQbGFuIG5vZGUgb3IgTlVMTC4KKyAqCisgKgkJVmFy aW91cyBub2RlIHR5cGUgc3BlY2lmaWMgRXhlY0luaXQqIHJvdXRpbmVzIGxpc3RlZCBiZWxvdyBl aXRoZXIKKyAqCQlyZXR1cm4gTlVMTCBvciBhIHBhcnRpYWxseSBpbml0aWFsaXplZCBQbGFuU3Rh dGUgdHJlZSBpZiB0aGUgQ2FjaGVkUGxhbgorICoJCWlzIGZvdW5kIHRvIGJlIGludmFsaWRhdGVk LiAgVGhhdCBpcyBjaGVja2VkIGJ5IGNhbGxpbmcKKyAqCQlFeGVjUGxhblN0aWxsVmFsaWQoKSBh dCB2YXJpb3VzIHBvaW50cywgc3VjaCBhcyBhZnRlciBvcGVuaW5nL2xvY2tpbmcKKyAqCQlhIHJl bGF0aW9uLCBvciBhZnRlciBjYWxsaW5nIGEgZnVuY3Rpb24gdGhhdCBkb2VzIHdoaWNoIGluY2x1 ZGVzCisgKgkJcmVjdXJzaXZlIGludm9jYXRpb25zIG9mIEV4ZWNJbml0Tm9kZSgpIHRvIGluaXRp YWxpemUgY2hpbGQgbm9kZXMuCisgKgkJQSBnaXZlbiBFeGVjSW5pdCogcm91dGluZSBzaG91bGQg cmV0dXJuIE5VTEwgdXBvbiBnZXR0aW5nIGZhbHNlIGZyb20KKyAqCQlFeGVjUGxhblN0aWxsVmFs aWQoKSBpZiBubyBjaGlsZCBub2RlIGhhcyBiZWVuIGluaXRpYWx6ZWQgYXQgdGhlIHBvaW50Cisg KgkJb2YgY2hlY2tpbmcgYW5kIHRoZSBwYXJ0aWFsbHkgaW5pdGlhbGl6ZWQgUGxhblN0YXRlIG5v ZGUgaWYgYSBjaGlsZAorICoJCW5vZGUgaGFzIGJlZW4gcmVjdXJzaXZlbHkgaW5pdGlhbGl6ZWQu CiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogUGxhblN0YXRlICoKQEAgLTM4OCw2ICszOTksMTAg QEAgRXhlY0luaXROb2RlKFBsYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQog CQkJYnJlYWs7CiAJfQogCisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0 dXJuIHJlc3VsdDsKKworCUFzc2VydChyZXN1bHQgIT0gTlVMTCk7CiAJRXhlY1NldEV4ZWNQcm9j Tm9kZShyZXN1bHQsIHJlc3VsdC0+RXhlY1Byb2NOb2RlKTsKIAogCS8qCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNVdGlscy5jCmluZGV4IDE2NzA0YzBjMmYuLmMzZjcyNzliMDYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNVdGlscy5jCkBAIC04MjIsNiArODIyLDggQEAgRXhlY0luaXRSZXN1bHRSZWxhdGlvbihFU3Rh dGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAlSZWxhdGlvbglyZXN1 bHRSZWxhdGlvbkRlc2M7CiAKIAlyZXN1bHRSZWxhdGlvbkRlc2MgPSBFeGVjR2V0UmFuZ2VUYWJs ZVJlbGF0aW9uKGVzdGF0ZSwgcnRpKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUp KQorCQlyZXR1cm47CiAJSW5pdFJlc3VsdFJlbEluZm8ocmVzdWx0UmVsSW5mbywKIAkJCQkJICBy ZXN1bHRSZWxhdGlvbkRlc2MsCiAJCQkJCSAgcnRpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUFnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jCmluZGV4 IGFhYzllOWZjODAuLmY0NmMzZGYxOTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVBZ2cuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMKQEAgLTMzMDUs NiArMzMwNSw4IEBAIEV4ZWNJbml0QWdnKEFnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiAJCWVmbGFncyAmPSB+RVhFQ19GTEFHX1JFV0lORDsKIAlvdXRlclBsYW4gPSBvdXRl clBsYW4obm9kZSk7CiAJb3V0ZXJQbGFuU3RhdGUoYWdnc3RhdGUpID0gRXhlY0luaXROb2RlKG91 dGVyUGxhbiwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0 ZSkpCisJCXJldHVybiBhZ2dzdGF0ZTsKIAogCS8qCiAJICogaW5pdGlhbGl6ZSBzb3VyY2UgdHVw bGUgdHlwZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwppbmRleCA2MDlkZjZiOWU2Li41ODhm NTM4OGM3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCkBAIC0xNDcsNiArMTQ3LDggQEAg RXhlY0luaXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykK IAkJCQkJCQkJCQkJICBsaXN0X2xlbmd0aChub2RlLT5hcHBlbmRwbGFucyksCiAJCQkJCQkJCQkJ CSAgbm9kZS0+cGFydF9wcnVuZV9pbmZvLAogCQkJCQkJCQkJCQkgICZ2YWxpZHN1YnBsYW5zKTsK KwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJldHVybiBOVUxMOwogCQlh cHBlbmRzdGF0ZS0+YXNfcHJ1bmVfc3RhdGUgPSBwcnVuZXN0YXRlOwogCQlucGxhbnMgPSBibXNf bnVtX21lbWJlcnModmFsaWRzdWJwbGFucyk7CiAKQEAgLTE4NSw4ICsxODcsMTMgQEAgRXhlY0lu aXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlhcHBl bmRzdGF0ZS0+cHMucmVzdWx0b3Bzc2V0ID0gdHJ1ZTsKIAlhcHBlbmRzdGF0ZS0+cHMucmVzdWx0 b3BzZml4ZWQgPSBmYWxzZTsKIAotCWFwcGVuZHBsYW5zdGF0ZXMgPSAoUGxhblN0YXRlICoqKSBw YWxsb2MobnBsYW5zICoKLQkJCQkJCQkJCQkJIHNpemVvZihQbGFuU3RhdGUgKikpOworCS8qCisJ ICogQW55IHVuaW5pdGlhbGl6ZWQgc3VuYm9kZXMgd2lsbCBoYXZlIE5VTEwgaW4gYXBwZW5kcGxh bnMgaW4gdGhlIGNhc2Ugb2YKKwkgKiBhbiBlYXJseSByZXR1cm4uCisJICovCisJYXBwZW5kc3Rh dGUtPmFwcGVuZHBsYW5zID0gYXBwZW5kcGxhbnN0YXRlcyA9CisJCShQbGFuU3RhdGUgKiopIHBh bGxvYzAobnBsYW5zICogc2l6ZW9mKFBsYW5TdGF0ZSAqKSk7CisJYXBwZW5kc3RhdGUtPmFzX25w bGFucyA9IG5wbGFuczsKIAogCS8qCiAJICogY2FsbCBFeGVjSW5pdE5vZGUgb24gZWFjaCBvZiB0 aGUgdmFsaWQgcGxhbnMgdG8gYmUgZXhlY3V0ZWQgYW5kIHNhdmUKQEAgLTIyMSwxMSArMjI4LDEy IEBAIEV4ZWNJbml0QXBwZW5kKEFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJCQlmaXJzdHZhbGlkID0gajsKIAogCQlhcHBlbmRwbGFuc3RhdGVzW2orK10gPSBFeGVj SW5pdE5vZGUoaW5pdE5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxs VmFsaWQoZXN0YXRlKSkKKwkJCXJldHVybiBhcHBlbmRzdGF0ZTsKIAl9CiAKIAlhcHBlbmRzdGF0 ZS0+YXNfZmlyc3RfcGFydGlhbF9wbGFuID0gZmlyc3R2YWxpZDsKIAlhcHBlbmRzdGF0ZS0+YXBw ZW5kcGxhbnMgPSBhcHBlbmRwbGFuc3RhdGVzOwotCWFwcGVuZHN0YXRlLT5hc19ucGxhbnMgPSBu cGxhbnM7CiAKIAkvKiBJbml0aWFsaXplIGFzeW5jIHN0YXRlICovCiAJYXBwZW5kc3RhdGUtPmFz X2FzeW5jcGxhbnMgPSBhc3luY3BsYW5zOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUJpdG1hcEFuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5j CmluZGV4IDRjNWViMmIyM2IuLmMwNDk1ZWM5MGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVCaXRtYXBBbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0 bWFwQW5kLmMKQEAgLTY5LDYgKzY5LDEwIEBAIEV4ZWNJbml0Qml0bWFwQW5kKEJpdG1hcEFuZCAq bm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICovCiAJbnBsYW5zID0gbGlzdF9s ZW5ndGgobm9kZS0+Yml0bWFwcGxhbnMpOwogCisJLyoKKwkgKiBBbnkgdW5pbml0aWFsaXplZCBz dW5ib2RlcyB3aWxsIGhhdmUgTlVMTCBpbiBiaXRtYXBwbGFucyBpbiB0aGUgY2FzZSBvZgorCSAq IGFuIGVhcmx5IHJldHVybi4KKwkgKi8KIAliaXRtYXBwbGFuc3RhdGVzID0gKFBsYW5TdGF0ZSAq KikgcGFsbG9jMChucGxhbnMgKiBzaXplb2YoUGxhblN0YXRlICopKTsKIAogCS8qCkBAIC03OCw3 ICs4Miw2IEBAIEV4ZWNJbml0Qml0bWFwQW5kKEJpdG1hcEFuZCAqbm9kZSwgRVN0YXRlICplc3Rh dGUsIGludCBlZmxhZ3MpCiAJYml0bWFwYW5kc3RhdGUtPnBzLnN0YXRlID0gZXN0YXRlOwogCWJp dG1hcGFuZHN0YXRlLT5wcy5FeGVjUHJvY05vZGUgPSBFeGVjQml0bWFwQW5kOwogCWJpdG1hcGFu ZHN0YXRlLT5iaXRtYXBwbGFucyA9IGJpdG1hcHBsYW5zdGF0ZXM7Ci0JYml0bWFwYW5kc3RhdGUt Pm5wbGFucyA9IG5wbGFuczsKIAogCS8qCiAJICogY2FsbCBFeGVjSW5pdE5vZGUgb24gZWFjaCBv ZiB0aGUgcGxhbnMgdG8gYmUgZXhlY3V0ZWQgYW5kIHNhdmUgdGhlCkBAIC04OCw4ICs5MSwxMCBA QCBFeGVjSW5pdEJpdG1hcEFuZChCaXRtYXBBbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQg ZWZsYWdzKQogCWZvcmVhY2gobCwgbm9kZS0+Yml0bWFwcGxhbnMpCiAJewogCQlpbml0Tm9kZSA9 IChQbGFuICopIGxmaXJzdChsKTsKLQkJYml0bWFwcGxhbnN0YXRlc1tpXSA9IEV4ZWNJbml0Tm9k ZShpbml0Tm9kZSwgZXN0YXRlLCBlZmxhZ3MpOwotCQlpKys7CisJCWJpdG1hcHBsYW5zdGF0ZXNb aSsrXSA9IEV4ZWNJbml0Tm9kZShpbml0Tm9kZSwgZXN0YXRlLCBlZmxhZ3MpOworCQlpZiAoIUV4 ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJcmV0dXJuIGJpdG1hcGFuZHN0YXRlOworCQli aXRtYXBhbmRzdGF0ZS0+bnBsYW5zID0gaTsKIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlQml0bWFwSGVhcHNjYW4uYwppbmRleCBmZmE1MWMwNmI0Li4zY2RlY2U4NTJjIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYwpAQCAtNzUyLDExICs3NTIs MTUgQEAgRXhlY0luaXRCaXRtYXBIZWFwU2NhbihCaXRtYXBIZWFwU2NhbiAqbm9kZSwgRVN0YXRl ICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogb3BlbiB0aGUgc2NhbiByZWxhdGlvbgogCSAqLwog CWN1cnJlbnRSZWxhdGlvbiA9IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwgbm9kZS0+c2Nh bi5zY2FucmVsaWQsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkK KwkJcmV0dXJuIHNjYW5zdGF0ZTsKIAogCS8qCiAJICogaW5pdGlhbGl6ZSBjaGlsZCBub2Rlcwog CSAqLwogCW91dGVyUGxhblN0YXRlKHNjYW5zdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFu KG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRl KSkKKwkJcmV0dXJuIHNjYW5zdGF0ZTsKIAogCS8qCiAJICogZ2V0IHRoZSBzY2FuIHR5cGUgZnJv bSB0aGUgcmVsYXRpb24gZGVzY3JpcHRvci4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRt YXBJbmRleHNjYW4uYwppbmRleCA3Y2Y4NTMyYmM5Li40MjAwNDcyZDAyIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jCkBAIC0yNTUsNiArMjU1LDggQEAgRXhl Y0luaXRCaXRtYXBJbmRleFNjYW4oQml0bWFwSW5kZXhTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0 ZSwgaW50IGVmbGFncykKIAkvKiBPcGVuIHRoZSBpbmRleCByZWxhdGlvbi4gKi8KIAlsb2NrbW9k ZSA9IGV4ZWNfcnRfZmV0Y2gobm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVzdGF0ZSktPnJlbGxvY2tt b2RlOwogCWluZGV4c3RhdGUtPmJpc3NfUmVsYXRpb25EZXNjID0gaW5kZXhfb3Blbihub2RlLT5p bmRleGlkLCBsb2NrbW9kZSk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJ cmV0dXJuIGluZGV4c3RhdGU7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgaW5kZXgtc3BlY2lmaWMg c2NhbiBzdGF0ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9y LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwT3IuYwppbmRleCAwYmY4YWY5NjUy Li4wMDEyMDY2OWE1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFw T3IuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwT3IuYwpAQCAtNzAsNiAr NzAsMTAgQEAgRXhlY0luaXRCaXRtYXBPcihCaXRtYXBPciAqbm9kZSwgRVN0YXRlICplc3RhdGUs IGludCBlZmxhZ3MpCiAJICovCiAJbnBsYW5zID0gbGlzdF9sZW5ndGgobm9kZS0+Yml0bWFwcGxh bnMpOwogCisJLyoKKwkgKiBBbnkgdW5pbml0aWFsaXplZCBzdW5ib2RlcyB3aWxsIGhhdmUgTlVM TCBpbiBiaXRtYXBwbGFucyBpbiB0aGUgY2FzZSBvZgorCSAqIGFuIGVhcmx5IHJldHVybi4KKwkg Ki8KIAliaXRtYXBwbGFuc3RhdGVzID0gKFBsYW5TdGF0ZSAqKikgcGFsbG9jMChucGxhbnMgKiBz aXplb2YoUGxhblN0YXRlICopKTsKIAogCS8qCkBAIC03OSw3ICs4Myw2IEBAIEV4ZWNJbml0Qml0 bWFwT3IoQml0bWFwT3IgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWJpdG1h cG9yc3RhdGUtPnBzLnN0YXRlID0gZXN0YXRlOwogCWJpdG1hcG9yc3RhdGUtPnBzLkV4ZWNQcm9j Tm9kZSA9IEV4ZWNCaXRtYXBPcjsKIAliaXRtYXBvcnN0YXRlLT5iaXRtYXBwbGFucyA9IGJpdG1h cHBsYW5zdGF0ZXM7Ci0JYml0bWFwb3JzdGF0ZS0+bnBsYW5zID0gbnBsYW5zOwogCiAJLyoKIAkg KiBjYWxsIEV4ZWNJbml0Tm9kZSBvbiBlYWNoIG9mIHRoZSBwbGFucyB0byBiZSBleGVjdXRlZCBh bmQgc2F2ZSB0aGUKQEAgLTg5LDggKzkyLDEwIEBAIEV4ZWNJbml0Qml0bWFwT3IoQml0bWFwT3Ig Km5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWZvcmVhY2gobCwgbm9kZS0+Yml0 bWFwcGxhbnMpCiAJewogCQlpbml0Tm9kZSA9IChQbGFuICopIGxmaXJzdChsKTsKLQkJYml0bWFw cGxhbnN0YXRlc1tpXSA9IEV4ZWNJbml0Tm9kZShpbml0Tm9kZSwgZXN0YXRlLCBlZmxhZ3MpOwot CQlpKys7CisJCWJpdG1hcHBsYW5zdGF0ZXNbaSsrXSA9IEV4ZWNJbml0Tm9kZShpbml0Tm9kZSwg ZXN0YXRlLCBlZmxhZ3MpOworCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJ cmV0dXJuIGJpdG1hcG9yc3RhdGU7CisJCWJpdG1hcG9yc3RhdGUtPm5wbGFucyA9IGk7CiAJfQog CiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVDdXN0b20uYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVDdXN0b20uYwppbmRleCBlODBiZTNhZjgxLi43NmY1YzJm ZDA5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN1c3RvbS5jCkBAIC02MSw2ICs2MSw4IEBAIEV4ZWNJ bml0Q3VzdG9tU2NhbihDdXN0b21TY2FuICpjc2NhbiwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJaWYgKHNjYW5yZWxpZCA+IDApCiAJewogCQlzY2FuX3JlbCA9IEV4ZWNPcGVuU2NhblJl bGF0aW9uKGVzdGF0ZSwgc2NhbnJlbGlkLCBlZmxhZ3MpOworCQlpZiAoIUV4ZWNQbGFuU3RpbGxW YWxpZChlc3RhdGUpKQorCQkJcmV0dXJuIE5VTEw7CiAJCWNzcy0+c3Muc3NfY3VycmVudFJlbGF0 aW9uID0gc2Nhbl9yZWw7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlRm9yZWlnbnNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5j CmluZGV4IGQ1YWFhOTgzZjcuLjBlZWI2NjUzMGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVG b3JlaWduc2Nhbi5jCkBAIC0xNzMsNiArMTczLDggQEAgRXhlY0luaXRGb3JlaWduU2NhbihGb3Jl aWduU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJaWYgKHNjYW5yZWxp ZCA+IDApCiAJewogCQljdXJyZW50UmVsYXRpb24gPSBFeGVjT3BlblNjYW5SZWxhdGlvbihlc3Rh dGUsIHNjYW5yZWxpZCwgZWZsYWdzKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRl KSkKKwkJCXJldHVybiBOVUxMOwogCQlzY2Fuc3RhdGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiA9 IGN1cnJlbnRSZWxhdGlvbjsKIAkJZmR3cm91dGluZSA9IEdldEZkd1JvdXRpbmVGb3JSZWxhdGlv bihjdXJyZW50UmVsYXRpb24sIHRydWUpOwogCX0KQEAgLTI2NCw2ICsyNjYsOCBAQCBFeGVjSW5p dEZvcmVpZ25TY2FuKEZvcmVpZ25TY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFn cykKIAlpZiAob3V0ZXJQbGFuKG5vZGUpKQogCQlvdXRlclBsYW5TdGF0ZShzY2Fuc3RhdGUpID0K IAkJCUV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAo IUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gc2NhbnN0YXRlOwogCiAJLyoK IAkgKiBUZWxsIHRoZSBGRFcgdG8gaW5pdGlhbGl6ZSB0aGUgc2Nhbi4KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVHYXRoZXIuYwppbmRleCBiYjI1MDBhNDY5Li42YjI2ZTAzZjc0IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUdhdGhlci5jCkBAIC04OSw2ICs4OSw5IEBAIEV4ZWNJbml0R2F0aGVyKEdhdGhlciAqbm9k ZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICovCiAJb3V0ZXJOb2RlID0gb3V0ZXJQ bGFuKG5vZGUpOwogCW91dGVyUGxhblN0YXRlKGdhdGhlcnN0YXRlKSA9IEV4ZWNJbml0Tm9kZShv dXRlck5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3Rh dGUpKQorCQlyZXR1cm4gZ2F0aGVyc3RhdGU7CisKIAl0dXBEZXNjID0gRXhlY0dldFJlc3VsdFR5 cGUob3V0ZXJQbGFuU3RhdGUoZ2F0aGVyc3RhdGUpKTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVHYXRoZXJNZXJnZS5jCmluZGV4IDdhNzFhNTg1MDkuLjg0NDEyZjk0YmIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jCkBAIC0xMDgsNiArMTA4LDggQEAgRXhlY0lu aXRHYXRoZXJNZXJnZShHYXRoZXJNZXJnZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJICovCiAJb3V0ZXJOb2RlID0gb3V0ZXJQbGFuKG5vZGUpOwogCW91dGVyUGxhblN0YXRl KGdtX3N0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlck5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwlp ZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gZ21fc3RhdGU7CiAKIAkv KgogCSAqIExlYWRlciBtYXkgYWNjZXNzIEV4ZWNQcm9jTm9kZSByZXN1bHQgZGlyZWN0bHkgKGlm CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR3JvdXAuYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5jCmluZGV4IDhjNjUwZjBlNDYuLmI2MDY4ODg3ZjYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5jCkBAIC0xODUsNiArMTg1LDggQEAgRXhlY0luaXRHcm91 cChHcm91cCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6 ZSBjaGlsZCBub2RlcwogCSAqLwogCW91dGVyUGxhblN0YXRlKGdycHN0YXRlKSA9IEV4ZWNJbml0 Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3Rp bGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gZ3Jwc3RhdGU7CiAKIAkvKgogCSAqIEluaXRpYWxp emUgc2NhbiBzbG90IGFuZCB0eXBlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUhhc2guYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMKaW5kZXggZTcyZjA5 ODZjMi4uMDMwYmYwZWQ0MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhh c2guYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jCkBAIC0zODYsNiArMzg2 LDggQEAgRXhlY0luaXRIYXNoKEhhc2ggKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KQogCSAqIGluaXRpYWxpemUgY2hpbGQgbm9kZXMKIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShoYXNo c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOwor CWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBoYXNoc3RhdGU7CiAK IAkvKgogCSAqIGluaXRpYWxpemUgb3VyIHJlc3VsdCBzbG90IGFuZCB0eXBlLiBObyBuZWVkIHRv IGJ1aWxkIHByb2plY3Rpb24KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVI YXNoam9pbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKaW5kZXggYWVh NDRhOWQ1Ni4uNDlhNmJhNDI3NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUhhc2hqb2luLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKQEAg LTc1Miw4ICs3NTIsMTIgQEAgRXhlY0luaXRIYXNoSm9pbihIYXNoSm9pbiAqbm9kZSwgRVN0YXRl ICplc3RhdGUsIGludCBlZmxhZ3MpCiAJaGFzaE5vZGUgPSAoSGFzaCAqKSBpbm5lclBsYW4obm9k ZSk7CiAKIAlvdXRlclBsYW5TdGF0ZShoanN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlck5vZGUs IGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQly ZXR1cm4gaGpzdGF0ZTsKIAlvdXRlckRlc2MgPSBFeGVjR2V0UmVzdWx0VHlwZShvdXRlclBsYW5T dGF0ZShoanN0YXRlKSk7CiAJaW5uZXJQbGFuU3RhdGUoaGpzdGF0ZSkgPSBFeGVjSW5pdE5vZGUo KFBsYW4gKikgaGFzaE5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxW YWxpZChlc3RhdGUpKQorCQlyZXR1cm4gaGpzdGF0ZTsKIAlpbm5lckRlc2MgPSBFeGVjR2V0UmVz dWx0VHlwZShpbm5lclBsYW5TdGF0ZShoanN0YXRlKSk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jCmluZGV4IGRjYjg0NzBiYTcuLjZjYWExYWEzMDYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNvcnQuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5jcmVtZW50YWxTb3J0LmMKQEAgLTEwNDEs NiArMTA0MSw4IEBAIEV4ZWNJbml0SW5jcmVtZW50YWxTb3J0KEluY3JlbWVudGFsU29ydCAqbm9k ZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogbm9kZXMgbWF5IGJlIGFibGUgdG8g ZG8gc29tZXRoaW5nIG1vcmUgdXNlZnVsLgogCSAqLwogCW91dGVyUGxhblN0YXRlKGluY3Jzb3J0 c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOwor CWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBpbmNyc29ydHN0YXRl OwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHNjYW4gc2xvdCBhbmQgdHlwZS4KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCmluZGV4IGYxZGIzNTY2NWMuLmVhN2ZkODljMGMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYwpAQCAtNDk2LDYgKzQ5 Niw4IEBAIEV4ZWNJbml0SW5kZXhPbmx5U2NhbihJbmRleE9ubHlTY2FuICpub2RlLCBFU3RhdGUg KmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBvcGVuIHRoZSBzY2FuIHJlbGF0aW9uCiAJICovCiAJ Y3VycmVudFJlbGF0aW9uID0gRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLCBub2RlLT5zY2Fu LnNjYW5yZWxpZCwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQor CQlyZXR1cm4gTlVMTDsKIAogCWluZGV4c3RhdGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiA9IGN1 cnJlbnRSZWxhdGlvbjsKIAlpbmRleHN0YXRlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPSBOVUxM OwkvKiBubyBoZWFwIHNjYW4gaGVyZSAqLwpAQCAtNTQ5LDYgKzU1MSw4IEBAIEV4ZWNJbml0SW5k ZXhPbmx5U2NhbihJbmRleE9ubHlTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFn cykKIAkvKiBPcGVuIHRoZSBpbmRleCByZWxhdGlvbi4gKi8KIAlsb2NrbW9kZSA9IGV4ZWNfcnRf ZmV0Y2gobm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVzdGF0ZSktPnJlbGxvY2ttb2RlOwogCWluZGV4 c3RhdGUtPmlvc3NfUmVsYXRpb25EZXNjID0gaW5kZXhfb3Blbihub2RlLT5pbmRleGlkLCBsb2Nr bW9kZSk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7 CiAKIAkvKgogCSAqIEluaXRpYWxpemUgaW5kZXgtc3BlY2lmaWMgc2NhbiBzdGF0ZQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCmluZGV4IDE0YjljMDAyMTcuLjkwNjM1ODAxMWEgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKQEAgLTkwOSw2ICs5MDksOCBAQCBFeGVj SW5pdEluZGV4U2NhbihJbmRleFNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KQogCSAqIG9wZW4gdGhlIHNjYW4gcmVsYXRpb24KIAkgKi8KIAljdXJyZW50UmVsYXRpb24gPSBF eGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUsIG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBlZmxhZ3Mp OworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJ aW5kZXhzdGF0ZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uID0gY3VycmVudFJlbGF0aW9uOwogCWlu ZGV4c3RhdGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7CS8qIG5vIGhlYXAgc2NhbiBo ZXJlICovCkBAIC05NTQsNiArOTU2LDggQEAgRXhlY0luaXRJbmRleFNjYW4oSW5kZXhTY2FuICpu b2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkvKiBPcGVuIHRoZSBpbmRleCByZWxh dGlvbi4gKi8KIAlsb2NrbW9kZSA9IGV4ZWNfcnRfZmV0Y2gobm9kZS0+c2Nhbi5zY2FucmVsaWQs IGVzdGF0ZSktPnJlbGxvY2ttb2RlOwogCWluZGV4c3RhdGUtPmlzc19SZWxhdGlvbkRlc2MgPSBp bmRleF9vcGVuKG5vZGUtPmluZGV4aWQsIGxvY2ttb2RlKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxW YWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSBpbmRl eC1zcGVjaWZpYyBzY2FuIHN0YXRlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTGltaXQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMaW1pdC5jCmluZGV4IDU2NTQx NThlM2UuLjY3NjBkZTBmMjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVM aW1pdC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMaW1pdC5jCkBAIC00NzYsNiAr NDc2LDggQEAgRXhlY0luaXRMaW1pdChMaW1pdCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiAJICovCiAJb3V0ZXJQbGFuID0gb3V0ZXJQbGFuKG5vZGUpOwogCW91dGVyUGxhblN0 YXRlKGxpbWl0c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbiwgZXN0YXRlLCBlZmxhZ3Mp OworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBsaW1pdHN0YXRl OwogCiAJLyoKIAkgKiBpbml0aWFsaXplIGNoaWxkIGV4cHJlc3Npb25zCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVMb2NrUm93cy5jCmluZGV4IGU0NTk5NzFkMzIuLjI1OTkzMzJmMDEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVMb2NrUm93cy5jCkBAIC0zMjIsNiArMzIyLDggQEAgRXhlY0luaXRMb2NrUm93 cyhMb2NrUm93cyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogdGhlbiBp bml0aWFsaXplIG91dGVyIHBsYW4KIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShscnN0YXRlKSA9IEV4 ZWNJbml0Tm9kZShvdXRlclBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3Rp bGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gbHJzdGF0ZTsKIAogCS8qIG5vZGUgcmV0dXJucyB1 bm1vZGlmaWVkIHNsb3RzIGZyb20gdGhlIG91dGVyIHBsYW4gKi8KIAlscnN0YXRlLT5wcy5yZXN1 bHRvcHNzZXQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1h dGVyaWFsLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYwppbmRleCA3NTNl YTI4OTE1Li5iOTc0ZWJkYzhhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TWF0ZXJpYWwuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYwpAQCAt MjE0LDYgKzIxNCw4IEBAIEV4ZWNJbml0TWF0ZXJpYWwoTWF0ZXJpYWwgKm5vZGUsIEVTdGF0ZSAq ZXN0YXRlLCBpbnQgZWZsYWdzKQogCiAJb3V0ZXJQbGFuID0gb3V0ZXJQbGFuKG5vZGUpOwogCW91 dGVyUGxhblN0YXRlKG1hdHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4sIGVzdGF0ZSwg ZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gbWF0 c3RhdGU7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgcmVzdWx0IHR5cGUgYW5kIHNsb3QuIE5vIG5l ZWQgdG8gaW5pdGlhbGl6ZSBwcm9qZWN0aW9uIGluZm8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVNZW1vaXplLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVtb2l6 ZS5jCmluZGV4IDUzNTJjYTEwYzguLmQwY2RiZTFmZDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVNZW1vaXplLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1l bW9pemUuYwpAQCAtOTM4LDYgKzkzOCw4IEBAIEV4ZWNJbml0TWVtb2l6ZShNZW1vaXplICpub2Rl LCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAogCW91dGVyTm9kZSA9IG91dGVyUGxhbihu b2RlKTsKIAlvdXRlclBsYW5TdGF0ZShtc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyTm9kZSwg ZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJl dHVybiBtc3RhdGU7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgcmV0dXJuIHNsb3QgYW5kIHR5cGUu IE5vIG5lZWQgdG8gaW5pdGlhbGl6ZSBwcm9qZWN0aW9uIGluZm8KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZU1lcmdlQXBwZW5kLmMKaW5kZXggMjFiNTcyNmU2ZS4uYzlkNDA2YzIzMCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKQEAgLTk1LDYgKzk1LDggQEAgRXhlY0luaXRN ZXJnZUFwcGVuZChNZXJnZUFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3Mp CiAJCQkJCQkJCQkJCSAgbGlzdF9sZW5ndGgobm9kZS0+bWVyZ2VwbGFucyksCiAJCQkJCQkJCQkJ CSAgbm9kZS0+cGFydF9wcnVuZV9pbmZvLAogCQkJCQkJCQkJCQkgICZ2YWxpZHN1YnBsYW5zKTsK KwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJldHVybiBOVUxMOwogCQlt ZXJnZXN0YXRlLT5tc19wcnVuZV9zdGF0ZSA9IHBydW5lc3RhdGU7CiAJCW5wbGFucyA9IGJtc19u dW1fbWVtYmVycyh2YWxpZHN1YnBsYW5zKTsKIApAQCAtMTIwLDcgKzEyMiwxMSBAQCBFeGVjSW5p dE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFn cykKIAkJbWVyZ2VzdGF0ZS0+bXNfcHJ1bmVfc3RhdGUgPSBOVUxMOwogCX0KIAotCW1lcmdlcGxh bnN0YXRlcyA9IChQbGFuU3RhdGUgKiopIHBhbGxvYyhucGxhbnMgKiBzaXplb2YoUGxhblN0YXRl ICopKTsKKwkvKgorCSAqIEFueSB1bmluaXRpYWxpemVkIHN1bmJvZGVzIHdpbGwgaGF2ZSBOVUxM IGluIG1lcmdlcGxhbnMgaW4gdGhlIGNhc2Ugb2YKKwkgKiBhbiBlYXJseSByZXR1cm4uCisJICov CisJbWVyZ2VwbGFuc3RhdGVzID0gKFBsYW5TdGF0ZSAqKikgcGFsbG9jMChucGxhbnMgKiBzaXpl b2YoUGxhblN0YXRlICopKTsKIAltZXJnZXN0YXRlLT5tZXJnZXBsYW5zID0gbWVyZ2VwbGFuc3Rh dGVzOwogCW1lcmdlc3RhdGUtPm1zX25wbGFucyA9IG5wbGFuczsKIApAQCAtMTUxLDYgKzE1Nyw4 IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRl LCBpbnQgZWZsYWdzKQogCQlQbGFuCSAgICppbml0Tm9kZSA9IChQbGFuICopIGxpc3RfbnRoKG5v ZGUtPm1lcmdlcGxhbnMsIGkpOwogCiAJCW1lcmdlcGxhbnN0YXRlc1tqKytdID0gRXhlY0luaXRO b2RlKGluaXROb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlk KGVzdGF0ZSkpCisJCQlyZXR1cm4gbWVyZ2VzdGF0ZTsKIAl9CiAKIAltZXJnZXN0YXRlLT5wcy5w c19Qcm9qSW5mbyA9IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TWVyZ2Vqb2luLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMKaW5kZXgg NjQ4ZmRkOWE1Zi4uZTdmNDUxMjQxOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZU1lcmdlam9pbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4u YwpAQCAtMTQ5MCwxMSArMTQ5MCwxNSBAQCBFeGVjSW5pdE1lcmdlSm9pbihNZXJnZUpvaW4gKm5v ZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCW1lcmdlc3RhdGUtPm1qX1NraXBNYXJr UmVzdG9yZSA9IG5vZGUtPnNraXBfbWFya19yZXN0b3JlOwogCiAJb3V0ZXJQbGFuU3RhdGUobWVy Z2VzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7 CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIG1lcmdlc3RhdGU7 CiAJb3V0ZXJEZXNjID0gRXhlY0dldFJlc3VsdFR5cGUob3V0ZXJQbGFuU3RhdGUobWVyZ2VzdGF0 ZSkpOwogCWlubmVyUGxhblN0YXRlKG1lcmdlc3RhdGUpID0gRXhlY0luaXROb2RlKGlubmVyUGxh bihub2RlKSwgZXN0YXRlLAogCQkJCQkJCQkJCQkgIG1lcmdlc3RhdGUtPm1qX1NraXBNYXJrUmVz dG9yZSA/CiAJCQkJCQkJCQkJCSAgZWZsYWdzIDoKIAkJCQkJCQkJCQkJICAoZWZsYWdzIHwgRVhF Q19GTEFHX01BUkspKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1 cm4gbWVyZ2VzdGF0ZTsKIAlpbm5lckRlc2MgPSBFeGVjR2V0UmVzdWx0VHlwZShpbm5lclBsYW5T dGF0ZShtZXJnZXN0YXRlKSk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFi bGUuYwppbmRleCBkMjFhMTc4YWQ1Li5jMjhkNTA1OGU5IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTW9kaWZ5VGFibGUuYwpAQCAtMzk4NSw2ICszOTg1LDkgQEAgRXhlY0luaXRNb2RpZnlUYWJs ZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQkJCQkJ ICAgbGluaXRpYWxfaW50KG5vZGUtPnJlc3VsdFJlbGF0aW9ucykpOwogCX0KIAorCWlmICghRXhl Y1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOworCiAJLyogc2V0IHVwIGVw cXN0YXRlIHdpdGggZHVtbXkgc3VicGxhbiBkYXRhIGZvciB0aGUgbW9tZW50ICovCiAJRXZhbFBs YW5RdWFsSW5pdCgmbXRzdGF0ZS0+bXRfZXBxc3RhdGUsIGVzdGF0ZSwgTlVMTCwgTklMLAogCQkJ CQkgbm9kZS0+ZXBxUGFyYW0sIG5vZGUtPnJlc3VsdFJlbGF0aW9ucyk7CkBAIC00MDEyLDYgKzQw MTUsOCBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVz dGF0ZSwgaW50IGVmbGFncykKIAkJaWYgKHJlc3VsdFJlbEluZm8gIT0gbXRzdGF0ZS0+cm9vdFJl c3VsdFJlbEluZm8pCiAJCXsKIAkJCUV4ZWNJbml0UmVzdWx0UmVsYXRpb24oZXN0YXRlLCByZXN1 bHRSZWxJbmZvLCByZXN1bHRSZWxhdGlvbik7CisJCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChl c3RhdGUpKQorCQkJCXJldHVybiBOVUxMOwogCiAJCQkvKgogCQkJICogRm9yIGNoaWxkIHJlc3Vs dCByZWxhdGlvbnMsIHN0b3JlIHRoZSByb290IHJlc3VsdCByZWxhdGlvbgpAQCAtNDAzOSw2ICs0 MDQ0LDggQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICpl c3RhdGUsIGludCBlZmxhZ3MpCiAJICogTm93IHdlIG1heSBpbml0aWFsaXplIHRoZSBzdWJwbGFu LgogCSAqLwogCW91dGVyUGxhblN0YXRlKG10c3RhdGUpID0gRXhlY0luaXROb2RlKHN1YnBsYW4s IGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQly ZXR1cm4gbXRzdGF0ZTsKIAogCS8qCiAJICogRG8gYWRkaXRpb25hbCBwZXItcmVzdWx0LXJlbGF0 aW9uIGluaXRpYWxpemF0aW9uLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZU5lc3Rsb29wLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmVzdGxvb3AuYwppbmRleCBm YzhmODMzZDhiLi4wMTU4YTNlNTkyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTmVzdGxvb3AuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmVzdGxvb3AuYwpA QCAtMjk1LDExICsyOTUsMTUgQEAgRXhlY0luaXROZXN0TG9vcChOZXN0TG9vcCAqbm9kZSwgRVN0 YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogdmFsdWVzLgogCSAqLwogCW91dGVyUGxhblN0 YXRlKG5sc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxh Z3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBubHN0YXRl OwogCWlmIChub2RlLT5uZXN0UGFyYW1zID09IE5JTCkKIAkJZWZsYWdzIHw9IEVYRUNfRkxBR19S RVdJTkQ7CiAJZWxzZQogCQllZmxhZ3MgJj0gfkVYRUNfRkxBR19SRVdJTkQ7CiAJaW5uZXJQbGFu U3RhdGUobmxzdGF0ZSkgPSBFeGVjSW5pdE5vZGUoaW5uZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVm bGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIG5sc3Rh dGU7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgcmVzdWx0IHNsb3QsIHR5cGUgYW5kIHByb2plY3Rp b24uCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQuYwppbmRleCBiNGJiZGM4OWIxLi4x YjQ3NzRkNGY3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNl dC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0LmMKQEAgLTI0Nyw2 ICsyNDcsOCBAQCBFeGVjSW5pdFByb2plY3RTZXQoUHJvamVjdFNldCAqbm9kZSwgRVN0YXRlICpl c3RhdGUsIGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6ZSBjaGlsZCBub2RlcwogCSAqLwogCW91 dGVyUGxhblN0YXRlKHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0 ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4g c3RhdGU7CiAKIAkvKgogCSAqIHdlIGRvbid0IHVzZSBpbm5lciBwbGFuCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5jCmluZGV4IDNkZmNiNGNhZmIuLmNhNGY3ODY4NWQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5jCkBAIC0yNDQsNyAr MjQ0LDExIEBAIEV4ZWNJbml0UmVjdXJzaXZlVW5pb24oUmVjdXJzaXZlVW5pb24gKm5vZGUsIEVT dGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIGluaXRpYWxpemUgY2hpbGQgbm9kZXMKIAkg Ki8KIAlvdXRlclBsYW5TdGF0ZShydXN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9k ZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQor CQlyZXR1cm4gcnVzdGF0ZTsKIAlpbm5lclBsYW5TdGF0ZShydXN0YXRlKSA9IEV4ZWNJbml0Tm9k ZShpbm5lclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxW YWxpZChlc3RhdGUpKQorCQlyZXR1cm4gcnVzdGF0ZTsKIAogCS8qCiAJICogSWYgaGFzaGluZywg cHJlY29tcHV0ZSBmbWdyIGxvb2t1cCBkYXRhIGZvciBpbm5lciBsb29wLCBhbmQgY3JlYXRlIHRo ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jCmluZGV4IGU5ZjU3MzJmMzMuLmQ0ZWExMDFjYmUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0LmMKQEAgLTIwOCw2ICsyMDgsOCBAQCBFeGVjSW5p dFJlc3VsdChSZXN1bHQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIGlu aXRpYWxpemUgY2hpbGQgbm9kZXMKIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShyZXNzdGF0ZSkgPSBF eGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVj UGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIHJlc3N0YXRlOwogCiAJLyoKIAkgKiB3 ZSBkb24ndCB1c2UgaW5uZXIgcGxhbgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVNhbXBsZXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTYW1wbGVzY2FuLmMK aW5kZXggMWFhMGUyYTIwNS4uZWRkYTg4OWU1NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVNhbXBsZXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Ft cGxlc2Nhbi5jCkBAIC0xMjUsNiArMTI1LDggQEAgRXhlY0luaXRTYW1wbGVTY2FuKFNhbXBsZVNj YW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQlFeGVjT3BlblNjYW5SZWxh dGlvbihlc3RhdGUsCiAJCQkJCQkJIG5vZGUtPnNjYW4uc2NhbnJlbGlkLAogCQkJCQkJCSBlZmxh Z3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwog CiAJLyogd2Ugd29uJ3Qgc2V0IHVwIHRoZSBIZWFwU2NhbkRlc2MgdGlsbCBsYXRlciAqLwogCXNj YW5zdGF0ZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl U2Vxc2Nhbi5jCmluZGV4IDQ5YTU5MzNhZmYuLjQ4ZTIwYWE3MzUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVNlcXNjYW4uYwpAQCAtMTUzLDYgKzE1Myw4IEBAIEV4ZWNJbml0U2VxU2NhbihTZXFTY2Fu ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJRXhlY09wZW5TY2FuUmVsYXRp b24oZXN0YXRlLAogCQkJCQkJCSBub2RlLT5zY2FuLnNjYW5yZWxpZCwKIAkJCQkJCQkgZWZsYWdz KTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAog CS8qIGFuZCBjcmVhdGUgc2xvdCB3aXRoIHRoZSBhcHByb3ByaWF0ZSByb3d0eXBlICovCiAJRXhl Y0luaXRTY2FuVHVwbGVTbG90KGVzdGF0ZSwgJnNjYW5zdGF0ZS0+c3MsCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVTZXRPcC5jCmluZGV4IDk4YzFiODRkNDMuLjdhM2ExNDIyMDQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRPcC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVTZXRPcC5jCkBAIC01MjgsNiArNTI4LDggQEAgRXhlY0luaXRTZXRPcChTZXRPcCAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJaWYgKG5vZGUtPnN0cmF0ZWd5ID09IFNFVE9Q X0hBU0hFRCkKIAkJZWZsYWdzICY9IH5FWEVDX0ZMQUdfUkVXSU5EOwogCW91dGVyUGxhblN0YXRl KHNldG9wc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxh Z3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBzZXRvcHN0 YXRlOwogCW91dGVyRGVzYyA9IEV4ZWNHZXRSZXN1bHRUeXBlKG91dGVyUGxhblN0YXRlKHNldG9w c3RhdGUpKTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU29y dC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYwppbmRleCBlZWE3ZjJhZTE1Li4z ZWJiYzQ2NjA0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU29ydC5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMKQEAgLTI2Myw2ICsyNjMsOCBAQCBF eGVjSW5pdFNvcnQoU29ydCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJZWZs YWdzICY9IH4oRVhFQ19GTEFHX1JFV0lORCB8IEVYRUNfRkxBR19CQUNLV0FSRCB8IEVYRUNfRkxB R19NQVJLKTsKIAogCW91dGVyUGxhblN0YXRlKHNvcnRzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0 ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQo ZXN0YXRlKSkKKwkJcmV0dXJuIHNvcnRzdGF0ZTsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSBzY2Fu IHNsb3QgYW5kIHR5cGUuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3Vi cXVlcnlzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMKaW5k ZXggMWVlNjI5NTY2MC4uM2M1YzdjMmViYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJx dWVyeXNjYW4uYwpAQCAtMTI0LDYgKzEyNCw4IEBAIEV4ZWNJbml0U3VicXVlcnlTY2FuKFN1YnF1 ZXJ5U2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6 ZSBzdWJxdWVyeQogCSAqLwogCXN1YnF1ZXJ5c3RhdGUtPnN1YnBsYW4gPSBFeGVjSW5pdE5vZGUo bm9kZS0+c3VicGxhbiwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlk KGVzdGF0ZSkpCisJCXJldHVybiBzdWJxdWVyeXN0YXRlOwogCiAJLyoKIAkgKiBJbml0aWFsaXpl IHNjYW4gc2xvdCBhbmQgdHlwZSAobmVlZGVkIGJ5IEV4ZWNBc3NpZ25TY2FuUHJvamVjdGlvbklu Zm8pCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMKaW5kZXggZGE2MjJkM2Y1 Zi4uZDMzN2YzZDU0YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJh bmdlc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYwpA QCAtMzc0LDYgKzM3NCw4IEBAIEV4ZWNJbml0VGlkUmFuZ2VTY2FuKFRpZFJhbmdlU2NhbiAqbm9k ZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogb3BlbiB0aGUgc2NhbiByZWxhdGlv bgogCSAqLwogCWN1cnJlbnRSZWxhdGlvbiA9IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwg bm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQo ZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAl0aWRyYW5nZXN0YXRlLT5zcy5zc19jdXJyZW50 UmVsYXRpb24gPSBjdXJyZW50UmVsYXRpb247CiAJdGlkcmFuZ2VzdGF0ZS0+c3Muc3NfY3VycmVu dFNjYW5EZXNjID0gTlVMTDsJLyogbm8gdGFibGUgc2NhbiBoZXJlICovCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVRpZHNjYW4uYwppbmRleCAxNTA1NTA3N2QwLi45NjM3ZjM1NGIyIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVUaWRzY2FuLmMKQEAgLTUxNyw2ICs1MTcsOCBAQCBFeGVjSW5pdFRpZFNjYW4oVGlk U2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogb3BlbiB0aGUgc2Nh biByZWxhdGlvbgogCSAqLwogCWN1cnJlbnRSZWxhdGlvbiA9IEV4ZWNPcGVuU2NhblJlbGF0aW9u KGVzdGF0ZSwgbm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0 aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAl0aWRzdGF0ZS0+c3Muc3NfY3Vy cmVudFJlbGF0aW9uID0gY3VycmVudFJlbGF0aW9uOwogCXRpZHN0YXRlLT5zcy5zc19jdXJyZW50 U2NhbkRlc2MgPSBOVUxMOyAvKiBubyBoZWFwIHNjYW4gaGVyZSAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVVuaXF1ZS5jCmluZGV4IDAxZjk1MTE5N2MuLjI4NjMwZTM4MGUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlVW5pcXVlLmMKQEAgLTEzNiw2ICsxMzYsOCBAQCBFeGVjSW5pdFVuaXF1ZShVbmlxdWUgKm5v ZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIHRoZW4gaW5pdGlhbGl6ZSBvdXRl ciBwbGFuCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUodW5pcXVlc3RhdGUpID0gRXhlY0luaXROb2Rl KG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZh bGlkKGVzdGF0ZSkpCisJCXJldHVybiB1bmlxdWVzdGF0ZTsKIAogCS8qCiAJICogSW5pdGlhbGl6 ZSByZXN1bHQgc2xvdCBhbmQgdHlwZS4gVW5pcXVlIG5vZGVzIGRvIG5vIHByb2plY3Rpb25zLCBz bwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCmluZGV4IDM4NDlkMmY4NDcuLjA0ZDRl ZWJjZTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKQEAgLTI0NjEsNiArMjQ2 MSw4IEBAIEV4ZWNJbml0V2luZG93QWdnKFdpbmRvd0FnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUs IGludCBlZmxhZ3MpCiAJICovCiAJb3V0ZXJQbGFuID0gb3V0ZXJQbGFuKG5vZGUpOwogCW91dGVy UGxhblN0YXRlKHdpbnN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4sIGVzdGF0ZSwgZWZs YWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gd2luc3Rh dGU7CiAKIAkvKgogCSAqIGluaXRpYWxpemUgc291cmNlIHR1cGxlIHR5cGUgKHdoaWNoIGlzIGFs c28gdGhlIHR1cGxlIHR5cGUgdGhhdCB3ZSdsbApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXgg YWVlYmUwZTBmZi4uNzJjYmYxMjBjNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv ZXhlY3V0b3IuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCkBAIC0xOSw2 ICsxOSw3IEBACiAjaW5jbHVkZSAibm9kZXMvbG9ja29wdGlvbnMuaCIKICNpbmNsdWRlICJub2Rl cy9wYXJzZW5vZGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1 dGlscy9wbGFuY2FjaGUuaCIKIAogCiAvKgpAQCAtMjU2LDYgKzI1NywxNSBAQCBleHRlcm4gdm9p ZCBFeGVjRW5kTm9kZShQbGFuU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1NodXRkb3du Tm9kZShQbGFuU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1NldFR1cGxlQm91bmQoaW50 NjQgdHVwbGVzX25lZWRlZCwgUGxhblN0YXRlICpjaGlsZF9ub2RlKTsKIAorLyoKKyAqIElzIHRo ZSBDYWNoZWRQbGFuIGluIGVzX2NhY2hlZHBsYW4gc3RpbGwgdmFsaWQ/CisgKi8KK3N0YXRpYyBp bmxpbmUgYm9vbAorRXhlY1BsYW5TdGlsbFZhbGlkKEVTdGF0ZSAqZXN0YXRlKQoreworCXJldHVy biBlc3RhdGUtPmVzX2NhY2hlZHBsYW4gPT0gTlVMTCA/IHRydWUgOgorCQlDYWNoZWRQbGFuU3Rp bGxWYWxpZChlc3RhdGUtPmVzX2NhY2hlZHBsYW4pOworfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhl Y1Byb2NOb2RlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3Ny Yy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IGNiNzE0ZjRhMTkuLmIyYTU3NmI3NmQg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC02MjMsNiArNjIzLDggQEAgdHlwZWRlZiBzdHJ1Y3Qg RVN0YXRlCiAJCQkJCQkJCQkJICogRXhlY1Jvd01hcmtzLCBvciBOVUxMIGlmIG5vbmUgKi8KIAlM aXN0CSAgICplc19ydGVwZXJtaW5mb3M7CS8qIExpc3Qgb2YgUlRFUGVybWlzc2lvbkluZm8gKi8K IAlQbGFubmVkU3RtdCAqZXNfcGxhbm5lZHN0bXQ7CS8qIGxpbmsgdG8gdG9wIG9mIHBsYW4gdHJl ZSAqLworCXN0cnVjdCBDYWNoZWRQbGFuICAqZXNfY2FjaGVkcGxhbjsJLyogQ2FjaGVkUGxhbiBp ZiBwbGFubmVkc3RtdCBpcyBmcm9tCisJCQkJCQkJCQkJICogb25lIG9yIE5VTEwgaWYgbm90ICov CiAJY29uc3QgY2hhciAqZXNfc291cmNlVGV4dDsJLyogU291cmNlIHRleHQgZnJvbSBRdWVyeURl c2MgKi8KIAogCUp1bmtGaWx0ZXIgKmVzX2p1bmtGaWx0ZXI7CS8qIHRvcC1sZXZlbCBqdW5rIGZp bHRlciwgaWYgYW55ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUu aCBiL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCmluZGV4IDkxNmU1OWQ5ZmUuLmM4M2E2 N2ZlYTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCisrKyBiL3Ny Yy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCkBAIC0yMjEsNiArMjIxLDIwIEBAIGV4dGVybiBD YWNoZWRQbGFuICpHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJ CQkJCQkJCSBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAogCQkJCQkJCQkgUmVzb3VyY2VPd25l ciBvd25lciwKIAkJCQkJCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKKworLyoKKyAq IENhY2hlZFBsYW5TdGlsbFZhbGlkCisgKgkJUmV0dXJucyBpZiBhIGNhY2hlZCBnZW5lcmljIHBs YW4gaXMgc3RpbGwgdmFsaWQKKyAqCisgKiBDYWxsZWQgYnkgdGhlIGV4ZWN1dG9yIG9uIGV2ZXJ5 IHJlbGF0aW9uIGxvY2sgdGFrZW4gd2hlbiBpbml0aWFsaXppbmcgdGhlCisgKiBwbGFuIHRyZWUg aW4gdGhlIENhY2hlZFBsYW4uCisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorQ2FjaGVkUGxhblN0 aWxsVmFsaWQoQ2FjaGVkUGxhbiAqY3BsYW4pCit7CisJcmV0dXJuIGNwbGFuLT5pc192YWxpZDsK K30KKwogZXh0ZXJuIHZvaWQgUmVsZWFzZUNhY2hlZFBsYW4oQ2FjaGVkUGxhbiAqcGxhbiwgUmVz b3VyY2VPd25lciBvd25lcik7CiAKIGV4dGVybiBib29sIENhY2hlZFBsYW5BbGxvd3NTaW1wbGVW YWxpZGl0eUNoZWNrKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCi0tIAoyLjM1LjMKCg== --000000000000f8d8750604975ca4 Content-Type: application/octet-stream; name="v46-0001-Refactor-ExecEnd-routines-to-enhance-efficiency.patch" Content-Disposition: attachment; filename="v46-0001-Refactor-ExecEnd-routines-to-enhance-efficiency.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lm5z2oea7 RnJvbSBlYzhmYWFkOWJjOWFlMTU3ZWJjYTg1YTc4OTI4NTdhMDRmMDZmYjM5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IEZyaSwgMSBTZXAgMjAyMyAxNzo0NjozMiArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ2 IDEvOF0gUmVmYWN0b3IgRXhlY0VuZCogcm91dGluZXMgdG8gZW5oYW5jZSBlZmZpY2llbmN5CgpU aGlzIGNvbW1pdCByZW1vdmVzIHVubmVjZXNzYXJ5IEV4ZWNFeHByRnJlZUNvbnRleHQoKSBjYWxs cyBpbiBFeGVjRW5kKgpyb3V0aW5lcyBhcyB0aGUgYWN0dWFsIGNsZWFudXAgaXMgbWFuYWdlZCBi eSBGcmVlRXhlY3V0b3JTdGF0ZS4gV2l0aApubyByZW1haW5pbmcgY2FsbGVycyBmb3IgRXhlY0V4 cHJGcmVlQ29udGV4dCgpLCB0aGlzIGNvbW1pdCBhbHNvCnJlbW92ZXMgdGhlIGZ1bmN0aW9uLgoK VGhpcyBjb21taXQgYWxzbyBkcm9wcyByZWR1bmRhbnQgRXhlY0NsZWFyVHVwbGUoKSBjYWxscywg YXMKRXhlY1Jlc2V0VHVwbGVUYWJsZSgpIGluIEV4ZWNFbmRQbGFuKCkgYWxyZWFkeSB0YWtlcyBj YXJlIG9mIHJlc2V0dGluZwphbGwgVHVwbGVUYWJsZVNsb3RzLgoKQWZ0ZXIgdGhlc2UgbW9kaWZp Y2F0aW9ucywgdGhlIEV4ZWNFbmQqKCkgcm91dGluZXMgZm9yIFZhbHVlc1NjYW4sCk5hbWVkVHVw bGVzdG9yZVNjYW4sIGFuZCBXb3JrVGFibGVTY2FuIGJlY2FtZSByZWR1bmRhbnQuIFRodXMsIHRo aXMKY29tbWl0IHJlbW92ZXMgdGhlbS4gVGhlc2UgY2hhbmdlcyBub3Qgb25seSBvcHRpbWl6ZSBD UFUgdXNhZ2UgZHVyaW5nCkV4ZWNFbmROb2RlKCkgcHJvY2Vzc2luZyBidXQgYWxzbyBwYXZlIHRo ZSB3YXkgZm9yIGFuIHVwY29taW5nIHBhdGNoLgpUaGlzIGZ1dHVyZSBwYXRjaCBhaW1zIHRvIGFs bG93IEV4ZWNFbmROb2RlKCkgdG8gZXhwZWN0IFBsYW5TdGF0ZQp0cmVlcyB0aGF0IGFyZSBvbmx5 IHBhcnRpYWxseSBpbml0aWFsaXplZCBpbiBzb21lIGNhc2VzLgotLS0KIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jICAgICAgICAgICB8IDE4ICsrKysrLS0tLS0tLS0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jICAgICAgICAgICAgICB8IDI2IC0tLS0tLS0tLS0t LS0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYyAgICAgICAgICAgICAgICB8 IDEwIC0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jICAg ICB8IDEyIC0tLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nh bi5jICAgIHwgIDggLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3Rlc2Nhbi5jICAg ICAgICAgICAgfCAxMyArLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3VzdG9t LmMgICAgICAgICAgICAgfCAgOCArLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGdW5j dGlvbnNjYW4uYyAgICAgICB8IDEyIC0tLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUdhdGhlci5jICAgICAgICAgICAgIHwgIDMgLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl R2F0aGVyTWVyZ2UuYyAgICAgICAgfCAgMyAtLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVH cm91cC5jICAgICAgICAgICAgICB8ICA1IC0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVI YXNoLmMgICAgICAgICAgICAgICB8ICA1IC0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVI YXNoam9pbi5jICAgICAgICAgICB8IDEyIC0tLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUluY3JlbWVudGFsU29ydC5jICAgIHwgIDggLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlSW5kZXhvbmx5c2Nhbi5jICAgICAgfCAxNiAtLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYyAgICAgICAgICB8IDE2IC0tLS0tLS0tLS0tLQogc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxpbWl0LmMgICAgICAgICAgICAgIHwgIDEgLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZU1hdGVyaWFsLmMgICAgICAgICAgIHwgIDUgLS0tLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYyAgICAgICAgICAgIHwgIDkgLS0tLS0tLQogc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jICAgICAgICAgIHwgMTIgLS0tLS0tLS0t CiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyAgICAgICAgfCAxMSAtLS0t LS0tLQogLi4uL2V4ZWN1dG9yL25vZGVOYW1lZHR1cGxlc3RvcmVzY2FuLmMgICAgICAgIHwgMjIg LS0tLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMgICAg ICAgICAgIHwgMTEgLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0 LmMgICAgICAgICB8IDEwIC0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQu YyAgICAgICAgICAgICB8IDEwIC0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTYW1w bGVzY2FuLmMgICAgICAgICB8IDEzICstLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVTZXFzY2FuLmMgICAgICAgICAgICB8IDEyIC0tLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVNldE9wLmMgICAgICAgICAgICAgIHwgIDQgLS0tCiBzcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlU29ydC5jICAgICAgICAgICAgICAgfCAgNyAtLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5jICAgICAgIHwgMTIgLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jICAgICAgfCAxMiAtLS0tLS0tLS0KIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYyAgICAgICB8IDEyIC0tLS0tLS0tLQogc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYyAgICAgICAgICAgIHwgMTIgLS0tLS0tLS0t CiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMgICAgICAgICAgICAgfCAgNSAtLS0t CiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVmFsdWVzc2Nhbi5jICAgICAgICAgfCAyNCAtLS0t LS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jICAgICAg ICAgIHwgMTcgLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV29ya3RhYmxl c2Nhbi5jICAgICAgfCAyMiAtLS0tLS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9leGVjdXRvci9l eGVjdXRvci5oICAgICAgICAgICAgICAgfCAgMSAtCiAuLi4vZXhlY3V0b3Ivbm9kZU5hbWVkdHVw bGVzdG9yZXNjYW4uaCAgICAgICAgfCAgMSAtCiBzcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlVmFs dWVzc2Nhbi5oICAgICAgICAgfCAgMSAtCiBzcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlV29ya3Rh Ymxlc2Nhbi5oICAgICAgfCAgMSAtCiA0MSBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyks IDQxMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UHJvY25vZGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCmluZGV4IDRk Mjg4YmM4ZDQuLjYwOThjZGNhNjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQcm9jbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCkBA IC02NjcsMjIgKzY2NywxMCBAQCBFeGVjRW5kTm9kZShQbGFuU3RhdGUgKm5vZGUpCiAJCQlFeGVj RW5kVGFibGVGdW5jU2NhbigoVGFibGVGdW5jU2NhblN0YXRlICopIG5vZGUpOwogCQkJYnJlYWs7 CiAKLQkJY2FzZSBUX1ZhbHVlc1NjYW5TdGF0ZToKLQkJCUV4ZWNFbmRWYWx1ZXNTY2FuKChWYWx1 ZXNTY2FuU3RhdGUgKikgbm9kZSk7Ci0JCQlicmVhazsKLQogCQljYXNlIFRfQ3RlU2NhblN0YXRl OgogCQkJRXhlY0VuZEN0ZVNjYW4oKEN0ZVNjYW5TdGF0ZSAqKSBub2RlKTsKIAkJCWJyZWFrOwog Ci0JCWNhc2UgVF9OYW1lZFR1cGxlc3RvcmVTY2FuU3RhdGU6Ci0JCQlFeGVjRW5kTmFtZWRUdXBs ZXN0b3JlU2NhbigoTmFtZWRUdXBsZXN0b3JlU2NhblN0YXRlICopIG5vZGUpOwotCQkJYnJlYWs7 Ci0KLQkJY2FzZSBUX1dvcmtUYWJsZVNjYW5TdGF0ZToKLQkJCUV4ZWNFbmRXb3JrVGFibGVTY2Fu KChXb3JrVGFibGVTY2FuU3RhdGUgKikgbm9kZSk7Ci0JCQlicmVhazsKLQogCQljYXNlIFRfRm9y ZWlnblNjYW5TdGF0ZToKIAkJCUV4ZWNFbmRGb3JlaWduU2NhbigoRm9yZWlnblNjYW5TdGF0ZSAq KSBub2RlKTsKIAkJCWJyZWFrOwpAQCAtNzU3LDYgKzc0NSwxMiBAQCBFeGVjRW5kTm9kZShQbGFu U3RhdGUgKm5vZGUpCiAJCQlFeGVjRW5kTGltaXQoKExpbWl0U3RhdGUgKikgbm9kZSk7CiAJCQli cmVhazsKIAorCQkvKiBObyBjbGVhbiB1cCBhY3Rpb25zIGZvciB0aGVzZSBub2Rlcy4gKi8KKwkJ Y2FzZSBUX1ZhbHVlc1NjYW5TdGF0ZToKKwkJY2FzZSBUX05hbWVkVHVwbGVzdG9yZVNjYW5TdGF0 ZToKKwkJY2FzZSBUX1dvcmtUYWJsZVNjYW5TdGF0ZToKKwkJCWJyZWFrOworCiAJCWRlZmF1bHQ6 CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG5vZGUgdHlwZTogJWQiLCAoaW50KSBub2Rl VGFnKG5vZGUpKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1V0aWxzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwppbmRleCBjMDZi MjI4ODU4Li4xNjcwNGMwYzJmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj VXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwpAQCAtNjM4LDMy ICs2MzgsNiBAQCB0bGlzdF9tYXRjaGVzX3R1cGRlc2MoUGxhblN0YXRlICpwcywgTGlzdCAqdGxp c3QsIGludCB2YXJubywgVHVwbGVEZXNjIHR1cGRlc2MpCiAJcmV0dXJuIHRydWU7CiB9CiAKLS8q IC0tLS0tLS0tLS0tLS0tLS0KLSAqCQlFeGVjRnJlZUV4cHJDb250ZXh0Ci0gKgotICogQSBwbGFu IG5vZGUncyBFeHByQ29udGV4dCBzaG91bGQgYmUgZnJlZWQgZXhwbGljaXRseSBkdXJpbmcgZXhl Y3V0b3IKLSAqIHNodXRkb3duIGJlY2F1c2UgdGhlcmUgbWF5IGJlIHNodXRkb3duIGNhbGxiYWNr cyB0byBjYWxsLiAgKE90aGVyIHJlc291cmNlcwotICogbWFkZSBieSB0aGUgYWJvdmUgcm91dGlu ZXMsIHN1Y2ggYXMgcHJvamVjdGlvbiBpbmZvLCBkb24ndCBuZWVkIHRvIGJlIGZyZWVkCi0gKiBl eHBsaWNpdGx5IGJlY2F1c2UgdGhleSdyZSBqdXN0IG1lbW9yeSBpbiB0aGUgcGVyLXF1ZXJ5IG1l bW9yeSBjb250ZXh0LikKLSAqCi0gKiBIb3dldmVyIC4uLiB0aGVyZSBpcyBubyBwYXJ0aWN1bGFy IG5lZWQgdG8gZG8gaXQgZHVyaW5nIEV4ZWNFbmROb2RlLAotICogYmVjYXVzZSBGcmVlRXhlY3V0 b3JTdGF0ZSB3aWxsIGZyZWUgYW55IHJlbWFpbmluZyBFeHByQ29udGV4dHMgd2l0aGluCi0gKiB0 aGUgRVN0YXRlLiAgTGV0dGluZyBGcmVlRXhlY3V0b3JTdGF0ZSBkbyBpdCBhbGxvd3MgdGhlIEV4 cHJDb250ZXh0cyB0bwotICogYmUgZnJlZWQgaW4gcmV2ZXJzZSBvcmRlciBvZiBjcmVhdGlvbiwg cmF0aGVyIHRoYW4gb3JkZXIgb2YgY3JlYXRpb24gYXMKLSAqIHdpbGwgaGFwcGVuIGlmIHdlIGRl bGV0ZSB0aGVtIGhlcmUsIHdoaWNoIHNhdmVzIE8oTl4yKSB3b3JrIGluIHRoZSBsaXN0Ci0gKiBj bGVhbnVwIGluc2lkZSBGcmVlRXhwckNvbnRleHQuCi0gKiAtLS0tLS0tLS0tLS0tLS0tCi0gKi8K LXZvaWQKLUV4ZWNGcmVlRXhwckNvbnRleHQoUGxhblN0YXRlICpwbGFuc3RhdGUpCi17Ci0JLyoK LQkgKiBQZXIgYWJvdmUgZGlzY3Vzc2lvbiwgZG9uJ3QgYWN0dWFsbHkgZGVsZXRlIHRoZSBFeHBy Q29udGV4dC4gV2UgZG8KLQkgKiB1bmxpbmsgaXQgZnJvbSB0aGUgcGxhbiBub2RlLCB0aG91Z2gu Ci0JICovCi0JcGxhbnN0YXRlLT5wc19FeHByQ29udGV4dCA9IE5VTEw7Ci19Ci0KIAogLyogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogICoJCQkJICBTY2FuIG5vZGUgc3VwcG9ydApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUFnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jCmluZGV4 IDQ2OGRiOTRmZTUuLmYxNTRmMjg5MDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVBZ2cuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMKQEAgLTQzNTcs MTYgKzQzNTcsNiBAQCBFeGVjRW5kQWdnKEFnZ1N0YXRlICpub2RlKQogCWlmIChub2RlLT5oYXNo Y29udGV4dCkKIAkJUmVTY2FuRXhwckNvbnRleHQobm9kZS0+aGFzaGNvbnRleHQpOwogCi0JLyoK LQkgKiBXZSBkb24ndCBhY3R1YWxseSBmcmVlIGFueSBFeHByQ29udGV4dHMgaGVyZSAoc2VlIGNv bW1lbnQgaW4KLQkgKiBFeGVjRnJlZUV4cHJDb250ZXh0KSwganVzdCB1bmxpbmtpbmcgdGhlIG91 dHB1dCBvbmUgZnJvbSB0aGUgcGxhbiBub2RlCi0JICogc3VmZmljZXMuCi0JICovCi0JRXhlY0Zy ZWVFeHByQ29udGV4dCgmbm9kZS0+c3MucHMpOwotCi0JLyogY2xlYW4gdXAgdHVwbGUgdGFibGUg Ki8KLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKLQogCW91dGVy UGxhbiA9IG91dGVyUGxhblN0YXRlKG5vZGUpOwogCUV4ZWNFbmROb2RlKG91dGVyUGxhbik7CiB9 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCmluZGV4IGYzNWRmMGI4 YmYuLjJkYjBhY2ZjNzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRt YXBIZWFwc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nh bi5jCkBAIC02NTUsMTggKzY1NSw2IEBAIEV4ZWNFbmRCaXRtYXBIZWFwU2NhbihCaXRtYXBIZWFw U2NhblN0YXRlICpub2RlKQogCSAqLwogCXNjYW5EZXNjID0gbm9kZS0+c3Muc3NfY3VycmVudFNj YW5EZXNjOwogCi0JLyoKLQkgKiBGcmVlIHRoZSBleHByY29udGV4dAotCSAqLwotCUV4ZWNGcmVl RXhwckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKLQotCS8qCi0JICogY2xlYXIgb3V0IHR1cGxlIHRh YmxlIHNsb3RzCi0JICovCi0JaWYgKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKLQkJ RXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xl YXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKLQogCS8qCiAJICogY2xvc2UgZG93 biBzdWJwbGFucwogCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJp dG1hcEluZGV4c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nh bi5jCmluZGV4IDgzZWM5ZWRlODkuLjdjZjg1MzJiYzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlQml0bWFwSW5kZXhzY2FuLmMKQEAgLTE4NCwxNCArMTg0LDYgQEAgRXhlY0VuZEJpdG1h cEluZGV4U2NhbihCaXRtYXBJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAlpbmRleFJlbGF0aW9uRGVz YyA9IG5vZGUtPmJpc3NfUmVsYXRpb25EZXNjOwogCWluZGV4U2NhbkRlc2MgPSBub2RlLT5iaXNz X1NjYW5EZXNjOwogCi0JLyoKLQkgKiBGcmVlIHRoZSBleHByY29udGV4dCAuLi4gbm93IGRlYWQg Y29kZSwgc2VlIEV4ZWNGcmVlRXhwckNvbnRleHQKLQkgKi8KLSNpZmRlZiBOT1RfVVNFRAotCWlm IChub2RlLT5iaXNzX1J1bnRpbWVDb250ZXh0KQotCQlGcmVlRXhwckNvbnRleHQobm9kZS0+Ymlz c19SdW50aW1lQ29udGV4dCwgdHJ1ZSk7Ci0jZW5kaWYKLQogCS8qCiAJICogY2xvc2UgdGhlIGlu ZGV4IHJlbGF0aW9uIChuby1vcCBpZiB3ZSBkaWRuJ3Qgb3BlbiBpdCkKIAkgKi8KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVDdGVzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQ3Rlc2Nhbi5jCmluZGV4IGNjNGM0MjQzZTIuLjE0ZTAxMGMwZWEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVDdGVzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUN0ZXNjYW4uYwpAQCAtMjg3LDIzICsyODcsMTIgQEAgRXhlY0luaXRDdGVT Y2FuKEN0ZVNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogdm9pZAogRXhl Y0VuZEN0ZVNjYW4oQ3RlU2NhblN0YXRlICpub2RlKQogewotCS8qCi0JICogRnJlZSBleHByY29u dGV4dAotCSAqLwotCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKLQotCS8qCi0J ICogY2xlYW4gb3V0IHRoZSB0dXBsZSB0YWJsZQotCSAqLwotCWlmIChub2RlLT5zcy5wcy5wc19S ZXN1bHRUdXBsZVNsb3QpCi0JCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1 cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7Ci0K IAkvKgogCSAqIElmIEkgYW0gdGhlIGxlYWRlciwgZnJlZSB0aGUgdHVwbGVzdG9yZS4KIAkgKi8K IAlpZiAobm9kZS0+bGVhZGVyID09IG5vZGUpCiAJeworCQlBc3NlcnQobm9kZS0+Y3RlX3RhYmxl KTsKIAkJdHVwbGVzdG9yZV9lbmQobm9kZS0+Y3RlX3RhYmxlKTsKIAkJbm9kZS0+Y3RlX3RhYmxl ID0gTlVMTDsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3VzdG9t LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMKaW5kZXggYmQ0MmM2NWIyOS4u ZTgwYmUzYWY4MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN1c3RvbS5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVDdXN0b20uYwpAQCAtMTI3LDE1ICsxMjcs OSBAQCBFeGVjQ3VzdG9tU2NhbihQbGFuU3RhdGUgKnBzdGF0ZSkKIHZvaWQKIEV4ZWNFbmRDdXN0 b21TY2FuKEN1c3RvbVNjYW5TdGF0ZSAqbm9kZSkKIHsKKwlBc3NlcnQobm9kZS0+bWV0aG9kcyk7 CiAJQXNzZXJ0KG5vZGUtPm1ldGhvZHMtPkVuZEN1c3RvbVNjYW4gIT0gTlVMTCk7CiAJbm9kZS0+ bWV0aG9kcy0+RW5kQ3VzdG9tU2Nhbihub2RlKTsKLQotCS8qIEZyZWUgdGhlIGV4cHJjb250ZXh0 ICovCi0JRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+c3MucHMpOwotCi0JLyogQ2xlYW4gb3V0 IHRoZSB0dXBsZSB0YWJsZSAqLwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3Vs dFR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7 CiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGdW5jdGlv 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 ZGVJbmNyZW1lbnRhbFNvcnQuYwppbmRleCA3NjgzZTMzNDFjLi5kY2I4NDcwYmE3IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5jcmVtZW50YWxTb3J0LmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jCkBAIC0xMDc5LDE0ICsxMDc5 LDYgQEAgRXhlY0VuZEluY3JlbWVudGFsU29ydChJbmNyZW1lbnRhbFNvcnRTdGF0ZSAqbm9kZSkK IHsKIAlTT19wcmludGYoIkV4ZWNFbmRJbmNyZW1lbnRhbFNvcnQ6IHNodXR0aW5nIGRvd24gc29y dCBub2RlXG4iKTsKIAotCS8qIGNsZWFuIG91dCB0aGUgc2NhbiB0dXBsZSAqLwotCUV4ZWNDbGVh clR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwotCS8qIG11c3QgZHJvcCBwb2ludGVy IHRvIHNvcnQgcmVzdWx0IHR1cGxlICovCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNf UmVzdWx0VHVwbGVTbG90KTsKLQkvKiBtdXN0IGRyb3Agc3RhbmRhbG9uZSB0dXBsZSBzbG90cyBm cm9tIG91dGVyIG5vZGUgKi8KLQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KG5vZGUtPmdy b3VwX3Bpdm90KTsKLQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KG5vZGUtPnRyYW5zZmVy X3R1cGxlKTsKLQogCS8qCiAJICogUmVsZWFzZSB0dXBsZXNvcnQgcmVzb3VyY2VzLgogCSAqLwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKaW5kZXggMGI0M2E5Yjk2OS4u ZjFkYjM1NjY1YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25s eXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCkBA IC0zODAsMjIgKzM4MCw2IEBAIEV4ZWNFbmRJbmRleE9ubHlTY2FuKEluZGV4T25seVNjYW5TdGF0 ZSAqbm9kZSkKIAkJbm9kZS0+aW9zc19WTUJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CiAJfQogCi0J LyoKLQkgKiBGcmVlIHRoZSBleHByY29udGV4dChzKSAuLi4gbm93IGRlYWQgY29kZSwgc2VlIEV4 ZWNGcmVlRXhwckNvbnRleHQKLQkgKi8KLSNpZmRlZiBOT1RfVVNFRAotCUV4ZWNGcmVlRXhwckNv bnRleHQoJm5vZGUtPnNzLnBzKTsKLQlpZiAobm9kZS0+aW9zc19SdW50aW1lQ29udGV4dCkKLQkJ RnJlZUV4cHJDb250ZXh0KG5vZGUtPmlvc3NfUnVudGltZUNvbnRleHQsIHRydWUpOwotI2VuZGlm Ci0KLQkvKgotCSAqIGNsZWFyIG91dCB0dXBsZSB0YWJsZSBzbG90cwotCSAqLwotCWlmIChub2Rl LT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpCi0JCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBz LnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1 cGxlU2xvdCk7Ci0KIAkvKgogCSAqIGNsb3NlIHRoZSBpbmRleCByZWxhdGlvbiAobm8tb3AgaWYg d2UgZGlkbid0IG9wZW4gaXQpCiAJICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlSW5kZXhzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMK aW5kZXggNDU0MGM3NzgxZC4uMTRiOWMwMDIxNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUluZGV4c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRl eHNjYW4uYwpAQCAtNzk0LDIyICs3OTQsNiBAQCBFeGVjRW5kSW5kZXhTY2FuKEluZGV4U2NhblN0 YXRlICpub2RlKQogCWluZGV4UmVsYXRpb25EZXNjID0gbm9kZS0+aXNzX1JlbGF0aW9uRGVzYzsK IAlpbmRleFNjYW5EZXNjID0gbm9kZS0+aXNzX1NjYW5EZXNjOwogCi0JLyoKLQkgKiBGcmVlIHRo ZSBleHByY29udGV4dChzKSAuLi4gbm93IGRlYWQgY29kZSwgc2VlIEV4ZWNGcmVlRXhwckNvbnRl eHQKLQkgKi8KLSNpZmRlZiBOT1RfVVNFRAotCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnNz LnBzKTsKLQlpZiAobm9kZS0+aXNzX1J1bnRpbWVDb250ZXh0KQotCQlGcmVlRXhwckNvbnRleHQo bm9kZS0+aXNzX1J1bnRpbWVDb250ZXh0LCB0cnVlKTsKLSNlbmRpZgotCi0JLyoKLQkgKiBjbGVh ciBvdXQgdHVwbGUgdGFibGUgc2xvdHMKLQkgKi8KLQlpZiAobm9kZS0+c3MucHMucHNfUmVzdWx0 VHVwbGVTbG90KQotCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNs b3QpOwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwotCiAJLyoK IAkgKiBjbG9zZSB0aGUgaW5kZXggcmVsYXRpb24gKG5vLW9wIGlmIHdlIGRpZG4ndCBvcGVuIGl0 KQogCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxpbWl0LmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwppbmRleCA0MjVmYmZjNDA1Li41NjU0MTU4 ZTNlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwpAQCAtNTM0LDcgKzUzNCw2IEBAIEV4ZWNJ bml0TGltaXQoTGltaXQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogdm9pZAog RXhlY0VuZExpbWl0KExpbWl0U3RhdGUgKm5vZGUpCiB7Ci0JRXhlY0ZyZWVFeHByQ29udGV4dCgm bm9kZS0+cHMpOwogCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKIH0KIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1hdGVyaWFsLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYwppbmRleCAwOTYzMjY3OGIwLi43NTNlYTI4OTE1IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYwpAQCAtMjM5LDExICsyMzksNiBAQCBFeGVj SW5pdE1hdGVyaWFsKE1hdGVyaWFsICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykK IHZvaWQKIEV4ZWNFbmRNYXRlcmlhbChNYXRlcmlhbFN0YXRlICpub2RlKQogewotCS8qCi0JICog Y2xlYW4gb3V0IHRoZSB0dXBsZSB0YWJsZQotCSAqLwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNz LnNzX1NjYW5UdXBsZVNsb3QpOwotCiAJLyoKIAkgKiBSZWxlYXNlIHR1cGxlc3RvcmUgcmVzb3Vy Y2VzCiAJICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYwppbmRleCA0ZjA0MjY5ZTI2Li45 NGJmNDc5Mjg3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMKQEAgLTEwOTEsMTUgKzEw OTEsNiBAQCBFeGVjRW5kTWVtb2l6ZShNZW1vaXplU3RhdGUgKm5vZGUpCiAJLyogUmVtb3ZlIHRo ZSBjYWNoZSBjb250ZXh0ICovCiAJTWVtb3J5Q29udGV4dERlbGV0ZShub2RlLT50YWJsZUNvbnRl eHQpOwogCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7Ci0JLyog bXVzdCBkcm9wIHBvaW50ZXIgdG8gY2FjaGUgcmVzdWx0IHR1cGxlICovCi0JRXhlY0NsZWFyVHVw bGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQotCS8qCi0JICogZnJlZSBleHBy Y29udGV4dAotCSAqLwotCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKLQogCS8q CiAJICogc2h1dCBkb3duIHRoZSBzdWJwbGFuCiAJICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVy Z2Vqb2luLmMKaW5kZXggMDBmOTZkMDQ1ZS4uNjQ4ZmRkOWE1ZiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVNZXJnZWpvaW4uYwpAQCAtMTY0MiwxOCArMTY0Miw2IEBAIEV4ZWNFbmRNZXJnZUpvaW4o TWVyZ2VKb2luU3RhdGUgKm5vZGUpCiB7CiAJTUoxX3ByaW50ZigiRXhlY0VuZE1lcmdlSm9pbjog JXNcbiIsCiAJCQkgICAiZW5kaW5nIG5vZGUgcHJvY2Vzc2luZyIpOwotCi0JLyoKLQkgKiBGcmVl IHRoZSBleHByY29udGV4dAotCSAqLwotCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPmpzLnBz KTsKLQotCS8qCi0JICogY2xlYW4gb3V0IHRoZSB0dXBsZSB0YWJsZQotCSAqLwotCUV4ZWNDbGVh clR1cGxlKG5vZGUtPmpzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUo bm9kZS0+bWpfTWFya2VkVHVwbGVTbG90KTsKLQogCS8qCiAJICogc2h1dCBkb3duIHRoZSBzdWJw bGFucwogCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRh YmxlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCA1MDA1 ZDhjMGQxLi5kMjFhMTc4YWQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUu YwpAQCAtNDQ0NiwxNyArNDQ0Niw2IEBAIEV4ZWNFbmRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZVN0 YXRlICpub2RlKQogCQkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChub2RlLT5tdF9yb290 X3R1cGxlX3Nsb3QpOwogCX0KIAotCS8qCi0JICogRnJlZSB0aGUgZXhwcmNvbnRleHQKLQkgKi8K LQlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5wcyk7Ci0KLQkvKgotCSAqIGNsZWFuIG91dCB0 aGUgdHVwbGUgdGFibGUKLQkgKi8KLQlpZiAobm9kZS0+cHMucHNfUmVzdWx0VHVwbGVTbG90KQot CQlFeGVjQ2xlYXJUdXBsZShub2RlLT5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwotCiAJLyoKIAkg KiBUZXJtaW5hdGUgRVBRIGV4ZWN1dGlvbiBpZiBhY3RpdmUKIAkgKi8KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOYW1lZHR1cGxlc3RvcmVzY2FuLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlTmFtZWR0dXBsZXN0b3Jlc2Nhbi5jCmluZGV4IDQ2ODMyYWQ4MmYuLjM1 NDdkYzJiMTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOYW1lZHR1cGxl c3RvcmVzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5hbWVkdHVwbGVzdG9y ZXNjYW4uYwpAQCAtMTU1LDI4ICsxNTUsNiBAQCBFeGVjSW5pdE5hbWVkVHVwbGVzdG9yZVNjYW4o TmFtZWRUdXBsZXN0b3JlU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZwogCXJl dHVybiBzY2Fuc3RhdGU7CiB9CiAKLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqCQlFeGVjRW5kTmFtZWRUdXBsZXN0 b3JlU2NhbgotICoKLSAqCQlmcmVlcyBhbnkgc3RvcmFnZSBhbGxvY2F0ZWQgdGhyb3VnaCBDIHJv dXRpbmVzLgotICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQotICovCi12b2lkCi1FeGVjRW5kTmFtZWRUdXBsZXN0b3JlU2Nh bihOYW1lZFR1cGxlc3RvcmVTY2FuU3RhdGUgKm5vZGUpCi17Ci0JLyoKLQkgKiBGcmVlIGV4cHJj b250ZXh0Ci0JICovCi0JRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+c3MucHMpOwotCi0JLyoK LQkgKiBjbGVhbiBvdXQgdGhlIHR1cGxlIHRhYmxlCi0JICovCi0JaWYgKG5vZGUtPnNzLnBzLnBz X1Jlc3VsdFR1cGxlU2xvdCkKLQkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0 VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsK LX0KLQogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogICoJCUV4ZWNSZVNjYW5OYW1lZFR1cGxlc3RvcmVTY2FuCiAgKgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTmVzdGxvb3AuYwppbmRleCBiM2Q1MmU2OWVjLi5mYzhmODMzZDhi IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmVzdGxvb3AuYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmVzdGxvb3AuYwpAQCAtMzYzLDE3ICszNjMsNiBAQCBF eGVjRW5kTmVzdExvb3AoTmVzdExvb3BTdGF0ZSAqbm9kZSkKIHsKIAlOTDFfcHJpbnRmKCJFeGVj RW5kTmVzdExvb3A6ICVzXG4iLAogCQkJICAgImVuZGluZyBub2RlIHByb2Nlc3NpbmciKTsKLQot CS8qCi0JICogRnJlZSB0aGUgZXhwcmNvbnRleHQKLQkgKi8KLQlFeGVjRnJlZUV4cHJDb250ZXh0 KCZub2RlLT5qcy5wcyk7Ci0KLQkvKgotCSAqIGNsZWFuIG91dCB0aGUgdHVwbGUgdGFibGUKLQkg Ki8KLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5qcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwotCiAJ LyoKIAkgKiBjbG9zZSBkb3duIHN1YnBsYW5zCiAJICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVBy b2plY3RTZXQuYwppbmRleCBmNmZmM2RjNDRjLi5iNGJiZGM4OWIxIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVQcm9qZWN0U2V0LmMKQEAgLTMyMCwxNiArMzIwLDYgQEAgRXhlY0luaXRQcm9qZWN0 U2V0KFByb2plY3RTZXQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogdm9pZAog RXhlY0VuZFByb2plY3RTZXQoUHJvamVjdFNldFN0YXRlICpub2RlKQogewotCS8qCi0JICogRnJl ZSB0aGUgZXhwcmNvbnRleHQKLQkgKi8KLQlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5wcyk7 Ci0KLQkvKgotCSAqIGNsZWFuIG91dCB0aGUgdHVwbGUgdGFibGUKLQkgKi8KLQlFeGVjQ2xlYXJU dXBsZShub2RlLT5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwotCiAJLyoKIAkgKiBzaHV0IGRvd24g c3VicGxhbnMKIAkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1 bHQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYwppbmRleCA0MjE5NzEyZDMw Li5lOWY1NzMyZjMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0 LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jCkBAIC0yNDAsMTYgKzI0 MCw2IEBAIEV4ZWNJbml0UmVzdWx0KFJlc3VsdCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiB2b2lkCiBFeGVjRW5kUmVzdWx0KFJlc3VsdFN0YXRlICpub2RlKQogewotCS8qCi0J ICogRnJlZSB0aGUgZXhwcmNvbnRleHQKLQkgKi8KLQlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2Rl LT5wcyk7Ci0KLQkvKgotCSAqIGNsZWFuIG91dCB0aGUgdHVwbGUgdGFibGUKLQkgKi8KLQlFeGVj Q2xlYXJUdXBsZShub2RlLT5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwotCiAJLyoKIAkgKiBzaHV0 IGRvd24gc3VicGxhbnMKIAkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVTYW1wbGVzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5jCmlu ZGV4IGQ3ZTIyYjFkYmIuLjFhYTBlMmEyMDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVTYW1wbGVzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNhbXBs ZXNjYW4uYwpAQCAtMTg1LDIxICsxODUsMTAgQEAgRXhlY0VuZFNhbXBsZVNjYW4oU2FtcGxlU2Nh blN0YXRlICpub2RlKQogCS8qCiAJICogVGVsbCBzYW1wbGluZyBmdW5jdGlvbiB0aGF0IHdlIGZp bmlzaGVkIHRoZSBzY2FuLgogCSAqLworCUFzc2VydChub2RlLT50c21yb3V0aW5lKTsKIAlpZiAo bm9kZS0+dHNtcm91dGluZS0+RW5kU2FtcGxlU2NhbikKIAkJbm9kZS0+dHNtcm91dGluZS0+RW5k U2FtcGxlU2Nhbihub2RlKTsKIAotCS8qCi0JICogRnJlZSB0aGUgZXhwcmNvbnRleHQKLQkgKi8K LQlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5zcy5wcyk7Ci0KLQkvKgotCSAqIGNsZWFuIG91 dCB0aGUgdHVwbGUgdGFibGUKLQkgKi8KLQlpZiAobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVT bG90KQotCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwot CUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwotCiAJLyoKIAkgKiBj bG9zZSBoZWFwIHNjYW4KIAkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVTZXFzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCmluZGV4IDRk YTBmMjhmN2IuLjQ5YTU5MzNhZmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVTZXFzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwpAQCAt MTkwLDE4ICsxOTAsNiBAQCBFeGVjRW5kU2VxU2NhbihTZXFTY2FuU3RhdGUgKm5vZGUpCiAJICov CiAJc2NhbkRlc2MgPSBub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2M7CiAKLQkvKgotCSAqIEZy ZWUgdGhlIGV4cHJjb250ZXh0Ci0JICovCi0JRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+c3Mu cHMpOwotCi0JLyoKLQkgKiBjbGVhbiBvdXQgdGhlIHR1cGxlIHRhYmxlCi0JICovCi0JaWYgKG5v ZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKLQkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Mu cHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2Fu VHVwbGVTbG90KTsKLQogCS8qCiAJICogY2xvc2UgaGVhcCBzY2FuCiAJICovCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVTZXRPcC5jCmluZGV4IDRiYzI0MDZiODkuLjk4YzFiODRkNDMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRPcC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVTZXRPcC5jCkBAIC01ODIsMTMgKzU4Miw5IEBAIEV4ZWNJbml0U2V0T3AoU2V0T3AgKm5v ZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogdm9pZAogRXhlY0VuZFNldE9wKFNldE9w U3RhdGUgKm5vZGUpCiB7Ci0JLyogY2xlYW4gdXAgdHVwbGUgdGFibGUgKi8KLQlFeGVjQ2xlYXJU dXBsZShub2RlLT5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwotCiAJLyogZnJlZSBzdWJzaWRpYXJ5 IHN0dWZmIGluY2x1ZGluZyBoYXNodGFibGUgKi8KIAlpZiAobm9kZS0+dGFibGVDb250ZXh0KQog CQlNZW1vcnlDb250ZXh0RGVsZXRlKG5vZGUtPnRhYmxlQ29udGV4dCk7Ci0JRXhlY0ZyZWVFeHBy Q29udGV4dCgmbm9kZS0+cHMpOwogCiAJRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkp OwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMKaW5kZXggYzZjNzJjNmU2Ny4uZWVhN2YyYWUxNSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlU29ydC5jCkBAIC0zMDMsMTMgKzMwMyw2IEBAIEV4ZWNFbmRTb3J0 KFNvcnRTdGF0ZSAqbm9kZSkKIAlTTzFfcHJpbnRmKCJFeGVjRW5kU29ydDogJXNcbiIsCiAJCQkg ICAic2h1dHRpbmcgZG93biBzb3J0IG5vZGUiKTsKIAotCS8qCi0JICogY2xlYW4gb3V0IHRoZSB0 dXBsZSB0YWJsZQotCSAqLwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNs b3QpOwotCS8qIG11c3QgZHJvcCBwb2ludGVyIHRvIHNvcnQgcmVzdWx0IHR1cGxlICovCi0JRXhl Y0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQogCS8qCiAJICog UmVsZWFzZSB0dXBsZXNvcnQgcmVzb3VyY2VzCiAJICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl U3VicXVlcnlzY2FuLmMKaW5kZXggNDI0NzFiZmMwNC4uMWVlNjI5NTY2MCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYwpAQCAtMTY3LDE4ICsxNjcsNiBAQCBFeGVjSW5p dFN1YnF1ZXJ5U2NhbihTdWJxdWVyeVNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZs YWdzKQogdm9pZAogRXhlY0VuZFN1YnF1ZXJ5U2NhbihTdWJxdWVyeVNjYW5TdGF0ZSAqbm9kZSkK IHsKLQkvKgotCSAqIEZyZWUgdGhlIGV4cHJjb250ZXh0Ci0JICovCi0JRXhlY0ZyZWVFeHByQ29u dGV4dCgmbm9kZS0+c3MucHMpOwotCi0JLyoKLQkgKiBjbGVhbiBvdXQgdGhlIHVwcGVyIHR1cGxl IHRhYmxlCi0JICovCi0JaWYgKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKLQkJRXhl Y0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJU dXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKLQogCS8qCiAJICogY2xvc2UgZG93biBz dWJxdWVyeQogCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRhYmxl RnVuY3NjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUYWJsZUZ1bmNzY2FuLmMKaW5k ZXggNzkxY2JkMjM3Mi4uYTYwZGNkNDk0MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVRhYmxlRnVuY3NjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGFi bGVGdW5jc2Nhbi5jCkBAIC0yMTMsMTggKzIxMyw2IEBAIEV4ZWNJbml0VGFibGVGdW5jU2NhbihU YWJsZUZ1bmNTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIHZvaWQKIEV4 ZWNFbmRUYWJsZUZ1bmNTY2FuKFRhYmxlRnVuY1NjYW5TdGF0ZSAqbm9kZSkKIHsKLQkvKgotCSAq IEZyZWUgdGhlIGV4cHJjb250ZXh0Ci0JICovCi0JRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+ c3MucHMpOwotCi0JLyoKLQkgKiBjbGVhbiBvdXQgdGhlIHR1cGxlIHRhYmxlCi0JICovCi0JaWYg KG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKLQkJRXhlY0NsZWFyVHVwbGUobm9kZS0+ c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19T Y2FuVHVwbGVTbG90KTsKLQogCS8qCiAJICogUmVsZWFzZSB0dXBsZXN0b3JlIHJlc291cmNlcwog CSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jCmluZGV4IDIxMjRjNTVl ZjUuLmRhNjIyZDNmNWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRy YW5nZXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMK QEAgLTMzMSwxOCArMzMxLDYgQEAgRXhlY0VuZFRpZFJhbmdlU2NhbihUaWRSYW5nZVNjYW5TdGF0 ZSAqbm9kZSkKIAogCWlmIChzY2FuICE9IE5VTEwpCiAJCXRhYmxlX2VuZHNjYW4oc2Nhbik7Ci0K LQkvKgotCSAqIEZyZWUgdGhlIGV4cHJjb250ZXh0Ci0JICovCi0JRXhlY0ZyZWVFeHByQ29udGV4 dCgmbm9kZS0+c3MucHMpOwotCi0JLyoKLQkgKiBjbGVhciBvdXQgdHVwbGUgdGFibGUgc2xvdHMK LQkgKi8KLQlpZiAobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KQotCQlFeGVjQ2xlYXJU dXBsZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwotCUV4ZWNDbGVhclR1cGxlKG5v ZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVRpZHNjYW4uYwppbmRleCA4NjJiZDAzMzBiLi4xNTA1NTA3N2QwIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVUaWRzY2FuLmMKQEAgLTQ3MiwxOCArNDcyLDYgQEAgRXhlY0VuZFRpZFNjYW4oVGlk U2NhblN0YXRlICpub2RlKQogewogCWlmIChub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MpCiAJ CXRhYmxlX2VuZHNjYW4obm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjKTsKLQotCS8qCi0JICog RnJlZSB0aGUgZXhwcmNvbnRleHQKLQkgKi8KLQlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5z cy5wcyk7Ci0KLQkvKgotCSAqIGNsZWFyIG91dCB0dXBsZSB0YWJsZSBzbG90cwotCSAqLwotCWlm IChub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpCi0JCUV4ZWNDbGVhclR1cGxlKG5vZGUt PnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3Nf U2NhblR1cGxlU2xvdCk7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVVbmlxdWUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUu YwppbmRleCA0NTAzNWQ3NGZhLi4wMWY5NTExOTdjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlVW5pcXVlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1 ZS5jCkBAIC0xNjgsMTEgKzE2OCw2IEBAIEV4ZWNJbml0VW5pcXVlKFVuaXF1ZSAqbm9kZSwgRVN0 YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiB2b2lkCiBFeGVjRW5kVW5pcXVlKFVuaXF1ZVN0YXRl ICpub2RlKQogewotCS8qIGNsZWFuIHVwIHR1cGxlIHRhYmxlICovCi0JRXhlY0NsZWFyVHVwbGUo bm9kZS0+cHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQotCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5v ZGUtPnBzKTsKLQogCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKIH0KIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVZhbHVlc3NjYW4uYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVWYWx1ZXNzY2FuLmMKaW5kZXggMzJhY2U2MzAxNy4uZmJmYjA2N2Yz YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVZhbHVlc3NjYW4uYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVmFsdWVzc2Nhbi5jCkBAIC0zMTksMzAgKzMxOSw2 IEBAIEV4ZWNJbml0VmFsdWVzU2NhbihWYWx1ZXNTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncykKIAlyZXR1cm4gc2NhbnN0YXRlOwogfQogCi0vKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKgkJRXhl Y0VuZFZhbHVlc1NjYW4KLSAqCi0gKgkJZnJlZXMgYW55IHN0b3JhZ2UgYWxsb2NhdGVkIHRocm91 Z2ggQyByb3V0aW5lcy4KLSAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqLwotdm9pZAotRXhlY0VuZFZhbHVlc1NjYW4o VmFsdWVzU2NhblN0YXRlICpub2RlKQotewotCS8qCi0JICogRnJlZSBib3RoIGV4cHJjb250ZXh0 cwotCSAqLwotCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKLQlub2RlLT5zcy5w cy5wc19FeHByQ29udGV4dCA9IG5vZGUtPnJvd2NvbnRleHQ7Ci0JRXhlY0ZyZWVFeHByQ29udGV4 dCgmbm9kZS0+c3MucHMpOwotCi0JLyoKLQkgKiBjbGVhbiBvdXQgdGhlIHR1cGxlIHRhYmxlCi0J ICovCi0JaWYgKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKLQkJRXhlY0NsZWFyVHVw bGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2Rl LT5zcy5zc19TY2FuVHVwbGVTbG90KTsKLX0KLQogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4ZWNSZVNjYW5W YWx1ZXNTY2FuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRv d0FnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCmluZGV4IDMxMGFj MjNlM2EuLjc3NzI0YTZkYWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVX aW5kb3dBZ2cuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKQEAg LTI2ODYsMjMgKzI2ODYsNiBAQCBFeGVjRW5kV2luZG93QWdnKFdpbmRvd0FnZ1N0YXRlICpub2Rl KQogCiAJcmVsZWFzZV9wYXJ0aXRpb24obm9kZSk7CiAKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5z cy5zc19TY2FuVHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5maXJzdF9wYXJ0X3Ns b3QpOwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPmFnZ19yb3dfc2xvdCk7Ci0JRXhlY0NsZWFyVHVw bGUobm9kZS0+dGVtcF9zbG90XzEpOwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnRlbXBfc2xvdF8y KTsKLQlpZiAobm9kZS0+ZnJhbWVoZWFkX3Nsb3QpCi0JCUV4ZWNDbGVhclR1cGxlKG5vZGUtPmZy YW1laGVhZF9zbG90KTsKLQlpZiAobm9kZS0+ZnJhbWV0YWlsX3Nsb3QpCi0JCUV4ZWNDbGVhclR1 cGxlKG5vZGUtPmZyYW1ldGFpbF9zbG90KTsKLQotCS8qCi0JICogRnJlZSBib3RoIHRoZSBleHBy IGNvbnRleHRzLgotCSAqLwotCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKLQlu b2RlLT5zcy5wcy5wc19FeHByQ29udGV4dCA9IG5vZGUtPnRtcGNvbnRleHQ7Ci0JRXhlY0ZyZWVF eHByQ29udGV4dCgmbm9kZS0+c3MucHMpOwotCiAJZm9yIChpID0gMDsgaSA8IG5vZGUtPm51bWFn Z3M7IGkrKykKIAl7CiAJCWlmIChub2RlLT5wZXJhZ2dbaV0uYWdnY29udGV4dCAhPSBub2RlLT5h Z2djb250ZXh0KQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdvcmt0YWJs ZXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXb3JrdGFibGVzY2FuLmMKaW5kZXgg MGMxMzQ0ODIzNi4uMTdhNTQ4ODY1ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVdvcmt0YWJsZXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV29ya3Rh Ymxlc2Nhbi5jCkBAIC0xODEsMjggKzE4MSw2IEBAIEV4ZWNJbml0V29ya1RhYmxlU2NhbihXb3Jr VGFibGVTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlyZXR1cm4gc2Nh bnN0YXRlOwogfQogCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKgkJRXhlY0VuZFdvcmtUYWJsZVNjYW4KLSAqCi0g KgkJZnJlZXMgYW55IHN0b3JhZ2UgYWxsb2NhdGVkIHRocm91Z2ggQyByb3V0aW5lcy4KLSAqIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KLSAqLwotdm9pZAotRXhlY0VuZFdvcmtUYWJsZVNjYW4oV29ya1RhYmxlU2NhblN0YXRl ICpub2RlKQotewotCS8qCi0JICogRnJlZSBleHByY29udGV4dAotCSAqLwotCUV4ZWNGcmVlRXhw ckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKLQotCS8qCi0JICogY2xlYW4gb3V0IHRoZSB0dXBsZSB0 YWJsZQotCSAqLwotCWlmIChub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpCi0JCUV4ZWND bGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVw bGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7Ci19Ci0KIC8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVj UmVTY2FuV29ya1RhYmxlU2NhbgogICoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L2V4ZWN1dG9yLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCmluZGV4IGM2Nzdl NDkwZDcuLmFlZWJlMGUwZmYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1 dG9yLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaApAQCAtNTY5LDcgKzU2 OSw2IEBAIGV4dGVybiB2b2lkIEV4ZWNBc3NpZ25Qcm9qZWN0aW9uSW5mbyhQbGFuU3RhdGUgKnBs YW5zdGF0ZSwKIAkJCQkJCQkJCSBUdXBsZURlc2MgaW5wdXREZXNjKTsKIGV4dGVybiB2b2lkIEV4 ZWNDb25kaXRpb25hbEFzc2lnblByb2plY3Rpb25JbmZvKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAog CQkJCQkJCQkJCQkJVHVwbGVEZXNjIGlucHV0RGVzYywgaW50IHZhcm5vKTsKLWV4dGVybiB2b2lk IEV4ZWNGcmVlRXhwckNvbnRleHQoUGxhblN0YXRlICpwbGFuc3RhdGUpOwogZXh0ZXJuIHZvaWQg RXhlY0Fzc2lnblNjYW5UeXBlKFNjYW5TdGF0ZSAqc2NhbnN0YXRlLCBUdXBsZURlc2MgdHVwRGVz Yyk7CiBleHRlcm4gdm9pZCBFeGVjQ3JlYXRlU2NhblNsb3RGcm9tT3V0ZXJQbGFuKEVTdGF0ZSAq ZXN0YXRlLAogCQkJCQkJCQkJCQlTY2FuU3RhdGUgKnNjYW5zdGF0ZSwKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVOYW1lZHR1cGxlc3RvcmVzY2FuLmggYi9zcmMvaW5jbHVk ZS9leGVjdXRvci9ub2RlTmFtZWR0dXBsZXN0b3Jlc2Nhbi5oCmluZGV4IDNmZjY4NzAyM2EuLjlk ODAyMzZmZTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVOYW1lZHR1cGxl c3RvcmVzY2FuLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZU5hbWVkdHVwbGVzdG9y ZXNjYW4uaApAQCAtMTcsNyArMTcsNiBAQAogI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgog CiBleHRlcm4gTmFtZWRUdXBsZXN0b3JlU2NhblN0YXRlICpFeGVjSW5pdE5hbWVkVHVwbGVzdG9y ZVNjYW4oTmFtZWRUdXBsZXN0b3JlU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpOwotZXh0ZXJuIHZvaWQgRXhlY0VuZE5hbWVkVHVwbGVzdG9yZVNjYW4oTmFtZWRUdXBsZXN0 b3JlU2NhblN0YXRlICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNSZVNjYW5OYW1lZFR1cGxlc3Rv cmVTY2FuKE5hbWVkVHVwbGVzdG9yZVNjYW5TdGF0ZSAqbm9kZSk7CiAKICNlbmRpZgkJCQkJCQkv KiBOT0RFTkFNRURUVVBMRVNUT1JFU0NBTl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9l eGVjdXRvci9ub2RlVmFsdWVzc2Nhbi5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZVZhbHVl c3NjYW4uaAppbmRleCBhNTJmYTY3OGRmLi5mZTNmMDQzOTUxIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9leGVjdXRvci9ub2RlVmFsdWVzc2Nhbi5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L25vZGVWYWx1ZXNzY2FuLmgKQEAgLTE3LDcgKzE3LDYgQEAKICNpbmNsdWRlICJub2Rlcy9leGVj bm9kZXMuaCIKIAogZXh0ZXJuIFZhbHVlc1NjYW5TdGF0ZSAqRXhlY0luaXRWYWx1ZXNTY2FuKFZh bHVlc1NjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKTsKLWV4dGVybiB2b2lk IEV4ZWNFbmRWYWx1ZXNTY2FuKFZhbHVlc1NjYW5TdGF0ZSAqbm9kZSk7CiBleHRlcm4gdm9pZCBF eGVjUmVTY2FuVmFsdWVzU2NhbihWYWx1ZXNTY2FuU3RhdGUgKm5vZGUpOwogCiAjZW5kaWYJCQkJ CQkJLyogTk9ERVZBTFVFU1NDQU5fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0 b3Ivbm9kZVdvcmt0YWJsZXNjYW4uaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVXb3JrdGFi bGVzY2FuLmgKaW5kZXggZTU1M2E0NTNmMy4uZjMxYjIyY2VjNCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvZXhlY3V0b3Ivbm9kZVdvcmt0YWJsZXNjYW4uaAorKysgYi9zcmMvaW5jbHVkZS9leGVj dXRvci9ub2RlV29ya3RhYmxlc2Nhbi5oCkBAIC0xNyw3ICsxNyw2IEBACiAjaW5jbHVkZSAibm9k ZXMvZXhlY25vZGVzLmgiCiAKIGV4dGVybiBXb3JrVGFibGVTY2FuU3RhdGUgKkV4ZWNJbml0V29y a1RhYmxlU2NhbihXb3JrVGFibGVTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFn cyk7Ci1leHRlcm4gdm9pZCBFeGVjRW5kV29ya1RhYmxlU2NhbihXb3JrVGFibGVTY2FuU3RhdGUg Km5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1JlU2NhbldvcmtUYWJsZVNjYW4oV29ya1RhYmxlU2Nh blN0YXRlICpub2RlKTsKIAogI2VuZGlmCQkJCQkJCS8qIE5PREVXT1JLVEFCTEVTQ0FOX0ggKi8K LS0gCjIuMzUuMwoK --000000000000f8d8750604975ca4 Content-Type: application/octet-stream; name="v46-0002-Check-pointer-NULLness-before-cleanup-in-ExecEnd.patch" Content-Disposition: attachment; filename="v46-0002-Check-pointer-NULLness-before-cleanup-in-ExecEnd.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lm5z2oe96 RnJvbSAzZGZlODFmNDhhNThhOTJlOGM4MTQ2OTYwMGQzNTAyZjE4YThiMTM3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IEZyaSwgMSBTZXAgMjAyMyAyMjowNTozNSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ2 IDIvOF0gQ2hlY2sgcG9pbnRlciBOVUxMbmVzcyBiZWZvcmUgY2xlYW51cCBpbiBFeGVjRW5kKgog cm91dGluZXMKCk1hbnkgcm91dGluZXMgYWxyZWFkeSBwZXJmb3JtIHRoaXMgY2hlY2ssIGJ1dCBh IGZldyBpbnN0YW5jZXMgcmVtYWluLgoKQ3VycmVudGx5LCB0aGVzZSBOVUxMbmVzcyBjaGVja3Mg bWlnaHQgc2VlbSByZWR1bmRhbnQgc2luY2UgRXhlY0VuZCoKcm91dGluZXMgb3BlcmF0ZSB1bmRl ciB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoZWlyIG1hdGNoaW5nIEV4ZWNJbml0Kgpyb3V0aW5lIHdv dWxkIGhhdmUgZnVsbHkgZXhlY3V0ZWQsIGVuc3VyaW5nIHBvaW50ZXJzIGFyZSBzZXQuIEhvd2V2 ZXIsCmEgZm9ydGhjb21pbmcgcGF0Y2ggd2lsbCBtb2RpZnkgRXhlY0luaXQqIHJvdXRpbmVzIHRv IHNvbWV0aW1lcyBleGl0CmVhcmx5LCBwb3RlbnRpYWxseSBsZWF2aW5nIHNvbWUgcG9pbnRlcnMg aW4gYW4gdW5kZXRlcm1pbmVkIHN0YXRlLgotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVB Z2cuYyAgICAgICAgICAgIHwgIDMgKystCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFw SGVhcHNjYW4uYyB8ICAzICsrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZvcmVpZ25zY2Fu LmMgICAgfCAyMSArKysrKysrKy0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZU1lbW9pemUuYyAgICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJz aXZldW5pb24uYyB8ICA2ICsrKystLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0Fn Zy5jICAgICAgfCAyNCArKysrKysrKysrKysrKystLS0tLS0tLQogNiBmaWxlcyBjaGFuZ2VkLCAz MyBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMKaW5k ZXggZjE1NGYyODkwMi4uYWFjOWU5ZmM4MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUFnZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYwpAQCAtMzE1 MCw3ICszMTUwLDggQEAgaGFzaGFnZ19yZXNldF9zcGlsbF9zdGF0ZShBZ2dTdGF0ZSAqYWdnc3Rh dGUpCiAJfQogCiAJLyogZnJlZSBiYXRjaGVzICovCi0JbGlzdF9mcmVlX2RlZXAoYWdnc3RhdGUt Pmhhc2hfYmF0Y2hlcyk7CisJaWYgKGFnZ3N0YXRlLT5oYXNoX2JhdGNoZXMpCisJCWxpc3RfZnJl ZV9kZWVwKGFnZ3N0YXRlLT5oYXNoX2JhdGNoZXMpOwogCWFnZ3N0YXRlLT5oYXNoX2JhdGNoZXMg PSBOSUw7CiAKIAkvKiBjbG9zZSB0YXBlIHNldCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl Qml0bWFwSGVhcHNjYW4uYwppbmRleCAyZGIwYWNmYzc2Li5mZmE1MWMwNmI0IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYwpAQCAtNjgxLDcgKzY4MSw4IEBAIEV4 ZWNFbmRCaXRtYXBIZWFwU2NhbihCaXRtYXBIZWFwU2NhblN0YXRlICpub2RlKQogCS8qCiAJICog Y2xvc2UgaGVhcCBzY2FuCiAJICovCi0JdGFibGVfZW5kc2NhbihzY2FuRGVzYyk7CisJaWYgKHNj YW5EZXNjKQorCQl0YWJsZV9lbmRzY2FuKHNjYW5EZXNjKTsKIH0KIAogLyogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZvcmVpZ25zY2FuLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYwppbmRleCBjMjEzOWFjY2EwLi5kNWFhYTk4 M2Y3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYwpAQCAtMzAxLDI1ICsz MDEsMjAgQEAgRXhlY0VuZEZvcmVpZ25TY2FuKEZvcmVpZ25TY2FuU3RhdGUgKm5vZGUpCiAJRVN0 YXRlCSAgICplc3RhdGUgPSBub2RlLT5zcy5wcy5zdGF0ZTsKIAogCS8qIExldCB0aGUgRkRXIHNo dXQgZG93biAqLwotCWlmIChwbGFuLT5vcGVyYXRpb24gIT0gQ01EX1NFTEVDVCkKKwlpZiAobm9k ZS0+ZmR3cm91dGluZSkKIAl7Ci0JCWlmIChlc3RhdGUtPmVzX2VwcV9hY3RpdmUgPT0gTlVMTCkK LQkJCW5vZGUtPmZkd3JvdXRpbmUtPkVuZERpcmVjdE1vZGlmeShub2RlKTsKKwkJaWYgKHBsYW4t Pm9wZXJhdGlvbiAhPSBDTURfU0VMRUNUKQorCQl7CisJCQlpZiAoZXN0YXRlLT5lc19lcHFfYWN0 aXZlID09IE5VTEwpCisJCQkJbm9kZS0+ZmR3cm91dGluZS0+RW5kRGlyZWN0TW9kaWZ5KG5vZGUp OworCQl9CisJCWVsc2UKKwkJCW5vZGUtPmZkd3JvdXRpbmUtPkVuZEZvcmVpZ25TY2FuKG5vZGUp OwogCX0KLQllbHNlCi0JCW5vZGUtPmZkd3JvdXRpbmUtPkVuZEZvcmVpZ25TY2FuKG5vZGUpOwog CiAJLyogU2h1dCBkb3duIGFueSBvdXRlciBwbGFuLiAqLwogCWlmIChvdXRlclBsYW5TdGF0ZShu b2RlKSkKIAkJRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOwotCi0JLyogRnJlZSB0 aGUgZXhwcmNvbnRleHQgKi8KLQlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5zcy5wcyk7Ci0K LQkvKiBjbGVhbiBvdXQgdGhlIHR1cGxlIHRhYmxlICovCi0JaWYgKG5vZGUtPnNzLnBzLnBzX1Jl c3VsdFR1cGxlU2xvdCkKLQkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVw bGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKIH0K IAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9p emUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMKaW5kZXggOTRiZjQ3OTI4 Ny4uNTM1MmNhMTBjOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9p emUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jCkBAIC0xMDQzLDYg KzEwNDMsNyBAQCBFeGVjRW5kTWVtb2l6ZShNZW1vaXplU3RhdGUgKm5vZGUpCiB7CiAjaWZkZWYg VVNFX0FTU0VSVF9DSEVDS0lORwogCS8qIFZhbGlkYXRlIHRoZSBtZW1vcnkgYWNjb3VudGluZyBj b2RlIGlzIGNvcnJlY3QgaW4gYXNzZXJ0IGJ1aWxkcy4gKi8KKwlpZiAobm9kZS0+aGFzaHRhYmxl KQogCXsKIAkJaW50CQkJY291bnQ7CiAJCXVpbnQ2NAkJbWVtID0gMDsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMKaW5kZXggZTc4MTAwMzkzNC4uM2RmY2I0Y2FmYiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMKQEAgLTI3Miw4ICsy NzIsMTAgQEAgdm9pZAogRXhlY0VuZFJlY3Vyc2l2ZVVuaW9uKFJlY3Vyc2l2ZVVuaW9uU3RhdGUg Km5vZGUpCiB7CiAJLyogUmVsZWFzZSB0dXBsZXN0b3JlcyAqLwotCXR1cGxlc3RvcmVfZW5kKG5v ZGUtPndvcmtpbmdfdGFibGUpOwotCXR1cGxlc3RvcmVfZW5kKG5vZGUtPmludGVybWVkaWF0ZV90 YWJsZSk7CisJaWYgKG5vZGUtPndvcmtpbmdfdGFibGUpCisJCXR1cGxlc3RvcmVfZW5kKG5vZGUt PndvcmtpbmdfdGFibGUpOworCWlmIChub2RlLT5pbnRlcm1lZGlhdGVfdGFibGUpCisJCXR1cGxl c3RvcmVfZW5kKG5vZGUtPmludGVybWVkaWF0ZV90YWJsZSk7CiAKIAkvKiBmcmVlIHN1YnNpZGlh cnkgc3R1ZmYgaW5jbHVkaW5nIGhhc2h0YWJsZSAqLwogCWlmIChub2RlLT50ZW1wQ29udGV4dCkK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYwppbmRleCA3NzcyNGE2ZGFhLi4zODQ5ZDJm ODQ3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCkBAIC0xMzUxLDExICsxMzUx LDE0IEBAIHJlbGVhc2VfcGFydGl0aW9uKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSkKIAkgKiBh bnkgYWdncmVnYXRlIHRlbXAgZGF0YSkuICBXZSBkb24ndCByZWx5IG9uIHJldGFpbCBwZnJlZSBi ZWNhdXNlIHNvbWUKIAkgKiBhZ2dyZWdhdGVzIG1pZ2h0IGhhdmUgYWxsb2NhdGVkIGRhdGEgd2Ug ZG9uJ3QgaGF2ZSBkaXJlY3QgcG9pbnRlcnMgdG8uCiAJICovCi0JTWVtb3J5Q29udGV4dFJlc2V0 QW5kRGVsZXRlQ2hpbGRyZW4od2luc3RhdGUtPnBhcnRjb250ZXh0KTsKLQlNZW1vcnlDb250ZXh0 UmVzZXRBbmREZWxldGVDaGlsZHJlbih3aW5zdGF0ZS0+YWdnY29udGV4dCk7CisJaWYgKHdpbnN0 YXRlLT5wYXJ0Y29udGV4dCkKKwkJTWVtb3J5Q29udGV4dFJlc2V0QW5kRGVsZXRlQ2hpbGRyZW4o d2luc3RhdGUtPnBhcnRjb250ZXh0KTsKKwlpZiAod2luc3RhdGUtPmFnZ2NvbnRleHQpCisJCU1l bW9yeUNvbnRleHRSZXNldEFuZERlbGV0ZUNoaWxkcmVuKHdpbnN0YXRlLT5hZ2djb250ZXh0KTsK IAlmb3IgKGkgPSAwOyBpIDwgd2luc3RhdGUtPm51bWFnZ3M7IGkrKykKIAl7Ci0JCWlmICh3aW5z dGF0ZS0+cGVyYWdnW2ldLmFnZ2NvbnRleHQgIT0gd2luc3RhdGUtPmFnZ2NvbnRleHQpCisJCWlm ICh3aW5zdGF0ZS0+cGVyYWdnW2ldLmFnZ2NvbnRleHQgJiYKKwkJCXdpbnN0YXRlLT5wZXJhZ2db aV0uYWdnY29udGV4dCAhPSB3aW5zdGF0ZS0+YWdnY29udGV4dCkKIAkJCU1lbW9yeUNvbnRleHRS ZXNldEFuZERlbGV0ZUNoaWxkcmVuKHdpbnN0YXRlLT5wZXJhZ2dbaV0uYWdnY29udGV4dCk7CiAJ fQogCkBAIC0yNjg4LDE0ICsyNjkxLDE5IEBAIEV4ZWNFbmRXaW5kb3dBZ2coV2luZG93QWdnU3Rh dGUgKm5vZGUpCiAKIAlmb3IgKGkgPSAwOyBpIDwgbm9kZS0+bnVtYWdnczsgaSsrKQogCXsKLQkJ aWYgKG5vZGUtPnBlcmFnZ1tpXS5hZ2djb250ZXh0ICE9IG5vZGUtPmFnZ2NvbnRleHQpCisJCWlm IChub2RlLT5wZXJhZ2dbaV0uYWdnY29udGV4dCAmJgorCQkJbm9kZS0+cGVyYWdnW2ldLmFnZ2Nv bnRleHQgIT0gbm9kZS0+YWdnY29udGV4dCkKIAkJCU1lbW9yeUNvbnRleHREZWxldGUobm9kZS0+ cGVyYWdnW2ldLmFnZ2NvbnRleHQpOwogCX0KLQlNZW1vcnlDb250ZXh0RGVsZXRlKG5vZGUtPnBh cnRjb250ZXh0KTsKLQlNZW1vcnlDb250ZXh0RGVsZXRlKG5vZGUtPmFnZ2NvbnRleHQpOworCWlm IChub2RlLT5wYXJ0Y29udGV4dCkKKwkJTWVtb3J5Q29udGV4dERlbGV0ZShub2RlLT5wYXJ0Y29u dGV4dCk7CisJaWYgKG5vZGUtPmFnZ2NvbnRleHQpCisJCU1lbW9yeUNvbnRleHREZWxldGUobm9k ZS0+YWdnY29udGV4dCk7CiAKLQlwZnJlZShub2RlLT5wZXJmdW5jKTsKLQlwZnJlZShub2RlLT5w ZXJhZ2cpOworCWlmIChub2RlLT5wZXJmdW5jKQorCQlwZnJlZShub2RlLT5wZXJmdW5jKTsKKwlp ZiAobm9kZS0+cGVyYWdnKQorCQlwZnJlZShub2RlLT5wZXJhZ2cpOwogCiAJb3V0ZXJQbGFuID0g b3V0ZXJQbGFuU3RhdGUobm9kZSk7CiAJRXhlY0VuZE5vZGUob3V0ZXJQbGFuKTsKLS0gCjIuMzUu MwoK --000000000000f8d8750604975ca4--