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 1srCi0-00G4oc-5P for pgsql-hackers@arkaria.postgresql.org; Thu, 19 Sep 2024 08:40:16 +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 1srChy-006r5T-3y for pgsql-hackers@arkaria.postgresql.org; Thu, 19 Sep 2024 08:40:14 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1srChx-006r5L-Fg for pgsql-hackers@lists.postgresql.org; Thu, 19 Sep 2024 08:40:13 +0000 Received: from mail-pj1-x102d.google.com ([2607:f8b0:4864:20::102d]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1srChv-001y4p-0P for pgsql-hackers@postgresql.org; Thu, 19 Sep 2024 08:40:12 +0000 Received: by mail-pj1-x102d.google.com with SMTP id 98e67ed59e1d1-2d8b68bddeaso534722a91.1 for ; Thu, 19 Sep 2024 01:40:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1726735208; x=1727340008; 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=m4XdXY4rcjypNBK5ydiG/uQEETd1HC9QQ0VjGUe2hHE=; b=OWMDrjmaU0iKNNwXTnJRO+OGiOi6yAVCRsB5zBb+CrXjDCXNAsb+Jwf4f/wApFYnsi 8KaWdE8mOEA2xcW305HihUPhFLMhoaj0NfU7AwFuxf/282vMlO8+Jw+0J3GEXr2GyQ71 JTN+edXjodd2oIZcaQB8VFlVOn0s4HIkZlbOQfIy7d+CwH0rGxi+mdLkOo6dOq5OZJVw p9AqjdNUz1VOxNSMNntCtSW0wE54JCI2vjDCAzDkPaUJlbW8ETDJ40sGboVQEUC5snQf eFoGV5FCMQoXkJHjhPmc6j346QXvgeUPrZQXz+CsmXU1Ijc9SYo9vqphl7w+qgjXRxNO oXnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1726735208; x=1727340008; 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=m4XdXY4rcjypNBK5ydiG/uQEETd1HC9QQ0VjGUe2hHE=; b=BVcyTH1vuIcUoRBovkM1NRr5DjxVF+VaTZ/VglGrVy86ieulgz5sKH3NufTsTJ1qK+ ZI06bnmNcEP1EkdoUMRZgwrAm0p4rDA9JQn2wlQiMBwSkAXt5G9/mMNn6/jy7ocyCEgk 9K5B3nvV5E2Mbpbd4r51SeZjOb70N4FA6b2Cy+iaOZBC65wIBuveXovsBOCGcuqQt+9p GOk0m81MBJ6BEskfMzFjmcH2XDp0P4KZq0D0NVQbewUYH7ZeoM43kZ825uKCM/7oCNZy bRhRCN2u6Nun07vrZl6ZW3jI2rQzyC5H2YCP65WMWPapBzIF2FCqPlcwcoZr/Lgzlsxq WHmg== X-Forwarded-Encrypted: i=1; AJvYcCV2O5EHQNjbY14jy1tOMzczm7cfucTf24GAvGh+eEk6eo7kcLQYe+1Nzp/7dSPIlVawZfNF/tJAU1aFThZh@postgresql.org X-Gm-Message-State: AOJu0YwU/Zx316gqMrbdLQxVVEc9ZOmK69231Ce0X1W65ny3nSrvOG14 xcGbVILKDDh+oDE2vf4cSo/CILHU5fcSbOUEfr4eXr5QduvdkuiUNXBAmnMbvSZXpFXCXmeJnML bnoWfmpK0WV13T7gOLhczrv6H9yI= X-Google-Smtp-Source: AGHT+IFOOkLinIF0cueNFcgct95xG2L8fNp30w62se5NKTLNToCGKP9C0ITxPbCo5QphZmQXRwirLmO7tv4mqxW+OQQ= X-Received: by 2002:a17:90b:280d:b0:2dd:6a40:dd86 with SMTP id 98e67ed59e1d1-2dd6a40e241mr3600560a91.16.1726735208412; Thu, 19 Sep 2024 01:40:08 -0700 (PDT) MIME-Version: 1.0 References: <202406191709.jbvpf7d7hl6g@alvherre.pgsql> In-Reply-To: From: Amit Langote Date: Thu, 19 Sep 2024 17:39:51 +0900 Message-ID: Subject: Re: generic plans and "initial" pruning To: Robert Haas Cc: Alvaro Herrera , Andres Freund , Daniel Gustafsson , David Rowley , PostgreSQL Hackers , Thom Brown , Tom Lane Content-Type: multipart/mixed; boundary="000000000000b90aa8062274deae" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000b90aa8062274deae Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Sep 17, 2024 at 9:57=E2=80=AFPM Amit Langote wrote: > On Thu, Aug 29, 2024 at 10:34=E2=80=AFPM Amit Langote wrote: > > One idea that I think might be worth trying to reduce the footprint of > > 0003 is to try to lock the prunable relations in a step of InitPlan() > > separate from ExecInitNode(), which can be implemented by doing the > > initial runtime pruning in that separate step. That way, we'll have > > all the necessary locks before calling ExecInitNode() and so we don't > > need to sprinkle the CachedPlanStillValid() checks all over the place > > and worry about missed checks and dealing with partially initialized > > PlanState trees. > > I've worked on this and found that it results in a much simpler design. > > Attached are 0001 and 0002, which contain patches to refactor the > runtime pruning code. These changes move initial pruning outside of > ExecInitNode() and use the results during ExecInitNode() to determine > the set of child subnodes to initialize. > > With that in place, the patches (0003, 0004) that move the locking of > prunable relations from plancache.c into the executor becomes simpler. > It no longer needs to modify any code called by ExecInitNode(). Since > no new locks are taken during ExecInitNode(), I didn't have to worry > about changing all the code involved in PlanState tree initialization > to add checks for CachedPlan validity. The check is only needed after > performing initial pruning, and if the CachedPlan is invalid, > ExecInitNode() won=E2=80=99t be called in the first place. Sorry, I had missed merging some hunks into 0002 that fixed obsolete comments. Fixed in the attached v54. Regarding 0002, I was a bit bothered by the need to add a new function just to iterate over the PartitionPruningDatas and the PartitionedRelPruningData they contain, solely to initialize the PartitionPruneContext needed for exec pruning. To address this, I propose 0003, which moves the initialization of those contexts to be done "lazily" in find_matching_subplan_recurse(), where they are actually used. To make this work, I added an is_valid flag to PartitionPruneContext, which is checked as follows in the code block where it's initialized: + if (unlikely(!pprune->exec_context.is_valid)) I didn't notice any overhead of adding this to find_matching_partitions_recurse() which is called for every instance of exec pruning, so I think it's worthwhile to consider 0003. I realized that I had missed considering, in the delay-locking-to-executor patch (now 0004), that there may be plan objects belonging to pruned partitions, such as RowMarks and ResultRelInfos, which should not be initialized. ExecGetRangeTableRelation() invoked with the RT indexes in these objects would cause crashes in Assert builds since the pruned partitions would not have been locked. I've updated the patch to ignore RowMarks and result relations (in ModifyTable.resultRelations) for pruned child relations, which required adding more accounting info to EState to store the bitmapset of unpruned RT indexes. For ResultRelInfos, I took the approach of memsetting them to 0 for pruned result relations and adding checks at multiple sites to ensure the ResultRelInfo being handled is valid. I recall previously proposing lazy initialization for these objects when first needed [1], which would make the added code unnecessary, but I might save that for another time. -- Thanks, Amit Langote [1] https://postgr.es/m/468c85d9-540e-66a2-1dde-fec2b741e688@lab.ntt.co.jp --000000000000b90aa8062274deae Content-Type: application/x-patch; name="v54-0003-Defer-locking-of-runtime-prunable-relations-to-e.patch" Content-Disposition: attachment; filename="v54-0003-Defer-locking-of-runtime-prunable-relations-to-e.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m177noji1 RnJvbSA5ZWU4Mzg0ZGFhZmY2NTBlYmVhNDRlNTkwY2VkMDg4NWZkMmJlOGUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNyBBdWcgMjAyNCAxODoyNTo1MSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjU0 IDMvNF0gRGVmZXIgbG9ja2luZyBvZiBydW50aW1lLXBydW5hYmxlIHJlbGF0aW9ucyB0bwogZXhl Y3V0b3IKCldoZW4gcHJlcGFyaW5nIGEgY2FjaGVkIHBsYW4gZm9yIGV4ZWN1dGlvbiwgcGxhbmNh Y2hlLmMgbG9ja3MgdGhlCnJlbGF0aW9ucyBjb250YWluZWQgaW4gdGhlIHBsYW4ncyByYW5nZSB0 YWJsZSB0byBlbnN1cmUgaXQgaXMgc2FmZSBmb3IKZXhlY3V0aW9uLiBIb3dldmVyLCB0aGlzIHNp bXBsaXN0aWMgYXBwcm9hY2gsIGltcGxlbWVudGVkIGluCkFjcXVpcmVFeGVjdXRvckxvY2tzKCks IHJlc3VsdHMgaW4gdW5uZWNlc3NhcmlseSBsb2NraW5nIHJlbGF0aW9ucyB0aGF0Cm1pZ2h0IGJl IHBydW5lZCBkdXJpbmcgImluaXRpYWwiIHJ1bnRpbWUgcHJ1bmluZy4KClRvIG9wdGltaXplIHRo aXMsIHRoZSBsb2NraW5nIGlzIG5vdyBkZWZlcnJlZCBmb3IgcmVsYXRpb25zIHRoYXQgYXJlCnN1 YmplY3QgdG8gImluaXRpYWwiIHJ1bnRpbWUgcHJ1bmluZy4gVGhlIHBsYW5uZXIgbm93IHByb3Zp ZGVzIGEgc2V0Cm9mICJ1bnBydW5hYmxlIiByZWxhdGlvbnMsIGF2YWlsYWJsZSB0aHJvdWdoIHRo ZSBuZXcKUGxhbm5lZFN0bXQudW5wcnVuYWJsZVJlbGlkcyBmaWVsZC4gIEFjcXVpcmVFeGVjdXRv ckxvY2tzKCkgd2lsbCBub3cKb25seSBsb2NrIHRob3NlIHJlbGF0aW9ucy4KClBsYW5uZWRTdG10 LnVucHJ1bmFibGVSZWxpZHMgaXMgcG9wdWxhdGVkIGJ5IHN1YnRyYWN0aW5nIHRoZSBzZXQgb2YK aW5pdGlhbGx5IHBydW5hYmxlIHJlbGlkcyBmcm9tIHRoZSBzZXQgb2YgYWxsIFJUIGluZGV4ZXMu IFRoZSBwcnVuYWJsZQpyZWxpZHMgc2V0IGlzIGNvbnN0cnVjdGVkIGJ5IGV4YW1pbmluZyBhbGwg UGFydGl0aW9uUHJ1bmVJbmZvcyBkdXJpbmcKc2V0X3BsYW5fcmVmcygpIGFuZCBzdG9yaW5nIHRo ZSBSVCBpbmRleGVzIG9mIHBhcnRpdGlvbnMgc3ViamVjdCB0bwoiaW5pdGlhbCIgcHJ1bmluZyBz dGVwcy4gV2hpbGUgYXQgaXQsIHNvbWUgZHVwbGljYXRlZCBjb2RlIGluCnNldF9hcHBlbmRfcmVm ZXJlbmNlcygpIGFuZCBzZXRfbWVyZ2VhcHBlbmRfcmVmZXJlbmNlcygpIHRoYXQKY29uc3RydWN0 cyB0aGUgcHJ1bmFibGUgcmVsaWRzIHNldCBoYXMgYmVlbiByZWZhY3RvcmVkIGludG8gYSBjb21t b24KZnVuY3Rpb24uCgpUbyBlbmFibGUgdGhlIGV4ZWN1dG9yIHRvIGRldGVybWluZSB3aGV0aGVy IHRoZSBwbGFuIHRyZWUgaXQncwpleGVjdXRpbmcgaXMgYSBjYWNoZWQgb25lLCB0aGUgQ2FjaGVk UGxhbiBpcyBub3cgbWFkZSBhdmFpbGFibGUgdmlhCnRoZSBRdWVyeURlc2MuIFRoZSBleGVjdXRv ciBjYW4gY2FsbCBDYWNoZWRQbGFuUmVxdWlyZXNMb2NraW5nKCksCndoaWNoIHJldHVybnMgdHJ1 ZSBpZiB0aGUgQ2FjaGVkUGxhbiBpcyBhIHJldXNhYmxlIGdlbmVyaWMgcGxhbiB0aGF0Cm1pZ2h0 IGNvbnRhaW4gcmVsYXRpb25zIG5lZWRpbmcgdG8gYmUgbG9ja2VkLiBJZiBzbywgdGhlIGV4ZWN1 dG9yCndpbGwgbG9jayBhbnkgcmVsYXRpb24gdGhhdCBpcyBub3QgaW4gUGxhbm5lZFN0bXQudW5w cnVuYWJsZVJlbGlkcy4KCkZpbmFsbHksIGFuIEFzc2VydCBoYXMgYmVlbiBhZGRlZCBpbiBFeGVj Q2hlY2tQZXJtaXNzaW9ucygpIHRvIGVuc3VyZQp0aGF0IGFsbCByZWxhdGlvbnMgd2hvc2UgcGVy bWlzc2lvbnMgYXJlIGNoZWNrZWQgaGF2ZSBiZWVuIHByb3Blcmx5CmxvY2tlZC4gVGhpcyBoZWxw cyBjYXRjaCBhbnkgYWNjaWRlbnRhbCBvbWlzc2lvbiBvZiByZWxhdGlvbnMgZnJvbSB0aGUKdW5w cnVuYWJsZVJlbGlkcyBzZXQgdGhhdCBzaG91bGQgaGF2ZSB0aGVpciBwZXJtaXNzaW9ucyBjaGVj a2VkLgoKVGhpcyBkZWZlcm1lbnQgaW50cm9kdWNlcyBhIHdpbmRvdyBpbiB3aGljaCBwcnVuYWJs ZSByZWxhdGlvbnMgbWF5IGJlCmFsdGVyZWQgYnkgY29uY3VycmVudCBEREwsIHBvdGVudGlhbGx5 IGNhdXNpbmcgdGhlIHBsYW4gdG8gYmVjb21lCmludmFsaWQuIEFzIGEgcmVzdWx0LCB0aGUgZXhl Y3V0b3IgbWlnaHQgYXR0ZW1wdCB0byBydW4gYW4gaW52YWxpZCBwbGFuLApsZWFkaW5nIHRvIGVy cm9ycyBzdWNoIGFzIGJlaW5nIHVuYWJsZSB0byBsb2NhdGUgYSBwYXJ0aXRpb24tb25seSBpbmRl eApkdXJpbmcgRXhlY0luaXRJbmRleFNjYW4oKS4gRnV0dXJlIGNvbW1pdHMgd2lsbCBpbnRyb2R1 Y2UgY2hhbmdlcyB0bwpyZWFkeSB0aGUgZXhlY3V0b3IgdG8gY2hlY2sgcGxhbiB2YWxpZGl0eSBk dXJpbmcgRXhlY3V0b3JTdGFydCgpIGFuZApyZXRyeSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBwbGFu IGlmIHRoZSBvcmlnaW5hbCBvbmUgYmVjb21lcyBpbnZhbGlkCmFmdGVyIHRha2luZyBkZWZlcnJl ZCBsb2Nrcy4KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyAgICAgICAgICB8ICAy ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jICAgICAgICB8ICAyICstCiBzcmMv YmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICB8ICA3ICsrLS0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL2V4dGVuc2lvbi5jICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMv bWF0dmlldy5jICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5j ICAgICAgICAgfCAgMyArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAg fCA0NSArKysrKysrKysrKysrKysrKysrKysrKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1BhcmFsbGVsLmMgICAgfCAgOSArKysrKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0 aXRpb24uYyAgIHwgMzcgKysrKysrKysrKysrKysrKysrLS0tCiBzcmMvYmFja2VuZC9leGVjdXRv ci9mdW5jdGlvbnMuYyAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBl bmQuYyAgICAgIHwgIDggKystLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVu ZC5jIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jICAgICAgICAgICAgIHwgIDEg Kwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgfCAgMiArKwogc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jICAgfCAxMSArKysrKysrCiBzcmMvYmFja2Vu ZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMgICB8IDIwICsrKysrKysrKysrLQogc3JjL2JhY2tl bmQvdGNvcC9wcXVlcnkuYyAgICAgICAgICAgICAgfCAxMCArKysrKy0KIHNyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3BsYW5jYWNoZS5jICAgIHwgNDAgKysrKysrKysrKysrKystLS0tLS0tLS0KIHNy Yy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaCAgICAgICAgIHwgIDUgKy0tCiBzcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmggICB8ICA5ICsrKysrLQogc3JjL2luY2x1ZGUvZXhl Y3V0b3IvZXhlY2Rlc2MuaCAgICAgICAgfCAgMiArKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmggICAgICAgICAgfCAgMiArKwogc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggICAg ICAgICAgfCAgNiArKysrCiBzcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCAgICAgICAgICB8 IDExICsrKysrKysKIHNyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oICAgICAgICAgIHwgMTAg KysrKysrCiAyNSBmaWxlcyBjaGFuZ2VkLCAyMDkgaW5zZXJ0aW9ucygrKSwgMzkgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9jb3B5dG8uYwppbmRleCA5MWRlNDQyZjQzLi5kYjk3NmY5MjhhIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5dG8uYwpAQCAtNTUyLDcgKzU1Miw3IEBAIEJlZ2luQ29weVRvKFBhcnNlU3Rh dGUgKnBzdGF0ZSwKIAkJKChEUl9jb3B5ICopIGRlc3QpLT5jc3RhdGUgPSBjc3RhdGU7CiAKIAkJ LyogQ3JlYXRlIGEgUXVlcnlEZXNjIHJlcXVlc3Rpbmcgbm8gb3V0cHV0ICovCi0JCWNzdGF0ZS0+ cXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAor CQljc3RhdGUtPnF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBOVUxMLCBwc3RhdGUt PnBfc291cmNldGV4dCwKIAkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkJ CQkJSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9jcmVhdGVhcy5jCmluZGV4IDBiNjI5YjFmNzkuLjU3YTMzNzVjYWQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvY3JlYXRlYXMuYwpAQCAtMzI0LDcgKzMyNCw3IEBAIEV4ZWNDcmVhdGVUYWJsZUFzKFBh cnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlVGFibGVBc1N0bXQgKnN0bXQsCiAJCVVwZGF0ZUFjdGl2 ZVNuYXBzaG90Q29tbWFuZElkKCk7CiAKIAkJLyogQ3JlYXRlIGEgUXVlcnlEZXNjLCByZWRpcmVj dGluZyBvdXRwdXQgdG8gb3VyIHR1cGxlIHJlY2VpdmVyICovCi0JCXF1ZXJ5RGVzYyA9IENyZWF0 ZVF1ZXJ5RGVzYyhwbGFuLCBwc3RhdGUtPnBfc291cmNldGV4dCwKKwkJcXVlcnlEZXNjID0gQ3Jl YXRlUXVlcnlEZXNjKHBsYW4sIE5VTEwsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkJCQkJ R2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQkJZGVzdCwgcGFy YW1zLCBxdWVyeUVudiwgMCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCBhYWVjNDM5ODky Li40OWY3MzcwNzM0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC01MDksNyArNTA5LDcgQEAg c3RhbmRhcmRfRXhwbGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9wdGlvbnMs CiAJfQogCiAJLyogcnVuIGl0IChpZiBuZWVkZWQpIGFuZCBwcm9kdWNlIG91dHB1dCAqLwotCUV4 cGxhaW5PbmVQbGFuKHBsYW4sIGludG8sIGVzLCBxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVyeUVu diwKKwlFeHBsYWluT25lUGxhbihwbGFuLCBOVUxMLCBpbnRvLCBlcywgcXVlcnlTdHJpbmcsIHBh cmFtcywgcXVlcnlFbnYsCiAJCQkJICAgJnBsYW5kdXJhdGlvbiwgKGVzLT5idWZmZXJzID8gJmJ1 ZnVzYWdlIDogTlVMTCksCiAJCQkJICAgZXMtPm1lbW9yeSA/ICZtZW1fY291bnRlcnMgOiBOVUxM KTsKIH0KQEAgLTYxNyw3ICs2MTcsOCBAQCBFeHBsYWluT25lVXRpbGl0eShOb2RlICp1dGlsaXR5 U3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKICAqIHRvIGNhbGwgaXQu CiAgKi8KIHZvaWQKLUV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50 b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKK0V4cGxhaW5PbmVQbGFuKFBsYW5uZWRT dG10ICpwbGFubmVkc3RtdCwgQ2FjaGVkUGxhbiAqY3BsYW4sCisJCQkgICBJbnRvQ2xhdXNlICpp bnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQkJICAgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsIFBh cmFtTGlzdEluZm8gcGFyYW1zLAogCQkJICAgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsIGNv bnN0IGluc3RyX3RpbWUgKnBsYW5kdXJhdGlvbiwKIAkJCSAgIGNvbnN0IEJ1ZmZlclVzYWdlICpi dWZ1c2FnZSwKQEAgLTY3Myw3ICs2NzQsNyBAQCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAq cGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCWRlc3Qg PSBOb25lX1JlY2VpdmVyOwogCiAJLyogQ3JlYXRlIGEgUXVlcnlEZXNjIGZvciB0aGUgcXVlcnkg Ki8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbm5lZHN0bXQsIHF1ZXJ5U3RyaW5n LAorCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFubmVkc3RtdCwgY3BsYW4sIHF1ZXJ5 U3RyaW5nLAogCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJ CQkJCQkJCWRlc3QsIHBhcmFtcywgcXVlcnlFbnYsIGluc3RydW1lbnRfb3B0aW9uKTsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9leHRlbnNpb24uYwppbmRleCBmYWI1OWFkNWY2Li5iZDE2OWVkZWZmIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9leHRlbnNpb24uYwpAQCAtNzQyLDYgKzc0Miw3IEBAIGV4ZWN1dGVfc3FsX3N0cmlu Zyhjb25zdCBjaGFyICpzcWwpCiAJCQkJUXVlcnlEZXNjICAqcWRlc2M7CiAKIAkJCQlxZGVzYyA9 IENyZWF0ZVF1ZXJ5RGVzYyhzdG10LAorCQkJCQkJCQkJCU5VTEwsCiAJCQkJCQkJCQkJc3FsLAog CQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIE5VTEwsCiAJCQkJCQkJCQkJZGVzdCwgTlVM TCwgTlVMTCwgMCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKaW5kZXggMDEwMDk3ODczZC4uNjliZTc0 YjRiZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYwpAQCAtNDM4LDcgKzQzOCw3IEBAIHJlZnJlc2hf bWF0dmlld19kYXRhZmlsbChEZXN0UmVjZWl2ZXIgKmRlc3QsIFF1ZXJ5ICpxdWVyeSwKIAlVcGRh dGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOwogCiAJLyogQ3JlYXRlIGEgUXVlcnlEZXNjLCBy ZWRpcmVjdGluZyBvdXRwdXQgdG8gb3VyIHR1cGxlIHJlY2VpdmVyICovCi0JcXVlcnlEZXNjID0g Q3JlYXRlUXVlcnlEZXNjKHBsYW4sIHF1ZXJ5U3RyaW5nLAorCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1 ZXJ5RGVzYyhwbGFuLCBOVUxMLCBxdWVyeVN0cmluZywKIAkJCQkJCQkJR2V0QWN0aXZlU25hcHNo b3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvcHJlcGFyZS5jCmluZGV4IDA3MjU3ZDRkYjkuLjMxMWI5ZWJkNWIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9wcmVwYXJlLmMKQEAgLTY1NSw3ICs2NTUsOCBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4 ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywK IAkJUGxhbm5lZFN0bXQgKnBzdG10ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIHApOwogCiAJ CWlmIChwc3RtdC0+Y29tbWFuZFR5cGUgIT0gQ01EX1VUSUxJVFkpCi0JCQlFeHBsYWluT25lUGxh bihwc3RtdCwgaW50bywgZXMsIHF1ZXJ5X3N0cmluZywgcGFyYW1MSSwgcXVlcnlFbnYsCisJCQlF eHBsYWluT25lUGxhbihwc3RtdCwgY3BsYW4sIGludG8sIGVzLCBxdWVyeV9zdHJpbmcsIHBhcmFt TEksCisJCQkJCQkgICBxdWVyeUVudiwKIAkJCQkJCSAgICZwbGFuZHVyYXRpb24sIChlcy0+YnVm ZmVycyA/ICZidWZ1c2FnZSA6IE5VTEwpLAogCQkJCQkJICAgZXMtPm1lbW9yeSA/ICZtZW1fY291 bnRlcnMgOiBOVUxMKTsKIAkJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggOGZhYjhk YmNjZC4uY2I3YTJiYzQ1NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01h aW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC01Myw2ICs1Myw3 IEBACiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3JlbGF0 aW9uLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgorI2luY2x1ZGUgInN0 b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInRjb3AvdXRpbGl0eS5oIgogI2luY2x1ZGUgInV0aWxz L2FjbC5oIgogI2luY2x1ZGUgInV0aWxzL2JhY2tlbmRfc3RhdHVzLmgiCkBAIC05MCw2ICs5MSw3 IEBAIHN0YXRpYyBib29sIEV4ZWNDaGVja1Blcm1pc3Npb25zTW9kaWZpZWQoT2lkIHJlbE9pZCwg T2lkIHVzZXJpZCwKIAkJCQkJCQkJCQkgQWNsTW9kZSByZXF1aXJlZFBlcm1zKTsKIHN0YXRpYyB2 b2lkIEV4ZWNDaGVja1hhY3RSZWFkT25seShQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQpOwogc3Rh dGljIHZvaWQgRXZhbFBsYW5RdWFsU3RhcnQoRVBRU3RhdGUgKmVwcXN0YXRlLCBQbGFuICpwbGFu VHJlZSk7CitzdGF0aWMgaW5saW5lIGJvb2wgRXhlY1Nob3VsZExvY2tSZWxhdGlvbnMoRVN0YXRl ICplc3RhdGUpOwogCiAvKiBlbmQgb2YgbG9jYWwgZGVjbHMgKi8KIApAQCAtNjAwLDYgKzYwMiwy MSBAQCBFeGVjQ2hlY2tQZXJtaXNzaW9ucyhMaXN0ICpyYW5nZVRhYmxlLCBMaXN0ICpydGVwZXJt aW5mb3MsCiAJCQkJICAgKHJ0ZS0+cnRla2luZCA9PSBSVEVfU1VCUVVFUlkgJiYKIAkJCQkJcnRl LT5yZWxraW5kID09IFJFTEtJTkRfVklFVykpOwogCisJCQkvKgorCQkJICogRW5zdXJlIHRoYXQg d2UgaGF2ZSBhdCBsZWFzdCBhbiBBY2Nlc3NTaGFyZUxvY2sgb24gcmVsYXRpb25zCisJCQkgKiB3 aG9zZSBwZXJtaXNzaW9ucyBuZWVkIHRvIGJlIGNoZWNrZWQuCisJCQkgKgorCQkJICogU2tpcCB0 aGlzIGNoZWNrIGluIGEgcGFyYWxsZWwgd29ya2VyIGJlY2F1c2UgbG9ja3Mgd29uJ3QgYmUKKwkJ CSAqIHRha2VuIHVudGlsIEV4ZWNJbml0Tm9kZSgpIHBlcmZvcm1zIHBsYW4gaW5pdGlhbGl6YXRp b24uCisJCQkgKgorCQkJICogWFhYOiBFeGVjQ2hlY2tQZXJtaXNzaW9ucygpIGluIGEgcGFyYWxs ZWwgd29ya2VyIG1heSBiZQorCQkJICogcmVkdW5kYW50IHdpdGggdGhlIGNoZWNrcyBkb25lIGlu IHRoZSBsZWFkZXIgcHJvY2Vzcywgc28gdGhpcworCQkJICogc2hvdWxkIGJlIHJldmlld2VkIHRv IGVuc3VyZSBpdOKAmXMgbmVjZXNzYXJ5LgorCQkJICovCisJCQlBc3NlcnQoSXNQYXJhbGxlbFdv cmtlcigpIHx8CisJCQkJICAgQ2hlY2tSZWxhdGlvbk9pZExvY2tlZEJ5TWUocnRlLT5yZWxpZCwg QWNjZXNzU2hhcmVMb2NrLAorCQkJCQkJCQkJCQkgIHRydWUpKTsKKwogCQkJKHZvaWQpIGdldFJU RVBlcm1pc3Npb25JbmZvKHJ0ZXBlcm1pbmZvcywgcnRlKTsKIAkJCS8qIE1hbnktdG8tb25lIG1h cHBpbmcgbm90IGFsbG93ZWQgKi8KIAkJCUFzc2VydCghYm1zX2lzX21lbWJlcihydGUtPnBlcm1p bmZvaW5kZXgsIGluZGV4c2V0KSk7CkBAIC04NjIsMTEgKzg3OSwzNSBAQCBFeGVjRG9Jbml0aWFs UHJ1bmluZyhFU3RhdGUgKmVzdGF0ZSkKIAkJICogcmVzdWx0LgogCQkgKi8KIAkJaWYgKHBydW5l c3RhdGUtPmRvX2luaXRpYWxfcHJ1bmUpCi0JCQl2YWxpZHN1YnBsYW5zID0gRXhlY0ZpbmRNYXRj aGluZ1N1YlBsYW5zKHBydW5lc3RhdGUsIHRydWUpOworCQl7CisJCQlMaXN0ICAgKmxlYWZfcGFy dGl0aW9uX29pZHMgPSBOSUw7CisKKwkJCXZhbGlkc3VicGxhbnMgPSBFeGVjRmluZE1hdGNoaW5n U3ViUGxhbnMocHJ1bmVzdGF0ZSwgdHJ1ZSwKKwkJCQkJCQkJCQkJCQkgJmxlYWZfcGFydGl0aW9u X29pZHMpOworCQkJaWYgKEV4ZWNTaG91bGRMb2NrUmVsYXRpb25zKGVzdGF0ZSkpCisJCQl7CisJ CQkJTGlzdENlbGwgKmxjMTsKKworCQkJCWZvcmVhY2gobGMxLCBsZWFmX3BhcnRpdGlvbl9vaWRz KQorCQkJCXsKKwkJCQkJTG9ja1JlbGF0aW9uT2lkKGxmaXJzdF9vaWQobGMxKSwgcHJ1bmVzdGF0 ZS0+bG9ja21vZGUpOworCQkJCX0KKwkJCX0KKwkJfQogCQllc3RhdGUtPmVzX3BhcnRfcHJ1bmVf cmVzdWx0cyA9IGxhcHBlbmQoZXN0YXRlLT5lc19wYXJ0X3BydW5lX3Jlc3VsdHMsCiAJCQkJCQkJ CQkJCQl2YWxpZHN1YnBsYW5zKTsKIAl9CiB9CisvKgorICogTG9ja3MgbWlnaHQgYmUgbmVlZGVk IG9ubHkgaWYgcnVubmluZyBhIGNhY2hlZCBwbGFuIHRoYXQgbWlnaHQgY29udGFpbgorICogdW5s b2NrZWQgcmVsYXRpb25zLCBzdWNoIGFzIHJldXNlZCBnZW5lcmljIHBsYW5zLgorICovCitzdGF0 aWMgaW5saW5lIGJvb2wKK0V4ZWNTaG91bGRMb2NrUmVsYXRpb25zKEVTdGF0ZSAqZXN0YXRlKQor eworCXJldHVybiBlc3RhdGUtPmVzX2NhY2hlZHBsYW4gPT0gTlVMTCA/IGZhbHNlIDoKKwkJQ2Fj aGVkUGxhblJlcXVpcmVzTG9ja2luZyhlc3RhdGUtPmVzX2NhY2hlZHBsYW4pOworfQogCiAvKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAgKgkJSW5pdFBsYW4KQEAgLTg4MCw2ICs5MjEsNyBAQCBJbml0UGxhbihRdWVyeURl c2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIHsKIAlDbWRUeXBlCQlvcGVyYXRpb24gPSBxdWVy eURlc2MtPm9wZXJhdGlvbjsKIAlQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQgPSBxdWVyeURlc2Mt PnBsYW5uZWRzdG10OworCUNhY2hlZFBsYW4gKmNhY2hlZHBsYW4gPSBxdWVyeURlc2MtPmNwbGFu OwogCVBsYW4JICAgKnBsYW4gPSBwbGFubmVkc3RtdC0+cGxhblRyZWU7CiAJTGlzdAkgICAqcmFu Z2VUYWJsZSA9IHBsYW5uZWRzdG10LT5ydGFibGU7CiAJRVN0YXRlCSAgICplc3RhdGUgPSBxdWVy eURlc2MtPmVzdGF0ZTsKQEAgLTg5OSw2ICs5NDEsNyBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1 ZXJ5RGVzYywgaW50IGVmbGFncykKIAlFeGVjSW5pdFJhbmdlVGFibGUoZXN0YXRlLCByYW5nZVRh YmxlLCBwbGFubmVkc3RtdC0+cGVybUluZm9zKTsKIAogCWVzdGF0ZS0+ZXNfcGxhbm5lZHN0bXQg PSBwbGFubmVkc3RtdDsKKwllc3RhdGUtPmVzX2NhY2hlZHBsYW4gPSBjYWNoZWRwbGFuOwogCiAJ LyoKIAkgKiBQZXJmb3JtIHJ1bnRpbWUgImluaXRpYWwiIHBydW5pbmcgdG8gZGV0ZXJtaW5lIHRo ZSBwbGFuIG5vZGVzIHRoYXQgd2lsbApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1BhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwppbmRl eCBiMDFhMmZkZmRkLi43NTE5YzlhODYwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwu YwpAQCAtMTI1Nyw4ICsxMjU3LDE1IEBAIEV4ZWNQYXJhbGxlbEdldFF1ZXJ5RGVzYyhzaG1fdG9j ICp0b2MsIERlc3RSZWNlaXZlciAqcmVjZWl2ZXIsCiAJcGFyYW1zcGFjZSA9IHNobV90b2NfbG9v a3VwKHRvYywgUEFSQUxMRUxfS0VZX1BBUkFNTElTVElORk8sIGZhbHNlKTsKIAlwYXJhbUxJID0g UmVzdG9yZVBhcmFtTGlzdCgmcGFyYW1zcGFjZSk7CiAKLQkvKiBDcmVhdGUgYSBRdWVyeURlc2Mg Zm9yIHRoZSBxdWVyeS4gKi8KKwkvKgorCSAqIENyZWF0ZSBhIFF1ZXJ5RGVzYyBmb3IgdGhlIHF1 ZXJ5LiAgV2UgcGFzcyBOVUxMIGZvciBjYWNoZWRwbGFuLCBiZWNhdXNlCisJICogd2UgZG9uJ3Qg aGF2ZSBhIHBvaW50ZXIgdG8gdGhlIENhY2hlZFBsYW4gaW4gdGhlIGxlYWRlcidzIHByb2Nlc3Mu IEl0J3MKKwkgKiBmaW5lIGJlY2F1c2UgdGhlIG9ubHkgcmVhc29uIHRoZSBleGVjdXRvciBuZWVk cyB0byBzZWUgaXQgaXMgdG8gZGVjaWRlCisJICogaWYgaXQgc2hvdWxkIHRha2UgbG9ja3Mgb24g Y2VydGFpbiByZWxhdGlvbnMsIGJ1dCBwYXJhbGxlciB3b3JrZXJzCisJICogYWx3YXlzIHRha2Ug bG9ja3MgYW55d2F5LgorCSAqLwogCXJldHVybiBDcmVhdGVRdWVyeURlc2MocHN0bXQsCisJCQkJ CQkgICBOVUxMLAogCQkJCQkJICAgcXVlcnlTdHJpbmcsCiAJCQkJCQkgICBHZXRBY3RpdmVTbmFw c2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkgICByZWNlaXZlciwgcGFyYW1MSSwgTlVM TCwgaW5zdHJ1bWVudF9vcHRpb25zKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQYXJ0aXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwpp bmRleCBkMjA1ZTY0ZTg0Li5mOTU4OTczMzc4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjUGFydGl0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRp dGlvbi5jCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAicGFydGl0aW9uaW5nL3BhcnRkZXNj LmgiCiAjaW5jbHVkZSAicGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oIgogI2luY2x1ZGUgInJld3Jp dGUvcmV3cml0ZU1hbmlwLmgiCisjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAi dXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRp bHMvcGFydGNhY2hlLmgiCkBAIC0xOTYsNyArMTk3LDggQEAgc3RhdGljIHZvaWQgUGFydGl0aW9u UHJ1bmVJbml0RXhlY1BydW5pbmcoUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8sCiBzdGF0 aWMgdm9pZCBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoUGFydGl0aW9uUHJ1bmluZ0Rh dGEgKnBydW5lZGF0YSwKIAkJCQkJCQkJCQkgICBQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhICpw cHJ1bmUsCiAJCQkJCQkJCQkJICAgYm9vbCBpbml0aWFsX3BydW5lLAotCQkJCQkJCQkJCSAgIEJp dG1hcHNldCAqKnZhbGlkc3VicGxhbnMpOworCQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqKnZhbGlk c3VicGxhbnMsCisJCQkJCQkJCQkJICAgTGlzdCAqKmxlYWZfcGFydF9vaWRzKTsKIAogCiAvKgpA QCAtMTk0MCw2ICsxOTQyLDcgQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShFU3RhdGUgKmVz dGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCiAJCQkJCQkJICBBTExPQ1NFVF9E RUZBVUxUX1NJWkVTKTsKIAogCWkgPSAwOworCXBydW5lc3RhdGUtPmxvY2ttb2RlID0gTm9Mb2Nr OwogCWZvcmVhY2gobGMsIHBydW5laW5mby0+cHJ1bmVfaW5mb3MpCiAJewogCQlMaXN0CSAgICpw YXJ0cmVscHJ1bmVpbmZvcyA9IGxmaXJzdF9ub2RlKExpc3QsIGxjKTsKQEAgLTE5NjMsNiArMTk2 NiwxNSBAQCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKEVTdGF0ZSAqZXN0YXRlLCBQYXJ0aXRp b25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJCVBhcnRpdGlvbkRlc2MgcGFydGRlc2M7CiAJCQlQ YXJ0aXRpb25LZXkgcGFydGtleTsKIAorCQkJLyoKKwkJCSAqIEFzc2lnbiB0aGUgbG9jayBtb2Rl IG9mIHRoZSBmaXJzdCAocm9vdCkgcGFydGl0aW9uZWQgdGFibGUncyBSVEUKKwkJCSAqIGFzIHRo ZSBsb2NrIG1vZGUgdG8gbG9jayBsZWFmIHBhcnRpdGlvbnMgYWZ0ZXIgaW5pdGlhbCBwcnVuaW5n LAorCQkJICogaWYgbmVlZGVkLgorCQkJICovCisJCQlpZiAocHJ1bmVzdGF0ZS0+bG9ja21vZGUg PT0gTm9Mb2NrKQorCQkJCXBydW5lc3RhdGUtPmxvY2ttb2RlID0gZXhlY19ydF9mZXRjaChwaW5m by0+cnRpbmRleCwgZXN0YXRlKS0+cmVsbG9ja21vZGU7CisJCQlBc3NlcnQocHJ1bmVzdGF0ZS0+ bG9ja21vZGUgIT0gTm9Mb2NrKTsKKwogCQkJLyoKIAkJCSAqIFdlIGNhbiByZWx5IG9uIHRoZSBj b3BpZXMgb2YgdGhlIHBhcnRpdGlvbmVkIHRhYmxlJ3MgcGFydGl0aW9uCiAJCQkgKiBrZXkgYW5k IHBhcnRpdGlvbiBkZXNjcmlwdG9yIGFwcGVhcmluZyBpbiBpdHMgcmVsY2FjaGUgZW50cnksCkBA IC0xOTk1LDYgKzIwMDcsOSBAQCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKEVTdGF0ZSAqZXN0 YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJCXBwcnVuZS0+cGFydHJlbCA9 IHBhcnRyZWw7CiAJCQlwcHJ1bmUtPm5wYXJ0cyA9IHBhcnRkZXNjLT5ucGFydHM7CiAJCQlwcHJ1 bmUtPnN1YnBsYW5fbWFwID0gcGFsbG9jKHNpemVvZihpbnQpICogcGFydGRlc2MtPm5wYXJ0cyk7 CisJCQlwcHJ1bmUtPnJlbGlkX21hcCA9IHBhbGxvYyhzaXplb2YoT2lkKSAqIHBhcnRkZXNjLT5u cGFydHMpOworCQkJbWVtY3B5KHBwcnVuZS0+cmVsaWRfbWFwLCBwYXJ0ZGVzYy0+b2lkcywKKwkJ CQkgICBzaXplb2YoT2lkKSAqIHBhcnRkZXNjLT5ucGFydHMpOwogCiAJCQlpZiAocGFydGRlc2Mt Pm5wYXJ0cyA9PSBwaW5mby0+bnBhcnRzICYmCiAJCQkJbWVtY21wKHBhcnRkZXNjLT5vaWRzLCBw aW5mby0+cmVsaWRfbWFwLApAQCAtMjQxMiwxMCArMjQyNywxMyBAQCBQYXJ0aXRpb25QcnVuZUlu aXRFeGVjUHJ1bmluZyhQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbywKICAqIFBhc3MgaW5p dGlhbF9wcnVuZSBpZiBQQVJBTV9FWEVDIFBhcmFtcyBjYW5ub3QgeWV0IGJlIGV2YWx1YXRlZC4g IFRoaXMKICAqIGRpZmZlcmVudGlhdGVzIHRoZSBpbml0aWFsIGV4ZWN1dG9yLXRpbWUgcHJ1bmlu ZyBzdGVwIGZyb20gbGF0ZXIKICAqIHJ1bnRpbWUgcHJ1bmluZy4KKyAqCisgKiBsZWFmX3BhcnRf b2lkcyBtdXN0IGJlIG5vbi1OVUxMIGlmIGluaXRpYWxfcHJ1bmUgaXMgdHJ1ZS4KICAqLwogQml0 bWFwc2V0ICoKIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0YXRlICpw cnVuZXN0YXRlLAotCQkJCQkJIGJvb2wgaW5pdGlhbF9wcnVuZSkKKwkJCQkJCSBib29sIGluaXRp YWxfcHJ1bmUsCisJCQkJCQkgTGlzdCAqKmxlYWZfcGFydF9vaWRzKQogewogCUJpdG1hcHNldCAg KnJlc3VsdCA9IE5VTEw7CiAJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OwpAQCAtMjQ1MCw3ICsy NDY4LDcgQEAgRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBhcnRpdGlvblBydW5lU3RhdGUgKnBy dW5lc3RhdGUsCiAJCSAqLwogCQlwcHJ1bmUgPSAmcHJ1bmVkYXRhLT5wYXJ0cmVscHJ1bmVkYXRh WzBdOwogCQlmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UocHJ1bmVkYXRhLCBwcHJ1bmUs IGluaXRpYWxfcHJ1bmUsCi0JCQkJCQkJCQkgICAmcmVzdWx0KTsKKwkJCQkJCQkJCSAgICZyZXN1 bHQsIGxlYWZfcGFydF9vaWRzKTsKIAogCQkvKiBFeHByZXNzaW9uIGV2YWwgbWF5IGhhdmUgdXNl ZCBzcGFjZSBpbiBFeHByQ29udGV4dCB0b28gKi8KIAkJaWYgKHBwcnVuZS0+ZXhlY19wcnVuaW5n X3N0ZXBzKQpAQCAtMjQ2NCw2ICsyNDgyLDggQEAgRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBh cnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUsCiAKIAkvKiBDb3B5IHJlc3VsdCBvdXQgb2Yg dGhlIHRlbXAgY29udGV4dCBiZWZvcmUgd2UgcmVzZXQgaXQgKi8KIAlyZXN1bHQgPSBibXNfY29w eShyZXN1bHQpOworCWlmIChsZWFmX3BhcnRfb2lkcykKKwkJKmxlYWZfcGFydF9vaWRzID0gbGlz dF9jb3B5KCpsZWFmX3BhcnRfb2lkcyk7CiAKIAlNZW1vcnlDb250ZXh0UmVzZXQocHJ1bmVzdGF0 ZS0+cHJ1bmVfY29udGV4dCk7CiAKQEAgLTI0ODAsNyArMjUwMCw4IEBAIHN0YXRpYyB2b2lkCiBm aW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoUGFydGl0aW9uUHJ1bmluZ0RhdGEgKnBydW5l ZGF0YSwKIAkJCQkJCQkgICBQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhICpwcHJ1bmUsCiAJCQkJ CQkJICAgYm9vbCBpbml0aWFsX3BydW5lLAotCQkJCQkJCSAgIEJpdG1hcHNldCAqKnZhbGlkc3Vi cGxhbnMpCisJCQkJCQkJICAgQml0bWFwc2V0ICoqdmFsaWRzdWJwbGFucywKKwkJCQkJCQkgICBM aXN0ICoqbGVhZl9wYXJ0X29pZHMpCiB7CiAJQml0bWFwc2V0ICAqcGFydHNldDsKIAlpbnQJCQlp OwpAQCAtMjUwNyw4ICsyNTI4LDEzIEBAIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShQ YXJ0aXRpb25QcnVuaW5nRGF0YSAqcHJ1bmVkYXRhLAogCXdoaWxlICgoaSA9IGJtc19uZXh0X21l bWJlcihwYXJ0c2V0LCBpKSkgPj0gMCkKIAl7CiAJCWlmIChwcHJ1bmUtPnN1YnBsYW5fbWFwW2ld ID49IDApCisJCXsKIAkJCSp2YWxpZHN1YnBsYW5zID0gYm1zX2FkZF9tZW1iZXIoKnZhbGlkc3Vi cGxhbnMsCiAJCQkJCQkJCQkJCXBwcnVuZS0+c3VicGxhbl9tYXBbaV0pOworCQkJaWYgKGxlYWZf cGFydF9vaWRzKQorCQkJCSpsZWFmX3BhcnRfb2lkcyA9IGxhcHBlbmRfb2lkKCpsZWFmX3BhcnRf b2lkcywKKwkJCQkJCQkJCQkJICBwcHJ1bmUtPnJlbGlkX21hcFtpXSk7CisJCX0KIAkJZWxzZQog CQl7CiAJCQlpbnQJCQlwYXJ0aWR4ID0gcHBydW5lLT5zdWJwYXJ0X21hcFtpXTsKQEAgLTI1MTYs NyArMjU0Miw4IEBAIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShQYXJ0aXRpb25QcnVu aW5nRGF0YSAqcHJ1bmVkYXRhLAogCQkJaWYgKHBhcnRpZHggPj0gMCkKIAkJCQlmaW5kX21hdGNo aW5nX3N1YnBsYW5zX3JlY3Vyc2UocHJ1bmVkYXRhLAogCQkJCQkJCQkJCQkgICAmcHJ1bmVkYXRh LT5wYXJ0cmVscHJ1bmVkYXRhW3BhcnRpZHhdLAotCQkJCQkJCQkJCQkgICBpbml0aWFsX3BydW5l LCB2YWxpZHN1YnBsYW5zKTsKKwkJCQkJCQkJCQkJICAgaW5pdGlhbF9wcnVuZSwgdmFsaWRzdWJw bGFucywKKwkJCQkJCQkJCQkJICAgbGVhZl9wYXJ0X29pZHMpOwogCQkJZWxzZQogCQkJewogCQkJ CS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCmluZGV4IDY5Mjg1NGUyYjMuLjZmNmY0NWUwYWQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCkBAIC04NDAsNiArODQwLDcgQEAgcG9zdHF1ZWxf c3RhcnQoZXhlY3V0aW9uX3N0YXRlICplcywgU1FMRnVuY3Rpb25DYWNoZVB0ciBmY2FjaGUpCiAJ CWRlc3QgPSBOb25lX1JlY2VpdmVyOwogCiAJZXMtPnFkID0gQ3JlYXRlUXVlcnlEZXNjKGVzLT5z dG10LAorCQkJCQkJCSBOVUxMLAogCQkJCQkJCSBmY2FjaGUtPnNyYywKIAkJCQkJCQkgR2V0QWN0 aXZlU25hcHNob3QoKSwKIAkJCQkJCQkgSW52YWxpZFNuYXBzaG90LApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUFwcGVuZC5jCmluZGV4IGRlN2ViYWI1YzIuLjAwNmJkYWZhZWEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlQXBwZW5kLmMKQEAgLTU4MSw3ICs1ODEsNyBAQCBjaG9vc2VfbmV4dF9zdWJwbGFuX2xvY2Fs bHkoQXBwZW5kU3RhdGUgKm5vZGUpCiAJCWVsc2UgaWYgKCFub2RlLT5hc192YWxpZF9zdWJwbGFu c19pZGVudGlmaWVkKQogCQl7CiAJCQlub2RlLT5hc192YWxpZF9zdWJwbGFucyA9Ci0JCQkJRXhl Y0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSk7CisJCQkJ RXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSwgTlVM TCk7CiAJCQlub2RlLT5hc192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkID0gdHJ1ZTsKIAkJfQog CkBAIC02NDgsNyArNjQ4LDcgQEAgY2hvb3NlX25leHRfc3VicGxhbl9mb3JfbGVhZGVyKEFwcGVu ZFN0YXRlICpub2RlKQogCQlpZiAoIW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQp CiAJCXsKIAkJCW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID0KLQkJCQlFeGVjRmluZE1hdGNoaW5n U3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlKTsKKwkJCQlFeGVjRmluZE1hdGNo aW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlLCBOVUxMKTsKIAkJCW5vZGUt PmFzX3ZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQgPSB0cnVlOwogCiAJCQkvKgpAQCAtNzI0LDcg KzcyNCw3IEBAIGNob29zZV9uZXh0X3N1YnBsYW5fZm9yX3dvcmtlcihBcHBlbmRTdGF0ZSAqbm9k ZSkKIAllbHNlIGlmICghbm9kZS0+YXNfdmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCkKIAl7CiAJ CW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID0KLQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhu b2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UpOworCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5z KG5vZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSwgTlVMTCk7CiAJCW5vZGUtPmFzX3ZhbGlkX3N1 YnBsYW5zX2lkZW50aWZpZWQgPSB0cnVlOwogCiAJCW1hcmtfaW52YWxpZF9zdWJwbGFuc19hc19m aW5pc2hlZChub2RlKTsKQEAgLTg3Nyw3ICs4NzcsNyBAQCBFeGVjQXBwZW5kQXN5bmNCZWdpbihB cHBlbmRTdGF0ZSAqbm9kZSkKIAlpZiAoIW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zX2lkZW50aWZp ZWQpCiAJewogCQlub2RlLT5hc192YWxpZF9zdWJwbGFucyA9Ci0JCQlFeGVjRmluZE1hdGNoaW5n U3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlKTsKKwkJCUV4ZWNGaW5kTWF0Y2hp bmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UsIE5VTEwpOwogCQlub2RlLT5h c192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkID0gdHJ1ZTsKIAogCQljbGFzc2lmeV9tYXRjaGlu Z19zdWJwbGFucyhub2RlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVN ZXJnZUFwcGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKaW5k ZXggM2VkOTE4MDhkZC4uZjc4MjFhYTE3OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZU1lcmdlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdl QXBwZW5kLmMKQEAgLTIxOSw3ICsyMTksNyBAQCBFeGVjTWVyZ2VBcHBlbmQoUGxhblN0YXRlICpw c3RhdGUpCiAJCSAqLwogCQlpZiAobm9kZS0+bXNfdmFsaWRfc3VicGxhbnMgPT0gTlVMTCkKIAkJ CW5vZGUtPm1zX3ZhbGlkX3N1YnBsYW5zID0KLQkJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMo bm9kZS0+bXNfcHJ1bmVfc3RhdGUsIGZhbHNlKTsKKwkJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxh bnMobm9kZS0+bXNfcHJ1bmVfc3RhdGUsIGZhbHNlLCBOVUxMKTsKIAogCQkvKgogCQkgKiBGaXJz dCB0aW1lIHRocm91Z2g6IHB1bGwgdGhlIGZpcnN0IHR1cGxlIGZyb20gZWFjaCB2YWxpZCBzdWJw bGFuLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9zcGkuYwppbmRleCA5MGQ5ODM0NTc2Li42NTliZDZkY2Q5IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9z cGkuYwpAQCAtMjY4NCw2ICsyNjg0LDcgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBw bGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJCQkJc25hcCA9IEludmFs aWRTbmFwc2hvdDsKIAogCQkJCXFkZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHN0bXQsCisJCQkJCQkJ CQkJY3BsYW4sCiAJCQkJCQkJCQkJcGxhbnNvdXJjZS0+cXVlcnlfc3RyaW5nLAogCQkJCQkJCQkJ CXNuYXAsIGNyb3NzY2hlY2tfc25hcHNob3QsCiAJCQkJCQkJCQkJZGVzdCwKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyBiL3NyYy9iYWNrZW5kL29wdGlt aXplci9wbGFuL3BsYW5uZXIuYwppbmRleCAxYjkwNzFjNzc0Li45ZTQ3YTdmZDUwIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKKysrIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC01NDksNiArNTQ5LDggQEAgc3RhbmRhcmRf cGxhbm5lcihRdWVyeSAqcGFyc2UsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywgaW50IGN1cnNv ck9wdGlvbnMsCiAJcmVzdWx0LT5wbGFuVHJlZSA9IHRvcF9wbGFuOwogCXJlc3VsdC0+cGFydFBy dW5lSW5mb3MgPSBnbG9iLT5wYXJ0UHJ1bmVJbmZvczsKIAlyZXN1bHQtPnJ0YWJsZSA9IGdsb2It PmZpbmFscnRhYmxlOworCXJlc3VsdC0+dW5wcnVuYWJsZVJlbGlkcyA9IGJtc19kaWZmZXJlbmNl KGJtc19hZGRfcmFuZ2UoTlVMTCwgMSwgbGlzdF9sZW5ndGgocmVzdWx0LT5ydGFibGUpKSwKKwkJ CQkJCQkJCQkJICBnbG9iLT5wcnVuYWJsZVJlbGlkcyk7CiAJcmVzdWx0LT5wZXJtSW5mb3MgPSBn bG9iLT5maW5hbHJ0ZXBlcm1pbmZvczsKIAlyZXN1bHQtPnJlc3VsdFJlbGF0aW9ucyA9IGdsb2It PnJlc3VsdFJlbGF0aW9uczsKIAlyZXN1bHQtPmFwcGVuZFJlbGF0aW9ucyA9IGdsb2ItPmFwcGVu ZFJlbGF0aW9uczsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJl ZnMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwppbmRleCBlMmVhNDA2 YzRlLi44Y2U2ZDExNDlkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9z ZXRyZWZzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCkBAIC0x NzY0LDggKzE3NjQsMTkgQEAgcmVnaXN0ZXJfcGFydHBydW5laW5mbyhQbGFubmVySW5mbyAqcm9v dCwgaW50IHBhcnRfcHJ1bmVfaW5kZXgsIGludCBydG9mZnNldCkKIAkJZm9yZWFjaChsMiwgcHJ1 bmVfaW5mb3MpCiAJCXsKIAkJCVBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvICpwcmVsaW5mbyA9IGxm aXJzdChsMik7CisJCQlCaXRtYXBzZXQgKnByZXNlbnRfbGVhZnBhcnRfcnRpcyA9IHByZWxpbmZv LT5wcmVzZW50X2xlYWZwYXJ0X3J0aXM7CiAKIAkJCXByZWxpbmZvLT5ydGluZGV4ICs9IHJ0b2Zm c2V0OworCQkJcHJlc2VudF9sZWFmcGFydF9ydGlzID0gb2Zmc2V0X3JlbGlkX3NldChwcmVzZW50 X2xlYWZwYXJ0X3J0aXMsCisJCQkJCQkJCQkJCQkJIHJ0b2Zmc2V0KTsKKwkJCWlmIChwcmVsaW5m by0+aW5pdGlhbF9wcnVuaW5nX3N0ZXBzICE9IE5JTCkKKwkJCQlnbG9iLT5wcnVuYWJsZVJlbGlk cyA9IGJtc19hZGRfbWVtYmVycyhnbG9iLT5wcnVuYWJsZVJlbGlkcywKKwkJCQkJCQkJCQkJCQkg ICBwcmVzZW50X2xlYWZwYXJ0X3J0aXMpOworCQkJLyoKKwkJCSAqIERvbid0IG5lZWQgdGhpcyBh bnltb3JlLCBzbyBzZXQgdG8gTlVMTCB0byBzYXZlIHNwYWNlIGluIHRoZQorCQkJICogZmluYWwg cGxhbiB0cmVlLgorCQkJICovCisJCQlwcmVsaW5mby0+cHJlc2VudF9sZWFmcGFydF9ydGlzID0g TlVMTDsKIAkJfQogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3Bh cnRwcnVuZS5jIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCmluZGV4IDYw ZmFiYjE3MzQuLmMwMjJjNWVlMGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmlu Zy9wYXJ0cHJ1bmUuYworKysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMK QEAgLTY0MSw2ICs2NDEsNyBAQCBtYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVy SW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQlQYXJ0aXRpb25lZFJlbFBydW5l SW5mbyAqcGluZm8gPSBsZmlyc3QobGMpOwogCQlSZWxPcHRJbmZvICpzdWJwYXJ0ID0gZmluZF9i YXNlX3JlbChyb290LCBwaW5mby0+cnRpbmRleCk7CiAJCUJpdG1hcHNldCAgKnByZXNlbnRfcGFy dHM7CisJCUJpdG1hcHNldCAgKnByZXNlbnRfbGVhZnBhcnRfcnRpczsKIAkJaW50CQkJbnBhcnRz ID0gc3VicGFydC0+bnBhcnRzOwogCQlpbnQJCSAgICpzdWJwbGFuX21hcDsKIAkJaW50CQkgICAq c3VicGFydF9tYXA7CkBAIC02NTcsNyArNjU4LDcgQEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVu ZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJc3VicGFy dF9tYXAgPSAoaW50ICopIHBhbGxvYyhucGFydHMgKiBzaXplb2YoaW50KSk7CiAJCW1lbXNldChz dWJwYXJ0X21hcCwgLTEsIG5wYXJ0cyAqIHNpemVvZihpbnQpKTsKIAkJcmVsaWRfbWFwID0gKE9p ZCAqKSBwYWxsb2MwKG5wYXJ0cyAqIHNpemVvZihPaWQpKTsKLQkJcHJlc2VudF9wYXJ0cyA9IE5V TEw7CisJCXByZXNlbnRfcGFydHMgPSBwcmVzZW50X2xlYWZwYXJ0X3J0aXMgPSBOVUxMOwogCiAJ CWkgPSAtMTsKIAkJd2hpbGUgKChpID0gYm1zX25leHRfbWVtYmVyKHN1YnBhcnQtPmxpdmVfcGFy dHMsIGkpKSA+PSAwKQpAQCAtNjcxLDkgKzY3MiwyNSBAQCBtYWtlX3BhcnRpdGlvbmVkcmVsX3By dW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQkJc3Vi cGxhbl9tYXBbaV0gPSBzdWJwbGFuaWR4ID0gcmVsaWRfc3VicGxhbl9tYXBbcGFydHJlbC0+cmVs aWRdIC0gMTsKIAkJCXN1YnBhcnRfbWFwW2ldID0gc3VicGFydGlkeCA9IHJlbGlkX3N1YnBhcnRf bWFwW3BhcnRyZWwtPnJlbGlkXSAtIDE7CiAJCQlyZWxpZF9tYXBbaV0gPSBwbGFubmVyX3J0X2Zl dGNoKHBhcnRyZWwtPnJlbGlkLCByb290KS0+cmVsaWQ7CisKKwkJCS8qCisJCQkgKiBUcmFjayB0 aGUgUlQgaW5kZXhlcyBvZiBwYXJ0aXRpb25zIHRvIGVuc3VyZSB0aGV5IGFyZSBpbmNsdWRlZAor CQkJICogaW4gdGhlIHBydW5hYmxlUmVsaWRzIHNldCBvZiByZWxhdGlvbnMgdGhhdCBhcmUgbG9j a2VkIGR1cmluZworCQkJICogZXhlY3V0aW9uLiBUaGlzIGVuc3VyZXMgdGhhdCBpZiB0aGUgcGxh biBpcyBjYWNoZWQsIHRoZXNlCisJCQkgKiBwYXJ0aXRpb25zIGFyZSBsb2NrZWQgd2hlbiB0aGUg cGxhbiBpcyByZXVzZWQuCisJCQkgKgorCQkJICogUGFydGl0aW9ucyB3aXRob3V0IGEgc3VicGxh biBhbmQgc3ViLXBhcnRpdGlvbmVkIHBhcnRpdGlvbnMKKwkJCSAqIHdoZXJlIG5vbmUgb2YgdGhl IHN1Yi1wYXJ0aXRpb25zIGhhdmUgYSBzdWJwbGFuIGR1ZSB0bworCQkJICogY29uc3RyYWludCBl eGNsdXNpb24gYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGlzIHNldC4gSW5zdGVhZCwKKwkJCSAqIHRo ZXkgYXJlIGFkZGVkIHRvIHRoZSB1bnBydW5hYmxlUmVsaWRzIHNldCwgYW5kIHRoZSByZWxhdGlv bnMKKwkJCSAqIGluIHRoaXMgc2V0IGFyZSBsb2NrZWQgYnkgQWNxdWlyZUV4ZWN1dG9yTG9ja3Mo KSBiZWZvcmUKKwkJCSAqIGV4ZWN1dGluZyBhIGNhY2hlZCBwbGFuLgorCQkJICovCiAJCQlpZiAo c3VicGxhbmlkeCA+PSAwKQogCQkJewogCQkJCXByZXNlbnRfcGFydHMgPSBibXNfYWRkX21lbWJl cihwcmVzZW50X3BhcnRzLCBpKTsKKwkJCQlwcmVzZW50X2xlYWZwYXJ0X3J0aXMgPSBibXNfYWRk X21lbWJlcihwcmVzZW50X2xlYWZwYXJ0X3J0aXMsCisJCQkJCQkJCQkJCQkJICAgcGFydHJlbC0+ cmVsaWQpOwogCiAJCQkJLyogUmVjb3JkIGZpbmRpbmcgdGhpcyBzdWJwbGFuICAqLwogCQkJCXN1 YnBsYW5zZm91bmQgPSBibXNfYWRkX21lbWJlcihzdWJwbGFuc2ZvdW5kLCBzdWJwbGFuaWR4KTsK QEAgLTY5MSw2ICs3MDgsNyBAQCBtYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVy SW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCiAJCS8qIFJlY29yZCB0aGUgbWFw cyBhbmQgb3RoZXIgaW5mb3JtYXRpb24uICovCiAJCXBpbmZvLT5wcmVzZW50X3BhcnRzID0gcHJl c2VudF9wYXJ0czsKKwkJcGluZm8tPnByZXNlbnRfbGVhZnBhcnRfcnRpcyA9IHByZXNlbnRfbGVh ZnBhcnRfcnRpczsKIAkJcGluZm8tPm5wYXJ0cyA9IG5wYXJ0czsKIAkJcGluZm8tPnN1YnBsYW5f bWFwID0gc3VicGxhbl9tYXA7CiAJCXBpbmZvLT5zdWJwYXJ0X21hcCA9IHN1YnBhcnRfbWFwOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyBiL3NyYy9iYWNrZW5kL3Rjb3Av cHF1ZXJ5LmMKaW5kZXggYTFmOGQwM2RiMS4uNmU4ZjZiMWI4ZiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdGNvcC9wcXVlcnkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCkBAIC0z Niw2ICszNiw3IEBAIFBvcnRhbAkJQWN0aXZlUG9ydGFsID0gTlVMTDsKIAogCiBzdGF0aWMgdm9p ZCBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCisJCQkJCQkgQ2FjaGVkUGxhbiAqY3Bs YW4sCiAJCQkJCQkgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkJCSBQYXJhbUxpc3RJbmZv IHBhcmFtcywKIAkJCQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKQEAgLTY1LDYgKzY2 LDcgQEAgc3RhdGljIHZvaWQgRG9Qb3J0YWxSZXdpbmQoUG9ydGFsIHBvcnRhbCk7CiAgKi8KIFF1 ZXJ5RGVzYyAqCiBDcmVhdGVRdWVyeURlc2MoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LAorCQkJ CUNhY2hlZFBsYW4gKmNwbGFuLAogCQkJCWNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJU25h cHNob3Qgc25hcHNob3QsCiAJCQkJU25hcHNob3QgY3Jvc3NjaGVja19zbmFwc2hvdCwKQEAgLTc3 LDYgKzc5LDcgQEAgQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwKIAog CXFkLT5vcGVyYXRpb24gPSBwbGFubmVkc3RtdC0+Y29tbWFuZFR5cGU7CS8qIG9wZXJhdGlvbiAq LwogCXFkLT5wbGFubmVkc3RtdCA9IHBsYW5uZWRzdG10OwkvKiBwbGFuICovCisJcWQtPmNwbGFu ID0gY3BsYW47CQkJLyogQ2FjaGVkUGxhbiBzdXBwbHlpbmcgdGhlIHBsYW5uZWRzdG10ICovCiAJ cWQtPnNvdXJjZVRleHQgPSBzb3VyY2VUZXh0OwkvKiBxdWVyeSB0ZXh0ICovCiAJcWQtPnNuYXBz aG90ID0gUmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CS8qIHNuYXBzaG90ICovCiAJLyogUkkg Y2hlY2sgc25hcHNob3QgKi8KQEAgLTEyMiw2ICsxMjUsNyBAQCBGcmVlUXVlcnlEZXNjKFF1ZXJ5 RGVzYyAqcWRlc2MpCiAgKgkJUE9SVEFMX09ORV9SRVRVUk5JTkcsIG9yIFBPUlRBTF9PTkVfTU9E X1dJVEggcG9ydGFsCiAgKgogICoJcGxhbjogdGhlIHBsYW4gdHJlZSBmb3IgdGhlIHF1ZXJ5Cisg KgljcGxhbjogQ2FjaGVkUGxhbiBzdXBwbHlpbmcgdGhlIHBsYW4KICAqCXNvdXJjZVRleHQ6IHRo ZSBzb3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkKICAqCXBhcmFtczogYW55IHBhcmFtZXRlcnMgbmVl ZGVkCiAgKglkZXN0OiB3aGVyZSB0byBzZW5kIHJlc3VsdHMKQEAgLTEzNCw2ICsxMzgsNyBAQCBG cmVlUXVlcnlEZXNjKFF1ZXJ5RGVzYyAqcWRlc2MpCiAgKi8KIHN0YXRpYyB2b2lkCiBQcm9jZXNz UXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCisJCQkgQ2FjaGVkUGxhbiAqY3BsYW4sCiAJCQkgY29u c3QgY2hhciAqc291cmNlVGV4dCwKIAkJCSBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCSBRdWVy eUVudmlyb25tZW50ICpxdWVyeUVudiwKQEAgLTE0NSw3ICsxNTAsNyBAQCBQcm9jZXNzUXVlcnko UGxhbm5lZFN0bXQgKnBsYW4sCiAJLyoKIAkgKiBDcmVhdGUgdGhlIFF1ZXJ5RGVzYyBvYmplY3QK IAkgKi8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgc291cmNlVGV4dCwKKwlx dWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgY3BsYW4sIHNvdXJjZVRleHQsCiAJCQkJ CQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJZGVzdCwg cGFyYW1zLCBxdWVyeUVudiwgMCk7CiAKQEAgLTQ5Myw2ICs0OTgsNyBAQCBQb3J0YWxTdGFydChQ b3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkgKiB0aGUgZGVzdGluYXRp b24gdG8gRGVzdE5vbmUuCiAJCQkJICovCiAJCQkJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNj KGxpbml0aWFsX25vZGUoUGxhbm5lZFN0bXQsIHBvcnRhbC0+c3RtdHMpLAorCQkJCQkJCQkJCQlw b3J0YWwtPmNwbGFuLAogCQkJCQkJCQkJCQlwb3J0YWwtPnNvdXJjZVRleHQsCiAJCQkJCQkJCQkJ CUdldEFjdGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJCQkJCUludmFsaWRTbmFwc2hvdCwKQEAgLTEy NzYsNiArMTI4Miw3IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJCQl7CiAJCQkJ Lyogc3RhdGVtZW50IGNhbiBzZXQgdGFnIHN0cmluZyAqLwogCQkJCVByb2Nlc3NRdWVyeShwc3Rt dCwKKwkJCQkJCQkgcG9ydGFsLT5jcGxhbiwKIAkJCQkJCQkgcG9ydGFsLT5zb3VyY2VUZXh0LAog CQkJCQkJCSBwb3J0YWwtPnBvcnRhbFBhcmFtcywKIAkJCQkJCQkgcG9ydGFsLT5xdWVyeUVudiwK QEAgLTEyODUsNiArMTI5Miw3IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJCQl7 CiAJCQkJLyogc3RtdCBhZGRlZCBieSByZXdyaXRlIGNhbm5vdCBzZXQgdGFnICovCiAJCQkJUHJv Y2Vzc1F1ZXJ5KHBzdG10LAorCQkJCQkJCSBwb3J0YWwtPmNwbGFuLAogCQkJCQkJCSBwb3J0YWwt PnNvdXJjZVRleHQsCiAJCQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFyYW1zLAogCQkJCQkJCSBwb3J0 YWwtPnF1ZXJ5RW52LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNh Y2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwppbmRleCA1YWYxYTE2 OGVjLi41Yjc1ZGFkZjEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFu Y2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwpAQCAtMTA0 LDcgKzEwNCw4IEBAIHN0YXRpYyBMaXN0ICpSZXZhbGlkYXRlQ2FjaGVkUXVlcnkoQ2FjaGVkUGxh blNvdXJjZSAqcGxhbnNvdXJjZSwKIAkJCQkJCQkJICAgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlF bnYpOwogc3RhdGljIGJvb2wgQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5z b3VyY2UpOwogc3RhdGljIENhY2hlZFBsYW4gKkJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291 cmNlICpwbGFuc291cmNlLCBMaXN0ICpxbGlzdCwKLQkJCQkJCQkJICAgUGFyYW1MaXN0SW5mbyBi b3VuZFBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOworCQkJCQkJCQkgICBQYXJh bUxpc3RJbmZvIGJvdW5kUGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKKwkJCQkJ CQkJICAgYm9vbCBnZW5lcmljKTsKIHN0YXRpYyBib29sIGNob29zZV9jdXN0b21fcGxhbihDYWNo ZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQkJCQkJCSAgIFBhcmFtTGlzdEluZm8gYm91bmRQ YXJhbXMpOwogc3RhdGljIGRvdWJsZSBjYWNoZWRfcGxhbl9jb3N0KENhY2hlZFBsYW4gKnBsYW4s IGJvb2wgaW5jbHVkZV9wbGFubmVyKTsKQEAgLTgxNSw4ICs4MTYsMTEgQEAgUmV2YWxpZGF0ZUNh Y2hlZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAgKiBDYWxsZXIgbXVzdCBo YXZlIGFscmVhZHkgY2FsbGVkIFJldmFsaWRhdGVDYWNoZWRRdWVyeSB0byB2ZXJpZnkgdGhhdCB0 aGUKICAqIHF1ZXJ5dHJlZSBpcyB1cCB0byBkYXRlLgogICoKLSAqIE9uIGEgInRydWUiIHJldHVy biwgd2UgaGF2ZSBhY3F1aXJlZCB0aGUgbG9ja3MgbmVlZGVkIHRvIHJ1biB0aGUgcGxhbi4KLSAq IChXZSBtdXN0IGRvIHRoaXMgZm9yIHRoZSAidHJ1ZSIgcmVzdWx0IHRvIGJlIHJhY2UtY29uZGl0 aW9uLWZyZWUuKQorICogT24gYSAidHJ1ZSIgcmV0dXJuLCB3ZSBoYXZlIGFjcXVpcmVkIGxvY2tz IG9uIHRoZSAidW5wcnVuYWJsZVJlbGlkcyIgc2V0CisgKiBmb3IgYWxsIHBsYW5zIGluIHBsYW5z b3VyY2UtPnN0bXRfbGlzdC4gVGhlIHBsYW5zIGFyZSBub3QgY29tcGxldGVseQorICogcmFjZS1j b25kaXRpb24tZnJlZSB1bnRpbCB0aGUgZXhlY3V0b3IgdGFrZXMgbG9ja3Mgb24gdGhlIHNldCBv ZiBwcnVuYWJsZQorICogcmVsYXRpb25zIHRoYXQgc3Vydml2ZSBpbml0aWFsIHJ1bnRpbWUgcHJ1 bmluZyBkdXJpbmcgZXhlY3V0b3IKKyAqIGluaXRpYWxpemF0aW9uOwogICovCiBzdGF0aWMgYm9v bAogQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpCkBAIC04OTMs MTAgKzg5NywxMCBAQCBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJj ZSkKICAqIG9yIGl0IGNhbiBiZSBzZXQgdG8gTklMIGlmIHdlIG5lZWQgdG8gcmUtY29weSB0aGUg cGxhbnNvdXJjZSdzIHF1ZXJ5X2xpc3QuCiAgKgogICogVG8gYnVpbGQgYSBnZW5lcmljLCBwYXJh bWV0ZXItdmFsdWUtaW5kZXBlbmRlbnQgcGxhbiwgcGFzcyBOVUxMIGZvcgotICogYm91bmRQYXJh bXMuICBUbyBidWlsZCBhIGN1c3RvbSBwbGFuLCBwYXNzIHRoZSBhY3R1YWwgcGFyYW1ldGVyIHZh bHVlcyB2aWEKLSAqIGJvdW5kUGFyYW1zLiAgRm9yIGJlc3QgZWZmZWN0LCB0aGUgUEFSQU1fRkxB R19DT05TVCBmbGFnIHNob3VsZCBiZSBzZXQgb24KLSAqIGVhY2ggcGFyYW1ldGVyIHZhbHVlOyBv dGhlcndpc2UgdGhlIHBsYW5uZXIgd2lsbCB0cmVhdCB0aGUgdmFsdWUgYXMgYQotICogaGludCBy YXRoZXIgdGhhbiBhIGhhcmQgY29uc3RhbnQuCisgKiBib3VuZFBhcmFtcywgYW5kIHRydWUgZm9y IGdlbmVyaWMuICBUbyBidWlsZCBhIGN1c3RvbSBwbGFuLCBwYXNzIHRoZSBhY3R1YWwKKyAqIHBh cmFtZXRlciB2YWx1ZXMgdmlhIGJvdW5kUGFyYW1zLCBhbmQgZmFsc2UgZm9yIGdlbmVyaWMuICBG b3IgYmVzdCBlZmZlY3QsCisgKiB0aGUgUEFSQU1fRkxBR19DT05TVCBmbGFnIHNob3VsZCBiZSBz ZXQgb24gZWFjaCBwYXJhbWV0ZXIgdmFsdWU7IG90aGVyd2lzZQorICogdGhlIHBsYW5uZXIgd2ls bCB0cmVhdCB0aGUgdmFsdWUgYXMgYSBoaW50IHJhdGhlciB0aGFuIGEgaGFyZCBjb25zdGFudC4K ICAqCiAgKiBQbGFubmluZyB3b3JrIGlzIGRvbmUgaW4gdGhlIGNhbGxlcidzIG1lbW9yeSBjb250 ZXh0LiAgVGhlIGZpbmlzaGVkIHBsYW4KICAqIGlzIGluIGEgY2hpbGQgbWVtb3J5IGNvbnRleHQs IHdoaWNoIHR5cGljYWxseSBzaG91bGQgZ2V0IHJlcGFyZW50ZWQKQEAgLTkwNCw3ICs5MDgsOCBA QCBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKICAqLwogc3Rh dGljIENhY2hlZFBsYW4gKgogQnVpbGRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5z b3VyY2UsIExpc3QgKnFsaXN0LAotCQkJCVBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsIFF1ZXJ5 RW52aXJvbm1lbnQgKnF1ZXJ5RW52KQorCQkJCVBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsIFF1 ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAorCQkJCWJvb2wgZ2VuZXJpYykKIHsKIAlDYWNoZWRQ bGFuICpwbGFuOwogCUxpc3QJICAgKnBsaXN0OwpAQCAtMTAyNiw2ICsxMDMxLDcgQEAgQnVpbGRD YWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIExpc3QgKnFsaXN0LAogCXBs YW4tPnJlZmNvdW50ID0gMDsKIAlwbGFuLT5jb250ZXh0ID0gcGxhbl9jb250ZXh0OwogCXBsYW4t PmlzX29uZXNob3QgPSBwbGFuc291cmNlLT5pc19vbmVzaG90OworCXBsYW4tPmlzX2dlbmVyaWMg PSBnZW5lcmljOwogCXBsYW4tPmlzX3NhdmVkID0gZmFsc2U7CiAJcGxhbi0+aXNfdmFsaWQgPSB0 cnVlOwogCkBAIC0xMTk2LDcgKzEyMDIsNyBAQCBHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3Vy Y2UgKnBsYW5zb3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCiAJCWVsc2UKIAkJewog CQkJLyogQnVpbGQgYSBuZXcgZ2VuZXJpYyBwbGFuICovCi0JCQlwbGFuID0gQnVpbGRDYWNoZWRQ bGFuKHBsYW5zb3VyY2UsIHFsaXN0LCBOVUxMLCBxdWVyeUVudik7CisJCQlwbGFuID0gQnVpbGRD YWNoZWRQbGFuKHBsYW5zb3VyY2UsIHFsaXN0LCBOVUxMLCBxdWVyeUVudiwgdHJ1ZSk7CiAJCQkv KiBKdXN0IG1ha2UgcmVhbCBzdXJlIHBsYW5zb3VyY2UtPmdwbGFuIGlzIGNsZWFyICovCiAJCQlS ZWxlYXNlR2VuZXJpY1BsYW4ocGxhbnNvdXJjZSk7CiAJCQkvKiBMaW5rIHRoZSBuZXcgZ2VuZXJp YyBwbGFuIGludG8gdGhlIHBsYW5zb3VyY2UgKi8KQEAgLTEyNDEsNyArMTI0Nyw3IEBAIEdldENh Y2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgUGFyYW1MaXN0SW5mbyBib3Vu ZFBhcmFtcywKIAlpZiAoY3VzdG9tcGxhbikKIAl7CiAJCS8qIEJ1aWxkIGEgY3VzdG9tIHBsYW4g Ki8KLQkJcGxhbiA9IEJ1aWxkQ2FjaGVkUGxhbihwbGFuc291cmNlLCBxbGlzdCwgYm91bmRQYXJh bXMsIHF1ZXJ5RW52KTsKKwkJcGxhbiA9IEJ1aWxkQ2FjaGVkUGxhbihwbGFuc291cmNlLCBxbGlz dCwgYm91bmRQYXJhbXMsIHF1ZXJ5RW52LCBmYWxzZSk7CiAJCS8qIEFjY3VtdWxhdGUgdG90YWwg Y29zdHMgb2YgY3VzdG9tIHBsYW5zICovCiAJCXBsYW5zb3VyY2UtPnRvdGFsX2N1c3RvbV9jb3N0 ICs9IGNhY2hlZF9wbGFuX2Nvc3QocGxhbiwgdHJ1ZSk7CiAKQEAgLTEzODcsOCArMTM5Myw4IEBA IENhY2hlZFBsYW5BbGxvd3NTaW1wbGVWYWxpZGl0eUNoZWNrKENhY2hlZFBsYW5Tb3VyY2UgKnBs YW5zb3VyY2UsCiAJfQogCiAJLyoKLQkgKiBSZWplY3QgaWYgQWNxdWlyZUV4ZWN1dG9yTG9ja3Mg d291bGQgaGF2ZSBhbnl0aGluZyB0byBkby4gIFRoaXMgaXMKLQkgKiBwcm9iYWJseSB1bm5lY2Vz c2FyeSBnaXZlbiB0aGUgcHJldmlvdXMgY2hlY2ssIGJ1dCBsZXQncyBiZSBzYWZlLgorCSAqIFJl amVjdCBpZiB0aGVyZSBhcmUgYW55IGxvY2thYmxlIHJlbGF0aW9ucy4gIFRoaXMgaXMgcHJvYmFi bHkKKwkgKiB1bm5lY2Vzc2FyeSBnaXZlbiB0aGUgcHJldmlvdXMgY2hlY2ssIGJ1dCBsZXQncyBi ZSBzYWZlLgogCSAqLwogCWZvcmVhY2gobGMsIHBsYW4tPnN0bXRfbGlzdCkKIAl7CkBAIC0xNzc2 LDcgKzE3ODIsNyBAQCBBY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xpc3QsIGJvb2wg YWNxdWlyZSkKIAlmb3JlYWNoKGxjMSwgc3RtdF9saXN0KQogCXsKIAkJUGxhbm5lZFN0bXQgKnBs YW5uZWRzdG10ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIGxjMSk7Ci0JCUxpc3RDZWxsICAg KmxjMjsKKwkJaW50CQkJcnRpbmRleDsKIAogCQlpZiAocGxhbm5lZHN0bXQtPmNvbW1hbmRUeXBl ID09IENNRF9VVElMSVRZKQogCQl7CkBAIC0xNzk0LDkgKzE4MDAsMTMgQEAgQWNxdWlyZUV4ZWN1 dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpCiAJCQljb250aW51ZTsKIAkJ fQogCi0JCWZvcmVhY2gobGMyLCBwbGFubmVkc3RtdC0+cnRhYmxlKQorCQlydGluZGV4ID0gLTE7 CisJCXdoaWxlICgocnRpbmRleCA9IGJtc19uZXh0X21lbWJlcihwbGFubmVkc3RtdC0+dW5wcnVu YWJsZVJlbGlkcywKKwkJCQkJCQkJCQkgIHJ0aW5kZXgpKSA+PSAwKQogCQl7Ci0JCQlSYW5nZVRi bEVudHJ5ICpydGUgPSAoUmFuZ2VUYmxFbnRyeSAqKSBsZmlyc3QobGMyKTsKKwkJCVJhbmdlVGJs RW50cnkgKnJ0ZSA9IGxpc3RfbnRoX25vZGUoUmFuZ2VUYmxFbnRyeSwKKwkJCQkJCQkJCQkJICAg cGxhbm5lZHN0bXQtPnJ0YWJsZSwKKwkJCQkJCQkJCQkJICAgcnRpbmRleCAtIDEpOwogCiAJCQlp ZiAoIShydGUtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OIHx8CiAJCQkJICAocnRlLT5ydGVraW5k ID09IFJURV9TVUJRVUVSWSAmJiBPaWRJc1ZhbGlkKHJ0ZS0+cmVsaWQpKSkpCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9l eHBsYWluLmgKaW5kZXggM2FiMGFhZTc4Zi4uMjFjNzFlMGQ1MyAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxh aW4uaApAQCAtMTAzLDggKzEwMyw5IEBAIGV4dGVybiB2b2lkIEV4cGxhaW5PbmVVdGlsaXR5KE5v ZGUgKnV0aWxpdHlTdG10LCBJbnRvQ2xhdXNlICppbnRvLAogCQkJCQkJCSAgRXhwbGFpblN0YXRl ICplcywgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCQkJCQkJICBQYXJhbUxpc3RJbmZvIHBh cmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOwogCi1leHRlcm4gdm9pZCBFeHBsYWlu T25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sCi0JCQkJ CQkgICBFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKK2V4dGVybiB2 b2lkIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgQ2FjaGVkUGxhbiAq Y3BsYW4sCisJCQkJCQkgICBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAorCQkJ CQkJICAgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCQkJCQkgICBQYXJhbUxpc3RJbmZvIHBh cmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCiAJCQkJCQkgICBjb25zdCBpbnN0cl90 aW1lICpwbGFuZHVyYXRpb24sCiAJCQkJCQkgICBjb25zdCBCdWZmZXJVc2FnZSAqYnVmdXNhZ2Us CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmggYi9zcmMv aW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKaW5kZXggYzBiYTIzMDk3Zi4uNDk2ZWNl ZjRjNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oCisr KyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaApAQCAtNDgsNiArNDgsNyBA QCBleHRlcm4gdm9pZCBFeGVjQ2xlYW51cFR1cGxlUm91dGluZyhNb2RpZnlUYWJsZVN0YXRlICpt dHN0YXRlLAogICogbnBhcnRzCQkJCQkJTGVuZ3RoIG9mIHN1YnBsYW5fbWFwW10gYW5kIHN1YnBh cnRfbWFwW10uCiAgKiBzdWJwbGFuX21hcAkJCQkJU3VicGxhbiBpbmRleCBieSBwYXJ0aXRpb24g aW5kZXgsIG9yIC0xLgogICogc3VicGFydF9tYXAJCQkJCVN1YnBhcnQgaW5kZXggYnkgcGFydGl0 aW9uIGluZGV4LCBvciAtMS4KKyAqIHJlbGlkX21hcAkJCQkJUGFydGl0aW9uIE9JRCBieSBwYXJ0 aXRpb24gaW5kZXguCiAgKiBwcmVzZW50X3BhcnRzCQkJCUEgQml0bWFwc2V0IG9mIHRoZSBwYXJ0 aXRpb24gaW5kZXhlcyB0aGF0IHdlCiAgKgkJCQkJCQkJaGF2ZSBzdWJwbGFucyBvciBzdWJwYXJ0 cyBmb3IuCiAgKiBpbml0aWFsX3BydW5pbmdfc3RlcHMJCUxpc3Qgb2YgUGFydGl0aW9uUHJ1bmVT dGVwcyB1c2VkIHRvCkBAIC02NSw2ICs2Niw3IEBAIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvbmVk UmVsUHJ1bmluZ0RhdGEKIAlpbnQJCQlucGFydHM7CiAJaW50CQkgICAqc3VicGxhbl9tYXA7CiAJ aW50CQkgICAqc3VicGFydF9tYXA7CisJT2lkCQkgICAqcmVsaWRfbWFwOwogCUJpdG1hcHNldCAg KnByZXNlbnRfcGFydHM7CiAJTGlzdAkgICAqaW5pdGlhbF9wcnVuaW5nX3N0ZXBzOwogCUxpc3QJ ICAgKmV4ZWNfcHJ1bmluZ19zdGVwczsKQEAgLTk0LDYgKzk2LDkgQEAgdHlwZWRlZiBzdHJ1Y3Qg UGFydGl0aW9uUHJ1bmluZ0RhdGEKICAqIHRoZSBjbGF1c2VzIGJlaW5nIHVuYWJsZSB0byBtYXRj aCB0byBhbnkgdHVwbGUgdGhhdCB0aGUgc3VicGxhbiBjb3VsZAogICogcG9zc2libHkgcHJvZHVj ZS4KICAqCisgKiBsb2NrbW9kZQkJCQlMb2NrIG1vZGUgdG8gbG9jayB0aGUgbGVhZiBwYXJ0aXRp b25zIHdpdGgsIGlmIG5lZWRlZDsKKyAqCQkJCQkJdGhpcyBpcyBzYW1lIGFzIHRoZSBsb2NrIG1v ZGUgdGhhdCB0aGUgcm9vdCBwYXJ0aXRpb25lZAorICoJCQkJCQl0YWJsZSB3b3VsZCBiZSBsb2Nr ZWQgd2l0aC4KICAqIGV4ZWNwYXJhbWlkcwkJCUNvbnRhaW5zIHBhcmFtaWRzIG9mIFBBUkFNX0VY RUMgUGFyYW1zIGZvdW5kIHdpdGhpbgogICoJCQkJCQlhbnkgb2YgdGhlIHBhcnRwcnVuZWRhdGEg c3RydWN0cy4gIFBydW5pbmcgbXVzdCBiZQogICoJCQkJCQlkb25lIGFnYWluIGVhY2ggdGltZSB0 aGUgdmFsdWUgb2Ygb25lIG9mIHRoZXNlCkBAIC0xMTYsNiArMTIxLDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgUGFydGl0aW9uUHJ1bmluZ0RhdGEKICAqLwogdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUHJ1 bmVTdGF0ZQogeworCWludAkJCWxvY2ttb2RlOwogCUJpdG1hcHNldCAgKmV4ZWNwYXJhbWlkczsK IAlCaXRtYXBzZXQgICpvdGhlcl9zdWJwbGFuczsKIAlNZW1vcnlDb250ZXh0IHBydW5lX2NvbnRl eHQ7CkBAIC0xMzEsNyArMTM3LDggQEAgZXh0ZXJuIFBhcnRpdGlvblBydW5lU3RhdGUgKkV4ZWNJ bml0UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAkJCQkJCQkJCQkJCQkg Qml0bWFwc2V0ICpyb290X3BhcmVudF9yZWxpZHMsCiAJCQkJCQkJCQkJCQkJIEJpdG1hcHNldCAq KmluaXRpYWxseV92YWxpZF9zdWJwbGFucyk7CiBleHRlcm4gQml0bWFwc2V0ICpFeGVjRmluZE1h dGNoaW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKLQkJCQkJCQkJ CQkgICBib29sIGluaXRpYWxfcHJ1bmUpOworCQkJCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9wcnVu ZSwKKwkJCQkJCQkJCQkgICBMaXN0ICoqbGVhZl9wYXJ0X29pZHMpOwogZXh0ZXJuIFBhcnRpdGlv blBydW5lU3RhdGUgKkNyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoRVN0YXRlICplc3RhdGUsCiAJ CQkJCQkJCQkJCQkJICBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbyk7CiAjZW5kaWYJCQkJ CQkJLyogRVhFQ1BBUlRJVElPTl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRv ci9leGVjZGVzYy5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaAppbmRleCAwYTcy NzRlMjZjLi4wZTcyNDU0MzVkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVj ZGVzYy5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKQEAgLTM1LDYgKzM1 LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUXVlcnlEZXNjCiAJLyogVGhlc2UgZmllbGRzIGFyZSBwcm92 aWRlZCBieSBDcmVhdGVRdWVyeURlc2MgKi8KIAlDbWRUeXBlCQlvcGVyYXRpb247CQkvKiBDTURf U0VMRUNULCBDTURfVVBEQVRFLCBldGMuICovCiAJUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10Owkv KiBwbGFubmVyJ3Mgb3V0cHV0IChjb3VsZCBiZSB1dGlsaXR5LCB0b28pICovCisJQ2FjaGVkUGxh biAqY3BsYW47CQkJLyogQ2FjaGVkUGxhbiB0aGF0IHN1cHBsaWVzIHRoZSBwbGFubmVkc3RtdCAq LwogCWNvbnN0IGNoYXIgKnNvdXJjZVRleHQ7CQkvKiBzb3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkg Ki8KIAlTbmFwc2hvdAlzbmFwc2hvdDsJCS8qIHNuYXBzaG90IHRvIHVzZSBmb3IgcXVlcnkgKi8K IAlTbmFwc2hvdAljcm9zc2NoZWNrX3NuYXBzaG90OwkvKiBjcm9zc2NoZWNrIGZvciBSSSB1cGRh dGUvZGVsZXRlICovCkBAIC01Nyw2ICs1OCw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwog CiAvKiBpbiBwcXVlcnkuYyAqLwogZXh0ZXJuIFF1ZXJ5RGVzYyAqQ3JlYXRlUXVlcnlEZXNjKFBs YW5uZWRTdG10ICpwbGFubmVkc3RtdCwKKwkJCQkJCQkJICBDYWNoZWRQbGFuICpjcGxhbiwKIAkJ CQkJCQkJICBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJCQkJCQkgIFNuYXBzaG90IHNuYXBz aG90LAogCQkJCQkJCQkgIFNuYXBzaG90IGNyb3NzY2hlY2tfc25hcHNob3QsCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNu b2Rlcy5oCmluZGV4IDUxOGE5ZmNkMTUuLjFlZDkyNWI5OWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5o CkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUu aCIKICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCiAjaW5jbHVkZSAidXRpbHMvcXVlcnllbnZp cm9ubWVudC5oIgorI2luY2x1ZGUgInV0aWxzL3BsYW5jYWNoZS5oIgogI2luY2x1ZGUgInV0aWxz L3JlbHRyaWdnZXIuaCIKICNpbmNsdWRlICJ1dGlscy9zaGFyZWR0dXBsZXN0b3JlLmgiCiAjaW5j bHVkZSAidXRpbHMvc25hcHNob3QuaCIKQEAgLTYzNiw2ICs2MzcsNyBAQCB0eXBlZGVmIHN0cnVj dCBFU3RhdGUKIAkJCQkJCQkJCQkgKiBFeGVjUm93TWFya3MsIG9yIE5VTEwgaWYgbm9uZSAqLwog CUxpc3QJICAgKmVzX3J0ZXBlcm1pbmZvczsJLyogTGlzdCBvZiBSVEVQZXJtaXNzaW9uSW5mbyAq LwogCVBsYW5uZWRTdG10ICplc19wbGFubmVkc3RtdDsJLyogbGluayB0byB0b3Agb2YgcGxhbiB0 cmVlICovCisJQ2FjaGVkUGxhbiAqZXNfY2FjaGVkcGxhbjsKIAlMaXN0CSAgICplc19wYXJ0X3By dW5lX2luZm9zOwkvKiBQbGFubmVkU3RtdC5wYXJ0UHJ1bmVJbmZvcyAqLwogCUxpc3QJICAgKmVz X3BhcnRfcHJ1bmVfc3RhdGVzOwkvKiBMaXN0IG9mIFBhcnRpdGlvblBydW5lU3RhdGUgKi8KIAlM aXN0CSAgICplc19wYXJ0X3BydW5lX3Jlc3VsdHM7CS8qIExpc3Qgb2YgQml0bWFwc2V0ICovCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25v ZGVzL3BhdGhub2Rlcy5oCmluZGV4IDhkMzBiNmU4OTYuLmNjMjE5MGVhNjMgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3Bh dGhub2Rlcy5oCkBAIC0xMTYsNiArMTE2LDEyIEBAIHR5cGVkZWYgc3RydWN0IFBsYW5uZXJHbG9i YWwKIAkvKiAiZmxhdCIgcmFuZ2V0YWJsZSBmb3IgZXhlY3V0b3IgKi8KIAlMaXN0CSAgICpmaW5h bHJ0YWJsZTsKIAorCS8qCisJICogUlQgaW5kZXhlcyBvZiByZWxhdGlvbnMgc3ViamVjdCB0byBy ZW1vdmFsIGZyb20gdGhlIHBsYW4gZHVlIHRvIHJ1bnRpbWUKKwkgKiBwcnVuaW5nIGF0IHBsYW4g aW5pdGlhbGl6YXRpb24gdGltZQorCSAqLworCUJpdG1hcHNldCAgKnBydW5hYmxlUmVsaWRzOwor CiAJLyogImZsYXQiIGxpc3Qgb2YgUlRFUGVybWlzc2lvbkluZm9zICovCiAJTGlzdAkgICAqZmlu YWxydGVwZXJtaW5mb3M7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rl cy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggMzlkMDI4MWMyMy4uNGY1 NTI1NTBjOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKKysrIGIv c3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAgLTc0LDYgKzc0LDEwIEBAIHR5cGVkZWYg c3RydWN0IFBsYW5uZWRTdG10CiAKIAlMaXN0CSAgICpydGFibGU7CQkJLyogbGlzdCBvZiBSYW5n ZVRibEVudHJ5IG5vZGVzICovCiAKKwlCaXRtYXBzZXQgICp1bnBydW5hYmxlUmVsaWRzOwkvKiBS VCBpbmRleGVzIG9mIHJlbGF0aW9ucyB0aGF0IGFyZSBub3QKKwkJCQkJCQkJCSAqIHN1YmplY3Qg dG8gcnVudGltZSBwcnVuaW5nOyBmb3IKKwkJCQkJCQkJCSAqIEFjcXVpcmVFeGVjdXRvckxvY2tz KCkgKi8KKwogCUxpc3QJICAgKnBlcm1JbmZvczsJCS8qIGxpc3Qgb2YgUlRFUGVybWlzc2lvbklu Zm8gbm9kZXMgZm9yIHJ0YWJsZQogCQkJCQkJCQkgKiBlbnRyaWVzIG5lZWRpbmcgb25lICovCiAK QEAgLTE0NjUsNiArMTQ2OSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25lZFJlbFBydW5l SW5mbwogCS8qIEluZGV4ZXMgb2YgYWxsIHBhcnRpdGlvbnMgd2hpY2ggc3VicGxhbnMgb3Igc3Vi cGFydHMgYXJlIHByZXNlbnQgZm9yICovCiAJQml0bWFwc2V0ICAqcHJlc2VudF9wYXJ0czsKIAor CS8qCisJICogUlQgaW5kZXhlcyBvZiBhbGwgbGVhZiBmb3Igd2hpY2ggc3VicGxhbnMgYXJlIHBy ZXNlbnQ7IG9ubHkgdXNlZCBkdXJpbmcKKwkgKiBwbGFubmluZyB0byBoZWxwIGluIHRoZSBjb25z dHJ1Y3Rpb24gb2YgUGxhbm5lckdsb2JhbC5wcnVuYWJsZVJlbGlkcworCSAqIGFuZCBzZXQgdG8g TlVMTCBhZnRlcndhcmRzIHRvIHNhdmUgc3BhY2UgaW4gdGhlIGZpbmFsIHBsYW4gdHJlZS4KKwkg Ki8KKwlCaXRtYXBzZXQgICpwcmVzZW50X2xlYWZwYXJ0X3J0aXM7CisKIAkvKiBMZW5ndGggb2Yg dGhlIGZvbGxvd2luZyBhcnJheXM6ICovCiAJaW50CQkJbnBhcnRzOwogCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNo ZS5oCmluZGV4IGE5MGRmZGY5MDYuLjBiNWVlMDA3Y2EgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3V0aWxzL3BsYW5jYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCkBA IC0xNDksNiArMTQ5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ2FjaGVkUGxhbgogCWludAkJCW1hZ2lj OwkJCS8qIHNob3VsZCBlcXVhbCBDQUNIRURQTEFOX01BR0lDICovCiAJTGlzdAkgICAqc3RtdF9s aXN0OwkJLyogbGlzdCBvZiBQbGFubmVkU3RtdHMgKi8KIAlib29sCQlpc19vbmVzaG90OwkJLyog aXMgaXQgYSAib25lc2hvdCIgcGxhbj8gKi8KKwlib29sCQlpc19nZW5lcmljOwkJLyogaXMgaXQg YSByZXVzYWJsZSBnZW5lcmljIHBsYW4/ICovCiAJYm9vbAkJaXNfc2F2ZWQ7CQkvKiBpcyBDYWNo ZWRQbGFuIGluIGEgbG9uZy1saXZlZCBjb250ZXh0PyAqLwogCWJvb2wJCWlzX3ZhbGlkOwkJLyog aXMgdGhlIHN0bXRfbGlzdCBjdXJyZW50bHkgdmFsaWQ/ICovCiAJT2lkCQkJcGxhblJvbGVJZDsJ CS8qIFJvbGUgSUQgdGhlIHBsYW4gd2FzIGNyZWF0ZWQgZm9yICovCkBAIC0yMzUsNCArMjM2LDEz IEBAIGV4dGVybiBib29sIENhY2hlZFBsYW5Jc1NpbXBseVZhbGlkKENhY2hlZFBsYW5Tb3VyY2Ug KnBsYW5zb3VyY2UsCiBleHRlcm4gQ2FjaGVkRXhwcmVzc2lvbiAqR2V0Q2FjaGVkRXhwcmVzc2lv bihOb2RlICpleHByKTsKIGV4dGVybiB2b2lkIEZyZWVDYWNoZWRFeHByZXNzaW9uKENhY2hlZEV4 cHJlc3Npb24gKmNleHByKTsKIAorLyoKKyAqIENhY2hlZFBsYW5SZXF1aXJlc0xvY2tpbmc6IHNo b3VsZCB0aGUgZXhlY3V0b3IgYWNxdWlyZSBsb2Nrcz8KKyAqLworc3RhdGljIGlubGluZSBib29s CitDYWNoZWRQbGFuUmVxdWlyZXNMb2NraW5nKENhY2hlZFBsYW4gKmNwbGFuKQoreworCXJldHVy biBjcGxhbi0+aXNfZ2VuZXJpYzsKK30KKwogI2VuZGlmCQkJCQkJCS8qIFBMQU5DQUNIRV9IICov Ci0tIAoyLjQzLjAKCg== --000000000000b90aa8062274deae Content-Type: application/x-patch; name="v54-0002-Perform-runtime-initial-pruning-outside-ExecInit.patch" Content-Disposition: attachment; filename="v54-0002-Perform-runtime-initial-pruning-outside-ExecInit.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m177nojj2 RnJvbSAxZGViMzYzZDVkMGI3NTczZDExNjE5ODc5OGEzZTU1MGJlOWEzMjBmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMTIgU2VwIDIwMjQgMTU6NDQ6NDMgKzA5MDAKU3ViamVjdDogW1BBVENIIHY1 NCAyLzRdIFBlcmZvcm0gcnVudGltZSBpbml0aWFsIHBydW5pbmcgb3V0c2lkZQogRXhlY0luaXRO b2RlKCkKClRoaXMgY29tbWl0IGZvbGxvd3MgdXAgb24gdGhlIHByZXZpb3VzIGNoYW5nZSB0aGF0 IG1vdmVkClBhcnRpdGlvblBydW5lSW5mb3Mgb3V0IG9mIGluZGl2aWR1YWwgcGxhbiBub2RlcyBp bnRvIGEgbGlzdCBpbgpQbGFubmVkU3RtdC4gSXQgbW92ZXMgdGhlIGluaXRpYWxpemF0aW9uIG9m IFBhcnRpdGlvblBydW5lU3RhdGVzCmFuZCBydW50aW1lIGluaXRpYWwgcHJ1bmluZyBvdXQgb2Yg RXhlY0luaXROb2RlKCkgYW5kIGludG8gYSBuZXcKcm91dGluZSwgRXhlY0RvSW5pdGlhbFBydW5p bmcoKSwgd2hpY2ggaXMgY2FsbGVkIGJ5IEluaXRQbGFuKCkKYmVmb3JlIEV4ZWNJbml0Tm9kZSgp IGlzIGludm9rZWQgb24gdGhlIG1haW4gcGxhbiB0cmVlIGFuZCBzdWJwbGFucy4KCkV4ZWNEb0lu aXRpYWxQcnVuaW5nKCkgc3RvcmVzIHRoZSBQYXJ0aXRpb25QcnVuZVN0YXRlcyBpbiBhIGxpc3QK bWF0Y2hpbmcgdGhlIGxlbmd0aCBvZiBlc19wYXJ0X3BydW5lX2luZm9zICh3aGljaCBob2xkcyB0 aGUKUGFydGl0aW9uUHJ1bmVJbmZvcyBmcm9tIFBsYW5uZWRTdG10KSwgYWxsb3dpbmcgYm90aCBs aXN0cyB0byBzaGFyZQp0aGUgc2FtZSBpbmRleC4gSXQgYWxzbyBzYXZlcyB0aGUgaW5pdGlhbCBw cnVuaW5nIHJlc3VsdCAtLSBhCmJpdG1hcHNldCBvZiBpbmRleGVzIGZvciBzdXJ2aXZpbmcgY2hp bGQgc3Vibm9kZXMgLS0gaW4gYSBzaW1pbGFybHkKaW5kZXhlZCBsaXN0LgoKV2hpbGUgdGhlIGlu aXRpYWwgcHJ1bmluZyBpcyBkb25lIGVhcmxpZXIsIHRoZSBleGVjdXRpb24gcHJ1bmluZwpjb250 ZXh0IGluZm9ybWF0aW9uIChuZWVkZWQgZm9yIHJ1bnRpbWUgcHJ1bmluZykgaXMgaW5pdGlhbGl6 ZWQKbGF0ZXIgZHVyaW5nIEV4ZWNJbml0Tm9kZSgpIGZvciB0aGUgcGFyZW50IHBsYW4gbm9kZSwg YXMgaXQgcmVxdWlyZXMKYWNjZXNzIHRvIHRoZSBwYXJlbnQgbm9kZSdzIFBsYW5TdGF0ZSBzdHJ1 Y3QuCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgIHwgIDU1ICsrKysr KysrCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgfCAxNzkgKysrKysrKysr KysrKysrKysrKysrLS0tLS0tCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgg fCAgIDYgKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgIHwgICAyICsKIDQg ZmlsZXMgY2hhbmdlZCwgMjAyIGluc2VydGlvbnMoKyksIDQwIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjTWFpbi5jCmluZGV4IGU2MTk3YzE2NWUuLjhmYWI4ZGJjY2QgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYwpAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL21hdHZp ZXcuaCIKICNpbmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Iv ZXhlY3V0b3IuaCIKKyNpbmNsdWRlICJleGVjdXRvci9leGVjUGFydGl0aW9uLmgiCiAjaW5jbHVk ZSAiZXhlY3V0b3Ivbm9kZVN1YnBsYW4uaCIKICNpbmNsdWRlICJmb3JlaWduL2Zkd2FwaS5oIgog I2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCkBAIC04MTgsNiArODE5LDU0IEBAIEV4ZWNDaGVja1hh Y3RSZWFkT25seShQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQpCiAJCVByZXZlbnRDb21tYW5kSWZQ YXJhbGxlbE1vZGUoQ3JlYXRlQ29tbWFuZE5hbWUoKE5vZGUgKikgcGxhbm5lZHN0bXQpKTsKIH0K IAorLyoKKyAqIEV4ZWNEb0luaXRpYWxQcnVuaW5nCisgKgkJUGVyZm9ybSBydW50aW1lICJpbml0 aWFsIiBwcnVuaW5nLCBpZiBuZWNlc3NhcnksIHRvIGRldGVybWluZSB0aGUgc2V0CisgKgkJb2Yg Y2hpbGQgc3Vibm9kZXMgdGhhdCBuZWVkIHRvIGJlIGluaXRpYWxpemVkIGR1cmluZyBFeGVjSW5p dE5vZGUoKQorICoJCWZvciBwbGFuIG5vZGVzIHRoYXQgc3VwcG9ydCBwYXJ0aXRpb24gcHJ1bmlu Zy4KKyAqCisgKiBGb3IgZWFjaCBQYXJ0aXRpb25QcnVuZUluZm8gaW4gZXN0YXRlLT5lc19wYXJ0 X3BydW5lX2luZm9zLCB0aGlzIGZ1bmN0aW9uCisgKiBjcmVhdGVzIGEgUGFydGl0aW9uUHJ1bmVT dGF0ZSAoZXZlbiBpZiBubyBpbml0aWFsIHBydW5pbmcgaXMgZG9uZSkgYW5kIGFkZHMKKyAqIGl0 IHRvIGVzX3BhcnRfcHJ1bmVfc3RhdGVzLiBGb3IgUGFydGl0aW9uUHJ1bmVJbmZvIGVudHJpZXMg dGhhdCBpbmNsdWRlCisgKiBpbml0aWFsIHBydW5pbmcgc3RlcHMsIHRoZSByZXN1bHQgb2YgdGhv c2Ugc3RlcHMgaXMgc2F2ZWQgYXMgYSBiaXRtYXBzZXQKKyAqIG9mIGluZGV4ZXMgcmVwcmVzZW50 aW5nIGNoaWxkIHN1Ym5vZGVzIHRoYXQgYXJlICJ2YWxpZCIgYW5kIHNob3VsZCBiZQorICogaW5p dGlhbGl6ZWQgZm9yIGV4ZWN1dGlvbi4KKyAqLworc3RhdGljIHZvaWQKK0V4ZWNEb0luaXRpYWxQ cnVuaW5nKEVTdGF0ZSAqZXN0YXRlKQoreworCUxpc3RDZWxsICpsYzsKKworCWZvcmVhY2gobGMs IGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcykKKwl7CisJCVBhcnRpdGlvblBydW5lSW5mbyAq cHJ1bmVpbmZvID0gbGZpcnN0X25vZGUoUGFydGl0aW9uUHJ1bmVJbmZvLCBsYyk7CisJCVBhcnRp dGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGU7CisJCUJpdG1hcHNldCAqdmFsaWRzdWJwbGFucyA9 IE5VTEw7CisKKwkJLyoKKwkJICogQ3JlYXRlIHRoZSB3b3JraW5nIGRhdGEgc3RydWN0dXJlIGZv ciBwcnVuaW5nLCBhbmQgc2F2ZSBpdCBmb3IgdXNlCisJCSAqIGxhdGVyIGluIEV4ZWNJbml0UGFy dGl0aW9uUHJ1bmluZygpLCB3aGljaCB3aWxsIGJlIGNhbGxlZCBieSB0aGUKKwkJICogcGFyZW50 IHBsYW4gbm9kZSdzIEV4ZWNJbml0KiBmdW5jdGlvbi4KKwkJICovCisJCXBydW5lc3RhdGUgPSBD cmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKGVzdGF0ZSwgcHJ1bmVpbmZvKTsKKwkJZXN0YXRlLT5l c19wYXJ0X3BydW5lX3N0YXRlcyA9IGxhcHBlbmQoZXN0YXRlLT5lc19wYXJ0X3BydW5lX3N0YXRl cywKKwkJCQkJCQkJCQkJICAgcHJ1bmVzdGF0ZSk7CisKKwkJLyoKKwkJICogUGVyZm9ybSBhbiBp bml0aWFsIHBhcnRpdGlvbiBwcnVuaW5nIHBhc3MsIGlmIG5lY2Vzc2FyeSwgYW5kIHNhdmUKKwkJ ICogdGhlIGJpdG1hcHNldCBvZiB2YWxpZCBzdWJwbGFucyBmb3IgdXNlIGluCisJCSAqIEV4ZWNJ bml0UGFydGl0aW9uUHJ1bmluZygpLiAgSWYgbm8gaW5pdGlhbCBwcnVuaW5nIGlzIHBlcmZvcm1l ZCwgd2UKKwkJICogc3RpbGwgc3RvcmUgYSBOVUxMIHRvIGVuc3VyZSB0aGF0IGVzX3BhcnRfcHJ1 bmVfcmVzdWx0cyBpcyB0aGUgc2FtZQorCQkgKiBsZW5ndGggYXMgZXNfcGFydF9wcnVuZV9pbmZv cy4gIFRoaXMgZW5zdXJlcyB0aGF0CisJCSAqIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZygpIGNh biB1c2UgdGhlIHNhbWUgaW5kZXggdG8gbG9jYXRlIHRoZQorCQkgKiByZXN1bHQuCisJCSAqLwor CQlpZiAocHJ1bmVzdGF0ZS0+ZG9faW5pdGlhbF9wcnVuZSkKKwkJCXZhbGlkc3VicGxhbnMgPSBF eGVjRmluZE1hdGNoaW5nU3ViUGxhbnMocHJ1bmVzdGF0ZSwgdHJ1ZSk7CisJCWVzdGF0ZS0+ZXNf cGFydF9wcnVuZV9yZXN1bHRzID0gbGFwcGVuZChlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0 cywKKwkJCQkJCQkJCQkJCXZhbGlkc3VicGxhbnMpOworCX0KK30KIAogLyogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJ CUluaXRQbGFuCkBAIC04NTAsNyArODk5LDEzIEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlE ZXNjLCBpbnQgZWZsYWdzKQogCUV4ZWNJbml0UmFuZ2VUYWJsZShlc3RhdGUsIHJhbmdlVGFibGUs IHBsYW5uZWRzdG10LT5wZXJtSW5mb3MpOwogCiAJZXN0YXRlLT5lc19wbGFubmVkc3RtdCA9IHBs YW5uZWRzdG10OworCisJLyoKKwkgKiBQZXJmb3JtIHJ1bnRpbWUgImluaXRpYWwiIHBydW5pbmcg dG8gZGV0ZXJtaW5lIHRoZSBwbGFuIG5vZGVzIHRoYXQgd2lsbAorCSAqIG5vdCBiZSBleGVjdXRl ZC4KKwkgKi8KIAllc3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5mb3MgPSBwbGFubmVkc3RtdC0+cGFy dFBydW5lSW5mb3M7CisJRXhlY0RvSW5pdGlhbFBydW5pbmcoZXN0YXRlKTsKIAogCS8qCiAJICog TmV4dCwgYnVpbGQgdGhlIEV4ZWNSb3dNYXJrIGFycmF5IGZyb20gdGhlIFBsYW5Sb3dNYXJrKHMp LCBpZiBhbnkuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9u LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKaW5kZXggZWM3MzA2NzRm Mi4uZDIwNWU2NGU4NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRp dGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwpAQCAtMTgx LDggKzE4MSw2IEBAIHN0YXRpYyBjaGFyICpFeGVjQnVpbGRTbG90UGFydGl0aW9uS2V5RGVzY3Jp cHRpb24oUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJCQkJICBpbnQgbWF4ZmllbGRsZW4pOwogc3Rh dGljIExpc3QgKmFkanVzdF9wYXJ0aXRpb25fY29sbm9zKExpc3QgKmNvbG5vcywgUmVzdWx0UmVs SW5mbyAqbGVhZl9wYXJ0X3JyaSk7CiBzdGF0aWMgTGlzdCAqYWRqdXN0X3BhcnRpdGlvbl9jb2xu b3NfdXNpbmdfbWFwKExpc3QgKmNvbG5vcywgQXR0ck1hcCAqYXR0ck1hcCk7Ci1zdGF0aWMgUGFy dGl0aW9uUHJ1bmVTdGF0ZSAqQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUgKnBs YW5zdGF0ZSwKLQkJCQkJCQkJCQkJCQkgIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKTsK IHN0YXRpYyB2b2lkIEluaXRQYXJ0aXRpb25QcnVuZUNvbnRleHQoUGFydGl0aW9uUHJ1bmVDb250 ZXh0ICpjb250ZXh0LAogCQkJCQkJCQkJICBMaXN0ICpwcnVuaW5nX3N0ZXBzLAogCQkJCQkJCQkJ ICBQYXJ0aXRpb25EZXNjIHBhcnRkZXNjLApAQCAtMTkyLDYgKzE5MCw5IEBAIHN0YXRpYyB2b2lk IEluaXRQYXJ0aXRpb25QcnVuZUNvbnRleHQoUGFydGl0aW9uUHJ1bmVDb250ZXh0ICpjb250ZXh0 LAogc3RhdGljIHZvaWQgUGFydGl0aW9uUHJ1bmVGaXhTdWJQbGFuTWFwKFBhcnRpdGlvblBydW5l U3RhdGUgKnBydW5lc3RhdGUsCiAJCQkJCQkJCQkJQml0bWFwc2V0ICppbml0aWFsbHlfdmFsaWRf c3VicGxhbnMsCiAJCQkJCQkJCQkJaW50IG5fdG90YWxfc3VicGxhbnMpOworc3RhdGljIHZvaWQg UGFydGl0aW9uUHJ1bmVJbml0RXhlY1BydW5pbmcoUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWlu Zm8sCisJCQkJCQkJCQkJICBQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlLAorCQkJCQkJ CQkJCSAgUGxhblN0YXRlICpwbGFuc3RhdGUpOwogc3RhdGljIHZvaWQgZmluZF9tYXRjaGluZ19z dWJwbGFuc19yZWN1cnNlKFBhcnRpdGlvblBydW5pbmdEYXRhICpwcnVuZWRhdGEsCiAJCQkJCQkJ CQkJICAgUGFydGl0aW9uZWRSZWxQcnVuaW5nRGF0YSAqcHBydW5lLAogCQkJCQkJCQkJCSAgIGJv b2wgaW5pdGlhbF9wcnVuZSwKQEAgLTE3ODMsMjAgKzE3ODQsMjYgQEAgYWRqdXN0X3BhcnRpdGlv bl9jb2xub3NfdXNpbmdfbWFwKExpc3QgKmNvbG5vcywgQXR0ck1hcCAqYXR0ck1hcCkKIAogLyoK ICAqIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZwotICoJCUluaXRpYWxpemUgZGF0YSBzdHJ1Y3R1 cmUgbmVlZGVkIGZvciBydW4tdGltZSBwYXJ0aXRpb24gcHJ1bmluZyBhbmQKLSAqCQlkbyBpbml0 aWFsIHBydW5pbmcgaWYgbmVlZGVkCisgKgkJSW5pdGlhbGl6ZSB0aGUgZGF0YSBzdHJ1Y3R1cmVz IG5lZWRlZCBmb3IgcnVudGltZSAiZXhlYyIgcGFydGl0aW9uCisgKgkJcHJ1bmluZyBhbmQgcmV0 dXJuIHRoZSByZXN1bHQgb2YgaW5pdGlhbCBwcnVuaW5nLCBpZiBhdmFpbGFibGUuCiAgKgogICog J3Jvb3RfcGFyZW50X3JlbGlkcycgaWRlbnRpZmllcyB0aGUgcmVsYXRpb24gdG8gd2hpY2ggYm90 aCB0aGUgcGFyZW50IHBsYW4KLSAqIGFuZCB0aGUgUGFydGl0aW9uUHJ1bmVJbmZvIGdpdmVuIGJ5 ICdwYXJ0X3BydW5lX2luZGV4JyBiZWxvbmcuCisgKiBhbmQgdGhlIFBhcnRpdGlvblBydW5lSW5m byBhc3NvY2lhdGVkIHdpdGggJ3BhcnRfcHJ1bmVfaW5kZXgnIGJlbG9uZy4KICAqCi0gKiBPbiBy ZXR1cm4sICppbml0aWFsbHlfdmFsaWRfc3VicGxhbnMgaXMgYXNzaWduZWQgdGhlIHNldCBvZiBp bmRleGVzIG9mCi0gKiBjaGlsZCBzdWJwbGFucyB0aGF0IG11c3QgYmUgaW5pdGlhbGl6ZWQgYWxv bmcgd2l0aCB0aGUgcGFyZW50IHBsYW4gbm9kZS4KLSAqIEluaXRpYWwgcHJ1bmluZyBpcyBwZXJm b3JtZWQgaGVyZSBpZiBuZWVkZWQgYW5kIGluIHRoYXQgY2FzZSBvbmx5IHRoZQotICogc3Vydml2 aW5nIHN1YnBsYW5zJyBpbmRleGVzIGFyZSBhZGRlZC4KKyAqIFRoZSBQYXJ0aXRpb25QcnVuZVN0 YXRlIHdvdWxkIGhhdmUgYmVlbiBjcmVhdGVkIGJ5IEV4ZWNEb0luaXRpYWxQcnVuaW5nKCkKKyAq IGFuZCBzdG9yZWQgYXMgdGhlIHBhcnRfcHJ1bmVfaW5kZXgndGggZWxlbWVudCBvZiBFU3RhdGUu ZXNfcGFydF9wcnVuZV9zdGF0ZXMuCisgKiBIZXJlLCB3ZSBpbml0aWFsaXplIG9ubHkgdGhlIFBh cnRpdGlvblBydW5lQ29udGV4dCBuZWNlc3NhcnkgZm9yIGV4ZWN1dGlvbgorICogcHJ1bmluZy4K ICAqCi0gKiBJZiBzdWJwbGFucyBhcmUgaW5kZWVkIHBydW5lZCwgc3VicGxhbl9tYXAgYXJyYXlz IGNvbnRhaW5lZCBpbiB0aGUgcmV0dXJuZWQKLSAqIFBhcnRpdGlvblBydW5lU3RhdGUgYXJlIHJl LXNlcXVlbmNlZCB0byBub3QgY291bnQgdGhvc2UsIHRob3VnaCBvbmx5IGlmIHRoZQotICogbWFw cyB3aWxsIGJlIG5lZWRlZCBmb3Igc3Vic2VxdWVudCBleGVjdXRpb24gcHJ1bmluZyBwYXNzZXMu CisgKiBPbiByZXR1cm4sICppbml0aWFsbHlfdmFsaWRfc3VicGxhbnMgaXMgYXNzaWduZWQgdGhl IHNldCBvZiBpbmRleGVzIG9mIGNoaWxkCisgKiBzdWJwbGFucyB0aGF0IG11c3QgYmUgaW5pdGlh bGl6ZWQgYWxvbmdzaWRlIHRoZSBwYXJlbnQgcGxhbiBub2RlLiBJbml0aWFsCisgKiBwcnVuaW5n IHdvdWxkIGhhdmUgYmVlbiBwZXJmb3JtZWQgYnkgRXhlY0RvSW5pdGlhbFBydW5pbmcoKSBpZiBu ZWNlc3NhcnksCisgKiBhbmQgdGhlIGJpdG1hcHNldCBvZiBzdXJ2aXZpbmcgc3VicGxhbnMnIGlu ZGV4ZXMgd291bGQgaGF2ZSBiZWVuIHN0b3JlZCBhcworICogdGhlIHBhcnRfcHJ1bmVfaW5kZXgn dGggZWxlbWVudCBvZiBFU3RhdGUuZXNfcGFydF9wcnVuZV9yZXN1bHRzLgorICoKKyAqIElmIHN1 YnBsYW5zIGFyZSBwcnVuZWQsIHRoZSBzdWJwbGFuX21hcCBhcnJheXMgaW4gdGhlIHJldHVybmVk CisgKiBQYXJ0aXRpb25QcnVuZVN0YXRlIGFyZSByZS1zZXF1ZW5jZWQgdG8gZXhjbHVkZSB0aG9z ZSBzdWJwbGFucywgYnV0IG9ubHkgaWYKKyAqIHRoZSBtYXBzIHdpbGwgYmUgbmVlZGVkIGZvciBz dWJzZXF1ZW50IGV4ZWN1dGlvbiBwcnVuaW5nIHBhc3Nlcy4KICAqLwogUGFydGl0aW9uUHJ1bmVT dGF0ZSAqCiBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCkBA IC0xODIxLDE3ICsxODI4LDIxIEBAIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUg KnBsYW5zdGF0ZSwKIAkJCQkJCQkJICAgYm1zVG9TdHJpbmcocm9vdF9wYXJlbnRfcmVsaWRzKSwK IAkJCQkJCQkJICAgYm1zVG9TdHJpbmcocHJ1bmVpbmZvLT5yb290X3BhcmVudF9yZWxpZHMpKSk7 CiAKLQkvKiBXZSBtYXkgbmVlZCBhbiBleHByZXNzaW9uIGNvbnRleHQgdG8gZXZhbHVhdGUgcGFy dGl0aW9uIGV4cHJzICovCi0JRXhlY0Fzc2lnbkV4cHJDb250ZXh0KGVzdGF0ZSwgcGxhbnN0YXRl KTsKLQotCS8qIENyZWF0ZSB0aGUgd29ya2luZyBkYXRhIHN0cnVjdHVyZSBmb3IgcHJ1bmluZyAq LwotCXBydW5lc3RhdGUgPSBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKHBsYW5zdGF0ZSwgcHJ1 bmVpbmZvKTsKLQogCS8qCi0JICogUGVyZm9ybSBhbiBpbml0aWFsIHBhcnRpdGlvbiBwcnVuZSBw YXNzLCBpZiByZXF1aXJlZC4KKwkgKiBFeGVjRG9Jbml0aWFsUHJ1bmluZygpIG11c3QgaGF2ZSBp bml0aWFsaXplZCB0aGUgUGFydGl0aW9uUHJ1bmVTdGF0ZSB0bworCSAqIHBlcmZvcm0gdGhlIGlu aXRpYWwgcHJ1bmluZy4gIE5vdyB3ZSBzaW1wbHkgbmVlZCB0byBpbml0aWFsaXplIHRoZQorCSAq IGNvbnRleHQgaW5mb3JtYXRpb24gZm9yIGV4ZWMgcHJ1bmluZy4KIAkgKi8KKwlwcnVuZXN0YXRl ID0gbGlzdF9udGgoZXN0YXRlLT5lc19wYXJ0X3BydW5lX3N0YXRlcywgcGFydF9wcnVuZV9pbmRl eCk7CisJQXNzZXJ0KHBydW5lc3RhdGUgIT0gTlVMTCk7CisJaWYgKHBydW5lc3RhdGUtPmRvX2V4 ZWNfcHJ1bmUpCisJCVBhcnRpdGlvblBydW5lSW5pdEV4ZWNQcnVuaW5nKHBydW5laW5mbywgcHJ1 bmVzdGF0ZSwgcGxhbnN0YXRlKTsKKworCS8qIFVzZSB0aGUgcmVzdWx0IG9mIGluaXRpYWwgcHJ1 bmluZyBkb25lIGJ5IEV4ZWNEb0luaXRpYWxQcnVuaW5nKCkuICovCiAJaWYgKHBydW5lc3RhdGUt PmRvX2luaXRpYWxfcHJ1bmUpCi0JCSppbml0aWFsbHlfdmFsaWRfc3VicGxhbnMgPSBFeGVjRmlu ZE1hdGNoaW5nU3ViUGxhbnMocHJ1bmVzdGF0ZSwgdHJ1ZSk7CisJCSppbml0aWFsbHlfdmFsaWRf c3VicGxhbnMgPSBsaXN0X250aF9ub2RlKEJpdG1hcHNldCwKKwkJCQkJCQkJCQkJCSAgZXN0YXRl LT5lc19wYXJ0X3BydW5lX3Jlc3VsdHMsCisJCQkJCQkJCQkJCQkgIHBhcnRfcHJ1bmVfaW5kZXgp OwogCWVsc2UKIAl7CiAJCS8qIE5vIHBydW5pbmcsIHNvIHdlJ2xsIG5lZWQgdG8gaW5pdGlhbGl6 ZSBhbGwgc3VicGxhbnMgKi8KQEAgLTE4NzcsMTYgKzE4ODgsMjMgQEAgRXhlY0luaXRQYXJ0aXRp b25QcnVuaW5nKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogICogc3RvcmVkIGluIGVhY2ggUGFydGl0 aW9uZWRSZWxQcnVuaW5nRGF0YSBjYW4gYmUgcmUtdXNlZCBlYWNoIHRpbWUgd2UKICAqIHJlLWV2 YWx1YXRlIHdoaWNoIHBhcnRpdGlvbnMgbWF0Y2ggdGhlIHBydW5pbmcgc3RlcHMgcHJvdmlkZWQg aW4gZWFjaAogICogUGFydGl0aW9uZWRSZWxQcnVuZUluZm8uCisgKgorICogTm90ZSB0aGF0IHdl IG9ubHkgaW5pdGlhbGl6ZSB0aGUgUGFydGl0aW9uUHJ1bmVDb250ZXh0ICh3aGljaCBpcyBwbGFj ZWQgaW50bworICogZWFjaCBQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhKSBmb3IgaW5pdGlhbCBw cnVuaW5nIGhlcmUuIEV4ZWN1dGlvbiBwcnVuaW5nCisgKiByZXF1aXJlcyBhY2Nlc3MgdG8gdGhl IHBhcmVudCBwbGFuIG5vZGUncyBQbGFuU3RhdGUsIHdoaWNoIGlzIG5vdCBhdmFpbGFibGUKKyAq IHdoZW4gdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBFeGVjRG9Jbml0aWFsUHJ1bmluZygp LCBzbyBpdCBpcworICogaW5pdGlhbGl6ZWQgbGF0ZXIgZHVyaW5nIEV4ZWNJbml0UGFydGl0aW9u UHJ1bmluZygpIGJ5IGNhbGxpbmcKKyAqIFBhcnRpdGlvblBydW5lSW5pdEV4ZWNQcnVuaW5nKCku CiAgKi8KLXN0YXRpYyBQYXJ0aXRpb25QcnVuZVN0YXRlICoKLUNyZWF0ZVBhcnRpdGlvblBydW5l U3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZv KQorUGFydGl0aW9uUHJ1bmVTdGF0ZSAqCitDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKEVTdGF0 ZSAqZXN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIHsKLQlFU3RhdGUJICAg KmVzdGF0ZSA9IHBsYW5zdGF0ZS0+c3RhdGU7CiAJUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVz dGF0ZTsKIAlpbnQJCQluX3BhcnRfaGllcmFyY2hpZXM7CiAJTGlzdENlbGwgICAqbGM7CiAJaW50 CQkJaTsKLQlFeHByQ29udGV4dCAqZWNvbnRleHQgPSBwbGFuc3RhdGUtPnBzX0V4cHJDb250ZXh0 OworCS8qIFdlIG1heSBuZWVkIGFuIGV4cHJlc3Npb24gY29udGV4dCB0byBldmFsdWF0ZSBwYXJ0 aXRpb24gZXhwcnMgKi8KKwlFeHByQ29udGV4dCAqZWNvbnRleHQgPSBDcmVhdGVFeHByQ29udGV4 dChlc3RhdGUpOwogCiAJLyogRm9yIGRhdGEgcmVhZGluZywgZXhlY3V0b3IgYWx3YXlzIGluY2x1 ZGVzIGRldGFjaGVkIHBhcnRpdGlvbnMgKi8KIAlpZiAoZXN0YXRlLT5lc19wYXJ0aXRpb25fZGly ZWN0b3J5ID09IE5VTEwpCkBAIC0xOTc0LDYgKzE5OTIsNyBAQCBDcmVhdGVQYXJ0aXRpb25QcnVu ZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5m bykKIAkJCSAqIHNldCB0byAtMSwgYXMgaWYgdGhleSB3ZXJlIHBydW5lZC4gIEJ5IGNvbnN0cnVj dGlvbiwgYm90aAogCQkJICogYXJyYXlzIGFyZSBpbiBwYXJ0aXRpb24gYm91bmRzIG9yZGVyLgog CQkJICovCisJCQlwcHJ1bmUtPnBhcnRyZWwgPSBwYXJ0cmVsOwogCQkJcHBydW5lLT5ucGFydHMg PSBwYXJ0ZGVzYy0+bnBhcnRzOwogCQkJcHBydW5lLT5zdWJwbGFuX21hcCA9IHBhbGxvYyhzaXpl b2YoaW50KSAqIHBhcnRkZXNjLT5ucGFydHMpOwogCkBAIC0yMDczLDI5ICsyMDkyLDMxIEBAIENy ZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIFBhcnRpdGlvblBy dW5lSW5mbyAqcHJ1bmVpbmZvKQogCQkJewogCQkJCUluaXRQYXJ0aXRpb25QcnVuZUNvbnRleHQo JnBwcnVuZS0+aW5pdGlhbF9jb250ZXh0LAogCQkJCQkJCQkJCSAgcGluZm8tPmluaXRpYWxfcHJ1 bmluZ19zdGVwcywKLQkJCQkJCQkJCQkgIHBhcnRkZXNjLCBwYXJ0a2V5LCBwbGFuc3RhdGUsCisJ CQkJCQkJCQkJICBwYXJ0ZGVzYywgcGFydGtleSwgTlVMTCwKIAkJCQkJCQkJCQkgIGVjb250ZXh0 KTsKIAkJCQkvKiBSZWNvcmQgd2hldGhlciBpbml0aWFsIHBydW5pbmcgaXMgbmVlZGVkIGF0IGFu eSBsZXZlbCAqLwogCQkJCXBydW5lc3RhdGUtPmRvX2luaXRpYWxfcHJ1bmUgPSB0cnVlOwogCQkJ fQotCQkJcHBydW5lLT5leGVjX3BydW5pbmdfc3RlcHMgPSBwaW5mby0+ZXhlY19wcnVuaW5nX3N0 ZXBzOwotCQkJaWYgKHBpbmZvLT5leGVjX3BydW5pbmdfc3RlcHMgJiYKLQkJCQkhKGVjb250ZXh0 LT5lY3h0X2VzdGF0ZS0+ZXNfdG9wX2VmbGFncyAmIEVYRUNfRkxBR19FWFBMQUlOX0dFTkVSSUMp KQotCQkJewotCQkJCUluaXRQYXJ0aXRpb25QcnVuZUNvbnRleHQoJnBwcnVuZS0+ZXhlY19jb250 ZXh0LAotCQkJCQkJCQkJCSAgcGluZm8tPmV4ZWNfcHJ1bmluZ19zdGVwcywKLQkJCQkJCQkJCQkg IHBhcnRkZXNjLCBwYXJ0a2V5LCBwbGFuc3RhdGUsCi0JCQkJCQkJCQkJICBlY29udGV4dCk7Ci0J CQkJLyogUmVjb3JkIHdoZXRoZXIgZXhlYyBwcnVuaW5nIGlzIG5lZWRlZCBhdCBhbnkgbGV2ZWwg Ki8KLQkJCQlwcnVuZXN0YXRlLT5kb19leGVjX3BydW5lID0gdHJ1ZTsKLQkJCX0KIAogCQkJLyoK LQkJCSAqIEFjY3VtdWxhdGUgdGhlIElEcyBvZiBhbGwgUEFSQU1fRVhFQyBQYXJhbXMgYWZmZWN0 aW5nIHRoZQotCQkJICogcGFydGl0aW9uaW5nIGRlY2lzaW9ucyBhdCB0aGlzIHBsYW4gbm9kZS4K KwkJCSAqIFRoZSBleGVjIHBydW5pbmcgY29udGV4dCB3aWxsIGJlIGluaXRpYWxpemVkIGluCisJ CQkgKiBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoKSB3aGVuIGNhbGxlZCBkdXJpbmcgdGhlIGlu aXRpYWxpemF0aW9uCisJCQkgKiBvZiB0aGUgcGFyZW50IHBsYW4gbm9kZS4KKwkJCSAqCisJCQkg KiBwcHJ1bmUtPmV4ZWNfcHJ1bmluZ19zdGVwcyBpcyBzZXQgdG8gTklMIHRvIHByZXZlbnQKKwkJ CSAqIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucygpIGZyb20gYWNjZXNzaW5nIGFuIHVuaW5pdGlh bGl6ZWQKKwkJCSAqIHBwcnVuZS0+ZXhlY19jb250ZXh0IGR1cmluZyB0aGUgaW5pdGlhbCBwcnVu aW5nIGJ5CisJCQkgKiBFeGVjRG9Jbml0aWFsUHJ1bmluZygpLgorCQkJICoKKwkJCSAqIHBydW5l c3RhdGUtPmRvX2V4ZWNfcHJ1bmUgaXMgc2V0IHRvIGluZGljYXRlIHdoZXRoZXIKKwkJCSAqIFBh cnRpdGlvblBydW5lSW5pdEV4ZWNQcnVuaW5nKCkgbmVlZHMgdG8gYmUgY2FsbGVkIGJ5CisJCQkg KiBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoKS4gVGhpcyBvcHRpbWl6YXRpb24gYXZvaWRzCisJ CQkgKiB1bm5lY2Vzc2FyeSBjeWNsZXMgd2hlbiBvbmx5IGluaXRpYWwgcHJ1bmluZyBpcyByZXF1 aXJlZC4KIAkJCSAqLwotCQkJcHJ1bmVzdGF0ZS0+ZXhlY3BhcmFtaWRzID0gYm1zX2FkZF9tZW1i ZXJzKHBydW5lc3RhdGUtPmV4ZWNwYXJhbWlkcywKLQkJCQkJCQkJCQkJCQkgICBwaW5mby0+ZXhl Y3BhcmFtaWRzKTsKKwkJCXBwcnVuZS0+ZXhlY19wcnVuaW5nX3N0ZXBzID0gTklMOworCQkJaWYg KHBpbmZvLT5leGVjX3BydW5pbmdfc3RlcHMgJiYKKwkJCQkgIShlY29udGV4dC0+ZWN4dF9lc3Rh dGUtPmVzX3RvcF9lZmxhZ3MgJiBFWEVDX0ZMQUdfRVhQTEFJTl9HRU5FUklDKSkKKwkJCQlwcnVu ZXN0YXRlLT5kb19leGVjX3BydW5lID0gdHJ1ZTsKIAogCQkJaisrOwogCQl9CkBAIC0yMzA1LDYg KzIzMjYsODQgQEAgUGFydGl0aW9uUHJ1bmVGaXhTdWJQbGFuTWFwKFBhcnRpdGlvblBydW5lU3Rh dGUgKnBydW5lc3RhdGUsCiAJcGZyZWUobmV3X3N1YnBsYW5faW5kZXhlcyk7CiB9CiAKKy8qCisg KiBQYXJ0aXRpb25QcnVuZUluaXRFeGVjUHJ1bmluZworICoJCUluaXRpYWxpemUgUGFydGl0aW9u UHJ1bmVTdGF0ZSBmb3IgZXhlYyBwcnVuaW5nLgorICovCitzdGF0aWMgdm9pZAorUGFydGl0aW9u UHJ1bmVJbml0RXhlY1BydW5pbmcoUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8sCisJCQkJ CQkJICBQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlLAorCQkJCQkJCSAgUGxhblN0YXRl ICpwbGFuc3RhdGUpCit7CisJRVN0YXRlICplc3RhdGUgPSBwbGFuc3RhdGUtPnN0YXRlOworCWlu dAkJaTsKKwlFeHByQ29udGV4dCAqZWNvbnRleHQ7CisKKwkvKiBDcmVhdGVQYXJ0aXRpb25QcnVu ZVN0YXRlKCkgbXVzdCBoYXZlIGluaXRpYWxpemVkLiAqLworCUFzc2VydChlc3RhdGUtPmVzX3Bh cnRpdGlvbl9kaXJlY3RvcnkgIT0gTlVMTCk7CisKKwkvKiBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0 YXRlKCkgbXVzdCBoYXZlIHNldCB0aGlzLiAqLworCUFzc2VydChwcnVuZXN0YXRlLT5kb19leGVj X3BydW5lKTsKKworCS8qCisJICogQ3JlYXRlIEV4cHJDb250ZXh0IGlmIG5vdCBhbHJlYWR5IGRv bmUgZm9yIHRoZSBwbGFuc3RhdGUuICBXZSBtYXkgbmVlZAorCSAqIGFuIGV4cHJlc3Npb24gY29u dGV4dCB0byBldmFsdWF0ZSBwYXJ0aXRpb24gZXhwcnMuCisJICovCisJRXhlY0Fzc2lnbkV4cHJD b250ZXh0KGVzdGF0ZSwgcGxhbnN0YXRlKTsKKwllY29udGV4dCA9IHBsYW5zdGF0ZS0+cHNfRXhw ckNvbnRleHQ7CisJZm9yIChpID0gMDsgaSA8IHBydW5lc3RhdGUtPm51bV9wYXJ0cHJ1bmVkYXRh OyBpKyspCisJeworCQlMaXN0ICpwYXJ0cmVsX3BydW5laW5mb3MgPQorCQkJbGlzdF9udGhfbm9k ZShMaXN0LCBwcnVuZWluZm8tPnBydW5lX2luZm9zLCBpKTsKKwkJUGFydGl0aW9uUHJ1bmluZ0Rh dGEgKnBydW5lZGF0YSA9IHBydW5lc3RhdGUtPnBhcnRwcnVuZWRhdGFbaV07CisJCWludAkJajsK KworCQlmb3IgKGogPSAwOyBqIDwgcHJ1bmVkYXRhLT5udW1fcGFydHJlbHBydW5lZGF0YTsgaisr KQorCQl7CisJCQlQYXJ0aXRpb25lZFJlbFBydW5lSW5mbyAqcGluZm8gPQorCQkJCWxpc3RfbnRo X25vZGUoUGFydGl0aW9uZWRSZWxQcnVuZUluZm8sIHBhcnRyZWxfcHJ1bmVpbmZvcywgaik7CisJ CQlQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhICpwcHJ1bmUgPSAmcHJ1bmVkYXRhLT5wYXJ0cmVs cHJ1bmVkYXRhW2pdOworCQkJUmVsYXRpb24JcGFydHJlbCA9IHBwcnVuZS0+cGFydHJlbDsKKwkJ CVBhcnRpdGlvbkRlc2MgcGFydGRlc2M7CisJCQlQYXJ0aXRpb25LZXkgcGFydGtleTsKKworCQkJ LyoKKwkJCSAqIE5vdGhpbmcgdG8gZG8gaWYgdGhlcmUgYXJlIG5vIGV4ZWMgcHJ1bmluZyBzdGVw cywgYnV0IGRvIHNldAorCQkJICogcHBydW5lLT5leGVjX3BydW5pbmdfc3RlcHMsIGJlY2FzdWUK KwkJCSAqIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZSgpIGxvb2tzIGF0IGl0LgorCQkJ ICoKKwkJCSAqIEFsc28gc2tpcCBpZiBkb2luZyBFWFBMQUlOIChHRU5FUklDX1BMQU4pLCBzaW5j ZSBwYXJhbWV0ZXIKKwkJCSAqIHZhbHVlcyBtYXkgYmUgbWlzc2luZy4KKwkJCSAqLworCQkJcHBy dW5lLT5leGVjX3BydW5pbmdfc3RlcHMgPSBwaW5mby0+ZXhlY19wcnVuaW5nX3N0ZXBzOworCQkJ aWYgKHBwcnVuZS0+ZXhlY19wcnVuaW5nX3N0ZXBzID09IE5JTCB8fAorCQkJCShlY29udGV4dC0+ ZWN4dF9lc3RhdGUtPmVzX3RvcF9lZmxhZ3MgJiBFWEVDX0ZMQUdfRVhQTEFJTl9HRU5FUklDKSkK KwkJCQljb250aW51ZTsKKworCQkJLyoKKwkJCSAqIFdlIGNhbiByZWx5IG9uIHRoZSBjb3BpZXMg b2YgdGhlIHBhcnRpdGlvbmVkIHRhYmxlJ3MgcGFydGl0aW9uCisJCQkgKiBrZXkgYW5kIHBhcnRp dGlvbiBkZXNjcmlwdG9yIGFwcGVhcmluZyBpbiBpdHMgcmVsY2FjaGUgZW50cnksCisJCQkgKiBi ZWNhdXNlIHRoYXQgZW50cnkgd2lsbCBiZSBoZWxkIG9wZW4gYW5kIGxvY2tlZCBmb3IgdGhlCisJ CQkgKiBkdXJhdGlvbiBvZiB0aGlzIGV4ZWN1dG9yIHJ1bi4KKwkJCSAqLworCQkJcGFydGtleSA9 IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcnRyZWwpOworCQkJcGFydGRlc2MgPSBQYXJ0aXRp b25EaXJlY3RvcnlMb29rdXAoZXN0YXRlLT5lc19wYXJ0aXRpb25fZGlyZWN0b3J5LAorCQkJCQkJ CQkJCQkJcGFydHJlbCk7CisJCQlJbml0UGFydGl0aW9uUHJ1bmVDb250ZXh0KCZwcHJ1bmUtPmV4 ZWNfY29udGV4dCwKKwkJCQkJCQkJCSAgcHBydW5lLT5leGVjX3BydW5pbmdfc3RlcHMsCisJCQkJ CQkJCQkgIHBhcnRkZXNjLCBwYXJ0a2V5LCBwbGFuc3RhdGUsCisJCQkJCQkJCQkgIGVjb250ZXh0 KTsKKworCQkJLyoKKwkJCSAqIEFjY3VtdWxhdGUgdGhlIElEcyBvZiBhbGwgUEFSQU1fRVhFQyBQ YXJhbXMgYWZmZWN0aW5nIHRoZQorCQkJICogcGFydGl0aW9uaW5nIGRlY2lzaW9ucyBhdCB0aGlz IHBsYW4gbm9kZS4KKwkJCSAqLworCQkJcHJ1bmVzdGF0ZS0+ZXhlY3BhcmFtaWRzID0gYm1zX2Fk ZF9tZW1iZXJzKHBydW5lc3RhdGUtPmV4ZWNwYXJhbWlkcywKKwkJCQkJCQkJCQkJCQkgICBwaW5m by0+ZXhlY3BhcmFtaWRzKTsKKwkJfQorCX0KK30KKwogLyoKICAqIEV4ZWNGaW5kTWF0Y2hpbmdT dWJQbGFucwogICoJCURldGVybWluZSB3aGljaCBzdWJwbGFucyBtYXRjaCB0aGUgcHJ1bmluZyBz dGVwcyBkZXRhaWxlZCBpbgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1Bh cnRpdGlvbi5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oCmluZGV4IDEy YWFjYzg0ZmYuLmMwYmEyMzA5N2YgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4 ZWNQYXJ0aXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgK QEAgLTQyLDYgKzQyLDkgQEAgZXh0ZXJuIHZvaWQgRXhlY0NsZWFudXBUdXBsZVJvdXRpbmcoTW9k aWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKICAqIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvIChzZWUg cGxhbm5vZGVzLmgpOyB0aG91Z2ggbm90ZSB0aGF0IGhlcmUsCiAgKiBzdWJwYXJ0X21hcCBjb250 YWlucyBpbmRleGVzIGludG8gUGFydGl0aW9uUHJ1bmluZ0RhdGEucGFydHJlbHBydW5lZGF0YVtd LgogICoKKyAqIHBhcnRyZWwJCQkJCQlQYXJ0aXRpb25lZCB0YWJsZTsgcG9pbnRzIHRvCisgKgkJ CQkJCQkJRVN0YXRlLmVzX3JlbGF0aW9uc1tydGktMV0sIHdoZXJlIHJ0aSBpcyB0aGUKKyAqCQkJ CQkJCQl0YWJsZSdzIFJUIGluZGV4CiAgKiBucGFydHMJCQkJCQlMZW5ndGggb2Ygc3VicGxhbl9t YXBbXSBhbmQgc3VicGFydF9tYXBbXS4KICAqIHN1YnBsYW5fbWFwCQkJCQlTdWJwbGFuIGluZGV4 IGJ5IHBhcnRpdGlvbiBpbmRleCwgb3IgLTEuCiAgKiBzdWJwYXJ0X21hcAkJCQkJU3VicGFydCBp bmRleCBieSBwYXJ0aXRpb24gaW5kZXgsIG9yIC0xLgpAQCAtNTgsNiArNjEsNyBAQCBleHRlcm4g dm9pZCBFeGVjQ2xlYW51cFR1cGxlUm91dGluZyhNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLAog ICovCiB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhCiB7CisJUmVsYXRp b24JcGFydHJlbDsKIAlpbnQJCQlucGFydHM7CiAJaW50CQkgICAqc3VicGxhbl9tYXA7CiAJaW50 CQkgICAqc3VicGFydF9tYXA7CkBAIC0xMjgsNCArMTMyLDYgQEAgZXh0ZXJuIFBhcnRpdGlvblBy dW5lU3RhdGUgKkV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwK IAkJCQkJCQkJCQkJCQkgQml0bWFwc2V0ICoqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zKTsKIGV4 dGVybiBCaXRtYXBzZXQgKkV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0 YXRlICpwcnVuZXN0YXRlLAogCQkJCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9wcnVuZSk7CitleHRl cm4gUGFydGl0aW9uUHJ1bmVTdGF0ZSAqQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShFU3RhdGUg KmVzdGF0ZSwKKwkJCQkJCQkJCQkJCQkgIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKTsK ICNlbmRpZgkJCQkJCQkvKiBFWEVDUEFSVElUSU9OX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5k ZXggMjJiOTI4ZTA4NS4uNTE4YTlmY2QxNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMv ZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTYzNyw2 ICs2MzcsOCBAQCB0eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAlMaXN0CSAgICplc19ydGVwZXJtaW5m b3M7CS8qIExpc3Qgb2YgUlRFUGVybWlzc2lvbkluZm8gKi8KIAlQbGFubmVkU3RtdCAqZXNfcGxh bm5lZHN0bXQ7CS8qIGxpbmsgdG8gdG9wIG9mIHBsYW4gdHJlZSAqLwogCUxpc3QJICAgKmVzX3Bh cnRfcHJ1bmVfaW5mb3M7CS8qIFBsYW5uZWRTdG10LnBhcnRQcnVuZUluZm9zICovCisJTGlzdAkg ICAqZXNfcGFydF9wcnVuZV9zdGF0ZXM7CS8qIExpc3Qgb2YgUGFydGl0aW9uUHJ1bmVTdGF0ZSAq LworCUxpc3QJICAgKmVzX3BhcnRfcHJ1bmVfcmVzdWx0czsJLyogTGlzdCBvZiBCaXRtYXBzZXQg Ki8KIAljb25zdCBjaGFyICplc19zb3VyY2VUZXh0OwkvKiBTb3VyY2UgdGV4dCBmcm9tIFF1ZXJ5 RGVzYyAqLwogCiAJSnVua0ZpbHRlciAqZXNfanVua0ZpbHRlcjsJLyogdG9wLWxldmVsIGp1bmsg ZmlsdGVyLCBpZiBhbnkgKi8KLS0gCjIuNDMuMAoK --000000000000b90aa8062274deae Content-Type: application/x-patch; name="v54-0001-Move-PartitionPruneInfo-out-of-plan-nodes-into-P.patch" Content-Disposition: attachment; filename="v54-0001-Move-PartitionPruneInfo-out-of-plan-nodes-into-P.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m177nojl3 RnJvbSBjZjc1ZDQ4MzIzYTNjMjhkMjcyZTM0Yzk0MmYxMjNhMmUwNDA0NGZkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IEZyaSwgNiBTZXAgMjAyNCAxMzoxMTowNSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjU0 IDEvNF0gTW92ZSBQYXJ0aXRpb25QcnVuZUluZm8gb3V0IG9mIHBsYW4gbm9kZXMgaW50bwogUGxh bm5lZFN0bXQKClRoaXMgY2hhbmdlIG1vdmVzIFBhcnRpdGlvblBydW5lSW5mbyBmcm9tIGluZGl2 aWR1YWwgcGxhbiBub2RlcyB0bwpQbGFubmVkU3RtdCwgYWxsb3dpbmcgcnVudGltZSBpbml0aWFs IHBydW5pbmcgdG8gYmUgcGVyZm9ybWVkIGFjcm9zcwp0aGUgZW50aXJlIHBsYW4gdHJlZSB3aXRo b3V0IHRyYXZlcnNpbmcgdGhlIHRyZWUgdG8gZmluZCBub2Rlcwpjb250YWluaW5nIFBhcnRpdGlv blBydW5lSW5mb3MuCgpUaGUgUGFydGl0aW9uUHJ1bmVJbmZvIHBvaW50ZXIgZmllbGRzIGluIEFw cGVuZCBhbmQgTWVyZ2VBcHBlbmQgbm9kZXMKaGF2ZSBiZWVuIHJlcGxhY2VkIHdpdGggYW4gaW50 ZWdlciBpbmRleCB0aGF0IHBvaW50cyB0bwpQYXJ0aXRpb25QcnVuZUluZm9zIGluIGEgbGlzdCB3 aXRoaW4gUGxhbm5lZFN0bXQsIHdoaWNoIGhvbGRzIHRoZQpQYXJ0aXRpb25QcnVuZUluZm9zIGZv ciBhbGwgc3VicXVlcmllcy4KClJldmlld2VkLWJ5OiBBbHZhcm8gSGVycmVyYQotLS0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQYXJ0aXRpb24uYyAgICB8IDE5ICsrKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0 aWxzLmMgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jICAg ICAgIHwgIDUgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jICB8ICA1 ICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgfCAyNCArKystLS0t CiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgICAgfCAgMSArCiBzcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgICAgfCA4NiArKysrKysrKysrKysrKysrLS0t LS0tLS0tCiBzcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMgICAgfCAxOSArKysr LS0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCAgICB8ICA0ICstCiBzcmMv aW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgfCAgMSArCiBzcmMvaW5jbHVkZS9u b2Rlcy9wYXRobm9kZXMuaCAgICAgICAgICAgfCAgNiArKwogc3JjL2luY2x1ZGUvbm9kZXMvcGxh bm5vZGVzLmggICAgICAgICAgIHwgMTQgKystLQogc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3Bh cnRwcnVuZS5oICAgIHwgIDggKy0tCiAxNSBmaWxlcyBjaGFuZ2VkLCAxMzMgaW5zZXJ0aW9ucygr KSwgNjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggNzA0MmNhNmM2 MC4uZTYxOTdjMTY1ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC04NTAsNiArODUwLDcg QEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJRXhlY0luaXRS YW5nZVRhYmxlKGVzdGF0ZSwgcmFuZ2VUYWJsZSwgcGxhbm5lZHN0bXQtPnBlcm1JbmZvcyk7CiAK IAllc3RhdGUtPmVzX3BsYW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7CisJZXN0YXRlLT5lc19wYXJ0 X3BydW5lX2luZm9zID0gcGxhbm5lZHN0bXQtPnBhcnRQcnVuZUluZm9zOwogCiAJLyoKIAkgKiBO ZXh0LCBidWlsZCB0aGUgRXhlY1Jvd01hcmsgYXJyYXkgZnJvbSB0aGUgUGxhblJvd01hcmsocyks IGlmIGFueS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKaW5kZXggYmZiMzQxOWVmYi4u YjAxYTJmZGZkZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVs LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKQEAgLTE4MSw2ICsx ODEsNyBAQCBFeGVjU2VyaWFsaXplUGxhbihQbGFuICpwbGFuLCBFU3RhdGUgKmVzdGF0ZSkKIAlw c3RtdC0+ZGVwZW5kc09uUm9sZSA9IGZhbHNlOwogCXBzdG10LT5wYXJhbGxlbE1vZGVOZWVkZWQg PSBmYWxzZTsKIAlwc3RtdC0+cGxhblRyZWUgPSBwbGFuOworCXBzdG10LT5wYXJ0UHJ1bmVJbmZv cyA9IGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvczsKIAlwc3RtdC0+cnRhYmxlID0gZXN0YXRl LT5lc19yYW5nZV90YWJsZTsKIAlwc3RtdC0+cGVybUluZm9zID0gZXN0YXRlLT5lc19ydGVwZXJt aW5mb3M7CiAJcHN0bXQtPnJlc3VsdFJlbGF0aW9ucyA9IE5JTDsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQYXJ0aXRpb24uYwppbmRleCA3NjUxODg2MjI5Li5lYzczMDY3NGYyIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1BhcnRpdGlvbi5jCkBAIC0xNzg2LDYgKzE3ODYsOSBAQCBhZGp1c3RfcGFydGl0 aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRyTWFwICphdHRyTWFwKQogICoJ CUluaXRpYWxpemUgZGF0YSBzdHJ1Y3R1cmUgbmVlZGVkIGZvciBydW4tdGltZSBwYXJ0aXRpb24g cHJ1bmluZyBhbmQKICAqCQlkbyBpbml0aWFsIHBydW5pbmcgaWYgbmVlZGVkCiAgKgorICogJ3Jv b3RfcGFyZW50X3JlbGlkcycgaWRlbnRpZmllcyB0aGUgcmVsYXRpb24gdG8gd2hpY2ggYm90aCB0 aGUgcGFyZW50IHBsYW4KKyAqIGFuZCB0aGUgUGFydGl0aW9uUHJ1bmVJbmZvIGdpdmVuIGJ5ICdw YXJ0X3BydW5lX2luZGV4JyBiZWxvbmcuCisgKgogICogT24gcmV0dXJuLCAqaW5pdGlhbGx5X3Zh bGlkX3N1YnBsYW5zIGlzIGFzc2lnbmVkIHRoZSBzZXQgb2YgaW5kZXhlcyBvZgogICogY2hpbGQg c3VicGxhbnMgdGhhdCBtdXN0IGJlIGluaXRpYWxpemVkIGFsb25nIHdpdGggdGhlIHBhcmVudCBw bGFuIG5vZGUuCiAgKiBJbml0aWFsIHBydW5pbmcgaXMgcGVyZm9ybWVkIGhlcmUgaWYgbmVlZGVk IGFuZCBpbiB0aGF0IGNhc2Ugb25seSB0aGUKQEAgLTE3OTgsMTEgKzE4MDEsMjUgQEAgYWRqdXN0 X3BhcnRpdGlvbl9jb2xub3NfdXNpbmdfbWFwKExpc3QgKmNvbG5vcywgQXR0ck1hcCAqYXR0ck1h cCkKIFBhcnRpdGlvblBydW5lU3RhdGUgKgogRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKFBsYW5T dGF0ZSAqcGxhbnN0YXRlLAogCQkJCQkJIGludCBuX3RvdGFsX3N1YnBsYW5zLAotCQkJCQkJIFBh cnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvLAorCQkJCQkJIGludCBwYXJ0X3BydW5lX2luZGV4 LAorCQkJCQkJIEJpdG1hcHNldCAqcm9vdF9wYXJlbnRfcmVsaWRzLAogCQkJCQkJIEJpdG1hcHNl dCAqKmluaXRpYWxseV92YWxpZF9zdWJwbGFucykKIHsKIAlQYXJ0aXRpb25QcnVuZVN0YXRlICpw cnVuZXN0YXRlOwogCUVTdGF0ZQkgICAqZXN0YXRlID0gcGxhbnN0YXRlLT5zdGF0ZTsKKwlQYXJ0 aXRpb25QcnVuZUluZm8gKnBydW5laW5mbzsKKworCS8qIE9idGFpbiB0aGUgcHJ1bmVpbmZvIHdl IG5lZWQsIGFuZCBtYWtlIHN1cmUgaXQncyB0aGUgcmlnaHQgb25lICovCisJcHJ1bmVpbmZvID0g bGlzdF9udGhfbm9kZShQYXJ0aXRpb25QcnVuZUluZm8sIGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9p bmZvcywKKwkJCQkJCQkgIHBhcnRfcHJ1bmVfaW5kZXgpOworCWlmICghYm1zX2VxdWFsKHJvb3Rf cGFyZW50X3JlbGlkcywgcHJ1bmVpbmZvLT5yb290X3BhcmVudF9yZWxpZHMpKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlRFUk5BTF9FUlJPUiksCisJCQkJZXJybXNn X2ludGVybmFsKCJtaXNtYXRjaGluZyBQYXJ0aXRpb25QcnVuZUluZm8gZm91bmQgYXQgcGFydF9w cnVuZV9pbmRleCAlZCIsCisJCQkJCQkJCXBhcnRfcHJ1bmVfaW5kZXgpLAorCQkJCWVycmRldGFp bF9pbnRlcm5hbCgicGxhbiBub2RlIHJlbGlkcyAlcywgcHJ1bmVpbmZvIHJlbGlkcyAlcyIsCisJ CQkJCQkJCSAgIGJtc1RvU3RyaW5nKHJvb3RfcGFyZW50X3JlbGlkcyksCisJCQkJCQkJCSAgIGJt c1RvU3RyaW5nKHBydW5laW5mby0+cm9vdF9wYXJlbnRfcmVsaWRzKSkpOwogCiAJLyogV2UgbWF5 IG5lZWQgYW4gZXhwcmVzc2lvbiBjb250ZXh0IHRvIGV2YWx1YXRlIHBhcnRpdGlvbiBleHBycyAq LwogCUV4ZWNBc3NpZ25FeHByQ29udGV4dChlc3RhdGUsIHBsYW5zdGF0ZSk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNVdGlscy5jCmluZGV4IDU3MzdmOWY0ZWIuLjY3NzM0OTc5YjAgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNVdGlscy5jCkBAIC0xMTgsNiArMTE4LDcgQEAgQ3JlYXRlRXhlY3V0b3JTdGF0ZSh2b2lk KQogCWVzdGF0ZS0+ZXNfcm93bWFya3MgPSBOVUxMOwogCWVzdGF0ZS0+ZXNfcnRlcGVybWluZm9z ID0gTklMOwogCWVzdGF0ZS0+ZXNfcGxhbm5lZHN0bXQgPSBOVUxMOworCWVzdGF0ZS0+ZXNfcGFy dF9wcnVuZV9pbmZvcyA9IE5JTDsKIAogCWVzdGF0ZS0+ZXNfanVua0ZpbHRlciA9IE5VTEw7CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwppbmRleCBjYTBmNTRkNjc2Li5kZTdlYmFiNWMyIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCkBAIC0xMzQsNyArMTM0LDcgQEAgRXhlY0luaXRB cHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlhcHBlbmRz dGF0ZS0+YXNfYmVndW4gPSBmYWxzZTsKIAogCS8qIElmIHJ1bi10aW1lIHBhcnRpdGlvbiBwcnVu aW5nIGlzIGVuYWJsZWQsIHRoZW4gc2V0IHRoYXQgdXAgbm93ICovCi0JaWYgKG5vZGUtPnBhcnRf cHJ1bmVfaW5mbyAhPSBOVUxMKQorCWlmIChub2RlLT5wYXJ0X3BydW5lX2luZGV4ID49IDApCiAJ ewogCQlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlOwogCkBAIC0xNDUsNyArMTQ1LDgg QEAgRXhlY0luaXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFn cykKIAkJICovCiAJCXBydW5lc3RhdGUgPSBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoJmFwcGVu ZHN0YXRlLT5wcywKIAkJCQkJCQkJCQkJICBsaXN0X2xlbmd0aChub2RlLT5hcHBlbmRwbGFucyks Ci0JCQkJCQkJCQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmZvLAorCQkJCQkJCQkJCQkgIG5vZGUt PnBhcnRfcHJ1bmVfaW5kZXgsCisJCQkJCQkJCQkJCSAgbm9kZS0+YXBwcmVsaWRzLAogCQkJCQkJ CQkJCQkgICZ2YWxpZHN1YnBsYW5zKTsKIAkJYXBwZW5kc3RhdGUtPmFzX3BydW5lX3N0YXRlID0g cHJ1bmVzdGF0ZTsKIAkJbnBsYW5zID0gYm1zX251bV9tZW1iZXJzKHZhbGlkc3VicGxhbnMpOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwppbmRleCBlMWI5Yjk4NGE3Li4zZWQ5 MTgwOGRkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwpAQCAtODIsNyAr ODIsNyBAQCBFeGVjSW5pdE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5kICpub2RlLCBFU3RhdGUgKmVz dGF0ZSwgaW50IGVmbGFncykKIAltZXJnZXN0YXRlLT5wcy5FeGVjUHJvY05vZGUgPSBFeGVjTWVy Z2VBcHBlbmQ7CiAKIAkvKiBJZiBydW4tdGltZSBwYXJ0aXRpb24gcHJ1bmluZyBpcyBlbmFibGVk LCB0aGVuIHNldCB0aGF0IHVwIG5vdyAqLwotCWlmIChub2RlLT5wYXJ0X3BydW5lX2luZm8gIT0g TlVMTCkKKwlpZiAobm9kZS0+cGFydF9wcnVuZV9pbmRleCA+PSAwKQogCXsKIAkJUGFydGl0aW9u UHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsKIApAQCAtOTMsNyArOTMsOCBAQCBFeGVjSW5pdE1lcmdl QXBwZW5kKE1lcmdlQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJ ICovCiAJCXBydW5lc3RhdGUgPSBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoJm1lcmdlc3RhdGUt PnBzLAogCQkJCQkJCQkJCQkgIGxpc3RfbGVuZ3RoKG5vZGUtPm1lcmdlcGxhbnMpLAotCQkJCQkJ CQkJCQkgIG5vZGUtPnBhcnRfcHJ1bmVfaW5mbywKKwkJCQkJCQkJCQkJICBub2RlLT5wYXJ0X3By dW5lX2luZGV4LAorCQkJCQkJCQkJCQkgIG5vZGUtPmFwcHJlbGlkcywKIAkJCQkJCQkJCQkJICAm dmFsaWRzdWJwbGFucyk7CiAJCW1lcmdlc3RhdGUtPm1zX3BydW5lX3N0YXRlID0gcHJ1bmVzdGF0 ZTsKIAkJbnBsYW5zID0gYm1zX251bV9tZW1iZXJzKHZhbGlkc3VicGxhbnMpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCmluZGV4IGJiNDVlZjMxOGYuLjY2NDJkMDlhMzkg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYworKysg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKQEAgLTEyMjUsNyArMTIy NSw2IEBAIGNyZWF0ZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgQXBwZW5kUGF0aCAq YmVzdF9wYXRoLCBpbnQgZmxhZ3MpCiAJTGlzdENlbGwgICAqc3VicGF0aHM7CiAJaW50CQkJbmFz eW5jcGxhbnMgPSAwOwogCVJlbE9wdEluZm8gKnJlbCA9IGJlc3RfcGF0aC0+cGF0aC5wYXJlbnQ7 Ci0JUGFydGl0aW9uUHJ1bmVJbmZvICpwYXJ0cHJ1bmVpbmZvID0gTlVMTDsKIAlpbnQJCQlub2Rl bnVtc29ydGtleXMgPSAwOwogCUF0dHJOdW1iZXIgKm5vZGVTb3J0Q29sSWR4ID0gTlVMTDsKIAlP aWQJCSAgICpub2RlU29ydE9wZXJhdG9ycyA9IE5VTEw7CkBAIC0xMzc2LDYgKzEzNzUsOSBAQCBj cmVhdGVfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJlc3RfcGF0 aCwgaW50IGZsYWdzKQogCQlzdWJwbGFucyA9IGxhcHBlbmQoc3VicGxhbnMsIHN1YnBsYW4pOwog CX0KIAorCS8qIFNldCBiZWxvdyBpZiB3ZSBmaW5kIHF1YWxzIHRoYXQgd2UgY2FuIHVzZSB0byBy dW4tdGltZSBwcnVuZSAqLworCXBsYW4tPnBhcnRfcHJ1bmVfaW5kZXggPSAtMTsKKwogCS8qCiAJ ICogSWYgYW55IHF1YWxzIGV4aXN0LCB0aGV5IG1heSBiZSB1c2VmdWwgdG8gcGVyZm9ybSBmdXJ0 aGVyIHBhcnRpdGlvbgogCSAqIHBydW5pbmcgZHVyaW5nIGV4ZWN1dGlvbi4gIEdhdGhlciBpbmZv cm1hdGlvbiBuZWVkZWQgYnkgdGhlIGV4ZWN1dG9yIHRvCkBAIC0xMzk5LDE2ICsxNDAxLDE0IEBA IGNyZWF0ZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgQXBwZW5kUGF0aCAqYmVzdF9w YXRoLCBpbnQgZmxhZ3MpCiAJCX0KIAogCQlpZiAocHJ1bmVxdWFsICE9IE5JTCkKLQkJCXBhcnRw cnVuZWluZm8gPQotCQkJCW1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhyb290LCByZWwsCi0JCQkJ CQkJCQkJIGJlc3RfcGF0aC0+c3VicGF0aHMsCi0JCQkJCQkJCQkJIHBydW5lcXVhbCk7CisJCQlw bGFuLT5wYXJ0X3BydW5lX2luZGV4ID0gbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKHJvb3QsIHJl bCwKKwkJCQkJCQkJCQkJCQkJCSAgYmVzdF9wYXRoLT5zdWJwYXRocywKKwkJCQkJCQkJCQkJCQkJ CSAgcHJ1bmVxdWFsKTsKIAl9CiAKIAlwbGFuLT5hcHBlbmRwbGFucyA9IHN1YnBsYW5zOwogCXBs YW4tPm5hc3luY3BsYW5zID0gbmFzeW5jcGxhbnM7CiAJcGxhbi0+Zmlyc3RfcGFydGlhbF9wbGFu ID0gYmVzdF9wYXRoLT5maXJzdF9wYXJ0aWFsX3BhdGg7Ci0JcGxhbi0+cGFydF9wcnVuZV9pbmZv ID0gcGFydHBydW5laW5mbzsKIAogCWNvcHlfZ2VuZXJpY19wYXRoX2luZm8oJnBsYW4tPnBsYW4s IChQYXRoICopIGJlc3RfcGF0aCk7CiAKQEAgLTE0NDcsNyArMTQ0Nyw2IEBAIGNyZWF0ZV9tZXJn ZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgTWVyZ2VBcHBlbmRQYXRoICpiZXN0X3Bh dGgsCiAJTGlzdAkgICAqc3VicGxhbnMgPSBOSUw7CiAJTGlzdENlbGwgICAqc3VicGF0aHM7CiAJ UmVsT3B0SW5mbyAqcmVsID0gYmVzdF9wYXRoLT5wYXRoLnBhcmVudDsKLQlQYXJ0aXRpb25QcnVu ZUluZm8gKnBhcnRwcnVuZWluZm8gPSBOVUxMOwogCiAJLyoKIAkgKiBXZSBkb24ndCBoYXZlIHRo ZSBhY3R1YWwgY3JlYXRpb24gb2YgdGhlIE1lcmdlQXBwZW5kIG5vZGUgc3BsaXQgb3V0CkBAIC0x NTQwLDYgKzE1MzksOSBAQCBjcmVhdGVfbWVyZ2VfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJv b3QsIE1lcmdlQXBwZW5kUGF0aCAqYmVzdF9wYXRoLAogCQlzdWJwbGFucyA9IGxhcHBlbmQoc3Vi cGxhbnMsIHN1YnBsYW4pOwogCX0KIAorCS8qIFNldCBiZWxvdyBpZiB3ZSBmaW5kIHF1YWxzIHRo YXQgd2UgY2FuIHVzZSB0byBydW4tdGltZSBwcnVuZSAqLworCW5vZGUtPnBhcnRfcHJ1bmVfaW5k ZXggPSAtMTsKKwogCS8qCiAJICogSWYgYW55IHF1YWxzIGV4aXN0LCB0aGV5IG1heSBiZSB1c2Vm dWwgdG8gcGVyZm9ybSBmdXJ0aGVyIHBhcnRpdGlvbgogCSAqIHBydW5pbmcgZHVyaW5nIGV4ZWN1 dGlvbi4gIEdhdGhlciBpbmZvcm1hdGlvbiBuZWVkZWQgYnkgdGhlIGV4ZWN1dG9yIHRvCkBAIC0x NTU1LDEzICsxNTU3LDEzIEBAIGNyZWF0ZV9tZXJnZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAq cm9vdCwgTWVyZ2VBcHBlbmRQYXRoICpiZXN0X3BhdGgsCiAJCUFzc2VydChiZXN0X3BhdGgtPnBh dGgucGFyYW1faW5mbyA9PSBOVUxMKTsKIAogCQlpZiAocHJ1bmVxdWFsICE9IE5JTCkKLQkJCXBh cnRwcnVuZWluZm8gPSBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8ocm9vdCwgcmVsLAotCQkJCQkJ CQkJCQkJCSBiZXN0X3BhdGgtPnN1YnBhdGhzLAotCQkJCQkJCQkJCQkJCSBwcnVuZXF1YWwpOwor CQkJbm9kZS0+cGFydF9wcnVuZV9pbmRleCA9IG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhyb290 LCByZWwsCisJCQkJCQkJCQkJCQkJCQkgIGJlc3RfcGF0aC0+c3VicGF0aHMsCisJCQkJCQkJCQkJ CQkJCQkgIHBydW5lcXVhbCk7CiAJfQogCiAJbm9kZS0+bWVyZ2VwbGFucyA9IHN1YnBsYW5zOwot CW5vZGUtPnBhcnRfcHJ1bmVfaW5mbyA9IHBhcnRwcnVuZWluZm87CisKIAogCS8qCiAJICogSWYg cHJlcGFyZV9zb3J0X2Zyb21fcGF0aGtleXMgYWRkZWQgc29ydCBjb2x1bW5zLCBidXQgd2Ugd2Vy ZSB0b2xkIHRvCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVy LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggZGYzNWQxZmY5 Yy4uMWI5MDcxYzc3NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxh bm5lci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtNTQ3 LDYgKzU0Nyw3IEBAIHN0YW5kYXJkX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpx dWVyeV9zdHJpbmcsIGludCBjdXJzb3JPcHRpb25zLAogCXJlc3VsdC0+ZGVwZW5kc09uUm9sZSA9 IGdsb2ItPmRlcGVuZHNPblJvbGU7CiAJcmVzdWx0LT5wYXJhbGxlbE1vZGVOZWVkZWQgPSBnbG9i LT5wYXJhbGxlbE1vZGVOZWVkZWQ7CiAJcmVzdWx0LT5wbGFuVHJlZSA9IHRvcF9wbGFuOworCXJl c3VsdC0+cGFydFBydW5lSW5mb3MgPSBnbG9iLT5wYXJ0UHJ1bmVJbmZvczsKIAlyZXN1bHQtPnJ0 YWJsZSA9IGdsb2ItPmZpbmFscnRhYmxlOwogCXJlc3VsdC0+cGVybUluZm9zID0gZ2xvYi0+Zmlu YWxydGVwZXJtaW5mb3M7CiAJcmVzdWx0LT5yZXN1bHRSZWxhdGlvbnMgPSBnbG9iLT5yZXN1bHRS ZWxhdGlvbnM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZz LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKaW5kZXggOTFjN2M0ZmUy Zi4uZTJlYTQwNmM0ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0 cmVmcy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwpAQCAtMTcz Miw2ICsxNzMyLDQ4IEBAIHNldF9jdXN0b21zY2FuX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJv b3QsCiAJY3NjYW4tPmN1c3RvbV9yZWxpZHMgPSBvZmZzZXRfcmVsaWRfc2V0KGNzY2FuLT5jdXN0 b21fcmVsaWRzLCBydG9mZnNldCk7CiB9CiAKKy8qCisgKiByZWdpc3Rlcl9wYXJ0cHJ1bmVpbmZv CisgKgkJU3Vicm91dGluZSBmb3Igc2V0X2FwcGVuZF9yZWZlcmVuY2VzIGFuZCBzZXRfbWVyZ2Vh cHBlbmRfcmVmZXJlbmNlcworICoKKyAqIEFkZCB0aGUgUGFydGl0aW9uUHJ1bmVJbmZvIGZyb20g cm9vdC0+cGFydFBydW5lSW5mb3MgYXQgdGhlIGdpdmVuIGluZGV4CisgKiBpbnRvIFBsYW5uZXJH bG9iYWwtPnBhcnRQcnVuZUluZm9zIGFuZCByZXR1cm4gaXRzIGluZGV4IHRoZXJlLgorICoKKyAq IEFsc28gdXBkYXRlIHRoZSBSVCBpbmRleGVzIHByZXNlbnQgaW4gUGFydGl0aW9uZWRSZWxQcnVu ZUluZm9zIHRvIGFkZCB0aGUKKyAqIG9mZnNldC4KKyAqLworc3RhdGljIGludAorcmVnaXN0ZXJf cGFydHBydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgaW50IHBhcnRfcHJ1bmVfaW5kZXgsIGlu dCBydG9mZnNldCkKK3sKKwlQbGFubmVyR2xvYmFsICAqZ2xvYiA9IHJvb3QtPmdsb2I7CisJUGFy dGl0aW9uUHJ1bmVJbmZvICpwaW5mbzsKKwlMaXN0Q2VsbAkqbDsKKworCUFzc2VydChwYXJ0X3By dW5lX2luZGV4ID49IDAgJiYKKwkJICAgcGFydF9wcnVuZV9pbmRleCA8IGxpc3RfbGVuZ3RoKHJv b3QtPnBhcnRQcnVuZUluZm9zKSk7CisJcGluZm8gPSBsaXN0X250aF9ub2RlKFBhcnRpdGlvblBy dW5lSW5mbywgcm9vdC0+cGFydFBydW5lSW5mb3MsCisJCQkJCQkgIHBhcnRfcHJ1bmVfaW5kZXgp OworCisJcGluZm8tPnJvb3RfcGFyZW50X3JlbGlkcyA9IG9mZnNldF9yZWxpZF9zZXQocGluZm8t PnJvb3RfcGFyZW50X3JlbGlkcywKKwkJCQkJCQkJCQkJCSBydG9mZnNldCk7CisJZm9yZWFjaChs LCBwaW5mby0+cHJ1bmVfaW5mb3MpCisJeworCQlMaXN0CSAgICpwcnVuZV9pbmZvcyA9IGxmaXJz dChsKTsKKwkJTGlzdENlbGwgICAqbDI7CisKKwkJZm9yZWFjaChsMiwgcHJ1bmVfaW5mb3MpCisJ CXsKKwkJCVBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvICpwcmVsaW5mbyA9IGxmaXJzdChsMik7CisK KwkJCXByZWxpbmZvLT5ydGluZGV4ICs9IHJ0b2Zmc2V0OworCQl9CisJfQorCisJZ2xvYi0+cGFy dFBydW5lSW5mb3MgPSBsYXBwZW5kKGdsb2ItPnBhcnRQcnVuZUluZm9zLCBwaW5mbyk7CisKKwly ZXR1cm4gbGlzdF9sZW5ndGgoZ2xvYi0+cGFydFBydW5lSW5mb3MpIC0gMTsKK30KKwogLyoKICAq IHNldF9hcHBlbmRfcmVmZXJlbmNlcwogICoJCURvIHNldF9wbGFuX3JlZmVyZW5jZXMgcHJvY2Vz c2luZyBvbiBhbiBBcHBlbmQKQEAgLTE3ODQsMjEgKzE4MjYsMTMgQEAgc2V0X2FwcGVuZF9yZWZl cmVuY2VzKFBsYW5uZXJJbmZvICpyb290LAogCiAJYXBsYW4tPmFwcHJlbGlkcyA9IG9mZnNldF9y ZWxpZF9zZXQoYXBsYW4tPmFwcHJlbGlkcywgcnRvZmZzZXQpOwogCi0JaWYgKGFwbGFuLT5wYXJ0 X3BydW5lX2luZm8pCi0JewotCQlmb3JlYWNoKGwsIGFwbGFuLT5wYXJ0X3BydW5lX2luZm8tPnBy dW5lX2luZm9zKQotCQl7Ci0JCQlMaXN0CSAgICpwcnVuZV9pbmZvcyA9IGxmaXJzdChsKTsKLQkJ CUxpc3RDZWxsICAgKmwyOwotCi0JCQlmb3JlYWNoKGwyLCBwcnVuZV9pbmZvcykKLQkJCXsKLQkJ CQlQYXJ0aXRpb25lZFJlbFBydW5lSW5mbyAqcGluZm8gPSBsZmlyc3QobDIpOwotCi0JCQkJcGlu Zm8tPnJ0aW5kZXggKz0gcnRvZmZzZXQ7Ci0JCQl9Ci0JCX0KLQl9CisJLyoKKwkgKiBBZGQgUGFy dGl0aW9uUHJ1bmVJbmZvLCBpZiBhbnksIHRvIFBsYW5uZXJHbG9iYWwgYW5kIHVwZGF0ZSB0aGUg aW5kZXguCisJICogQWxzbyB1cGRhdGUgdGhlIFJUIGluZGV4ZXMgcHJlc2VudCBpbiBpdCB0byBh ZGQgdGhlIG9mZnNldC4KKwkgKi8KKwlpZiAoYXBsYW4tPnBhcnRfcHJ1bmVfaW5kZXggPj0gMCkK KwkJYXBsYW4tPnBhcnRfcHJ1bmVfaW5kZXggPQorCQkJcmVnaXN0ZXJfcGFydHBydW5laW5mbyhy b290LCBhcGxhbi0+cGFydF9wcnVuZV9pbmRleCwgcnRvZmZzZXQpOwogCiAJLyogV2UgZG9uJ3Qg bmVlZCB0byByZWN1cnNlIHRvIGxlZnR0cmVlIG9yIHJpZ2h0dHJlZSAuLi4gKi8KIAlBc3NlcnQo YXBsYW4tPnBsYW4ubGVmdHRyZWUgPT0gTlVMTCk7CkBAIC0xODYwLDIxICsxODk0LDEzIEBAIHNl dF9tZXJnZWFwcGVuZF9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LAogCiAJbXBsYW4tPmFw cHJlbGlkcyA9IG9mZnNldF9yZWxpZF9zZXQobXBsYW4tPmFwcHJlbGlkcywgcnRvZmZzZXQpOwog Ci0JaWYgKG1wbGFuLT5wYXJ0X3BydW5lX2luZm8pCi0JewotCQlmb3JlYWNoKGwsIG1wbGFuLT5w YXJ0X3BydW5lX2luZm8tPnBydW5lX2luZm9zKQotCQl7Ci0JCQlMaXN0CSAgICpwcnVuZV9pbmZv cyA9IGxmaXJzdChsKTsKLQkJCUxpc3RDZWxsICAgKmwyOwotCi0JCQlmb3JlYWNoKGwyLCBwcnVu ZV9pbmZvcykKLQkJCXsKLQkJCQlQYXJ0aXRpb25lZFJlbFBydW5lSW5mbyAqcGluZm8gPSBsZmly c3QobDIpOwotCi0JCQkJcGluZm8tPnJ0aW5kZXggKz0gcnRvZmZzZXQ7Ci0JCQl9Ci0JCX0KLQl9 CisJLyoKKwkgKiBBZGQgUGFydGl0aW9uUHJ1bmVJbmZvLCBpZiBhbnksIHRvIFBsYW5uZXJHbG9i YWwgYW5kIHVwZGF0ZSB0aGUgaW5kZXguCisJICogQWxzbyB1cGRhdGUgdGhlIFJUIGluZGV4ZXMg cHJlc2VudCBpbiBpdCB0byBhZGQgdGhlIG9mZnNldC4KKwkgKi8KKwlpZiAobXBsYW4tPnBhcnRf cHJ1bmVfaW5kZXggPj0gMCkKKwkJbXBsYW4tPnBhcnRfcHJ1bmVfaW5kZXggPQorCQkJcmVnaXN0 ZXJfcGFydHBydW5laW5mbyhyb290LCBtcGxhbi0+cGFydF9wcnVuZV9pbmRleCwgcnRvZmZzZXQp OwogCiAJLyogV2UgZG9uJ3QgbmVlZCB0byByZWN1cnNlIHRvIGxlZnR0cmVlIG9yIHJpZ2h0dHJl ZSAuLi4gKi8KIAlBc3NlcnQobXBsYW4tPnBsYW4ubGVmdHRyZWUgPT0gTlVMTCk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMgYi9zcmMvYmFja2VuZC9w YXJ0aXRpb25pbmcvcGFydHBydW5lLmMKaW5kZXggOWExYTdmYWFjNy4uNjBmYWJiMTczNCAxMDA2 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+cm9vdF9wYXJlbnRfcmVsaWRzID0gcGFyZW50cmVsLT5yZWxp ZHM7CiAJcHJ1bmVpbmZvLT5wcnVuZV9pbmZvcyA9IHBydW5lcmVsaW5mb3M7CiAKIAkvKgpAQCAt MzU2LDcgKzM2MSw5IEBAIG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9v dCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCWVsc2UKIAkJcHJ1bmVpbmZvLT5vdGhlcl9zdWJw bGFucyA9IE5VTEw7CiAKLQlyZXR1cm4gcHJ1bmVpbmZvOworCXJvb3QtPnBhcnRQcnVuZUluZm9z ID0gbGFwcGVuZChyb290LT5wYXJ0UHJ1bmVJbmZvcywgcHJ1bmVpbmZvKTsKKworCXJldHVybiBs aXN0X2xlbmd0aChyb290LT5wYXJ0UHJ1bmVJbmZvcykgLSAxOwogfQogCiAvKgpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oIGIvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvZXhlY1BhcnRpdGlvbi5oCmluZGV4IGMwOWJjODNiMmEuLjEyYWFjYzg0ZmYgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaAorKysgYi9zcmMvaW5j bHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKQEAgLTEyMyw5ICsxMjMsOSBAQCB0eXBlZGVm IHN0cnVjdCBQYXJ0aXRpb25QcnVuZVN0YXRlCiAKIGV4dGVybiBQYXJ0aXRpb25QcnVuZVN0YXRl ICpFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJCQkJCQkJ CQkJCQkJIGludCBuX3RvdGFsX3N1YnBsYW5zLAotCQkJCQkJCQkJCQkJCSBQYXJ0aXRpb25QcnVu ZUluZm8gKnBydW5laW5mbywKKwkJCQkJCQkJCQkJCQkgaW50IHBhcnRfcHJ1bmVfaW5kZXgsCisJ CQkJCQkJCQkJCQkJIEJpdG1hcHNldCAqcm9vdF9wYXJlbnRfcmVsaWRzLAogCQkJCQkJCQkJCQkJ CSBCaXRtYXBzZXQgKippbml0aWFsbHlfdmFsaWRfc3VicGxhbnMpOwogZXh0ZXJuIEJpdG1hcHNl dCAqRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3Rh dGUsCiAJCQkJCQkJCQkJICAgYm9vbCBpbml0aWFsX3BydW5lKTsKLQogI2VuZGlmCQkJCQkJCS8q IEVYRUNQQVJUSVRJT05fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCA4ODQ2Nzk3N2Y4Li4y MmI5MjhlMDg1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNjM2LDYgKzYzNiw3IEBAIHR5cGVk ZWYgc3RydWN0IEVTdGF0ZQogCQkJCQkJCQkJCSAqIEV4ZWNSb3dNYXJrcywgb3IgTlVMTCBpZiBu b25lICovCiAJTGlzdAkgICAqZXNfcnRlcGVybWluZm9zOwkvKiBMaXN0IG9mIFJURVBlcm1pc3Np b25JbmZvICovCiAJUGxhbm5lZFN0bXQgKmVzX3BsYW5uZWRzdG10OwkvKiBsaW5rIHRvIHRvcCBv ZiBwbGFuIHRyZWUgKi8KKwlMaXN0CSAgICplc19wYXJ0X3BydW5lX2luZm9zOwkvKiBQbGFubmVk U3RtdC5wYXJ0UHJ1bmVJbmZvcyAqLwogCWNvbnN0IGNoYXIgKmVzX3NvdXJjZVRleHQ7CS8qIFNv dXJjZSB0ZXh0IGZyb20gUXVlcnlEZXNjICovCiAKIAlKdW5rRmlsdGVyICplc19qdW5rRmlsdGVy OwkvKiB0b3AtbGV2ZWwganVuayBmaWx0ZXIsIGlmIGFueSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaApp bmRleCAwN2UyNDE1Mzk4Li44ZDMwYjZlODk2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rl cy9wYXRobm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaApAQCAtMTI4 LDYgKzEyOCw5IEBAIHR5cGVkZWYgc3RydWN0IFBsYW5uZXJHbG9iYWwKIAkvKiAiZmxhdCIgbGlz dCBvZiBBcHBlbmRSZWxJbmZvcyAqLwogCUxpc3QJICAgKmFwcGVuZFJlbGF0aW9uczsKIAorCS8q IExpc3Qgb2YgUGFydGl0aW9uUHJ1bmVJbmZvIGNvbnRhaW5lZCBpbiB0aGUgcGxhbiAqLworCUxp c3QJICAgKnBhcnRQcnVuZUluZm9zOworCiAJLyogT0lEcyBvZiByZWxhdGlvbnMgdGhlIHBsYW4g ZGVwZW5kcyBvbiAqLwogCUxpc3QJICAgKnJlbGF0aW9uT2lkczsKIApAQCAtNTU5LDYgKzU2Miw5 IEBAIHN0cnVjdCBQbGFubmVySW5mbwogCiAJLyogRG9lcyB0aGlzIHF1ZXJ5IG1vZGlmeSBhbnkg cGFydGl0aW9uIGtleSBjb2x1bW5zPyAqLwogCWJvb2wJCXBhcnRDb2xzVXBkYXRlZDsKKworCS8q IFBhcnRpdGlvblBydW5lSW5mb3MgYWRkZWQgaW4gdGhpcyBxdWVyeSdzIHBsYW4uICovCisJTGlz dAkgICAqcGFydFBydW5lSW5mb3M7CiB9OwogCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25v ZGVzL3BsYW5ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggNjJj ZDZhNjY2Ni4uMzlkMDI4MWMyMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5v ZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAgLTY5LDYgKzY5LDkg QEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lZFN0bXQKIAogCXN0cnVjdCBQbGFuICpwbGFuVHJlZTsJ CS8qIHRyZWUgb2YgUGxhbiBub2RlcyAqLwogCisJTGlzdAkgICAqcGFydFBydW5lSW5mb3M7IC8q IExpc3Qgb2YgUGFydGl0aW9uUHJ1bmVJbmZvIGNvbnRhaW5lZCBpbiB0aGUKKwkJCQkJCQkJICog cGxhbiAqLworCiAJTGlzdAkgICAqcnRhYmxlOwkJCS8qIGxpc3Qgb2YgUmFuZ2VUYmxFbnRyeSBu b2RlcyAqLwogCiAJTGlzdAkgICAqcGVybUluZm9zOwkJLyogbGlzdCBvZiBSVEVQZXJtaXNzaW9u SW5mbyBub2RlcyBmb3IgcnRhYmxlCkBAIC0yNzYsOCArMjc5LDggQEAgdHlwZWRlZiBzdHJ1Y3Qg QXBwZW5kCiAJICovCiAJaW50CQkJZmlyc3RfcGFydGlhbF9wbGFuOwogCi0JLyogSW5mbyBmb3Ig cnVuLXRpbWUgc3VicGxhbiBwcnVuaW5nOyBOVUxMIGlmIHdlJ3JlIG5vdCBkb2luZyB0aGF0ICov Ci0Jc3RydWN0IFBhcnRpdGlvblBydW5lSW5mbyAqcGFydF9wcnVuZV9pbmZvOworCS8qIEluZGV4 IHRvIFBsYW5uZXJJbmZvLnBhcnRQcnVuZUluZm9zIG9yIC0xIGlmIG5vIHJ1bi10aW1lIHBydW5p bmcgKi8KKwlpbnQJCQlwYXJ0X3BydW5lX2luZGV4OwogfSBBcHBlbmQ7CiAKIC8qIC0tLS0tLS0t LS0tLS0tLS0KQEAgLTMxMSw4ICszMTQsOCBAQCB0eXBlZGVmIHN0cnVjdCBNZXJnZUFwcGVuZAog CS8qIE5VTExTIEZJUlNUL0xBU1QgZGlyZWN0aW9ucyAqLwogCWJvb2wJICAgKm51bGxzRmlyc3Qg cGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnVtQ29scykpOwogCi0JLyogSW5mbyBmb3IgcnVuLXRp bWUgc3VicGxhbiBwcnVuaW5nOyBOVUxMIGlmIHdlJ3JlIG5vdCBkb2luZyB0aGF0ICovCi0Jc3Ry dWN0IFBhcnRpdGlvblBydW5lSW5mbyAqcGFydF9wcnVuZV9pbmZvOworCS8qIEluZGV4IHRvIFBs YW5uZXJJbmZvLnBhcnRQcnVuZUluZm9zIG9yIC0xIGlmIG5vIHJ1bi10aW1lIHBydW5pbmcgKi8K KwlpbnQJCQlwYXJ0X3BydW5lX2luZGV4OwogfSBNZXJnZUFwcGVuZDsKIAogLyogLS0tLS0tLS0t LS0tLS0tLQpAQCAtMTQxNCw2ICsxNDE3LDggQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhblJvd01hcmsK ICAqIFRoZW4sIHNpbmNlIGFuIEFwcGVuZC10eXBlIG5vZGUgY291bGQgaGF2ZSBtdWx0aXBsZSBw YXJ0aXRpb25pbmcKICAqIGhpZXJhcmNoaWVzIGFtb25nIGl0cyBjaGlsZHJlbiwgd2UgaGF2ZSBh biB1bm9yZGVyZWQgTGlzdCBvZiB0aG9zZSBMaXN0cy4KICAqCisgKiByb290X3BhcmVudF9yZWxp ZHMJUmVsT3B0SW5mby5yZWxpZHMgb2YgdGhlIHJlbGF0aW9uIHRvIHdoaWNoIHRoZSBwYXJlbnQK KyAqCQkJCQkJcGxhbiBub2RlIGFuZCB0aGlzIFBhcnRpdGlvblBydW5lSW5mbyBub2RlIGJlbG9u ZwogICogcHJ1bmVfaW5mb3MJCQlMaXN0IG9mIExpc3RzIGNvbnRhaW5pbmcgUGFydGl0aW9uZWRS ZWxQcnVuZUluZm8gbm9kZXMsCiAgKgkJCQkJCW9uZSBzdWJsaXN0IHBlciBydW4tdGltZS1wcnVu YWJsZSBwYXJ0aXRpb24gaGllcmFyY2h5CiAgKgkJCQkJCWFwcGVhcmluZyBpbiB0aGUgcGFyZW50 IHBsYW4gbm9kZSdzIHN1YnBsYW5zLgpAQCAtMTQyNiw2ICsxNDMxLDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgUGFydGl0aW9uUHJ1bmVJbmZvCiAJcGdfbm9kZV9hdHRyKG5vX2VxdWFsLCBub19xdWVyeV9q dW1ibGUpCiAKIAlOb2RlVGFnCQl0eXBlOworCUJpdG1hcHNldCAgKnJvb3RfcGFyZW50X3JlbGlk czsKIAlMaXN0CSAgICpwcnVuZV9pbmZvczsKIAlCaXRtYXBzZXQgICpvdGhlcl9zdWJwbGFuczsK IH0gUGFydGl0aW9uUHJ1bmVJbmZvOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFydGl0aW9u aW5nL3BhcnRwcnVuZS5oIGIvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oCmlu ZGV4IGJkNDkwZDE1NGYuLmM1MzZhMWZlMTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnRp dGlvbmluZy9wYXJ0cHJ1bmUuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBy dW5lLmgKQEAgLTcwLDEwICs3MCwxMCBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25QcnVuZUNv bnRleHQKICNkZWZpbmUgUHJ1bmVDeHRTdGF0ZUlkeChwYXJ0bmF0dHMsIHN0ZXBfaWQsIGtleW5v KSBcCiAJKChwYXJ0bmF0dHMpICogKHN0ZXBfaWQpICsgKGtleW5vKSkKIAotZXh0ZXJuIFBhcnRp dGlvblBydW5lSW5mbyAqbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKHN0cnVjdCBQbGFubmVySW5m byAqcm9vdCwKLQkJCQkJCQkJCQkJCQlzdHJ1Y3QgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAotCQkJ CQkJCQkJCQkJCUxpc3QgKnN1YnBhdGhzLAotCQkJCQkJCQkJCQkJCUxpc3QgKnBydW5lcXVhbCk7 CitleHRlcm4gaW50IG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhzdHJ1Y3QgUGxhbm5lckluZm8g KnJvb3QsCisJCQkJCQkJCQlzdHJ1Y3QgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAorCQkJCQkJCQkJ TGlzdCAqc3VicGF0aHMsCisJCQkJCQkJCQlMaXN0ICpwcnVuZXF1YWwpOwogZXh0ZXJuIEJpdG1h cHNldCAqcHJ1bmVfYXBwZW5kX3JlbF9wYXJ0aXRpb25zKHN0cnVjdCBSZWxPcHRJbmZvICpyZWwp OwogZXh0ZXJuIEJpdG1hcHNldCAqZ2V0X21hdGNoaW5nX3BhcnRpdGlvbnMoUGFydGl0aW9uUHJ1 bmVDb250ZXh0ICpjb250ZXh0LAogCQkJCQkJCQkJCSAgTGlzdCAqcHJ1bmluZ19zdGVwcyk7Ci0t IAoyLjQzLjAKCg== --000000000000b90aa8062274deae Content-Type: application/x-patch; name="v54-0004-Handle-CachedPlan-invalidation-in-the-executor.patch" Content-Disposition: attachment; filename="v54-0004-Handle-CachedPlan-invalidation-in-the-executor.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m177nojc0 RnJvbSAzOTE2Yzg2MTdiYTc3NzMxN2QwMWFhMTFjODliMzI3NmI0NmZlN2EwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMjIgQXVnIDIwMjQgMTk6Mzg6MTMgKzA5MDAKU3ViamVjdDogW1BBVENIIHY1 NCA0LzRdIEhhbmRsZSBDYWNoZWRQbGFuIGludmFsaWRhdGlvbiBpbiB0aGUgZXhlY3V0b3IKClRo aXMgY29tbWl0IG1ha2VzIGNoYW5nZXMgdG8gaGFuZGxlIGNhc2VzIHdoZXJlIGEgY2FjaGVkIHBs YW4KYmVjb21lcyBpbnZhbGlkIGJlZm9yZSBkZWZlcnJlZCBsb2NrcyBvbiBwcnVuYWJsZSByZWxh dGlvbnMgYXJlIHRha2VuLgoKKiBBZGQgY2hlY2tzIGF0IHZhcmlvdXMgcG9pbnRzIGluIEV4ZWN1 dG9yU3RhcnQoKSBhbmQgaXRzIGNhbGxlZAogIGZ1bmN0aW9ucyB0byBkZXRlcm1pbmUgaWYgdGhl IHBsYW4gYmVjb21lcyBpbnZhbGlkLiBJZiBkZXRlY3RlZCwKICB0aGUgZnVuY3Rpb24gYW5kIGl0 cyBjYWxsZXJzIHJldHVybiBpbW1lZGlhdGVseS4gQSBwcmV2aW91cyBjb21taXQKICBlbnN1cmVz IGFueSBwYXJ0aWFsbHkgaW5pdGlhbGl6ZWQgUGxhblN0YXRlIHRyZWUgb2JqZWN0cyBhcmUgY2xl YW5lZAogIHVwIGFwcHJvcHJpYXRlbHkuCgoqIEludHJvZHVjZSBFeGVjdXRvclN0YXJ0RXh0KCks IGEgd3JhcHBlciBvdmVyIEV4ZWN1dG9yU3RhcnQoKSwgdG8KICBoYW5kbGUgY2FzZXMgd2hlcmUg cGxhbiBpbml0aWFsaXphdGlvbiBpcyBhYm9ydGVkIGR1ZSB0byBpbnZhbGlkYXRpb24uCiAgRXhl Y3V0b3JTdGFydEV4dCgpIGNyZWF0ZXMgYSBuZXcgdHJhbnNpZW50IENhY2hlZFBsYW4gaWYgbmVl ZGVkIGFuZAogIHJldHJpZXMgZXhlY3V0aW9uLiBUaGlzIG5ldyBlbnRyeSBwb2ludCBpcyBvbmx5 IHJlcXVpcmVkIGZvciBzaXRlcwogIHVzaW5nIHBsYW5jYWNoZS5jLiBJdCByZXF1aXJlcyBwYXNz aW5nIHRoZSBRdWVyeURlc2MsIGVmbGFncywKICBDYWNoZWRQbGFuU291cmNlLCBhbmQgcXVlcnlf aW5kZXggKGluZGV4IGluIENhY2hlZFBsYW5Tb3VyY2UucXVlcnlfbGlzdCkuCgoqIEFkZCBHZXRT aW5nbGVDYWNoZWRQbGFuKCkgaW4gcGxhbmNhY2hlLmMgdG8gY3JlYXRlIGEgdHJhbnNpZW50CiAg Q2FjaGVkUGxhbiBmb3IgYSBzcGVjaWZpZWQgcXVlcnkgaW4gdGhlIGdpdmVuIENhY2hlZFBsYW5T b3VyY2UuCiAgU3VjaCBDYWNoZWRQbGFucyBhcmUgdHJhY2tlZCBpbiBhIHNlcGFyYXRlIGdsb2Jh bCBsaXN0IGZvciB0aGUKICBwbGFuY2FjaGUgaW52YWxpZGF0aW9uIGNhbGxiYWNrcyB0byBjaGVj ay4KClRoaXMgYWxzbyBhZGRzIGlzb2xhdGlvbiB0ZXN0cyB1c2luZyB0aGUgZGVsYXlfZXhlY3V0 aW9uIHRlc3QgbW9kdWxlCnRvIHZlcmlmeSBzY2VuYXJpb3Mgd2hlcmUgYSBDYWNoZWRQbGFuIGJl Y29tZXMgaW52YWxpZCBiZWZvcmUgdGhlCmRlZmVycmVkIGxvY2tzIGFyZSB0YWtlbi4KCkFsbCBF eGVjdXRvclN0YXJ0X2hvb2sgaW1wbGVtZW50YXRpb25zIG5vdyBtdXN0IGFkZCB0aGUgZm9sbG93 aW5nCmJsb2NrIGFmdGVyIHRoZSBFeGVjdXRvclN0YXJ0KCkgY2FsbCB0byBlbnN1cmUgaXQgZG9l c24ndCB3b3JrIHdpdGggYW4KaW52YWxpZCBwbGFuOgoKICAgIC8qIFRoZSBwbGFuIG1heSBoYXZl IGJlY29tZSBpbnZhbGlkIGR1cmluZyBFeGVjdXRvclN0YXJ0KCkgKi8KICAgIGlmICghRXhlY1Bs YW5TdGlsbFZhbGlkKHF1ZXJ5RGVzYy0+ZXN0YXRlKSkKICAgICAgICByZXR1cm47CgpSZXZpZXdl ZC1ieTogUm9iZXJ0IEhhYXMKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQStIaXdx RkdrTVNnZTZUZ0M5S1F6ZGUwb2hwQXljTFF1Vjdvb2l0RUVwYktCME9fbWdAbWFpbC5nbWFpbC5j b21rCi0tLQogY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMgICAgICAgICAgIHwg ICA0ICsKIC4uLi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMgICB8ICAg NCArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICAgICAgICAgfCAgIDgg Ky0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYyAgICAgICAgICAgICB8ICAgMSAr CiBzcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgICAgICAgICAgICAgfCAgMTAgKy0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyAgICAgICAgICAgICAgICB8ICAxNCArKwog c3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FICAgICAgICAgICAgICAgICAgIHwgIDM1ICsrLQog c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgICAgICAgIHwgIDg0ICsrKysr Ky0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jICAgICAgICAgICAgICB8ICAgMyAr LQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMgICAgICAgICAgICAgICAgICAgIHwgIDE5ICst CiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0K IHNyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgICAgICAgICAgICAgICAgICAgICB8ICAzMSArKy0K IHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jICAgICAgICAgICB8IDIwNiArKysr KysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMgICAgICAg ICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oICAgICAgICAgICAg ICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaCAgICAgICAgICAgICAg ICB8ICAgMSArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oICAgICAgICAgICAgICAg fCAgIDEgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCAgICAgICAgICAgICAgIHwg IDE3ICsrCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICAgICAgfCAg IDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmggICAgICAgICAgICAgICAgIHwgIDI2 ICsrKwogc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmggICAgICAgICAgICAgICAgICAgIHwgICA0 ICstCiBzcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZSAgICAgfCAgIDMg Ky0KIC4uLi9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9kZWxheV9leGVjdXRpb24uYyB8ICA2MyAr KysrKy0KIC4uLi9leHBlY3RlZC9jYWNoZWQtcGxhbi1pbnZhbC5vdXQgICAgICAgICAgICB8IDE3 NSArKysrKysrKysrKysrKysKIHNyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL21lc29u LmJ1aWxkICB8ICAgMSArCiAuLi4vc3BlY3MvY2FjaGVkLXBsYW4taW52YWwuc3BlYyAgICAgICAg ICAgICAgfCAgNjUgKysrKysrCiAyNiBmaWxlcyBjaGFuZ2VkLCA3NDkgaW5zZXJ0aW9ucygrKSwg MzYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9kZWxh eV9leGVjdXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4taW52YWwub3V0CiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vc3BlY3MvY2FjaGVkLXBsYW4t aW52YWwuc3BlYwoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFp bi5jIGIvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMKaW5kZXggNjc3YzEzNWY1 OS4uOWViNWU5YTYxOSAxMDA2NDQKLS0tIGEvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBs YWluLmMKKysrIGIvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMKQEAgLTMwMCw2 ICszMDAsMTAgQEAgZXhwbGFpbl9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBp bnQgZWZsYWdzKQogCWVsc2UKIAkJc3RhbmRhcmRfRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVm bGFncyk7CiAKKwkvKiBUaGUgcGxhbiBtYXkgaGF2ZSBiZWNvbWUgaW52YWxpZCBkdXJpbmcgc3Rh bmRhcmRfRXhlY3V0b3JTdGFydCgpICovCisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQocXVlcnlE ZXNjLT5lc3RhdGUpKQorCQlyZXR1cm47CisKIAlpZiAoYXV0b19leHBsYWluX2VuYWJsZWQoKSkK IAl7CiAJCS8qCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0 X3N0YXRlbWVudHMuYyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVt ZW50cy5jCmluZGV4IDNjNzJlNDM3ZjcuLjc2NjQyYjU1N2EgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv cGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCisrKyBiL2NvbnRyaWIvcGdf c3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCkBAIC05ODUsNiArOTg1LDEwIEBA IHBnc3NfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAll bHNlCiAJCXN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwogCisJLyog VGhlIHBsYW4gbWF5IGhhdmUgYmVjb21lIGludmFsaWQgZHVyaW5nIHN0YW5kYXJkX0V4ZWN1dG9y U3RhcnQoKSAqLworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKHF1ZXJ5RGVzYy0+ZXN0YXRlKSkK KwkJcmV0dXJuOworCiAJLyoKIAkgKiBJZiBxdWVyeSBoYXMgcXVlcnlJZCB6ZXJvLCBkb24ndCB0 cmFjayBpdC4gIFRoaXMgcHJldmVudHMgZG91YmxlCiAJICogY291bnRpbmcgb2Ygb3B0aW1pemFi bGUgc3RhdGVtZW50cyB0aGF0IGFyZSBkaXJlY3RseSBjb250YWluZWQgaW4KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 cGxhaW4uYwppbmRleCA0OWY3MzcwNzM0Li5iN2EwYjhjMDViIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFp bi5jCkBAIC01MDksNyArNTA5LDggQEAgc3RhbmRhcmRfRXhwbGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpx dWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJfQogCiAJLyogcnVuIGl0IChpZiBuZWVkZWQpIGFu ZCBwcm9kdWNlIG91dHB1dCAqLwotCUV4cGxhaW5PbmVQbGFuKHBsYW4sIE5VTEwsIGludG8sIGVz LCBxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVyeUVudiwKKwlFeHBsYWluT25lUGxhbihwbGFuLCBO VUxMLCBOVUxMLCAtMSwgaW50bywgZXMsIHF1ZXJ5U3RyaW5nLCBwYXJhbXMsCisJCQkJICAgcXVl cnlFbnYsCiAJCQkJICAgJnBsYW5kdXJhdGlvbiwgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDog TlVMTCksCiAJCQkJICAgZXMtPm1lbW9yeSA/ICZtZW1fY291bnRlcnMgOiBOVUxMKTsKIH0KQEAg LTYxOCw2ICs2MTksNyBAQCBFeHBsYWluT25lVXRpbGl0eShOb2RlICp1dGlsaXR5U3RtdCwgSW50 b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKICAqLwogdm9pZAogRXhwbGFpbk9uZVBs YW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBDYWNoZWRQbGFuICpjcGxhbiwKKwkJCSAgIENh Y2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIGludCBxdWVyeV9pbmRleCwKIAkJCSAgIEludG9D bGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCQkgICBjb25zdCBjaGFyICpxdWVyeVN0 cmluZywgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkgICBRdWVyeUVudmlyb25tZW50ICpxdWVy eUVudiwgY29uc3QgaW5zdHJfdGltZSAqcGxhbmR1cmF0aW9uLApAQCAtNjg4LDggKzY5MCw4IEBA IEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgQ2FjaGVkUGxhbiAqY3Bs YW4sCiAJaWYgKGludG8pCiAJCWVmbGFncyB8PSBHZXRJbnRvUmVsRUZsYWdzKGludG8pOwogCi0J LyogY2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbiAq LwotCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOworCS8qIENhbGwgRXhlY3V0b3JT dGFydEV4dCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24uICovCisJRXhlY3V0b3JT dGFydEV4dChxdWVyeURlc2MsIGVmbGFncywgcGxhbnNvdXJjZSwgcXVlcnlfaW5kZXgpOwogCiAJ LyogRXhlY3V0ZSB0aGUgcGxhbiBmb3Igc3RhdGlzdGljcyBpZiBhc2tlZCBmb3IgKi8KIAlpZiAo ZXMtPmFuYWx5emUpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRz LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMKaW5kZXggNGY2YWNmNjcxOS4u NGIxNTAzYzA1ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYwpAQCAtMTA3LDYgKzEwNyw3 IEBAIFBlcmZvcm1DdXJzb3JPcGVuKFBhcnNlU3RhdGUgKnBzdGF0ZSwgRGVjbGFyZUN1cnNvclN0 bXQgKmNzdG10LCBQYXJhbUxpc3RJbmZvIHBhCiAJCQkJCSAgcXVlcnlTdHJpbmcsCiAJCQkJCSAg Q01EVEFHX1NFTEVDVCwJLyogY3Vyc29yJ3MgcXVlcnkgaXMgYWx3YXlzIGEgU0VMRUNUICovCiAJ CQkJCSAgbGlzdF9tYWtlMShwbGFuKSwKKwkJCQkJICBOVUxMLAogCQkJCQkgIE5VTEwpOwogCiAJ LyotLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKaW5kZXggMzExYjllYmQ1Yi4uNGNkNzlh NmUzYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwpAQCAtMjAyLDcgKzIwMiw4IEBAIEV4ZWN1dGVR dWVyeShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCSAgcXVlcnlfc3RyaW5nLAogCQkJCQkgIGVu dHJ5LT5wbGFuc291cmNlLT5jb21tYW5kVGFnLAogCQkJCQkgIHBsYW5fbGlzdCwKLQkJCQkJICBj cGxhbik7CisJCQkJCSAgY3BsYW4sCisJCQkJCSAgZW50cnktPnBsYW5zb3VyY2UpOwogCiAJLyoK IAkgKiBGb3IgQ1JFQVRFIFRBQkxFIC4uLiBBUyBFWEVDVVRFLCB3ZSBtdXN0IHZlcmlmeSB0aGF0 IHRoZSBwcmVwYXJlZApAQCAtNTgzLDYgKzU4NCw3IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhl Y3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAog CU1lbW9yeUNvbnRleHRDb3VudGVycyBtZW1fY291bnRlcnM7CiAJTWVtb3J5Q29udGV4dCBwbGFu bmVyX2N0eCA9IE5VTEw7CiAJTWVtb3J5Q29udGV4dCBzYXZlZF9jdHggPSBOVUxMOworCWludAkJ CWkgPSAwOwogCiAJaWYgKGVzLT5tZW1vcnkpCiAJewpAQCAtNjU1LDggKzY1Nyw4IEBAIEV4cGxh aW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBF eHBsYWluU3RhdGUgKmVzLAogCQlQbGFubmVkU3RtdCAqcHN0bXQgPSBsZmlyc3Rfbm9kZShQbGFu bmVkU3RtdCwgcCk7CiAKIAkJaWYgKHBzdG10LT5jb21tYW5kVHlwZSAhPSBDTURfVVRJTElUWSkK LQkJCUV4cGxhaW5PbmVQbGFuKHBzdG10LCBjcGxhbiwgaW50bywgZXMsIHF1ZXJ5X3N0cmluZywg cGFyYW1MSSwKLQkJCQkJCSAgIHF1ZXJ5RW52LAorCQkJRXhwbGFpbk9uZVBsYW4ocHN0bXQsIGNw bGFuLCBlbnRyeS0+cGxhbnNvdXJjZSwgaSwKKwkJCQkJCSAgIGludG8sIGVzLCBxdWVyeV9zdHJp bmcsIHBhcmFtTEksIHF1ZXJ5RW52LAogCQkJCQkJICAgJnBsYW5kdXJhdGlvbiwgKGVzLT5idWZm ZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCksCiAJCQkJCQkgICBlcy0+bWVtb3J5ID8gJm1lbV9jb3Vu dGVycyA6IE5VTEwpOwogCQllbHNlCkBAIC02NjgsNiArNjcwLDggQEAgRXhwbGFpbkV4ZWN1dGVR dWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0 ZSAqZXMsCiAJCS8qIFNlcGFyYXRlIHBsYW5zIHdpdGggYW4gYXBwcm9wcmlhdGUgc2VwYXJhdG9y ICovCiAJCWlmIChsbmV4dChwbGFuX2xpc3QsIHApICE9IE5VTEwpCiAJCQlFeHBsYWluU2VwYXJh dGVQbGFucyhlcyk7CisKKwkJaSsrOwogCX0KIAogCWlmIChlc3RhdGUpCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90cmln Z2VyLmMKaW5kZXggMjlkMzBiZmI2Zi4uZTMzYjhmNTczYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIu YwpAQCAtNTEyMCw2ICs1MTIwLDIwIEBAIEFmdGVyVHJpZ2dlckVuZFF1ZXJ5KEVTdGF0ZSAqZXN0 YXRlKQogCWFmdGVyVHJpZ2dlcnMucXVlcnlfZGVwdGgtLTsKIH0KIAorLyogLS0tLS0tLS0tLQor ICogQWZ0ZXJUcmlnZ2VyQWJvcnRRdWVyeSgpCisgKgorICogQ2FsbGVkIGJ5IEV4ZWN1dG9yRW5k KCkgaWYgdGhlIHF1ZXJ5IGV4ZWN1dGlvbiB3YXMgYWJvcnRlZCBkdWUgdG8gdGhlCisgKiBwbGFu IGJlY29taW5nIGludmFsaWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLgorICogLS0tLS0tLS0tLQor ICovCit2b2lkCitBZnRlclRyaWdnZXJBYm9ydFF1ZXJ5KHZvaWQpCit7CisJLyogUmV2ZXJ0IHRo ZSBhY3Rpb25zIG9mIEFmdGVyVHJpZ2dlckJlZ2luUXVlcnkoKS4gKi8KKwlhZnRlclRyaWdnZXJz LnF1ZXJ5X2RlcHRoLS07Cit9CisKIAogLyoKICAqIEFmdGVyVHJpZ2dlckZyZWVRdWVyeQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvUkVBRE1FCmluZGV4IDY0MmQ2M2JlNjEuLmM3NmEwMGIzOTQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL1JFQURNRQorKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUK QEAgLTI4MCw2ICsyODAsMjggQEAgYXJlIHR5cGljYWxseSByZXNldCB0byBlbXB0eSBvbmNlIHBl ciB0dXBsZS4gIFBlci10dXBsZSBjb250ZXh0cyBhcmUgdXN1YWxseQogYXNzb2NpYXRlZCB3aXRo IEV4cHJDb250ZXh0cywgYW5kIGNvbW1vbmx5IGVhY2ggUGxhblN0YXRlIG5vZGUgaGFzIGl0cyBv d24KIEV4cHJDb250ZXh0IHRvIGV2YWx1YXRlIGl0cyBxdWFsIGFuZCB0YXJnZXRsaXN0IGV4cHJl c3Npb25zIGluLgogCitSZWxhdGlvbiBMb2NraW5nCistLS0tLS0tLS0tLS0tLS0tCisKK1R5cGlj YWxseSwgd2hlbiB0aGUgZXhlY3V0b3IgaW5pdGlhbGl6ZXMgYSBwbGFuIHRyZWUgZm9yIGV4ZWN1 dGlvbiwgaXQgZG9lc24ndAorbG9jayBub24taW5kZXggcmVsYXRpb25zIGlmIHRoZSBwbGFuIHRy ZWUgaXMgZnJlc2hseSBnZW5lcmF0ZWQgYW5kIG5vdCBkZXJpdmVkCitmcm9tIGEgQ2FjaGVkUGxh bi4gVGhpcyBpcyBiZWNhdXNlIHN1Y2ggbG9ja3MgaGF2ZSBhbHJlYWR5IGJlZW4gZXN0YWJsaXNo ZWQKK2R1cmluZyB0aGUgcXVlcnkncyBwYXJzaW5nLCByZXdyaXRpbmcsIGFuZCBwbGFubmluZyBw aGFzZXMuIEhvd2V2ZXIsIHdpdGggYQorY2FjaGVkIHBsYW4gdHJlZSwgc29tZSByZWxhdGlvbnMg bWF5IHJlbWFpbiB1bmxvY2tlZC4gVGhlIGZ1bmN0aW9uCitBY3F1aXJlRXhlY3V0b3JMb2Nrcygp IG9ubHkgbG9ja3MgdW5wcnVuYWJsZSByZWxhdGlvbnMgaW4gdGhlIHBsYW4sIGRlZmVycmluZwor dGhlIGxvY2tpbmcgb2YgcHJ1bmFibGUgb25lcyB0byBleGVjdXRvciBpbml0aWFsaXphdGlvbi4g VGhpcyBhdm9pZHMKK3VubmVjZXNzYXJ5IGxvY2tpbmcgb2YgcmVsYXRpb25zIHRoYXQgd2lsbCBi ZSBwcnVuZWQgZHVyaW5nICJpbml0aWFsIiBydW50aW1lCitwcnVuaW5nIGluIEV4ZWNEb0luaXRp YWxQcnVuaW5nKCkuCisKK1RoaXMgYXBwcm9hY2ggY3JlYXRlcyBhIHdpbmRvdyB3aGVyZSBhIGNh Y2hlZCBwbGFuIHRyZWUgd2l0aCBjaGlsZCB0YWJsZXMKK2NvdWxkIGJlY29tZSBvdXRkYXRlZCBp ZiBhbm90aGVyIGJhY2tlbmQgbW9kaWZpZXMgdGhlc2UgdGFibGVzIGJlZm9yZQorRXhlY0RvSW5p dGlhbFBydW5pbmcoKSBsb2NrcyB0aGVtLiBBcyBhIHJlc3VsdCwgdGhlIGV4ZWN1dG9yIGhhcyB0 aGUgYWRkZWQgZHV0eQordG8gdmVyaWZ5IHRoZSBwbGFuIHRyZWUncyB2YWxpZGl0eSB3aGVuZXZl ciBpdCBsb2NrcyBhIGNoaWxkIHRhYmxlIGFmdGVyCitkb2luZyBpbml0aWFsIHBydW5pbmcuIFRo aXMgdmFsaWRhdGlvbiBpcyBkb25lIGJ5IGNoZWNraW5nIHRoZSBDYWNoZWRQbGFuLmlzX3ZhbGlk CithdHRyaWJ1dGUuIElmIHRoZSBwbGFuIHRyZWUgaXMgb3V0ZGF0ZWQgKGlzX3ZhbGlkPWZhbHNl KSwgdGhlIGV4ZWN1dG9yIGhhbHRzCitmdXJ0aGVyIGluaXRpYWxpemF0aW9uLCBjbGVhbnMgdXAg YW55dGhpbmcgaW4gRVN0YXRlIHRoYXQgd291bGQgaGF2ZSBiZWVuCithbGxvY2F0ZWQgdXAgdG8g dGhhdCBwb2ludCwgYW5kIHJldHJpZXMgZXhlY3V0aW9uIGFmdGVyIHJlY3JlYXRpbmcgdGhlCitp bnZhbGlkIHBsYW4gaW4gdGhlIENhY2hlZFBsYW4uCiAKIFF1ZXJ5IFByb2Nlc3NpbmcgQ29udHJv bCBGbG93CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjg4LDExICszMTAsMTMg QEAgVGhpcyBpcyBhIHNrZXRjaCBvZiBjb250cm9sIGZsb3cgZm9yIGZ1bGwgcXVlcnkgcHJvY2Vz c2luZzoKIAogCUNyZWF0ZVF1ZXJ5RGVzYwogCi0JRXhlY3V0b3JTdGFydAorCUV4ZWN1dG9yU3Rh cnQgb3IgRXhlY3V0b3JTdGFydEV4dAogCQlDcmVhdGVFeGVjdXRvclN0YXRlCiAJCQljcmVhdGVz IHBlci1xdWVyeSBjb250ZXh0Ci0JCXN3aXRjaCB0byBwZXItcXVlcnkgY29udGV4dCB0byBydW4g RXhlY0luaXROb2RlCisJCXN3aXRjaCB0byBwZXItcXVlcnkgY29udGV4dCB0byBydW4gRXhlY0Rv SW5pdGlhbFBydW5pbmcgYW5kIEV4ZWNJbml0Tm9kZQogCQlBZnRlclRyaWdnZXJCZWdpblF1ZXJ5 CisJCUV4ZWNEb0luaXRpYWxQcnVuaW5nCisJCQlkb2VzIGluaXRpYWwgcHJ1bmluZyBhbmQgbG9j a3Mgc3Vydml2aW5nIHBhcnRpdGlvbnMgaWYgbmVlZGVkCiAJCUV4ZWNJbml0Tm9kZSAtLS0gcmVj dXJzaXZlbHkgc2NhbnMgcGxhbiB0cmVlCiAJCQlFeGVjSW5pdE5vZGUKIAkJCQlyZWN1cnNlIGlu dG8gc3Vic2lkaWFyeSBub2RlcwpAQCAtMzE2LDcgKzM0MCwxMiBAQCBUaGlzIGlzIGEgc2tldGNo IG9mIGNvbnRyb2wgZmxvdyBmb3IgZnVsbCBxdWVyeSBwcm9jZXNzaW5nOgogCiAJRnJlZVF1ZXJ5 RGVzYwogCi1QZXIgYWJvdmUgY29tbWVudHMsIGl0J3Mgbm90IHJlYWxseSBjcml0aWNhbCBmb3Ig RXhlY0VuZE5vZGUgdG8gZnJlZSBhbnkKK0FzIG1lbnRpb25lZCBpbiB0aGUgIlJlbGF0aW9uIExv Y2tpbmciIHNlY3Rpb24sIGlmIHRoZSBwbGFuIHRyZWUgaXMgZm91bmQgdG8KK2JlIHN0YWxlIGFm dGVyIGxvY2tpbmcgcGFydGl0aW9ucyBpbiBFeGVjRG9Jbml0aWFsUHJ1bmluZygpLCB0aGUgY29u dHJvbCBpcworaW1tZWRpYXRlbHkgcmV0dXJuZWQgdG8gRXhlY3V0b3JTdGFydEV4dCgpLCB3aGlj aCB3aWxsIGNyZWF0ZSBhIG5ldyBwbGFuIHRyZWUKK2FuZCBwZXJmb3JtIHRoZSBzdGVwcyBzdGFy dGluZyBmcm9tIENyZWF0ZUV4ZWN1dG9yU3RhdGUoKSBhZ2Fpbi4KKworUGVyIGFib3ZlIGNvbW1l bnRzLCBpdCdzIG5vdCByZWFsbHkgY3JpdGljYWwgZm9yIEV4ZWNFbmRQbGFuIHRvIGZyZWUgYW55 CiBtZW1vcnk7IGl0J2xsIGFsbCBnbyBhd2F5IGluIEZyZWVFeGVjdXRvclN0YXRlIGFueXdheS4g IEhvd2V2ZXIsIHdlIGRvIG5lZWQgdG8KIGJlIGNhcmVmdWwgdG8gY2xvc2UgcmVsYXRpb25zLCBk cm9wIGJ1ZmZlciBwaW5zLCBldGMsIHNvIHdlIGRvIG5lZWQgdG8gc2NhbgogdGhlIHBsYW4gc3Rh dGUgdHJlZSB0byBmaW5kIHRoZXNlIHNvcnRzIG9mIHJlc291cmNlcy4KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj TWFpbi5jCmluZGV4IGNiN2EyYmM0NTYuLjQwNjVlMDFmMTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01h aW4uYwpAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgInV0aWxzL2JhY2tlbmRfc3RhdHVzLmgi CiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcGFydGNhY2hl LmgiCisjaW5jbHVkZSAidXRpbHMvcGxhbmNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmxzLmgi CiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogCkBAIC0xMzcsNiArMTM4LDYwIEBAIEV4ZWN1 dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJCXN0YW5kYXJkX0V4 ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwogfQogCisvKgorICogQSB2YXJpYW50IG9m IEV4ZWN1dG9yU3RhcnQoKSB0aGF0IGhhbmRsZXMgY2xlYW51cCBhbmQgcmVwbGFubmluZyBpZiB0 aGUKKyAqIGlucHV0IENhY2hlZFBsYW4gYmVjb21lcyBpbnZhbGlkIGR1ZSB0byBsb2NrcyBiZWlu ZyB0YWtlbiBkdXJpbmcKKyAqIEV4ZWN1dG9yU3RhcnRJbnRlcm5hbCgpLiAgSWYgdGhhdCBoYXBw ZW5zLCBhIG5ldyBDYWNoZWRQbGFuIGlzIGNyZWF0ZWQKKyAqIG9ubHkgZm9yIHRoZSBhdCB0aGUg aW5kZXggJ3F1ZXJ5X2luZGV4JyBpbiBwbGFuc291cmNlLT5xdWVyeV9saXN0LCB3aGljaAorICog aXMgcmVsZWFzZWQgc2VwYXJhdGVseSBmcm9tIHRoZSBvcmlnaW5hbCBDYWNoZWRQbGFuLgorICov Cit2b2lkCitFeGVjdXRvclN0YXJ0RXh0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdz LAorCQkJCSBDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAorCQkJCSBpbnQgcXVlcnlfaW5k ZXgpCit7CisJaWYgKHF1ZXJ5RGVzYy0+Y3BsYW4gPT0gTlVMTCkKKwl7CisJCUV4ZWN1dG9yU3Rh cnQocXVlcnlEZXNjLCBlZmxhZ3MpOworCQlyZXR1cm47CisJfQorCisJd2hpbGUgKDEpCisJewor CQlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwkJaWYgKCFDYWNoZWRQbGFuVmFs aWQocXVlcnlEZXNjLT5jcGxhbikpCisJCXsKKwkJCUNhY2hlZFBsYW4gKmNwbGFuOworCisJCQkv KgorCQkJICogVGhlIHBsYW4gZ290IGludmFsaWRhdGVkLCBzbyB0cnkgd2l0aCBhIG5ldyB1cGRh dGVkIHBsYW4uCisJCQkgKgorCQkJICogQnV0IGZpcnN0IHVuZG8gd2hhdCBFeGVjdXRvclN0YXJ0 KCkgd291bGQndmUgZG9uZS4gIE1hcmsKKwkJCSAqIGV4ZWN1dGlvbiBhcyBhYm9ydGVkIHRvIGVu c3VyZSB0aGF0IEFGVEVSIHRyaWdnZXIgc3RhdGUgaXMKKwkJCSAqIHByb3Blcmx5IHJlc2V0Lgor CQkJICovCisJCQlxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfYWJvcnRlZCA9IHRydWU7CisJCQlFeGVj dXRvckVuZChxdWVyeURlc2MpOworCisJCQljcGxhbiA9IEdldFNpbmdsZUNhY2hlZFBsYW4ocGxh bnNvdXJjZSwgcXVlcnlfaW5kZXgsCisJCQkJCQkJCQkJcXVlcnlEZXNjLT5xdWVyeUVudik7CisK KwkJCS8qCisJCQkgKiBJbnN0YWxsIHRoZSBuZXcgdHJhbnNpZW50IGNwbGFuIGludG8gdGhlIFF1 ZXJ5RGVzYyByZXBsYWNpbmcKKwkJCSAqIHRoZSBvbGQgb25lIHNvIHRoYXQgZXhlY3V0b3IgaW5p dGlhbGl6YXRpb24gY29kZSBjYW4gc2VlIGl0LgorCQkJICogTWFyayBpdCBhcyBpbiB1c2UgYnkg dXMgYW5kIGFzayBGcmVlUXVlcnlEZXNjKCkgdG8gcmVsZWFzZSBpdC4KKwkJCSAqLworCQkJY3Bs YW4tPnJlZmNvdW50ID0gMTsKKwkJCXF1ZXJ5RGVzYy0+Y3BsYW4gPSBjcGxhbjsKKwkJCXF1ZXJ5 RGVzYy0+Y3BsYW5fcmVsZWFzZSA9IHRydWU7CisJCQlxdWVyeURlc2MtPnBsYW5uZWRzdG10ID0g bGluaXRpYWxfbm9kZShQbGFubmVkU3RtdCwKKwkJCQkJCQkJCQkJCSAgIHF1ZXJ5RGVzYy0+Y3Bs YW4tPnN0bXRfbGlzdCk7CisJCX0KKwkJZWxzZQorCQkJYnJlYWs7CS8qIEV4ZWN1dG9yU3RhcnQo KSBzdWNjZWVkZWQhICovCisJfQorfQorCiB2b2lkCiBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1 ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogewpAQCAtMzIwLDYgKzM3NSw3IEBAIHN0 YW5kYXJkX0V4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLAogCWVzdGF0ZSA9IHF1ZXJ5 RGVzYy0+ZXN0YXRlOwogCiAJQXNzZXJ0KGVzdGF0ZSAhPSBOVUxMKTsKKwlBc3NlcnQoIWVzdGF0 ZS0+ZXNfYWJvcnRlZCk7CiAJQXNzZXJ0KCEoZXN0YXRlLT5lc190b3BfZWZsYWdzICYgRVhFQ19G TEFHX0VYUExBSU5fT05MWSkpOwogCiAJLyogY2FsbGVyIG11c3QgZW5zdXJlIHRoZSBxdWVyeSdz IHNuYXBzaG90IGlzIGFjdGl2ZSAqLwpAQCAtNDI2LDggKzQ4MiwxMSBAQCBzdGFuZGFyZF9FeGVj dXRvckZpbmlzaChRdWVyeURlc2MgKnF1ZXJ5RGVzYykKIAlBc3NlcnQoZXN0YXRlICE9IE5VTEwp OwogCUFzc2VydCghKGVzdGF0ZS0+ZXNfdG9wX2VmbGFncyAmIEVYRUNfRkxBR19FWFBMQUlOX09O TFkpKTsKIAotCS8qIFRoaXMgc2hvdWxkIGJlIHJ1biBvbmNlIGFuZCBvbmx5IG9uY2UgcGVyIEV4 ZWN1dG9yIGluc3RhbmNlICovCi0JQXNzZXJ0KCFlc3RhdGUtPmVzX2ZpbmlzaGVkKTsKKwkvKgor CSAqIFRoaXMgc2hvdWxkIGJlIHJ1biBvbmNlIGFuZCBvbmx5IG9uY2UgcGVyIEV4ZWN1dG9yIGlu c3RhbmNlIGFuZCBuZXZlcgorCSAqIGlmIHRoZSBleGVjdXRpb24gd2FzIGFib3J0ZWQuCisJICov CisJQXNzZXJ0KCFlc3RhdGUtPmVzX2ZpbmlzaGVkICYmICFlc3RhdGUtPmVzX2Fib3J0ZWQpOwog CiAJLyogU3dpdGNoIGludG8gcGVyLXF1ZXJ5IG1lbW9yeSBjb250ZXh0ICovCiAJb2xkY29udGV4 dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7CkBAIC00ODYs MTEgKzU0NSwxMCBAQCBzdGFuZGFyZF9FeGVjdXRvckVuZChRdWVyeURlc2MgKnF1ZXJ5RGVzYykK IAlBc3NlcnQoZXN0YXRlICE9IE5VTEwpOwogCiAJLyoKLQkgKiBDaGVjayB0aGF0IEV4ZWN1dG9y RmluaXNoIHdhcyBjYWxsZWQsIHVubGVzcyBpbiBFWFBMQUlOLW9ubHkgbW9kZS4gVGhpcwotCSAq IEFzc2VydCBpcyBuZWVkZWQgYmVjYXVzZSBFeGVjdXRvckZpbmlzaCBpcyBuZXcgYXMgb2YgOS4x LCBhbmQgY2FsbGVycwotCSAqIG1pZ2h0IGZvcmdldCB0byBjYWxsIGl0LgorCSAqIENoZWNrIHRo YXQgRXhlY3V0b3JGaW5pc2ggd2FzIGNhbGxlZCwgdW5sZXNzIGluIEVYUExBSU4tb25seSBtb2Rl IG9yIGlmCisJICogZXhlY3V0aW9uIHdhcyBhYm9ydGVkLgogCSAqLwotCUFzc2VydChlc3RhdGUt PmVzX2ZpbmlzaGVkIHx8CisJQXNzZXJ0KGVzdGF0ZS0+ZXNfZmluaXNoZWQgfHwgZXN0YXRlLT5l c19hYm9ydGVkIHx8CiAJCSAgIChlc3RhdGUtPmVzX3RvcF9lZmxhZ3MgJiBFWEVDX0ZMQUdfRVhQ TEFJTl9PTkxZKSk7CiAKIAkvKgpAQCAtNTA0LDYgKzU2MiwxNCBAQCBzdGFuZGFyZF9FeGVjdXRv ckVuZChRdWVyeURlc2MgKnF1ZXJ5RGVzYykKIAlVbnJlZ2lzdGVyU25hcHNob3QoZXN0YXRlLT5l c19zbmFwc2hvdCk7CiAJVW5yZWdpc3RlclNuYXBzaG90KGVzdGF0ZS0+ZXNfY3Jvc3NjaGVja19z bmFwc2hvdCk7CiAKKwkvKgorCSAqIFJlc2V0IEFGVEVSIHRyaWdnZXIgbW9kdWxlIGlmIHRoZSBx dWVyeSBleGVjdXRpb24gd2FzIGFib3J0ZWQuCisJICovCisJaWYgKGVzdGF0ZS0+ZXNfYWJvcnRl ZCAmJgorCQkhKGVzdGF0ZS0+ZXNfdG9wX2VmbGFncyAmCisJCSAgKEVYRUNfRkxBR19TS0lQX1RS SUdHRVJTIHwgRVhFQ19GTEFHX0VYUExBSU5fT05MWSkpKQorCQlBZnRlclRyaWdnZXJBYm9ydFF1 ZXJ5KCk7CisKIAkvKgogCSAqIE11c3Qgc3dpdGNoIG91dCBvZiBjb250ZXh0IGJlZm9yZSBkZXN0 cm95aW5nIGl0CiAJICovCkBAIC05NTAsNiArMTAxNiw5IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAq cXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcyA9IHBs YW5uZWRzdG10LT5wYXJ0UHJ1bmVJbmZvczsKIAlFeGVjRG9Jbml0aWFsUHJ1bmluZyhlc3RhdGUp OwogCisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuOworCiAJLyoK IAkgKiBOZXh0LCBidWlsZCB0aGUgRXhlY1Jvd01hcmsgYXJyYXkgZnJvbSB0aGUgUGxhblJvd01h cmsocyksIGlmIGFueS4KIAkgKi8KQEAgLTI5MzEsNiArMzAwMCw5IEBAIEV2YWxQbGFuUXVhbFN0 YXJ0KEVQUVN0YXRlICplcHFzdGF0ZSwgUGxhbiAqcGxhblRyZWUpCiAJICogdGhlIHNuYXBzaG90 LCByYW5nZXRhYmxlLCBhbmQgZXh0ZXJuYWwgUGFyYW0gaW5mby4gIFRoZXkgbmVlZCB0aGVpciBv d24KIAkgKiBjb3BpZXMgb2YgbG9jYWwgc3RhdGUsIGluY2x1ZGluZyBhIHR1cGxlIHRhYmxlLCBl c19wYXJhbV9leGVjX3ZhbHMsCiAJICogcmVzdWx0LXJlbCBpbmZvLCBldGMuCisJICoKKwkgKiBl c19jYWNoZWRwbGFuIGlzIG5vdCBjb3BpZWQgYmVjYXVzZSBFUFEgcGxhbiBleGVjdXRpb24gZG9l cyBub3QgYWNxdWlyZQorCSAqIGFueSBuZXcgbG9ja3MgdGhhdCBjb3VsZCBpbnZhbGlkYXRlIHRo ZSBDYWNoZWRQbGFuLgogCSAqLwogCXJjZXN0YXRlLT5lc19kaXJlY3Rpb24gPSBGb3J3YXJkU2Nh bkRpcmVjdGlvbjsKIAlyY2VzdGF0ZS0+ZXNfc25hcHNob3QgPSBwYXJlbnRlc3RhdGUtPmVzX3Nu YXBzaG90OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwppbmRleCA2NzczNDk3OWIwLi40MzVhZTBk ZjdhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwpAQCAtMTQ3LDYgKzE0Nyw3IEBAIENyZWF0 ZUV4ZWN1dG9yU3RhdGUodm9pZCkKIAllc3RhdGUtPmVzX3RvcF9lZmxhZ3MgPSAwOwogCWVzdGF0 ZS0+ZXNfaW5zdHJ1bWVudCA9IDA7CiAJZXN0YXRlLT5lc19maW5pc2hlZCA9IGZhbHNlOworCWVz dGF0ZS0+ZXNfYWJvcnRlZCA9IGZhbHNlOwogCiAJZXN0YXRlLT5lc19leHByY29udGV4dHMgPSBO SUw7CiAKQEAgLTc1Nyw3ICs3NTgsNyBAQCBFeGVjSW5pdFJhbmdlVGFibGUoRVN0YXRlICplc3Rh dGUsIExpc3QgKnJhbmdlVGFibGUsIExpc3QgKnBlcm1JbmZvcykKICAqIEV4ZWNHZXRSYW5nZVRh YmxlUmVsYXRpb24KICAqCQlPcGVuIHRoZSBSZWxhdGlvbiBmb3IgYSByYW5nZSB0YWJsZSBlbnRy eSwgaWYgbm90IGFscmVhZHkgZG9uZQogICoKLSAqIFRoZSBSZWxhdGlvbnMgd2lsbCBiZSBjbG9z ZWQgYWdhaW4gaW4gRXhlY0VuZFBsYW4oKS4KKyAqIFRoZSBSZWxhdGlvbnMgd2lsbCBiZSBjbG9z ZWQgaW4gRXhlY0VuZFBsYW4oKS4KICAqLwogUmVsYXRpb24KIEV4ZWNHZXRSYW5nZVRhYmxlUmVs YXRpb24oRVN0YXRlICplc3RhdGUsIEluZGV4IHJ0aSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL3NwaS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKaW5kZXggNjU5YmQ2 ZGNkOS4uZjg0ZjM3NmM5YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKQEAgLTcwLDcgKzcwLDggQEAgc3RhdGlj IGludAlfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVP cHRpb25zICpvcHRpb25zLAogc3RhdGljIFBhcmFtTGlzdEluZm8gX1NQSV9jb252ZXJ0X3BhcmFt cyhpbnQgbmFyZ3MsIE9pZCAqYXJndHlwZXMsCiAJCQkJCQkJCQkJIERhdHVtICpWYWx1ZXMsIGNv bnN0IGNoYXIgKk51bGxzKTsKIAotc3RhdGljIGludAlfU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1 ZXJ5RGVzYywgYm9vbCBmaXJlX3RyaWdnZXJzLCB1aW50NjQgdGNvdW50KTsKK3N0YXRpYyBpbnQJ X1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIGJvb2wgZmlyZV90cmlnZ2VycywgdWlu dDY0IHRjb3VudCwKKwkJCQkJCUNhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIGludCBxdWVy eV9pbmRleCk7CiAKIHN0YXRpYyB2b2lkIF9TUElfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsK IApAQCAtMTY4Miw3ICsxNjgzLDggQEAgU1BJX2N1cnNvcl9vcGVuX2ludGVybmFsKGNvbnN0IGNo YXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwKIAkJCQkJICBxdWVyeV9zdHJpbmcsCiAJCQkJCSAg cGxhbnNvdXJjZS0+Y29tbWFuZFRhZywKIAkJCQkJICBzdG10X2xpc3QsCi0JCQkJCSAgY3BsYW4p OworCQkJCQkgIGNwbGFuLAorCQkJCQkgIHBsYW5zb3VyY2UpOwogCiAJLyoKIAkgKiBTZXQgdXAg b3B0aW9ucyBmb3IgcG9ydGFsLiAgRGVmYXVsdCBTQ1JPTEwgdHlwZSBpcyBjaG9zZW4gdGhlIHNh bWUgd2F5CkBAIC0yNDk0LDYgKzI0OTYsNyBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRy IHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCQlDYWNoZWRQbGFuU291 cmNlICpwbGFuc291cmNlID0gKENhY2hlZFBsYW5Tb3VyY2UgKikgbGZpcnN0KGxjMSk7CiAJCUxp c3QJICAgKnN0bXRfbGlzdDsKIAkJTGlzdENlbGwgICAqbGMyOworCQlpbnQJCQlpID0gMDsKIAog CQlzcGljYWxsYmFja2FyZy5xdWVyeSA9IHBsYW5zb3VyY2UtPnF1ZXJ5X3N0cmluZzsKIApAQCAt MjY5MSw4ICsyNjk0LDkgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25z dCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJCQkJCQkJCQlvcHRpb25zLT5wYXJhbXMs CiAJCQkJCQkJCQkJX1NQSV9jdXJyZW50LT5xdWVyeUVudiwKIAkJCQkJCQkJCQkwKTsKLQkJCQly ZXMgPSBfU1BJX3BxdWVyeShxZGVzYywgZmlyZV90cmlnZ2VycywKLQkJCQkJCQkJICBjYW5TZXRU YWcgPyBvcHRpb25zLT50Y291bnQgOiAwKTsKKworCQkJCXJlcyA9IF9TUElfcHF1ZXJ5KHFkZXNj LCBmaXJlX3RyaWdnZXJzLCBjYW5TZXRUYWcgPyBvcHRpb25zLT50Y291bnQgOiAwLAorCQkJCQkJ CQkgIHBsYW5zb3VyY2UsIGkpOwogCQkJCUZyZWVRdWVyeURlc2MocWRlc2MpOwogCQkJfQogCQkJ ZWxzZQpAQCAtMjc4OSw2ICsyNzkzLDggQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBw bGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJCQlteV9yZXMgPSByZXM7 CiAJCQkJZ290byBmYWlsOwogCQkJfQorCisJCQlpKys7CiAJCX0KIAogCQkvKiBEb25lIHdpdGgg dGhpcyBwbGFuLCBzbyByZWxlYXNlIHJlZmNvdW50ICovCkBAIC0yODY2LDcgKzI4NzIsOCBAQCBf U1BJX2NvbnZlcnRfcGFyYW1zKGludCBuYXJncywgT2lkICphcmd0eXBlcywKIH0KIAogc3RhdGlj IGludAotX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIGJvb2wgZmlyZV90cmlnZ2Vy cywgdWludDY0IHRjb3VudCkKK19TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBib29s IGZpcmVfdHJpZ2dlcnMsIHVpbnQ2NCB0Y291bnQsCisJCQlDYWNoZWRQbGFuU291cmNlICpwbGFu c291cmNlLCBpbnQgcXVlcnlfaW5kZXgpCiB7CiAJaW50CQkJb3BlcmF0aW9uID0gcXVlcnlEZXNj LT5vcGVyYXRpb247CiAJaW50CQkJZWZsYWdzOwpAQCAtMjkyMiw3ICsyOTI5LDcgQEAgX1NQSV9w cXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIGJvb2wgZmlyZV90cmlnZ2VycywgdWludDY0IHRj b3VudCkKIAllbHNlCiAJCWVmbGFncyA9IEVYRUNfRkxBR19TS0lQX1RSSUdHRVJTOwogCi0JRXhl Y3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CisJRXhlY3V0b3JTdGFydEV4dChxdWVyeURl c2MsIGVmbGFncywgcGxhbnNvdXJjZSwgcXVlcnlfaW5kZXgpOwogCiAJRXhlY3V0b3JSdW4ocXVl cnlEZXNjLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgdGNvdW50LCB0cnVlKTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jl cy5jCmluZGV4IGUzOTRmMTQxOWEuLmI5NWM4NTk2NTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTEy MzcsNiArMTIzNyw3IEBAIGV4ZWNfc2ltcGxlX3F1ZXJ5KGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmlu ZykKIAkJCQkJCSAgcXVlcnlfc3RyaW5nLAogCQkJCQkJICBjb21tYW5kVGFnLAogCQkJCQkJICBw bGFudHJlZV9saXN0LAorCQkJCQkJICBOVUxMLAogCQkJCQkJICBOVUxMKTsKIAogCQkvKgpAQCAt MjAzOSw3ICsyMDQwLDggQEAgZXhlY19iaW5kX21lc3NhZ2UoU3RyaW5nSW5mbyBpbnB1dF9tZXNz YWdlKQogCQkJCQkgIHF1ZXJ5X3N0cmluZywKIAkJCQkJICBwc3JjLT5jb21tYW5kVGFnLAogCQkJ CQkgIGNwbGFuLT5zdG10X2xpc3QsCi0JCQkJCSAgY3BsYW4pOworCQkJCQkgIGNwbGFuLAorCQkJ CQkgIHBzcmMpOwogCiAJLyogRG9uZSB3aXRoIHRoZSBzbmFwc2hvdCB1c2VkIGZvciBwYXJhbWV0 ZXIgSS9PIGFuZCBwYXJzaW5nL3BsYW5uaW5nICovCiAJaWYgKHNuYXBzaG90X3NldCkKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVy eS5jCmluZGV4IDZlOGY2YjFiOGYuLmRiYjBmZmI3NzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3Rjb3AvcHF1ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYwpAQCAtMTksNiAr MTksNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNsdWRlICJjb21tYW5kcy9w cmVwYXJlLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY2Rlc2MuaCIKICNpbmNsdWRlICJleGVj dXRvci90c3RvcmVSZWNlaXZlci5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUg InBnX3RyYWNlLmgiCkBAIC0zNyw2ICszOCw4IEBAIFBvcnRhbAkJQWN0aXZlUG9ydGFsID0gTlVM TDsKIAogc3RhdGljIHZvaWQgUHJvY2Vzc1F1ZXJ5KFBsYW5uZWRTdG10ICpwbGFuLAogCQkJCQkJ IENhY2hlZFBsYW4gKmNwbGFuLAorCQkJCQkJIENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2Us CisJCQkJCQkgaW50IHF1ZXJ5X2luZGV4LAogCQkJCQkJIGNvbnN0IGNoYXIgKnNvdXJjZVRleHQs CiAJCQkJCQkgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJCQkgUXVlcnlFbnZpcm9ubWVudCAq cXVlcnlFbnYsCkBAIC04MCw2ICs4Myw3IEBAIENyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAq cGxhbm5lZHN0bXQsCiAJcWQtPm9wZXJhdGlvbiA9IHBsYW5uZWRzdG10LT5jb21tYW5kVHlwZTsJ Lyogb3BlcmF0aW9uICovCiAJcWQtPnBsYW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7CS8qIHBsYW4g Ki8KIAlxZC0+Y3BsYW4gPSBjcGxhbjsJCQkvKiBDYWNoZWRQbGFuIHN1cHBseWluZyB0aGUgcGxh bm5lZHN0bXQgKi8KKwlxZC0+Y3BsYW5fcmVsZWFzZSA9IGZhbHNlOwogCXFkLT5zb3VyY2VUZXh0 ID0gc291cmNlVGV4dDsJLyogcXVlcnkgdGV4dCAqLwogCXFkLT5zbmFwc2hvdCA9IFJlZ2lzdGVy U25hcHNob3Qoc25hcHNob3QpOwkvKiBzbmFwc2hvdCAqLwogCS8qIFJJIGNoZWNrIHNuYXBzaG90 ICovCkBAIC0xMTQsNiArMTE4LDEzIEBAIEZyZWVRdWVyeURlc2MoUXVlcnlEZXNjICpxZGVzYykK IAlVbnJlZ2lzdGVyU25hcHNob3QocWRlc2MtPnNuYXBzaG90KTsKIAlVbnJlZ2lzdGVyU25hcHNo b3QocWRlc2MtPmNyb3NzY2hlY2tfc25hcHNob3QpOwogCisJLyoKKwkgKiBSZWxlYXNlIENhY2hl ZFBsYW4gaWYgcmVxdWVzdGVkLiAgVGhlIENhY2hlZFBsYW4gaXMgbm90IGFzc29jaWF0ZWQgd2l0 aAorCSAqIGEgUmVzb3VyY2VPd25lciB3aGVuIGNwbGFuX3JlbGVhc2UgaXMgdHJ1ZTsgc2VlIEV4 ZWN1dG9yU3RhcnRFeHQoKS4KKwkgKi8KKwlpZiAocWRlc2MtPmNwbGFuX3JlbGVhc2UpCisJCVJl bGVhc2VDYWNoZWRQbGFuKHFkZXNjLT5jcGxhbiwgTlVMTCk7CisKIAkvKiBPbmx5IHRoZSBRdWVy eURlc2MgaXRzZWxmIG5lZWQgYmUgZnJlZWQgKi8KIAlwZnJlZShxZGVzYyk7CiB9CkBAIC0xMjYs NiArMTM3LDggQEAgRnJlZVF1ZXJ5RGVzYyhRdWVyeURlc2MgKnFkZXNjKQogICoKICAqCXBsYW46 IHRoZSBwbGFuIHRyZWUgZm9yIHRoZSBxdWVyeQogICoJY3BsYW46IENhY2hlZFBsYW4gc3VwcGx5 aW5nIHRoZSBwbGFuCisgKglwbGFuc291cmNlOiBDYWNoZWRQbGFuU291cmNlIHN1cHBseWluZyB0 aGUgY3BsYW4KKyAqCXF1ZXJ5X2luZGV4OiBpbmRleCBvZiB0aGUgcXVlcnkgaW4gcGxhbnNvdXJj ZS0+cXVlcnlfbGlzdAogICoJc291cmNlVGV4dDogdGhlIHNvdXJjZSB0ZXh0IG9mIHRoZSBxdWVy eQogICoJcGFyYW1zOiBhbnkgcGFyYW1ldGVycyBuZWVkZWQKICAqCWRlc3Q6IHdoZXJlIHRvIHNl bmQgcmVzdWx0cwpAQCAtMTM5LDYgKzE1Miw4IEBAIEZyZWVRdWVyeURlc2MoUXVlcnlEZXNjICpx ZGVzYykKIHN0YXRpYyB2b2lkCiBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCiAJCQkg Q2FjaGVkUGxhbiAqY3BsYW4sCisJCQkgQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKKwkJ CSBpbnQgcXVlcnlfaW5kZXgsCiAJCQkgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCSBQYXJh bUxpc3RJbmZvIHBhcmFtcywKIAkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKQEAgLTE1 Nyw3ICsxNzIsNyBAQCBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCiAJLyoKIAkgKiBD YWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uCiAJICov Ci0JRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIDApOworCUV4ZWN1dG9yU3RhcnRFeHQocXVlcnlE ZXNjLCAwLCBwbGFuc291cmNlLCBxdWVyeV9pbmRleCk7CiAKIAkvKgogCSAqIFJ1biB0aGUgcGxh biB0byBjb21wbGV0aW9uLgpAQCAtNTE4LDkgKzUzMywxMiBAQCBQb3J0YWxTdGFydChQb3J0YWwg cG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkJbXllZmxhZ3MgPSBlZmxhZ3M7CiAK IAkJCQkvKgotCQkJCSAqIENhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZv ciBleGVjdXRpb24KKwkJCQkgKiBFeGVjdXRvclN0YXJ0RXh0KCkgdG8gcHJlcGFyZSB0aGUgcGxh biBmb3IgZXhlY3V0aW9uLiAgSWYKKwkJCQkgKiB0aGUgcG9ydGFsIGlzIHVzaW5nIGEgY2FjaGVk IHBsYW4sIGl0ICBtYXkgZ2V0IGludmFsaWRhdGVkCisJCQkJICogZHVyaW5nIHBsYW4gaW50aWFs aXphdGlvbiwgaW4gd2hpY2ggY2FzZSBhIG5ldyBvbmUgaXMKKwkJCQkgKiBjcmVhdGVkIGFuZCBz YXZlZCBpbiB0aGUgUXVlcnlEZXNjLgogCQkJCSAqLwotCQkJCUV4ZWN1dG9yU3RhcnQocXVlcnlE ZXNjLCBteWVmbGFncyk7CisJCQkJRXhlY3V0b3JTdGFydEV4dChxdWVyeURlc2MsIG15ZWZsYWdz LCBwb3J0YWwtPnBsYW5zb3VyY2UsIDApOwogCiAJCQkJLyoKIAkJCQkgKiBUaGlzIHRlbGxzIFBv cnRhbENsZWFudXAgdG8gc2h1dCBkb3duIHRoZSBleGVjdXRvcgpAQCAtMTIwMSw2ICsxMjE5LDcg QEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwKIHsKIAlib29sCQlhY3RpdmVfc25hcHNo b3Rfc2V0ID0gZmFsc2U7CiAJTGlzdENlbGwgICAqc3RtdGxpc3RfaXRlbTsKKwlpbnQJCQlpID0g MDsKIAogCS8qCiAJICogSWYgdGhlIGRlc3RpbmF0aW9uIGlzIERlc3RSZW1vdGVFeGVjdXRlLCBj aGFuZ2UgdG8gRGVzdE5vbmUuICBUaGUKQEAgLTEyODMsNiArMTMwMiw4IEBAIFBvcnRhbFJ1bk11 bHRpKFBvcnRhbCBwb3J0YWwsCiAJCQkJLyogc3RhdGVtZW50IGNhbiBzZXQgdGFnIHN0cmluZyAq LwogCQkJCVByb2Nlc3NRdWVyeShwc3RtdCwKIAkJCQkJCQkgcG9ydGFsLT5jcGxhbiwKKwkJCQkJ CQkgcG9ydGFsLT5wbGFuc291cmNlLAorCQkJCQkJCSBpLAogCQkJCQkJCSBwb3J0YWwtPnNvdXJj ZVRleHQsCiAJCQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFyYW1zLAogCQkJCQkJCSBwb3J0YWwtPnF1 ZXJ5RW52LApAQCAtMTI5Myw2ICsxMzE0LDggQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRh bCwKIAkJCQkvKiBzdG10IGFkZGVkIGJ5IHJld3JpdGUgY2Fubm90IHNldCB0YWcgKi8KIAkJCQlQ cm9jZXNzUXVlcnkocHN0bXQsCiAJCQkJCQkJIHBvcnRhbC0+Y3BsYW4sCisJCQkJCQkJIHBvcnRh bC0+cGxhbnNvdXJjZSwKKwkJCQkJCQkgaSwKIAkJCQkJCQkgcG9ydGFsLT5zb3VyY2VUZXh0LAog CQkJCQkJCSBwb3J0YWwtPnBvcnRhbFBhcmFtcywKIAkJCQkJCQkgcG9ydGFsLT5xdWVyeUVudiwK QEAgLTEzNTcsNiArMTM4MCw4IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJCSAq LwogCQlpZiAobG5leHQocG9ydGFsLT5zdG10cywgc3RtdGxpc3RfaXRlbSkgIT0gTlVMTCkKIAkJ CUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisKKwkJaSsrOwogCX0KIAogCS8qIFBvcCB0aGUg c25hcHNob3QgaWYgd2UgcHVzaGVkIG9uZS4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3BsYW5jYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hl LmMKaW5kZXggNWI3NWRhZGYxMy4uZDMzZjg3MWVhMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxh bmNhY2hlLmMKQEAgLTk0LDYgKzk0LDE0IEBACiAgKi8KIHN0YXRpYyBkbGlzdF9oZWFkIHNhdmVk X3BsYW5fbGlzdCA9IERMSVNUX1NUQVRJQ19JTklUKHNhdmVkX3BsYW5fbGlzdCk7CiAKKy8qCisg KiBIZWFkIG9mIHRoZSBiYWNrZW5kJ3MgbGlzdCBvZiAic3RhbmRhbG9uZSIgQ2FjaGVkUGxhbnMg dGhhdCBhcmUgbm90CisgKiBhc3NvY2lhdGVkIHdpdGggYSBDYWNoZWRQbGFuU291cmNlLCBjcmVh dGVkIGJ5IEdldFNpbmdsZUNhY2hlZFBsYW4oKSBmb3IKKyAqIHRyYW5zaWVudCB1c2UgYnkgdGhl IGV4ZWN1dG9yIGluIGNlcnRhaW4gc2NlbmFyaW9zIHdoZXJlIHRoZXkncmUgbmVlZGVkCisgKiBv bmx5IGZvciBvbmUgZXhlY3V0aW9uIG9mIHRoZSBwbGFuLgorICovCitzdGF0aWMgZGxpc3RfaGVh ZCBzdGFuZGFsb25lX3BsYW5fbGlzdCA9IERMSVNUX1NUQVRJQ19JTklUKHN0YW5kYWxvbmVfcGxh bl9saXN0KTsKKwogLyoKICAqIFRoaXMgaXMgdGhlIGhlYWQgb2YgdGhlIGJhY2tlbmQncyBsaXN0 IG9mIENhY2hlZEV4cHJlc3Npb25zLgogICovCkBAIC05MDUsNiArOTEzLDggQEAgQ2hlY2tDYWNo ZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpCiAgKiBQbGFubmluZyB3b3JrIGlz IGRvbmUgaW4gdGhlIGNhbGxlcidzIG1lbW9yeSBjb250ZXh0LiAgVGhlIGZpbmlzaGVkIHBsYW4K ICAqIGlzIGluIGEgY2hpbGQgbWVtb3J5IGNvbnRleHQsIHdoaWNoIHR5cGljYWxseSBzaG91bGQg Z2V0IHJlcGFyZW50ZWQKICAqICh1bmxlc3MgdGhpcyBpcyBhIG9uZS1zaG90IHBsYW4sIGluIHdo aWNoIGNhc2Ugd2UgZG9uJ3QgY29weSB0aGUgcGxhbikuCisgKgorICogTm90ZTogV2hlbiBjaGFu Z2luZyB0aGlzLCB5b3Ugc2hvdWxkIGFsc28gbG9vayBhdCBHZXRTaW5nbGVDYWNoZWRQbGFuKCku CiAgKi8KIHN0YXRpYyBDYWNoZWRQbGFuICoKIEJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291 cmNlICpwbGFuc291cmNlLCBMaXN0ICpxbGlzdCwKQEAgLTEwMzQsNiArMTA0NCw3IEBAIEJ1aWxk Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBMaXN0ICpxbGlzdCwKIAlw bGFuLT5pc19nZW5lcmljID0gZ2VuZXJpYzsKIAlwbGFuLT5pc19zYXZlZCA9IGZhbHNlOwogCXBs YW4tPmlzX3ZhbGlkID0gdHJ1ZTsKKwlwbGFuLT5pc19zdGFuZGFsb25lID0gZmFsc2U7CiAKIAkv KiBhc3NpZ24gZ2VuZXJhdGlvbiBudW1iZXIgdG8gbmV3IHBsYW4gKi8KIAlwbGFuLT5nZW5lcmF0 aW9uID0gKysocGxhbnNvdXJjZS0+Z2VuZXJhdGlvbik7CkBAIC0xMjgyLDYgKzEyOTMsMTIxIEBA IEdldENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgUGFyYW1MaXN0SW5m byBib3VuZFBhcmFtcywKIAlyZXR1cm4gcGxhbjsKIH0KIAorLyoKKyAqIENyZWF0ZSBhIGZyZXNo IENhY2hlZFBsYW4gZm9yIHRoZSBxdWVyeV9pbmRleCd0aCBxdWVyeSBpbiB0aGUgcHJvdmlkZWQK KyAqIENhY2hlZFBsYW5Tb3VyY2UuCisgKgorICogVGhlIGNyZWF0ZWQgQ2FjaGVkUGxhbiBpcyBz dGFuZGFsb25lLCBtZWFuaW5nIGl0IGlzIG5vdCB0cmFja2VkIGluIHRoZQorICogQ2FjaGVkUGxh blNvdXJjZS4gVGhlIENhY2hlZFBsYW4gYW5kIGl0cyBwbGFuIHRyZWVzIGFyZSBhbGxvY2F0ZWQg aW4gYQorICogY2hpbGQgY29udGV4dCBvZiB0aGUgY2FsbGVyJ3MgbWVtb3J5IGNvbnRleHQuIFRo ZSBjYWxsZXIgbXVzdCBlbnN1cmUgdGhleQorICogcmVtYWluIHZhbGlkIHVudGlsIGV4ZWN1dGlv biBpcyBjb21wbGV0ZSwgYWZ0ZXIgd2hpY2ggdGhlIHBsYW4gc2hvdWxkIGJlCisgKiByZWxlYXNl ZCBieSBjYWxsaW5nIFJlbGVhc2VDYWNoZWRQbGFuKCkuCisgKgorICogVGhpcyBmdW5jdGlvbiBw cmltYXJpbHkgc3VwcG9ydHMgRXhlY3V0b3JTdGFydEV4dCgpLCB3aGljaCBoYW5kbGVzIGNhc2Vz CisgKiB3aGVyZSB0aGUgb3JpZ2luYWwgZ2VuZXJpYyBDYWNoZWRQbGFuIGJlY29tZXMgaW52YWxp ZCBhZnRlciBwcnVuYWJsZQorICogcmVsYXRpb25zIGFyZSBsb2NrZWQuCisgKi8KK0NhY2hlZFBs YW4gKgorR2V0U2luZ2xlQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBp bnQgcXVlcnlfaW5kZXgsCisJCQkJCVF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KQoreworCUxp c3QgKnF1ZXJ5X2xpc3QgPSBwbGFuc291cmNlLT5xdWVyeV9saXN0LAorCQkgKnBsYW5fbGlzdDsK KwlDYWNoZWRQbGFuICpwbGFuID0gcGxhbnNvdXJjZS0+Z3BsYW47CisJTWVtb3J5Q29udGV4dCBv bGRjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dCwKKwkJcGxhbl9jb250ZXh0OworCVBsYW5uZWRT dG10ICpwbGFubmVkc3RtdDsKKworCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKKworCS8q IFNhbml0eSBjaGVja3MgKi8KKwlpZiAocGxhbiA9PSBOVUxMKQorCQllbG9nKEVSUk9SLCAiR2V0 U2luZ2xlQ2FjaGVkUGxhbigpIGNhbGxlZCBpbiB0aGUgd3JvbmcgY29udGV4dDogcGxhbnNvdXJj ZS0+Z3BsYW4gaXMgTlVMTCIpOworCWVsc2UgaWYgKHBsYW4tPmlzX3ZhbGlkKQorCQllbG9nKEVS Uk9SLCAiR2V0U2luZ2xlQ2FjaGVkUGxhbigpIGNhbGxlZCBpbiB0aGUgd3JvbmcgY29udGV4dDog cGxhbnNvdXJjZS0+Z3BsYW4tPmlzX3ZhbGlkIik7CisKKwkvKgorCSAqIFRoZSBwbGFuc291cmNl IG1pZ2h0IGhhdmUgYmVjb21lIGludmFsaWQgc2luY2UgR2V0Q2FjaGVkUGxhbigpLiBTZWUgdGhl CisJICogY29tbWVudCBpbiBCdWlsZENhY2hlZFBsYW4oKSBmb3IgZGV0YWlscyBvbiB3aHkgdGhp cyBtaWdodCBoYXBwZW4uCisJICoKKwkgKiBUaGUgcmlzayBpcyBncmVhdGVyIGhlcmUgYmVjYXVz ZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHRoZQorCSAqIGV4ZWN1dG9yLCBtZWFuaW5n IG11Y2ggbW9yZSBwcm9jZXNzaW5nIG1heSBoYXZlIG9jY3VycmVkIGNvbXBhcmVkIHRvCisJICog d2hlbiBCdWlsZENhY2hlZFBsYW4oKSBpcyBjYWxsZWQgZnJvbSBHZXRDYWNoZWRQbGFuKCkuCisJ ICovCisJaWYgKCFwbGFuc291cmNlLT5pc192YWxpZCkKKwkJcXVlcnlfbGlzdCA9IFJldmFsaWRh dGVDYWNoZWRRdWVyeShwbGFuc291cmNlLCBxdWVyeUVudik7CisJQXNzZXJ0KHF1ZXJ5X2xpc3Qg IT0gTklMKTsKKworCS8qCisJICogQnVpbGQgYSBuZXcgZ2VuZXJpYyBwbGFuIGZvciB0aGUgcXVl cnlfaW5kZXgndGggcXVlcnksIGJ1dCBtYWtlIGEgY29weQorCSAqIHRvIGJlIHNjcmliYmxlZCBv biBieSB0aGUgcGxhbm5lcgorCSAqLworCXF1ZXJ5X2xpc3QgPSBsaXN0X21ha2UxKGNvcHlPYmpl Y3QobGlzdF9udGhfbm9kZShRdWVyeSwgcXVlcnlfbGlzdCwKKwkJCQkJCQkJCQkJCQkgcXVlcnlf aW5kZXgpKSk7CisJcGxhbl9saXN0ID0gcGdfcGxhbl9xdWVyaWVzKHF1ZXJ5X2xpc3QsIHBsYW5z b3VyY2UtPnF1ZXJ5X3N0cmluZywKKwkJCQkJCQkJcGxhbnNvdXJjZS0+Y3Vyc29yX29wdGlvbnMs IE5VTEwpOworCisJbGlzdF9mcmVlX2RlZXAocXVlcnlfbGlzdCk7CisKKwkvKgorCSAqIE1ha2Ug YSBkZWRpY2F0ZWQgbWVtb3J5IGNvbnRleHQgZm9yIHRoZSBDYWNoZWRQbGFuIGFuZCBpdHMgc3Vi c2lkaWFyeQorCSAqIGRhdGEgc28gdGhhdCB3ZSBjYW4gcmVsZWFzZSBpdCBpbiBSZWxlYXNlQ2Fj aGVkUGxhbigpIHRoYXQgd2lsbCBiZQorCSAqIGNhbGxlZCBpbiBGcmVlUXVlcnlEZXNjKCkuCisJ ICovCisJcGxhbl9jb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKEN1cnJlbnRNZW1vcnlD b250ZXh0LAorCQkJCQkJCQkJCSAiU3RhbmRhbG9uZSBDYWNoZWRQbGFuIiwKKwkJCQkJCQkJCQkg QUxMT0NTRVRfU1RBUlRfU01BTExfU0laRVMpOworCU1lbW9yeUNvbnRleHRDb3B5QW5kU2V0SWRl bnRpZmllcihwbGFuX2NvbnRleHQsIHBsYW5zb3VyY2UtPnF1ZXJ5X3N0cmluZyk7CisKKwkvKgor CSAqIENvcHkgcGxhbiBpbnRvIHRoZSBuZXcgY29udGV4dC4KKwkgKi8KKwlNZW1vcnlDb250ZXh0 U3dpdGNoVG8ocGxhbl9jb250ZXh0KTsKKwlwbGFuX2xpc3QgPSBjb3B5T2JqZWN0KHBsYW5fbGlz dCk7CisKKwkvKgorCSAqIENyZWF0ZSBhbmQgZmlsbCB0aGUgQ2FjaGVkUGxhbiBzdHJ1Y3Qgd2l0 aGluIHRoZSBuZXcgY29udGV4dC4KKwkgKi8KKwlwbGFuID0gKENhY2hlZFBsYW4gKikgcGFsbG9j KHNpemVvZihDYWNoZWRQbGFuKSk7CisJcGxhbi0+bWFnaWMgPSBDQUNIRURQTEFOX01BR0lDOwor CXBsYW4tPnN0bXRfbGlzdCA9IHBsYW5fbGlzdDsKKworCXBsYW4tPnBsYW5Sb2xlSWQgPSBHZXRV c2VySWQoKTsKKwlBc3NlcnQobGlzdF9sZW5ndGgocGxhbl9saXN0KSA9PSAxKTsKKwlwbGFubmVk c3RtdCA9IGxpbml0aWFsX25vZGUoUGxhbm5lZFN0bXQsIHBsYW5fbGlzdCk7CisKKwkvKgorCSAq IENhY2hlZFBsYW4gaXMgZGVwZW5kZW50IG9uIHJvbGUgZWl0aGVyIGlmIFJMUyBhZmZlY3RlZCB0 aGUgcmV3cml0ZQorCSAqIHBoYXNlIG9yIGlmIGEgcm9sZSBkZXBlbmRlbmN5IHdhcyBpbmplY3Rl ZCBkdXJpbmcgcGxhbm5pbmcuICBBbmQgaXQncworCSAqIHRyYW5zaWVudCBpZiBhbnkgcGxhbiBp cyBtYXJrZWQgc28uCisJICovCisJcGxhbi0+ZGVwZW5kc09uUm9sZSA9IHBsYW5zb3VyY2UtPmRl cGVuZHNPblJMUyB8fCBwbGFubmVkc3RtdC0+ZGVwZW5kc09uUm9sZTsKKwlpZiAocGxhbm5lZHN0 bXQtPnRyYW5zaWVudFBsYW4pCisJeworCQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzTm9ybWFsKFRy YW5zYWN0aW9uWG1pbikpOworCQlwbGFuLT5zYXZlZF94bWluID0gVHJhbnNhY3Rpb25YbWluOwor CX0KKwllbHNlCisJCXBsYW4tPnNhdmVkX3htaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlw bGFuLT5yZWZjb3VudCA9IDA7CisJcGxhbi0+Y29udGV4dCA9IHBsYW5fY29udGV4dDsKKwlwbGFu LT5pc19vbmVzaG90ID0gZmFsc2U7CisJcGxhbi0+aXNfZ2VuZXJpYyA9IHRydWU7CisJcGxhbi0+ aXNfc2F2ZWQgPSBmYWxzZTsKKwlwbGFuLT5pc192YWxpZCA9IHRydWU7CisJcGxhbi0+aXNfc3Rh bmRhbG9uZSA9IHRydWU7CisJcGxhbi0+Z2VuZXJhdGlvbiA9IDE7CisJTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG9sZGN4dCk7CisKKwkvKgorCSAqIEFkZCB0aGUgZW50cnkgdG8gdGhlIGdsb2JhbCBs aXN0IG9mICJzdGFuZGFsb25lIiBjYWNoZWQgcGxhbnMuICBJdCBpcworCSAqIHJlbW92ZWQgZnJv bSB0aGUgbGlzdCBieSBSZWxlYXNlQ2FjaGVkUGxhbigpLgorCSAqLworCWRsaXN0X3B1c2hfdGFp bCgmc3RhbmRhbG9uZV9wbGFuX2xpc3QsICZwbGFuLT5ub2RlKTsKKworCXJldHVybiBwbGFuOwor fQorCiAvKgogICogUmVsZWFzZUNhY2hlZFBsYW46IHJlbGVhc2UgYWN0aXZlIHVzZSBvZiBhIGNh Y2hlZCBwbGFuLgogICoKQEAgLTEzMDksNiArMTQzNSwxMCBAQCBSZWxlYXNlQ2FjaGVkUGxhbihD YWNoZWRQbGFuICpwbGFuLCBSZXNvdXJjZU93bmVyIG93bmVyKQogCQkvKiBNYXJrIGl0IG5vIGxv bmdlciB2YWxpZCAqLwogCQlwbGFuLT5tYWdpYyA9IDA7CiAKKwkJLyogUmVtb3ZlIGZyb20gdGhl IGdsb2JhbCBsaXN0IGlmIHdlIGFyZSBhIHN0YW5kYWxvbmUgcGxhbi4gKi8KKwkJaWYgKHBsYW4t PmlzX3N0YW5kYWxvbmUpCisJCQlkbGlzdF9kZWxldGUoJnBsYW4tPm5vZGUpOworCiAJCS8qIE9u ZS1zaG90IHBsYW5zIGRvIG5vdCBvd24gdGhlaXIgY29udGV4dCwgc28gd2UgY2FuJ3QgZnJlZSB0 aGVtICovCiAJCWlmICghcGxhbi0+aXNfb25lc2hvdCkKIAkJCU1lbW9yeUNvbnRleHREZWxldGUo cGxhbi0+Y29udGV4dCk7CkBAIC0yMDY2LDYgKzIxOTYsMzMgQEAgUGxhbkNhY2hlUmVsQ2FsbGJh Y2soRGF0dW0gYXJnLCBPaWQgcmVsaWQpCiAJCQljZXhwci0+aXNfdmFsaWQgPSBmYWxzZTsKIAkJ fQogCX0KKworCS8qIEZpbmFsbHksIGludmFsaWRhdGUgYW55IHN0YW5kYWxvbmUgY2FjaGVkIHBs YW5zICovCisJZGxpc3RfZm9yZWFjaChpdGVyLCAmc3RhbmRhbG9uZV9wbGFuX2xpc3QpCisJewor CQlDYWNoZWRQbGFuICpjcGxhbiA9IGRsaXN0X2NvbnRhaW5lcihDYWNoZWRQbGFuLAorCQkJCQkJ CQkJCQlub2RlLCBpdGVyLmN1cik7CisKKwkJQXNzZXJ0KGNwbGFuLT5tYWdpYyA9PSBDQUNIRURQ TEFOX01BR0lDKTsKKworCQlpZiAoY3BsYW4tPmlzX3ZhbGlkKQorCQl7CisJCQlMaXN0Q2VsbCAg ICpsYzsKKworCQkJZm9yZWFjaChsYywgY3BsYW4tPnN0bXRfbGlzdCkKKwkJCXsKKwkJCQlQbGFu bmVkU3RtdCAqcGxhbm5lZHN0bXQgPSBsZmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgbGMpOworCisJ CQkJaWYgKHBsYW5uZWRzdG10LT5jb21tYW5kVHlwZSA9PSBDTURfVVRJTElUWSkKKwkJCQkJY29u dGludWU7CS8qIElnbm9yZSB1dGlsaXR5IHN0YXRlbWVudHMgKi8KKwkJCQlpZiAoKHJlbGlkID09 IEludmFsaWRPaWQpID8gcGxhbm5lZHN0bXQtPnJlbGF0aW9uT2lkcyAhPSBOSUwgOgorCQkJCQls aXN0X21lbWJlcl9vaWQocGxhbm5lZHN0bXQtPnJlbGF0aW9uT2lkcywgcmVsaWQpKQorCQkJCQlj cGxhbi0+aXNfdmFsaWQgPSBmYWxzZTsKKwkJCQlpZiAoIWNwbGFuLT5pc192YWxpZCkKKwkJCQkJ YnJlYWs7CQkvKiBvdXQgb2Ygc3RtdF9saXN0IHNjYW4gKi8KKwkJCX0KKwkJfQorCX0KIH0KIAog LyoKQEAgLTIxNzYsNiArMjMzMyw0NCBAQCBQbGFuQ2FjaGVPYmplY3RDYWxsYmFjayhEYXR1bSBh cmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQogCQkJfQogCQl9CiAJfQorCisJLyog RmluYWxseSwgaW52YWxpZGF0ZSBhbnkgc3RhbmRhbG9uZSBjYWNoZWQgcGxhbnMgKi8KKwlkbGlz dF9mb3JlYWNoKGl0ZXIsICZzdGFuZGFsb25lX3BsYW5fbGlzdCkKKwl7CisJCUNhY2hlZFBsYW4g KmNwbGFuID0gZGxpc3RfY29udGFpbmVyKENhY2hlZFBsYW4sCisJCQkJCQkJCQkJCW5vZGUsIGl0 ZXIuY3VyKTsKKworCQlBc3NlcnQoY3BsYW4tPm1hZ2ljID09IENBQ0hFRFBMQU5fTUFHSUMpOwor CisJCWlmIChjcGxhbi0+aXNfdmFsaWQpCisJCXsKKwkJCUxpc3RDZWxsICAgKmxjOworCisJCQlm b3JlYWNoKGxjLCBjcGxhbi0+c3RtdF9saXN0KQorCQkJeworCQkJCVBsYW5uZWRTdG10ICpwbGFu bmVkc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBsYyk7CisJCQkJTGlzdENlbGwgICAq bGMzOworCisJCQkJaWYgKHBsYW5uZWRzdG10LT5jb21tYW5kVHlwZSA9PSBDTURfVVRJTElUWSkK KwkJCQkJY29udGludWU7CS8qIElnbm9yZSB1dGlsaXR5IHN0YXRlbWVudHMgKi8KKwkJCQlmb3Jl YWNoKGxjMywgcGxhbm5lZHN0bXQtPmludmFsSXRlbXMpCisJCQkJeworCQkJCQlQbGFuSW52YWxJ dGVtICppdGVtID0gKFBsYW5JbnZhbEl0ZW0gKikgbGZpcnN0KGxjMyk7CisKKwkJCQkJaWYgKGl0 ZW0tPmNhY2hlSWQgIT0gY2FjaGVpZCkKKwkJCQkJCWNvbnRpbnVlOworCQkJCQlpZiAoaGFzaHZh bHVlID09IDAgfHwKKwkJCQkJCWl0ZW0tPmhhc2hWYWx1ZSA9PSBoYXNodmFsdWUpCisJCQkJCXsK KwkJCQkJCWNwbGFuLT5pc192YWxpZCA9IGZhbHNlOworCQkJCQkJYnJlYWs7CS8qIG91dCBvZiBp bnZhbEl0ZW1zIHNjYW4gKi8KKwkJCQkJfQorCQkJCX0KKwkJCQlpZiAoIWNwbGFuLT5pc192YWxp ZCkKKwkJCQkJYnJlYWs7CQkvKiBvdXQgb2Ygc3RtdF9saXN0IHNjYW4gKi8KKwkJCX0KKwkJfQor CX0KIH0KIAogLyoKQEAgLTIyMzUsNiArMjQzMCwxNyBAQCBSZXNldFBsYW5DYWNoZSh2b2lkKQog CiAJCWNleHByLT5pc192YWxpZCA9IGZhbHNlOwogCX0KKworCS8qIEZpbmFsbHksIGludmFsaWRh dGUgYW55IHN0YW5kYWxvbmUgY2FjaGVkIHBsYW5zICovCisJZGxpc3RfZm9yZWFjaChpdGVyLCAm c3RhbmRhbG9uZV9wbGFuX2xpc3QpCisJeworCQlDYWNoZWRQbGFuICpjcGxhbiA9IGRsaXN0X2Nv bnRhaW5lcihDYWNoZWRQbGFuLAorCQkJCQkJCQkJCQlub2RlLCBpdGVyLmN1cik7CisKKwkJQXNz ZXJ0KGNwbGFuLT5tYWdpYyA9PSBDQUNIRURQTEFOX01BR0lDKTsKKworCQljcGxhbi0+aXNfdmFs aWQgPSBmYWxzZTsKKwl9CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9t bWdyL3BvcnRhbG1lbS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwppbmRl eCA0YTI0NjEzNTM3Li5iZjcwZmQ0Y2U3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9t bWdyL3BvcnRhbG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMK QEAgLTI4NCw3ICsyODQsOCBAQCBQb3J0YWxEZWZpbmVRdWVyeShQb3J0YWwgcG9ydGFsLAogCQkJ CSAgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkgIENvbW1hbmRUYWcgY29tbWFuZFRhZywK IAkJCQkgIExpc3QgKnN0bXRzLAotCQkJCSAgQ2FjaGVkUGxhbiAqY3BsYW4pCisJCQkJICBDYWNo ZWRQbGFuICpjcGxhbiwKKwkJCQkgIENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpCiB7CiAJ QXNzZXJ0KFBvcnRhbElzVmFsaWQocG9ydGFsKSk7CiAJQXNzZXJ0KHBvcnRhbC0+c3RhdHVzID09 IFBPUlRBTF9ORVcpOwpAQCAtMjk5LDYgKzMwMCw3IEBAIFBvcnRhbERlZmluZVF1ZXJ5KFBvcnRh bCBwb3J0YWwsCiAJcG9ydGFsLT5jb21tYW5kVGFnID0gY29tbWFuZFRhZzsKIAlwb3J0YWwtPnN0 bXRzID0gc3RtdHM7CiAJcG9ydGFsLT5jcGxhbiA9IGNwbGFuOworCXBvcnRhbC0+cGxhbnNvdXJj ZSA9IHBsYW5zb3VyY2U7CiAJcG9ydGFsLT5zdGF0dXMgPSBQT1JUQUxfREVGSU5FRDsKIH0KIApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oIGIvc3JjL2luY2x1ZGUv Y29tbWFuZHMvZXhwbGFpbi5oCmluZGV4IDIxYzcxZTBkNTMuLmEzOTk4OWE5NTAgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAorKysgYi9zcmMvaW5jbHVkZS9jb21t YW5kcy9leHBsYWluLmgKQEAgLTEwNCw2ICsxMDQsNyBAQCBleHRlcm4gdm9pZCBFeHBsYWluT25l VXRpbGl0eShOb2RlICp1dGlsaXR5U3RtdCwgSW50b0NsYXVzZSAqaW50bywKIAkJCQkJCQkgIFBh cmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CiAKIGV4dGVy biB2b2lkIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgQ2FjaGVkUGxh biAqY3BsYW4sCisJCQkJCQkgICBDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBpbnQgcGxh bl9pbmRleCwKIAkJCQkJCSAgIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJ CQkJCQkgICBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJCQkJCSAgIFBhcmFtTGlzdEluZm8g cGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NvbW1hbmRzL3RyaWdnZXIuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaApp bmRleCA4YTVhOWZlNjQyLi5kYjIxNTYxYzhjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21t YW5kcy90cmlnZ2VyLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oCkBAIC0y NTgsNiArMjU4LDcgQEAgZXh0ZXJuIHZvaWQgRXhlY0FTVHJ1bmNhdGVUcmlnZ2VycyhFU3RhdGUg KmVzdGF0ZSwKIGV4dGVybiB2b2lkIEFmdGVyVHJpZ2dlckJlZ2luWGFjdCh2b2lkKTsKIGV4dGVy biB2b2lkIEFmdGVyVHJpZ2dlckJlZ2luUXVlcnkodm9pZCk7CiBleHRlcm4gdm9pZCBBZnRlclRy aWdnZXJFbmRRdWVyeShFU3RhdGUgKmVzdGF0ZSk7CitleHRlcm4gdm9pZCBBZnRlclRyaWdnZXJB Ym9ydFF1ZXJ5KHZvaWQpOwogZXh0ZXJuIHZvaWQgQWZ0ZXJUcmlnZ2VyRmlyZURlZmVycmVkKHZv aWQpOwogZXh0ZXJuIHZvaWQgQWZ0ZXJUcmlnZ2VyRW5kWGFjdChib29sIGlzQ29tbWl0KTsKIGV4 dGVybiB2b2lkIEFmdGVyVHJpZ2dlckJlZ2luU3ViWGFjdCh2b2lkKTsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVj ZGVzYy5oCmluZGV4IDBlNzI0NTQzNWQuLmY2Y2I2NDc5YzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rl c2MuaApAQCAtMzYsNiArMzYsNyBAQCB0eXBlZGVmIHN0cnVjdCBRdWVyeURlc2MKIAlDbWRUeXBl CQlvcGVyYXRpb247CQkvKiBDTURfU0VMRUNULCBDTURfVVBEQVRFLCBldGMuICovCiAJUGxhbm5l ZFN0bXQgKnBsYW5uZWRzdG10OwkvKiBwbGFubmVyJ3Mgb3V0cHV0IChjb3VsZCBiZSB1dGlsaXR5 LCB0b28pICovCiAJQ2FjaGVkUGxhbiAqY3BsYW47CQkJLyogQ2FjaGVkUGxhbiB0aGF0IHN1cHBs aWVzIHRoZSBwbGFubmVkc3RtdCAqLworCWJvb2wJCWNwbGFuX3JlbGVhc2U7CS8qIFNob3VsZCBG cmVlUXVlcnlEZXNjKCkgcmVsZWFzZSBjcGxhbj8gKi8KIAljb25zdCBjaGFyICpzb3VyY2VUZXh0 OwkJLyogc291cmNlIHRleHQgb2YgdGhlIHF1ZXJ5ICovCiAJU25hcHNob3QJc25hcHNob3Q7CQkv KiBzbmFwc2hvdCB0byB1c2UgZm9yIHF1ZXJ5ICovCiAJU25hcHNob3QJY3Jvc3NjaGVja19zbmFw c2hvdDsJLyogY3Jvc3NjaGVjayBmb3IgUkkgdXBkYXRlL2RlbGV0ZSAqLwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4 ZWN1dG9yLmgKaW5kZXggNjljM2ViZmYwMC4uNWJjMGVkYjVhMCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVj dXRvci5oCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSAibm9kZXMvbG9ja29wdGlvbnMuaCIK ICNpbmNsdWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMu aCIKKyNpbmNsdWRlICJ1dGlscy9wbGFuY2FjaGUuaCIKIAogCiAvKgpAQCAtMTk4LDYgKzE5OSw4 IEBAIEV4ZWNHZXRKdW5rQXR0cmlidXRlKFR1cGxlVGFibGVTbG90ICpzbG90LCBBdHRyTnVtYmVy IGF0dG5vLCBib29sICppc051bGwpCiAgKiBwcm90b3R5cGVzIGZyb20gZnVuY3Rpb25zIGluIGV4 ZWNNYWluLmMKICAqLwogZXh0ZXJuIHZvaWQgRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5 RGVzYywgaW50IGVmbGFncyk7CitleHRlcm4gdm9pZCBFeGVjdXRvclN0YXJ0RXh0KFF1ZXJ5RGVz YyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzLAorCQkJCQkJCSBDYWNoZWRQbGFuU291cmNlICpwbGFu c291cmNlLCBpbnQgcXVlcnlfaW5kZXgpOwogZXh0ZXJuIHZvaWQgc3RhbmRhcmRfRXhlY3V0b3JT dGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CiBleHRlcm4gdm9pZCBFeGVj dXRvclJ1bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKIAkJCQkJCVNjYW5EaXJlY3Rpb24gZGlyZWN0 aW9uLCB1aW50NjQgY291bnQsIGJvb2wgZXhlY3V0ZV9vbmNlKTsKQEAgLTI2MSw2ICsyNjQsMTkg QEAgZXh0ZXJuIHZvaWQgRXhlY0VuZE5vZGUoUGxhblN0YXRlICpub2RlKTsKIGV4dGVybiB2b2lk IEV4ZWNTaHV0ZG93bk5vZGUoUGxhblN0YXRlICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNTZXRU dXBsZUJvdW5kKGludDY0IHR1cGxlc19uZWVkZWQsIFBsYW5TdGF0ZSAqY2hpbGRfbm9kZSk7CiAK Ky8qCisgKiBJcyB0aGUgQ2FjaGVkUGxhbiBpbiBlc19jYWNoZWRwbGFuIHN0aWxsIHZhbGlkPwor ICoKKyAqIENhbGxlZCBmcm9tIEluaXRQbGFuKCkgYmVjYXVzZSBpbnZhbGlkYXRpb24gbWVzc2Fn ZXMgdGhhdCBhZmZlY3QgdGhlIHBsYW4KKyAqIG1pZ2h0IGJlIHJlY2VpdmVkIGFmdGVyIGxvY2tz IGhhdmUgYmVlbiB0YWtlbiBvbiBydW50aW1lLXBydW5hYmxlIHJlbGF0aW9ucy4KKyAqIFRoZSBj YWxsZXIgc2hvdWxkIHRha2UgYXBwcm9wcmlhdGUgYWN0aW9uIGlmIHRoZSBwbGFuIGhhcyBiZWNv bWUgaW52YWxpZC4KKyAqLworc3RhdGljIGlubGluZSBib29sCitFeGVjUGxhblN0aWxsVmFsaWQo RVN0YXRlICplc3RhdGUpCit7CisJcmV0dXJuIGVzdGF0ZS0+ZXNfY2FjaGVkcGxhbiA9PSBOVUxM ID8gdHJ1ZSA6CisJCUNhY2hlZFBsYW5WYWxpZChlc3RhdGUtPmVzX2NhY2hlZHBsYW4pOworfQog CiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAgKgkJRXhlY1Byb2NOb2RlCkBAIC01ODksNiArNjA1LDcgQEAgZXh0ZXJu IHZvaWQgRXhlY0NyZWF0ZVNjYW5TbG90RnJvbU91dGVyUGxhbihFU3RhdGUgKmVzdGF0ZSwKIGV4 dGVybiBib29sIEV4ZWNSZWxhdGlvbklzVGFyZ2V0UmVsYXRpb24oRVN0YXRlICplc3RhdGUsIElu ZGV4IHNjYW5yZWxpZCk7CiAKIGV4dGVybiBSZWxhdGlvbiBFeGVjT3BlblNjYW5SZWxhdGlvbihF U3RhdGUgKmVzdGF0ZSwgSW5kZXggc2NhbnJlbGlkLCBpbnQgZWZsYWdzKTsKK2V4dGVybiBSZWxh dGlvbiBFeGVjT3BlblNjYW5JbmRleFJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBPaWQgaW5kZXhp ZCwgaW50IGxvY2ttb2RlKTsKIAogZXh0ZXJuIHZvaWQgRXhlY0luaXRSYW5nZVRhYmxlKEVTdGF0 ZSAqZXN0YXRlLCBMaXN0ICpyYW5nZVRhYmxlLCBMaXN0ICpwZXJtSW5mb3MpOwogZXh0ZXJuIHZv aWQgRXhlY0Nsb3NlUmFuZ2VUYWJsZVJlbGF0aW9ucyhFU3RhdGUgKmVzdGF0ZSk7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oCmluZGV4IDFlZDkyNWI5OWIuLjNjYTk2YTg1YjYgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oCkBAIC02ODYsNiArNjg2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRVN0YXRlCiAJaW50CQkJZXNf dG9wX2VmbGFnczsJLyogZWZsYWdzIHBhc3NlZCB0byBFeGVjdXRvclN0YXJ0ICovCiAJaW50CQkJ ZXNfaW5zdHJ1bWVudDsJLyogT1Igb2YgSW5zdHJ1bWVudE9wdGlvbiBmbGFncyAqLwogCWJvb2wJ CWVzX2ZpbmlzaGVkOwkvKiB0cnVlIHdoZW4gRXhlY3V0b3JGaW5pc2ggaXMgZG9uZSAqLworCWJv b2wJCWVzX2Fib3J0ZWQ7CQkvKiB0cnVlIHdoZW4gZXhlY3V0aW9uIHdhcyBhYm9ydGVkICovCiAK IAlMaXN0CSAgICplc19leHByY29udGV4dHM7CS8qIExpc3Qgb2YgRXhwckNvbnRleHRzIHdpdGhp biBFU3RhdGUgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmgg Yi9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaAppbmRleCAwYjVlZTAwN2NhLi4xNTRmNjhm NjcxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaAorKysgYi9zcmMv aW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaApAQCAtMTgsNiArMTgsNyBAQAogI2luY2x1ZGUgImFj Y2Vzcy90dXBkZXNjLmgiCiAjaW5jbHVkZSAibGliL2lsaXN0LmgiCiAjaW5jbHVkZSAibm9kZXMv cGFyYW1zLmgiCisjaW5jbHVkZSAibm9kZXMvcGFyc2Vub2Rlcy5oIgogI2luY2x1ZGUgInRjb3Av Y21kdGFnLmgiCiAjaW5jbHVkZSAidXRpbHMvcXVlcnllbnZpcm9ubWVudC5oIgogI2luY2x1ZGUg InV0aWxzL3Jlc293bmVyLmgiCkBAIC0xNTIsNiArMTUzLDggQEAgdHlwZWRlZiBzdHJ1Y3QgQ2Fj aGVkUGxhbgogCWJvb2wJCWlzX2dlbmVyaWM7CQkvKiBpcyBpdCBhIHJldXNhYmxlIGdlbmVyaWMg cGxhbj8gKi8KIAlib29sCQlpc19zYXZlZDsJCS8qIGlzIENhY2hlZFBsYW4gaW4gYSBsb25nLWxp dmVkIGNvbnRleHQ/ICovCiAJYm9vbAkJaXNfdmFsaWQ7CQkvKiBpcyB0aGUgc3RtdF9saXN0IGN1 cnJlbnRseSB2YWxpZD8gKi8KKwlib29sCQlpc19zdGFuZGFsb25lOwkvKiBpcyBpdCBub3QgYXNz b2NpYXRlZCB3aXRoIGEKKwkJCQkJCQkJICogQ2FjaGVkUGxhblNvdXJjZT8gKi8KIAlPaWQJCQlw bGFuUm9sZUlkOwkJLyogUm9sZSBJRCB0aGUgcGxhbiB3YXMgY3JlYXRlZCBmb3IgKi8KIAlib29s CQlkZXBlbmRzT25Sb2xlOwkvKiBpcyBwbGFuIHNwZWNpZmljIHRvIHRoYXQgcm9sZT8gKi8KIAlU cmFuc2FjdGlvbklkIHNhdmVkX3htaW47CS8qIGlmIHZhbGlkLCByZXBsYW4gd2hlbiBUcmFuc2Fj dGlvblhtaW4KQEAgLTE1OSw2ICsxNjIsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgQ2FjaGVkUGxhbgog CWludAkJCWdlbmVyYXRpb247CQkvKiBwYXJlbnQncyBnZW5lcmF0aW9uIG51bWJlciBmb3IgdGhp cyBwbGFuICovCiAJaW50CQkJcmVmY291bnQ7CQkvKiBjb3VudCBvZiBsaXZlIHJlZmVyZW5jZXMg dG8gdGhpcyBzdHJ1Y3QgKi8KIAlNZW1vcnlDb250ZXh0IGNvbnRleHQ7CQkvKiBjb250ZXh0IGNv bnRhaW5pbmcgdGhpcyBDYWNoZWRQbGFuICovCisKKwkvKgorCSAqIElmIHRoZSBwbGFuIGlzIG5v dCBhc3NvY2lhdGVkIHdpdGggYSBDYWNoZWRQbGFuU291cmNlLCBpdCBpcyBzYXZlZCBpbgorCSAq IGEgc2VwYXJhdGUgZ2xvYmFsIGxpc3QuCisJICovCisJZGxpc3Rfbm9kZQlub2RlOwkJCS8qIGxp c3QgbGluaywgaWYgaXNfc3RhbmRhbG9uZSAqLwogfSBDYWNoZWRQbGFuOwogCiAvKgpAQCAtMjI0 LDYgKzIzMywxMCBAQCBleHRlcm4gQ2FjaGVkUGxhbiAqR2V0Q2FjaGVkUGxhbihDYWNoZWRQbGFu U291cmNlICpwbGFuc291cmNlLAogCQkJCQkJCQkgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywK IAkJCQkJCQkJIFJlc291cmNlT3duZXIgb3duZXIsCiAJCQkJCQkJCSBRdWVyeUVudmlyb25tZW50 ICpxdWVyeUVudik7CitleHRlcm4gQ2FjaGVkUGxhbiAqR2V0U2luZ2xlQ2FjaGVkUGxhbihDYWNo ZWRQbGFuU291cmNlICpwbGFuc291cmNlLAorCQkJCQkJCQkJICAgaW50IHF1ZXJ5X2luZGV4LAor CQkJCQkJCQkJICAgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOworCiBleHRlcm4gdm9pZCBS ZWxlYXNlQ2FjaGVkUGxhbihDYWNoZWRQbGFuICpwbGFuLCBSZXNvdXJjZU93bmVyIG93bmVyKTsK IAogZXh0ZXJuIGJvb2wgQ2FjaGVkUGxhbkFsbG93c1NpbXBsZVZhbGlkaXR5Q2hlY2soQ2FjaGVk UGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKQEAgLTI0NSw0ICsyNTgsMTcgQEAgQ2FjaGVkUGxhblJl cXVpcmVzTG9ja2luZyhDYWNoZWRQbGFuICpjcGxhbikKIAlyZXR1cm4gY3BsYW4tPmlzX2dlbmVy aWM7CiB9CiAKKy8qCisgKiBDYWNoZWRQbGFuVmFsaWQKKyAqICAgICAgUmV0dXJucyB3aGV0aGVy IGEgY2FjaGVkIGdlbmVyaWMgcGxhbiBpcyBzdGlsbCB2YWxpZC4KKyAqCisgKiBJbnZva2VkIGJ5 IHRoZSBleGVjdXRvciB0byBjaGVjayBpZiB0aGUgcGxhbiBoYXMgbm90IGJlZW4gaW52YWxpZGF0 ZWQgYWZ0ZXIKKyAqIHRha2luZyBsb2NrcyBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRo ZSBwbGFuLgorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0NhY2hlZFBsYW5WYWxpZChDYWNoZWRQ bGFuICpjcGxhbikKK3sKKwlyZXR1cm4gY3BsYW4tPmlzX3ZhbGlkOworfQorCiAjZW5kaWYJCQkJ CQkJLyogUExBTkNBQ0hFX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRh bC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKaW5kZXggMjlmNDk4MjlmMi4uNThjMzgy OGQyYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKKysrIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvcG9ydGFsLmgKQEAgLTEzOCw2ICsxMzgsNyBAQCB0eXBlZGVmIHN0cnVjdCBQ b3J0YWxEYXRhCiAJUXVlcnlDb21wbGV0aW9uIHFjOwkJCS8qIGNvbW1hbmQgY29tcGxldGlvbiBk YXRhIGZvciBleGVjdXRlZCBxdWVyeSAqLwogCUxpc3QJICAgKnN0bXRzOwkJCS8qIGxpc3Qgb2Yg UGxhbm5lZFN0bXRzICovCiAJQ2FjaGVkUGxhbiAqY3BsYW47CQkJLyogQ2FjaGVkUGxhbiwgaWYg c3RtdHMgYXJlIGZyb20gb25lICovCisJQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZTsJLyog Q2FjaGVkUGxhblNvdXJjZSwgZm9yIGNwbGFuICovCiAKIAlQYXJhbUxpc3RJbmZvIHBvcnRhbFBh cmFtczsgLyogcGFyYW1zIHRvIHBhc3MgdG8gcXVlcnkgKi8KIAlRdWVyeUVudmlyb25tZW50ICpx dWVyeUVudjsgLyogZW52aXJvbm1lbnQgZm9yIHF1ZXJ5ICovCkBAIC0yNDEsNyArMjQyLDggQEAg ZXh0ZXJuIHZvaWQgUG9ydGFsRGVmaW5lUXVlcnkoUG9ydGFsIHBvcnRhbCwKIAkJCQkJCQkgIGNv bnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJCQkJICBDb21tYW5kVGFnIGNvbW1hbmRUYWcsCiAJ CQkJCQkJICBMaXN0ICpzdG10cywKLQkJCQkJCQkgIENhY2hlZFBsYW4gKmNwbGFuKTsKKwkJCQkJ CQkgIENhY2hlZFBsYW4gKmNwbGFuLAorCQkJCQkJCSAgQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNv dXJjZSk7CiBleHRlcm4gUGxhbm5lZFN0bXQgKlBvcnRhbEdldFByaW1hcnlTdG10KFBvcnRhbCBw b3J0YWwpOwogZXh0ZXJuIHZvaWQgUG9ydGFsQ3JlYXRlSG9sZFN0b3JlKFBvcnRhbCBwb3J0YWwp OwogZXh0ZXJuIHZvaWQgUG9ydGFsSGFzaFRhYmxlRGVsZXRlQWxsKHZvaWQpOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZpbGUgYi9zcmMvdGVzdC9t b2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZQppbmRleCA3MGYyNGU4NDZkLi4zZWViMDk3 ZmRlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmls ZQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZQpAQCAtOCw3 ICs4LDggQEAgT0JKUyA9IFwKIAlkZWxheV9leGVjdXRpb24ubwogCiBJU09MQVRJT04gPSBwYXJ0 aXRpb24tYWRkaXRpb24gXAotCSAgICBwYXJ0aXRpb24tcmVtb3ZhbC0xCisJICAgIHBhcnRpdGlv bi1yZW1vdmFsLTEgXAorCQljYWNoZWQtcGxhbi1pbnZhbAogCiBpZmRlZiBVU0VfUEdYUwogUEdf Q09ORklHID0gcGdfY29uZmlnCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4 ZWN1dGlvbi9kZWxheV9leGVjdXRpb24uYyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0 aW9uL2RlbGF5X2V4ZWN1dGlvbi5jCmluZGV4IDE1NWM4YThkNTUuLjMwNGNhNzdmN2IgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5j CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5j CkBAIC0xLDE0ICsxLDE4IEBACiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCiAgKiBkZWxheV9leGVj dXRpb24uYwotICoJCVRlc3QgbW9kdWxlIHRvIGFsbG93IGRlbGF5IGJldHdlZW4gcGFyc2luZyBh bmQgZXhlY3V0aW9uIG9mIGEgcXVlcnkuCisgKgkJVGVzdCBtb2R1bGUgdG8gaW50cm9kdWNlIGRl bGF5IGF0IHZhcmlvdXMgcG9pbnRzIGR1cmluZyBleGVjdXRpb24gb2YgYQorICoJCXF1ZXJ5IHRv IHRlc3QgdGhhdCBleGVjdXRpb24gcHJvY2VlZHMgc2FmZWx5IGluIGxpZ2h0IG9mIGNvbmN1cnJl bnQKKyAqCQljaGFuZ2VzLgogICoKICAqIFRoZSBkZWxheSBpcyBpbXBsZW1lbnRlZCBieSB0YWtp bmcgYW5kIGltbWVkaWF0ZWx5IHJlbGVhc2luZyBhIHNwZWNpZmllZAogICogYWR2aXNvcnkgbG9j ay4gIElmIGFub3RoZXIgcHJvY2VzcyBoYXMgcHJldmlvdXNseSB0YWtlbiB0aGF0IGxvY2ssIHRo ZQogICogY3VycmVudCBwcm9jZXNzIHdpbGwgYmUgYmxvY2tlZCB1bnRpbCB0aGUgbG9jayBpcyBy ZWxlYXNlZDsgb3RoZXJ3aXNlLAogICogdGhlcmUncyBubyBlZmZlY3QuICBUaGlzIGFsbG93cyBh biBpc29sYXRpb250ZXN0ZXIgc2NyaXB0IHRvIHJlbGlhYmx5Ci0gKiB0ZXN0IGJlaGF2aW9ycyB3 aGVyZSBzb21lIHNwZWNpZmllZCBhY3Rpb24gaGFwcGVucyBpbiBhbm90aGVyIGJhY2tlbmQKLSAq IGJldHdlZW4gcGFyc2luZyBhbmQgZXhlY3V0aW9uIG9mIGFueSBkZXNpcmVkIHF1ZXJ5LgorICog dGVzdCBiZWhhdmlvcnMgd2hlcmUgc29tZSBzcGVjaWZpZWQgYWN0aW9uIGhhcHBlbnMgaW4gYW5v dGhlciBiYWNrZW5kIGluCisgKiBhIGNvdXBsZSBvZiBjYXNlczogMSkgYmV0d2VlbiBwYXJzaW5n IGFuZCBleGVjdXRpb24gb2YgYW55IGRlc2lyZWQgcXVlcnkKKyAqIHdoZW4gdXNpbmcgdGhlIHBs YW5uZXJfaG9vaywgMikgYmV0d2VlbiBSZXZhbGlkYXRlQ2FjaGVkUXVlcnkoKSBhbmQKKyAqIEV4 ZWN1dG9yU3RhcnQoKSB3aGVuIHVzaW5nIHRoZSBFeGVjdXRvclN0YXJ0X2hvb2suCiAgKgogICog Q29weXJpZ2h0IChjKSAyMDIwLTIwMjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdy b3VwCiAgKgpAQCAtMjIsNiArMjYsNyBAQAogCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAKKyNpbmNs dWRlICJleGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgIm9wdGltaXplci9wbGFubmVyLmgi CiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKQEAg LTMyLDkgKzM3LDExIEBAIFBHX01PRFVMRV9NQUdJQzsKIAogLyogR1VDOiBhZHZpc29yeSBsb2Nr IElEIHRvIHVzZS4gIFplcm8gZGlzYWJsZXMgdGhlIGZlYXR1cmUuICovCiBzdGF0aWMgaW50CXBv c3RfcGxhbm5pbmdfbG9ja19pZCA9IDA7CitzdGF0aWMgaW50CWV4ZWN1dG9yX3N0YXJ0X2xvY2tf aWQgPSAwOwogCi0vKiBTYXZlIHByZXZpb3VzIHBsYW5uZXIgaG9vayB1c2VyIHRvIGJlIGEgZ29v ZCBjaXRpemVuICovCisvKiBTYXZlIHByZXZpb3VzIGhvb2sgdXNlcnMgdG8gYmUgYSBnb29kIGNp dGl6ZW4gKi8KIHN0YXRpYyBwbGFubmVyX2hvb2tfdHlwZSBwcmV2X3BsYW5uZXJfaG9vayA9IE5V TEw7CitzdGF0aWMgRXhlY3V0b3JTdGFydF9ob29rX3R5cGUgcHJldl9FeGVjdXRvclN0YXJ0X2hv b2sgPSBOVUxMOwogCiAKIC8qIHBsYW5uZXJfaG9vayBmdW5jdGlvbiB0byBwcm92aWRlIHRoZSBk ZXNpcmVkIGRlbGF5ICovCkBAIC03MCwxMSArNzcsNDEgQEAgZGVsYXlfZXhlY3V0aW9uX3BsYW5u ZXIoUXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcsCiAJcmV0dXJuIHJlc3Vs dDsKIH0KIAorLyogRXhlY3V0b3JTdGFydF9ob29rIGZ1bmN0aW9uIHRvIHByb3ZpZGUgdGhlIGRl c2lyZWQgZGVsYXkgKi8KK3N0YXRpYyB2b2lkCitkZWxheV9leGVjdXRpb25fRXhlY3V0b3JTdGFy dChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKK3sKKwkvKiBJZiBlbmFibGVkLCBk ZWxheSBieSB0YWtpbmcgYW5kIHJlbGVhc2luZyB0aGUgc3BlY2lmaWVkIGxvY2sgKi8KKwlpZiAo ZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCAhPSAwKQorCXsKKwkJRGlyZWN0RnVuY3Rpb25DYWxsMShw Z19hZHZpc29yeV9sb2NrX2ludDgsCisJCQkJCQkJSW50NjRHZXREYXR1bSgoaW50NjQpIGV4ZWN1 dG9yX3N0YXJ0X2xvY2tfaWQpKTsKKwkJRGlyZWN0RnVuY3Rpb25DYWxsMShwZ19hZHZpc29yeV91 bmxvY2tfaW50OCwKKwkJCQkJCQlJbnQ2NEdldERhdHVtKChpbnQ2NCkgZXhlY3V0b3Jfc3RhcnRf bG9ja19pZCkpOworCisJCS8qCisJCSAqIEVuc3VyZSB0aGF0IHdlIG5vdGljZSBhbnkgcGVuZGlu ZyBpbnZhbGlkYXRpb25zLCBzaW5jZSB0aGUgYWR2aXNvcnkKKwkJICogbG9jayBmdW5jdGlvbnMg ZG9uJ3QgZG8gdGhpcy4KKwkJICovCisJCUFjY2VwdEludmFsaWRhdGlvbk1lc3NhZ2VzKCk7CisJ fQorCisJLyogTm93IHN0YXJ0IHRoZSBleGVjdXRvciwgcG9zc2libHkgdmlhIGEgcHJldmlvdXMg aG9vayB1c2VyICovCisJaWYgKHByZXZfRXhlY3V0b3JTdGFydF9ob29rKQorCQlwcmV2X0V4ZWN1 dG9yU3RhcnRfaG9vayhxdWVyeURlc2MsIGVmbGFncyk7CisJZWxzZQorCQlzdGFuZGFyZF9FeGVj dXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKworCWlmIChleGVjdXRvcl9zdGFydF9sb2Nr X2lkICE9IDApCisJCWVsb2coTk9USUNFLCAiRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNo ZWRQbGFuIGlzICVzIiwKKwkJCSBDYWNoZWRQbGFuVmFsaWQocXVlcnlEZXNjLT5jcGxhbikgPyAi dmFsaWQiIDogIm5vdCB2YWxpZCIpOworfQorCiAvKiBNb2R1bGUgbG9hZCBmdW5jdGlvbiAqLwog dm9pZAogX1BHX2luaXQodm9pZCkKIHsKLQkvKiBTZXQgdXAgdGhlIEdVQyB0byBjb250cm9sIHdo aWNoIGxvY2sgaXMgdXNlZCAqLworCS8qIFNldCB1cCBHVUNzIHRvIGNvbnRyb2wgd2hpY2ggbG9j ayBpcyB1c2VkICovCiAJRGVmaW5lQ3VzdG9tSW50VmFyaWFibGUoImRlbGF5X2V4ZWN1dGlvbi5w b3N0X3BsYW5uaW5nX2xvY2tfaWQiLAogCQkJCQkJCSJTZXRzIHRoZSBhZHZpc29yeSBsb2NrIElE IHRvIGJlIGxvY2tlZC91bmxvY2tlZCBhZnRlciBwbGFubmluZy4iLAogCQkJCQkJCSJaZXJvIGRp c2FibGVzIHRoZSBkZWxheS4iLApAQCAtODYsMTAgKzEyMywyMiBAQCBfUEdfaW5pdCh2b2lkKQog CQkJCQkJCU5VTEwsCiAJCQkJCQkJTlVMTCwKIAkJCQkJCQlOVUxMKTsKLQorCURlZmluZUN1c3Rv bUludFZhcmlhYmxlKCJkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCIsCisJ CQkJCQkJIlNldHMgdGhlIGFkdmlzb3J5IGxvY2sgSUQgdG8gYmUgbG9ja2VkL3VubG9ja2VkIGJl Zm9yZSBzdGFydGluZyBleGVjdXRpb24uIiwKKwkJCQkJCQkiWmVybyBkaXNhYmxlcyB0aGUgZGVs YXkuIiwKKwkJCQkJCQkmZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCwKKwkJCQkJCQkwLAorCQkJCQkJ CTAsIElOVF9NQVgsCisJCQkJCQkJUEdDX1VTRVJTRVQsCisJCQkJCQkJMCwKKwkJCQkJCQlOVUxM LAorCQkJCQkJCU5VTEwsCisJCQkJCQkJTlVMTCk7CiAJTWFya0dVQ1ByZWZpeFJlc2VydmVkKCJk ZWxheV9leGVjdXRpb24iKTsKIAotCS8qIEluc3RhbGwgb3VyIGhvb2sgKi8KKwkvKiBJbnN0YWxs IG91ciBob29rcy4gKi8KIAlwcmV2X3BsYW5uZXJfaG9vayA9IHBsYW5uZXJfaG9vazsKIAlwbGFu bmVyX2hvb2sgPSBkZWxheV9leGVjdXRpb25fcGxhbm5lcjsKKwlwcmV2X0V4ZWN1dG9yU3RhcnRf aG9vayA9IEV4ZWN1dG9yU3RhcnRfaG9vazsKKwlFeGVjdXRvclN0YXJ0X2hvb2sgPSBkZWxheV9l eGVjdXRpb25fRXhlY3V0b3JTdGFydDsKIH0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMv ZGVsYXlfZXhlY3V0aW9uL2V4cGVjdGVkL2NhY2hlZC1wbGFuLWludmFsLm91dCBiL3NyYy90ZXN0 L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2V4cGVjdGVkL2NhY2hlZC1wbGFuLWludmFsLm91dApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5lOGVmYjZkOWQ5Ci0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZXhwZWN0ZWQvY2Fj aGVkLXBsYW4taW52YWwub3V0CkBAIC0wLDAgKzEsMTc1IEBACitQYXJzZWQgdGVzdCBzcGVjIHdp dGggMiBzZXNzaW9ucworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFwcmVwIHMybG9jayBzMWV4 ZWMgczJkcm9waSBzMnVubG9jaworc3RlcCBzMXByZXA6IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBm b3JjZV9nZW5lcmljX3BsYW47CisJCSAgUFJFUEFSRSBxIEFTIFNFTEVDVCAqIEZST00gZm9vdiBX SEVSRSBhID0gJDEgRk9SIFVQREFURTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUg cSAoMSk7CitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTG9ja1Jv d3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIC0+ICBBcHBlbmQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgU3VicGxhbnMgUmVt b3ZlZDogMiAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2Nh biBvbiBmb28xMl8xIGZvb18xICAgCisgICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDogKGEgPSAk MSkgICAgICAgICAgICAKKyAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGZv bzEyXzFfYQorICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9ICQxKSAgICAgICAg CisoNyByb3dzKQorCitzdGVwIHMybG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUp OworcGdfYWR2aXNvcnlfbG9jaworLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgIAor KDEgcm93KQorCitzdGVwIHMxZXhlYzogTE9BRCAnZGVsYXlfZXhlY3V0aW9uJzsKKwkJICBTRVQg ZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAxMjM0NTsKKwkJICBFWFBM QUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcSAoMSk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczJkcm9w aTogRFJPUCBJTkRFWCBmb28xMl8xX2E7CitzdGVwIHMydW5sb2NrOiBTRUxFQ1QgcGdfYWR2aXNv cnlfdW5sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X3VubG9jaworLS0tLS0tLS0tLS0tLS0tLS0t Cit0ICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMWV4ZWM6IDwuLi4gY29tcGxl dGVkPgorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBp cyBub3QgdmFsaWQKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hl ZFBsYW4gaXMgdmFsaWQKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xvY2tSb3dzICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKyAgLT4gIEFwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAK KyAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDogMiAgICAgICAgICAKKyAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIGZvbzEyXzEgZm9vXzEKKyAgICAgICAgICAgICAgRmlsdGVyOiAoYSA9ICQxKSAgICAg ICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxcHJlcDIgczJsb2NrIHMx ZXhlYzIgczJkcm9waSBzMnVubG9jaworc3RlcCBzMXByZXAyOiBTRVQgcGxhbl9jYWNoZV9tb2Rl ID0gZm9yY2VfZ2VuZXJpY19wbGFuOworCQkgIFBSRVBBUkUgcTIgQVMgU0VMRUNUICogRlJPTSBm b292IFdIRVJFIGEgPSBvbmUoKSBvciBhID0gdHdvKCk7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZG KSBFWEVDVVRFIHEyOworczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2Fj aGVkUGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCitBcHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAg LT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gZm9vMTJfMSBmb29fMSAgICAgICAgICAgCisgICAgICAg IFJlY2hlY2sgQ29uZDogKChhID0gb25lKCkpIE9SIChhID0gdHdvKCkpKQorICAgICAgICAtPiAg Qml0bWFwT3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgLT4g IEJpdG1hcCBJbmRleCBTY2FuIG9uIGZvbzEyXzFfYSAgCisgICAgICAgICAgICAgICAgICAgIElu ZGV4IENvbmQ6IChhID0gb25lKCkpICAgICAgIAorICAgICAgICAgICAgICAtPiAgQml0bWFwIElu ZGV4IFNjYW4gb24gZm9vMTJfMV9hICAKKyAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDog KGEgPSB0d28oKSkgICAgICAgCisgIC0+ICBTZXEgU2NhbiBvbiBmb28xMl8yIGZvb18yICAgICAg ICAgICAgICAgICAgIAorICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygp KSkgICAgICAKKygxMSByb3dzKQorCitzdGVwIHMybG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X2xv Y2soMTIzNDUpOworcGdfYWR2aXNvcnlfbG9jaworLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzI6IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7 CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7 CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEyOyA8d2FpdGluZyAuLi4+CitzdGVw IHMyZHJvcGk6IERST1AgSU5ERVggZm9vMTJfMV9hOworc3RlcCBzMnVubG9jazogU0VMRUNUIHBn X2Fkdmlzb3J5X3VubG9jaygxMjM0NSk7CitwZ19hZHZpc29yeV91bmxvY2sKKy0tLS0tLS0tLS0t LS0tLS0tLQordCAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjMjogPC4u LiBjb21wbGV0ZWQ+CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNo ZWRQbGFuIGlzIG5vdCB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQo KTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CitBcHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBTdWJwbGFu cyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAgICAgICAKKyAgLT4gIFNlcSBTY2FuIG9uIGZv bzEyXzEgZm9vXzEgICAgICAgICAgICAgCisgICAgICAgIEZpbHRlcjogKChhID0gb25lKCkpIE9S IChhID0gdHdvKCkpKQorICAtPiAgU2VxIFNjYW4gb24gZm9vMTJfMiBmb29fMiAgICAgICAgICAg ICAKKyAgICAgICAgRmlsdGVyOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0d28oKSkpCisoNiByb3dz KQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMXByZXAzIHMybG9jayBzMWV4ZWMzIHMyZHJv cGkgczJ1bmxvY2sKK3N0ZXAgczFwcmVwMzogU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dl bmVyaWNfcGxhbjsKKwkJICBQUkVQQVJFIHEzIEFTIFVQREFURSBmb292IFNFVCBhID0gYSBXSEVS RSBhID0gb25lKCkgb3IgYSA9IHR3bygpOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VU RSBxMzsKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4g aXMgdmFsaWQKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBs YW4gaXMgdmFsaWQKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKyAgU3VicGxhbnMgUmVtb3ZlZDogMSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCisgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGZvbzEyXzEgZm9vXzEg ICAgICAgICAgICAgICAgIAorICAgICAgICBSZWNoZWNrIENvbmQ6ICgoYSA9IG9uZSgpKSBPUiAo YSA9IHR3bygpKSkgICAgICAKKyAgICAgICAgLT4gIEJpdG1hcE9yICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBv biBmb28xMl8xX2EgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9 IG9uZSgpKSAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2Fu IG9uIGZvbzEyXzFfYSAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChh ID0gdHdvKCkpICAgICAgICAgICAgIAorICAtPiAgU2VxIFNjYW4gb24gZm9vMTJfMiBmb29fMiAg ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgRmlsdGVyOiAoKGEgPSBvbmUoKSkgT1Ig KGEgPSB0d28oKSkpICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorVXBkYXRlIG9uIGZvbyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgVXBkYXRlIG9uIGZvbzEyXzEgZm9vXzEgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIFVwZGF0ZSBvbiBmb28xMl8yIGZvb18yICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBVcGRhdGUgb24gZm9vMyBmb28gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgLT4gIEFwcGVuZCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIFN1YnBsYW5zIFJlbW92ZWQ6 IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAtPiAgQml0bWFwIEhlYXAg U2NhbiBvbiBmb28xMl8xIGZvb18xICAgICAgICAgICAKKyAgICAgICAgICAgICAgUmVjaGVjayBD b25kOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0d28oKSkpCisgICAgICAgICAgICAgIC0+ICBCaXRt YXBPciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAt PiAgQml0bWFwIEluZGV4IFNjYW4gb24gZm9vMTJfMV9hICAKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgSW5kZXggQ29uZDogKGEgPSBvbmUoKSkgICAgICAgCisgICAgICAgICAgICAgICAgICAg IC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBmb28xMl8xX2EgIAorICAgICAgICAgICAgICAgICAg ICAgICAgICBJbmRleCBDb25kOiAoYSA9IHR3bygpKSAgICAgICAKKyAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIGZvbzEyXzIgZm9vXzIgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIEZp bHRlcjogKChhID0gb25lKCkpIE9SIChhID0gdHdvKCkpKSAgICAgIAorKDI3IHJvd3MpCisKK3N0 ZXAgczJsb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfbG9jaygxMjM0NSk7CitwZ19hZHZpc29yeV9s b2NrCistLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAg czFleGVjMzogTE9BRCAnZGVsYXlfZXhlY3V0aW9uJzsKKwkJICBTRVQgZGVsYXlfZXhlY3V0aW9u LmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAxMjM0NTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYp IEVYRUNVVEUgcTM7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczJkcm9waTogRFJPUCBJTkRFWCBmb28x Ml8xX2E7CitzdGVwIHMydW5sb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDEyMzQ1KTsK K3BnX2Fkdmlzb3J5X3VubG9jaworLS0tLS0tLS0tLS0tLS0tLS0tCit0ICAgICAgICAgICAgICAg ICAKKygxIHJvdykKKworc3RlcCBzMWV4ZWMzOiA8Li4uIGNvbXBsZXRlZD4KK3MxOiBOT1RJQ0U6 ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgbm90IHZhbGlkCitzMTog Tk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitz MTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIG5vdCB2 YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBp cyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitB cHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBTdWJw bGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgLT4gIFNlcSBT Y2FuIG9uIGZvbzEyXzEgZm9vXzEgICAgICAgICAgICAgICAgICAgCisgICAgICAgIEZpbHRlcjog KChhID0gb25lKCkpIE9SIChhID0gdHdvKCkpKSAgICAgIAorICAtPiAgU2VxIFNjYW4gb24gZm9v MTJfMiBmb29fMiAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgRmlsdGVyOiAoKGEgPSBvbmUo KSkgT1IgKGEgPSB0d28oKSkpICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorVXBkYXRlIG9uIGZvbyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKyAgVXBkYXRlIG9uIGZvbzEyXzEgZm9vXzEgICAgICAgICAgICAgICAg ICAgICAgICAgCisgIFVwZGF0ZSBvbiBmb28xMl8yIGZvb18yICAgICAgICAgICAgICAgICAgICAg ICAgIAorICBVcGRhdGUgb24gZm9vMyBmb28gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK KyAgLT4gIEFwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAg ICAgIFN1YnBsYW5zIFJlbW92ZWQ6IDEgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAt PiAgU2VxIFNjYW4gb24gZm9vMTJfMSBmb29fMSAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg RmlsdGVyOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0d28oKSkpCisgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBmb28xMl8yIGZvb18yICAgICAgICAgICAgIAorICAgICAgICAgICAgICBGaWx0ZXI6ICgo YSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkKKygxNyByb3dzKQorCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVs ZXMvZGVsYXlfZXhlY3V0aW9uL21lc29uLmJ1aWxkCmluZGV4IDQxZjNhYzBiODkuLjVhNzBiMTgz ZDAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL21lc29uLmJ1 aWxkCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL21lc29uLmJ1aWxkCkBA IC0yNCw2ICsyNCw3IEBAIHRlc3RzICs9IHsKICAgICAnc3BlY3MnOiBbCiAgICAgICAncGFydGl0 aW9uLWFkZGl0aW9uJywKICAgICAgICdwYXJ0aXRpb24tcmVtb3ZhbC0xJywKKyAgICAgICdjYWNo ZWQtcGxhbi1pbnZhbCcsCiAgICAgXSwKICAgfSwKIH0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21v ZHVsZXMvZGVsYXlfZXhlY3V0aW9uL3NwZWNzL2NhY2hlZC1wbGFuLWludmFsLnNwZWMgYi9zcmMv dGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9zcGVjcy9jYWNoZWQtcGxhbi1pbnZhbC5zcGVj Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjViMWY3MmI0YTgKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9zcGVjcy9jYWNo ZWQtcGxhbi1pbnZhbC5zcGVjCkBAIC0wLDAgKzEsNjUgQEAKKyMgVGVzdCB0byBjaGVjayB0aGF0 IGludmFsaWRhdGlvbiBvZiBjYWNoZWQgZ2VuZXJpYyBwbGFucyBkdXJpbmcgRXhlY3V0b3JTdGFy dAorIyBjb3JyZWN0bHkgdHJpZ2dlcnMgcmVwbGFubmluZyBhbmQgcmUtZXhlY3V0aW9uLgorCitz ZXR1cAoreworICBDUkVBVEUgVEFCTEUgZm9vIChhIGludCwgYiB0ZXh0KSBQQVJUSVRJT04gQlkg TElTVChhKTsKKyAgQ1JFQVRFIFRBQkxFIGZvbzEyIFBBUlRJVElPTiBPRiBmb28gRk9SIFZBTFVF UyBJTiAoMSwgMikgUEFSVElUSU9OIEJZIExJU1QgKGEpOworICBDUkVBVEUgVEFCTEUgZm9vMTJf MSBQQVJUSVRJT04gT0YgZm9vMTIgRk9SIFZBTFVFUyBJTiAoMSk7CisgIENSRUFURSBUQUJMRSBm b28xMl8yIFBBUlRJVElPTiBPRiBmb28xMiBGT1IgVkFMVUVTIElOICgyKTsKKyAgQ1JFQVRFIElO REVYIGZvbzEyXzFfYSBPTiBmb28xMl8xIChhKTsKKyAgQ1JFQVRFIFRBQkxFIGZvbzMgUEFSVElU SU9OIE9GIGZvbyBGT1IgVkFMVUVTIElOICgzKTsKKyAgQ1JFQVRFIFZJRVcgZm9vdiBBUyBTRUxF Q1QgKiBGUk9NIGZvbzsKKyAgQ1JFQVRFIEZVTkNUSU9OIG9uZSAoKSBSRVRVUk5TIGludCBBUyAk JCBCRUdJTiBSRVRVUk4gMTsgRU5EOyAkJCBMQU5HVUFHRSBQTFBHU1FMIFNUQUJMRTsKKyAgQ1JF QVRFIEZVTkNUSU9OIHR3byAoKSBSRVRVUk5TIGludCBBUyAkJCBCRUdJTiBSRVRVUk4gMjsgRU5E OyAkJCBMQU5HVUFHRSBQTFBHU1FMIFNUQUJMRTsKKyAgQ1JFQVRFIFJVTEUgdXBkYXRlX2ZvbyBB UyBPTiBVUERBVEUgVE8gZm9vIERPIEFMU08gU0VMRUNUIDE7Cit9CisKK3RlYXJkb3duCit7Cisg IERST1AgVklFVyBmb292OworICBEUk9QIFJVTEUgdXBkYXRlX2ZvbyBPTiBmb287CisgIERST1Ag VEFCTEUgZm9vOworICBEUk9QIEZVTkNUSU9OIG9uZSgpLCB0d28oKTsKK30KKworc2Vzc2lvbiAi czEiCisjIEFwcGVuZCB3aXRoIHJ1bi10aW1lIHBydW5pbmcKK3N0ZXAgInMxcHJlcCIgICB7IFNF VCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisJCSAgUFJFUEFSRSBxIEFT IFNFTEVDVCAqIEZST00gZm9vdiBXSEVSRSBhID0gJDEgRk9SIFVQREFURTsKKwkJICBFWFBMQUlO IChDT1NUUyBPRkYpIEVYRUNVVEUgcSAoMSk7IH0KKworIyBBbm90aGVyIGNhc2Ugd2l0aCBBcHBl bmQgd2l0aCBydW4tdGltZSBwcnVuaW5nCitzdGVwICJzMXByZXAyIiAgIHsgU0VUIHBsYW5fY2Fj aGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBQUkVQQVJFIHEyIEFTIFNFTEVDVCAq IEZST00gZm9vdiBXSEVSRSBhID0gb25lKCkgb3IgYSA9IHR3bygpOworCQkgIEVYUExBSU4gKENP U1RTIE9GRikgRVhFQ1VURSBxMjsgfQorCisjIENhc2Ugd2l0aCBhIHJ1bGUgYWRkaW5nIGFub3Ro ZXIgcXVlcnkKK3N0ZXAgInMxcHJlcDMiICAgeyBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2Vf Z2VuZXJpY19wbGFuOworCQkgIFBSRVBBUkUgcTMgQVMgVVBEQVRFIGZvb3YgU0VUIGEgPSBhIFdI RVJFIGEgPSBvbmUoKSBvciBhID0gdHdvKCk7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVD VVRFIHEzOyB9CisKKyMgRXhlY3V0ZXMgYSBnZW5lcmljIHBsYW4KK3N0ZXAgInMxZXhlYyIJeyBM T0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jf c3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBx ICgxKTsgfQorc3RlcCAiczFleGVjMiIJeyBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNF VCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVY UExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMjsgfQorc3RlcCAiczFleGVjMyIJeyBMT0FEICdk ZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRf bG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMzsgfQor CitzZXNzaW9uICJzMiIKK3N0ZXAgInMybG9jayIJeyBTRUxFQ1QgcGdfYWR2aXNvcnlfbG9jaygx MjM0NSk7IH0KK3N0ZXAgInMydW5sb2NrIgl7IFNFTEVDVCBwZ19hZHZpc29yeV91bmxvY2soMTIz NDUpOyB9CitzdGVwICJzMmRyb3BpIgl7IERST1AgSU5ERVggZm9vMTJfMV9hOyB9CisKKyMgV2hp bGUgInMxZXhlYyIsIGV0Yy4gd2FpdCB0byBhY3F1aXJlIHRoZSBhZHZpc29yeSBsb2NrLCAiczJk cm9wIiBpcyBhYmxlIHRvCisjIGRyb3AgdGhlIGluZGV4IGJlaW5nIHVzZWQgaW4gdGhlIGNhY2hl ZCBwbGFuLiAgV2hlbiAiczFleGVjIiBpcyB0aGVuCisjIHVuYmxvY2tlZCBhbmQgaW5pdGlhbGl6 ZXMgdGhlIGNhY2hlZCBwbGFuIGZvciBleGVjdXRpb24sIGl0IGRldGVjdHMgdGhlCisjIGNvbmN1 cnJlbnQgaW5kZXggZHJvcCBhbmQgY2F1c2VzIHRoZSBjYWNoZWQgcGxhbiB0byBiZSBkaXNjYXJk ZWQgYW5kCisjIHJlY3JlYXRlZCB3aXRob3V0IHRoZSBpbmRleC4KK3Blcm11dGF0aW9uICJzMXBy ZXAiICJzMmxvY2siICJzMWV4ZWMiICJzMmRyb3BpIiAiczJ1bmxvY2siCitwZXJtdXRhdGlvbiAi czFwcmVwMiIgInMybG9jayIgInMxZXhlYzIiICJzMmRyb3BpIiAiczJ1bmxvY2siCitwZXJtdXRh dGlvbiAiczFwcmVwMyIgInMybG9jayIgInMxZXhlYzMiICJzMmRyb3BpIiAiczJ1bmxvY2siCi0t IAoyLjQzLjAKCg== --000000000000b90aa8062274deae--