Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1ehm08-0004KP-2M for pgsql-hackers@arkaria.postgresql.org; Sat, 03 Feb 2018 00:48:16 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ehm06-0006Ul-Rg for pgsql-hackers@arkaria.postgresql.org; Sat, 03 Feb 2018 00:48:14 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1ehm06-0006Ua-BL for pgsql-hackers@lists.postgresql.org; Sat, 03 Feb 2018 00:48:14 +0000 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1ehm01-0008Su-3G for pgsql-hackers@postgresql.org; Sat, 03 Feb 2018 00:48:13 +0000 Received: by mail-qk0-x244.google.com with SMTP id n129so15464770qke.6 for ; Fri, 02 Feb 2018 16:48:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=PFAL6hOxYH58AIZoFpYIaeYSnaZ0wKXkJ1+pKtmZY1k=; b=PmIguK1pR20RDYzQw/P4m0j1bvUI38VSX+YUCjeiV5UVmCxFtwAys+UMMhEu98Zgq3 KqYIzJVVfAyYARCtGWENOoN4zF8EsGWITuNMKG2M5WEQ2e0hXbJSTU/ScplarzQrHii7 KdnKuXj8qbkA07k8NqjBnAMlPAeLM73gNxRmCz3KOuWL9Z0asQO54e458UA/QUAf/3WW QcfInRH6Y08cSsDXkJElJ0IQEcuJfab/BVYtis5BpIuKyQeez7Jbw7/EY3xmXLnw/Oai WePj3VhtyyeTCIhr79LjtpAxTzFY8PB9h4hRSRyHx2dY28JKZQX8wzrfcerjdDCs0QKP yKfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=PFAL6hOxYH58AIZoFpYIaeYSnaZ0wKXkJ1+pKtmZY1k=; b=OUOgAGTWOKtd8a4wHEvAUOqJZqzDHGRqO6qvuqGEcEFNPXmAjaBQ0ro4KwjG/ipzP4 SDhvU6acp0RJdgGnbQjqTMrFFYNqORokZZ+G+f8VwsRi3zUdsB7SuiwfCb2zyiTnNmBQ 1xGl4zIfffK/WC9M/ToSqKK8J3MuxkerUJ3BTQQVIUT6LpPfX3i40JUl2oJXAANmg84F 7T2D8OL0EPwni51re10Vjphb1RDWMKGRHY63KATJMv/fjUBtrkcYE+H/Z3r1a6tfeaUY QPKUHPMdBue3aGLUi2pg/1zNND3fELJWTG5bNH+uc9Awl8/Gk1xlrg7+B+/nVYwdDjkj Rn/Q== X-Gm-Message-State: AKwxytew3BUu1IDNPbP1MMTT/mBqQ/H8TgGjvd4WQQ5jSzk4eI4Q9Ta1 XFP7RCeHjCx7L7RMjd++7sWtpf47EYieNSNJYJw= X-Google-Smtp-Source: AH8x227G9IqhQTISsYYPLgDF2zzReEIzTUmhbGK5oWe82yd8o+Nx6NLmwHKNVJatXNEG3cB9EyGdsqLfFEqhSTW55+c= X-Received: by 10.55.249.12 with SMTP id l12mr21111936qkj.354.1517618887225; Fri, 02 Feb 2018 16:48:07 -0800 (PST) MIME-Version: 1.0 Received: by 10.12.135.38 with HTTP; Fri, 2 Feb 2018 16:48:05 -0800 (PST) In-Reply-To: References: <623395617.20171113141500@gf.microolap.com> From: "David G. Johnston" Date: Fri, 2 Feb 2018 17:48:05 -0700 Message-ID: Subject: Re: [HACKERS] proposal: schema variables To: Pavel Stehule Cc: Pavel Golub , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="089e082cc754adb42b0564442eaf" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --089e082cc754adb42b0564442eaf Content-Type: multipart/alternative; boundary="089e082cc754adb4260564442ead" --089e082cc754adb4260564442ead Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable =E2=80=8BI've done a non-compilation documentation review, the diff from t= he poc patch and the diff from master are attached. Comments are inter-twined in the patch in xml comment format; though I reiterate (some of?) them below. On Fri, Feb 2, 2018 at 3:06 PM, Pavel Stehule wrote: > Hi > > I wrote proof concept of schema variables. The patch is not nice, but the > functionality is almost complete (for scalars only) and can be good enoug= h > for playing with this concept. > > I recap a goals (the order is random): > > 1. feature like PL/SQL package variables (with similar content life cycle= ) > 2. available from any PL used by PostgreSQL, data can be shared between > different PL > 3. possibility to store short life data in fast secured storage > =E2=80=8BThe generic use of the word secure here bothers me. I'm taking it= to be "protected by grant/revoke"-based privileges; plus session-locality. 4. possibility to pass parameters and results to/from anonymous blocks > 5. session variables with possibility to process static code check > What does "process static code check" means here?=E2=80=8B > 6. multiple API available from different environments - SQL commands, SQL > functions, internal functions > I made the public aspect of this explicit in the CREATE VARIABLE doc (though as noted below it probably belongs in section II) =E2=80=8B > 7. data are stored in binary form > Thoughts during my review: There is, for me, a cognitive dissonance between "schema variable" and "variable value" - I'm partial to the later. Since we use "setting" for GUCs the term variable here hopefully wouldn't cause ambiguity... I've noticed that we don't seem to have or enforce any policy on how to communicate "SQL standards compatibility" to the user... We are missing the ability to alter ownership (or at least its undocumented), and if that brings into existing ALTER VARIABLE we should probably add ALTER TYPE TO new_type USING (cast) for completeness. Its left for the reader to presume that because these are schema "relations" that namespace resolution via search_path works the same as any other relation. I think I've answered my own question regarding DISCARD in that "variables" discards values while if TEMP is in effect all temp variables are dropped. Examples abound though it doesn't feel like too much: but saying "The usage is very simple:" before giving the example in the function section seems to be outside of our general style. A better preamble than "An example:" would be nice but the example is so simple I could not think of anything worth writing. Its worth considering how both: https://www.postgresql.org/docs/10/static/ddl.html and https://www.postgresql.org/docs/10/static/queries.html could be updated to incorporate the broad picture of schema variables, with examples, and leave the reference (SQL and functions) sections mainly relegated to syntax and reminders. A moderate number of lines changed are for typos and minor grammar edits. David J. --089e082cc754adb4260564442ead Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
=E2=80=8BI've done a non-compilatio= n documentation review, the diff from the poc patch and the diff from maste= r are attached.

Comments are inter-twined in the patch = in xml comment format; though I reiterate (some of?) them below.

On Fri, Feb 2, 2018 = at 3:06 PM, Pavel Stehule <pavel.stehule@gmail.com> wrote:
<= div>
Hi

I wrote proof concept of schema variables. Th= e patch is not nice, but the functionality is almost complete (for scalars = only) and can be good enough for playing with this concept.

I= recap a goals (the order is random):

1. feature like PL/SQL p= ackage variables (with similar content life cycle)
2. available fr= om any PL used by PostgreSQL, data can be shared between different PL
3. possibility to store short life data in fast secured storage

=E2=80=8BThe generic use of the word secure he= re bothers me.=C2=A0 I'm taking it to be "protected by grant/revok= e"-based privileges; plus session-locality.

=
4. possibility to pass= parameters and results to/from anonymous blocks
5. session variab= les with possibility to process static code check

W= hat does "process static code check" means here?=E2=80=8B
=C2=A0
6. mul= tiple API available from different environments - SQL commands, SQL functio= ns, internal functions
<= /div>

I made the public aspect of thi= s explicit in the CREATE VARIABLE doc (though as noted below it probably be= longs in section II)
=E2=80=8B
7. data are stored in binary form=C2=A0
<= /div>

Thoug= hts during my review:

There is, for me, a cognitive d= issonance between "schema variable" and "variable value"= ; - I'm partial to the later.=C2=A0 Since we use "setting" fo= r GUCs the term variable here hopefully wouldn't cause ambiguity...

I've noticed that we don't seem to have or enforc= e any policy on how to communicate "SQL standards compatibility" = to the user...

We are missing the ability to alter own= ership (or at least its undocumented), and if that brings into existing ALT= ER VARIABLE we should probably add ALTER TYPE TO new_type USING (cast) for = completeness.

Its left for the reader to presume that = because these are schema "relations" that namespace resolution vi= a search_path works the same as any other relation.

I = think I've answered my own question regarding DISCARD in that "var= iables" discards values while if TEMP is in effect all temp variables = are dropped.

Examples abound though it doesn't fee= l like too much: but saying "The usage is very simple:" before gi= ving the example in the function section seems to be outside of our general= style.=C2=A0 A better preamble than "An example:" would be nice = but the example is so simple I could not think of anything worth writing.

Its worth considering how both:

and=C2=A0
https://www.p= ostgresql.org/docs/10/static/queries.html

= could be updated to incorporate the broad picture of schema variables, with= examples, and leave the reference (SQL and functions) sections mainly rele= gated to syntax and reminders.

A moderate numbe= r of lines changed are for typos and minor grammar edits.

David J.

--089e082cc754adb4260564442ead-- --089e082cc754adb42b0564442eaf Content-Type: application/octet-stream; name="schema-variables-poc--dgj-response-diff.patch" Content-Disposition: attachment; filename="schema-variables-poc--dgj-response-diff.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jd6lwul91 Y29tbWl0IGZiMzlkOGQyZGM3OThkZGQ0NDYxMWUzNDlkZWRjMGE4ZDQxYjM1YzYKQXV0aG9yOiBE YXZpZCBHLiBKb2huc3RvbiAoRFUpIDxkYXZpZGpAZGVhbGVydXBsaWZ0LmNvbT4KRGF0ZTogICBT YXQgRmViIDMgMDA6MTE6NTYgMjAxOCArMDAwMAoKICAgIHJlc3Bvc2UgdG8gcG9jCgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbCBiL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKaW5k ZXggNTAzMWNkNGQ3MC4uMzZlNWU0ODJhNyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Z1bmMu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCkBAIC0xNTc0MywxMCArMTU3NDMsMTAg QEAgU0VMRUNUICogRlJPTSBwZ19sc19kaXIoJy4nKSBXSVRIIE9SRElOQUxJVFkgQVMgdChscyxu KTsKICA8L3NlY3QxPgogCiAgPHNlY3QxIGlkPSJmdW5jdGlvbnMtc2NoZW1hdmFyIj4KLSAgPHRp dGxlPkZ1bmN0aW9ucyBmb3IgYWNjZXNzIHRvIHNjaGVtYSB2YXJpYWJsZXM8L3RpdGxlPgorICA8 dGl0bGU+U2NoZW1hIFZhcmlhYmxlIEZ1bmN0aW9uczwvdGl0bGU+CiAKICAgPGluZGV4dGVybSB6 b25lPSJmdW5jdGlvbnMtc2NoZW1hdmFyIj4KLSAgIDxwcmltYXJ5PkZ1bmN0aW9ucyBmb3IgYWNj ZXNzIHRvIHNjaGVtYSB2YXJpYWJsZXM8L3ByaW1hcnk+CisgICA8cHJpbWFyeT5TY2hlbWEgVmFy aWFibGUgRnVuY3Rpb25zPC9wcmltYXJ5PgogICAgPHNlY29uZGFyeT5mdW5jdGlvbnM8L3NlY29u ZGFyeT4KICAgPC9pbmRleHRlcm0+CiAKQEAgLTE1NzYwLDEwICsxNTc2MCwxMiBAQCBTRUxFQ1Qg KiBGUk9NIHBnX2xzX2RpcignLicpIFdJVEggT1JESU5BTElUWSBBUyB0KGxzLG4pOwogCiAgIDxw YXJhPgogICAgVGhlc2UgZnVuY3Rpb25zIGFsbG93IHJlYWRpbmcgYW5kIHdyaXRpbmcgc2NoZW1h IHZhcmlhYmxlcyB2YWx1ZXMuCisgICBJZiB0aGUgc2NoZW1hIHZhcmlhYmxlIHJlZmVyZW5jZWQg ZG9lcyBub3QgZXhpc3QgKGNyZWF0ZWQgdXNpbmcgPHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXZh cmlhYmxlIi8+KQorICAgdGhlc2UgZnVuY3Rpb25zIHdpbGwgKGRvIHNvbWV0aGluZy4uLikuCiAg IDwvcGFyYT4KLQorPCEtLSBJJ20gcHJlZmVyZW50aWFsIHRvIGdldF92YXJpYWJsZV92YWx1ZSBh bmQgc2V0X3ZhcmlhYmxlX3ZhbHVlIC0tPgogICA8dGFibGUgaWQ9ImZ1bmN0aW9ucy1zY2hlbWF2 YXItdGFiIj4KLSAgIDx0aXRsZT5GdW5jdGlvbnMgZm9yIGFjY2VzcyB0byBjaGVtYSB2YXJpYWJs ZXM8L3RpdGxlPgorICAgPHRpdGxlPkZ1bmN0aW9ucyBmb3IgYWNjZXNzIHRvIHNjaGVtYSB2YXJp YWJsZXM8L3RpdGxlPgogICAgPHRncm91cCBjb2xzPSI0Ij4KICAgICA8dGhlYWQ+CiAgICAgIDxy b3c+CkBAIC0xNTc3MywxNCArMTU3NzUsMTMgQEAgU0VMRUNUICogRlJPTSBwZ19sc19kaXIoJy4n KSBXSVRIIE9SRElOQUxJVFkgQVMgdChscyxuKTsKICAgICAgIDxlbnRyeT5EZXNjcmlwdGlvbjwv ZW50cnk+CiAgICAgIDwvcm93PgogICAgIDwvdGhlYWQ+Ci0KICAgICA8dGJvZHk+CiAgICAgIDxy b3c+CiAgICAgICA8ZW50cnk+PGxpdGVyYWw+PGZ1bmN0aW9uPmdldF9zY2hlbWFfdmFyaWFibGUo PHBhcmFtZXRlcj52YXJpYWJsZTwvcGFyYW1ldGVyPiwgPHBhcmFtZXRlcj5leHBlY3RlZCB0eXBl PC9wYXJhbWV0ZXI+KTwvZnVuY3Rpb24+PC9saXRlcmFsPjwvZW50cnk+CiAgICAgICA8ZW50cnk+ PHR5cGU+cmVnY2xhc3M8L3R5cGU+LCA8dHlwZT5hbnllbGVtZW50PC90eXBlPjwvZW50cnk+CiAg ICAgICA8ZW50cnk+PHR5cGU+YW55ZWxlbWVudDwvdHlwZT48L2VudHJ5PgogICAgICAgPGVudHJ5 PgotICAgICAgIFJldHVybnMgdmFsdWUgb2Ygc2NoZW1hIHZhcmlhYmxlcyBjb3ZlcnRlZCB0byBl eHBlY3RlZCB0eXBlLgorICAgICAgIFJldHVybnMgdmFsdWUgb2Ygc2NoZW1hIHZhcmlhYmxlIGNv bnZlcnRlZCB0byBleHBlY3RlZCB0eXBlLgogICAgICAgPC9lbnRyeT4KICAgICAgPC9yb3c+CiAK QEAgLTE1Nzg5LDE2ICsxNTc5MCwxNiBAQCBTRUxFQ1QgKiBGUk9NIHBnX2xzX2RpcignLicpIFdJ VEggT1JESU5BTElUWSBBUyB0KGxzLG4pOwogICAgICAgPGVudHJ5Pjx0eXBlPnJlZ2NsYXNzPC90 eXBlPiwgPHR5cGU+YW55ZWxlbWVudDwvdHlwZT48L2VudHJ5PgogICAgICAgPGVudHJ5Pjx0eXBl PnZvaWQ8L3R5cGU+PC9lbnRyeT4KICAgICAgIDxlbnRyeT4KLSAgICAgICBTZXQgYSB2YWx1ZSBv ZiBzY2hlbWEgdmFyaWFibGUuIFZhbHVlIGlzIGNvbnZlcnRlZCB0byB0eXBlIG9mIHNjaGVtYSB2 YXJpYWJsZS4KKyAgICAgICBTZXRzIHRoZSB2YWx1ZSBvZiBzY2hlbWEgdmFyaWFibGUgdG8gdmFs dWUsIGFmdGVyIGNvbnZlcnRpbmcgdGhlIGlucHV0IHRvIHRoZSBjb3JyZWN0IHR5cGUuCiAgICAg ICA8L2VudHJ5PgogICAgICA8L3Jvdz4KIAogICAgIDwvdGJvZHk+CiAgICA8L3Rncm91cD4KICAg PC90YWJsZT4KLQorICBBbiBleGFtcGxlOgogICA8cGFyYT4KLSAgIFRoZSB1c2FnZSBpcyB2ZXJ5 IHNpbXBsZToKKwogPHByb2dyYW1saXN0aW5nPgogQ1JFQVRFIFRFTVAgVkFSSUFCTEUgZm9vIEFT IG51bWVyaWM7CiBTRUxFQ1Qgc2V0X3NjaGVtYV92YXJpYWJsZSgnZm9vJywgMzQ1LjQ0NSk7CmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV92YXJpYWJsZS5zZ21sIGIvZG9jL3Ny Yy9zZ21sL3JlZi9jcmVhdGVfdmFyaWFibGUuc2dtbAppbmRleCAwMzdmYTA4N2Y1Li5jMDZiMGU3 NTE3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV92YXJpYWJsZS5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3ZhcmlhYmxlLnNnbWwKQEAgLTE2LDcgKzE2LDcg QEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAKICA8cmVmbmFtZWRpdj4KICAgPHJlZm5hbWU+ Q1JFQVRFIFZBUklBQkxFPC9yZWZuYW1lPgotICA8cmVmcHVycG9zZT5kZWZpbmUgYSBuZXcgc2No ZW1hIHNlY3VyZSB0eXBlZCB2YXJpYWJsZTwvcmVmcHVycG9zZT4KKyAgPHJlZnB1cnBvc2U+ZGVm aW5lIGEgbmV3IHBlcm1pc3Npb25lZCB0eXBlZCBzY2hlbWEgdmFyaWFibGU8L3JlZnB1cnBvc2U+ CiAgPC9yZWZuYW1lZGl2PgogCiAgPHJlZnN5bm9wc2lzZGl2PgpAQCAtMjQsMzIgKzI0LDM5IEBA IFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogQ1JFQVRFIFZBUklBQkxFIFsgSUYgTk9UIEVYSVNU UyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gWyBB UyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kYXRhX3R5cGU8L3JlcGxhY2VhYmxl PiBdCiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+Cis8IS0tIGEgbXVsdGlwbGUgdmFy aWFibGUgdmVyc2lvbiBvZiB0aGlzIG1pZ2h0IGJlIHVzZWZ1bC4uLgorICAgICBuYW1lIGRhdGFf dHlwZSBbLCBuYW1lIGRhdGFfdHlwZV0gLS0+CiAKICA8cmVmc2VjdDE+CiAgIDx0aXRsZT5EZXNj cmlwdGlvbjwvdGl0bGU+CiAKICAgPHBhcmE+CiAgICA8Y29tbWFuZD5DUkVBVEUgVkFSSUFCTEU8 L2NvbW1hbmQ+IGNyZWF0ZXMgYSBuZXcgc2NoZW1hIHZhcmlhYmxlLgotICAgVGhlc2UgdmFyaWFi bGVzIGFyZSBtZW1vcnkgb25seSBub24gdHJhbnNhY3Rpb25hbCwgYnV0IHR5cGVkIGFuZAotICAg c2VjdXJlLiBUaGUgYWNjZXNzIGlzIGNvbnRyb2xsZWQgYnkgcmlnaHRzIGRlZmluZWQgYnkgY29t bWFuZAotICAgPGNvbW1hbmQ+R1JBTlQ8L2NvbW1hbmQ+IGFuZCBjb21tYW5kIDxjb21tYW5kPlJF Vk9LRTwvY29tbWFuZD4uCisgICBUaGVzZSB2YXJpYWJsZXMgYXJlIHNjYWxhciB0eXBlZCwgbm9u LXRyYW5zYWN0aW9uYWwsIGFuZCwgbGlrZSByZWxhdGlvbnMsCisgICBleGlzdCB3aXRoaW4gYSBz Y2hlbWEgd2l0aCBhY2Nlc3MgY29udHJvbGxlZCB2aWEKKyAgIDxjb21tYW5kPkdSQU5UPC9jb21t YW5kPiBhbmQgPGNvbW1hbmQ+UkVWT0tFPC9jb21tYW5kPi4KICAgPC9wYXJhPgogCiAgIDxwYXJh PgotICAgVGhlIHNjaGVtYSB2YXJpYWJsZSBpcyBpbml0aWFsaXplZCB0byBOVUxMIHZhbHVlLiBU aGUgY29udGVudCBvZgotICAgdmFyaWFibGUgaXMgbG9zdCB3aGVuIHNlc3Npb24gaXMgZGVzdHJv eWVkLgorICAgVGhlIHZhbHVlIG9mIGEgc2NoZW1hIHZhcmlhYmxlIGlzIHNlc3Npb24tbG9jYWwu IFJldHJpZXZpbmcKKyAgIGEgdmFyaWFibGUncyB2YWx1ZSB3aWxsIHJldHVybiBOVUxMIHVubGVz cyBpdHMgdmFsdWUgaGFzIGJlZW4gc2V0CisgICB0byBzb21ldGhpbmcgZWxzZSBpbiB0aGUgY3Vy cmVudCBzZXNzaW9uLgogICA8L3BhcmE+CiAKICAgPHBhcmE+Ci0gICBUaGUgc2NoZW1hIHZhcmlh YmxlIGNhbiBiZSBhbnkgc2NhbGFyIG9ubHkuCi0gICB0eXBlLgorICAgUmV0cmlldmFsIGlzIGRv bmUgdmlhIHRoZSA8ZnVuY3Rpb24+Z2V0X3NjaGVtYV92YXJpYWJsZTwvZnVuY3Rpb24+ZHVueHJp b24gb3IgdGhlIFNRTAorICAgY29tbWFuZCA8Y29tbWFuZD5TRUxFQ1Q8L2NvbW1hbmQ+LiAgU2V0 dGluZyBvZiB2YWx1ZXMgaXMgZG9uZSB2aWEgdGhlCisgICA8ZnVuY3Rpb24+c2V0X3NjaGVtYV92 YXJpYWJsZTwvZnVuY3Rpb24+IGZ1bmN0aW9uIG9yIHRoZSBTUUwgY29tbWFuZAorICAgPGNvbW1h bmQ+TEVUPC9jb21tYW5kPi4KKyAgIE5vdGFibHksIHdoaWxlIHNjaGVtYSB2YXJpYWJsZXMgYXJl IGluIG1hbnkgd2F5cyBhIGtpbmQgb2YgdGFibGUgeW91IGNhbm5vdCB1c2UKKyAgIDxjb21tYW5k PlVQREFURTwvY29tbWFuZD4gb24gdGhlbS4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgotICAgQWZ0 ZXIgYSB2YXJpYWJsZSBpcyBjcmVhdGVkLCB5b3UgdXNlIHRoZSBzcGVjaWFsIGZ1bmN0aW9ucwot ICAgPGZ1bmN0aW9uPmdldF9zY2hlbWFfdmFyaWFibGVzPC9mdW5jdGlvbj4sIDxmdW5jdGlvbj5z ZXRfc2NoZW1hX3ZhcmlhYmxlczwvZnVuY3Rpb24+LgotICAgdHlwZS4KLSAgPC9wYXJhPgorICAg Rm9yIHB1cnBvc2VzIG9mIG5hbWUgdW5pcXVlbmVzcyByZWxhdGlvbi1saWtlIG9iamVjdHMgKGUu Zy4sIHRhYmxlcywgaW5kZXhlcykKKyAgIHdpdGhpbiB0aGUgc2FtZSBzY2hlbWEgYXJlIGNvbnNp ZGVyZWQuICBpLmUuLCB5b3UgY2Fubm90IGdpdmUgYSB0YWJsZSBhbmQgYQorICAgc2NoZW1hIHZh cmlhYmxlIHRoZSBzYW1lIG5hbWUuICBUaGlzIGlzIGEgY29uc2VxdWVuY2Ugb2YgdGhlbSBiZWlu ZyB0cmVhdGVkCisgICBsaWtlIHJlbGF0aW9ucyBmb3IgcHVycG9zZXMgb2YgPGNvbW1hbmQ+U0VM RUNUPC9jb21tYW5kPi4KICA8L3JlZnNlY3QxPgogCiAgPHJlZnNlY3QxPgpAQCAtNjAsMTAgKzY3 LDkgQEAgQ1JFQVRFIFZBUklBQkxFIFsgSUYgTk9UIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWIKICAgICA8dGVybT48bGl0ZXJhbD5JRiBOT1Qg RVhJU1RTPC9saXRlcmFsPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CiAgICAgIDxwYXJhPgotICAg ICAgRG8gbm90IHRocm93IGFuIGVycm9yIGlmIGEgcmVsYXRpb24gd2l0aCB0aGUgc2FtZSBuYW1l IGFscmVhZHkgZXhpc3RzLgotICAgICAgQSBub3RpY2UgaXMgaXNzdWVkIGluIHRoaXMgY2FzZS4g Tm90ZSB0aGF0IHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0Ci0gICAgICB0aGUgZXhpc3Rpbmcg cmVsYXRpb24gaXMgYW55dGhpbmcgbGlrZSB0aGUgdmFyaWFibGUgdGhhdCB3b3VsZCBoYXZlCi0g ICAgICBiZWVuIGNyZWF0ZWQgLSBpdCBtaWdodCBub3QgZXZlbiBiZSBhIHZhcmlhYmxlLgorICAg ICAgRG8gbm90IHRocm93IGFuIGVycm9yIGlmIHRoZSBuYW1lIGFscmVhZHkgZXhpc3RzLiBBIG5v dGljZSBpcyBpc3N1ZWQgaW4gdGhpcyBjYXNlLgorICAgICAgTm90ZSB0aGF0IHR5cGUgb2YgdGhl IHZhcmlhYmxlIGlzIG5vdCBjb25zaWRlcmVkLCBub3IgY291bGQgaXQgYmUgc2luY2UgdGhlIG5h bWVzcGFjZQorICAgICAgc2VhcmNoZWQgY29udGFpbnMgbm9uLXZhcmlhYmxlIG9iamVjdHMuCiAg ICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CkBAIC04MSw3 ICs4Nyw3IEBAIENSRUFURSBWQVJJQUJMRSBbIElGIE5PVCBFWElTVFMgXSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFiCiAgICAgPHRlcm0+PHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmRhdGFfdHlwZTwvcmVwbGFjZWFibGU+PC90ZXJtPgogICAgIDxs aXN0aXRlbT4KICAgICAgPHBhcmE+Ci0gICAgICBUaGUgbmFtZSAob3B0aW9uYWxseSBzY2hlbWEt cXVhbGlmaWVkKSBvZiB0aGUgZGF0YSB0eXBlIG9mdmFyaWFibGUgdG8gYmUgY3JlYXRlZC4KKyAg ICAgIFRoZSBuYW1lIChvcHRpb25hbGx5IHNjaGVtYS1xdWFsaWZpZWQpIG9mIHRoZSBkYXRhIHR5 cGUgb2YgdGhlIHZhcmlhYmxlIHRvIGJlIGNyZWF0ZWQuCiAgICAgIDwvcGFyYT4KICAgICA8L2xp c3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CkBAIC0xMDcsNyArMTEzLDcgQEAgQ1JFQVRFIFZB UklBQkxFIHZhcjEgQVMgaW50ZWdlcjsKICAgPC9wYXJhPgogCiAgIDxwYXJhPgotICAgU2V0IGEg dmFsdWUgb2YgdGhpcyB2YXJpYWJsZToKKyAgIFNldCB0aGlzIHZhcmlhYmxlJ3MgdmFsdWU7IHRo ZW4gcmV0cmlldmUgaXQgY29udmVydGVkIHRvIG51bWVyaWMuCiA8cHJvZ3JhbWxpc3Rpbmc+CiBD UkVBVEUgVkFSSUFCTEUKIHBvc3RncmVzPSMgc2VsZWN0IHNldF9zY2hlbWFfdmFyaWFibGUoJ3Zh cjEnLCAxMCk7CkBAIC0xMjksNyArMTM1LDggQEAgcG9zdGdyZXM9IyBzZWxlY3QgZ2V0X3NjaGVt YV92YXJpYWJsZSgndmFyMScsIG51bGw6Om51bWVyaWMpOwogICA8dGl0bGU+Q29tcGF0aWJpbGl0 eTwvdGl0bGU+CiAKICAgPHBhcmE+Ci0gICA8Y29tbWFuZD5DUkVBVEUgVkFSSUFCTEU8L2NvbW1h bmQ+IGlzIFBvc3RncmVTUUwgZmVhdHVyZQorICAgPGNvbW1hbmQ+Q1JFQVRFIFZBUklBQkxFPC9j b21tYW5kPiBpcyBhIFBvc3RncmVTUUwgZmVhdHVyZS4KKyAgIDwhLS0gVGhlIGNob2ljZSBvZiB3 b3JkaW5nIGhlcmUgc2VlbXMgdG8gYmUgbGVmdCB0byBwZXJzb25hbCBwcmVmZXJlbmNlLi4uIC0t PgogICA8L3BhcmE+CiAgPC9yZWZzZWN0MT4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Jl Zi9kaXNjYXJkLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2Rpc2NhcmQuc2dtbAppbmRleCBiMzQ4 YzAyZTBiLi4zOTU0NTNiYmEwIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2Rpc2NhcmQu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2Rpc2NhcmQuc2dtbApAQCAtNzksNyArNzksOCBA QCBESVNDQVJEIHsgQUxMIHwgUExBTlMgfCBTRVFVRU5DRVMgfCBURU1QT1JBUlkgfCBURU1QIHwg VkFSSUFCTEVTfQogICAgIDx0ZXJtPjxsaXRlcmFsPlZBUklBQkxFUzwvbGl0ZXJhbD48L3Rlcm0+ CiAgICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4KLSAgICAgIFJlbGVhc2VzIGNvbnRlbnQgb2Yg YWxsIHNjaGVtYSB2YXJpYWJsZXMgaW4gY3VycmVudCBzZXNzaW9uLgorICAgICAgU2V0cyB0aGUg dmFsdWUgb2YgYWxsIHNjaGVtYSB2YXJpYWJsZXMgdG8gTlVMTC4KKyAgICAgIDwhLS0gV2hhdCBo YXBwZW5zIHRvIHRlbXBvcmFyeSBzY2hlbWEgdmFyaWFibGVzIC0tPgogICAgICA8L3BhcmE+CiAg ICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL3JlZi9kcm9wX3ZhcmlhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2Ryb3BfdmFyaWFi bGUuc2dtbAppbmRleCBmNmMyZTQ2NDc2Li4wNjEzMGZkNTEwIDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvcmVmL2Ryb3BfdmFyaWFibGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2Ryb3Bf dmFyaWFibGUuc2dtbApAQCAtMjksOCArMjksOSBAQCBEUk9QIFZBUklBQkxFIFsgSUYgRVhJU1RT IF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBbLAog ICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgogCiAgIDxwYXJhPgotICAgPGNvbW1hbmQ+RFJP UCBWQVJJQUJMRTwvY29tbWFuZD4gcmVtb3ZlcyBzY2hlbWEgdmFyaWFibGUuCisgICA8Y29tbWFu ZD5EUk9QIFZBUklBQkxFPC9jb21tYW5kPiByZW1vdmVzIGEgc2NoZW1hIHZhcmlhYmxlLgogICAg QSB2YXJpYWJsZSBjYW4gb25seSBiZSBkcm9wcGVkIGJ5IGl0cyBvd25lciBvciBhIHN1cGVydXNl ci4KKyAgIDwhLS0gdGhpcyB3b3VsZCBzdWdnZXN0IHRoYXQgd2UgbmVlZCBhbiBhbHRlciB2YXJp YWJsZSBvd25lciB0byBjb21tYW5kIC0tPgogICA8L3BhcmE+CiAgPC9yZWZzZWN0MT4KIApAQCAt NzUsNiArNzYsOCBAQCBEUk9QIFZBUklBQkxFIHZhcjE7CiAKICAgPHBhcmE+CiAgICA8Y29tbWFu ZD5EUk9QIFZBUklBQkxFPC9jb21tYW5kPiBpcyBwcm9wcmlldGFyeSBQb3N0Z3JlU1FMIGNvbW1h bmQuCisgICA8IS0tIGNyZWF0ZSB2YXJpYWJsZSBpcyBhICJQb3N0Z3JlU1FMIGZlYXR1cmUiLAor ICAgICAgICB0aGlzIGlzIGEgInByb3ByaWV0YXJ5IFBvc3RncmVTUUwgY29tbWFuZCIgLi4uIC0t PgogICA8L3BhcmE+CiAgPC9yZWZzZWN0MT4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Jl Zi9ncmFudC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9ncmFudC5zZ21sCmluZGV4IDdkZGU1NGNl MGYuLjAwNjM2NGViZTUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvZ3JhbnQuc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvcmVmL2dyYW50LnNnbWwKQEAgLTE3Myw2ICsxNzMsNyBAQCBHUkFO VCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cm9sZV9uYW1lPC9yZXBsYWNlYWJsZT4g WywgLi4uXSBUTyA8cmVwbGFjZQogICAgZm9yZWlnbiBzZXJ2ZXJzLAogICAgbGFyZ2Ugb2JqZWN0 cywKICAgIHNjaGVtYXMsCisgICBzY2hlbWEgdmFyaWFibGVzLAogICAgb3IgdGFibGVzcGFjZXMu CiAgICBGb3Igb3RoZXIgdHlwZXMgb2Ygb2JqZWN0cywgdGhlIGRlZmF1bHQgcHJpdmlsZWdlcwog ICAgZ3JhbnRlZCB0byA8bGl0ZXJhbD5QVUJMSUM8L2xpdGVyYWw+IGFyZSBhcyBmb2xsb3dzOgpA QCAtMjEwLDYgKzIxMSw4IEBAIEdSQU5UIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5y b2xlX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIFRPIDxyZXBsYWNlCiAgICAgICAgRm9yIHNl cXVlbmNlcywgdGhpcyBwcml2aWxlZ2UgYWxzbyBhbGxvd3MgdGhlIHVzZSBvZiB0aGUKICAgICAg ICA8ZnVuY3Rpb24+Y3VycnZhbDwvZnVuY3Rpb24+IGZ1bmN0aW9uLgogICAgICAgIEZvciBsYXJn ZSBvYmplY3RzLCB0aGlzIHByaXZpbGVnZSBhbGxvd3MgdGhlIG9iamVjdCB0byBiZSByZWFkLgor ICAgICAgIEZvciBzY2hlbWEgdmFyaWFibGVzLCB0aGlzIHByaXZpbGVnZSBhbGxvd3MgdGhlIDxm dW5jdGlvbj5nZXRfc2NoZW1hX3ZhcmlhYmxlPC9mdW5jdGlvbj4KKyAgICAgICB0byByZWFkIHRo ZSB2YXJpYWJsZSdzIHZhbHVlLgogICAgICAgPC9wYXJhPgogICAgICA8L2xpc3RpdGVtPgogICAg IDwvdmFybGlzdGVudHJ5PgpAQCAtMjQ1LDYgKzI0OCw5IEBAIEdSQU5UIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5yb2xlX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIFRPIDxyZXBs YWNlCiAgICAgICAgPGZ1bmN0aW9uPnNldHZhbDwvZnVuY3Rpb24+IGZ1bmN0aW9ucy4KICAgICAg ICBGb3IgbGFyZ2Ugb2JqZWN0cywgdGhpcyBwcml2aWxlZ2UgYWxsb3dzIHdyaXRpbmcgb3IgdHJ1 bmNhdGluZyB0aGUKICAgICAgICBvYmplY3QuCisgICAgICAgRm9yIHNjaGVtYSB2YXJpYWJsZXMs IHRoaXMgcHJpdmlsZWdlIGFsbG93cyA8Y29tbWFuZD5MRVQ8L2NvbW1hbmQ+CisgICAgICAgYW5k IDxmdW5jdGlvbj5zZXRfc2NoZW1hX3ZhcmlhYmxlPC9mdW5jdGlvbj4gdG8gbW9kaWZ5IHRoZSBz Y2hlbWEgdmFyaWFibGUncworICAgICAgIHZhbHVlLgogICAgICAgPC9wYXJhPgogICAgICA8L2xp c3RpdGVtPgogICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Jl Zi9sZXQuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvbGV0LnNnbWwKaW5kZXggYjA0MGI1ZTFmZS4u ZThiZjNmNmRkNCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9sZXQuc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvcmVmL2xldC5zZ21sCkBAIC0xNiw3ICsxNiw3IEBAIFBvc3RncmVTUUwgZG9j dW1lbnRhdGlvbgogCiAgPHJlZm5hbWVkaXY+CiAgIDxyZWZuYW1lPkxFVDwvcmVmbmFtZT4KLSAg PHJlZnB1cnBvc2U+Y2hhbmdlIGEgc2NoZW1hIHZhcmlhYmxlPC9yZWZwdXJwb3NlPgorICA8cmVm cHVycG9zZT5jaGFuZ2UgYSBzY2hlbWEgdmFyaWFibGUncyB2YWx1ZTwvcmVmcHVycG9zZT4KICA8 L3JlZm5hbWVkaXY+CiAKICA8cmVmc3lub3BzaXNkaXY+CkBAIC0yOSw3ICsyOSw3IEBAIExFVCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2NoZW1hX3ZhcmlhYmxlPC9yZXBsYWNlYWJs ZT4gPSA8cmVwbGFjZWFibGUKICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KIAogICA8cGFy YT4KLSAgIFRoZSA8Y29tbWFuZD5MRVQ8L2NvbW1hbmQ+IGNvbW1hbmQgc2V0cyBzcGVjaWZpZWQg c2NoZW1hIHZhcmlhYmxlLgorICAgVGhlIDxjb21tYW5kPkxFVDwvY29tbWFuZD4gY29tbWFuZCB1 cGRhdGVzIHRoZSBzcGVjaWZpZWQgc2NoZW1hIHZhcmlhYmxlJyB2YWx1ZS4KICAgPC9wYXJhPgog CiAgPC9yZWZzZWN0MT4KQEAgLTQyLDcgKzQyLDcgQEAgTEVUIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5zY2hlbWFfdmFyaWFibGU8L3JlcGxhY2VhYmxlPiA9IDxyZXBsYWNlYWJsZQog ICAgIDx0ZXJtPjxsaXRlcmFsPnNjaGVtYV92YXJpYWJsZTwvbGl0ZXJhbD48L3Rlcm0+CiAgICAg PGxpc3RpdGVtPgogICAgICA8cGFyYT4KLSAgICAgIFNwZWNpZmllcyB0aGF0IHRoZSBuYW1lIG9m IHNjaGVtYSB2YXJpYWJsZS4KKyAgICAgIFRoZSBuYW1lIG9mIHNjaGVtYSB2YXJpYWJsZS4KICAg ICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTUxLDcg KzUxLDcgQEAgTEVUIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zY2hlbWFfdmFyaWFi bGU8L3JlcGxhY2VhYmxlPiA9IDxyZXBsYWNlYWJsZQogICAgIDx0ZXJtPjxsaXRlcmFsPnNxbCBl eHByZXNzaW9uPC9saXRlcmFsPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CiAgICAgIDxwYXJhPgot ICAgICAgQW55IFNRTCBleHByZXNzaW9uLgorICAgICAgQW4gU1FMIGV4cHJlc3Npb24sIHRoZSBy ZXN1bHQgaXMgY2FzdCB0byB0aGUgc2NoZW1hIHZhcmlhYmxlJ3MgdHlwZS4KICAgICAgPC9wYXJh PgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTcxLDYgKzcxLDggQEAg TEVUIG15dmFyID0gKFNFTEVDVCBzdW0odmFsKSBGUk9NIHRhYik7CiAgIDx0aXRsZT5Db21wYXRp YmlsaXR5PC90aXRsZT4KIAogICA8cGFyYT4KKyAgIDwhLS0gdGhpcyBmZWVscyBsaWtlIGl0IG5l ZWRzIHRvIGJlIG1vcmUgc3BlY2lmaWMsCisgICAgICAgIGJ1dCBJIGRvbid0IGtub3cgZW5vdWdo IHRvIG1ha2UgaXQgc28gLS0+CiAgICA8bGl0ZXJhbD5MRVQ8L2xpdGVyYWw+IGV4dGVuZHMgc3lu dGF4IGRlZmluZWQgaW4gdGhlIFNRTAogICAgc3RhbmRhcmQuIFRoZSBzdGFuZGFyZCBrbm93cyA8 bGl0ZXJhbD5TRVQ8L2xpdGVyYWw+IGNvbW1hbmQsCiAgICB0aGF0IGlzIHVzZWQgZm9yIGRpZmZl cmVudCBwdXJwb3VzZSBpbiBQb3N0Z3JlU1FMLgo= --089e082cc754adb42b0564442eaf Content-Type: application/octet-stream; name="schema-variables-poc--dgj-response-full.patch" Content-Disposition: attachment; filename="schema-variables-poc--dgj-response-full.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jd6lwuli2 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKaW5kZXggNzFlMjBmMjc0MC4uZmJmNzhlNjAyZCAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwK QEAgLTE4MTMsNyArMTgxMyw4IEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVy YXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPiZsCiAgICAgICAgPGxp dGVyYWw+bTwvbGl0ZXJhbD4gPSBtYXRlcmlhbGl6ZWQgdmlldywKICAgICAgICA8bGl0ZXJhbD5j PC9saXRlcmFsPiA9IGNvbXBvc2l0ZSB0eXBlLAogICAgICAgIDxsaXRlcmFsPmY8L2xpdGVyYWw+ ID0gZm9yZWlnbiB0YWJsZSwKLSAgICAgICA8bGl0ZXJhbD5wPC9saXRlcmFsPiA9IHBhcnRpdGlv bmVkIHRhYmxlCisgICAgICAgPGxpdGVyYWw+cDwvbGl0ZXJhbD4gPSBwYXJ0aXRpb25lZCB0YWJs ZSwKKyAgICAgICA8bGl0ZXJhbD5WPC9saXRlcmFsPiA9IHNjaGVtYSB2YXJpYWJsZQogICAgICAg PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jLnNn bWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCmluZGV4IDQ4N2M3ZmY3NTAuLjM2ZTVlNDgyYTcg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1 bmMuc2dtbApAQCAtMTU3NDIsNiArMTU3NDIsODMgQEAgU0VMRUNUICogRlJPTSBwZ19sc19kaXIo Jy4nKSBXSVRIIE9SRElOQUxJVFkgQVMgdChscyxuKTsKIAogIDwvc2VjdDE+CiAKKyA8c2VjdDEg aWQ9ImZ1bmN0aW9ucy1zY2hlbWF2YXIiPgorICA8dGl0bGU+U2NoZW1hIFZhcmlhYmxlIEZ1bmN0 aW9uczwvdGl0bGU+CisKKyAgPGluZGV4dGVybSB6b25lPSJmdW5jdGlvbnMtc2NoZW1hdmFyIj4K KyAgIDxwcmltYXJ5PlNjaGVtYSBWYXJpYWJsZSBGdW5jdGlvbnM8L3ByaW1hcnk+CisgICA8c2Vj b25kYXJ5PmZ1bmN0aW9uczwvc2Vjb25kYXJ5PgorICA8L2luZGV4dGVybT4KKworICA8aW5kZXh0 ZXJtPgorICAgPHByaW1hcnk+Z2V0X3NjaGVtYV92YXJpYWJsZTwvcHJpbWFyeT4KKyAgPC9pbmRl eHRlcm0+CisKKyAgPGluZGV4dGVybT4KKyAgIDxwcmltYXJ5PnNldF9zY2hlbWFfdmFyaWFibGU8 L3ByaW1hcnk+CisgIDwvaW5kZXh0ZXJtPgorCisgIDxwYXJhPgorICAgVGhlc2UgZnVuY3Rpb25z IGFsbG93IHJlYWRpbmcgYW5kIHdyaXRpbmcgc2NoZW1hIHZhcmlhYmxlcyB2YWx1ZXMuCisgICBJ ZiB0aGUgc2NoZW1hIHZhcmlhYmxlIHJlZmVyZW5jZWQgZG9lcyBub3QgZXhpc3QgKGNyZWF0ZWQg dXNpbmcgPHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXZhcmlhYmxlIi8+KQorICAgdGhlc2UgZnVu Y3Rpb25zIHdpbGwgKGRvIHNvbWV0aGluZy4uLikuCisgIDwvcGFyYT4KKzwhLS0gSSdtIHByZWZl cmVudGlhbCB0byBnZXRfdmFyaWFibGVfdmFsdWUgYW5kIHNldF92YXJpYWJsZV92YWx1ZSAtLT4K KyAgPHRhYmxlIGlkPSJmdW5jdGlvbnMtc2NoZW1hdmFyLXRhYiI+CisgICA8dGl0bGU+RnVuY3Rp b25zIGZvciBhY2Nlc3MgdG8gc2NoZW1hIHZhcmlhYmxlczwvdGl0bGU+CisgICA8dGdyb3VwIGNv bHM9IjQiPgorICAgIDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT5GdW5jdGlvbjwv ZW50cnk+CisgICAgICA8ZW50cnk+QXJndW1lbnQgVHlwZTwvZW50cnk+CisgICAgICA8ZW50cnk+ UmV0dXJuIFR5cGU8L2VudHJ5PgorICAgICAgPGVudHJ5PkRlc2NyaXB0aW9uPC9lbnRyeT4KKyAg ICAgPC9yb3c+CisgICAgPC90aGVhZD4KKyAgICA8dGJvZHk+CisgICAgIDxyb3c+CisgICAgICA8 ZW50cnk+PGxpdGVyYWw+PGZ1bmN0aW9uPmdldF9zY2hlbWFfdmFyaWFibGUoPHBhcmFtZXRlcj52 YXJpYWJsZTwvcGFyYW1ldGVyPiwgPHBhcmFtZXRlcj5leHBlY3RlZCB0eXBlPC9wYXJhbWV0ZXI+ KTwvZnVuY3Rpb24+PC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+PHR5cGU+cmVnY2xh c3M8L3R5cGU+LCA8dHlwZT5hbnllbGVtZW50PC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+ PHR5cGU+YW55ZWxlbWVudDwvdHlwZT48L2VudHJ5PgorICAgICAgPGVudHJ5PgorICAgICAgIFJl dHVybnMgdmFsdWUgb2Ygc2NoZW1hIHZhcmlhYmxlIGNvbnZlcnRlZCB0byBleHBlY3RlZCB0eXBl LgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRy eT48bGl0ZXJhbD48ZnVuY3Rpb24+c2V0X3NjaGVtYV92YXJpYWJsZSg8cGFyYW1ldGVyPnZhcmlh YmxlPC9wYXJhbWV0ZXI+LCA8cGFyYW1ldGVyPnZhbHVlPC9wYXJhbWV0ZXI+KTwvZnVuY3Rpb24+ PC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+PHR5cGU+cmVnY2xhc3M8L3R5cGU+LCA8 dHlwZT5hbnllbGVtZW50PC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+PHR5cGU+dm9pZDwv dHlwZT48L2VudHJ5PgorICAgICAgPGVudHJ5PgorICAgICAgIFNldHMgdGhlIHZhbHVlIG9mIHNj aGVtYSB2YXJpYWJsZSB0byB2YWx1ZSwgYWZ0ZXIgY29udmVydGluZyB0aGUgaW5wdXQgdG8gdGhl IGNvcnJlY3QgdHlwZS4KKyAgICAgIDwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgPC90Ym9k eT4KKyAgIDwvdGdyb3VwPgorICA8L3RhYmxlPgorICBBbiBleGFtcGxlOgorICA8cGFyYT4KKwor PHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIFRFTVAgVkFSSUFCTEUgZm9vIEFTIG51bWVyaWM7CitT RUxFQ1Qgc2V0X3NjaGVtYV92YXJpYWJsZSgnZm9vJywgMzQ1LjQ0NSk7Cisgc2V0X3NjaGVtYV92 YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgZ2V0 X3NjaGVtYV92YXJpYWJsZSgnZm9vJywgbnVsbDo6bnVtZXJpYyk7CisKKyBnZXRfc2NoZW1hX3Zh cmlhYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMzQ1LjQ0NQorKDEg cm93KQorPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgorCisgPC9zZWN0MT4KKwogIDxzZWN0 MSBpZD0iZnVuY3Rpb25zLWluZm8iPgogICA8dGl0bGU+U3lzdGVtIEluZm9ybWF0aW9uIEZ1bmN0 aW9uczwvdGl0bGU+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dt bCBiL2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbAppbmRleCAyMmU2ODkzMjExLi4xZDM0 ZjcyYmRkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsbGZpbGVzLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL3JlZi9hbGxmaWxlcy5zZ21sCkBAIC05OSw2ICs5OSw3IEBAIENvbXBsZXRl IGxpc3Qgb2YgdXNhYmxlIHNnbWwgc291cmNlIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5LgogPCFF TlRJVFkgY3JlYXRlVHlwZSAgICAgICAgIFNZU1RFTSAiY3JlYXRlX3R5cGUuc2dtbCI+CiA8IUVO VElUWSBjcmVhdGVVc2VyICAgICAgICAgU1lTVEVNICJjcmVhdGVfdXNlci5zZ21sIj4KIDwhRU5U SVRZIGNyZWF0ZVVzZXJNYXBwaW5nICBTWVNURU0gImNyZWF0ZV91c2VyX21hcHBpbmcuc2dtbCI+ Cis8IUVOVElUWSBjcmVhdGVWYXJpYWJsZSAgICAgU1lTVEVNICJjcmVhdGVfdmFyaWFibGUuc2dt bCI+CiA8IUVOVElUWSBjcmVhdGVWaWV3ICAgICAgICAgU1lTVEVNICJjcmVhdGVfdmlldy5zZ21s Ij4KIDwhRU5USVRZIGRlYWxsb2NhdGUgICAgICAgICBTWVNURU0gImRlYWxsb2NhdGUuc2dtbCI+ CiA8IUVOVElUWSBkZWNsYXJlICAgICAgICAgICAgU1lTVEVNICJkZWNsYXJlLnNnbWwiPgpAQCAt MTQ3LDYgKzE0OCw3IEBAIENvbXBsZXRlIGxpc3Qgb2YgdXNhYmxlIHNnbWwgc291cmNlIGZpbGVz IGluIHRoaXMgZGlyZWN0b3J5LgogPCFFTlRJVFkgZHJvcFR5cGUgICAgICAgICAgIFNZU1RFTSAi ZHJvcF90eXBlLnNnbWwiPgogPCFFTlRJVFkgZHJvcFVzZXIgICAgICAgICAgIFNZU1RFTSAiZHJv cF91c2VyLnNnbWwiPgogPCFFTlRJVFkgZHJvcFVzZXJNYXBwaW5nICAgIFNZU1RFTSAiZHJvcF91 c2VyX21hcHBpbmcuc2dtbCI+Cis8IUVOVElUWSBkcm9wVmFyaWFibGUgICAgICAgU1lTVEVNICJk cm9wX3ZhcmlhYmxlLnNnbWwiPgogPCFFTlRJVFkgZHJvcFZpZXcgICAgICAgICAgIFNZU1RFTSAi ZHJvcF92aWV3LnNnbWwiPgogPCFFTlRJVFkgZW5kICAgICAgICAgICAgICAgIFNZU1RFTSAiZW5k LnNnbWwiPgogPCFFTlRJVFkgZXhlY3V0ZSAgICAgICAgICAgIFNZU1RFTSAiZXhlY3V0ZS5zZ21s Ij4KQEAgLTE1NSw2ICsxNTcsNyBAQCBDb21wbGV0ZSBsaXN0IG9mIHVzYWJsZSBzZ21sIHNvdXJj ZSBmaWxlcyBpbiB0aGlzIGRpcmVjdG9yeS4KIDwhRU5USVRZIGdyYW50ICAgICAgICAgICAgICBT WVNURU0gImdyYW50LnNnbWwiPgogPCFFTlRJVFkgaW1wb3J0Rm9yZWlnblNjaGVtYSBTWVNURU0g ImltcG9ydF9mb3JlaWduX3NjaGVtYS5zZ21sIj4KIDwhRU5USVRZIGluc2VydCAgICAgICAgICAg ICBTWVNURU0gImluc2VydC5zZ21sIj4KKzwhRU5USVRZIGxldCAgICAgICAgICAgICAgICBTWVNU RU0gImxldC5zZ21sIj4KIDwhRU5USVRZIGxpc3RlbiAgICAgICAgICAgICBTWVNURU0gImxpc3Rl bi5zZ21sIj4KIDwhRU5USVRZIGxvYWQgICAgICAgICAgICAgICBTWVNURU0gImxvYWQuc2dtbCI+ CiA8IUVOVElUWSBsb2NrICAgICAgICAgICAgICAgU1lTVEVNICJsb2NrLnNnbWwiPgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdmFyaWFibGUuc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX3ZhcmlhYmxlLnNnbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMC4uYzA2YjBlNzUxNwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYv Y3JlYXRlX3ZhcmlhYmxlLnNnbWwKQEAgLTAsMCArMSwxNTEgQEAKKzwhLS0KK2RvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX3ZhcmlhYmxlLnNnbWwKK1Bvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgorLS0+ CisKKzxyZWZlbnRyeSBpZD0ic3FsLWNyZWF0ZXZhcmlhYmxlIj4KKyA8aW5kZXh0ZXJtIHpvbmU9 InNxbC1jcmVhdGV2YXJpYWJsZSI+CisgIDxwcmltYXJ5PkNSRUFURSBWQVJJQUJMRTwvcHJpbWFy eT4KKyA8L2luZGV4dGVybT4KKworIDxyZWZtZXRhPgorICA8cmVmZW50cnl0aXRsZT5DUkVBVEUg VkFSSUFCTEU8L3JlZmVudHJ5dGl0bGU+CisgIDxtYW52b2xudW0+NzwvbWFudm9sbnVtPgorICA8 cmVmbWlzY2luZm8+U1FMIC0gTGFuZ3VhZ2UgU3RhdGVtZW50czwvcmVmbWlzY2luZm8+CisgPC9y ZWZtZXRhPgorCisgPHJlZm5hbWVkaXY+CisgIDxyZWZuYW1lPkNSRUFURSBWQVJJQUJMRTwvcmVm bmFtZT4KKyAgPHJlZnB1cnBvc2U+ZGVmaW5lIGEgbmV3IHBlcm1pc3Npb25lZCB0eXBlZCBzY2hl bWEgdmFyaWFibGU8L3JlZnB1cnBvc2U+CisgPC9yZWZuYW1lZGl2PgorCisgPHJlZnN5bm9wc2lz ZGl2PgorPHN5bm9wc2lzPgorQ1JFQVRFIFZBUklBQkxFIFsgSUYgTk9UIEVYSVNUUyBdIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gWyBBUyBdIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kYXRhX3R5cGU8L3JlcGxhY2VhYmxlPiBdCis8L3N5 bm9wc2lzPgorIDwvcmVmc3lub3BzaXNkaXY+Cis8IS0tIGEgbXVsdGlwbGUgdmFyaWFibGUgdmVy c2lvbiBvZiB0aGlzIG1pZ2h0IGJlIHVzZWZ1bC4uLgorICAgICBuYW1lIGRhdGFfdHlwZSBbLCBu YW1lIGRhdGFfdHlwZV0gLS0+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5EZXNjcmlwdGlvbjwv dGl0bGU+CisKKyAgPHBhcmE+CisgICA8Y29tbWFuZD5DUkVBVEUgVkFSSUFCTEU8L2NvbW1hbmQ+ IGNyZWF0ZXMgYSBuZXcgc2NoZW1hIHZhcmlhYmxlLgorICAgVGhlc2UgdmFyaWFibGVzIGFyZSBz Y2FsYXIgdHlwZWQsIG5vbi10cmFuc2FjdGlvbmFsLCBhbmQsIGxpa2UgcmVsYXRpb25zLAorICAg ZXhpc3Qgd2l0aGluIGEgc2NoZW1hIHdpdGggYWNjZXNzIGNvbnRyb2xsZWQgdmlhCisgICA8Y29t bWFuZD5HUkFOVDwvY29tbWFuZD4gYW5kIDxjb21tYW5kPlJFVk9LRTwvY29tbWFuZD4uCisgIDwv cGFyYT4KKworICA8cGFyYT4KKyAgIFRoZSB2YWx1ZSBvZiBhIHNjaGVtYSB2YXJpYWJsZSBpcyBz ZXNzaW9uLWxvY2FsLiBSZXRyaWV2aW5nCisgICBhIHZhcmlhYmxlJ3MgdmFsdWUgd2lsbCByZXR1 cm4gTlVMTCB1bmxlc3MgaXRzIHZhbHVlIGhhcyBiZWVuIHNldAorICAgdG8gc29tZXRoaW5nIGVs c2UgaW4gdGhlIGN1cnJlbnQgc2Vzc2lvbi4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgUmV0 cmlldmFsIGlzIGRvbmUgdmlhIHRoZSA8ZnVuY3Rpb24+Z2V0X3NjaGVtYV92YXJpYWJsZTwvZnVu Y3Rpb24+ZHVueHJpb24gb3IgdGhlIFNRTAorICAgY29tbWFuZCA8Y29tbWFuZD5TRUxFQ1Q8L2Nv bW1hbmQ+LiAgU2V0dGluZyBvZiB2YWx1ZXMgaXMgZG9uZSB2aWEgdGhlCisgICA8ZnVuY3Rpb24+ c2V0X3NjaGVtYV92YXJpYWJsZTwvZnVuY3Rpb24+IGZ1bmN0aW9uIG9yIHRoZSBTUUwgY29tbWFu ZAorICAgPGNvbW1hbmQ+TEVUPC9jb21tYW5kPi4KKyAgIE5vdGFibHksIHdoaWxlIHNjaGVtYSB2 YXJpYWJsZXMgYXJlIGluIG1hbnkgd2F5cyBhIGtpbmQgb2YgdGFibGUgeW91IGNhbm5vdCB1c2UK KyAgIDxjb21tYW5kPlVQREFURTwvY29tbWFuZD4gb24gdGhlbS4KKyAgPC9wYXJhPgorCisgIDxw YXJhPgorICAgRm9yIHB1cnBvc2VzIG9mIG5hbWUgdW5pcXVlbmVzcyByZWxhdGlvbi1saWtlIG9i amVjdHMgKGUuZy4sIHRhYmxlcywgaW5kZXhlcykKKyAgIHdpdGhpbiB0aGUgc2FtZSBzY2hlbWEg YXJlIGNvbnNpZGVyZWQuICBpLmUuLCB5b3UgY2Fubm90IGdpdmUgYSB0YWJsZSBhbmQgYQorICAg c2NoZW1hIHZhcmlhYmxlIHRoZSBzYW1lIG5hbWUuICBUaGlzIGlzIGEgY29uc2VxdWVuY2Ugb2Yg dGhlbSBiZWluZyB0cmVhdGVkCisgICBsaWtlIHJlbGF0aW9ucyBmb3IgcHVycG9zZXMgb2YgPGNv bW1hbmQ+U0VMRUNUPC9jb21tYW5kPi4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8 dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+CisKKyAgPHZhcmlhYmxlbGlzdD4KKyAgIDx2YXJsaXN0 ZW50cnk+CisgICAgPHRlcm0+PGxpdGVyYWw+SUYgTk9UIEVYSVNUUzwvbGl0ZXJhbD48L3Rlcm0+ CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIERvIG5vdCB0aHJvdyBhbiBlcnJv ciBpZiB0aGUgbmFtZSBhbHJlYWR5IGV4aXN0cy4gQSBub3RpY2UgaXMgaXNzdWVkIGluIHRoaXMg Y2FzZS4KKyAgICAgIE5vdGUgdGhhdCB0eXBlIG9mIHRoZSB2YXJpYWJsZSBpcyBub3QgY29uc2lk ZXJlZCwgbm9yIGNvdWxkIGl0IGJlIHNpbmNlIHRoZSBuYW1lc3BhY2UKKyAgICAgIHNlYXJjaGVk IGNvbnRhaW5zIG5vbi12YXJpYWJsZSBvYmplY3RzLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0 aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJt PjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+ CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBuYW1lIChvcHRpb25hbGx5 IHNjaGVtYS1xdWFsaWZpZWQpIG9mIHRoZSB2YXJpYWJsZSB0byBiZSBjcmVhdGVkLgorICAgICA8 L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlz dGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kYXRhX3R5 cGU8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAg ICAgVGhlIG5hbWUgKG9wdGlvbmFsbHkgc2NoZW1hLXF1YWxpZmllZCkgb2YgdGhlIGRhdGEgdHlw ZSBvZiB0aGUgdmFyaWFibGUgdG8gYmUgY3JlYXRlZC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlz dGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKyAgPC92YXJpYWJsZWxpc3Q+CisgPC9yZWZzZWN0 MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPk5vdGVzPC90aXRsZT4KKworICA8cGFyYT4KKyAg IFVzZSA8Y29tbWFuZD5EUk9QIFZBUklBQkxFPC9jb21tYW5kPiB0byByZW1vdmUgYSB2YXJpYWJs ZS4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5FeGFt cGxlczwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBDcmVhdGUgYW4gaW50ZWdlciB2YXJpYWJsZSA8 bGl0ZXJhbD52YXIxPC9saXRlcmFsPjoKKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFURSBWQVJJQUJM RSB2YXIxIEFTIGludGVnZXI7Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+CisKKyAgPHBh cmE+CisgICBTZXQgdGhpcyB2YXJpYWJsZSdzIHZhbHVlOyB0aGVuIHJldHJpZXZlIGl0IGNvbnZl cnRlZCB0byBudW1lcmljLgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIFZBUklBQkxFCitwb3N0 Z3Jlcz0jIHNlbGVjdCBzZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgMTApOworIHNldF9zY2hl bWFfdmFyaWFibGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworcG9zdGdy ZXM9IyBzZWxlY3QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIG51bGw6Om51bWVyaWMpOwor IGdldF9zY2hlbWFfdmFyaWFibGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgICAgIDEwCisoMSByb3cpCis8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+CisgPC9yZWZz ZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkNvbXBhdGliaWxpdHk8L3RpdGxlPgorCisg IDxwYXJhPgorICAgPGNvbW1hbmQ+Q1JFQVRFIFZBUklBQkxFPC9jb21tYW5kPiBpcyBhIFBvc3Rn cmVTUUwgZmVhdHVyZS4KKyAgIDwhLS0gVGhlIGNob2ljZSBvZiB3b3JkaW5nIGhlcmUgc2VlbXMg dG8gYmUgbGVmdCB0byBwZXJzb25hbCBwcmVmZXJlbmNlLi4uIC0tPgorICA8L3BhcmE+CisgPC9y ZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPlNlZSBBbHNvPC90aXRsZT4KKworICA8 c2ltcGxlbGlzdCB0eXBlPSJpbmxpbmUiPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJzcWwt ZHJvcHZhcmlhYmxlIi8+PC9tZW1iZXI+CisgIDwvc2ltcGxlbGlzdD4KKyA8L3JlZnNlY3QxPgor Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9kaXNjYXJkLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvcmVmL2Rpc2NhcmQuc2dtbAppbmRleCA2YjkwOWI3MjMyLi4zOTU0NTNi YmEwIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2Rpc2NhcmQuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvcmVmL2Rpc2NhcmQuc2dtbApAQCAtMjEsNyArMjEsNyBAQCBQb3N0Z3JlU1FMIGRv Y3VtZW50YXRpb24KIAogIDxyZWZzeW5vcHNpc2Rpdj4KIDxzeW5vcHNpcz4KLURJU0NBUkQgeyBB TEwgfCBQTEFOUyB8IFNFUVVFTkNFUyB8IFRFTVBPUkFSWSB8IFRFTVAgfQorRElTQ0FSRCB7IEFM TCB8IFBMQU5TIHwgU0VRVUVOQ0VTIHwgVEVNUE9SQVJZIHwgVEVNUCB8IFZBUklBQkxFU30KIDwv c3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KIApAQCAtNzYsNiArNzYsMTYgQEAgRElTQ0FS RCB7IEFMTCB8IFBMQU5TIHwgU0VRVUVOQ0VTIHwgVEVNUE9SQVJZIHwgVEVNUCB9CiAgICA8L3Zh cmxpc3RlbnRyeT4KIAogICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5WQVJJ QUJMRVM8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAg ICBTZXRzIHRoZSB2YWx1ZSBvZiBhbGwgc2NoZW1hIHZhcmlhYmxlcyB0byBOVUxMLgorICAgICAg PCEtLSBXaGF0IGhhcHBlbnMgdG8gdGVtcG9yYXJ5IHNjaGVtYSB2YXJpYWJsZXMgLS0+CisgICAg IDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJs aXN0ZW50cnk+CiAgICAgPHRlcm0+PGxpdGVyYWw+QUxMPC9saXRlcmFsPjwvdGVybT4KICAgICA8 bGlzdGl0ZW0+CiAgICAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9kcm9w X3ZhcmlhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2Ryb3BfdmFyaWFibGUuc2dtbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wNjEzMGZkNTEwCi0tLSAvZGV2L251 bGwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9kcm9wX3ZhcmlhYmxlLnNnbWwKQEAgLTAsMCArMSw5 MiBAQAorPCEtLQorZG9jL3NyYy9zZ21sL3JlZi9kcm9wX3ZhcmlhYmxlLnNnbWwKK1Bvc3RncmVT UUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxyZWZlbnRyeSBpZD0ic3FsLWRyb3B2YXJpYWJsZSI+ CisgPGluZGV4dGVybSB6b25lPSJzcWwtZHJvcHZhcmlhYmxlIj4KKyAgPHByaW1hcnk+RFJPUCBW QVJJQUJMRTwvcHJpbWFyeT4KKyA8L2luZGV4dGVybT4KKworIDxyZWZtZXRhPgorICA8cmVmZW50 cnl0aXRsZT5EUk9QIFZBUklBQkxFPC9yZWZlbnRyeXRpdGxlPgorICA8bWFudm9sbnVtPjc8L21h bnZvbG51bT4KKyAgPHJlZm1pc2NpbmZvPlNRTCAtIExhbmd1YWdlIFN0YXRlbWVudHM8L3JlZm1p c2NpbmZvPgorIDwvcmVmbWV0YT4KKworIDxyZWZuYW1lZGl2PgorICA8cmVmbmFtZT5EUk9QIFZB UklBQkxFPC9yZWZuYW1lPgorICA8cmVmcHVycG9zZT5yZW1vdmUgYSBzY2hlbWEgdmFyaWFibGU8 L3JlZnB1cnBvc2U+CisgPC9yZWZuYW1lZGl2PgorCisgPHJlZnN5bm9wc2lzZGl2PgorPHN5bm9w c2lzPgorRFJPUCBWQVJJQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBbIENBU0NBREUgfCBSRVNUUklDVCBd Cis8L3N5bm9wc2lzPgorIDwvcmVmc3lub3BzaXNkaXY+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRs ZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgPHBhcmE+CisgICA8Y29tbWFuZD5EUk9QIFZBUklB QkxFPC9jb21tYW5kPiByZW1vdmVzIGEgc2NoZW1hIHZhcmlhYmxlLgorICAgQSB2YXJpYWJsZSBj YW4gb25seSBiZSBkcm9wcGVkIGJ5IGl0cyBvd25lciBvciBhIHN1cGVydXNlci4KKyAgIDwhLS0g dGhpcyB3b3VsZCBzdWdnZXN0IHRoYXQgd2UgbmVlZCBhbiBhbHRlciB2YXJpYWJsZSBvd25lciB0 byBjb21tYW5kIC0tPgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAg PHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxlPgorCisgIDx2YXJpYWJsZWxpc3Q+CisgICA8dmFybGlz dGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPklGIEVYSVNUUzwvbGl0ZXJhbD48L3Rlcm0+Cisg ICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIERvIG5vdCB0aHJvdyBhbiBlcnJvciBp ZiB0aGUgdmFyaWFibGUgZG9lcyBub3QgZXhpc3QuIEEgbm90aWNlIGlzIGlzc3VlZAorICAgICAg aW4gdGhpcyBjYXNlLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlz dGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgor ICAgICA8cGFyYT4KKyAgICAgIFRoZSBuYW1lIChvcHRpb25hbGx5IHNjaGVtYS1xdWFsaWZpZWQp IG9mIGEgc2NoZW1hIHZhcmlhYmxlLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlzdD4KKyA8L3JlZnNlY3QxPgorCisgPHJl ZnNlY3QxPgorICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgorCisgIDxwYXJhPgorICAgVG8gcmVt b3ZlIHRoZSBzY2hlbWEgdmFyaWFibGUgPGxpdGVyYWw+dmFyMTwvbGl0ZXJhbD46CisKKzxwcm9n cmFtbGlzdGluZz4KK0RST1AgVkFSSUFCTEUgdmFyMTsKKzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJh PgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5Db21wYXRpYmlsaXR5PC90 aXRsZT4KKworICA8cGFyYT4KKyAgIDxjb21tYW5kPkRST1AgVkFSSUFCTEU8L2NvbW1hbmQ+IGlz IHByb3ByaWV0YXJ5IFBvc3RncmVTUUwgY29tbWFuZC4KKyAgIDwhLS0gY3JlYXRlIHZhcmlhYmxl IGlzIGEgIlBvc3RncmVTUUwgZmVhdHVyZSIsCisgICAgICAgIHRoaXMgaXMgYSAicHJvcHJpZXRh cnkgUG9zdGdyZVNRTCBjb21tYW5kIiAuLi4gLS0+CisgIDwvcGFyYT4KKyA8L3JlZnNlY3QxPgor CisgPHJlZnNlY3QxPgorICA8dGl0bGU+U2VlIEFsc288L3RpdGxlPgorCisgIDxzaW1wbGVsaXN0 IHR5cGU9ImlubGluZSI+CisgICA8bWVtYmVyPjx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGV2YXJp YWJsZSIvPjwvbWVtYmVyPgorICA8L3NpbXBsZWxpc3Q+CisgPC9yZWZzZWN0MT4KKworPC9yZWZl bnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvZ3JhbnQuc2dtbCBiL2RvYy9zcmMv c2dtbC9yZWYvZ3JhbnQuc2dtbAppbmRleCBmZjY0YzdhM2JhLi4wMDYzNjRlYmU1IDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2dyYW50LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9n cmFudC5zZ21sCkBAIC03OSw2ICs3OSwxMiBAQCBHUkFOVCB7IFVTQUdFIHwgQUxMIFsgUFJJVklM RUdFUyBdIH0KICAgICBPTiBUWVBFIDxyZXBsYWNlYWJsZT50eXBlX25hbWU8L3JlcGxhY2VhYmxl PiBbLCAuLi5dCiAgICAgVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfc3Bl Y2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gWyBXSVRIIEdSQU5UIE9QVElPTiBdCiAK K0dSQU5UIHsgeyBTRUxFQ1QgfCBVUERBVEUgfQorICAgIFssIC4uLl0gfCBBTEwgWyBQUklWSUxF R0VTIF0gfQorICAgIE9OIHsgVkFSSUFCTEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnZhcmlhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCisgICAgICAgICB8IEFMTCBWQVJJ QUJMRVMgSU4gU0NIRU1BIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zY2hlbWFfbmFt ZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gfQorICAgIFRPIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5yb2xlX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dIFsgV0lUSCBH UkFOVCBPUFRJT04gXQorCiA8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5yb2xlX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiBjYW4gYmU6PC9waHJhc2U+CiAK ICAgICBbIEdST1VQIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwv cmVwbGFjZWFibGU+CkBAIC0xNjcsNiArMTczLDcgQEAgR1JBTlQgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gVE8gPHJlcGxhY2UK ICAgIGZvcmVpZ24gc2VydmVycywKICAgIGxhcmdlIG9iamVjdHMsCiAgICBzY2hlbWFzLAorICAg c2NoZW1hIHZhcmlhYmxlcywKICAgIG9yIHRhYmxlc3BhY2VzLgogICAgRm9yIG90aGVyIHR5cGVz IG9mIG9iamVjdHMsIHRoZSBkZWZhdWx0IHByaXZpbGVnZXMKICAgIGdyYW50ZWQgdG8gPGxpdGVy YWw+UFVCTElDPC9saXRlcmFsPiBhcmUgYXMgZm9sbG93czoKQEAgLTIwNCw2ICsyMTEsOCBAQCBH UkFOVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cm9sZV9uYW1lPC9yZXBsYWNlYWJs ZT4gWywgLi4uXSBUTyA8cmVwbGFjZQogICAgICAgIEZvciBzZXF1ZW5jZXMsIHRoaXMgcHJpdmls ZWdlIGFsc28gYWxsb3dzIHRoZSB1c2Ugb2YgdGhlCiAgICAgICAgPGZ1bmN0aW9uPmN1cnJ2YWw8 L2Z1bmN0aW9uPiBmdW5jdGlvbi4KICAgICAgICBGb3IgbGFyZ2Ugb2JqZWN0cywgdGhpcyBwcml2 aWxlZ2UgYWxsb3dzIHRoZSBvYmplY3QgdG8gYmUgcmVhZC4KKyAgICAgICBGb3Igc2NoZW1hIHZh cmlhYmxlcywgdGhpcyBwcml2aWxlZ2UgYWxsb3dzIHRoZSA8ZnVuY3Rpb24+Z2V0X3NjaGVtYV92 YXJpYWJsZTwvZnVuY3Rpb24+CisgICAgICAgdG8gcmVhZCB0aGUgdmFyaWFibGUncyB2YWx1ZS4K ICAgICAgIDwvcGFyYT4KICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3RlbnRyeT4KQEAg LTIzOSw2ICsyNDgsOSBAQCBHUkFOVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cm9s ZV9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBUTyA8cmVwbGFjZQogICAgICAgIDxmdW5jdGlv bj5zZXR2YWw8L2Z1bmN0aW9uPiBmdW5jdGlvbnMuCiAgICAgICAgRm9yIGxhcmdlIG9iamVjdHMs IHRoaXMgcHJpdmlsZWdlIGFsbG93cyB3cml0aW5nIG9yIHRydW5jYXRpbmcgdGhlCiAgICAgICAg b2JqZWN0LgorICAgICAgIEZvciBzY2hlbWEgdmFyaWFibGVzLCB0aGlzIHByaXZpbGVnZSBhbGxv d3MgPGNvbW1hbmQ+TEVUPC9jb21tYW5kPgorICAgICAgIGFuZCA8ZnVuY3Rpb24+c2V0X3NjaGVt YV92YXJpYWJsZTwvZnVuY3Rpb24+IHRvIG1vZGlmeSB0aGUgc2NoZW1hIHZhcmlhYmxlJ3MKKyAg ICAgICB2YWx1ZS4KICAgICAgIDwvcGFyYT4KICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zhcmxp c3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvbGV0LnNnbWwgYi9kb2Mvc3Jj L3NnbWwvcmVmL2xldC5zZ21sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu LmU4YmYzZjZkZDQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2xldC5zZ21s CkBAIC0wLDAgKzEsOTAgQEAKKzwhLS0KK2RvYy9zcmMvc2dtbC9yZWYvbGV0LnNnbWwKK1Bvc3Rn cmVTUUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxyZWZlbnRyeSBpZD0ic3FsLWxldCI+CisgPGlu ZGV4dGVybSB6b25lPSJzcWwtbGV0Ij4KKyAgPHByaW1hcnk+TEVUPC9wcmltYXJ5PgorIDwvaW5k ZXh0ZXJtPgorCisgPHJlZm1ldGE+CisgIDxyZWZlbnRyeXRpdGxlPkxFVDwvcmVmZW50cnl0aXRs ZT4KKyAgPG1hbnZvbG51bT43PC9tYW52b2xudW0+CisgIDxyZWZtaXNjaW5mbz5TUUwgLSBMYW5n dWFnZSBTdGF0ZW1lbnRzPC9yZWZtaXNjaW5mbz4KKyA8L3JlZm1ldGE+CisKKyA8cmVmbmFtZWRp dj4KKyAgPHJlZm5hbWU+TEVUPC9yZWZuYW1lPgorICA8cmVmcHVycG9zZT5jaGFuZ2UgYSBzY2hl bWEgdmFyaWFibGUncyB2YWx1ZTwvcmVmcHVycG9zZT4KKyA8L3JlZm5hbWVkaXY+CisKKyA8cmVm c3lub3BzaXNkaXY+Cis8c3lub3BzaXM+CitMRVQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnNjaGVtYV92YXJpYWJsZTwvcmVwbGFjZWFibGU+ID0gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnNxbF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4KKzwvc3lub3BzaXM+CisgPC9y ZWZzeW5vcHNpc2Rpdj4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRs ZT4KKworICA8cGFyYT4KKyAgIFRoZSA8Y29tbWFuZD5MRVQ8L2NvbW1hbmQ+IGNvbW1hbmQgdXBk YXRlcyB0aGUgc3BlY2lmaWVkIHNjaGVtYSB2YXJpYWJsZScgdmFsdWUuCisgIDwvcGFyYT4KKwor IDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4K KworICA8dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJh bD5zY2hlbWFfdmFyaWFibGU8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAg PHBhcmE+CisgICAgICBUaGUgbmFtZSBvZiBzY2hlbWEgdmFyaWFibGUuCisgICAgIDwvcGFyYT4K KyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+ CisgICAgPHRlcm0+PGxpdGVyYWw+c3FsIGV4cHJlc3Npb248L2xpdGVyYWw+PC90ZXJtPgorICAg IDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBBbiBTUUwgZXhwcmVzc2lvbiwgdGhlIHJl c3VsdCBpcyBjYXN0IHRvIHRoZSBzY2hlbWEgdmFyaWFibGUncyB0eXBlLgorICAgICA8L3BhcmE+ CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlzdD4K KworICA8cGFyYT4KKyAgIEV4YW1wbGU6Cis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUgVkFSSUFC TEUgbXl2YXIgQVMgaW50ZWdlcjsKK0xFVCBteXZhciA9IDEwOworTEVUIG15dmFyID0gKFNFTEVD VCBzdW0odmFsKSBGUk9NIHRhYik7Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+CisgPC9y ZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkNvbXBhdGliaWxpdHk8L3RpdGxlPgor CisgIDxwYXJhPgorICAgPCEtLSB0aGlzIGZlZWxzIGxpa2UgaXQgbmVlZHMgdG8gYmUgbW9yZSBz cGVjaWZpYywKKyAgICAgICAgYnV0IEkgZG9uJ3Qga25vdyBlbm91Z2ggdG8gbWFrZSBpdCBzbyAt LT4KKyAgIDxsaXRlcmFsPkxFVDwvbGl0ZXJhbD4gZXh0ZW5kcyBzeW50YXggZGVmaW5lZCBpbiB0 aGUgU1FMCisgICBzdGFuZGFyZC4gVGhlIHN0YW5kYXJkIGtub3dzIDxsaXRlcmFsPlNFVDwvbGl0 ZXJhbD4gY29tbWFuZCwKKyAgIHRoYXQgaXMgdXNlZCBmb3IgZGlmZmVyZW50IHB1cnBvdXNlIGlu IFBvc3RncmVTUUwuCisgIDwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8 dGl0bGU+U2VlIEFsc288L3RpdGxlPgorCisgIDxzaW1wbGVsaXN0IHR5cGU9ImlubGluZSI+Cisg ICA8bWVtYmVyPjx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGV2YXJpYWJsZSIvPjwvbWVtYmVyPgor ICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJzcWwtZHJvcHZhcmlhYmxlIi8+PC9tZW1iZXI+Cisg IDwvc2ltcGxlbGlzdD4KKyA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9yZWYvcmV2b2tlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3Jldm9rZS5zZ21s CmluZGV4IDcwMTgyMDJmMTQuLjczNzc4ZjAxZjkgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9y ZWYvcmV2b2tlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9yZXZva2Uuc2dtbApAQCAtMTA4 LDYgKzEwOCwxNCBAQCBSRVZPS0UgWyBHUkFOVCBPUFRJT04gRk9SIF0KIFJFVk9LRSBbIEFETUlO IE9QVElPTiBGT1IgXQogICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yb2xlX25h bWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIEZST00gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0KICAgICBbIENBU0NBREUgfCBSRVNU UklDVCBdCisKK1JFVk9LRSBbIEdSQU5UIE9QVElPTiBGT1IgXQorICAgIHsgeyBTRUxFQ1QgfCBV UERBVEUgfQorICAgIFssIC4uLl0gfCBBTEwgWyBQUklWSUxFR0VTIF0gfQorICAgIE9OIHsgVkFS SUFCTEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhcmlhYmxlX25hbWU8L3JlcGxh Y2VhYmxlPiBbLCAuLi5dCisgICAgICAgICB8IEFMTCBWQVJJQUJMRVMgSU4gU0NIRU1BIDxyZXBs YWNlYWJsZT5zY2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gfQorICAgIEZST00geyBb IEdST1VQIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFj ZWFibGU+IHwgUFVCTElDIH0gWywgLi4uXQorICAgIFsgQ0FTQ0FERSB8IFJFU1RSSUNUIF0KIDwv c3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L3JlZmVyZW5jZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sCmluZGV4IGQyN2Zi NDE0ZjcuLmIzZjlmZmY1MTEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWZlcmVuY2Uuc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNnbWwKQEAgLTEyNyw2ICsxMjcsNyBAQAog ICAgJmNyZWF0ZVR5cGU7CiAgICAmY3JlYXRlVXNlcjsKICAgICZjcmVhdGVVc2VyTWFwcGluZzsK KyAgICZjcmVhdGVWYXJpYWJsZTsKICAgICZjcmVhdGVWaWV3OwogICAgJmRlYWxsb2NhdGU7CiAg ICAmZGVjbGFyZTsKQEAgLTE3NSw2ICsxNzYsNyBAQAogICAgJmRyb3BUeXBlOwogICAgJmRyb3BV c2VyOwogICAgJmRyb3BVc2VyTWFwcGluZzsKKyAgICZkcm9wVmFyaWFibGU7CiAgICAmZHJvcFZp ZXc7CiAgICAmZW5kOwogICAgJmV4ZWN1dGU7CkBAIC0xODMsNiArMTg1LDcgQEAKICAgICZncmFu dDsKICAgICZpbXBvcnRGb3JlaWduU2NoZW1hOwogICAgJmluc2VydDsKKyAgICZsZXQ7CiAgICAm bGlzdGVuOwogICAgJmxvYWQ7CiAgICAmbG9jazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvYWNsY2hrLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jCmluZGV4IDExNTY2 MjdiOWUuLjI2ODUzNGVhODcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hr LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYwpAQCAtMjg0LDYgKzI4NCw5IEBA IHJlc3RyaWN0X2FuZF9jaGVja19ncmFudChib29sIGlzX2dyYW50LCBBY2xNb2RlIGF2YWlsX2dv cHRpb25zLCBib29sIGFsbF9wcml2cywKIAkJY2FzZSBPQkpFQ1RfVFlQRToKIAkJCXdob2xlX21h c2sgPSBBQ0xfQUxMX1JJR0hUU19UWVBFOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklB QkxFOgorCQkJd2hvbGVfbWFzayA9IEFDTF9BTExfUklHSFRTX1ZBUklBQkxFOworCQkJYnJlYWs7 CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG9iamVjdCB0eXBlOiAl ZCIsIG9ianR5cGUpOwogCQkJLyogbm90IHJlYWNoZWQsIGJ1dCBrZWVwIGNvbXBpbGVyIHF1aWV0 ICovCkBAIC01MDYsNiArNTA5LDEwIEBAIEV4ZWN1dGVHcmFudFN0bXQoR3JhbnRTdG10ICpzdG10 KQogCQkJYWxsX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19GT1JFSUdOX1NFUlZFUjsKIAkJ CWVycm9ybXNnID0gZ2V0dGV4dF9ub29wKCJpbnZhbGlkIHByaXZpbGVnZSB0eXBlICVzIGZvciBm b3JlaWduIHNlcnZlciIpOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJ YWxsX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19WQVJJQUJMRTsKKwkJCWVycm9ybXNnID0g Z2V0dGV4dF9ub29wKCJpbnZhbGlkIHByaXZpbGVnZSB0eXBlICVzIGZvciBzY2hlbWEgdmFyaWFi bGUiKTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXpl ZCBHcmFudFN0bXQub2JqdHlwZTogJWQiLAogCQkJCSAoaW50KSBzdG10LT5vYmp0eXBlKTsKQEAg LTU3Niw2ICs1ODMsNyBAQCBFeGVjR3JhbnRTdG10X29pZHMoSW50ZXJuYWxHcmFudCAqaXN0bXQp CiAJewogCQljYXNlIE9CSkVDVF9UQUJMRToKIAkJY2FzZSBPQkpFQ1RfU0VRVUVOQ0U6CisJCWNh c2UgT0JKRUNUX1ZBUklBQkxFOgogCQkJRXhlY0dyYW50X1JlbGF0aW9uKGlzdG10KTsKIAkJCWJy ZWFrOwogCQljYXNlIE9CSkVDVF9EQVRBQkFTRToKQEAgLTY0NSw2ICs2NTMsNyBAQCBvYmplY3RO YW1lc1RvT2lkcyhPYmplY3RUeXBlIG9ianR5cGUsIExpc3QgKm9iam5hbWVzKQogCXsKIAkJY2Fz ZSBPQkpFQ1RfVEFCTEU6CiAJCWNhc2UgT0JKRUNUX1NFUVVFTkNFOgorCQljYXNlIE9CSkVDVF9W QVJJQUJMRToKIAkJCWZvcmVhY2goY2VsbCwgb2JqbmFtZXMpCiAJCQl7CiAJCQkJUmFuZ2VWYXIg ICAqcmVsdmFyID0gKFJhbmdlVmFyICopIGxmaXJzdChjZWxsKTsKQEAgLTEwMjEsNiArMTAzMCwx MCBAQCBFeGVjQWx0ZXJEZWZhdWx0UHJpdmlsZWdlc1N0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBB bHRlckRlZmF1bHRQcml2aWxlZ2VzU3RtdCAqcwogCQkJYWxsX3ByaXZpbGVnZXMgPSBBQ0xfQUxM X1JJR0hUU19TQ0hFTUE7CiAJCQllcnJvcm1zZyA9IGdldHRleHRfbm9vcCgiaW52YWxpZCBwcml2 aWxlZ2UgdHlwZSAlcyBmb3Igc2NoZW1hIik7CiAJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfVkFS SUFCTEU6CisJCQlhbGxfcHJpdmlsZWdlcyA9IEFDTF9BTExfUklHSFRTX1ZBUklBQkxFOworCQkJ ZXJyb3Jtc2cgPSBnZXR0ZXh0X25vb3AoImludmFsaWQgcHJpdmlsZWdlIHR5cGUgJXMgZm9yIHNj aGVtYSB2YXJpYWJsZSIpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAi dW5yZWNvZ25pemVkIEdyYW50U3RtdC5vYmp0eXBlOiAlZCIsCiAJCQkJIChpbnQpIGFjdGlvbi0+ b2JqdHlwZSk7CkBAIC0xMjE4LDYgKzEyMzEsMTIgQEAgU2V0RGVmYXVsdEFDTChJbnRlcm5hbERl ZmF1bHRBQ0wgKmlhY2xzKQogCQkJCXRoaXNfcHJpdmlsZWdlcyA9IEFDTF9BTExfUklHSFRTX1ND SEVNQTsKIAkJCWJyZWFrOwogCisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJb2JqdHlwZSA9 IERFRkFDTE9CSl9WQVJJQUJMRTsKKwkJCWlmIChpYWNscy0+YWxsX3ByaXZzICYmIHRoaXNfcHJp dmlsZWdlcyA9PSBBQ0xfTk9fUklHSFRTKQorCQkJCXRoaXNfcHJpdmlsZWdlcyA9IEFDTF9BTExf UklHSFRTX1ZBUklBQkxFOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1Is ICJ1bnJlY29nbml6ZWQgb2JqdHlwZTogJWQiLAogCQkJCSAoaW50KSBpYWNscy0+b2JqdHlwZSk7 CkBAIC0xNDQ0LDYgKzE0NjMsOSBAQCBSZW1vdmVSb2xlRnJvbU9iamVjdEFDTChPaWQgcm9sZWlk LCBPaWQgY2xhc3NpZCwgT2lkIG9iamlkKQogCQkJY2FzZSBERUZBQ0xPQkpfTkFNRVNQQUNFOgog CQkJCWlhY2xzLm9ianR5cGUgPSBPQkpFQ1RfU0NIRU1BOwogCQkJCWJyZWFrOworCQkJY2FzZSBE RUZBQ0xPQkpfVkFSSUFCTEU6CisJCQkJaWFjbHMub2JqdHlwZSA9IE9CSkVDVF9WQVJJQUJMRTsK KwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJLyogU2hvdWxkbid0IGdldCBoZXJlICovCiAJ CQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgZGVmYXVsdCBBQ0wgdHlwZTogJWQiLApAQCAtMzQ1 OSw2ICszNDgxLDkgQEAgYWNsY2hlY2tfZXJyb3IoQWNsUmVzdWx0IGFjbGVyciwgT2JqZWN0VHlw ZSBvYmp0eXBlLAogCQkJCQljYXNlIE9CSkVDVF9UWVBFOgogCQkJCQkJbXNnID0gZ2V0dGV4dF9u b29wKCJwZXJtaXNzaW9uIGRlbmllZCBmb3IgdHlwZSAlcyIpOwogCQkJCQkJYnJlYWs7CisJCQkJ CWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJCQkJbXNnID0gZ2V0dGV4dF9ub29wKCJwZXJtaXNz aW9uIGRlbmllZCBmb3Igc2NoZW1hIHZhcmlhYmxlICVzIik7CisJCQkJCQlicmVhazsKIAkJCQkJ Y2FzZSBPQkpFQ1RfVklFVzoKIAkJCQkJCW1zZyA9IGdldHRleHRfbm9vcCgicGVybWlzc2lvbiBk ZW5pZWQgZm9yIHZpZXcgJXMiKTsKIAkJCQkJCWJyZWFrOwpAQCAtMzU2OSw2ICszNTk0LDkgQEAg YWNsY2hlY2tfZXJyb3IoQWNsUmVzdWx0IGFjbGVyciwgT2JqZWN0VHlwZSBvYmp0eXBlLAogCQkJ CQljYXNlIE9CSkVDVF9UWVBFOgogCQkJCQkJbXNnID0gZ2V0dGV4dF9ub29wKCJtdXN0IGJlIG93 bmVyIG9mIHR5cGUgJXMiKTsKIAkJCQkJCWJyZWFrOworCQkJCQljYXNlIE9CSkVDVF9WQVJJQUJM RToKKwkJCQkJCW1zZyA9IGdldHRleHRfbm9vcCgibXVzdCBiZSBvd25lciBvZiBzY2hlbWEgdmFy aWFibGUgJXMiKTsKKwkJCQkJCWJyZWFrOwogCQkJCQljYXNlIE9CSkVDVF9WSUVXOgogCQkJCQkJ bXNnID0gZ2V0dGV4dF9ub29wKCJtdXN0IGJlIG93bmVyIG9mIHZpZXcgJXMiKTsKIAkJCQkJCWJy ZWFrOwpAQCAtMzY4Myw2ICszNzExLDcgQEAgcGdfYWNsbWFzayhPYmplY3RUeXBlIG9ianR5cGUs IE9pZCB0YWJsZV9vaWQsIEF0dHJOdW1iZXIgYXR0bnVtLCBPaWQgcm9sZWlkLAogCQkJCXBnX2F0 dHJpYnV0ZV9hY2xtYXNrKHRhYmxlX29pZCwgYXR0bnVtLCByb2xlaWQsIG1hc2ssIGhvdyk7CiAJ CWNhc2UgT0JKRUNUX1RBQkxFOgogCQljYXNlIE9CSkVDVF9TRVFVRU5DRToKKwkJY2FzZSBPQkpF Q1RfVkFSSUFCTEU6CiAJCQlyZXR1cm4gcGdfY2xhc3NfYWNsbWFzayh0YWJsZV9vaWQsIHJvbGVp ZCwgbWFzaywgaG93KTsKIAkJY2FzZSBPQkpFQ1RfREFUQUJBU0U6CiAJCQlyZXR1cm4gcGdfZGF0 YWJhc2VfYWNsbWFzayh0YWJsZV9vaWQsIHJvbGVpZCwgbWFzaywgaG93KTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMK aW5kZXggMGYzNGY1MzgxYS4uNTU4ZTY0MWQ1NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9oZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKQEAgLTI5MSw2ICsy OTEsNyBAQCBoZWFwX2NyZWF0ZShjb25zdCBjaGFyICpyZWxuYW1lLAogCXN3aXRjaCAocmVsa2lu ZCkKIAl7CiAJCWNhc2UgUkVMS0lORF9WSUVXOgorCQljYXNlIFJFTEtJTkRfVkFSSUFCTEU6CiAJ CWNhc2UgUkVMS0lORF9DT01QT1NJVEVfVFlQRToKIAkJY2FzZSBSRUxLSU5EX0ZPUkVJR05fVEFC TEU6CiAJCWNhc2UgUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRToKQEAgLTEwNjcsNyArMTA2OCw5 IEBAIGhlYXBfY3JlYXRlX3dpdGhfY2F0YWxvZyhjb25zdCBjaGFyICpyZWxuYW1lLAogCWlmIChl eGlzdGluZ19yZWxpZCAhPSBJbnZhbGlkT2lkKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJj b2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKLQkJCQkgZXJybXNnKCJyZWxhdGlvbiBcIiVz XCIgYWxyZWFkeSBleGlzdHMiLCByZWxuYW1lKSkpOworCQkJCSBlcnJtc2coIiVzIFwiJXNcIiBh bHJlYWR5IGV4aXN0cyIsCisJCQkJCQlyZWxraW5kID09IFJFTEtJTkRfVkFSSUFCTEUgPyAidmFy aWFibGUiIDogInJlbGF0aW9uIiwKKwkJCQkJCXJlbG5hbWUpKSk7CiAKIAkvKgogCSAqIFNpbmNl IHdlIGFyZSBnb2luZyB0byBjcmVhdGUgYSByb3d0eXBlIGFzIHdlbGwsIGFsc28gY2hlY2sgZm9y CkBAIC0xMTUwLDYgKzExNTMsMTAgQEAgaGVhcF9jcmVhdGVfd2l0aF9jYXRhbG9nKGNvbnN0IGNo YXIgKnJlbG5hbWUsCiAJCQkJcmVsYWNsID0gZ2V0X3VzZXJfZGVmYXVsdF9hY2woT0JKRUNUX1NF UVVFTkNFLCBvd25lcmlkLAogCQkJCQkJCQkJCQkgIHJlbG5hbWVzcGFjZSk7CiAJCQkJYnJlYWs7 CisJCQljYXNlIFJFTEtJTkRfVkFSSUFCTEU6CisJCQkJcmVsYWNsID0gZ2V0X3VzZXJfZGVmYXVs dF9hY2woT0JKRUNUX1ZBUklBQkxFLCBvd25lcmlkLAorCQkJCQkJCQkJCQkgIHJlbG5hbWVzcGFj ZSk7CisJCQkJYnJlYWs7CiAJCQlkZWZhdWx0OgogCQkJCXJlbGFjbCA9IE5VTEw7CiAJCQkJYnJl YWs7CkBAIC0xMTgxLDcgKzExODgsOCBAQCBoZWFwX2NyZWF0ZV93aXRoX2NhdGFsb2coY29uc3Qg Y2hhciAqcmVsbmFtZSwKIAkgKiBEZWNpZGUgd2hldGhlciB0byBjcmVhdGUgYW4gYXJyYXkgdHlw ZSBvdmVyIHRoZSByZWxhdGlvbidzIHJvd3R5cGUuIFdlCiAJICogZG8gbm90IGNyZWF0ZSBhbnkg YXJyYXkgdHlwZXMgZm9yIHN5c3RlbSBjYXRhbG9ncyAoaWUsIHRob3NlIG1hZGUKIAkgKiBkdXJp bmcgaW5pdGRiKS4gV2UgZG8gbm90IGNyZWF0ZSB0aGVtIHdoZXJlIHRoZSB1c2Ugb2YgYSByZWxh dGlvbiBhcwotCSAqIHN1Y2ggaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsOiB0b2FzdCB0YWJs ZXMsIHNlcXVlbmNlcyBhbmQgaW5kZXhlcy4KKwkgKiBzdWNoIGlzIGFuIGltcGxlbWVudGF0aW9u IGRldGFpbDogdG9hc3QgdGFibGVzLCBzZXF1ZW5jZXMsIGluZGV4ZXMgYW5kCisJICogdmFyaWFi bGVzLgogCSAqLwogCWlmIChJc1VuZGVyUG9zdG1hc3RlciAmJiAocmVsa2luZCA9PSBSRUxLSU5E X1JFTEFUSU9OIHx8CiAJCQkJCQkJICByZWxraW5kID09IFJFTEtJTkRfVklFVyB8fApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMgYi9zcmMvYmFja2VuZC9j YXRhbG9nL29iamVjdGFkZHJlc3MuYwppbmRleCA1NzBlNjVhZmZiLi42MjQ3OTc0M2M3IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYworKysgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYwpAQCAtNTIxLDYgKzUyMSw5IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3Qgb2JqZWN0X3R5cGVfbWFwCiAJCSJzZXF1ZW5jZSIsIE9CSkVDVF9TRVFVRU5D RQogCX0sCiAJeworCQkidmFyaWFibGUiLCBPQkpFQ1RfVkFSSUFCTEUKKwl9LAorCXsKIAkJInRv YXN0IHRhYmxlIiwgLTEKIAl9LAkJCQkJCQkvKiB1bm1hcHBlZCAqLwogCXsKQEAgLTgyNCw2ICs4 MjcsNyBAQCBnZXRfb2JqZWN0X2FkZHJlc3MoT2JqZWN0VHlwZSBvYmp0eXBlLCBOb2RlICpvYmpl Y3QsCiAJCQljYXNlIE9CSkVDVF9WSUVXOgogCQkJY2FzZSBPQkpFQ1RfTUFUVklFVzoKIAkJCWNh c2UgT0JKRUNUX0ZPUkVJR05fVEFCTEU6CisJCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKIAkJCQlh ZGRyZXNzID0KIAkJCQkJZ2V0X3JlbGF0aW9uX2J5X3F1YWxpZmllZF9uYW1lKG9ianR5cGUsIGNh c3ROb2RlKExpc3QsIG9iamVjdCksCiAJCQkJCQkJCQkJCQkgICAmcmVsYXRpb24sIGxvY2ttb2Rl LApAQCAtMTI2MCw2ICsxMjY0LDE0IEBAIGdldF9yZWxhdGlvbl9ieV9xdWFsaWZpZWRfbmFtZShP YmplY3RUeXBlIG9ianR5cGUsIExpc3QgKm9iamVjdCwKIAkJCQkJCSBlcnJtc2coIlwiJXNcIiBp cyBub3QgYSBmb3JlaWduIHRhYmxlIiwKIAkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo cmVsYXRpb24pKSkpOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJaWYg KHJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9WQVJJQUJMRSkKKwkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJ CQkJCQkgZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgc2NoZW1hIHZhcmlhYmxlIiwKKwkJCQkJCQkJ UmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pKSkpOworCQkJYnJlYWs7CisKIAkJZGVm YXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgb2JqdHlwZTogJWQiLCAoaW50KSBv Ymp0eXBlKTsKIAkJCWJyZWFrOwpAQCAtMTg0Nyw2ICsxODU5LDggQEAgZ2V0X29iamVjdF9hZGRy ZXNzX2RlZmFjbChMaXN0ICpvYmplY3QsIGJvb2wgbWlzc2luZ19vaykKIAkJY2FzZSBERUZBQ0xP QkpfTkFNRVNQQUNFOgogCQkJb2JqdHlwZV9zdHIgPSAic2NoZW1hcyI7CiAJCQlicmVhazsKKwkJ Y2FzZSBERUZBQ0xPQkpfVkFSSUFCTEU6CisJCQlvYmp0eXBlX3N0ciA9ICJ2YXJpYWJsZXMiOwog CQlkZWZhdWx0OgogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZB TElEX1BBUkFNRVRFUl9WQUxVRSksCkBAIC0yMTA5LDYgKzIxMjMsNyBAQCBwZ19nZXRfb2JqZWN0 X2FkZHJlc3MoUEdfRlVOQ1RJT05fQVJHUykKIAl7CiAJCWNhc2UgT0JKRUNUX1RBQkxFOgogCQlj YXNlIE9CSkVDVF9TRVFVRU5DRToKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCWNhc2UgT0JK RUNUX1ZJRVc6CiAJCWNhc2UgT0JKRUNUX01BVFZJRVc6CiAJCWNhc2UgT0JKRUNUX0lOREVYOgpA QCAtMjIzMyw2ICsyMjQ4LDcgQEAgY2hlY2tfb2JqZWN0X293bmVyc2hpcChPaWQgcm9sZWlkLCBP YmplY3RUeXBlIG9ianR5cGUsIE9iamVjdEFkZHJlc3MgYWRkcmVzcywKIAkJY2FzZSBPQkpFQ1Rf SU5ERVg6CiAJCWNhc2UgT0JKRUNUX1NFUVVFTkNFOgogCQljYXNlIE9CSkVDVF9UQUJMRToKKwkJ Y2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCWNhc2UgT0JKRUNUX1ZJRVc6CiAJCWNhc2UgT0JKRUNU X01BVFZJRVc6CiAJCWNhc2UgT0JKRUNUX0ZPUkVJR05fVEFCTEU6CkBAIC0zMjk5LDYgKzMzMTUs MTEgQEAgZ2V0T2JqZWN0RGVzY3JpcHRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0KQog CQkJCQkJCQkJCSBfKCJkZWZhdWx0IHByaXZpbGVnZXMgb24gbmV3IHNjaGVtYXMgYmVsb25naW5n IHRvIHJvbGUgJXMiKSwKIAkJCQkJCQkJCQkgR2V0VXNlck5hbWVGcm9tSWQoZGVmYWNsLT5kZWZh Y2xyb2xlLCBmYWxzZSkpOwogCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgREVGQUNMT0JKX1ZBUklB QkxFOgorCQkJCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmZmVyLAorCQkJCQkJCQkJCSBfKCJkZWZh dWx0IHByaXZpbGVnZXMgb24gbmV3IHNjaGVtYSB2YXJpYWJsZXMgYmVsb25naW5nIHRvIHJvbGUg JXMiKSwKKwkJCQkJCQkJCQkgR2V0VXNlck5hbWVGcm9tSWQoZGVmYWNsLT5kZWZhY2xyb2xlLCBm YWxzZSkpOworCQkJCQkJYnJlYWs7CiAJCQkJCWRlZmF1bHQ6CiAJCQkJCQkvKiBzaG91bGRuJ3Qg Z2V0IGhlcmUgKi8KIAkJCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZmZlciwKQEAgLTM1MDIsNiAr MzUyMywxMCBAQCBnZXRSZWxhdGlvbkRlc2NyaXB0aW9uKFN0cmluZ0luZm8gYnVmZmVyLCBPaWQg cmVsaWQpCiAJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZmZlciwgXygic2VxdWVuY2UgJXMiKSwKIAkJ CQkJCQkgcmVsbmFtZSk7CiAJCQlicmVhazsKKwkJY2FzZSBSRUxLSU5EX1ZBUklBQkxFOgorCQkJ YXBwZW5kU3RyaW5nSW5mbyhidWZmZXIsIF8oInZhcmlhYmxlICVzIiksCisJCQkJCQkJIHJlbG5h bWUpOworCQkJYnJlYWs7CiAJCWNhc2UgUkVMS0lORF9UT0FTVFZBTFVFOgogCQkJYXBwZW5kU3Ry aW5nSW5mbyhidWZmZXIsIF8oInRvYXN0IHRhYmxlICVzIiksCiAJCQkJCQkJIHJlbG5hbWUpOwpA QCAtNDgzMCw2ICs0ODU1LDEwIEBAIGdldE9iamVjdElkZW50aXR5UGFydHMoY29uc3QgT2JqZWN0 QWRkcmVzcyAqb2JqZWN0LAogCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmZmVyLAog CQkJCQkJCQkJCQkgICAiIG9uIHNjaGVtYXMiKTsKIAkJCQkJCWJyZWFrOworCQkJCQljYXNlIERF RkFDTE9CSl9WQVJJQUJMRToKKwkJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZmZlciwK KwkJCQkJCQkJCQkJICAgIiBvbiBzY2hlbWEgdmFyaWFibGVzIik7CisJCQkJCQlicmVhazsKIAkJ CQl9CiAKIAkJCQlpZiAob2JqbmFtZSkKQEAgLTUxMjIsNiArNTE1MSw4IEBAIGdldF9yZWxraW5k X29ianR5cGUoY2hhciByZWxraW5kKQogCQkJcmV0dXJuIE9CSkVDVF9JTkRFWDsKIAkJY2FzZSBS RUxLSU5EX1NFUVVFTkNFOgogCQkJcmV0dXJuIE9CSkVDVF9TRVFVRU5DRTsKKwkJY2FzZSBSRUxL SU5EX1ZBUklBQkxFOgorCQkJcmV0dXJuIE9CSkVDVF9WQVJJQUJMRTsKIAkJY2FzZSBSRUxLSU5E X1ZJRVc6CiAJCQlyZXR1cm4gT0JKRUNUX1ZJRVc7CiAJCWNhc2UgUkVMS0lORF9NQVRWSUVXOgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9NYWtlZmlsZQppbmRleCA0YTZjOTllMDkwLi41NzQ3MjcyYzlhIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9NYWtlZmlsZQpAQCAtMTgsNyArMTgsNyBAQCBPQkpTID0gYW1jbWRzLm8gYWdncmVnYXRlY21k cy5vIGFsdGVyLm8gYW5hbHl6ZS5vIGFzeW5jLm8gY2x1c3Rlci5vIGNvbW1lbnQubyBcCiAJZXZl bnRfdHJpZ2dlci5vIGV4cGxhaW4ubyBleHRlbnNpb24ubyBmb3JlaWduY21kcy5vIGZ1bmN0aW9u Y21kcy5vIFwKIAlpbmRleGNtZHMubyBsb2NrY21kcy5vIG1hdHZpZXcubyBvcGVyYXRvcmNtZHMu byBvcGNsYXNzY21kcy5vIFwKIAlwb2xpY3kubyBwb3J0YWxjbWRzLm8gcHJlcGFyZS5vIHByb2Ns YW5nLm8gcHVibGljYXRpb25jbWRzLm8gXAotCXNjaGVtYWNtZHMubyBzZWNsYWJlbC5vIHNlcXVl bmNlLm8gc3RhdHNjbWRzLm8gc3Vic2NyaXB0aW9uY21kcy5vIFwKKwlzY2hlbWFjbWRzLm8gc2No ZW1hdmFyLm8gc2VjbGFiZWwubyBzZXF1ZW5jZS5vIHN0YXRzY21kcy5vIHN1YnNjcmlwdGlvbmNt ZHMubyBcCiAJdGFibGVjbWRzLm8gdGFibGVzcGFjZS5vIHRyaWdnZXIubyB0c2VhcmNoY21kcy5v IHR5cGVjbWRzLm8gdXNlci5vIFwKIAl2YWN1dW0ubyB2YWN1dW1sYXp5Lm8gdmFyaWFibGUubyB2 aWV3Lm8KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29weS5jCmluZGV4IGIzOTMzZGY5YWYuLjcxZTVhYWQ4NTIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9jb3B5LmMKQEAgLTE0ODQsNiArMTQ4NCw5IEBAIEJlZ2luQ29weShQYXJzZVN0YXRlICpw c3RhdGUsCiAKIAkJQXNzZXJ0KHF1ZXJ5LT51dGlsaXR5U3RtdCA9PSBOVUxMKTsKIAorCQkvKiBE b24ndCBleHBlY3QgTEVUIHN0bXQgaGVyZSwgaXMgbm90IHBvc3NpYmxlIHRvIGRvIHdyaXRlIGl0 ICovCisJCUFzc2VydChxdWVyeS0+Y29tbWFuZFR5cGUgIT0gQ01EX0xFVCk7CisKIAkJLyoKIAkJ ICogU2ltaWxhcmx5IHRoZSBncmFtbWFyIGRvZXNuJ3QgZW5mb3JjZSB0aGUgcHJlc2VuY2Ugb2Yg YSBSRVRVUk5JTkcKIAkJICogY2xhdXNlLCBidXQgdGhpcyBpcyByZXF1aXJlZCBoZXJlLgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGlzY2FyZC5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvZGlzY2FyZC5jCmluZGV4IDM1M2VjOTkwYWYuLjMzZGI0N2U2MzQgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Rpc2NhcmQuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9kaXNjYXJkLmMKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlICJjb21tYW5kcy9hc3luYy5o IgogI2luY2x1ZGUgImNvbW1hbmRzL2Rpc2NhcmQuaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcmVw YXJlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2NoZW1hdmFyLmgiCiAjaW5jbHVkZSAiY29tbWFu ZHMvc2VxdWVuY2UuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9w b3J0YWwuaCIKQEAgLTI1LDcgKzI2LDcgQEAKIHN0YXRpYyB2b2lkIERpc2NhcmRBbGwoYm9vbCBp c1RvcExldmVsKTsKIAogLyoKLSAqIERJU0NBUkQgeyBBTEwgfCBTRVFVRU5DRVMgfCBURU1QIHwg UExBTlMgfQorICogRElTQ0FSRCB7IEFMTCB8IFNFUVVFTkNFUyB8IFRFTVAgfCBQTEFOUyB8IFZB UklBQkxFU30KICAqLwogdm9pZAogRGlzY2FyZENvbW1hbmQoRGlzY2FyZFN0bXQgKnN0bXQsIGJv b2wgaXNUb3BMZXZlbCkKQEAgLTQ4LDYgKzQ5LDEwIEBAIERpc2NhcmRDb21tYW5kKERpc2NhcmRT dG10ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpCiAJCQlSZXNldFRlbXBUYWJsZU5hbWVzcGFjZSgp OwogCQkJYnJlYWs7CiAKKwkJY2FzZSBESVNDQVJEX1ZBUklBQkxFUzoKKwkJCVJlc2V0U2NoZW1h VmFyaWFibGVzQ2FjaGUoKTsKKwkJCWJyZWFrOworCiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9S LCAidW5yZWNvZ25pemVkIERJU0NBUkQgdGFyZ2V0OiAlZCIsIHN0bXQtPnRhcmdldCk7CiAJfQpA QCAtNzUsNCArODAsNSBAQCBEaXNjYXJkQWxsKGJvb2wgaXNUb3BMZXZlbCkKIAlSZXNldFBsYW5D YWNoZSgpOwogCVJlc2V0VGVtcFRhYmxlTmFtZXNwYWNlKCk7CiAJUmVzZXRTZXF1ZW5jZUNhY2hl cygpOworCVJlc2V0U2NoZW1hVmFyaWFibGVzQ2FjaGUoKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2 ZW50X3RyaWdnZXIuYwppbmRleCA1NDljN2VhNTFkLi5jOGUyYjgyMmUxIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvZXZlbnRfdHJpZ2dlci5jCkBAIC0xMjYsNiArMTI2LDcgQEAgc3RhdGljIGV2ZW50X3Ry aWdnZXJfc3VwcG9ydF9kYXRhIGV2ZW50X3RyaWdnZXJfc3VwcG9ydFtdID0gewogCXsiVEVYVCBT RUFSQ0ggVEVNUExBVEUiLCB0cnVlfSwKIAl7IlRZUEUiLCB0cnVlfSwKIAl7IlVTRVIgTUFQUElO RyIsIHRydWV9LAorCXsiVkFSSUFCTEUiLCB0cnVlfSwKIAl7IlZJRVciLCB0cnVlfSwKIAl7TlVM TCwgZmFsc2V9CiB9OwpAQCAtMTEyNCw2ICsxMTI1LDcgQEAgRXZlbnRUcmlnZ2VyU3VwcG9ydHNP YmplY3RUeXBlKE9iamVjdFR5cGUgb2J0eXBlKQogCQljYXNlIE9CSkVDVF9UU1RFTVBMQVRFOgog CQljYXNlIE9CSkVDVF9UWVBFOgogCQljYXNlIE9CSkVDVF9VU0VSX01BUFBJTkc6CisJCWNhc2Ug T0JKRUNUX1ZBUklBQkxFOgogCQljYXNlIE9CSkVDVF9WSUVXOgogCQkJcmV0dXJuIHRydWU7CiAK QEAgLTIyMjIsNiArMjIyNCw4IEBAIHN0cmluZ2lmeV9ncmFudF9vYmp0eXBlKE9iamVjdFR5cGUg b2JqdHlwZSkKIAkJCXJldHVybiAiVEFCTEVTUEFDRSI7CiAJCWNhc2UgT0JKRUNUX1RZUEU6CiAJ CQlyZXR1cm4gIlRZUEUiOworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCXJldHVybiAiVkFS SUFCTEUiOwogCQkvKiB0aGVzZSBjdXJyZW50bHkgYXJlbid0IHVzZWQgKi8KIAkJY2FzZSBPQkpF Q1RfQUNDRVNTX01FVEhPRDoKIAkJY2FzZSBPQkpFQ1RfQUdHUkVHQVRFOgpAQCAtMjMwNCw2ICsy MzA4LDggQEAgc3RyaW5naWZ5X2FkZWZwcml2c19vYmp0eXBlKE9iamVjdFR5cGUgb2JqdHlwZSkK IAkJCXJldHVybiAiVEFCTEVTUEFDRVMiOwogCQljYXNlIE9CSkVDVF9UWVBFOgogCQkJcmV0dXJu ICJUWVBFUyI7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJcmV0dXJuICJWQVJJQUJMRVMi OwogCQkvKiB0aGVzZSBjdXJyZW50bHkgYXJlbid0IHVzZWQgKi8KIAkJY2FzZSBPQkpFQ1RfQUND RVNTX01FVEhPRDoKIAkJY2FzZSBPQkpFQ1RfQUdHUkVHQVRFOgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5j CmluZGV4IDQxY2Q0N2U4YmMuLjExYzgyNTdmY2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAg LTg5Myw2ICs4OTMsOSBAQCBFeHBsYWluTm9kZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgTGlzdCAq YW5jZXN0b3JzLAogCQkJCWNhc2UgQ01EX0RFTEVURToKIAkJCQkJcG5hbWUgPSBvcGVyYXRpb24g PSAiRGVsZXRlIjsKIAkJCQkJYnJlYWs7CisJCQkJY2FzZSBDTURfTEVUOgorCQkJCQlwbmFtZSA9 IG9wZXJhdGlvbiA9ICJMZXQiOworCQkJCQlicmVhazsKIAkJCQlkZWZhdWx0OgogCQkJCQlwbmFt ZSA9ICI/Pz8iOwogCQkJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3ByZXBhcmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCBiOTQ1YjE1 NTZhLi5hNjk0NzFlOTI2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJl LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCkBAIC0xNTEsNiArMTUxLDcg QEAgUHJlcGFyZVF1ZXJ5KFByZXBhcmVTdG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmlu ZywKIAkJY2FzZSBDTURfSU5TRVJUOgogCQljYXNlIENNRF9VUERBVEU6CiAJCWNhc2UgQ01EX0RF TEVURToKKwkJY2FzZSBDTURfTEVUOgogCQkJLyogT0sgKi8KIAkJCWJyZWFrOwogCQlkZWZhdWx0 OgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2NoZW1hdmFyLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9zY2hlbWF2YXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwLi5jYjgwM2ZhYjBjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvc2NoZW1hdmFyLmMKQEAgLTAsMCArMSw2NjMgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoK KyAqIHNjaGVtYXZhci5jCisgKgkgIFBvc3RncmVTUUwgc2Vzc2lvbiB2YXJpYWJsZSBzdXBwb3J0 IGNvZGUuCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMTgsIFBvc3RncmVT UUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5 OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqCisgKiBJ REVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9jb21tYW5kcy9zY2hlbWF2YXIuYworICoK KyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKyNpbmNsdWRl ICJtaXNjYWRtaW4uaCIKKworI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKKyNpbmNs dWRlICJhY2Nlc3MveGFjdC5oIgorI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0YWRkcmVzcy5oIgor I2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jbGFz cy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3Rh YmxlY21kcy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZhci5oIgorI2luY2x1ZGUgInBh cnNlci9wYXJzZV9jb2VyY2UuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdHlwZS5oIgorI2lu Y2x1ZGUgInV0aWxzL2FjbC5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVk ZSAidXRpbHMvZGF0dW0uaCIKKyNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCisjaW5jbHVkZSAi dXRpbHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1 dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisKKy8qCisgKiBU aGlzIHNjaGVtYSB2YXJpYWJsZSBjYWNoZSBtaXhlcyB0aGUgY2FjaGUgYW5kIHN0b3JhZ2VzIGJl aGF2ZS4gVGhhdCBpcyBub3QKKyAqIGNvcnJlY3QgYW5kIGl0IGlzIHByb2JsZW1hdGljLCB3aGVu IHZhcmlhYmxlIGlzIHJlbW92ZWQuIFRoZSBvd24gc3RvcmFnZQorICogYmFzZWQgb24gc3RvcmFn ZSBtYW5hZ2VyIGNhbiBiZSBpbXBsZW1lbnRlZCwgUmVsRmlsZU5vZGUgY2FuIGJlIGRlZmluZWQg YW5kCisgKiBtZWNoYW5pc20gYmFzZWQgb24gUGVuZGluZ1JlbERlbGV0ZSBzdHJ1Y3QgY2FuIGJl IHVzZWQuIFRoaXMgaXMgYSBhcmd1bWVudAorICogZm9yIGltcGxlbWVudGF0aW9uIHNjaGVtYSB2 YXJpYWJsZXMgYmFzZWQgb24gcGdfY2xhc3MuCisgKiBBbHRlcm5hdGl2ZSBzb2x1dGlvbiBjYW4g YmUgZGV0ZWN0aW9uIG9mIHNjaGVtYSBjaGFuZ2VzIGFuZCByZWNoZWNrIGF0IGFuZAorICogb2Yg dHJhbnNhY3Rpb24uCisgKi8KK3R5cGVkZWYgc3RydWN0IFNjaGVtYVZhckRhdGEKK3sKKwlPaWQJ CQl2YXJpZDsJCQkvKiBwZ19jbGFzcyBPSUQgb2YgdGhpcyBzZXF1ZW5jZSAoaGFzaCBrZXkpICov CisJT2lkCQkJdHlwaWQ7CQkJLyogT0lEIG9mIHRoZSBkYXRhIHR5cGUgKi8KKwlpbnQzMgkJdHlw bW9kOworCWludDE2CQl0eXBsZW47CisJYm9vbAkJdHlwYnl2YWw7CisJYm9vbAkJaXNudWxsOwor CWJvb2wJCWZyZWV2YWw7CisJRGF0dW0JCXZhbHVlOworfSBTY2hlbWFWYXJEYXRhOworCit0eXBl ZGVmIFNjaGVtYVZhckRhdGEgKlNjaGVtYVZhcjsKKworc3RhdGljIEhUQUIgKnNjaGVtYXZhcmhh c2h0YWIgPSBOVUxMOwkJLyogaGFzaCB0YWJsZSBmb3Igc2Vzc2lvbiB2YXJpYWJsZXMgKi8KK3N0 YXRpYyBNZW1vcnlDb250ZXh0IFNjaGVtYVZhck1lbW9yeUNvbnRleHQgPSBOVUxMOworCitzdGF0 aWMgRGF0dW0gZGF0dW1DYXN0KERhdHVtIHZhbHVlLAorCQkJCQkJICBPaWQgdGFyZ2V0X3R5cGlk LCBpbnQgdGFyZ2V0X3R5cG1vZCwKKwkJCQkJCSAgT2lkIHNvdXJjZV90eXBpZCwgaW50IHNvdXJj ZV90eXBtb2QpOworCitzdGF0aWMgYm9vbAlmaXJzdF90aW1lID0gdHJ1ZTsKK3N0YXRpYyBib29s CWNhY2hlX2lzX3ZhbGlkID0gdHJ1ZTsKKworc3RhdGljIHZvaWQgSW52YWxpZGF0ZVNjaGVtYVZh ckNhY2hlQ2FsbGJhY2soRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSk7 CisKKy8qIGp1c3QgbWFyayBjYWNoZSB0byByZWNoZWNrICovCitzdGF0aWMgdm9pZAorSW52YWxp ZGF0ZVNjaGVtYVZhckNhY2hlQ2FsbGJhY2soRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMy IGhhc2h2YWx1ZSkKK3sKKwkvKgorCSAqIGJlY2F1c2UgdGhpcyBjYWNoZSBob2xkcyB2YWx1ZXMg b2Ygc2NoZW1hIHZhcmlhYmxlcywgdGhlbgorCSAqIHRoZSBjb250ZW50IGNhbm5vdCBiZSByZW1v dmVkIGluIHRoaXMgbW9tZW10LiBXZSBzaG91bGQgdG8KKwkgKiB3YWl0IG9uIHRyYW5zYWN0aW9u IGVuZC4KKwkgKi8KKwljYWNoZV9pc192YWxpZCA9IGZhbHNlOworfQorCisvKgorICogV2FpdCBv biBjb21taXQgb3Igcm9sbGJhY2sgYW5kIGNsZWFuIHZhbHVlcyB0aGF0IG1pc3MgZW50cnkgaW4g c3lzdGVtCisgKiBjYXRhbG9nLiBJdCBpcyB0ZW1wb3Jhcnkgc29sdXRpb24gKGFsdGhvdWdoIGl0 IGlzIHdvcmtpbmcpLiBTdG9yYWdlIG1hbmFnZXIKKyAqIGJhc2VkIHNvbHV0aW9uIHdpbGwgYmUg YmV0dGVyLCBidXQgaXQgaXMgbm90IG5lY2Vzc2FyeSBmb3IgdGhpcyBQb0MuCisgKgorICogcmVt b3ZlcyB1bmNvbW1pdHRlZCBvciBkcm9wcGVkIHNjaGVtYSB2YXJpYWJsZXMsIHNvIGV2ZW50IGNh biBiZSBpZ25vcmVkLgorICovCitzdGF0aWMgdm9pZAorcmVjaGVja19zY2hlbWFfdmFyaWFibGVz KFhhY3RFdmVudCBldmVudCwgdm9pZCAqYXJnKQoreworCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7 CisJU2NoZW1hVmFyCQl2YXI7CisKKwlpZiAoY2FjaGVfaXNfdmFsaWQgfHwgc2NoZW1hdmFyaGFz aHRhYiA9PSBOVUxMIHx8ICFJc1RyYW5zYWN0aW9uU3RhdGUoKSkKKwkJcmV0dXJuOworCisJaGFz aF9zZXFfaW5pdCgmc3RhdHVzLCBzY2hlbWF2YXJoYXNodGFiKTsKKworCXdoaWxlICgodmFyID0g KFNjaGVtYVZhcikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCXsKKwkJSGVh cFR1cGxlCXRwID0gSW52YWxpZE9pZDsKKworCQl0cCA9IFNlYXJjaFN5c0NhY2hlMShSRUxPSUQs IE9iamVjdElkR2V0RGF0dW0odmFyLT52YXJpZCkpOworCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQo dHApKQorCQl7CisJCQllbG9nKERFQlVHMSwgInZhcmlhYmxlICVkIGlzIHJlbW92ZWQgZnJvbSBj YWNoZSIsIHZhci0+dmFyaWQpOworCisJCQlpZiAodmFyLT5mcmVldmFsKQorCQkJeworCQkJCXBm cmVlKERhdHVtR2V0UG9pbnRlcih2YXItPnZhbHVlKSk7CisJCQkJdmFyLT5mcmVldmFsID0gZmFs c2U7CisJCQl9CisKKwkJCWlmIChoYXNoX3NlYXJjaChzY2hlbWF2YXJoYXNodGFiLAorCQkJCQkJ CQkodm9pZCAqKSAmdmFyLT52YXJpZCwKKwkJCQkJCQkJSEFTSF9SRU1PVkUsCisJCQkJCQkJCU5V TEwpID09IE5VTEwpCisJCQkJZWxvZyhFUlJPUiwgImhhc2ggdGFibGUgY29ycnVwdGVkIik7CisJ CX0KKwkJZWxzZQorCQkJUmVsZWFzZVN5c0NhY2hlKHRwKTsKKwl9CisJY2FjaGVfaXNfdmFsaWQg PSB0cnVlOworfQorCisvKgorICogRGVmaW5lU2Vzc2lvblZhcmlhYmxlCisgKgkJCQlDcmVhdGVz IGEgbmV3IHZhcmlhYmxlIHJlbGF0ZWQgcmVsYXRpb24KKyAqLworT2JqZWN0QWRkcmVzcworRGVm aW5lU2NoZW1hVmFyaWFibGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTY2hlbWFWYXJTdG10 ICp2YXIpCit7CisJQ3JlYXRlU3RtdCAqc3RtdCA9IG1ha2VOb2RlKENyZWF0ZVN0bXQpOworCU9p ZAkJCXR5cG9pZDsKKwlPaWQJCQl2YXJvaWQ7CisJT2JqZWN0QWRkcmVzcyBhZGRyZXNzOworCisJ LyoKKwkgKiBJZiBpZl9ub3RfZXhpc3RzIHdhcyBnaXZlbiBhbmQgYSByZWxhdGlvbiB3aXRoIHRo ZSBzYW1lIG5hbWUgYWxyZWFkeQorCSAqIGV4aXN0cywgYmFpbCBvdXQuIChOb3RlOiB3ZSBuZWVk bid0IGNoZWNrIHRoaXMgd2hlbiBub3QgaWZfbm90X2V4aXN0cywKKwkgKiBiZWNhdXNlIERlZmlu ZVJlbGF0aW9uIHdpbGwgY29tcGxhaW4gYW55d2F5LikKKwkgKi8KKwlpZiAodmFyLT5pZl9ub3Rf ZXhpc3RzKQorCXsKKwkJUmFuZ2VWYXJHZXRBbmRDaGVja0NyZWF0aW9uTmFtZXNwYWNlKHZhci0+ dmFyaWFibGUsIE5vTG9jaywgJnZhcm9pZCk7CisJCWlmIChPaWRJc1ZhbGlkKHZhcm9pZCkpCisJ CXsKKwkJCWVyZXBvcnQoTk9USUNFLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9U QUJMRSksCisJCQkJCSBlcnJtc2coInZhcmlhYmxlIFwiJXNcIiBhbHJlYWR5IGV4aXN0cywgc2tp cHBpbmciLAorCQkJCQkJCXZhci0+dmFyaWFibGUtPnJlbG5hbWUpKSk7CisJCQlyZXR1cm4gSW52 YWxpZE9iamVjdEFkZHJlc3M7CisJCX0KKwl9CisKKwl0eXBvaWQgPSBMb29rdXBUeXBlTmFtZU9p ZChwc3RhdGUsIHZhci0+dHlwZU5hbWUsIGZhbHNlKTsKKworCS8qCisJICogRG9uJ3QgYWxsb3cg Y29tcG9zaXRlIHR5cGVzIGFuZCBhcnJheXMuIFRoZSBsZWZ0IGV4cHJlc3Npb24gb2YKKwkgKiBM RVQgc3RhdGVtZW50IGlzIHNpbXBsZSBpbiB0aGlzIG1vbWVudCAoZG9uJ3QgYWxsb3cgcmVjb3Jk IGZpZWxkCisJICogb3IgYXJyYXkgZmllbGQgc3BlY2lmaWNhdGlvbikuIFdpdGhvdXQgdGhpcyBz dXBwb3J0IHdlIHNob3VsZAorCSAqIG5vdCB0byBzdXBwb3J0IG5vbiBzY2FsYXJzIGV2ZXIuCisJ ICovCisJaWYgKHR5cGVfaXNfcm93dHlwZSh0eXBvaWQpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJ CShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJD b21wb3NpdGUgdHlwZXMgYXJlIG5vdCBhbGxvd2VkIGFzIHZhcmlhYmxlIHR5cGUuIikpKTsKKwor CWlmIChnZXRfYmFzZV9lbGVtZW50X3R5cGUodHlwb2lkKSAhPSBJbnZhbGlkT2lkKQorCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK KwkJCQkgZXJybXNnKCJTY2hlbWEgdmFyaWFibGVzIGNhbm5vdCBiZSBhIGFycmF5LiIpKSk7CisK KwlpZiAoZ2V0X3R5cHR5cGUodHlwb2lkKSA9PSBUWVBUWVBFX1BTRVVETykKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkgZXJy bXNnKCJ2YXJpYWJsZSBjYW5ub3QgYmUgJXMiLAorCQkJCQkJZm9ybWF0X3R5cGVfYmUodmFyb2lk KSkpKTsKKworCXN0bXQtPnRhYmxlRWx0cyA9IE5JTDsKKwlzdG10LT5yZWxhdGlvbiA9IHZhci0+ dmFyaWFibGU7CisJc3RtdC0+aW5oUmVsYXRpb25zID0gTklMOworCXN0bXQtPmNvbnN0cmFpbnRz ID0gTklMOworCXN0bXQtPm9wdGlvbnMgPSBOSUw7CisJc3RtdC0+b25jb21taXQgPSBPTkNPTU1J VF9OT09QOworCXN0bXQtPnRhYmxlc3BhY2VuYW1lID0gTlVMTDsKKwlzdG10LT5pZl9ub3RfZXhp c3RzID0gdmFyLT5pZl9ub3RfZXhpc3RzOworCisJLyoKKwkgKiBVc2UgcmVsb2Z0eXBlIGF0dHJp YnV0ZS4gVGhpcyBhdHRyaWJ1dGUgc2hvdWxkIGJlIGNvbXBvc2l0ZSB0eXBlIGZvcgorCSAqIHRh YmxlcywgYnV0IHRoZXJlIGFyZSBubyByZWFzb24gdG8gYXBwbHkgdGhpcyBydWxlIGZvciB2YXJp YWJsZXMuIENhbgorCSAqIGJlIGNoYW5nZWQgbGF0ZXIgd2l0aCBjb21wb3NpdGUgdHlwZSBzdXBw b3J0LiBJbiB0aGlzIG1vbWVudCBJIGRvbid0CisJICogcGxheSB3aXRoIGl0LCBiZWNhdXNlIEkg d291bGQgbm90IGFsbG93IHF1ZXJpZXMgbGlrZToKKwkgKiBTRUxFQ1Qgc2NoZW1hdmFyIEZST00g c2NoZW1hdmFyLCBiZWNhdXNlIHRoZXJlIGlzIHNlbWFudGljIGNvbGlzc2lvbgorCSAqIHdpdGgg U0VMRUNUIHNjaGVtYXZhci4gVXNlcnMgZXhwZWN0cyBjb21wb3NpdGUgdmFsdWUgKG9uZSBhdHRy aWJ1dGUpCisJICogZnJvbSBmaXJzdCBxdWVyeSwgYnV0IHNjYWxhciBmcm9tIHNlY29uZCBxdWVy eS4gVGhpcyBzY2hpc21hIGNhbiBiZQorCSAqIHNvbHZlZCBieSBkaXNhbGxvd2luZyBTRUxFQ1Qg LiBGUk9NIHNjaGVtYXZhciBmb3Igc2NhbGFyIHZhcmlhYmxlcy4KKwkgKgorCSAqIE9uIHNlY29u ZCBoYW5kIC0gd2l0aG91dCBhZGRpdGlvbmFsIGZpZWxkcywganVzdCB3aXRoIHJlbG9mdHlwZSBp cworCSAqIG5vdCBwb3NzaWJsZSB0byBzdG9yZSB0eXBtb2QuIFNvIGFsbCB2YXJpYWJsZXMgY2Fu IGJlIHR5cG1vZCBsZXNzLgorCSAqIElzIG5vdCBwb3NzaWJsZSB0byBzdG9yZSBkZWZhdWx0IGV4 cHJlc3Npb25zLiBTbyBmaW5hbCBkZXNpZ24gc2hvdWxkCisJICogYmUgYmFzZWQgb24gYXV4IGNv bXBvc2l0ZSB0eXBlcyBmb3Igc2NhbGFyIHZhcmlhYmxlcy4KKwkgKgorCSAqIFRoZW9yZXRpY2Fs bHksIHRoZXJlIGNhbiBiZSB1c2VkIGEgcmVsdHlwZSBhbmQgcmVsb2Z0eXBlIHRvZ2V0aGVyLgor CSAqIHJlbG9mdHlwZSB3aWxsIGJlIHNjYWxhciwgYW5kIHJlbHR5cGUgd2lsbCBiZSBjb21wb3Np dGUgb25lIGZpZWxkCisJICogcm93IHR5cGUuIFdoZW4gcmVsb2Z0eXBlID0gcmVsdHlwZSwgdGhl biBzY2hlbWEgdmFyaWFibGUgaXMgYmFzZWQKKwkgKiBvbiBjb21wb3NpdGUgdHlwZSwgZWxzZSBz Y2hlbWEgdmFyaWFibGUgaXMgb2Ygc2NhbGFyIHR5cGUuCisJICovCisJc3RtdC0+b2ZUeXBlbmFt ZSA9IHZhci0+dHlwZU5hbWU7CisKKwlhZGRyZXNzID0gRGVmaW5lUmVsYXRpb24oc3RtdCwgUkVM S0lORF9WQVJJQUJMRSwgSW52YWxpZE9pZCwgTlVMTCwgTlVMTCk7CisJQXNzZXJ0KGFkZHJlc3Mu b2JqZWN0SWQgIT0gSW52YWxpZE9pZCk7CisKKwlyZXR1cm4gYWRkcmVzczsKK30KKworLyoKKyAq IEltcGxlbWVudGF0aW9uIG9mIHNjaGVtYXZhciBjYWNoZS4gSXQgaXMgcXVlc3Rpb24gaWYgaXQg c2hvdWxkIGJlIGluIHRoaXMgcGxhY2UsIG9yCisgKiBpdCBzaG91bGQgYmUgc3RvcmFnZSByZWxh dGVkIG9yIGNhY2hlIHJlbGF0ZWQgcGxhY2U/IEJ1dCBmb3IgdGhpcyBtb21lbnQgKFBvQykgaXQK KyAqIGNhbiBiZSBoZXJlLiBDYWNoZSBpcyBpbXBsZW1lbnRlZCBhcyBoYXNoIHRhYmxlIHdpdGgg b3duIG1lbW9yeSBjb250ZXh0LgorICovCisKKy8qCisgKiBDcmVhdGUgdGhlIGhhc2ggdGFibGUg Zm9yIHN0b3Jpbmcgc2NoZW1hIHZhcmlhYmxlcworICovCitzdGF0aWMgdm9pZAorY3JlYXRlX3Nj aGVtYXZhcl9oYXNodGFibGUodm9pZCkKK3sKKwlIQVNIQ1RMCQljdGw7CisKKwkvKiBzZXQgY2Fs bGJhY2tzICovCisJaWYgKGZpcnN0X3RpbWUpCisJeworCisJCUNhY2hlUmVnaXN0ZXJTeXNjYWNo ZUNhbGxiYWNrKFJFTE9JRCwKKwkJCQkJCQkJCSAgSW52YWxpZGF0ZVNjaGVtYVZhckNhY2hlQ2Fs bGJhY2ssCisJCQkJCQkJCQkgIChEYXR1bSkgMCk7CisJCVJlZ2lzdGVyWGFjdENhbGxiYWNrKHJl Y2hlY2tfc2NoZW1hX3ZhcmlhYmxlcywgTlVMTCk7CisKKwkJZmlyc3RfdGltZSA9IGZhbHNlOwor CX0KKworCS8qIG5lZWRzIG93biBsb25nIGxpZmUgbWVtb3J5IGNvbnRleHQgKi8KKwlpZiAoU2No ZW1hVmFyTWVtb3J5Q29udGV4dCA9PSBOVUxMKQorCXsKKwkJU2NoZW1hVmFyTWVtb3J5Q29udGV4 dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShUb3BNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJCQkJ CQkJInNjaGVtYSB2YXJpYWJsZXMiLAorCQkJCQkJCQkJCQkJCQkJQUxMT0NTRVRfU1RBUlRfU01B TExfU0laRVMpOworCX0KKworCW1lbXNldCgmY3RsLCAwLCBzaXplb2YoY3RsKSk7CisJY3RsLmtl eXNpemUgPSBzaXplb2YoT2lkKTsKKwljdGwuZW50cnlzaXplID0gc2l6ZW9mKFNjaGVtYVZhckRh dGEpOworCWN0bC5oY3h0ID0gU2NoZW1hVmFyTWVtb3J5Q29udGV4dDsKKworCXNjaGVtYXZhcmhh c2h0YWIgPSBoYXNoX2NyZWF0ZSgiU2NoZW1hIHZhcmlhYmxlcyIsIDY0LCAmY3RsLAorCQkJCQkJ CQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCWNhY2hlX2lzX3Zh bGlkID0gdHJ1ZTsKK30KKworLyoKKyAqIEZhc3QgZHJvcCBjb21wbGV0ZSBjb250ZW50IG9mIHNj aGVtYSB2YXJpYWJsZXMKKyAqLwordm9pZAorUmVzZXRTY2hlbWFWYXJpYWJsZXNDYWNoZSh2b2lk KQoreworCWlmIChzY2hlbWF2YXJoYXNodGFiKQorCXsKKwkJaGFzaF9kZXN0cm95KHNjaGVtYXZh cmhhc2h0YWIpOworCQlzY2hlbWF2YXJoYXNodGFiID0gTlVMTDsKKwl9CisKKwlpZiAoU2NoZW1h VmFyTWVtb3J5Q29udGV4dCAhPSBOVUxMKQorCXsKKwkJTWVtb3J5Q29udGV4dFJlc2V0KFNjaGVt YVZhck1lbW9yeUNvbnRleHQpOworCX0KK30KKworLyoKKyAqIENvcHkgZGF0dW0gdmFsdWUgdG8g c2NoZW1hIHZhcmlhYmxlcyBjYWNoZSBwbGFjZQorICovCitzdGF0aWMgdm9pZAorU2V0VmFsdWUo U2NoZW1hVmFyIHZhciwKKwkJCQlEYXR1bSB2YWx1ZSwgYm9vbCBpc051bGwsCisJCQkJCQlPaWQJ dHlwaWQsIGludDMyIHR5cG1vZCkKK3sKKwkvKiByZWxlYXNlIHByZXZpb3VzbHkgc3RvcmVkIHZh bHVlICovCisJaWYgKHZhci0+ZnJlZXZhbCkKKwl7CisJCXBmcmVlKERhdHVtR2V0UG9pbnRlcih2 YXItPnZhbHVlKSk7CisJCXZhci0+ZnJlZXZhbCA9IGZhbHNlOworCX0KKworCWlmICghaXNOdWxs KQorCXsKKwkJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CisKKwkJLyoKKwkJICogY2FzdCB0aGUgdmFs dWUgaWYgY29udmVyc2lvbiBpcyBuZWNlc3NhcnkuCisJCSAqIEV4cGVjdGluZzogY3VycmVudCBj b250ZXh0IGlzIHNob3J0IGNvbnRleHQuCisJCSAqCisJCSAqIFFVRVNUSU9OOiBob3cgbXVjaCBz aG91bGQgYmUgdGhpcyBjYXN0IHRvbGVyYW50L3N0cmljdD8KKwkJICovCisJCWlmICh2YXItPnR5 cGlkICE9IHR5cGlkIHx8IHZhci0+dHlwbW9kICE9IHR5cG1vZCkKKwkJeworCQkJdmFsdWUgPSBk YXR1bUNhc3QodmFsdWUsCisJCQkJCQkJCXZhci0+dHlwaWQsIHZhci0+dHlwbW9kLAorCQkJCQkJ CQl0eXBpZCwgdHlwbW9kKTsKKwkJfQorCisJCXZhci0+aXNudWxsID0gZmFsc2U7CisKKwkJb2xk Y3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKFNjaGVtYVZhck1lbW9yeUNvbnRleHQpOworCisJ CXZhci0+dmFsdWUgPSBkYXR1bUNvcHkodmFsdWUsIHZhci0+dHlwYnl2YWwsIHZhci0+dHlwbGVu KTsKKwkJaWYgKHZhci0+dmFsdWUgIT0gdmFsdWUpCisJCQl2YXItPmZyZWV2YWwgPSB0cnVlOwor CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworCX0KKwllbHNlCisJeworCQl2YXIt PnZhbHVlID0gKERhdHVtKSAwOworCQl2YXItPmlzbnVsbCA9IHRydWU7CisJfQorfQorCisvKgor ICogQWNjZXNzIGZ1bmN0aW9ucyB0byBzY2hlbWEgdmFyaWFibGVzLgorICovCit2b2lkCitTZXRT Y2hlbWFWYXJpYWJsZShPaWQgdmFyaWQsIERhdHVtIHZhbHVlLCBib29sIGlzTnVsbCwKKwkJCQkJ CU9pZAl0eXBpZCwgaW50MzIgdHlwbW9kLAorCQkJCQkJaW50MTYgdHlwbGVuLCBib29sIHR5cGJ5 dmFsKQoreworCVNjaGVtYVZhcgl2YXI7CisJYm9vbAkJZm91bmQ7CisKKwlpZiAoc2NoZW1hdmFy aGFzaHRhYiA9PSBOVUxMKQorCXsKKwkJLyogZG9uJ3QgaW5pdCBoYXNodGFibGUgZm9yIE5VTEwg dmFsdWVzICovCisJCWlmIChpc051bGwpCisJCQlyZXR1cm47CisKKwkJY3JlYXRlX3NjaGVtYXZh cl9oYXNodGFibGUoKTsKKwl9CisKKwl2YXIgPSAoU2NoZW1hVmFyKSBoYXNoX3NlYXJjaChzY2hl bWF2YXJoYXNodGFiLCAmdmFyaWQsIEhBU0hfRU5URVIsICZmb3VuZCk7CisJaWYgKCFmb3VuZCkK Kwl7CisJCUhlYXBUdXBsZQl0cDsKKwkJRm9ybV9wZ19jbGFzcwl2YXJ0dXA7CisKKwkJdmFyLT52 YWx1ZSA9IChEYXR1bSkgMDsKKwkJdmFyLT5pc251bGwgPSB0cnVlOworCQl2YXItPmZyZWV2YWwg PSBmYWxzZTsKKworCQkvKiBub3csIHR5cGUgaW5mbyBmb3Igc2NoZW1hIHZhcmlhYmxlIGlzIGNv bGxlY3RlZCAqLworCQl0cCA9IFNlYXJjaFN5c0NhY2hlMShSRUxPSUQsIE9iamVjdElkR2V0RGF0 dW0odmFyaWQpKTsKKwkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwkJCWVsb2coRVJST1Is ICJjYWNoZSBsb29rdXAgZmFpbGQgZm9yIHZhcmlhYmxlICV1IiwgdmFyaWQpOworCisJCXZhcnR1 cCA9IChGb3JtX3BnX2NsYXNzKSBHRVRTVFJVQ1QodHApOworCQl2YXItPnR5cGlkID0gdmFydHVw LT5yZWxvZnR5cGU7CisKKwkJLyogdHlwbW9kIGlzIG5vdCBzYXZlZCAqLworCQl2YXItPnR5cG1v ZCA9IC0xOworCisJCVJlbGVhc2VTeXNDYWNoZSh0cCk7CisKKwkJZ2V0X3R5cGxlbmJ5dmFsKHZh ci0+dHlwaWQsICZ2YXItPnR5cGxlbiwgJnZhci0+dHlwYnl2YWwpOworCX0KKworCVNldFZhbHVl KHZhciwgdmFsdWUsIGlzTnVsbCwgdHlwaWQsIHR5cG1vZCk7Cit9CisKKy8qCisgKiBSZXR1cm5z IHZhcmlhYmxlIG5hbWUKKyAqLworY2hhciAqCitnZXRfc2NoZW1hdmFyX25hbWUoT2lkIHZhcmlk KQoreworCUhlYXBUdXBsZQkJcmVsVHVwOworCUZvcm1fcGdfY2xhc3MJcmVsRm9ybTsKKwljaGFy CSAgICpuc3BuYW1lOworCWNoYXIJICAgKnJlbG5hbWU7CisKKwlyZWxUdXAgPSBTZWFyY2hTeXND YWNoZTEoUkVMT0lELAorCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bSh2YXJpZCkpOworCWlmICgh SGVhcFR1cGxlSXNWYWxpZChyZWxUdXApKQorCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBm YWlsZWQgZm9yIHNjaGVtYSB2YXJpYWJsZSAldSIsIHZhcmlkKTsKKwlyZWxGb3JtID0gKEZvcm1f cGdfY2xhc3MpIEdFVFNUUlVDVChyZWxUdXApOworCisJLyogUXVhbGlmeSB0aGUgbmFtZSBpZiBu b3QgdmlzaWJsZSBpbiBzZWFyY2ggcGF0aCAqLworCWlmIChSZWxhdGlvbklzVmlzaWJsZSh2YXJp ZCkpCisJCW5zcG5hbWUgPSBOVUxMOworCWVsc2UKKwkJbnNwbmFtZSA9IGdldF9uYW1lc3BhY2Vf bmFtZShyZWxGb3JtLT5yZWxuYW1lc3BhY2UpOworCisJcmVsbmFtZSA9IHF1b3RlX3F1YWxpZmll ZF9pZGVudGlmaWVyKG5zcG5hbWUsIE5hbWVTdHIocmVsRm9ybS0+cmVsbmFtZSkpOworCisJUmVs ZWFzZVN5c0NhY2hlKHJlbFR1cCk7CisKKwlyZXR1cm4gcmVsbmFtZTsKK30KKworLyoKKyAqIFNl Y3VyaXplZCB2ZXJzaW9ucyBTZXRTY2hlbWFWYXJpYWJsZQorICovCit2b2lkCitTZXRTY2hlbWFW YXJpYWJsZVNlY3VyZShPaWQgdmFyaWQsIERhdHVtIHZhbHVlLCBib29sIGlzTnVsbCwKKwkJCQkJ CU9pZAl0eXBpZCwgaW50MzIgdHlwbW9kLAorCQkJCQkJaW50MTYgdHlwbGVuLCBib29sIHR5cGJ5 dmFsKQoreworCUFjbFJlc3VsdAkJYWNscmVzdWx0OworCisJLyogQ2hlY2sgcGVybWlzc2lvbnMg Ki8KKwlhY2xyZXN1bHQgPSBwZ19jbGFzc19hY2xjaGVjayh2YXJpZCwgR2V0VXNlcklkKCksIEFD TF9VUERBVEUpOworCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0spCisJCWFjbGNoZWNrX2Vy cm9yKGFjbHJlc3VsdCwgT0JKRUNUX1ZBUklBQkxFLCBnZXRfc2NoZW1hdmFyX25hbWUodmFyaWQp KTsKKworCVNldFNjaGVtYVZhcmlhYmxlKHZhcmlkLCB2YWx1ZSwgaXNOdWxsLCB0eXBpZCwgdHlw bW9kLCB0eXBsZW4sIHR5cGJ5dmFsKTsKK30KKworLyoKKyAqIENhc3QgZGF0dW0KKyAqLworc3Rh dGljIERhdHVtCitkYXR1bUNhc3QoRGF0dW0gdmFsdWUsCisJCSAgT2lkIHRhcmdldF90eXBpZCwg aW50IHRhcmdldF90eXBtb2QsCisJCSAgT2lkIHNvdXJjZV90eXBpZCwgaW50IHNvdXJjZV90eXBt b2QpCit7CisJQ29lcmNpb25QYXRoVHlwZSBjcGF0aHR5cGU7CisJT2lkCQljZnVuY2lkOworCURh dHVtCXJlc3VsdCA9IChEYXR1bSkgMDsKKwlib29sCWlzX2JpbmFyeV9jYXN0ID0gZmFsc2U7CisK KwlpZiAodGFyZ2V0X3R5cGlkICE9IHNvdXJjZV90eXBpZCkKKwl7CisJCWNwYXRodHlwZSA9IGZp bmRfY29lcmNpb25fcGF0aHdheSh0YXJnZXRfdHlwaWQsIHNvdXJjZV90eXBpZCwKKwkJCQkJCQkJ CQkJQ09FUkNJT05fRVhQTElDSVQsCisJCQkJCQkJCQkJCSZjZnVuY2lkKTsKKworCQlpZiAoY3Bh dGh0eXBlID09IENPRVJDSU9OX1BBVEhfTk9ORSkKKwkJCWVsb2coRVJST1IsICJjb3VsZCBub3Qg ZmluZCBjYXN0IGZyb20gJXMgdG8gJXMiLAorCQkJCQkJZm9ybWF0X3R5cGVfYmUoc291cmNlX3R5 cGlkKSwKKwkJCQkJCWZvcm1hdF90eXBlX2JlKHRhcmdldF90eXBpZCkpOworCisJCWlmIChjcGF0 aHR5cGUgPT0gQ09FUkNJT05fUEFUSF9SRUxBQkVMVFlQRSkKKwkJeworCQkJcmVzdWx0ID0gdmFs dWU7CisJCQlpc19iaW5hcnlfY2FzdCA9IHRydWU7CisJCX0KKwkJZWxzZSBpZiAoY3BhdGh0eXBl ID09IENPRVJDSU9OX1BBVEhfQ09FUkNFVklBSU8pCisJCXsKKwkJCU9pZAkJb3V0ZnVuYzsKKwkJ CU9pZAkJaW5mdW5jOworCQkJT2lkCQlpb3BhcmFtOworCQkJYm9vbAlpc1ZhcmxlbmE7CisJCQlj aGFyCSpzdHI7CisKKwkJCWdldFR5cGVPdXRwdXRJbmZvKHNvdXJjZV90eXBpZCwgJm91dGZ1bmMs ICZpc1ZhcmxlbmEpOworCQkJc3RyID0gT2lkT3V0cHV0RnVuY3Rpb25DYWxsKG91dGZ1bmMsIHZh bHVlKTsKKworCQkJZ2V0VHlwZUlucHV0SW5mbyh0YXJnZXRfdHlwaWQsICZpbmZ1bmMsICZpb3Bh cmFtKTsKKwkJCXJlc3VsdCA9IE9pZElucHV0RnVuY3Rpb25DYWxsKGluZnVuYywgc3RyLCBpb3Bh cmFtLCAtMSk7CisJCX0KKwkJZWxzZSBpZiAoY3BhdGh0eXBlID09IENPRVJDSU9OX1BBVEhfRlVO QykKKwkJeworCQkJcmVzdWx0ID0gT2lkRnVuY3Rpb25DYWxsMyhjZnVuY2lkLAorCQkJCQkJCXZh bHVlLAorCQkJCQkJCUludDMyR2V0RGF0dW0odGFyZ2V0X3R5cG1vZCksCisJCQkJCQkJQm9vbEdl dERhdHVtKGZhbHNlKSk7CisJCX0KKwl9CisJZWxzZQorCXsKKwkJcmVzdWx0ID0gdmFsdWU7CisJ CWlzX2JpbmFyeV9jYXN0ID0gdHJ1ZTsKKwl9CisKKwlpZiAodGFyZ2V0X3R5cG1vZCA8IDEgfHwg KHRhcmdldF90eXBtb2QgPT0gc291cmNlX3R5cG1vZCAmJiBpc19iaW5hcnlfY2FzdCkpCisJCXJl dHVybiByZXN1bHQ7CisKKwljcGF0aHR5cGUgPSBmaW5kX3R5cG1vZF9jb2VyY2lvbl9mdW5jdGlv bih0YXJnZXRfdHlwaWQsICZjZnVuY2lkKTsKKwlpZiAoY3BhdGh0eXBlID09IENPRVJDSU9OX1BB VEhfRlVOQykKKwl7CisJCXJlc3VsdCA9IE9pZEZ1bmN0aW9uQ2FsbDMoY2Z1bmNpZCwKKwkJCQkJ CQkJCQkJcmVzdWx0LAorCQkJCQkJCQkJCQlJbnQzMkdldERhdHVtKHRhcmdldF90eXBtb2QpLAor CQkJCQkJCQkJCQlCb29sR2V0RGF0dW0oZmFsc2UpKTsKKwl9CisKKwlyZXR1cm4gcmVzdWx0Owor fQorCitEYXR1bQorR2V0U2NoZW1hVmFyaWFibGUoT2lkIHZhcmlkLCBib29sICppc051bGwsCisJ CQkJCQlPaWQJdHlwaWQsIGludDMyIHR5cG1vZCwKKwkJCQkJCWludDE2IHR5cGxlbiwgYm9vbCB0 eXBieXZhbCkKK3sKKwlBc3NlcnQodmFyaWQgIT0gSW52YWxpZE9pZCk7CisKKwlpZiAoc2NoZW1h dmFyaGFzaHRhYiAhPSBOVUxMKQorCXsKKwkJU2NoZW1hVmFyCQl2YXI7CisJCWJvb2wJCQlmb3Vu ZDsKKworCQl2YXIgPSAoU2NoZW1hVmFyKSBoYXNoX3NlYXJjaChzY2hlbWF2YXJoYXNodGFiLAor CQkJCQkJCQkJCSAgJnZhcmlkLCBIQVNIX0ZJTkQsICZmb3VuZCk7CisKKwkJaWYgKGZvdW5kICYm ICF2YXItPmlzbnVsbCkKKwkJeworCQkJRGF0dW0gcmVzdWx0OworCisJCQlyZXN1bHQgPSBkYXR1 bUNhc3QodmFyLT52YWx1ZSwgdHlwaWQsIHR5cG1vZCwKKwkJCQkJCQkJCXZhci0+dHlwaWQsIHZh ci0+dHlwbW9kKTsKKwkJCSppc051bGwgPSBmYWxzZTsKKworCQkJaWYgKHJlc3VsdCAhPSB2YXIt PnZhbHVlKQorCQkJCXJldHVybiByZXN1bHQ7CisJCQllbHNlCisJCQkJcmV0dXJuIGRhdHVtQ29w eShyZXN1bHQsIHR5cGJ5dmFsLCB0eXBsZW4pOworCQl9CisJfQorCisJLyoKKwkgKiBUaGlzIGlt cGxlbWVudGF0aW9uIGlzIHNpbXBsZSwgYmVjYXVzZSBkZWZhdWx0IGV4cHJlc3Npb25zCisJICog YXJlIG5vdCBzdXBwb3J0ZWQuIFdpdGggc3VwcG9ydCBvZiBkZWZhdWx0IGV4cHJlc3Npb24sIHRo ZXJlCisJICogc2hvdWxkIGJlIGluc2VydCBzY2hlbWEgdmFyaWFibGUgaW50byBjYWNoZS4gTm90 IHN1cHBvcnRlZCB5ZXQsCisJICogc28gZG8ganVzdCBzaW1wbHkgd29yay4KKwkgKi8KKwkqaXNO dWxsID0gdHJ1ZTsKKwlyZXR1cm4gKERhdHVtKSAwOworfQorCisvKgorICogU2VjdXJpemVkIHZl cnNpb24gb2YgR2V0U2NoZW1hVmFyaWFibGUKKyAqLworRGF0dW0KK0dldFNjaGVtYVZhcmlhYmxl U2VjdXJlKE9pZCB2YXJpZCwgYm9vbCAqaXNOdWxsLAorCQkJCQkJT2lkCXR5cGlkLCBpbnQzMiB0 eXBtb2QsCisJCQkJCQlpbnQxNiB0eXBsZW4sIGJvb2wgdHlwYnl2YWwpCit7CisJQWNsUmVzdWx0 IGFjbHJlc3VsdDsKKworCS8qIENoZWNrIHBlcm1pc3Npb25zICovCisJYWNscmVzdWx0ID0gcGdf Y2xhc3NfYWNsY2hlY2sodmFyaWQsIEdldFVzZXJJZCgpLCBBQ0xfU0VMRUNUKTsKKwlpZiAoYWNs cmVzdWx0ICE9IEFDTENIRUNLX09LKQorCQlhY2xjaGVja19lcnJvcihhY2xyZXN1bHQsIE9CSkVD VF9WQVJJQUJMRSwgZ2V0X3NjaGVtYXZhcl9uYW1lKHZhcmlkKSk7CisKKwlyZXR1cm4gR2V0U2No ZW1hVmFyaWFibGUodmFyaWQsIGlzTnVsbCwgdHlwaWQsIHR5cG1vZCwgdHlwbGVuLCB0eXBieXZh bCk7Cit9CisKKy8qCisgKiBWMSBmdW5jdGlvbiBBUEkKKyAqCisgKiB2b2lkIHNldF9zY2hlbWFf dmFyaWFibGUodmFyIHJlZ2NsYXNzLCB2YWx1ZSBhbnllbGVtZW50KTsKKyAqIGFueWVsZW1lbnQg Z2V0X3NjaGVtYV92YXJpYWJsZSh2YXIgcmVnY2xhc3MsIGV4cGVjdGVkX3R5cGUgYW55ZWxlbWVu dCkKKyAqCisgKi8KK0RhdHVtCitzZXRfc2NoZW1hX3ZhcmlhYmxlKFBHX0ZVTkNUSU9OX0FSR1Mp Cit7CisJT2lkCQl2YXJpZDsKKwlEYXR1bQl2YWx1ZTsKKwlib29sCWlzTnVsbDsKKwlPaWQJCXR5 cGlkOworCWludDE2CXR5cGxlbjsKKwlib29sCXR5cGJ5dmFsOworCisJaWYgKFBHX0FSR0lTTlVM TCgwKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX05VTExfVkFMVUVf Tk9UX0FMTE9XRUQpLAorCQkJCSBlcnJtc2coIm51bGwgdmFsdWUgbm90IGFsbG93ZWQgZm9yIHZh cmlhYmxlIGlkZW50aXR5IikpKTsKKworCXZhcmlkID0gUEdfR0VUQVJHX09JRCgwKTsKKworCWlm ICghUEdfQVJHSVNOVUxMKDEpKQorCXsKKwkJdmFsdWUgPSBQR19HRVRBUkdfREFUVU0oMSk7CisJ CWlzTnVsbCA9IGZhbHNlOworCX0KKwllbHNlCisJeworCQl2YWx1ZSA9IChEYXR1bSkgMDsKKwkJ aXNOdWxsID0gdHJ1ZTsKKwl9CisKKwl0eXBpZCA9IGdldF9mbl9leHByX2FyZ3R5cGUoZmNpbmZv LT5mbGluZm8sIDEpOworCWlmICh0eXBpZCA9PSBJbnZhbGlkT2lkKQorCQllcmVwb3J0KEVSUk9S LAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCSBl cnJtc2coImNvdWxkIG5vdCBkZXRlcm1pbmUgaW5wdXQgZGF0YSB0eXBlIikpKTsKKworCWdldF90 eXBsZW5ieXZhbCh0eXBpZCwgJnR5cGxlbiwgJnR5cGJ5dmFsKTsKKwlTZXRTY2hlbWFWYXJpYWJs ZVNlY3VyZSh2YXJpZCwgdmFsdWUsIGlzTnVsbCwgdHlwaWQsIC0xLCB0eXBsZW4sIHR5cGJ5dmFs KTsKKworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CisKK0RhdHVtCitnZXRfc2NoZW1hX3ZhcmlhYmxl KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJT2lkCQl2YXJpZDsKKwlPaWQJCXR5cGlkOworCWludDE2 CXR5cGxlbjsKKwlib29sCXR5cGJ5dmFsOworCWJvb2wJaXNOdWxsOworCURhdHVtCXJlc3VsdDsK KworCWlmIChQR19BUkdJU05VTEwoMCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9OVUxMX1ZBTFVFX05PVF9BTExPV0VEKSwKKwkJCQkgZXJybXNnKCJudWxsIHZhbHVl IG5vdCBhbGxvd2VkIGZvciB2YXJpYWJsZSBpZGVudGl0eSIpKSk7CisKKwl2YXJpZCA9IFBHX0dF VEFSR19PSUQoMCk7CisKKwl0eXBpZCA9IGdldF9mbl9leHByX2FyZ3R5cGUoZmNpbmZvLT5mbGlu Zm8sIDEpOworCWlmICh0eXBpZCA9PSBJbnZhbGlkT2lkKQorCQllcmVwb3J0KEVSUk9SLAorCQkJ CShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCSBlcnJtc2co ImNvdWxkIG5vdCBkZXRlcm1pbmUgaW5wdXQgZGF0YSB0eXBlIikpKTsKKworCWdldF90eXBsZW5i eXZhbCh0eXBpZCwgJnR5cGxlbiwgJnR5cGJ5dmFsKTsKKwlyZXN1bHQgPSBHZXRTY2hlbWFWYXJp YWJsZVNlY3VyZSh2YXJpZCwgJmlzTnVsbCwgdHlwaWQsIC0xLCB0eXBsZW4sIHR5cGJ5dmFsKTsK KworCWlmIChpc051bGwpCisJCVBHX1JFVFVSTl9OVUxMKCk7CisJZWxzZQorCQlQR19SRVRVUk5f REFUVU0ocmVzdWx0KTsKK30KKworLyoKKyAqIFJlc3VsdHM6CisgKj0KKyAKKzEuIFRoZSBzY2hl bWEgdmFyaWFibGVzIGFyZSBzaW1pbGFyIHRvIHRlbXBvcmFyeSB0YWJsZXMgLSBidXQgdGhlIGRh dGEgYXJlIG5vdCBzYXZlZAorICAgaW4gOEtCIGJsb2Nrcywgc28gbmV3IHN0b3JhZ2UgZm9yIFBn IHN0b3JhZ2UgbWFuYWdlciBzaG91bGQgYmUgY3JlYXRlZC4KKworMi4gV2Ugc2hvdWxkIHRvIHdv cmsgd2l0aCB0eXBtb2QsIHNvIHBnX2F0dHJpYnV0ZSBlbnRyeSBzaG91bGQgYmUgY3JlYXRlZCBh bnl0aW1lLgorCiszLiBBIHJpc2sgb2YgY29sbGlzaW9ucyBvZiB2YXJpYWJsZSBhbmQgdGFibGUg bmFtZSB3aWxsIGJlIHJlZHVjZWQsIHdoZW4gdmFyaWFibGVzCisgICBhbmQgdGFibGVzIGNhbm5v dCB0byBoYXZlIHNhbWUgbmFtZS4KKworNC4gSWYgc2NoZW1hIHZhcmlhYmxlcyBhcmUgcGdfY2xh c3MgYmFzZWQsIHRoZW4gc29tZSBjdXJyZW50IHN5bnRheCBoYXMgc2Vuc2UKKworICAgIElOU0VS VCBJTlRPIHNjaGVtYS52YXJpYWJsZSBTRUxFQ1QgeHh4CisgICAgbWF5YmUgKGJ1dCBpdCBpcyBu b3QgY29uc2lzdGVudCB3aXRoIFBvc3RncmVTUUwgU1FMLCBidXQgY29uc2lzdGVudCB3aXRoIFBM cGdTUUwpOgorICAgIFNFTEVDVCAqIElOVE8gc2NoZW1hLnZhcmlhYmxlIEZST00geHh4CisKKzUu IExFVCBjbWQgY2FuIGJlIGltcGxlbWVudGVkIGFzIENNRCAobGlrZSBJTlNFUlQsIFVQREFURSwg REVMRVRFKSBvciBVdGlsaXR5IChsaWtlCisgICBDcmVhdGVUYWJsZUFzU2VsZWN0KS4gUHJlZmVy IGZpcnN0IG9wdGlvbiwgYmVjYXVzZSB0aGVyZSBjYW4gYmUgcHJlcGFyZWQsIGNhbiBiZQorICAg dXNlZCB0b2dldGhlciB3aXRoIEVYUExBSU4sIGV0Yy4KKworICAgRXhwZWN0ZWQgZm9ybToKKyAg ICAgTEVUIGZvbyA9IChTRUxFQ1QgaWQgRlJPTSBib28gV0hFUkUgc29tZSA9ICdoZWxsbycpOwor CisgICBzbyBwb3NzaWJpbGl0eSB0byBydW4gRVhQTEFJTiBMRVQgLi4gaGFzIGVub3VnaCBiZW5l Zml0CisqLwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5j CmluZGV4IGM2ZWIzZWJhY2YuLjUzZWE4OTA1MTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNFeHByLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwpA QCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9uYnRyZWUuaCIKICNpbmNsdWRlICJj YXRhbG9nL29iamVjdGFjY2Vzcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2lu Y2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZhci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNFeHBy LmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZVN1YnBsYW4uaCIKICNpbmNsdWRlICJmdW5jYXBp LmgiCkBAIC03MjMsNiArNzI0LDcgQEAgRXhlY0luaXRFeHByUmVjKEV4cHIgKm5vZGUsIEV4cHJT dGF0ZSAqc3RhdGUsCiAJCQl7CiAJCQkJUGFyYW0JICAgKnBhcmFtID0gKFBhcmFtICopIG5vZGU7 CiAJCQkJUGFyYW1MaXN0SW5mbyBwYXJhbXM7CisJCQkJQWNsUmVzdWx0CWFjbHJlc3VsdDsKIAog CQkJCXN3aXRjaCAocGFyYW0tPnBhcmFta2luZCkKIAkJCQl7CkBAIC03MzIsNiArNzM0LDIzIEBA IEV4ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJCQkJc2Ny YXRjaC5kLnBhcmFtLnBhcmFtdHlwZSA9IHBhcmFtLT5wYXJhbXR5cGU7CiAJCQkJCQlFeHByRXZh bFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CiAJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBQQVJB TV9TQ0hFTUFfVkFSSUFCTEU6CisJCQkJCQkvKiBDaGVjayBwZXJtaXNzaW9uIHRvIHJlYWQgc2No ZW1hIHZhcmlhYmxlICovCisJCQkJCQlhY2xyZXN1bHQgPSBwZ19jbGFzc19hY2xjaGVjayhwYXJh bS0+cGFyYW1pZCwgR2V0VXNlcklkKCksIEFDTF9TRUxFQ1QpOworCQkJCQkJaWYgKGFjbHJlc3Vs dCAhPSBBQ0xDSEVDS19PSykKKwkJCQkJCQlhY2xjaGVja19lcnJvcihhY2xyZXN1bHQsIE9CSkVD VF9WQVJJQUJMRSwgZ2V0X3NjaGVtYXZhcl9uYW1lKHBhcmFtLT5wYXJhbWlkKSk7CisKKwkJCQkJ CXNjcmF0Y2gub3Bjb2RlID0gRUVPUF9QQVJBTV9TQ0hFTUFfVkFSSUFCTEU7CisJCQkJCQlzY3Jh dGNoLmQucGFyYW0ucGFyYW1pZCA9IHBhcmFtLT5wYXJhbWlkOworCQkJCQkJc2NyYXRjaC5kLnBh cmFtLnBhcmFtdHlwZSA9IHBhcmFtLT5wYXJhbXR5cGU7CisJCQkJCQlzY3JhdGNoLmQucGFyYW0u cGFyYW10eXBtb2QgPSBwYXJhbS0+cGFyYW10eXBtb2Q7CisKKwkJCQkJCWdldF90eXBsZW5ieXZh bChwYXJhbS0+cGFyYW10eXBlLAorCQkJCQkJCQkJCQkJJnNjcmF0Y2guZC5wYXJhbS5wYXJhbXR5 cGxlbiwKKwkJCQkJCQkJCQkJCSZzY3JhdGNoLmQucGFyYW0ucGFyYW10eXBieXZhbCk7CisKKwkJ CQkJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsICZzY3JhdGNoKTsKKwkJCQkJCWJyZWFrOwogCQkJ CQljYXNlIFBBUkFNX0VYVEVSTjoKIAogCQkJCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhw ckludGVycC5jCmluZGV4IGY2NDZmZDljNTEuLjdhM2IyODMwMzkgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0V4cHJJbnRlcnAuYwpAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgImFjY2Vzcy90 dXB0b2FzdGVyLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvc2VxdWVuY2UuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zY2hlbWF2YXIuaCIKICNpbmNs dWRlICJleGVjdXRvci9leGVjRXhwci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVTdWJwbGFu LmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgpAQCAtMzUwLDYgKzM1MSw3IEBAIEV4ZWNJbnRlcnBF eHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwgYm9vbCAqaXNudWxs KQogCQkmJkNBU0VfRUVPUF9QQVJBTV9FWEVDLAogCQkmJkNBU0VfRUVPUF9QQVJBTV9FWFRFUk4s CiAJCSYmQ0FTRV9FRU9QX1BBUkFNX0NBTExCQUNLLAorCQkmJkNBU0VfRUVPUF9QQVJBTV9TQ0hF TUFfVkFSSUFCTEUsCiAJCSYmQ0FTRV9FRU9QX0NBU0VfVEVTVFZBTCwKIAkJJiZDQVNFX0VFT1Bf TUFLRV9SRUFET05MWSwKIAkJJiZDQVNFX0VFT1BfSU9DT0VSQ0UsCkBAIC0xMDMxLDYgKzEwMzMs MjMgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250 ZXh0LCBib29sICppc251bGwpCiAJCQlFRU9fTkVYVCgpOwogCQl9CiAKKwkJRUVPX0NBU0UoRUVP UF9QQVJBTV9TQ0hFTUFfVkFSSUFCTEUpCisJCXsKKwkJCURhdHVtCWQ7CisJCQlib29sCWlzbnVs bDsKKworCQkJZCA9IEdldFNjaGVtYVZhcmlhYmxlKG9wLT5kLnBhcmFtLnBhcmFtaWQsICZpc251 bGwsCisJCQkJCQkJCQkJCQkJICBvcC0+ZC5wYXJhbS5wYXJhbXR5cGUsCisJCQkJCQkJCQkJCQkJ ICAtMSwKKwkJCQkJCQkJCQkJCQkgIG9wLT5kLnBhcmFtLnBhcmFtdHlwbGVuLAorCQkJCQkJCQkJ CQkJCSAgb3AtPmQucGFyYW0ucGFyYW10eXBieXZhbCk7CisKKwkJCSpvcC0+cmVzdmFsdWUgPSBk OworCQkJKm9wLT5yZXNudWxsID0gaXNudWxsOworCisJCQlFRU9fTkVYVCgpOworCQl9CisKIAkJ RUVPX0NBU0UoRUVPUF9QQVJBTV9DQUxMQkFDSykKIAkJewogCQkJLyogYWxsb3cgYW4gZXh0ZW5z aW9uIG1vZHVsZSB0byBzdXBwbHkgYSBQQVJBTV9FWFRFUk4gdmFsdWUgKi8KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjTWFpbi5jCmluZGV4IDQxMDkyMWNjNDAuLmExYWU3MzJhZTUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y01haW4uYwpAQCAtMjEwLDYgKzIxMCw3IEBAIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlE ZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJc3dpdGNoIChxdWVyeURlc2MtPm9wZXJhdGlv bikKIAl7CiAJCWNhc2UgQ01EX1NFTEVDVDoKKwkJY2FzZSBDTURfTEVUOgogCiAJCQkvKgogCQkJ ICogU0VMRUNUIEZPUiBbS0VZXSBVUERBVEUvU0hBUkUgYW5kIG1vZGlmeWluZyBDVEVzIG5lZWQg dG8gbWFyawpAQCAtMTExOSw2ICsxMTIwLDM2IEBAIENoZWNrVmFsaWRSZXN1bHRSZWwoUmVzdWx0 UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywgQ21kVHlwZSBvcGVyYXRpb24pCiAJCQkJCSBlcnJtc2co ImNhbm5vdCBjaGFuZ2UgVE9BU1QgcmVsYXRpb24gXCIlc1wiIiwKIAkJCQkJCQlSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZShyZXN1bHRSZWwpKSkpOwogCQkJYnJlYWs7CisJCWNhc2UgUkVMS0lORF9W QVJJQUJMRToKKworCQkJLyogT25seSBMRVQgc3RhdGVtZW50IGlzIGFsbG93ZWQgKi8KKwkJCWlm IChvcGVyYXRpb24gIT0gQ01EX0xFVCkKKwkJCXsKKwkJCQlzd2l0Y2ggKG9wZXJhdGlvbikKKwkJ CQl7CisJCQkJCWNhc2UgQ01EX0lOU0VSVDoKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJ KGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJCQkJIGVycm1zZygiY2Fu bm90IGluc2VydCBpbnRvIHZhcmlhYmxlIFwiJXNcIiIsCisJCQkJCQkJCQlSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShyZXN1bHRSZWwpKSkpOworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgQ01EX1VQ REFURToKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9O R19PQkpFQ1RfVFlQRSksCisJCQkJCQkJIGVycm1zZygiY2Fubm90IHVwZGF0ZSB2YXJpYWJsZSBc IiVzXCIiLAorCQkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVzdWx0UmVsKSkpKTsK KwkJCQkJCWJyZWFrOworCQkJCQljYXNlIENNRF9ERUxFVEU6CisJCQkJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCQkJCSBl cnJtc2coImNhbm5vdCBkZWxldGUgZnJvbSB2YXJpYWJsZSBcIiVzXCIiLAorCQkJCQkJCQkJUmVs YXRpb25HZXRSZWxhdGlvbk5hbWUocmVzdWx0UmVsKSkpKTsKKwkJCQkJZGVmYXVsdDoKKwkJCQkJ CWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgQ21kVHlwZTogJWQiLCAoaW50KSBvcGVyYXRpb24p OworCQkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQorCQkJYnJlYWs7CiAJCWNhc2UgUkVMS0lORF9W SUVXOgogCiAJCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlm eVRhYmxlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCAy YThlY2JkODMwLi5mOGU0NzhhYTQyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFi bGUuYwpAQCAtMzksNiArMzksNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5o IgogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2NoZW1hdmFy LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4 ZWNQYXJ0aXRpb24uaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgpAQCAtNjgsNiAr NjksNyBAQCBzdGF0aWMgdm9pZCBFeGVjU2V0dXBDaGlsZFBhcmVudE1hcEZvclN1YnBsYW4oTW9k aWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSk7CiBzdGF0aWMgVHVwbGVDb252ZXJzaW9uTWFwICp0dXBj b252X21hcF9mb3Jfc3VicGxhbihNb2RpZnlUYWJsZVN0YXRlICpub2RlLAogCQkJCQkJaW50IHdo aWNocGxhbik7CiAKKwogLyoKICAqIFZlcmlmeSB0aGF0IHRoZSB0dXBsZXMgdG8gYmUgcHJvZHVj ZWQgYnkgSU5TRVJUIG9yIFVQREFURSBtYXRjaCB0aGUKICAqIHRhcmdldCByZWxhdGlvbidzIHJv d3R5cGUKQEAgLTE1NjgsNiArMTU3MCw4MSBAQCBFeGVjT25Db25mbGljdFVwZGF0ZShNb2RpZnlU YWJsZVN0YXRlICptdHN0YXRlLAogfQogCiAKKworCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlFeGVjTGV0 CisgKgorICoJCUZvciBMRVQsIHdlIGhhdmUgdG8gdXBkYXRlIHRhcmdldCB2YXJpYWJsZSwKKyAq ICAgICAgUmV0dXJucyBOVUxMLCB0aGVyZSBhcmUgbm90IFJFVFVSTklORyBjbGF1c2UuCisgKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKi8KK3N0YXRpYyBUdXBsZVRhYmxlU2xvdCAqCitFeGVjTGV0KE1vZGlmeVRhYmxl U3RhdGUgKm10c3RhdGUsCisJCSAgIFR1cGxlVGFibGVTbG90ICpzbG90LAorCQkgICBFU3RhdGUg KmVzdGF0ZSwKKwkJICAgYm9vbCBjYW5TZXRUYWcpCit7CisJSGVhcFR1cGxlCXR1cGxlOworCVJl c3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm87CisJUmVsYXRpb24JcmVzdWx0UmVsYXRpb25EZXNj OworCVR1cGxlRGVzYwl0dXBkZXNjOworCWJvb2wJCWlzbnVsbCA9IHRydWU7CisJRGF0dW0JCXZh bHVlOworCUZvcm1fcGdfYXR0cmlidXRlIGF0dHIgPSBOVUxMOworCU9pZAkJCXZhcmlkOworCisJ aWYgKHNsb3QgIT0gTlVMTCAmJiAhc2xvdC0+dHRzX2lzZW1wdHkpCisJeworCQl0dXBsZSA9IHNs b3QtPnR0c190dXBsZTsKKwkJdHVwZGVzYyA9IHNsb3QtPnR0c190dXBsZURlc2NyaXB0b3I7CisK KwkJQXNzZXJ0KHR1cGRlc2MgIT0gTlVMTCk7CisKKwkJLyogc2hvdWxkIGJlIGNoZWNrZWQgYmVm b3JlICovCisJCWlmICh0dXBkZXNjLT5uYXR0cyAhPSAxKQorCQkJZWxvZyhFUlJPUiwgInVuZXhw ZWN0ZWQgbnVtYmVyIG9mIGF0dHJpYnV0ZXMiKTsKKworCQlhdHRyID0gVHVwbGVEZXNjQXR0cih0 dXBkZXNjLCAwKTsKKworCQlpZiAoIXNsb3QtPnR0c19pc251bGxbMF0pCisJCXsKKwkJCWlzbnVs bCA9IGZhbHNlOworCQkJdmFsdWUgPSBzbG90LT50dHNfdmFsdWVzWzBdOworCQl9CisJfQorCisJ LyoKKwkgKiBOb3csIGVzX3Jlc3VsdF9yZWxhdGlvbl9pbmZvIGlzIGVtcHR5LCBidXQgY2FuIGJl IGluaXRpYWxpemVkCisJICogdG8gc3RydWN0dXJlIG9mIHVzZWQgc2NoZW1hIHZhcmlhYmxlLgor CSAqLworCXJlc3VsdFJlbEluZm8gPSBlc3RhdGUtPmVzX3Jlc3VsdF9yZWxhdGlvbl9pbmZvOwor CXJlc3VsdFJlbGF0aW9uRGVzYyA9IHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYzsKKwl2 YXJpZCA9IHJlc3VsdFJlbGF0aW9uRGVzYy0+cmRfaWQ7CisKKwlpZiAoIWlzbnVsbCkKKwl7CisJ CS8qIGV4cGVjdGluZyBzbyB2YXJpYWJsZSBhbmQgZXhwcmVzc2lvbiBhcmUgZXF1YWwgKi8KKwkJ U2V0U2NoZW1hVmFyaWFibGUodmFyaWQsIHZhbHVlLCBpc251bGwsCisJCQkJCQkJCWF0dHItPmF0 dHR5cGlkLCAtMSwKKwkJCQkJCQkJYXR0ci0+YXR0bGVuLCBhdHRyLT5hdHRieXZhbCk7CisJfQor CWVsc2UKKwl7CisJCVNldFNjaGVtYVZhcmlhYmxlKHZhcmlkLCAoRGF0dW0pIDAsIHRydWUsCisJ CQkJCQkJCSAgSW52YWxpZE9pZCwgLTEsIC0xLCBmYWxzZSk7CisJfQorCisJaWYgKGNhblNldFRh ZykKKwl7CisJCUFzc2VydChlc3RhdGUtPmVzX3Byb2Nlc3NlZCA9PSAwKTsKKwkJKGVzdGF0ZS0+ ZXNfcHJvY2Vzc2VkKSsrOworCX0KKworCXJldHVybiBOVUxMOworfQorCiAvKgogICogUHJvY2Vz cyBCRUZPUkUgRUFDSCBTVEFURU1FTlQgdHJpZ2dlcnMKICAqLwpAQCAtMTU5OCw2ICsxNjc1LDkg QEAgZmlyZUJTVHJpZ2dlcnMoTW9kaWZ5VGFibGVTdGF0ZSAqbm9kZSkKIAkJY2FzZSBDTURfREVM RVRFOgogCQkJRXhlY0JTRGVsZXRlVHJpZ2dlcnMobm9kZS0+cHMuc3RhdGUsIHJlc3VsdFJlbElu Zm8pOwogCQkJYnJlYWs7CisJCWNhc2UgQ01EX0xFVDoKKwkJCS8qIHRoZXJlIGFyZSBubyB0cmln Z2VyICovCisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bmtub3duIG9w ZXJhdGlvbiIpOwogCQkJYnJlYWs7CkBAIC0xNjUyLDYgKzE3MzIsOSBAQCBmaXJlQVNUcmlnZ2Vy cyhNb2RpZnlUYWJsZVN0YXRlICpub2RlKQogCQkJRXhlY0FTRGVsZXRlVHJpZ2dlcnMobm9kZS0+ cHMuc3RhdGUsIHJlc3VsdFJlbEluZm8sCiAJCQkJCQkJCSBub2RlLT5tdF90cmFuc2l0aW9uX2Nh cHR1cmUpOwogCQkJYnJlYWs7CisJCWNhc2UgQ01EX0xFVDoKKwkJCS8qIHZhcmlhYmxlcyBoYXMg bm90IHRyaWdnZXJzICovCisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1 bmtub3duIG9wZXJhdGlvbiIpOwogCQkJYnJlYWs7CkBAIC0yMDU2LDYgKzIxMzksOSBAQCBFeGVj TW9kaWZ5VGFibGUoUGxhblN0YXRlICpwc3RhdGUpCiAJCQkJCQkJCSAgJm5vZGUtPm10X2VwcXN0 YXRlLCBlc3RhdGUsCiAJCQkJCQkJCSAgTlVMTCwgdHJ1ZSwgbm9kZS0+Y2FuU2V0VGFnKTsKIAkJ CQlicmVhazsKKwkJCWNhc2UgQ01EX0xFVDoKKwkJCQlzbG90ID0gRXhlY0xldChub2RlLCBzbG90 LCBlc3RhdGUsIG5vZGUtPmNhblNldFRhZyk7CisJCQkJYnJlYWs7CiAJCQlkZWZhdWx0OgogCQkJ CWVsb2coRVJST1IsICJ1bmtub3duIG9wZXJhdGlvbiIpOwogCQkJCWJyZWFrOwpAQCAtMjU2Miw2 ICsyNjQ4LDcgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRl ICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQkJYnJlYWs7CiAJCQljYXNlIENNRF9VUERBVEU6CiAJ CQljYXNlIENNRF9ERUxFVEU6CisJCQljYXNlIENNRF9MRVQ6CiAJCQkJanVua19maWx0ZXJfbmVl ZGVkID0gdHJ1ZTsKIAkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9zcGkuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCmluZGV4IDlm YzQ0MzFiODAuLjMxMGJjM2YyYzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3Nw aS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCkBAIC0yNDA0LDYgKzI0MDQsOSBA QCBfU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBmaXJlX3RyaWdnZXJzLCB1 aW50NjQgdGNvdW50KQogCQkJZWxzZQogCQkJCXJlcyA9IFNQSV9PS19VUERBVEU7CiAJCQlicmVh azsKKwkJY2FzZSBDTURfTEVUOgorCQkJcmVzID0gU1BJX09LX1VUSUxJVFk7CisJCQlicmVhazsK IAkJZGVmYXVsdDoKIAkJCXJldHVybiBTUElfRVJST1JfT1BVTktOT1dOOwogCX0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29w eWZ1bmNzLmMKaW5kZXggYmFmZTBkMTA3MS4uYmYyNTBhYWZiYiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNz LmMKQEAgLTMwNTYsNiArMzA1NiwxNyBAQCBfY29weVNlbGVjdFN0bXQoY29uc3QgU2VsZWN0U3Rt dCAqZnJvbSkKIAlyZXR1cm4gbmV3bm9kZTsKIH0KIAorc3RhdGljIExldFN0bXQgKgorX2NvcHlM ZXRTdG10KGNvbnN0IExldFN0bXQgKmZyb20pCit7CisJTGV0U3RtdCAqbmV3bm9kZSA9IG1ha2VO b2RlKExldFN0bXQpOworCisJQ09QWV9OT0RFX0ZJRUxEKHZhcmlhYmxlKTsKKwlDT1BZX05PREVf RklFTEQoc2VsZWN0U3RtdCk7CisKKwlyZXR1cm4gbmV3bm9kZTsKK30KKwogc3RhdGljIFNldE9w ZXJhdGlvblN0bXQgKgogX2NvcHlTZXRPcGVyYXRpb25TdG10KGNvbnN0IFNldE9wZXJhdGlvblN0 bXQgKmZyb20pCiB7CkBAIC01MDkxLDYgKzUxMDIsOSBAQCBjb3B5T2JqZWN0SW1wbChjb25zdCB2 b2lkICpmcm9tKQogCQljYXNlIFRfU2VsZWN0U3RtdDoKIAkJCXJldHZhbCA9IF9jb3B5U2VsZWN0 U3RtdChmcm9tKTsKIAkJCWJyZWFrOworCQljYXNlIFRfTGV0U3RtdDoKKwkJCXJldHZhbCA9IF9j b3B5TGV0U3RtdChmcm9tKTsKKwkJCWJyZWFrOwogCQljYXNlIFRfU2V0T3BlcmF0aW9uU3RtdDoK IAkJCXJldHZhbCA9IF9jb3B5U2V0T3BlcmF0aW9uU3RtdChmcm9tKTsKIAkJCWJyZWFrOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9k ZXMvZXF1YWxmdW5jcy5jCmluZGV4IDAyY2E3ZDU4OGMuLjcwOWE2ODYxMzQgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9l cXVhbGZ1bmNzLmMKQEAgLTEwNjgsNiArMTA2OCwxNSBAQCBfZXF1YWxTZWxlY3RTdG10KGNvbnN0 IFNlbGVjdFN0bXQgKmEsIGNvbnN0IFNlbGVjdFN0bXQgKmIpCiB9CiAKIHN0YXRpYyBib29sCitf ZXF1YWxMZXRTdG10KGNvbnN0IExldFN0bXQgKmEsIGNvbnN0IExldFN0bXQgKmIpCit7CisJQ09N UEFSRV9OT0RFX0ZJRUxEKHZhcmlhYmxlKTsKKwlDT01QQVJFX05PREVfRklFTEQoc2VsZWN0U3Rt dCk7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wKIF9lcXVhbFNldE9wZXJhdGlv blN0bXQoY29uc3QgU2V0T3BlcmF0aW9uU3RtdCAqYSwgY29uc3QgU2V0T3BlcmF0aW9uU3RtdCAq YikKIHsKIAlDT01QQVJFX1NDQUxBUl9GSUVMRChvcCk7CkBAIC0zMjI4LDYgKzMyMzcsOSBAQCBl cXVhbChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQogCQljYXNlIFRfU2VsZWN0U3RtdDoK IAkJCXJldHZhbCA9IF9lcXVhbFNlbGVjdFN0bXQoYSwgYik7CiAJCQlicmVhazsKKwkJY2FzZSBU X0xldFN0bXQ6CisJCQlyZXR2YWwgPSBfZXF1YWxMZXRTdG10KGEsIGIpOworCQkJYnJlYWs7CiAJ CWNhc2UgVF9TZXRPcGVyYXRpb25TdG10OgogCQkJcmV0dmFsID0gX2VxdWFsU2V0T3BlcmF0aW9u U3RtdChhLCBiKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9k ZUZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwppbmRleCA2Yzc2YzQxZWJl Li44ZDI0ODE4YzlmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwor KysgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwpAQCAtMzQ0NCw2ICszNDQ0LDE2IEBA IHJhd19leHByZXNzaW9uX3RyZWVfd2Fsa2VyKE5vZGUgKm5vZGUsCiAJCQkJCXJldHVybiB0cnVl OwogCQkJfQogCQkJYnJlYWs7CisJCWNhc2UgVF9MZXRTdG10OgorCQkJeworCQkJCUxldFN0bXQg KnN0bXQgPSAoTGV0U3RtdCAqKSBub2RlOworCisJCQkJaWYgKHdhbGtlcihzdG10LT52YXJpYWJs ZSwgY29udGV4dCkpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmICh3YWxrZXIoc3RtdC0+c2Vs ZWN0U3RtdCwgY29udGV4dCkpCisJCQkJCXJldHVybiB0cnVlOworCQkJfQorCQkJYnJlYWs7CiAJ CWNhc2UgVF9BX0V4cHI6CiAJCQl7CiAJCQkJQV9FeHByCSAgICpleHByID0gKEFfRXhwciAqKSBu b2RlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCmluZGV4IDg5ZjI3Y2UwZWIuLmY0 ZDg3NTY0ODcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMu YworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMKQEAgLTEyNTEsMTIg KzEyNTEsMTUgQEAgbWF4X3BhcmFsbGVsX2hhemFyZF93YWxrZXIoTm9kZSAqbm9kZSwgbWF4X3Bh cmFsbGVsX2hhemFyZF9jb250ZXh0ICpjb250ZXh0KQogCSAqIFBBUkFNX0VYRUMgUGFyYW1zIGxp c3RlZCBpbiBzYWZlX3BhcmFtX2lkcywgbWVhbmluZyB0aGV5IGNvdWxkIGJlCiAJICogZWl0aGVy IGdlbmVyYXRlZCB3aXRoaW4gdGhlIHdvcmtlciBvciBjYW4gYmUgY29tcHV0ZWQgaW4gbWFzdGVy IGFuZAogCSAqIHRoZW4gdGhlaXIgdmFsdWUgY2FuIGJlIHBhc3NlZCB0byB0aGUgd29ya2VyLgor CSAqIFBBUkFNX1NDSEVNQV9WQVJJQUJMRSBwYXJhbXMgYXJlIG5ld2VyIGNoYW5nZWQgYnkgd29y a2Vycywgc28gdGhleSBjYW4gYmUKKwkgKiBzYWZlLgogCSAqLwogCWVsc2UgaWYgKElzQShub2Rl LCBQYXJhbSkpCiAJewogCQlQYXJhbQkgICAqcGFyYW0gPSAoUGFyYW0gKikgbm9kZTsKIAotCQlp ZiAocGFyYW0tPnBhcmFta2luZCA9PSBQQVJBTV9FWFRFUk4pCisJCWlmIChwYXJhbS0+cGFyYW1r aW5kID09IFBBUkFNX0VYVEVSTiB8fAorCQkJcGFyYW0tPnBhcmFta2luZCA9PSBQQVJBTV9TQ0hF TUFfVkFSSUFCTEUpCiAJCQlyZXR1cm4gZmFsc2U7CiAKIAkJaWYgKHBhcmFtLT5wYXJhbWtpbmQg IT0gUEFSQU1fRVhFQyB8fApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUu YyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKaW5kZXggZTdiMmJjN2U3My4uZjIyZWFi NDIyZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYworKysgYi9zcmMv YmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAicGFy c2VyL3BhcnNlX3RhcmdldC5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZXRyZWUuaCIKICNpbmNs dWRlICJyZXdyaXRlL3Jld3JpdGVNYW5pcC5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgi CiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAKIApAQCAtNTQsNiArNTUsNyBAQCBzdGF0aWMgUXVl cnkgKnRyYW5zZm9ybUluc2VydFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBJbnNlcnRTdG10ICpz dG10KTsKIHN0YXRpYyBMaXN0ICp0cmFuc2Zvcm1JbnNlcnRSb3coUGFyc2VTdGF0ZSAqcHN0YXRl LCBMaXN0ICpleHBybGlzdCwKIAkJCQkgICBMaXN0ICpzdG10Y29scywgTGlzdCAqaWNvbHVtbnMs IExpc3QgKmF0dHJub3MsCiAJCQkJICAgYm9vbCBzdHJpcF9pbmRpcmVjdGlvbik7CitzdGF0aWMg UXVlcnkgKnRyYW5zZm9ybUxldFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMZXRTdG10ICpzdG10 KTsKIHN0YXRpYyBPbkNvbmZsaWN0RXhwciAqdHJhbnNmb3JtT25Db25mbGljdENsYXVzZShQYXJz ZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkgIE9uQ29uZmxpY3RDbGF1c2UgKm9uQ29uZmxpY3RDbGF1 c2UpOwogc3RhdGljIGludAljb3VudF9yb3dleHByX2NvbHVtbnMoUGFyc2VTdGF0ZSAqcHN0YXRl LCBOb2RlICpleHByKTsKQEAgLTI2Myw2ICsyNjUsNyBAQCB0cmFuc2Zvcm1TdG10KFBhcnNlU3Rh dGUgKnBzdGF0ZSwgTm9kZSAqcGFyc2VUcmVlKQogCQljYXNlIFRfSW5zZXJ0U3RtdDoKIAkJY2Fz ZSBUX1VwZGF0ZVN0bXQ6CiAJCWNhc2UgVF9EZWxldGVTdG10OgorCQljYXNlIFRfTGV0U3RtdDoK IAkJCSh2b2lkKSB0ZXN0X3Jhd19leHByZXNzaW9uX2NvdmVyYWdlKHBhcnNlVHJlZSwgTlVMTCk7 CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKQEAgLTMwMCw2ICszMDMsMTAgQEAgdHJhbnNmb3JtU3Rt dChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKnBhcnNlVHJlZSkKIAkJCX0KIAkJCWJyZWFrOwog CisJCWNhc2UgVF9MZXRTdG10OgorCQkJcmVzdWx0ID0gdHJhbnNmb3JtTGV0U3RtdChwc3RhdGUs IChMZXRTdG10ICopIHBhcnNlVHJlZSk7CisJCQlicmVhazsKKwogCQkJLyoKIAkJCSAqIFNwZWNp YWwgY2FzZXMKIAkJCSAqLwpAQCAtMzU4LDYgKzM2NSw3IEBAIGFuYWx5emVfcmVxdWlyZXNfc25h cHNob3QoUmF3U3RtdCAqcGFyc2VUcmVlKQogCQljYXNlIFRfRGVsZXRlU3RtdDoKIAkJY2FzZSBU X1VwZGF0ZVN0bXQ6CiAJCWNhc2UgVF9TZWxlY3RTdG10OgorCQljYXNlIFRfTGV0U3RtdDoKIAkJ CXJlc3VsdCA9IHRydWU7CiAJCQlicmVhazsKIApAQCAtMTUzMyw2ICsxNTQxLDIwNyBAQCB0cmFu c2Zvcm1WYWx1ZXNDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTZWxlY3RTdG10ICpzdG10KQog fQogCiAvKgorICogdHJhbnNmb3JtTGV0U3RtdCAtCisgKgkgIHRyYW5zZm9ybSBhbiBMZXQgU3Rh dGVtZW50CisgKi8KK3N0YXRpYyBRdWVyeSAqCit0cmFuc2Zvcm1MZXRTdG10KFBhcnNlU3RhdGUg KnBzdGF0ZSwgTGV0U3RtdCAqc3RtdCkKK3sKKwlRdWVyeQkgICAqcXJ5ID0gbWFrZU5vZGUoUXVl cnkpOworCUxpc3QJICAgKmV4cHJMaXN0ID0gTklMOworCUxpc3QJICAgKmV4cHJMaXN0Q29lciA9 IE5JTDsKKwlMaXN0CSAgICpzdWJfcnRhYmxlOworCUxpc3QJICAgKnN1Yl9uYW1lc3BhY2U7CisJ UmFuZ2VUYmxFbnRyeSAqcnRlOworCVJhbmdlVGJsUmVmICpydHI7CisJTGlzdENlbGwgICAqbGM7 CisJQWNsTW9kZQkJdGFyZ2V0UGVybXM7CisJUGFyc2VTdGF0ZSAqc3ViX3BzdGF0ZTsKKwlRdWVy eQkgICAqc2VsZWN0UXVlcnk7CisJaW50CQkJaSA9IDA7CisKKwlSZWxhdGlvbglyZDsKKwlPaWQJ CQl2YXJ0eXBpZCA9IEludmFsaWRPaWQ7CisKKwkvKiBUaGVyZSBjYW4ndCBiZSBhbnkgb3V0ZXIg V0lUSCB0byB3b3JyeSBhYm91dCAqLworCUFzc2VydChwc3RhdGUtPnBfY3RlbmFtZXNwYWNlID09 IE5JTCk7CisKKwlxcnktPmNvbW1hbmRUeXBlID0gQ01EX0xFVDsKKwlwc3RhdGUtPnBfaXNfbGV0 ID0gdHJ1ZTsKKworCS8qCisJICogSWYgYSBub24tbmlsIHJhbmdldGFibGUvbmFtZXNwYWNlIHdh cyBwYXNzZWQgaW4sIGFuZCB3ZSBhcmUgZG9pbmcKKwkgKiBJTlNFUlQvU0VMRUNULCBhcnJhbmdl IHRvIHBhc3MgdGhlIHJhbmdldGFibGUvbmFtZXNwYWNlIGRvd24gdG8gdGhlCisJICogU0VMRUNU LiAgVGhpcyBjYW4gb25seSBoYXBwZW4gaWYgd2UgYXJlIGluc2lkZSBhIENSRUFURSBSVUxFLCBh bmQgaW4KKwkgKiB0aGF0IGNhc2Ugd2Ugd2FudCB0aGUgcnVsZSdzIE9MRCBhbmQgTkVXIHJ0YWJs ZSBlbnRyaWVzIHRvIGFwcGVhciBhcworCSAqIHBhcnQgb2YgdGhlIFNFTEVDVCdzIHJ0YWJsZSwg bm90IGFzIG91dGVyIHJlZmVyZW5jZXMgZm9yIGl0LiAgKEtsdWdlISkKKwkgKiBUaGUgU0VMRUNU J3Mgam9pbmxpc3QgaXMgbm90IGFmZmVjdGVkIGhvd2V2ZXIuICBXZSBtdXN0IGRvIHRoaXMgYmVm b3JlCisJICogYWRkaW5nIHRoZSB0YXJnZXQgdGFibGUgdG8gdGhlIElOU0VSVCdzIHJ0YWJsZS4K KwkgKi8KKwlzdWJfcnRhYmxlID0gcHN0YXRlLT5wX3J0YWJsZTsKKwlwc3RhdGUtPnBfcnRhYmxl ID0gTklMOworCXN1Yl9uYW1lc3BhY2UgPSBwc3RhdGUtPnBfbmFtZXNwYWNlOworCXBzdGF0ZS0+ cF9uYW1lc3BhY2UgPSBOSUw7CisKKwl0YXJnZXRQZXJtcyA9IEFDTF9VUERBVEU7CisJcXJ5LT5y ZXN1bHRSZWxhdGlvbiA9IHNldFRhcmdldFRhYmxlKHBzdGF0ZSwgc3RtdC0+dmFyaWFibGUsCisJ CQkJCQkJCQkJIGZhbHNlLCBmYWxzZSwgdGFyZ2V0UGVybXMpOworCisJcmQgPSBwc3RhdGUtPnBf dGFyZ2V0X3JlbGF0aW9uOworCXZhcnR5cGlkID0gcmQtPnJkX3JlbC0+cmVsb2Z0eXBlOworCisJ LyoKKwkgKiBXZSBtYWtlIHRoZSBzdWItcHN0YXRlIGEgY2hpbGQgb2YgdGhlIG91dGVyIHBzdGF0 ZSBzbyB0aGF0IGl0IGNhbgorCSAqIHNlZSBhbnkgUGFyYW0gZGVmaW5pdGlvbnMgc3VwcGxpZWQg ZnJvbSBhYm92ZS4gIFNpbmNlIHRoZSBvdXRlcgorCSAqIHBzdGF0ZSdzIHJ0YWJsZSBhbmQgbmFt ZXNwYWNlIGFyZSBwcmVzZW50bHkgZW1wdHksIHRoZXJlIGFyZSBubworCSAqIHNpZGUtZWZmZWN0 cyBvZiBleHBvc2luZyBuYW1lcyB0aGUgc3ViLVNFTEVDVCBzaG91bGRuJ3QgYmUgYWJsZSB0bwor CSAqIHNlZS4KKwkgKi8KKwlzdWJfcHN0YXRlID0gbWFrZV9wYXJzZXN0YXRlKHBzdGF0ZSk7CisK KwkvKgorCSAqIFByb2Nlc3MgdGhlIHNvdXJjZSBTRUxFQ1QuCisJICoKKwkgKiBJdCBpcyBpbXBv cnRhbnQgdGhhdCB0aGlzIGJlIGhhbmRsZWQganVzdCBsaWtlIGEgc3RhbmRhbG9uZSBTRUxFQ1Q7 CisJICogb3RoZXJ3aXNlIHRoZSBiZWhhdmlvciBvZiBTRUxFQ1Qgd2l0aGluIElOU0VSVCBtaWdo dCBiZSBkaWZmZXJlbnQKKwkgKiBmcm9tIGEgc3RhbmQtYWxvbmUgU0VMRUNULiAoSW5kZWVkLCBQ b3N0Z3JlcyB1cCB0aHJvdWdoIDYuNSBoYWQKKwkgKiBidWdzIG9mIGp1c3QgdGhhdCBuYXR1cmUu Li4pCisJICoKKwkgKiBUaGUgc29sZSBleGNlcHRpb24gaXMgdGhhdCB3ZSBwcmV2ZW50IHJlc29s dmluZyB1bmtub3duLXR5cGUKKwkgKiBvdXRwdXRzIGFzIFRFWFQuICBUaGlzIGRvZXMgbm90IGNo YW5nZSB0aGUgc2VtYW50aWNzIHNpbmNlIGlmIHRoZQorCSAqIGNvbHVtbiB0eXBlIG1hdHRlcnMg c2VtYW50aWNhbGx5LCBpdCB3b3VsZCBoYXZlIGJlZW4gcmVzb2x2ZWQgdG8KKwkgKiBzb21ldGhp bmcgZWxzZSBhbnl3YXkuICBEb2luZyB0aGlzIGxldHMgdXMgcmVzb2x2ZSBzdWNoIG91dHB1dHMg YXMKKwkgKiB0aGUgdGFyZ2V0IGNvbHVtbidzIHR5cGUsIHdoaWNoIHdlIGhhbmRsZSBiZWxvdy4K KwkgKi8KKwlzdWJfcHN0YXRlLT5wX3J0YWJsZSA9IHN1Yl9ydGFibGU7CisJc3ViX3BzdGF0ZS0+ cF9qb2luZXhwcnMgPSBOSUw7CS8qIHN1Yl9ydGFibGUgaGFzIG5vIGpvaW5zICovCisJc3ViX3Bz dGF0ZS0+cF9uYW1lc3BhY2UgPSBzdWJfbmFtZXNwYWNlOworCXN1Yl9wc3RhdGUtPnBfcmVzb2x2 ZV91bmtub3ducyA9IGZhbHNlOworCisJc2VsZWN0UXVlcnkgPSB0cmFuc2Zvcm1TdG10KHN1Yl9w c3RhdGUsIHN0bXQtPnNlbGVjdFN0bXQpOworCisJZnJlZV9wYXJzZXN0YXRlKHN1Yl9wc3RhdGUp OworCisJLyogVGhlIGdyYW1tYXIgc2hvdWxkIGhhdmUgcHJvZHVjZWQgYSBTRUxFQ1QgKi8KKwlp ZiAoIUlzQShzZWxlY3RRdWVyeSwgUXVlcnkpIHx8CisJCXNlbGVjdFF1ZXJ5LT5jb21tYW5kVHlw ZSAhPSBDTURfU0VMRUNUKQorCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBub24tU0VMRUNUIGNv bW1hbmQgaW4gTEVUIC4uLiBTRUxFQ1QiKTsKKworCS8qCisJICogTWFrZSB0aGUgc291cmNlIGJl IGEgc3VicXVlcnkgaW4gdGhlIExFVCdzIHJhbmdldGFibGUsIGFuZCBhZGQKKwkgKiBpdCB0byB0 aGUgTEVUJ3Mgam9pbmxpc3QuCisJICovCisJcnRlID0gYWRkUmFuZ2VUYWJsZUVudHJ5Rm9yU3Vi cXVlcnkocHN0YXRlLAorCQkJCQkJCQkJCXNlbGVjdFF1ZXJ5LAorCQkJCQkJCQkJCW1ha2VBbGlh cygiKlNFTEVDVCoiLCBOSUwpLAorCQkJCQkJCQkJCWZhbHNlLAorCQkJCQkJCQkJCWZhbHNlKTsK KwlydHIgPSBtYWtlTm9kZShSYW5nZVRibFJlZik7CisJLyogYXNzdW1lIG5ldyBydGUgaXMgYXQg ZW5kICovCisJcnRyLT5ydGluZGV4ID0gbGlzdF9sZW5ndGgocHN0YXRlLT5wX3J0YWJsZSk7CisJ QXNzZXJ0KHJ0ZSA9PSBydF9mZXRjaChydHItPnJ0aW5kZXgsIHBzdGF0ZS0+cF9ydGFibGUpKTsK Kwlwc3RhdGUtPnBfam9pbmxpc3QgPSBsYXBwZW5kKHBzdGF0ZS0+cF9qb2lubGlzdCwgcnRyKTsK KworCS8qLS0tLS0tLS0tLQorCSAqIEdlbmVyYXRlIGFuIGV4cHJlc3Npb24gbGlzdCBmb3IgdGhl IExFVCB0aGF0IHNlbGVjdHMgYWxsIHRoZQorCSAqIG5vbi1yZXNqdW5rIGNvbHVtbnMgZnJvbSB0 aGUgc3VicXVlcnkuICAoTEVUJ3MgdGxpc3QgbXVzdCBiZQorCSAqIHNlcGFyYXRlIGZyb20gdGhl IHN1YnF1ZXJ5J3MgdGxpc3QgYmVjYXVzZSB3ZSBtYXkgYWRkIGRhdGF0eXBlCisJICogY29lcmNp b25zLCBldGMuKQorCSAqLS0tLS0tLS0tLQorCSAqLworCWV4cHJMaXN0ID0gTklMOworCWZvcmVh Y2gobGMsIHNlbGVjdFF1ZXJ5LT50YXJnZXRMaXN0KQorCXsKKwkJVGFyZ2V0RW50cnkgKnRsZSA9 IChUYXJnZXRFbnRyeSAqKSBsZmlyc3QobGMpOworCQlFeHByCSAgICpleHByOworCisJCWlmICh0 bGUtPnJlc2p1bmspCisJCQljb250aW51ZTsKKwkJaWYgKHRsZS0+ZXhwciAmJgorCQkJKElzQSh0 bGUtPmV4cHIsIENvbnN0KSB8fElzQSh0bGUtPmV4cHIsIFBhcmFtKSkgJiYKKwkJCWV4cHJUeXBl KChOb2RlICopIHRsZS0+ZXhwcikgPT0gVU5LTk9XTk9JRCkKKwkJCWV4cHIgPSB0bGUtPmV4cHI7 CisJCWVsc2UKKwkJeworCQkJVmFyCQkgICAqdmFyID0gbWFrZVZhckZyb21UYXJnZXRFbnRyeShy dHItPnJ0aW5kZXgsIHRsZSk7CisKKwkJCXZhci0+bG9jYXRpb24gPSBleHByTG9jYXRpb24oKE5v ZGUgKikgdGxlLT5leHByKTsKKwkJCWV4cHIgPSAoRXhwciAqKSB2YXI7CisJCX0KKwkJZXhwckxp c3QgPSBsYXBwZW5kKGV4cHJMaXN0LCBleHByKTsKKwl9CisKKwkvKgorCSAqIEJlY2F1c2Ugc3Vw cG9ydHMgb25seSBzY2FsYXIgdmFyaWFibGVzLCB3ZSBjYW4gb25seSBzaW1wbGUKKwkgKiB0cmFu c2Zvcm1hdGlvbnMgYW5kIGNoZWNrcyBoZXJlLgorCSAqLworCWlmIChsaXN0X2xlbmd0aChleHBy TGlzdCkgIT0gMSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRB WF9FUlJPUiksCisJCQkJIGVycm1zZygiZXhwcmVzc2lvbiBpcyBub3Qgc2NhbGFyIHZhbHVlIiks CisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsCisJCQkJCQkJCQlleHByTG9jYXRpb24o KE5vZGUgKikgZXhwckxpc3QpKSkpOworCisJZXhwckxpc3RDb2VyID0gTklMOworCWZvcmVhY2go bGMsIGV4cHJMaXN0KQorCXsKKwkJTm9kZQkgICAqb3JpZ19leHByID0gKE5vZGUqKSBsZmlyc3Qo bGMpOworCQlPaWQJCQlleHBydHlwaWQgPSBleHByVHlwZSgoTm9kZSAqKSBvcmlnX2V4cHIpOwor CQlFeHByCSAgICpleHByOworCisJCWV4cHIgPSAoRXhwciAqKQorCQkJY29lcmNlX3RvX3Rhcmdl dF90eXBlKHBzdGF0ZSwKKwkJCQkJCQkJICBvcmlnX2V4cHIsIGV4cHJ0eXBpZCwKKwkJCQkJCQkJ ICB2YXJ0eXBpZCwgLTEsCisJCQkJCQkJCSAgQ09FUkNJT05fQVNTSUdOTUVOVCwKKwkJCQkJCQkJ ICBDT0VSQ0VfSU1QTElDSVRfQ0FTVCwKKwkJCQkJCQkJICAtMSk7CisKKwkJaWYgKGV4cHIgPT0g TlVMTCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVf TUlTTUFUQ0gpLAorCQkJCQkgZXJybXNnKCJ2YXJpYWJsZSBcIiVzXCIgaXMgb2YgdHlwZSAlcyIK KwkJCQkJCQkgICIgYnV0IGV4cHJlc3Npb24gaXMgb2YgdHlwZSAlcyIsCisJCQkJCQkJUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUocmQpLAorCQkJCQkJCWZvcm1hdF90eXBlX2JlKHZhcnR5cGlkKSwK KwkJCQkJCQlmb3JtYXRfdHlwZV9iZShleHBydHlwaWQpKSwKKwkJCQkgZXJyaGludCgiWW91IHdp bGwgbmVlZCB0byByZXdyaXRlIG9yIGNhc3QgdGhlIGV4cHJlc3Npb24uIiksCisJCQkJIHBhcnNl cl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbigoTm9kZSAqKSBvcmlnX2V4cHIpKSkp OworCisJCWV4cHJMaXN0Q29lciA9IGxhcHBlbmQoZXhwckxpc3RDb2VyLCBleHByKTsKKwl9CisK KwkvKgorCSAqIEdlbmVyYXRlIHF1ZXJ5J3MgdGFyZ2V0IGxpc3QgdXNpbmcgdGhlIGNvbXB1dGVk IGxpc3Qgb2YgZXhwcmVzc2lvbnMuCisJICogQWxzbywgbWFyayBhbGwgdGhlIHRhcmdldCBjb2x1 bW5zIGFzIG5lZWRpbmcgaW5zZXJ0IHBlcm1pc3Npb25zLgorCSAqLworCXJ0ZSA9IHBzdGF0ZS0+ cF90YXJnZXRfcmFuZ2V0YmxlbnRyeTsKKwlxcnktPnRhcmdldExpc3QgPSBOSUw7CisJZm9yZWFj aChsYywgZXhwckxpc3QpCisJeworCQlFeHByCSAgICpleHByID0gKEV4cHIgKikgbGZpcnN0KGxj KTsKKwkJVGFyZ2V0RW50cnkgKnRsZTsKKworCQl0bGUgPSBtYWtlVGFyZ2V0RW50cnkoZXhwciwK KwkJCQkJCQkgIGkgKyAxLAorCQkJCQkJCSAgRmlndXJlQ29sbmFtZSgoTm9kZSAqKWV4cHIpLAor CQkJCQkJCSAgZmFsc2UpOworCQlxcnktPnRhcmdldExpc3QgPSBsYXBwZW5kKHFyeS0+dGFyZ2V0 TGlzdCwgdGxlKTsKKwl9CisKKwkvKiBkb25lIGJ1aWxkaW5nIHRoZSByYW5nZSB0YWJsZSBhbmQg am9pbnRyZWUgKi8KKwlxcnktPnJ0YWJsZSA9IHBzdGF0ZS0+cF9ydGFibGU7CisJcXJ5LT5qb2lu dHJlZSA9IG1ha2VGcm9tRXhwcihwc3RhdGUtPnBfam9pbmxpc3QsIE5VTEwpOworCisJcXJ5LT5o YXNUYXJnZXRTUkZzID0gcHN0YXRlLT5wX2hhc1RhcmdldFNSRnM7CisJcXJ5LT5oYXNTdWJMaW5r cyA9IHBzdGF0ZS0+cF9oYXNTdWJMaW5rczsKKworCWFzc2lnbl9xdWVyeV9jb2xsYXRpb25zKHBz dGF0ZSwgcXJ5KTsKKworCXJldHVybiBxcnk7Cit9CisKKy8qCiAgKiB0cmFuc2Zvcm1TZXRPcGVy YXRpb25TdG10IC0KICAqCSAgdHJhbnNmb3JtcyBhIHNldC1vcGVyYXRpb25zIHRyZWUKICAqCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueQppbmRleCA1MzI5NDMyZjI1Li5kMmEyNjRkMWUxIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTI1 Nyw4ICsyNTcsOCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAq cmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCQlDb25zdHJhaW50c1NldFN0 bXQgQ29weVN0bXQgQ3JlYXRlQXNTdG10IENyZWF0ZUNhc3RTdG10CiAJCUNyZWF0ZURvbWFpblN0 bXQgQ3JlYXRlRXh0ZW5zaW9uU3RtdCBDcmVhdGVHcm91cFN0bXQgQ3JlYXRlT3BDbGFzc1N0bXQK IAkJQ3JlYXRlT3BGYW1pbHlTdG10IEFsdGVyT3BGYW1pbHlTdG10IENyZWF0ZVBMYW5nU3RtdAot CQlDcmVhdGVTY2hlbWFTdG10IENyZWF0ZVNlcVN0bXQgQ3JlYXRlU3RtdCBDcmVhdGVTdGF0c1N0 bXQgQ3JlYXRlVGFibGVTcGFjZVN0bXQKLQkJQ3JlYXRlRmR3U3RtdCBDcmVhdGVGb3JlaWduU2Vy dmVyU3RtdCBDcmVhdGVGb3JlaWduVGFibGVTdG10CisJCUNyZWF0ZVNjaGVtYVN0bXQgQ3JlYXRl U2NoZW1hVmFyU3RtdCBDcmVhdGVTZXFTdG10IENyZWF0ZVN0bXQgQ3JlYXRlU3RhdHNTdG10CisJ CUNyZWF0ZVRhYmxlU3BhY2VTdG10IENyZWF0ZUZkd1N0bXQgQ3JlYXRlRm9yZWlnblNlcnZlclN0 bXQgQ3JlYXRlRm9yZWlnblRhYmxlU3RtdAogCQlDcmVhdGVBc3NlcnRTdG10IENyZWF0ZVRyYW5z Zm9ybVN0bXQgQ3JlYXRlVHJpZ1N0bXQgQ3JlYXRlRXZlbnRUcmlnU3RtdAogCQlDcmVhdGVVc2Vy U3RtdCBDcmVhdGVVc2VyTWFwcGluZ1N0bXQgQ3JlYXRlUm9sZVN0bXQgQ3JlYXRlUG9saWN5U3Rt dAogCQlDcmVhdGVkYlN0bXQgRGVjbGFyZUN1cnNvclN0bXQgRGVmaW5lU3RtdCBEZWxldGVTdG10 IERpc2NhcmRTdG10IERvU3RtdApAQCAtMjY4LDcgKzI2OCw3IEBAIHN0YXRpYyBOb2RlICptYWtl UmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpx dWVyeSk7CiAJCURyb3BUcmFuc2Zvcm1TdG10CiAJCURyb3BVc2VyTWFwcGluZ1N0bXQgRXhwbGFp blN0bXQgRmV0Y2hTdG10CiAJCUdyYW50U3RtdCBHcmFudFJvbGVTdG10IEltcG9ydEZvcmVpZ25T Y2hlbWFTdG10IEluZGV4U3RtdCBJbnNlcnRTdG10Ci0JCUxpc3RlblN0bXQgTG9hZFN0bXQgTG9j a1N0bXQgTm90aWZ5U3RtdCBFeHBsYWluYWJsZVN0bXQgUHJlcGFyYWJsZVN0bXQKKwkJTGV0U3Rt dCBMaXN0ZW5TdG10IExvYWRTdG10IExvY2tTdG10IE5vdGlmeVN0bXQgRXhwbGFpbmFibGVTdG10 IFByZXBhcmFibGVTdG10CiAJCUNyZWF0ZUZ1bmN0aW9uU3RtdCBBbHRlckZ1bmN0aW9uU3RtdCBS ZWluZGV4U3RtdCBSZW1vdmVBZ2dyU3RtdAogCQlSZW1vdmVGdW5jU3RtdCBSZW1vdmVPcGVyU3Rt dCBSZW5hbWVTdG10IFJldm9rZVN0bXQgUmV2b2tlUm9sZVN0bXQKIAkJUnVsZUFjdGlvblN0bXQg UnVsZUFjdGlvblN0bXRPckVtcHR5IFJ1bGVTdG10CkBAIC02NDYsNyArNjQ2LDcgQEAgc3RhdGlj IE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFz ZXMsIE5vZGUgKnF1ZXJ5KTsKIAlLRVkKIAogCUxBQkVMIExBTkdVQUdFIExBUkdFX1AgTEFTVF9Q IExBVEVSQUxfUAotCUxFQURJTkcgTEVBS1BST09GIExFQVNUIExFRlQgTEVWRUwgTElLRSBMSU1J VCBMSVNURU4gTE9BRCBMT0NBTAorCUxFQURJTkcgTEVBS1BST09GIExFQVNUIExFRlQgTEVUIExF VkVMIExJS0UgTElNSVQgTElTVEVOIExPQUQgTE9DQUwKIAlMT0NBTFRJTUUgTE9DQUxUSU1FU1RB TVAgTE9DQVRJT04gTE9DS19QIExPQ0tFRCBMT0dHRUQKIAogCU1BUFBJTkcgTUFUQ0ggTUFURVJJ QUxJWkVEIE1BWFZBTFVFIE1FVEhPRCBNSU5VVEVfUCBNSU5WQUxVRSBNT0RFIE1PTlRIX1AgTU9W RQpAQCAtNjgyLDggKzY4Miw4IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVj dChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJVU5CT1VOREVE IFVOQ09NTUlUVEVEIFVORU5DUllQVEVEIFVOSU9OIFVOSVFVRSBVTktOT1dOIFVOTElTVEVOIFVO TE9HR0VECiAJVU5USUwgVVBEQVRFIFVTRVIgVVNJTkcKIAotCVZBQ1VVTSBWQUxJRCBWQUxJREFU RSBWQUxJREFUT1IgVkFMVUVfUCBWQUxVRVMgVkFSQ0hBUiBWQVJJQURJQyBWQVJZSU5HCi0JVkVS Qk9TRSBWRVJTSU9OX1AgVklFVyBWSUVXUyBWT0xBVElMRQorCVZBQ1VVTSBWQUxJRCBWQUxJREFU RSBWQUxJREFUT1IgVkFMVUVfUCBWQUxVRVMgVkFSQ0hBUiBWQVJJQUJMRSBWQVJJQUJMRVMKKwlW QVJJQURJQyBWQVJZSU5HIFZFUkJPU0UgVkVSU0lPTl9QIFZJRVcgVklFV1MgVk9MQVRJTEUKIAog CVdIRU4gV0hFUkUgV0hJVEVTUEFDRV9QIFdJTkRPVyBXSVRIIFdJVEhJTiBXSVRIT1VUIFdPUksg V1JBUFBFUiBXUklURQogCkBAIC04NzMsNiArODczLDcgQEAgc3RtdCA6CiAJCQl8IENyZWF0ZVBM YW5nU3RtdAogCQkJfCBDcmVhdGVTY2hlbWFTdG10CiAJCQl8IENyZWF0ZVNlcVN0bXQKKwkJCXwg Q3JlYXRlU2NoZW1hVmFyU3RtdAogCQkJfCBDcmVhdGVTdG10CiAJCQl8IENyZWF0ZVN1YnNjcmlw dGlvblN0bXQKIAkJCXwgQ3JlYXRlU3RhdHNTdG10CkBAIC05MTQsNiArOTE1LDcgQEAgc3RtdCA6 CiAJCQl8IExpc3RlblN0bXQKIAkJCXwgUmVmcmVzaE1hdFZpZXdTdG10CiAJCQl8IExvYWRTdG10 CisJCQl8IExldFN0bXQKIAkJCXwgTG9ja1N0bXQKIAkJCXwgTm90aWZ5U3RtdAogCQkJfCBQcmVw YXJlU3RtdApAQCAtMTM3NCw2ICsxMzc2LDcgQEAgc2NoZW1hX3N0bXQ6CiAJCQlDcmVhdGVTdG10 CiAJCQl8IEluZGV4U3RtdAogCQkJfCBDcmVhdGVTZXFTdG10CisJCQl8IENyZWF0ZVNjaGVtYVZh clN0bXQKIAkJCXwgQ3JlYXRlVHJpZ1N0bXQKIAkJCXwgR3JhbnRTdG10CiAJCQl8IFZpZXdTdG10 CkBAIC0xODAyLDcgKzE4MDUsMTIgQEAgRGlzY2FyZFN0bXQ6CiAJCQkJCW4tPnRhcmdldCA9IERJ U0NBUkRfU0VRVUVOQ0VTOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQotCisJCQl8IERJ U0NBUkQgVkFSSUFCTEVTCisJCQkJeworCQkJCQlEaXNjYXJkU3RtdCAqbiA9IG1ha2VOb2RlKERp c2NhcmRTdG10KTsKKwkJCQkJbi0+dGFyZ2V0ID0gRElTQ0FSRF9WQVJJQUJMRVM7CisJCQkJCSQk ID0gKE5vZGUgKikgbjsKKwkJCQl9CiAJCTsKIAogCkBAIC00MjY5LDYgKzQyNzcsMzQgQEAgTnVt ZXJpY09ubHlfbGlzdDoJTnVtZXJpY09ubHkJCQkJCQl7ICQkID0gbGlzdF9tYWtlMSgkMSk7IH0K IAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCiAgKgorICoJCVFVRVJZIDoKKyAqCQkJCUNSRUFURSBW QVJJQUJMRSBzZXFuYW1lIFtBU10gdHlwZQorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwor Q3JlYXRlU2NoZW1hVmFyU3RtdDoKKwkJCUNSRUFURSBPcHRUZW1wIFZBUklBQkxFIHF1YWxpZmll ZF9uYW1lIG9wdF9hcyBUeXBlbmFtZQorCQkJCXsKKwkJCQkJQ3JlYXRlU2NoZW1hVmFyU3RtdCAq biA9IG1ha2VOb2RlKENyZWF0ZVNjaGVtYVZhclN0bXQpOworCQkJCQkkNC0+cmVscGVyc2lzdGVu Y2UgPSAkMjsKKwkJCQkJbi0+dmFyaWFibGUgPSAkNDsKKwkJCQkJbi0+dHlwZU5hbWUgPSAkNjsK KwkJCQkJbi0+aWZfbm90X2V4aXN0cyA9IGZhbHNlOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJ CQl9CisJCQl8IENSRUFURSBPcHRUZW1wIFZBUklBQkxFIElGX1AgTk9UIEVYSVNUUyBxdWFsaWZp ZWRfbmFtZSBvcHRfYXMgVHlwZW5hbWUKKwkJCQl7CisJCQkJCUNyZWF0ZVNjaGVtYVZhclN0bXQg Km4gPSBtYWtlTm9kZShDcmVhdGVTY2hlbWFWYXJTdG10KTsKKwkJCQkJJDctPnJlbHBlcnNpc3Rl bmNlID0gJDI7CisJCQkJCW4tPnZhcmlhYmxlID0gJDc7CisJCQkJCW4tPnR5cGVOYW1lID0gJDk7 CisJCQkJCW4tPmlmX25vdF9leGlzdHMgPSB0cnVlOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJ CQl9CisJCTsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgogICoJCVFVRVJJRVMgOgogICoJ CQkJQ1JFQVRFIFtPUiBSRVBMQUNFXSBbVFJVU1RFRF0gW1BST0NFRFVSQUxdIExBTkdVQUdFIC4u LgogICoJCQkJRFJPUCBbUFJPQ0VEVVJBTF0gTEFOR1VBR0UgLi4uCkBAIC02MzE1LDYgKzYzNTEs NyBAQCBkcm9wX3R5cGVfYW55X25hbWU6CiAJCQl8IFRFWFRfUCBTRUFSQ0ggRElDVElPTkFSWQkJ CQl7ICQkID0gT0JKRUNUX1RTRElDVElPTkFSWTsgfQogCQkJfCBURVhUX1AgU0VBUkNIIFRFTVBM QVRFCQkJCXsgJCQgPSBPQkpFQ1RfVFNURU1QTEFURTsgfQogCQkJfCBURVhUX1AgU0VBUkNIIENP TkZJR1VSQVRJT04JCQl7ICQkID0gT0JKRUNUX1RTQ09ORklHVVJBVElPTjsgfQorCQkJfCBWQVJJ QUJMRQkJCQkJCQkJeyAkJCA9IE9CSkVDVF9WQVJJQUJMRTsgfQogCQk7CiAKIC8qIG9iamVjdCB0 eXBlcyB0YWtpbmcgbmFtZV9saXN0ICovCkBAIC02NTg0LDYgKzY2MjEsNyBAQCBjb21tZW50X3R5 cGVfYW55X25hbWU6CiAJCQl8IFRFWFRfUCBTRUFSQ0ggRElDVElPTkFSWQkJCXsgJCQgPSBPQkpF Q1RfVFNESUNUSU9OQVJZOyB9CiAJCQl8IFRFWFRfUCBTRUFSQ0ggUEFSU0VSCQkJCXsgJCQgPSBP QkpFQ1RfVFNQQVJTRVI7IH0KIAkJCXwgVEVYVF9QIFNFQVJDSCBURU1QTEFURQkJCXsgJCQgPSBP QkpFQ1RfVFNURU1QTEFURTsgfQorCQkJfCBWQVJJQUJMRQkJCQkJCQl7ICQkID0gT0JKRUNUX1ZB UklBQkxFOyB9CiAJCTsKIAogLyogb2JqZWN0IHR5cGVzIHRha2luZyBuYW1lICovCkBAIC02NzIy LDYgKzY3NjAsNyBAQCBzZWN1cml0eV9sYWJlbF90eXBlX2FueV9uYW1lOgogCQkJfCBUQUJMRQkJ CQkJCQkJeyAkJCA9IE9CSkVDVF9UQUJMRTsgfQogCQkJfCBWSUVXCQkJCQkJCQl7ICQkID0gT0JK RUNUX1ZJRVc7IH0KIAkJCXwgTUFURVJJQUxJWkVEIFZJRVcJCQkJCXsgJCQgPSBPQkpFQ1RfTUFU VklFVzsgfQorCQkJfCBWQVJJQUJMRQkJCQkJCQl7ICQkID0gT0JKRUNUX1ZBUklBQkxFOyB9CiAJ CTsKIAogLyogb2JqZWN0IHR5cGVzIHRha2luZyBuYW1lICovCkBAIC03MDQ3LDYgKzcwODYsMTQg QEAgcHJpdmlsZWdlX3RhcmdldDoKIAkJCQkJbi0+b2JqcyA9ICQyOwogCQkJCQkkJCA9IG47CiAJ CQkJfQorCQkJfCBWQVJJQUJMRSBxdWFsaWZpZWRfbmFtZV9saXN0CisJCQkJeworCQkJCQlQcml2 VGFyZ2V0ICpuID0gKFByaXZUYXJnZXQgKikgcGFsbG9jKHNpemVvZihQcml2VGFyZ2V0KSk7CisJ CQkJCW4tPnRhcmd0eXBlID0gQUNMX1RBUkdFVF9PQkpFQ1Q7CisJCQkJCW4tPm9ianR5cGUgPSBP QkpFQ1RfVkFSSUFCTEU7CisJCQkJCW4tPm9ianMgPSAkMjsKKwkJCQkJJCQgPSBuOworCQkJCX0K IAkJCXwgRk9SRUlHTiBEQVRBX1AgV1JBUFBFUiBuYW1lX2xpc3QKIAkJCQl7CiAJCQkJCVByaXZU YXJnZXQgKm4gPSAoUHJpdlRhcmdldCAqKSBwYWxsb2Moc2l6ZW9mKFByaXZUYXJnZXQpKTsKQEAg LTcxNTksNiArNzIwNiwxNCBAQCBwcml2aWxlZ2VfdGFyZ2V0OgogCQkJCQluLT5vYmpzID0gJDU7 CiAJCQkJCSQkID0gbjsKIAkJCQl9CisJCQl8IEFMTCBWQVJJQUJMRVMgSU5fUCBTQ0hFTUEgbmFt ZV9saXN0CisJCQkJeworCQkJCQlQcml2VGFyZ2V0ICpuID0gKFByaXZUYXJnZXQgKikgcGFsbG9j KHNpemVvZihQcml2VGFyZ2V0KSk7CisJCQkJCW4tPnRhcmd0eXBlID0gQUNMX1RBUkdFVF9BTExf SU5fU0NIRU1BOworCQkJCQluLT5vYmp0eXBlID0gT0JKRUNUX1ZBUklBQkxFOworCQkJCQluLT5v YmpzID0gJDU7CisJCQkJCSQkID0gbjsKKwkJCQl9CiAJCQl8IEFMTCBGVU5DVElPTlMgSU5fUCBT Q0hFTUEgbmFtZV9saXN0CiAJCQkJewogCQkJCQlQcml2VGFyZ2V0ICpuID0gKFByaXZUYXJnZXQg KikgcGFsbG9jKHNpemVvZihQcml2VGFyZ2V0KSk7CkBAIC03MzQxLDYgKzczOTYsNyBAQCBkZWZh Y2xfcHJpdmlsZWdlX3RhcmdldDoKIAkJCXwgRlVOQ1RJT05TCQl7ICQkID0gT0JKRUNUX0ZVTkNU SU9OOyB9CiAJCQl8IFJPVVRJTkVTCQl7ICQkID0gT0JKRUNUX0ZVTkNUSU9OOyB9CiAJCQl8IFNF UVVFTkNFUwkJeyAkJCA9IE9CSkVDVF9TRVFVRU5DRTsgfQorCQkJfCBWQVJJQUJMRVMJCXsgJCQg PSBPQkpFQ1RfVkFSSUFCTEU7IH0KIAkJCXwgVFlQRVNfUAkJeyAkJCA9IE9CSkVDVF9UWVBFOyB9 CiAJCQl8IFNDSEVNQVMJCXsgJCQgPSBPQkpFQ1RfU0NIRU1BOyB9CiAJCTsKQEAgLTEwNjQ1LDcg KzEwNzAxLDggQEAgRXhwbGFpbmFibGVTdG10OgogCQkJfCBDcmVhdGVBc1N0bXQKIAkJCXwgQ3Jl YXRlTWF0Vmlld1N0bXQKIAkJCXwgUmVmcmVzaE1hdFZpZXdTdG10Ci0JCQl8IEV4ZWN1dGVTdG10 CQkJCQkvKiBieSBkZWZhdWx0IGFsbCBhcmUgJCQ9JDEgKi8KKwkJCXwgRXhlY3V0ZVN0bXQKKwkJ CXwgTGV0U3RtdAkJCQkJLyogYnkgZGVmYXVsdCBhbGwgYXJlICQkPSQxICovCiAJCTsKIAogZXhw bGFpbl9vcHRpb25fbGlzdDoKQEAgLTEwNzAyLDcgKzEwNzU5LDggQEAgUHJlcGFyYWJsZVN0bXQ6 CiAJCQlTZWxlY3RTdG10CiAJCQl8IEluc2VydFN0bXQKIAkJCXwgVXBkYXRlU3RtdAotCQkJfCBE ZWxldGVTdG10CQkJCQkvKiBieSBkZWZhdWx0IGFsbCBhcmUgJCQ9JDEgKi8KKwkJCXwgRGVsZXRl U3RtdAorCQkJfCBMZXRTdG10CQkJCQkvKiBieSBkZWZhdWx0IGFsbCBhcmUgJCQ9JDEgKi8KIAkJ OwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTExMTA0LDYgKzExMTYyLDMwIEBAIG9wdF9o b2xkOiAvKiBFTVBUWSAqLwkJCQkJCXsgJCQgPSAwOyB9CiAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK ICAqCiAgKgkJUVVFUlk6CisgKgkJCQlMRVQgU1RBVEVNRU5UUworICoKKyAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KK0xldFN0bXQ6CUxFVCBxdWFsaWZpZWRfbmFtZSAnPScgYV9leHByCisJCQkJewor CQkJCQlMZXRTdG10ICpuID0gbWFrZU5vZGUoTGV0U3RtdCk7CisJCQkJCVNlbGVjdFN0bXQgKnNl bGVjdCA9IG1ha2VOb2RlKFNlbGVjdFN0bXQpOworCQkJCQlSZXNUYXJnZXQJKnJlcyA9IG1ha2VO b2RlKFJlc1RhcmdldCk7CisKKwkJCQkJcmVzLT5uYW1lID0gTlVMTDsKKwkJCQkJcmVzLT5pbmRp cmVjdGlvbiA9IE5JTDsKKwkJCQkJcmVzLT52YWwgPSAoTm9kZSAqKSAkNDsKKwkJCQkJcmVzLT5s b2NhdGlvbiA9IEA0OworCQkJCQlzZWxlY3QtPnRhcmdldExpc3QgPSBsaXN0X21ha2UxKHJlcyk7 CisJCQkJCW4tPnZhcmlhYmxlID0gJDI7CisJCQkJCW4tPnNlbGVjdFN0bXQgPSAoTm9kZSAqKSBz ZWxlY3Q7CisKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJOworCisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKKyAqCisgKgkJUVVFUlk6CiAgKgkJCQlTRUxFQ1QgU1RBVEVNRU5UUwogICoK ICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTE1MDU2LDYgKzE1MTM4LDcgQEAgdW5yZXNlcnZl ZF9rZXl3b3JkOgogCQkJfCBMQVJHRV9QCiAJCQl8IExBU1RfUAogCQkJfCBMRUFLUFJPT0YKKwkJ CXwgTEVUCiAJCQl8IExFVkVMCiAJCQl8IExJU1RFTgogCQkJfCBMT0FECkBAIC0xNTIwMiw2ICsx NTI4NSw4IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgVkFMSURBVEUKIAkJCXwgVkFMSURB VE9SCiAJCQl8IFZBTFVFX1AKKwkJCXwgVkFSSUFCTEUKKwkJCXwgVkFSSUFCTEVTCiAJCQl8IFZB UllJTkcKIAkJCXwgVkVSU0lPTl9QCiAJCQl8IFZJRVcKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmlu ZGV4IGIyZjVlNDZlM2IuLmNiZjc1N2QwNTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAt NTA5LDYgKzUwOSw3IEBAIHN0YXRpYyBOb2RlICoKIHRyYW5zZm9ybUNvbHVtblJlZihQYXJzZVN0 YXRlICpwc3RhdGUsIENvbHVtblJlZiAqY3JlZikKIHsKIAlOb2RlCSAgICpub2RlID0gTlVMTDsK KwlOb2RlCSAgICp2YXJpYWJsZSA9IE5VTEw7CiAJY2hhcgkgICAqbnNwbmFtZSA9IE5VTEw7CiAJ Y2hhcgkgICAqcmVsbmFtZSA9IE5VTEw7CiAJY2hhcgkgICAqY29sbmFtZSA9IE5VTEw7CkBAIC03 NTAsNiArNzUxLDcwIEBAIHRyYW5zZm9ybUNvbHVtblJlZihQYXJzZVN0YXRlICpwc3RhdGUsIENv bHVtblJlZiAqY3JlZikKIAl9CiAKIAkvKgorCSAqIFRyeSB0byBpZGVudGlmeSBjb2x1bW4gcmVm IGFzIHZhcmlhYmxlLiBQb3NzaWJsZSB2YXJpYW50cyBhcmUKKwkgKgorCSAqIEEgLi4gdmFyaWFi bGUgbmFtZQorCSAqIEEuQiAuLiBxdWFsaWZpZWQgdmFyaWFibGUgbmFtZQorCSAqLworCXN3aXRj aCAobGlzdF9sZW5ndGgoY3JlZi0+ZmllbGRzKSkKKwl7CisJCWNhc2UgMToKKwkJCXsKKwkJCQlO b2RlCSAgICpmaWVsZDEgPSAoTm9kZSAqKSBsaW5pdGlhbChjcmVmLT5maWVsZHMpOworCisJCQkJ aWYgKElzQShmaWVsZDEsIFN0cmluZykpCisJCQkJeworCQkJCQljaGFyICp2YXJuYW1lICA9IHN0 clZhbChmaWVsZDEpOworCisJCQkJCS8qIFRyeSB0byBpZGVudGlmeSBhcyBhbiB1bnF1YWxpZmll ZCBjb2x1bW4gKi8KKwkJCQkJdmFyaWFibGUgPSB0b1NjaGVtYVZhcmlhYmxlKHBzdGF0ZSwKKwkJ CQkJCQkJCQkJCQlOVUxMLCB2YXJuYW1lLAorCQkJCQkJCQkJCQkJCWNyZWYtPmxvY2F0aW9uKTsK KwkJCQl9CisJCQkJYnJlYWs7CisJCQl9CisJCWNhc2UgMjoKKwkJCXsKKwkJCQlOb2RlCSAgICpm aWVsZDEgPSAoTm9kZSAqKSBsaW5pdGlhbChjcmVmLT5maWVsZHMpOworCQkJCU5vZGUJICAgKmZp ZWxkMiA9IChOb2RlICopIGxzZWNvbmQoY3JlZi0+ZmllbGRzKTsKKworCQkJCWlmIChJc0EoZmll bGQxLCBTdHJpbmcpICYmIElzQShmaWVsZDIsIFN0cmluZykpCisJCQkJeworCQkJCQljaGFyICpu c3BuYW1lID0gc3RyVmFsKGZpZWxkMSk7CisJCQkJCWNoYXIgKnZhcm5hbWUgPSBzdHJWYWwoZmll bGQyKTsKKworCQkJCQkvKiBUcnkgdG8gaWRlbnRpZnkgYXMgYW4gdW5xdWFsaWZpZWQgY29sdW1u ICovCisJCQkJCXZhcmlhYmxlID0gdG9TY2hlbWFWYXJpYWJsZShwc3RhdGUsCisJCQkJCQkJCQkJ CQkJbnNwbmFtZSwgdmFybmFtZSwKKwkJCQkJCQkJCQkJCQljcmVmLT5sb2NhdGlvbik7CisJCQkJ fQorCQkJCWJyZWFrOworCQkJfQorCQlkZWZhdWx0OgorCisJCQkvKgorCQkJICogVGhlcmUgY2Fu IGJlIGFub3RoZXIgdmFyaWFudHMsIG1vcmUgd2hlbiBjb21wb3NpdGUgdmFyaWFibGVzCisJCQkg KiB3aWxsIGJlIHN1cHBvcnRlZC4gQ3VycmVudGx5IG9ubHkgc2NhbGFycyBhcmUgc3VwcG9ydGVk LCBzbworCQkJICogdGhlcmUgYXJlIG5vdCBuZWNlc3NhcnkgdG8gc29sdmUgb3RoZXIgcXVlc3Rp b25zLgorCQkJICoKKwkJCSAqIGRvIG5vdGhpbmcKKwkJCSAqLworCQkJYnJlYWs7CisJfQorCisJ aWYgKHZhcmlhYmxlICE9IE5VTEwpCisJeworCQlpZiAobm9kZSAhPSBOVUxMKQorCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9BTUJJR1VPVVNfQ09MVU1OKSwKKwkJCQkJ IGVycm1zZygiY29sdW1uIHJlZmVyZW5jZSBcIiVzXCIgaXMgYW1iaWd1b3VzIiwKKwkJCQkJCQlO YW1lTGlzdFRvU3RyaW5nKGNyZWYtPmZpZWxkcykpLAorCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9u KHBzdGF0ZSwgY3JlZi0+bG9jYXRpb24pKSk7CisKKwkJbm9kZSA9IHZhcmlhYmxlOworCX0KKwor CS8qCiAJICogTm93IGdpdmUgdGhlIFBvc3RQYXJzZUNvbHVtblJlZkhvb2ssIGlmIGFueSwgYSBj aGFuY2UuICBXZSBwYXNzIHRoZQogCSAqIHRyYW5zbGF0aW9uLXNvLWZhciBzbyB0aGF0IGl0IGNh biB0aHJvdyBhbiBlcnJvciBpZiBpdCB3aXNoZXMgaW4gdGhlCiAJICogY2FzZSB0aGF0IGl0IGhh cyBhIGNvbmZsaWN0aW5nIGludGVycHJldGF0aW9uIG9mIHRoZSBDb2x1bW5SZWYuIChJZiBpdApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmMgYi9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYwppbmRleCAyNjI1ZGE1MzI3Li5mN2Q5YTBjOTM5 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYworKysgYi9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYwpAQCAtMTE1MCw2ICsxMTUwLDcgQEAg cGFyc2VyT3BlblRhYmxlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgY29uc3QgUmFuZ2VWYXIgKnJlbGF0 aW9uLCBpbnQgbG9ja21vZGUpCiAKIAlzZXR1cF9wYXJzZXJfZXJycG9zaXRpb25fY2FsbGJhY2so JnBjYnN0YXRlLCBwc3RhdGUsIHJlbGF0aW9uLT5sb2NhdGlvbik7CiAJcmVsID0gaGVhcF9vcGVu cnZfZXh0ZW5kZWQocmVsYXRpb24sIGxvY2ttb2RlLCB0cnVlKTsKKwogCWlmIChyZWwgPT0gTlVM TCkKIAl7CiAJCWlmIChyZWxhdGlvbi0+c2NoZW1hbmFtZSkKQEAgLTExODAsNiArMTE4MSwyNCBA QCBwYXJzZXJPcGVuVGFibGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBSYW5nZVZhciAqcmVs YXRpb24sIGludCBsb2NrbW9kZSkKIAkJCQkJCQkJcmVsYXRpb24tPnJlbG5hbWUpKSk7CiAJCX0K IAl9CisKKwkvKgorCSAqIFJFTEtJTkRfVkFSSUFCTEUgY2FuIGJlIHVzZWQgb25seSBpbiBMRVQg Y29tbWFuZC4KKwkgKiBQcm9iYWJseSB0aGlzIGNoZWNrIGNhbiBiZSBkb25lIGVsc2V3aGVyZSwg YnV0IGhlcmUgSQorCSAqIGhhdmUgYSB1c2VkIHJlbGF0aW9uIGFuZCBwYXJzZSBzdGF0ZSB0b2dl dGhlciBmaXJzdCB0aW1lLgorCSAqLworCWlmIChyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxL SU5EX1ZBUklBQkxFICYmICFwc3RhdGUtPnBfaXNfbGV0KQorCQllcmVwb3J0KEVSUk9SLAorCQkJ CShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCSBlcnJtc2coIlwiJXNc IiBpcyBhbiBzY2hlbWEgdmFyaWFibGUiLAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo cmVsKSkpKTsKKworCWlmIChwc3RhdGUtPnBfaXNfbGV0ICYmIHJlbC0+cmRfcmVsLT5yZWxraW5k ICE9IFJFTEtJTkRfVkFSSUFCTEUpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJS Q09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJIGVycm1zZygiXCIlc1wiIGlzIG5vdCBhbiBz Y2hlbWEgdmFyaWFibGUiLAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsK KwogCWNhbmNlbF9wYXJzZXJfZXJycG9zaXRpb25fY2FsbGJhY2soJnBjYnN0YXRlKTsKIAlyZXR1 cm4gcmVsOwogfQpAQCAtMzM2MCwzICszMzc5LDQyIEBAIGlzUXVlcnlVc2luZ1RlbXBSZWxhdGlv bl93YWxrZXIoTm9kZSAqbm9kZSwgdm9pZCAqY29udGV4dCkKIAkJCQkJCQkJICBpc1F1ZXJ5VXNp bmdUZW1wUmVsYXRpb25fd2Fsa2VyLAogCQkJCQkJCQkgIGNvbnRleHQpOwogfQorCisvKgorICog VHJ5IHRvIHJlcGxhY2UgQ29sdW1uUmVmIGJ5IFBhcmFtIHJlbGF0ZWQgdG8gdmFyaWFibGUKKyAq LworTm9kZSAqCit0b1NjaGVtYVZhcmlhYmxlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgY2hhciAqbnNw bmFtZSwgY2hhciAqdmFybmFtZSwgaW50IGxvY2F0aW9uKQoreworCU9pZAkJCXZhcmlkOworCVBh cmFtCSAgICpwYXJhbSA9IE5VTEw7CisKKwl2YXJpZCA9IFJhbmdlVmFyR2V0UmVsaWQobWFrZVJh bmdlVmFyKG5zcG5hbWUsIHZhcm5hbWUsIC0xKSwgTm9Mb2NrLCB0cnVlKTsKKwlpZiAoT2lkSXNW YWxpZCh2YXJpZCkpCisJeworCQlIZWFwVHVwbGUJdHA7CisJCUZvcm1fcGdfY2xhc3MJdmFydHVw OworCisJCQkvKiBub3csIHR5cGUgaW5mbyBmb3Igc2NoZW1hIHZhcmlhYmxlIGlzIGNvbGxlY3Rl ZCAqLworCQl0cCA9IFNlYXJjaFN5c0NhY2hlMShSRUxPSUQsIE9iamVjdElkR2V0RGF0dW0odmFy aWQpKTsKKwkJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHApKQorCQl7CisJCQl2YXJ0dXAgPSAoRm9y bV9wZ19jbGFzcykgR0VUU1RSVUNUKHRwKTsKKworCQkJaWYgKHZhcnR1cC0+cmVsa2luZCA9PSBS RUxLSU5EX1ZBUklBQkxFKQorCQkJeworCQkJCXBhcmFtID0gbWFrZU5vZGUoUGFyYW0pOworCQkJ CXBhcmFtLT5wYXJhbWtpbmQgPSBQQVJBTV9TQ0hFTUFfVkFSSUFCTEU7CisJCQkJcGFyYW0tPnBh cmFtaWQgPSB2YXJpZDsKKwkJCQlwYXJhbS0+cGFyYW10eXBlID0gdmFydHVwLT5yZWxvZnR5cGU7 CisJCQkJcGFyYW0tPnBhcmFtdHlwbW9kID0gLTE7CisJCQkJcGFyYW0tPnBhcmFtY29sbGlkID0g Z2V0X3R5cGNvbGxhdGlvbihwYXJhbS0+cGFyYW10eXBlKTsKKwkJCQlwYXJhbS0+bG9jYXRpb24g PSBsb2NhdGlvbjsKKwkJCX0KKworCQkJUmVsZWFzZVN5c0NhY2hlKHRwKTsKKwkJfQorCX0KKwor CXJldHVybiAoTm9kZSAqKSBwYXJhbTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV91dGlsY21kLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCmlu ZGV4IGQ0MTVkNzE4MGYuLjhjMzUyZjkyOTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV91dGlsY21kLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQu YwpAQCAtMTA2LDYgKzEwNiw3IEBAIHR5cGVkZWYgc3RydWN0CiAJTGlzdAkgICAqdmlld3M7CQkJ LyogQ1JFQVRFIFZJRVcgaXRlbXMgKi8KIAlMaXN0CSAgICppbmRleGVzOwkJLyogQ1JFQVRFIElO REVYIGl0ZW1zICovCiAJTGlzdAkgICAqdHJpZ2dlcnM7CQkvKiBDUkVBVEUgVFJJR0dFUiBpdGVt cyAqLworCUxpc3QJICAgKnZhcmlhYmxlczsJCS8qIENSRUFURSBWQVJJQUJMRSBpdGVtcyAqLwog CUxpc3QJICAgKmdyYW50czsJCQkvKiBHUkFOVCBpdGVtcyAqLwogfSBDcmVhdGVTY2hlbWFTdG10 Q29udGV4dDsKIApAQCAtMzE4Niw2ICszMTg3LDcgQEAgdHJhbnNmb3JtQ3JlYXRlU2NoZW1hU3Rt dChDcmVhdGVTY2hlbWFTdG10ICpzdG10KQogCWN4dC52aWV3cyA9IE5JTDsKIAljeHQuaW5kZXhl cyA9IE5JTDsKIAljeHQudHJpZ2dlcnMgPSBOSUw7CisJY3h0LnZhcmlhYmxlcyA9IE5JTDsKIAlj eHQuZ3JhbnRzID0gTklMOwogCiAJLyoKQEAgLTMyNTEsNiArMzI1MywxNCBAQCB0cmFuc2Zvcm1D cmVhdGVTY2hlbWFTdG10KENyZWF0ZVNjaGVtYVN0bXQgKnN0bXQpCiAJCQkJfQogCQkJCWJyZWFr OwogCisJCQljYXNlIFRfQ3JlYXRlU2NoZW1hVmFyU3RtdDoKKwkJCQl7CisJCQkJCUNyZWF0ZVNj aGVtYVZhclN0bXQgKmVscCA9IChDcmVhdGVTY2hlbWFWYXJTdG10ICopIGVsZW1lbnQ7CisKKwkJ CQkJc2V0U2NoZW1hTmFtZShjeHQuc2NoZW1hbmFtZSwgJmVscC0+dmFyaWFibGUtPnNjaGVtYW5h bWUpOworCQkJCQljeHQudmFyaWFibGVzID0gbGFwcGVuZChjeHQudmFyaWFibGVzLCBlbGVtZW50 KTsKKwkJCQl9CisKIAkJCWNhc2UgVF9HcmFudFN0bXQ6CiAJCQkJY3h0LmdyYW50cyA9IGxhcHBl bmQoY3h0LmdyYW50cywgZWxlbWVudCk7CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3Jp dGVIYW5kbGVyLmMKaW5kZXggNjYyNTNmYzNkMy4uNDdhOWIyMTFkOCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Jld3Jp dGUvcmV3cml0ZUhhbmRsZXIuYwpAQCAtMzMzNyw3ICszMzM3LDcgQEAgUmV3cml0ZVF1ZXJ5KFF1 ZXJ5ICpwYXJzZXRyZWUsIExpc3QgKnJld3JpdGVfZXZlbnRzKQogCQkJCQkJCQkJcnRfZW50cnlf cmVsYXRpb24sCiAJCQkJCQkJCQlwYXJzZXRyZWUtPnJlc3VsdFJlbGF0aW9uLCBOVUxMKTsKIAkJ fQotCQllbHNlIGlmIChldmVudCA9PSBDTURfREVMRVRFKQorCQllbHNlIGlmIChldmVudCA9PSBD TURfREVMRVRFIHx8IGV2ZW50ID09IENNRF9MRVQpCiAJCXsKIAkJCS8qIE5vdGhpbmcgdG8gZG8g aGVyZSAqLwogCQl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jIGIvc3Jj L2JhY2tlbmQvdGNvcC9wcXVlcnkuYwppbmRleCA2NmNjNWMzNWM2Li4zNGRkYjc5YTNkIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3Av cHF1ZXJ5LmMKQEAgLTE5Myw2ICsxOTMsMTAgQEAgUHJvY2Vzc1F1ZXJ5KFBsYW5uZWRTdG10ICpw bGFuLAogCQkJCQkJICJERUxFVEUgIiBVSU5UNjRfRk9STUFULAogCQkJCQkJIHF1ZXJ5RGVzYy0+ ZXN0YXRlLT5lc19wcm9jZXNzZWQpOwogCQkJCWJyZWFrOworCQkJY2FzZSBDTURfTEVUOgorCQkJ CXNucHJpbnRmKGNvbXBsZXRpb25UYWcsIENPTVBMRVRJT05fVEFHX0JVRlNJWkUsCisJCQkJCQkg IkxFVCAiKTsKKwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJc3RyY3B5KGNvbXBsZXRpb25U YWcsICI/Pz8iKTsKIAkJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRp bGl0eS5jIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKaW5kZXggM2FiZTdkNjE1NS4uMjdh MjFjNDhkYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKKysrIGIvc3Jj L2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJjb21t YW5kcy9wcm9jbGFuZy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oIgog I2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYWNtZHMuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zY2hl bWF2YXIuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zZWNsYWJlbC5oIgogI2luY2x1ZGUgImNvbW1h bmRzL3NlcXVlbmNlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5oIgpA QCAtMTEyLDYgKzExMyw3IEBAIENvbW1hbmRJc1JlYWRPbmx5KFBsYW5uZWRTdG10ICpwc3RtdCkK IAkJY2FzZSBDTURfREVMRVRFOgogCQkJcmV0dXJuIGZhbHNlOwogCQljYXNlIENNRF9VVElMSVRZ OgorCQljYXNlIENNRF9MRVQ6CiAJCQkvKiBGb3Igbm93LCB0cmVhdCBhbGwgdXRpbGl0eSBjb21t YW5kcyBhcyByZWFkL3dyaXRlICovCiAJCQlyZXR1cm4gZmFsc2U7CiAJCWRlZmF1bHQ6CkBAIC0x NzcsNiArMTc5LDcgQEAgY2hlY2tfeGFjdF9yZWFkb25seShOb2RlICpwYXJzZXRyZWUpCiAJCWNh c2UgVF9DcmVhdGVTY2hlbWFTdG10OgogCQljYXNlIFRfQ3JlYXRlU2VxU3RtdDoKIAkJY2FzZSBU X0NyZWF0ZVN0bXQ6CisJCWNhc2UgVF9DcmVhdGVTY2hlbWFWYXJTdG10OgogCQljYXNlIFRfQ3Jl YXRlVGFibGVBc1N0bXQ6CiAJCWNhc2UgVF9SZWZyZXNoTWF0Vmlld1N0bXQ6CiAJCWNhc2UgVF9D cmVhdGVUYWJsZVNwYWNlU3RtdDoKQEAgLTE0NzQsNiArMTQ3NywxMCBAQCBQcm9jZXNzVXRpbGl0 eVNsb3coUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCWFkZHJlc3MgPSBBbHRlclNlcXVlbmNlKHBz dGF0ZSwgKEFsdGVyU2VxU3RtdCAqKSBwYXJzZXRyZWUpOwogCQkJCWJyZWFrOwogCisJCQljYXNl IFRfQ3JlYXRlU2NoZW1hVmFyU3RtdDoKKwkJCQlhZGRyZXNzID0gRGVmaW5lU2NoZW1hVmFyaWFi bGUocHN0YXRlLCAoQ3JlYXRlU2NoZW1hVmFyU3RtdCAqKSBwYXJzZXRyZWUpOworCQkJCWJyZWFr OworCiAJCQljYXNlIFRfQ3JlYXRlVGFibGVBc1N0bXQ6CiAJCQkJYWRkcmVzcyA9IEV4ZWNDcmVh dGVUYWJsZUFzKChDcmVhdGVUYWJsZUFzU3RtdCAqKSBwYXJzZXRyZWUsCiAJCQkJCQkJCQkJCXF1 ZXJ5U3RyaW5nLCBwYXJhbXMsIHF1ZXJ5RW52LApAQCAtMjA5NSw2ICsyMTAyLDEwIEBAIENyZWF0 ZUNvbW1hbmRUYWcoTm9kZSAqcGFyc2V0cmVlKQogCQkJdGFnID0gIlNFTEVDVCI7CiAJCQlicmVh azsKIAorCQljYXNlIFRfTGV0U3RtdDoKKwkJCXRhZyA9ICJMRVQiOworCQkJYnJlYWs7CisKIAkJ CS8qIHV0aWxpdHkgc3RhdGVtZW50cyAtLS0gc2FtZSB3aGV0aGVyIHJhdyBvciBjb29rZWQgKi8K IAkJY2FzZSBUX1RyYW5zYWN0aW9uU3RtdDoKIAkJCXsKQEAgLTIyNTksNiArMjI3MCw5IEBAIENy ZWF0ZUNvbW1hbmRUYWcoTm9kZSAqcGFyc2V0cmVlKQogCQkJCWNhc2UgT0JKRUNUX0lOREVYOgog CQkJCQl0YWcgPSAiRFJPUCBJTkRFWCI7CiAJCQkJCWJyZWFrOworCQkJCWNhc2UgT0JKRUNUX1ZB UklBQkxFOgorCQkJCQl0YWcgPSAiRFJPUCBWQVJJQUJMRSI7CisJCQkJCWJyZWFrOwogCQkJCWNh c2UgT0JKRUNUX1RZUEU6CiAJCQkJCXRhZyA9ICJEUk9QIFRZUEUiOwogCQkJCQlicmVhazsKQEAg LTI1MTMsNiArMjUyNywxMCBAQCBDcmVhdGVDb21tYW5kVGFnKE5vZGUgKnBhcnNldHJlZSkKIAkJ CXRhZyA9ICJBTFRFUiBTRVFVRU5DRSI7CiAJCQlicmVhazsKIAorCQljYXNlIFRfQ3JlYXRlU2No ZW1hVmFyU3RtdDoKKwkJCXRhZyA9ICJDUkVBVEUgVkFSSUFCTEUiOworCQkJYnJlYWs7CisKIAkJ Y2FzZSBUX0RvU3RtdDoKIAkJCXRhZyA9ICJETyI7CiAJCQlicmVhazsKQEAgLTI2MzAsNiArMjY0 OCw5IEBAIENyZWF0ZUNvbW1hbmRUYWcoTm9kZSAqcGFyc2V0cmVlKQogCQkJCWNhc2UgRElTQ0FS RF9TRVFVRU5DRVM6CiAJCQkJCXRhZyA9ICJESVNDQVJEIFNFUVVFTkNFUyI7CiAJCQkJCWJyZWFr OworCQkJCWNhc2UgRElTQ0FSRF9WQVJJQUJMRVM6CisJCQkJCXRhZyA9ICJESVNDQVJEIFZBUklB QkxFUyI7CisJCQkJCWJyZWFrOwogCQkJCWRlZmF1bHQ6CiAJCQkJCXRhZyA9ICI/Pz8iOwogCQkJ fQpAQCAtMjgzNCw2ICsyODU1LDkgQEAgQ3JlYXRlQ29tbWFuZFRhZyhOb2RlICpwYXJzZXRyZWUp CiAJCQkJCWNhc2UgQ01EX0RFTEVURToKIAkJCQkJCXRhZyA9ICJERUxFVEUiOwogCQkJCQkJYnJl YWs7CisJCQkJCWNhc2UgQ01EX0xFVDoKKwkJCQkJCXRhZyA9ICJMRVQiOworCQkJCQkJYnJlYWs7 CiAJCQkJCWNhc2UgQ01EX1VUSUxJVFk6CiAJCQkJCQl0YWcgPSBDcmVhdGVDb21tYW5kVGFnKHN0 bXQtPnV0aWxpdHlTdG10KTsKIAkJCQkJCWJyZWFrOwpAQCAtMjk1Miw2ICsyOTc2LDEwIEBAIEdl dENvbW1hbmRMb2dMZXZlbChOb2RlICpwYXJzZXRyZWUpCiAJCQkJbGV2ID0gTE9HU1RNVF9BTEw7 CiAJCQlicmVhazsKIAorCQljYXNlIFRfTGV0U3RtdDoKKwkJCWxldiA9IExPR1NUTVRfQUxMOwor CQkJYnJlYWs7CisKIAkJCS8qIHV0aWxpdHkgc3RhdGVtZW50cyAtLS0gc2FtZSB3aGV0aGVyIHJh dyBvciBjb29rZWQgKi8KIAkJY2FzZSBUX1RyYW5zYWN0aW9uU3RtdDoKIAkJCWxldiA9IExPR1NU TVRfQUxMOwpAQCAtMzQwNSw2ICszNDMzLDcgQEAgR2V0Q29tbWFuZExvZ0xldmVsKE5vZGUgKnBh cnNldHJlZSkKIAkJCQlzd2l0Y2ggKHN0bXQtPmNvbW1hbmRUeXBlKQogCQkJCXsKIAkJCQkJY2Fz ZSBDTURfU0VMRUNUOgorCQkJCQljYXNlIENNRF9MRVQ6CiAJCQkJCQlsZXYgPSBMT0dTVE1UX0FM TDsKIAkJCQkJCWJyZWFrOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYWNs LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYWNsLmMKaW5kZXggMGNmYzI5N2I2NS4uZmNkNjk1 ODM2YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FjbC5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9hY2wuYwpAQCAtODA4LDYgKzgwOCwxMCBAQCBhY2xkZWZhdWx0KE9i amVjdFR5cGUgb2JqdHlwZSwgT2lkIG93bmVySWQpCiAJCQl3b3JsZF9kZWZhdWx0ID0gQUNMX1VT QUdFOwogCQkJb3duZXJfZGVmYXVsdCA9IEFDTF9BTExfUklHSFRTX1RZUEU7CiAJCQlicmVhazsK KwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQl3b3JsZF9kZWZhdWx0ID0gQUNMX05PX1JJR0hU UzsKKwkJCW93bmVyX2RlZmF1bHQgPSBBQ0xfQUxMX1JJR0hUU19WQVJJQUJMRTsKKwkJCWJyZWFr OwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBvYmp0eXBlOiAlZCIs IChpbnQpIG9ianR5cGUpOwogCQkJd29ybGRfZGVmYXVsdCA9IEFDTF9OT19SSUdIVFM7CS8qIGtl ZXAgY29tcGlsZXIgcXVpZXQgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9y dWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCBjNWY1 YTFjYTNmLi5iYTU5MmJlNGFlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVs ZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC00MSw2 ICs0MSw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiY29tbWFu ZHMvZGVmcmVtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVzcGFjZS5oIgorI2luY2x1ZGUg ImNvbW1hbmRzL3NjaGVtYXZhci5oIgogI2luY2x1ZGUgImNvbW1vbi9rZXl3b3Jkcy5oIgogI2lu Y2x1ZGUgImV4ZWN1dG9yL3NwaS5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKQEAgLTM3OSw2ICsz ODAsNyBAQCBzdGF0aWMgdm9pZCBnZXRfdXBkYXRlX3F1ZXJ5X3RhcmdldGxpc3RfZGVmKFF1ZXJ5 ICpxdWVyeSwgTGlzdCAqdGFyZ2V0TGlzdCwKIAkJCQkJCQkJZGVwYXJzZV9jb250ZXh0ICpjb250 ZXh0LAogCQkJCQkJCQlSYW5nZVRibEVudHJ5ICpydGUpOwogc3RhdGljIHZvaWQgZ2V0X2RlbGV0 ZV9xdWVyeV9kZWYoUXVlcnkgKnF1ZXJ5LCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpOworc3Rh dGljIHZvaWQgZ2V0X2xldF9xdWVyeV9kZWYoUXVlcnkgKnF1ZXJ5LCBkZXBhcnNlX2NvbnRleHQg KmNvbnRleHQpOwogc3RhdGljIHZvaWQgZ2V0X3V0aWxpdHlfcXVlcnlfZGVmKFF1ZXJ5ICpxdWVy eSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KTsKIHN0YXRpYyB2b2lkIGdldF9iYXNpY19zZWxl Y3RfcXVlcnkoUXVlcnkgKnF1ZXJ5LCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJCQkJCSAg IFR1cGxlRGVzYyByZXN1bHREZXNjKTsKQEAgLTQ5MjYsNiArNDkyOCwxMCBAQCBnZXRfcXVlcnlf ZGVmKFF1ZXJ5ICpxdWVyeSwgU3RyaW5nSW5mbyBidWYsIExpc3QgKnBhcmVudG5hbWVzcGFjZSwK IAkJCWdldF9kZWxldGVfcXVlcnlfZGVmKHF1ZXJ5LCAmY29udGV4dCk7CiAJCQlicmVhazsKIAor CQljYXNlIENNRF9MRVQ6CisJCQlnZXRfbGV0X3F1ZXJ5X2RlZihxdWVyeSwgJmNvbnRleHQpOwor CQkJYnJlYWs7CisKIAkJY2FzZSBDTURfTk9USElORzoKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoYnVmLCAiTk9USElORyIpOwogCQkJYnJlYWs7CkBAIC02MTM0LDYgKzYxNDAsNTggQEAgZ2V0 X2luc2VydF9xdWVyeV9kZWYoUXVlcnkgKnF1ZXJ5LCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQp CiAJfQogfQogCisvKiAtLS0tLS0tLS0tCisgKiBnZXRfbGV0X3F1ZXJ5X2RlZgkJCS0gUGFyc2Ug YmFjayBhbiBMRVQgcGFyc2V0cmVlCisgKiAtLS0tLS0tLS0tCisgKi8KK3N0YXRpYyB2b2lkCitn ZXRfbGV0X3F1ZXJ5X2RlZihRdWVyeSAqcXVlcnksIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCkK K3sKKwlTdHJpbmdJbmZvCWJ1ZiA9IGNvbnRleHQtPmJ1ZjsKKwlSYW5nZVRibEVudHJ5ICpzZWxl Y3RfcnRlID0gTlVMTDsKKwlSYW5nZVRibEVudHJ5ICpydGU7CisJTGlzdENlbGwgICAqbDsKKwor CS8qCisJICogSWYgaXQncyBhbiBJTlNFUlQgLi4uIFNFTEVDVCBvciBtdWx0aS1yb3cgVkFMVUVT LCB0aGVyZSB3aWxsIGJlIGEKKwkgKiBzaW5nbGUgUlRFIGZvciB0aGUgU0VMRUNUIG9yIFZBTFVF Uy4gIFBsYWluIFZBTFVFUyBoYXMgbmVpdGhlci4KKwkgKi8KKwlmb3JlYWNoKGwsIHF1ZXJ5LT5y dGFibGUpCisJeworCQlydGUgPSAoUmFuZ2VUYmxFbnRyeSAqKSBsZmlyc3QobCk7CisKKwkJaWYg KHJ0ZS0+cnRla2luZCA9PSBSVEVfU1VCUVVFUlkpCisJCXsKKwkJCWlmIChzZWxlY3RfcnRlKQor CQkJCWVsb2coRVJST1IsICJ0b28gbWFueSBzdWJxdWVyeSBSVEVzIGluIElOU0VSVCIpOworCQkJ c2VsZWN0X3J0ZSA9IHJ0ZTsKKwkJfQorCX0KKworCS8qCisJICogU3RhcnQgdGhlIHF1ZXJ5IHdp dGggSU5TRVJUIElOVE8gcmVsbmFtZQorCSAqLworCXJ0ZSA9IHJ0X2ZldGNoKHF1ZXJ5LT5yZXN1 bHRSZWxhdGlvbiwgcXVlcnktPnJ0YWJsZSk7CisJQXNzZXJ0KHJ0ZS0+cnRla2luZCA9PSBSVEVf UkVMQVRJT04pOworCisJaWYgKFBSRVRUWV9JTkRFTlQoY29udGV4dCkpCisJeworCQljb250ZXh0 LT5pbmRlbnRMZXZlbCArPSBQUkVUVFlJTkRFTlRfU1REOworCQlhcHBlbmRTdHJpbmdJbmZvQ2hh cihidWYsICcgJyk7CisJfQorCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiTEVUICVzICIsCisJCQkJ CSBnZW5lcmF0ZV9yZWxhdGlvbl9uYW1lKHJ0ZS0+cmVsaWQsIE5JTCkpOworCisJYXBwZW5kU3Ry aW5nSW5mbyhidWYsICIgPSAiKTsKKworCWlmIChzZWxlY3RfcnRlKQorCXsKKwkJLyogQWRkIHRo ZSBTRUxFQ1QgKi8KKwkJZ2V0X3F1ZXJ5X2RlZihzZWxlY3RfcnRlLT5zdWJxdWVyeSwgYnVmLCBO SUwsIE5VTEwsCisJCQkJCSAgY29udGV4dC0+cHJldHR5RmxhZ3MsIGNvbnRleHQtPndyYXBDb2x1 bW4sCisJCQkJCSAgY29udGV4dC0+aW5kZW50TGV2ZWwpOworCX0KK30KIAogLyogLS0tLS0tLS0t LQogICogZ2V0X3VwZGF0ZV9xdWVyeV9kZWYJCQktIFBhcnNlIGJhY2sgYW4gVVBEQVRFIHBhcnNl dHJlZQpAQCAtNzIwOCw2ICs3MjY2LDEzIEBAIGdldF9wYXJhbWV0ZXIoUGFyYW0gKnBhcmFtLCBk ZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpCiAJZGVwYXJzZV9uYW1lc3BhY2UgKmRwbnM7CiAJTGlz dENlbGwgICAqYW5jZXN0b3JfY2VsbDsKIAorCWlmIChwYXJhbS0+cGFyYW1raW5kID09IFBBUkFN X1NDSEVNQV9WQVJJQUJMRSkKKwl7CisJCWFwcGVuZFN0cmluZ0luZm8oY29udGV4dC0+YnVmLCAi JXMiLCBnZXRfc2NoZW1hdmFyX25hbWUocGFyYW0tPnBhcmFtaWQpKTsKKworCQlyZXR1cm47CisJ fQorCiAJLyoKIAkgKiBJZiBpdCdzIGEgUEFSQU1fRVhFQyBwYXJhbWV0ZXIsIHRyeSB0byBsb2Nh dGUgdGhlIGV4cHJlc3Npb24gZnJvbSB3aGljaAogCSAqIHRoZSBwYXJhbWV0ZXIgd2FzIGNvbXB1 dGVkLiAgTm90ZSB0aGF0IGZhaWxpbmcgdG8gZmluZCBhIHJlZmVyZW50IGlzbid0CmRpZmYgLS1n aXQgYS9zcmMvYmluL3BzcWwvY29tbWFuZC5jIGIvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYwppbmRl eCAzNTYwMzE4NzQ5Li5hZDAwMzBjMGRkIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvY29tbWFu ZC5jCisrKyBiL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMKQEAgLTc5NCw2ICs3OTQsNyBAQCBleGVj X2NvbW1hbmRfZChQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCwg Y29uc3QgY2hhciAqY21kKQogCQkJY2FzZSAnaSc6CiAJCQljYXNlICdzJzoKIAkJCWNhc2UgJ0Un OgorCQkJY2FzZSAnVic6CiAJCQkJc3VjY2VzcyA9IGxpc3RUYWJsZXMoJmNtZFsxXSwgcGF0dGVy biwgc2hvd192ZXJib3NlLCBzaG93X3N5c3RlbSk7CiAJCQkJYnJlYWs7CiAJCQljYXNlICdyJzoK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2Ny aWJlLmMKaW5kZXggNDY2YTc4MDA0Yi4uYzI3MmRlMmJhYSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w c3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTE2ODMsNiAr MTY4Myw0MiBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1l LAogCQlyZXR2YWwgPSB0cnVlOwogCQlnb3RvIGVycm9yX3JldHVybjsJCS8qIG5vdCBhbiBlcnJv ciwganVzdCByZXR1cm4gZWFybHkgKi8KIAl9CisJZWxzZSBpZiAodGFibGVpbmZvLnJlbGtpbmQg PT0gUkVMS0lORF9WQVJJQUJMRSkKKwl7CisJCVBHcmVzdWx0ICAgKnJlcyA9IE5VTEw7CisJCXBy aW50UXVlcnlPcHQgbXlvcHQgPSBwc2V0LnBvcHQ7CisKKwkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1 ZiwKKwkJCQkJCQkgICJTRUxFQ1QgcGdfY2F0YWxvZy5mb3JtYXRfdHlwZShyZWxvZnR5cGUsIE5V TEwpIEFTIFwiJXNcIlxuIgorCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19jbGFzc1xuIgor CQkJCQkJCSAgIldIRVJFIG9pZCA9ICclcyc7IiwKKwkJCQkJCQkgIGdldHRleHRfbm9vcCgiVHlw ZSIpLAorCQkJCQkJCSAgb2lkKTsKKworCQlyZXMgPSBQU1FMZXhlYyhidWYuZGF0YSk7CisJCWlm ICghcmVzKQorCQkJZ290byBlcnJvcl9yZXR1cm47CisKKwkJLyogRGlkIHdlIGdldCBhbnl0aGlu Zz8gKi8KKwkJaWYgKFBRbnR1cGxlcyhyZXMpID09IDApCisJCXsKKwkJCWlmICghcHNldC5xdWll dCkKKwkJCQlwc3FsX2Vycm9yKCJEaWQgbm90IGZpbmQgYW55IHZhcmlhYmxlIHdpdGggT0lEICVz LlxuIiwgb2lkKTsKKwkJCWdvdG8gZXJyb3JfcmV0dXJuOworCQl9CisKKwkJcHJpbnRmUFFFeHBC dWZmZXIoJnRpdGxlLCBfKCJTY2hlbWEgdmFyaWFibGUgXCIlcy4lc1wiIiksCisJCQkJCQkgIHNj aGVtYW5hbWUsIHJlbGF0aW9ubmFtZSk7CisKKwkJbXlvcHQudGl0bGUgPSB0aXRsZS5kYXRhOwor CisJCXByaW50UXVlcnkocmVzLCAmbXlvcHQsIHBzZXQucXVlcnlGb3V0LCBmYWxzZSwgcHNldC5s b2dmaWxlKTsKKworCQlQUWNsZWFyKHJlcyk7CisKKwkJcmV0dmFsID0gdHJ1ZTsKKwkJZ290byBl cnJvcl9yZXR1cm47CQkvKiBub3QgYW4gZXJyb3IsIGp1c3QgcmV0dXJuIGVhcmx5ICovCisJfQog CiAJLyoKIAkgKiBHZXQgY29sdW1uIGluZm8KQEAgLTMzNjUsNiArMzQwMSw3IEBAIGxpc3REYlJv bGVTZXR0aW5ncyhjb25zdCBjaGFyICpwYXR0ZXJuLCBjb25zdCBjaGFyICpwYXR0ZXJuMikKICAq IG0gLSBtYXRlcmlhbGl6ZWQgdmlld3MKICAqIHMgLSBzZXF1ZW5jZXMKICAqIEUgLSBmb3JlaWdu IHRhYmxlIChOb3RlOiBkaWZmZXJlbnQgZnJvbSAnZicsIHRoZSByZWxraW5kIHZhbHVlKQorICog ViAtIHNjaGVtYSB2YXJpYWJsZQogICogKGFueSBvcmRlciBvZiB0aGUgYWJvdmUgaXMgZmluZSkK ICAqLwogYm9vbApAQCAtMzM3Niw2ICszNDEzLDcgQEAgbGlzdFRhYmxlcyhjb25zdCBjaGFyICp0 YWJ0eXBlcywgY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlLCBib29sIHNob3dTeXMK IAlib29sCQlzaG93TWF0Vmlld3MgPSBzdHJjaHIodGFidHlwZXMsICdtJykgIT0gTlVMTDsKIAli b29sCQlzaG93U2VxID0gc3RyY2hyKHRhYnR5cGVzLCAncycpICE9IE5VTEw7CiAJYm9vbAkJc2hv d0ZvcmVpZ24gPSBzdHJjaHIodGFidHlwZXMsICdFJykgIT0gTlVMTDsKKwlib29sCQlzaG93VmFy aWFibGVzID0gc3RyY2hyKHRhYnR5cGVzLCAnVicpICE9IE5VTEw7CiAKIAlQUUV4cEJ1ZmZlckRh dGEgYnVmOwogCVBHcmVzdWx0ICAgKnJlczsKQEAgLTMzODMsOCArMzQyMSw4IEBAIGxpc3RUYWJs ZXMoY29uc3QgY2hhciAqdGFidHlwZXMsIGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9z ZSwgYm9vbCBzaG93U3lzCiAJc3RhdGljIGNvbnN0IGJvb2wgdHJhbnNsYXRlX2NvbHVtbnNbXSA9 IHtmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlfTsKIAogCS8q IElmIHRhYnR5cGVzIGlzIGVtcHR5LCB3ZSBkZWZhdWx0IHRvIFxkdHZtc0UgKGJ1dCBzZWUgYWxz byBjb21tYW5kLmMpICovCi0JaWYgKCEoc2hvd1RhYmxlcyB8fCBzaG93SW5kZXhlcyB8fCBzaG93 Vmlld3MgfHwgc2hvd01hdFZpZXdzIHx8IHNob3dTZXEgfHwgc2hvd0ZvcmVpZ24pKQotCQlzaG93 VGFibGVzID0gc2hvd1ZpZXdzID0gc2hvd01hdFZpZXdzID0gc2hvd1NlcSA9IHNob3dGb3JlaWdu ID0gdHJ1ZTsKKwlpZiAoIShzaG93VGFibGVzIHx8IHNob3dJbmRleGVzIHx8IHNob3dWaWV3cyB8 fCBzaG93TWF0Vmlld3MgfHwgc2hvd1NlcSB8fCBzaG93Rm9yZWlnbiB8fCBzaG93VmFyaWFibGVz KSkKKwkJc2hvd1RhYmxlcyA9IHNob3dWaWV3cyA9IHNob3dNYXRWaWV3cyA9IHNob3dTZXEgPSBz aG93Rm9yZWlnbiA9IHNob3dWYXJpYWJsZXMgPSB0cnVlOwogCiAJaW5pdFBRRXhwQnVmZmVyKCZi dWYpOwogCkBAIC0zNDA1LDYgKzM0NDMsNyBAQCBsaXN0VGFibGVzKGNvbnN0IGNoYXIgKnRhYnR5 cGVzLCBjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UsIGJvb2wgc2hvd1N5cwogCQkJ CQkgICIgV0hFTiAiIENwcEFzU3RyaW5nMihSRUxLSU5EX0ZPUkVJR05fVEFCTEUpICIgVEhFTiAn JXMnIgogCQkJCQkgICIgV0hFTiAiIENwcEFzU3RyaW5nMihSRUxLSU5EX1BBUlRJVElPTkVEX1RB QkxFKSAiIFRIRU4gJyVzJyIKIAkJCQkJICAiIFdIRU4gIiBDcHBBc1N0cmluZzIoUkVMS0lORF9Q QVJUSVRJT05FRF9JTkRFWCkgIiBUSEVOICclcyciCisJCQkJCSAgIiBXSEVOICIgQ3BwQXNTdHJp bmcyKFJFTEtJTkRfVkFSSUFCTEUpICIgVEhFTiAnJXMnIgogCQkJCQkgICIgRU5EIGFzIFwiJXNc IixcbiIKIAkJCQkJICAiICBwZ19jYXRhbG9nLnBnX2dldF91c2VyYnlpZChjLnJlbG93bmVyKSBh cyBcIiVzXCIiLAogCQkJCQkgIGdldHRleHRfbm9vcCgiU2NoZW1hIiksCkBAIC0zNDE4LDYgKzM0 NTcsNyBAQCBsaXN0VGFibGVzKGNvbnN0IGNoYXIgKnRhYnR5cGVzLCBjb25zdCBjaGFyICpwYXR0 ZXJuLCBib29sIHZlcmJvc2UsIGJvb2wgc2hvd1N5cwogCQkJCQkgIGdldHRleHRfbm9vcCgiZm9y ZWlnbiB0YWJsZSIpLAogCQkJCQkgIGdldHRleHRfbm9vcCgidGFibGUiKSwJLyogcGFydGl0aW9u ZWQgdGFibGUgKi8KIAkJCQkJICBnZXR0ZXh0X25vb3AoImluZGV4IiksCS8qIHBhcnRpdGlvbmVk IGluZGV4ICovCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJzY2hlbWEgdmFyaWFibGUiKSwKIAkJCQkJ ICBnZXR0ZXh0X25vb3AoIlR5cGUiKSwKIAkJCQkJICBnZXR0ZXh0X25vb3AoIk93bmVyIikpOwog CkBAIC0zNDcxLDYgKzM1MTEsOCBAQCBsaXN0VGFibGVzKGNvbnN0IGNoYXIgKnRhYnR5cGVzLCBj b25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UsIGJvb2wgc2hvd1N5cwogCQlhcHBlbmRQ UUV4cEJ1ZmZlclN0cigmYnVmLCAiJ3MnLCIpOyAvKiB3YXMgUkVMS0lORF9TUEVDSUFMICovCiAJ aWYgKHNob3dGb3JlaWduKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCBDcHBBc1N0cmlu ZzIoUkVMS0lORF9GT1JFSUdOX1RBQkxFKSAiLCIpOworCWlmIChzaG93VmFyaWFibGVzKQorCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCBDcHBBc1N0cmluZzIoUkVMS0lORF9WQVJJQUJMRSkg IiwiKTsKIAogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICInJyIpOwkvKiBkdW1teSAqLwog CWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICIpXG4iKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4v cHNxbC9kZXNjcmliZS5oIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmgKaW5kZXggYTRjYzVlZmFl MC4uYzVmMTA3ZDgxNCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmgKKysrIGIv c3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmgKQEAgLTYwLDcgKzYwLDcgQEAgZXh0ZXJuIGJvb2wgbGlz dFRTVGVtcGxhdGVzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSk7CiAvKiBcbCAq LwogZXh0ZXJuIGJvb2wgbGlzdEFsbERicyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJv c2UpOwogCi0vKiBcZHQsIFxkaSwgXGRzLCBcZFMsIGV0Yy4gKi8KKy8qIFxkdCwgXGRpLCBcZHMs IFxkUywgXGR2YXIgZXRjLiAqLwogZXh0ZXJuIGJvb2wgbGlzdFRhYmxlcyhjb25zdCBjaGFyICp0 YWJ0eXBlcywgY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlLCBib29sIHNob3dTeXN0 ZW0pOwogCiAvKiBcZEQgKi8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9oZWxwLmMgYi9zcmMv YmluL3BzcWwvaGVscC5jCmluZGV4IDcwMmU3NDJhZjQuLjJkYTUwZjcyOTAgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcHNxbC9oZWxwLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2hlbHAuYwpAQCAtMTY3LDcg KzE2Nyw3IEBAIHNsYXNoVXNhZ2UodW5zaWduZWQgc2hvcnQgaW50IHBhZ2VyKQogCSAqIFVzZSAi cHNxbCAtLWhlbHA9Y29tbWFuZHMgfCB3YyIgdG8gY291bnQgY29ycmVjdGx5LiAgSXQncyBva2F5 IHRvIGNvdW50CiAJICogdGhlIFVTRV9SRUFETElORSBsaW5lIGV2ZW4gaW4gYnVpbGRzIHdpdGhv dXQgdGhhdC4KIAkgKi8KLQlvdXRwdXQgPSBQYWdlT3V0cHV0KDEyNSwgcGFnZXIgPyAmKHBzZXQu cG9wdC50b3B0KSA6IE5VTEwpOworCW91dHB1dCA9IFBhZ2VPdXRwdXQoMTI2LCBwYWdlciA/ICYo cHNldC5wb3B0LnRvcHQpIDogTlVMTCk7CiAKIAlmcHJpbnRmKG91dHB1dCwgXygiR2VuZXJhbFxu IikpOwogCWZwcmludGYob3V0cHV0LCBfKCIgIFxcY29weXJpZ2h0ICAgICAgICAgICAgIHNob3cg UG9zdGdyZVNRTCB1c2FnZSBhbmQgZGlzdHJpYnV0aW9uIHRlcm1zXG4iKSk7CkBAIC0yNTcsNiAr MjU3LDcgQEAgc2xhc2hVc2FnZSh1bnNpZ25lZCBzaG9ydCBpbnQgcGFnZXIpCiAJZnByaW50Zihv dXRwdXQsIF8oIiAgXFxkVFtTK10gW1BBVFRFUk5dICAgICAgbGlzdCBkYXRhIHR5cGVzXG4iKSk7 CiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxkdVtTK10gW1BBVFRFUk5dICAgICAgbGlzdCByb2xl c1xuIikpOwogCWZwcmludGYob3V0cHV0LCBfKCIgIFxcZHZbUytdIFtQQVRURVJOXSAgICAgIGxp c3Qgdmlld3NcbiIpKTsKKwlmcHJpbnRmKG91dHB1dCwgXygiICBcXGRWW1MrXSBbUEFUVEVSTl0g ICAgICBsaXN0IHNjaGVtYSB2YXJpYWJsZXNcbiIpKTsKIAlmcHJpbnRmKG91dHB1dCwgXygiICBc XGR4WytdICBbUEFUVEVSTl0gICAgICBsaXN0IGV4dGVuc2lvbnNcbiIpKTsKIAlmcHJpbnRmKG91 dHB1dCwgXygiICBcXGR5ICAgICBbUEFUVEVSTl0gICAgICBsaXN0IGV2ZW50IHRyaWdnZXJzXG4i KSk7CiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxsWytdICAgW1BBVFRFUk5dICAgICAgbGlzdCBk YXRhYmFzZXNcbiIpKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYyBi L3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYwppbmRleCA4YmM0YTE5NGE1Li5iYTVmNmIwODMy IDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKKysrIGIvc3JjL2Jpbi9w c3FsL3RhYi1jb21wbGV0ZS5jCkBAIC02NzksNiArNjc5LDIwIEBAIHN0YXRpYyBjb25zdCBTY2hl bWFRdWVyeSBRdWVyeV9mb3JfbGlzdF9vZl9zdGF0aXN0aWNzID0gewogCU5VTEwKIH07CiAKK3N0 YXRpYyBjb25zdCBTY2hlbWFRdWVyeSBRdWVyeV9mb3JfbGlzdF9vZl92YXJpYWJsZXMgPSB7CisJ LyogY2F0bmFtZSAqLworCSJwZ19jYXRhbG9nLnBnX2NsYXNzIGMiLAorCS8qIHNlbGNvbmRpdGlv biAqLworCSJjLnJlbGtpbmQgSU4gKCdWJykiLAorCS8qIHZpc2NvbmRpdGlvbiAqLworCSJwZ19j YXRhbG9nLnBnX3RhYmxlX2lzX3Zpc2libGUoYy5vaWQpIiwKKwkvKiBuYW1lc3BhY2UgKi8KKwki Yy5yZWxuYW1lc3BhY2UiLAorCS8qIHJlc3VsdCAqLworCSJwZ19jYXRhbG9nLnF1b3RlX2lkZW50 KGMucmVsbmFtZSkiLAorCS8qIHF1YWxyZXN1bHQgKi8KKwlOVUxMCit9OwogCiAvKgogICogUXVl cmllcyB0byBnZXQgbGlzdHMgb2YgbmFtZXMgb2YgdmFyaW91cyBraW5kcyBvZiB0aGluZ3MsIHBv c3NpYmx5CkBAIC0xMTA4LDYgKzExMjIsNyBAQCBzdGF0aWMgY29uc3QgcGdzcWxfdGhpbmdfdCB3 b3Jkc19hZnRlcl9jcmVhdGVbXSA9IHsKIAkJCQkJCQkJCQkJCQkJCQkgKiBUQUJMRSAuLi4gKi8K IAl7IlVTRVIiLCBRdWVyeV9mb3JfbGlzdF9vZl9yb2xlcyAiIFVOSU9OIFNFTEVDVCAnTUFQUElO RyBGT1InIn0sCiAJeyJVU0VSIE1BUFBJTkcgRk9SIiwgTlVMTCwgTlVMTH0sCisJeyJWQVJJQUJM RSIsIE5VTEwsICZRdWVyeV9mb3JfbGlzdF9vZl92YXJpYWJsZXN9LAogCXsiVklFVyIsIE5VTEws ICZRdWVyeV9mb3JfbGlzdF9vZl92aWV3c30sCiAJe05VTEx9CQkJCQkJLyogZW5kIG9mIGxpc3Qg Ki8KIH07CkBAIC0xNDYwLDcgKzE0NzUsNyBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAq dGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkiQUJPUlQiLCAiQUxURVIiLCAiQU5BTFlaRSIs ICJCRUdJTiIsICJDQUxMIiwgIkNIRUNLUE9JTlQiLCAiQ0xPU0UiLCAiQ0xVU1RFUiIsCiAJCSJD T01NRU5UIiwgIkNPTU1JVCIsICJDT1BZIiwgIkNSRUFURSIsICJERUFMTE9DQVRFIiwgIkRFQ0xB UkUiLAogCQkiREVMRVRFIEZST00iLCAiRElTQ0FSRCIsICJETyIsICJEUk9QIiwgIkVORCIsICJF WEVDVVRFIiwgIkVYUExBSU4iLAotCQkiRkVUQ0giLCAiR1JBTlQiLCAiSU1QT1JUIiwgIklOU0VS VCIsICJMSVNURU4iLCAiTE9BRCIsICJMT0NLIiwKKwkJIkZFVENIIiwgIkdSQU5UIiwgIklNUE9S VCIsICJJTlNFUlQiLCAiTEVUIiwgIkxJU1RFTiIsICJMT0FEIiwgIkxPQ0siLAogCQkiTU9WRSIs ICJOT1RJRlkiLCAiUFJFUEFSRSIsCiAJCSJSRUFTU0lHTiIsICJSRUZSRVNIIE1BVEVSSUFMSVpF RCBWSUVXIiwgIlJFSU5ERVgiLCAiUkVMRUFTRSIsCiAJCSJSRVNFVCIsICJSRVZPS0UiLCAiUk9M TEJBQ0siLApAQCAtMTQ3OSw3ICsxNDk0LDcgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIg KnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJIlxcZEYiLCAiXFxkRmQiLCAiXFxkRnAiLCAi XFxkRnQiLCAiXFxkZyIsICJcXGRpIiwgIlxcZGwiLCAiXFxkTCIsCiAJCSJcXGRtIiwgIlxcZG4i LCAiXFxkbyIsICJcXGRPIiwgIlxcZHAiLAogCQkiXFxkcmRzIiwgIlxcZFJzIiwgIlxcZFJwIiwg IlxcZHMiLCAiXFxkUyIsCi0JCSJcXGR0IiwgIlxcZFQiLCAiXFxkdiIsICJcXGR1IiwgIlxcZHgi LCAiXFxkeSIsCisJCSJcXGR0IiwgIlxcZFQiLCAiXFxkdiIsICJcXGR1IiwgIlxcZHgiLCAiXFxk eSIsICJcXGR2YXIiLAogCQkiXFxlIiwgIlxcZWNobyIsICJcXGVmIiwgIlxcZWxpZiIsICJcXGVs c2UiLCAiXFxlbmNvZGluZyIsCiAJCSJcXGVuZGlmIiwgIlxcZXJydmVyYm9zZSIsICJcXGV2IiwK IAkJIlxcZiIsCkBAIC0yNjg0LDYgKzI2OTksMTQgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNo YXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAllbHNlIGlmIChNYXRjaGVzNCgiQ1JFQVRF IiwgIlJPTEV8VVNFUnxHUk9VUCIsIE1hdGNoQW55LCAiSU4iKSkKIAkJQ09NUExFVEVfV0lUSF9M SVNUMigiR1JPVVAiLCAiUk9MRSIpOwogCisvKiBDUkVBVEUgVkFSSUFCTEUgLS0tIGlzIGFsbG93 ZWQgaW5zaWRlIENSRUFURSBTQ0hFTUEsIHNvIHVzZSBUYWlsTWF0Y2hlcyAqLworCS8qIENvbXBs ZXRlIENSRUFURSBWQVJJQUJMRSA8bmFtZT4gd2l0aCBBUyAqLworCWVsc2UgaWYgKFRhaWxNYXRj aGVzMygiQ1JFQVRFIiwgIlZBUklBQkxFIiwgTWF0Y2hBbnkpKQorCQlDT01QTEVURV9XSVRIX0NP TlNUKCJBUyIpOworCS8qIENvbXBsZXRlIENSRUFURSBWQVJJQUJMRSA8bmFtZT4gd2l0aCBBUyB0 eXBlcyovCisJZWxzZSBpZiAoVGFpbE1hdGNoZXM0KCJDUkVBVEUiLCAiVkFSSUFCTEUiLCBNYXRj aEFueSwgIkFTIikpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0 X29mX2RhdGF0eXBlcywgTlVMTCk7CisKIC8qIENSRUFURSBWSUVXIC0tLSBpcyBhbGxvd2VkIGlu c2lkZSBDUkVBVEUgU0NIRU1BLCBzbyB1c2UgVGFpbE1hdGNoZXMgKi8KIAkvKiBDb21wbGV0ZSBD UkVBVEUgVklFVyA8bmFtZT4gd2l0aCBBUyAqLwogCWVsc2UgaWYgKFRhaWxNYXRjaGVzMygiQ1JF QVRFIiwgIlZJRVciLCBNYXRjaEFueSkpCkBAIC0yODM5LDYgKzI4NjIsMTIgQEAgcHNxbF9jb21w bGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAllbHNlIGlmIChN YXRjaGVzNSgiRFJPUCIsICJSVUxFIiwgTWF0Y2hBbnksICJPTiIsIE1hdGNoQW55KSkKIAkJQ09N UExFVEVfV0lUSF9MSVNUMigiQ0FTQ0FERSIsICJSRVNUUklDVCIpOwogCisJLyogRFJPUCBWQVJJ QUJMRSAqLworCWVsc2UgaWYgKE1hdGNoZXMyKCJEUk9QIiwgIlZBUklBQkxFIikpCisJCUNPTVBM RVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3ZhcmlhYmxlcywgTlVMTCk7 CisJZWxzZSBpZiAoTWF0Y2hlczMoIkRST1AiLCAiVkFSSUFCTEUiLCBNYXRjaEFueSkpCisJCUNP TVBMRVRFX1dJVEhfTElTVDIoIkNBU0NBREUiLCAiUkVTVFJJQ1QiKTsKKwogLyogRVhFQ1VURSAq LwogCWVsc2UgaWYgKE1hdGNoZXMxKCJFWEVDVVRFIikpCiAJCUNPTVBMRVRFX1dJVEhfUVVFUlko UXVlcnlfZm9yX2xpc3Rfb2ZfcHJlcGFyZWRfc3RhdGVtZW50cyk7CkBAIC0yODQ5LDE0ICsyODc4 LDE0IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBl bmQpCiAJICogQ29tcGxldGUgRVhQTEFJTiBbQU5BTFlaRV0gW1ZFUkJPU0VdIHdpdGggbGlzdCBv ZiBFWFBMQUlOLWFibGUgY29tbWFuZHMKIAkgKi8KIAllbHNlIGlmIChNYXRjaGVzMSgiRVhQTEFJ TiIpKQotCQlDT01QTEVURV9XSVRIX0xJU1Q3KCJTRUxFQ1QiLCAiSU5TRVJUIiwgIkRFTEVURSIs ICJVUERBVEUiLCAiREVDTEFSRSIsCi0JCQkJCQkJIkFOQUxZWkUiLCAiVkVSQk9TRSIpOworCQlD T01QTEVURV9XSVRIX0xJU1Q4KCJTRUxFQ1QiLCAiSU5TRVJUIiwgIkRFTEVURSIsICJVUERBVEUi LCAiREVDTEFSRSIsCisJCQkJCQkJIkFOQUxZWkUiLCAiVkVSQk9TRSIsICJMRVQiKTsKIAllbHNl IGlmIChNYXRjaGVzMigiRVhQTEFJTiIsICJBTkFMWVpFIikpCi0JCUNPTVBMRVRFX1dJVEhfTElT VDYoIlNFTEVDVCIsICJJTlNFUlQiLCAiREVMRVRFIiwgIlVQREFURSIsICJERUNMQVJFIiwKLQkJ CQkJCQkiVkVSQk9TRSIpOworCQlDT01QTEVURV9XSVRIX0xJU1Q3KCJTRUxFQ1QiLCAiSU5TRVJU IiwgIkRFTEVURSIsICJVUERBVEUiLCAiREVDTEFSRSIsCisJCQkJCQkJIlZFUkJPU0UiLCAiTEVU Iik7CiAJZWxzZSBpZiAoTWF0Y2hlczIoIkVYUExBSU4iLCAiVkVSQk9TRSIpIHx8CiAJCQkgTWF0 Y2hlczMoIkVYUExBSU4iLCAiQU5BTFlaRSIsICJWRVJCT1NFIikpCi0JCUNPTVBMRVRFX1dJVEhf TElTVDUoIlNFTEVDVCIsICJJTlNFUlQiLCAiREVMRVRFIiwgIlVQREFURSIsICJERUNMQVJFIik7 CisJCUNPTVBMRVRFX1dJVEhfTElTVDYoIlNFTEVDVCIsICJJTlNFUlQiLCAiREVMRVRFIiwgIlVQ REFURSIsICJERUNMQVJFIiwgIkxFVCIpOwogCiAvKiBGRVRDSCAmJiBNT1ZFICovCiAJLyogQ29t cGxldGUgRkVUQ0ggd2l0aCBvbmUgb2YgRk9SV0FSRCwgQkFDS1dBUkQsIFJFTEFUSVZFICovCkBA IC0yOTY1LDYgKzI5OTQsNyBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50 IHN0YXJ0LCBpbnQgZW5kKQogCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ0FMTCBST1VUSU5F UyBJTiBTQ0hFTUEnIgogCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ0FMTCBTRVFVRU5DRVMg SU4gU0NIRU1BJyIKIAkJCQkJCQkJCSAgICIgVU5JT04gU0VMRUNUICdBTEwgVEFCTEVTIElOIFND SEVNQSciCisJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnQUxMIFZBUklBQkxFUyBJTiBTQ0hF TUEnIgogCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ0RBVEFCQVNFJyIKIAkJCQkJCQkJCSAg ICIgVU5JT04gU0VMRUNUICdET01BSU4nIgogCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ0ZP UkVJR04gREFUQSBXUkFQUEVSJyIKQEAgLTI5NzgsMTQgKzMwMDgsMTYgQEAgcHNxbF9jb21wbGV0 aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJCQkJCQkJCSAgICIg VU5JT04gU0VMRUNUICdTRVFVRU5DRSciCiAJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnVEFC TEUnIgogCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ1RBQkxFU1BBQ0UnIgotCQkJCQkJCQkJ ICAgIiBVTklPTiBTRUxFQ1QgJ1RZUEUnIik7CisJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAn VFlQRSciCisJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnVkFSSUFCTEUnIik7CiAJfQogCWVs c2UgaWYgKFRhaWxNYXRjaGVzNCgiR1JBTlR8UkVWT0tFIiwgTWF0Y2hBbnksICJPTiIsICJBTEwi KSkKLQkJQ09NUExFVEVfV0lUSF9MSVNUNSgiRlVOQ1RJT05TIElOIFNDSEVNQSIsCisJCUNPTVBM RVRFX1dJVEhfTElTVDYoIkZVTkNUSU9OUyBJTiBTQ0hFTUEiLAogCQkJCQkJCSJQUk9DRURVUkVT IElOIFNDSEVNQSIsCiAJCQkJCQkJIlJPVVRJTkVTIElOIFNDSEVNQSIsCiAJCQkJCQkJIlNFUVVF TkNFUyBJTiBTQ0hFTUEiLAotCQkJCQkJCSJUQUJMRVMgSU4gU0NIRU1BIik7CisJCQkJCQkJIlRB QkxFUyBJTiBTQ0hFTUEiLAorCQkJCQkJCSJWQVJJQUJMRVMgSU4gU0NIRU1BIik7CiAJZWxzZSBp ZiAoVGFpbE1hdGNoZXM0KCJHUkFOVHxSRVZPS0UiLCBNYXRjaEFueSwgIk9OIiwgIkZPUkVJR04i KSkKIAkJQ09NUExFVEVfV0lUSF9MSVNUMigiREFUQSBXUkFQUEVSIiwgIlNFUlZFUiIpOwogCkBA IC0zMDE1LDYgKzMwNDcsOCBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50 IHN0YXJ0LCBpbnQgZW5kKQogCQkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9y X2xpc3Rfb2Zfc2VxdWVuY2VzLCBOVUxMKTsKIAkJZWxzZSBpZiAoVGFpbE1hdGNoZXMxKCJUQUJM RSIpKQogCQkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdHN2 bWYsIE5VTEwpOworCQllbHNlIGlmIChUYWlsTWF0Y2hlczEoIlZBUklBQkxFIikpCisJCQlDT01Q TEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl92YXJpYWJsZXMsIE5VTEwp OwogCQllbHNlIGlmIChUYWlsTWF0Y2hlczEoIlRBQkxFU1BBQ0UiKSkKIAkJCUNPTVBMRVRFX1dJ VEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdGFibGVzcGFjZXMpOwogCQllbHNlIGlmIChUYWls TWF0Y2hlczEoIlRZUEUiKSkKQEAgLTMxNzEsNyArMzIwNSw3IEBAIHBzcWxfY29tcGxldGlvbihj b25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAKIC8qIFBSRVBBUkUgeHggQVMg Ki8KIAllbHNlIGlmIChNYXRjaGVzMygiUFJFUEFSRSIsIE1hdGNoQW55LCAiQVMiKSkKLQkJQ09N UExFVEVfV0lUSF9MSVNUNCgiU0VMRUNUIiwgIlVQREFURSIsICJJTlNFUlQiLCAiREVMRVRFIEZS T00iKTsKKwkJQ09NUExFVEVfV0lUSF9MSVNUNSgiU0VMRUNUIiwgIlVQREFURSIsICJJTlNFUlQi LCAiREVMRVRFIEZST00iLCAiTEVUIik7CiAKIC8qCiAgKiBQUkVQQVJFIFRSQU5TQUNUSU9OIGlz IG1pc3Npbmcgb24gcHVycG9zZS4gSXQncyBpbnRlbmRlZCBmb3IgdHJhbnNhY3Rpb24KQEAgLTMz OTAsNiArMzQyNCwxNCBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0 YXJ0LCBpbnQgZW5kKQogCWVsc2UgaWYgKFRhaWxNYXRjaGVzNCgiVVBEQVRFIiwgTWF0Y2hBbnks ICJTRVQiLCBNYXRjaEFueSkpCiAJCUNPTVBMRVRFX1dJVEhfQ09OU1QoIj0iKTsKIAorLyogTEVU IC0tLSBjYW4gYmUgaW5zaWRlIEVYUExBSU4sIFBSRVBBUkUgZXRjICovCisJLyogSWYgcHJldi4g d29yZCBpcyBMRVQgc3VnZ2VzdCBhIGxpc3Qgb2YgdmFyaWFibGVzICovCisJZWxzZSBpZiAoVGFp bE1hdGNoZXMxKCJMRVQiKSkKKwkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9y X2xpc3Rfb2ZfdmFyaWFibGVzLCBOVUxMKTsKKwkvKiBDb21wbGV0ZSBMRVQgPHZhcmlhYmxlPiB3 aXRoICI9IiAqLworCWVsc2UgaWYgKFRhaWxNYXRjaGVzMigiTEVUIiwgTWF0Y2hBbnkpKQorCQlD T01QTEVURV9XSVRIX0NPTlNUKCI9Iik7CisKIC8qIFVTRVIgTUFQUElORyAqLwogCWVsc2UgaWYg KE1hdGNoZXMzKCJBTFRFUnxDUkVBVEV8RFJPUCIsICJVU0VSIiwgIk1BUFBJTkciKSkKIAkJQ09N UExFVEVfV0lUSF9DT05TVCgiRk9SIik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX2NsYXNzLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NsYXNzLmgKaW5kZXggMjZiMTg2 NmM2OS4uYzUxNDZmYzEzOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jbGFz cy5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY2xhc3MuaApAQCAtMTY3LDYgKzE2Nyw3 IEBAIERFU0NSKCIiKTsKICNkZWZpbmUJCSAgUkVMS0lORF9GT1JFSUdOX1RBQkxFICAgJ2YnCS8q IGZvcmVpZ24gdGFibGUgKi8KICNkZWZpbmUJCSAgUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSAn cCcgLyogcGFydGl0aW9uZWQgdGFibGUgKi8KICNkZWZpbmUJCSAgUkVMS0lORF9QQVJUSVRJT05F RF9JTkRFWCAnSScgLyogcGFydGl0aW9uZWQgaW5kZXggKi8KKyNkZWZpbmUJCSAgUkVMS0lORF9W QVJJQUJMRQkJICAnVicJLyogc2NoZW1hIHZhcmlhYmxlICovCiAKICNkZWZpbmUJCSAgUkVMUEVS U0lTVEVOQ0VfUEVSTUFORU5UCSdwJyAvKiByZWd1bGFyIHRhYmxlICovCiAjZGVmaW5lCQkgIFJF TFBFUlNJU1RFTkNFX1VOTE9HR0VECSd1JyAvKiB1bmxvZ2dlZCBwZXJtYW5lbnQgdGFibGUgKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZGVmYXVsdF9hY2wuaCBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfZGVmYXVsdF9hY2wuaAppbmRleCAxMWIzMDYwMzdkLi4xMzIzMmQ3 YTQzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2RlZmF1bHRfYWNsLmgKKysr IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19kZWZhdWx0X2FjbC5oCkBAIC03MSw1ICs3MSw2IEBA IHR5cGVkZWYgRm9ybURhdGFfcGdfZGVmYXVsdF9hY2wgKkZvcm1fcGdfZGVmYXVsdF9hY2w7CiAj ZGVmaW5lIERFRkFDTE9CSl9GVU5DVElPTgkJJ2YnIC8qIGZ1bmN0aW9uICovCiAjZGVmaW5lIERF RkFDTE9CSl9UWVBFCQkJJ1QnIC8qIHR5cGUgKi8KICNkZWZpbmUgREVGQUNMT0JKX05BTUVTUEFD RQkJJ24nIC8qIG5hbWVzcGFjZSAqLworI2RlZmluZSBERUZBQ0xPQkpfVkFSSUFCTEUJCSdWJyAv KiB2YXJpYWJsZSAqLwogCiAjZW5kaWYJCQkJCQkJLyogUEdfREVGQVVMVF9BQ0xfSCAqLwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmggYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuaAppbmRleCBmMDE2NDhjOTYxLi42MDBkM2Q1ODQ5IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuaApAQCAtNTUzMyw2ICs1NTMzLDEyIEBAIERFU0NSKCJsaXN0IG9mIGZpbGVzIGluIHRo ZSBXQUwgZGlyZWN0b3J5Iik7CiBEQVRBKGluc2VydCBPSUQgPSA1MDI4ICggc2F0aXNmaWVzX2hh c2hfcGFydGl0aW9uIFBHTlNQIFBHVUlEIDEyIDEgMCAyMjc2IDAgZiBmIGYgZiBmIGYgaSBzIDQg MCAxNiAiMjYgMjMgMjMgMjI3NiIgX251bGxfICJ7aSxpLGksdn0iIF9udWxsXyBfbnVsbF8gX251 bGxfIHNhdGlzZmllc19oYXNoX3BhcnRpdGlvbiBfbnVsbF8gX251bGxfIF9udWxsXyApKTsKIERF U0NSKCJoYXNoIHBhcnRpdGlvbiBDSEVDSyBjb25zdHJhaW50Iik7CiAKKy8qIHNjaGVtYSB2YXJp YWJsZXMgZnVuY3Rpb24gaW50ZXJmYWNlICovCitEQVRBKGluc2VydCBPSUQgPSA2MTIyICggZ2V0 X3NjaGVtYV92YXJpYWJsZSBQR05TUCBQR1VJRCAxMiAxIDAgMCAwIGYgZiBmIGYgZiBmIHYgciAy IDAgMjI4MyAiMjIwNSAyMjgzIiBfbnVsbF8gX251bGxfIF9udWxsXyBfbnVsbF8gX251bGxfIGdl dF9zY2hlbWFfdmFyaWFibGUgX251bGxfIF9udWxsXyBfbnVsbF8gKSk7CitERVNDUigicmV0dXJu cyB2YWx1ZSBvZiBzY2hlbWEgdmFyaWFibGUiKTsKK0RBVEEoaW5zZXJ0IE9JRCA9IDYxMjMgKCBz ZXRfc2NoZW1hX3ZhcmlhYmxlIFBHTlNQIFBHVUlEIDEyIDEgMCAwIDAgZiBmIGYgZiBmIGYgdiBy IDIgMCAyMjc4ICIyMjA1IDIyODMiIF9udWxsXyBfbnVsbF8gX251bGxfIF9udWxsXyBfbnVsbF8g c2V0X3NjaGVtYV92YXJpYWJsZSBfbnVsbF8gX251bGxfIF9udWxsXyApKTsKK0RFU0NSKCJyZXR1 cm5zIHZhbHVlIG9mIHNjaGVtYSB2YXJpYWJsZSIpOworCiAvKgogICogU3ltYm9saWMgdmFsdWVz IGZvciBwcm92b2xhdGlsZSBjb2x1bW46IHRoZXNlIGluZGljYXRlIHdoZXRoZXIgdGhlIHJlc3Vs dAogICogb2YgYSBmdW5jdGlvbiBpcyBkZXBlbmRlbnQgKm9ubHkqIG9uIHRoZSB2YWx1ZXMgb2Yg aXRzIGV4cGxpY2l0IGFyZ3VtZW50cywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRz L3NjaGVtYXZhci5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvc2NoZW1hdmFyLmgKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNmY2NWIxZjFkMwotLS0gL2Rldi9udWxsCisr KyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3NjaGVtYXZhci5oCkBAIC0wLDAgKzEsMzEgQEAKKy8q LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHNjaGVtYXZhci5oCisgKgkgIHByb3RvdHlwZXMgZm9y IHNjaGVtYXZhci5jLgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDE4LCBQ b3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0 IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisg KiBzcmMvaW5jbHVkZS9jb21tYW5kcy9zY2hlbWF2YXIuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICovCisjaWZuZGVmIFNDSEVNQVZBUl9ICisjZGVmaW5lIFNDSEVNQVZBUl9ICisKKyNpbmNs dWRlICJjYXRhbG9nL29iamVjdGFkZHJlc3MuaCIKKyNpbmNsdWRlICJub2Rlcy9wYXJzZW5vZGVz LmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX25vZGUuaCIKKworZXh0ZXJuIE9iamVjdEFkZHJl c3MgRGVmaW5lU2NoZW1hVmFyaWFibGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTY2hlbWFW YXJTdG10ICp2YXIpOworCitleHRlcm4gdm9pZCBSZXNldFNjaGVtYVZhcmlhYmxlc0NhY2hlKHZv aWQpOworCitleHRlcm4gY2hhciAqZ2V0X3NjaGVtYXZhcl9uYW1lKE9pZCB2YXJpZCk7CisKK2V4 dGVybiB2b2lkIFNldFNjaGVtYVZhcmlhYmxlKE9pZCB2YXJpZCwgRGF0dW0gdmFsdWUsIGJvb2wg aXNOdWxsLCBPaWQJdHlwaWQsIGludDMyIHR5cG1vZCwgaW50MTYgdHlwbGVuLCBib29sIHR5cGJ5 dmFsKTsKK2V4dGVybiBEYXR1bSBHZXRTY2hlbWFWYXJpYWJsZShPaWQgdmFyaWQsIGJvb2wgKmlz TnVsbCwgT2lkCXR5cGlkLCBpbnQzMiB0eXBtb2QsIGludDE2IHR5cGxlbiwgYm9vbCB0eXBieXZh bCk7CitleHRlcm4gdm9pZCBTZXRTY2hlbWFWYXJpYWJsZVNlY3VyZShPaWQgdmFyaWQsIERhdHVt IHZhbHVlLCBib29sIGlzTnVsbCwgT2lkCXR5cGlkLCBpbnQzMiB0eXBtb2QsIGludDE2IHR5cGxl biwgYm9vbCB0eXBieXZhbCk7CitleHRlcm4gRGF0dW0gR2V0U2NoZW1hVmFyaWFibGVTZWN1cmUo T2lkIHZhcmlkLCBib29sICppc051bGwsIE9pZAl0eXBpZCwgaW50MzIgdHlwbW9kLCBpbnQxNiB0 eXBsZW4sIGJvb2wgdHlwYnl2YWwpOworCisjZW5kaWYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oIGIvc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaAppbmRleCAxMTdmYzg5MmY0Li5hMjgyZjFlNGUwIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCisrKyBiL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmgKQEAgLTEzOCw2ICsxMzgsNyBAQCB0eXBlZGVmIGVudW0g RXhwckV2YWxPcAogCUVFT1BfUEFSQU1fRVhFQywKIAlFRU9QX1BBUkFNX0VYVEVSTiwKIAlFRU9Q X1BBUkFNX0NBTExCQUNLLAorCUVFT1BfUEFSQU1fU0NIRU1BX1ZBUklBQkxFLAogCiAJLyogcmV0 dXJuIENhc2VUZXN0RXhwciB2YWx1ZSAqLwogCUVFT1BfQ0FTRV9URVNUVkFMLApAQCAtMzQyLDEx ICszNDMsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgRXhwckV2YWxTdGVwCiAJCQlUdXBsZURlc2MJYXJn ZGVzYzsKIAkJfQkJCW51bGx0ZXN0X3JvdzsKIAotCQkvKiBmb3IgRUVPUF9QQVJBTV9FWEVDL0VY VEVSTiAqLworCQkvKiBmb3IgRUVPUF9QQVJBTV9FWEVDL0VYVEVSTi9WQVJJQUJMRSAqLwogCQlz dHJ1Y3QKIAkJewotCQkJaW50CQkJcGFyYW1pZDsJLyogbnVtZXJpYyBJRCBmb3IgcGFyYW1ldGVy ICovCi0JCQlPaWQJCQlwYXJhbXR5cGU7CS8qIE9JRCBvZiBwYXJhbWV0ZXIncyBkYXRhdHlwZSAq LworCQkJaW50CQkJcGFyYW1pZDsJCS8qIG51bWVyaWMgSUQgZm9yIHBhcmFtZXRlciAqLworCQkJ T2lkCQkJcGFyYW10eXBlOwkJLyogT0lEIG9mIHBhcmFtZXRlcidzIGRhdGF0eXBlICovCisJCQlp bnQzMgkJcGFyYW10eXBtb2Q7CS8qIHR5cG1vZCBvZiBwYXJhbSAobm90IHVzZWQgeWV0KSAqLwor CQkJaW50MTYJCXBhcmFtdHlwbGVuOwkvKiBleHBlY3RlZCBsZW5ndGggKi8KKwkJCWJvb2wJCXBh cmFtdHlwYnl2YWw7CS8qIGlzIHBhc3NlZCBieSB2YWx1ZSAqLwogCQl9CQkJcGFyYW07CiAKIAkJ LyogZm9yIEVFT1BfUEFSQU1fQ0FMTEJBQ0sgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25v ZGVzL25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCmluZGV4IDc0YjA5NGE5YzMu LjJmNDk4NjA5OWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmgKKysrIGIv c3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaApAQCAtMzQ0LDYgKzM0NCw3IEBAIHR5cGVkZWYgZW51 bSBOb2RlVGFnCiAJVF9DcmVhdGVUYWJsZUFzU3RtdCwKIAlUX0NyZWF0ZVNlcVN0bXQsCiAJVF9B bHRlclNlcVN0bXQsCisJVF9DcmVhdGVTY2hlbWFWYXJTdG10LAogCVRfVmFyaWFibGVTZXRTdG10 LAogCVRfVmFyaWFibGVTaG93U3RtdCwKIAlUX0Rpc2NhcmRTdG10LApAQCAtNDE1LDYgKzQxNiw3 IEBAIHR5cGVkZWYgZW51bSBOb2RlVGFnCiAJVF9DcmVhdGVTdGF0c1N0bXQsCiAJVF9BbHRlckNv bGxhdGlvblN0bXQsCiAJVF9DYWxsU3RtdCwKKwlUX0xldFN0bXQsCiAKIAkvKgogCSAqIFRBR1Mg Rk9SIFBBUlNFIFRSRUUgTk9ERVMgKHBhcnNlbm9kZXMuaCkKQEAgLTY1Nyw2ICs2NTksNyBAQCB0 eXBlZGVmIGVudW0gQ21kVHlwZQogCUNNRF9VUERBVEUsCQkJCQkvKiB1cGRhdGUgc3RtdCAqLwog CUNNRF9JTlNFUlQsCQkJCQkvKiBpbnNlcnQgc3RtdCAqLwogCUNNRF9ERUxFVEUsCisJQ01EX0xF VCwKIAlDTURfVVRJTElUWSwJCQkJLyogY21kcyBsaWtlIGNyZWF0ZSwgZGVzdHJveSwgY29weSwg dmFjdXVtLAogCQkJCQkJCQkgKiBldGMuICovCiAJQ01EX05PVEhJTkcJCQkJCS8qIGR1bW15IGNv bW1hbmQgZm9yIGluc3RlYWQgbm90aGluZyBydWxlcwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4 IGExNmRlMjg5YmEuLmQxZDAzYzljYmUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTE0ODgs NiArMTQ4OCwxNCBAQCB0eXBlZGVmIHN0cnVjdCBVcGRhdGVTdG10CiAJV2l0aENsYXVzZSAqd2l0 aENsYXVzZTsJCS8qIFdJVEggY2xhdXNlICovCiB9IFVwZGF0ZVN0bXQ7CiAKK3R5cGVkZWYgc3Ry dWN0IExldFN0bXQKK3sKKwlOb2RlVGFnCQl0eXBlOworCVJhbmdlVmFyICAgKnZhcmlhYmxlOwkJ LyogcmVsYXRpb24gdG8gaW5zZXJ0IGludG8gKi8KKwlOb2RlCSAgICpzZWxlY3RTdG10OwkJLyog dGhlIHNvdXJjZSBTRUxFQ1QvVkFMVUVTLCBvciBOVUxMICovCit9IExldFN0bXQ7CisKKwogLyog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCVNlbGVjdCBTdGF0ZW1lbnQKICAqCkBAIC0xNjY1 LDYgKzE2NzMsNyBAQCB0eXBlZGVmIGVudW0gT2JqZWN0VHlwZQogCU9CSkVDVF9UU1RFTVBMQVRF LAogCU9CSkVDVF9UWVBFLAogCU9CSkVDVF9VU0VSX01BUFBJTkcsCisJT0JKRUNUX1ZBUklBQkxF LAogCU9CSkVDVF9WSUVXCiB9IE9iamVjdFR5cGU7CiAKQEAgLTI0NzgsNiArMjQ4NywxOCBAQCB0 eXBlZGVmIHN0cnVjdCBBbHRlclNlcVN0bXQKIH0gQWx0ZXJTZXFTdG10OwogCiAvKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgKgkJQ3JlYXRlIFZBUklBQkxFIFN0YXRlbWVudAorICogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICovCit0eXBlZGVmIHN0cnVjdCBDcmVhdGVTY2hlbWFWYXJTdG10 Cit7CisJTm9kZVRhZwkJdHlwZTsKKwlSYW5nZVZhciAgICp2YXJpYWJsZTsJCS8qIHRoZSB2YXJp YWJsZSB0byBjcmVhdGUgKi8KKwlUeXBlTmFtZSAgICp0eXBlTmFtZTsJCS8qIHRoZSB2YXJpYWJs ZSB0eXBlICovCisJYm9vbAkJaWZfbm90X2V4aXN0czsJLyoganVzdCBkbyBub3RoaW5nIGlmIGl0 IGFscmVhZHkgZXhpc3RzPyAqLworfSBDcmVhdGVTY2hlbWFWYXJTdG10OworCisvKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgKgkJQ3JlYXRlIHtBZ2dyZWdhdGV8T3BlcmF0b3J8VHlwZX0gU3Rh dGVtZW50CiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KQEAgLTMyMDYsNyArMzIyNyw4 IEBAIHR5cGVkZWYgZW51bSBEaXNjYXJkTW9kZQogCURJU0NBUkRfQUxMLAogCURJU0NBUkRfUExB TlMsCiAJRElTQ0FSRF9TRVFVRU5DRVMsCi0JRElTQ0FSRF9URU1QCisJRElTQ0FSRF9URU1QLAor CURJU0NBUkRfVkFSSUFCTEVTCiB9IERpc2NhcmRNb2RlOwogCiB0eXBlZGVmIHN0cnVjdCBEaXNj YXJkU3RtdApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmggYi9zcmMv aW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAppbmRleCAxYjRiMGQ3NWFmLi5iMzY2NDcxOTQwIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAorKysgYi9zcmMvaW5jbHVk ZS9ub2Rlcy9wcmltbm9kZXMuaApAQCAtMjI5LDEzICsyMjksMTcgQEAgdHlwZWRlZiBzdHJ1Y3Qg Q29uc3QKICAqCQkJCW9mIHRoZSBgcGFyYW1pZCcgZmllbGQgY29udGFpbiB0aGUgU3ViTGluaydz IHN1YkxpbmtJZCwgYW5kCiAgKgkJCQl0aGUgbG93LW9yZGVyIDE2IGJpdHMgY29udGFpbiB0aGUg Y29sdW1uIG51bWJlci4gIChUaGlzIHR5cGUKICAqCQkJCW9mIFBhcmFtIGlzIGFsc28gY29udmVy dGVkIHRvIFBBUkFNX0VYRUMgZHVyaW5nIHBsYW5uaW5nLikKKyAqCisgKgkJUEFSQU1fU0NIRU1B X1ZBUklBQkxFOiAgVGhlIHBhcmFtZXRlciBpcyBhIGFjY2VzcyB0byBzY2hlbWEgdmFyaWFibGUK KyAqCQkJCXBhcmFtaWQgaG9sZHMgdmFyaWQuCiAgKi8KIHR5cGVkZWYgZW51bSBQYXJhbUtpbmQK IHsKIAlQQVJBTV9FWFRFUk4sCiAJUEFSQU1fRVhFQywKIAlQQVJBTV9TVUJMSU5LLAotCVBBUkFN X01VTFRJRVhQUgorCVBBUkFNX01VTFRJRVhQUiwKKwlQQVJBTV9TQ0hFTUFfVkFSSUFCTEUKIH0g UGFyYW1LaW5kOwogCiB0eXBlZGVmIHN0cnVjdCBQYXJhbQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IDI2 YWY5NDRlMDMuLjM5NzFkNzQ3OGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xp c3QuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKQEAgLTIyOSw2ICsyMjksNyBA QCBQR19LRVlXT1JEKCJsZWFkaW5nIiwgTEVBRElORywgUkVTRVJWRURfS0VZV09SRCkKIFBHX0tF WVdPUkQoImxlYWtwcm9vZiIsIExFQUtQUk9PRiwgVU5SRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZ V09SRCgibGVhc3QiLCBMRUFTVCwgQ09MX05BTUVfS0VZV09SRCkKIFBHX0tFWVdPUkQoImxlZnQi LCBMRUZULCBUWVBFX0ZVTkNfTkFNRV9LRVlXT1JEKQorUEdfS0VZV09SRCgibGV0IiwgTEVULCBV TlJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJsZXZlbCIsIExFVkVMLCBVTlJFU0VSVkVE X0tFWVdPUkQpCiBQR19LRVlXT1JEKCJsaWtlIiwgTElLRSwgVFlQRV9GVU5DX05BTUVfS0VZV09S RCkKIFBHX0tFWVdPUkQoImxpbWl0IiwgTElNSVQsIFJFU0VSVkVEX0tFWVdPUkQpCkBAIC00MzAs NiArNDMxLDggQEAgUEdfS0VZV09SRCgidmFsaWRhdG9yIiwgVkFMSURBVE9SLCBVTlJFU0VSVkVE X0tFWVdPUkQpCiBQR19LRVlXT1JEKCJ2YWx1ZSIsIFZBTFVFX1AsIFVOUkVTRVJWRURfS0VZV09S RCkKIFBHX0tFWVdPUkQoInZhbHVlcyIsIFZBTFVFUywgQ09MX05BTUVfS0VZV09SRCkKIFBHX0tF WVdPUkQoInZhcmNoYXIiLCBWQVJDSEFSLCBDT0xfTkFNRV9LRVlXT1JEKQorUEdfS0VZV09SRCgi dmFyaWFibGUiLCBWQVJJQUJMRSwgVU5SRVNFUlZFRF9LRVlXT1JEKQorUEdfS0VZV09SRCgidmFy aWFibGVzIiwgVkFSSUFCTEVTLCBVTlJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJ2YXJp YWRpYyIsIFZBUklBRElDLCBSRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgidmFyeWluZyIs IFZBUllJTkcsIFVOUkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoInZlcmJvc2UiLCBWRVJC T1NFLCBUWVBFX0ZVTkNfTkFNRV9LRVlXT1JEKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFy c2VyL3BhcnNlX25vZGUuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKaW5kZXgg NGU5NmZhNzkwNy4uMThiYTIyMTE4MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL3Bh cnNlX25vZGUuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCkBAIC0xMzQs NiArMTM0LDggQEAgdHlwZWRlZiBOb2RlICooKkNvZXJjZVBhcmFtSG9vaykgKFBhcnNlU3RhdGUg KnBzdGF0ZSwgUGFyYW0gKnBhcmFtLAogICogdG8gcHJvY2VzcyB0aGVtIGxpa2UgVVBEQVRFLiAg KE5vdGUgdGhpcyBjYW4gY2hhbmdlIGludHJhLXN0YXRlbWVudCwgZm9yCiAgKiBjYXNlcyBsaWtl IElOU0VSVCBPTiBDT05GTElDVCBVUERBVEUuKQogICoKKyAqIHBfaXNfbGV0OiB0cnVlIHRvIHBy b2Nlc3MgYXNzaWdubWVudCBleHByZXNzaW9ucyBsaWtlIExFVC4KKyAqCiAgKiBwX3dpbmRvd2Rl ZnM6IGxpc3Qgb2YgV2luZG93RGVmcyByZXByZXNlbnRpbmcgV0lORE9XIGFuZCBPVkVSIGNsYXVz ZXMuCiAgKiBXZSBjb2xsZWN0IHRoZXNlIHdoaWxlIHRyYW5zZm9ybWluZyBleHByZXNzaW9ucyBh bmQgdGhlbiB0cmFuc2Zvcm0gdGhlbQogICogYWZ0ZXJ3YXJkcyAoc28gdGhhdCBhbnkgcmVzanVu ayB0bGlzdCBpdGVtcyBuZWVkZWQgZm9yIHRoZSBzb3J0L2dyb3VwCkBAIC0xODMsNiArMTg1LDcg QEAgc3RydWN0IFBhcnNlU3RhdGUKIAlSZWxhdGlvbglwX3RhcmdldF9yZWxhdGlvbjsJLyogSU5T RVJUL1VQREFURS9ERUxFVEUgdGFyZ2V0IHJlbCAqLwogCVJhbmdlVGJsRW50cnkgKnBfdGFyZ2V0 X3JhbmdldGJsZW50cnk7CS8qIHRhcmdldCByZWwncyBSVEUgKi8KIAlib29sCQlwX2lzX2luc2Vy dDsJLyogcHJvY2VzcyBhc3NpZ25tZW50IGxpa2UgSU5TRVJUIG5vdCBVUERBVEUgKi8KKwlib29s CQlwX2lzX2xldDsJCS8qIHByb2Nlc3MgYXNzaWdubWVudCBMRVQgc3RtdCAqLwogCUxpc3QJICAg KnBfd2luZG93ZGVmczsJLyogcmF3IHJlcHJlc2VudGF0aW9ucyBvZiB3aW5kb3cgY2xhdXNlcyAq LwogCVBhcnNlRXhwcktpbmQgcF9leHByX2tpbmQ7CS8qIHdoYXQga2luZCBvZiBleHByZXNzaW9u IHdlJ3JlIHBhcnNpbmcgKi8KIAlpbnQJCQlwX25leHRfcmVzbm87CS8qIG5leHQgdGFyZ2V0bGlz dCByZXNubyB0byBhc3NpZ24gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJz ZV9yZWxhdGlvbi5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgKaW5kZXgg Yjk3OTJhY2RhZS4uNzYwYWFlZDlhOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL3Bh cnNlX3JlbGF0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgK QEAgLTEyOSw0ICsxMjksNiBAQCBleHRlcm4gT2lkCWF0dG51bVR5cGVJZChSZWxhdGlvbiByZCwg aW50IGF0dGlkKTsKIGV4dGVybiBPaWQJYXR0bnVtQ29sbGF0aW9uSWQoUmVsYXRpb24gcmQsIGlu dCBhdHRpZCk7CiBleHRlcm4gYm9vbCBpc1F1ZXJ5VXNpbmdUZW1wUmVsYXRpb24oUXVlcnkgKnF1 ZXJ5KTsKIAorZXh0ZXJuIE5vZGUgKnRvU2NoZW1hVmFyaWFibGUoUGFyc2VTdGF0ZSAqcHN0YXRl LCBjaGFyICpuc3BuYW1lLCBjaGFyICp2YXJuYW1lLCBpbnQgbG9jYXRpb24pOworCiAjZW5kaWYJ CQkJCQkJLyogUEFSU0VfUkVMQVRJT05fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRp bHMvYWNsLmggYi9zcmMvaW5jbHVkZS91dGlscy9hY2wuaAppbmRleCBmNGQ0YmU4ZDBkLi5kMDcz N2E5ZTRiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9hY2wuaAorKysgYi9zcmMvaW5j bHVkZS91dGlscy9hY2wuaApAQCAtMTY2LDYgKzE2Niw3IEBAIHR5cGVkZWYgQXJyYXlUeXBlIEFj bDsKICNkZWZpbmUgQUNMX0FMTF9SSUdIVFNfU0NIRU1BCQkoQUNMX1VTQUdFfEFDTF9DUkVBVEUp CiAjZGVmaW5lIEFDTF9BTExfUklHSFRTX1RBQkxFU1BBQ0UJKEFDTF9DUkVBVEUpCiAjZGVmaW5l IEFDTF9BTExfUklHSFRTX1RZUEUJCQkoQUNMX1VTQUdFKQorI2RlZmluZSBBQ0xfQUxMX1JJR0hU U19WQVJJQUJMRQkJKEFDTF9TRUxFQ1R8QUNMX1VQREFURSkKIAogLyogb3BlcmF0aW9uIGNvZGVz IGZvciBwZ18qX2FjbG1hc2sgKi8KIHR5cGVkZWYgZW51bQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9zY2hlbWFfdmFyaWFibGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvc2NoZW1hX3ZhcmlhYmxlcy5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMC4uYWQ3MDBjMTVkOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvc2NoZW1hX3ZhcmlhYmxlcy5vdXQKQEAgLTAsMCArMSwyMzYgQEAKK0NSRUFU RSBWQVJJQUJMRSB2YXIxIEFTIGludGVnZXI7CitDUkVBVEUgVEVNUCBWQVJJQUJMRSB2YXIyIEFT IHRleHQ7CistLSBzaG91bGQgdG8gZmFpbAorQ1JFQVRFIFZBUklBQkxFIHZhcjIgQVMgcGdfY2xh c3M7CitFUlJPUjogIENvbXBvc2l0ZSB0eXBlcyBhcmUgbm90IGFsbG93ZWQgYXMgdmFyaWFibGUg dHlwZS4KK0RST1AgVkFSSUFCTEUgdmFyMSwgdmFyMjsKKy0tIGZ1bmN0aW9uYWwgaW50ZXJmYWNl LCBhdHRlbnRpb24gdHlwbW9kIGlzIG5vdCBzdG9yZWQKK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFT IG51bWVyaWMoMTAsMSk7CitTRUxFQ1Qgc2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIDMzMyk7 Cisgc2V0X3NjaGVtYV92YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitTRUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIG51bGw6Om51bWVyaWMpOwor IGdldF9zY2hlbWFfdmFyaWFibGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgICAgMzMzCisoMSByb3cpCisKK1NFTEVDVCBzZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywg MzMzOjppbnRlZ2VyKTsKKyBzZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgbnVs bDo6bnVtZXJpYyk7CisgZ2V0X3NjaGVtYV92YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICAgICAgICAgICAgICAgICAzMzMKKygxIHJvdykKKworU0VMRUNUIHNldF9zY2hlbWFfdmFy aWFibGUoJ3ZhcjEnLCAnMzMzLjU1Jzo6dGV4dCk7Cisgc2V0X3NjaGVtYV92YXJpYWJsZSAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgZ2V0X3NjaGVtYV92YXJp YWJsZSgndmFyMScsIG51bGw6Om51bWVyaWMpOworIGdldF9zY2hlbWFfdmFyaWFibGUgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMzMzLjU1CisoMSByb3cpCisKK1NFTEVD VCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgbnVsbDo6aW50KTsKKyBnZXRfc2NoZW1hX3Zh cmlhYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgIDMzNAorKDEg cm93KQorCitTRUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIG51bGw6OnRleHQpOwor IGdldF9zY2hlbWFfdmFyaWFibGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAzMzMuNTUKKygx IHJvdykKKworLS0gYWNjZXNzIHJpZ2h0cyB0ZXN0CitDUkVBVEUgUk9MRSB2YXJfdGVzdF9yb2xl OworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKy0tIHNob3VsZCB0byBmYWlsCitTRUxFQ1Qg c2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsICcxMDAwJzo6dGV4dCk7CitFUlJPUjogIHBlcm1p c3Npb24gZGVuaWVkIGZvciBzY2hlbWEgdmFyaWFibGUgdmFyMQorU0VMRUNUIGdldF9zY2hlbWFf dmFyaWFibGUoJ3ZhcjEnLCBudWxsOjpudW1lcmljKTsKK0VSUk9SOiAgcGVybWlzc2lvbiBkZW5p ZWQgZm9yIHNjaGVtYSB2YXJpYWJsZSB2YXIxCitTRVQgUk9MRSBUTyBERUZBVUxUOworR1JBTlQg U0VMRUNUIE9OIFZBUklBQkxFIHZhcjEgVE8gdmFyX3Rlc3Rfcm9sZTsKK1NFVCBST0xFIFRPIHZh cl90ZXN0X3JvbGU7CistLSBzaG91bGQgdG8gZmFpbAorU0VMRUNUIHNldF9zY2hlbWFfdmFyaWFi bGUoJ3ZhcjEnLCAnMTAwMCc6OnRleHQpOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Ig c2NoZW1hIHZhcmlhYmxlIHZhcjEKKy0tIHNob3VsZCB0byB3b3JrCitTRUxFQ1QgZ2V0X3NjaGVt YV92YXJpYWJsZSgndmFyMScsIG51bGw6Om51bWVyaWMpOworIGdldF9zY2hlbWFfdmFyaWFibGUg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMzMzLjU1CisoMSByb3cpCisK K1NFVCBST0xFIFRPIERFRkFVTFQ7CitHUkFOVCBVUERBVEUgT04gVkFSSUFCTEUgdmFyMSBUTyB2 YXJfdGVzdF9yb2xlOworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKy0tIHNob3VsZCB0byB3 b3JrCitTRUxFQ1Qgc2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsICcxMDAwJzo6dGV4dCk7Cisg c2V0X3NjaGVtYV92YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQor CitTRUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIG51bGw6Om51bWVyaWMpOworIGdl dF9zY2hlbWFfdmFyaWFibGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAg ICAxMDAwCisoMSByb3cpCisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CitSRVZPS0UgQUxMIE9OIFZB UklBQkxFIHZhcjEgRlJPTSB2YXJfdGVzdF9yb2xlOworQ1JFQVRFIFZBUklBQkxFIHZhciBBUyBp bnRlZ2VyOworU0VMRUNUIHNldF9zY2hlbWFfdmFyaWFibGUoJ3B1YmxpYy52YXInLCAxMjM0KTsK KyBzZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cp CisKK1NFTEVDVCBwdWJsaWMudmFyOworIHZhciAgCistLS0tLS0KKyAxMjM0CisoMSByb3cpCisK K0RPICQkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJ3B1YmxpYy52YXIgaXMgPSAlJywgcHVibGlj LnZhcjsKK0VORDsKKyQkOworTk9USUNFOiAgcHVibGljLnZhciBpcyA9IDEyMzQKK0NSRUFURSBP UiBSRVBMQUNFIEZVTkNUSU9OIHNlY3VyZV92YXIoKQorUkVUVVJOUyBpbnQgQVMgJCQKKyAgU0VM RUNUIHB1YmxpYy52YXI7CiskJCBMQU5HVUFHRSBzcWwgU0VDVVJJVFkgREVGSU5FUjsKK1NFTEVD VCBzZWN1cmVfdmFyKCk7Cisgc2VjdXJlX3ZhciAKKy0tLS0tLS0tLS0tLQorICAgICAgIDEyMzQK KygxIHJvdykKKworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKy0tIHNob3VsZCB0byBmYWls CitTRUxFQ1QgcHVibGljLnZhcjsKK0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHNjaGVt YSB2YXJpYWJsZSB2YXIKKy0tIHNob3VsZCB0byB3b3JrOworU0VMRUNUIHNlY3VyZV92YXIoKTsK KyBzZWN1cmVfdmFyIAorLS0tLS0tLS0tLS0tCisgICAgICAgMTIzNAorKDEgcm93KQorCitTRVQg Uk9MRSBUTyBERUZBVUxUOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKiBG Uk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCkgZyh2KSBXSEVSRSB2ID0gdmFyOworICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRnVuY3Rpb24gU2NhbiBvbiBwZ19jYXRh bG9nLmdlbmVyYXRlX3NlcmllcyBnCisgICBPdXRwdXQ6IHYKKyAgIEZ1bmN0aW9uIENhbGw6IGdl bmVyYXRlX3NlcmllcygxLCAxMDApCisgICBGaWx0ZXI6IChnLnYgPSB2YXIpCisoNCByb3dzKQor CitDUkVBVEUgVklFVyBzY2hlbWFfdmFyX3ZpZXcgQVMgU0VMRUNUIHZhcjsKK1NFTEVDVCAqIEZS T00gc2NoZW1hX3Zhcl92aWV3OworIHZhciAgCistLS0tLS0KKyAxMjM0CisoMSByb3cpCisKK1xj IC0KKy0tIHNob3VsZCB0byB3b3JrIHN0aWxsLCBidXQgdmFyIHdpbGwgYmUgZW1wdHkKK1NFTEVD VCAqIEZST00gc2NoZW1hX3Zhcl92aWV3OworIHZhciAKKy0tLS0tCisgICAgCisoMSByb3cpCisK K0xFVCB2YXIxID0gcGkoKTsKK1NFTEVDVCB2YXIxOworICAgICAgIHZhcjEgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0KKyAzLjE0MTU5MjY1MzU4OTc5CisoMSByb3cpCisKKy0tIHdlIGNhbiBs b29rIG9uIGV4ZWN1dGlvbiBwbGFuCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIExFVCB2 YXIxID0gcGkoKTsKKyAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgTGV0IG9uIHB1YmxpYy52YXIxCisgICAtPiAgUmVzdWx0CisgICAgICAgICBP dXRwdXQ6ICczLjE0MTU5MjY1MzU4OTc5Jzo6ZG91YmxlIHByZWNpc2lvbgorKDMgcm93cykKKwor LS0gTEVUIGNhbiBiZSBwcmVwYXJlZAorUFJFUEFSRSB2YXJfcHAoaW50LCBudW1lcmljKSBBUyBM RVQgdmFyMSA9ICQxICsgJDI7CitFWEVDVVRFIHZhcl9wcCgxMDAsIDEuMjM0NTYpOworU0VMRUNU IHZhcjE7CisgICB2YXIxICAgIAorLS0tLS0tLS0tLS0KKyAxMDEuMjM0NTYKKygxIHJvdykKKwor Q1JFQVRFIFZBUklBQkxFIHZhcjMgQVMgaW50OworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04g aW5jKGludCkKK1JFVFVSTlMgaW50IEFTICQkCitCRUdJTgorICBMRVQgcHVibGljLnZhcjMgPSBD T0FMRVNDRShwdWJsaWMudmFyMyArICQxLCAkMSk7CisgIFJFVFVSTiB2YXIzOworRU5EOworJCQg TEFOR1VBR0UgcGxwZ3NxbDsKK1NFTEVDVCBpbmMoMSk7CisgaW5jIAorLS0tLS0KKyAgIDEKKygx IHJvdykKKworU0VMRUNUIGluYygxKTsKKyBpbmMgCistLS0tLQorICAgMgorKDEgcm93KQorCitT RUxFQ1QgaW5jKDEpOworIGluYyAKKy0tLS0tCisgICAzCisoMSByb3cpCisKK1NFTEVDVCBpbmMo MSkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCk7CisgaW5jIAorLS0tLS0KKyAgIDQKKyAgIDUK KyAgIDYKKyAgIDcKKyAgIDgKKyAgIDkKKyAgMTAKKyAgMTEKKyAgMTIKKyAgMTMKKygxMCByb3dz KQorCitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworLS0gc2hvdWxkIHRvIGZhaWwKK0xFVCB2 YXIzID0gMDsKK0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHNjaGVtYSB2YXJpYWJsZSB2 YXIzCitTRVQgUk9MRSBUTyBERUZBVUxUOworRFJPUCBWSUVXIHNjaGVtYV92YXJfdmlldzsKK0RS T1AgUk9MRSB2YXJfdGVzdF9yb2xlOworRFJPUCBWQVJJQUJMRSB2YXIgQ0FTQ0FERTsKK0RST1Ag VkFSSUFCTEUgdmFyMSBDQVNDQURFOworRFJPUCBWQVJJQUJMRSB2YXIzIENBU0NBREU7CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVn cmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCBhZDk0MzRmYjg3Li4zM2ZlN2VlNDc2IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTExMSw3ICsxMTEsNyBAQCB0ZXN0OiBzZWxl Y3Rfdmlld3MgcG9ydGFsc19wMiBmb3JlaWduX2tleSBjbHVzdGVyIGRlcGVuZGVuY3kgZ3VjIGJp dG1hcG9wcyBjb21ibwogIyBOQjogdGVtcC5zcWwgZG9lcyBhIHJlY29ubmVjdCB3aGljaCB0cmFu c2llbnRseSB1c2VzIDIgY29ubmVjdGlvbnMsCiAjIHNvIGtlZXAgdGhpcyBwYXJhbGxlbCBncm91 cCB0byBhdCBtb3N0IDE5IHRlc3RzCiAjIC0tLS0tLS0tLS0KLXRlc3Q6IHBsYW5jYWNoZSBsaW1p dCBwbHBnc3FsIGNvcHkyIHRlbXAgZG9tYWluIHJhbmdlZnVuY3MgcHJlcGFyZSB3aXRob3V0X29p ZCBjb252ZXJzaW9uIHRydW5jYXRlIGFsdGVyX3RhYmxlIHNlcXVlbmNlIHBvbHltb3JwaGlzbSBy b3d0eXBlcyByZXR1cm5pbmcgbGFyZ2VvYmplY3Qgd2l0aCB4bWwKK3Rlc3Q6IHBsYW5jYWNoZSBs aW1pdCBwbHBnc3FsIGNvcHkyIHRlbXAgZG9tYWluIHJhbmdlZnVuY3MgcHJlcGFyZSB3aXRob3V0 X29pZCBjb252ZXJzaW9uIHRydW5jYXRlIGFsdGVyX3RhYmxlIHNlcXVlbmNlIHBvbHltb3JwaGlz bSByb3d0eXBlcyByZXR1cm5pbmcgbGFyZ2VvYmplY3Qgd2l0aCB4bWwgc2NoZW1hX3ZhcmlhYmxl cwogCiAjIC0tLS0tLS0tLS0KICMgQW5vdGhlciBncm91cCBvZiBwYXJhbGxlbCB0ZXN0cwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zZXJpYWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdy ZXNzL3NlcmlhbF9zY2hlZHVsZQppbmRleCAyN2NkNDk4NDVlLi4yMmM0Y2FjN2NlIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NlcmlhbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL3NlcmlhbF9zY2hlZHVsZQpAQCAtMTg3LDMgKzE4Nyw0IEBAIHRlc3Q6IGhhc2hfcGFydAog dGVzdDogaW5kZXhpbmcKIHRlc3Q6IGV2ZW50X3RyaWdnZXIKIHRlc3Q6IHN0YXRzCit0ZXN0OiBz Y2hlbWFfdmFyaWFibGVzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zY2hlbWFf dmFyaWFibGVzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NjaGVtYV92YXJpYWJsZXMuc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjllZTllMTc0ZjkKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zY2hlbWFfdmFyaWFibGVzLnNxbApA QCAtMCwwICsxLDEzOSBAQAorQ1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgaW50ZWdlcjsKK0NSRUFU RSBURU1QIFZBUklBQkxFIHZhcjIgQVMgdGV4dDsKKworLS0gc2hvdWxkIHRvIGZhaWwKK0NSRUFU RSBWQVJJQUJMRSB2YXIyIEFTIHBnX2NsYXNzOworCitEUk9QIFZBUklBQkxFIHZhcjEsIHZhcjI7 CisKKy0tIGZ1bmN0aW9uYWwgaW50ZXJmYWNlLCBhdHRlbnRpb24gdHlwbW9kIGlzIG5vdCBzdG9y ZWQKK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIG51bWVyaWMoMTAsMSk7CitTRUxFQ1Qgc2V0X3Nj aGVtYV92YXJpYWJsZSgndmFyMScsIDMzMyk7CitTRUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgn dmFyMScsIG51bGw6Om51bWVyaWMpOworCitTRUxFQ1Qgc2V0X3NjaGVtYV92YXJpYWJsZSgndmFy MScsIDMzMzo6aW50ZWdlcik7CitTRUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIG51 bGw6Om51bWVyaWMpOworCitTRUxFQ1Qgc2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsICczMzMu NTUnOjp0ZXh0KTsKK1NFTEVDVCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgbnVsbDo6bnVt ZXJpYyk7CitTRUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIG51bGw6OmludCk7CitT RUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIG51bGw6OnRleHQpOworCistLSBhY2Nl c3MgcmlnaHRzIHRlc3QKKworQ1JFQVRFIFJPTEUgdmFyX3Rlc3Rfcm9sZTsKKworU0VUIFJPTEUg VE8gdmFyX3Rlc3Rfcm9sZTsKKworLS0gc2hvdWxkIHRvIGZhaWwKK1NFTEVDVCBzZXRfc2NoZW1h X3ZhcmlhYmxlKCd2YXIxJywgJzEwMDAnOjp0ZXh0KTsKK1NFTEVDVCBnZXRfc2NoZW1hX3Zhcmlh YmxlKCd2YXIxJywgbnVsbDo6bnVtZXJpYyk7CisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CisKK0dS QU5UIFNFTEVDVCBPTiBWQVJJQUJMRSB2YXIxIFRPIHZhcl90ZXN0X3JvbGU7CisKK1NFVCBST0xF IFRPIHZhcl90ZXN0X3JvbGU7CistLSBzaG91bGQgdG8gZmFpbAorU0VMRUNUIHNldF9zY2hlbWFf dmFyaWFibGUoJ3ZhcjEnLCAnMTAwMCc6OnRleHQpOworLS0gc2hvdWxkIHRvIHdvcmsKK1NFTEVD VCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgbnVsbDo6bnVtZXJpYyk7CisKK1NFVCBST0xF IFRPIERFRkFVTFQ7CisKK0dSQU5UIFVQREFURSBPTiBWQVJJQUJMRSB2YXIxIFRPIHZhcl90ZXN0 X3JvbGU7CisKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CisKKy0tIHNob3VsZCB0byB3b3Jr CitTRUxFQ1Qgc2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsICcxMDAwJzo6dGV4dCk7CitTRUxF Q1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIG51bGw6Om51bWVyaWMpOworCitTRVQgUk9M RSBUTyBERUZBVUxUOworCitSRVZPS0UgQUxMIE9OIFZBUklBQkxFIHZhcjEgRlJPTSB2YXJfdGVz dF9yb2xlOworCitDUkVBVEUgVkFSSUFCTEUgdmFyIEFTIGludGVnZXI7CisKK1NFTEVDVCBzZXRf c2NoZW1hX3ZhcmlhYmxlKCdwdWJsaWMudmFyJywgMTIzNCk7CisKK1NFTEVDVCBwdWJsaWMudmFy OworCitETyAkJAorQkVHSU4KKyAgUkFJU0UgTk9USUNFICdwdWJsaWMudmFyIGlzID0gJScsIHB1 YmxpYy52YXI7CitFTkQ7CiskJDsKKworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gc2VjdXJl X3ZhcigpCitSRVRVUk5TIGludCBBUyAkJAorICBTRUxFQ1QgcHVibGljLnZhcjsKKyQkIExBTkdV QUdFIHNxbCBTRUNVUklUWSBERUZJTkVSOworCitTRUxFQ1Qgc2VjdXJlX3ZhcigpOworCitTRVQg Uk9MRSBUTyB2YXJfdGVzdF9yb2xlOworCistLSBzaG91bGQgdG8gZmFpbAorU0VMRUNUIHB1Ymxp Yy52YXI7CisKKy0tIHNob3VsZCB0byB3b3JrOworU0VMRUNUIHNlY3VyZV92YXIoKTsKKworU0VU IFJPTEUgVE8gREVGQVVMVDsKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1Qg KiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCkgZyh2KSBXSEVSRSB2ID0gdmFyOworCitDUkVB VEUgVklFVyBzY2hlbWFfdmFyX3ZpZXcgQVMgU0VMRUNUIHZhcjsKKworU0VMRUNUICogRlJPTSBz Y2hlbWFfdmFyX3ZpZXc7CisKK1xjIC0KKworLS0gc2hvdWxkIHRvIHdvcmsgc3RpbGwsIGJ1dCB2 YXIgd2lsbCBiZSBlbXB0eQorU0VMRUNUICogRlJPTSBzY2hlbWFfdmFyX3ZpZXc7CisKK0xFVCB2 YXIxID0gcGkoKTsKKworU0VMRUNUIHZhcjE7CisKKy0tIHdlIGNhbiBsb29rIG9uIGV4ZWN1dGlv biBwbGFuCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIExFVCB2YXIxID0gcGkoKTsKKwor LS0gTEVUIGNhbiBiZSBwcmVwYXJlZAorUFJFUEFSRSB2YXJfcHAoaW50LCBudW1lcmljKSBBUyBM RVQgdmFyMSA9ICQxICsgJDI7CisKK0VYRUNVVEUgdmFyX3BwKDEwMCwgMS4yMzQ1Nik7CisKK1NF TEVDVCB2YXIxOworCitDUkVBVEUgVkFSSUFCTEUgdmFyMyBBUyBpbnQ7CisKK0NSRUFURSBPUiBS RVBMQUNFIEZVTkNUSU9OIGluYyhpbnQpCitSRVRVUk5TIGludCBBUyAkJAorQkVHSU4KKyAgTEVU IHB1YmxpYy52YXIzID0gQ09BTEVTQ0UocHVibGljLnZhcjMgKyAkMSwgJDEpOworICBSRVRVUk4g dmFyMzsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CisKK1NFTEVDVCBpbmMoMSk7CitTRUxF Q1QgaW5jKDEpOworU0VMRUNUIGluYygxKTsKKworU0VMRUNUIGluYygxKSBGUk9NIGdlbmVyYXRl X3NlcmllcygxLDEwKTsKKworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKworLS0gc2hvdWxk IHRvIGZhaWwKK0xFVCB2YXIzID0gMDsKKworU0VUIFJPTEUgVE8gREVGQVVMVDsKKworRFJPUCBW SUVXIHNjaGVtYV92YXJfdmlldzsKKworRFJPUCBST0xFIHZhcl90ZXN0X3JvbGU7CisKK0RST1Ag VkFSSUFCTEUgdmFyIENBU0NBREU7CitEUk9QIFZBUklBQkxFIHZhcjEgQ0FTQ0FERTsKK0RST1Ag VkFSSUFCTEUgdmFyMyBDQVNDQURFOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCBkNDc2 NWNlM2IwLi5iMDQwNGMyMWE1IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRl ZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtNDIzLDYg KzQyMyw3IEBAIENyZWF0ZVJlcGxpY2F0aW9uU2xvdENtZAogQ3JlYXRlUm9sZVN0bXQKIENyZWF0 ZVNjaGVtYVN0bXQKIENyZWF0ZVNjaGVtYVN0bXRDb250ZXh0CitDcmVhdGVTY2hlbWFWYXJTdG10 CiBDcmVhdGVTZXFTdG10CiBDcmVhdGVTdGF0c1N0bXQKIENyZWF0ZVN0bXQK --089e082cc754adb42b0564442eaf--