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 1vx3DO-00CaP7-1M for pgsql-hackers@arkaria.postgresql.org; Mon, 02 Mar 2026 13:21:38 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vx3DM-000vvw-2u for pgsql-hackers@arkaria.postgresql.org; Mon, 02 Mar 2026 13:21:37 +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 1vx3DM-000vvN-0H for pgsql-hackers@lists.postgresql.org; Mon, 02 Mar 2026 13:21:37 +0000 Received: from mail-oo1-xc2e.google.com ([2607:f8b0:4864:20::c2e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vx3DK-000000001RN-1m5t for pgsql-hackers@lists.postgresql.org; Mon, 02 Mar 2026 13:21:35 +0000 Received: by mail-oo1-xc2e.google.com with SMTP id 006d021491bc7-679efb9eb0dso3601058eaf.2 for ; Mon, 02 Mar 2026 05:21:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1772457694; cv=none; d=google.com; s=arc-20240605; b=Wji+TPrNQuZvbxOaDxSjJt8QqwmN4OeVw/Oiz6Ia4LXyjYQec5kXlg9XCxYljHSRoL zR2o0zRo8a6gE5UnX2J+BYQ4Ueg4KX7rdGd0JhTTNMAhc1tb5LVvKDrZG4zHXYFIkuhV RFv07gSFLuHp8ygQCaQOa9lWtM666RiijU2VD5EPgG8FoS+jfDuov7bpxmmUB4aL+dSq HJ7lAMn5sevsWX7JElvgZYQt+3G+AidVRtuCRPO3C+rLhMI1QorDKNdQatjKmqH09LSD 8RE+QQUDaFUozxcW1Oz6i4yUqT54u4Yhvi5gERjj+0I+uyWdVAVyFR9zYLE+sXX9piSJ j+gA== 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=i70Dcz4HDh5LC2Db4fi4QocOQRY7wVMRSbvWjcAhmko=; fh=PssxkYs6HhmX07IJqD21NKn6Ej0T9j2jLWfoEk0+jCo=; b=I/IogewBMh8dmRkxw1eD6O+XDY/WAPiio9uIpscOMGoUBtAHjLvOrvvSz+yoaDPOl1 kiNmMEJjrqHzFxfLfkO7oYTeVSXD+8E7z2CjQ2C/73BIsfQidLHQ7RhGIVwmv6FpWPIM Q03nnnFNYE2MTP7rSABbIPpqk/DZakoG/IzEbjL5K1t+rqpg7LF2rzOdyH6tQOBWtmjA M7vAYqsHeT3cM9a6Yy9PruwCBCx7aV2wy8GpdIolQZVC7nbywiNQCJlSCVqTuLJca2a1 UnDoK9tCd/qfke0B+i4pzRVuha7Ovb6eGT25rXM3kDBcukDrpEsrLh7SRu1fiNn0PqIC ItQg==; 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=1772457694; x=1773062494; 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=i70Dcz4HDh5LC2Db4fi4QocOQRY7wVMRSbvWjcAhmko=; b=dggt4hqeDQTCoP0CJFf9yX04FZN5e/LCNvZ9LrrWTEcX0LtwZtEsdwohhkHA3ZBX8i t5E7JFoBxXd5kWbIkzrx9aLoZr43a/bVfzs3wRdLeaG/uwM7psF7BkfEpPiK/xde1Hax S8TEhZYgrL5e3qIUaYlO6nHUmJVu3wR5oU7//ukFQtpzoNlcJDhNStelv/X0yWkLWJh1 KV/mMiJRojehGgvdsjBzlp53A4GSOx+LSnYHASP8uwcVrlstLM2MXQtMaq0DtCTfgngv /91X5kHyOpMwbxZhLPTje5miySYuTLNHZReLQAlJphL6cd7xk1f0s6mMn/rjY+d8p+Wf t0Hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772457694; x=1773062494; 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=i70Dcz4HDh5LC2Db4fi4QocOQRY7wVMRSbvWjcAhmko=; b=u++otGuSQja8qaQYPwZm1xKlYtnVk086YmBpnBlpfzD8EAgD9BEw516aBj78RKtVQw z3y0nsK2AbCbiJN8ZOseiTh9SiqbmZiD0P5npAY/D2079H/T0KPkuC1ERnJyeOK17wUr Vj62TtlEIC0Vod+JubqxwmwhRr4uBz9PFpFp4aDa99k5onWu4xKs1WVd0RtiIiGRUNAk VKlIbR3BEXGub5QkduRv5uvTvUT9bEBUN/Fb78uomhbm166n3b3vCN2AYPf6v5NusBYJ GH6IjadsHDd03PLbA6dBiPlrnUtm5uNtm84SdPANhED2YAOwiUX7FNVx02SQCJ0Wcqk9 LT0A== X-Forwarded-Encrypted: i=1; AJvYcCVDJlT+L6GRerpwGo86qV9N2uLWXH7NHBP8mDwLIxE2gUAuQU5XD6/4afE7yxEYYboi1oHCrLe48zQ5O1Zo@lists.postgresql.org X-Gm-Message-State: AOJu0YyhIPV1Mjp1yXweiCWHKtCjXcrC1NoIpf2ZytA5fS6impmKzAC1 6057Dg4GE/yWBTXDH4ZoqwQz30zUAvMAE33cjq20gM9Kvo2lYdRDIx/vFzo+c8bQyh1HKFpEcn6 6W4YS91hhTStH0+bdTL360jsF4NNymG8= X-Gm-Gg: ATEYQzxm7NsqbfGj6sZW+NXM4Hg3qrr8PSaZe9liQnZAM0dXIWqzxfbF+dIbIU6mJ11 3aEzx5hpBBc4CDV4PBMxZbbp93ARL1aWI2t/ImRRWJ/cH6xtO7XKJFUPx4Jvr5UmoCWJW/YTfwH h6FyG8Ru2f6MLOqyeFg/EQzJ9t1l+Yis0hPKdmS/WHXx+pE8kMpnyW10vWv2WMTixN0rdu4H4sp IT3z8PspEhYpKhxe9XZxsMyc2mM32m2SDEb5zTnfUqqnadbNkHqcbD6q58s5jEsMOunPF4IbffP kLgYwnOiNw== X-Received: by 2002:a05:6820:2081:b0:65f:1012:69c5 with SMTP id 006d021491bc7-679faf97538mr6540926eaf.76.1772457693669; Mon, 02 Mar 2026 05:21:33 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Shlok Kyal Date: Mon, 2 Mar 2026 18:51:21 +0530 X-Gm-Features: AaiRm51BMa4uwd54hSjC4OGRnMw_YmuecjF6adz1DpwCGdTxyYrP942lNFotY24 Message-ID: Subject: Re: Skipping schema changes in publication To: Amit Kapila Cc: vignesh C , Nisha Moond , shveta malik , Ashutosh Sharma , "David G. Johnston" , Dilip Kumar , Peter Smith , "Zhijie Hou (Fujitsu)" , YeXiu <1518981153@qq.com>, Ian Lawrence Barwick , Bharath Rupireddy , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000036356c064c0a775f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000036356c064c0a775f Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, 2 Mar 2026 at 16:18, Amit Kapila wrote: > > On Sun, Mar 1, 2026 at 8:41=E2=80=AFAM vignesh C wr= ote: > > > > The attached v53 version patch has the changes for the same. > > > > Few comments on 0001: > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > 1. > + appendStringInfoString(&pubnames, quote_literal_cstr(pubname)); > + } > + > + ereport(ERROR, > + errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), > + errmsg_plural("cannot attach table \"%s\" as partition because it is > referenced in publication \"%s\" EXCEPT clause", > + "cannot attach table \"%s\" as partition because it is referenced > in publications \"%s\" EXCEPT clause", > > Because of the quoting before the error message, the publication names > in the error message will be displayed in single quotes which are > inside double quotes. > See below examples: > ERROR: cannot attach table "testpub_root" as partition because it is > referenced in publication "'testpub8'" EXCEPT clause > ERROR: cannot attach table "testpub_root" as partition because it is > referenced in publications "'testpub8', 'testpub10'" EXCEPT clause > > Do you this type of quoting single/multiple object names in error > messages at other places? What is the rationale behind this? > > The other place where I see such names is following but it also > doesn't use the pattern followed above: > A. > postgres=3D# create subscription sub1 connection 'dbname=3Dpostgres' > publication pub9, pub10, pub11; > WARNING: publications "pub9", "pub10", "pub11" do not exist on the publi= sher > postgres=3D# create subscription sub2 connection 'dbname=3Dpostgres' > publication pub12; > WARNING: publication "pub12" does not exist on the publisher > > B. > logical replication target relation "public.t10" is missing replicated > columns: "c2", "c3". For this See logicalrep_get_attrs_str and > following error_message > ereport(ERROR, > errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), > errmsg_plural("logical replication target relation \"%s.%s\" is > missing replicated column: %s", > "logical replication target relation \"%s.%s\" is missing replicated > columns: %s", > > I think we should follow what is done in logicalrep_get_attrs_str for > message construction and translation. > I agree. Made the changes for the same. > 2. > * pub_all_obj_type is one of: > * > - * TABLES > + * TABLES [EXCEPT [TABLE] ( table [, ...] )] > > Though the table is no longer optional, the above syntax reference > still shows it as optional. > > 3. > + List *ancestor_exceptpuboids =3D GetRelationExcludedPublications(anc= estor);; > > One spurious semicolon at the end of above statement > > 4. > @@ -5838,16 +5841,22 @@ RelationBuildPublicationDesc(Relation > relation, PublicationDesc *pubdesc) > foreach(lc, ancestors) > { > Oid ancestor =3D lfirst_oid(lc); > + List *ancestor_puboids =3D GetRelationIncludedPublications(ancestor)= ; > + List *ancestor_exceptpuboids =3D GetRelationExcludedPublications(anc= estor);; > > - puboids =3D list_concat_unique_oid(puboids, > - GetRelationPublications(ancestor)); > + puboids =3D list_concat_unique_oid(puboids, ancestor_puboids); > schemaid =3D get_rel_namespace(ancestor); > puboids =3D list_concat_unique_oid(puboids, > GetSchemaPublications(schemaid)); > + exceptpuboids =3D list_concat_unique_oid(exceptpuboids, > + ancestor_exceptpuboids); > } > > Why do we need to get the exceptpuboids for all ancestors instead of > just the top-one as we are doing in get_rel_sync_entry()? > I agree we should only check the root partitioned table here. Modified the = code I have also addressed the other comments. I have addressed the comments shared by Shveta in [1]. Attached the updated v54 patch. [1]: https://www.postgresql.org/message-id/CAJpy0uCr15=3Ddxg+bmGeJUoNfKOHU2= xZd2Wa6hg=3DYNTnQzz2fcA@mail.gmail.com Thanks, Shlok Kyal --00000000000036356c064c0a775f Content-Type: application/octet-stream; name="v54-0001-Skip-publishing-the-tables-specified-in-EXCEPT-T.patch" Content-Disposition: attachment; filename="v54-0001-Skip-publishing-the-tables-specified-in-EXCEPT-T.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm9783340 RnJvbSA4Nzg0MzlhYmZkNGJjOWQ0Y2U5MjQ0NDMyNjY1NWRhY2QyZDBhYjE5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWduZXNoIEMgPHZpZ25lc2gyMUBnbWFpbC5jb20+CkRhdGU6 IFRodSwgMTkgRmViIDIwMjYgMjA6MTY6MzkgKzA1MzAKU3ViamVjdDogW1BBVENIIHY1NF0gU2tp cCBwdWJsaXNoaW5nIHRoZSB0YWJsZXMgc3BlY2lmaWVkIGluIEVYQ0VQVCBUQUJMRS4KCkEgbmV3 ICJFWENFUFQgVEFCTEUiIGNsYXVzZSBmb3IgQ1JFQVRFIFBVQkxJQ0FUSU9OIGFsbG93cyBvbmUg b3IgbW9yZQp0YWJsZXMgdG8gYmUgZXhjbHVkZWQuIFRoZSBwdWJsaXNoZXIgd2lsbCBub3Qgc2Vu ZCB0aGUgZGF0YSBvZiBleGNsdWRlZAp0YWJsZXMgdG8gdGhlIHN1YnNjcmliZXIuCgpUaGUgbmV3 IHN5bnRheCBhbGxvd3Mgc3BlY2lmeWluZyBleGNsdWRlZCByZWxhdGlvbnMgd2hlbiBjcmVhdGlu ZyBhCnB1YmxpY2F0aW9uLiBGb3IgZXhhbXBsZToKQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEgRk9S IEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0MSx0Mik7CgpBIG5ldyBjb2x1bW4gInByZXhjZXB0 IiBpcyBhZGRlZCB0byB0YWJsZSAicGdfcHVibGljYXRpb25fcmVsIiwgdG8gZmxhZwp0aGUgcmVs YXRpb25zIHRoYXQgdGhlIHVzZXIgd2FudHMgdG8gZXhjbHVkZSBmcm9tIHRoZSBwdWJsaWNhdGlv bnMuCgpPbmx5IHJvb3QgcGFydGl0aW9uZWQgdGFibGVzIGNhbiBiZSBzcGVjaWZpZWQgaW4gdGhl IEVYQ0VQVCBUQUJMRSBjbGF1c2UuClNwZWNpZnlpbmcgYSByb290IHBhcnRpdGlvbmVkIHRhYmxl IGV4Y2x1ZGVzIGFsbCBwYXJ0aXRpb25zIGJlbG9uZ2luZyB0bwp0aGF0IHBhcnRpdGlvbiBoaWVy YXJjaHkgZnJvbSBwdWJsaWNhdGlvbi4KCkZ1dHVyZSBwYXRjaGVzIHdpbGwgaW50cm9kdWNlIHN5 bnRheGVzIFNFVC9EUk9QIEVYQ0VQVCBUQUJMRSBsaXN0LgotLS0KIGRvYy9zcmMvc2dtbC9jYXRh bG9ncy5zZ21sICAgICAgICAgICAgICAgICAgICB8ICAxMCArCiBkb2Mvc3JjL3NnbWwvbG9naWNh bC1yZXBsaWNhdGlvbi5zZ21sICAgICAgICAgfCAgIDYgKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3B1YmxpY2F0aW9uLnNnbWwgICAgICB8ICA1NyArKystCiBkb2Mvc3JjL3NnbWwvcmVmL3Bz cWwtcmVmLnNnbWwgICAgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cv cGdfcHVibGljYXRpb24uYyAgICAgICAgICB8IDE4MyArKysrKysrKystLS0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jICAgICAgICB8ICA1MiArKystCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAgNDIgKystCiBzcmMvYmFja2Vu ZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgICAgfCAgMzkgKystCiBzcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jICAgfCAgNDMgKystCiBzcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jICAgICAgICAgICAgfCAgMzMgKystCiBzcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAgfCAgNzUgKysrKy0KIHNyYy9iaW4v cGdfZHVtcC9wZ19kdW1wLmggICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmluL3Bn X2R1bXAvdC8wMDJfcGdfZHVtcC5wbCAgICAgICAgICAgICAgfCAgMzAgKysKIHNyYy9iaW4vcHNx bC9kZXNjcmliZS5jICAgICAgICAgICAgICAgICAgICAgICB8ICA5NSArKysrKy0KIHNyYy9iaW4v cHNxbC90YWItY29tcGxldGUuaW4uYyAgICAgICAgICAgICAgICB8ICAxMiArLQogc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oICAgICAgICAgIHwgIDE4ICstCiBzcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAgICAgICAgIHwgICA1ICstCiBzcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCAgICAgfCAxMjggKysrKysrKystCiBzcmMvdGVz dC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgICAgICAgICAgfCAgNjQgKysrKy0KIHNyYy90 ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZCAgICAgICAgICAgICB8ICAgMSArCiAuLi4vdC8w MzdfcmVwX2NoYW5nZXNfZXhjZXB0X3RhYmxlLnBsICAgICAgICAgfCAyNzAgKysrKysrKysrKysr KysrKysrCiAyMiBmaWxlcyBjaGFuZ2VkLCAxMDUwIGluc2VydGlvbnMoKyksIDEyMCBkZWxldGlv bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfcmVw X2NoYW5nZXNfZXhjZXB0X3RhYmxlLnBsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFs b2dzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRleCBlNzA2N2M4NGVjZS4u Njk1ODg5Mzc3MTkgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC02NTcyLDYgKzY1NzIsMTYgQEAgU0NSQU0t U0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxl Pjo8cmVwbGFjZWFibGU+JmwKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIAor ICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJh IHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgIDxzdHJ1Y3RmaWVsZD5wcmV4Y2VwdDwv c3RydWN0ZmllbGQ+IDx0eXBlPmJvb2w8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFy YT4KKyAgICAgICBUcnVlIGlmIHRoZSB0YWJsZSBpcyBleGNsdWRlZCBmcm9tIHRoZSBwdWJsaWNh dGlvbi4gU2VlCisgICAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXB1YmxpY2F0aW9uLXBh cmFtcy1mb3ItZXhjZXB0LXRhYmxlIj48bGl0ZXJhbD5FWENFUFQgVEFCTEU8L2xpdGVyYWw+PC9s aW5rPi4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93Pgog ICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVt bl9kZWZpbml0aW9uIj4KICAgICAgIDxzdHJ1Y3RmaWVsZD5wcnF1YWw8L3N0cnVjdGZpZWxkPiA8 dHlwZT5wZ19ub2RlX3RyZWU8L3R5cGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9naWNh bC1yZXBsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dt bAppbmRleCA1MDI4ZmU5YWYwOS4uYmNiNDczYzA3OGIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVw bGljYXRpb24uc2dtbApAQCAtMTE2LDcgKzExNiwxMSBAQAogICAgPGxpdGVyYWw+Rk9SIFRBQkxF UyBJTiBTQ0hFTUE8L2xpdGVyYWw+LCA8bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0ZXJhbD4s CiAgICBvciA8bGl0ZXJhbD5GT1IgQUxMIFNFUVVFTkNFUzwvbGl0ZXJhbD4uIFVubGlrZSB0YWJs ZXMsIHNlcXVlbmNlcyBjYW4gYmUKICAgIHN5bmNocm9uaXplZCBhdCBhbnkgdGltZS4gRm9yIG1v cmUgaW5mb3JtYXRpb24sIHNlZQotICAgPHhyZWYgbGlua2VuZD0ibG9naWNhbC1yZXBsaWNhdGlv bi1zZXF1ZW5jZXMiLz4uCisgICA8eHJlZiBsaW5rZW5kPSJsb2dpY2FsLXJlcGxpY2F0aW9uLXNl cXVlbmNlcyIvPi4gV2hlbiBhIHB1YmxpY2F0aW9uIGlzCisgICBjcmVhdGVkIHdpdGggPGxpdGVy YWw+Rk9SIEFMTCBUQUJMRVM8L2xpdGVyYWw+LCBhIHRhYmxlIG9yIHNldCBvZiB0YWJsZXMgY2Fu CisgICBiZSBleHBsaWNpdGx5IGV4Y2x1ZGVkIGZyb20gcHVibGljYXRpb24gdXNpbmcgdGhlCisg ICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlcHVibGljYXRpb24tcGFyYW1zLWZvci1leGNlcHQt dGFibGUiPjxsaXRlcmFsPkVYQ0VQVCBUQUJMRTwvbGl0ZXJhbD48L2xpbms+CisgICBjbGF1c2Uu CiAgIDwvcGFyYT4KIAogICA8cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3B1YmxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlv bi5zZ21sCmluZGV4IDZlZmJiOTE1Y2VjLi43NzA2NmVmNjgwYiAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVm L2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sCkBAIC0zMiwxMiArMzIsMTYgQEAgQ1JFQVRFIFBVQkxJ Q0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4K IAogPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9u X2FsbF9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKLSAgICBBTEwg VEFCTEVTCisgICAgQUxMIFRBQkxFUyBbIEVYQ0VQVCBUQUJMRSAoIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5leGNlcHRfdGFibGVfb2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0g KSBdCiAgICAgQUxMIFNFUVVFTkNFUwogCiA8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+dGFibGVfYW5kX2NvbHVtbnM8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4K IAogICAgIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1l PC9yZXBsYWNlYWJsZT4gWyAqIF0gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5j b2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXSBbIFdIRVJFICggPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiApIF0KKworPHBo cmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4Y2VwdF90YWJsZV9vYmpl Y3Q8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KKworICAgIFsgT05MWSBdIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0KIDwvc3lu b3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KIApAQCAtMTY0LDcgKzE2OCw4IEBAIENSRUFURSBQ VUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFi bGU+CiAgICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4KICAgICAgIE1hcmtzIHRoZSBwdWJsaWNh dGlvbiBhcyBvbmUgdGhhdCByZXBsaWNhdGVzIGNoYW5nZXMgZm9yIGFsbCB0YWJsZXMgaW4KLSAg ICAgIHRoZSBkYXRhYmFzZSwgaW5jbHVkaW5nIHRhYmxlcyBjcmVhdGVkIGluIHRoZSBmdXR1cmUu CisgICAgICB0aGUgZGF0YWJhc2UsIGluY2x1ZGluZyB0YWJsZXMgY3JlYXRlZCBpbiB0aGUgZnV0 dXJlLiBUYWJsZXMgbGlzdGVkIGluCisgICAgICBFWENFUFQgVEFCTEUgYXJlIGV4Y2x1ZGVkIGZy b20gdGhlIHB1YmxpY2F0aW9uLgogICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwv dmFybGlzdGVudHJ5PgpAQCAtMTg0LDYgKzE4OSwzNyBAQCBDUkVBVEUgUFVCTElDQVRJT04gPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgIDwvbGlz dGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNy ZWF0ZXB1YmxpY2F0aW9uLXBhcmFtcy1mb3ItZXhjZXB0LXRhYmxlIj4KKyAgICA8dGVybT48bGl0 ZXJhbD5FWENFUFQgVEFCTEU8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAg PHBhcmE+CisgICAgICBUaGlzIGNsYXVzZSBzcGVjaWZpZXMgYSBsaXN0IG9mIHRhYmxlcyB0byBi ZSBleGNsdWRlZCBmcm9tIHRoZQorICAgICAgcHVibGljYXRpb24uCisgICAgIDwvcGFyYT4KKyAg ICAgPHBhcmE+CisgICAgICBGb3IgaW5oZXJpdGVkIHRhYmxlcywgaWYgPGxpdGVyYWw+T05MWTwv bGl0ZXJhbD4gaXMgc3BlY2lmaWVkIGJlZm9yZSB0aGUKKyAgICAgIHRhYmxlIG5hbWUsIG9ubHkg dGhhdCB0YWJsZSBpcyBleGNsdWRlZCBmcm9tIHRoZSBwdWJsaWNhdGlvbi4gSWYKKyAgICAgIDxs aXRlcmFsPk9OTFk8L2xpdGVyYWw+IGlzIG5vdCBzcGVjaWZpZWQsIHRoZSB0YWJsZSBhbmQgYWxs IGl0cyBkZXNjZW5kYW50CisgICAgICB0YWJsZXMgKGlmIGFueSkgYXJlIGV4Y2x1ZGVkLiBPcHRp b25hbGx5LCA8bGl0ZXJhbD4qPC9saXRlcmFsPiBjYW4gYmUKKyAgICAgIHNwZWNpZmllZCBhZnRl ciB0aGUgdGFibGUgbmFtZSB0byBleHBsaWNpdGx5IGluZGljYXRlIHRoYXQgZGVzY2VuZGFudAor ICAgICAgdGFibGVzIGFyZSBleGNsdWRlZC4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAg ICAgIEZvciBwYXJ0aXRpb25lZCB0YWJsZXMsIG9ubHkgdGhlIHJvb3QgcGFydGl0aW9uZWQgdGFi bGUgbWF5IGJlIHNwZWNpZmllZAorICAgICAgaW4gPGxpdGVyYWw+RVhDRVBUIFRBQkxFPC9saXRl cmFsPi4gRG9pbmcgc28gZXhjbHVkZXMgdGhlIHJvb3QgdGFibGUgYW5kCisgICAgICBhbGwgb2Yg aXRzIHBhcnRpdGlvbnMgZnJvbSByZXBsaWNhdGlvbi4gVGhlIG9wdGlvbmFsCisgICAgICA8bGl0 ZXJhbD5PTkxZPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+KjwvbGl0ZXJhbD4gaGFzIG5vIGVmZmVj dCBmb3IKKyAgICAgIHBhcnRpdGlvbmVkIHRhYmxlcy4KKyAgICAgPC9wYXJhPgorICAgICA8cGFy YT4KKyAgICAgIFRoZXJlIGNhbiBiZSBhIGNhc2Ugd2hlcmUgYSBzdWJzY3JpcHRpb24gaW5jbHVk ZXMgbXVsdGlwbGUgcHVibGljYXRpb25zLgorICAgICAgSW4gc3VjaCBhIGNhc2UsIGEgdGFibGUg b3IgcGFydGl0aW9uIHRoYXQgaXMgaW5jbHVkZWQgaW4gb25lIHB1YmxpY2F0aW9uCisgICAgICBh bmQgbGlzdGVkIGluIHRoZSA8bGl0ZXJhbD5FWENFUFQgVEFCTEU8L2xpdGVyYWw+IGNsYXVzZSBv ZiBhbm90aGVyIGlzCisgICAgICBjb25zaWRlcmVkIGluY2x1ZGVkIGZvciByZXBsaWNhdGlvbi4K KyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAg PHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0ZXB1YmxpY2F0aW9uLXBhcmFtcy13aXRoIj4KICAg ICA8dGVybT48bGl0ZXJhbD5XSVRIICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1 YmxpY2F0aW9uX3BhcmFtZXRlcjwvcmVwbGFjZWFibGU+IFs9IDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+XSBbLCAuLi4gXSApPC9saXRlcmFsPjwvdGVy bT4KICAgICA8bGlzdGl0ZW0+CkBAIC00ODksNiArNTI1LDIzIEBAIENSRUFURSBQVUJMSUNBVElP TiBhbGxfc2VxdWVuY2VzIEZPUiBBTEwgU0VRVUVOQ0VTOwogICAgYWxsIHNlcXVlbmNlcyBmb3Ig c3luY2hyb25pemF0aW9uOgogPHByb2dyYW1saXN0aW5nPgogQ1JFQVRFIFBVQkxJQ0FUSU9OIGFs bF90YWJsZXNfc2VxdWVuY2VzIEZPUiBBTEwgVEFCTEVTLCBBTEwgU0VRVUVOQ0VTOworPC9wcm9n cmFtbGlzdGluZz4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgQ3JlYXRlIGEgcHVibGljYXRp b24gdGhhdCBwdWJsaXNoZXMgYWxsIGNoYW5nZXMgaW4gYWxsIHRhYmxlcyBleGNlcHQKKyAgIDxz dHJ1Y3RuYW1lPnVzZXJzPC9zdHJ1Y3RuYW1lPiBhbmQgPHN0cnVjdG5hbWU+ZGVwYXJ0bWVudHM8 L3N0cnVjdG5hbWU+OgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIFBVQkxJQ0FUSU9OIGFsbF90 YWJsZXNfZXhjZXB0IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodXNlcnMsIGRlcGFydG1l bnRzKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIENyZWF0 ZSBhIHB1YmxpY2F0aW9uIHRoYXQgcHVibGlzaGVzIGFsbCBzZXF1ZW5jZXMgZm9yIHN5bmNocm9u aXphdGlvbiwgYW5kCisgICBhbGwgY2hhbmdlcyBpbiBhbGwgdGFibGVzIGV4Y2VwdCA8c3RydWN0 bmFtZT51c2Vyczwvc3RydWN0bmFtZT4gYW5kCisgICA8c3RydWN0bmFtZT5kZXBhcnRtZW50czwv c3RydWN0bmFtZT46Cis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUgUFVCTElDQVRJT04gYWxsX3Nl cXVlbmNlc190YWJsZXNfZXhjZXB0IEZPUiBBTEwgU0VRVUVOQ0VTLCBBTEwgVEFCTEVTIEVYQ0VQ VCBUQUJMRSAodXNlcnMsIGRlcGFydG1lbnRzKTsKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgIDwvcGFy YT4KICA8L3JlZnNlY3QxPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5z Z21sIGIvZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sCmluZGV4IDM1NTBiZGE0ZDgwLi4w ZTU0M2ZkZDZhMiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbApAQCAtMjEwMyw4ICsyMTAzLDkgQEAg U0VMRUNUICQxIFxwYXJzZSBzdG10MQogICAgICAgICBsaXN0ZWQuCiAgICAgICAgIElmIDxsaXRl cmFsPng8L2xpdGVyYWw+IGlzIGFwcGVuZGVkIHRvIHRoZSBjb21tYW5kIG5hbWUsIHRoZSByZXN1 bHRzCiAgICAgICAgIGFyZSBkaXNwbGF5ZWQgaW4gZXhwYW5kZWQgbW9kZS4KLSAgICAgICAgSWYg PGxpdGVyYWw+KzwvbGl0ZXJhbD4gaXMgYXBwZW5kZWQgdG8gdGhlIGNvbW1hbmQgbmFtZSwgdGhl IHRhYmxlcyBhbmQKLSAgICAgICAgc2NoZW1hcyBhc3NvY2lhdGVkIHdpdGggZWFjaCBwdWJsaWNh dGlvbiBhcmUgc2hvd24gYXMgd2VsbC4KKyAgICAgICAgSWYgPGxpdGVyYWw+KzwvbGl0ZXJhbD4g aXMgYXBwZW5kZWQgdG8gdGhlIGNvbW1hbmQgbmFtZSwgdGhlIHRhYmxlcywKKyAgICAgICAgZXhj bHVkZWQgdGFibGVzLCBhbmQgc2NoZW1hcyBhc3NvY2lhdGVkIHdpdGggZWFjaCBwdWJsaWNhdGlv biBhcmUgc2hvd24KKyAgICAgICAgYXMgd2VsbC4KICAgICAgICAgPC9wYXJhPgogICAgICAgICA8 L2xpc3RpdGVtPgogICAgICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1Ymxp Y2F0aW9uLmMKaW5kZXggOWE0NzkxYzU3M2UuLmJjOTRmOGY1N2NjIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19wdWJsaWNhdGlvbi5jCkBAIC01MywzNyArNTMsNDkgQEAgdHlwZWRlZiBzdHJ1Y3QKICAq IGVycm9yIGlmIG5vdC4KICAqLwogc3RhdGljIHZvaWQKLWNoZWNrX3B1YmxpY2F0aW9uX2FkZF9y ZWxhdGlvbihSZWxhdGlvbiB0YXJnZXRyZWwpCitjaGVja19wdWJsaWNhdGlvbl9hZGRfcmVsYXRp b24oUHVibGljYXRpb25SZWxJbmZvICpwcmkpCiB7CisJUmVsYXRpb24JdGFyZ2V0cmVsID0gcHJp LT5yZWxhdGlvbjsKKwljb25zdCBjaGFyICplcnJvcm1zZzsKKworCWlmIChwcmktPmV4Y2VwdCkK KwkJZXJyb3Jtc2cgPSBnZXR0ZXh0X25vb3AoImNhbm5vdCB1c2UgcHVibGljYXRpb24gRVhDRVBU IGNsYXVzZSBmb3IgcmVsYXRpb24gXCIlc1wiIik7CisJZWxzZQorCQllcnJvcm1zZyA9IGdldHRl eHRfbm9vcCgiY2Fubm90IGFkZCByZWxhdGlvbiBcIiVzXCIgdG8gcHVibGljYXRpb24iKTsKKwor CisJLyogSWYgaW4gRVhDRVBUIGNsYXVzZSwgbXVzdCBiZSByb290IHBhcnRpdGlvbmVkIHRhYmxl ICovCisJaWYgKHByaS0+ZXhjZXB0ICYmIHRhcmdldHJlbC0+cmRfcmVsLT5yZWxpc3BhcnRpdGlv bikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1F VEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNnKGVycm9ybXNnLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZSh0YXJnZXRyZWwpKSwKKwkJCQkgZXJyZGV0YWlsKCJUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3Vw cG9ydGVkIGZvciBpbmRpdmlkdWFsIHBhcnRpdGlvbnMuIikpKTsKKwogCS8qIE11c3QgYmUgYSBy ZWd1bGFyIG9yIHBhcnRpdGlvbmVkIHRhYmxlICovCiAJaWYgKFJlbGF0aW9uR2V0Rm9ybSh0YXJn ZXRyZWwpLT5yZWxraW5kICE9IFJFTEtJTkRfUkVMQVRJT04gJiYKIAkJUmVsYXRpb25HZXRGb3Jt KHRhcmdldHJlbCktPnJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKIAkJZXJl cG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVF KSwKLQkJCQkgZXJybXNnKCJjYW5ub3QgYWRkIHJlbGF0aW9uIFwiJXNcIiB0byBwdWJsaWNhdGlv biIsCi0JCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpKSwKKwkJCQkgZXJy bXNnKGVycm9ybXNnLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpKSwKIAkJCQkg ZXJyZGV0YWlsX3JlbGtpbmRfbm90X3N1cHBvcnRlZChSZWxhdGlvbkdldEZvcm0odGFyZ2V0cmVs KS0+cmVsa2luZCkpKTsKIAogCS8qIENhbid0IGJlIHN5c3RlbSB0YWJsZSAqLwogCWlmIChJc0Nh dGFsb2dSZWxhdGlvbih0YXJnZXRyZWwpKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAotCQkJCSBlcnJtc2coImNhbm5vdCBh ZGQgcmVsYXRpb24gXCIlc1wiIHRvIHB1YmxpY2F0aW9uIiwKLQkJCQkJCVJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHRhcmdldHJlbCkpLAorCQkJCSBlcnJtc2coZXJyb3Jtc2csIFJlbGF0aW9uR2V0 UmVsYXRpb25OYW1lKHRhcmdldHJlbCkpLAogCQkJCSBlcnJkZXRhaWwoIlRoaXMgb3BlcmF0aW9u IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHN5c3RlbSB0YWJsZXMuIikpKTsKIAogCS8qIFVOTE9HR0VE IGFuZCBURU1QIHJlbGF0aW9ucyBjYW5ub3QgYmUgcGFydCBvZiBwdWJsaWNhdGlvbi4gKi8KIAlp ZiAodGFyZ2V0cmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RF TVApCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFN RVRFUl9WQUxVRSksCi0JCQkJIGVycm1zZygiY2Fubm90IGFkZCByZWxhdGlvbiBcIiVzXCIgdG8g cHVibGljYXRpb24iLAotCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodGFyZ2V0cmVsKSks CisJCQkJIGVycm1zZyhlcnJvcm1zZywgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodGFyZ2V0cmVs KSksCiAJCQkJIGVycmRldGFpbCgiVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3Ig dGVtcG9yYXJ5IHRhYmxlcy4iKSkpOwogCWVsc2UgaWYgKHRhcmdldHJlbC0+cmRfcmVsLT5yZWxw ZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9VTkxPR0dFRCkKIAkJZXJlcG9ydChFUlJPUiwK IAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKLQkJCQkgZXJy bXNnKCJjYW5ub3QgYWRkIHJlbGF0aW9uIFwiJXNcIiB0byBwdWJsaWNhdGlvbiIsCi0JCQkJCQlS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpKSwKKwkJCQkgZXJybXNnKGVycm9ybXNn LCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpKSwKIAkJCQkgZXJyZGV0YWlsKCJU aGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciB1bmxvZ2dlZCB0YWJsZXMuIikpKTsK IH0KIApAQCAtMzY2LDcgKzM3OCw3IEBAIEdldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24o T2lkIHB1Ym9pZCwgTGlzdCAqYW5jZXN0b3JzLCBpbnQgKmFuY2VzdG9yX2xldmVsCiAJZm9yZWFj aChsYywgYW5jZXN0b3JzKQogCXsKIAkJT2lkCQkJYW5jZXN0b3IgPSBsZmlyc3Rfb2lkKGxjKTsK LQkJTGlzdAkgICAqYXB1YmlkcyA9IEdldFJlbGF0aW9uUHVibGljYXRpb25zKGFuY2VzdG9yKTsK KwkJTGlzdAkgICAqYXB1YmlkcyA9IEdldFJlbGF0aW9uSW5jbHVkZWRQdWJsaWNhdGlvbnMoYW5j ZXN0b3IpOwogCQlMaXN0CSAgICphc2NoZW1hUHViaWRzID0gTklMOwogCiAJCWxldmVsKys7CkBA IC00NjYsNyArNDc4LDcgQEAgcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVi bGljYXRpb25SZWxJbmZvICpwcmksCiAJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJn ZXRyZWwpLCBwdWItPm5hbWUpKSk7CiAJfQogCi0JY2hlY2tfcHVibGljYXRpb25fYWRkX3JlbGF0 aW9uKHRhcmdldHJlbCk7CisJY2hlY2tfcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKHByaSk7CiAK IAkvKiBWYWxpZGF0ZSBhbmQgdHJhbnNsYXRlIGNvbHVtbiBuYW1lcyBpbnRvIGEgQml0bWFwc2V0 IG9mIGF0dG51bXMuICovCiAJYXR0bnVtcyA9IHB1Yl9jb2xsaXN0X3ZhbGlkYXRlKHByaS0+cmVs YXRpb24sIHByaS0+Y29sdW1ucyk7CkBAIC00ODIsNiArNDk0LDggQEAgcHVibGljYXRpb25fYWRk X3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVibGljYXRpb25SZWxJbmZvICpwcmksCiAJCU9iamVjdElk R2V0RGF0dW0ocHViaWQpOwogCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcnJlbGlk IC0gMV0gPQogCQlPYmplY3RJZEdldERhdHVtKHJlbGlkKTsKKwl2YWx1ZXNbQW51bV9wZ19wdWJs aWNhdGlvbl9yZWxfcHJleGNlcHQgLSAxXSA9CisJCUJvb2xHZXREYXR1bShwcmktPmV4Y2VwdCk7 CiAKIAkvKiBBZGQgcXVhbGlmaWNhdGlvbnMsIGlmIGF2YWlsYWJsZSAqLwogCWlmIChwcmktPndo ZXJlQ2xhdXNlICE9IE5VTEwpCkBAIC01MzAsMTcgKzU0NCwyNiBAQCBwdWJsaWNhdGlvbl9hZGRf cmVsYXRpb24oT2lkIHB1YmlkLCBQdWJsaWNhdGlvblJlbEluZm8gKnByaSwKIAl0YWJsZV9jbG9z ZShyZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCiAJLyoKLQkgKiBJbnZhbGlkYXRlIHJlbGNhY2hl IHNvIHRoYXQgcHVibGljYXRpb24gaW5mbyBpcyByZWJ1aWx0LgotCSAqCi0JICogRm9yIHRoZSBw YXJ0aXRpb25lZCB0YWJsZXMsIHdlIG11c3QgaW52YWxpZGF0ZSBhbGwgcGFydGl0aW9ucyBjb250 YWluZWQKLQkgKiBpbiB0aGUgcmVzcGVjdGl2ZSBwYXJ0aXRpb24gaGllcmFyY2hpZXMsIG5vdCBq dXN0IHRoZSBvbmUgZXhwbGljaXRseQotCSAqIG1lbnRpb25lZCBpbiB0aGUgcHVibGljYXRpb24u IFRoaXMgaXMgcmVxdWlyZWQgYmVjYXVzZSB3ZSBpbXBsaWNpdGx5Ci0JICogcHVibGlzaCB0aGUg Y2hpbGQgdGFibGVzIHdoZW4gdGhlIHBhcmVudCB0YWJsZSBpcyBwdWJsaXNoZWQuCisJICogUmVs YXRpb25zIGV4Y2x1ZGVkIHZpYSB0aGUgRVhDRVBUIGNsYXVzZSBkbyBub3QgbmVlZCBleHBsaWNp dAorCSAqIGludmFsaWRhdGlvbiBhcyBDcmVhdGVQdWJsaWNhdGlvbigpIGZ1bmN0aW9uIGludmFs aWRhdGVzIGFsbCByZWxhdGlvbnMKKwkgKiBhcyBwYXJ0IG9mIGRlZmluaW5nIGEgRk9SIEFMTCBU QUJMRVMgcHVibGljYXRpb24uCiAJICovCi0JcmVsaWRzID0gR2V0UHViUGFydGl0aW9uT3B0aW9u UmVsYXRpb25zKHJlbGlkcywgUFVCTElDQVRJT05fUEFSVF9BTEwsCi0JCQkJCQkJCQkJCXJlbGlk KTsKKwlpZiAoIXByaS0+ZXhjZXB0KQorCXsKKwkJLyoKKwkJICogSW52YWxpZGF0ZSByZWxjYWNo ZSBzbyB0aGF0IHB1YmxpY2F0aW9uIGluZm8gaXMgcmVidWlsdC4KKwkJICoKKwkJICogRm9yIHRo ZSBwYXJ0aXRpb25lZCB0YWJsZXMsIHdlIG11c3QgaW52YWxpZGF0ZSBhbGwgcGFydGl0aW9ucwor CQkgKiBjb250YWluZWQgaW4gdGhlIHJlc3BlY3RpdmUgcGFydGl0aW9uIGhpZXJhcmNoaWVzLCBu b3QganVzdCB0aGUgb25lCisJCSAqIGV4cGxpY2l0bHkgbWVudGlvbmVkIGluIHRoZSBwdWJsaWNh dGlvbi4gVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlCisJCSAqIHdlIGltcGxpY2l0bHkgcHVibGlz aCB0aGUgY2hpbGQgdGFibGVzIHdoZW4gdGhlIHBhcmVudCB0YWJsZSBpcworCQkgKiBwdWJsaXNo ZWQuCisJCSAqLworCQlyZWxpZHMgPSBHZXRQdWJQYXJ0aXRpb25PcHRpb25SZWxhdGlvbnMocmVs aWRzLCBQVUJMSUNBVElPTl9QQVJUX0FMTCwKKwkJCQkJCQkJCQkJCXJlbGlkKTsKIAotCUludmFs aWRhdGVQdWJsaWNhdGlvblJlbHMocmVsaWRzKTsKKwkJSW52YWxpZGF0ZVB1YmxpY2F0aW9uUmVs cyhyZWxpZHMpOworCX0KIAogCXJldHVybiBteXNlbGY7CiB9CkBAIC03NDksMjMgKzc3MiwzMCBA QCBwdWJsaWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBwdWJpZCwgT2lkIHNjaGVtYWlkLCBib29sIGlm X25vdF9leGlzdHMpCiAJcmV0dXJuIG15c2VsZjsKIH0KIAotLyogR2V0cyBsaXN0IG9mIHB1Ymxp Y2F0aW9uIG9pZHMgZm9yIGEgcmVsYXRpb24gKi8KLUxpc3QgKgotR2V0UmVsYXRpb25QdWJsaWNh dGlvbnMoT2lkIHJlbGlkKQorLyoKKyAqIEludGVybmFsIGZ1bmN0aW9uIHRvIGdldCB0aGUgbGlz dCBvZiBwdWJsaWNhdGlvbiBPaWRzIGZvciBhIHJlbGF0aW9uLgorICoKKyAqIElmIGV4Y2VwdF9m bGFnIGlzIHRydWUsIHJldHVybnMgdGhlIGxpc3Qgb2YgcHVibGljYXRpb24gd2hpY2ggc3BlY2lm aWVkIHRoZQorICogcmVsYXRpb24gd2l0aCBFWENFUFQgY2xhdXNlOyBvdGhlcndpc2UsIHJldHVy bnMgdGhlIGxpc3Qgb2YgcHVibGljYXRpb25zCisgKiBpbiB3aGljaCByZWxhdGlvbiBpcyBpbmNs dWRlZC4KKyAqLworc3RhdGljIExpc3QgKgorZ2V0X3JlbGF0aW9uX3B1YmxpY2F0aW9ucyhPaWQg cmVsaWQsIGJvb2wgZXhjZXB0X2ZsYWcpCiB7CiAJTGlzdAkgICAqcmVzdWx0ID0gTklMOwogCUNh dENMaXN0ICAgKnB1YnJlbGxpc3Q7Ci0JaW50CQkJaTsKIAogCS8qIEZpbmQgYWxsIHB1YmxpY2F0 aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlIHJlbGF0aW9uLiAqLwogCXB1YnJlbGxpc3QgPSBTZWFy Y2hTeXNDYWNoZUxpc3QxKFBVQkxJQ0FUSU9OUkVMTUFQLAogCQkJCQkJCQkJIE9iamVjdElkR2V0 RGF0dW0ocmVsaWQpKTsKLQlmb3IgKGkgPSAwOyBpIDwgcHVicmVsbGlzdC0+bl9tZW1iZXJzOyBp KyspCisJZm9yIChpbnQgaSA9IDA7IGkgPCBwdWJyZWxsaXN0LT5uX21lbWJlcnM7IGkrKykKIAl7 CiAJCUhlYXBUdXBsZQl0dXAgPSAmcHVicmVsbGlzdC0+bWVtYmVyc1tpXS0+dHVwbGU7Ci0JCU9p ZAkJCXB1YmlkID0gKChGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCkgR0VUU1RSVUNUKHR1cCkpLT5w cnB1YmlkOworCQlGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCBwdWJyZWwgPSAoRm9ybV9wZ19wdWJs aWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXApOworCQlPaWQJCQlwdWJpZCA9IHB1YnJlbC0+cHJw dWJpZDsKIAotCQlyZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQsIHB1YmlkKTsKKwkJaWYgKHB1 YnJlbC0+cHJleGNlcHQgPT0gZXhjZXB0X2ZsYWcpCisJCQlyZXN1bHQgPSBsYXBwZW5kX29pZChy ZXN1bHQsIHB1YmlkKTsKIAl9CiAKIAlSZWxlYXNlU3lzQ2FjaGVMaXN0KHB1YnJlbGxpc3QpOwpA QCAtNzc0LDEzICs4MDQsMzMgQEAgR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoT2lkIHJlbGlkKQog fQogCiAvKgotICogR2V0cyBsaXN0IG9mIHJlbGF0aW9uIG9pZHMgZm9yIGEgcHVibGljYXRpb24u Ci0gKgotICogVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIEZPUiBUQUJMRSBwdWJsaWNhdGlvbnMs IHRoZSBGT1IgQUxMIFRBQkxFUy9TRVFVRU5DRVMKLSAqIHNob3VsZCB1c2UgR2V0QWxsUHVibGlj YXRpb25SZWxhdGlvbnMoKS4KKyAqIEdldHMgbGlzdCBvZiBwdWJsaWNhdGlvbiBvaWRzIGZvciBh IHJlbGF0aW9uLgogICovCiBMaXN0ICoKLUdldFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJp ZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQorR2V0UmVsYXRpb25JbmNsdWRlZFB1 YmxpY2F0aW9ucyhPaWQgcmVsaWQpCit7CisJcmV0dXJuIGdldF9yZWxhdGlvbl9wdWJsaWNhdGlv bnMocmVsaWQsIGZhbHNlKTsKK30KKworLyoKKyAqIEdldHMgbGlzdCBvZiBwdWJsaWNhdGlvbiBv aWRzIHdoaWNoIGhhcyByZWxhdGlvbiBpbiBFWENFUFQgY2xhdXNlLgorICovCitMaXN0ICoKK0dl dFJlbGF0aW9uRXhjbHVkZWRQdWJsaWNhdGlvbnMoT2lkIHJlbGlkKQoreworCXJldHVybiBnZXRf cmVsYXRpb25fcHVibGljYXRpb25zKHJlbGlkLCB0cnVlKTsKK30KKworLyoKKyAqIEludGVybmFs IGZ1bmN0aW9uIHRvIGdldCB0aGUgbGlzdCBvZiByZWxhdGlvbiBPaWRzIGZvciBhIHB1YmxpY2F0 aW9uLgorICoKKyAqIElmIGV4Y2VwdF9mbGFnIGlzIHRydWUsIHJldHVybnMgdGhlIGxpc3Qgb2Yg cmVsYXRpb25zIHNwZWNpZmllZCBpbiB0aGUKKyAqIEVYQ0VQVCBjbGF1c2Ugb2YgdGhlIHB1Ymxp Y2F0aW9uOyBvdGhlcndpc2UsIHJldHVybnMgdGhlIGxpc3Qgb2YgcmVsYXRpb25zCisgKiBpbmNs dWRlZCBpbiB0aGUgcHVibGljYXRpb24uCisgKi8KK3N0YXRpYyBMaXN0ICoKK2dldF9wdWJsaWNh dGlvbl9yZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQs CisJCQkJCQkgIGJvb2wgZXhjZXB0X2ZsYWcpCiB7CiAJTGlzdAkgICAqcmVzdWx0OwogCVJlbGF0 aW9uCXB1YnJlbHNyZWw7CkBAIC04MDUsOCArODU1LDEwIEBAIEdldFB1YmxpY2F0aW9uUmVsYXRp b25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQogCQlGb3JtX3Bn X3B1YmxpY2F0aW9uX3JlbCBwdWJyZWw7CiAKIAkJcHVicmVsID0gKEZvcm1fcGdfcHVibGljYXRp b25fcmVsKSBHRVRTVFJVQ1QodHVwKTsKLQkJcmVzdWx0ID0gR2V0UHViUGFydGl0aW9uT3B0aW9u UmVsYXRpb25zKHJlc3VsdCwgcHViX3BhcnRvcHQsCi0JCQkJCQkJCQkJCQlwdWJyZWwtPnBycmVs aWQpOworCisJCWlmIChleGNlcHRfZmxhZyA9PSBwdWJyZWwtPnByZXhjZXB0KQorCQkJcmVzdWx0 ID0gR2V0UHViUGFydGl0aW9uT3B0aW9uUmVsYXRpb25zKHJlc3VsdCwgcHViX3BhcnRvcHQsCisJ CQkJCQkJCQkJCQkJcHVicmVsLT5wcnJlbGlkKTsKIAl9CiAKIAlzeXN0YWJsZV9lbmRzY2FuKHNj YW4pOwpAQCAtODE5LDYgKzg3MSwzNCBAQCBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHVi aWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKIAlyZXR1cm4gcmVzdWx0OwogfQog CisvKgorICogR2V0cyBsaXN0IG9mIHJlbGF0aW9uIG9pZHMgdGhhdCBhcmUgYXNzb2NpYXRlZCB3 aXRoIGEgcHVibGljYXRpb24uCisgKgorICogVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIEZPUiBU QUJMRSBwdWJsaWNhdGlvbnMsIHRoZSBGT1IgQUxMIFRBQkxFUy9TRVFVRU5DRVMKKyAqIHNob3Vs ZCB1c2UgR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoKS4KKyAqLworTGlzdCAqCitHZXRJbmNs dWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1 Yl9wYXJ0b3B0KQoreworCUFzc2VydCghR2V0UHVibGljYXRpb24ocHViaWQpLT5hbGx0YWJsZXMp OworCisJcmV0dXJuIGdldF9wdWJsaWNhdGlvbl9yZWxhdGlvbnMocHViaWQsIHB1Yl9wYXJ0b3B0 LCBmYWxzZSk7Cit9CisKKy8qCisgKiBHZXRzIGxpc3Qgb2YgdGFibGUgb2lkcyB0aGF0IHdlcmUg c3BlY2lmaWVkIGluIHRoZSBFWENFUFQgY2xhdXNlIGZvciBhCisgKiBwdWJsaWNhdGlvbi4KKyAq CisgKiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgRk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb25z LgorICovCitMaXN0ICoKK0dldEV4Y2x1ZGVkUHVibGljYXRpb25UYWJsZXMoT2lkIHB1YmlkLCBQ dWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCit7CisJQXNzZXJ0KEdldFB1YmxpY2F0aW9u KHB1YmlkKS0+YWxsdGFibGVzKTsKKworCXJldHVybiBnZXRfcHVibGljYXRpb25fcmVsYXRpb25z KHB1YmlkLCBwdWJfcGFydG9wdCwgdHJ1ZSk7Cit9CisKIC8qCiAgKiBHZXRzIGxpc3Qgb2YgcHVi bGljYXRpb24gb2lkcyBmb3IgcHVibGljYXRpb25zIG1hcmtlZCBhcyBGT1IgQUxMIFRBQkxFUy4K ICAqLwpAQCAtODU4LDI0ICs5MzgsMzQgQEAgR2V0QWxsVGFibGVzUHVibGljYXRpb25zKHZvaWQp CiAKIC8qCiAgKiBHZXRzIGxpc3Qgb2YgYWxsIHJlbGF0aW9ucyBwdWJsaXNoZWQgYnkgRk9SIEFM TCBUQUJMRVMvU0VRVUVOQ0VTCi0gKiBwdWJsaWNhdGlvbihzKS4KKyAqIHB1YmxpY2F0aW9uLgog ICoKICAqIElmIHRoZSBwdWJsaWNhdGlvbiBwdWJsaXNoZXMgcGFydGl0aW9uIGNoYW5nZXMgdmlh IHRoZWlyIHJlc3BlY3RpdmUgcm9vdAogICogcGFydGl0aW9uZWQgdGFibGVzLCB3ZSBtdXN0IGV4 Y2x1ZGUgcGFydGl0aW9ucyBpbiBmYXZvciBvZiBpbmNsdWRpbmcgdGhlCiAgKiByb290IHBhcnRp dGlvbmVkIHRhYmxlcy4gVGhpcyBpcyBub3QgYXBwbGljYWJsZSB0byBGT1IgQUxMIFNFUVVFTkNF UwogICogcHVibGljYXRpb24uCisgKgorICogRm9yIGEgRk9SIEFMTCBUQUJMRVMgcHVibGljYXRp b24sIHRoZSByZXR1cm5lZCBsaXN0IGV4Y2x1ZGVzIHRhYmxlcyBtZW50aW9uZWQKKyAqIGluIEVY Q0VQVCBUQUJMRSBjbGF1c2UuCiAgKi8KIExpc3QgKgotR2V0QWxsUHVibGljYXRpb25SZWxhdGlv bnMoY2hhciByZWxraW5kLCBib29sIHB1YnZpYXJvb3QpCitHZXRBbGxQdWJsaWNhdGlvblJlbGF0 aW9ucyhPaWQgcHViaWQsIGNoYXIgcmVsa2luZCwgYm9vbCBwdWJ2aWFyb290KQogewogCVJlbGF0 aW9uCWNsYXNzUmVsOwogCVNjYW5LZXlEYXRhIGtleVsxXTsKIAlUYWJsZVNjYW5EZXNjIHNjYW47 CiAJSGVhcFR1cGxlCXR1cGxlOwogCUxpc3QJICAgKnJlc3VsdCA9IE5JTDsKKwlMaXN0CSAgICpl eGNlcHRsaXN0ID0gTklMOwogCiAJQXNzZXJ0KCEocmVsa2luZCA9PSBSRUxLSU5EX1NFUVVFTkNF ICYmIHB1YnZpYXJvb3QpKTsKIAorCS8qIEVYQ0VQVCBmaWx0ZXJpbmcgYXBwbGllcyBvbmx5IHRv IHJlbGF0aW9ucywgbm90IHNlcXVlbmNlcyAqLworCWlmIChyZWxraW5kID09IFJFTEtJTkRfUkVM QVRJT04pCisJCWV4Y2VwdGxpc3QgPSBHZXRFeGNsdWRlZFB1YmxpY2F0aW9uVGFibGVzKHB1Ymlk LCBwdWJ2aWFyb290ID8KKwkJCQkJCQkJCQkJCSAgUFVCTElDQVRJT05fUEFSVF9ST09UIDoKKwkJ CQkJCQkJCQkJCSAgUFVCTElDQVRJT05fUEFSVF9MRUFGKTsKKwogCWNsYXNzUmVsID0gdGFibGVf b3BlbihSZWxhdGlvblJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CiAKIAlTY2FuS2V5SW5p dCgma2V5WzBdLApAQCAtODkxLDcgKzk4MSw4IEBAIEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25z KGNoYXIgcmVsa2luZCwgYm9vbCBwdWJ2aWFyb290KQogCQlPaWQJCQlyZWxpZCA9IHJlbEZvcm0t Pm9pZDsKIAogCQlpZiAoaXNfcHVibGlzaGFibGVfY2xhc3MocmVsaWQsIHJlbEZvcm0pICYmCi0J CQkhKHJlbEZvcm0tPnJlbGlzcGFydGl0aW9uICYmIHB1YnZpYXJvb3QpKQorCQkJIShyZWxGb3Jt LT5yZWxpc3BhcnRpdGlvbiAmJiBwdWJ2aWFyb290KSAmJgorCQkJIWxpc3RfbWVtYmVyX29pZChl eGNlcHRsaXN0LCByZWxpZCkpCiAJCQlyZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQsIHJlbGlk KTsKIAl9CiAKQEAgLTkxMiw3ICsxMDAzLDggQEAgR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMo Y2hhciByZWxraW5kLCBib29sIHB1YnZpYXJvb3QpCiAJCQlPaWQJCQlyZWxpZCA9IHJlbEZvcm0t Pm9pZDsKIAogCQkJaWYgKGlzX3B1Ymxpc2hhYmxlX2NsYXNzKHJlbGlkLCByZWxGb3JtKSAmJgot CQkJCSFyZWxGb3JtLT5yZWxpc3BhcnRpdGlvbikKKwkJCQkhcmVsRm9ybS0+cmVsaXNwYXJ0aXRp b24gJiYKKwkJCQkhbGlzdF9tZW1iZXJfb2lkKGV4Y2VwdGxpc3QsIHJlbGlkKSkKIAkJCQlyZXN1 bHQgPSBsYXBwZW5kX29pZChyZXN1bHQsIHJlbGlkKTsKIAkJfQogCkBAIC0xMTY4LDE3ICsxMjYw LDE4IEBAIHBnX2dldF9wdWJsaWNhdGlvbl90YWJsZXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJCSAq IHRob3NlLiBPdGhlcndpc2UsIGdldCB0aGUgcGFydGl0aW9uZWQgdGFibGUgaXRzZWxmLgogCQkJ ICovCiAJCQlpZiAocHViX2VsZW0tPmFsbHRhYmxlcykKLQkJCQlwdWJfZWxlbV90YWJsZXMgPSBH ZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhSRUxLSU5EX1JFTEFUSU9OLAorCQkJCXB1Yl9lbGVt X3RhYmxlcyA9IEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1Yl9lbGVtLT5vaWQsCisJCQkJ CQkJCQkJCQkJCQkgUkVMS0lORF9SRUxBVElPTiwKIAkJCQkJCQkJCQkJCQkJCSBwdWJfZWxlbS0+ cHVidmlhcm9vdCk7CiAJCQllbHNlCiAJCQl7CiAJCQkJTGlzdAkgICAqcmVsaWRzLAogCQkJCQkJ ICAgKnNjaGVtYXJlbGlkczsKIAotCQkJCXJlbGlkcyA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25z KHB1Yl9lbGVtLT5vaWQsCi0JCQkJCQkJCQkJCQkgcHViX2VsZW0tPnB1YnZpYXJvb3QgPwotCQkJ CQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCA6Ci0JCQkJCQkJCQkJCQkgUFVCTElDQVRJ T05fUEFSVF9MRUFGKTsKKwkJCQlyZWxpZHMgPSBHZXRJbmNsdWRlZFB1YmxpY2F0aW9uUmVsYXRp b25zKHB1Yl9lbGVtLT5vaWQsCisJCQkJCQkJCQkJCQkJCSBwdWJfZWxlbS0+cHVidmlhcm9vdCA/ CisJCQkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX1JPT1QgOgorCQkJCQkJCQkJCQkJCQkg UFVCTElDQVRJT05fUEFSVF9MRUFGKTsKIAkJCQlzY2hlbWFyZWxpZHMgPSBHZXRBbGxTY2hlbWFQ dWJsaWNhdGlvblJlbGF0aW9ucyhwdWJfZWxlbS0+b2lkLAogCQkJCQkJCQkJCQkJCQkJCXB1Yl9l bGVtLT5wdWJ2aWFyb290ID8KIAkJCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX1JPT1Qg OgpAQCAtMTM2Nyw3ICsxNDYwLDkgQEAgcGdfZ2V0X3B1YmxpY2F0aW9uX3NlcXVlbmNlcyhQR19G VU5DVElPTl9BUkdTKQogCQlwdWJsaWNhdGlvbiA9IEdldFB1YmxpY2F0aW9uQnlOYW1lKHB1Ym5h bWUsIGZhbHNlKTsKIAogCQlpZiAocHVibGljYXRpb24tPmFsbHNlcXVlbmNlcykKLQkJCXNlcXVl bmNlcyA9IEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKFJFTEtJTkRfU0VRVUVOQ0UsIGZhbHNl KTsKKwkJCXNlcXVlbmNlcyA9IEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmxpY2F0aW9u LT5vaWQsCisJCQkJCQkJCQkJCQkgICBSRUxLSU5EX1NFUVVFTkNFLAorCQkJCQkJCQkJCQkJICAg ZmFsc2UpOwogCiAJCWZ1bmNjdHgtPnVzZXJfZmN0eCA9IHNlcXVlbmNlczsKIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwppbmRleCBmYzNhNGMxOWU2NS4uNmEzY2E0NzUxZmEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCkBAIC0xODEsNyArMTgxLDcg QEAgcGFyc2VfcHVibGljYXRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAgKi8KIHN0 YXRpYyB2b2lkCiBPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhMaXN0ICpwdWJvYmpzcGVjX2xp c3QsIFBhcnNlU3RhdGUgKnBzdGF0ZSwKLQkJCQkJCSAgIExpc3QgKipyZWxzLCBMaXN0ICoqc2No ZW1hcykKKwkJCQkJCSAgIExpc3QgKipyZWxzLCBMaXN0ICoqZXhjZXB0cmVscywgTGlzdCAqKnNj aGVtYXMpCiB7CiAJTGlzdENlbGwgICAqY2VsbDsKIAlQdWJsaWNhdGlvbk9ialNwZWMgKnB1Ym9i ajsKQEAgLTE5OCw3ICsxOTgsMTIgQEAgT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoTGlzdCAq cHVib2Jqc3BlY19saXN0LCBQYXJzZVN0YXRlICpwc3RhdGUsCiAKIAkJc3dpdGNoIChwdWJvYmot PnB1Ym9ianR5cGUpCiAJCXsKKwkJCWNhc2UgUFVCTElDQVRJT05PQkpfRVhDRVBUX1RBQkxFOgor CQkJCXB1Ym9iai0+cHVidGFibGUtPmV4Y2VwdCA9IHRydWU7CisJCQkJKmV4Y2VwdHJlbHMgPSBs YXBwZW5kKCpleGNlcHRyZWxzLCBwdWJvYmotPnB1YnRhYmxlKTsKKwkJCQlicmVhazsKIAkJCWNh c2UgUFVCTElDQVRJT05PQkpfVEFCTEU6CisJCQkJcHVib2JqLT5wdWJ0YWJsZS0+ZXhjZXB0ID0g ZmFsc2U7CiAJCQkJKnJlbHMgPSBsYXBwZW5kKCpyZWxzLCBwdWJvYmotPnB1YnRhYmxlKTsKIAkJ CQlicmVhazsKIAkJCWNhc2UgUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX1NDSEVNQToKQEAgLTUx OSw4ICs1MjQsOCBAQCBJbnZhbGlkYXRlUHViUmVsU3luY0NhY2hlKE9pZCBwdWJpZCwgYm9vbCBw dWJhbGx0YWJsZXMpCiAJCSAqIGEgdGFyZ2V0LiBIb3dldmVyLCBXQUwgcmVjb3JkcyBmb3IgVFJV TkNBVEUgc3BlY2lmeSBib3RoIGEgcm9vdCBhbmQKIAkJICogaXRzIGxlYXZlcy4KIAkJICovCi0J CXJlbGlkcyA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmlkLAotCQkJCQkJCQkJCSBQVUJM SUNBVElPTl9QQVJUX0FMTCk7CisJCXJlbGlkcyA9IEdldEluY2x1ZGVkUHVibGljYXRpb25SZWxh dGlvbnMocHViaWQsCisJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9BTEwpOwogCQlzY2hl bWFyZWxpZHMgPSBHZXRBbGxTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJpZCwKIAkJCQkJ CQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9BTEwpOwogCkBAIC04NDQsNiArODQ5LDcgQEAgQ3Jl YXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQg KnN0bXQpCiAJY2hhcgkJcHVibGlzaF9nZW5lcmF0ZWRfY29sdW1uczsKIAlBY2xSZXN1bHQJYWNs cmVzdWx0OwogCUxpc3QJICAgKnJlbGF0aW9ucyA9IE5JTDsKKwlMaXN0CSAgICpleGNlcHRyZWxh dGlvbnMgPSBOSUw7CiAJTGlzdAkgICAqc2NoZW1haWRsaXN0ID0gTklMOwogCiAJLyogbXVzdCBo YXZlIENSRUFURSBwcml2aWxlZ2Ugb24gZGF0YWJhc2UgKi8KQEAgLTkyOSw4ICs5MzUsMjEgQEAg Q3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0 bXQgKnN0bXQpCiAJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKIAogCS8qIEFzc29jaWF0ZSBv YmplY3RzIHdpdGggdGhlIHB1YmxpY2F0aW9uLiAqLworCU9iamVjdHNJblB1YmxpY2F0aW9uVG9P aWRzKHN0bXQtPnB1Ym9iamVjdHMsIHBzdGF0ZSwgJnJlbGF0aW9ucywKKwkJCQkJCQkgICAmZXhj ZXB0cmVsYXRpb25zLCAmc2NoZW1haWRsaXN0KTsKKwogCWlmIChzdG10LT5mb3JfYWxsX3RhYmxl cykKIAl7CisJCS8qIFByb2Nlc3MgRVhDRVBUIHRhYmxlIGxpc3QgKi8KKwkJaWYgKGV4Y2VwdHJl bGF0aW9ucyAhPSBOSUwpCisJCXsKKwkJCUxpc3QJICAgKnJlbHM7CisKKwkJCXJlbHMgPSBPcGVu VGFibGVMaXN0KGV4Y2VwdHJlbGF0aW9ucyk7CisJCQlQdWJsaWNhdGlvbkFkZFRhYmxlcyhwdWJv aWQsIHJlbHMsIHRydWUsIE5VTEwpOworCQkJQ2xvc2VUYWJsZUxpc3QocmVscyk7CisJCX0KKwog CQkvKgogCQkgKiBJbnZhbGlkYXRlIHJlbGNhY2hlIHNvIHRoYXQgcHVibGljYXRpb24gaW5mbyBp cyByZWJ1aWx0LiBTZXF1ZW5jZXMKIAkJICogcHVibGljYXRpb24gZG9lc24ndCByZXF1aXJlIGlu dmFsaWRhdGlvbiwgYXMgcmVwbGljYSBpZGVudGl0eQpAQCAtOTQwLDkgKzk1OSw2IEBAIENyZWF0 ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpz dG10KQogCX0KIAllbHNlIGlmICghc3RtdC0+Zm9yX2FsbF9zZXF1ZW5jZXMpCiAJewotCQlPYmpl Y3RzSW5QdWJsaWNhdGlvblRvT2lkcyhzdG10LT5wdWJvYmplY3RzLCBwc3RhdGUsICZyZWxhdGlv bnMsCi0JCQkJCQkJCSAgICZzY2hlbWFpZGxpc3QpOwotCiAJCS8qIEZPUiBUQUJMRVMgSU4gU0NI RU1BIHJlcXVpcmVzIHN1cGVydXNlciAqLwogCQlpZiAoc2NoZW1haWRsaXN0ICE9IE5JTCAmJiAh c3VwZXJ1c2VyKCkpCiAJCQllcmVwb3J0KEVSUk9SLApAQCAtMTA1MCw4ICsxMDY2LDggQEAgQWx0 ZXJQdWJsaWNhdGlvbk9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9u U3RtdCAqc3RtdCwKIAkJTG9ja0RhdGFiYXNlT2JqZWN0KFB1YmxpY2F0aW9uUmVsYXRpb25JZCwg cHViZm9ybS0+b2lkLCAwLAogCQkJCQkJICAgQWNjZXNzU2hhcmVMb2NrKTsKIAotCQlyb290X3Jl bGlkcyA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmZvcm0tPm9pZCwKLQkJCQkJCQkJCQkJ ICBQVUJMSUNBVElPTl9QQVJUX1JPT1QpOworCQlyb290X3JlbGlkcyA9IEdldEluY2x1ZGVkUHVi bGljYXRpb25SZWxhdGlvbnMocHViZm9ybS0+b2lkLAorCQkJCQkJCQkJCQkJCSAgUFVCTElDQVRJ T05fUEFSVF9ST09UKTsKIAogCQlmb3JlYWNoKGxjLCByb290X3JlbGlkcykKIAkJewpAQCAtMTE3 MCw4ICsxMTg2LDggQEAgQWx0ZXJQdWJsaWNhdGlvbk9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRl LCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKIAkJICogdHJlZXMsIG5vdCBqdXN0IHRob3Nl IGV4cGxpY2l0bHkgbWVudGlvbmVkIGluIHRoZSBwdWJsaWNhdGlvbi4KIAkJICovCiAJCWlmIChy b290X3JlbGlkcyA9PSBOSUwpCi0JCQlyZWxpZHMgPSBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhw dWJmb3JtLT5vaWQsCi0JCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX0FMTCk7CisJCQlyZWxp ZHMgPSBHZXRJbmNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmZvcm0tPm9pZCwKKwkJCQkJ CQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9BTEwpOwogCQllbHNlCiAJCXsKIAkJCS8qCkBAIC0x MjU2LDggKzEyNzIsOCBAQCBBbHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVibGljYXRpb25T dG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQlQdWJsaWNhdGlvbkRyb3BUYWJsZXMocHViaWQs IHJlbHMsIGZhbHNlKTsKIAllbHNlCQkJCQkJLyogQVBfU2V0T2JqZWN0cyAqLwogCXsKLQkJTGlz dAkgICAqb2xkcmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViaWQsCi0JCQkJCQkJ CQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CisJCUxpc3QJICAgKm9sZHJlbGlkcyA9IEdl dEluY2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMocHViaWQsCisJCQkJCQkJCQkJCQkJCQkJUFVC TElDQVRJT05fUEFSVF9ST09UKTsKIAkJTGlzdAkgICAqZGVscmVscyA9IE5JTDsKIAkJTGlzdENl bGwgICAqb2xkbGM7CiAKQEAgLTEzNTgsNiArMTM3NCw3IEBAIEFsdGVyUHVibGljYXRpb25UYWJs ZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAJCQkJb2xkcmVs ID0gcGFsbG9jX29iamVjdChQdWJsaWNhdGlvblJlbEluZm8pOwogCQkJCW9sZHJlbC0+d2hlcmVD bGF1c2UgPSBOVUxMOwogCQkJCW9sZHJlbC0+Y29sdW1ucyA9IE5JTDsKKwkJCQlvbGRyZWwtPmV4 Y2VwdCA9IGZhbHNlOwogCQkJCW9sZHJlbC0+cmVsYXRpb24gPSB0YWJsZV9vcGVuKG9sZHJlbGlk LAogCQkJCQkJCQkJCQkgIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CiAJCQkJZGVscmVscyA9 IGxhcHBlbmQoZGVscmVscywgb2xkcmVsKTsKQEAgLTE0MDgsNyArMTQyNSw4IEBAIEFsdGVyUHVi bGljYXRpb25TY2hlbWFzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAogCQlMaXN0Q2VsbCAg ICpsYzsKIAkJTGlzdAkgICAqcmVsb2lkczsKIAotCQlyZWxvaWRzID0gR2V0UHVibGljYXRpb25S ZWxhdGlvbnMocHViZm9ybS0+b2lkLCBQVUJMSUNBVElPTl9QQVJUX1JPT1QpOworCQlyZWxvaWRz ID0gR2V0SW5jbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJmb3JtLT5vaWQsCisJCQkJCQkJ CQkJCQkgIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CiAKIAkJZm9yZWFjaChsYywgcmVsb2lkcykK IAkJewpAQCAtMTU2NiwxMSArMTU4NCwxNSBAQCBBbHRlclB1YmxpY2F0aW9uKFBhcnNlU3RhdGUg KnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJZWxzZQogCXsKIAkJTGlzdAkg ICAqcmVsYXRpb25zID0gTklMOworCQlMaXN0CSAgICpleGNlcHRyZWxhdGlvbnMgPSBOSUw7CiAJ CUxpc3QJICAgKnNjaGVtYWlkbGlzdCA9IE5JTDsKIAkJT2lkCQkJcHViaWQgPSBwdWJmb3JtLT5v aWQ7CiAKIAkJT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoc3RtdC0+cHVib2JqZWN0cywgcHN0 YXRlLCAmcmVsYXRpb25zLAotCQkJCQkJCQkgICAmc2NoZW1haWRsaXN0KTsKKwkJCQkJCQkJICAg JmV4Y2VwdHJlbGF0aW9ucywgJnNjaGVtYWlkbGlzdCk7CisKKwkJLyogRVhDRVBUIGNsYXVzZSBp cyBub3Qgc3VwcG9ydGVkIHdpdGggQUxURVIgUFVCTElDQVRJT04gKi8KKwkJQXNzZXJ0KGV4Y2Vw dHJlbGF0aW9ucyA9PSBOSUwpOwogCiAJCUNoZWNrQWx0ZXJQdWJsaWNhdGlvbihzdG10LCB0dXAs IHJlbGF0aW9ucywgc2NoZW1haWRsaXN0KTsKIApAQCAtMTc3MSw2ICsxNzkzLDcgQEAgT3BlblRh YmxlTGlzdChMaXN0ICp0YWJsZXMpCiAJCXB1Yl9yZWwtPnJlbGF0aW9uID0gcmVsOwogCQlwdWJf cmVsLT53aGVyZUNsYXVzZSA9IHQtPndoZXJlQ2xhdXNlOwogCQlwdWJfcmVsLT5jb2x1bW5zID0g dC0+Y29sdW1uczsKKwkJcHViX3JlbC0+ZXhjZXB0ID0gdC0+ZXhjZXB0OwogCQlyZWxzID0gbGFw cGVuZChyZWxzLCBwdWJfcmVsKTsKIAkJcmVsaWRzID0gbGFwcGVuZF9vaWQocmVsaWRzLCBteXJl bGlkKTsKIApAQCAtMTg0Myw2ICsxODY2LDcgQEAgT3BlblRhYmxlTGlzdChMaXN0ICp0YWJsZXMp CiAKIAkJCQkvKiBjaGlsZCBpbmhlcml0cyBjb2x1bW4gbGlzdCBmcm9tIHBhcmVudCAqLwogCQkJ CXB1Yl9yZWwtPmNvbHVtbnMgPSB0LT5jb2x1bW5zOworCQkJCXB1Yl9yZWwtPmV4Y2VwdCA9IHQt PmV4Y2VwdDsKIAkJCQlyZWxzID0gbGFwcGVuZChyZWxzLCBwdWJfcmVsKTsKIAkJCQlyZWxpZHMg PSBsYXBwZW5kX29pZChyZWxpZHMsIGNoaWxkcmVsaWQpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21k cy5jCmluZGV4IGIwNGIwZGJkMmEwLi41ZDlkZjFkY2IwNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVj bWRzLmMKQEAgLTg2ODYsNyArODY4Niw3IEBAIEFURXhlY1NldEV4cHJlc3Npb24oQWx0ZXJlZFRh YmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbE5hbWUsCiAJICogZXhw cmVzc2lvbnMuCiAJICovCiAJaWYgKGF0dGdlbmVyYXRlZCA9PSBBVFRSSUJVVEVfR0VORVJBVEVE X1ZJUlRVQUwgJiYKLQkJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoUmVsYXRpb25HZXRSZWxpZChy ZWwpKSAhPSBOSUwpCisJCUdldFJlbGF0aW9uSW5jbHVkZWRQdWJsaWNhdGlvbnMoUmVsYXRpb25H ZXRSZWxpZChyZWwpKSAhPSBOSUwpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCSBlcnJtc2coIkFMVEVSIFRBQkxFIC8g U0VUIEVYUFJFU1NJT04gaXMgbm90IHN1cHBvcnRlZCBmb3IgdmlydHVhbCBnZW5lcmF0ZWQgY29s dW1ucyBpbiB0YWJsZXMgdGhhdCBhcmUgcGFydCBvZiBhIHB1YmxpY2F0aW9uIiksCkBAIC0xODg4 MSw3ICsxODg4MSw3IEBAIEFUUHJlcENoYW5nZVBlcnNpc3RlbmNlKEFsdGVyZWRUYWJsZUluZm8g KnRhYiwgUmVsYXRpb24gcmVsLCBib29sIHRvTG9nZ2VkKQogCSAqIFVOTE9HR0VELCBhcyBVTkxP R0dFRCB0YWJsZXMgY2FuJ3QgYmUgcHVibGlzaGVkLgogCSAqLwogCWlmICghdG9Mb2dnZWQgJiYK LQkJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoUmVsYXRpb25HZXRSZWxpZChyZWwpKSAhPSBOSUwp CisJCUdldFJlbGF0aW9uSW5jbHVkZWRQdWJsaWNhdGlvbnMoUmVsYXRpb25HZXRSZWxpZChyZWwp KSAhPSBOSUwpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1Rf Tk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCiAJCQkJIGVycm1zZygiY2Fubm90IGNoYW5nZSB0 YWJsZSBcIiVzXCIgdG8gdW5sb2dnZWQgYmVjYXVzZSBpdCBpcyBwYXJ0IG9mIGEgcHVibGljYXRp b24iLApAQCAtMjAzMjIsNiArMjAzMjIsNyBAQCBBVEV4ZWNBdHRhY2hQYXJ0aXRpb24oTGlzdCAq KndxdWV1ZSwgUmVsYXRpb24gcmVsLCBQYXJ0aXRpb25DbWQgKmNtZCwKIAljb25zdCBjaGFyICp0 cmlnZ2VyX25hbWU7CiAJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7CiAJTGlzdAkgICAqcGFydEJvdW5k Q29uc3RyYWludDsKKwlMaXN0CSAgICpleGNlcHRwdWJvaWRzID0gTklMOwogCVBhcnNlU3RhdGUg KnBzdGF0ZSA9IG1ha2VfcGFyc2VzdGF0ZShOVUxMKTsKIAogCXBzdGF0ZS0+cF9zb3VyY2V0ZXh0 ID0gY29udGV4dC0+cXVlcnlTdHJpbmc7CkBAIC0yMDM2MSw2ICsyMDM2Miw0MyBAQCBBVEV4ZWNB dHRhY2hQYXJ0aXRpb24oTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBQYXJ0aXRpb25DbWQg KmNtZCwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKIAkJCQkgZXJy bXNnKCJjYW5ub3QgYXR0YWNoIGEgdHlwZWQgdGFibGUgYXMgcGFydGl0aW9uIikpKTsKIAorCS8q CisJICogRGlzYWxsb3cgYXR0YWNoaW5nIGEgcGFydGl0aW9uIGlmIHRoZSB0YWJsZSBpcyByZWZl cmVuY2VkIGluIGEKKwkgKiBwdWJsaWNhdGlvbiBFWENFUFQgY2xhdXNlLiBDaGFuZ2luZyB0aGUg cGFydGl0aW9uIGhpZXJhcmNoeSBjb3VsZCBhbHRlcgorCSAqIHRoZSBlZmZlY3RpdmUgcHVibGlj YXRpb24gbWVtYmVyc2hpcC4KKwkgKi8KKwlleGNlcHRwdWJvaWRzID0gR2V0UmVsYXRpb25FeGNs dWRlZFB1YmxpY2F0aW9ucyhSZWxhdGlvbkdldFJlbGlkKGF0dGFjaHJlbCkpOworCWlmIChleGNl cHRwdWJvaWRzICE9IE5JTCkKKwl7CisJCWJvb2wJCWZpcnN0ID0gdHJ1ZTsKKwkJU3RyaW5nSW5m b0RhdGEgcHVibmFtZXM7CisKKwkJaW5pdFN0cmluZ0luZm8oJnB1Ym5hbWVzKTsKKworCQlmb3Jl YWNoX29pZChwdWJpZCwgZXhjZXB0cHVib2lkcykKKwkJeworCQkJY2hhcgkgICAqcHVibmFtZSA9 IGdldF9wdWJsaWNhdGlvbl9uYW1lKHB1YmlkLCBmYWxzZSk7CisKKwkJCWlmICghZmlyc3QpCisJ CQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmcHVibmFtZXMsIF8oIiwgIikpOworCisJCQlmaXJz dCA9IGZhbHNlOworCisJCQlhcHBlbmRTdHJpbmdJbmZvKCZwdWJuYW1lcywgXygiXCIlc1wiIiks IHB1Ym5hbWUpOworCQl9CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVf T0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCWVycm1zZ19wbHVyYWwoImNh bm5vdCBhdHRhY2ggdGFibGUgXCIlc1wiIGFzIHBhcnRpdGlvbiBiZWNhdXNlIGl0IGlzIHJlZmVy ZW5jZWQgaW4gcHVibGljYXRpb24gJXMgRVhDRVBUIGNsYXVzZSIsCisJCQkJCQkJICAiY2Fubm90 IGF0dGFjaCB0YWJsZSBcIiVzXCIgYXMgcGFydGl0aW9uIGJlY2F1c2UgaXQgaXMgcmVmZXJlbmNl ZCBpbiBwdWJsaWNhdGlvbnMgJXMgRVhDRVBUIGNsYXVzZSIsCisJCQkJCQkJICBsaXN0X2xlbmd0 aChleGNlcHRwdWJvaWRzKSwKKwkJCQkJCQkgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGF0dGFj aHJlbCksCisJCQkJCQkJICBwdWJuYW1lcy5kYXRhKSwKKwkJCQllcnJkZXRhaWwoIlRoZSBwdWJs aWNhdGlvbiBFWENFUFQgY2xhdXNlIGNhbm5vdCBjb250YWluIHRhYmxlcyB0aGF0IGFyZSBwYXJ0 aXRpb25zLiIpKTsKKwl9CisKKwlsaXN0X2ZyZWUoZXhjZXB0cHVib2lkcyk7CisKIAkvKgogCSAq IFRhYmxlIGJlaW5nIGF0dGFjaGVkIHNob3VsZCBub3QgYWxyZWFkeSBiZSBwYXJ0IG9mIGluaGVy aXRhbmNlOyBlaXRoZXIKIAkgKiBhcyBhIGNoaWxkIHRhYmxlLi4uCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCBj NTY3MjUyYWNjNC4uM2MzZTI0MzI0YTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9n cmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMjAzLDYgKzIwMyw3IEBA IHN0YXRpYyB2b2lkIHByb2Nlc3NDQVNiaXRzKGludCBjYXNfYml0cywgaW50IGxvY2F0aW9uLCBj b25zdCBjaGFyICpjb25zdHJUeXBlLAogc3RhdGljIFBhcnRpdGlvblN0cmF0ZWd5IHBhcnNlUGFy dGl0aW9uU3RyYXRlZ3koY2hhciAqc3RyYXRlZ3ksIGludCBsb2NhdGlvbiwKIAkJCQkJCQkJCQkJ CWNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKTsKIHN0YXRpYyB2b2lkIHByZXByb2Nlc3NfcHViX2Fs bF9vYmp0eXBlX2xpc3QoTGlzdCAqYWxsX29iamVjdHNfbGlzdCwKKwkJCQkJCQkJCQkJTGlzdCAq KnB1Ym9iamVjdHMsCiAJCQkJCQkJCQkJCWJvb2wgKmFsbF90YWJsZXMsCiAJCQkJCQkJCQkJCWJv b2wgKmFsbF9zZXF1ZW5jZXMsCiAJCQkJCQkJCQkJCWNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKTsK QEAgLTQ1NSw2ICs0NTYsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3Qo Y2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCQkJCVRyaWdnZXJU cmFuc2l0aW9ucyBUcmlnZ2VyUmVmZXJlbmNpbmcKIAkJCQl2YWN1dW1fcmVsYXRpb25fbGlzdCBv cHRfdmFjdXVtX3JlbGF0aW9uX2xpc3QKIAkJCQlkcm9wX29wdGlvbl9saXN0IHB1Yl9vYmpfbGlz dCBwdWJfYWxsX29ial90eXBlX2xpc3QKKwkJCQlwdWJfZXhjZXB0X29ial9saXN0IG9wdF9wdWJf ZXhjZXB0X2NsYXVzZQogCiAldHlwZSA8cmV0Y2xhdXNlPiByZXR1cm5pbmdfY2xhdXNlCiAldHlw ZSA8bm9kZT4JcmV0dXJuaW5nX29wdGlvbgpAQCAtNTkyLDYgKzU5NCw3IEBAIHN0YXRpYyBOb2Rl ICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBO b2RlICpxdWVyeSk7CiAldHlwZSA8bm9kZT4JdmFyX3ZhbHVlIHpvbmVfdmFsdWUKICV0eXBlIDxy b2xlc3BlYz4gYXV0aF9pZGVudCBSb2xlU3BlYyBvcHRfZ3JhbnRlZF9ieQogJXR5cGUgPHB1Ymxp Y2F0aW9ub2JqZWN0c3BlYz4gUHVibGljYXRpb25PYmpTcGVjCisldHlwZSA8cHVibGljYXRpb25v YmplY3RzcGVjPiBQdWJsaWNhdGlvbkV4Y2VwdE9ialNwZWMKICV0eXBlIDxwdWJsaWNhdGlvbmFs bG9iamVjdHNwZWM+IFB1YmxpY2F0aW9uQWxsT2JqU3BlYwogCiAldHlwZSA8a2V5d29yZD4gdW5y ZXNlcnZlZF9rZXl3b3JkIHR5cGVfZnVuY19uYW1lX2tleXdvcmQKQEAgLTEwNzkyLDcgKzEwNzk1 LDcgQEAgQWx0ZXJPd25lclN0bXQ6IEFMVEVSIEFHR1JFR0FURSBhZ2dyZWdhdGVfd2l0aF9hcmd0 eXBlcyBPV05FUiBUTyBSb2xlU3BlYwogICoKICAqIHB1Yl9hbGxfb2JqX3R5cGUgaXMgb25lIG9m OgogICoKLSAqCQlUQUJMRVMKKyAqCQlUQUJMRVMgW0VYQ0VQVCBUQUJMRSAoIHRhYmxlIFssIC4u Ll0gKV0KICAqCQlTRVFVRU5DRVMKICAqCiAgKiBDUkVBVEUgUFVCTElDQVRJT04gRk9SIHB1Yl9v YmogWywgLi4uXSBbV0lUSCBvcHRpb25zXQpAQCAtMTA4MTgsNyArMTA4MjEsOCBAQCBDcmVhdGVQ dWJsaWNhdGlvblN0bXQ6CiAJCQkJCUNyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqbiA9IG1ha2VOb2Rl KENyZWF0ZVB1YmxpY2F0aW9uU3RtdCk7CiAKIAkJCQkJbi0+cHVibmFtZSA9ICQzOwotCQkJCQlw cmVwcm9jZXNzX3B1Yl9hbGxfb2JqdHlwZV9saXN0KCQ1LCAmbi0+Zm9yX2FsbF90YWJsZXMsCisJ CQkJCXByZXByb2Nlc3NfcHViX2FsbF9vYmp0eXBlX2xpc3QoJDUsICZuLT5wdWJvYmplY3RzLAor CQkJCQkJCQkJCQkJCSZuLT5mb3JfYWxsX3RhYmxlcywKIAkJCQkJCQkJCQkJCQkmbi0+Zm9yX2Fs bF9zZXF1ZW5jZXMsCiAJCQkJCQkJCQkJCQkJeXlzY2FubmVyKTsKIAkJCQkJbi0+b3B0aW9ucyA9 ICQ2OwpAQCAtMTA5MzMsMTEgKzEwOTM3LDE3IEBAIHB1Yl9vYmpfbGlzdDoJUHVibGljYXRpb25P YmpTcGVjCiAJCQkJCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KIAk7CiAKK29wdF9wdWJfZXhj ZXB0X2NsYXVzZToKKwkJCUVYQ0VQVCBUQUJMRSAnKCcgcHViX2V4Y2VwdF9vYmpfbGlzdCAnKScJ eyAkJCA9ICQ0OyB9CisJCQl8IC8qRU1QVFkqLwkJCQkJCQkJCXsgJCQgPSBOSUw7IH0KKwkJOwor CiBQdWJsaWNhdGlvbkFsbE9ialNwZWM6Ci0JCQkJQUxMIFRBQkxFUworCQkJCUFMTCBUQUJMRVMg b3B0X3B1Yl9leGNlcHRfY2xhdXNlCiAJCQkJCXsKIAkJCQkJCSQkID0gbWFrZU5vZGUoUHVibGlj YXRpb25BbGxPYmpTcGVjKTsKIAkJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05fQUxM X1RBQkxFUzsKKwkJCQkJCSQkLT5leGNlcHRfdGFibGVzID0gJDM7CiAJCQkJCQkkJC0+bG9jYXRp b24gPSBAMTsKIAkJCQkJfQogCQkJCXwgQUxMIFNFUVVFTkNFUwpAQCAtMTA5NTQsNiArMTA5NjQs MjMgQEAgcHViX2FsbF9vYmpfdHlwZV9saXN0OglQdWJsaWNhdGlvbkFsbE9ialNwZWMKIAkJCQkJ eyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQogCTsKIAorUHVibGljYXRpb25FeGNlcHRPYmpTcGVj OgorCQkJIHJlbGF0aW9uX2V4cHIKKwkJCQl7CisJCQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRp b25PYmpTcGVjKTsKKwkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9FWENFUFRf VEFCTEU7CisJCQkJCSQkLT5wdWJ0YWJsZSA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uVGFibGUpOwor CQkJCQkkJC0+cHVidGFibGUtPmV4Y2VwdCA9IHRydWU7CisJCQkJCSQkLT5wdWJ0YWJsZS0+cmVs YXRpb24gPSAkMTsKKwkJCQkJJCQtPmxvY2F0aW9uID0gQDE7CisJCQkJfQorCTsKKworcHViX2V4 Y2VwdF9vYmpfbGlzdDogUHVibGljYXRpb25FeGNlcHRPYmpTcGVjCisJCQkJCXsgJCQgPSBsaXN0 X21ha2UxKCQxKTsgfQorCQkJfCBwdWJfZXhjZXB0X29ial9saXN0ICcsJyBQdWJsaWNhdGlvbkV4 Y2VwdE9ialNwZWMKKwkJCQkJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQorCTsKIAogLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCiAgKgpAQCAtMTk4MTIsOCArMTk4MzksOSBAQCBwYXJzZVBhcnRpdGlv blN0cmF0ZWd5KGNoYXIgKnN0cmF0ZWd5LCBpbnQgbG9jYXRpb24sIGNvcmVfeXlzY2FuX3QgeXlz Y2FubmVyKQogICogQWxzbywgY2hlY2tzIGlmIHRoZSBwdWJfb2JqZWN0X3R5cGUgaGFzIGJlZW4g c3BlY2lmaWVkIG1vcmUgdGhhbiBvbmNlLgogICovCiBzdGF0aWMgdm9pZAotcHJlcHJvY2Vzc19w dWJfYWxsX29ianR5cGVfbGlzdChMaXN0ICphbGxfb2JqZWN0c19saXN0LCBib29sICphbGxfdGFi bGVzLAotCQkJCQkJCQlib29sICphbGxfc2VxdWVuY2VzLCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5l cikKK3ByZXByb2Nlc3NfcHViX2FsbF9vYmp0eXBlX2xpc3QoTGlzdCAqYWxsX29iamVjdHNfbGlz dCwgTGlzdCAqKnB1Ym9iamVjdHMsCisJCQkJCQkJCWJvb2wgKmFsbF90YWJsZXMsIGJvb2wgKmFs bF9zZXF1ZW5jZXMsCisJCQkJCQkJCWNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQogewogCWlmICgh YWxsX29iamVjdHNfbGlzdCkKIAkJcmV0dXJuOwpAQCAtMTk4MzMsNiArMTk4NjEsNyBAQCBwcmVw cm9jZXNzX3B1Yl9hbGxfb2JqdHlwZV9saXN0KExpc3QgKmFsbF9vYmplY3RzX2xpc3QsIGJvb2wg KmFsbF90YWJsZXMsCiAJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ob2JqLT5sb2NhdGlvbikpOwog CiAJCQkqYWxsX3RhYmxlcyA9IHRydWU7CisJCQkqcHVib2JqZWN0cyA9IGxpc3RfY29uY2F0KCpw dWJvYmplY3RzLCBvYmotPmV4Y2VwdF90YWJsZXMpOwogCQl9CiAJCWVsc2UgaWYgKG9iai0+cHVi b2JqdHlwZSA9PSBQVUJMSUNBVElPTl9BTExfU0VRVUVOQ0VTKQogCQl7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwppbmRleCA3YTQ5MTg1ZDI5ZC4uZjZiN2Fk ZmM0ZGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0 cHV0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwpA QCAtMjA4OSw3ICsyMDg5LDcgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0 YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJaWYgKCFlbnRyeS0+cmVwbGljYXRlX3ZhbGlkKQogCXsK IAkJT2lkCQkJc2NoZW1hSWQgPSBnZXRfcmVsX25hbWVzcGFjZShyZWxpZCk7Ci0JCUxpc3QJICAg KnB1YmlkcyA9IEdldFJlbGF0aW9uUHVibGljYXRpb25zKHJlbGlkKTsKKwkJTGlzdAkgICAqcHVi aWRzID0gR2V0UmVsYXRpb25JbmNsdWRlZFB1YmxpY2F0aW9ucyhyZWxpZCk7CiAKIAkJLyoKIAkJ ICogV2UgZG9uJ3QgYWNxdWlyZSBhIGxvY2sgb24gdGhlIG5hbWVzcGFjZSBzeXN0ZW0gdGFibGUg YXMgd2UgYnVpbGQKQEAgLTIyMDYsMTQgKzIyMDYsNDcgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBH T3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCQkgKi8KIAkJCWlmIChwdWIt PmFsbHRhYmxlcykKIAkJCXsKLQkJCQlwdWJsaXNoID0gdHJ1ZTsKLQkJCQlpZiAocHViLT5wdWJ2 aWFyb290ICYmIGFtX3BhcnRpdGlvbikKKwkJCQlMaXN0CSAgICpleGNlcHRwdWJpZHMgPSBOSUw7 CisKKwkJCQlpZiAoYW1fcGFydGl0aW9uKQogCQkJCXsKIAkJCQkJTGlzdAkgICAqYW5jZXN0b3Jz ID0gZ2V0X3BhcnRpdGlvbl9hbmNlc3RvcnMocmVsaWQpOworCQkJCQlPaWQJCQlsYXN0X2FuY2Vz dG9yX3JlbGlkID0gbGxhc3Rfb2lkKGFuY2VzdG9ycyk7CisKKwkJCQkJLyoKKwkJCQkJICogRm9y IGEgcGFyaXRpb24sIGNoYW5nZXMgYXJlIHB1Ymxpc2hlZCB2aWEgdG9wLW1vc3QKKwkJCQkJICog YW5jZXN0b3Igd2hlbiBwdWJ2aWFyb290IGlzIHRydWUsIHNvIHBvcHVsYXRlIHB1Yl9yZWxpZAor CQkJCQkgKiBhY2NvcmRpbmdseQorCQkJCQkgKi8KKwkJCQkJaWYgKHB1Yi0+cHVidmlhcm9vdCkK KwkJCQkJeworCQkJCQkJcHViX3JlbGlkID0gbGFzdF9hbmNlc3Rvcl9yZWxpZDsKKwkJCQkJCWFu Y2VzdG9yX2xldmVsID0gbGlzdF9sZW5ndGgoYW5jZXN0b3JzKTsKKwkJCQkJfQogCi0JCQkJCXB1 Yl9yZWxpZCA9IGxsYXN0X29pZChhbmNlc3RvcnMpOwotCQkJCQlhbmNlc3Rvcl9sZXZlbCA9IGxp c3RfbGVuZ3RoKGFuY2VzdG9ycyk7CisJCQkJCS8qCisJCQkJCSAqIE9ubHkgdGhlIHRvcC1tb3N0 IGFuY2VzdG9yIG1heSBhcHBlYXIgaW4gdGhlIEVYQ0VQVAorCQkJCQkgKiBjbGF1c2UuIFRoZXJl Zm9yZSwgZm9yIGEgcGFydGl0aW9uLCBleGNsdXNpb24gbXVzdCBiZQorCQkJCQkgKiBldmFsdWF0 ZWQgYXQgdGhlIHRvcC1tb3N0IGFuY2VzdG9yLgorCQkJCQkgKi8KKwkJCQkJZXhjZXB0cHViaWRz ID0gR2V0UmVsYXRpb25FeGNsdWRlZFB1YmxpY2F0aW9ucyhsYXN0X2FuY2VzdG9yX3JlbGlkKTsK KwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJLyoKKwkJCQkJICogRm9yIGEgcmVndWxhciB0 YWJsZSBvciBhIHJvb3QgcGFydGl0aW9uZWQgdGFibGUsIGNoZWNrCisJCQkJCSAqIGV4Y2x1c2lv biBvbiB0YWJsZSBpdHNlbGYuCisJCQkJCSAqLworCQkJCQlleGNlcHRwdWJpZHMgPSBHZXRSZWxh dGlvbkV4Y2x1ZGVkUHVibGljYXRpb25zKHB1Yl9yZWxpZCk7CiAJCQkJfQorCisJCQkJaWYgKCFs aXN0X21lbWJlcl9vaWQoZXhjZXB0cHViaWRzLCBwdWItPm9pZCkpCisJCQkJCXB1Ymxpc2ggPSB0 cnVlOworCisJCQkJbGlzdF9mcmVlKGV4Y2VwdHB1Ymlkcyk7CisKKwkJCQlpZiAoIXB1Ymxpc2gp CisJCQkJCWNvbnRpbnVlOwogCQkJfQogCiAJCQlpZiAoIXB1Ymxpc2gpCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvcmVsY2FjaGUuYwppbmRleCA2YjYzNGM5ZmZmMS4uNWQwZjAzZjM2NWIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvcmVsY2FjaGUuYwpAQCAtNTc4OCw3ICs1Nzg4LDkgQEAgUmVsYXRpb25HZXRFeGNs dXNpb25JbmZvKFJlbGF0aW9uIGluZGV4UmVsYXRpb24sCiB2b2lkCiBSZWxhdGlvbkJ1aWxkUHVi bGljYXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJsaWNhdGlvbkRlc2MgKnB1YmRlc2Mp CiB7Ci0JTGlzdAkgICAqcHVib2lkczsKKwlMaXN0CSAgICpwdWJvaWRzID0gTklMOworCUxpc3QJ ICAgKmV4Y2VwdHB1Ym9pZHMgPSBOSUw7CisJTGlzdAkgICAqYWxsdGFibGVzcHVib2lkczsKIAlM aXN0Q2VsbCAgICpsYzsKIAlNZW1vcnlDb250ZXh0IG9sZGN4dDsKIAlPaWQJCQlzY2hlbWFpZDsK QEAgLTU4MjYsMjggKzU4MjgsNDkgQEAgUmVsYXRpb25CdWlsZFB1YmxpY2F0aW9uRGVzYyhSZWxh dGlvbiByZWxhdGlvbiwgUHVibGljYXRpb25EZXNjICpwdWJkZXNjKQogCXB1YmRlc2MtPmdlbmNv bHNfdmFsaWRfZm9yX2RlbGV0ZSA9IHRydWU7CiAKIAkvKiBGZXRjaCB0aGUgcHVibGljYXRpb24g bWVtYmVyc2hpcCBpbmZvLiAqLwotCXB1Ym9pZHMgPSBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhy ZWxpZCk7CisJcHVib2lkcyA9IEdldFJlbGF0aW9uSW5jbHVkZWRQdWJsaWNhdGlvbnMocmVsaWQp OwogCXNjaGVtYWlkID0gUmVsYXRpb25HZXROYW1lc3BhY2UocmVsYXRpb24pOwogCXB1Ym9pZHMg PSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsIEdldFNjaGVtYVB1YmxpY2F0aW9ucyhz Y2hlbWFpZCkpOwogCiAJaWYgKHJlbGF0aW9uLT5yZF9yZWwtPnJlbGlzcGFydGl0aW9uKQogCXsK KwkJT2lkCQkJbGFzdF9hbmNlc3Rvcl9yZWxpZDsKKwogCQkvKiBBZGQgcHVibGljYXRpb25zIHRo YXQgdGhlIGFuY2VzdG9ycyBhcmUgaW4gdG9vLiAqLwogCQlhbmNlc3RvcnMgPSBnZXRfcGFydGl0 aW9uX2FuY2VzdG9ycyhyZWxpZCk7CisJCWxhc3RfYW5jZXN0b3JfcmVsaWQgPSBsbGFzdF9vaWQo YW5jZXN0b3JzKTsKIAogCQlmb3JlYWNoKGxjLCBhbmNlc3RvcnMpCiAJCXsKIAkJCU9pZAkJCWFu Y2VzdG9yID0gbGZpcnN0X29pZChsYyk7CisJCQlMaXN0CSAgICphbmNlc3Rvcl9wdWJvaWRzID0g R2V0UmVsYXRpb25JbmNsdWRlZFB1YmxpY2F0aW9ucyhhbmNlc3Rvcik7CiAKLQkJCXB1Ym9pZHMg PSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsCi0JCQkJCQkJCQkJCSBHZXRSZWxhdGlv blB1YmxpY2F0aW9ucyhhbmNlc3RvcikpOworCQkJcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1 ZV9vaWQocHVib2lkcywgYW5jZXN0b3JfcHVib2lkcyk7CiAJCQlzY2hlbWFpZCA9IGdldF9yZWxf bmFtZXNwYWNlKGFuY2VzdG9yKTsKIAkJCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lk KHB1Ym9pZHMsCiAJCQkJCQkJCQkJCSBHZXRTY2hlbWFQdWJsaWNhdGlvbnMoc2NoZW1haWQpKTsK IAkJfQorCisJCS8qCisJCSAqIE9ubHkgdGhlIHRvcC1tb3N0IGFuY2VzdG9yIG1heSBhcHBlYXIg aW4gdGhlIEVYQ0VQVCBjbGF1c2UuCisJCSAqIFRoZXJlZm9yZSwgZm9yIGEgcGFydGl0aW9uLCBl eGNsdXNpb24gbXVzdCBiZSBldmFsdWF0ZWQgYXQgdGhlCisJCSAqIHRvcC1tb3N0IGFuY2VzdG9y LgorCQkgKi8KKwkJZXhjZXB0cHVib2lkcyA9IEdldFJlbGF0aW9uRXhjbHVkZWRQdWJsaWNhdGlv bnMobGFzdF9hbmNlc3Rvcl9yZWxpZCk7CisJfQorCWVsc2UKKwl7CisJCS8qCisJCSAqIEZvciBh IHJlZ3VsYXIgdGFibGUgb3IgYSByb290IHBhcnRpdGlvbmVkIHRhYmxlLCBjaGVjayBleGNsdXNp b24gb24KKwkJICogdGFibGUgaXRzZWxmLgorCQkgKi8KKwkJZXhjZXB0cHVib2lkcyA9IEdldFJl bGF0aW9uRXhjbHVkZWRQdWJsaWNhdGlvbnMocmVsaWQpOwogCX0KLQlwdWJvaWRzID0gbGlzdF9j b25jYXRfdW5pcXVlX29pZChwdWJvaWRzLCBHZXRBbGxUYWJsZXNQdWJsaWNhdGlvbnMoKSk7CiAK KwlhbGx0YWJsZXNwdWJvaWRzID0gR2V0QWxsVGFibGVzUHVibGljYXRpb25zKCk7CisJcHVib2lk cyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywKKwkJCQkJCQkJCSBsaXN0X2RpZmZl cmVuY2Vfb2lkKGFsbHRhYmxlc3B1Ym9pZHMsCisJCQkJCQkJCQkJCQkJCSBleGNlcHRwdWJvaWRz KSk7CiAJZm9yZWFjaChsYywgcHVib2lkcykKIAl7CiAJCU9pZAkJCXB1YmlkID0gbGZpcnN0X29p ZChsYyk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuYwppbmRleCBkZDhhZGVmMGEzZS4uOTVlMWE1NzE0MWMgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYwpAQCAtNDYyMyw5ICs0NjIzLDU1IEBAIGdldFB1YmxpY2F0aW9ucyhBcmNoaXZlICpmb3V0 KQogCQkJKHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgaV9wdWJ2aWFyb290KSwgInQiKSA9PSAw KTsKIAkJcHViaW5mb1tpXS5wdWJnZW5jb2xzX3R5cGUgPQogCQkJKihQUWdldHZhbHVlKHJlcywg aSwgaV9wdWJnZW5jb2xzKSk7CisJCXB1YmluZm9baV0uZXhjZXB0X3RhYmxlcyA9IChTaW1wbGVQ dHJMaXN0KQorCQl7CisJCQlOVUxMLCBOVUxMCisJCX07CiAKIAkJLyogRGVjaWRlIHdoZXRoZXIg d2Ugd2FudCB0byBkdW1wIGl0ICovCiAJCXNlbGVjdER1bXBhYmxlT2JqZWN0KCYocHViaW5mb1tp XS5kb2JqKSwgZm91dCk7CisKKwkJLyoKKwkJICogR2V0IHRoZSBsaXN0IG9mIHRhYmxlcyBmb3Ig cHVibGljYXRpb25zIHNwZWNpZmllZCB3aXRoIHRoZSBFWENFUFQKKwkJICogVEFCTEUgY2xhdXNl LiBUaGlzIGlzIGludHJvZHVjZWQgaW4gUG9zdGdyZVNRTCAxOS4KKwkJICoKKwkJICogRVhDRVBU IFRBQkxFUyBpcyBwcm9jZXNzZWQgaGVyZSBhbmQgb3V0cHV0IGRpcmVjdGx5IGJ5CisJCSAqIGR1 bXBQdWJsaWNhdGlvbigpLiBUaGlzIGRpZmZlcnMgZnJvbSB0aGUgYXBwcm9hY2ggdXNlZCBpbgor CQkgKiBkdW1wUHVibGljYXRpb25UYWJsZSgpIGFuZCBkdW1wUHVibGljYXRpb25OYW1lc3BhY2Uo KSwgc2luY2UgdGhhdAorCQkgKiBhcHByb2FjaCB3b3VsZCByZXF1aXJlIEVYQ0VQVCBUQUJMRSBz dXBwb3J0IGZvciBBTFRFUiBQVUJMSUNBVElPTiwKKwkJICogd2hpY2ggaXMgbm90IGN1cnJlbnRs eSBzdXBwb3J0ZWQuCisJCSAqLworCQlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxOTAwMDAp CisJCXsKKwkJCWludAkJCW50YmxzOworCQkJUEdyZXN1bHQgICAqcmVzX3RibHM7CisKKwkJCXJl c2V0UFFFeHBCdWZmZXIocXVlcnkpOworCQkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksCisJCQkJ CQkJICAiU0VMRUNUIHBycmVsaWRcbiIKKwkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfcHVi bGljYXRpb25fcmVsXG4iCisJCQkJCQkJICAiV0hFUkUgcHJwdWJpZCA9ICV1IGFuZCBwcmV4Y2Vw dCIsCisJCQkJCQkJICBwdWJpbmZvW2ldLmRvYmouY2F0SWQub2lkKTsKKworCQkJcmVzX3RibHMg PSBFeGVjdXRlU3FsUXVlcnkoZm91dCwgcXVlcnktPmRhdGEsIFBHUkVTX1RVUExFU19PSyk7CisK KwkJCW50YmxzID0gUFFudHVwbGVzKHJlc190YmxzKTsKKworCQkJZm9yIChpbnQgaiA9IDA7IGog PCBudGJsczsgaisrKQorCQkJeworCQkJCU9pZAkJCXBycmVsaWQ7CisJCQkJVGFibGVJbmZvICAq dGJpbmZvOworCisJCQkJcHJyZWxpZCA9IGF0b29pZChQUWdldHZhbHVlKHJlc190YmxzLCBqLCAw KSk7CisKKwkJCQl0YmluZm8gPSBmaW5kVGFibGVCeU9pZChwcnJlbGlkKTsKKworCQkJCWlmICh0 YmluZm8gIT0gTlVMTCkKKwkJCQkJc2ltcGxlX3B0cl9saXN0X2FwcGVuZCgmcHViaW5mb1tpXS5l eGNlcHRfdGFibGVzLCB0YmluZm8pOworCQkJfQorCisJCQlQUWNsZWFyKHJlc190YmxzKTsKKwkJ fQogCX0KIAogY2xlYW51cDoKQEAgLTQ2NjIsMTAgKzQ3MDgsMjkgQEAgZHVtcFB1YmxpY2F0aW9u KEFyY2hpdmUgKmZvdXQsIGNvbnN0IFB1YmxpY2F0aW9uSW5mbyAqcHViaW5mbykKIAlhcHBlbmRQ UUV4cEJ1ZmZlcihxdWVyeSwgIkNSRUFURSBQVUJMSUNBVElPTiAlcyIsCiAJCQkJCSAgcXB1Ym5h bWUpOwogCi0JaWYgKHB1YmluZm8tPnB1YmFsbHRhYmxlcyAmJiBwdWJpbmZvLT5wdWJhbGxzZXF1 ZW5jZXMpCi0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIEZPUiBBTEwgVEFCTEVTLCBB TEwgU0VRVUVOQ0VTIik7Ci0JZWxzZSBpZiAocHViaW5mby0+cHViYWxsdGFibGVzKQorCWlmIChw dWJpbmZvLT5wdWJhbGx0YWJsZXMpCisJeworCQlpbnQJCQluX2V4Y2VwdCA9IDA7CisKIAkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgRk9SIEFMTCBUQUJMRVMiKTsKKworCQkvKiBJbmNs dWRlIEVYQ0VQVCBUQUJMRSBjbGF1c2UgaWYgdGhlcmUgYXJlIGV4Y2VwdF90YWJsZXMuICovCisJ CWZvciAoU2ltcGxlUHRyTGlzdENlbGwgKmNlbGwgPSBwdWJpbmZvLT5leGNlcHRfdGFibGVzLmhl YWQ7IGNlbGw7IGNlbGwgPSBjZWxsLT5uZXh0KQorCQl7CisJCQlUYWJsZUluZm8gICp0YmluZm8g PSAoVGFibGVJbmZvICopIGNlbGwtPnB0cjsKKworCQkJaWYgKCsrbl9leGNlcHQgPT0gMSkKKwkJ CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBFWENFUFQgVEFCTEUgKCIpOworCQkJZWxz ZQorCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCAiKTsKKwkJCWFwcGVuZFBRRXhw QnVmZmVyKHF1ZXJ5LCAiT05MWSAlcyIsIGZtdFF1YWxpZmllZER1bXBhYmxlKHRiaW5mbykpOwor CQl9CisJCWlmIChuX2V4Y2VwdCA+IDApCisJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwg IikiKTsKKworCQlpZiAocHViaW5mby0+cHViYWxsc2VxdWVuY2VzKQorCQkJYXBwZW5kUFFFeHBC dWZmZXJTdHIocXVlcnksICIsIEFMTCBTRVFVRU5DRVMiKTsKKwl9CiAJZWxzZSBpZiAocHViaW5m by0+cHViYWxsc2VxdWVuY2VzKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBGT1Ig QUxMIFNFUVVFTkNFUyIpOwogCkBAIC00ODQ1LDYgKzQ5MTAsNyBAQCBnZXRQdWJsaWNhdGlvblRh YmxlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQog CiAJLyogQ29sbGVjdCBhbGwgcHVibGljYXRpb24gbWVtYmVyc2hpcCBpbmZvLiAqLwogCWlmIChm b3V0LT5yZW1vdGVWZXJzaW9uID49IDE1MDAwMCkKKwl7CiAJCWFwcGVuZFBRRXhwQnVmZmVyU3Ry KHF1ZXJ5LAogCQkJCQkJCSAiU0VMRUNUIHRhYmxlb2lkLCBvaWQsIHBycHViaWQsIHBycmVsaWQs ICIKIAkJCQkJCQkgInBnX2NhdGFsb2cucGdfZ2V0X2V4cHIocHJxdWFsLCBwcnJlbGlkKSBBUyBw cnJlbHF1YWwsICIKQEAgLTQ4NTcsNiArNDkyMyw5IEBAIGdldFB1YmxpY2F0aW9uVGFibGVzKEFy Y2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJCQkJCQkJ ICIgICAgICBXSEVSRSBhdHRyZWxpZCA9IHByLnBycmVsaWQgQU5EIGF0dG51bSA9IHByYXR0cnNb c10pXG4iCiAJCQkJCQkJICIgIEVMU0UgTlVMTCBFTkQpIHByYXR0cnMgIgogCQkJCQkJCSAiRlJP TSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwciIpOworCQlpZiAoZm91dC0+cmVtb3Rl VmVyc2lvbiA+PSAxOTAwMDApCisJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBXSEVS RSBOT1QgcHIucHJleGNlcHQiKTsKKwl9CiAJZWxzZQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihx dWVyeSwKIAkJCQkJCQkgIlNFTEVDVCB0YWJsZW9pZCwgb2lkLCBwcnB1YmlkLCBwcnJlbGlkLCAi CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXAuaAppbmRleCA2ZGVjZWVmMjNmMy4uZTEzOGVmMTI3NmMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApA QCAtNjc2LDYgKzY3Niw3IEBAIHR5cGVkZWYgc3RydWN0IF9QdWJsaWNhdGlvbkluZm8KIAlib29s CQlwdWJ0cnVuY2F0ZTsKIAlib29sCQlwdWJ2aWFyb290OwogCVB1Ymxpc2hHZW5jb2xzVHlwZSBw dWJnZW5jb2xzX3R5cGU7CisJU2ltcGxlUHRyTGlzdCBleGNlcHRfdGFibGVzOwogfSBQdWJsaWNh dGlvbkluZm87CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVt cC5wbCBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCmluZGV4IGYxNWJkMDZhZGNj Li41ODg4OTFhNjJiZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAu cGwKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKQEAgLTMyMDIsNiArMzIw MiwzNiBAQCBteSAldGVzdHMgPSAoCiAJCWxpa2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0aW9uX3Bv c3RfZGF0YSA9PiAxLCB9LAogCX0sCiAKKwknQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjgnID0+IHsK KwkJY3JlYXRlX29yZGVyID0+IDUwLAorCQljcmVhdGVfc3FsID0+CisJCSAgJ0NSRUFURSBQVUJM SUNBVElPTiBwdWI4IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoZHVtcF90ZXN0LnRlc3Rf dGFibGUpOycsCisJCXJlZ2V4cCA9PiBxci9eCisJCQlcUUNSRUFURSBQVUJMSUNBVElPTiBwdWI4 IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoT05MWSBkdW1wX3Rlc3QudGVzdF90YWJsZSkg V0lUSCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlLCB0cnVuY2F0ZScpO1xFCisJ CQkveG0sCisJCWxpa2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9 LAorCX0sCisKKwknQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjknID0+IHsKKwkJY3JlYXRlX29yZGVy ID0+IDUwLAorCQljcmVhdGVfc3FsID0+CisJCSAgJ0NSRUFURSBQVUJMSUNBVElPTiBwdWI5IEZP UiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoZHVtcF90ZXN0LnRlc3RfdGFibGUsIGR1bXBfdGVz dC50ZXN0X3NlY29uZF90YWJsZSk7JywKKwkJcmVnZXhwID0+IHFyL14KKwkJCVxRQ1JFQVRFIFBV QkxJQ0FUSU9OIHB1YjkgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChPTkxZIGR1bXBfdGVz dC50ZXN0X3RhYmxlLCBPTkxZIGR1bXBfdGVzdC50ZXN0X3NlY29uZF90YWJsZSkgV0lUSCAocHVi bGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlLCB0cnVuY2F0ZScpO1xFCisJCQkveG0sCisJ CWxpa2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAorCX0sCisK KwknQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEwJyA9PiB7CisJCWNyZWF0ZV9vcmRlciA9PiA5MiwK KwkJY3JlYXRlX3NxbCA9PgorCQkgICdDUkVBVEUgUFVCTElDQVRJT04gcHViMTAgRk9SIEFMTCBU QUJMRVMgRVhDRVBUIFRBQkxFIChkdW1wX3Rlc3QudGVzdF9pbmhlcml0YW5jZV9wYXJlbnQpOycs CisJCXJlZ2V4cCA9PiBxci9eCisJCQlcUUNSRUFURSBQVUJMSUNBVElPTiBwdWIxMCBGT1IgQUxM IFRBQkxFUyBFWENFUFQgVEFCTEUgKE9OTFkgZHVtcF90ZXN0LnRlc3RfaW5oZXJpdGFuY2VfcGFy ZW50LCBPTkxZIGR1bXBfdGVzdC50ZXN0X2luaGVyaXRhbmNlX2NoaWxkKSBXSVRIIChwdWJsaXNo ID0gJ2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5jYXRlJyk7XEUKKwkJCS94bSwKKwkJbGlr ZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCisJfSwKKwogCSdD UkVBVEUgU1VCU0NSSVBUSU9OIHN1YjEnID0+IHsKIAkJY3JlYXRlX29yZGVyID0+IDUwLAogCQlj cmVhdGVfc3FsID0+ICdDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YjEKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKaW5kZXggYWIxM2M5 MGVkMzMuLmE2MzEwOTdlZjEwIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwor KysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtMzA3MywxNyArMzA3Myw0MiBAQCBkZXNj cmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkJCQkJCQkgICIg ICAgICAgICAgV0hFUkUgYXR0cmVsaWQgPSBwci5wcnJlbGlkIEFORCBhdHRudW0gPSBwcmF0dHJz W3NdKVxuIgogCQkJCQkJCQkgICIgICAgICAgIEVMU0UgTlVMTCBFTkQpICIKIAkJCQkJCQkJICAi RlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBcbiIKLQkJCQkJCQkJICAiICAgICBKT0lO IHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByIE9OIHAub2lkID0gcHIucHJwdWJpZFxu IgotCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19jbGFzcyBjIE9OIGMub2lkID0g cHIucHJyZWxpZFxuIgotCQkJCQkJCQkgICJXSEVSRSBwci5wcnJlbGlkID0gJyVzJ1xuIgorCQkJ CQkJCQkgICIJCUpPSU4gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHIgT04gcC5vaWQg PSBwci5wcnB1YmlkXG4iCisJCQkJCQkJCSAgIgkJSk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNzIGMg T04gYy5vaWQgPSBwci5wcnJlbGlkXG4iCisJCQkJCQkJCSAgIldIRVJFIHByLnBycmVsaWQgPSAn JXMnXG4iLAorCQkJCQkJCQkgIG9pZCwgb2lkLCBvaWQpOworCisJCQkJLyoKKwkJCQkgKiBTa2lw IGVudHJpZXMgd2hlcmUgdGhpcyByZWxhdGlvbiBhcHBlYXJzIGluIHRoZQorCQkJCSAqIHB1Ymxp Y2F0aW9uJ3MgRVhDRVBUIFRBQkxFIGxpc3QuCisJCQkJICovCisJCQkJaWYgKHBzZXQuc3ZlcnNp b24gPj0gMTkwMDAwKQorCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiIEFORCBOT1Qg cHIucHJleGNlcHRcbiIpOworCisJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkJ ICAiVU5JT05cbiIKIAkJCQkJCQkJICAiU0VMRUNUIHB1Ym5hbWVcbiIKLQkJCQkJCQkJICAiICAg ICAsIE5VTExcbiIKLQkJCQkJCQkJICAiICAgICAsIE5VTExcbiIKKwkJCQkJCQkJICAiCQksIE5V TExcbiIKKwkJCQkJCQkJICAiCQksIE5VTExcbiIKIAkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9n LnBnX3B1YmxpY2F0aW9uIHBcbiIKLQkJCQkJCQkJICAiV0hFUkUgcC5wdWJhbGx0YWJsZXMgQU5E IHBnX2NhdGFsb2cucGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUoJyVzJylcbiIKLQkJCQkJCQkJ ICAiT1JERVIgQlkgMTsiLAotCQkJCQkJCQkgIG9pZCwgb2lkLCBvaWQsIG9pZCk7CisJCQkJCQkJ CSAgIldIRVJFIHAucHViYWxsdGFibGVzIEFORCBwZ19jYXRhbG9nLnBnX3JlbGF0aW9uX2lzX3B1 Ymxpc2hhYmxlKCclcycpXG4iLAorCQkJCQkJCQkgIG9pZCk7CisKKwkJCQkvKgorCQkJCSAqIEZv ciBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbnMsIHNraXAgcHVibGljYXRpb25zIHRoYXQKKwkJ CQkgKiBleHBsaWNpdGx5IGV4Y2x1ZGUgdGhpcyByZWxhdGlvbiB2aWEgRVhDRVBUIFRBQkxFLgor CQkJCSAqLworCQkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE5MDAwMCkKKwkJCQkJYXBwZW5kUFFF eHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkJCSAgIiAgICAgQU5EIE5PVCBFWElTVFMgKFxuIgorCQkJ CQkJCQkJICAiCQlTRUxFQ1QgMVxuIgorCQkJCQkJCQkJICAiCQlGUk9NIHBnX2NhdGFsb2cucGdf cHVibGljYXRpb25fcmVsIHByXG4iCisJCQkJCQkJCQkgICIJCUpPSU4gcGdfY2F0YWxvZy5wZ19j bGFzcyBwY1xuIgorCQkJCQkJCQkJICAiCQlPTiBwci5wcnJlbGlkID0gcGMub2lkXG4iCisJCQkJ CQkJCQkgICIJCVdIRVJFIHByLnBycmVsaWQgPSAnJXMnIEFORCBwci5wcnB1YmlkID0gcC5vaWQp XG4iLAorCQkJCQkJCQkJICBvaWQpOworCisJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1Ziwg Ik9SREVSIEJZIDE7Iik7CiAJCQl9CiAJCQllbHNlCiAJCQl7CkBAIC0zMTM0LDYgKzMxNTksMzUg QEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJCVBR Y2xlYXIocmVzdWx0KTsKIAkJfQogCisJCS8qIFByaW50IHB1YmxpY2F0aW9ucyB3aGVyZSB0aGUg dGFibGUgaXMgaW4gdGhlIEVYQ0VQVCBjbGF1c2UgKi8KKwkJaWYgKHBzZXQuc3ZlcnNpb24gPj0g MTkwMDAwKQorCQl7CisJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJCSAgIlNFTEVD VCBwdWJuYW1lXG4iCisJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBc biIKKwkJCQkJCQkgICJKT0lOIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByIE9OIHAu b2lkID0gcHIucHJwdWJpZFxuIgorCQkJCQkJCSAgIldIRVJFIHByLnBycmVsaWQgPSAnJXMnIEFO RCBwci5wcmV4Y2VwdFxuIgorCQkJCQkJCSAgIk9SREVSIEJZIDE7Iiwgb2lkKTsKKworCQkJcmVz dWx0ID0gUFNRTGV4ZWMoYnVmLmRhdGEpOworCQkJaWYgKCFyZXN1bHQpCisJCQkJZ290byBlcnJv cl9yZXR1cm47CisJCQllbHNlCisJCQkJdHVwbGVzID0gUFFudHVwbGVzKHJlc3VsdCk7CisKKwkJ CWlmICh0dXBsZXMgPiAwKQorCQkJCXByaW50VGFibGVBZGRGb290ZXIoJmNvbnQsIF8oIkV4Y2Vw dCBQdWJsaWNhdGlvbnM6IikpOworCisJCQkvKiBNaWdodCBiZSBhbiBlbXB0eSBzZXQgLSB0aGF0 J3Mgb2sgKi8KKwkJCWZvciAoaSA9IDA7IGkgPCB0dXBsZXM7IGkrKykKKwkJCXsKKwkJCQlwcmlu dGZQUUV4cEJ1ZmZlcigmYnVmLCAiICAgIFwiJXNcIiIsIFBRZ2V0dmFsdWUocmVzdWx0LCBpLCAw KSk7CisKKwkJCQlwcmludFRhYmxlQWRkRm9vdGVyKCZjb250LCBidWYuZGF0YSk7CisJCQl9CisJ CQlQUWNsZWFyKHJlc3VsdCk7CisJCX0KKwogCQkvKgogCQkgKiBJZiB2ZXJib3NlLCBwcmludCBO T1QgTlVMTCBjb25zdHJhaW50cy4KIAkJICovCkBAIC02NzYzLDggKzY4MTcsMTIgQEAgZGVzY3Jp YmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAkJCQkJCQkgICIgICAgIHBnX2Nh dGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByXG4iCiAJCQkJCQkJICAiV0hFUkUgYy5yZWxuYW1l c3BhY2UgPSBuLm9pZFxuIgogCQkJCQkJCSAgIiAgQU5EIGMub2lkID0gcHIucHJyZWxpZFxuIgot CQkJCQkJCSAgIiAgQU5EIHByLnBycHViaWQgPSAnJXMnXG4iCi0JCQkJCQkJICAiT1JERVIgQlkg MSwyIiwgcHViaWQpOworCQkJCQkJCSAgIiAgQU5EIHByLnBycHViaWQgPSAnJXMnXG4iLCBwdWJp ZCk7CisKKwkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE5MDAwMCkKKwkJCQlhcHBlbmRQUUV4cEJ1 ZmZlcigmYnVmLCAiICBBTkQgTk9UIHByLnByZXhjZXB0XG4iKTsKKworCQkJYXBwZW5kUFFFeHBC dWZmZXIoJmJ1ZiwgIk9SREVSIEJZIDEsMiIpOwogCQkJaWYgKCFhZGRGb290ZXJUb1B1YmxpY2F0 aW9uRGVzYygmYnVmLCBfKCJUYWJsZXM6IiksIGZhbHNlLCAmY29udCkpCiAJCQkJZ290byBlcnJv cl9yZXR1cm47CiAKQEAgLTY3ODIsNiArNjg0MCwyMyBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhj b25zdCBjaGFyICpwYXR0ZXJuKQogCQkJCQlnb3RvIGVycm9yX3JldHVybjsKIAkJCX0KIAkJfQor CQllbHNlCisJCXsKKwkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE5MDAwMCkKKwkJCXsKKwkJCQkv KiBHZXQgdGFibGVzIGluIHRoZSBFWENFUFQgY2xhdXNlIGZvciB0aGlzIHB1YmxpY2F0aW9uICov CisJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkJICAiU0VMRUNUIG4ubnNwbmFt ZSB8fCAnLicgfHwgYy5yZWxuYW1lXG4iCisJCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19j bGFzcyBjXG4iCisJCQkJCQkJCSAgIiAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX25hbWVzcGFjZSBu IE9OIG4ub2lkID0gYy5yZWxuYW1lc3BhY2VcbiIKKwkJCQkJCQkJICAiICAgICBKT0lOIHBnX2Nh dGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByIE9OIGMub2lkID0gcHIucHJyZWxpZFxuIgorCQkJ CQkJCQkgICJXSEVSRSBwci5wcnB1YmlkID0gJyVzJyBBTkQgcHIucHJleGNlcHRcbiIKKwkJCQkJ CQkJICAiT1JERVIgQlkgMSIsIHB1YmlkKTsKKwkJCQlpZiAoIWFkZEZvb3RlclRvUHVibGljYXRp b25EZXNjKCZidWYsIF8oIkV4Y2VwdCB0YWJsZXM6IiksCisJCQkJCQkJCQkJCQl0cnVlLCAmY29u dCkpCisJCQkJCWdvdG8gZXJyb3JfcmV0dXJuOworCQkJfQorCQl9CiAKIAkJcHJpbnRUYWJsZSgm Y29udCwgcHNldC5xdWVyeUZvdXQsIGZhbHNlLCBwc2V0LmxvZ2ZpbGUpOwogCQlwcmludFRhYmxl Q2xlYW51cCgmY29udCk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmlu LmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXggNDM0NTFmY2UxYzMuLjE4 NWZkMTM2ZmQ0IDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKKysr IGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBAIC0zNjY5LDcgKzM2NjksMTcgQEAg bWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAJZWxzZSBpZiAoTWF0Y2hlcygi Q1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIikpCiAJCUNPTVBM RVRFX1dJVEgoIlRBQkxFUyIsICJTRVFVRU5DRVMiKTsKIAllbHNlIGlmIChNYXRjaGVzKCJDUkVB VEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJBTEwiLCAiVEFCTEVTIikpCi0J CUNPTVBMRVRFX1dJVEgoIldJVEggKCIpOworCQlDT01QTEVURV9XSVRIKCJFWENFUFQgVEFCTEUg KCIsICJXSVRIICgiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04i LCBNYXRjaEFueSwgIkZPUiIsICJBTEwiLCAiVEFCTEVTIiwgIkVYQ0VQVCIpKQorCQlDT01QTEVU RV9XSVRIKCJUQUJMRSAoIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FU SU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlRBQkxFUyIsICJFWENFUFQiLCAiVEFCTEUi KSkKKwkJQ09NUExFVEVfV0lUSCgiKCIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQ VUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIsICJUQUJMRVMiLCAiRVhDRVBUIiwg IlRBQkxFIiwgIigiKSkKKwkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xp c3Rfb2ZfdGFibGVzKTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04i LCBNYXRjaEFueSwgIkZPUiIsICJBTEwiLCAiVEFCTEVTIiwgIkVYQ0VQVCIsICJUQUJMRSIsICIo IiwgTWF0Y2hBbnlOKSAmJiBlbmRzX3dpdGgocHJldl93ZCwgJywnKSkKKwkJQ09NUExFVEVfV0lU SF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdGFibGVzKTsKKwllbHNlIGlmIChNYXRj aGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJBTEwiLCAiVEFC TEVTIiwgIkVYQ0VQVCIsICJUQUJMRSIsICIoIiwgTWF0Y2hBbnlOKSAmJiAhZW5kc193aXRoKHBy ZXZfd2QsICcsJykpCisJCUNPTVBMRVRFX1dJVEgoIikiKTsKIAllbHNlIGlmIChNYXRjaGVzKCJD UkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJUQUJMRVMiKSkKIAkJQ09N UExFVEVfV0lUSCgiSU4gU0NIRU1BIik7CiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBV QkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEUiLCBNYXRjaEFueSkgJiYgIWVuZHNf d2l0aChwcmV2X3dkLCAnLCcpKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w dWJsaWNhdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCmluZGV4 IDZlNWY3M2NhYTllLi5lMjUyMjg3MTNlNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wdWJsaWNhdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRp b24uaApAQCAtMTUwLDE2ICsxNTAsMTkgQEAgdHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25SZWxJ bmZvCiAJUmVsYXRpb24JcmVsYXRpb247CiAJTm9kZQkgICAqd2hlcmVDbGF1c2U7CiAJTGlzdAkg ICAqY29sdW1uczsKKwlib29sCQlleGNlcHQ7CiB9IFB1YmxpY2F0aW9uUmVsSW5mbzsKIAogZXh0 ZXJuIFB1YmxpY2F0aW9uICpHZXRQdWJsaWNhdGlvbihPaWQgcHViaWQpOwogZXh0ZXJuIFB1Ymxp Y2F0aW9uICpHZXRQdWJsaWNhdGlvbkJ5TmFtZShjb25zdCBjaGFyICpwdWJuYW1lLCBib29sIG1p c3Npbmdfb2spOwotZXh0ZXJuIExpc3QgKkdldFJlbGF0aW9uUHVibGljYXRpb25zKE9pZCByZWxp ZCk7CitleHRlcm4gTGlzdCAqR2V0UmVsYXRpb25JbmNsdWRlZFB1YmxpY2F0aW9ucyhPaWQgcmVs aWQpOworZXh0ZXJuIExpc3QgKkdldFJlbGF0aW9uRXhjbHVkZWRQdWJsaWNhdGlvbnMoT2lkIHJl bGlkKTsKIAogLyotLS0tLS0tLS0KLSAqIEV4cGVjdGVkIHZhbHVlcyBmb3IgcHViX3BhcnRvcHQg cGFyYW1ldGVyIG9mIEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKCksCi0gKiB3aGljaCBhbGxvd3Mg Y2FsbGVycyB0byBzcGVjaWZ5IHdoaWNoIHBhcnRpdGlvbnMgb2YgcGFydGl0aW9uZWQgdGFibGVz Ci0gKiBtZW50aW9uZWQgaW4gdGhlIHB1YmxpY2F0aW9uIHRoZXkgZXhwZWN0IHRvIHNlZS4KKyAq IEV4cGVjdGVkIHZhbHVlcyBmb3IgcHViX3BhcnRvcHQgcGFyYW1ldGVyIG9mCisgKiBHZXRJbmNs dWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKCksIHdoaWNoIGFsbG93cyBjYWxsZXJzIHRvIHNwZWNp Znkgd2hpY2gKKyAqIHBhcnRpdGlvbnMgb2YgcGFydGl0aW9uZWQgdGFibGVzIG1lbnRpb25lZCBp biB0aGUgcHVibGljYXRpb24gdGhleSBleHBlY3QgdG8KKyAqIHNlZS4KICAqCiAgKglST09UOglv bmx5IHRoZSB0YWJsZSBleHBsaWNpdGx5IG1lbnRpb25lZCBpbiB0aGUgcHVibGljYXRpb24KICAq CUxFQUY6CW9ubHkgbGVhZiBwYXJ0aXRpb25zIGluIGdpdmVuIHRyZWUKQEAgLTE3Miw5ICsxNzUs MTIgQEAgdHlwZWRlZiBlbnVtIFB1YmxpY2F0aW9uUGFydE9wdAogCVBVQkxJQ0FUSU9OX1BBUlRf QUxMLAogfSBQdWJsaWNhdGlvblBhcnRPcHQ7CiAKLWV4dGVybiBMaXN0ICpHZXRQdWJsaWNhdGlv blJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCk7Citl eHRlcm4gTGlzdCAqR2V0SW5jbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsCisJ CQkJCQkJCQkJCSBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpOworZXh0ZXJuIExpc3Qg KkdldEV4Y2x1ZGVkUHVibGljYXRpb25UYWJsZXMoT2lkIHB1YmlkLAorCQkJCQkJCQkJCSAgUHVi bGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KTsKIGV4dGVybiBMaXN0ICpHZXRBbGxUYWJsZXNQ dWJsaWNhdGlvbnModm9pZCk7Ci1leHRlcm4gTGlzdCAqR2V0QWxsUHVibGljYXRpb25SZWxhdGlv bnMoY2hhciByZWxraW5kLCBib29sIHB1YnZpYXJvb3QpOworZXh0ZXJuIExpc3QgKkdldEFsbFB1 YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgY2hhciByZWxraW5kLCBib29sIHB1YnZpYXJv b3QpOwogZXh0ZXJuIExpc3QgKkdldFB1YmxpY2F0aW9uU2NoZW1hcyhPaWQgcHViaWQpOwogZXh0 ZXJuIExpc3QgKkdldFNjaGVtYVB1YmxpY2F0aW9ucyhPaWQgc2NoZW1haWQpOwogZXh0ZXJuIExp c3QgKkdldFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBzY2hlbWFpZCwKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25fcmVsLmggYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oCmluZGV4IDYzZWI3Yzc1ZjUzLi5jZWZjMzhj OWVkOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwu aAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oCkBAIC0zMyw2 ICszMyw3IEBAIENBVEFMT0cocGdfcHVibGljYXRpb25fcmVsLDYxMDYsUHVibGljYXRpb25SZWxS ZWxhdGlvbklkKQogCU9pZAkJCW9pZDsJCQkvKiBvaWQgKi8KIAlPaWQJCQlwcnB1YmlkIEJLSV9M T09LVVAocGdfcHVibGljYXRpb24pOyAvKiBPaWQgb2YgdGhlIHB1YmxpY2F0aW9uICovCiAJT2lk CQkJcHJyZWxpZCBCS0lfTE9PS1VQKHBnX2NsYXNzKTsJLyogT2lkIG9mIHRoZSByZWxhdGlvbiAq LworCWJvb2wJCXByZXhjZXB0IEJLSV9ERUZBVUxUKGYpOwkvKiByZWxhdGlvbiBpcyBub3QgcHVi bGlzaGVkICovCiAKICNpZmRlZglDQVRBTE9HX1ZBUkxFTgkJCS8qIHZhcmlhYmxlLWxlbmd0aCBm aWVsZHMgc3RhcnQgaGVyZSAqLwogCXBnX25vZGVfdHJlZSBwcnF1YWw7CQkvKiBxdWFsaWZpY2F0 aW9ucyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IGYzNzEzMTgzNWJlLi5mZjQxOTQzYTZk YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9p bmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtNDI5OSw5ICs0Mjk5LDEwIEBAIHR5cGVkZWYg c3RydWN0IEFsdGVyVFNDb25maWd1cmF0aW9uU3RtdAogdHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRp b25UYWJsZQogewogCU5vZGVUYWcJCXR5cGU7Ci0JUmFuZ2VWYXIgICAqcmVsYXRpb247CQkvKiBy ZWxhdGlvbiB0byBiZSBwdWJsaXNoZWQgKi8KKwlSYW5nZVZhciAgICpyZWxhdGlvbjsJCS8qIHB1 YmxpY2F0aW9uIHJlbGF0aW9uICovCiAJTm9kZQkgICAqd2hlcmVDbGF1c2U7CS8qIHF1YWxpZmlj YXRpb25zICovCiAJTGlzdAkgICAqY29sdW1uczsJCS8qIExpc3Qgb2YgY29sdW1ucyBpbiBhIHB1 YmxpY2F0aW9uIHRhYmxlICovCisJYm9vbAkJZXhjZXB0OwkJCS8qIFRydWUgaWYgbGlzdGVkIGlu IHRoZSBFWENFUFQgY2xhdXNlICovCiB9IFB1YmxpY2F0aW9uVGFibGU7CiAKIC8qCkBAIC00MzEw LDYgKzQzMTEsNyBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvblRhYmxlCiB0eXBlZGVmIGVu dW0gUHVibGljYXRpb25PYmpTcGVjVHlwZQogewogCVBVQkxJQ0FUSU9OT0JKX1RBQkxFLAkJLyog QSB0YWJsZSAqLworCVBVQkxJQ0FUSU9OT0JKX0VYQ0VQVF9UQUJMRSwJLyogQSB0YWJsZSBpbiB0 aGUgRVhDRVBUIGNsYXVzZSAqLwogCVBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9TQ0hFTUEsCS8q IEFsbCB0YWJsZXMgaW4gc2NoZW1hICovCiAJUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX0NVUl9T Q0hFTUEsCS8qIEFsbCB0YWJsZXMgaW4gZmlyc3QgZWxlbWVudCBvZgogCQkJCQkJCQkJCQkgKiBz ZWFyY2hfcGF0aCAqLwpAQCAtNDMzOCw2ICs0MzQwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUHVibGlj YXRpb25BbGxPYmpTcGVjCiB7CiAJTm9kZVRhZwkJdHlwZTsKIAlQdWJsaWNhdGlvbkFsbE9ialR5 cGUgcHVib2JqdHlwZTsJLyogdHlwZSBvZiB0aGlzIHB1YmxpY2F0aW9uIG9iamVjdCAqLworCUxp c3QJICAgKmV4Y2VwdF90YWJsZXM7CS8qIHRhYmxlcyBzcGVjaWZpZWQgaW4gdGhlIEVYQ0VQVCBj bGF1c2UgKi8KIAlQYXJzZUxvYwlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBp ZiB1bmtub3duICovCiB9IFB1YmxpY2F0aW9uQWxsT2JqU3BlYzsKIApkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAppbmRleCAxMDVkMTVhZTQ1Zi4uY2QwMDg1MDEwZDUg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0Cisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CkBAIC0yMTMsMzMg KzIxMywxMzkgQEAgTm90LW51bGwgY29uc3RyYWludHM6CiAgcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYg ICAgICAgfCBmICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCiAoMSBy b3cpCiAKLURST1AgVEFCTEUgdGVzdHB1Yl90YmwyOwotRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHVi X2ZvcmFsbHRhYmxlcywgdGVzdHB1Yl9mb3J0YWJsZSwgdGVzdHB1Yl9mb3JzY2hlbWEsIHRlc3Rw dWJfZm9yX3RibF9zY2hlbWE7Ci1DUkVBVEUgVEFCTEUgdGVzdHB1Yl90YmwzIChhIGludCk7Ci1D UkVBVEUgVEFCTEUgdGVzdHB1Yl90YmwzYSAoYiB0ZXh0KSBJTkhFUklUUyAodGVzdHB1Yl90Ymwz KTsKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gRVhD RVBUIFRBQkxFIHRlc3RzIGZvciBub3JtYWwgdGFibGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9S JzsKLUNSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViMyBGT1IgVEFCTEUgdGVzdHB1Yl90YmwzOwot Q1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI0IEZPUiBUQUJMRSBPTkxZIHRlc3RwdWJfdGJsMzsK Ky0tIFNwZWNpZnkgdGFibGUgbGlzdCBpbiB0aGUgRVhDRVBUIGNsYXVzZSBvZiBhIEZPUiBBTEwg VEFCTEVTIHB1YmxpY2F0aW9uLgorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFi bGVzX2V4Y2VwdHRhYmxlIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodGVzdHB1Yl90Ymwx LCB0ZXN0cHViX3RibDIpOworXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZQorICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMg fCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCB8IERl c2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IHQgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmICAgICAgICB8 IAorRXhjZXB0IHRhYmxlczoKKyAgICAicHVibGljLnRlc3RwdWJfdGJsMSIKKyAgICAicHVibGlj LnRlc3RwdWJfdGJsMiIKKworLS0gU3BlY2lmeSB0YWJsZSBpbiB0aGUgRVhDRVBUIGNsYXVzZSBv ZiBhIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9uCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1 Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAo dGVzdHB1Yl90YmwxKTsKK1xkUnArIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlMQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxCisgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVz Y3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYgICAgICAgIHwg CitFeGNlcHQgdGFibGVzOgorICAgICJwdWJsaWMudGVzdHB1Yl90YmwxIgorCistLSBDaGVjayB0 aGF0IHRoZSB0YWJsZSBkZXNjcmlwdGlvbiBzaG93cyB0aGUgcHVibGljYXRpb25zIHdoZXJlIGl0 IGlzIGxpc3RlZAorLS0gaW4gdGhlIEVYQ0VQVCBjbGF1c2UKK1xkIHRlc3RwdWJfdGJsMQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMudGVzdHB1Yl90YmwxIgorIENv bHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8ICAgICAgICAgICAgICAgICBE ZWZhdWx0ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBp ZCAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51bGwgfCBuZXh0dmFsKCd0ZXN0cHVi X3RibDFfaWRfc2VxJzo6cmVnY2xhc3MpCisgZGF0YSAgIHwgdGV4dCAgICB8ICAgICAgICAgICB8 ICAgICAgICAgIHwgCitJbmRleGVzOgorICAgICJ0ZXN0cHViX3RibDFfcGtleSIgUFJJTUFSWSBL RVksIGJ0cmVlIChpZCkKK1B1YmxpY2F0aW9uczoKKyAgICAidGVzdHB1Yl9mb3JhbGx0YWJsZXMi CitFeGNlcHQgUHVibGljYXRpb25zOgorICAgICJ0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0 YWJsZSIKKyAgICAidGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxIgorCiBSRVNFVCBj bGllbnRfbWluX21lc3NhZ2VzOworRFJPUCBUQUJMRSB0ZXN0cHViX3RibDI7CitEUk9QIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzLCB0ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHViX2Zv cnNjaGVtYSwgdGVzdHB1Yl9mb3JfdGJsX3NjaGVtYSwgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhj ZXB0dGFibGUsIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlMTsKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gVGVzdHMgZm9yIGluaGVyaXRl ZCB0YWJsZXMsIGFuZAorLS0gRVhDRVBUIFRBQkxFIHRlc3RzIGZvciBpbmhlcml0ZWQgdGFibGVz CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1NFVCBjbGll bnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBUQUJMRSB0ZXN0cHViX3RibF9wYXJl bnQgKGEgaW50KTsKK0NSRUFURSBUQUJMRSB0ZXN0cHViX3RibF9jaGlsZCAoYiB0ZXh0KSBJTkhF UklUUyAodGVzdHB1Yl90YmxfcGFyZW50KTsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViMyBG T1IgVEFCTEUgdGVzdHB1Yl90YmxfcGFyZW50OwogXGRScCsgdGVzdHB1YjMKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViMwogICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBB bGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg R2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCB8IERlc2NyaXB0aW9uIAogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLQogIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAg IHwgbm9uZSAgICAgICAgICAgICAgfCBmICAgICAgICB8IAogVGFibGVzOgotICAgICJwdWJsaWMu dGVzdHB1Yl90YmwzIgotICAgICJwdWJsaWMudGVzdHB1Yl90YmwzYSIKKyAgICAicHVibGljLnRl c3RwdWJfdGJsX2NoaWxkIgorICAgICJwdWJsaWMudGVzdHB1Yl90YmxfcGFyZW50IgogCitDUkVB VEUgUFVCTElDQVRJT04gdGVzdHB1YjQgRk9SIFRBQkxFIE9OTFkgdGVzdHB1Yl90YmxfcGFyZW50 OwogXGRScCsgdGVzdHB1YjQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNAogICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9v dCB8IERlc2NyaXB0aW9uIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQogIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmICAg ICAgICB8IAogVGFibGVzOgotICAgICJwdWJsaWMudGVzdHB1Yl90YmwzIgorICAgICJwdWJsaWMu dGVzdHB1Yl90YmxfcGFyZW50IgorCistLSBMaXN0IHRoZSBwYXJlbnQgdGFibGUgaW4gdGhlIEVY Q0VQVCBjbGF1c2UgKHdpdGhvdXQgT05MWSBvciAnKicpCitDUkVBVEUgUFVCTElDQVRJT04gdGVz dHB1YjUgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0ZXN0cHViX3RibF9wYXJlbnQpOwor XGRScCsgdGVzdHB1YjUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNQorICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0 ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCB8 IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmICAgICAg ICB8IAorRXhjZXB0IHRhYmxlczoKKyAgICAicHVibGljLnRlc3RwdWJfdGJsX2NoaWxkIgorICAg ICJwdWJsaWMudGVzdHB1Yl90YmxfcGFyZW50IgorCistLSBFWENFUFQgd2l0aCAnKic6IGxpc3Qg dGhlIHRhYmxlIGFuZCBhbGwgaXRzIGRlc2NlbmRhbnRzIGluIHRoZSBFWENFUFQgY2xhdXNlCitD UkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjYgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0 ZXN0cHViX3RibF9wYXJlbnQgKik7CitcZFJwKyB0ZXN0cHViNgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRl c3RwdWI2CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1 ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0 ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IGYgICAg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25l ICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCitFeGNlcHQgdGFibGVzOgorICAgICJwdWJsaWMu dGVzdHB1Yl90YmxfY2hpbGQiCisgICAgInB1YmxpYy50ZXN0cHViX3RibF9wYXJlbnQiCisKKy0t IEVYQ0VQVCB3aXRoIE9OTFk6IGxpc3QgdGhlIHRhYmxlIGluIHRoZSBFWENFUFQgY2xhdXNlLCBi dXQgbm90IGl0cyBkZXNjZW5kYW50cworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI3IEZPUiBB TEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoT05MWSB0ZXN0cHViX3RibF9wYXJlbnQpOworXGRScCsg dGVzdHB1YjcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNworICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCB8IERlc2Ny aXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IHQgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmICAgICAgICB8IAor RXhjZXB0IHRhYmxlczoKKyAgICAicHVibGljLnRlc3RwdWJfdGJsX3BhcmVudCIKIAotRFJPUCBU QUJMRSB0ZXN0cHViX3RibDMsIHRlc3RwdWJfdGJsM2E7Ci1EUk9QIFBVQkxJQ0FUSU9OIHRlc3Rw dWIzLCB0ZXN0cHViNDsKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitEUk9QIFRBQkxFIHRl c3RwdWJfdGJsX3BhcmVudCwgdGVzdHB1Yl90YmxfY2hpbGQ7CitEUk9QIFBVQkxJQ0FUSU9OIHRl c3RwdWIzLCB0ZXN0cHViNCwgdGVzdHB1YjUsIHRlc3RwdWI2LCB0ZXN0cHViNzsKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gRVhDRVBUIFRBQkxFIHRl c3RzIGZvciBwYXJ0aXRpb25lZCB0YWJsZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JF QVRFIFRBQkxFIHRlc3RwdWJfcm9vdChhIGludCkgUEFSVElUSU9OIEJZIFJBTkdFKGEpOworQ1JF QVRFIFRBQkxFIHRlc3RwdWJfcGFydDEgUEFSVElUSU9OIE9GIHRlc3RwdWJfcm9vdCBGT1IgVkFM VUVTIEZST00gKDApIFRPICgxMDApOworQ1JFQVRFIFRBQkxFIHRlc3RwdWJfcGFydDIgUEFSVElU SU9OIE9GIHRlc3RwdWJfcm9vdCBGT1IgVkFMVUVTIEZST00gKDEwMCkgVE8gKDIwMCk7CitDUkVB VEUgUFVCTElDQVRJT04gdGVzdHB1YjggRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0ZXN0 cHViX3Jvb3QpOworXGRScCsgdGVzdHB1Yjg7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjgKKyAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5z IHwgVmlhIHJvb3QgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0K KyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgZiAgICAgICAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAg ICAgIHwgZiAgICAgICAgfCAKK0V4Y2VwdCB0YWJsZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3Jv b3QiCisKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViOSBGT1IgQUxMIFRBQkxFUyBFWENFUFQg VEFCTEUgKHRlc3RwdWJfcGFydDEpOworRVJST1I6ICBjYW5ub3QgdXNlIHB1YmxpY2F0aW9uIEVY Q0VQVCBjbGF1c2UgZm9yIHJlbGF0aW9uICJ0ZXN0cHViX3BhcnQxIgorREVUQUlMOiAgVGhpcyBv cGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgaW5kaXZpZHVhbCBwYXJ0aXRpb25zLgorQ1JF QVRFIFRBQkxFIHRhYl9tYWluIChhIGludCkgUEFSVElUSU9OIEJZIFJBTkdFKGEpOworLS0gQXR0 YWNoaW5nIGEgcGFydGl0aW9uIGlzIG5vdCBhbGxvd2VkIGlmIHRoZSBwYXJ0aXRpb25lZCB0YWJs ZSBhcHBlYXJzIGluIGEKKy0tIHB1YmxpY2F0aW9uJ3MgRVhDRVBUIGNsYXVzZS4KK0FMVEVSIFRB QkxFIHRhYl9tYWluIEFUVEFDSCBQQVJUSVRJT04gdGVzdHB1Yl9yb290IEZPUiBWQUxVRVMgRlJP TSAoMCkgVE8gKDIwMCk7CitFUlJPUjogIGNhbm5vdCBhdHRhY2ggdGFibGUgInRlc3RwdWJfcm9v dCIgYXMgcGFydGl0aW9uIGJlY2F1c2UgaXQgaXMgcmVmZXJlbmNlZCBpbiBwdWJsaWNhdGlvbiAi dGVzdHB1YjgiIEVYQ0VQVCBjbGF1c2UKK0RFVEFJTDogIFRoZSBwdWJsaWNhdGlvbiBFWENFUFQg Y2xhdXNlIGNhbm5vdCBjb250YWluIHRhYmxlcyB0aGF0IGFyZSBwYXJ0aXRpb25zLgorUkVTRVQg Y2xpZW50X21pbl9tZXNzYWdlczsKK0RST1AgVEFCTEUgdGVzdHB1Yl9yb290LCB0ZXN0cHViX3Bh cnQxLCB0ZXN0cHViX3BhcnQyLCB0YWJfbWFpbjsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yjg7 CiAtLS0gVGVzdHMgZm9yIHB1YmxpY2F0aW9ucyB3aXRoIFNFUVVFTkNFUwogQ1JFQVRFIFNFUVVF TkNFIHJlZ3Jlc3NfcHViX3NlcTA7CiBDUkVBVEUgU0VRVUVOQ0UgcHViX3Rlc3QucmVncmVzc19w dWJfc2VxMTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNx bCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAppbmRleCA4NWIwMGJkNjdj OC4uNTFlM2JjN2MzOWUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0 aW9uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKQEAgLTEw NSwyMCArMTA1LDY4IEBAIFNFTEVDVCBwdWJuYW1lLCBwdWJhbGx0YWJsZXMgRlJPTSBwZ19wdWJs aWNhdGlvbiBXSEVSRSBwdWJuYW1lID0gJ3Rlc3RwdWJfZm9yYWxsCiBcZCsgdGVzdHB1Yl90Ymwy CiBcZFJwKyB0ZXN0cHViX2ZvcmFsbHRhYmxlcwogCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIEVYQ0VQVCBUQUJMRSB0ZXN0cyBmb3Igbm9ybWFsIHRh YmxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitTRVQg Y2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CistLSBTcGVjaWZ5IHRhYmxlIGxpc3QgaW4g dGhlIEVYQ0VQVCBjbGF1c2Ugb2YgYSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbi4KK0NSRUFU RSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZSBGT1IgQUxMIFRB QkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfdGJsMSwgdGVzdHB1Yl90YmwyKTsKK1xkUnArIHRl c3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlCistLSBTcGVjaWZ5IHRhYmxlIGluIHRoZSBF WENFUFQgY2xhdXNlIG9mIGEgRk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb24KK0NSRUFURSBQVUJM SUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTEgRk9SIEFMTCBUQUJMRVMg RVhDRVBUIFRBQkxFICh0ZXN0cHViX3RibDEpOworXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXNf ZXhjZXB0dGFibGUxCistLSBDaGVjayB0aGF0IHRoZSB0YWJsZSBkZXNjcmlwdGlvbiBzaG93cyB0 aGUgcHVibGljYXRpb25zIHdoZXJlIGl0IGlzIGxpc3RlZAorLS0gaW4gdGhlIEVYQ0VQVCBjbGF1 c2UKK1xkIHRlc3RwdWJfdGJsMQorCitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogRFJPUCBU QUJMRSB0ZXN0cHViX3RibDI7Ci1EUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVz LCB0ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHViX2ZvcnNjaGVtYSwgdGVzdHB1Yl9mb3JfdGJsX3Nj aGVtYTsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMsIHRlc3RwdWJfZm9y dGFibGUsIHRlc3RwdWJfZm9yc2NoZW1hLCB0ZXN0cHViX2Zvcl90Ymxfc2NoZW1hLCB0ZXN0cHVi X2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZSwgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFi bGUxOwogCi1DUkVBVEUgVEFCTEUgdGVzdHB1Yl90YmwzIChhIGludCk7Ci1DUkVBVEUgVEFCTEUg dGVzdHB1Yl90YmwzYSAoYiB0ZXh0KSBJTkhFUklUUyAodGVzdHB1Yl90YmwzKTsKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gVGVzdHMgZm9yIGluaGVy aXRlZCB0YWJsZXMsIGFuZAorLS0gRVhDRVBUIFRBQkxFIHRlc3RzIGZvciBpbmhlcml0ZWQgdGFi bGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFNFVCBj bGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKLUNSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHVi MyBGT1IgVEFCTEUgdGVzdHB1Yl90YmwzOwotQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI0IEZP UiBUQUJMRSBPTkxZIHRlc3RwdWJfdGJsMzsKLVJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitD UkVBVEUgVEFCTEUgdGVzdHB1Yl90YmxfcGFyZW50IChhIGludCk7CitDUkVBVEUgVEFCTEUgdGVz dHB1Yl90YmxfY2hpbGQgKGIgdGV4dCkgSU5IRVJJVFMgKHRlc3RwdWJfdGJsX3BhcmVudCk7CitD UkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjMgRk9SIFRBQkxFIHRlc3RwdWJfdGJsX3BhcmVudDsK IFxkUnArIHRlc3RwdWIzCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjQgRk9SIFRBQkxFIE9O TFkgdGVzdHB1Yl90YmxfcGFyZW50OwogXGRScCsgdGVzdHB1YjQKKy0tIExpc3QgdGhlIHBhcmVu dCB0YWJsZSBpbiB0aGUgRVhDRVBUIGNsYXVzZSAod2l0aG91dCBPTkxZIG9yICcqJykKK0NSRUFU RSBQVUJMSUNBVElPTiB0ZXN0cHViNSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3Rw dWJfdGJsX3BhcmVudCk7CitcZFJwKyB0ZXN0cHViNQorLS0gRVhDRVBUIHdpdGggJyonOiBsaXN0 IHRoZSB0YWJsZSBhbmQgYWxsIGl0cyBkZXNjZW5kYW50cyBpbiB0aGUgRVhDRVBUIGNsYXVzZQor Q1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAo dGVzdHB1Yl90YmxfcGFyZW50ICopOworXGRScCsgdGVzdHB1YjYKKy0tIEVYQ0VQVCB3aXRoIE9O TFk6IGxpc3QgdGhlIHRhYmxlIGluIHRoZSBFWENFUFQgY2xhdXNlLCBidXQgbm90IGl0cyBkZXNj ZW5kYW50cworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI3IEZPUiBBTEwgVEFCTEVTIEVYQ0VQ VCBUQUJMRSAoT05MWSB0ZXN0cHViX3RibF9wYXJlbnQpOworXGRScCsgdGVzdHB1YjcKIAotRFJP UCBUQUJMRSB0ZXN0cHViX3RibDMsIHRlc3RwdWJfdGJsM2E7Ci1EUk9QIFBVQkxJQ0FUSU9OIHRl c3RwdWIzLCB0ZXN0cHViNDsKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitEUk9QIFRBQkxF IHRlc3RwdWJfdGJsX3BhcmVudCwgdGVzdHB1Yl90YmxfY2hpbGQ7CitEUk9QIFBVQkxJQ0FUSU9O IHRlc3RwdWIzLCB0ZXN0cHViNCwgdGVzdHB1YjUsIHRlc3RwdWI2LCB0ZXN0cHViNzsKKworLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSBFWENFUFQgVEFC TEUgdGVzdHMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7 CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl9yb290KGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7 CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl9wYXJ0MSBQQVJUSVRJT04gT0YgdGVzdHB1Yl9yb290IEZP UiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwMCk7CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl9wYXJ0MiBQ QVJUSVRJT04gT0YgdGVzdHB1Yl9yb290IEZPUiBWQUxVRVMgRlJPTSAoMTAwKSBUTyAoMjAwKTsK K0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViOCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUg KHRlc3RwdWJfcm9vdCk7CitcZFJwKyB0ZXN0cHViODsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0 cHViOSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfcGFydDEpOworCitDUkVB VEUgVEFCTEUgdGFiX21haW4gKGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7CistLSBBdHRh Y2hpbmcgYSBwYXJ0aXRpb24gaXMgbm90IGFsbG93ZWQgaWYgdGhlIHBhcnRpdGlvbmVkIHRhYmxl IGFwcGVhcnMgaW4gYQorLS0gcHVibGljYXRpb24ncyBFWENFUFQgY2xhdXNlLgorQUxURVIgVEFC TEUgdGFiX21haW4gQVRUQUNIIFBBUlRJVElPTiB0ZXN0cHViX3Jvb3QgRk9SIFZBTFVFUyBGUk9N ICgwKSBUTyAoMjAwKTsKKworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKK0RST1AgVEFCTEUg dGVzdHB1Yl9yb290LCB0ZXN0cHViX3BhcnQxLCB0ZXN0cHViX3BhcnQyLCB0YWJfbWFpbjsKK0RS T1AgUFVCTElDQVRJT04gdGVzdHB1Yjg7CiAKIC0tLSBUZXN0cyBmb3IgcHVibGljYXRpb25zIHdp dGggU0VRVUVOQ0VTCiBDUkVBVEUgU0VRVUVOQ0UgcmVncmVzc19wdWJfc2VxMDsKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi9tZXNvbi5idWlsZAppbmRleCBhNGM3ZGJhZmY1OS4uMDcyODJhYTNjMTggMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vbWVzb24uYnVpbGQKQEAgLTQ2LDYgKzQ2LDcgQEAgdGVzdHMgKz0gewogICAgICAg J3QvMDM0X3RlbXBvcmFsLnBsJywKICAgICAgICd0LzAzNV9jb25mbGljdHMucGwnLAogICAgICAg J3QvMDM2X3NlcXVlbmNlcy5wbCcsCisgICAgICAndC8wMzdfcmVwX2NoYW5nZXNfZXhjZXB0X3Rh YmxlLnBsJywKICAgICAgICd0LzEwMF9idWdzLnBsJywKICAgICBdLAogICB9LApkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X3JlcF9jaGFuZ2VzX2V4Y2VwdF90YWJsZS5w bCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19yZXBfY2hhbmdlc19leGNlcHRfdGFibGUu cGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJlNzJjZjk2MzVhCi0t LSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X3JlcF9jaGFuZ2Vz X2V4Y2VwdF90YWJsZS5wbApAQCAtMCwwICsxLDI3MCBAQAorCisjIENvcHlyaWdodCAoYykgMjAy NiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBMb2dpY2FsIHJlcGxp Y2F0aW9uIHRlc3RzIGZvciBFWENFUFQgVEFCTEUgcHVibGljYXRpb25zCit1c2Ugc3RyaWN0Owor dXNlIHdhcm5pbmdzOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworIyBJbml0aWFsaXplIHB1Ymxp c2hlciBub2RlCitteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy LT5uZXcoJ3B1Ymxpc2hlcicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1p bmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CisKK215ICRwdWJsaXNo ZXJfY29ubnN0ciA9ICRub2RlX3B1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVz JzsKKworIyBJbml0aWFsaXplIHN1YnNjcmliZXIgbm9kZQorbXkgJG5vZGVfc3Vic2NyaWJlciA9 IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOworJG5vZGVfc3Vi c2NyaWJlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9zdWJz Y3JpYmVyLT5zdGFydDsKKworbXkgJHJlc3VsdDsKKworc3ViIHRlc3RfZXhjZXB0X3Jvb3RfcGFy dGl0aW9uCit7CisJbXkgKCRwdWJ2aWFyb290KSA9IEBfOworCisJIyBJZiB0aGUgcm9vdCBwYXJ0 aXRpb25lZCB0YWJsZSBpcyBpbiB0aGUgRVhDRVBUIGNsYXVzZSwgYWxsIGl0cyBwYXJ0aXRpb25z CisJIyBhcmUgZXhjbHVkZWQgZnJvbSBwdWJsaWNhdGlvbiwgcmVnYXJkbGVzcyBvZiB0aGUKKwkj IHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290IHNldHRpbmcuCisJJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHFxKAorCQlDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1 Yl9wYXJ0IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoc2NoMS50MSkgV0lUSCAocHVibGlz aF92aWFfcGFydGl0aW9uX3Jvb3QgPSAkcHVidmlhcm9vdCk7CisJCUlOU0VSVCBJTlRPIHNjaDEu dDEgVkFMVUVTICgxKSwgKDEwMSksICgxNTEpOworCSkpOworCSRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViX3BhcnQg Q09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQi CisJKTsKKwkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9k ZV9wdWJsaXNoZXIsCisJCSd0YXBfc3ViX3BhcnQnKTsKKworCSMgQWR2YW5jZSB0aGUgcmVwbGlj YXRpb24gc2xvdCB0byBpZ25vcmUgY2hhbmdlcyBnZW5lcmF0ZWQgYmVmb3JlIHRoaXMgcG9pbnQu CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBzbG90 X25hbWUgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90X2FkdmFuY2UoJ3Rlc3Rfc2xvdCcsIHBnX2N1 cnJlbnRfd2FsX2xzbigpKTsiCisJKTsKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCQkiSU5TRVJUIElOVE8gc2NoMS50MSBWQUxVRVMgKDIpLCAoMTAyKSwgKDE1Miki KTsKKworCSMgVmVyaWZ5IHRoYXQgZGF0YSBpbnNlcnRlZCBpbnRvIHRoZSBwYXJ0aXRpb25lZCB0 YWJsZSBpcyBub3QgcHVibGlzaGVkIHdoZW4KKwkjIGl0IGlzIGluIHRoZSBFWENFUFQgY2xhdXNl LgorCSRyZXN1bHQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQki U0VMRUNUIGNvdW50KCopID0gMCBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfYmluYXJ5X2NoYW5n ZXMoJ3Rlc3Rfc2xvdCcsIE5VTEwsIE5VTEwsICdwcm90b192ZXJzaW9uJywgJzEnLCAncHVibGlj YXRpb25fbmFtZXMnLCAndGFwX3B1Yl9wYXJ0JykiCisJKTsKKwkkbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJ3RhcF9zdWJfcGFydCcpOworCisJIyBDaGVjayB0aGF0IG5vIHJvd3Mg YXJlIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlcgorCSRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBzY2gxLnQx Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICdjaGVjayByb3dzIG9uIHJvb3QgdGFibGUnKTsKKwor CSRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJTRUxFQ1QgY291bnQoKikgRlJPTSBzY2gxLnBhcnQxIik7CisJaXMoJHJlc3VsdCwgcXEoMCks ICdjaGVjayByb3dzIG9uIHRhYmxlIHNjaDEucGFydDEnKTsKKworCSRyZXN1bHQgPQorCSAgJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikg RlJPTSBzY2gxLnBhcnQyIik7CisJaXMoJHJlc3VsdCwgcXEoMCksICdjaGVjayByb3dzIG9uIHRh YmxlIHNjaDEucGFydDInKTsKKworCSRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBzY2gxLnBhcnQyXzEi KTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ2NoZWNrIHJvd3Mgb24gdGFibGUgc2NoMS5wYXJ0Ml8x Jyk7CisKKwkkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gc2NoMS5wYXJ0Ml8yIik7CisJaXMoJHJlc3Vs dCwgcXEoMCksICdjaGVjayByb3dzIG9uIHRhYmxlIHNjaDEucGFydDJfMicpOworCisJJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFNVQlNDUklQVElPTiB0YXBf c3ViX3BhcnQiKTsKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJP UCBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQ7Iik7Cit9CisKKyMgPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgRVhDRVBUIFRBQkxFIHRlc3QgY2FzZXMgZm9y IG5vbi1wYXJ0aXRpb25lZCB0YWJsZXMgYW5kIGluaGVyaXRlZCB0YWJsZXMuCisjID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIENyZWF0ZSBzY2hlbWFzIGFu ZCB0YWJsZXMgb24gcHVibGlzaGVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9z dGdyZXMnLCBxcSgKKwlDUkVBVEUgU0NIRU1BIHNjaDE7CisJQ1JFQVRFIFRBQkxFIHNjaDEudGFi MSBBUyBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsMTApIEFTIGE7CisJQ1JFQVRFIFRBQkxFIHNj aDEucGFyZW50IChhIGludCk7CisJQ1JFQVRFIFRBQkxFIHNjaDEuY2hpbGQgKGIgaW50KSBJTkhF UklUUyAoc2NoMS5wYXJlbnQpOworCUNSRUFURSBUQUJMRSBzY2gxLnBhcmVudDEgKGEgaW50KTsK KwlDUkVBVEUgVEFCTEUgc2NoMS5jaGlsZDEgKGIgaW50KSBJTkhFUklUUyAoc2NoMS5wYXJlbnQx KTsKKykpOworCisjIENyZWF0ZSBzY2hlbWFzIGFuZCB0YWJsZXMgb24gc3Vic2NyaWJlcgorJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBTQ0hF TUEgc2NoMTsKKwlDUkVBVEUgVEFCTEUgc2NoMS50YWIxIChhIGludCk7CisJQ1JFQVRFIFRBQkxF IHNjaDEucGFyZW50IChhIGludCk7CisJQ1JFQVRFIFRBQkxFIHNjaDEuY2hpbGQgKGIgaW50KSBJ TkhFUklUUyAoc2NoMS5wYXJlbnQpOworCUNSRUFURSBUQUJMRSBzY2gxLnBhcmVudDEgKGEgaW50 KTsKKwlDUkVBVEUgVEFCTEUgc2NoMS5jaGlsZDEgKGIgaW50KSBJTkhFUklUUyAoc2NoMS5wYXJl bnQxKTsKKykpOworCisjIEV4Y2x1ZGUgc2NoMS50YWIxIGFuZCB0aGUgcGFyZW50IHRhYmxlcyBz Y2gxLnBhcmVudCBhbmQgT05MWSBzY2gxLnBhcmVudDEgdG8KKyMgdmVyaWZ5IGV4Y2x1c2lvbiBi ZWhhdmlvciBmb3IgaW5oZXJpdGVkIHRhYmxlcyBhbmQgdGhlIGVmZmVjdCBvZiBPTkxZIGluIHRo ZQorIyBFWENFUFQgbGlzdC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViX3NjaGVtYSBGT1IgQUxMIFRBQkxFUyBFWENF UFQgVEFCTEUgKHNjaDEudGFiMSwgc2NoMS5wYXJlbnQsIG9ubHkgc2NoMS5wYXJlbnQxKSIKKyk7 CisKKyMgQ3JlYXRlIGEgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90IHRvIGhlbHAgd2l0aCBsYXRl ciB0ZXN0cy4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVD VCBwZ19jcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KCd0ZXN0X3Nsb3QnLCAncGdvdXRw dXQnKSIpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JF QVRFIFNVQlNDUklQVElPTiB0YXBfc3ViX3NjaGVtYSBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nv bm5zdHInIFBVQkxJQ0FUSU9OIHRhcF9wdWJfc2NoZW1hIgorKTsKKworIyBXYWl0IGZvciBpbml0 aWFsIHRhYmxlIHN5bmMgdG8gZmluaXNoCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJz Y3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsCisJJ3RhcF9zdWJfc2NoZW1hJyk7CisKKyMg Q2hlY2sgdGhlIHRhYmxlIGRhdGEgZG9lcyBub3Qgc3luYyBmb3IgdGhlIHRhYmxlcyBzcGVjaWZp ZWQgaW4gRVhDRVBUIGNsYXVzZQorJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gc2NoMS50YWIxIik7Citpcygk cmVzdWx0LCBxcSgwKSwKKwknY2hlY2sgdGhlcmUgaXMgbm8gaW5pdGlhbCBkYXRhIGNvcGllZCBm b3IgdGhlIHRhYmxlcyBzcGVjaWZpZWQgaW4gdGhlIGV4Y2VwdCBjbGF1c2UnCispOworCisjIElu c2VydCBzb21lIGRhdGEgaW50byB0aGUgdGFibGUgbGlzdGVkIGluIHRoZSBFWENFUFQgY2xhdXNl Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlJTlNFUlQg SU5UTyBzY2gxLnRhYjEgVkFMVUVTKGdlbmVyYXRlX3NlcmllcygxMSwyMCkpOworCUlOU0VSVCBJ TlRPIHNjaDEuY2hpbGQgVkFMVUVTKGdlbmVyYXRlX3NlcmllcygxMSwyMCksIGdlbmVyYXRlX3Nl cmllcygxMSwyMCkpOworKSk7CisKKyMgVmVyaWZ5IHRoYXQgZGF0YSBpbnNlcnRlZCBpbnRvIGEg dGFibGUgbGlzdGVkIGluIHRoZSBFWENFUFQgY2xhdXNlIGlzIG5vdAorIyBwdWJsaXNoZWQuCisk cmVzdWx0ID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNU IGNvdW50KCopID0gMCBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfYmluYXJ5X2NoYW5nZXMoJ3Rl c3Rfc2xvdCcsIE5VTEwsIE5VTEwsICdwcm90b192ZXJzaW9uJywgJzEnLCAncHVibGljYXRpb25f bmFtZXMnLCAndGFwX3N1Yl9zY2hlbWEnKSIKKyk7CitpcygkcmVzdWx0LCBxcSh0KSwKKwkndmVy aWZ5IG5vIGNoYW5nZXMgZm9yIHRhYmxlIGxpc3RlZCBpbiB0aGUgRVhDRVBUIGNsYXVzZSBhcmUg cHJlc2VudCBpbiB0aGUgcmVwbGljYXRpb24gc2xvdCcKKyk7CisKKyMgVGhpcyBzaG91bGQgYmUg cHVibGlzaGVkIGJlY2F1c2UgT05MWSBzY2gxLnBhcmVudDEgd2FzIHNwZWNpZmllZCBpbiB0aGUK KyMgRVhDRVBUIGNsYXVzZSwgc28gdGhlIGV4Y2x1c2lvbiBhcHBsaWVzIG9ubHkgdG8gdGhlIHBh cmVudCB0YWJsZSBhbmQgbm90IHRvCisjIGl0cyBjaGlsZC4KKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHNjaDEuY2hpbGQxIFZBTFVFUyhnZW5l cmF0ZV9zZXJpZXMoMTEsMjApLCBnZW5lcmF0ZV9zZXJpZXMoMTEsMjApKSIKKyk7CisKKyMgVmVy aWZ5IHRoYXQgZGF0YSBpbnNlcnRlZCBpbnRvIGEgdGFibGUgbGlzdGVkIGluIHRoZSBFWENFUFQg Y2xhdXNlIGlzIG5vdAorIyByZXBsaWNhdGVkLgorJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCd0YXBfc3ViX3NjaGVtYScpOworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gc2NoMS50YWIxIik7 CitpcygkcmVzdWx0LCBxcSgwKSwgJ2NoZWNrIHJlcGxpY2F0ZWQgaW5zZXJ0cyBvbiBzdWJzY3Jp YmVyJyk7CiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBzY2gxLmNoaWxkIik7CitpcygkcmVzdWx0LCBxcSgw KSwgJ2NoZWNrIHJlcGxpY2F0ZWQgaW5zZXJ0cyBvbiBzdWJzY3JpYmVyJyk7CiskcmVzdWx0ID0K KyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQo KikgRlJPTSBzY2gxLmNoaWxkMSIpOworaXMoJHJlc3VsdCwgcXEoMTApLCAnY2hlY2sgcmVwbGlj YXRlZCBpbnNlcnRzIG9uIHN1YnNjcmliZXInKTsKKworIyBjbGVhbnVwCiskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgU1VCU0NSSVBUSU9OIHRhcF9zdWJfc2No ZW1hIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlE Uk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWJfc2NoZW1hOworCVRSVU5DQVRFIFRBQkxFIHNjaDEudGFi MTsKKykpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FU RSBUQUJMRSBzY2gxLnRhYjEiKTsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorIyBFWENFUFQgVEFCTEUgdGVzdCBjYXNlcyBmb3IgcGFydGl0aW9uZWQg dGFibGVzCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cisj IFNldHVwIHBhcnRpdGlvbmVkIHRhYmxlIGFuZCBwYXJ0aXRpb25zIG9uIHRoZSBwdWJsaXNoZXIg dGhhdCBtYXAgdG8gbm9ybWFsCisjIHRhYmxlcyBvbiB0aGUgc3Vic2NyaWJlcgorJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFRBQkxFIHNjaDEu dDEoYSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRShhKTsKKwlDUkVBVEUgVEFCTEUgc2NoMS5wYXJ0 MSBQQVJUSVRJT04gT0Ygc2NoMS50MSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxMDApOworCUNS RUFURSBUQUJMRSBzY2gxLnBhcnQyIFBBUlRJVElPTiBPRiBzY2gxLnQxIEZPUiBWQUxVRVMgRlJP TSAoMTAwKSBUTyAoMjAwKSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7OworCUNSRUFURSBUQUJMRSBz Y2gxLnBhcnQyXzEgUEFSVElUSU9OIE9GIHNjaDEucGFydDIgRk9SIFZBTFVFUyBGUk9NICgxMDAp IFRPICgxNTApOworCUNSRUFURSBUQUJMRSBzY2gxLnBhcnQyXzIgUEFSVElUSU9OIE9GIHNjaDEu cGFydDIgRk9SIFZBTFVFUyBGUk9NICgxNTApIFRPICgyMDApOworKSk7CisKKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgVEFCTEUgc2NoMS50 MShhIGludCk7CisJQ1JFQVRFIFRBQkxFIHNjaDEucGFydDEoYSBpbnQpOworCUNSRUFURSBUQUJM RSBzY2gxLnBhcnQyKGEgaW50KTsKKwlDUkVBVEUgVEFCTEUgc2NoMS5wYXJ0Ml8xKGEgaW50KTsK KwlDUkVBVEUgVEFCTEUgc2NoMS5wYXJ0Ml8yKGEgaW50KTsKKykpOworCisjIFZhbGlkYXRlIHRo ZSBiZWhhdmlvdXIgd2l0aCBib3RoIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290IGFzIHRydWUg YW5kIGZhbHNlCit0ZXN0X2V4Y2VwdF9yb290X3BhcnRpdGlvbignZmFsc2UnKTsKK3Rlc3RfZXhj ZXB0X3Jvb3RfcGFydGl0aW9uKCd0cnVlJyk7CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKyMgVGVzdCB3aGVuIGEgc3Vic2NyaXB0aW9uIGlzIHN1YnNj cmliaW5nIHRvIG11bHRpcGxlIHB1YmxpY2F0aW9ucworIyA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorCisjIE9LIHdoZW4gYSB0YWJsZSBpcyBleGNsdWRlZCBi eSBwdWIxIEVYQ0VQVCBUQUJMRSwgYnV0IGl0IGlzIGluY2x1ZGVkIGJ5IHB1YjIKKyMgRk9SIFRB QkxFCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlDUkVB VEUgUFVCTElDQVRJT04gdGFwX3B1YjEgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChzY2gx LnRhYjEpOworCUNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViMiBGT1IgVEFCTEUgc2NoMS50YWIx OworCUlOU0VSVCBJTlRPIHNjaDEudGFiMSBWQUxVRVMoMSk7CispKTsKKyRub2RlX3N1YnNjcmli ZXItPnBzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5F Q1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gdGFwX3B1YjEsIHRhcF9wdWIy IgorKTsKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2Rl X3B1Ymxpc2hlciwgJ3RhcF9zdWInKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgcXEoSU5TRVJUIElOVE8gc2NoMS50YWIxIFZBTFVFUygyKSkpOworJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgKiBGUk9NIHNjaDEudGFi MSBPUkRFUiBCWSBhIik7CitpcyggJHJlc3VsdCwgcXEoMQorMiksCisJImNoZWNrIHJlcGxpY2F0 aW9uIG9mIGEgdGFibGUgaW4gdGhlIEVYQ0VQVCBjbGF1c2Ugb2Ygb25lIHB1YmxpY2F0aW9uIGJ1 dCBpbmNsdWRlZCBieSBhbm90aGVyIgorKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAor CSdwb3N0Z3JlcycsIHFxKAorCURST1AgUFVCTElDQVRJT04gdGFwX3B1YjI7CisJVFJVTkNBVEUg c2NoMS50YWIxOworKSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg cXEoVFJVTkNBVEUgc2NoMS50YWIxKSk7CisKKyMgT0sgd2hlbiBhIHRhYmxlIGlzIGV4Y2x1ZGVk IGJ5IHB1YjEgRVhDRVBUIFRBQkxFLCBidXQgaXQgaXMgaW5jbHVkZWQgYnkgcHViMgorIyBGT1Ig QUxMIFRBQkxFUworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEo CisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIyIEZPUiBBTEwgVEFCTEVTOworCUlOU0VSVCBJ TlRPIHNjaDEudGFiMSBWQUxVRVMoMSk7CispKTsKKyRub2RlX3N1YnNjcmliZXItPnBzcWwoJ3Bv c3RncmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJs aXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gdGFwX3B1YjEsIHRhcF9wdWIyIgorKTsKKyRub2Rl X3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwg J3RhcF9zdWInKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEo SU5TRVJUIElOVE8gc2NoMS50YWIxIFZBTFVFUygyKSkpOworJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCd0YXBfc3ViJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgKiBGUk9NIHNjaDEudGFiMSBPUkRFUiBCWSBh Iik7CitpcyggJHJlc3VsdCwgcXEoMQorMiksCisJImNoZWNrIHJlcGxpY2F0aW9uIG9mIGEgdGFi bGUgaW4gdGhlIEVYQ0VQVCBjbGF1c2Ugb2Ygb25lIHB1YmxpY2F0aW9uIGJ1dCBpbmNsdWRlZCBi eSBhbm90aGVyIgorKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICdEUk9QIFNVQlNDUklQVElPTiB0YXBfc3ViJyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAnRFJPUCBQVUJMSUNBVElPTiB0YXBfcHViMScpOworJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgUFVCTElDQVRJT04gdGFwX3B1YjInKTsK KworJG5vZGVfcHVibGlzaGVyLT5zdG9wKCdmYXN0Jyk7CisKK2RvbmVfdGVzdGluZygpOwotLSAK Mi4zNC4xCgo= --00000000000036356c064c0a775f--