Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uWtj6-002xS7-QR for pgsql-hackers@arkaria.postgresql.org; Wed, 02 Jul 2025 09:26:01 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uWtj4-00DoWC-TC for pgsql-hackers@arkaria.postgresql.org; Wed, 02 Jul 2025 09:25:59 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uWtj4-00DoVg-Ge for pgsql-hackers@lists.postgresql.org; Wed, 02 Jul 2025 09:25:59 +0000 Received: from mail-ua1-x92c.google.com ([2607:f8b0:4864:20::92c]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uWtj2-005H3c-2W for pgsql-hackers@lists.postgresql.org; Wed, 02 Jul 2025 09:25:58 +0000 Received: by mail-ua1-x92c.google.com with SMTP id a1e0cc1a2514c-87f234ba1abso763531241.1 for ; Wed, 02 Jul 2025 02:25:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751448355; x=1752053155; 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=2vmHZ+le0PrDWoQh3/E5Y4idIMgkPPRMV7I/2f5Vcys=; b=TZ4kakP2JspHbJS0wDMjTCr7IxmVLF8uhbjPnZ3bZ4p+XGrDEAblotXgDmweAMq5Hs ah6FuWZw8nm1wieBTbDcEX7unzGCBfMahErFvC/jXSTw61NUCcBeSnHQRX5Bw7BHGCDE cYCrIvYhrV+Yr2XFHTNorUaaFqB4IEazIctn+TggRBjupt7khpdUxYlE7mXeT+e6sstK 5psK+QXSW1J35DZ73DhkaQciveaCWIZgRvvdNeqoIn149mEZdQmS+wnpidNfSU7wVUV3 CrB33MR7a3vcaM8qv/p4Jkg2VVe4ppfx2QEU/rbcieQ92LDp3/B3cDxJjoN5td8QDDaW PYTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751448355; x=1752053155; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=2vmHZ+le0PrDWoQh3/E5Y4idIMgkPPRMV7I/2f5Vcys=; b=l2LecpiKWXXFiv2hru2qbf8eRJq4lhOiVRLhffRGbdWsGbYzptCcJD3jL6Qba7OhMI xBLu67YOlY0t1qGsb7iRWZm2/4NJVaSeiT4rbrw262urkIYXVaJomOwlLYNzNGsUrCqo TVUXhWYgdck5MLfYaqjL5sK3BJWgKpZBbD61l8J2rJWBA8dFCbd/r+x5kzWdpSCJkdas RUfnyOytnUeCtEp5DYazFpK1POIUt56fiqkh0dfIpQMHrjuzPViAdQI1EMj1ONiGAyBV uBRrwCvtMm+1xPXmNTOsRm39RMFDE4jvIXax/GpY4HOH1rEiDMY95PI1f5+09vw9Ameg VK3g== X-Forwarded-Encrypted: i=1; AJvYcCUZiEiOFvYNiQ0Ey3cDO9kSOrbVm40AeWzLrMVSAQe8ygL6rMTej1A4aJyuOVjcp90X6ZpWAwwZ2VGdrxFk@lists.postgresql.org X-Gm-Message-State: AOJu0YzEbNtuiyFdpnwE61yRr8cwu9bIJS3dc71BSEynVbMKp+PhRNtG c54VrfWhQg1yOwaYVuDrdZfVzIcrWSsTLfAOEuIxD/fhtk4vtYStnFg+d9a8mQA0TPQtzN8yZM/ LOAq0NkwmZOwTjPmxO+Ey0lkGA7XTi+I= X-Gm-Gg: ASbGncuXkmwrD9XtWeUK3qdoPaB28iSla8srljT6hgoVqbIwO5jp+h9oXHGerhRvOgT tQVIA6mj7E/fN/B4uvB+sH0Ii49C7asU+47DU24dN/cSq1jRti50I/+bfyvx+uGUVFUOWhkRzcX r9C1wSXbHisvmu7SqFLVi9KbX/u1CwSzrNjLY02zF66QLYzCXM/HLR2cSlIVAXkW7P6g6L4pfYg Sc= X-Google-Smtp-Source: AGHT+IFZqTC57T4F/+nfYUXnZCMJnWCQJ5jLu+tcwOSwnHTc7imF5rgBQfP8A/YpFX8G0EKBdwv9DfixuxUAQhgomro= X-Received: by 2002:a05:6102:3713:b0:4e7:db33:5980 with SMTP id ada2fe7eead31-4f1610afa0dmr748993137.11.1751448355246; Wed, 02 Jul 2025 02:25:55 -0700 (PDT) MIME-Version: 1.0 References: <90dc6e9d-9348-485a-b27c-7b1637f06c2e@uni-muenster.de> In-Reply-To: From: jian he Date: Wed, 2 Jul 2025 17:25:18 +0800 X-Gm-Features: Ac12FXzrAondZgcfpkOOgRoD9fy6PsFHANuSgCx22exL0yuDhN8sLU6bv6xpux8 Message-ID: Subject: Re: Change COPY ... ON_ERROR ignore to ON_ERROR ignore_row To: torikoshia Cc: Masahiko Sawada , vignesh C , Jim Jones , Kirill Reshke , Fujii Masao , "David G. Johnston" , Yugo NAGATA , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000000ec0290638eed9cb" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000000ec0290638eed9cb Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Jul 1, 2025 at 10:54=E2=80=AFPM torikoshia wrote: > > Hi, > > Thanks for updating the patch and I've read > v17-0001-COPY-on_error-set_null.patch and here are some comments. > > + if (current_row_erroneous) > + cstate->num_errors++; > > Is there any reason this error counting isn't placed inside the "if > (cstate->opts.on_error =3D=3D COPY_ON_ERROR_SET_NULL)" block? > As far as I can tell, current_row_erroneous is only modified within that > block, so it might make sense to keep this logic together for clarity. > > These may be very minor, but I noticed a few inconsistencies in casing > and wording: > > + * If ON_ERROR is specified with IGNORE, skip rows with > soft errors. > + * If ON_ERROR is specified with set_null, try to > replace with null. > > IGNORE is in uppercase, but set_null is lowercase. > > + * we use it to count number of rows > (not fields!) that > + * successfully applied on_error > set_null. > > The sentence should begin with a capital: "We use it..." > Also, I felt it's unclear what "we use it" means. Does it necessary? > hi. I changed this comment, also heavily refactored CopyFromTextLikeOneRow base= d on v17-0001-COPY-on_error-set_null.patch. Now it looks way more intuitive, IMHO. CopyFromTextLikeOneRow else if (!InputFunctionCallSafe(&in_functions[m], string, typioparams[m], att->atttypmod, (Node *) cstate->escontext, &values[m])) { if (cstate->opts.on_error =3D=3D COPY_ON_ERROR_IGNORE) ////code for on_errr ignore else if (cstate->opts.on_error =3D=3D COPY_ON_ERROR_SET_NULL) ////code for on_errr set_null if (cstate->opts.log_verbosity =3D=3D COPY_LOG_VERBOSITY_VERBOSE) //code for verbose message for on_error ignore or on_error set_null if (cstate->opts.on_error =3D=3D COPY_ON_ERROR_IGNORE) ////code for on_errr ignore loop control else if (cstate->opts.on_error =3D=3D COPY_ON_ERROR_SET_NULL) ////code for on_errr set_null loop control } > +COPY x to stdout (on_error set_null); > +ERROR: COPY ON_ERROR cannot be used with COPY TO > +LINE 1: COPY x to stdout (on_error set_null); > > COPY is uppercase, but to is lowercase. > > +COPY x from stdin (format BINARY, on_error set_null); > +ERROR: only ON_ERROR STOP is allowed in BINARY mode > +COPY x from stdin (on_error set_null, reject_limit 2); > +ERROR: COPY REJECT_LIMIT requires ON_ERROR to be set to IGNORE > ... > +COPY t_on_error_null FROM STDIN WITH (on_error set_null); > +ERROR: domain d_int_not_null does not allow null values > +CONTEXT: COPY t_on_error_null, line 1, column a: null input > > It might be better to consider standardizing casing across all COPY > statements (e.g., COPY ... TO, COPY ... FROM STDIN) for consistency. > I followed near code conventions, changing the casing here seems not necess= ary. --0000000000000ec0290638eed9cb Content-Type: text/x-patch; charset="US-ASCII"; name="v18-0001-COPY-on_error-set_null.patch" Content-Disposition: attachment; filename="v18-0001-COPY-on_error-set_null.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mclr1tt50 RnJvbSBmZWRlZDlmNzU2MmY2MDhlYzk3Y2JiMDgzOTk2NjFjNjQ5NGRmMDIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMiBKdWwgMjAyNSAxNjozMjo1NyArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjE4 IDEvMV0gQ09QWSAob25fZXJyb3Igc2V0X251bGwpCgpDdXJyZW50IGdyYW1tYXIgbWFrZXMgdXMg dW5hYmxlIHRvIHVzZSAib25fZXJyb3IgbnVsbCIuIGlmIHdlIGRpZCBpdCwgdGhlbiBpbgphbGwg dGhlIENPUFkgY29tbWFuZCBvcHRpb25zJ3MgdmFsdWUsIG51bGwgd2lsbCBiZWNvbWUgcmVzZXJ2 ZWQgdG8gbm9uLXJlc2VydmVkCndvcmRzLiAgc28gd2UgY2hvb3NlICJvbl9lcnJvciBzZXRfbnVs bCIuCgpXaGVuIENPUFkgRlJPTSwgaWYgT05fRVJST1IgU0VUX05VTEwgaXMgc3BlY2lmaWVkLCBh bnkgZGF0YSB0eXBlIGNvbnZlcnNpb24KZXJyb3JzIHdpbGwgcmVzdWx0IGluIHRoZSBhZmZlY3Rl ZCBjb2x1bW4gYmVpbmcgc2V0IHRvIE5VTEwuIEhvd2V2ZXIsIGNvbHVtbidzCm5vdC1udWxsIGNv bnN0cmFpbnRzIGFyZSBzdGlsbCBlbmZvcmNlZCwgYXR0ZW1wdGluZyB0byBzZXQgYSBOVUxMIHZh bHVlIGluIHN1Y2gKY29sdW1ucyB3aWxsIHJhaXNlIGEgY29uc3RyYWludCB2aW9sYXRpb24gZXJy b3IuICBUaGlzIGFwcGxpZXMgdG8gY29sdW1uIGRhdGEKdHlwZSBpcyBhIGRvbWFpbiB3aXRoIGEg Tk9UIE5VTEwgY29uc3RyYWludC4KCkF1dGhvcjogSmlhbiBIZSA8amlhbi51bml2ZXJzYWxpdHlA Z21haWwuY29tPgpBdXRob3I6IEtpcmlsbCBSZXNoa2UgPHJlc2hrZWtpcmlsbEBnbWFpbC5jb20+ CgpSZXZpZXdlZC1ieToKRnVqaWkgTWFzYW8gPG1hc2FvLmZ1amlpQG9zcy5udHRkYXRhLmNvbT4K SmltIEpvbmVzIDxqaW0uam9uZXNAdW5pLW11ZW5zdGVyLmRlPgoiRGF2aWQgRy4gSm9obnN0b24i IDxkYXZpZC5nLmpvaG5zdG9uQGdtYWlsLmNvbT4KWXVnbyBOQUdBVEEgPG5hZ2F0YUBzcmFvc3Mu Y28uanA+CnRvcmlrb3NoaWEgPHRvcmlrb3NoaWFAb3NzLm50dGRhdGEuY29tPgpNYXNhaGlrbyBT YXdhZGEgPHNhd2FkYS5tc2hrQGdtYWlsLmNvbT4KQXRzdXNoaSBUb3Jpa29zaGkgPHRvcmlrb3No aWFAb3NzLm50dGRhdGEuY29tPgoKZGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUtG UXV3YXd5MWU2WVI0Uz1qK3k3cFhxZ19EdzFXQlZyZ3ZmPUJQM2QxX2FTZmVfK1FAbWFpbC5nbWFp bC5jb20KY29tbWl0ZmVzdCBlbnRyeTogaHR0cHM6Ly9jb21taXRmZXN0LnBvc3RncmVzcWwub3Jn L3BhdGNoLzQ4MTAKLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbCAgICAgICAgICAgICAg IHwgMzUgKysrKysrKy0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jICAgICAgICAgICAg ICB8ICA2ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jICAgICAgICAgIHwgNDIg KysrKysrKysrLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMgICAgIHwg ODQgKysrKysrKysrKysrKysrKysrKystLS0tCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmlu LmMgICAgICAgICAgIHwgIDIgKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaCAgICAgICAg ICAgICAgfCAgMSArCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5ZnJvbV9pbnRlcm5hbC5oIHwg IDcgKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weTIub3V0ICAgICAgfCA2MCArKysr KysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weTIuc3FsICAgICAgICAgICB8 IDQ2ICsrKysrKysrKysrKysKIDkgZmlsZXMgY2hhbmdlZCwgMjQ3IGluc2VydGlvbnMoKyksIDM2 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sIGIv ZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKaW5kZXggODQzMzM0NGU1YjYuLjI2ZmI0YmUxNzA5 IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvcmVmL2NvcHkuc2dtbApAQCAtMzk0LDIzICszOTQsMzcgQEAgQ09QWSB7IDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNl YWJsZQogICAgICAgU3BlY2lmaWVzIGhvdyB0byBiZWhhdmUgd2hlbiBlbmNvdW50ZXJpbmcgYW4g ZXJyb3IgY29udmVydGluZyBhIGNvbHVtbidzCiAgICAgICBpbnB1dCB2YWx1ZSBpbnRvIGl0cyBk YXRhIHR5cGUuCiAgICAgICBBbiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXJyb3Jf YWN0aW9uPC9yZXBsYWNlYWJsZT4gdmFsdWUgb2YKLSAgICAgIDxsaXRlcmFsPnN0b3A8L2xpdGVy YWw+IG1lYW5zIGZhaWwgdGhlIGNvbW1hbmQsIHdoaWxlCi0gICAgICA8bGl0ZXJhbD5pZ25vcmU8 L2xpdGVyYWw+IG1lYW5zIGRpc2NhcmQgdGhlIGlucHV0IHJvdyBhbmQgY29udGludWUgd2l0aCB0 aGUgbmV4dCBvbmUuCisgICAgICA8bGl0ZXJhbD5zdG9wPC9saXRlcmFsPiBtZWFucyBmYWlsIHRo ZSBjb21tYW5kLAorICAgICAgPGxpdGVyYWw+aWdub3JlPC9saXRlcmFsPiBtZWFucyBkaXNjYXJk IHRoZSBpbnB1dCByb3cgYW5kIGNvbnRpbnVlIHdpdGggdGhlIG5leHQgb25lLAorICAgICAgYW5k IDxsaXRlcmFsPnNldF9udWxsPC9saXRlcmFsPiBtZWFucyByZXBsYWNlIGNvbHVtbiBjb250YWlu aW5nIGludmFsaWQKKyAgICAgIGlucHV0IHZhbHVlIHdpdGggPGxpdGVyYWw+TlVMTDwvbGl0ZXJh bD4gYW5kIG1vdmUgdG8gdGhlIG5leHQgZmllbGQuCiAgICAgICBUaGUgZGVmYXVsdCBpcyA8bGl0 ZXJhbD5zdG9wPC9saXRlcmFsPi4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KLSAgICAgIFRo ZSA8bGl0ZXJhbD5pZ25vcmU8L2xpdGVyYWw+IG9wdGlvbiBpcyBhcHBsaWNhYmxlIG9ubHkgZm9y IDxjb21tYW5kPkNPUFkgRlJPTTwvY29tbWFuZD4KKyAgICAgIFRoZSA8bGl0ZXJhbD5pZ25vcmU8 L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD5zZXRfbnVsbDwvbGl0ZXJhbD4KKyAgICAgIG9wdGlvbnMg YXJlIGFwcGxpY2FibGUgb25seSBmb3IgPGNvbW1hbmQ+Q09QWSBGUk9NPC9jb21tYW5kPgogICAg ICAgd2hlbiB0aGUgPGxpdGVyYWw+Rk9STUFUPC9saXRlcmFsPiBpcyA8bGl0ZXJhbD50ZXh0PC9s aXRlcmFsPiBvciA8bGl0ZXJhbD5jc3Y8L2xpdGVyYWw+LgogICAgICA8L3BhcmE+CisgICAgPHBh cmE+CisgICAgICBGb3IgPGxpdGVyYWw+aWdub3JlPC9saXRlcmFsPiBvcHRpb24sIGEgPGxpdGVy YWw+Tk9USUNFPC9saXRlcmFsPiBtZXNzYWdlCisgICAgICBjb250YWluaW5nIHRoZSBpZ25vcmVk IHJvdyBjb3VudCBpcyBlbWl0dGVkIGF0IHRoZSBlbmQgb2YgdGhlIDxjb21tYW5kPkNPUFkKKyAg ICAgIEZST008L2NvbW1hbmQ+IGlmIGF0IGxlYXN0IG9uZSByb3cgd2FzIGRpc2NhcmRlZC4KKyAg ICAgIEZvciA8bGl0ZXJhbD5zZXRfbnVsbDwvbGl0ZXJhbD4gb3B0aW9uLAorICAgICAgYSA8bGl0 ZXJhbD5OT1RJQ0U8L2xpdGVyYWw+IG1lc3NhZ2UgaW5kaWNhdGluZyB0aGUgbnVtYmVyIG9mIHJv d3MKKyAgICAgIHdoZXJlIGludmFsaWQgaW5wdXQgdmFsdWVzIHdlcmUgcmVwbGFjZWQgd2l0aCBu dWxsIGlzIGVtaXR0ZWQKKyAgICAgIGF0IHRoZSBlbmQgb2YgdGhlIDxjb21tYW5kPkNPUFkgRlJP TTwvY29tbWFuZD4gaWYgYXQgbGVhc3Qgb25lIHJvdyB3YXMgcmVwbGFjZWQuCisgICAgIDwvcGFy YT4KICAgICAgPHBhcmE+Ci0gICAgICBBIDxsaXRlcmFsPk5PVElDRTwvbGl0ZXJhbD4gbWVzc2Fn ZSBjb250YWluaW5nIHRoZSBpZ25vcmVkIHJvdyBjb3VudCBpcwotICAgICAgZW1pdHRlZCBhdCB0 aGUgZW5kIG9mIHRoZSA8Y29tbWFuZD5DT1BZIEZST008L2NvbW1hbmQ+IGlmIGF0IGxlYXN0IG9u ZQotICAgICAgcm93IHdhcyBkaXNjYXJkZWQuIFdoZW4gPGxpdGVyYWw+TE9HX1ZFUkJPU0lUWTwv bGl0ZXJhbD4gb3B0aW9uIGlzIHNldCB0bwotICAgICAgPGxpdGVyYWw+dmVyYm9zZTwvbGl0ZXJh bD4sIGEgPGxpdGVyYWw+Tk9USUNFPC9saXRlcmFsPiBtZXNzYWdlCisgICAgICBXaGVuIDxsaXRl cmFsPkxPR19WRVJCT1NJVFk8L2xpdGVyYWw+IG9wdGlvbiBpcyBzZXQgdG8gPGxpdGVyYWw+dmVy Ym9zZTwvbGl0ZXJhbD4sCisgICAgICBmb3IgPGxpdGVyYWw+aWdub3JlPC9saXRlcmFsPiBvcHRp b24sIGEgPGxpdGVyYWw+Tk9USUNFPC9saXRlcmFsPiBtZXNzYWdlCiAgICAgICBjb250YWluaW5n IHRoZSBsaW5lIG9mIHRoZSBpbnB1dCBmaWxlIGFuZCB0aGUgY29sdW1uIG5hbWUgd2hvc2UgaW5w dXQKLSAgICAgIGNvbnZlcnNpb24gaGFzIGZhaWxlZCBpcyBlbWl0dGVkIGZvciBlYWNoIGRpc2Nh cmRlZCByb3cuCisgICAgICBjb252ZXJzaW9uIGhhcyBmYWlsZWQgaXMgZW1pdHRlZCBmb3IgZWFj aCBkaXNjYXJkZWQgcm93OworICAgICAgZm9yIDxsaXRlcmFsPnNldF9udWxsPC9saXRlcmFsPiBv cHRpb24sIGEgPGxpdGVyYWw+Tk9USUNFPC9saXRlcmFsPgorICAgICAgbWVzc2FnZSBjb250YWlu aW5nIHRoZSBsaW5lIG9mIHRoZSBpbnB1dCBmaWxlIGFuZCB0aGUgY29sdW1uIG5hbWUgd2hlcmUK KyAgICAgIHZhbHVlIHdhcyByZXBsYWNlZCB3aXRoIDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+IGZv ciBlYWNoIGlucHV0IGNvbnZlcnNpb24KKyAgICAgIGZhaWx1cmUuCiAgICAgICBXaGVuIGl0IGlz IHNldCB0byA8bGl0ZXJhbD5zaWxlbnQ8L2xpdGVyYWw+LCBubyBtZXNzYWdlIGlzIGVtaXR0ZWQK LSAgICAgIHJlZ2FyZGluZyBpZ25vcmVkIHJvd3MuCisgICAgICByZWdhcmRpbmcgaW5wdXQgY29u dmVyc2lvbiBmYWlsZWQgcm93cy4KICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8 L3Zhcmxpc3RlbnRyeT4KQEAgLTQ1OCw3ICs0NzIsOCBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxl CiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICBUaGlzIGlzIGN1cnJlbnRseSB1c2Vk IGluIDxjb21tYW5kPkNPUFkgRlJPTTwvY29tbWFuZD4gY29tbWFuZCB3aGVuCi0gICAgICA8bGl0 ZXJhbD5PTl9FUlJPUjwvbGl0ZXJhbD4gb3B0aW9uIGlzIHNldCB0byA8bGl0ZXJhbD5pZ25vcmU8 L2xpdGVyYWw+LgorICAgICAgPGxpdGVyYWw+T05fRVJST1I8L2xpdGVyYWw+IG9wdGlvbiBpcyBz ZXQgdG8gPGxpdGVyYWw+aWdub3JlPC9saXRlcmFsPgorICAgICAgb3IgPGxpdGVyYWw+c2V0X251 bGw8L2xpdGVyYWw+LgogICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxp c3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NvcHkuYwppbmRleCA3NGFlNDJiMTlhNy4uZjk2M2QwZTUxZmYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5LmMKQEAgLTQwMywxMiArNDAzLDE0IEBAIGRlZkdldENvcHlPbkVycm9yQ2hv aWNlKERlZkVsZW0gKmRlZiwgUGFyc2VTdGF0ZSAqcHN0YXRlLCBib29sIGlzX2Zyb20pCiAJCQkJ IHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRlZi0+bG9jYXRpb24pKSk7CiAKIAkvKgotCSAq IEFsbG93ICJzdG9wIiwgb3IgImlnbm9yZSIgdmFsdWVzLgorCSAqIEFsbG93ICJzdG9wIiwgImln bm9yZSIsICJzZXRfbnVsbCIgdmFsdWVzLgogCSAqLwogCWlmIChwZ19zdHJjYXNlY21wKHN2YWws ICJzdG9wIikgPT0gMCkKIAkJcmV0dXJuIENPUFlfT05fRVJST1JfU1RPUDsKIAlpZiAocGdfc3Ry Y2FzZWNtcChzdmFsLCAiaWdub3JlIikgPT0gMCkKIAkJcmV0dXJuIENPUFlfT05fRVJST1JfSUdO T1JFOworCWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJzZXRfbnVsbCIpID09IDApCisJCXJldHVy biBDT1BZX09OX0VSUk9SX1NFVF9OVUxMOwogCiAJZXJlcG9ydChFUlJPUiwKIAkJCShlcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLApAQCAtOTE4LDcgKzkyMCw3IEBAIFBy b2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJKGVycmNvZGUoRVJSQ09E RV9TWU5UQVhfRVJST1IpLAogCQkJCSBlcnJtc2coIm9ubHkgT05fRVJST1IgU1RPUCBpcyBhbGxv d2VkIGluIEJJTkFSWSBtb2RlIikpKTsKIAotCWlmIChvcHRzX291dC0+cmVqZWN0X2xpbWl0ICYm ICFvcHRzX291dC0+b25fZXJyb3IpCisJaWYgKG9wdHNfb3V0LT5yZWplY3RfbGltaXQgJiYgb3B0 c19vdXQtPm9uX2Vycm9yICE9IENPUFlfT05fRVJST1JfSUdOT1JFKQogCQllcmVwb3J0KEVSUk9S LAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkvKi0g dHJhbnNsYXRvcjogZmlyc3QgYW5kIHNlY29uZCAlcyBhcmUgdGhlIG5hbWVzIG9mIENPUFkgb3B0 aW9uLCBlLmcuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYwppbmRleCBmYmJiYzA5YTk3Yi4uNzUwZDU5 N2Q0ZDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYwpAQCAtMTQ2NywxNCArMTQ2NywyMiBAQCBD b3B5RnJvbShDb3B5RnJvbVN0YXRlIGNzdGF0ZSkKIAkvKiBEb25lLCBjbGVhbiB1cCAqLwogCWVy cm9yX2NvbnRleHRfc3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91czsKIAotCWlmIChjc3RhdGUt Pm9wdHMub25fZXJyb3IgIT0gQ09QWV9PTl9FUlJPUl9TVE9QICYmCi0JCWNzdGF0ZS0+bnVtX2Vy cm9ycyA+IDAgJiYKKwlpZiAoY3N0YXRlLT5udW1fZXJyb3JzID4gMCAmJgogCQljc3RhdGUtPm9w dHMubG9nX3ZlcmJvc2l0eSA+PSBDT1BZX0xPR19WRVJCT1NJVFlfREVGQVVMVCkKLQkJZXJlcG9y dChOT1RJQ0UsCi0JCQkJZXJybXNnX3BsdXJhbCgiJSIgUFJJdTY0ICIgcm93IHdhcyBza2lwcGVk IGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IiwKLQkJCQkJCQkgICIlIiBQUkl1NjQg IiByb3dzIHdlcmUgc2tpcHBlZCBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eSIsCi0J CQkJCQkJICBjc3RhdGUtPm51bV9lcnJvcnMsCi0JCQkJCQkJICBjc3RhdGUtPm51bV9lcnJvcnMp KTsKKwl7CisJCWlmIChjc3RhdGUtPm9wdHMub25fZXJyb3IgPT0gQ09QWV9PTl9FUlJPUl9JR05P UkUpCisJCQllcmVwb3J0KE5PVElDRSwKKwkJCQkJZXJybXNnX3BsdXJhbCgiJSIgUFJJdTY0ICIg cm93IHdhcyBza2lwcGVkIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IiwKKwkJCQkJ CQkJICAiJSIgUFJJdTY0ICIgcm93cyB3ZXJlIHNraXBwZWQgZHVlIHRvIGRhdGEgdHlwZSBpbmNv bXBhdGliaWxpdHkiLAorCQkJCQkJCQkgIGNzdGF0ZS0+bnVtX2Vycm9ycywKKwkJCQkJCQkJICBj c3RhdGUtPm51bV9lcnJvcnMpKTsKKwkJZWxzZSBpZiAoY3N0YXRlLT5vcHRzLm9uX2Vycm9yID09 IENPUFlfT05fRVJST1JfU0VUX05VTEwpCisJCQllcmVwb3J0KE5PVElDRSwKKwkJCQkJZXJybXNn X3BsdXJhbCgiaW52YWxpZCB2YWx1ZXMgaW4gJSIgUFJJdTY0ICIgcm93IHdhcyByZXBsYWNlZCB3 aXRoIG51bGwgZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkiLAorCQkJCQkJCQkgICJp bnZhbGlkIHZhbHVlcyBpbiAlIiBQUkl1NjQgIiByb3dzIHdlcmUgcmVwbGFjZWQgd2l0aCBudWxs IGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IiwKKwkJCQkJCQkJICBjc3RhdGUtPm51 bV9lcnJvcnMsCisJCQkJCQkJCSAgY3N0YXRlLT5udW1fZXJyb3JzKSk7CisJfQogCiAJaWYgKGJp c3RhdGUgIT0gTlVMTCkKIAkJRnJlZUJ1bGtJbnNlcnRTdGF0ZShiaXN0YXRlKTsKQEAgLTE2MTQs NiArMTYyMiwxOSBAQCBCZWdpbkNvcHlGcm9tKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJfQogCX0K IAorCWlmIChjc3RhdGUtPm9wdHMub25fZXJyb3IgPT0gQ09QWV9PTl9FUlJPUl9TRVRfTlVMTCkK Kwl7CisJCWludAlhdHRyX2NvdW50ID0gbGlzdF9sZW5ndGgoY3N0YXRlLT5hdHRudW1saXN0KTsK KworCQljc3RhdGUtPmRvbWFpbl93aXRoX2NvbnN0cmFpbnQgPSAoYm9vbCAqKSBwYWxsb2MwKGF0 dHJfY291bnQgKiBzaXplb2YoYm9vbCkpOworCQlmb3JlYWNoX2ludChhdHRubywgY3N0YXRlLT5h dHRudW1saXN0KQorCQl7CisJCQlpbnQJCQlpID0gZm9yZWFjaF9jdXJyZW50X2luZGV4KGF0dG5v KTsKKwkJCUZvcm1fcGdfYXR0cmlidXRlIGF0dCA9IFR1cGxlRGVzY0F0dHIodHVwRGVzYywgYXR0 bm8gLSAxKTsKKwkJCWNzdGF0ZS0+ZG9tYWluX3dpdGhfY29uc3RyYWludFtpXSA9IERvbWFpbkhh c0NvbnN0cmFpbnRzKGF0dC0+YXR0dHlwaWQpOworCQl9CisJfQorCiAJLyogU2V0IHVwIHNvZnQg ZXJyb3IgaGFuZGxlciBmb3IgT05fRVJST1IgKi8KIAlpZiAoY3N0YXRlLT5vcHRzLm9uX2Vycm9y ICE9IENPUFlfT05fRVJST1JfU1RPUCkKIAl7CkBAIC0xNjIyLDEwICsxNjQzLDExIEBAIEJlZ2lu Q29weUZyb20oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQljc3RhdGUtPmVzY29udGV4dC0+ZXJyb3Jf b2NjdXJyZWQgPSBmYWxzZTsKIAogCQkvKgotCQkgKiBDdXJyZW50bHkgd2Ugb25seSBzdXBwb3J0 IENPUFlfT05fRVJST1JfSUdOT1JFLiBXZSdsbCBhZGQgb3RoZXIKLQkJICogb3B0aW9ucyBsYXRl cgorCQkgKiBDdXJyZW50bHkgd2Ugb25seSBzdXBwb3J0IENPUFlfT05fRVJST1JfSUdOT1JFLCBD T1BZX09OX0VSUk9SX1NFVF9OVUxMLgorCQkgKiBXZSdsbCBhZGQgb3RoZXIgb3B0aW9ucyBsYXRl cgogCQkgKi8KLQkJaWYgKGNzdGF0ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX0lH Tk9SRSkKKwkJaWYgKGNzdGF0ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX0lHTk9S RSB8fAorCQkJY3N0YXRlLT5vcHRzLm9uX2Vycm9yID09IENPUFlfT05fRVJST1JfU0VUX05VTEwp CiAJCQljc3RhdGUtPmVzY29udGV4dC0+ZGV0YWlsc193YW50ZWQgPSBmYWxzZTsKIAl9CiAJZWxz ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5jCmluZGV4IGY1MmYyNDc3ZGYxLi4yMTQ3 ZDg0MjNmZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYwpAQCAtOTQ3LDYgKzk0 Nyw3IEBAIENvcHlGcm9tVGV4dExpa2VPbmVSb3coQ29weUZyb21TdGF0ZSBjc3RhdGUsIEV4cHJD b250ZXh0ICplY29udGV4dCwKIAlpbnQJCQlmbGRjdDsKIAlpbnQJCQlmaWVsZG5vOwogCWNoYXIJ ICAgKnN0cmluZzsKKwlib29sCQljdXJyZW50X3Jvd19lcnJvbmVvdXMgPSBmYWxzZTsKIAogCXR1 cERlc2MgPSBSZWxhdGlvbkdldERlc2NyKGNzdGF0ZS0+cmVsKTsKIAlhdHRyX2NvdW50ID0gbGlz dF9sZW5ndGgoY3N0YXRlLT5hdHRudW1saXN0KTsKQEAgLTEwMjQsNyArMTAyNSw4IEBAIENvcHlG cm9tVGV4dExpa2VPbmVSb3coQ29weUZyb21TdGF0ZSBjc3RhdGUsIEV4cHJDb250ZXh0ICplY29u dGV4dCwKIAkJfQogCiAJCS8qCi0JCSAqIElmIE9OX0VSUk9SIGlzIHNwZWNpZmllZCB3aXRoIElH Tk9SRSwgc2tpcCByb3dzIHdpdGggc29mdCBlcnJvcnMKKwkJICogSWYgT05fRVJST1IgaXMgc3Bl Y2lmaWVkIHdpdGggSUdOT1JFLCBza2lwIHJvd3Mgd2l0aCBzb2Z0IGVycm9ycy4KKwkJICogSWYg T05fRVJST1IgaXMgc3BlY2lmaWVkIHdpdGggU0VUX05VTEwsIHRyeSB0byByZXBsYWNlIHdpdGgg bnVsbC4KIAkJICovCiAJCWVsc2UgaWYgKCFJbnB1dEZ1bmN0aW9uQ2FsbFNhZmUoJmluX2Z1bmN0 aW9uc1ttXSwKIAkJCQkJCQkJCQlzdHJpbmcsCkBAIC0xMDM1LDcgKzEwMzcsNTAgQEAgQ29weUZy b21UZXh0TGlrZU9uZVJvdyhDb3B5RnJvbVN0YXRlIGNzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250 ZXh0LAogCQl7CiAJCQlBc3NlcnQoY3N0YXRlLT5vcHRzLm9uX2Vycm9yICE9IENPUFlfT05fRVJS T1JfU1RPUCk7CiAKLQkJCWNzdGF0ZS0+bnVtX2Vycm9ycysrOworCQkJaWYgKGNzdGF0ZS0+b3B0 cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX0lHTk9SRSkKKwkJCQljc3RhdGUtPm51bV9lcnJv cnMrKzsKKwkJCWVsc2UgaWYgKGNzdGF0ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9S X1NFVF9OVUxMKQorCQkJeworCQkJCWNzdGF0ZS0+ZXNjb250ZXh0LT5lcnJvcl9vY2N1cnJlZCA9 IGZhbHNlOworCQkJCUFzc2VydChjc3RhdGUtPmRvbWFpbl93aXRoX2NvbnN0cmFpbnQgIT0gTlVM TCk7CisKKwkJCQkvKgorCQkJCSAqIFdoZW4gdGhlIGNvbHVtbidzIHR5cGUgaXMgYSBkb21haW4g d2l0aCBjb25zdHJhaW50cywgYW4KKwkJCQkgKiBhZGRpdGlvbmFsIElucHV0RnVuY3Rpb25DYWxs U2FmZSBtYXkgYmUgbmVlZGVkIHRvIHJhaXNlCisJCQkJICogZXJyb3JzIGZvciBkb21haW4gY29u c3RyYWludCB2aW9sYXRpb25zLgorCQkJCSovCisJCQkJaWYgKCFjc3RhdGUtPmRvbWFpbl93aXRo X2NvbnN0cmFpbnRbbV0gfHwKKwkJCQkJSW5wdXRGdW5jdGlvbkNhbGxTYWZlKCZpbl9mdW5jdGlv bnNbbV0sCisJCQkJCQkJCQkJICBOVUxMLAorCQkJCQkJCQkJCSAgdHlwaW9wYXJhbXNbbV0sCisJ CQkJCQkJCQkJICBhdHQtPmF0dHR5cG1vZCwKKwkJCQkJCQkJCQkgIChOb2RlICopIGNzdGF0ZS0+ ZXNjb250ZXh0LAorCQkJCQkJCQkJCSAgJnZhbHVlc1ttXSkpCisJCQkJeworCQkJCQludWxsc1tt XSA9IHRydWU7CisJCQkJCXZhbHVlc1ttXSA9IChEYXR1bSkgMDsKKwkJCQl9CisJCQkJZWxzZSBp ZiAoc3RyaW5nID09IE5VTEwpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJZXJyY29kZShF UlJDT0RFX05PVF9OVUxMX1ZJT0xBVElPTiksCisJCQkJCQkJZXJybXNnKCJkb21haW4gJXMgZG9l cyBub3QgYWxsb3cgbnVsbCB2YWx1ZXMiLCBmb3JtYXRfdHlwZV9iZSh0eXBpb3BhcmFtc1ttXSkp LAorCQkJCQkJCWVycmRhdGF0eXBlKHR5cGlvcGFyYW1zW21dKSk7CisJCQkJZWxzZQorCQkJCQll cmVwb3J0KEVSUk9SLAorCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQUkVT RU5UQVRJT04pLAorCQkJCQkJCWVycm1zZygiaW52YWxpZCBpbnB1dCB2YWx1ZSBmb3IgZG9tYWlu ICVzOiBcIiVzXCIiLAorCQkJCQkJCQkgICBmb3JtYXRfdHlwZV9iZSh0eXBpb3BhcmFtc1ttXSks IHN0cmluZykpOworCisJCQkJLyoKKwkJCQkgKiBXZSBjb3VudCBvbmx5IHRoZSBudW1iZXIgb2Yg cm93cyAobm90IGluZGl2aWR1YWwgZmllbGRzKQorCQkJCSAqIHdoZXJlIE9OX0VSUk9SIFNFVF9O VUxMIHdhcyBzdWNjZXNzZnVsbHkgYXBwbGllZC4KKwkJCQkqLworCQkJCWlmICghY3VycmVudF9y b3dfZXJyb25lb3VzKQorCQkJCXsKKwkJCQkJY3VycmVudF9yb3dfZXJyb25lb3VzID0gdHJ1ZTsK KwkJCQkJY3N0YXRlLT5udW1fZXJyb3JzKys7CisJCQkJfQorCQkJfQogCiAJCQlpZiAoY3N0YXRl LT5vcHRzLmxvZ192ZXJib3NpdHkgPT0gQ09QWV9MT0dfVkVSQk9TSVRZX1ZFUkJPU0UpCiAJCQl7 CkBAIC0xMDUyLDI0ICsxMDk3LDM3IEBAIENvcHlGcm9tVGV4dExpa2VPbmVSb3coQ29weUZyb21T dGF0ZSBjc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwKIAkJCQkJY2hhcgkgICAqYXR0dmFs OwogCiAJCQkJCWF0dHZhbCA9IENvcHlMaW1pdFByaW50b3V0TGVuZ3RoKGNzdGF0ZS0+Y3VyX2F0 dHZhbCk7Ci0JCQkJCWVyZXBvcnQoTk9USUNFLAotCQkJCQkJCWVycm1zZygic2tpcHBpbmcgcm93 IGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IGF0IGxpbmUgJSIgUFJJdTY0ICIgZm9y IGNvbHVtbiBcIiVzXCI6IFwiJXNcIiIsCi0JCQkJCQkJCSAgIGNzdGF0ZS0+Y3VyX2xpbmVubywK LQkJCQkJCQkJICAgY3N0YXRlLT5jdXJfYXR0bmFtZSwKLQkJCQkJCQkJICAgYXR0dmFsKSk7CisK KwkJCQkJaWYgKGNzdGF0ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX0lHTk9SRSkK KwkJCQkJCWVyZXBvcnQoTk9USUNFLAorCQkJCQkJCQllcnJtc2coInNraXBwaW5nIHJvdyBkdWUg dG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eSBhdCBsaW5lICUiIFBSSXU2NCAiIGZvciBjb2x1 bW4gXCIlc1wiOiBcIiVzXCIiLAorCQkJCQkJCQkJICAgY3N0YXRlLT5jdXJfbGluZW5vLAorCQkJ CQkJCQkJICAgY3N0YXRlLT5jdXJfYXR0bmFtZSwKKwkJCQkJCQkJCSAgIGF0dHZhbCkpOworCQkJ CQllbHNlIGlmIChjc3RhdGUtPm9wdHMub25fZXJyb3IgPT0gQ09QWV9PTl9FUlJPUl9TRVRfTlVM TCkKKwkJCQkJCWVyZXBvcnQoTk9USUNFLAorCQkJCQkJCQkJZXJybXNnKCJzZXR0aW5nIHRvIG51 bGwgZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkgYXQgbGluZSAlIiBQUkl1NjQgIiBm b3IgY29sdW1uIFwiJXNcIjogXCIlc1wiIiwKKwkJCQkJCQkJCQkJY3N0YXRlLT5jdXJfbGluZW5v LAorCQkJCQkJCQkJCQljc3RhdGUtPmN1cl9hdHRuYW1lLAorCQkJCQkJCQkJCQlhdHR2YWwpKTsK IAkJCQkJcGZyZWUoYXR0dmFsKTsKIAkJCQl9CiAJCQkJZWxzZQotCQkJCQllcmVwb3J0KE5PVElD RSwKLQkJCQkJCQllcnJtc2coInNraXBwaW5nIHJvdyBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0 aWJpbGl0eSBhdCBsaW5lICUiIFBSSXU2NCAiIGZvciBjb2x1bW4gXCIlc1wiOiBudWxsIGlucHV0 IiwKLQkJCQkJCQkJICAgY3N0YXRlLT5jdXJfbGluZW5vLAotCQkJCQkJCQkgICBjc3RhdGUtPmN1 cl9hdHRuYW1lKSk7Ci0KKwkJCQl7CisJCQkJCWlmIChjc3RhdGUtPm9wdHMub25fZXJyb3IgPT0g Q09QWV9PTl9FUlJPUl9JR05PUkUpCisJCQkJCQllcmVwb3J0KE5PVElDRSwKKwkJCQkJCQkJZXJy bXNnKCJza2lwcGluZyByb3cgZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkgYXQgbGlu ZSAlIiBQUkl1NjQgIiBmb3IgY29sdW1uIFwiJXNcIjogbnVsbCBpbnB1dCIsCisJCQkJCQkJCQkg ICBjc3RhdGUtPmN1cl9saW5lbm8sCisJCQkJCQkJCQkgICBjc3RhdGUtPmN1cl9hdHRuYW1lKSk7 CisJCQkJfQogCQkJCS8qIHJlc2V0IHJlbG5hbWVfb25seSAqLwogCQkJCWNzdGF0ZS0+cmVsbmFt ZV9vbmx5ID0gZmFsc2U7CiAJCQl9CiAKLQkJCXJldHVybiB0cnVlOworCQkJaWYgKGNzdGF0ZS0+ b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX0lHTk9SRSkKKwkJCQlyZXR1cm4gdHJ1ZTsK KwkJCWVsc2UgaWYgKGNzdGF0ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX1NFVF9O VUxMKQorCQkJCWNvbnRpbnVlOwogCQl9CiAKIAkJY3N0YXRlLT5jdXJfYXR0bmFtZSA9IE5VTEw7 CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3Bz cWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXggOGMyZWEwYjk1ODcuLmE1ODdmNDE2MmVlIDEwMDY0 NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9wc3Fs L3RhYi1jb21wbGV0ZS5pbi5jCkBAIC0zMzA1LDcgKzMzMDUsNyBAQCBtYXRjaF9wcmV2aW91c193 b3JkcyhpbnQgcGF0dGVybl9pZCwKIAogCS8qIENvbXBsZXRlIENPUFkgPHN0aD4gRlJPTSBmaWxl bmFtZSBXSVRIIChPTl9FUlJPUiAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkNPUFl8XFxjb3B5Iiwg TWF0Y2hBbnksICJGUk9NfFRPIiwgTWF0Y2hBbnksICJXSVRIIiwgIigiLCAiT05fRVJST1IiKSkK LQkJQ09NUExFVEVfV0lUSCgic3RvcCIsICJpZ25vcmUiKTsKKwkJQ09NUExFVEVfV0lUSCgic3Rv cCIsICJpZ25vcmUiLCAic2V0X251bGwiKTsKIAogCS8qIENvbXBsZXRlIENPUFkgPHN0aD4gRlJP TSBmaWxlbmFtZSBXSVRIIChMT0dfVkVSQk9TSVRZICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQ09Q WXxcXGNvcHkiLCBNYXRjaEFueSwgIkZST018VE8iLCBNYXRjaEFueSwgIldJVEgiLCAiKCIsICJM T0dfVkVSQk9TSVRZIikpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5Lmgg Yi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKaW5kZXggMDZkZmRmZWY3MjEuLjkzNWQyMWVl NzdhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKKysrIGIvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvY29weS5oCkBAIC0zOCw2ICszOCw3IEBAIHR5cGVkZWYgZW51bSBDb3B5 T25FcnJvckNob2ljZQogewogCUNPUFlfT05fRVJST1JfU1RPUCA9IDAsCQkvKiBpbW1lZGlhdGVs eSB0aHJvdyBlcnJvcnMsIGRlZmF1bHQgKi8KIAlDT1BZX09OX0VSUk9SX0lHTk9SRSwJCS8qIGln bm9yZSBlcnJvcnMgKi8KKwlDT1BZX09OX0VSUk9SX1NFVF9OVUxMLAkJLyogc2V0IGVycm9yIGZp ZWxkIHRvIG51bGwgKi8KIH0gQ29weU9uRXJyb3JDaG9pY2U7CiAKIC8qCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5ZnJvbV9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvY29t bWFuZHMvY29weWZyb21faW50ZXJuYWwuaAppbmRleCBjOGIyMmFmMjJkOC4uYzgyYmZhYjQ2MzYg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHlmcm9tX2ludGVybmFsLmgKKysr IGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weWZyb21faW50ZXJuYWwuaApAQCAtMTA4LDYgKzEw OCwxMyBAQCB0eXBlZGVmIHN0cnVjdCBDb3B5RnJvbVN0YXRlRGF0YQogCQkJCQkJCQkgKiBhdHQg Ki8KIAlib29sCSAgICpkZWZhdWx0czsJCS8qIGlmIERFRkFVTFQgbWFya2VyIHdhcyBmb3VuZCBm b3IKIAkJCQkJCQkJICogY29ycmVzcG9uZGluZyBhdHQgKi8KKwkvKgorCSAqIFNldCB0byB0cnVl IGlmIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZSdzIGRhdGEgdHlwZSBpcyBhIGRvbWFpbiB3 aXRoCisJICogY29uc3RyYWludHMuICBUaGlzIGZpZWxkIGlzIHVzdWFsbHkgTlVMTCwgZXhjZXB0 IHdoZW4gT05fRVJST1IgaXMgc2V0IHRvCisJICogU0VUX05VTEwuCisJKi8KKwlib29sCSAgICpk b21haW5fd2l0aF9jb25zdHJhaW50OworCiAJYm9vbAkJdm9sYXRpbGVfZGVmZXhwcnM7CS8qIGlz IGFueSBvZiBkZWZleHBycyB2b2xhdGlsZT8gKi8KIAlMaXN0CSAgICpyYW5nZV90YWJsZTsJLyog c2luZ2xlIGVsZW1lbnQgbGlzdCBvZiBSYW5nZVRibEVudHJ5ICovCiAJTGlzdAkgICAqcnRlcGVy bWluZm9zOwkvKiBzaW5nbGUgZWxlbWVudCBsaXN0IG9mIFJURVBlcm1pc3Npb25JbmZvICovCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkyLm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weTIub3V0CmluZGV4IDY0ZWEzM2FlYWU4Li4zZjg0M2QxY2Q1 YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Mi5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Mi5vdXQKQEAgLTgxLDYgKzgxLDEwIEBAIENP UFkgeCBmcm9tIHN0ZGluIChvbl9lcnJvciBpZ25vcmUsIG9uX2Vycm9yIGlnbm9yZSk7CiBFUlJP UjogIGNvbmZsaWN0aW5nIG9yIHJlZHVuZGFudCBvcHRpb25zCiBMSU5FIDE6IENPUFkgeCBmcm9t IHN0ZGluIChvbl9lcnJvciBpZ25vcmUsIG9uX2Vycm9yIGlnbm9yZSk7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0NPUFkgeCBmcm9tIHN0ZGluIChvbl9l cnJvciBzZXRfbnVsbCwgb25fZXJyb3IgaWdub3JlKTsKK0VSUk9SOiAgY29uZmxpY3Rpbmcgb3Ig cmVkdW5kYW50IG9wdGlvbnMKK0xJTkUgMTogQ09QWSB4IGZyb20gc3RkaW4gKG9uX2Vycm9yIHNl dF9udWxsLCBvbl9lcnJvciBpZ25vcmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4KIENPUFkgeCBmcm9tIHN0ZGluIChsb2dfdmVyYm9zaXR5IGRlZmF1 bHQsIGxvZ192ZXJib3NpdHkgdmVyYm9zZSk7CiBFUlJPUjogIGNvbmZsaWN0aW5nIG9yIHJlZHVu ZGFudCBvcHRpb25zCiBMSU5FIDE6IENPUFkgeCBmcm9tIHN0ZGluIChsb2dfdmVyYm9zaXR5IGRl ZmF1bHQsIGxvZ192ZXJib3NpdHkgdmVyYi4uLgpAQCAtOTIsNiArOTYsMTAgQEAgQ09QWSB4IGZy b20gc3RkaW4gKGZvcm1hdCBCSU5BUlksIG51bGwgJ3gnKTsKIEVSUk9SOiAgY2Fubm90IHNwZWNp ZnkgTlVMTCBpbiBCSU5BUlkgbW9kZQogQ09QWSB4IGZyb20gc3RkaW4gKGZvcm1hdCBCSU5BUlks IG9uX2Vycm9yIGlnbm9yZSk7CiBFUlJPUjogIG9ubHkgT05fRVJST1IgU1RPUCBpcyBhbGxvd2Vk IGluIEJJTkFSWSBtb2RlCitDT1BZIHggZnJvbSBzdGRpbiAoZm9ybWF0IEJJTkFSWSwgb25fZXJy b3Igc2V0X251bGwpOworRVJST1I6ICBvbmx5IE9OX0VSUk9SIFNUT1AgaXMgYWxsb3dlZCBpbiBC SU5BUlkgbW9kZQorQ09QWSB4IGZyb20gc3RkaW4gKG9uX2Vycm9yIHNldF9udWxsLCByZWplY3Rf bGltaXQgMik7CitFUlJPUjogIENPUFkgUkVKRUNUX0xJTUlUIHJlcXVpcmVzIE9OX0VSUk9SIHRv IGJlIHNldCB0byBJR05PUkUKIENPUFkgeCBmcm9tIHN0ZGluIChvbl9lcnJvciB1bnN1cHBvcnRl ZCk7CiBFUlJPUjogIENPUFkgT05fRVJST1IgInVuc3VwcG9ydGVkIiBub3QgcmVjb2duaXplZAog TElORSAxOiBDT1BZIHggZnJvbSBzdGRpbiAob25fZXJyb3IgdW5zdXBwb3J0ZWQpOwpAQCAtMTI0 LDYgKzEzMiwxMCBAQCBDT1BZIHggdG8gc3Rkb3V0IChmb3JtYXQgQklOQVJZLCBvbl9lcnJvciB1 bnN1cHBvcnRlZCk7CiBFUlJPUjogIENPUFkgT05fRVJST1IgY2Fubm90IGJlIHVzZWQgd2l0aCBD T1BZIFRPCiBMSU5FIDE6IENPUFkgeCB0byBzdGRvdXQgKGZvcm1hdCBCSU5BUlksIG9uX2Vycm9y IHVuc3VwcG9ydGVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgorQ09QWSB4IHRvIHN0ZG91dCAob25fZXJyb3Igc2V0X251bGwpOworRVJST1I6ICBDT1BZIE9O X0VSUk9SIGNhbm5vdCBiZSB1c2VkIHdpdGggQ09QWSBUTworTElORSAxOiBDT1BZIHggdG8gc3Rk b3V0IChvbl9lcnJvciBzZXRfbnVsbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIENP UFkgeCBmcm9tIHN0ZGluIChsb2dfdmVyYm9zaXR5IHVuc3VwcG9ydGVkKTsKIEVSUk9SOiAgQ09Q WSBMT0dfVkVSQk9TSVRZICJ1bnN1cHBvcnRlZCIgbm90IHJlY29nbml6ZWQKIExJTkUgMTogQ09Q WSB4IGZyb20gc3RkaW4gKGxvZ192ZXJib3NpdHkgdW5zdXBwb3J0ZWQpOwpAQCAtNzY5LDYgKzc4 MSw1MSBAQCBDT05URVhUOiAgQ09QWSBjaGVja19pZ25fZXJyCiBOT1RJQ0U6ICBza2lwcGluZyBy b3cgZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkgYXQgbGluZSA4IGZvciBjb2x1bW4g ImsiOiAiYSIKIENPTlRFWFQ6ICBDT1BZIGNoZWNrX2lnbl9lcnIKIE5PVElDRTogIDYgcm93cyB3 ZXJlIHNraXBwZWQgZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkKK0NSRUFURSBET01B SU4gZF9pbnRfbm90X251bGwgQVMgSU5UIE5PVCBOVUxMIENIRUNLKHZhbHVlID4gMCk7CitDUkVB VEUgRE9NQUlOIGRfaW50X3Bvc2l0aXZlX21heWJlX251bGwgQVMgSU5UIENIRUNLKHZhbHVlID4g MCk7CitDUkVBVEUgVEFCTEUgdF9vbl9lcnJvcl9udWxsIChhIGRfaW50X25vdF9udWxsLCBiIGRf aW50X3Bvc2l0aXZlX21heWJlX251bGwsIGMgSU5UKTsKK1xwc2V0IG51bGwgTlVMTAorLS1mYWls LCBjb2x1bW4gYSBjYW5ub3Qgc2V0IHRvIG51bGwgdmFsdWUKK0NPUFkgdF9vbl9lcnJvcl9udWxs IEZST00gU1RESU4gV0lUSCAob25fZXJyb3Igc2V0X251bGwpOworRVJST1I6ICBkb21haW4gZF9p bnRfbm90X251bGwgZG9lcyBub3QgYWxsb3cgbnVsbCB2YWx1ZXMKK0NPTlRFWFQ6ICBDT1BZIHRf b25fZXJyb3JfbnVsbCwgbGluZSAxLCBjb2x1bW4gYTogbnVsbCBpbnB1dAorLS1mYWlsLCBjb2x1 bW4gYSBpcyBkb21haW4gd2l0aCBub3QtbnVsbCBjb25zdHJhaW50CitDT1BZIHRfb25fZXJyb3Jf bnVsbCBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9yIHNldF9udWxsKTsKK0VSUk9SOiAgaW52YWxp ZCBpbnB1dCB2YWx1ZSBmb3IgZG9tYWluIGRfaW50X25vdF9udWxsOiAic3MiCitDT05URVhUOiAg Q09QWSB0X29uX2Vycm9yX251bGwsIGxpbmUgMSwgY29sdW1uIGE6ICJzcyIKKy0tZmFpbCwgY29s dW1uIGEgY2Fubm90IHNldCB0byBudWxsIHZhbHVlCitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9N IFNURElOIFdJVEggKG9uX2Vycm9yIHNldF9udWxsKTsKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCB2 YWx1ZSBmb3IgZG9tYWluIGRfaW50X25vdF9udWxsOiAiLTEiCitDT05URVhUOiAgQ09QWSB0X29u X2Vycm9yX251bGwsIGxpbmUgMSwgY29sdW1uIGE6ICItMSIKKy0tZmFpbC4gbGVzcyBkYXRhCitD T1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEggKGRlbGltaXRlciAnLCcsIG9uX2Vy cm9yIHNldF9udWxsKTsKK0VSUk9SOiAgbWlzc2luZyBkYXRhIGZvciBjb2x1bW4gImMiCitDT05U RVhUOiAgQ09QWSB0X29uX2Vycm9yX251bGwsIGxpbmUgMTogIjEsMSIKKy0tZmFpbC4gZXh0cmEg ZGF0YQorQ09QWSB0X29uX2Vycm9yX251bGwgRlJPTSBTVERJTiBXSVRIIChkZWxpbWl0ZXIgJywn LCBvbl9lcnJvciBzZXRfbnVsbCk7CitFUlJPUjogIGV4dHJhIGRhdGEgYWZ0ZXIgbGFzdCBleHBl Y3RlZCBjb2x1bW4KK0NPTlRFWFQ6ICBDT1BZIHRfb25fZXJyb3JfbnVsbCwgbGluZSAxOiAiMSwy LDMsNCIKKy0tb2sKK0NPUFkgdF9vbl9lcnJvcl9udWxsIEZST00gU1RESU4gV0lUSCAob25fZXJy b3Igc2V0X251bGwsIGxvZ192ZXJib3NpdHkgdmVyYm9zZSk7CitOT1RJQ0U6ICBzZXR0aW5nIHRv IG51bGwgZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkgYXQgbGluZSAxIGZvciBjb2x1 bW4gImIiOiAieDEiCitDT05URVhUOiAgQ09QWSB0X29uX2Vycm9yX251bGwKK05PVElDRTogIHNl dHRpbmcgdG8gbnVsbCBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eSBhdCBsaW5lIDEg Zm9yIGNvbHVtbiAiYyI6ICJ5eCIKK0NPTlRFWFQ6ICBDT1BZIHRfb25fZXJyb3JfbnVsbAorTk9U SUNFOiAgc2V0dGluZyB0byBudWxsIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IGF0 IGxpbmUgMiBmb3IgY29sdW1uICJiIjogInp4IgorQ09OVEVYVDogIENPUFkgdF9vbl9lcnJvcl9u dWxsCitOT1RJQ0U6ICBzZXR0aW5nIHRvIG51bGwgZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGli aWxpdHkgYXQgbGluZSAzIGZvciBjb2x1bW4gImMiOiAiZWEiCitDT05URVhUOiAgQ09QWSB0X29u X2Vycm9yX251bGwKK05PVElDRTogIGludmFsaWQgdmFsdWVzIGluIDMgcm93cyB3ZXJlIHJlcGxh Y2VkIHdpdGggbnVsbCBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eQorLS0gY2hlY2sg aW5zZXJ0ZWQgY29udGVudAorc2VsZWN0ICogZnJvbSB0X29uX2Vycm9yX251bGw7CisgYSAgfCAg YiAgIHwgIGMgICAKKy0tLS0rLS0tLS0tKy0tLS0tLQorIDEwIHwgTlVMTCB8IE5VTEwKKyAxMSB8 IE5VTEwgfCAgIDEyCisgMTMgfCAgIDE0IHwgTlVMTAorKDMgcm93cykKKworXHBzZXQgbnVsbCAn JwogLS0gdGVzdHMgZm9yIG9uX2Vycm9yIG9wdGlvbiB3aXRoIGxvZ192ZXJib3NpdHkgYW5kIG51 bGwgY29uc3RyYWludCB2aWEgZG9tYWluCiBDUkVBVEUgRE9NQUlOIGRjaGVja19pZ25fZXJyMiB2 YXJjaGFyKDE1KSBOT1QgTlVMTDsKIENSRUFURSBUQUJMRSBjaGVja19pZ25fZXJyMiAobiBpbnQs IG0gaW50W10sIGsgaW50LCBsIGRjaGVja19pZ25fZXJyMik7CkBAIC04MjgsNiArODg1LDkgQEAg RFJPUCBWSUVXIGluc3RlYWRfb2ZfaW5zZXJ0X3RibF92aWV3OwogRFJPUCBWSUVXIGluc3RlYWRf b2ZfaW5zZXJ0X3RibF92aWV3XzI7CiBEUk9QIEZVTkNUSU9OIGZ1bl9pbnN0ZWFkX29mX2luc2Vy dF90YmwoKTsKIERST1AgVEFCTEUgY2hlY2tfaWduX2VycjsKK0RST1AgVEFCTEUgdF9vbl9lcnJv cl9udWxsOworRFJPUCBET01BSU4gZF9pbnRfbm90X251bGw7CitEUk9QIERPTUFJTiBkX2ludF9w b3NpdGl2ZV9tYXliZV9udWxsOwogRFJPUCBUQUJMRSBjaGVja19pZ25fZXJyMjsKIERST1AgRE9N QUlOIGRjaGVja19pZ25fZXJyMjsKIERST1AgVEFCTEUgaGFyZF9lcnI7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5Mi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5 Mi5zcWwKaW5kZXggNDUyNzM1NTdjZTAuLmQ3N2EwNjY2OGU4IDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9jb3B5Mi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weTIu c3FsCkBAIC02NywxMiArNjcsMTUgQEAgQ09QWSB4IGZyb20gc3RkaW4gKGZvcmNlX251bGwgKGEp LCBmb3JjZV9udWxsIChiKSk7CiBDT1BZIHggZnJvbSBzdGRpbiAoY29udmVydF9zZWxlY3RpdmVs eSAoYSksIGNvbnZlcnRfc2VsZWN0aXZlbHkgKGIpKTsKIENPUFkgeCBmcm9tIHN0ZGluIChlbmNv ZGluZyAnc3FsX2FzY2lpJywgZW5jb2RpbmcgJ3NxbF9hc2NpaScpOwogQ09QWSB4IGZyb20gc3Rk aW4gKG9uX2Vycm9yIGlnbm9yZSwgb25fZXJyb3IgaWdub3JlKTsKK0NPUFkgeCBmcm9tIHN0ZGlu IChvbl9lcnJvciBzZXRfbnVsbCwgb25fZXJyb3IgaWdub3JlKTsKIENPUFkgeCBmcm9tIHN0ZGlu IChsb2dfdmVyYm9zaXR5IGRlZmF1bHQsIGxvZ192ZXJib3NpdHkgdmVyYm9zZSk7CiAKIC0tIGlu Y29ycmVjdCBvcHRpb25zCiBDT1BZIHggZnJvbSBzdGRpbiAoZm9ybWF0IEJJTkFSWSwgZGVsaW1p dGVyICcsJyk7CiBDT1BZIHggZnJvbSBzdGRpbiAoZm9ybWF0IEJJTkFSWSwgbnVsbCAneCcpOwog Q09QWSB4IGZyb20gc3RkaW4gKGZvcm1hdCBCSU5BUlksIG9uX2Vycm9yIGlnbm9yZSk7CitDT1BZ IHggZnJvbSBzdGRpbiAoZm9ybWF0IEJJTkFSWSwgb25fZXJyb3Igc2V0X251bGwpOworQ09QWSB4 IGZyb20gc3RkaW4gKG9uX2Vycm9yIHNldF9udWxsLCByZWplY3RfbGltaXQgMik7CiBDT1BZIHgg ZnJvbSBzdGRpbiAob25fZXJyb3IgdW5zdXBwb3J0ZWQpOwogQ09QWSB4IGZyb20gc3RkaW4gKGZv cm1hdCBURVhULCBmb3JjZV9xdW90ZShhKSk7CiBDT1BZIHggZnJvbSBzdGRpbiAoZm9ybWF0IFRF WFQsIGZvcmNlX3F1b3RlICopOwpAQCAtODcsNiArOTAsNyBAQCBDT1BZIHggZnJvbSBzdGRpbiAo Zm9ybWF0IFRFWFQsIGZvcmNlX251bGwgKik7CiBDT1BZIHggdG8gc3Rkb3V0IChmb3JtYXQgQ1NW LCBmb3JjZV9udWxsKGEpKTsKIENPUFkgeCB0byBzdGRvdXQgKGZvcm1hdCBDU1YsIGZvcmNlX251 bGwgKik7CiBDT1BZIHggdG8gc3Rkb3V0IChmb3JtYXQgQklOQVJZLCBvbl9lcnJvciB1bnN1cHBv cnRlZCk7CitDT1BZIHggdG8gc3Rkb3V0IChvbl9lcnJvciBzZXRfbnVsbCk7CiBDT1BZIHggZnJv bSBzdGRpbiAobG9nX3ZlcmJvc2l0eSB1bnN1cHBvcnRlZCk7CiBDT1BZIHggZnJvbSBzdGRpbiB3 aXRoIChyZWplY3RfbGltaXQgMSk7CiBDT1BZIHggZnJvbSBzdGRpbiB3aXRoIChvbl9lcnJvciBp Z25vcmUsIHJlamVjdF9saW1pdCAwKTsKQEAgLTUzNCw2ICs1MzgsNDUgQEAgYQl7Mn0JMgogOAl7 OH0JOAogXC4KIAorQ1JFQVRFIERPTUFJTiBkX2ludF9ub3RfbnVsbCBBUyBJTlQgTk9UIE5VTEwg Q0hFQ0sodmFsdWUgPiAwKTsKK0NSRUFURSBET01BSU4gZF9pbnRfcG9zaXRpdmVfbWF5YmVfbnVs bCBBUyBJTlQgQ0hFQ0sodmFsdWUgPiAwKTsKK0NSRUFURSBUQUJMRSB0X29uX2Vycm9yX251bGwg KGEgZF9pbnRfbm90X251bGwsIGIgZF9pbnRfcG9zaXRpdmVfbWF5YmVfbnVsbCwgYyBJTlQpOwor CitccHNldCBudWxsIE5VTEwKKy0tZmFpbCwgY29sdW1uIGEgY2Fubm90IHNldCB0byBudWxsIHZh bHVlCitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9yIHNldF9u dWxsKTsKK1xOCTExCTEzCitcLgorCistLWZhaWwsIGNvbHVtbiBhIGlzIGRvbWFpbiB3aXRoIG5v dC1udWxsIGNvbnN0cmFpbnQKK0NPUFkgdF9vbl9lcnJvcl9udWxsIEZST00gU1RESU4gV0lUSCAo b25fZXJyb3Igc2V0X251bGwpOworc3MJMTEJMTQKK1wuCisKKy0tZmFpbCwgY29sdW1uIGEgY2Fu bm90IHNldCB0byBudWxsIHZhbHVlCitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJ VEggKG9uX2Vycm9yIHNldF9udWxsKTsKKy0xCTExCTEzCitcLgorCistLWZhaWwuIGxlc3MgZGF0 YQorQ09QWSB0X29uX2Vycm9yX251bGwgRlJPTSBTVERJTiBXSVRIIChkZWxpbWl0ZXIgJywnLCBv bl9lcnJvciBzZXRfbnVsbCk7CisxLDEKK1wuCistLWZhaWwuIGV4dHJhIGRhdGEKK0NPUFkgdF9v bl9lcnJvcl9udWxsIEZST00gU1RESU4gV0lUSCAoZGVsaW1pdGVyICcsJywgb25fZXJyb3Igc2V0 X251bGwpOworMSwyLDMsNAorXC4KKworLS1vaworQ09QWSB0X29uX2Vycm9yX251bGwgRlJPTSBT VERJTiBXSVRIIChvbl9lcnJvciBzZXRfbnVsbCwgbG9nX3ZlcmJvc2l0eSB2ZXJib3NlKTsKKzEw CXgxCXl4CisxMQl6eAkxMgorMTMJMTQJZWEKK1wuCisKKy0tIGNoZWNrIGluc2VydGVkIGNvbnRl bnQKK3NlbGVjdCAqIGZyb20gdF9vbl9lcnJvcl9udWxsOworXHBzZXQgbnVsbCAnJwogLS0gdGVz dHMgZm9yIG9uX2Vycm9yIG9wdGlvbiB3aXRoIGxvZ192ZXJib3NpdHkgYW5kIG51bGwgY29uc3Ry YWludCB2aWEgZG9tYWluCiBDUkVBVEUgRE9NQUlOIGRjaGVja19pZ25fZXJyMiB2YXJjaGFyKDE1 KSBOT1QgTlVMTDsKIENSRUFURSBUQUJMRSBjaGVja19pZ25fZXJyMiAobiBpbnQsIG0gaW50W10s IGsgaW50LCBsIGRjaGVja19pZ25fZXJyMik7CkBAIC02MDMsNiArNjQ2LDkgQEAgRFJPUCBWSUVX IGluc3RlYWRfb2ZfaW5zZXJ0X3RibF92aWV3OwogRFJPUCBWSUVXIGluc3RlYWRfb2ZfaW5zZXJ0 X3RibF92aWV3XzI7CiBEUk9QIEZVTkNUSU9OIGZ1bl9pbnN0ZWFkX29mX2luc2VydF90YmwoKTsK IERST1AgVEFCTEUgY2hlY2tfaWduX2VycjsKK0RST1AgVEFCTEUgdF9vbl9lcnJvcl9udWxsOwor RFJPUCBET01BSU4gZF9pbnRfbm90X251bGw7CitEUk9QIERPTUFJTiBkX2ludF9wb3NpdGl2ZV9t YXliZV9udWxsOwogRFJPUCBUQUJMRSBjaGVja19pZ25fZXJyMjsKIERST1AgRE9NQUlOIGRjaGVj a19pZ25fZXJyMjsKIERST1AgVEFCTEUgaGFyZF9lcnI7Ci0tIAoyLjM0LjEKCg== --0000000000000ec0290638eed9cb--