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 1tarRk-005pmK-Ry for pgsql-hackers@arkaria.postgresql.org; Thu, 23 Jan 2025 07:16:13 +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 1tarRj-00BWBW-UE for pgsql-hackers@arkaria.postgresql.org; Thu, 23 Jan 2025 07:16:11 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tarRi-00BWAq-Oy for pgsql-hackers@lists.postgresql.org; Thu, 23 Jan 2025 07:16:11 +0000 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tarRe-0013CW-1g for pgsql-hackers@postgresql.org; Thu, 23 Jan 2025 07:16:09 +0000 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-2166360285dso9090105ad.1 for ; Wed, 22 Jan 2025 23:16:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1737616566; x=1738221366; 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=/3KBybeF4rh4+wXg06UbDfQaEeX9ET10js4NKYYzI/g=; b=YmzlbZXwiC/xsYb6Brm7BTDiIZjilux4FKlk5eTv/aNUBasfmgCy3yLsFxmaAu4kTm L/GVeEGtFR9QylfMPdUqL+fdH0FUBfsOibIm2k5Tk+pRnoi73eBcCg3h4JtGebc7k8OQ XwImesXKHw9Cd41nsDoqnnPcFDfPCdbKeC9FQN6pQ2Gj8CnU4RYbwex+XkV28zmrH8of WFkYViBY44adAMw6F0j9x69Anq3CSmUU61wviQb10AJNtTYfML44j36dq4zMRM1Wmtja 8lkBzCl37GI75hlOVH5o6yUsULecSfcDyp233ufUJBrc8e8gvbJqH44ds/gjCzjg46Bo lIGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737616566; x=1738221366; 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=/3KBybeF4rh4+wXg06UbDfQaEeX9ET10js4NKYYzI/g=; b=qShLDdhbzstia68KFadjwJXRB0fNoVimx+fZkgO3ASyKkr+sGGXYi+WTUgUFWS8Ull su+DbPN3RgAERAX4PDXdewkgQzn+xrPTRgJnGnxNfy2V/YQB/bHjnNOHjdutcvZUhBEY fLFEKRaUeFVdj9SZaYJuOhXtuy9Ao25PcIAFxjBqdBx5yjmcVywNGQgFOIOwhJwSLafx LQNFQkWt53yOpbqkLE5WT95FOi2SAPHCUQWz+tcBT4Yz41LY3G+ArKeygttL4whsQ7Xl xgcUZgSj8QE2owsyRmBgSkKIgxPEzIzlEkNr4ReWSu+wl4JkiCjDd2N4cgg4xcldUln4 8QEg== X-Forwarded-Encrypted: i=1; AJvYcCXz/AhHwUY3uBYhkAuP18cilM2leHpmW7W8xvW9NW5sQtP+upW7f5oUjDJA0MN/IjBLiaLOTWMAMwfLXM0d@postgresql.org X-Gm-Message-State: AOJu0YyKrKXYoNPnkiErcqLeK7ibAiUqIHf9H9uslWNRaDg4K6Bz2fyh neAj0bX96SXLLDwdCahbO2UhJ7DfcpxE2Gxtozmdl/89T2jHwnwuDZJwnkrjn/BFO343TVj8Gaq LEdSrTGm55rqgO2MqDbVycTQdiRU= X-Gm-Gg: ASbGncuP4DDqi4fhvFWITZFtGspLkHHJ3nDTNWefrJpOTvtVydKYWSQjmkVaarWt7fg uIkIm2wxmc/f3xy4jcAOgpCSSU5U5efBOr7IiFNgGEHZsjOiRb355QB0/7upp8kk= X-Google-Smtp-Source: AGHT+IGXnxSIqjwVMGeVxfNSdOkJOCU68rqnJ2huLMPvEC+BhrPmcOfS9mE+zWhtA/ggzjDG6ryEnBGPQucmsKBt74w= X-Received: by 2002:a05:6a20:2450:b0:1e1:aef4:9ce8 with SMTP id adf61e73a8af0-1eb215902e2mr43000299637.28.1737616565848; Wed, 22 Jan 2025 23:16:05 -0800 (PST) MIME-Version: 1.0 References: <54c35fb9-da3a-4754-ab8c-46ed0b612465@vondra.me> <684c70d7-180e-461d-9377-600c2db581ba@vondra.me> In-Reply-To: From: Amit Langote Date: Thu, 23 Jan 2025 16:15:48 +0900 X-Gm-Features: AbW1kvbE6kIHFAUpSuYQOIu35hTQ7wxcxpC4_RTub4JPCyfcgJ5ODp1woIChlN0 Message-ID: Subject: Re: generic plans and "initial" pruning To: Tomas Vondra Cc: Robert Haas , Alvaro Herrera , Andres Freund , Daniel Gustafsson , David Rowley , PostgreSQL Hackers , Thom Brown , Tom Lane Content-Type: multipart/mixed; boundary="00000000000029efd4062c5a620d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000029efd4062c5a620d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Dec 12, 2024 at 4:58=E2=80=AFPM Amit Langote wrote: > To summarize how extensions can be affected: > > 1. Plan invalidation during standard_ExecutorStart(): A plan tree > originating from a CachedPlan can become invalid during > standard_ExecutorStart() due to locks taken on leaf partitions that > survive initial pruning. Extensions should be updated to handle this > scenario by checking ExecPlanStillValid(estate) immediately after > calling standard_ExecutorStart() in their ExecutorStart_hook. If it > returns false, the extensions should avoid further processing. > > 2. Validation of RT indexes: If the plan tree remains valid, any > direct manipulation of relations using RT indexes must first verify > that the RT index is present in the EState.es_unpruned_relids > bitmapset. This bitmapset includes: a) RT indexes of relations that > are originally unprunable (and locked during GetCachedPlan()), and > b) RT indexes of leaf partitions that survive initial partition > pruning. This step is crucial because pruned relations are not locked. > Additionally, with the update in 0004, attempting to open pruned > relations using ExecGetRangeTableRelation() will result in an error. > > I=E2=80=99d love to hear from anyone maintaining executor hooks, such as = those > from Timescale, Citus, or other extension developers. Please give this > patch set (0001-0004) a try and let me know if you run into any issues > or have feedback. 0005 is a sketch of an approach that eliminates the > need for extensions to check ExecPlanStillValid() in their > ExecutorStart_hook. I=E2=80=99ve rebased over recent changes to setrefs.c (commit bf826ea0629). During the rebase, I realized that the patch 0002-Initialize-PartitionPruneContexts-lazily wasn=E2=80=99t a good idea af= ter all. The test case added by bf826ea0629 highlighted an issue: initializing pruning expressions lazily during execution could leave the Append/MergeAppend node=E2=80=99s PlanState.subPlan uninitialized at ExecInitNode() time. Initially, I thought this would have only cosmetic consequences -- such as changes in test case output where SubPlans referenced in "exec" pruning expressions wouldn=E2=80=99t appear -= - but I may have underestimated the problem. As a result, I=E2=80=99ve abando= ned that approach and the patch in favor of initializing all pruning expressions during plan initialization. Additionally, I revisited the impact of the main patch on ExecutorStart_hooks. It seems better to change the return type from void to bool, returning the result of ExecPlanStillValid(queryDesc->estate). This change has the added benefit of breaking extensions that use ExecutorStart_hook at compile time, encouraging authors to update their code. The updated commit message includes details on additional checks extensions must implement, particularly for cases where they might access pruned and thus unlocked relations. I've stared at the refactoring patches 0001 and 0002 for long enough at this point that I'd like to commit them early next week, barring further comments or objections. I'll keep staring at 0003. -- Thanks, Amit Langote --00000000000029efd4062c5a620d Content-Type: application/octet-stream; name="v60-0002-Perform-runtime-initial-pruning-outside-ExecInit.patch" Content-Disposition: attachment; filename="v60-0002-Perform-runtime-initial-pruning-outside-ExecInit.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m68xq4x91 RnJvbSBjMWY4YWVkOTFlZTFhNDM4NzFiMDlkOWJhMzBhNmUyMTBjODljYjI4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMjMgSmFuIDIwMjUgMTQ6NDk6NDggKzA5MDAKU3ViamVjdDogW1BBVENIIHY2 MCAyLzNdIFBlcmZvcm0gcnVudGltZSBpbml0aWFsIHBydW5pbmcgb3V0c2lkZQogRXhlY0luaXRO b2RlKCkKClRoaXMgY29tbWl0IGJ1aWxkcyBvbiB0aGUgcHJpb3IgY2hhbmdlIHRoYXQgbW92ZWQg UGFydGl0aW9uUHJ1bmVJbmZvcwpvdXQgb2YgaW5kaXZpZHVhbCBwbGFuIG5vZGVzIGludG8gYSBs aXN0IGluIFBsYW5uZWRTdG10LiBJdCBtb3ZlcyB0aGUKaW5pdGlhbGl6YXRpb24gb2YgUGFydGl0 aW9uUHJ1bmVTdGF0ZXMgYW5kIHJ1bnRpbWUgaW5pdGlhbCBwcnVuaW5nCmZyb20gRXhlY0luaXRO b2RlKCkgdG8gYSBuZXcgcm91dGluZSwgRXhlY0RvSW5pdGlhbFBydW5pbmcoKS4KCkV4ZWNEb0lu aXRpYWxQcnVuaW5nKCkgaXMgY2FsbGVkIGJ5IEluaXRQbGFuKCkgYmVmb3JlIGNhbGxpbmcKRXhl Y0luaXROb2RlKCkgb24gdGhlIG1haW4gcGxhbiB0cmVlIGFuZCBzdWJwbGFucy4gSXQgcGVyZm9y bXMgdGhlCmluaXRpYWwgcHJ1bmluZyBhbmQgc2F2ZXMgdGhlIHJlc3VsdCAtLSBhIEJpdG1hcHNl dCBvZiBpbmRleGVzIGZvcgpzdXJ2aXZpbmcgY2hpbGQgc3Vibm9kZXMgLS0gaW4gZXNfcGFydF9w cnVuZV9yZXN1bHRzLCBhIGxpc3QgaW4KRVN0YXRlLgoKUGFydGl0aW9uUHJ1bmVTdGF0ZXMgY3Jl YXRlZCBmb3IgaW5pdGlhbCBwcnVuaW5nIGFyZSBzdG9yZWQgaW4KZXNfcGFydF9wcnVuZV9zdGF0 ZXMsIGFub3RoZXIgbGlzdCBpbiBFU3RhdGUsIGZvciBsYXRlciB1c2UgZHVyaW5nCmV4ZWMgcHJ1 bmluZy4gQm90aCBsaXN0cyBhcmUgcGFyYWxsZWwgdG8gZXNfcGFydF9wcnVuZV9pbmZvcywgd2hp Y2gKaG9sZHMgdGhlIFBhcnRpdGlvblBydW5lSW5mb3MgZnJvbSBQbGFubmVkU3RtdCwgZW5hYmxp bmcgc2hhcmVkCmluZGV4aW5nLgoKUGFydGl0aW9uUHJ1bmVTdGF0ZXMgaW5pdGlhbGl6ZWQgaW4g RXhlY0RvSW5pdGlhbFBydW5pbmcoKSBub3cgaW5jbHVkZQpvbmx5IHRoZSBQYXJ0aXRpb25QcnVu ZUNvbnRleHRzIGZvciBpbml0aWFsIHBydW5pbmcgc3RlcHMuIEV4ZWMKcHJ1bmluZyBjb250ZXh0 cyBhcmUgaW5pdGlhbGl6ZWQgbGF0ZXIgaW4KRXhlY0luaXRQYXJ0aXRpb25FeGVjUHJ1bmluZygp IHdoZW4gdGhlIHBhcmVudCBwbGFuIG5vZGUgaXMKaW5pdGlhbGl6ZWQsIGFzIHRoZSBleGVjIHBy dW5pbmcgc3RlcCBleHByZXNzaW9ucyBkZXBlbmQgb24gdGhlCnBhcmVudCBub2RlJ3MgUGxhblN0 YXRlLiBUaGUgZXhpc3RpbmcgZnVuY3Rpb24KUGFydGl0aW9uUHJ1bmVGaXhTdWJQbGFuTWFwKCkg aGFzIGJlZW4gcmVwdXJwb3NlZCBmb3IgdGhpcwppbml0aWFsaXphdGlvbiB0byBhdm9pZCBkdXBs aWNhdGluZyBhIHNpbWlsYXIgbG9vcCBzdHJ1Y3R1cmUgZm9yCmZpbmRpbmcgUGFydGl0aW9uZWRS ZWxQcnVuaW5nRGF0YSB0byBpbml0aWFsaXplIGV4ZWMgY29udGV4dHMgZm9yLiBJdApoYXMgYmVl biByZW5hbWVkIHRvIEluaXRFeGVjUHJ1bmluZ0NvbnRleHRzKCkgdG8gcmVmbGVjdCBpdHMgbmV3 CnByaW1hcnkgcmVzcG9uc2liaWxpdHkuIFRoZSBvcmlnaW5hbCBsb2dpYyB0byAiZml4IHN1YnBs YW4gbWFwcyIKcmVtYWlucyBpbnRhY3QgYnV0IGlzIG5vdyBlbmNhcHN1bGF0ZWQgd2l0aGluIHRo ZSByZW5hbWVkIGZ1bmN0aW9uLgoKVG8gZW5zdXJlIGV4ZWMgcHJ1bmluZyBjb250ZXh0cyBhcmUg bm90IGFjY2Vzc2VkIGJlZm9yZSBpbml0aWFsaXphdGlvbiwKYSBuZXcgYm9vbGVhbiBmaWVsZCwg J2luaXRpYWxpemVkJywgaXMgYWRkZWQgdG8gUGFydGl0aW9uUHJ1bmVDb250ZXh0LgoKVGhpcyBj b21taXQgcmVtb3ZlcyB0d28gb2Jzb2xldGUgQXNzZXJ0cyBpbiBwYXJ0a2V5X2RhdHVtX2Zyb21f ZXhwcigpLgpUaGUgRXhwckNvbnRleHQgdXNlZCBmb3IgcHJ1bmluZyBleHByZXNzaW9uIGV2YWx1 YXRpb24gaXMgbm93CmluZGVwZW5kZW50IG9mIHRoZSBwYXJlbnQgUGxhblN0YXRlLCBtYWtpbmcg dGhlc2UgQXNzZXJ0cyB1bm5lY2Vzc2FyeS4KClJldmlld2VkLWJ5OiBSb2JlcnQgSGFhcwpSZXZp ZXdlZC1ieTogVG9tIExhbmUKUmV2aWV3ZWQtYnk6IFRvbWFzIFZvbmRyYQpEaXNjdXNzaW9uOiBo dHRwczovL3Bvc3Rnci5lcy9tL0NBK0hpd3FGR2tNU2dlNlRnQzlLUXpkZTBvaHBBeWNMUXVWN29v aXRFRXBiS0IwT19tZ0BtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNNYWluLmMgICAgICAgIHwgIDEyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRp b24uYyAgIHwgMzE4ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVBcHBlbmQuYyAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TWVyZ2VBcHBlbmQuYyB8ICAxMCArLQogc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVu ZS5jICAgfCAgIDcgKy0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCAgIHwg IDE4ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICB8ICAgMiArCiBz cmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmggICB8ICAgMiArCiA4IGZpbGVzIGNo YW5nZWQsIDI2NiBpbnNlcnRpb25zKCspLCAxMTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNNYWluLmMKaW5kZXggMWQyN2I4NDBjYTkuLjYwNGNiMDYyNWI4IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNNYWluLmMKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJjb21tYW5kcy9tYXR2aWV3Lmgi CiAjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1 dG9yLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oIgogI2luY2x1ZGUgImV4 ZWN1dG9yL25vZGVTdWJwbGFuLmgiCiAjaW5jbHVkZSAiZm9yZWlnbi9mZHdhcGkuaCIKICNpbmNs dWRlICJtYi9wZ193Y2hhci5oIgpAQCAtODU1LDYgKzg1NiwxNyBAQCBJbml0UGxhbihRdWVyeURl c2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAllc3RhdGUtPmVzX3BsYW5uZWRzdG10ID0gcGxh bm5lZHN0bXQ7CiAJZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9zID0gcGxhbm5lZHN0bXQtPnBh cnRQcnVuZUluZm9zOwogCisJLyoKKwkgKiBQZXJmb3JtIHJ1bnRpbWUgImluaXRpYWwiIHBydW5p bmcgdG8gaWRlbnRpZnkgd2hpY2ggY2hpbGQgc3VicGxhbnMsCisJICogY29ycmVzcG9uZGluZyB0 byB0aGUgY2hpbGRyZW4gb2YgcGxhbiBub2RlcyB0aGF0IGNvbnRhaW4KKwkgKiBQYXJ0aXRpb25Q cnVuZUluZm8gc3VjaCBhcyBBcHBlbmQsIHdpbGwgbm90IGJlIGV4ZWN1dGVkLiBUaGUgcmVzdWx0 cywKKwkgKiB3aGljaCBhcmUgYml0bWFwc2V0cyBvZiBpbmRleGVzIG9mIHRoZSBjaGlsZCBzdWJw bGFucyB0aGF0IHdpbGwgYmUKKwkgKiBleGVjdXRlZCwgYXJlIHNhdmVkIGluIGVzX3BhcnRfcHJ1 bmVfcmVzdWx0cy4gIFRoZXNlIHJlc3VsdHMgY29ycmVzcG9uZAorCSAqIHRvIGVhY2ggUGFydGl0 aW9uUHJ1bmVJbmZvIGVudHJ5LCBhbmQgdGhlIGVzX3BhcnRfcHJ1bmVfcmVzdWx0cyBsaXN0IGlz CisJICogcGFyYWxsZWwgdG8gZXNfcGFydF9wcnVuZV9pbmZvcy4KKwkgKi8KKwlFeGVjRG9Jbml0 aWFsUHJ1bmluZyhlc3RhdGUpOworCiAJLyoKIAkgKiBOZXh0LCBidWlsZCB0aGUgRXhlY1Jvd01h cmsgYXJyYXkgZnJvbSB0aGUgUGxhblJvd01hcmsocyksIGlmIGFueS4KIAkgKi8KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwppbmRleCAxNmFlYzU5ZDBlYy4uNzBmMTE5MTNhZDQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKQEAgLTE4MSw3ICsxODEsNyBAQCBzdGF0 aWMgY2hhciAqRXhlY0J1aWxkU2xvdFBhcnRpdGlvbktleURlc2NyaXB0aW9uKFJlbGF0aW9uIHJl bCwKIAkJCQkJCQkJCQkJCSAgaW50IG1heGZpZWxkbGVuKTsKIHN0YXRpYyBMaXN0ICphZGp1c3Rf cGFydGl0aW9uX2NvbG5vcyhMaXN0ICpjb2xub3MsIFJlc3VsdFJlbEluZm8gKmxlYWZfcGFydF9y cmkpOwogc3RhdGljIExpc3QgKmFkanVzdF9wYXJ0aXRpb25fY29sbm9zX3VzaW5nX21hcChMaXN0 ICpjb2xub3MsIEF0dHJNYXAgKmF0dHJNYXApOwotc3RhdGljIFBhcnRpdGlvblBydW5lU3RhdGUg KkNyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsCitzdGF0aWMg UGFydGl0aW9uUHJ1bmVTdGF0ZSAqQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShFU3RhdGUgKmVz dGF0ZSwKIAkJCQkJCQkJCQkJCQkgIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKTsKIHN0 YXRpYyB2b2lkIEluaXRQYXJ0aXRpb25QcnVuZUNvbnRleHQoUGFydGl0aW9uUHJ1bmVDb250ZXh0 ICpjb250ZXh0LAogCQkJCQkJCQkJICBMaXN0ICpwcnVuaW5nX3N0ZXBzLApAQCAtMTg5LDkgKzE4 OSwxMCBAQCBzdGF0aWMgdm9pZCBJbml0UGFydGl0aW9uUHJ1bmVDb250ZXh0KFBhcnRpdGlvblBy dW5lQ29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkJCSAgUGFydGl0aW9uS2V5IHBhcnRrZXksCiAJ CQkJCQkJCQkgIFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogCQkJCQkJCQkJICBFeHByQ29udGV4dCAq ZWNvbnRleHQpOwotc3RhdGljIHZvaWQgUGFydGl0aW9uUHJ1bmVGaXhTdWJQbGFuTWFwKFBhcnRp dGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUsCi0JCQkJCQkJCQkJQml0bWFwc2V0ICppbml0aWFs bHlfdmFsaWRfc3VicGxhbnMsCi0JCQkJCQkJCQkJaW50IG5fdG90YWxfc3VicGxhbnMpOworc3Rh dGljIHZvaWQgSW5pdEV4ZWNQYXJ0aXRpb25QcnVuZUNvbnRleHRzKFBhcnRpdGlvblBydW5lU3Rh dGUgKnBydW5zdGF0ZSwKKwkJCQkJCQkJCQkgICBQbGFuU3RhdGUgKnBhcmVudF9wbGFuLAorCQkJ CQkJCQkJCSAgIEJpdG1hcHNldCAqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zLAorCQkJCQkJCQkJ CSAgIGludCBuX3RvdGFsX3N1YnBsYW5zKTsKIHN0YXRpYyB2b2lkIGZpbmRfbWF0Y2hpbmdfc3Vi cGxhbnNfcmVjdXJzZShQYXJ0aXRpb25QcnVuaW5nRGF0YSAqcHJ1bmVkYXRhLAogCQkJCQkJCQkJ CSAgIFBhcnRpdGlvbmVkUmVsUHJ1bmluZ0RhdGEgKnBwcnVuZSwKIAkJCQkJCQkJCQkgICBib29s IGluaXRpYWxfcHJ1bmUsCkBAIC0xNzYyLDQ4ICsxNzYzLDEwNiBAQCBhZGp1c3RfcGFydGl0aW9u X2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRyTWFwICphdHRyTWFwKQogICoKICAq IEZ1bmN0aW9uczoKICAqCi0gKiBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmc6Ci0gKgkJQ3JlYXRl cyB0aGUgUGFydGl0aW9uUHJ1bmVTdGF0ZSByZXF1aXJlZCBieSBFeGVjRmluZE1hdGNoaW5nU3Vi UGxhbnMuCi0gKgkJRGV0YWlscyBzdG9yZWQgaW5jbHVkZSBob3cgdG8gbWFwIHRoZSBwYXJ0aXRp b24gaW5kZXggcmV0dXJuZWQgYnkgdGhlCi0gKgkJcGFydGl0aW9uIHBydW5pbmcgY29kZSBpbnRv IHN1YnBsYW4gaW5kZXhlcy4gIEFsc28gZGV0ZXJtaW5lcyB0aGUgc2V0Ci0gKgkJb2Ygc3VicGxh bnMgdG8gaW5pdGlhbGl6ZSBjb25zaWRlcmluZyB0aGUgcmVzdWx0IG9mIHBlcmZvcm1pbmcgaW5p dGlhbAotICoJCXBydW5pbmcgc3RlcHMgaWYgYW55LiAgTWFwcyBpbiBQYXJ0aXRpb25QcnVuZVN0 YXRlIGFyZSB1cGRhdGVkIHRvCisgKiBFeGVjRG9Jbml0aWFsUHJ1bmluZzoKKyAqCQlQZXJmb3Jt IHJ1bnRpbWUgImluaXRpYWwiIHBydW5pbmcsIGlmIG5lY2Vzc2FyeSwgdG8gZGV0ZXJtaW5lIHRo ZSBzZXQKKyAqCQlvZiBjaGlsZCBzdWJub2RlcyB0aGF0IG5lZWQgdG8gYmUgaW5pdGlhbGl6ZWQg ZHVyaW5nIEV4ZWNJbml0Tm9kZSgpIGZvcgorICoJCWFsbCBwbGFuIG5vZGVzIHRoYXQgY29udGFp biBhIFBhcnRpdGlvblBydW5lSW5mby4KKyAqCisgKiBFeGVjSW5pdFBhcnRpdGlvbkV4ZWNQcnVu aW5nOgorICoJCVVwZGF0ZXMgdGhlIFBhcnRpdGlvblBydW5lU3RhdGUgZm91bmQgYXQgZ2l2ZW4g cGFydF9wcnVuZV9pbmRleCBpbgorICoJCUVTdGF0ZS5lc19wYXJ0X3BydW5lX3N0YXRlcyBmb3Ig dXNlIGR1cmluZyAiZXhlYyIgcHJ1bmluZyBpZiByZXF1aXJlZC4KKyAqCQlBbHNvIHJldHVybnMg dGhlIHNldCBvZiBzdWJwbGFucyB0byBpbml0aWFsaXplIHRoYXQgd291bGQgYmUgc3RvcmVkIGF0 CisgKgkJcGFydF9wcnVuZV9pbmRleCBpbiBFU3RhdGUuZXNfcGFydF9wcnVuZV9yZXN1bHQgYnkK KyAqCQlFeGVjRG9Jbml0aWFsUHJ1bmluZygpLiAgTWFwcyBpbiBQYXJ0aXRpb25QcnVuZVN0YXRl IGFyZSB1cGRhdGVkIHRvCiAgKgkJYWNjb3VudCBmb3IgaW5pdGlhbCBwcnVuaW5nIHBvc3NpYmx5 IGhhdmluZyBlbGltaW5hdGVkIHNvbWUgb2YgdGhlCiAgKgkJc3VicGxhbnMuCiAgKgogICogRXhl Y0ZpbmRNYXRjaGluZ1N1YlBsYW5zOgogICoJCVJldHVybnMgaW5kZXhlcyBvZiBtYXRjaGluZyBz dWJwbGFucyBhZnRlciBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9ucwogICoJCXRoYXQgYXJlIHNh ZmUgdG8gZXZhbHVhdGUgYXQgYSBnaXZlbiBwb2ludC4gIFRoaXMgZnVuY3Rpb24gaXMgZmlyc3QK LSAqCQljYWxsZWQgZHVyaW5nIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZygpIHRvIGZpbmQgdGhl IGluaXRpYWxseQotICoJCW1hdGNoaW5nIHN1YnBsYW5zIGJhc2VkIG9uIHBlcmZvcm1pbmcgdGhl IGluaXRpYWwgcHJ1bmluZyBzdGVwcyBhbmQKLSAqCQl0aGVuIG11c3QgYmUgY2FsbGVkIGFnYWlu IGVhY2ggdGltZSB0aGUgdmFsdWUgb2YgYSBQYXJhbSBsaXN0ZWQgaW4KKyAqCQljYWxsZWQgZHVy aW5nIEV4ZWNEb0luaXRpYWxQcnVuaW5nKCkgdG8gZmluZCB0aGUgaW5pdGlhbGx5IG1hdGNoaW5n CisgKgkJc3VicGxhbnMgYmFzZWQgb24gcGVyZm9ybWluZyB0aGUgaW5pdGlhbCBwcnVuaW5nIHN0 ZXBzIGFuZCB0aGVuIG11c3QgYmUKKyAqCQljYWxsZWQgYWdhaW4gZWFjaCB0aW1lIHRoZSB2YWx1 ZSBvZiBhIFBhcmFtIGxpc3RlZCBpbgogICoJCVBhcnRpdGlvblBydW5lU3RhdGUncyAnZXhlY3Bh cmFtaWRzJyBjaGFuZ2VzLgogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIAogLyoKLSAqIEV4ZWNJ bml0UGFydGl0aW9uUHJ1bmluZwotICoJCUluaXRpYWxpemUgZGF0YSBzdHJ1Y3R1cmUgbmVlZGVk IGZvciBydW4tdGltZSBwYXJ0aXRpb24gcHJ1bmluZyBhbmQKLSAqCQlkbyBpbml0aWFsIHBydW5p bmcgaWYgbmVlZGVkCisgKiBFeGVjRG9Jbml0aWFsUHJ1bmluZworICoJCVBlcmZvcm0gcnVudGlt ZSAiaW5pdGlhbCIgcHJ1bmluZywgaWYgbmVjZXNzYXJ5LCB0byBkZXRlcm1pbmUgdGhlIHNldAor ICoJCW9mIGNoaWxkIHN1Ym5vZGVzIHRoYXQgbmVlZCB0byBiZSBpbml0aWFsaXplZCBkdXJpbmcg RXhlY0luaXROb2RlKCkgZm9yCisgKgkJcGxhbiBub2RlcyB0aGF0IHN1cHBvcnQgcGFydGl0aW9u IHBydW5pbmcuCisgKgorICogVGhpcyBmdW5jdGlvbiBpdGVyYXRlcyBvdmVyIGVhY2ggUGFydGl0 aW9uUHJ1bmVJbmZvIGVudHJ5IGluCisgKiBlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5mb3MuIEZv ciBlYWNoIGVudHJ5LCBpdCBjcmVhdGVzIGEgUGFydGl0aW9uUHJ1bmVTdGF0ZQorICogYW5kIGFk ZHMgaXQgdG8gZXNfcGFydF9wcnVuZV9zdGF0ZXMuICBFeGVjSW5pdFBhcnRpdGlvbkV4ZWNQcnVu aW5nKCkgYWNjZXNzZXMKKyAqIHRoZXNlIHN0YXRlcyB0aHJvdWdoIHRoZWlyIGNvcnJlc3BvbmRp bmcgaW5kZXhlcyBpbiBlc19wYXJ0X3BydW5lX3N0YXRlcyBhbmQKKyAqIGFzc2lnbiBlYWNoIHN0 YXRlIHRvIHRoZSBwYXJlbnQgbm9kZSdzIFBsYW5TdGF0ZSwgZnJvbSB3aGVyZSBpdCB3aWxsIGJl IHVzZWQKKyAqIGZvciAiZXhlYyIgcHJ1bmluZy4KKyAqCisgKiBJZiBpbml0aWFsIHBydW5pbmcg c3RlcHMgZXhpc3QgZm9yIGEgUGFydGl0aW9uUHJ1bmVJbmZvIGVudHJ5LCB0aGlzIGZ1bmN0aW9u CisgKiBleGVjdXRlcyB0aG9zZSBwcnVuaW5nIHN0ZXBzIGFuZCBzdG9yZXMgdGhlIHJlc3VsdCBh cyBhIGJpdG1hcHNldCBvZiB2YWxpZAorICogY2hpbGQgc3VicGxhbnMsIGlkZW50aWZ5aW5nIHdo aWNoIHN1YnBsYW5zIHNob3VsZCBiZSBpbml0aWFsaXplZCBmb3IKKyAqIGV4ZWN1dGlvbi4gIFRo ZSByZXN1bHRzIGFyZSBzYXZlZCBpbiBlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0cy4KKyAq CisgKiBJZiBubyBpbml0aWFsIHBydW5pbmcgaXMgcGVyZm9ybWVkIGZvciBhIGdpdmVuIFBhcnRp dGlvblBydW5lSW5mbywgYSBOVUxMCisgKiBlbnRyeSAgaXMgc3RpbGwgYWRkZWQgdG8gZXNfcGFy dF9wcnVuZV9yZXN1bHRzIHRvIG1haW50YWluIGFsaWdubWVudCB3aXRoCisgKiBlc19wYXJ0X3By dW5lX2luZm9zLiBUaGlzIGVuc3VyZXMgdGhhdCBFeGVjSW5pdFBhcnRpdGlvbkV4ZWNQcnVuaW5n KCkgY2FuCisgKiB1c2UgdGhlIHNhbWUgaW5kZXggdG8gcmV0cmlldmUgdGhlIHBydW5pbmcgcmVz dWx0cy4KKyAqLwordm9pZAorRXhlY0RvSW5pdGlhbFBydW5pbmcoRVN0YXRlICplc3RhdGUpCit7 CisJTGlzdENlbGwgICAqbGM7CisKKwlmb3JlYWNoKGxjLCBlc3RhdGUtPmVzX3BhcnRfcHJ1bmVf aW5mb3MpCisJeworCQlQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbyA9IGxmaXJzdF9ub2Rl KFBhcnRpdGlvblBydW5lSW5mbywgbGMpOworCQlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0 YXRlOworCQlCaXRtYXBzZXQgICp2YWxpZHN1YnBsYW5zID0gTlVMTDsKKworCQkvKiBDcmVhdGUg YW5kIHNhdmUgdGhlIFBhcnRpdGlvblBydW5lU3RhdGUuICovCisJCXBydW5lc3RhdGUgPSBDcmVh dGVQYXJ0aXRpb25QcnVuZVN0YXRlKGVzdGF0ZSwgcHJ1bmVpbmZvKTsKKwkJZXN0YXRlLT5lc19w YXJ0X3BydW5lX3N0YXRlcyA9IGxhcHBlbmQoZXN0YXRlLT5lc19wYXJ0X3BydW5lX3N0YXRlcywK KwkJCQkJCQkJCQkJICAgcHJ1bmVzdGF0ZSk7CisKKwkJLyoKKwkJICogUGVyZm9ybSBpbml0aWFs IHBydW5pbmcgc3RlcHMsIGlmIGFueSwgYW5kIHNhdmUgdGhlIHJlc3VsdAorCQkgKiBiaXRtYXBz ZXQgb3IgTlVMTCBhcyBkZXNjcmliZWQgaW4gdGhlIGhlYWRlciBjb21tZW50LgorCQkgKi8KKwkJ aWYgKHBydW5lc3RhdGUtPmRvX2luaXRpYWxfcHJ1bmUpCisJCQl2YWxpZHN1YnBsYW5zID0gRXhl Y0ZpbmRNYXRjaGluZ1N1YlBsYW5zKHBydW5lc3RhdGUsIHRydWUpOworCQllc3RhdGUtPmVzX3Bh cnRfcHJ1bmVfcmVzdWx0cyA9IGxhcHBlbmQoZXN0YXRlLT5lc19wYXJ0X3BydW5lX3Jlc3VsdHMs CisJCQkJCQkJCQkJCQl2YWxpZHN1YnBsYW5zKTsKKwl9Cit9CisKKy8qCisgKiBFeGVjSW5pdFBh cnRpdGlvbkV4ZWNQcnVuaW5nCisgKgkJSW5pdGlhbGl6ZSB0aGUgZGF0YSBzdHJ1Y3R1cmVzIG5l ZWRlZCBmb3IgcnVudGltZSAiZXhlYyIgcGFydGl0aW9uCisgKgkJcHJ1bmluZyBhbmQgcmV0dXJu IHRoZSByZXN1bHQgb2YgaW5pdGlhbCBwcnVuaW5nLCBpZiBhdmFpbGFibGUuCiAgKgogICogJ3Jl bGlkcycgaWRlbnRpZmllcyB0aGUgcmVsYXRpb24gdG8gd2hpY2ggYm90aCB0aGUgcGFyZW50IHBs YW4gYW5kIHRoZQogICogUGFydGl0aW9uUHJ1bmVJbmZvIGdpdmVuIGJ5ICdwYXJ0X3BydW5lX2lu ZGV4JyBiZWxvbmcuCiAgKgogICogT24gcmV0dXJuLCAqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5z IGlzIGFzc2lnbmVkIHRoZSBzZXQgb2YgaW5kZXhlcyBvZgogICogY2hpbGQgc3VicGxhbnMgdGhh dCBtdXN0IGJlIGluaXRpYWxpemVkIGFsb25nIHdpdGggdGhlIHBhcmVudCBwbGFuIG5vZGUuCi0g KiBJbml0aWFsIHBydW5pbmcgaXMgcGVyZm9ybWVkIGhlcmUgaWYgbmVlZGVkIGFuZCBpbiB0aGF0 IGNhc2Ugb25seSB0aGUKLSAqIHN1cnZpdmluZyBzdWJwbGFucycgaW5kZXhlcyBhcmUgYWRkZWQu CisgKiBJbml0aWFsIHBydW5pbmcgd291bGQgaGF2ZSBiZWVuIHBlcmZvcm1lZCBieSBFeGVjRG9J bml0aWFsUHJ1bmluZygpLCBpZgorICogbmVjZXNzYXJ5LCBhbmQgdGhlIGJpdG1hcHNldCBvZiBz dXJ2aXZpbmcgc3VicGxhbnMnIGluZGV4ZXMgd291bGQgaGF2ZQorICogYmVlbiBzdG9yZWQgYXMg dGhlIHBhcnRfcHJ1bmVfaW5kZXgndGggZWxlbWVudCBvZgorICogRVN0YXRlLmVzX3BhcnRfcHJ1 bmVfcmVzdWx0cy4KICAqCi0gKiBJZiBzdWJwbGFucyBhcmUgaW5kZWVkIHBydW5lZCwgc3VicGxh bl9tYXAgYXJyYXlzIGNvbnRhaW5lZCBpbiB0aGUgcmV0dXJuZWQKLSAqIFBhcnRpdGlvblBydW5l U3RhdGUgYXJlIHJlLXNlcXVlbmNlZCB0byBub3QgY291bnQgdGhvc2UsIHRob3VnaCBvbmx5IGlm IHRoZQotICogbWFwcyB3aWxsIGJlIG5lZWRlZCBmb3Igc3Vic2VxdWVudCBleGVjdXRpb24gcHJ1 bmluZyBwYXNzZXMuCisgKiBJZiBzdWJwbGFucyB3ZXJlIGluZGVlZCBwcnVuZWQgZHVyaW5nIGlu aXRpYWwgcHJ1bmluZywgdGhlIHN1YnBsYW5fbWFwCisgKiBhcnJheXMgaW4gdGhlIHJldHVybmVk IFBhcnRpdGlvblBydW5lU3RhdGUgYXJlIHJlLXNlcXVlbmNlZCB0byBleGNsdWRlIHRob3NlCisg KiBzdWJwbGFucywgYnV0IG9ubHkgaWYgdGhlIG1hcHMgd2lsbCBiZSBuZWVkZWQgZm9yIHN1YnNl cXVlbnQgZXhlY3V0aW9uCisgKiBwcnVuaW5nIHBhc3Nlcy4KICAqLwogUGFydGl0aW9uUHJ1bmVT dGF0ZSAqCi1FeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCi0J CQkJCQkgaW50IG5fdG90YWxfc3VicGxhbnMsCi0JCQkJCQkgaW50IHBhcnRfcHJ1bmVfaW5kZXgs Ci0JCQkJCQkgQml0bWFwc2V0ICpyZWxpZHMsCi0JCQkJCQkgQml0bWFwc2V0ICoqaW5pdGlhbGx5 X3ZhbGlkX3N1YnBsYW5zKQorRXhlY0luaXRQYXJ0aXRpb25FeGVjUHJ1bmluZyhQbGFuU3RhdGUg KnBsYW5zdGF0ZSwKKwkJCQkJCQkgaW50IG5fdG90YWxfc3VicGxhbnMsCisJCQkJCQkJIGludCBw YXJ0X3BydW5lX2luZGV4LAorCQkJCQkJCSBCaXRtYXBzZXQgKnJlbGlkcywKKwkJCQkJCQkgQml0 bWFwc2V0ICoqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zKQogewogCVBhcnRpdGlvblBydW5lU3Rh dGUgKnBydW5lc3RhdGU7CiAJRVN0YXRlCSAgICplc3RhdGUgPSBwbGFuc3RhdGUtPnN0YXRlOwpA QCAtMTgxOSwxNyArMTg3OCwxOSBAQCBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRl ICpwbGFuc3RhdGUsCiAJCQkgYm1zVG9TdHJpbmcocHJ1bmVpbmZvLT5yZWxpZHMpLCBwYXJ0X3By dW5lX2luZGV4LAogCQkJIGJtc1RvU3RyaW5nKHJlbGlkcykpOwogCi0JLyogV2UgbWF5IG5lZWQg YW4gZXhwcmVzc2lvbiBjb250ZXh0IHRvIGV2YWx1YXRlIHBhcnRpdGlvbiBleHBycyAqLwotCUV4 ZWNBc3NpZ25FeHByQ29udGV4dChlc3RhdGUsIHBsYW5zdGF0ZSk7Ci0KLQkvKiBDcmVhdGUgdGhl IHdvcmtpbmcgZGF0YSBzdHJ1Y3R1cmUgZm9yIHBydW5pbmcgKi8KLQlwcnVuZXN0YXRlID0gQ3Jl YXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShwbGFuc3RhdGUsIHBydW5laW5mbyk7Ci0KIAkvKgotCSAq IFBlcmZvcm0gYW4gaW5pdGlhbCBwYXJ0aXRpb24gcHJ1bmUgcGFzcywgaWYgcmVxdWlyZWQuCisJ ICogVGhlIFBhcnRpdGlvblBydW5lU3RhdGUgd291bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkKKwkg KiBFeGVjRG9Jbml0aWFsUHJ1bmluZygpIGFuZCBzdG9yZWQgYXMgdGhlIHBhcnRfcHJ1bmVfaW5k ZXgndGggZWxlbWVudCBvZgorCSAqIEVTdGF0ZS5lc19wYXJ0X3BydW5lX3N0YXRlcy4KIAkgKi8K KwlwcnVuZXN0YXRlID0gbGlzdF9udGgoZXN0YXRlLT5lc19wYXJ0X3BydW5lX3N0YXRlcywgcGFy dF9wcnVuZV9pbmRleCk7CisJQXNzZXJ0KHBydW5lc3RhdGUgIT0gTlVMTCk7CisKKwkvKiBVc2Ug dGhlIHJlc3VsdCBvZiBpbml0aWFsIHBydW5pbmcgZG9uZSBieSBFeGVjRG9Jbml0aWFsUHJ1bmlu ZygpLiAqLwogCWlmIChwcnVuZXN0YXRlLT5kb19pbml0aWFsX3BydW5lKQotCQkqaW5pdGlhbGx5 X3ZhbGlkX3N1YnBsYW5zID0gRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKHBydW5lc3RhdGUsIHRy dWUpOworCQkqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zID0gbGlzdF9udGhfbm9kZShCaXRtYXBz ZXQsCisJCQkJCQkJCQkJCQkgIGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9yZXN1bHRzLAorCQkJCQkJ CQkJCQkJICBwYXJ0X3BydW5lX2luZGV4KTsKIAllbHNlCiAJewogCQkvKiBObyBwcnVuaW5nLCBz byB3ZSdsbCBuZWVkIHRvIGluaXRpYWxpemUgYWxsIHN1YnBsYW5zICovCkBAIC0xODM5LDIyICsx OTAwLDIxIEBAIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwK IAl9CiAKIAkvKgotCSAqIFJlLXNlcXVlbmNlIHN1YnBsYW4gaW5kZXhlcyBjb250YWluZWQgaW4g cHJ1bmVzdGF0ZSB0byBhY2NvdW50IGZvciBhbnkKLQkgKiB0aGF0IHdlcmUgcmVtb3ZlZCBhYm92 ZSBkdWUgdG8gaW5pdGlhbCBwcnVuaW5nLiAgTm8gbmVlZCB0byBkbyB0aGlzIGlmCi0JICogbm8g c3RlcHMgd2VyZSByZW1vdmVkLgorCSAqIFRoZSBleGVjIHBydW5pbmcgc3RhdGUgbXVzdCBhbHNv IGJlIGluaXRpYWxpemVkLCBpZiBuZWVkZWQsIGJlZm9yZSBpdAorCSAqIGNhbiBiZSB1c2VkIGZv ciBwcnVuaW5nIGR1cmluZyBleGVjdXRpb24uCisJICoKKwkgKiBUaGlzIGFsc28gcmUtc2VxdWVu Y2VzIHN1YnBsYW4gaW5kZXhlcyBjb250YWluZWQgaW4gcHJ1bmVzdGF0ZSB0bworCSAqIGFjY291 bnQgZm9yIGFueSB0aGF0IHdlcmUgcmVtb3ZlZCBkdWUgdG8gaW5pdGlhbCBwcnVuaW5nOyByZWZl ciB0byB0aGUKKwkgKiBjb25kaXRpb24gaW4gSW5pdEV4ZWNQYXJ0aXRpb25QcnVuZUNvbnRleHRz KCkgdGhhdCBpcyB1c2VkIHRvIGRldGVybWluZQorCSAqIHdoZXRoZXIgdG8gZG8gdGhpcy4gIElm IG5vIGV4ZWMgcHJ1bmluZyBuZWVkcyB0byBiZSBkb25lLCB3ZSB3b3VsZCB0aHVzCisJICogbGVh dmUgdGhlIG1hcHMgdG8gYmUgaW4gYW4gaW52YWxpZCBpbnZhbGlkIHN0YXRlLCBidXQgdGhhdCdz IG9rIHNpbmNlCisJICogdGhhdCBkYXRhIHdvbid0IGJlIGNvbnN1bHRlZCBhZ2FpbiAoY2YgaW5p dGlhbCBBc3NlcnQgaW4KKwkgKiBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMpLgogCSAqLwotCWlm IChibXNfbnVtX21lbWJlcnMoKmluaXRpYWxseV92YWxpZF9zdWJwbGFucykgPCBuX3RvdGFsX3N1 YnBsYW5zKQotCXsKLQkJLyoKLQkJICogV2UgY2FuIHNhZmVseSBza2lwIHRoaXMgd2hlbiAhZG9f ZXhlY19wcnVuZSwgZXZlbiB0aG91Z2ggdGhhdAotCQkgKiBsZWF2ZXMgaW52YWxpZCBkYXRhIGlu IHBydW5lc3RhdGUsIGJlY2F1c2UgdGhhdCBkYXRhIHdvbid0IGJlCi0JCSAqIGNvbnN1bHRlZCBh Z2FpbiAoY2YgaW5pdGlhbCBBc3NlcnQgaW4gRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKS4KLQkJ ICovCi0JCWlmIChwcnVuZXN0YXRlLT5kb19leGVjX3BydW5lKQotCQkJUGFydGl0aW9uUHJ1bmVG aXhTdWJQbGFuTWFwKHBydW5lc3RhdGUsCi0JCQkJCQkJCQkJKmluaXRpYWxseV92YWxpZF9zdWJw bGFucywKLQkJCQkJCQkJCQluX3RvdGFsX3N1YnBsYW5zKTsKLQl9CisJaWYgKHBydW5lc3RhdGUt PmRvX2V4ZWNfcHJ1bmUpCisJCUluaXRFeGVjUGFydGl0aW9uUHJ1bmVDb250ZXh0cyhwcnVuZXN0 YXRlLCBwbGFuc3RhdGUsCisJCQkJCQkJCQkgICAqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zLAor CQkJCQkJCQkJICAgbl90b3RhbF9zdWJwbGFucyk7CiAKIAlyZXR1cm4gcHJ1bmVzdGF0ZTsKIH0K QEAgLTE4NjMsNyArMTkyMywxMSBAQCBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRl ICpwbGFuc3RhdGUsCiAgKiBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlCiAgKgkJQnVpbGQgdGhl IGRhdGEgc3RydWN0dXJlIHJlcXVpcmVkIGZvciBjYWxsaW5nIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQ bGFucwogICoKLSAqICdwbGFuc3RhdGUnIGlzIHRoZSBwYXJlbnQgcGxhbiBub2RlJ3MgZXhlY3V0 aW9uIHN0YXRlLgorICogVGhpcyBpbmNsdWRlcyBQYXJ0aXRpb25QcnVuZUNvbnRleHRzIChzdG9y ZWQgaW4gZWFjaAorICogUGFydGl0aW9uZWRSZWxQcnVuaW5nRGF0YSBjb3JyZXNwb25kaW5nIHRv IGEgUGFydGl0aW9uZWRSZWxQcnVuZUluZm8pLAorICogd2hpY2ggaG9sZCB0aGUgRXhwclN0YXRl cyBuZWVkZWQgdG8gZXZhbHVhdGUgcHJ1bmluZyBleHByZXNzaW9ucywgYW5kCisgKiBtYXBwaW5n IGFycmF5cyB0byBjb252ZXJ0IHBhcnRpdGlvbiBpbmRleGVzIGZyb20gdGhlIHBydW5pbmcgbG9n aWMKKyAqIGludG8gc3VicGxhbiBpbmRleGVzIGluIHRoZSBwYXJlbnQgcGxhbiBub2RlJ3MgbGlz dCBvZiBjaGlsZCBzdWJwbGFucy4KICAqCiAgKiAncHJ1bmVpbmZvJyBpcyBhIFBhcnRpdGlvblBy dW5lSW5mbyBhcyBnZW5lcmF0ZWQgYnkKICAqIG1ha2VfcGFydGl0aW9uX3BydW5laW5mby4gIEhl cmUgd2UgYnVpbGQgYSBQYXJ0aXRpb25QcnVuZVN0YXRlIGNvbnRhaW5pbmcgYQpAQCAtMTg3NSwx NiArMTkzOSwyNSBAQCBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3Rh dGUsCiAgKiBzdG9yZWQgaW4gZWFjaCBQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhIGNhbiBiZSBy ZS11c2VkIGVhY2ggdGltZSB3ZQogICogcmUtZXZhbHVhdGUgd2hpY2ggcGFydGl0aW9ucyBtYXRj aCB0aGUgcHJ1bmluZyBzdGVwcyBwcm92aWRlZCBpbiBlYWNoCiAgKiBQYXJ0aXRpb25lZFJlbFBy dW5lSW5mby4KKyAqCisgKiBOb3RlIHRoYXQgb25seSB0aGUgUGFydGl0aW9uUHJ1bmVDb250ZXh0 cyBmb3IgaW5pdGlhbCBwcnVuaW5nIGFyZQorICogaW5pdGlhbGl6ZWQgaGVyZS4gVGhvc2UgcmVx dWlyZWQgZm9yIGV4ZWMgcHJ1bmluZyBhcmUgaW5pdGlhbGl6ZWQgbGF0ZXIgaW4KKyAqIEV4ZWNJ bml0UGFydGl0aW9uRXhlY1BydW5pbmcoKSwgYXMgdGhleSBkZXBlbmQgb24gdGhlIGF2YWlsYWJp bGl0eSBvZiB0aGUKKyAqIHBhcmVudCBwbGFuIG5vZGUncyBQbGFuU3RhdGUuCiAgKi8KIHN0YXRp YyBQYXJ0aXRpb25QcnVuZVN0YXRlICoKLUNyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoUGxhblN0 YXRlICpwbGFuc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQorQ3JlYXRlUGFy dGl0aW9uUHJ1bmVTdGF0ZShFU3RhdGUgKmVzdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVu ZWluZm8pCiB7Ci0JRVN0YXRlCSAgICplc3RhdGUgPSBwbGFuc3RhdGUtPnN0YXRlOwogCVBhcnRp dGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGU7CiAJaW50CQkJbl9wYXJ0X2hpZXJhcmNoaWVzOwog CUxpc3RDZWxsICAgKmxjOwogCWludAkJCWk7Ci0JRXhwckNvbnRleHQgKmVjb250ZXh0ID0gcGxh bnN0YXRlLT5wc19FeHByQ29udGV4dDsKKworCS8qCisJICogRXhwcmVzc2lvbiBjb250ZXh0IHRo YXQgd2lsbCBiZSB1c2VkIGJ5IHBhcnRrZXlfZGF0dW1fZnJvbV9leHByKCkgdG8KKwkgKiBldmFs dWF0ZSBleHByZXNzaW9ucyBmb3IgY29tcGFyaXNvbiBhZ2FpbnN0IHBhcnRpdGlvbiBib3VuZHMu CisJICovCisJRXhwckNvbnRleHQgKmVjb250ZXh0ID0gQ3JlYXRlRXhwckNvbnRleHQoZXN0YXRl KTsKIAogCS8qIEZvciBkYXRhIHJlYWRpbmcsIGV4ZWN1dG9yIGFsd2F5cyBpbmNsdWRlcyBkZXRh Y2hlZCBwYXJ0aXRpb25zICovCiAJaWYgKGVzdGF0ZS0+ZXNfcGFydGl0aW9uX2RpcmVjdG9yeSA9 PSBOVUxMKQpAQCAtMTkwMSw2ICsxOTc0LDggQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQ bGFuU3RhdGUgKnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCiAJCXBh bGxvYyhvZmZzZXRvZihQYXJ0aXRpb25QcnVuZVN0YXRlLCBwYXJ0cHJ1bmVkYXRhKSArCiAJCQkg ICBzaXplb2YoUGFydGl0aW9uUHJ1bmluZ0RhdGEgKikgKiBuX3BhcnRfaGllcmFyY2hpZXMpOwog CisJLyogU2F2ZSBFeHByQ29udGV4dCBmb3IgdXNlIGR1cmluZyBJbml0RXhlY1BhcnRpdGlvblBy dW5lQ29udGV4dHMoKS4gKi8KKwlwcnVuZXN0YXRlLT5lY29udGV4dCA9IGVjb250ZXh0OwogCXBy dW5lc3RhdGUtPmV4ZWNwYXJhbWlkcyA9IE5VTEw7CiAJLyogb3RoZXJfc3VicGxhbnMgY2FuIGNo YW5nZSBhdCBydW50aW1lLCBzbyB3ZSBuZWVkIG91ciBvd24gY29weSAqLwogCXBydW5lc3RhdGUt Pm90aGVyX3N1YnBsYW5zID0gYm1zX2NvcHkocHJ1bmVpbmZvLT5vdGhlcl9zdWJwbGFucyk7CkBA IC0xOTUwLDYgKzIwMjUsMTAgQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUg KnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCiAJCQkgKiBkdXJhdGlv biBvZiB0aGlzIGV4ZWN1dG9yIHJ1bi4KIAkJCSAqLwogCQkJcGFydHJlbCA9IEV4ZWNHZXRSYW5n ZVRhYmxlUmVsYXRpb24oZXN0YXRlLCBwaW5mby0+cnRpbmRleCk7CisKKwkJCS8qIFJlbWVtYmVy IGZvciBJbml0RXhlY1BhcnRpdGlvblBydW5lQ29udGV4dCgpLiAqLworCQkJcHBydW5lLT5wYXJ0 cmVsID0gcGFydHJlbDsKKwogCQkJcGFydGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBh cnRyZWwpOwogCQkJcGFydGRlc2MgPSBQYXJ0aXRpb25EaXJlY3RvcnlMb29rdXAoZXN0YXRlLT5l c19wYXJ0aXRpb25fZGlyZWN0b3J5LAogCQkJCQkJCQkJCQkJcGFydHJlbCk7CkBAIC0yMDYxLDI5 ICsyMTQwLDMxIEBAIENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3Rh dGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQogCQkJcHBydW5lLT5wcmVzZW50X3Bh cnRzID0gYm1zX2NvcHkocGluZm8tPnByZXNlbnRfcGFydHMpOwogCiAJCQkvKgotCQkJICogSW5p dGlhbGl6ZSBwcnVuaW5nIGNvbnRleHRzIGFzIG5lZWRlZC4gIE5vdGUgdGhhdCB3ZSBtdXN0IHNr aXAKLQkJCSAqIGV4ZWN1dGlvbi10aW1lIHBhcnRpdGlvbiBwcnVuaW5nIGluIEVYUExBSU4gKEdF TkVSSUNfUExBTiksCi0JCQkgKiBzaW5jZSBwYXJhbWV0ZXIgdmFsdWVzIG1heSBiZSBtaXNzaW5n LgorCQkJICogT25seSBpbml0aWFsX2NvbnRleHQgaXMgaW5pdGlhbGl6ZWQgaGVyZS4gIGV4ZWNf Y29udGV4dCBpcworCQkJICogaW5pdGlhbGl6ZWQgZHVyaW5nIEV4ZWNJbml0UGFydGl0aW9uRXhl Y1BydW5pbmcoKSB3aGVuIHRoZQorCQkJICogcGFyZW50IHBsYW4ncyBQbGFuU3RhdGUgaXMgYXZh aWxhYmxlLgorCQkJICoKKwkJCSAqIE5vdGUgdGhhdCB3ZSBtdXN0IHNraXAgZXhlY3V0aW9uLXRp bWUgKGJvdGggImluaXQiIGFuZCAiZXhlYyIpCisJCQkgKiBwYXJ0aXRpb24gcHJ1bmluZyBpbiBF WFBMQUlOIChHRU5FUklDX1BMQU4pLCBzaW5jZSBwYXJhbWV0ZXIKKwkJCSAqIHZhbHVlcyBtYXkg YmUgbWlzc2luZy4KIAkJCSAqLwogCQkJcHBydW5lLT5pbml0aWFsX3BydW5pbmdfc3RlcHMgPSBw aW5mby0+aW5pdGlhbF9wcnVuaW5nX3N0ZXBzOworCQkJcHBydW5lLT5pbml0aWFsX2NvbnRleHQu aW5pdGlhbGl6ZWQgPSBmYWxzZTsKIAkJCWlmIChwaW5mby0+aW5pdGlhbF9wcnVuaW5nX3N0ZXBz ICYmCiAJCQkJIShlY29udGV4dC0+ZWN4dF9lc3RhdGUtPmVzX3RvcF9lZmxhZ3MgJiBFWEVDX0ZM QUdfRVhQTEFJTl9HRU5FUklDKSkKIAkJCXsKIAkJCQlJbml0UGFydGl0aW9uUHJ1bmVDb250ZXh0 KCZwcHJ1bmUtPmluaXRpYWxfY29udGV4dCwKLQkJCQkJCQkJCQkgIHBpbmZvLT5pbml0aWFsX3By dW5pbmdfc3RlcHMsCi0JCQkJCQkJCQkJICBwYXJ0ZGVzYywgcGFydGtleSwgcGxhbnN0YXRlLAor CQkJCQkJCQkJCSAgcHBydW5lLT5pbml0aWFsX3BydW5pbmdfc3RlcHMsCisJCQkJCQkJCQkJICBw YXJ0ZGVzYywgcGFydGtleSwgTlVMTCwKIAkJCQkJCQkJCQkgIGVjb250ZXh0KTsKIAkJCQkvKiBS ZWNvcmQgd2hldGhlciBpbml0aWFsIHBydW5pbmcgaXMgbmVlZGVkIGF0IGFueSBsZXZlbCAqLwog CQkJCXBydW5lc3RhdGUtPmRvX2luaXRpYWxfcHJ1bmUgPSB0cnVlOwogCQkJfQogCQkJcHBydW5l LT5leGVjX3BydW5pbmdfc3RlcHMgPSBwaW5mby0+ZXhlY19wcnVuaW5nX3N0ZXBzOworCQkJcHBy dW5lLT5leGVjX2NvbnRleHQuaW5pdGlhbGl6ZWQgPSBmYWxzZTsKIAkJCWlmIChwaW5mby0+ZXhl Y19wcnVuaW5nX3N0ZXBzICYmCiAJCQkJIShlY29udGV4dC0+ZWN4dF9lc3RhdGUtPmVzX3RvcF9l ZmxhZ3MgJiBFWEVDX0ZMQUdfRVhQTEFJTl9HRU5FUklDKSkKIAkJCXsKLQkJCQlJbml0UGFydGl0 aW9uUHJ1bmVDb250ZXh0KCZwcHJ1bmUtPmV4ZWNfY29udGV4dCwKLQkJCQkJCQkJCQkgIHBpbmZv LT5leGVjX3BydW5pbmdfc3RlcHMsCi0JCQkJCQkJCQkJICBwYXJ0ZGVzYywgcGFydGtleSwgcGxh bnN0YXRlLAotCQkJCQkJCQkJCSAgZWNvbnRleHQpOwogCQkJCS8qIFJlY29yZCB3aGV0aGVyIGV4 ZWMgcHJ1bmluZyBpcyBuZWVkZWQgYXQgYW55IGxldmVsICovCiAJCQkJcHJ1bmVzdGF0ZS0+ZG9f ZXhlY19wcnVuZSA9IHRydWU7CiAJCQl9CkBAIC0yMTE4LDYgKzIxOTksOSBAQCBJbml0UGFydGl0 aW9uUHJ1bmVDb250ZXh0KFBhcnRpdGlvblBydW5lQ29udGV4dCAqY29udGV4dCwKIAlpbnQJCQlw YXJ0bmF0dHM7CiAJTGlzdENlbGwgICAqbGM7CiAKKwkvKiBOZXZlciBjYWxsIHR3aWNlIGZvciBh IGNvbnRleHQuICovCisJQXNzZXJ0KCFjb250ZXh0LT5pbml0aWFsaXplZCk7CisKIAluX3N0ZXBz ID0gbGlzdF9sZW5ndGgocHJ1bmluZ19zdGVwcyk7CiAKIAljb250ZXh0LT5zdHJhdGVneSA9IHBh cnRrZXktPnN0cmF0ZWd5OwpAQCAtMjE4NSwxMyArMjI2OSwyMiBAQCBJbml0UGFydGl0aW9uUHJ1 bmVDb250ZXh0KFBhcnRpdGlvblBydW5lQ29udGV4dCAqY29udGV4dCwKIAkJCX0KIAkJfQogCX0K KworCWNvbnRleHQtPmluaXRpYWxpemVkID0gdHJ1ZTsKIH0KIAogLyoKLSAqIFBhcnRpdGlvblBy dW5lRml4U3ViUGxhbk1hcAotICoJCUZpeCBtYXBwaW5nIG9mIHBhcnRpdGlvbiBpbmRleGVzIHRv IHN1YnBsYW4gaW5kZXhlcyBjb250YWluZWQgaW4KLSAqCQlwcnVuZXN0YXRlIGJ5IGNvbnNpZGVy aW5nIHRoZSBuZXcgbGlzdCBvZiBzdWJwbGFucyB0aGF0IHN1cnZpdmVkCi0gKgkJaW5pdGlhbCBw cnVuaW5nCisgKiBJbml0RXhlY1BhcnRpdGlvblBydW5lQ29udGV4dHMKKyAqCQlJbml0aWFsaXpl IGV4ZWMgcHJ1bmluZyBjb250ZXh0cyBkZWZlcnJlZCBieSBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0 YXRlKCkKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGZpbmFsaXplcyBleGVjIHBydW5pbmcgc2V0dXAg Zm9yIGEgUGFydGl0aW9uUHJ1bmVTdGF0ZSBieQorICogaW5pdGlhbGl6aW5nIGNvbnRleHRzIGZv ciBwcnVuaW5nIHN0ZXBzIHRoYXQgcmVxdWlyZSB0aGUgcGFyZW50IHBsYW4ncworICogUGxhblN0 YXRlLiBJdCBpdGVyYXRlcyBvdmVyIFBhcnRpdGlvblBydW5pbmdEYXRhIGVudHJpZXMgYW5kIHNl dHMgdXAgdGhlCisgKiBuZWNlc3NhcnkgZXhlY3V0aW9uIGNvbnRleHRzIGZvciBwcnVuaW5nIGR1 cmluZyBxdWVyeSBleGVjdXRpb24uCisgKgorICogQWxzbyBmaXggdGhlIG1hcHBpbmcgb2YgcGFy dGl0aW9uIGluZGV4ZXMgdG8gc3VicGxhbiBpbmRleGVzIGNvbnRhaW5lZCBpbgorICogcHJ1bmVz dGF0ZSBieSBjb25zaWRlcmluZyB0aGUgbmV3IGxpc3Qgb2Ygc3VicGxhbnMgdGhhdCBzdXJ2aXZl ZCBpbml0aWFsCisgKiBwcnVuaW5nLgogICoKICAqIEN1cnJlbnQgdmFsdWVzIG9mIHRoZSBpbmRl eGVzIHByZXNlbnQgaW4gUGFydGl0aW9uUHJ1bmVTdGF0ZSBjb3VudCBhbGwgdGhlCiAgKiBzdWJw bGFucyB0aGF0IHdvdWxkIGJlIHByZXNlbnQgYmVmb3JlIGluaXRpYWwgcHJ1bmluZyB3YXMgZG9u ZS4gIElmIGluaXRpYWwKQEAgLTIyMDIsMjcgKzIyOTUsMzkgQEAgSW5pdFBhcnRpdGlvblBydW5l Q29udGV4dChQYXJ0aXRpb25QcnVuZUNvbnRleHQgKmNvbnRleHQsCiAgKiBzdWJwbGFucyBpbiB0 aGUgcG9zdC1pbml0aWFsLXBydW5pbmcgc2V0LgogICovCiBzdGF0aWMgdm9pZAotUGFydGl0aW9u UHJ1bmVGaXhTdWJQbGFuTWFwKFBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUsCi0JCQkJ CQkJQml0bWFwc2V0ICppbml0aWFsbHlfdmFsaWRfc3VicGxhbnMsCi0JCQkJCQkJaW50IG5fdG90 YWxfc3VicGxhbnMpCitJbml0RXhlY1BhcnRpdGlvblBydW5lQ29udGV4dHMoUGFydGl0aW9uUHJ1 bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKKwkJCQkJCQkgICBQbGFuU3RhdGUgKnBhcmVudF9wbGFuLAor CQkJCQkJCSAgIEJpdG1hcHNldCAqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zLAorCQkJCQkJCSAg IGludCBuX3RvdGFsX3N1YnBsYW5zKQogewotCWludAkJICAgKm5ld19zdWJwbGFuX2luZGV4ZXM7 CisJRVN0YXRlCSAgICplc3RhdGU7CisJaW50CQkgICAqbmV3X3N1YnBsYW5faW5kZXhlcyA9IE5V TEw7CiAJQml0bWFwc2V0ICAqbmV3X290aGVyX3N1YnBsYW5zOwogCWludAkJCWk7CiAJaW50CQkJ bmV3aWR4OworCWJvb2wJCWZpeF9zdWJwbGFuX21hcCA9IGZhbHNlOwogCi0JLyoKLQkgKiBGaXJz dCB3ZSBtdXN0IGJ1aWxkIGEgdGVtcG9yYXJ5IGFycmF5IHdoaWNoIG1hcHMgb2xkIHN1YnBsYW4g aW5kZXhlcyB0bwotCSAqIG5ldyBvbmVzLiAgRm9yIGNvbnZlbmllbmNlIG9mIGluaXRpYWxpemF0 aW9uLCB3ZSB1c2UgMS1iYXNlZCBpbmRleGVzIGluCi0JICogdGhpcyBhcnJheSBhbmQgbGVhdmUg cHJ1bmVkIGl0ZW1zIGFzIDAuCi0JICovCi0JbmV3X3N1YnBsYW5faW5kZXhlcyA9IChpbnQgKikg cGFsbG9jMChzaXplb2YoaW50KSAqIG5fdG90YWxfc3VicGxhbnMpOwotCW5ld2lkeCA9IDE7Ci0J aSA9IC0xOwotCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihpbml0aWFsbHlfdmFsaWRfc3Vi cGxhbnMsIGkpKSA+PSAwKQorCUFzc2VydChwcnVuZXN0YXRlLT5kb19leGVjX3BydW5lKTsKKwlB c3NlcnQocGFyZW50X3BsYW4gIT0gTlVMTCk7CisJZXN0YXRlID0gcGFyZW50X3BsYW4tPnN0YXRl OworCisJaWYgKGJtc19udW1fbWVtYmVycyhpbml0aWFsbHlfdmFsaWRfc3VicGxhbnMpIDwgbl90 b3RhbF9zdWJwbGFucykKIAl7Ci0JCUFzc2VydChpIDwgbl90b3RhbF9zdWJwbGFucyk7Ci0JCW5l d19zdWJwbGFuX2luZGV4ZXNbaV0gPSBuZXdpZHgrKzsKKwkJZml4X3N1YnBsYW5fbWFwID0gdHJ1 ZTsKKworCQkvKgorCQkgKiBGaXJzdCB3ZSBtdXN0IGJ1aWxkIGEgdGVtcG9yYXJ5IGFycmF5IHdo aWNoIG1hcHMgb2xkIHN1YnBsYW4KKwkJICogaW5kZXhlcyB0byBuZXcgb25lcy4gIEZvciBjb252 ZW5pZW5jZSBvZiBpbml0aWFsaXphdGlvbiwgd2UgdXNlCisJCSAqIDEtYmFzZWQgaW5kZXhlcyBp biB0aGlzIGFycmF5IGFuZCBsZWF2ZSBwcnVuZWQgaXRlbXMgYXMgMC4KKwkJICovCisJCW5ld19z dWJwbGFuX2luZGV4ZXMgPSAoaW50ICopIHBhbGxvYzAoc2l6ZW9mKGludCkgKiBuX3RvdGFsX3N1 YnBsYW5zKTsKKwkJbmV3aWR4ID0gMTsKKwkJaSA9IC0xOworCQl3aGlsZSAoKGkgPSBibXNfbmV4 dF9tZW1iZXIoaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zLCBpKSkgPj0gMCkKKwkJeworCQkJQXNz ZXJ0KGkgPCBuX3RvdGFsX3N1YnBsYW5zKTsKKwkJCW5ld19zdWJwbGFuX2luZGV4ZXNbaV0gPSBu ZXdpZHgrKzsKKwkJfQogCX0KIAogCS8qCkBAIC0yMjQ3LDYgKzIzNTIsMjkgQEAgUGFydGl0aW9u UHJ1bmVGaXhTdWJQbGFuTWFwKFBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUsCiAJCQlp bnQJCQlucGFydHMgPSBwcHJ1bmUtPm5wYXJ0czsKIAkJCWludAkJCWs7CiAKKwkJCS8qIEluaXRp YWxpemUgUGFydGl0aW9uUHJ1bmVDb250ZXh0IGZvciBleGVjIHBydW5pbmcsIGlmIG5lZWRlZC4g Ki8KKwkJCWlmIChwcHJ1bmUtPmV4ZWNfcHJ1bmluZ19zdGVwcyAhPSBOSUwpCisJCQl7CisJCQkJ UGFydGl0aW9uS2V5IHBhcnRrZXk7CisJCQkJUGFydGl0aW9uRGVzYyBwYXJ0ZGVzYzsKKworCQkJ CS8qCisJCQkJICogU2VlIHRoZSBjb21tZW50IGluIENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUo KSByZWdhcmRpbmcKKwkJCQkgKiB0aGUgdXNhZ2Ugb2YgcGFydGRlc2MgYW5kIHBhcnRrZXkuCisJ CQkJICovCisJCQkJcGFydGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBwcnVuZS0+cGFy dHJlbCk7CisJCQkJcGFydGRlc2MgPSBQYXJ0aXRpb25EaXJlY3RvcnlMb29rdXAoZXN0YXRlLT5l c19wYXJ0aXRpb25fZGlyZWN0b3J5LAorCQkJCQkJCQkJCQkJCXBwcnVuZS0+cGFydHJlbCk7CisK KwkJCQlJbml0UGFydGl0aW9uUHJ1bmVDb250ZXh0KCZwcHJ1bmUtPmV4ZWNfY29udGV4dCwKKwkJ CQkJCQkJCQkgIHBwcnVuZS0+ZXhlY19wcnVuaW5nX3N0ZXBzLAorCQkJCQkJCQkJCSAgcGFydGRl c2MsIHBhcnRrZXksIHBhcmVudF9wbGFuLAorCQkJCQkJCQkJCSAgcHJ1bmVzdGF0ZS0+ZWNvbnRl eHQpOworCQkJfQorCisJCQlpZiAoIWZpeF9zdWJwbGFuX21hcCkKKwkJCQljb250aW51ZTsKKwog CQkJLyogV2UganVzdCByZWJ1aWxkIHByZXNlbnRfcGFydHMgZnJvbSBzY3JhdGNoICovCiAJCQli bXNfZnJlZShwcHJ1bmUtPnByZXNlbnRfcGFydHMpOwogCQkJcHBydW5lLT5wcmVzZW50X3BhcnRz ID0gTlVMTDsKQEAgLTIyODgsMTkgKzI0MTYsMjIgQEAgUGFydGl0aW9uUHJ1bmVGaXhTdWJQbGFu TWFwKFBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUsCiAJfQogCiAJLyoKLQkgKiBXZSBt dXN0IGFsc28gcmVjb21wdXRlIHRoZSBvdGhlcl9zdWJwbGFucyBzZXQsIHNpbmNlIGluZGV4ZXMg aW4gaXQgbWF5Ci0JICogY2hhbmdlLgorCSAqIElmIHdlIGZpeGVkIHN1YnBsYW4gbWFwcywgd2Ug bXVzdCBhbHNvIHJlY29tcHV0ZSB0aGUgb3RoZXJfc3VicGxhbnMKKwkgKiBzZXQsIHNpbmNlIGlu ZGV4ZXMgaW4gaXQgbWF5IGNoYW5nZS4KIAkgKi8KLQluZXdfb3RoZXJfc3VicGxhbnMgPSBOVUxM OwotCWkgPSAtMTsKLQl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIocHJ1bmVzdGF0ZS0+b3Ro ZXJfc3VicGxhbnMsIGkpKSA+PSAwKQotCQluZXdfb3RoZXJfc3VicGxhbnMgPSBibXNfYWRkX21l bWJlcihuZXdfb3RoZXJfc3VicGxhbnMsCi0JCQkJCQkJCQkJCW5ld19zdWJwbGFuX2luZGV4ZXNb aV0gLSAxKTsKKwlpZiAoZml4X3N1YnBsYW5fbWFwKQorCXsKKwkJbmV3X290aGVyX3N1YnBsYW5z ID0gTlVMTDsKKwkJaSA9IC0xOworCQl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIocHJ1bmVz dGF0ZS0+b3RoZXJfc3VicGxhbnMsIGkpKSA+PSAwKQorCQkJbmV3X290aGVyX3N1YnBsYW5zID0g Ym1zX2FkZF9tZW1iZXIobmV3X290aGVyX3N1YnBsYW5zLAorCQkJCQkJCQkJCQkJbmV3X3N1YnBs YW5faW5kZXhlc1tpXSAtIDEpOwogCi0JYm1zX2ZyZWUocHJ1bmVzdGF0ZS0+b3RoZXJfc3VicGxh bnMpOwotCXBydW5lc3RhdGUtPm90aGVyX3N1YnBsYW5zID0gbmV3X290aGVyX3N1YnBsYW5zOwor CQlibXNfZnJlZShwcnVuZXN0YXRlLT5vdGhlcl9zdWJwbGFucyk7CisJCXBydW5lc3RhdGUtPm90 aGVyX3N1YnBsYW5zID0gbmV3X290aGVyX3N1YnBsYW5zOwogCi0JcGZyZWUobmV3X3N1YnBsYW5f aW5kZXhlcyk7CisJCXBmcmVlKG5ld19zdWJwbGFuX2luZGV4ZXMpOworCX0KIH0KIAogLyoKQEAg LTIzNTIsOCArMjQ4MywxMSBAQCBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1 bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKIAkJCQkJCQkJCSAgICZyZXN1bHQpOwogCiAJCS8qIEV4cHJl c3Npb24gZXZhbCBtYXkgaGF2ZSB1c2VkIHNwYWNlIGluIEV4cHJDb250ZXh0IHRvbyAqLwotCQlp ZiAocHBydW5lLT5leGVjX3BydW5pbmdfc3RlcHMpCisJCWlmIChwcHJ1bmUtPmV4ZWNfY29udGV4 dC5pbml0aWFsaXplZCkKKwkJeworCQkJQXNzZXJ0KHBwcnVuZS0+ZXhlY19wcnVuaW5nX3N0ZXBz KTsKIAkJCVJlc2V0RXhwckNvbnRleHQocHBydW5lLT5leGVjX2NvbnRleHQuZXhwcmNvbnRleHQp OworCQl9CiAJfQogCiAJLyogQWRkIGluIGFueSBzdWJwbGFucyB0aGF0IHBhcnRpdGlvbiBwcnVu aW5nIGRpZG4ndCBhY2NvdW50IGZvciAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUFwcGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCmluZGV4 IDk4NmVmMzQwMzBhLi4yMzk3ZTVlMTdiMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUFwcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwpA QCAtMTQ0LDExICsxNDQsMTEgQEAgRXhlY0luaXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUg KmVzdGF0ZSwgaW50IGVmbGFncykKIAkJICogc3VicGxhbnMgdG8gaW5pdGlhbGl6ZSAodmFsaWRz dWJwbGFucykgYnkgdGFraW5nIGludG8gYWNjb3VudCB0aGUKIAkJICogcmVzdWx0IG9mIHBlcmZv cm1pbmcgaW5pdGlhbCBwcnVuaW5nIGlmIGFueS4KIAkJICovCi0JCXBydW5lc3RhdGUgPSBFeGVj SW5pdFBhcnRpdGlvblBydW5pbmcoJmFwcGVuZHN0YXRlLT5wcywKLQkJCQkJCQkJCQkJICBsaXN0 X2xlbmd0aChub2RlLT5hcHBlbmRwbGFucyksCi0JCQkJCQkJCQkJCSAgbm9kZS0+cGFydF9wcnVu ZV9pbmRleCwKLQkJCQkJCQkJCQkJICBub2RlLT5hcHByZWxpZHMsCi0JCQkJCQkJCQkJCSAgJnZh bGlkc3VicGxhbnMpOworCQlwcnVuZXN0YXRlID0gRXhlY0luaXRQYXJ0aXRpb25FeGVjUHJ1bmlu ZygmYXBwZW5kc3RhdGUtPnBzLAorCQkJCQkJCQkJCQkJICBsaXN0X2xlbmd0aChub2RlLT5hcHBl bmRwbGFucyksCisJCQkJCQkJCQkJCQkgIG5vZGUtPnBhcnRfcHJ1bmVfaW5kZXgsCisJCQkJCQkJ CQkJCQkgIG5vZGUtPmFwcHJlbGlkcywKKwkJCQkJCQkJCQkJCSAgJnZhbGlkc3VicGxhbnMpOwog CQlhcHBlbmRzdGF0ZS0+YXNfcHJ1bmVfc3RhdGUgPSBwcnVuZXN0YXRlOwogCQlucGxhbnMgPSBi bXNfbnVtX21lbWJlcnModmFsaWRzdWJwbGFucyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1l cmdlQXBwZW5kLmMKaW5kZXggMTQ2OGY5NDIzODguLmIyZGM2NjI2Yzk5IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwpAQCAtOTIsMTEgKzkyLDExIEBAIEV4ZWNJbml0TWVy Z2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQog CQkgKiBzdWJwbGFucyB0byBpbml0aWFsaXplICh2YWxpZHN1YnBsYW5zKSBieSB0YWtpbmcgaW50 byBhY2NvdW50IHRoZQogCQkgKiByZXN1bHQgb2YgcGVyZm9ybWluZyBpbml0aWFsIHBydW5pbmcg aWYgYW55LgogCQkgKi8KLQkJcHJ1bmVzdGF0ZSA9IEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZygm bWVyZ2VzdGF0ZS0+cHMsCi0JCQkJCQkJCQkJCSAgbGlzdF9sZW5ndGgobm9kZS0+bWVyZ2VwbGFu cyksCi0JCQkJCQkJCQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmRleCwKLQkJCQkJCQkJCQkJICBu b2RlLT5hcHByZWxpZHMsCi0JCQkJCQkJCQkJCSAgJnZhbGlkc3VicGxhbnMpOworCQlwcnVuZXN0 YXRlID0gRXhlY0luaXRQYXJ0aXRpb25FeGVjUHJ1bmluZygmbWVyZ2VzdGF0ZS0+cHMsCisJCQkJ CQkJCQkJCQkgIGxpc3RfbGVuZ3RoKG5vZGUtPm1lcmdlcGxhbnMpLAorCQkJCQkJCQkJCQkJICBu b2RlLT5wYXJ0X3BydW5lX2luZGV4LAorCQkJCQkJCQkJCQkJICBub2RlLT5hcHByZWxpZHMsCisJ CQkJCQkJCQkJCQkgICZ2YWxpZHN1YnBsYW5zKTsKIAkJbWVyZ2VzdGF0ZS0+bXNfcHJ1bmVfc3Rh dGUgPSBwcnVuZXN0YXRlOwogCQlucGxhbnMgPSBibXNfbnVtX21lbWJlcnModmFsaWRzdWJwbGFu cyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYyBi L3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwppbmRleCBkM2Y2MGNjODdjOS4u NDY5M2VlZjBjNTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1 bmUuYworKysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMKQEAgLTM3ODMs MTMgKzM3ODMsOCBAQCBwYXJ0a2V5X2RhdHVtX2Zyb21fZXhwcihQYXJ0aXRpb25QcnVuZUNvbnRl eHQgKmNvbnRleHQsCiAJCS8qCiAJCSAqIFdlIHNob3VsZCBuZXZlciBzZWUgYSBub24tQ29uc3Qg aW4gYSBzdGVwIHVubGVzcyB0aGUgY2FsbGVyIGhhcwogCQkgKiBwYXNzZWQgYSB2YWxpZCBFeHBy Q29udGV4dC4KLQkJICoKLQkJICogV2hlbiBjb250ZXh0LT5wbGFuc3RhdGUgaXMgdmFsaWQsIGNv bnRleHQtPmV4cHJjb250ZXh0IGlzIHNhbWUgYXMKLQkJICogY29udGV4dC0+cGxhbnN0YXRlLT5w c19FeHByQ29udGV4dC4KIAkJICovCi0JCUFzc2VydChjb250ZXh0LT5wbGFuc3RhdGUgIT0gTlVM TCB8fCBjb250ZXh0LT5leHByY29udGV4dCAhPSBOVUxMKTsKLQkJQXNzZXJ0KGNvbnRleHQtPnBs YW5zdGF0ZSA9PSBOVUxMIHx8Ci0JCQkgICAoY29udGV4dC0+ZXhwcmNvbnRleHQgPT0gY29udGV4 dC0+cGxhbnN0YXRlLT5wc19FeHByQ29udGV4dCkpOworCQlBc3NlcnQoY29udGV4dC0+ZXhwcmNv bnRleHQgIT0gTlVMTCk7CiAKIAkJZXhwcnN0YXRlID0gY29udGV4dC0+ZXhwcnN0YXRlc1tzdGF0 ZWlkeF07CiAJCWVjdHggPSBjb250ZXh0LT5leHByY29udGV4dDsKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4 ZWNQYXJ0aXRpb24uaAppbmRleCAxMzE3NzgzMWQ5Zi4uODU1ZmVkNGZlYTUgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9l eGVjdXRvci9leGVjUGFydGl0aW9uLmgKQEAgLTQyLDYgKzQyLDkgQEAgZXh0ZXJuIHZvaWQgRXhl Y0NsZWFudXBUdXBsZVJvdXRpbmcoTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKICAqIFBhcnRp dGlvbmVkUmVsUHJ1bmVJbmZvIChzZWUgcGxhbm5vZGVzLmgpOyB0aG91Z2ggbm90ZSB0aGF0IGhl cmUsCiAgKiBzdWJwYXJ0X21hcCBjb250YWlucyBpbmRleGVzIGludG8gUGFydGl0aW9uUHJ1bmlu Z0RhdGEucGFydHJlbHBydW5lZGF0YVtdLgogICoKKyAqIHBhcnRyZWwJCQkJCQlQYXJ0aXRpb25l ZCB0YWJsZSBSZWxhdGlvbjsgb2J0YWluZWQgYnkKKyAqIAkJCQkJCQkJRXhlY0dldFJhbmdlVGFi bGVSZWxhdGlvbihlc3RhdGUsIHJ0aSksIHdoZXJlCisgKgkJCQkJCQkJcnRpIGlzIFBhcnRpdGlv bmVkUmVsUHJ1bmVJbmZvLnJ0aW5kZXguCiAgKiBucGFydHMJCQkJCQlMZW5ndGggb2Ygc3VicGxh bl9tYXBbXSBhbmQgc3VicGFydF9tYXBbXS4KICAqIHN1YnBsYW5fbWFwCQkJCQlTdWJwbGFuIGlu ZGV4IGJ5IHBhcnRpdGlvbiBpbmRleCwgb3IgLTEuCiAgKiBzdWJwYXJ0X21hcAkJCQkJU3VicGFy dCBpbmRleCBieSBwYXJ0aXRpb24gaW5kZXgsIG9yIC0xLgpAQCAtNTgsNiArNjEsNyBAQCBleHRl cm4gdm9pZCBFeGVjQ2xlYW51cFR1cGxlUm91dGluZyhNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRl LAogICovCiB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhCiB7CisJUmVs YXRpb24JcGFydHJlbDsKIAlpbnQJCQlucGFydHM7CiAJaW50CQkgICAqc3VicGxhbl9tYXA7CiAJ aW50CQkgICAqc3VicGFydF9tYXA7CkBAIC05MCw2ICs5NCw4IEBAIHR5cGVkZWYgc3RydWN0IFBh cnRpdGlvblBydW5pbmdEYXRhCiAgKiB0aGUgY2xhdXNlcyBiZWluZyB1bmFibGUgdG8gbWF0Y2gg dG8gYW55IHR1cGxlIHRoYXQgdGhlIHN1YnBsYW4gY291bGQKICAqIHBvc3NpYmx5IHByb2R1Y2Uu CiAgKgorICogZWNvbnRleHQJCQkJU3RhbmRhbG9uZSBFeHByQ29udGV4dCB0byBldmFsdWF0ZSBl eHByZXNzaW9ucyBpbgorICoJCQkJCQl0aGUgcHJ1bmluZyBzdGVwcwogICogZXhlY3BhcmFtaWRz CQkJQ29udGFpbnMgcGFyYW1pZHMgb2YgUEFSQU1fRVhFQyBQYXJhbXMgZm91bmQgd2l0aGluCiAg KgkJCQkJCWFueSBvZiB0aGUgcGFydHBydW5lZGF0YSBzdHJ1Y3RzLiAgUHJ1bmluZyBtdXN0IGJl CiAgKgkJCQkJCWRvbmUgYWdhaW4gZWFjaCB0aW1lIHRoZSB2YWx1ZSBvZiBvbmUgb2YgdGhlc2UK QEAgLTExMiw2ICsxMTgsNyBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25QcnVuaW5nRGF0YQog ICovCiB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25QcnVuZVN0YXRlCiB7CisJRXhwckNvbnRleHQg KmVjb250ZXh0OwogCUJpdG1hcHNldCAgKmV4ZWNwYXJhbWlkczsKIAlCaXRtYXBzZXQgICpvdGhl cl9zdWJwbGFuczsKIAlNZW1vcnlDb250ZXh0IHBydW5lX2NvbnRleHQ7CkBAIC0xMjEsMTEgKzEy OCwxMiBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25QcnVuZVN0YXRlCiAJUGFydGl0aW9uUHJ1 bmluZ0RhdGEgKnBhcnRwcnVuZWRhdGFbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKIH0gUGFydGl0 aW9uUHJ1bmVTdGF0ZTsKIAotZXh0ZXJuIFBhcnRpdGlvblBydW5lU3RhdGUgKkV4ZWNJbml0UGFy dGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKLQkJCQkJCQkJCQkJCQkgaW50IG5f dG90YWxfc3VicGxhbnMsCi0JCQkJCQkJCQkJCQkJIGludCBwYXJ0X3BydW5lX2luZGV4LAotCQkJ CQkJCQkJCQkJCSBCaXRtYXBzZXQgKnJlbGlkcywKLQkJCQkJCQkJCQkJCQkgQml0bWFwc2V0ICoq aW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zKTsKK2V4dGVybiB2b2lkIEV4ZWNEb0luaXRpYWxQcnVu aW5nKEVTdGF0ZSAqZXN0YXRlKTsKK2V4dGVybiBQYXJ0aXRpb25QcnVuZVN0YXRlICpFeGVjSW5p dFBhcnRpdGlvbkV4ZWNQcnVuaW5nKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAorCQkJCQkJCQkJCQkJ CQkgaW50IG5fdG90YWxfc3VicGxhbnMsCisJCQkJCQkJCQkJCQkJCSBpbnQgcGFydF9wcnVuZV9p bmRleCwKKwkJCQkJCQkJCQkJCQkJIEJpdG1hcHNldCAqcmVsaWRzLAorCQkJCQkJCQkJCQkJCQkg Qml0bWFwc2V0ICoqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zKTsKIGV4dGVybiBCaXRtYXBzZXQg KkV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRl LAogCQkJCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9wcnVuZSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgK aW5kZXggOGNlNDQzMGFmMDQuLmFjYTE1Zjc3MWEyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAt NjU2LDYgKzY1Niw4IEBAIHR5cGVkZWYgc3RydWN0IEVTdGF0ZQogCUxpc3QJICAgKmVzX3J0ZXBl cm1pbmZvczsJLyogTGlzdCBvZiBSVEVQZXJtaXNzaW9uSW5mbyAqLwogCVBsYW5uZWRTdG10ICpl c19wbGFubmVkc3RtdDsJLyogbGluayB0byB0b3Agb2YgcGxhbiB0cmVlICovCiAJTGlzdAkgICAq ZXNfcGFydF9wcnVuZV9pbmZvczsJLyogTGlzdCBvZiBQYXJ0aXRpb25QcnVuZUluZm8gKi8KKwlM aXN0CSAgICplc19wYXJ0X3BydW5lX3N0YXRlczsJLyogTGlzdCBvZiBQYXJ0aXRpb25QcnVuZVN0 YXRlICovCisJTGlzdAkgICAqZXNfcGFydF9wcnVuZV9yZXN1bHRzOwkvKiBMaXN0IG9mIEJpdG1h cHNldCAqLwogCWNvbnN0IGNoYXIgKmVzX3NvdXJjZVRleHQ7CS8qIFNvdXJjZSB0ZXh0IGZyb20g UXVlcnlEZXNjICovCiAKIAlKdW5rRmlsdGVyICplc19qdW5rRmlsdGVyOwkvKiB0b3AtbGV2ZWwg anVuayBmaWx0ZXIsIGlmIGFueSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFydGl0aW9u aW5nL3BhcnRwcnVuZS5oIGIvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oCmlu ZGV4IGM0MTM3MzQ3ODlhLi4wZWQzOWM4OWMzZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFy dGl0aW9uaW5nL3BhcnRwcnVuZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0 cHJ1bmUuaApAQCAtMjYsNiArMjYsNyBAQCBzdHJ1Y3QgUmVsT3B0SW5mbzsKICAqCQlTdG9yZXMg aW5mb3JtYXRpb24gbmVlZGVkIGF0IHJ1bnRpbWUgZm9yIHBydW5pbmcgY29tcHV0YXRpb25zCiAg KgkJcmVsYXRlZCB0byBhIHNpbmdsZSBwYXJ0aXRpb25lZCB0YWJsZS4KICAqCisgKiBpbml0aWFs aXplZAkJSGFzIHRoZSBpbmZvcm1hdGlvbiBpbiB0aGlzIHN0cnVjdCBiZWVuIGluaXRpYWxpemVk PwogICogc3RyYXRlZ3kJCQlQYXJ0aXRpb24gc3RyYXRlZ3ksIGUuZy4gTElTVCwgUkFOR0UsIEhB U0guCiAgKiBwYXJ0bmF0dHMJCU51bWJlciBvZiBjb2x1bW5zIGluIHRoZSBwYXJ0aXRpb24ga2V5 LgogICogbnBhcnRzCQkJTnVtYmVyIG9mIHBhcnRpdGlvbnMgaW4gdGhpcyBwYXJ0aXRpb25lZCB0 YWJsZS4KQEAgLTQ4LDYgKzQ5LDcgQEAgc3RydWN0IFJlbE9wdEluZm87CiAgKi8KIHR5cGVkZWYg c3RydWN0IFBhcnRpdGlvblBydW5lQ29udGV4dAogeworCWJvb2wJCWluaXRpYWxpemVkOwogCWNo YXIJCXN0cmF0ZWd5OwogCWludAkJCXBhcnRuYXR0czsKIAlpbnQJCQlucGFydHM7Ci0tIAoyLjQz LjAKCg== --00000000000029efd4062c5a620d Content-Type: application/octet-stream; name="v60-0001-Move-PartitionPruneInfo-out-of-plan-nodes-into-P.patch" Content-Disposition: attachment; filename="v60-0001-Move-PartitionPruneInfo-out-of-plan-nodes-into-P.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m68xq4x40 RnJvbSAxMmVlOTM2OTQyNzk0MzNhNDljNzQwZjdmYmNlNWJjZDI1YTRjZGJkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMjMgSmFuIDIwMjUgMTQ6MDE6MTQgKzA5MDAKU3ViamVjdDogW1BBVENIIHY2 MCAxLzNdIE1vdmUgUGFydGl0aW9uUHJ1bmVJbmZvIG91dCBvZiBwbGFuIG5vZGVzIGludG8KIFBs YW5uZWRTdG10CgpUaGlzIGNoYW5nZSBtb3ZlcyBQYXJ0aXRpb25QcnVuZUluZm8gZnJvbSBpbmRp dmlkdWFsIHBsYW4gbm9kZXMgdG8KUGxhbm5lZFN0bXQsIGFsbG93aW5nIHJ1bnRpbWUgaW5pdGlh bCBwcnVuaW5nIHRvIHNwYW4gdGhlIGVudGlyZSBwbGFuCnRyZWUgd2l0aG91dCBuZWVkaW5nIHRv IHRyYXZlcnNlIGl0IHRvIGZpbmQgUGFydGl0aW9uUHJ1bmVJbmZvcy4KClRoZSBQYXJ0aXRpb25Q cnVuZUluZm8gcG9pbnRlciBmaWVsZHMgaW4gQXBwZW5kIGFuZCBNZXJnZUFwcGVuZCBub2Rlcwph cmUgcmVwbGFjZWQgd2l0aCBhbiBpbnRlZ2VyIGluZGV4IHBvaW50aW5nIHRvIGEgbGlzdCBvZgpQ YXJ0aXRpb25QcnVuZUluZm9zIGluIFBsYW5uZWRTdG10LCB3aGljaCBub3cgaG9sZHMgYWxsClBh cnRpdGlvblBydW5lSW5mb3MgZm9yIHRoZSBtYWluIHF1ZXJ5IGFuZCBpdHMgc3VicXVlcmllcy4K CkEgYml0bWFwc2V0IGZpZWxkIGlzIGFkZGVkIHRvIFBhcnRpdGlvblBydW5lSW5mbyB0byBzdG9y ZSB0aGUgUlQKaW5kZXhlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBhcHByZWxpZHMgZmllbGQgaW4g QXBwZW5kIG9yIE1lcmdlQXBwZW5kLgpUaGlzIGVuc3VyZXMgZXhlY3V0aW9uIHBydW5pbmcgbG9n aWMgdmVyaWZpZXMgaXQgb3BlcmF0ZXMgb24gdGhlCmNvcnJlY3QgcGxhbiBub2RlLgoKRHVwbGlj YXRlZCBjb2RlIGluIHNldF9hcHBlbmRfcmVmZXJlbmNlcygpIGFuZApzZXRfbWVyZ2VhcHBlbmRf cmVmZXJlbmNlcygpIGlzIHJlZmFjdG9yZWQgaW50byBhIG5ldyBmdW5jdGlvbiwKcmVnaXN0ZXJf cHJ1bmVpbmZvKCkuIFRoaXMgZnVuY3Rpb24gdXBkYXRlcyBSVCBpbmRleGVzIGJ5IGFwcGx5aW5n CnJ0b2Zmc2V0IGFuZCBhZGRzIFBhcnRpdGlvblBydW5lSW5mbyB0byB0aGUgZ2xvYmFsIGxpc3Qg aW4KUGxhbm5lckdsb2JhbC4KClJldmlld2VkLWJ5OiBBbHZhcm8gSGVycmVyYQpSZXZpZXdlZC1i eTogUm9iZXJ0IEhhYXMKUmV2aWV3ZWQtYnk6IFRvbWFzIFZvbmRyYQpEaXNjdXNzaW9uOiBodHRw czovL3Bvc3Rnci5lcy9tL0NBK0hpd3FGR2tNU2dlNlRnQzlLUXpkZTBvaHBBeWNMUXVWN29vaXRF RXBiS0IwT19tZ0BtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNN YWluLmMgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwu YyAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jICAgIHwg IDE3ICsrKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jICAgICAgICB8ICAgMSAr CiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgICAgICAgfCAgIDUgKy0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jICB8ICAgNSArLQogc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jIHwgIDIzICsrKy0tLQogc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vcGxhbm5lci5jICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL3NldHJlZnMuYyAgICB8IDEwMyArKysrKysrKysrKysrKy0tLS0tLS0tLS0KIHNyYy9iYWNr ZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYyAgICB8ICAxOSArKystLQogc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oICAgIHwgICAzICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9l eGVjbm9kZXMuaCAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVz LmggICAgICAgICAgIHwgICA2ICsrCiBzcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCAgICAg ICAgICAgfCAgMTYgKysrLQogc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oICAg IHwgICA4ICstCiAxNSBmaWxlcyBjaGFuZ2VkLCAxMzcgaW5zZXJ0aW9ucygrKSwgNzMgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggZmI4ZGJhM2FiMmMuLjFkMjdiODQw Y2E5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTg1Myw2ICs4NTMsNyBAQCBJbml0UGxh bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAlFeGVjSW5pdFJhbmdlVGFibGUo ZXN0YXRlLCByYW5nZVRhYmxlLCBwbGFubmVkc3RtdC0+cGVybUluZm9zKTsKIAogCWVzdGF0ZS0+ ZXNfcGxhbm5lZHN0bXQgPSBwbGFubmVkc3RtdDsKKwllc3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5m b3MgPSBwbGFubmVkc3RtdC0+cGFydFBydW5lSW5mb3M7CiAKIAkvKgogCSAqIE5leHQsIGJ1aWxk IHRoZSBFeGVjUm93TWFyayBhcnJheSBmcm9tIHRoZSBQbGFuUm93TWFyayhzKSwgaWYgYW55Lgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwppbmRleCBmZjRkOWRkMWJiMy4uOWMzMTNkODEz MTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCkBAIC0xODEsNiArMTgxLDcgQEAg RXhlY1NlcmlhbGl6ZVBsYW4oUGxhbiAqcGxhbiwgRVN0YXRlICplc3RhdGUpCiAJcHN0bXQtPmRl cGVuZHNPblJvbGUgPSBmYWxzZTsKIAlwc3RtdC0+cGFyYWxsZWxNb2RlTmVlZGVkID0gZmFsc2U7 CiAJcHN0bXQtPnBsYW5UcmVlID0gcGxhbjsKKwlwc3RtdC0+cGFydFBydW5lSW5mb3MgPSBlc3Rh dGUtPmVzX3BhcnRfcHJ1bmVfaW5mb3M7CiAJcHN0bXQtPnJ0YWJsZSA9IGVzdGF0ZS0+ZXNfcmFu Z2VfdGFibGU7CiAJcHN0bXQtPnBlcm1JbmZvcyA9IGVzdGF0ZS0+ZXNfcnRlcGVybWluZm9zOwog CXBzdG10LT5yZXN1bHRSZWxhdGlvbnMgPSBOSUw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUGFydGl0aW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0 aW9uLmMKaW5kZXggN2U3MWQ0MjJhNjIuLjE2YWVjNTlkMGVjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1BhcnRpdGlvbi5jCkBAIC0xNzg2LDYgKzE3ODYsOSBAQCBhZGp1c3RfcGFydGl0aW9uX2Nv bG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRyTWFwICphdHRyTWFwKQogICoJCUluaXRp YWxpemUgZGF0YSBzdHJ1Y3R1cmUgbmVlZGVkIGZvciBydW4tdGltZSBwYXJ0aXRpb24gcHJ1bmlu ZyBhbmQKICAqCQlkbyBpbml0aWFsIHBydW5pbmcgaWYgbmVlZGVkCiAgKgorICogJ3JlbGlkcycg aWRlbnRpZmllcyB0aGUgcmVsYXRpb24gdG8gd2hpY2ggYm90aCB0aGUgcGFyZW50IHBsYW4gYW5k IHRoZQorICogUGFydGl0aW9uUHJ1bmVJbmZvIGdpdmVuIGJ5ICdwYXJ0X3BydW5lX2luZGV4JyBi ZWxvbmcuCisgKgogICogT24gcmV0dXJuLCAqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zIGlzIGFz c2lnbmVkIHRoZSBzZXQgb2YgaW5kZXhlcyBvZgogICogY2hpbGQgc3VicGxhbnMgdGhhdCBtdXN0 IGJlIGluaXRpYWxpemVkIGFsb25nIHdpdGggdGhlIHBhcmVudCBwbGFuIG5vZGUuCiAgKiBJbml0 aWFsIHBydW5pbmcgaXMgcGVyZm9ybWVkIGhlcmUgaWYgbmVlZGVkIGFuZCBpbiB0aGF0IGNhc2Ug b25seSB0aGUKQEAgLTE3OTgsMTEgKzE4MDEsMjMgQEAgYWRqdXN0X3BhcnRpdGlvbl9jb2xub3Nf dXNpbmdfbWFwKExpc3QgKmNvbG5vcywgQXR0ck1hcCAqYXR0ck1hcCkKIFBhcnRpdGlvblBydW5l U3RhdGUgKgogRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAog CQkJCQkJIGludCBuX3RvdGFsX3N1YnBsYW5zLAotCQkJCQkJIFBhcnRpdGlvblBydW5lSW5mbyAq cHJ1bmVpbmZvLAorCQkJCQkJIGludCBwYXJ0X3BydW5lX2luZGV4LAorCQkJCQkJIEJpdG1hcHNl dCAqcmVsaWRzLAogCQkJCQkJIEJpdG1hcHNldCAqKmluaXRpYWxseV92YWxpZF9zdWJwbGFucykK IHsKIAlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlOwogCUVTdGF0ZQkgICAqZXN0YXRl ID0gcGxhbnN0YXRlLT5zdGF0ZTsKKwlQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbzsKKwor CS8qIE9idGFpbiB0aGUgcHJ1bmVpbmZvIHdlIG5lZWQuICovCisJcHJ1bmVpbmZvID0gbGlzdF9u dGhfbm9kZShQYXJ0aXRpb25QcnVuZUluZm8sIGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcywK KwkJCQkJCQkgIHBhcnRfcHJ1bmVfaW5kZXgpOworCisJLyogSXRzIHJlbGlkcyBiZXR0ZXIgbWF0 Y2ggdGhlIHBsYW4gbm9kZSdzIG9yIHRoZSBwbGFubmVyIG1lc3NlZCB1cC4gKi8KKwlpZiAoIWJt c19lcXVhbChyZWxpZHMsIHBydW5laW5mby0+cmVsaWRzKSkKKwkJZWxvZyhFUlJPUiwgIndyb25n IHBydW5laW5mbyB3aXRoIHJlbGlkcz0lcyBmb3VuZCBhdCBwYXJ0X3BydW5lX2luZGV4PSVkIGNv bnRhaW5lZCBpbiBwbGFuIG5vZGUgd2l0aCByZWxpZHM9JXMiLAorCQkJIGJtc1RvU3RyaW5nKHBy dW5laW5mby0+cmVsaWRzKSwgcGFydF9wcnVuZV9pbmRleCwKKwkJCSBibXNUb1N0cmluZyhyZWxp ZHMpKTsKIAogCS8qIFdlIG1heSBuZWVkIGFuIGV4cHJlc3Npb24gY29udGV4dCB0byBldmFsdWF0 ZSBwYXJ0aXRpb24gZXhwcnMgKi8KIAlFeGVjQXNzaWduRXhwckNvbnRleHQoZXN0YXRlLCBwbGFu c3RhdGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwppbmRleCA3YzUzOWRlNWNmMi4uNmFhYzZm M2E4NzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC0xMTgsNiArMTE4LDcgQEAgQ3Jl YXRlRXhlY3V0b3JTdGF0ZSh2b2lkKQogCWVzdGF0ZS0+ZXNfcm93bWFya3MgPSBOVUxMOwogCWVz dGF0ZS0+ZXNfcnRlcGVybWluZm9zID0gTklMOwogCWVzdGF0ZS0+ZXNfcGxhbm5lZHN0bXQgPSBO VUxMOworCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcyA9IE5JTDsKIAogCWVzdGF0ZS0+ZXNf anVua0ZpbHRlciA9IE5VTEw7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwppbmRleCAwYmQw ZTRlNTRkMy4uOTg2ZWYzNDAzMGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVBcHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKQEAgLTEz NSw3ICsxMzUsNyBAQCBFeGVjSW5pdEFwcGVuZChBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRl LCBpbnQgZWZsYWdzKQogCWFwcGVuZHN0YXRlLT5hc19iZWd1biA9IGZhbHNlOwogCiAJLyogSWYg cnVuLXRpbWUgcGFydGl0aW9uIHBydW5pbmcgaXMgZW5hYmxlZCwgdGhlbiBzZXQgdGhhdCB1cCBu b3cgKi8KLQlpZiAobm9kZS0+cGFydF9wcnVuZV9pbmZvICE9IE5VTEwpCisJaWYgKG5vZGUtPnBh cnRfcHJ1bmVfaW5kZXggPj0gMCkKIAl7CiAJCVBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3Rh dGU7CiAKQEAgLTE0Niw3ICsxNDYsOCBAQCBFeGVjSW5pdEFwcGVuZChBcHBlbmQgKm5vZGUsIEVT dGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkgKi8KIAkJcHJ1bmVzdGF0ZSA9IEV4ZWNJbml0 UGFydGl0aW9uUHJ1bmluZygmYXBwZW5kc3RhdGUtPnBzLAogCQkJCQkJCQkJCQkgIGxpc3RfbGVu Z3RoKG5vZGUtPmFwcGVuZHBsYW5zKSwKLQkJCQkJCQkJCQkJICBub2RlLT5wYXJ0X3BydW5lX2lu Zm8sCisJCQkJCQkJCQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmRleCwKKwkJCQkJCQkJCQkJICBu b2RlLT5hcHByZWxpZHMsCiAJCQkJCQkJCQkJCSAgJnZhbGlkc3VicGxhbnMpOwogCQlhcHBlbmRz dGF0ZS0+YXNfcHJ1bmVfc3RhdGUgPSBwcnVuZXN0YXRlOwogCQlucGxhbnMgPSBibXNfbnVtX21l bWJlcnModmFsaWRzdWJwbGFucyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTWVyZ2VBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5j CmluZGV4IGUxNTJjOWVlM2EwLi4xNDY4Zjk0MjM4OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZU1lcmdlQXBwZW5kLmMKQEAgLTgzLDcgKzgzLDcgQEAgRXhlY0luaXRNZXJnZUFwcGVuZChNZXJn ZUFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJbWVyZ2VzdGF0ZS0+ cHMuRXhlY1Byb2NOb2RlID0gRXhlY01lcmdlQXBwZW5kOwogCiAJLyogSWYgcnVuLXRpbWUgcGFy dGl0aW9uIHBydW5pbmcgaXMgZW5hYmxlZCwgdGhlbiBzZXQgdGhhdCB1cCBub3cgKi8KLQlpZiAo bm9kZS0+cGFydF9wcnVuZV9pbmZvICE9IE5VTEwpCisJaWYgKG5vZGUtPnBhcnRfcHJ1bmVfaW5k ZXggPj0gMCkKIAl7CiAJCVBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGU7CiAKQEAgLTk0 LDcgKzk0LDggQEAgRXhlY0luaXRNZXJnZUFwcGVuZChNZXJnZUFwcGVuZCAqbm9kZSwgRVN0YXRl ICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCSAqLwogCQlwcnVuZXN0YXRlID0gRXhlY0luaXRQYXJ0 aXRpb25QcnVuaW5nKCZtZXJnZXN0YXRlLT5wcywKIAkJCQkJCQkJCQkJICBsaXN0X2xlbmd0aChu b2RlLT5tZXJnZXBsYW5zKSwKLQkJCQkJCQkJCQkJICBub2RlLT5wYXJ0X3BydW5lX2luZm8sCisJ CQkJCQkJCQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmRleCwKKwkJCQkJCQkJCQkJICBub2RlLT5h cHByZWxpZHMsCiAJCQkJCQkJCQkJCSAgJnZhbGlkc3VicGxhbnMpOwogCQltZXJnZXN0YXRlLT5t c19wcnVuZV9zdGF0ZSA9IHBydW5lc3RhdGU7CiAJCW5wbGFucyA9IGJtc19udW1fbWVtYmVycyh2 YWxpZHN1YnBsYW5zKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2Ny ZWF0ZXBsYW4uYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwppbmRl eCAxMTA2Y2Q4NWYwYy4uODE2YTJiMmE1NzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGlt aXplci9wbGFuL2NyZWF0ZXBsYW4uYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9j cmVhdGVwbGFuLmMKQEAgLTEyMjcsNyArMTIyNyw2IEBAIGNyZWF0ZV9hcHBlbmRfcGxhbihQbGFu bmVySW5mbyAqcm9vdCwgQXBwZW5kUGF0aCAqYmVzdF9wYXRoLCBpbnQgZmxhZ3MpCiAJTGlzdENl bGwgICAqc3VicGF0aHM7CiAJaW50CQkJbmFzeW5jcGxhbnMgPSAwOwogCVJlbE9wdEluZm8gKnJl bCA9IGJlc3RfcGF0aC0+cGF0aC5wYXJlbnQ7Ci0JUGFydGl0aW9uUHJ1bmVJbmZvICpwYXJ0cHJ1 bmVpbmZvID0gTlVMTDsKIAlpbnQJCQlub2RlbnVtc29ydGtleXMgPSAwOwogCUF0dHJOdW1iZXIg Km5vZGVTb3J0Q29sSWR4ID0gTlVMTDsKIAlPaWQJCSAgICpub2RlU29ydE9wZXJhdG9ycyA9IE5V TEw7CkBAIC0xMzc4LDYgKzEzNzcsOSBAQCBjcmVhdGVfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8g KnJvb3QsIEFwcGVuZFBhdGggKmJlc3RfcGF0aCwgaW50IGZsYWdzKQogCQlzdWJwbGFucyA9IGxh cHBlbmQoc3VicGxhbnMsIHN1YnBsYW4pOwogCX0KIAorCS8qIFNldCBiZWxvdyBpZiB3ZSBmaW5k IHF1YWxzIHRoYXQgd2UgY2FuIHVzZSB0byBydW4tdGltZSBwcnVuZSAqLworCXBsYW4tPnBhcnRf cHJ1bmVfaW5kZXggPSAtMTsKKwogCS8qCiAJICogSWYgYW55IHF1YWxzIGV4aXN0LCB0aGV5IG1h eSBiZSB1c2VmdWwgdG8gcGVyZm9ybSBmdXJ0aGVyIHBhcnRpdGlvbgogCSAqIHBydW5pbmcgZHVy aW5nIGV4ZWN1dGlvbi4gIEdhdGhlciBpbmZvcm1hdGlvbiBuZWVkZWQgYnkgdGhlIGV4ZWN1dG9y IHRvCkBAIC0xNDAxLDE2ICsxNDAzLDE0IEBAIGNyZWF0ZV9hcHBlbmRfcGxhbihQbGFubmVySW5m byAqcm9vdCwgQXBwZW5kUGF0aCAqYmVzdF9wYXRoLCBpbnQgZmxhZ3MpCiAJCX0KIAogCQlpZiAo cHJ1bmVxdWFsICE9IE5JTCkKLQkJCXBhcnRwcnVuZWluZm8gPQotCQkJCW1ha2VfcGFydGl0aW9u X3BydW5laW5mbyhyb290LCByZWwsCi0JCQkJCQkJCQkJIGJlc3RfcGF0aC0+c3VicGF0aHMsCi0J CQkJCQkJCQkJIHBydW5lcXVhbCk7CisJCQlwbGFuLT5wYXJ0X3BydW5lX2luZGV4ID0gbWFrZV9w YXJ0aXRpb25fcHJ1bmVpbmZvKHJvb3QsIHJlbCwKKwkJCQkJCQkJCQkJCQkJCSAgYmVzdF9wYXRo LT5zdWJwYXRocywKKwkJCQkJCQkJCQkJCQkJCSAgcHJ1bmVxdWFsKTsKIAl9CiAKIAlwbGFuLT5h cHBlbmRwbGFucyA9IHN1YnBsYW5zOwogCXBsYW4tPm5hc3luY3BsYW5zID0gbmFzeW5jcGxhbnM7 CiAJcGxhbi0+Zmlyc3RfcGFydGlhbF9wbGFuID0gYmVzdF9wYXRoLT5maXJzdF9wYXJ0aWFsX3Bh dGg7Ci0JcGxhbi0+cGFydF9wcnVuZV9pbmZvID0gcGFydHBydW5laW5mbzsKIAogCWNvcHlfZ2Vu ZXJpY19wYXRoX2luZm8oJnBsYW4tPnBsYW4sIChQYXRoICopIGJlc3RfcGF0aCk7CiAKQEAgLTE0 NDksNyArMTQ0OSw2IEBAIGNyZWF0ZV9tZXJnZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9v dCwgTWVyZ2VBcHBlbmRQYXRoICpiZXN0X3BhdGgsCiAJTGlzdAkgICAqc3VicGxhbnMgPSBOSUw7 CiAJTGlzdENlbGwgICAqc3VicGF0aHM7CiAJUmVsT3B0SW5mbyAqcmVsID0gYmVzdF9wYXRoLT5w YXRoLnBhcmVudDsKLQlQYXJ0aXRpb25QcnVuZUluZm8gKnBhcnRwcnVuZWluZm8gPSBOVUxMOwog CiAJLyoKIAkgKiBXZSBkb24ndCBoYXZlIHRoZSBhY3R1YWwgY3JlYXRpb24gb2YgdGhlIE1lcmdl QXBwZW5kIG5vZGUgc3BsaXQgb3V0CkBAIC0xNTQyLDYgKzE1NDEsOSBAQCBjcmVhdGVfbWVyZ2Vf YXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIE1lcmdlQXBwZW5kUGF0aCAqYmVzdF9wYXRo LAogCQlzdWJwbGFucyA9IGxhcHBlbmQoc3VicGxhbnMsIHN1YnBsYW4pOwogCX0KIAorCS8qIFNl dCBiZWxvdyBpZiB3ZSBmaW5kIHF1YWxzIHRoYXQgd2UgY2FuIHVzZSB0byBydW4tdGltZSBwcnVu ZSAqLworCW5vZGUtPnBhcnRfcHJ1bmVfaW5kZXggPSAtMTsKKwogCS8qCiAJICogSWYgYW55IHF1 YWxzIGV4aXN0LCB0aGV5IG1heSBiZSB1c2VmdWwgdG8gcGVyZm9ybSBmdXJ0aGVyIHBhcnRpdGlv bgogCSAqIHBydW5pbmcgZHVyaW5nIGV4ZWN1dGlvbi4gIEdhdGhlciBpbmZvcm1hdGlvbiBuZWVk ZWQgYnkgdGhlIGV4ZWN1dG9yIHRvCkBAIC0xNTU3LDEzICsxNTU5LDEyIEBAIGNyZWF0ZV9tZXJn ZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgTWVyZ2VBcHBlbmRQYXRoICpiZXN0X3Bh dGgsCiAJCUFzc2VydChiZXN0X3BhdGgtPnBhdGgucGFyYW1faW5mbyA9PSBOVUxMKTsKIAogCQlp ZiAocHJ1bmVxdWFsICE9IE5JTCkKLQkJCXBhcnRwcnVuZWluZm8gPSBtYWtlX3BhcnRpdGlvbl9w cnVuZWluZm8ocm9vdCwgcmVsLAotCQkJCQkJCQkJCQkJCSBiZXN0X3BhdGgtPnN1YnBhdGhzLAot CQkJCQkJCQkJCQkJCSBwcnVuZXF1YWwpOworCQkJbm9kZS0+cGFydF9wcnVuZV9pbmRleCA9IG1h a2VfcGFydGl0aW9uX3BydW5laW5mbyhyb290LCByZWwsCisJCQkJCQkJCQkJCQkJCQkgIGJlc3Rf cGF0aC0+c3VicGF0aHMsCisJCQkJCQkJCQkJCQkJCQkgIHBydW5lcXVhbCk7CiAJfQogCiAJbm9k ZS0+bWVyZ2VwbGFucyA9IHN1YnBsYW5zOwotCW5vZGUtPnBhcnRfcHJ1bmVfaW5mbyA9IHBhcnRw cnVuZWluZm87CiAKIAkvKgogCSAqIElmIHByZXBhcmVfc29ydF9mcm9tX3BhdGhrZXlzIGFkZGVk IHNvcnQgY29sdW1ucywgYnV0IHdlIHdlcmUgdG9sZCB0bwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v cGxhbm5lci5jCmluZGV4IDY4MDNlZGQwODU0Li44YTQ3NGE1MGJlNyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGlt aXplci9wbGFuL3BsYW5uZXIuYwpAQCAtNTU1LDYgKzU1NSw3IEBAIHN0YW5kYXJkX3BsYW5uZXIo UXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcsIGludCBjdXJzb3JPcHRpb25z LAogCXJlc3VsdC0+ZGVwZW5kc09uUm9sZSA9IGdsb2ItPmRlcGVuZHNPblJvbGU7CiAJcmVzdWx0 LT5wYXJhbGxlbE1vZGVOZWVkZWQgPSBnbG9iLT5wYXJhbGxlbE1vZGVOZWVkZWQ7CiAJcmVzdWx0 LT5wbGFuVHJlZSA9IHRvcF9wbGFuOworCXJlc3VsdC0+cGFydFBydW5lSW5mb3MgPSBnbG9iLT5w YXJ0UHJ1bmVJbmZvczsKIAlyZXN1bHQtPnJ0YWJsZSA9IGdsb2ItPmZpbmFscnRhYmxlOwogCXJl c3VsdC0+cGVybUluZm9zID0gZ2xvYi0+ZmluYWxydGVwZXJtaW5mb3M7CiAJcmVzdWx0LT5yZXN1 bHRSZWxhdGlvbnMgPSBnbG9iLT5yZXN1bHRSZWxhdGlvbnM7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxh bi9zZXRyZWZzLmMKaW5kZXggMWU3YjdiYzZmZmMuLjA4NjgyNDliZTk0IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vc2V0cmVmcy5jCkBAIC0xNzMxLDYgKzE3MzEsNTMgQEAgc2V0X2N1c3RvbXNj YW5fcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwKIAljc2Nhbi0+Y3VzdG9tX3JlbGlkcyA9 IG9mZnNldF9yZWxpZF9zZXQoY3NjYW4tPmN1c3RvbV9yZWxpZHMsIHJ0b2Zmc2V0KTsKIH0KIAor LyoKKyAqIHJlZ2lzdGVyX3BhcnRwcnVuZWluZm8KKyAqCQlTdWJyb3V0aW5lIGZvciBzZXRfYXBw ZW5kX3JlZmVyZW5jZXMgYW5kIHNldF9tZXJnZWFwcGVuZF9yZWZlcmVuY2VzCisgKgorICogQWRk IHRoZSBQYXJ0aXRpb25QcnVuZUluZm8gZnJvbSByb290LT5wYXJ0UHJ1bmVJbmZvcyBhdCB0aGUg Z2l2ZW4gaW5kZXgKKyAqIGludG8gUGxhbm5lckdsb2JhbC0+cGFydFBydW5lSW5mb3MgYW5kIHJl dHVybiBpdHMgaW5kZXggdGhlcmUuCisgKgorICogQWxzbyB1cGRhdGUgdGhlIFJUIGluZGV4ZXMg cHJlc2VudCBpbiBQYXJ0aXRpb25lZFJlbFBydW5lSW5mb3MgdG8gYWRkIHRoZQorICogb2Zmc2V0 LgorICovCitzdGF0aWMgaW50CityZWdpc3Rlcl9wYXJ0cHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpy b290LCBpbnQgcGFydF9wcnVuZV9pbmRleCwgaW50IHJ0b2Zmc2V0KQoreworCVBsYW5uZXJHbG9i YWwgKmdsb2IgPSByb290LT5nbG9iOworCVBhcnRpdGlvblBydW5lSW5mbyAqcGluZm87CisJTGlz dENlbGwgICAqbDsKKworCUFzc2VydChwYXJ0X3BydW5lX2luZGV4ID49IDAgJiYKKwkJICAgcGFy dF9wcnVuZV9pbmRleCA8IGxpc3RfbGVuZ3RoKHJvb3QtPnBhcnRQcnVuZUluZm9zKSk7CisJcGlu Zm8gPSBsaXN0X250aF9ub2RlKFBhcnRpdGlvblBydW5lSW5mbywgcm9vdC0+cGFydFBydW5lSW5m b3MsCisJCQkJCQkgIHBhcnRfcHJ1bmVfaW5kZXgpOworCisJcGluZm8tPnJlbGlkcyA9IG9mZnNl dF9yZWxpZF9zZXQocGluZm8tPnJlbGlkcywgcnRvZmZzZXQpOworCWZvcmVhY2gobCwgcGluZm8t PnBydW5lX2luZm9zKQorCXsKKwkJTGlzdAkgICAqcHJ1bmVfaW5mb3MgPSBsZmlyc3QobCk7CisJ CUxpc3RDZWxsICAgKmwyOworCisJCWZvcmVhY2gobDIsIHBydW5lX2luZm9zKQorCQl7CisJCQlQ YXJ0aXRpb25lZFJlbFBydW5lSW5mbyAqcHJlbGluZm8gPSBsZmlyc3QobDIpOworCisJCQlwcmVs aW5mby0+cnRpbmRleCArPSBydG9mZnNldDsKKwkJCXByZWxpbmZvLT5pbml0aWFsX3BydW5pbmdf c3RlcHMgPQorCQkJCWZpeF9zY2FuX2xpc3Qocm9vdCwgcHJlbGluZm8tPmluaXRpYWxfcHJ1bmlu Z19zdGVwcywKKwkJCQkJCQkgIHJ0b2Zmc2V0LCAxKTsKKwkJCXByZWxpbmZvLT5leGVjX3BydW5p bmdfc3RlcHMgPQorCQkJCWZpeF9zY2FuX2xpc3Qocm9vdCwgcHJlbGluZm8tPmV4ZWNfcHJ1bmlu Z19zdGVwcywKKwkJCQkJCQkgIHJ0b2Zmc2V0LCAxKTsKKwkJfQorCX0KKworCWdsb2ItPnBhcnRQ cnVuZUluZm9zID0gbGFwcGVuZChnbG9iLT5wYXJ0UHJ1bmVJbmZvcywgcGluZm8pOworCisJcmV0 dXJuIGxpc3RfbGVuZ3RoKGdsb2ItPnBhcnRQcnVuZUluZm9zKSAtIDE7Cit9CisKIC8qCiAgKiBz ZXRfYXBwZW5kX3JlZmVyZW5jZXMKICAqCQlEbyBzZXRfcGxhbl9yZWZlcmVuY2VzIHByb2Nlc3Np bmcgb24gYW4gQXBwZW5kCkBAIC0xNzgzLDI3ICsxODMwLDEzIEBAIHNldF9hcHBlbmRfcmVmZXJl bmNlcyhQbGFubmVySW5mbyAqcm9vdCwKIAogCWFwbGFuLT5hcHByZWxpZHMgPSBvZmZzZXRfcmVs aWRfc2V0KGFwbGFuLT5hcHByZWxpZHMsIHJ0b2Zmc2V0KTsKIAotCWlmIChhcGxhbi0+cGFydF9w cnVuZV9pbmZvKQotCXsKLQkJZm9yZWFjaChsLCBhcGxhbi0+cGFydF9wcnVuZV9pbmZvLT5wcnVu ZV9pbmZvcykKLQkJewotCQkJTGlzdAkgICAqcHJ1bmVfaW5mb3MgPSBsZmlyc3QobCk7Ci0JCQlM aXN0Q2VsbCAgICpsMjsKLQotCQkJZm9yZWFjaChsMiwgcHJ1bmVfaW5mb3MpCi0JCQl7Ci0JCQkJ UGFydGl0aW9uZWRSZWxQcnVuZUluZm8gKnBpbmZvID0gbGZpcnN0KGwyKTsKLQotCQkJCXBpbmZv LT5ydGluZGV4ICs9IHJ0b2Zmc2V0OwotCQkJCXBpbmZvLT5pbml0aWFsX3BydW5pbmdfc3RlcHMg PQotCQkJCQlmaXhfc2Nhbl9saXN0KHJvb3QsIHBpbmZvLT5pbml0aWFsX3BydW5pbmdfc3RlcHMs Ci0JCQkJCQkJCSAgcnRvZmZzZXQsIDEpOwotCQkJCXBpbmZvLT5leGVjX3BydW5pbmdfc3RlcHMg PQotCQkJCQlmaXhfc2Nhbl9saXN0KHJvb3QsIHBpbmZvLT5leGVjX3BydW5pbmdfc3RlcHMsCi0J CQkJCQkJCSAgcnRvZmZzZXQsIDEpOwotCQkJfQotCQl9Ci0JfQorCS8qCisJICogQWRkIFBhcnRp dGlvblBydW5lSW5mbywgaWYgYW55LCB0byBQbGFubmVyR2xvYmFsIGFuZCB1cGRhdGUgdGhlIGlu ZGV4LgorCSAqIEFsc28gdXBkYXRlIHRoZSBSVCBpbmRleGVzIHByZXNlbnQgaW4gaXQgdG8gYWRk IHRoZSBvZmZzZXQuCisJICovCisJaWYgKGFwbGFuLT5wYXJ0X3BydW5lX2luZGV4ID49IDApCisJ CWFwbGFuLT5wYXJ0X3BydW5lX2luZGV4ID0KKwkJCXJlZ2lzdGVyX3BhcnRwcnVuZWluZm8ocm9v dCwgYXBsYW4tPnBhcnRfcHJ1bmVfaW5kZXgsIHJ0b2Zmc2V0KTsKIAogCS8qIFdlIGRvbid0IG5l ZWQgdG8gcmVjdXJzZSB0byBsZWZ0dHJlZSBvciByaWdodHRyZWUgLi4uICovCiAJQXNzZXJ0KGFw bGFuLT5wbGFuLmxlZnR0cmVlID09IE5VTEwpOwpAQCAtMTg2NSwyNyArMTg5OCwxMyBAQCBzZXRf bWVyZ2VhcHBlbmRfcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwKIAogCW1wbGFuLT5hcHBy ZWxpZHMgPSBvZmZzZXRfcmVsaWRfc2V0KG1wbGFuLT5hcHByZWxpZHMsIHJ0b2Zmc2V0KTsKIAot CWlmIChtcGxhbi0+cGFydF9wcnVuZV9pbmZvKQotCXsKLQkJZm9yZWFjaChsLCBtcGxhbi0+cGFy dF9wcnVuZV9pbmZvLT5wcnVuZV9pbmZvcykKLQkJewotCQkJTGlzdAkgICAqcHJ1bmVfaW5mb3Mg PSBsZmlyc3QobCk7Ci0JCQlMaXN0Q2VsbCAgICpsMjsKLQotCQkJZm9yZWFjaChsMiwgcHJ1bmVf aW5mb3MpCi0JCQl7Ci0JCQkJUGFydGl0aW9uZWRSZWxQcnVuZUluZm8gKnBpbmZvID0gbGZpcnN0 KGwyKTsKLQotCQkJCXBpbmZvLT5ydGluZGV4ICs9IHJ0b2Zmc2V0OwotCQkJCXBpbmZvLT5pbml0 aWFsX3BydW5pbmdfc3RlcHMgPQotCQkJCQlmaXhfc2Nhbl9saXN0KHJvb3QsIHBpbmZvLT5pbml0 aWFsX3BydW5pbmdfc3RlcHMsCi0JCQkJCQkJCSAgcnRvZmZzZXQsIDEpOwotCQkJCXBpbmZvLT5l eGVjX3BydW5pbmdfc3RlcHMgPQotCQkJCQlmaXhfc2Nhbl9saXN0KHJvb3QsIHBpbmZvLT5leGVj X3BydW5pbmdfc3RlcHMsCi0JCQkJCQkJCSAgcnRvZmZzZXQsIDEpOwotCQkJfQotCQl9Ci0JfQor CS8qCisJICogQWRkIFBhcnRpdGlvblBydW5lSW5mbywgaWYgYW55LCB0byBQbGFubmVyR2xvYmFs IGFuZCB1cGRhdGUgdGhlIGluZGV4LgorCSAqIEFsc28gdXBkYXRlIHRoZSBSVCBpbmRleGVzIHBy ZXNlbnQgaW4gaXQgdG8gYWRkIHRoZSBvZmZzZXQuCisJICovCisJaWYgKG1wbGFuLT5wYXJ0X3By dW5lX2luZGV4ID49IDApCisJCW1wbGFuLT5wYXJ0X3BydW5lX2luZGV4ID0KKwkJCXJlZ2lzdGVy X3BhcnRwcnVuZWluZm8ocm9vdCwgbXBsYW4tPnBhcnRfcHJ1bmVfaW5kZXgsIHJ0b2Zmc2V0KTsK IAogCS8qIFdlIGRvbid0IG5lZWQgdG8gcmVjdXJzZSB0byBsZWZ0dHJlZSBvciByaWdodHRyZWUg Li4uICovCiAJQXNzZXJ0KG1wbGFuLT5wbGFuLmxlZnR0cmVlID09IE5VTEwpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jIGIvc3JjL2JhY2tlbmQvcGFy dGl0aW9uaW5nL3BhcnRwcnVuZS5jCmluZGV4IGZhM2M1YjNjM2JiLi5kM2Y2MGNjODdjOSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCisrKyBiL3NyYy9i YWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwpAQCAtMjA3LDE2ICsyMDcsMjAgQEAgc3Rh dGljIHZvaWQgcGFydGtleV9kYXR1bV9mcm9tX2V4cHIoUGFydGl0aW9uUHJ1bmVDb250ZXh0ICpj b250ZXh0LAogCiAvKgogICogbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvCi0gKgkJQnVpbGRzIGEg UGFydGl0aW9uUHJ1bmVJbmZvIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBleGVjdXRvciB0byBh bGxvdwotICoJCWFkZGl0aW9uYWwgcGFydGl0aW9uIHBydW5pbmcgdG8gdGFrZSBwbGFjZS4gIFJl dHVybnMgTlVMTCB3aGVuCi0gKgkJcGFydGl0aW9uIHBydW5pbmcgd291bGQgYmUgdXNlbGVzcy4K KyAqCQlDaGVja3MgaWYgdGhlIGdpdmVuIHNldCBvZiBxdWFscyBjYW4gYmUgdXNlZCB0byBidWls ZCBwcnVuaW5nIHN0ZXBzCisgKgkJdGhhdCB0aGUgZXhlY3V0b3IgY2FuIHVzZSB0byBwcnVuZSBh d2F5IHVubmVlZGVkIHBhcnRpdGlvbnMuICBJZgorICoJCXN1aXRhYmxlIHF1YWxzIGFyZSBmb3Vu ZCB0aGVuIGEgUGFydGl0aW9uUHJ1bmVJbmZvIGlzIGJ1aWx0IGFuZCB0YWdnZWQKKyAqCQlvbnRv IHRoZSBQbGFubmVySW5mbydzIHBhcnRQcnVuZUluZm9zIGxpc3QuCisgKgorICogVGhlIHJldHVy biB2YWx1ZSBpcyB0aGUgMC1iYXNlZCBpbmRleCBvZiB0aGUgaXRlbSBhZGRlZCB0byB0aGUKKyAq IHBhcnRQcnVuZUluZm9zIGxpc3Qgb3IgLTEgaWYgbm90aGluZyB3YXMgYWRkZWQuCiAgKgogICog J3BhcmVudHJlbCcgaXMgdGhlIFJlbE9wdEluZm8gZm9yIGFuIGFwcGVuZHJlbCwgYW5kICdzdWJw YXRocycgaXMgdGhlIGxpc3QKICAqIG9mIHNjYW4gcGF0aHMgZm9yIGl0cyBjaGlsZCByZWxzLgog ICogJ3BydW5lcXVhbCcgaXMgYSBsaXN0IG9mIHBvdGVudGlhbCBwcnVuaW5nIHF1YWxzIChpLmUu LCByZXN0cmljdGlvbgogICogY2xhdXNlcyB0aGF0IGFyZSBhcHBsaWNhYmxlIHRvIHRoZSBhcHBl bmRyZWwpLgogICovCi1QYXJ0aXRpb25QcnVuZUluZm8gKgoraW50CiBtYWtlX3BhcnRpdGlvbl9w cnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJCQkJ CSBMaXN0ICpzdWJwYXRocywKIAkJCQkJCSBMaXN0ICpwcnVuZXF1YWwpCkBAIC0zMzAsMTAgKzMz NCwxMSBAQCBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9w dEluZm8gKnBhcmVudHJlbCwKIAkgKiBxdWFscywgdGhlbiB3ZSBjYW4ganVzdCBub3QgYm90aGVy IHdpdGggcnVuLXRpbWUgcHJ1bmluZy4KIAkgKi8KIAlpZiAocHJ1bmVyZWxpbmZvcyA9PSBOSUwp Ci0JCXJldHVybiBOVUxMOworCQlyZXR1cm4gLTE7CiAKIAkvKiBFbHNlIGJ1aWxkIHRoZSByZXN1 bHQgZGF0YSBzdHJ1Y3R1cmUgKi8KIAlwcnVuZWluZm8gPSBtYWtlTm9kZShQYXJ0aXRpb25QcnVu ZUluZm8pOworCXBydW5laW5mby0+cmVsaWRzID0gYm1zX2NvcHkocGFyZW50cmVsLT5yZWxpZHMp OwogCXBydW5laW5mby0+cHJ1bmVfaW5mb3MgPSBwcnVuZXJlbGluZm9zOwogCiAJLyoKQEAgLTM1 Niw3ICszNjEsOSBAQCBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3Qs IFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAllbHNlCiAJCXBydW5laW5mby0+b3RoZXJfc3VicGxh bnMgPSBOVUxMOwogCi0JcmV0dXJuIHBydW5laW5mbzsKKwlyb290LT5wYXJ0UHJ1bmVJbmZvcyA9 IGxhcHBlbmQocm9vdC0+cGFydFBydW5lSW5mb3MsIHBydW5laW5mbyk7CisKKwlyZXR1cm4gbGlz dF9sZW5ndGgocm9vdC0+cGFydFBydW5lSW5mb3MpIC0gMTsKIH0KIAogLyoKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCBiL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL2V4ZWNQYXJ0aXRpb24uaAppbmRleCAyNjVmODM2YmNkYS4uMTMxNzc4MzFkOWYgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaAorKysgYi9zcmMvaW5j bHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKQEAgLTEyMyw3ICsxMjMsOCBAQCB0eXBlZGVm IHN0cnVjdCBQYXJ0aXRpb25QcnVuZVN0YXRlCiAKIGV4dGVybiBQYXJ0aXRpb25QcnVuZVN0YXRl ICpFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJCQkJCQkJ CQkJCQkJIGludCBuX3RvdGFsX3N1YnBsYW5zLAotCQkJCQkJCQkJCQkJCSBQYXJ0aXRpb25QcnVu ZUluZm8gKnBydW5laW5mbywKKwkJCQkJCQkJCQkJCQkgaW50IHBhcnRfcHJ1bmVfaW5kZXgsCisJ CQkJCQkJCQkJCQkJIEJpdG1hcHNldCAqcmVsaWRzLAogCQkJCQkJCQkJCQkJCSBCaXRtYXBzZXQg Kippbml0aWFsbHlfdmFsaWRfc3VicGxhbnMpOwogZXh0ZXJuIEJpdG1hcHNldCAqRXhlY0ZpbmRN YXRjaGluZ1N1YlBsYW5zKFBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUsCiAJCQkJCQkJ CQkJICAgYm9vbCBpbml0aWFsX3BydW5lKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVz L2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggZDBmMmRj YTU5MjguLjhjZTQ0MzBhZjA0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9k ZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNjU1LDYgKzY1NSw3 IEBAIHR5cGVkZWYgc3RydWN0IEVTdGF0ZQogCQkJCQkJCQkJCSAqIEV4ZWNSb3dNYXJrcywgb3Ig TlVMTCBpZiBub25lICovCiAJTGlzdAkgICAqZXNfcnRlcGVybWluZm9zOwkvKiBMaXN0IG9mIFJU RVBlcm1pc3Npb25JbmZvICovCiAJUGxhbm5lZFN0bXQgKmVzX3BsYW5uZWRzdG10OwkvKiBsaW5r IHRvIHRvcCBvZiBwbGFuIHRyZWUgKi8KKwlMaXN0CSAgICplc19wYXJ0X3BydW5lX2luZm9zOwkv KiBMaXN0IG9mIFBhcnRpdGlvblBydW5lSW5mbyAqLwogCWNvbnN0IGNoYXIgKmVzX3NvdXJjZVRl eHQ7CS8qIFNvdXJjZSB0ZXh0IGZyb20gUXVlcnlEZXNjICovCiAKIAlKdW5rRmlsdGVyICplc19q dW5rRmlsdGVyOwkvKiB0b3AtbGV2ZWwganVuayBmaWx0ZXIsIGlmIGFueSAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRo bm9kZXMuaAppbmRleCA1NGVlMTc2OTdlNS4uNTJkNDRmNDMwMjEgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rl cy5oCkBAIC0xMjgsNiArMTI4LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lckdsb2JhbAogCS8q ICJmbGF0IiBsaXN0IG9mIEFwcGVuZFJlbEluZm9zICovCiAJTGlzdAkgICAqYXBwZW5kUmVsYXRp b25zOwogCisJLyogImZsYXQiIGxpc3Qgb2YgUGFydGl0aW9uUHJ1bmVJbmZvcyAqLworCUxpc3QJ ICAgKnBhcnRQcnVuZUluZm9zOworCiAJLyogT0lEcyBvZiByZWxhdGlvbnMgdGhlIHBsYW4gZGVw ZW5kcyBvbiAqLwogCUxpc3QJICAgKnJlbGF0aW9uT2lkczsKIApAQCAtNTU5LDYgKzU2Miw5IEBA IHN0cnVjdCBQbGFubmVySW5mbwogCiAJLyogRG9lcyB0aGlzIHF1ZXJ5IG1vZGlmeSBhbnkgcGFy dGl0aW9uIGtleSBjb2x1bW5zPyAqLwogCWJvb2wJCXBhcnRDb2xzVXBkYXRlZDsKKworCS8qIFBh cnRpdGlvblBydW5lSW5mb3MgYWRkZWQgaW4gdGhpcyBxdWVyeSdzIHBsYW4uICovCisJTGlzdAkg ICAqcGFydFBydW5lSW5mb3M7CiB9OwogCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVz L3BsYW5ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggOWUxOWNk ZDI4NGQuLjA3OTA1ZDg5YjhhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9k ZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaApAQCAtNjksNiArNjksOSBA QCB0eXBlZGVmIHN0cnVjdCBQbGFubmVkU3RtdAogCiAJc3RydWN0IFBsYW4gKnBsYW5UcmVlOwkJ LyogdHJlZSBvZiBQbGFuIG5vZGVzICovCiAKKwlMaXN0CSAgICpwYXJ0UHJ1bmVJbmZvczsgLyog TGlzdCBvZiBQYXJ0aXRpb25QcnVuZUluZm8gY29udGFpbmVkIGluIHRoZQorCQkJCQkJCQkgKiBw bGFuICovCisKIAlMaXN0CSAgICpydGFibGU7CQkJLyogbGlzdCBvZiBSYW5nZVRibEVudHJ5IG5v ZGVzICovCiAKIAlMaXN0CSAgICpwZXJtSW5mb3M7CQkvKiBsaXN0IG9mIFJURVBlcm1pc3Npb25J bmZvIG5vZGVzIGZvciBydGFibGUKQEAgLTI3OCw4ICsyODEsOCBAQCB0eXBlZGVmIHN0cnVjdCBB cHBlbmQKIAkgKi8KIAlpbnQJCQlmaXJzdF9wYXJ0aWFsX3BsYW47CiAKLQkvKiBJbmZvIGZvciBy dW4tdGltZSBzdWJwbGFuIHBydW5pbmc7IE5VTEwgaWYgd2UncmUgbm90IGRvaW5nIHRoYXQgKi8K LQlzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVJbmZvICpwYXJ0X3BydW5lX2luZm87CisJLyogSW5kZXgg dG8gUGxhbm5lckluZm8ucGFydFBydW5lSW5mb3Mgb3IgLTEgaWYgbm8gcnVuLXRpbWUgcHJ1bmlu ZyAqLworCWludAkJCXBhcnRfcHJ1bmVfaW5kZXg7CiB9IEFwcGVuZDsKIAogLyogLS0tLS0tLS0t LS0tLS0tLQpAQCAtMzEzLDggKzMxNiw4IEBAIHR5cGVkZWYgc3RydWN0IE1lcmdlQXBwZW5kCiAJ LyogTlVMTFMgRklSU1QvTEFTVCBkaXJlY3Rpb25zICovCiAJYm9vbAkgICAqbnVsbHNGaXJzdCBw Z19ub2RlX2F0dHIoYXJyYXlfc2l6ZShudW1Db2xzKSk7CiAKLQkvKiBJbmZvIGZvciBydW4tdGlt ZSBzdWJwbGFuIHBydW5pbmc7IE5VTEwgaWYgd2UncmUgbm90IGRvaW5nIHRoYXQgKi8KLQlzdHJ1 Y3QgUGFydGl0aW9uUHJ1bmVJbmZvICpwYXJ0X3BydW5lX2luZm87CisJLyogSW5kZXggdG8gUGxh bm5lckluZm8ucGFydFBydW5lSW5mb3Mgb3IgLTEgaWYgbm8gcnVuLXRpbWUgcHJ1bmluZyAqLwor CWludAkJCXBhcnRfcHJ1bmVfaW5kZXg7CiB9IE1lcmdlQXBwZW5kOwogCiAvKiAtLS0tLS0tLS0t LS0tLS0tCkBAIC0xNDEzLDYgKzE0MTYsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhblJvd01hcmsK ICAqIFRoZW4sIHNpbmNlIGFuIEFwcGVuZC10eXBlIG5vZGUgY291bGQgaGF2ZSBtdWx0aXBsZSBw YXJ0aXRpb25pbmcKICAqIGhpZXJhcmNoaWVzIGFtb25nIGl0cyBjaGlsZHJlbiwgd2UgaGF2ZSBh biB1bm9yZGVyZWQgTGlzdCBvZiB0aG9zZSBMaXN0cy4KICAqCisgKiByZWxpZHMJCQkJUmVsT3B0 SW5mby5yZWxpZHMgb2YgdGhlIHBhcmVudCBwbGFuIG5vZGUgKGUuZy4gQXBwZW5kCisgKgkJCQkJ CW9yIE1lcmdlQXBwZW5kKSB0byB3aGljaCB0aGlzIFBhcnRpdGlvblBydW5lSW5mbyBub2RlCisg KgkJCQkJCWJlbG9uZ3MuICBUaGUgcHJ1bmluZyBsb2dpYyBlbnN1cmVzIHRoYXQgdGhpcyBtYXRj aGVzCisgKgkJCQkJCXRoZSBwYXJlbnQgcGxhbiBub2RlJ3MgYXBwcmVsaWRzLgogICogcHJ1bmVf aW5mb3MJCQlMaXN0IG9mIExpc3RzIGNvbnRhaW5pbmcgUGFydGl0aW9uZWRSZWxQcnVuZUluZm8g bm9kZXMsCiAgKgkJCQkJCW9uZSBzdWJsaXN0IHBlciBydW4tdGltZS1wcnVuYWJsZSBwYXJ0aXRp b24gaGllcmFyY2h5CiAgKgkJCQkJCWFwcGVhcmluZyBpbiB0aGUgcGFyZW50IHBsYW4gbm9kZSdz IHN1YnBsYW5zLgpAQCAtMTQyNSw2ICsxNDMyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9u UHJ1bmVJbmZvCiAJcGdfbm9kZV9hdHRyKG5vX2VxdWFsLCBub19xdWVyeV9qdW1ibGUpCiAKIAlO b2RlVGFnCQl0eXBlOworCUJpdG1hcHNldCAgKnJlbGlkczsKIAlMaXN0CSAgICpwcnVuZV9pbmZv czsKIAlCaXRtYXBzZXQgICpvdGhlcl9zdWJwbGFuczsKIH0gUGFydGl0aW9uUHJ1bmVJbmZvOwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oIGIvc3JjL2lu Y2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oCmluZGV4IDNhZmYyM2JlMjFkLi5jNDEzNzM0 Nzg5YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oCisr KyBiL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaApAQCAtNzAsMTAgKzcwLDEw IEBAIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvblBydW5lQ29udGV4dAogI2RlZmluZSBQcnVuZUN4 dFN0YXRlSWR4KHBhcnRuYXR0cywgc3RlcF9pZCwga2V5bm8pIFwKIAkoKHBhcnRuYXR0cykgKiAo c3RlcF9pZCkgKyAoa2V5bm8pKQogCi1leHRlcm4gUGFydGl0aW9uUHJ1bmVJbmZvICptYWtlX3Bh cnRpdGlvbl9wcnVuZWluZm8oc3RydWN0IFBsYW5uZXJJbmZvICpyb290LAotCQkJCQkJCQkJCQkJ CXN0cnVjdCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCi0JCQkJCQkJCQkJCQkJTGlzdCAqc3VicGF0 aHMsCi0JCQkJCQkJCQkJCQkJTGlzdCAqcHJ1bmVxdWFsKTsKK2V4dGVybiBpbnQJbWFrZV9wYXJ0 aXRpb25fcHJ1bmVpbmZvKHN0cnVjdCBQbGFubmVySW5mbyAqcm9vdCwKKwkJCQkJCQkJCSBzdHJ1 Y3QgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAorCQkJCQkJCQkJIExpc3QgKnN1YnBhdGhzLAorCQkJ CQkJCQkJIExpc3QgKnBydW5lcXVhbCk7CiBleHRlcm4gQml0bWFwc2V0ICpwcnVuZV9hcHBlbmRf cmVsX3BhcnRpdGlvbnMoc3RydWN0IFJlbE9wdEluZm8gKnJlbCk7CiBleHRlcm4gQml0bWFwc2V0 ICpnZXRfbWF0Y2hpbmdfcGFydGl0aW9ucyhQYXJ0aXRpb25QcnVuZUNvbnRleHQgKmNvbnRleHQs CiAJCQkJCQkJCQkJICBMaXN0ICpwcnVuaW5nX3N0ZXBzKTsKLS0gCjIuNDMuMAoK --00000000000029efd4062c5a620d Content-Type: application/octet-stream; name="v60-0003-Defer-locking-of-runtime-prunable-relations-in-c.patch" Content-Disposition: attachment; filename="v60-0003-Defer-locking-of-runtime-prunable-relations-in-c.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m68xq4xa2 RnJvbSAyMzk1MGIzZDllYjg2MzE3YTQwYTY5NTk4MDhlZGU5YmJlOTg1Y2Q1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMjMgSmFuIDIwMjUgMTM6MjY6MDEgKzA5MDAKU3ViamVjdDogW1BBVENIIHY2 MCAzLzNdIERlZmVyIGxvY2tpbmcgb2YgcnVudGltZS1wcnVuYWJsZSByZWxhdGlvbnMgaW4gY2Fj aGVkCiBwbGFucwoKQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSBpbiBwbGFuY2FjaGUuYyBsb2NrcyBh bGwgcmVsYXRpb25zIGluIGEgcGxhbidzCnJhbmdlIHRhYmxlIHRvIGVuc3VyZSB0aGUgcGxhbiBp cyBzYWZlIGZvciBleGVjdXRpb24uIEhvd2V2ZXIsIHRoaXMKbG9ja3MgcnVudGltZS1wcnVuYWJs ZSByZWxhdGlvbnMgdGhhdCB3aWxsIGxhdGVyIGJlIHBydW5lZCBkdXJpbmcKImluaXRpYWwiIHJ1 bnRpbWUgcHJ1bmluZywgaW50cm9kdWNpbmcgdW5uZWNlc3Nhcnkgb3ZlcmhlYWQuIFRoaXMKY29t bWl0IGRlZmVycyBsb2NraW5nIGZvciBzdWNoIHJlbGF0aW9ucyBhbmQgZW5zdXJlcyB0aGF0IGFu eQppbnZhbGlkYXRpb24gY2F1c2VkIGJ5IHRoaXMgZGVmZXJyYWwgdHJpZ2dlcnMgcmVwbGFubmlu ZyB3aGVuIG5lZWRlZC4KClRoaXMgcmVzdWx0cyBpbiBzaWduaWZpY2FudCBzcGVlZHVwcyBmb3Ig Z2VuZXJpYyBwbGFucyB3aXRoIG1hbnkKcnVudGltZS1wcnVuYWJsZSBwYXJ0aXRpb25zLgoKKiBM b2NraW5nIGNoYW5nZXM6CgpUaGUgcGxhbm5lciBub3cgdHJhY2tzICJ1bnBydW5hYmxlIiByZWxh dGlvbnMgdXNpbmcgdGhlIG5ldwpQbGFubmVkU3RtdC51bnBydW5hYmxlUmVsaWRzIGZpZWxkLCBj b21wdXRlZCBkdXJpbmcgc2V0X3BsYW5fcmVmcygpCmJ5IHN1YnRyYWN0aW5nIHJ1bnRpbWUtcHJ1 bmFibGUgUlQgaW5kZXhlcyAoZnJvbSBQYXJ0aXRpb25QcnVuZUluZm9zKQpmcm9tIGFsbCBSVCBp bmRleGVzLiBBY3F1aXJlRXhlY3V0b3JMb2NrcygpIGxvY2tzIG9ubHkgdGhlc2UKdW5wcnVuYWJs ZSByZWxhdGlvbnMuCgpEdXJpbmcgZXhlY3V0b3Igc3RhcnR1cCwgRXhlY0RvSW5pdGlhbFBydW5p bmcoKSBpZGVudGlmaWVzIHVucHJ1bmVkCnBhcnRpdGlvbnMgYW5kIGxvY2tzIHRoZW0uIEEgbmV3 IGVzX3VucHJ1bmVkX3JlbGlkcyBmaWVsZCBpbiBFU3RhdGUKdHJhY2tzIGxvY2tlZCByZWxhdGlv bnMuIEl0IHN0YXJ0cyBhcyBQbGFubmVkU3RtdC51bnBydW5hYmxlUmVsaWRzCmFuZCBpcyB1cGRh dGVkIGJ5IEV4ZWNEb0luaXRpYWxQcnVuaW5nKCkgd2l0aCBSVCBpbmRleGVzIG9mIHVucHJ1bmVk CnBhcnRpdGlvbnMuIFRvIHN1cHBvcnQgdGhpcywgUGFydGl0aW9uZWRSZWxQcnVuZUluZm8gYW5k ClBhcnRpdGlvbmVkUmVsUHJ1bmluZ0RhdGEgbm93IGluY2x1ZGUgbGVhZnBhcnRfcnRpX21hcFtd IHRvIG1hcApwYXJ0aXRpb24gaW5kZXhlcyB0byBSVCBpbmRleGVzLgoKRXhlY3V0b3IgY29kZSB3 b3JraW5nIHdpdGggY2hpbGQgcmVzdWx0IHJlbGF0aW9ucyBhbmQgUm93TWFya3MgaXMKYWRqdXN0 ZWQgdG8gYWNjb3VudCBmb3IgZGVmZXJyZWQgbG9ja2luZy4gRXhlY0luaXRNb2RpZnlUYWJsZSgp CnRyaW1zIGxpc3RzIChyZXN1bHRSZWxhdGlvbnMsIHdpdGhDaGVja09wdGlvbkxpc3RzLCByZXR1 cm5pbmdMaXN0cywKdXBkYXRlQ29sbm9zTGlzdHMpIHRvIGluY2x1ZGUgb25seSB1bnBydW5lZCBw YXJ0aXRpb25zLCBiYXNlZCBvbgplc191bnBydW5lZF9yZWxpZHMuIFJlc3VsdFJlbEluZm8gc3Ry dWN0cyBhcmUgY3JlYXRlZCBvbmx5IGZvciB0aGVzZQp1bnBydW5lZCBwYXJ0aXRpb25zLiBTaW1p bGFybHksIGNoaWxkIFJvd01hcmtzIGZvciBwcnVuZWQgcmVsYXRpb25zCmFyZSBza2lwcGVkLCBl bnN1cmluZyBvbmx5IHVucHJ1bmVkIHJlbGF0aW9ucyBhcmUgcHJvY2Vzc2VkLgoKVHJpbW1pbmcg cmVzdWx0IHJlbGF0aW9uIGxpc3RzIGluIEV4ZWNJbml0TW9kaWZ5VGFibGUoKSBhdm9pZHMKdW5u ZWNlc3NhcnkgaW5pdGlhbGl6YXRpb24gb2YgUmVzdWx0UmVsSW5mb3MgZm9yIHBydW5lZCBwYXJ0 aXRpb25zLgpUaGlzIGltcHJvdmVzIHBlcmZvcm1hbmNlIGZvciB1cGRhdGVzIGFuZCBkZWxldGVz IG9uIHBhcnRpdGlvbmVkCnRhYmxlcyB3aXRoIGluaXRpYWwgcnVudGltZSBwcnVuaW5nLgoKRXhl Y0NoZWNrUGVybWlzc2lvbnMoKSBub3cgaW5jbHVkZXMgYW4gQXNzZXJ0IHRvIHZlcmlmeSB0aGF0 IGFsbApyZWxhdGlvbnMgdW5kZXJnb2luZyBwZXJtaXNzaW9uIGNoZWNrcyBhcmUgcHJvcGVybHkg bG9ja2VkLiBUaGlzCmVuc3VyZXMgdW5wcnVuYWJsZVJlbGlkcyBpcyBhY2N1cmF0ZSBkdXJpbmcg cGxhbm5pbmcuCgoqIFBsYW4gaW52YWxpZGF0aW9uIGhhbmRsaW5nOgoKRGVmZXJyaW5nIGxvY2tz IGludHJvZHVjZXMgYSB3aW5kb3cgd2hlcmUgcHJ1bmFibGUgcmVsYXRpb25zIG1heSBiZQphbHRl cmVkIGJ5IGNvbmN1cnJlbnQgRERMLCBpbnZhbGlkYXRpbmcgdGhlIHBsYW4uIEEgbmV3IGZ1bmN0 aW9uLApFeGVjdXRvclN0YXJ0Q2FjaGVkUGxhbigpLCB3cmFwcyBFeGVjdXRvclN0YXJ0KCkgdG8g ZGV0ZWN0IGFuZApoYW5kbGUgaW52YWxpZGF0aW9uIGNhdXNlZCBieSBkZWZlcnJlZCBsb2NraW5n LiBJZiBpbnZhbGlkYXRpb24Kb2NjdXJzLCBFeGVjdXRvclN0YXJ0Q2FjaGVkUGxhbigpIHVwZGF0 ZXMgQ2FjaGVkUGxhbiB1c2luZyB0aGUgbmV3ClVwZGF0ZUNhY2hlZFBsYW4oKSBmdW5jdGlvbiBh bmQgcmV0cmllcyBleGVjdXRpb24gd2l0aCB0aGUgcmVmcmVzaGVkCnBsYW4uCgpVcGRhdGVDYWNo ZWRQbGFuKCkgcmVwbGFjZXMgc3RhbGUgcGxhbnMgaW4gQ2FjaGVkUGxhbi5zdG10X2xpc3QuIEEK bmV3IENhY2hlZFBsYW4uc3RtdF9jb250ZXh0LCBhcyBhIGNoaWxkIG9mIENhY2hlZFBsYW4uY29u dGV4dCwKYWxsb3dzIGZyZWVpbmcgb2xkIFBsYW5uZWRTdG10cyB3aGlsZSBwcmVzZXJ2aW5nIHRo ZSBDYWNoZWRQbGFuCnN0cnVjdHVyZSBhbmQgc3RhdGVtZW50cyBsaXN0LgoKRXhlY3V0b3JTdGFy dCgpIGFuZCBFeGVjdXRvclN0YXJ0X2hvb2sgbm93IHJldHVybiBhIGJvb2xlYW4gdmFsdWUKaW5k aWNhdGluZyB3aGV0aGVyIHBsYW4gaW5pdGlhbGl6YXRpb24gc3VjY2VlZGVkIHdpdGggYSB2YWxp ZApQbGFuU3RhdGUgdHJlZSBpbiBRdWVyeURlc2MucGxhbnN0YXRlLgoKKiBUZXN0aW5nOgoKVGhl IGRlbGF5X2V4ZWN1dGlvbiBtb2R1bGUgdGVzdHMgc2NlbmFyaW9zIHdoZXJlIGNhY2hlZCBwbGFu cyBiZWNvbWUKaW52YWxpZCBkdWUgdG8gY2hhbmdlcyBpbiBwcnVuYWJsZSByZWxhdGlvbnMgYWZ0 ZXIgZGVmZXJyZWQgbG9ja3MuCgoqIE5vdGUgdG8gZXh0ZW5zaW9uIGF1dGhvcnM6CgpFeGVjdXRv clN0YXJ0X2hvb2sgaW1wbGVtZW50YXRpb25zIG11c3QgdmVyaWZ5IHBsYW4gdmFsaWRpdHkgYWZ0 ZXIKY2FsbGluZyBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KCkuIEZvciBleGFtcGxlOgoKICAgIGlm IChwcmV2X0V4ZWN1dG9yU3RhcnQpCiAgICAgICAgcGxhbl92YWxpZCA9IHByZXZfRXhlY3V0b3JT dGFydChxdWVyeURlc2MsIGVmbGFncyk7CiAgICBlbHNlCiAgICAgICAgcGxhbl92YWxpZCA9IHN0 YW5kYXJkX0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwoKICAgIGlmICghcGxhbl92 YWxpZCkKICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgPGV4dGVuc2lvbi1jb2RlPgoKICAgIHJl dHVybiB0cnVlOwoKRXh0ZW5zaW9ucyBpbnNwZWN0aW5nIFJUIGluZGV4ZXMgc2hvdWxkIGNoZWNr IEVTdGF0ZS5lc191bnBydW5lZF9yZWxpZHMKdG8gZW5zdXJlIHRoZSByZWxhdGlvbiBpcyBsb2Nr ZWQuIEZvciBleGFtcGxlLCBzZWUgaG93IEluaXRQbGFuKCkKcHJvY2Vzc2VzIFBsYW5uZWRTdG10 LnJvd01hcmtzLgoKUmV2aWV3ZWQtYnk6IFJvYmVydCBIYWFzClJldmlld2VkLWJ5OiBEYXZpZCBS b3dsZXkKUmV2aWV3ZWQtYnk6IFRvbWFzIFZvbmRyYQpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rn ci5lcy9tL0NBK0hpd3FGR2tNU2dlNlRnQzlLUXpkZTBvaHBBeWNMUXVWN29vaXRFRXBiS0IwT19t Z0BtYWlsLmdtYWlsLmNvbQotLS0KIGNvbnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5j ICAgICAgICAgICB8ICAxNiArLQogLi4uL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRl bWVudHMuYyAgIHwgIDE2ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jICAgICAg ICAgICAgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jICAgICAgICAg ICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYyAgICAgICAg ICAgICAgIHwgICA1ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICAg ICAgICAgfCAgMjIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jICAgICAgICAg ICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jICAgICAgICAgICAg ICAgIHwgICA1ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMgICAgICAgICAg ICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jICAgICAgICAgICAgICAg IHwgICA5ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgICAgICAgICAgICAgICAg fCAgMTQgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FICAgICAgICAgICAgICAgICAgIHwg IDM1ICsrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgICAgICAgIHwg MTQ3ICsrKysrKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICAgICAg ICAgIHwgIDEzICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgICAgICAg ICAgfCAxMjAgKysrKysrKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jICAgICAg ICAgICAgICB8ICAyMCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgICAgICAg ICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgICAgICAg ICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jICAgICAg ICAgICB8ICAgOSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgICAg ICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyAgICAg ICAgfCAgNzAgKysrKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jICAgICAgICAgICAgICAg ICAgICB8ICAyOSArLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgICAg ICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYyAgICAgICAg ICB8ICAyOSArLQogc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jICAgICAgICAg IHwgIDIyICsrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAg fCAgIDMgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgICB8 ICAgMyArLQogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAgICAgICAgIHwg ICA0ICstCiBzcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jICAgICAgICAgICAgICAgICAgICAgfCAg NTEgKysrLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMgICAgICAgICAgIHwg MjA0ICsrKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMgICAg ICAgICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oICAgICAgICAg ICAgICAgIHwgICA2ICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy90cmlnZ2VyLmggICAgICAgICAg ICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oICAgICAg ICAgIHwgICA2ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oICAgICAgICAgICAg ICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCAgICAgICAgICAgICAg IHwgIDM3ICsrLQogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgICAg IHwgIDEzICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oICAgICAgICAgICAgICAgICB8 ICAgOCArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCAgICAgICAgICAgICAgICAgfCAg IDcgKwogc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmggICAgICAgICAgICAgICAgIHwgIDUw ICsrKy0KIHNyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oICAgICAgICAgICAgICAgICAgICB8ICAg NCArLQogc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZpbGUgICAgIHwgICAz ICstCiAuLi4vbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZGVsYXlfZXhlY3V0aW9uLmMgfCAgNjcg KysrKy0KIC4uLi9leHBlY3RlZC9jYWNoZWQtcGxhbi1pbnZhbC5vdXQgICAgICAgICAgICB8IDI4 MiArKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL21l c29uLmJ1aWxkICB8ICAgMSArCiAuLi4vc3BlY3MvY2FjaGVkLXBsYW4taW52YWwuc3BlYyAgICAg ICAgICAgICAgfCAgODAgKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9u X3BydW5lLm91dCB8ICA0NCArKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9wcnVu ZS5zcWwgICAgICB8ICAxOCArKwogNDggZmlsZXMgY2hhbmdlZCwgMTM3MSBpbnNlcnRpb25zKCsp LCAxMzcgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9k ZWxheV9leGVjdXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4taW52YWwub3V0CiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vc3BlY3MvY2FjaGVkLXBs YW4taW52YWwuc3BlYwoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhw bGFpbi5jIGIvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMKaW5kZXggZjFhZDg3 NmU4MjEuLjgyYzE3YzBhMjhhIDEwMDY0NAotLS0gYS9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRv X2V4cGxhaW4uYworKysgYi9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYwpAQCAt NzYsNyArNzYsNyBAQCBzdGF0aWMgRXhlY3V0b3JSdW5faG9va190eXBlIHByZXZfRXhlY3V0b3JS dW4gPSBOVUxMOwogc3RhdGljIEV4ZWN1dG9yRmluaXNoX2hvb2tfdHlwZSBwcmV2X0V4ZWN1dG9y RmluaXNoID0gTlVMTDsKIHN0YXRpYyBFeGVjdXRvckVuZF9ob29rX3R5cGUgcHJldl9FeGVjdXRv ckVuZCA9IE5VTEw7CiAKLXN0YXRpYyB2b2lkIGV4cGxhaW5fRXhlY3V0b3JTdGFydChRdWVyeURl c2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CitzdGF0aWMgYm9vbCBleHBsYWluX0V4ZWN1dG9y U3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOwogc3RhdGljIHZvaWQgZXhw bGFpbl9FeGVjdXRvclJ1bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKIAkJCQkJCQkJU2NhbkRpcmVj dGlvbiBkaXJlY3Rpb24sCiAJCQkJCQkJCXVpbnQ2NCBjb3VudCk7CkBAIC0yNTYsOSArMjU2LDEx IEBAIF9QR19pbml0KHZvaWQpCiAvKgogICogRXhlY3V0b3JTdGFydCBob29rOiBzdGFydCB1cCBs b2dnaW5nIGlmIG5lZWRlZAogICovCi1zdGF0aWMgdm9pZAorc3RhdGljIGJvb2wKIGV4cGxhaW5f RXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIHsKKwlib29s CQlwbGFuX3ZhbGlkOworCiAJLyoKIAkgKiBBdCB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggdG9wLWxl dmVsIHN0YXRlbWVudCwgZGVjaWRlIHdoZXRoZXIgd2UnbGwKIAkgKiBzYW1wbGUgdGhpcyBzdGF0 ZW1lbnQuICBJZiBuZXN0ZWQtc3RhdGVtZW50IGV4cGxhaW5pbmcgaXMgZW5hYmxlZCwKQEAgLTI5 NCw5ICsyOTYsMTMgQEAgZXhwbGFpbl9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNj LCBpbnQgZWZsYWdzKQogCX0KIAogCWlmIChwcmV2X0V4ZWN1dG9yU3RhcnQpCi0JCXByZXZfRXhl Y3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CisJCXBsYW5fdmFsaWQgPSBwcmV2X0V4ZWN1 dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwogCWVsc2UKLQkJc3RhbmRhcmRfRXhlY3V0b3JT dGFydChxdWVyeURlc2MsIGVmbGFncyk7CisJCXBsYW5fdmFsaWQgPSBzdGFuZGFyZF9FeGVjdXRv clN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKworCS8qIFRoZSBwbGFuIG1heSBoYXZlIGJlY29t ZSBpbnZhbGlkIGR1cmluZyBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KCkgKi8KKwlpZiAoIXBsYW5f dmFsaWQpCisJCXJldHVybiBmYWxzZTsKIAogCWlmIChhdXRvX2V4cGxhaW5fZW5hYmxlZCgpKQog CXsKQEAgLTMxNCw2ICszMjAsOCBAQCBleHBsYWluX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpx dWVyeURlc2MsIGludCBlZmxhZ3MpCiAJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsK IAkJfQogCX0KKworCXJldHVybiB0cnVlOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvY29udHJpYi9w Z19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMgYi9jb250cmliL3BnX3N0YXRf c3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYwppbmRleCBiZWJmODEzNGViMC4uYjczNTM4 MWNiMGIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3Rh dGVtZW50cy5jCisrKyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVt ZW50cy5jCkBAIC0zMzIsNyArMzMyLDcgQEAgc3RhdGljIFBsYW5uZWRTdG10ICpwZ3NzX3BsYW5u ZXIoUXVlcnkgKnBhcnNlLAogCQkJCQkJCQkgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLAogCQkJ CQkJCQkgaW50IGN1cnNvck9wdGlvbnMsCiAJCQkJCQkJCSBQYXJhbUxpc3RJbmZvIGJvdW5kUGFy YW1zKTsKLXN0YXRpYyB2b2lkIHBnc3NfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVz YywgaW50IGVmbGFncyk7CitzdGF0aWMgYm9vbCBwZ3NzX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNj ICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOwogc3RhdGljIHZvaWQgcGdzc19FeGVjdXRvclJ1bihR dWVyeURlc2MgKnF1ZXJ5RGVzYywKIAkJCQkJCQkgU2NhbkRpcmVjdGlvbiBkaXJlY3Rpb24sCiAJ CQkJCQkJIHVpbnQ2NCBjb3VudCk7CkBAIC05ODYsMTMgKzk4NiwxOSBAQCBwZ3NzX3BsYW5uZXIo UXVlcnkgKnBhcnNlLAogLyoKICAqIEV4ZWN1dG9yU3RhcnQgaG9vazogc3RhcnQgdXAgdHJhY2tp bmcgaWYgbmVlZGVkCiAgKi8KLXN0YXRpYyB2b2lkCitzdGF0aWMgYm9vbAogcGdzc19FeGVjdXRv clN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogeworCWJvb2wJCXBsYW5f dmFsaWQ7CisKIAlpZiAocHJldl9FeGVjdXRvclN0YXJ0KQotCQlwcmV2X0V4ZWN1dG9yU3RhcnQo cXVlcnlEZXNjLCBlZmxhZ3MpOworCQlwbGFuX3ZhbGlkID0gcHJldl9FeGVjdXRvclN0YXJ0KHF1 ZXJ5RGVzYywgZWZsYWdzKTsKIAllbHNlCi0JCXN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQocXVlcnlE ZXNjLCBlZmxhZ3MpOworCQlwbGFuX3ZhbGlkID0gc3RhbmRhcmRfRXhlY3V0b3JTdGFydChxdWVy eURlc2MsIGVmbGFncyk7CisKKwkvKiBUaGUgcGxhbiBtYXkgaGF2ZSBiZWNvbWUgaW52YWxpZCBk dXJpbmcgc3RhbmRhcmRfRXhlY3V0b3JTdGFydCgpICovCisJaWYgKCFwbGFuX3ZhbGlkKQorCQly ZXR1cm4gZmFsc2U7CiAKIAkvKgogCSAqIElmIHF1ZXJ5IGhhcyBxdWVyeUlkIHplcm8sIGRvbid0 IHRyYWNrIGl0LiAgVGhpcyBwcmV2ZW50cyBkb3VibGUKQEAgLTEwMTUsNiArMTAyMSw4IEBAIHBn c3NfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkJCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwogCQl9CiAJfQorCisJcmV0dXJuIHRydWU7CiB9 CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYwppbmRleCAwY2JkMDVmNTYwMi4uZGExZThkZGM1 YTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYwpAQCAtNzY4LDcgKzc2OCw4IEBAIENvcHlGcm9t KENvcHlGcm9tU3RhdGUgY3N0YXRlKQogCSAqIGluZGV4LWVudHJ5LW1ha2luZyBtYWNoaW5lcnku ICAoVGhlcmUgdXNlZCB0byBiZSBhIGh1Z2UgYW1vdW50IG9mIGNvZGUKIAkgKiBoZXJlIHRoYXQg YmFzaWNhbGx5IGR1cGxpY2F0ZWQgZXhlY1V0aWxzLmMgLi4uKQogCSAqLwotCUV4ZWNJbml0UmFu Z2VUYWJsZShlc3RhdGUsIGNzdGF0ZS0+cmFuZ2VfdGFibGUsIGNzdGF0ZS0+cnRlcGVybWluZm9z KTsKKwlFeGVjSW5pdFJhbmdlVGFibGUoZXN0YXRlLCBjc3RhdGUtPnJhbmdlX3RhYmxlLCBjc3Rh dGUtPnJ0ZXBlcm1pbmZvcywKKwkJCQkJICAgYm1zX21ha2Vfc2luZ2xldG9uKDEpKTsKIAlyZXN1 bHRSZWxJbmZvID0gdGFyZ2V0X3Jlc3VsdFJlbEluZm8gPSBtYWtlTm9kZShSZXN1bHRSZWxJbmZv KTsKIAlFeGVjSW5pdFJlc3VsdFJlbGF0aW9uKGVzdGF0ZSwgcmVzdWx0UmVsSW5mbywgMSk7CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weXRvLmMKaW5kZXggOTljYjIzY2IzNDcuLjA5MWZiYzEyY2M1IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9jb3B5dG8uYwpAQCAtNTU2LDcgKzU1Niw3IEBAIEJlZ2luQ29weVRvKFBhcnNlU3RhdGUg KnBzdGF0ZSwKIAkJKChEUl9jb3B5ICopIGRlc3QpLT5jc3RhdGUgPSBjc3RhdGU7CiAKIAkJLyog Q3JlYXRlIGEgUXVlcnlEZXNjIHJlcXVlc3Rpbmcgbm8gb3V0cHV0ICovCi0JCWNzdGF0ZS0+cXVl cnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAorCQlj c3RhdGUtPnF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBOVUxMLCBwc3RhdGUtPnBf c291cmNldGV4dCwKIAkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkJCQkJ SW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsKQEAgLTU2 Niw3ICs1NjYsOCBAQCBCZWdpbkNvcHlUbyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCSAqCiAJCSAq IEV4ZWN1dG9yU3RhcnQgY29tcHV0ZXMgYSByZXN1bHQgdHVwZGVzYyBmb3IgdXMKIAkJICovCi0J CUV4ZWN1dG9yU3RhcnQoY3N0YXRlLT5xdWVyeURlc2MsIDApOworCQlpZiAoIUV4ZWN1dG9yU3Rh cnQoY3N0YXRlLT5xdWVyeURlc2MsIDApKQorCQkJZWxvZyhFUlJPUiwgIkV4ZWN1dG9yU3RhcnQo KSBmYWlsZWQgdW5leHBlY3RlZGx5Iik7CiAKIAkJdHVwRGVzYyA9IGNzdGF0ZS0+cXVlcnlEZXNj LT50dXBEZXNjOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFz LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCmluZGV4IDIzY2VjZDk5YzllLi40 NGI0NjY1Y2NkMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCkBAIC0zMzIsMTIgKzMzMiwxMyBA QCBFeGVjQ3JlYXRlVGFibGVBcyhQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVRhYmxlQXNTdG10 ICpzdG10LAogCQlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOwogCiAJCS8qIENyZWF0 ZSBhIFF1ZXJ5RGVzYywgcmVkaXJlY3Rpbmcgb3V0cHV0IHRvIG91ciB0dXBsZSByZWNlaXZlciAq LwotCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcHN0YXRlLT5wX3NvdXJjZXRl eHQsCisJCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBOVUxMLCBwc3RhdGUtPnBf c291cmNldGV4dCwKIAkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hv dCwKIAkJCQkJCQkJCWRlc3QsIHBhcmFtcywgcXVlcnlFbnYsIDApOwogCiAJCS8qIGNhbGwgRXhl Y3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24gKi8KLQkJRXhlY3V0 b3JTdGFydChxdWVyeURlc2MsIEdldEludG9SZWxFRmxhZ3MoaW50bykpOworCQlpZiAoIUV4ZWN1 dG9yU3RhcnQocXVlcnlEZXNjLCBHZXRJbnRvUmVsRUZsYWdzKGludG8pKSkKKwkJCWVsb2coRVJS T1IsICJFeGVjdXRvclN0YXJ0KCkgZmFpbGVkIHVuZXhwZWN0ZWRseSIpOwogCiAJCS8qIHJ1biB0 aGUgcGxhbiB0byBjb21wbGV0aW9uICovCiAJCUV4ZWN1dG9yUnVuKHF1ZXJ5RGVzYywgRm9yd2Fy ZFNjYW5EaXJlY3Rpb24sIDApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhw bGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IGMyNGU2NmY4MmUx Li5hZjI1YzE2ZDIxNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtNTE5LDcgKzUxOSw4IEBA IHN0YW5kYXJkX0V4cGxhaW5PbmVRdWVyeShRdWVyeSAqcXVlcnksIGludCBjdXJzb3JPcHRpb25z LAogCX0KIAogCS8qIHJ1biBpdCAoaWYgbmVlZGVkKSBhbmQgcHJvZHVjZSBvdXRwdXQgKi8KLQlF eHBsYWluT25lUGxhbihwbGFuLCBpbnRvLCBlcywgcXVlcnlTdHJpbmcsIHBhcmFtcywgcXVlcnlF bnYsCisJRXhwbGFpbk9uZVBsYW4ocGxhbiwgTlVMTCwgTlVMTCwgLTEsIGludG8sIGVzLCBxdWVy eVN0cmluZywgcGFyYW1zLAorCQkJCSAgIHF1ZXJ5RW52LAogCQkJCSAgICZwbGFuZHVyYXRpb24s IChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6IE5VTEwpLAogCQkJCSAgIGVzLT5tZW1vcnkgPyAm bWVtX2NvdW50ZXJzIDogTlVMTCk7CiB9CkBAIC02NDEsNyArNjQyLDkgQEAgRXhwbGFpbk9uZVV0 aWxpdHkoTm9kZSAqdXRpbGl0eVN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAq ZXMsCiAgKiB0byBjYWxsIGl0LgogICovCiB2b2lkCi1FeHBsYWluT25lUGxhbihQbGFubmVkU3Rt dCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCitFeHBs YWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIENhY2hlZFBsYW4gKmNwbGFuLAor CQkJICAgQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgaW50IHF1ZXJ5X2luZGV4LAorCQkJ ICAgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJCSAgIGNvbnN0IGNoYXIg KnF1ZXJ5U3RyaW5nLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCSAgIFF1ZXJ5RW52aXJvbm1l bnQgKnF1ZXJ5RW52LCBjb25zdCBpbnN0cl90aW1lICpwbGFuZHVyYXRpb24sCiAJCQkgICBjb25z dCBCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsCkBAIC02OTcsNyArNzAwLDcgQEAgRXhwbGFpbk9uZVBs YW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3Rh dGUgKmVzLAogCQlkZXN0ID0gTm9uZV9SZWNlaXZlcjsKIAogCS8qIENyZWF0ZSBhIFF1ZXJ5RGVz YyBmb3IgdGhlIHF1ZXJ5ICovCi0JcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW5uZWRz dG10LCBxdWVyeVN0cmluZywKKwlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbm5lZHN0 bXQsIGNwbGFuLCBxdWVyeVN0cmluZywKIAkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52 YWxpZFNuYXBzaG90LAogCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCBpbnN0cnVtZW50 X29wdGlvbik7CiAKQEAgLTcxMSw4ICs3MTQsMTcgQEAgRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0 bXQgKnBsYW5uZWRzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCWlm IChpbnRvKQogCQllZmxhZ3MgfD0gR2V0SW50b1JlbEVGbGFncyhpbnRvKTsKIAotCS8qIGNhbGwg RXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24gKi8KLQlFeGVj dXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwkvKiBQcmVwYXJlIHRoZSBwbGFuIGZvciBl eGVjdXRpb24uICovCisJaWYgKHF1ZXJ5RGVzYy0+Y3BsYW4pCisJeworCQlFeGVjdXRvclN0YXJ0 Q2FjaGVkUGxhbihxdWVyeURlc2MsIGVmbGFncywgcGxhbnNvdXJjZSwgcXVlcnlfaW5kZXgpOwor CQlBc3NlcnQocXVlcnlEZXNjLT5wbGFuc3RhdGUpOworCX0KKwllbHNlCisJeworCQlpZiAoIUV4 ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpKQorCQkJZWxvZyhFUlJPUiwgIkV4ZWN1dG9y U3RhcnQoKSBmYWlsZWQgdW5leHBlY3RlZGx5Iik7CisJfQogCiAJLyogRXhlY3V0ZSB0aGUgcGxh biBmb3Igc3RhdGlzdGljcyBpZiBhc2tlZCBmb3IgKi8KIAlpZiAoZXMtPmFuYWx5emUpCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4dGVuc2lvbi5jCmluZGV4IGJhNTQwZTNkZTViLi4xYjI4ZDIwNDEyZSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXh0ZW5zaW9uLmMKQEAgLTkwNywxMSArOTA3LDEzIEBAIGV4ZWN1dGVfc3FsX3N0 cmluZyhjb25zdCBjaGFyICpzcWwsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogCQkJCVF1ZXJ5RGVz YyAgKnFkZXNjOwogCiAJCQkJcWRlc2MgPSBDcmVhdGVRdWVyeURlc2Moc3RtdCwKKwkJCQkJCQkJ CQlOVUxMLAogCQkJCQkJCQkJCXNxbCwKIAkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBO VUxMLAogCQkJCQkJCQkJCWRlc3QsIE5VTEwsIE5VTEwsIDApOwogCi0JCQkJRXhlY3V0b3JTdGFy dChxZGVzYywgMCk7CisJCQkJaWYgKCFFeGVjdXRvclN0YXJ0KHFkZXNjLCAwKSkKKwkJCQkJZWxv ZyhFUlJPUiwgIkV4ZWN1dG9yU3RhcnQoKSBmYWlsZWQgdW5leHBlY3RlZGx5Iik7CiAJCQkJRXhl Y3V0b3JSdW4ocWRlc2MsIEZvcndhcmRTY2FuRGlyZWN0aW9uLCAwKTsKIAkJCQlFeGVjdXRvckZp bmlzaChxZGVzYyk7CiAJCQkJRXhlY3V0b3JFbmQocWRlc2MpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvbWF0dmlldy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5j CmluZGV4IGMxMjgxNzA5MWVkLi4wYmZiYzVjYTZkYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvbWF0dmlldy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYwpA QCAtNDM4LDEyICs0MzgsMTMgQEAgcmVmcmVzaF9tYXR2aWV3X2RhdGFmaWxsKERlc3RSZWNlaXZl ciAqZGVzdCwgUXVlcnkgKnF1ZXJ5LAogCVVwZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7 CiAKIAkvKiBDcmVhdGUgYSBRdWVyeURlc2MsIHJlZGlyZWN0aW5nIG91dHB1dCB0byBvdXIgdHVw bGUgcmVjZWl2ZXIgKi8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcXVlcnlT dHJpbmcsCisJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIE5VTEwsIHF1ZXJ5U3Ry aW5nLAogCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJ CQkJCWRlc3QsIE5VTEwsIE5VTEwsIDApOwogCiAJLyogY2FsbCBFeGVjdXRvclN0YXJ0IHRvIHBy ZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbiAqLwotCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNj LCAwKTsKKwlpZiAoIUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCAwKSkKKwkJZWxvZyhFUlJPUiwg IkV4ZWN1dG9yU3RhcnQoKSBmYWlsZWQgdW5leHBlY3RlZGx5Iik7CiAKIAkvKiBydW4gdGhlIHBs YW4gKi8KIAlFeGVjdXRvclJ1bihxdWVyeURlc2MsIEZvcndhcmRTY2FuRGlyZWN0aW9uLCAwKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYwppbmRleCBlN2M4MTcxYzEwMi4uNGMyYWMwNDUyMjQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMKQEAgLTExNyw2ICsxMTcsNyBAQCBQZXJmb3Jt Q3Vyc29yT3BlbihQYXJzZVN0YXRlICpwc3RhdGUsIERlY2xhcmVDdXJzb3JTdG10ICpjc3RtdCwg UGFyYW1MaXN0SW5mbyBwYQogCQkJCQkgIHF1ZXJ5U3RyaW5nLAogCQkJCQkgIENNRFRBR19TRUxF Q1QsCS8qIGN1cnNvcidzIHF1ZXJ5IGlzIGFsd2F5cyBhIFNFTEVDVCAqLwogCQkJCQkgIGxpc3Rf bWFrZTEocGxhbiksCisJCQkJCSAgTlVMTCwKIAkJCQkJICBOVUxMKTsKIAogCS8qLS0tLS0tLS0t LQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvcHJlcGFyZS5jCmluZGV4IDg5ODljMGM4ODJkLi5jMDI1YjFmOWY4YyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3ByZXBhcmUuYwpAQCAtMjAyLDcgKzIwMiw4IEBAIEV4ZWN1dGVRdWVyeShQYXJz ZVN0YXRlICpwc3RhdGUsCiAJCQkJCSAgcXVlcnlfc3RyaW5nLAogCQkJCQkgIGVudHJ5LT5wbGFu c291cmNlLT5jb21tYW5kVGFnLAogCQkJCQkgIHBsYW5fbGlzdCwKLQkJCQkJICBjcGxhbik7CisJ CQkJCSAgY3BsYW4sCisJCQkJCSAgZW50cnktPnBsYW5zb3VyY2UpOwogCiAJLyoKIAkgKiBGb3Ig Q1JFQVRFIFRBQkxFIC4uLiBBUyBFWEVDVVRFLCB3ZSBtdXN0IHZlcmlmeSB0aGF0IHRoZSBwcmVw YXJlZApAQCAtNTgyLDYgKzU4Myw3IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQg KmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCU1lbW9yeUNv bnRleHRDb3VudGVycyBtZW1fY291bnRlcnM7CiAJTWVtb3J5Q29udGV4dCBwbGFubmVyX2N0eCA9 IE5VTEw7CiAJTWVtb3J5Q29udGV4dCBzYXZlZF9jdHggPSBOVUxMOworCWludAkJCXF1ZXJ5X2lu ZGV4ID0gMDsKIAogCWlmIChlcy0+bWVtb3J5KQogCXsKQEAgLTY1NCw3ICs2NTYsOCBAQCBFeHBs YWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywg RXhwbGFpblN0YXRlICplcywKIAkJUGxhbm5lZFN0bXQgKnBzdG10ID0gbGZpcnN0X25vZGUoUGxh bm5lZFN0bXQsIHApOwogCiAJCWlmIChwc3RtdC0+Y29tbWFuZFR5cGUgIT0gQ01EX1VUSUxJVFkp Ci0JCQlFeHBsYWluT25lUGxhbihwc3RtdCwgaW50bywgZXMsIHF1ZXJ5X3N0cmluZywgcGFyYW1M SSwgcHN0YXRlLT5wX3F1ZXJ5RW52LAorCQkJRXhwbGFpbk9uZVBsYW4ocHN0bXQsIGNwbGFuLCBl bnRyeS0+cGxhbnNvdXJjZSwgcXVlcnlfaW5kZXgsCisJCQkJCQkgICBpbnRvLCBlcywgcXVlcnlf c3RyaW5nLCBwYXJhbUxJLCBwc3RhdGUtPnBfcXVlcnlFbnYsCiAJCQkJCQkgICAmcGxhbmR1cmF0 aW9uLCAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNhZ2UgOiBOVUxMKSwKIAkJCQkJCSAgIGVzLT5tZW1v cnkgPyAmbWVtX2NvdW50ZXJzIDogTlVMTCk7CiAJCWVsc2UKQEAgLTY2NSw2ICs2NjgsOCBAQCBF eHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50 bywgRXhwbGFpblN0YXRlICplcywKIAkJLyogU2VwYXJhdGUgcGxhbnMgd2l0aCBhbiBhcHByb3By aWF0ZSBzZXBhcmF0b3IgKi8KIAkJaWYgKGxuZXh0KHBsYW5fbGlzdCwgcCkgIT0gTlVMTCkKIAkJ CUV4cGxhaW5TZXBhcmF0ZVBsYW5zKGVzKTsKKworCQlxdWVyeV9pbmRleCsrOwogCX0KIAogCWlm IChlc3RhdGUpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKaW5kZXggYWNmM2U0YTNmMWYuLjc1ZWEyNDhj M2ZiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCkBAIC01MTI0LDYgKzUxMjQsMjAgQEAgQWZ0ZXJU cmlnZ2VyRW5kUXVlcnkoRVN0YXRlICplc3RhdGUpCiAJYWZ0ZXJUcmlnZ2Vycy5xdWVyeV9kZXB0 aC0tOwogfQogCisvKiAtLS0tLS0tLS0tCisgKiBBZnRlclRyaWdnZXJBYm9ydFF1ZXJ5KCkKKyAq CisgKiBDYWxsZWQgYnkgRXhlY3V0b3JFbmQoKSBpZiB0aGUgcXVlcnkgZXhlY3V0aW9uIHdhcyBh Ym9ydGVkIGR1ZSB0byB0aGUKKyAqIHBsYW4gYmVjb21pbmcgaW52YWxpZCBkdXJpbmcgaW5pdGlh bGl6YXRpb24uCisgKiAtLS0tLS0tLS0tCisgKi8KK3ZvaWQKK0FmdGVyVHJpZ2dlckFib3J0UXVl cnkodm9pZCkKK3sKKwkvKiBSZXZlcnQgdGhlIGFjdGlvbnMgb2YgQWZ0ZXJUcmlnZ2VyQmVnaW5R dWVyeSgpLiAqLworCWFmdGVyVHJpZ2dlcnMucXVlcnlfZGVwdGgtLTsKK30KKwogCiAvKgogICog QWZ0ZXJUcmlnZ2VyRnJlZVF1ZXJ5CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9S RUFETUUgYi9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUKaW5kZXggNjQyZDYzYmU2MTMuLjQ0 OWM2MDY4YWU5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FCkBAIC0yODAsNiArMjgwLDI4IEBAIGFyZSB0eXBp Y2FsbHkgcmVzZXQgdG8gZW1wdHkgb25jZSBwZXIgdHVwbGUuICBQZXItdHVwbGUgY29udGV4dHMg YXJlIHVzdWFsbHkKIGFzc29jaWF0ZWQgd2l0aCBFeHByQ29udGV4dHMsIGFuZCBjb21tb25seSBl YWNoIFBsYW5TdGF0ZSBub2RlIGhhcyBpdHMgb3duCiBFeHByQ29udGV4dCB0byBldmFsdWF0ZSBp dHMgcXVhbCBhbmQgdGFyZ2V0bGlzdCBleHByZXNzaW9ucyBpbi4KIAorUmVsYXRpb24gTG9ja2lu ZworLS0tLS0tLS0tLS0tLS0tLQorCitUeXBpY2FsbHksIHdoZW4gdGhlIGV4ZWN1dG9yIGluaXRp YWxpemVzIGEgcGxhbiB0cmVlIGZvciBleGVjdXRpb24sIGl0IGRvZXNuJ3QKK2xvY2sgbm9uLWlu ZGV4IHJlbGF0aW9ucyBpZiB0aGUgcGxhbiB0cmVlIGlzIGZyZXNobHkgZ2VuZXJhdGVkIGFuZCBu b3QgZGVyaXZlZAorZnJvbSBhIENhY2hlZFBsYW4uIFRoaXMgaXMgYmVjYXVzZSBzdWNoIGxvY2tz IGhhdmUgYWxyZWFkeSBiZWVuIGVzdGFibGlzaGVkCitkdXJpbmcgdGhlIHF1ZXJ5J3MgcGFyc2lu ZywgcmV3cml0aW5nLCBhbmQgcGxhbm5pbmcgcGhhc2VzLiBIb3dldmVyLCB3aXRoIGEKK2NhY2hl ZCBwbGFuIHRyZWUsIHNvbWUgcmVsYXRpb25zIG1heSByZW1haW4gdW5sb2NrZWQuIFRoZSBmdW5j dGlvbgorQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSBvbmx5IGxvY2tzIHVucHJ1bmFibGUgcmVsYXRp b25zIGluIHRoZSBwbGFuLCBkZWZlcnJpbmcKK3RoZSBsb2NraW5nIG9mIHBydW5hYmxlIG9uZXMg dG8gZXhlY3V0b3IgaW5pdGlhbGl6YXRpb24uIFRoaXMgYXZvaWRzCit1bm5lY2Vzc2FyeSBsb2Nr aW5nIG9mIHJlbGF0aW9ucyB0aGF0IHdpbGwgYmUgcHJ1bmVkIGR1cmluZyAiaW5pdGlhbCIgcnVu dGltZQorcHJ1bmluZyBpbiBFeGVjRG9Jbml0aWFsUHJ1bmluZygpLgorCitUaGlzIGFwcHJvYWNo IGNyZWF0ZXMgYSB3aW5kb3cgd2hlcmUgYSBjYWNoZWQgcGxhbiB0cmVlIHdpdGggY2hpbGQgdGFi bGVzCitjb3VsZCBiZWNvbWUgb3V0ZGF0ZWQgaWYgYW5vdGhlciBiYWNrZW5kIG1vZGlmaWVzIHRo ZXNlIHRhYmxlcyBiZWZvcmUKK0V4ZWNEb0luaXRpYWxQcnVuaW5nKCkgbG9ja3MgdGhlbS4gQXMg YSByZXN1bHQsIHRoZSBleGVjdXRvciBoYXMgdGhlIGFkZGVkIGR1dHkKK3RvIHZlcmlmeSB0aGUg cGxhbiB0cmVlJ3MgdmFsaWRpdHkgd2hlbmV2ZXIgaXQgbG9ja3MgYSBjaGlsZCB0YWJsZSBhZnRl cgorZG9pbmcgaW5pdGlhbCBwcnVuaW5nLiBUaGlzIHZhbGlkYXRpb24gaXMgZG9uZSBieSBjaGVj a2luZyB0aGUgQ2FjaGVkUGxhbi5pc192YWxpZAorZmxhZy4gSWYgdGhlIHBsYW4gdHJlZSBpcyBv dXRkYXRlZCAoaXNfdmFsaWQgPSBmYWxzZSksIHRoZSBleGVjdXRvciBzdG9wcworZnVydGhlciBp bml0aWFsaXphdGlvbiwgY2xlYW5zIHVwIGFueXRoaW5nIGluIEVTdGF0ZSB0aGF0IHdvdWxkIGhh dmUgYmVlbgorYWxsb2NhdGVkIHVwIHRvIHRoYXQgcG9pbnQsIGFuZCByZXRyaWVzIGV4ZWN1dGlv biBhZnRlciByZWNyZWF0aW5nIHRoZQoraW52YWxpZCBwbGFuIGluIHRoZSBDYWNoZWRQbGFuLgog CiBRdWVyeSBQcm9jZXNzaW5nIENvbnRyb2wgRmxvdwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KQEAgLTI4OCwxMSArMzEwLDEzIEBAIFRoaXMgaXMgYSBza2V0Y2ggb2YgY29udHJvbCBm bG93IGZvciBmdWxsIHF1ZXJ5IHByb2Nlc3Npbmc6CiAKIAlDcmVhdGVRdWVyeURlc2MKIAotCUV4 ZWN1dG9yU3RhcnQKKwlFeGVjdXRvclN0YXJ0IG9yIEV4ZWN1dG9yU3RhcnRDYWNoZWRQbGFuCiAJ CUNyZWF0ZUV4ZWN1dG9yU3RhdGUKIAkJCWNyZWF0ZXMgcGVyLXF1ZXJ5IGNvbnRleHQKLQkJc3dp dGNoIHRvIHBlci1xdWVyeSBjb250ZXh0IHRvIHJ1biBFeGVjSW5pdE5vZGUKKwkJc3dpdGNoIHRv IHBlci1xdWVyeSBjb250ZXh0IHRvIHJ1biBFeGVjRG9Jbml0aWFsUHJ1bmluZyBhbmQgRXhlY0lu aXROb2RlCiAJCUFmdGVyVHJpZ2dlckJlZ2luUXVlcnkKKwkJRXhlY0RvSW5pdGlhbFBydW5pbmcK KwkJCWRvZXMgaW5pdGlhbCBwcnVuaW5nIGFuZCBsb2NrcyBzdXJ2aXZpbmcgcGFydGl0aW9ucyBp ZiBuZWVkZWQKIAkJRXhlY0luaXROb2RlIC0tLSByZWN1cnNpdmVseSBzY2FucyBwbGFuIHRyZWUK IAkJCUV4ZWNJbml0Tm9kZQogCQkJCXJlY3Vyc2UgaW50byBzdWJzaWRpYXJ5IG5vZGVzCkBAIC0z MTYsNyArMzQwLDEyIEBAIFRoaXMgaXMgYSBza2V0Y2ggb2YgY29udHJvbCBmbG93IGZvciBmdWxs IHF1ZXJ5IHByb2Nlc3Npbmc6CiAKIAlGcmVlUXVlcnlEZXNjCiAKLVBlciBhYm92ZSBjb21tZW50 cywgaXQncyBub3QgcmVhbGx5IGNyaXRpY2FsIGZvciBFeGVjRW5kTm9kZSB0byBmcmVlIGFueQor QXMgbWVudGlvbmVkIGluIHRoZSAiUmVsYXRpb24gTG9ja2luZyIgc2VjdGlvbiwgaWYgdGhlIHBs YW4gdHJlZSBpcyBmb3VuZCB0bworYmUgc3RhbGUgYWZ0ZXIgbG9ja2luZyBwYXJ0aXRpb25zIGlu IEV4ZWNEb0luaXRpYWxQcnVuaW5nKCksIHRoZSBjb250cm9sIGlzCitpbW1lZGlhdGVseSByZXR1 cm5lZCB0byBFeGVjdXRvclN0YXJ0Q2FjaGVkUGxhbigpLCB3aGljaCB3aWxsIGNyZWF0ZSBhIG5l dyBwbGFuCit0cmVlIGFuZCBwZXJmb3JtIHRoZSBzdGVwcyBzdGFydGluZyBmcm9tIENyZWF0ZUV4 ZWN1dG9yU3RhdGUoKSBhZ2Fpbi4KKworUGVyIGFib3ZlIGNvbW1lbnRzLCBpdCdzIG5vdCByZWFs bHkgY3JpdGljYWwgZm9yIEV4ZWNFbmRQbGFuIHRvIGZyZWUgYW55CiBtZW1vcnk7IGl0J2xsIGFs bCBnbyBhd2F5IGluIEZyZWVFeGVjdXRvclN0YXRlIGFueXdheS4gIEhvd2V2ZXIsIHdlIGRvIG5l ZWQgdG8KIGJlIGNhcmVmdWwgdG8gY2xvc2UgcmVsYXRpb25zLCBkcm9wIGJ1ZmZlciBwaW5zLCBl dGMsIHNvIHdlIGRvIG5lZWQgdG8gc2NhbgogdGhlIHBsYW4gc3RhdGUgdHJlZSB0byBmaW5kIHRo ZXNlIHNvcnRzIG9mIHJlc291cmNlcy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDYwNGNi MDYyNWI4Li43MjdkNTQ4ODgxYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC01NSwxMSAr NTUsMTMgQEAKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfcmVsYXRpb24uaCIKICNpbmNsdWRlICJw Z3N0YXQuaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAidGNvcC91dGlsaXR5LmgiCiAjaW5jbHVkZSAidXRp bHMvYWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvYmFja2VuZF9zdGF0dXMuaCIKICNpbmNsdWRlICJ1 dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9wYXJ0Y2FjaGUuaCIKKyNpbmNsdWRl ICJ1dGlscy9wbGFuY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9ybHMuaCIKICNpbmNsdWRlICJ1 dGlscy9zbmFwbWdyLmgiCiAKQEAgLTExNCwxMSArMTE2LDE2IEBAIHN0YXRpYyB2b2lkIEV2YWxQ bGFuUXVhbFN0YXJ0KEVQUVN0YXRlICplcHFzdGF0ZSwgUGxhbiAqcGxhblRyZWUpOwogICogZ2V0 IGNvbnRyb2wgd2hlbiBFeGVjdXRvclN0YXJ0IGlzIGNhbGxlZC4gIFN1Y2ggYSBwbHVnaW4gd291 bGQKICAqIG5vcm1hbGx5IGNhbGwgc3RhbmRhcmRfRXhlY3V0b3JTdGFydCgpLgogICoKKyAqIFJl dHVybiB2YWx1ZSBpbmRpY2F0ZXMgaWYgdGhlIHBsYW4gaGFzIGJlZW4gaW5pdGlhbGl6ZWQgc3Vj Y2Vzc2Z1bGx5IHNvCisgKiB0aGF0IHF1ZXJ5RGVzYy0+cGxhbnN0YXRlIGNvbnRhaW5zIGEgdmFs aWQgUGxhblN0YXRlIHRyZWUuICBJdCBtYXkgbm90CisgKiBpZiB0aGUgcGxhbiBnb3QgaW52YWxp ZGF0ZWQgZHVyaW5nIEluaXRQbGFuKCkuCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KLXZvaWQKK2Jvb2wKIEV4 ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiB7CisJYm9vbAkJ cGxhbl92YWxpZDsKKwogCS8qCiAJICogSW4gc29tZSBjYXNlcyAoZS5nLiBhbiBFWEVDVVRFIHN0 YXRlbWVudCBvciBhbiBleGVjdXRlIG1lc3NhZ2Ugd2l0aCB0aGUKIAkgKiBleHRlbmRlZCBxdWVy eSBwcm90b2NvbCkgdGhlIHF1ZXJ5X2lkIHdvbid0IGJlIHJlcG9ydGVkLCBzbyBkbyBpdCBub3cu CkBAIC0xMzAsMTIgKzEzNyw3MCBAQCBFeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNj LCBpbnQgZWZsYWdzKQogCXBnc3RhdF9yZXBvcnRfcXVlcnlfaWQocXVlcnlEZXNjLT5wbGFubmVk c3RtdC0+cXVlcnlJZCwgZmFsc2UpOwogCiAJaWYgKEV4ZWN1dG9yU3RhcnRfaG9vaykKLQkJKCpF eGVjdXRvclN0YXJ0X2hvb2spIChxdWVyeURlc2MsIGVmbGFncyk7CisJCXBsYW5fdmFsaWQgPSAo KkV4ZWN1dG9yU3RhcnRfaG9vaykgKHF1ZXJ5RGVzYywgZWZsYWdzKTsKIAllbHNlCi0JCXN0YW5k YXJkX0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOworCQlwbGFuX3ZhbGlkID0gc3Rh bmRhcmRfRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CisKKwlyZXR1cm4gcGxhbl92 YWxpZDsKIH0KIAorLyoKKyAqIEV4ZWN1dG9yU3RhcnRDYWNoZWRQbGFuCisgKgkJU3RhcnQgZXhl Y3V0aW9uIGZvciBhIGdpdmVuIHF1ZXJ5IGluIHRoZSBDYWNoZWRQbGFuU291cmNlLCByZXBsYW5u aW5nCisgKgkJaWYgdGhlIHBsYW4gaXMgaW52YWxpZGF0ZWQgZHVlIHRvIGRlZmVycmVkIGxvY2tz IHRha2VuIGR1cmluZyB0aGUKKyAqCQlwbGFuJ3MgaW5pdGlhbGl6YXRpb24KKyAqCisgKiBUaGlz IGZ1bmN0aW9uIGhhbmRsZXMgY2FzZXMgd2hlcmUgdGhlIENhY2hlZFBsYW4gZ2l2ZW4gaW4gcXVl cnlEZXNjLT5jcGxhbgorICogbWlnaHQgYmVjb21lIGludmFsaWQgZHVyaW5nIHRoZSBpbml0aWFs aXphdGlvbiBvZiB0aGUgcGxhbiBnaXZlbiBpbgorICogcXVlcnlEZXNjLT5wbGFubmVkc3RtdCwg cGFydGljdWxhcmx5IHdoZW4gcHJ1bmFibGUgcmVsYXRpb25zIGluIGl0IGFyZQorICogbG9ja2Vk IGFmdGVyIHBlcmZvcm1pbmcgaW5pdGlhbCBwcnVuaW5nLiBJZiB0aGUgbG9ja3MgaW52YWxpZGF0 ZSB0aGUgcGxhbiwKKyAqIHRoZSBmdW5jdGlvbiBjYWxscyBVcGRhdGVDYWNoZWRQbGFuKCkgdG8g cmVwbGFuIGFsbCBxdWVyaWVzIGluIHRoZQorICogQ2FjaGVkUGxhbiwgYW5kIHRoZW4gcmV0cmll cyBpbml0aWFsaXphdGlvbi4KKyAqCisgKiBUaGUgZnVuY3Rpb24gcmVwZWF0cyB0aGUgcHJvY2Vz cyB1bnRpbCBFeGVjdXRvclN0YXJ0KCkgc3VjY2Vzc2Z1bGx5CisgKiBpbml0aWFsaXplcyB0aGUg cGxhbiwgdGhhdCBpcyB3aXRob3V0IHRoZSBDYWNoZWRQbGFuIGJlY29taW5nIGludmFsaWQuCisg Ki8KIHZvaWQKK0V4ZWN1dG9yU3RhcnRDYWNoZWRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBp bnQgZWZsYWdzLAorCQkJCQkJQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKKwkJCQkJCWlu dCBxdWVyeV9pbmRleCkKK3sKKwlpZiAodW5saWtlbHkocXVlcnlEZXNjLT5jcGxhbiA9PSBOVUxM KSkKKwkJZWxvZyhFUlJPUiwgIkV4ZWN1dG9yU3RhcnRDYWNoZWRQbGFuKCk6IG1pc3NpbmcgQ2Fj aGVkUGxhbiIpOworCWlmICh1bmxpa2VseShwbGFuc291cmNlID09IE5VTEwpKQorCQllbG9nKEVS Uk9SLCAiRXhlY3V0b3JTdGFydENhY2hlZFBsYW4oKTogbWlzc2luZyBDYWNoZWRQbGFuU291cmNl Iik7CisKKwkvKgorCSAqIExvb3AgYW5kIHJldHJ5IHdpdGggYW4gdXBkYXRlZCBwbGFuIHVudGls IG5vIGZ1cnRoZXIgaW52YWxpZGF0aW9uCisJICogb2NjdXJzLgorCSAqLworCXdoaWxlICgxKQor CXsKKwkJaWYgKCFFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKSkKKwkJeworCQkJLyoK KwkJCSAqIENsZWFuIHVwIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBzdGF0ZSBiZWZvcmUgY3JlYXRp bmcgdGhlIG5ldworCQkJICogcGxhbiB0byByZXRyeSBFeGVjdXRvclN0YXJ0KCkuICBNYXJrIGV4 ZWN1dGlvbiBhcyBhYm9ydGVkIHRvCisJCQkgKiBlbnN1cmUgdGhhdCBBRlRFUiB0cmlnZ2VyIHN0 YXRlIGlzIHByb3Blcmx5IHJlc2V0LgorCQkJICovCisJCQlxdWVyeURlc2MtPmVzdGF0ZS0+ZXNf YWJvcnRlZCA9IHRydWU7CisJCQlFeGVjdXRvckVuZChxdWVyeURlc2MpOworCisJCQkvKiBSZXRy eSBFeGVjdXRvclN0YXJ0KCkgd2l0aCBhbiB1cGRhdGVkIHBsYW4gdHJlZS4gKi8KKwkJCXF1ZXJ5 RGVzYy0+cGxhbm5lZHN0bXQgPSBVcGRhdGVDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIHF1ZXJ5X2lu ZGV4LAorCQkJCQkJCQkJCQkJCSAgcXVlcnlEZXNjLT5xdWVyeUVudik7CisJCX0KKwkJZWxzZQor CisJCQkvKgorCQkJICogRXhpdCB0aGUgbG9vcCBpZiB0aGUgcGxhbiBpcyBpbml0aWFsaXplZCBz dWNjZXNzZnVsbHkgYW5kIG5vCisJCQkgKiBzaW52YWwgbWVzc2FnZXMgd2VyZSByZWNlaXZlZCB0 aGF0IGludmFsaWRhdGVkIHRoZSBDYWNoZWRQbGFuLgorCQkJICovCisJCQlicmVhazsKKwl9Cit9 CisKK2Jvb2wKIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGlu dCBlZmxhZ3MpCiB7CiAJRVN0YXRlCSAgICplc3RhdGU7CkBAIC0yNTksNiArMzI0LDggQEAgc3Rh bmRhcmRfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAlJ bml0UGxhbihxdWVyeURlc2MsIGVmbGFncyk7CiAKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xk Y29udGV4dCk7CisKKwlyZXR1cm4gRXhlY1BsYW5TdGlsbFZhbGlkKHF1ZXJ5RGVzYy0+ZXN0YXRl KTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzE3LDYgKzM4NCw3IEBAIHN0YW5kYXJkX0V4ZWN1dG9y UnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLAogCWVzdGF0ZSA9IHF1ZXJ5RGVzYy0+ZXN0YXRlOwog CiAJQXNzZXJ0KGVzdGF0ZSAhPSBOVUxMKTsKKwlBc3NlcnQoIWVzdGF0ZS0+ZXNfYWJvcnRlZCk7 CiAJQXNzZXJ0KCEoZXN0YXRlLT5lc190b3BfZWZsYWdzICYgRVhFQ19GTEFHX0VYUExBSU5fT05M WSkpOwogCiAJLyogY2FsbGVyIG11c3QgZW5zdXJlIHRoZSBxdWVyeSdzIHNuYXBzaG90IGlzIGFj dGl2ZSAqLwpAQCAtNDIzLDggKzQ5MSwxMSBAQCBzdGFuZGFyZF9FeGVjdXRvckZpbmlzaChRdWVy eURlc2MgKnF1ZXJ5RGVzYykKIAlBc3NlcnQoZXN0YXRlICE9IE5VTEwpOwogCUFzc2VydCghKGVz dGF0ZS0+ZXNfdG9wX2VmbGFncyAmIEVYRUNfRkxBR19FWFBMQUlOX09OTFkpKTsKIAotCS8qIFRo aXMgc2hvdWxkIGJlIHJ1biBvbmNlIGFuZCBvbmx5IG9uY2UgcGVyIEV4ZWN1dG9yIGluc3RhbmNl ICovCi0JQXNzZXJ0KCFlc3RhdGUtPmVzX2ZpbmlzaGVkKTsKKwkvKgorCSAqIFRoaXMgc2hvdWxk IGJlIHJ1biBvbmNlIGFuZCBvbmx5IG9uY2UgcGVyIEV4ZWN1dG9yIGluc3RhbmNlIGFuZCBuZXZl cgorCSAqIGlmIHRoZSBleGVjdXRpb24gd2FzIGFib3J0ZWQuCisJICovCisJQXNzZXJ0KCFlc3Rh dGUtPmVzX2ZpbmlzaGVkICYmICFlc3RhdGUtPmVzX2Fib3J0ZWQpOwogCiAJLyogU3dpdGNoIGlu dG8gcGVyLXF1ZXJ5IG1lbW9yeSBjb250ZXh0ICovCiAJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhlc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7CkBAIC00ODcsMTEgKzU1OCwxMCBAQCBz dGFuZGFyZF9FeGVjdXRvckVuZChRdWVyeURlc2MgKnF1ZXJ5RGVzYykKIAkJCQkJCQkJCQkJIChQ Z1N0YXRfQ291bnRlcikgZXN0YXRlLT5lc19wYXJhbGxlbF93b3JrZXJzX2xhdW5jaGVkKTsKIAog CS8qCi0JICogQ2hlY2sgdGhhdCBFeGVjdXRvckZpbmlzaCB3YXMgY2FsbGVkLCB1bmxlc3MgaW4g RVhQTEFJTi1vbmx5IG1vZGUuIFRoaXMKLQkgKiBBc3NlcnQgaXMgbmVlZGVkIGJlY2F1c2UgRXhl Y3V0b3JGaW5pc2ggaXMgbmV3IGFzIG9mIDkuMSwgYW5kIGNhbGxlcnMKLQkgKiBtaWdodCBmb3Jn ZXQgdG8gY2FsbCBpdC4KKwkgKiBDaGVjayB0aGF0IEV4ZWN1dG9yRmluaXNoIHdhcyBjYWxsZWQs IHVubGVzcyBpbiBFWFBMQUlOLW9ubHkgbW9kZSBvciBpZgorCSAqIGV4ZWN1dGlvbiB3YXMgYWJv cnRlZC4KIAkgKi8KLQlBc3NlcnQoZXN0YXRlLT5lc19maW5pc2hlZCB8fAorCUFzc2VydChlc3Rh dGUtPmVzX2ZpbmlzaGVkIHx8IGVzdGF0ZS0+ZXNfYWJvcnRlZCB8fAogCQkgICAoZXN0YXRlLT5l c190b3BfZWZsYWdzICYgRVhFQ19GTEFHX0VYUExBSU5fT05MWSkpOwogCiAJLyoKQEAgLTUwNSw2 ICs1NzUsMTQgQEAgc3RhbmRhcmRfRXhlY3V0b3JFbmQoUXVlcnlEZXNjICpxdWVyeURlc2MpCiAJ VW5yZWdpc3RlclNuYXBzaG90KGVzdGF0ZS0+ZXNfc25hcHNob3QpOwogCVVucmVnaXN0ZXJTbmFw c2hvdChlc3RhdGUtPmVzX2Nyb3NzY2hlY2tfc25hcHNob3QpOwogCisJLyoKKwkgKiBSZXNldCBB RlRFUiB0cmlnZ2VyIG1vZHVsZSBpZiB0aGUgcXVlcnkgZXhlY3V0aW9uIHdhcyBhYm9ydGVkLgor CSAqLworCWlmIChlc3RhdGUtPmVzX2Fib3J0ZWQgJiYKKwkJIShlc3RhdGUtPmVzX3RvcF9lZmxh Z3MgJgorCQkgIChFWEVDX0ZMQUdfU0tJUF9UUklHR0VSUyB8IEVYRUNfRkxBR19FWFBMQUlOX09O TFkpKSkKKwkJQWZ0ZXJUcmlnZ2VyQWJvcnRRdWVyeSgpOworCiAJLyoKIAkgKiBNdXN0IHN3aXRj aCBvdXQgb2YgY29udGV4dCBiZWZvcmUgZGVzdHJveWluZyBpdAogCSAqLwpAQCAtNjAzLDYgKzY4 MSwyMSBAQCBFeGVjQ2hlY2tQZXJtaXNzaW9ucyhMaXN0ICpyYW5nZVRhYmxlLCBMaXN0ICpydGVw ZXJtaW5mb3MsCiAJCQkJICAgKHJ0ZS0+cnRla2luZCA9PSBSVEVfU1VCUVVFUlkgJiYKIAkJCQkJ cnRlLT5yZWxraW5kID09IFJFTEtJTkRfVklFVykpOwogCisJCQkvKgorCQkJICogRW5zdXJlIHRo YXQgd2UgaGF2ZSBhdCBsZWFzdCBhbiBBY2Nlc3NTaGFyZUxvY2sgb24gcmVsYXRpb25zCisJCQkg KiB3aG9zZSBwZXJtaXNzaW9ucyBuZWVkIHRvIGJlIGNoZWNrZWQuCisJCQkgKgorCQkJICogU2tp cCB0aGlzIGNoZWNrIGluIGEgcGFyYWxsZWwgd29ya2VyIGJlY2F1c2UgbG9ja3Mgd29uJ3QgYmUK KwkJCSAqIHRha2VuIHVudGlsIEV4ZWNJbml0Tm9kZSgpIHBlcmZvcm1zIHBsYW4gaW5pdGlhbGl6 YXRpb24uCisJCQkgKgorCQkJICogWFhYOiBFeGVjQ2hlY2tQZXJtaXNzaW9ucygpIGluIGEgcGFy YWxsZWwgd29ya2VyIG1heSBiZQorCQkJICogcmVkdW5kYW50IHdpdGggdGhlIGNoZWNrcyBkb25l IGluIHRoZSBsZWFkZXIgcHJvY2Vzcywgc28gdGhpcworCQkJICogc2hvdWxkIGJlIHJldmlld2Vk IHRvIGVuc3VyZSBpdOKAmXMgbmVjZXNzYXJ5LgorCQkJICovCisJCQlBc3NlcnQoSXNQYXJhbGxl bFdvcmtlcigpIHx8CisJCQkJICAgQ2hlY2tSZWxhdGlvbk9pZExvY2tlZEJ5TWUocnRlLT5yZWxp ZCwgQWNjZXNzU2hhcmVMb2NrLAorCQkJCQkJCQkJCQkgIHRydWUpKTsKKwogCQkJKHZvaWQpIGdl dFJURVBlcm1pc3Npb25JbmZvKHJ0ZXBlcm1pbmZvcywgcnRlKTsKIAkJCS8qIE1hbnktdG8tb25l IG1hcHBpbmcgbm90IGFsbG93ZWQgKi8KIAkJCUFzc2VydCghYm1zX2lzX21lbWJlcihydGUtPnBl cm1pbmZvaW5kZXgsIGluZGV4c2V0KSk7CkBAIC04MjgsNiArOTIxLDEyIEBAIEV4ZWNDaGVja1hh Y3RSZWFkT25seShQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQpCiAgKgogICoJCUluaXRpYWxpemVz IHRoZSBxdWVyeSBwbGFuOiBvcGVuIGZpbGVzLCBhbGxvY2F0ZSBzdG9yYWdlCiAgKgkJYW5kIHN0 YXJ0IHVwIHRoZSBydWxlIG1hbmFnZXIKKyAqCisgKgkJSWYgdGhlIHBsYW4gb3JpZ2luYXRlcyBm cm9tIGEgQ2FjaGVkUGxhbiAoZ2l2ZW4gaW4gcXVlcnlEZXNjLT5jcGxhbiksCisgKgkJaXQgY2Fu IGJlY29tZSBpbnZhbGlkIGR1cmluZyBydW50aW1lICJpbml0aWFsIiBwcnVuaW5nIHdoZW4gdGhl CisgKgkJcmVtYWluaW5nIHNldCBvZiBsb2NrcyBpcyB0YWtlbi4gIFRoZSBmdW5jdGlvbiByZXR1 cm5zIGVhcmx5IGluIHRoYXQKKyAqCQljYXNlIHdpdGhvdXQgaW5pdGlhbGl6aW5nIHRoZSBwbGFu LCBhbmQgdGhlIGNhbGxlciBpcyBleHBlY3RlZCB0bworICoJCXJldHJ5IHdpdGggYSBuZXcgdmFs aWQgcGxhbi4KICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogc3RhdGljIHZvaWQKQEAgLTgzNSw2ICs5MzQsNyBA QCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIHsKIAlDbWRUeXBl CQlvcGVyYXRpb24gPSBxdWVyeURlc2MtPm9wZXJhdGlvbjsKIAlQbGFubmVkU3RtdCAqcGxhbm5l ZHN0bXQgPSBxdWVyeURlc2MtPnBsYW5uZWRzdG10OworCUNhY2hlZFBsYW4gKmNhY2hlZHBsYW4g PSBxdWVyeURlc2MtPmNwbGFuOwogCVBsYW4JICAgKnBsYW4gPSBwbGFubmVkc3RtdC0+cGxhblRy ZWU7CiAJTGlzdAkgICAqcmFuZ2VUYWJsZSA9IHBsYW5uZWRzdG10LT5ydGFibGU7CiAJRVN0YXRl CSAgICplc3RhdGUgPSBxdWVyeURlc2MtPmVzdGF0ZTsKQEAgLTg1MSw5ICs5NTEsMTEgQEAgSW5p dFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJLyoKIAkgKiBpbml0aWFs aXplIHRoZSBub2RlJ3MgZXhlY3V0aW9uIHN0YXRlCiAJICovCi0JRXhlY0luaXRSYW5nZVRhYmxl KGVzdGF0ZSwgcmFuZ2VUYWJsZSwgcGxhbm5lZHN0bXQtPnBlcm1JbmZvcyk7CisJRXhlY0luaXRS YW5nZVRhYmxlKGVzdGF0ZSwgcmFuZ2VUYWJsZSwgcGxhbm5lZHN0bXQtPnBlcm1JbmZvcywKKwkJ CQkJICAgYm1zX2NvcHkocGxhbm5lZHN0bXQtPnVucHJ1bmFibGVSZWxpZHMpKTsKIAogCWVzdGF0 ZS0+ZXNfcGxhbm5lZHN0bXQgPSBwbGFubmVkc3RtdDsKKwllc3RhdGUtPmVzX2NhY2hlZHBsYW4g PSBjYWNoZWRwbGFuOwogCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcyA9IHBsYW5uZWRzdG10 LT5wYXJ0UHJ1bmVJbmZvczsKIAogCS8qCkBAIC04NjQsOSArOTY2LDE1IEBAIEluaXRQbGFuKFF1 ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCSAqIGV4ZWN1dGVkLCBhcmUgc2F2ZWQg aW4gZXNfcGFydF9wcnVuZV9yZXN1bHRzLiAgVGhlc2UgcmVzdWx0cyBjb3JyZXNwb25kCiAJICog dG8gZWFjaCBQYXJ0aXRpb25QcnVuZUluZm8gZW50cnksIGFuZCB0aGUgZXNfcGFydF9wcnVuZV9y ZXN1bHRzIGxpc3QgaXMKIAkgKiBwYXJhbGxlbCB0byBlc19wYXJ0X3BydW5lX2luZm9zLgorCSAq CisJICogVGhpcyB3aWxsIGFsc28gYWRkIHRoZSBSVCBpbmRleGVzIG9mIHN1cnZpdmluZyBsZWFm IHBhcnRpdGlvbnMgdG8KKwkgKiBlc191bnBydW5lZF9yZWxpZHMuCiAJICovCiAJRXhlY0RvSW5p dGlhbFBydW5pbmcoZXN0YXRlKTsKIAorCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkp CisJCXJldHVybjsKKwogCS8qCiAJICogTmV4dCwgYnVpbGQgdGhlIEV4ZWNSb3dNYXJrIGFycmF5 IGZyb20gdGhlIFBsYW5Sb3dNYXJrKHMpLCBpZiBhbnkuCiAJICovCkBAIC04ODEsOCArOTg5LDEz IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCQkJUmVsYXRp b24JcmVsYXRpb247CiAJCQlFeGVjUm93TWFyayAqZXJtOwogCi0JCQkvKiBpZ25vcmUgInBhcmVu dCIgcm93bWFya3M7IHRoZXkgYXJlIGlycmVsZXZhbnQgYXQgcnVudGltZSAqLwotCQkJaWYgKHJj LT5pc1BhcmVudCkKKwkJCS8qCisJCQkgKiBJZ25vcmUgInBhcmVudCIgcm93bWFya3MsIGJlY2F1 c2UgdGhleSBhcmUgaXJyZWxldmFudCBhdAorCQkJICogcnVudGltZS4gIEFsc28gaWdub3JlIHRo ZSByb3dtYXJrcyBiZWxvbmdpbmcgdG8gY2hpbGQgdGFibGVzCisJCQkgKiB0aGF0IGhhdmUgYmVl biBwcnVuZWQgaW4gRXhlY0RvSW5pdGlhbFBydW5pbmcoKS4KKwkJCSAqLworCQkJaWYgKHJjLT5p c1BhcmVudCB8fAorCQkJCSFibXNfaXNfbWVtYmVyKHJjLT5ydGksIGVzdGF0ZS0+ZXNfdW5wcnVu ZWRfcmVsaWRzKSkKIAkJCQljb250aW51ZTsKIAogCQkJLyogZ2V0IHJlbGF0aW9uJ3MgT0lEICh3 aWxsIHByb2R1Y2UgSW52YWxpZE9pZCBpZiBzdWJxdWVyeSkgKi8KQEAgLTI4NjIsNiArMjk3NSw5 IEBAIEV2YWxQbGFuUXVhbFN0YXJ0KEVQUVN0YXRlICplcHFzdGF0ZSwgUGxhbiAqcGxhblRyZWUp CiAJICogdGhlIHNuYXBzaG90LCByYW5nZXRhYmxlLCBhbmQgZXh0ZXJuYWwgUGFyYW0gaW5mby4g IFRoZXkgbmVlZCB0aGVpciBvd24KIAkgKiBjb3BpZXMgb2YgbG9jYWwgc3RhdGUsIGluY2x1ZGlu ZyBhIHR1cGxlIHRhYmxlLCBlc19wYXJhbV9leGVjX3ZhbHMsCiAJICogcmVzdWx0LXJlbCBpbmZv LCBldGMuCisJICoKKwkgKiBlc19jYWNoZWRwbGFuIGlzIG5vdCBjb3BpZWQgYmVjYXVzZSBFUFEg cGxhbiBleGVjdXRpb24gZG9lcyBub3QgYWNxdWlyZQorCSAqIGFueSBuZXcgbG9ja3MgdGhhdCBj b3VsZCBpbnZhbGlkYXRlIHRoZSBDYWNoZWRQbGFuLgogCSAqLwogCXJjZXN0YXRlLT5lc19kaXJl Y3Rpb24gPSBGb3J3YXJkU2NhbkRpcmVjdGlvbjsKIAlyY2VzdGF0ZS0+ZXNfc25hcHNob3QgPSBw YXJlbnRlc3RhdGUtPmVzX3NuYXBzaG90OwpAQCAtMjkzMyw2ICszMDQ5LDEzIEBAIEV2YWxQbGFu UXVhbFN0YXJ0KEVQUVN0YXRlICplcHFzdGF0ZSwgUGxhbiAqcGxhblRyZWUpCiAJCX0KIAl9CiAK KwkvKgorCSAqIENvcHkgZXNfdW5wcnVuZWRfcmVsaWRzIHNvIHRoYXQgUm93TWFya3Mgb2YgcHJ1 bmVkIHJlbGF0aW9ucyBhcmUKKwkgKiBpZ25vcmVkIGluIEV4ZWNJbml0TG9ja1Jvd3MoKSBhbmQg RXhlY0luaXRNb2RpZnlUYWJsZSgpIHdoZW4KKwkgKiBpbml0aWFsaXppbmcgdGhlIHBsYW4gdHJl ZXMgYmVsb3cuCisJICovCisJcmNlc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcyA9IHBhcmVudGVz dGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzOworCiAJLyoKIAkgKiBJbml0aWFsaXplIHByaXZhdGUg c3RhdGUgaW5mb3JtYXRpb24gZm9yIGVhY2ggU3ViUGxhbi4gIFdlIG11c3QgZG8gdGhpcwogCSAq IGJlZm9yZSBydW5uaW5nIEV4ZWNJbml0Tm9kZSBvbiB0aGUgbWFpbiBxdWVyeSB0cmVlLCBzaW5j ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwppbmRleCA5YzMxM2Q4MTMxNS4uMWJlZGI4 MDgzNjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCkBAIC0xODMsNiArMTgzLDcg QEAgRXhlY1NlcmlhbGl6ZVBsYW4oUGxhbiAqcGxhbiwgRVN0YXRlICplc3RhdGUpCiAJcHN0bXQt PnBsYW5UcmVlID0gcGxhbjsKIAlwc3RtdC0+cGFydFBydW5lSW5mb3MgPSBlc3RhdGUtPmVzX3Bh cnRfcHJ1bmVfaW5mb3M7CiAJcHN0bXQtPnJ0YWJsZSA9IGVzdGF0ZS0+ZXNfcmFuZ2VfdGFibGU7 CisJcHN0bXQtPnVucHJ1bmFibGVSZWxpZHMgPSBlc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkczsK IAlwc3RtdC0+cGVybUluZm9zID0gZXN0YXRlLT5lc19ydGVwZXJtaW5mb3M7CiAJcHN0bXQtPnJl c3VsdFJlbGF0aW9ucyA9IE5JTDsKIAlwc3RtdC0+YXBwZW5kUmVsYXRpb25zID0gTklMOwpAQCAt MTI1Nyw4ICsxMjU4LDE1IEBAIEV4ZWNQYXJhbGxlbEdldFF1ZXJ5RGVzYyhzaG1fdG9jICp0b2Ms IERlc3RSZWNlaXZlciAqcmVjZWl2ZXIsCiAJcGFyYW1zcGFjZSA9IHNobV90b2NfbG9va3VwKHRv YywgUEFSQUxMRUxfS0VZX1BBUkFNTElTVElORk8sIGZhbHNlKTsKIAlwYXJhbUxJID0gUmVzdG9y ZVBhcmFtTGlzdCgmcGFyYW1zcGFjZSk7CiAKLQkvKiBDcmVhdGUgYSBRdWVyeURlc2MgZm9yIHRo ZSBxdWVyeS4gKi8KKwkvKgorCSAqIENyZWF0ZSBhIFF1ZXJ5RGVzYyBmb3IgdGhlIHF1ZXJ5LiAg V2UgcGFzcyBOVUxMIGZvciBjYWNoZWRwbGFuLCBiZWNhdXNlCisJICogd2UgZG9uJ3QgaGF2ZSBh IHBvaW50ZXIgdG8gdGhlIENhY2hlZFBsYW4gaW4gdGhlIGxlYWRlcidzIHByb2Nlc3MuIEl0J3MK KwkgKiBmaW5lIGJlY2F1c2UgdGhlIG9ubHkgcmVhc29uIHRoZSBleGVjdXRvciBuZWVkcyB0byBz ZWUgaXQgaXMgdG8gZGVjaWRlCisJICogaWYgaXQgc2hvdWxkIHRha2UgbG9ja3Mgb24gY2VydGFp biByZWxhdGlvbnMsIGJ1dCBwYXJhbGxlbCB3b3JrZXJzCisJICogYWx3YXlzIHRha2UgbG9ja3Mg YW55d2F5LgorCSAqLwogCXJldHVybiBDcmVhdGVRdWVyeURlc2MocHN0bXQsCisJCQkJCQkgICBO VUxMLAogCQkJCQkJICAgcXVlcnlTdHJpbmcsCiAJCQkJCQkgICBHZXRBY3RpdmVTbmFwc2hvdCgp LCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkgICByZWNlaXZlciwgcGFyYW1MSSwgTlVMTCwgaW5z dHJ1bWVudF9vcHRpb25zKTsKQEAgLTE0MzksNyArMTQ0Nyw4IEBAIFBhcmFsbGVsUXVlcnlNYWlu KGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAogCS8qIFN0YXJ0IHVwIHRoZSBleGVj dXRvciAqLwogCXF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPmppdEZsYWdzID0gZnBlcy0+aml0X2Zs YWdzOwotCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBmcGVzLT5lZmxhZ3MpOworCWlmICghRXhl Y3V0b3JTdGFydChxdWVyeURlc2MsIGZwZXMtPmVmbGFncykpCisJCWVsb2coRVJST1IsICJFeGVj dXRvclN0YXJ0KCkgZmFpbGVkIHVuZXhwZWN0ZWRseSIpOwogCiAJLyogU3BlY2lhbCBleGVjdXRv ciBpbml0aWFsaXphdGlvbiBzdGVwcyBmb3IgcGFyYWxsZWwgd29ya2VycyAqLwogCXF1ZXJ5RGVz Yy0+cGxhbnN0YXRlLT5zdGF0ZS0+ZXNfcXVlcnlfZHNhID0gYXJlYTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQYXJ0aXRpb24uYwppbmRleCA3MGYxMTkxM2FkNC4uMGQyOGNjNDVmOGMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJw YXJ0aXRpb25pbmcvcGFydGRlc2MuaCIKICNpbmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydHBydW5l LmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlTWFuaXAuaCIKKyNpbmNsdWRlICJzdG9yYWdl L2xtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2Fj aGUuaCIKICNpbmNsdWRlICJ1dGlscy9wYXJ0Y2FjaGUuaCIKQEAgLTE4Miw3ICsxODMsOCBAQCBz dGF0aWMgY2hhciAqRXhlY0J1aWxkU2xvdFBhcnRpdGlvbktleURlc2NyaXB0aW9uKFJlbGF0aW9u IHJlbCwKIHN0YXRpYyBMaXN0ICphZGp1c3RfcGFydGl0aW9uX2NvbG5vcyhMaXN0ICpjb2xub3Ms IFJlc3VsdFJlbEluZm8gKmxlYWZfcGFydF9ycmkpOwogc3RhdGljIExpc3QgKmFkanVzdF9wYXJ0 aXRpb25fY29sbm9zX3VzaW5nX21hcChMaXN0ICpjb2xub3MsIEF0dHJNYXAgKmF0dHJNYXApOwog c3RhdGljIFBhcnRpdGlvblBydW5lU3RhdGUgKkNyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoRVN0 YXRlICplc3RhdGUsCi0JCQkJCQkJCQkJCQkJICBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5m byk7CisJCQkJCQkJCQkJCQkJICBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbywKKwkJCQkJ CQkJCQkJCQkgIEJpdG1hcHNldCAqKmFsbF9sZWFmcGFydF9ydGlzKTsKIHN0YXRpYyB2b2lkIElu aXRQYXJ0aXRpb25QcnVuZUNvbnRleHQoUGFydGl0aW9uUHJ1bmVDb250ZXh0ICpjb250ZXh0LAog CQkJCQkJCQkJICBMaXN0ICpwcnVuaW5nX3N0ZXBzLAogCQkJCQkJCQkJICBQYXJ0aXRpb25EZXNj IHBhcnRkZXNjLApAQCAtMTk2LDcgKzE5OCw4IEBAIHN0YXRpYyB2b2lkIEluaXRFeGVjUGFydGl0 aW9uUHJ1bmVDb250ZXh0cyhQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuc3RhdGUsCiBzdGF0aWMg dm9pZCBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoUGFydGl0aW9uUHJ1bmluZ0RhdGEg KnBydW5lZGF0YSwKIAkJCQkJCQkJCQkgICBQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhICpwcHJ1 bmUsCiAJCQkJCQkJCQkJICAgYm9vbCBpbml0aWFsX3BydW5lLAotCQkJCQkJCQkJCSAgIEJpdG1h cHNldCAqKnZhbGlkc3VicGxhbnMpOworCQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqKnZhbGlkc3Vi cGxhbnMsCisJCQkJCQkJCQkJICAgQml0bWFwc2V0ICoqdmFsaWRzdWJwbGFuX3J0aXMpOwogCiAK IC8qCkBAIC0xNzY2LDcgKzE3NjksOCBAQCBhZGp1c3RfcGFydGl0aW9uX2NvbG5vc191c2luZ19t YXAoTGlzdCAqY29sbm9zLCBBdHRyTWFwICphdHRyTWFwKQogICogRXhlY0RvSW5pdGlhbFBydW5p bmc6CiAgKgkJUGVyZm9ybSBydW50aW1lICJpbml0aWFsIiBwcnVuaW5nLCBpZiBuZWNlc3Nhcnks IHRvIGRldGVybWluZSB0aGUgc2V0CiAgKgkJb2YgY2hpbGQgc3Vibm9kZXMgdGhhdCBuZWVkIHRv IGJlIGluaXRpYWxpemVkIGR1cmluZyBFeGVjSW5pdE5vZGUoKSBmb3IKLSAqCQlhbGwgcGxhbiBu b2RlcyB0aGF0IGNvbnRhaW4gYSBQYXJ0aXRpb25QcnVuZUluZm8uCisgKgkJYWxsIHBsYW4gbm9k ZXMgdGhhdCBjb250YWluIGEgUGFydGl0aW9uUHJ1bmVJbmZvLiAgVGhpcyBhbHNvIGxvY2tzIHRo ZQorICoJCWxlYWYgcGFydGl0aW9ucyB3aG9zZSBzdWJub2RlcyB3aWxsIGJlIGluaXRpYWxpemVk IGlmIG5lZWRlZC4KICAqCiAgKiBFeGVjSW5pdFBhcnRpdGlvbkV4ZWNQcnVuaW5nOgogICoJCVVw ZGF0ZXMgdGhlIFBhcnRpdGlvblBydW5lU3RhdGUgZm91bmQgYXQgZ2l2ZW4gcGFydF9wcnVuZV9p bmRleCBpbgpAQCAtMTc4NywxMSArMTc5MSwxMyBAQCBhZGp1c3RfcGFydGl0aW9uX2NvbG5vc191 c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRyTWFwICphdHRyTWFwKQogICotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiAgKi8KIAorCiAvKgogICogRXhlY0RvSW5pdGlhbFBydW5pbmcKICAqCQlQZXJmb3JtIHJ1 bnRpbWUgImluaXRpYWwiIHBydW5pbmcsIGlmIG5lY2Vzc2FyeSwgdG8gZGV0ZXJtaW5lIHRoZSBz ZXQKICAqCQlvZiBjaGlsZCBzdWJub2RlcyB0aGF0IG5lZWQgdG8gYmUgaW5pdGlhbGl6ZWQgZHVy aW5nIEV4ZWNJbml0Tm9kZSgpIGZvcgotICoJCXBsYW4gbm9kZXMgdGhhdCBzdXBwb3J0IHBhcnRp dGlvbiBwcnVuaW5nLgorICoJCXBsYW4gbm9kZXMgdGhhdCBzdXBwb3J0IHBhcnRpdGlvbiBwcnVu aW5nLiAgVGhpcyBhbHNvIGxvY2tzIHRoZSBsZWFmCisgKgkJcGFydGl0aW9ucyB3aG9zZSBzdWJu b2RlcyB3aWxsIGJlIGluaXRpYWxpemVkIGlmIG5lZWRlZC4KICAqCiAgKiBUaGlzIGZ1bmN0aW9u IGl0ZXJhdGVzIG92ZXIgZWFjaCBQYXJ0aXRpb25QcnVuZUluZm8gZW50cnkgaW4KICAqIGVzdGF0 ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcy4gRm9yIGVhY2ggZW50cnksIGl0IGNyZWF0ZXMgYSBQYXJ0 aXRpb25QcnVuZVN0YXRlCkBAIC0xODE0LDE1ICsxODIwLDE5IEBAIHZvaWQKIEV4ZWNEb0luaXRp YWxQcnVuaW5nKEVTdGF0ZSAqZXN0YXRlKQogewogCUxpc3RDZWxsICAgKmxjOworCUxpc3QJICAg KmxvY2tlZF9yZWxpZHMgPSBOSUw7CiAKIAlmb3JlYWNoKGxjLCBlc3RhdGUtPmVzX3BhcnRfcHJ1 bmVfaW5mb3MpCiAJewogCQlQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbyA9IGxmaXJzdF9u b2RlKFBhcnRpdGlvblBydW5lSW5mbywgbGMpOwogCQlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVu ZXN0YXRlOwogCQlCaXRtYXBzZXQgICp2YWxpZHN1YnBsYW5zID0gTlVMTDsKKwkJQml0bWFwc2V0 ICAqYWxsX2xlYWZwYXJ0X3J0aXMgPSBOVUxMOworCQlCaXRtYXBzZXQgICp2YWxpZHN1YnBsYW5f cnRpcyA9IE5VTEw7CiAKIAkJLyogQ3JlYXRlIGFuZCBzYXZlIHRoZSBQYXJ0aXRpb25QcnVuZVN0 YXRlLiAqLwotCQlwcnVuZXN0YXRlID0gQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShlc3RhdGUs IHBydW5laW5mbyk7CisJCXBydW5lc3RhdGUgPSBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKGVz dGF0ZSwgcHJ1bmVpbmZvLAorCQkJCQkJCQkJCQkgICAmYWxsX2xlYWZwYXJ0X3J0aXMpOwogCQll c3RhdGUtPmVzX3BhcnRfcHJ1bmVfc3RhdGVzID0gbGFwcGVuZChlc3RhdGUtPmVzX3BhcnRfcHJ1 bmVfc3RhdGVzLAogCQkJCQkJCQkJCQkgICBwcnVuZXN0YXRlKTsKIApAQCAtMTgzMSwxMCArMTg0 MSw0NSBAQCBFeGVjRG9Jbml0aWFsUHJ1bmluZyhFU3RhdGUgKmVzdGF0ZSkKIAkJICogYml0bWFw c2V0IG9yIE5VTEwgYXMgZGVzY3JpYmVkIGluIHRoZSBoZWFkZXIgY29tbWVudC4KIAkJICovCiAJ CWlmIChwcnVuZXN0YXRlLT5kb19pbml0aWFsX3BydW5lKQotCQkJdmFsaWRzdWJwbGFucyA9IEV4 ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhwcnVuZXN0YXRlLCB0cnVlKTsKKwkJCXZhbGlkc3VicGxh bnMgPSBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMocHJ1bmVzdGF0ZSwgdHJ1ZSwKKwkJCQkJCQkJ CQkJCQkgJnZhbGlkc3VicGxhbl9ydGlzKTsKKwkJZWxzZQorCQkJdmFsaWRzdWJwbGFuX3J0aXMg PSBhbGxfbGVhZnBhcnRfcnRpczsKKworCQlpZiAoRXhlY1Nob3VsZExvY2tSZWxhdGlvbnMoZXN0 YXRlKSkKKwkJeworCQkJaW50CQkJcnRpbmRleCA9IC0xOworCisJCQl3aGlsZSAoKHJ0aW5kZXgg PSBibXNfbmV4dF9tZW1iZXIodmFsaWRzdWJwbGFuX3J0aXMsCisJCQkJCQkJCQkJCSAgcnRpbmRl eCkpID49IDApCisJCQl7CisJCQkJUmFuZ2VUYmxFbnRyeSAqcnRlID0gZXhlY19ydF9mZXRjaChy dGluZGV4LCBlc3RhdGUpOworCisJCQkJQXNzZXJ0KHJ0ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJ T04gJiYKKwkJCQkJICAgcnRlLT5yZWxsb2NrbW9kZSAhPSBOb0xvY2spOworCQkJCUxvY2tSZWxh dGlvbk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKKwkJCQlsb2NrZWRfcmVsaWRz ID0gbGFwcGVuZF9pbnQobG9ja2VkX3JlbGlkcywgcnRpbmRleCk7CisJCQl9CisJCX0KKwkJZXN0 YXRlLT5lc191bnBydW5lZF9yZWxpZHMgPSBibXNfYWRkX21lbWJlcnMoZXN0YXRlLT5lc191bnBy dW5lZF9yZWxpZHMsCisJCQkJCQkJCQkJCQkJIHZhbGlkc3VicGxhbl9ydGlzKTsKIAkJZXN0YXRl LT5lc19wYXJ0X3BydW5lX3Jlc3VsdHMgPSBsYXBwZW5kKGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9y ZXN1bHRzLAogCQkJCQkJCQkJCQkJdmFsaWRzdWJwbGFucyk7CiAJfQorCisJLyoKKwkgKiBSZWxl YXNlIHRoZSB1c2VsZXNzIGxvY2tzIGlmIHRoZSBwbGFuIHdvbid0IGJlIGV4ZWN1dGVkLiAgVGhp cyBpcyB0aGUKKwkgKiBzYW1lIGFzIHdoYXQgQ2hlY2tDYWNoZWRQbGFuKCkgaW4gcGxhbmNhY2hl LmMgZG9lcy4KKwkgKi8KKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCXsKKwkJ Zm9yZWFjaChsYywgbG9ja2VkX3JlbGlkcykKKwkJeworCQkJUmFuZ2VUYmxFbnRyeSAqcnRlID0g ZXhlY19ydF9mZXRjaChsZmlyc3RfaW50KGxjKSwgZXN0YXRlKTsKKworCQkJVW5sb2NrUmVsYXRp b25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7CisJCX0KKwl9CiB9CiAKIC8qCkBA IC0xOTQ0LDkgKzE5ODksMTUgQEAgRXhlY0luaXRQYXJ0aXRpb25FeGVjUHJ1bmluZyhQbGFuU3Rh dGUgKnBsYW5zdGF0ZSwKICAqIGluaXRpYWxpemVkIGhlcmUuIFRob3NlIHJlcXVpcmVkIGZvciBl eGVjIHBydW5pbmcgYXJlIGluaXRpYWxpemVkIGxhdGVyIGluCiAgKiBFeGVjSW5pdFBhcnRpdGlv bkV4ZWNQcnVuaW5nKCksIGFzIHRoZXkgZGVwZW5kIG9uIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhl CiAgKiBwYXJlbnQgcGxhbiBub2RlJ3MgUGxhblN0YXRlLgorICoKKyAqIE9uIHJldHVybiwgKmFs bF9sZWFmcGFydF9ydGlzIHdpbGwgY29udGFpbiB0aGUgUlQgaW5kZXhlcyBvZiBhbGwgbGVhZgor ICogcGFydGl0aW9ucyBpZiBpbml0aWFsIHBydW5pbmcgc3RlcHMgYXJlIHNraXBwZWQgKGUuZy4s IGR1cmluZyBFWFBMQUlOCisgKiAoR0VORVJJQ19QTEFOKSkuIFRoZSBjYWxsZXIgaXMgcmVzcG9u c2libGUgZm9yIGFkZGluZyB0aGVzZSBSVCBpbmRleGVzCisgKiB0byBlc3RhdGUtPmVzX3VucHJ1 bmVkX3JlbGlkcy4KICAqLwogc3RhdGljIFBhcnRpdGlvblBydW5lU3RhdGUgKgotQ3JlYXRlUGFy dGl0aW9uUHJ1bmVTdGF0ZShFU3RhdGUgKmVzdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVu ZWluZm8pCitDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKEVTdGF0ZSAqZXN0YXRlLCBQYXJ0aXRp b25QcnVuZUluZm8gKnBydW5laW5mbywKKwkJCQkJCSAgQml0bWFwc2V0ICoqYWxsX2xlYWZwYXJ0 X3J0aXMpCiB7CiAJUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsKIAlpbnQJCQluX3Bh cnRfaGllcmFyY2hpZXM7CkBAIC0yMDM5LDggKzIwOTAsOCBAQCBDcmVhdGVQYXJ0aXRpb25QcnVu ZVN0YXRlKEVTdGF0ZSAqZXN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJ CSAqIFRoZSBzZXQgb2YgcGFydGl0aW9ucyB0aGF0IGV4aXN0IG5vdyBtaWdodCBub3QgYmUgdGhl IHNhbWUgdGhhdAogCQkJICogZXhpc3RlZCB3aGVuIHRoZSBwbGFuIHdhcyBtYWRlLiAgVGhlIG5v cm1hbCBjYXNlIGlzIHRoYXQgaXQgaXM7CiAJCQkgKiBvcHRpbWl6ZSBmb3IgdGhhdCBjYXNlIHdp dGggYSBxdWljayBjb21wYXJpc29uLCBhbmQganVzdCBjb3B5Ci0JCQkgKiB0aGUgc3VicGxhbl9t YXAgYW5kIG1ha2Ugc3VicGFydF9tYXAgcG9pbnQgdG8gdGhlIG9uZSBpbgotCQkJICogUHJ1bmVJ bmZvLgorCQkJICogdGhlIHN1YnBsYW5fbWFwIGFuZCBtYWtlIHN1YnBhcnRfbWFwLCBsZWFmcGFy dF9ydGlfbWFwIHBvaW50IHRvCisJCQkgKiB0aGUgb25lcyBpbiBQcnVuZUluZm8uCiAJCQkgKgog CQkJICogRm9yIHRoZSBjYXNlIHdoZXJlIHRoZXkgYXJlbid0IGlkZW50aWNhbCwgd2UgY291bGQg aGF2ZSBtb3JlCiAJCQkgKiBwYXJ0aXRpb25zIG9uIGVpdGhlciBzaWRlOyBvciBldmVuIGV4YWN0 bHkgdGhlIHNhbWUgbnVtYmVyIG9mCkBAIC0yMDU5LDYgKzIxMTAsNyBAQCBDcmVhdGVQYXJ0aXRp b25QcnVuZVN0YXRlKEVTdGF0ZSAqZXN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5m bykKIAkJCQkJICAgc2l6ZW9mKGludCkgKiBwYXJ0ZGVzYy0+bnBhcnRzKSA9PSAwKQogCQkJewog CQkJCXBwcnVuZS0+c3VicGFydF9tYXAgPSBwaW5mby0+c3VicGFydF9tYXA7CisJCQkJcHBydW5l LT5sZWFmcGFydF9ydGlfbWFwID0gcGluZm8tPmxlYWZwYXJ0X3J0aV9tYXA7CiAJCQkJbWVtY3B5 KHBwcnVuZS0+c3VicGxhbl9tYXAsIHBpbmZvLT5zdWJwbGFuX21hcCwKIAkJCQkJICAgc2l6ZW9m KGludCkgKiBwaW5mby0+bnBhcnRzKTsKIAkJCX0KQEAgLTIwNzksNiArMjEzMSw3IEBAIENyZWF0 ZVBhcnRpdGlvblBydW5lU3RhdGUoRVN0YXRlICplc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAq cHJ1bmVpbmZvKQogCQkJCSAqIG1pc21hdGNoZXMuCiAJCQkJICovCiAJCQkJcHBydW5lLT5zdWJw YXJ0X21hcCA9IHBhbGxvYyhzaXplb2YoaW50KSAqIHBhcnRkZXNjLT5ucGFydHMpOworCQkJCXBw cnVuZS0+bGVhZnBhcnRfcnRpX21hcCA9IHBhbGxvYyhzaXplb2YoaW50KSAqIHBhcnRkZXNjLT5u cGFydHMpOwogCiAJCQkJZm9yIChwcF9pZHggPSAwOyBwcF9pZHggPCBwYXJ0ZGVzYy0+bnBhcnRz OyBwcF9pZHgrKykKIAkJCQl7CkBAIC0yMDk2LDYgKzIxNDksOCBAQCBDcmVhdGVQYXJ0aXRpb25Q cnVuZVN0YXRlKEVTdGF0ZSAqZXN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykK IAkJCQkJCQlwaW5mby0+c3VicGxhbl9tYXBbcGRfaWR4XTsKIAkJCQkJCXBwcnVuZS0+c3VicGFy dF9tYXBbcHBfaWR4XSA9CiAJCQkJCQkJcGluZm8tPnN1YnBhcnRfbWFwW3BkX2lkeF07CisJCQkJ CQlwcHJ1bmUtPmxlYWZwYXJ0X3J0aV9tYXBbcHBfaWR4XSA9CisJCQkJCQkJcGluZm8tPmxlYWZw YXJ0X3J0aV9tYXBbcGRfaWR4XTsKIAkJCQkJCXBkX2lkeCsrOwogCQkJCQkJY29udGludWU7CiAJ CQkJCX0KQEAgLTIxMzMsNiArMjE4OCw3IEBAIENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoRVN0 YXRlICplc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQogCiAJCQkJCXBwcnVu ZS0+c3VicGFydF9tYXBbcHBfaWR4XSA9IC0xOwogCQkJCQlwcHJ1bmUtPnN1YnBsYW5fbWFwW3Bw X2lkeF0gPSAtMTsKKwkJCQkJcHBydW5lLT5sZWFmcGFydF9ydGlfbWFwW3BwX2lkeF0gPSAwOwog CQkJCX0KIAkJCX0KIApAQCAtMjE3Niw2ICsyMjMyLDI1IEBAIENyZWF0ZVBhcnRpdGlvblBydW5l U3RhdGUoRVN0YXRlICplc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQogCQkJ cHJ1bmVzdGF0ZS0+ZXhlY3BhcmFtaWRzID0gYm1zX2FkZF9tZW1iZXJzKHBydW5lc3RhdGUtPmV4 ZWNwYXJhbWlkcywKIAkJCQkJCQkJCQkJCQkgICBwaW5mby0+ZXhlY3BhcmFtaWRzKTsKIAorCQkJ LyoKKwkJCSAqIFJldHVybiBhbGwgbGVhZiBwYXJ0aXRpb24gaW5kZXhlcyBpZiB3ZSdyZSBza2lw cGluZyBwcnVuaW5nIGluCisJCQkgKiB0aGUgRVhQTEFJTiAoR0VORVJJQ19QTEFOKSBjYXNlLgor CQkJICovCisJCQlpZiAocGluZm8tPmluaXRpYWxfcHJ1bmluZ19zdGVwcyAmJiAhcHJ1bmVzdGF0 ZS0+ZG9faW5pdGlhbF9wcnVuZSkKKwkJCXsKKwkJCQlpbnQJCQlwYXJ0X2luZGV4ID0gLTE7CisK KwkJCQl3aGlsZSAoKHBhcnRfaW5kZXggPSBibXNfbmV4dF9tZW1iZXIocHBydW5lLT5wcmVzZW50 X3BhcnRzLAorCQkJCQkJCQkJCQkJCSBwYXJ0X2luZGV4KSkgPj0gMCkKKwkJCQl7CisJCQkJCUlu ZGV4CQlydGluZGV4ID0gcHBydW5lLT5sZWFmcGFydF9ydGlfbWFwW3BhcnRfaW5kZXhdOworCisJ CQkJCWlmIChydGluZGV4KQorCQkJCQkJKmFsbF9sZWFmcGFydF9ydGlzID0gYm1zX2FkZF9tZW1i ZXIoKmFsbF9sZWFmcGFydF9ydGlzLAorCQkJCQkJCQkJCQkJCQkJcnRpbmRleCk7CisJCQkJfQor CQkJfQorCiAJCQlqKys7CiAJCX0KIAkJaSsrOwpAQCAtMjQ0MiwxMCArMjUxNywxNSBAQCBJbml0 RXhlY1BhcnRpdGlvblBydW5lQ29udGV4dHMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0 ZSwKICAqIFBhc3MgaW5pdGlhbF9wcnVuZSBpZiBQQVJBTV9FWEVDIFBhcmFtcyBjYW5ub3QgeWV0 IGJlIGV2YWx1YXRlZC4gIFRoaXMKICAqIGRpZmZlcmVudGlhdGVzIHRoZSBpbml0aWFsIGV4ZWN1 dG9yLXRpbWUgcHJ1bmluZyBzdGVwIGZyb20gbGF0ZXIKICAqIHJ1bnRpbWUgcHJ1bmluZy4KKyAq CisgKiBUaGUgY2FsbGVyIG11c3QgcGFzcyBhIG5vbi1OVUxMIHZhbGlkc3VicGxhbl9ydGlzIGR1 cmluZyBpbml0aWFsIHBydW5pbmcKKyAqIHRvIGNvbGxlY3QgdGhlIFJUIGluZGV4ZXMgb2YgbGVh ZiBwYXJ0aXRpb25zIHdob3NlIHN1Ym5vZGVzIHdpbGwgYmUKKyAqIGV4ZWN1dGVkLiAgVGhlc2Ug UlQgaW5kZXhlcyBhcmUgbGF0ZXIgYWRkZWQgdG8gRVN0YXRlLmVzX3VucHJ1bmVkX3JlbGlkcy4K ICAqLwogQml0bWFwc2V0ICoKIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVu ZVN0YXRlICpwcnVuZXN0YXRlLAotCQkJCQkJIGJvb2wgaW5pdGlhbF9wcnVuZSkKKwkJCQkJCSBi b29sIGluaXRpYWxfcHJ1bmUsCisJCQkJCQkgQml0bWFwc2V0ICoqdmFsaWRzdWJwbGFuX3J0aXMp CiB7CiAJQml0bWFwc2V0ICAqcmVzdWx0ID0gTlVMTDsKIAlNZW1vcnlDb250ZXh0IG9sZGNvbnRl eHQ7CkBAIC0yNDU3LDYgKzI1MzcsNyBAQCBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0 aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKIAkgKiBldmFsdWF0ZWQgKmFuZCogdGhlcmUgYXJl IHN0ZXBzIGluIHdoaWNoIHRvIGRvIHNvLgogCSAqLwogCUFzc2VydChpbml0aWFsX3BydW5lIHx8 IHBydW5lc3RhdGUtPmRvX2V4ZWNfcHJ1bmUpOworCUFzc2VydCh2YWxpZHN1YnBsYW5fcnRpcyAh PSBOVUxMIHx8ICFpbml0aWFsX3BydW5lKTsKIAogCS8qCiAJICogU3dpdGNoIHRvIGEgdGVtcCBj b250ZXh0IHRvIGF2b2lkIGxlYWtpbmcgbWVtb3J5IGluIHRoZSBleGVjdXRvcidzCkBAIC0yNDgw LDcgKzI1NjEsNyBAQCBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0 ZSAqcHJ1bmVzdGF0ZSwKIAkJICovCiAJCXBwcnVuZSA9ICZwcnVuZWRhdGEtPnBhcnRyZWxwcnVu ZWRhdGFbMF07CiAJCWZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShwcnVuZWRhdGEsIHBw cnVuZSwgaW5pdGlhbF9wcnVuZSwKLQkJCQkJCQkJCSAgICZyZXN1bHQpOworCQkJCQkJCQkJICAg JnJlc3VsdCwgdmFsaWRzdWJwbGFuX3J0aXMpOwogCiAJCS8qIEV4cHJlc3Npb24gZXZhbCBtYXkg aGF2ZSB1c2VkIHNwYWNlIGluIEV4cHJDb250ZXh0IHRvbyAqLwogCQlpZiAocHBydW5lLT5leGVj X2NvbnRleHQuaW5pdGlhbGl6ZWQpCkBAIC0yNDk3LDYgKzI1NzgsOCBAQCBFeGVjRmluZE1hdGNo aW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKIAogCS8qIENvcHkg cmVzdWx0IG91dCBvZiB0aGUgdGVtcCBjb250ZXh0IGJlZm9yZSB3ZSByZXNldCBpdCAqLwogCXJl c3VsdCA9IGJtc19jb3B5KHJlc3VsdCk7CisJaWYgKHZhbGlkc3VicGxhbl9ydGlzKQorCQkqdmFs aWRzdWJwbGFuX3J0aXMgPSBibXNfY29weSgqdmFsaWRzdWJwbGFuX3J0aXMpOwogCiAJTWVtb3J5 Q29udGV4dFJlc2V0KHBydW5lc3RhdGUtPnBydW5lX2NvbnRleHQpOwogCkBAIC0yNTA3LDEzICsy NTkwLDE2IEBAIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0YXRlICpw cnVuZXN0YXRlLAogICogZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlCiAgKgkJUmVjdXJz aXZlIHdvcmtlciBmdW5jdGlvbiBmb3IgRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zCiAgKgotICog QWRkcyB2YWxpZCAobm9uLXBydW5hYmxlKSBzdWJwbGFuIElEcyB0byAqdmFsaWRzdWJwbGFucwor ICogQWRkcyB2YWxpZCAobm9uLXBydW5hYmxlKSBzdWJwbGFuIElEcyB0byAqdmFsaWRzdWJwbGFu cyBhbmQgdGhlIFJUIGluZGV4ZXMKKyAqIG9mIHRoZWlyIGNvcnJlc3BvbmRpbmcgbGVhZiBwYXJ0 aXRpb25zIHRvICp2YWxpZHN1YnBsYW5fcnRpcyBpZgorICogaXQncyBub24tTlVMTC4KICAqLwog c3RhdGljIHZvaWQKIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShQYXJ0aXRpb25QcnVu aW5nRGF0YSAqcHJ1bmVkYXRhLAogCQkJCQkJCSAgIFBhcnRpdGlvbmVkUmVsUHJ1bmluZ0RhdGEg KnBwcnVuZSwKIAkJCQkJCQkgICBib29sIGluaXRpYWxfcHJ1bmUsCi0JCQkJCQkJICAgQml0bWFw c2V0ICoqdmFsaWRzdWJwbGFucykKKwkJCQkJCQkgICBCaXRtYXBzZXQgKip2YWxpZHN1YnBsYW5z LAorCQkJCQkJCSAgIEJpdG1hcHNldCAqKnZhbGlkc3VicGxhbl9ydGlzKQogewogCUJpdG1hcHNl dCAgKnBhcnRzZXQ7CiAJaW50CQkJaTsKQEAgLTI1NDAsOCArMjYyNiwxMyBAQCBmaW5kX21hdGNo aW5nX3N1YnBsYW5zX3JlY3Vyc2UoUGFydGl0aW9uUHJ1bmluZ0RhdGEgKnBydW5lZGF0YSwKIAl3 aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIocGFydHNldCwgaSkpID49IDApCiAJewogCQlpZiAo cHBydW5lLT5zdWJwbGFuX21hcFtpXSA+PSAwKQorCQl7CiAJCQkqdmFsaWRzdWJwbGFucyA9IGJt c19hZGRfbWVtYmVyKCp2YWxpZHN1YnBsYW5zLAogCQkJCQkJCQkJCQlwcHJ1bmUtPnN1YnBsYW5f bWFwW2ldKTsKKwkJCWlmICh2YWxpZHN1YnBsYW5fcnRpcykKKwkJCQkqdmFsaWRzdWJwbGFuX3J0 aXMgPSBibXNfYWRkX21lbWJlcigqdmFsaWRzdWJwbGFuX3J0aXMsCisJCQkJCQkJCQkJCQkJcHBy dW5lLT5sZWFmcGFydF9ydGlfbWFwW2ldKTsKKwkJfQogCQllbHNlCiAJCXsKIAkJCWludAkJCXBh cnRpZHggPSBwcHJ1bmUtPnN1YnBhcnRfbWFwW2ldOwpAQCAtMjU0OSw3ICsyNjQwLDggQEAgZmlu ZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKFBhcnRpdGlvblBydW5pbmdEYXRhICpwcnVuZWRh dGEsCiAJCQlpZiAocGFydGlkeCA+PSAwKQogCQkJCWZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVj dXJzZShwcnVuZWRhdGEsCiAJCQkJCQkJCQkJCSAgICZwcnVuZWRhdGEtPnBhcnRyZWxwcnVuZWRh dGFbcGFydGlkeF0sCi0JCQkJCQkJCQkJCSAgIGluaXRpYWxfcHJ1bmUsIHZhbGlkc3VicGxhbnMp OworCQkJCQkJCQkJCQkgICBpbml0aWFsX3BydW5lLCB2YWxpZHN1YnBsYW5zLAorCQkJCQkJCQkJ CQkgICB2YWxpZHN1YnBsYW5fcnRpcyk7CiAJCQllbHNlCiAJCQl7CiAJCQkJLyoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1V0aWxzLmMKaW5kZXggNmFhYzZmM2E4NzIuLjY3OTI2MTc4NzU5IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjVXRpbHMuYwpAQCAtMTQ3LDYgKzE0Nyw3IEBAIENyZWF0ZUV4ZWN1dG9yU3RhdGUo dm9pZCkKIAllc3RhdGUtPmVzX3RvcF9lZmxhZ3MgPSAwOwogCWVzdGF0ZS0+ZXNfaW5zdHJ1bWVu dCA9IDA7CiAJZXN0YXRlLT5lc19maW5pc2hlZCA9IGZhbHNlOworCWVzdGF0ZS0+ZXNfYWJvcnRl ZCA9IGZhbHNlOwogCiAJZXN0YXRlLT5lc19leHByY29udGV4dHMgPSBOSUw7CiAKQEAgLTc3MSw3 ICs3NzIsOCBAQCBFeGVjT3BlblNjYW5SZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgSW5kZXggc2Nh bnJlbGlkLCBpbnQgZWZsYWdzKQogICogaW5kZXhlZCBieSByYW5nZXRhYmxlIGluZGV4LgogICov CiB2b2lkCi1FeGVjSW5pdFJhbmdlVGFibGUoRVN0YXRlICplc3RhdGUsIExpc3QgKnJhbmdlVGFi bGUsIExpc3QgKnBlcm1JbmZvcykKK0V4ZWNJbml0UmFuZ2VUYWJsZShFU3RhdGUgKmVzdGF0ZSwg TGlzdCAqcmFuZ2VUYWJsZSwgTGlzdCAqcGVybUluZm9zLAorCQkJCSAgIEJpdG1hcHNldCAqdW5w cnVuZWRfcmVsaWRzKQogewogCS8qIFJlbWVtYmVyIHRoZSByYW5nZSB0YWJsZSBMaXN0IGFzLWlz ICovCiAJZXN0YXRlLT5lc19yYW5nZV90YWJsZSA9IHJhbmdlVGFibGU7CkBAIC03ODIsNiArNzg0 LDE1IEBAIEV4ZWNJbml0UmFuZ2VUYWJsZShFU3RhdGUgKmVzdGF0ZSwgTGlzdCAqcmFuZ2VUYWJs ZSwgTGlzdCAqcGVybUluZm9zKQogCS8qIFNldCBzaXplIG9mIGFzc29jaWF0ZWQgYXJyYXlzICov CiAJZXN0YXRlLT5lc19yYW5nZV90YWJsZV9zaXplID0gbGlzdF9sZW5ndGgocmFuZ2VUYWJsZSk7 CiAKKwkvKgorCSAqIEluaXRpYWxpemUgdGhlIGJpdG1hcHNldCBvZiBSVCBpbmRleGVzIChlc191 bnBydW5lZF9yZWxpZHMpCisJICogcmVwcmVzZW50aW5nIHJlbGF0aW9ucyB0aGF0IHdpbGwgYmUg c2Nhbm5lZCBkdXJpbmcgZXhlY3V0aW9uLiBUaGlzIHNldAorCSAqIGlzIGluaXRpYWxseSBwb3B1 bGF0ZWQgYnkgdGhlIGNhbGxlciBhbmQgbWF5IGJlIGV4dGVuZGVkIGxhdGVyIGJ5CisJICogRXhl Y0RvSW5pdGlhbFBydW5pbmcoKSB0byBpbmNsdWRlIFJUIGluZGV4ZXMgb2YgdW5wcnVuZWQgbGVh ZgorCSAqIHBhcnRpdGlvbnMuCisJICovCisJZXN0YXRlLT5lc191bnBydW5lZF9yZWxpZHMgPSB1 bnBydW5lZF9yZWxpZHM7CisKIAkvKgogCSAqIEFsbG9jYXRlIGFuIGFycmF5IHRvIHN0b3JlIGFu IG9wZW4gUmVsYXRpb24gY29ycmVzcG9uZGluZyB0byBlYWNoCiAJICogcmFuZ2V0YWJsZSBlbnRy eSwgYW5kIGluaXRpYWxpemUgZW50cmllcyB0byBOVUxMLiAgUmVsYXRpb25zIGFyZSBvcGVuZWQK QEAgLTgwMyw2ICs4MTQsMTAgQEAgRXhlY0luaXRSYW5nZVRhYmxlKEVTdGF0ZSAqZXN0YXRlLCBM aXN0ICpyYW5nZVRhYmxlLCBMaXN0ICpwZXJtSW5mb3MpCiAgKgkJT3BlbiB0aGUgUmVsYXRpb24g Zm9yIGEgcmFuZ2UgdGFibGUgZW50cnksIGlmIG5vdCBhbHJlYWR5IGRvbmUKICAqCiAgKiBUaGUg UmVsYXRpb25zIHdpbGwgYmUgY2xvc2VkIGluIEV4ZWNFbmRQbGFuKCkuCisgKgorICogTm90ZTog VGhlIGNhbGxlciBtdXN0IGVuc3VyZSB0aGF0ICdydGknIHJlZmVycyB0byBhbiB1bnBydW5lZCBy ZWxhdGlvbgorICogKGkuZS4sIGl0IGlzIGEgbWVtYmVyIG9mIGVzdGF0ZS0+ZXNfdW5wcnVuZWRf cmVsaWRzKSBiZWZvcmUgY2FsbGluZyB0aGlzCisgKiBmdW5jdGlvbi4gQXR0ZW1wdGluZyB0byBv cGVuIGEgcHJ1bmVkIHJlbGF0aW9uIHdpbGwgcmVzdWx0IGluIGFuIGVycm9yLgogICovCiBSZWxh dGlvbgogRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgSW5kZXggcnRp KQpAQCAtODExLDYgKzgyNiw5IEBAIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oRVN0YXRlICpl c3RhdGUsIEluZGV4IHJ0aSkKIAogCUFzc2VydChydGkgPiAwICYmIHJ0aSA8PSBlc3RhdGUtPmVz X3JhbmdlX3RhYmxlX3NpemUpOwogCisJaWYgKCFibXNfaXNfbWVtYmVyKHJ0aSwgZXN0YXRlLT5l c191bnBydW5lZF9yZWxpZHMpKQorCQllbG9nKEVSUk9SLCAidHJ5aW5nIHRvIG9wZW4gYSBwcnVu ZWQgcmVsYXRpb24iKTsKKwogCXJlbCA9IGVzdGF0ZS0+ZXNfcmVsYXRpb25zW3J0aSAtIDFdOwog CWlmIChyZWwgPT0gTlVMTCkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9m dW5jdGlvbnMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCmluZGV4IDc1N2Y4 MDY4ZTIxLi42YWE4ZTljNGQ4YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVu Y3Rpb25zLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKQEAgLTg0MCw2 ICs4NDAsNyBAQCBwb3N0cXVlbF9zdGFydChleGVjdXRpb25fc3RhdGUgKmVzLCBTUUxGdW5jdGlv bkNhY2hlUHRyIGZjYWNoZSkKIAkJZGVzdCA9IE5vbmVfUmVjZWl2ZXI7CiAKIAllcy0+cWQgPSBD cmVhdGVRdWVyeURlc2MoZXMtPnN0bXQsCisJCQkJCQkJIE5VTEwsCiAJCQkJCQkJIGZjYWNoZS0+ c3JjLAogCQkJCQkJCSBHZXRBY3RpdmVTbmFwc2hvdCgpLAogCQkJCQkJCSBJbnZhbGlkU25hcHNo b3QsCkBAIC04NjQsNyArODY1LDggQEAgcG9zdHF1ZWxfc3RhcnQoZXhlY3V0aW9uX3N0YXRlICpl cywgU1FMRnVuY3Rpb25DYWNoZVB0ciBmY2FjaGUpCiAJCQllZmxhZ3MgPSBFWEVDX0ZMQUdfU0tJ UF9UUklHR0VSUzsKIAkJZWxzZQogCQkJZWZsYWdzID0gMDsJCQkvKiBkZWZhdWx0IHJ1bi10by1j b21wbGV0aW9uIGZsYWdzICovCi0JCUV4ZWN1dG9yU3RhcnQoZXMtPnFkLCBlZmxhZ3MpOworCQlp ZiAoIUV4ZWN1dG9yU3RhcnQoZXMtPnFkLCBlZmxhZ3MpKQorCQkJZWxvZyhFUlJPUiwgIkV4ZWN1 dG9yU3RhcnQoKSBmYWlsZWQgdW5leHBlY3RlZGx5Iik7CiAJfQogCiAJZXMtPnN0YXR1cyA9IEZf RVhFQ19SVU47CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKaW5kZXggMjM5N2U1ZTE3YjAuLjE1 YzQyMjdjYzYyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCkBAIC01OTUsNyArNTk1LDcg QEAgY2hvb3NlX25leHRfc3VicGxhbl9sb2NhbGx5KEFwcGVuZFN0YXRlICpub2RlKQogCQllbHNl IGlmICghbm9kZS0+YXNfdmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCkKIAkJewogCQkJbm9kZS0+ YXNfdmFsaWRfc3VicGxhbnMgPQotCQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5h c19wcnVuZV9zdGF0ZSwgZmFsc2UpOworCQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2Rl LT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UsIE5VTEwpOwogCQkJbm9kZS0+YXNfdmFsaWRfc3VicGxh bnNfaWRlbnRpZmllZCA9IHRydWU7CiAJCX0KIApAQCAtNjYyLDcgKzY2Miw3IEBAIGNob29zZV9u ZXh0X3N1YnBsYW5fZm9yX2xlYWRlcihBcHBlbmRTdGF0ZSAqbm9kZSkKIAkJaWYgKCFub2RlLT5h c192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkKQogCQl7CiAJCQlub2RlLT5hc192YWxpZF9zdWJw bGFucyA9Ci0JCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0YXRl LCBmYWxzZSk7CisJCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0 YXRlLCBmYWxzZSwgTlVMTCk7CiAJCQlub2RlLT5hc192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVk ID0gdHJ1ZTsKIAogCQkJLyoKQEAgLTczOCw3ICs3MzgsNyBAQCBjaG9vc2VfbmV4dF9zdWJwbGFu X2Zvcl93b3JrZXIoQXBwZW5kU3RhdGUgKm5vZGUpCiAJZWxzZSBpZiAoIW5vZGUtPmFzX3ZhbGlk X3N1YnBsYW5zX2lkZW50aWZpZWQpCiAJewogCQlub2RlLT5hc192YWxpZF9zdWJwbGFucyA9Ci0J CQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlKTsK KwkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2Us IE5VTEwpOwogCQlub2RlLT5hc192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkID0gdHJ1ZTsKIAog CQltYXJrX2ludmFsaWRfc3VicGxhbnNfYXNfZmluaXNoZWQobm9kZSk7CkBAIC04OTEsNyArODkx LDcgQEAgRXhlY0FwcGVuZEFzeW5jQmVnaW4oQXBwZW5kU3RhdGUgKm5vZGUpCiAJaWYgKCFub2Rl LT5hc192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkKQogCXsKIAkJbm9kZS0+YXNfdmFsaWRfc3Vi cGxhbnMgPQotCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0YXRl LCBmYWxzZSk7CisJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3Rh dGUsIGZhbHNlLCBOVUxMKTsKIAkJbm9kZS0+YXNfdmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCA9 IHRydWU7CiAKIAkJY2xhc3NpZnlfbWF0Y2hpbmdfc3VicGxhbnMobm9kZSk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVMb2NrUm93cy5jCmluZGV4IDRlNGUzZGIwYjM4Li5hOGFmYmY5M2I0OCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMKQEAgLTM0Nyw4ICszNDcsMTMgQEAgRXhlY0luaXRM b2NrUm93cyhMb2NrUm93cyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCUV4 ZWNSb3dNYXJrICplcm07CiAJCUV4ZWNBdXhSb3dNYXJrICphZXJtOwogCi0JCS8qIGlnbm9yZSAi cGFyZW50IiByb3dtYXJrczsgdGhleSBhcmUgaXJyZWxldmFudCBhdCBydW50aW1lICovCi0JCWlm IChyYy0+aXNQYXJlbnQpCisJCS8qCisJCSAqIElnbm9yZSAicGFyZW50IiByb3dtYXJrcywgYmVj YXVzZSB0aGV5IGFyZSBpcnJlbGV2YW50IGF0IHJ1bnRpbWUuCisJCSAqIEFsc28gaWdub3JlIHRo ZSByb3dtYXJrcyBiZWxvbmdpbmcgdG8gY2hpbGQgdGFibGVzIHRoYXQgaGF2ZSBiZWVuCisJCSAq IHBydW5lZCBpbiBFeGVjRG9Jbml0aWFsUHJ1bmluZygpLgorCQkgKi8KKwkJaWYgKHJjLT5pc1Bh cmVudCB8fAorCQkJIWJtc19pc19tZW1iZXIocmMtPnJ0aSwgZXN0YXRlLT5lc191bnBydW5lZF9y ZWxpZHMpKQogCQkJY29udGludWU7CiAKIAkJLyogZmluZCBFeGVjUm93TWFyayBhbmQgYnVpbGQg RXhlY0F1eFJvd01hcmsgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVN ZXJnZUFwcGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKaW5k ZXggYjJkYzY2MjZjOTkuLjQwNWU4Zjk0Mjg1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTWVyZ2VBcHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVy Z2VBcHBlbmQuYwpAQCAtMjMzLDcgKzIzMyw3IEBAIEV4ZWNNZXJnZUFwcGVuZChQbGFuU3RhdGUg KnBzdGF0ZSkKIAkJICovCiAJCWlmIChub2RlLT5tc192YWxpZF9zdWJwbGFucyA9PSBOVUxMKQog CQkJbm9kZS0+bXNfdmFsaWRfc3VicGxhbnMgPQotCQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFu cyhub2RlLT5tc19wcnVuZV9zdGF0ZSwgZmFsc2UpOworCQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQ bGFucyhub2RlLT5tc19wcnVuZV9zdGF0ZSwgZmFsc2UsIE5VTEwpOwogCiAJCS8qCiAJCSAqIEZp cnN0IHRpbWUgdGhyb3VnaDogcHVsbCB0aGUgZmlyc3QgdHVwbGUgZnJvbSBlYWNoIHZhbGlkIHN1 YnBsYW4sCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUu YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCmluZGV4IGJjODJlMDM1 YmEyLi4zNDllZDJkNmQyYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1v ZGlmeVRhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMK QEAgLTY5MCw3ICs2OTAsNyBAQCBFeGVjSW5pdFVwZGF0ZVByb2plY3Rpb24oTW9kaWZ5VGFibGVT dGF0ZSAqbXRzdGF0ZSwKIAkJQXNzZXJ0KHdoaWNocmVsID49IDAgJiYgd2hpY2hyZWwgPCBtdHN0 YXRlLT5tdF9ucmVscyk7CiAJfQogCi0JdXBkYXRlQ29sbm9zID0gKExpc3QgKikgbGlzdF9udGgo bm9kZS0+dXBkYXRlQ29sbm9zTGlzdHMsIHdoaWNocmVsKTsKKwl1cGRhdGVDb2xub3MgPSAoTGlz dCAqKSBsaXN0X250aChtdHN0YXRlLT5tdF91cGRhdGVDb2xub3NMaXN0cywgd2hpY2hyZWwpOwog CiAJLyoKIAkgKiBGb3IgVVBEQVRFLCB3ZSB1c2UgdGhlIG9sZCB0dXBsZSB0byBmaWxsIHVwIG1p c3NpbmcgdmFsdWVzIGluIHRoZSB0dXBsZQpAQCAtNDQ1Myw3ICs0NDUzLDExIEBAIEV4ZWNJbml0 TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KQogCU1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGU7CiAJUGxhbgkgICAqc3VicGxhbiA9IG91dGVy UGxhbihub2RlKTsKIAlDbWRUeXBlCQlvcGVyYXRpb24gPSBub2RlLT5vcGVyYXRpb247Ci0JaW50 CQkJbnJlbHMgPSBsaXN0X2xlbmd0aChub2RlLT5yZXN1bHRSZWxhdGlvbnMpOworCWludAkJCW5y ZWxzOworCUxpc3QJICAgKnJlc3VsdFJlbGF0aW9ucyA9IE5JTDsKKwlMaXN0CSAgICp3aXRoQ2hl Y2tPcHRpb25MaXN0cyA9IE5JTDsKKwlMaXN0CSAgICpyZXR1cm5pbmdMaXN0cyA9IE5JTDsKKwlM aXN0CSAgICp1cGRhdGVDb2xub3NMaXN0cyA9IE5JTDsKIAlSZXN1bHRSZWxJbmZvICpyZXN1bHRS ZWxJbmZvOwogCUxpc3QJICAgKmFyb3dtYXJrczsKIAlMaXN0Q2VsbCAgICpsOwpAQCAtNDQ2Myw2 ICs0NDY3LDQ1IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0 ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCS8qIGNoZWNrIGZvciB1bnN1cHBvcnRlZCBmbGFncyAq LwogCUFzc2VydCghKGVmbGFncyAmIChFWEVDX0ZMQUdfQkFDS1dBUkQgfCBFWEVDX0ZMQUdfTUFS SykpKTsKIAorCS8qCisJICogT25seSBjb25zaWRlciB1bnBydW5lZCByZWxhdGlvbnMgZm9yIGlu aXRpYWxpemluZyB0aGVpciBSZXN1bHRSZWxJbmZvCisJICogc3RydWN0IGFuZCBvdGhlciBmaWVs ZHMgc3VjaCBhcyB3aXRoQ2hlY2tPcHRpb25zLCBldGMuCisJICovCisJaSA9IDA7CisJZm9yZWFj aChsLCBub2RlLT5yZXN1bHRSZWxhdGlvbnMpCisJeworCQlJbmRleAkJcnRpID0gbGZpcnN0X2lu dChsKTsKKworCQlpZiAoYm1zX2lzX21lbWJlcihydGksIGVzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVs aWRzKSkKKwkJeworCQkJcmVzdWx0UmVsYXRpb25zID0gbGFwcGVuZF9pbnQocmVzdWx0UmVsYXRp b25zLCBydGkpOworCQkJaWYgKG5vZGUtPndpdGhDaGVja09wdGlvbkxpc3RzKQorCQkJeworCQkJ CUxpc3QJICAgKndpdGhDaGVja09wdGlvbnMgPSBsaXN0X250aF9ub2RlKExpc3QsCisJCQkJCQkJ CQkJCQkJCQkgbm9kZS0+d2l0aENoZWNrT3B0aW9uTGlzdHMsCisJCQkJCQkJCQkJCQkJCQkgaSk7 CisKKwkJCQl3aXRoQ2hlY2tPcHRpb25MaXN0cyA9IGxhcHBlbmQod2l0aENoZWNrT3B0aW9uTGlz dHMsIHdpdGhDaGVja09wdGlvbnMpOworCQkJfQorCQkJaWYgKG5vZGUtPnJldHVybmluZ0xpc3Rz KQorCQkJeworCQkJCUxpc3QJICAgKnJldHVybmluZ0xpc3QgPSBsaXN0X250aF9ub2RlKExpc3Qs CisJCQkJCQkJCQkJCQkJCSAgbm9kZS0+cmV0dXJuaW5nTGlzdHMsCisJCQkJCQkJCQkJCQkJCSAg aSk7CisKKwkJCQlyZXR1cm5pbmdMaXN0cyA9IGxhcHBlbmQocmV0dXJuaW5nTGlzdHMsIHJldHVy bmluZ0xpc3QpOworCQkJfQorCQkJaWYgKG5vZGUtPnVwZGF0ZUNvbG5vc0xpc3RzKQorCQkJewor CQkJCUxpc3QJICAgKnVwZGF0ZUNvbG5vc0xpc3QgPSBsaXN0X250aChub2RlLT51cGRhdGVDb2xu b3NMaXN0cywgaSk7CisKKwkJCQl1cGRhdGVDb2xub3NMaXN0cyA9IGxhcHBlbmQodXBkYXRlQ29s bm9zTGlzdHMsIHVwZGF0ZUNvbG5vc0xpc3QpOworCQkJfQorCQl9CisJCWkrKzsKKwl9CisJbnJl bHMgPSBsaXN0X2xlbmd0aChyZXN1bHRSZWxhdGlvbnMpOworCiAJLyoKIAkgKiBjcmVhdGUgc3Rh dGUgc3RydWN0dXJlCiAJICovCkBAIC00NDgzLDYgKzQ1MjYsNyBAQCBFeGVjSW5pdE1vZGlmeVRh YmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAltdHN0 YXRlLT5tdF9tZXJnZV9pbnNlcnRlZCA9IDA7CiAJbXRzdGF0ZS0+bXRfbWVyZ2VfdXBkYXRlZCA9 IDA7CiAJbXRzdGF0ZS0+bXRfbWVyZ2VfZGVsZXRlZCA9IDA7CisJbXRzdGF0ZS0+bXRfdXBkYXRl Q29sbm9zTGlzdHMgPSB1cGRhdGVDb2xub3NMaXN0czsKIAogCS8qLS0tLS0tLS0tLQogCSAqIFJl c29sdmUgdGhlIHRhcmdldCByZWxhdGlvbi4gVGhpcyBpcyB0aGUgc2FtZSBhczoKQEAgLTQ1MDAs NiArNDU0NCw3IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0 ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqLwogCWlmIChub2RlLT5yb290UmVsYXRpb24gPiAw KQogCXsKKwkJQXNzZXJ0KGJtc19pc19tZW1iZXIobm9kZS0+cm9vdFJlbGF0aW9uLCBlc3RhdGUt PmVzX3VucHJ1bmVkX3JlbGlkcykpOwogCQltdHN0YXRlLT5yb290UmVzdWx0UmVsSW5mbyA9IG1h a2VOb2RlKFJlc3VsdFJlbEluZm8pOwogCQlFeGVjSW5pdFJlc3VsdFJlbGF0aW9uKGVzdGF0ZSwg bXRzdGF0ZS0+cm9vdFJlc3VsdFJlbEluZm8sCiAJCQkJCQkJICAgbm9kZS0+cm9vdFJlbGF0aW9u KTsKQEAgLTQ1MTQsNyArNDU1OSw3IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUg Km5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCiAJLyogc2V0IHVwIGVwcXN0YXRl IHdpdGggZHVtbXkgc3VicGxhbiBkYXRhIGZvciB0aGUgbW9tZW50ICovCiAJRXZhbFBsYW5RdWFs SW5pdCgmbXRzdGF0ZS0+bXRfZXBxc3RhdGUsIGVzdGF0ZSwgTlVMTCwgTklMLAotCQkJCQkgbm9k ZS0+ZXBxUGFyYW0sIG5vZGUtPnJlc3VsdFJlbGF0aW9ucyk7CisJCQkJCSBub2RlLT5lcHFQYXJh bSwgcmVzdWx0UmVsYXRpb25zKTsKIAltdHN0YXRlLT5maXJlQlNUcmlnZ2VycyA9IHRydWU7CiAK IAkvKgpAQCAtNDUzMiw3ICs0NTc3LDcgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJs ZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICovCiAJcmVzdWx0UmVsSW5m byA9IG10c3RhdGUtPnJlc3VsdFJlbEluZm87CiAJaSA9IDA7Ci0JZm9yZWFjaChsLCBub2RlLT5y ZXN1bHRSZWxhdGlvbnMpCisJZm9yZWFjaChsLCByZXN1bHRSZWxhdGlvbnMpCiAJewogCQlJbmRl eAkJcmVzdWx0UmVsYXRpb24gPSBsZmlyc3RfaW50KGwpOwogCQlMaXN0CSAgICptZXJnZUFjdGlv bnMgPSBOSUw7CkBAIC00Njc2LDcgKzQ3MjEsNyBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlm eVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBJbml0aWFsaXpl IGFueSBXSVRIIENIRUNLIE9QVElPTiBjb25zdHJhaW50cyBpZiBuZWVkZWQuCiAJICovCiAJcmVz dWx0UmVsSW5mbyA9IG10c3RhdGUtPnJlc3VsdFJlbEluZm87Ci0JZm9yZWFjaChsLCBub2RlLT53 aXRoQ2hlY2tPcHRpb25MaXN0cykKKwlmb3JlYWNoKGwsIHdpdGhDaGVja09wdGlvbkxpc3RzKQog CXsKIAkJTGlzdAkgICAqd2NvTGlzdCA9IChMaXN0ICopIGxmaXJzdChsKTsKIAkJTGlzdAkgICAq d2NvRXhwcnMgPSBOSUw7CkBAIC00Njk5LDcgKzQ3NDQsNyBAQCBFeGVjSW5pdE1vZGlmeVRhYmxl KE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkvKgogCSAq IEluaXRpYWxpemUgUkVUVVJOSU5HIHByb2plY3Rpb25zIGlmIG5lZWRlZC4KIAkgKi8KLQlpZiAo bm9kZS0+cmV0dXJuaW5nTGlzdHMpCisJaWYgKHJldHVybmluZ0xpc3RzKQogCXsKIAkJVHVwbGVU YWJsZVNsb3QgKnNsb3Q7CiAJCUV4cHJDb250ZXh0ICplY29udGV4dDsKQEAgLTQ3MDgsNyArNDc1 Myw3IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0 YXRlLCBpbnQgZWZsYWdzKQogCQkgKiBJbml0aWFsaXplIHJlc3VsdCB0dXBsZSBzbG90IGFuZCBh c3NpZ24gaXRzIHJvd3R5cGUgdXNpbmcgdGhlIGZpcnN0CiAJCSAqIFJFVFVSTklORyBsaXN0LiAg V2UgYXNzdW1lIHRoZSByZXN0IHdpbGwgbG9vayB0aGUgc2FtZS4KIAkJICovCi0JCW10c3RhdGUt PnBzLnBsYW4tPnRhcmdldGxpc3QgPSAoTGlzdCAqKSBsaW5pdGlhbChub2RlLT5yZXR1cm5pbmdM aXN0cyk7CisJCW10c3RhdGUtPnBzLnBsYW4tPnRhcmdldGxpc3QgPSAoTGlzdCAqKSBsaW5pdGlh bChyZXR1cm5pbmdMaXN0cyk7CiAKIAkJLyogU2V0IHVwIGEgc2xvdCBmb3IgdGhlIG91dHB1dCBv ZiB0aGUgUkVUVVJOSU5HIHByb2plY3Rpb24ocykgKi8KIAkJRXhlY0luaXRSZXN1bHRUdXBsZVNs b3RUTCgmbXRzdGF0ZS0+cHMsICZUVFNPcHNWaXJ0dWFsKTsKQEAgLTQ3MjMsNyArNDc2OCw3IEBA IEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBp bnQgZWZsYWdzKQogCQkgKiBCdWlsZCBhIHByb2plY3Rpb24gZm9yIGVhY2ggcmVzdWx0IHJlbC4K IAkJICovCiAJCXJlc3VsdFJlbEluZm8gPSBtdHN0YXRlLT5yZXN1bHRSZWxJbmZvOwotCQlmb3Jl YWNoKGwsIG5vZGUtPnJldHVybmluZ0xpc3RzKQorCQlmb3JlYWNoKGwsIHJldHVybmluZ0xpc3Rz KQogCQl7CiAJCQlMaXN0CSAgICpybGlzdCA9IChMaXN0ICopIGxmaXJzdChsKTsKIApAQCAtNDgy NCw4ICs0ODY5LDEzIEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVT dGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQlFeGVjUm93TWFyayAqZXJtOwogCQlFeGVjQXV4 Um93TWFyayAqYWVybTsKIAotCQkvKiBpZ25vcmUgInBhcmVudCIgcm93bWFya3M7IHRoZXkgYXJl IGlycmVsZXZhbnQgYXQgcnVudGltZSAqLwotCQlpZiAocmMtPmlzUGFyZW50KQorCQkvKgorCQkg KiBJZ25vcmUgInBhcmVudCIgcm93bWFya3MsIGJlY2F1c2UgdGhleSBhcmUgaXJyZWxldmFudCBh dCBydW50aW1lLgorCQkgKiBBbHNvIGlnbm9yZSB0aGUgcm93bWFya3MgYmVsb25naW5nIHRvIGNo aWxkIHRhYmxlcyB0aGF0IGhhdmUgYmVlbgorCQkgKiBwcnVuZWQgaW4gRXhlY0RvSW5pdGlhbFBy dW5pbmcoKS4KKwkJICovCisJCWlmIChyYy0+aXNQYXJlbnQgfHwKKwkJCSFibXNfaXNfbWVtYmVy KHJjLT5ydGksIGVzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzKSkKIAkJCWNvbnRpbnVlOwogCiAJ CS8qIEZpbmQgRXhlY1Jvd01hcmsgYW5kIGJ1aWxkIEV4ZWNBdXhSb3dNYXJrICovCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3Nw aS5jCmluZGV4IGVjYjJlNGNjYWExLi4zMjg4Mzk2ZGVmMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivc3BpLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKQEAgLTcw LDcgKzcwLDggQEAgc3RhdGljIGludAlfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4s IGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogc3RhdGljIFBhcmFtTGlzdEluZm8g X1NQSV9jb252ZXJ0X3BhcmFtcyhpbnQgbmFyZ3MsIE9pZCAqYXJndHlwZXMsCiAJCQkJCQkJCQkJ IERhdHVtICpWYWx1ZXMsIGNvbnN0IGNoYXIgKk51bGxzKTsKIAotc3RhdGljIGludAlfU1BJX3Bx dWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBmaXJlX3RyaWdnZXJzLCB1aW50NjQgdGNv dW50KTsKK3N0YXRpYyBpbnQJX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIGJvb2wg ZmlyZV90cmlnZ2VycywgdWludDY0IHRjb3VudCwKKwkJCQkJCUNhY2hlZFBsYW5Tb3VyY2UgKnBs YW5zb3VyY2UsIGludCBxdWVyeV9pbmRleCk7CiAKIHN0YXRpYyB2b2lkIF9TUElfZXJyb3JfY2Fs bGJhY2sodm9pZCAqYXJnKTsKIApAQCAtMTY4NSw3ICsxNjg2LDggQEAgU1BJX2N1cnNvcl9vcGVu X2ludGVybmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwKIAkJCQkJICBxdWVy eV9zdHJpbmcsCiAJCQkJCSAgcGxhbnNvdXJjZS0+Y29tbWFuZFRhZywKIAkJCQkJICBzdG10X2xp c3QsCi0JCQkJCSAgY3BsYW4pOworCQkJCQkgIGNwbGFuLAorCQkJCQkgIHBsYW5zb3VyY2UpOwog CiAJLyoKIAkgKiBTZXQgdXAgb3B0aW9ucyBmb3IgcG9ydGFsLiAgRGVmYXVsdCBTQ1JPTEwgdHlw ZSBpcyBjaG9zZW4gdGhlIHNhbWUgd2F5CkBAIC0yNTAwLDYgKzI1MDIsNyBAQCBfU1BJX2V4ZWN1 dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25z LAogCQlDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlID0gKENhY2hlZFBsYW5Tb3VyY2UgKikg bGZpcnN0KGxjMSk7CiAJCUxpc3QJICAgKnN0bXRfbGlzdDsKIAkJTGlzdENlbGwgICAqbGMyOwor CQlpbnQJCQlxdWVyeV9pbmRleCA9IDA7CiAKIAkJc3BpY2FsbGJhY2thcmcucXVlcnkgPSBwbGFu c291cmNlLT5xdWVyeV9zdHJpbmc7CiAKQEAgLTI2OTAsMTQgKzI2OTMsMTYgQEAgX1NQSV9leGVj dXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9u cywKIAkJCQkJc25hcCA9IEludmFsaWRTbmFwc2hvdDsKIAogCQkJCXFkZXNjID0gQ3JlYXRlUXVl cnlEZXNjKHN0bXQsCisJCQkJCQkJCQkJY3BsYW4sCiAJCQkJCQkJCQkJcGxhbnNvdXJjZS0+cXVl cnlfc3RyaW5nLAogCQkJCQkJCQkJCXNuYXAsIGNyb3NzY2hlY2tfc25hcHNob3QsCiAJCQkJCQkJ CQkJZGVzdCwKIAkJCQkJCQkJCQlvcHRpb25zLT5wYXJhbXMsCiAJCQkJCQkJCQkJX1NQSV9jdXJy ZW50LT5xdWVyeUVudiwKIAkJCQkJCQkJCQkwKTsKLQkJCQlyZXMgPSBfU1BJX3BxdWVyeShxZGVz YywgZmlyZV90cmlnZ2VycywKLQkJCQkJCQkJICBjYW5TZXRUYWcgPyBvcHRpb25zLT50Y291bnQg OiAwKTsKKworCQkJCXJlcyA9IF9TUElfcHF1ZXJ5KHFkZXNjLCBmaXJlX3RyaWdnZXJzLCBjYW5T ZXRUYWcgPyBvcHRpb25zLT50Y291bnQgOiAwLAorCQkJCQkJCQkgIHBsYW5zb3VyY2UsIHF1ZXJ5 X2luZGV4KTsKIAkJCQlGcmVlUXVlcnlEZXNjKHFkZXNjKTsKIAkJCX0KIAkJCWVsc2UKQEAgLTI3 OTQsNiArMjc5OSw4IEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3Qg U1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCQkJbXlfcmVzID0gcmVzOwogCQkJCWdvdG8g ZmFpbDsKIAkJCX0KKworCQkJcXVlcnlfaW5kZXgrKzsKIAkJfQogCiAJCS8qIERvbmUgd2l0aCB0 aGlzIHBsYW4sIHNvIHJlbGVhc2UgcmVmY291bnQgKi8KQEAgLTI4NzEsNyArMjg3OCw4IEBAIF9T UElfY29udmVydF9wYXJhbXMoaW50IG5hcmdzLCBPaWQgKmFyZ3R5cGVzLAogfQogCiBzdGF0aWMg aW50Ci1fU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBmaXJlX3RyaWdnZXJz LCB1aW50NjQgdGNvdW50KQorX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIGJvb2wg ZmlyZV90cmlnZ2VycywgdWludDY0IHRjb3VudCwKKwkJCUNhY2hlZFBsYW5Tb3VyY2UgKnBsYW5z b3VyY2UsIGludCBxdWVyeV9pbmRleCkKIHsKIAlpbnQJCQlvcGVyYXRpb24gPSBxdWVyeURlc2Mt Pm9wZXJhdGlvbjsKIAlpbnQJCQllZmxhZ3M7CkBAIC0yOTI3LDcgKzI5MzUsMTYgQEAgX1NQSV9w cXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIGJvb2wgZmlyZV90cmlnZ2VycywgdWludDY0IHRj b3VudCkKIAllbHNlCiAJCWVmbGFncyA9IEVYRUNfRkxBR19TS0lQX1RSSUdHRVJTOwogCi0JRXhl Y3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CisJaWYgKHF1ZXJ5RGVzYy0+Y3BsYW4pCisJ eworCQlFeGVjdXRvclN0YXJ0Q2FjaGVkUGxhbihxdWVyeURlc2MsIGVmbGFncywgcGxhbnNvdXJj ZSwgcXVlcnlfaW5kZXgpOworCQlBc3NlcnQocXVlcnlEZXNjLT5wbGFuc3RhdGUpOworCX0KKwll bHNlCisJeworCQlpZiAoIUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpKQorCQkJZWxv ZyhFUlJPUiwgIkV4ZWN1dG9yU3RhcnQoKSBmYWlsZWQgdW5leHBlY3RlZGx5Iik7CisJfQogCiAJ RXhlY3V0b3JSdW4ocXVlcnlEZXNjLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgdGNvdW50KTsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCmluZGV4IDhhNDc0YTUwYmU3Li5lNWUwMmU4 NmIyNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisr KyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtNTU3LDYgKzU1Nyw4 IEBAIHN0YW5kYXJkX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpxdWVyeV9zdHJp bmcsIGludCBjdXJzb3JPcHRpb25zLAogCXJlc3VsdC0+cGxhblRyZWUgPSB0b3BfcGxhbjsKIAly ZXN1bHQtPnBhcnRQcnVuZUluZm9zID0gZ2xvYi0+cGFydFBydW5lSW5mb3M7CiAJcmVzdWx0LT5y dGFibGUgPSBnbG9iLT5maW5hbHJ0YWJsZTsKKwlyZXN1bHQtPnVucHJ1bmFibGVSZWxpZHMgPSBi bXNfZGlmZmVyZW5jZShnbG9iLT5hbGxSZWxpZHMsCisJCQkJCQkJCQkJCSAgZ2xvYi0+cHJ1bmFi bGVSZWxpZHMpOwogCXJlc3VsdC0+cGVybUluZm9zID0gZ2xvYi0+ZmluYWxydGVwZXJtaW5mb3M7 CiAJcmVzdWx0LT5yZXN1bHRSZWxhdGlvbnMgPSBnbG9iLT5yZXN1bHRSZWxhdGlvbnM7CiAJcmVz dWx0LT5hcHBlbmRSZWxhdGlvbnMgPSBnbG9iLT5hcHBlbmRSZWxhdGlvbnM7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9zZXRyZWZzLmMKaW5kZXggMDg2ODI0OWJlOTQuLjM5YTg1YzMwMDgzIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCkBAIC01NjQsNyArNTY0LDggQEAgYWRkX3J0 ZV90b19mbGF0X3J0YWJsZShQbGFubmVyR2xvYmFsICpnbG9iLCBMaXN0ICpydGVwZXJtaW5mb3Ms CiAKIAkvKgogCSAqIElmIGl0J3MgYSBwbGFpbiByZWxhdGlvbiBSVEUgKG9yIGEgc3VicXVlcnkg dGhhdCB3YXMgb25jZSBhIHZpZXcKLQkgKiByZWZlcmVuY2UpLCBhZGQgdGhlIHJlbGF0aW9uIE9J RCB0byByZWxhdGlvbk9pZHMuCisJICogcmVmZXJlbmNlKSwgYWRkIHRoZSByZWxhdGlvbiBPSUQg dG8gcmVsYXRpb25PaWRzLiAgQWxzbyBhZGQgaXRzIG5ldyBSVAorCSAqIGluZGV4IHRvIHRoZSBz ZXQgb2YgcmVsYXRpb25zIHRoYXQgbmVlZCB0byBiZSBsb2NrZWQgZm9yIGV4ZWN1dGlvbi4KIAkg KgogCSAqIFdlIGRvIHRoaXMgZXZlbiB0aG91Z2ggdGhlIFJURSBtaWdodCBiZSB1bnJlZmVyZW5j ZWQgaW4gdGhlIHBsYW4gdHJlZTsKIAkgKiB0aGlzIHdvdWxkIGNvcnJlc3BvbmQgdG8gY2FzZXMg c3VjaCBhcyB2aWV3cyB0aGF0IHdlcmUgZXhwYW5kZWQsIGNoaWxkCkBAIC01NzYsNyArNTc3LDEx IEBAIGFkZF9ydGVfdG9fZmxhdF9ydGFibGUoUGxhbm5lckdsb2JhbCAqZ2xvYiwgTGlzdCAqcnRl cGVybWluZm9zLAogCSAqLwogCWlmIChuZXdydGUtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OIHx8 CiAJCShuZXdydGUtPnJ0ZWtpbmQgPT0gUlRFX1NVQlFVRVJZICYmIE9pZElzVmFsaWQobmV3cnRl LT5yZWxpZCkpKQorCXsKIAkJZ2xvYi0+cmVsYXRpb25PaWRzID0gbGFwcGVuZF9vaWQoZ2xvYi0+ cmVsYXRpb25PaWRzLCBuZXdydGUtPnJlbGlkKTsKKwkJZ2xvYi0+YWxsUmVsaWRzID0gYm1zX2Fk ZF9tZW1iZXIoZ2xvYi0+YWxsUmVsaWRzLAorCQkJCQkJCQkJCSBsaXN0X2xlbmd0aChnbG9iLT5m aW5hbHJ0YWJsZSkpOworCX0KIAogCS8qCiAJICogQWRkIGEgY29weSBvZiB0aGUgUlRFUGVybWlz c2lvbkluZm8sIGlmIGFueSwgY29ycmVzcG9uZGluZyB0byB0aGlzIFJURQpAQCAtMTc0MCw2ICsx NzQ1LDExIEBAIHNldF9jdXN0b21zY2FuX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsCiAg KgogICogQWxzbyB1cGRhdGUgdGhlIFJUIGluZGV4ZXMgcHJlc2VudCBpbiBQYXJ0aXRpb25lZFJl bFBydW5lSW5mb3MgdG8gYWRkIHRoZQogICogb2Zmc2V0LgorICoKKyAqIEZpbmFsbHksIGlmIHRo ZXJlIGFyZSBpbml0aWFsIHBydW5pbmcgc3RlcHMsIGFkZCB0aGUgUlQgaW5kZXhlcyBvZiB0aGUK KyAqIGxlYWYgcGFydGl0aW9ucyB0byB0aGUgc2V0IG9mIHJlbGF0aW9ucyB0aGF0IGFyZSBwcnVu YWJsZSBhdCBleGVjdXRpb24KKyAqIHN0YXJ0dXAgdGltZS4gIFRoaXMgc2V0IGluZGljYXRlcyB3 aGljaCByZWxhdGlvbnMgc2hvdWxkIG5vdCBiZSBsb2NrZWQKKyAqIGJlZm9yZSBleGVjdXRvciBz dGFydHVwLCBhcyB0aGV5IG1heSBiZSBwcnVuZWQgZHVyaW5nIGluaXRpYWwgcHJ1bmluZy4KICAq Lwogc3RhdGljIGludAogcmVnaXN0ZXJfcGFydHBydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwg aW50IHBhcnRfcHJ1bmVfaW5kZXgsIGludCBydG9mZnNldCkKQEAgLTE3NjIsNiArMTc3Miw3IEBA IHJlZ2lzdGVyX3BhcnRwcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIGludCBwYXJ0X3BydW5l X2luZGV4LCBpbnQgcnRvZmZzZXQpCiAJCWZvcmVhY2gobDIsIHBydW5lX2luZm9zKQogCQl7CiAJ CQlQYXJ0aXRpb25lZFJlbFBydW5lSW5mbyAqcHJlbGluZm8gPSBsZmlyc3QobDIpOworCQkJaW50 CQkJaTsKIAogCQkJcHJlbGluZm8tPnJ0aW5kZXggKz0gcnRvZmZzZXQ7CiAJCQlwcmVsaW5mby0+ aW5pdGlhbF9wcnVuaW5nX3N0ZXBzID0KQEAgLTE3NzAsNiArMTc4MSwyMiBAQCByZWdpc3Rlcl9w YXJ0cHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBpbnQgcGFydF9wcnVuZV9pbmRleCwgaW50 IHJ0b2Zmc2V0KQogCQkJcHJlbGluZm8tPmV4ZWNfcHJ1bmluZ19zdGVwcyA9CiAJCQkJZml4X3Nj YW5fbGlzdChyb290LCBwcmVsaW5mby0+ZXhlY19wcnVuaW5nX3N0ZXBzLAogCQkJCQkJCSAgcnRv ZmZzZXQsIDEpOworCisJCQlmb3IgKGkgPSAwOyBpIDwgcHJlbGluZm8tPm5wYXJ0czsgaSsrKQor CQkJeworCQkJCS8qCisJCQkJICogTm9uLWxlYWYgcGFydGl0aW9ucyBhbmQgcGFydGl0aW9ucyB0 aGF0IGRvIG5vdCBoYXZlIGEKKwkJCQkgKiBzdWJwbGFuIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhp cyBtYXAgYXMgbWVudGlvbmVkIGluCisJCQkJICogbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWlu Zm8oKS4KKwkJCQkgKi8KKwkJCQlpZiAocHJlbGluZm8tPmxlYWZwYXJ0X3J0aV9tYXBbaV0pCisJ CQkJeworCQkJCQlwcmVsaW5mby0+bGVhZnBhcnRfcnRpX21hcFtpXSArPSBydG9mZnNldDsKKwkJ CQkJaWYgKHByZWxpbmZvLT5pbml0aWFsX3BydW5pbmdfc3RlcHMpCisJCQkJCQlnbG9iLT5wcnVu YWJsZVJlbGlkcyA9IGJtc19hZGRfbWVtYmVyKGdsb2ItPnBydW5hYmxlUmVsaWRzLAorCQkJCQkJ CQkJCQkJCQkJICBwcmVsaW5mby0+bGVhZnBhcnRfcnRpX21hcFtpXSk7CisJCQkJfQorCQkJfQog CQl9CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5l LmMgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMKaW5kZXggNDY5M2VlZjBj NTguLjE1Njk5NTA2NWNhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFy dHBydW5lLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCkBAIC02 NDUsNiArNjQ1LDcgQEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8g KnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJaW50CQkgICAqc3VicGxhbl9tYXA7CiAJ CWludAkJICAgKnN1YnBhcnRfbWFwOwogCQlPaWQJCSAgICpyZWxpZF9tYXA7CisJCWludAkJICAg KmxlYWZwYXJ0X3J0aV9tYXA7CiAKIAkJLyoKIAkJICogQ29uc3RydWN0IHRoZSBzdWJwbGFuIGFu ZCBzdWJwYXJ0IG1hcHMgZm9yIHRoaXMgcGFydGl0aW9uaW5nIGxldmVsLgpAQCAtNjU3LDYgKzY1 OCw3IEBAIG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBS ZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCXN1YnBhcnRfbWFwID0gKGludCAqKSBwYWxsb2MobnBh cnRzICogc2l6ZW9mKGludCkpOwogCQltZW1zZXQoc3VicGFydF9tYXAsIC0xLCBucGFydHMgKiBz aXplb2YoaW50KSk7CiAJCXJlbGlkX21hcCA9IChPaWQgKikgcGFsbG9jMChucGFydHMgKiBzaXpl b2YoT2lkKSk7CisJCWxlYWZwYXJ0X3J0aV9tYXAgPSAoaW50ICopIHBhbGxvYzAobnBhcnRzICog c2l6ZW9mKGludCkpOwogCQlwcmVzZW50X3BhcnRzID0gTlVMTDsKIAogCQlpID0gLTE7CkBAIC02 NzEsOSArNjczLDI4IEBAIG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZv ICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCQlzdWJwbGFuX21hcFtpXSA9IHN1YnBs YW5pZHggPSByZWxpZF9zdWJwbGFuX21hcFtwYXJ0cmVsLT5yZWxpZF0gLSAxOwogCQkJc3VicGFy dF9tYXBbaV0gPSBzdWJwYXJ0aWR4ID0gcmVsaWRfc3VicGFydF9tYXBbcGFydHJlbC0+cmVsaWRd IC0gMTsKIAkJCXJlbGlkX21hcFtpXSA9IHBsYW5uZXJfcnRfZmV0Y2gocGFydHJlbC0+cmVsaWQs IHJvb3QpLT5yZWxpZDsKKworCQkJLyoKKwkJCSAqIFRyYWNrIHRoZSBSVCBpbmRleGVzIG9mICJs ZWFmIiBwYXJ0aXRpb25zIHNvIHRoZXkgY2FuIGJlCisJCQkgKiBpbmNsdWRlZCBpbiB0aGUgUGxh bm5lckdsb2JhbC5wcnVuYWJsZVJlbGlkcyBzZXQsIGluZGljYXRpbmcKKwkJCSAqIHJlbGF0aW9u cyB3aG9zZSBsb2NraW5nIGlzIGRlZmVycmVkIHVudGlsIGV4ZWN1dG9yIHN0YXJ0dXAuCisJCQkg KgorCQkJICogV2UgZG9u4oCZdCBkZWZlciBsb2NraW5nIG9mIHN1Yi1wYXJ0aXRpb25lZCBwYXJ0 aXRpb25zIGJlY2F1c2UKKwkJCSAqIHNldHRpbmcgdXAgUGFydGl0aW9uZWRSZWxQcnVuaW5nRGF0 YSBjdXJyZW50bHkgb2NjdXJzIGJlZm9yZQorCQkJICogaW5pdGlhbCBwcnVuaW5nLCBzbyB0aGUg cmVsYXRpb24gbXVzdCBiZSBsb2NrZWQgYXQgdGhhdCBzdGFnZSwKKwkJCSAqIGV2ZW4gaWYgaXQg bWF5IGJlIHBydW5lZC4KKwkJCSAqCisJCQkgKiBPbmx5IGxlYWYgcGFydGl0aW9ucyB3aXRoIGEg dmFsaWQgc3VicGxhbiB0aGF0IGFyZSBwcnVuYWJsZQorCQkJICogdXNpbmcgaW5pdGlhbCBwcnVu aW5nIGFyZSBhZGRlZCB0byBwcnVuYWJsZVJlbGlkcy4gU28KKwkJCSAqIHBhcnRpdGlvbnMgd2l0 aG91dCBhIHN1YnBsYW4gZHVlIHRvIGNvbnN0cmFpbnQgZXhjbHVzaW9uIHdpbGwKKwkJCSAqIHJl bWFpbiBpbiBQbGFubmVkU3RtdC51bnBydW5hYmxlUmVsaWRzIGFuZCB0aHVzIHRoZWlyIGxvY2tp bmcKKwkJCSAqIHdpbGwgbm90IGJlIGRlZmVycmVkIGV2ZW4gaWYgdGhleSBtYXkgdWx0aW1hdGVs eSBiZSBwcnVuZWQgZHVlCisJCQkgKiB0byBpbml0aWFsIHBydW5pbmcuCisJCQkgKi8KIAkJCWlm IChzdWJwbGFuaWR4ID49IDApCiAJCQl7CiAJCQkJcHJlc2VudF9wYXJ0cyA9IGJtc19hZGRfbWVt YmVyKHByZXNlbnRfcGFydHMsIGkpOworCQkJCWxlYWZwYXJ0X3J0aV9tYXBbaV0gPSAoaW50KSBw YXJ0cmVsLT5yZWxpZDsKIAogCQkJCS8qIFJlY29yZCBmaW5kaW5nIHRoaXMgc3VicGxhbiAgKi8K IAkJCQlzdWJwbGFuc2ZvdW5kID0gYm1zX2FkZF9tZW1iZXIoc3VicGxhbnNmb3VuZCwgc3VicGxh bmlkeCk7CkBAIC02OTUsNiArNzE2LDcgQEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8o UGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJcGluZm8tPnN1YnBs YW5fbWFwID0gc3VicGxhbl9tYXA7CiAJCXBpbmZvLT5zdWJwYXJ0X21hcCA9IHN1YnBhcnRfbWFw OwogCQlwaW5mby0+cmVsaWRfbWFwID0gcmVsaWRfbWFwOworCQlwaW5mby0+bGVhZnBhcnRfcnRp X21hcCA9IGxlYWZwYXJ0X3J0aV9tYXA7CiAJfQogCiAJcGZyZWUocmVsaWRfc3VicGFydF9tYXAp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggMzM0YmYzZTdh ZmYuLmRhY2FlMDhkZDk3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2Vy LmMKQEAgLTY2OCw3ICs2NjgsOCBAQCBjcmVhdGVfZWRhdGFfZm9yX3JlbGF0aW9uKExvZ2ljYWxS ZXBSZWxNYXBFbnRyeSAqcmVsKQogCiAJYWRkUlRFUGVybWlzc2lvbkluZm8oJnBlcm1pbmZvcywg cnRlKTsKIAotCUV4ZWNJbml0UmFuZ2VUYWJsZShlc3RhdGUsIGxpc3RfbWFrZTEocnRlKSwgcGVy bWluZm9zKTsKKwlFeGVjSW5pdFJhbmdlVGFibGUoZXN0YXRlLCBsaXN0X21ha2UxKHJ0ZSksIHBl cm1pbmZvcywKKwkJCQkJICAgYm1zX21ha2Vfc2luZ2xldG9uKDEpKTsKIAogCWVkYXRhLT50YXJn ZXRSZWxJbmZvID0gcmVzdWx0UmVsSW5mbyA9IG1ha2VOb2RlKFJlc3VsdFJlbEluZm8pOwogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwppbmRleCAyYjc0OTli MzRiOS4uNzY3MTc2YzI2ZDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bn b3V0cHV0L3Bnb3V0cHV0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQv cGdvdXRwdXQuYwpAQCAtODE1LDcgKzgxNSw4IEBAIGNyZWF0ZV9lc3RhdGVfZm9yX3JlbGF0aW9u KFJlbGF0aW9uIHJlbCkKIAogCWFkZFJURVBlcm1pc3Npb25JbmZvKCZwZXJtaW5mb3MsIHJ0ZSk7 CiAKLQlFeGVjSW5pdFJhbmdlVGFibGUoZXN0YXRlLCBsaXN0X21ha2UxKHJ0ZSksIHBlcm1pbmZv cyk7CisJRXhlY0luaXRSYW5nZVRhYmxlKGVzdGF0ZSwgbGlzdF9tYWtlMShydGUpLCBwZXJtaW5m b3MsCisJCQkJCSAgIGJtc19tYWtlX3NpbmdsZXRvbigxKSk7CiAKIAllc3RhdGUtPmVzX291dHB1 dF9jaWQgPSBHZXRDdXJyZW50Q29tbWFuZElkKGZhbHNlKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4 IDU2NTUzNDhhMmUyLi5mNjBmMjc4NWJjMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9w b3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpAQCAtMTIyNCw2ICsx MjI0LDcgQEAgZXhlY19zaW1wbGVfcXVlcnkoY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nKQogCQkJ CQkJICBxdWVyeV9zdHJpbmcsCiAJCQkJCQkgIGNvbW1hbmRUYWcsCiAJCQkJCQkgIHBsYW50cmVl X2xpc3QsCisJCQkJCQkgIE5VTEwsCiAJCQkJCQkgIE5VTEwpOwogCiAJCS8qCkBAIC0yMDI1LDcg KzIwMjYsOCBAQCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZvIGlucHV0X21lc3NhZ2UpCiAJ CQkJCSAgcXVlcnlfc3RyaW5nLAogCQkJCQkgIHBzcmMtPmNvbW1hbmRUYWcsCiAJCQkJCSAgY3Bs YW4tPnN0bXRfbGlzdCwKLQkJCQkJICBjcGxhbik7CisJCQkJCSAgY3BsYW4sCisJCQkJCSAgcHNy Yyk7CiAKIAkvKiBEb25lIHdpdGggdGhlIHNuYXBzaG90IHVzZWQgZm9yIHBhcmFtZXRlciBJL08g YW5kIHBhcnNpbmcvcGxhbm5pbmcgKi8KIAlpZiAoc25hcHNob3Rfc2V0KQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKaW5k ZXggNmYyMjQ5NjMwNWEuLmRlYTI0NDUzYTZjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29w L3BxdWVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKQEAgLTE5LDYgKzE5LDcg QEAKIAogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvcHJlcGFy ZS5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNkZXNjLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Iv dHN0b3JlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ190 cmFjZS5oIgpAQCAtMzYsNiArMzcsOSBAQCBQb3J0YWwJCUFjdGl2ZVBvcnRhbCA9IE5VTEw7CiAK IAogc3RhdGljIHZvaWQgUHJvY2Vzc1F1ZXJ5KFBsYW5uZWRTdG10ICpwbGFuLAorCQkJCQkJIENh Y2hlZFBsYW4gKmNwbGFuLAorCQkJCQkJIENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCisJ CQkJCQkgaW50IHF1ZXJ5X2luZGV4LAogCQkJCQkJIGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJ CQkJCQkgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJCQkgUXVlcnlFbnZpcm9ubWVudCAqcXVl cnlFbnYsCkBAIC02NSw2ICs2OSw3IEBAIHN0YXRpYyB2b2lkIERvUG9ydGFsUmV3aW5kKFBvcnRh bCBwb3J0YWwpOwogICovCiBRdWVyeURlc2MgKgogQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10 ICpwbGFubmVkc3RtdCwKKwkJCQlDYWNoZWRQbGFuICpjcGxhbiwKIAkJCQljb25zdCBjaGFyICpz b3VyY2VUZXh0LAogCQkJCVNuYXBzaG90IHNuYXBzaG90LAogCQkJCVNuYXBzaG90IGNyb3NzY2hl Y2tfc25hcHNob3QsCkBAIC03Nyw2ICs4Miw3IEBAIENyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3Rt dCAqcGxhbm5lZHN0bXQsCiAKIAlxZC0+b3BlcmF0aW9uID0gcGxhbm5lZHN0bXQtPmNvbW1hbmRU eXBlOwkvKiBvcGVyYXRpb24gKi8KIAlxZC0+cGxhbm5lZHN0bXQgPSBwbGFubmVkc3RtdDsJLyog cGxhbiAqLworCXFkLT5jcGxhbiA9IGNwbGFuOwkJCS8qIENhY2hlZFBsYW4gc3VwcGx5aW5nIHRo ZSBwbGFubmVkc3RtdCAqLwogCXFkLT5zb3VyY2VUZXh0ID0gc291cmNlVGV4dDsJLyogcXVlcnkg dGV4dCAqLwogCXFkLT5zbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3QpOwkvKiBz bmFwc2hvdCAqLwogCS8qIFJJIGNoZWNrIHNuYXBzaG90ICovCkBAIC0xMjIsNiArMTI4LDkgQEAg RnJlZVF1ZXJ5RGVzYyhRdWVyeURlc2MgKnFkZXNjKQogICoJCVBPUlRBTF9PTkVfUkVUVVJOSU5H LCBvciBQT1JUQUxfT05FX01PRF9XSVRIIHBvcnRhbAogICoKICAqCXBsYW46IHRoZSBwbGFuIHRy ZWUgZm9yIHRoZSBxdWVyeQorICoJY3BsYW46IENhY2hlZFBsYW4gc3VwcGx5aW5nIHRoZSBwbGFu CisgKglwbGFuc291cmNlOiBDYWNoZWRQbGFuU291cmNlIHN1cHBseWluZyB0aGUgY3BsYW4KKyAq CXF1ZXJ5X2luZGV4OiBpbmRleCBvZiB0aGUgcXVlcnkgaW4gcGxhbnNvdXJjZS0+cXVlcnlfbGlz dAogICoJc291cmNlVGV4dDogdGhlIHNvdXJjZSB0ZXh0IG9mIHRoZSBxdWVyeQogICoJcGFyYW1z OiBhbnkgcGFyYW1ldGVycyBuZWVkZWQKICAqCWRlc3Q6IHdoZXJlIHRvIHNlbmQgcmVzdWx0cwpA QCAtMTM0LDYgKzE0Myw5IEBAIEZyZWVRdWVyeURlc2MoUXVlcnlEZXNjICpxZGVzYykKICAqLwog c3RhdGljIHZvaWQKIFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwKKwkJCSBDYWNoZWRQ bGFuICpjcGxhbiwKKwkJCSBDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAorCQkJIGludCBx dWVyeV9pbmRleCwKIAkJCSBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJIFBhcmFtTGlzdElu Zm8gcGFyYW1zLAogCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LApAQCAtMTQ1LDE0ICsx NTcsMjMgQEAgUHJvY2Vzc1F1ZXJ5KFBsYW5uZWRTdG10ICpwbGFuLAogCS8qCiAJICogQ3JlYXRl IHRoZSBRdWVyeURlc2Mgb2JqZWN0CiAJICovCi0JcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNj KHBsYW4sIHNvdXJjZVRleHQsCisJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIGNw bGFuLCBzb3VyY2VUZXh0LAogCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25h cHNob3QsCiAJCQkJCQkJCWRlc3QsIHBhcmFtcywgcXVlcnlFbnYsIDApOwogCiAJLyoKLQkgKiBD YWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uCisJICog UHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uCiAJICovCi0JRXhlY3V0b3JTdGFydChxdWVy eURlc2MsIDApOworCWlmIChxdWVyeURlc2MtPmNwbGFuKQorCXsKKwkJRXhlY3V0b3JTdGFydENh Y2hlZFBsYW4ocXVlcnlEZXNjLCAwLCBwbGFuc291cmNlLCBxdWVyeV9pbmRleCk7CisJCUFzc2Vy dChxdWVyeURlc2MtPnBsYW5zdGF0ZSk7CisJfQorCWVsc2UKKwl7CisJCWlmICghRXhlY3V0b3JT dGFydChxdWVyeURlc2MsIDApKQorCQkJZWxvZyhFUlJPUiwgIkV4ZWN1dG9yU3RhcnQoKSBmYWls ZWQgdW5leHBlY3RlZGx5Iik7CisJfQogCiAJLyoKIAkgKiBSdW4gdGhlIHBsYW4gdG8gY29tcGxl dGlvbi4KQEAgLTQ5Myw2ICs1MTQsNyBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJh bUxpc3RJbmZvIHBhcmFtcywKIAkJCQkgKiB0aGUgZGVzdGluYXRpb24gdG8gRGVzdE5vbmUuCiAJ CQkJICovCiAJCQkJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKGxpbml0aWFsX25vZGUoUGxh bm5lZFN0bXQsIHBvcnRhbC0+c3RtdHMpLAorCQkJCQkJCQkJCQlwb3J0YWwtPmNwbGFuLAogCQkJ CQkJCQkJCQlwb3J0YWwtPnNvdXJjZVRleHQsCiAJCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90 KCksCiAJCQkJCQkJCQkJCUludmFsaWRTbmFwc2hvdCwKQEAgLTUxMiw5ICs1MzQsMTkgQEAgUG9y dGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJCW15ZWZs YWdzID0gZWZsYWdzOwogCiAJCQkJLyoKLQkJCQkgKiBDYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJl cGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uCisJCQkJICogUHJlcGFyZSB0aGUgcGxhbiBmb3Ig ZXhlY3V0aW9uLgogCQkJCSAqLwotCQkJCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBteWVmbGFn cyk7CisJCQkJaWYgKHBvcnRhbC0+Y3BsYW4pCisJCQkJeworCQkJCQlFeGVjdXRvclN0YXJ0Q2Fj aGVkUGxhbihxdWVyeURlc2MsIG15ZWZsYWdzLAorCQkJCQkJCQkJCQlwb3J0YWwtPnBsYW5zb3Vy Y2UsIDApOworCQkJCQlBc3NlcnQocXVlcnlEZXNjLT5wbGFuc3RhdGUpOworCQkJCX0KKwkJCQll bHNlCisJCQkJeworCQkJCQlpZiAoIUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBteWVmbGFncykp CisJCQkJCQllbG9nKEVSUk9SLCAiRXhlY3V0b3JTdGFydCgpIGZhaWxlZCB1bmV4cGVjdGVkbHki KTsKKwkJCQl9CiAKIAkJCQkvKgogCQkJCSAqIFRoaXMgdGVsbHMgUG9ydGFsQ2xlYW51cCB0byBz aHV0IGRvd24gdGhlIGV4ZWN1dG9yCkBAIC0xMTg4LDYgKzEyMjAsNyBAQCBQb3J0YWxSdW5NdWx0 aShQb3J0YWwgcG9ydGFsLAogewogCWJvb2wJCWFjdGl2ZV9zbmFwc2hvdF9zZXQgPSBmYWxzZTsK IAlMaXN0Q2VsbCAgICpzdG10bGlzdF9pdGVtOworCWludAkJCXF1ZXJ5X2luZGV4ID0gMDsKIAog CS8qCiAJICogSWYgdGhlIGRlc3RpbmF0aW9uIGlzIERlc3RSZW1vdGVFeGVjdXRlLCBjaGFuZ2Ug dG8gRGVzdE5vbmUuICBUaGUKQEAgLTEyNjksNiArMTMwMiw5IEBAIFBvcnRhbFJ1bk11bHRpKFBv cnRhbCBwb3J0YWwsCiAJCQl7CiAJCQkJLyogc3RhdGVtZW50IGNhbiBzZXQgdGFnIHN0cmluZyAq LwogCQkJCVByb2Nlc3NRdWVyeShwc3RtdCwKKwkJCQkJCQkgcG9ydGFsLT5jcGxhbiwKKwkJCQkJ CQkgcG9ydGFsLT5wbGFuc291cmNlLAorCQkJCQkJCSBxdWVyeV9pbmRleCwKIAkJCQkJCQkgcG9y dGFsLT5zb3VyY2VUZXh0LAogCQkJCQkJCSBwb3J0YWwtPnBvcnRhbFBhcmFtcywKIAkJCQkJCQkg cG9ydGFsLT5xdWVyeUVudiwKQEAgLTEyNzgsNiArMTMxNCw5IEBAIFBvcnRhbFJ1bk11bHRpKFBv cnRhbCBwb3J0YWwsCiAJCQl7CiAJCQkJLyogc3RtdCBhZGRlZCBieSByZXdyaXRlIGNhbm5vdCBz ZXQgdGFnICovCiAJCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAorCQkJCQkJCSBwb3J0YWwtPmNwbGFu LAorCQkJCQkJCSBwb3J0YWwtPnBsYW5zb3VyY2UsCisJCQkJCQkJIHF1ZXJ5X2luZGV4LAogCQkJ CQkJCSBwb3J0YWwtPnNvdXJjZVRleHQsCiAJCQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFyYW1zLAog CQkJCQkJCSBwb3J0YWwtPnF1ZXJ5RW52LApAQCAtMTM0Miw2ICsxMzgxLDggQEAgUG9ydGFsUnVu TXVsdGkoUG9ydGFsIHBvcnRhbCwKIAkJICovCiAJCWlmIChsbmV4dChwb3J0YWwtPnN0bXRzLCBz dG10bGlzdF9pdGVtKSAhPSBOVUxMKQogCQkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKwor CQlxdWVyeV9pbmRleCsrOwogCX0KIAogCS8qIFBvcCB0aGUgc25hcHNob3QgaWYgd2UgcHVzaGVk IG9uZS4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKaW5kZXggNTVkYjhmNTM3MDUu LjcxODM5ZGNhMTA4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2Fj aGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwpAQCAtMTAxLDcg KzEwMSw4IEBAIHN0YXRpYyBkbGlzdF9oZWFkIGNhY2hlZF9leHByZXNzaW9uX2xpc3QgPSBETElT VF9TVEFUSUNfSU5JVChjYWNoZWRfZXhwcmVzc2lvbl9sCiAKIHN0YXRpYyB2b2lkIFJlbGVhc2VH ZW5lcmljUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKTsKIHN0YXRpYyBMaXN0ICpS ZXZhbGlkYXRlQ2FjaGVkUXVlcnkoQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKLQkJCQkJ CQkJICAgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOworCQkJCQkJCQkgICBRdWVyeUVudmly b25tZW50ICpxdWVyeUVudiwKKwkJCQkJCQkJICAgYm9vbCByZWxlYXNlX2dlbmVyaWMpOwogc3Rh dGljIGJvb2wgQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpOwog c3RhdGljIENhY2hlZFBsYW4gKkJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFu c291cmNlLCBMaXN0ICpxbGlzdCwKIAkJCQkJCQkJICAgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFt cywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOwpAQCAtNTc4LDEwICs1NzksMTcgQEAgUmVs ZWFzZUdlbmVyaWNQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpCiAgKiBUaGUgcmVz dWx0IHZhbHVlIGlzIHRoZSB0cmFuc2llbnQgYW5hbHl6ZWQtYW5kLXJld3JpdHRlbiBxdWVyeSB0 cmVlIGlmIHdlCiAgKiBoYWQgdG8gZG8gcmUtYW5hbHlzaXMsIGFuZCBOSUwgb3RoZXJ3aXNlLiAg KFRoaXMgaXMgcmV0dXJuZWQganVzdCB0byBzYXZlCiAgKiBhIHRyZWUgY29weWluZyBzdGVwIGlu IGEgc3Vic2VxdWVudCBCdWlsZENhY2hlZFBsYW4gY2FsbC4pCisgKgorICogVGhpcyBhbHNvIHJl bGVhc2VzIGFuZCBkcm9wcyB0aGUgZ2VuZXJpYyBwbGFuIChwbGFuc291cmNlLT5ncGxhbiksIGlm IGFueSwKKyAqIGFzIG1vc3QgY2FsbGVycyB3aWxsIHR5cGljYWxseSBidWlsZCBhIG5ldyBDYWNo ZWRQbGFuIGZvciB0aGUgcGxhbnNvdXJjZQorICogcmlnaHQgYWZ0ZXIgdGhpcy4gSG93ZXZlciwg d2hlbiBjYWxsZWQgZnJvbSBVcGRhdGVDYWNoZWRQbGFuKCksIHRoZQorICogZnVuY3Rpb24gZG9l cyBub3QgcmVsZWFzZSB0aGUgZ2VuZXJpYyBwbGFuLCBhcyBVcGRhdGVDYWNoZWRQbGFuKCkgdXBk YXRlcworICogYW4gZXhpc3RpbmcgQ2FjaGVkUGxhbiBpbiBwbGFjZS4KICAqLwogc3RhdGljIExp c3QgKgogUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2Us Ci0JCQkJCSAgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpCisJCQkJCSAgUXVlcnlFbnZpcm9u bWVudCAqcXVlcnlFbnYsCisJCQkJCSAgYm9vbCByZWxlYXNlX2dlbmVyaWMpCiB7CiAJYm9vbAkJ c25hcHNob3Rfc2V0OwogCVJhd1N0bXQgICAgKnJhd3RyZWU7CkBAIC02NzgsOCArNjg2LDkgQEAg UmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCU1l bW9yeUNvbnRleHREZWxldGUocWN4dCk7CiAJfQogCi0JLyogRHJvcCB0aGUgZ2VuZXJpYyBwbGFu IHJlZmVyZW5jZSBpZiBhbnkgKi8KLQlSZWxlYXNlR2VuZXJpY1BsYW4ocGxhbnNvdXJjZSk7CisJ LyogRHJvcCB0aGUgZ2VuZXJpYyBwbGFuIHJlZmVyZW5jZSwgaWYgYW55LCBhbmQgaWYgcmVxdWVz dGVkICovCisJaWYgKHJlbGVhc2VfZ2VuZXJpYykKKwkJUmVsZWFzZUdlbmVyaWNQbGFuKHBsYW5z b3VyY2UpOwogCiAJLyoKIAkgKiBOb3cgcmUtZG8gcGFyc2UgYW5hbHlzaXMgYW5kIHJld3JpdGUu ICBUaGlzIG5vdCBpbmNpZGVudGFsbHkgYWNxdWlyZXMKQEAgLTgxNSw4ICs4MjQsMTEgQEAgUmV2 YWxpZGF0ZUNhY2hlZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAgKiBDYWxs ZXIgbXVzdCBoYXZlIGFscmVhZHkgY2FsbGVkIFJldmFsaWRhdGVDYWNoZWRRdWVyeSB0byB2ZXJp ZnkgdGhhdCB0aGUKICAqIHF1ZXJ5dHJlZSBpcyB1cCB0byBkYXRlLgogICoKLSAqIE9uIGEgInRy dWUiIHJldHVybiwgd2UgaGF2ZSBhY3F1aXJlZCB0aGUgbG9ja3MgbmVlZGVkIHRvIHJ1biB0aGUg cGxhbi4KLSAqIChXZSBtdXN0IGRvIHRoaXMgZm9yIHRoZSAidHJ1ZSIgcmVzdWx0IHRvIGJlIHJh Y2UtY29uZGl0aW9uLWZyZWUuKQorICogT24gYSAidHJ1ZSIgcmV0dXJuLCB3ZSBoYXZlIGFjcXVp cmVkIGxvY2tzIG9uIHRoZSAidW5wcnVuYWJsZVJlbGlkcyIgc2V0CisgKiBmb3IgYWxsIHBsYW5z IGluIHBsYW5zb3VyY2UtPnN0bXRfbGlzdC4gSG93ZXZlciwgdGhlIHBsYW5zIGFyZSBub3QgZnVs bHkKKyAqIHJhY2UtY29uZGl0aW9uLWZyZWUgdW50aWwgdGhlIGV4ZWN1dG9yIGFjcXVpcmVzIGxv Y2tzIG9uIHRoZSBwcnVuYWJsZQorICogcmVsYXRpb25zIHRoYXQgc3Vydml2ZSBpbml0aWFsIHJ1 bnRpbWUgcHJ1bmluZyBkdXJpbmcgZXhlY3V0b3IKKyAqIGluaXRpYWxpemF0aW9uLgogICovCiBz dGF0aWMgYm9vbAogQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2Up CkBAIC04NzAsNyArODgyLDExIEBAIENoZWNrQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpw bGFuc291cmNlKQogCQkgKi8KIAkJaWYgKHBsYW4tPmlzX3ZhbGlkKQogCQl7Ci0JCQkvKiBTdWNj ZXNzZnVsbHkgcmV2YWxpZGF0ZWQgYW5kIGxvY2tlZCB0aGUgcXVlcnkuICovCisJCQkvKgorCQkJ ICogU3VjY2Vzc2Z1bGx5IHJldmFsaWRhdGVkIGFuZCBsb2NrZWQgdGhlIHF1ZXJ5LiAgU2V0IGlz X3JldXNlZAorCQkJICogdG8gdHJ1ZSBzbyB0aGF0IENhY2hlZFBsYW5SZXF1aXJlc0xvY2tpbmco KSByZXR1cm5zIHRydWUuCisJCQkgKi8KKwkJCXBsYW4tPmlzX3JldXNlZCA9IHRydWU7CiAJCQly ZXR1cm4gdHJ1ZTsKIAkJfQogCkBAIC04OTUsMTIgKzkxMSwxNCBAQCBDaGVja0NhY2hlZFBsYW4o Q2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKICAqIFRvIGJ1aWxkIGEgZ2VuZXJpYywgcGFy YW1ldGVyLXZhbHVlLWluZGVwZW5kZW50IHBsYW4sIHBhc3MgTlVMTCBmb3IKICAqIGJvdW5kUGFy YW1zLiAgVG8gYnVpbGQgYSBjdXN0b20gcGxhbiwgcGFzcyB0aGUgYWN0dWFsIHBhcmFtZXRlciB2 YWx1ZXMgdmlhCiAgKiBib3VuZFBhcmFtcy4gIEZvciBiZXN0IGVmZmVjdCwgdGhlIFBBUkFNX0ZM QUdfQ09OU1QgZmxhZyBzaG91bGQgYmUgc2V0IG9uCi0gKiBlYWNoIHBhcmFtZXRlciB2YWx1ZTsg b3RoZXJ3aXNlIHRoZSBwbGFubmVyIHdpbGwgdHJlYXQgdGhlIHZhbHVlIGFzIGEKLSAqIGhpbnQg cmF0aGVyIHRoYW4gYSBoYXJkIGNvbnN0YW50LgorICogZWFjaCBwYXJhbWV0ZXIgdmFsdWU7IG90 aGVyd2lzZSB0aGUgcGxhbm5lciB3aWxsIHRyZWF0IHRoZSB2YWx1ZSBhcyBhIGhpbnQKKyAqIHJh dGhlciB0aGFuIGEgaGFyZCBjb25zdGFudC4KICAqCiAgKiBQbGFubmluZyB3b3JrIGlzIGRvbmUg aW4gdGhlIGNhbGxlcidzIG1lbW9yeSBjb250ZXh0LiAgVGhlIGZpbmlzaGVkIHBsYW4KICAqIGlz IGluIGEgY2hpbGQgbWVtb3J5IGNvbnRleHQsIHdoaWNoIHR5cGljYWxseSBzaG91bGQgZ2V0IHJl cGFyZW50ZWQKICAqICh1bmxlc3MgdGhpcyBpcyBhIG9uZS1zaG90IHBsYW4sIGluIHdoaWNoIGNh c2Ugd2UgZG9uJ3QgY29weSB0aGUgcGxhbikuCisgKgorICogTm90ZTogV2hlbiBjaGFuZ2luZyB0 aGlzLCB5b3Ugc2hvdWxkIGFsc28gbG9vayBhdCBVcGRhdGVDYWNoZWRQbGFuKCkuCiAgKi8KIHN0 YXRpYyBDYWNoZWRQbGFuICoKIEJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFu c291cmNlLCBMaXN0ICpxbGlzdCwKQEAgLTkxMSw2ICs5MjksNyBAQCBCdWlsZENhY2hlZFBsYW4o Q2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgTGlzdCAqcWxpc3QsCiAJYm9vbAkJc25hcHNo b3Rfc2V0OwogCWJvb2wJCWlzX3RyYW5zaWVudDsKIAlNZW1vcnlDb250ZXh0IHBsYW5fY29udGV4 dDsKKwlNZW1vcnlDb250ZXh0IHN0bXRfY29udGV4dCA9IE5VTEw7CiAJTWVtb3J5Q29udGV4dCBv bGRjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKIAlMaXN0Q2VsbCAgICpsYzsKIApAQCAtOTI4 LDcgKzk0Nyw3IEBAIEJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNl LCBMaXN0ICpxbGlzdCwKIAkgKiBsZXQncyB0cmVhdCBpdCBhcyByZWFsIGFuZCByZWRvIHRoZSBS ZXZhbGlkYXRlQ2FjaGVkUXVlcnkgY2FsbC4KIAkgKi8KIAlpZiAoIXBsYW5zb3VyY2UtPmlzX3Zh bGlkKQotCQlxbGlzdCA9IFJldmFsaWRhdGVDYWNoZWRRdWVyeShwbGFuc291cmNlLCBxdWVyeUVu dik7CisJCXFsaXN0ID0gUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5KHBsYW5zb3VyY2UsIHF1ZXJ5RW52 LCB0cnVlKTsKIAogCS8qCiAJICogSWYgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlIGEgY29weSBvZiB0 aGUgcXVlcnl0cmVlIGxpc3QgdGhhdCBjYW4gYmUKQEAgLTk2NywxMCArOTg2LDE5IEBAIEJ1aWxk Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBMaXN0ICpxbGlzdCwKIAkJ UG9wQWN0aXZlU25hcHNob3QoKTsKIAogCS8qCi0JICogTm9ybWFsbHkgd2UgbWFrZSBhIGRlZGlj YXRlZCBtZW1vcnkgY29udGV4dCBmb3IgdGhlIENhY2hlZFBsYW4gYW5kIGl0cwotCSAqIHN1YnNp ZGlhcnkgZGF0YS4gIChJdCdzIHByb2JhYmx5IG5vdCBnb2luZyB0byBiZSBsYXJnZSwgYnV0IGp1 c3QgaW4KLQkgKiBjYXNlLCBhbGxvdyBpdCB0byBncm93IGxhcmdlLiAgSXQncyB0cmFuc2llbnQg Zm9yIHRoZSBtb21lbnQuKSAgQnV0IGZvcgotCSAqIGEgb25lLXNob3QgcGxhbiwgd2UganVzdCBs ZWF2ZSBpdCBpbiB0aGUgY2FsbGVyJ3MgbWVtb3J5IGNvbnRleHQuCisJICogTm9ybWFsbHksIHdl IGNyZWF0ZSBhIGRlZGljYXRlZCBtZW1vcnkgY29udGV4dCBmb3IgdGhlIENhY2hlZFBsYW4gYW5k CisJICogaXRzIHN1YnNpZGlhcnkgZGF0YS4gQWx0aG91Z2ggaXQncyB1c3VhbGx5IG5vdCB2ZXJ5 IGxhcmdlLCB0aGUgY29udGV4dAorCSAqIGlzIGRlc2lnbmVkIHRvIGFsbG93IGdyb3d0aCBpZiBu ZWNlc3NhcnkuCisJICoKKwkgKiBUaGUgUGxhbm5lZFN0bXRzIGFyZSBzdG9yZWQgaW4gYSBzZXBh cmF0ZSBjaGlsZCBjb250ZXh0IChzdG10X2NvbnRleHQpCisJICogb2YgdGhlIENhY2hlZFBsYW4n cyBtZW1vcnkgY29udGV4dC4gVGhpcyBzZXBhcmF0aW9uIGFsbG93cworCSAqIFVwZGF0ZUNhY2hl ZFBsYW4oKSB0byBmcmVlIGFuZCByZXBsYWNlIHRoZSBQbGFubmVkU3RtdHMgd2l0aG91dAorCSAq IGFmZmVjdGluZyB0aGUgQ2FjaGVkUGxhbiBzdHJ1Y3R1cmUgb3IgaXRzIHN0bXRfbGlzdCBMaXN0 LgorCSAqCisJICogRm9yIG9uZS1zaG90IHBsYW5zLCB3ZSBpbnN0ZWFkIHVzZSB0aGUgY2FsbGVy J3MgbWVtb3J5IGNvbnRleHQsIGFzIHRoZQorCSAqIENhY2hlZFBsYW4gd2lsbCBub3QgcGVyc2lz dC4gIHN0bXRfY29udGV4dCB3aWxsIGJlIHNldCB0byBOVUxMIGluIHRoaXMKKwkgKiBjYXNlLCBi ZWNhdXNlIFVwZGF0ZUNhY2hlZFBsYW4oKSBzaG91bGQgbmV2ZXIgZ2V0IGNhbGxlZCBvbiBhIG9u ZS1zaG90CisJICogcGxhbi4KIAkgKi8KIAlpZiAoIXBsYW5zb3VyY2UtPmlzX29uZXNob3QpCiAJ ewpAQCAtOTc5LDEyICsxMDA3LDE3IEBAIEJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNl ICpwbGFuc291cmNlLCBMaXN0ICpxbGlzdCwKIAkJCQkJCQkJCQkJIEFMTE9DU0VUX1NUQVJUX1NN QUxMX1NJWkVTKTsKIAkJTWVtb3J5Q29udGV4dENvcHlBbmRTZXRJZGVudGlmaWVyKHBsYW5fY29u dGV4dCwgcGxhbnNvdXJjZS0+cXVlcnlfc3RyaW5nKTsKIAotCQkvKgotCQkgKiBDb3B5IHBsYW4g aW50byB0aGUgbmV3IGNvbnRleHQuCi0JCSAqLwotCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ocGxh bl9jb250ZXh0KTsKKwkJc3RtdF9jb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKEN1cnJl bnRNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJCQkgIkNhY2hlZFBsYW4gUGxhbm5lZFN0bXRzIiwK KwkJCQkJCQkJCQkJIEFMTE9DU0VUX1NUQVJUX1NNQUxMX1NJWkVTKTsKKwkJTWVtb3J5Q29udGV4 dENvcHlBbmRTZXRJZGVudGlmaWVyKHN0bXRfY29udGV4dCwgcGxhbnNvdXJjZS0+cXVlcnlfc3Ry aW5nKTsKKwkJTWVtb3J5Q29udGV4dFNldFBhcmVudChzdG10X2NvbnRleHQsIHBsYW5fY29udGV4 dCk7CiAKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKHN0bXRfY29udGV4dCk7CiAJCXBsaXN0ID0g Y29weU9iamVjdChwbGlzdCk7CisKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKHBsYW5fY29udGV4 dCk7CisJCXBsaXN0ID0gbGlzdF9jb3B5KHBsaXN0KTsKIAl9CiAJZWxzZQogCQlwbGFuX2NvbnRl eHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKQEAgLTEwMjUsOCArMTA1OCwxMCBAQCBCdWlsZENh Y2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgTGlzdCAqcWxpc3QsCiAJCXBs YW4tPnNhdmVkX3htaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAlwbGFuLT5yZWZjb3VudCA9 IDA7CiAJcGxhbi0+Y29udGV4dCA9IHBsYW5fY29udGV4dDsKKwlwbGFuLT5zdG10X2NvbnRleHQg PSBzdG10X2NvbnRleHQ7CiAJcGxhbi0+aXNfb25lc2hvdCA9IHBsYW5zb3VyY2UtPmlzX29uZXNo b3Q7CiAJcGxhbi0+aXNfc2F2ZWQgPSBmYWxzZTsKKwlwbGFuLT5pc19yZXVzZWQgPSBmYWxzZTsK IAlwbGFuLT5pc192YWxpZCA9IHRydWU7CiAKIAkvKiBhc3NpZ24gZ2VuZXJhdGlvbiBudW1iZXIg dG8gbmV3IHBsYW4gKi8KQEAgLTExNTMsOCArMTE4OCwxMSBAQCBjYWNoZWRfcGxhbl9jb3N0KENh Y2hlZFBsYW4gKnBsYW4sIGJvb2wgaW5jbHVkZV9wbGFubmVyKQogICogcGxhbiBvciBhIGN1c3Rv bSBwbGFuIGZvciB0aGUgZ2l2ZW4gcGFyYW1ldGVyczogdGhlIGNhbGxlciBkb2VzIG5vdCBrbm93 CiAgKiB3aGljaCBpdCB3aWxsIGdldC4KICAqCi0gKiBPbiByZXR1cm4sIHRoZSBwbGFuIGlzIHZh bGlkIGFuZCB3ZSBoYXZlIHN1ZmZpY2llbnQgbG9ja3MgdG8gYmVnaW4KLSAqIGV4ZWN1dGlvbi4K KyAqIE9uIHJldHVybiwgdGhlIHBsYW4gaXMgdmFsaWQsIGJ1dCBub3QgYWxsIGxvY2tzIGFyZSBh Y3F1aXJlZCBpZiB0aGUKKyAqIHJldHVybmVkIHBsYW4gaXMgYSByZXVzZWQgZ2VuZXJpYyBwbGFu LiAgSW4gc3VjaCBjYXNlcywgbG9ja3Mgb24gcmVsYXRpb25zCisgKiBzdWJqZWN0IHRvIGluaXRp YWwgcnVudGltZSBwcnVuaW5nIGFyZSBub3QgdGFrZW4gYnkgQ2hlY2tDYWNoZWRQbGFuKCkgYnV0 CisgKiBkZWZlcnJlZCB1bnRpbCB0aGUgZXhlY3V0aW9uIHN0YXJ0dXAgcGhhc2UsIHNwZWNpZmlj YWxseSB3aGVuCisgKiBFeGVjRG9Jbml0aWFsUHJ1bmluZygpIHBlcmZvcm1zIGluaXRpYWwgcHJ1 bmluZy4KICAqCiAgKiBPbiByZXR1cm4sIHRoZSByZWZjb3VudCBvZiB0aGUgcGxhbiBoYXMgYmVl biBpbmNyZW1lbnRlZDsgYSBsYXRlcgogICogUmVsZWFzZUNhY2hlZFBsYW4oKSBjYWxsIGlzIGV4 cGVjdGVkLiAgSWYgIm93bmVyIiBpcyBub3QgTlVMTCB0aGVuCkBAIC0xMTgwLDcgKzEyMTgsNyBA QCBHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIFBhcmFtTGlzdElu Zm8gYm91bmRQYXJhbXMsCiAJCWVsb2coRVJST1IsICJjYW5ub3QgYXBwbHkgUmVzb3VyY2VPd25l ciB0byBub24tc2F2ZWQgY2FjaGVkIHBsYW4iKTsKIAogCS8qIE1ha2Ugc3VyZSB0aGUgcXVlcnl0 cmVlIGxpc3QgaXMgdmFsaWQgYW5kIHdlIGhhdmUgcGFyc2UtdGltZSBsb2NrcyAqLwotCXFsaXN0 ID0gUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5KHBsYW5zb3VyY2UsIHF1ZXJ5RW52KTsKKwlxbGlzdCA9 IFJldmFsaWRhdGVDYWNoZWRRdWVyeShwbGFuc291cmNlLCBxdWVyeUVudiwgdHJ1ZSk7CiAKIAkv KiBEZWNpZGUgd2hldGhlciB0byB1c2UgYSBjdXN0b20gcGxhbiAqLwogCWN1c3RvbXBsYW4gPSBj aG9vc2VfY3VzdG9tX3BsYW4ocGxhbnNvdXJjZSwgYm91bmRQYXJhbXMpOwpAQCAtMTI3Niw2ICsx MzE0LDExMyBAQCBHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIFBh cmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCiAJcmV0dXJuIHBsYW47CiB9CiAKKy8qCisgKiBVcGRh dGVDYWNoZWRQbGFuCisgKgkJQ3JlYXRlIGZyZXNoIHBsYW5zIGZvciBhbGwgcXVlcmllcyBpbiB0 aGUgQ2FjaGVkUGxhblNvdXJjZSwgcmVwbGFjaW5nCisgKgkJdGhvc2UgaW4gdGhlIGdlbmVyaWMg cGxhbidzIHN0bXRfbGlzdCwgYW5kIHJldHVybiB0aGUgcGxhbiBmb3IgdGhlCisgKgkJcXVlcnlf aW5kZXgndGggcXVlcnkuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBwcmltYXJpbHkgdXNlZCBi eSBFeGVjdXRvclN0YXJ0Q2FjaGVkUGxhbigpIHRvIGhhbmRsZQorICogY2FzZXMgd2hlcmUgdGhl IG9yaWdpbmFsIGdlbmVyaWMgQ2FjaGVkUGxhbiBiZWNvbWVzIGludmFsaWQuIFN1Y2gKKyAqIGlu dmFsaWRhdGlvbiBtYXkgb2NjdXIgd2hlbiBwcnVuYWJsZSByZWxhdGlvbnMgaW4gdGhlIG9sZCBw bGFuIGZvciB0aGUKKyAqIHF1ZXJ5X2luZGV4J3RoIHF1ZXJ5IGFyZSBsb2NrZWQgaW4gcHJlcGFy YXRpb24gZm9yIGV4ZWN1dGlvbi4KKyAqCisgKiBOb3RlIHRoYXQgaW52YWxpZGF0aW9ucyByZWNl aXZlZCBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgcXVlcnlfaW5kZXgndGgKKyAqIHF1ZXJ5 IGNhbiBhZmZlY3QgYm90aCB0aGUgcXVlcmllcyB0aGF0IGhhdmUgYWxyZWFkeSBmaW5pc2hlZCBl eGVjdXRpb24KKyAqIChlLmcuLCBkdWUgdG8gY29uY3VycmVudCBtb2RpZmljYXRpb25zIG9uIHBy dW5hYmxlIHJlbGF0aW9ucyB0aGF0IHdlcmUgbm90CisgKiBsb2NrZWQgZHVyaW5nIHRoZWlyIGV4 ZWN1dGlvbikgYW5kIGFsc28gdGhlIHF1ZXJpZXMgdGhhdCBoYXZlIG5vdCB5ZXQgYmVlbgorICog ZXhlY3V0ZWQuICBBcyBhIHJlc3VsdCwgdGhpcyBmdW5jdGlvbiB1cGRhdGVzIGFsbCBwbGFucyB0 byBlbnN1cmUKKyAqIENhY2hlZFBsYW4uaXNfdmFsaWQgaXMgc2FmZWx5IHNldCB0byB0cnVlLgor ICoKKyAqIFRoZSBvbGQgUGxhbm5lZFN0bXRzIGluIHBsYW5zb3VyY2UtPmdwbGFuLT5zdG10X2xp c3QgYXJlIGZyZWVkIGhlcmUsIHNvCisgKiB0aGUgY2FsbGVyIGFuZCBhbnkgb2YgaXRzIGNhbGxl cnMgbXVzdCBub3QgcmVseSBvbiB0aGVtIHJlbWFpbmluZyBhY2Nlc3NpYmxlCisgKiBhZnRlciB0 aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4KKyAqLworUGxhbm5lZFN0bXQgKgorVXBkYXRlQ2FjaGVk UGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBpbnQgcXVlcnlfaW5kZXgsCisJCQkJ IFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KQoreworCUxpc3QJICAgKnF1ZXJ5X2xpc3QgPSBw bGFuc291cmNlLT5xdWVyeV9saXN0LAorCQkJICAgKnBsYW5fbGlzdDsKKwlMaXN0Q2VsbCAgICps MSwKKwkJCSAgICpsMjsKKwlDYWNoZWRQbGFuICpwbGFuID0gcGxhbnNvdXJjZS0+Z3BsYW47CisJ TWVtb3J5Q29udGV4dCBvbGRjeHQ7CisKKwlBc3NlcnQoQWN0aXZlU25hcHNob3RTZXQoKSk7CisK KwkvKiBTYW5pdHkgY2hlY2tzICovCisJaWYgKHBsYW4gPT0gTlVMTCkKKwkJZWxvZyhFUlJPUiwg IlVwZGF0ZUNhY2hlZFBsYW4oKSBjYWxsZWQgaW4gdGhlIHdyb25nIGNvbnRleHQ6IHBsYW5zb3Vy Y2UtPmdwbGFuIGlzIE5VTEwiKTsKKwllbHNlIGlmIChwbGFuLT5pc192YWxpZCkKKwkJZWxvZyhF UlJPUiwgIlVwZGF0ZUNhY2hlZFBsYW4oKSBjYWxsZWQgaW4gdGhlIHdyb25nIGNvbnRleHQ6IHBs YW5zb3VyY2UtPmdwbGFuLT5pc192YWxpZCBpcyB0cnVlIik7CisJZWxzZSBpZiAocGxhbi0+aXNf b25lc2hvdCkKKwkJZWxvZyhFUlJPUiwgIlVwZGF0ZUNhY2hlZFBsYW4oKSBjYWxsZWQgaW4gdGhl IHdyb25nIGNvbnRleHQ6IHBsYW5zb3VyY2UtPmdwbGFuLT5pc19vbmVzaG90IGlzIHRydWUiKTsK KworCS8qCisJICogVGhlIHBsYW5zb3VyY2UgbWlnaHQgaGF2ZSBiZWNvbWUgaW52YWxpZCBzaW5j ZSBHZXRDYWNoZWRQbGFuKCkgcmV0dXJuZWQKKwkgKiB0aGUgQ2FjaGVkUGxhbi4gU2VlIHRoZSBj b21tZW50IGluIEJ1aWxkQ2FjaGVkUGxhbigpIGZvciBkZXRhaWxzIG9uIHdoeQorCSAqIHRoaXMg bWlnaHQgaGFwcGVuLiAgQWx0aG91Z2ggaW52YWxpZGF0aW9uIGlzIGxpa2VseSBhIGZhbHNlIHBv c2l0aXZlIGFzCisJICogc3RhdGVkIHRoZXJlLCB3ZSBtYWtlIHRoZSBwbGFuIHZhbGlkIHRvIGVu c3VyZSB0aGUgcXVlcnkgbGlzdCB1c2VkIGZvcgorCSAqIHBsYW5uaW5nIGlzIHVwIHRvIGRhdGUu CisJICoKKwkgKiBUaGUgcmlzayBvZiBjYXRjaGluZyBhbiBpbnZhbGlkYXRpb24gaXMgaGlnaGVy IGhlcmUgdGhhbiB3aGVuCisJICogQnVpbGRDYWNoZWRQbGFuKCkgaXMgY2FsbGVkIGZyb20gR2V0 Q2FjaGVkUGxhbigpLCBiZWNhdXNlIHRoaXMgZnVuY3Rpb24KKwkgKiBpcyBub3JtYWxseSBjYWxs ZWQgbG9uZyBhZnRlciBHZXRDYWNoZWRQbGFuKCkgcmV0dXJucyB0aGUgQ2FjaGVkUGxhbiwKKwkg KiBzbyBtdWNoIG1vcmUgcHJvY2Vzc2luZyBjb3VsZCBoYXZlIG9jY3VycmVkIGluY2x1ZGluZyB0 aGluZ3MgdGhhdCBtYXJrCisJICogdGhlIENhY2hlZFBsYW5Tb3VyY2UgaW52YWxpZC4KKwkgKgor CSAqIE5vdGU6IERvIG5vdCByZWxlYXNlIHBsYW5zb3VyY2UtPmdwbGFuLCBiZWNhdXNlIHRoZSB1 cHN0cmVhbSBjYWxsZXJzCisJICogKHN1Y2ggYXMgdGhlIGNhbGxlcnMgb2YgRXhlY3V0b3JTdGFy dENhY2hlZFBsYW4oKSkgd291bGQgc3RpbGwgYmUKKwkgKiByZWZlcmVuY2luZyBpdC4KKwkgKi8K KwlpZiAoIXBsYW5zb3VyY2UtPmlzX3ZhbGlkKQorCQlxdWVyeV9saXN0ID0gUmV2YWxpZGF0ZUNh Y2hlZFF1ZXJ5KHBsYW5zb3VyY2UsIHF1ZXJ5RW52LCBmYWxzZSk7CisJQXNzZXJ0KHF1ZXJ5X2xp c3QgIT0gTklMKTsKKworCS8qCisJICogQnVpbGQgYSBuZXcgZ2VuZXJpYyBwbGFuIGZvciBhbGwg dGhlIHF1ZXJpZXMgYWZ0ZXIgbWFraW5nIGEgY29weSB0byBiZQorCSAqIHNjcmliYmxlZCBvbiBi eSB0aGUgcGxhbm5lci4KKwkgKi8KKwlxdWVyeV9saXN0ID0gY29weU9iamVjdChxdWVyeV9saXN0 KTsKKworCS8qCisJICogUGxhbm5pbmcgd29yayBpcyBkb25lIGluIHRoZSBjYWxsZXIncyBtZW1v cnkgY29udGV4dC4gIFRoZSByZXN1bHRpbmcKKwkgKiBQbGFubmVkU3RtdCBpcyB0aGVuIGNvcGll ZCBpbnRvIHBsYW4tPnN0bXRfY29udGV4dCBhZnRlciB0aHJvd2luZyBhd2F5CisJICogdGhlIG9s ZCBvbmVzLgorCSAqLworCXBsYW5fbGlzdCA9IHBnX3BsYW5fcXVlcmllcyhxdWVyeV9saXN0LCBw bGFuc291cmNlLT5xdWVyeV9zdHJpbmcsCisJCQkJCQkJCXBsYW5zb3VyY2UtPmN1cnNvcl9vcHRp b25zLCBOVUxMKTsKKwlBc3NlcnQobGlzdF9sZW5ndGgocGxhbl9saXN0KSA9PSBsaXN0X2xlbmd0 aChwbGFuLT5zdG10X2xpc3QpKTsKKworCU1lbW9yeUNvbnRleHRSZXNldChwbGFuLT5zdG10X2Nv bnRleHQpOworCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhwbGFuLT5zdG10X2NvbnRl eHQpOworCWZvcmJvdGgobDEsIHBsYW5fbGlzdCwgbDIsIHBsYW4tPnN0bXRfbGlzdCkKKwl7CisJ CVBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCA9IGxmaXJzdChsMSk7CisKKwkJbGZpcnN0KGwyKSA9 IGNvcHlPYmplY3QocGxhbm5lZHN0bXQpOworCX0KKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xk Y3h0KTsKKworCS8qCisJICogWFhYIFNob3VsZCB0aGlzIGFsc28gKHJlKXNldCB0aGUgcHJvcGVy dGllcyBvZiB0aGUgQ2FjaGVkUGxhbiB0aGF0IGFyZQorCSAqIHNldCBpbiBCdWlsZENhY2hlZFBs YW4oKSBhZnRlciBjcmVhdGluZyB0aGUgZnJlc2ggcGxhbnMgc3VjaCBhcworCSAqIHBsYW5Sb2xl SWQsIGRlcGVuZHNPblJvbGUsIGFuZCBzYXZlX3htaW4/CisJICovCisKKwkvKgorCSAqIFdlJ3Zl IHVwZGF0ZWQgYWxsIHRoZSBwbGFucyB0aGF0IG1pZ2h0IGhhdmUgYmVlbiBpbnZhbGlkYXRlZCwg c28gbWFyaworCSAqIHRoZSBDYWNoZWRQbGFuIGFzIHZhbGlkLgorCSAqLworCXBsYW4tPmlzX3Zh bGlkID0gdHJ1ZTsKKworCS8qIEFsc28gdXBkYXRlIGdlbmVyaWNfY29zdCBiZWNhdXNlIHdlIGp1 c3QgY3JlYXRlZCBhIG5ldyBnZW5lcmljIHBsYW4uICovCisJcGxhbnNvdXJjZS0+Z2VuZXJpY19j b3N0ID0gY2FjaGVkX3BsYW5fY29zdChwbGFuLCBmYWxzZSk7CisKKwlyZXR1cm4gbGlzdF9udGhf bm9kZShQbGFubmVkU3RtdCwgcGxhbi0+c3RtdF9saXN0LCBxdWVyeV9pbmRleCk7Cit9CisKIC8q CiAgKiBSZWxlYXNlQ2FjaGVkUGxhbjogcmVsZWFzZSBhY3RpdmUgdXNlIG9mIGEgY2FjaGVkIHBs YW4uCiAgKgpAQCAtMTY1NCw3ICsxNzk5LDcgQEAgQ2FjaGVkUGxhbkdldFRhcmdldExpc3QoQ2Fj aGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAkJcmV0dXJuIE5JTDsKIAogCS8qIE1ha2Ugc3Vy ZSB0aGUgcXVlcnl0cmVlIGxpc3QgaXMgdmFsaWQgYW5kIHdlIGhhdmUgcGFyc2UtdGltZSBsb2Nr cyAqLwotCVJldmFsaWRhdGVDYWNoZWRRdWVyeShwbGFuc291cmNlLCBxdWVyeUVudik7CisJUmV2 YWxpZGF0ZUNhY2hlZFF1ZXJ5KHBsYW5zb3VyY2UsIHF1ZXJ5RW52LCB0cnVlKTsKIAogCS8qIEdl dCB0aGUgcHJpbWFyeSBzdGF0ZW1lbnQgYW5kIGZpbmQgb3V0IHdoYXQgaXQgcmV0dXJucyAqLwog CXBzdG10ID0gUXVlcnlMaXN0R2V0UHJpbWFyeVN0bXQocGxhbnNvdXJjZS0+cXVlcnlfbGlzdCk7 CkBAIC0xNzc2LDcgKzE5MjEsNyBAQCBBY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xp c3QsIGJvb2wgYWNxdWlyZSkKIAlmb3JlYWNoKGxjMSwgc3RtdF9saXN0KQogCXsKIAkJUGxhbm5l ZFN0bXQgKnBsYW5uZWRzdG10ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIGxjMSk7Ci0JCUxp c3RDZWxsICAgKmxjMjsKKwkJaW50CQkJcnRpbmRleDsKIAogCQlpZiAocGxhbm5lZHN0bXQtPmNv bW1hbmRUeXBlID09IENNRF9VVElMSVRZKQogCQl7CkBAIC0xNzk0LDEzICsxOTM5LDE2IEBAIEFj cXVpcmVFeGVjdXRvckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKQogCQkJY29u dGludWU7CiAJCX0KIAotCQlmb3JlYWNoKGxjMiwgcGxhbm5lZHN0bXQtPnJ0YWJsZSkKKwkJcnRp bmRleCA9IC0xOworCQl3aGlsZSAoKHJ0aW5kZXggPSBibXNfbmV4dF9tZW1iZXIocGxhbm5lZHN0 bXQtPnVucHJ1bmFibGVSZWxpZHMsCisJCQkJCQkJCQkJICBydGluZGV4KSkgPj0gMCkKIAkJewot CQkJUmFuZ2VUYmxFbnRyeSAqcnRlID0gKFJhbmdlVGJsRW50cnkgKikgbGZpcnN0KGxjMik7CisJ CQlSYW5nZVRibEVudHJ5ICpydGUgPSBsaXN0X250aF9ub2RlKFJhbmdlVGJsRW50cnksCisJCQkJ CQkJCQkJCSAgIHBsYW5uZWRzdG10LT5ydGFibGUsCisJCQkJCQkJCQkJCSAgIHJ0aW5kZXggLSAx KTsKIAotCQkJaWYgKCEocnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTiB8fAotCQkJCSAgKHJ0 ZS0+cnRla2luZCA9PSBSVEVfU1VCUVVFUlkgJiYgT2lkSXNWYWxpZChydGUtPnJlbGlkKSkpKQot CQkJCWNvbnRpbnVlOworCQkJQXNzZXJ0KHJ0ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04gfHwK KwkJCQkgICAocnRlLT5ydGVraW5kID09IFJURV9TVUJRVUVSWSAmJiBPaWRJc1ZhbGlkKHJ0ZS0+ cmVsaWQpKSk7CiAKIAkJCS8qCiAJCQkgKiBBY3F1aXJlIHRoZSBhcHByb3ByaWF0ZSB0eXBlIG9m IGxvY2sgb24gZWFjaCByZWxhdGlvbiBPSUQuIE5vdGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1l bS5jCmluZGV4IDBiZTFjMmIwZmZmLi5lMzUyNmU3ODA2NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3Bv cnRhbG1lbS5jCkBAIC0yODQsNyArMjg0LDggQEAgUG9ydGFsRGVmaW5lUXVlcnkoUG9ydGFsIHBv cnRhbCwKIAkJCQkgIGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJICBDb21tYW5kVGFnIGNv bW1hbmRUYWcsCiAJCQkJICBMaXN0ICpzdG10cywKLQkJCQkgIENhY2hlZFBsYW4gKmNwbGFuKQor CQkJCSAgQ2FjaGVkUGxhbiAqY3BsYW4sCisJCQkJICBDYWNoZWRQbGFuU291cmNlICpwbGFuc291 cmNlKQogewogCUFzc2VydChQb3J0YWxJc1ZhbGlkKHBvcnRhbCkpOwogCUFzc2VydChwb3J0YWwt PnN0YXR1cyA9PSBQT1JUQUxfTkVXKTsKQEAgLTI5OSw2ICszMDAsNyBAQCBQb3J0YWxEZWZpbmVR dWVyeShQb3J0YWwgcG9ydGFsLAogCXBvcnRhbC0+Y29tbWFuZFRhZyA9IGNvbW1hbmRUYWc7CiAJ cG9ydGFsLT5zdG10cyA9IHN0bXRzOwogCXBvcnRhbC0+Y3BsYW4gPSBjcGxhbjsKKwlwb3J0YWwt PnBsYW5zb3VyY2UgPSBwbGFuc291cmNlOwogCXBvcnRhbC0+c3RhdHVzID0gUE9SVEFMX0RFRklO RUQ7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaCBiL3Ny Yy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAppbmRleCBlYTc0MTk5NTFmNC4uNTcwZTdjYWQx ZmEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAorKysgYi9zcmMv aW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKQEAgLTEwMyw4ICsxMDMsMTAgQEAgZXh0ZXJuIHZv aWQgRXhwbGFpbk9uZVV0aWxpdHkoTm9kZSAqdXRpbGl0eVN0bXQsIEludG9DbGF1c2UgKmludG8s CiAJCQkJCQkJICBFeHBsYWluU3RhdGUgKmVzLCBQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJ ICBQYXJhbUxpc3RJbmZvIHBhcmFtcyk7CiAKLWV4dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFuKFBs YW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywKLQkJCQkJCSAgIEV4cGxh aW5TdGF0ZSAqZXMsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAorZXh0ZXJuIHZvaWQgRXhwbGFp bk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBDYWNoZWRQbGFuICpjcGxhbiwKKwkJ CQkJCSAgIENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIGludCBwbGFuX2luZGV4LAorCQkJ CQkJICAgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKKwkJCQkJCSAgIGNvbnN0 IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCQkJCQkJICAgUGFyYW1MaXN0SW5mbyBwYXJhbXMsIFF1ZXJ5 RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAogCQkJCQkJICAgY29uc3QgaW5zdHJfdGltZSAqcGxhbmR1 cmF0aW9uLAogCQkJCQkJICAgY29uc3QgQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMv dHJpZ2dlci5oCmluZGV4IDJlZDJjNGJiMzc4Li40MTgwNjAxZGNkNCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3Ry aWdnZXIuaApAQCAtMjU4LDYgKzI1OCw3IEBAIGV4dGVybiB2b2lkIEV4ZWNBU1RydW5jYXRlVHJp Z2dlcnMoRVN0YXRlICplc3RhdGUsCiBleHRlcm4gdm9pZCBBZnRlclRyaWdnZXJCZWdpblhhY3Qo dm9pZCk7CiBleHRlcm4gdm9pZCBBZnRlclRyaWdnZXJCZWdpblF1ZXJ5KHZvaWQpOwogZXh0ZXJu IHZvaWQgQWZ0ZXJUcmlnZ2VyRW5kUXVlcnkoRVN0YXRlICplc3RhdGUpOworZXh0ZXJuIHZvaWQg QWZ0ZXJUcmlnZ2VyQWJvcnRRdWVyeSh2b2lkKTsKIGV4dGVybiB2b2lkIEFmdGVyVHJpZ2dlckZp cmVEZWZlcnJlZCh2b2lkKTsKIGV4dGVybiB2b2lkIEFmdGVyVHJpZ2dlckVuZFhhY3QoYm9vbCBp c0NvbW1pdCk7CiBleHRlcm4gdm9pZCBBZnRlclRyaWdnZXJCZWdpblN1YlhhY3Qodm9pZCk7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmggYi9zcmMvaW5j bHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKaW5kZXggODU1ZmVkNGZlYTUuLjk1MTAwOWNm NDZjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKKysr IGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oCkBAIC00OCw2ICs0OCw4IEBA IGV4dGVybiB2b2lkIEV4ZWNDbGVhbnVwVHVwbGVSb3V0aW5nKE1vZGlmeVRhYmxlU3RhdGUgKm10 c3RhdGUsCiAgKiBucGFydHMJCQkJCQlMZW5ndGggb2Ygc3VicGxhbl9tYXBbXSBhbmQgc3VicGFy dF9tYXBbXS4KICAqIHN1YnBsYW5fbWFwCQkJCQlTdWJwbGFuIGluZGV4IGJ5IHBhcnRpdGlvbiBp bmRleCwgb3IgLTEuCiAgKiBzdWJwYXJ0X21hcAkJCQkJU3VicGFydCBpbmRleCBieSBwYXJ0aXRp b24gaW5kZXgsIG9yIC0xLgorICogbGVhZnBhcnRfcnRpX21hcAkJCQlSVCBpbmRleCBieSBwYXJ0 aXRpb24gaW5kZXgsIG9yIDAgaWYgbm90IGEgbGVhZgorICogCQkJCQkJCQlwYXJ0aXRpb24uCiAg KiBwcmVzZW50X3BhcnRzCQkJCUEgQml0bWFwc2V0IG9mIHRoZSBwYXJ0aXRpb24gaW5kZXhlcyB0 aGF0IHdlCiAgKgkJCQkJCQkJaGF2ZSBzdWJwbGFucyBvciBzdWJwYXJ0cyBmb3IuCiAgKiBpbml0 aWFsX3BydW5pbmdfc3RlcHMJCUxpc3Qgb2YgUGFydGl0aW9uUHJ1bmVTdGVwcyB1c2VkIHRvCkBA IC02NSw2ICs2Nyw3IEBAIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvbmVkUmVsUHJ1bmluZ0RhdGEK IAlpbnQJCQlucGFydHM7CiAJaW50CQkgICAqc3VicGxhbl9tYXA7CiAJaW50CQkgICAqc3VicGFy dF9tYXA7CisJaW50CQkgICAqbGVhZnBhcnRfcnRpX21hcDsKIAlCaXRtYXBzZXQgICpwcmVzZW50 X3BhcnRzOwogCUxpc3QJICAgKmluaXRpYWxfcHJ1bmluZ19zdGVwczsKIAlMaXN0CSAgICpleGVj X3BydW5pbmdfc3RlcHM7CkBAIC0xMzUsNiArMTM4LDcgQEAgZXh0ZXJuIFBhcnRpdGlvblBydW5l U3RhdGUgKkV4ZWNJbml0UGFydGl0aW9uRXhlY1BydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUs CiAJCQkJCQkJCQkJCQkJCSBCaXRtYXBzZXQgKnJlbGlkcywKIAkJCQkJCQkJCQkJCQkJIEJpdG1h cHNldCAqKmluaXRpYWxseV92YWxpZF9zdWJwbGFucyk7CiBleHRlcm4gQml0bWFwc2V0ICpFeGVj RmluZE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKLQkJ CQkJCQkJCQkgICBib29sIGluaXRpYWxfcHJ1bmUpOworCQkJCQkJCQkJCSAgIGJvb2wgaW5pdGlh bF9wcnVuZSwKKwkJCQkJCQkJCQkgICBCaXRtYXBzZXQgKip2YWxpZHN1YnBsYW5fcnRpcyk7CiAK ICNlbmRpZgkJCQkJCQkvKiBFWEVDUEFSVElUSU9OX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5o CmluZGV4IDg2ZGIzZGM4ZDBkLi5iYTUzMzA1YWQ0MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY2Rlc2MuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5o CkBAIC0zNSw2ICszNSw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogCS8qIFRoZXNlIGZp ZWxkcyBhcmUgcHJvdmlkZWQgYnkgQ3JlYXRlUXVlcnlEZXNjICovCiAJQ21kVHlwZQkJb3BlcmF0 aW9uOwkJLyogQ01EX1NFTEVDVCwgQ01EX1VQREFURSwgZXRjLiAqLwogCVBsYW5uZWRTdG10ICpw bGFubmVkc3RtdDsJLyogcGxhbm5lcidzIG91dHB1dCAoY291bGQgYmUgdXRpbGl0eSwgdG9vKSAq LworCUNhY2hlZFBsYW4gKmNwbGFuOwkJCS8qIENhY2hlZFBsYW4gdGhhdCBzdXBwbGllcyB0aGUg cGxhbm5lZHN0bXQgKi8KIAljb25zdCBjaGFyICpzb3VyY2VUZXh0OwkJLyogc291cmNlIHRleHQg b2YgdGhlIHF1ZXJ5ICovCiAJU25hcHNob3QJc25hcHNob3Q7CQkvKiBzbmFwc2hvdCB0byB1c2Ug Zm9yIHF1ZXJ5ICovCiAJU25hcHNob3QJY3Jvc3NjaGVja19zbmFwc2hvdDsJLyogY3Jvc3NjaGVj ayBmb3IgUkkgdXBkYXRlL2RlbGV0ZSAqLwpAQCAtNTcsNiArNTgsNyBAQCB0eXBlZGVmIHN0cnVj dCBRdWVyeURlc2MKIAogLyogaW4gcHF1ZXJ5LmMgKi8KIGV4dGVybiBRdWVyeURlc2MgKkNyZWF0 ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCisJCQkJCQkJCSAgQ2FjaGVkUGxh biAqY3BsYW4sCiAJCQkJCQkJCSAgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkJCQkJICBT bmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCQkJICBTbmFwc2hvdCBjcm9zc2NoZWNrX3NuYXBzaG90 LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggYzdkYjZkZWZkM2UuLmMwNTViNDQzNmJjIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCisrKyBiL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKQEAgLTE5LDYgKzE5LDcgQEAKICNpbmNsdWRlICJub2Rl cy9sb2Nrb3B0aW9ucy5oIgogI2luY2x1ZGUgIm5vZGVzL3BhcnNlbm9kZXMuaCIKICNpbmNsdWRl ICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3BsYW5jYWNoZS5oIgogCiAKIC8q CkBAIC03Miw3ICs3Myw3IEBACiAKIAogLyogSG9vayBmb3IgcGx1Z2lucyB0byBnZXQgY29udHJv bCBpbiBFeGVjdXRvclN0YXJ0KCkgKi8KLXR5cGVkZWYgdm9pZCAoKkV4ZWN1dG9yU3RhcnRfaG9v a190eXBlKSAoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOwordHlwZWRlZiBib29s ICgqRXhlY3V0b3JTdGFydF9ob29rX3R5cGUpIChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVm bGFncyk7CiBleHRlcm4gUEdETExJTVBPUlQgRXhlY3V0b3JTdGFydF9ob29rX3R5cGUgRXhlY3V0 b3JTdGFydF9ob29rOwogCiAvKiBIb29rIGZvciBwbHVnaW5zIHRvIGdldCBjb250cm9sIGluIEV4 ZWN1dG9yUnVuKCkgKi8KQEAgLTE5MSw4ICsxOTIsMTEgQEAgRXhlY0dldEp1bmtBdHRyaWJ1dGUo VHVwbGVUYWJsZVNsb3QgKnNsb3QsIEF0dHJOdW1iZXIgYXR0bm8sIGJvb2wgKmlzTnVsbCkKIC8q CiAgKiBwcm90b3R5cGVzIGZyb20gZnVuY3Rpb25zIGluIGV4ZWNNYWluLmMKICAqLwotZXh0ZXJu IHZvaWQgRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7Ci1l eHRlcm4gdm9pZCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBp bnQgZWZsYWdzKTsKK2V4dGVybiBib29sIEV4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURl c2MsIGludCBlZmxhZ3MpOworZXh0ZXJuIHZvaWQgRXhlY3V0b3JTdGFydENhY2hlZFBsYW4oUXVl cnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MsCisJCQkJCQkJCQlDYWNoZWRQbGFuU291cmNl ICpwbGFuc291cmNlLAorCQkJCQkJCQkJaW50IHF1ZXJ5X2luZGV4KTsKK2V4dGVybiBib29sIHN0 YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOwog ZXh0ZXJuIHZvaWQgRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJCQkJCQlTY2Fu RGlyZWN0aW9uIGRpcmVjdGlvbiwgdWludDY0IGNvdW50KTsKIGV4dGVybiB2b2lkIHN0YW5kYXJk X0V4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLApAQCAtMjU1LDYgKzI1OSwzMCBAQCBl eHRlcm4gdm9pZCBFeGVjRW5kTm9kZShQbGFuU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhl Y1NodXRkb3duTm9kZShQbGFuU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1NldFR1cGxl Qm91bmQoaW50NjQgdHVwbGVzX25lZWRlZCwgUGxhblN0YXRlICpjaGlsZF9ub2RlKTsKIAorLyoK KyAqIElzIHRoZSBDYWNoZWRQbGFuIGluIGVzX2NhY2hlZHBsYW4gc3RpbGwgdmFsaWQ/CisgKgor ICogQ2FsbGVkIGZyb20gSW5pdFBsYW4oKSBiZWNhdXNlIGludmFsaWRhdGlvbiBtZXNzYWdlcyB0 aGF0IGFmZmVjdCB0aGUgcGxhbgorICogbWlnaHQgYmUgcmVjZWl2ZWQgYWZ0ZXIgbG9ja3MgaGF2 ZSBiZWVuIHRha2VuIG9uIHJ1bnRpbWUtcHJ1bmFibGUgcmVsYXRpb25zLgorICogVGhlIGNhbGxl ciBzaG91bGQgdGFrZSBhcHByb3ByaWF0ZSBhY3Rpb24gaWYgdGhlIHBsYW4gaGFzIGJlY29tZSBp bnZhbGlkLgorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0V4ZWNQbGFuU3RpbGxWYWxpZChFU3Rh dGUgKmVzdGF0ZSkKK3sKKwlyZXR1cm4gZXN0YXRlLT5lc19jYWNoZWRwbGFuID09IE5VTEwgPyB0 cnVlIDoKKwkJQ2FjaGVkUGxhblZhbGlkKGVzdGF0ZS0+ZXNfY2FjaGVkcGxhbik7Cit9CisKKy8q CisgKiBMb2NrcyBhcmUgbmVlZGVkIG9ubHkgaWYgcnVubmluZyBhIGNhY2hlZCBwbGFuIHRoYXQg bWlnaHQgY29udGFpbiB1bmxvY2tlZAorICogcmVsYXRpb25zLCBzdWNoIGFzIGEgcmV1c2VkIGdl bmVyaWMgcGxhbi4KKyAqLworc3RhdGljIGlubGluZSBib29sCitFeGVjU2hvdWxkTG9ja1JlbGF0 aW9ucyhFU3RhdGUgKmVzdGF0ZSkKK3sKKwlyZXR1cm4gZXN0YXRlLT5lc19jYWNoZWRwbGFuID09 IE5VTEwgPyBmYWxzZSA6CisJCUNhY2hlZFBsYW5SZXF1aXJlc0xvY2tpbmcoZXN0YXRlLT5lc19j YWNoZWRwbGFuKTsKK30KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4ZWNQcm9jTm9kZQpAQCAtNTk1LDcg KzYyMyw4IEBAIGV4dGVybiBib29sIEV4ZWNSZWxhdGlvbklzVGFyZ2V0UmVsYXRpb24oRVN0YXRl ICplc3RhdGUsIEluZGV4IHNjYW5yZWxpZCk7CiAKIGV4dGVybiBSZWxhdGlvbiBFeGVjT3BlblNj YW5SZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgSW5kZXggc2NhbnJlbGlkLCBpbnQgZWZsYWdzKTsK IAotZXh0ZXJuIHZvaWQgRXhlY0luaXRSYW5nZVRhYmxlKEVTdGF0ZSAqZXN0YXRlLCBMaXN0ICpy YW5nZVRhYmxlLCBMaXN0ICpwZXJtSW5mb3MpOworZXh0ZXJuIHZvaWQgRXhlY0luaXRSYW5nZVRh YmxlKEVTdGF0ZSAqZXN0YXRlLCBMaXN0ICpyYW5nZVRhYmxlLCBMaXN0ICpwZXJtSW5mb3MsCisJ CQkJCQkJICAgQml0bWFwc2V0ICp1bnBydW5lZF9yZWxpZHMpOwogZXh0ZXJuIHZvaWQgRXhlY0Ns b3NlUmFuZ2VUYWJsZVJlbGF0aW9ucyhFU3RhdGUgKmVzdGF0ZSk7CiBleHRlcm4gdm9pZCBFeGVj Q2xvc2VSZXN1bHRSZWxhdGlvbnMoRVN0YXRlICplc3RhdGUpOwogCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5o CmluZGV4IGFjYTE1Zjc3MWEyLi45NTE5ZGNhMzc0YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAg LTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgog I2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKICNpbmNsdWRlICJ1dGlscy9xdWVyeWVudmlyb25t ZW50LmgiCisjaW5jbHVkZSAidXRpbHMvcGxhbmNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVs dHJpZ2dlci5oIgogI2luY2x1ZGUgInV0aWxzL3NoYXJlZHR1cGxlc3RvcmUuaCIKICNpbmNsdWRl ICJ1dGlscy9zbmFwc2hvdC5oIgpAQCAtNjU1LDkgKzY1NiwxNCBAQCB0eXBlZGVmIHN0cnVjdCBF U3RhdGUKIAkJCQkJCQkJCQkgKiBFeGVjUm93TWFya3MsIG9yIE5VTEwgaWYgbm9uZSAqLwogCUxp c3QJICAgKmVzX3J0ZXBlcm1pbmZvczsJLyogTGlzdCBvZiBSVEVQZXJtaXNzaW9uSW5mbyAqLwog CVBsYW5uZWRTdG10ICplc19wbGFubmVkc3RtdDsJLyogbGluayB0byB0b3Agb2YgcGxhbiB0cmVl ICovCisJQ2FjaGVkUGxhbiAqZXNfY2FjaGVkcGxhbjsJLyogQ2FjaGVkUGxhbiBwcm92aWRpbmcg dGhlIHBsYW4gdHJlZSAqLwogCUxpc3QJICAgKmVzX3BhcnRfcHJ1bmVfaW5mb3M7CS8qIExpc3Qg b2YgUGFydGl0aW9uUHJ1bmVJbmZvICovCiAJTGlzdAkgICAqZXNfcGFydF9wcnVuZV9zdGF0ZXM7 CS8qIExpc3Qgb2YgUGFydGl0aW9uUHJ1bmVTdGF0ZSAqLwogCUxpc3QJICAgKmVzX3BhcnRfcHJ1 bmVfcmVzdWx0czsJLyogTGlzdCBvZiBCaXRtYXBzZXQgKi8KKwlCaXRtYXBzZXQgICplc191bnBy dW5lZF9yZWxpZHM7IC8qIFBsYW5uZWRTdG10LnVucHJ1bmFibGVSZWxpZHMgKyBSVAorCQkJCQkJ CQkJICogaW5kZXhlcyBvZiBsZWFmIHBhcnRpdGlvbnMgdGhhdCBzdXJ2aXZlCisJCQkJCQkJCQkg KiBpbml0aWFsIHBydW5pbmc7IHNlZQorCQkJCQkJCQkJICogRXhlY0RvSW5pdGlhbFBydW5pbmco KSAqLwogCWNvbnN0IGNoYXIgKmVzX3NvdXJjZVRleHQ7CS8qIFNvdXJjZSB0ZXh0IGZyb20gUXVl cnlEZXNjICovCiAKIAlKdW5rRmlsdGVyICplc19qdW5rRmlsdGVyOwkvKiB0b3AtbGV2ZWwganVu ayBmaWx0ZXIsIGlmIGFueSAqLwpAQCAtNzAzLDYgKzcwOSw3IEBAIHR5cGVkZWYgc3RydWN0IEVT dGF0ZQogCWludAkJCWVzX3RvcF9lZmxhZ3M7CS8qIGVmbGFncyBwYXNzZWQgdG8gRXhlY3V0b3JT dGFydCAqLwogCWludAkJCWVzX2luc3RydW1lbnQ7CS8qIE9SIG9mIEluc3RydW1lbnRPcHRpb24g ZmxhZ3MgKi8KIAlib29sCQllc19maW5pc2hlZDsJLyogdHJ1ZSB3aGVuIEV4ZWN1dG9yRmluaXNo IGlzIGRvbmUgKi8KKwlib29sCQllc19hYm9ydGVkOwkJLyogdHJ1ZSB3aGVuIGV4ZWN1dGlvbiB3 YXMgYWJvcnRlZCAqLwogCiAJTGlzdAkgICAqZXNfZXhwcmNvbnRleHRzOwkvKiBMaXN0IG9mIEV4 cHJDb250ZXh0cyB3aXRoaW4gRVN0YXRlICovCiAKQEAgLTE0NDAsNiArMTQ0NywxMiBAQCB0eXBl ZGVmIHN0cnVjdCBNb2RpZnlUYWJsZVN0YXRlCiAJZG91YmxlCQltdF9tZXJnZV9pbnNlcnRlZDsK IAlkb3VibGUJCW10X21lcmdlX3VwZGF0ZWQ7CiAJZG91YmxlCQltdF9tZXJnZV9kZWxldGVkOwor CisJLyoKKwkgKiBMaXN0IG9mIHZhbGlkIHVwZGF0ZUNvbG5vc0xpc3RzLiAgQ29udGFpbnMgb25s eSB0aG9zZSBiZWxvbmdpbmcgdG8KKwkgKiB1bnBydW5lZCByZWxhdGlvbnMgZnJvbSBNb2RpZnlU YWJsZS51cGRhdGVDb2xub3NMaXN0cy4KKwkgKi8KKwlMaXN0CSAgICptdF91cGRhdGVDb2xub3NM aXN0czsKIH0gTW9kaWZ5VGFibGVTdGF0ZTsKIAogLyogLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9w YXRobm9kZXMuaAppbmRleCA1MmQ0NGY0MzAyMS4uMmZlNTE3OWNhNzcgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhu b2Rlcy5oCkBAIC0xMTYsNiArMTE2LDE0IEBAIHR5cGVkZWYgc3RydWN0IFBsYW5uZXJHbG9iYWwK IAkvKiAiZmxhdCIgcmFuZ2V0YWJsZSBmb3IgZXhlY3V0b3IgKi8KIAlMaXN0CSAgICpmaW5hbHJ0 YWJsZTsKIAorCS8qCisJICogUlQgaW5kZXhlcyBvZiBhbGwgcmVsYXRpb24gUlRFcyBpbiBmaW5h bHJ0YWJsZSAoUlRFX1JFTEFUSU9OIGFuZAorCSAqIFJURV9TVUJRVUVSWSBSVEVzIG9mIHZpZXdz KSBhbmQgb2YgdGhvc2UgdGhhdCBhcmUgc3ViamVjdCB0byBydW50aW1lCisJICogcHJ1bmluZyBh dCBwbGFuIGluaXRpYWxpemF0aW9uIHRpbWUgKCJpbml0aWFsIiBwcnVuaW5nKS4KKwkgKi8KKwlC aXRtYXBzZXQgICphbGxSZWxpZHM7CisJQml0bWFwc2V0ICAqcHJ1bmFibGVSZWxpZHM7CisKIAkv KiAiZmxhdCIgbGlzdCBvZiBSVEVQZXJtaXNzaW9uSW5mb3MgKi8KIAlMaXN0CSAgICpmaW5hbHJ0 ZXBlcm1pbmZvczsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAppbmRleCAwNzkwNWQ4OWI4YS4uODQ3MmYw NTY0ZTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3Ny Yy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBAIC03NCw2ICs3NCwxMCBAQCB0eXBlZGVmIHN0 cnVjdCBQbGFubmVkU3RtdAogCiAJTGlzdAkgICAqcnRhYmxlOwkJCS8qIGxpc3Qgb2YgUmFuZ2VU YmxFbnRyeSBub2RlcyAqLwogCisJQml0bWFwc2V0ICAqdW5wcnVuYWJsZVJlbGlkczsJLyogUlQg aW5kZXhlcyBvZiByZWxhdGlvbnMgdGhhdCBhcmUgbm90CisJCQkJCQkJCQkgKiBzdWJqZWN0IHRv IHJ1bnRpbWUgcHJ1bmluZzsgc2V0IGZvcgorCQkJCQkJCQkJICogQWNxdWlyZUV4ZWN1dG9yTG9j a3MoKS4gKi8KKwogCUxpc3QJICAgKnBlcm1JbmZvczsJCS8qIGxpc3Qgb2YgUlRFUGVybWlzc2lv bkluZm8gbm9kZXMgZm9yIHJ0YWJsZQogCQkJCQkJCQkgKiBlbnRyaWVzIG5lZWRpbmcgb25lICov CiAKQEAgLTE0NzUsNiArMTQ3OSw5IEBAIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvbmVkUmVsUHJ1 bmVJbmZvCiAJLyogc3VicGFydCBpbmRleCBieSBwYXJ0aXRpb24gaW5kZXgsIG9yIC0xICovCiAJ aW50CQkgICAqc3VicGFydF9tYXAgcGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnBhcnRzKSk7CiAK KwkvKiBSVCBpbmRleCBieSBwYXJ0aXRpb24gaW5kZXgsIG9yIDAgaWYgbm90IGEgbGVhZiBwYXJ0 aXRpb24gKi8KKwlpbnQJCSAgICpsZWFmcGFydF9ydGlfbWFwIHBnX25vZGVfYXR0cihhcnJheV9z aXplKG5wYXJ0cykpOworCiAJLyogcmVsYXRpb24gT0lEIGJ5IHBhcnRpdGlvbiBpbmRleCwgb3Ig MCAqLwogCU9pZAkJICAgKnJlbGlkX21hcCBwZ19ub2RlX2F0dHIoYXJyYXlfc2l6ZShucGFydHMp KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmggYi9zcmMvaW5j bHVkZS91dGlscy9wbGFuY2FjaGUuaAppbmRleCA0NjA3MmQzMTFiMS4uMmQ4M2Y3ZDQ5MzAgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRl L3V0aWxzL3BsYW5jYWNoZS5oCkBAIC0xOCw2ICsxOCw4IEBACiAjaW5jbHVkZSAiYWNjZXNzL3R1 cGRlc2MuaCIKICNpbmNsdWRlICJsaWIvaWxpc3QuaCIKICNpbmNsdWRlICJub2Rlcy9wYXJhbXMu aCIKKyNpbmNsdWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCisjaW5jbHVkZSAibm9kZXMvcGxhbm5v ZGVzLmgiCiAjaW5jbHVkZSAidGNvcC9jbWR0YWcuaCIKICNpbmNsdWRlICJ1dGlscy9xdWVyeWVu dmlyb25tZW50LmgiCiAjaW5jbHVkZSAidXRpbHMvcmVzb3duZXIuaCIKQEAgLTEzOSwxMCArMTQx LDExIEBAIHR5cGVkZWYgc3RydWN0IENhY2hlZFBsYW5Tb3VyY2UKICAqIFRoZSByZWZlcmVuY2Ug Y291bnQgaW5jbHVkZXMgYm90aCB0aGUgbGluayBmcm9tIHRoZSBwYXJlbnQgQ2FjaGVkUGxhblNv dXJjZQogICogKGlmIGFueSksIGFuZCBhbnkgYWN0aXZlIHBsYW4gZXhlY3V0aW9ucywgc28gdGhl IHBsYW4gY2FuIGJlIGRpc2NhcmRlZAogICogZXhhY3RseSB3aGVuIHJlZmNvdW50IGdvZXMgdG8g emVyby4gIEJvdGggdGhlIHN0cnVjdCBpdHNlbGYgYW5kIHRoZQotICogc3Vic2lkaWFyeSBkYXRh IGxpdmUgaW4gdGhlIGNvbnRleHQgZGVub3RlZCBieSB0aGUgY29udGV4dCBmaWVsZC4KLSAqIFRo aXMgbWFrZXMgaXQgZWFzeSB0byBmcmVlIGEgbm8tbG9uZ2VyLW5lZWRlZCBjYWNoZWQgcGxhbi4g IChIb3dldmVyLAotICogaWYgaXNfb25lc2hvdCBpcyB0cnVlLCB0aGUgY29udGV4dCBkb2VzIG5v dCBiZWxvbmcgc29sZWx5IHRvIHRoZSBDYWNoZWRQbGFuCi0gKiBzbyBubyBmcmVlaW5nIGlzIHBv c3NpYmxlLikKKyAqIHN1YnNpZGlhcnkgZGF0YSwgZXhjZXB0IHRoZSBQbGFubmVkU3RtdHMgaW4g c3RtdF9saXN0IGxpdmUgaW4gdGhlIGNvbnRleHQKKyAqIGRlbm90ZWQgYnkgdGhlIGNvbnRleHQg ZmllbGQ7IHRoZSBQbGFubmVkU3RtdHMgbGl2ZSBpbiB0aGUgY29udGV4dCBkZW5vdGVkCisgKiBi eSBzdG10X2NvbnRleHQuICBTZXBhcmF0ZSBjb250ZXh0cyBtYWtlcyBpdCBlYXN5IHRvIGZyZWUg YSBuby1sb25nZXItbmVlZGVkCisgKiBjYWNoZWQgcGxhbi4gKEhvd2V2ZXIsIGlmIGlzX29uZXNo b3QgaXMgdHJ1ZSwgdGhlIGNvbnRleHQgZG9lcyBub3QgYmVsb25nCisgKiBzb2xlbHkgdG8gdGhl IENhY2hlZFBsYW4gc28gbm8gZnJlZWluZyBpcyBwb3NzaWJsZS4pCiAgKi8KIHR5cGVkZWYgc3Ry dWN0IENhY2hlZFBsYW4KIHsKQEAgLTE1MCw2ICsxNTMsNyBAQCB0eXBlZGVmIHN0cnVjdCBDYWNo ZWRQbGFuCiAJTGlzdAkgICAqc3RtdF9saXN0OwkJLyogbGlzdCBvZiBQbGFubmVkU3RtdHMgKi8K IAlib29sCQlpc19vbmVzaG90OwkJLyogaXMgaXQgYSAib25lc2hvdCIgcGxhbj8gKi8KIAlib29s CQlpc19zYXZlZDsJCS8qIGlzIENhY2hlZFBsYW4gaW4gYSBsb25nLWxpdmVkIGNvbnRleHQ/ICov CisJYm9vbAkJaXNfcmV1c2VkOwkJLyogaXMgaXQgYSByZXVzZWQgZ2VuZXJpYyBwbGFuPyAqLwog CWJvb2wJCWlzX3ZhbGlkOwkJLyogaXMgdGhlIHN0bXRfbGlzdCBjdXJyZW50bHkgdmFsaWQ/ICov CiAJT2lkCQkJcGxhblJvbGVJZDsJCS8qIFJvbGUgSUQgdGhlIHBsYW4gd2FzIGNyZWF0ZWQgZm9y ICovCiAJYm9vbAkJZGVwZW5kc09uUm9sZTsJLyogaXMgcGxhbiBzcGVjaWZpYyB0byB0aGF0IHJv bGU/ICovCkBAIC0xNTgsNiArMTYyLDEwIEBAIHR5cGVkZWYgc3RydWN0IENhY2hlZFBsYW4KIAlp bnQJCQlnZW5lcmF0aW9uOwkJLyogcGFyZW50J3MgZ2VuZXJhdGlvbiBudW1iZXIgZm9yIHRoaXMg cGxhbiAqLwogCWludAkJCXJlZmNvdW50OwkJLyogY291bnQgb2YgbGl2ZSByZWZlcmVuY2VzIHRv IHRoaXMgc3RydWN0ICovCiAJTWVtb3J5Q29udGV4dCBjb250ZXh0OwkJLyogY29udGV4dCBjb250 YWluaW5nIHRoaXMgQ2FjaGVkUGxhbiAqLworCU1lbW9yeUNvbnRleHQgc3RtdF9jb250ZXh0OyAv KiBjb250ZXh0IGNvbnRhaW5pbmcgdGhlIFBsYW5uZWRTdG10cyBpbgorCQkJCQkJCQkgKiBzdG10 X2xpc3QsIGJ1dCBub3QgdGhlIExpc3QgaXRzZWxmIHdoaWNoIGlzCisJCQkJCQkJCSAqIGluIHRo ZSBhYm92ZSBjb250ZXh0OyBOVUxMIGlmIGlzX29uZXNob3QgaXMKKwkJCQkJCQkJICogdHJ1ZS4g Ki8KIH0gQ2FjaGVkUGxhbjsKIAogLyoKQEAgLTIyMyw2ICsyMzEsMTAgQEAgZXh0ZXJuIENhY2hl ZFBsYW4gKkdldENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAkJCQkJ CQkJIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCiAJCQkJCQkJCSBSZXNvdXJjZU93bmVyIG93 bmVyLAogCQkJCQkJCQkgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOworZXh0ZXJuIFBsYW5u ZWRTdG10ICpVcGRhdGVDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCisJ CQkJCQkJCQkgaW50IHF1ZXJ5X2luZGV4LAorCQkJCQkJCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1 ZXJ5RW52KTsKKwogZXh0ZXJuIHZvaWQgUmVsZWFzZUNhY2hlZFBsYW4oQ2FjaGVkUGxhbiAqcGxh biwgUmVzb3VyY2VPd25lciBvd25lcik7CiAKIGV4dGVybiBib29sIENhY2hlZFBsYW5BbGxvd3NT aW1wbGVWYWxpZGl0eUNoZWNrKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCkBAIC0yMzUs NCArMjQ3LDM0IEBAIGV4dGVybiBib29sIENhY2hlZFBsYW5Jc1NpbXBseVZhbGlkKENhY2hlZFBs YW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiBleHRlcm4gQ2FjaGVkRXhwcmVzc2lvbiAqR2V0Q2FjaGVk RXhwcmVzc2lvbihOb2RlICpleHByKTsKIGV4dGVybiB2b2lkIEZyZWVDYWNoZWRFeHByZXNzaW9u KENhY2hlZEV4cHJlc3Npb24gKmNleHByKTsKIAorLyoKKyAqIENhY2hlZFBsYW5SZXF1aXJlc0xv Y2tpbmc6IHNob3VsZCB0aGUgZXhlY3V0b3IgYWNxdWlyZSBhZGRpdGlvbmFsIGxvY2tzPworICoK KyAqIElmIHRoZSBwbGFuIGlzIGEgc2F2ZWQgZ2VuZXJpYyBwbGFuLCB0aGUgZXhlY3V0b3IgbXVz dCBhY3F1aXJlIGxvY2tzIGZvcgorICogcmVsYXRpb25zIHRoYXQgYXJlIG5vdCBjb3ZlcmVkIGJ5 IEFjcXVpcmVFeGVjdXRvckxvY2tzKCksIHN1Y2ggYXMgcGFydGl0aW9ucworICogdGhhdCBhcmUg c3ViamVjdCB0byBpbml0aWFsIHJ1bnRpbWUgcHJ1bmluZy4KKyAqCisgKiBOb3RlOiBUaGVzZSBs b2NrcyBhcmUgdW5uZWNlc3NhcnkgaWYgdGhlIHBsYW4gaXMgZXhlY3V0ZWQgaW1tZWRpYXRlbHkg YWZ0ZXIKKyAqIGl0cyBjcmVhdGlvbiwgc2luY2UgdGhlIHBsYW5uZXIgd291bGQgaGF2ZSBhbHJl YWR5IGFjcXVpcmVkIHRoZW0uIEhvd2V2ZXIsCisgKiB3ZSBkbyBub3Qgb3B0aW1pemUgZm9yIHRo YXQgY2FzZS4KKyAqLworc3RhdGljIGlubGluZSBib29sCitDYWNoZWRQbGFuUmVxdWlyZXNMb2Nr aW5nKENhY2hlZFBsYW4gKmNwbGFuKQoreworCXJldHVybiAhY3BsYW4tPmlzX29uZXNob3QgJiYg Y3BsYW4tPmlzX3JldXNlZDsKK30KKworLyoKKyAqIENhY2hlZFBsYW5WYWxpZAorICogICAgICBS ZXR1cm5zIHdoZXRoZXIgYSBjYWNoZWQgZ2VuZXJpYyBwbGFuIGlzIHN0aWxsIHZhbGlkLgorICoK KyAqIEludm9rZWQgYnkgdGhlIGV4ZWN1dG9yIHRvIGNoZWNrIGlmIHRoZSBwbGFuIGhhcyBub3Qg YmVlbiBpbnZhbGlkYXRlZCBhZnRlcgorICogdGFraW5nIGxvY2tzIGR1cmluZyB0aGUgaW5pdGlh bGl6YXRpb24gb2YgdGhlIHBsYW4uCisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorQ2FjaGVkUGxh blZhbGlkKENhY2hlZFBsYW4gKmNwbGFuKQoreworCXJldHVybiBjcGxhbi0+aXNfdmFsaWQ7Cit9 CisKICNlbmRpZgkJCQkJCQkvKiBQTEFOQ0FDSEVfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvdXRpbHMvcG9ydGFsLmggYi9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaAppbmRleCAwYjYy MTQzYWY4Yi4uZGRlZTAzMWY1NTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRh bC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oCkBAIC0xMzgsNiArMTM4LDcgQEAg dHlwZWRlZiBzdHJ1Y3QgUG9ydGFsRGF0YQogCVF1ZXJ5Q29tcGxldGlvbiBxYzsJCQkvKiBjb21t YW5kIGNvbXBsZXRpb24gZGF0YSBmb3IgZXhlY3V0ZWQgcXVlcnkgKi8KIAlMaXN0CSAgICpzdG10 czsJCQkvKiBsaXN0IG9mIFBsYW5uZWRTdG10cyAqLwogCUNhY2hlZFBsYW4gKmNwbGFuOwkJCS8q IENhY2hlZFBsYW4sIGlmIHN0bXRzIGFyZSBmcm9tIG9uZSAqLworCUNhY2hlZFBsYW5Tb3VyY2Ug KnBsYW5zb3VyY2U7CS8qIENhY2hlZFBsYW5Tb3VyY2UsIGZvciBjcGxhbiAqLwogCiAJUGFyYW1M aXN0SW5mbyBwb3J0YWxQYXJhbXM7IC8qIHBhcmFtcyB0byBwYXNzIHRvIHF1ZXJ5ICovCiAJUXVl cnlFbnZpcm9ubWVudCAqcXVlcnlFbnY7IC8qIGVudmlyb25tZW50IGZvciBxdWVyeSAqLwpAQCAt MjQwLDcgKzI0MSw4IEBAIGV4dGVybiB2b2lkIFBvcnRhbERlZmluZVF1ZXJ5KFBvcnRhbCBwb3J0 YWwsCiAJCQkJCQkJICBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJCQkJCSAgQ29tbWFuZFRh ZyBjb21tYW5kVGFnLAogCQkJCQkJCSAgTGlzdCAqc3RtdHMsCi0JCQkJCQkJICBDYWNoZWRQbGFu ICpjcGxhbik7CisJCQkJCQkJICBDYWNoZWRQbGFuICpjcGxhbiwKKwkJCQkJCQkgIENhY2hlZFBs YW5Tb3VyY2UgKnBsYW5zb3VyY2UpOwogZXh0ZXJuIFBsYW5uZWRTdG10ICpQb3J0YWxHZXRQcmlt YXJ5U3RtdChQb3J0YWwgcG9ydGFsKTsKIGV4dGVybiB2b2lkIFBvcnRhbENyZWF0ZUhvbGRTdG9y ZShQb3J0YWwgcG9ydGFsKTsKIGV4dGVybiB2b2lkIFBvcnRhbEhhc2hUYWJsZURlbGV0ZUFsbCh2 b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2Vm aWxlIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZpbGUKaW5kZXggNzBm MjRlODQ2ZGEuLjNlZWIwOTdmZGU0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5 X2V4ZWN1dGlvbi9NYWtlZmlsZQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlv bi9NYWtlZmlsZQpAQCAtOCw3ICs4LDggQEAgT0JKUyA9IFwKIAlkZWxheV9leGVjdXRpb24ubwog CiBJU09MQVRJT04gPSBwYXJ0aXRpb24tYWRkaXRpb24gXAotCSAgICBwYXJ0aXRpb24tcmVtb3Zh bC0xCisJICAgIHBhcnRpdGlvbi1yZW1vdmFsLTEgXAorCQljYWNoZWQtcGxhbi1pbnZhbAogCiBp ZmRlZiBVU0VfUEdYUwogUEdfQ09ORklHID0gcGdfY29uZmlnCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9kZWxheV9leGVjdXRpb24uYyBiL3NyYy90ZXN0L21v ZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jCmluZGV4IDdiYzk3Zjg0YTFj Li44NDRhZjZiZDA2MSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRp b24vZGVsYXlfZXhlY3V0aW9uLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRp b24vZGVsYXlfZXhlY3V0aW9uLmMKQEAgLTEsMTQgKzEsMTggQEAKIC8qLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogICoKICAqIGRlbGF5X2V4ZWN1dGlvbi5jCi0gKgkJVGVzdCBtb2R1bGUgdG8gYWxsb3cgZGVs YXkgYmV0d2VlbiBwYXJzaW5nIGFuZCBleGVjdXRpb24gb2YgYSBxdWVyeS4KKyAqCQlUZXN0IG1v ZHVsZSB0byBpbnRyb2R1Y2UgZGVsYXkgYXQgdmFyaW91cyBwb2ludHMgZHVyaW5nIGV4ZWN1dGlv biBvZiBhCisgKgkJcXVlcnkgdG8gdGVzdCB0aGF0IGV4ZWN1dGlvbiBwcm9jZWVkcyBzYWZlbHkg aW4gbGlnaHQgb2YgY29uY3VycmVudAorICoJCWNoYW5nZXMuCiAgKgogICogVGhlIGRlbGF5IGlz IGltcGxlbWVudGVkIGJ5IHRha2luZyBhbmQgaW1tZWRpYXRlbHkgcmVsZWFzaW5nIGEgc3BlY2lm aWVkCiAgKiBhZHZpc29yeSBsb2NrLiAgSWYgYW5vdGhlciBwcm9jZXNzIGhhcyBwcmV2aW91c2x5 IHRha2VuIHRoYXQgbG9jaywgdGhlCiAgKiBjdXJyZW50IHByb2Nlc3Mgd2lsbCBiZSBibG9ja2Vk IHVudGlsIHRoZSBsb2NrIGlzIHJlbGVhc2VkOyBvdGhlcndpc2UsCiAgKiB0aGVyZSdzIG5vIGVm ZmVjdC4gIFRoaXMgYWxsb3dzIGFuIGlzb2xhdGlvbnRlc3RlciBzY3JpcHQgdG8gcmVsaWFibHkK LSAqIHRlc3QgYmVoYXZpb3JzIHdoZXJlIHNvbWUgc3BlY2lmaWVkIGFjdGlvbiBoYXBwZW5zIGlu IGFub3RoZXIgYmFja2VuZAotICogYmV0d2VlbiBwYXJzaW5nIGFuZCBleGVjdXRpb24gb2YgYW55 IGRlc2lyZWQgcXVlcnkuCisgKiB0ZXN0IGJlaGF2aW9ycyB3aGVyZSBzb21lIHNwZWNpZmllZCBh Y3Rpb24gaGFwcGVucyBpbiBhbm90aGVyIGJhY2tlbmQgaW4KKyAqIGEgY291cGxlIG9mIGNhc2Vz OiAxKSBiZXR3ZWVuIHBhcnNpbmcgYW5kIGV4ZWN1dGlvbiBvZiBhbnkgZGVzaXJlZCBxdWVyeQor ICogd2hlbiB1c2luZyB0aGUgcGxhbm5lcl9ob29rLCAyKSBiZXR3ZWVuIFJldmFsaWRhdGVDYWNo ZWRRdWVyeSgpIGFuZAorICogRXhlY3V0b3JTdGFydCgpIHdoZW4gdXNpbmcgdGhlIEV4ZWN1dG9y U3RhcnRfaG9vay4KICAqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMjAtMjAyNSwgUG9zdGdyZVNRTCBH bG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKICAqCkBAIC0yMiw2ICsyNiw3IEBACiAKICNpbmNsdWRl IDxsaW1pdHMuaD4KIAorI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAi b3B0aW1pemVyL3BsYW5uZXIuaCIKICNpbmNsdWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCiAjaW5j bHVkZSAidXRpbHMvZ3VjLmgiCkBAIC0zMiw5ICszNywxMSBAQCBQR19NT0RVTEVfTUFHSUM7CiAK IC8qIEdVQzogYWR2aXNvcnkgbG9jayBJRCB0byB1c2UuICBaZXJvIGRpc2FibGVzIHRoZSBmZWF0 dXJlLiAqLwogc3RhdGljIGludAlwb3N0X3BsYW5uaW5nX2xvY2tfaWQgPSAwOworc3RhdGljIGlu dAlleGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMDsKIAotLyogU2F2ZSBwcmV2aW91cyBwbGFubmVy IGhvb2sgdXNlciB0byBiZSBhIGdvb2QgY2l0aXplbiAqLworLyogU2F2ZSBwcmV2aW91cyBob29r IHVzZXJzIHRvIGJlIGEgZ29vZCBjaXRpemVuICovCiBzdGF0aWMgcGxhbm5lcl9ob29rX3R5cGUg cHJldl9wbGFubmVyX2hvb2sgPSBOVUxMOworc3RhdGljIEV4ZWN1dG9yU3RhcnRfaG9va190eXBl IHByZXZfRXhlY3V0b3JTdGFydF9ob29rID0gTlVMTDsKIAogCiAvKiBwbGFubmVyX2hvb2sgZnVu Y3Rpb24gdG8gcHJvdmlkZSB0aGUgZGVzaXJlZCBkZWxheSAqLwpAQCAtNzAsMTEgKzc3LDQ1IEBA IGRlbGF5X2V4ZWN1dGlvbl9wbGFubmVyKFF1ZXJ5ICpwYXJzZSwgY29uc3QgY2hhciAqcXVlcnlf c3RyaW5nLAogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8qIEV4ZWN1dG9yU3RhcnRfaG9vayBmdW5j dGlvbiB0byBwcm92aWRlIHRoZSBkZXNpcmVkIGRlbGF5ICovCitzdGF0aWMgYm9vbAorZGVsYXlf ZXhlY3V0aW9uX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3Mp Cit7CisJYm9vbAkJcGxhbl92YWxpZDsKKworCS8qIElmIGVuYWJsZWQsIGRlbGF5IGJ5IHRha2lu ZyBhbmQgcmVsZWFzaW5nIHRoZSBzcGVjaWZpZWQgbG9jayAqLworCWlmIChleGVjdXRvcl9zdGFy dF9sb2NrX2lkICE9IDApCisJeworCQlEaXJlY3RGdW5jdGlvbkNhbGwxKHBnX2Fkdmlzb3J5X2xv Y2tfaW50OCwKKwkJCQkJCQlJbnQ2NEdldERhdHVtKChpbnQ2NCkgZXhlY3V0b3Jfc3RhcnRfbG9j a19pZCkpOworCQlEaXJlY3RGdW5jdGlvbkNhbGwxKHBnX2Fkdmlzb3J5X3VubG9ja19pbnQ4LAor CQkJCQkJCUludDY0R2V0RGF0dW0oKGludDY0KSBleGVjdXRvcl9zdGFydF9sb2NrX2lkKSk7CisK KwkJLyoKKwkJICogRW5zdXJlIHRoYXQgd2Ugbm90aWNlIGFueSBwZW5kaW5nIGludmFsaWRhdGlv bnMsIHNpbmNlIHRoZSBhZHZpc29yeQorCQkgKiBsb2NrIGZ1bmN0aW9ucyBkb24ndCBkbyB0aGlz LgorCQkgKi8KKwkJQWNjZXB0SW52YWxpZGF0aW9uTWVzc2FnZXMoKTsKKwl9CisKKwkvKiBOb3cg c3RhcnQgdGhlIGV4ZWN1dG9yLCBwb3NzaWJseSB2aWEgYSBwcmV2aW91cyBob29rIHVzZXIgKi8K KwlpZiAocHJldl9FeGVjdXRvclN0YXJ0X2hvb2spCisJCXBsYW5fdmFsaWQgPSBwcmV2X0V4ZWN1 dG9yU3RhcnRfaG9vayhxdWVyeURlc2MsIGVmbGFncyk7CisJZWxzZQorCQlwbGFuX3ZhbGlkID0g c3RhbmRhcmRfRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CisKKwlpZiAoZXhlY3V0 b3Jfc3RhcnRfbG9ja19pZCAhPSAwKQorCQllbG9nKE5PVElDRSwgIkZpbmlzaGVkIEV4ZWN1dG9y U3RhcnQoKTogQ2FjaGVkUGxhbiBpcyAlcyIsCisJCQkgcGxhbl92YWxpZCA/ICJ2YWxpZCIgOiAi bm90IHZhbGlkIik7CisKKwlyZXR1cm4gcGxhbl92YWxpZDsKK30KKwogLyogTW9kdWxlIGxvYWQg ZnVuY3Rpb24gKi8KIHZvaWQKIF9QR19pbml0KHZvaWQpCiB7Ci0JLyogU2V0IHVwIHRoZSBHVUMg dG8gY29udHJvbCB3aGljaCBsb2NrIGlzIHVzZWQgKi8KKwkvKiBTZXQgdXAgR1VDcyB0byBjb250 cm9sIHdoaWNoIGxvY2sgaXMgdXNlZCAqLwogCURlZmluZUN1c3RvbUludFZhcmlhYmxlKCJkZWxh eV9leGVjdXRpb24ucG9zdF9wbGFubmluZ19sb2NrX2lkIiwKIAkJCQkJCQkiU2V0cyB0aGUgYWR2 aXNvcnkgbG9jayBJRCB0byBiZSBsb2NrZWQvdW5sb2NrZWQgYWZ0ZXIgcGxhbm5pbmcuIiwKIAkJ CQkJCQkiWmVybyBkaXNhYmxlcyB0aGUgZGVsYXkuIiwKQEAgLTg2LDEwICsxMjcsMjIgQEAgX1BH X2luaXQodm9pZCkKIAkJCQkJCQlOVUxMLAogCQkJCQkJCU5VTEwsCiAJCQkJCQkJTlVMTCk7Ci0K KwlEZWZpbmVDdXN0b21JbnRWYXJpYWJsZSgiZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0 X2xvY2tfaWQiLAorCQkJCQkJCSJTZXRzIHRoZSBhZHZpc29yeSBsb2NrIElEIHRvIGJlIGxvY2tl ZC91bmxvY2tlZCBiZWZvcmUgc3RhcnRpbmcgZXhlY3V0aW9uLiIsCisJCQkJCQkJIlplcm8gZGlz YWJsZXMgdGhlIGRlbGF5LiIsCisJCQkJCQkJJmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQsCisJCQkJ CQkJMCwKKwkJCQkJCQkwLCBJTlRfTUFYLAorCQkJCQkJCVBHQ19VU0VSU0VULAorCQkJCQkJCTAs CisJCQkJCQkJTlVMTCwKKwkJCQkJCQlOVUxMLAorCQkJCQkJCU5VTEwpOwogCU1hcmtHVUNQcmVm aXhSZXNlcnZlZCgiZGVsYXlfZXhlY3V0aW9uIik7CiAKLQkvKiBJbnN0YWxsIG91ciBob29rICov CisJLyogSW5zdGFsbCBvdXIgaG9va3MuICovCiAJcHJldl9wbGFubmVyX2hvb2sgPSBwbGFubmVy X2hvb2s7CiAJcGxhbm5lcl9ob29rID0gZGVsYXlfZXhlY3V0aW9uX3BsYW5uZXI7CisJcHJldl9F eGVjdXRvclN0YXJ0X2hvb2sgPSBFeGVjdXRvclN0YXJ0X2hvb2s7CisJRXhlY3V0b3JTdGFydF9o b29rID0gZGVsYXlfZXhlY3V0aW9uX0V4ZWN1dG9yU3RhcnQ7CiB9CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9leHBlY3RlZC9jYWNoZWQtcGxhbi1pbnZhbC5v dXQgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9leHBlY3RlZC9jYWNoZWQtcGxh bi1pbnZhbC5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjViZmIy YjMzYjM5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRp b24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4taW52YWwub3V0CkBAIC0wLDAgKzEsMjgyIEBACitQYXJz ZWQgdGVzdCBzcGVjIHdpdGggMiBzZXNzaW9ucworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFw cmVwIHMybG9jayBzMWV4ZWMgczJkcm9waSBzMnVubG9jaworc3RlcCBzMXByZXA6IFNFVCBwbGFu X2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisJCSAgUFJFUEFSRSBxIEFTIFNFTEVD VCAqIEZST00gZm9vdiBXSEVSRSBhID0gJDEgRk9SIFVQREFURTsKKwkJICBFWFBMQUlOIChDT1NU UyBPRkYpIEVYRUNVVEUgcSAoMSk7CitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorTG9ja1Jvd3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CisgIC0+ICBBcHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAg ICAgU3VicGxhbnMgUmVtb3ZlZDogMiAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAtPiAg Qml0bWFwIEhlYXAgU2NhbiBvbiBmb28xMl8xIGZvb18xICAgCisgICAgICAgICAgICAgIFJlY2hl Y2sgQ29uZDogKGEgPSAkMSkgICAgICAgICAgICAKKyAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJ bmRleCBTY2FuIG9uIGZvbzEyXzFfYQorICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAo YSA9ICQxKSAgICAgICAgCisoNyByb3dzKQorCitzdGVwIHMybG9jazogU0VMRUNUIHBnX2Fkdmlz b3J5X2xvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfbG9jaworLS0tLS0tLS0tLS0tLS0tLQorICAg ICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzogTE9BRCAnZGVsYXlfZXhlY3V0 aW9uJzsKKwkJICBTRVQgZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAx MjM0NTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcSAoMSk7IDx3YWl0aW5nIC4u Lj4KK3N0ZXAgczJkcm9waTogRFJPUCBJTkRFWCBmb28xMl8xX2E7CitzdGVwIHMydW5sb2NrOiBT RUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X3VubG9jaworLS0t LS0tLS0tLS0tLS0tLS0tCit0ICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMWV4 ZWM6IDwuLi4gY29tcGxldGVkPgorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQo KTogQ2FjaGVkUGxhbiBpcyBub3QgdmFsaWQKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRv clN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xvY2tS b3dzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgLT4gIEFwcGVuZCAgICAgICAgICAg ICAgICAgICAgICAgICAKKyAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDogMiAgICAgICAgICAKKyAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzEyXzEgZm9vXzEKKyAgICAgICAgICAgICAgRmlsdGVy OiAoYSA9ICQxKSAgICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMx cHJlcDIgczJsb2NrIHMxZXhlYzIgczJkcm9waSBzMnVubG9jaworc3RlcCBzMXByZXAyOiBTRVQg cGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworCQkgIFBSRVBBUkUgcTIgQVMg U0VMRUNUICogRlJPTSBmb292IFdIRVJFIGEgPSBvbmUoKSBvciBhID0gdHdvKCk7CisJCSAgRVhQ TEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEyOworczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1 dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBcHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKyAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gZm9vMTJfMSBmb29fMSAgICAg ICAgICAgCisgICAgICAgIFJlY2hlY2sgQ29uZDogKChhID0gb25lKCkpIE9SIChhID0gdHdvKCkp KQorICAgICAgICAtPiAgQml0bWFwT3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAg ICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGZvbzEyXzFfYSAgCisgICAgICAg ICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gb25lKCkpICAgICAgIAorICAgICAgICAgICAg ICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gZm9vMTJfMV9hICAKKyAgICAgICAgICAgICAgICAg ICAgSW5kZXggQ29uZDogKGEgPSB0d28oKSkgICAgICAgCisgIC0+ICBTZXEgU2NhbiBvbiBmb28x Ml8yIGZvb18yICAgICAgICAgICAgICAgICAgIAorICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgp KSBPUiAoYSA9IHR3bygpKSkgICAgICAKKygxMSByb3dzKQorCitzdGVwIHMybG9jazogU0VMRUNU IHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfbG9jaworLS0tLS0tLS0tLS0t LS0tLQorICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzI6IExPQUQgJ2Rl bGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9s b2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEyOyA8d2Fp dGluZyAuLi4+CitzdGVwIHMyZHJvcGk6IERST1AgSU5ERVggZm9vMTJfMV9hOworc3RlcCBzMnVu bG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jaygxMjM0NSk7CitwZ19hZHZpc29yeV91bmxv Y2sKKy0tLS0tLS0tLS0tLS0tLS0tLQordCAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0 ZXAgczFleGVjMjogPC4uLiBjb21wbGV0ZWQ+CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0 b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIG5vdCB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVk IEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCitBcHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAgICAgICAKKyAgLT4g IFNlcSBTY2FuIG9uIGZvbzEyXzEgZm9vXzEgICAgICAgICAgICAgCisgICAgICAgIEZpbHRlcjog KChhID0gb25lKCkpIE9SIChhID0gdHdvKCkpKQorICAtPiAgU2VxIFNjYW4gb24gZm9vMTJfMiBm b29fMiAgICAgICAgICAgICAKKyAgICAgICAgRmlsdGVyOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0 d28oKSkpCisoNiByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMXByZXAzIHMybG9j ayBzMWV4ZWMzIHMyZHJvcGkgczJ1bmxvY2sKK3N0ZXAgczFwcmVwMzogU0VUIHBsYW5fY2FjaGVf bW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBQUkVQQVJFIHEzIEFTIFVQREFURSBmb292 IFNFVCBhID0gYSBXSEVSRSBhID0gb25lKCkgb3IgYSA9IHR3bygpOworCQkgIEVYUExBSU4gKENP U1RTIE9GRikgRVhFQ1VURSBxMzsKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0 KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0 YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRv clN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTmVzdGVkIExvb3Ag ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgLT4g IEFwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CisgICAgICAgIFN1YnBsYW5zIFJlbW92ZWQ6IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBmb28xMl8xIGZvb18xICAg ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgUmVjaGVjayBDb25kOiAoKGEgPSBvbmUoKSkg T1IgKGEgPSB0d28oKSkpICAgICAgCisgICAgICAgICAgICAgIC0+ICBCaXRtYXBPciAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAtPiAgQml0 bWFwIEluZGV4IFNjYW4gb24gZm9vMTJfMV9hICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgSW5kZXggQ29uZDogKGEgPSBvbmUoKSkgICAgICAgICAgICAgCisgICAgICAgICAgICAg ICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBmb28xMl8xX2EgICAgICAgIAorICAgICAg ICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9IHR3bygpKSAgICAgICAgICAgICAK KyAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzEyXzIgZm9vXzIgICAgICAgICAgICAgICAgICAg ICAgICAgCisgICAgICAgICAgICAgIEZpbHRlcjogKChhID0gb25lKCkpIE9SIChhID0gdHdvKCkp KSAgICAgICAgICAgIAorICAtPiAgTWF0ZXJpYWxpemUgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIEFwcGVuZCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIFN1YnBsYW5zIFJlbW92 ZWQ6IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAtPiAgQml0 bWFwIEhlYXAgU2NhbiBvbiBiYXIxIGJhcl8xICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg ICAgICAgUmVjaGVjayBDb25kOiAoYSA9IG9uZSgpKSAgICAgICAgICAgICAgICAgCisgICAgICAg ICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBiYXIxX2FfaWR4ICAgICAgIAor ICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9IG9uZSgpKSAgICAgICAg ICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCitVcGRhdGUgb24gYmFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorICBVcGRhdGUgb24gYmFyMSBiYXJfMSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgLT4gIE5lc3RlZCBMb29wICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIC0+ICBBcHBlbmQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBT dWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg ICAgICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gZm9vMTJfMSBmb29fMSAgICAgICAgICAgCisg ICAgICAgICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDogKChhID0gb25lKCkpIE9SIChhID0gdHdv KCkpKQorICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwT3IgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBT Y2FuIG9uIGZvbzEyXzFfYSAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4 IENvbmQ6IChhID0gb25lKCkpICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg Qml0bWFwIEluZGV4IFNjYW4gb24gZm9vMTJfMV9hICAKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSW5kZXggQ29uZDogKGEgPSB0d28oKSkgICAgICAgCisgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBmb28xMl8yIGZvb18yICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg ICAgICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkgICAgICAKKyAg ICAgICAgLT4gIE1hdGVyaWFsaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCisgICAgICAgICAgICAgIC0+ICBBcHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAg ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBIZWFwIFNj YW4gb24gYmFyMSBiYXJfMSAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgIFJlY2hl Y2sgQ29uZDogKGEgPSBvbmUoKSkgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gYmFyMV9hX2lkeCAKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgPSBvbmUoKSkgICAgICAgCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorVXBk YXRlIG9uIGZvbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKyAgVXBkYXRlIG9uIGZvbzEyXzEgZm9vXzEgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCisgIFVwZGF0ZSBvbiBmb28xMl8yIGZvb18yICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorICAtPiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDogMSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBT Y2FuIG9uIGZvbzEyXzEgZm9vXzEgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBSZWNo ZWNrIENvbmQ6ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkgICAgICAKKyAgICAgICAgICAg ICAgLT4gIEJpdG1hcE9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAg ICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBmb28xMl8xX2EgICAgICAg IAorICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9IG9uZSgpKSAgICAg ICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGZv bzEyXzFfYSAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChh ID0gdHdvKCkpICAgICAgICAgICAgIAorICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMTJfMiBm b29fMiAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgRmlsdGVyOiAoKGEg PSBvbmUoKSkgT1IgKGEgPSB0d28oKSkpICAgICAgICAgICAgCisoNTYgcm93cykKKworc3RlcCBz MmxvY2s6IFNFTEVDVCBwZ19hZHZpc29yeV9sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X2xvY2sK Ky0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMWV4 ZWMzOiBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhl Y3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhF Q1VURSBxMzsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMmRyb3BpOiBEUk9QIElOREVYIGZvbzEyXzFf YTsKK3N0ZXAgczJ1bmxvY2s6IFNFTEVDVCBwZ19hZHZpc29yeV91bmxvY2soMTIzNDUpOworcGdf YWR2aXNvcnlfdW5sb2NrCistLS0tLS0tLS0tLS0tLS0tLS0KK3QgICAgICAgICAgICAgICAgIAor KDEgcm93KQorCitzdGVwIHMxZXhlYzM6IDwuLi4gY29tcGxldGVkPgorczE6IE5PVElDRTogIEZp bmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyBub3QgdmFsaWQKK3MxOiBOT1RJ Q0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQKK3MxOiBO T1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQKK3Mx OiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQK K1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KK05lc3RlZCBMb29wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKyAgLT4gIEFwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDogMSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZv bzEyXzEgZm9vXzEgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgRmlsdGVy OiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0d28oKSkpICAgICAgICAgICAKKyAgICAgICAgLT4gIFNl cSBTY2FuIG9uIGZvbzEyXzIgZm9vXzIgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg ICAgICAgRmlsdGVyOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0d28oKSkpICAgICAgICAgICAKKyAg LT4gIE1hdGVyaWFsaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKyAgICAgICAgLT4gIEFwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKyAgICAgICAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDogMSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gYmFy MSBiYXJfMSAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgUmVjaGVjayBDb25kOiAo YSA9IG9uZSgpKSAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1h cCBJbmRleCBTY2FuIG9uIGJhcjFfYV9pZHggICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgSW5kZXggQ29uZDogKGEgPSBvbmUoKSkgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1VwZGF0ZSBvbiBi YXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgVXBk YXRlIG9uIGJhcjEgYmFyXzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK KyAgLT4gIE5lc3RlZCBMb29wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKyAgICAgICAgLT4gIEFwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKyAgICAgICAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDogMSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzEyXzEg Zm9vXzEgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAoKGEg PSBvbmUoKSkgT1IgKGEgPSB0d28oKSkpICAgICAKKyAgICAgICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIGZvbzEyXzIgZm9vXzIgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAg RmlsdGVyOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0d28oKSkpICAgICAKKyAgICAgICAgLT4gIE1h dGVyaWFsaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg ICAgICAgLT4gIEFwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAg ICAgICAgICAgICAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDogMSAgICAgICAgICAgICAgICAgICAg ICAKKyAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gYmFyMSBiYXJf MSAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUmVjaGVjayBDb25kOiAoYSA9IG9u ZSgpKSAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRl eCBTY2FuIG9uIGJhcjFfYV9pZHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKGEgPSBvbmUoKSkgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1VwZGF0ZSBvbiBmb28gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgVXBkYXRlIG9uIGZvbzEy XzEgZm9vXzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgVXBkYXRlIG9u IGZvbzEyXzIgZm9vXzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgLT4g IEFwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK KyAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDogMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKyAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzEyXzEgZm9vXzEgICAgICAgICAgICAg ICAgICAgICAgICAKKyAgICAgICAgICAgICAgRmlsdGVyOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0 d28oKSkpICAgICAgICAgICAKKyAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzEyXzIgZm9vXzIg ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgRmlsdGVyOiAoKGEgPSBvbmUo KSkgT1IgKGEgPSB0d28oKSkpICAgICAgICAgICAKKyg0MSByb3dzKQorCisKK3N0YXJ0aW5nIHBl cm11dGF0aW9uOiBzMXByZXA0IHMybG9jayBzMWV4ZWM0IHMyZHJvcGkgczJ1bmxvY2sKK3N0ZXAg czFwcmVwNDogU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBT RVQgZW5hYmxlX3NlcXNjYW4gVE8gb2ZmOworCQkgIFBSRVBBUkUgcTQgQVMgU0VMRUNUICogRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMSkgV0hFUkUgRVhJU1RTIChTRUxFQ1QgKiBGUk9NIGZvb3Yg V0hFUkUgYSA9ICQxIEZPUiBVUERBVEUpOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VU RSBxNCAoMSk7CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQ bGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUmVzdWx0ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIE9uZS1UaW1lIEZpbHRlcjog KEluaXRQbGFuIDEpLmNvbDEgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgSW5pdFBsYW4g MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAg IC0+ICBMb2NrUm93cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCisgICAgICAgICAgLT4gIEFwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAyICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC0+ICBJbmRleCBTY2FuIHVzaW5n IGZvbzEyXzFfYSBvbiBmb28xMl8xIGZvb18xCisgICAgICAgICAgICAgICAgICAgICAgSW5kZXgg Q29uZDogKGEgPSAkMSkgICAgICAgICAgICAgICAgICAgICAKKyAgLT4gIEZ1bmN0aW9uIFNjYW4g b24gZ2VuZXJhdGVfc2VyaWVzICAgICAgICAgICAgICAgICAgICAgICAgIAorKDkgcm93cykKKwor c3RlcCBzMmxvY2s6IFNFTEVDVCBwZ19hZHZpc29yeV9sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5 X2xvY2sKKy0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3Rl cCBzMWV4ZWM0OiBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRp b24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9G RikgRVhFQ1VURSBxNCAoMSk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczJkcm9waTogRFJPUCBJTkRF WCBmb28xMl8xX2E7CitzdGVwIHMydW5sb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDEy MzQ1KTsKK3BnX2Fkdmlzb3J5X3VubG9jaworLS0tLS0tLS0tLS0tLS0tLS0tCit0ICAgICAgICAg ICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMWV4ZWM0OiA8Li4uIGNvbXBsZXRlZD4KK3MxOiBO T1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgbm90IHZhbGlk CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIHZh bGlkCitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUmVzdWx0ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIE9uZS1UaW1lIEZpbHRlcjogKEluaXRQ bGFuIDEpLmNvbDEgICAgICAgICAKKyAgSW5pdFBsYW4gMSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorICAgIC0+ICBMb2NrUm93cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CisgICAgICAgICAgLT4gIEFwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg ICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAyICAgICAgICAgIAorICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBmb28xMl8xIGZvb18xCisgICAgICAgICAgICAgICAgICAgICAgRGlzYWJs ZWQ6IHRydWUgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXI6IChhID0gJDEp ICAgICAgIAorICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgICAgICAgCiso MTAgcm93cykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24v bWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9tZXNvbi5idWls ZAppbmRleCBiNTM0ODhmNzZkMi4uNTgxNTliZmM1NzQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21v ZHVsZXMvZGVsYXlfZXhlY3V0aW9uL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L21vZHVsZXMv ZGVsYXlfZXhlY3V0aW9uL21lc29uLmJ1aWxkCkBAIC0yNCw2ICsyNCw3IEBAIHRlc3RzICs9IHsK ICAgICAnc3BlY3MnOiBbCiAgICAgICAncGFydGl0aW9uLWFkZGl0aW9uJywKICAgICAgICdwYXJ0 aXRpb24tcmVtb3ZhbC0xJywKKyAgICAgICdjYWNoZWQtcGxhbi1pbnZhbCcsCiAgICAgXSwKICAg fSwKIH0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL3NwZWNz L2NhY2hlZC1wbGFuLWludmFsLnNwZWMgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlv bi9zcGVjcy9jYWNoZWQtcGxhbi1pbnZhbC5zcGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi5mMjdlOGZiNTIxYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21v ZHVsZXMvZGVsYXlfZXhlY3V0aW9uL3NwZWNzL2NhY2hlZC1wbGFuLWludmFsLnNwZWMKQEAgLTAs MCArMSw4MCBAQAorIyBUZXN0IHRvIGNoZWNrIHRoYXQgaW52YWxpZGF0aW9uIG9mIGNhY2hlZCBn ZW5lcmljIHBsYW5zIGR1cmluZyBFeGVjdXRvclN0YXJ0CisjIGNvcnJlY3RseSB0cmlnZ2VycyBy ZXBsYW5uaW5nIGFuZCByZS1leGVjdXRpb24uCisKK3NldHVwCit7CisgIENSRUFURSBUQUJMRSBm b28gKGEgaW50LCBiIHRleHQpIFBBUlRJVElPTiBCWSBMSVNUKGEpOworICBDUkVBVEUgVEFCTEUg Zm9vMTIgUEFSVElUSU9OIE9GIGZvbyBGT1IgVkFMVUVTIElOICgxLCAyKSBQQVJUSVRJT04gQlkg TElTVCAoYSk7CisgIENSRUFURSBUQUJMRSBmb28xMl8xIFBBUlRJVElPTiBPRiBmb28xMiBGT1Ig VkFMVUVTIElOICgxKTsKKyAgQ1JFQVRFIFRBQkxFIGZvbzEyXzIgUEFSVElUSU9OIE9GIGZvbzEy IEZPUiBWQUxVRVMgSU4gKDIpOworICBDUkVBVEUgSU5ERVggZm9vMTJfMV9hIE9OIGZvbzEyXzEg KGEpOworICBDUkVBVEUgVEFCTEUgZm9vMyBQQVJUSVRJT04gT0YgZm9vIEZPUiBWQUxVRVMgSU4g KDMpOworICBDUkVBVEUgVklFVyBmb292IEFTIFNFTEVDVCAqIEZST00gZm9vOworICBDUkVBVEUg RlVOQ1RJT04gb25lICgpIFJFVFVSTlMgaW50IEFTICQkIEJFR0lOIFJFVFVSTiAxOyBFTkQ7ICQk IExBTkdVQUdFIFBMUEdTUUwgU1RBQkxFOworICBDUkVBVEUgRlVOQ1RJT04gdHdvICgpIFJFVFVS TlMgaW50IEFTICQkIEJFR0lOIFJFVFVSTiAyOyBFTkQ7ICQkIExBTkdVQUdFIFBMUEdTUUwgU1RB QkxFOworICBDUkVBVEUgVEFCTEUgYmFyIChhIGludCwgYiB0ZXh0KSBQQVJUSVRJT04gQlkgTElT VChhKTsKKyAgQ1JFQVRFIFRBQkxFIGJhcjEgUEFSVElUSU9OIE9GIGJhciBGT1IgVkFMVUVTIElO ICgxKTsKKyAgQ1JFQVRFIElOREVYIE9OIGJhcjEoYSk7CisgIENSRUFURSBUQUJMRSBiYXIyIFBB UlRJVElPTiBPRiBiYXIgRk9SIFZBTFVFUyBJTiAoMik7CisgIENSRUFURSBSVUxFIHVwZGF0ZV9m b28gQVMgT04gVVBEQVRFIFRPIGZvbyBETyBBTFNPIFVQREFURSBiYXIgU0VUIGEgPSBhIFdIRVJF IGEgPSBvbmUoKTsKKyAgQ1JFQVRFIFJVTEUgdXBkYXRlX2JhciBBUyBPTiBVUERBVEUgVE8gYmFy IERPIEFMU08gU0VMRUNUIDE7Cit9CisKK3RlYXJkb3duCit7CisgIERST1AgVklFVyBmb292Owor ICBEUk9QIFJVTEUgdXBkYXRlX2ZvbyBPTiBmb287CisgIERST1AgVEFCTEUgZm9vLCBiYXI7Cisg IERST1AgRlVOQ1RJT04gb25lKCksIHR3bygpOworfQorCitzZXNzaW9uICJzMSIKKyMgQXBwZW5k IHdpdGggcnVuLXRpbWUgcHJ1bmluZworc3RlcCAiczFwcmVwIiAgIHsgU0VUIHBsYW5fY2FjaGVf bW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBQUkVQQVJFIHEgQVMgU0VMRUNUICogRlJP TSBmb292IFdIRVJFIGEgPSAkMSBGT1IgVVBEQVRFOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikg RVhFQ1VURSBxICgxKTsgfQorCisjIEFub3RoZXIgY2FzZSB3aXRoIEFwcGVuZCB3aXRoIHJ1bi10 aW1lIHBydW5pbmcKK3N0ZXAgInMxcHJlcDIiICAgeyBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9y Y2VfZ2VuZXJpY19wbGFuOworCQkgIFBSRVBBUkUgcTIgQVMgU0VMRUNUICogRlJPTSBmb292IFdI RVJFIGEgPSBvbmUoKSBvciBhID0gdHdvKCk7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVD VVRFIHEyOyB9CisKKyMgQ2FzZSB3aXRoIGEgcnVsZSBhZGRpbmcgYW5vdGhlciBxdWVyeQorc3Rl cCAiczFwcmVwMyIgICB7IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47 CisJCSAgUFJFUEFSRSBxMyBBUyBVUERBVEUgZm9vdiBTRVQgYSA9IGEgV0hFUkUgYSA9IG9uZSgp IG9yIGEgPSB0d28oKTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTM7IH0KKwor IyBBbm90aGVyIGNhc2Ugd2l0aCBBcHBlbmQgd2l0aCBydW4tdGltZSBwcnVuaW5nIGluIGEgc3Vi cXVlcnkKK3N0ZXAgInMxcHJlcDQiICAgeyBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2Vu ZXJpY19wbGFuOworCQkgIFNFVCBlbmFibGVfc2Vxc2NhbiBUTyBvZmY7CisJCSAgUFJFUEFSRSBx NCBBUyBTRUxFQ1QgKiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxKSBXSEVSRSBFWElTVFMgKFNF TEVDVCAqIEZST00gZm9vdiBXSEVSRSBhID0gJDEgRk9SIFVQREFURSk7CisJCSAgRVhQTEFJTiAo Q09TVFMgT0ZGKSBFWEVDVVRFIHE0ICgxKTsgfQorCisjIEV4ZWN1dGVzIGEgZ2VuZXJpYyBwbGFu CitzdGVwICJzMWV4ZWMiCXsgTE9BRCAnZGVsYXlfZXhlY3V0aW9uJzsKKwkJICBTRVQgZGVsYXlf ZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAxMjM0NTsKKwkJICBFWFBMQUlOIChD T1NUUyBPRkYpIEVYRUNVVEUgcSAoMSk7IH0KK3N0ZXAgInMxZXhlYzIiCXsgTE9BRCAnZGVsYXlf ZXhlY3V0aW9uJzsKKwkJICBTRVQgZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tf aWQgPSAxMjM0NTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTI7IH0KK3N0ZXAg InMxZXhlYzMiCXsgTE9BRCAnZGVsYXlfZXhlY3V0aW9uJzsKKwkJICBTRVQgZGVsYXlfZXhlY3V0 aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAxMjM0NTsKKwkJICBFWFBMQUlOIChDT1NUUyBP RkYpIEVYRUNVVEUgcTM7IH0KK3N0ZXAgInMxZXhlYzQiCXsgTE9BRCAnZGVsYXlfZXhlY3V0aW9u JzsKKwkJICBTRVQgZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAxMjM0 NTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTQgKDEpOyB9CisKK3Nlc3Npb24g InMyIgorc3RlcCAiczJsb2NrIgl7IFNFTEVDVCBwZ19hZHZpc29yeV9sb2NrKDEyMzQ1KTsgfQor c3RlcCAiczJ1bmxvY2siCXsgU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jaygxMjM0NSk7IH0KK3N0 ZXAgInMyZHJvcGkiCXsgRFJPUCBJTkRFWCBmb28xMl8xX2E7IH0KKworIyBXaGlsZSAiczFleGVj IiwgZXRjLiB3YWl0IHRvIGFjcXVpcmUgdGhlIGFkdmlzb3J5IGxvY2ssICJzMmRyb3AiIGlzIGFi bGUgdG8KKyMgZHJvcCB0aGUgaW5kZXggYmVpbmcgdXNlZCBpbiB0aGUgY2FjaGVkIHBsYW4uICBX aGVuICJzMWV4ZWMiIGlzIHRoZW4KKyMgdW5ibG9ja2VkIGFuZCBpbml0aWFsaXplcyB0aGUgY2Fj aGVkIHBsYW4gZm9yIGV4ZWN1dGlvbiwgaXQgZGV0ZWN0cyB0aGUKKyMgY29uY3VycmVudCBpbmRl eCBkcm9wIGFuZCBjYXVzZXMgdGhlIGNhY2hlZCBwbGFuIHRvIGJlIGRpc2NhcmRlZCBhbmQKKyMg cmVjcmVhdGVkIHdpdGhvdXQgdGhlIGluZGV4LgorcGVybXV0YXRpb24gInMxcHJlcCIgInMybG9j ayIgInMxZXhlYyIgInMyZHJvcGkiICJzMnVubG9jayIKK3Blcm11dGF0aW9uICJzMXByZXAyIiAi czJsb2NrIiAiczFleGVjMiIgInMyZHJvcGkiICJzMnVubG9jayIKK3Blcm11dGF0aW9uICJzMXBy ZXAzIiAiczJsb2NrIiAiczFleGVjMyIgInMyZHJvcGkiICJzMnVubG9jayIKK3Blcm11dGF0aW9u ICJzMXByZXA0IiAiczJsb2NrIiAiczFleGVjNCIgInMyZHJvcGkiICJzMnVubG9jayIKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dCBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dAppbmRleCBmMDcwN2U3 ZjdlYS4uN2MwYzQwMTE3YWUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cGFydGl0aW9uX3BydW5lLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRp dGlvbl9wcnVuZS5vdXQKQEAgLTQ0NjksMyArNDQ2OSw0NyBAQCBkcm9wIHRhYmxlIGhwX2NvbnRy YWRpY3RfdGVzdDsKIGRyb3Agb3BlcmF0b3IgY2xhc3MgcGFydF90ZXN0X2ludDRfb3BzMiB1c2lu ZyBoYXNoOwogZHJvcCBvcGVyYXRvciA9PT0oaW50NCwgaW50NCk7CiBkcm9wIGZ1bmN0aW9uIGV4 cGxhaW5fYW5hbHl6ZSh0ZXh0KTsKKy0tIFJ1bnRpbWUgcHJ1bmluZyBvbiBVUERBVEUgdXNpbmcg V0lUSCBDSEVDSyBPUFRJT05TIGFuZCBSRVRVUk5JTkcKK2NyZWF0ZSB0YWJsZSBwYXJ0X2FiYyAo YSBpbnQsIGIgdGV4dCwgYyBib29sKSBwYXJ0aXRpb24gYnkgbGlzdCAoYSk7CitjcmVhdGUgdGFi bGUgcGFydF9hYmNfMSAoYiB0ZXh0LCBhIGludCwgYyBib29sKTsKK2NyZWF0ZSB0YWJsZSBwYXJ0 X2FiY18yIChhIGludCwgYyBib29sLCBiIHRleHQpOworYWx0ZXIgdGFibGUgcGFydF9hYmMgYXR0 YWNoIHBhcnRpdGlvbiBwYXJ0X2FiY18xIGZvciB2YWx1ZXMgaW4gKDEpOworYWx0ZXIgdGFibGUg cGFydF9hYmMgYXR0YWNoIHBhcnRpdGlvbiBwYXJ0X2FiY18yIGZvciB2YWx1ZXMgaW4gKDIpOwor aW5zZXJ0IGludG8gcGFydF9hYmMgdmFsdWVzICgxLCAnYicsIHRydWUpOworaW5zZXJ0IGludG8g cGFydF9hYmMgdmFsdWVzICgyLCAnYycsIHRydWUpOworY3JlYXRlIHZpZXcgcGFydF9hYmNfdmll dyBhcyBzZWxlY3QgKiBmcm9tIHBhcnRfYWJjIHdoZXJlIGIgPD4gJ2EnIHdpdGggY2hlY2sgb3B0 aW9uOworcHJlcGFyZSB1cGRhdGVfcGFydF9hYmNfdmlldyBhcyB1cGRhdGUgcGFydF9hYmNfdmll dyBzZXQgYiA9ICQyIHdoZXJlIGEgPSAkMSByZXR1cm5pbmcgKjsKK2V4cGxhaW4gKGNvc3RzIG9m ZikgZXhlY3V0ZSB1cGRhdGVfcGFydF9hYmNfdmlldyAoMSwgJ2QnKTsKKyAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBVcGRhdGUgb24gcGFy dF9hYmMKKyAgIFVwZGF0ZSBvbiBwYXJ0X2FiY18xCisgICAtPiAgQXBwZW5kCisgICAgICAgICBT dWJwbGFucyBSZW1vdmVkOiAxCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFydF9hYmNfMQor ICAgICAgICAgICAgICAgRmlsdGVyOiAoKGIgPD4gJ2EnOjp0ZXh0KSBBTkQgKGEgPSAkMSkpCiso NiByb3dzKQorCitleGVjdXRlIHVwZGF0ZV9wYXJ0X2FiY192aWV3ICgxLCAnZCcpOworIGEgfCBi IHwgYyAKKy0tLSstLS0rLS0tCisgMSB8IGQgfCB0CisoMSByb3cpCisKK2V4cGxhaW4gKGNvc3Rz IG9mZikgZXhlY3V0ZSB1cGRhdGVfcGFydF9hYmNfdmlldyAoMiwgJ2EnKTsKKyAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBVcGRhdGUgb24g cGFydF9hYmMKKyAgIFVwZGF0ZSBvbiBwYXJ0X2FiY18yIHBhcnRfYWJjXzEKKyAgIC0+ICBBcHBl bmQKKyAgICAgICAgIFN1YnBsYW5zIFJlbW92ZWQ6IDEKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBwYXJ0X2FiY18yIHBhcnRfYWJjXzEKKyAgICAgICAgICAgICAgIEZpbHRlcjogKChiIDw+ICdh Jzo6dGV4dCkgQU5EIChhID0gJDEpKQorKDYgcm93cykKKworZXhlY3V0ZSB1cGRhdGVfcGFydF9h YmNfdmlldyAoMiwgJ2EnKTsKK0VSUk9SOiAgbmV3IHJvdyB2aW9sYXRlcyBjaGVjayBvcHRpb24g Zm9yIHZpZXcgInBhcnRfYWJjX3ZpZXciCitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAo MiwgYSwgdCkuCitkZWFsbG9jYXRlIHVwZGF0ZV9wYXJ0X2FiY192aWV3OworZHJvcCB2aWV3IHBh cnRfYWJjX3ZpZXc7Citkcm9wIHRhYmxlIHBhcnRfYWJjOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcGFydGl0aW9uX3BydW5lLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Bh cnRpdGlvbl9wcnVuZS5zcWwKaW5kZXggZWE5YTRmZTRhMjMuLjA2NjIwNjQwZjg3IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3FsCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9wcnVuZS5zcWwKQEAgLTEzNTQsMyArMTM1NCwyMSBA QCBkcm9wIG9wZXJhdG9yIGNsYXNzIHBhcnRfdGVzdF9pbnQ0X29wczIgdXNpbmcgaGFzaDsKIGRy b3Agb3BlcmF0b3IgPT09KGludDQsIGludDQpOwogCiBkcm9wIGZ1bmN0aW9uIGV4cGxhaW5fYW5h bHl6ZSh0ZXh0KTsKKworLS0gUnVudGltZSBwcnVuaW5nIG9uIFVQREFURSB1c2luZyBXSVRIIENI RUNLIE9QVElPTlMgYW5kIFJFVFVSTklORworY3JlYXRlIHRhYmxlIHBhcnRfYWJjIChhIGludCwg YiB0ZXh0LCBjIGJvb2wpIHBhcnRpdGlvbiBieSBsaXN0IChhKTsKK2NyZWF0ZSB0YWJsZSBwYXJ0 X2FiY18xIChiIHRleHQsIGEgaW50LCBjIGJvb2wpOworY3JlYXRlIHRhYmxlIHBhcnRfYWJjXzIg KGEgaW50LCBjIGJvb2wsIGIgdGV4dCk7CithbHRlciB0YWJsZSBwYXJ0X2FiYyBhdHRhY2ggcGFy dGl0aW9uIHBhcnRfYWJjXzEgZm9yIHZhbHVlcyBpbiAoMSk7CithbHRlciB0YWJsZSBwYXJ0X2Fi YyBhdHRhY2ggcGFydGl0aW9uIHBhcnRfYWJjXzIgZm9yIHZhbHVlcyBpbiAoMik7CitpbnNlcnQg aW50byBwYXJ0X2FiYyB2YWx1ZXMgKDEsICdiJywgdHJ1ZSk7CitpbnNlcnQgaW50byBwYXJ0X2Fi YyB2YWx1ZXMgKDIsICdjJywgdHJ1ZSk7CitjcmVhdGUgdmlldyBwYXJ0X2FiY192aWV3IGFzIHNl bGVjdCAqIGZyb20gcGFydF9hYmMgd2hlcmUgYiA8PiAnYScgd2l0aCBjaGVjayBvcHRpb247Citw cmVwYXJlIHVwZGF0ZV9wYXJ0X2FiY192aWV3IGFzIHVwZGF0ZSBwYXJ0X2FiY192aWV3IHNldCBi ID0gJDIgd2hlcmUgYSA9ICQxIHJldHVybmluZyAqOworZXhwbGFpbiAoY29zdHMgb2ZmKSBleGVj dXRlIHVwZGF0ZV9wYXJ0X2FiY192aWV3ICgxLCAnZCcpOworZXhlY3V0ZSB1cGRhdGVfcGFydF9h YmNfdmlldyAoMSwgJ2QnKTsKK2V4cGxhaW4gKGNvc3RzIG9mZikgZXhlY3V0ZSB1cGRhdGVfcGFy dF9hYmNfdmlldyAoMiwgJ2EnKTsKK2V4ZWN1dGUgdXBkYXRlX3BhcnRfYWJjX3ZpZXcgKDIsICdh Jyk7CitkZWFsbG9jYXRlIHVwZGF0ZV9wYXJ0X2FiY192aWV3OworZHJvcCB2aWV3IHBhcnRfYWJj X3ZpZXc7Citkcm9wIHRhYmxlIHBhcnRfYWJjOwotLSAKMi40My4wCgo= --00000000000029efd4062c5a620d--