Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1um7gJ-00AGVI-0N for pgsql-hackers@arkaria.postgresql.org; Wed, 13 Aug 2025 09:22:03 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1um7gH-00Dvs6-E6 for pgsql-hackers@arkaria.postgresql.org; Wed, 13 Aug 2025 09:22:01 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1um7gG-00Dvrp-SH for pgsql-hackers@lists.postgresql.org; Wed, 13 Aug 2025 09:22:01 +0000 Received: from mail-ot1-x333.google.com ([2607:f8b0:4864:20::333]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1um7gD-000Vdt-2W for pgsql-hackers@lists.postgresql.org; Wed, 13 Aug 2025 09:22:00 +0000 Received: by mail-ot1-x333.google.com with SMTP id 46e09a7af769-743749537caso684114a34.0 for ; Wed, 13 Aug 2025 02:21:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1755076915; x=1755681715; 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=DuloKos7eORnRU6VKlKjMY6+ja6K6dmtyvdiOz+EU7k=; b=OhuFbWOMAQxDZd7tVNCXEypRsnhXDDiATuJWH9IhT8mheyL6e6hHAThNzRIuw/Deu9 /oEbPwaoPYi1HsqYcdcazIBQ+UXr13vmRC40dXoNrv/Qso46xyW+AaUL1lhuknRLRTxH qdmWpSYwltpcmlUtjvdzKOWs+HusOQ7EojxhHH2AjPRpY9m2PVValXsK2ysG/nSf+o8Y VoV4WeOrjImhQI5DQcBpAs2IID8rkqp8OqOD09oElxeufa0npHfPfn2OnbtVRXm7dddU wXPOiiWoksxJdFG+gttxQ/3curKPYiZ8lg9MnKRun59KSt1YXCTMEeEwDjxooKMeXqnC mL6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755076915; x=1755681715; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=DuloKos7eORnRU6VKlKjMY6+ja6K6dmtyvdiOz+EU7k=; b=s48+u/doqysu49VsVDvzUnTFrrT6xVyL3E02W7CP2E0XdD3U7tBdBasCu/qyPcs0g7 HU92w39UbnU8NUzwoWTO9/Mj3wCBPVrXglY6nwjKo4bQRLkZPbX43WdbzV5DxJxtD6Jn vQI0dI5zqw+rnPAkFSHxa41dYlMoHt2UnYx6M0efc25ivmrt38QqHvoWsPYHHfDcnr2i gWGeqkBSs6ki14X/bBL40QQw3u0IXyFfaIzfT2WseDv4KwtpVa3vMmjTczael9rLaJhW 6/xXdJFKQi49RjB3Zy7e6JbwzxiJw4Is9pjLsJ3nf+fuSkDzsee9F4XiglCNbGar8JDz w0rg== X-Forwarded-Encrypted: i=1; AJvYcCUCR5F0m9v/SH7C4PsIcfUHjVLFyGX9i5cAoKwAU87Ub7XH8J+VJs9iktgD6zmCPoZ38Zvoj+Jts0WwH6eM@lists.postgresql.org X-Gm-Message-State: AOJu0YxK2MUiVZ2gy9hs/fSOxcsodM2P5W3yqHW/QYnqgJGDumTFlW0g dgmqIwgrWkwawSy650L4zRIJ2phRd6Z8vmH2x+H2/BnyxWfUS6AdFxzjHl3dl2HlSgVBaGX4tP+ q7GuwaxOmJesIm7Vhx+T6oHonWZ5rDG8= X-Gm-Gg: ASbGncuQ+P98in2jtrGYlhAhn3F9RJVfmZ8qJbBbrAMgCzsqA5Eaaf/cGliVLBstH5j KkUV5EmoW0DUcDZOcfFjXUqwNMVCTGKc4auT44eCiXlOfSaz2mM78SCu1L9OCSg7fj+Vu2oUEYO BAuS/BB8N6NrOzo3QfqccTHvrxG9u7eEx4UFF4IsblpHFdGqx+r6HhwwYvtCQ/lF4JfmxDvrdp2 ckl8HPfIQ== X-Google-Smtp-Source: AGHT+IHfiOrJ9tFVajUlMgL0YVje9N/Jyx2EvPabkaSbS+VipoqKdv5EfGmZBBYV5pxIkA8mqFn+J3Xjb8XAciGt4gk= X-Received: by 2002:a05:6808:4481:b0:414:31e6:f6f1 with SMTP id 5614622812f47-435d640b476mr1080225b6e.17.1755076915192; Wed, 13 Aug 2025 02:21:55 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Shlok Kyal Date: Wed, 13 Aug 2025 14:51:42 +0530 X-Gm-Features: Ac12FXxWz3_KDqrNKyTxtC4VRoZ-nfIezIcxKAFwRaRg63OvTh-AFAKa73Syx98 Message-ID: Subject: Re: Skipping schema changes in publication To: Peter Smith Cc: Amit Kapila , "Zhijie Hou (Fujitsu)" , vignesh C , YeXiu <1518981153@qq.com>, Ian Lawrence Barwick , Bharath Rupireddy , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000159f6f063c3bb0bd" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000159f6f063c3bb0bd Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, 11 Aug 2025 at 13:55, Peter Smith wrote: > > Hi Shlok. > > On Wed, Aug 6, 2025 at 11:11=E2=80=AFPM Shlok Kyal wrote: > > > ... > > > 5. > > > Bitmapset *cols =3D NULL; > > > + bool except_columns =3D false; > > > + bool no_col_published =3D false; > > > > > > There are multiple places in this patch that say: > > > > > > 'no_col_published' > > > or 'no_cols_published' > > > > > > I felt this var name can be misunderstood because it is easy to read > > > "no" as meaning "no." (aka number), and then misinterpret as > > > "number_of_cols_published". > > > > > > Maybe an unambiguous name can be found, like > > > - 'zero_cols_published' or > > > - 'nothing_published' or > > > - really make it 'num_cols_published' and check for 0. > > > > > > (so this comment applies to multiple places in the patch) > > > > > How about 'all_cols_excluded'? Or 'has_published_cols'? > > I have used 'all_cols_excluded' in this patch. Thoughts? > > The new name is good. > > > > =3D=3D=3D=3D=3D=3D > > > src/bin/psql/describe.c > > > > > > describeOneTableDetails: > > > > > > 7. > > > /* column list (if any) */ > > > if (!PQgetisnull(result, i, 2)) > > > - appendPQExpBuffer(&buf, " (%s)", > > > - PQgetvalue(result, i, 2)); > > > + { > > > + if (strcmp(PQgetvalue(result, i, 3), "t") =3D=3D 0) > > > + appendPQExpBuffer(&buf, " EXCEPT (%s)", > > > + PQgetvalue(result, i, 2)); > > > + else > > > + appendPQExpBuffer(&buf, " (%s)", > > > + PQgetvalue(result, i, 2)); > > > + } > > > > > > Isn't this code fragment (and also surrounding code) using the same > > > logic as what is already encapsulated in the function > > > addFooterToPublicationDesc()? > > > Superficially, it seems like a large chunk can all be replaced with a > > > single call to the existing function. > > > > > 'addFooterToPublicationDesc' is called when we use \dRp+ and print in f= ormat: > > "schema_name.table_name" EXCEPT (column-list) > > Whereas code pasted above is executed when we use \d+ table_name and > > the output is the format: > > "publication_name" EXCEPT (column-list) > > > > These pieces of code are used to print different info. One is used to > > print info related to tables and the other is used to print info > > related to publication. > > Should we use a common function for this? > > It still seems like quite a lot of overlap. e.g. I thought there were > ~30 lines common. OTOH, perhaps you'll need to pass another boolean to > the function to indicate it is a "Publication:" footer. I guess you'd > have to try it out first to see if the changes required to save those > 30 LOC are worthwhile or not. > I have added the code changes for the same in this patch. > > > > > =3D=3D=3D=3D=3D=3D > > > src/test/regress/expected/publication.out > > > > > > 8. > > > +-- Syntax error EXCEPT without a col-list > > > +CREATE PUBLICATION testpub_except2 FOR TABLE pub_test_except1 EXCEPT= ; > > > +ERROR: EXCEPT clause not allowed for table without column list > > > +LINE 1: CREATE PUBLICATION testpub_except2 FOR TABLE pub_test_except= ... > > > + ^ > > > > > > Is that a bad syntax position marker (^)? e.g. Why is it pointed at > > > the word "TABLE" instead of "EXCEPT"? > > > > > In function 'preprocess_pubobj_list' the position of position marker > > (^) is decided by "pubobj->location". Function handles multiple errors > > and setting "$$->location" only specific to EXCEPT qualifier would not > > be appropriate. One solution I feel is to not show "position marker > > (^)" in the case of EXCEPT. Or maybe we can add a new variable to > > 'PublicationTable' for except_location but I think we should not do > > that. Thoughts? > > In the review comments below, I suggest putting this location back, > but changing the message. > > > > > For this version of patch, I have removed the "position marker (^)" in > > the case of EXCEPT. > > > > ////// > > Here are my review comments for the patch v19-0003. > > =3D=3D=3D=3D=3D=3D > 1. General - SGML tags in docs for table/column names. > > There is nothing to change just yet, but keep an eye on the thread > [1], because if/when that gets pushed, then there will several tags > in this patch for table/column names that will need to be updated for > consistency. > Noted > =3D=3D=3D=3D=3D=3D > src/backend/catalog/pg_publication.c > > pg_get_publication_tables: > > 2. > + > + if (!nulls[2]) > + { > + Datum exceptDatum; > + bool isnull; > + > + /* > + * We fetch pubtuple if publication is not FOR ALL TABLES and > + * not FOR TABLES IN SCHEMA. So if prexcept is true, it > + * indicates that prattrs contains columns to be excluded for > + * replication. > + */ > + exceptDatum =3D SysCacheGetAttr(PUBLICATIONRELMAP, pubtuple, > + Anum_pg_publication_rel_prexcept, > + &isnull); > + > + if (!isnull && DatumGetBool(exceptDatum)) > + except_columns =3D pub_collist_to_bitmapset(NULL, values[2], NULL); > + } > > Maybe this should be done a few lines earlier, to keep all the > values[2]/nulls[2] code together, ahead of the values[3]/nulls[3] > code. Indeed, there is lots of other values[2]/nulls[2] logic that > comes later in this function, so maybe it is better to do all of that > first, instead of mingling it with values[3]/nulls[3]. > > =3D=3D=3D=3D=3D=3D > src/backend/commands/publicationcmds.c > > pub_contains_invalid_column: > > 3. > * 1. Ensures that all columns referenced in the REPLICA IDENTITY are co= vered > - * by the column list. If any column is missing, *invalid_column_list= is set > + * by the column list and are not part of column list specified with = EXCEPT. > + * If any column is missing, *invalid_column_list is set > * to true. > > Whitespace problem here; there is some tab instead of space in this comme= nt. > > Also /part of column list/part of the column list/ > > ~~~ > > AlterPublicationTables: > > 4. > bool isnull =3D true; > Datum whereClauseDatum; > Datum columnListDatum; > + Datum exceptDatum; > > It's not necessary to have all these different Datum variables; they > are only temporary storage. It might be simpler to use a single "Datum > datum;" which is reused 3x. > > ~ > > 5. > + exceptDatum =3D SysCacheGetAttr(PUBLICATIONRELMAP, rftuple, > + Anum_pg_publication_rel_prexcept, > + &isnull); > + > + if (!isnull) > + oldexcept =3D DatumGetBool(exceptDatum); > + > > Isn't the 'prexcept' also used for EXCEPT TABLE as well as EXCEPT > (column-list)? In other words, should the change to this function be > done already in one of the earlier patches? > > ~ This code path is only executed when running ALTER PUBLICATION ... SET TABLE and running this command on a ALL TABLES publication throws an error due to check by function 'CheckAlterPublication' . And EXCEPT TABLE can only be used for ALL TABLES publications, I think it doesn=E2=80= =99t need to be moved to the 0002 patch. > > 6. > if (equal(oldrelwhereclause, newpubrel->whereClause) && > - bms_equal(oldcolumns, newcolumns)) > + bms_equal(oldcolumns, newcolumns) && > + oldexcept =3D=3D newpubrel->except) > > The code comment about this code fragment should also mention EXCEPT. > > =3D=3D=3D=3D=3D=3D > src/backend/parser/gram.y > > preprocess_pubobj_list: > > 7. > + if (pubobj->pubtable && pubobj->pubtable->except && > + pubobj->pubtable->columns =3D=3D NULL) > + ereport(ERROR, > + errcode(ERRCODE_SYNTAX_ERROR), > + errmsg("EXCEPT clause not allowed for table without column list")); > + > > Having the syntax error location (like before in v18) might be better, > but since that location is associated with the TABLE, then the error > message should also be reworded so the subject is the table. > > SUGGESTION > errmsg("table without column list cannot use EXCEPT clause") > > =3D=3D=3D=3D=3D=3D > src/bin/psql/describe.c > > describeOneTableDetails: > > 8. > - if (pset.sversion >=3D 150000) > + if (pset.sversion >=3D 190000) > { > printfPQExpBuffer(&buf, > "SELECT pubname\n" > " , NULL\n" > " , NULL\n" > + " , NULL\n" > "FROM pg_catalog.pg_publication p\n" > " JOIN pg_catalog.pg_publication_namespace pn ON p.oid =3D pn.pnp= ubid\n" > " JOIN pg_catalog.pg_class pc ON pc.relnamespace =3D pn.pnnspid\n= " > @@ -3038,35 +3039,62 @@ describeOneTableDetails(const char *schemaname, > " pg_catalog.pg_attribute\n" > " WHERE attrelid =3D pr.prrelid AND attnum =3D prattrs[s])\n= " > " ELSE NULL END) " > + " , prexcept " > "FROM pg_catalog.pg_publication p\n" > " JOIN pg_catalog.pg_publication_rel pr ON p.oid =3D pr.prpubid\n" > " JOIN pg_catalog.pg_class c ON c.oid =3D pr.prrelid\n" > - "WHERE pr.prrelid =3D '%s'\n", > - oid, oid, oid); > - > - if (pset.sversion >=3D 190000) > - appendPQExpBufferStr(&buf, " AND NOT pr.prexcept\n"); > + "WHERE pr.prrelid =3D '%s' " > + "AND c.relnamespace NOT IN (\n " > + " SELECT pnnspid FROM\n" > + " pg_catalog.pg_publication_namespace)\n" > > - appendPQExpBuffer(&buf, > "UNION\n" > "SELECT pubname\n" > " , NULL\n" > " , NULL\n" > + " , NULL\n" > "FROM pg_catalog.pg_publication p\n" > - "WHERE p.puballtables AND pg_catalog.pg_relation_is_publishable('%s')= \n", > - oid); > - > - if (pset.sversion >=3D 190000) > - appendPQExpBuffer(&buf, > - " AND NOT EXISTS (\n" > - " SELECT 1\n" > - " FROM pg_catalog.pg_publication_rel pr\n" > - " JOIN pg_catalog.pg_class pc\n" > - " ON pr.prrelid =3D pc.oid\n" > - " WHERE pr.prrelid =3D '%s' AND pr.prpubid =3D p.oid)\n", > - oid); > - > - appendPQExpBufferStr(&buf, "ORDER BY 1;"); > + "WHERE p.puballtables AND pg_catalog.pg_relation_is_publishable('%s')= \n" > + " AND NOT EXISTS (\n" > + " SELECT 1\n" > + " FROM pg_catalog.pg_publication_rel pr\n" > + " JOIN pg_catalog.pg_class pc\n" > + " ON pr.prrelid =3D pc.oid\n" > + " WHERE pr.prrelid =3D '%s' AND pr.prpubid =3D p.oid)\n" > + "ORDER BY 1;", > + oid, oid, oid, oid, oid); > + } > + else if (pset.sversion >=3D 150000) > + { > + printfPQExpBuffer(&buf, > + "SELECT pubname\n" > + " , NULL\n" > + " , NULL\n" > + "FROM pg_catalog.pg_publication p\n" > + " JOIN pg_catalog.pg_publication_namespace pn ON p.oid =3D pn.pnp= ubid\n" > + " JOIN pg_catalog.pg_class pc ON pc.relnamespace =3D pn.pnnspid\n= " > + "WHERE pc.oid =3D'%s' and pg_catalog.pg_relation_is_publishable('%s')= \n" > + "UNION\n" > + "SELECT pubname\n" > + " , pg_get_expr(pr.prqual, c.oid)\n" > + " , (CASE WHEN pr.prattrs IS NOT NULL THEN\n" > + " (SELECT string_agg(attname, ', ')\n" > + " FROM pg_catalog.generate_series(0, > pg_catalog.array_upper(pr.prattrs::pg_catalog.int2[], 1)) s,\n" > + " pg_catalog.pg_attribute\n" > + " WHERE attrelid =3D pr.prrelid AND attnum =3D prattrs[s])\n= " > + " ELSE NULL END) " > + "FROM pg_catalog.pg_publication p\n" > + " JOIN pg_catalog.pg_publication_rel pr ON p.oid =3D pr.prpubid\n= " > + " JOIN pg_catalog.pg_class c ON c.oid =3D pr.prrelid\n" > + "WHERE pr.prrelid =3D '%s'\n" > + "UNION\n" > + "SELECT pubname\n" > + " , NULL\n" > + " , NULL\n" > + "FROM pg_catalog.pg_publication p\n" > + "WHERE p.puballtables AND pg_catalog.pg_relation_is_publishable('%s')= \n" > + "ORDER BY 1;", > + oid, oid, oid, oid); > > I found these large SQL selects with 3x UNIONs are difficult to read. > Maybe you can add more comments to describe the intention of each of > the UNION SELECTs? > > ~~~ > > 9. > /* column list (if any) */ > if (!PQgetisnull(result, i, 2)) > - appendPQExpBuffer(&buf, " (%s)", > - PQgetvalue(result, i, 2)); > + { > + if (strcmp(PQgetvalue(result, i, 3), "t") =3D=3D 0) > + appendPQExpBuffer(&buf, " EXCEPT"); > + appendPQExpBuffer(&buf, " (%s)", PQgetvalue(result, i, 2)); > + } > > I did not find any regression test case where the "EXCEPT" col-list is > getting output for a "Publications:" footer. > > =3D=3D=3D=3D=3D=3D > [1] https://www.postgresql.org/message-id/aIELRMAviNiUL1ie%40momjian.us > I have addressed the comments and the changes in v20 patch. Thanks, Shlok Kyal --000000000000159f6f063c3bb0bd Content-Type: application/octet-stream; name="v20-0001-Add-RESET-clause-to-Alter-Publication-which-will.patch" Content-Disposition: attachment; filename="v20-0001-Add-RESET-clause-to-Alter-Publication-which-will.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_me9qwvzg0 RnJvbSAwMmE1NzAyMWE1MmUwNjJkNGI3ZDM0YjZjMzI3OWJiYWNiYTYwZWQ3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMTEgSnVuIDIwMjUgMTE6NDE6MTggKzA1MzAKU3ViamVjdDogW1BBVENIIHYy MCAxLzNdIEFkZCBSRVNFVCBjbGF1c2UgdG8gQWx0ZXIgUHVibGljYXRpb24gd2hpY2ggd2lsbAog cmVzZXQgdGhlIHB1YmxpY2F0aW9uIHdpdGggZGVmYXVsdCB2YWx1ZXMuCgpUaGlzIHBhdGNoIGFk ZHMgYSBuZXcgUkVTRVQgY2xhdXNlIHRvIEFMVEVSIFBVQkxJQ0FUSU9OIHdoaWNoIHdpbGwgcmVz ZXQKdGhlIHB1YmxpY2F0aW9uIHRvIHRoZSBkZWZhdWx0IHN0YXRlIHdoaWNoIGluY2x1ZGVzIHJl c2V0dGluZyB0aGUgcHVibGljYXRpb24KcGFyYW1ldGVycywgc2V0dGluZyBBTEwgVEFCTEVTIGZs YWcgdG8gZmFsc2UgYW5kIGRyb3BwaW5nIHRoZSByZWxhdGlvbnMgYW5kCnNjaGVtYXMgdGhhdCBh cmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBwdWJsaWNhdGlvbi4KVXNhZ2U6CkFMVEVSIFBVQkxJQ0FU SU9OIHB1YjEgUkVTRVQ7Ci0tLQogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5z Z21sICAgfCAgMzQgKysrKystLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRz LmMgICAgfCAxMTYgKysrKysrKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55ICAgICAgICAgICAgICAgICB8ICAgOSArKwogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5p bi5jICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAg ICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24u b3V0IHwgMTE4ICsrKysrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1 YmxpY2F0aW9uLnNxbCAgICAgIHwgIDU3ICsrKysrKysrKysrCiA3IGZpbGVzIGNoYW5nZWQsIDMy MyBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1 YmxpY2F0aW9uLnNnbWwKaW5kZXggZDVlYTM4M2U4YmMuLjE3OGYzOWQ5NTc1IDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sCkBAIC0yNyw2ICsyNyw3IEBAIEFMVEVSIFBV QkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJs ZT4gRFJPUCA8cmVwbGFjCiBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFNFVCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wdWJsaWNhdGlvbl9wYXJhbWV0ZXI8L3JlcGxhY2VhYmxlPiBbPSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxlPl0gWywgLi4uIF0gKQogQUxU RVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxh Y2VhYmxlPiBPV05FUiBUTyB7IDxyZXBsYWNlYWJsZT5uZXdfb3duZXI8L3JlcGxhY2VhYmxlPiB8 IENVUlJFTlRfUk9MRSB8IENVUlJFTlRfVVNFUiB8IFNFU1NJT05fVVNFUiB9CiBBTFRFUiBQVUJM SUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+ IFJFTkFNRSBUTyA8cmVwbGFjZWFibGU+bmV3X25hbWU8L3JlcGxhY2VhYmxlPgorQUxURVIgUFVC TElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxl PiBSRVNFVAogCiA8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w dWJsaWNhdGlvbl9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKQEAg LTY5LDE4ICs3MCwzMSBAQCBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8cgogICA8L3BhcmE+CiAKICAg PHBhcmE+Ci0gICBUaGUgcmVtYWluaW5nIHZhcmlhbnRzIGNoYW5nZSB0aGUgb3duZXIgYW5kIHRo ZSBuYW1lIG9mIHRoZSBwdWJsaWNhdGlvbi4KKyAgIFRoZSA8bGl0ZXJhbD5PV05FUjwvbGl0ZXJh bD4gY2xhdXNlIHdpbGwgY2hhbmdlIHRoZSBvd25lciBvZiB0aGUKKyAgIHB1YmxpY2F0aW9uLgor ICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUaGUgPGxpdGVyYWw+UkVOQU1FPC9saXRlcmFsPiBj bGF1c2Ugd2lsbCBjaGFuZ2UgdGhlIG5hbWUgb2YgdGhlCisgICBwdWJsaWNhdGlvbi4KKyAgPC9w YXJhPgorCisgIDxwYXJhPgorICAgVGhlIDxsaXRlcmFsPlJFU0VUPC9saXRlcmFsPiBjbGF1c2Ug d2lsbCByZXNldCB0aGUgcHVibGljYXRpb24gdG8gdGhlIGRlZmF1bHQKKyAgIHN0YXRlLiBUaGlz IGluY2x1ZGVzIHJlc2V0dGluZyBhbGwgcHVibGljYXRpb24gcGFyYW1ldGVycywgc2V0dGluZyB0 aGUKKyAgIDxsaXRlcmFsPkFMTCBUQUJMRVM8L2xpdGVyYWw+IGZsYWcgdG8gPGxpdGVyYWw+ZmFs c2U8L2xpdGVyYWw+LCBhbmQKKyAgIHJlbW92aW5nIGFsbCBhc3NvY2lhdGVkIHRhYmxlcyBhbmQg c2NoZW1hcyBmcm9tIHRoZSBwdWJsaWNhdGlvbi4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgogICAg WW91IG11c3Qgb3duIHRoZSBwdWJsaWNhdGlvbiB0byB1c2UgPGNvbW1hbmQ+QUxURVIgUFVCTElD QVRJT048L2NvbW1hbmQ+LgogICAgQWRkaW5nIGEgdGFibGUgdG8gYSBwdWJsaWNhdGlvbiBhZGRp dGlvbmFsbHkgcmVxdWlyZXMgb3duaW5nIHRoYXQgdGFibGUuCi0gICBUaGUgPGxpdGVyYWw+QURE IFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+IGFuZAotICAgPGxpdGVyYWw+U0VUIFRBQkxFUyBJ TiBTQ0hFTUE8L2xpdGVyYWw+IHRvIGEgcHVibGljYXRpb24gcmVxdWlyZXMgdGhlCi0gICBpbnZv a2luZyB1c2VyIHRvIGJlIGEgc3VwZXJ1c2VyLgotICAgVG8gYWx0ZXIgdGhlIG93bmVyLCB5b3Ug bXVzdCBiZSBhYmxlIHRvIDxsaXRlcmFsPlNFVCBST0xFPC9saXRlcmFsPiB0byB0aGUKLSAgIG5l dyBvd25pbmcgcm9sZSwgYW5kIHRoYXQgcm9sZSBtdXN0IGhhdmUgPGxpdGVyYWw+Q1JFQVRFPC9s aXRlcmFsPgotICAgcHJpdmlsZWdlIG9uIHRoZSBkYXRhYmFzZS4KKyAgIFRoZSA8bGl0ZXJhbD5B REQgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4sCisgICA8bGl0ZXJhbD5TRVQgVEFCTEVTIElO IFNDSEVNQTwvbGl0ZXJhbD4gdG8gYSBwdWJsaWNhdGlvbiBhbmQKKyAgIDxsaXRlcmFsPlJFU0VU PC9saXRlcmFsPiBvZiBwdWJsaWNhdGlvbiByZXF1aXJlcyB0aGUgaW52b2tpbmcgdXNlciB0byBi ZSBhCisgICBzdXBlcnVzZXIuIFRvIGFsdGVyIHRoZSBvd25lciwgeW91IG11c3QgYmUgYWJsZSB0 bworICAgPGxpdGVyYWw+U0VUIFJPTEU8L2xpdGVyYWw+IHRvIHRoZSBuZXcgb3duaW5nIHJvbGUs IGFuZCB0aGF0IHJvbGUgbXVzdCBoYXZlCisgICA8bGl0ZXJhbD5DUkVBVEU8L2xpdGVyYWw+IHBy aXZpbGVnZSBvbiB0aGUgZGF0YWJhc2UuCiAgICBBbHNvLCB0aGUgbmV3IG93bmVyIG9mIGEKICAg IDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVwdWJsaWNhdGlvbi1wYXJhbXMtZm9yLWFsbC10YWJs ZXMiPjxsaXRlcmFsPkZPUiBBTEwgVEFCTEVTPC9saXRlcmFsPjwvbGluaz4KICAgIG9yIDxsaW5r IGxpbmtlbmQ9InNxbC1jcmVhdGVwdWJsaWNhdGlvbi1wYXJhbXMtZm9yLXRhYmxlcy1pbi1zY2hl bWEiPjxsaXRlcmFsPkZPUiBUQUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPjwvbGluaz4KQEAgLTIz MCw2ICsyNDQsMTIgQEAgQUxURVIgUFVCTElDQVRJT04gc2FsZXNfcHVibGljYXRpb24gQUREIFRB QkxFUyBJTiBTQ0hFTUEgbWFya2V0aW5nLCBzYWxlczsKICAgIDxzdHJ1Y3RuYW1lPnByb2R1Y3Rp b25fcHVibGljYXRpb248L3N0cnVjdG5hbWU+OgogPHByb2dyYW1saXN0aW5nPgogQUxURVIgUFVC TElDQVRJT04gcHJvZHVjdGlvbl9wdWJsaWNhdGlvbiBBREQgVEFCTEUgdXNlcnMsIGRlcGFydG1l bnRzLCBUQUJMRVMgSU4gU0NIRU1BIHByb2R1Y3Rpb247Cis8L3Byb2dyYW1saXN0aW5nPjwvcGFy YT4KKworICA8cGFyYT4KKyAgIFJlc2V0IHRoZSBwdWJsaWNhdGlvbiA8c3RydWN0bmFtZT5wcm9k dWN0aW9uX3B1YmxpY2F0aW9uPC9zdHJ1Y3RuYW1lPjoKKzxwcm9ncmFtbGlzdGluZz4KK0FMVEVS IFBVQkxJQ0FUSU9OIHByb2R1Y3Rpb25fcHVibGljYXRpb24gUkVTRVQ7CiA8L3Byb2dyYW1saXN0 aW5nPjwvcGFyYT4KICA8L3JlZnNlY3QxPgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9wdWJsaWNhdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9u Y21kcy5jCmluZGV4IDgwM2MyNmFiMjE2Li4wNmY2ZjQ1NTI2YiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvcHVibGljYXRpb25jbWRzLmMKQEAgLTQ5LDYgKzQ5LDE1IEBACiAjaW5jbHVkZSAidXRpbHMv dmFybGVuYS5oIgogCiAKKy8qIENSRUFURSBQVUJMSUNBVElPTiBkZWZhdWx0IHZhbHVlcyBmb3Ig ZmxhZ3MgYW5kIHB1YmxpY2F0aW9uIHBhcmFtZXRlcnMgKi8KKyNkZWZpbmUgUFVCX0RFRkFVTFRf QUNUSU9OX0lOU0VSVCB0cnVlCisjZGVmaW5lIFBVQl9ERUZBVUxUX0FDVElPTl9VUERBVEUgdHJ1 ZQorI2RlZmluZSBQVUJfREVGQVVMVF9BQ1RJT05fREVMRVRFIHRydWUKKyNkZWZpbmUgUFVCX0RF RkFVTFRfQUNUSU9OX1RSVU5DQVRFIHRydWUKKyNkZWZpbmUgUFVCX0RFRkFVTFRfVklBX1JPT1Qg ZmFsc2UKKyNkZWZpbmUgUFVCX0RFRkFVTFRfQUxMX1RBQkxFUyBmYWxzZQorI2RlZmluZSBQVUJf REVGQVVMVF9HRU5DT0xTIFBVQkxJU0hfR0VOQ09MU19OT05FCisKIC8qCiAgKiBJbmZvcm1hdGlv biB1c2VkIHRvIHZhbGlkYXRlIHRoZSBjb2x1bW5zIGluIHRoZSByb3cgZmlsdGVyIGV4cHJlc3Np b24uIFNlZQogICogY29udGFpbl9pbnZhbGlkX3JmY29sdW1uX3dhbGtlciBmb3IgZGV0YWlscy4K QEAgLTkxLDEyICsxMDAsMTIgQEAgcGFyc2VfcHVibGljYXRpb25fb3B0aW9ucyhQYXJzZVN0YXRl ICpwc3RhdGUsCiAJKnB1Ymxpc2hfZ2VuZXJhdGVkX2NvbHVtbnNfZ2l2ZW4gPSBmYWxzZTsKIAog CS8qIGRlZmF1bHRzICovCi0JcHViYWN0aW9ucy0+cHViaW5zZXJ0ID0gdHJ1ZTsKLQlwdWJhY3Rp b25zLT5wdWJ1cGRhdGUgPSB0cnVlOwotCXB1YmFjdGlvbnMtPnB1YmRlbGV0ZSA9IHRydWU7Ci0J cHViYWN0aW9ucy0+cHVidHJ1bmNhdGUgPSB0cnVlOwotCSpwdWJsaXNoX3ZpYV9wYXJ0aXRpb25f cm9vdCA9IGZhbHNlOwotCSpwdWJsaXNoX2dlbmVyYXRlZF9jb2x1bW5zID0gUFVCTElTSF9HRU5D T0xTX05PTkU7CisJcHViYWN0aW9ucy0+cHViaW5zZXJ0ID0gUFVCX0RFRkFVTFRfQUNUSU9OX0lO U0VSVDsKKwlwdWJhY3Rpb25zLT5wdWJ1cGRhdGUgPSBQVUJfREVGQVVMVF9BQ1RJT05fVVBEQVRF OworCXB1YmFjdGlvbnMtPnB1YmRlbGV0ZSA9IFBVQl9ERUZBVUxUX0FDVElPTl9ERUxFVEU7CisJ cHViYWN0aW9ucy0+cHVidHJ1bmNhdGUgPSBQVUJfREVGQVVMVF9BQ1RJT05fVFJVTkNBVEU7CisJ KnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gUFVCX0RFRkFVTFRfVklBX1JPT1Q7CisJKnB1 Ymxpc2hfZ2VuZXJhdGVkX2NvbHVtbnMgPSBQVUJfREVGQVVMVF9HRU5DT0xTOwogCiAJLyogUGFy c2Ugb3B0aW9ucyAqLwogCWZvcmVhY2gobGMsIG9wdGlvbnMpCkBAIC0xMTg3LDYgKzExOTYsOTkg QEAgSW52YWxpZGF0ZVB1YmxpY2F0aW9uUmVscyhMaXN0ICpyZWxpZHMpCiAJCUNhY2hlSW52YWxp ZGF0ZVJlbGNhY2hlQWxsKCk7CiB9CiAKKy8qCisgKiBSZXNldCB0aGUgcHVibGljYXRpb24uCisg KgorICogUmVzZXQgdGhlIHB1YmxpY2F0aW9uIHBhcmFtZXRlcnMsIHNldHRpbmcgQUxMIFRBQkxF UyBmbGFnIHRvIGZhbHNlIGFuZCBkcm9wCisgKiBhbGwgcmVsYXRpb25zIGFuZCBzY2hlbWFzIHRo YXQgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcHVibGljYXRpb24uCisgKi8KK3N0YXRpYyB2b2lk CitBbHRlclB1YmxpY2F0aW9uUmVzZXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0 aW9uU3RtdCAqc3RtdCwKKwkJCQkJICBSZWxhdGlvbiByZWwsIEhlYXBUdXBsZSB0dXApCit7CisJ Rm9ybV9wZ19wdWJsaWNhdGlvbiBwdWJmb3JtID0gKEZvcm1fcGdfcHVibGljYXRpb24pIEdFVFNU UlVDVCh0dXApOworCU9pZAkJCXB1YmlkID0gcHViZm9ybS0+b2lkOworCUxpc3QJICAgKnNjaGVt YWlkcyA9IE5JTDsKKwlMaXN0CSAgICpyZWxzID0gTklMOworCUxpc3QJICAgKnJlbGlkcyA9IE5J TDsKKwlib29sCQludWxsc1tOYXR0c19wZ19wdWJsaWNhdGlvbl07CisJYm9vbAkJcmVwbGFjZXNb TmF0dHNfcGdfcHVibGljYXRpb25dOworCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfcHVibGljYXRp b25dOworCisJLyogUkVTRVQgcHVibGljYXRpb24gcmVxdWlyZXMgc3VwZXJ1c2VyICovCisJaWYg KCFzdXBlcnVzZXIoKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5T VUZGSUNJRU5UX1BSSVZJTEVHRSksCisJCQkJZXJybXNnKCJtdXN0IGJlIHN1cGVydXNlciB0byBS RVNFVCBwdWJsaWNhdGlvbiIpKTsKKworCW1lbXNldCh2YWx1ZXMsIDAsIHNpemVvZih2YWx1ZXMp KTsKKwltZW1zZXQobnVsbHMsIGZhbHNlLCBzaXplb2YobnVsbHMpKTsKKwltZW1zZXQocmVwbGFj ZXMsIGZhbHNlLCBzaXplb2YocmVwbGFjZXMpKTsKKworCS8qIFJlc2V0IHRoZSBwdWJsaWNhdGlv biBwYXJhbWV0ZXJzICovCisJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcHViaW5zZXJ0IC0g MV0gPSBCb29sR2V0RGF0dW0oUFVCX0RFRkFVTFRfQUNUSU9OX0lOU0VSVCk7CisJcmVwbGFjZXNb QW51bV9wZ19wdWJsaWNhdGlvbl9wdWJpbnNlcnQgLSAxXSA9IHRydWU7CisKKwl2YWx1ZXNbQW51 bV9wZ19wdWJsaWNhdGlvbl9wdWJ1cGRhdGUgLSAxXSA9IEJvb2xHZXREYXR1bShQVUJfREVGQVVM VF9BQ1RJT05fVVBEQVRFKTsKKwlyZXBsYWNlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YnVwZGF0 ZSAtIDFdID0gdHJ1ZTsKKworCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YmRlbGV0ZSAt IDFdID0gQm9vbEdldERhdHVtKFBVQl9ERUZBVUxUX0FDVElPTl9ERUxFVEUpOworCXJlcGxhY2Vz W0FudW1fcGdfcHVibGljYXRpb25fcHViZGVsZXRlIC0gMV0gPSB0cnVlOworCisJdmFsdWVzW0Fu dW1fcGdfcHVibGljYXRpb25fcHVidHJ1bmNhdGUgLSAxXSA9IEJvb2xHZXREYXR1bShQVUJfREVG QVVMVF9BQ1RJT05fVFJVTkNBVEUpOworCXJlcGxhY2VzW0FudW1fcGdfcHVibGljYXRpb25fcHVi dHJ1bmNhdGUgLSAxXSA9IHRydWU7CisKKwl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJ2 aWFyb290IC0gMV0gPSBCb29sR2V0RGF0dW0oUFVCX0RFRkFVTFRfVklBX1JPT1QpOworCXJlcGxh Y2VzW0FudW1fcGdfcHVibGljYXRpb25fcHVidmlhcm9vdCAtIDFdID0gdHJ1ZTsKKworCXZhbHVl c1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YmdlbmNvbHMgLSAxXSA9IENoYXJHZXREYXR1bShQVUJf REVGQVVMVF9HRU5DT0xTKTsKKwlyZXBsYWNlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YmdlbmNv bHMgLSAxXSA9IHRydWU7CisKKwkvKiBTZXQgQUxMIFRBQkxFUyBmbGFnIHRvIGZhbHNlICovCisJ aWYgKHB1YmZvcm0tPnB1YmFsbHRhYmxlcykKKwl7CisJCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0 aW9uX3B1YmFsbHRhYmxlcyAtIDFdID0gQm9vbEdldERhdHVtKFBVQl9ERUZBVUxUX0FMTF9UQUJM RVMpOworCQlyZXBsYWNlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YmFsbHRhYmxlcyAtIDFdID0g dHJ1ZTsKKwkJQ2FjaGVJbnZhbGlkYXRlUmVsY2FjaGVBbGwoKTsKKwl9CisKKwl0dXAgPSBoZWFw X21vZGlmeV90dXBsZSh0dXAsIFJlbGF0aW9uR2V0RGVzY3IocmVsKSwgdmFsdWVzLCBudWxscywK KwkJCQkJCQlyZXBsYWNlcyk7CisKKwkvKiBVcGRhdGUgdGhlIGNhdGFsb2cuICovCisJQ2F0YWxv Z1R1cGxlVXBkYXRlKHJlbCwgJnR1cC0+dF9zZWxmLCB0dXApOworCisJLyogUmVtb3ZlIHRoZSBh c3NvY2lhdGVkIHNjaGVtYXMgZnJvbSB0aGUgcHVibGljYXRpb24gKi8KKwlzY2hlbWFpZHMgPSBH ZXRQdWJsaWNhdGlvblNjaGVtYXMocHViaWQpOworCisJLyoKKwkgKiBTY2hlbWEgbG9jayBpcyBo ZWxkIHVudGlsIHRoZSBwdWJsaWNhdGlvbiBpcyBhbHRlcmVkIHRvIHByZXZlbnQKKwkgKiBjb25j dXJyZW50IHNjaGVtYSBkZWxldGlvbi4KKwkgKi8KKwlMb2NrU2NoZW1hTGlzdChzY2hlbWFpZHMp OworCisJLyogUmVtb3ZlIFNjaGVtYXMgKi8KKwlQdWJsaWNhdGlvbkRyb3BTY2hlbWFzKHB1Ymlk LCBzY2hlbWFpZHMsIHRydWUpOworCisJLyogR2V0IGFsbCByZWxhdGlvbnMgYXNzb2NpYXRlZCB3 aXRoIHRoZSBwdWJsaWNhdGlvbiAqLworCXJlbGlkcyA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25z KHB1YmlkLCBQVUJMSUNBVElPTl9QQVJUX1JPT1QpOworCisJZm9yZWFjaF9vaWQocmVsaWQsIHJl bGlkcykKKwl7CisJCVB1YmxpY2F0aW9uUmVsSW5mbyAqcmVsOworCisJCXJlbCA9IHBhbGxvYyhz aXplb2YoUHVibGljYXRpb25SZWxJbmZvKSk7CisJCXJlbC0+d2hlcmVDbGF1c2UgPSBOVUxMOwor CQlyZWwtPmNvbHVtbnMgPSBOSUw7CisJCXJlbC0+cmVsYXRpb24gPSB0YWJsZV9vcGVuKHJlbGlk LCBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOworCQlyZWxzID0gbGFwcGVuZChyZWxzLCByZWwp OworCX0KKworCS8qIFJlbW92ZSB0aGUgYXNzb2NpYXRlZCByZWxhdGlvbnMgZnJvbSB0aGUgcHVi bGljYXRpb24gKi8KKwlQdWJsaWNhdGlvbkRyb3BUYWJsZXMocHViaWQsIHJlbHMsIHRydWUpOwor CUNsb3NlVGFibGVMaXN0KHJlbHMpOworfQorCiAvKgogICogQWRkIG9yIHJlbW92ZSB0YWJsZSB0 by9mcm9tIHB1YmxpY2F0aW9uLgogICovCkBAIC0xNTAxLDYgKzE2MDMsOCBAQCBBbHRlclB1Ymxp Y2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAK IAlpZiAoc3RtdC0+b3B0aW9ucykKIAkJQWx0ZXJQdWJsaWNhdGlvbk9wdGlvbnMocHN0YXRlLCBz dG10LCByZWwsIHR1cCk7CisJZWxzZSBpZiAoc3RtdC0+YWN0aW9uID09IEFQX1Jlc2V0UHVibGlj YXRpb24pCisJCUFsdGVyUHVibGljYXRpb25SZXNldChwc3RhdGUsIHN0bXQsIHJlbCwgdHVwKTsK IAllbHNlCiAJewogCQlMaXN0CSAgICpyZWxhdGlvbnMgPSBOSUw7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCBk YjQzMDM0YjlkYi4uNGE0MDEwMjk2YWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9n cmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMTA4NTAsNiArMTA4NTAs OCBAQCBwdWJfb2JqX2xpc3Q6CVB1YmxpY2F0aW9uT2JqU3BlYwogICoKICAqIEFMVEVSIFBVQkxJ Q0FUSU9OIG5hbWUgU0VUIHB1Yl9vYmogWywgLi4uXQogICoKKyAqIEFMVEVSIFBVQkxJQ0FUSU9O IG5hbWUgUkVTRVQKKyAqCiAgKiBwdWJfb2JqIGlzIG9uZSBvZjoKICAqCiAgKgkJVEFCTEUgdGFi bGVfbmFtZSBbLCAuLi5dCkBAIC0xMDg5Niw2ICsxMDg5OCwxMyBAQCBBbHRlclB1YmxpY2F0aW9u U3RtdDoKIAkJCQkJbi0+YWN0aW9uID0gQVBfRHJvcE9iamVjdHM7CiAJCQkJCSQkID0gKE5vZGUg KikgbjsKIAkJCQl9CisJCQl8IEFMVEVSIFBVQkxJQ0FUSU9OIG5hbWUgUkVTRVQKKwkJCQl7CisJ CQkJCUFsdGVyUHVibGljYXRpb25TdG10ICpuID0gbWFrZU5vZGUoQWx0ZXJQdWJsaWNhdGlvblN0 bXQpOworCQkJCQluLT5wdWJuYW1lID0gJDM7CisJCQkJCW4tPmFjdGlvbiA9IEFQX1Jlc2V0UHVi bGljYXRpb247CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KIAkJOwogCiAvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBi L3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCA4YjEwZjIzMTNmMy4uZjA3YWY3 ZjcxZDMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9z cmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTIyNjYsNyArMjI2Niw3IEBAIG1hdGNo X3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCiAJLyogQUxURVIgUFVCTElDQVRJT04g PG5hbWU+ICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRj aEFueSkpCi0JCUNPTVBMRVRFX1dJVEgoIkFERCIsICJEUk9QIiwgIk9XTkVSIFRPIiwgIlJFTkFN RSBUTyIsICJTRVQiKTsKKwkJQ09NUExFVEVfV0lUSCgiQUREIiwgIkRST1AiLCAiT1dORVIgVE8i LCAiUkVOQU1FIFRPIiwgIlJFU0VUIiwgIlNFVCIpOwogCS8qIEFMVEVSIFBVQkxJQ0FUSU9OIDxu YW1lPiBBREQgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1h dGNoQW55LCAiQUREIikpCiAJCUNPTVBMRVRFX1dJVEgoIlRBQkxFUyBJTiBTQ0hFTUEiLCAiVEFC TEUiKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9p bmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCA4NmEyMzZiZDU4Yi4uYWYyMjBiMDI3ODgg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5j bHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTQzMDUsNiArNDMwNSw3IEBAIHR5cGVkZWYgZW51 bSBBbHRlclB1YmxpY2F0aW9uQWN0aW9uCiAJQVBfQWRkT2JqZWN0cywJCQkJLyogYWRkIG9iamVj dHMgdG8gcHVibGljYXRpb24gKi8KIAlBUF9Ecm9wT2JqZWN0cywJCQkJLyogcmVtb3ZlIG9iamVj dHMgZnJvbSBwdWJsaWNhdGlvbiAqLwogCUFQX1NldE9iamVjdHMsCQkJCS8qIHNldCBsaXN0IG9m IG9iamVjdHMgKi8KKwlBUF9SZXNldFB1YmxpY2F0aW9uLAkJLyogcmVzZXQgdGhlIHB1YmxpY2F0 aW9uICovCiB9IEFsdGVyUHVibGljYXRpb25BY3Rpb247CiAKIHR5cGVkZWYgc3RydWN0IEFsdGVy UHVibGljYXRpb25TdG10CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1 YmxpY2F0aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0 CmluZGV4IDUzMjY4MDU5MTQyLi43NDAwOWE5MmYzZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9wdWJsaWNhdGlvbi5vdXQKQEAgLTE5MjMsNiArMTkyMywxMjQgQEAgVGFibGVzOgogRFJP UCBQVUJMSUNBVElPTiBwdWIxOwogRFJPUCBQVUJMSUNBVElPTiBwdWIyOwogRFJPUCBUQUJMRSBn ZW5jb2xzOworLS0gVGVzdHMgZm9yIEFMVEVSIFBVQkxJQ0FUSU9OIC4uLiBSRVNFVAorQ1JFQVRF IFNDSEVNQSBwdWJfc2NoMTsKK0NSRUFURSBUQUJMRSBwdWJfc2NoMS50YmwxIChhIGludCk7CitT RVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJT04gdGVz dHB1Yl9yZXNldCBGT1IgQUxMIFRBQkxFUzsKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7Cist LSBWZXJpZnkgdGhhdCAnQUxMIFRBQkxFUycgZmxhZyBpcyByZXNldAorXGRScCsgdGVzdHB1Yl9y ZXNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWJfcmVzZXQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNv bHVtbnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAg ICAgICAgfCBmCisoMSByb3cpCisKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgUkVT RVQ7CitcZFJwKyB0ZXN0cHViX3Jlc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9yZXNldAorICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVu Y2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYKKygxIHJvdykKKworQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1Yl9yZXNldCBBREQgVEFCTEUgcHViX3NjaDEudGJsMTsKKy0tIFZlcmlmeSB0aGF0 IGFzc29jaWF0ZWQgdGFibGVzIGFyZSByZW1vdmVkIGZyb20gdGhlIHB1YmxpY2F0aW9uIGFmdGVy IFJFU0VUCitcZFJwKyB0ZXN0cHViX3Jlc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9yZXNldAorICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYKK1RhYmxlczoKKyAgICAicHViX3NjaDEu dGJsMSIKKworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBSRVNFVDsKK1xkUnArIHRl c3RwdWJfcmVzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ dWJsaWNhdGlvbiB0ZXN0cHViX3Jlc2V0CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVy YXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUg ICAgICAgICAgICAgIHwgZgorKDEgcm93KQorCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jl c2V0IEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpYzsKKy0tIFZlcmlmeSB0aGF0IGFzc29jaWF0 ZWQgc2NoZW1hcyBhcmUgcmVvbXZlZCBmcm9tIHRoZSBwdWJsaWNhdGlvbiBhZnRlciBSRVNFVAor XGRScCsgdGVzdHB1Yl9yZXNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfcmVzZXQKKyAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAg IHwgbm9uZSAgICAgICAgICAgICAgfCBmCitUYWJsZXMgZnJvbSBzY2hlbWFzOgorICAgICJwdWJs aWMiCisKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgUkVTRVQ7CitcZFJwKyB0ZXN0 cHViX3Jlc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1Yl9yZXNldAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0 ZWQgY29sdW1ucyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAg ICAgICAgICAgICB8IGYKKygxIHJvdykKKworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNl dCBTRVQgKFBVQkxJU0ggPSAnJyk7CistLSBWZXJpZnkgdGhhdCAnUFVCTElTSCcgcGFyYW1ldGVy IGlzIHJlc2V0CitcZFJwKyB0ZXN0cHViX3Jlc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9yZXNldAorICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAg fCBmICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYKKygxIHJvdykKKworQUxURVIgUFVC TElDQVRJT04gdGVzdHB1Yl9yZXNldCBSRVNFVDsKK1xkUnArIHRlc3RwdWJfcmVzZXQKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi X3Jlc2V0CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlh IHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZgor KDEgcm93KQorCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFNFVCAoUFVCTElTSF9W SUFfUEFSVElUSU9OX1JPT1QgPSAndHJ1ZScpOworLS0gVmVyaWZ5IHRoYXQgJ1BVQkxJU0hfVklB X1BBUlRJVElPTl9ST09UJyBwYXJhbWV0ZXIgaXMgcmVzZXQKK1xkUnArIHRlc3RwdWJfcmVzZXQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViX3Jlc2V0CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5z IHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAg IHwgdAorKDEgcm93KQorCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFJFU0VUOwor XGRScCsgdGVzdHB1Yl9yZXNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfcmVzZXQKKyAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAg IHwgbm9uZSAgICAgICAgICAgICAgfCBmCisoMSByb3cpCisKK0FMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWJfcmVzZXQgU0VUIChQVUJMSVNIX0dFTkVSQVRFRF9DT0xVTU5TID0gc3RvcmVkKTsKKy0t IFZlcmlmeSB0aGF0ICdQVUJMSVNIX0dFTkVSQVRFRF9DT0xVTU5TJyBwYXJhbWV0ZXIgaXMgcmVz ZXQKK1xkUnArIHRlc3RwdWJfcmVzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3Jlc2V0CisgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgICB8IHN0b3JlZCAgICAgICAgICAgIHwgZgorKDEgcm93KQorCitBTFRFUiBQVUJMSUNBVElP TiB0ZXN0cHViX3Jlc2V0IFJFU0VUOworXGRScCsgdGVzdHB1Yl9yZXNldAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfcmVzZXQK KyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0 ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K KyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCisoMSByb3cp CisKKy0tIFZlcmlmeSB0aGF0IG9ubHkgc3VwZXJ1c2VyIGNhbiByZXNldCBhIHB1YmxpY2F0aW9u CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IE9XTkVSIFRPIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlcjI7CitTRVQgUk9MRSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIyOworQUxURVIg UFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBSRVNFVDsgLS0gZmFpbCAtIG11c3QgYmUgc3VwZXJ1 c2VyCitFUlJPUjogIG11c3QgYmUgc3VwZXJ1c2VyIHRvIFJFU0VUIHB1YmxpY2F0aW9uCitTRVQg Uk9MRSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXI7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJf cmVzZXQ7CitEUk9QIFRBQkxFIHB1Yl9zY2gxLnRibDE7CitEUk9QIFNDSEVNQSBwdWJfc2NoMTsK IFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047 CiBEUk9QIFJPTEUgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyLCByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3Fs IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCmluZGV4IGRlZGRmMGRhODQ0 Li4xMzY2YjExYmJhMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRp b24uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbApAQCAtMTIy Miw2ICsxMjIyLDYzIEBAIERST1AgUFVCTElDQVRJT04gcHViMTsKIERST1AgUFVCTElDQVRJT04g cHViMjsKIERST1AgVEFCTEUgZ2VuY29sczsKIAorLS0gVGVzdHMgZm9yIEFMVEVSIFBVQkxJQ0FU SU9OIC4uLiBSRVNFVAorQ1JFQVRFIFNDSEVNQSBwdWJfc2NoMTsKK0NSRUFURSBUQUJMRSBwdWJf c2NoMS50YmwxIChhIGludCk7CitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitD UkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBGT1IgQUxMIFRBQkxFUzsKK1JFU0VUIGNs aWVudF9taW5fbWVzc2FnZXM7CisKKy0tIFZlcmlmeSB0aGF0ICdBTEwgVEFCTEVTJyBmbGFnIGlz IHJlc2V0CitcZFJwKyB0ZXN0cHViX3Jlc2V0CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jl c2V0IFJFU0VUOworXGRScCsgdGVzdHB1Yl9yZXNldAorCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViX3Jlc2V0IEFERCBUQUJMRSBwdWJfc2NoMS50YmwxOworCistLSBWZXJpZnkgdGhhdCBhc3Nv Y2lhdGVkIHRhYmxlcyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBwdWJsaWNhdGlvbiBhZnRlciBSRVNF VAorXGRScCsgdGVzdHB1Yl9yZXNldAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBS RVNFVDsKK1xkUnArIHRlc3RwdWJfcmVzZXQKKworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9y ZXNldCBBREQgVEFCTEVTIElOIFNDSEVNQSBwdWJsaWM7CisKKy0tIFZlcmlmeSB0aGF0IGFzc29j aWF0ZWQgc2NoZW1hcyBhcmUgcmVvbXZlZCBmcm9tIHRoZSBwdWJsaWNhdGlvbiBhZnRlciBSRVNF VAorXGRScCsgdGVzdHB1Yl9yZXNldAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBS RVNFVDsKK1xkUnArIHRlc3RwdWJfcmVzZXQKKworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9y ZXNldCBTRVQgKFBVQkxJU0ggPSAnJyk7CisKKy0tIFZlcmlmeSB0aGF0ICdQVUJMSVNIJyBwYXJh bWV0ZXIgaXMgcmVzZXQKK1xkUnArIHRlc3RwdWJfcmVzZXQKK0FMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWJfcmVzZXQgUkVTRVQ7CitcZFJwKyB0ZXN0cHViX3Jlc2V0CisKK0FMVEVSIFBVQkxJQ0FU SU9OIHRlc3RwdWJfcmVzZXQgU0VUIChQVUJMSVNIX1ZJQV9QQVJUSVRJT05fUk9PVCA9ICd0cnVl Jyk7CisKKy0tIFZlcmlmeSB0aGF0ICdQVUJMSVNIX1ZJQV9QQVJUSVRJT05fUk9PVCcgcGFyYW1l dGVyIGlzIHJlc2V0CitcZFJwKyB0ZXN0cHViX3Jlc2V0CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViX3Jlc2V0IFJFU0VUOworXGRScCsgdGVzdHB1Yl9yZXNldAorCitBTFRFUiBQVUJMSUNBVElP TiB0ZXN0cHViX3Jlc2V0IFNFVCAoUFVCTElTSF9HRU5FUkFURURfQ09MVU1OUyA9IHN0b3JlZCk7 CisKKy0tIFZlcmlmeSB0aGF0ICdQVUJMSVNIX0dFTkVSQVRFRF9DT0xVTU5TJyBwYXJhbWV0ZXIg aXMgcmVzZXQKK1xkUnArIHRlc3RwdWJfcmVzZXQKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJf cmVzZXQgUkVTRVQ7CitcZFJwKyB0ZXN0cHViX3Jlc2V0CisKKy0tIFZlcmlmeSB0aGF0IG9ubHkg c3VwZXJ1c2VyIGNhbiByZXNldCBhIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViX3Jlc2V0IE9XTkVSIFRPIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcjI7CitTRVQgUk9MRSBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIyOworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNl dCBSRVNFVDsgLS0gZmFpbCAtIG11c3QgYmUgc3VwZXJ1c2VyCitTRVQgUk9MRSByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXI7CisKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldDsKK0RST1Ag VEFCTEUgcHViX3NjaDEudGJsMTsKK0RST1AgU0NIRU1BIHB1Yl9zY2gxOworCiBSRVNFVCBjbGll bnRfbWluX21lc3NhZ2VzOwogUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOwogRFJPUCBST0xF IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyMjsKLS0g CjIuMzQuMQoK --000000000000159f6f063c3bb0bd Content-Type: application/octet-stream; name="v20-0003-Skip-publishing-the-columns-specified-in-FOR-TAB.patch" Content-Disposition: attachment; filename="v20-0003-Skip-publishing-the-columns-specified-in-FOR-TAB.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_me9qwvzw2 RnJvbSBjYjNlODk4OTVhNDMzNWQ5ZjE3OTYyNzJjZjM0NjVlYTcyNzg0YWI4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IFN1biwgMyBBdWcgMjAyNSAyMTowMToxMiArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjIw IDMvM10gU2tpcCBwdWJsaXNoaW5nIHRoZSBjb2x1bW5zIHNwZWNpZmllZCBpbiBGT1IgVEFCTEUK IEVYQ0VQVAoKQSBuZXcgIlRBQkxFIHRhYmxlX25hbWUgRVhDRVBUIChjb2x1bW5fbGlzdCkiIGNs YXVzZSBmb3IgQ1JFQVRFL0FMVEVSClBVQkxJQ0FUSU9OIGFsbG93cyBvbmUgb3IgbW9yZSBjb2x1 bW5zIHRvIGJlIGV4Y2x1ZGVkLiBUaGUgcHVibGlzaGVyCndpbGwgbm90IHNlbmQgdGhlIGRhdGEg b2YgZXhjbHVkZWQgY29sdW1ucyB0byB0aGUgc3Vic2NyaWJlci4KClRoZSBuZXcgc3ludGF4IGFs bG93cyBzcGVjaWZ5aW5nIGV4Y2x1ZGVkIGNvbHVtbiBsaXN0IHdoZW4gY3JlYXRpbmcgb3IKYWx0 ZXJpbmcgYSBwdWJsaWNhdGlvbi4gRm9yIGV4YW1wbGU6CkNSRUFURSBQVUJMSUNBVElPTiBwdWJu YW1lIEZPUiBUQUJMRSB0YWJuYW1lIEVYQ0VQVCAoY29sMSwgY29sMiwgY29sMykKb3IKQUxURVIg UFVCTElDQVRJT04gcHVibmFtZSBBREQgVEFCTEUgdGFibmFtZSBFWENFUFQgKGNvbDEsIGNvbDIs IGNvbDMpCgpXaGVuIGNvbHVtbiAicHJleGNlcHQiIG9mIHN5c3RlbSBjYXRhbG9nICJwZ19wdWJs aWNhdGlvbl9yZWwiIGlzIHNldAp0byAidHJ1ZSIsIGFuZCBjb2x1bW4gInByYXR0cnMiIG9mIHN5 c3RlbSBjYXRhbG9nICJwZ19wdWJsaWNhdGlvbl9yZWwiCmlzIG5vdCBOVUxMLCB0aGF0IG1lYW5z IHRoZSBwdWJsaWNhdGlvbiB3YXMgY3JlYXRlZCB3aXRoICJFWENFUFQKKGNvbHVtbi1saXN0KSIs IGFuZCB0aGUgY29sdW1ucyBpbiAicHJhdHRycyIgd2lsbCBiZSBleGNsdWRlZCBmcm9tCmJlaW5n IHB1Ymxpc2hlZC4KCnBnX2R1bXAgaXMgdXBkYXRlZCB0byBpZGVudGlmeSBhbmQgZHVtcCB0aGUg ZXhjbHVkZWQgY29sdW1uIGxpc3Qgb2YgdGhlCnB1YmxpY2F0aW9uLgoKVGhlIHBzcWwgXGQgZmFt aWx5IG9mIGNvbW1hbmRzIGNhbiBub3cgZGlzcGxheSBleGNsdWRlZCBjb2x1bW4gbGlzdC4gZS5n Lgpwc3FsIFxkUnArIHZhcmlhbnQgd2lsbCBub3cgZGlzcGxheSBhc3NvY2lhdGVkICJFWENFUFQg KGNvbHVtbl9saXN0KSIgaWYKYW55LgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAg ICAgICAgICAgICAgICAgICB8ICAgNSArLQogZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRp b24uc2dtbCAgICAgICAgIHwgMTA2ICsrKysrKy0tCiBkb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1 YmxpY2F0aW9uLnNnbWwgICAgICAgfCAgMTAgKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1 YmxpY2F0aW9uLnNnbWwgICAgICB8ICA1MiArKystCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1 YmxpY2F0aW9uLmMgICAgICAgICAgfCAgNzUgKysrKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9w dWJsaWNhdGlvbmNtZHMuYyAgICAgICAgfCAgNTQgKystLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueSAgICAgICAgICAgICAgICAgICAgIHwgIDQ0ICsrLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgICB8ICA0MSArKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgICB8ICA3MCArKysrKy0KIHNyYy9iaW4vcGdfZHVtcC9w Z19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8ICA0NSArKy0tCiBzcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5oICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2Jpbi9wc3FsL2Rlc2Ny aWJlLmMgICAgICAgICAgICAgICAgICAgICAgIHwgMjM3ICsrKysrKysrKystLS0tLS0tLQogc3Jj L2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmggICAgICAgICAgfCAgIDYgKy0KIHNyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25fcmVsLmggICAgICB8ICAgNSArLQogc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgICAgIHwgIDg4ICsrKysrKysKIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCAgICAgICAgICB8ICA1NSArKysrCiBz cmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQgICAgICAgICAgICAgfCAgIDEgKwogLi4u L3QvMDM3X3JlcF9jaGFuZ2VzX2V4Y2VwdF9jb2xsaXN0LnBsICAgICAgIHwgMTkwICsrKysrKysr KysrKysrCiAxOSBmaWxlcyBjaGFuZ2VkLCA4NzUgaW5zZXJ0aW9ucygrKSwgMjE0IGRlbGV0aW9u cygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19yZXBf Y2hhbmdlc19leGNlcHRfY29sbGlzdC5wbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRh bG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggZTk2YTU1ZmVjZjku LmMxNDA3N2NhYTY4IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtNjU3Myw3ICs2NTczLDEwIEBAIFNDUkFN LVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJs ZT46PHJlcGxhY2VhYmxlPiZsCiAgICAgICA8c3RydWN0ZmllbGQ+cHJleGNlcHQ8L3N0cnVjdGZp ZWxkPiA8dHlwZT5ib29sPC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAg ICAgVHJ1ZSBpZiB0aGUgcmVsYXRpb24gbXVzdCBiZSBleGNsdWRlZAorICAgICAgIFRydWUgaWYg dGhlIGNvbHVtbiBsaXN0IG9yIHJlbGF0aW9uIG11c3QgYmUgZXhjbHVkZWQgZnJvbSBwdWJsaWNh dGlvbi4KKyAgICAgICBJZiBhIGNvbHVtbiBsaXN0IGlzIHNwZWNpZmllZCBpbiA8bGl0ZXJhbD5w cmF0dHJzPC9saXRlcmFsPiwgdGhlbgorICAgICAgIGV4Y2x1ZGUgb25seSB0aG9zZSBjb2x1bW5z LiBJZiA8bGl0ZXJhbD5wcmF0dHJzPC9saXRlcmFsPiBpcyBudWxsLAorICAgICAgIHRoZW4gZXhj bHVkZSB0aGUgZW50aXJlIHJlbGF0aW9uLgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwv cm93PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21s IGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAppbmRleCA0MTRhMzE0YWNj NS4uMmYwNGY5MzYyMGUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0 aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbApAQCAt MTM3MiwxMCArMTM3MiwxMCBAQCBQdWJsaWNhdGlvbnM6CiAgIDx0aXRsZT5Db2x1bW4gTGlzdHM8 L3RpdGxlPgogCiAgIDxwYXJhPgotICAgRWFjaCBwdWJsaWNhdGlvbiBjYW4gb3B0aW9uYWxseSBz cGVjaWZ5IHdoaWNoIGNvbHVtbnMgb2YgZWFjaCB0YWJsZSBhcmUKLSAgIHJlcGxpY2F0ZWQgdG8g c3Vic2NyaWJlcnMuIFRoZSB0YWJsZSBvbiB0aGUgc3Vic2NyaWJlciBzaWRlIG11c3QgaGF2ZSBh dAotICAgbGVhc3QgYWxsIHRoZSBjb2x1bW5zIHRoYXQgYXJlIHB1Ymxpc2hlZC4gSWYgbm8gY29s dW1uIGxpc3QgaXMgc3BlY2lmaWVkLAotICAgdGhlbiBhbGwgY29sdW1ucyBvbiB0aGUgcHVibGlz aGVyIGFyZSByZXBsaWNhdGVkLgorICAgRWFjaCBwdWJsaWNhdGlvbiBjYW4gb3B0aW9uYWxseSBz cGVjaWZ5IHdoaWNoIGNvbHVtbnMgb2YgZWFjaCB0YWJsZSBzaG91bGQgYmUKKyAgIHJlcGxpY2F0 ZWQgb3IgZXhjbHVkZWQgZnJvbSByZXBsaWNhdGlvbi4gVGhlIHRhYmxlIG9uIHRoZSBzdWJzY3Jp YmVyIHNpZGUKKyAgIG11c3QgaGF2ZSBhdCBsZWFzdCBhbGwgdGhlIGNvbHVtbnMgdGhhdCBhcmUg cHVibGlzaGVkLiBJZiBubyBjb2x1bW4gbGlzdCBpcworICAgc3BlY2lmaWVkLCB0aGVuIGFsbCBj b2x1bW5zIG9uIHRoZSBwdWJsaXNoZXIgYXJlIHJlcGxpY2F0ZWQuCiAgICBTZWUgPHhyZWYgbGlu a2VuZD0ic3FsLWNyZWF0ZXB1YmxpY2F0aW9uIi8+IGZvciBkZXRhaWxzIG9uIHRoZSBzeW50YXgu CiAgIDwvcGFyYT4KIApAQCAtMTM4OSw4ICsxMzg5LDExIEBAIFB1YmxpY2F0aW9uczoKIAogICA8 cGFyYT4KICAgIElmIG5vIGNvbHVtbiBsaXN0IGlzIHNwZWNpZmllZCwgYW55IGNvbHVtbnMgYWRk ZWQgdG8gdGhlIHRhYmxlIGxhdGVyIGFyZQotICAgYXV0b21hdGljYWxseSByZXBsaWNhdGVkLiBU aGlzIG1lYW5zIHRoYXQgaGF2aW5nIGEgY29sdW1uIGxpc3Qgd2hpY2ggbmFtZXMKLSAgIGFsbCBj b2x1bW5zIGlzIG5vdCB0aGUgc2FtZSBhcyBoYXZpbmcgbm8gY29sdW1uIGxpc3QgYXQgYWxsLgor ICAgYXV0b21hdGljYWxseSByZXBsaWNhdGVkLiBIb3dldmVyLCBhIG5vcm1hbCBjb2x1bW4gbGlz dCAod2l0aG91dAorICAgPGxpdGVyYWw+RVhDRVBUPC9saXRlcmFsPikgb25seSByZXBsaWNhdGVz IHRoZSBzcGVjaWZpZWQgY29sdW1ucyBhbmQgbm8gbW9yZS4KKyAgIFRoZXJlZm9yZSwgaGF2aW5n IGEgY29sdW1uIGxpc3QgdGhhdCBuYW1lcyBhbGwgY29sdW1ucyBpcyBub3QgdGhlIHNhbWUgYXMK KyAgIGhhdmluZyBubyBjb2x1bW4gbGlzdCBhdCBhbGwsIGFzIG1vcmUgY29sdW1ucyBtYXkgYmUg YWRkZWQgdG8gdGhlIHRhYmxlCisgICBsYXRlci4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgpAQCAt MTQwMiw2ICsxNDA1LDE0IEBAIFB1YmxpY2F0aW9uczoKICAgIEdlbmVyYXRlZCBjb2x1bW5zIGNh biBhbHNvIGJlIHNwZWNpZmllZCBpbiBhIGNvbHVtbiBsaXN0LiBUaGlzIGFsbG93cwogICAgZ2Vu ZXJhdGVkIGNvbHVtbnMgdG8gYmUgcHVibGlzaGVkLCByZWdhcmRsZXNzIG9mIHRoZSBwdWJsaWNh dGlvbiBwYXJhbWV0ZXIKICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVwdWJsaWNhdGlvbi1w YXJhbXMtd2l0aC1wdWJsaXNoLWdlbmVyYXRlZC1jb2x1bW5zIj4KKyAgIDxsaXRlcmFsPnB1Ymxp c2hfZ2VuZXJhdGVkX2NvbHVtbnM8L2xpdGVyYWw+PC9saW5rPi4gU3BlY2lmeWluZyBnZW5lcmF0 ZWQKKyAgIGNvbHVtbnMgdXNpbmcgdGhlIDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4gY2xhdXNl IGV4Y2x1ZGVzIHRob3NlIGNvbHVtbnMKKyAgIGZyb20gYmVpbmcgcHVibGlzaGVkLCByZWdhcmRs ZXNzIG9mIHRoZQorICAgPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXB1YmxpY2F0aW9uLXBhcmFt cy13aXRoLXB1Ymxpc2gtZ2VuZXJhdGVkLWNvbHVtbnMiPgorICAgPGxpdGVyYWw+cHVibGlzaF9n ZW5lcmF0ZWRfY29sdW1uczwvbGl0ZXJhbD48L2xpbms+IHNldHRpbmcuIEhvd2V2ZXIsIGZvcgor ICAgZ2VuZXJhdGVkIGNvbHVtbnMgdGhhdCBhcmUgbm90IGxpc3RlZCBpbiB0aGUgPGxpdGVyYWw+ RVhDRVBUPC9saXRlcmFsPgorICAgY2xhdXNlLCB3aGV0aGVyIHRoZXkgYXJlIHB1Ymxpc2hlZCBv ciBub3Qgc3RpbGwgZGVwZW5kcyBvbiB0aGUgdmFsdWUgb2YKKyAgIDxsaW5rIGxpbmtlbmQ9InNx bC1jcmVhdGVwdWJsaWNhdGlvbi1wYXJhbXMtd2l0aC1wdWJsaXNoLWdlbmVyYXRlZC1jb2x1bW5z Ij4KICAgIDxsaXRlcmFsPnB1Ymxpc2hfZ2VuZXJhdGVkX2NvbHVtbnM8L2xpdGVyYWw+PC9saW5r Pi4gU2VlCiAgICA8eHJlZiBsaW5rZW5kPSJsb2dpY2FsLXJlcGxpY2F0aW9uLWdlbmNvbHMiLz4g Zm9yIGRldGFpbHMuCiAgIDwvcGFyYT4KQEAgLTE0MjMsMTEgKzE0MzQsMTQgQEAgUHVibGljYXRp b25zOgogCiAgIDxwYXJhPgogICAgSWYgYSBwdWJsaWNhdGlvbiBwdWJsaXNoZXMgPGNvbW1hbmQ+ VVBEQVRFPC9jb21tYW5kPiBvcgotICAgPGNvbW1hbmQ+REVMRVRFPC9jb21tYW5kPiBvcGVyYXRp b25zLCBhbnkgY29sdW1uIGxpc3QgbXVzdCBpbmNsdWRlIHRoZQotICAgdGFibGUncyByZXBsaWNh IGlkZW50aXR5IGNvbHVtbnMgKHNlZQotICAgPHhyZWYgbGlua2VuZD0ic3FsLWFsdGVydGFibGUt cmVwbGljYS1pZGVudGl0eSIvPikuCisgICA8Y29tbWFuZD5ERUxFVEU8L2NvbW1hbmQ+IG9wZXJh dGlvbnMsIGFueSBjb2x1bW4gbGlzdCBtdXN0IGluY2x1ZGUgdGFibGUncworICAgcmVwbGljYSBp ZGVudGl0eSBjb2x1bW5zIGFuZCBhbnkgY29sdW1uIGxpc3Qgc3BlY2lmaWVkIHdpdGgKKyAgIDxs aXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4gY2xhdXNlIG11c3Qgbm90IGluY2x1ZGUgdGhlIHRhYmxl J3MgcmVwbGljYQorICAgaWRlbnRpdHkgY29sdW1ucyAoc2VlIDx4cmVmIGxpbmtlbmQ9InNxbC1h bHRlcnRhYmxlLXJlcGxpY2EtaWRlbnRpdHkiLz4pLgogICAgSWYgYSBwdWJsaWNhdGlvbiBwdWJs aXNoZXMgb25seSA8Y29tbWFuZD5JTlNFUlQ8L2NvbW1hbmQ+IG9wZXJhdGlvbnMsIHRoZW4KLSAg IHRoZSBjb2x1bW4gbGlzdCBtYXkgb21pdCByZXBsaWNhIGlkZW50aXR5IGNvbHVtbnMuCisgICB0 aGUgY29sdW1uIGxpc3QgbWF5IG9taXQgcmVwbGljYSBpZGVudGl0eSBjb2x1bW5zIGFuZCB0aGUg Y29sdW1uIGxpc3QKKyAgIHNwZWNpZmllZCB3aXRoIDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4g Y2xhdXNlIG1heSBpbmNsdWRlIHJlcGxpY2EgaWRlbnRpdHkKKyAgIGNvbHVtbnMuCiAgIDwvcGFy YT4KIAogICA8cGFyYT4KQEAgLTE0NzIsMTggKzE0ODYsMjEgQEAgUHVibGljYXRpb25zOgogICAg PHRpdGxlPkV4YW1wbGVzPC90aXRsZT4KIAogICAgPHBhcmE+Ci0gICAgQ3JlYXRlIGEgdGFibGUg PGxpdGVyYWw+dDE8L2xpdGVyYWw+IHRvIGJlIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBleGFtcGxl LgorICAgIENyZWF0ZSB0YWJsZXMgPGxpdGVyYWw+dDE8L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD50 MjwvbGl0ZXJhbD4gdG8gYmUgdXNlZCBpbgorICAgIHRoZSBmb2xsb3dpbmcgZXhhbXBsZS4KIDxw cm9ncmFtbGlzdGluZz4KIC8qIHB1YiAjICovIENSRUFURSBUQUJMRSB0MShpZCBpbnQsIGEgdGV4 dCwgYiB0ZXh0LCBjIHRleHQsIGQgdGV4dCwgZSB0ZXh0LCBQUklNQVJZIEtFWShpZCkpOworLyog cHViICMgKi8gQ1JFQVRFIFRBQkxFIHQyKGlkIGludCwgYSB0ZXh0LCBiIHRleHQsIGMgdGV4dCwg ZCB0ZXh0LCBlIHRleHQsIFBSSU1BUlkgS0VZKGlkKSk7CiA8L3Byb2dyYW1saXN0aW5nPjwvcGFy YT4KIAogICAgPHBhcmE+CiAgICAgQ3JlYXRlIGEgcHVibGljYXRpb24gPGxpdGVyYWw+cDE8L2xp dGVyYWw+LiBBIGNvbHVtbiBsaXN0IGlzIGRlZmluZWQgZm9yCi0gICAgdGFibGUgPGxpdGVyYWw+ dDE8L2xpdGVyYWw+IHRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgdGhhdCB3aWxsIGJl Ci0gICAgcmVwbGljYXRlZC4gTm90aWNlIHRoYXQgdGhlIG9yZGVyIG9mIGNvbHVtbiBuYW1lcyBp biB0aGUgY29sdW1uIGxpc3QgZG9lcwotICAgIG5vdCBtYXR0ZXIuCisgICAgdGFibGUgPGxpdGVy YWw+dDE8L2xpdGVyYWw+LCBhbmQgYW5vdGhlciBjb2x1bW4gbGlzdCBpcyBkZWZpbmVkIGZvciB0 YWJsZQorICAgIDxsaXRlcmFsPnQyPC9saXRlcmFsPiB1c2luZyB0aGUgPGxpdGVyYWw+RVhDRVBU PC9saXRlcmFsPiBjbGF1c2UgdG8gcmVkdWNlCisgICAgdGhlIG51bWJlciBvZiBjb2x1bW5zIHRo YXQgd2lsbCBiZSByZXBsaWNhdGVkLiBOb3RlIHRoYXQgdGhlIG9yZGVyIG9mIGNvbHVtbgorICAg IG5hbWVzIGluIHRoZSBjb2x1bW4gbGlzdHMgZG9lcyBub3QgbWF0dGVyLgogPHByb2dyYW1saXN0 aW5nPgotLyogcHViICMgKi8gQ1JFQVRFIFBVQkxJQ0FUSU9OIHAxIEZPUiBUQUJMRSB0MSAoaWQs IGIsIGEsIGQpOworLyogcHViICMgKi8gQ1JFQVRFIFBVQkxJQ0FUSU9OIHAxIEZPUiBUQUJMRSB0 MSAoaWQsIGIsIGEsIGQpLCB0MiBFWENFUFQgKGQsIGEpOwogPC9wcm9ncmFtbGlzdGluZz48L3Bh cmE+CiAKICAgICA8cGFyYT4KQEAgLTE0OTcsNiArMTUxNCw3IEBAIFB1YmxpY2F0aW9uczoKICBw b3N0Z3JlcyB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnQxIiAo aWQsIGEsIGIsIGQpCisgICAgInB1YmxpYy50MiIgRVhDRVBUIChhLCBkKQogPC9wcm9ncmFtbGlz dGluZz48L3BhcmE+CiAKICAgICA8cGFyYT4KQEAgLTE1MTcsMjMgKzE1MzUsNDEgQEAgSW5kZXhl czoKICAgICAidDFfcGtleSIgUFJJTUFSWSBLRVksIGJ0cmVlIChpZCkKIFB1YmxpY2F0aW9uczoK ICAgICAicDEiIChpZCwgYSwgYiwgZCkKKworLyogcHViICMgKi8gXGQgdDIKKyAgICAgICAgICAg ICAgICAgVGFibGUgInB1YmxpYy50MiIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwg TnVsbGFibGUgfCBEZWZhdWx0CistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLS0KKyBpZCAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51bGwg fAorIGEgICAgICB8IHRleHQgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8CisgYiAgICAgIHwg dGV4dCAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwKKyBjICAgICAgfCB0ZXh0ICAgIHwgICAg ICAgICAgIHwgICAgICAgICAgfAorIGQgICAgICB8IHRleHQgICAgfCAgICAgICAgICAgfCAgICAg ICAgICB8CisgZSAgICAgIHwgdGV4dCAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwKK0luZGV4 ZXM6CisgICAgInQyX3BrZXkiIFBSSU1BUlkgS0VZLCBidHJlZSAoaWQpCitQdWJsaWNhdGlvbnM6 CisgICAgInAxIiBFWENFUFQgKGEsIGQpCiA8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KIAogICAg IDxwYXJhPgotICAgICBPbiB0aGUgc3Vic2NyaWJlciBub2RlLCBjcmVhdGUgYSB0YWJsZSA8bGl0 ZXJhbD50MTwvbGl0ZXJhbD4gd2hpY2ggbm93Ci0gICAgIG9ubHkgbmVlZHMgYSBzdWJzZXQgb2Yg dGhlIGNvbHVtbnMgdGhhdCB3ZXJlIG9uIHRoZSBwdWJsaXNoZXIgdGFibGUKLSAgICAgPGxpdGVy YWw+dDE8L2xpdGVyYWw+LCBhbmQgYWxzbyBjcmVhdGUgdGhlIHN1YnNjcmlwdGlvbgorICAgICBP biB0aGUgc3Vic2NyaWJlciBub2RlLCBjcmVhdGUgdGFibGVzIDxsaXRlcmFsPnQxPC9saXRlcmFs PiBhbmQKKyAgICAgPGxpdGVyYWw+dDI8L2xpdGVyYWw+IHdoaWNoIG5vdyBvbmx5IG5lZWRzIGEg c3Vic2V0IG9mIHRoZSBjb2x1bW5zIHRoYXQKKyAgICAgd2VyZSBvbiB0aGUgcHVibGlzaGVyIHRh YmxlcyA8bGl0ZXJhbD50MTwvbGl0ZXJhbD4gYW5kCisgICAgIDxsaXRlcmFsPnQyPC9saXRlcmFs PiwgYW5kIGFsc28gY3JlYXRlIHRoZSBzdWJzY3JpcHRpb24KICAgICAgPGxpdGVyYWw+czE8L2xp dGVyYWw+IHRoYXQgc3Vic2NyaWJlcyB0byB0aGUgcHVibGljYXRpb24KICAgICAgPGxpdGVyYWw+ cDE8L2xpdGVyYWw+LgogPHByb2dyYW1saXN0aW5nPgogLyogc3ViICMgKi8gQ1JFQVRFIFRBQkxF IHQxKGlkIGludCwgYiB0ZXh0LCBhIHRleHQsIGQgdGV4dCwgUFJJTUFSWSBLRVkoaWQpKTsKKy8q IHN1YiAjICovIENSRUFURSBUQUJMRSB0MihpZCBpbnQsIGIgdGV4dCwgYyB0ZXh0LCBlIHRleHQs IFBSSU1BUlkgS0VZKGlkKSk7CiAvKiBzdWIgIyAqLyBDUkVBVEUgU1VCU0NSSVBUSU9OIHMxCiAv KiBzdWIgLSAqLyBDT05ORUNUSU9OICdob3N0PWxvY2FsaG9zdCBkYm5hbWU9dGVzdF9wdWIgYXBw bGljYXRpb25fbmFtZT1zMScKIC8qIHN1YiAtICovIFBVQkxJQ0FUSU9OIHAxOwogPC9wcm9ncmFt bGlzdGluZz48L3BhcmE+CiAKICAgICA8cGFyYT4KLSAgICAgT24gdGhlIHB1Ymxpc2hlciBub2Rl LCBpbnNlcnQgc29tZSByb3dzIHRvIHRhYmxlIDxsaXRlcmFsPnQxPC9saXRlcmFsPi4KKyAgICAg T24gdGhlIHB1Ymxpc2hlciBub2RlLCBpbnNlcnQgc29tZSByb3dzIHRvIHRhYmxlcyA8bGl0ZXJh bD50MTwvbGl0ZXJhbD4KKyAgICAgYW5kIDxsaXRlcmFsPnQyPC9saXRlcmFsPgogPHByb2dyYW1s aXN0aW5nPgogLyogcHViICMgKi8gSU5TRVJUIElOVE8gdDEgVkFMVUVTKDEsICdhLTEnLCAnYi0x JywgJ2MtMScsICdkLTEnLCAnZS0xJyk7CiAvKiBwdWIgIyAqLyBJTlNFUlQgSU5UTyB0MSBWQUxV RVMoMiwgJ2EtMicsICdiLTInLCAnYy0yJywgJ2QtMicsICdlLTInKTsKQEAgLTE1NDUsMTEgKzE1 ODEsMjEgQEAgUHVibGljYXRpb25zOgogICAyIHwgYS0yIHwgYi0yIHwgYy0yIHwgZC0yIHwgZS0y CiAgIDMgfCBhLTMgfCBiLTMgfCBjLTMgfCBkLTMgfCBlLTMKICgzIHJvd3MpCisvKiBwdWIgIyAq LyBJTlNFUlQgSU5UTyB0MiBWQUxVRVMoMSwgJ2EtMScsICdiLTEnLCAnYy0xJywgJ2QtMScsICdl LTEnKTsKKy8qIHB1YiAjICovIElOU0VSVCBJTlRPIHQyIFZBTFVFUygyLCAnYS0yJywgJ2ItMics ICdjLTInLCAnZC0yJywgJ2UtMicpOworLyogcHViICMgKi8gSU5TRVJUIElOVE8gdDIgVkFMVUVT KDMsICdhLTMnLCAnYi0zJywgJ2MtMycsICdkLTMnLCAnZS0zJyk7CisvKiBwdWIgIyAqLyBTRUxF Q1QgKiBGUk9NIHQyIE9SREVSIEJZIGlkOworIGlkIHwgIGEgIHwgIGIgIHwgIGMgIHwgIGQgIHwg IGUKKy0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8IGEtMSB8IGItMSB8 IGMtMSB8IGQtMSB8IGUtMQorICAyIHwgYS0yIHwgYi0yIHwgYy0yIHwgZC0yIHwgZS0yCisgIDMg fCBhLTMgfCBiLTMgfCBjLTMgfCBkLTMgfCBlLTMKKygzIHJvd3MpCiA8L3Byb2dyYW1saXN0aW5n PjwvcGFyYT4KIAogICAgIDxwYXJhPgotICAgICBPbmx5IGRhdGEgZnJvbSB0aGUgY29sdW1uIGxp c3Qgb2YgcHVibGljYXRpb24gPGxpdGVyYWw+cDE8L2xpdGVyYWw+IGlzCi0gICAgIHJlcGxpY2F0 ZWQuCisgICAgIE9ubHkgZGF0YSBzcGVjaWZpZWQgYnkgdGhlIGNvbHVtbiBsaXN0cyBvZiBwdWJs aWNhdGlvbgorICAgICA8bGl0ZXJhbD5wMTwvbGl0ZXJhbD4gaXMgcmVwbGljYXRlZC4KIDxwcm9n cmFtbGlzdGluZz4KIC8qIHN1YiAjICovIFNFTEVDVCAqIEZST00gdDEgT1JERVIgQlkgaWQ7CiAg aWQgfCAgYiAgfCAgYSAgfCAgZApAQCAtMTU1OCw2ICsxNjA0LDEzIEBAIFB1YmxpY2F0aW9uczoK ICAgMiB8IGItMiB8IGEtMiB8IGQtMgogICAzIHwgYi0zIHwgYS0zIHwgZC0zCiAoMyByb3dzKQor Lyogc3ViICMgKi8gU0VMRUNUICogRlJPTSB0MiBPUkRFUiBCWSBpZDsKKyBpZCB8ICBiICB8ICBj ICB8ICBlCistLS0tKy0tLS0tKy0tLS0tKy0tLS0tCisgIDEgfCBiLTEgfCBjLTEgfCBlLTEKKyAg MiB8IGItMiB8IGMtMiB8IGUtMgorICAzIHwgYi0zIHwgYy0zIHwgZS0zCisoMyByb3dzKQogPC9w cm9ncmFtbGlzdGluZz48L3BhcmE+CiAKICAgPC9zZWN0Mj4KQEAgLTE2NTQsNiArMTcwNywxNyBA QCBQdWJsaWNhdGlvbnM6CiAgICA8L2l0ZW1pemVkbGlzdD4KICAgPC9wYXJhPgogCisgIDxwYXJh PgorICAgR2VuZXJhdGVkIGNvbHVtbnMgc3BlY2lmaWVkIGluIHRoZSBjb2x1bW4gbGlzdCB3aXRo IHRoZQorICAgPGxpdGVyYWw+RVhDRVBUPC9saXRlcmFsPiBjbGF1c2UgYXJlIG5vdCBwdWJsaXNo ZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlCisgICBvZiB0aGUgPGxpbmsgbGlua2VuZD0ic3Fs LWNyZWF0ZXB1YmxpY2F0aW9uLXBhcmFtcy13aXRoLXB1Ymxpc2gtZ2VuZXJhdGVkLWNvbHVtbnMi PgorICAgPGxpdGVyYWw+cHVibGlzaF9nZW5lcmF0ZWRfY29sdW1uczwvbGl0ZXJhbD48L2xpbms+ IHBhcmFtZXRlci4gSG93ZXZlciwKKyAgIGdlbmVyYXRlZCBjb2x1bW5zIHRoYXQgYXJlIG5vdCBw YXJ0IG9mIHRoZSBjb2x1bW4gbGlzdCB3aXRoIHRoZQorICAgPGxpdGVyYWw+RVhDRVBUPC9saXRl cmFsPiBjbGF1c2UgYXJlIHB1Ymxpc2hlZCBhY2NvcmRpbmcgdG8gdGhlIHZhbHVlIG9mIHRoZQor ICAgPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXB1YmxpY2F0aW9uLXBhcmFtcy13aXRoLXB1Ymxp c2gtZ2VuZXJhdGVkLWNvbHVtbnMiPgorICAgPGxpdGVyYWw+cHVibGlzaF9nZW5lcmF0ZWRfY29s dW1uczwvbGl0ZXJhbD48L2xpbms+IHBhcmFtZXRlci4KKyAgPC9wYXJhPgorCiAgIDxwYXJhPgog ICAgVGhlIGZvbGxvd2luZyB0YWJsZSBzdW1tYXJpemVzIGJlaGF2aW9yIHdoZW4gdGhlcmUgYXJl IGdlbmVyYXRlZCBjb2x1bW5zCiAgICBpbnZvbHZlZCBpbiB0aGUgbG9naWNhbCByZXBsaWNhdGlv bi4gUmVzdWx0cyBhcmUgc2hvd24gZm9yIHdoZW4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9y ZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGlj YXRpb24uc2dtbAppbmRleCAzOGI0NjU3Mzc4YS4uZjc5ZWY3ODlkOTMgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv cmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwKQEAgLTMyLDcgKzMyLDcgQEAgQUxURVIgUFVCTElD QVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBS RVNFVAogCiA8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJs aWNhdGlvbl9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKLSAgICBU QUJMRSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwv cmVwbGFjZWFibGU+IFsgKiBdIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29s dW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0gWyBXSEVSRSAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gKSBdIFssIC4uLiBd CisgICAgVEFCTEUgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxl X25hbWU8L3JlcGxhY2VhYmxlPiBbICogXSBbIFsgRVhDRVBUIF0gKCBjb2x1bW5fbmFtZSBbLCAu Li4gXSApIF0gWyBXSEVSRSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNz aW9uPC9yZXBsYWNlYWJsZT4gKSBdIFssIC4uLiBdCiAgICAgVEFCTEVTIElOIFNDSEVNQSB7IDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zY2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IHwg Q1VSUkVOVF9TQ0hFTUEgfSBbLCAuLi4gXQogCiA8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5leGNlcHRpb25fb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXM6PC9waHJh c2U+CkBAIC0yNjAsNiArMjYwLDE0IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIHByb2R1Y3Rpb25fcHVi bGljYXRpb24gQUREIEFMTCBUQUJMRVMgRVhDRVBUIHVzZXJzLCBkZXBhcnRtZW50CiAgICA8c3Ry dWN0bmFtZT5wcm9kdWN0aW9uX3B1YmxpY2F0aW9uPC9zdHJ1Y3RuYW1lPjoKIDxwcm9ncmFtbGlz dGluZz4KIEFMVEVSIFBVQkxJQ0FUSU9OIHByb2R1Y3Rpb25fcHVibGljYXRpb24gQUREIFRBQkxF IHVzZXJzLCBkZXBhcnRtZW50cywgVEFCTEVTIElOIFNDSEVNQSBwcm9kdWN0aW9uOworPC9wcm9n cmFtbGlzdGluZz48L3BhcmE+CisKKyAgPHBhcmE+CisgICBBbHRlciBwdWJsaWNhdGlvbiA8c3Ry dWN0bmFtZT5teXB1YmxpY2F0aW9uPC9zdHJ1Y3RuYW1lPiB0byBhZGQgdGFibGUKKyAgIDxzdHJ1 Y3RuYW1lPnVzZXJzPC9zdHJ1Y3RuYW1lPiBleGNlcHQgY29sdW1uCisgICA8c3RydWN0bmFtZT5z ZWN1cml0eV9waW48L3N0cnVjdG5hbWU+OgorPHByb2dyYW1saXN0aW5nPgorQUxURVIgUFVCTElD QVRJT04gcHJvZHVjdGlvbl9wdWJsaWNhdGlvbiBBREQgVEFCTEUgdXNlcnMgRVhDRVBUIChzZWN1 cml0eV9waW4pOwogPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CiAKICAgPHBhcmE+CmRpZmYgLS1n aXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9z Z21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbAppbmRleCBiZGRmZjljYTBjYy4uMDY5MWIx MDI4NDAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNn bWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbApAQCAtMjgs NyArMjgsNyBAQCBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogCiA8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6 PC9waHJhc2U+CiAKLSAgICBUQUJMRSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsgKCA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0gWyBX SEVSRSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNl YWJsZT4gKSBdIFssIC4uLiBdCisgICAgVEFCTEUgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXSBbIFsgRVhDRVBUIF0g KCBjb2x1bW5fbmFtZSBbLCAuLi4gXSApIF0gWyBXSEVSRSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gKSBdIFssIC4uLiBdCiAgICAgVEFC TEVTIElOIFNDSEVNQSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zY2hlbWFfbmFt ZTwvcmVwbGFjZWFibGU+IHwgQ1VSUkVOVF9TQ0hFTUEgfSBbLCAuLi4gXQogCiA8cGhyYXNlPndo ZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNlcHRpb25fb2JqZWN0PC9yZXBs YWNlYWJsZT4gaXM6PC9waHJhc2U+CkBAIC05MiwxNyArOTIsMjQgQEAgQ1JFQVRFIFBVQkxJQ0FU SU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAg ICAgPC9wYXJhPgogCiAgICAgIDxwYXJhPgotICAgICAgV2hlbiBhIGNvbHVtbiBsaXN0IGlzIHNw ZWNpZmllZCwgb25seSB0aGUgbmFtZWQgY29sdW1ucyBhcmUgcmVwbGljYXRlZC4KLSAgICAgIFRo ZSBjb2x1bW4gbGlzdCBjYW4gY29udGFpbiBzdG9yZWQgZ2VuZXJhdGVkIGNvbHVtbnMgYXMgd2Vs bC4gSWYgdGhlCi0gICAgICBjb2x1bW4gbGlzdCBpcyBvbWl0dGVkLCB0aGUgcHVibGljYXRpb24g d2lsbCByZXBsaWNhdGUgYWxsIG5vbi1nZW5lcmF0ZWQKLSAgICAgIGNvbHVtbnMgKGluY2x1ZGlu ZyBhbnkgYWRkZWQgaW4gdGhlIGZ1dHVyZSkgYnkgZGVmYXVsdC4gU3RvcmVkIGdlbmVyYXRlZAot ICAgICAgY29sdW1ucyBjYW4gYWxzbyBiZSByZXBsaWNhdGVkIGlmIDxsaXRlcmFsPnB1Ymxpc2hf Z2VuZXJhdGVkX2NvbHVtbnM8L2xpdGVyYWw+Ci0gICAgICBpcyBzZXQgdG8gPGxpdGVyYWw+c3Rv cmVkPC9saXRlcmFsPi4gU3BlY2lmeWluZyBhIGNvbHVtbiBsaXN0IGhhcyBubwotICAgICAgZWZm ZWN0IG9uIDxsaXRlcmFsPlRSVU5DQVRFPC9saXRlcmFsPiBjb21tYW5kcy4gU2VlCisgICAgICBX aGVuIGEgY29sdW1uIGxpc3Qgd2l0aG91dCA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGlzIHNw ZWNpZmllZCwgb25seQorICAgICAgdGhlIG5hbWVkIGNvbHVtbnMgYXJlIHJlcGxpY2F0ZWQuIFRo ZSBjb2x1bW4gbGlzdCBjYW4gY29udGFpbiBzdG9yZWQKKyAgICAgIGdlbmVyYXRlZCBjb2x1bW5z IGFzIHdlbGwuIElmIHRoZSBjb2x1bW4gbGlzdCBpcyBvbWl0dGVkLCB0aGUgcHVibGljYXRpb24K KyAgICAgIHdpbGwgcmVwbGljYXRlIGFsbCBub24tZ2VuZXJhdGVkIGNvbHVtbnMgKGluY2x1ZGlu ZyBhbnkgYWRkZWQgaW4gdGhlCisgICAgICBmdXR1cmUpIGJ5IGRlZmF1bHQuIFN0b3JlZCBnZW5l cmF0ZWQgY29sdW1ucyBjYW4gYWxzbyBiZSByZXBsaWNhdGVkIGlmCisgICAgICA8bGl0ZXJhbD5w dWJsaXNoX2dlbmVyYXRlZF9jb2x1bW5zPC9saXRlcmFsPiBpcyBzZXQgdG8KKyAgICAgIDxsaXRl cmFsPnN0b3JlZDwvbGl0ZXJhbD4uIFNwZWNpZnlpbmcgYSBjb2x1bW4gbGlzdCBoYXMgbm8gZWZm ZWN0IG9uCisgICAgICA8bGl0ZXJhbD5UUlVOQ0FURTwvbGl0ZXJhbD4gY29tbWFuZHMuIFNlZQog ICAgICAgPHhyZWYgbGlua2VuZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1jb2wtbGlzdHMiLz4gZm9y IGRldGFpbHMgYWJvdXQgY29sdW1uCiAgICAgICBsaXN0cy4KICAgICAgPC9wYXJhPgogCisgICAg IDxwYXJhPgorICAgICAgV2hlbiBhIGNvbHVtbiBsaXN0IGlzIHNwZWNpZmllZCB3aXRoIDxsaXRl cmFsPkVYQ0VQVDwvbGl0ZXJhbD4sIHRoZSBuYW1lZAorICAgICAgY29sdW1ucyBhcmUgbm90IHJl cGxpY2F0ZWQuIFNwZWNpZnlpbmcgYSBjb2x1bW4gbGlzdCBoYXMgbm8gZWZmZWN0IG9uCisgICAg ICA8bGl0ZXJhbD5UUlVOQ0FURTwvbGl0ZXJhbD4gY29tbWFuZHMuCisgICAgIDwvcGFyYT4KKwog ICAgICA8cGFyYT4KICAgICAgIE9ubHkgcGVyc2lzdGVudCBiYXNlIHRhYmxlcyBhbmQgcGFydGl0 aW9uZWQgdGFibGVzIGNhbiBiZSBwYXJ0IG9mIGEKICAgICAgIHB1YmxpY2F0aW9uLiAgVGVtcG9y YXJ5IHRhYmxlcywgdW5sb2dnZWQgdGFibGVzLCBmb3JlaWduIHRhYmxlcywKQEAgLTM0NywxMCAr MzU0LDEyIEBAIENSRUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgIDwvcGFyYT4KIAogICA8cGFyYT4KLSAgIEFueSBjb2x1 bW4gbGlzdCBtdXN0IGluY2x1ZGUgdGhlIDxsaXRlcmFsPlJFUExJQ0EgSURFTlRJVFk8L2xpdGVy YWw+IGNvbHVtbnMKLSAgIGluIG9yZGVyIGZvciA8Y29tbWFuZD5VUERBVEU8L2NvbW1hbmQ+IG9y IDxjb21tYW5kPkRFTEVURTwvY29tbWFuZD4KLSAgIG9wZXJhdGlvbnMgdG8gYmUgcHVibGlzaGVk LiBUaGVyZSBhcmUgbm8gY29sdW1uIGxpc3QgcmVzdHJpY3Rpb25zIGlmIHRoZQotICAgcHVibGlj YXRpb24gcHVibGlzaGVzIG9ubHkgPGNvbW1hbmQ+SU5TRVJUPC9jb21tYW5kPiBvcGVyYXRpb25z LgorICAgSW4gb3JkZXIgZm9yIDxjb21tYW5kPlVQREFURTwvY29tbWFuZD4gb3IgPGNvbW1hbmQ+ REVMRVRFPC9jb21tYW5kPgorICAgb3BlcmF0aW9ucyB0byB3b3JrLCBhbGwgdGhlIDxsaXRlcmFs PlJFUExJQ0EgSURFTlRJVFk8L2xpdGVyYWw+IGNvbHVtbnMgbXVzdAorICAgYmUgcHVibGlzaGVk LiBTbywgYW55IGNvbHVtbiBsaXN0IG11c3QgbmFtZSBhbGwKKyAgIDxsaXRlcmFsPlJFUExJQ0Eg SURFTlRJVFk8L2xpdGVyYWw+IGNvbHVtbnMsIGFuZCBhbnkKKyAgIDxsaXRlcmFsPkVYQ0VQVDwv bGl0ZXJhbD4gY29sdW1uIGxpc3QgbXVzdCBub3QgbmFtZSBhbnkKKyAgIDxsaXRlcmFsPlJFUExJ Q0EgSURFTlRJVFk8L2xpdGVyYWw+IGNvbHVtbnMuCiAgIDwvcGFyYT4KIAogICA8cGFyYT4KQEAg LTM3Myw2ICszODIsMTYgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgIHRvIGJlIHB1Ymxpc2hlZC4KICAgPC9w YXJhPgogCisgIDxwYXJhPgorICAgVGhlIGdlbmVyYXRlZCBjb2x1bW5zIHRoYXQgYXJlIHBhcnQg b2YgdGhlIGNvbHVtbiBsaXN0IHNwZWNpZmllZCB3aXRoIHRoZQorICAgPGxpdGVyYWw+RVhDRVBU PC9saXRlcmFsPiBjbGF1c2UgYXJlIG5vdCBwdWJsaXNoZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlCisg ICA8bGl0ZXJhbD5wdWJsaXNoX2dlbmVyYXRlZF9jb2x1bW5zPC9saXRlcmFsPiBvcHRpb24uIEhv d2V2ZXIsIGdlbmVyYXRlZAorICAgY29sdW1ucyB0aGF0IGFyZSBub3QgcGFydCBvZiB0aGUgY29s dW1uIGxpc3Qgc3BlY2lmaWVkIHdpdGggdGhlCisgICA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+ IGNsYXVzZSBhcmUgcHVibGlzaGVkIGFjY29yZGluZyB0byB0aGUgdmFsdWUgb2YgdGhlCisgICA8 bGl0ZXJhbD5wdWJsaXNoX2dlbmVyYXRlZF9jb2x1bW5zPC9saXRlcmFsPiBvcHRpb24uIFNlZQor ICAgPHhyZWYgbGlua2VuZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1nZW5jb2xzIi8+IGZvciBkZXRh aWxzLgorICA8L3BhcmE+CisKICAgPHBhcmE+CiAgICBUaGUgcm93IGZpbHRlciBvbiBhIHRhYmxl IGJlY29tZXMgcmVkdW5kYW50IGlmCiAgICA8bGl0ZXJhbD5GT1IgVEFCTEVTIElOIFNDSEVNQTwv bGl0ZXJhbD4gaXMgc3BlY2lmaWVkIGFuZCB0aGUgdGFibGUKQEAgLTQ5NCw2ICs1MTMsMTUgQEAg Q1JFQVRFIFBVQkxJQ0FUSU9OIG15cHVibGljYXRpb24gRk9SIEFMTCBUQUJMRVMgRVhDRVBUIHVz ZXJzLCBkZXBhcnRtZW50czsKIDxwcm9ncmFtbGlzdGluZz4KIENSRUFURSBQVUJMSUNBVElPTiB1 c2Vyc19maWx0ZXJlZCBGT1IgVEFCTEUgdXNlcnMgKHVzZXJfaWQsIGZpcnN0bmFtZSk7CiA8L3By b2dyYW1saXN0aW5nPjwvcGFyYT4KKworICA8cGFyYT4KKyAgIENyZWF0ZSBhIHB1YmxpY2F0aW9u IHRoYXQgcHVibGlzaGVzIGFsbCBjaGFuZ2VzIGZvciB0YWJsZQorICAgPHN0cnVjdG5hbWU+dXNl cnM8L3N0cnVjdG5hbWU+IGV4Y2VwdCBjaGFuZ2VzIGZvciBjb2x1bW4KKyAgIDxzdHJ1Y3RuYW1l PnNlY3VyaXR5X3Bpbjwvc3RydWN0bmFtZT46Cis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUgUFVC TElDQVRJT04gdXNlcnNfc2FmZSBGT1IgVEFCTEUgdXNlcnMgRVhDRVBUIChzZWN1cml0eV9waW4p OworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgogIDwvcmVmc2VjdDE+CiAKICA8cmVmc2Vj dDE+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgYi9z cmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKaW5kZXggYWYxYjhjOWVkNjcuLmQy MWIzZmY0OGUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9u LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCkBAIC0yNjMsMTQg KzI2MywxOSBAQCBpc19zY2hlbWFfcHVibGljYXRpb24oT2lkIHB1YmlkKQogICogSWYgYSBjb2x1 bW4gbGlzdCBpcyBmb3VuZCwgdGhlIGNvcnJlc3BvbmRpbmcgYml0bWFwIGlzIHJldHVybmVkIHRo cm91Z2ggdGhlCiAgKiBjb2xzIHBhcmFtZXRlciwgaWYgcHJvdmlkZWQuIFRoZSBiaXRtYXAgaXMg Y29uc3RydWN0ZWQgd2l0aGluIHRoZSBnaXZlbgogICogbWVtb3J5IGNvbnRleHQgKG1jeHQpLgor ICoKKyAqIElmIGEgY29sdW1uIGxpc3QgaXMgZm91bmQgc3BlY2lmaWVkIHdpdGggRVhDRVBUIGNs YXVzZSwgZXhjZXB0X2NvbHVtbnMgaXMgc2V0CisgKiB0byB0cnVlLgogICovCiBib29sCiBjaGVj a19hbmRfZmV0Y2hfY29sdW1uX2xpc3QoUHVibGljYXRpb24gKnB1YiwgT2lkIHJlbGlkLCBNZW1v cnlDb250ZXh0IG1jeHQsCi0JCQkJCQkJQml0bWFwc2V0ICoqY29scykKKwkJCQkJCQlCaXRtYXBz ZXQgKipjb2xzLCBib29sICpleGNlcHRfY29sdW1ucykKIHsKIAlIZWFwVHVwbGUJY2Z0dXBsZTsK IAlib29sCQlmb3VuZCA9IGZhbHNlOwogCisJKmV4Y2VwdF9jb2x1bW5zID0gZmFsc2U7CisKIAlp ZiAocHViLT5hbGx0YWJsZXMpCiAJCXJldHVybiBmYWxzZTsKIApAQCAtMjk2LDYgKzMwMSwxNiBA QCBjaGVja19hbmRfZmV0Y2hfY29sdW1uX2xpc3QoUHVibGljYXRpb24gKnB1YiwgT2lkIHJlbGlk LCBNZW1vcnlDb250ZXh0IG1jeHQsCiAJCQlmb3VuZCA9IHRydWU7CiAJCX0KIAorCQkvKiBMb29r dXAgdGhlIGV4Y2VwdCBhdHRyaWJ1dGUgKi8KKwkJY2ZkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihQ VUJMSUNBVElPTlJFTE1BUCwgY2Z0dXBsZSwKKwkJCQkJCQkJICBBbnVtX3BnX3B1YmxpY2F0aW9u X3JlbF9wcmV4Y2VwdCwgJmlzbnVsbCk7CisKKwkJaWYgKCFpc251bGwpCisJCXsKKwkJCUFzc2Vy dCghcHViLT5hbGx0YWJsZXMpOworCQkJKmV4Y2VwdF9jb2x1bW5zID0gRGF0dW1HZXRCb29sKGNm ZGF0dW0pOworCQl9CisKIAkJUmVsZWFzZVN5c0NhY2hlKGNmdHVwbGUpOwogCX0KIApAQCAtNjU3 LDEwICs2NzIsMTIgQEAgcHViX2NvbGxpc3RfdG9fYml0bWFwc2V0KEJpdG1hcHNldCAqY29sdW1u cywgRGF0dW0gcHViY29scywgTWVtb3J5Q29udGV4dCBtY3h0KQogICogUmV0dXJucyBhIGJpdG1h cCByZXByZXNlbnRpbmcgdGhlIGNvbHVtbnMgb2YgdGhlIHNwZWNpZmllZCB0YWJsZS4KICAqCiAg KiBHZW5lcmF0ZWQgY29sdW1ucyBhcmUgaW5jbHVkZWQgaWYgaW5jbHVkZV9nZW5jb2xzX3R5cGUg aXMKLSAqIFBVQkxJU0hfR0VOQ09MU19TVE9SRUQuCisgKiBQVUJMSVNIX0dFTkNPTFNfU1RPUkVE LiBDb2x1bW5zIHRoYXQgYXJlIGluIHRoZSBleGNlcHRfY29scyBhcmUgZXhjbHVkZWQgZnJvbQor ICogdGhlIGNvbHVtbiBsaXN0LgogICovCiBCaXRtYXBzZXQgKgotcHViX2Zvcm1fY29sc19tYXAo UmVsYXRpb24gcmVsYXRpb24sIFB1Ymxpc2hHZW5jb2xzVHlwZSBpbmNsdWRlX2dlbmNvbHNfdHlw ZSkKK3B1Yl9mb3JtX2NvbHNfbWFwKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJsaXNoR2VuY29sc1R5 cGUgaW5jbHVkZV9nZW5jb2xzX3R5cGUsCisJCQkJICBCaXRtYXBzZXQgKmV4Y2VwdF9jb2xzKQog ewogCUJpdG1hcHNldCAgKnJlc3VsdCA9IE5VTEw7CiAJVHVwbGVEZXNjCWRlc2MgPSBSZWxhdGlv bkdldERlc2NyKHJlbGF0aW9uKTsKQEAgLTY4Myw2ICs3MDAsOSBAQCBwdWJfZm9ybV9jb2xzX21h cChSZWxhdGlvbiByZWxhdGlvbiwgUHVibGlzaEdlbmNvbHNUeXBlIGluY2x1ZGVfZ2VuY29sc190 eXBlKQogCQkJCWNvbnRpbnVlOwogCQl9CiAKKwkJaWYgKGV4Y2VwdF9jb2xzICYmIGJtc19pc19t ZW1iZXIoYXR0LT5hdHRudW0sIGV4Y2VwdF9jb2xzKSkKKwkJCWNvbnRpbnVlOworCiAJCXJlc3Vs dCA9IGJtc19hZGRfbWVtYmVyKHJlc3VsdCwgYXR0LT5hdHRudW0pOwogCX0KIApAQCAtNzg3LDgg KzgwNywxMCBAQCBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhPaWQgcmVsaWQsIGJvb2wgZXhjZXB0 X2ZsYWcpCiAJewogCQlIZWFwVHVwbGUJdHVwID0gJnB1YnJlbGxpc3QtPm1lbWJlcnNbaV0tPnR1 cGxlOwogCQlPaWQJCQlwdWJpZCA9ICgoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVD VCh0dXApKS0+cHJwdWJpZDsKKwkJYm9vbAkJaXNfZXhjZXB0X3RhYmxlID0gKChGb3JtX3BnX3B1 YmxpY2F0aW9uX3JlbCkgR0VUU1RSVUNUKHR1cCkpLT5wcmV4Y2VwdCAmJgorCQkJaGVhcF9hdHRp c251bGwodHVwLCBBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcmF0dHJzLCBOVUxMKTsKIAotCQlp ZiAoZXhjZXB0X2ZsYWcgPT0gKChGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCkgR0VUU1RSVUNUKHR1 cCkpLT5wcmV4Y2VwdCkKKwkJaWYgKGV4Y2VwdF9mbGFnID09IGlzX2V4Y2VwdF90YWJsZSkKIAkJ CXJlc3VsdCA9IGxhcHBlbmRfb2lkKHJlc3VsdCwgcHViaWQpOwogCX0KIApAQCAtODI4LDEwICs4 NTAsMTIgQEAgR2V0UHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBh cnRPcHQgcHViX3BhcnRvcHQsCiAJd2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQodHVwID0gc3lzdGFi bGVfZ2V0bmV4dChzY2FuKSkpCiAJewogCQlGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCBwdWJyZWw7 CisJCWJvb2wJCWhhc19jb2xsaXN0ID0gZmFsc2U7CiAKIAkJcHVicmVsID0gKEZvcm1fcGdfcHVi bGljYXRpb25fcmVsKSBHRVRTVFJVQ1QodHVwKTsKKwkJaGFzX2NvbGxpc3QgPSAhaGVhcF9hdHRp c251bGwodHVwLCBBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcmF0dHJzLCBOVUxMKTsKIAotCQlp ZiAoZXhjZXB0X2ZsYWcgPT0gcHVicmVsLT5wcmV4Y2VwdCkKKwkJaWYgKGV4Y2VwdF9mbGFnID09 IChwdWJyZWwtPnByZXhjZXB0ICYmICFoYXNfY29sbGlzdCkpCiAJCQlyZXN1bHQgPSBHZXRQdWJQ YXJ0aXRpb25PcHRpb25SZWxhdGlvbnMocmVzdWx0LCBwdWJfcGFydG9wdCwKIAkJCQkJCQkJCQkJ CQlwdWJyZWwtPnBycmVsaWQpOwogCkBAIC0xMjgyLDYgKzEzMDYsNyBAQCBwZ19nZXRfcHVibGlj YXRpb25fdGFibGVzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCU9pZAkJCXNjaGVtYWlkID0gZ2V0X3Jl bF9uYW1lc3BhY2UocmVsaWQpOwogCQlEYXR1bQkJdmFsdWVzW05VTV9QVUJMSUNBVElPTl9UQUJM RVNfRUxFTV0gPSB7MH07CiAJCWJvb2wJCW51bGxzW05VTV9QVUJMSUNBVElPTl9UQUJMRVNfRUxF TV0gPSB7MH07CisJCUJpdG1hcHNldCAgKmV4Y2VwdF9jb2x1bW5zID0gTlVMTDsKIAogCQkvKgog CQkgKiBGb3JtIHR1cGxlIHdpdGggYXBwcm9wcmlhdGUgZGF0YS4KQEAgLTEzMDYsMTEgKzEzMzEs MjkgQEAgcGdfZ2V0X3B1YmxpY2F0aW9uX3RhYmxlcyhQR19GVU5DVElPTl9BUkdTKQogCiAJCWlm IChIZWFwVHVwbGVJc1ZhbGlkKHB1YnR1cGxlKSkKIAkJewotCQkJLyogTG9va3VwIHRoZSBjb2x1 bW4gbGlzdCBhdHRyaWJ1dGUuICovCiAJCQl2YWx1ZXNbMl0gPSBTeXNDYWNoZUdldEF0dHIoUFVC TElDQVRJT05SRUxNQVAsIHB1YnR1cGxlLAogCQkJCQkJCQkJCUFudW1fcGdfcHVibGljYXRpb25f cmVsX3ByYXR0cnMsCiAJCQkJCQkJCQkJJihudWxsc1syXSkpOwogCisJCQlpZiAoIW51bGxzWzJd KQorCQkJeworCQkJCURhdHVtCQlleGNlcHREYXR1bTsKKwkJCQlib29sCQlpc251bGw7CisKKwkJ CQkvKgorCQkJCSAqIFdlIGZldGNoIHB1YnR1cGxlIGlmIHB1YmxpY2F0aW9uIGlzIG5vdCBGT1Ig QUxMIFRBQkxFUyBhbmQKKwkJCQkgKiBub3QgRk9SIFRBQkxFUyBJTiBTQ0hFTUEuIFNvIGlmIHBy ZXhjZXB0IGlzIHRydWUsIGl0CisJCQkJICogaW5kaWNhdGVzIHRoYXQgcHJhdHRycyBjb250YWlu cyBjb2x1bW5zIHRvIGJlIGV4Y2x1ZGVkIGZvcgorCQkJCSAqIHJlcGxpY2F0aW9uLgorCQkJCSAq LworCQkJCWV4Y2VwdERhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKFBVQkxJQ0FUSU9OUkVMTUFQLCBw dWJ0dXBsZSwKKwkJCQkJCQkJCQkJICBBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcmV4Y2VwdCwK KwkJCQkJCQkJCQkJICAmaXNudWxsKTsKKworCQkJCWlmICghaXNudWxsICYmIERhdHVtR2V0Qm9v bChleGNlcHREYXR1bSkpCisJCQkJCWV4Y2VwdF9jb2x1bW5zID0gcHViX2NvbGxpc3RfdG9fYml0 bWFwc2V0KE5VTEwsIHZhbHVlc1syXSwgTlVMTCk7CisJCQl9CisKIAkJCS8qIE51bGwgaW5kaWNh dGVzIG5vIGZpbHRlci4gKi8KIAkJCXZhbHVlc1szXSA9IFN5c0NhY2hlR2V0QXR0cihQVUJMSUNB VElPTlJFTE1BUCwgcHVidHVwbGUsCiAJCQkJCQkJCQkJQW51bV9wZ19wdWJsaWNhdGlvbl9yZWxf cHJxdWFsLApAQCAtMTMyMiw4ICsxMzY1LDEyIEBAIHBnX2dldF9wdWJsaWNhdGlvbl90YWJsZXMo UEdfRlVOQ1RJT05fQVJHUykKIAkJCW51bGxzWzNdID0gdHJ1ZTsKIAkJfQogCi0JCS8qIFNob3cg YWxsIGNvbHVtbnMgd2hlbiB0aGUgY29sdW1uIGxpc3QgaXMgbm90IHNwZWNpZmllZC4gKi8KLQkJ aWYgKG51bGxzWzJdKQorCQkvKgorCQkgKiBDb25zdHJ1Y3QgY29sdW1uIGxpc3QgdG8gc2hvdyBh bGwgY29sdW1ucyB3aGVuIG5vIGNvbHVtbiBsaXN0IGlzCisJCSAqIHNwZWNpZmllZCBvciB0byBz aG93IHJlbWFpbmluZyBjb2x1bW5zIHdoZW4gYSBjb2x1bW4gbGlzdCBpcworCQkgKiBwcm92aWRl ZCB3aXRoIEVYQ0VQVC4KKwkJICovCisJCWlmIChleGNlcHRfY29sdW1ucyB8fCBudWxsc1syXSkK IAkJewogCQkJUmVsYXRpb24JcmVsID0gdGFibGVfb3BlbihyZWxpZCwgQWNjZXNzU2hhcmVMb2Nr KTsKIAkJCWludAkJCW5hdHRudW1zID0gMDsKQEAgLTEzNTQsNiArMTQwMSwxMyBAQCBwZ19nZXRf cHVibGljYXRpb25fdGFibGVzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJCQljb250aW51ZTsKIAkJ CQl9CiAKKwkJCQkvKgorCQkJCSAqIFNraXAgY29sdW1ucyB0aGF0IGFyZSBwYXJ0IG9mIGNvbHVt biBsaXN0IHNwZWNpZmllZCB3aXRoCisJCQkJICogRVhDRVBULgorCQkJCSAqLworCQkJCWlmIChl eGNlcHRfY29sdW1ucyAmJiBibXNfaXNfbWVtYmVyKGF0dC0+YXR0bnVtLCBleGNlcHRfY29sdW1u cykpCisJCQkJCWNvbnRpbnVlOworCiAJCQkJYXR0bnVtc1tuYXR0bnVtcysrXSA9IGF0dC0+YXR0 bnVtOwogCQkJfQogCkBAIC0xMzYyLDYgKzE0MTYsMTEgQEAgcGdfZ2V0X3B1YmxpY2F0aW9uX3Rh YmxlcyhQR19GVU5DVElPTl9BUkdTKQogCQkJCXZhbHVlc1syXSA9IFBvaW50ZXJHZXREYXR1bShi dWlsZGludDJ2ZWN0b3IoYXR0bnVtcywgbmF0dG51bXMpKTsKIAkJCQludWxsc1syXSA9IGZhbHNl OwogCQkJfQorCQkJZWxzZQorCQkJeworCQkJCXZhbHVlc1syXSA9IChEYXR1bSkgMDsKKwkJCQlu dWxsc1syXSA9IHRydWU7CisJCQl9CiAKIAkJCXRhYmxlX2Nsb3NlKHJlbCwgQWNjZXNzU2hhcmVM b2NrKTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25j bWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwppbmRleCBiNmQ1 NDZiZTI5MS4uODgxM2ZiMjg1NzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1 YmxpY2F0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21k cy5jCkBAIC0yMDQsNyArMjA0LDYgQEAgT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoTGlzdCAq cHVib2Jqc3BlY19saXN0LCBQYXJzZVN0YXRlICpwc3RhdGUsCiAJCXN3aXRjaCAocHVib2JqLT5w dWJvYmp0eXBlKQogCQl7CiAJCQljYXNlIFBVQkxJQ0FUSU9OT0JKX1RBQkxFOgotCQkJCXB1Ym9i ai0+cHVidGFibGUtPmV4Y2VwdCA9IGZhbHNlOwogCQkJCSpyZWxzID0gbGFwcGVuZCgqcmVscywg cHVib2JqLT5wdWJ0YWJsZSk7CiAJCQkJYnJlYWs7CiAJCQljYXNlIFBVQkxJQ0FUSU9OT0JKX0VY Q0VQVF9UQUJMRToKQEAgLTM1OCw4ICszNTcsOCBAQCBwdWJfcmZfY29udGFpbnNfaW52YWxpZF9j b2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlvbiByZWxhdGlvbiwgTGlzdCAqYW5jZXN0b3JzLAogICog VGhpcyBmdW5jdGlvbiBldmFsdWF0ZXMgdHdvIGNvbmRpdGlvbnM6CiAgKgogICogMS4gRW5zdXJl cyB0aGF0IGFsbCBjb2x1bW5zIHJlZmVyZW5jZWQgaW4gdGhlIFJFUExJQ0EgSURFTlRJVFkgYXJl IGNvdmVyZWQKLSAqICAgIGJ5IHRoZSBjb2x1bW4gbGlzdC4gSWYgYW55IGNvbHVtbiBpcyBtaXNz aW5nLCAqaW52YWxpZF9jb2x1bW5fbGlzdCBpcyBzZXQKLSAqICAgIHRvIHRydWUuCisgKiAgICBi eSB0aGUgY29sdW1uIGxpc3QgYW5kIGFyZSBub3QgcGFydCBvZiB0aGUgY29sdW1uIGxpc3Qgc3Bl Y2lmaWVkIHdpdGgKKyAqICAgIEVYQ0VQVC4gSWYgYW55IGNvbHVtbiBpcyBtaXNzaW5nLCAqaW52 YWxpZF9jb2x1bW5fbGlzdCBpcyBzZXQgdG8gdHJ1ZS4KICAqIDIuIEVuc3VyZXMgdGhhdCBhbGwg dGhlIGdlbmVyYXRlZCBjb2x1bW5zIHJlZmVyZW5jZWQgaW4gdGhlIFJFUExJQ0EgSURFTlRJVFkK ICAqICAgIGFyZSBwdWJsaXNoZWQsIGVpdGhlciBieSBiZWluZyBleHBsaWNpdGx5IG5hbWVkIGlu IHRoZSBjb2x1bW4gbGlzdCBvciwgaWYKICAqICAgIG5vIGNvbHVtbiBsaXN0IGlzIHNwZWNpZmll ZCwgYnkgc2V0dGluZyB0aGUgb3B0aW9uCkBAIC0zODEsNiArMzgwLDcgQEAgcHViX2NvbnRhaW5z X2ludmFsaWRfY29sdW1uKE9pZCBwdWJpZCwgUmVsYXRpb24gcmVsYXRpb24sIExpc3QgKmFuY2Vz dG9ycywKIAlUdXBsZURlc2MJZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsYXRpb24pOwogCVB1 YmxpY2F0aW9uICpwdWI7CiAJaW50CQkJeDsKKwlib29sCQlleGNlcHRfY29sdW1ucyA9IGZhbHNl OwogCiAJKmludmFsaWRfY29sdW1uX2xpc3QgPSBmYWxzZTsKIAkqaW52YWxpZF9nZW5fY29sID0g ZmFsc2U7CkBAIC00MDQsNyArNDA0LDggQEAgcHViX2NvbnRhaW5zX2ludmFsaWRfY29sdW1uKE9p ZCBwdWJpZCwgUmVsYXRpb24gcmVsYXRpb24sIExpc3QgKmFuY2VzdG9ycywKIAogCS8qIEZldGNo IHRoZSBjb2x1bW4gbGlzdCAqLwogCXB1YiA9IEdldFB1YmxpY2F0aW9uKHB1YmlkKTsKLQljaGVj a19hbmRfZmV0Y2hfY29sdW1uX2xpc3QocHViLCBwdWJsaXNoX2FzX3JlbGlkLCBOVUxMLCAmY29s dW1ucyk7CisJY2hlY2tfYW5kX2ZldGNoX2NvbHVtbl9saXN0KHB1YiwgcHVibGlzaF9hc19yZWxp ZCwgTlVMTCwgJmNvbHVtbnMsCisJCQkJCQkJCSZleGNlcHRfY29sdW1ucyk7CiAKIAlpZiAocmVs YXRpb24tPnJkX3JlbC0+cmVscmVwbGlkZW50ID09IFJFUExJQ0FfSURFTlRJVFlfRlVMTCkKIAl7 CkBAIC00OTQsOCArNDk1LDE0IEBAIHB1Yl9jb250YWluc19pbnZhbGlkX2NvbHVtbihPaWQgcHVi aWQsIFJlbGF0aW9uIHJlbGF0aW9uLCBMaXN0ICphbmNlc3RvcnMsCiAJCQlhdHRudW0gPSBnZXRf YXR0bnVtKHB1Ymxpc2hfYXNfcmVsaWQsIGNvbG5hbWUpOwogCQl9CiAKLQkJLyogcmVwbGljYSBp ZGVudGl0eSBjb2x1bW4sIG5vdCBjb3ZlcmVkIGJ5IHRoZSBjb2x1bW4gbGlzdCAqLwotCQkqaW52 YWxpZF9jb2x1bW5fbGlzdCB8PSAhYm1zX2lzX21lbWJlcihhdHRudW0sIGNvbHVtbnMpOworCQkv KgorCQkgKiBSZXBsaWNhIGlkZW50aXR5IGNvbHVtbiwgbm90IGNvdmVyZWQgYnkgdGhlIGNvbHVt biBsaXN0IG9yIGlzIHBhcnQKKwkJICogb2YgY29sdW1uIGxpc3Qgc3BlY2lmaWVkIHdpdGggRVhD RVBULgorCQkgKi8KKwkJaWYgKGV4Y2VwdF9jb2x1bW5zKQorCQkJKmludmFsaWRfY29sdW1uX2xp c3QgfD0gYm1zX2lzX21lbWJlcihhdHRudW0sIGNvbHVtbnMpOworCQllbHNlCisJCQkqaW52YWxp ZF9jb2x1bW5fbGlzdCB8PSAhYm1zX2lzX21lbWJlcihhdHRudW0sIGNvbHVtbnMpOwogCiAJCWlm ICgqaW52YWxpZF9jb2x1bW5fbGlzdCAmJiAqaW52YWxpZF9nZW5fY29sKQogCQkJYnJlYWs7CkBA IC0xNDUyLDYgKzE0NTksNyBAQCBBbHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVibGljYXRp b25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQkJSGVhcFR1cGxlCXJmdHVwbGU7CiAJCQlO b2RlCSAgICpvbGRyZWx3aGVyZWNsYXVzZSA9IE5VTEw7CiAJCQlCaXRtYXBzZXQgICpvbGRjb2x1 bW5zID0gTlVMTDsKKwkJCWJvb2wJCW9sZGV4Y2VwdCA9IGZhbHNlOwogCiAJCQkvKiBsb29rIHVw IHRoZSBjYWNoZSBmb3IgdGhlIG9sZCByZWxtYXAgKi8KIAkJCXJmdHVwbGUgPSBTZWFyY2hTeXND YWNoZTIoUFVCTElDQVRJT05SRUxNQVAsCkBAIC0xNDY1LDIzICsxNDczLDMwIEBAIEFsdGVyUHVi bGljYXRpb25UYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAs CiAJCQlpZiAoSGVhcFR1cGxlSXNWYWxpZChyZnR1cGxlKSkKIAkJCXsKIAkJCQlib29sCQlpc251 bGwgPSB0cnVlOwotCQkJCURhdHVtCQl3aGVyZUNsYXVzZURhdHVtOwotCQkJCURhdHVtCQljb2x1 bW5MaXN0RGF0dW07CisJCQkJRGF0dW0JCWRhdHVtOwogCiAJCQkJLyogTG9hZCB0aGUgV0hFUkUg Y2xhdXNlIGZvciB0aGlzIHRhYmxlLiAqLwotCQkJCXdoZXJlQ2xhdXNlRGF0dW0gPSBTeXNDYWNo ZUdldEF0dHIoUFVCTElDQVRJT05SRUxNQVAsIHJmdHVwbGUsCi0JCQkJCQkJCQkJCQkgICBBbnVt X3BnX3B1YmxpY2F0aW9uX3JlbF9wcnF1YWwsCi0JCQkJCQkJCQkJCQkgICAmaXNudWxsKTsKKwkJ CQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihQVUJMSUNBVElPTlJFTE1BUCwgcmZ0dXBsZSwKKwkJ CQkJCQkJCQlBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcnF1YWwsCisJCQkJCQkJCQkJJmlzbnVs bCk7CiAJCQkJaWYgKCFpc251bGwpCi0JCQkJCW9sZHJlbHdoZXJlY2xhdXNlID0gc3RyaW5nVG9O b2RlKFRleHREYXR1bUdldENTdHJpbmcod2hlcmVDbGF1c2VEYXR1bSkpOworCQkJCQlvbGRyZWx3 aGVyZWNsYXVzZSA9IHN0cmluZ1RvTm9kZShUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKSk7CiAK IAkJCQkvKiBUcmFuc2Zvcm0gdGhlIGludDJ2ZWN0b3IgY29sdW1uIGxpc3QgdG8gYSBiaXRtYXAu ICovCi0JCQkJY29sdW1uTGlzdERhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKFBVQkxJQ0FUSU9OUkVM TUFQLCByZnR1cGxlLAotCQkJCQkJCQkJCQkJICBBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcmF0 dHJzLAotCQkJCQkJCQkJCQkJICAmaXNudWxsKTsKKwkJCQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0 cihQVUJMSUNBVElPTlJFTE1BUCwgcmZ0dXBsZSwKKwkJCQkJCQkJCQlBbnVtX3BnX3B1YmxpY2F0 aW9uX3JlbF9wcmF0dHJzLAorCQkJCQkJCQkJCSZpc251bGwpOworCisJCQkJaWYgKCFpc251bGwp CisJCQkJCW9sZGNvbHVtbnMgPSBwdWJfY29sbGlzdF90b19iaXRtYXBzZXQoTlVMTCwgZGF0dW0s IE5VTEwpOworCisJCQkJLyogTG9hZCB0aGUgcHJleGNlcHQgZmxhZyBmb3IgdGhpcyB0YWJsZS4g Ki8KKwkJCQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihQVUJMSUNBVElPTlJFTE1BUCwgcmZ0dXBs ZSwKKwkJCQkJCQkJCQlBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcmV4Y2VwdCwKKwkJCQkJCQkJ CQkmaXNudWxsKTsKIAogCQkJCWlmICghaXNudWxsKQotCQkJCQlvbGRjb2x1bW5zID0gcHViX2Nv bGxpc3RfdG9fYml0bWFwc2V0KE5VTEwsIGNvbHVtbkxpc3REYXR1bSwgTlVMTCk7CisJCQkJCW9s ZGV4Y2VwdCA9IERhdHVtR2V0Qm9vbChkYXR1bSk7CiAKIAkJCQlSZWxlYXNlU3lzQ2FjaGUocmZ0 dXBsZSk7CiAJCQl9CkBAIC0xNTA4LDEzICsxNTIzLDE0IEBAIEFsdGVyUHVibGljYXRpb25UYWJs ZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAJCQkJICogQ2hl Y2sgaWYgYW55IG9mIHRoZSBuZXcgc2V0IG9mIHJlbGF0aW9ucyBtYXRjaGVzIHdpdGggdGhlCiAJ CQkJICogZXhpc3RpbmcgcmVsYXRpb25zIGluIHRoZSBwdWJsaWNhdGlvbi4gQWRkaXRpb25hbGx5 LCBpZiB0aGUKIAkJCQkgKiByZWxhdGlvbiBoYXMgYW4gYXNzb2NpYXRlZCBXSEVSRSBjbGF1c2Us IGNoZWNrIHRoZSBXSEVSRQotCQkJCSAqIGV4cHJlc3Npb25zIGFsc28gbWF0Y2guIFNhbWUgZm9y IHRoZSBjb2x1bW4gbGlzdC4gRHJvcCB0aGUKLQkJCQkgKiByZXN0LgorCQkJCSAqIGV4cHJlc3Np b25zIGFsc28gbWF0Y2guIFNhbWUgZm9yIHRoZSBjb2x1bW4gbGlzdCBhbmQgZXhjZXB0CisJCQkJ ICogZmxhZy4gRHJvcCB0aGUgcmVzdC4KIAkJCQkgKi8KIAkJCQlpZiAobmV3cmVsaWQgPT0gb2xk cmVsaWQpCiAJCQkJewogCQkJCQlpZiAoZXF1YWwob2xkcmVsd2hlcmVjbGF1c2UsIG5ld3B1YnJl bC0+d2hlcmVDbGF1c2UpICYmCi0JCQkJCQlibXNfZXF1YWwob2xkY29sdW1ucywgbmV3Y29sdW1u cykpCisJCQkJCQlibXNfZXF1YWwob2xkY29sdW1ucywgbmV3Y29sdW1ucykgJiYKKwkJCQkJCW9s ZGV4Y2VwdCA9PSBuZXdwdWJyZWwtPmV4Y2VwdCkKIAkJCQkJewogCQkJCQkJZm91bmQgPSB0cnVl OwogCQkJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIv c3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCA0OWJhYzAzNGQxNy4uY2ViZDdjMmEzYzQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQv cGFyc2VyL2dyYW0ueQpAQCAtNTI3LDcgKzUyNyw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJz aXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7 CiAJCQkJT3B0V2hlcmVDbGF1c2Ugb3BlcmF0b3JfZGVmX2FyZwogJXR5cGUgPGxpc3Q+CW9wdF9j b2x1bW5fYW5kX3BlcmlvZF9saXN0CiAldHlwZSA8bGlzdD4Jcm93c2Zyb21faXRlbSByb3dzZnJv bV9saXN0IG9wdF9jb2xfZGVmX2xpc3QKLSV0eXBlIDxib29sZWFuPiBvcHRfb3JkaW5hbGl0eSBv cHRfd2l0aG91dF9vdmVybGFwcworJXR5cGUgPGJvb2xlYW4+IG9wdF9vcmRpbmFsaXR5IG9wdF93 aXRob3V0X292ZXJsYXBzIG9wdF9leGNlcHQKICV0eXBlIDxsaXN0PglFeGNsdXNpb25Db25zdHJh aW50TGlzdCBFeGNsdXNpb25Db25zdHJhaW50RWxlbQogJXR5cGUgPGxpc3Q+CWZ1bmNfYXJnX2xp c3QgZnVuY19hcmdfbGlzdF9vcHQKICV0eXBlIDxub2RlPglmdW5jX2FyZ19leHByCkBAIC00NDUw LDYgKzQ0NTAsMTEgQEAgb3B0X3dpdGhvdXRfb3ZlcmxhcHM6CiAJCQl8IC8qRU1QVFkqLwkJCQkJ CQkJeyAkJCA9IGZhbHNlOyB9CiAJOwogCitvcHRfZXhjZXB0OgorCQkJRVhDRVBUCQkJCQkJCQkJ eyAkJCA9IHRydWU7IH0KKwkJCXwgLypFTVBUWSovCQkJCQkJCQl7ICQkID0gZmFsc2U7IH0KKwkJ OworCiBvcHRfY29sdW1uX2xpc3Q6CiAJCQknKCcgY29sdW1uTGlzdCAnKScJCQkJCQl7ICQkID0g JDI7IH0KIAkJCXwgLypFTVBUWSovCQkJCQkJCQl7ICQkID0gTklMOyB9CkBAIC0xMDc1OSwxNCAr MTA3NjQsMTUgQEAgQ3JlYXRlUHVibGljYXRpb25TdG10OgogICogcmVsYXRpb25fZXhwciBoZXJl LgogICovCiBQdWJsaWNhdGlvbk9ialNwZWM6Ci0JCQlUQUJMRSByZWxhdGlvbl9leHByIG9wdF9j b2x1bW5fbGlzdCBPcHRXaGVyZUNsYXVzZQorCQkJVEFCTEUgcmVsYXRpb25fZXhwciBvcHRfZXhj ZXB0IG9wdF9jb2x1bW5fbGlzdCBPcHRXaGVyZUNsYXVzZQogCQkJCXsKIAkJCQkJJCQgPSBtYWtl Tm9kZShQdWJsaWNhdGlvbk9ialNwZWMpOwogCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FU SU9OT0JKX1RBQkxFOwogCQkJCQkkJC0+cHVidGFibGUgPSBtYWtlTm9kZShQdWJsaWNhdGlvblRh YmxlKTsKIAkJCQkJJCQtPnB1YnRhYmxlLT5yZWxhdGlvbiA9ICQyOwotCQkJCQkkJC0+cHVidGFi bGUtPmNvbHVtbnMgPSAkMzsKLQkJCQkJJCQtPnB1YnRhYmxlLT53aGVyZUNsYXVzZSA9ICQ0Owor CQkJCQkkJC0+cHVidGFibGUtPmV4Y2VwdCA9ICQzOworCQkJCQkkJC0+cHVidGFibGUtPmNvbHVt bnMgPSAkNDsKKwkJCQkJJCQtPnB1YnRhYmxlLT53aGVyZUNsYXVzZSA9ICQ1OwogCQkJCQkkJC0+ bG9jYXRpb24gPSBAMTsKIAkJCQl9CiAJCQl8IFRBQkxFUyBJTl9QIFNDSEVNQSBDb2xJZApAQCAt MTA3ODIsNyArMTA3ODgsNyBAQCBQdWJsaWNhdGlvbk9ialNwZWM6CiAJCQkJCSQkLT5wdWJvYmp0 eXBlID0gUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX0NVUl9TQ0hFTUE7CiAJCQkJCSQkLT5sb2Nh dGlvbiA9IEA0OwogCQkJCX0KLQkJCXwgQ29sSWQgb3B0X2NvbHVtbl9saXN0IE9wdFdoZXJlQ2xh dXNlCisJCQl8IENvbElkIG9wdF9leGNlcHQgb3B0X2NvbHVtbl9saXN0IE9wdFdoZXJlQ2xhdXNl CiAJCQkJewogCQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uT2JqU3BlYyk7CiAJCQkJCSQk LT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05PQkpfQ09OVElOVUFUSU9OOwpAQCAtMTA3OTAsNyAr MTA3OTYsNyBAQCBQdWJsaWNhdGlvbk9ialNwZWM6CiAJCQkJCSAqIElmIGVpdGhlciBhIHJvdyBm aWx0ZXIgb3IgY29sdW1uIGxpc3QgaXMgc3BlY2lmaWVkLCBjcmVhdGUKIAkJCQkJICogYSBQdWJs aWNhdGlvblRhYmxlIG9iamVjdC4KIAkJCQkJICovCi0JCQkJCWlmICgkMiB8fCAkMykKKwkJCQkJ aWYgKCQyIHx8ICQzIHx8ICQ0KQogCQkJCQl7CiAJCQkJCQkvKgogCQkJCQkJICogVGhlIE9wdFdo ZXJlQ2xhdXNlIG11c3QgYmUgc3RvcmVkIGhlcmUgYnV0IGl0IGlzCkBAIC0xMDgwMCw4ICsxMDgw Niw5IEBAIFB1YmxpY2F0aW9uT2JqU3BlYzoKIAkJCQkJCSAqLwogCQkJCQkJJCQtPnB1YnRhYmxl ID0gbWFrZU5vZGUoUHVibGljYXRpb25UYWJsZSk7CiAJCQkJCQkkJC0+cHVidGFibGUtPnJlbGF0 aW9uID0gbWFrZVJhbmdlVmFyKE5VTEwsICQxLCBAMSk7Ci0JCQkJCQkkJC0+cHVidGFibGUtPmNv bHVtbnMgPSAkMjsKLQkJCQkJCSQkLT5wdWJ0YWJsZS0+d2hlcmVDbGF1c2UgPSAkMzsKKwkJCQkJ CSQkLT5wdWJ0YWJsZS0+ZXhjZXB0ID0gJDI7CisJCQkJCQkkJC0+cHVidGFibGUtPmNvbHVtbnMg PSAkMzsKKwkJCQkJCSQkLT5wdWJ0YWJsZS0+d2hlcmVDbGF1c2UgPSAkNDsKIAkJCQkJfQogCQkJ CQllbHNlCiAJCQkJCXsKQEAgLTEwODA5LDI1ICsxMDgxNiwyNyBAQCBQdWJsaWNhdGlvbk9ialNw ZWM6CiAJCQkJCX0KIAkJCQkJJCQtPmxvY2F0aW9uID0gQDE7CiAJCQkJfQotCQkJfCBDb2xJZCBp bmRpcmVjdGlvbiBvcHRfY29sdW1uX2xpc3QgT3B0V2hlcmVDbGF1c2UKKwkJCXwgQ29sSWQgaW5k aXJlY3Rpb24gb3B0X2V4Y2VwdCBvcHRfY29sdW1uX2xpc3QgT3B0V2hlcmVDbGF1c2UKIAkJCQl7 CiAJCQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25PYmpTcGVjKTsKIAkJCQkJJCQtPnB1Ym9i anR5cGUgPSBQVUJMSUNBVElPTk9CSl9DT05USU5VQVRJT047CiAJCQkJCSQkLT5wdWJ0YWJsZSA9 IG1ha2VOb2RlKFB1YmxpY2F0aW9uVGFibGUpOwogCQkJCQkkJC0+cHVidGFibGUtPnJlbGF0aW9u ID0gbWFrZVJhbmdlVmFyRnJvbVF1YWxpZmllZE5hbWUoJDEsICQyLCBAMSwgeXlzY2FubmVyKTsK LQkJCQkJJCQtPnB1YnRhYmxlLT5jb2x1bW5zID0gJDM7Ci0JCQkJCSQkLT5wdWJ0YWJsZS0+d2hl cmVDbGF1c2UgPSAkNDsKKwkJCQkJJCQtPnB1YnRhYmxlLT5leGNlcHQgPSAkMzsKKwkJCQkJJCQt PnB1YnRhYmxlLT5jb2x1bW5zID0gJDQ7CisJCQkJCSQkLT5wdWJ0YWJsZS0+d2hlcmVDbGF1c2Ug PSAkNTsKIAkJCQkJJCQtPmxvY2F0aW9uID0gQDE7CiAJCQkJfQogCQkJLyogZ3JhbW1hciBsaWtl IHRhYmxlbmFtZSAqICwgT05MWSB0YWJsZW5hbWUsIE9OTFkgKCB0YWJsZW5hbWUgKSAqLwotCQkJ fCBleHRlbmRlZF9yZWxhdGlvbl9leHByIG9wdF9jb2x1bW5fbGlzdCBPcHRXaGVyZUNsYXVzZQor CQkJfCBleHRlbmRlZF9yZWxhdGlvbl9leHByIG9wdF9leGNlcHQgb3B0X2NvbHVtbl9saXN0IE9w dFdoZXJlQ2xhdXNlCiAJCQkJewogCQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uT2JqU3Bl Yyk7CiAJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05PQkpfQ09OVElOVUFUSU9OOwog CQkJCQkkJC0+cHVidGFibGUgPSBtYWtlTm9kZShQdWJsaWNhdGlvblRhYmxlKTsKIAkJCQkJJCQt PnB1YnRhYmxlLT5yZWxhdGlvbiA9ICQxOwotCQkJCQkkJC0+cHVidGFibGUtPmNvbHVtbnMgPSAk MjsKLQkJCQkJJCQtPnB1YnRhYmxlLT53aGVyZUNsYXVzZSA9ICQzOworCQkJCQkkJC0+cHVidGFi bGUtPmV4Y2VwdCA9ICQyOworCQkJCQkkJC0+cHVidGFibGUtPmNvbHVtbnMgPSAkMzsKKwkJCQkJ JCQtPnB1YnRhYmxlLT53aGVyZUNsYXVzZSA9ICQ0OwogCQkJCX0KIAkJCXwgQ1VSUkVOVF9TQ0hF TUEKIAkJCQl7CkBAIC0xOTY5NSw2ICsxOTcwNCwxMyBAQCBwcmVwcm9jZXNzX3B1Ym9ial9saXN0 KExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiAJCQkJCQll cnJtc2coImludmFsaWQgdGFibGUgbmFtZSIpLAogCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHB1 Ym9iai0+bG9jYXRpb24pKTsKIAorCQkJaWYgKHB1Ym9iai0+cHVidGFibGUgJiYgcHVib2JqLT5w dWJ0YWJsZS0+ZXhjZXB0ICYmCisJCQkJcHVib2JqLT5wdWJ0YWJsZS0+Y29sdW1ucyA9PSBOVUxM KQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9S KSwKKwkJCQkJCWVycm1zZygidGFibGUgd2l0aG91dCBjb2x1bW4gbGlzdCBjYW5ub3QgdXNlIEVY Q0VQVCBjbGF1c2UiKSwKKwkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwdWJvYmotPmxvY2F0aW9u KSk7CisKIAkJCWlmIChwdWJvYmotPm5hbWUpCiAJCQl7CiAJCQkJLyogY29udmVydCBpdCB0byBQ dWJsaWNhdGlvblRhYmxlICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3RhYmxlc3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJs ZXN5bmMuYwppbmRleCBkMzM1NmJjODRlZS4uNjhmZjU1OWU4MGMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpAQCAtODIxLDEwICs4MjEsMTggQEAgY29w eV9yZWFkX2RhdGEodm9pZCAqb3V0YnVmLCBpbnQgbWlucmVhZCwgaW50IG1heHJlYWQpCiAgKiBU aGlzIGZ1bmN0aW9uIGFsc28gcmV0dXJucyAoYSkgdGhlIHJlbGF0aW9uIHF1YWxpZmljYXRpb25z IHRvIGJlIHVzZWQgaW4KICAqIHRoZSBDT1BZIGNvbW1hbmQsIGFuZCAoYikgd2hldGhlciB0aGUg cmVtb3RlIHJlbGF0aW9uIGhhcyBwdWJsaXNoZWQgYW55CiAgKiBnZW5lcmF0ZWQgY29sdW1uLgor ICoKKyAqIFdpdGggdGhlIGludHJvZHVjdGlvbiBvZiB0aGUgRVhDRVBUIHF1YWxpZmllciBpbiBj b2x1bW4gbGlzdHMsIGl0IGlzIG5vdworICogcG9zc2libGUgdG8gZGVmaW5lIGEgcHVibGljYXRp b24gdGhhdCBleGNsdWRlcyBhbGwgY29sdW1ucyBvZiBhIHRhYmxlLiBXaGVuCisgKiB0aGUgY29s dW1uIGxpc3QgaXMgZmV0Y2hlZCBmcm9tIHRoZSByZW1vdGUgc2VydmVyIGFuZCBpcyBOVUxMLCBp dCBub3JtYWxseQorICogaW5kaWNhdGVzIHRoYXQgYWxsIGNvbHVtbnMgYXJlIGluY2x1ZGVkLiBU byBkaXN0aW5ndWlzaCB0aGlzIGZyb20gdGhlIGNhc2UKKyAqIHdoZXJlIGFsbCBjb2x1bW5zIGFy ZSBleHBsaWNpdGx5IGV4Y2x1ZGVkLCB0aGUgJ2FsbF9jb2xzX2V4Y2x1ZGVkJyBmbGFnIGhhcwor ICogYmVlbiBpbnRyb2R1Y2VkLgogICovCiBzdGF0aWMgdm9pZAogZmV0Y2hfcmVtb3RlX3RhYmxl X2luZm8oY2hhciAqbnNwbmFtZSwgY2hhciAqcmVsbmFtZSwgTG9naWNhbFJlcFJlbGF0aW9uICps cmVsLAotCQkJCQkJTGlzdCAqKnF1YWwsIGJvb2wgKmdlbmNvbF9wdWJsaXNoZWQpCisJCQkJCQlM aXN0ICoqcXVhbCwgYm9vbCAqZ2VuY29sX3B1Ymxpc2hlZCwKKwkJCQkJCWJvb2wgKmFsbF9jb2xz X2V4Y2x1ZGVkKQogewogCVdhbFJjdkV4ZWNSZXN1bHQgKnJlczsKIAlTdHJpbmdJbmZvRGF0YSBj bWQ7CkBAIC04MzgsNiArODQ2LDkgQEAgZmV0Y2hfcmVtb3RlX3RhYmxlX2luZm8oY2hhciAqbnNw bmFtZSwgY2hhciAqcmVsbmFtZSwgTG9naWNhbFJlcFJlbGF0aW9uICpscmVsLAogCUJpdG1hcHNl dCAgKmluY2x1ZGVkX2NvbHMgPSBOVUxMOwogCWludAkJCXNlcnZlcl92ZXJzaW9uID0gd2FscmN2 X3NlcnZlcl92ZXJzaW9uKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4pOwogCisJQXNzZXJ0KCpnZW5j b2xfcHVibGlzaGVkID09IGZhbHNlKTsKKwlBc3NlcnQoKmFsbF9jb2xzX2V4Y2x1ZGVkID09IGZh bHNlKTsKKwogCWxyZWwtPm5zcG5hbWUgPSBuc3BuYW1lOwogCWxyZWwtPnJlbG5hbWUgPSByZWxu YW1lOwogCkBAIC04ODgsNyArODk5LDcgQEAgZmV0Y2hfcmVtb3RlX3RhYmxlX2luZm8oY2hhciAq bnNwbmFtZSwgY2hhciAqcmVsbmFtZSwgTG9naWNhbFJlcFJlbGF0aW9uICpscmVsLAogCXsKIAkJ V2FsUmN2RXhlY1Jlc3VsdCAqcHVicmVzOwogCQlUdXBsZVRhYmxlU2xvdCAqdHNsb3Q7Ci0JCU9p ZAkJCWF0dHJzUm93W10gPSB7SU5UMlZFQ1RPUk9JRH07CisJCU9pZAkJCWF0dHJzUm93W10gPSB7 SU5UMlZFQ1RPUk9JRCwgQk9PTE9JRH07CiAKIAkJLyogQnVpbGQgdGhlIHB1Yl9uYW1lcyBjb21t YS1zZXBhcmF0ZWQgc3RyaW5nLiAqLwogCQlwdWJfbmFtZXMgPSBtYWtlU3RyaW5nSW5mbygpOwpA QCAtOTAyLDcgKzkxMywxNyBAQCBmZXRjaF9yZW1vdGVfdGFibGVfaW5mbyhjaGFyICpuc3BuYW1l LCBjaGFyICpyZWxuYW1lLCBMb2dpY2FsUmVwUmVsYXRpb24gKmxyZWwsCiAJCWFwcGVuZFN0cmlu Z0luZm8oJmNtZCwKIAkJCQkJCSAiU0VMRUNUIERJU1RJTkNUIgogCQkJCQkJICIgIChDQVNFIFdI RU4gKGFycmF5X2xlbmd0aChncHQuYXR0cnMsIDEpID0gYy5yZWxuYXR0cykiCi0JCQkJCQkgIiAg IFRIRU4gTlVMTCBFTFNFIGdwdC5hdHRycyBFTkQpIgorCQkJCQkJICIgICBUSEVOIE5VTEwgRUxT RSBncHQuYXR0cnMgRU5EKSIpOworCisJCS8qCisJCSAqIFdoZW4gcHVibGljYXRpb24gaXMgY3Jl YXRlZCB3aXRoIEVYQ0VQVCAoY29sdW1uLWxpc3QpIGFuZCBhbGwKKwkJICogY29sdW1ucyBhcmUg c3BlY2lmaWVkLCBncHQuYXR0cnMgd2lsbCBiZSBOVUxMIGFuZCBubyBjb2x1bW5zIGFyZQorCQkg KiBwdWJsaXNoZWQgaW4gdGhpcyBjYXNlLgorCQkgKi8KKwkJaWYgKHNlcnZlcl92ZXJzaW9uID49 IDE5MDAwMCkKKwkJCWFwcGVuZFN0cmluZ0luZm8oJmNtZCwgIiwgZ3B0LmF0dHJzIElTIE5VTEwg QU5EIGMucmVsbmF0dHMgPiAwIik7CisKKwkJYXBwZW5kU3RyaW5nSW5mbygmY21kLAogCQkJCQkJ ICIgIEZST00gcGdfcHVibGljYXRpb24gcCwiCiAJCQkJCQkgIiAgTEFURVJBTCBwZ19nZXRfcHVi bGljYXRpb25fdGFibGVzKHAucHVibmFtZSkgZ3B0LCIKIAkJCQkJCSAiICBwZ19jbGFzcyBjIgpA QCAtOTEyLDcgKzkzMyw3IEBAIGZldGNoX3JlbW90ZV90YWJsZV9pbmZvKGNoYXIgKm5zcG5hbWUs IGNoYXIgKnJlbG5hbWUsIExvZ2ljYWxSZXBSZWxhdGlvbiAqbHJlbCwKIAkJCQkJCSBwdWJfbmFt ZXMtPmRhdGEpOwogCiAJCXB1YnJlcyA9IHdhbHJjdl9leGVjKExvZ1JlcFdvcmtlcldhbFJjdkNv bm4sIGNtZC5kYXRhLAotCQkJCQkJCSBsZW5ndGhvZihhdHRyc1JvdyksIGF0dHJzUm93KTsKKwkJ CQkJCQkgc2VydmVyX3ZlcnNpb24gPj0gMTkwMDAwID8gMiA6IDEsIGF0dHJzUm93KTsKIAogCQlp ZiAocHVicmVzLT5zdGF0dXMgIT0gV0FMUkNWX09LX1RVUExFUykKIAkJCWVyZXBvcnQoRVJST1Is CkBAIC05NTksNiArOTgwLDkgQEAgZmV0Y2hfcmVtb3RlX3RhYmxlX2luZm8oY2hhciAqbnNwbmFt ZSwgY2hhciAqcmVsbmFtZSwgTG9naWNhbFJlcFJlbGF0aW9uICpscmVsLAogCQkJCQlpbmNsdWRl ZF9jb2xzID0gYm1zX2FkZF9tZW1iZXIoaW5jbHVkZWRfY29scywgZWxlbXNbbmF0dF0pOwogCQkJ fQogCisJCQlpZiAoc2VydmVyX3ZlcnNpb24gPj0gMTkwMDAwKQorCQkJCSphbGxfY29sc19leGNs dWRlZCA9IERhdHVtR2V0Qm9vbChzbG90X2dldGF0dHIodHNsb3QsIDIsICZpc251bGwpKTsKKwog CQkJRXhlY0NsZWFyVHVwbGUodHNsb3QpOwogCQl9CiAJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJs ZVNsb3QodHNsb3QpOwpAQCAtMTAyMSw3ICsxMDQ1LDggQEAgZmV0Y2hfcmVtb3RlX3RhYmxlX2lu Zm8oY2hhciAqbnNwbmFtZSwgY2hhciAqcmVsbmFtZSwgTG9naWNhbFJlcFJlbGF0aW9uICpscmVs LAogCQlBc3NlcnQoIWlzbnVsbCk7CiAKIAkJLyogSWYgdGhlIGNvbHVtbiBpcyBub3QgaW4gdGhl IGNvbHVtbiBsaXN0LCBza2lwIGl0LiAqLwotCQlpZiAoaW5jbHVkZWRfY29scyAhPSBOVUxMICYm ICFibXNfaXNfbWVtYmVyKGF0dG51bSwgaW5jbHVkZWRfY29scykpCisJCWlmICgqYWxsX2NvbHNf ZXhjbHVkZWQgfHwKKwkJCShpbmNsdWRlZF9jb2xzICE9IE5VTEwgJiYgIWJtc19pc19tZW1iZXIo YXR0bnVtLCBpbmNsdWRlZF9jb2xzKSkpCiAJCXsKIAkJCUV4ZWNDbGVhclR1cGxlKHNsb3QpOwog CQkJY29udGludWU7CkBAIC0xMTUzLDExICsxMTc4LDE1IEBAIGNvcHlfdGFibGUoUmVsYXRpb24g cmVsKQogCVBhcnNlU3RhdGUgKnBzdGF0ZTsKIAlMaXN0CSAgICpvcHRpb25zID0gTklMOwogCWJv b2wJCWdlbmNvbF9wdWJsaXNoZWQgPSBmYWxzZTsKKwlib29sCQlhbGxfY29sc19leGNsdWRlZCA9 IGZhbHNlOwogCiAJLyogR2V0IHRoZSBwdWJsaXNoZXIgcmVsYXRpb24gaW5mby4gKi8KIAlmZXRj aF9yZW1vdGVfdGFibGVfaW5mbyhnZXRfbmFtZXNwYWNlX25hbWUoUmVsYXRpb25HZXROYW1lc3Bh Y2UocmVsKSksCiAJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSwgJmxyZWwsICZx dWFsLAotCQkJCQkJCSZnZW5jb2xfcHVibGlzaGVkKTsKKwkJCQkJCQkmZ2VuY29sX3B1Ymxpc2hl ZCwgJmFsbF9jb2xzX2V4Y2x1ZGVkKTsKKworCWlmIChhbGxfY29sc19leGNsdWRlZCkKKwkJcmV0 dXJuOwogCiAJLyogUHV0IHRoZSByZWxhdGlvbiBpbnRvIHJlbG1hcC4gKi8KIAlsb2dpY2FscmVw X3JlbG1hcF91cGRhdGUoJmxyZWwpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0 L3Bnb3V0cHV0LmMKaW5kZXggYjlkNjc2ZDFmMTguLjFjZjkwZjE4NzVkIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKQEAgLTE4NSw2ICsxODUsMTYgQEAg dHlwZWRlZiBzdHJ1Y3QgUmVsYXRpb25TeW5jRW50cnkKIAkgKiByb3cgZmlsdGVyIGV4cHJlc3Np b25zLCBjb2x1bW4gbGlzdCwgZXRjLgogCSAqLwogCU1lbW9yeUNvbnRleHQgZW50cnlfY3h0Owor CisJLyoKKwkgKiBJbmRpY2F0ZXMgd2hldGhlciBubyBjb2x1bW5zIGFyZSBwdWJsaXNoZWQgZm9y IGEgZ2l2ZW4gcmVsYXRpb24uIFdpdGgKKwkgKiB0aGUgaW50cm9kdWN0aW9uIG9mIHRoZSBFWENF UFQgcXVhbGlmaWVyIGluIGNvbHVtbiBsaXN0cywgaXQgaXMgbm93CisJICogcG9zc2libGUgdG8g ZGVmaW5lIGEgcHVibGljYXRpb24gdGhhdCBleGNsdWRlcyBhbGwgY29sdW1ucyBvZiBhIHRhYmxl LgorCSAqIEhvd2V2ZXIsIHRoZSAnY29sdW1ucycgYXR0cmlidXRlIGNhbm5vdCByZXByZXNlbnQg dGhpcyBjYXNlLCBzaW5jZSBhCisJICogTlVMTCB2YWx1ZSBpbXBsaWVzIHRoYXQgYWxsIGNvbHVt bnMgYXJlIHB1Ymxpc2hlZC4gVG8gZGlzdGluZ3Vpc2ggdGhpcworCSAqIHNjZW5hcmlvLCB0aGUg J2FsbF9jb2xzX2V4Y2x1ZGVkJyBmbGFnIGlzIGludHJvZHVjZWQuCisJICovCisJYm9vbAkJYWxs X2NvbHNfZXhjbHVkZWQ7CiB9IFJlbGF0aW9uU3luY0VudHJ5OwogCiAvKgpAQCAtMTA2OCwxMiAr MTA3OCwyMSBAQCBjaGVja19hbmRfaW5pdF9nZW5jb2woUEdPdXRwdXREYXRhICpkYXRhLCBMaXN0 ICpwdWJsaWNhdGlvbnMsCiAJICovCiAJZm9yZWFjaF9wdHIoUHVibGljYXRpb24sIHB1YiwgcHVi bGljYXRpb25zKQogCXsKKwkJYm9vbAkJaGFzX2NvbHVtbl9saXN0ID0gZmFsc2U7CisJCWJvb2wJ CWV4Y2VwdF9jb2x1bW5zID0gZmFsc2U7CisKKwkJaGFzX2NvbHVtbl9saXN0ID0gY2hlY2tfYW5k X2ZldGNoX2NvbHVtbl9saXN0KHB1YiwKKwkJCQkJCQkJCQkJCQkgIGVudHJ5LT5wdWJsaXNoX2Fz X3JlbGlkLAorCQkJCQkJCQkJCQkJCSAgTlVMTCwgTlVMTCwKKwkJCQkJCQkJCQkJCQkgICZleGNl cHRfY29sdW1ucyk7CisKIAkJLyoKIAkJICogVGhlIGNvbHVtbiBsaXN0IHRha2VzIHByZWNlZGVu Y2Ugb3ZlciB0aGUKIAkJICogJ3B1Ymxpc2hfZ2VuZXJhdGVkX2NvbHVtbnMnIHBhcmFtZXRlci4g VGhvc2Ugd2lsbCBiZSBjaGVja2VkIGxhdGVyLAotCQkgKiBzZWUgcGdvdXRwdXRfY29sdW1uX2xp c3RfaW5pdC4KKwkJICogc2VlIHBnb3V0cHV0X2NvbHVtbl9saXN0X2luaXQuIEJ1dCB3aGVuIGEg Y29sdW1uIGxpc3QgaXMgc3BlY2lmaWVkCisJCSAqIHdpdGggRVhDRVBULCBpdCBzaG91bGQgYmUg Y2hlY2tlZC4KIAkJICovCi0JCWlmIChjaGVja19hbmRfZmV0Y2hfY29sdW1uX2xpc3QocHViLCBl bnRyeS0+cHVibGlzaF9hc19yZWxpZCwgTlVMTCwgTlVMTCkpCisJCWlmIChoYXNfY29sdW1uX2xp c3QgJiYgIWV4Y2VwdF9jb2x1bW5zKQogCQkJY29udGludWU7CiAKIAkJaWYgKGZpcnN0KQpAQCAt MTEyMiwxOSArMTE0MSw0MSBAQCBwZ291dHB1dF9jb2x1bW5fbGlzdF9pbml0KFBHT3V0cHV0RGF0 YSAqZGF0YSwgTGlzdCAqcHVibGljYXRpb25zLAogCXsKIAkJUHVibGljYXRpb24gKnB1YiA9IGxm aXJzdChsYyk7CiAJCUJpdG1hcHNldCAgKmNvbHMgPSBOVUxMOworCQlib29sCQlleGNlcHRfY29s dW1ucyA9IGZhbHNlOworCQlib29sCQlhbGxfY29sc19leGNsdWRlZCA9IGZhbHNlOwogCiAJCS8q IFJldHJpZXZlIHRoZSBiaXRtYXAgb2YgY29sdW1ucyBmb3IgYSBjb2x1bW4gbGlzdCBwdWJsaWNh dGlvbi4gKi8KIAkJZm91bmRfcHViX2NvbGxpc3QgfD0gY2hlY2tfYW5kX2ZldGNoX2NvbHVtbl9s aXN0KHB1YiwKIAkJCQkJCQkJCQkJCQkJIGVudHJ5LT5wdWJsaXNoX2FzX3JlbGlkLAotCQkJCQkJ CQkJCQkJCQkgZW50cnktPmVudHJ5X2N4dCwgJmNvbHMpOworCQkJCQkJCQkJCQkJCQkgZW50cnkt PmVudHJ5X2N4dCwgJmNvbHMsCisJCQkJCQkJCQkJCQkJCSAmZXhjZXB0X2NvbHVtbnMpOworCisJ CS8qCisJCSAqIElmIGNvbHVtbiBsaXN0IGlzIHNwZWNpZmllZCB3aXRoIEVYQ0VQVCByZXRyaWV2 ZSBiaXRtYXAgb2YgY29sdW1ucworCQkgKiB3aGljaCBhcmUgbm90IHBhcnQgb2YgdGhpcyBjb2x1 bW4gbGlzdC4KKwkJICovCisJCWlmIChleGNlcHRfY29sdW1ucykKKwkJeworCQkJTWVtb3J5Q29u dGV4dCBvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZW50cnktPmVudHJ5X2N4dCk7CisK KwkJCWNvbHMgPSBwdWJfZm9ybV9jb2xzX21hcChyZWxhdGlvbiwKKwkJCQkJCQkJCSBlbnRyeS0+ aW5jbHVkZV9nZW5jb2xzX3R5cGUsIGNvbHMpOworCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9s ZGN4dCk7CisKKwkJCWlmICghY29scykKKwkJCQlhbGxfY29sc19leGNsdWRlZCA9IHRydWU7CisJ CX0KIAogCQkvKgotCQkgKiBGb3Igbm9uLWNvbHVtbiBsaXN0IHB1YmxpY2F0aW9ucyDigJQgZS5n LiBUQUJMRSAod2l0aG91dCBhIGNvbHVtbgotCQkgKiBsaXN0KSwgQUxMIFRBQkxFUywgb3IgQUxM IFRBQkxFUyBJTiBTQ0hFTUEsIHdlIGNvbnNpZGVyIGFsbCBjb2x1bW5zCi0JCSAqIG9mIHRoZSB0 YWJsZSAoaW5jbHVkaW5nIGdlbmVyYXRlZCBjb2x1bW5zIHdoZW4KKwkJICogSWYgJ2NvbHMnIGlz IG51bGwsIGl0IGluZGljYXRlcyB0aGF0IHRoZSBwdWJsaWNhdGlvbiBpcyBlaXRoZXIgYQorCQkg KiBub24tY29sdW1uIGxpc3QgcHVibGljYXRpb24gb3Igb25lIHdoZXJlIGFsbCBjb2x1bW5zIGFy ZSBleGNsdWRlZC4KKwkJICogV2hlbiAnYWxsX2NvbHNfZXhjbHVkZWQnIGlzIHRydWUsIGl0IGV4 cGxpY2l0bHkgbWVhbnMgYWxsIGNvbHVtbnMKKwkJICogaGF2ZSBiZWVuIGV4Y2x1ZGVkLiBGb3Ig bm9uLWNvbHVtbiBsaXN0IHB1YmxpY2F0aW9ucyDigJQgZS5nLiBUQUJMRQorCQkgKiAod2l0aG91 dCBhIGNvbHVtbiBsaXN0KSwgQUxMIFRBQkxFUywgb3IgQUxMIFRBQkxFUyBJTiBTQ0hFTUEsIHdl CisJCSAqIGNvbnNpZGVyIGFsbCBjb2x1bW5zIG9mIHRoZSB0YWJsZSAoaW5jbHVkaW5nIGdlbmVy YXRlZCBjb2x1bW5zIHdoZW4KIAkJICogJ3B1Ymxpc2hfZ2VuZXJhdGVkX2NvbHVtbnMnIHBhcmFt ZXRlciBpcyB0cnVlKS4KIAkJICovCi0JCWlmICghY29scykKKwkJaWYgKCFhbGxfY29sc19leGNs dWRlZCAmJiAhY29scykKIAkJewogCQkJLyoKIAkJCSAqIENhY2hlIHRoZSB0YWJsZSBjb2x1bW5z IGZvciB0aGUgZmlyc3QgcHVibGljYXRpb24gd2l0aCBubwpAQCAtMTE0Niw3ICsxMTg3LDcgQEAg cGdvdXRwdXRfY29sdW1uX2xpc3RfaW5pdChQR091dHB1dERhdGEgKmRhdGEsIExpc3QgKnB1Ymxp Y2F0aW9ucywKIAkJCQlNZW1vcnlDb250ZXh0IG9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hU byhlbnRyeS0+ZW50cnlfY3h0KTsKIAogCQkJCXJlbGNvbHMgPSBwdWJfZm9ybV9jb2xzX21hcChy ZWxhdGlvbiwKLQkJCQkJCQkJCQkJZW50cnktPmluY2x1ZGVfZ2VuY29sc190eXBlKTsKKwkJCQkJ CQkJCQkJZW50cnktPmluY2x1ZGVfZ2VuY29sc190eXBlLCBOVUxMKTsKIAkJCQlNZW1vcnlDb250 ZXh0U3dpdGNoVG8ob2xkY3h0KTsKIAkJCX0KIApAQCAtMTE1Niw5ICsxMTk3LDExIEBAIHBnb3V0 cHV0X2NvbHVtbl9saXN0X2luaXQoUEdPdXRwdXREYXRhICpkYXRhLCBMaXN0ICpwdWJsaWNhdGlv bnMsCiAJCWlmIChmaXJzdCkKIAkJewogCQkJZW50cnktPmNvbHVtbnMgPSBjb2xzOworCQkJZW50 cnktPmFsbF9jb2xzX2V4Y2x1ZGVkID0gYWxsX2NvbHNfZXhjbHVkZWQ7CiAJCQlmaXJzdCA9IGZh bHNlOwogCQl9Ci0JCWVsc2UgaWYgKCFibXNfZXF1YWwoZW50cnktPmNvbHVtbnMsIGNvbHMpKQor CQllbHNlIGlmICgoZW50cnktPmFsbF9jb2xzX2V4Y2x1ZGVkICE9IGFsbF9jb2xzX2V4Y2x1ZGVk KSB8fAorCQkJCSAhYm1zX2VxdWFsKGVudHJ5LT5jb2x1bW5zLCBjb2xzKSkKIAkJCWVyZXBvcnQo RVJST1IsCiAJCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJ CQllcnJtc2coImNhbm5vdCB1c2UgZGlmZmVyZW50IGNvbHVtbiBsaXN0cyBmb3IgdGFibGUgXCIl cy4lc1wiIGluIGRpZmZlcmVudCBwdWJsaWNhdGlvbnMiLApAQCAtMTQ4Miw2ICsxNTI1LDEzIEBA IHBnb3V0cHV0X2NoYW5nZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJCdWZm ZXJUWE4gKnR4biwKIAogCXJlbGVudHJ5ID0gZ2V0X3JlbF9zeW5jX2VudHJ5KGRhdGEsIHJlbGF0 aW9uKTsKIAorCS8qCisJICogSWYgYWxsIGNvbHVtbnMgb2YgYSB0YWJsZSBhcmUgcHJlc2VudCBp biBjb2x1bW4gbGlzdCBzcGVjaWZpZWQgd2l0aAorCSAqIEVYQ0VQVCwgc2tpcCBwdWJsaXNoaW5n IHRoZSBjaGFuZ2VzLgorCSAqLworCWlmIChyZWxlbnRyeS0+YWxsX2NvbHNfZXhjbHVkZWQpCisJ CXJldHVybjsKKwogCS8qIEZpcnN0IGNoZWNrIHRoZSB0YWJsZSBmaWx0ZXIgKi8KIAlzd2l0Y2gg KGFjdGlvbikKIAl7CkBAIC0yMDU5LDYgKzIxMDksNyBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdP dXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAkJZW50cnktPnB1Ymxpc2hfYXNf cmVsaWQgPSBJbnZhbGlkT2lkOwogCQllbnRyeS0+Y29sdW1ucyA9IE5VTEw7CiAJCWVudHJ5LT5h dHRybWFwID0gTlVMTDsKKwkJZW50cnktPmFsbF9jb2xzX2V4Y2x1ZGVkID0gZmFsc2U7CiAJfQog CiAJLyogVmFsaWRhdGUgdGhlIGVudHJ5ICovCkBAIC0yMTA4LDYgKzIxNTksNyBAQCBnZXRfcmVs X3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAkJZW50 cnktPnB1YmFjdGlvbnMucHVidXBkYXRlID0gZmFsc2U7CiAJCWVudHJ5LT5wdWJhY3Rpb25zLnB1 YmRlbGV0ZSA9IGZhbHNlOwogCQllbnRyeS0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0ZSA9IGZhbHNl OworCQllbnRyeS0+YWxsX2NvbHNfZXhjbHVkZWQgPSBmYWxzZTsKIAogCQkvKgogCQkgKiBUdXBs ZSBzbG90cyBjbGVhbnVwcy4gKFdpbGwgYmUgcmVidWlsdCBsYXRlciBpZiBuZWVkZWQpLgpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmMKaW5kZXggMTA1MDMxYTVjYmMuLmE1N2JhNjlmNzQ4IDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTQ4 NjUsMjQgKzQ4NjUsNyBAQCBnZXRQdWJsaWNhdGlvblRhYmxlcyhBcmNoaXZlICpmb3V0LCBUYWJs ZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCQlpZiAodGJpbmZvID09IE5VTEwpCiAJ CQljb250aW51ZTsKIAotCQkvKiBPSywgbWFrZSBhIER1bXBhYmxlT2JqZWN0IGZvciB0aGlzIHJl bGF0aW9uc2hpcCAqLwotCQlpZiAoc3RyY21wKHByZXhjZXB0LCAiZiIpID09IDApCi0JCQlwdWJy aW5mb1tqXS5kb2JqLm9ialR5cGUgPSBET19QVUJMSUNBVElPTl9SRUw7Ci0JCWVsc2UKLQkJCXB1 YnJpbmZvW2pdLmRvYmoub2JqVHlwZSA9IERPX1BVQkxJQ0FUSU9OX0VYQ0VQVF9SRUw7Ci0KLQkJ cHVicmluZm9bal0uZG9iai5jYXRJZC50YWJsZW9pZCA9Ci0JCQlhdG9vaWQoUFFnZXR2YWx1ZShy ZXMsIGksIGlfdGFibGVvaWQpKTsKLQkJcHVicmluZm9bal0uZG9iai5jYXRJZC5vaWQgPSBhdG9v aWQoUFFnZXR2YWx1ZShyZXMsIGksIGlfb2lkKSk7Ci0JCUFzc2lnbkR1bXBJZCgmcHVicmluZm9b al0uZG9iaik7Ci0JCXB1YnJpbmZvW2pdLmRvYmoubmFtZXNwYWNlID0gdGJpbmZvLT5kb2JqLm5h bWVzcGFjZTsKLQkJcHVicmluZm9bal0uZG9iai5uYW1lID0gdGJpbmZvLT5kb2JqLm5hbWU7Ci0J CXB1YnJpbmZvW2pdLnB1YmxpY2F0aW9uID0gcHViaW5mbzsKLQkJcHVicmluZm9bal0ucHVidGFi bGUgPSB0YmluZm87Ci0JCWlmIChQUWdldGlzbnVsbChyZXMsIGksIGlfcHJyZWxxdWFsKSkKLQkJ CXB1YnJpbmZvW2pdLnB1YnJlbHF1YWwgPSBOVUxMOwotCQllbHNlCi0JCQlwdWJyaW5mb1tqXS5w dWJyZWxxdWFsID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3BycmVscXVhbCkpOwor CQlwdWJyaW5mb1tqXS5wdWJleGNlcHQgPSAoc3RyY21wKHByZXhjZXB0LCAidCIpID09IDApOwog CiAJCWlmICghUFFnZXRpc251bGwocmVzLCBpLCBpX3ByYXR0cnMpKQogCQl7CkBAIC00OTA4LDEw ICs0ODkxLDI5IEBAIGdldFB1YmxpY2F0aW9uVGFibGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5m byB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJCWVsc2UKIAkJCXB1YnJpbmZvW2pdLnB1YnJh dHRycyA9IE5VTEw7CiAKKwkJLyogT0ssIG1ha2UgYSBEdW1wYWJsZU9iamVjdCBmb3IgdGhpcyBy ZWxhdGlvbnNoaXAgKi8KKwkJaWYgKHB1YnJpbmZvW2pdLnB1YmV4Y2VwdCAmJiAhcHVicmluZm9b al0ucHVicmF0dHJzKQorCQkJcHVicmluZm9bal0uZG9iai5vYmpUeXBlID0gRE9fUFVCTElDQVRJ T05fRVhDRVBUX1JFTDsKKwkJZWxzZQorCQkJcHVicmluZm9bal0uZG9iai5vYmpUeXBlID0gRE9f UFVCTElDQVRJT05fUkVMOworCisJCXB1YnJpbmZvW2pdLmRvYmouY2F0SWQudGFibGVvaWQgPQor CQkJYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3RhYmxlb2lkKSk7CisJCXB1YnJpbmZvW2pd LmRvYmouY2F0SWQub2lkID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBpLCBpX29pZCkpOworCQlB c3NpZ25EdW1wSWQoJnB1YnJpbmZvW2pdLmRvYmopOworCQlwdWJyaW5mb1tqXS5kb2JqLm5hbWVz cGFjZSA9IHRiaW5mby0+ZG9iai5uYW1lc3BhY2U7CisJCXB1YnJpbmZvW2pdLmRvYmoubmFtZSA9 IHRiaW5mby0+ZG9iai5uYW1lOworCQlwdWJyaW5mb1tqXS5wdWJsaWNhdGlvbiA9IHB1YmluZm87 CisJCXB1YnJpbmZvW2pdLnB1YnRhYmxlID0gdGJpbmZvOworCQlpZiAoUFFnZXRpc251bGwocmVz LCBpLCBpX3BycmVscXVhbCkpCisJCQlwdWJyaW5mb1tqXS5wdWJyZWxxdWFsID0gTlVMTDsKKwkJ ZWxzZQorCQkJcHVicmluZm9bal0ucHVicmVscXVhbCA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJl cywgaSwgaV9wcnJlbHF1YWwpKTsKKwogCQkvKiBEZWNpZGUgd2hldGhlciB3ZSB3YW50IHRvIGR1 bXAgaXQgKi8KIAkJc2VsZWN0RHVtcGFibGVQdWJsaWNhdGlvbk9iamVjdCgmKHB1YnJpbmZvW2pd LmRvYmopLCBmb3V0KTsKIAotCQlpZiAoc3RyY21wKHByZXhjZXB0LCAidCIpID09IDApCisJCWlm IChwdWJyaW5mb1tqXS5wdWJleGNlcHQgJiYgIXB1YnJpbmZvW2pdLnB1YnJhdHRycykKIAkJCXNp bXBsZV9wdHJfbGlzdF9hcHBlbmQoJmV4Y2VwdGluZm8sICZwdWJyaW5mb1tqXSk7CiAKIAkJaisr OwpAQCAtNDk5MSw3ICs0OTkzLDEyIEBAIGR1bXBQdWJsaWNhdGlvblRhYmxlKEFyY2hpdmUgKmZv dXQsIGNvbnN0IFB1YmxpY2F0aW9uUmVsSW5mbyAqcHVicmluZm8pCiAJCQkJCSAgZm10UXVhbGlm aWVkRHVtcGFibGUodGJpbmZvKSk7CiAKIAlpZiAocHVicmluZm8tPnB1YnJhdHRycykKKwl7CisJ CWlmIChwdWJyaW5mby0+cHViZXhjZXB0KQorCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnks ICIgRVhDRVBUIik7CisKIAkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICIgKCVzKSIsIHB1YnJp bmZvLT5wdWJyYXR0cnMpOworCX0KIAogCWlmIChwdWJyaW5mby0+cHVicmVscXVhbCkKIAl7CmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuaAppbmRleCBjMTc4ZWRiNGUwNS4uNWUyYWExYjBjZjAgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApAQCAt Njg5LDYgKzY4OSw3IEBAIHR5cGVkZWYgc3RydWN0IF9QdWJsaWNhdGlvblJlbEluZm8KIAlUYWJs ZUluZm8gICpwdWJ0YWJsZTsKIAljaGFyCSAgICpwdWJyZWxxdWFsOwogCWNoYXIJICAgKnB1YnJh dHRyczsKKwlib29sCQlwdWJleGNlcHQ7CiB9IFB1YmxpY2F0aW9uUmVsSW5mbzsKIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJl LmMKaW5kZXggZjNmZTRhYjMwZjguLjZiNzI3NDU4MDc2IDEwMDY0NAotLS0gYS9zcmMvYmluL3Bz cWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtMTU2MCw2ICsx NTYwLDY4IEBAIGRlc2NyaWJlVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wg dmVyYm9zZSwgYm9vbCBzaG93U3lzdGVtKQogCXJldHVybiB0cnVlOwogfQogCisvKgorICogSWYg aXNfdGJsX2Rlc2MgaXMgdHJ1ZSBhZGQgZm9vdGVyIHRvIHRhYmxlIGRlc2NyaXB0aW9uIGVsc2Ug YWRkIGZvb3RlciB0bworICogcHVibGljYXRpb24gZGVzY3JpcHRpb24uCisgKi8KK3N0YXRpYyBi b29sCithZGRGb290ZXJUb1B1YmxpY2F0aW9uT3JUYWJsZURlc2MoUFFFeHBCdWZmZXIgYnVmLCBj b25zdCBjaGFyICpmb290ZXJtc2csCisJCQkJCQkJCSAgYm9vbCBhc19zY2hlbWEsIHByaW50VGFi bGVDb250ZW50ICpjb25zdCBjb250LAorCQkJCQkJCQkgIGJvb2wgaXNfdGJsX2Rlc2MpCit7CisJ UEdyZXN1bHQgICAqcmVzOworCWludAkJCWNvdW50ID0gMDsKKwlpbnQJCQlpID0gMDsKKwlpbnQJ CQljb2wgPSBpc190YmxfZGVzYyA/IDAgOiAxOworCisJcmVzID0gUFNRTGV4ZWMoYnVmLT5kYXRh KTsKKwlpZiAoIXJlcykKKwkJcmV0dXJuIGZhbHNlOworCWVsc2UKKwkJY291bnQgPSBQUW50dXBs ZXMocmVzKTsKKworCWlmIChjb3VudCA+IDApCisJCXByaW50VGFibGVBZGRGb290ZXIoY29udCwg Zm9vdGVybXNnKTsKKworCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisJICogUHVibGljYXRpb24vIHRhYmxlIGRlc2NyaXB0aW9uIGNvbHVtbnM6 CisJICogWzBdOiBzY2hlbWEgbmFtZSAobnNwbmFtZSkKKwkgKiBbY29sXTogdGFibGUgbmFtZSAo cmVsbmFtZSkgLyBwdWJsaWNhdGlvbiBuYW1lIChwdWJuYW1lKQorCSAqIFtjb2wgKyAxXTogcm93 IGZpbHRlciBleHByZXNzaW9uIChwcnF1YWwpLCBtYXkgYmUgTlVMTAorCSAqIFtjb2wgKyAyXTog Y29sdW1uIGxpc3QgKGNvbW1hLXNlcGFyYXRlZCksIG1heSBiZSBOVUxMCisJICogW2NvbCArIDNd OiBleGNlcHQgZmxhZyAoInQiIGlmIEVYQ0VQVCwgZWxzZSAiZiIpCisJICotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkgKi8KKwlmb3IgKGkgPSAw OyBpIDwgY291bnQ7IGkrKykKKwl7CisJCWlmIChhc19zY2hlbWEpCisJCQlwcmludGZQUUV4cEJ1 ZmZlcihidWYsICIgICAgXCIlc1wiIiwgUFFnZXR2YWx1ZShyZXMsIGksIDApKTsKKwkJZWxzZQor CQl7CisJCQlpZiAoaXNfdGJsX2Rlc2MpCisJCQkJcHJpbnRmUFFFeHBCdWZmZXIoYnVmLCAiICAg IFwiJXNcIiIsIFBRZ2V0dmFsdWUocmVzLCBpLCBjb2wpKTsKKwkJCWVsc2UKKwkJCQlwcmludGZQ UUV4cEJ1ZmZlcihidWYsICIgICAgXCIlcy4lc1wiIiwgUFFnZXR2YWx1ZShyZXMsIGksIDApLAor CQkJCQkJCQkgIFBRZ2V0dmFsdWUocmVzLCBpLCBjb2wpKTsKKworCQkJaWYgKCFQUWdldGlzbnVs bChyZXMsIGksIGNvbCArIDIpKQorCQkJeworCQkJCWlmIChzdHJjbXAoUFFnZXR2YWx1ZShyZXMs IGksIGNvbCArIDMpLCAidCIpID09IDApCisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyKGJ1ZiwgIiBF WENFUFQiKTsKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcihidWYsICIgKCVzKSIsIFBRZ2V0dmFsdWUo cmVzLCBpLCBjb2wgKyAyKSk7CisJCQl9CisKKwkJCWlmICghUFFnZXRpc251bGwocmVzLCBpLCBj b2wgKyAxKSkKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcihidWYsICIgV0hFUkUgJXMiLCBQUWdldHZh bHVlKHJlcywgaSwgY29sICsgMSkpOworCQl9CisKKwkJcHJpbnRUYWJsZUFkZEZvb3Rlcihjb250 LCBidWYtPmRhdGEpOworCX0KKworCVBRY2xlYXIocmVzKTsKKwlyZXR1cm4gdHJ1ZTsKK30KKwog LyoKICAqIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzIChmb3IgXGQpCiAgKgpAQCAtMzAxOSwxNiAr MzA4MSwyNyBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1l LAogCQkvKiBwcmludCBhbnkgcHVibGljYXRpb25zICovCiAJCWlmIChwc2V0LnN2ZXJzaW9uID49 IDEwMDAwMCkKIAkJewotCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTUwMDAwKQorCQkJaWYgKHBz ZXQuc3ZlcnNpb24gPj0gMTkwMDAwKQogCQkJewogCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYs CisKKwkJCQkvKgorCQkJCSAqIEdldCBhbGwgcHVibGljYXRpb25zIGZvciB0aGUgc2NoZW1hIHRo YXQgdGhpcyByZWxhdGlvbiBpcworCQkJCSAqIHBhcnQgb2YKKwkJCQkgKi8KIAkJCQkJCQkJICAi U0VMRUNUIHB1Ym5hbWVcbiIKIAkJCQkJCQkJICAiICAgICAsIE5VTExcbiIKIAkJCQkJCQkJICAi ICAgICAsIE5VTExcbiIKKwkJCQkJCQkJICAiCQksIE5VTExcbiIKIAkJCQkJCQkJICAiRlJPTSBw Z19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBcbiIKIAkJCQkJCQkJICAiICAgICBKT0lOIHBnX2Nh dGFsb2cucGdfcHVibGljYXRpb25fbmFtZXNwYWNlIHBuIE9OIHAub2lkID0gcG4ucG5wdWJpZFxu IgogCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19jbGFzcyBwYyBPTiBwYy5yZWxu YW1lc3BhY2UgPSBwbi5wbm5zcGlkXG4iCiAJCQkJCQkJCSAgIldIRVJFIHBjLm9pZCA9JyVzJyBh bmQgcGdfY2F0YWxvZy5wZ19yZWxhdGlvbl9pc19wdWJsaXNoYWJsZSgnJXMnKVxuIgorCisJCQkJ LyoKKwkJCQkgKiBHZXQgYWxsIHB1YmxpY2F0aW9ucyBmb3IgdGhpcyByZWxhdGlvbiBjcmVhdGVk IHVzaW5nIEZPUgorCQkJCSAqIFRBQkxFCisJCQkJICovCiAJCQkJCQkJCSAgIlVOSU9OXG4iCiAJ CQkJCQkJCSAgIlNFTEVDVCBwdWJuYW1lXG4iCiAJCQkJCQkJCSAgIiAgICAgLCBwZ19nZXRfZXhw cihwci5wcnF1YWwsIGMub2lkKVxuIgpAQCAtMzAzOCwzNSArMzExMSw2NyBAQCBkZXNjcmliZU9u ZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkJCQkJCQkgICIgICAgICAg ICAgICAgICAgcGdfY2F0YWxvZy5wZ19hdHRyaWJ1dGVcbiIKIAkJCQkJCQkJICAiICAgICAgICAg IFdIRVJFIGF0dHJlbGlkID0gcHIucHJyZWxpZCBBTkQgYXR0bnVtID0gcHJhdHRyc1tzXSlcbiIK IAkJCQkJCQkJICAiICAgICAgICBFTFNFIE5VTEwgRU5EKSAiCisJCQkJCQkJCSAgIgkJLCBwcmV4 Y2VwdCAiCiAJCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBwXG4iCiAJ CQkJCQkJCSAgIgkJSk9JTiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwciBPTiBwLm9p ZCA9IHByLnBycHViaWRcbiIKIAkJCQkJCQkJICAiCQlKT0lOIHBnX2NhdGFsb2cucGdfY2xhc3Mg YyBPTiBjLm9pZCA9IHByLnBycmVsaWRcbiIKLQkJCQkJCQkJICAiV0hFUkUgcHIucHJyZWxpZCA9 ICclcydcbiIsCi0JCQkJCQkJCSAgb2lkLCBvaWQsIG9pZCk7Ci0KLQkJCQlpZiAocHNldC5zdmVy c2lvbiA+PSAxOTAwMDApCi0JCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICIgQU5EIE5P VCBwci5wcmV4Y2VwdFxuIik7CisJCQkJCQkJCSAgIldIRVJFIHByLnBycmVsaWQgPSAnJXMnICIK KwkJCQkJCQkJICAiQU5ECXAucHViYWxsdGFibGVzID0gZmFsc2VcbiIKKwkJCQkJCQkJICAiQU5E ICBjLnJlbG5hbWVzcGFjZSBOT1QgSU4gKFxuICIKKwkJCQkJCQkJICAiIAlTRUxFQ1QgcG5uc3Bp ZCBGUk9NXG4iCisJCQkJCQkJCSAgIiAJcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9uYW1lc3Bh Y2UpXG4iCiAKLQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCS8qCisJCQkJICogR2V0 IGFsbCBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbnMgdGhhdCBpbmNsdWRlIHRoaXMKKwkJCQkg KiByZWxhdGlvbgorCQkJCSAqLwogCQkJCQkJCQkgICJVTklPTlxuIgogCQkJCQkJCQkgICJTRUxF Q1QgcHVibmFtZVxuIgogCQkJCQkJCQkgICIJCSwgTlVMTFxuIgogCQkJCQkJCQkgICIJCSwgTlVM TFxuIgorCQkJCQkJCQkgICIJCSwgTlVMTFxuIgogCQkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cu cGdfcHVibGljYXRpb24gcFxuIgotCQkJCQkJCQkgICJXSEVSRSBwLnB1YmFsbHRhYmxlcyBBTkQg cGdfY2F0YWxvZy5wZ19yZWxhdGlvbl9pc19wdWJsaXNoYWJsZSgnJXMnKVxuIiwKLQkJCQkJCQkJ ICBvaWQpOwotCi0JCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTkwMDAwKQotCQkJCQlhcHBlbmRQ UUV4cEJ1ZmZlcigmYnVmLAotCQkJCQkJCQkJICAiICAgICBBTkQgTk9UIEVYSVNUUyAoXG4iCi0J CQkJCQkJCQkgICIJCVNFTEVDVCAxXG4iCi0JCQkJCQkJCQkgICIJCUZST00gcGdfY2F0YWxvZy5w Z19wdWJsaWNhdGlvbl9yZWwgcHJcbiIKLQkJCQkJCQkJCSAgIgkJSk9JTiBwZ19jYXRhbG9nLnBn X2NsYXNzIHBjXG4iCi0JCQkJCQkJCQkgICIJCU9OIHByLnBycmVsaWQgPSBwYy5vaWRcbiIKLQkJ CQkJCQkJCSAgIgkJV0hFUkUgcHIucHJyZWxpZCA9ICclcycgQU5EIHByLnBycHViaWQgPSBwLm9p ZClcbiIsCi0JCQkJCQkJCQkgIG9pZCk7Ci0KLQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVm LCAiT1JERVIgQlkgMTsiKTsKKwkJCQkJCQkJICAiV0hFUkUgcC5wdWJhbGx0YWJsZXMgQU5EIHBn X2NhdGFsb2cucGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUoJyVzJylcbiIKKwkJCQkJCQkJICAi ICAgICBBTkQgTk9UIEVYSVNUUyAoXG4iCisJCQkJCQkJCSAgIgkJU0VMRUNUIDFcbiIKKwkJCQkJ CQkJICAiCQlGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByXG4iCisJCQkJCQkJ CSAgIgkJSk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNzIHBjXG4iCisJCQkJCQkJCSAgIgkJT04gcHIu cHJyZWxpZCA9IHBjLm9pZFxuIgorCQkJCQkJCQkgICIJCVdIRVJFIHByLnBycmVsaWQgPSAnJXMn IEFORCBwci5wcnB1YmlkID0gcC5vaWQpXG4iCisJCQkJCQkJCSAgIk9SREVSIEJZIDE7IiwKKwkJ CQkJCQkJICBvaWQsIG9pZCwgb2lkLCBvaWQsIG9pZCk7CisJCQl9CisJCQllbHNlIGlmIChwc2V0 LnN2ZXJzaW9uID49IDE1MDAwMCkKKwkJCXsKKwkJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAor CQkJCQkJCQkgICJTRUxFQ1QgcHVibmFtZVxuIgorCQkJCQkJCQkgICIgICAgICwgTlVMTFxuIgor CQkJCQkJCQkgICIgICAgICwgTlVMTFxuIgorCQkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdf cHVibGljYXRpb24gcFxuIgorCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19wdWJs aWNhdGlvbl9uYW1lc3BhY2UgcG4gT04gcC5vaWQgPSBwbi5wbnB1YmlkXG4iCisJCQkJCQkJCSAg IiAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNzIHBjIE9OIHBjLnJlbG5hbWVzcGFjZSA9IHBu LnBubnNwaWRcbiIKKwkJCQkJCQkJICAiV0hFUkUgcGMub2lkID0nJXMnIGFuZCBwZ19jYXRhbG9n LnBnX3JlbGF0aW9uX2lzX3B1Ymxpc2hhYmxlKCclcycpXG4iCisJCQkJCQkJCSAgIlVOSU9OXG4i CisJCQkJCQkJCSAgIlNFTEVDVCBwdWJuYW1lXG4iCisJCQkJCQkJCSAgIiAgICAgLCBwZ19nZXRf ZXhwcihwci5wcnF1YWwsIGMub2lkKVxuIgorCQkJCQkJCQkgICIgICAgICwgKENBU0UgV0hFTiBw ci5wcmF0dHJzIElTIE5PVCBOVUxMIFRIRU5cbiIKKwkJCQkJCQkJICAiICAgICAgICAgKFNFTEVD VCBzdHJpbmdfYWdnKGF0dG5hbWUsICcsICcpXG4iCisJCQkJCQkJCSAgIiAgICAgICAgICAgRlJP TSBwZ19jYXRhbG9nLmdlbmVyYXRlX3NlcmllcygwLCBwZ19jYXRhbG9nLmFycmF5X3VwcGVyKHBy LnByYXR0cnM6OnBnX2NhdGFsb2cuaW50MltdLCAxKSkgcyxcbiIKKwkJCQkJCQkJICAiICAgICAg ICAgICAgICAgIHBnX2NhdGFsb2cucGdfYXR0cmlidXRlXG4iCisJCQkJCQkJCSAgIiAgICAgICAg ICBXSEVSRSBhdHRyZWxpZCA9IHByLnBycmVsaWQgQU5EIGF0dG51bSA9IHByYXR0cnNbc10pXG4i CisJCQkJCQkJCSAgIiAgICAgICAgRUxTRSBOVUxMIEVORCkgIgorCQkJCQkJCQkgICJGUk9NIHBn X2NhdGFsb2cucGdfcHVibGljYXRpb24gcFxuIgorCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0 YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHIgT04gcC5vaWQgPSBwci5wcnB1YmlkXG4iCisJCQkJ CQkJCSAgIiAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNzIGMgT04gYy5vaWQgPSBwci5wcnJl bGlkXG4iCisJCQkJCQkJCSAgIldIRVJFIHByLnBycmVsaWQgPSAnJXMnXG4iCisJCQkJCQkJCSAg IlVOSU9OXG4iCisJCQkJCQkJCSAgIlNFTEVDVCBwdWJuYW1lXG4iCisJCQkJCQkJCSAgIiAgICAg LCBOVUxMXG4iCisJCQkJCQkJCSAgIiAgICAgLCBOVUxMXG4iCisJCQkJCQkJCSAgIkZST00gcGdf Y2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBwXG4iCisJCQkJCQkJCSAgIldIRVJFIHAucHViYWxsdGFi bGVzIEFORCBwZ19jYXRhbG9nLnBnX3JlbGF0aW9uX2lzX3B1Ymxpc2hhYmxlKCclcycpXG4iCisJ CQkJCQkJCSAgIk9SREVSIEJZIDE7IiwKKwkJCQkJCQkJICBvaWQsIG9pZCwgb2lkLCBvaWQpOwog CQkJfQogCQkJZWxzZQogCQkJewpAQCAtMzA4NywzNCArMzE5Miw4IEBAIGRlc2NyaWJlT25lVGFi bGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCQkJCQkJCSAgb2lkLCBvaWQpOwog CQkJfQogCi0JCQlyZXN1bHQgPSBQU1FMZXhlYyhidWYuZGF0YSk7Ci0JCQlpZiAoIXJlc3VsdCkK KwkJCWlmICghYWRkRm9vdGVyVG9QdWJsaWNhdGlvbk9yVGFibGVEZXNjKCZidWYsIF8oIlB1Ymxp Y2F0aW9uczoiKSwgZmFsc2UsICZjb250LCB0cnVlKSkKIAkJCQlnb3RvIGVycm9yX3JldHVybjsK LQkJCWVsc2UKLQkJCQl0dXBsZXMgPSBQUW50dXBsZXMocmVzdWx0KTsKLQotCQkJaWYgKHR1cGxl cyA+IDApCi0JCQkJcHJpbnRUYWJsZUFkZEZvb3RlcigmY29udCwgXygiUHVibGljYXRpb25zOiIp KTsKLQotCQkJLyogTWlnaHQgYmUgYW4gZW1wdHkgc2V0IC0gdGhhdCdzIG9rICovCi0JCQlmb3Ig KGkgPSAwOyBpIDwgdHVwbGVzOyBpKyspCi0JCQl7Ci0JCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1 ZiwgIiAgICBcIiVzXCIiLAotCQkJCQkJCQkgIFBRZ2V0dmFsdWUocmVzdWx0LCBpLCAwKSk7Ci0K LQkJCQkvKiBjb2x1bW4gbGlzdCAoaWYgYW55KSAqLwotCQkJCWlmICghUFFnZXRpc251bGwocmVz dWx0LCBpLCAyKSkKLQkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIiAoJXMpIiwKLQkJCQkJ CQkJCSAgUFFnZXR2YWx1ZShyZXN1bHQsIGksIDIpKTsKLQotCQkJCS8qIHJvdyBmaWx0ZXIgKGlm IGFueSkgKi8KLQkJCQlpZiAoIVBRZ2V0aXNudWxsKHJlc3VsdCwgaSwgMSkpCi0JCQkJCWFwcGVu ZFBRRXhwQnVmZmVyKCZidWYsICIgV0hFUkUgJXMiLAotCQkJCQkJCQkJICBQUWdldHZhbHVlKHJl c3VsdCwgaSwgMSkpOwotCi0JCQkJcHJpbnRUYWJsZUFkZEZvb3RlcigmY29udCwgYnVmLmRhdGEp OwotCQkJfQotCQkJUFFjbGVhcihyZXN1bHQpOwogCQl9CiAKIAkJLyoKQEAgLTY0OTEsNDkgKzY1 NzAsNiBAQCBsaXN0UHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJcmV0dXJuIHRy dWU7CiB9CiAKLS8qCi0gKiBBZGQgZm9vdGVyIHRvIHB1YmxpY2F0aW9uIGRlc2NyaXB0aW9uLgot ICovCi1zdGF0aWMgYm9vbAotYWRkRm9vdGVyVG9QdWJsaWNhdGlvbkRlc2MoUFFFeHBCdWZmZXIg YnVmLCBjb25zdCBjaGFyICpmb290ZXJtc2csCi0JCQkJCQkgICBib29sIGFzX3NjaGVtYSwgcHJp bnRUYWJsZUNvbnRlbnQgKmNvbnN0IGNvbnQpCi17Ci0JUEdyZXN1bHQgICAqcmVzOwotCWludAkJ CWNvdW50ID0gMDsKLQlpbnQJCQlpID0gMDsKLQotCXJlcyA9IFBTUUxleGVjKGJ1Zi0+ZGF0YSk7 Ci0JaWYgKCFyZXMpCi0JCXJldHVybiBmYWxzZTsKLQllbHNlCi0JCWNvdW50ID0gUFFudHVwbGVz KHJlcyk7Ci0KLQlpZiAoY291bnQgPiAwKQotCQlwcmludFRhYmxlQWRkRm9vdGVyKGNvbnQsIGZv b3Rlcm1zZyk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykKLQl7Ci0JCWlmIChhc19z Y2hlbWEpCi0JCQlwcmludGZQUUV4cEJ1ZmZlcihidWYsICIgICAgXCIlc1wiIiwgUFFnZXR2YWx1 ZShyZXMsIGksIDApKTsKLQkJZWxzZQotCQl7Ci0JCQlwcmludGZQUUV4cEJ1ZmZlcihidWYsICIg ICAgXCIlcy4lc1wiIiwgUFFnZXR2YWx1ZShyZXMsIGksIDApLAotCQkJCQkJCSAgUFFnZXR2YWx1 ZShyZXMsIGksIDEpKTsKLQotCQkJaWYgKCFQUWdldGlzbnVsbChyZXMsIGksIDMpKQotCQkJCWFw cGVuZFBRRXhwQnVmZmVyKGJ1ZiwgIiAoJXMpIiwgUFFnZXR2YWx1ZShyZXMsIGksIDMpKTsKLQot CQkJaWYgKCFQUWdldGlzbnVsbChyZXMsIGksIDIpKQotCQkJCWFwcGVuZFBRRXhwQnVmZmVyKGJ1 ZiwgIiBXSEVSRSAlcyIsIFBRZ2V0dmFsdWUocmVzLCBpLCAyKSk7Ci0JCX0KLQotCQlwcmludFRh YmxlQWRkRm9vdGVyKGNvbnQsIGJ1Zi0+ZGF0YSk7Ci0JfQotCi0JUFFjbGVhcihyZXMpOwotCXJl dHVybiB0cnVlOwotfQotCiAvKgogICogXGRScCsKICAqIERlc2NyaWJlcyBwdWJsaWNhdGlvbnMg aW5jbHVkaW5nIHRoZSBjb250ZW50cy4KQEAgLTY3MDQsNiArNjc0MCwxMiBAQCBkZXNjcmliZVB1 YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQkJZWxzZQogCQkJCWFwcGVuZFBRRXhw QnVmZmVyU3RyKCZidWYsCiAJCQkJCQkJCQkgIiwgTlVMTCwgTlVMTCIpOworCisJCQlpZiAocHNl dC5zdmVyc2lvbiA+PSAxOTAwMDApCisJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIiwg cHJleGNlcHQiKTsKKwkJCWVsc2UKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiLCBO VUxMIik7CisKIAkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCQkJICAiXG5GUk9NIHBn X2NhdGFsb2cucGdfY2xhc3MgYyxcbiIKIAkJCQkJCQkgICIgICAgIHBnX2NhdGFsb2cucGdfbmFt ZXNwYWNlIG4sXG4iCkBAIC02NzEyLDExICs2NzU0LDggQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMo Y29uc3QgY2hhciAqcGF0dGVybikKIAkJCQkJCQkgICIgIEFORCBjLm9pZCA9IHByLnBycmVsaWRc biIKIAkJCQkJCQkgICIgIEFORCBwci5wcnB1YmlkID0gJyVzJ1xuIiwgcHViaWQpOwogCi0JCQlp ZiAocHNldC5zdmVyc2lvbiA+PSAxOTAwMDApCi0JCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1Ziwg IiAgQU5EIE5PVCBwci5wcmV4Y2VwdFxuIik7Ci0KIAkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYs ICJPUkRFUiBCWSAxLDIiKTsKLQkJCWlmICghYWRkRm9vdGVyVG9QdWJsaWNhdGlvbkRlc2MoJmJ1 ZiwgXygiVGFibGVzOiIpLCBmYWxzZSwgJmNvbnQpKQorCQkJaWYgKCFhZGRGb290ZXJUb1B1Ymxp Y2F0aW9uT3JUYWJsZURlc2MoJmJ1ZiwgXygiVGFibGVzOiIpLCBmYWxzZSwgJmNvbnQsIGZhbHNl KSkKIAkJCQlnb3RvIGVycm9yX3JldHVybjsKIAogCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTUw MDAwKQpAQCAtNjcyOCw4ICs2NzY3LDggQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hh ciAqcGF0dGVybikKIAkJCQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdfcHVibGljYXRp b25fbmFtZXNwYWNlIHBuIE9OIG4ub2lkID0gcG4ucG5uc3BpZFxuIgogCQkJCQkJCQkgICJXSEVS RSBwbi5wbnB1YmlkID0gJyVzJ1xuIgogCQkJCQkJCQkgICJPUkRFUiBCWSAxIiwgcHViaWQpOwot CQkJCWlmICghYWRkRm9vdGVyVG9QdWJsaWNhdGlvbkRlc2MoJmJ1ZiwgXygiVGFibGVzIGZyb20g c2NoZW1hczoiKSwKLQkJCQkJCQkJCQkJCXRydWUsICZjb250KSkKKwkJCQlpZiAoIWFkZEZvb3Rl clRvUHVibGljYXRpb25PclRhYmxlRGVzYygmYnVmLCBfKCJUYWJsZXMgZnJvbSBzY2hlbWFzOiIp LAorCQkJCQkJCQkJCQkJCSAgIHRydWUsICZjb250LCBmYWxzZSkpCiAJCQkJCWdvdG8gZXJyb3Jf cmV0dXJuOwogCQkJfQogCQl9CkBAIC02NzQ1LDggKzY3ODQsOCBAQCBkZXNjcmliZVB1YmxpY2F0 aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQkJCQkJCQkgICJXSEVSRSBwci5wcnB1YmlkID0g JyVzJ1xuIgogCQkJCQkJCQkgICIgIEFORCBwci5wcmV4Y2VwdFxuIgogCQkJCQkJCQkgICJPUkRF UiBCWSAxIiwgcHViaWQpOwotCQkJCWlmICghYWRkRm9vdGVyVG9QdWJsaWNhdGlvbkRlc2MoJmJ1 ZiwgXygiRXhjZXB0IHRhYmxlczoiKSwKLQkJCQkJCQkJCQkJCXRydWUsICZjb250KSkKKwkJCQlp ZiAoIWFkZEZvb3RlclRvUHVibGljYXRpb25PclRhYmxlRGVzYygmYnVmLCBfKCJFeGNlcHQgdGFi bGVzOiIpLAorCQkJCQkJCQkJCQkJCSAgIHRydWUsICZjb250LCBmYWxzZSkpCiAJCQkJCWdvdG8g ZXJyb3JfcmV0dXJuOwogCQkJfQogCQl9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNv bXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXggNWVmZGNm NTYzNDcuLmRkNTYwYzliYThjIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRl LmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBAIC0yMjcyLDYgKzIy NzIsOCBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAkJQ09NUExFVEVf V0lUSCgiQUxMIFRBQkxFUyIsICJUQUJMRVMgSU4gU0NIRU1BIiwgIlRBQkxFIik7CiAJZWxzZSBp ZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkFERCIsICJBTEwi LCAiVEFCTEVTIikpCiAJCUNPTVBMRVRFX1dJVEgoIkVYQ0VQVCBUQUJMRSIpOworCWVsc2UgaWYg KE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJBRER8U0VUIiwgIlRB QkxFIiwgTWF0Y2hBbnkpKQorCQlDT01QTEVURV9XSVRIKCJFWENFUFQgKCIpOwogCWVsc2UgaWYg KE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJBRER8U0VUIiwgIlRB QkxFIikpCiAJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3Rh Ymxlcyk7CiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFu eSwgIkFERCIsICJBTEwiLCAiVEFCTEVTIiwgIkVYQ0VQVCIsICJUQUJMRSIpKQpAQCAtMzYwMSw3 ICszNjAzLDcgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAJZWxzZSBp ZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiVEFC TEVTIikpCiAJCUNPTVBMRVRFX1dJVEgoIklOIFNDSEVNQSIpOwogCWVsc2UgaWYgKE1hdGNoZXMo IkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIlRBQkxFIiwgTWF0Y2hB bnkpICYmICFlbmRzX3dpdGgocHJldl93ZCwgJywnKSkKLQkJQ09NUExFVEVfV0lUSCgiV0hFUkUg KCIsICJXSVRIICgiKTsKKwkJQ09NUExFVEVfV0lUSCgiRVhDRVBUICgiLCAiV0hFUkUgKCIsICJX SVRIICgiKTsKIAkvKiBDb21wbGV0ZSAiQ1JFQVRFIFBVQkxJQ0FUSU9OIDxuYW1lPiBGT1IgVEFC TEUiIHdpdGggIjx0YWJsZT4sIC4uLiIgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAi UFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJUQUJMRSIpKQogCQlDT01QTEVURV9XSVRI X1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl90YWJsZXMpOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wdWJsaWNhdGlvbi5oCmluZGV4IDAyMjQ2N2ZiNDVjLi4yYTFkYzQ4Y2NiOCAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHVibGljYXRpb24uaApAQCAtMTgxLDcgKzE4MSw4IEBAIGV4dGVybiBPaWQJ R2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihPaWQgcHVib2lkLCBMaXN0ICphbmNlc3Rv cnMsCiBleHRlcm4gYm9vbCBpc19wdWJsaXNoYWJsZV9yZWxhdGlvbihSZWxhdGlvbiByZWwpOwog ZXh0ZXJuIGJvb2wgaXNfc2NoZW1hX3B1YmxpY2F0aW9uKE9pZCBwdWJpZCk7CiBleHRlcm4gYm9v bCBjaGVja19hbmRfZmV0Y2hfY29sdW1uX2xpc3QoUHVibGljYXRpb24gKnB1YiwgT2lkIHJlbGlk LAotCQkJCQkJCQkJCU1lbW9yeUNvbnRleHQgbWN4dCwgQml0bWFwc2V0ICoqY29scyk7CisJCQkJ CQkJCQkJTWVtb3J5Q29udGV4dCBtY3h0LCBCaXRtYXBzZXQgKipjb2xzLAorCQkJCQkJCQkJCWJv b2wgKmV4Y2VwdF9jb2x1bW5zKTsKIGV4dGVybiBPYmplY3RBZGRyZXNzIHB1YmxpY2F0aW9uX2Fk ZF9yZWxhdGlvbihPaWQgcHViaWQsIFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpLAogCQkJCQkJCQkJ CQkgIGJvb2wgaWZfbm90X2V4aXN0cyk7CiBleHRlcm4gQml0bWFwc2V0ICpwdWJfY29sbGlzdF92 YWxpZGF0ZShSZWxhdGlvbiB0YXJnZXRyZWwsIExpc3QgKmNvbHVtbnMpOwpAQCAtMTkxLDYgKzE5 Miw3IEBAIGV4dGVybiBPYmplY3RBZGRyZXNzIHB1YmxpY2F0aW9uX2FkZF9zY2hlbWEoT2lkIHB1 YmlkLCBPaWQgc2NoZW1haWQsCiBleHRlcm4gQml0bWFwc2V0ICpwdWJfY29sbGlzdF90b19iaXRt YXBzZXQoQml0bWFwc2V0ICpjb2x1bW5zLCBEYXR1bSBwdWJjb2xzLAogCQkJCQkJCQkJCSAgIE1l bW9yeUNvbnRleHQgbWN4dCk7CiBleHRlcm4gQml0bWFwc2V0ICpwdWJfZm9ybV9jb2xzX21hcChS ZWxhdGlvbiByZWxhdGlvbiwKLQkJCQkJCQkJCVB1Ymxpc2hHZW5jb2xzVHlwZSBpbmNsdWRlX2dl bmNvbHNfdHlwZSk7CisJCQkJCQkJCQlQdWJsaXNoR2VuY29sc1R5cGUgaW5jbHVkZV9nZW5jb2xz X3R5cGUsCisJCQkJCQkJCQlCaXRtYXBzZXQgKmV4Y2VwdF9jb2xzKTsKIAogI2VuZGlmCQkJCQkJ CS8qIFBHX1BVQkxJQ0FUSU9OX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHVibGljYXRpb25fcmVsLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9u X3JlbC5oCmluZGV4IGU3ZDdmM2JhODVjLi42YTIxNjhmYzMyYyAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oCkBAIC0zMSwxMSArMzEsMTIgQEAgQ0FUQUxPRyhwZ19w dWJsaWNhdGlvbl9yZWwsNjEwNixQdWJsaWNhdGlvblJlbFJlbGF0aW9uSWQpCiAJT2lkCQkJb2lk OwkJCS8qIG9pZCAqLwogCU9pZAkJCXBycHViaWQgQktJX0xPT0tVUChwZ19wdWJsaWNhdGlvbik7 IC8qIE9pZCBvZiB0aGUgcHVibGljYXRpb24gKi8KIAlPaWQJCQlwcnJlbGlkIEJLSV9MT09LVVAo cGdfY2xhc3MpOwkvKiBPaWQgb2YgdGhlIHJlbGF0aW9uICovCi0JYm9vbAkJcHJleGNlcHQgQktJ X0RFRkFVTFQoZik7CS8qIGV4Y2x1ZGUgdGhlIHJlbGF0aW9uICovCisJYm9vbAkJcHJleGNlcHQg QktJX0RFRkFVTFQoZik7CS8qIGV4Y2x1ZGUgdGhlIHJlbGF0aW9uIG9yIGNvbHVtbnMgKi8KIAog I2lmZGVmCUNBVEFMT0dfVkFSTEVOCQkJLyogdmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBo ZXJlICovCiAJcGdfbm9kZV90cmVlIHBycXVhbDsJCS8qIHF1YWxpZmljYXRpb25zICovCi0JaW50 MnZlY3RvcglwcmF0dHJzOwkJLyogY29sdW1ucyB0byByZXBsaWNhdGUgKi8KKwlpbnQydmVjdG9y CXByYXR0cnM7CQkvKiBjb2x1bW5zIHRvIHJlcGxpY2F0ZSBvciBleGNsdWRlIHRvCisJCQkJCQkJ CSAqIHJlcGxpY2F0ZSAqLwogI2VuZGlmCiB9IEZvcm1EYXRhX3BnX3B1YmxpY2F0aW9uX3JlbDsK IApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAppbmRleCA0OWFmZWI3 NzYyMi4uNjk0MDRjNmFhMWYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cHVibGljYXRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRp b24ub3V0CkBAIC0yMTI1LDYgKzIxMjUsOTQgQEAgU0VUIFJPTEUgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyOwogRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0OwogRFJPUCBUQUJMRSBwdWJf c2NoMS50YmwxOwogRFJPUCBUQUJMRSBwdWJfc2NoMS50YmwyOworLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBUZXN0IEVYQ0VQVCBj b2x1bW5zIGZvciBDUkVBVEUgUFVCTElDQVRJT04KK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0g J0VSUk9SJzsKK0NSRUFURSBUQUJMRSBwdWJfdGVzdF9leGNlcHQxIChhIGludCBOT1QgTlVMTCwg YiBpbnQsIGMgaW50IE5PVCBOVUxMLCBkIGludCk7CitDUkVBVEUgVEFCTEUgcHViX3NjaDEucHVi X3Rlc3RfZXhjZXB0MiAoYSBpbnQsIGIgaW50LCBjIGludCwgZCBpbnQpOworLS0gVmVyaWZ5IHRo YXQgcHVibGljYXRpb24gaXMgY3JlYXRlZCB3aXRoIEVYQ0VQVAorQ1JFQVRFIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZXhjZXB0IEZPUiBUQUJMRSBwdWJfdGVzdF9leGNlcHQxLCBwdWJfc2NoMS5wdWJf dGVzdF9leGNlcHQyIEVYQ0VQVCAoYiwgYyk7CitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9u X3RhYmxlcyBXSEVSRSBwdWJuYW1lID0gJ3Rlc3RwdWJfZXhjZXB0JzsKKyAgICBwdWJuYW1lICAg ICB8IHNjaGVtYW5hbWUgfCAgICB0YWJsZW5hbWUgICAgIHwgYXR0bmFtZXMgIHwgcm93ZmlsdGVy IAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tCisgdGVzdHB1Yl9leGNlcHQgfCBwdWJsaWMgICAgIHwgcHViX3Rl c3RfZXhjZXB0MSB8IHthLGIsYyxkfSB8IAorIHRlc3RwdWJfZXhjZXB0IHwgcHViX3NjaDEgICB8 IHB1Yl90ZXN0X2V4Y2VwdDIgfCB7YSxkfSAgICAgfCAKKygyIHJvd3MpCisKKy0tIENhbm5vdCB1 c2UgRVhDRVBUIGNvbC1saXN0cyBjb21iaW5lZCB3aXRoIFRBQkxFUyBJTiBTQ0hFTUEKK0NSRUFU RSBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdDIgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Nj aDEsIFRBQkxFIHB1Yl90ZXN0X2V4Y2VwdDEgRVhDRVBUIChiLCBjKTsKK0VSUk9SOiAgY2Fubm90 IHVzZSBjb2x1bW4gbGlzdCBmb3IgcmVsYXRpb24gInB1YmxpYy5wdWJfdGVzdF9leGNlcHQxIiBp biBwdWJsaWNhdGlvbiAidGVzdHB1Yl9leGNlcHQyIgorREVUQUlMOiAgQ29sdW1uIGxpc3RzIGNh bm5vdCBiZSBzcGVjaWZpZWQgaW4gcHVibGljYXRpb25zIGNvbnRhaW5pbmcgRk9SIFRBQkxFUyBJ TiBTQ0hFTUEgZWxlbWVudHMuCistLSBTeW50YXggZXJyb3IgRVhDRVBUIHdpdGhvdXQgYSBjb2wt bGlzdAorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0MiBGT1IgVEFCTEUgcHViX3Rl c3RfZXhjZXB0MSBFWENFUFQ7CitFUlJPUjogIHRhYmxlIHdpdGhvdXQgY29sdW1uIGxpc3QgY2Fu bm90IHVzZSBFWENFUFQgY2xhdXNlCitMSU5FIDE6IENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHVi X2V4Y2VwdDIgRk9SIFRBQkxFIHB1Yl90ZXN0X2V4Y2VwdC4uLgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBWZXJpZnkgb2sgLSBBTFRFUiBQVUJM SUNBVElPTiAuLi4gU0VUIC4uLiBFWENFUFQgKGNvbC1saXN0KQorQUxURVIgUFVCTElDQVRJT04g dGVzdHB1Yl9leGNlcHQgU0VUIFRBQkxFIHB1Yl90ZXN0X2V4Y2VwdDEgRVhDRVBUIChhLCBiKSwg cHViX3NjaDEucHViX3Rlc3RfZXhjZXB0MjsKK1xkUnArIHRlc3RwdWJfZXhjZXB0CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9l eGNlcHQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEg cm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCitU YWJsZXM6CisgICAgInB1Yl9zY2gxLnB1Yl90ZXN0X2V4Y2VwdDIiCisgICAgInB1YmxpYy5wdWJf dGVzdF9leGNlcHQxIiBFWENFUFQgKGEsIGIpCisKKy0tIFZlcmlmeSBmYWlscyAtIEFMVEVSIFBV QkxJQ0FUSU9OIC4uLiBEUk9QIC4uLiBFWENFUFQgKGNvbC1saXN0KQorQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1Yl9leGNlcHQgRFJPUCBUQUJMRSBwdWJfdGVzdF9leGNlcHQxIEVYQ0VQVCAoYSwg Yik7CitFUlJPUjogIGNvbHVtbiBsaXN0IG11c3Qgbm90IGJlIHNwZWNpZmllZCBpbiBBTFRFUiBQ VUJMSUNBVElPTiAuLi4gRFJPUAorLS0gVmVyaWZ5IG9rIC0gQUxURVIgUFVCTElDQVRJT04gLi4u IERST1AKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0IERST1AgVEFCTEUgcHViX3Rl c3RfZXhjZXB0MTsKKy0tIFZlcmlmeSBvayAtIEFMVEVSIFBVQkxJQ0FUSU9OIC4uLiBBREQgLi4u IEVYQ0VQVCAoY29sLWxpc3QpCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdCBBREQg VEFCTEUgcHViX3Rlc3RfZXhjZXB0MSBFWENFUFQgKGMsIGQpOworXGRScCsgdGVzdHB1Yl9leGNl cHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlv biB0ZXN0cHViX2V4Y2VwdAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29s dW1ucyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAg ICAgICB8IGYKK1RhYmxlczoKKyAgICAicHViX3NjaDEucHViX3Rlc3RfZXhjZXB0MiIKKyAgICAi cHVibGljLnB1Yl90ZXN0X2V4Y2VwdDEiIEVYQ0VQVCAoYywgZCkKKworLS0gVmVyaWZ5IGZhaWxz IC0gRVhDRVBUIGNvbC1saXN0IGNhbm5vdCBjb250YWluIFJJIGNvbHMgKHdoZW4gdXNpbmcgUkkg RlVMTCkKK0FMVEVSIFRBQkxFIHB1Yl90ZXN0X2V4Y2VwdDEgUkVQTElDQSBJREVOVElUWSBGVUxM OworVVBEQVRFIHB1Yl90ZXN0X2V4Y2VwdDEgU0VUIGEgPSAzIFdIRVJFIGEgPSAxOworRVJST1I6 ICBjYW5ub3QgdXBkYXRlIHRhYmxlICJwdWJfdGVzdF9leGNlcHQxIgorREVUQUlMOiAgQ29sdW1u IGxpc3QgdXNlZCBieSB0aGUgcHVibGljYXRpb24gZG9lcyBub3QgY292ZXIgdGhlIHJlcGxpY2Eg aWRlbnRpdHkuCistLSBWZXJpZnkgZmFpbHMgLSBFWENFUFQgY29sLWxpc3QgY2Fubm90IGNvbnRh aW4gUkkgY29scyAod2hlbiB1c2luZyBJTkRFWCkKK0NSRUFURSBVTklRVUUgSU5ERVggcHViX3Rl c3RfZXhjZXB0MV9hY19pZHggT04gcHViX3Rlc3RfZXhjZXB0MSAoYSwgYyk7CitBTFRFUiBUQUJM RSBwdWJfdGVzdF9leGNlcHQxIFJFUExJQ0EgSURFTlRJVFkgVVNJTkcgSU5ERVggcHViX3Rlc3Rf ZXhjZXB0MV9hY19pZHg7CitVUERBVEUgcHViX3Rlc3RfZXhjZXB0MSBTRVQgYSA9IDMgV0hFUkUg YSA9IDE7CitFUlJPUjogIGNhbm5vdCB1cGRhdGUgdGFibGUgInB1Yl90ZXN0X2V4Y2VwdDEiCitE RVRBSUw6ICBDb2x1bW4gbGlzdCB1c2VkIGJ5IHRoZSBwdWJsaWNhdGlvbiBkb2VzIG5vdCBjb3Zl ciB0aGUgcmVwbGljYSBpZGVudGl0eS4KK0RST1AgSU5ERVggcHViX3Rlc3RfZXhjZXB0MV9hY19p ZHg7CistLSBWZXJpZnkgb2sgLSBubyBjbGFzaCBiZXR3ZWVuIFJJIGNvbHMgYW5kIHRoZSBFWENF UFQgY29sLWxpc3QKK0NSRUFURSBVTklRVUUgSU5ERVggcHViX3Rlc3RfZXhjZXB0MV9hX2lkeCBP TiBwdWJfdGVzdF9leGNlcHQxIChhKTsKK0FMVEVSIFRBQkxFIHB1Yl90ZXN0X2V4Y2VwdDEgUkVQ TElDQSBJREVOVElUWSBVU0lORyBJTkRFWCBwdWJfdGVzdF9leGNlcHQxX2FfaWR4OworVVBEQVRF IHB1Yl90ZXN0X2V4Y2VwdDEgU0VUIGEgPSAzIFdIRVJFIGEgPSAxOworLS0gVmVyaWZ5IGRlc2Ny aXB0aW9uIG9mIGEgdGFibGUgd2l0aCBwdWJsaWNhdGlvbiB3aXRoIEVYQ0VQVCBjb2wtbGlzdAor XGQrIHB1Yl90ZXN0X2V4Y2VwdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUg InB1YmxpYy5wdWJfdGVzdF9leGNlcHQxIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24g fCBOdWxsYWJsZSB8IERlZmF1bHQgfCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRp b24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBhICAgICAgfCBpbnRlZ2Vy IHwgICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAg ICB8IAorIGIgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAg fCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgYyAgICAgIHwgaW50ZWdlciB8ICAgICAgICAg ICB8IG5vdCBudWxsIHwgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBkICAg ICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4gICB8 ICAgICAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAicHViX3Rlc3RfZXhjZXB0MV9hX2lkeCIg VU5JUVVFLCBidHJlZSAoYSkgUkVQTElDQSBJREVOVElUWQorUHVibGljYXRpb25zOgorICAgICJ0 ZXN0cHViX2V4Y2VwdCIgRVhDRVBUIChjLCBkKQorTm90LW51bGwgY29uc3RyYWludHM6CisgICAg InB1Yl90ZXN0X2V4Y2VwdDFfYV9ub3RfbnVsbCIgTk9UIE5VTEwgImEiCisgICAgInB1Yl90ZXN0 X2V4Y2VwdDFfY19ub3RfbnVsbCIgTk9UIE5VTEwgImMiCisKKy0tIGNsZWFudXAKK0RST1AgSU5E RVggcHViX3Rlc3RfZXhjZXB0MV9hX2lkeDsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9leGNl cHQ7CitEUk9QIFRBQkxFIHB1Yl90ZXN0X2V4Y2VwdDE7CitEUk9QIFRBQkxFIHB1Yl9zY2gxLnB1 Yl90ZXN0X2V4Y2VwdDI7CiBEUk9QIFNDSEVNQSBwdWJfc2NoMTsKIFJFU0VUIGNsaWVudF9taW5f bWVzc2FnZXM7CiBSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9w dWJsaWNhdGlvbi5zcWwKaW5kZXggNjI0MGNkOTdjZTMuLmJmNjRlOGEzY2UxIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcHVibGljYXRpb24uc3FsCkBAIC0xMzE4LDYgKzEzMTgsNjEgQEAgU0VUIFJPTEUg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyOwogRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0 OwogRFJPUCBUQUJMRSBwdWJfc2NoMS50YmwxOwogRFJPUCBUQUJMRSBwdWJfc2NoMS50YmwyOwor CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tIFRlc3QgRVhDRVBUIGNvbHVtbnMgZm9yIENSRUFURSBQVUJMSUNBVElPTgorCitTRVQg Y2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgVEFCTEUgcHViX3Rlc3RfZXhj ZXB0MSAoYSBpbnQgTk9UIE5VTEwsIGIgaW50LCBjIGludCBOT1QgTlVMTCwgZCBpbnQpOworQ1JF QVRFIFRBQkxFIHB1Yl9zY2gxLnB1Yl90ZXN0X2V4Y2VwdDIgKGEgaW50LCBiIGludCwgYyBpbnQs IGQgaW50KTsKKworLS0gVmVyaWZ5IHRoYXQgcHVibGljYXRpb24gaXMgY3JlYXRlZCB3aXRoIEVY Q0VQVAorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0IEZPUiBUQUJMRSBwdWJfdGVz dF9leGNlcHQxLCBwdWJfc2NoMS5wdWJfdGVzdF9leGNlcHQyIEVYQ0VQVCAoYiwgYyk7CitTRUxF Q1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3RhYmxlcyBXSEVSRSBwdWJuYW1lID0gJ3Rlc3RwdWJf ZXhjZXB0JzsKKworLS0gQ2Fubm90IHVzZSBFWENFUFQgY29sLWxpc3RzIGNvbWJpbmVkIHdpdGgg VEFCTEVTIElOIFNDSEVNQQorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0MiBGT1Ig VEFCTEVTIElOIFNDSEVNQSBwdWJfc2NoMSwgVEFCTEUgcHViX3Rlc3RfZXhjZXB0MSBFWENFUFQg KGIsIGMpOworCistLSBTeW50YXggZXJyb3IgRVhDRVBUIHdpdGhvdXQgYSBjb2wtbGlzdAorQ1JF QVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0MiBGT1IgVEFCTEUgcHViX3Rlc3RfZXhjZXB0 MSBFWENFUFQ7CisKKy0tIFZlcmlmeSBvayAtIEFMVEVSIFBVQkxJQ0FUSU9OIC4uLiBTRVQgLi4u IEVYQ0VQVCAoY29sLWxpc3QpCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdCBTRVQg VEFCTEUgcHViX3Rlc3RfZXhjZXB0MSBFWENFUFQgKGEsIGIpLCBwdWJfc2NoMS5wdWJfdGVzdF9l eGNlcHQyOworXGRScCsgdGVzdHB1Yl9leGNlcHQKKworLS0gVmVyaWZ5IGZhaWxzIC0gQUxURVIg UFVCTElDQVRJT04gLi4uIERST1AgLi4uIEVYQ0VQVCAoY29sLWxpc3QpCitBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX2V4Y2VwdCBEUk9QIFRBQkxFIHB1Yl90ZXN0X2V4Y2VwdDEgRVhDRVBUIChh LCBiKTsKKworLS0gVmVyaWZ5IG9rIC0gQUxURVIgUFVCTElDQVRJT04gLi4uIERST1AKK0FMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0IERST1AgVEFCTEUgcHViX3Rlc3RfZXhjZXB0MTsK KworLS0gVmVyaWZ5IG9rIC0gQUxURVIgUFVCTElDQVRJT04gLi4uIEFERCAuLi4gRVhDRVBUIChj b2wtbGlzdCkKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0IEFERCBUQUJMRSBwdWJf dGVzdF9leGNlcHQxIEVYQ0VQVCAoYywgZCk7CitcZFJwKyB0ZXN0cHViX2V4Y2VwdAorCistLSBW ZXJpZnkgZmFpbHMgLSBFWENFUFQgY29sLWxpc3QgY2Fubm90IGNvbnRhaW4gUkkgY29scyAod2hl biB1c2luZyBSSSBGVUxMKQorQUxURVIgVEFCTEUgcHViX3Rlc3RfZXhjZXB0MSBSRVBMSUNBIElE RU5USVRZIEZVTEw7CitVUERBVEUgcHViX3Rlc3RfZXhjZXB0MSBTRVQgYSA9IDMgV0hFUkUgYSA9 IDE7CisKKy0tIFZlcmlmeSBmYWlscyAtIEVYQ0VQVCBjb2wtbGlzdCBjYW5ub3QgY29udGFpbiBS SSBjb2xzICh3aGVuIHVzaW5nIElOREVYKQorQ1JFQVRFIFVOSVFVRSBJTkRFWCBwdWJfdGVzdF9l eGNlcHQxX2FjX2lkeCBPTiBwdWJfdGVzdF9leGNlcHQxIChhLCBjKTsKK0FMVEVSIFRBQkxFIHB1 Yl90ZXN0X2V4Y2VwdDEgUkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRFWCBwdWJfdGVzdF9leGNl cHQxX2FjX2lkeDsKK1VQREFURSBwdWJfdGVzdF9leGNlcHQxIFNFVCBhID0gMyBXSEVSRSBhID0g MTsKK0RST1AgSU5ERVggcHViX3Rlc3RfZXhjZXB0MV9hY19pZHg7CisKKy0tIFZlcmlmeSBvayAt IG5vIGNsYXNoIGJldHdlZW4gUkkgY29scyBhbmQgdGhlIEVYQ0VQVCBjb2wtbGlzdAorQ1JFQVRF IFVOSVFVRSBJTkRFWCBwdWJfdGVzdF9leGNlcHQxX2FfaWR4IE9OIHB1Yl90ZXN0X2V4Y2VwdDEg KGEpOworQUxURVIgVEFCTEUgcHViX3Rlc3RfZXhjZXB0MSBSRVBMSUNBIElERU5USVRZIFVTSU5H IElOREVYIHB1Yl90ZXN0X2V4Y2VwdDFfYV9pZHg7CitVUERBVEUgcHViX3Rlc3RfZXhjZXB0MSBT RVQgYSA9IDMgV0hFUkUgYSA9IDE7CisKKy0tIFZlcmlmeSBkZXNjcmlwdGlvbiBvZiBhIHRhYmxl IHdpdGggcHVibGljYXRpb24gd2l0aCBFWENFUFQgY29sLWxpc3QKK1xkKyBwdWJfdGVzdF9leGNl cHQxCisKKy0tIGNsZWFudXAKK0RST1AgSU5ERVggcHViX3Rlc3RfZXhjZXB0MV9hX2lkeDsKK0RS T1AgUFVCTElDQVRJT04gdGVzdHB1Yl9leGNlcHQ7CitEUk9QIFRBQkxFIHB1Yl90ZXN0X2V4Y2Vw dDE7CitEUk9QIFRBQkxFIHB1Yl9zY2gxLnB1Yl90ZXN0X2V4Y2VwdDI7CiBEUk9QIFNDSEVNQSBw dWJfc2NoMTsKIAogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNv bi5idWlsZAppbmRleCBlOGExMTdmMzQyMS4uZTAxMGRlMWUxZDAgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24v bWVzb24uYnVpbGQKQEAgLTQzLDYgKzQzLDcgQEAgdGVzdHMgKz0gewogICAgICAgJ3QvMDM0X3Rl bXBvcmFsLnBsJywKICAgICAgICd0LzAzNV9jb25mbGljdHMucGwnLAogICAgICAgJ3QvMDM2X3Jl cF9jaGFuZ2VzX2V4Y2VwdF90YWJsZS5wbCcsCisgICAgICAndC8wMzdfcmVwX2NoYW5nZXNfZXhj ZXB0X2NvbGxpc3QucGwnLAogICAgICAgJ3QvMTAwX2J1Z3MucGwnLAogICAgIF0sCiAgIH0sCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfcmVwX2NoYW5nZXNfZXhjZXB0 X2NvbGxpc3QucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfcmVwX2NoYW5nZXNfZXhj ZXB0X2NvbGxpc3QucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjc5 ZTYzYzBmNDQ5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3 X3JlcF9jaGFuZ2VzX2V4Y2VwdF9jb2xsaXN0LnBsCkBAIC0wLDAgKzEsMTkwIEBACisjIENvcHly aWdodCAoYykgMjAyMS0yMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAor CisjIExvZ2ljYWwgcmVwbGljYXRpb24gdGVzdHMgZm9yIEVYQ0VQVCAoY29sdW1uLWxpc3QpIHB1 YmxpY2F0aW9ucwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBQb3N0Z3JlU1FMOjpU ZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1v cmU7CisKKyMgSW5pdGlhbGl6ZSBwdWJsaXNoZXIgbm9kZQorbXkgJG5vZGVfcHVibGlzaGVyID0g UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKKyRub2RlX3B1Ymxp c2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9wdWJsaXNo ZXItPnN0YXJ0OworCisjIENyZWF0ZSBzdWJzY3JpYmVyIG5vZGUKK215ICRub2RlX3N1YnNjcmli ZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKKyRub2Rl X3N1YnNjcmliZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworJG5vZGVf c3Vic2NyaWJlci0+c3RhcnQ7CisKKyMgSW5pdGlhbCBzZXR1cAorJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEgKAorCUNSRUFURSBTQ0hFTUEgc2NoMTsKKwlDUkVB VEUgVEFCTEUgdGFiMSAoYSBpbnQsIGIgaW50IE5PVCBOVUxMLCBjIGludCk7CisJQ1JFQVRFIFRB QkxFIHNjaDEudGFiMSAoYSBpbnQsIGIgaW50LCBjIGludCk7CisJQ1JFQVRFIFRBQkxFIHRhYjIg KGEgaW50LCBiIGludCwgYyBpbnQpOworCUNSRUFURSBUQUJMRSB0YWIzIChhIGludCwgYmdlbiBp bnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDIpIFNUT1JFRCwgY2dlbiBpbnQgR0VORVJBVEVE IEFMV0FZUyBBUyAoYSAqIDMpIFNUT1JFRCk7CisJQ1JFQVRFIFRBQkxFIHRhYjQgKGEgaW50LCBi Z2VuIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMikgU1RPUkVELCBjZ2VuIGludCBHRU5F UkFURUQgQUxXQVlTIEFTIChhICogMykgU1RPUkVEKTsKKwlDUkVBVEUgVEFCTEUgdGFiNSAoYSBp bnQsIGIgaW50LCBjIGludCk7CisJQ1JFQVRFIFRBQkxFIHRhYjYgKGFnZW4gaW50IEdFTkVSQVRF RCBBTFdBWVMgQVMgKDEpIFNUT1JFRCwgYmdlbiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoMikg U1RPUkVEKTsKKwlJTlNFUlQgSU5UTyB0YWIxIFZBTFVFUyAoMSwgMiwgMyk7CisJSU5TRVJUIElO VE8gc2NoMS50YWIxIFZBTFVFUyAoMSwgMiwgMyk7CisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9w dWJfY29sIEZPUiBUQUJMRSB0YWIxIEVYQ0VQVCAoYSksIHNjaDEudGFiMSBFWENFUFQgKGIsIGMp OworKSk7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSAo CisJQ1JFQVRFIFNDSEVNQSBzY2gxOworCUNSRUFURSBUQUJMRSB0YWIxIChhIGludCwgYiBpbnQg Tk9UIE5VTEwsIGMgaW50KTsKKwlDUkVBVEUgVEFCTEUgc2NoMS50YWIxIChhIGludCwgYiBpbnQs IGMgaW50KTsKKwlDUkVBVEUgVEFCTEUgdGFiMiAoYSBpbnQsIGIgaW50LCBjIGludCk7CisJQ1JF QVRFIFRBQkxFIHRhYjMgKGEgaW50LCBiZ2VuIGludCwgY2dlbiBpbnQpOworCUNSRUFURSBUQUJM RSB0YWI0IChhIGludCwgYmdlbiBpbnQsIGNnZW4gaW50KTsKKwlDUkVBVEUgVEFCTEUgdGFiNSAo YSBpbnQsIGIgaW50LCBjIGludCwgZCBpbnQpOworCUNSRUFURSBUQUJMRSB0YWI2IChhZ2VuIGlu dCwgYmdlbiBpbnQpOworKSk7CisKKyMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbgorbXkgJHB1 Ymxpc2hlcl9jb25uc3RyID0gJG5vZGVfcHVibGlzaGVyLT5jb25uc3RyIC4gJyBkYm5hbWU9cG9z dGdyZXMnOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFU RSBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9jb2wgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3Ry JyBQVUJMSUNBVElPTiB0YXBfcHViX2NvbCIKKyk7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zv cl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICd0YXBfc3ViX2NvbCcpOworCisj IFRlc3QgaW5pdGlhbCBzeW5jCitteSAkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHRhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKHwy fDMpLAorCSdjaGVjayBpbml0aWFsIHN5bmMgZm9yIEVYQ0VQVCAoY29sdW1uLWxpc3QpIHB1Ymxp Y2F0aW9uJyk7CiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJTRUxFQ1QgKiBGUk9NIHNjaDEudGFiMSIpOworaXMoJHJlc3VsdCwgcXEoMXx8KSwKKwkn Y2hlY2sgaW5pdGlhbCBzeW5jIGZvciBFWENFUFQgKGNvbHVtbi1saXN0KSBwdWJsaWNhdGlvbicp OworCisjIFRlc3QgaW5jcmVtZW50YWwgY2hhbmdlcworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoCisJJ3Bvc3RncmVzJywgcXEgKAorCUlOU0VSVCBJTlRPIHRhYjEgVkFMVUVTICg0LCA1LCA2 KTsKKwlJTlNFUlQgSU5UTyBzY2gxLnRhYjEgVkFMVUVTICg0LCA1LCA2KTsKKykpOworJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX2NvbCcpOworJHJlc3VsdCA9Cisg ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSB0 YWIxIE9SREVSIEJZIGEiKTsKK2lzKCAkcmVzdWx0LCBxcSh8MnwzCit8NXw2KSwKKwknY2hlY2sg aW5jcmVtZW50YWwgaW5zZXJ0IGZvciBFWENFUFQgKGNvbHVtbi1saXN0KSBwdWJsaWNhdGlvbicp OworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJT RUxFQ1QgKiBGUk9NIHNjaDEudGFiMSBPUkRFUiBCWSBhIik7CitpcyggJHJlc3VsdCwgcXEoMXx8 Cis0fHwpLCAnY2hlY2sgaW5jcmVtZW50YWwgaW5zZXJ0IGZvciBFWENFUFQgKGNvbHVtbi1saXN0 KSBwdWJsaWNhdGlvbicpOworCisjIFRlc3QgZm9yIHVwZGF0ZQorJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBVTklRVUUgSU5ERVggYl9pZHgg T04gdGFiMSAoYik7CisJQUxURVIgVEFCTEUgdGFiMSBSRVBMSUNBIElERU5USVRZIFVTSU5HIElO REVYIGJfaWR4OworKSk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMn LCBxcSgKKwlDUkVBVEUgVU5JUVVFIElOREVYIGJfaWR4IE9OIHRhYjEgKGIpOworCUFMVEVSIFRB QkxFIHRhYjEgUkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRFWCBiX2lkeDsKKwlVUERBVEUgdGFi MSBTRVQgYSA9IDk5MSwgYiA9IDk5MiwgYyA9IDk5MyBXSEVSRSBhID0gMTsKKykpOworJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX2NvbCcpOworJHJlc3VsdCA9Cisg ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSB0 YWIxICBPUkRFUiBCWSBhIik7CitpcyggJHJlc3VsdCwgcXEofDV8NgorfDk5Mnw5OTMpLAorCSdj aGVjayB1cGRhdGUgZm9yIEVYQ0VQVCAoY29sdW1uLWxpc3QpIHB1YmxpY2F0aW9uJyk7CisKKyMg VGVzdCBBTFRFUiBQVUJMSUNBVElPTiBmb3IgRVhDRVBUIChjb2x1bW4tbGlzdCkKKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFBVQkxJQ0FUSU9OIHRhcF9w dWJfY29sIEFERCBUQUJMRSB0YWIyIEVYQ0VQVChiKSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX2NvbCBSRUZS RVNIIFBVQkxJQ0FUSU9OIik7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRp b25fc3luYygkbm9kZV9wdWJsaXNoZXIsICd0YXBfc3ViX2NvbCcpOworCiskbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGFiMiBWQUxVRVMgKDEsIDIs IDMpIik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWJfY29sJyk7 CiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxF Q1QgKiBGUk9NIHRhYjIiKTsKK2lzKCRyZXN1bHQsIHFxKDF8fDMpLCAnY2hlY2sgYWx0ZXIgcHVi bGljYXRpb24gd2l0aCBFWENFUFQgKGNvbHVtbi1saXN0KScpOworCisjIFRlc3QgZm9yIHB1Ymxp Y2F0aW9uIGNyZWF0ZWQgd2l0aCAncHVibGlzaF9nZW5lcmF0ZWRfY29sdW1ucycgYXMgJ3N0b3Jl ZCcgb24KKyMgdGFibGUgJ3RhYjMnIGFuZCB3aXRoIGNvbHVtbiAnYmdlbicgaW4gY29sdW1uIGxp c3Qgd2l0aCBFWENFUFQgY2xhdXNlLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bv c3RncmVzJywgcXEoSU5TRVJUIElOVE8gdGFiMyBWQUxVRVMgKDEpOworCUFMVEVSIFBVQkxJQ0FU SU9OIHRhcF9wdWJfY29sIFNFVCAocHVibGlzaF9nZW5lcmF0ZWRfY29sdW1ucyA9IHN0b3JlZCk7 CisJQUxURVIgUFVCTElDQVRJT04gdGFwX3B1Yl9jb2wgU0VUIFRBQkxFIHRhYjMgRVhDRVBUKGJn ZW4pOworKSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxU RVIgU1VCU0NSSVBUSU9OIHRhcF9zdWJfY29sIFJFRlJFU0ggUFVCTElDQVRJT04iKTsKKyRub2Rl X3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwg J3RhcF9zdWJfY29sJyk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJJTlNFUlQgSU5UTyB0YWIzIFZBTFVFUyAoMikiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgndGFwX3N1Yl9jb2wnKTsKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gdGFiMyBPUkRFUiBCWSBhIik7 CisKKyMgY29sdW1uICdiZ2VuJyBpcyBzcGVjaWZpZWQgaW4gRVhDRVBUIChjb2x1bW0tbGlzdCku IFNvIGRhdGEgY29ycmVzcG9uZGluZyB0bworIyAnYmdlbicgaXMgbm90IHJlcGxpY2F0ZWQuIFBh cmFtZXRlciAncHVibGlzaF9nZW5lcmF0ZWRfY29sdW1ucycgaXMgc2V0IGFzCisjICdzdG9yZWQn LCBzbyBkYXRhIGNvcnJlc3BvbmRpbmcgdG8gY29sdW1uICdjZ2VuJyBpcyByZXBsaWNhdGVkLgor aXMoICRyZXN1bHQsIHFxKDF8fDMKKzJ8fDYpLAorCSdjaGVjayBwdWJsaWNhdGlvbihwdWJsaXNo X2dlbmVyYXRlZF9jb2x1bW5zIGFzIHN0b3JlZCkgd2l0aCBnZW5lcmF0ZWQgY29sdW1ucyBhbmQg RVhDRVBUIChjb2x1bW4tbGlzdCknCispOworCisjIFRlc3QgZm9yIHB1YmxpY2F0aW9uIGNyZWF0 ZWQgd2l0aCAncHVibGlzaF9nZW5lcmF0ZWRfY29sdW1ucycgYXMgJ25vbmUnIG9uCisjIHRhYmxl IHdpdGggZ2VuZXJhdGVkIGNvbHVtbnMgYW5kIGNvbHVtbiBsaXN0IHNwZWNpZmllZCB3aXRoIEVY Q0VQVCBjbGF1c2UuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBx cSgKKwlJTlNFUlQgSU5UTyB0YWI0IFZBTFVFUyAoMSk7CisJQUxURVIgUFVCTElDQVRJT04gdGFw X3B1Yl9jb2wgU0VUIChwdWJsaXNoX2dlbmVyYXRlZF9jb2x1bW5zID0gbm9uZSk7CisJQUxURVIg UFVCTElDQVRJT04gdGFwX3B1Yl9jb2wgU0VUIFRBQkxFIHRhYjQgRVhDRVBUKGJnZW4pOworKSk7 Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NS SVBUSU9OIHRhcF9zdWJfY29sIFJFRlJFU0ggUFVCTElDQVRJT04iKTsKKyRub2RlX3N1YnNjcmli ZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJ3RhcF9zdWJf Y29sJyk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQg SU5UTyB0YWI0IFZBTFVFUyAoMikiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgndGFwX3N1Yl9jb2wnKTsKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gdGFiNCBPUkRFUiBCWSBhIik7CisKKyMgY29s dW1uICdiZ2VuJyBpcyBzcGVjaWZpZWQgaW4gRVhDRVBUIChjb2x1bW0tbGlzdCkuIFNvIGRhdGEg Y29ycmVzcG9uZGluZyB0bworIyAnYmdlbicgaXMgbm90IHJlcGxpY2F0ZWQuIFBhcmFtZXRlciAn cHVibGlzaF9nZW5lcmF0ZWRfY29sdW1ucycgaXMgc2V0IGFzCisjICdub25lJywgc28gZGF0YSBj b3JyZXNwb25kaW5nIHRvIGNvbHVtbiAnY2dlbicgaXMgbm90IHJlcGxpY2F0ZWQuCitpcyggJHJl c3VsdCwgcXEoMXx8CisyfHwpLAorCSdjaGVjayBwdWJsaWNhdGlvbihwdWJsaXNoX2dlbmVyYXRl ZF9jb2x1bW5zIGFzIG5vbmUpIHdpdGggZ2VuZXJhdGVkIGNvbHVtbnMgYW5kIEVYQ0VQVCAoY29s dW1uLWxpc3QpJworKTsKKworIyBBbGwgY29sdW1ucyBhcmUgcHJlc2VudCBpbiBFWENFUFQgKGNv bHVtbi1saXN0KQorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEo CisJQUxURVIgUFVCTElDQVRJT04gdGFwX3B1Yl9jb2wgU0VUIFRBQkxFIHRhYjUgRVhDRVBUKGEs IGIsIGMpOworCUlOU0VSVCBJTlRPIHRhYjUgVkFMVUVTICgxLCAyLCAzKTsKKykpOworJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0 YXBfc3ViX2NvbCBSRUZSRVNIIFBVQkxJQ0FUSU9OIik7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0 X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICd0YXBfc3ViX2NvbCcpOwor Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGFi NSBWQUxVRVMgKDQsIDUsIDYpIik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo J3RhcF9zdWJfY29sJyk7CiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHRhYjUiKTsKK2lzKCRyZXN1bHQsIHFxKCksICdhbGwg Y29sdW1ucyBhcmUgc3BlY2lmaWVkIGluIEVYQ0VQVCAoY29sdW1uLWxpc3QpJyk7CisKKyMgQWRk IGEgbmV3IGNvbHVtbiBhbmQgY2hlY2sgdGhhdCBpdCBpcyByZXBsaWNhdGVkCiskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlBTFRFUiBUQUJMRSB0YWI1IEFE RCBDT0xVTU4gZCBpbnQ7CispKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIklOU0VSVCBJTlRPIHRhYjUgVkFMVUVTICg3LCA4LCA5LCAxMCkiKTsKKyRub2RlX3B1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1Yl9jb2wnKTsKKworJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSB0YWI1 Iik7CitpcygkcmVzdWx0LCBxcSh8fHwxMCksICduZXdseSBhZGRlZCBjb2x1bW4gYXJlIGlzIHJl cGxpY2F0ZWQnKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c3RvcCgnZmFzdCcpOworJG5vZGVfcHVi bGlzaGVyLT5zdG9wKCdmYXN0Jyk7CisKK2RvbmVfdGVzdGluZygpOwotLSAKMi4zNC4xCgo= --000000000000159f6f063c3bb0bd Content-Type: application/octet-stream; name="v20-0002-Skip-publishing-the-tables-specified-in-EXCEPT-T.patch" Content-Disposition: attachment; filename="v20-0002-Skip-publishing-the-tables-specified-in-EXCEPT-T.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_me9qwvzs1 RnJvbSAyMzUxMmIzNDZkMTNiYjlmMWJiZmYyZDllNWU0MzM1N2VkYjFhNTUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMjIgSnVsIDIwMjUgMDA6MzM6NTUgKzA1MzAKU3ViamVjdDogW1BBVENIIHYy MCAyLzNdIFNraXAgcHVibGlzaGluZyB0aGUgdGFibGVzIHNwZWNpZmllZCBpbiBFWENFUFQgVEFC TEUuCgpBIG5ldyAiRVhDRVBUIFRBQkxFIiBjbGF1c2UgZm9yIENSRUFURS9BTFRFUiBQVUJMSUNB VElPTiBhbGxvd3Mgb25lIG9yCm1vcmUgdGFibGVzIHRvIGJlIGV4Y2x1ZGVkLiBUaGUgcHVibGlz aGVyIHdpbGwgbm90IHNlbmQgdGhlIGRhdGEgb2YKZXhjbHVkZWQgdGFibGVzIHRvIHRoZSBzdWJz Y3JpYmVyLgoKVGhlIG5ldyBzeW50YXggYWxsb3dzIHNwZWNpZnlpbmcgZXhjbHVkZWQgcmVsYXRp b25zIHdoZW4gY3JlYXRpbmcgb3IgYWx0ZXJpbmcKYSBwdWJsaWNhdGlvbi4gRm9yIGV4YW1wbGU6 CkNSRUFURSBQVUJMSUNBVElPTiBwdWIxIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSB0MSx0 MjsKb3IKQUxURVIgUFVCTElDQVRJT04gcHViMSBBREQgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUg dDEsdDI7CgpBIG5ldyBjb2x1bW4gInByZXhjZXB0IiBpcyBhZGRlZCB0byB0YWJsZSAicGdfcHVi bGljYXRpb25fcmVsIiwgdG8gbWFpbnRhaW4KdGhlIHJlbGF0aW9ucyB0aGF0IHRoZSB1c2VyIHdh bnRzIHRvIGV4Y2x1ZGUgZnJvbSB0aGUgcHVibGljYXRpb25zLgoKcGdfZHVtcCBpcyB1cGRhdGVk IHRvIGlkZW50aWZ5IGFuZCBkdW1wIHRoZSBleGNsdWRlZCB0YWJsZXMgb2YgdGhlIHB1YmxpY2F0 aW9ucy4KClRoZSBwc3FsIFxkIGZhbWlseSBvZiBjb21tYW5kcyBjYW4gbm93IGRpc3BsYXkgZXhj bHVkZWQgdGFibGVzLiBlLmcuIHBzcWwKXGRScCsgdmFyaWFudCB3aWxsIG5vdyBkaXNwbGF5IGFz c29jaWF0ZWQgImV4Y2VwdCB0YWJsZXMiIGlmIGFueS4KCkJ1bXAgY2F0YWxvZyB2ZXJzaW9uLgot LS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAgICB8ICAgOSAr CiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAgICAgfCAgIDggKy0K IGRvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbCAgICAgICB8ICAyMiArLQog ZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbCAgICAgIHwgIDQ5ICsrKy0K IGRvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbCAgICAgICAgICAgICAgICB8ICAgNSArLQog c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jICAgICAgICAgIHwgIDk3ICsrKysr LS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyAgICAgICAgfCAyMTUg KysrKysrKysrKysrKystLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAg ICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAg ICAgICAgICB8ICA0MSArKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291 dHB1dC5jICAgfCAgMjUgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgICAg ICAgICAgICB8ICAxNyArLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAg ICAgICAgIHwgIDU1ICsrKystCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oICAgICAgICAgICAg ICAgICAgICAgfCAgIDEgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jICAgICAgICAg ICAgICAgIHwgIDE4ICsrCiBzcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCAgICAgICAg ICAgICAgfCAgMjAgKysKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgICAgICAg ICAgICB8ICA1OCArKysrLQogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICAgICAg ICAgICAgIHwgIDE1ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmggICAg ICAgICAgfCAgMTAgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25fcmVsLmgg ICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuaCAgICAg ICAgfCAgIDUgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgICAg ICB8ICAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCAgICAg fCAgODkgKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCAgICAg ICAgICB8ICA0NSArKystCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQgICAgICAg ICAgICAgfCAgIDEgKwogLi4uL3QvMDM2X3JlcF9jaGFuZ2VzX2V4Y2VwdF90YWJsZS5wbCAgICAg ICAgIHwgMTg2ICsrKysrKysrKysrKysrKwogMjUgZmlsZXMgY2hhbmdlZCwgODU4IGluc2VydGlv bnMoKyksIDE0MCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMzZfcmVwX2NoYW5nZXNfZXhjZXB0X3RhYmxlLnBsCgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApp bmRleCBkYThhNzg4MjU4MC4uZTk2YTU1ZmVjZjkgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9j YXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC02NTY4LDYg KzY1NjgsMTUgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3Vu dCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKICAgICAgIGlmIHRoZXJlIGlzIG5v IHB1YmxpY2F0aW9uIHF1YWxpZnlpbmcgY29uZGl0aW9uLjwvcGFyYT48L2VudHJ5PgogICAgICA8 L3Jvdz4KIAorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50 cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgIDxzdHJ1Y3RmaWVsZD5w cmV4Y2VwdDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJvb2w8L3R5cGU+CisgICAgICA8L3BhcmE+Cisg ICAgICA8cGFyYT4KKyAgICAgICBUcnVlIGlmIHRoZSByZWxhdGlvbiBtdXN0IGJlIGV4Y2x1ZGVk CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAg IDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVm aW5pdGlvbiI+CiAgICAgICAgPHN0cnVjdGZpZWxkPnByYXR0cnM8L3N0cnVjdGZpZWxkPiA8dHlw ZT5pbnQydmVjdG9yPC90eXBlPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVw bGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5k ZXggYTA3NjFjZmVlM2YuLjQxNGEzMTRhY2M1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9n aWNhbC1yZXBsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0 aW9uLnNnbWwKQEAgLTIyOTksMTAgKzIyOTksMTAgQEAgQ09OVEVYVDogIHByb2Nlc3NpbmcgcmVt b3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAiSU5TRVIK ICAgPC9wYXJhPgogCiAgIDxwYXJhPgotICAgVG8gYWRkIHRhYmxlcyB0byBhIHB1YmxpY2F0aW9u LCB0aGUgdXNlciBtdXN0IGhhdmUgb3duZXJzaGlwIHJpZ2h0cyBvbiB0aGUKLSAgIHRhYmxlLiBU byBhZGQgYWxsIHRhYmxlcyBpbiBzY2hlbWEgdG8gYSBwdWJsaWNhdGlvbiwgdGhlIHVzZXIgbXVz dCBiZSBhCi0gICBzdXBlcnVzZXIuIFRvIGNyZWF0ZSBhIHB1YmxpY2F0aW9uIHRoYXQgcHVibGlz aGVzIGFsbCB0YWJsZXMgb3IgYWxsIHRhYmxlcyBpbgotICAgc2NoZW1hIGF1dG9tYXRpY2FsbHks IHRoZSB1c2VyIG11c3QgYmUgYSBzdXBlcnVzZXIuCisgICBUbyBjcmVhdGUgYSBwdWJsaWNhdGlv biB1c2luZyBGT1IgQUxMIFRBQkxFUyBvciBGT1IgQUxMIFRBQkxFUyBJTiBTQ0hFTUEsCisgICB0 aGUgdXNlciBtdXN0IGJlIGEgc3VwZXJ1c2VyLiBUbyBhZGQgQUxMIFRBQkxFUyBvciBBTEwgVEFC TEVTIElOIFNDSEVNQSB0byBhCisgICBwdWJsaWNhdGlvbiwgdGhlIHVzZXIgbXVzdCBiZSBhIHN1 cGVydXNlci4gVG8gYWRkIHRhYmxlcyB0byBhIHB1YmxpY2F0aW9uLAorICAgdGhlIHVzZXIgbXVz dCBoYXZlIG93bmVyc2hpcCByaWdodHMgb24gdGhlIHRhYmxlLgogICA8L3BhcmE+CiAKICAgPHBh cmE+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwKaW5kZXggMTc4ZjM5ZDk1 NzUuLjM4YjQ2NTczNzhhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1Ymxp Y2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21s CkBAIC0yMiw2ICsyMiw3IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogIDxyZWZzeW5vcHNp c2Rpdj4KIDxzeW5vcHNpcz4KIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gQUREIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wdWJsaWNhdGlvbl9vYmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCitBTFRFUiBQ VUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFi bGU+IEFERCBBTEwgVEFCTEVTIFsgRVhDRVBUIFsgVEFCTEUgXSA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+ZXhjZXB0aW9uX29iamVjdDwvcmVwbGFjZWFibGU+IFssIC4uLiBdIF0KIEFM VEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBs YWNlYWJsZT4gU0VUIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9v YmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCiBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IERST1AgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX29iamVjdDwvcmVwbGFjZWFibGU+IFssIC4u Ll0KIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1l PC9yZXBsYWNlYWJsZT4gU0VUICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1Ymxp Y2F0aW9uX3BhcmFtZXRlcjwvcmVwbGFjZWFibGU+IFs9IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+XSBbLCAuLi4gXSApCkBAIC0zMyw2ICszNCwxMSBA QCBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwv cmVwbGFjZWFibGU+IFJFU0VUCiAKICAgICBUQUJMRSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsgKCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4g XSApIF0gWyBXSEVSRSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9u PC9yZXBsYWNlYWJsZT4gKSBdIFssIC4uLiBdCiAgICAgVEFCTEVTIElOIFNDSEVNQSB7IDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zY2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IHwgQ1VS UkVOVF9TQ0hFTUEgfSBbLCAuLi4gXQorCis8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5leGNlcHRpb25fb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+ CisKKyAgICBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFt ZTwvcmVwbGFjZWFibGU+IFsgKiBdCisKIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4K IApAQCAtODgsOCArOTQsOSBAQCBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFU0VUCiAKICAgPHBhcmE+CiAgICBZb3Ug bXVzdCBvd24gdGhlIHB1YmxpY2F0aW9uIHRvIHVzZSA8Y29tbWFuZD5BTFRFUiBQVUJMSUNBVElP TjwvY29tbWFuZD4uCi0gICBBZGRpbmcgYSB0YWJsZSB0byBhIHB1YmxpY2F0aW9uIGFkZGl0aW9u YWxseSByZXF1aXJlcyBvd25pbmcgdGhhdCB0YWJsZS4KLSAgIFRoZSA8bGl0ZXJhbD5BREQgVEFC TEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4sCisgICBBZGRpbmcgYSB0YWJsZSB0byBvciBleGNsdWRp bmcgYSB0YWJsZSBmcm9tIGEgcHVibGljYXRpb24gYWRkaXRpb25hbGx5CisgICByZXF1aXJlcyBv d25pbmcgdGhhdCB0YWJsZS4gVGhlIDxsaXRlcmFsPkFERCBBTEwgVEFCTEVTPC9saXRlcmFsPiwK KyAgIDxsaXRlcmFsPkFERCBBTEwgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4sCiAgICA8bGl0 ZXJhbD5TRVQgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4gdG8gYSBwdWJsaWNhdGlvbiBhbmQK ICAgIDxsaXRlcmFsPlJFU0VUPC9saXRlcmFsPiBvZiBwdWJsaWNhdGlvbiByZXF1aXJlcyB0aGUg aW52b2tpbmcgdXNlciB0byBiZSBhCiAgICBzdXBlcnVzZXIuIFRvIGFsdGVyIHRoZSBvd25lciwg eW91IG11c3QgYmUgYWJsZSB0bwpAQCAtMTI5LDcgKzEzNiw4IEBAIEFMVEVSIFBVQkxJQ0FUSU9O IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVTRVQK ICAgICAgIHRhYmxlIG5hbWUsIG9ubHkgdGhhdCB0YWJsZSBpcyBhZmZlY3RlZC4gIElmIDxsaXRl cmFsPk9OTFk8L2xpdGVyYWw+IGlzIG5vdAogICAgICAgc3BlY2lmaWVkLCB0aGUgdGFibGUgYW5k IGFsbCBpdHMgZGVzY2VuZGFudCB0YWJsZXMgKGlmIGFueSkgYXJlCiAgICAgICBhZmZlY3RlZC4g IE9wdGlvbmFsbHksIDxsaXRlcmFsPio8L2xpdGVyYWw+IGNhbiBiZSBzcGVjaWZpZWQgYWZ0ZXIg dGhlIHRhYmxlCi0gICAgICBuYW1lIHRvIGV4cGxpY2l0bHkgaW5kaWNhdGUgdGhhdCBkZXNjZW5k YW50IHRhYmxlcyBhcmUgaW5jbHVkZWQuCisgICAgICBuYW1lIHRvIGV4cGxpY2l0bHkgaW5kaWNh dGUgdGhhdCBkZXNjZW5kYW50IHRhYmxlcyBhcmUgYWZmZWN0ZWQuIEZvcgorICAgICAgcGFydGl0 aW9uZWQgdGFibGVzLCA8bGl0ZXJhbD5PTkxZPC9saXRlcmFsPiBkb25vdCBoYXZlIGFueSBlZmZl Y3QuCiAgICAgIDwvcGFyYT4KIAogICAgICA8cGFyYT4KQEAgLTIzNyw2ICsyNDUsMTQgQEAgQUxU RVIgUFVCTElDQVRJT04gc2FsZXNfcHVibGljYXRpb24gQUREIFRBQkxFUyBJTiBTQ0hFTUEgbWFy a2V0aW5nLCBzYWxlczsKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgIDwvcGFyYT4KIAorICA8cGFyYT4K KyAgIEFsdGVyIHB1YmxpY2F0aW9uIDxzdHJ1Y3RuYW1lPnByb2R1Y3Rpb25fcHVibGljYXRpb248 L3N0cnVjdG5hbWU+IHRvIHB1Ymxpc2gKKyAgIGFsbCB0YWJsZXMgZXhjZXB0IDxzdHJ1Y3RuYW1l PnVzZXJzPC9zdHJ1Y3RuYW1lPiBhbmQKKyAgIDxzdHJ1Y3RuYW1lPmRlcGFydG1lbnRzPC9zdHJ1 Y3RuYW1lPjoKKzxwcm9ncmFtbGlzdGluZz4KK0FMVEVSIFBVQkxJQ0FUSU9OIHByb2R1Y3Rpb25f cHVibGljYXRpb24gQUREIEFMTCBUQUJMRVMgRVhDRVBUIHVzZXJzLCBkZXBhcnRtZW50czsKKzwv cHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgorCiAgIDxwYXJhPgogICAgQWRkIHRhYmxlcyA8c3RydWN0 bmFtZT51c2Vyczwvc3RydWN0bmFtZT4sCiAgICA8c3RydWN0bmFtZT5kZXBhcnRtZW50czwvc3Ry dWN0bmFtZT4gYW5kIHNjaGVtYQpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf cHVibGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNn bWwKaW5kZXggODAyNjMwZjJkZjEuLmJkZGZmOWNhMGNjIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3B1YmxpY2F0aW9uLnNnbWwKQEAgLTIyLDcgKzIyLDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVu dGF0aW9uCiAgPHJlZnN5bm9wc2lzZGl2PgogPHN5bm9wc2lzPgogQ1JFQVRFIFBVQkxJQ0FUSU9O IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KLSAgICBb IEZPUiBBTEwgVEFCTEVTCisgICAgWyBGT1IgQUxMIFRBQkxFUyBbIEVYQ0VQVCBbIFRBQkxFIF0g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4Y2VwdGlvbl9vYmplY3Q8L3JlcGxhY2Vh YmxlPiBbLCAuLi4gXSBdCiAgICAgICB8IEZPUiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+cHVibGljYXRpb25fb2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gXQogICAgIFsgV0lU SCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9wYXJhbWV0ZXI8 L3JlcGxhY2VhYmxlPiBbPSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3Jl cGxhY2VhYmxlPl0gWywgLi4uIF0gKSBdCiAKQEAgLTMwLDYgKzMwLDEwIEBAIENSRUFURSBQVUJM SUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+ CiAKICAgICBUQUJMRSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFi bGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0gWyBXSEVSRSAoIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gKSBd IFssIC4uLiBdCiAgICAgVEFCTEVTIElOIFNDSEVNQSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5zY2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IHwgQ1VSUkVOVF9TQ0hFTUEgfSBbLCAu Li4gXQorCis8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNl cHRpb25fb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+CisKKyAgICBbIE9OTFkgXSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsg KiBdCiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CiAKQEAgLTEyNSw3ICsxMjksOSBA QCBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8 L3JlcGxhY2VhYmxlPgogICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+CiAgICAgICBNYXJrcyB0 aGUgcHVibGljYXRpb24gYXMgb25lIHRoYXQgcmVwbGljYXRlcyBjaGFuZ2VzIGZvciBhbGwgdGFi bGVzIGluCi0gICAgICB0aGUgZGF0YWJhc2UsIGluY2x1ZGluZyB0YWJsZXMgY3JlYXRlZCBpbiB0 aGUgZnV0dXJlLgorICAgICAgdGhlIGRhdGFiYXNlLCBpbmNsdWRpbmcgdGFibGVzIGNyZWF0ZWQg aW4gdGhlIGZ1dHVyZS4gSWYKKyAgICAgIDxsaXRlcmFsPkVYQ0VQVCBUQUJMRTwvbGl0ZXJhbD4g aXMgc3BlY2lmaWVkLCB0aGVuIGV4Y2x1ZGUgcmVwbGljYXRpbmcKKyAgICAgIHRoZSBjaGFuZ2Vz IGZvciB0aGUgc3BlY2lmaWVkIHRhYmxlcy4KICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+ CiAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTE2MSw2ICsxNjcsMzYgQEAgQ1JFQVRFIFBVQkxJQ0FU SU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAg ICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnkgaWQ9 InNxbC1jcmVhdGVwdWJsaWNhdGlvbi1wYXJhbXMtZm9yLWV4Y2VwdC10YWJsZSI+CisgICAgPHRl cm0+PGxpdGVyYWw+RVhDRVBUIFRBQkxFPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+ CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBjbGF1c2Ugc3BlY2lmaWVzIGEgbGlzdCBvZiB0YWJs ZXMgdG8gYmUgZXhjbHVkZWQgZnJvbSB0aGUKKyAgICAgIHB1YmxpY2F0aW9uLiBJdCBjYW4gb25s eSBiZSB1c2VkIHdpdGggPGxpdGVyYWw+Rk9SIEFMTCBUQUJMRVM8L2xpdGVyYWw+LgorICAgICAg SWYgPGxpdGVyYWw+T05MWTwvbGl0ZXJhbD4gaXMgc3BlY2lmaWVkIGJlZm9yZSB0aGUgdGFibGUg bmFtZSwgb25seQorICAgICAgdGhhdCB0YWJsZSBpcyBleGNsdWRlZCBmcm9tIHRoZSBwdWJsaWNh dGlvbi4gSWYgPGxpdGVyYWw+T05MWTwvbGl0ZXJhbD4gaXMKKyAgICAgIG5vdCBzcGVjaWZpZWQs IHRoZSB0YWJsZSBhbmQgYWxsIGl0cyBkZXNjZW5kYW50IHRhYmxlcyAoaWYgYW55KSBhcmUKKyAg ICAgIGV4Y2x1ZGVkLiBPcHRpb25hbGx5LCA8bGl0ZXJhbD4qPC9saXRlcmFsPiBjYW4gYmUgc3Bl Y2lmaWVkIGFmdGVyIHRoZQorICAgICAgdGFibGUgbmFtZSB0byBleHBsaWNpdGx5IGluZGljYXRl IHRoYXQgZGVzY2VuZGFudCB0YWJsZXMgYXJlIGV4Y2x1ZGVkLgorICAgICAgVGhpcyBkb2VzIG5v dCBhcHBseSB0byBhIHBhcnRpdGlvbmVkIHRhYmxlLCBob3dldmVyLiAgVGhlIHBhcnRpdGlvbmVk CisgICAgICB0YWJsZSBvciBpdHMgcGFydGl0aW9ucyBhcmUgZXhjbHVkZWQgZnJvbSB0aGUgcHVi bGljYXRpb24gYmFzZWQgb24gdGhlCisgICAgICBwYXJhbWV0ZXIgPGxpdGVyYWw+cHVibGlzaF92 aWFfcGFydGl0aW9uX3Jvb3Q8L2xpdGVyYWw+LgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgor ICAgICAgV2hlbiA8bGl0ZXJhbD5wdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdDwvbGl0ZXJhbD4g aXMgc2V0IHRvCisgICAgICA8bGl0ZXJhbD50cnVlPC9saXRlcmFsPiwgc3BlY2lmeWluZyBhIHJv b3QgcGFydGl0aW9uZWQgdGFibGUgaW4KKyAgICAgIDxsaXRlcmFsPkVYQ0VQVCBUQUJMRTwvbGl0 ZXJhbD4gZXhjbHVkZXMgaXQgYW5kIGFsbCBpdHMgcGFydGl0aW9ucyBmcm9tCisgICAgICByZXBs aWNhdGlvbi4gU3BlY2lmeWluZyBhIGxlYWYgcGFydGl0aW9uIGhhcyBubyBlZmZlY3QsIGFzIGl0 cyBjaGFuZ2VzIGFyZQorICAgICAgc3RpbGwgcmVwbGljYXRlZCB2aWEgdGhlIHJvb3QgcGFydGl0 aW9uZWQgdGFibGUuIFdoZW4KKyAgICAgIDxsaXRlcmFsPnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9y b290PC9saXRlcmFsPiBpcyBzZXQgdG8KKyAgICAgIDxsaXRlcmFsPmZhbHNlPC9saXRlcmFsPiwg c3BlY2lmeWluZyBhIHBhcnRpdGlvbmVkIHRhYmxlIG9yIG5vbi1sZWFmCisgICAgICBwYXJ0aXRp b24gaGFzIG5vIGVmZmVjdCwgYXMgY2hhbmdlcyBhcmUgcmVwbGljYXRlZCB2aWEgdGhlIGxlYWYK KyAgICAgIHBhcnRpdGlvbnMuIFNwZWNpZnlpbmcgYSBsZWFmIHBhcnRpdGlvbiBleGNsdWRlcyBv bmx5IHRoYXQgcGFydGl0aW9uIGZyb20KKyAgICAgIHJlcGxpY2F0aW9uLgorICAgICA8L3BhcmE+ CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5 IGlkPSJzcWwtY3JlYXRlcHVibGljYXRpb24tcGFyYW1zLXdpdGgiPgogICAgIDx0ZXJtPjxsaXRl cmFsPldJVEggKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fcGFy YW1ldGVyPC9yZXBsYWNlYWJsZT4gWz0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZh bHVlPC9yZXBsYWNlYWJsZT5dIFssIC4uLiBdICk8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0 aXRlbT4KQEAgLTQ0Miw2ICs0NzgsMTUgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHByb2R1Y3Rpb25f cHVibGljYXRpb24gRk9SIFRBQkxFIHVzZXJzLCBkZXBhcnRtZW50cywgVEFCTEVTIEkKIENSRUFU RSBQVUJMSUNBVElPTiBzYWxlc19wdWJsaWNhdGlvbiBGT1IgVEFCTEVTIElOIFNDSEVNQSBtYXJr ZXRpbmcsIHNhbGVzOwogPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CiAKKyAgPHBhcmE+CisgICBD cmVhdGUgYSBwdWJsaWNhdGlvbiB0aGF0IHB1Ymxpc2hlcyBhbGwgY2hhbmdlcyBpbiBhbGwgdGhl IHRhYmxlcyBleGNlcHQgZm9yCisgICB0aGUgY2hhbmdlcyBvZiA8c3RydWN0bmFtZT51c2Vyczwv c3RydWN0bmFtZT4gYW5kCisgICA8c3RydWN0bmFtZT5kZXBhcnRtZW50czwvc3RydWN0bmFtZT46 Cis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUgUFVCTElDQVRJT04gbXlwdWJsaWNhdGlvbiBGT1Ig QUxMIFRBQkxFUyBFWENFUFQgdXNlcnMsIGRlcGFydG1lbnRzOworPC9wcm9ncmFtbGlzdGluZz4K KyAgPC9wYXJhPgorCiAgIDxwYXJhPgogICAgQ3JlYXRlIGEgcHVibGljYXRpb24gdGhhdCBwdWJs aXNoZXMgYWxsIGNoYW5nZXMgZm9yIHRhYmxlIDxzdHJ1Y3RuYW1lPnVzZXJzPC9zdHJ1Y3RuYW1l PiwKICAgIGJ1dCByZXBsaWNhdGVzIG9ubHkgY29sdW1ucyA8c3RydWN0bmFtZT51c2VyX2lkPC9z dHJ1Y3RuYW1lPiBhbmQKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dt bCBiL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbAppbmRleCAxYTMzOTYwMGJjNC4uY2E4 ZjZkYzliOWYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwKQEAgLTIxMDMsOCArMjEwMyw5IEBAIFNF TEVDVCAkMSBccGFyc2Ugc3RtdDEKICAgICAgICAgbGlzdGVkLgogICAgICAgICBJZiA8bGl0ZXJh bD54PC9saXRlcmFsPiBpcyBhcHBlbmRlZCB0byB0aGUgY29tbWFuZCBuYW1lLCB0aGUgcmVzdWx0 cwogICAgICAgICBhcmUgZGlzcGxheWVkIGluIGV4cGFuZGVkIG1vZGUuCi0gICAgICAgIElmIDxs aXRlcmFsPis8L2xpdGVyYWw+IGlzIGFwcGVuZGVkIHRvIHRoZSBjb21tYW5kIG5hbWUsIHRoZSB0 YWJsZXMgYW5kCi0gICAgICAgIHNjaGVtYXMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggcHVibGljYXRp b24gYXJlIHNob3duIGFzIHdlbGwuCisgICAgICAgIElmIDxsaXRlcmFsPis8L2xpdGVyYWw+IGlz IGFwcGVuZGVkIHRvIHRoZSBjb21tYW5kIG5hbWUsIHRoZSB0YWJsZXMsCisgICAgICAgIGV4Y2x1 ZGVkIHRhYmxlcyBhbmQgc2NoZW1hcyBhc3NvY2lhdGVkIHdpdGggZWFjaCBwdWJsaWNhdGlvbiBh cmUgc2hvd24gYXMKKyAgICAgICAgd2VsbC4KICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xp c3RpdGVtPgogICAgICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j YXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0 aW9uLmMKaW5kZXggYjkxMWVmY2Y5Y2IuLmFmMWI4YzllZDY3IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9w Z19wdWJsaWNhdGlvbi5jCkBAIC0zNTEsNyArMzUxLDggQEAgR2V0UHViUGFydGl0aW9uT3B0aW9u UmVsYXRpb25zKExpc3QgKnJlc3VsdCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0LAog ICogYW5jZXN0b3IgaXMgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdC4KICAqLwogT2lkCi1HZXRUb3BN b3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKE9pZCBwdWJvaWQsIExpc3QgKmFuY2VzdG9ycywgaW50 ICphbmNlc3Rvcl9sZXZlbCkKK0dldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24oT2lkIHB1 Ym9pZCwgTGlzdCAqYW5jZXN0b3JzLAorCQkJCQkJCQlpbnQgKmFuY2VzdG9yX2xldmVsLCBib29s IHB1YmFsbHRhYmxlcykKIHsKIAlMaXN0Q2VsbCAgICpsYzsKIAlPaWQJCQl0b3Btb3N0X3JlbGlk ID0gSW52YWxpZE9pZDsKQEAgLTM2MywzMiArMzY0LDQ0IEBAIEdldFRvcE1vc3RBbmNlc3Rvcklu UHVibGljYXRpb24oT2lkIHB1Ym9pZCwgTGlzdCAqYW5jZXN0b3JzLCBpbnQgKmFuY2VzdG9yX2xl dmVsCiAJZm9yZWFjaChsYywgYW5jZXN0b3JzKQogCXsKIAkJT2lkCQkJYW5jZXN0b3IgPSBsZmly c3Rfb2lkKGxjKTsKLQkJTGlzdAkgICAqYXB1YmlkcyA9IEdldFJlbGF0aW9uUHVibGljYXRpb25z KGFuY2VzdG9yKTsKLQkJTGlzdAkgICAqYXNjaGVtYVB1YmlkcyA9IE5JTDsKKwkJTGlzdAkgICAq YXB1YmlkcyA9IEdldFJlbGF0aW9uUHVibGljYXRpb25zKGFuY2VzdG9yLCBmYWxzZSk7CisJCUxp c3QJICAgKmFzY2hlbWFwdWJpZHMgPSBOSUw7CisJCUxpc3QJICAgKmFleGNlcHRwdWJpZHMgPSBO SUw7CisJCWJvb2wJCXNldF90b3AgPSBmYWxzZTsKIAogCQlsZXZlbCsrOwogCi0JCWlmIChsaXN0 X21lbWJlcl9vaWQoYXB1YmlkcywgcHVib2lkKSkKKwkJLyogY2hlY2sgaWYgbWVtYmVyIG9mIHRh YmxlIHB1YmxpY2F0aW9ucyAqLworCQlzZXRfdG9wID0gbGlzdF9tZW1iZXJfb2lkKGFwdWJpZHMs IHB1Ym9pZCk7CisJCWlmICghc2V0X3RvcCkKIAkJewotCQkJdG9wbW9zdF9yZWxpZCA9IGFuY2Vz dG9yOworCQkJYXNjaGVtYXB1YmlkcyA9IEdldFNjaGVtYVB1YmxpY2F0aW9ucyhnZXRfcmVsX25h bWVzcGFjZShhbmNlc3RvcikpOwogCi0JCQlpZiAoYW5jZXN0b3JfbGV2ZWwpCi0JCQkJKmFuY2Vz dG9yX2xldmVsID0gbGV2ZWw7CisJCQkvKiBjaGVjayBpZiBtZW1iZXIgb2Ygc2NoZW1hIHB1Ymxp Y2F0aW9ucyAqLworCQkJc2V0X3RvcCA9IGxpc3RfbWVtYmVyX29pZChhc2NoZW1hcHViaWRzLCBw dWJvaWQpOworCisJCQkvKgorCQkJICogSWYgdGhlIHB1YmxpY2F0aW9uIGlzIGFsbCB0YWJsZXMg cHVibGljYXRpb24gYW5kIHRoZSB0YWJsZSBpcworCQkJICogbm90IHBhcnQgb2YgZXhjZXB0aW9u IHRhYmxlcy4KKwkJCSAqLworCQkJaWYgKCFzZXRfdG9wICYmIHB1YmFsbHRhYmxlcykKKwkJCXsK KwkJCQlhZXhjZXB0cHViaWRzID0gR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoYW5jZXN0b3IsIHRy dWUpOworCQkJCXNldF90b3AgPSAhbGlzdF9tZW1iZXJfb2lkKGFleGNlcHRwdWJpZHMsIHB1Ym9p ZCk7CisJCQl9CiAJCX0KLQkJZWxzZQorCisJCWlmIChzZXRfdG9wKQogCQl7Ci0JCQlhc2NoZW1h UHViaWRzID0gR2V0U2NoZW1hUHVibGljYXRpb25zKGdldF9yZWxfbmFtZXNwYWNlKGFuY2VzdG9y KSk7Ci0JCQlpZiAobGlzdF9tZW1iZXJfb2lkKGFzY2hlbWFQdWJpZHMsIHB1Ym9pZCkpCi0JCQl7 Ci0JCQkJdG9wbW9zdF9yZWxpZCA9IGFuY2VzdG9yOworCQkJdG9wbW9zdF9yZWxpZCA9IGFuY2Vz dG9yOwogCi0JCQkJaWYgKGFuY2VzdG9yX2xldmVsKQotCQkJCQkqYW5jZXN0b3JfbGV2ZWwgPSBs ZXZlbDsKLQkJCX0KKwkJCWlmIChhbmNlc3Rvcl9sZXZlbCkKKwkJCQkqYW5jZXN0b3JfbGV2ZWwg PSBsZXZlbDsKIAkJfQogCiAJCWxpc3RfZnJlZShhcHViaWRzKTsKLQkJbGlzdF9mcmVlKGFzY2hl bWFQdWJpZHMpOworCQlsaXN0X2ZyZWUoYXNjaGVtYXB1Ymlkcyk7CisJCWxpc3RfZnJlZShhZXhj ZXB0cHViaWRzKTsKIAl9CiAKIAlyZXR1cm4gdG9wbW9zdF9yZWxpZDsKQEAgLTQ2Myw2ICs0NzYs MTcgQEAgcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVibGljYXRpb25SZWxJ bmZvICpwcmksCiAJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpLCBwdWIt Pm5hbWUpKSk7CiAJfQogCisJLyoKKwkgKiBDaGVjayBmb3IgcGFydGl0aW9ucyBvZiBwYXJ0aXRp b25lZCB0YWJsZSB3aGljaCBhcmUgc3BlY2lmaWVkIHdpdGgKKwkgKiBFWENFUFQgY2xhdXNlIGFu ZCBwYXJ0aXRpb25lZCB0YWJsZSBpcyBwdWJsaXNoZWQgd2l0aAorCSAqIHB1Ymxpc2hfdmlhX3Bh cnRpdGlvbl9yb290ID0gdHJ1ZS4KKwkgKi8KKwlpZiAocHViLT5hbGx0YWJsZXMgJiYgcHJpLT5l eGNlcHQgJiYgdGFyZ2V0cmVsLT5yZF9yZWwtPnJlbGlzcGFydGl0aW9uICYmCisJCXB1Yi0+cHVi dmlhcm9vdCkKKwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJtc2coInBhcnRpdGlvbiBcIiVz XCIgd2lsbCBiZSByZXBsaWNhdGVkIGFzIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290IGlzIFwi JXNcIiIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpLCAidHJ1ZSIp KSk7CisKIAljaGVja19wdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24odGFyZ2V0cmVsKTsKIAogCS8q IFZhbGlkYXRlIGFuZCB0cmFuc2xhdGUgY29sdW1uIG5hbWVzIGludG8gYSBCaXRtYXBzZXQgb2Yg YXR0bnVtcy4gKi8KQEAgLTQ3OSw2ICs1MDMsOCBAQCBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24o T2lkIHB1YmlkLCBQdWJsaWNhdGlvblJlbEluZm8gKnByaSwKIAkJT2JqZWN0SWRHZXREYXR1bShw dWJpZCk7CiAJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcmVsX3BycmVsaWQgLSAxXSA9CiAJ CU9iamVjdElkR2V0RGF0dW0ocmVsaWQpOworCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3Jl bF9wcmV4Y2VwdCAtIDFdID0KKwkJQm9vbEdldERhdHVtKHByaS0+ZXhjZXB0KTsKIAogCS8qIEFk ZCBxdWFsaWZpY2F0aW9ucywgaWYgYXZhaWxhYmxlICovCiAJaWYgKHByaS0+d2hlcmVDbGF1c2Ug IT0gTlVMTCkKQEAgLTc0Niw5ICs3NzIsOSBAQCBwdWJsaWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBw dWJpZCwgT2lkIHNjaGVtYWlkLCBib29sIGlmX25vdF9leGlzdHMpCiAJcmV0dXJuIG15c2VsZjsK IH0KIAotLyogR2V0cyBsaXN0IG9mIHB1YmxpY2F0aW9uIG9pZHMgZm9yIGEgcmVsYXRpb24gKi8K Ky8qIEdldHMgbGlzdCBvZiBwdWJsaWNhdGlvbiBvaWRzIGZvciBhIHJlbGF0aW9uIHRoYXQgbWF0 Y2hlcyB0aGUgZXhjZXB0X2ZsYWcgKi8KIExpc3QgKgotR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMo T2lkIHJlbGlkKQorR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoT2lkIHJlbGlkLCBib29sIGV4Y2Vw dF9mbGFnKQogewogCUxpc3QJICAgKnJlc3VsdCA9IE5JTDsKIAlDYXRDTGlzdCAgICpwdWJyZWxs aXN0OwpAQCAtNzYyLDcgKzc4OCw4IEBAIEdldFJlbGF0aW9uUHVibGljYXRpb25zKE9pZCByZWxp ZCkKIAkJSGVhcFR1cGxlCXR1cCA9ICZwdWJyZWxsaXN0LT5tZW1iZXJzW2ldLT50dXBsZTsKIAkJ T2lkCQkJcHViaWQgPSAoKEZvcm1fcGdfcHVibGljYXRpb25fcmVsKSBHRVRTVFJVQ1QodHVwKSkt PnBycHViaWQ7CiAKLQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCBwdWJpZCk7CisJCWlm IChleGNlcHRfZmxhZyA9PSAoKEZvcm1fcGdfcHVibGljYXRpb25fcmVsKSBHRVRTVFJVQ1QodHVw KSktPnByZXhjZXB0KQorCQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCBwdWJpZCk7CiAJ fQogCiAJUmVsZWFzZVN5c0NhY2hlTGlzdChwdWJyZWxsaXN0KTsKQEAgLTc3MSwxMyArNzk4LDE0 IEBAIEdldFJlbGF0aW9uUHVibGljYXRpb25zKE9pZCByZWxpZCkKIH0KIAogLyoKLSAqIEdldHMg bGlzdCBvZiByZWxhdGlvbiBvaWRzIGZvciBhIHB1YmxpY2F0aW9uLgorICogR2V0cyBsaXN0IG9m IHJlbGF0aW9uIG9pZHMgZm9yIGEgcHVibGljYXRpb24gdGhhdCBtYXRjaGVzIHRoZSBleGNlcHRf ZmxhZy4KICAqCiAgKiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgRk9SIFRBQkxFIHB1YmxpY2F0 aW9ucywgdGhlIEZPUiBBTEwgVEFCTEVTCiAgKiBzaG91bGQgdXNlIEdldEFsbFRhYmxlc1B1Ymxp Y2F0aW9uUmVsYXRpb25zKCkuCiAgKi8KIExpc3QgKgotR2V0UHVibGljYXRpb25SZWxhdGlvbnMo T2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCitHZXRQdWJsaWNhdGlv blJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCwKKwkJ CQkJCWJvb2wgZXhjZXB0X2ZsYWcpCiB7CiAJTGlzdAkgICAqcmVzdWx0OwogCVJlbGF0aW9uCXB1 YnJlbHNyZWw7CkBAIC04MDIsOCArODMwLDExIEBAIEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKE9p ZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQogCQlGb3JtX3BnX3B1Ymxp Y2F0aW9uX3JlbCBwdWJyZWw7CiAKIAkJcHVicmVsID0gKEZvcm1fcGdfcHVibGljYXRpb25fcmVs KSBHRVRTVFJVQ1QodHVwKTsKLQkJcmVzdWx0ID0gR2V0UHViUGFydGl0aW9uT3B0aW9uUmVsYXRp b25zKHJlc3VsdCwgcHViX3BhcnRvcHQsCi0JCQkJCQkJCQkJCQlwdWJyZWwtPnBycmVsaWQpOwor CisJCWlmIChleGNlcHRfZmxhZyA9PSBwdWJyZWwtPnByZXhjZXB0KQorCQkJcmVzdWx0ID0gR2V0 UHViUGFydGl0aW9uT3B0aW9uUmVsYXRpb25zKHJlc3VsdCwgcHViX3BhcnRvcHQsCisJCQkJCQkJ CQkJCQkJcHVicmVsLT5wcnJlbGlkKTsKKwogCX0KIAogCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7 CkBAIC04NjEsMTMgKzg5MiwxOSBAQCBHZXRBbGxUYWJsZXNQdWJsaWNhdGlvbnModm9pZCkKICAq IHJvb3QgcGFydGl0aW9uZWQgdGFibGVzLgogICovCiBMaXN0ICoKLUdldEFsbFRhYmxlc1B1Ymxp Y2F0aW9uUmVsYXRpb25zKGJvb2wgcHVidmlhcm9vdCkKK0dldEFsbFRhYmxlc1B1YmxpY2F0aW9u UmVsYXRpb25zKE9pZCBwdWJpZCwgYm9vbCBwdWJ2aWFyb290KQogewogCVJlbGF0aW9uCWNsYXNz UmVsOwogCVNjYW5LZXlEYXRhIGtleVsxXTsKIAlUYWJsZVNjYW5EZXNjIHNjYW47CiAJSGVhcFR1 cGxlCXR1cGxlOwogCUxpc3QJICAgKnJlc3VsdCA9IE5JTDsKKwlMaXN0CSAgICpleGNlcHRsaXN0 OworCisJZXhjZXB0bGlzdCA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmlkLCBwdWJ2aWFy b290ID8KKwkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9BTEwgOgorCQkJCQkJCQkJCSBQVUJM SUNBVElPTl9QQVJUX1JPT1QsCisJCQkJCQkJCQkJIHRydWUpOwogCiAJY2xhc3NSZWwgPSB0YWJs ZV9vcGVuKFJlbGF0aW9uUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKIApAQCAtODg0LDcg KzkyMSw4IEBAIEdldEFsbFRhYmxlc1B1YmxpY2F0aW9uUmVsYXRpb25zKGJvb2wgcHVidmlhcm9v dCkKIAkJT2lkCQkJcmVsaWQgPSByZWxGb3JtLT5vaWQ7CiAKIAkJaWYgKGlzX3B1Ymxpc2hhYmxl X2NsYXNzKHJlbGlkLCByZWxGb3JtKSAmJgotCQkJIShyZWxGb3JtLT5yZWxpc3BhcnRpdGlvbiAm JiBwdWJ2aWFyb290KSkKKwkJCSEocmVsRm9ybS0+cmVsaXNwYXJ0aXRpb24gJiYgcHVidmlhcm9v dCkgJiYKKwkJCSFsaXN0X21lbWJlcl9vaWQoZXhjZXB0bGlzdCwgcmVsaWQpKQogCQkJcmVzdWx0 ID0gbGFwcGVuZF9vaWQocmVzdWx0LCByZWxpZCk7CiAJfQogCkBAIC05MDUsNyArOTQzLDggQEAg R2V0QWxsVGFibGVzUHVibGljYXRpb25SZWxhdGlvbnMoYm9vbCBwdWJ2aWFyb290KQogCQkJT2lk CQkJcmVsaWQgPSByZWxGb3JtLT5vaWQ7CiAKIAkJCWlmIChpc19wdWJsaXNoYWJsZV9jbGFzcyhy ZWxpZCwgcmVsRm9ybSkgJiYKLQkJCQkhcmVsRm9ybS0+cmVsaXNwYXJ0aXRpb24pCisJCQkJIXJl bEZvcm0tPnJlbGlzcGFydGl0aW9uICYmCisJCQkJIWxpc3RfbWVtYmVyX29pZChleGNlcHRsaXN0 LCByZWxpZCkpCiAJCQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCByZWxpZCk7CiAJCX0K IApAQCAtMTE2MCw3ICsxMTk5LDggQEAgcGdfZ2V0X3B1YmxpY2F0aW9uX3RhYmxlcyhQR19GVU5D VElPTl9BUkdTKQogCQkJICogdGhvc2UuIE90aGVyd2lzZSwgZ2V0IHRoZSBwYXJ0aXRpb25lZCB0 YWJsZSBpdHNlbGYuCiAJCQkgKi8KIAkJCWlmIChwdWJfZWxlbS0+YWxsdGFibGVzKQotCQkJCXB1 Yl9lbGVtX3RhYmxlcyA9IEdldEFsbFRhYmxlc1B1YmxpY2F0aW9uUmVsYXRpb25zKHB1Yl9lbGVt LT5wdWJ2aWFyb290KTsKKwkJCQlwdWJfZWxlbV90YWJsZXMgPSBHZXRBbGxUYWJsZXNQdWJsaWNh dGlvblJlbGF0aW9ucyhwdWJfZWxlbS0+b2lkLAorCQkJCQkJCQkJCQkJCQkJCSAgIHB1Yl9lbGVt LT5wdWJ2aWFyb290KTsKIAkJCWVsc2UKIAkJCXsKIAkJCQlMaXN0CSAgICpyZWxpZHMsCkBAIC0x MTY5LDcgKzEyMDksOCBAQCBwZ19nZXRfcHVibGljYXRpb25fdGFibGVzKFBHX0ZVTkNUSU9OX0FS R1MpCiAJCQkJcmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViX2VsZW0tPm9pZCwK IAkJCQkJCQkJCQkJCSBwdWJfZWxlbS0+cHVidmlhcm9vdCA/CiAJCQkJCQkJCQkJCQkgUFVCTElD QVRJT05fUEFSVF9ST09UIDoKLQkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX0xFQUYpOwor CQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfTEVBRiwKKwkJCQkJCQkJCQkJCSBmYWxzZSk7 CiAJCQkJc2NoZW1hcmVsaWRzID0gR2V0QWxsU2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMocHVi X2VsZW0tPm9pZCwKIAkJCQkJCQkJCQkJCQkJCQlwdWJfZWxlbS0+cHVidmlhcm9vdCA/CiAJCQkJ CQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9ST09UIDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVi bGljYXRpb25jbWRzLmMKaW5kZXggMDZmNmY0NTUyNmIuLmI2ZDU0NmJlMjkxIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwpAQCAtMjA0LDYgKzIwNCwxMSBAQCBPYmplY3Rz SW5QdWJsaWNhdGlvblRvT2lkcyhMaXN0ICpwdWJvYmpzcGVjX2xpc3QsIFBhcnNlU3RhdGUgKnBz dGF0ZSwKIAkJc3dpdGNoIChwdWJvYmotPnB1Ym9ianR5cGUpCiAJCXsKIAkJCWNhc2UgUFVCTElD QVRJT05PQkpfVEFCTEU6CisJCQkJcHVib2JqLT5wdWJ0YWJsZS0+ZXhjZXB0ID0gZmFsc2U7CisJ CQkJKnJlbHMgPSBsYXBwZW5kKCpyZWxzLCBwdWJvYmotPnB1YnRhYmxlKTsKKwkJCQlicmVhazsK KwkJCWNhc2UgUFVCTElDQVRJT05PQkpfRVhDRVBUX1RBQkxFOgorCQkJCXB1Ym9iai0+cHVidGFi bGUtPmV4Y2VwdCA9IHRydWU7CiAJCQkJKnJlbHMgPSBsYXBwZW5kKCpyZWxzLCBwdWJvYmotPnB1 YnRhYmxlKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX1ND SEVNQToKQEAgLTI3OCw3ICsyODMsNyBAQCBjb250YWluX2ludmFsaWRfcmZjb2x1bW5fd2Fsa2Vy KE5vZGUgKm5vZGUsIHJmX2NvbnRleHQgKmNvbnRleHQpCiAgKi8KIGJvb2wKIHB1Yl9yZl9jb250 YWluc19pbnZhbGlkX2NvbHVtbihPaWQgcHViaWQsIFJlbGF0aW9uIHJlbGF0aW9uLCBMaXN0ICph bmNlc3RvcnMsCi0JCQkJCQkJICAgYm9vbCBwdWJ2aWFyb290KQorCQkJCQkJCSAgIGJvb2wgcHVi dmlhcm9vdCwgYm9vbCBwdWJhbGx0YWJsZXMpCiB7CiAJSGVhcFR1cGxlCXJmdHVwbGU7CiAJT2lk CQkJcmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKTsKQEAgLTMwNSw3ICszMTAsOCBA QCBwdWJfcmZfY29udGFpbnNfaW52YWxpZF9jb2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlvbiByZWxh dGlvbiwgTGlzdCAqYW5jZXN0b3JzLAogCWlmIChwdWJ2aWFyb290ICYmIHJlbGF0aW9uLT5yZF9y ZWwtPnJlbGlzcGFydGl0aW9uKQogCXsKIAkJcHVibGlzaF9hc19yZWxpZAotCQkJPSBHZXRUb3BN b3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKHB1YmlkLCBhbmNlc3RvcnMsIE5VTEwpOworCQkJPSBH ZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKHB1YmlkLCBhbmNlc3RvcnMsIE5VTEwsCisJ CQkJCQkJCQkJCSAgcHViYWxsdGFibGVzKTsKIAogCQlpZiAoIU9pZElzVmFsaWQocHVibGlzaF9h c19yZWxpZCkpCiAJCQlwdWJsaXNoX2FzX3JlbGlkID0gcmVsaWQ7CkBAIC0zNjUsNyArMzcxLDcg QEAgcHViX3JmX2NvbnRhaW5zX2ludmFsaWRfY29sdW1uKE9pZCBwdWJpZCwgUmVsYXRpb24gcmVs YXRpb24sIExpc3QgKmFuY2VzdG9ycywKIGJvb2wKIHB1Yl9jb250YWluc19pbnZhbGlkX2NvbHVt bihPaWQgcHViaWQsIFJlbGF0aW9uIHJlbGF0aW9uLCBMaXN0ICphbmNlc3RvcnMsCiAJCQkJCQkJ Ym9vbCBwdWJ2aWFyb290LCBjaGFyIHB1YmdlbmNvbHNfdHlwZSwKLQkJCQkJCQlib29sICppbnZh bGlkX2NvbHVtbl9saXN0LAorCQkJCQkJCWJvb2wgcHViYWxsdGFibGVzLCBib29sICppbnZhbGlk X2NvbHVtbl9saXN0LAogCQkJCQkJCWJvb2wgKmludmFsaWRfZ2VuX2NvbCkKIHsKIAlPaWQJCQly ZWxpZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pOwpAQCAtMzg5LDcgKzM5NSw4IEBAIHB1 Yl9jb250YWluc19pbnZhbGlkX2NvbHVtbihPaWQgcHViaWQsIFJlbGF0aW9uIHJlbGF0aW9uLCBM aXN0ICphbmNlc3RvcnMsCiAJICovCiAJaWYgKHB1YnZpYXJvb3QgJiYgcmVsYXRpb24tPnJkX3Jl bC0+cmVsaXNwYXJ0aXRpb24pCiAJewotCQlwdWJsaXNoX2FzX3JlbGlkID0gR2V0VG9wTW9zdEFu Y2VzdG9ySW5QdWJsaWNhdGlvbihwdWJpZCwgYW5jZXN0b3JzLCBOVUxMKTsKKwkJcHVibGlzaF9h c19yZWxpZCA9IEdldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24ocHViaWQsIGFuY2VzdG9y cywKKwkJCQkJCQkJCQkJCQkJICAgTlVMTCwgcHViYWxsdGFibGVzKTsKIAogCQlpZiAoIU9pZElz VmFsaWQocHVibGlzaF9hc19yZWxpZCkpCiAJCQlwdWJsaXNoX2FzX3JlbGlkID0gcmVsaWQ7CkBA IC01MjUsNyArNTMyLDcgQEAgSW52YWxpZGF0ZVB1YlJlbFN5bmNDYWNoZShPaWQgcHViaWQsIGJv b2wgcHViYWxsdGFibGVzKQogCQkgKiBpdHMgbGVhdmVzLgogCQkgKi8KIAkJcmVsaWRzID0gR2V0 UHVibGljYXRpb25SZWxhdGlvbnMocHViaWQsCi0JCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRf QUxMKTsKKwkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9BTEwsIGZhbHNlKTsKIAkJc2NoZW1h cmVsaWRzID0gR2V0QWxsU2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMocHViaWQsCiAJCQkJCQkJ CQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfQUxMKTsKIApAQCAtOTIxLDUyICs5MjgsNTAgQEAgQ3Jl YXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQg KnN0bXQpCiAJLyogTWFrZSB0aGUgY2hhbmdlcyB2aXNpYmxlLiAqLwogCUNvbW1hbmRDb3VudGVy SW5jcmVtZW50KCk7CiAKLQkvKiBBc3NvY2lhdGUgb2JqZWN0cyB3aXRoIHRoZSBwdWJsaWNhdGlv bi4gKi8KLQlpZiAoc3RtdC0+Zm9yX2FsbF90YWJsZXMpCi0JewotCQkvKiBJbnZhbGlkYXRlIHJl bGNhY2hlIHNvIHRoYXQgcHVibGljYXRpb24gaW5mbyBpcyByZWJ1aWx0LiAqLwotCQlDYWNoZUlu dmFsaWRhdGVSZWxjYWNoZUFsbCgpOwotCX0KLQllbHNlCi0JewotCQlPYmplY3RzSW5QdWJsaWNh dGlvblRvT2lkcyhzdG10LT5wdWJvYmplY3RzLCBwc3RhdGUsICZyZWxhdGlvbnMsCi0JCQkJCQkJ CSAgICZzY2hlbWFpZGxpc3QpOworCU9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKHN0bXQtPnB1 Ym9iamVjdHMsIHBzdGF0ZSwgJnJlbGF0aW9ucywKKwkJCQkJCQkgICAmc2NoZW1haWRsaXN0KTsK IAotCQkvKiBGT1IgVEFCTEVTIElOIFNDSEVNQSByZXF1aXJlcyBzdXBlcnVzZXIgKi8KLQkJaWYg KHNjaGVtYWlkbGlzdCAhPSBOSUwgJiYgIXN1cGVydXNlcigpKQotCQkJZXJlcG9ydChFUlJPUiwK LQkJCQkJZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAotCQkJCQllcnJt c2coIm11c3QgYmUgc3VwZXJ1c2VyIHRvIGNyZWF0ZSBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJs aWNhdGlvbiIpKTsKKwkvKiBGT1IgVEFCTEVTIElOIFNDSEVNQSByZXF1aXJlcyBzdXBlcnVzZXIg Ki8KKwlpZiAoc2NoZW1haWRsaXN0ICE9IE5JTCAmJiAhc3VwZXJ1c2VyKCkpCisJCWVyZXBvcnQo RVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAorCQkJ CWVycm1zZygibXVzdCBiZSBzdXBlcnVzZXIgdG8gY3JlYXRlIEZPUiBUQUJMRVMgSU4gU0NIRU1B IHB1YmxpY2F0aW9uIikpOwogCi0JCWlmIChyZWxhdGlvbnMgIT0gTklMKQotCQl7Ci0JCQlMaXN0 CSAgICpyZWxzOworCWlmIChyZWxhdGlvbnMgIT0gTklMKQorCXsKKwkJTGlzdAkgICAqcmVsczsK IAotCQkJcmVscyA9IE9wZW5UYWJsZUxpc3QocmVsYXRpb25zKTsKLQkJCVRyYW5zZm9ybVB1Yldo ZXJlQ2xhdXNlcyhyZWxzLCBwc3RhdGUtPnBfc291cmNldGV4dCwKLQkJCQkJCQkJCSBwdWJsaXNo X3ZpYV9wYXJ0aXRpb25fcm9vdCk7CisJCXJlbHMgPSBPcGVuVGFibGVMaXN0KHJlbGF0aW9ucyk7 CisJCVRyYW5zZm9ybVB1YldoZXJlQ2xhdXNlcyhyZWxzLCBwc3RhdGUtPnBfc291cmNldGV4dCwK KwkJCQkJCQkJIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKIAotCQkJQ2hlY2tQdWJSZWxh dGlvbkNvbHVtbkxpc3Qoc3RtdC0+cHVibmFtZSwgcmVscywKLQkJCQkJCQkJCSAgIHNjaGVtYWlk bGlzdCAhPSBOSUwsCi0JCQkJCQkJCQkgICBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7CisJ CUNoZWNrUHViUmVsYXRpb25Db2x1bW5MaXN0KHN0bXQtPnB1Ym5hbWUsIHJlbHMsCisJCQkJCQkJ CSAgIHNjaGVtYWlkbGlzdCAhPSBOSUwsCisJCQkJCQkJCSAgIHB1Ymxpc2hfdmlhX3BhcnRpdGlv bl9yb290KTsKIAotCQkJUHVibGljYXRpb25BZGRUYWJsZXMocHVib2lkLCByZWxzLCB0cnVlLCBO VUxMKTsKLQkJCUNsb3NlVGFibGVMaXN0KHJlbHMpOwotCQl9CisJCVB1YmxpY2F0aW9uQWRkVGFi bGVzKHB1Ym9pZCwgcmVscywgdHJ1ZSwgTlVMTCk7CisJCUNsb3NlVGFibGVMaXN0KHJlbHMpOwor CX0KIAotCQlpZiAoc2NoZW1haWRsaXN0ICE9IE5JTCkKLQkJewotCQkJLyoKLQkJCSAqIFNjaGVt YSBsb2NrIGlzIGhlbGQgdW50aWwgdGhlIHB1YmxpY2F0aW9uIGlzIGNyZWF0ZWQgdG8gcHJldmVu dAotCQkJICogY29uY3VycmVudCBzY2hlbWEgZGVsZXRpb24uCi0JCQkgKi8KLQkJCUxvY2tTY2hl bWFMaXN0KHNjaGVtYWlkbGlzdCk7Ci0JCQlQdWJsaWNhdGlvbkFkZFNjaGVtYXMocHVib2lkLCBz Y2hlbWFpZGxpc3QsIHRydWUsIE5VTEwpOwotCQl9CisJaWYgKHNjaGVtYWlkbGlzdCAhPSBOSUwp CisJeworCQkvKgorCQkgKiBTY2hlbWEgbG9jayBpcyBoZWxkIHVudGlsIHRoZSBwdWJsaWNhdGlv biBpcyBjcmVhdGVkIHRvIHByZXZlbnQKKwkJICogY29uY3VycmVudCBzY2hlbWEgZGVsZXRpb24u CisJCSAqLworCQlMb2NrU2NoZW1hTGlzdChzY2hlbWFpZGxpc3QpOworCQlQdWJsaWNhdGlvbkFk ZFNjaGVtYXMocHVib2lkLCBzY2hlbWFpZGxpc3QsIHRydWUsIE5VTEwpOwogCX0KIAogCXRhYmxl X2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9jayk7CiAKKwkvKiBBc3NvY2lhdGUgb2JqZWN0cyB3 aXRoIHRoZSBwdWJsaWNhdGlvbi4gKi8KKwlpZiAoc3RtdC0+Zm9yX2FsbF90YWJsZXMpCisJewor CQkvKiBJbnZhbGlkYXRlIHJlbGNhY2hlIHNvIHRoYXQgcHVibGljYXRpb24gaW5mbyBpcyByZWJ1 aWx0LiAqLworCQlDYWNoZUludmFsaWRhdGVSZWxjYWNoZUFsbCgpOworCX0KKwogCUludm9rZU9i amVjdFBvc3RDcmVhdGVIb29rKFB1YmxpY2F0aW9uUmVsYXRpb25JZCwgcHVib2lkLCAwKTsKIAog CWlmICh3YWxfbGV2ZWwgIT0gV0FMX0xFVkVMX0xPR0lDQUwpCkBAIC0xMDI4LDcgKzEwMzMsNyBA QCBBbHRlclB1YmxpY2F0aW9uT3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGlj YXRpb25TdG10ICpzdG10LAogCQkJCQkJICAgQWNjZXNzU2hhcmVMb2NrKTsKIAogCQlyb290X3Jl bGlkcyA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmZvcm0tPm9pZCwKLQkJCQkJCQkJCQkJ ICBQVUJMSUNBVElPTl9QQVJUX1JPT1QpOworCQkJCQkJCQkJCQkgIFBVQkxJQ0FUSU9OX1BBUlRf Uk9PVCwgZmFsc2UpOwogCiAJCWZvcmVhY2gobGMsIHJvb3RfcmVsaWRzKQogCQl7CkBAIC0xMTQ4 LDcgKzExNTMsNyBAQCBBbHRlclB1YmxpY2F0aW9uT3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUs IEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAogCQkgKi8KIAkJaWYgKHJvb3RfcmVsaWRzID09 IE5JTCkKIAkJCXJlbGlkcyA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmZvcm0tPm9pZCwK LQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfQUxMKTsKKwkJCQkJCQkJCQkJIFBVQkxJQ0FU SU9OX1BBUlRfQUxMLCBmYWxzZSk7CiAJCWVsc2UKIAkJewogCQkJLyoKQEAgLTEyNDQsNiArMTI0 OSwyNyBAQCBBbHRlclB1YmxpY2F0aW9uUmVzZXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1 YmxpY2F0aW9uU3RtdCAqc3RtdCwKIAl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJnZW5j b2xzIC0gMV0gPSBDaGFyR2V0RGF0dW0oUFVCX0RFRkFVTFRfR0VOQ09MUyk7CiAJcmVwbGFjZXNb QW51bV9wZ19wdWJsaWNhdGlvbl9wdWJnZW5jb2xzIC0gMV0gPSB0cnVlOwogCisJLyoKKwkgKiBM b2NrIHRoZSBwdWJsaWNhdGlvbiBzbyBub2JvZHkgZWxzZSBjYW4gZG8gYW55dGhpbmcgd2l0aCBp dC4gVGhpcworCSAqIHByZXZlbnRzIGNvbmN1cnJlbnQgcHVibGljYXRpb24gcGFyYW1ldGVyIGNo YW5nZXMsIGFkZC9kcm9wIHRhYmxlcyhzKQorCSAqIHRvIHRoZSBwdWJsaWNhdGlvbiBhbmQgYWRk L2Ryb3Agc2NoZW1hKHMpIHRvIHRoZSBwdWJsaWNhdGlvbi4KKwkgKi8KKwlMb2NrRGF0YWJhc2VP YmplY3QoUHVibGljYXRpb25SZWxhdGlvbklkLCBwdWJpZCwgMCwKKwkJCQkJICAgQWNjZXNzRXhj bHVzaXZlTG9jayk7CisKKwkvKgorCSAqIEl0IGlzIHBvc3NpYmxlIHRoYXQgYnkgdGhlIHRpbWUg d2UgYWNxdWlyZSB0aGUgbG9jayBvbiBwdWJsaWNhdGlvbiwKKwkgKiBjb25jdXJyZW50IERETCBo YXMgcmVtb3ZlZCBpdC4gV2UgY2FuIHRlc3QgdGhpcyBieSBjaGVja2luZyB0aGUKKwkgKiBleGlz dGVuY2Ugb2YgcHVibGljYXRpb24uIFdlIGdldCB0aGUgdHVwbGUgYWdhaW4gdG8gYXZvaWQgdGhl IHJpc2sgb2YKKwkgKiBhbnkgcHVibGljYXRpb24gb3B0aW9uIGdldHRpbmcgY2hhbmdlZC4KKwkg Ki8KKwl0dXAgPSBTZWFyY2hTeXNDYWNoZUNvcHkxKFBVQkxJQ0FUSU9OT0lELCBPYmplY3RJZEdl dERhdHVtKHB1YmlkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJCWVyZXBvcnQo RVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCWVycm1z ZygicHVibGljYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJICAgc3RtdC0+cHVi bmFtZSkpOworCiAJLyogU2V0IEFMTCBUQUJMRVMgZmxhZyB0byBmYWxzZSAqLwogCWlmIChwdWJm b3JtLT5wdWJhbGx0YWJsZXMpCiAJewpAQCAtMTI3MSw3ICsxMjk3LDEwIEBAIEFsdGVyUHVibGlj YXRpb25SZXNldChQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10 LAogCVB1YmxpY2F0aW9uRHJvcFNjaGVtYXMocHViaWQsIHNjaGVtYWlkcywgdHJ1ZSk7CiAKIAkv KiBHZXQgYWxsIHJlbGF0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlIHB1YmxpY2F0aW9uICovCi0J cmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViaWQsIFBVQkxJQ0FUSU9OX1BBUlRf Uk9PVCk7CisJaWYgKHB1YmZvcm0tPnB1YmFsbHRhYmxlcykKKwkJcmVsaWRzID0gR2V0UHVibGlj YXRpb25SZWxhdGlvbnMocHViaWQsIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCwgdHJ1ZSk7CisJZWxz ZQorCQlyZWxpZHMgPSBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJpZCwgUFVCTElDQVRJT05f UEFSVF9ST09ULCBmYWxzZSk7CiAKIAlmb3JlYWNoX29pZChyZWxpZCwgcmVsaWRzKQogCXsKQEAg LTEyODksNiArMTMxOCw3OSBAQCBBbHRlclB1YmxpY2F0aW9uUmVzZXQoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKIAlDbG9zZVRhYmxlTGlzdChyZWxzKTsK IH0KIAorLyoKKyAqIENoZWNrIGlmIHRoZSBwdWJsaWNhdGlvbiBoYXMgZGVmYXVsdCB2YWx1ZXMu CisgKgorICogUmV0dXJucyB0cnVlIGlmIHRoZSBwdWJsaWNhdGlvbiBzYXRpc2ZpZXMgYWxsIHRo ZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqIGEpIFB1YmxpY2F0aW9uIGlzIG5vdCBzZXQgd2l0 aCAiRk9SIEFMTCBUQUJMRVMiCisgKiBiKSBQdWJsaWNhdGlvbiBpcyBoYXZpbmcgZGVmYXVsdCBw dWJsaWNhdGlvbiBwYXJhbWV0ZXIgdmFsdWVzCisgKiBjKSBQdWJsaWNhdGlvbiBpcyBub3QgYXNz b2NpYXRlZCB3aXRoIHNjaGVtYXMKKyAqIGQpIFB1YmxpY2F0aW9uIGlzIG5vdCBhc3NvY2lhdGVk IHdpdGggcmVsYXRpb25zCisgKi8KK3N0YXRpYyBib29sCitDaGVja1B1YmxpY2F0aW9uRGVmVmFs dWVzKEhlYXBUdXBsZSB0dXApCit7CisJRm9ybV9wZ19wdWJsaWNhdGlvbiBwdWJmb3JtID0gKEZv cm1fcGdfcHVibGljYXRpb24pIEdFVFNUUlVDVCh0dXApOworCU9pZAkJCXB1YmlkID0gcHViZm9y bS0+b2lkOworCUxpc3QJICAgKnB1Ym9ianMgPSBOSUw7CisKKwlpZiAocHViZm9ybS0+cHViYWxs dGFibGVzICE9IFBVQl9ERUZBVUxUX0FMTF9UQUJMRVMpCisJCXJldHVybiBmYWxzZTsKKworCWlm IChwdWJmb3JtLT5wdWJpbnNlcnQgIT0gUFVCX0RFRkFVTFRfQUNUSU9OX0lOU0VSVCB8fAorCQlw dWJmb3JtLT5wdWJ1cGRhdGUgIT0gUFVCX0RFRkFVTFRfQUNUSU9OX1VQREFURSB8fAorCQlwdWJm b3JtLT5wdWJkZWxldGUgIT0gUFVCX0RFRkFVTFRfQUNUSU9OX0RFTEVURSB8fAorCQlwdWJmb3Jt LT5wdWJ0cnVuY2F0ZSAhPSBQVUJfREVGQVVMVF9BQ1RJT05fVFJVTkNBVEUgfHwKKwkJcHViZm9y bS0+cHVidmlhcm9vdCAhPSBQVUJfREVGQVVMVF9WSUFfUk9PVCkKKwkJcmV0dXJuIGZhbHNlOwor CisJcHVib2JqcyA9IEdldFB1YmxpY2F0aW9uU2NoZW1hcyhwdWJpZCk7CisJaWYgKGxpc3RfbGVu Z3RoKHB1Ym9ianMpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlwdWJvYmpzID0gR2V0UHVibGljYXRp b25SZWxhdGlvbnMocHViaWQsIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCwgZmFsc2UpOworCWlmIChs aXN0X2xlbmd0aChwdWJvYmpzKSkKKwkJcmV0dXJuIGZhbHNlOworCisJcmV0dXJuIHRydWU7Cit9 CisKKy8qCisgKiBTZXQgcHVibGljYXRpb24gdG8gcHVibGlzaCBhbGwgdGFibGVzLgorICovCitz dGF0aWMgdm9pZAorQWx0ZXJQdWJsaWNhdGlvblNldEFsbFRhYmxlcyhSZWxhdGlvbiByZWwsIEhl YXBUdXBsZSB0dXApCit7CisJRm9ybV9wZ19wdWJsaWNhdGlvbiBwdWJmb3JtIFBHX1VTRURfRk9S X0FTU0VSVFNfT05MWSA9IChGb3JtX3BnX3B1YmxpY2F0aW9uKSBHRVRTVFJVQ1QodHVwKTsKKwli b29sCQludWxsc1tOYXR0c19wZ19wdWJsaWNhdGlvbl07CisJYm9vbAkJcmVwbGFjZXNbTmF0dHNf cGdfcHVibGljYXRpb25dOworCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfcHVibGljYXRpb25dOwor CisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORworCUFzc2VydCghcHViZm9ybS0+cHViYWxsdGFi bGVzKTsKKyNlbmRpZgorCisJLyogQWRkIEFMTCBUQUJMRVMgdG8gdGhlIHB1YmxpY2F0aW9uIHJl cXVpcmVzIHN1cGVydXNlciAqLworCWlmICghc3VwZXJ1c2VyKCkpCisJCWVyZXBvcnQoRVJST1Is CisJCQkJZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAorCQkJCWVycm1z ZygibXVzdCBiZSBzdXBlcnVzZXIgdG8gQUREIEFMTCBUQUJMRVMgdG8gdGhlIHB1YmxpY2F0aW9u IikpOworCisJbWVtc2V0KHZhbHVlcywgMCwgc2l6ZW9mKHZhbHVlcykpOworCW1lbXNldChudWxs cywgZmFsc2UsIHNpemVvZihudWxscykpOworCW1lbXNldChyZXBsYWNlcywgZmFsc2UsIHNpemVv ZihyZXBsYWNlcykpOworCisJLyogU2V0IEFMTCBUQUJMRVMgZmxhZyAqLworCXZhbHVlc1tBbnVt X3BnX3B1YmxpY2F0aW9uX3B1YmFsbHRhYmxlcyAtIDFdID0gQm9vbEdldERhdHVtKHRydWUpOwor CXJlcGxhY2VzW0FudW1fcGdfcHVibGljYXRpb25fcHViYWxsdGFibGVzIC0gMV0gPSB0cnVlOwor CisJdHVwID0gaGVhcF9tb2RpZnlfdHVwbGUodHVwLCBSZWxhdGlvbkdldERlc2NyKHJlbCksIHZh bHVlcywgbnVsbHMsCisJCQkJCQkJcmVwbGFjZXMpOworCisJLyogVXBkYXRlIHRoZSBjYXRhbG9n LiAqLworCUNhdGFsb2dUdXBsZVVwZGF0ZShyZWwsICZ0dXAtPnRfc2VsZiwgdHVwKTsKK30KKwog LyoKICAqIEFkZCBvciByZW1vdmUgdGFibGUgdG8vZnJvbSBwdWJsaWNhdGlvbi4KICAqLwpAQCAt MTMyNyw3ICsxNDI5LDggQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9u U3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAllbHNlCQkJCQkJLyogQVBfU2V0T2JqZWN0cyAq LwogCXsKIAkJTGlzdAkgICAqb2xkcmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMocHVi aWQsCi0JCQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CisJCQkJCQkJCQkJCQkJ CVBVQkxJQ0FUSU9OX1BBUlRfUk9PVCwKKwkJCQkJCQkJCQkJCQkJZmFsc2UpOwogCQlMaXN0CSAg ICpkZWxyZWxzID0gTklMOwogCQlMaXN0Q2VsbCAgICpvbGRsYzsKIApAQCAtMTQyOCw2ICsxNTMx LDcgQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwg SGVhcFR1cGxlIHR1cCwKIAkJCQlvbGRyZWwgPSBwYWxsb2Moc2l6ZW9mKFB1YmxpY2F0aW9uUmVs SW5mbykpOwogCQkJCW9sZHJlbC0+d2hlcmVDbGF1c2UgPSBOVUxMOwogCQkJCW9sZHJlbC0+Y29s dW1ucyA9IE5JTDsKKwkJCQlvbGRyZWwtPmV4Y2VwdCA9IGZhbHNlOwogCQkJCW9sZHJlbC0+cmVs YXRpb24gPSB0YWJsZV9vcGVuKG9sZHJlbGlkLAogCQkJCQkJCQkJCQkgIFNoYXJlVXBkYXRlRXhj bHVzaXZlTG9jayk7CiAJCQkJZGVscmVscyA9IGxhcHBlbmQoZGVscmVscywgb2xkcmVsKTsKQEAg LTE0NzgsNyArMTU4Miw4IEBAIEFsdGVyUHVibGljYXRpb25TY2hlbWFzKEFsdGVyUHVibGljYXRp b25TdG10ICpzdG10LAogCQlMaXN0Q2VsbCAgICpsYzsKIAkJTGlzdAkgICAqcmVsb2lkczsKIAot CQlyZWxvaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViZm9ybS0+b2lkLCBQVUJMSUNB VElPTl9QQVJUX1JPT1QpOworCQlyZWxvaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMocHVi Zm9ybS0+b2lkLCBQVUJMSUNBVElPTl9QQVJUX1JPT1QsCisJCQkJCQkJCQkJICBmYWxzZSk7CiAK IAkJZm9yZWFjaChsYywgcmVsb2lkcykKIAkJewpAQCAtMTYwMSw2ICsxNzA2LDIwIEBAIEFsdGVy UHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3Rt dCkKIAkJYWNsY2hlY2tfZXJyb3IoQUNMQ0hFQ0tfTk9UX09XTkVSLCBPQkpFQ1RfUFVCTElDQVRJ T04sCiAJCQkJCSAgIHN0bXQtPnB1Ym5hbWUpOwogCisJaWYgKHN0bXQtPmZvcl9hbGxfdGFibGVz KQorCXsKKwkJYm9vbAkJaXNkZWZhdWx0ID0gQ2hlY2tQdWJsaWNhdGlvbkRlZlZhbHVlcyh0dXAp OworCisJCWlmICghaXNkZWZhdWx0KQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShF UlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQllcnJtc2coImFkZGluZyBB TEwgVEFCTEVTIHJlcXVpcmVzIHRoZSBwdWJsaWNhdGlvbiB0byBoYXZlIGRlZmF1bHQgcHVibGlj YXRpb24gcGFyYW1ldGVyIHZhbHVlcyIpLAorCQkJCQllcnJkZXRhaWwoIkFMTCBUQUJMRVMgZmxh ZyBzaG91bGQgbm90IGJlIHNldCBhbmQgbm8gdGFibGVzL3NjaGVtYXMgc2hvdWxkIGJlIGFzc29j aWF0ZWQuIiksCisJCQkJCWVycmhpbnQoIlVzZSBBTFRFUiBQVUJMSUNBVElPTiAuLi4gUkVTRVQg dG8gcmVzZXQgdGhlIHB1YmxpY2F0aW9uIikpOworCisJCUFsdGVyUHVibGljYXRpb25TZXRBbGxU YWJsZXMocmVsLCB0dXApOworCX0KKwogCWlmIChzdG10LT5vcHRpb25zKQogCQlBbHRlclB1Ymxp Y2F0aW9uT3B0aW9ucyhwc3RhdGUsIHN0bXQsIHJlbCwgdHVwKTsKIAllbHNlIGlmIChzdG10LT5h Y3Rpb24gPT0gQVBfUmVzZXRQdWJsaWNhdGlvbikKQEAgLTE4MTMsNiArMTkzMiw3IEBAIE9wZW5U YWJsZUxpc3QoTGlzdCAqdGFibGVzKQogCQlwdWJfcmVsLT5yZWxhdGlvbiA9IHJlbDsKIAkJcHVi X3JlbC0+d2hlcmVDbGF1c2UgPSB0LT53aGVyZUNsYXVzZTsKIAkJcHViX3JlbC0+Y29sdW1ucyA9 IHQtPmNvbHVtbnM7CisJCXB1Yl9yZWwtPmV4Y2VwdCA9IHQtPmV4Y2VwdDsKIAkJcmVscyA9IGxh cHBlbmQocmVscywgcHViX3JlbCk7CiAJCXJlbGlkcyA9IGxhcHBlbmRfb2lkKHJlbGlkcywgbXly ZWxpZCk7CiAKQEAgLTE4ODUsNiArMjAwNSw3IEBAIE9wZW5UYWJsZUxpc3QoTGlzdCAqdGFibGVz KQogCiAJCQkJLyogY2hpbGQgaW5oZXJpdHMgY29sdW1uIGxpc3QgZnJvbSBwYXJlbnQgKi8KIAkJ CQlwdWJfcmVsLT5jb2x1bW5zID0gdC0+Y29sdW1uczsKKwkJCQlwdWJfcmVsLT5leGNlcHQgPSB0 LT5leGNlcHQ7CiAJCQkJcmVscyA9IGxhcHBlbmQocmVscywgcHViX3JlbCk7CiAJCQkJcmVsaWRz ID0gbGFwcGVuZF9vaWQocmVsaWRzLCBjaGlsZHJlbGlkKTsKIApAQCAtMTk2MCw4ICsyMDgxLDYg QEAgUHVibGljYXRpb25BZGRUYWJsZXMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBib29sIGlmX25v dF9leGlzdHMsCiB7CiAJTGlzdENlbGwgICAqbGM7CiAKLQlBc3NlcnQoIXN0bXQgfHwgIXN0bXQt PmZvcl9hbGxfdGFibGVzKTsKLQogCWZvcmVhY2gobGMsIHJlbHMpCiAJewogCQlQdWJsaWNhdGlv blJlbEluZm8gKnB1Yl9yZWwgPSAoUHVibGljYXRpb25SZWxJbmZvICopIGxmaXJzdChsYyk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IGM2ZGQyZTAyMGRhLi44ZjNiODEwYTU5NCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTg2MjMsNyArODYyMyw3IEBAIEFURXhlY1NldEV4 cHJlc3Npb24oQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIg KmNvbE5hbWUsCiAJICogZXhwcmVzc2lvbnMuCiAJICovCiAJaWYgKGF0dGdlbmVyYXRlZCA9PSBB VFRSSUJVVEVfR0VORVJBVEVEX1ZJUlRVQUwgJiYKLQkJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMo UmVsYXRpb25HZXRSZWxpZChyZWwpKSAhPSBOSUwpCisJCUdldFJlbGF0aW9uUHVibGljYXRpb25z KFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgZmFsc2UpICE9IE5JTCkKIAkJZXJlcG9ydChFUlJPUiwK IAkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJIGVycm1z ZygiQUxURVIgVEFCTEUgLyBTRVQgRVhQUkVTU0lPTiBpcyBub3Qgc3VwcG9ydGVkIGZvciB2aXJ0 dWFsIGdlbmVyYXRlZCBjb2x1bW5zIGluIHRhYmxlcyB0aGF0IGFyZSBwYXJ0IG9mIGEgcHVibGlj YXRpb24iKSwKQEAgLTE4ODE4LDcgKzE4ODE4LDcgQEAgQVRQcmVwQ2hhbmdlUGVyc2lzdGVuY2Uo QWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsIGJvb2wgdG9Mb2dnZWQpCiAJICog VU5MT0dHRUQsIGFzIFVOTE9HR0VEIHRhYmxlcyBjYW4ndCBiZSBwdWJsaXNoZWQuCiAJICovCiAJ aWYgKCF0b0xvZ2dlZCAmJgotCQlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhSZWxhdGlvbkdldFJl bGlkKHJlbCkpICE9IE5JTCkKKwkJbGlzdF9sZW5ndGgoR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMo UmVsYXRpb25HZXRSZWxpZChyZWwpLCBmYWxzZSkpID4gMCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJ CQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKIAkJ CQkgZXJybXNnKCJjYW5ub3QgY2hhbmdlIHRhYmxlIFwiJXNcIiB0byB1bmxvZ2dlZCBiZWNhdXNl IGl0IGlzIHBhcnQgb2YgYSBwdWJsaWNhdGlvbiIsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCA0YTQwMTAyOTZh Zi4uNDliYWMwMzRkMTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysr IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHN0YXRpYyBO b2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2Vz LCBOb2RlICpxdWVyeSk7CiAJCQkJdHJhbnNmb3JtX2VsZW1lbnRfbGlzdCB0cmFuc2Zvcm1fdHlw ZV9saXN0CiAJCQkJVHJpZ2dlclRyYW5zaXRpb25zIFRyaWdnZXJSZWZlcmVuY2luZwogCQkJCXZh Y3V1bV9yZWxhdGlvbl9saXN0IG9wdF92YWN1dW1fcmVsYXRpb25fbGlzdAotCQkJCWRyb3Bfb3B0 aW9uX2xpc3QgcHViX29ial9saXN0CisJCQkJZHJvcF9vcHRpb25fbGlzdCBwdWJfb2JqX2xpc3Qg ZXhjZXB0X3B1Yl9vYmpfbGlzdAogCiAldHlwZSA8cmV0Y2xhdXNlPiByZXR1cm5pbmdfY2xhdXNl CiAldHlwZSA8bm9kZT4JcmV0dXJuaW5nX29wdGlvbgpAQCAtNTg0LDYgKzU4NCw3IEBAIHN0YXRp YyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlh c2VzLCBOb2RlICpxdWVyeSk7CiAldHlwZSA8bm9kZT4JdmFyX3ZhbHVlIHpvbmVfdmFsdWUKICV0 eXBlIDxyb2xlc3BlYz4gYXV0aF9pZGVudCBSb2xlU3BlYyBvcHRfZ3JhbnRlZF9ieQogJXR5cGUg PHB1YmxpY2F0aW9ub2JqZWN0c3BlYz4gUHVibGljYXRpb25PYmpTcGVjCisldHlwZSA8cHVibGlj YXRpb25vYmplY3RzcGVjPiBFeGNlcHRQdWJsaWNhdGlvbk9ialNwZWMKIAogJXR5cGUgPGtleXdv cmQ+IHVucmVzZXJ2ZWRfa2V5d29yZCB0eXBlX2Z1bmNfbmFtZV9rZXl3b3JkCiAldHlwZSA8a2V5 d29yZD4gY29sX25hbWVfa2V5d29yZCByZXNlcnZlZF9rZXl3b3JkCkBAIC0xMDcwMiw3ICsxMDcw Myw3IEBAIEFsdGVyT3duZXJTdG10OiBBTFRFUiBBR0dSRUdBVEUgYWdncmVnYXRlX3dpdGhfYXJn dHlwZXMgT1dORVIgVE8gUm9sZVNwZWMKICAqCiAgKiBDUkVBVEUgUFVCTElDQVRJT04gbmFtZSBb V0lUSCBvcHRpb25zXQogICoKLSAqIENSRUFURSBQVUJMSUNBVElPTiBGT1IgQUxMIFRBQkxFUyBb V0lUSCBvcHRpb25zXQorICogQ1JFQVRFIFBVQkxJQ0FUSU9OIEZPUiBBTEwgVEFCTEVTIFtFWENF UFQgW1RBQkxFXSB0YWJsZSBbLCAuLi5dXSBbV0lUSCBvcHRpb25zXQogICoKICAqIENSRUFURSBQ VUJMSUNBVElPTiBGT1IgcHViX29iaiBbLCAuLi5dIFtXSVRIIG9wdGlvbnNdCiAgKgpAQCAtMTA3 MjIsMTIgKzEwNzIzLDEzIEBAIENyZWF0ZVB1YmxpY2F0aW9uU3RtdDoKIAkJCQkJbi0+b3B0aW9u cyA9ICQ0OwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQotCQkJfCBDUkVBVEUgUFVCTElD QVRJT04gbmFtZSBGT1IgQUxMIFRBQkxFUyBvcHRfZGVmaW5pdGlvbgorCQkJfCBDUkVBVEUgUFVC TElDQVRJT04gbmFtZSBGT1IgQUxMIFRBQkxFUyBleGNlcHRfcHViX29ial9saXN0IG9wdF9kZWZp bml0aW9uCiAJCQkJewogCQkJCQlDcmVhdGVQdWJsaWNhdGlvblN0bXQgKm4gPSBtYWtlTm9kZShD cmVhdGVQdWJsaWNhdGlvblN0bXQpOwogCiAJCQkJCW4tPnB1Ym5hbWUgPSAkMzsKLQkJCQkJbi0+ b3B0aW9ucyA9ICQ3OworCQkJCQluLT5vcHRpb25zID0gJDg7CisJCQkJCW4tPnB1Ym9iamVjdHMg PSAoTGlzdCAqKSQ3OwogCQkJCQluLT5mb3JfYWxsX3RhYmxlcyA9IHRydWU7CiAJCQkJCSQkID0g KE5vZGUgKikgbjsKIAkJCQl9CkBAIC0xMDc2NSw2ICsxMDc2Nyw3IEBAIFB1YmxpY2F0aW9uT2Jq U3BlYzoKIAkJCQkJJCQtPnB1YnRhYmxlLT5yZWxhdGlvbiA9ICQyOwogCQkJCQkkJC0+cHVidGFi bGUtPmNvbHVtbnMgPSAkMzsKIAkJCQkJJCQtPnB1YnRhYmxlLT53aGVyZUNsYXVzZSA9ICQ0Owor CQkJCQkkJC0+bG9jYXRpb24gPSBAMTsKIAkJCQl9CiAJCQl8IFRBQkxFUyBJTl9QIFNDSEVNQSBD b2xJZAogCQkJCXsKQEAgLTEwODQwLDYgKzEwODQzLDI1IEBAIHB1Yl9vYmpfbGlzdDoJUHVibGlj YXRpb25PYmpTcGVjCiAJCQkJCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KIAk7CiAKK0V4Y2Vw dFB1YmxpY2F0aW9uT2JqU3BlYzoKKwkJCSByZWxhdGlvbl9leHByCisJCQkJeworCQkJCQkkJCA9 IG1ha2VOb2RlKFB1YmxpY2F0aW9uT2JqU3BlYyk7CisJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVC TElDQVRJT05PQkpfRVhDRVBUX1RBQkxFOworCQkJCQkkJC0+cHVidGFibGUgPSBtYWtlTm9kZShQ dWJsaWNhdGlvblRhYmxlKTsKKwkJCQkJJCQtPnB1YnRhYmxlLT5leGNlcHQgPSB0cnVlOworCQkJ CQkkJC0+cHVidGFibGUtPnJlbGF0aW9uID0gJDE7CisJCQkJCSQkLT5sb2NhdGlvbiA9IEAxOwor CQkJCX0KKwk7CisKK2V4Y2VwdF9wdWJfb2JqX2xpc3Q6CUVYQ0VQVCBvcHRfdGFibGUgRXhjZXB0 UHVibGljYXRpb25PYmpTcGVjCisJCQkJCXsgJCQgPSBsaXN0X21ha2UxKCQzKTsgfQorCQkJfCBl eGNlcHRfcHViX29ial9saXN0ICcsJyBFeGNlcHRQdWJsaWNhdGlvbk9ialNwZWMKKwkJCQkJeyAk JCA9IGxhcHBlbmQoJDEsICQzKTsgfQorCQkJfCAgLypFTVBUWSovCQkJCQkJCQl7ICQkID0gTlVM TDsgfQorCTsKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogQUxURVIgUFVCTElDQVRJ T04gbmFtZSBTRVQgKCBvcHRpb25zICkKQEAgLTEwODUyLDYgKzEwODc0LDggQEAgcHViX29ial9s aXN0OglQdWJsaWNhdGlvbk9ialNwZWMKICAqCiAgKiBBTFRFUiBQVUJMSUNBVElPTiBuYW1lIFJF U0VUCiAgKgorICogQUxURVIgUFVCTElDQVRJT04gbmFtZSBBREQgQUxMIFRBQkxFUyBFWENFUFQg W1RBQkxFXSB0YWJsZV9uYW1lIFssIC4uLl0KKyAqCiAgKiBwdWJfb2JqIGlzIG9uZSBvZjoKICAq CiAgKgkJVEFCTEUgdGFibGVfbmFtZSBbLCAuLi5dCkBAIC0xMDg3OCw2ICsxMDkwMiwxNSBAQCBB bHRlclB1YmxpY2F0aW9uU3RtdDoKIAkJCQkJbi0+YWN0aW9uID0gQVBfQWRkT2JqZWN0czsKIAkJ CQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KKwkJCXwgQUxURVIgUFVCTElDQVRJT04gbmFtZSBB RERfUCBBTEwgVEFCTEVTIGV4Y2VwdF9wdWJfb2JqX2xpc3QKKwkJCQl7CisJCQkJCUFsdGVyUHVi bGljYXRpb25TdG10ICpuID0gbWFrZU5vZGUoQWx0ZXJQdWJsaWNhdGlvblN0bXQpOworCQkJCQlu LT5wdWJuYW1lID0gJDM7CisJCQkJCW4tPnB1Ym9iamVjdHMgPSAkNzsKKwkJCQkJbi0+Zm9yX2Fs bF90YWJsZXMgPSB0cnVlOworCQkJCQluLT5hY3Rpb24gPSBBUF9BZGRPYmplY3RzOworCQkJCQkk JCA9IChOb2RlICopbjsKKwkJCQl9CiAJCQl8IEFMVEVSIFBVQkxJQ0FUSU9OIG5hbWUgU0VUIHB1 Yl9vYmpfbGlzdAogCQkJCXsKIAkJCQkJQWx0ZXJQdWJsaWNhdGlvblN0bXQgKm4gPSBtYWtlTm9k ZShBbHRlclB1YmxpY2F0aW9uU3RtdCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRw dXQvcGdvdXRwdXQuYwppbmRleCA4MDU0MGMwMTdiZC4uYjlkNjc2ZDFmMTggMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwpAQCAtMjA2NSw3ICsyMDY1LDgg QEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRp b24pCiAJaWYgKCFlbnRyeS0+cmVwbGljYXRlX3ZhbGlkKQogCXsKIAkJT2lkCQkJc2NoZW1hSWQg PSBnZXRfcmVsX25hbWVzcGFjZShyZWxpZCk7Ci0JCUxpc3QJICAgKnB1YmlkcyA9IEdldFJlbGF0 aW9uUHVibGljYXRpb25zKHJlbGlkKTsKKwkJTGlzdAkgICAqcHViaWRzID0gR2V0UmVsYXRpb25Q dWJsaWNhdGlvbnMocmVsaWQsIGZhbHNlKTsKKwkJTGlzdAkgICAqZXhjZXB0VGFibGVQdWJpZHMg PSBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhyZWxpZCwgdHJ1ZSk7CiAKIAkJLyoKIAkJICogV2Ug ZG9uJ3QgYWNxdWlyZSBhIGxvY2sgb24gdGhlIG5hbWVzcGFjZSBzeXN0ZW0gdGFibGUgYXMgd2Ug YnVpbGQKQEAgLTIxNzYsMjIgKzIxNzcsNiBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXRE YXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAkJCU9pZAkJCXB1Yl9yZWxpZCA9IHJlbGlk OwogCQkJaW50CQkJYW5jZXN0b3JfbGV2ZWwgPSAwOwogCi0JCQkvKgotCQkJICogSWYgdGhpcyBp cyBhIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9uLCBwaWNrIHRoZSBwYXJ0aXRpb24KLQkJCSAq IHJvb3QgYW5kIHNldCB0aGUgYW5jZXN0b3IgbGV2ZWwgYWNjb3JkaW5nbHkuCi0JCQkgKi8KLQkJ CWlmIChwdWItPmFsbHRhYmxlcykKLQkJCXsKLQkJCQlwdWJsaXNoID0gdHJ1ZTsKLQkJCQlpZiAo cHViLT5wdWJ2aWFyb290ICYmIGFtX3BhcnRpdGlvbikKLQkJCQl7Ci0JCQkJCUxpc3QJICAgKmFu Y2VzdG9ycyA9IGdldF9wYXJ0aXRpb25fYW5jZXN0b3JzKHJlbGlkKTsKLQotCQkJCQlwdWJfcmVs aWQgPSBsbGFzdF9vaWQoYW5jZXN0b3JzKTsKLQkJCQkJYW5jZXN0b3JfbGV2ZWwgPSBsaXN0X2xl bmd0aChhbmNlc3RvcnMpOwotCQkJCX0KLQkJCX0KLQogCQkJaWYgKCFwdWJsaXNoKQogCQkJewog CQkJCWJvb2wJCWFuY2VzdG9yX3B1Ymxpc2hlZCA9IGZhbHNlOwpAQCAtMjIxMCw3ICsyMTk1LDgg QEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRp b24pCiAKIAkJCQkJYW5jZXN0b3IgPSBHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKHB1 Yi0+b2lkLAogCQkJCQkJCQkJCQkJCQkJICAgYW5jZXN0b3JzLAotCQkJCQkJCQkJCQkJCQkJICAg JmxldmVsKTsKKwkJCQkJCQkJCQkJCQkJCSAgICZsZXZlbCwKKwkJCQkJCQkJCQkJCQkJCSAgIHB1 Yi0+YWxsdGFibGVzKTsKIAogCQkJCQlpZiAoYW5jZXN0b3IgIT0gSW52YWxpZE9pZCkKIAkJCQkJ ewpAQCAtMjIyNSw2ICsyMjExLDggQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAq ZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAKIAkJCQlpZiAobGlzdF9tZW1iZXJfb2lkKHB1Ymlk cywgcHViLT5vaWQpIHx8CiAJCQkJCWxpc3RfbWVtYmVyX29pZChzY2hlbWFQdWJpZHMsIHB1Yi0+ b2lkKSB8fAorCQkJCQkocHViLT5hbGx0YWJsZXMgJiYKKwkJCQkJICFsaXN0X21lbWJlcl9vaWQo ZXhjZXB0VGFibGVQdWJpZHMsIHB1Yi0+b2lkKSkgfHwKIAkJCQkJYW5jZXN0b3JfcHVibGlzaGVk KQogCQkJCQlwdWJsaXNoID0gdHJ1ZTsKIAkJCX0KQEAgLTIzMDMsNiArMjI5MSw3IEBAIGdldF9y ZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCiAJ CWxpc3RfZnJlZShwdWJpZHMpOwogCQlsaXN0X2ZyZWUoc2NoZW1hUHViaWRzKTsKKwkJbGlzdF9m cmVlKGV4Y2VwdFRhYmxlUHViaWRzKTsKIAkJbGlzdF9mcmVlKHJlbF9wdWJsaWNhdGlvbnMpOwog CiAJCWVudHJ5LT5yZXBsaWNhdGVfdmFsaWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNh Y2hlLmMKaW5kZXggNmZlMjY4YThlZWMuLmViY2Y2ZDNiZDMyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L3JlbGNhY2hlLmMKQEAgLTU3OTQsNiArNTc5NCw4IEBAIHZvaWQKIFJlbGF0aW9uQnVpbGRQdWJs aWNhdGlvbkRlc2MoUmVsYXRpb24gcmVsYXRpb24sIFB1YmxpY2F0aW9uRGVzYyAqcHViZGVzYykK IHsKIAlMaXN0CSAgICpwdWJvaWRzOworCUxpc3QJICAgKmFsbHRhYmxlc3B1Ym9pZHM7CisJTGlz dAkgICAqZXhjZXB0cHVib2lkcyA9IE5JTDsKIAlMaXN0Q2VsbCAgICpsYzsKIAlNZW1vcnlDb250 ZXh0IG9sZGN4dDsKIAlPaWQJCQlzY2hlbWFpZDsKQEAgLTU4MzEsOSArNTgzMywxMCBAQCBSZWxh dGlvbkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJsaWNhdGlvbkRl c2MgKnB1YmRlc2MpCiAJcHViZGVzYy0+Z2VuY29sc192YWxpZF9mb3JfZGVsZXRlID0gdHJ1ZTsK IAogCS8qIEZldGNoIHRoZSBwdWJsaWNhdGlvbiBtZW1iZXJzaGlwIGluZm8uICovCi0JcHVib2lk cyA9IEdldFJlbGF0aW9uUHVibGljYXRpb25zKHJlbGlkKTsKKwlwdWJvaWRzID0gR2V0UmVsYXRp b25QdWJsaWNhdGlvbnMocmVsaWQsIGZhbHNlKTsKIAlzY2hlbWFpZCA9IFJlbGF0aW9uR2V0TmFt ZXNwYWNlKHJlbGF0aW9uKTsKIAlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJv aWRzLCBHZXRTY2hlbWFQdWJsaWNhdGlvbnMoc2NoZW1haWQpKTsKKwlleGNlcHRwdWJvaWRzID0g R2V0UmVsYXRpb25QdWJsaWNhdGlvbnMocmVsaWQsIHRydWUpOwogCiAJaWYgKHJlbGF0aW9uLT5y ZF9yZWwtPnJlbGlzcGFydGl0aW9uKQogCXsKQEAgLTU4NDUsMTQgKzU4NDgsMTkgQEAgUmVsYXRp b25CdWlsZFB1YmxpY2F0aW9uRGVzYyhSZWxhdGlvbiByZWxhdGlvbiwgUHVibGljYXRpb25EZXNj ICpwdWJkZXNjKQogCQkJT2lkCQkJYW5jZXN0b3IgPSBsZmlyc3Rfb2lkKGxjKTsKIAogCQkJcHVi b2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywKLQkJCQkJCQkJCQkJIEdldFJl bGF0aW9uUHVibGljYXRpb25zKGFuY2VzdG9yKSk7CisJCQkJCQkJCQkJCSBHZXRSZWxhdGlvblB1 YmxpY2F0aW9ucyhhbmNlc3RvciwgZmFsc2UpKTsKIAkJCXNjaGVtYWlkID0gZ2V0X3JlbF9uYW1l c3BhY2UoYW5jZXN0b3IpOwogCQkJcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVi b2lkcywKIAkJCQkJCQkJCQkJIEdldFNjaGVtYVB1YmxpY2F0aW9ucyhzY2hlbWFpZCkpOworCQkJ ZXhjZXB0cHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQoZXhjZXB0cHVib2lkcywKKwkJ CQkJCQkJCQkJCSAgIEdldFJlbGF0aW9uUHVibGljYXRpb25zKGFuY2VzdG9yLCB0cnVlKSk7CiAJ CX0KIAl9Ci0JcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywgR2V0QWxs VGFibGVzUHVibGljYXRpb25zKCkpOwogCisJYWxsdGFibGVzcHVib2lkcyA9IEdldEFsbFRhYmxl c1B1YmxpY2F0aW9ucygpOworCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9p ZHMsCisJCQkJCQkJCQkgbGlzdF9kaWZmZXJlbmNlX29pZChhbGx0YWJsZXNwdWJvaWRzLAorCQkJ CQkJCQkJCQkJCQkgZXhjZXB0cHVib2lkcykpOwogCWZvcmVhY2gobGMsIHB1Ym9pZHMpCiAJewog CQlPaWQJCQlwdWJpZCA9IGxmaXJzdF9vaWQobGMpOwpAQCAtNTg4Myw3ICs1ODkxLDcgQEAgUmVs YXRpb25CdWlsZFB1YmxpY2F0aW9uRGVzYyhSZWxhdGlvbiByZWxhdGlvbiwgUHVibGljYXRpb25E ZXNjICpwdWJkZXNjKQogCQlpZiAoIXB1YmZvcm0tPnB1YmFsbHRhYmxlcyAmJgogCQkJKHB1YmZv cm0tPnB1YnVwZGF0ZSB8fCBwdWJmb3JtLT5wdWJkZWxldGUpICYmCiAJCQlwdWJfcmZfY29udGFp bnNfaW52YWxpZF9jb2x1bW4ocHViaWQsIHJlbGF0aW9uLCBhbmNlc3RvcnMsCi0JCQkJCQkJCQkJ ICAgcHViZm9ybS0+cHVidmlhcm9vdCkpCisJCQkJCQkJCQkJICAgcHViZm9ybS0+cHVidmlhcm9v dCwgcHViZm9ybS0+cHViYWxsdGFibGVzKSkKIAkJewogCQkJaWYgKHB1YmZvcm0tPnB1YnVwZGF0 ZSkKIAkJCQlwdWJkZXNjLT5yZl92YWxpZF9mb3JfdXBkYXRlID0gZmFsc2U7CkBAIC01OTAxLDYg KzU5MDksNyBAQCBSZWxhdGlvbkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9u LCBQdWJsaWNhdGlvbkRlc2MgKnB1YmRlc2MpCiAJCQlwdWJfY29udGFpbnNfaW52YWxpZF9jb2x1 bW4ocHViaWQsIHJlbGF0aW9uLCBhbmNlc3RvcnMsCiAJCQkJCQkJCQkJcHViZm9ybS0+cHVidmlh cm9vdCwKIAkJCQkJCQkJCQlwdWJmb3JtLT5wdWJnZW5jb2xzLAorCQkJCQkJCQkJCXB1YmZvcm0t PnB1YmFsbHRhYmxlcywKIAkJCQkJCQkJCQkmaW52YWxpZF9jb2x1bW5fbGlzdCwKIAkJCQkJCQkJ CQkmaW52YWxpZF9nZW5fY29sKSkKIAkJewpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggZmM3YTY2MzkxNjMuLjEw NTAzMWE1Y2JjIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3Ny Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTE4Niw2ICsxODYsOCBAQCBzdGF0aWMgU2ltcGxl T2lkTGlzdCBleHRlbnNpb25faW5jbHVkZV9vaWRzID0ge05VTEwsIE5VTEx9Owogc3RhdGljIFNp bXBsZVN0cmluZ0xpc3QgZXh0ZW5zaW9uX2V4Y2x1ZGVfcGF0dGVybnMgPSB7TlVMTCwgTlVMTH07 CiBzdGF0aWMgU2ltcGxlT2lkTGlzdCBleHRlbnNpb25fZXhjbHVkZV9vaWRzID0ge05VTEwsIE5V TEx9OwogCitzdGF0aWMgU2ltcGxlUHRyTGlzdCBleGNlcHRpbmZvID0ge05VTEwsIE5VTEx9Owor CiBzdGF0aWMgY29uc3QgQ2F0YWxvZ0lkIG5pbENhdGFsb2dJZCA9IHswLCAwfTsKIAogLyogb3Zl cnJpZGUgZm9yIHN0YW5kYXJkIGV4dHJhX2Zsb2F0X2RpZ2l0cyBzZXR0aW5nICovCkBAIC00NTk3 LDggKzQ1OTksMzQgQEAgZHVtcFB1YmxpY2F0aW9uKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFB1Ymxp Y2F0aW9uSW5mbyAqcHViaW5mbykKIAkJCQkJICBxcHVibmFtZSk7CiAKIAlpZiAocHViaW5mby0+ cHViYWxsdGFibGVzKQorCXsKKwkJU2ltcGxlUHRyTGlzdENlbGwgKmNlbGw7CisKIAkJYXBwZW5k UFFFeHBCdWZmZXJTdHIocXVlcnksICIgRk9SIEFMTCBUQUJMRVMiKTsKIAorCQkvKiBJbmNsdWRl IGV4Y2VwdGlvbiB0YWJsZXMgaWYgdGhlIHB1YmxpY2F0aW9uIGhhcyBleGNlcHQgdGFibGVzICov CisJCWZvciAoY2VsbCA9IGV4Y2VwdGluZm8uaGVhZDsgY2VsbDsgY2VsbCA9IGNlbGwtPm5leHQp CisJCXsKKwkJCVB1YmxpY2F0aW9uUmVsSW5mbyAqcHVicmluZm8gPSAoUHVibGljYXRpb25SZWxJ bmZvICopIGNlbGwtPnB0cjsKKwkJCVRhYmxlSW5mbyAgKnRiaW5mbzsKKworCQkJaWYgKHB1Ymlu Zm8gPT0gcHVicmluZm8tPnB1YmxpY2F0aW9uKQorCQkJeworCQkJCXRiaW5mbyA9IHB1YnJpbmZv LT5wdWJ0YWJsZTsKKworCQkJCWlmIChmaXJzdCkKKwkJCQl7CisJCQkJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHF1ZXJ5LCAiIEVYQ0VQVCBUQUJMRSIpOworCQkJCQlmaXJzdCA9IGZhbHNlOworCQkJ CX0KKwkJCQllbHNlCisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCIpOworCQkJ CWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiIE9OTFkgJXMiLCBmbXRRdWFsaWZpZWREdW1wYWJs ZSh0YmluZm8pKTsKKwkJCX0KKwkJfQorCX0KKworCWZpcnN0ID0gdHJ1ZTsKIAlhcHBlbmRQUUV4 cEJ1ZmZlclN0cihxdWVyeSwgIiBXSVRIIChwdWJsaXNoID0gJyIpOwogCWlmIChwdWJpbmZvLT5w dWJpbnNlcnQpCiAJewpAQCAtNDc2NCw2ICs0NzkyLDcgQEAgZ2V0UHVibGljYXRpb25UYWJsZXMo QXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKIAlpbnQJ CQlpX3BycmVsaWQ7CiAJaW50CQkJaV9wcnJlbHF1YWw7CiAJaW50CQkJaV9wcmF0dHJzOworCWlu dAkJCWlfcHJleGNlcHQ7CiAJaW50CQkJaSwKIAkJCQlqLAogCQkJCW50dXBzOwpAQCAtNDc3NSw4 ICs0ODA0LDE2IEBAIGdldFB1YmxpY2F0aW9uVGFibGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5m byB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAKIAkvKiBDb2xsZWN0IGFsbCBwdWJsaWNhdGlv biBtZW1iZXJzaGlwIGluZm8uICovCiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTUwMDAw KQorCXsKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCisJCQkJCQkJICJTRUxFQ1QgdGFi bGVvaWQsIG9pZCwgcHJwdWJpZCwgcHJyZWxpZCxcbiIpOworCisJCWlmIChmb3V0LT5yZW1vdGVW ZXJzaW9uID49IDE5MDAwMCkKKwkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIHByZXhj ZXB0LFxuIik7CisJCWVsc2UKKwkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIGZhbHNl IEFTIHByZXhjZXB0LFxuIik7CisKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCi0JCQkJ CQkJICJTRUxFQ1QgdGFibGVvaWQsIG9pZCwgcHJwdWJpZCwgcHJyZWxpZCwgIgogCQkJCQkJCSAi cGdfY2F0YWxvZy5wZ19nZXRfZXhwcihwcnF1YWwsIHBycmVsaWQpIEFTIHBycmVscXVhbCwgIgog CQkJCQkJCSAiKENBU0VcbiIKIAkJCQkJCQkgIiAgV0hFTiBwci5wcmF0dHJzIElTIE5PVCBOVUxM IFRIRU5cbiIKQEAgLTQ3ODcsNiArNDgyNCw3IEBAIGdldFB1YmxpY2F0aW9uVGFibGVzKEFyY2hp dmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJCQkJCQkJICIg ICAgICBXSEVSRSBhdHRyZWxpZCA9IHByLnBycmVsaWQgQU5EIGF0dG51bSA9IHByYXR0cnNbc10p XG4iCiAJCQkJCQkJICIgIEVMU0UgTlVMTCBFTkQpIHByYXR0cnMgIgogCQkJCQkJCSAiRlJPTSBw Z19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwciIpOworCX0KIAllbHNlCiAJCWFwcGVuZFBR RXhwQnVmZmVyU3RyKHF1ZXJ5LAogCQkJCQkJCSAiU0VMRUNUIHRhYmxlb2lkLCBvaWQsIHBycHVi aWQsIHBycmVsaWQsICIKQEAgLTQ4MDIsNiArNDg0MCw3IEBAIGdldFB1YmxpY2F0aW9uVGFibGVz KEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJaV9w cnJlbGlkID0gUFFmbnVtYmVyKHJlcywgInBycmVsaWQiKTsKIAlpX3BycmVscXVhbCA9IFBRZm51 bWJlcihyZXMsICJwcnJlbHF1YWwiKTsKIAlpX3ByYXR0cnMgPSBQUWZudW1iZXIocmVzLCAicHJh dHRycyIpOworCWlfcHJleGNlcHQgPSBQUWZudW1iZXIocmVzLCAicHJleGNlcHQiKTsKIAogCS8q IHRoaXMgYWxsb2NhdGlvbiBtYXkgYmUgbW9yZSB0aGFuIHdlIG5lZWQgKi8KIAlwdWJyaW5mbyA9 IHBnX21hbGxvYyhudHVwcyAqIHNpemVvZihQdWJsaWNhdGlvblJlbEluZm8pKTsKQEAgLTQ4MTMs NiArNDg1Miw3IEBAIGdldFB1YmxpY2F0aW9uVGFibGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5m byB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJCU9pZAkJCXBycmVsaWQgPSBhdG9vaWQoUFFn ZXR2YWx1ZShyZXMsIGksIGlfcHJyZWxpZCkpOwogCQlQdWJsaWNhdGlvbkluZm8gKnB1YmluZm87 CiAJCVRhYmxlSW5mbyAgKnRiaW5mbzsKKwkJY2hhcgkgICAqcHJleGNlcHQgPSBwZ19zdHJkdXAo UFFnZXR2YWx1ZShyZXMsIGksIGlfcHJleGNlcHQpKTsKIAogCQkvKgogCQkgKiBJZ25vcmUgYW55 IGVudHJpZXMgZm9yIHdoaWNoIHdlIGFyZW4ndCBpbnRlcmVzdGVkIGluIGVpdGhlciB0aGUKQEAg LTQ4MjYsNyArNDg2NiwxMSBAQCBnZXRQdWJsaWNhdGlvblRhYmxlcyhBcmNoaXZlICpmb3V0LCBU YWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCQkJY29udGludWU7CiAKIAkJLyog T0ssIG1ha2UgYSBEdW1wYWJsZU9iamVjdCBmb3IgdGhpcyByZWxhdGlvbnNoaXAgKi8KLQkJcHVi cmluZm9bal0uZG9iai5vYmpUeXBlID0gRE9fUFVCTElDQVRJT05fUkVMOworCQlpZiAoc3RyY21w KHByZXhjZXB0LCAiZiIpID09IDApCisJCQlwdWJyaW5mb1tqXS5kb2JqLm9ialR5cGUgPSBET19Q VUJMSUNBVElPTl9SRUw7CisJCWVsc2UKKwkJCXB1YnJpbmZvW2pdLmRvYmoub2JqVHlwZSA9IERP X1BVQkxJQ0FUSU9OX0VYQ0VQVF9SRUw7CisKIAkJcHVicmluZm9bal0uZG9iai5jYXRJZC50YWJs ZW9pZCA9CiAJCQlhdG9vaWQoUFFnZXR2YWx1ZShyZXMsIGksIGlfdGFibGVvaWQpKTsKIAkJcHVi cmluZm9bal0uZG9iai5jYXRJZC5vaWQgPSBhdG9vaWQoUFFnZXR2YWx1ZShyZXMsIGksIGlfb2lk KSk7CkBAIC00ODY3LDYgKzQ5MTEsOSBAQCBnZXRQdWJsaWNhdGlvblRhYmxlcyhBcmNoaXZlICpm b3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCQkvKiBEZWNpZGUgd2hl dGhlciB3ZSB3YW50IHRvIGR1bXAgaXQgKi8KIAkJc2VsZWN0RHVtcGFibGVQdWJsaWNhdGlvbk9i amVjdCgmKHB1YnJpbmZvW2pdLmRvYmopLCBmb3V0KTsKIAorCQlpZiAoc3RyY21wKHByZXhjZXB0 LCAidCIpID09IDApCisJCQlzaW1wbGVfcHRyX2xpc3RfYXBwZW5kKCZleGNlcHRpbmZvLCAmcHVi cmluZm9bal0pOworCiAJCWorKzsKIAl9CiAKQEAgLTExNzI5LDYgKzExNzc2LDkgQEAgZHVtcER1 bXBhYmxlT2JqZWN0KEFyY2hpdmUgKmZvdXQsIER1bXBhYmxlT2JqZWN0ICpkb2JqKQogCQljYXNl IERPX1BVQkxJQ0FUSU9OOgogCQkJZHVtcFB1YmxpY2F0aW9uKGZvdXQsIChjb25zdCBQdWJsaWNh dGlvbkluZm8gKikgZG9iaik7CiAJCQlicmVhazsKKwkJY2FzZSBET19QVUJMSUNBVElPTl9FWENF UFRfUkVMOgorCQkJLyogd2lsbCBiZSBkdW1wZWQgaW4gZHVtcFB1YmxpY2F0aW9uICovCisJCQli cmVhazsKIAkJY2FzZSBET19QVUJMSUNBVElPTl9SRUw6CiAJCQlkdW1wUHVibGljYXRpb25UYWJs ZShmb3V0LCAoY29uc3QgUHVibGljYXRpb25SZWxJbmZvICopIGRvYmopOwogCQkJYnJlYWs7CkBA IC0yMDA5NSw2ICsyMDE0NSw3IEBAIGFkZEJvdW5kYXJ5RGVwZW5kZW5jaWVzKER1bXBhYmxlT2Jq ZWN0ICoqZG9ianMsIGludCBudW1PYmpzLAogCQkJY2FzZSBET19ERUZBVUxUX0FDTDoKIAkJCWNh c2UgRE9fUE9MSUNZOgogCQkJY2FzZSBET19QVUJMSUNBVElPTjoKKwkJCWNhc2UgRE9fUFVCTElD QVRJT05fRVhDRVBUX1JFTDoKIAkJCWNhc2UgRE9fUFVCTElDQVRJT05fUkVMOgogCQkJY2FzZSBE T19QVUJMSUNBVElPTl9UQUJMRV9JTl9TQ0hFTUE6CiAJCQljYXNlIERPX1NVQlNDUklQVElPTjoK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5oCmluZGV4IGRkZTg1ZWQxNTZjLi5jMTc4ZWRiNGUwNSAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCkBA IC04MSw2ICs4MSw3IEBAIHR5cGVkZWYgZW51bQogCURPX1JFRlJFU0hfTUFUVklFVywKIAlET19Q T0xJQ1ksCiAJRE9fUFVCTElDQVRJT04sCisJRE9fUFVCTElDQVRJT05fRVhDRVBUX1JFTCwKIAlE T19QVUJMSUNBVElPTl9SRUwsCiAJRE9fUFVCTElDQVRJT05fVEFCTEVfSU5fU0NIRU1BLAogCURP X1JFTF9TVEFUUywKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYyBi L3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYwppbmRleCBhMDJkYTNlOTY1Mi4uNDBmZGZj YjEyMWMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYworKysgYi9z cmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMKQEAgLTkyLDYgKzkyLDcgQEAgZW51bSBkYk9i amVjdFR5cGVQcmlvcml0aWVzCiAJUFJJT19GS19DT05TVFJBSU5ULAogCVBSSU9fUE9MSUNZLAog CVBSSU9fUFVCTElDQVRJT04sCisJUFJJT19QVUJMSUNBVElPTl9FWENFUFRfUkVMLAogCVBSSU9f UFVCTElDQVRJT05fUkVMLAogCVBSSU9fUFVCTElDQVRJT05fVEFCTEVfSU5fU0NIRU1BLAogCVBS SU9fU1VCU0NSSVBUSU9OLApAQCAtMTQ3LDYgKzE0OCw3IEBAIHN0YXRpYyBjb25zdCBpbnQgZGJP YmplY3RUeXBlUHJpb3JpdHlbXSA9CiAJW0RPX1JFRlJFU0hfTUFUVklFV10gPSBQUklPX1JFRlJF U0hfTUFUVklFVywKIAlbRE9fUE9MSUNZXSA9IFBSSU9fUE9MSUNZLAogCVtET19QVUJMSUNBVElP Tl0gPSBQUklPX1BVQkxJQ0FUSU9OLAorCVtET19QVUJMSUNBVElPTl9FWENFUFRfUkVMXSA9IFBS SU9fUFVCTElDQVRJT05fRVhDRVBUX1JFTCwKIAlbRE9fUFVCTElDQVRJT05fUkVMXSA9IFBSSU9f UFVCTElDQVRJT05fUkVMLAogCVtET19QVUJMSUNBVElPTl9UQUJMRV9JTl9TQ0hFTUFdID0gUFJJ T19QVUJMSUNBVElPTl9UQUJMRV9JTl9TQ0hFTUEsCiAJW0RPX1JFTF9TVEFUU10gPSBQUklPX1NU QVRJU1RJQ1NfREFUQV9EQVRBLApAQCAtNDI5LDYgKzQzMSwxNyBAQCBET1R5cGVOYW1lQ29tcGFy ZShjb25zdCB2b2lkICpwMSwgY29uc3Qgdm9pZCAqcDIpCiAJCWlmIChjbXB2YWwgIT0gMCkKIAkJ CXJldHVybiBjbXB2YWw7CiAJfQorCWVsc2UgaWYgKG9iajEtPm9ialR5cGUgPT0gRE9fUFVCTElD QVRJT05fRVhDRVBUX1JFTCkKKwl7CisJCVB1YmxpY2F0aW9uUmVsSW5mbyAqcHJvYmoxID0gKihQ dWJsaWNhdGlvblJlbEluZm8gKmNvbnN0ICopIHAxOworCQlQdWJsaWNhdGlvblJlbEluZm8gKnBy b2JqMiA9ICooUHVibGljYXRpb25SZWxJbmZvICpjb25zdCAqKSBwMjsKKworCQkvKiBTb3J0IGJ5 IHB1YmxpY2F0aW9uIG5hbWUsIHNpbmNlIChuYW1lc3BhY2UsIG5hbWUpIG1hdGNoIHRoZSByZWwg Ki8KKwkJY21wdmFsID0gc3RyY21wKHByb2JqMS0+cHVibGljYXRpb24tPmRvYmoubmFtZSwKKwkJ CQkJCXByb2JqMi0+cHVibGljYXRpb24tPmRvYmoubmFtZSk7CisJCWlmIChjbXB2YWwgIT0gMCkK KwkJCXJldHVybiBjbXB2YWw7CisJfQogCWVsc2UgaWYgKG9iajEtPm9ialR5cGUgPT0gRE9fUFVC TElDQVRJT05fVEFCTEVfSU5fU0NIRU1BKQogCXsKIAkJUHVibGljYXRpb25TY2hlbWFJbmZvICpw c29iajEgPSAqKFB1YmxpY2F0aW9uU2NoZW1hSW5mbyAqY29uc3QgKikgcDE7CkBAIC0xNzAxLDYg KzE3MTQsMTEgQEAgZGVzY3JpYmVEdW1wYWJsZU9iamVjdChEdW1wYWJsZU9iamVjdCAqb2JqLCBj aGFyICpidWYsIGludCBidWZzaXplKQogCQkJCQkgIlBVQkxJQ0FUSU9OIChJRCAlZCBPSUQgJXUp IiwKIAkJCQkJIG9iai0+ZHVtcElkLCBvYmotPmNhdElkLm9pZCk7CiAJCQlyZXR1cm47CisJCWNh c2UgRE9fUFVCTElDQVRJT05fRVhDRVBUX1JFTDoKKwkJCXNucHJpbnRmKGJ1ZiwgYnVmc2l6ZSwK KwkJCQkJICJQVUJMSUNBVElPTiBFWENFUFQgVEFCTEUgKElEICVkIE9JRCAldSkiLAorCQkJCQkg b2JqLT5kdW1wSWQsIG9iai0+Y2F0SWQub2lkKTsKKwkJCXJldHVybjsKIAkJY2FzZSBET19QVUJM SUNBVElPTl9SRUw6CiAJCQlzbnByaW50ZihidWYsIGJ1ZnNpemUsCiAJCQkJCSAiUFVCTElDQVRJ T04gVEFCTEUgKElEICVkIE9JRCAldSkiLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3Qv MDAyX3BnX2R1bXAucGwgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAppbmRleCBl N2EyZDY0Zjc0MS4uN2U0ZTU4OTkxOWIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAw Ml9wZ19kdW1wLnBsCisrKyBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCkBAIC0z MzU0LDYgKzMzNTQsMjYgQEAgbXkgJXRlc3RzID0gKAogCQlsaWtlID0+IHsgJWZ1bGxfcnVucywg c2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwKIAl9LAogCisJJ0NSRUFURSBQVUJMSUNBVElPTiBw dWI2JyA9PiB7CisJCWNyZWF0ZV9vcmRlciA9PiA1MCwKKwkJY3JlYXRlX3NxbCA9PgorCQkgICdD UkVBVEUgUFVCTElDQVRJT04gcHViNiBGT1IgQUxMIFRBQkxFUyBFWENFUFQgZHVtcF90ZXN0LnRl c3RfdGFibGU7JywKKwkJcmVnZXhwID0+IHFyL14KKwkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1 YjYgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIE9OTFkgZHVtcF90ZXN0LnRlc3RfdGFibGUg V0lUSCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlLCB0cnVuY2F0ZScpO1xFCisJ CQkveG0sCisJCWxpa2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9 LAorCX0sCisKKwknQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjcnID0+IHsKKwkJY3JlYXRlX29yZGVy ID0+IDUwLAorCQljcmVhdGVfc3FsID0+CisJCSAgJ0NSRUFURSBQVUJMSUNBVElPTiBwdWI3IEZP UiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSBkdW1wX3Rlc3QudGVzdF90YWJsZSwgZHVtcF90ZXN0 LnRlc3Rfc2Vjb25kX3RhYmxlOycsCisJCXJlZ2V4cCA9PiBxci9eCisJCQlcUUNSRUFURSBQVUJM SUNBVElPTiBwdWI3IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSBPTkxZIGR1bXBfdGVzdC50 ZXN0X3RhYmxlLCBPTkxZIGR1bXBfdGVzdC50ZXN0X3NlY29uZF90YWJsZSBXSVRIIChwdWJsaXNo ID0gJ2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5jYXRlJyk7XEUKKwkJCS94bSwKKwkJbGlr ZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCisJfSwKKwogCSdD UkVBVEUgU1VCU0NSSVBUSU9OIHN1YjEnID0+IHsKIAkJY3JlYXRlX29yZGVyID0+IDUwLAogCQlj cmVhdGVfc3FsID0+ICdDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YjEKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKaW5kZXggN2EwNmFm NDg4NDIuLmYzZmU0YWIzMGY4IDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwor KysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtMzAzOSwxNyArMzAzOSwzNCBAQCBkZXNj cmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkJCQkJCQkgICIg ICAgICAgICAgV0hFUkUgYXR0cmVsaWQgPSBwci5wcnJlbGlkIEFORCBhdHRudW0gPSBwcmF0dHJz W3NdKVxuIgogCQkJCQkJCQkgICIgICAgICAgIEVMU0UgTlVMTCBFTkQpICIKIAkJCQkJCQkJICAi RlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBcbiIKLQkJCQkJCQkJICAiICAgICBKT0lO IHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByIE9OIHAub2lkID0gcHIucHJwdWJpZFxu IgotCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19jbGFzcyBjIE9OIGMub2lkID0g cHIucHJyZWxpZFxuIgotCQkJCQkJCQkgICJXSEVSRSBwci5wcnJlbGlkID0gJyVzJ1xuIgorCQkJ CQkJCQkgICIJCUpPSU4gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHIgT04gcC5vaWQg PSBwci5wcnB1YmlkXG4iCisJCQkJCQkJCSAgIgkJSk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNzIGMg T04gYy5vaWQgPSBwci5wcnJlbGlkXG4iCisJCQkJCQkJCSAgIldIRVJFIHByLnBycmVsaWQgPSAn JXMnXG4iLAorCQkJCQkJCQkgIG9pZCwgb2lkLCBvaWQpOworCisJCQkJaWYgKHBzZXQuc3ZlcnNp b24gPj0gMTkwMDAwKQorCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiIEFORCBOT1Qg cHIucHJleGNlcHRcbiIpOworCisJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkJ ICAiVU5JT05cbiIKIAkJCQkJCQkJICAiU0VMRUNUIHB1Ym5hbWVcbiIKLQkJCQkJCQkJICAiICAg ICAsIE5VTExcbiIKLQkJCQkJCQkJICAiICAgICAsIE5VTExcbiIKKwkJCQkJCQkJICAiCQksIE5V TExcbiIKKwkJCQkJCQkJICAiCQksIE5VTExcbiIKIAkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9n LnBnX3B1YmxpY2F0aW9uIHBcbiIKLQkJCQkJCQkJICAiV0hFUkUgcC5wdWJhbGx0YWJsZXMgQU5E IHBnX2NhdGFsb2cucGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUoJyVzJylcbiIKLQkJCQkJCQkJ ICAiT1JERVIgQlkgMTsiLAotCQkJCQkJCQkgIG9pZCwgb2lkLCBvaWQsIG9pZCk7CisJCQkJCQkJ CSAgIldIRVJFIHAucHViYWxsdGFibGVzIEFORCBwZ19jYXRhbG9nLnBnX3JlbGF0aW9uX2lzX3B1 Ymxpc2hhYmxlKCclcycpXG4iLAorCQkJCQkJCQkgIG9pZCk7CisKKwkJCQlpZiAocHNldC5zdmVy c2lvbiA+PSAxOTAwMDApCisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkJCQkg ICIgICAgIEFORCBOT1QgRVhJU1RTIChcbiIKKwkJCQkJCQkJCSAgIgkJU0VMRUNUIDFcbiIKKwkJ CQkJCQkJCSAgIgkJRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwclxuIgorCQkJ CQkJCQkJICAiCQlKT0lOIHBnX2NhdGFsb2cucGdfY2xhc3MgcGNcbiIKKwkJCQkJCQkJCSAgIgkJ T04gcHIucHJyZWxpZCA9IHBjLm9pZFxuIgorCQkJCQkJCQkJICAiCQlXSEVSRSBwci5wcnJlbGlk ID0gJyVzJyBBTkQgcHIucHJwdWJpZCA9IHAub2lkKVxuIiwKKwkJCQkJCQkJCSAgb2lkKTsKKwor CQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICJPUkRFUiBCWSAxOyIpOwogCQkJfQogCQkJ ZWxzZQogCQkJewpAQCAtNjY5Myw4ICs2NzEwLDEyIEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNv bnN0IGNoYXIgKnBhdHRlcm4pCiAJCQkJCQkJICAiICAgICBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0 aW9uX3JlbCBwclxuIgogCQkJCQkJCSAgIldIRVJFIGMucmVsbmFtZXNwYWNlID0gbi5vaWRcbiIK IAkJCQkJCQkgICIgIEFORCBjLm9pZCA9IHByLnBycmVsaWRcbiIKLQkJCQkJCQkgICIgIEFORCBw ci5wcnB1YmlkID0gJyVzJ1xuIgotCQkJCQkJCSAgIk9SREVSIEJZIDEsMiIsIHB1YmlkKTsKKwkJ CQkJCQkgICIgIEFORCBwci5wcnB1YmlkID0gJyVzJ1xuIiwgcHViaWQpOworCisJCQlpZiAocHNl dC5zdmVyc2lvbiA+PSAxOTAwMDApCisJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIiAgQU5E IE5PVCBwci5wcmV4Y2VwdFxuIik7CisKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsICJPUkRF UiBCWSAxLDIiKTsKIAkJCWlmICghYWRkRm9vdGVyVG9QdWJsaWNhdGlvbkRlc2MoJmJ1ZiwgXygi VGFibGVzOiIpLCBmYWxzZSwgJmNvbnQpKQogCQkJCWdvdG8gZXJyb3JfcmV0dXJuOwogCkBAIC02 NzEyLDYgKzY3MzMsMjMgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVy bikKIAkJCQkJZ290byBlcnJvcl9yZXR1cm47CiAJCQl9CiAJCX0KKwkJZWxzZQorCQl7CisJCQlp ZiAocHNldC5zdmVyc2lvbiA+PSAxOTAwMDApCisJCQl7CisJCQkJLyogR2V0IHRoZSBleGNsdWRl ZCB0YWJsZXMgZm9yIHRoZSBzcGVjaWZpZWQgcHVibGljYXRpb24gKi8KKwkJCQlwcmludGZQUUV4 cEJ1ZmZlcigmYnVmLAorCQkJCQkJCQkgICJTRUxFQ1QgY29uY2F0KGMucmVsbmFtZXNwYWNlOjpy ZWduYW1lc3BhY2UsICcuJywgYy5yZWxuYW1lKVxuIgorCQkJCQkJCQkgICJGUk9NIHBnX2NhdGFs b2cucGdfY2xhc3MgY1xuIgorCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19wdWJs aWNhdGlvbl9yZWwgcHIgT04gYy5vaWQgPSBwci5wcnJlbGlkXG4iCisJCQkJCQkJCSAgIldIRVJF IHByLnBycHViaWQgPSAnJXMnXG4iCisJCQkJCQkJCSAgIiAgQU5EIHByLnByZXhjZXB0XG4iCisJ CQkJCQkJCSAgIk9SREVSIEJZIDEiLCBwdWJpZCk7CisJCQkJaWYgKCFhZGRGb290ZXJUb1B1Ymxp Y2F0aW9uRGVzYygmYnVmLCBfKCJFeGNlcHQgdGFibGVzOiIpLAorCQkJCQkJCQkJCQkJdHJ1ZSwg JmNvbnQpKQorCQkJCQlnb3RvIGVycm9yX3JldHVybjsKKwkJCX0KKwkJfQogCiAJCXByaW50VGFi bGUoJmNvbnQsIHBzZXQucXVlcnlGb3V0LCBmYWxzZSwgcHNldC5sb2dmaWxlKTsKIAkJcHJpbnRU YWJsZUNsZWFudXAoJmNvbnQpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0 ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4IGYwN2FmN2Y3MWQz Li41ZWZkY2Y1NjM0NyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5j CisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAtMjI2OSwxMSArMjI2OSwx NiBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAkJQ09NUExFVEVfV0lU SCgiQUREIiwgIkRST1AiLCAiT1dORVIgVE8iLCAiUkVOQU1FIFRPIiwgIlJFU0VUIiwgIlNFVCIp OwogCS8qIEFMVEVSIFBVQkxJQ0FUSU9OIDxuYW1lPiBBREQgKi8KIAllbHNlIGlmIChNYXRjaGVz KCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQUREIikpCi0JCUNPTVBMRVRFX1dJ VEgoIlRBQkxFUyBJTiBTQ0hFTUEiLCAiVEFCTEUiKTsKKwkJQ09NUExFVEVfV0lUSCgiQUxMIFRB QkxFUyIsICJUQUJMRVMgSU4gU0NIRU1BIiwgIlRBQkxFIik7CisJZWxzZSBpZiAoTWF0Y2hlcygi QUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkFERCIsICJBTEwiLCAiVEFCTEVTIikp CisJCUNPTVBMRVRFX1dJVEgoIkVYQ0VQVCBUQUJMRSIpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkFM VEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJBRER8U0VUIiwgIlRBQkxFIikpCiAJCUNP TVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlcyk7Ci0JZWxz ZSBpZiAoSGVhZE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJBRER8 U0VUIiwgIlRBQkxFIikgJiYKLQkJCSBlbmRzX3dpdGgocHJldl93ZCwgJywnKSkKKwllbHNlIGlm IChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQUREIiwgIkFMTCIs ICJUQUJMRVMiLCAiRVhDRVBUIiwgIlRBQkxFIikpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FV RVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlcyk7CisJZWxzZSBpZiAoSGVhZE1hdGNoZXMoIkFM VEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJBRER8U0VUIiwgIlRBQkxFIikgJiYgZW5k c193aXRoKHByZXZfd2QsICcsJykpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5 X2Zvcl9saXN0X29mX3RhYmxlcyk7CisJZWxzZSBpZiAoSGVhZE1hdGNoZXMoIkFMVEVSIiwgIlBV QkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJBREQiLCAiQUxMIiwgIlRBQkxFUyIsICJFWENFUFQiLCAi VEFCTEUiKSAmJiBlbmRzX3dpdGgocHJldl93ZCwgJywnKSkKIAkJQ09NUExFVEVfV0lUSF9TQ0hF TUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdGFibGVzKTsKIAogCS8qCkBAIC0zNTg4LDYgKzM1 OTMsMTAgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAJZWxzZSBpZiAo TWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIikp CiAJCUNPTVBMRVRFX1dJVEgoIlRBQkxFUyIpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIs ICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIsICJUQUJMRVMiKSkKKwkJQ09N UExFVEVfV0lUSCgiRVhDRVBUIFRBQkxFIiwgIldJVEggKCIpOworCWVsc2UgaWYgKE1hdGNoZXMo IkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIsICJUQUJMRVMi LCAiRVhDRVBUIikpCisJCUNPTVBMRVRFX1dJVEgoIlRBQkxFIik7CisJZWxzZSBpZiAoTWF0Y2hl cygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlRBQkxF UyIsICJFWENFUFQiLCAiVEFCTEUiLCBNYXRjaEFueSkgJiYgIWVuZHNfd2l0aChwcmV2X3dkLCAn LCcpKQogCQlDT01QTEVURV9XSVRIKCJXSVRIICgiKTsKIAllbHNlIGlmIChNYXRjaGVzKCJDUkVB VEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJUQUJMRVMiKSkKIAkJQ09NUExF VEVfV0lUSCgiSU4gU0NIRU1BIik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3B1YmxpY2F0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKaW5k ZXggNmUwNzQxOTBmZDIuLjAyMjQ2N2ZiNDVjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3B1YmxpY2F0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNh dGlvbi5oCkBAIC0xMzksMTEgKzEzOSwxMiBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvblJl bEluZm8KIAlSZWxhdGlvbglyZWxhdGlvbjsKIAlOb2RlCSAgICp3aGVyZUNsYXVzZTsKIAlMaXN0 CSAgICpjb2x1bW5zOworCWJvb2wJCWV4Y2VwdDsKIH0gUHVibGljYXRpb25SZWxJbmZvOwogCiBl eHRlcm4gUHVibGljYXRpb24gKkdldFB1YmxpY2F0aW9uKE9pZCBwdWJpZCk7CiBleHRlcm4gUHVi bGljYXRpb24gKkdldFB1YmxpY2F0aW9uQnlOYW1lKGNvbnN0IGNoYXIgKnB1Ym5hbWUsIGJvb2wg bWlzc2luZ19vayk7Ci1leHRlcm4gTGlzdCAqR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoT2lkIHJl bGlkKTsKK2V4dGVybiBMaXN0ICpHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhPaWQgcmVsaWQsIGJv b2wgZXhjZXB0X2ZsYWcpOwogCiAvKi0tLS0tLS0tLQogICogRXhwZWN0ZWQgdmFsdWVzIGZvciBw dWJfcGFydG9wdCBwYXJhbWV0ZXIgb2YgR2V0UHVibGljYXRpb25SZWxhdGlvbnMoKSwKQEAgLTE2 MSw5ICsxNjIsMTAgQEAgdHlwZWRlZiBlbnVtIFB1YmxpY2F0aW9uUGFydE9wdAogCVBVQkxJQ0FU SU9OX1BBUlRfQUxMLAogfSBQdWJsaWNhdGlvblBhcnRPcHQ7CiAKLWV4dGVybiBMaXN0ICpHZXRQ dWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFy dG9wdCk7CitleHRlcm4gTGlzdCAqR2V0UHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQ dWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQsCisJCQkJCQkJCQkgYm9vbCBleGNlcHRfZmxh Zyk7CiBleHRlcm4gTGlzdCAqR2V0QWxsVGFibGVzUHVibGljYXRpb25zKHZvaWQpOwotZXh0ZXJu IExpc3QgKkdldEFsbFRhYmxlc1B1YmxpY2F0aW9uUmVsYXRpb25zKGJvb2wgcHVidmlhcm9vdCk7 CitleHRlcm4gTGlzdCAqR2V0QWxsVGFibGVzUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1Ymlk LCBib29sIHB1YnZpYXJvb3QpOwogZXh0ZXJuIExpc3QgKkdldFB1YmxpY2F0aW9uU2NoZW1hcyhP aWQgcHViaWQpOwogZXh0ZXJuIExpc3QgKkdldFNjaGVtYVB1YmxpY2F0aW9ucyhPaWQgc2NoZW1h aWQpOwogZXh0ZXJuIExpc3QgKkdldFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBzY2hl bWFpZCwKQEAgLTE3NCw3ICsxNzYsNyBAQCBleHRlcm4gTGlzdCAqR2V0UHViUGFydGl0aW9uT3B0 aW9uUmVsYXRpb25zKExpc3QgKnJlc3VsdCwKIAkJCQkJCQkJCQkJUHVibGljYXRpb25QYXJ0T3B0 IHB1Yl9wYXJ0b3B0LAogCQkJCQkJCQkJCQlPaWQgcmVsaWQpOwogZXh0ZXJuIE9pZAlHZXRUb3BN b3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKE9pZCBwdWJvaWQsIExpc3QgKmFuY2VzdG9ycywKLQkJ CQkJCQkJCQkJaW50ICphbmNlc3Rvcl9sZXZlbCk7CisJCQkJCQkJCQkJCWludCAqYW5jZXN0b3Jf bGV2ZWwsIGJvb2wgcHViYWxsdGFibGVzKTsKIAogZXh0ZXJuIGJvb2wgaXNfcHVibGlzaGFibGVf cmVsYXRpb24oUmVsYXRpb24gcmVsKTsKIGV4dGVybiBib29sIGlzX3NjaGVtYV9wdWJsaWNhdGlv bihPaWQgcHViaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNh dGlvbl9yZWwuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25fcmVsLmgKaW5k ZXggOTJjYzM2ZGZkZjYuLmU3ZDdmM2JhODVjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVi bGljYXRpb25fcmVsLmgKQEAgLTMxLDYgKzMxLDcgQEAgQ0FUQUxPRyhwZ19wdWJsaWNhdGlvbl9y ZWwsNjEwNixQdWJsaWNhdGlvblJlbFJlbGF0aW9uSWQpCiAJT2lkCQkJb2lkOwkJCS8qIG9pZCAq LwogCU9pZAkJCXBycHViaWQgQktJX0xPT0tVUChwZ19wdWJsaWNhdGlvbik7IC8qIE9pZCBvZiB0 aGUgcHVibGljYXRpb24gKi8KIAlPaWQJCQlwcnJlbGlkIEJLSV9MT09LVVAocGdfY2xhc3MpOwkv KiBPaWQgb2YgdGhlIHJlbGF0aW9uICovCisJYm9vbAkJcHJleGNlcHQgQktJX0RFRkFVTFQoZik7 CS8qIGV4Y2x1ZGUgdGhlIHJlbGF0aW9uICovCiAKICNpZmRlZglDQVRBTE9HX1ZBUkxFTgkJCS8q IHZhcmlhYmxlLWxlbmd0aCBmaWVsZHMgc3RhcnQgaGVyZSAqLwogCXBnX25vZGVfdHJlZSBwcnF1 YWw7CQkvKiBxdWFsaWZpY2F0aW9ucyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFu ZHMvcHVibGljYXRpb25jbWRzLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9wdWJsaWNhdGlvbmNt ZHMuaAppbmRleCBmOTBjZjFlZjg5Ni4uMGFkNWQyODc1NGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRz L3B1YmxpY2F0aW9uY21kcy5oCkBAIC0zMiwxMCArMzIsMTEgQEAgZXh0ZXJuIE9iamVjdEFkZHJl c3MgQWx0ZXJQdWJsaWNhdGlvbk93bmVyKGNvbnN0IGNoYXIgKm5hbWUsIE9pZCBuZXdPd25lcklk KTsKIGV4dGVybiB2b2lkIEFsdGVyUHVibGljYXRpb25Pd25lcl9vaWQoT2lkIHB1YmlkLCBPaWQg bmV3T3duZXJJZCk7CiBleHRlcm4gdm9pZCBJbnZhbGlkYXRlUHVibGljYXRpb25SZWxzKExpc3Qg KnJlbGlkcyk7CiBleHRlcm4gYm9vbCBwdWJfcmZfY29udGFpbnNfaW52YWxpZF9jb2x1bW4oT2lk IHB1YmlkLCBSZWxhdGlvbiByZWxhdGlvbiwKLQkJCQkJCQkJCQkgICBMaXN0ICphbmNlc3RvcnMs IGJvb2wgcHVidmlhcm9vdCk7CisJCQkJCQkJCQkJICAgTGlzdCAqYW5jZXN0b3JzLCBib29sIHB1 YnZpYXJvb3QsCisJCQkJCQkJCQkJICAgYm9vbCBwdWJhbGx0YWJsZXMpOwogZXh0ZXJuIGJvb2wg cHViX2NvbnRhaW5zX2ludmFsaWRfY29sdW1uKE9pZCBwdWJpZCwgUmVsYXRpb24gcmVsYXRpb24s CiAJCQkJCQkJCQkJTGlzdCAqYW5jZXN0b3JzLCBib29sIHB1YnZpYXJvb3QsCi0JCQkJCQkJCQkJ Y2hhciBwdWJnZW5jb2xzX3R5cGUsCisJCQkJCQkJCQkJY2hhciBwdWJnZW5jb2xzX3R5cGUsIGJv b2wgcHViYWxsdGFibGVzLAogCQkJCQkJCQkJCWJvb2wgKmludmFsaWRfY29sdW1uX2xpc3QsCiAJ CQkJCQkJCQkJYm9vbCAqaW52YWxpZF9nZW5fY29sKTsKIGV4dGVybiB2b2lkIEludmFsaWRhdGVQ dWJSZWxTeW5jQ2FjaGUoT2lkIHB1YmlkLCBib29sIHB1YmFsbHRhYmxlcyk7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJz ZW5vZGVzLmgKaW5kZXggYWYyMjBiMDI3ODguLmYyY2M5Nzg0NDU2IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oCkBAIC00MjY4LDYgKzQyNjgsNyBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvblRh YmxlCiAJUmFuZ2VWYXIgICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiB0byBiZSBwdWJsaXNoZWQg Ki8KIAlOb2RlCSAgICp3aGVyZUNsYXVzZTsJLyogcXVhbGlmaWNhdGlvbnMgKi8KIAlMaXN0CSAg ICpjb2x1bW5zOwkJLyogTGlzdCBvZiBjb2x1bW5zIGluIGEgcHVibGljYXRpb24gdGFibGUgKi8K Kwlib29sCQlleGNlcHQ7CQkJLyogZXhjbHVkZSB0aGUgcmVsYXRpb24gKi8KIH0gUHVibGljYXRp b25UYWJsZTsKIAogLyoKQEAgLTQyNzYsNiArNDI3Nyw3IEBAIHR5cGVkZWYgc3RydWN0IFB1Ymxp Y2F0aW9uVGFibGUKIHR5cGVkZWYgZW51bSBQdWJsaWNhdGlvbk9ialNwZWNUeXBlCiB7CiAJUFVC TElDQVRJT05PQkpfVEFCTEUsCQkvKiBBIHRhYmxlICovCisJUFVCTElDQVRJT05PQkpfRVhDRVBU X1RBQkxFLAkvKiBBIHRhYmxlIHRvIGJlIGV4Y2x1ZGVkICovCiAJUFVCTElDQVRJT05PQkpfVEFC TEVTX0lOX1NDSEVNQSwJLyogQWxsIHRhYmxlcyBpbiBzY2hlbWEgKi8KIAlQVUJMSUNBVElPTk9C Sl9UQUJMRVNfSU5fQ1VSX1NDSEVNQSwJLyogQWxsIHRhYmxlcyBpbiBmaXJzdCBlbGVtZW50IG9m CiAJCQkJCQkJCQkJCSAqIHNlYXJjaF9wYXRoICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cHVibGljYXRpb24ub3V0CmluZGV4IDc0MDA5YTkyZjNmLi40OWFmZWI3NzYyMiAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKQEAgLTIxMywxMyArMjEzLDM3IEBA IE5vdC1udWxsIGNvbnN0cmFpbnRzOgogIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBub25lICAg ICAgICAgICAgICB8IGYKICgxIHJvdykKIAorU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJS T1InOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxl IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSB0ZXN0cHViX3RibDEsIHRlc3RwdWJfdGJsMjsK Ky0tIHNwZWNpZnkgRVhDRVBUIHdpdGhvdXQgVEFCTEUKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0 cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTEgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIHRlc3Rw dWJfdGJsMTsKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitcZFJwKyB0ZXN0cHViX2ZvcmFs bHRhYmxlc19leGNlcHR0YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlCisgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8 IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZgorRXhjZXB0IHRhYmxlczoKKyAgICAi cHVibGljLnRlc3RwdWJfdGJsMSIKKyAgICAicHVibGljLnRlc3RwdWJfdGJsMiIKKworXGRScCsg dGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTEK KyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0 ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K KyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCitFeGNlcHQg dGFibGVzOgorICAgICJwdWJsaWMudGVzdHB1Yl90YmwxIgorCiBEUk9QIFRBQkxFIHRlc3RwdWJf dGJsMjsKLURST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMsIHRlc3RwdWJfZm9y dGFibGUsIHRlc3RwdWJfZm9yc2NoZW1hLCB0ZXN0cHViX2Zvcl90Ymxfc2NoZW1hOworRFJPUCBQ VUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlcywgdGVzdHB1Yl9mb3J0YWJsZSwgdGVzdHB1 Yl9mb3JzY2hlbWEsIHRlc3RwdWJfZm9yX3RibF9zY2hlbWEsIHRlc3RwdWJfZm9yYWxsdGFibGVz X2V4Y2VwdHRhYmxlLCB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTE7CiBDUkVBVEUg VEFCTEUgdGVzdHB1Yl90YmwzIChhIGludCk7CiBDUkVBVEUgVEFCTEUgdGVzdHB1Yl90YmwzYSAo YiB0ZXh0KSBJTkhFUklUUyAodGVzdHB1Yl90YmwzKTsKIFNFVCBjbGllbnRfbWluX21lc3NhZ2Vz ID0gJ0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViMyBGT1IgVEFCTEUgdGVzdHB1 Yl90YmwzOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI0IEZPUiBUQUJMRSBPTkxZIHRlc3Rw dWJfdGJsMzsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNSBGT1IgQUxMIFRBQkxFUyBFWENF UFQgVEFCTEUgdGVzdHB1Yl90YmwzOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IEZPUiBB TEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSBPTkxZIHRlc3RwdWJfdGJsMzsKIFJFU0VUIGNsaWVudF9t aW5fbWVzc2FnZXM7CiBcZFJwKyB0ZXN0cHViMwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzCkBAIC0yMzgsOCArMjYyLDI1 IEBAIFRhYmxlczoKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfdGJsMyIKIAorXGRScCsg dGVzdHB1YjUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ dWJsaWNhdGlvbiB0ZXN0cHViNQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQg Y29sdW1ucyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAg ICAgICAgICB8IGYKK0V4Y2VwdCB0YWJsZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3RibDMiCisg ICAgInB1YmxpYy50ZXN0cHViX3RibDNhIgorCitcZFJwKyB0ZXN0cHViNgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI2Cisg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZgorRXhjZXB0IHRh YmxlczoKKyAgICAicHVibGljLnRlc3RwdWJfdGJsMyIKKwogRFJPUCBUQUJMRSB0ZXN0cHViX3Ri bDMsIHRlc3RwdWJfdGJsM2E7Ci1EUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWIzLCB0ZXN0cHViNDsK K0RST1AgUFVCTElDQVRJT04gdGVzdHB1YjMsIHRlc3RwdWI0LCB0ZXN0cHViNSwgdGVzdHB1YjY7 CiAtLSBUZXN0cyBmb3IgcGFydGl0aW9uZWQgdGFibGVzCiBTRVQgY2xpZW50X21pbl9tZXNzYWdl cyA9ICdFUlJPUic7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JwYXJ0ZWQ7CkBAIC0x OTI2LDkgKzE5NjcsMTUgQEAgRFJPUCBUQUJMRSBnZW5jb2xzOwogLS0gVGVzdHMgZm9yIEFMVEVS IFBVQkxJQ0FUSU9OIC4uLiBSRVNFVAogQ1JFQVRFIFNDSEVNQSBwdWJfc2NoMTsKIENSRUFURSBU QUJMRSBwdWJfc2NoMS50YmwxIChhIGludCk7CitDUkVBVEUgVEFCTEUgcHViX3NjaDEudGJsMiAo YSBpbnQpOwogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfcmVzZXQgRk9SIEFMTCBUQUJMRVM7CiBSRVNFVCBjbGllbnRfbWluX21l c3NhZ2VzOworLS0gQ2FuJ3QgYWRkIEVYQ0VQVCBUQUJMRSB0byAnRk9SIEFMTCBUQUJMRVMnIHB1 YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IEFERCBBTEwgVEFCTEVT IEVYQ0VQVCBUQUJMRSBwdWJfc2NoMS50YmwxOworRVJST1I6ICBhZGRpbmcgQUxMIFRBQkxFUyBy ZXF1aXJlcyB0aGUgcHVibGljYXRpb24gdG8gaGF2ZSBkZWZhdWx0IHB1YmxpY2F0aW9uIHBhcmFt ZXRlciB2YWx1ZXMKK0RFVEFJTDogIEFMTCBUQUJMRVMgZmxhZyBzaG91bGQgbm90IGJlIHNldCBh bmQgbm8gdGFibGVzL3NjaGVtYXMgc2hvdWxkIGJlIGFzc29jaWF0ZWQuCitISU5UOiAgVXNlIEFM VEVSIFBVQkxJQ0FUSU9OIC4uLiBSRVNFVCB0byByZXNldCB0aGUgcHVibGljYXRpb24KIC0tIFZl cmlmeSB0aGF0ICdBTEwgVEFCTEVTJyBmbGFnIGlzIHJlc2V0CiBcZFJwKyB0ZXN0cHViX3Jlc2V0 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1Yl9yZXNldApAQCAtMTk0NSw3ICsxOTkyLDI0IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWJfcmVzZXQgUkVTRVQ7CiAgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAg ICAgICAgIHwgZgogKDEgcm93KQogCistLSBTaG91bGQgd29yayBub3cgYWZ0ZXIgcmVzZXR0aW5n IHRoZSBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBBREQgQUxM IFRBQkxFUyBFWENFUFQgVEFCTEUgcHViX3NjaDEudGJsMSwgcHViX3NjaDEudGJsMjsKK1xkUnAr IHRlc3RwdWJfcmVzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViX3Jlc2V0CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdl bmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg dCAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5v bmUgICAgICAgICAgICAgIHwgZgorRXhjZXB0IHRhYmxlczoKKyAgICAicHViX3NjaDEudGJsMSIK KyAgICAicHViX3NjaDEudGJsMiIKKworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBS RVNFVDsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgQUREIFRBQkxFIHB1Yl9zY2gx LnRibDE7CistLSBDYW4ndCBhZGQgRVhDRVBUIFRBQkxFIHRvICdGT1IgVEFCTEUnIHB1YmxpY2F0 aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IEFERCBBTEwgVEFCTEVTIEVYQ0VQ VCBUQUJMRSBwdWJfc2NoMS50YmwxOworRVJST1I6ICBhZGRpbmcgQUxMIFRBQkxFUyByZXF1aXJl cyB0aGUgcHVibGljYXRpb24gdG8gaGF2ZSBkZWZhdWx0IHB1YmxpY2F0aW9uIHBhcmFtZXRlciB2 YWx1ZXMKK0RFVEFJTDogIEFMTCBUQUJMRVMgZmxhZyBzaG91bGQgbm90IGJlIHNldCBhbmQgbm8g dGFibGVzL3NjaGVtYXMgc2hvdWxkIGJlIGFzc29jaWF0ZWQuCitISU5UOiAgVXNlIEFMVEVSIFBV QkxJQ0FUSU9OIC4uLiBSRVNFVCB0byByZXNldCB0aGUgcHVibGljYXRpb24KIC0tIFZlcmlmeSB0 aGF0IGFzc29jaWF0ZWQgdGFibGVzIGFyZSByZW1vdmVkIGZyb20gdGhlIHB1YmxpY2F0aW9uIGFm dGVyIFJFU0VUCiBcZFJwKyB0ZXN0cHViX3Jlc2V0CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9yZXNldApAQCAtMTk2NCw2ICsy MDI4LDExIEBAIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgUkVTRVQ7CiAoMSByb3cp CiAKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgQUREIFRBQkxFUyBJTiBTQ0hFTUEg cHVibGljOworLS0gQ2FuJ3QgYWRkIEVYQ0VQVCBUQUJMRSB0byAnRk9SIEFMTCBUQUJMRVMgSU4g U0NIRU1BJyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBBREQg QUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgcHViX3NjaDEudGJsMTsKK0VSUk9SOiAgYWRkaW5nIEFM TCBUQUJMRVMgcmVxdWlyZXMgdGhlIHB1YmxpY2F0aW9uIHRvIGhhdmUgZGVmYXVsdCBwdWJsaWNh dGlvbiBwYXJhbWV0ZXIgdmFsdWVzCitERVRBSUw6ICBBTEwgVEFCTEVTIGZsYWcgc2hvdWxkIG5v dCBiZSBzZXQgYW5kIG5vIHRhYmxlcy9zY2hlbWFzIHNob3VsZCBiZSBhc3NvY2lhdGVkLgorSElO VDogIFVzZSBBTFRFUiBQVUJMSUNBVElPTiAuLi4gUkVTRVQgdG8gcmVzZXQgdGhlIHB1YmxpY2F0 aW9uCiAtLSBWZXJpZnkgdGhhdCBhc3NvY2lhdGVkIHNjaGVtYXMgYXJlIHJlb212ZWQgZnJvbSB0 aGUgcHVibGljYXRpb24gYWZ0ZXIgUkVTRVQKIFxkUnArIHRlc3RwdWJfcmVzZXQKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3Jl c2V0CkBAIC0xOTgyLDYgKzIwNTEsMTIgQEAgQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNl dCBSRVNFVDsKICgxIHJvdykKIAogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBTRVQg KFBVQkxJU0ggPSAnJyk7CistLSBDYW4ndCBhZGQgRVhDRVBUIFRBQkxFIHdoZW4gdGhlICdQVUJM SVNIJyBwYXJhbWV0ZXIgZG9lcyBub3QgaGF2ZSBkZWZhdWx0CistLSB2YWx1ZQorQUxURVIgUFVC TElDQVRJT04gdGVzdHB1Yl9yZXNldCBBREQgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgcHViX3Nj aDEudGJsMTsKK0VSUk9SOiAgYWRkaW5nIEFMTCBUQUJMRVMgcmVxdWlyZXMgdGhlIHB1YmxpY2F0 aW9uIHRvIGhhdmUgZGVmYXVsdCBwdWJsaWNhdGlvbiBwYXJhbWV0ZXIgdmFsdWVzCitERVRBSUw6 ICBBTEwgVEFCTEVTIGZsYWcgc2hvdWxkIG5vdCBiZSBzZXQgYW5kIG5vIHRhYmxlcy9zY2hlbWFz IHNob3VsZCBiZSBhc3NvY2lhdGVkLgorSElOVDogIFVzZSBBTFRFUiBQVUJMSUNBVElPTiAuLi4g UkVTRVQgdG8gcmVzZXQgdGhlIHB1YmxpY2F0aW9uCiAtLSBWZXJpZnkgdGhhdCAnUFVCTElTSCcg cGFyYW1ldGVyIGlzIHJlc2V0CiBcZFJwKyB0ZXN0cHViX3Jlc2V0CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9yZXNldApAQCAt MTk5OSw2ICsyMDc0LDEyIEBAIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgUkVTRVQ7 CiAoMSByb3cpCiAKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgU0VUIChQVUJMSVNI X1ZJQV9QQVJUSVRJT05fUk9PVCA9ICd0cnVlJyk7CistLSBDYW4ndCBhZGQgRVhDRVBUIFRBQkxF IHdoZW4gJ1BVQkxJU0hfVklBX1BBUlRJVElPTl9ST09UJyBwYXJhbWV0ZXIgZG9lcyBub3QKKy0t IGhhdmUgZGVmYXVsdCB2YWx1ZQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBBREQg QUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgcHViX3NjaDEudGJsMTsKK0VSUk9SOiAgYWRkaW5nIEFM TCBUQUJMRVMgcmVxdWlyZXMgdGhlIHB1YmxpY2F0aW9uIHRvIGhhdmUgZGVmYXVsdCBwdWJsaWNh dGlvbiBwYXJhbWV0ZXIgdmFsdWVzCitERVRBSUw6ICBBTEwgVEFCTEVTIGZsYWcgc2hvdWxkIG5v dCBiZSBzZXQgYW5kIG5vIHRhYmxlcy9zY2hlbWFzIHNob3VsZCBiZSBhc3NvY2lhdGVkLgorSElO VDogIFVzZSBBTFRFUiBQVUJMSUNBVElPTiAuLi4gUkVTRVQgdG8gcmVzZXQgdGhlIHB1YmxpY2F0 aW9uCiAtLSBWZXJpZnkgdGhhdCAnUFVCTElTSF9WSUFfUEFSVElUSU9OX1JPT1QnIHBhcmFtZXRl ciBpcyByZXNldAogXGRScCsgdGVzdHB1Yl9yZXNldAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfcmVzZXQKQEAgLTIwMzcsOSAr MjExOCwxMyBAQCBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IE9XTkVSIFRPIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlcjI7CiBTRVQgUk9MRSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIy OwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBSRVNFVDsgLS0gZmFpbCAtIG11c3Qg YmUgc3VwZXJ1c2VyCiBFUlJPUjogIG11c3QgYmUgc3VwZXJ1c2VyIHRvIFJFU0VUIHB1YmxpY2F0 aW9uCistLSBWZXJpZnkgdGhhdCBvbmx5IHN1cGVydXNlciBjYW4gQUREIEFMTCBUQUJMRVMKK0FM VEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgQUREIEFMTCBUQUJMRVM7CitFUlJPUjogIG11 c3QgYmUgc3VwZXJ1c2VyIHRvIEFERCBBTEwgVEFCTEVTIHRvIHRoZSBwdWJsaWNhdGlvbgogU0VU IFJPTEUgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyOwogRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHVi X3Jlc2V0OwogRFJPUCBUQUJMRSBwdWJfc2NoMS50YmwxOworRFJPUCBUQUJMRSBwdWJfc2NoMS50 YmwyOwogRFJPUCBTQ0hFTUEgcHViX3NjaDE7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwog UkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvcHVibGljYXRpb24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24u c3FsCmluZGV4IDEzNjZiMTFiYmEwLi42MjQwY2Q5N2NlMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1 YmxpY2F0aW9uLnNxbApAQCAtMTA1LDIwICsxMDUsMzMgQEAgU0VMRUNUIHB1Ym5hbWUsIHB1YmFs bHRhYmxlcyBGUk9NIHBnX3B1YmxpY2F0aW9uIFdIRVJFIHB1Ym5hbWUgPSAndGVzdHB1Yl9mb3Jh bGwKIFxkKyB0ZXN0cHViX3RibDIKIFxkUnArIHRlc3RwdWJfZm9yYWxsdGFibGVzCiAKK1NFVCBj bGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHVi X2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgdGVz dHB1Yl90YmwxLCB0ZXN0cHViX3RibDI7CistLSBzcGVjaWZ5IEVYQ0VQVCB3aXRob3V0IFRBQkxF CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxIEZP UiBBTEwgVEFCTEVTIEVYQ0VQVCB0ZXN0cHViX3RibDE7CitSRVNFVCBjbGllbnRfbWluX21lc3Nh Z2VzOworCitcZFJwKyB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZQorXGRScCsgdGVz dHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxCisKIERST1AgVEFCTEUgdGVzdHB1Yl90Ymwy OwotRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlcywgdGVzdHB1Yl9mb3J0YWJs ZSwgdGVzdHB1Yl9mb3JzY2hlbWEsIHRlc3RwdWJfZm9yX3RibF9zY2hlbWE7CitEUk9QIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzLCB0ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHViX2Zv cnNjaGVtYSwgdGVzdHB1Yl9mb3JfdGJsX3NjaGVtYSwgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhj ZXB0dGFibGUsIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlMTsKIAogQ1JFQVRFIFRB QkxFIHRlc3RwdWJfdGJsMyAoYSBpbnQpOwogQ1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsM2EgKGIg dGV4dCkgSU5IRVJJVFMgKHRlc3RwdWJfdGJsMyk7CiBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9 ICdFUlJPUic7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjMgRk9SIFRBQkxFIHRlc3RwdWJf dGJsMzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNCBGT1IgVEFCTEUgT05MWSB0ZXN0cHVi X3RibDM7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjUgRk9SIEFMTCBUQUJMRVMgRVhDRVBU IFRBQkxFIHRlc3RwdWJfdGJsMzsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNiBGT1IgQUxM IFRBQkxFUyBFWENFUFQgVEFCTEUgT05MWSB0ZXN0cHViX3RibDM7CiBSRVNFVCBjbGllbnRfbWlu X21lc3NhZ2VzOwogXGRScCsgdGVzdHB1YjMKIFxkUnArIHRlc3RwdWI0CitcZFJwKyB0ZXN0cHVi NQorXGRScCsgdGVzdHB1YjYKIAogRFJPUCBUQUJMRSB0ZXN0cHViX3RibDMsIHRlc3RwdWJfdGJs M2E7Ci1EUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWIzLCB0ZXN0cHViNDsKK0RST1AgUFVCTElDQVRJ T04gdGVzdHB1YjMsIHRlc3RwdWI0LCB0ZXN0cHViNSwgdGVzdHB1YjY7CiAKIC0tIFRlc3RzIGZv ciBwYXJ0aXRpb25lZCB0YWJsZXMKIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsK QEAgLTEyMjUsMTcgKzEyMzgsMzAgQEAgRFJPUCBUQUJMRSBnZW5jb2xzOwogLS0gVGVzdHMgZm9y IEFMVEVSIFBVQkxJQ0FUSU9OIC4uLiBSRVNFVAogQ1JFQVRFIFNDSEVNQSBwdWJfc2NoMTsKIENS RUFURSBUQUJMRSBwdWJfc2NoMS50YmwxIChhIGludCk7CitDUkVBVEUgVEFCTEUgcHViX3NjaDEu dGJsMiAoYSBpbnQpOwogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRF IFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgRk9SIEFMTCBUQUJMRVM7CiBSRVNFVCBjbGllbnRf bWluX21lc3NhZ2VzOwogCistLSBDYW4ndCBhZGQgRVhDRVBUIFRBQkxFIHRvICdGT1IgQUxMIFRB QkxFUycgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgQUREIEFM TCBUQUJMRVMgRVhDRVBUIFRBQkxFIHB1Yl9zY2gxLnRibDE7CisKIC0tIFZlcmlmeSB0aGF0ICdB TEwgVEFCTEVTJyBmbGFnIGlzIHJlc2V0CiBcZFJwKyB0ZXN0cHViX3Jlc2V0CiBBTFRFUiBQVUJM SUNBVElPTiB0ZXN0cHViX3Jlc2V0IFJFU0VUOwogXGRScCsgdGVzdHB1Yl9yZXNldAogCistLSBT aG91bGQgd29yayBub3cgYWZ0ZXIgcmVzZXR0aW5nIHRoZSBwdWJsaWNhdGlvbgorQUxURVIgUFVC TElDQVRJT04gdGVzdHB1Yl9yZXNldCBBREQgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgcHViX3Nj aDEudGJsMSwgcHViX3NjaDEudGJsMjsKK1xkUnArIHRlc3RwdWJfcmVzZXQKKworQUxURVIgUFVC TElDQVRJT04gdGVzdHB1Yl9yZXNldCBSRVNFVDsKKwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 Yl9yZXNldCBBREQgVEFCTEUgcHViX3NjaDEudGJsMTsKIAorLS0gQ2FuJ3QgYWRkIEVYQ0VQVCBU QUJMRSB0byAnRk9SIFRBQkxFJyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 Yl9yZXNldCBBREQgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgcHViX3NjaDEudGJsMTsKKwogLS0g VmVyaWZ5IHRoYXQgYXNzb2NpYXRlZCB0YWJsZXMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgcHVibGlj YXRpb24gYWZ0ZXIgUkVTRVQKIFxkUnArIHRlc3RwdWJfcmVzZXQKIEFMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfcmVzZXQgUkVTRVQ7CkBAIC0xMjQzLDYgKzEyNjksOSBAQCBBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX3Jlc2V0IFJFU0VUOwogCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jl c2V0IEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpYzsKIAorLS0gQ2FuJ3QgYWRkIEVYQ0VQVCBU QUJMRSB0byAnRk9SIEFMTCBUQUJMRVMgSU4gU0NIRU1BJyBwdWJsaWNhdGlvbgorQUxURVIgUFVC TElDQVRJT04gdGVzdHB1Yl9yZXNldCBBREQgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgcHViX3Nj aDEudGJsMTsKKwogLS0gVmVyaWZ5IHRoYXQgYXNzb2NpYXRlZCBzY2hlbWFzIGFyZSByZW9tdmVk IGZyb20gdGhlIHB1YmxpY2F0aW9uIGFmdGVyIFJFU0VUCiBcZFJwKyB0ZXN0cHViX3Jlc2V0CiBB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFJFU0VUOwpAQCAtMTI1MCw2ICsxMjc5LDEw IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfcmVzZXQgUkVTRVQ7CiAKIEFMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfcmVzZXQgU0VUIChQVUJMSVNIID0gJycpOwogCistLSBDYW4ndCBhZGQg RVhDRVBUIFRBQkxFIHdoZW4gdGhlICdQVUJMSVNIJyBwYXJhbWV0ZXIgZG9lcyBub3QgaGF2ZSBk ZWZhdWx0CistLSB2YWx1ZQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBBREQgQUxM IFRBQkxFUyBFWENFUFQgVEFCTEUgcHViX3NjaDEudGJsMTsKKwogLS0gVmVyaWZ5IHRoYXQgJ1BV QkxJU0gnIHBhcmFtZXRlciBpcyByZXNldAogXGRScCsgdGVzdHB1Yl9yZXNldAogQUxURVIgUFVC TElDQVRJT04gdGVzdHB1Yl9yZXNldCBSRVNFVDsKQEAgLTEyNTcsNiArMTI5MCwxMCBAQCBBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0IFJFU0VUOwogCiBBTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViX3Jlc2V0IFNFVCAoUFVCTElTSF9WSUFfUEFSVElUSU9OX1JPT1QgPSAndHJ1ZScpOwog CistLSBDYW4ndCBhZGQgRVhDRVBUIFRBQkxFIHdoZW4gJ1BVQkxJU0hfVklBX1BBUlRJVElPTl9S T09UJyBwYXJhbWV0ZXIgZG9lcyBub3QKKy0tIGhhdmUgZGVmYXVsdCB2YWx1ZQorQUxURVIgUFVC TElDQVRJT04gdGVzdHB1Yl9yZXNldCBBREQgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgcHViX3Nj aDEudGJsMTsKKwogLS0gVmVyaWZ5IHRoYXQgJ1BVQkxJU0hfVklBX1BBUlRJVElPTl9ST09UJyBw YXJhbWV0ZXIgaXMgcmVzZXQKIFxkUnArIHRlc3RwdWJfcmVzZXQKIEFMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfcmVzZXQgUkVTRVQ7CkBAIC0xMjczLDEwICsxMzEwLDE0IEBAIEFMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfcmVzZXQgUkVTRVQ7CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Jl c2V0IE9XTkVSIFRPIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcjI7CiBTRVQgUk9MRSByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIyOwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNldCBSRVNF VDsgLS0gZmFpbCAtIG11c3QgYmUgc3VwZXJ1c2VyCisKKy0tIFZlcmlmeSB0aGF0IG9ubHkgc3Vw ZXJ1c2VyIGNhbiBBREQgQUxMIFRBQkxFUworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9yZXNl dCBBREQgQUxMIFRBQkxFUzsKIFNFVCBST0xFIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcjsKIAog RFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX3Jlc2V0OwogRFJPUCBUQUJMRSBwdWJfc2NoMS50Ymwx OworRFJPUCBUQUJMRSBwdWJfc2NoMS50YmwyOwogRFJPUCBTQ0hFTUEgcHViX3NjaDE7CiAKIFJF U0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRp b24vbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQKaW5kZXgg NTg2ZmZiYTQzNGUuLmU4YTExN2YzNDIxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRp b24vbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkCkBA IC00Miw2ICs0Miw3IEBAIHRlc3RzICs9IHsKICAgICAgICd0LzAzM19ydW5fYXNfdGFibGVfb3du ZXIucGwnLAogICAgICAgJ3QvMDM0X3RlbXBvcmFsLnBsJywKICAgICAgICd0LzAzNV9jb25mbGlj dHMucGwnLAorICAgICAgJ3QvMDM2X3JlcF9jaGFuZ2VzX2V4Y2VwdF90YWJsZS5wbCcsCiAgICAg ICAndC8xMDBfYnVncy5wbCcsCiAgICAgXSwKICAgfSwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAzNl9yZXBfY2hhbmdlc19leGNlcHRfdGFibGUucGwgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMzZfcmVwX2NoYW5nZXNfZXhjZXB0X3RhYmxlLnBsCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hOWQ3M2ZlNzIxZAotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNl9yZXBfY2hhbmdlc19leGNlcHRfdGFibGUu cGwKQEAgLTAsMCArMSwxODYgQEAKKworIyBDb3B5cmlnaHQgKGMpIDIwMjEtMjAyNSwgUG9zdGdy ZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBMb2dpY2FsIHJlcGxpY2F0aW9uIHRl c3RzIGZvciBleGNlcHQgdGFibGUgcHVibGljYXRpb25zCit1c2Ugc3RyaWN0OwordXNlIHdhcm5p bmdzOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVz dDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworIyBJbml0aWFsaXplIHB1Ymxpc2hlciBub2Rl CitteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1 Ymxpc2hlcicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xv Z2ljYWwnKTsKKyRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CisKKyMgQ3JlYXRlIHN1YnNjcmliZXIg bm9kZQorbXkgJG5vZGVfc3Vic2NyaWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5l dygnc3Vic2NyaWJlcicpOworJG5vZGVfc3Vic2NyaWJlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5n ID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKKworIyBUZXN0IHJlcGxp Y2F0aW9uIHdpdGggcHVibGljYXRpb25zIGNyZWF0ZWQgdXNpbmcgRk9SIEFMTCBUQUJMRVMgRVhD RVBUIFRBQkxFCisjIGNsYXVzZS4KKyMgQ3JlYXRlIHNjaGVtYXMgYW5kIHRhYmxlcyBvbiBwdWJs aXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUNS RUFURSBTQ0hFTUEgc2NoMTsKKwlDUkVBVEUgVEFCTEUgc2NoMS50YWIxIEFTIFNFTEVDVCBnZW5l cmF0ZV9zZXJpZXMoMSwxMCkgQVMgYTsKKwlDUkVBVEUgVEFCTEUgcHVibGljLnRhYjEoYSBpbnQp OworKSk7CisKKyMgQ3JlYXRlIHNjaGVtYXMgYW5kIHRhYmxlcyBvbiBzdWJzY3JpYmVyCiskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFNDSEVN QSBzY2gxOworCUNSRUFURSBUQUJMRSBzY2gxLnRhYjEgKGEgaW50KTsKKwlDUkVBVEUgVEFCTEUg cHVibGljLnRhYjEgKGEgaW50KTsKKykpOworCisjIFNldHVwIGxvZ2ljYWwgcmVwbGljYXRpb24K K215ICRwdWJsaXNoZXJfY29ubnN0ciA9ICRub2RlX3B1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJu YW1lPXBvc3RncmVzJzsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViX3NjaGVtYSBGT1IgQUxMIFRBQkxFUyBFWENFUFQg VEFCTEUgc2NoMS50YWIxIgorKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9zY2hlbWEgQ09OTkVDVElPTiAn JHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiB0YXBfcHViX3NjaGVtYSIKKyk7CisKKyMg V2FpdCBmb3IgaW5pdGlhbCB0YWJsZSBzeW5jIHRvIGZpbmlzaAorJG5vZGVfc3Vic2NyaWJlci0+ d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLAorCSd0YXBfc3ViX3Nj aGVtYScpOworCisjIENoZWNrIHRoZSB0YWJsZSBkYXRhIGRvZXMgbm90IHN5bmMgZm9yIGV4Y2x1 ZGVkIHRhYmxlCitteSAkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSwgbWluKGEpLCBtYXgoYSkgRlJPTSBzY2gxLnRhYjEi KTsKK2lzKCRyZXN1bHQsIHFxKDB8fCksCisJJ2NoZWNrIHRoZXJlIGlzIG5vIGluaXRpYWwgZGF0 YSBjb3BpZWQgZm9yIHRoZSBleGNsdWRlZCB0YWJsZScpOworCisjIEluc2VydCBzb21lIGRhdGEg YW5kIHZlcmlmeSB0aGF0IGluc2VydGVkIGRhdGEgaXMgbm90IHJlcGxpY2F0ZWQKKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHNjaDEudGFiMSBW QUxVRVMoZ2VuZXJhdGVfc2VyaWVzKDExLDIwKSkiKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX3NjaGVtYScpOworCiskcmVzdWx0ID0gJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSwgbWluKGEpLCBt YXgoYSkgRlJPTSBzY2gxLnRhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKDB8fCksICdjaGVjayByZXBs aWNhdGVkIGluc2VydHMgb24gc3Vic2NyaWJlcicpOworCisjIEFsdGVyIHB1YmxpY2F0aW9uIHRv IGV4Y2x1ZGUgZGF0YSBjaGFuZ2VzIGluIHB1YmxpYy50YWIxIGFuZCB2ZXJpZnkgdGhhdAorIyBz dWJzY3JpYmVyIGRvZXMgbm90IGdldCB0aGUgY2hhbmdlZCBkYXRhIGZvciB0aGlzIHRhYmxlLgor JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQUxURVIgUFVC TElDQVRJT04gdGFwX3B1Yl9zY2hlbWEgUkVTRVQ7CisJQUxURVIgUFVCTElDQVRJT04gdGFwX3B1 Yl9zY2hlbWEgQUREIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIHNjaDEudGFiMSwgcHVibGljLnRh YjE7CisJSU5TRVJUIElOVE8gcHVibGljLnRhYjEgVkFMVUVTKGdlbmVyYXRlX3NlcmllcygxLDEw KSk7CispKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1Yl9zY2hl bWEnKTsKKworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJTRUxFQ1QgY291bnQoKiksIG1pbihhKSwgbWF4KGEpIEZST00gcHVibGljLnRhYjEiKTsK K2lzKCRyZXN1bHQsIHFxKDB8fCksICdjaGVjayByb3dzIG9uIHN1YnNjcmliZXIgY2F0Y2h1cCcp OworCisjIGNsZWFudXAKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJE Uk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWJfc2NoZW1hIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgU1VCU0NSSVBUSU9OIHRhcF9zdWJfc2NoZW1hIik7CisK KworIyBDaGVjayBiZWhhdmlvdXIgb2YgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgYW5kIEVY Q0VQVCBjbGF1c2Ugd2l0aAorIyBwYXJ0aXRpb25lZCB0YWJsZSBvciBwYXJ0aWl0aW9ucyBvZiBw YXJ0aXRpb25lZCB0YWJsZS4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jl cycsIHFxKAorCUNSRUFURSBUQUJMRSBzY2gxLnQxKGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0Uo YSk7CisJQ1JFQVRFIFRBQkxFIHNjaDEucGFydDEgUEFSVElUSU9OIE9GIHNjaDEudDEgRk9SIFZB TFVFUyBGUk9NICgwKSBUTyAoNSk7CisJSU5TRVJUIElOVE8gc2NoMS50MSBWQUxVRVMgKDEpOwor KSk7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlD UkVBVEUgVEFCTEUgc2NoMS50MShhIGludCk7CisJQ1JFQVRFIFRBQkxFIHNjaDEucGFydDEoYSBp bnQpOworKSk7CisKKyMgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSBmYWxzZSBhbmQgRVhD RVBUIHNjaDEucGFydDEKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRB QkxFIHNjaDEucGFydDEiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWJfcGFydCBDT05ORUNUSU9OICckcHVibGlz aGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydCIKKyk7Ciskbm9kZV9zdWJzY3Jp YmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICd0YXBfc3Vi X3BhcnQnKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQg SU5UTyBzY2gxLnQxIFZBTFVFUyAoMikiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgndGFwX3N1Yl9wYXJ0Jyk7CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS50MSIpOworaXMoJHJlc3VsdCwg cXEoKSwgJ2NoZWNrIHJvd3Mgb24gcGFydGl0aW9uZWQgdGFibGUnKTsKKworJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBzY2gx LnBhcnQxIik7CitpcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiBwYXJ0aXRpb25zJyk7 CisKKyMgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSBmYWxzZSBhbmQgRVhDRVBUIHNjaDEu dDEKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUFMVEVS IFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydCBSRVNFVDsKKwlBTFRFUiBQVUJMSUNBVElPTiB0YXBf cHViX3BhcnQgQUREIEFMTCBUQUJMRVMgRVhDRVBUIHNjaDEudDE7CispKTsKKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1 Yl9wYXJ0IFJFRlJFU0ggUFVCTElDQVRJT04iKTsKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9y X3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJ3RhcF9zdWJfcGFydCcpOworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHNjaDEudDEg VkFMVUVTICgzKSIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3Vi X3BhcnQnKTsKKworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUICogRlJPTSBzY2gxLnQxIik7CitpcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sg cm93cyBvbiBwYXJ0aXRpb25lZCB0YWJsZScpOworCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFydDEiKTsKK2lz KCAkcmVzdWx0LCBxcSgxCisyCiszKSwgJ2NoZWNrIHJvd3Mgb24gcGFydGl0aW9ucycpOworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIHNjaDEudDEiKTsK KyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1Yl9wYXJ0Jyk7Ciskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgU1VCU0NSSVBUSU9OIHRh cF9zdWJfcGFydCIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRS T1AgUFVCTElDQVRJT04gdGFwX3B1Yl9wYXJ0OyIpOworCisjIHB1Ymxpc2hfdmlhX3BhcnRpdGlv bl9yb290ID0gdHJ1ZSBhbmQgRVhDRVBUIHNjaDEudDEKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQg Rk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIHNjaDEudDEgV0lUSCAocHVibGlzaF92aWFfcGFy dGl0aW9uX3Jvb3QpOworCUlOU0VSVCBJTlRPIHNjaDEudDEgVkFMVUVTICgxKQorKSk7Ciskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElP TiB0YXBfc3ViX3BhcnQgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElP TiB0YXBfcHViX3BhcnQiCispOworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0 aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLCAndGFwX3N1Yl9wYXJ0Jyk7Ciskbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gc2NoMS50MSBWQUxVRVMgKDIp Iik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWJfcGFydCcpOwor CiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxF Q1QgKiBGUk9NIHNjaDEudDEiKTsKK2lzKCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9uIHBh cnRpdGlvbmVkIHRhYmxlJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS5wYXJ0MSIpOworaXMoJHJlc3VsdCwg cXEoKSwgJ2NoZWNrIHJvd3Mgb24gcGFydGl0aW9ucycpOworCisjIHB1Ymxpc2hfdmlhX3BhcnRp dGlvbl9yb290ID0gdHJ1ZSBhbmQgRVhDRVBUIHNjaDEucGFydDEKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUFMVEVSIFBVQkxJQ0FUSU9OIHRhcF9wdWJf cGFydCBSRVNFVDsKKwlBTFRFUiBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQgQUREIEFMTCBUQUJM RVMgRVhDRVBUIHNjaDEucGFydDE7CisJQUxURVIgUFVCTElDQVRJT04gdGFwX3B1Yl9wYXJ0IFNF VCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpOworKSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWJfcGFydCBS RUZSRVNIIFBVQkxJQ0FUSU9OIik7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3Jp cHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICd0YXBfc3ViX3BhcnQnKTsKKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyBzY2gxLnQxIFZBTFVFUyAo MykiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1Yl9wYXJ0Jyk7 CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNF TEVDVCAqIEZST00gc2NoMS50MSIpOworaXMoICRyZXN1bHQsIHFxKDEKKzIKKzMpLCAnY2hlY2sg cm93cyBvbiBwYXJ0aXRpb25lZCB0YWJsZScpOworCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFydDEiKTsKK2lz KCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9uIHBhcnRpdGlvbnMnKTsKKworJG5vZGVfc3Vi c2NyaWJlci0+c3RvcCgnZmFzdCcpOworJG5vZGVfcHVibGlzaGVyLT5zdG9wKCdmYXN0Jyk7CisK K2RvbmVfdGVzdGluZygpOwotLSAKMi4zNC4xCgo= --000000000000159f6f063c3bb0bd--