Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w3PUo-001Bpt-26 for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Mar 2026 02:21:54 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w3PUn-003uOp-0S for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Mar 2026 02:21:53 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w3PUm-003uOh-1I for pgsql-hackers@lists.postgresql.org; Fri, 20 Mar 2026 02:21:53 +0000 Received: from mail-yx1-xb129.google.com ([2607:f8b0:4864:20::b129]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w3PUk-0000000065P-1G68 for pgsql-hackers@lists.postgresql.org; Fri, 20 Mar 2026 02:21:51 +0000 Received: by mail-yx1-xb129.google.com with SMTP id 956f58d0204a3-64acd19e1dfso1438683d50.0 for ; Thu, 19 Mar 2026 19:21:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1773973309; cv=none; d=google.com; s=arc-20240605; b=Y1i74eowuSCJijEBobd6S2CpQN4rsXBlduIeP5ErGhx6Mo7FANXjpCJOFP9SUWwI2q YiSo64y7ENho6kqNkfoaM+zu7HRKd/fpIc/HzBZlywrHBSwtA6lVVUehYHug8WCjfPbd WJFjWoizL2RaCac6Vg8rEFxWXnP0/NERpZVjdjG/GBt/xiwUkoTFsyjQlT5flx76IqYN IGTbmGBr9neevh3TKa/meT8XlGWHvy4iVdcO7qmrKN8+BbkHRJ30KJNP7+3dA3SPSNxQ qHgo7QXfVvBsX7gt/Um3LCqk90tUllzShKdmLO4GLBb5u3fgIvYc4iYBk1JZ6RZ/+orJ viGw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=RH0bOoREUc4HMNaXklY04Gpc9tNNck7B5qUHh1bF+j0=; fh=egAOlRH4ytiCPP9sn3ff+aIE1qqzNI7/5ViqL/MWaQs=; b=I7xy59mWSO/0+AYy0frEcR2tdS1DrK+CajqRz0FA1Xee4ITpXcqNHuqx8WZi7XkVgJ UN2qEcF/AJiZpMdjrAYLsifgUcMSSwl0k5WwNu6ujCpDaNXK0sstZz3DZFGK1HI5Tfg0 rW0e0/0LFJFU9+GBrMbTNtd5Gql+nDfc7pwQge+BAVghNbLNBvGKChKVCZWHdYDFztiE /L+MDa3foViWi39SiwAC3I5e888LxXEXFUEJ1I18Sw8WOaQ4eDVXq0o2ad19Cfrsg+KE wgsDLGqmb1Pq5dW/QlgO73vsvrVK0bnB+Fi91nxqM9rSZtr2Zjc14wRoE+IyrEHW3MRh ersw==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773973309; x=1774578109; 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=RH0bOoREUc4HMNaXklY04Gpc9tNNck7B5qUHh1bF+j0=; b=mAbaup3/6WUFGy6dZNfHl9aN3+qtojp1L11PuXyyd1PWclEhshMZrrFL4iGkjKV5jR 7qiyupcZDZN44viD988nE+Vpe9Z3Y7eCsHqKuSmCDA+ko4E02pEFiKsX7R6DnSc9UXCh Dt92W6T1GOS5j+6HXbTJKJhZcjrXLlDWJL4WWXHafLDp494skFVYox3CxmQqYNeh9Jms 9R/Ri/syU+rOktu50+3a2Hg51zhFNljP7JklW3SFy++UcUvv3nSrxgnbuiDrp0063O9J db/54XyJM2510b4H8ZEI3F5YVi5qbOhXa3DoofAQS9EXwUYxfQ56W6T8lKXb/xgJzVUe LhSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773973309; x=1774578109; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=RH0bOoREUc4HMNaXklY04Gpc9tNNck7B5qUHh1bF+j0=; b=EgLYmQh04d2jo0+LlVevS1opRq+S0vkFikCIiOc5y0nVRQiHKAc9CW7SpzdKDxao6o V4aEu2gigukjAtB4ia2g7jNgc1OKOMvpX+3fPQ8eQECvFH4VRMtWM9If3AjeaIRuJ5C2 w6MlUnZWVdhHUdTrZY9AdChFnKdEkO+2mQTlY2KXf/Xc89yOlTaP5MfI59vTvx074WcK QpC06HcxW00qHfQI8dYurQfgFdBB5rTWwbVD+4+5tvw7YTNYNJrZ/6bI1Nqjw50wQMpM 2jqdQmzLXS6rXmhqg0Q1ujRkjmrgOHFsGHCEdT8V4HwKiIaOEHTfdNC0MifcZHNV5zSe SY1w== X-Forwarded-Encrypted: i=1; AJvYcCXDvEcaPm0LQDVINKBum+/VgytqjPQ3xOwlI5iIfiMzw+nZsCbP0mdWGU6OT/l2Nm95ZNwoQ32NcGlDziEb@lists.postgresql.org X-Gm-Message-State: AOJu0YyxFUNzS3noP7oLLR+e6idbtgMdilGaXghAqSyA5rOIChXNQFoa DtlrpzHTzjl7PIKm3e1UY7rCpZb7I8aMu0FQ6hxNgDUEOmQvJtB2JNPUlP8BmDpb1UIpL5llN7Q 9odN/UIVj0mNXVOcx3xYxc7vZPmNKX3o= X-Gm-Gg: ATEYQzyal9J4OWe4ROZXj9zKQtclwHH1MXiqNz0HPyTBoJZRqqZRH3AAaEHQtMtaYFy x6EfPCiqLs6B/01qIas390i95AgqUzQgg9LHOETch0/MbCREX0Y4vDYqfL5YmW55V54ygWEDZ51 E81xP/sRxxzJhfSL5p4sqoxPgB9TxQfTheUA3lhq9xfQlRcmJb04cZjZ/fipf/WZyXf4fEXoi3N 8hLd60jmb6R8ip5c76bcM/0Gdj3zrgdmrJvuYq28x2Jiha6WP3gpfyyAWLLE6L7po9Ke7jKgkVd V9V/Yq+a5odMR020kpP91ScyYEY6LS+tOaO+WT6c1Q== X-Received: by 2002:a05:690e:128c:b0:64e:ac68:5490 with SMTP id 956f58d0204a3-64eac686243mr712224d50.73.1773973309348; Thu, 19 Mar 2026 19:21:49 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: vignesh C Date: Fri, 20 Mar 2026 07:51:34 +0530 X-Gm-Features: AaiRm51M-iIWDtx06NQvUb-NYQ6zTObVtmDPhHG9Rh31AijLr0mSo0VpgomK_s0 Message-ID: Subject: Re: Skipping schema changes in publication To: Peter Smith Cc: shveta malik , Amit Kapila , Masahiko Sawada , "Hayato Kuroda (Fujitsu)" , Shlok Kyal , Nisha Moond , Ashutosh Sharma , "David G. Johnston" , Dilip Kumar , "Zhijie Hou (Fujitsu)" , YeXiu <1518981153@qq.com>, Ian Lawrence Barwick , Bharath Rupireddy , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000f21945064d6b5891" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000f21945064d6b5891 Content-Type: text/plain; charset="UTF-8" On Wed, 18 Mar 2026 at 18:51, vignesh C wrote: > > On Wed, 18 Mar 2026 at 12:11, Peter Smith wrote: > > > > Hi Vignesh. > > > > Some review comments for patch v65-0001. > > > > ====== > > doc/src/sgml/ref/alter_publication.sgml > > > > 1. > > It seems that SET ALL TABLES is not supported if the publication > > already has FOR TABLE. > > > > e.g > > alter publication pub1 set all tables; > > ERROR: publication "pub1" does not support ALL TABLES operations > > DETAIL: This operation requires the publication to be defined as FOR > > ALL TABLES/SEQUENCES or to be empty. > > > > e.g. > > alter publication pub2 set table t1; > > ERROR: publication "pub2" is defined as FOR ALL TABLES > > DETAIL: Tables or sequences cannot be added to or dropped from FOR > > ALL TABLES publications. > > > > I am not going to debate what rules are right or wrong. (Some rules do > > seem a bit ad-hoc to me, but maybe they are just erring on the safety > > side). But my point is that the documentation does not seem to say > > anything much about what the rules are > > > > e.g. it says "Adding/Setting any schema when the publication also > > publishes a table with a column list, and vice versa is not > > supported.", but OTOH it says nothing about what is > > supported/unsupported for SET ALL TABLES. > > Amit has already replied to this at [1]. > > > ====== > > src/backend/catalog/pg_publication.c > > > > 2. > > +/* > > + * Returns true if the publication has explicitly included relation (i.e., > > + * not marked as EXCEPT). > > + */ > > +bool > > +is_table_publication(Oid pubid) > > > > To me, an "explicitly included relation" is like when you say "FOR > > TABLE t1", where the "t1" is explicitly named. > > > > So it's not very clear whether you consider "FOR ALL TABLES" or a > > "FOR TABLES IN SCHEMA" publication explicitly includes tables or not? > > > > The function comment needs to be clearer. > > Amit has already replied to this at [1]. > > > ~~~ > > > > publication_add_relation: > > > > 3. > > + /* > > + * Determine whether EXCEPT tables require explicit relcache invalidation. > > + * > > + * For CREATE PUBLICATION with EXCEPT tables, invalidation is not needed, > > + * since it is handled when marking the publication as ALL TABLES. > > + * > > + * For ALTER PUBLICATION, invalidation is needed only when adding an EXCEPT > > + * table to a publication already marked as ALL TABLES. For publications > > + * that were originally empty or defined as ALL SEQUENCES and are being > > + * converted to ALL TABLES, invalidation is skipped here, as it is handled > > + * when marking the publication as ALL TABLES. > > + */ > > + inval_except_table = (stmt != NULL) && > > + (stmt->for_all_tables == pub->alltables); > > > > 3a. > > Why is this code done at the top of the function? Can you move it to > > be adjacent to where it is getting used? > > Modified > > > ~ > > > > 3b. > > I think 'alter_stmt' or 'alter_pub_stmt' might be a more informative > > name here, instead of the generic 'stmt' > > Modified > > > ====== > > src/backend/commands/publicationcmds.c > > > > 4. > > - TransformPubWhereClauses(rels, queryString, pubform->pubviaroot); > > + if (isexcept) > > + oldrelids = GetExcludedPublicationTables(pubid, > > + PUBLICATION_PART_ROOT); > > + else > > + { > > + oldrelids = GetIncludedPublicationRelations(pubid, > > + PUBLICATION_PART_ROOT); > > > > I felt there were some subtle things that the logic is using here: > > > > e.g. > > It seems that because this function is called... > > And because it is SET .... > > And because it is SET ALL TABLES ... > > Then, the tables can only be those in the EXCEPT TABLE list > > > > Maybe more comments about 'isexcept', and maybe an Assert(oldrelids != > > NIL); could help here (??) > > Updated comments > > > ~~~ > > > > AlterPublicationAllFlags: > > > > 5. > > + bool nulls[Natts_pg_publication]; > > + bool replaces[Natts_pg_publication]; > > + Datum values[Natts_pg_publication]; > > + bool dirty = false; > > + > > + if (!stmt->for_all_tables && !stmt->for_all_sequences) > > + return; > > + > > + pubform = (Form_pg_publication) GETSTRUCT(tup); > > + > > + memset(values, 0, sizeof(values)); > > + memset(nulls, false, sizeof(nulls)); > > + memset(replaces, false, sizeof(replaces)); > > > > AFAIK, these memsets are not needed if you just say "= {0}" where > > those vars are declared. > > modified > > > AlterPublication: > > > > 6. > > + relations = list_concat(relations, exceptrelations); > > AlterPublicationTables(stmt, tup, relations, pstate->p_sourcetext, > > schemaidlist != NIL); > > > > I did not quite understand this list_concat. > > > > Is this somehow asserting that `relations` must be empty when there > > were `exceptrelations` and vice versa, because other combinations are > > not supported by ALTER -- e.g. is this just a trick to so you can pass > > the same parameter to AlterPublicationTables? This seems related to > > the 'isexecpt' AlterPublicationTables function, which was also quite > > subtle. > > > > Bottom line is, I'm unsure what the logic is here, but it appears > > overly tricky to me. Would more comments help? > > Amit has already replied to this at [1]. > > > ====== > > src/backend/parser/gram.y > > > > 7. > > + * ALL TABLES [ EXCEPT TABLE ( table_name [, ...] ) ] > > > > The CREATE/ALTER docs synopsis says "[ ONLY ] table_name [ * ]" which > > is different from this comment. So are ONLY and * handled properly or > > not? > > It is handled, Is there any issue with the code? It is documented that > way to keep it consistent with CreatePublicationStmt and ALTER > PUBLICATION ADD/DROP/SET pub_obj. > > > ====== > > src/include/nodes/parsenodes.h > > > > 8. > > + bool for_all_tables; /* True if SET ALL TABLES is specified */ > > + bool for_all_sequences; /* True if SET ALL SEQUENCES is specified */ > > > > Maybe these comments do not need to mention the keyword "SET". > > > > That way, in future if/when ADD/DROP get implemented, then this code > > won't need to churn again. > > Modified > > The attached v66 version patch has the changes for the same. While reviewing the patch I noticed couple of small improvements that could be done: 1) changed "may be used " to "can be used" as that is the convention followed: In addition, + SET ALL TABLES may be used to update the + EXCEPT TABLE list of a FOR ALL TABLES + publication. 2) This condition was slightly difficult to understand while reading, simplified it: Changed: - if (!pri->except) + inval_except_table = (alter_stmt != NULL) && + (alter_stmt->for_all_tables == pub->alltables); to: - if (!pri->except) + inval_except_table = (alter_stmt != NULL) && pub->alltables && + (alter_stmt->for_all_tables && pri->except); The attached v67 patch has the changes for the same. Regards, Vignesh --000000000000f21945064d6b5891 Content-Type: application/octet-stream; name="v67-0001-Add-support-for-EXCEPT-TABLE-in-ALTER-PUBLICATIO.patch" Content-Disposition: attachment; filename="v67-0001-Add-support-for-EXCEPT-TABLE-in-ALTER-PUBLICATIO.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmy9v9jx0 RnJvbSA0YTMxY2Y0YmZmMjlmODg2NGJmMjk4YzNiNjM4MWIyMDc1ZmU0Nzc0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWduZXNoIEMgPHZpZ25lc2gyMUBnbWFpbC5jb20+CkRhdGU6 IFdlZCwgNCBNYXIgMjAyNiAxNjoyODozMiArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjY3XSBBZGQg c3VwcG9ydCBmb3IgRVhDRVBUIFRBQkxFIGluIEFMVEVSIFBVQkxJQ0FUSU9OLgoKRm9sbG93aW5n IGNvbW1pdCBmZDM2NjA2NWUwLCB3aGljaCBhZGRlZCBFWENFUFQgVEFCTEUgc3VwcG9ydCB0bwpD UkVBVEUgUFVCTElDQVRJT04sIHRoaXMgY29tbWl0IGV4dGVuZHMgQUxURVIgUFVCTElDQVRJT04g dG8gYWxsb3cKbW9kaWZ5aW5nIHRoZSBleGNsdXNpb24gbGlzdC4KCk5ldyBTeW50YXg6CkFMVEVS IFBVQkxJQ0FUSU9OIG5hbWUgU0VUICBwdWJsaWNhdGlvbl9hbGxfb2JqZWN0IFssIC4uLiBdCgp3 aGVyZSBwdWJsaWNhdGlvbl9hbGxfb2JqZWN0IGlzIG9uZSBvZjoKQUxMIFRBQkxFUyBbIEVYQ0VQ VCBUQUJMRSAoIGV4Y2VwdF90YWJsZV9vYmplY3QgWywgLi4uIF0gKSBdCkFMTCBTRVFVRU5DRVMK ClRoZSBTRVQgQUxMIFRBQkxFUyBjbGF1c2UgdXBkYXRlcyBwZ19wdWJsaWNhdGlvbi5wdWJhbGx0 YWJsZXMgdG8gdHJ1ZS4KSWYgdGhlIEVYQ0VQVCBjbGF1c2UgaXMgcHJvdmlkZWQsIHRoZSBleGlz dGluZyBleGNsdXNpb24gbGlzdCBpbgpwZ19wdWJsaWNhdGlvbl9yZWwgaXMgcmVwbGFjZWQgd2l0 aCB0aGUgc3BlY2lmaWVkIHJlbGF0aW9ucy4gSWYgdGhlCkVYQ0VQVCBjbGF1c2UgaXMgb21pdHRl ZCwgYW55IGV4aXN0aW5nIGV4Y2x1c2lvbnMgZm9yIHRoZSBwdWJsaWNhdGlvbgphcmUgY2xlYXJl ZC4gU2ltaWxhcmx5LCBTRVQgQUxMIFNFUVVFTkNFUyB1cGRhdGVzCnBnX3B1YmxpY2F0aW9uLnB1 YmFsbHNlcXVlbmNlcyB0byB0cnVlLgoKTm90ZSB0aGF0IGJlY2F1c2UgdGhpcyBpcyBhIFNFVCBj b21tYW5kLCBzcGVjaWZ5aW5nIG9ubHkgb25lIG9iamVjdAp0eXBlIChlLmcuLCBTRVQgQUxMIFNF UVVFTkNFUykgd2lsbCByZXNldCB0aGUgb3RoZXIgdW5zcGVjaWZpZWQgZmxhZ3MKKGUuZy4sIHNl dHRpbmcgcHViYWxsdGFibGVzIHRvIGZhbHNlKS4KCkNvbnNpc3RlbnQgd2l0aCBDUkVBVEUgUFVC TElDQVRJT04sIG9ubHkgcm9vdCBwYXJ0aXRpb25lZCB0YWJsZXMgb3IKc3RhbmRhcmQgdGFibGVz IGNhbiBiZSBzcGVjaWZpZWQgaW4gdGhlIEVYQ0VQVCBsaXN0LiBTcGVjaWZ5aW5nIGEKcGFydGl0 aW9uIGNoaWxkIHdpbGwgcmVzdWx0IGluIGFuIGVycm9yLgoKQXV0aG9yOiB2aWduZXNoIEMgPHZp Z25lc2gyMUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBzaHZldGEgbWFsaWsgPHNodmV0YS5tYWxp a0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbWl0IEthcGlsYSA8YW1pdC5rYXBpbGExNkBnbWFp bC5jb20+ClJldmlld2VkLWJ5OiBQZXRlciBTbWl0aCA8c21pdGhwYjIyNTBAZ21haWwuY29tPgpS ZXZpZXdlZC1ieTogTmlzaGEgTW9vbmQgPG5pc2hhLm1vb25kNDEyQGdtYWlsLmNvbT4KRGlzY3Vz c2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUxEYU5tMz1KcnVjamhpaXdzWVF3NS1QR3RCSEZP TmE2RjdoaFdDWE1zR3ZoPXRhbUFAbWFpbC5nbWFpbC5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvcmVm L2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwgICB8ICA3OSArKysrKysrKysrKystLS0KIHNyYy9iYWNr ZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYyAgICAgIHwgIDY2ICsrKysrKysrKysrLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgICAgfCAxMTYgKysrKysrKysrKysr KysrKysrKystLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgfCAg IDMgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgIHwgIDIzICsr KysrCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgICAgICAgICAgICB8ICAxMyArKy0K IHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCAgICAgIHwgICA0ICstCiBzcmMv aW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAgICB8ICAgMiArCiBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCB8ICA5MCArKysrKysrKysrKysrKysrLQog c3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsICAgICAgfCAgNTQgKysrKysrKysr LQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2VwdC5wbCAgICAgfCAgMzYgKysrKysr LQogMTEgZmlsZXMgY2hhbmdlZCwgNDQ5IGluc2VydGlvbnMoKyksIDM3IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbCBiL2Rv Yy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbAppbmRleCAwMjg3NzBmMjE0OS4u N2YwZTQ2MzgwY2MgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRp b24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwKQEAg LTIyLDggKzIyLDggQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgPHJlZnN5bm9wc2lzZGl2 PgogPHN5bm9wc2lzPgogQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBBREQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnB1YmxpY2F0aW9uX29iamVjdDwvcmVwbGFjZWFibGU+IFssIC4uLl0KLUFMVEVSIFBVQkxJ Q0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4g U0VUIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9vYmplY3Q8L3Jl cGxhY2VhYmxlPiBbLCAuLi5dCiBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IERST1AgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnB1YmxpY2F0aW9uX2Ryb3Bfb2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4uXQor QUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3Jl cGxhY2VhYmxlPiBTRVQgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRp b25fb2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4uXSB8IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wdWJsaWNhdGlvbl9hbGxfb2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gfQog QUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3Jl cGxhY2VhYmxlPiBTRVQgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRp b25fcGFyYW1ldGVyPC9yZXBsYWNlYWJsZT4gWz0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnZhbHVlPC9yZXBsYWNlYWJsZT5dIFssIC4uLiBdICkKIEFMVEVSIFBVQkxJQ0FUSU9OIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gT1dORVIgVE8g eyA8cmVwbGFjZWFibGU+bmV3X293bmVyPC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1JPTEUgfCBD VVJSRU5UX1VTRVIgfCBTRVNTSU9OX1VTRVIgfQogQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHJlcGxh Y2VhYmxlPm5ld19uYW1lPC9yZXBsYWNlYWJsZT4KQEAgLTMzLDYgKzMzLDExIEBAIEFMVEVSIFBV QkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJs ZT4gUkVOQU1FIFRPIDxyCiAgICAgVEFCTEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnRhYmxlX2FuZF9jb2x1bW5zPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0KICAgICBUQUJMRVMgSU4g U0NIRU1BIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNjaGVtYV9uYW1lPC9yZXBs YWNlYWJsZT4gfCBDVVJSRU5UX1NDSEVNQSB9IFssIC4uLiBdCiAKKzxwaHJhc2U+YW5kIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9hbGxfb2JqZWN0PC9yZXBsYWNl YWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgorCisgICAgQUxMIFRBQkxFUyBbIEVYQ0VQVCBUQUJM RSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNlcHRfdGFibGVfb2JqZWN0PC9y ZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdCisgICAgQUxMIFNFUVVFTkNFUworCiA8cGhyYXNlPmFu ZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fZHJvcF9vYmplY3Q8 L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKICAgICBUQUJMRSBbIE9OTFkgXSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsg KiBdIFssIC4uLiBdCkBAIC00MSw2ICs0NiwxMCBAQCBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8cgog PHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX2FuZF9jb2x1 bW5zPC9yZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+CiAKICAgICBbIE9OTFkgXSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsgKCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBb LCAuLi4gXSApIF0gWyBXSEVSRSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHBy ZXNzaW9uPC9yZXBsYWNlYWJsZT4gKSBdCisKKzxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5leGNlcHRfdGFibGVfb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXM6PC9waHJh c2U+CisKKyAgICBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVf bmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdCiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+ CiAKQEAgLTUzLDE4ICs2Miw0NiBAQCBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8cgogICA8L3BhcmE+ CiAKICAgPHBhcmE+Ci0gICBUaGUgZmlyc3QgdGhyZWUgdmFyaWFudHMgY2hhbmdlIHdoaWNoIHRh Ymxlcy9zY2hlbWFzIGFyZSBwYXJ0IG9mIHRoZQotICAgcHVibGljYXRpb24uICBUaGUgPGxpdGVy YWw+U0VUPC9saXRlcmFsPiBjbGF1c2Ugd2lsbCByZXBsYWNlIHRoZSBsaXN0IG9mCi0gICB0YWJs ZXMvc2NoZW1hcyBpbiB0aGUgcHVibGljYXRpb24gd2l0aCB0aGUgc3BlY2lmaWVkIGxpc3Q7IHRo ZSBleGlzdGluZwotICAgdGFibGVzL3NjaGVtYXMgdGhhdCB3ZXJlIHByZXNlbnQgaW4gdGhlIHB1 YmxpY2F0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gIFRoZQotICAgPGxpdGVyYWw+QUREPC9saXRlcmFs PiBhbmQgPGxpdGVyYWw+RFJPUDwvbGl0ZXJhbD4gY2xhdXNlcyB3aWxsIGFkZCBhbmQKLSAgIHJl bW92ZSBvbmUgb3IgbW9yZSB0YWJsZXMvc2NoZW1hcyBmcm9tIHRoZSBwdWJsaWNhdGlvbi4gIE5v dGUgdGhhdCBhZGRpbmcKLSAgIHRhYmxlcy9zY2hlbWFzIHRvIGEgcHVibGljYXRpb24gdGhhdCBp cyBhbHJlYWR5IHN1YnNjcmliZWQgdG8gd2lsbCByZXF1aXJlIGFuCisgICBUaGUgZmlyc3QgdHdv IHZhcmlhbnRzIG1vZGlmeSB3aGljaCB0YWJsZXMvc2NoZW1hcyBhcmUgcGFydCBvZiB0aGUKKyAg IHB1YmxpY2F0aW9uLiBUaGUgPGxpdGVyYWw+QUREPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+RFJP UDwvbGl0ZXJhbD4gY2xhdXNlcworICAgd2lsbCBhZGQgYW5kIHJlbW92ZSBvbmUgb3IgbW9yZSB0 YWJsZXMvc2NoZW1hcyBmcm9tIHRoZSBwdWJsaWNhdGlvbi4KKyAgPC9wYXJhPgorCisgIDxwYXJh PgorICAgVGhlIHRoaXJkIHZhcmlhbnQgZWl0aGVyIG1vZGlmaWVzIHRoZSBpbmNsdWRlZCB0YWJs ZXMvc2NoZW1hcworICAgb3IgbWFya3MgdGhlIHB1YmxpY2F0aW9uIGFzIDxsaXRlcmFsPkZPUiBB TEwgU0VRVUVOQ0VTPC9saXRlcmFsPiBvcgorICAgPGxpdGVyYWw+Rk9SIEFMTCBUQUJMRVM8L2xp dGVyYWw+LCBvcHRpb25hbGx5IHVzaW5nCisgICA8bGl0ZXJhbD5FWENFUFQgVEFCTEU8L2xpdGVy YWw+IHRvIGV4Y2x1ZGUgc3BlY2lmaWMgdGFibGVzLiBUaGUKKyAgIDxsaXRlcmFsPlNFVCBBTEwg VEFCTEVTPC9saXRlcmFsPiBjbGF1c2UgY2FuIHRyYW5zZm9ybSBhbiBlbXB0eSBwdWJsaWNhdGlv biwKKyAgIG9yIG9uZSBkZWZpbmVkIGZvciA8bGl0ZXJhbD5BTEwgU0VRVUVOQ0VTPC9saXRlcmFs PiAob3IgYm90aAorICAgPGxpdGVyYWw+QUxMIFRBQkxFUzwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFs PkFMTCBTRVFVRU5DRVM8L2xpdGVyYWw+KSwgaW50bworICAgYSBwdWJsaWNhdGlvbiBkZWZpbmVk IGZvciBBTEwgVEFCTEVTLiBMaWtld2lzZSwKKyAgIDxsaXRlcmFsPlNFVCBBTEwgU0VRVUVOQ0VT PC9saXRlcmFsPiBjYW4gY29udmVydCBhbiBlbXB0eSBwdWJsaWNhdGlvbiwgb3IKKyAgIG9uZSBk ZWZpbmVkIGZvciA8bGl0ZXJhbD5BTEwgVEFCTEVTPC9saXRlcmFsPiAob3IgYm90aAorICAgPGxp dGVyYWw+QUxMIFRBQkxFUzwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPkFMTCBTRVFVRU5DRVM8L2xp dGVyYWw+KSwgaW50byBhCisgICBwdWJsaWNhdGlvbiBkZWZpbmVkIGZvciA8bGl0ZXJhbD5BTEwg U0VRVUVOQ0VTPC9saXRlcmFsPi4gSW4gYWRkaXRpb24sCisgICA8bGl0ZXJhbD5TRVQgQUxMIFRB QkxFUzwvbGl0ZXJhbD4gY2FuIGJlIHVzZWQgdG8gdXBkYXRlIHRoZQorICAgPGxpdGVyYWw+RVhD RVBUIFRBQkxFPC9saXRlcmFsPiBsaXN0IG9mIGEgPGxpdGVyYWw+Rk9SIEFMTCBUQUJMRVM8L2xp dGVyYWw+CisgICBwdWJsaWNhdGlvbi4gSWYgPGxpdGVyYWw+RVhDRVBUIFRBQkxFPC9saXRlcmFs PiBpcyBzcGVjaWZpZWQgd2l0aCBhIGxpc3Qgb2YKKyAgIHRhYmxlcywgdGhlIGV4aXN0aW5nIGV4 Y2x1c2lvbiBsaXN0IGlzIHJlcGxhY2VkIHdpdGggdGhlIHNwZWNpZmllZCB0YWJsZXMuCisgICBJ ZiA8bGl0ZXJhbD5FWENFUFQgVEFCTEU8L2xpdGVyYWw+IGlzIG9taXR0ZWQsIHRoZSBleGlzdGlu ZyBleGNsdXNpb24gbGlzdAorICAgaXMgY2xlYXJlZC4gVGhlIDxsaXRlcmFsPlNFVDwvbGl0ZXJh bD4gY2xhdXNlLCB3aGVuIHVzZWQgd2l0aCBhIHB1YmxpY2F0aW9uCisgICBkZWZpbmVkIHdpdGgg PGxpdGVyYWw+Rk9SIFRBQkxFPC9saXRlcmFsPiBvcgorICAgPGxpdGVyYWw+Rk9SIFRBQkxFUyBJ TiBTQ0hFTUE8L2xpdGVyYWw+LCByZXBsYWNlcyB0aGUgbGlzdCBvZiB0YWJsZXMvc2NoZW1hcwor ICAgaW4gdGhlIHB1YmxpY2F0aW9uIHdpdGggdGhlIHNwZWNpZmllZCBsaXN0OyB0aGUgZXhpc3Rp bmcgdGFibGVzIG9yIHNjaGVtYXMKKyAgIHRoYXQgd2VyZSBwcmVzZW50IGluIHRoZSBwdWJsaWNh dGlvbiB3aWxsIGJlIHJlbW92ZWQuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIE5vdGUgdGhh dCBhZGRpbmcgdGFibGVzL2V4Y2VwdCB0YWJsZXMvc2NoZW1hcyB0byBhIHB1YmxpY2F0aW9uIHRo YXQgaXMKKyAgIGFscmVhZHkgc3Vic2NyaWJlZCB0byB3aWxsIHJlcXVpcmUgYW4KICAgIDxsaW5r IGxpbmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbi1wYXJhbXMtcmVmcmVzaC1wdWJsaWNhdGlv biI+Ci0gICA8bGl0ZXJhbD5BTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0ggUFVCTElDQVRJ T048L2xpdGVyYWw+PC9saW5rPiBhY3Rpb24gb24gdGhlCi0gICBzdWJzY3JpYmluZyBzaWRlIGlu IG9yZGVyIHRvIGJlY29tZSBlZmZlY3RpdmUuIE5vdGUgYWxzbyB0aGF0Ci0gICA8bGl0ZXJhbD5E Uk9QIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+IHdpbGwgbm90IGRyb3AgYW55IHNjaGVtYSB0 YWJsZXMKLSAgIHRoYXQgd2VyZSBzcGVjaWZpZWQgdXNpbmcKKyAgIDxsaXRlcmFsPkFMVEVSIFNV QlNDUklQVElPTiAuLi4gUkVGUkVTSCBQVUJMSUNBVElPTjwvbGl0ZXJhbD48L2xpbms+IGFjdGlv bgorICAgb24gdGhlIHN1YnNjcmliaW5nIHNpZGUgaW4gb3JkZXIgdG8gYmVjb21lIGVmZmVjdGl2 ZS4gTGlrZXdpc2UgYWx0ZXJpbmcgYQorICAgcHVibGljYXRpb24gdG8gc2V0IDxsaXRlcmFsPkFM TCBUQUJMRVM8L2xpdGVyYWw+IG9yIHRvIHNldCBvciB1bnNldAorICAgPGxpdGVyYWw+QUxMIFNF UVVFTkNFUzwvbGl0ZXJhbD4gYWxzbyByZXF1aXJlcyB0aGUgc3Vic2NyaWJlciB0byByZWZyZXNo IHRoZQorICAgcHVibGljYXRpb24uIE5vdGUgYWxzbyB0aGF0IDxsaXRlcmFsPkRST1AgVEFCTEVT IElOIFNDSEVNQTwvbGl0ZXJhbD4gd2lsbAorICAgbm90IGRyb3AgYW55IHNjaGVtYSB0YWJsZXMg dGhhdCB3ZXJlIHNwZWNpZmllZCB1c2luZwogICAgPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXB1 YmxpY2F0aW9uLXBhcmFtcy1mb3ItdGFibGUiPjxsaXRlcmFsPkZPUiBUQUJMRTwvbGl0ZXJhbD48 L2xpbms+LwogICAgPGxpdGVyYWw+QUREIFRBQkxFPC9saXRlcmFsPi4KICAgPC9wYXJhPgpAQCAt ODMsOCArMTIwLDkgQEAgQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIKICAgPHBhcmE+CiAgICBZb3Ug bXVzdCBvd24gdGhlIHB1YmxpY2F0aW9uIHRvIHVzZSA8Y29tbWFuZD5BTFRFUiBQVUJMSUNBVElP TjwvY29tbWFuZD4uCiAgICBBZGRpbmcgYSB0YWJsZSB0byBhIHB1YmxpY2F0aW9uIGFkZGl0aW9u YWxseSByZXF1aXJlcyBvd25pbmcgdGhhdCB0YWJsZS4KLSAgIFRoZSA8bGl0ZXJhbD5BREQgVEFC TEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4gYW5kCi0gICA8bGl0ZXJhbD5TRVQgVEFCTEVTIElOIFND SEVNQTwvbGl0ZXJhbD4gdG8gYSBwdWJsaWNhdGlvbiByZXF1aXJlcyB0aGUKKyAgIFRoZSA8bGl0 ZXJhbD5BREQgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4sCisgICA8bGl0ZXJhbD5TRVQgVEFC TEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4sIDxsaXRlcmFsPlNFVCBBTEwgVEFCTEVTPC9saXRlcmFs PiwKKyAgIGFuZCA8bGl0ZXJhbD5TRVQgQUxMIFNFUVVFTkNFUzwvbGl0ZXJhbD4gdG8gYSBwdWJs aWNhdGlvbiByZXF1aXJlcyB0aGUKICAgIGludm9raW5nIHVzZXIgdG8gYmUgYSBzdXBlcnVzZXIu CiAgICBUbyBhbHRlciB0aGUgb3duZXIsIHlvdSBtdXN0IGJlIGFibGUgdG8gPGxpdGVyYWw+U0VU IFJPTEU8L2xpdGVyYWw+IHRvIHRoZQogICAgbmV3IG93bmluZyByb2xlLCBhbmQgdGhhdCByb2xl IG11c3QgaGF2ZSA8bGl0ZXJhbD5DUkVBVEU8L2xpdGVyYWw+CkBAIC0yMjIsNiArMjYwLDE5IEBA IEFMVEVSIFBVQkxJQ0FUSU9OIG15cHVibGljYXRpb24gQUREIFRBQkxFIHVzZXJzICh1c2VyX2lk LCBmaXJzdG5hbWUpLCBkZXBhcnRtZW50CiAgICBDaGFuZ2UgdGhlIHNldCBvZiBjb2x1bW5zIHB1 Ymxpc2hlZCBmb3IgYSB0YWJsZToKIDxwcm9ncmFtbGlzdGluZz4KIEFMVEVSIFBVQkxJQ0FUSU9O IG15cHVibGljYXRpb24gU0VUIFRBQkxFIHVzZXJzICh1c2VyX2lkLCBmaXJzdG5hbWUsIGxhc3Ru YW1lKSwgVEFCTEUgZGVwYXJ0bWVudHM7Cis8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KKworICA8 cGFyYT4KKyAgIFJlcGxhY2UgdGhlIHB1YmxpY2F0aW9uJ3MgRVhDRVBUIFRBQkxFIGxpc3Q6Cis8 cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBQVUJMSUNBVElPTiBteXB1YmxpY2F0aW9uIFNFVCBBTEwg VEFCTEVTIEVYQ0VQVCBUQUJMRSAodXNlcnMsIGRlcGFydG1lbnRzKTsKKzwvcHJvZ3JhbWxpc3Rp bmc+PC9wYXJhPgorCisgIDxwYXJhPgorICAgUmVzZXQgdGhlIHB1YmxpY2F0aW9uIHRvIGJlIGEg Rk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb24gd2l0aCBubyBleGNsdWRlZAorICAgdGFibGVzOgor PHByb2dyYW1saXN0aW5nPgorQUxURVIgUFVCTElDQVRJT04gbXlwdWJsaWNhdGlvbiBTRVQgQUxM IFRBQkxFUzsKIDwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgogCiAgIDxwYXJhPgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19wdWJsaWNhdGlvbi5jCmluZGV4IGE3OTE1N2M0M2JmLi5jOTJmZjNmNTFjMyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCisrKyBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwpAQCAtMjcwLDYgKzI3MCw0OSBAQCBpc19z Y2hlbWFfcHVibGljYXRpb24oT2lkIHB1YmlkKQogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8qCisg KiBSZXR1cm5zIHRydWUgaWYgdGhlIHB1YmxpY2F0aW9uIGhhcyBleHBsaWNpdGx5IGluY2x1ZGVk IHJlbGF0aW9uIChpLmUuLAorICogbm90IG1hcmtlZCBhcyBFWENFUFQpLgorICovCitib29sCitp c190YWJsZV9wdWJsaWNhdGlvbihPaWQgcHViaWQpCit7CisJUmVsYXRpb24JcHVicmVsc3JlbDsK KwlTY2FuS2V5RGF0YSBzY2Fua2V5OworCVN5c1NjYW5EZXNjIHNjYW47CisJSGVhcFR1cGxlCXR1 cDsKKwlib29sCQlyZXN1bHQgPSBmYWxzZTsKKworCXB1YnJlbHNyZWwgPSB0YWJsZV9vcGVuKFB1 YmxpY2F0aW9uUmVsUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlTY2FuS2V5SW5pdCgm c2NhbmtleSwKKwkJCQlBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcnB1YmlkLAorCQkJCUJURXF1 YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdldERhdHVtKHB1YmlkKSk7 CisKKwlzY2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKHB1YnJlbHNyZWwsCisJCQkJCQkJICBQdWJs aWNhdGlvblJlbFBycHViaWRJbmRleElkLAorCQkJCQkJCSAgdHJ1ZSwgTlVMTCwgMSwgJnNjYW5r ZXkpOworCXR1cCA9IHN5c3RhYmxlX2dldG5leHQoc2Nhbik7CisJaWYgKEhlYXBUdXBsZUlzVmFs aWQodHVwKSkKKwl7CisJCUZvcm1fcGdfcHVibGljYXRpb25fcmVsIHB1YnJlbDsKKworCQlwdWJy ZWwgPSAoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXApOworCisJCS8qCisJ CSAqIEZvciBhbnkgcHVibGljYXRpb24sIHBnX3B1YmxpY2F0aW9uX3JlbCBjb250YWlucyBlaXRo ZXIgb25seSBFWENFUFQKKwkJICogZW50cmllcyBvciBvbmx5IGV4cGxpY2l0bHkgaW5jbHVkZWQg dGFibGVzLiBUaGVyZWZvcmUsIGV4YW1pbmluZworCQkgKiB0aGUgZmlyc3QgdHVwbGUgaXMgc3Vm ZmljaWVudCB0byBkZXRlcm1pbmUgdGFibGUgaW5jbHVzaW9uLgorCQkgKi8KKwkJcmVzdWx0ID0g IXB1YnJlbC0+cHJleGNlcHQ7CisJfQorCisJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKKwl0YWJs ZV9jbG9zZShwdWJyZWxzcmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJuIHJlc3VsdDsK K30KKwogLyoKICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcmVsYXRpb24gaGFzIGNvbHVtbiBsaXN0 IGFzc29jaWF0ZWQgd2l0aCB0aGUKICAqIHB1YmxpY2F0aW9uLCBmYWxzZSBvdGhlcndpc2UuCkBA IC00NDAsNyArNDgzLDcgQEAgYXR0bnVtc3RvaW50MnZlY3RvcihCaXRtYXBzZXQgKmF0dHJzKQog ICovCiBPYmplY3RBZGRyZXNzCiBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oT2lkIHB1YmlkLCBQ dWJsaWNhdGlvblJlbEluZm8gKnByaSwKLQkJCQkJCSBib29sIGlmX25vdF9leGlzdHMpCisJCQkJ CQkgYm9vbCBpZl9ub3RfZXhpc3RzLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqYWx0ZXJfc3RtdCkK IHsKIAlSZWxhdGlvbglyZWw7CiAJSGVhcFR1cGxlCXR1cDsKQEAgLTQ1NSw2ICs0OTgsNyBAQCBw dWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oT2lkIHB1YmlkLCBQdWJsaWNhdGlvblJlbEluZm8gKnBy aSwKIAkJCQlyZWZlcmVuY2VkOwogCUxpc3QJICAgKnJlbGlkcyA9IE5JTDsKIAlpbnQJCQlpOwor CWJvb2wJCWludmFsX2V4Y2VwdF90YWJsZTsKIAogCXJlbCA9IHRhYmxlX29wZW4oUHVibGljYXRp b25SZWxSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKIApAQCAtNTQzLDExICs1ODcsMjMg QEAgcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVibGljYXRpb25SZWxJbmZv ICpwcmksCiAJdGFibGVfY2xvc2UocmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKIAogCS8qCi0JICog UmVsYXRpb25zIGV4Y2x1ZGVkIHZpYSB0aGUgRVhDRVBUIGNsYXVzZSBkbyBub3QgbmVlZCBleHBs aWNpdAotCSAqIGludmFsaWRhdGlvbiBhcyBDcmVhdGVQdWJsaWNhdGlvbigpIGZ1bmN0aW9uIGlu dmFsaWRhdGVzIGFsbCByZWxhdGlvbnMKLQkgKiBhcyBwYXJ0IG9mIGRlZmluaW5nIGEgRk9SIEFM TCBUQUJMRVMgcHVibGljYXRpb24uCisJICogRGV0ZXJtaW5lIHdoZXRoZXIgRVhDRVBUIHRhYmxl cyByZXF1aXJlIGV4cGxpY2l0IHJlbGNhY2hlIGludmFsaWRhdGlvbi4KKwkgKgorCSAqIEZvciBD UkVBVEUgUFVCTElDQVRJT04gd2l0aCBFWENFUFQgdGFibGVzLCBpbnZhbGlkYXRpb24gaXMgc2tp cHBlZAorCSAqIGhlcmUsIGFzIENyZWF0ZVB1YmxpY2F0aW9uKCkgZnVuY3Rpb24gaW52YWxpZGF0 ZXMgYWxsIHJlbGF0aW9ucyBhcyBwYXJ0CisJICogb2YgZGVmaW5pbmcgYSBGT1IgQUxMIFRBQkxF UyBwdWJsaWNhdGlvbi4KKwkgKgorCSAqIEZvciBBTFRFUiBQVUJMSUNBVElPTiwgaW52YWxpZGF0 aW9uIGlzIG5lZWRlZCBvbmx5IHdoZW4gYWRkaW5nIGFuCisJICogRVhDRVBUIHRhYmxlIHRvIGEg cHVibGljYXRpb24gYWxyZWFkeSBtYXJrZWQgYXMgQUxMIFRBQkxFUy4gRm9yCisJICogcHVibGlj YXRpb25zIHRoYXQgd2VyZSBvcmlnaW5hbGx5IGVtcHR5IG9yIGRlZmluZWQgYXMgQUxMIFNFUVVF TkNFUyBhbmQKKwkgKiBhcmUgYmVpbmcgY29udmVydGVkIHRvIEFMTCBUQUJMRVMsIGludmFsaWRh dGlvbiBpcyBza2lwcGVkIGhlcmUsIGFzCisJICogQWx0ZXJQdWJsaWNhdGlvbkFsbEZsYWdzKCkg ZnVuY3Rpb24gaW52YWxpZGF0ZXMgYWxsIHJlbGF0aW9ucyB3aGlsZQorCSAqIG1hcmtpbmcgdGhl IHB1YmxpY2F0aW9uIGFzIEFMTCBUQUJMRVMgcHVibGljYXRpb24uCiAJICovCi0JaWYgKCFwcmkt PmV4Y2VwdCkKKwlpbnZhbF9leGNlcHRfdGFibGUgPSAoYWx0ZXJfc3RtdCAhPSBOVUxMKSAmJiBw dWItPmFsbHRhYmxlcyAmJgorCQkoYWx0ZXJfc3RtdC0+Zm9yX2FsbF90YWJsZXMgJiYgcHJpLT5l eGNlcHQpOworCisJaWYgKCFwcmktPmV4Y2VwdCB8fCBpbnZhbF9leGNlcHRfdGFibGUpCiAJewog CQkvKgogCQkgKiBJbnZhbGlkYXRlIHJlbGNhY2hlIHNvIHRoYXQgcHVibGljYXRpb24gaW5mbyBp cyByZWJ1aWx0LgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25j bWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwppbmRleCA2YTNj YTQ3NTFmYS4uOWE0ZjcwMjc2YjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1 YmxpY2F0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21k cy5jCkBAIC0xMjcyLDE1ICsxMjcyLDM3IEBAIEFsdGVyUHVibGljYXRpb25UYWJsZXMoQWx0ZXJQ dWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAJCVB1YmxpY2F0aW9uRHJvcFRh YmxlcyhwdWJpZCwgcmVscywgZmFsc2UpOwogCWVsc2UJCQkJCQkvKiBBUF9TZXRPYmplY3RzICov CiAJewotCQlMaXN0CSAgICpvbGRyZWxpZHMgPSBHZXRJbmNsdWRlZFB1YmxpY2F0aW9uUmVsYXRp b25zKHB1YmlkLAotCQkJCQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CisJCUxp c3QJICAgKm9sZHJlbGlkcyA9IE5JTDsKIAkJTGlzdAkgICAqZGVscmVscyA9IE5JTDsKIAkJTGlz dENlbGwgICAqb2xkbGM7CiAKLQkJVHJhbnNmb3JtUHViV2hlcmVDbGF1c2VzKHJlbHMsIHF1ZXJ5 U3RyaW5nLCBwdWJmb3JtLT5wdWJ2aWFyb290KTsKKwkJaWYgKHN0bXQtPmZvcl9hbGxfdGFibGVz IHx8IHN0bXQtPmZvcl9hbGxfc2VxdWVuY2VzKQorCQl7CisJCQkvKgorCQkJICogSW4gRk9SIEFM TCBUQUJMRVMgbW9kZSwgcmVsYXRpb25zIGFyZSB0cmFja2VkIGFzIGV4Y2x1c2lvbnMKKwkJCSAq IChFWENFUFQgVEFCTEVTKS4gRmV0Y2ggdGhlIGN1cnJlbnQgZXhjbHVkZWQgcmVsYXRpb25zIHNv IHRoZXkKKwkJCSAqIGNhbiBiZSByZWNvbmNpbGVkIHdpdGggdGhlIHNwZWNpZmllZCBFWENFUFQg bGlzdC4KKwkJCSAqCisJCQkgKiBUaGlzIGFwcGxpZXMgb25seSBpZiB0aGUgZXhpc3RpbmcgcHVi bGljYXRpb24gaXMgYWxyZWFkeQorCQkJICogZGVmaW5lZCBhcyBGT1IgQUxMIFRBQkxFUzsgb3Ro ZXJ3aXNlLCB0aGVyZSBhcmUgbm8gZXhjbHVzaW9uCisJCQkgKiBlbnRyaWVzIHRvIHByb2Nlc3Mu CisJCQkgKi8KKwkJCWlmIChwdWJmb3JtLT5wdWJhbGx0YWJsZXMpCisJCQl7CisJCQkJb2xkcmVs aWRzID0gR2V0RXhjbHVkZWRQdWJsaWNhdGlvblRhYmxlcyhwdWJpZCwKKwkJCQkJCQkJCQkJCQkJ IFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CisJCQl9CisJCX0KKwkJZWxzZQorCQl7CisJCQlvbGRy ZWxpZHMgPSBHZXRJbmNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmlkLAorCQkJCQkJCQkJ CQkJCQlQVUJMSUNBVElPTl9QQVJUX1JPT1QpOwogCi0JCUNoZWNrUHViUmVsYXRpb25Db2x1bW5M aXN0KHN0bXQtPnB1Ym5hbWUsIHJlbHMsIHB1Ymxpc2hfc2NoZW1hLAotCQkJCQkJCQkgICBwdWJm b3JtLT5wdWJ2aWFyb290KTsKKwkJCVRyYW5zZm9ybVB1YldoZXJlQ2xhdXNlcyhyZWxzLCBxdWVy eVN0cmluZywgcHViZm9ybS0+cHVidmlhcm9vdCk7CisKKwkJCUNoZWNrUHViUmVsYXRpb25Db2x1 bW5MaXN0KHN0bXQtPnB1Ym5hbWUsIHJlbHMsIHB1Ymxpc2hfc2NoZW1hLAorCQkJCQkJCQkJICAg cHViZm9ybS0+cHVidmlhcm9vdCk7CisJCX0KIAogCQkvKgogCQkgKiBUbyByZWNyZWF0ZSB0aGUg cmVsYXRpb24gbGlzdCBmb3IgdGhlIHB1YmxpY2F0aW9uLCBsb29rIGZvcgpAQCAtMTQ5OCw2ICsx NTIwLDE2IEBAIENoZWNrQWx0ZXJQdWJsaWNhdGlvbihBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3Rt dCwgSGVhcFR1cGxlIHR1cCwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklW SUxFR0UpLAogCQkJCSBlcnJtc2coIm11c3QgYmUgc3VwZXJ1c2VyIHRvIGFkZCBvciBzZXQgc2No ZW1hcyIpKSk7CiAKKwlpZiAoc3RtdC0+Zm9yX2FsbF90YWJsZXMgJiYgIXN1cGVydXNlcigpKQor CQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklM RUdFKSwKKwkJCQllcnJtc2coIm11c3QgYmUgc3VwZXJ1c2VyIHRvIHNldCBBTEwgVEFCTEVTIikp OworCisJaWYgKHN0bXQtPmZvcl9hbGxfc2VxdWVuY2VzICYmICFzdXBlcnVzZXIoKSkKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSks CisJCQkJZXJybXNnKCJtdXN0IGJlIHN1cGVydXNlciB0byBzZXQgQUxMIFNFUVVFTkNFUyIpKTsK KwogCS8qCiAJICogQ2hlY2sgdGhhdCB1c2VyIGlzIGFsbG93ZWQgdG8gbWFuaXB1bGF0ZSB0aGUg cHVibGljYXRpb24gdGFibGVzIGluCiAJICogc2NoZW1hCkBAIC0xNTQ2LDYgKzE1NzgsNzMgQEAg Q2hlY2tBbHRlclB1YmxpY2F0aW9uKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVw bGUgdHVwLAogCQkJCQkJICAgTmFtZVN0cihwdWJmb3JtLT5wdWJuYW1lKSksCiAJCQkJCWVycmRl dGFpbCgiVGFibGVzIG9yIHNlcXVlbmNlcyBjYW5ub3QgYmUgYWRkZWQgdG8gb3IgZHJvcHBlZCBm cm9tIEZPUiBBTEwgU0VRVUVOQ0VTIHB1YmxpY2F0aW9ucy4iKSk7CiAJfQorCisJaWYgKHN0bXQt PmZvcl9hbGxfdGFibGVzIHx8IHN0bXQtPmZvcl9hbGxfc2VxdWVuY2VzKQorCXsKKwkJLyoKKwkJ ICogSWYgdGhlIHB1YmxpY2F0aW9uIGFscmVhZHkgY29udGFpbnMgc3BlY2lmaWMgdGFibGVzIG9y IHNjaGVtYXMsIHdlCisJCSAqIHByZXZlbnQgc3dpdGNoaW5nIHRvIGEgQUxMIHN0YXRlIHVubGVz cyB0aGUgcHVibGljYXRpb24gaXMgZW1wdHkuCisJCSAqLworCQlpZiAoaXNfdGFibGVfcHVibGlj YXRpb24ocHViZm9ybS0+b2lkKSB8fAorCQkJaXNfc2NoZW1hX3B1YmxpY2F0aW9uKHB1YmZvcm0t Pm9pZCkpCisJCXsKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9PQkpF Q1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCXN0bXQtPmZvcl9hbGxfdGFibGVz ID8KKwkJCQkJZXJybXNnKCJwdWJsaWNhdGlvbiBcIiVzXCIgZG9lcyBub3Qgc3VwcG9ydCBBTEwg VEFCTEVTIG9wZXJhdGlvbnMiLCBOYW1lU3RyKHB1YmZvcm0tPnB1Ym5hbWUpKSA6CisJCQkJCWVy cm1zZygicHVibGljYXRpb24gXCIlc1wiIGRvZXMgbm90IHN1cHBvcnQgQUxMIFNFUVVFTkNFUyBv cGVyYXRpb25zIiwgTmFtZVN0cihwdWJmb3JtLT5wdWJuYW1lKSksCisJCQkJCWVycmRldGFpbCgi VGhpcyBvcGVyYXRpb24gcmVxdWlyZXMgdGhlIHB1YmxpY2F0aW9uIHRvIGJlIGRlZmluZWQgYXMg Rk9SIEFMTCBUQUJMRVMvU0VRVUVOQ0VTIG9yIHRvIGJlIGVtcHR5LiIpKTsKKwkJfQorCX0KK30K KworLyoKKyAqIFVwZGF0ZSBGT1IgQUxMIFRBQkxFUyAvIEZPUiBBTEwgU0VRVUVOQ0VTIGZsYWdz IG9mIGEgcHVibGljYXRpb24uCisgKi8KK3N0YXRpYyB2b2lkCitBbHRlclB1YmxpY2F0aW9uQWxs RmxhZ3MoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIFJlbGF0aW9uIHJlbCwKKwkJCQkJCSBI ZWFwVHVwbGUgdHVwKQoreworCUZvcm1fcGdfcHVibGljYXRpb24gcHViZm9ybTsKKwlib29sCQlu dWxsc1tOYXR0c19wZ19wdWJsaWNhdGlvbl0gPSB7MH07CisJYm9vbAkJcmVwbGFjZXNbTmF0dHNf cGdfcHVibGljYXRpb25dID0gezB9OworCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfcHVibGljYXRp b25dID0gezB9OworCWJvb2wJCWRpcnR5ID0gZmFsc2U7CisKKwlpZiAoIXN0bXQtPmZvcl9hbGxf dGFibGVzICYmICFzdG10LT5mb3JfYWxsX3NlcXVlbmNlcykKKwkJcmV0dXJuOworCisJcHViZm9y bSA9IChGb3JtX3BnX3B1YmxpY2F0aW9uKSBHRVRTVFJVQ1QodHVwKTsKKworCS8qIFVwZGF0ZSBG T1IgQUxMIFRBQkxFUyBmbGFnIGlmIGNoYW5nZWQgKi8KKwlpZiAoc3RtdC0+Zm9yX2FsbF90YWJs ZXMgIT0gcHViZm9ybS0+cHViYWxsdGFibGVzKQorCXsKKwkJdmFsdWVzW0FudW1fcGdfcHVibGlj YXRpb25fcHViYWxsdGFibGVzIC0gMV0gPQorCQkJQm9vbEdldERhdHVtKHN0bXQtPmZvcl9hbGxf dGFibGVzKTsKKwkJcmVwbGFjZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJhbGx0YWJsZXMgLSAx XSA9IHRydWU7CisJCWRpcnR5ID0gdHJ1ZTsKKwl9CisKKwkvKiBVcGRhdGUgRk9SIEFMTCBTRVFV RU5DRVMgZmxhZyBpZiBjaGFuZ2VkICovCisJaWYgKHN0bXQtPmZvcl9hbGxfc2VxdWVuY2VzICE9 IHB1YmZvcm0tPnB1YmFsbHNlcXVlbmNlcykKKwl7CisJCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0 aW9uX3B1YmFsbHNlcXVlbmNlcyAtIDFdID0KKwkJCUJvb2xHZXREYXR1bShzdG10LT5mb3JfYWxs X3NlcXVlbmNlcyk7CisJCXJlcGxhY2VzW0FudW1fcGdfcHVibGljYXRpb25fcHViYWxsc2VxdWVu Y2VzIC0gMV0gPSB0cnVlOworCQlkaXJ0eSA9IHRydWU7CisJfQorCisJaWYgKGRpcnR5KQorCXsK KwkJdHVwID0gaGVhcF9tb2RpZnlfdHVwbGUodHVwLCBSZWxhdGlvbkdldERlc2NyKHJlbCksIHZh bHVlcywKKwkJCQkJCQkJbnVsbHMsIHJlcGxhY2VzKTsKKwkJQ2F0YWxvZ1R1cGxlVXBkYXRlKHJl bCwgJnR1cC0+dF9zZWxmLCB0dXApOworCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCisJ CS8qIEZvciBBTEwgVEFCTEVTLCB3ZSBtdXN0IGludmFsaWRhdGUgYWxsIHJlbGNhY2hlIGVudHJp ZXMgKi8KKwkJaWYgKHJlcGxhY2VzW0FudW1fcGdfcHVibGljYXRpb25fcHViYWxsdGFibGVzIC0g MV0pCisJCQlDYWNoZUludmFsaWRhdGVSZWxjYWNoZUFsbCgpOworCX0KIH0KIAogLyoKQEAgLTE1 OTEsOSArMTY5MCw2IEBAIEFsdGVyUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRl clB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAkJT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoc3Rt dC0+cHVib2JqZWN0cywgcHN0YXRlLCAmcmVsYXRpb25zLAogCQkJCQkJCQkgICAmZXhjZXB0cmVs YXRpb25zLCAmc2NoZW1haWRsaXN0KTsKIAotCQkvKiBFWENFUFQgY2xhdXNlIGlzIG5vdCBzdXBw b3J0ZWQgd2l0aCBBTFRFUiBQVUJMSUNBVElPTiAqLwotCQlBc3NlcnQoZXhjZXB0cmVsYXRpb25z ID09IE5JTCk7Ci0KIAkJQ2hlY2tBbHRlclB1YmxpY2F0aW9uKHN0bXQsIHR1cCwgcmVsYXRpb25z LCBzY2hlbWFpZGxpc3QpOwogCiAJCWhlYXBfZnJlZXR1cGxlKHR1cCk7CkBAIC0xNjE1LDkgKzE3 MTEsMTEgQEAgQWx0ZXJQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGlj YXRpb25TdG10ICpzdG10KQogCQkJCQllcnJtc2coInB1YmxpY2F0aW9uIFwiJXNcIiBkb2VzIG5v dCBleGlzdCIsCiAJCQkJCQkgICBzdG10LT5wdWJuYW1lKSk7CiAKKwkJcmVsYXRpb25zID0gbGlz dF9jb25jYXQocmVsYXRpb25zLCBleGNlcHRyZWxhdGlvbnMpOwogCQlBbHRlclB1YmxpY2F0aW9u VGFibGVzKHN0bXQsIHR1cCwgcmVsYXRpb25zLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJ CQkgICBzY2hlbWFpZGxpc3QgIT0gTklMKTsKIAkJQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMoc3Rt dCwgdHVwLCBzY2hlbWFpZGxpc3QpOworCQlBbHRlclB1YmxpY2F0aW9uQWxsRmxhZ3Moc3RtdCwg cmVsLCB0dXApOwogCX0KIAogCS8qIENsZWFudXAuICovCkBAIC0xOTUzLDcgKzIwNTEsNyBAQCBQ dWJsaWNhdGlvbkFkZFRhYmxlcyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJvb2wgaWZfbm90X2V4 aXN0cywKIAkJCWFjbGNoZWNrX2Vycm9yKEFDTENIRUNLX05PVF9PV05FUiwgZ2V0X3JlbGtpbmRf b2JqdHlwZShyZWwtPnJkX3JlbC0+cmVsa2luZCksCiAJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShyZWwpKTsKIAotCQlvYmogPSBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24ocHViaWQs IHB1Yl9yZWwsIGlmX25vdF9leGlzdHMpOworCQlvYmogPSBwdWJsaWNhdGlvbl9hZGRfcmVsYXRp b24ocHViaWQsIHB1Yl9yZWwsIGlmX25vdF9leGlzdHMsIHN0bXQpOwogCQlpZiAoc3RtdCkKIAkJ ewogCQkJRXZlbnRUcmlnZ2VyQ29sbGVjdFNpbXBsZUNvbW1hbmQob2JqLCBJbnZhbGlkT2JqZWN0 QWRkcmVzcywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggNjdlNDJlNWRmMjkuLjE0MTVj MGEyNDNmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMjA2MTQsNyArMjA2MTQsOCBA QCBBVEV4ZWNBdHRhY2hQYXJ0aXRpb24oTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBQYXJ0 aXRpb25DbWQgKmNtZCwKIAkJCQkJCQkgIGxpc3RfbGVuZ3RoKGV4Y2VwdHB1Ym9pZHMpLAogCQkJ CQkJCSAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoYXR0YWNocmVsKSwKIAkJCQkJCQkgIHB1Ym5h bWVzLmRhdGEpLAotCQkJCWVycmRldGFpbCgiVGhlIHB1YmxpY2F0aW9uIEVYQ0VQVCBjbGF1c2Ug Y2Fubm90IGNvbnRhaW4gdGFibGVzIHRoYXQgYXJlIHBhcnRpdGlvbnMuIikpOworCQkJCWVycmRl dGFpbCgiVGhlIHB1YmxpY2F0aW9uIEVYQ0VQVCBjbGF1c2UgY2Fubm90IGNvbnRhaW4gdGFibGVz IHRoYXQgYXJlIHBhcnRpdGlvbnMuIiksCisJCQkJZXJyaGludCgiTW9kaWZ5IHRoZSBwdWJsaWNh dGlvbidzIEVYQ0VQVCBjbGF1c2UgdXNpbmcgQUxURVIgUFVCTElDQVRJT04gLi4uIFNFVCBBTEwg VEFCTEVTLiIpKTsKIAl9CiAKIAlsaXN0X2ZyZWUoZXhjZXB0cHVib2lkcyk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpp bmRleCAwYjRhNDkxMTM3MC4uOTJkZWQ1MzA3YjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bh cnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMTE0NDUsMTEg KzExNDQ1LDE4IEBAIHB1Yl9leGNlcHRfb2JqX2xpc3Q6IFB1YmxpY2F0aW9uRXhjZXB0T2JqU3Bl YwogICoKICAqIEFMVEVSIFBVQkxJQ0FUSU9OIG5hbWUgU0VUIHB1Yl9vYmogWywgLi4uXQogICoK KyAqIEFMVEVSIFBVQkxJQ0FUSU9OIG5hbWUgU0VUIHB1Yl9hbGxfb2JqX3R5cGUgWywgLi4uXQor ICoKICAqIHB1Yl9vYmogaXMgb25lIG9mOgogICoKICAqCQlUQUJMRSB0YWJsZV9uYW1lIFssIC4u Ll0KICAqCQlUQUJMRVMgSU4gU0NIRU1BIHNjaGVtYV9uYW1lIFssIC4uLl0KICAqCisgKiBwdWJf YWxsX29ial90eXBlIGlzIG9uZSBvZjoKKyAqCisgKgkJQUxMIFRBQkxFUyBbIEVYQ0VQVCBUQUJM RSAoIHRhYmxlX25hbWUgWywgLi4uXSApIF0KKyAqCQlBTEwgU0VRVUVOQ0VTCisgKgogICoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLwogCiBBbHRlclB1YmxpY2F0aW9uU3RtdDoKQEAgLTExNDU5LDYgKzEx NDY2LDcgQEAgQWx0ZXJQdWJsaWNhdGlvblN0bXQ6CiAKIAkJCQkJbi0+cHVibmFtZSA9ICQzOwog CQkJCQluLT5vcHRpb25zID0gJDU7CisJCQkJCW4tPmZvcl9hbGxfdGFibGVzID0gZmFsc2U7CiAJ CQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CiAJCQl8IEFMVEVSIFBVQkxJQ0FUSU9OIG5hbWUg QUREX1AgcHViX29ial9saXN0CkBAIC0xMTQ2OSw2ICsxMTQ3Nyw3IEBAIEFsdGVyUHVibGljYXRp b25TdG10OgogCQkJCQluLT5wdWJvYmplY3RzID0gJDU7CiAJCQkJCXByZXByb2Nlc3NfcHVib2Jq X2xpc3Qobi0+cHVib2JqZWN0cywgeXlzY2FubmVyKTsKIAkJCQkJbi0+YWN0aW9uID0gQVBfQWRk T2JqZWN0czsKKwkJCQkJbi0+Zm9yX2FsbF90YWJsZXMgPSBmYWxzZTsKIAkJCQkJJCQgPSAoTm9k ZSAqKSBuOwogCQkJCX0KIAkJCXwgQUxURVIgUFVCTElDQVRJT04gbmFtZSBTRVQgcHViX29ial9s aXN0CkBAIC0xMTQ3OSw2ICsxMTQ4OCwxOSBAQCBBbHRlclB1YmxpY2F0aW9uU3RtdDoKIAkJCQkJ bi0+cHVib2JqZWN0cyA9ICQ1OwogCQkJCQlwcmVwcm9jZXNzX3B1Ym9ial9saXN0KG4tPnB1Ym9i amVjdHMsIHl5c2Nhbm5lcik7CiAJCQkJCW4tPmFjdGlvbiA9IEFQX1NldE9iamVjdHM7CisJCQkJ CW4tPmZvcl9hbGxfdGFibGVzID0gZmFsc2U7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9 CisJCQl8IEFMVEVSIFBVQkxJQ0FUSU9OIG5hbWUgU0VUIHB1Yl9hbGxfb2JqX3R5cGVfbGlzdAor CQkJCXsKKwkJCQkJQWx0ZXJQdWJsaWNhdGlvblN0bXQgKm4gPSBtYWtlTm9kZShBbHRlclB1Ymxp Y2F0aW9uU3RtdCk7CisKKwkJCQkJbi0+cHVibmFtZSA9ICQzOworCQkJCQluLT5hY3Rpb24gPSBB UF9TZXRPYmplY3RzOworCQkJCQlwcmVwcm9jZXNzX3B1Yl9hbGxfb2JqdHlwZV9saXN0KCQ1LCAm bi0+cHVib2JqZWN0cywKKwkJCQkJCQkJCQkJCQkmbi0+Zm9yX2FsbF90YWJsZXMsCisJCQkJCQkJ CQkJCQkJJm4tPmZvcl9hbGxfc2VxdWVuY2VzLAorCQkJCQkJCQkJCQkJCXl5c2Nhbm5lcik7CiAJ CQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CiAJCQl8IEFMVEVSIFBVQkxJQ0FUSU9OIG5hbWUg RFJPUCBwdWJfb2JqX2xpc3QKQEAgLTExNDg5LDYgKzExNTExLDcgQEAgQWx0ZXJQdWJsaWNhdGlv blN0bXQ6CiAJCQkJCW4tPnB1Ym9iamVjdHMgPSAkNTsKIAkJCQkJcHJlcHJvY2Vzc19wdWJvYmpf bGlzdChuLT5wdWJvYmplY3RzLCB5eXNjYW5uZXIpOwogCQkJCQluLT5hY3Rpb24gPSBBUF9Ecm9w T2JqZWN0czsKKwkJCQkJbi0+Zm9yX2FsbF90YWJsZXMgPSBmYWxzZTsKIAkJCQkJJCQgPSAoTm9k ZSAqKSBuOwogCQkJCX0KIAkJOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0 ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4IDViZGJmMTUzMGEy Li4yZjY3NDc2NGNhZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5j CisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAtMjMyOSw3ICsyMzI5LDE4 IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCQlDT01QTEVURV9XSVRI KCJUQUJMRVMgSU4gU0NIRU1BIiwgIlRBQkxFIik7CiAJLyogQUxURVIgUFVCTElDQVRJT04gPG5h bWU+IFNFVCAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0 Y2hBbnksICJTRVQiKSkKLQkJQ09NUExFVEVfV0lUSCgiKCIsICJUQUJMRVMgSU4gU0NIRU1BIiwg IlRBQkxFIik7CisJCUNPTVBMRVRFX1dJVEgoIigiLCAiQUxMIFNFUVVFTkNFUyIsICJBTEwgVEFC TEVTIiwgIlRBQkxFUyBJTiBTQ0hFTUEiLCAiVEFCTEUiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJB TFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiU0VUIiwgIkFMTCIpKQorCQlDT01QTEVU RV9XSVRIKCJTRVFVRU5DRVMiLCAiVEFCTEVTIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIi LCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIlNFVCIsICJBTEwiLCAiVEFCTEVTIikpCisJCUNP TVBMRVRFX1dJVEgoIkVYQ0VQVCBUQUJMRSAoIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIi LCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIlNFVCIsICJBTEwiLCAiVEFCTEVTIiwgIkVYQ0VQ VCIpKQorCQlDT01QTEVURV9XSVRIKCJUQUJMRSAoIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxU RVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIlNFVCIsICJBTEwiLCAiVEFCTEVTIiwgIkVY Q0VQVCIsICJUQUJMRSIpKQorCQlDT01QTEVURV9XSVRIKCIoIik7CisJLyogQ29tcGxldGUgIkFM VEVSIFBVQkxJQ0FUSU9OIDxuYW1lPiBGT1IgVEFCTEUiIHdpdGggIjx0YWJsZT4sIC4uLiIgKi8K KwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiU0VU IiwgIkFMTCIsICJUQUJMRVMiLCAiRVhDRVBUIiwgIlRBQkxFIiwgIigiKSkKKwkJQ09NUExFVEVf V0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdGFibGVzKTsKIAllbHNlIGlmIChN YXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQUREfERST1B8U0VUIiwg IlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiKSkKIAkJQ09NUExFVEVfV0lUSF9RVUVSWV9QTFVTKFF1 ZXJ5X2Zvcl9saXN0X29mX3NjaGVtYXMKIAkJCQkJCQkJICIgQU5EIG5zcG5hbWUgTk9UIExJS0Ug RSdwZ1xcXFxfJSUnIiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGlj YXRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAppbmRleCBlMjUy Mjg3MTNlNy4uODliNGJiMTRmNjIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHVibGljYXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgK QEAgLTE5NSwxMCArMTk1LDEyIEBAIGV4dGVybiBPaWQJR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJs aWNhdGlvbihPaWQgcHVib2lkLCBMaXN0ICphbmNlc3RvcnMsCiAKIGV4dGVybiBib29sIGlzX3B1 Ymxpc2hhYmxlX3JlbGF0aW9uKFJlbGF0aW9uIHJlbCk7CiBleHRlcm4gYm9vbCBpc19zY2hlbWFf cHVibGljYXRpb24oT2lkIHB1YmlkKTsKK2V4dGVybiBib29sIGlzX3RhYmxlX3B1YmxpY2F0aW9u KE9pZCBwdWJpZCk7CiBleHRlcm4gYm9vbCBjaGVja19hbmRfZmV0Y2hfY29sdW1uX2xpc3QoUHVi bGljYXRpb24gKnB1YiwgT2lkIHJlbGlkLAogCQkJCQkJCQkJCU1lbW9yeUNvbnRleHQgbWN4dCwg Qml0bWFwc2V0ICoqY29scyk7CiBleHRlcm4gT2JqZWN0QWRkcmVzcyBwdWJsaWNhdGlvbl9hZGRf cmVsYXRpb24oT2lkIHB1YmlkLCBQdWJsaWNhdGlvblJlbEluZm8gKnByaSwKLQkJCQkJCQkJCQkJ ICBib29sIGlmX25vdF9leGlzdHMpOworCQkJCQkJCQkJCQkgIGJvb2wgaWZfbm90X2V4aXN0cywK KwkJCQkJCQkJCQkJICBBbHRlclB1YmxpY2F0aW9uU3RtdCAqYWx0ZXJfc3RtdCk7CiBleHRlcm4g Qml0bWFwc2V0ICpwdWJfY29sbGlzdF92YWxpZGF0ZShSZWxhdGlvbiB0YXJnZXRyZWwsIExpc3Qg KmNvbHVtbnMpOwogZXh0ZXJuIE9iamVjdEFkZHJlc3MgcHVibGljYXRpb25fYWRkX3NjaGVtYShP aWQgcHViaWQsIE9pZCBzY2hlbWFpZCwKIAkJCQkJCQkJCQkJYm9vbCBpZl9ub3RfZXhpc3RzKTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRl L25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBmZmFkZDY2NzE2Ny4uMzFmOWY3ZmZmNjUgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9u b2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTQ1MjUsNiArNDUyNSw4IEBAIHR5cGVkZWYgc3RydWN0IEFs dGVyUHVibGljYXRpb25TdG10CiAJTGlzdAkgICAqcHVib2JqZWN0czsJCS8qIE9wdGlvbmFsIGxp c3Qgb2YgcHVibGljYXRpb24gb2JqZWN0cyAqLwogCUFsdGVyUHVibGljYXRpb25BY3Rpb24gYWN0 aW9uOwkvKiBXaGF0IGFjdGlvbiB0byBwZXJmb3JtIHdpdGggdGhlIGdpdmVuCiAJCQkJCQkJCQkg KiBvYmplY3RzICovCisJYm9vbAkJZm9yX2FsbF90YWJsZXM7IC8qIFRydWUgaWYgQUxMIFRBQkxF UyBpcyBzcGVjaWZpZWQgKi8KKwlib29sCQlmb3JfYWxsX3NlcXVlbmNlczsJLyogVHJ1ZSBpZiBB TEwgU0VRVUVOQ0VTIGlzIHNwZWNpZmllZCAqLwogfSBBbHRlclB1YmxpY2F0aW9uU3RtdDsKIAog dHlwZWRlZiBzdHJ1Y3QgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdApkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3B1YmxpY2F0aW9uLm91dAppbmRleCA2ODFkMjU2NGVkNS4uYjQ3NjI2YjUwM2EgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CkBAIC0yNTQsOSArMjU0 LDgxIEBAIEV4Y2VwdCBQdWJsaWNhdGlvbnM6CiAgICAgInRlc3RwdWJfZm9yYWxsdGFibGVzX2V4 Y2VwdHRhYmxlIgogICAgICJ0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTEiCiAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gU0VUIEFMTCBU QUJMRVMvU0VRVUVOQ0VTCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKy0tIFJlcGxhY2UgdGhlIGV4aXN0aW5nIEVYQ0VQVCBUQUJMRSBsaXN0ICh0ZXN0cHVi X3RibDEpIHdpdGggYSBuZXcKKy0tIEVYQ0VQVCBUQUJMRSBsaXN0IGNvbnRhaW5pbmcgb25seSAo dGVzdHB1Yl90YmwyKS4KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4 Y2VwdHRhYmxlIFNFVCBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodGVzdHB1Yl90YmwyKTsKK1xk UnArIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JhbGx0 YWJsZXNfZXhjZXB0dGFibGUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRl cyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAg ICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZiAgICAgICAgfCAKK0V4Y2VwdCB0YWJsZXM6Cisg ICAgInB1YmxpYy50ZXN0cHViX3RibDIiCisKKy0tIENsZWFyIHRoZSBFWENFUFQgVEFCTEUgbGlz dCwgbWFraW5nIHRoZSBwdWJsaWNhdGlvbiBpbmNsdWRlIGFsbCB0YWJsZXMuCitBTFRFUiBQVUJM SUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZSBTRVQgQUxMIFRBQkxFUzsK K1xkUnArIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3Jh bGx0YWJsZXNfZXhjZXB0dGFibGUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgfCBEZXNjcmlwdGlvbiAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAg ICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZiAgICAgICAgfCAKKygxIHJvdykKKworLS0g Q3JlYXRlIGFuIGVtcHR5IHB1YmxpY2F0aW9uIGZvciBzdWJzZXF1ZW50IHRlc3RzLgorQ1JFQVRF IFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsX3RibHNfc2VxczsKKy0tIEVuYWJsZSBib3RoIHB1 YmFsbHRhYmxlcyBhbmQgcHViYWxsc2VxdWVuY2VzCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHVi X2ZvcmFsbF90YmxzX3NlcXMgU0VUIEFMTCBUQUJMRVMsIEFMTCBTRVFVRU5DRVM7CitcZFJwKyB0 ZXN0cHViX2ZvcmFsbF90YmxzX3NlcXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JhbGxfdGJsc19zZXFz CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29s dW1ucyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IHQgICAgICAgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAg ICAgICAgICB8IGYgICAgICAgIHwgCisoMSByb3cpCisKKy0tIEV4cGxpY2l0bHkgdGVzdCB0aGF0 IFNFVCBBTEwgVEFCTEVTIHJlc2V0cyBwdWJhbGxzZXF1ZW5jZXMgdG8gZmFsc2UKKy0tIFJlc3Vs dCBzaG91bGQgYmU6IHB1YmFsbHRhYmxlcyA9IHRydWUsIHB1YmFsbHNlcXVlbmNlcyA9IGZhbHNl CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbF90YmxzX3NlcXMgU0VUIEFMTCBUQUJM RVM7CitcZFJwKyB0ZXN0cHViX2ZvcmFsbF90YmxzX3NlcXMKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3Jh bGxfdGJsc19zZXFzCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFs bCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBH ZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8 IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAg fCBub25lICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCisoMSByb3cpCisKKy0tIEV4cGxpY2l0 bHkgdGVzdCB0aGF0IFNFVCBBTEwgU0VRVUVOQ0VTIHJlc2V0cyBwdWJhbGx0YWJsZXMgdG8gZmFs c2UKKy0tIFJlc3VsdCBzaG91bGQgYmU6IHB1YmFsbHRhYmxlcyA9IGZhbHNlLCBwdWJhbGxzZXF1 ZW5jZXMgPSB0cnVlCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbF90YmxzX3NlcXMg U0VUIEFMTCBTRVFVRU5DRVM7CitcZFJwKyB0ZXN0cHViX2ZvcmFsbF90YmxzX3NlcXMKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1Yl9mb3JhbGxfdGJsc19zZXFzCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24g CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IHQgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCisoMSByb3cp CisKKy0tIGZhaWwgLSBTRVQgQUxMIFRBQkxFUy9TRVFVRU5DRVMgaXMgbm90IGFsbG93ZWQgZm9y IGEgJ0ZPUiBUQUJMRScgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9y dGFibGUgU0VUIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0ZXN0cHViX3RibDEpOworRVJST1I6 ICBwdWJsaWNhdGlvbiAidGVzdHB1Yl9mb3J0YWJsZSIgZG9lcyBub3Qgc3VwcG9ydCBBTEwgVEFC TEVTIG9wZXJhdGlvbnMKK0RFVEFJTDogIFRoaXMgb3BlcmF0aW9uIHJlcXVpcmVzIHRoZSBwdWJs aWNhdGlvbiB0byBiZSBkZWZpbmVkIGFzIEZPUiBBTEwgVEFCTEVTL1NFUVVFTkNFUyBvciB0byBi ZSBlbXB0eS4KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGUgU0VUIEFMTCBUQUJM RVM7CitFUlJPUjogIHB1YmxpY2F0aW9uICJ0ZXN0cHViX2ZvcnRhYmxlIiBkb2VzIG5vdCBzdXBw b3J0IEFMTCBUQUJMRVMgb3BlcmF0aW9ucworREVUQUlMOiAgVGhpcyBvcGVyYXRpb24gcmVxdWly ZXMgdGhlIHB1YmxpY2F0aW9uIHRvIGJlIGRlZmluZWQgYXMgRk9SIEFMTCBUQUJMRVMvU0VRVUVO Q0VTIG9yIHRvIGJlIGVtcHR5LgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBT RVQgQUxMIFNFUVVFTkNFUzsKK0VSUk9SOiAgcHVibGljYXRpb24gInRlc3RwdWJfZm9ydGFibGUi IGRvZXMgbm90IHN1cHBvcnQgQUxMIFNFUVVFTkNFUyBvcGVyYXRpb25zCitERVRBSUw6ICBUaGlz IG9wZXJhdGlvbiByZXF1aXJlcyB0aGUgcHVibGljYXRpb24gdG8gYmUgZGVmaW5lZCBhcyBGT1Ig QUxMIFRBQkxFUy9TRVFVRU5DRVMgb3IgdG8gYmUgZW1wdHkuCistLSBmYWlsIC0gU0VUIEFMTCBU QUJMRVMgaXMgbm90IGFsbG93ZWQgZm9yIGEgc2NoZW1hIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJM SUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBTRVQgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHB1 Yl90ZXN0LnRlc3RwdWJfbm9wayk7CitFUlJPUjogIHB1YmxpY2F0aW9uICJ0ZXN0cHViX2ZvcnNj aGVtYSIgZG9lcyBub3Qgc3VwcG9ydCBBTEwgVEFCTEVTIG9wZXJhdGlvbnMKK0RFVEFJTDogIFRo aXMgb3BlcmF0aW9uIHJlcXVpcmVzIHRoZSBwdWJsaWNhdGlvbiB0byBiZSBkZWZpbmVkIGFzIEZP UiBBTEwgVEFCTEVTL1NFUVVFTkNFUyBvciB0byBiZSBlbXB0eS4KK0FMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZm9yc2NoZW1hIFNFVCBBTEwgVEFCTEVTOworRVJST1I6ICBwdWJsaWNhdGlvbiAi dGVzdHB1Yl9mb3JzY2hlbWEiIGRvZXMgbm90IHN1cHBvcnQgQUxMIFRBQkxFUyBvcGVyYXRpb25z CitERVRBSUw6ICBUaGlzIG9wZXJhdGlvbiByZXF1aXJlcyB0aGUgcHVibGljYXRpb24gdG8gYmUg ZGVmaW5lZCBhcyBGT1IgQUxMIFRBQkxFUy9TRVFVRU5DRVMgb3IgdG8gYmUgZW1wdHkuCiBSRVNF VCBjbGllbnRfbWluX21lc3NhZ2VzOwogRFJPUCBUQUJMRSB0ZXN0cHViX3RibDI7Ci1EUk9QIFBV QkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzLCB0ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHVi X2ZvcnNjaGVtYSwgdGVzdHB1Yl9mb3JfdGJsX3NjaGVtYSwgdGVzdHB1Yl9mb3JhbGx0YWJsZXNf ZXhjZXB0dGFibGUsIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlMTsKK0RST1AgUFVC TElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMsIHRlc3RwdWJfZm9ydGFibGUsIHRlc3RwdWJf Zm9yc2NoZW1hLCB0ZXN0cHViX2Zvcl90Ymxfc2NoZW1hOworRFJPUCBQVUJMSUNBVElPTiB0ZXN0 cHViX2ZvcmFsbF90YmxzX3NlcXMsIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlLCB0 ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTE7CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tIFRlc3RzIGZvciBpbmhlcml0ZWQgdGFibGVzLCBh bmQKIC0tIEVYQ0VQVCBUQUJMRSB0ZXN0cyBmb3IgaW5oZXJpdGVkIHRhYmxlcwpAQCAtMzYxLDYg KzQzMyw3IEBAIENSRUFURSBUQUJMRSB0YWJfbWFpbiAoYSBpbnQpIFBBUlRJVElPTiBCWSBSQU5H RShhKTsKIEFMVEVSIFRBQkxFIHRhYl9tYWluIEFUVEFDSCBQQVJUSVRJT04gdGVzdHB1Yl9yb290 IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIwMCk7CiBFUlJPUjogIGNhbm5vdCBhdHRhY2ggdGFi bGUgInRlc3RwdWJfcm9vdCIgYXMgcGFydGl0aW9uIGJlY2F1c2UgaXQgaXMgcmVmZXJlbmNlZCBp biBwdWJsaWNhdGlvbiAidGVzdHB1YjgiIEVYQ0VQVCBjbGF1c2UKIERFVEFJTDogIFRoZSBwdWJs aWNhdGlvbiBFWENFUFQgY2xhdXNlIGNhbm5vdCBjb250YWluIHRhYmxlcyB0aGF0IGFyZSBwYXJ0 aXRpb25zLgorSElOVDogIE1vZGlmeSB0aGUgcHVibGljYXRpb24ncyBFWENFUFQgY2xhdXNlIHVz aW5nIEFMVEVSIFBVQkxJQ0FUSU9OIC4uLiBTRVQgQUxMIFRBQkxFUy4KIFJFU0VUIGNsaWVudF9t aW5fbWVzc2FnZXM7CiBEUk9QIFRBQkxFIHRlc3RwdWJfcm9vdCwgdGVzdHB1Yl9wYXJ0MSwgdGFi X21haW47CiBEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWI4OwpAQCAtMTU0MSw3ICsxNjE0LDIwIEBA IEVSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgdG8gY2hhbmdlIG93bmVyIG9mIHB1YmxpY2F0aW9u ICJ0ZXN0cHViNCIKIEhJTlQ6ICBUaGUgb3duZXIgb2YgYSBGT1IgQUxMIFRBQkxFUyBvciBBTEwg U0VRVUVOQ0VTIG9yIFRBQkxFUyBJTiBTQ0hFTUEgcHVibGljYXRpb24gbXVzdCBiZSBhIHN1cGVy dXNlci4KIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI0IG93bmVyIHRvIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlcjsgLS0gb2sKIFNFVCBST0xFIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcjsKLURS T1AgUFVCTElDQVRJT04gdGVzdHB1YjQ7CitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJP Uic7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjUgRk9SIEFMTCBUQUJMRVM7CitSRVNFVCBj bGllbnRfbWluX21lc3NhZ2VzOworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjUgT1dORVIgVE8g cmVncmVzc19wdWJsaWNhdGlvbl91c2VyMzsKK1NFVCBST0xFIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlcjM7CistLSBmYWlsIC0gU0VUIEFMTCBUQUJMRVMvU0VRVUVOQ0VTIG9uIGEgcHVibGljYXRp b24gcmVxdWlyZXMgc3VwZXJ1c2VyIHByaXZpbGVnZXMKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWI1IFNFVCBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodGVzdHB1Yl90YmwxKTsgLS0gZmFpbAor RVJST1I6ICBtdXN0IGJlIHN1cGVydXNlciB0byBzZXQgQUxMIFRBQkxFUworQUxURVIgUFVCTElD QVRJT04gdGVzdHB1YjUgU0VUIEFMTCBUQUJMRVM7IC0tIGZhaWwKK0VSUk9SOiAgbXVzdCBiZSBz dXBlcnVzZXIgdG8gc2V0IEFMTCBUQUJMRVMKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IFNF VCBBTEwgU0VRVUVOQ0VTOyAtLSBmYWlsCitFUlJPUjogIG11c3QgYmUgc3VwZXJ1c2VyIHRvIHNl dCBBTEwgU0VRVUVOQ0VTCitTRVQgUk9MRSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXI7CitEUk9Q IFBVQkxJQ0FUSU9OIHRlc3RwdWI0LCB0ZXN0cHViNTsKIERST1AgUk9MRSByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIzOwogUkVWT0tFIENSRUFURSBPTiBEQVRBQkFTRSByZWdyZXNzaW9uIEZST00g cmVncmVzc19wdWJsaWNhdGlvbl91c2VyMjsKIERST1AgVEFCTEUgdGVzdHB1Yl9wYXJ0ZWQ7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKaW5kZXggNDA1NTc5ZGFkNTIuLmY4YzU5MzJj OTA4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCkBAIC0xMTksOSArMTE5LDQ4 IEBAIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTEg Rk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFCiAtLSBpbiB0aGUgRVhDRVBUIFRBQkxFIGNsYXVz ZQogXGQgdGVzdHB1Yl90YmwxCiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorLS0gU0VUIEFMTCBUQUJMRVMvU0VRVUVOQ0VTCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIFJlcGxhY2UgdGhlIGV4aXN0aW5nIEVY Q0VQVCBUQUJMRSBsaXN0ICh0ZXN0cHViX3RibDEpIHdpdGggYSBuZXcKKy0tIEVYQ0VQVCBUQUJM RSBsaXN0IGNvbnRhaW5pbmcgb25seSAodGVzdHB1Yl90YmwyKS4KK0FMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlIFNFVCBBTEwgVEFCTEVTIEVYQ0VQVCBU QUJMRSAodGVzdHB1Yl90YmwyKTsKK1xkUnArIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRh YmxlCisKKy0tIENsZWFyIHRoZSBFWENFUFQgVEFCTEUgbGlzdCwgbWFraW5nIHRoZSBwdWJsaWNh dGlvbiBpbmNsdWRlIGFsbCB0YWJsZXMuCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFs bHRhYmxlc19leGNlcHR0YWJsZSBTRVQgQUxMIFRBQkxFUzsKK1xkUnArIHRlc3RwdWJfZm9yYWxs dGFibGVzX2V4Y2VwdHRhYmxlCisKKy0tIENyZWF0ZSBhbiBlbXB0eSBwdWJsaWNhdGlvbiBmb3Ig c3Vic2VxdWVudCB0ZXN0cy4KK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbF90Ymxz X3NlcXM7CisKKy0tIEVuYWJsZSBib3RoIHB1YmFsbHRhYmxlcyBhbmQgcHViYWxsc2VxdWVuY2Vz CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbF90YmxzX3NlcXMgU0VUIEFMTCBUQUJM RVMsIEFMTCBTRVFVRU5DRVM7CitcZFJwKyB0ZXN0cHViX2ZvcmFsbF90YmxzX3NlcXMKKworLS0g RXhwbGljaXRseSB0ZXN0IHRoYXQgU0VUIEFMTCBUQUJMRVMgcmVzZXRzIHB1YmFsbHNlcXVlbmNl cyB0byBmYWxzZQorLS0gUmVzdWx0IHNob3VsZCBiZTogcHViYWxsdGFibGVzID0gdHJ1ZSwgcHVi YWxsc2VxdWVuY2VzID0gZmFsc2UKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsX3Ri bHNfc2VxcyBTRVQgQUxMIFRBQkxFUzsKK1xkUnArIHRlc3RwdWJfZm9yYWxsX3RibHNfc2Vxcwor CistLSBFeHBsaWNpdGx5IHRlc3QgdGhhdCBTRVQgQUxMIFNFUVVFTkNFUyByZXNldHMgcHViYWxs dGFibGVzIHRvIGZhbHNlCistLSBSZXN1bHQgc2hvdWxkIGJlOiBwdWJhbGx0YWJsZXMgPSBmYWxz ZSwgcHViYWxsc2VxdWVuY2VzID0gdHJ1ZQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3Jh bGxfdGJsc19zZXFzIFNFVCBBTEwgU0VRVUVOQ0VTOworXGRScCsgdGVzdHB1Yl9mb3JhbGxfdGJs c19zZXFzCisKKy0tIGZhaWwgLSBTRVQgQUxMIFRBQkxFUy9TRVFVRU5DRVMgaXMgbm90IGFsbG93 ZWQgZm9yIGEgJ0ZPUiBUQUJMRScgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZm9ydGFibGUgU0VUIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0ZXN0cHViX3RibDEpOwor QUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBTRVQgQUxMIFRBQkxFUzsKK0FMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGUgU0VUIEFMTCBTRVFVRU5DRVM7CisKKy0tIGZh aWwgLSBTRVQgQUxMIFRBQkxFUyBpcyBub3QgYWxsb3dlZCBmb3IgYSBzY2hlbWEgcHVibGljYXRp b24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hIFNFVCBBTEwgVEFCTEVTIEVY Q0VQVCBUQUJMRSAocHViX3Rlc3QudGVzdHB1Yl9ub3BrKTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWJfZm9yc2NoZW1hIFNFVCBBTEwgVEFCTEVTOworCiBSRVNFVCBjbGllbnRfbWluX21lc3Nh Z2VzOwogRFJPUCBUQUJMRSB0ZXN0cHViX3RibDI7Ci1EUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJf Zm9yYWxsdGFibGVzLCB0ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHViX2ZvcnNjaGVtYSwgdGVzdHB1 Yl9mb3JfdGJsX3NjaGVtYSwgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUsIHRlc3Rw dWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlMTsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9m b3JhbGx0YWJsZXMsIHRlc3RwdWJfZm9ydGFibGUsIHRlc3RwdWJfZm9yc2NoZW1hLCB0ZXN0cHVi X2Zvcl90Ymxfc2NoZW1hOworRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbF90YmxzX3Nl cXMsIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlLCB0ZXN0cHViX2ZvcmFsbHRhYmxl c19leGNlcHR0YWJsZTE7CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogLS0gVGVzdHMgZm9yIGluaGVyaXRlZCB0YWJsZXMsIGFuZApAQCAtOTkxLDcgKzEw MzAsMTggQEAgQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjQgb3duZXIgdG8gcmVncmVzc19wdWJs aWNhdGlvbl91c2VyMjsgLS0gZmFpbAogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjQgb3duZXIg dG8gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyOyAtLSBvawogCiBTRVQgUk9MRSByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXI7Ci1EUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWI0OworU0VUIGNsaWVudF9t aW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IEZPUiBB TEwgVEFCTEVTOworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKK0FMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWI1IE9XTkVSIFRPIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcjM7CitTRVQgUk9MRSBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIzOworLS0gZmFpbCAtIFNFVCBBTEwgVEFCTEVTL1NFUVVF TkNFUyBvbiBhIHB1YmxpY2F0aW9uIHJlcXVpcmVzIHN1cGVydXNlciBwcml2aWxlZ2VzCitBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViNSBTRVQgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3Rw dWJfdGJsMSk7IC0tIGZhaWwKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IFNFVCBBTEwgVEFC TEVTOyAtLSBmYWlsCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNSBTRVQgQUxMIFNFUVVFTkNF UzsgLS0gZmFpbAorCitTRVQgUk9MRSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXI7CitEUk9QIFBV QkxJQ0FUSU9OIHRlc3RwdWI0LCB0ZXN0cHViNTsKIERST1AgUk9MRSByZWdyZXNzX3B1YmxpY2F0 aW9uX3VzZXIzOwogCiBSRVZPS0UgQ1JFQVRFIE9OIERBVEFCQVNFIHJlZ3Jlc3Npb24gRlJPTSBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDM3X2V4Y2VwdC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQu cGwKaW5kZXggMjcyOWRmNGQ1YzAuLjEzYjk5ZWRhMjU4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAzN19leGNlcHQucGwKQEAgLTE1MiwxOCArMTUyLDUwIEBAICRyZXN1bHQgPQogICAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIGNo aWxkMSIpOwogaXMoJHJlc3VsdCwgcXEoMTApLCAnY2hlY2sgcmVwbGljYXRlZCBpbnNlcnRzIG9u IHN1YnNjcmliZXInKTsKIAorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQ1JFQVRFIFRBQkxFIHRhYjIgQVMgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLDEwKSBBUyBh Iik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJM RSB0YWIyIChhIGludCkiKTsKKworIyBSZXBsYWNlIHRoZSBFWENFUFQgVEFCTEUgbGlzdCBzbyB0 aGF0IG9ubHkgdGFiMiBpcyBleGNsdWRlZC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIkFMVEVSIFBVQkxJQ0FUSU9OIHRhYl9wdWIgU0VUIEFMTCBUQUJMRVMgRVhD RVBUIFRBQkxFICh0YWIyKSIpOworCisjIFJlZnJlc2ggdGhlIHN1YnNjcmlwdGlvbiBzbyB0aGUg c3Vic2NyaWJlciBwaWNrcyB1cCB0aGUgdXBkYXRlZAorIyBwdWJsaWNhdGlvbiBkZWZpbml0aW9u IGFuZCBpbml0aWF0ZXMgdGFibGUgc3luY2hyb25pemF0aW9uLgorJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YWJfc3ViIFJFRlJF U0ggUFVCTElDQVRJT04iKTsKKworIyBXYWl0IGZvciBpbml0aWFsIHRhYmxlIHN5bmMgdG8gZmlu aXNoCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9w dWJsaXNoZXIsICd0YWJfc3ViJyk7CisKKyMgVmVyaWZ5IHRoYXQgaW5pdGlhbCB0YWJsZSBzeW5j aHJvbml6YXRpb24gZG9lcyBub3Qgb2NjdXIgZm9yIHRhYmxlcworIyBsaXN0ZWQgaW4gdGhlIEVY Q0VQVCBUQUJMRSBjbGF1c2UuCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0YWIyIik7CitpcygkcmVzdWx0 LCBxcSgwKSwKKwknY2hlY2sgdGhlcmUgaXMgbm8gaW5pdGlhbCBkYXRhIGNvcGllZCBmb3IgdGhl IHRhYmxlcyBzcGVjaWZpZWQgaW4gdGhlIEVYQ0VQVCBUQUJMRSBjbGF1c2UnCispOworCisjIFZl cmlmeSB0aGF0IHRhYmxlIHN5bmNocm9uaXphdGlvbiBub3cgaGFwcGVucyBmb3IgdGFiMS4gVGFi bGUgdGFiMSBpcworIyBpbmNsdWRlZCBub3cgc2luY2UgdGhlIEVYQ0VQVCBUQUJMRSBsaXN0IGlz IG9ubHkgKHRhYjIpLgorJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGFiMSIpOworaXMoJHJlc3VsdCwgcXEo MjApLAorCSdjaGVjayB0aGF0IHRoZSBkYXRhIGlzIGNvcGllZCBhcyB0aGUgdGFiMSBpcyByZW1v dmVkIGZyb20gRVhDRVBUIFRBQkxFIGNsYXVzZScKKyk7CisKICMgY2xlYW51cAogJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFxKAogCURST1AgU1VCU0NSSVBUSU9O IHRhYl9zdWI7CiAJVFJVTkNBVEUgVEFCTEUgdGFiMTsKLQlEUk9QIFRBQkxFIHBhcmVudCwgcGFy ZW50MSwgY2hpbGQsIGNoaWxkMTsKKwlEUk9QIFRBQkxFIHBhcmVudCwgcGFyZW50MSwgY2hpbGQs IGNoaWxkMSwgdGFiMjsKICkpOwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3Rn cmVzJywgcXEoCiAJRFJPUCBQVUJMSUNBVElPTiB0YWJfcHViOwogCVRSVU5DQVRFIFRBQkxFIHRh YjE7Ci0gICAgRFJPUCBUQUJMRSBwYXJlbnQsIHBhcmVudDEsIGNoaWxkLCBjaGlsZDE7CisgICAg RFJPUCBUQUJMRSBwYXJlbnQsIHBhcmVudDEsIGNoaWxkLCBjaGlsZDEsIHRhYjI7CiApKTsKIAog IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLSAKMi40My4w Cgo= --000000000000f21945064d6b5891--