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.96) (envelope-from ) id 1wVPEC-001wHH-0Q for pgsql-hackers@arkaria.postgresql.org; Fri, 05 Jun 2026 07:44:28 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wVPEB-00AjMo-0R for pgsql-hackers@arkaria.postgresql.org; Fri, 05 Jun 2026 07:44:27 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wVPEA-00AjMf-13 for pgsql-hackers@lists.postgresql.org; Fri, 05 Jun 2026 07:44:26 +0000 Received: from mail-oa1-x31.google.com ([2001:4860:4864:20::31]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wVPE8-00000001CYb-07rZ for pgsql-hackers@lists.postgresql.org; Fri, 05 Jun 2026 07:44:25 +0000 Received: by mail-oa1-x31.google.com with SMTP id 586e51a60fabf-43d34292872so793547fac.0 for ; Fri, 05 Jun 2026 00:44:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780645463; cv=none; d=google.com; s=arc-20240605; b=IroXrl38txLMGf39FRlQJSAO2xOykG8F7+itZJdtNO/9N19CyBmUW/2Q6PEfitnTHq rruoyxX5VufjeMoPzb9fsv9lZ+nghJnTDOyBytDsWudefE2ZWSJhsfXF31TCsRJTQyj3 aUVcYNZogpckpmnEfCFdpNAQCujlH+nkzqG1+ka7P0wL2D6LSKlb8DroMK3YnLmkdgsV H/cWwwuXbm0D2bqflP0MdHcanRn1EqacTYBU/5i3Ap/5gLujVXzfCyedOVm5mLMhwd9W +StFalrBc0AGLXz+U8IURa42IGjI2WqwcTD3iBLiTXleWwFEj1N3EgH0MbmSLtD12B6w IjGw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=psSIf2nnHV3qSUhZ7yJT9bLkJouhPiEJHQng6luCltQ=; fh=cjUajXsRNCkxnxttuj+Kq6G0PqlUEJmZXdY+FbI9nc4=; b=Eb7GiuVAVrG0b5qk/R62hLqLyNtz6LvWm5cyS8ENB5U+NEeu5GpdUASufdXACfTamD 32aEp2Jsm7tVxQUXF5DWYXgJr43bvE6a7M/8gD6kMYaAxoQO9f96eqPuLI4BpCtNFnwm r0VhfD0Ni47A2MGA3DHMWzBM8kX+FpeErU0M+FIOw9KTiNb+khQIxR6uUn7kUG+1r5S9 Laj3Hvte1TPu/92WiKOVJ/QXVd+gEqJsoOaOeIvrZ6sPlTxPxLHtHts+0sa7qg7cKBVE uFKPCi0NKPiV0MUcrshuO7ETfGnaDmJ62jDmXStpkfQhgUmZ92Ze4M/DBG3ZpXr4eIDK aOnw==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780645463; x=1781250263; darn=lists.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=psSIf2nnHV3qSUhZ7yJT9bLkJouhPiEJHQng6luCltQ=; b=Z4THR7Y/KgxzhRwzxieO95ubpfkTaEkuFZjetIvjPsvE7qz34DE84wml55KH4/SLuY OuKi4VGWmnbMCn2QxADfcwbNoArQYwUkJ8haGbcf2R3ysYCHjJ1xgMlz/yq0nA1Yc4SI YhJ3hhdbF+/Au8TK2yCxQJ7J52GrZKgwFBNvOMputCxTbxA3F9iGW3Z+5gCEPQZd3zGh 7JcjLzj4QCWbu/6tmzM+0fZNPGZQrUqxQLuZBX9tr44OF8qbTEBIIUiXnZKxb5Wltnau bAzFyiBVMjFLp+5mRM9L4bXwaqDfcwP31jstQ9c8ExGnUikqEAsFf6vgZL3l5uaNB64N qK+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780645463; x=1781250263; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=psSIf2nnHV3qSUhZ7yJT9bLkJouhPiEJHQng6luCltQ=; b=eSSGabqHgmkD+DLQWRrZC/SFFxb+CjIFs5JXpkWNnIeGa8VK3+SYtLwDsef8BYa718 4F5ieSk1f5MO9uZZbBYhwS74PexLxRpON8AHrjRroNzaBvlvcgA7L0pBdwOFOv09BtXc 99/rgEenqKf8oDM1+Gz94Bu+aKW+IiTL7ewknUFzaMnShDG6KGvieDNYWjvrQ7l42wYp Bib9re5zUxlEH+QSCt7FTcWBD1fDz4KnWrvy78DMxLsN1C/yCE2/b3bbSNCRdW7Z/U42 G4Vh2sWWDK6DzHGSJU91hxOwhLhIdGcUU61zfssDFkRY/Wa4k5z2y6fv7d9H79L/PoM9 TH/A== X-Forwarded-Encrypted: i=1; AFNElJ+2NSfnZAb2cvRYMQoz8dknA8CynhNbz+CVJL2vTyZY6swobBkZnW8RKpw3ltLzoOkoiFq5YLvH6Kiabqxv@lists.postgresql.org X-Gm-Message-State: AOJu0Yxtxp/yFC6ni+GHRpgIjdZ3AJeDcyKgj20lkFVYseW6vU7NuuV9 hoInWYwrUD/WitgEuu1duZH+gdNocVf18TrPJ6JLcHPTctryIpWn8Ezi+vhY2GY2k5ShMQtTmaD tKGE808utmO4KZmlbQjVk2X0zx95M7wA= X-Gm-Gg: Acq92OGgmbRIYY2c8HBMEYP4z6mOY9d6uRav7uFvZ7GLhX0qn5xrYH+oySz++lqJk+W 9qVayi8+/6TFihSGOzmnimlexd4mHR6XBmTwGuN6JxePxOFSscH/j++tCC3r9ZSPJThotNTkodV bpPdHGz4wWzryK/7lJ4hGrPXol8yAogGz4wWaR7JELIaz/FjFxh3LmFy+kF2qi8B8WA2BD2/nSw VQGEvfFYEzQ7BB3apzMc/+VDguBQnqWOjH3FdPNb/A8hDRNLjeraNWZ8vkYU03mLTDsGFwF9+zh 9JDRRhAbnF82IDnv4Q== X-Received: by 2002:a05:6870:e3cf:b0:43b:a7fb:ebf with SMTP id 586e51a60fabf-4413db708b4mr1198143fac.22.1780645463066; Fri, 05 Jun 2026 00:44:23 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Shlok Kyal Date: Fri, 5 Jun 2026 13:14:11 +0530 X-Gm-Features: AVHnY4LdbuF74TM0iWjyUt2B0qEluC4R4wBXJGjj_IQncco9GfDjVtzTG173YRg Message-ID: Subject: Re: Support EXCEPT for ALL SEQUENCES publications To: Peter Smith Cc: shveta malik , vignesh C , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000004c318106537cd49c" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000004c318106537cd49c Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, 2 Jun 2026 at 05:37, Peter Smith wrote: > > Hi Shlok, > > Some review comments for patch v8-0002. > > =3D=3D=3D=3D=3D=3D > doc/src/sgml/ref/alter_publication.sgml > > Examples. > > 1. > Everywhere in these example descriptions where you say "EXCEPT" or > "ALL SEQUENCES" etc, those should all be using SGML markup. > Fixed > ~~~ > > 2. > + > + Replace the sequence list in the publication's EXCEPT clause: > + > +ALTER PUBLICATION mypublication SET ALL SEQUENCES EXCEPT (SEQUENCE seq1,= seq2); > + > + > + > + Reset the publication to be a ALL SEQUENCES publication with no exclu= ded > + sequences: > + > +ALTER PUBLICATION mypublication SET ALL SEQUENCES; > + > > 2a. > Too wordy. > > /in the publication's EXCEPT clause/in the EXCEPT clause/ > In the existing documentation we already have similar documentation: Replace the table list in the publication's EXCEPT clause: ALTER PUBLICATION mypublication SET ALL TABLES EXCEPT (TABLE users, departments); I think we should keep the wording consistent. Thoughts? > ~ > > 2b. > The 1st example comment saying "Replace the..." doesn't really make > sense because reading from top-to-bottom, this was not even publishing > sequences. > > So, I think the "ALTER PUBLICATION mypublication SET ALL SEQUENCES > EXCEPT (SEQUENCE seq1, seq2);" example should come *after* the "ALTER > PUBLICATION mypublication SET ALL SEQUENCES;" example. > Fixed > ~~~ > > 3. > + > + Replace the table and sequence list in the publication's EXCEPT claus= e: > + > +ALTER PUBLICATION mypublication SET ALL TABLES EXCEPT (TABLE users, > departments), ALL SEQUENCES EXCEPT (SEQUENCE seq1, seq2); > > > Too wordy. Should be plural. > > /in the publication's EXCEPT clause:/in the EXCEPT clauses:/ > I have kept the wording the same. Reason same as 2(a). I have made it plural. > =3D=3D=3D=3D=3D=3D > src/backend/catalog/pg_publication.c > > GetIncludedPublicationRelations: > > On Wed, May 27, 2026 at 11:03=E2=80=AFPM Shlok Kyal wrote: > > > > On Wed, 27 May 2026 at 09:08, Peter Smith wrote= : > > > > > > GetIncludedPublicationRelations: > > > > > > 4. > > > /* > > > * Gets list of relation oids that are associated with a publication. > > > * > > > * This should only be used FOR TABLE publications, the FOR ALL TABLE= S/SEQUENCES > > > * should use GetAllPublicationRelations(). > > > */ > > > List * > > > GetIncludedPublicationRelations(Oid pubid, PublicationPartOpt pub_par= topt) > > > { > > > Assert(!GetPublication(pubid)->alltables); > > > > > > return get_publication_relations(pubid, pub_partopt, false, RELKIND_R= ELATION); > > > } > > > > > > The comment does not match the code/assert. Shouldn't it also do > > > assert !allsequences? > > > > > This function can be called for ALL SEQUENCES publication. For example > > 'pg_get_publication_tables', 'InvalidatePubRelSyncCache', etc can call > > this function for all sequence publications, but in this case the list > > returned is empty. So, there is no overall impact. > > So, we should not add an 'assert !allsequences'. > > Hmm. The reply seems contrary to the function comment that says "This > should only be used FOR TABLE publications", so if not going to add an > Assert then doesn't the function comment need fixing? > Yes, the function comment is not correct and a patch was already proposed for the same in [1]. But it is a stale state there. Since this patch is related to ALL SEQUENCES and EXCEPT, I think we can update it here. I have updated the comment. > =3D=3D=3D=3D=3D=3D > src/backend/commands/publicationcmds.c > > get_delete_rels: > > 5. > /* > - * Add or remove table to/from publication. > + * Recreate list of tables/sequences to be dropped from the publication. > + * To recreate the relation list for the publication, look for existing > + * relations that do not need to be dropped. > + * > + * 'rels' contains the given list of relations, and 'oldrelids' contains > + * the OIDs of existing relations in the publication identified by 'pubi= d'. > + */ > > Why say "recreate" everywhere? Can it just say "Returns the list of > ...." instead of "Recreate ...". > > Also, I think this function comment needs to explain in more detail > that this is called during ALTER SET. IIUC, the 'rels' is the reids > you want to end up with in the publication; so those need to be > compared with the 'oldrelids' to find which old ones are not wanted > anymore. Those unwanted ones are what the function returns. > I have reworded the comment > ~~~ > > AlterPublicationRelations: > > 6. > /* > * Nothing to do if no objects, except in SET: for that it is quite > - * possible that user has not specified any tables in which case we need > - * to remove all the existing tables. > + * possible that user has not specified any tables or sequences in which > + * case we need to remove all the existing tables and sequences. > */ > > Maybe this can be reworded more simply: > > SUGGESTION > /* > * Nothing to do if no objects were specified, unless this is a SET > * command, which may need to remove all existing tables and sequences. > */ Fixed [1]:https://www.postgresql.org/message-id/CANhcyEUkV-T6cK142w9wfME9nobFHOvn= 1f4itJLMG-oR4QoPbQ%40mail.gmail.com Thanks, Shlok Kyal --0000000000004c318106537cd49c Content-Type: application/octet-stream; name="v9-0002-Support-EXCEPT-for-ALL-SEQUENCES-in-ALTER-PUBLICA.patch" Content-Disposition: attachment; filename="v9-0002-Support-EXCEPT-for-ALL-SEQUENCES-in-ALTER-PUBLICA.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mq0m8yer1 RnJvbSA2M2FmMTNkZGNjOTU3OTdhMTExY2NhNzBmNWI0MmQzZDJiNGVhYjBhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMTEgTWF5IDIwMjYgMTA6NTk6MjggKzA1MzAKU3ViamVjdDogW1BBVENIIHY5 IDIvMl0gU3VwcG9ydCBFWENFUFQgZm9yIEFMTCBTRVFVRU5DRVMgaW4gQUxURVIgUFVCTElDQVRJ T04KCkV4dGVuZCBBTFRFUiBQVUJMSUNBVElPTiB0byBzdXBwb3J0IGFuIEVYQ0VQVCBjbGF1c2Ug d2hlbiB1c2luZwpBTEwgU0VRVUVOQ0VTLCBhbGxvd2luZyBzcGVjaWZpYyBzZXF1ZW5jZXMgdG8g YmUgZXhjbHVkZWQgZnJvbSB0aGUKcHVibGljYXRpb24uCgpJZiB0aGUgRVhDRVBUIGNsYXVzZSBp cyBzcGVjaWZpZWQsIHRoZSBleGlzdGluZyBleGNsdXNpb24gbGlzdCBmb3IgdGhlCnB1YmxpY2F0 aW9uIGlzIHJlcGxhY2VkIHdpdGggdGhlIHByb3ZpZGVkIHNlcXVlbmNlcy4gSWYgdGhlIEVYQ0VQ VApjbGF1c2UgaXMgb21pdHRlZCwgYW55IGV4aXN0aW5nIGV4Y2x1c2lvbnMgZm9yIHNlcXVlbmNl cyBhcmUgY2xlYXJlZC4KCkV4YW1wbGU6CgogIEFMVEVSIFBVQkxJQ0FUSU9OIHB1YjEgU0VUIEFM TCBTRVFVRU5DRVM7CgpUaGlzIGNsZWFycyBhbnkgZXhpc3Rpbmcgc2VxdWVuY2UgZXhjbHVzaW9u cyBmb3IgdGhlIHB1YmxpY2F0aW9uLgoKICBBTFRFUiBQVUJMSUNBVElPTiBwdWIxIFNFVCBBTEwg U0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0UgczEsIHMyKTsKClRoaXMgc2V0cyB0aGUgZXhjbHVz aW9uIGxpc3QgdG8gdGhlIHNwZWNpZmllZCBzZXF1ZW5jZXMuCi0tLQogZG9jL3NyYy9zZ21sL3Jl Zi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sICAgfCAgNDMgKysrLQogc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19wdWJsaWNhdGlvbi5jICAgICAgfCAgMzYgKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9w dWJsaWNhdGlvbmNtZHMuYyAgICB8IDI2NSArKysrKysrKysrKystLS0tLS0tLS0tCiBzcmMvYmlu L3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgICAgICAgICAgICB8ICAxNCArKwogc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oICAgICAgfCAgIDYgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0IHwgIDE2ICsrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9w dWJsaWNhdGlvbi5zcWwgICAgICB8ICAgNSArCiA3IGZpbGVzIGNoYW5nZWQsIDI0MCBpbnNlcnRp b25zKCspLCAxNDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9h bHRlcl9wdWJsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlv bi5zZ21sCmluZGV4IGFhMzJiYjE2OWU5Li5iMjMxOTFjN2FhMyAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYv YWx0ZXJfcHVibGljYXRpb24uc2dtbApAQCAtMzYsNyArMzYsNyBAQCBBTFRFUiBQVUJMSUNBVElP TiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFN RSBUTyA8cgogPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1Ymxp Y2F0aW9uX2FsbF9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKICAg ICBBTEwgVEFCTEVTIFsgRVhDRVBUICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4 Y2VwdF90YWJsZV9vYmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KLSAgICBBTEwgU0VR VUVOQ0VTCisgICAgQUxMIFNFUVVFTkNFUyBbIEVYQ0VQVCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5leGNlcHRfc2VxdWVuY2Vfb2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0g KSBdCiAKIDxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNh dGlvbl9kcm9wX29iamVjdDwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIApAQCAt NTQsNiArNTQsMTAgQEAgQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIKIDxwaHJhc2U+YW5kIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpczo8 L3BocmFzZT4KIAogICAgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRh YmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXQorCis8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+ZXhjZXB0X3NlcXVlbmNlX29iamVjdDwvcmVwbGFjZWFibGU+IGlz OjwvcGhyYXNlPgorCisgICAgU0VRVUVOQ0UgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnNlcXVlbmNlX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXQogPC9zeW5vcHNpcz4KICA8L3Jl ZnN5bm9wc2lzZGl2PgogCkBAIC03NSw3ICs3OSw3IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxy CiAgICBUaGUgdGhpcmQgdmFyaWFudCBlaXRoZXIgbW9kaWZpZXMgdGhlIGluY2x1ZGVkIHRhYmxl cy9zY2hlbWFzCiAgICBvciBtYXJrcyB0aGUgcHVibGljYXRpb24gYXMgPGxpdGVyYWw+Rk9SIEFM TCBTRVFVRU5DRVM8L2xpdGVyYWw+IG9yCiAgICA8bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0 ZXJhbD4sIG9wdGlvbmFsbHkgdXNpbmcKLSAgIDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4gdG8g ZXhjbHVkZSBzcGVjaWZpYyB0YWJsZXMuIFRoZQorICAgPGxpdGVyYWw+RVhDRVBUPC9saXRlcmFs PiB0byBleGNsdWRlIHNwZWNpZmljIHRhYmxlcyBvciBzZXF1ZW5jZXMuIFRoZQogICAgPGxpdGVy YWw+U0VUIEFMTCBUQUJMRVM8L2xpdGVyYWw+IGNsYXVzZSBjYW4gdHJhbnNmb3JtIGFuIGVtcHR5 IHB1YmxpY2F0aW9uLAogICAgb3Igb25lIGRlZmluZWQgZm9yIDxsaXRlcmFsPkFMTCBTRVFVRU5D RVM8L2xpdGVyYWw+IChvciBib3RoCiAgICA8bGl0ZXJhbD5BTEwgVEFCTEVTPC9saXRlcmFsPiBh bmQgPGxpdGVyYWw+QUxMIFNFUVVFTkNFUzwvbGl0ZXJhbD4pLCBpbnRvCkBAIC04NiwxMSArOTAs MTUgQEAgQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5h bWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIKICAgIHB1YmxpY2F0aW9uIGRlZmluZWQgZm9y IDxsaXRlcmFsPkFMTCBTRVFVRU5DRVM8L2xpdGVyYWw+LiBJbiBhZGRpdGlvbiwKICAgIDxsaXRl cmFsPlNFVCBBTEwgVEFCTEVTPC9saXRlcmFsPiBjYW4gYmUgdXNlZCB0byB1cGRhdGUgdGhlIHRh YmxlcyBzcGVjaWZpZWQKICAgIGluIHRoZSA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGNsYXVz ZSBvZiBhCi0gICA8bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0ZXJhbD4gcHVibGljYXRpb24u IElmIDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4KLSAgIGlzIHNwZWNpZmllZCB3aXRoIGEgbGlz dCBvZiB0YWJsZXMsIHRoZSBleGlzdGluZyBleGNsdXNpb24gbGlzdCBpcyByZXBsYWNlZAotICAg d2l0aCB0aGUgc3BlY2lmaWVkIHRhYmxlcy4gSWYgPGxpdGVyYWw+RVhDRVBUPC9saXRlcmFsPiBp cyBvbWl0dGVkLCB0aGUKLSAgIGV4aXN0aW5nIGV4Y2x1c2lvbiBsaXN0IGlzIGNsZWFyZWQuIFRo ZSA8bGl0ZXJhbD5TRVQ8L2xpdGVyYWw+IGNsYXVzZSwgd2hlbgotICAgdXNlZCB3aXRoIGEgcHVi bGljYXRpb24gZGVmaW5lZCB3aXRoIDxsaXRlcmFsPkZPUiBUQUJMRTwvbGl0ZXJhbD4gb3IKKyAg IDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVTPC9saXRlcmFsPiBwdWJsaWNhdGlvbiBhbmQKKyAgIDxs aXRlcmFsPlNFVCBBTEwgU0VRVUVOQ0VTPC9saXRlcmFsPiBjYW4gYmUgdXNlZCB0byB1cGRhdGUg dGhlIHNlcXVlbmNlcworICAgc3BlY2lmaWVkIGluIHRoZSA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVy YWw+IGNsYXVzZSBvZiBhCisgICA8bGl0ZXJhbD5GT1IgQUxMIFNFUVVFTkNFUzwvbGl0ZXJhbD4g cHVibGljYXRpb24uIElmCisgICA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGlzIHNwZWNpZmll ZCB3aXRoIGEgbGlzdCBvZiB0YWJsZXMgb3Igc2VxdWVuY2VzLAorICAgdGhlIGV4aXN0aW5nIGV4 Y2x1c2lvbiBsaXN0IGlzIHJlcGxhY2VkIHdpdGggdGhlIHNwZWNpZmllZCB0YWJsZXMgb3IKKyAg IHNlcXVlbmNlcy4gSWYgPGxpdGVyYWw+RVhDRVBUPC9saXRlcmFsPiBpcyBvbWl0dGVkLCB0aGUg ZXhpc3RpbmcgZXhjbHVzaW9uCisgICBsaXN0IGlzIGNsZWFyZWQuIFRoZSA8bGl0ZXJhbD5TRVQ8 L2xpdGVyYWw+IGNsYXVzZSwgd2hlbiB1c2VkIHdpdGggYQorICAgcHVibGljYXRpb24gZGVmaW5l ZCB3aXRoIDxsaXRlcmFsPkZPUiBUQUJMRTwvbGl0ZXJhbD4gb3IKICAgIDxsaXRlcmFsPkZPUiBU QUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPiwgcmVwbGFjZXMgdGhlIGxpc3Qgb2YgdGFibGVzL3Nj aGVtYXMKICAgIGluIHRoZSBwdWJsaWNhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgbGlzdDsgdGhl IGV4aXN0aW5nIHRhYmxlcyBvciBzY2hlbWFzCiAgICB0aGF0IHdlcmUgcHJlc2VudCBpbiB0aGUg cHVibGljYXRpb24gd2lsbCBiZSByZW1vdmVkLgpAQCAtMjc3LDYgKzI4NSwyNyBAQCBBTFRFUiBQ VUJMSUNBVElPTiBteXB1YmxpY2F0aW9uIFNFVCBBTEwgVEFCTEVTIEVYQ0VQVCAoVEFCTEUgdXNl cnMsIGRlcGFydG1lbnRzKQogICAgdGFibGVzOgogPHByb2dyYW1saXN0aW5nPgogQUxURVIgUFVC TElDQVRJT04gbXlwdWJsaWNhdGlvbiBTRVQgQUxMIFRBQkxFUzsKKzwvcHJvZ3JhbWxpc3Rpbmc+ PC9wYXJhPgorCisgIDxwYXJhPgorICAgUmVzZXQgdGhlIHB1YmxpY2F0aW9uIHRvIGJlIGEgPGxp dGVyYWw+QUxMIFNFUVVFTkNFUzwvbGl0ZXJhbD4gcHVibGljYXRpb24KKyAgIHdpdGggbm8gZXhj bHVkZWQgc2VxdWVuY2VzOgorPHByb2dyYW1saXN0aW5nPgorQUxURVIgUFVCTElDQVRJT04gbXlw dWJsaWNhdGlvbiBTRVQgQUxMIFNFUVVFTkNFUzsKKzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgor CisgIDxwYXJhPgorICAgUmVwbGFjZSB0aGUgc2VxdWVuY2UgbGlzdCBpbiB0aGUgcHVibGljYXRp b24ncyA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+CisgICBjbGF1c2U6Cis8cHJvZ3JhbWxpc3Rp bmc+CitBTFRFUiBQVUJMSUNBVElPTiBteXB1YmxpY2F0aW9uIFNFVCBBTEwgU0VRVUVOQ0VTIEVY Q0VQVCAoU0VRVUVOQ0Ugc2VxMSwgc2VxMik7Cis8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KKwor ICA8cGFyYT4KKyAgIFJlcGxhY2UgdGhlIHRhYmxlIGFuZCBzZXF1ZW5jZSBsaXN0IGluIHRoZSBw dWJsaWNhdGlvbidzCisgICA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGNsYXVzZXM6Cis8cHJv Z3JhbWxpc3Rpbmc+CitBTFRFUiBQVUJMSUNBVElPTiBteXB1YmxpY2F0aW9uIFNFVCBBTEwgVEFC TEVTIEVYQ0VQVCAoVEFCTEUgdXNlcnMsIGRlcGFydG1lbnRzKSwgQUxMIFNFUVVFTkNFUyBFWENF UFQgKFNFUVVFTkNFIHNlcTEsIHNlcTIpOwogPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CiAKICAg PHBhcmE+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKaW5kZXggNWZkMmMyNzk1YWIu LmJkZjI4MzYyMzZiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0 aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCkBAIC05NDYs NyArOTQ2LDcgQEAgR2V0UmVsYXRpb25FeGNsdWRlZFB1YmxpY2F0aW9ucyhPaWQgcmVsaWQpCiAg Ki8KIHN0YXRpYyBMaXN0ICoKIGdldF9wdWJsaWNhdGlvbl9yZWxhdGlvbnMoT2lkIHB1YmlkLCBQ dWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQsCi0JCQkJCQkgIGJvb2wgZXhjZXB0X2ZsYWcp CisJCQkJCQkgIGJvb2wgZXhjZXB0X2ZsYWcsIGNoYXIgcHVicmVsa2luZCkKIHsKIAlMaXN0CSAg ICpyZXN1bHQ7CiAJUmVsYXRpb24JcHVicmVsc3JlbDsKQEAgLTk1NCw2ICs5NTQsOCBAQCBnZXRf cHVibGljYXRpb25fcmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9w YXJ0b3B0LAogCVN5c1NjYW5EZXNjIHNjYW47CiAJSGVhcFR1cGxlCXR1cDsKIAorCUFzc2VydChw dWJyZWxraW5kID09IFJFTEtJTkRfUkVMQVRJT04gfHwgcHVicmVsa2luZCA9PSBSRUxLSU5EX1NF UVVFTkNFKTsKKwogCS8qIEZpbmQgYWxsIHJlbGF0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlIHB1 YmxpY2F0aW9uLiAqLwogCXB1YnJlbHNyZWwgPSB0YWJsZV9vcGVuKFB1YmxpY2F0aW9uUmVsUmVs YXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKIApAQCAtOTczLDggKzk3NSwxNSBAQCBnZXRfcHVi bGljYXRpb25fcmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0 b3B0LAogCQlwdWJyZWwgPSAoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXAp OwogCiAJCWlmIChleGNlcHRfZmxhZyA9PSBwdWJyZWwtPnByZXhjZXB0KQotCQkJcmVzdWx0ID0g R2V0UHViUGFydGl0aW9uT3B0aW9uUmVsYXRpb25zKHJlc3VsdCwgcHViX3BhcnRvcHQsCi0JCQkJ CQkJCQkJCQkJcHVicmVsLT5wcnJlbGlkKTsKKwkJeworCQkJY2hhcgkJcmVsa2luZCA9IGdldF9y ZWxfcmVsa2luZChwdWJyZWwtPnBycmVsaWQpOworCisJCQlpZiAoKHB1YnJlbGtpbmQgPT0gUkVM S0lORF9SRUxBVElPTiAmJiByZWxraW5kID09IFJFTEtJTkRfUkVMQVRJT04pIHx8CisJCQkJKHB1 YnJlbGtpbmQgPT0gUkVMS0lORF9SRUxBVElPTiAmJiByZWxraW5kID09IFJFTEtJTkRfUEFSVElU SU9ORURfVEFCTEUpIHx8CisJCQkJKHB1YnJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5DRSAmJiBy ZWxraW5kID09IFJFTEtJTkRfU0VRVUVOQ0UpKQorCQkJCXJlc3VsdCA9IEdldFB1YlBhcnRpdGlv bk9wdGlvblJlbGF0aW9ucyhyZXN1bHQsIHB1Yl9wYXJ0b3B0LAorCQkJCQkJCQkJCQkJCQlwdWJy ZWwtPnBycmVsaWQpOworCQl9CiAJfQogCiAJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKQEAgLTk5 MCwxNSArOTk5LDE2IEBAIGdldF9wdWJsaWNhdGlvbl9yZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJs aWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQsCiAvKgogICogR2V0cyBsaXN0IG9mIHJlbGF0aW9u IG9pZHMgdGhhdCBhcmUgYXNzb2NpYXRlZCB3aXRoIGEgcHVibGljYXRpb24uCiAgKgotICogVGhp cyBzaG91bGQgb25seSBiZSB1c2VkIEZPUiBUQUJMRSBwdWJsaWNhdGlvbnMsIHRoZSBGT1IgQUxM IFRBQkxFUy9TRVFVRU5DRVMKLSAqIHNob3VsZCB1c2UgR2V0QWxsUHVibGljYXRpb25SZWxhdGlv bnMoKS4KKyAqIFRoaXMgaXMgbWFpbmx5IHVzZWQgZm9yIEZPUiBUQUJMRSBwdWJsaWNhdGlvbnMg YW5kIG11c3Qgbm90IGJlIGNhbGxlZCBmb3IKKyAqIEFMTCBUQUJMRVMgcHVibGljYXRpb25zLiBG b3IgQUxMIFNFUVVFTkNFUyBwdWJsaWNhdGlvbnMsIHRoZSByZXN1bHQgaXMgYW4KKyAqIGVtcHR5 IGxpc3QuCiAgKi8KIExpc3QgKgogR2V0SW5jbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQg cHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKIHsKIAlBc3NlcnQoIUdldFB1 YmxpY2F0aW9uKHB1YmlkKS0+YWxsdGFibGVzKTsKIAotCXJldHVybiBnZXRfcHVibGljYXRpb25f cmVsYXRpb25zKHB1YmlkLCBwdWJfcGFydG9wdCwgZmFsc2UpOworCXJldHVybiBnZXRfcHVibGlj YXRpb25fcmVsYXRpb25zKHB1YmlkLCBwdWJfcGFydG9wdCwgZmFsc2UsIFJFTEtJTkRfUkVMQVRJ T04pOwogfQogCiAvKgpAQCAtMTAwNiwxMiArMTAxNiwxMyBAQCBHZXRJbmNsdWRlZFB1YmxpY2F0 aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQog ICogJ0ZPUiBBTEwgVEFCTEVTJyBvciBhICdGT1IgQUxMIFNFUVVFTkNFUycgcHVibGljYXRpb24u CiAgKi8KIExpc3QgKgotR2V0RXhjbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQs IFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKK0dldEV4Y2x1ZGVkUHVibGljYXRpb25S ZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQsCisJCQkJ CQkJCWNoYXIgcHVicmVsa2luZCkKIHsKIAlBc3NlcnQoR2V0UHVibGljYXRpb24ocHViaWQpLT5h bGx0YWJsZXMgfHwKIAkJICAgR2V0UHVibGljYXRpb24ocHViaWQpLT5hbGxzZXF1ZW5jZXMpOwog Ci0JcmV0dXJuIGdldF9wdWJsaWNhdGlvbl9yZWxhdGlvbnMocHViaWQsIHB1Yl9wYXJ0b3B0LCB0 cnVlKTsKKwlyZXR1cm4gZ2V0X3B1YmxpY2F0aW9uX3JlbGF0aW9ucyhwdWJpZCwgcHViX3BhcnRv cHQsIHRydWUsIHB1YnJlbGtpbmQpOwogfQogCiAvKgpAQCAtMTA2NSw3ICsxMDc2LDcgQEAgR2V0 QWxsVGFibGVzUHVibGljYXRpb25zKHZvaWQpCiAgKiBpdCBleGNsdWRlcyBzZXF1ZW5jZXMgbWVu dGlvbmVkIGluIHRoZSBFWENFUFQgY2xhdXNlLgogICovCiBMaXN0ICoKLUdldEFsbFB1YmxpY2F0 aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgY2hhciByZWxraW5kLCBib29sIHB1YnZpYXJvb3QpCitH ZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIGNoYXIgcHVicmVsa2luZCwgYm9v bCBwdWJ2aWFyb290KQogewogCVJlbGF0aW9uCWNsYXNzUmVsOwogCVNjYW5LZXlEYXRhIGtleVsx XTsKQEAgLTEwNzQsMTkgKzEwODUsMjAgQEAgR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoT2lk IHB1YmlkLCBjaGFyIHJlbGtpbmQsIGJvb2wgcHVidmlhcm9vdCkKIAlMaXN0CSAgICpyZXN1bHQg PSBOSUw7CiAJTGlzdAkgICAqZXhjZXB0bGlzdCA9IE5JTDsKIAotCUFzc2VydCghKHJlbGtpbmQg PT0gUkVMS0lORF9TRVFVRU5DRSAmJiBwdWJ2aWFyb290KSk7CisJQXNzZXJ0KCEocHVicmVsa2lu ZCA9PSBSRUxLSU5EX1NFUVVFTkNFICYmIHB1YnZpYXJvb3QpKTsKIAogCS8qIEVYQ0VQVCBmaWx0 ZXJpbmcgYXBwbGllcyB0byB0YWJsZXMgYW5kIHNlcXVlbmNlcyAqLwogCWV4Y2VwdGxpc3QgPSBH ZXRFeGNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmlkLCBwdWJ2aWFyb290ID8KIAkJCQkJ CQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX1JPT1QgOgotCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9O X1BBUlRfTEVBRik7CisJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9MRUFGLAorCQkJCQkJ CQkJCQkJIHB1YnJlbGtpbmQpOwogCiAJY2xhc3NSZWwgPSB0YWJsZV9vcGVuKFJlbGF0aW9uUmVs YXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKIAogCVNjYW5LZXlJbml0KCZrZXlbMF0sCiAJCQkJ QW51bV9wZ19jbGFzc19yZWxraW5kLAogCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9DSEFS RVEsCi0JCQkJQ2hhckdldERhdHVtKHJlbGtpbmQpKTsKKwkJCQlDaGFyR2V0RGF0dW0ocHVicmVs a2luZCkpOwogCiAJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9jYXRhbG9nKGNsYXNzUmVsLCAxLCBr ZXkpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCmluZGV4IGU5NzU3OGRk ZDc1Li45NTc5ODhjNDYzZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGlj YXRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMK QEAgLTY2LDcgKzY2LDcgQEAgc3RhdGljIHZvaWQgQ2xvc2VSZWxhdGlvbkxpc3QoTGlzdCAqcmVs cyk7CiBzdGF0aWMgdm9pZCBMb2NrU2NoZW1hTGlzdChMaXN0ICpzY2hlbWFsaXN0KTsKIHN0YXRp YyB2b2lkIFB1YmxpY2F0aW9uQWRkUmVsYXRpb25zKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9v bCBpZl9ub3RfZXhpc3RzLAogCQkJCQkJCQkJQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIGNo YXIgcHVicmVsa2luZCk7Ci1zdGF0aWMgdm9pZCBQdWJsaWNhdGlvbkRyb3BUYWJsZXMoT2lkIHB1 YmlkLCBMaXN0ICpyZWxzLCBib29sIG1pc3Npbmdfb2spOworc3RhdGljIHZvaWQgUHVibGljYXRp b25Ecm9wUmVsYXRpb25zKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBtaXNzaW5nX29rKTsK IHN0YXRpYyB2b2lkIFB1YmxpY2F0aW9uQWRkU2NoZW1hcyhPaWQgcHViaWQsIExpc3QgKnNjaGVt YXMsIGJvb2wgaWZfbm90X2V4aXN0cywKIAkJCQkJCQkJICBBbHRlclB1YmxpY2F0aW9uU3RtdCAq c3RtdCk7CiBzdGF0aWMgdm9pZCBQdWJsaWNhdGlvbkRyb3BTY2hlbWFzKE9pZCBwdWJpZCwgTGlz dCAqc2NoZW1hcywgYm9vbCBtaXNzaW5nX29rKTsKQEAgLTEyNTEsMjYgKzEyNTEsMTMxIEBAIElu dmFsaWRhdGVQdWJsaWNhdGlvblJlbHMoTGlzdCAqcmVsaWRzKQogfQogCiAvKgotICogQWRkIG9y IHJlbW92ZSB0YWJsZSB0by9mcm9tIHB1YmxpY2F0aW9uLgorICogUmV0dXJuIHRoZSBsaXN0IG9m IHRhYmxlcy9zZXF1ZW5jZXMgdG8gYmUgcmVtb3ZlZCBmcm9tIGEgcHVibGljYXRpb24gZHVyaW5n CisgKiBBTFRFUiBQVUJMSUNBVElPTiAuLi4gU0VULgorICoKKyAqICdyZWxzJyBjb250YWlucyB0 aGUgcmVsYXRpb25zIHNwZWNpZmllZCBieSB0aGUgU0VUIGNvbW1hbmQsIGFuZCAnb2xkcmVsaWRz JworICogY29udGFpbnMgdGhlIGV4aXN0aW5nIHJlbGF0aW9ucyBpbiB0aGUgcHVibGljYXRpb24u IFRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZQorICogZXhpc3RpbmcgcmVsYXRpb25zIHRoYXQgYXJl IG5vdCBwcmVzZW50IGluICdyZWxzJyBhbmQgdGhlcmVmb3JlIG5lZWQgdG8gYmUKKyAqIHJlbW92 ZWQuCisgKi8KK3N0YXRpYyBMaXN0ICoKK2dldF9kZWxldGVfcmVscyhPaWQgcHViaWQsIExpc3Qg KnJlbHMsIExpc3QgKm9sZHJlbGlkcykKK3sKKwlMaXN0ICpkZWxyZWxzID0gTklMOworCisJZm9y ZWFjaF9vaWQob2xkcmVsaWQsIG9sZHJlbGlkcykKKwl7CisJCUxpc3RDZWxsICAgKm5ld2xjOwor CQlQdWJsaWNhdGlvblJlbEluZm8gKm9sZHJlbDsKKwkJYm9vbAkJZm91bmQgPSBmYWxzZTsKKwkJ SGVhcFR1cGxlCXJmdHVwbGU7CisJCU5vZGUJICAgKm9sZHJlbHdoZXJlY2xhdXNlID0gTlVMTDsK KwkJQml0bWFwc2V0ICAqb2xkY29sdW1ucyA9IE5VTEw7CisKKwkJLyogbG9vayB1cCB0aGUgY2Fj aGUgZm9yIHRoZSBvbGQgcmVsbWFwICovCisJCXJmdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTIoUFVC TElDQVRJT05SRUxNQVAsCisJCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShvbGRyZWxpZCksCisJ CQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShwdWJpZCkpOworCisJCS8qCisJCSAqIFNlZSBpZiB0 aGUgZXhpc3RpbmcgcmVsYXRpb24gY3VycmVudGx5IGhhcyBhIFdIRVJFIGNsYXVzZSBvciBhCisJ CSAqIGNvbHVtbiBsaXN0LiBXZSBuZWVkIHRvIGNvbXBhcmUgdGhvc2UgdG9vLgorCQkgKi8KKwkJ aWYgKEhlYXBUdXBsZUlzVmFsaWQocmZ0dXBsZSkpCisJCXsKKwkJCWJvb2wJCWlzbnVsbCA9IHRy dWU7CisJCQlEYXR1bQkJd2hlcmVDbGF1c2VEYXR1bTsKKwkJCURhdHVtCQljb2x1bW5MaXN0RGF0 dW07CisKKwkJCS8qIExvYWQgdGhlIFdIRVJFIGNsYXVzZSBmb3IgdGhpcyB0YWJsZS4gKi8KKwkJ CXdoZXJlQ2xhdXNlRGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoUFVCTElDQVRJT05SRUxNQVAsIHJm dHVwbGUsCisJCQkJCQkJCQkJCSAgIEFudW1fcGdfcHVibGljYXRpb25fcmVsX3BycXVhbCwKKwkJ CQkJCQkJCQkJICAgJmlzbnVsbCk7CisJCQlpZiAoIWlzbnVsbCkKKwkJCQlvbGRyZWx3aGVyZWNs YXVzZSA9IHN0cmluZ1RvTm9kZShUZXh0RGF0dW1HZXRDU3RyaW5nKHdoZXJlQ2xhdXNlRGF0dW0p KTsKKworCQkJLyogVHJhbnNmb3JtIHRoZSBpbnQydmVjdG9yIGNvbHVtbiBsaXN0IHRvIGEgYml0 bWFwLiAqLworCQkJY29sdW1uTGlzdERhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKFBVQkxJQ0FUSU9O UkVMTUFQLCByZnR1cGxlLAorCQkJCQkJCQkJCQkgIEFudW1fcGdfcHVibGljYXRpb25fcmVsX3By YXR0cnMsCisJCQkJCQkJCQkJCSAgJmlzbnVsbCk7CisKKwkJCWlmICghaXNudWxsKQorCQkJCW9s ZGNvbHVtbnMgPSBwdWJfY29sbGlzdF90b19iaXRtYXBzZXQoTlVMTCwgY29sdW1uTGlzdERhdHVt LCBOVUxMKTsKKworCQkJUmVsZWFzZVN5c0NhY2hlKHJmdHVwbGUpOworCQl9CisKKwkJLyoKKwkJ ICogQ2hlY2sgaWYgYW55IG9mIHRoZSBuZXcgc2V0IG9mIHJlbGF0aW9ucyBtYXRjaGVzIHdpdGgg dGhlIGV4aXN0aW5nCisJCSAqIHJlbGF0aW9ucyBpbiB0aGUgcHVibGljYXRpb24uIEFkZGl0aW9u YWxseSwgaWYgdGhlIHJlbGF0aW9uIGhhcyBhbgorCQkgKiBhc3NvY2lhdGVkIFdIRVJFIGNsYXVz ZSwgY2hlY2sgdGhlIFdIRVJFIGV4cHJlc3Npb25zIGFsc28gbWF0Y2guCisJCSAqIFNhbWUgZm9y IHRoZSBjb2x1bW4gbGlzdC4gRHJvcCB0aGUgcmVzdC4KKwkJICovCisJCWZvcmVhY2gobmV3bGMs IHJlbHMpCisJCXsKKwkJCVB1YmxpY2F0aW9uUmVsSW5mbyAqbmV3cHVicmVsOworCQkJT2lkCQkJ bmV3cmVsaWQ7CisJCQlCaXRtYXBzZXQgICpuZXdjb2x1bW5zID0gTlVMTDsKKworCQkJbmV3cHVi cmVsID0gKFB1YmxpY2F0aW9uUmVsSW5mbyAqKSBsZmlyc3QobmV3bGMpOworCQkJbmV3cmVsaWQg PSBSZWxhdGlvbkdldFJlbGlkKG5ld3B1YnJlbC0+cmVsYXRpb24pOworCisJCQkvKgorCQkJICog VmFsaWRhdGUgdGhlIGNvbHVtbiBsaXN0LiAgSWYgdGhlIGNvbHVtbiBsaXN0IG9yIFdIRVJFIGNs YXVzZQorCQkJICogY2hhbmdlcywgdGhlbiB0aGUgdmFsaWRhdGlvbiBkb25lIGhlcmUgd2lsbCBi ZSBkdXBsaWNhdGVkCisJCQkgKiBpbnNpZGUgUHVibGljYXRpb25BZGRSZWxhdGlvbnMoKS4gIFRo ZSB2YWxpZGF0aW9uIGlzIGNoZWFwCisJCQkgKiBlbm91Z2ggdGhhdCB0aGF0IHNlZW1zIGhhcm1s ZXNzLgorCQkJICovCisJCQluZXdjb2x1bW5zID0gcHViX2NvbGxpc3RfdmFsaWRhdGUobmV3cHVi cmVsLT5yZWxhdGlvbiwKKwkJCQkJCQkJCQkJICBuZXdwdWJyZWwtPmNvbHVtbnMpOworCisJCQlm b3VuZCA9IChuZXdyZWxpZCA9PSBvbGRyZWxpZCkgJiYKKwkJCQkJZXF1YWwob2xkcmVsd2hlcmVj bGF1c2UsIG5ld3B1YnJlbC0+d2hlcmVDbGF1c2UpICYmCisJCQkJCWJtc19lcXVhbChvbGRjb2x1 bW5zLCBuZXdjb2x1bW5zKTsKKworCQkJaWYoZm91bmQpCisJCQkJYnJlYWs7CisJCX0KKworCQkv KgorCQkgKiBBZGQgbm9uLW1hdGNoaW5nIHJlbGF0aW9ucyB0byB0aGUgZHJvcCBsaXN0LiBUaGUg cmVsYXRpb24gd2lsbCBiZQorCQkgKiBkcm9wcGVkIGlycmVzcGVjdGl2ZSBvZiB0aGUgY29sdW1u IGxpc3QgYW5kIFdIRVJFIGNsYXVzZS4KKwkJICovCisJCWlmICghZm91bmQpCisJCXsKKwkJCW9s ZHJlbCA9IHBhbGxvYzBfb2JqZWN0IChQdWJsaWNhdGlvblJlbEluZm8pOworCQkJb2xkcmVsLT5y ZWxhdGlvbiA9IHRhYmxlX29wZW4ob2xkcmVsaWQsCisJCQkJCQkJCQkJICBTaGFyZVVwZGF0ZUV4 Y2x1c2l2ZUxvY2spOworCQkJZGVscmVscyA9IGxhcHBlbmQoZGVscmVscywgb2xkcmVsKTsKKwkJ fQorCX0KKworCXJldHVybiBkZWxyZWxzOworfQorCisvKgorICogQWRkIG9yIHJlbW92ZSB0YWJs ZSBvciBzZXF1ZW5jZSB0by9mcm9tIHB1YmxpY2F0aW9uLgogICovCiBzdGF0aWMgdm9pZAotQWx0 ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxl IHR1cCwKLQkJCQkJICAgTGlzdCAqdGFibGVzLCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKLQkJ CQkJICAgYm9vbCBwdWJsaXNoX3NjaGVtYSkKK0FsdGVyUHVibGljYXRpb25SZWxhdGlvbnMoQWx0 ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCisJCQkJCQkgIExpc3QgKnRh YmxlcywgTGlzdCAqc2VxdWVuY2VzLCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKKwkJCQkJCSAg Ym9vbCBwdWJsaXNoX3NjaGVtYSkKIHsKIAlMaXN0CSAgICpyZWxzID0gTklMOworCUxpc3QJICAg KnNlcXMgPSBOSUw7CiAJRm9ybV9wZ19wdWJsaWNhdGlvbiBwdWJmb3JtID0gKEZvcm1fcGdfcHVi bGljYXRpb24pIEdFVFNUUlVDVCh0dXApOwogCU9pZAkJCXB1YmlkID0gcHViZm9ybS0+b2lkOwog CiAJLyoKLQkgKiBOb3RoaW5nIHRvIGRvIGlmIG5vIG9iamVjdHMsIGV4Y2VwdCBpbiBTRVQ6IGZv ciB0aGF0IGl0IGlzIHF1aXRlCi0JICogcG9zc2libGUgdGhhdCB1c2VyIGhhcyBub3Qgc3BlY2lm aWVkIGFueSB0YWJsZXMgaW4gd2hpY2ggY2FzZSB3ZSBuZWVkCi0JICogdG8gcmVtb3ZlIGFsbCB0 aGUgZXhpc3RpbmcgdGFibGVzLgorCSAqIE5vdGhpbmcgdG8gZG8gaWYgbm8gb2JqZWN0cyB3ZXJl IHNwZWNpZmllZCwgdW5sZXNzIHRoaXMgaXMgYSBTRVQgY29tbWFuZCwKKwkgKiB3aGljaCBtYXkg bmVlZCB0byByZW1vdmUgYWxsIGV4aXN0aW5nIHRhYmxlcyBhbmQgc2VxdWVuY2VzLgogCSAqLwot CWlmICghdGFibGVzICYmIHN0bXQtPmFjdGlvbiAhPSBBUF9TZXRPYmplY3RzKQorCWlmICghdGFi bGVzICYmICFzZXF1ZW5jZXMgJiYgc3RtdC0+YWN0aW9uICE9IEFQX1NldE9iamVjdHMpCiAJCXJl dHVybjsKIAogCXJlbHMgPSBPcGVuUmVsYXRpb25MaXN0KHRhYmxlcyk7CisJc2VxcyA9IE9wZW5S ZWxhdGlvbkxpc3Qoc2VxdWVuY2VzKTsKIAogCWlmIChzdG10LT5hY3Rpb24gPT0gQVBfQWRkT2Jq ZWN0cykKIAl7CkBAIC0xMjg0LDI5ICsxMzg5LDMzIEBAIEFsdGVyUHVibGljYXRpb25UYWJsZXMo QWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAJCVB1YmxpY2F0aW9u QWRkUmVsYXRpb25zKHB1YmlkLCByZWxzLCBmYWxzZSwgc3RtdCwgUkVMS0lORF9SRUxBVElPTik7 CiAJfQogCWVsc2UgaWYgKHN0bXQtPmFjdGlvbiA9PSBBUF9Ecm9wT2JqZWN0cykKLQkJUHVibGlj YXRpb25Ecm9wVGFibGVzKHB1YmlkLCByZWxzLCBmYWxzZSk7CisJCVB1YmxpY2F0aW9uRHJvcFJl bGF0aW9ucyhwdWJpZCwgcmVscywgZmFsc2UpOwogCWVsc2UJCQkJCQkvKiBBUF9TZXRPYmplY3Rz ICovCiAJewogCQlMaXN0CSAgICpvbGRyZWxpZHMgPSBOSUw7CisJCUxpc3QJICAgKm9sZHNlcWlk cyA9IE5JTDsKIAkJTGlzdAkgICAqZGVscmVscyA9IE5JTDsKLQkJTGlzdENlbGwgICAqb2xkbGM7 CiAKIAkJaWYgKHN0bXQtPmZvcl9hbGxfdGFibGVzIHx8IHN0bXQtPmZvcl9hbGxfc2VxdWVuY2Vz KQogCQl7CiAJCQkvKgotCQkJICogSW4gRk9SIEFMTCBUQUJMRVMgbW9kZSwgcmVsYXRpb25zIGFy ZSB0cmFja2VkIGFzIGV4Y2x1c2lvbnMKLQkJCSAqIChFWENFUFQgY2xhdXNlKS4gRmV0Y2ggdGhl IGN1cnJlbnQgZXhjbHVkZWQgcmVsYXRpb25zIHNvIHRoZXkKLQkJCSAqIGNhbiBiZSByZWNvbmNp bGVkIHdpdGggdGhlIHNwZWNpZmllZCBFWENFUFQgbGlzdC4KKwkJCSAqIEluIEZPUiBBTEwgVEFC TEVTLyBTRVFVRU5DRVMgbW9kZSwgcmVsYXRpb25zIGFyZSB0cmFja2VkIGFzCisJCQkgKiBleGNs dXNpb25zIChFWENFUFQgY2xhdXNlKS4gRmV0Y2ggdGhlIGN1cnJlbnQgZXhjbHVkZWQKKwkJCSAq IHJlbGF0aW9ucyBzbyB0aGV5IGNhbiBiZSByZWNvbmNpbGVkIHdpdGggdGhlIHNwZWNpZmllZCBF WENFUFQKKwkJCSAqIGxpc3QuCiAJCQkgKgogCQkJICogVGhpcyBhcHBsaWVzIG9ubHkgaWYgdGhl IGV4aXN0aW5nIHB1YmxpY2F0aW9uIGlzIGFscmVhZHkKLQkJCSAqIGRlZmluZWQgYXMgRk9SIEFM TCBUQUJMRVM7IG90aGVyd2lzZSwgdGhlcmUgYXJlIG5vIGV4Y2x1c2lvbgotCQkJICogZW50cmll cyB0byBwcm9jZXNzLgorCQkJICogZGVmaW5lZCBhcyBGT1IgQUxMIFRBQkxFUy8gRk9SIEFMTCBT RVFVRU5DRVM7IG90aGVyd2lzZSwgdGhlcmUKKwkJCSAqIGFyZSBubyBleGNsdXNpb24gZW50cmll cyB0byBwcm9jZXNzLgogCQkJICovCiAJCQlpZiAocHViZm9ybS0+cHViYWxsdGFibGVzKQotCQkJ ewogCQkJCW9sZHJlbGlkcyA9IEdldEV4Y2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMocHViaWQs Ci0JCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX1JPT1QpOwotCQkJfQorCQkJCQkJCQkJ CQkJCQkJUFVCTElDQVRJT05fUEFSVF9ST09ULAorCQkJCQkJCQkJCQkJCQkJUkVMS0lORF9SRUxB VElPTik7CisJCQlpZiAocHViZm9ybS0+cHViYWxsc2VxdWVuY2VzKQorCQkJCW9sZHNlcWlkcyA9 IEdldEV4Y2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMocHViaWQsCisJCQkJCQkJCQkJCQkJCQlQ VUJMSUNBVElPTl9QQVJUX1JPT1QsCisJCQkJCQkJCQkJCQkJCQlSRUxLSU5EX1NFUVVFTkNFKTsK IAkJfQogCQllbHNlCiAJCXsKQEAgLTEzMTksMTE4ICsxNDI4LDI1IEBAIEFsdGVyUHVibGljYXRp b25UYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAJCQkJ CQkJCQkgICBwdWJmb3JtLT5wdWJ2aWFyb290KTsKIAkJfQogCi0JCS8qCi0JCSAqIFRvIHJlY3Jl YXRlIHRoZSByZWxhdGlvbiBsaXN0IGZvciB0aGUgcHVibGljYXRpb24sIGxvb2sgZm9yCi0JCSAq IGV4aXN0aW5nIHJlbGF0aW9ucyB0aGF0IGRvIG5vdCBuZWVkIHRvIGJlIGRyb3BwZWQuCi0JCSAq LwotCQlmb3JlYWNoKG9sZGxjLCBvbGRyZWxpZHMpCi0JCXsKLQkJCU9pZAkJCW9sZHJlbGlkID0g bGZpcnN0X29pZChvbGRsYyk7Ci0JCQlMaXN0Q2VsbCAgICpuZXdsYzsKLQkJCVB1YmxpY2F0aW9u UmVsSW5mbyAqb2xkcmVsOwotCQkJYm9vbAkJZm91bmQgPSBmYWxzZTsKLQkJCUhlYXBUdXBsZQly ZnR1cGxlOwotCQkJTm9kZQkgICAqb2xkcmVsd2hlcmVjbGF1c2UgPSBOVUxMOwotCQkJQml0bWFw c2V0ICAqb2xkY29sdW1ucyA9IE5VTEw7Ci0KLQkJCS8qIGxvb2sgdXAgdGhlIGNhY2hlIGZvciB0 aGUgb2xkIHJlbG1hcCAqLwotCQkJcmZ0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMihQVUJMSUNBVElP TlJFTE1BUCwKLQkJCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShvbGRyZWxpZCksCi0JCQkJCQkJ CQkgIE9iamVjdElkR2V0RGF0dW0ocHViaWQpKTsKLQotCQkJLyoKLQkJCSAqIFNlZSBpZiB0aGUg ZXhpc3RpbmcgcmVsYXRpb24gY3VycmVudGx5IGhhcyBhIFdIRVJFIGNsYXVzZSBvciBhCi0JCQkg KiBjb2x1bW4gbGlzdC4gV2UgbmVlZCB0byBjb21wYXJlIHRob3NlIHRvby4KLQkJCSAqLwotCQkJ aWYgKEhlYXBUdXBsZUlzVmFsaWQocmZ0dXBsZSkpCi0JCQl7Ci0JCQkJYm9vbAkJaXNudWxsID0g dHJ1ZTsKLQkJCQlEYXR1bQkJd2hlcmVDbGF1c2VEYXR1bTsKLQkJCQlEYXR1bQkJY29sdW1uTGlz dERhdHVtOwotCi0JCQkJLyogTG9hZCB0aGUgV0hFUkUgY2xhdXNlIGZvciB0aGlzIHRhYmxlLiAq LwotCQkJCXdoZXJlQ2xhdXNlRGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoUFVCTElDQVRJT05SRUxN QVAsIHJmdHVwbGUsCi0JCQkJCQkJCQkJCQkgICBBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcnF1 YWwsCi0JCQkJCQkJCQkJCQkgICAmaXNudWxsKTsKLQkJCQlpZiAoIWlzbnVsbCkKLQkJCQkJb2xk cmVsd2hlcmVjbGF1c2UgPSBzdHJpbmdUb05vZGUoVGV4dERhdHVtR2V0Q1N0cmluZyh3aGVyZUNs YXVzZURhdHVtKSk7Ci0KLQkJCQkvKiBUcmFuc2Zvcm0gdGhlIGludDJ2ZWN0b3IgY29sdW1uIGxp c3QgdG8gYSBiaXRtYXAuICovCi0JCQkJY29sdW1uTGlzdERhdHVtID0gU3lzQ2FjaGVHZXRBdHRy KFBVQkxJQ0FUSU9OUkVMTUFQLCByZnR1cGxlLAotCQkJCQkJCQkJCQkJICBBbnVtX3BnX3B1Ymxp Y2F0aW9uX3JlbF9wcmF0dHJzLAotCQkJCQkJCQkJCQkJICAmaXNudWxsKTsKLQotCQkJCWlmICgh aXNudWxsKQotCQkJCQlvbGRjb2x1bW5zID0gcHViX2NvbGxpc3RfdG9fYml0bWFwc2V0KE5VTEws IGNvbHVtbkxpc3REYXR1bSwgTlVMTCk7Ci0KLQkJCQlSZWxlYXNlU3lzQ2FjaGUocmZ0dXBsZSk7 Ci0JCQl9Ci0KLQkJCWZvcmVhY2gobmV3bGMsIHJlbHMpCi0JCQl7Ci0JCQkJUHVibGljYXRpb25S ZWxJbmZvICpuZXdwdWJyZWw7Ci0JCQkJT2lkCQkJbmV3cmVsaWQ7Ci0JCQkJQml0bWFwc2V0ICAq bmV3Y29sdW1ucyA9IE5VTEw7Ci0KLQkJCQluZXdwdWJyZWwgPSAoUHVibGljYXRpb25SZWxJbmZv ICopIGxmaXJzdChuZXdsYyk7Ci0JCQkJbmV3cmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKG5ld3B1 YnJlbC0+cmVsYXRpb24pOwotCi0JCQkJLyoKLQkJCQkgKiBWYWxpZGF0ZSB0aGUgY29sdW1uIGxp c3QuICBJZiB0aGUgY29sdW1uIGxpc3Qgb3IgV0hFUkUKLQkJCQkgKiBjbGF1c2UgY2hhbmdlcywg dGhlbiB0aGUgdmFsaWRhdGlvbiBkb25lIGhlcmUgd2lsbCBiZQotCQkJCSAqIGR1cGxpY2F0ZWQg aW5zaWRlIFB1YmxpY2F0aW9uQWRkUmVsYXRpb25zKCkuICBUaGUKLQkJCQkgKiB2YWxpZGF0aW9u IGlzIGNoZWFwIGVub3VnaCB0aGF0IHRoYXQgc2VlbXMgaGFybWxlc3MuCi0JCQkJICovCi0JCQkJ bmV3Y29sdW1ucyA9IHB1Yl9jb2xsaXN0X3ZhbGlkYXRlKG5ld3B1YnJlbC0+cmVsYXRpb24sCi0J CQkJCQkJCQkJCQkgIG5ld3B1YnJlbC0+Y29sdW1ucyk7Ci0KLQkJCQkvKgotCQkJCSAqIENoZWNr IGlmIGFueSBvZiB0aGUgbmV3IHNldCBvZiByZWxhdGlvbnMgbWF0Y2hlcyB3aXRoIHRoZQotCQkJ CSAqIGV4aXN0aW5nIHJlbGF0aW9ucyBpbiB0aGUgcHVibGljYXRpb24uIEFkZGl0aW9uYWxseSwg aWYgdGhlCi0JCQkJICogcmVsYXRpb24gaGFzIGFuIGFzc29jaWF0ZWQgV0hFUkUgY2xhdXNlLCBj aGVjayB0aGUgV0hFUkUKLQkJCQkgKiBleHByZXNzaW9ucyBhbHNvIG1hdGNoLiBTYW1lIGZvciB0 aGUgY29sdW1uIGxpc3QuIERyb3AgdGhlCi0JCQkJICogcmVzdC4KLQkJCQkgKi8KLQkJCQlpZiAo bmV3cmVsaWQgPT0gb2xkcmVsaWQpCi0JCQkJewotCQkJCQlpZiAoZXF1YWwob2xkcmVsd2hlcmVj bGF1c2UsIG5ld3B1YnJlbC0+d2hlcmVDbGF1c2UpICYmCi0JCQkJCQlibXNfZXF1YWwob2xkY29s dW1ucywgbmV3Y29sdW1ucykpCi0JCQkJCXsKLQkJCQkJCWZvdW5kID0gdHJ1ZTsKLQkJCQkJCWJy ZWFrOwotCQkJCQl9Ci0JCQkJfQotCQkJfQotCi0JCQkvKgotCQkJICogQWRkIHRoZSBub24tbWF0 Y2hlZCByZWxhdGlvbnMgdG8gYSBsaXN0IHNvIHRoYXQgdGhleSBjYW4gYmUKLQkJCSAqIGRyb3Bw ZWQuCi0JCQkgKi8KLQkJCWlmICghZm91bmQpCi0JCQl7Ci0JCQkJb2xkcmVsID0gcGFsbG9jX29i amVjdChQdWJsaWNhdGlvblJlbEluZm8pOwotCQkJCW9sZHJlbC0+d2hlcmVDbGF1c2UgPSBOVUxM OwotCQkJCW9sZHJlbC0+Y29sdW1ucyA9IE5JTDsKLQkJCQlvbGRyZWwtPmV4Y2VwdCA9IGZhbHNl OwotCQkJCW9sZHJlbC0+cmVsYXRpb24gPSB0YWJsZV9vcGVuKG9sZHJlbGlkLAotCQkJCQkJCQkJ CQkgIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7Ci0JCQkJZGVscmVscyA9IGxhcHBlbmQoZGVs cmVscywgb2xkcmVsKTsKLQkJCX0KLQkJfQorCQkvKiBHZXQgdGFibGVzIGFuZCBzZXF1ZW5jZXMg dG8gYmUgZHJvcHBlZCAqLworCQlkZWxyZWxzID0gZ2V0X2RlbGV0ZV9yZWxzKHB1YmlkLCByZWxz LCBvbGRyZWxpZHMpOworCQlkZWxyZWxzID0gbGlzdF9jb25jYXQoZGVscmVscywgZ2V0X2RlbGV0 ZV9yZWxzKHB1YmlkLCBzZXFzLCBvbGRzZXFpZHMpKTsKIAogCQkvKiBBbmQgZHJvcCB0aGVtLiAq LwotCQlQdWJsaWNhdGlvbkRyb3BUYWJsZXMocHViaWQsIGRlbHJlbHMsIHRydWUpOworCQlQdWJs aWNhdGlvbkRyb3BSZWxhdGlvbnMocHViaWQsIGRlbHJlbHMsIHRydWUpOwogCiAJCS8qCiAJCSAq IERvbid0IGJvdGhlciBjYWxjdWxhdGluZyB0aGUgZGlmZmVyZW5jZSBmb3IgYWRkaW5nLCB3ZSds bCBjYXRjaCBhbmQKIAkJICogc2tpcCBleGlzdGluZyBvbmVzIHdoZW4gZG9pbmcgY2F0YWxvZyB1 cGRhdGUuCiAJCSAqLwogCQlQdWJsaWNhdGlvbkFkZFJlbGF0aW9ucyhwdWJpZCwgcmVscywgdHJ1 ZSwgc3RtdCwgUkVMS0lORF9SRUxBVElPTik7CisJCVB1YmxpY2F0aW9uQWRkUmVsYXRpb25zKHB1 YmlkLCBzZXFzLCB0cnVlLCBzdG10LCBSRUxLSU5EX1NFUVVFTkNFKTsKIAogCQlDbG9zZVJlbGF0 aW9uTGlzdChkZWxyZWxzKTsKIAl9CiAKIAlDbG9zZVJlbGF0aW9uTGlzdChyZWxzKTsKKwlDbG9z ZVJlbGF0aW9uTGlzdChzZXFzKTsKIH0KIAogLyoKQEAgLTE3MDYsOCArMTcyMiw5IEBAIEFsdGVy UHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3Rt dCkKIAkJT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoc3RtdC0+cHVib2JqZWN0cywgcHN0YXRl LCAmcmVsYXRpb25zLAogCQkJCQkJCQkgICAmZXhjZXB0dGJscywgJmV4Y2VwdHNlcXMsICZzY2hl bWFpZGxpc3QpOwogCi0JCS8qIEVYQ0VQVCBjbGF1c2UgaXMgbm90IHN1cHBvcnRlZCB3aXRoIEFM VEVSIFBVQkxJQ0FUSU9OICovCi0JCUFzc2VydChleGNlcHRzZXFzID09IE5JTCk7CisJCS8qIEVY Q0VQVCBjbGF1c2UgaXMgb25seSBzdXBwb3J0ZWQgZm9yIEFMVEVSIFBVQkxJQ0FUSU9OIC4uLiBT RVQgKi8KKwkJQXNzZXJ0KChleGNlcHR0YmxzID09IE5JTCAmJiBleGNlcHRzZXFzID09IE5JTCkg fHwKKwkJCSAgIHN0bXQtPmFjdGlvbiA9PSBBUF9TZXRPYmplY3RzKTsKIAogCQlDaGVja0FsdGVy UHVibGljYXRpb24oc3RtdCwgdHVwLCByZWxhdGlvbnMsIHNjaGVtYWlkbGlzdCk7CiAKQEAgLTE3 MzEsOCArMTc0OCw4IEBAIEFsdGVyUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRl clB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAkJCQkJCSAgIHN0bXQtPnB1Ym5hbWUpKTsKIAogCQly ZWxhdGlvbnMgPSBsaXN0X2NvbmNhdChyZWxhdGlvbnMsIGV4Y2VwdHRibHMpOwotCQlBbHRlclB1 YmxpY2F0aW9uVGFibGVzKHN0bXQsIHR1cCwgcmVsYXRpb25zLCBwc3RhdGUtPnBfc291cmNldGV4 dCwKLQkJCQkJCQkgICBzY2hlbWFpZGxpc3QgIT0gTklMKTsKKwkJQWx0ZXJQdWJsaWNhdGlvblJl bGF0aW9ucyhzdG10LCB0dXAsIHJlbGF0aW9ucywgZXhjZXB0c2VxcywKKwkJCQkJCQkJICBwc3Rh dGUtPnBfc291cmNldGV4dCwgc2NoZW1haWRsaXN0ICE9IE5JTCk7CiAJCUFsdGVyUHVibGljYXRp b25TY2hlbWFzKHN0bXQsIHR1cCwgc2NoZW1haWRsaXN0KTsKIAkJQWx0ZXJQdWJsaWNhdGlvbkFs bEZsYWdzKHN0bXQsIHJlbCwgdHVwKTsKIAl9CkBAIC0yMDg3LDEwICsyMTA0LDEwIEBAIFB1Ymxp Y2F0aW9uQWRkUmVsYXRpb25zKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBpZl9ub3RfZXhp c3RzLAogfQogCiAvKgotICogUmVtb3ZlIGxpc3RlZCB0YWJsZXMgZnJvbSB0aGUgcHVibGljYXRp b24uCisgKiBSZW1vdmUgbGlzdGVkIHJlbGF0aW9ucyBmcm9tIHRoZSBwdWJsaWNhdGlvbi4KICAq Lwogc3RhdGljIHZvaWQKLVB1YmxpY2F0aW9uRHJvcFRhYmxlcyhPaWQgcHViaWQsIExpc3QgKnJl bHMsIGJvb2wgbWlzc2luZ19vaykKK1B1YmxpY2F0aW9uRHJvcFJlbGF0aW9ucyhPaWQgcHViaWQs IExpc3QgKnJlbHMsIGJvb2wgbWlzc2luZ19vaykKIHsKIAlPYmplY3RBZGRyZXNzIG9iajsKIAlM aXN0Q2VsbCAgICpsYzsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4u YyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCAxMmQyNzZjYmI2NS4uYWFm MDNlM2E5NGEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysg Yi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTIzNTEsNiArMjM1MSwyMCBAQCBt YXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAkJQ09NUExFVEVfV0lUSF9TQ0hF TUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdGFibGVzKTsKIAllbHNlIGlmIChNYXRjaGVzKCJB TFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiU0VUIiwgIkFMTCIsICJUQUJMRVMiLCAi RVhDRVBUIiwgIigiLCAiVEFCTEUiLCBNYXRjaEFueU4pICYmICFlbmRzX3dpdGgocHJldl93ZCwg JywnKSkKIAkJQ09NUExFVEVfV0lUSCgiKSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwg IlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJTRVQiLCAiQUxMIiwgIlNFUVVFTkNFUyIsICJFWENF UFQiLCAiKCIpKQorCQlDT01QTEVURV9XSVRIKCJTRVFVRU5DRSIpOworCWVsc2UgaWYgKE1hdGNo ZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJTRVQiLCAiQUxMIiwgIlNFUVVF TkNFUyIpKQorCQlDT01QTEVURV9XSVRIKCJFWENFUFQgKCBTRVFVRU5DRSIpOworCWVsc2UgaWYg KE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJTRVQiLCAiQUxMIiwg IlNFUVVFTkNFUyIsICJFWENFUFQiKSkKKwkJQ09NUExFVEVfV0lUSCgiKCBTRVFVRU5DRSIpOwor CWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJTRVQi LCAiQUxMIiwgIlNFUVVFTkNFUyIsICJFWENFUFQiLCAiKCIpKQorCQlDT01QTEVURV9XSVRIKCJT RVFVRU5DRSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0 Y2hBbnksICJTRVQiLCAiQUxMIiwgIlNFUVVFTkNFUyIsICJFWENFUFQiLCAiKCIsICJTRVFVRU5D RSIpKQorCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl9zZXF1 ZW5jZXMpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hB bnksICJTRVQiLCAiQUxMIiwgIlNFUVVFTkNFUyIsICJFWENFUFQiLCAiKCIsICJTRVFVRU5DRSIs IE1hdGNoQW55TikgJiYgZW5kc193aXRoKHByZXZfd2QsICcsJykpCisJCUNPTVBMRVRFX1dJVEhf U0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3NlcXVlbmNlcyk7CisJZWxzZSBpZiAoTWF0 Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIlNFVCIsICJBTEwiLCAiU0VR VUVOQ0VTIiwgIkVYQ0VQVCIsICIoIiwgIlNFUVVFTkNFIiwgTWF0Y2hBbnlOKSAmJiAhZW5kc193 aXRoKHByZXZfd2QsICcsJykpCisJCUNPTVBMRVRFX1dJVEgoIikiKTsKIAllbHNlIGlmIChNYXRj aGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQUREfERST1B8U0VUIiwgIlRB QkxFUyIsICJJTiIsICJTQ0hFTUEiKSkKIAkJQ09NUExFVEVfV0lUSF9RVUVSWV9QTFVTKFF1ZXJ5 X2Zvcl9saXN0X29mX3NjaGVtYXMKIAkJCQkJCQkJICIgQU5EIG5zcG5hbWUgTk9UIExJS0UgRSdw Z1xcXFxfJSUnIiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRp b24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAppbmRleCA0OWMyOWE4 NzYzMC4uMjFhMTUyN2JjYzcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVi bGljYXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKQEAg LTE3OCw5ICsxNzgsMTEgQEAgdHlwZWRlZiBlbnVtIFB1YmxpY2F0aW9uUGFydE9wdAogZXh0ZXJu IExpc3QgKkdldEluY2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLAogCQkJCQkJ CQkJCQkgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KTsKIGV4dGVybiBMaXN0ICpHZXRF eGNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwKLQkJCQkJCQkJCQkJIFB1Ymxp Y2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCk7CisJCQkJCQkJCQkJCSBQdWJsaWNhdGlvblBhcnRP cHQgcHViX3BhcnRvcHQsCisJCQkJCQkJCQkJCSBjaGFyIHB1YnJlbGtpbmQpOwogZXh0ZXJuIExp c3QgKkdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucyh2b2lkKTsKLWV4dGVybiBMaXN0ICpHZXRBbGxQ dWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIGNoYXIgcmVsa2luZCwgYm9vbCBwdWJ2aWFy b290KTsKK2V4dGVybiBMaXN0ICpHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQs IGNoYXIgcHVicmVsa2luZCwKKwkJCQkJCQkJCQlib29sIHB1YnZpYXJvb3QpOwogZXh0ZXJuIExp c3QgKkdldFB1YmxpY2F0aW9uU2NoZW1hcyhPaWQgcHViaWQpOwogZXh0ZXJuIExpc3QgKkdldFNj aGVtYVB1YmxpY2F0aW9ucyhPaWQgc2NoZW1haWQpOwogZXh0ZXJuIExpc3QgKkdldFNjaGVtYVB1 YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBzY2hlbWFpZCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9wdWJsaWNhdGlvbi5vdXQKaW5kZXggMTVjMzBmZmVlZmMuLjI2YjJmNTdmZDRmIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dApAQCAtNTYyLDE2ICs1NjIsMzIg QEAgSW5jbHVkZWQgaW4gcHVibGljYXRpb25zOgogRXhjbHVkZWQgZnJvbSBwdWJsaWNhdGlvbnM6 CiAgICAgInJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczMiCiAKKy0tIE1vZGlmeSB0aGUgc2Vx dWVuY2UgbGlzdCBpbiB0aGUgRVhDRVBUIGNsYXVzZQorQUxURVIgUFVCTElDQVRJT04gcmVncmVz c19wdWJfZm9yYWxsc2VxdWVuY2VzMyBTRVQgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNFUVVFTkNF IHJlZ3Jlc3NfcHViX3NlcTApOworXGRScCsgcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzMwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGlj YXRpb24gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzMworICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCB8IERlc2Ny aXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmICAgICAgICB8IAor RXhjZXB0IHNlcXVlbmNlczoKKyAgICAicHVibGljLnJlZ3Jlc3NfcHViX3NlcTAiCisKIFJFU0VU IGNsaWVudF9taW5fbWVzc2FnZXM7CiAtLSBmYWlsIC0gc2VxdWVuY2Ugb2JqZWN0IGlzIHNwZWNp ZmllZCBpbiBFWENFUFQgdGFibGUgbGlzdAogQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHVi X2ZvcmFsbHNlcXVlbmNlczQgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIChUQUJMRSByZWdyZXNzX3B1 Yl9zZXEwKTsKIEVSUk9SOiAgY2Fubm90IHNwZWNpZnkgInB1YmxpYy5yZWdyZXNzX3B1Yl9zZXEw IiBpbiB0aGUgcHVibGljYXRpb24gRVhDRVBUIChUQUJMRSkgY2xhdXNlCiBERVRBSUw6ICBUaGlz IG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBzZXF1ZW5jZXMuCitBTFRFUiBQVUJMSUNB VElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMzIFNFVCBBTEwgVEFCTEVTIEVYQ0VQVCAo VEFCTEUgcmVncmVzc19wdWJfc2VxMCk7CitFUlJPUjogIGNhbm5vdCBzcGVjaWZ5ICJwdWJsaWMu cmVncmVzc19wdWJfc2VxMCIgaW4gdGhlIHB1YmxpY2F0aW9uIEVYQ0VQVCAoVEFCTEUpIGNsYXVz ZQorREVUQUlMOiAgVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3Igc2VxdWVuY2Vz LgogLS0gZmFpbCAtIHRhYmxlIG9iamVjdCBpcyBzcGVjaWZpZWQgaW4gRVhDRVBUIHNlcXVlbmNl IGxpc3QKIENSRUFURSBUQUJMRSB0YWJfc2VxKGEgaW50KTsKIENSRUFURSBQVUJMSUNBVElPTiBy ZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXM0IEZPUiBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VR VUVOQ0UgdGFiX3NlcSk7CiBFUlJPUjogIGNhbm5vdCBzcGVjaWZ5ICJwdWJsaWMudGFiX3NlcSIg aW4gdGhlIHB1YmxpY2F0aW9uIEVYQ0VQVCAoU0VRVUVOQ0UpIGNsYXVzZQogREVUQUlMOiAgVGhp cyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgdGFibGVzLgorQUxURVIgUFVCTElDQVRJ T04gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzMyBTRVQgQUxMIFNFUVVFTkNFUyBFWENFUFQg KFNFUVVFTkNFIHRhYl9zZXEpOworRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSAicHVibGljLnRhYl9z ZXEiIGluIHRoZSBwdWJsaWNhdGlvbiBFWENFUFQgKFNFUVVFTkNFKSBjbGF1c2UKK0RFVEFJTDog IFRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRhYmxlcy4KIC0tIFRlc3QgY29t YmluYXRpb24gb2YgQUxMIFNFUVVFTkNFUyBhbmQgQUxMIFRBQkxFUyB3aXRoIEVYQ0VQVCBjbGF1 c2UKIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElP TiByZWdyZXNzX3B1Yl9mb3JfYWxsc2VxdWVuY2VzX2FsbHRhYmxlczEgRk9SIEFMTCBUQUJMRVMg RVhDRVBUIChUQUJMRSB0ZXN0cHViX3RibDEpLCBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVO Q0UgcmVncmVzc19wdWJfc2VxMCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9w dWJsaWNhdGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKaW5k ZXggZDQ3MjU1M2M3Y2QuLjk5OGFlM2U0ZTRmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC9wdWJsaWNhdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRp b24uc3FsCkBAIC0yNjEsMTQgKzI2MSwxOSBAQCBDUkVBVEUgUFVCTElDQVRJT04gcmVncmVzc19w dWJfZm9yYWxsc2VxdWVuY2VzMyBGT1IgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNFUVVFTgogLS0g Q2hlY2sgdGhhdCB0aGUgc2VxdWVuY2UgZGVzY3JpcHRpb24gc2hvd3MgdGhlIHB1YmxpY2F0aW9u cyB3aGVyZSBpdCBpcyBsaXN0ZWQKIC0tIGluIHRoZSBFWENFUFQgY2xhdXNlCiBcZCsgcmVncmVz c19wdWJfc2VxMAorLS0gTW9kaWZ5IHRoZSBzZXF1ZW5jZSBsaXN0IGluIHRoZSBFWENFUFQgY2xh dXNlCitBTFRFUiBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMzIFNFVCBB TEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0UgcmVncmVzc19wdWJfc2VxMCk7CitcZFJwKyBy ZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMzCiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwog CiAtLSBmYWlsIC0gc2VxdWVuY2Ugb2JqZWN0IGlzIHNwZWNpZmllZCBpbiBFWENFUFQgdGFibGUg bGlzdAogQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczQgRk9S IEFMTCBUQUJMRVMgRVhDRVBUIChUQUJMRSByZWdyZXNzX3B1Yl9zZXEwKTsKK0FMVEVSIFBVQkxJ Q0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczMgU0VUIEFMTCBUQUJMRVMgRVhDRVBU IChUQUJMRSByZWdyZXNzX3B1Yl9zZXEwKTsKIAogLS0gZmFpbCAtIHRhYmxlIG9iamVjdCBpcyBz cGVjaWZpZWQgaW4gRVhDRVBUIHNlcXVlbmNlIGxpc3QKIENSRUFURSBUQUJMRSB0YWJfc2VxKGEg aW50KTsKIENSRUFURSBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXM0IEZP UiBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0UgdGFiX3NlcSk7CitBTFRFUiBQVUJMSUNB VElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMzIFNFVCBBTEwgU0VRVUVOQ0VTIEVYQ0VQ VCAoU0VRVUVOQ0UgdGFiX3NlcSk7CiAKIC0tIFRlc3QgY29tYmluYXRpb24gb2YgQUxMIFNFUVVF TkNFUyBhbmQgQUxMIFRBQkxFUyB3aXRoIEVYQ0VQVCBjbGF1c2UKIFNFVCBjbGllbnRfbWluX21l c3NhZ2VzID0gJ0VSUk9SJzsKLS0gCjIuMzQuMQoK --0000000000004c318106537cd49c Content-Type: application/octet-stream; name="v9-0001-Support-EXCEPT-for-ALL-SEQUENCES-in-CREATE-PUBLIC.patch" Content-Disposition: attachment; filename="v9-0001-Support-EXCEPT-for-ALL-SEQUENCES-in-CREATE-PUBLIC.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mq0m8ydw0 RnJvbSAyZTY5N2YzODQ3ODY0NTgwYzcxODgwZjk2Y2U5ODY1MThjYzMyZWQ2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMjYgTWF5IDIwMjYgMTA6NTE6MjYgKzA1MzAKU3ViamVjdDogW1BBVENIIHY5 IDEvMl0gU3VwcG9ydCBFWENFUFQgZm9yIEFMTCBTRVFVRU5DRVMgaW4gQ1JFQVRFIFBVQkxJQ0FU SU9OCgpFeHRlbmQgQ1JFQVRFIFBVQkxJQ0FUSU9OIC4uLiBGT1IgQUxMIFNFUVVFTkNFUyB0byBz dXBwb3J0IHRoZQpFWENFUFQgc3ludGF4LiBUaGlzIGFsbG93cyBvbmUgb3IgbW9yZSBzZXF1ZW5j ZXMgdG8gYmUgZXhjbHVkZWQuIFRoZQpwdWJsaXNoZXIgd2lsbCBub3Qgc2VuZCB0aGUgZGF0YSBv ZiBleGNsdWRlZCBzZXF1ZW5jZXMgdG8gdGhlIHN1YnNjcmliZXIuCgpFeGFtcGxlOgpDUkVBVEUg UFVCTElDQVRJT04gcHViMSBGT1IgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNFUVVFTkNFIHMxLCBz Mik7Ci0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgfCAgIDgg Ky0KIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgICAgIHwgICA2ICstCiBk b2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sICB8ICAzNyArKysrKystLQog c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jICAgICAgfCAgNjggKysrKysrKyst LS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgICAgfCAxMDkgKysr KysrKysrKysrLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAg ICAgICB8IDExMSArKysrKysrKysrKysrKy0tLS0tLS0tCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5jICAgICAgICAgICAgICAgICB8ICA1NiArKysrKysrKy0tLQogc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuaCAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3Bn X2R1bXAucGwgICAgICAgICAgfCAgMjIgKysrKysKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAg ICAgICAgICAgICAgICAgIHwgIDc0ICsrKysrKysrKysrKystLQogc3JjL2Jpbi9wc3FsL3RhYi1j b21wbGV0ZS5pbi5jICAgICAgICAgICAgfCAgMTIgKysrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3B1YmxpY2F0aW9uLmggICAgICB8ICAgNyArLQogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rl cy5oICAgICAgICAgICAgfCAgMTEgKystCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1Ymxp Y2F0aW9uLm91dCB8ICA1OSArKysrKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1Ymxp Y2F0aW9uLnNxbCAgICAgIHwgIDI4ICsrKysrLQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3 X2V4Y2VwdC5wbCAgICAgfCAgNzUgKysrKysrKysrKysrKysrCiBzcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdCAgICAgICAgICB8ICAgMiArLQogMTcgZmlsZXMgY2hhbmdlZCwgNTM0IGlu c2VydGlvbnMoKyksIDE1MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv Y2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IDRiNDc0YzEz OTE3Li40M2EzNTY2ZGRhMiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTcwOTksNyArNzA5OSw3IEBAIFND UkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNl YWJsZT46PHJlcGxhY2VhYmxlPiZsCiAgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlua2VuZD0i Y2F0YWxvZy1wZy1jbGFzcyI+PHN0cnVjdG5hbWU+cGdfY2xhc3M8L3N0cnVjdG5hbWU+PC9saW5r Pi48c3RydWN0ZmllbGQ+b2lkPC9zdHJ1Y3RmaWVsZD4pCiAgICAgICA8L3BhcmE+CiAgICAgICA8 cGFyYT4KLSAgICAgICBSZWZlcmVuY2UgdG8gdGFibGUKKyAgICAgICBSZWZlcmVuY2UgdG8gdGFi bGUgb3Igc2VxdWVuY2UKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApAQCAt NzEwOCw4ICs3MTA4LDggQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlv biBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKICAgICAgIDxzdHJ1Y3Rm aWVsZD5wcmV4Y2VwdDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJvb2w8L3R5cGU+CiAgICAgICA8L3Bh cmE+CiAgICAgICA8cGFyYT4KLSAgICAgICBUcnVlIGlmIHRoZSB0YWJsZSBpcyBleGNsdWRlZCBm cm9tIHRoZSBwdWJsaWNhdGlvbi4gU2VlCi0gICAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0 ZXB1YmxpY2F0aW9uLXBhcmFtcy1mb3ItZXhjZXB0LXRhYmxlIj48bGl0ZXJhbD5FWENFUFQ8L2xp dGVyYWw+PC9saW5rPi4KKyAgICAgICBUcnVlIGlmIHRoZSB0YWJsZSBvciBzZXF1ZW5jZSBpcyBl eGNsdWRlZCBmcm9tIHRoZSBwdWJsaWNhdGlvbi4gU2VlCisgICAgICAgPGxpbmsgbGlua2VuZD0i c3FsLWNyZWF0ZXB1YmxpY2F0aW9uLXBhcmFtcy1mb3ItZXhjZXB0Ij48bGl0ZXJhbD5FWENFUFQ8 L2xpdGVyYWw+PC9saW5rPi4KICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApA QCAtNzExOCw3ICs3MTE4LDcgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJh dGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKICAgICAgIDxzdHJ1 Y3RmaWVsZD5wcnF1YWw8L3N0cnVjdGZpZWxkPiA8dHlwZT5wZ19ub2RlX3RyZWU8L3R5cGU+CiAg ICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT5FeHByZXNzaW9uIHRyZWUgKGluIDxmdW5jdGlvbj5u b2RlVG9TdHJpbmcoKTwvZnVuY3Rpb24+Ci0gICAgICByZXByZXNlbnRhdGlvbikgZm9yIHRoZSBy ZWxhdGlvbidzIHB1YmxpY2F0aW9uIHF1YWxpZnlpbmcgY29uZGl0aW9uLiBOdWxsCisgICAgICBy ZXByZXNlbnRhdGlvbikgZm9yIHRoZSB0YWJsZSdzIHB1YmxpY2F0aW9uIHF1YWxpZnlpbmcgY29u ZGl0aW9uLiBOdWxsCiAgICAgICBpZiB0aGVyZSBpcyBubyBwdWJsaWNhdGlvbiBxdWFsaWZ5aW5n IGNvbmRpdGlvbi48L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNh bC1yZXBsaWNhdGlvbi5zZ21sCmluZGV4IDllNzg2ODQ4N2RlLi5lYjBiNjY0OTFkMyAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCkBAIC0xMTksNyArMTE5LDExIEBACiAgICA8 eHJlZiBsaW5rZW5kPSJsb2dpY2FsLXJlcGxpY2F0aW9uLXNlcXVlbmNlcyIvPi4gV2hlbiBhIHB1 YmxpY2F0aW9uIGlzCiAgICBjcmVhdGVkIHdpdGggPGxpdGVyYWw+Rk9SIEFMTCBUQUJMRVM8L2xp dGVyYWw+LCBhIHRhYmxlIG9yIHNldCBvZiB0YWJsZXMgY2FuCiAgICBiZSBleHBsaWNpdGx5IGV4 Y2x1ZGVkIGZyb20gcHVibGljYXRpb24gdXNpbmcgdGhlCi0gICA8bGluayBsaW5rZW5kPSJzcWwt Y3JlYXRlcHVibGljYXRpb24tcGFyYW1zLWZvci1leGNlcHQtdGFibGUiPjxsaXRlcmFsPkVYQ0VQ VDwvbGl0ZXJhbD48L2xpbms+CisgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlcHVibGljYXRp b24tcGFyYW1zLWZvci1leGNlcHQiPjxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD48L2xpbms+Cisg ICBjbGF1c2UuIFNpbWlsYXJseSwgd2hlbiBhIHB1YmxpY2F0aW9uIGlzIGNyZWF0ZWQgd2l0aAor ICAgPGxpdGVyYWw+Rk9SIEFMTCBTRVFVRU5DRVM8L2xpdGVyYWw+LCBhIHNlcXVlbmNlIG9yIHNl dCBvZiBzZXF1ZW5jZXMgY2FuIGJlCisgICBleHBsaWNpdGx5IGV4Y2x1ZGVkIGZyb20gcHVibGlj YXRpb24gdXNpbmcgdGhlCisgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlcHVibGljYXRpb24t cGFyYW1zLWZvci1leGNlcHQiPjxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD48L2xpbms+CiAgICBj bGF1c2UuCiAgIDwvcGFyYT4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf cHVibGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNn bWwKaW5kZXggZjgyZDY0MGU2Y2EuLmRmNzM2ZTc0ZDJmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3B1YmxpY2F0aW9uLnNnbWwKQEAgLTMzLDcgKzMzLDcgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9O IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KIDxwaHJh c2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9hbGxfb2Jq ZWN0PC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCiAgICAgQUxMIFRBQkxFUyBb IEVYQ0VQVCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNlcHRfdGFibGVfb2Jq ZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdCi0gICAgQUxMIFNFUVVFTkNFUworICAgIEFM TCBTRVFVRU5DRVMgWyBFWENFUFQgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhj ZXB0X3NlcXVlbmNlX29iamVjdDwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXQogCiA8cGhyYXNl PmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfYW5kX2NvbHVtbnM8L3Jl cGxhY2VhYmxlPiBpczo8L3BocmFzZT4KIApAQCAtNDYsNiArNDYsMTAgQEAgQ1JFQVRFIFBVQkxJ Q0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4K IDxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9vYmplY3Q8 L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KIAogICAgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXQorCis8cGhyYXNl PmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhjZXB0X3NlcXVlbmNlX29iamVj dDwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgorCisgICAgU0VRVUVOQ0UgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnNlcXVlbmNlX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXQog PC9zeW5vcHNpcz4KICA8L3JlZnN5bm9wc2lzZGl2PgogCkBAIC0xODksMTUgKzE5MywxOCBAQCBD UkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3Jl cGxhY2VhYmxlPgogICAgICA8cGFyYT4KICAgICAgIE9ubHkgcGVyc2lzdGVudCBzZXF1ZW5jZXMg YXJlIGluY2x1ZGVkIGluIHRoZSBwdWJsaWNhdGlvbi4gVGVtcG9yYXJ5CiAgICAgICBzZXF1ZW5j ZXMgYW5kIHVubG9nZ2VkIHNlcXVlbmNlcyBhcmUgZXhjbHVkZWQgZnJvbSB0aGUgcHVibGljYXRp b24uCisgICAgICBTZXF1ZW5jZXMgbGlzdGVkIGluIHRoZSA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVy YWw+IGNsYXVzZSBhcmUgZXhjbHVkZWQgZnJvbQorICAgICAgdGhlIHB1YmxpY2F0aW9uLgogICAg ICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCi0gICA8dmFy bGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRlcHVibGljYXRpb24tcGFyYW1zLWZvci1leGNlcHQtdGFi bGUiPgorICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0ZXB1YmxpY2F0aW9uLXBhcmFtcy1m b3ItZXhjZXB0Ij4KICAgICA8dGVybT48bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+PC90ZXJtPgog ICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+Ci0gICAgICBUaGlzIGNsYXVzZSBzcGVjaWZpZXMg YSBsaXN0IG9mIHRhYmxlcyB0byBiZSBleGNsdWRlZCBmcm9tIHRoZQorICAgICAgVGhpcyBjbGF1 c2Ugc3BlY2lmaWVzIHRoZSB0YWJsZXMgb3Igc2VxdWVuY2VzIHRvIGJlIGV4Y2x1ZGVkIGZyb20g YW4KKyAgICAgIDxsaXRlcmFsPkFMTCBUQUJMRVM8L2xpdGVyYWw+IG9yIDxsaXRlcmFsPkFMTCBT RVFVRU5DRVM8L2xpdGVyYWw+CiAgICAgICBwdWJsaWNhdGlvbi4KICAgICAgPC9wYXJhPgogICAg ICA8cGFyYT4KQEAgLTIxNyw5ICsyMjQsMTAgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICAgPC9wYXJhPgog ICAgICA8cGFyYT4KICAgICAgIFRoZXJlIGNhbiBiZSBhIGNhc2Ugd2hlcmUgYSBzdWJzY3JpcHRp b24gaW5jbHVkZXMgbXVsdGlwbGUgcHVibGljYXRpb25zLgotICAgICAgSW4gc3VjaCBhIGNhc2Us IGEgdGFibGUgb3IgcGFydGl0aW9uIHRoYXQgaXMgaW5jbHVkZWQgaW4gb25lIHB1YmxpY2F0aW9u Ci0gICAgICBidXQgZXhjbHVkZWQgKGV4cGxpY2l0bHkgb3IgaW1wbGljaXRseSkgYnkgdGhlIDxs aXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4KLSAgICAgIGNsYXVzZSBvZiBhbm90aGVyIGlzIGNvbnNp ZGVyZWQgaW5jbHVkZWQgZm9yIHJlcGxpY2F0aW9uLgorICAgICAgSW4gc3VjaCBhIGNhc2UsIGEg dGFibGUsIHBhcnRpdGlvbiBvciBzZXF1ZW5jZSB0aGF0IGlzIGluY2x1ZGVkIGluIG9uZQorICAg ICAgcHVibGljYXRpb24gYnV0IGV4Y2x1ZGVkIChleHBsaWNpdGx5IG9yIGltcGxpY2l0bHkpIGJ5 IHRoZQorICAgICAgPGxpdGVyYWw+RVhDRVBUPC9saXRlcmFsPiBjbGF1c2Ugb2YgYW5vdGhlciBp cyBjb25zaWRlcmVkIGluY2x1ZGVkIGZvcgorICAgICAgcmVwbGljYXRpb24uCiAgICAgIDwvcGFy YT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CkBAIC01NDcsMTEgKzU1NSwy MCBAQCBDUkVBVEUgUFVCTElDQVRJT04gYWxsX3RhYmxlc19leGNlcHQgRk9SIEFMTCBUQUJMRVMg RVhDRVBUIChUQUJMRSB1c2VycywgZGVwYXJ0bQogICA8L3BhcmE+CiAKICAgPHBhcmE+Ci0gICBD cmVhdGUgYSBwdWJsaWNhdGlvbiB0aGF0IHB1Ymxpc2hlcyBhbGwgc2VxdWVuY2VzIGZvciBzeW5j aHJvbml6YXRpb24sIGFuZAotICAgYWxsIGNoYW5nZXMgaW4gYWxsIHRhYmxlcyBleGNlcHQgPHN0 cnVjdG5hbWU+dXNlcnM8L3N0cnVjdG5hbWU+IGFuZAotICAgPHN0cnVjdG5hbWU+ZGVwYXJ0bWVu dHM8L3N0cnVjdG5hbWU+OgorICAgQ3JlYXRlIGEgcHVibGljYXRpb24gdGhhdCBwdWJsaXNoZXMg YWxsIHNlcXVlbmNlcyBmb3Igc3luY2hyb25pemF0aW9uIGV4Y2VwdAorICAgPHN0cnVjdG5hbWU+ c2VxMTwvc3RydWN0bmFtZT4gYW5kIDxzdHJ1Y3RuYW1lPnNlcTI8L3N0cnVjdG5hbWU+OgorPHBy b2dyYW1saXN0aW5nPgorQ1JFQVRFIFBVQkxJQ0FUSU9OIGFsbF9zZXF1ZW5jZXNfZXhjZXB0IEZP UiBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0Ugc2VxMSwgc2VxMik7Cis8L3Byb2dyYW1s aXN0aW5nPgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBDcmVhdGUgYSBwdWJsaWNhdGlvbiB0 aGF0IHB1Ymxpc2hlcyBhbGwgc2VxdWVuY2VzIGZvciBzeW5jaHJvbml6YXRpb24gZXhjZXB0Cisg ICA8c3RydWN0bmFtZT5zZXExPC9zdHJ1Y3RuYW1lPiBhbmQgPHN0cnVjdG5hbWU+c2VxMjwvc3Ry dWN0bmFtZT4sIGFuZCBhbGwKKyAgIGNoYW5nZXMgaW4gYWxsIHRhYmxlcyBleGNlcHQKKyAgIDxz dHJ1Y3RuYW1lPnVzZXJzPC9zdHJ1Y3RuYW1lPiBhbmQgPHN0cnVjdG5hbWU+ZGVwYXJ0bWVudHM8 L3N0cnVjdG5hbWU+OgogPHByb2dyYW1saXN0aW5nPgotQ1JFQVRFIFBVQkxJQ0FUSU9OIGFsbF9z ZXF1ZW5jZXNfdGFibGVzX2V4Y2VwdCBGT1IgQUxMIFNFUVVFTkNFUywgQUxMIFRBQkxFUyBFWENF UFQgKFRBQkxFIHVzZXJzLCBkZXBhcnRtZW50cyk7CitDUkVBVEUgUFVCTElDQVRJT04gYWxsX3Nl cXVlbmNlc190YWJsZXNfZXhjZXB0IEZPUiBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0Ug c2VxMSwgc2VxMiksIEFMTCBUQUJMRVMgRVhDRVBUIChUQUJMRSB1c2VycywgZGVwYXJ0bWVudHMp OwogPC9wcm9ncmFtbGlzdGluZz4KICAgPC9wYXJhPgogIDwvcmVmc2VjdDE+CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX3B1YmxpY2F0aW9uLmMKaW5kZXggNWM0NTdkOWFjYTguLjVmZDJjMjc5NWFiIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCkBAIC00OSwyMCArNDksMjggQEAgdHlwZWRl ZiBzdHJ1Y3QKIH0gcHVibGlzaGVkX3JlbDsKIAogLyoKLSAqIENoZWNrIGlmIHJlbGF0aW9uIGNh biBiZSBpbiBnaXZlbiBwdWJsaWNhdGlvbiBhbmQgdGhyb3dzIGFwcHJvcHJpYXRlCi0gKiBlcnJv ciBpZiBub3QuCisgKiBDaGVjayBpZiB0aGUgdGFyZ2V0IHJlbGF0aW9uIGlzIGFsbG93ZWQgdG8g YmUgc3BlY2lmaWVkIGluIHRoZSBnaXZlbgorICogcHVibGljYXRpb24gYW5kIHRocm93IGFuIGVy cm9yIGlmIG5vdC4KKyAqCisgKiAncHVicmVsa2luZCcgaXMgdGhlIHJlbGtpbmQgYWNjZXB0ZWQg YnkgdGhlIHB1YmxpY2F0aW9uIGNsYXVzZSwKKyAqIHdoaWxlICd0YXJnZXRyZWxraW5kJyBpcyB0 aGUgcmVsa2luZCBvZiB0aGUgcmVsYXRpb24gYmVpbmcgYWRkZWQuCisgKiBFcnJvciBpZiB0aGV5 IGFyZSBub3QgY29tcGF0aWJsZS4KICAqLwogc3RhdGljIHZvaWQKLWNoZWNrX3B1YmxpY2F0aW9u X2FkZF9yZWxhdGlvbihQdWJsaWNhdGlvblJlbEluZm8gKnByaSkKK2NoZWNrX3B1YmxpY2F0aW9u X2FkZF9yZWxhdGlvbihQdWJsaWNhdGlvblJlbEluZm8gKnByaSwgY2hhciBwdWJyZWxraW5kKQog ewogCVJlbGF0aW9uCXRhcmdldHJlbCA9IHByaS0+cmVsYXRpb247CisJY2hhcgkJdGFyZ2V0cmVs a2luZCA9IFJlbGF0aW9uR2V0Rm9ybSh0YXJnZXRyZWwpLT5yZWxraW5kOwogCWNvbnN0IGNoYXIg KnJlbG5hbWU7CiAJY29uc3QgY2hhciAqZXJyb3Jtc2c7CiAKIAlpZiAocHJpLT5leGNlcHQpCiAJ ewogCQlyZWxuYW1lID0gUmVsYXRpb25HZXRRdWFsaWZpZWRSZWxhdGlvbk5hbWUodGFyZ2V0cmVs KTsKLQkJZXJyb3Jtc2cgPSBnZXR0ZXh0X25vb3AoImNhbm5vdCBzcGVjaWZ5IHJlbGF0aW9uIFwi JXNcIiBpbiB0aGUgcHVibGljYXRpb24gRVhDRVBUIGNsYXVzZSIpOworCQlpZiAocHVicmVsa2lu ZCA9PSBSRUxLSU5EX1NFUVVFTkNFKQorCQkJZXJyb3Jtc2cgPSBnZXR0ZXh0X25vb3AoImNhbm5v dCBzcGVjaWZ5IFwiJXNcIiBpbiB0aGUgcHVibGljYXRpb24gRVhDRVBUIChTRVFVRU5DRSkgY2xh dXNlIik7CisJCWVsc2UKKwkJCWVycm9ybXNnID0gZ2V0dGV4dF9ub29wKCJjYW5ub3Qgc3BlY2lm eSBcIiVzXCIgaW4gdGhlIHB1YmxpY2F0aW9uIEVYQ0VQVCAoVEFCTEUpIGNsYXVzZSIpOwogCX0K IAllbHNlCiAJewpAQCAtNzcsMTMgKzg1LDIzIEBAIGNoZWNrX3B1YmxpY2F0aW9uX2FkZF9yZWxh dGlvbihQdWJsaWNhdGlvblJlbEluZm8gKnByaSkKIAkJCQkgZXJybXNnKGVycm9ybXNnLCByZWxu YW1lKSwKIAkJCQkgZXJyZGV0YWlsKCJUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZv ciBpbmRpdmlkdWFsIHBhcnRpdGlvbnMuIikpKTsKIAotCS8qIE11c3QgYmUgYSByZWd1bGFyIG9y IHBhcnRpdGlvbmVkIHRhYmxlICovCi0JaWYgKFJlbGF0aW9uR2V0Rm9ybSh0YXJnZXRyZWwpLT5y ZWxraW5kICE9IFJFTEtJTkRfUkVMQVRJT04gJiYKLQkJUmVsYXRpb25HZXRGb3JtKHRhcmdldHJl bCktPnJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwkvKgorCSAqIE11c3Qg YmUgYSByZWd1bGFyIG9yIHBhcnRpdGlvbmVkIHRhYmxlIHdoZW4gc3BlY2lmaWVkIGluIEZPUiBU QUJMRSBvcgorCSAqIEVYQ0VQVCB0YWJsZSBsaXN0CisJICovCisJaWYgKHB1YnJlbGtpbmQgPT0g UkVMS0lORF9SRUxBVElPTiAmJiB0YXJnZXRyZWxraW5kICE9IFJFTEtJTkRfUkVMQVRJT04gJiYK KwkJdGFyZ2V0cmVsa2luZCAhPSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAor CQkJCSBlcnJtc2coZXJyb3Jtc2csIHJlbG5hbWUpLAorCQkJCSBlcnJkZXRhaWxfcmVsa2luZF9u b3Rfc3VwcG9ydGVkKHRhcmdldHJlbGtpbmQpKSk7CisKKwkvKiBNdXN0IGJlIGEgc2VxdWVuY2Ug aWYgc3BlY2lmaWVkIGluIEVYQ0VQVCBzZXF1ZW5jZSBsaXN0ICovCisJaWYgKHB1YnJlbGtpbmQg PT0gUkVMS0lORF9TRVFVRU5DRSAmJiB0YXJnZXRyZWxraW5kICE9IFJFTEtJTkRfU0VRVUVOQ0Up CiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRF Ul9WQUxVRSksCiAJCQkJIGVycm1zZyhlcnJvcm1zZywgcmVsbmFtZSksCi0JCQkJIGVycmRldGFp bF9yZWxraW5kX25vdF9zdXBwb3J0ZWQoUmVsYXRpb25HZXRGb3JtKHRhcmdldHJlbCktPnJlbGtp bmQpKSk7CisJCQkJIGVycmRldGFpbF9yZWxraW5kX25vdF9zdXBwb3J0ZWQodGFyZ2V0cmVsa2lu ZCkpKTsKIAogCS8qIENhbid0IGJlIHN5c3RlbSB0YWJsZSAqLwogCWlmIChJc0NhdGFsb2dSZWxh dGlvbih0YXJnZXRyZWwpKQpAQCAtOTcsMTEgKzExNSwxNSBAQCBjaGVja19wdWJsaWNhdGlvbl9h ZGRfcmVsYXRpb24oUHVibGljYXRpb25SZWxJbmZvICpwcmkpCiAJCWVyZXBvcnQoRVJST1IsCiAJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJIGVycm1z ZyhlcnJvcm1zZywgcmVsbmFtZSksCisJCQkJIHRhcmdldHJlbGtpbmQgPT0gUkVMS0lORF9TRVFV RU5DRSA/CisJCQkJIGVycmRldGFpbCgiVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBm b3IgdGVtcG9yYXJ5IHNlcXVlbmNlcy4iKSA6CiAJCQkJIGVycmRldGFpbCgiVGhpcyBvcGVyYXRp b24gaXMgbm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYXJ5IHRhYmxlcy4iKSkpOwogCWVsc2UgaWYg KHRhcmdldHJlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9VTkxP R0dFRCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFS QU1FVEVSX1ZBTFVFKSwKIAkJCQkgZXJybXNnKGVycm9ybXNnLCByZWxuYW1lKSwKKwkJCQkgdGFy Z2V0cmVsa2luZCA9PSBSRUxLSU5EX1NFUVVFTkNFID8KKwkJCQkgZXJyZGV0YWlsKCJUaGlzIG9w ZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciB1bmxvZ2dlZCBzZXF1ZW5jZXMuIikgOgogCQkJ CSBlcnJkZXRhaWwoIlRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHVubG9nZ2Vk IHRhYmxlcy4iKSkpOwogfQogCkBAIC01MjEsNyArNTQzLDggQEAgYXR0bnVtc3RvaW50MnZlY3Rv cihCaXRtYXBzZXQgKmF0dHJzKQogICovCiBPYmplY3RBZGRyZXNzCiBwdWJsaWNhdGlvbl9hZGRf cmVsYXRpb24oT2lkIHB1YmlkLCBQdWJsaWNhdGlvblJlbEluZm8gKnByaSwKLQkJCQkJCSBib29s IGlmX25vdF9leGlzdHMsIEFsdGVyUHVibGljYXRpb25TdG10ICphbHRlcl9zdG10KQorCQkJCQkJ IGJvb2wgaWZfbm90X2V4aXN0cywgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKmFsdGVyX3N0bXQsCisJ CQkJCQkgY2hhciBwdWJyZWxraW5kKQogewogCVJlbGF0aW9uCXJlbDsKIAlIZWFwVHVwbGUJdHVw OwpAQCAtNTU5LDcgKzU4Miw3IEBAIHB1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihPaWQgcHViaWQs IFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpLAogCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo dGFyZ2V0cmVsKSwgcHViLT5uYW1lKSkpOwogCX0KIAotCWNoZWNrX3B1YmxpY2F0aW9uX2FkZF9y ZWxhdGlvbihwcmkpOworCWNoZWNrX3B1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihwcmksIHB1YnJl bGtpbmQpOwogCiAJLyogVmFsaWRhdGUgYW5kIHRyYW5zbGF0ZSBjb2x1bW4gbmFtZXMgaW50byBh IEJpdG1hcHNldCBvZiBhdHRudW1zLiAqLwogCWF0dG51bXMgPSBwdWJfY29sbGlzdF92YWxpZGF0 ZShwcmktPnJlbGF0aW9uLCBwcmktPmNvbHVtbnMpOwpAQCAtOTc5LDE1ICsxMDAyLDE0IEBAIEdl dEluY2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRP cHQgcHViX3BhcnRvcHQpCiB9CiAKIC8qCi0gKiBHZXRzIGxpc3Qgb2YgdGFibGUgb2lkcyB0aGF0 IHdlcmUgc3BlY2lmaWVkIGluIHRoZSBFWENFUFQgY2xhdXNlIGZvciBhCi0gKiBwdWJsaWNhdGlv bi4KLSAqCi0gKiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgRk9SIEFMTCBUQUJMRVMgcHVibGlj YXRpb25zLgorICogR2V0cyBsaXN0IG9mIHJlbGF0aW9uIG9pZHMgdGhhdCB3ZXJlIHNwZWNpZmll ZCBpbiB0aGUgRVhDRVBUIGNsYXVzZSBmb3IgYQorICogJ0ZPUiBBTEwgVEFCTEVTJyBvciBhICdG T1IgQUxMIFNFUVVFTkNFUycgcHVibGljYXRpb24uCiAgKi8KIExpc3QgKgotR2V0RXhjbHVkZWRQ dWJsaWNhdGlvblRhYmxlcyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9w dCkKK0dldEV4Y2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlv blBhcnRPcHQgcHViX3BhcnRvcHQpCiB7Ci0JQXNzZXJ0KEdldFB1YmxpY2F0aW9uKHB1YmlkKS0+ YWxsdGFibGVzKTsKKwlBc3NlcnQoR2V0UHVibGljYXRpb24ocHViaWQpLT5hbGx0YWJsZXMgfHwK KwkJICAgR2V0UHVibGljYXRpb24ocHViaWQpLT5hbGxzZXF1ZW5jZXMpOwogCiAJcmV0dXJuIGdl dF9wdWJsaWNhdGlvbl9yZWxhdGlvbnMocHViaWQsIHB1Yl9wYXJ0b3B0LCB0cnVlKTsKIH0KQEAg LTEwMzgsOCArMTA2MCw5IEBAIEdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucyh2b2lkKQogICogcm9v dCBwYXJ0aXRpb25lZCB0YWJsZXMuIFRoaXMgaXMgbm90IGFwcGxpY2FibGUgdG8gRk9SIEFMTCBT RVFVRU5DRVMKICAqIHB1YmxpY2F0aW9uLgogICoKLSAqIEZvciBhIEZPUiBBTEwgVEFCTEVTIHB1 YmxpY2F0aW9uLCB0aGUgcmV0dXJuZWQgbGlzdCBleGNsdWRlcyB0YWJsZXMgbWVudGlvbmVkCi0g KiBpbiB0aGUgRVhDRVBUIGNsYXVzZS4KKyAqIEZvciBhIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0 aW9uLCB0aGUgcmV0dXJuZWQgbGlzdCBleGNsdWRlcyB0YWJsZXMKKyAqIG1lbnRpb25lZCBpbiB0 aGUgRVhDRVBUIGNsYXVzZS4gRm9yIGEgRk9SIEFMTCBTRVFVRU5DRVMgcHVibGljYXRpb24sCisg KiBpdCBleGNsdWRlcyBzZXF1ZW5jZXMgbWVudGlvbmVkIGluIHRoZSBFWENFUFQgY2xhdXNlLgog ICovCiBMaXN0ICoKIEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgY2hhciBy ZWxraW5kLCBib29sIHB1YnZpYXJvb3QpCkBAIC0xMDUzLDExICsxMDc2LDEwIEBAIEdldEFsbFB1 YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgY2hhciByZWxraW5kLCBib29sIHB1YnZpYXJv b3QpCiAKIAlBc3NlcnQoIShyZWxraW5kID09IFJFTEtJTkRfU0VRVUVOQ0UgJiYgcHVidmlhcm9v dCkpOwogCi0JLyogRVhDRVBUIGZpbHRlcmluZyBhcHBsaWVzIG9ubHkgdG8gcmVsYXRpb25zLCBu b3Qgc2VxdWVuY2VzICovCi0JaWYgKHJlbGtpbmQgPT0gUkVMS0lORF9SRUxBVElPTikKLQkJZXhj ZXB0bGlzdCA9IEdldEV4Y2x1ZGVkUHVibGljYXRpb25UYWJsZXMocHViaWQsIHB1YnZpYXJvb3Qg PwotCQkJCQkJCQkJCQkJICBQVUJMSUNBVElPTl9QQVJUX1JPT1QgOgotCQkJCQkJCQkJCQkJICBQ VUJMSUNBVElPTl9QQVJUX0xFQUYpOworCS8qIEVYQ0VQVCBmaWx0ZXJpbmcgYXBwbGllcyB0byB0 YWJsZXMgYW5kIHNlcXVlbmNlcyAqLworCWV4Y2VwdGxpc3QgPSBHZXRFeGNsdWRlZFB1YmxpY2F0 aW9uUmVsYXRpb25zKHB1YmlkLCBwdWJ2aWFyb290ID8KKwkJCQkJCQkJCQkJCSBQVUJMSUNBVElP Tl9QQVJUX1JPT1QgOgorCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfTEVBRik7CiAKIAlj bGFzc1JlbCA9IHRhYmxlX29wZW4oUmVsYXRpb25SZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2sp OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCmluZGV4IDQ0MGFkYjM1NmFk Li5lOTc1NzhkZGQ3NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRp b25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKQEAg LTYxLDExICs2MSwxMSBAQCB0eXBlZGVmIHN0cnVjdCByZl9jb250ZXh0CiAJT2lkCQkJcGFyZW50 aWQ7CQkvKiByZWxpZCBvZiB0aGUgcGFyZW50IHJlbGF0aW9uICovCiB9IHJmX2NvbnRleHQ7CiAK LXN0YXRpYyBMaXN0ICpPcGVuVGFibGVMaXN0KExpc3QgKnRhYmxlcyk7Ci1zdGF0aWMgdm9pZCBD bG9zZVRhYmxlTGlzdChMaXN0ICpyZWxzKTsKK3N0YXRpYyBMaXN0ICpPcGVuUmVsYXRpb25MaXN0 KExpc3QgKnRhYmxlcyk7CitzdGF0aWMgdm9pZCBDbG9zZVJlbGF0aW9uTGlzdChMaXN0ICpyZWxz KTsKIHN0YXRpYyB2b2lkIExvY2tTY2hlbWFMaXN0KExpc3QgKnNjaGVtYWxpc3QpOwotc3RhdGlj IHZvaWQgUHVibGljYXRpb25BZGRUYWJsZXMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBib29sIGlm X25vdF9leGlzdHMsCi0JCQkJCQkJCSBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCk7CitzdGF0 aWMgdm9pZCBQdWJsaWNhdGlvbkFkZFJlbGF0aW9ucyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJv b2wgaWZfbm90X2V4aXN0cywKKwkJCQkJCQkJCUFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBj aGFyIHB1YnJlbGtpbmQpOwogc3RhdGljIHZvaWQgUHVibGljYXRpb25Ecm9wVGFibGVzKE9pZCBw dWJpZCwgTGlzdCAqcmVscywgYm9vbCBtaXNzaW5nX29rKTsKIHN0YXRpYyB2b2lkIFB1YmxpY2F0 aW9uQWRkU2NoZW1hcyhPaWQgcHViaWQsIExpc3QgKnNjaGVtYXMsIGJvb2wgaWZfbm90X2V4aXN0 cywKIAkJCQkJCQkJICBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCk7CkBAIC0xNzcsMTEgKzE3 NywxMiBAQCBwYXJzZV9wdWJsaWNhdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAog LyoKICAqIENvbnZlcnQgdGhlIFB1YmxpY2F0aW9uT2JqU3BlY1R5cGUgbGlzdCBpbnRvIHNjaGVt YSBvaWQgbGlzdCBhbmQKLSAqIFB1YmxpY2F0aW9uVGFibGUgbGlzdC4KKyAqIFB1YmxpY2F0aW9u UmVsYXRpb24gbGlzdC4KICAqLwogc3RhdGljIHZvaWQKIE9iamVjdHNJblB1YmxpY2F0aW9uVG9P aWRzKExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgUGFyc2VTdGF0ZSAqcHN0YXRlLAotCQkJCQkJICAg TGlzdCAqKnJlbHMsIExpc3QgKipleGNlcHRyZWxzLCBMaXN0ICoqc2NoZW1hcykKKwkJCQkJCSAg IExpc3QgKipyZWxzLCBMaXN0ICoqZXhjZXB0dGJscywgTGlzdCAqKmV4Y2VwdHNlcXMsCisJCQkJ CQkgICBMaXN0ICoqc2NoZW1hcykKIHsKIAlMaXN0Q2VsbCAgICpjZWxsOwogCVB1YmxpY2F0aW9u T2JqU3BlYyAqcHVib2JqOwpAQCAtMTk5LDEyICsyMDAsMTYgQEAgT2JqZWN0c0luUHVibGljYXRp b25Ub09pZHMoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBQYXJzZVN0YXRlICpwc3RhdGUsCiAJCXN3 aXRjaCAocHVib2JqLT5wdWJvYmp0eXBlKQogCQl7CiAJCQljYXNlIFBVQkxJQ0FUSU9OT0JKX0VY Q0VQVF9UQUJMRToKLQkJCQlwdWJvYmotPnB1YnRhYmxlLT5leGNlcHQgPSB0cnVlOwotCQkJCSpl eGNlcHRyZWxzID0gbGFwcGVuZCgqZXhjZXB0cmVscywgcHVib2JqLT5wdWJ0YWJsZSk7CisJCQkJ cHVib2JqLT5wdWJyZWxhdGlvbi0+ZXhjZXB0ID0gdHJ1ZTsKKwkJCQkqZXhjZXB0dGJscyA9IGxh cHBlbmQoKmV4Y2VwdHRibHMsIHB1Ym9iai0+cHVicmVsYXRpb24pOworCQkJCWJyZWFrOworCQkJ Y2FzZSBQVUJMSUNBVElPTk9CSl9FWENFUFRfU0VRVUVOQ0U6CisJCQkJcHVib2JqLT5wdWJyZWxh dGlvbi0+ZXhjZXB0ID0gdHJ1ZTsKKwkJCQkqZXhjZXB0c2VxcyA9IGxhcHBlbmQoKmV4Y2VwdHNl cXMsIHB1Ym9iai0+cHVicmVsYXRpb24pOwogCQkJCWJyZWFrOwogCQkJY2FzZSBQVUJMSUNBVElP Tk9CSl9UQUJMRToKLQkJCQlwdWJvYmotPnB1YnRhYmxlLT5leGNlcHQgPSBmYWxzZTsKLQkJCQkq cmVscyA9IGxhcHBlbmQoKnJlbHMsIHB1Ym9iai0+cHVidGFibGUpOworCQkJCXB1Ym9iai0+cHVi cmVsYXRpb24tPmV4Y2VwdCA9IGZhbHNlOworCQkJCSpyZWxzID0gbGFwcGVuZCgqcmVscywgcHVi b2JqLT5wdWJyZWxhdGlvbik7CiAJCQkJYnJlYWs7CiAJCQljYXNlIFBVQkxJQ0FUSU9OT0JKX1RB QkxFU19JTl9TQ0hFTUE6CiAJCQkJc2NoZW1haWQgPSBnZXRfbmFtZXNwYWNlX29pZChwdWJvYmot Pm5hbWUsIGZhbHNlKTsKQEAgLTg0OSw3ICs4NTQsOCBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJz ZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAljaGFyCQlwdWJs aXNoX2dlbmVyYXRlZF9jb2x1bW5zOwogCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CiAJTGlzdAkgICAq cmVsYXRpb25zID0gTklMOwotCUxpc3QJICAgKmV4Y2VwdHJlbGF0aW9ucyA9IE5JTDsKKwlMaXN0 CSAgICpleGNlcHR0YmxzID0gTklMOworCUxpc3QJICAgKmV4Y2VwdHNlcXMgPSBOSUw7CiAJTGlz dAkgICAqc2NoZW1haWRsaXN0ID0gTklMOwogCiAJLyogbXVzdCBoYXZlIENSRUFURSBwcml2aWxl Z2Ugb24gZGF0YWJhc2UgKi8KQEAgLTkzNiwxOCArOTQyLDI3IEBAIENyZWF0ZVB1YmxpY2F0aW9u KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCiAJLyog QXNzb2NpYXRlIG9iamVjdHMgd2l0aCB0aGUgcHVibGljYXRpb24uICovCiAJT2JqZWN0c0luUHVi bGljYXRpb25Ub09pZHMoc3RtdC0+cHVib2JqZWN0cywgcHN0YXRlLCAmcmVsYXRpb25zLAotCQkJ CQkJCSAgICZleGNlcHRyZWxhdGlvbnMsICZzY2hlbWFpZGxpc3QpOworCQkJCQkJCSAgICZleGNl cHR0YmxzLCAmZXhjZXB0c2VxcywgJnNjaGVtYWlkbGlzdCk7CisKKwkvKiBQcm9jZXNzIEVYQ0VQ VCBzZXF1ZW5jZSBsaXN0ICovCisJaWYgKHN0bXQtPmZvcl9hbGxfc2VxdWVuY2VzICYmIGV4Y2Vw dHNlcXMgIT0gTklMKQorCXsKKwkJTGlzdAkgICAqcmVscyA9IE9wZW5SZWxhdGlvbkxpc3QoZXhj ZXB0c2Vxcyk7CisKKwkJUHVibGljYXRpb25BZGRSZWxhdGlvbnMocHVib2lkLCByZWxzLCB0cnVl LCBOVUxMLCBSRUxLSU5EX1NFUVVFTkNFKTsKKwkJQ2xvc2VSZWxhdGlvbkxpc3QocmVscyk7CisJ fQogCiAJaWYgKHN0bXQtPmZvcl9hbGxfdGFibGVzKQogCXsKIAkJLyogUHJvY2VzcyBFWENFUFQg dGFibGUgbGlzdCAqLwotCQlpZiAoZXhjZXB0cmVsYXRpb25zICE9IE5JTCkKKwkJaWYgKGV4Y2Vw dHRibHMgIT0gTklMKQogCQl7CiAJCQlMaXN0CSAgICpyZWxzOwogCi0JCQlyZWxzID0gT3BlblRh YmxlTGlzdChleGNlcHRyZWxhdGlvbnMpOwotCQkJUHVibGljYXRpb25BZGRUYWJsZXMocHVib2lk LCByZWxzLCB0cnVlLCBOVUxMKTsKLQkJCUNsb3NlVGFibGVMaXN0KHJlbHMpOworCQkJcmVscyA9 IE9wZW5SZWxhdGlvbkxpc3QoZXhjZXB0dGJscyk7CisJCQlQdWJsaWNhdGlvbkFkZFJlbGF0aW9u cyhwdWJvaWQsIHJlbHMsIHRydWUsIE5VTEwsIFJFTEtJTkRfUkVMQVRJT04pOworCQkJQ2xvc2VS ZWxhdGlvbkxpc3QocmVscyk7CiAJCX0KIAogCQkvKgpAQCAtOTY5LDcgKzk4NCw3IEBAIENyZWF0 ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpz dG10KQogCQl7CiAJCQlMaXN0CSAgICpyZWxzOwogCi0JCQlyZWxzID0gT3BlblRhYmxlTGlzdChy ZWxhdGlvbnMpOworCQkJcmVscyA9IE9wZW5SZWxhdGlvbkxpc3QocmVsYXRpb25zKTsKIAkJCVRy YW5zZm9ybVB1YldoZXJlQ2xhdXNlcyhyZWxzLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJ CQkJCSBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7CiAKQEAgLTk3Nyw4ICs5OTIsOCBAQCBD cmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3Rt dCAqc3RtdCkKIAkJCQkJCQkJCSAgIHNjaGVtYWlkbGlzdCAhPSBOSUwsCiAJCQkJCQkJCQkgICBw dWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7CiAKLQkJCVB1YmxpY2F0aW9uQWRkVGFibGVzKHB1 Ym9pZCwgcmVscywgdHJ1ZSwgTlVMTCk7Ci0JCQlDbG9zZVRhYmxlTGlzdChyZWxzKTsKKwkJCVB1 YmxpY2F0aW9uQWRkUmVsYXRpb25zKHB1Ym9pZCwgcmVscywgdHJ1ZSwgTlVMTCwgUkVMS0lORF9S RUxBVElPTik7CisJCQlDbG9zZVJlbGF0aW9uTGlzdChyZWxzKTsKIAkJfQogCiAJCWlmIChzY2hl bWFpZGxpc3QgIT0gTklMKQpAQCAtMTI1NSw3ICsxMjcwLDcgQEAgQWx0ZXJQdWJsaWNhdGlvblRh YmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAlpZiAoIXRh YmxlcyAmJiBzdG10LT5hY3Rpb24gIT0gQVBfU2V0T2JqZWN0cykKIAkJcmV0dXJuOwogCi0JcmVs cyA9IE9wZW5UYWJsZUxpc3QodGFibGVzKTsKKwlyZWxzID0gT3BlblJlbGF0aW9uTGlzdCh0YWJs ZXMpOwogCiAJaWYgKHN0bXQtPmFjdGlvbiA9PSBBUF9BZGRPYmplY3RzKQogCXsKQEAgLTEyNjYs NyArMTI4MSw3IEBAIEFsdGVyUHVibGljYXRpb25UYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQg KnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAJCUNoZWNrUHViUmVsYXRpb25Db2x1bW5MaXN0KHN0bXQt PnB1Ym5hbWUsIHJlbHMsIHB1Ymxpc2hfc2NoZW1hLAogCQkJCQkJCQkgICBwdWJmb3JtLT5wdWJ2 aWFyb290KTsKIAotCQlQdWJsaWNhdGlvbkFkZFRhYmxlcyhwdWJpZCwgcmVscywgZmFsc2UsIHN0 bXQpOworCQlQdWJsaWNhdGlvbkFkZFJlbGF0aW9ucyhwdWJpZCwgcmVscywgZmFsc2UsIHN0bXQs IFJFTEtJTkRfUkVMQVRJT04pOwogCX0KIAllbHNlIGlmIChzdG10LT5hY3Rpb24gPT0gQVBfRHJv cE9iamVjdHMpCiAJCVB1YmxpY2F0aW9uRHJvcFRhYmxlcyhwdWJpZCwgcmVscywgZmFsc2UpOwpA QCAtMTI4OSw4ICsxMzA0LDggQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0 aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAkJCSAqLwogCQkJaWYgKHB1YmZvcm0tPnB1 YmFsbHRhYmxlcykKIAkJCXsKLQkJCQlvbGRyZWxpZHMgPSBHZXRFeGNsdWRlZFB1YmxpY2F0aW9u VGFibGVzKHB1YmlkLAotCQkJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9ST09UKTsKKwkJ CQlvbGRyZWxpZHMgPSBHZXRFeGNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmlkLAorCQkJ CQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9ST09UKTsKIAkJCX0KIAkJfQogCQllbHNlCkBA IC0xMzYzLDggKzEzNzgsOCBAQCBBbHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVibGljYXRp b25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQkJCS8qCiAJCQkJICogVmFsaWRhdGUgdGhl IGNvbHVtbiBsaXN0LiAgSWYgdGhlIGNvbHVtbiBsaXN0IG9yIFdIRVJFCiAJCQkJICogY2xhdXNl IGNoYW5nZXMsIHRoZW4gdGhlIHZhbGlkYXRpb24gZG9uZSBoZXJlIHdpbGwgYmUKLQkJCQkgKiBk dXBsaWNhdGVkIGluc2lkZSBQdWJsaWNhdGlvbkFkZFRhYmxlcygpLiAgVGhlIHZhbGlkYXRpb24K LQkJCQkgKiBpcyBjaGVhcCBlbm91Z2ggdGhhdCB0aGF0IHNlZW1zIGhhcm1sZXNzLgorCQkJCSAq IGR1cGxpY2F0ZWQgaW5zaWRlIFB1YmxpY2F0aW9uQWRkUmVsYXRpb25zKCkuICBUaGUKKwkJCQkg KiB2YWxpZGF0aW9uIGlzIGNoZWFwIGVub3VnaCB0aGF0IHRoYXQgc2VlbXMgaGFybWxlc3MuCiAJ CQkJICovCiAJCQkJbmV3Y29sdW1ucyA9IHB1Yl9jb2xsaXN0X3ZhbGlkYXRlKG5ld3B1YnJlbC0+ cmVsYXRpb24sCiAJCQkJCQkJCQkJCQkgIG5ld3B1YnJlbC0+Y29sdW1ucyk7CkBAIC0xNDEwLDEy ICsxNDI1LDEyIEBAIEFsdGVyUHVibGljYXRpb25UYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQg KnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAJCSAqIERvbid0IGJvdGhlciBjYWxjdWxhdGluZyB0aGUg ZGlmZmVyZW5jZSBmb3IgYWRkaW5nLCB3ZSdsbCBjYXRjaCBhbmQKIAkJICogc2tpcCBleGlzdGlu ZyBvbmVzIHdoZW4gZG9pbmcgY2F0YWxvZyB1cGRhdGUuCiAJCSAqLwotCQlQdWJsaWNhdGlvbkFk ZFRhYmxlcyhwdWJpZCwgcmVscywgdHJ1ZSwgc3RtdCk7CisJCVB1YmxpY2F0aW9uQWRkUmVsYXRp b25zKHB1YmlkLCByZWxzLCB0cnVlLCBzdG10LCBSRUxLSU5EX1JFTEFUSU9OKTsKIAotCQlDbG9z ZVRhYmxlTGlzdChkZWxyZWxzKTsKKwkJQ2xvc2VSZWxhdGlvbkxpc3QoZGVscmVscyk7CiAJfQog Ci0JQ2xvc2VUYWJsZUxpc3QocmVscyk7CisJQ2xvc2VSZWxhdGlvbkxpc3QocmVscyk7CiB9CiAK IC8qCkBAIC0xNjUxLDcgKzE2NjYsNyBAQCBBbHRlclB1YmxpY2F0aW9uQWxsRmxhZ3MoQWx0ZXJQ dWJsaWNhdGlvblN0bXQgKnN0bXQsIFJlbGF0aW9uIHJlbCwKICAqIEFsdGVyIHRoZSBleGlzdGlu ZyBwdWJsaWNhdGlvbi4KICAqCiAgKiBUaGlzIGlzIGRpc3BhdGNoZXIgZnVuY3Rpb24gZm9yIEFs dGVyUHVibGljYXRpb25PcHRpb25zLAotICogQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMgYW5kIEFs dGVyUHVibGljYXRpb25UYWJsZXMuCisgKiBBbHRlclB1YmxpY2F0aW9uU2NoZW1hcyBhbmQgQWx0 ZXJQdWJsaWNhdGlvblJlbGF0aW9ucy4KICAqLwogdm9pZAogQWx0ZXJQdWJsaWNhdGlvbihQYXJz ZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KQpAQCAtMTY4MywxMiAr MTY5OCwxNiBAQCBBbHRlclB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJs aWNhdGlvblN0bXQgKnN0bXQpCiAJZWxzZQogCXsKIAkJTGlzdAkgICAqcmVsYXRpb25zID0gTklM OwotCQlMaXN0CSAgICpleGNlcHRyZWxhdGlvbnMgPSBOSUw7CisJCUxpc3QJICAgKmV4Y2VwdHRi bHMgPSBOSUw7CisJCUxpc3QJICAgKmV4Y2VwdHNlcXMgPSBOSUw7CiAJCUxpc3QJICAgKnNjaGVt YWlkbGlzdCA9IE5JTDsKIAkJT2lkCQkJcHViaWQgPSBwdWJmb3JtLT5vaWQ7CiAKIAkJT2JqZWN0 c0luUHVibGljYXRpb25Ub09pZHMoc3RtdC0+cHVib2JqZWN0cywgcHN0YXRlLCAmcmVsYXRpb25z LAotCQkJCQkJCQkgICAmZXhjZXB0cmVsYXRpb25zLCAmc2NoZW1haWRsaXN0KTsKKwkJCQkJCQkJ ICAgJmV4Y2VwdHRibHMsICZleGNlcHRzZXFzLCAmc2NoZW1haWRsaXN0KTsKKworCQkvKiBFWENF UFQgY2xhdXNlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBBTFRFUiBQVUJMSUNBVElPTiAqLworCQlB c3NlcnQoZXhjZXB0c2VxcyA9PSBOSUwpOwogCiAJCUNoZWNrQWx0ZXJQdWJsaWNhdGlvbihzdG10 LCB0dXAsIHJlbGF0aW9ucywgc2NoZW1haWRsaXN0KTsKIApAQCAtMTcxMSw3ICsxNzMwLDcgQEAg QWx0ZXJQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10 ICpzdG10KQogCQkJCQllcnJtc2coInB1YmxpY2F0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIs CiAJCQkJCQkgICBzdG10LT5wdWJuYW1lKSk7CiAKLQkJcmVsYXRpb25zID0gbGlzdF9jb25jYXQo cmVsYXRpb25zLCBleGNlcHRyZWxhdGlvbnMpOworCQlyZWxhdGlvbnMgPSBsaXN0X2NvbmNhdChy ZWxhdGlvbnMsIGV4Y2VwdHRibHMpOwogCQlBbHRlclB1YmxpY2F0aW9uVGFibGVzKHN0bXQsIHR1 cCwgcmVsYXRpb25zLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkgICBzY2hlbWFpZGxp c3QgIT0gTklMKTsKIAkJQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMoc3RtdCwgdHVwLCBzY2hlbWFp ZGxpc3QpOwpAQCAtMTgzMCwxMiArMTg0OSwxMiBAQCBSZW1vdmVQdWJsaWNhdGlvblNjaGVtYUJ5 SWQoT2lkIHBzb2lkKQogfQogCiAvKgotICogT3BlbiByZWxhdGlvbnMgc3BlY2lmaWVkIGJ5IGEg UHVibGljYXRpb25UYWJsZSBsaXN0LgotICogVGhlIHJldHVybmVkIHRhYmxlcyBhcmUgbG9ja2Vk IGluIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayBtb2RlIGluIG9yZGVyIHRvCi0gKiBhZGQgdGhl bSB0byBhIHB1YmxpY2F0aW9uLgorICogT3BlbiByZWxhdGlvbnMgc3BlY2lmaWVkIGJ5IGEgUHVi bGljYXRpb25SZWxhdGlvbiBsaXN0LgorICogVGhlIHJldHVybmVkIHJlbGF0aW9ucyBhcmUgbG9j a2VkIGluIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayBtb2RlIGluIG9yZGVyCisgKiB0byBhZGQg dGhlbSB0byBhIHB1YmxpY2F0aW9uLgogICovCiBzdGF0aWMgTGlzdCAqCi1PcGVuVGFibGVMaXN0 KExpc3QgKnRhYmxlcykKK09wZW5SZWxhdGlvbkxpc3QoTGlzdCAqdGFibGVzKQogewogCUxpc3QJ ICAgKnJlbGlkcyA9IE5JTDsKIAlMaXN0CSAgICpyZWxzID0gTklMOwpAQCAtMTg0OCw3ICsxODY3 LDcgQEAgT3BlblRhYmxlTGlzdChMaXN0ICp0YWJsZXMpCiAJICovCiAJZm9yZWFjaChsYywgdGFi bGVzKQogCXsKLQkJUHVibGljYXRpb25UYWJsZSAqdCA9IGxmaXJzdF9ub2RlKFB1YmxpY2F0aW9u VGFibGUsIGxjKTsKKwkJUHVibGljYXRpb25SZWxhdGlvbiAqdCA9IGxmaXJzdF9ub2RlKFB1Ymxp Y2F0aW9uUmVsYXRpb24sIGxjKTsKIAkJYm9vbAkJcmVjdXJzZSA9IHQtPnJlbGF0aW9uLT5pbmg7 CiAJCVJlbGF0aW9uCXJlbDsKIAkJT2lkCQkJbXlyZWxpZDsKQEAgLTE5ODcsNyArMjAwNiw3IEBA IE9wZW5UYWJsZUxpc3QoTGlzdCAqdGFibGVzKQogICogQ2xvc2UgYWxsIHJlbGF0aW9ucyBpbiB0 aGUgbGlzdC4KICAqLwogc3RhdGljIHZvaWQKLUNsb3NlVGFibGVMaXN0KExpc3QgKnJlbHMpCitD bG9zZVJlbGF0aW9uTGlzdChMaXN0ICpyZWxzKQogewogCUxpc3RDZWxsICAgKmxjOwogCkBAIC0y MDMyLDExICsyMDUxLDE1IEBAIExvY2tTY2hlbWFMaXN0KExpc3QgKnNjaGVtYWxpc3QpCiB9CiAK IC8qCi0gKiBBZGQgbGlzdGVkIHRhYmxlcyB0byB0aGUgcHVibGljYXRpb24uCisgKiBBZGQgbGlz dGVkIHJlbGF0aW9ucyB0byB0aGUgcHVibGljYXRpb24uCisgKgorICogJ3B1YnJlbGtpbmQnIGlz IHRoZSByZWxraW5kIGFjY2VwdGVkIGJ5IHRoZSBwdWJsaWNhdGlvbiBjbGF1c2UuCisgKiBUaGUg cmVsa2luZCBvZiBlYWNoIHJlbGF0aW9uIGluICdyZWxzJyBpcyBjaGVja2VkIGZvciBjb21wYXRp YmlsaXR5CisgKiBhZ2FpbnN0IGl0LgogICovCiBzdGF0aWMgdm9pZAotUHVibGljYXRpb25BZGRU YWJsZXMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBib29sIGlmX25vdF9leGlzdHMsCi0JCQkJCSBB bHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKK1B1YmxpY2F0aW9uQWRkUmVsYXRpb25zKE9pZCBw dWJpZCwgTGlzdCAqcmVscywgYm9vbCBpZl9ub3RfZXhpc3RzLAorCQkJCQkJQWx0ZXJQdWJsaWNh dGlvblN0bXQgKnN0bXQsIGNoYXIgcHVicmVsa2luZCkKIHsKIAlMaXN0Q2VsbCAgICpsYzsKIApA QCAtMjA0NiwxMiArMjA2OSwxMiBAQCBQdWJsaWNhdGlvbkFkZFRhYmxlcyhPaWQgcHViaWQsIExp c3QgKnJlbHMsIGJvb2wgaWZfbm90X2V4aXN0cywKIAkJUmVsYXRpb24JcmVsID0gcHViX3JlbC0+ cmVsYXRpb247CiAJCU9iamVjdEFkZHJlc3Mgb2JqOwogCi0JCS8qIE11c3QgYmUgb3duZXIgb2Yg dGhlIHRhYmxlIG9yIHN1cGVydXNlci4gKi8KKwkJLyogTXVzdCBiZSBvd25lciBvZiB0aGUgcmVs YXRpb24gb3Igc3VwZXJ1c2VyLiAqLwogCQlpZiAoIW9iamVjdF9vd25lcmNoZWNrKFJlbGF0aW9u UmVsYXRpb25JZCwgUmVsYXRpb25HZXRSZWxpZChyZWwpLCBHZXRVc2VySWQoKSkpCiAJCQlhY2xj aGVja19lcnJvcihBQ0xDSEVDS19OT1RfT1dORVIsIGdldF9yZWxraW5kX29ianR5cGUocmVsLT5y ZF9yZWwtPnJlbGtpbmQpLAogCQkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSk7 CiAKLQkJb2JqID0gcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKHB1YmlkLCBwdWJfcmVsLCBpZl9u b3RfZXhpc3RzLCBzdG10KTsKKwkJb2JqID0gcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKHB1Ymlk LCBwdWJfcmVsLCBpZl9ub3RfZXhpc3RzLCBzdG10LCBwdWJyZWxraW5kKTsKIAkJaWYgKHN0bXQp CiAJCXsKIAkJCUV2ZW50VHJpZ2dlckNvbGxlY3RTaW1wbGVDb21tYW5kKG9iaiwgSW52YWxpZE9i amVjdEFkZHJlc3MsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3Jj L2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCBmZjRlMTM4OGM1NS4uYzdhNDk5YWI5NmQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFy c2VyL2dyYW0ueQpAQCAtNDU3LDcgKzQ1Nyw4IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZl Vmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJ CQkJVHJpZ2dlclRyYW5zaXRpb25zIFRyaWdnZXJSZWZlcmVuY2luZwogCQkJCXZhY3V1bV9yZWxh dGlvbl9saXN0IG9wdF92YWN1dW1fcmVsYXRpb25fbGlzdAogCQkJCWRyb3Bfb3B0aW9uX2xpc3Qg cHViX29ial9saXN0IHB1Yl9hbGxfb2JqX3R5cGVfbGlzdAotCQkJCXB1Yl9leGNlcHRfb2JqX2xp c3Qgb3B0X3B1Yl9leGNlcHRfY2xhdXNlCisJCQkJcHViX2V4Y2VwdF90YmxfbGlzdCBvcHRfcHVi X2V4Y2VwdF90YmxfY2xhdXNlCisJCQkJcHViX2V4Y2VwdF9zZXFfbGlzdCBvcHRfcHViX2V4Y2Vw dF9zZXFfY2xhdXNlCiAKICV0eXBlIDxyZXRjbGF1c2U+IHJldHVybmluZ19jbGF1c2UKICV0eXBl IDxub2RlPglyZXR1cm5pbmdfb3B0aW9uCkBAIC01OTcsNyArNTk4LDggQEAgc3RhdGljIE5vZGUg Km1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5v ZGUgKnF1ZXJ5KTsKICV0eXBlIDxub2RlPgl2YXJfdmFsdWUgem9uZV92YWx1ZQogJXR5cGUgPHJv bGVzcGVjPiBhdXRoX2lkZW50IFJvbGVTcGVjIG9wdF9ncmFudGVkX2J5CiAldHlwZSA8cHVibGlj YXRpb25vYmplY3RzcGVjPiBQdWJsaWNhdGlvbk9ialNwZWMKLSV0eXBlIDxwdWJsaWNhdGlvbm9i amVjdHNwZWM+IFB1YmxpY2F0aW9uRXhjZXB0T2JqU3BlYworJXR5cGUgPHB1YmxpY2F0aW9ub2Jq ZWN0c3BlYz4gUHVibGljYXRpb25FeGNlcHRUYmxTcGVjCisldHlwZSA8cHVibGljYXRpb25vYmpl Y3RzcGVjPiBQdWJsaWNhdGlvbkV4Y2VwdFNlcVNwZWMKICV0eXBlIDxwdWJsaWNhdGlvbmFsbG9i amVjdHNwZWM+IFB1YmxpY2F0aW9uQWxsT2JqU3BlYwogCiAldHlwZSA8a2V5d29yZD4gdW5yZXNl cnZlZF9rZXl3b3JkIHR5cGVfZnVuY19uYW1lX2tleXdvcmQKQEAgLTExMzI3LDEwICsxMTMyOSwx MCBAQCBQdWJsaWNhdGlvbk9ialNwZWM6CiAJCQkJewogCQkJCQkkJCA9IG1ha2VOb2RlKFB1Ymxp Y2F0aW9uT2JqU3BlYyk7CiAJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05PQkpfVEFC TEU7Ci0JCQkJCSQkLT5wdWJ0YWJsZSA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uVGFibGUpOwotCQkJ CQkkJC0+cHVidGFibGUtPnJlbGF0aW9uID0gJDI7Ci0JCQkJCSQkLT5wdWJ0YWJsZS0+Y29sdW1u cyA9ICQzOwotCQkJCQkkJC0+cHVidGFibGUtPndoZXJlQ2xhdXNlID0gJDQ7CisJCQkJCSQkLT5w dWJyZWxhdGlvbiA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uUmVsYXRpb24pOworCQkJCQkkJC0+cHVi cmVsYXRpb24tPnJlbGF0aW9uID0gJDI7CisJCQkJCSQkLT5wdWJyZWxhdGlvbi0+Y29sdW1ucyA9 ICQzOworCQkJCQkkJC0+cHVicmVsYXRpb24tPndoZXJlQ2xhdXNlID0gJDQ7CiAJCQkJfQogCQkJ fCBUQUJMRVMgSU5fUCBTQ0hFTUEgQ29sSWQKIAkJCQl7CkBAIC0xMTM1MSw3ICsxMTM1Myw3IEBA IFB1YmxpY2F0aW9uT2JqU3BlYzoKIAkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9C Sl9DT05USU5VQVRJT047CiAJCQkJCS8qCiAJCQkJCSAqIElmIGVpdGhlciBhIHJvdyBmaWx0ZXIg b3IgY29sdW1uIGxpc3QgaXMgc3BlY2lmaWVkLCBjcmVhdGUKLQkJCQkJICogYSBQdWJsaWNhdGlv blRhYmxlIG9iamVjdC4KKwkJCQkJICogYSBQdWJsaWNhdGlvblJlbGF0aW9uIG9iamVjdC4KIAkJ CQkJICovCiAJCQkJCWlmICgkMiB8fCAkMykKIAkJCQkJewpAQCAtMTEzNjEsMTAgKzExMzYzLDEw IEBAIFB1YmxpY2F0aW9uT2JqU3BlYzoKIAkJCQkJCSAqIGVycm9yIHdpbGwgYmUgdGhyb3duIGxh dGVyIHZpYQogCQkJCQkJICogcHJlcHJvY2Vzc19wdWJvYmpfbGlzdCgpLgogCQkJCQkJICovCi0J CQkJCQkkJC0+cHVidGFibGUgPSBtYWtlTm9kZShQdWJsaWNhdGlvblRhYmxlKTsKLQkJCQkJCSQk LT5wdWJ0YWJsZS0+cmVsYXRpb24gPSBtYWtlUmFuZ2VWYXIoTlVMTCwgJDEsIEAxKTsKLQkJCQkJ CSQkLT5wdWJ0YWJsZS0+Y29sdW1ucyA9ICQyOwotCQkJCQkJJCQtPnB1YnRhYmxlLT53aGVyZUNs YXVzZSA9ICQzOworCQkJCQkJJCQtPnB1YnJlbGF0aW9uID0gbWFrZU5vZGUoUHVibGljYXRpb25S ZWxhdGlvbik7CisJCQkJCQkkJC0+cHVicmVsYXRpb24tPnJlbGF0aW9uID0gbWFrZVJhbmdlVmFy KE5VTEwsICQxLCBAMSk7CisJCQkJCQkkJC0+cHVicmVsYXRpb24tPmNvbHVtbnMgPSAkMjsKKwkJ CQkJCSQkLT5wdWJyZWxhdGlvbi0+d2hlcmVDbGF1c2UgPSAkMzsKIAkJCQkJfQogCQkJCQllbHNl CiAJCQkJCXsKQEAgLTExMzc2LDEwICsxMTM3OCwxMCBAQCBQdWJsaWNhdGlvbk9ialNwZWM6CiAJ CQkJewogCQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uT2JqU3BlYyk7CiAJCQkJCSQkLT5w dWJvYmp0eXBlID0gUFVCTElDQVRJT05PQkpfQ09OVElOVUFUSU9OOwotCQkJCQkkJC0+cHVidGFi bGUgPSBtYWtlTm9kZShQdWJsaWNhdGlvblRhYmxlKTsKLQkJCQkJJCQtPnB1YnRhYmxlLT5yZWxh dGlvbiA9IG1ha2VSYW5nZVZhckZyb21RdWFsaWZpZWROYW1lKCQxLCAkMiwgQDEsIHl5c2Nhbm5l cik7Ci0JCQkJCSQkLT5wdWJ0YWJsZS0+Y29sdW1ucyA9ICQzOwotCQkJCQkkJC0+cHVidGFibGUt PndoZXJlQ2xhdXNlID0gJDQ7CisJCQkJCSQkLT5wdWJyZWxhdGlvbiA9IG1ha2VOb2RlKFB1Ymxp Y2F0aW9uUmVsYXRpb24pOworCQkJCQkkJC0+cHVicmVsYXRpb24tPnJlbGF0aW9uID0gbWFrZVJh bmdlVmFyRnJvbVF1YWxpZmllZE5hbWUoJDEsICQyLCBAMSwgeXlzY2FubmVyKTsKKwkJCQkJJCQt PnB1YnJlbGF0aW9uLT5jb2x1bW5zID0gJDM7CisJCQkJCSQkLT5wdWJyZWxhdGlvbi0+d2hlcmVD bGF1c2UgPSAkNDsKIAkJCQkJJCQtPmxvY2F0aW9uID0gQDE7CiAJCQkJfQogCQkJLyogZ3JhbW1h ciBsaWtlIHRhYmxlbmFtZSAqICwgT05MWSB0YWJsZW5hbWUsIE9OTFkgKCB0YWJsZW5hbWUgKSAq LwpAQCAtMTEzODcsMTAgKzExMzg5LDEwIEBAIFB1YmxpY2F0aW9uT2JqU3BlYzoKIAkJCQl7CiAJ CQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25PYmpTcGVjKTsKIAkJCQkJJCQtPnB1Ym9ianR5 cGUgPSBQVUJMSUNBVElPTk9CSl9DT05USU5VQVRJT047Ci0JCQkJCSQkLT5wdWJ0YWJsZSA9IG1h a2VOb2RlKFB1YmxpY2F0aW9uVGFibGUpOwotCQkJCQkkJC0+cHVidGFibGUtPnJlbGF0aW9uID0g JDE7Ci0JCQkJCSQkLT5wdWJ0YWJsZS0+Y29sdW1ucyA9ICQyOwotCQkJCQkkJC0+cHVidGFibGUt PndoZXJlQ2xhdXNlID0gJDM7CisJCQkJCSQkLT5wdWJyZWxhdGlvbiA9IG1ha2VOb2RlKFB1Ymxp Y2F0aW9uUmVsYXRpb24pOworCQkJCQkkJC0+cHVicmVsYXRpb24tPnJlbGF0aW9uID0gJDE7CisJ CQkJCSQkLT5wdWJyZWxhdGlvbi0+Y29sdW1ucyA9ICQyOworCQkJCQkkJC0+cHVicmVsYXRpb24t PndoZXJlQ2xhdXNlID0gJDM7CiAJCQkJfQogCQkJfCBDVVJSRU5UX1NDSEVNQQogCQkJCXsKQEAg LTExNDA2LDIzICsxMTQwOCwyOSBAQCBwdWJfb2JqX2xpc3Q6CVB1YmxpY2F0aW9uT2JqU3BlYwog CQkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CiAJOwogCi1vcHRfcHViX2V4Y2VwdF9jbGF1 c2U6Ci0JCQlFWENFUFQgJygnIFRBQkxFIHB1Yl9leGNlcHRfb2JqX2xpc3QgJyknCXsgJCQgPSAk NDsgfQorb3B0X3B1Yl9leGNlcHRfdGJsX2NsYXVzZToKKwkJCUVYQ0VQVCAnKCcgVEFCTEUgcHVi X2V4Y2VwdF90YmxfbGlzdCAnKScJeyAkJCA9ICQ0OyB9CisJCQl8IC8qRU1QVFkqLwkJCQkJCQkJ CXsgJCQgPSBOSUw7IH0KKwkJOworCitvcHRfcHViX2V4Y2VwdF9zZXFfY2xhdXNlOgorCQkJRVhD RVBUICcoJyBTRVFVRU5DRSBwdWJfZXhjZXB0X3NlcV9saXN0ICcpJwl7ICQkID0gJDQ7IH0KIAkJ CXwgLypFTVBUWSovCQkJCQkJCQkJeyAkJCA9IE5JTDsgfQogCQk7CiAKIFB1YmxpY2F0aW9uQWxs T2JqU3BlYzoKLQkJCQlBTEwgVEFCTEVTIG9wdF9wdWJfZXhjZXB0X2NsYXVzZQorCQkJCUFMTCBU QUJMRVMgb3B0X3B1Yl9leGNlcHRfdGJsX2NsYXVzZQogCQkJCQl7CiAJCQkJCQkkJCA9IG1ha2VO b2RlKFB1YmxpY2F0aW9uQWxsT2JqU3BlYyk7CiAJCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJ Q0FUSU9OX0FMTF9UQUJMRVM7Ci0JCQkJCQkkJC0+ZXhjZXB0X3RhYmxlcyA9ICQzOworCQkJCQkJ JCQtPmV4Y2VwdF9yZWxhdGlvbnMgPSAkMzsKIAkJCQkJCSQkLT5sb2NhdGlvbiA9IEAxOwogCQkJ CQl9Ci0JCQkJfCBBTEwgU0VRVUVOQ0VTCisJCQkJfCBBTEwgU0VRVUVOQ0VTIG9wdF9wdWJfZXhj ZXB0X3NlcV9jbGF1c2UKIAkJCQkJewogCQkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbkFs bE9ialNwZWMpOwogCQkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTl9BTExfU0VRVUVO Q0VTOworCQkJCQkJJCQtPmV4Y2VwdF9yZWxhdGlvbnMgPSAkMzsKIAkJCQkJCSQkLT5sb2NhdGlv biA9IEAxOwogCQkJCQl9CiAJCQkJCTsKQEAgLTExNDMzLDIxICsxMTQ0MSw0MSBAQCBwdWJfYWxs X29ial90eXBlX2xpc3Q6CVB1YmxpY2F0aW9uQWxsT2JqU3BlYwogCQkJCQl7ICQkID0gbGFwcGVu ZCgkMSwgJDMpOyB9CiAJOwogCi1QdWJsaWNhdGlvbkV4Y2VwdE9ialNwZWM6CitQdWJsaWNhdGlv bkV4Y2VwdFRibFNwZWM6CiAJCQkgcmVsYXRpb25fZXhwcgogCQkJCXsKIAkJCQkJJCQgPSBtYWtl Tm9kZShQdWJsaWNhdGlvbk9ialNwZWMpOwogCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FU SU9OT0JKX0VYQ0VQVF9UQUJMRTsKLQkJCQkJJCQtPnB1YnRhYmxlID0gbWFrZU5vZGUoUHVibGlj YXRpb25UYWJsZSk7Ci0JCQkJCSQkLT5wdWJ0YWJsZS0+ZXhjZXB0ID0gdHJ1ZTsKLQkJCQkJJCQt PnB1YnRhYmxlLT5yZWxhdGlvbiA9ICQxOworCQkJCQkkJC0+cHVicmVsYXRpb24gPSBtYWtlTm9k ZShQdWJsaWNhdGlvblJlbGF0aW9uKTsKKwkJCQkJJCQtPnB1YnJlbGF0aW9uLT5leGNlcHQgPSB0 cnVlOworCQkJCQkkJC0+cHVicmVsYXRpb24tPnJlbGF0aW9uID0gJDE7CiAJCQkJCSQkLT5sb2Nh dGlvbiA9IEAxOwogCQkJCX0KIAk7CiAKLXB1Yl9leGNlcHRfb2JqX2xpc3Q6IFB1YmxpY2F0aW9u RXhjZXB0T2JqU3BlYworUHVibGljYXRpb25FeGNlcHRTZXFTcGVjOgorCQkJIHJlbGF0aW9uX2V4 cHIKKwkJCQl7CisJCQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25PYmpTcGVjKTsKKwkJCQkJ JCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9FWENFUFRfU0VRVUVOQ0U7CisJCQkJCSQk LT5wdWJyZWxhdGlvbiA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uUmVsYXRpb24pOworCQkJCQkkJC0+ cHVicmVsYXRpb24tPmV4Y2VwdCA9IHRydWU7CisJCQkJCSQkLT5wdWJyZWxhdGlvbi0+cmVsYXRp b24gPSAkMTsKKwkJCQkJJCQtPmxvY2F0aW9uID0gQDE7CisJCQkJfQorCTsKKworcHViX2V4Y2Vw dF90YmxfbGlzdDogUHVibGljYXRpb25FeGNlcHRUYmxTcGVjCiAJCQkJCXsgJCQgPSBsaXN0X21h a2UxKCQxKTsgfQotCQkJfCBwdWJfZXhjZXB0X29ial9saXN0ICcsJyBvcHRfdGFibGUgUHVibGlj YXRpb25FeGNlcHRPYmpTcGVjCisJCQl8IHB1Yl9leGNlcHRfdGJsX2xpc3QgJywnIG9wdF90YWJs ZSBQdWJsaWNhdGlvbkV4Y2VwdFRibFNwZWMKKwkJCQkJeyAkJCA9IGxhcHBlbmQoJDEsICQ0KTsg fQorCTsKKworcHViX2V4Y2VwdF9zZXFfbGlzdDogUHVibGljYXRpb25FeGNlcHRTZXFTcGVjCisJ CQkJCXsgJCQgPSBsaXN0X21ha2UxKCQxKTsgfQorCQkJfCBwdWJfZXhjZXB0X3NlcV9saXN0ICcs JyBQdWJsaWNhdGlvbkV4Y2VwdFNlcVNwZWMKKwkJCQkJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsg fQorCQkJfCBwdWJfZXhjZXB0X3NlcV9saXN0ICcsJyBTRVFVRU5DRSBQdWJsaWNhdGlvbkV4Y2Vw dFNlcVNwZWMKIAkJCQkJeyAkJCA9IGxhcHBlbmQoJDEsICQ0KTsgfQogCTsKIApAQCAtMjA3NjUs NyArMjA3OTMsNyBAQCBwcmVwcm9jZXNzX3B1Yl9hbGxfb2JqdHlwZV9saXN0KExpc3QgKmFsbF9v YmplY3RzX2xpc3QsIExpc3QgKipwdWJvYmplY3RzLAogCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9u KG9iai0+bG9jYXRpb24pKTsKIAogCQkJKmFsbF90YWJsZXMgPSB0cnVlOwotCQkJKnB1Ym9iamVj dHMgPSBsaXN0X2NvbmNhdCgqcHVib2JqZWN0cywgb2JqLT5leGNlcHRfdGFibGVzKTsKKwkJCSpw dWJvYmplY3RzID0gbGlzdF9jb25jYXQoKnB1Ym9iamVjdHMsIG9iai0+ZXhjZXB0X3JlbGF0aW9u cyk7CiAJCX0KIAkJZWxzZSBpZiAob2JqLT5wdWJvYmp0eXBlID09IFBVQkxJQ0FUSU9OX0FMTF9T RVFVRU5DRVMpCiAJCXsKQEAgLTIwNzc3LDYgKzIwODA1LDcgQEAgcHJlcHJvY2Vzc19wdWJfYWxs X29ianR5cGVfbGlzdChMaXN0ICphbGxfb2JqZWN0c19saXN0LCBMaXN0ICoqcHVib2JqZWN0cywK IAkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihvYmotPmxvY2F0aW9uKSk7CiAKIAkJCSphbGxfc2Vx dWVuY2VzID0gdHJ1ZTsKKwkJCSpwdWJvYmplY3RzID0gbGlzdF9jb25jYXQoKnB1Ym9iamVjdHMs IG9iai0+ZXhjZXB0X3JlbGF0aW9ucyk7CiAJCX0KIAl9CiB9CkBAIC0yMDgxMiw4ICsyMDg0MSw4 IEBAIHByZXByb2Nlc3NfcHVib2JqX2xpc3QoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBjb3JlX3l5 c2Nhbl90IHl5c2Nhbm5lcikKIAogCQlpZiAocHVib2JqLT5wdWJvYmp0eXBlID09IFBVQkxJQ0FU SU9OT0JKX1RBQkxFKQogCQl7Ci0JCQkvKiByZWxhdGlvbiBuYW1lIG9yIHB1YnRhYmxlIG11c3Qg YmUgc2V0IGZvciB0aGlzIHR5cGUgb2Ygb2JqZWN0ICovCi0JCQlpZiAoIXB1Ym9iai0+bmFtZSAm JiAhcHVib2JqLT5wdWJ0YWJsZSkKKwkJCS8qIHJlbGF0aW9uIG5hbWUgb3IgcHVicmVsYXRpb24g bXVzdCBiZSBzZXQgZm9yIHRoaXMgdHlwZSBvZiBvYmplY3QgKi8KKwkJCWlmICghcHVib2JqLT5u YW1lICYmICFwdWJvYmotPnB1YnJlbGF0aW9uKQogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQll cnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkJCWVycm1zZygiaW52YWxpZCB0YWJs ZSBuYW1lIiksCkBAIC0yMDgyMSwxMiArMjA4NTAsMTIgQEAgcHJlcHJvY2Vzc19wdWJvYmpfbGlz dChMaXN0ICpwdWJvYmpzcGVjX2xpc3QsIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQogCiAJCQlp ZiAocHVib2JqLT5uYW1lKQogCQkJewotCQkJCS8qIGNvbnZlcnQgaXQgdG8gUHVibGljYXRpb25U YWJsZSAqLwotCQkJCVB1YmxpY2F0aW9uVGFibGUgKnB1YnRhYmxlID0gbWFrZU5vZGUoUHVibGlj YXRpb25UYWJsZSk7CisJCQkJLyogY29udmVydCBpdCB0byBQdWJsaWNhdGlvblJlbGF0aW9uICov CisJCQkJUHVibGljYXRpb25SZWxhdGlvbiAqcHVicmVsYXRpb24gPSBtYWtlTm9kZShQdWJsaWNh dGlvblJlbGF0aW9uKTsKIAotCQkJCXB1YnRhYmxlLT5yZWxhdGlvbiA9CisJCQkJcHVicmVsYXRp b24tPnJlbGF0aW9uID0KIAkJCQkJbWFrZVJhbmdlVmFyKE5VTEwsIHB1Ym9iai0+bmFtZSwgcHVi b2JqLT5sb2NhdGlvbik7Ci0JCQkJcHVib2JqLT5wdWJ0YWJsZSA9IHB1YnRhYmxlOworCQkJCXB1 Ym9iai0+cHVicmVsYXRpb24gPSBwdWJyZWxhdGlvbjsKIAkJCQlwdWJvYmotPm5hbWUgPSBOVUxM OwogCQkJfQogCQl9CkBAIC0yMDgzNCwxNCArMjA4NjMsMTQgQEAgcHJlcHJvY2Vzc19wdWJvYmpf bGlzdChMaXN0ICpwdWJvYmpzcGVjX2xpc3QsIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQogCQkJ CSBwdWJvYmotPnB1Ym9ianR5cGUgPT0gUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX0NVUl9TQ0hF TUEpCiAJCXsKIAkJCS8qIFdIRVJFIGNsYXVzZSBpcyBub3QgYWxsb3dlZCBvbiBhIHNjaGVtYSBv YmplY3QgKi8KLQkJCWlmIChwdWJvYmotPnB1YnRhYmxlICYmIHB1Ym9iai0+cHVidGFibGUtPndo ZXJlQ2xhdXNlKQorCQkJaWYgKHB1Ym9iai0+cHVicmVsYXRpb24gJiYgcHVib2JqLT5wdWJyZWxh dGlvbi0+d2hlcmVDbGF1c2UpCiAJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCWVycmNvZGUoRVJS Q09ERV9TWU5UQVhfRVJST1IpLAogCQkJCQkJZXJybXNnKCJXSEVSRSBjbGF1c2Ugbm90IGFsbG93 ZWQgZm9yIHNjaGVtYSIpLAogCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHB1Ym9iai0+bG9jYXRp b24pKTsKIAogCQkJLyogQ29sdW1uIGxpc3QgaXMgbm90IGFsbG93ZWQgb24gYSBzY2hlbWEgb2Jq ZWN0ICovCi0JCQlpZiAocHVib2JqLT5wdWJ0YWJsZSAmJiBwdWJvYmotPnB1YnRhYmxlLT5jb2x1 bW5zKQorCQkJaWYgKHB1Ym9iai0+cHVicmVsYXRpb24gJiYgcHVib2JqLT5wdWJyZWxhdGlvbi0+ Y29sdW1ucykKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRB WF9FUlJPUiksCiAJCQkJCQllcnJtc2coImNvbHVtbiBzcGVjaWZpY2F0aW9uIG5vdCBhbGxvd2Vk IGZvciBzY2hlbWEiKSwKQEAgLTIwODQ5LDExICsyMDg3OCwxMSBAQCBwcmVwcm9jZXNzX3B1Ym9i al9saXN0KExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiAK IAkJCS8qCiAJCQkgKiBXZSBjYW4gZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGUgZGlmZmVyZW50IHR5 cGUgb2Ygc2NoZW1hIG9iamVjdHMKLQkJCSAqIGJhc2VkIG9uIHdoZXRoZXIgbmFtZSBhbmQgcHVi dGFibGUgaXMgc2V0LgorCQkJICogYmFzZWQgb24gd2hldGhlciBuYW1lIGFuZCBwdWJyZWxhdGlv biBpcyBzZXQuCiAJCQkgKi8KIAkJCWlmIChwdWJvYmotPm5hbWUpCiAJCQkJcHVib2JqLT5wdWJv Ymp0eXBlID0gUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX1NDSEVNQTsKLQkJCWVsc2UgaWYgKCFw dWJvYmotPm5hbWUgJiYgIXB1Ym9iai0+cHVidGFibGUpCisJCQllbHNlIGlmICghcHVib2JqLT5u YW1lICYmICFwdWJvYmotPnB1YnJlbGF0aW9uKQogCQkJCXB1Ym9iai0+cHVib2JqdHlwZSA9IFBV QkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9DVVJfU0NIRU1BOwogCQkJZWxzZQogCQkJCWVyZXBvcnQo RVJST1IsCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuYwppbmRleCBhMGY3ZjhlMjE2OC4uZGNjY2U0MmY0NDAgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYwpAQCAtNDYxNywxOCArNDYxNywyMiBAQCBnZXRQdWJsaWNhdGlvbnMoQXJjaGl2ZSAqZm91 dCkKIAkJewogCQkJTlVMTCwgTlVMTAogCQl9OworCQlwdWJpbmZvW2ldLmV4Y2VwdF9zZXF1ZW5j ZXMgPSAoU2ltcGxlUHRyTGlzdCkKKwkJeworCQkJTlVMTCwgTlVMTAorCQl9OwogCiAJCS8qIERl Y2lkZSB3aGV0aGVyIHdlIHdhbnQgdG8gZHVtcCBpdCAqLwogCQlzZWxlY3REdW1wYWJsZU9iamVj dCgmKHB1YmluZm9baV0uZG9iaiksIGZvdXQpOwogCiAJCS8qCi0JCSAqIEdldCB0aGUgbGlzdCBv ZiB0YWJsZXMgZm9yIHB1YmxpY2F0aW9ucyBzcGVjaWZpZWQgaW4gdGhlIEVYQ0VQVAotCQkgKiBU QUJMRSBjbGF1c2UuCisJCSAqIEdldCB0aGUgbGlzdCBvZiB0YWJsZXMgYW5kIHNlcXVlbmNlcyBm b3IgcHVibGljYXRpb25zIHNwZWNpZmllZCBpbgorCQkgKiB0aGUgRVhDRVBUIGNsYXVzZS4KIAkJ ICoKLQkJICogQWx0aG91Z2ggaW5kaXZpZHVhbCB0YWJsZSBlbnRyaWVzIGluIEVYQ0VQVCBsaXN0 IGNvdWxkIGJlIHN0b3JlZCBpbgotCQkgKiBQdWJsaWNhdGlvblJlbEluZm8sIGR1bXBQdWJsaWNh dGlvblRhYmxlIGNhbm5vdCBiZSB1c2VkIHRvIGVtaXQKLQkJICogdGhlbSwgYmVjYXVzZSB0aGVy ZSBpcyBubyBBTFRFUiBQVUJMSUNBVElPTiAuLi4gQUREIGNvbW1hbmQgdG8gYWRkCi0JCSAqIGlu ZGl2aWR1YWwgdGFibGUgZW50cmllcyB0byB0aGUgRVhDRVBUIGxpc3QuCisJCSAqIEFsdGhvdWdo IGluZGl2aWR1YWwgdGFibGUvc2VxdWVuY2UgZW50cmllcyBpbiBFWENFUFQgbGlzdCBjb3VsZCBi ZQorCQkgKiBzdG9yZWQgaW4gUHVibGljYXRpb25SZWxJbmZvLCBkdW1wUHVibGljYXRpb25UYWJs ZSBjYW5ub3QgYmUgdXNlZAorCQkgKiB0byBlbWl0IHRoZW0sIGJlY2F1c2UgdGhlcmUgaXMgbm8g QUxURVIgUFVCTElDQVRJT04gLi4uIEFERCBjb21tYW5kCisJCSAqIHRvIGFkZCBpbmRpdmlkdWFs IHRhYmxlIGVudHJpZXMgdG8gdGhlIEVYQ0VQVCBsaXN0LgogCQkgKgogCQkgKiBUaGVyZWZvcmUs IHRoZSBhcHByb2FjaCBpcyB0byBkdW1wIHRoZSBjb21wbGV0ZSBFWENFUFQgbGlzdCBpbiBhCiAJ CSAqIHNpbmdsZSBDUkVBVEUgUFVCTElDQVRJT04gc3RhdGVtZW50LiBQdWJsaWNhdGlvbkluZm8g aXMgdXNlZCB0bwpAQCAtNDY0Miw5ICs0NjQ2LDEwIEBAIGdldFB1YmxpY2F0aW9ucyhBcmNoaXZl ICpmb3V0KQogCiAJCQlyZXNldFBRRXhwQnVmZmVyKHF1ZXJ5KTsKIAkJCWFwcGVuZFBRRXhwQnVm ZmVyKHF1ZXJ5LAotCQkJCQkJCSAgIlNFTEVDVCBwcnJlbGlkXG4iCi0JCQkJCQkJICAiRlJPTSBw Z19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbFxuIgotCQkJCQkJCSAgIldIRVJFIHBycHViaWQg PSAldSBBTkQgcHJleGNlcHQiLAorCQkJCQkJCSAgIlNFTEVDVCBwci5wcnJlbGlkLCBwYy5yZWxr aW5kXG4iCisJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwclxu IgorCQkJCQkJCSAgIkpPSU4gcGdfY2F0YWxvZy5wZ19jbGFzcyBwYyBPTiBwci5wcnJlbGlkID0g cGMub2lkXG4iCisJCQkJCQkJICAiV0hFUkUgcHIucHJwdWJpZCA9ICV1IEFORCBwci5wcmV4Y2Vw dCIsCiAJCQkJCQkJICBwdWJpbmZvW2ldLmRvYmouY2F0SWQub2lkKTsKIAogCQkJcmVzX3RibHMg PSBFeGVjdXRlU3FsUXVlcnkoZm91dCwgcXVlcnktPmRhdGEsIFBHUkVTX1RVUExFU19PSyk7CkBA IC00NjU0LDE0ICs0NjU5LDIxIEBAIGdldFB1YmxpY2F0aW9ucyhBcmNoaXZlICpmb3V0KQogCQkJ Zm9yIChpbnQgaiA9IDA7IGogPCBudGJsczsgaisrKQogCQkJewogCQkJCU9pZAkJCXBycmVsaWQ7 CisJCQkJY2hhcgkJcmVsa2luZDsKIAkJCQlUYWJsZUluZm8gICp0YmluZm87CiAKIAkJCQlwcnJl bGlkID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzX3RibHMsIGosIDApKTsKKwkJCQlyZWxraW5kID0g KlBRZ2V0dmFsdWUocmVzX3RibHMsIGosIDEpOwogCiAJCQkJdGJpbmZvID0gZmluZFRhYmxlQnlP aWQocHJyZWxpZCk7CiAKIAkJCQlpZiAodGJpbmZvICE9IE5VTEwpCi0JCQkJCXNpbXBsZV9wdHJf bGlzdF9hcHBlbmQoJnB1YmluZm9baV0uZXhjZXB0X3RhYmxlcywgdGJpbmZvKTsKKwkJCQl7CisJ CQkJCWlmIChyZWxraW5kID09IFJFTEtJTkRfU0VRVUVOQ0UpCisJCQkJCQlzaW1wbGVfcHRyX2xp c3RfYXBwZW5kKCZwdWJpbmZvW2ldLmV4Y2VwdF9zZXF1ZW5jZXMsIHRiaW5mbyk7CisJCQkJCWVs c2UKKwkJCQkJCXNpbXBsZV9wdHJfbGlzdF9hcHBlbmQoJnB1YmluZm9baV0uZXhjZXB0X3RhYmxl cywgdGJpbmZvKTsKKwkJCQl9CiAJCQl9CiAKIAkJCVBRY2xlYXIocmVzX3RibHMpOwpAQCAtNDcy MSwxMiArNDczMywzMCBAQCBkdW1wUHVibGljYXRpb24oQXJjaGl2ZSAqZm91dCwgY29uc3QgUHVi bGljYXRpb25JbmZvICpwdWJpbmZvKQogCQl9CiAJCWlmIChuX2V4Y2VwdCA+IDApCiAJCQlhcHBl bmRQUUV4cEJ1ZmZlckNoYXIocXVlcnksICcpJyk7CisJfQorCWlmIChwdWJpbmZvLT5wdWJhbGxz ZXF1ZW5jZXMpCisJeworCQlpbnQJCQluX2V4Y2VwdCA9IDA7CiAKLQkJaWYgKHB1YmluZm8tPnB1 YmFsbHNlcXVlbmNlcykKKwkJaWYgKHB1YmluZm8tPnB1YmFsbHRhYmxlcykKIAkJCWFwcGVuZFBR RXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBBTEwgU0VRVUVOQ0VTIik7CisJCWVsc2UKKwkJCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIEZPUiBBTEwgU0VRVUVOQ0VTIik7CisKKwkJLyogSW5j bHVkZSBFWENFUFQgKFNFUVVFTkNFKSBjbGF1c2UgaWYgdGhlcmUgYXJlIGV4Y2VwdF9zZXF1ZW5j ZXMuICovCisJCWZvciAoU2ltcGxlUHRyTGlzdENlbGwgKmNlbGwgPSBwdWJpbmZvLT5leGNlcHRf c2VxdWVuY2VzLmhlYWQ7IGNlbGw7IGNlbGwgPSBjZWxsLT5uZXh0KQorCQl7CisJCQlUYWJsZUlu Zm8gICp0YmluZm8gPSAoVGFibGVJbmZvICopIGNlbGwtPnB0cjsKKworCQkJaWYgKCsrbl9leGNl cHQgPT0gMSkKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBFWENFUFQgKCIpOwor CQkJZWxzZQorCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCAiKTsKKwkJCWFwcGVu ZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiU0VRVUVOQ0UgJXMiLCBmbXRRdWFsaWZpZWREdW1wYWJsZSh0 YmluZm8pKTsKKwkJfQorCQlpZiAobl9leGNlcHQgPiAwKQorCQkJYXBwZW5kUFFFeHBCdWZmZXJD aGFyKHF1ZXJ5LCAnKScpOwogCX0KLQllbHNlIGlmIChwdWJpbmZvLT5wdWJhbGxzZXF1ZW5jZXMp Ci0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIEZPUiBBTEwgU0VRVUVOQ0VTIik7CiAK IAlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBXSVRIIChwdWJsaXNoID0gJyIpOwogCWlm IChwdWJpbmZvLT5wdWJpbnNlcnQpCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAppbmRleCA1YTY3MjZkOGIxMi4uOGU4Njlm ZTc5MWEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXAuaApAQCAtNjc5LDYgKzY3OSw3IEBAIHR5cGVkZWYgc3RydWN0IF9Q dWJsaWNhdGlvbkluZm8KIAlib29sCQlwdWJ2aWFyb290OwogCVB1Ymxpc2hHZW5jb2xzVHlwZSBw dWJnZW5jb2xzX3R5cGU7CiAJU2ltcGxlUHRyTGlzdCBleGNlcHRfdGFibGVzOworCVNpbXBsZVB0 ckxpc3QgZXhjZXB0X3NlcXVlbmNlczsKIH0gUHVibGljYXRpb25JbmZvOwogCiAvKgpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgYi9zcmMvYmluL3BnX2R1bXAv dC8wMDJfcGdfZHVtcC5wbAppbmRleCAzZWU5ZmRhNTBlNC4uNGIyYzg4ZTIzYTIgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCisrKyBiL3NyYy9iaW4vcGdfZHVt cC90LzAwMl9wZ19kdW1wLnBsCkBAIC0zMjQyLDYgKzMyNDIsMjYgQEAgbXkgJXRlc3RzID0gKAog CQlsaWtlID0+IHsgJWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwKIAl9LAog CisJJ0NSRUFURSBQVUJMSUNBVElPTiBwdWIxMScgPT4geworCQljcmVhdGVfb3JkZXIgPT4gOTIs CisJCWNyZWF0ZV9zcWwgPT4KKwkJICAnQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjExIEZPUiBBTEwg U0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0UgcHVibGljLnRlc3RfdGFibGVfY29sMV9zZXEpOycs CisJCXJlZ2V4cCA9PiBxci9eCisJCQlcUUNSRUFURSBQVUJMSUNBVElPTiBwdWIxMSBGT1IgQUxM IFNFUVVFTkNFUyBFWENFUFQgKFNFUVVFTkNFIHB1YmxpYy50ZXN0X3RhYmxlX2NvbDFfc2VxKSBX SVRIIChwdWJsaXNoID0gJ2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5jYXRlJyk7XEUKKwkJ CS94bSwKKwkJbGlrZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0s CisJfSwKKworCSdDUkVBVEUgUFVCTElDQVRJT04gcHViMTInID0+IHsKKwkJY3JlYXRlX29yZGVy ID0+IDkyLAorCQljcmVhdGVfc3FsID0+CisJCSAgJ0NSRUFURSBQVUJMSUNBVElPTiBwdWIxMiBG T1IgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIGR1bXBfdGVzdC50ZXN0X3RhYmxlKSwgQUxMIFNF UVVFTkNFUyBFWENFUFQgKFNFUVVFTkNFIHB1YmxpYy50ZXN0X3RhYmxlX2NvbDFfc2VxKTsnLAor CQlyZWdleHAgPT4gcXIvXgorCQkJXFFDUkVBVEUgUFVCTElDQVRJT04gcHViMTIgRk9SIEFMTCBU QUJMRVMgRVhDRVBUIChUQUJMRSBPTkxZIGR1bXBfdGVzdC50ZXN0X3RhYmxlKSwgQUxMIFNFUVVF TkNFUyBFWENFUFQgKFNFUVVFTkNFIHB1YmxpYy50ZXN0X3RhYmxlX2NvbDFfc2VxKSBXSVRIIChw dWJsaXNoID0gJ2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5jYXRlJyk7XEUKKwkJCS94bSwK KwkJbGlrZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCisJfSwK KwogCSdDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YjEnID0+IHsKIAkJY3JlYXRlX29yZGVyID0+IDUw LAogCQljcmVhdGVfc3FsID0+ICdDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YjEKQEAgLTQwNDIsNiAr NDA2Miw4IEBAIG15ICV0ZXN0cyA9ICgKIAl9LAogCiAJJ0NSRUFURSBTRVFVRU5DRSB0ZXN0X3Rh YmxlX2NvbDFfc2VxJyA9PiB7CisJCWNyZWF0ZV9vcmRlciA9PiA5MCwKKwkJY3JlYXRlX3NxbCA9 PiAnQ1JFQVRFIFNFUVVFTkNFIHRlc3RfdGFibGVfY29sMV9zZXEnLAogCQlyZWdleHAgPT4gcXIv XgogCQkJXFFDUkVBVEUgU0VRVUVOQ0UgZHVtcF90ZXN0LnRlc3RfdGFibGVfY29sMV9zZXFcRQog CQkJXG5ccytcUUFTIGludGVnZXJcRQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJl LmMgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwppbmRleCBlMTQ0OTY1NGY5Ni4uZTNlNzE4NmUw MTEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNx bC9kZXNjcmliZS5jCkBAIC0xNzc4LDcgKzE3NzgsNyBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWls cyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCXsKIAkJUEdyZXN1bHQgICAqcmVzdWx0ID0gTlVM TDsKIAkJcHJpbnRRdWVyeU9wdCBteW9wdCA9IHBzZXQucG9wdDsKLQkJY2hhcgkgICAqZm9vdGVy c1szXSA9IHtOVUxMLCBOVUxMLCBOVUxMfTsKKwkJY2hhcgkgICAqZm9vdGVyc1s0XSA9IHtOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfTsKIAogCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiLyogJXMg Ki9cbiIsIF8oIkdldCBzZXF1ZW5jZSBpbmZvcm1hdGlvbiIpKTsKIAkJaWYgKHBzZXQuc3ZlcnNp b24gPj0gMTAwMDAwKQpAQCAtMTg4MiwxMSArMTg4MiwxNiBAQCBkZXNjcmliZU9uZVRhYmxlRGV0 YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQl7CiAJCQlwcmludGZQUUV4cEJ1ZmZlcigm YnVmLCAiLyogJXMgKi9cbiIsCiAJCQkJCQkJICBfKCJHZXQgcHVibGljYXRpb25zIGNvbnRhaW5p bmcgdGhpcyBzZXF1ZW5jZSIpKTsKLQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsICJTRUxFQ1Qg cHVibmFtZSBGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb24gcCIKKwkJCWFwcGVuZFBRRXhw QnVmZmVyKCZidWYsICJTRUxFQ1QgcC5wdWJuYW1lIEZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNh dGlvbiBwIgogCQkJCQkJCSAgIlxuV0hFUkUgcC5wdWJhbGxzZXF1ZW5jZXMiCiAJCQkJCQkJICAi XG4gQU5EIHBnX2NhdGFsb2cucGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUoJyVzJykiCisJCQkJ CQkJICAiXG4gQU5EIE5PVCBFWElTVFMgKFxuIgorCQkJCQkJCSAgIiAgICAgU0VMRUNUIDFcbiIK KwkJCQkJCQkgICIgICAgIEZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHJcbiIK KwkJCQkJCQkgICIgICAgIFdIRVJFIHByLnBycHViaWQgPSBwLm9pZCBBTkRcbiIKKwkJCQkJCQkg ICIgICAgIHByLnBycmVsaWQgPSAnJXMnKSIKIAkJCQkJCQkgICJcbk9SREVSIEJZIDEiLAotCQkJ CQkJCSAgb2lkKTsKKwkJCQkJCQkgIG9pZCwgb2lkKTsKIAogCQkJcmVzdWx0ID0gUFNRTGV4ZWMo YnVmLmRhdGEpOwogCQkJaWYgKHJlc3VsdCkKQEAgLTE5MTIsNiArMTkxNyw0MiBAQCBkZXNjcmli ZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkJfQogCQl9CiAKKwkJ LyogUHJpbnQgcHVibGljYXRpb25zIHdoZXJlIHRoZSBzZXF1ZW5jZSBpcyBpbiB0aGUgRVhDRVBU IGNsYXVzZSAqLworCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxOTAwMDApCisJCXsKKwkJCXByaW50 ZlBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkJICAiU0VMRUNUIHAucHVibmFtZVxuIgorCQkJCQkJ CSAgIkZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBwXG4iCisJCQkJCQkJICAiSk9JTiBw Z19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwciBPTiBwLm9pZCA9IHByLnBycHViaWRcbiIK KwkJCQkJCQkgICJXSEVSRSBwci5wcnJlbGlkID0gJyVzJyBBTkQgcHIucHJleGNlcHRcbiIKKwkJ CQkJCQkgICJPUkRFUiBCWSAxOyIsIG9pZCk7CisKKwkJCXJlc3VsdCA9IFBTUUxleGVjKGJ1Zi5k YXRhKTsKKwkJCWlmIChyZXN1bHQpCisJCQl7CisJCQkJaW50CQkJdHVwbGVzID0gUFFudHVwbGVz KHJlc3VsdCk7CisKKwkJCQlpZiAodHVwbGVzID4gMCkKKwkJCQl7CisJCQkJCXByaW50ZlBRRXhw QnVmZmVyKCZ0bXBidWYsIF8oIkV4Y2x1ZGVkIGZyb20gcHVibGljYXRpb25zOiIpKTsKKworCQkJ CQkvKiBNaWdodCBiZSBhbiBlbXB0eSBzZXQgLSB0aGF0J3Mgb2sgKi8KKwkJCQkJZm9yIChpID0g MDsgaSA8IHR1cGxlczsgaSsrKQorCQkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJnRtcGJ1ZiwgIlxu ICAgIFwiJXNcIiIsIFBRZ2V0dmFsdWUocmVzdWx0LCBpLCAwKSk7CisKKwkJCQkJaWYgKGZvb3Rl cnNbMF0gPT0gTlVMTCkKKwkJCQkJCWZvb3RlcnNbMF0gPSBwZ19zdHJkdXAodG1wYnVmLmRhdGEp OworCQkJCQllbHNlIGlmIChmb290ZXJzWzFdID09IE5VTEwpCisJCQkJCQlmb290ZXJzWzFdID0g cGdfc3RyZHVwKHRtcGJ1Zi5kYXRhKTsKKwkJCQkJZWxzZQorCQkJCQkJZm9vdGVyc1syXSA9IHBn X3N0cmR1cCh0bXBidWYuZGF0YSk7CisJCQkJCXJlc2V0UFFFeHBCdWZmZXIoJnRtcGJ1Zik7CisJ CQkJfQorCisJCQkJUFFjbGVhcihyZXN1bHQpOworCQkJfQorCQl9CisKIAkJaWYgKHRhYmxlaW5m by5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9VTkxPR0dFRCkKIAkJCXByaW50ZlBR RXhwQnVmZmVyKCZ0aXRsZSwgXygiVW5sb2dnZWQgc2VxdWVuY2UgXCIlcy4lc1wiIiksCiAJCQkJ CQkJICBzY2hlbWFuYW1lLCByZWxhdGlvbm5hbWUpOwpAQCAtMTkyOCw2ICsxOTY5LDcgQEAgZGVz Y3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAogCQlmcmVlKGZv b3RlcnNbMF0pOwogCQlmcmVlKGZvb3RlcnNbMV0pOworCQlmcmVlKGZvb3RlcnNbMl0pOwogCiAJ CXJldHZhbCA9IHRydWU7CiAJCWdvdG8gZXJyb3JfcmV0dXJuOwkJLyogbm90IGFuIGVycm9yLCBq dXN0IHJldHVybiBlYXJseSAqLwpAQCAtNjk1MCw2ICs2OTkyLDcgQEAgZGVzY3JpYmVQdWJsaWNh dGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAkJY2hhcgkgICAqcHViaWQgPSBQUWdldHZhbHVl KHJlcywgaSwgMCk7CiAJCWNoYXIJICAgKnB1Ym5hbWUgPSBQUWdldHZhbHVlKHJlcywgaSwgMSk7 CiAJCWJvb2wJCXB1YmFsbHRhYmxlcyA9IHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgMyksICJ0 IikgPT0gMDsKKwkJYm9vbAkJcHViYWxsc2VxdWVuY2VzID0gc3RyY21wKFBRZ2V0dmFsdWUocmVz LCBpLCA0KSwgInQiKSA9PSAwOwogCQlwcmludFRhYmxlT3B0IG15b3B0ID0gcHNldC5wb3B0LnRv cHQ7CiAKIAkJaW5pdFBRRXhwQnVmZmVyKCZ0aXRsZSk7CkBAIC02OTg2LDcgKzcwMjksNyBAQCBk ZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQkJcHJpbnRUYWJsZUFk ZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCAxMCksIGZhbHNlLCBmYWxzZSk7CiAJCXBy aW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgMTEpLCBmYWxzZSwgZmFs c2UpOwogCi0JCWlmICghcHViYWxsdGFibGVzKQorCQlpZiAoIXB1YmFsbHRhYmxlcyAmJiAhcHVi YWxsc2VxdWVuY2VzKQogCQl7CiAJCQkvKiBHZXQgdGhlIHRhYmxlcyBmb3IgdGhlIHNwZWNpZmll ZCBwdWJsaWNhdGlvbiAqLwogCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIi8qICVzICovXG4i LApAQCAtNzA0MCw3ICs3MDgzLDcgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAq cGF0dGVybikKIAkJCQkJZ290byBlcnJvcl9yZXR1cm47CiAJCQl9CiAJCX0KLQkJZWxzZQorCQlp ZiAocHViYWxsdGFibGVzKQogCQl7CiAJCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxOTAwMDApCiAJ CQl7CkBAIC03MDUyLDEzICs3MDk1LDMyIEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNo YXIgKnBhdHRlcm4pCiAJCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjXG4iCiAJ CQkJCQkJCSAgIiAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX25hbWVzcGFjZSBuIE9OIG4ub2lkID0g Yy5yZWxuYW1lc3BhY2VcbiIKIAkJCQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdfcHVi bGljYXRpb25fcmVsIHByIE9OIGMub2lkID0gcHIucHJyZWxpZFxuIgotCQkJCQkJCQkgICJXSEVS RSBwci5wcnB1YmlkID0gJyVzJyBBTkQgcHIucHJleGNlcHRcbiIKKwkJCQkJCQkJICAiV0hFUkUg cHIucHJwdWJpZCA9ICclcycgQU5EIHByLnByZXhjZXB0IEFORCBjLnJlbGtpbmQgSU4gKCdyJywn cCcpXG4iCiAJCQkJCQkJCSAgIk9SREVSIEJZIDEiLCBwdWJpZCk7CiAJCQkJaWYgKCFhZGRGb290 ZXJUb1B1YmxpY2F0aW9uRGVzYygmYnVmLCBfKCJFeGNlcHQgdGFibGVzOiIpLAogCQkJCQkJCQkJ CQkJdHJ1ZSwgJmNvbnQpKQogCQkJCQlnb3RvIGVycm9yX3JldHVybjsKIAkJCX0KIAkJfQorCQlp ZiAocHViYWxsc2VxdWVuY2VzKQorCQl7CisJCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxOTAwMDAp CisJCQl7CisJCQkJLyogR2V0IHNlcXVlbmNlcyBpbiB0aGUgRVhDRVBUIGNsYXVzZSBmb3IgdGhp cyBwdWJsaWNhdGlvbiAqLworCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIvKiAlcyAqL1xu IiwKKwkJCQkJCQkJICBfKCJHZXQgc2VxdWVuY2VzIGV4Y2x1ZGVkIGJ5IHRoaXMgcHVibGljYXRp b24iKSk7CisJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkJICAiU0VMRUNUIG4u bnNwbmFtZSB8fCAnLicgfHwgYy5yZWxuYW1lXG4iCisJCQkJCQkJCSAgIkZST00gcGdfY2F0YWxv Zy5wZ19jbGFzcyBjXG4iCisJCQkJCQkJCSAgIiAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX25hbWVz cGFjZSBuIE9OIG4ub2lkID0gYy5yZWxuYW1lc3BhY2VcbiIKKwkJCQkJCQkJICAiICAgICBKT0lO IHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByIE9OIGMub2lkID0gcHIucHJyZWxpZFxu IgorCQkJCQkJCQkgICJXSEVSRSBwci5wcnB1YmlkID0gJyVzJyBBTkQgcHIucHJleGNlcHQgQU5E IGMucmVsa2luZCA9ICdTJ1xuIgorCQkJCQkJCQkgICJPUkRFUiBCWSAxIiwgcHViaWQpOworCQkJ CWlmICghYWRkRm9vdGVyVG9QdWJsaWNhdGlvbkRlc2MoJmJ1ZiwgXygiRXhjZXB0IHNlcXVlbmNl czoiKSwKKwkJCQkJCQkJCQkJCXRydWUsICZjb250KSkKKwkJCQkJZ290byBlcnJvcl9yZXR1cm47 CisJCQl9CisJCX0KIAogCQlwcmludFRhYmxlKCZjb250LCBwc2V0LnF1ZXJ5Rm91dCwgZmFsc2Us IHBzZXQubG9nZmlsZSk7CiAJCXByaW50VGFibGVDbGVhbnVwKCZjb250KTsKZGlmZiAtLWdpdCBh L3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxl dGUuaW4uYwppbmRleCBkZTU0N2E4Y2IzNy4uMTJkMjc2Y2JiNjUgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRl LmluLmMKQEAgLTM3NjEsNiArMzc2MSwxOCBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0 dGVybl9pZCwKIAkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2Zf dGFibGVzKTsKIAllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRj aEFueSwgIkZPUiIsICJBTEwiLCAiVEFCTEVTIiwgIkVYQ0VQVCIsICIoIiwgIlRBQkxFIiwgTWF0 Y2hBbnlOKSAmJiAhZW5kc193aXRoKHByZXZfd2QsICcsJykpCiAJCUNPTVBMRVRFX1dJVEgoIiki KTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwg IkZPUiIsICJBTEwiLCAiU0VRVUVOQ0VTIikpCisJCUNPTVBMRVRFX1dJVEgoIkVYQ0VQVCAoIFNF UVVFTkNFIiwgIldJVEggKCIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNB VElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIsICJTRVFVRU5DRVMiLCAiRVhDRVBUIikpCisJ CUNPTVBMRVRFX1dJVEgoIiggU0VRVUVOQ0UiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUi LCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJBTEwiLCAiU0VRVUVOQ0VTIiwgIkVY Q0VQVCIsICIoIikpCisJCUNPTVBMRVRFX1dJVEgoIlNFUVVFTkNFIik7CisJZWxzZSBpZiAoTWF0 Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlNF UVVFTkNFUyIsICJFWENFUFQiLCAiKCIsICJTRVFVRU5DRSIpKQorCQlDT01QTEVURV9XSVRIX1ND SEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl9zZXF1ZW5jZXMpOworCWVsc2UgaWYgKE1hdGNo ZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIsICJTRVFV RU5DRVMiLCAiRVhDRVBUIiwgIigiLCAiU0VRVUVOQ0UiLCBNYXRjaEFueU4pICYmIGVuZHNfd2l0 aChwcmV2X3dkLCAnLCcpKQorCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3Jf bGlzdF9vZl9zZXF1ZW5jZXMpOworCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNB VElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIsICJTRVFVRU5DRVMiLCAiRVhDRVBUIiwgIigi LCAiU0VRVUVOQ0UiLCBNYXRjaEFueU4pICYmICFlbmRzX3dpdGgocHJldl93ZCwgJywnKSkKKwkJ Q09NUExFVEVfV0lUSCgiKSIpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNB VElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIlRBQkxFUyIpKQogCQlDT01QTEVURV9XSVRIKCJJTiBT Q0hFTUEiKTsKIAllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRj aEFueSwgIkZPUiIsICJUQUJMRSIsIE1hdGNoQW55KSAmJiAhZW5kc193aXRoKHByZXZfd2QsICcs JykpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmggYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKaW5kZXggODliNGJiMTRmNjIuLjQ5 YzI5YTg3NjMwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9u LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCkBAIC0xNzcsOCAr MTc3LDggQEAgdHlwZWRlZiBlbnVtIFB1YmxpY2F0aW9uUGFydE9wdAogCiBleHRlcm4gTGlzdCAq R2V0SW5jbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsCiAJCQkJCQkJCQkJCSBQ dWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpOwotZXh0ZXJuIExpc3QgKkdldEV4Y2x1ZGVk UHVibGljYXRpb25UYWJsZXMoT2lkIHB1YmlkLAotCQkJCQkJCQkJCSAgUHVibGljYXRpb25QYXJ0 T3B0IHB1Yl9wYXJ0b3B0KTsKK2V4dGVybiBMaXN0ICpHZXRFeGNsdWRlZFB1YmxpY2F0aW9uUmVs YXRpb25zKE9pZCBwdWJpZCwKKwkJCQkJCQkJCQkJIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFy dG9wdCk7CiBleHRlcm4gTGlzdCAqR2V0QWxsVGFibGVzUHVibGljYXRpb25zKHZvaWQpOwogZXh0 ZXJuIExpc3QgKkdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgY2hhciByZWxr aW5kLCBib29sIHB1YnZpYXJvb3QpOwogZXh0ZXJuIExpc3QgKkdldFB1YmxpY2F0aW9uU2NoZW1h cyhPaWQgcHViaWQpOwpAQCAtMjAwLDcgKzIwMCw4IEBAIGV4dGVybiBib29sIGNoZWNrX2FuZF9m ZXRjaF9jb2x1bW5fbGlzdChQdWJsaWNhdGlvbiAqcHViLCBPaWQgcmVsaWQsCiAJCQkJCQkJCQkJ TWVtb3J5Q29udGV4dCBtY3h0LCBCaXRtYXBzZXQgKipjb2xzKTsKIGV4dGVybiBPYmplY3RBZGRy ZXNzIHB1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihPaWQgcHViaWQsIFB1YmxpY2F0aW9uUmVsSW5m byAqcHJpLAogCQkJCQkJCQkJCQkgIGJvb2wgaWZfbm90X2V4aXN0cywKLQkJCQkJCQkJCQkJICBB bHRlclB1YmxpY2F0aW9uU3RtdCAqYWx0ZXJfc3RtdCk7CisJCQkJCQkJCQkJCSAgQWx0ZXJQdWJs aWNhdGlvblN0bXQgKmFsdGVyX3N0bXQsCisJCQkJCQkJCQkJCSAgY2hhciBwdWJyZWxraW5kKTsK IGV4dGVybiBCaXRtYXBzZXQgKnB1Yl9jb2xsaXN0X3ZhbGlkYXRlKFJlbGF0aW9uIHRhcmdldHJl bCwgTGlzdCAqY29sdW1ucyk7CiBleHRlcm4gT2JqZWN0QWRkcmVzcyBwdWJsaWNhdGlvbl9hZGRf c2NoZW1hKE9pZCBwdWJpZCwgT2lkIHNjaGVtYWlkLAogCQkJCQkJCQkJCQlib29sIGlmX25vdF9l eGlzdHMpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDkxMzc3YTZjZGUzLi4yMDRhZWE2MTBj YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9p bmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtNDQ2NSwxNCArNDQ2NSwxNCBAQCB0eXBlZGVm IHN0cnVjdCBBbHRlclRTQ29uZmlndXJhdGlvblN0bXQKIAlib29sCQltaXNzaW5nX29rOwkJLyog Zm9yIERST1AgLSBza2lwIGVycm9yIGlmIG1pc3Npbmc/ICovCiB9IEFsdGVyVFNDb25maWd1cmF0 aW9uU3RtdDsKIAotdHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25UYWJsZQordHlwZWRlZiBzdHJ1 Y3QgUHVibGljYXRpb25SZWxhdGlvbgogewogCU5vZGVUYWcJCXR5cGU7CiAJUmFuZ2VWYXIgICAq cmVsYXRpb247CQkvKiBwdWJsaWNhdGlvbiByZWxhdGlvbiAqLwogCU5vZGUJICAgKndoZXJlQ2xh dXNlOwkvKiBxdWFsaWZpY2F0aW9ucyAqLwogCUxpc3QJICAgKmNvbHVtbnM7CQkvKiBMaXN0IG9m IGNvbHVtbnMgaW4gYSBwdWJsaWNhdGlvbiB0YWJsZSAqLwogCWJvb2wJCWV4Y2VwdDsJCQkvKiBU cnVlIGlmIGxpc3RlZCBpbiB0aGUgRVhDRVBUIGNsYXVzZSAqLwotfSBQdWJsaWNhdGlvblRhYmxl OworfSBQdWJsaWNhdGlvblJlbGF0aW9uOwogCiAvKgogICogUHVibGljYXRpb24gb2JqZWN0IHR5 cGUKQEAgLTQ0ODEsNiArNDQ4MSw3IEBAIHR5cGVkZWYgZW51bSBQdWJsaWNhdGlvbk9ialNwZWNU eXBlCiB7CiAJUFVCTElDQVRJT05PQkpfVEFCTEUsCQkvKiBBIHRhYmxlICovCiAJUFVCTElDQVRJ T05PQkpfRVhDRVBUX1RBQkxFLAkvKiBBIHRhYmxlIGluIHRoZSBFWENFUFQgY2xhdXNlICovCisJ UFVCTElDQVRJT05PQkpfRVhDRVBUX1NFUVVFTkNFLCAvKiBBIHNlcXVlbmNlIGluIHRoZSBFWENF UFQgY2xhdXNlICovCiAJUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX1NDSEVNQSwJLyogQWxsIHRh YmxlcyBpbiBzY2hlbWEgKi8KIAlQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fQ1VSX1NDSEVNQSwJ LyogQWxsIHRhYmxlcyBpbiBmaXJzdCBlbGVtZW50IG9mCiAJCQkJCQkJCQkJCSAqIHNlYXJjaF9w YXRoICovCkBAIC00NDkyLDcgKzQ0OTMsNyBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvbk9i alNwZWMKIAlOb2RlVGFnCQl0eXBlOwogCVB1YmxpY2F0aW9uT2JqU3BlY1R5cGUgcHVib2JqdHlw ZTsJLyogdHlwZSBvZiB0aGlzIHB1YmxpY2F0aW9uIG9iamVjdCAqLwogCWNoYXIJICAgKm5hbWU7 Ci0JUHVibGljYXRpb25UYWJsZSAqcHVidGFibGU7CisJUHVibGljYXRpb25SZWxhdGlvbiAqcHVi cmVsYXRpb247CiAJUGFyc2VMb2MJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEg aWYgdW5rbm93biAqLwogfSBQdWJsaWNhdGlvbk9ialNwZWM7CiAKQEAgLTQ1MDksNyArNDUxMCw5 IEBAIHR5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uQWxsT2JqU3BlYwogewogCU5vZGVUYWcJCXR5 cGU7CiAJUHVibGljYXRpb25BbGxPYmpUeXBlIHB1Ym9ianR5cGU7CS8qIHR5cGUgb2YgdGhpcyBw dWJsaWNhdGlvbiBvYmplY3QgKi8KLQlMaXN0CSAgICpleGNlcHRfdGFibGVzOwkvKiB0YWJsZXMg c3BlY2lmaWVkIGluIHRoZSBFWENFUFQgY2xhdXNlICovCisJTGlzdAkgICAqZXhjZXB0X3JlbGF0 aW9uczsJLyogZGVwZW5kaW5nIG9uIHRoZSAncHVib2JqdHlwZScsIHRoaXMgaXMKKwkJCQkJCQkJ CSAqIGEgbGlzdCBvZiBlaXRoZXIgdGFibGVzIG9yIHNlcXVlbmNlcworCQkJCQkJCQkJICogc3Bl Y2lmaWVkIGluIHRoZSBFWENFUFQgY2xhdXNlICovCiAJUGFyc2VMb2MJbG9jYXRpb247CQkvKiB0 b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwogfSBQdWJsaWNhdGlvbkFsbE9ialNw ZWM7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24u b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKaW5kZXggMjll NTRiMjE0YTAuLjE1YzMwZmZlZWZjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3B1YmxpY2F0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1Ymxp Y2F0aW9uLm91dApAQCAtNDU4LDcgKzQ1OCw3IEBAIEV4Y2x1ZGVkIGZyb20gcHVibGljYXRpb25z OgogTnVtYmVyIG9mIHBhcnRpdGlvbnM6IDEgKFVzZSBcZCsgdG8gbGlzdCB0aGVtLikKIAogQ1JF QVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI5IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAoVEFCTEUgdGVz dHB1Yl9wYXJ0MSk7Ci1FUlJPUjogIGNhbm5vdCBzcGVjaWZ5IHJlbGF0aW9uICJwdWJsaWMudGVz dHB1Yl9wYXJ0MSIgaW4gdGhlIHB1YmxpY2F0aW9uIEVYQ0VQVCBjbGF1c2UKK0VSUk9SOiAgY2Fu bm90IHNwZWNpZnkgInB1YmxpYy50ZXN0cHViX3BhcnQxIiBpbiB0aGUgcHVibGljYXRpb24gRVhD RVBUIChUQUJMRSkgY2xhdXNlCiBERVRBSUw6ICBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9y dGVkIGZvciBpbmRpdmlkdWFsIHBhcnRpdGlvbnMuCiBDUkVBVEUgVEFCTEUgdGFiX21haW4gKGEg aW50KSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7CiAtLSBBdHRhY2hpbmcgYSBwYXJ0aXRpb24gaXMg bm90IGFsbG93ZWQgaWYgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGFwcGVhcnMgaW4gYQpAQCAtNDcz LDYgKzQ3Myw3IEBAIERST1AgUFVCTElDQVRJT04gdGVzdHB1Yjg7CiAtLS0gVGVzdHMgZm9yIHB1 YmxpY2F0aW9ucyB3aXRoIFNFUVVFTkNFUwogQ1JFQVRFIFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3Nl cTA7CiBDUkVBVEUgU0VRVUVOQ0UgcHViX3Rlc3QucmVncmVzc19wdWJfc2VxMTsKK0NSRUFURSBT RVFVRU5DRSByZWdyZXNzX3B1Yl9zZXEyOwogLS0gRk9SIEFMTCBTRVFVRU5DRVMKIFNFVCBjbGll bnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElPTiByZWdyZXNzX3B1 Yl9mb3JhbGxzZXF1ZW5jZXMxIEZPUiBBTEwgU0VRVUVOQ0VTOwpAQCAtNTM0LDEwICs1MzUsNjQg QEAgU0VMRUNUIHB1Ym5hbWUsIHB1YmFsbHRhYmxlcywgcHViYWxsc2VxdWVuY2VzIEZST00gcGdf cHVibGljYXRpb24gV0hFUkUgcHVibmFtZQogIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQg ICAgICAgICAgfCB0ICAgICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwg ZiAgICAgICAgIHwgc3RvcmVkICAgICAgICAgICAgfCBmICAgICAgICB8IAogKDEgcm93KQogCi1E Uk9QIFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3NlcTAsIHB1Yl90ZXN0LnJlZ3Jlc3NfcHViX3NlcTE7 CistLSBUZXN0IEFMTCBTRVFVRU5DRVMgd2l0aCBFWENFUFQgY2xhdXNlCitTRVQgY2xpZW50X21p bl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJT04gcmVncmVzc19wdWJfZm9y YWxsc2VxdWVuY2VzMyBGT1IgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNFUVVFTkNFIHJlZ3Jlc3Nf cHViX3NlcTAsIHB1Yl90ZXN0LnJlZ3Jlc3NfcHViX3NlcTEsIFNFUVVFTkNFIHJlZ3Jlc3NfcHVi X3NlcTIpOworXGRScCsgcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzMworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gcmVncmVz c19wdWJfZm9yYWxsc2VxdWVuY2VzMworICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCB8IERlc2NyaXB0aW9uIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCB0ICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmICAgICAgICB8IAorRXhjZXB0IHNlcXVl bmNlczoKKyAgICAicHViX3Rlc3QucmVncmVzc19wdWJfc2VxMSIKKyAgICAicHVibGljLnJlZ3Jl c3NfcHViX3NlcTAiCisgICAgInB1YmxpYy5yZWdyZXNzX3B1Yl9zZXEyIgorCistLSBDaGVjayB0 aGF0IHRoZSBzZXF1ZW5jZSBkZXNjcmlwdGlvbiBzaG93cyB0aGUgcHVibGljYXRpb25zIHdoZXJl IGl0IGlzIGxpc3RlZAorLS0gaW4gdGhlIEVYQ0VQVCBjbGF1c2UKK1xkKyByZWdyZXNzX3B1Yl9z ZXEwCisgICAgICAgICAgICAgICAgICAgICAgU2VxdWVuY2UgInB1YmxpYy5yZWdyZXNzX3B1Yl9z ZXEwIgorICBUeXBlICB8IFN0YXJ0IHwgTWluaW11bSB8ICAgICAgIE1heGltdW0gICAgICAgfCBJ bmNyZW1lbnQgfCBDeWNsZXM/IHwgQ2FjaGUgCistLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0KKyBiaWdp bnQgfCAgICAgMSB8ICAgICAgIDEgfCA5MjIzMzcyMDM2ODU0Nzc1ODA3IHwgICAgICAgICAxIHwg bm8gICAgICB8ICAgICAxCitJbmNsdWRlZCBpbiBwdWJsaWNhdGlvbnM6CisgICAgInJlZ3Jlc3Nf cHViX2Zvcl9hbGxzZXF1ZW5jZXNfYWxsdGFibGVzIgorICAgICJyZWdyZXNzX3B1Yl9mb3JhbGxz ZXF1ZW5jZXMxIgorICAgICJyZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMyIgorRXhjbHVkZWQg ZnJvbSBwdWJsaWNhdGlvbnM6CisgICAgInJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczMiCisK K1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CistLSBmYWlsIC0gc2VxdWVuY2Ugb2JqZWN0IGlz IHNwZWNpZmllZCBpbiBFWENFUFQgdGFibGUgbGlzdAorQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jl c3NfcHViX2ZvcmFsbHNlcXVlbmNlczQgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIChUQUJMRSByZWdy ZXNzX3B1Yl9zZXEwKTsKK0VSUk9SOiAgY2Fubm90IHNwZWNpZnkgInB1YmxpYy5yZWdyZXNzX3B1 Yl9zZXEwIiBpbiB0aGUgcHVibGljYXRpb24gRVhDRVBUIChUQUJMRSkgY2xhdXNlCitERVRBSUw6 ICBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBzZXF1ZW5jZXMuCistLSBmYWls IC0gdGFibGUgb2JqZWN0IGlzIHNwZWNpZmllZCBpbiBFWENFUFQgc2VxdWVuY2UgbGlzdAorQ1JF QVRFIFRBQkxFIHRhYl9zZXEoYSBpbnQpOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHVi X2ZvcmFsbHNlcXVlbmNlczQgRk9SIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSB0YWJf c2VxKTsKK0VSUk9SOiAgY2Fubm90IHNwZWNpZnkgInB1YmxpYy50YWJfc2VxIiBpbiB0aGUgcHVi bGljYXRpb24gRVhDRVBUIChTRVFVRU5DRSkgY2xhdXNlCitERVRBSUw6ICBUaGlzIG9wZXJhdGlv biBpcyBub3Qgc3VwcG9ydGVkIGZvciB0YWJsZXMuCistLSBUZXN0IGNvbWJpbmF0aW9uIG9mIEFM TCBTRVFVRU5DRVMgYW5kIEFMTCBUQUJMRVMgd2l0aCBFWENFUFQgY2xhdXNlCitTRVQgY2xpZW50 X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJT04gcmVncmVzc19wdWJf Zm9yX2FsbHNlcXVlbmNlc19hbGx0YWJsZXMxIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAoVEFCTEUg dGVzdHB1Yl90YmwxKSwgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNFUVVFTkNFIHJlZ3Jlc3NfcHVi X3NlcTApOworXGRScCsgcmVncmVzc19wdWJfZm9yX2FsbHNlcXVlbmNlc19hbGx0YWJsZXMxCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiBy ZWdyZXNzX3B1Yl9mb3JfYWxsc2VxdWVuY2VzX2FsbHRhYmxlczEKKyAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgfCBE ZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgdCAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZiAgICAgICAg fCAKK0V4Y2VwdCB0YWJsZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3RibDEiCitFeGNlcHQgc2Vx dWVuY2VzOgorICAgICJwdWJsaWMucmVncmVzc19wdWJfc2VxMCIKKworUkVTRVQgY2xpZW50X21p bl9tZXNzYWdlczsKK0RST1AgU0VRVUVOQ0UgcmVncmVzc19wdWJfc2VxMCwgcHViX3Rlc3QucmVn cmVzc19wdWJfc2VxMSwgcmVncmVzc19wdWJfc2VxMjsKIERST1AgUFVCTElDQVRJT04gcmVncmVz c19wdWJfZm9yYWxsc2VxdWVuY2VzMTsKIERST1AgUFVCTElDQVRJT04gcmVncmVzc19wdWJfZm9y YWxsc2VxdWVuY2VzMjsKK0RST1AgUFVCTElDQVRJT04gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVu Y2VzMzsKIERST1AgUFVCTElDQVRJT04gcmVncmVzc19wdWJfZm9yX2FsbHNlcXVlbmNlc19hbGx0 YWJsZXM7CitEUk9QIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2Zvcl9hbGxzZXF1ZW5jZXNfYWxs dGFibGVzMTsKK0RST1AgVEFCTEUgdGFiX3NlcTsKIC0tIGZhaWwgLSBTcGVjaWZ5aW5nIEFMTCBU QUJMRVMgbW9yZSB0aGFuIG9uY2UKIENSRUFURSBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3Jf YWxsc2VxdWVuY2VzX2FsbHRhYmxlcyBGT1IgQUxMIFNFUVVFTkNFUywgQUxMIFRBQkxFUywgQUxM IFRBQkxFUzsKIEVSUk9SOiAgaW52YWxpZCBwdWJsaWNhdGlvbiBvYmplY3QgbGlzdApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcHVibGljYXRpb24uc3FsCmluZGV4IDA0MWUxNGE0ZGU2Li5kNDcyNTUzYzdjZCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbApAQCAtMjIzLDYgKzIyMyw3IEBAIERS T1AgUFVCTElDQVRJT04gdGVzdHB1Yjg7CiAtLS0gVGVzdHMgZm9yIHB1YmxpY2F0aW9ucyB3aXRo IFNFUVVFTkNFUwogQ1JFQVRFIFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3NlcTA7CiBDUkVBVEUgU0VR VUVOQ0UgcHViX3Rlc3QucmVncmVzc19wdWJfc2VxMTsKK0NSRUFURSBTRVFVRU5DRSByZWdyZXNz X3B1Yl9zZXEyOwogCiAtLSBGT1IgQUxMIFNFUVVFTkNFUwogU0VUIGNsaWVudF9taW5fbWVzc2Fn ZXMgPSAnRVJST1InOwpAQCAtMjUzLDEwICsyNTQsMzUgQEAgUkVTRVQgY2xpZW50X21pbl9tZXNz YWdlczsKIFNFTEVDVCBwdWJuYW1lLCBwdWJhbGx0YWJsZXMsIHB1YmFsbHNlcXVlbmNlcyBGUk9N IHBnX3B1YmxpY2F0aW9uIFdIRVJFIHB1Ym5hbWUgPSAncmVncmVzc19wdWJfZm9yX2FsbHNlcXVl bmNlc19hbGx0YWJsZXMnOwogXGRScCsgcmVncmVzc19wdWJfZm9yX2FsbHNlcXVlbmNlc19hbGx0 YWJsZXMKIAotRFJPUCBTRVFVRU5DRSByZWdyZXNzX3B1Yl9zZXEwLCBwdWJfdGVzdC5yZWdyZXNz X3B1Yl9zZXExOworLS0gVGVzdCBBTEwgU0VRVUVOQ0VTIHdpdGggRVhDRVBUIGNsYXVzZQorU0VU IGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jl c3NfcHViX2ZvcmFsbHNlcXVlbmNlczMgRk9SIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5D RSByZWdyZXNzX3B1Yl9zZXEwLCBwdWJfdGVzdC5yZWdyZXNzX3B1Yl9zZXExLCBTRVFVRU5DRSBy ZWdyZXNzX3B1Yl9zZXEyKTsKK1xkUnArIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczMKKy0t IENoZWNrIHRoYXQgdGhlIHNlcXVlbmNlIGRlc2NyaXB0aW9uIHNob3dzIHRoZSBwdWJsaWNhdGlv bnMgd2hlcmUgaXQgaXMgbGlzdGVkCistLSBpbiB0aGUgRVhDRVBUIGNsYXVzZQorXGQrIHJlZ3Jl c3NfcHViX3NlcTAKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CisKKy0tIGZhaWwgLSBzZXF1 ZW5jZSBvYmplY3QgaXMgc3BlY2lmaWVkIGluIEVYQ0VQVCB0YWJsZSBsaXN0CitDUkVBVEUgUFVC TElDQVRJT04gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzNCBGT1IgQUxMIFRBQkxFUyBFWENF UFQgKFRBQkxFIHJlZ3Jlc3NfcHViX3NlcTApOworCistLSBmYWlsIC0gdGFibGUgb2JqZWN0IGlz IHNwZWNpZmllZCBpbiBFWENFUFQgc2VxdWVuY2UgbGlzdAorQ1JFQVRFIFRBQkxFIHRhYl9zZXEo YSBpbnQpOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczQg Rk9SIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSB0YWJfc2VxKTsKKworLS0gVGVzdCBj b21iaW5hdGlvbiBvZiBBTEwgU0VRVUVOQ0VTIGFuZCBBTEwgVEFCTEVTIHdpdGggRVhDRVBUIGNs YXVzZQorU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FU SU9OIHJlZ3Jlc3NfcHViX2Zvcl9hbGxzZXF1ZW5jZXNfYWxsdGFibGVzMSBGT1IgQUxMIFRBQkxF UyBFWENFUFQgKFRBQkxFIHRlc3RwdWJfdGJsMSksIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFV RU5DRSByZWdyZXNzX3B1Yl9zZXEwKTsKK1xkUnArIHJlZ3Jlc3NfcHViX2Zvcl9hbGxzZXF1ZW5j ZXNfYWxsdGFibGVzMQorUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKKworRFJPUCBTRVFVRU5D RSByZWdyZXNzX3B1Yl9zZXEwLCBwdWJfdGVzdC5yZWdyZXNzX3B1Yl9zZXExLCByZWdyZXNzX3B1 Yl9zZXEyOwogRFJPUCBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMxOwog RFJPUCBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMyOworRFJPUCBQVUJM SUNBVElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMzOwogRFJPUCBQVUJMSUNBVElPTiBy ZWdyZXNzX3B1Yl9mb3JfYWxsc2VxdWVuY2VzX2FsbHRhYmxlczsKK0RST1AgUFVCTElDQVRJT04g cmVncmVzc19wdWJfZm9yX2FsbHNlcXVlbmNlc19hbGx0YWJsZXMxOworRFJPUCBUQUJMRSB0YWJf c2VxOwogCiAtLSBmYWlsIC0gU3BlY2lmeWluZyBBTEwgVEFCTEVTIG1vcmUgdGhhbiBvbmNlCiBD UkVBVEUgUFVCTElDQVRJT04gcmVncmVzc19wdWJfZm9yX2FsbHNlcXVlbmNlc19hbGx0YWJsZXMg Rk9SIEFMTCBTRVFVRU5DRVMsIEFMTCBUQUJMRVMsIEFMTCBUQUJMRVM7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDM3X2V4Y2VwdC5wbAppbmRleCA4YzU4ZDI4MmVlZS4uYzAzYzc3YmI0MWUgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwKKysrIGIvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2VwdC5wbApAQCAtMjgyLDYgKzI4Miw4MSBAQCAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgU1VCU0NSSVBUSU9OIHRh cF9zdWInKTsKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFBV QkxJQ0FUSU9OIHRhcF9wdWIxJyk7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAnRFJPUCBQVUJMSUNBVElPTiB0YXBfcHViMicpOwogCisjID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIEVYQ0VQVCBjbGF1c2UgdGVzdCBjYXNlcyBm b3Igc2VxdWVuY2VzCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSAoCisJQ1JF QVRFIFRBQkxFIHNlcV90ZXN0ICh2IEJJR0lOVCk7CisJQ1JFQVRFIFNFUVVFTkNFIHNlcTE7CisJ Q1JFQVRFIFNFUVVFTkNFIHNlcTI7CisJSU5TRVJUIElOVE8gc2VxX3Rlc3QgU0VMRUNUIG5leHR2 YWwoJ3NlcTEnKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCk7CisJSU5TRVJUIElOVE8gc2Vx X3Rlc3QgU0VMRUNUIG5leHR2YWwoJ3NlcTInKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCk7 CisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIxIEZPUiBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAo U0VRVUVOQ0Ugc2VxMSk7CispKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9z dGdyZXMnLCBxcSgKKwlDUkVBVEUgU0VRVUVOQ0Ugc2VxMTsKKwlDUkVBVEUgU0VRVUVOQ0Ugc2Vx MjsKKwlDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9j b25uc3RyJyBQVUJMSUNBVElPTiB0YXBfcHViMTsKKykpOworCisjIFdhaXQgZm9yIGluaXRpYWwg c3luYyB0byBmaW5pc2gKK215ICRzeW5jZWRfcXVlcnkgPQorICAiU0VMRUNUIGNvdW50KDEpID0g MCBGUk9NIHBnX3N1YnNjcmlwdGlvbl9yZWwgV0hFUkUgc3JzdWJzdGF0ZSBOT1QgSU4gKCdyJyk7 IjsKKyRub2RlX3N1YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgJHN5bmNl ZF9xdWVyeSkKKyAgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Igc3Vic2NyaWJl ciB0byBzeW5jaHJvbml6ZSBkYXRhIjsKKworIyBDaGVjayB0aGUgaW5pdGlhbCBkYXRhIG9uIHN1 YnNjcmliZXIKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiU0VMRUNUIGxhc3RfdmFsdWUsIGlzX2NhbGxlZCBGUk9NIHNlcTEiKTsKK2lzKCRyZXN1 bHQsICcxfGYnLCAnc2VxdWVuY2VzIGluIEVYQ0VQVCBsaXN0IGlzIGV4Y2x1ZGVkJyk7CisKKyRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNU IGxhc3RfdmFsdWUsIGlzX2NhbGxlZCBGUk9NIHNlcTIiKTsKK2lzKCRyZXN1bHQsICcxMDB8dCcs ICdpbml0aWFsIHRlc3QgZGF0YSByZXBsaWNhdGVkIGZvciBzZXEyJyk7CisKKyMgPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgVGVzdCB3aGVuIGEgc3Vic2Ny aXB0aW9uIGlzIHN1YnNjcmliaW5nIHRvIG11bHRpcGxlIHB1YmxpY2F0aW9ucworIyA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJSU5TRVJUIElOVE8gc2VxX3Rlc3QgU0VMRUNU IG5leHR2YWwoJ3NlcTEnKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCk7CisJSU5TRVJUIElO VE8gc2VxX3Rlc3QgU0VMRUNUIG5leHR2YWwoJ3NlcTInKSBGUk9NIGdlbmVyYXRlX3Nlcmllcygx LDEwMCk7CisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIyIEZPUiBBTEwgU0VRVUVOQ0VTIEVY Q0VQVCAoU0VRVUVOQ0Ugc2VxMik7CispKTsKKworIyBTdWJzY3JpYmUgdG8gbXVsdGlwbGUgcHVi bGljYXRpb25zIHdpdGggZGlmZmVyZW50IEVYQ0VQVCBzZXF1ZW5jZSBsaXN0Ciskbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQUxURVIgU1VCU0NSSVBUSU9O IHRhcF9zdWIgU0VUIFBVQkxJQ0FUSU9OIHRhcF9wdWIxLCB0YXBfcHViMjsKKwlBTFRFUiBTVUJT Q1JJUFRJT04gdGFwX3N1YiBSRUZSRVNIIFNFUVVFTkNFUzsKKykpOworJHN5bmNlZF9xdWVyeSA9 CisgICJTRUxFQ1QgY291bnQoMSkgPSAwIEZST00gcGdfc3Vic2NyaXB0aW9uX3JlbCBXSEVSRSBz cnN1YnN0YXRlIE5PVCBJTiAoJ3InKTsiOworJG5vZGVfc3Vic2NyaWJlci0+cG9sbF9xdWVyeV91 bnRpbCgncG9zdGdyZXMnLCAkc3luY2VkX3F1ZXJ5KQorICBvciBkaWUgIlRpbWVkIG91dCB3aGls ZSB3YWl0aW5nIGZvciBzdWJzY3JpYmVyIHRvIHN5bmNocm9uaXplIGRhdGEiOworCisjIHNlcTEg aXMgZXhjbHVkZWQgaW4gdGFwX3B1YjEgYnV0IGluY2x1ZGVkIGluIHRhcF9wdWIyLCBzbyBvdmVy YWxsIHRoZQorIyBzdWJzY3JpcHRpb24gdHJlYXRzIGl0IGFzIGluY2x1ZGVkLgorJHJlc3VsdCA9 ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgbGFzdF92 YWx1ZSwgaXNfY2FsbGVkIEZST00gc2VxMSIpOworaXMoJHJlc3VsdCwgJzIwMHx0JywKKwknY2hl Y2sgcmVwbGljYXRpb24gb2YgYSBzZXF1ZW5jZSBpbiB0aGUgRVhDRVBUIGNsYXVzZSBvZiBvbmUg cHVibGljYXRpb24gYnV0IGluY2x1ZGVkIGJ5IGFub3RoZXInCispOworCisjIHNlcTIgaXMgZXhj bHVkZWQgaW4gdGFwX3B1YjIgYnV0IGluY2x1ZGVkIGluIHRhcF9wdWIxLCBzbyBvdmVyYWxsIHRo ZQorIyBzdWJzY3JpcHRpb24gdHJlYXRzIGl0IGFzIGluY2x1ZGVkLgorJHJlc3VsdCA9ICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgbGFzdF92YWx1ZSwg aXNfY2FsbGVkIEZST00gc2VxMiIpOworaXMoJHJlc3VsdCwgJzIwMHx0JywKKwknY2hlY2sgcmVw bGljYXRpb24gb2YgYSBzZXF1ZW5jZSBpbiB0aGUgRVhDRVBUIGNsYXVzZSBvZiBvbmUgcHVibGlj YXRpb24gYnV0IGluY2x1ZGVkIGJ5IGFub3RoZXInCispOworCiskbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgU1VCU0NSSVBUSU9OIHRhcF9zdWInKTsKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFBVQkxJQ0FUSU9OIHRhcF9w dWIxJyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBQVUJM SUNBVElPTiB0YXBfcHViMicpOworCiAkbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2Zhc3QnKTsKIAog ZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDhjZjQwYzg3MDQz Li5hMDRkN2RlM2NkYyAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTI0NzMsOCArMjQ3 Myw4IEBAIFB1YmxpY2F0aW9uT2JqU3BlY1R5cGUKIFB1YmxpY2F0aW9uUGFydE9wdAogUHVibGlj YXRpb25SZWxJbmZvCiBQdWJsaWNhdGlvblJlbEtpbmQKK1B1YmxpY2F0aW9uUmVsYXRpb24KIFB1 YmxpY2F0aW9uU2NoZW1hSW5mbwotUHVibGljYXRpb25UYWJsZQogUHVibGlzaEdlbmNvbHNUeXBl CiBQdWxsRmlsdGVyCiBQdWxsRmlsdGVyT3BzCi0tIAoyLjM0LjEKCg== --0000000000004c318106537cd49c--