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 1vw9i4-0068ss-0b for pgsql-hackers@arkaria.postgresql.org; Sat, 28 Feb 2026 02:05:36 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vw9i3-008y0k-0D for pgsql-hackers@arkaria.postgresql.org; Sat, 28 Feb 2026 02:05:35 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vw9i2-008y0W-1U for pgsql-hackers@lists.postgresql.org; Sat, 28 Feb 2026 02:05:34 +0000 Received: from mail-vk1-xa2e.google.com ([2607:f8b0:4864:20::a2e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vw9hy-00000001bQb-1GcR for pgsql-hackers@lists.postgresql.org; Sat, 28 Feb 2026 02:05:33 +0000 Received: by mail-vk1-xa2e.google.com with SMTP id 71dfb90a1353d-5674cd243d9so2861461e0c.0 for ; Fri, 27 Feb 2026 18:05:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1772244330; cv=none; d=google.com; s=arc-20240605; b=E1eD+MqY7pGDmZR6JyKUlC4HeoIgF8kzAFUlpBorpiMe3WzvM9YkXv0JclYkvIphcy mh4T5sUCL9tv1W8pDBFlOX11gCVs94EWYDInxFcw5dJeJAt0bx9d4ug6gWyIlO4d7VB1 1L3ikn1kCaqCVuj/85PK0J04Gt7mhKdP5kZOyxodh4UE0yt+z+CgXzdjA/poWt1IJ/bA Wz7Csb0fpZXwgVwepAyZI9WAm22CHUt/nIZULAMSAKKvyuXxXOvyUSGrQGBGdMUBCFUJ ofkKgqCVT3Tgi/LojEyBtdhUCF56bXC/geQJbm5Cw98MgFFiEolgJ0fY5Ej3KAxqbCGF PfMQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=ngVnxLSylshNSmQ3b4Rj9YUWoYXjWqBV4X1eQLYQm2w=; fh=T4owuxiwHEOIOjGfiztOZ2dHkw9ru34q3hRFK58f3JA=; b=NgzQQv82wojdBnAoEkNM9gLII2AvYX8fg9Opqj2zQTVDUZO/huYWzPK8vkcqQSwRx8 T6kT/LU/Q6WFTrqWZiCsw7jQveuq1vou+YFmtNOfB7LLP6wpx0mcVg1maZ08LHklBn3L 818cIuYmzYQ0rAosXg4R+6bgXnFuKPaNyAHZuG37wu9Rffh+fgnzpQA+g5m6mcuzPMV2 DmDUjqUM5gL8Sbq4dQZenEoj5kL87FYL62zHQVMf9i53sXfQZMsQJYO0/RyB77cpT6by XAZuwGL9YiaA+HpamzWBVI82GdeyBAomAFS6eCQLVdIMZGRPY804IhXnaRKBGc1dom2X 4oOA==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772244330; x=1772849130; 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=ngVnxLSylshNSmQ3b4Rj9YUWoYXjWqBV4X1eQLYQm2w=; b=Tg1E+avEq2f/KQRYKWYFzGwM/HizzwaQo5iOyIvAfGSpOjG5cpeJlWCmG1zhgylBfI uY+q7AzeafT2INDiWo7t5iYIYc1mpcLgtwzjoKAfuor3uxYj1c43zPKJBlnrEOP2tsFn tjXse5Yp/LorlFWEATG6dTCaf8mY85+21MoVfnDH7Pm7//GPsh4AMLc5KPRk0TlXGr17 qKJNpRHV+RB6Y4XswYe1KIjReLlhEAsV1PygBr5ZWJqIPB4y/ZJ3pr5VSKs4xyi8nqyX KFxBX2ngJrDugF7R/9H4U7+oBxaJ8bUYuYWTd3WfchEF/DT8r67EY3khxWrYYTz7iPI0 xUhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772244330; x=1772849130; 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=ngVnxLSylshNSmQ3b4Rj9YUWoYXjWqBV4X1eQLYQm2w=; b=rUSfpFGJ3lemnvT2u2eGdtyyqPcbGFjME+Gp2Tf5L9IPjDBIJcvapjNd8q6IwMdQHa PDR4Y/PGBeALtJpzJgWSMrTNlQzpvrHmQeKi2CQebB0rm/68C6yXo1Bw5ymMj8AJdOCO sWl3osQ3vc3rFSlaWs1V+6RXPUjBnmnnS1wuHZFDSDpTBxpFsxlvbm2ZHD/sRyG29J2B 3CeVixDstGVQEWUyJd/eN4nbEalAO51RMq2AtNughnWcYptuplOkbkV581ygjBRO6g+y Jp0GLWsmaLTpIQvZLXay1FnvwArWAlUsuwzLlawmZAeNfu/SiTB+nyPLVE8aoUV5pvZj VMrQ== X-Forwarded-Encrypted: i=1; AJvYcCVS3ALTH+Y+dwJmapk3OLbwM3GzRxOP5OEaoDKfyZ/yStrNJYaTFMqcldIaAI05FAF2oDnqXtshXi5/ktTW@lists.postgresql.org X-Gm-Message-State: AOJu0YyWFDMz2hT+OwwpFq7i3NGn1TZGJL6J7NY9ZhRrKmMg5wd7ffPN +zS17C6S01CRu7/gWkbc7scNjm8LBI8+pEIqLHeQ6Im8ncNR6yD2CRQ6FcjNrBEjF8yDlQfsuf0 OhK3poGVC5sxaO5wsPDWgSgc+isd8ALg= X-Gm-Gg: ATEYQzyJ1cqRqvcyVseTIIM6N1wvpWnjNGVdZvhcJl6uaQwmqBYZ2Kt+Z+9oWM3j3wZ 4X1AJ6EbU6+mcyLRA4wWTXphPUiSeqX7ACtOiyHISxSlm30Ve4CJGTyfFUC/kdSsCb3Ez3VvvCG e1FwU7gNNfdYgyzEabaODOCiw0qEQk955kB7cjLtmasPN7+5GyMlF7m8Yk6AzLz4GhaR5n63YbI BFAVD5Cfr0Ars/vZUd+i03+i6Dz/O1P+Bui8i9V2QttWHTR9bDJBNFp2vaXZrj2v0RLB0NlUjJD UTcUy4WiNUyVZ+0Ztk6z0JPxnztazW4JEZyeDcXTDIVPrFyyh2W2Il0UM4PjLcmAR9RC2QYsulb 4byaZU+pdfoRmpC2Xr33tRKd+XbvIKIvhP2lMdyvE08J/kA0PBge5wDp33U0rOdnltYhhzKwHvV Xe+zIKecBwhqvjT61yIN85qA== X-Received: by 2002:a05:6102:3a12:b0:5dd:c53b:75cc with SMTP id ada2fe7eead31-5ff33688788mr2748931137.13.1772244330326; Fri, 27 Feb 2026 18:05:30 -0800 (PST) MIME-Version: 1.0 References: <901967e5-e5dc-42c6-b2bf-fb3a49d7e787@gmail.com> <4c540fe3-495c-4bbf-8dcf-2c1e2b88bc3d@gmail.com> <6f973222-f306-43af-9df5-38673fe3f7d6@eisentraut.org> In-Reply-To: <6f973222-f306-43af-9df5-38673fe3f7d6@eisentraut.org> From: jian he Date: Sat, 28 Feb 2026 10:04:53 +0800 X-Gm-Features: AaiRm53thfLTkKY0JKDDpzdkbcWfCbN1TK67ByKb1WXNNBCeZ85OAJXGFE0pkMM Message-ID: Subject: Re: Change COPY ... ON_ERROR ignore to ON_ERROR ignore_row To: Peter Eisentraut Cc: Matheus Alcantara , torikoshia , Masahiko Sawada , vignesh C , Jim Jones , Kirill Reshke , Fujii Masao , "David G. Johnston" , Yugo NAGATA , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000c3c8c3064bd8c927" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000c3c8c3064bd8c927 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Feb 25, 2026 at 3:36=E2=80=AFPM Peter Eisentraut wrote: > > + if (cstate->opts.on_error =3D=3D COPY_ON_ERROR_SET_NULL) > + { > + int attr_count =3D list_length(cstate->attnumlist); > + > + cstate->domain_with_constraint =3D palloc0_array(bool, attr_count= ); > > Maybe add a comment for this block to explain that you are collecting > information about domains for later. > Here is what I came up with: + /* + * When data type conversion fails and ON_ERROR is SET_NULL, we ne= ed + * ensure that input column allows NULL value, ExecConstraints wil= l + * cover most of the cases, however it does not vertify domain + * constraints. Therefore, for constrained domains, NULL value che= ck + * must be performed during the initial string-to-datum conversion + * (see CopyFromTextLikeOneRow). + */ > + /* > + * If the column type is a constrained domain, an additional > + * InputFunctionCallSafe may be needed to raise error for > + * domain constraint violation. > + */ > > Why "may be needed"? Is it sometimes not needed? Why, under what > circumstances? I changed the comments to: + /* + * For constrained domain types, we need an additional + * InputFunctionCallSafe to ensure that an error is thrown= if + * the domain constraint rejects NULL. + */ > > The subsequent error message writes "domain ... does not allow null > values", but AFAICT a domain input failure could also be due to a check > constraint failure? How would that be handled? The flow here is a bit > confusing. > create domain d3 as int check (value is not null); create table t(a d3); src4=3D# copy t1 from stdin (on_error set_null); Enter data to be copied followed by a newline. End with a backslash and a period on a line by itself, or an EOF signal. >> \N >> \. ERROR: domain d1 does not allow null values DETAIL: ON_ERROR SET_NULL cannot be applied because column "a" (domain d1) does not accept null values. CONTEXT: COPY t1, line 1, column a: null input It's more about whether all domain constraints allow a NULL value, In this context, the domain constraint is a CHECK constraint. ``InputFunctionCallSafe(&in_functions[m], NULL,`` this check whether a NULL value is allowed for this domain. ExecConstraints does not handle domain constraints, so this is needed. The error message: ``errmsg("domain %s does not allow null values",`` should be fine? All other suggestions have been incorporated into v24. -- jian https://www.enterprisedb.com/ --000000000000c3c8c3064bd8c927 Content-Type: text/x-patch; charset="US-ASCII"; name="v24-0001-COPY-on_error-set_null.patch" Content-Disposition: attachment; filename="v24-0001-COPY-on_error-set_null.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm5oh9jw0 RnJvbSA2MWQyYTgxYzUwYWMxNjkxYjRhMzI4YWU1YThmYzI0MjU0ZjIzYzhkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFNhdCwgMjggRmViIDIwMjYgMDk6NTc6NDIgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy NCAxLzFdIENPUFkgKG9uX2Vycm9yIHNldF9udWxsKQoKSWYgT05fRVJST1IgU0VUX05VTEwgaXMg c3BlY2lmaWVkIGR1cmluZyBDT1BZIEZST00sIGFueSBkYXRhIHR5cGUgY29udmVyc2lvbgplcnJv cnMgd2lsbCByZXN1bHQgaW4gdGhlIGFmZmVjdGVkIGNvbHVtbiBiZWluZyBzZXQgdG8gTlVMTC4g SG93ZXZlciwgY29sdW1uJ3MKbm90LW51bGwgY29uc3RyYWludHMgYXJlIHN0aWxsIGVuZm9yY2Vk LCBhdHRlbXB0aW5nIHRvIHNldCBhIE5VTEwgdmFsdWUgaW4gc3VjaApjb2x1bW5zIHdpbGwgcmFp c2UgYSBjb25zdHJhaW50IHZpb2xhdGlvbiBlcnJvci4gVGhpcyBhcHBsaWVzIHRvIGNvbHVtbiBk YXRhCnR5cGUgaXMgYSBkb21haW4gd2l0aCBhIE5PVCBOVUxMIGNvbnN0cmFpbnQuCgpBdXRob3I6 IEppYW4gSGUgPGppYW4udW5pdmVyc2FsaXR5QGdtYWlsLmNvbT4KQXV0aG9yOiBLaXJpbGwgUmVz aGtlIDxyZXNoa2VraXJpbGxAZ21haWwuY29tPgoKUmV2aWV3ZWQtYnk6CkZ1amlpIE1hc2FvIDxt YXNhby5mdWppaUBvc3MubnR0ZGF0YS5jb20+CkppbSBKb25lcyA8amltLmpvbmVzQHVuaS1tdWVu c3Rlci5kZT4KIkRhdmlkIEcuIEpvaG5zdG9uIiA8ZGF2aWQuZy5qb2huc3RvbkBnbWFpbC5jb20+ Cll1Z28gTkFHQVRBIDxuYWdhdGFAc3Jhb3NzLmNvLmpwPgp0b3Jpa29zaGlhIDx0b3Jpa29zaGlh QG9zcy5udHRkYXRhLmNvbT4KTWFzYWhpa28gU2F3YWRhIDxzYXdhZGEubXNoa0BnbWFpbC5jb20+ CkF0c3VzaGkgVG9yaWtvc2hpIDx0b3Jpa29zaGlhQG9zcy5udHRkYXRhLmNvbT4KTWF0aGV1cyBB bGNhbnRhcmEgPG1hdGhldXNzc2lsdjk3QGdtYWlsLmNvbT4KUGV0ZXIgRWlzZW50cmF1dCA8cGV0 ZXJAZWlzZW50cmF1dC5vcmc+CgpkaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBS0ZR dXdhd3kxZTZZUjRTPWoreTdwWHFnX0R3MVdCVnJndmY9QlAzZDFfYVNmZV8rUUBtYWlsLmdtYWls LmNvbQpjb21taXRmZXN0IGVudHJ5OiBodHRwczovL2NvbW1pdGZlc3QucG9zdGdyZXNxbC5vcmcv cGF0Y2gvNDgxMAotLS0KIGRvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgICAgICAgICAgICAg fCAgNCArLQogZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwgICAgICAgICAgICAgICB8IDI4ICsr KysrLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgICAgICAgICAgICAgIHwgIDcgKy0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMgICAgICAgICAgfCA1NCArKysrKysrKysr LS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5jICAgICB8IDkwICsrKysr KysrKysrKysrKysrKysrLS0tLQogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICAg ICAgICB8ICAyICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmggICAgICAgICAgICAgIHwg IDEgKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weWZyb21faW50ZXJuYWwuaCB8ICA3ICsrCiBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkyLm91dCAgICAgIHwgNTggKysrKysrKysrKysr KysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5Mi5zcWwgICAgICAgICAgIHwgNDMgKysrKysr KysrKysKIDEwIGZpbGVzIGNoYW5nZWQsIDI1MSBpbnNlcnRpb25zKCspLCA0MyBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sIGIvZG9jL3NyYy9z Z21sL21vbml0b3Jpbmcuc2dtbAppbmRleCBiNzdkMTg5YTUwMC4uZGNmNmU2YTJmNDggMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21v bml0b3Jpbmcuc2dtbApAQCAtNjI2Niw4ICs2MjY2LDggQEAgRlJPTSBwZ19zdGF0X2dldF9iYWNr ZW5kX2lkc2V0KCkgQVMgYmFja2VuZGlkOwogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAg ICAgICAgTnVtYmVyIG9mIHR1cGxlcyBza2lwcGVkIGJlY2F1c2UgdGhleSBjb250YWluIG1hbGZv cm1lZCBkYXRhLgotICAgICAgIFRoaXMgY291bnRlciBvbmx5IGFkdmFuY2VzIHdoZW4gYSB2YWx1 ZSBvdGhlciB0aGFuCi0gICAgICAgPGxpdGVyYWw+c3RvcDwvbGl0ZXJhbD4gaXMgc3BlY2lmaWVk IHRvIHRoZSA8bGl0ZXJhbD5PTl9FUlJPUjwvbGl0ZXJhbD4KKyAgICAgICBUaGlzIGNvdW50ZXIg b25seSBhZHZhbmNlcyB3aGVuCisgICAgICAgPGxpdGVyYWw+aWdub3JlPC9saXRlcmFsPiBpcyBz cGVjaWZpZWQgdG8gdGhlIDxsaXRlcmFsPk9OX0VSUk9SPC9saXRlcmFsPgogICAgICAgIG9wdGlv bi4KICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC9yZWYvY29weS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKaW5kZXgg NTNiMGVhOGY1NzMuLmI3MjcwODQ4YmFiIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2Nv cHkuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbApAQCAtNDEzLDIyICs0MTMs MzEgQEAgQ09QWSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9y ZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZQogICAgICAgaW5wdXQgdmFsdWUgaW50byBpdHMg ZGF0YSB0eXBlLgogICAgICAgQW4gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVycm9y X2FjdGlvbjwvcmVwbGFjZWFibGU+IHZhbHVlIG9mCiAgICAgICA8bGl0ZXJhbD5zdG9wPC9saXRl cmFsPiBtZWFucyBmYWlsIHRoZSBjb21tYW5kLCB3aGlsZQotICAgICAgPGxpdGVyYWw+aWdub3Jl PC9saXRlcmFsPiBtZWFucyBkaXNjYXJkIHRoZSBpbnB1dCByb3cgYW5kIGNvbnRpbnVlIHdpdGgg dGhlIG5leHQgb25lLgorICAgICAgPGxpdGVyYWw+aWdub3JlPC9saXRlcmFsPiBtZWFucyBkaXNj YXJkIHRoZSBpbnB1dCByb3cgYW5kIGNvbnRpbnVlIHdpdGggdGhlIG5leHQgb25lLAorICAgICAg YW5kIDxsaXRlcmFsPnNldF9udWxsPC9saXRlcmFsPiBtZWFucyByZXBsYWNlIHRoZSBmaWVsZCBj b250YWluaW5nIHRoZSBpbnZhbGlkCisgICAgICBpbnB1dCB2YWx1ZSB3aXRoIGEgbnVsbCB2YWx1 ZSBhbmQgY29udGludWUgdG8gdGhlIG5leHQgZmllbGQuCiAgICAgICBUaGUgZGVmYXVsdCBpcyA8 bGl0ZXJhbD5zdG9wPC9saXRlcmFsPi4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KLSAgICAg IFRoZSA8bGl0ZXJhbD5pZ25vcmU8L2xpdGVyYWw+IG9wdGlvbiBpcyBhcHBsaWNhYmxlIG9ubHkg Zm9yIDxjb21tYW5kPkNPUFkgRlJPTTwvY29tbWFuZD4KKyAgICAgIFRoZSA8bGl0ZXJhbD5pZ25v cmU8L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD5zZXRfbnVsbDwvbGl0ZXJhbD4KKyAgICAgIG9wdGlv bnMgYXJlIGFwcGxpY2FibGUgb25seSBmb3IgPGNvbW1hbmQ+Q09QWSBGUk9NPC9jb21tYW5kPgog ICAgICAgd2hlbiB0aGUgPGxpdGVyYWw+Rk9STUFUPC9saXRlcmFsPiBpcyA8bGl0ZXJhbD50ZXh0 PC9saXRlcmFsPiBvciA8bGl0ZXJhbD5jc3Y8L2xpdGVyYWw+LgorICAgICAgSWYgPGxpdGVyYWw+ T05fRVJST1I8L2xpdGVyYWw+IGlzIHNldCB0byA8bGl0ZXJhbD5pZ25vcmU8L2xpdGVyYWw+IG9y CisgICAgICA8bGl0ZXJhbD5zZXRfbnVsbDwvbGl0ZXJhbD4sIGEgTk9USUNFIG1lc3NhZ2UgaXMg ZW1pdHRlZCBhdCB0aGUgZW5kIG9mIHRoZQorICAgICAgQ09QWSBGUk9NIGNvbW1hbmQgY29udGFp bmluZyB0aGUgY291bnQgb2Ygcm93cyB0aGF0IHdlcmUgaWdub3JlZCBvcgorICAgICAgY2hhbmdl ZCwgaWYgYXQgbGVhc3Qgb25lIHJvdyB3YXMgYWZmZWN0ZWQuCiAgICAgIDwvcGFyYT4KICAgICAg PHBhcmE+Ci0gICAgICBBIDxsaXRlcmFsPk5PVElDRTwvbGl0ZXJhbD4gbWVzc2FnZSBjb250YWlu aW5nIHRoZSBpZ25vcmVkIHJvdyBjb3VudCBpcwotICAgICAgZW1pdHRlZCBhdCB0aGUgZW5kIG9m IHRoZSA8Y29tbWFuZD5DT1BZIEZST008L2NvbW1hbmQ+IGlmIGF0IGxlYXN0IG9uZQotICAgICAg cm93IHdhcyBkaXNjYXJkZWQuIFdoZW4gPGxpdGVyYWw+TE9HX1ZFUkJPU0lUWTwvbGl0ZXJhbD4g b3B0aW9uIGlzIHNldCB0bwotICAgICAgPGxpdGVyYWw+dmVyYm9zZTwvbGl0ZXJhbD4sIGEgPGxp dGVyYWw+Tk9USUNFPC9saXRlcmFsPiBtZXNzYWdlCisgICAgICBXaGVuIDxsaXRlcmFsPkxPR19W RVJCT1NJVFk8L2xpdGVyYWw+IG9wdGlvbiBpcyBzZXQgdG8gPGxpdGVyYWw+dmVyYm9zZTwvbGl0 ZXJhbD4sCisgICAgICBmb3IgPGxpdGVyYWw+aWdub3JlPC9saXRlcmFsPiBvcHRpb24sIGEgPGxp dGVyYWw+Tk9USUNFPC9saXRlcmFsPiBtZXNzYWdlCiAgICAgICBjb250YWluaW5nIHRoZSBsaW5l IG9mIHRoZSBpbnB1dCBmaWxlIGFuZCB0aGUgY29sdW1uIG5hbWUgd2hvc2UgaW5wdXQKLSAgICAg IGNvbnZlcnNpb24gaGFzIGZhaWxlZCBpcyBlbWl0dGVkIGZvciBlYWNoIGRpc2NhcmRlZCByb3cu CisgICAgICBjb252ZXJzaW9uIGhhcyBmYWlsZWQgaXMgZW1pdHRlZCBmb3IgZWFjaCBkaXNjYXJk ZWQgcm93OworICAgICAgZm9yIDxsaXRlcmFsPnNldF9udWxsPC9saXRlcmFsPiBvcHRpb24sIGEg PGxpdGVyYWw+Tk9USUNFPC9saXRlcmFsPgorICAgICAgbWVzc2FnZSBjb250YWluaW5nIHRoZSBs aW5lIG9mIHRoZSBpbnB1dCBmaWxlIGFuZCB0aGUgY29sdW1uIG5hbWUgd2hlcmUKKyAgICAgIHZh bHVlIHdhcyByZXBsYWNlZCB3aXRoIDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+IGZvciBlYWNoIGlu cHV0IGNvbnZlcnNpb24KKyAgICAgIGZhaWx1cmUuCiAgICAgICBXaGVuIGl0IGlzIHNldCB0byA8 bGl0ZXJhbD5zaWxlbnQ8L2xpdGVyYWw+LCBubyBtZXNzYWdlIGlzIGVtaXR0ZWQKLSAgICAgIHJl Z2FyZGluZyBpZ25vcmVkIHJvd3MuCisgICAgICByZWdhcmRpbmcgaW5wdXQgY29udmVyc2lvbiBm YWlsZWQgcm93cy4KICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3Rl bnRyeT4KQEAgLTQ3Niw3ICs0ODUsOCBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlCiAgICAgIDwv cGFyYT4KICAgICAgPHBhcmE+CiAgICAgICBUaGlzIGlzIGN1cnJlbnRseSB1c2VkIGluIDxjb21t YW5kPkNPUFkgRlJPTTwvY29tbWFuZD4gY29tbWFuZCB3aGVuCi0gICAgICA8bGl0ZXJhbD5PTl9F UlJPUjwvbGl0ZXJhbD4gb3B0aW9uIGlzIHNldCB0byA8bGl0ZXJhbD5pZ25vcmU8L2xpdGVyYWw+ LgorICAgICAgPGxpdGVyYWw+T05fRVJST1I8L2xpdGVyYWw+IG9wdGlvbiBpcyBzZXQgdG8gPGxp dGVyYWw+aWdub3JlPC9saXRlcmFsPgorICAgICAgb3IgPGxpdGVyYWw+c2V0X251bGw8L2xpdGVy YWw+LgogICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvcHkuYwppbmRleCAxNTVhNzlhNzBjNS4uNjNiODY4MDJiYTIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9j b3B5LmMKQEAgLTQ2OCwxMyArNDY4LDEyIEBAIGRlZkdldENvcHlPbkVycm9yQ2hvaWNlKERlZkVs ZW0gKmRlZiwgUGFyc2VTdGF0ZSAqcHN0YXRlLCBib29sIGlzX2Zyb20pCiAJCQkJIGVycm1zZygi Q09QWSAlcyBjYW5ub3QgYmUgdXNlZCB3aXRoICVzIiwgIk9OX0VSUk9SIiwgIkNPUFkgVE8iKSwK IAkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGVmLT5sb2NhdGlvbikpKTsKIAotCS8q Ci0JICogQWxsb3cgInN0b3AiLCBvciAiaWdub3JlIiB2YWx1ZXMuCi0JICovCiAJaWYgKHBnX3N0 cmNhc2VjbXAoc3ZhbCwgInN0b3AiKSA9PSAwKQogCQlyZXR1cm4gQ09QWV9PTl9FUlJPUl9TVE9Q OwogCWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJpZ25vcmUiKSA9PSAwKQogCQlyZXR1cm4gQ09Q WV9PTl9FUlJPUl9JR05PUkU7CisJaWYgKHBnX3N0cmNhc2VjbXAoc3ZhbCwgInNldF9udWxsIikg PT0gMCkKKwkJcmV0dXJuIENPUFlfT05fRVJST1JfU0VUX05VTEw7CiAKIAllcmVwb3J0KEVSUk9S LAogCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCkBAIC05ODQs NyArOTgzLDcgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQko ZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCiAJCQkJIGVycm1zZygib25seSBPTl9FUlJP UiBTVE9QIGlzIGFsbG93ZWQgaW4gQklOQVJZIG1vZGUiKSkpOwogCi0JaWYgKG9wdHNfb3V0LT5y ZWplY3RfbGltaXQgJiYgIW9wdHNfb3V0LT5vbl9lcnJvcikKKwlpZiAob3B0c19vdXQtPnJlamVj dF9saW1pdCAmJiBvcHRzX291dC0+b25fZXJyb3IgIT0gQ09QWV9PTl9FUlJPUl9JR05PUkUpCiAJ CWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9W QUxVRSksCiAJCS8qLSB0cmFuc2xhdG9yOiBmaXJzdCBhbmQgc2Vjb25kICVzIGFyZSB0aGUgbmFt ZXMgb2YgQ09QWSBvcHRpb24sIGUuZy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2NvcHlmcm9tLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jCmluZGV4IDJiNzU1 NmIyODdjLi42MDdiYWIzZmM3YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29w eWZyb20uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jCkBAIC01MCw2ICs1 MCw3IEBACiAjaW5jbHVkZSAidXRpbHMvcG9ydGFsLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgi CiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgorI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgi CiAKIC8qCiAgKiBObyBtb3JlIHRoYW4gdGhpcyBtYW55IHR1cGxlcyBwZXIgQ29weU11bHRpSW5z ZXJ0QnVmZmVyCkBAIC0xNDYzLDE0ICsxNDY0LDIyIEBAIENvcHlGcm9tKENvcHlGcm9tU3RhdGUg Y3N0YXRlKQogCS8qIERvbmUsIGNsZWFuIHVwICovCiAJZXJyb3JfY29udGV4dF9zdGFjayA9IGVy cmNhbGxiYWNrLnByZXZpb3VzOwogCi0JaWYgKGNzdGF0ZS0+b3B0cy5vbl9lcnJvciAhPSBDT1BZ X09OX0VSUk9SX1NUT1AgJiYKLQkJY3N0YXRlLT5udW1fZXJyb3JzID4gMCAmJgorCWlmIChjc3Rh dGUtPm51bV9lcnJvcnMgPiAwICYmCiAJCWNzdGF0ZS0+b3B0cy5sb2dfdmVyYm9zaXR5ID49IENP UFlfTE9HX1ZFUkJPU0lUWV9ERUZBVUxUKQotCQllcmVwb3J0KE5PVElDRSwKLQkJCQllcnJtc2df cGx1cmFsKCIlIiBQUkl1NjQgIiByb3cgd2FzIHNraXBwZWQgZHVlIHRvIGRhdGEgdHlwZSBpbmNv bXBhdGliaWxpdHkiLAotCQkJCQkJCSAgIiUiIFBSSXU2NCAiIHJvd3Mgd2VyZSBza2lwcGVkIGR1 ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IiwKLQkJCQkJCQkgIGNzdGF0ZS0+bnVtX2Vy cm9ycywKLQkJCQkJCQkgIGNzdGF0ZS0+bnVtX2Vycm9ycykpOworCXsKKwkJaWYgKGNzdGF0ZS0+ b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX0lHTk9SRSkKKwkJCWVyZXBvcnQoTk9USUNF LAorCQkJCQllcnJtc2dfcGx1cmFsKCIlIiBQUkl1NjQgIiByb3cgd2FzIHNraXBwZWQgZHVlIHRv IGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkiLAorCQkJCQkJCQkgICIlIiBQUkl1NjQgIiByb3dz IHdlcmUgc2tpcHBlZCBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eSIsCisJCQkJCQkJ CSAgY3N0YXRlLT5udW1fZXJyb3JzLAorCQkJCQkJCQkgIGNzdGF0ZS0+bnVtX2Vycm9ycykpOwor CQllbHNlIGlmIChjc3RhdGUtPm9wdHMub25fZXJyb3IgPT0gQ09QWV9PTl9FUlJPUl9TRVRfTlVM TCkKKwkJCWVyZXBvcnQoTk9USUNFLAorCQkJCQllcnJtc2dfcGx1cmFsKCJpbiAlIiBQUkl1NjQg IiByb3csIGNvbHVtbnMgd2FzIHNldCB0byBudWxsIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRp YmlsaXR5IiwKKwkJCQkJCQkJICAiaW4gJSIgUFJJdTY0ICIgcm93cywgY29sdW1ucyB3ZXJlIHNl dCB0byBudWxsIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IiwKKwkJCQkJCQkJICBj c3RhdGUtPm51bV9lcnJvcnMsCisJCQkJCQkJCSAgY3N0YXRlLT5udW1fZXJyb3JzKSk7CisJfQog CiAJaWYgKGJpc3RhdGUgIT0gTlVMTCkKIAkJRnJlZUJ1bGtJbnNlcnRTdGF0ZShiaXN0YXRlKTsK QEAgLTE2MTcsMTYgKzE2MjYsMzcgQEAgQmVnaW5Db3B5RnJvbShQYXJzZVN0YXRlICpwc3RhdGUs CiAJCWNzdGF0ZS0+ZXNjb250ZXh0LT50eXBlID0gVF9FcnJvclNhdmVDb250ZXh0OwogCQljc3Rh dGUtPmVzY29udGV4dC0+ZXJyb3Jfb2NjdXJyZWQgPSBmYWxzZTsKIAotCQkvKgotCQkgKiBDdXJy ZW50bHkgd2Ugb25seSBzdXBwb3J0IENPUFlfT05fRVJST1JfSUdOT1JFLiBXZSdsbCBhZGQgb3Ro ZXIKLQkJICogb3B0aW9ucyBsYXRlcgotCQkgKi8KLQkJaWYgKGNzdGF0ZS0+b3B0cy5vbl9lcnJv ciA9PSBDT1BZX09OX0VSUk9SX0lHTk9SRSkKKwkJaWYgKGNzdGF0ZS0+b3B0cy5vbl9lcnJvciA9 PSBDT1BZX09OX0VSUk9SX0lHTk9SRSB8fAorCQkJY3N0YXRlLT5vcHRzLm9uX2Vycm9yID09IENP UFlfT05fRVJST1JfU0VUX05VTEwpCiAJCQljc3RhdGUtPmVzY29udGV4dC0+ZGV0YWlsc193YW50 ZWQgPSBmYWxzZTsKIAl9CiAJZWxzZQogCQljc3RhdGUtPmVzY29udGV4dCA9IE5VTEw7CiAKKwlp ZiAoY3N0YXRlLT5vcHRzLm9uX2Vycm9yID09IENPUFlfT05fRVJST1JfU0VUX05VTEwpCisJewor CQlpbnQJCQlhdHRyX2NvdW50ID0gbGlzdF9sZW5ndGgoY3N0YXRlLT5hdHRudW1saXN0KTsKKwor CQkvKgorCQkgKiBXaGVuIGRhdGEgdHlwZSBjb252ZXJzaW9uIGZhaWxzIGFuZCBPTl9FUlJPUiBp cyBTRVRfTlVMTCwgd2UgbmVlZAorCQkgKiBlbnN1cmUgdGhhdCBpbnB1dCBjb2x1bW4gYWxsb3dz IE5VTEwgdmFsdWUsIEV4ZWNDb25zdHJhaW50cyB3aWxsCisJCSAqIGNvdmVyIG1vc3Qgb2YgdGhl IGNhc2VzLCBob3dldmVyIGl0IGRvZXMgbm90IHZlcnRpZnkgZG9tYWluCisJCSAqIGNvbnN0cmFp bnRzLiBUaGVyZWZvcmUsIGZvciBjb25zdHJhaW5lZCBkb21haW5zLCBOVUxMIHZhbHVlIGNoZWNr CisJCSAqIG11c3QgYmUgcGVyZm9ybWVkIGR1cmluZyB0aGUgaW5pdGlhbCBzdHJpbmctdG8tZGF0 dW0gY29udmVyc2lvbgorCQkgKiAoc2VlIENvcHlGcm9tVGV4dExpa2VPbmVSb3cpLgorCQkgKi8K KwkJY3N0YXRlLT5kb21haW5fd2l0aF9jb25zdHJhaW50ID0gcGFsbG9jMF9hcnJheShib29sLCBh dHRyX2NvdW50KTsKKworCQlmb3JlYWNoX2ludChhdHRubywgY3N0YXRlLT5hdHRudW1saXN0KQor CQl7CisJCQlpbnQJCQlpID0gZm9yZWFjaF9jdXJyZW50X2luZGV4KGF0dG5vKTsKKworCQkJRm9y bV9wZ19hdHRyaWJ1dGUgYXR0ID0gVHVwbGVEZXNjQXR0cih0dXBEZXNjLCBhdHRubyAtIDEpOwor CisJCQljc3RhdGUtPmRvbWFpbl93aXRoX2NvbnN0cmFpbnRbaV0gPSBEb21haW5IYXNDb25zdHJh aW50cyhhdHQtPmF0dHR5cGlkKTsKKwkJfQorCX0KKwogCS8qIENvbnZlcnQgRk9SQ0VfTlVMTCBu YW1lIGxpc3QgdG8gcGVyLWNvbHVtbiBmbGFncywgY2hlY2sgdmFsaWRpdHkgKi8KIAljc3RhdGUt Pm9wdHMuZm9yY2VfbnVsbF9mbGFncyA9IChib29sICopIHBhbGxvYzAobnVtX3BoeXNfYXR0cnMg KiBzaXplb2YoYm9vbCkpOwogCWlmIChjc3RhdGUtPm9wdHMuZm9yY2VfbnVsbF9hbGwpCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMKaW5kZXggNmIwMGQ0OWM1MGYuLjY3MGIxODhkOWEw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5jCkBAIC05NTksNiArOTU5LDcgQEAg Q29weUZyb21UZXh0TGlrZU9uZVJvdyhDb3B5RnJvbVN0YXRlIGNzdGF0ZSwgRXhwckNvbnRleHQg KmVjb250ZXh0LAogCWludAkJCWZsZGN0OwogCWludAkJCWZpZWxkbm87CiAJY2hhcgkgICAqc3Ry aW5nOworCWJvb2wJCWN1cnJlbnRfcm93X2Vycm9uZW91cyA9IGZhbHNlOwogCiAJdHVwRGVzYyA9 IFJlbGF0aW9uR2V0RGVzY3IoY3N0YXRlLT5yZWwpOwogCWF0dHJfY291bnQgPSBsaXN0X2xlbmd0 aChjc3RhdGUtPmF0dG51bWxpc3QpOwpAQCAtMTAzNSw5ICsxMDM2LDcgQEAgQ29weUZyb21UZXh0 TGlrZU9uZVJvdyhDb3B5RnJvbVN0YXRlIGNzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LAog CQkJdmFsdWVzW21dID0gRXhlY0V2YWxFeHByKGRlZmV4cHJzW21dLCBlY29udGV4dCwgJm51bGxz W21dKTsKIAkJfQogCi0JCS8qCi0JCSAqIElmIE9OX0VSUk9SIGlzIHNwZWNpZmllZCB3aXRoIElH Tk9SRSwgc2tpcCByb3dzIHdpdGggc29mdCBlcnJvcnMKLQkJICovCisJCS8qIElmIE9OX0VSUk9S IGlzIHNwZWNpZmllZCwgaGFuZGxlIHRoZSBkaWZmZXJlbnQgb3B0aW9ucyAqLwogCQllbHNlIGlm ICghSW5wdXRGdW5jdGlvbkNhbGxTYWZlKCZpbl9mdW5jdGlvbnNbbV0sCiAJCQkJCQkJCQkJc3Ry aW5nLAogCQkJCQkJCQkJCXR5cGlvcGFyYW1zW21dLApAQCAtMTA0Nyw3ICsxMDQ2LDU1IEBAIENv cHlGcm9tVGV4dExpa2VPbmVSb3coQ29weUZyb21TdGF0ZSBjc3RhdGUsIEV4cHJDb250ZXh0ICpl Y29udGV4dCwKIAkJewogCQkJQXNzZXJ0KGNzdGF0ZS0+b3B0cy5vbl9lcnJvciAhPSBDT1BZX09O X0VSUk9SX1NUT1ApOwogCi0JCQljc3RhdGUtPm51bV9lcnJvcnMrKzsKKwkJCWlmIChjc3RhdGUt Pm9wdHMub25fZXJyb3IgPT0gQ09QWV9PTl9FUlJPUl9JR05PUkUpCisJCQkJY3N0YXRlLT5udW1f ZXJyb3JzKys7CisJCQllbHNlIGlmIChjc3RhdGUtPm9wdHMub25fZXJyb3IgPT0gQ09QWV9PTl9F UlJPUl9TRVRfTlVMTCkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFJlc2V0IGVycm9yIHN0YXRlIHNv IHRoZSBzdWJzZXF1ZW50IElucHV0RnVuY3Rpb25DYWxsU2FmZQorCQkJCSAqIGNhbGwgKGZvciBk b21haW4gY29uc3RyYWludCBjaGVjaykgY2FuIHByb3Blcmx5IHJlcG9ydAorCQkJCSAqIHdoZXRo ZXIgaXQgc3VjY2VlZGVkIG9yIGZhaWxlZC4KKwkJCQkgKi8KKwkJCQljc3RhdGUtPmVzY29udGV4 dC0+ZXJyb3Jfb2NjdXJyZWQgPSBmYWxzZTsKKworCQkJCUFzc2VydChjc3RhdGUtPmRvbWFpbl93 aXRoX2NvbnN0cmFpbnQgIT0gTlVMTCk7CisKKwkJCQkvKgorCQkJCSAqIEZvciBjb25zdHJhaW5l ZCBkb21haW4gdHlwZXMsIHdlIG5lZWQgYW4gYWRkaXRpb25hbAorCQkJCSAqIElucHV0RnVuY3Rp b25DYWxsU2FmZSB0byBlbnN1cmUgdGhhdCBhbiBlcnJvciBpcyB0aHJvd24gaWYKKwkJCQkgKiB0 aGUgZG9tYWluIGNvbnN0cmFpbnQgcmVqZWN0cyBOVUxMLgorCQkJCSAqLworCQkJCWlmICghY3N0 YXRlLT5kb21haW5fd2l0aF9jb25zdHJhaW50W21dIHx8CisJCQkJCUlucHV0RnVuY3Rpb25DYWxs U2FmZSgmaW5fZnVuY3Rpb25zW21dLAorCQkJCQkJCQkJCSAgTlVMTCwKKwkJCQkJCQkJCQkgIHR5 cGlvcGFyYW1zW21dLAorCQkJCQkJCQkJCSAgYXR0LT5hdHR0eXBtb2QsCisJCQkJCQkJCQkJICAo Tm9kZSAqKSBjc3RhdGUtPmVzY29udGV4dCwKKwkJCQkJCQkJCQkgICZ2YWx1ZXNbbV0pKQorCQkJ CXsKKwkJCQkJbnVsbHNbbV0gPSB0cnVlOworCQkJCQl2YWx1ZXNbbV0gPSAoRGF0dW0pIDA7CisJ CQkJfQorCQkJCWVsc2UKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQllcnJjb2RlKEVSUkNP REVfTk9UX05VTExfVklPTEFUSU9OKSwKKwkJCQkJCQllcnJtc2coImRvbWFpbiAlcyBkb2VzIG5v dCBhbGxvdyBudWxsIHZhbHVlcyIsCisJCQkJCQkJCSAgIGZvcm1hdF90eXBlX2JlKHR5cGlvcGFy YW1zW21dKSksCisJCQkJCQkJZXJyZGV0YWlsKCJPTl9FUlJPUiBTRVRfTlVMTCBjYW5ub3QgYmUg YXBwbGllZCBiZWNhdXNlIGNvbHVtbiBcIiVzXCIgKGRvbWFpbiAlcykgZG9lcyBub3QgYWNjZXB0 IG51bGwgdmFsdWVzLiIsCisJCQkJCQkJCQkgIGNzdGF0ZS0+Y3VyX2F0dG5hbWUsCisJCQkJCQkJ CQkgIGZvcm1hdF90eXBlX2JlKHR5cGlvcGFyYW1zW21dKSksCisJCQkJCQkJZXJyZGF0YXR5cGUo dHlwaW9wYXJhbXNbbV0pKTsKKworCQkJCS8qCisJCQkJICogV2UgY291bnQgb25seSB0aGUgbnVt YmVyIG9mIHJvd3MgKG5vdCBmaWVsZHMpIHdoZXJlCisJCQkJICogT05fRVJST1IgU0VUX05VTEwg d2FzIGFwcGxpZWQuCisJCQkJICovCisJCQkJaWYgKCFjdXJyZW50X3Jvd19lcnJvbmVvdXMpCisJ CQkJeworCQkJCQljdXJyZW50X3Jvd19lcnJvbmVvdXMgPSB0cnVlOworCQkJCQljc3RhdGUtPm51 bV9lcnJvcnMrKzsKKwkJCQl9CisJCQl9CiAKIAkJCWlmIChjc3RhdGUtPm9wdHMubG9nX3ZlcmJv c2l0eSA9PSBDT1BZX0xPR19WRVJCT1NJVFlfVkVSQk9TRSkKIAkJCXsKQEAgLTEwNjQsMjQgKzEx MTEsMzcgQEAgQ29weUZyb21UZXh0TGlrZU9uZVJvdyhDb3B5RnJvbVN0YXRlIGNzdGF0ZSwgRXhw ckNvbnRleHQgKmVjb250ZXh0LAogCQkJCQljaGFyCSAgICphdHR2YWw7CiAKIAkJCQkJYXR0dmFs ID0gQ29weUxpbWl0UHJpbnRvdXRMZW5ndGgoY3N0YXRlLT5jdXJfYXR0dmFsKTsKLQkJCQkJZXJl cG9ydChOT1RJQ0UsCi0JCQkJCQkJZXJybXNnKCJza2lwcGluZyByb3cgZHVlIHRvIGRhdGEgdHlw ZSBpbmNvbXBhdGliaWxpdHkgYXQgbGluZSAlIiBQUkl1NjQgIiBmb3IgY29sdW1uIFwiJXNcIjog XCIlc1wiIiwKLQkJCQkJCQkJICAgY3N0YXRlLT5jdXJfbGluZW5vLAotCQkJCQkJCQkgICBjc3Rh dGUtPmN1cl9hdHRuYW1lLAotCQkJCQkJCQkgICBhdHR2YWwpKTsKKworCQkJCQlpZiAoY3N0YXRl LT5vcHRzLm9uX2Vycm9yID09IENPUFlfT05fRVJST1JfSUdOT1JFKQorCQkJCQkJZXJlcG9ydChO T1RJQ0UsCisJCQkJCQkJCWVycm1zZygic2tpcHBpbmcgcm93IGR1ZSB0byBkYXRhIHR5cGUgaW5j b21wYXRpYmlsaXR5IGF0IGxpbmUgJSIgUFJJdTY0ICIgZm9yIGNvbHVtbiBcIiVzXCI6IFwiJXNc IiIsCisJCQkJCQkJCQkgICBjc3RhdGUtPmN1cl9saW5lbm8sCisJCQkJCQkJCQkgICBjc3RhdGUt PmN1cl9hdHRuYW1lLAorCQkJCQkJCQkJICAgYXR0dmFsKSk7CisJCQkJCWVsc2UgaWYgKGNzdGF0 ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX1NFVF9OVUxMKQorCQkJCQkJZXJlcG9y dChOT1RJQ0UsCisJCQkJCQkJCWVycm1zZygic2V0dGluZyB0byBudWxsIGR1ZSB0byBkYXRhIHR5 cGUgaW5jb21wYXRpYmlsaXR5IGF0IGxpbmUgJSIgUFJJdTY0ICIgZm9yIGNvbHVtbiBcIiVzXCI6 IFwiJXNcIiIsCisJCQkJCQkJCQkgICBjc3RhdGUtPmN1cl9saW5lbm8sCisJCQkJCQkJCQkgICBj c3RhdGUtPmN1cl9hdHRuYW1lLAorCQkJCQkJCQkJICAgYXR0dmFsKSk7CiAJCQkJCXBmcmVlKGF0 dHZhbCk7CiAJCQkJfQogCQkJCWVsc2UKLQkJCQkJZXJlcG9ydChOT1RJQ0UsCi0JCQkJCQkJZXJy bXNnKCJza2lwcGluZyByb3cgZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkgYXQgbGlu ZSAlIiBQUkl1NjQgIiBmb3IgY29sdW1uIFwiJXNcIjogbnVsbCBpbnB1dCIsCi0JCQkJCQkJCSAg IGNzdGF0ZS0+Y3VyX2xpbmVubywKLQkJCQkJCQkJICAgY3N0YXRlLT5jdXJfYXR0bmFtZSkpOwot CisJCQkJeworCQkJCQlpZiAoY3N0YXRlLT5vcHRzLm9uX2Vycm9yID09IENPUFlfT05fRVJST1Jf SUdOT1JFKQorCQkJCQkJZXJlcG9ydChOT1RJQ0UsCisJCQkJCQkJCWVycm1zZygic2tpcHBpbmcg cm93IGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IGF0IGxpbmUgJSIgUFJJdTY0ICIg Zm9yIGNvbHVtbiBcIiVzXCI6IG51bGwgaW5wdXQiLAorCQkJCQkJCQkJICAgY3N0YXRlLT5jdXJf bGluZW5vLAorCQkJCQkJCQkJICAgY3N0YXRlLT5jdXJfYXR0bmFtZSkpOworCQkJCX0KIAkJCQkv KiByZXNldCByZWxuYW1lX29ubHkgKi8KIAkJCQljc3RhdGUtPnJlbG5hbWVfb25seSA9IGZhbHNl OwogCQkJfQogCi0JCQlyZXR1cm4gdHJ1ZTsKKwkJCWlmIChjc3RhdGUtPm9wdHMub25fZXJyb3Ig PT0gQ09QWV9PTl9FUlJPUl9JR05PUkUpCisJCQkJcmV0dXJuIHRydWU7CisJCQllbHNlIGlmIChj c3RhdGUtPm9wdHMub25fZXJyb3IgPT0gQ09QWV9PTl9FUlJPUl9TRVRfTlVMTCkKKwkJCQljb250 aW51ZTsKIAkJfQogCiAJCWNzdGF0ZS0+Y3VyX2F0dG5hbWUgPSBOVUxMOwpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0 ZS5pbi5jCmluZGV4IGIyZGJhNmQxMGFiLi42MWMwODI0MWIwNCAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUu aW4uYwpAQCAtMzQyNSw3ICszNDI1LDcgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRl cm5faWQsCiAKIAkJCS8qIENvbXBsZXRlIENPUFkgPHN0aD4gRlJPTSBmaWxlbmFtZSBXSVRIIChP Tl9FUlJPUiAqLwogCQkJZWxzZSBpZiAoVGFpbE1hdGNoZXMoIk9OX0VSUk9SIikpCi0JCQkJQ09N UExFVEVfV0lUSCgic3RvcCIsICJpZ25vcmUiKTsKKwkJCQlDT01QTEVURV9XSVRIKCJzdG9wIiwg Imlnbm9yZSIsICJzZXRfbnVsbCIpOwogCiAJCQkvKiBDb21wbGV0ZSBDT1BZIDxzdGg+IEZST00g ZmlsZW5hbWUgV0lUSCAoTE9HX1ZFUkJPU0lUWSAqLwogCQkJZWxzZSBpZiAoVGFpbE1hdGNoZXMo IkxPR19WRVJCT1NJVFkiKSkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHku aCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaAppbmRleCA0M2MyNTgwNTM5Zi4uODc3MjAy YWY2N2IgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaAorKysgYi9zcmMv aW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKQEAgLTM1LDYgKzM1LDcgQEAgdHlwZWRlZiBlbnVtIENv cHlPbkVycm9yQ2hvaWNlCiB7CiAJQ09QWV9PTl9FUlJPUl9TVE9QID0gMCwJCS8qIGltbWVkaWF0 ZWx5IHRocm93IGVycm9ycywgZGVmYXVsdCAqLwogCUNPUFlfT05fRVJST1JfSUdOT1JFLAkJLyog aWdub3JlIGVycm9ycyAqLworCUNPUFlfT05fRVJST1JfU0VUX05VTEwsCQkvKiBzZXQgZXJyb3Ig ZmllbGQgdG8gbnVsbCAqLwogfSBDb3B5T25FcnJvckNob2ljZTsKIAogLyoKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHlmcm9tX2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS9j b21tYW5kcy9jb3B5ZnJvbV9pbnRlcm5hbC5oCmluZGV4IDgyMmVmMzNjZjY5Li5mODkyYzM0MzE1 NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weWZyb21faW50ZXJuYWwuaAor KysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5ZnJvbV9pbnRlcm5hbC5oCkBAIC0xMDgsNiAr MTA4LDEzIEBAIHR5cGVkZWYgc3RydWN0IENvcHlGcm9tU3RhdGVEYXRhCiAJCQkJCQkJCSAqIGF0 dCAqLwogCWJvb2wJICAgKmRlZmF1bHRzOwkJLyogaWYgREVGQVVMVCBtYXJrZXIgd2FzIGZvdW5k IGZvcgogCQkJCQkJCQkgKiBjb3JyZXNwb25kaW5nIGF0dCAqLworCisJLyoKKwkgKiBUcnVlIGlm IHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZSdzIGlzIGEgY29uc3RyYWluZWQgZG9tYWluLiBU aGlzCisJICogd2lsbCBiZSBwb3B1bGF0ZWQgb25seSB3aGVuIE9OX0VSUk9SIGlzIFNFVF9OVUxM LCBvdGhlcndpc2UgTlVMTC4KKwkgKi8KKwlib29sCSAgICpkb21haW5fd2l0aF9jb25zdHJhaW50 OworCiAJYm9vbAkJdm9sYXRpbGVfZGVmZXhwcnM7CS8qIGlzIGFueSBvZiBkZWZleHBycyB2b2xh dGlsZT8gKi8KIAlMaXN0CSAgICpyYW5nZV90YWJsZTsJLyogc2luZ2xlIGVsZW1lbnQgbGlzdCBv ZiBSYW5nZVRibEVudHJ5ICovCiAJTGlzdAkgICAqcnRlcGVybWluZm9zOwkvKiBzaW5nbGUgZWxl bWVudCBsaXN0IG9mIFJURVBlcm1pc3Npb25JbmZvICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2NvcHkyLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29w eTIub3V0CmluZGV4IDMxNDViMzE0ZTQ4Li4xZGQ5YTYzYmI4MCAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Mi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9jb3B5Mi5vdXQKQEAgLTgxLDYgKzgxLDEwIEBAIENPUFkgeCBmcm9tIHN0ZGluIChvbl9l cnJvciBpZ25vcmUsIG9uX2Vycm9yIGlnbm9yZSk7CiBFUlJPUjogIGNvbmZsaWN0aW5nIG9yIHJl ZHVuZGFudCBvcHRpb25zCiBMSU5FIDE6IENPUFkgeCBmcm9tIHN0ZGluIChvbl9lcnJvciBpZ25v cmUsIG9uX2Vycm9yIGlnbm9yZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF4KK0NPUFkgeCBmcm9tIHN0ZGluIChvbl9lcnJvciBzZXRfbnVsbCwgb25fZXJy b3Igc2V0X251bGwpOworRVJST1I6ICBjb25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0aW9ucwor TElORSAxOiBDT1BZIHggZnJvbSBzdGRpbiAob25fZXJyb3Igc2V0X251bGwsIG9uX2Vycm9yIHNl dF9udWxsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CiBDT1BZIHggZnJvbSBzdGRpbiAobG9nX3ZlcmJvc2l0eSBkZWZhdWx0LCBsb2dfdmVyYm9zaXR5 IHZlcmJvc2UpOwogRVJST1I6ICBjb25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0aW9ucwogTElO RSAxOiBDT1BZIHggZnJvbSBzdGRpbiAobG9nX3ZlcmJvc2l0eSBkZWZhdWx0LCBsb2dfdmVyYm9z aXR5IHZlcmIuLi4KQEAgLTkyLDYgKzk2LDEwIEBAIENPUFkgeCBmcm9tIHN0ZGluIChmb3JtYXQg QklOQVJZLCBudWxsICd4Jyk7CiBFUlJPUjogIGNhbm5vdCBzcGVjaWZ5IE5VTEwgaW4gQklOQVJZ IG1vZGUKIENPUFkgeCBmcm9tIHN0ZGluIChmb3JtYXQgQklOQVJZLCBvbl9lcnJvciBpZ25vcmUp OwogRVJST1I6ICBvbmx5IE9OX0VSUk9SIFNUT1AgaXMgYWxsb3dlZCBpbiBCSU5BUlkgbW9kZQor Q09QWSB4IGZyb20gc3RkaW4gKGZvcm1hdCBCSU5BUlksIG9uX2Vycm9yIHNldF9udWxsKTsKK0VS Uk9SOiAgb25seSBPTl9FUlJPUiBTVE9QIGlzIGFsbG93ZWQgaW4gQklOQVJZIG1vZGUKK0NPUFkg eCBmcm9tIHN0ZGluIChvbl9lcnJvciBzZXRfbnVsbCwgcmVqZWN0X2xpbWl0IDIpOworRVJST1I6 ICBDT1BZIFJFSkVDVF9MSU1JVCByZXF1aXJlcyBPTl9FUlJPUiB0byBiZSBzZXQgdG8gSUdOT1JF CiBDT1BZIHggZnJvbSBzdGRpbiAob25fZXJyb3IgdW5zdXBwb3J0ZWQpOwogRVJST1I6ICBDT1BZ IE9OX0VSUk9SICJ1bnN1cHBvcnRlZCIgbm90IHJlY29nbml6ZWQKIExJTkUgMTogQ09QWSB4IGZy b20gc3RkaW4gKG9uX2Vycm9yIHVuc3VwcG9ydGVkKTsKQEAgLTEyNCw2ICsxMzIsMTAgQEAgQ09Q WSB4IHRvIHN0ZG91dCAoZm9ybWF0IEJJTkFSWSwgb25fZXJyb3IgdW5zdXBwb3J0ZWQpOwogRVJS T1I6ICBDT1BZIE9OX0VSUk9SIGNhbm5vdCBiZSB1c2VkIHdpdGggQ09QWSBUTwogTElORSAxOiBD T1BZIHggdG8gc3Rkb3V0IChmb3JtYXQgQklOQVJZLCBvbl9lcnJvciB1bnN1cHBvcnRlZCk7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0NPUFkgeCB0byBzdGRv dXQgKG9uX2Vycm9yIHNldF9udWxsKTsKK0VSUk9SOiAgQ09QWSBPTl9FUlJPUiBjYW5ub3QgYmUg dXNlZCB3aXRoIENPUFkgVE8KK0xJTkUgMTogQ09QWSB4IHRvIHN0ZG91dCAob25fZXJyb3Igc2V0 X251bGwpOworICAgICAgICAgICAgICAgICAgICAgICAgICBeCiBDT1BZIHggZnJvbSBzdGRpbiAo bG9nX3ZlcmJvc2l0eSB1bnN1cHBvcnRlZCk7CiBFUlJPUjogIENPUFkgTE9HX1ZFUkJPU0lUWSAi dW5zdXBwb3J0ZWQiIG5vdCByZWNvZ25pemVkCiBMSU5FIDE6IENPUFkgeCBmcm9tIHN0ZGluIChs b2dfdmVyYm9zaXR5IHVuc3VwcG9ydGVkKTsKQEAgLTc4Miw2ICs3OTQsNDkgQEAgQ09OVEVYVDog IENPUFkgY2hlY2tfaWduX2VycgogTk9USUNFOiAgc2tpcHBpbmcgcm93IGR1ZSB0byBkYXRhIHR5 cGUgaW5jb21wYXRpYmlsaXR5IGF0IGxpbmUgOCBmb3IgY29sdW1uICJrIjogImEiCiBDT05URVhU OiAgQ09QWSBjaGVja19pZ25fZXJyCiBOT1RJQ0U6ICA2IHJvd3Mgd2VyZSBza2lwcGVkIGR1ZSB0 byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5CitDUkVBVEUgRE9NQUlOIGRfaW50X25vdF9udWxs IEFTIGludGVnZXIgTk9UIE5VTEwgQ0hFQ0sodmFsdWUgPiAwKTsKK0NSRUFURSBET01BSU4gZF9p bnRfcG9zaXRpdmVfbWF5YmVfbnVsbCBBUyBpbnRlZ2VyIENIRUNLKHZhbHVlID4gMCk7CitDUkVB VEUgVEFCTEUgdF9vbl9lcnJvcl9udWxsIChhIGRfaW50X25vdF9udWxsLCBiIGRfaW50X3Bvc2l0 aXZlX21heWJlX251bGwsIGMgaW50ZWdlcik7CitccHNldCBudWxsIE5VTEwKK0NPUFkgdF9vbl9l cnJvcl9udWxsIEZST00gU1RESU4gV0lUSCAob25fZXJyb3Igc2V0X251bGwpOyAtLSBmYWlsCitF UlJPUjogIGRvbWFpbiBkX2ludF9ub3RfbnVsbCBkb2VzIG5vdCBhbGxvdyBudWxsIHZhbHVlcwor REVUQUlMOiAgT05fRVJST1IgU0VUX05VTEwgY2Fubm90IGJlIGFwcGxpZWQgYmVjYXVzZSBjb2x1 bW4gImEiIChkb21haW4gZF9pbnRfbm90X251bGwpIGRvZXMgbm90IGFjY2VwdCBudWxsIHZhbHVl cy4KK0NPTlRFWFQ6ICBDT1BZIHRfb25fZXJyb3JfbnVsbCwgbGluZSAxLCBjb2x1bW4gYTogbnVs bCBpbnB1dAorQ09QWSB0X29uX2Vycm9yX251bGwgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBz ZXRfbnVsbCk7IC0tIGZhaWwKK0VSUk9SOiAgZG9tYWluIGRfaW50X25vdF9udWxsIGRvZXMgbm90 IGFsbG93IG51bGwgdmFsdWVzCitERVRBSUw6ICBPTl9FUlJPUiBTRVRfTlVMTCBjYW5ub3QgYmUg YXBwbGllZCBiZWNhdXNlIGNvbHVtbiAiYSIgKGRvbWFpbiBkX2ludF9ub3RfbnVsbCkgZG9lcyBu b3QgYWNjZXB0IG51bGwgdmFsdWVzLgorQ09OVEVYVDogIENPUFkgdF9vbl9lcnJvcl9udWxsLCBs aW5lIDEsIGNvbHVtbiBhOiAic3MiCitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJ VEggKG9uX2Vycm9yIHNldF9udWxsKTsgLS0gZmFpbAorRVJST1I6ICBkb21haW4gZF9pbnRfbm90 X251bGwgZG9lcyBub3QgYWxsb3cgbnVsbCB2YWx1ZXMKK0RFVEFJTDogIE9OX0VSUk9SIFNFVF9O VUxMIGNhbm5vdCBiZSBhcHBsaWVkIGJlY2F1c2UgY29sdW1uICJhIiAoZG9tYWluIGRfaW50X25v dF9udWxsKSBkb2VzIG5vdCBhY2NlcHQgbnVsbCB2YWx1ZXMuCitDT05URVhUOiAgQ09QWSB0X29u X2Vycm9yX251bGwsIGxpbmUgMSwgY29sdW1uIGE6ICItMSIKKy0tIGZhaWwsIGxlc3MgZGF0YS4K K0NPUFkgdF9vbl9lcnJvcl9udWxsIEZST00gU1RESU4gV0lUSCAoZGVsaW1pdGVyICcsJywgb25f ZXJyb3Igc2V0X251bGwpOworRVJST1I6ICBtaXNzaW5nIGRhdGEgZm9yIGNvbHVtbiAiYyIKK0NP TlRFWFQ6ICBDT1BZIHRfb25fZXJyb3JfbnVsbCwgbGluZSAxOiAiMSwxIgorLS0gZmFpbCwgZXh0 cmEgZGF0YS4KK0NPUFkgdF9vbl9lcnJvcl9udWxsIEZST00gU1RESU4gV0lUSCAoZGVsaW1pdGVy ICcsJywgb25fZXJyb3Igc2V0X251bGwpOworRVJST1I6ICBleHRyYSBkYXRhIGFmdGVyIGxhc3Qg ZXhwZWN0ZWQgY29sdW1uCitDT05URVhUOiAgQ09QWSB0X29uX2Vycm9yX251bGwsIGxpbmUgMTog IjEsMiwzLDQiCitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9y IHNldF9udWxsLCBsb2dfdmVyYm9zaXR5IHZlcmJvc2UpOyAtLSBvaworTk9USUNFOiAgc2V0dGlu ZyB0byBudWxsIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IGF0IGxpbmUgMSBmb3Ig Y29sdW1uICJiIjogIngxIgorQ09OVEVYVDogIENPUFkgdF9vbl9lcnJvcl9udWxsCitOT1RJQ0U6 ICBzZXR0aW5nIHRvIG51bGwgZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkgYXQgbGlu ZSAxIGZvciBjb2x1bW4gImMiOiAieXgiCitDT05URVhUOiAgQ09QWSB0X29uX2Vycm9yX251bGwK K05PVElDRTogIHNldHRpbmcgdG8gbnVsbCBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0 eSBhdCBsaW5lIDIgZm9yIGNvbHVtbiAiYiI6ICJ6eCIKK0NPTlRFWFQ6ICBDT1BZIHRfb25fZXJy b3JfbnVsbAorTk9USUNFOiAgc2V0dGluZyB0byBudWxsIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21w YXRpYmlsaXR5IGF0IGxpbmUgMyBmb3IgY29sdW1uICJjIjogImVhIgorQ09OVEVYVDogIENPUFkg dF9vbl9lcnJvcl9udWxsCitOT1RJQ0U6ICBpbiAzIHJvd3MsIGNvbHVtbnMgd2VyZSBzZXQgdG8g bnVsbCBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eQorU0VMRUNUICogRlJPTSB0X29u X2Vycm9yX251bGwgT1JERVIgQlkgYTsKKyBhICB8ICBiICAgfCAgYyAgIAorLS0tLSstLS0tLS0r LS0tLS0tCisgMTAgfCBOVUxMIHwgTlVMTAorIDExIHwgTlVMTCB8ICAgMTIKKyAxMyB8ICAgMTQg fCBOVUxMCisoMyByb3dzKQorCitccHNldCBudWxsICcnCiAtLSB0ZXN0cyBmb3Igb25fZXJyb3Ig b3B0aW9uIHdpdGggbG9nX3ZlcmJvc2l0eSBhbmQgbnVsbCBjb25zdHJhaW50IHZpYSBkb21haW4K IENSRUFURSBET01BSU4gZGNoZWNrX2lnbl9lcnIyIHZhcmNoYXIoMTUpIE5PVCBOVUxMOwogQ1JF QVRFIFRBQkxFIGNoZWNrX2lnbl9lcnIyIChuIGludCwgbSBpbnRbXSwgayBpbnQsIGwgZGNoZWNr X2lnbl9lcnIyKTsKQEAgLTg0MSw2ICs4OTYsOSBAQCBEUk9QIFZJRVcgaW5zdGVhZF9vZl9pbnNl cnRfdGJsX3ZpZXc7CiBEUk9QIFZJRVcgaW5zdGVhZF9vZl9pbnNlcnRfdGJsX3ZpZXdfMjsKIERS T1AgRlVOQ1RJT04gZnVuX2luc3RlYWRfb2ZfaW5zZXJ0X3RibCgpOwogRFJPUCBUQUJMRSBjaGVj a19pZ25fZXJyOworRFJPUCBUQUJMRSB0X29uX2Vycm9yX251bGw7CitEUk9QIERPTUFJTiBkX2lu dF9ub3RfbnVsbDsKK0RST1AgRE9NQUlOIGRfaW50X3Bvc2l0aXZlX21heWJlX251bGw7CiBEUk9Q IFRBQkxFIGNoZWNrX2lnbl9lcnIyOwogRFJPUCBET01BSU4gZGNoZWNrX2lnbl9lcnIyOwogRFJP UCBUQUJMRSBoYXJkX2VycjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHky LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkyLnNxbAppbmRleCA2NjQzNTE2NzUwMC4u ZDNiNDI3ODU3YWIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkyLnNxbAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5Mi5zcWwKQEAgLTY3LDEyICs2NywxNSBAQCBD T1BZIHggZnJvbSBzdGRpbiAoZm9yY2VfbnVsbCAoYSksIGZvcmNlX251bGwgKGIpKTsKIENPUFkg eCBmcm9tIHN0ZGluIChjb252ZXJ0X3NlbGVjdGl2ZWx5IChhKSwgY29udmVydF9zZWxlY3RpdmVs eSAoYikpOwogQ09QWSB4IGZyb20gc3RkaW4gKGVuY29kaW5nICdzcWxfYXNjaWknLCBlbmNvZGlu ZyAnc3FsX2FzY2lpJyk7CiBDT1BZIHggZnJvbSBzdGRpbiAob25fZXJyb3IgaWdub3JlLCBvbl9l cnJvciBpZ25vcmUpOworQ09QWSB4IGZyb20gc3RkaW4gKG9uX2Vycm9yIHNldF9udWxsLCBvbl9l cnJvciBzZXRfbnVsbCk7CiBDT1BZIHggZnJvbSBzdGRpbiAobG9nX3ZlcmJvc2l0eSBkZWZhdWx0 LCBsb2dfdmVyYm9zaXR5IHZlcmJvc2UpOwogCiAtLSBpbmNvcnJlY3Qgb3B0aW9ucwogQ09QWSB4 IGZyb20gc3RkaW4gKGZvcm1hdCBCSU5BUlksIGRlbGltaXRlciAnLCcpOwogQ09QWSB4IGZyb20g c3RkaW4gKGZvcm1hdCBCSU5BUlksIG51bGwgJ3gnKTsKIENPUFkgeCBmcm9tIHN0ZGluIChmb3Jt YXQgQklOQVJZLCBvbl9lcnJvciBpZ25vcmUpOworQ09QWSB4IGZyb20gc3RkaW4gKGZvcm1hdCBC SU5BUlksIG9uX2Vycm9yIHNldF9udWxsKTsKK0NPUFkgeCBmcm9tIHN0ZGluIChvbl9lcnJvciBz ZXRfbnVsbCwgcmVqZWN0X2xpbWl0IDIpOwogQ09QWSB4IGZyb20gc3RkaW4gKG9uX2Vycm9yIHVu c3VwcG9ydGVkKTsKIENPUFkgeCBmcm9tIHN0ZGluIChmb3JtYXQgVEVYVCwgZm9yY2VfcXVvdGUo YSkpOwogQ09QWSB4IGZyb20gc3RkaW4gKGZvcm1hdCBURVhULCBmb3JjZV9xdW90ZSAqKTsKQEAg LTg3LDYgKzkwLDcgQEAgQ09QWSB4IGZyb20gc3RkaW4gKGZvcm1hdCBURVhULCBmb3JjZV9udWxs ICopOwogQ09QWSB4IHRvIHN0ZG91dCAoZm9ybWF0IENTViwgZm9yY2VfbnVsbChhKSk7CiBDT1BZ IHggdG8gc3Rkb3V0IChmb3JtYXQgQ1NWLCBmb3JjZV9udWxsICopOwogQ09QWSB4IHRvIHN0ZG91 dCAoZm9ybWF0IEJJTkFSWSwgb25fZXJyb3IgdW5zdXBwb3J0ZWQpOworQ09QWSB4IHRvIHN0ZG91 dCAob25fZXJyb3Igc2V0X251bGwpOwogQ09QWSB4IGZyb20gc3RkaW4gKGxvZ192ZXJib3NpdHkg dW5zdXBwb3J0ZWQpOwogQ09QWSB4IGZyb20gc3RkaW4gd2l0aCAocmVqZWN0X2xpbWl0IDEpOwog Q09QWSB4IGZyb20gc3RkaW4gd2l0aCAob25fZXJyb3IgaWdub3JlLCByZWplY3RfbGltaXQgMCk7 CkBAIC01NDAsNiArNTQ0LDQyIEBAIGEJezJ9CTIKIDgJezh9CTgKIFwuCiAKK0NSRUFURSBET01B SU4gZF9pbnRfbm90X251bGwgQVMgaW50ZWdlciBOT1QgTlVMTCBDSEVDSyh2YWx1ZSA+IDApOwor Q1JFQVRFIERPTUFJTiBkX2ludF9wb3NpdGl2ZV9tYXliZV9udWxsIEFTIGludGVnZXIgQ0hFQ0so dmFsdWUgPiAwKTsKK0NSRUFURSBUQUJMRSB0X29uX2Vycm9yX251bGwgKGEgZF9pbnRfbm90X251 bGwsIGIgZF9pbnRfcG9zaXRpdmVfbWF5YmVfbnVsbCwgYyBpbnRlZ2VyKTsKKworXHBzZXQgbnVs bCBOVUxMCitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9yIHNl dF9udWxsKTsgLS0gZmFpbAorXE4JMTEJMTMKK1wuCisKK0NPUFkgdF9vbl9lcnJvcl9udWxsIEZS T00gU1RESU4gV0lUSCAob25fZXJyb3Igc2V0X251bGwpOyAtLSBmYWlsCitzcwkxMQkxNAorXC4K KworQ09QWSB0X29uX2Vycm9yX251bGwgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBzZXRfbnVs bCk7IC0tIGZhaWwKKy0xCTExCTEzCitcLgorCistLSBmYWlsLCBsZXNzIGRhdGEuCitDT1BZIHRf b25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEggKGRlbGltaXRlciAnLCcsIG9uX2Vycm9yIHNl dF9udWxsKTsKKzEsMQorXC4KKy0tIGZhaWwsIGV4dHJhIGRhdGEuCitDT1BZIHRfb25fZXJyb3Jf bnVsbCBGUk9NIFNURElOIFdJVEggKGRlbGltaXRlciAnLCcsIG9uX2Vycm9yIHNldF9udWxsKTsK KzEsMiwzLDQKK1wuCisKK0NPUFkgdF9vbl9lcnJvcl9udWxsIEZST00gU1RESU4gV0lUSCAob25f ZXJyb3Igc2V0X251bGwsIGxvZ192ZXJib3NpdHkgdmVyYm9zZSk7IC0tIG9rCisxMAl4MQl5eAor MTEJengJMTIKKzEzCTE0CWVhCitcLgorCitTRUxFQ1QgKiBGUk9NIHRfb25fZXJyb3JfbnVsbCBP UkRFUiBCWSBhOworCitccHNldCBudWxsICcnCisKIC0tIHRlc3RzIGZvciBvbl9lcnJvciBvcHRp b24gd2l0aCBsb2dfdmVyYm9zaXR5IGFuZCBudWxsIGNvbnN0cmFpbnQgdmlhIGRvbWFpbgogQ1JF QVRFIERPTUFJTiBkY2hlY2tfaWduX2VycjIgdmFyY2hhcigxNSkgTk9UIE5VTEw7CiBDUkVBVEUg VEFCTEUgY2hlY2tfaWduX2VycjIgKG4gaW50LCBtIGludFtdLCBrIGludCwgbCBkY2hlY2tfaWdu X2VycjIpOwpAQCAtNjA5LDYgKzY0OSw5IEBAIERST1AgVklFVyBpbnN0ZWFkX29mX2luc2VydF90 YmxfdmlldzsKIERST1AgVklFVyBpbnN0ZWFkX29mX2luc2VydF90Ymxfdmlld18yOwogRFJPUCBG VU5DVElPTiBmdW5faW5zdGVhZF9vZl9pbnNlcnRfdGJsKCk7CiBEUk9QIFRBQkxFIGNoZWNrX2ln bl9lcnI7CitEUk9QIFRBQkxFIHRfb25fZXJyb3JfbnVsbDsKK0RST1AgRE9NQUlOIGRfaW50X25v dF9udWxsOworRFJPUCBET01BSU4gZF9pbnRfcG9zaXRpdmVfbWF5YmVfbnVsbDsKIERST1AgVEFC TEUgY2hlY2tfaWduX2VycjI7CiBEUk9QIERPTUFJTiBkY2hlY2tfaWduX2VycjI7CiBEUk9QIFRB QkxFIGhhcmRfZXJyOwotLSAKMi4zNC4xCgo= --000000000000c3c8c3064bd8c927--