Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1weuyz-00587g-10 for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Jul 2026 13:28:05 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1weuyy-00DuoC-0w for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Jul 2026 13:28:04 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1weuwn-00Dr5G-0H for pgsql-hackers@lists.postgresql.org; Wed, 01 Jul 2026 13:25:49 +0000 Received: from mail-lf1-x12a.google.com ([2a00:1450:4864:20::12a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1weuwk-00000001CRW-2IpK for pgsql-hackers@lists.postgresql.org; Wed, 01 Jul 2026 13:25:48 +0000 Received: by mail-lf1-x12a.google.com with SMTP id 2adb3069b0e04-5aebfa21c62so680094e87.3 for ; Wed, 01 Jul 2026 06:25:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1782912344; cv=none; d=google.com; s=arc-20260327; b=YTwNItErSvnniwo8dKzYVesEhgyBX5gCVvByi5lifQYhbRzLNn/DP0UFzJXYHNgFg5 OExu6xIBHViB5fEWSN3M74s/+7RQ3uMArC5P4Hzva3liU14Z2nn6q3cByj2xQW5iPaOA M96e1IZwcKgzfGzGJufC/4CuYwzd1YPJop6Ak/aUat1mqZviPShunqQQ7/8eY1NVjsXQ FPkZxg9Yg+OLDhmO0dcLNZTF1xWKA7OXVuNJ7c9kkyXVQmf3ELgOoKPH6ueHYxY9J6Zv rR1m9XakwQ7zE+uKa6l+x9wedFmGvU9ZvKh0tvLGwFIsolfdRV61+hzpU3E/KrFdar1O GS+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=wzmORUBVoy+OB3dmJ9qN2kxHfzEf0PWjADq1d+Esh+k=; fh=YLIvwcD/eHEDnvFTN1ifH5wOIH39qsHyVO9wcNhs2uU=; b=d4iryGj0Mt+oaCC39AsewZnNzTbfu51z/N8DnZFLeRqhv7gin7+HxgE5uGOWODKdI0 VEf72qgHgSnP1kRSc4GVQTgx9kwJXxLsmap2RQiyFq/jvGcUyHyNiqnjPsmD5s9UnRbj hyWhU24iKVns6UhxnXIFyHHW9cZ4zJGW3oWb91kKLIlmpB03/kEqpHVxIYmxEnRTkjR5 sWKz8YVFxizttn4rT2vLvcilPhq9cTrjEcYElx6ya0mkjodOEHx9ijllieCNmu/RCY+u QFYFZWNw0LrT99KCHodp5/sneDTO4AXxd3SW+cRR5V+JGk+ooz08dSaHQWR8ZhrPxp1T dXoA==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782912344; x=1783517144; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=wzmORUBVoy+OB3dmJ9qN2kxHfzEf0PWjADq1d+Esh+k=; b=UQeOC+VBjXX4ySQIf5HbC+kTcTJI84s01JHPIQ+0RIfGbrW7d/4rxStssPIHSt0sEn ky/9GMGLXP0aRJWO6SKADZaUAbm0H6neIqSdlhPjtNn9KUTOGoEMVg4C/yMp9s6/l6nT fNkEgC9lxNP2WI/3oFmWyRQQ4XTQjjX2scw935aDSgxWkMbh10kSPNTWd7XXPFUJkGM5 7txoU/YxYI6qwYV4BIDKG59H/pLeibAB9GUFri9iDCfXpKolHmIEK62wT81MIMrhHO4l 5kvNW0+FFjkxbZoJZu7opYJnwuuJs4kr8JBcYhjDXCO9IRUgnaBfN3iJOqcrhVYlfX26 Rx5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782912344; x=1783517144; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=wzmORUBVoy+OB3dmJ9qN2kxHfzEf0PWjADq1d+Esh+k=; b=ZOkjpqspEvbfF08Ke2JXBxHt4c5isrA+ToWbGzKPBGCisKyILgucLGBrhFL75suvli /j4Ys4SL2Tp0f/6dXt56UIYjbPmRWd4qu85R0T2R1aLpCwyIDaPhoW3sQnpmE16qW6iQ IyK5pp7ezFXwyxzZAP03KejSWXaB9N3nOP7+xtNcHR97HpY3GZ+sA/DNyg4Jed1C2Wvk xVZcINe2zvZTAmWbVswmXqV0fv3WPVxwVcAgznvfKOHANYZ0RuDs3PHeNAf7P5BE94fG zktRhuocnM86wvA94S3c0LvC27r6dPSo/X7T9PwjYkKxAH944ZQPNnLIFPKVRxVQMG3o ujqw== X-Forwarded-Encrypted: i=1; AHgh+Rq+4iKwg13e9EB28MccWZAxmFufP3ZfadknRUHwTdCsqpOztVzgJp7DGyKxJJddZDbnEJog5PRq02Ej9oG6@lists.postgresql.org X-Gm-Message-State: AOJu0YxQKd5kpcqEAJV6xmCUU3lEMWZQkJCSDVZoMwPjjM0Seiy2afxT ppm3aEwFhPHL9qWrjUHw1JeMIZizXrCSnZCQxFnfh9z8lLvJQD0k0L8pKLs4AOZVSjAcoUShLzS xfR2f4bkHIJCmawHg5EEPYINpiW6Tzqc= X-Gm-Gg: AfdE7ck0/Tv19XqowZ7E+Fk4dGCsUc2yVw7WZeE6XYaedVLRQYa6bC7iJNJTlteLjVa ArxFbKTJ9EUGaBqjie7N7TinbViDqVcXiztE7/XNlIuW7Cflx7j4m4o79ve2JlQfgIrZC2cP5tl qzcVwcXA3RZSbkwHSCtdBgD2cpMxqoVqbDr0j34Fr4zgBziFjhNqrTWP0PIqiHFLM7B78RtQnj6 fSa+YW/K7S+lwvUnhh3Yx4fkP9QjDDJuxkFd5pCY6RM7EcrLJLufroRV3ZxWGZgQ58AiYADboBp ZH0smH8uau4bzmjZUoq8g6BLEZ+2MA== X-Received: by 2002:a05:6512:3187:b0:5ae:bade:3d27 with SMTP id 2adb3069b0e04-5aec68b4431mr395671e87.37.1782912344032; Wed, 01 Jul 2026 06:25:44 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Dilip Kumar Date: Wed, 1 Jul 2026 18:55:23 +0530 X-Gm-Features: AVVi8Ccp63oTrs9ZejnPa_E7nXdpo_Za2QU_sra1g4I5J9gxrBxJCAjDlUMleZo Message-ID: Subject: Re: Proposal: Conflict log history table for Logical Replication To: shveta malik Cc: Amit Kapila , Peter Smith , vignesh C , Nisha Moond , Masahiko Sawada , Bharath Rupireddy , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000ee9ca506558ca025" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000ee9ca506558ca025 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Jul 1, 2026 at 1:16=E2=80=AFPM shveta malik wrote: > > On Wed, Jul 1, 2026 at 12:45=E2=80=AFPM Dilip Kumar wrote: > > > > Thanks I have fixed these comments and also merged the docs. > > Thanks. Sharing the version with pgindent run on v61. Here is the updated patch version. It fixes offlist review comments provided by Amit and Shveta, bumps the catversion and adds authors and reviewers details. --=20 Regards, Dilip Kumar Google --000000000000ee9ca506558ca025 Content-Type: application/octet-stream; name="v62-0001-Add-configurable-conflict-log-table-for-Logical-.patch" Content-Disposition: attachment; filename="v62-0001-Add-configurable-conflict-log-table-for-Logical-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mr23oc4u0 RnJvbSAxMTA2Y2QxNGRmMGFhNjc3NjI5MWVlOTFjMWJhNmQ1NjlhNGQzZDIzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEaWxpcCBLdW1hciA8ZGlsaXBrdW1hcmJAZ29vZ2xlLmNvbT4K RGF0ZTogV2VkLCAxIEp1bCAyMDI2IDE4OjMxOjAwICswNTMwClN1YmplY3Q6IFtQQVRDSCB2NjJd IEFkZCBjb25maWd1cmFibGUgY29uZmxpY3QgbG9nIHRhYmxlIGZvciBMb2dpY2FsCiBSZXBsaWNh dGlvbgpNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9 VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKVGhpcyBwYXRjaCBhZGRzIGEg ZmVhdHVyZSB0byBwcm92aWRlIGEgc3RydWN0dXJlZCwgcXVlcnlhYmxlIHJlY29yZCBvZiBhbGwK bG9naWNhbCByZXBsaWNhdGlvbiBjb25mbGljdHMuIFRoZSBjdXJyZW50IGFwcHJvYWNoIG9mIGxv Z2dpbmcgY29uZmxpY3RzIGFzCnBsYWluIHRleHQgaW4gdGhlIHNlcnZlciBsb2dzIG1ha2VzIGl0 IGRpZmZpY3VsdCB0byBxdWVyeSwgYW5hbHl6ZSwgYW5kCnVzZSBmb3IgZXh0ZXJuYWwgbW9uaXRv cmluZyBhbmQgYXV0b21hdGlvbi4KClRoaXMgcGF0Y2ggYWRkcmVzc2VzIHRoZXNlIGxpbWl0YXRp b25zIGJ5IGludHJvZHVjaW5nIGEgY29uZmlndXJhYmxlCmNvbmZsaWN0X2xvZ19kZXN0aW5hdGlv bj0oJ2xvZycvJ3RhYmxlJy8nYWxsJykgb3B0aW9uIGluIHRoZSBDUkVBVEUgU1VCU0NSSVBUSU9O CmNvbW1hbmQuCgpJZiB0aGUgdXNlciBjaG9vc2VzIHRvIGVuYWJsZSBsb2dnaW5nIHRvIGEgdGFi bGUgKGJ5IHNlbGVjdGluZyAndGFibGUnIG9yICdhbGwnKSwKYW4gaW50ZXJuYWwgbG9nZ2luZyB0 YWJsZSBuYW1lZCBwZ19jb25mbGljdF9sb2dfPHN1YmlkPiBpcyBhdXRvbWF0aWNhbGx5CmNyZWF0 ZWQgd2l0aGluIGEgZGVkaWNhdGVkLCBzeXN0ZW0tbWFuYWdlZCAncGdfY29uZmxpY3QnIG5hbWVz cGFjZSB0byBwcmV2ZW50CnVzZXJzIGZyb20gbWFudWFsbHkgZHJvcHBpbmcgb3IgYWx0ZXJpbmcg aXQuIFRoaXMgYWxzbyBwcmV2ZW50cyBhY2NpZGVudGFsCm5hbWUgY29sbGlzaW9ucyB3aXRoIHVz ZXItY3JlYXRlZCB0YWJsZXMuIFRoaXMgdGFibGUgaXMgbGlua2VkIHRvIHRoZQpzdWJzY3JpcHRp b24gdmlhIGFuIGludGVybmFsIGRlcGVuZGVuY3ksIGVuc3VyaW5nIGl0IGlzIGF1dG9tYXRpY2Fs bHkgZHJvcHBlZAp3aGVuIHRoZSBzdWJzY3JpcHRpb24gaXMgcmVtb3ZlZAoKVGhlIHBlci1zdWJz Y3JpcHRpb24gdGFibGUgbW9kZWwgd2FzIGNob3NlbiBvdmVyIGEgc2luZ2xlIGdsb2JhbCBsb2cg dG8gZW5zdXJlCnN1cGVyaW9yIGlzb2xhdGlvbiBhbmQgYWRtaW5pc3RyYXRpdmUgZmxleGliaWxp dHkgYnkgZGlyZWN0bHkgYWxpZ25pbmcgdGFibGUgb3duZXJzaGlwCndpdGggdGhlIHN1YnNjcmlw dGlvbuKAmXMgbGlmZWN5Y2xlLiBUaGlzIGFwcHJvYWNoIGFsbG93cyBmb3IgZ3JhbnVsYXIgcGVy bWlzc2lvbgptYW5hZ2VtZW50LCBlbmFibGluZyB0aGUgc3Vic2NyaXB0aW9uIG93bmVyIHRvIHBl cmZvcm0gbmVjZXNzYXJ5IG1haW50ZW5hbmNlCnRhc2tzIGxpa2UgU0VMRUNULCBERUxFVEUsIGFu ZCBUUlVOQ0FURSB3aXRob3V0IHRoZSBzZWN1cml0eSByaXNrcyBvciBjb21wbGV4ClJvdy1MZXZl bCBTZWN1cml0eSByZXF1aXJlZCBieSBhIHNoYXJlZCBnbG9iYWwgdGFibGUuCgpUaGUgY29uZmxp Y3QgZGV0YWlscywgaW5jbHVkaW5nIHRoZSBvcmlnaW5hbCBhbmQgcmVtb3RlIHR1cGxlcywgYXJl IHN0b3JlZCBpbiBKU09OCmNvbHVtbnMsIHByb3ZpZGluZyBhIGZsZXhpYmxlIGZvcm1hdCB0byBh Y2NvbW1vZGF0ZSBkaWZmZXJlbnQgdGFibGUgc2NoZW1hcy4KClRoZSBsb2cgdGFibGUgY2FwdHVy ZXMgZXNzZW50aWFsIGF0dHJpYnV0ZXMgc3VjaCBhcyBsb2NhbCBhbmQgcmVtb3RlIHRyYW5zYWN0 aW9uIElEcywKTFNOcywgY29tbWl0IHRpbWVzdGFtcHMsIGFuZCBjb25mbGljdCB0eXBlLCBwcm92 aWRpbmcgYSBjb21wbGV0ZSByZWNvcmQgZm9yIHBvc3QtbW9ydGVtCmFuYWx5c2lzLgoKVGhpcyBm ZWF0dXJlIHdpbGwgbWFrZSBsb2dpY2FsIHJlcGxpY2F0aW9uIGNvbmZsaWN0cyBlYXNpZXIgdG8g bW9uaXRvciBhbmQgbWFuYWdlLApzaWduaWZpY2FudGx5IGltcHJvdmluZyB0aGUgb3ZlcmFsbCBy ZXNpbGllbmNlIGFuZCBvcGVyYWJpbGl0eSBvZiByZXBsaWNhdGlvbiBzZXR1cHMuCgpUaGUgY29u ZmxpY3QgbG9nIHRhYmxlcyB3aWxsIG5vdCBiZSBpbmNsdWRlZCBpbiBhIHB1YmxpY2F0aW9uLCBl dmVuIGlmIHRoZSBwdWJsaWNhdGlvbgppcyBjb25maWd1cmVkIHRvIGluY2x1ZGUgQUxMIFRBQkxF UyBvciBBTEwgVEFCTEVTIElOIFNDSEVNQS4KCkJ1bXAgY2F0YWxvZyB2ZXJzaW9uIGFzIHRoaXMg YWRkIG5ldyBjb2x1bW4gdG8gcGdfc3Vic2NyaXB0aW9uIGNhdGFsb2cKCkF1dGhvcjogRGlsaXAg S3VtYXIgPGRpbGlwYmFsYXV0QGdtYWlsLmNvbT4KQXV0aG9yOiBOaXNoYSBNb29uZCA8bmlzaGEu bW9vbmQ0MTJAZ21haWwuY29tPgpBdXRob3I6IEFtaXQgS2FwaWxhIDxha2FwaWxhQHBvc3RncmVz cWwub3JnPgpSZXZpZXdlZC1ieTogU2h2ZXRhIE1hbGlrIDxzaHZldGEubWFsaWtAZ21haWwuY29t PgpSZXZpZXdlZC1ieTogVmlnbmVzaCBDIDx2aWduZXNoMjFAZ21haWwuY29tPgpSZXZpZXdlZC1i eTogUGV0ZXIgU21pdGggPHNtaXRocGIyMjUwQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFNobG9r IEt5YWwgPHNobG9rLmt5YWwub3NzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IE1hc2FoaWtvIFNh d2FkYSA8c2F3YWRhLm1zaGtAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0 Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL0NBRmlUTi11NUQ1b19BR05iSFJaSGFPcUFNV2t4TGYlMkJo U2tfcjlYM2d2NkhiTE9CNSUyQmclNDBtYWlsLmdtYWlsLmNvbQotLS0KIGRvYy9zcmMvc2dtbC9k ZGwuc2dtbCAgICAgICAgICAgICAgICAgICAgICB8ICAyMCArKwogZG9jL3NyYy9zZ21sL2dsb3Nz YXJ5LnNnbWwgICAgICAgICAgICAgICAgIHwgIDEyICsKIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJl cGxpY2F0aW9uLnNnbWwgICAgICB8ICAxNSArKwogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJz Y3JpcHRpb24uc2dtbCAgIHwgIDEyICstCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3Jp cHRpb24uc2dtbCAgfCAgNDkgKysrKwogZG9jL3NyYy9zZ21sL3JlZi9kcm9wX3N1YnNjcmlwdGlv bi5zZ21sICAgIHwgICA4ICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMgICAgICAgICAg ICAgICB8ICA1OCArKy0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL2NhdGFsb2cuYyAgICAgICAgICAg ICAgfCAgMjkgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYyAgICAgICB8 ICAxNCArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYyAgICAgIHwgICA3 ICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCAgICAgICB8ICAgNCArLQog c3JjL2JhY2tlbmQvY29tbWFuZHMvbG9ja2NtZHMuYyAgICAgICAgICAgIHwgIDI0ICstCiBzcmMv YmFja2VuZC9jb21tYW5kcy9wb2xpY3kuYyAgICAgICAgICAgICAgfCAgMTIgKwogc3JjL2JhY2tl bmQvY29tbWFuZHMvc3RhdHNjbWRzLmMgICAgICAgICAgIHwgIDE0ICsKIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICB8IDIxNCArKysrKysrKysrKysrKy0KIHNyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICB8ICA5NSArKysrKystCiBzcmMv YmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgICAgICAgICAgICAgfCAgMjUgKysKIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICAgICB8ICAyOCArKwogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9jb25mbGljdC5jIHwgMTcyICsrKysrKysrKysrKwogc3JjL2Jh Y2tlbmQvcmV3cml0ZS9yZXdyaXRlRGVmaW5lLmMgICAgICAgIHwgIDI0ICsrCiBzcmMvYmluL2lu aXRkYi9pbml0ZGIuYyAgICAgICAgICAgICAgICAgICAgfCAgIDYgKwogc3JjL2Jpbi9wc3FsL3Rh Yi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9n L2NhdGFsb2cuaCAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2 ZXJzaW9uLmggICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX25hbWVz cGFjZS5kYXQgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRp b24uaCAgICAgIHwgIDEwICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2NvbmZsaWN0LmggICAg ICAgICB8ICAyNiArKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0 IHwgMjk1ICsrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2Ny aXB0aW9uLnNxbCAgICAgIHwgMjM0ICsrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAzNV9jb25mbGljdHMucGwgICB8ICA2NyArKysrLQogc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QgICAgICAgICAgIHwgICAyICsKIDMxIGZpbGVzIGNoYW5nZWQsIDE0NTEg aW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L2RkbC5zZ21sIGIvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCmluZGV4IGZiZDBlYmJmMTBmLi45ZDM2 YThiMDhmMyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9kZGwuc2dtbApAQCAtMzc1OSw2ICszNzU5LDI2IEBAIFJFVk9LRSBDUkVBVEUgT04gU0NI RU1BIHB1YmxpYyBGUk9NIFBVQkxJQzsKICAgIDwvcGFyYT4KICAgPC9zZWN0Mj4KIAorICA8c2Vj dDIgaWQ9ImRkbC1zY2hlbWFzLWNvbmZsaWN0Ij4KKyAgIDx0aXRsZT5UaGUgQ29uZmxpY3QgU2No ZW1hPC90aXRsZT4KKworICAgPGluZGV4dGVybSB6b25lPSJkZGwtc2NoZW1hcy1jb25mbGljdCI+ CisgICAgPHByaW1hcnk+Y29uZmxpY3Q8L3ByaW1hcnk+CisgICAgPHNlY29uZGFyeT5zY2hlbWE8 L3NlY29uZGFyeT4KKyAgIDwvaW5kZXh0ZXJtPgorCisgICA8cGFyYT4KKyAgICBUaGUgPGxpdGVy YWw+cGdfY29uZmxpY3Q8L2xpdGVyYWw+IHNjaGVtYSAoc29tZXRpbWVzIHJlZmVycmVkIHRvIGFz IHRoZQorICAgIDxlbXBoYXNpcz5jb25mbGljdCBzY2hlbWE8L2VtcGhhc2lzPikgY29udGFpbnMg c3lzdGVtLW1hbmFnZWQgY29uZmxpY3QKKyAgICBsb2cgdGFibGVzIHVzZWQgZm9yIGxvZ2ljYWwg cmVwbGljYXRpb24gY29uZmxpY3QgdHJhY2tpbmcuCisgICAgVGhlc2UgdGFibGVzIGFyZSBjcmVh dGVkIGFuZCBtYWludGFpbmVkIGJ5IHRoZSBzeXN0ZW0gYW5kIGFyZSBub3QgaW50ZW5kZWQgZm9y CisgICAgZGlyZWN0IHVzZXIgbWFuaXB1bGF0aW9uLiBVbmxpa2UgPGxpdGVyYWw+cGdfY2F0YWxv ZzwvbGl0ZXJhbD4sIHRoZQorICAgIDxsaXRlcmFsPnBnX2NvbmZsaWN0PC9saXRlcmFsPiBzY2hl bWEgaXMgbm90IGltcGxpY2l0bHkgaW5jbHVkZWQgaW4gdGhlCisgICAgc2VhcmNoIHBhdGgsIHNv IG9iamVjdHMgd2l0aGluIGl0IG11c3QgYmUgcmVmZXJlbmNlZCBleHBsaWNpdGx5IG9yIGJ5Cisg ICAgYWRqdXN0aW5nIHRoZSBzZWFyY2ggcGF0aC4KKyAgIDwvcGFyYT4KKyAgPC9zZWN0Mj4KKwog ICA8c2VjdDIgaWQ9ImRkbC1zY2hlbWFzLXBhdHRlcm5zIj4KICAgIDx0aXRsZT5Vc2FnZSBQYXR0 ZXJuczwvdGl0bGU+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9nbG9zc2FyeS5zZ21sIGIv ZG9jL3NyYy9zZ21sL2dsb3NzYXJ5LnNnbWwKaW5kZXggYjg4MWFlNzExOTguLmY3ZjY5YWZjOTIy IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZ2xvc3Nhcnkuc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvZ2xvc3Nhcnkuc2dtbApAQCAtNTA2LDYgKzUwNiwxOCBAQAogICAgPC9nbG9zc2RlZj4KICAg PC9nbG9zc2VudHJ5PgogCisgIDxnbG9zc2VudHJ5IGlkPSJnbG9zc2FyeS1jb25mbGljdC1zY2hl bWEiPgorICAgPGdsb3NzdGVybT5Db25mbGljdCBzY2hlbWE8L2dsb3NzdGVybT4KKyAgIDxnbG9z c2RlZj4KKyAgICA8cGFyYT4KKyAgICAgVGhlIDxsaXRlcmFsPnBnX2NvbmZsaWN0PC9saXRlcmFs PiBzY2hlbWEgdGhhdCBjb250YWlucyBzeXN0ZW0tbWFuYWdlZAorICAgICBjb25mbGljdCBsb2cg dGFibGVzIGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uLiBUaGVzZSB0YWJsZXMgYXJlIGNyZWF0ZWQK KyAgICAgYW5kIG1haW50YWluZWQgYXV0b21hdGljYWxseSBieSB0aGUgc3lzdGVtIGFuZCBhcmUg bm90IGludGVuZGVkIGZvcgorICAgICBkaXJlY3QgdXNlciBtYW5pcHVsYXRpb24uIFNlZSA8eHJl ZiBsaW5rZW5kPSJkZGwtc2NoZW1hcy1jb25mbGljdCIvPi4KKyAgICA8L3BhcmE+CisgICA8L2ds b3NzZGVmPgorICA8L2dsb3NzZW50cnk+CisKICAgPGdsb3NzZW50cnkgaWQ9Imdsb3NzYXJ5LWNv bm5lY3Rpb24iPgogICAgPGdsb3NzdGVybT5Db25uZWN0aW9uPC9nbG9zc3Rlcm0+CiAgICA8Z2xv c3NkZWY+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21s IGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAppbmRleCA1YmVmZWZkOWM1 YS4uZjIxMjM5YWY2YjggMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0 aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbApAQCAt MjkzLDYgKzI5MywyMSBAQAogICAgb3B0aW9uIG9mIDxjb21tYW5kPkNSRUFURSBTVUJTQ1JJUFRJ T048L2NvbW1hbmQ+IGZvciBkZXRhaWxzLgogICA8L3BhcmE+CiAKKyAgPHBhcmE+CisgICA8bGlu ayBsaW5rZW5kPSJsb2dpY2FsLXJlcGxpY2F0aW9uLWNvbmZsaWN0cyI+Q29uZmxpY3RzPC9saW5r PiB0aGF0IG9jY3VyCisgICBkdXJpbmcgcmVwbGljYXRpb24gYXJlLCBieSBkZWZhdWx0LCBsb2dn ZWQgYXMgcGxhaW4gdGV4dCBpbiB0aGUgc2VydmVyIGxvZywKKyAgIHdoaWNoIGNhbiBtYWtlIGF1 dG9tYXRlZCBtb25pdG9yaW5nIGFuZCBhbmFseXNpcyBkaWZmaWN1bHQuIFRoZQorICAgPGNvbW1h bmQ+Q1JFQVRFIFNVQlNDUklQVElPTjwvY29tbWFuZD4gY29tbWFuZCBwcm92aWRlcyB0aGUKKyAg IDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVzdWJzY3JpcHRpb24tcGFyYW1zLXdpdGgtY29uZmxp Y3QtbG9nLWRlc3RpbmF0aW9uIj4KKyAgIDxsaXRlcmFsPmNvbmZsaWN0X2xvZ19kZXN0aW5hdGlv bjwvbGl0ZXJhbD48L2xpbms+IG9wdGlvbiB0byByZWNvcmQgZGV0YWlsZWQKKyAgIGNvbmZsaWN0 IGluZm9ybWF0aW9uIGluIGEgc3RydWN0dXJlZCwgcXVlcnlhYmxlIGZvcm1hdC4gV2hlbiB0aGlz IHBhcmFtZXRlcgorICAgaXMgc2V0IHRvIDxsaXRlcmFsPnRhYmxlPC9saXRlcmFsPiBvciA8bGl0 ZXJhbD5hbGw8L2xpdGVyYWw+LCB0aGUgc3lzdGVtCisgICBhdXRvbWF0aWNhbGx5IG1hbmFnZXMg YSBkZWRpY2F0ZWQgPGZpcnN0dGVybT5jb25mbGljdCBsb2cgdGFibGU8L2ZpcnN0dGVybT4sCisg ICB3aGljaCBpcyBjcmVhdGVkIGFuZCBkcm9wcGVkIGFsb25nIHdpdGggdGhlIHN1YnNjcmlwdGlv bi4gVGhpcyBzaWduaWZpY2FudGx5CisgICBpbXByb3ZlcyBwb3N0LW1vcnRlbSBhbmFseXNpcyBh bmQgb3BlcmF0aW9uYWwgdmlzaWJpbGl0eSBvZiB0aGUgcmVwbGljYXRpb24KKyAgIHNldHVwLgor ICA8L3BhcmE+CisKICAgPHNlY3QyIGlkPSJsb2dpY2FsLXJlcGxpY2F0aW9uLXN1YnNjcmlwdGlv bi1zbG90Ij4KICAgIDx0aXRsZT5Mb2dpY2FsIFJlcGxpY2F0aW9uIFNsb3QgTWFuYWdlbWVudDwv dGl0bGU+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9u LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21sCmluZGV4IGU0 ZjBiNmIxNmM3Li5mYWQxZjkwOTU2YSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRl cl9zdWJzY3JpcHRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlw dGlvbi5zZ21sCkBAIC0yOTMsOCArMjkzLDkgQEAgQUxURVIgU1VCU0NSSVBUSU9OIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDwKICAg ICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVzdWJzY3JpcHRpb24tcGFyYW1zLXdpdGgtZmFp bG92ZXIiPjxsaXRlcmFsPmZhaWxvdmVyPC9saXRlcmFsPjwvbGluaz4sCiAgICAgICA8bGluayBs aW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLXR3by1waGFzZSI+PGxp dGVyYWw+dHdvX3BoYXNlPC9saXRlcmFsPjwvbGluaz4sCiAgICAgICA8bGluayBsaW5rZW5kPSJz cWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLXJldGFpbi1kZWFkLXR1cGxlcyI+PGxp dGVyYWw+cmV0YWluX2RlYWRfdHVwbGVzPC9saXRlcmFsPjwvbGluaz4sCi0gICAgICA8bGluayBs aW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLW1heC1yZXRlbnRpb24t ZHVyYXRpb24iPjxsaXRlcmFsPm1heF9yZXRlbnRpb25fZHVyYXRpb248L2xpdGVyYWw+PC9saW5r PiwgYW5kCi0gICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFt cy13aXRoLXdhbC1yZWNlaXZlci10aW1lb3V0Ij48bGl0ZXJhbD53YWxfcmVjZWl2ZXJfdGltZW91 dDwvbGl0ZXJhbD48L2xpbms+LgorICAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNj cmlwdGlvbi1wYXJhbXMtd2l0aC1tYXgtcmV0ZW50aW9uLWR1cmF0aW9uIj48bGl0ZXJhbD5tYXhf cmV0ZW50aW9uX2R1cmF0aW9uPC9saXRlcmFsPjwvbGluaz4sCisgICAgICA8bGluayBsaW5rZW5k PSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLXdhbC1yZWNlaXZlci10aW1lb3V0 Ij48bGl0ZXJhbD53YWxfcmVjZWl2ZXJfdGltZW91dDwvbGl0ZXJhbD48L2xpbms+LCBhbmQKKyAg ICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVzdWJzY3JpcHRpb24tcGFyYW1zLXdpdGgtY29u ZmxpY3QtbG9nLWRlc3RpbmF0aW9uIj48bGl0ZXJhbD5jb25mbGljdF9sb2dfZGVzdGluYXRpb248 L2xpdGVyYWw+PC9saW5rPi4KICAgICAgIE9ubHkgYSBzdXBlcnVzZXIgY2FuIHNldCA8bGl0ZXJh bD5wYXNzd29yZF9yZXF1aXJlZCA9IGZhbHNlPC9saXRlcmFsPi4KICAgICAgPC9wYXJhPgogCkBA IC0zNTIsNiArMzUzLDEzIEBAIEFMVEVSIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8CiAgICAgICA8cXVvdGU+ PGxpdGVyYWw+cGdfY29uZmxpY3RfZGV0ZWN0aW9uPC9saXRlcmFsPjwvcXVvdGU+LCBjcmVhdGVk IHRvIHJldGFpbgogICAgICAgZGVhZCB0dXBsZXMgZm9yIGNvbmZsaWN0IGRldGVjdGlvbiwgd2ls bCBiZSBkcm9wcGVkLgogICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgICBXaGVuIHRo ZSA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLWNvbmZs aWN0LWxvZy1kZXN0aW5hdGlvbiI+PGxpdGVyYWw+Y29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9uPC9s aXRlcmFsPjwvbGluaz4KKyAgICAgIHBhcmFtZXRlciBpcyBzZXQgdG8gPGxpdGVyYWw+dGFibGU8 L2xpdGVyYWw+IG9yIDxsaXRlcmFsPmFsbDwvbGl0ZXJhbD4sIHRoZSBzeXN0ZW0KKyAgICAgIGF1 dG9tYXRpY2FsbHkgY3JlYXRlcyB0aGUgY29uZmxpY3QgbG9nIHRhYmxlLiBDb252ZXJzZWx5LCBp ZiB0aGUgZGVzdGluYXRpb24gaXMgY2hhbmdlZCB0bworICAgICAgPGxpdGVyYWw+bG9nPC9saXRl cmFsPiwgdGhlIGNvbmZsaWN0IGxvZyB0YWJsZSBpcyBhdXRvbWF0aWNhbGx5IGRyb3BwZWQuCisg ICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3Ny Yy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKaW5kZXggMDdkNWIxYmQ3N2MuLjgx ZmJmMzQ4N2E0IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRp b24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbApA QCAtMjYxLDYgKzI2MSw1NSBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5zdWJzY3JpcHRpb25fbmFtZTwvcmVwbGFjZWFibAogICAgICAgICA8L2xp c3RpdGVtPgogICAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgICAgPHZhcmxpc3RlbnRyeSBp ZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1jb25mbGljdC1sb2ctZGVzdGlu YXRpb24iPgorICAgICAgICA8dGVybT48bGl0ZXJhbD5jb25mbGljdF9sb2dfZGVzdGluYXRpb248 L2xpdGVyYWw+ICg8dHlwZT5lbnVtPC90eXBlPik8L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT4K KyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIFNwZWNpZmllcyB0aGUgZGVzdGluYXRpb24gZm9y IHJlY29yZGluZyBsb2dpY2FsIHJlcGxpY2F0aW9uIGNvbmZsaWN0cy4KKyAgICAgICAgICBUaGUg YXZhaWxhYmxlIHZhbHVlcyBhcmU6CisgICAgICAgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgICAg ICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgIDx0ZXJtPjxsaXRlcmFsPmxvZzwvbGl0ZXJh bD48L3Rlcm0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgPHBhcmE+Cisg ICAgICAgICAgICAgIENvbmZsaWN0IGRldGFpbHMgYXJlIHJlY29yZGVkIGluIHRoZSBzZXJ2ZXIg bG9nLgorICAgICAgICAgICAgICBUaGlzIGlzIHRoZSBkZWZhdWx0IGJlaGF2aW9yLgorICAgICAg ICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgIDwvdmFy bGlzdGVudHJ5PgorICAgICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgICAgPHRlcm0+ PGxpdGVyYWw+dGFibGU8L2xpdGVyYWw+PC90ZXJtPgorICAgICAgICAgICAgPGxpc3RpdGVtPgor ICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICBUaGUgc3lzdGVtIGF1dG9tYXRpY2Fs bHkgY3JlYXRlcyBhIHN0cnVjdHVyZWQgdGFibGUgbmFtZWQKKyAgICAgICAgICAgICAgPGxpdGVy YWw+cGdfY29uZmxpY3RfbG9nXyZsdDtzdWJpZCZndDs8L2xpdGVyYWw+IGluIHRoZQorICAgICAg ICAgICAgICA8bGl0ZXJhbD5wZ19jb25mbGljdDwvbGl0ZXJhbD4gc2NoZW1hLiBUaGlzIGFsbG93 cyBmb3IgZWFzeQorICAgICAgICAgICAgICBxdWVyeWluZyBhbmQgYW5hbHlzaXMgb2YgY29uZmxp Y3RzLgorICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICA8Y2F1dGlvbj4KKyAgICAg ICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICBUaGUgY29uZmxpY3QgbG9nIHRhYmxlIGlz IHN0cmljdGx5IHRpZWQgdG8gdGhlIGxpZmVjeWNsZSBvZiB0aGUKKyAgICAgICAgICAgICAgIHN1 YnNjcmlwdGlvbiBvciB0aGUgPGxpdGVyYWw+Y29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9uPC9saXRl cmFsPiBzZXR0aW5nLiBJZgorICAgICAgICAgICAgICAgdGhlIHN1YnNjcmlwdGlvbiBpcyBkcm9w cGVkLCBvciBpZiB0aGUgZGVzdGluYXRpb24gaXMgY2hhbmdlZCB0bworICAgICAgICAgICAgICAg PGxpdGVyYWw+bG9nPC9saXRlcmFsPiwgdGhlIHRhYmxlIGlzIDxlbXBoYXNpcz5kcm9wcGVkPC9l bXBoYXNpcz4uCisgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICA8L2NhdXRpb24+ CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAg ICAgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgIDx0ZXJtPjxsaXRlcmFsPmFsbDwv bGl0ZXJhbD48L3Rlcm0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgPHBh cmE+CisgICAgICAgICAgICAgIFRoaXMgaXMgZXF1aXZhbGVudCB0byBjb25maWd1cmluZyBib3Ro IGRlc3RpbmF0aW9ucyA8bGl0ZXJhbD5sb2c8L2xpdGVyYWw+CisgICAgICAgICAgICAgIGFuZCA8 bGl0ZXJhbD50YWJsZTwvbGl0ZXJhbD4gdG9nZXRoZXIuCisgICAgICAgICAgICAgPC9wYXJhPgor ICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAg ICAgICAgPC92YXJpYWJsZWxpc3Q+CisgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0 ZW0+CisgICAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgICA8dmFybGlzdGVudHJ5IGlkPSJz cWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLWNvcHktZGF0YSI+CiAgICAgICAgIDx0 ZXJtPjxsaXRlcmFsPmNvcHlfZGF0YTwvbGl0ZXJhbD4gKDx0eXBlPmJvb2xlYW48L3R5cGU+KTwv dGVybT4KICAgICAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9k cm9wX3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9kcm9wX3N1YnNjcmlwdGlv bi5zZ21sCmluZGV4IDZlODRiYjBhMjU2Li42NDVmMjU1ODU4NyAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL3JlZi9kcm9wX3N1YnNjcmlwdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYv ZHJvcF9zdWJzY3JpcHRpb24uc2dtbApAQCAtMTE0LDYgKzExNCwxNCBAQCBEUk9QIFNVQlNDUklQ VElPTiBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9y ZXBsYWNlYWJsZQogICAgSWYgYSBzdWJzY3JpcHRpb24gaXMgYXNzb2NpYXRlZCB3aXRoIGEgcmVw bGljYXRpb24gc2xvdCwgdGhlbiA8Y29tbWFuZD5EUk9QCiAgICBTVUJTQ1JJUFRJT048L2NvbW1h bmQ+IGNhbm5vdCBiZSBleGVjdXRlZCBpbnNpZGUgYSB0cmFuc2FjdGlvbiBibG9jay4KICAgPC9w YXJhPgorCisgIDxwYXJhPgorICAgSWYgYSBjb25mbGljdCBsb2cgdGFibGUgZXhpc3RzIGZvciB0 aGUgc3Vic2NyaXB0aW9uICh0aGF0IGlzLCB3aGVuCisgICA8bGluayBsaW5rZW5kPSJzcWwtY3Jl YXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLWNvbmZsaWN0LWxvZy1kZXN0aW5hdGlvbiI+Cisg ICA8bGl0ZXJhbD5jb25mbGljdF9sb2dfZGVzdGluYXRpb248L2xpdGVyYWw+PC9saW5rPiBpcyBz ZXQgdG8gPGxpdGVyYWw+dGFibGU8L2xpdGVyYWw+CisgICBvciA8bGl0ZXJhbD5hbGw8L2xpdGVy YWw+KSwgPGNvbW1hbmQ+RFJPUCBTVUJTQ1JJUFRJT048L2NvbW1hbmQ+IGF1dG9tYXRpY2FsbHkg ZHJvcHMKKyAgIHRoZSBhc3NvY2lhdGVkIGNvbmZsaWN0IGxvZyB0YWJsZS4KKyAgPC9wYXJhPgog IDwvcmVmc2VjdDE+CiAKICA8cmVmc2VjdDE+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRh bG9nL2FjbGNoay5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYwppbmRleCAwMDdlZGU5 OTdjNS4uMTQwY2QxMzAyZjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hr LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYwpAQCAtMzMzNywyNSArMzMzNywz OSBAQCBwZ19jbGFzc19hY2xtYXNrX2V4dChPaWQgdGFibGVfb2lkLCBPaWQgcm9sZWlkLCBBY2xN b2RlIG1hc2ssCiAKIAljbGFzc0Zvcm0gPSAoRm9ybV9wZ19jbGFzcykgR0VUU1RSVUNUKHR1cGxl KTsKIAotCS8qCi0JICogRGVueSBhbnlvbmUgcGVybWlzc2lvbiB0byB1cGRhdGUgYSBzeXN0ZW0g Y2F0YWxvZyB1bmxlc3MKLQkgKiBwZ19hdXRoaWQucm9sc3VwZXIgaXMgc2V0LgotCSAqCi0JICog QXMgb2YgNy40IHdlIGhhdmUgc29tZSB1cGRhdGFibGUgc3lzdGVtIHZpZXdzOyB0aG9zZSBzaG91 bGRuJ3QgYmUKLQkgKiBwcm90ZWN0ZWQgaW4gdGhpcyB3YXkuICBBc3N1bWUgdGhlIHZpZXcgcnVs ZXMgY2FuIHRha2UgY2FyZSBvZgotCSAqIHRoZW1zZWx2ZXMuICBBQ0xfVVNBR0UgaXMgaWYgd2Ug ZXZlciBoYXZlIHN5c3RlbSBzZXF1ZW5jZXMuCi0JICovCi0JaWYgKChtYXNrICYgKEFDTF9JTlNF UlQgfCBBQ0xfVVBEQVRFIHwgQUNMX0RFTEVURSB8IEFDTF9UUlVOQ0FURSB8IEFDTF9VU0FHRSkp ICYmCi0JCUlzU3lzdGVtQ2xhc3ModGFibGVfb2lkLCBjbGFzc0Zvcm0pICYmCi0JCWNsYXNzRm9y bS0+cmVsa2luZCAhPSBSRUxLSU5EX1ZJRVcgJiYKLQkJIXN1cGVydXNlcl9hcmcocm9sZWlkKSkK LQkJbWFzayAmPSB+KEFDTF9JTlNFUlQgfCBBQ0xfVVBEQVRFIHwgQUNMX0RFTEVURSB8IEFDTF9U UlVOQ0FURSB8IEFDTF9VU0FHRSk7Ci0KLQkvKgotCSAqIE90aGVyd2lzZSwgc3VwZXJ1c2VycyBi eXBhc3MgYWxsIHBlcm1pc3Npb24tY2hlY2tpbmcuCi0JICovCi0JaWYgKHN1cGVydXNlcl9hcmco cm9sZWlkKSkKKwlpZiAoIXN1cGVydXNlcl9hcmcocm9sZWlkKSkKIAl7CisJCWlmIChtYXNrICYg KEFDTF9JTlNFUlQgfCBBQ0xfVVBEQVRFIHwgQUNMX0RFTEVURSB8IEFDTF9UUlVOQ0FURSB8IEFD TF9VU0FHRSkpCisJCXsKKwkJCWlmIChJc0NvbmZsaWN0TG9nVGFibGVDbGFzcyhjbGFzc0Zvcm0p KQorCQkJeworCQkJCS8qCisJCQkJICogRm9yIGNvbmZsaWN0IGxvZyB0YWJsZXMsIGFsbG93IG5v bi1zdXBlcnVzZXJzIHRvIHBlcmZvcm0KKwkJCQkgKiBERUxFVEUgYW5kIFRSVU5DQVRFIGZvciBj bGVhbnVwIGFuZCBtYWludGVuYW5jZSwgd2hpbGUKKwkJCQkgKiBzdGlsbCByZXN0cmljdGluZyBJ TlNFUlQsIFVQREFURSwgYW5kIFVTQUdFLgorCQkJCSAqLworCQkJCW1hc2sgJj0gfihBQ0xfSU5T RVJUIHwgQUNMX1VQREFURSB8IEFDTF9VU0FHRSk7CisJCQl9CisJCQllbHNlIGlmIChJc1N5c3Rl bUNsYXNzKHRhYmxlX29pZCwgY2xhc3NGb3JtKSAmJgorCQkJCQkgY2xhc3NGb3JtLT5yZWxraW5k ICE9IFJFTEtJTkRfVklFVykKKwkJCXsKKwkJCQkvKgorCQkJCSAqIERlbnkgYW55b25lIHBlcm1p c3Npb24gdG8gdXBkYXRlIGEgc3lzdGVtIGNhdGFsb2cgdW5sZXNzCisJCQkJICogcGdfYXV0aGlk LnJvbHN1cGVyIGlzIHNldC4KKwkJCQkgKgorCQkJCSAqIEFzIG9mIDcuNCB3ZSBoYXZlIHNvbWUg dXBkYXRhYmxlIHN5c3RlbSB2aWV3czsgdGhvc2UKKwkJCQkgKiBzaG91bGRuJ3QgYmUgcHJvdGVj dGVkIGluIHRoaXMgd2F5LiAgQXNzdW1lIHRoZSB2aWV3IHJ1bGVzCisJCQkJICogY2FuIHRha2Ug Y2FyZSBvZiB0aGVtc2VsdmVzLiAgQUNMX1VTQUdFIGlzIGlmIHdlIGV2ZXIgaGF2ZQorCQkJCSAq IHN5c3RlbSBzZXF1ZW5jZXMuCisJCQkJICovCisJCQkJbWFzayAmPSB+KEFDTF9JTlNFUlQgfCBB Q0xfVVBEQVRFIHwgQUNMX0RFTEVURSB8IEFDTF9UUlVOQ0FURSB8CisJCQkJCQkgIEFDTF9VU0FH RSk7CisJCQl9CisJCX0KKwl9CisJZWxzZQorCXsKKwkJLyogU3VwZXJ1c2VycyBieXBhc3MgYWxs IHBlcm1pc3Npb24tY2hlY2tpbmcuICovCiAJCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CiAJCXJl dHVybiBtYXNrOwogCX0KQEAgLTM2NjAsNiArMzY3NCwxNCBAQCBwZ19uYW1lc3BhY2VfYWNsbWFz a19leHQoT2lkIG5zcF9vaWQsIE9pZCByb2xlaWQsCiAJQWNsCQkgICAqYWNsOwogCU9pZAkJCW93 bmVySWQ7CiAKKwkvKgorCSAqIERpc2FsbG93IGNyZWF0aW9uIGluIHRoZSBjb25mbGljdCBzY2hl bWEgZm9yIGV2ZXJ5b25lLCBpbmNsdWRpbmcKKwkgKiBzdXBlcnVzZXJzLCB1bmxlc3MgaW4gYmlu YXJ5LXVwZ3JhZGUgbW9kZS4KKwkgKi8KKwlpZiAoIUlzQmluYXJ5VXBncmFkZSAmJiAobWFzayAm IEFDTF9DUkVBVEUpICYmCisJCUlzQ29uZmxpY3RMb2dUYWJsZU5hbWVzcGFjZShuc3Bfb2lkKSkK KwkJbWFzayAmPSB+QUNMX0NSRUFURTsKKwogCS8qIFN1cGVydXNlcnMgYnlwYXNzIGFsbCBwZXJt aXNzaW9uIGNoZWNraW5nLiAqLwogCWlmIChzdXBlcnVzZXJfYXJnKHJvbGVpZCkpCiAJCXJldHVy biBtYXNrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9jYXRhbG9nLmMgYi9zcmMv YmFja2VuZC9jYXRhbG9nL2NhdGFsb2cuYwppbmRleCA3YmU0OTAzMjkzNC4uYmU4NzkxYWY4NzUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvY2F0YWxvZy5jCisrKyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvY2F0YWxvZy5jCkBAIC04Niw3ICs4Niw5IEBAIGJvb2wKIElzU3lzdGVtQ2xh c3MoT2lkIHJlbGlkLCBGb3JtX3BnX2NsYXNzIHJlbHR1cGxlKQogewogCS8qIElzQ2F0YWxvZ1Jl bGF0aW9uT2lkIGlzIGEgYml0IGZhc3Rlciwgc28gdGVzdCB0aGF0IGZpcnN0ICovCi0JcmV0dXJu IChJc0NhdGFsb2dSZWxhdGlvbk9pZChyZWxpZCkgfHwgSXNUb2FzdENsYXNzKHJlbHR1cGxlKSk7 CisJcmV0dXJuIChJc0NhdGFsb2dSZWxhdGlvbk9pZChyZWxpZCkgfHwKKwkJCUlzVG9hc3RDbGFz cyhyZWx0dXBsZSkgfHwKKwkJCUlzQ29uZmxpY3RMb2dUYWJsZUNsYXNzKHJlbHR1cGxlKSk7CiB9 CiAKIC8qCkBAIC0yMzAsNiArMjMyLDIwIEBAIElzVG9hc3RDbGFzcyhGb3JtX3BnX2NsYXNzIHJl bHR1cGxlKQogCXJldHVybiBJc1RvYXN0TmFtZXNwYWNlKHJlbG5hbWVzcGFjZSk7CiB9CiAKKy8q CisgKiBJc0NvbmZsaWN0TG9nVGFibGVDbGFzcworICoJCVRydWUgaWZmIHBnX2NsYXNzIHR1cGxl IHJlcHJlc2VudHMgYSBDb25mbGljdCBMb2cgVGFibGUuCisgKgorICoJCURvZXMgbm90IHBlcmZv cm0gYW55IGNhdGFsb2cgYWNjZXNzZXMuCisgKi8KK2Jvb2wKK0lzQ29uZmxpY3RMb2dUYWJsZUNs YXNzKEZvcm1fcGdfY2xhc3MgcmVsdHVwbGUpCit7CisJT2lkCQkJcmVsbmFtZXNwYWNlID0gcmVs dHVwbGUtPnJlbG5hbWVzcGFjZTsKKworCXJldHVybiBJc0NvbmZsaWN0TG9nVGFibGVOYW1lc3Bh Y2UocmVsbmFtZXNwYWNlKTsKK30KKwogLyoKICAqIElzQ2F0YWxvZ05hbWVzcGFjZQogICoJCVRy dWUgaWZmIG5hbWVzcGFjZSBpcyBwZ19jYXRhbG9nLgpAQCAtMjY0LDYgKzI4MCwxNyBAQCBJc1Rv YXN0TmFtZXNwYWNlKE9pZCBuYW1lc3BhY2VJZCkKIAkJaXNUZW1wVG9hc3ROYW1lc3BhY2UobmFt ZXNwYWNlSWQpOwogfQogCisvKgorICogSXNDb25mbGljdExvZ1RhYmxlTmFtZXNwYWNlCisgKgkJ VHJ1ZSBpZmYgbmFtZXNwYWNlIGlzIHBnX2NvbmZsaWN0LgorICoKKyAqCQlEb2VzIG5vdCBwZXJm b3JtIGFueSBjYXRhbG9nIGFjY2Vzc2VzLgorICovCitib29sCitJc0NvbmZsaWN0TG9nVGFibGVO YW1lc3BhY2UoT2lkIG5hbWVzcGFjZUlkKQoreworCXJldHVybiBuYW1lc3BhY2VJZCA9PSBQR19D T05GTElDVF9OQU1FU1BBQ0U7Cit9CiAKIC8qCiAgKiBJc1Jlc2VydmVkTmFtZQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19wdWJsaWNhdGlvbi5jCmluZGV4IDVjNDU3ZDlhY2E4Li4xZWM5NGM4NTFiMiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCisrKyBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwpAQCAtOTIsNiArOTIsMTMgQEAgY2hlY2tf cHVibGljYXRpb25fYWRkX3JlbGF0aW9uKFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpKQogCQkJCSBl cnJtc2coZXJyb3Jtc2csIHJlbG5hbWUpLAogCQkJCSBlcnJkZXRhaWwoIlRoaXMgb3BlcmF0aW9u IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHN5c3RlbSB0YWJsZXMuIikpKTsKIAorCS8qIENhbid0IGJl IGNvbmZsaWN0IGxvZyB0YWJsZSAqLworCWlmIChJc0NvbmZsaWN0TG9nVGFibGVOYW1lc3BhY2Uo UmVsYXRpb25HZXROYW1lc3BhY2UodGFyZ2V0cmVsKSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ KGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJIGVycm1zZyhl cnJvcm1zZywgcmVsbmFtZSksCisJCQkJIGVycmRldGFpbCgiVGhpcyBvcGVyYXRpb24gaXMgbm90 IHN1cHBvcnRlZCBmb3IgY29uZmxpY3QgbG9nIHRhYmxlcy4iKSkpOworCiAJLyogVU5MT0dHRUQg YW5kIFRFTVAgcmVsYXRpb25zIGNhbm5vdCBiZSBwYXJ0IG9mIHB1YmxpY2F0aW9uLiAqLwogCWlm ICh0YXJnZXRyZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVEVN UCkKIAkJZXJlcG9ydChFUlJPUiwKQEAgLTExMyw3ICsxMjAsOCBAQCBzdGF0aWMgdm9pZAogY2hl Y2tfcHVibGljYXRpb25fYWRkX3NjaGVtYShPaWQgc2NoZW1haWQpCiB7CiAJLyogQ2FuJ3QgYmUg c3lzdGVtIG5hbWVzcGFjZSAqLwotCWlmIChJc0NhdGFsb2dOYW1lc3BhY2Uoc2NoZW1haWQpIHx8 IElzVG9hc3ROYW1lc3BhY2Uoc2NoZW1haWQpKQorCWlmIChJc0NhdGFsb2dOYW1lc3BhY2Uoc2No ZW1haWQpIHx8IElzVG9hc3ROYW1lc3BhY2Uoc2NoZW1haWQpIHx8CisJCUlzQ29uZmxpY3RMb2dU YWJsZU5hbWVzcGFjZShzY2hlbWFpZCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUo RVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJIGVycm1zZygiY2Fubm90IGFk ZCBzY2hlbWEgXCIlc1wiIHRvIHB1YmxpY2F0aW9uIiwKQEAgLTE0OCw3ICsxNTYsOCBAQCBjaGVj a19wdWJsaWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBzY2hlbWFpZCkKICAqIGlzIHJlYWxseSBpbmFk ZXF1YXRlIGZvciB0aGF0LCBzaW5jZSB0aGUgaW5mb3JtYXRpb25fc2NoZW1hIGNvdWxkIGJlCiAg KiBkcm9wcGVkIGFuZCByZWxvYWRlZCBhbmQgdGhlbiBpdCdsbCBiZSBjb25zaWRlcmVkIHB1Ymxp c2hhYmxlLiAgVGhlIGJlc3QKICAqIGxvbmctdGVybSBzb2x1dGlvbiBtYXkgYmUgdG8gYWRkIGEg InJlbGlzcHVibGlzaGFibGUiIGJvb2wgdG8gcGdfY2xhc3MsCi0gKiBhbmQgZGVwZW5kIG9uIHRo YXQgaW5zdGVhZCBvZiBPSUQgY2hlY2tzLgorICogYW5kIGRlcGVuZCBvbiB0aGF0IGluc3RlYWQg b2YgT0lEIGNoZWNrcy4gIElzQ29uZmxpY3RMb2dUYWJsZUNsYXNzKCkKKyAqIGV4Y2x1ZGVzIHRh YmxlcyBpbiBjb25mbGljdCBzY2hlbWEuCiAgKi8KIHN0YXRpYyBib29sCiBpc19wdWJsaXNoYWJs ZV9jbGFzcyhPaWQgcmVsaWQsIEZvcm1fcGdfY2xhc3MgcmVsdHVwbGUpCkBAIC0xNTcsNiArMTY2 LDcgQEAgaXNfcHVibGlzaGFibGVfY2xhc3MoT2lkIHJlbGlkLCBGb3JtX3BnX2NsYXNzIHJlbHR1 cGxlKQogCQkJcmVsdHVwbGUtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSB8 fAogCQkJcmVsdHVwbGUtPnJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5DRSkgJiYKIAkJIUlzQ2F0 YWxvZ1JlbGF0aW9uT2lkKHJlbGlkKSAmJgorCQkhSXNDb25mbGljdExvZ1RhYmxlQ2xhc3MocmVs dHVwbGUpICYmCiAJCXJlbHR1cGxlLT5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9Q RVJNQU5FTlQgJiYKIAkJcmVsaWQgPj0gRmlyc3ROb3JtYWxPYmplY3RJZDsKIH0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMgYi9zcmMvYmFja2VuZC9j YXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCmluZGV4IGI1Y2IzMDFkYjg4Li4yMDY4ZTAzYzU3MSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYworKysgYi9z cmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCkBAIC0xMzIsNiArMTMyLDcgQEAg R2V0U3Vic2NyaXB0aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29rLCBib29sIGNvbm5pbmZv X25lZWRlZCwKIAlzdWItPnJldGFpbmRlYWR0dXBsZXMgPSBzdWJmb3JtLT5zdWJyZXRhaW5kZWFk dHVwbGVzOwogCXN1Yi0+bWF4cmV0ZW50aW9uID0gc3ViZm9ybS0+c3VibWF4cmV0ZW50aW9uOwog CXN1Yi0+cmV0ZW50aW9uYWN0aXZlID0gc3ViZm9ybS0+c3VicmV0ZW50aW9uYWN0aXZlOworCXN1 Yi0+Y29uZmxpY3Rsb2dyZWxpZCA9IHN1YmZvcm0tPnN1YmNvbmZsaWN0bG9ncmVsaWQ7CiAKIAlp ZiAoY29ubmluZm9fbmVlZGVkKQogCXsKQEAgLTIwMyw2ICsyMDQsMTIgQEAgR2V0U3Vic2NyaXB0 aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29rLCBib29sIGNvbm5pbmZvX25lZWRlZCwKIAkJ CQkJCQkJICAgQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vib3JpZ2luKTsKIAlzdWItPm9yaWdpbiA9 IFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pOwogCisJLyogR2V0IGNvbmZsaWN0IGxvZyBkZXN0 aW5hdGlvbiAqLworCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChTVUJTQ1JJUFRJT05P SUQsCisJCQkJCQkJCSAgIHR1cCwKKwkJCQkJCQkJICAgQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vi Y29uZmxpY3Rsb2dkZXN0KTsKKwlzdWItPmNvbmZsaWN0bG9nZGVzdCA9IFRleHREYXR1bUdldENT dHJpbmcoZGF0dW0pOworCiAJLyogSXMgdGhlIHN1YnNjcmlwdGlvbiBvd25lciBhIHN1cGVydXNl cj8gKi8KIAlzdWItPm93bmVyc3VwZXJ1c2VyID0gc3VwZXJ1c2VyX2FyZyhzdWItPm93bmVyKTsK IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IDhmMTI5YmFlYzkwLi41OTY3 NzYyZTYwMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3Fs CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtMTUyNyw4ICsx NTI3LDggQEAgR1JBTlQgU0VMRUNUIChvaWQsIHN1YmRiaWQsIHN1YnNraXBsc24sIHN1Ym5hbWUs IHN1Ym93bmVyLCBzdWJlbmFibGVkLAogICAgICAgICAgICAgICBzdWJiaW5hcnksIHN1YnN0cmVh bSwgc3VidHdvcGhhc2VzdGF0ZSwgc3ViZGlzYWJsZW9uZXJyLAogCQkJICBzdWJwYXNzd29yZHJl cXVpcmVkLCBzdWJydW5hc293bmVyLCBzdWJmYWlsb3ZlciwKICAgICAgICAgICAgICAgc3VicmV0 YWluZGVhZHR1cGxlcywgc3VibWF4cmV0ZW50aW9uLCBzdWJyZXRlbnRpb25hY3RpdmUsCi0gICAg ICAgICAgICAgIHN1YnNlcnZlciwgc3Vic2xvdG5hbWUsIHN1YnN5bmNjb21taXQsIHN1YndhbHJj dnRpbWVvdXQsCi0gICAgICAgICAgICAgIHN1YnB1YmxpY2F0aW9ucywgc3Vib3JpZ2luKQorICAg ICAgICAgICAgICBzdWJzZXJ2ZXIsIHN1YmNvbmZsaWN0bG9ncmVsaWQsIHN1YmNvbmZsaWN0bG9n ZGVzdCwgc3Vic2xvdG5hbWUsCisgICAgICAgICAgICAgIHN1YnN5bmNjb21taXQsIHN1YndhbHJj dnRpbWVvdXQsIHN1YnB1YmxpY2F0aW9ucywgc3Vib3JpZ2luKQogICAgIE9OIHBnX3N1YnNjcmlw dGlvbiBUTyBwdWJsaWM7CiAKIENSRUFURSBWSUVXIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0YXRz IEFTCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9sb2NrY21kcy5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvbG9ja2NtZHMuYwppbmRleCBmNjZiOGYxN2I5Yi4uMTMyMzJhMzYxOTYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2xvY2tjbWRzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvbG9ja2NtZHMuYwpAQCAtODMsNyArODMsMTkgQEAgUmFuZ2VWYXJDYWxs YmFja0ZvckxvY2tUYWJsZShjb25zdCBSYW5nZVZhciAqcnYsIE9pZCByZWxpZCwgT2lkIG9sZHJl bGlkLAogCQlyZXR1cm47CQkJCQkvKiB3b29wcywgY29uY3VycmVudGx5IGRyb3BwZWQ7IG5vIHBl cm1pc3Npb25zCiAJCQkJCQkJCSAqIGNoZWNrICovCiAKLQkvKiBDdXJyZW50bHksIHdlIG9ubHkg YWxsb3cgcGxhaW4gdGFibGVzIG9yIHZpZXdzIHRvIGJlIGxvY2tlZCAqLworCS8qCisJICogTm90 ZTogQ29uZmxpY3QgbG9nIHRhYmxlcyBhcmUgZGVsaWJlcmF0ZWx5IE5PVCBibG9ja2VkIGhlcmUs IGV2ZW4KKwkgKiB0aG91Z2ggb3RoZXIgZGlyZWN0IERETCBvbiB0aGVtIGlzIHJlamVjdGVkIGVs c2V3aGVyZS4gcGdfZHVtcCByZWxpZXMKKwkgKiBvbiBiZWluZyBhYmxlIHRvIHRha2UgYW4gQUND RVNTIFNIQVJFIGxvY2sgb24gdGhlc2UgdGFibGVzIHRvIHNhZmVseQorCSAqIGR1bXAgdGhlaXIg ZGVmaW5pdGlvbnMgZHVyaW5nIGEgYmluYXJ5IHVwZ3JhZGUsIHNvIHdlIHBlcm1pdCBMT0NLCisJ ICogY29tbWFuZHMgb24gdGhlbSBhbmQgdHJlYXQgdGhlbSBsaWtlIG9yZGluYXJ5IHRhYmxlcyBo ZXJlLiBJdCdzIHRydWUKKwkgKiB0aGF0IGEgc3Ryb25nIGxvY2sgKFNoYXJlTG9jayBvciBhYm92 ZSkgb24gc3VjaCBhIHRhYmxlIHdvdWxkIGNvbmZsaWN0CisJICogd2l0aCB0aGUgUm93RXhjbHVz aXZlTG9jayB0YWtlbiBieSB0aGUgYXBwbHkgd29ya2VyJ3MgaW5zZXJ0cyBhbmQgY291bGQKKwkg KiBzdGFsbCBjb25mbGljdCBsb2dnaW5nIGFzIHdlbGwgYXMgdGhlIGFwcGx5IHdvcmtlciBmb3Ig YXMgbG9uZyBhcyBpdCBpcworCSAqIGhlbGQuIEJ1dCBsb2NraW5nIGEgc3lzdGVtLW1hbmFnZWQg Y29uZmxpY3QgbG9nIHRhYmxlIGlzIGFuIHVudXN1YWwKKwkgKiB0aGluZyB0byBkbywgYW5kIGl0 IGRvZXNuJ3Qgc2VlbSB3b3J0aCB0aGUgdHJvdWJsZSBvZiBmaWx0ZXJpbmcgYnkgbG9jaworCSAq IG1vZGUgaGVyZS4KKwkgKi8KIAlpZiAocmVsa2luZCAhPSBSRUxLSU5EX1JFTEFUSU9OICYmIHJl bGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSAmJgogCQlyZWxraW5kICE9IFJFTEtJ TkRfVklFVykKIAkJZXJlcG9ydChFUlJPUiwKQEAgLTE5OCw2ICsyMTAsMTYgQEAgTG9ja1ZpZXdS ZWN1cnNlX3dhbGtlcihOb2RlICpub2RlLCBMb2NrVmlld1JlY3Vyc2VfY29udGV4dCAqY29udGV4 dCkKIAkJCQlyZWxraW5kICE9IFJFTEtJTkRfVklFVykKIAkJCQljb250aW51ZTsKIAorCQkJLyoK KwkJCSAqIENvbmZsaWN0IGxvZyB0YWJsZXMgb25seSBzdXBwb3J0IFNFTEVDVCwgREVMRVRFLCBh bmQgVFJVTkNBVEUuCisJCQkgKiBBIGRpcmVjdCBMT0NLIG9uIHRoZW0gaXMgcGVybWl0dGVkIHNv bGVseSBzbyB0aGF0IHBnX2R1bXAgY2FuCisJCQkgKiBsb2NrIHRoZW0gZHVyaW5nIGEgYmluYXJ5 IHVwZ3JhZGU7IGxvY2tpbmcgb25lIGluZGlyZWN0bHkgYnkKKwkJCSAqIGxvY2tpbmcgYSB2aWV3 IG92ZXIgaXQgaXMgbm90IG5lZWRlZCBmb3IgdGhhdCwgc28gc2tpcCBpdCBoZXJlCisJCQkgKiBy YXRoZXIgdGhhbiBsb2NraW5nIGl0LgorCQkJICovCisJCQlpZiAoSXNDb25mbGljdExvZ1RhYmxl TmFtZXNwYWNlKGdldF9yZWxfbmFtZXNwYWNlKHJlbGlkKSkpCisJCQkJY29udGludWU7CisKIAkJ CS8qCiAJCQkgKiBXZSBtaWdodCBiZSBkZWFsaW5nIHdpdGggYSBzZWxmLXJlZmVyZW50aWFsIHZp ZXcuICBJZiBzbywgd2UKIAkJCSAqIGNhbiBqdXN0IHN0b3AgcmVjdXJzaW5nLCBzaW5jZSB3ZSBh bHJlYWR5IGxvY2tlZCBpdC4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvbGlj eS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9saWN5LmMKaW5kZXggMjFiOGVlYmUzMmQuLjRj YTA4NmJmNGJiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wb2xpY3kuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9wb2xpY3kuYwpAQCAtNzksNiArNzksMTggQEAgUmFuZ2VW YXJDYWxsYmFja0ZvclBvbGljeShjb25zdCBSYW5nZVZhciAqcnYsIE9pZCByZWxpZCwgT2lkIG9s ZHJlbGlkLAogCWlmICghb2JqZWN0X293bmVyY2hlY2soUmVsYXRpb25SZWxhdGlvbklkLCByZWxp ZCwgR2V0VXNlcklkKCkpKQogCQlhY2xjaGVja19lcnJvcihBQ0xDSEVDS19OT1RfT1dORVIsIGdl dF9yZWxraW5kX29ianR5cGUoZ2V0X3JlbF9yZWxraW5kKHJlbGlkKSksIHJ2LT5yZWxuYW1lKTsK IAorCS8qCisJICogQ29uZmxpY3QgbG9nIHRhYmxlcyBhcmUgdXNlZCBpbnRlcm5hbGx5IGZvciBs b2dpY2FsIHJlcGxpY2F0aW9uCisJICogY29uZmxpY3QgbG9nZ2luZyBhbmQgc2hvdWxkIG5vdCBi ZSBtb2RpZmllZCBkaXJlY3RseSwgYXMgaXQgY291bGQKKwkgKiBkaXNydXB0IGNvbmZsaWN0IGxv Z2dpbmcuCisJICovCisJaWYgKElzQ29uZmxpY3RMb2dUYWJsZUNsYXNzKGNsYXNzZm9ybSkpCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSks CisJCQkJIGVycm1zZygiY2Fubm90IGNyZWF0ZSBwb2xpY3kgb24gY29uZmxpY3QgbG9nIHRhYmxl IFwiJXNcIiIsCisJCQkJCQlydi0+cmVsbmFtZSksCisJCQkJIGVycmRldGFpbCgiQ29uZmxpY3Qg bG9nIHRhYmxlcyBhcmUgc3lzdGVtLW1hbmFnZWQgdGFibGVzIGZvciBsb2dpY2FsIHJlcGxpY2F0 aW9uIGNvbmZsaWN0cy4iKSkpOworCiAJLyogTm8gc3lzdGVtIHRhYmxlIG1vZGlmaWNhdGlvbnMg dW5sZXNzIGV4cGxpY2l0bHkgYWxsb3dlZC4gKi8KIAlpZiAoIWFsbG93U3lzdGVtVGFibGVNb2Rz ICYmIElzU3lzdGVtQ2xhc3MocmVsaWQsIGNsYXNzZm9ybSkpCiAJCWVyZXBvcnQoRVJST1IsCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdGF0c2NtZHMuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3N0YXRzY21kcy5jCmluZGV4IGIzNTQ3MjNiZTQ0Li5jZTk4ZWJiMzVlYSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3RhdHNjbWRzLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvc3RhdHNjbWRzLmMKQEAgLTE0Nyw2ICsxNDcsMjAgQEAgQ3JlYXRlU3RhdGlz dGljcyhDcmVhdGVTdGF0c1N0bXQgKnN0bXQsIGJvb2wgY2hlY2tfcmlnaHRzKQogCQkJYWNsY2hl Y2tfZXJyb3IoQUNMQ0hFQ0tfTk9UX09XTkVSLCBnZXRfcmVsa2luZF9vYmp0eXBlKHJlbC0+cmRf cmVsLT5yZWxraW5kKSwKIAkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpOwog CisJCS8qCisJCSAqIENvbmZsaWN0IGxvZyB0YWJsZXMgYXJlIHN5c3RlbS1tYW5hZ2VkIHRhYmxl cyB1c2VkIGludGVybmFsbHkgZm9yCisJCSAqIGxvZ2ljYWwgcmVwbGljYXRpb24gY29uZmxpY3Qg bG9nZ2luZy4gVW5saWtlIHVzZXIgdGFibGVzLCB0aGV5IGFyZQorCQkgKiBub3QgZXhwZWN0ZWQg dG8gaGF2ZSBjb21wbGV4IHF1ZXJ5IHVzYWdlLCBzbyB0byBrZWVwIHRoaW5ncyBzaW1wbGUsCisJ CSAqIHVzZXItZGVmaW5lZCBleHRlbmRlZCBzdGF0aXN0aWNzIGFyZSBub3QgcmVxdWlyZWQgb3Ig c3VwcG9ydGVkIGF0CisJCSAqIHByZXNlbnQuCisJCSAqLworCQlpZiAoSXNDb25mbGljdExvZ1Rh YmxlQ2xhc3MocmVsLT5yZF9yZWwpKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUo RVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJCSBlcnJtc2coImNhbm5vdCBjcmVhdGUg c3RhdGlzdGljcyBvbiBjb25mbGljdCBsb2cgdGFibGUgXCIlc1wiIiwKKwkJCQkJCQlSZWxhdGlv bkdldFJlbGF0aW9uTmFtZShyZWwpKSwKKwkJCQkJIGVycmRldGFpbCgiQ29uZmxpY3QgbG9nIHRh YmxlcyBhcmUgc3lzdGVtLW1hbmFnZWQgdGFibGVzIGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uIGNv bmZsaWN0cy4iKSkpOworCiAJCS8qIENyZWF0aW5nIHN0YXRpc3RpY3Mgb24gc3lzdGVtIGNhdGFs b2dzIGlzIG5vdCBhbGxvd2VkICovCiAJCWlmICghYWxsb3dTeXN0ZW1UYWJsZU1vZHMgJiYgSXNT eXN0ZW1SZWxhdGlvbihyZWwpKQogCQkJZXJlcG9ydChFUlJPUiwKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3N1YnNjcmlwdGlvbmNtZHMuYwppbmRleCBlZTA2YTcyNmY0Mi4uNDI5MmU3ZmI4ZjQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKQEAgLTI4LDYgKzI4LDcgQEAKICNp bmNsdWRlICJjYXRhbG9nL3BnX2F1dGhpZF9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19kYXRh YmFzZV9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19mb3JlaWduX3NlcnZlci5oIgorI2luY2x1 ZGUgImNhdGFsb2cvcGdfbmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3Jp cHRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbl9yZWwuaCIKICNpbmNs dWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKQEAgLTM1LDYgKzM2LDcgQEAKICNpbmNsdWRlICJjb21t YW5kcy9kZWZyZW0uaCIKICNpbmNsdWRlICJjb21tYW5kcy9ldmVudF90cmlnZ2VyLmgiCiAjaW5j bHVkZSAiY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3Rh YmxlY21kcy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAiZm9y ZWlnbi9mb3JlaWduLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCkBAIC03OSw2ICs4MSw3IEBA CiAjZGVmaW5lIFNVQk9QVF9XQUxfUkVDRUlWRVJfVElNRU9VVAkJCTB4MDAwMTAwMDAKICNkZWZp bmUgU1VCT1BUX0xTTgkJCQkJMHgwMDAyMDAwMAogI2RlZmluZSBTVUJPUFRfT1JJR0lOCQkJCTB4 MDAwNDAwMDAKKyNkZWZpbmUgU1VCT1BUX0NPTkZMSUNUX0xPR19ERVNUCTB4MDAwODAwMDAKIAog LyogY2hlY2sgaWYgdGhlICd2YWwnIGhhcyAnYml0cycgc2V0ICovCiAjZGVmaW5lIElzU2V0KHZh bCwgYml0cykgICgoKHZhbCkgJiAoYml0cykpID09IChiaXRzKSkKQEAgLTEwNyw2ICsxMTAsNyBA QCB0eXBlZGVmIHN0cnVjdCBTdWJPcHRzCiAJYm9vbAkJcmV0YWluZGVhZHR1cGxlczsKIAlpbnQz MgkJbWF4cmV0ZW50aW9uOwogCWNoYXIJICAgKm9yaWdpbjsKKwlDb25mbGljdExvZ0Rlc3QgY29u ZmxpY3Rsb2dkZXN0OwogCVhMb2dSZWNQdHIJbHNuOwogCWNoYXIJICAgKndhbF9yZWNlaXZlcl90 aW1lb3V0OwogfSBTdWJPcHRzOwpAQCAtMTQwLDcgKzE0NCwxMiBAQCBzdGF0aWMgTGlzdCAqbWVy Z2VfcHVibGljYXRpb25zKExpc3QgKm9sZHB1Ymxpc3QsIExpc3QgKm5ld3B1Ymxpc3QsIGJvb2wg YWRkcHViLAogc3RhdGljIHZvaWQgUmVwb3J0U2xvdENvbm5lY3Rpb25FcnJvcihMaXN0ICpyc3Rh dGVzLCBPaWQgc3ViaWQsIGNoYXIgKnNsb3RuYW1lLCBjaGFyICplcnIpOwogc3RhdGljIHZvaWQg Q2hlY2tBbHRlclN1Yk9wdGlvbihTdWJzY3JpcHRpb24gKnN1YiwgY29uc3QgY2hhciAqb3B0aW9u LAogCQkJCQkJCQlib29sIHNsb3RfbmVlZHNfdXBkYXRlLCBib29sIGlzVG9wTGV2ZWwpOwotCitz dGF0aWMgYm9vbCBhbHRlcl9zdWJfY29uZmxpY3RfbG9nX2Rlc3QoU3Vic2NyaXB0aW9uICpzdWIs CisJCQkJCQkJCQkJQ29uZmxpY3RMb2dEZXN0IG9sZGxvZ2Rlc3QsCisJCQkJCQkJCQkJQ29uZmxp Y3RMb2dEZXN0IG5ld2xvZ2Rlc3QsCisJCQkJCQkJCQkJT2lkICpjb25mbGljdHRhYmxlcmVsaWQp Oworc3RhdGljIHZvaWQgZHJvcF9zdWJfY29uZmxpY3RfbG9nX3RhYmxlKE9pZCBzdWJpZCwgY2hh ciAqc3VibmFtZSwKKwkJCQkJCQkJCQlPaWQgc3ViY29uZmxpY3Rsb2dyZWxpZCk7CiAKIC8qCiAg KiBDb21tb24gb3B0aW9uIHBhcnNpbmcgZnVuY3Rpb24gZm9yIENSRUFURSBhbmQgQUxURVIgU1VC U0NSSVBUSU9OIGNvbW1hbmRzLgpAQCAtMTk2LDYgKzIwNSw4IEBAIHBhcnNlX3N1YnNjcmlwdGlv bl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqc3RtdF9vcHRpb25zLAogCQlvcHRz LT5tYXhyZXRlbnRpb24gPSAwOwogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX09S SUdJTikpCiAJCW9wdHMtPm9yaWdpbiA9IHBzdHJkdXAoTE9HSUNBTFJFUF9PUklHSU5fQU5ZKTsK KwlpZiAoSXNTZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9DT05GTElDVF9MT0dfREVTVCkpCisJ CW9wdHMtPmNvbmZsaWN0bG9nZGVzdCA9IENPTkZMSUNUX0xPR19ERVNUX0xPRzsKIAogCS8qIFBh cnNlIG9wdGlvbnMgKi8KIAlmb3JlYWNoKGxjLCBzdG10X29wdGlvbnMpCkBAIC00MzYsNiArNDQ3 LDE4IEBAIHBhcnNlX3N1YnNjcmlwdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlz dCAqc3RtdF9vcHRpb25zLAogCQkJCQkJCQkJCSBQR0NfQkFDS0VORCwgUEdDX1NfVEVTVCwgR1VD X0FDVElPTl9TRVQsCiAJCQkJCQkJCQkJIGZhbHNlLCAwLCBmYWxzZSk7CiAJCX0KKwkJZWxzZSBp ZiAoSXNTZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9DT05GTElDVF9MT0dfREVTVCkgJiYKKwkJ CQkgc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAiY29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9uIikgPT0g MCkKKwkJeworCQkJY2hhcgkgICAqdmFsOworCisJCQlpZiAoSXNTZXQob3B0cy0+c3BlY2lmaWVk X29wdHMsIFNVQk9QVF9DT05GTElDVF9MT0dfREVTVCkpCisJCQkJZXJyb3JDb25mbGljdGluZ0Rl ZkVsZW0oZGVmZWwsIHBzdGF0ZSk7CisKKwkJCXZhbCA9IGRlZkdldFN0cmluZyhkZWZlbCk7CisJ CQlvcHRzLT5jb25mbGljdGxvZ2Rlc3QgPSBHZXRDb25mbGljdExvZ0Rlc3QodmFsKTsKKwkJCW9w dHMtPnNwZWNpZmllZF9vcHRzIHw9IFNVQk9QVF9DT05GTElDVF9MT0dfREVTVDsKKwkJfQogCQll bHNlCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJP UiksCkBAIC02NjAsNiArNjgzLDcgQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBz dGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAl1aW50MzIJCXN1cHBvcnRlZF9v cHRzOwogCVN1Yk9wdHMJCW9wdHMgPSB7MH07CiAJQWNsUmVzdWx0CWFjbHJlc3VsdDsKKwlPaWQJ CQlsb2dyZWxpZCA9IEludmFsaWRPaWQ7CiAKIAkvKgogCSAqIFBhcnNlIGFuZCBjaGVjayBvcHRp b25zLgpAQCAtNjc0LDcgKzY5OCw4IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpw c3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJCSAgU1VCT1BUX1JVTl9B U19PV05FUiB8IFNVQk9QVF9GQUlMT1ZFUiB8CiAJCQkJCSAgU1VCT1BUX1JFVEFJTl9ERUFEX1RV UExFUyB8CiAJCQkJCSAgU1VCT1BUX01BWF9SRVRFTlRJT05fRFVSQVRJT04gfAotCQkJCQkgIFNV Qk9QVF9XQUxfUkVDRUlWRVJfVElNRU9VVCB8IFNVQk9QVF9PUklHSU4pOworCQkJCQkgIFNVQk9Q VF9XQUxfUkVDRUlWRVJfVElNRU9VVCB8IFNVQk9QVF9PUklHSU4gfAorCQkJCQkgIFNVQk9QVF9D T05GTElDVF9MT0dfREVTVCk7CiAJcGFyc2Vfc3Vic2NyaXB0aW9uX29wdGlvbnMocHN0YXRlLCBz dG10LT5vcHRpb25zLCBzdXBwb3J0ZWRfb3B0cywgJm9wdHMpOwogCiAJLyoKQEAgLTg0OCw2ICs4 NzMsMjEgQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU3Vi c2NyaXB0aW9uU3RtdCAqc3RtdCwKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vib3Jp Z2luIC0gMV0gPQogCQlDU3RyaW5nR2V0VGV4dERhdHVtKG9wdHMub3JpZ2luKTsKIAorCXZhbHVl c1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJjb25mbGljdGxvZ2Rlc3QgLSAxXSA9CisJCUNTdHJp bmdHZXRUZXh0RGF0dW0oQ29uZmxpY3RMb2dEZXN0TmFtZXNbb3B0cy5jb25mbGljdGxvZ2Rlc3Rd KTsKKworCS8qCisJICogV2UgY3JlYXRlIHRoZSBjb25mbGljdCBsb2cgdGFibGUgaGVyZSwgaWYg cmVxdWlyZWQsIHNvIHRoYXQgaXRzCisJICogcmVsYXRpb24gT0lEIGNhbiBiZSBzdG9yZWQgd2hl biBpbnNlcnRpbmcgdGhlIHBnX3N1YnNjcmlwdGlvbiB0dXBsZQorCSAqIGJlbG93LgorCSAqLwor CWlmIChDT05GTElDVFNfTE9HR0VEX1RPX1RBQkxFKG9wdHMuY29uZmxpY3Rsb2dkZXN0KSkKKwkJ bG9ncmVsaWQgPSBjcmVhdGVfY29uZmxpY3RfbG9nX3RhYmxlKHN1YmlkLCBzdG10LT5zdWJuYW1l LCBvd25lcik7CisKKwkvKiBTdG9yZSB0YWJsZSBPSUQgaW4gdGhlIGNhdGFsb2cuICovCisJdmFs dWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmNvbmZsaWN0bG9ncmVsaWQgLSAxXSA9CisJCU9i amVjdElkR2V0RGF0dW0obG9ncmVsaWQpOworCiAJdHVwID0gaGVhcF9mb3JtX3R1cGxlKFJlbGF0 aW9uR2V0RGVzY3IocmVsKSwgdmFsdWVzLCBudWxscyk7CiAKIAkvKiBJbnNlcnQgdHVwbGUgaW50 byBjYXRhbG9nLiAqLwpAQCAtODY4LDYgKzkwOCwyNSBAQCBDcmVhdGVTdWJzY3JpcHRpb24oUGFy c2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQlyZWNvcmRE ZXBlbmRlbmN5T24oJm15c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVOREVOQ1lfTk9STUFMKTsKIAl9 CiAKKwkvKgorCSAqIEVzdGFibGlzaCBhbiBpbnRlcm5hbCBkZXBlbmRlbmN5IGJldHdlZW4gdGhl IGNvbmZsaWN0IGxvZyB0YWJsZSBhbmQgdGhlCisJICogc3Vic2NyaXB0aW9uLgorCSAqCisJICog V2UgdXNlIERFUEVOREVOQ1lfSU5URVJOQUwgdG8gc2lnbmlmeSB0aGF0IHRoZSB0YWJsZSdzIGxp ZmVjeWNsZSBpcworCSAqIHN0cmljdGx5IHRpZWQgdG8gdGhlIHN1YnNjcmlwdGlvbiwgc2ltaWxh ciB0byBob3cgYSBUT0FTVCB0YWJsZSByZWxhdGVzCisJICogdG8gaXRzIG1haW4gdGFibGUgb3Ig YSBzZXF1ZW5jZSByZWxhdGVzIHRvIGFuIGlkZW50aXR5IGNvbHVtbi4KKwkgKgorCSAqIFRoaXMg ZW5zdXJlcyB0aGUgY29uZmxpY3QgbG9nIHRhYmxlIGlzIGF1dG9tYXRpY2FsbHkgcmVhcGVkIGR1 cmluZyBhCisJICogRFJPUCBTVUJTQ1JJUFRJT04gdmlhIHBlcmZvcm1EZWxldGlvbigpLgorCSAq LworCWlmIChPaWRJc1ZhbGlkKGxvZ3JlbGlkKSkKKwl7CisJCU9iamVjdEFkZHJlc3MgY2x0YWRk cjsKKworCQlPYmplY3RBZGRyZXNzU2V0KGNsdGFkZHIsIFJlbGF0aW9uUmVsYXRpb25JZCwgbG9n cmVsaWQpOworCQlyZWNvcmREZXBlbmRlbmN5T24oJmNsdGFkZHIsICZteXNlbGYsIERFUEVOREVO Q1lfSU5URVJOQUwpOworCX0KKwogCS8qCiAJICogQSByZXBsaWNhdGlvbiBvcmlnaW4gaXMgY3Vy cmVudGx5IGNyZWF0ZWQgZm9yIGFsbCBzdWJzY3JpcHRpb25zLAogCSAqIGluY2x1ZGluZyB0aG9z ZSB0aGF0IG9ubHkgY29udGFpbiBzZXF1ZW5jZXMgb3IgYXJlIG90aGVyd2lzZSBlbXB0eS4KQEAg LTE0MzcsNiArMTQ5Niw3MSBAQCBDaGVja0FsdGVyU3ViT3B0aW9uKFN1YnNjcmlwdGlvbiAqc3Vi LCBjb25zdCBjaGFyICpvcHRpb24sCiAJfQogfQogCisvKgorICogYWx0ZXJfc3ViX2NvbmZsaWN0 X2xvZ19kZXN0CisgKgorICogV2hlbiB0aGUgc3Vic2NyaXB0aW9uJ3MgJ2NvbmZsaWN0X2xvZ19k ZXN0aW5hdGlvbicgaXMgY2hhbmdlZCwgdXBkYXRlIHRoZQorICogY29uZmxpY3QgbG9nIHRhYmxl IGlmIHJlcXVpcmVkLgorICoKKyAqIElmIHRoZSBuZXcgZGVzdGluYXRpb24gbm8gbG9uZ2VyIHJl cXVpcmVzIGEgY29uZmxpY3QgbG9nIHRhYmxlLCB0aGUgZXhpc3RpbmcKKyAqIGNvbmZsaWN0IGxv ZyB0YWJsZSBhc3NvY2lhdGVkIHdpdGggdGhlIHN1YnNjcmlwdGlvbiBpcyByZW1vdmVkIHZpYSBp bnRlcm5hbAorICogZGVwZW5kZW5jeSBjbGVhbnVwIHRvIHByZXZlbnQgb3JwaGFuZWQgcmVsYXRp b25zLgorICoKKyAqIE9uIHN1Y2Nlc3MsICpjb25mbGljdHRhYmxlcmVsaWQgaXMgc2V0IHRvIHRo ZSBPSUQgb2YgdGhlIGNvbmZsaWN0IGxvZyB0YWJsZQorICogdGhhdCB3YXMgY3JlYXRlZCBvciB2 YWxpZGF0ZWQsIG9yIHRvIEludmFsaWRPaWQgaWYgbm8gdGFibGUgaXMgcmVxdWlyZWQuCisgKgor ICogUmV0dXJucyB0cnVlIGlmIHRoZSBzdWJzY3JpcHRpb24ncyBjb25mbGljdCBsb2cgdGFibGUg cmVmZXJlbmNlIG11c3QgYmUKKyAqIHVwZGF0ZWQgYXMgYSByZXN1bHQgb2YgdGhlIGRlc3RpbmF0 aW9uIGNoYW5nZTsgZmFsc2Ugb3RoZXJ3aXNlLgorICovCitzdGF0aWMgYm9vbAorYWx0ZXJfc3Vi X2NvbmZsaWN0X2xvZ19kZXN0KFN1YnNjcmlwdGlvbiAqc3ViLCBDb25mbGljdExvZ0Rlc3Qgb2xk bG9nZGVzdCwKKwkJCQkJCQlDb25mbGljdExvZ0Rlc3QgbmV3bG9nZGVzdCwKKwkJCQkJCQlPaWQg KmNvbmZsaWN0dGFibGVyZWxpZCkKK3sKKwlib29sCQl3YW50X3RhYmxlOworCWJvb2wJCWhhc19v bGR0YWJsZTsKKwlib29sCQl1cGRhdGVfcmVsaWQgPSBmYWxzZTsKKwlPaWQJCQlyZWxpZCA9IElu dmFsaWRPaWQ7CisKKwl3YW50X3RhYmxlID0gQ09ORkxJQ1RTX0xPR0dFRF9UT19UQUJMRShuZXds b2dkZXN0KTsKKwloYXNfb2xkdGFibGUgPSBDT05GTElDVFNfTE9HR0VEX1RPX1RBQkxFKG9sZGxv Z2Rlc3QpOworCisJaWYgKGhhc19vbGR0YWJsZSkKKwl7CisJCS8qIFRoZXJlIGlzIGEgY29uZmxp Y3QgbG9nIHRhYmxlIGFscmVhZHkuICovCisJCWlmICghd2FudF90YWJsZSkKKwkJeworCQkJZHJv cF9zdWJfY29uZmxpY3RfbG9nX3RhYmxlKHN1Yi0+b2lkLCBzdWItPm5hbWUsCisJCQkJCQkJCQkJ c3ViLT5jb25mbGljdGxvZ3JlbGlkKTsKKwkJCXVwZGF0ZV9yZWxpZCA9IHRydWU7CisJCX0KKwl9 CisJZWxzZQorCXsKKwkJLyogVGhlcmUgd2FzIG5vIHByZXZpb3VzIGNvbmZsaWN0IGxvZyB0YWJs ZS4gKi8KKwkJaWYgKHdhbnRfdGFibGUpCisJCXsKKwkJCU9iamVjdEFkZHJlc3MgY2x0YWRkcjsK KwkJCU9iamVjdEFkZHJlc3Mgc3Vib2JqOworCisJCQlyZWxpZCA9IGNyZWF0ZV9jb25mbGljdF9s b2dfdGFibGUoc3ViLT5vaWQsIHN1Yi0+bmFtZSwgc3ViLT5vd25lcik7CisJCQl1cGRhdGVfcmVs aWQgPSB0cnVlOworCisJCQkvKgorCQkJICogRXN0YWJsaXNoIGFuIGludGVybmFsIGRlcGVuZGVu Y3kgYmV0d2VlbiB0aGUgY29uZmxpY3QgbG9nIHRhYmxlCisJCQkgKiBhbmQgdGhlIHN1YnNjcmlw dGlvbi4gIEZvciBkZXRhaWxzIHJlZmVyIGNvbW1lbnRzIGluCisJCQkgKiBDcmVhdGVTdWJzY3Jp cHRpb24gZnVuY3Rpb24uCisJCQkgKi8KKwkJCU9iamVjdEFkZHJlc3NTZXQoY2x0YWRkciwgUmVs YXRpb25SZWxhdGlvbklkLCByZWxpZCk7CisJCQlPYmplY3RBZGRyZXNzU2V0KHN1Ym9iaiwgU3Vi c2NyaXB0aW9uUmVsYXRpb25JZCwgc3ViLT5vaWQpOworCQkJcmVjb3JkRGVwZW5kZW5jeU9uKCZj bHRhZGRyLCAmc3Vib2JqLCBERVBFTkRFTkNZX0lOVEVSTkFMKTsKKwkJfQorCX0KKworCSpjb25m bGljdHRhYmxlcmVsaWQgPSByZWxpZDsKKwlyZXR1cm4gdXBkYXRlX3JlbGlkOworfQorCiAvKgog ICogQWx0ZXIgdGhlIGV4aXN0aW5nIHN1YnNjcmlwdGlvbi4KICAqLwpAQCAtMTQ5OSw3ICsxNjIz LDggQEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclN1YnNjcmlw dGlvblN0bXQgKnN0bXQsCiAJCQkJCQkJICBTVUJPUFRfUkVUQUlOX0RFQURfVFVQTEVTIHwKIAkJ CQkJCQkgIFNVQk9QVF9NQVhfUkVURU5USU9OX0RVUkFUSU9OIHwKIAkJCQkJCQkgIFNVQk9QVF9X QUxfUkVDRUlWRVJfVElNRU9VVCB8Ci0JCQkJCQkJICBTVUJPUFRfT1JJR0lOKTsKKwkJCQkJCQkg IFNVQk9QVF9PUklHSU4gfAorCQkJCQkJCSAgU1VCT1BUX0NPTkZMSUNUX0xPR19ERVNUKTsKIAkJ CWJyZWFrOwogCiAJCWNhc2UgQUxURVJfU1VCU0NSSVBUSU9OX0VOQUJMRUQ6CkBAIC0xODU4LDYg KzE5ODMsMzQgQEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclN1 YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJCXJlcGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9u X3N1YndhbHJjdnRpbWVvdXQgLSAxXSA9IHRydWU7CiAJCQkJfQogCisJCQkJaWYgKElzU2V0KG9w dHMuc3BlY2lmaWVkX29wdHMsIFNVQk9QVF9DT05GTElDVF9MT0dfREVTVCkpCisJCQkJeworCQkJ CQlDb25mbGljdExvZ0Rlc3Qgb2xkX2Rlc3QgPQorCQkJCQkJR2V0Q29uZmxpY3RMb2dEZXN0KHN1 Yi0+Y29uZmxpY3Rsb2dkZXN0KTsKKworCQkJCQlpZiAob3B0cy5jb25mbGljdGxvZ2Rlc3QgIT0g b2xkX2Rlc3QpCisJCQkJCXsKKwkJCQkJCWJvb2wJCXVwZGF0ZV9yZWxpZDsKKwkJCQkJCU9pZAkJ CXJlbGlkID0gSW52YWxpZE9pZDsKKworCQkJCQkJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9u X3N1YmNvbmZsaWN0bG9nZGVzdCAtIDFdID0KKwkJCQkJCQlDU3RyaW5nR2V0VGV4dERhdHVtKENv bmZsaWN0TG9nRGVzdE5hbWVzW29wdHMuY29uZmxpY3Rsb2dkZXN0XSk7CisJCQkJCQlyZXBsYWNl c1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJjb25mbGljdGxvZ2Rlc3QgLSAxXSA9IHRydWU7CisK KwkJCQkJCXVwZGF0ZV9yZWxpZCA9IGFsdGVyX3N1Yl9jb25mbGljdF9sb2dfZGVzdChzdWIsCisJ CQkJCQkJCQkJCQkJCQkJICAgb2xkX2Rlc3QsCisJCQkJCQkJCQkJCQkJCQkJICAgb3B0cy5jb25m bGljdGxvZ2Rlc3QsCisJCQkJCQkJCQkJCQkJCQkJICAgJnJlbGlkKTsKKwkJCQkJCWlmICh1cGRh dGVfcmVsaWQpCisJCQkJCQl7CisJCQkJCQkJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1 YmNvbmZsaWN0bG9ncmVsaWQgLSAxXSA9CisJCQkJCQkJCU9iamVjdElkR2V0RGF0dW0ocmVsaWQp OworCQkJCQkJCXJlcGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmNvbmZsaWN0bG9ncmVs aWQgLSAxXSA9CisJCQkJCQkJCXRydWU7CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisKIAkJCQl1 cGRhdGVfdHVwbGUgPSB0cnVlOwogCQkJCWJyZWFrOwogCQkJfQpAQCAtMjI5Nyw2ICsyNDUwLDUx IEBAIGNvbnN0cnVjdF9zdWJzZXJ2ZXJfY29ubmluZm8oT2lkIHN1YnNlcnZlciwgT2lkIHN1Ym93 bmVyLCBjaGFyICoqZXJyKQogCXJldHVybiBGb3JlaWduU2VydmVyQ29ubmVjdGlvblN0cmluZyhz dWJvd25lciwgc2VydmVyKTsKIH0KIAorLyoKKyAqIERyb3Agc3Vic2NyaXB0aW9uJ3MgY29uZmxp Y3QgbG9nIHRhYmxlCisgKgorICogVGhlIGNvbmZsaWN0IGxvZyB0YWJsZSBpcyByZWdpc3RlcmVk IGFzIGFuIGludGVybmFsIGRlcGVuZGVuY3kgb2YgdGhlCisgKiBzdWJzY3JpcHRpb24uIFRoaXMg ZnVuY3Rpb24gcmVtb3ZlcyB0aGUgZGVwZW5kZW5jeSBieSBwZXJmb3JtaW5nIGEKKyAqIGNhc2Nh ZGluZyBkZWxldGlvbiBvbiB0aGUgc3Vic2NyaXB0aW9uIG9iamVjdCwgd2hpY2ggaW4gdHVybiBk cm9wcyB0aGUKKyAqIGFzc29jaWF0ZWQgY29uZmxpY3QgbG9nIHRhYmxlLgorICoKKyAqIFRoaXMg aXMgdXNlZCB0byBjbGVhbiB1cCBjb25mbGljdCBsb2cgdGFibGVzIHRoYXQgYXJlIG5vIGxvbmdl ciByZXF1aXJlZCwKKyAqIHByZXZlbnRpbmcgYWNjdW11bGF0aW9uIG9mIHN0YWxlIG9yIG9ycGhh bmVkIHJlbGF0aW9ucy4KKyAqCisgKiBOT1RFOgorICogT25seSBjb25mbGljdCBsb2cgdGFibGVz IGFyZSBjdXJyZW50bHkgbWFuYWdlZCB2aWEgdGhpcyBpbnRlcm5hbCBkZXBlbmRlbmN5CisgKiBt ZWNoYW5pc20uCisgKi8KK3N0YXRpYyB2b2lkCitkcm9wX3N1Yl9jb25mbGljdF9sb2dfdGFibGUo T2lkIHN1YmlkLCBjaGFyICpzdWJuYW1lLCBPaWQgc3ViY29uZmxpY3Rsb2dyZWxpZCkKK3sKKwkv KiBEcm9wIGFueSBkZXBlbmRlbnQgY29uZmxpY3QgbG9nIHRhYmxlICovCisJaWYgKE9pZElzVmFs aWQoc3ViY29uZmxpY3Rsb2dyZWxpZCkpCisJeworCQlPYmplY3RBZGRyZXNzIG9iamVjdDsKKwkJ Y2hhcgkgICAqY29uZmxpY3RyZWxuYW1lOworCisJCWNvbmZsaWN0cmVsbmFtZSA9IGdldF9yZWxf bmFtZShzdWJjb25mbGljdGxvZ3JlbGlkKTsKKwkJaWYgKGNvbmZsaWN0cmVsbmFtZSA9PSBOVUxM KQorCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHJlbGF0aW9uICV1IiwK KwkJCQkgc3ViY29uZmxpY3Rsb2dyZWxpZCk7CisKKwkJLyoKKwkJICogQnkgdXNpbmcgUEVSRk9S TV9ERUxFVElPTl9TS0lQX09SSUdJTkFMLCB3ZSBlbnN1cmUgdGhhdCBvbmx5IHRoZQorCQkgKiBj b25mbGljdCBsb2cgdGFibGUgaXMgZGVsZXRlZCB3aGlsZSB0aGUgc3Vic2NyaXB0aW9uIHJlbWFp bnMuCisJCSAqLworCQlPYmplY3RBZGRyZXNzU2V0KG9iamVjdCwgU3Vic2NyaXB0aW9uUmVsYXRp b25JZCwgc3ViaWQpOworCQlwZXJmb3JtRGVsZXRpb24oJm9iamVjdCwgRFJPUF9DQVNDQURFLAor CQkJCQkJUEVSRk9STV9ERUxFVElPTl9JTlRFUk5BTCB8CisJCQkJCQlQRVJGT1JNX0RFTEVUSU9O X1NLSVBfT1JJR0lOQUwpOworCisJCWVyZXBvcnQoTk9USUNFLAorCQkJCWVycm1zZygiZHJvcHBl ZCBjb25mbGljdCBsb2cgdGFibGUgXCIlc1wiIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIiwKKwkJ CQkJICAgZ2V0X3F1YWxpZmllZF9vYmpuYW1lKFBHX0NPTkZMSUNUX05BTUVTUEFDRSwgY29uZmxp Y3RyZWxuYW1lKSwKKwkJCQkJICAgc3VibmFtZSkpOworCX0KK30KKwogLyoKICAqIERyb3AgYSBz dWJzY3JpcHRpb24KICAqLwpAQCAtMjMwOSw2ICsyNTA3LDcgQEAgRHJvcFN1YnNjcmlwdGlvbihE cm9wU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVsKQogCU9pZAkJCXN1Ymlk OwogCU9pZAkJCXN1Ym93bmVyOwogCU9pZAkJCXN1YnNlcnZlcjsKKwlPaWQJCQlzdWJjb25mbGlj dGxvZ3JlbGlkOwogCWNoYXIJICAgKnN1YmNvbm5pbmZvID0gTlVMTDsKIAlEYXR1bQkJZGF0dW07 CiAJYm9vbAkJaXNudWxsOwpAQCAtMjM2MSw2ICsyNTYwLDcgQEAgRHJvcFN1YnNjcmlwdGlvbihE cm9wU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVsKQogCXN1YmlkID0gZm9y bS0+b2lkOwogCXN1Ym93bmVyID0gZm9ybS0+c3Vib3duZXI7CiAJc3Vic2VydmVyID0gZm9ybS0+ c3Vic2VydmVyOworCXN1YmNvbmZsaWN0bG9ncmVsaWQgPSBmb3JtLT5zdWJjb25mbGljdGxvZ3Jl bGlkOwogCW11c3RfdXNlX3Bhc3N3b3JkID0gIXN1cGVydXNlcl9hcmcoc3Vib3duZXIpICYmIGZv cm0tPnN1YnBhc3N3b3JkcmVxdWlyZWQ7CiAKIAkvKiBtdXN0IGJlIG93bmVyICovCkBAIC0yNDc4 LDYgKzI2NzgsOSBAQCBEcm9wU3Vic2NyaXB0aW9uKERyb3BTdWJzY3JpcHRpb25TdG10ICpzdG10 LCBib29sIGlzVG9wTGV2ZWwpCiAJCXJlcGxvcmlnaW5fZHJvcF9ieV9uYW1lKG9yaWdpbm5hbWUs IHRydWUsIGZhbHNlKTsKIAl9CiAKKwkvKiBEcm9wIHN1YnNjcmlwdGlvbidzIGNvbmZsaWN0IGxv ZyB0YWJsZSAqLworCWRyb3Bfc3ViX2NvbmZsaWN0X2xvZ190YWJsZShzdWJpZCwgc3VibmFtZSwg c3ViY29uZmxpY3Rsb2dyZWxpZCk7CisKIAkvKiBDbGVhbiB1cCBkZXBlbmRlbmNpZXMgKi8KIAlk ZWxldGVEZXBlbmRlbmN5UmVjb3Jkc0ZvcihTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBzdWJpZCwg ZmFsc2UpOwogCWRlbGV0ZVNoYXJlZERlcGVuZGVuY3lSZWNvcmRzRm9yKFN1YnNjcmlwdGlvblJl bGF0aW9uSWQsIHN1YmlkLCAwKTsKQEAgLTI3MjIsNiArMjkyNSwxMSBAQCBBbHRlclN1YnNjcmlw dGlvbk93bmVyX2ludGVybmFsKFJlbGF0aW9uIHJlbCwgSGVhcFR1cGxlIHR1cCwgT2lkIG5ld093 bmVySWQpCiAJZm9ybS0+c3Vib3duZXIgPSBuZXdPd25lcklkOwogCUNhdGFsb2dUdXBsZVVwZGF0 ZShyZWwsICZ0dXAtPnRfc2VsZiwgdHVwKTsKIAorCS8qIFVwZGF0ZSBvd25lciBvZiB0aGUgY29u ZmxpY3QgbG9nIHRhYmxlIGlmIGl0IGV4aXN0cy4gKi8KKwlpZiAoT2lkSXNWYWxpZChmb3JtLT5z dWJjb25mbGljdGxvZ3JlbGlkKSkKKwkJQVRFeGVjQ2hhbmdlT3duZXIoZm9ybS0+c3ViY29uZmxp Y3Rsb2dyZWxpZCwgbmV3T3duZXJJZCwgdHJ1ZSwKKwkJCQkJCSAgQWNjZXNzRXhjbHVzaXZlTG9j ayk7CisKIAkvKiBVcGRhdGUgb3duZXIgZGVwZW5kZW5jeSByZWZlcmVuY2UgKi8KIAljaGFuZ2VE ZXBlbmRlbmN5T25Pd25lcihTdWJzY3JpcHRpb25SZWxhdGlvbklkLAogCQkJCQkJCWZvcm0tPm9p ZCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggNDcyZGIxMTJmYTcuLjk1YWJhZjQ4OTBj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMjQ2NCw5ICsyNDY0LDExIEBAIHRydW5j YXRlX2NoZWNrX3JlbChPaWQgcmVsaWQsIEZvcm1fcGdfY2xhc3MgcmVsdHVwbGUpCiAJICogcGdf bGFyZ2VvYmplY3QgYW5kIHBnX2xhcmdlb2JqZWN0X21ldGFkYXRhIHRvIGJlIHRydW5jYXRlZCBh cyBwYXJ0IG9mCiAJICogcGdfdXBncmFkZSwgYmVjYXVzZSB3ZSBuZWVkIHRvIGNoYW5nZSBpdHMg cmVsZmlsZW5vZGUgdG8gbWF0Y2ggdGhlIG9sZAogCSAqIGNsdXN0ZXIsIGFuZCBhbGxvd2luZyBh IFRSVU5DQVRFIGNvbW1hbmQgdG8gYmUgZXhlY3V0ZWQgaXMgdGhlIGVhc2llc3QKLQkgKiB3YXkg b2YgZG9pbmcgdGhhdC4KKwkgKiB3YXkgb2YgZG9pbmcgdGhhdC4gV2UgYWxzbyBhbGxvdyBUUlVO Q0FURSBvbiB0aGUgY29uZmxpY3QgbG9nIHRhYmxlcywKKwkgKiB0byBwZXJtaXQgdXNlcnMgdG8g bWFudWFsbHkgcHJ1bmUgY29uZmxpY3QgZGF0YSB0byBtYW5hZ2UgZGlzayBzcGFjZS4KIAkgKi8K LQlpZiAoIWFsbG93U3lzdGVtVGFibGVNb2RzICYmIElzU3lzdGVtQ2xhc3MocmVsaWQsIHJlbHR1 cGxlKQorCWlmICghYWxsb3dTeXN0ZW1UYWJsZU1vZHMgJiYgSXNTeXN0ZW1DbGFzcyhyZWxpZCwg cmVsdHVwbGUpICYmCisJCSFJc0NvbmZsaWN0TG9nVGFibGVDbGFzcyhyZWx0dXBsZSkKIAkJJiYg KCFJc0JpbmFyeVVwZ3JhZGUgfHwKIAkJCShyZWxpZCAhPSBMYXJnZU9iamVjdFJlbGF0aW9uSWQg JiYKIAkJCSByZWxpZCAhPSBMYXJnZU9iamVjdE1ldGFkYXRhUmVsYXRpb25JZCkpKQpAQCAtMjc1 NSw2ICsyNzU3LDE4IEBAIE1lcmdlQXR0cmlidXRlcyhMaXN0ICpjb2x1bW5zLCBjb25zdCBMaXN0 ICpzdXBlcnMsIGNoYXIgcmVscGVyc2lzdGVuY2UsCiAJCQkJCSBlcnJtc2coImNhbm5vdCBpbmhl cml0IGZyb20gcGFydGl0aW9uIFwiJXNcIiIsCiAJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUocmVsYXRpb24pKSkpOwogCisJCS8qCisJCSAqIENvbmZsaWN0IGxvZyB0YWJsZXMgYXJlIG1h bmFnZWQgYnkgdGhlIHN5c3RlbSBmb3IgbG9naWNhbAorCQkgKiByZXBsaWNhdGlvbiBhbmQgc2hv dWxkIG5vdCBiZSB1c2VkIGFzIHBhcmVudCB0YWJsZXMsIGFzIGluaGVyaXRhbmNlCisJCSAqIGNv dWxkIGludGVyZmVyZSB3aXRoIHRoZSBsb2dnaW5nIGJlaGF2aW9yLgorCQkgKi8KKwkJaWYgKElz Q29uZmxpY3RMb2dUYWJsZU5hbWVzcGFjZShyZWxhdGlvbi0+cmRfcmVsLT5yZWxuYW1lc3BhY2Up KQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1Rf VFlQRSksCisJCQkJCSBlcnJtc2coImNhbm5vdCBpbmhlcml0IGZyb20gY29uZmxpY3QgbG9nIHRh YmxlIFwiJXNcIiIsCisJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pKSwK KwkJCQkJIGVycmRldGFpbCgiQ29uZmxpY3QgbG9nIHRhYmxlcyBhcmUgc3lzdGVtLW1hbmFnZWQg dGFibGVzIGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uIGNvbmZsaWN0cy4iKSkpOworCiAJCWlmIChy ZWxhdGlvbi0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfUkVMQVRJT04gJiYKIAkJCXJlbGF0 aW9uLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9GT1JFSUdOX1RBQkxFICYmCiAJCQlyZWxh dGlvbi0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCkBAIC0z ODkyLDYgKzM5MDYsMTkgQEAgcmVuYW1lYXR0X2NoZWNrKE9pZCBteXJlbGlkLCBGb3JtX3BnX2Ns YXNzIGNsYXNzZm9ybSwgYm9vbCByZWN1cnNpbmcpCiAJaWYgKCFvYmplY3Rfb3duZXJjaGVjayhS ZWxhdGlvblJlbGF0aW9uSWQsIG15cmVsaWQsIEdldFVzZXJJZCgpKSkKIAkJYWNsY2hlY2tfZXJy b3IoQUNMQ0hFQ0tfTk9UX09XTkVSLCBnZXRfcmVsa2luZF9vYmp0eXBlKGdldF9yZWxfcmVsa2lu ZChteXJlbGlkKSksCiAJCQkJCSAgIE5hbWVTdHIoY2xhc3Nmb3JtLT5yZWxuYW1lKSk7CisKKwkv KgorCSAqIENvbmZsaWN0IGxvZyB0YWJsZXMgYXJlIHVzZWQgaW50ZXJuYWxseSBmb3IgbG9naWNh bCByZXBsaWNhdGlvbgorCSAqIGNvbmZsaWN0IGxvZ2dpbmcgYW5kIHNob3VsZCBub3QgYmUgbW9k aWZpZWQgZGlyZWN0bHksIGFzIGl0IGNvdWxkCisJICogZGlzcnVwdCBjb25mbGljdCBsb2dnaW5n LgorCSAqLworCWlmIChJc0NvbmZsaWN0TG9nVGFibGVDbGFzcyhjbGFzc2Zvcm0pKQorCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJ CSBlcnJtc2coImNhbm5vdCByZW5hbWUgY29sdW1ucyBvZiBjb25mbGljdCBsb2cgdGFibGUgXCIl c1wiIiwKKwkJCQkJCU5hbWVTdHIoY2xhc3Nmb3JtLT5yZWxuYW1lKSksCisJCQkJIGVycmRldGFp bCgiQ29uZmxpY3QgbG9nIHRhYmxlcyBhcmUgc3lzdGVtLW1hbmFnZWQgdGFibGVzIGZvciBsb2dp Y2FsIHJlcGxpY2F0aW9uIGNvbmZsaWN0cy4iKSkpOworCiAJaWYgKCFhbGxvd1N5c3RlbVRhYmxl TW9kcyAmJiBJc1N5c3RlbUNsYXNzKG15cmVsaWQsIGNsYXNzZm9ybSkpCiAJCWVyZXBvcnQoRVJS T1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKQEAgLTY4 OTQsNiArNjkyMSwyMiBAQCBBVFNpbXBsZVBlcm1pc3Npb25zKEFsdGVyVGFibGVUeXBlIGNtZHR5 cGUsIFJlbGF0aW9uIHJlbCwgaW50IGFsbG93ZWRfdGFyZ2V0cykKIAkJYWNsY2hlY2tfZXJyb3Io QUNMQ0hFQ0tfTk9UX09XTkVSLCBnZXRfcmVsa2luZF9vYmp0eXBlKHJlbC0+cmRfcmVsLT5yZWxr aW5kKSwKIAkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSk7CiAKKwkvKgorCSAq IENvbmZsaWN0IGxvZyB0YWJsZXMgYXJlIHVzZWQgaW50ZXJuYWxseSBmb3IgbG9naWNhbCByZXBs aWNhdGlvbgorCSAqIGNvbmZsaWN0IGxvZ2dpbmcgYW5kIHNob3VsZCBub3QgYmUgYWx0ZXJlZCBk aXJlY3RseSwgYXMgaXQgY291bGQKKwkgKiBkaXNydXB0IGNvbmZsaWN0IGxvZ2dpbmcuIERpcmVj dCBBTFRFUiBjb21tYW5kcyBhcmUgYWxyZWFkeSByZWplY3RlZAorCSAqIGR1cmluZyByZWxhdGlv biBsb29rdXAgaW4gUmFuZ2VWYXJDYWxsYmFja0ZvckFsdGVyUmVsYXRpb24oKSwgYW5kCisJICog QWx0ZXJUYWJsZU1vdmVBbGwoKSBza2lwcyB0aGVzZSB0YWJsZXMsIHNvIGEgY29uZmxpY3QgbG9n IHRhYmxlIGRvZXMKKwkgKiBub3Qgbm9ybWFsbHkgcmVhY2ggaGVyZTsgdGhpcyBjaGVjayBndWFy ZHMgYW55IGludGVybmFsIGNhbGxlciB0aGF0CisJICogYXJyaXZlcyB2aWEgQWx0ZXJUYWJsZUlu dGVybmFsKCkuCisJICovCisJaWYgKElzQ29uZmxpY3RMb2dUYWJsZUNsYXNzKHJlbC0+cmRfcmVs KSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9U WVBFKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgYWx0ZXIgY29uZmxpY3QgbG9nIHRhYmxlIFwiJXNc IiIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSwKKwkJCQkgZXJyZGV0YWls KCJDb25mbGljdCBsb2cgdGFibGVzIGFyZSBzeXN0ZW0tbWFuYWdlZCB0YWJsZXMgZm9yIGxvZ2lj YWwgcmVwbGljYXRpb24gY29uZmxpY3RzLiIpKSk7CisKIAlpZiAoIWFsbG93U3lzdGVtVGFibGVN b2RzICYmIElzU3lzdGVtUmVsYXRpb24ocmVsKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJy Y29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLApAQCAtMTAyMDMsNiArMTAyNDYs MTggQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFi bGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJCQkgZXJybXNnKCJyZWZlcmVuY2VkIHJlbGF0 aW9uIFwiJXNcIiBpcyBub3QgYSB0YWJsZSIsCiAJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShwa3JlbCkpKSk7CiAKKwkvKgorCSAqIENvbmZsaWN0IGxvZyB0YWJsZXMgYXJlIHVzZWQgaW50 ZXJuYWxseSBmb3IgbG9naWNhbCByZXBsaWNhdGlvbgorCSAqIGNvbmZsaWN0IGxvZ2dpbmcgYW5k IHNob3VsZCBub3QgYmUgcmVmZXJlbmNlZCBieSBmb3JlaWduIGtleXMsIGFzIGl0CisJICogY291 bGQgZGlzcnVwdCBjb25mbGljdCBsb2dnaW5nLgorCSAqLworCWlmIChJc0NvbmZsaWN0TG9nVGFi bGVDbGFzcyhwa3JlbC0+cmRfcmVsKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShF UlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgcmVmZXJlbmNl IGNvbmZsaWN0IGxvZyB0YWJsZSBcIiVzXCIiLAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUocGtyZWwpKSwKKwkJCQkgZXJyZGV0YWlsKCJDb25mbGljdCBsb2cgdGFibGVzIGFyZSBzeXN0 ZW0tbWFuYWdlZCB0YWJsZXMgZm9yIGxvZ2ljYWwgcmVwbGljYXRpb24gY29uZmxpY3RzLiIpKSk7 CisKIAlpZiAoIWFsbG93U3lzdGVtVGFibGVNb2RzICYmIElzU3lzdGVtUmVsYXRpb24ocGtyZWwp KQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BS SVZJTEVHRSksCkBAIC0xNzUzOSwxMyArMTc1OTQsMTkgQEAgQWx0ZXJUYWJsZU1vdmVBbGwoQWx0 ZXJUYWJsZU1vdmVBbGxTdG10ICpzdG10KQogCQkgKiByZWFsbHkgd2lzaGVzIHRvIGRvIHNvLCB0 aGV5IGNhbiBpc3N1ZSB0aGUgaW5kaXZpZHVhbCBBTFRFUgogCQkgKiBjb21tYW5kcyBkaXJlY3Rs eS4KIAkJICoKLQkJICogQWxzbywgZXhwbGljaXRseSBhdm9pZCBhbnkgc2hhcmVkIHRhYmxlcywg dGVtcCB0YWJsZXMsIG9yIFRPQVNUCi0JCSAqIChUT0FTVCB3aWxsIGJlIG1vdmVkIHdpdGggdGhl IG1haW4gdGFibGUpLgorCQkgKiBBbHNvLCBleHBsaWNpdGx5IGF2b2lkIGFueSBzaGFyZWQgdGFi bGVzLCB0ZW1wIHRhYmxlcywgVE9BU1QgKFRPQVNUCisJCSAqIHdpbGwgYmUgbW92ZWQgd2l0aCB0 aGUgbWFpbiB0YWJsZSkuCisJCSAqCisJCSAqIENvbmZsaWN0IGxvZyB0YWJsZXMgYXJlIHN5c3Rl bS1tYW5hZ2VkIGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uIGFuZAorCQkgKiBjYW5ub3QgYmUgYWx0 ZXJlZCBkaXJlY3RseSwgc28gc2tpcCB0aGVtIGFzIHdlbGw7IG90aGVyd2lzZSBhCisJCSAqIHNp bmdsZSBzdWNoIHRhYmxlIGluIHRoZSBzb3VyY2UgdGFibGVzcGFjZSB3b3VsZCBhYm9ydCB0aGUg d2hvbGUKKwkJICogYnVsayBtb3ZlLgogCQkgKi8KIAkJaWYgKElzQ2F0YWxvZ05hbWVzcGFjZShy ZWxGb3JtLT5yZWxuYW1lc3BhY2UpIHx8CiAJCQlyZWxGb3JtLT5yZWxpc3NoYXJlZCB8fAogCQkJ aXNBbnlUZW1wTmFtZXNwYWNlKHJlbEZvcm0tPnJlbG5hbWVzcGFjZSkgfHwKLQkJCUlzVG9hc3RO YW1lc3BhY2UocmVsRm9ybS0+cmVsbmFtZXNwYWNlKSkKKwkJCUlzVG9hc3ROYW1lc3BhY2UocmVs Rm9ybS0+cmVsbmFtZXNwYWNlKSB8fAorCQkJSXNDb25mbGljdExvZ1RhYmxlTmFtZXNwYWNlKHJl bEZvcm0tPnJlbG5hbWVzcGFjZSkpCiAJCQljb250aW51ZTsKIAogCQkvKiBPbmx5IG1vdmUgdGhl IG9iamVjdCB0eXBlIHJlcXVlc3RlZCAqLwpAQCAtMjAwMzQsNiArMjAwOTUsMTggQEAgUmFuZ2VW YXJDYWxsYmFja093bnNSZWxhdGlvbihjb25zdCBSYW5nZVZhciAqcmVsYXRpb24sCiAJCWFjbGNo ZWNrX2Vycm9yKEFDTENIRUNLX05PVF9PV05FUiwgZ2V0X3JlbGtpbmRfb2JqdHlwZShnZXRfcmVs X3JlbGtpbmQocmVsSWQpKSwKIAkJCQkJICAgcmVsYXRpb24tPnJlbG5hbWUpOwogCisJLyoKKwkg KiBDb25mbGljdCBsb2cgdGFibGVzIGFyZSB1c2VkIGludGVybmFsbHkgZm9yIGxvZ2ljYWwgcmVw bGljYXRpb24KKwkgKiBjb25mbGljdCBsb2dnaW5nIGFuZCBzaG91bGQgbm90IGJlIG1vZGlmaWVk IGRpcmVjdGx5LCBhcyBpdCBjb3VsZAorCSAqIGRpc3J1cHQgY29uZmxpY3QgbG9nZ2luZy4KKwkg Ki8KKwlpZiAoSXNDb25mbGljdExvZ1RhYmxlQ2xhc3MoKEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVD VCh0dXBsZSkpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdf T0JKRUNUX1RZUEUpLAorCQkJCSBlcnJtc2coImNhbm5vdCBjaGFuZ2UgY29uZmxpY3QgbG9nIHRh YmxlIFwiJXNcIiIsCisJCQkJCQlyZWxhdGlvbi0+cmVsbmFtZSksCisJCQkJIGVycmRldGFpbCgi Q29uZmxpY3QgbG9nIHRhYmxlcyBhcmUgc3lzdGVtLW1hbmFnZWQgdGFibGVzIGZvciBsb2dpY2Fs IHJlcGxpY2F0aW9uIGNvbmZsaWN0cy4iKSkpOworCiAJaWYgKCFhbGxvd1N5c3RlbVRhYmxlTW9k cyAmJgogCQlJc1N5c3RlbUNsYXNzKHJlbElkLCAoRm9ybV9wZ19jbGFzcykgR0VUU1RSVUNUKHR1 cGxlKSkpCiAJCWVyZXBvcnQoRVJST1IsCkBAIC0yMDA2OSw2ICsyMDE0MiwxOCBAQCBSYW5nZVZh ckNhbGxiYWNrRm9yQWx0ZXJSZWxhdGlvbihjb25zdCBSYW5nZVZhciAqcnYsIE9pZCByZWxpZCwg T2lkIG9sZHJlbGlkLAogCWlmICghb2JqZWN0X293bmVyY2hlY2soUmVsYXRpb25SZWxhdGlvbklk LCByZWxpZCwgR2V0VXNlcklkKCkpKQogCQlhY2xjaGVja19lcnJvcihBQ0xDSEVDS19OT1RfT1dO RVIsIGdldF9yZWxraW5kX29ianR5cGUoZ2V0X3JlbF9yZWxraW5kKHJlbGlkKSksIHJ2LT5yZWxu YW1lKTsKIAorCS8qCisJICogQ29uZmxpY3QgbG9nIHRhYmxlcyBhcmUgdXNlZCBpbnRlcm5hbGx5 IGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uCisJICogY29uZmxpY3QgbG9nZ2luZyBhbmQgc2hvdWxk IG5vdCBiZSBhbHRlcmVkIGRpcmVjdGx5LCBhcyBpdCBjb3VsZAorCSAqIGRpc3J1cHQgY29uZmxp Y3QgbG9nZ2luZy4KKwkgKi8KKwlpZiAoSXNDb25mbGljdExvZ1RhYmxlQ2xhc3MoY2xhc3Nmb3Jt KSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9U WVBFKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgYWx0ZXIgY29uZmxpY3QgbG9nIHRhYmxlIFwiJXNc IiIsCisJCQkJCQlydi0+cmVsbmFtZSksCisJCQkJIGVycmRldGFpbCgiQ29uZmxpY3QgbG9nIHRh YmxlcyBhcmUgc3lzdGVtLW1hbmFnZWQgdGFibGVzIGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uIGNv bmZsaWN0cy4iKSkpOworCiAJLyogTm8gc3lzdGVtIHRhYmxlIG1vZGlmaWNhdGlvbnMgdW5sZXNz IGV4cGxpY2l0bHkgYWxsb3dlZC4gKi8KIAlpZiAoIWFsbG93U3lzdGVtVGFibGVNb2RzICYmIElz U3lzdGVtQ2xhc3MocmVsaWQsIGNsYXNzZm9ybSkpCiAJCWVyZXBvcnQoRVJST1IsCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy90cmlnZ2VyLmMKaW5kZXggYjg3YjRiNDBkMDcuLjQwMWJhZGRiZmM2IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv dHJpZ2dlci5jCkBAIC0zMTQsNiArMzE0LDE4IEBAIENyZWF0ZVRyaWdnZXJGaXJpbmdPbihjb25z dCBDcmVhdGVUcmlnU3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCQkJCQlS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSwKIAkJCQkgZXJyZGV0YWlsX3JlbGtpbmRfbm90 X3N1cHBvcnRlZChyZWwtPnJkX3JlbC0+cmVsa2luZCkpKTsKIAorCS8qCisJICogQ29uZmxpY3Qg bG9nIHRhYmxlcyBhcmUgdXNlZCBpbnRlcm5hbGx5IGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uCisJ ICogY29uZmxpY3QgbG9nZ2luZyBhbmQgc2hvdWxkIG5vdCBoYXZlIHRyaWdnZXJzLCBhcyBpdCBj b3VsZCBkaXNydXB0CisJICogY29uZmxpY3QgbG9nZ2luZy4KKwkgKi8KKwlpZiAoSXNDb25mbGlj dExvZ1RhYmxlQ2xhc3MocmVsLT5yZF9yZWwpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJj b2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCSBlcnJtc2coImNhbm5vdCBjcmVh dGUgdHJpZ2dlciBvbiBjb25mbGljdCBsb2cgdGFibGUgXCIlc1wiIiwKKwkJCQkJCVJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHJlbCkpLAorCQkJCSBlcnJkZXRhaWwoIkNvbmZsaWN0IGxvZyB0YWJs ZXMgYXJlIHN5c3RlbS1tYW5hZ2VkIHRhYmxlcyBmb3IgbG9naWNhbCByZXBsaWNhdGlvbiBjb25m bGljdHMuIikpKTsKKwogCWlmICghYWxsb3dTeXN0ZW1UYWJsZU1vZHMgJiYgSXNTeXN0ZW1SZWxh dGlvbihyZWwpKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZG SUNJRU5UX1BSSVZJTEVHRSksCkBAIC0xNDQzLDYgKzE0NTUsMTkgQEAgUmFuZ2VWYXJDYWxsYmFj a0ZvclJlbmFtZVRyaWdnZXIoY29uc3QgUmFuZ2VWYXIgKnJ2LCBPaWQgcmVsaWQsIE9pZCBvbGRy ZWxpZCwKIAkvKiB5b3UgbXVzdCBvd24gdGhlIHRhYmxlIHRvIHJlbmFtZSBvbmUgb2YgaXRzIHRy aWdnZXJzICovCiAJaWYgKCFvYmplY3Rfb3duZXJjaGVjayhSZWxhdGlvblJlbGF0aW9uSWQsIHJl bGlkLCBHZXRVc2VySWQoKSkpCiAJCWFjbGNoZWNrX2Vycm9yKEFDTENIRUNLX05PVF9PV05FUiwg Z2V0X3JlbGtpbmRfb2JqdHlwZShnZXRfcmVsX3JlbGtpbmQocmVsaWQpKSwgcnYtPnJlbG5hbWUp OworCisJLyoKKwkgKiBDb25mbGljdCBsb2cgdGFibGVzIGFyZSB1c2VkIGludGVybmFsbHkgZm9y IGxvZ2ljYWwgcmVwbGljYXRpb24KKwkgKiBjb25mbGljdCBsb2dnaW5nIGFuZCBzaG91bGQgbm90 IGhhdmUgdHJpZ2dlcnMsIGFzIGl0IGNvdWxkIGRpc3J1cHQKKwkgKiBjb25mbGljdCBsb2dnaW5n LgorCSAqLworCWlmIChJc0NvbmZsaWN0TG9nVGFibGVDbGFzcyhmb3JtKSkKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkgZXJy bXNnKCJjYW5ub3QgcmVuYW1lIHRyaWdnZXIgb24gY29uZmxpY3QgbG9nIHRhYmxlIFwiJXNcIiIs CisJCQkJCQlydi0+cmVsbmFtZSksCisJCQkJIGVycmRldGFpbCgiQ29uZmxpY3QgbG9nIHRhYmxl cyBhcmUgc3lzdGVtLW1hbmFnZWQgdGFibGVzIGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uIGNvbmZs aWN0cy4iKSkpOworCiAJaWYgKCFhbGxvd1N5c3RlbVRhYmxlTW9kcyAmJiBJc1N5c3RlbUNsYXNz KHJlbGlkLCBmb3JtKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lO U1VGRklDSUVOVF9QUklWSUxFR0UpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggYzNhZjk2 OTg5YmEuLmZkZTUwMmVmZDM4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj TWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTExOTYsNiAr MTE5NiwyNCBAQCBDaGVja1ZhbGlkUmVzdWx0UmVsKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbElu Zm8sIENtZFR5cGUgb3BlcmF0aW9uLAogCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJl c3VsdFJlbCkpKSk7CiAJCQlicmVhazsKIAl9CisKKwkvKgorCSAqIENvbmZsaWN0IGxvZyB0YWJs ZXMgYXJlIG1hbmFnZWQgYnkgdGhlIHN5c3RlbSB0byByZWNvcmQgbG9naWNhbAorCSAqIHJlcGxp Y2F0aW9uIGNvbmZsaWN0cy4gIFdlIGFsbG93IERFTEVURSBhbmQgVFJVTkNBVEUgdG8gcGVybWl0 IHVzZXJzIHRvCisJICogbWFudWFsbHkgcHJ1bmUgdGhlc2UgbG9ncywgYnV0IG1hbnVhbCBkYXRh IGluc2VydGlvbiBvciBtb2RpZmljYXRpb24KKwkgKiAoSU5TRVJULCBVUERBVEUsIE1FUkdFKSBp cyBwcm9oaWJpdGVkIHRvIG1haW50YWluIHRoZSBpbnRlZ3JpdHkgb2YgdGhlCisJICogc3lzdGVt LWdlbmVyYXRlZCBsb2dzLgorCSAqCisJICogU2luY2UgVFJVTkNBVEUgaXMgaGFuZGxlZCBhcyBh IHNlcGFyYXRlIHV0aWxpdHkgY29tbWFuZCwgd2Ugb25seSBuZWVkCisJICogdG8gZXhwbGljaXRs eSBwZXJtaXQgQ01EX0RFTEVURSBoZXJlLgorCSAqLworCWlmIChJc0NvbmZsaWN0TG9nVGFibGVO YW1lc3BhY2UoUmVsYXRpb25HZXROYW1lc3BhY2UocmVzdWx0UmVsKSkgJiYKKwkJb3BlcmF0aW9u ICE9IENNRF9ERUxFVEUpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9X Uk9OR19PQkpFQ1RfVFlQRSksCisJCQkJIGVycm1zZygiY2Fubm90IG1vZGlmeSBvciBpbnNlcnQg ZGF0YSBpbnRvIGNvbmZsaWN0IGxvZyB0YWJsZSBcIiVzXCIiLAorCQkJCQkJUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUocmVzdWx0UmVsKSksCisJCQkJIGVycmRldGFpbCgiQ29uZmxpY3QgbG9nIHRh YmxlcyBhcmUgc3lzdGVtLW1hbmFnZWQgYW5kIG9ubHkgc3VwcG9ydCBjbGVhbnVwIHVzaW5nIERF TEVURSBvciBUUlVOQ0FURS4iKSkpOwogfQogCiAvKgpAQCAtMTI2Nyw2ICsxMjg1LDE2IEBAIENo ZWNrVmFsaWRSb3dNYXJrUmVsKFJlbGF0aW9uIHJlbCwgUm93TWFya1R5cGUgbWFya1R5cGUpCiAJ CQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKIAkJCWJyZWFrOwogCX0KKwor CS8qCisJICogQ29uZmxpY3QgbG9nIHRhYmxlcyBhcmUgbWFuYWdlZCBieSB0aGUgc3lzdGVtIHRv IHJlY29yZCBsb2dpY2FsCisJICogcmVwbGljYXRpb24gY29uZmxpY3RzLgorCSAqLworCWlmIChJ c0NvbmZsaWN0TG9nVGFibGVOYW1lc3BhY2UoUmVsYXRpb25HZXROYW1lc3BhY2UocmVsKSkpCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSks CisJCQkJIGVycm1zZygiY2Fubm90IGxvY2sgcm93cyBpbiB0aGUgY29uZmxpY3QgbG9nIHRhYmxl IFwiJXNcIiIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOwogfQogCiAv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9jb25mbGljdC5j IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9jb25mbGljdC5jCmluZGV4IDFmOGQ2 N2ZkZDkwLi4yMzk3MTQ0MDQ1MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9jb25mbGljdC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv Y29uZmxpY3QuYwpAQCAtMTcsNiArMTcsMTAgQEAKICNpbmNsdWRlICJhY2Nlc3MvY29tbWl0X3Rz LmgiCiAjaW5jbHVkZSAiYWNjZXNzL2dlbmFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0u aCIKKyNpbmNsdWRlICJjYXRhbG9nL2hlYXAuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2FtLmgi CisjaW5jbHVkZSAiY2F0YWxvZy9wZ19uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3Rv YXN0aW5nLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJwZ3N0 YXQuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9jb25mbGljdC5oIgpAQCAtMjQsNiArMjgsNTkg QEAKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUu aCIKIAorLyoKKyAqIFN0cmluZyByZXByZXNlbnRhdGlvbnMgZm9yIHRoZSBzdXBwb3J0ZWQgY29u ZmxpY3QgbG9nZ2luZyBkZXN0aW5hdGlvbnMuCisgKi8KK2NvbnN0IGNoYXIgKmNvbnN0IENvbmZs aWN0TG9nRGVzdE5hbWVzW10gPSB7CisJW0NPTkZMSUNUX0xPR19ERVNUX0xPR10gPSAibG9nIiwK KwlbQ09ORkxJQ1RfTE9HX0RFU1RfVEFCTEVdID0gInRhYmxlIiwKKwlbQ09ORkxJQ1RfTE9HX0RF U1RfQUxMXSA9ICJhbGwiCit9OworCitTdGF0aWNBc3NlcnREZWNsKGxlbmd0aG9mKENvbmZsaWN0 TG9nRGVzdE5hbWVzKSA9PSBDT05GTElDVF9MT0dfREVTVF9BTEwgKyAxLAorCQkJCSAiQ29uZmxp Y3RMb2dEZXN0TmFtZXMgbGVuZ3RoIG1pc21hdGNoIik7CisKKworLyogU3RydWN0dXJlIHRvIGhv bGQgbWV0YWRhdGEgZm9yIG9uZSBjb2x1bW4gb2YgdGhlIGNvbmZsaWN0IGxvZyB0YWJsZSAqLwor dHlwZWRlZiBzdHJ1Y3QgQ29uZmxpY3RMb2dDb2x1bW5EZWYKK3sKKwljb25zdCBjaGFyICphdHRu YW1lOwkJLyogQ29sdW1uIG5hbWUgKi8KKwlPaWQJCQlhdHR0eXBpZDsJCS8qIERhdGEgdHlwZSBP SUQgKi8KK30gQ29uZmxpY3RMb2dDb2x1bW5EZWY7CisKKy8qCisgKiBTY2hlbWEgZGVmaW5pdGlv biBmb3IgY29uZmxpY3QgbG9nIHRhYmxlcy4KKyAqCisgKiBEZWZpbmVzIHRoZSBmaXhlZCBzY2hl bWEgb2YgdGhlIHBlci1zdWJzY3JpcHRpb24gY29uZmxpY3QgbG9nIHRhYmxlIGNyZWF0ZWQKKyAq IGluIHRoZSBwZ19jb25mbGljdCBuYW1lc3BhY2UuIEVhY2ggZW50cnkgc3BlY2lmaWVzIHRoZSBj b2x1bW4gbmFtZSBhbmQgaXRzCisgKiB0eXBlIE9JRDsgdGhlIHRhYmxlIGlzIGNyZWF0ZWQgaW4g dGhpcyBjb2x1bW4gb3JkZXIgYnkKKyAqIGNyZWF0ZV9jb25mbGljdF9sb2dfdGFibGUoKS4KKyAq CisgKiBUaGUgdHVwbGUva2V5IGNvbHVtbnMgKHJlcGxpY2FfaWRlbnRpdHksIHJlbW90ZV90dXBs ZSwgbG9jYWxfY29uZmxpY3RzKSBhcmUKKyAqIHR5cGVkIGpzb24gcmF0aGVyIHRoYW4ganNvbmIg b24gcHVycG9zZTogdGhleSBob2xkIGFuIGV4YWN0IGF1ZGl0IHNuYXBzaG90CisgKiBvZiB0aGUg YXBwbGllZCB0dXBsZXMgYW5kIHJlcGxpY2EgaWRlbnRpdHksIGFuZCBqc29uIHByZXNlcnZlcyB0 aGUgdmVyYmF0aW0KKyAqIHJlcHJlc2VudGF0aW9uIHdoZXJlYXMganNvbmIgd291bGQgbm9ybWFs aXplIGl0LiBJbmRleGluZyB0aGVtIChqc29uYidzIG1haW4KKyAqIGFkdmFudGFnZSkgd291bGRu J3QgaGVscCBhbnl3YXksIGFzIHRoZSBjb25mbGljdCBsb2cgaXMgbG9va2VkIHVwIGJ5IGl0cwor ICogc2NhbGFyIGNvbHVtbnMgKHJlbGlkLCBjb25mbGljdF90eXBlLCBjb21taXQgdGltZXN0YW1w KSB3aGlsZSB0aGVzZSBqc29uCisgKiBjb2x1bW5zIGFyZSBwZXItY29uZmxpY3QgcGF5bG9hZCB0 byBpbnNwZWN0LCBub3Qgc2VhcmNoIGtleXMuCisgKi8KK3N0YXRpYyBjb25zdCBDb25mbGljdExv Z0NvbHVtbkRlZiBDb25mbGljdExvZ1NjaGVtYVtdID0geworCXsuYXR0bmFtZSA9ICJyZWxpZCIs IC5hdHR0eXBpZCA9IE9JRE9JRH0sCisJey5hdHRuYW1lID0gInNjaGVtYW5hbWUiLCAuYXR0dHlw aWQgPSBURVhUT0lEfSwKKwl7LmF0dG5hbWUgPSAicmVsbmFtZSIsIC5hdHR0eXBpZCA9IFRFWFRP SUR9LAorCXsuYXR0bmFtZSA9ICJjb25mbGljdF90eXBlIiwgLmF0dHR5cGlkID0gVEVYVE9JRH0s CisJey5hdHRuYW1lID0gInJlbW90ZV94aWQiLCAuYXR0dHlwaWQgPSBYSURPSUR9LAorCXsuYXR0 bmFtZSA9ICJyZW1vdGVfY29tbWl0X2xzbiIsIC5hdHR0eXBpZCA9IExTTk9JRH0sCisJey5hdHRu YW1lID0gInJlbW90ZV9jb21taXRfdHMiLCAuYXR0dHlwaWQgPSBUSU1FU1RBTVBUWk9JRH0sCisJ ey5hdHRuYW1lID0gInJlbW90ZV9vcmlnaW4iLCAuYXR0dHlwaWQgPSBURVhUT0lEfSwKKwl7LmF0 dG5hbWUgPSAicmVwbGljYV9pZGVudGl0eV9mdWxsIiwgLmF0dHR5cGlkID0gQk9PTE9JRH0sCisJ ey5hdHRuYW1lID0gInJlcGxpY2FfaWRlbnRpdHkiLCAuYXR0dHlwaWQgPSBKU09OT0lEfSwKKwl7 LmF0dG5hbWUgPSAicmVtb3RlX3R1cGxlIiwgLmF0dHR5cGlkID0gSlNPTk9JRH0sCisJey5hdHRu YW1lID0gImxvY2FsX2NvbmZsaWN0cyIsIC5hdHR0eXBpZCA9IEpTT05BUlJBWU9JRH0KK307CisK KyNkZWZpbmUgTlVNX0NPTkZMSUNUX0FUVFJTIGxlbmd0aG9mKENvbmZsaWN0TG9nU2NoZW1hKQor CiBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgQ29uZmxpY3RUeXBlTmFtZXNbXSA9IHsKIAlbQ1Rf SU5TRVJUX0VYSVNUU10gPSAiaW5zZXJ0X2V4aXN0cyIsCiAJW0NUX1VQREFURV9PUklHSU5fRElG RkVSU10gPSAidXBkYXRlX29yaWdpbl9kaWZmZXJzIiwKQEAgLTU0LDYgKzExMSwxMjEgQEAgc3Rh dGljIHZvaWQgZ2V0X3R1cGxlX2Rlc2MoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJl bGluZm8sCiBzdGF0aWMgY2hhciAqYnVpbGRfaW5kZXhfdmFsdWVfZGVzYyhFU3RhdGUgKmVzdGF0 ZSwgUmVsYXRpb24gbG9jYWxyZWwsCiAJCQkJCQkJCQlUdXBsZVRhYmxlU2xvdCAqc2xvdCwgT2lk IGluZGV4b2lkKTsKIAorLyoKKyAqIEJ1aWxkcyB0aGUgVHVwbGVEZXNjIGZvciB0aGUgY29uZmxp Y3QgbG9nIHRhYmxlLgorICovCitzdGF0aWMgVHVwbGVEZXNjCitjcmVhdGVfY29uZmxpY3RfbG9n X3RhYmxlX3R1cGRlc2Modm9pZCkKK3sKKwlUdXBsZURlc2MJdHVwZGVzYzsKKworCXR1cGRlc2Mg PSBDcmVhdGVUZW1wbGF0ZVR1cGxlRGVzYyhOVU1fQ09ORkxJQ1RfQVRUUlMpOworCisJZm9yIChp bnQgaSA9IDA7IGkgPCBOVU1fQ09ORkxJQ1RfQVRUUlM7IGkrKykKKwkJVHVwbGVEZXNjSW5pdEVu dHJ5KHR1cGRlc2MsIGkgKyAxLAorCQkJCQkJICAgQ29uZmxpY3RMb2dTY2hlbWFbaV0uYXR0bmFt ZSwKKwkJCQkJCSAgIENvbmZsaWN0TG9nU2NoZW1hW2ldLmF0dHR5cGlkLAorCQkJCQkJICAgLTEs IDApOworCisJVHVwbGVEZXNjRmluYWxpemUodHVwZGVzYyk7CisKKwlyZXR1cm4gdHVwZGVzYzsK K30KKworLyoKKyAqIENyZWF0ZSBhIHN0cnVjdHVyZWQgY29uZmxpY3QgbG9nIHRhYmxlIGZvciBh IHN1YnNjcmlwdGlvbi4KKyAqCisgKiBUaGUgdGFibGUgaXMgY3JlYXRlZCB3aXRoaW4gdGhlIHN5 c3RlbS1tYW5hZ2VkICdwZ19jb25mbGljdCcgbmFtZXNwYWNlIHRvCisgKiBwcmV2ZW50IHVzZXJz IGZyb20gbWFudWFsbHkgZHJvcHBpbmcgb3IgYWx0ZXJpbmcgaXQuICBUaGlzIGFsc28gcHJldmVu dHMKKyAqIGFjY2lkZW50YWwgbmFtZSBjb2xsaXNpb25zIHdpdGggdXNlci1jcmVhdGVkIHRhYmxl cyB3aXRoIHRoZSBzYW1lIG5hbWUuCisgKgorICogVGhlIHRhYmxlIG5hbWUgaXMgZ2VuZXJhdGVk IGF1dG9tYXRpY2FsbHkgdXNpbmcgdGhlIHN1YnNjcmlwdGlvbidzIE9JRAorICogKGUuZy4sICJw Z19jb25mbGljdF9sb2dfPHN1YmlkPiIpIHRvIGVuc3VyZSB1bmlxdWVuZXNzIHdpdGhpbiB0aGUK KyAqIGNsdXN0ZXIgYW5kIHRvIGF2b2lkIGNvbGxpc2lvbnMgZHVyaW5nIHN1YnNjcmlwdGlvbiBy ZW5hbWVzLgorICovCitPaWQKK2NyZWF0ZV9jb25mbGljdF9sb2dfdGFibGUoT2lkIHN1YmlkLCBj aGFyICpzdWJuYW1lLCBPaWQgc3Vib3duZXIpCit7CisJVHVwbGVEZXNjCXR1cGRlc2M7CisJT2lk CQkJcmVsaWQ7CisJY2hhcgkJcmVsbmFtZVtOQU1FREFUQUxFTl07CisKKwlzbnByaW50ZihyZWxu YW1lLCBOQU1FREFUQUxFTiwgInBnX2NvbmZsaWN0X2xvZ18ldSIsIHN1YmlkKTsKKworCS8qIEJ1 aWxkIHRoZSB0dXBsZSBkZXNjcmlwdG9yIGZvciB0aGUgbmV3IHRhYmxlLiAqLworCXR1cGRlc2Mg PSBjcmVhdGVfY29uZmxpY3RfbG9nX3RhYmxlX3R1cGRlc2MoKTsKKworCS8qIENyZWF0ZSBjb25m bGljdCBsb2cgdGFibGUuICovCisJcmVsaWQgPSBoZWFwX2NyZWF0ZV93aXRoX2NhdGFsb2cocmVs bmFtZSwKKwkJCQkJCQkJCSBQR19DT05GTElDVF9OQU1FU1BBQ0UsCisJCQkJCQkJCQkgMCwgLyog dGFibGVzcGFjZSAqLworCQkJCQkJCQkJIEludmFsaWRPaWQsCS8qIHJlbGlkICovCisJCQkJCQkJ CQkgSW52YWxpZE9pZCwJLyogcmVsdHlwZWlkICovCisJCQkJCQkJCQkgSW52YWxpZE9pZCwJLyog cmVsb2Z0eXBlaWQgKi8KKwkJCQkJCQkJCSBzdWJvd25lciwKKwkJCQkJCQkJCSBIRUFQX1RBQkxF X0FNX09JRCwKKwkJCQkJCQkJCSB0dXBkZXNjLAorCQkJCQkJCQkJIE5JTCwKKwkJCQkJCQkJCSBS RUxLSU5EX1JFTEFUSU9OLAorCQkJCQkJCQkJIFJFTFBFUlNJU1RFTkNFX1BFUk1BTkVOVCwKKwkJ CQkJCQkJCSBmYWxzZSwgLyogc2hhcmVkX3JlbGF0aW9uICovCisJCQkJCQkJCQkgZmFsc2UsIC8q IG1hcHBlZF9yZWxhdGlvbiAqLworCQkJCQkJCQkJIE9OQ09NTUlUX05PT1AsCisJCQkJCQkJCQkg KERhdHVtKSAwLCAvKiByZWxvcHRpb25zICovCisJCQkJCQkJCQkgZmFsc2UsIC8qIHVzZV91c2Vy X2FjbCAqLworCQkJCQkJCQkJIGZhbHNlLAkvKiBhbGxvd19zeXN0ZW1fdGFibGVfbW9kcyAqLwor CQkJCQkJCQkJIHRydWUsCS8qIGlzX2ludGVybmFsICovCisJCQkJCQkJCQkgSW52YWxpZE9pZCwJ LyogcmVscmV3cml0ZSAqLworCQkJCQkJCQkJIE5VTEwpOyAvKiB0eXBhZGRyZXNzICovCisJQXNz ZXJ0KE9pZElzVmFsaWQocmVsaWQpKTsKKworCS8qIFJlbGVhc2UgdHVwbGUgZGVzY3JpcHRvciBt ZW1vcnkuICovCisJRnJlZVR1cGxlRGVzYyh0dXBkZXNjKTsKKworCS8qCisJICogV2UgbXVzdCBi dW1wIHRoZSBjb21tYW5kIGNvdW50ZXIgdG8gbWFrZSB0aGUgbmV3bHktY3JlYXRlZCByZWxhdGlv bgorCSAqIHR1cGxlIHZpc2libGUgZm9yIG9wZW5pbmcuCisJICovCisJQ29tbWFuZENvdW50ZXJJ bmNyZW1lbnQoKTsKKworCS8qCisJICogQ3JlYXRlIGEgVE9BU1QgdGFibGUgZm9yIHRoZSBjb25m bGljdCBsb2cgdG8gc3VwcG9ydCBvdXQtb2YtbGluZQorCSAqIHN0b3JhZ2Ugb2YgbGFyZ2UganNv biBkYXRhLgorCSAqLworCU5ld1JlbGF0aW9uQ3JlYXRlVG9hc3RUYWJsZShyZWxpZCwgKERhdHVt KSAwKTsKKworCWVyZXBvcnQoTk9USUNFLAorCQkJKGVycm1zZygiY3JlYXRlZCBjb25mbGljdCBs b2cgdGFibGUgXCIlc1wiIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIiwKKwkJCQkJZ2V0X3F1YWxp ZmllZF9vYmpuYW1lKFBHX0NPTkZMSUNUX05BTUVTUEFDRSwgcmVsbmFtZSksCisJCQkJCXN1Ym5h bWUpKSk7CisKKwlyZXR1cm4gcmVsaWQ7Cit9CisKKy8qCisgKiBDb252ZXJ0IHRoZSBzdHJpbmcg cmVwcmVzZW50YXRpb24gb2YgYSBjb25mbGljdCBsb2dnaW5nIGRlc3RpbmF0aW9uIHRvIGl0cwor ICogY29ycmVzcG9uZGluZyBlbnVtIHZhbHVlLgorICovCitDb25mbGljdExvZ0Rlc3QKK0dldENv bmZsaWN0TG9nRGVzdChjb25zdCBjaGFyICpkZXN0KQoreworCS8qIE5VTEwgZGVmYXVsdHMgdG8g TE9HLiAqLworCWlmIChkZXN0ID09IE5VTEwgfHwgcGdfc3RyY2FzZWNtcChkZXN0LCAibG9nIikg PT0gMCkKKwkJcmV0dXJuIENPTkZMSUNUX0xPR19ERVNUX0xPRzsKKworCWlmIChwZ19zdHJjYXNl Y21wKGRlc3QsICJ0YWJsZSIpID09IDApCisJCXJldHVybiBDT05GTElDVF9MT0dfREVTVF9UQUJM RTsKKworCWlmIChwZ19zdHJjYXNlY21wKGRlc3QsICJhbGwiKSA9PSAwKQorCQlyZXR1cm4gQ09O RkxJQ1RfTE9HX0RFU1RfQUxMOworCisJLyogVW5yZWNvZ25pemVkIHN0cmluZy4gKi8KKwllcmVw b3J0KEVSUk9SLAorCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSks CisJCQkgZXJybXNnKCJ1bnJlY29nbml6ZWQgY29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9uIHZhbHVl OiBcIiVzXCIiLCBkZXN0KSwKKwkJCSBlcnJoaW50KCJWYWxpZCB2YWx1ZXMgYXJlIFwibG9nXCIs IFwidGFibGVcIiwgYW5kIFwiYWxsXCIuIikpKTsKK30KKwogLyoKICAqIEdldCB0aGUgeG1pbiBh bmQgY29tbWl0IHRpbWVzdGFtcCBkYXRhIChvcmlnaW4gYW5kIHRpbWVzdGFtcCkgYXNzb2NpYXRl ZAogICogd2l0aCB0aGUgcHJvdmlkZWQgbG9jYWwgcm93LgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmV3cml0ZS9yZXdyaXRlRGVmaW5lLmMgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVE ZWZpbmUuYwppbmRleCA2YTIyM2ZiZWFhNC4uYmYxZjA5MzY4NjcgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3Jld3JpdGUvcmV3cml0ZURlZmluZS5jCisrKyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUv cmV3cml0ZURlZmluZS5jCkBAIC0yNjIsNiArMjYyLDE4IEBAIERlZmluZVF1ZXJ5UmV3cml0ZShj b25zdCBjaGFyICpydWxlbmFtZSwKIAkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGV2ZW50 X3JlbGF0aW9uKSksCiAJCQkJIGVycmRldGFpbF9yZWxraW5kX25vdF9zdXBwb3J0ZWQoZXZlbnRf cmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCkpKTsKIAorCS8qCisJICogQ29uZmxpY3QgbG9nIHRh YmxlcyBhcmUgdXNlZCBpbnRlcm5hbGx5IGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uCisJICogY29u ZmxpY3QgbG9nZ2luZyBhbmQgc2hvdWxkIG5vdCBoYXZlIHJ1bGVzLCBhcyBpdCBjb3VsZCBkaXNy dXB0CisJICogY29uZmxpY3QgbG9nZ2luZy4KKwkgKi8KKwlpZiAoSXNDb25mbGljdExvZ1RhYmxl Q2xhc3MoZXZlbnRfcmVsYXRpb24tPnJkX3JlbCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVy cmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJIGVycm1zZygiY29uZmxpY3Qg bG9nIHRhYmxlIFwiJXNcIiBjYW5ub3QgaGF2ZSBydWxlcyIsCisJCQkJCQlSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShldmVudF9yZWxhdGlvbikpLAorCQkJCSBlcnJkZXRhaWwoIkNvbmZsaWN0IGxv ZyB0YWJsZXMgYXJlIHN5c3RlbS1tYW5hZ2VkIHRhYmxlcyBmb3IgbG9naWNhbCByZXBsaWNhdGlv biBjb25mbGljdHMuIikpKTsKKwogCWlmICghYWxsb3dTeXN0ZW1UYWJsZU1vZHMgJiYgSXNTeXN0 ZW1SZWxhdGlvbihldmVudF9yZWxhdGlvbikpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNv ZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKQEAgLTc3Miw2ICs3ODQsMTggQEAg UmFuZ2VWYXJDYWxsYmFja0ZvclJlbmFtZVJ1bGUoY29uc3QgUmFuZ2VWYXIgKnJ2LCBPaWQgcmVs aWQsIE9pZCBvbGRyZWxpZCwKIAkJCQkgZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgY2Fubm90IGhh dmUgcnVsZXMiLCBydi0+cmVsbmFtZSksCiAJCQkJIGVycmRldGFpbF9yZWxraW5kX25vdF9zdXBw b3J0ZWQoZm9ybS0+cmVsa2luZCkpKTsKIAorCS8qCisJICogQ29uZmxpY3QgbG9nIHRhYmxlcyBh cmUgdXNlZCBpbnRlcm5hbGx5IGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uCisJICogY29uZmxpY3Qg bG9nZ2luZyBhbmQgc2hvdWxkIG5vdCBoYXZlIHJ1bGVzLCBhcyBpdCBjb3VsZCBkaXNydXB0CisJ ICogY29uZmxpY3QgbG9nZ2luZy4KKwkgKi8KKwlpZiAoSXNDb25mbGljdExvZ1RhYmxlQ2xhc3Mo Zm9ybSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpF Q1RfVFlQRSksCisJCQkJIGVycm1zZygiY29uZmxpY3QgbG9nIHRhYmxlIFwiJXNcIiBjYW5ub3Qg aGF2ZSBydWxlcyIsCisJCQkJCQlydi0+cmVsbmFtZSksCisJCQkJIGVycmRldGFpbCgiQ29uZmxp Y3QgbG9nIHRhYmxlcyBhcmUgc3lzdGVtLW1hbmFnZWQgdGFibGVzIGZvciBsb2dpY2FsIHJlcGxp Y2F0aW9uIGNvbmZsaWN0cy4iKSkpOworCiAJaWYgKCFhbGxvd1N5c3RlbVRhYmxlTW9kcyAmJiBJ c1N5c3RlbUNsYXNzKHJlbGlkLCBmb3JtKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29k ZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9p bml0ZGIvaW5pdGRiLmMgYi9zcmMvYmluL2luaXRkYi9pbml0ZGIuYwppbmRleCA1NTNmY2RjYjU1 YS4uOWQ5NWM1MzAxZGEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jCisrKyBi L3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jCkBAIC0xODM5LDYgKzE4MzksMTIgQEAgc2V0dXBfcHJp dmlsZWdlcyhGSUxFICpjbWRmZCkKIAkJCQkgICIgIEFORCByZWxhY2wgSVMgTlVMTDtcblxuIiwK IAkJCQkgIGVzY2FwZV9xdW90ZXModXNlcm5hbWUpKTsKIAlQR19DTURfUFVUUygiR1JBTlQgVVNB R0UgT04gU0NIRU1BIHBnX2NhdGFsb2csIHB1YmxpYyBUTyBQVUJMSUM7XG5cbiIpOworCisJLyoK KwkgKiBBbGxvdyBub24tc3VwZXJ1c2VyIHN1YnNjcmlwdGlvbiBvd25lcnMgdG8gYWNjZXNzIHRo ZWlyIGFzc29jaWF0ZWQKKwkgKiBjb25mbGljdCBsb2cgdGFibGVzIGluIHRoZSBwZ19jb25mbGlj dCBzY2hlbWEuCisJICovCisJUEdfQ01EX1BVVFMoIkdSQU5UIFVTQUdFIE9OIFNDSEVNQSBwZ19j b25mbGljdCBUTyBQVUJMSUM7XG5cbiIpOwogCVBHX0NNRF9QVVRTKCJSRVZPS0UgQUxMIE9OIHBn X2xhcmdlb2JqZWN0IEZST00gUFVCTElDO1xuXG4iKTsKIAlQR19DTURfUFVUUygiSU5TRVJUIElO VE8gcGdfaW5pdF9wcml2cyAiCiAJCQkJIiAgKG9iam9pZCwgY2xhc3NvaWQsIG9ianN1YmlkLCBp bml0cHJpdnMsIHByaXZ0eXBlKSIKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxl dGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCAwNzJiOThiZWEw OC4uZjRjODM5YzM5NTMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4u YworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTIzNzYsOCArMjM3Niw4 IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCQlDT01QTEVURV9XSVRI KCIoIiwgIlBVQkxJQ0FUSU9OIik7CiAJLyogQUxURVIgU1VCU0NSSVBUSU9OIDxuYW1lPiBTRVQg KCAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlNVQlNDUklQVElPTiIsIE1hdGNoQW55 LCBNYXRjaEFueU4sICJTRVQiLCAiKCIpKQotCQlDT01QTEVURV9XSVRIKCJiaW5hcnkiLCAiZGlz YWJsZV9vbl9lcnJvciIsICJmYWlsb3ZlciIsCi0JCQkJCSAgIm1heF9yZXRlbnRpb25fZHVyYXRp b24iLCAib3JpZ2luIiwKKwkJQ09NUExFVEVfV0lUSCgiYmluYXJ5IiwgImNvbmZsaWN0X2xvZ19k ZXN0aW5hdGlvbiIsICJkaXNhYmxlX29uX2Vycm9yIiwKKwkJCQkJICAiZmFpbG92ZXIiLCAibWF4 X3JldGVudGlvbl9kdXJhdGlvbiIsICJvcmlnaW4iLAogCQkJCQkgICJwYXNzd29yZF9yZXF1aXJl ZCIsICJyZXRhaW5fZGVhZF90dXBsZXMiLAogCQkJCQkgICJydW5fYXNfb3duZXIiLCAic2xvdF9u YW1lIiwgInN0cmVhbWluZyIsCiAJCQkJCSAgInN5bmNocm9ub3VzX2NvbW1pdCIsICJ0d29fcGhh c2UiLApAQCAtMzk2MSw4ICszOTYxLDggQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRl cm5faWQsCiAJCUNPTVBMRVRFX1dJVEgoIldJVEggKCIpOwogCS8qIENvbXBsZXRlICJDUkVBVEUg U1VCU0NSSVBUSU9OIDxuYW1lPiAuLi4gIFdJVEggKCA8b3B0PiIgKi8KIAllbHNlIGlmIChNYXRj aGVzKCJDUkVBVEUiLCAiU1VCU0NSSVBUSU9OIiwgTWF0Y2hBbnlOLCAiV0lUSCIsICIoIikpCi0J CUNPTVBMRVRFX1dJVEgoImJpbmFyeSIsICJjb25uZWN0IiwgImNvcHlfZGF0YSIsICJjcmVhdGVf c2xvdCIsCi0JCQkJCSAgImRpc2FibGVfb25fZXJyb3IiLCAiZW5hYmxlZCIsICJmYWlsb3ZlciIs CisJCUNPTVBMRVRFX1dJVEgoImJpbmFyeSIsICJjb25mbGljdF9sb2dfZGVzdGluYXRpb24iLCAi Y29ubmVjdCIsICJjb3B5X2RhdGEiLAorCQkJCQkgICJjcmVhdGVfc2xvdCIsICJkaXNhYmxlX29u X2Vycm9yIiwgImVuYWJsZWQiLCAiZmFpbG92ZXIiLAogCQkJCQkgICJtYXhfcmV0ZW50aW9uX2R1 cmF0aW9uIiwgIm9yaWdpbiIsCiAJCQkJCSAgInBhc3N3b3JkX3JlcXVpcmVkIiwgInJldGFpbl9k ZWFkX3R1cGxlcyIsCiAJCQkJCSAgInJ1bl9hc19vd25lciIsICJzbG90X25hbWUiLCAic3RyZWFt aW5nIiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvY2F0YWxvZy5oIGIvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9jYXRhbG9nLmgKaW5kZXggYTlkNmU4ZWE5ODYuLmZlYWIzOTgyY2Y1IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdGFsb2cuaAorKysgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL2NhdGFsb2cuaApAQCAtMjUsNiArMjUsNyBAQCBleHRlcm4gYm9vbCBJc0lucGxh Y2VVcGRhdGVSZWxhdGlvbihSZWxhdGlvbiByZWxhdGlvbik7CiAKIGV4dGVybiBib29sIElzU3lz dGVtQ2xhc3MoT2lkIHJlbGlkLCBGb3JtX3BnX2NsYXNzIHJlbHR1cGxlKTsKIGV4dGVybiBib29s IElzVG9hc3RDbGFzcyhGb3JtX3BnX2NsYXNzIHJlbHR1cGxlKTsKK2V4dGVybiBib29sIElzQ29u ZmxpY3RMb2dUYWJsZUNsYXNzKEZvcm1fcGdfY2xhc3MgcmVsdHVwbGUpOwogCiBleHRlcm4gYm9v bCBJc0NhdGFsb2dSZWxhdGlvbk9pZChPaWQgcmVsaWQpOwogZXh0ZXJuIGJvb2wgSXNDYXRhbG9n VGV4dFVuaXF1ZUluZGV4T2lkKE9pZCByZWxpZCk7CkBAIC0zMiw2ICszMyw3IEBAIGV4dGVybiBi b29sIElzSW5wbGFjZVVwZGF0ZU9pZChPaWQgcmVsaWQpOwogCiBleHRlcm4gYm9vbCBJc0NhdGFs b2dOYW1lc3BhY2UoT2lkIG5hbWVzcGFjZUlkKTsKIGV4dGVybiBib29sIElzVG9hc3ROYW1lc3Bh Y2UoT2lkIG5hbWVzcGFjZUlkKTsKK2V4dGVybiBib29sIElzQ29uZmxpY3RMb2dUYWJsZU5hbWVz cGFjZShPaWQgbmFtZXNwYWNlSWQpOwogCiBleHRlcm4gYm9vbCBJc1Jlc2VydmVkTmFtZShjb25z dCBjaGFyICpuYW1lKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJz aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaAppbmRleCBlMDZlYjJhYmJj Yi4uZmE4NTA3NzYxYWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvY2F0dmVyc2lv bi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5oCkBAIC01Nyw2ICs1Nyw2 IEBACiAgKi8KIAogLyoJCQkJCQkJeXl5eW1tZGROICovCi0jZGVmaW5lIENBVEFMT0dfVkVSU0lP Tl9OTwkyMDI2MDYzMDIKKyNkZWZpbmUgQ0FUQUxPR19WRVJTSU9OX05PCTIwMjYwNzAyMQogCiAj ZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfbmFtZXNwYWNlLmRhdCBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfbmFtZXNwYWNlLmRhdAppbmRleCAzMDc1ZTE0MmM3My4u ZGU4MzE2ZTQwZGYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfbmFtZXNwYWNl LmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX25hbWVzcGFjZS5kYXQKQEAgLTE4LDYg KzE4LDkgQEAKIHsgb2lkID0+ICc5OScsIG9pZF9zeW1ib2wgPT4gJ1BHX1RPQVNUX05BTUVTUEFD RScsCiAgIGRlc2NyID0+ICdyZXNlcnZlZCBzY2hlbWEgZm9yIFRPQVNUIHRhYmxlcycsCiAgIG5z cG5hbWUgPT4gJ3BnX3RvYXN0JywgbnNwYWNsID0+ICdfbnVsbF8nIH0sCit7IG9pZCA9PiAnODk4 OCcsIG9pZF9zeW1ib2wgPT4gJ1BHX0NPTkZMSUNUX05BTUVTUEFDRScsCisgIGRlc2NyID0+ICdy ZXNlcnZlZCBzY2hlbWEgZm9yIHN1YnNjcmlwdGlvbi1zcGVjaWZpYyBjb25mbGljdCBsb2cgdGFi bGVzJywKKyAgbnNwbmFtZSA9PiAncGdfY29uZmxpY3QnLCBuc3BhY2wgPT4gJ19udWxsXycgfSwK ICMgdXBkYXRlIGR1bXBOYW1lc3BhY2UoKSBpZiBjaGFuZ2luZyB0aGlzIGRlc2NyCiB7IG9pZCA9 PiAnMjIwMCcsIG9pZF9zeW1ib2wgPT4gJ1BHX1BVQkxJQ19OQU1FU1BBQ0UnLAogICBkZXNjciA9 PiAnc3RhbmRhcmQgcHVibGljIHNjaGVtYScsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3N1YnNjcmlwdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRp b24uaAppbmRleCA0ODk0NDIwMTg4OS4uNjVjZThlMTQ1ZmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19zdWJzY3JpcHRpb24uaApAQCAtOTUsNyArOTUsMTUgQEAgQ0FUQUxPRyhwZ19zdWJzY3JpcHRp b24sNjEwMCxTdWJzY3JpcHRpb25SZWxhdGlvbklkKSBCS0lfU0hBUkVEX1JFTEFUSU9OIEJLSV9S T1cKIAlPaWQJCQlzdWJzZXJ2ZXIgQktJX0xPT0tVUF9PUFQocGdfZm9yZWlnbl9zZXJ2ZXIpOwkv KiBJZiBjb25uZWN0aW9uIHVzZXMKIAkJCQkJCQkJCQkJCQkJCQkgKiBzZXJ2ZXIgKi8KIAorCU9p ZAkJCXN1YmNvbmZsaWN0bG9ncmVsaWQ7CS8qIFJlbGlkIG9mIHRoZSBjb25mbGljdCBsb2cgdGFi bGUuICovCiAjaWZkZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJpYWJsZS1sZW5ndGggZmllbGRz IHN0YXJ0IGhlcmUgKi8KKworCS8qCisJICogU3RyYXRlZ3kgZm9yIGxvZ2dpbmcgcmVwbGljYXRp b24gY29uZmxpY3RzOiAnbG9nJyAtIHNlcnZlciBsb2cgb25seSwKKwkgKiAndGFibGUnIC0gY29u ZmxpY3QgbG9nIHRhYmxlIG9ubHksICdhbGwnIC0gYm90aCBsb2cgYW5kIHRhYmxlLgorCSAqLwor CXRleHQJCXN1YmNvbmZsaWN0bG9nZGVzdCBCS0lfRk9SQ0VfTk9UX05VTEw7CisKIAkvKiBDb25u ZWN0aW9uIHN0cmluZyB0byB0aGUgcHVibGlzaGVyICovCiAJdGV4dAkJc3ViY29ubmluZm87CS8q IFNldCBpZiBjb25uZWN0aW5nIHdpdGggY29ubmVjdGlvbiBzdHJpbmcgKi8KIApAQCAtMTY0LDYg KzE3Miw3IEBAIHR5cGVkZWYgc3RydWN0IFN1YnNjcmlwdGlvbgogCQkJCQkJCQkJICogYW5kIHRo ZSByZXRlbnRpb24gZHVyYXRpb24gaGFzIG5vdAogCQkJCQkJCQkJICogZXhjZWVkZWQgbWF4X3Jl dGVudGlvbl9kdXJhdGlvbiwgd2hlbgogCQkJCQkJCQkJICogZGVmaW5lZCAqLworCU9pZAkJCWNv bmZsaWN0bG9ncmVsaWQ7CS8qIGNvbmZsaWN0IGxvZyB0YWJsZSBPaWQgKi8KIAljaGFyCSAgICpj b25uaW5mbzsJCS8qIENvbm5lY3Rpb24gc3RyaW5nIHRvIHRoZSBwdWJsaXNoZXIgKi8KIAljaGFy CSAgICpzbG90bmFtZTsJCS8qIE5hbWUgb2YgdGhlIHJlcGxpY2F0aW9uIHNsb3QgKi8KIAljaGFy CSAgICpzeW5jY29tbWl0OwkJLyogU3luY2hyb25vdXMgY29tbWl0IHNldHRpbmcgZm9yIHdvcmtl ciAqLwpAQCAtMTcxLDYgKzE4MCw3IEBAIHR5cGVkZWYgc3RydWN0IFN1YnNjcmlwdGlvbgogCUxp c3QJICAgKnB1YmxpY2F0aW9uczsJLyogTGlzdCBvZiBwdWJsaWNhdGlvbiBuYW1lcyB0byBzdWJz Y3JpYmUgdG8gKi8KIAljaGFyCSAgICpvcmlnaW47CQkJLyogT25seSBwdWJsaXNoIGRhdGEgb3Jp Z2luYXRpbmcgZnJvbSB0aGUKIAkJCQkJCQkJICogc3BlY2lmaWVkIG9yaWdpbiAqLworCWNoYXIJ ICAgKmNvbmZsaWN0bG9nZGVzdDsJLyogQ29uZmxpY3QgbG9nIGRlc3RpbmF0aW9uICovCiB9IFN1 YnNjcmlwdGlvbjsKIAogI2lmZGVmIEVYUE9TRV9UT19DTElFTlRfQ09ERQpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vY29uZmxpY3QuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL2NvbmZsaWN0LmgKaW5kZXggMmQ5ZGJjZjRkMGQuLjMyNjU3MGVkNjM5IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9jb25mbGljdC5oCisrKyBiL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL2NvbmZsaWN0LmgKQEAgLTc5LDYgKzc5LDMyIEBAIHR5cGVkZWYgc3RydWN0IENv bmZsaWN0VHVwbGVJbmZvCiAJCQkJCQkJCSAqIGNvbmZsaWN0aW5nIGxvY2FsIHJvdyBvY2N1cnJl ZCAqLwogfSBDb25mbGljdFR1cGxlSW5mbzsKIAorLyoKKyAqIERlZmluZXMgd2hlcmUgbG9naWNh bCByZXBsaWNhdGlvbiBjb25mbGljdCBkZXRhaWxzIGFyZSByZWNvcmRlZC4KKyAqCisgKiBXaGls ZSBzdG9yZWQgYXMgYSB0ZXh0LWJhc2VkIGFycmF5L3N0cmluZyBpbgorICogcGdfc3Vic2NyaXB0 aW9uLnN1YmNvbmZsaWN0bG9nZGVzdCBmb3IgdXNlciByZWFkYWJpbGl0eSBhbmQgZXh0ZW5zaWJp bGl0eSwKKyAqIHdlIG1hcCB0aGVzZSB0byBhbiBpbnRlcm5hbCBlbnVtIHRvIGFsbG93IGZvciBl ZmZpY2llbnQgY2hlY2tzLgorICovCit0eXBlZGVmIGVudW0gQ29uZmxpY3RMb2dEZXN0Cit7CisJ Q09ORkxJQ1RfTE9HX0RFU1RfTE9HID0gMCwJLyogRW1pdCB0byBzZXJ2ZXIgbG9ncyAqLworCUNP TkZMSUNUX0xPR19ERVNUX1RBQkxFLAkvKiBJbnNlcnQgaW50byB0aGUgY29uZmxpY3QgbG9nIHRh YmxlICovCisJQ09ORkxJQ1RfTE9HX0RFU1RfQUxMCQkvKiBCb3RoIGxvZyBhbmQgdGFibGUgKi8K K30gQ29uZmxpY3RMb2dEZXN0OworCisjZGVmaW5lIENPTkZMSUNUU19MT0dHRURfVE9fVEFCTEUo ZGVzdCkgXAorCSgoZGVzdCA9PSBDT05GTElDVF9MT0dfREVTVF9UQUJMRSkgfHwgKGRlc3QgPT0g Q09ORkxJQ1RfTE9HX0RFU1RfQUxMKSkKKyNkZWZpbmUgQ09ORkxJQ1RTX0xPR0dFRF9UT19MT0co ZGVzdCkgXAorCSgoZGVzdCA9PSBDT05GTElDVF9MT0dfREVTVF9MT0cpIHx8IChkZXN0ID09IENP TkZMSUNUX0xPR19ERVNUX0FMTCkpCisKKy8qCisgKiBBcnJheSBtYXBwaW5nIGZvciBjb252ZXJ0 aW5nIGludGVybmFsIGVudW0gdG8gc3RyaW5nLgorICovCitleHRlcm4gUEdETExJTVBPUlQgY29u c3QgY2hhciAqY29uc3QgQ29uZmxpY3RMb2dEZXN0TmFtZXNbXTsKKworZXh0ZXJuIE9pZAljcmVh dGVfY29uZmxpY3RfbG9nX3RhYmxlKE9pZCBzdWJpZCwgY2hhciAqc3VibmFtZSwgT2lkIHN1Ym93 bmVyKTsKK2V4dGVybiBDb25mbGljdExvZ0Rlc3QgR2V0Q29uZmxpY3RMb2dEZXN0KGNvbnN0IGNo YXIgKmRlc3QpOwogZXh0ZXJuIGJvb2wgR2V0VHVwbGVUcmFuc2FjdGlvbkluZm8oVHVwbGVUYWJs ZVNsb3QgKmxvY2Fsc2xvdCwKIAkJCQkJCQkJCVRyYW5zYWN0aW9uSWQgKnhtaW4sCiAJCQkJCQkJ CQlSZXBsT3JpZ2luSWQgKmxvY2Fsb3JpZ2luLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9z dWJzY3JpcHRpb24ub3V0CmluZGV4IDhkYmZhYzY2MzI2Li5kMjAxYWQ3NjRmMCAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dApAQCAtNjE5LDYgKzYxOSwzMDEg QEAgQ09NTUlUOwogLS0gb2ssIG93bmluZyBpdCBpcyBlbm91Z2ggZm9yIHRoaXMgc3R1ZmYKIEFM VEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsK IERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjsKKy0tCistLSBDT05GTElDVCBMT0cg REVTVElOQVRJT04gVEVTVFMKKy0tCitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OICdyZWdyZXNz X3N1YnNjcmlwdGlvbl91c2VyJzsKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gV0FSTklORzsK Ky0tIGZhaWwgLSB1bnJlY29nbml6ZWQgcGFyYW1ldGVyIHZhbHVlCitDUkVBVEUgU1VCU0NSSVBU SU9OIHJlZ3Jlc3NfY29uZmxpY3RfZmFpbCBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBjb25m bGljdF9sb2dfZGVzdGluYXRpb24gPSAnaW52YWxpZCcpOworRVJST1I6ICB1bnJlY29nbml6ZWQg Y29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9uIHZhbHVlOiAiaW52YWxpZCIKK0hJTlQ6ICBWYWxpZCB2 YWx1ZXMgYXJlICJsb2ciLCAidGFibGUiLCBhbmQgImFsbCIuCistLSB2ZXJpZnkgc3ViY29uZmxp Y3Rsb2dkZXN0IGlzICdsb2cnIGFuZCBzdWJjb25mbGljdGxvZ3JlbGlkIGlzIDAgKEludmFsaWRP aWQpIGZvciBkZWZhdWx0IGNhc2UKK0NSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGlj dF9sb2dfZGVmYXVsdCBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBV QkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlKTsKK1dBUk5JTkc6ICBzdWJz Y3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29ubmVjdGVkCitISU5UOiAgVG8gaW5p dGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRp b24gc2xvdCwgZW5hYmxlIHRoZSBzdWJzY3JpcHRpb24sIGFuZCBhbHRlciB0aGUgc3Vic2NyaXB0 aW9uIHRvIHJlZnJlc2ggcHVibGljYXRpb25zLgorU0VMRUNUIHN1Ym5hbWUsIHN1YmNvbmZsaWN0 bG9nZGVzdCwgc3ViY29uZmxpY3Rsb2dyZWxpZAorRlJPTSBwZ19zdWJzY3JpcHRpb24gV0hFUkUg c3VibmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0X2xvZ19kZWZhdWx0JzsKKyAgICAgICAgICAgc3Vi bmFtZSAgICAgICAgICAgIHwgc3ViY29uZmxpY3Rsb2dkZXN0IHwgc3ViY29uZmxpY3Rsb2dyZWxp ZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX2NvbmZsaWN0X2xvZ19kZWZhdWx0IHwgbG9n ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgMAorKDEgcm93KQorCistLSBmYWls IC0gZW1wdHkgc3RyaW5nIHBhcmFtZXRlciB2YWx1ZQorQ1JFQVRFIFNVQlNDUklQVElPTiByZWdy ZXNzX2NvbmZsaWN0X2VtcHR5X3N0ciBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBjb25mbGlj dF9sb2dfZGVzdGluYXRpb24gPSAnJyk7CitFUlJPUjogIHVucmVjb2duaXplZCBjb25mbGljdF9s b2dfZGVzdGluYXRpb24gdmFsdWU6ICIiCitISU5UOiAgVmFsaWQgdmFsdWVzIGFyZSAibG9nIiwg InRhYmxlIiwgYW5kICJhbGwiLgorLS0gdGhpcyBzaG91bGQgZ2VuZXJhdGUgYSBjb25mbGljdCBs b2cgdGFibGUgbmFtZWQgcGdfY29uZmxpY3RfbG9nXyRzdWJpZCQKK0NSRUFURSBTVUJTQ1JJUFRJ T04gcmVncmVzc19jb25mbGljdF90ZXN0MSBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBjb25m bGljdF9sb2dfZGVzdGluYXRpb24gPSAndGFibGUnKTsKK1dBUk5JTkc6ICBzdWJzY3JpcHRpb24g d2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29ubmVjdGVkCitISU5UOiAgVG8gaW5pdGlhdGUgcmVw bGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwg ZW5hYmxlIHRoZSBzdWJzY3JpcHRpb24sIGFuZCBhbHRlciB0aGUgc3Vic2NyaXB0aW9uIHRvIHJl ZnJlc2ggcHVibGljYXRpb25zLgorLS0gY2hlY2sgbWV0YWRhdGEgaW4gcGdfc3Vic2NyaXB0aW9u OiBkZXN0aW5hdGlvbiBzaG91bGQgYmUgJ3RhYmxlJyBhbmQgc3ViY29uZmxpY3Rsb2dyZWxpZCB2 YWxpZAorU0VMRUNUIHN1Ym5hbWUsIHN1YmNvbmZsaWN0bG9nZGVzdCwgc3ViY29uZmxpY3Rsb2dy ZWxpZCA+IDAgQVMgaGFzX3JlbGlkCitGUk9NIHBnX3N1YnNjcmlwdGlvbiBXSEVSRSBzdWJuYW1l ID0gJ3JlZ3Jlc3NfY29uZmxpY3RfdGVzdDEnOworICAgICAgICBzdWJuYW1lICAgICAgICAgfCBz dWJjb25mbGljdGxvZ2Rlc3QgfCBoYXNfcmVsaWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyByZWdyZXNzX2NvbmZsaWN0X3Rlc3Qx IHwgdGFibGUgICAgICAgICAgICAgIHwgdAorKDEgcm93KQorCistLSB2ZXJpZnkgdGhlIHBoeXNp Y2FsIHRhYmxlIGV4aXN0cywgaXRzIE9JRCBtYXRjaGVzIHN1YmNvbmZsaWN0bG9ncmVsaWQsCist LSBhbmQgaXQgaXMgbG9jYXRlZCBpbiB0aGUgJ3BnX2NvbmZsaWN0JyBuYW1lc3BhY2UKK1NFTEVD VCBuLm5zcG5hbWUsIChjLm9pZCA9IHMuc3ViY29uZmxpY3Rsb2dyZWxpZCkgQVMgIm9pZF9tYXRj aGVzIgorRlJPTSBwZ19jbGFzcyBjCitKT0lOIHBnX3N1YnNjcmlwdGlvbiBzIE9OIGMucmVsbmFt ZSA9ICdwZ19jb25mbGljdF9sb2dfJyB8fCBzLm9pZAorSk9JTiBwZ19uYW1lc3BhY2UgbiBPTiBj LnJlbG5hbWVzcGFjZSA9IG4ub2lkCitXSEVSRSBzLnN1Ym5hbWUgPSAncmVncmVzc19jb25mbGlj dF90ZXN0MSc7CisgICBuc3BuYW1lICAgfCBvaWRfbWF0Y2hlcyAKKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLQorIHBnX2NvbmZsaWN0IHwgdAorKDEgcm93KQorCistLSBjaGVjayBpZiB0aGUg Y29uZmxpY3QgbG9nIHRhYmxlIGhhcyB0aGUgY29ycmVjdCBzY2hlbWEKK1NFTEVDVCBhLmF0dG51 bSwgYS5hdHRuYW1lCitGUk9NIHBnX2F0dHJpYnV0ZSBhCitKT0lOIHBnX2NsYXNzIGMgT04gYS5h dHRyZWxpZCA9IGMub2lkCitKT0lOIHBnX3N1YnNjcmlwdGlvbiBzIE9OIGMucmVsbmFtZSA9ICdw Z19jb25mbGljdF9sb2dfJyB8fCBzLm9pZAorV0hFUkUgcy5zdWJuYW1lID0gJ3JlZ3Jlc3NfY29u ZmxpY3RfdGVzdDEnIEFORCBhLmF0dG51bSA+IDAKKyAgICBPUkRFUiBCWSBhLmF0dG51bTsKKyBh dHRudW0gfCAgICAgICAgYXR0bmFtZSAgICAgICAgCistLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICAgICAgMSB8IHJlbGlkCisgICAgICAyIHwgc2NoZW1hbmFtZQorICAgICAgMyB8 IHJlbG5hbWUKKyAgICAgIDQgfCBjb25mbGljdF90eXBlCisgICAgICA1IHwgcmVtb3RlX3hpZAor ICAgICAgNiB8IHJlbW90ZV9jb21taXRfbHNuCisgICAgICA3IHwgcmVtb3RlX2NvbW1pdF90cwor ICAgICAgOCB8IHJlbW90ZV9vcmlnaW4KKyAgICAgIDkgfCByZXBsaWNhX2lkZW50aXR5X2Z1bGwK KyAgICAgMTAgfCByZXBsaWNhX2lkZW50aXR5CisgICAgIDExIHwgcmVtb3RlX3R1cGxlCisgICAg IDEyIHwgbG9jYWxfY29uZmxpY3RzCisoMTIgcm93cykKKworLS0gQ2hhbmdpbmcgdGhlIHN1YnNj cmlwdGlvbiBvd25lciBzaG91bGQgYWxzbyB1cGRhdGUgdGhlIG93bmVyCistLSBvZiB0aGUgYXNz b2NpYXRlZCBjb25mbGljdCBsb2cgdGFibGUuCitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc19j b25mbGljdF90ZXN0MSBPV05FUiBUTyByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyMjsKK1NFTEVD VCBwZ19jYXRhbG9nLnBnX2dldF91c2VyYnlpZChjLnJlbG93bmVyKSBBUyBvd25lcgorRlJPTSBw Z19jYXRhbG9nLnBnX2NsYXNzIGMKK0pPSU4gcGdfY2F0YWxvZy5wZ19zdWJzY3JpcHRpb24gcwor ICAgICAgICBPTiBjLnJlbG5hbWUgPSAncGdfY29uZmxpY3RfbG9nXycgfHwgcy5vaWQKK1dIRVJF IHMuc3VibmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0X3Rlc3QxJzsKKyAgICAgICAgICAgb3duZXIg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3N1YnNj cmlwdGlvbl91c2VyMgorKDEgcm93KQorCistLSBWZXJpZnkgdGhhdCBhIG5vbi1zdXBlcnVzZXIg c3Vic2NyaXB0aW9uIG93bmVyIGNhbiB0cnVuY2F0ZSwKKy0tIGRlbGV0ZSBmcm9tLCBhbmQgc2Vs ZWN0IGZyb20gdGhlIGFzc29jaWF0ZWQgY29uZmxpY3QgbG9nIHRhYmxlLgorU0VUIFJPTEUgJ3Jl Z3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIyJzsKK1NFTEVDVCBmb3JtYXQoJyVJLiVJJywgbi5uc3Bu YW1lLCBjLnJlbG5hbWUpIEFTIGNvbmZsaWN0X2xvZ190YWJsZQorRlJPTSBwZ19jYXRhbG9nLnBn X2NsYXNzIGMKK0pPSU4gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgbgorCU9OIG4ub2lkID0gYy5y ZWxuYW1lc3BhY2UKK0pPSU4gcGdfY2F0YWxvZy5wZ19zdWJzY3JpcHRpb24gcworCU9OIGMucmVs bmFtZSA9ICdwZ19jb25mbGljdF9sb2dfJyB8fCBzLm9pZAorV0hFUkUgcy5zdWJuYW1lID0gJ3Jl Z3Jlc3NfY29uZmxpY3RfdGVzdDEnCitcZ3NldAorVFJVTkNBVEUgVEFCTEUgOmNvbmZsaWN0X2xv Z190YWJsZTsKK0RFTEVURSBGUk9NIDpjb25mbGljdF9sb2dfdGFibGU7CitTRUxFQ1QgQ09VTlQo KikgRlJPTSA6Y29uZmxpY3RfbG9nX3RhYmxlOworIGNvdW50IAorLS0tLS0tLQorICAgICAwCiso MSByb3cpCisKK1JFU0VUIFJPTEU7CistLSBSZXN0b3JlIHRoZSBvcmlnaW5hbCBzdWJzY3JpcHRp b24gb3duZXIuCitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF90ZXN0MSBPV05F UiBUTyByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyOworLS0KKy0tIEFMVEVSIFNVQlNDUklQVElP TiAtIGNvbmZsaWN0X2xvZ19kZXN0aW5hdGlvbiBzdGF0ZSB0cmFuc2l0aW9ucworLS0KKy0tIFRo ZXNlIHRlc3RzIHZlcmlmeSB0aGUgdHJhbnNpdGlvbiBsb2dpYyBiZXR3ZWVuIGRpZmZlcmVudCBs b2dnaW5nCistLSBkZXN0aW5hdGlvbnMsIGVuc3VyaW5nIGNvbmZsaWN0IGxvZyB0YWJsZXMgYXJl IGNyZWF0ZWQgb3IgZHJvcHBlZCBhcworLS0gZXhwZWN0ZWQKKy0tCistLSB0cmFuc2l0aW9uIGZy b20gJ2xvZycgdG8gJ2FsbCcKKy0tIGEgbmV3IGNvbmZsaWN0IGxvZyB0YWJsZSBzaG91bGQgYmUg Y3JlYXRlZAorQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X3Rlc3QyIENPTk5F Q1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBX SVRIIChjb25uZWN0ID0gZmFsc2UsIGNvbmZsaWN0X2xvZ19kZXN0aW5hdGlvbiA9ICdsb2cnKTsK K1dBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29ubmVjdGVk CitISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0 ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxlIHRoZSBzdWJzY3JpcHRpb24sIGFuZCBhbHRl ciB0aGUgc3Vic2NyaXB0aW9uIHRvIHJlZnJlc2ggcHVibGljYXRpb25zLgorQUxURVIgU1VCU0NS SVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3RfdGVzdDIgU0VUIChjb25mbGljdF9sb2dfZGVzdGluYXRp b24gPSAnYWxsJyk7CistLSB2ZXJpZnkgbWV0YWRhdGEgYWZ0ZXIgQUxURVIgKGRlc3RpbmF0aW9u IHNob3VsZCBiZSAnYWxsJykKK1NFTEVDVCBzdWJuYW1lLCBzdWJjb25mbGljdGxvZ2Rlc3QsIHN1 YmNvbmZsaWN0bG9ncmVsaWQgPiAwIEFTIGhhc19yZWxpZAorRlJPTSBwZ19zdWJzY3JpcHRpb24g V0hFUkUgc3VibmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0X3Rlc3QyJzsKKyAgICAgICAgc3VibmFt ZSAgICAgICAgIHwgc3ViY29uZmxpY3Rsb2dkZXN0IHwgaGFzX3JlbGlkIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgcmVncmVzc19j b25mbGljdF90ZXN0MiB8IGFsbCAgICAgICAgICAgICAgICB8IHQKKygxIHJvdykKKworLS0gdHJh bnNpdGlvbiBmcm9tICdhbGwnIHRvICd0YWJsZScKKy0tIHNob3VsZCBOT1QgZHJvcCB0aGUgdGFi bGUsIG9ubHkgY2hhbmdlIGRlc3RpbmF0aW9uIHN0cmluZworU0VMRUNUIHN1YmNvbmZsaWN0bG9n cmVsaWQgQVMgb2xkX3JlbGlkIEZST00gcGdfc3Vic2NyaXB0aW9uIFdIRVJFIHN1Ym5hbWUgPSAn cmVncmVzc19jb25mbGljdF90ZXN0MicgXGdzZXQKK0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNz X2NvbmZsaWN0X3Rlc3QyIFNFVCAoY29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9uID0gJ3RhYmxlJyk7 CitTRUxFQ1Qgc3ViY29uZmxpY3Rsb2dkZXN0LCBzdWJjb25mbGljdGxvZ3JlbGlkID0gOm9sZF9y ZWxpZCBBUyByZWxpZF91bmNoYW5nZWQKK0ZST00gcGdfc3Vic2NyaXB0aW9uIFdIRVJFIHN1Ym5h bWUgPSAncmVncmVzc19jb25mbGljdF90ZXN0Mic7Cisgc3ViY29uZmxpY3Rsb2dkZXN0IHwgcmVs aWRfdW5jaGFuZ2VkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0KKyB0 YWJsZSAgICAgICAgICAgICAgfCB0CisoMSByb3cpCisKKy0tIHRyYW5zaXRpb24gZnJvbSAndGFi bGUnIHRvICdsb2cnCistLSBzaG91bGQgZHJvcCB0aGUgdGFibGUgYW5kIGNsZWFyIHN1YmNvbmZs aWN0bG9ncmVsaWQKK0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X3Rlc3QyIFNF VCAoY29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9uID0gJ2xvZycpOworU0VMRUNUIHN1YmNvbmZsaWN0 bG9nZGVzdCwgc3ViY29uZmxpY3Rsb2dyZWxpZAorRlJPTSBwZ19zdWJzY3JpcHRpb24gV0hFUkUg c3VibmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0X3Rlc3QyJzsKKyBzdWJjb25mbGljdGxvZ2Rlc3Qg fCBzdWJjb25mbGljdGxvZ3JlbGlkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgbG9nICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgMAorKDEg cm93KQorCistLSB2ZXJpZnkgdGhlIHBoeXNpY2FsIHRhYmxlIGlzIGdvbmUKK1NFTEVDVCBjb3Vu dCgqKQorRlJPTSBwZ19jbGFzcyBjCitKT0lOIHBnX3N1YnNjcmlwdGlvbiBzIE9OIGMucmVsbmFt ZSA9ICdwZ19jb25mbGljdF9sb2dfJyB8fCBzLm9pZAorV0hFUkUgcy5zdWJuYW1lID0gJ3JlZ3Jl c3NfY29uZmxpY3RfdGVzdDInOworIGNvdW50IAorLS0tLS0tLQorICAgICAwCisoMSByb3cpCisK Ky0tCistLSBQVUJMSUNBVElPTjogVmVyaWZ5IGNvbmZsaWN0IGxvZyB0YWJsZXMgYXJlIG5vdCBw dWJsaXNoYWJsZQorLS0KKy0tIHBnX3JlbGF0aW9uX2lzX3B1Ymxpc2hhYmxlIHNob3VsZCByZXR1 cm4gZmFsc2UgZm9yIGNvbmZsaWN0IGxvZyB0YWJsZXMgdG8KKy0tIHByZXZlbnQgdGhlbSBmcm9t IGJlaW5nIGFjY2lkZW50YWxseSBpbmNsdWRlZCBpbiBwdWJsaWNhdGlvbnMKKy0tCitTRUxFQ1Qg bi5uc3BuYW1lLCBwZ19yZWxhdGlvbl9pc19wdWJsaXNoYWJsZShjLm9pZCkKK0ZST00gcGdfY2xh c3MgYworSk9JTiBwZ19uYW1lc3BhY2UgbiBPTiBjLnJlbG5hbWVzcGFjZSA9IG4ub2lkCitKT0lO IHBnX3N1YnNjcmlwdGlvbiBzIE9OIHMuc3ViY29uZmxpY3Rsb2dyZWxpZCA9IGMub2lkCitXSEVS RSBzLnN1Ym5hbWUgPSAncmVncmVzc19jb25mbGljdF90ZXN0MSc7CisgICBuc3BuYW1lICAgfCBw Z19yZWxhdGlvbl9pc19wdWJsaXNoYWJsZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIHBnX2NvbmZsaWN0IHwgZgorKDEgcm93KQorCistLQorLS0gVGFibGUg UHJvdGVjdGlvbiBhbmQgTGlmZWN5Y2xlIE1hbmFnZW1lbnQKKy0tCistLSBUaGVzZSB0ZXN0cyB2 ZXJpZnkgdGhhdDoKKy0tIE1hbnVhbCBEUk9QIFRBQkxFIGlzIGRpc2FsbG93ZWQKKy0tIERST1Ag U1VCU0NSSVBUSU9OIGF1dG9tYXRpY2FsbHkgcmVhcHMgdGhlIHRhYmxlCistLQorLS0gcmUtZW5h YmxlIHRhYmxlIGxvZ2dpbmcgZm9yIHZlcmlmaWNhdGlvbgorQUxURVIgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfY29uZmxpY3RfdGVzdDEgU0VUIChjb25mbGljdF9sb2dfZGVzdGluYXRpb24gPSAndGFi bGUnKTsKKy0tIFRoZSBjb25mbGljdCBsb2cgdGFibGUgbmFtZSBjb250YWlucyB0aGUgc3Vic2Ny aXB0aW9uIE9JRCwgd2hpY2ggaXMKKy0tIG5vbi1kZXRlcm1pbmlzdGljLiAgQ2FwdHVyZSBpdCBp bnRvIGEgcHNxbCB2YXJpYWJsZSBhbmQgcmVwb3J0IG9ubHkgdGhlCistLSBTUUxTVEFURSwgc28g dGhlIGV4cGVjdGVkIG91dHB1dCBkb2VzIG5vdCBkZXBlbmQgb24gdGhlIE9JRC4KKy0tIGZhaWwg LSBkcm9wIHRhYmxlIG5vdCBhbGxvd2VkIGR1ZSB0byBpbnRlcm5hbCBkZXBlbmRlbmN5CitTRVQg Y2xpZW50X21pbl9tZXNzYWdlcyA9IE5PVElDRTsKK1NFTEVDVCAncGdfY29uZmxpY3QucGdfY29u ZmxpY3RfbG9nXycgfHwgb2lkIEFTIGNsdDEKKyAgICBGUk9NIHBnX3N1YnNjcmlwdGlvbiBXSEVS RSBzdWJuYW1lID0gJ3JlZ3Jlc3NfY29uZmxpY3RfdGVzdDEnIFxnc2V0Citcc2V0IFZFUkJPU0lU WSBzcWxzdGF0ZQorRFJPUCBUQUJMRSA6Y2x0MTsKK0VSUk9SOiAgNDI1MDEKK1xzZXQgVkVSQk9T SVRZIGRlZmF1bHQKKy0tIENMRUFOVVA6IERST1AgU1VCU0NSSVBUSU9OIHJlYXBzIHRoZSB0YWJs ZQorQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3RfdGVzdDEgRElTQUJMRTsKK0FM VEVSIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X3Rlc3QxIFNFVCAoc2xvdF9uYW1lID0g Tk9ORSk7CistLSBWZXJpZnkgdGhlIHRhYmxlIE9JRCBmb3IgcmVhcCBjaGVjaworU0VMRUNUICdw Z19jb25mbGljdC5wZ19jb25mbGljdF9sb2dfJyB8fCBvaWQgQVMgaW50ZXJuYWxfdGFibGVuYW1l IEZST00gcGdfc3Vic2NyaXB0aW9uIFdIRVJFIHN1Ym5hbWUgPSAncmVncmVzc19jb25mbGljdF90 ZXN0MScgXGdzZXQKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gV0FSTklORzsKK0RST1AgU1VC U0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3RfdGVzdDE7CistLSBzaG91bGQgcmV0dXJuIE5VTEws IG1lYW5pbmcgdGhlIGNvbmZsaWN0IGxvZyB0YWJsZSB3YXMgcmVhcGVkIHZpYSBkZXBlbmRlbmN5 CitTRUxFQ1QgdG9fcmVnY2xhc3MoOidpbnRlcm5hbF90YWJsZW5hbWUnKTsKKyB0b19yZWdjbGFz cyAKKy0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0KKy0tIEFkZGl0aW9uYWwgTmFtZXNw YWNlIGFuZCBUYWJsZSBQcm90ZWN0aW9uIFRlc3RzCistLQorLS0gU2V0dXA6IEVuc3VyZSB3ZSBo YXZlIGEgc3Vic2NyaXB0aW9uIHdpdGggYSBjb25mbGljdCBsb2cgdGFibGUKK0NSRUFURSBTVUJT Q1JJUFRJT04gcmVncmVzc19jb25mbGljdF9wcm90ZWN0aW9uX3Rlc3QgQ09OTkVDVElPTiAnZGJu YW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JworICAgIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAo Y29ubmVjdCA9IGZhbHNlLCBjb25mbGljdF9sb2dfZGVzdGluYXRpb24gPSAndGFibGUnKTsKK1dB Uk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29ubmVjdGVkCitI SU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0 aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxlIHRoZSBzdWJzY3JpcHRpb24sIGFuZCBhbHRlciB0 aGUgc3Vic2NyaXB0aW9uIHRvIHJlZnJlc2ggcHVibGljYXRpb25zLgorLS0gVGhlIGNvbmZsaWN0 IGxvZyB0YWJsZSBpcyBzeXN0ZW0tbWFuYWdlZDsgaXRzIG5hbWUgY29udGFpbnMgdGhlCistLSBz dWJzY3JpcHRpb24gT0lELCB3aGljaCBpcyBub24tZGV0ZXJtaW5pc3RpYy4gIENhcHR1cmUgdGhl IG5hbWUgaW50byBhIHBzcWwKKy0tIHZhcmlhYmxlIGFuZCByZXBvcnQgb25seSB0aGUgU1FMU1RB VEUgZm9yIHRoZSBvcGVyYXRpb25zIHRoYXQgbXVzdCBiZQorLS0gcmVqZWN0ZWQsIHNvIHRoZSBl eHBlY3RlZCBvdXRwdXQgc3RheXMgZnJlZSBvZiB0aGUgZHluYW1pYyBPSUQuICBFdmVyeQorLS0g c3RhdGVtZW50IGluIHRoZSBWRVJCT1NJVFktc3Fsc3RhdGUgYmxvY2sgYmVsb3cgbXVzdCBmYWls IHdpdGggNDI4MDkKKy0tICh3cm9uZ19vYmplY3RfdHlwZSksIGV4Y2VwdCBhZGRpbmcgdGhlIHRh YmxlIHRvIGEgcHVibGljYXRpb24sIHdoaWNoIGZhaWxzCistLSB3aXRoIDIyMDIzIChpbnZhbGlk X3BhcmFtZXRlcl92YWx1ZSkuCitTRUxFQ1QgJ3BnX2NvbmZsaWN0LicgfHwgcmVsbmFtZSBBUyBj bHQKKyAgICBGUk9NIHBnX2NsYXNzIGMgSk9JTiBwZ19zdWJzY3JpcHRpb24gcyBPTiBjLnJlbG5h bWUgPSAncGdfY29uZmxpY3RfbG9nXycgfHwgcy5vaWQKKyAgICBXSEVSRSBzLnN1Ym5hbWUgPSAn cmVncmVzc19jb25mbGljdF9wcm90ZWN0aW9uX3Rlc3QnIFxnc2V0CistLSBUcmlnZ2VyIGZ1bmN0 aW9uIHVzZWQgYnkgdGhlIENSRUFURSBUUklHR0VSIGNoZWNrIGJlbG93LgorQ1JFQVRFIEZVTkNU SU9OIHB1YmxpYy5kdW1teV90cmlnZ2VyX2Z1bmMoKSBSRVRVUk5TIHRyaWdnZXIgQVMgJCQKK0JF R0lOCisgICAgUkVUVVJOIE5FVzsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7Citcc2V0IFZF UkJPU0lUWSBzcWxzdGF0ZQorQUxURVIgVEFCTEUgOmNsdCBBREQgQ09MVU1OIGV4dHJhX2luZm8g dGV4dDsKK0VSUk9SOiAgNDI4MDkKK0lOU0VSVCBJTlRPIDpjbHQgKHJlbG5hbWUpIFZBTFVFUyAo J215dGVzdCcpOworRVJST1I6ICA0MjgwOQorVVBEQVRFIDpjbHQgU0VUIHJlbG5hbWUgPSAnbXl0 ZXN0JzsKK0VSUk9SOiAgNDI4MDkKK0NSRUFURSBQT0xJQ1kgcDEgT04gOmNsdCBVU0lORyAodHJ1 ZSk7CitFUlJPUjogIDQyODA5CitDUkVBVEUgU1RBVElTVElDUyBzMSBPTiByZWxuYW1lLCBzY2hl bWFuYW1lIEZST00gOmNsdDsKK0VSUk9SOiAgNDI4MDkKK0NSRUFURSBUQUJMRSBwdWJsaWMuY29u ZmxpY3RfY2hpbGQgKCkgSU5IRVJJVFMgKDpjbHQpOworRVJST1I6ICA0MjgwOQorQUxURVIgVEFC TEUgOmNsdCBSRU5BTUUgQ09MVU1OIHJlbG5hbWUgVE8gbmV3X3JlbG5hbWU7CitFUlJPUjogIDQy ODA5CitDUkVBVEUgVEFCTEUgcHVibGljLmNvbmZsaWN0X2ZrIChyZWxuYW1lIHRleHQgUkVGRVJF TkNFUyA6Y2x0KHJlbG5hbWUpKTsKK0VSUk9SOiAgNDI4MDkKK0FMVEVSIFRBQkxFIDpjbHQgT1dO RVIgVE8gcmVncmVzc19zdWJzY3JpcHRpb25fdXNlcl9kdW1teTsKK0VSUk9SOiAgNDI4MDkKK0FM VEVSIFRBQkxFIDpjbHQgU0VUIFNDSEVNQSBwdWJsaWM7CitFUlJPUjogIDQyODA5CitDUkVBVEUg VFJJR0dFUiB0MSBCRUZPUkUgSU5TRVJUIE9OIDpjbHQgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVO Q1RJT04gcHVibGljLmR1bW15X3RyaWdnZXJfZnVuYygpOworRVJST1I6ICA0MjgwOQorQUxURVIg VFJJR0dFUiBub25fZXhpc3RlbnRfdHJpZ2dlciBPTiA6Y2x0IFJFTkFNRSBUTyBuZXdfdHJpZ2dl cjsKK0VSUk9SOiAgNDI4MDkKK0NSRUFURSBSVUxFIHIxIEFTIE9OIElOU0VSVCBUTyA6Y2x0IERP IElOU1RFQUQgTk9USElORzsKK0VSUk9SOiAgNDI4MDkKK0FMVEVSIFJVTEUgbm9uX2V4aXN0ZW50 X3J1bGUgT04gOmNsdCBSRU5BTUUgVE8gbmV3X3J1bGU7CitFUlJPUjogIDQyODA5CitDUkVBVEUg SU5ERVggaWR4MSBPTiA6Y2x0IChyZWxuYW1lKTsKK0VSUk9SOiAgNDI4MDkKK1NFTEVDVCAxIEZS T00gOmNsdCBGT1IgVVBEQVRFOworRVJST1I6ICA0MjgwOQorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRl c3RwdWJfZm9yX2NsdCBGT1IgVEFCTEUgOmNsdDsKK0VSUk9SOiAgMjIwMjMKK1xzZXQgVkVSQk9T SVRZIGRlZmF1bHQKKy0tIENsZWFuIHVwIHRoZSB0cmlnZ2VyIGZ1bmN0aW9uIHVzZWQgYWJvdmUu CitEUk9QIEZVTkNUSU9OIHB1YmxpYy5kdW1teV90cmlnZ2VyX2Z1bmMoKTsKKy0tIFRSVU5DQVRF IGFuZCBERUxFVEUgYXJlIGFsbG93ZWQgc28gdGhhdCB1c2VycyBjYW4gcHJ1bmUgdGhlIGNvbmZs aWN0IGxvZy4KK1RSVU5DQVRFIDpjbHQ7CitERUxFVEUgRlJPTSA6Y2x0OworLS0gQ3JlYXRpbmcg YSB0YWJsZSBkaXJlY3RseSBpbiB0aGUgcGdfY29uZmxpY3QgbmFtZXNwYWNlIGlzIHJlamVjdGVk IGZvcgorLS0gZXZlcnlvbmUgKHRoZSBzY2hlbWEgaXMgcmVzZXJ2ZWQgZm9yIGNvbmZsaWN0IGxv ZyB0YWJsZXMpLgorQ1JFQVRFIFRBQkxFIHBnX2NvbmZsaWN0Lm1hbnVhbF90YWJsZSAoaWQgaW50 KTsKK0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHNjaGVtYSBwZ19jb25mbGljdAorTElO RSAxOiBDUkVBVEUgVEFCTEUgcGdfY29uZmxpY3QubWFudWFsX3RhYmxlIChpZCBpbnQpOworICAg ICAgICAgICAgICAgICAgICAgXgorLS0gTW92aW5nIGEgdXNlciB0YWJsZSBpbnRvIHRoZSBwZ19j b25mbGljdCBuYW1lc3BhY2UgaXMgbGlrZXdpc2UgcmVqZWN0ZWQuCitDUkVBVEUgVEFCTEUgcHVi bGljLnRlc3RfbW92ZSAoaWQgaW50KTsKK0FMVEVSIFRBQkxFIHB1YmxpYy50ZXN0X21vdmUgU0VU IFNDSEVNQSBwZ19jb25mbGljdDsKK0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHNjaGVt YSBwZ19jb25mbGljdAorRFJPUCBUQUJMRSBwdWJsaWMudGVzdF9tb3ZlOworU0VUIGNsaWVudF9t aW5fbWVzc2FnZXMgPSBXQVJOSU5HOworLS0gQ2xlYW4gdXAgcmVtYWluaW5nIHRlc3Qgc3Vic2Ny aXB0aW9uCitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF9sb2dfZGVmYXVsdCBE SVNBQkxFOworQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3RfbG9nX2RlZmF1bHQg U0VUIChzbG90X25hbWUgPSBOT05FKTsKK0RST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxp Y3RfbG9nX2RlZmF1bHQ7CitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF90ZXN0 MiBESVNBQkxFOworQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3RfdGVzdDIgU0VU IChzbG90X25hbWUgPSBOT05FKTsKK0RST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3Rf dGVzdDI7CitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF9wcm90ZWN0aW9uX3Rl c3QgRElTQUJMRTsKK0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X3Byb3RlY3Rp b25fdGVzdCBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOworRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVz c19jb25mbGljdF9wcm90ZWN0aW9uX3Rlc3Q7CiBSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047 CiBEUk9QIFJPTEUgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlcjsKIERST1AgUk9MRSByZWdyZXNz X3N1YnNjcmlwdGlvbl91c2VyMjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1 YnNjcmlwdGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsCmlu ZGV4IDA1NTMzZDY2Njc1Li44NmM0MDJjNTlhYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvc3Vic2NyaXB0aW9uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzY3Jp cHRpb24uc3FsCkBAIC00NzQsNiArNDc0LDI0MCBAQCBDT01NSVQ7CiBBTFRFUiBTVUJTQ1JJUFRJ T04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CiBEUk9QIFNVQlNDUklQ VElPTiByZWdyZXNzX3Rlc3RzdWI7CiAKKy0tCistLSBDT05GTElDVCBMT0cgREVTVElOQVRJT04g VEVTVFMKKy0tCisKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gJ3JlZ3Jlc3Nfc3Vic2NyaXB0 aW9uX3VzZXInOworCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9IFdBUk5JTkc7CisKKy0tIGZh aWwgLSB1bnJlY29nbml6ZWQgcGFyYW1ldGVyIHZhbHVlCitDUkVBVEUgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfY29uZmxpY3RfZmFpbCBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhp c3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBjb25mbGljdF9s b2dfZGVzdGluYXRpb24gPSAnaW52YWxpZCcpOworCistLSB2ZXJpZnkgc3ViY29uZmxpY3Rsb2dk ZXN0IGlzICdsb2cnIGFuZCBzdWJjb25mbGljdGxvZ3JlbGlkIGlzIDAgKEludmFsaWRPaWQpIGZv ciBkZWZhdWx0IGNhc2UKK0NSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF9sb2df ZGVmYXVsdCBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FU SU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlKTsKK1NFTEVDVCBzdWJuYW1lLCBzdWJj b25mbGljdGxvZ2Rlc3QsIHN1YmNvbmZsaWN0bG9ncmVsaWQKK0ZST00gcGdfc3Vic2NyaXB0aW9u IFdIRVJFIHN1Ym5hbWUgPSAncmVncmVzc19jb25mbGljdF9sb2dfZGVmYXVsdCc7CisKKy0tIGZh aWwgLSBlbXB0eSBzdHJpbmcgcGFyYW1ldGVyIHZhbHVlCitDUkVBVEUgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfY29uZmxpY3RfZW1wdHlfc3RyIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNu b3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRIIChjb25uZWN0ID0gZmFsc2UsIGNvbmZs aWN0X2xvZ19kZXN0aW5hdGlvbiA9ICcnKTsKKworLS0gdGhpcyBzaG91bGQgZ2VuZXJhdGUgYSBj b25mbGljdCBsb2cgdGFibGUgbmFtZWQgcGdfY29uZmxpY3RfbG9nXyRzdWJpZCQKK0NSRUFURSBT VUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF90ZXN0MSBDT05ORUNUSU9OICdkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZh bHNlLCBjb25mbGljdF9sb2dfZGVzdGluYXRpb24gPSAndGFibGUnKTsKKworLS0gY2hlY2sgbWV0 YWRhdGEgaW4gcGdfc3Vic2NyaXB0aW9uOiBkZXN0aW5hdGlvbiBzaG91bGQgYmUgJ3RhYmxlJyBh bmQgc3ViY29uZmxpY3Rsb2dyZWxpZCB2YWxpZAorU0VMRUNUIHN1Ym5hbWUsIHN1YmNvbmZsaWN0 bG9nZGVzdCwgc3ViY29uZmxpY3Rsb2dyZWxpZCA+IDAgQVMgaGFzX3JlbGlkCitGUk9NIHBnX3N1 YnNjcmlwdGlvbiBXSEVSRSBzdWJuYW1lID0gJ3JlZ3Jlc3NfY29uZmxpY3RfdGVzdDEnOworCist LSB2ZXJpZnkgdGhlIHBoeXNpY2FsIHRhYmxlIGV4aXN0cywgaXRzIE9JRCBtYXRjaGVzIHN1YmNv bmZsaWN0bG9ncmVsaWQsCistLSBhbmQgaXQgaXMgbG9jYXRlZCBpbiB0aGUgJ3BnX2NvbmZsaWN0 JyBuYW1lc3BhY2UKK1NFTEVDVCBuLm5zcG5hbWUsIChjLm9pZCA9IHMuc3ViY29uZmxpY3Rsb2dy ZWxpZCkgQVMgIm9pZF9tYXRjaGVzIgorRlJPTSBwZ19jbGFzcyBjCitKT0lOIHBnX3N1YnNjcmlw dGlvbiBzIE9OIGMucmVsbmFtZSA9ICdwZ19jb25mbGljdF9sb2dfJyB8fCBzLm9pZAorSk9JTiBw Z19uYW1lc3BhY2UgbiBPTiBjLnJlbG5hbWVzcGFjZSA9IG4ub2lkCitXSEVSRSBzLnN1Ym5hbWUg PSAncmVncmVzc19jb25mbGljdF90ZXN0MSc7CisKKy0tIGNoZWNrIGlmIHRoZSBjb25mbGljdCBs b2cgdGFibGUgaGFzIHRoZSBjb3JyZWN0IHNjaGVtYQorU0VMRUNUIGEuYXR0bnVtLCBhLmF0dG5h bWUKK0ZST00gcGdfYXR0cmlidXRlIGEKK0pPSU4gcGdfY2xhc3MgYyBPTiBhLmF0dHJlbGlkID0g Yy5vaWQKK0pPSU4gcGdfc3Vic2NyaXB0aW9uIHMgT04gYy5yZWxuYW1lID0gJ3BnX2NvbmZsaWN0 X2xvZ18nIHx8IHMub2lkCitXSEVSRSBzLnN1Ym5hbWUgPSAncmVncmVzc19jb25mbGljdF90ZXN0 MScgQU5EIGEuYXR0bnVtID4gMAorICAgIE9SREVSIEJZIGEuYXR0bnVtOworCistLSBDaGFuZ2lu ZyB0aGUgc3Vic2NyaXB0aW9uIG93bmVyIHNob3VsZCBhbHNvIHVwZGF0ZSB0aGUgb3duZXIKKy0t IG9mIHRoZSBhc3NvY2lhdGVkIGNvbmZsaWN0IGxvZyB0YWJsZS4KK0FMVEVSIFNVQlNDUklQVElP TiByZWdyZXNzX2NvbmZsaWN0X3Rlc3QxIE9XTkVSIFRPIHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3Vz ZXIyOworU0VMRUNUIHBnX2NhdGFsb2cucGdfZ2V0X3VzZXJieWlkKGMucmVsb3duZXIpIEFTIG93 bmVyCitGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYworSk9JTiBwZ19jYXRhbG9nLnBnX3N1YnNj cmlwdGlvbiBzCisgICAgICAgIE9OIGMucmVsbmFtZSA9ICdwZ19jb25mbGljdF9sb2dfJyB8fCBz Lm9pZAorV0hFUkUgcy5zdWJuYW1lID0gJ3JlZ3Jlc3NfY29uZmxpY3RfdGVzdDEnOworCistLSBW ZXJpZnkgdGhhdCBhIG5vbi1zdXBlcnVzZXIgc3Vic2NyaXB0aW9uIG93bmVyIGNhbiB0cnVuY2F0 ZSwKKy0tIGRlbGV0ZSBmcm9tLCBhbmQgc2VsZWN0IGZyb20gdGhlIGFzc29jaWF0ZWQgY29uZmxp Y3QgbG9nIHRhYmxlLgorU0VUIFJPTEUgJ3JlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIyJzsKKwor U0VMRUNUIGZvcm1hdCgnJUkuJUknLCBuLm5zcG5hbWUsIGMucmVsbmFtZSkgQVMgY29uZmxpY3Rf bG9nX3RhYmxlCitGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYworSk9JTiBwZ19jYXRhbG9nLnBn X25hbWVzcGFjZSBuCisJT04gbi5vaWQgPSBjLnJlbG5hbWVzcGFjZQorSk9JTiBwZ19jYXRhbG9n LnBnX3N1YnNjcmlwdGlvbiBzCisJT04gYy5yZWxuYW1lID0gJ3BnX2NvbmZsaWN0X2xvZ18nIHx8 IHMub2lkCitXSEVSRSBzLnN1Ym5hbWUgPSAncmVncmVzc19jb25mbGljdF90ZXN0MScKK1xnc2V0 CisKK1RSVU5DQVRFIFRBQkxFIDpjb25mbGljdF9sb2dfdGFibGU7CitERUxFVEUgRlJPTSA6Y29u ZmxpY3RfbG9nX3RhYmxlOworU0VMRUNUIENPVU5UKCopIEZST00gOmNvbmZsaWN0X2xvZ190YWJs ZTsKKworUkVTRVQgUk9MRTsKKworLS0gUmVzdG9yZSB0aGUgb3JpZ2luYWwgc3Vic2NyaXB0aW9u IG93bmVyLgorQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfY29uZmxpY3RfdGVzdDEgT1dORVIg VE8gcmVncmVzc19zdWJzY3JpcHRpb25fdXNlcjsKKworLS0KKy0tIEFMVEVSIFNVQlNDUklQVElP TiAtIGNvbmZsaWN0X2xvZ19kZXN0aW5hdGlvbiBzdGF0ZSB0cmFuc2l0aW9ucworLS0KKy0tIFRo ZXNlIHRlc3RzIHZlcmlmeSB0aGUgdHJhbnNpdGlvbiBsb2dpYyBiZXR3ZWVuIGRpZmZlcmVudCBs b2dnaW5nCistLSBkZXN0aW5hdGlvbnMsIGVuc3VyaW5nIGNvbmZsaWN0IGxvZyB0YWJsZXMgYXJl IGNyZWF0ZWQgb3IgZHJvcHBlZCBhcworLS0gZXhwZWN0ZWQKKy0tCistLSB0cmFuc2l0aW9uIGZy b20gJ2xvZycgdG8gJ2FsbCcKKy0tIGEgbmV3IGNvbmZsaWN0IGxvZyB0YWJsZSBzaG91bGQgYmUg Y3JlYXRlZAorQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X3Rlc3QyIENPTk5F Q1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBX SVRIIChjb25uZWN0ID0gZmFsc2UsIGNvbmZsaWN0X2xvZ19kZXN0aW5hdGlvbiA9ICdsb2cnKTsK K0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X3Rlc3QyIFNFVCAoY29uZmxpY3Rf bG9nX2Rlc3RpbmF0aW9uID0gJ2FsbCcpOworCistLSB2ZXJpZnkgbWV0YWRhdGEgYWZ0ZXIgQUxU RVIgKGRlc3RpbmF0aW9uIHNob3VsZCBiZSAnYWxsJykKK1NFTEVDVCBzdWJuYW1lLCBzdWJjb25m bGljdGxvZ2Rlc3QsIHN1YmNvbmZsaWN0bG9ncmVsaWQgPiAwIEFTIGhhc19yZWxpZAorRlJPTSBw Z19zdWJzY3JpcHRpb24gV0hFUkUgc3VibmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0X3Rlc3QyJzsK KworLS0gdHJhbnNpdGlvbiBmcm9tICdhbGwnIHRvICd0YWJsZScKKy0tIHNob3VsZCBOT1QgZHJv cCB0aGUgdGFibGUsIG9ubHkgY2hhbmdlIGRlc3RpbmF0aW9uIHN0cmluZworU0VMRUNUIHN1YmNv bmZsaWN0bG9ncmVsaWQgQVMgb2xkX3JlbGlkIEZST00gcGdfc3Vic2NyaXB0aW9uIFdIRVJFIHN1 Ym5hbWUgPSAncmVncmVzc19jb25mbGljdF90ZXN0MicgXGdzZXQKK0FMVEVSIFNVQlNDUklQVElP TiByZWdyZXNzX2NvbmZsaWN0X3Rlc3QyIFNFVCAoY29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9uID0g J3RhYmxlJyk7CitTRUxFQ1Qgc3ViY29uZmxpY3Rsb2dkZXN0LCBzdWJjb25mbGljdGxvZ3JlbGlk ID0gOm9sZF9yZWxpZCBBUyByZWxpZF91bmNoYW5nZWQKK0ZST00gcGdfc3Vic2NyaXB0aW9uIFdI RVJFIHN1Ym5hbWUgPSAncmVncmVzc19jb25mbGljdF90ZXN0Mic7CisKKy0tIHRyYW5zaXRpb24g ZnJvbSAndGFibGUnIHRvICdsb2cnCistLSBzaG91bGQgZHJvcCB0aGUgdGFibGUgYW5kIGNsZWFy IHN1YmNvbmZsaWN0bG9ncmVsaWQKK0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0 X3Rlc3QyIFNFVCAoY29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9uID0gJ2xvZycpOworU0VMRUNUIHN1 YmNvbmZsaWN0bG9nZGVzdCwgc3ViY29uZmxpY3Rsb2dyZWxpZAorRlJPTSBwZ19zdWJzY3JpcHRp b24gV0hFUkUgc3VibmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0X3Rlc3QyJzsKKworLS0gdmVyaWZ5 IHRoZSBwaHlzaWNhbCB0YWJsZSBpcyBnb25lCitTRUxFQ1QgY291bnQoKikKK0ZST00gcGdfY2xh c3MgYworSk9JTiBwZ19zdWJzY3JpcHRpb24gcyBPTiBjLnJlbG5hbWUgPSAncGdfY29uZmxpY3Rf bG9nXycgfHwgcy5vaWQKK1dIRVJFIHMuc3VibmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0X3Rlc3Qy JzsKKworLS0KKy0tIFBVQkxJQ0FUSU9OOiBWZXJpZnkgY29uZmxpY3QgbG9nIHRhYmxlcyBhcmUg bm90IHB1Ymxpc2hhYmxlCistLQorLS0gcGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUgc2hvdWxk IHJldHVybiBmYWxzZSBmb3IgY29uZmxpY3QgbG9nIHRhYmxlcyB0bworLS0gcHJldmVudCB0aGVt IGZyb20gYmVpbmcgYWNjaWRlbnRhbGx5IGluY2x1ZGVkIGluIHB1YmxpY2F0aW9ucworLS0KK1NF TEVDVCBuLm5zcG5hbWUsIHBnX3JlbGF0aW9uX2lzX3B1Ymxpc2hhYmxlKGMub2lkKQorRlJPTSBw Z19jbGFzcyBjCitKT0lOIHBnX25hbWVzcGFjZSBuIE9OIGMucmVsbmFtZXNwYWNlID0gbi5vaWQK K0pPSU4gcGdfc3Vic2NyaXB0aW9uIHMgT04gcy5zdWJjb25mbGljdGxvZ3JlbGlkID0gYy5vaWQK K1dIRVJFIHMuc3VibmFtZSA9ICdyZWdyZXNzX2NvbmZsaWN0X3Rlc3QxJzsKKworLS0KKy0tIFRh YmxlIFByb3RlY3Rpb24gYW5kIExpZmVjeWNsZSBNYW5hZ2VtZW50CistLQorLS0gVGhlc2UgdGVz dHMgdmVyaWZ5IHRoYXQ6CistLSBNYW51YWwgRFJPUCBUQUJMRSBpcyBkaXNhbGxvd2VkCistLSBE Uk9QIFNVQlNDUklQVElPTiBhdXRvbWF0aWNhbGx5IHJlYXBzIHRoZSB0YWJsZQorLS0KKy0tIHJl LWVuYWJsZSB0YWJsZSBsb2dnaW5nIGZvciB2ZXJpZmljYXRpb24KK0FMVEVSIFNVQlNDUklQVElP TiByZWdyZXNzX2NvbmZsaWN0X3Rlc3QxIFNFVCAoY29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9uID0g J3RhYmxlJyk7CisKKy0tIFRoZSBjb25mbGljdCBsb2cgdGFibGUgbmFtZSBjb250YWlucyB0aGUg c3Vic2NyaXB0aW9uIE9JRCwgd2hpY2ggaXMKKy0tIG5vbi1kZXRlcm1pbmlzdGljLiAgQ2FwdHVy ZSBpdCBpbnRvIGEgcHNxbCB2YXJpYWJsZSBhbmQgcmVwb3J0IG9ubHkgdGhlCistLSBTUUxTVEFU RSwgc28gdGhlIGV4cGVjdGVkIG91dHB1dCBkb2VzIG5vdCBkZXBlbmQgb24gdGhlIE9JRC4KKwor LS0gZmFpbCAtIGRyb3AgdGFibGUgbm90IGFsbG93ZWQgZHVlIHRvIGludGVybmFsIGRlcGVuZGVu Y3kKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gTk9USUNFOworU0VMRUNUICdwZ19jb25mbGlj dC5wZ19jb25mbGljdF9sb2dfJyB8fCBvaWQgQVMgY2x0MQorICAgIEZST00gcGdfc3Vic2NyaXB0 aW9uIFdIRVJFIHN1Ym5hbWUgPSAncmVncmVzc19jb25mbGljdF90ZXN0MScgXGdzZXQKK1xzZXQg VkVSQk9TSVRZIHNxbHN0YXRlCitEUk9QIFRBQkxFIDpjbHQxOworXHNldCBWRVJCT1NJVFkgZGVm YXVsdAorCistLSBDTEVBTlVQOiBEUk9QIFNVQlNDUklQVElPTiByZWFwcyB0aGUgdGFibGUKK0FM VEVSIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X3Rlc3QxIERJU0FCTEU7CitBTFRFUiBT VUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF90ZXN0MSBTRVQgKHNsb3RfbmFtZSA9IE5PTkUp OworCistLSBWZXJpZnkgdGhlIHRhYmxlIE9JRCBmb3IgcmVhcCBjaGVjaworU0VMRUNUICdwZ19j b25mbGljdC5wZ19jb25mbGljdF9sb2dfJyB8fCBvaWQgQVMgaW50ZXJuYWxfdGFibGVuYW1lIEZS T00gcGdfc3Vic2NyaXB0aW9uIFdIRVJFIHN1Ym5hbWUgPSAncmVncmVzc19jb25mbGljdF90ZXN0 MScgXGdzZXQKKworU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSBXQVJOSU5HOworRFJPUCBTVUJT Q1JJUFRJT04gcmVncmVzc19jb25mbGljdF90ZXN0MTsKKworLS0gc2hvdWxkIHJldHVybiBOVUxM LCBtZWFuaW5nIHRoZSBjb25mbGljdCBsb2cgdGFibGUgd2FzIHJlYXBlZCB2aWEgZGVwZW5kZW5j eQorU0VMRUNUIHRvX3JlZ2NsYXNzKDonaW50ZXJuYWxfdGFibGVuYW1lJyk7CisKKy0tCistLSBB ZGRpdGlvbmFsIE5hbWVzcGFjZSBhbmQgVGFibGUgUHJvdGVjdGlvbiBUZXN0cworLS0KKworLS0g U2V0dXA6IEVuc3VyZSB3ZSBoYXZlIGEgc3Vic2NyaXB0aW9uIHdpdGggYSBjb25mbGljdCBsb2cg dGFibGUKK0NSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGljdF9wcm90ZWN0aW9uX3Rl c3QgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JworICAgIFBVQkxJQ0FU SU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBjb25mbGljdF9sb2dfZGVzdGluYXRp b24gPSAndGFibGUnKTsKKworLS0gVGhlIGNvbmZsaWN0IGxvZyB0YWJsZSBpcyBzeXN0ZW0tbWFu YWdlZDsgaXRzIG5hbWUgY29udGFpbnMgdGhlCistLSBzdWJzY3JpcHRpb24gT0lELCB3aGljaCBp cyBub24tZGV0ZXJtaW5pc3RpYy4gIENhcHR1cmUgdGhlIG5hbWUgaW50byBhIHBzcWwKKy0tIHZh cmlhYmxlIGFuZCByZXBvcnQgb25seSB0aGUgU1FMU1RBVEUgZm9yIHRoZSBvcGVyYXRpb25zIHRo YXQgbXVzdCBiZQorLS0gcmVqZWN0ZWQsIHNvIHRoZSBleHBlY3RlZCBvdXRwdXQgc3RheXMgZnJl ZSBvZiB0aGUgZHluYW1pYyBPSUQuICBFdmVyeQorLS0gc3RhdGVtZW50IGluIHRoZSBWRVJCT1NJ VFktc3Fsc3RhdGUgYmxvY2sgYmVsb3cgbXVzdCBmYWlsIHdpdGggNDI4MDkKKy0tICh3cm9uZ19v YmplY3RfdHlwZSksIGV4Y2VwdCBhZGRpbmcgdGhlIHRhYmxlIHRvIGEgcHVibGljYXRpb24sIHdo aWNoIGZhaWxzCistLSB3aXRoIDIyMDIzIChpbnZhbGlkX3BhcmFtZXRlcl92YWx1ZSkuCitTRUxF Q1QgJ3BnX2NvbmZsaWN0LicgfHwgcmVsbmFtZSBBUyBjbHQKKyAgICBGUk9NIHBnX2NsYXNzIGMg Sk9JTiBwZ19zdWJzY3JpcHRpb24gcyBPTiBjLnJlbG5hbWUgPSAncGdfY29uZmxpY3RfbG9nXycg fHwgcy5vaWQKKyAgICBXSEVSRSBzLnN1Ym5hbWUgPSAncmVncmVzc19jb25mbGljdF9wcm90ZWN0 aW9uX3Rlc3QnIFxnc2V0CisKKy0tIFRyaWdnZXIgZnVuY3Rpb24gdXNlZCBieSB0aGUgQ1JFQVRF IFRSSUdHRVIgY2hlY2sgYmVsb3cuCitDUkVBVEUgRlVOQ1RJT04gcHVibGljLmR1bW15X3RyaWdn ZXJfZnVuYygpIFJFVFVSTlMgdHJpZ2dlciBBUyAkJAorQkVHSU4KKyAgICBSRVRVUk4gTkVXOwor RU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworXHNldCBWRVJCT1NJVFkgc3Fsc3RhdGUKK0FM VEVSIFRBQkxFIDpjbHQgQUREIENPTFVNTiBleHRyYV9pbmZvIHRleHQ7CitJTlNFUlQgSU5UTyA6 Y2x0IChyZWxuYW1lKSBWQUxVRVMgKCdteXRlc3QnKTsKK1VQREFURSA6Y2x0IFNFVCByZWxuYW1l ID0gJ215dGVzdCc7CitDUkVBVEUgUE9MSUNZIHAxIE9OIDpjbHQgVVNJTkcgKHRydWUpOworQ1JF QVRFIFNUQVRJU1RJQ1MgczEgT04gcmVsbmFtZSwgc2NoZW1hbmFtZSBGUk9NIDpjbHQ7CitDUkVB VEUgVEFCTEUgcHVibGljLmNvbmZsaWN0X2NoaWxkICgpIElOSEVSSVRTICg6Y2x0KTsKK0FMVEVS IFRBQkxFIDpjbHQgUkVOQU1FIENPTFVNTiByZWxuYW1lIFRPIG5ld19yZWxuYW1lOworQ1JFQVRF IFRBQkxFIHB1YmxpYy5jb25mbGljdF9mayAocmVsbmFtZSB0ZXh0IFJFRkVSRU5DRVMgOmNsdChy ZWxuYW1lKSk7CitBTFRFUiBUQUJMRSA6Y2x0IE9XTkVSIFRPIHJlZ3Jlc3Nfc3Vic2NyaXB0aW9u X3VzZXJfZHVtbXk7CitBTFRFUiBUQUJMRSA6Y2x0IFNFVCBTQ0hFTUEgcHVibGljOworQ1JFQVRF IFRSSUdHRVIgdDEgQkVGT1JFIElOU0VSVCBPTiA6Y2x0IEZPUiBFQUNIIFJPVyBFWEVDVVRFIEZV TkNUSU9OIHB1YmxpYy5kdW1teV90cmlnZ2VyX2Z1bmMoKTsKK0FMVEVSIFRSSUdHRVIgbm9uX2V4 aXN0ZW50X3RyaWdnZXIgT04gOmNsdCBSRU5BTUUgVE8gbmV3X3RyaWdnZXI7CitDUkVBVEUgUlVM RSByMSBBUyBPTiBJTlNFUlQgVE8gOmNsdCBETyBJTlNURUFEIE5PVEhJTkc7CitBTFRFUiBSVUxF IG5vbl9leGlzdGVudF9ydWxlIE9OIDpjbHQgUkVOQU1FIFRPIG5ld19ydWxlOworQ1JFQVRFIElO REVYIGlkeDEgT04gOmNsdCAocmVsbmFtZSk7CitTRUxFQ1QgMSBGUk9NIDpjbHQgRk9SIFVQREFU RTsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2Zvcl9jbHQgRk9SIFRBQkxFIDpjbHQ7Citc c2V0IFZFUkJPU0lUWSBkZWZhdWx0CisKKy0tIENsZWFuIHVwIHRoZSB0cmlnZ2VyIGZ1bmN0aW9u IHVzZWQgYWJvdmUuCitEUk9QIEZVTkNUSU9OIHB1YmxpYy5kdW1teV90cmlnZ2VyX2Z1bmMoKTsK KworLS0gVFJVTkNBVEUgYW5kIERFTEVURSBhcmUgYWxsb3dlZCBzbyB0aGF0IHVzZXJzIGNhbiBw cnVuZSB0aGUgY29uZmxpY3QgbG9nLgorVFJVTkNBVEUgOmNsdDsKK0RFTEVURSBGUk9NIDpjbHQ7 CisKKy0tIENyZWF0aW5nIGEgdGFibGUgZGlyZWN0bHkgaW4gdGhlIHBnX2NvbmZsaWN0IG5hbWVz cGFjZSBpcyByZWplY3RlZCBmb3IKKy0tIGV2ZXJ5b25lICh0aGUgc2NoZW1hIGlzIHJlc2VydmVk IGZvciBjb25mbGljdCBsb2cgdGFibGVzKS4KK0NSRUFURSBUQUJMRSBwZ19jb25mbGljdC5tYW51 YWxfdGFibGUgKGlkIGludCk7CisKKy0tIE1vdmluZyBhIHVzZXIgdGFibGUgaW50byB0aGUgcGdf Y29uZmxpY3QgbmFtZXNwYWNlIGlzIGxpa2V3aXNlIHJlamVjdGVkLgorQ1JFQVRFIFRBQkxFIHB1 YmxpYy50ZXN0X21vdmUgKGlkIGludCk7CitBTFRFUiBUQUJMRSBwdWJsaWMudGVzdF9tb3ZlIFNF VCBTQ0hFTUEgcGdfY29uZmxpY3Q7CitEUk9QIFRBQkxFIHB1YmxpYy50ZXN0X21vdmU7CisKKwor U0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSBXQVJOSU5HOworCistLSBDbGVhbiB1cCByZW1haW5p bmcgdGVzdCBzdWJzY3JpcHRpb24KK0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0 X2xvZ19kZWZhdWx0IERJU0FCTEU7CitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc19jb25mbGlj dF9sb2dfZGVmYXVsdCBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOworRFJPUCBTVUJTQ1JJUFRJT04g cmVncmVzc19jb25mbGljdF9sb2dfZGVmYXVsdDsKKworCitBTFRFUiBTVUJTQ1JJUFRJT04gcmVn cmVzc19jb25mbGljdF90ZXN0MiBESVNBQkxFOworQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nf Y29uZmxpY3RfdGVzdDIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKK0RST1AgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfY29uZmxpY3RfdGVzdDI7CisKK0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX2Nv bmZsaWN0X3Byb3RlY3Rpb25fdGVzdCBESVNBQkxFOworQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jl c3NfY29uZmxpY3RfcHJvdGVjdGlvbl90ZXN0IFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CitEUk9Q IFNVQlNDUklQVElPTiByZWdyZXNzX2NvbmZsaWN0X3Byb3RlY3Rpb25fdGVzdDsKKwogUkVTRVQg U0VTU0lPTiBBVVRIT1JJWkFUSU9OOwogRFJPUCBST0xFIHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3Vz ZXI7CiBEUk9QIFJPTEUgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlcjI7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzVfY29uZmxpY3RzLnBsIGIvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDM1X2NvbmZsaWN0cy5wbAppbmRleCBmMjNmZTZhZjJhNS4uMzkxMGE0OWMwYWEg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNV9jb25mbGljdHMucGwKKysr IGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM1X2NvbmZsaWN0cy5wbApAQCAtNTAsNyArNTAs NyBAQCAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywKIAkiQ1JFQVRF IFNVQlNDUklQVElPTiBzdWJfdGFiCiAJIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBh cHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJwotCSBQVUJMSUNBVElPTiBwdWJfdGFiOyIpOworCSBQ VUJMSUNBVElPTiBwdWJfdGFiIFdJVEggKGNvbmZsaWN0X2xvZ19kZXN0aW5hdGlvbj1hbGwpIik7 CiAKICMgV2FpdCBmb3IgaW5pdGlhbCB0YWJsZSBzeW5jIHRvIGZpbmlzaAogJG5vZGVfc3Vic2Ny aWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLCAkYXBwbmFt ZSk7CkBAIC02NzAsNCArNjcwLDY5IEBAIG9rKCAkbm9kZV9BLT5wb2xsX3F1ZXJ5X3VudGlsKAog CSksCiAJInRoZSBzbG90ICdwZ19jb25mbGljdF9kZXRlY3Rpb24nIGhhcyBiZWVuIGRyb3BwZWQg b24gTm9kZSBBIik7CiAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQSBjb25mbGljdCBsb2cg dGFibGUgaXMgc3lzdGVtLW1hbmFnZWQgYW5kIGNhbm5vdCBiZSBhbHRlcmVkIGRpcmVjdGx5LCBz bworIyBtb3ZpbmcgaXQgdG8gYW5vdGhlciB0YWJsZXNwYWNlIG11c3QgYmUgcmVqZWN0ZWQuCisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkc3ViaWQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIG9pZCBGUk9NIHBnX3N1YnNjcmlwdGlvbiBXSEVS RSBzdWJuYW1lID0gJ3N1Yl90YWInOyIpOworbXkgJGNsdCA9ICJwZ19jb25mbGljdC5wZ19jb25m bGljdF9sb2dfJHN1YmlkIjsKKworKHVuZGVmLCB1bmRlZiwgJHN0ZGVycikgPSAkbm9kZV9zdWJz Y3JpYmVyLT5wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFICRjbHQgU0VUIFRBQkxFU1BB Q0UgcGdfZGVmYXVsdCIpOworbGlrZSgKKwkkc3RkZXJyLAorCXFyL2Nhbm5vdCBhbHRlciBjb25m bGljdCBsb2cgdGFibGUgInBnX2NvbmZsaWN0X2xvZ19cZCsiLywKKwkibW92aW5nIGEgY29uZmxp Y3QgbG9nIHRhYmxlIHdpdGggQUxURVIgVEFCTEUgU0VUIFRBQkxFU1BBQ0UgaXMgcmVqZWN0ZWQi KTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBBTFRFUiBUQUJMRSBBTEwgSU4gVEFCTEVT UEFDRSBtdXN0IHNraXAgY29uZmxpY3QgbG9nIHRhYmxlcywgdGhlIHNhbWUgd2F5IGl0CisjIHNr aXBzIGNhdGFsb2cgYW5kIFRPQVNUIHRhYmxlcywgaW5zdGVhZCBvZiBmYWlsaW5nLiAgVXNlIGFu IGlzb2xhdGVkIGRhdGFiYXNlCisjIHNvIHRoZSBidWxrIG1vdmUgb25seSB0b3VjaGVzIHRoZSBv YmplY3RzIGNyZWF0ZWQgaGVyZS4KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIERBVEFCQVNFIGNsdF90c190ZXN0 Iik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ2NsdF90c190ZXN0JywKKwkiQ1JFQVRF IFNVQlNDUklQVElPTiBzdWJfdHNfdGVzdAorCSAgICAgQ09OTkVDVElPTiAnZGJuYW1lPW5vbmV4 aXN0ZW50JworCSAgICAgUFVCTElDQVRJT04gcHViCisJICAgICBXSVRIIChjb25uZWN0PWZhbHNl LCBjb25mbGljdF9sb2dfZGVzdGluYXRpb249J3RhYmxlJykiKTsKKworIyBBIHBsYWluIHVzZXIg dGFibGUgdGhhdCBzaG91bGQgYmUgbW92ZWQsIGFsb25nc2lkZSB0aGUgQ0xUIHRoYXQgbXVzdCBu b3QgYmUuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ2NsdF90c190ZXN0JywgIkNSRUFU RSBUQUJMRSB1c2VyX3RibCAoaSBpbnQpIik7CisKKyMgQ3JlYXRlIGEgdGFibGVzcGFjZSBiYWNr ZWQgYnkgYSBkaXJlY3RvcnkgaW5zaWRlIHRoZSBkYXRhIGRpci4KK215ICR0c19kaXIgPSAkbm9k ZV9zdWJzY3JpYmVyLT5kYXRhX2RpciAuICcvYmFja3VwX3NwYWNlJzsKK21rZGlyKCR0c19kaXIp CisgIG9yIGRpZSAiY291bGQgbm90IGNyZWF0ZSB0YWJsZXNwYWNlIGRpcmVjdG9yeSAkdHNfZGly OiAkISI7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRF IFRBQkxFU1BBQ0UgYmFja3VwX3NwYWNlIExPQ0FUSU9OICckdHNfZGlyJyIpOworCisjIFRoZSBi dWxrIG1vdmUgc3VjY2VlZHM6IHRoZSB1c2VyIHRhYmxlIGlzIHJlbG9jYXRlZCB3aGlsZSB0aGUg Q0xUIGlzIHNraXBwZWQuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ2NsdF90c190ZXN0 JywKKwkiQUxURVIgVEFCTEUgQUxMIElOIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdCBTRVQgVEFCTEVT UEFDRSBiYWNrdXBfc3BhY2UiKTsKKworaXMoICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgK KwkJJ2NsdF90c190ZXN0JywKKwkJIlNFTEVDVCByZWx0YWJsZXNwYWNlIDw+IDAgRlJPTSBwZ19j bGFzcyBXSEVSRSByZWxuYW1lID0gJ3VzZXJfdGJsJyIpLAorCSd0JywKKwkiQUxURVIgVEFCTEUg QUxMIElOIFRBQkxFU1BBQ0UgbW92ZXMgYW4gb3JkaW5hcnkgdXNlciB0YWJsZSIpOworCitpcygg JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCQknY2x0X3RzX3Rlc3QnLAorCQkiU0VMRUNU IGNvdW50KCopIEZST00gcGdfY2xhc3MgYyBKT0lOIHBnX3N1YnNjcmlwdGlvbiBzCisJCSAgIE9O IGMucmVsbmFtZSA9ICdwZ19jb25mbGljdF9sb2dfJyB8fCBzLm9pZAorCQkgV0hFUkUgcy5zdWJu YW1lID0gJ3N1Yl90c190ZXN0JyBBTkQgYy5yZWx0YWJsZXNwYWNlIDw+IDAiKSwKKwknMCcsCisJ IkFMVEVSIFRBQkxFIEFMTCBJTiBUQUJMRVNQQUNFIHNraXBzIHRoZSBjb25mbGljdCBsb2cgdGFi bGUiKTsKKworIyBDbGVhbnVwLiAgVGhlIHN1YnNjcmlwdGlvbiBoYXMgbm8gcmVhbCBwdWJsaXNo ZXIgY29ubmVjdGlvbiwgc28gZGV0YWNoIGl0cworIyBzbG90IGJlZm9yZSBkcm9wcGluZyBpdC4K KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgnY2x0X3RzX3Rlc3QnLAorCSJBTFRFUiBTVUJT Q1JJUFRJT04gc3ViX3RzX3Rlc3QgRElTQUJMRSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdjbHRfdHNfdGVzdCcsCisJIkFMVEVSIFNVQlNDUklQVElPTiBzdWJfdHNfdGVzdCBTRVQg KHNsb3RfbmFtZSA9IE5PTkUpIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ2NsdF90 c190ZXN0JywgIkRST1AgU1VCU0NSSVBUSU9OIHN1Yl90c190ZXN0Iik7Ciskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgREFUQUJBU0UgY2x0X3RzX3Rlc3QiKTsK KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBUQUJMRVNQQUNF IGJhY2t1cF9zcGFjZSIpOworCiBkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QKaW5kZXggM2EyNzIwZmI1ZjkuLjNkNmQxYzE2MTMyIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdApAQCAtNTE1LDYgKzUxNSw4IEBAIENvbmRpdGlvbmFsU3RhY2sKIENvbmRpdGlvbmFsU3Rh Y2tEYXRhCiBDb25maWdEYXRhCiBDb25maWdWYXJpYWJsZQorQ29uZmxpY3RMb2dDb2x1bW5EZWYK K0NvbmZsaWN0TG9nRGVzdAogQ29uZmxpY3RUdXBsZUluZm8KIENvbmZsaWN0VHlwZQogQ29ubkNh Y2hlRW50cnkKLS0gCjIuNDkuMAoK --000000000000ee9ca506558ca025--