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 1wUx3C-001YxM-1e for pgsql-hackers@arkaria.postgresql.org; Thu, 04 Jun 2026 01:39:14 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wUx3B-004HOi-0d for pgsql-hackers@arkaria.postgresql.org; Thu, 04 Jun 2026 01:39:13 +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 1wUx3A-004HOa-2J for pgsql-hackers@lists.postgresql.org; Thu, 04 Jun 2026 01:39:12 +0000 Received: from mail-vs1-xe2f.google.com ([2607:f8b0:4864:20::e2f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wUx37-000000019cT-46Jd for pgsql-hackers@lists.postgresql.org; Thu, 04 Jun 2026 01:39:12 +0000 Received: by mail-vs1-xe2f.google.com with SMTP id ada2fe7eead31-6ca94e539f9so108054137.2 for ; Wed, 03 Jun 2026 18:39:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780537148; cv=none; d=google.com; s=arc-20240605; b=feQifmE6AXKD//wB46EXh7lDBkVXrRpQ1VSxSPKB6VjmPGZOaEu2EVNtLPpLZibKV6 eKEhx6/6rwjpuvFHuv+o8zjGz9Nhmz6B0t+4WApeCdkMHGvJ90kPAVFRF+osacVWUmMp 9p5X21pvUR4dIUwtEcYPd/sPe6CEdw7JGq+RgFjsUqSBjD6WgjzTJUlXW1uJuxaeptyd 0qLVlO3rL2Wi5AJY6HdTLvgT34PmkuTE3/icswh39MrkTAxIrBOyttVWFaUi05SpPa1P rLAzq/vB7EpCLZPVSRvbS4v7CJ42WOfmAihXiFrtrI9mxzR5/2mSZRJJiZ8w/ZAyRLEp Ymiw== 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=EubQYBm2p0+2p0rTAtVSl64gwedHQ3hLXLRy/jEgQGg=; fh=jA1y0o48KsEr1ncbKeaqgkONBUmAh+4Dc8UAqTSPpFs=; b=e1Q4TXCZac0EUcT80qfvStClRteI/LXFchZUb9zgKp0J2JucwRgEiX5BF+RDgDrv4t NuBV3sSGe0wmIc4OpuIqg+eu0StYSUGhAML28pk6yESMKG1gY2QhAUhRrb8xKAYry+G2 QVQVWz/fL2jCjv9HCd4UNsAm5qEp7fdh/L0XGGa+AmfgNs6UhJOWP/fIiAEaMoW2xJFF CLkQWZUQvnP2onKeN6HXMemwc1cLlaPrJ2kh3Yt2pHVL0HtcR98sl4yabl283XFbl5Dr +exBzV+rI0zm6M/J614zQDAUYvQWyPMcYEloMIFFf8v600gIE9jLOl0FHiuECnEEMaAl OU0w==; 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=1780537148; x=1781141948; 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=EubQYBm2p0+2p0rTAtVSl64gwedHQ3hLXLRy/jEgQGg=; b=Y8pTiwB1Ct/5sGiII+P6WcfOn3PalR/WLA+Cus6ddOAeT6QzR8Cpt+nlqlh0nyeqQF zhFlb2m0bYNVLsic19Prrb3bZITtroKxAt9e3qESvchP7eudw8XxgQgFzcPnmgdujokl HaHNyJglvbww72UQ+kc+agLWpXfUccfZWU2MVlfjLMeO4H+MwP9NwUoyMkS0O8P2E/hq 32VXA6cJvPiChtiWMbxS3Xo9077/cYg3s0VWCDHlYGjnFU3ThRTnN0v+0veqeybeHlqm DciYwwnddjMmMTJSGIXXmoKqhfeElShr/7/0+djvb66AHdwvEXhh8Gk3fmjmXNFGxK2D bbQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780537148; x=1781141948; 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=EubQYBm2p0+2p0rTAtVSl64gwedHQ3hLXLRy/jEgQGg=; b=kU1JL4TP+IcYywHbFU1soWyDoFKCLkVPcUIefz7ALwKU//xfDZfGTHONu/LCPQ4djI DA+F/MOZmy1htH3CKKOk18NWSz9CRE5tppRJyEGw6cGomrdkfaZWijEThXmGb6kZGhvw KjA/QLEhLVIvpfpl/7bGTLNe8WQeQezVQGpZsAB2ixrUwXRmS4DVZBljMCy+4MgOb34i GvMRmJnLL4g/+Rx7eisC8cCYIAE7P0uAUPe0ePV7nW7QPpvaQ2j5d0BweNR+4KO6IreY YgLvG3pidQRf2txQIAn6bWeo80i6h3sREodPCyAsqCplq+8hDnTNUkOUMq5Q5rO/ZfIO C4pA== X-Gm-Message-State: AOJu0Ywc5EAp8nms0DT5Fx1oLN7HTuUEJ5R4FwlQfb6lFSuQpqWccFD7 q/b7rD9P0YPQJpViq6R9yWscQ8dcJu7y/JDPERdonmY4ph59eDC9RwJ6IKBYGTpZUJO2NhlfMHR xanUnQij9ri5PCftFA73BgnGqm9NqWMmxLhkTeGs= X-Gm-Gg: Acq92OFWd4fB2gbQSLG0RHvHrwyb3pJ+fy2ChLTHzx7AYuF79siD1++QUrZFRhHLh+2 /66eNhxLKEfQrkPNO3IDsB45ybPnkxF6XRpmh446oWTbmDUdfad3KyALQDP/mAE3y1X9HHq1I5c 4JbMx+3tEKnvKVjJo2tqvWUifSEiB/Je6vKtsgnCaknSTbVnvSWgeeC6cEQs6s7OykzhIRsNSTm I1PMj+Ssdp3h/GMEEK5XDe8nzoaUN4HQyD3VBOqmNwYGJ0VFdzZ4EoSsJpCvFgrLf/SN/TFYVV5 R48+nvgaiVz7A6vNXPdYMf+ALoD3f9GW3ZVpJNEKEaNkZ+pqx8AP+EByNUMVlKVVTqaJILsN4bz gfwzD5DEmGHvq2olI/oGmgiVsn7cFGaqkJjqC5tK27yIWLrA55zSz1im9hSBoIXSXdJ+pPgsqYU VKTGh6fH4yjeBKl1BkgbUbsu1x0Be+OF3U X-Received: by 2002:a67:e7c1:0:b0:6d9:a879:8e39 with SMTP id ada2fe7eead31-6ec47202641mr4072796137.14.1780537147377; Wed, 03 Jun 2026 18:39:07 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: jian he Date: Thu, 4 Jun 2026 09:38:30 +0800 X-Gm-Features: AVHnY4LN2Aeq43BELhsxWsRUIOtMGtlTAO0hHcF15kaBPAOnbyNlMzBbY6Q_MnU Message-ID: Subject: Re: CREATE TABLE LIKE INCLUDING TRIGGERS To: Zsolt Parragi Cc: pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000002dfaed0653639c79" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000002dfaed0653639c79 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, May 28, 2026 at 6:53=E2=80=AFAM Zsolt Parragi wrote: > > Hello! > > Sorry for the late reply, somehow I missed the previous updates. > > I found one more problematic scenario, I think the patch should ignore > INSTEAD OF triggers: > > CREATE TABLE base (id int, val text); > CREATE VIEW v_instead AS SELECT id, val FROM base; > CREATE FUNCTION v_instead_ins() RETURNS trigger LANGUAGE plpgsql AS $$ > BEGIN > INSERT INTO base VALUES (NEW.id, NEW.val); > RETURN NEW; > END; > $$; > CREATE TRIGGER v_instead_trg > INSTEAD OF INSERT ON v_instead > FOR EACH ROW EXECUTE FUNCTION v_instead_ins(); > -- currently fails > -- ERROR: "t_all" is a table > -- DETAIL: Tables cannot have INSTEAD OF triggers. > CREATE TABLE t_all (LIKE v_instead INCLUDING ALL); > https://www.postgresql.org/docs/current/sql-createtrigger.html says [Statement-level triggers on a view are fired only if the action on the view is handled by a row-level INSTEAD OF trigger.] And the view's INSTEAD OF trigger cannot be applied to a regular table. Therefore, it does not make sense to copy triggers from a source view to a new regular table. I intended to skip all source view's triggers completely. While at it, I found that foreign tables do not support constraint triggers or triggers with transition tables, CREATE FOREIGN TABLE LIKE will ignore these triggers > > - /* Transform expression. Copy to be sure we don't modify= original */ > - whenClause =3D transformWhereClause(pstate, > - = copyObject(stmt->whenClause), > - = EXPR_KIND_TRIGGER_WHEN, > - = "WHEN"); > - /* we have to fix its collations too */ > - assign_expr_collations(pstate, whenClause); > + if (stmt->transformed) > + whenClause =3D stmt->whenClause; > + else > + { > + /* Transform expression. Copy to be sure we don'= t modify original */ > + whenClause =3D transformWhereClause(pstate, > + = copyObject(stmt->whenClause), > + = EXPR_KIND_TRIGGER_WHEN, > + = "WHEN"); > + > + /* we have to fix its collations too */ > + assign_expr_collations(pstate, whenClause); > + > + stmt->transformed =3D true; > + } > > > Do we need the last assignment in this diff? It sets > stmt->transformed, but we don't actually transform the statement, we > create a copy. The flag also doesn't seem to be used after that. > Everything seems to work fine if I remove this assignment, and we > don't need the const related function signature changes without it. > You are right, we don't actually transform the stmt->whenClause. -- jian https://www.enterprisedb.com/ --0000000000002dfaed0653639c79 Content-Type: application/x-patch; name="v10-0002-CREATE-TABLE-LIKE-INCLUDING-TRIGGERS-copies-tgenabled.patch" Content-Disposition: attachment; filename="v10-0002-CREATE-TABLE-LIKE-INCLUDING-TRIGGERS-copies-tgenabled.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpysq40q1 RnJvbSAwZjA4OTg0YTIxNWYxODA0MjNlNmM1ZDM4OTlkM2MzYjZiNjUwMjRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMiBNYXIgMjAyNiAxMDozNToyNiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjEw IDIvMl0gQ1JFQVRFIFRBQkxFIExJS0UgSU5DTFVESU5HIFRSSUdHRVJTIGNvcGllcyB0Z2VuYWJs ZWQKCmRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FDSnVmeEhKQXIyRmpiZUI2Z2hn Xy1ONWR4WDVKVm5qS1NMT1V4T3l0NFRlYUFXUWtnQG1haWwuZ21haWwuY29tCmNvbW1pdGZlc3Q6 IGh0dHBzOi8vY29tbWl0ZmVzdC5wb3N0Z3Jlc3FsLm9yZy9wYXRjaC82MDg3Ci0tLQogc3JjL2Jh Y2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9jb21t YW5kcy90YWJsZWNtZHMuYyAgICAgICB8ICA0ICsrKysKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3Ry aWdnZXIuYyAgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAg ICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgICAgICAgICAgICAgfCAx MiArKysrKysrKy0tLS0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgIHwg IDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90cmlnZ2Vycy5vdXQgfCAgOSArKysrKysr LS0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RyaWdnZXJzLnNxbCAgICAgIHwgIDMgKysrCiA4IGZp bGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRl eC5jCmluZGV4IDZhYWFmNzM4NjYyLi41NzZmNGQyZDAwZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAt MjA0MSw2ICsyMDQxLDcgQEAgaW5kZXhfY29uc3RyYWludF9jcmVhdGUoUmVsYXRpb24gaGVhcFJl bGF0aW9uLAogCQlDcmVhdGVUcmlnU3RtdCAqdHJpZ2dlciA9IG1ha2VOb2RlKENyZWF0ZVRyaWdT dG10KTsKIAogCQl0cmlnZ2VyLT5yZXBsYWNlID0gZmFsc2U7CisJCXRyaWdnZXItPnRnZW5hYmxl ZCA9IFRSSUdHRVJfRklSRVNfT05fT1JJR0lOOwogCQl0cmlnZ2VyLT5pc2NvbnN0cmFpbnQgPSB0 cnVlOwogCQl0cmlnZ2VyLT50cmlnbmFtZSA9IChjb25zdHJhaW50VHlwZSA9PSBDT05TVFJBSU5U X1BSSU1BUlkpID8KIAkJCSJQS19Db25zdHJhaW50VHJpZ2dlciIgOgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJs ZWNtZHMuYwppbmRleCAwOTY1NGFiYTVmMC4uYzc0ZGQ5OGIzNDIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Rh YmxlY21kcy5jCkBAIC0xNDA5MCw2ICsxNDA5MCw3IEBAIENyZWF0ZUZLQ2hlY2tUcmlnZ2VyKE9p ZCBteVJlbE9pZCwgT2lkIHJlZlJlbE9pZCwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LAogCSAq LwogCWZrX3RyaWdnZXIgPSBtYWtlTm9kZShDcmVhdGVUcmlnU3RtdCk7CiAJZmtfdHJpZ2dlci0+ cmVwbGFjZSA9IGZhbHNlOworCWZrX3RyaWdnZXItPnRnZW5hYmxlZCA9IFRSSUdHRVJfRklSRVNf T05fT1JJR0lOOwogCWZrX3RyaWdnZXItPmlzY29uc3RyYWludCA9IHRydWU7CiAJZmtfdHJpZ2dl ci0+dHJpZ25hbWUgPSAiUklfQ29uc3RyYWludFRyaWdnZXJfYyI7CiAJZmtfdHJpZ2dlci0+cmVs YXRpb24gPSBOVUxMOwpAQCAtMTQxNTEsNiArMTQxNTIsNyBAQCBjcmVhdGVGb3JlaWduS2V5QWN0 aW9uVHJpZ2dlcnMoT2lkIG15UmVsT2lkLCBPaWQgcmVmUmVsT2lkLCBDb25zdHJhaW50ICpma2Nv bnN0cgogCSAqLwogCWZrX3RyaWdnZXIgPSBtYWtlTm9kZShDcmVhdGVUcmlnU3RtdCk7CiAJZmtf dHJpZ2dlci0+cmVwbGFjZSA9IGZhbHNlOworCWZrX3RyaWdnZXItPnRnZW5hYmxlZCA9IFRSSUdH RVJfRklSRVNfT05fT1JJR0lOOwogCWZrX3RyaWdnZXItPmlzY29uc3RyYWludCA9IHRydWU7CiAJ ZmtfdHJpZ2dlci0+dHJpZ25hbWUgPSAiUklfQ29uc3RyYWludFRyaWdnZXJfYSI7CiAJZmtfdHJp Z2dlci0+cmVsYXRpb24gPSBOVUxMOwpAQCAtMTQyMTMsNiArMTQyMTUsNyBAQCBjcmVhdGVGb3Jl aWduS2V5QWN0aW9uVHJpZ2dlcnMoT2lkIG15UmVsT2lkLCBPaWQgcmVmUmVsT2lkLCBDb25zdHJh aW50ICpma2NvbnN0cgogCSAqLwogCWZrX3RyaWdnZXIgPSBtYWtlTm9kZShDcmVhdGVUcmlnU3Rt dCk7CiAJZmtfdHJpZ2dlci0+cmVwbGFjZSA9IGZhbHNlOworCWZrX3RyaWdnZXItPnRnZW5hYmxl ZCA9IFRSSUdHRVJfRklSRVNfT05fT1JJR0lOOwogCWZrX3RyaWdnZXItPmlzY29uc3RyYWludCA9 IHRydWU7CiAJZmtfdHJpZ2dlci0+dHJpZ25hbWUgPSAiUklfQ29uc3RyYWludFRyaWdnZXJfYSI7 CiAJZmtfdHJpZ2dlci0+cmVsYXRpb24gPSBOVUxMOwpAQCAtMjEyMDYsNiArMjEyMDksNyBAQCBD bG9uZVJvd1RyaWdnZXJzVG9QYXJ0aXRpb24oUmVsYXRpb24gcGFyZW50LCBSZWxhdGlvbiBwYXJ0 aXRpb24pCiAKIAkJdHJpZ1N0bXQgPSBtYWtlTm9kZShDcmVhdGVUcmlnU3RtdCk7CiAJCXRyaWdT dG10LT5yZXBsYWNlID0gZmFsc2U7CisJCXRyaWdTdG10LT50Z2VuYWJsZWQgPSB0cmlnRm9ybS0+ dGdlbmFibGVkOwogCQl0cmlnU3RtdC0+aXNjb25zdHJhaW50ID0gT2lkSXNWYWxpZCh0cmlnRm9y bS0+dGdjb25zdHJhaW50KTsKIAkJdHJpZ1N0bXQtPnRyaWduYW1lID0gTmFtZVN0cih0cmlnRm9y bS0+dGduYW1lKTsKIAkJdHJpZ1N0bXQtPnJlbGF0aW9uID0gTlVMTDsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdn ZXIuYwppbmRleCBmNTVhMDhmMDA4OC4uYWIwODViZjFmNDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RyaWdnZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2Vy LmMKQEAgLTcwOTYsNiArNzA5Niw3IEBAIGdlbmVyYXRlQ2xvbmVkVHJpZ2dlclN0bXQoUmFuZ2VW YXIgKmhlYXBSZWwsIE9pZCBzb3VyY2VfdHJpZ2lkLAogCiAJdHJpZ1N0bXQgPSBtYWtlTm9kZShD cmVhdGVUcmlnU3RtdCk7CiAJdHJpZ1N0bXQtPnJlcGxhY2UgPSBmYWxzZTsKKwl0cmlnU3RtdC0+ dGdlbmFibGVkID0gdHJpZ0Zvcm0tPnRnZW5hYmxlZDsKIAl0cmlnU3RtdC0+aXNjb25zdHJhaW50 ID0gT2lkSXNWYWxpZCh0cmlnRm9ybS0+dGdjb25zdHJhaW50KTsKIAl0cmlnU3RtdC0+dHJpZ25h bWUgPSBwc3RyZHVwKE5hbWVTdHIodHJpZ0Zvcm0tPnRnbmFtZSkpOwogCXRyaWdTdG10LT5yZWxh dGlvbiA9IGhlYXBSZWw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIv c3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCA2ZmNhMjYzNjExNi4uZTBkZmNlNjkyNTkg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQv cGFyc2VyL2dyYW0ueQpAQCAtNjE5Niw2ICs2MTk2LDcgQEAgQ3JlYXRlVHJpZ1N0bXQ6CiAJCQkJ CUNyZWF0ZVRyaWdTdG10ICpuID0gbWFrZU5vZGUoQ3JlYXRlVHJpZ1N0bXQpOwogCiAJCQkJCW4t PnJlcGxhY2UgPSAkMjsKKwkJCQkJbi0+dGdlbmFibGVkID0gVFJJR0dFUl9GSVJFU19PTl9PUklH SU47CiAJCQkJCW4tPmlzY29uc3RyYWludCA9IGZhbHNlOwogCQkJCQluLT50cmlnbmFtZSA9ICQ0 OwogCQkJCQluLT5yZWxhdGlvbiA9ICQ4OwpAQCAtNjI0Nyw2ICs2MjQ4LDcgQEAgQ3JlYXRlVHJp Z1N0bXQ6CiAJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK IAkJCQkJCQkJIGVycm1zZygiQ1JFQVRFIE9SIFJFUExBQ0UgQ09OU1RSQUlOVCBUUklHR0VSIGlz IG5vdCBzdXBwb3J0ZWQiKSwKIAkJCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihAMSkpKTsKKwkJ CQkJbi0+dGdlbmFibGVkID0gVFJJR0dFUl9GSVJFU19PTl9PUklHSU47CiAJCQkJCW4tPmlzY29u c3RyYWludCA9IHRydWU7CiAJCQkJCW4tPnRyaWduYW1lID0gJDU7CiAJCQkJCW4tPnJlbGF0aW9u ID0gJDk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYyBiL3NyYy9iYWNr ZW5kL3Rjb3AvdXRpbGl0eS5jCmluZGV4IDczYTU2ZjFkZjFkLi5mNzA4ZGY1N2VlMyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC91 dGlsaXR5LmMKQEAgLTE3MDUsMTAgKzE3MDUsMTQgQEAgUHJvY2Vzc1V0aWxpdHlTbG93KFBhcnNl U3RhdGUgKnBzdGF0ZSwKIAkJCQlicmVhazsKIAogCQkJY2FzZSBUX0NyZWF0ZVRyaWdTdG10Ogot CQkJCWFkZHJlc3MgPSBDcmVhdGVUcmlnZ2VyKChDcmVhdGVUcmlnU3RtdCAqKSBwYXJzZXRyZWUs Ci0JCQkJCQkJCQkJcXVlcnlTdHJpbmcsIEludmFsaWRPaWQsIEludmFsaWRPaWQsCi0JCQkJCQkJ CQkJSW52YWxpZE9pZCwgSW52YWxpZE9pZCwgSW52YWxpZE9pZCwKLQkJCQkJCQkJCQlJbnZhbGlk T2lkLCBOVUxMLCBmYWxzZSwgZmFsc2UpOworCQkJCXsKKwkJCQkJQ3JlYXRlVHJpZ1N0bXQgKnN0 bXQgPSAoQ3JlYXRlVHJpZ1N0bXQgKikgcGFyc2V0cmVlOworCisJCQkJCWFkZHJlc3MgPSBDcmVh dGVUcmlnZ2VyRmlyaW5nT24oc3RtdCwgcXVlcnlTdHJpbmcsIEludmFsaWRPaWQsIEludmFsaWRP aWQsCisJCQkJCQkJCQkJCQkJSW52YWxpZE9pZCwgSW52YWxpZE9pZCwgSW52YWxpZE9pZCwKKwkJ CQkJCQkJCQkJCQlJbnZhbGlkT2lkLCBOVUxMLCBmYWxzZSwKKwkJCQkJCQkJCQkJCQlmYWxzZSwg c3RtdC0+dGdlbmFibGVkKTsKKwkJCQl9CiAJCQkJYnJlYWs7CiAKIAkJCWNhc2UgVF9DcmVhdGVQ TGFuZ1N0bXQ6CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9z cmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggYTdkMDFmNWY5ZmQuLmM1M2Q5ZDZi ZDNlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0zMjE3LDYgKzMyMTcsNyBAQCB0eXBlZGVm IHN0cnVjdCBDcmVhdGVUcmlnU3RtdAogewogCU5vZGVUYWcJCXR5cGU7CiAJYm9vbAkJcmVwbGFj ZTsJCS8qIHJlcGxhY2UgdHJpZ2dlciBpZiBhbHJlYWR5IGV4aXN0cyAqLworCWNoYXIJCXRnZW5h YmxlZDsJCS8qIHRyaWdnZXIncyBmaXJpbmcgY29uZmlndXJhdGlvbiAqLwogCWJvb2wJCWlzY29u c3RyYWludDsJLyogVGhpcyBpcyBhIGNvbnN0cmFpbnQgdHJpZ2dlciAqLwogCWNoYXIJICAgKnRy aWduYW1lOwkJLyogVFJJR0dFUidzIG5hbWUgKi8KIAlSYW5nZVZhciAgICpyZWxhdGlvbjsJCS8q IHJlbGF0aW9uIHRyaWdnZXIgaXMgb24gKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvdHJpZ2dlcnMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90cmlnZ2Vy cy5vdXQKaW5kZXggZjY3NTc4NjczOWQuLjJlOWMzNTJhNjkwIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3RyaWdnZXJzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3RyaWdnZXJzLm91dApAQCAtNDc2LDYgKzQ3Niw5IEBAIE5PVElDRTogIGR1bW15X3Vw ZGF0ZV9mdW5jKGFmdGVyYikgY2FsbGVkOiBhY3Rpb24gPSBVUERBVEUsIG9sZCA9ICh0KSwgbmV3 ID0gKGYpCiBVUERBVEUgc29tZV90IFNFVCBzb21lX2NvbCA9IFRSVUU7CiBOT1RJQ0U6ICBkdW1t eV91cGRhdGVfZnVuYyhiZWZvcmUpIGNhbGxlZDogYWN0aW9uID0gVVBEQVRFLCBvbGQgPSAoZiks IG5ldyA9ICh0KQogTk9USUNFOiAgZHVtbXlfdXBkYXRlX2Z1bmMoYWZ0ZXJhKSBjYWxsZWQ6IGFj dGlvbiA9IFVQREFURSwgb2xkID0gKGYpLCBuZXcgPSAodCkKK0FMVEVSIFRBQkxFIHNvbWVfdCBF TkFCTEUgUkVQTElDQSBUUklHR0VSIHNvbWVfdHJpZ19hZnRlcmE7CitBTFRFUiBUQUJMRSBzb21l X3QgRElTQUJMRSBUUklHR0VSIHNvbWVfdHJpZ19hZnRlcmI7CitBTFRFUiBUQUJMRSBzb21lX3Qg RU5BQkxFIEFMV0FZUyBUUklHR0VSIHNvbWVfdHJpZ19iZWZvcmU7CiBDUkVBVEUgVEFCTEUgc29t ZV90MSAoYyBJTlQsIExJS0Ugc29tZV90IElOQ0xVRElORyBUUklHR0VSUyBJTkNMVURJTkcgQ09N TUVOVFMpOwogXGQrIHNvbWVfdDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg VGFibGUgInB1YmxpYy5zb21lX3QxIgpAQCAtNDg1LDEwICs0ODgsMTIgQEAgQ1JFQVRFIFRBQkxF IHNvbWVfdDEgKGMgSU5ULCBMSUtFIHNvbWVfdCBJTkNMVURJTkcgVFJJR0dFUlMgSU5DTFVESU5H IENPTU1FTlRTKTsKICBzb21lX2NvbCB8IGJvb2xlYW4gfCAgICAgICAgICAgfCBub3QgbnVsbCB8 ICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCiBOb3QtbnVsbCBjb25zdHJhaW50 czoKICAgICAic29tZV90X3NvbWVfY29sX25vdF9udWxsIiBOT1QgTlVMTCAic29tZV9jb2wiCi1U cmlnZ2VyczoKLSAgICBzb21lX3RyaWdfYWZ0ZXJhIEFGVEVSIFVQREFURSBPTiBzb21lX3QxIEZP UiBFQUNIIFJPVyBXSEVOIChOT1Qgb2xkLnNvbWVfY29sIEFORCBuZXcuc29tZV9jb2wpIEVYRUNV VEUgRlVOQ1RJT04gZHVtbXlfdXBkYXRlX2Z1bmMoJ2FmdGVyYScpCitEaXNhYmxlZCB1c2VyIHRy aWdnZXJzOgogICAgIHNvbWVfdHJpZ19hZnRlcmIgQUZURVIgVVBEQVRFIE9OIHNvbWVfdDEgRk9S IEVBQ0ggUk9XIFdIRU4gKE5PVCBuZXcuc29tZV9jb2wpIEVYRUNVVEUgRlVOQ1RJT04gZHVtbXlf dXBkYXRlX2Z1bmMoJ2FmdGVyYicpCitUcmlnZ2VycyBmaXJpbmcgYWx3YXlzOgogICAgIHNvbWVf dHJpZ19iZWZvcmUgQkVGT1JFIFVQREFURSBPTiBzb21lX3QxIEZPUiBFQUNIIFJPVyBFWEVDVVRF IEZVTkNUSU9OIGR1bW15X3VwZGF0ZV9mdW5jKCdiZWZvcmUnKQorVHJpZ2dlcnMgZmlyaW5nIG9u IHJlcGxpY2Egb25seToKKyAgICBzb21lX3RyaWdfYWZ0ZXJhIEFGVEVSIFVQREFURSBPTiBzb21l X3QxIEZPUiBFQUNIIFJPVyBXSEVOIChOT1Qgb2xkLnNvbWVfY29sIEFORCBuZXcuc29tZV9jb2wp IEVYRUNVVEUgRlVOQ1RJT04gZHVtbXlfdXBkYXRlX2Z1bmMoJ2FmdGVyYScpCiAKIERST1AgVEFC TEUgc29tZV90OwogRFJPUCBUQUJMRSBzb21lX3QxOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvdHJpZ2dlcnMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHJpZ2dlcnMuc3Fs CmluZGV4IDFhZmFlYjg2M2Y3Li45ZmIxNmM3MjMyMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvdHJpZ2dlcnMuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RyaWdnZXJz LnNxbApAQCAtMjg4LDYgKzI4OCw5IEBAIElOU0VSVCBJTlRPIHNvbWVfdCBWQUxVRVMgKFRSVUUp OwogVVBEQVRFIHNvbWVfdCBTRVQgc29tZV9jb2wgPSBUUlVFOwogVVBEQVRFIHNvbWVfdCBTRVQg c29tZV9jb2wgPSBGQUxTRTsKIFVQREFURSBzb21lX3QgU0VUIHNvbWVfY29sID0gVFJVRTsKK0FM VEVSIFRBQkxFIHNvbWVfdCBFTkFCTEUgUkVQTElDQSBUUklHR0VSIHNvbWVfdHJpZ19hZnRlcmE7 CitBTFRFUiBUQUJMRSBzb21lX3QgRElTQUJMRSBUUklHR0VSIHNvbWVfdHJpZ19hZnRlcmI7CitB TFRFUiBUQUJMRSBzb21lX3QgRU5BQkxFIEFMV0FZUyBUUklHR0VSIHNvbWVfdHJpZ19iZWZvcmU7 CiBDUkVBVEUgVEFCTEUgc29tZV90MSAoYyBJTlQsIExJS0Ugc29tZV90IElOQ0xVRElORyBUUklH R0VSUyBJTkNMVURJTkcgQ09NTUVOVFMpOwogXGQrIHNvbWVfdDEKIERST1AgVEFCTEUgc29tZV90 OwotLSAKMi4zNC4xCgo= --0000000000002dfaed0653639c79 Content-Type: application/x-patch; name="v10-0001-CREATE-TABLE-LIKE-INCLUDING-TRIGGERS.patch" Content-Disposition: attachment; filename="v10-0001-CREATE-TABLE-LIKE-INCLUDING-TRIGGERS.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpysq40i0 RnJvbSBhMjQ2M2I5OGMxZTRhYTgwMThlYzE1OTVjZWRiZjdjMTc0MzM0NTZhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFRodSwgNCBKdW4gMjAyNiAwODo1NTowMyArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjEw IDEvMl0gQ1JFQVRFIFRBQkxFIExJS0UgSU5DTFVESU5HIFRSSUdHRVJTCgpUaGlzIHdpbGwgY29w eSBhbGwgc291cmNlIHRhYmxlJ3MgdHJpZ2dlcnMgdG8gdGhlIG5ldyB0YWJsZS4gVGhpcyBmdW5j dGlvbmFsaXR5CmFsc28gZXh0ZW5kcyB0byBDUkVBVEUgRk9SRUlHTiBUQUJMRSBMSUtFIHN0YXRl bWVudHMuCklmIElOQ0xVRElORyBDT01NRU5UUyBpcyBzcGVjaWZpZWQsIHRyaWdnZXIgY29tbWVu dHMgd2lsbCBiZSBjb3BpZWQgdG8gdGhlIG5ldwp0YWJsZS4KVGhpcyBjb21tYW5kIHdpbGwgZmFp bCBpZiB0aGUgc291cmNlIHJlbGF0aW9uJ3MgdHJpZ2dlcnMgY29udGFpbiB3aG9sZS1yb3cKcmVm ZXJlbmNlLgoKSW5jb21wYXRpYmxlIHRyaWdnZXJzIHdpbGwgYmUgc2tpcHBlZC4gIEludGVybmFs IHRyaWdnZXJzIChzdWNoIGFzIGZvcmVpZ24ga2V5CmFzc29jaWF0ZWQgdHJpZ2dlcnMpIHdvbid0 IGJlaW5nIGNvcGllZCB0byBuZXcgdGFibGUuIFRyaWdnZXJzIGZyb20gYSBzb3VyY2UKdmlldyB3 aWxsIG5vdCBiZSBjb3BpZWQgdG8gYSBuZXcgdGFibGUuIEFkZGl0aW9uYWxseSwgY29uc3RyYWlu dCB0cmlnZ2VycyBhbmQKdHJpZ2dlcnMgd2l0aCB0cmFuc2l0aW9uIHRhYmxlcyB3aWxsIG5vdCBi ZSBjb3BpZWQgdG8gYSBuZXcgZm9yZWlnbiB0YWJsZS4KCkF1dGhvcjogamlhbiBoZSA8amlhbi51 bml2ZXJzYWxpdHlAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmV5IEJvcm9kaW4gPHg0bW1t QHlhbmRleC10ZWFtLnJ1PgpSZXZpZXdlZC1ieTogWnNvbHQgUGFycmFnaSA8enNvbHQucGFycmFn aUBwZXJjb25hLmNvbT4KUmV2aWV3ZWQtYnk6IFJvYmVydCBIYWFzIDxyb2JlcnRtaGFhc0BnbWFp bC5jb20+ClJldmlld2VkLWJ5OiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpUZXN0 ZWQtYnk6IAlsYWtzaG1pIDxsYWtzaG1pZ2NkYWNAZ21haWwuY29tPgoKZGlzY3Vzc2lvbjogaHR0 cHM6Ly9wb3N0Z3IuZXMvbS9DQUNKdWZ4SEpBcjJGamJlQjZnaGdfLU41ZHhYNUpWbmpLU0xPVXhP eXQ0VGVhQVdRa2dAbWFpbC5nbWFpbC5jb20KY29tbWl0ZmVzdDogaHR0cHM6Ly9jb21taXRmZXN0 LnBvc3RncmVzcWwub3JnL3BhdGNoLzYwODcKLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9m b3JlaWduX3RhYmxlLnNnbWwgICAgfCAgMTcgKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3Rh YmxlLnNnbWwgICAgICAgICAgICB8ICAxNSArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5j ICAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21k cy5jICAgICAgICAgICAgICB8ICAgOCArCiBzcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMg ICAgICAgICAgICAgICAgfCAyMjggKysrKysrKysrKysrKysrKystCiBzcmMvYmFja2VuZC9wYXJz ZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgICAgfCAgIDkgKy0KIHNyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV91dGlsY21kLmMgICAgICAgICAgICB8ICA1NCArKysrLQogc3JjL2luY2x1ZGUvY29t bWFuZHMvdHJpZ2dlci5oICAgICAgICAgICAgICAgIHwgICA5ICsKIHNyYy9pbmNsdWRlL25vZGVz L3BhcnNlbm9kZXMuaCAgICAgICAgICAgICAgICB8ICAgNCArCiBzcmMvaW5jbHVkZS9wYXJzZXIv a3dsaXN0LmggICAgICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQv Y3JlYXRlX3RhYmxlX2xpa2Uub3V0ICAgIHwgIDIzICsrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3RyaWdnZXJzLm91dCAgICAgICAgfCAxMjQgKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVz cy9zcWwvY3JlYXRlX3RhYmxlX2xpa2Uuc3FsICAgIHwgIDI0ICsrCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC90cmlnZ2Vycy5zcWwgICAgICAgICAgICAgfCAgNjcgKysrKysKIDE0IGZpbGVzIGNoYW5n ZWQsIDU3MiBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV9mb3JlaWduX3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVm L2NyZWF0ZV9mb3JlaWduX3RhYmxlLnNnbWwKaW5kZXggMDgzZjE2NzcyYjcuLmVkNTlkMGExZTBj IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9mb3JlaWduX3RhYmxlLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfZm9yZWlnbl90YWJsZS5zZ21sCkBAIC02MCw3 ICs2MCw3IEBAIENSRUFURSBGT1JFSUdOIFRBQkxFIFsgSUYgTk9UIEVYSVNUUyBdIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lCiAKIDxwaHJhc2U+YW5kIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5saWtlX29wdGlvbjwvcmVwbGFjZWFibGU+IGlzOjwvcGhy YXNlPgogCi17IElOQ0xVRElORyB8IEVYQ0xVRElORyB9IHsgQ09NTUVOVFMgfCBDT05TVFJBSU5U UyB8IERFRkFVTFRTIHwgR0VORVJBVEVEIHwgU1RBVElTVElDUyB8IEFMTCB9Cit7IElOQ0xVRElO RyB8IEVYQ0xVRElORyB9IHsgQ09NTUVOVFMgfCBDT05TVFJBSU5UUyB8IERFRkFVTFRTIHwgR0VO RVJBVEVEIHwgU1RBVElTVElDUyB8IFRSSUdHRVJTIHwgQUxMIH0KIAogPHBocmFzZT5hbmQgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9ib3VuZF9zcGVjPC9yZXBsYWNl YWJsZT4gaXM6PC9waHJhc2U+CiAKQEAgLTIzMiw3ICsyMzIsNyBAQCBXSVRIICggTU9EVUxVUyA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJs ZT4sIFJFTQogICAgICAgICA8dGVybT48bGl0ZXJhbD5JTkNMVURJTkcgQ09NTUVOVFM8L2xpdGVy YWw+PC90ZXJtPgogICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KLSAgICAgICAg ICBDb21tZW50cyBmb3IgdGhlIGNvcGllZCBjb2x1bW5zLCBjb25zdHJhaW50cywgYW5kIGV4dGVu ZGVkIHN0YXRpc3RpY3MKKyAgICAgICAgICBDb21tZW50cyBmb3IgdGhlIGNvcGllZCBjb2x1bW5z LCBjb25zdHJhaW50cywgZXh0ZW5kZWQgc3RhdGlzdGljcywgYW5kIHRyaWdnZXJzCiAgICAgICAg ICAgd2lsbCBiZSBjb3BpZWQuICBUaGUgZGVmYXVsdCBiZWhhdmlvciBpcyB0byBleGNsdWRlIGNv bW1lbnRzLAogICAgICAgICAgIHJlc3VsdGluZyBpbiB0aGUgY29ycmVzcG9uZGluZyBvYmplY3Rz IGluIHRoZSBuZXcgdGFibGUgaGF2aW5nIG5vCiAgICAgICAgICAgY29tbWVudHMuCkBAIC0yODQs NiArMjg0LDE5IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgICAgIDwvbGlzdGl0ZW0+ CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwt Y3JlYXRlZm9yZWlnbnRhYmxlLXBhcm1zLWxpa2Utb3B0LXRyaWdnZXJzIj4KKyAgICAgICAgPHRl cm0+PGxpdGVyYWw+SU5DTFVESU5HIFRSSUdHRVJTPC9saXRlcmFsPjwvdGVybT4KKyAgICAgICAg PGxpc3RpdGVtPgorICAgICAgICAgPHBhcmE+CisgICAgICAgICAgQWxsIG5vbi1pbnRlcm5hbCB0 cmlnZ2VycyBhcmUgY29waWVkIHRvIHRoZSBuZXcgdGFibGUuCisgICAgICAgICAgQmVjYXVzZSB0 cmlnZ2VycyBvbiB2aWV3cyBkaWZmZXIgc2lnbmlmaWNhbnRseSBmcm9tIHRob3NlIG9uIHRhYmxl cywgdHJpZ2dlcnMgZnJvbQorICAgICAgICAgIHNvdXJjZSB2aWV3IGFyZSBub3QgYmUgY29waWVk LgorICAgICAgICAgIEZ1cnRoZXJtb3JlIGNvbnN0cmFpbnQgdHJpZ2dlcnMgYW5kIHRyaWdnZXJz IHRoYXQgdXNlIHRyYW5zaXRpb24gdGFibGVzCisgICAgICAgICAgd2lsbCBub3QgYmUgY29waWVk IGJlY2F1c2UgZm9yZWlnbiB0YWJsZXMgZG8gbm90IHN1cHBvcnQgdGhlc2UuCisgICAgICAgICA8 L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgPC92YXJsaXN0ZW50cnk+CisKICAg ICAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRlZm9yZWlnbnRhYmxlLXBhcm1zLWxpa2Ut b3B0LWFsbCI+CiAgICAgICAgIDx0ZXJtPjxsaXRlcmFsPklOQ0xVRElORyBBTEw8L2xpdGVyYWw+ PC90ZXJtPgogICAgICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVm L2NyZWF0ZV90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbApp bmRleCBlMzQyNTg1YzdmMC4uZTkyOWRhNWM1NTEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3RhYmxlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUu c2dtbApAQCAtMTAwLDcgKzEwMCw3IEBAIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmVyZW50aWFsX2Fj dGlvbjwvcmVwbGFjZWFibGU+IF0gWyBPTiBVUERBVEUgPHJlcGxhY2VhYmxlIGNsCiAKIDxwaHJh c2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5saWtlX29wdGlvbjwvcmVwbGFj ZWFibGU+IGlzOjwvcGhyYXNlPgogCi17IElOQ0xVRElORyB8IEVYQ0xVRElORyB9IHsgQ09NTUVO VFMgfCBDT01QUkVTU0lPTiB8IENPTlNUUkFJTlRTIHwgREVGQVVMVFMgfCBHRU5FUkFURUQgfCBJ REVOVElUWSB8IElOREVYRVMgfCBTVEFUSVNUSUNTIHwgU1RPUkFHRSB8IEFMTCB9Cit7IElOQ0xV RElORyB8IEVYQ0xVRElORyB9IHsgQ09NTUVOVFMgfCBDT01QUkVTU0lPTiB8IENPTlNUUkFJTlRT IHwgREVGQVVMVFMgfCBHRU5FUkFURUQgfCBJREVOVElUWSB8IElOREVYRVMgfCBTVEFUSVNUSUNT IHwgU1RPUkFHRSB8IFRSSUdHRVJTIHwgQUxMIH0KIAogPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9ib3VuZF9zcGVjPC9yZXBsYWNlYWJsZT4gaXM6 PC9waHJhc2U+CiAKQEAgLTY5Myw3ICs2OTMsNyBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQog ICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICBDb21tZW50cyBm b3IgdGhlIGNvcGllZCBjb2x1bW5zLCBjaGVjayBjb25zdHJhaW50cywKLSAgICAgICAgICBub3Qt bnVsbCBjb25zdHJhaW50cywgaW5kZXhlcywgYW5kIGV4dGVuZGVkIHN0YXRpc3RpY3Mgd2lsbCBi ZQorICAgICAgICAgIG5vdC1udWxsIGNvbnN0cmFpbnRzLCBpbmRleGVzLCBleHRlbmRlZCBzdGF0 aXN0aWNzLCBhbmQgdHJpZ2dlcnMgd2lsbCBiZQogICAgICAgICAgIGNvcGllZC4gIFRoZSBkZWZh dWx0IGJlaGF2aW9yIGlzIHRvIGV4Y2x1ZGUgY29tbWVudHMsIHJlc3VsdGluZyBpbgogICAgICAg ICAgIHRoZSBjb3JyZXNwb25kaW5nIG9iamVjdHMgaW4gdGhlIG5ldyB0YWJsZSBoYXZpbmcgbm8K ICAgICAgICAgICBjb21tZW50cy4KQEAgLTc5Nyw2ICs3OTcsMTcgQEAgV0lUSCAoIE1PRFVMVVMg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFi bGU+LCBSRU0KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAor ICAgICAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1jcmVhdGV0YWJsZS1wYXJtcy1saWtlLW9wdC10 cmlnZ2VycyI+CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPklOQ0xVRElORyBUUklHR0VSUzwvbGl0 ZXJhbD48L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgIDxwYXJhPgorICAgICAg ICAgIEFsbCBub24taW50ZXJuYWwgdHJpZ2dlcnMgYXJlIGNvcGllZCB0byB0aGUgbmV3IHRhYmxl LgorICAgICAgICAgIEJlY2F1c2UgdHJpZ2dlcnMgb24gdmlld3MgZGlmZmVyIHNpZ25pZmljYW50 bHkgZnJvbSB0aG9zZSBvbiB0YWJsZXMsIHRyaWdnZXJzIGZyb20KKyAgICAgICAgICBzb3VyY2Ug dmlldyBhcmUgbm90IGJlIGNvcGllZC4KKyAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0 aXRlbT4KKyAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICAgIDx2YXJsaXN0ZW50cnkgaWQ9 InNxbC1jcmVhdGV0YWJsZS1wYXJtcy1saWtlLW9wdC1hbGwiPgogICAgICAgICA8dGVybT48bGl0 ZXJhbD5JTkNMVURJTkcgQUxMPC9saXRlcmFsPjwvdGVybT4KICAgICAgICAgPGxpc3RpdGVtPgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9pbmRleC5jCmluZGV4IDk0MDdjMzU3ZjI3Li42YWFhZjczODY2MiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5k ZXguYwpAQCAtMjA1Nyw2ICsyMDU3LDggQEAgaW5kZXhfY29uc3RyYWludF9jcmVhdGUoUmVsYXRp b24gaGVhcFJlbGF0aW9uLAogCQl0cmlnZ2VyLT5kZWZlcnJhYmxlID0gdHJ1ZTsKIAkJdHJpZ2dl ci0+aW5pdGRlZmVycmVkID0gaW5pdGRlZmVycmVkOwogCQl0cmlnZ2VyLT5jb25zdHJyZWwgPSBO VUxMOworCQl0cmlnZ2VyLT50cmlnY29tbWVudCA9IE5VTEw7CisJCXRyaWdnZXItPnRyYW5zZm9y bWVkID0gdHJ1ZTsKIAogCQkodm9pZCkgQ3JlYXRlVHJpZ2dlcih0cmlnZ2VyLCBOVUxMLCBSZWxh dGlvbkdldFJlbGlkKGhlYXBSZWxhdGlvbiksCiAJCQkJCQkJIEludmFsaWRPaWQsIGNvbk9pZCwg aW5kZXhSZWxhdGlvbklkLCBJbnZhbGlkT2lkLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRl eCBhMTg0NTI0MGE5OC4uMDk2NTRhYmE1ZjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBA IC0xNDExNSw2ICsxNDExNSw4IEBAIENyZWF0ZUZLQ2hlY2tUcmlnZ2VyKE9pZCBteVJlbE9pZCwg T2lkIHJlZlJlbE9pZCwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LAogCWZrX3RyaWdnZXItPmRl ZmVycmFibGUgPSBma2NvbnN0cmFpbnQtPmRlZmVycmFibGU7CiAJZmtfdHJpZ2dlci0+aW5pdGRl ZmVycmVkID0gZmtjb25zdHJhaW50LT5pbml0ZGVmZXJyZWQ7CiAJZmtfdHJpZ2dlci0+Y29uc3Ry cmVsID0gTlVMTDsKKwlma190cmlnZ2VyLT50cmlnY29tbWVudCA9IE5VTEw7CisJZmtfdHJpZ2dl ci0+dHJhbnNmb3JtZWQgPSB0cnVlOwogCiAJdHJpZ0FkZHJlc3MgPSBDcmVhdGVUcmlnZ2VyKGZr X3RyaWdnZXIsIE5VTEwsIG15UmVsT2lkLCByZWZSZWxPaWQsCiAJCQkJCQkJCWNvbnN0cmFpbnRP aWQsIGluZGV4T2lkLCBJbnZhbGlkT2lkLApAQCAtMTQxNjAsNiArMTQxNjIsOCBAQCBjcmVhdGVG b3JlaWduS2V5QWN0aW9uVHJpZ2dlcnMoT2lkIG15UmVsT2lkLCBPaWQgcmVmUmVsT2lkLCBDb25z dHJhaW50ICpma2NvbnN0cgogCWZrX3RyaWdnZXItPndoZW5DbGF1c2UgPSBOVUxMOwogCWZrX3Ry aWdnZXItPnRyYW5zaXRpb25SZWxzID0gTklMOwogCWZrX3RyaWdnZXItPmNvbnN0cnJlbCA9IE5V TEw7CisJZmtfdHJpZ2dlci0+dHJpZ2NvbW1lbnQgPSBOVUxMOworCWZrX3RyaWdnZXItPnRyYW5z Zm9ybWVkID0gdHJ1ZTsKIAogCXN3aXRjaCAoZmtjb25zdHJhaW50LT5ma19kZWxfYWN0aW9uKQog CXsKQEAgLTE0MjIwLDYgKzE0MjI0LDggQEAgY3JlYXRlRm9yZWlnbktleUFjdGlvblRyaWdnZXJz KE9pZCBteVJlbE9pZCwgT2lkIHJlZlJlbE9pZCwgQ29uc3RyYWludCAqZmtjb25zdHIKIAlma190 cmlnZ2VyLT53aGVuQ2xhdXNlID0gTlVMTDsKIAlma190cmlnZ2VyLT50cmFuc2l0aW9uUmVscyA9 IE5JTDsKIAlma190cmlnZ2VyLT5jb25zdHJyZWwgPSBOVUxMOworCWZrX3RyaWdnZXItPnRyaWdj b21tZW50ID0gTlVMTDsKKwlma190cmlnZ2VyLT50cmFuc2Zvcm1lZCA9IHRydWU7CiAKIAlzd2l0 Y2ggKGZrY29uc3RyYWludC0+ZmtfdXBkX2FjdGlvbikKIAl7CkBAIC0yMTIxNCw2ICsyMTIyMCw4 IEBAIENsb25lUm93VHJpZ2dlcnNUb1BhcnRpdGlvbihSZWxhdGlvbiBwYXJlbnQsIFJlbGF0aW9u IHBhcnRpdGlvbikKIAkJdHJpZ1N0bXQtPmRlZmVycmFibGUgPSB0cmlnRm9ybS0+dGdkZWZlcnJh YmxlOwogCQl0cmlnU3RtdC0+aW5pdGRlZmVycmVkID0gdHJpZ0Zvcm0tPnRnaW5pdGRlZmVycmVk OwogCQl0cmlnU3RtdC0+Y29uc3RycmVsID0gTlVMTDsgLyogcGFzc2VkIHNlcGFyYXRlbHkgKi8K KwkJdHJpZ1N0bXQtPnRyaWdjb21tZW50ID0gTlVMTDsKKwkJdHJpZ1N0bXQtPnRyYW5zZm9ybWVk ID0gdHJ1ZTsKIAogCQlDcmVhdGVUcmlnZ2VyRmlyaW5nT24odHJpZ1N0bXQsIE5VTEwsIFJlbGF0 aW9uR2V0UmVsaWQocGFydGl0aW9uKSwKIAkJCQkJCQkgIHRyaWdGb3JtLT50Z2NvbnN0cnJlbGlk LCBJbnZhbGlkT2lkLCBJbnZhbGlkT2lkLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCmluZGV4IGI4N2I0 YjQwZDA3Li5mNTVhMDhmMDA4OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJp Z2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwpAQCAtMzEsNiArMzEs NyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf dHJpZ2dlci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNvbW1h bmRzL2NvbW1lbnQuaCIKICNpbmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgiCiAjaW5jbHVkZSAi ZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50LmgiCkBA IC01OTEsMTMgKzU5MiwxOSBAQCBDcmVhdGVUcmlnZ2VyRmlyaW5nT24oY29uc3QgQ3JlYXRlVHJp Z1N0bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCQkJCQkJCQkJCQkgICBmYWxz ZSwgZmFsc2UpOwogCQlhZGROU0l0ZW1Ub1F1ZXJ5KHBzdGF0ZSwgbnNpdGVtLCBmYWxzZSwgdHJ1 ZSwgdHJ1ZSk7CiAKLQkJLyogVHJhbnNmb3JtIGV4cHJlc3Npb24uICBDb3B5IHRvIGJlIHN1cmUg d2UgZG9uJ3QgbW9kaWZ5IG9yaWdpbmFsICovCi0JCXdoZW5DbGF1c2UgPSB0cmFuc2Zvcm1XaGVy ZUNsYXVzZShwc3RhdGUsCi0JCQkJCQkJCQkJICBjb3B5T2JqZWN0KHN0bXQtPndoZW5DbGF1c2Up LAotCQkJCQkJCQkJCSAgRVhQUl9LSU5EX1RSSUdHRVJfV0hFTiwKLQkJCQkJCQkJCQkgICJXSEVO Iik7Ci0JCS8qIHdlIGhhdmUgdG8gZml4IGl0cyBjb2xsYXRpb25zIHRvbyAqLwotCQlhc3NpZ25f ZXhwcl9jb2xsYXRpb25zKHBzdGF0ZSwgd2hlbkNsYXVzZSk7CisJCWlmIChzdG10LT50cmFuc2Zv cm1lZCkKKwkJCXdoZW5DbGF1c2UgPSBzdG10LT53aGVuQ2xhdXNlOworCQllbHNlCisJCXsKKwkJ CS8qIFRyYW5zZm9ybSBleHByZXNzaW9uLiAgQ29weSB0byBiZSBzdXJlIHdlIGRvbid0IG1vZGlm eSBvcmlnaW5hbCAqLworCQkJd2hlbkNsYXVzZSA9IHRyYW5zZm9ybVdoZXJlQ2xhdXNlKHBzdGF0 ZSwKKwkJCQkJCQkJCQkJICBjb3B5T2JqZWN0KHN0bXQtPndoZW5DbGF1c2UpLAorCQkJCQkJCQkJ CQkgIEVYUFJfS0lORF9UUklHR0VSX1dIRU4sCisJCQkJCQkJCQkJCSAgIldIRU4iKTsKKworCQkJ Lyogd2UgaGF2ZSB0byBmaXggaXRzIGNvbGxhdGlvbnMgdG9vICovCisJCQlhc3NpZ25fZXhwcl9j b2xsYXRpb25zKHBzdGF0ZSwgd2hlbkNsYXVzZSk7CisJCX0KIAogCQkvKgogCQkgKiBDaGVjayBm b3IgZGlzYWxsb3dlZCByZWZlcmVuY2VzIHRvIE9MRC9ORVcuCkBAIC0xMjA2LDYgKzEyMTMsMTEg QEAgQ3JlYXRlVHJpZ2dlckZpcmluZ09uKGNvbnN0IENyZWF0ZVRyaWdTdG10ICpzdG10LCBjb25z dCBjaGFyICpxdWVyeVN0cmluZywKIAkvKiBLZWVwIGxvY2sgb24gdGFyZ2V0IHJlbCB1bnRpbCBl bmQgb2YgeGFjdCAqLwogCXRhYmxlX2Nsb3NlKHJlbCwgTm9Mb2NrKTsKIAorCS8qIEFkZCBhbnkg cmVxdWVzdGVkIGNvbW1lbnQgKi8KKwlpZiAoc3RtdC0+dHJpZ2NvbW1lbnQgIT0gTlVMTCkKKwkJ Q3JlYXRlQ29tbWVudHModHJpZ29pZCwgVHJpZ2dlclJlbGF0aW9uSWQsIDAsCisJCQkJCSAgIHN0 bXQtPnRyaWdjb21tZW50KTsKKwogCXJldHVybiBteXNlbGY7CiB9CiAKQEAgLTY5MDQsMyArNjkx NiwyMDUgQEAgQWZ0ZXJUcmlnZ2VySXNBY3RpdmUodm9pZCkKIHsKIAlyZXR1cm4gYWZ0ZXJUcmln Z2Vycy5maXJpbmdfZGVwdGggPiAwOwogfQorCisvKgorICogRHVwbGljYXRlIHRoZSB0cmlnZ2Vy IGRlZmluaXRpb24gZm9yIHRoZSBuZXcgcmVsYXRpb246IFVzZSB0aGUgc291cmNlIHRyaWdnZXIK KyAqIChzb3VyY2VfdHJpZ2lkIGZyb20gc291cmNlX3JlbCkgdG8gaW5pdGlhbGl6ZSBhIENyZWF0 ZVRyaWdTdG10IGZvciB0aGUgdGFyZ2V0CisgKiByZWxhdGlvbiAoaGVhcFJlbCkuCisgKgorICog QXR0cmlidXRlIG51bWJlcnMgaW4gZXhwcmVzc2lvbiBWYXJzIGFyZSBhZGp1c3RlZCBhY2NvcmRp bmcgdG8gYXR0bWFwLgorICovCitDcmVhdGVUcmlnU3RtdCAqCitnZW5lcmF0ZUNsb25lZFRyaWdn ZXJTdG10KFJhbmdlVmFyICpoZWFwUmVsLCBPaWQgc291cmNlX3RyaWdpZCwKKwkJCQkJCSAgUmVs YXRpb24gc291cmNlX3JlbCwgY29uc3QgQXR0ck1hcCAqYXR0bWFwKQoreworCUhlYXBUdXBsZQl0 cmlnZ2VyVHVwbGU7CisJSGVhcFR1cGxlCXByb2N0dXA7CisJRm9ybV9wZ190cmlnZ2VyIHRyaWdG b3JtOworCUZvcm1fcGdfcHJvYyBwcm9jZm9ybTsKKwlSZWxhdGlvbglwZ190cmlnZ2VyOworCVJh bmdlVmFyICAgKmNvbnN0cnJlbCA9IE5VTEw7CisJU3lzU2NhbkRlc2MgdGdzY2FuOworCVNjYW5L ZXlEYXRhIHNrZXlbMV07CisJRGF0dW0JCXZhbHVlOworCWJvb2wJCWlzbnVsbDsKKwlOb2RlCSAg ICpxdWFsID0gTlVMTDsKKwlMaXN0CSAgICp0cmlnYXJncyA9IE5JTDsKKwlMaXN0CSAgICpjb2xz ID0gTklMOworCUxpc3QJICAgKmZ1bmNuYW1lID0gTklMOworCUxpc3QJICAgKnRyYW5zaXRpb25S ZWxzID0gTklMOworCWNoYXIJICAgKmZ1bmNzY2hlbWE7CisJQ3JlYXRlVHJpZ1N0bXQgKnRyaWdT dG10OworCisJcGdfdHJpZ2dlciA9IHRhYmxlX29wZW4oVHJpZ2dlclJlbGF0aW9uSWQsIEFjY2Vz c1NoYXJlTG9jayk7CisKKwkvKiBGaW5kIHRoZSB0cmlnZ2VyIHRvIGNvcHkgKi8KKwlTY2FuS2V5 SW5pdCgmc2tleVswXSwKKwkJCQlBbnVtX3BnX3RyaWdnZXJfb2lkLAorCQkJCUJURXF1YWxTdHJh dGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdldERhdHVtKHNvdXJjZV90cmlnaWQp KTsKKworCXRnc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihwZ190cmlnZ2VyLCBUcmlnZ2VyT2lk SW5kZXhJZCwgdHJ1ZSwKKwkJCQkJCQkJTlVMTCwgMSwgc2tleSk7CisKKwl0cmlnZ2VyVHVwbGUg PSBzeXN0YWJsZV9nZXRuZXh0KHRnc2Nhbik7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHRyaWdn ZXJUdXBsZSkpCisJCWVsb2coRVJST1IsICJjb3VsZCBub3QgZmluZCB0dXBsZSBmb3IgdHJpZ2dl ciAldSIsIHNvdXJjZV90cmlnaWQpOworCisJdHJpZ0Zvcm0gPSAoRm9ybV9wZ190cmlnZ2VyKSBH RVRTVFJVQ1QodHJpZ2dlclR1cGxlKTsKKworCS8qIFJlY29uc3RydWN0IHRyaWdnZXIgZnVuY3Rp b24gU3RyaW5nIGxpc3QgKi8KKwlwcm9jdHVwID0gU2VhcmNoU3lzQ2FjaGUxKFBST0NPSUQsIE9i amVjdElkR2V0RGF0dW0odHJpZ0Zvcm0tPnRnZm9pZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxp ZChwcm9jdHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGZ1bmN0 aW9uICV1IiwgdHJpZ0Zvcm0tPnRnZm9pZCk7CisJcHJvY2Zvcm0gPSAoRm9ybV9wZ19wcm9jKSBH RVRTVFJVQ1QocHJvY3R1cCk7CisKKwlmdW5jc2NoZW1hID0gZ2V0X25hbWVzcGFjZV9uYW1lKHBy b2Nmb3JtLT5wcm9uYW1lc3BhY2UpOworCWZ1bmNuYW1lID0gbGlzdF9tYWtlMihtYWtlU3RyaW5n KGZ1bmNzY2hlbWEpLAorCQkJCQkJICBtYWtlU3RyaW5nKHBzdHJkdXAoTmFtZVN0cihwcm9jZm9y bS0+cHJvbmFtZSkpKSk7CisJUmVsZWFzZVN5c0NhY2hlKHByb2N0dXApOworCisJLyoKKwkgKiBJ ZiB0aGVyZSBpcyBhIGNvbHVtbiBsaXN0LCB0cmFuc2Zvcm0gaXQgdG8gYSBsaXN0IG9mIGNvbHVt biBuYW1lcy4gTm90ZQorCSAqIHdlIGRvbid0IG5lZWQgdG8gbWFwIHRoaXMgbGlzdCBpbiBhbnkg d2F5IC4uLgorCSAqLworCWlmICh0cmlnRm9ybS0+dGdhdHRyLmRpbTEgPiAwKQorCXsKKwkJZm9y IChpbnQgaSA9IDA7IGkgPCB0cmlnRm9ybS0+dGdhdHRyLmRpbTE7IGkrKykKKwkJeworCQkJRm9y bV9wZ19hdHRyaWJ1dGUgY29sOworCisJCQljb2wgPSBUdXBsZURlc2NBdHRyKFJlbGF0aW9uR2V0 RGVzY3Ioc291cmNlX3JlbCksCisJCQkJCQkJCXRyaWdGb3JtLT50Z2F0dHIudmFsdWVzW2ldIC0g MSk7CisJCQljb2xzID0gbGFwcGVuZChjb2xzLAorCQkJCQkJICAgbWFrZVN0cmluZyhwc3RyZHVw KE5hbWVTdHIoY29sLT5hdHRuYW1lKSkpKTsKKwkJfQorCX0KKworCS8qIFJlY29uc3RydWN0IHRy aWdnZXIgYXJndW1lbnRzIGxpc3QgKi8KKwlpZiAodHJpZ0Zvcm0tPnRnbmFyZ3MgPiAwKQorCXsK KwkJYnl0ZWEJICAgKnZhbDsKKwkJY2hhcgkgICAqcDsKKworCQl2YWwgPSBEYXR1bUdldEJ5dGVh UFAoZmFzdGdldGF0dHIodHJpZ2dlclR1cGxlLAorCQkJCQkJCQkJCSAgQW51bV9wZ190cmlnZ2Vy X3RnYXJncywKKwkJCQkJCQkJCQkgIFJlbGF0aW9uR2V0RGVzY3IocGdfdHJpZ2dlciksCisJCQkJ CQkJCQkJICAmaXNudWxsKSk7CisJCWlmIChpc251bGwpCisJCQllbG9nKEVSUk9SLCAidGdhcmdz IGlzIG51bGwgaW4gdHJpZ2dlciBcIiVzXCIgZm9yIHJlbGF0aW9uIFwiJXNcIiIsCisJCQkJIE5h bWVTdHIodHJpZ0Zvcm0tPnRnbmFtZSksCisJCQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHNv dXJjZV9yZWwpKTsKKworCQlwID0gKGNoYXIgKikgVkFSREFUQV9BTlkodmFsKTsKKworCQlmb3Ig KGludCBpID0gMDsgaSA8IHRyaWdGb3JtLT50Z25hcmdzOyBpKyspCisJCXsKKwkJCXRyaWdhcmdz ID0gbGFwcGVuZCh0cmlnYXJncywgbWFrZVN0cmluZyhwc3RyZHVwKHApKSk7CisJCQlwICs9IHN0 cmxlbihwKSArIDE7CisJCX0KKwl9CisKKwkvKiBJZiB0aGUgdHJpZ2dlciBoYXMgYSBXSEVOIHF1 YWxpZmljYXRpb24sIGFkZCB0aGF0ICovCisJdmFsdWUgPSBmYXN0Z2V0YXR0cih0cmlnZ2VyVHVw bGUsIEFudW1fcGdfdHJpZ2dlcl90Z3F1YWwsCisJCQkJCQlSZWxhdGlvbkdldERlc2NyKHBnX3Ry aWdnZXIpLCAmaXNudWxsKTsKKwlpZiAoIWlzbnVsbCkKKwl7CisJCWJvb2wJCWZvdW5kX3dob2xl X3JvdzsKKworCQlxdWFsID0gc3RyaW5nVG9Ob2RlKFRleHREYXR1bUdldENTdHJpbmcodmFsdWUp KTsKKworCQkvKiBBZGp1c3QgVmFycyB0byBtYXRjaCBuZXcgdGFibGUncyBjb2x1bW4gbnVtYmVy aW5nICovCisJCXF1YWwgPSBtYXBfdmFyaWFibGVfYXR0bm9zKHF1YWwsIFBSUzJfTkVXX1ZBUk5P LCAwLAorCQkJCQkJCQkgICBhdHRtYXAsCisJCQkJCQkJCSAgIEludmFsaWRPaWQsCisJCQkJCQkJ CSAgICZmb3VuZF93aG9sZV9yb3cpOworCisJCS8qIEFzIGluIGV4cGFuZFRhYmxlTGlrZUNsYXVz ZSwgcmVqZWN0IHdob2xlLXJvdyB2YXJpYWJsZXMgKi8KKwkJaWYgKGZvdW5kX3dob2xlX3JvdykK KwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAorCQkJCQllcnJtc2coImNhbm5vdCBjb252ZXJ0IHdob2xlLXJvdyB0YWJsZSByZWZl cmVuY2UiKSwKKwkJCQkJZXJyZGV0YWlsKCJUcmlnZ2VyIFwiJXNcIiBjb250YWlucyBhIHdob2xl LXJvdyB0YWJsZSByZWZlcmVuY2UuIiwKKwkJCQkJCQkgIE5hbWVTdHIodHJpZ0Zvcm0tPnRnbmFt ZSkpKTsKKworCQlxdWFsID0gbWFwX3ZhcmlhYmxlX2F0dG5vcyhxdWFsLCBQUlMyX09MRF9WQVJO TywgMCwKKwkJCQkJCQkJICAgYXR0bWFwLAorCQkJCQkJCQkgICBJbnZhbGlkT2lkLAorCQkJCQkJ CQkgICAmZm91bmRfd2hvbGVfcm93KTsKKworCQkvKiBBcyBpbiBleHBhbmRUYWJsZUxpa2VDbGF1 c2UsIHJlamVjdCB3aG9sZS1yb3cgdmFyaWFibGVzICovCisJCWlmIChmb3VuZF93aG9sZV9yb3cp CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQ UE9SVEVEKSwKKwkJCQkJZXJybXNnKCJjYW5ub3QgY29udmVydCB3aG9sZS1yb3cgdGFibGUgcmVm ZXJlbmNlIiksCisJCQkJCWVycmRldGFpbCgiVHJpZ2dlciBcIiVzXCIgY29udGFpbnMgYSB3aG9s ZS1yb3cgdGFibGUgcmVmZXJlbmNlLiIsCisJCQkJCQkJICBOYW1lU3RyKHRyaWdGb3JtLT50Z25h bWUpKSk7CisJfQorCisJLyogUmVjb25zdHJ1Y3QgdHJpZ2dlciBvbGQgdHJhbnNpdGlvbiB0YWJs ZSAqLworCXZhbHVlID0gZmFzdGdldGF0dHIodHJpZ2dlclR1cGxlLCBBbnVtX3BnX3RyaWdnZXJf dGdvbGR0YWJsZSwKKwkJCQkJCVJlbGF0aW9uR2V0RGVzY3IocGdfdHJpZ2dlciksICZpc251bGwp OworCWlmICghaXNudWxsKQorCXsKKwkJVHJpZ2dlclRyYW5zaXRpb24gKm9sZCA9IG1ha2VOb2Rl KFRyaWdnZXJUcmFuc2l0aW9uKTsKKworCQlvbGQtPmlzTmV3ID0gZmFsc2U7CisJCW9sZC0+bmFt ZSA9IHBzdHJkdXAoTmFtZVN0cigqRGF0dW1HZXROYW1lKHZhbHVlKSkpOworCQlvbGQtPmlzVGFi bGUgPSB0cnVlOworCQl0cmFuc2l0aW9uUmVscyA9IGxhcHBlbmQodHJhbnNpdGlvblJlbHMsIG9s ZCk7CisJfQorCisJLyogUmVjb25zdHJ1Y3QgdHJpZ2dlciBuZXcgdHJhbnNpdGlvbiB0YWJsZSAq LworCXZhbHVlID0gZmFzdGdldGF0dHIodHJpZ2dlclR1cGxlLCBBbnVtX3BnX3RyaWdnZXJfdGdu ZXd0YWJsZSwKKwkJCQkJCVJlbGF0aW9uR2V0RGVzY3IocGdfdHJpZ2dlciksCisJCQkJCQkmaXNu dWxsKTsKKwlpZiAoIWlzbnVsbCkKKwl7CisJCVRyaWdnZXJUcmFuc2l0aW9uICpuZXcgPSBtYWtl Tm9kZShUcmlnZ2VyVHJhbnNpdGlvbik7CisKKwkJbmV3LT5pc05ldyA9IHRydWU7CisJCW5ldy0+ bmFtZSA9IHBzdHJkdXAoTmFtZVN0cigqRGF0dW1HZXROYW1lKHZhbHVlKSkpOworCQluZXctPmlz VGFibGUgPSB0cnVlOworCQl0cmFuc2l0aW9uUmVscyA9IGxhcHBlbmQodHJhbnNpdGlvblJlbHMs IG5ldyk7CisJfQorCisJLyogUmVjb25zdHJ1Y3QgdHJpZ2dlciBjb25zdHJhaW50J3MgRlJPTSB0 YWJsZSAqLworCWlmIChPaWRJc1ZhbGlkKHRyaWdGb3JtLT50Z2NvbnN0cnJlbGlkKSkKKwl7CisJ CS8qCisJCSAqIEFjcXVpcmUgdGhlIEFjY2Vzc1NoYXJlTG9jayBsb2NrIG9uIHRnY29uc3RycmVs aWQgbm93LCBhcyBpdCB3aWxsCisJCSAqIGJlIHJlcXVpcmVkIGxhdGVyIGluIENyZWF0ZVRyaWdn ZXJGaXJpbmdPbi4KKwkJICovCisJCUxvY2tSZWxhdGlvbk9pZCh0cmlnRm9ybS0+dGdjb25zdHJy ZWxpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCQljb25zdHJyZWwgPQorCQkJbWFrZVJhbmdlVmFy KGdldF9uYW1lc3BhY2VfbmFtZShnZXRfcmVsX25hbWVzcGFjZSh0cmlnRm9ybS0+dGdjb25zdHJy ZWxpZCkpLAorCQkJCQkJIGdldF9yZWxfbmFtZSh0cmlnRm9ybS0+dGdjb25zdHJyZWxpZCksCisJ CQkJCQkgLTEpOworCX0KKworCXRyaWdTdG10ID0gbWFrZU5vZGUoQ3JlYXRlVHJpZ1N0bXQpOwor CXRyaWdTdG10LT5yZXBsYWNlID0gZmFsc2U7CisJdHJpZ1N0bXQtPmlzY29uc3RyYWludCA9IE9p ZElzVmFsaWQodHJpZ0Zvcm0tPnRnY29uc3RyYWludCk7CisJdHJpZ1N0bXQtPnRyaWduYW1lID0g cHN0cmR1cChOYW1lU3RyKHRyaWdGb3JtLT50Z25hbWUpKTsKKwl0cmlnU3RtdC0+cmVsYXRpb24g PSBoZWFwUmVsOworCXRyaWdTdG10LT5mdW5jbmFtZSA9IGZ1bmNuYW1lOworCXRyaWdTdG10LT5h cmdzID0gdHJpZ2FyZ3M7CisJdHJpZ1N0bXQtPnJvdyA9IFRSSUdHRVJfRk9SX1JPVyh0cmlnRm9y bS0+dGd0eXBlKTsKKwl0cmlnU3RtdC0+dGltaW5nID0gdHJpZ0Zvcm0tPnRndHlwZSAmIFRSSUdH RVJfVFlQRV9USU1JTkdfTUFTSzsKKwl0cmlnU3RtdC0+ZXZlbnRzID0gdHJpZ0Zvcm0tPnRndHlw ZSAmIFRSSUdHRVJfVFlQRV9FVkVOVF9NQVNLOworCXRyaWdTdG10LT5jb2x1bW5zID0gY29sczsK Kwl0cmlnU3RtdC0+d2hlbkNsYXVzZSA9IHF1YWw7CisJdHJpZ1N0bXQtPnRyYW5zaXRpb25SZWxz ID0gdHJhbnNpdGlvblJlbHM7CisJdHJpZ1N0bXQtPmRlZmVycmFibGUgPSB0cmlnRm9ybS0+dGdk ZWZlcnJhYmxlOworCXRyaWdTdG10LT5pbml0ZGVmZXJyZWQgPSB0cmlnRm9ybS0+dGdpbml0ZGVm ZXJyZWQ7CisJdHJpZ1N0bXQtPmNvbnN0cnJlbCA9IGNvbnN0cnJlbDsKKwl0cmlnU3RtdC0+dHJp Z2NvbW1lbnQgPSBOVUxMOworCXRyaWdTdG10LT50cmFuc2Zvcm1lZCA9IHRydWU7CisKKwlzeXN0 YWJsZV9lbmRzY2FuKHRnc2Nhbik7CisJdGFibGVfY2xvc2UocGdfdHJpZ2dlciwgQWNjZXNzU2hh cmVMb2NrKTsKKworCXJldHVybiB0cmlnU3RtdDsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGZmNGUxMzg4 YzU1Li42ZmNhMjYzNjExNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQor KysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC04MjIsNyArODIyLDcgQEAgc3RhdGlj IE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFz ZXMsIE5vZGUgKnF1ZXJ5KTsKIAogCVRBQkxFIFRBQkxFUyBUQUJMRVNBTVBMRSBUQUJMRVNQQUNF IFRBUkdFVCBURU1QIFRFTVBMQVRFIFRFTVBPUkFSWSBURVhUX1AgVEhFTgogCVRJRVMgVElNRSBU SU1FU1RBTVAgVE8gVFJBSUxJTkcgVFJBTlNBQ1RJT04gVFJBTlNGT1JNCi0JVFJFQVQgVFJJR0dF UiBUUklNIFRSVUVfUAorCVRSRUFUIFRSSUdHRVIgVFJJR0dFUlMgVFJJTSBUUlVFX1AKIAlUUlVO Q0FURSBUUlVTVEVEIFRZUEVfUCBUWVBFU19QCiAKIAlVRVNDQVBFIFVOQk9VTkRFRCBVTkNPTkRJ VElPTkFMIFVOQ09NTUlUVEVEIFVORU5DUllQVEVEIFVOSU9OIFVOSVFVRSBVTktOT1dOCkBAIC00 MzUzLDYgKzQzNTMsNyBAQCBUYWJsZUxpa2VPcHRpb246CiAJCQkJfCBJTkRFWEVTCQkJeyAkJCA9 IENSRUFURV9UQUJMRV9MSUtFX0lOREVYRVM7IH0KIAkJCQl8IFNUQVRJU1RJQ1MJCXsgJCQgPSBD UkVBVEVfVEFCTEVfTElLRV9TVEFUSVNUSUNTOyB9CiAJCQkJfCBTVE9SQUdFCQkJeyAkJCA9IENS RUFURV9UQUJMRV9MSUtFX1NUT1JBR0U7IH0KKwkJCQl8IFRSSUdHRVJTCQkJeyAkJCA9IENSRUFU RV9UQUJMRV9MSUtFX1RSSUdHRVJTOyB9CiAJCQkJfCBBTEwJCQkJeyAkJCA9IENSRUFURV9UQUJM RV9MSUtFX0FMTDsgfQogCQk7CiAKQEAgLTYyMDksNiArNjIxMCw4IEBAIENyZWF0ZVRyaWdTdG10 OgogCQkJCQluLT5kZWZlcnJhYmxlID0gZmFsc2U7CiAJCQkJCW4tPmluaXRkZWZlcnJlZCA9IGZh bHNlOwogCQkJCQluLT5jb25zdHJyZWwgPSBOVUxMOworCQkJCQluLT50cmlnY29tbWVudCA9IE5V TEw7CisJCQkJCW4tPnRyYW5zZm9ybWVkID0gZmFsc2U7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsK IAkJCQl9CiAJCSAgfCBDUkVBVEUgb3B0X29yX3JlcGxhY2UgQ09OU1RSQUlOVCBUUklHR0VSIG5h bWUgQUZURVIgVHJpZ2dlckV2ZW50cyBPTgpAQCAtNjI1OSw2ICs2MjYyLDggQEAgQ3JlYXRlVHJp Z1N0bXQ6CiAJCQkJCQkJCSAgICZuLT5kZWZlcnJhYmxlLCAmbi0+aW5pdGRlZmVycmVkLCAmZHVt bXksCiAJCQkJCQkJCSAgIE5VTEwsIE5VTEwsIHl5c2Nhbm5lcik7CiAJCQkJCW4tPmNvbnN0cnJl bCA9ICQxMDsKKwkJCQkJbi0+dHJpZ2NvbW1lbnQgPSBOVUxMOworCQkJCQluLT50cmFuc2Zvcm1l ZCA9IGZhbHNlOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQogCQk7CkBAIC0xOTEzMCw2 ICsxOTEzNSw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgVFJBTlNBQ1RJT04KIAkJCXwg VFJBTlNGT1JNCiAJCQl8IFRSSUdHRVIKKwkJCXwgVFJJR0dFUlMKIAkJCXwgVFJVTkNBVEUKIAkJ CXwgVFJVU1RFRAogCQkJfCBUWVBFX1AKQEAgLTE5Nzk1LDYgKzE5ODAxLDcgQEAgYmFyZV9sYWJl bF9rZXl3b3JkOgogCQkJfCBUUkFOU0ZPUk0KIAkJCXwgVFJFQVQKIAkJCXwgVFJJR0dFUgorCQkJ fCBUUklHR0VSUwogCQkJfCBUUklNCiAJCQl8IFRSVUVfUAogCQkJfCBUUlVOQ0FURQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV91dGlsY21kLmMKaW5kZXggYTA0OWNjNjdlZDYuLjlmZWZiOWRjNjk4IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCisrKyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKQEAgLTQwLDEyICs0MCwxNCBAQAogI2luY2x1ZGUg ImNhdGFsb2cvcGdfb3BjbGFzcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BlcmF0b3IuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3N0YXRpc3RpY19leHQuaCIKKyNpbmNsdWRlICJjYXRhbG9n L3BnX3RyaWdnZXIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJj b21tYW5kcy9jb21tZW50LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCiAjaW5jbHVk ZSAiY29tbWFuZHMvc2VxdWVuY2UuaCIKICNpbmNsdWRlICJjb21tYW5kcy90YWJsZWNtZHMuaCIK ICNpbmNsdWRlICJjb21tYW5kcy90YWJsZXNwYWNlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvdHJp Z2dlci5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5j cy5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgpAQCAtMTMxNiw3ICsxMzE4LDggQEAg dHJhbnNmb3JtVGFibGVMaWtlQ2xhdXNlKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFRhYmxlTGlr ZUNsYXVzZSAqdGFibGVfbGlrZV9jbGEKIAkJIENSRUFURV9UQUJMRV9MSUtFX0dFTkVSQVRFRCB8 CiAJCSBDUkVBVEVfVEFCTEVfTElLRV9DT05TVFJBSU5UUyB8CiAJCSBDUkVBVEVfVEFCTEVfTElL RV9JTkRFWEVTIHwKLQkJIENSRUFURV9UQUJMRV9MSUtFX1NUQVRJU1RJQ1MpKQorCQkgQ1JFQVRF X1RBQkxFX0xJS0VfU1RBVElTVElDUyB8CisJCSBDUkVBVEVfVEFCTEVfTElLRV9UUklHR0VSUykp CiAJewogCQl0YWJsZV9saWtlX2NsYXVzZS0+cmVsYXRpb25PaWQgPSBSZWxhdGlvbkdldFJlbGlk KHJlbGF0aW9uKTsKIAkJY3h0LT5saWtlY2xhdXNlcyA9IGxhcHBlbmQoY3h0LT5saWtlY2xhdXNl cywgdGFibGVfbGlrZV9jbGF1c2UpOwpAQCAtMTYyMCw2ICsxNjIzLDU1IEBAIGV4cGFuZFRhYmxl TGlrZUNsYXVzZShSYW5nZVZhciAqaGVhcFJlbCwgVGFibGVMaWtlQ2xhdXNlICp0YWJsZV9saWtl X2NsYXVzZSkKIAkJbGlzdF9mcmVlKHBhcmVudF9leHRzdGF0cyk7CiAJfQogCisJLyogUHJvY2Vz cyB0cmlnZ2VycyBpZiByZXF1aXJlZCAqLworCWlmICgodGFibGVfbGlrZV9jbGF1c2UtPm9wdGlv bnMgJiBDUkVBVEVfVEFCTEVfTElLRV9UUklHR0VSUykgJiYKKwkJKHJlbGF0aW9uLT50cmlnZGVz YyAhPSBOVUxMKSAmJgorCQkocmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1JF TEFUSU9OIHx8CisJCSByZWxhdGlvbi0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElU SU9ORURfVEFCTEUgfHwKKwkJIHJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9G T1JFSUdOX1RBQkxFKSkKKwl7CisJCWJvb2wJCWluY2x1ZGVfY29tbWVudHM7CisKKwkJaW5jbHVk ZV9jb21tZW50cyA9ICh0YWJsZV9saWtlX2NsYXVzZS0+b3B0aW9ucyAmIENSRUFURV9UQUJMRV9M SUtFX0NPTU1FTlRTKTsKKworCQlmb3IgKGludCBudCA9IDA7IG50IDwgcmVsYXRpb24tPnRyaWdk ZXNjLT5udW10cmlnZ2VyczsgbnQrKykKKwkJeworCQkJQ3JlYXRlVHJpZ1N0bXQgKnRyaWdfc3Rt dDsKKwkJCVRyaWdnZXIgICAgKnRyaWcgPSByZWxhdGlvbi0+dHJpZ2Rlc2MtPnRyaWdnZXJzICsg bnQ7CisJCQlPaWQJCQl0cmlnb2lkID0gdHJpZy0+dGdvaWQ7CisKKwkJCS8qIFdlIGRvIG5vdCBj b3B5IGludGVybmFsIHRyaWdnZXIgdG8gdGhlIG5ldyB0YWJsZSAqLworCQkJaWYgKHRyaWctPnRn aXNpbnRlcm5hbCkKKwkJCQljb250aW51ZTsKKworCQkJLyoKKwkJCSAqIEZvcmVpZ24gdGFibGUg Y2Fubm90IGhhdmUgY29uc3RyYWludCB0cmlnZ2VyIG9yIHRyaWdnZXJzIHdpdGgKKwkJCSAqIHRy YW5zaXRpb24gdGFibGUKKwkJCSAqLworCQkJaWYgKGNoaWxkcmVsLT5yZF9yZWwtPnJlbGtpbmQg PT0gUkVMS0lORF9GT1JFSUdOX1RBQkxFKQorCQkJeworCQkJCWlmIChPaWRJc1ZhbGlkKHRyaWct PnRnY29uc3RyYWludCkpCisJCQkJCWNvbnRpbnVlOworCisJCQkJaWYgKHRyaWctPnRnb2xkdGFi bGUgIT0gTlVMTCB8fCB0cmlnLT50Z25ld3RhYmxlICE9IE5VTEwpCisJCQkJCWNvbnRpbnVlOwor CQkJfQorCisJCQl0cmlnX3N0bXQgPSBnZW5lcmF0ZUNsb25lZFRyaWdnZXJTdG10KGhlYXBSZWws IHRyaWdvaWQsCisJCQkJCQkJCQkJCQkgIHJlbGF0aW9uLCBhdHRtYXApOworCisJCQkvKiBDb3B5 IGNvbW1lbnQgb24gdHJpZ2dlciwgaWYgcmVxdWVzdGVkICovCisJCQlpZiAoaW5jbHVkZV9jb21t ZW50cykKKwkJCXsKKwkJCQljb21tZW50ID0gR2V0Q29tbWVudCh0cmlnb2lkLCBUcmlnZ2VyUmVs YXRpb25JZCwgMCk7CisKKwkJCQkvKiBXZSBtYWtlIHVzZSBvZiBDcmVhdGVUcmlnU3RtdCdzIHRy aWdjb21tZW50IG9wdGlvbiAqLworCQkJCXRyaWdfc3RtdC0+dHJpZ2NvbW1lbnQgPSBjb21tZW50 OworCQkJfQorCQkJcmVzdWx0ID0gbGFwcGVuZChyZXN1bHQsIHRyaWdfc3RtdCk7CisJCX0KKwl9 CisKIAkvKiBEb25lIHdpdGggY2hpbGQgcmVsICovCiAJdGFibGVfY2xvc2UoY2hpbGRyZWwsIE5v TG9jayk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaCBiL3Ny Yy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaAppbmRleCAxZDk4Njk5NzNjMC4uY2U0YjNjZjEz OTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaAorKysgYi9zcmMv aW5jbHVkZS9jb21tYW5kcy90cmlnZ2VyLmgKQEAgLTE4LDYgKzE4LDExIEBACiAjaW5jbHVkZSAi bm9kZXMvZXhlY25vZGVzLmgiCiAjaW5jbHVkZSAibm9kZXMvcGFyc2Vub2Rlcy5oIgogCisvKgor ICogZm9yd2FyZCByZWZlcmVuY2VzIGluIHRoaXMgZmlsZQorICovCit0eXBlZGVmIHN0cnVjdCBB dHRyTWFwIEF0dHJNYXA7CisKIC8qCiAgKiBUcmlnZ2VyRGF0YSBpcyB0aGUgbm9kZSB0eXBlIHRo YXQgaXMgcGFzc2VkIGFzIGZtZ3IgImNvbnRleHQiIGluZm8KICAqIHdoZW4gYSBmdW5jdGlvbiBp cyBjYWxsZWQgYnkgdGhlIHRyaWdnZXIgbWFuYWdlci4KQEAgLTI2OCw2ICsyNzMsMTAgQEAgZXh0 ZXJuIHZvaWQgQWZ0ZXJUcmlnZ2VyQmVnaW5TdWJYYWN0KHZvaWQpOwogZXh0ZXJuIHZvaWQgQWZ0 ZXJUcmlnZ2VyRW5kU3ViWGFjdChib29sIGlzQ29tbWl0KTsKIGV4dGVybiB2b2lkIEFmdGVyVHJp Z2dlclNldFN0YXRlKENvbnN0cmFpbnRzU2V0U3RtdCAqc3RtdCk7CiBleHRlcm4gYm9vbCBBZnRl clRyaWdnZXJQZW5kaW5nT25SZWwoT2lkIHJlbGlkKTsKK2V4dGVybiBDcmVhdGVUcmlnU3RtdCAq Z2VuZXJhdGVDbG9uZWRUcmlnZ2VyU3RtdChSYW5nZVZhciAqaGVhcFJlbCwKKwkJCQkJCQkJCQkJ CSBPaWQgc291cmNlX3RyaWdpZCwKKwkJCQkJCQkJCQkJCSBSZWxhdGlvbiBzb3VyY2VfcmVsLAor CQkJCQkJCQkJCQkJIGNvbnN0IEF0dHJNYXAgKmF0dG1hcCk7CiAKIAogLyoKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNl bm9kZXMuaAppbmRleCA5MTM3N2E2Y2RlMy4uYTdkMDFmNWY5ZmQgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5v ZGVzLmgKQEAgLTgxMSw2ICs4MTEsNyBAQCB0eXBlZGVmIGVudW0gVGFibGVMaWtlT3B0aW9uCiAJ Q1JFQVRFX1RBQkxFX0xJS0VfSU5ERVhFUyA9IDEgPDwgNiwKIAlDUkVBVEVfVEFCTEVfTElLRV9T VEFUSVNUSUNTID0gMSA8PCA3LAogCUNSRUFURV9UQUJMRV9MSUtFX1NUT1JBR0UgPSAxIDw8IDgs CisJQ1JFQVRFX1RBQkxFX0xJS0VfVFJJR0dFUlMgPSAxIDw8IDksCiAJQ1JFQVRFX1RBQkxFX0xJ S0VfQUxMID0gUEdfSU5UMzJfTUFYCiB9IFRhYmxlTGlrZU9wdGlvbjsKIApAQCAtMzIzNCw2ICsz MjM1LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgQ3JlYXRlVHJpZ1N0bXQKIAlib29sCQlkZWZlcnJhYmxl OwkJLyogW05PVF0gREVGRVJSQUJMRSAqLwogCWJvb2wJCWluaXRkZWZlcnJlZDsJLyogSU5JVElB TExZIHtERUZFUlJFRHxJTU1FRElBVEV9ICovCiAJUmFuZ2VWYXIgICAqY29uc3RycmVsOwkJLyog b3Bwb3NpdGUgcmVsYXRpb24sIGlmIFJJIHRyaWdnZXIgKi8KKwljaGFyCSAgICp0cmlnY29tbWVu dDsJLyogY29tbWVudCB0byBhcHBseSB0byB0cmlnZ2VyLCBvciBOVUxMICovCisJYm9vbAkJdHJh bnNmb3JtZWQ7CS8qIHRydWUgbWVhbnMgbm8gbmVlZCB0byBkbyBwYXJzZSBhbmFseXNpcyBmb3IK KwkJCQkJCQkJICogd2hlbkNsYXVzZSAqLwogfSBDcmVhdGVUcmlnU3RtdDsKIAogLyogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5o IGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IDUxZWFkNTRmMDE1Li45NzMzZDRh Nzk2YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCisrKyBiL3NyYy9p bmNsdWRlL3BhcnNlci9rd2xpc3QuaApAQCAtNDc0LDYgKzQ3NCw3IEBAIFBHX0tFWVdPUkQoInRy YW5zYWN0aW9uIiwgVFJBTlNBQ1RJT04sIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkK IFBHX0tFWVdPUkQoInRyYW5zZm9ybSIsIFRSQU5TRk9STSwgVU5SRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQogUEdfS0VZV09SRCgidHJlYXQiLCBUUkVBVCwgQ09MX05BTUVfS0VZV09SRCwg QkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInRyaWdnZXIiLCBUUklHR0VSLCBVTlJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJ0cmlnZ2VycyIsIFRSSUdHRVJTLCBVTlJF U0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJ0cmltIiwgVFJJTSwgQ09M X05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInRydWUiLCBUUlVFX1AsIFJF U0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJ0cnVuY2F0ZSIsIFRSVU5D QVRFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV90YWJsZV9saWtlLm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvY3JlYXRlX3RhYmxlX2xpa2Uub3V0CmluZGV4IDc2MDY5YmRlNzU2Li40ZjMy MTRlNGU5MSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfdGFi bGVfbGlrZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfdGFibGVf bGlrZS5vdXQKQEAgLTYzNSw2ICs2MzUsMjYgQEAgTm90LW51bGwgY29uc3RyYWludHM6CiAgICAg ImN0bF90YWJsZV9hX25vdF9udWxsIiBOT1QgTlVMTCAiYSIKICAgICAiY3RsX3RhYmxlX2Rfbm90 X251bGwiIE5PVCBOVUxMICJkIgogCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiB0cmlnZ2Vy X2Z1bmMoKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgcGxwZ3NxbCBBUyAnCitCRUdJTgorCVJB SVNFIE5PVElDRSAnJ3RyaWdnZXJfZnVuYyglKSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAl LCBsZXZlbCA9ICUnJywgVEdfQVJHVlswXSwgVEdfT1AsIFRHX1dIRU4sIFRHX0xFVkVMOworCVJF VFVSTiBOVUxMOworRU5EOyc7CitDUkVBVEUgVFJJR0dFUiB0cmlndGVzdF9iZWZvcmVfc3RtdCBC RUZPUkUgREVMRVRFIE9SIFVQREFURSBPTiBjdGxfdGFibGUKK0ZPUiBFQUNIIFJPVyBXSEVOIChP TEQuYSA+IDApCitFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmMoJ3RyaWd0ZXN0X2JlZm9y ZV9zdG10Jyk7CitDUkVBVEUgVFJJR0dFUiB0cmlndGVzdF9hZnRlcl9zdG10IEFGVEVSIFVQREFU RSBPRiBhLCBiIE9OIGN0bF90YWJsZQorRk9SIEVBQ0ggU1RBVEVNRU5UCitFWEVDVVRFIFBST0NF RFVSRSB0cmlnZ2VyX2Z1bmMoJ3RyaWd0ZXN0X2JlZm9yZV9zdG10Jyk7CistLSBDUkVBVEUgRk9S RUlHTiBUQUJMRSBMSUtFIHNob3VsZCBub3QgY29weSB0cmlnZ2VycyB0aGF0IGhhdmUgdHJhbnNp dGlvbiB0YWJsZXMKK0NSRUFURSBUUklHR0VSIHRyaWd0ZXN0X2FmdGVyX3N0bXQxIEFGVEVSIElO U0VSVCBPTiBjdGxfdGFibGUKK1JFRkVSRU5DSU5HIE5FVyBUQUJMRSBBUyBuZXdfdGFibGUKK0ZP UiBFQUNIIFNUQVRFTUVOVAorRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jKCd0cmlndGVz dF9hZnRlcl9zdG10MScpOworLS0gQ1JFQVRFIEZPUkVJR04gVEFCTEUgTElLRSBzaG91bGQgbm90 IGNvcHkgc291cmNlIHRhYmxlIGNvc250cmFpbnQgdHJpZ2dlcgorQ1JFQVRFIENPTlNUUkFJTlQg VFJJR0dFUiBjb25zdHJfdHJpZworICAgIEFGVEVSIElOU0VSVCBPTiBjdGxfdGFibGUgREVGRVJS QUJMRSBJTklUSUFMTFkgREVGRVJSRUQgZW5mb3JjZWQgRk9SIEVBQ0ggUk9XCisgICAgRVhFQ1VU RSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jICgpOwogLS0gVGVzdCBFWENMVURJTkcgQUxMCiBDUkVB VEUgRk9SRUlHTiBUQUJMRSBjdGxfZm9yZWlnbl90YWJsZTEoTElLRSBjdGxfdGFibGUgRVhDTFVE SU5HIEFMTCkgU0VSVkVSIGN0bF9zMDsKIFxkKyBjdGxfZm9yZWlnbl90YWJsZTEKQEAgLTY4Myw2 ICs3MDMsOSBAQCBTdGF0aXN0aWNzIG9iamVjdHM6CiBOb3QtbnVsbCBjb25zdHJhaW50czoKICAg ICAiY3RsX3RhYmxlX2Ffbm90X251bGwiIE5PVCBOVUxMICJhIgogICAgICJjdGxfdGFibGVfZF9u b3RfbnVsbCIgTk9UIE5VTEwgImQiCitUcmlnZ2VyczoKKyAgICB0cmlndGVzdF9hZnRlcl9zdG10 IEFGVEVSIFVQREFURSBPRiBhLCBiIE9OIGN0bF9mb3JlaWduX3RhYmxlMiBGT1IgRUFDSCBTVEFU RU1FTlQgRVhFQ1VURSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmMoJ3RyaWd0ZXN0X2JlZm9yZV9zdG10 JykKKyAgICB0cmlndGVzdF9iZWZvcmVfc3RtdCBCRUZPUkUgREVMRVRFIE9SIFVQREFURSBPTiBj dGxfZm9yZWlnbl90YWJsZTIgRk9SIEVBQ0ggUk9XIFdIRU4gKG9sZC5hID4gMCkgRVhFQ1VURSBG VU5DVElPTiB0cmlnZ2VyX2Z1bmMoJ3RyaWd0ZXN0X2JlZm9yZV9zdG10JykKIFNlcnZlcjogY3Rs X3MwCiAKIC0tIFxkKyBkb2VzIG5vdCByZXBvcnQgdGhlIHZhbHVlIG9mIGF0dGNvbXByZXNzaW9u IGZvciBhIGZvcmVpZ24gdGFibGUsIHNvCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3RyaWdnZXJzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHJpZ2dlcnMu b3V0CmluZGV4IDhmY2IzM2FjODFhLi5mNjc1Nzg2NzM5ZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC90cmlnZ2Vycy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC90cmlnZ2Vycy5vdXQKQEAgLTE3NCw2ICsxNzQsMjAgQEAgQ1JFQVRFIFRSSUdHRVIgYmVm b3JlX2luc19zdG10X3RyaWcgQkVGT1JFIElOU0VSVCBPTiBtYWluX3RhYmxlCiBGT1IgRUFDSCBT VEFURU1FTlQgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jKCdiZWZvcmVfaW5zX3N0bXQn KTsKIENSRUFURSBUUklHR0VSIGFmdGVyX2luc19zdG10X3RyaWcgQUZURVIgSU5TRVJUIE9OIG1h aW5fdGFibGUKIEZPUiBFQUNIIFNUQVRFTUVOVCBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1 bmMoJ2FmdGVyX2luc19zdG10Jyk7CitDUkVBVEUgVFJJR0dFUiB3aG9sZXRyaWcgQkVGT1JFIFVQ REFURSBPTiBtYWluX3RhYmxlIEZPUiBFQUNIIFJPVworV0hFTiAoT0xEIElTIE5PVCBOVUxMKQor RVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jKCdtb2RpZmllZF9hJyk7CitDUkVBVEUgVEFC TEUgbWFpbl90YWJsZTEoTElLRSBtYWluX3RhYmxlIElOQ0xVRElORyBUUklHR0VSUyk7IC0tIGVy cm9yLCB3aG9sZXJvdyByZWZlcmVuY2Ugbm90IGFsbG93ZWQKK0VSUk9SOiAgY2Fubm90IGNvbnZl cnQgd2hvbGUtcm93IHRhYmxlIHJlZmVyZW5jZQorREVUQUlMOiAgVHJpZ2dlciAid2hvbGV0cmln IiBjb250YWlucyBhIHdob2xlLXJvdyB0YWJsZSByZWZlcmVuY2UuCitEUk9QIFRSSUdHRVIgd2hv bGV0cmlnIE9OIG1haW5fdGFibGU7CitDUkVBVEUgVFJJR0dFUiB3aG9sZXRyaWcgQkVGT1JFIFVQ REFURSBPTiBtYWluX3RhYmxlIEZPUiBFQUNIIFJPVworV0hFTiAoTkVXIElTIE5PVCBOVUxMKQor RVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jKCdtb2RpZmllZF9hJyk7CitDUkVBVEUgVEFC TEUgbWFpbl90YWJsZTEoTElLRSBtYWluX3RhYmxlIElOQ0xVRElORyBUUklHR0VSUyk7IC0tIGVy cm9yLCB3aG9sZXJvdyByZWZlcmVuY2Ugbm90IGFsbG93ZWQKK0VSUk9SOiAgY2Fubm90IGNvbnZl cnQgd2hvbGUtcm93IHRhYmxlIHJlZmVyZW5jZQorREVUQUlMOiAgVHJpZ2dlciAid2hvbGV0cmln IiBjb250YWlucyBhIHdob2xlLXJvdyB0YWJsZSByZWZlcmVuY2UuCitEUk9QIFRSSUdHRVIgd2hv bGV0cmlnIE9OIG1haW5fdGFibGU7CiAtLQogLS0gaWYgbmVpdGhlciAnRk9SIEVBQ0ggUk9XJyBu b3IgJ0ZPUiBFQUNIIFNUQVRFTUVOVCcgd2FzIHNwZWNpZmllZCwKIC0tIENSRUFURSBUUklHR0VS IHNob3VsZCBkZWZhdWx0IHRvICdGT1IgRUFDSCBTVEFURU1FTlQnCkBAIC0zOTQsNiArNDA4LDQ2 IEBAIE5PVElDRTogIHRyaWdnZXJfZnVuYyhhZnRlcl91cGRfYV9iX3JvdykgY2FsbGVkOiBhY3Rp b24gPSBVUERBVEUsIHdoZW4gPSBBRlRFUiwKIE5PVElDRTogIHRyaWdnZXJfZnVuYyhhZnRlcl91 cGRfYl9yb3cpIGNhbGxlZDogYWN0aW9uID0gVVBEQVRFLCB3aGVuID0gQUZURVIsIGxldmVsID0g Uk9XCiBOT1RJQ0U6ICB0cmlnZ2VyX2Z1bmMoYWZ0ZXJfdXBkX2Jfc3RtdCkgY2FsbGVkOiBhY3Rp b24gPSBVUERBVEUsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBTVEFURU1FTlQKIE5PVElDRTogIHRy aWdnZXJfZnVuYyhhZnRlcl91cGRfc3RtdCkgY2FsbGVkOiBhY3Rpb24gPSBVUERBVEUsIHdoZW4g PSBBRlRFUiwgbGV2ZWwgPSBTVEFURU1FTlQKKy0tIENSRUFURSBUQUJMRSBMSUtFIElOQ0xVRElO RyBUUklHR0VSUyB0ZXN0cworQ09NTUVOVCBPTiBUUklHR0VSIGJlZm9yZV9pbnNfc3RtdF90cmln IE9OIG1haW5fdGFibGUgSVMgJ3RyaWdnZXIgYmVmb3JlX2luc19zdG10X3RyaWcnOworQ1JFQVRF IFRBQkxFIG1haW5fdGFibGUxKGMgaW50LCBMSUtFIG1haW5fdGFibGUgSU5DTFVESU5HIFRSSUdH RVJTIElOQ0xVRElORyBDT01NRU5UUyk7CitDUkVBVEUgVEFCTEUgbWFpbl90YWJsZTIoYyBpbnQs IExJS0UgbWFpbl90YWJsZSBFWENMVURJTkcgVFJJR0dFUlMgSU5DTFVESU5HIENPTU1FTlRTKTsK K1NFTEVDVCAgcGdfZ2V0X3RyaWdnZXJkZWYob2lkKQorRlJPTSAgICBwZ190cmlnZ2VyCitXSEVS RSBOT1QgdGdpc2ludGVybmFsIEFORCB0Z3JlbGlkIElOICgnbWFpbl90YWJsZSc6OnJlZ2NsYXNz LCAnbWFpbl90YWJsZTEnOjpyZWdjbGFzcywgJ21haW5fdGFibGUyJzo6cmVnY2xhc3MpCitPUkRF UiBCWSB0Z25hbWUsIHRncmVsaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcGdfZ2V0X3RyaWdnZXJkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBDUkVBVEUgVFJJR0dFUiBhZnRlcl9pbnNfc3RtdF90cmlnIEFGVEVSIElO U0VSVCBPTiBwdWJsaWMubWFpbl90YWJsZSBGT1IgRUFDSCBTVEFURU1FTlQgRVhFQ1VURSBGVU5D VElPTiB0cmlnZ2VyX2Z1bmMoJ2FmdGVyX2luc19zdG10JykKKyBDUkVBVEUgVFJJR0dFUiBhZnRl cl9pbnNfc3RtdF90cmlnIEFGVEVSIElOU0VSVCBPTiBwdWJsaWMubWFpbl90YWJsZTEgRk9SIEVB Q0ggU1RBVEVNRU5UIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jKCdhZnRlcl9pbnNfc3Rt dCcpCisgQ1JFQVRFIFRSSUdHRVIgYWZ0ZXJfdXBkX2FfYl9yb3dfdHJpZyBBRlRFUiBVUERBVEUg T0YgYSwgYiBPTiBwdWJsaWMubWFpbl90YWJsZSBGT1IgRUFDSCBST1cgRVhFQ1VURSBGVU5DVElP TiB0cmlnZ2VyX2Z1bmMoJ2FmdGVyX3VwZF9hX2Jfcm93JykKKyBDUkVBVEUgVFJJR0dFUiBhZnRl cl91cGRfYV9iX3Jvd190cmlnIEFGVEVSIFVQREFURSBPRiBhLCBiIE9OIHB1YmxpYy5tYWluX3Rh YmxlMSBGT1IgRUFDSCBST1cgRVhFQ1VURSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmMoJ2FmdGVyX3Vw ZF9hX2Jfcm93JykKKyBDUkVBVEUgVFJJR0dFUiBhZnRlcl91cGRfYl9yb3dfdHJpZyBBRlRFUiBV UERBVEUgT0YgYiBPTiBwdWJsaWMubWFpbl90YWJsZSBGT1IgRUFDSCBST1cgRVhFQ1VURSBGVU5D VElPTiB0cmlnZ2VyX2Z1bmMoJ2FmdGVyX3VwZF9iX3JvdycpCisgQ1JFQVRFIFRSSUdHRVIgYWZ0 ZXJfdXBkX2Jfcm93X3RyaWcgQUZURVIgVVBEQVRFIE9GIGIgT04gcHVibGljLm1haW5fdGFibGUx IEZPUiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuYygnYWZ0ZXJfdXBkX2Jf cm93JykKKyBDUkVBVEUgVFJJR0dFUiBhZnRlcl91cGRfYl9zdG10X3RyaWcgQUZURVIgVVBEQVRF IE9GIGIgT04gcHVibGljLm1haW5fdGFibGUgRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgRlVO Q1RJT04gdHJpZ2dlcl9mdW5jKCdhZnRlcl91cGRfYl9zdG10JykKKyBDUkVBVEUgVFJJR0dFUiBh ZnRlcl91cGRfYl9zdG10X3RyaWcgQUZURVIgVVBEQVRFIE9GIGIgT04gcHVibGljLm1haW5fdGFi bGUxIEZPUiBFQUNIIFNUQVRFTUVOVCBFWEVDVVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuYygnYWZ0 ZXJfdXBkX2Jfc3RtdCcpCisgQ1JFQVRFIFRSSUdHRVIgYWZ0ZXJfdXBkX3N0bXRfdHJpZyBBRlRF UiBVUERBVEUgT04gcHVibGljLm1haW5fdGFibGUgRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUg RlVOQ1RJT04gdHJpZ2dlcl9mdW5jKCdhZnRlcl91cGRfc3RtdCcpCisgQ1JFQVRFIFRSSUdHRVIg YWZ0ZXJfdXBkX3N0bXRfdHJpZyBBRlRFUiBVUERBVEUgT04gcHVibGljLm1haW5fdGFibGUxIEZP UiBFQUNIIFNUQVRFTUVOVCBFWEVDVVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuYygnYWZ0ZXJfdXBk X3N0bXQnKQorIENSRUFURSBUUklHR0VSIGJlZm9yZV9pbnNfc3RtdF90cmlnIEJFRk9SRSBJTlNF UlQgT04gcHVibGljLm1haW5fdGFibGUgRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgRlVOQ1RJ T04gdHJpZ2dlcl9mdW5jKCdiZWZvcmVfaW5zX3N0bXQnKQorIENSRUFURSBUUklHR0VSIGJlZm9y ZV9pbnNfc3RtdF90cmlnIEJFRk9SRSBJTlNFUlQgT04gcHVibGljLm1haW5fdGFibGUxIEZPUiBF QUNIIFNUQVRFTUVOVCBFWEVDVVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuYygnYmVmb3JlX2luc19z dG10JykKKyBDUkVBVEUgVFJJR0dFUiBiZWZvcmVfdXBkX2Ffcm93X3RyaWcgQkVGT1JFIFVQREFU RSBPRiBhIE9OIHB1YmxpYy5tYWluX3RhYmxlIEZPUiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9O IHRyaWdnZXJfZnVuYygnYmVmb3JlX3VwZF9hX3JvdycpCisgQ1JFQVRFIFRSSUdHRVIgYmVmb3Jl X3VwZF9hX3Jvd190cmlnIEJFRk9SRSBVUERBVEUgT0YgYSBPTiBwdWJsaWMubWFpbl90YWJsZTEg Rk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jKCdiZWZvcmVfdXBkX2Ff cm93JykKKyBDUkVBVEUgVFJJR0dFUiBiZWZvcmVfdXBkX2Ffc3RtdF90cmlnIEJFRk9SRSBVUERB VEUgT0YgYSBPTiBwdWJsaWMubWFpbl90YWJsZSBGT1IgRUFDSCBTVEFURU1FTlQgRVhFQ1VURSBG VU5DVElPTiB0cmlnZ2VyX2Z1bmMoJ2JlZm9yZV91cGRfYV9zdG10JykKKyBDUkVBVEUgVFJJR0dF UiBiZWZvcmVfdXBkX2Ffc3RtdF90cmlnIEJFRk9SRSBVUERBVEUgT0YgYSBPTiBwdWJsaWMubWFp bl90YWJsZTEgRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5j KCdiZWZvcmVfdXBkX2Ffc3RtdCcpCisoMTYgcm93cykKKworU0VMRUNUICBwYy5yZWxuYW1lLCBw ZC50Z25hbWUsIG9ial9kZXNjcmlwdGlvbihwZC5vaWQsICdwZ190cmlnZ2VyJykKK0ZST00gICAg cGdfdHJpZ2dlciBwZCBKT0lOIHBnX2NsYXNzIHBjCitPTiAgICAgIHBjLm9pZCA9IHBkLnRncmVs aWQgQU5EIHBkLnRnbmFtZSA9ICdiZWZvcmVfaW5zX3N0bXRfdHJpZycKK09SREVSIEJZIDE7Cisg ICByZWxuYW1lICAgfCAgICAgICAgdGduYW1lICAgICAgICB8ICAgICAgIG9ial9kZXNjcmlwdGlv biAgICAgICAgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgbWFpbl90YWJsZSAgfCBiZWZvcmVfaW5zX3N0bXRfdHJp ZyB8IHRyaWdnZXIgYmVmb3JlX2luc19zdG10X3RyaWcKKyBtYWluX3RhYmxlMSB8IGJlZm9yZV9p bnNfc3RtdF90cmlnIHwgdHJpZ2dlciBiZWZvcmVfaW5zX3N0bXRfdHJpZworKDIgcm93cykKKwor Q09NTUVOVCBPTiBUUklHR0VSIGJlZm9yZV9pbnNfc3RtdF90cmlnIE9OIG1haW5fdGFibGUgSVMg TlVMTDsKK0RST1AgVEFCTEUgbWFpbl90YWJsZTEsIG1haW5fdGFibGUyOwogLS0KIC0tIFRlc3Qg Y2FzZSBmb3IgYnVnIHdpdGggQkVGT1JFIHRyaWdnZXIgZm9sbG93ZWQgYnkgQUZURVIgdHJpZ2dl ciB3aXRoIFdIRU4KIC0tCkBAIC00MjIsNyArNDc2LDIyIEBAIE5PVElDRTogIGR1bW15X3VwZGF0 ZV9mdW5jKGFmdGVyYikgY2FsbGVkOiBhY3Rpb24gPSBVUERBVEUsIG9sZCA9ICh0KSwgbmV3ID0g KGYpCiBVUERBVEUgc29tZV90IFNFVCBzb21lX2NvbCA9IFRSVUU7CiBOT1RJQ0U6ICBkdW1teV91 cGRhdGVfZnVuYyhiZWZvcmUpIGNhbGxlZDogYWN0aW9uID0gVVBEQVRFLCBvbGQgPSAoZiksIG5l dyA9ICh0KQogTk9USUNFOiAgZHVtbXlfdXBkYXRlX2Z1bmMoYWZ0ZXJhKSBjYWxsZWQ6IGFjdGlv biA9IFVQREFURSwgb2xkID0gKGYpLCBuZXcgPSAodCkKK0NSRUFURSBUQUJMRSBzb21lX3QxIChj IElOVCwgTElLRSBzb21lX3QgSU5DTFVESU5HIFRSSUdHRVJTIElOQ0xVRElORyBDT01NRU5UUyk7 CitcZCsgc29tZV90MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAi cHVibGljLnNvbWVfdDEiCisgIENvbHVtbiAgfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFi bGUgfCBEZWZhdWx0IHwgU3RvcmFnZSB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBjICAgICAgICB8IGludGVnZXIgfCAg ICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwg Cisgc29tZV9jb2wgfCBib29sZWFuIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgIHwg cGxhaW4gICB8ICAgICAgICAgICAgICB8IAorTm90LW51bGwgY29uc3RyYWludHM6CisgICAgInNv bWVfdF9zb21lX2NvbF9ub3RfbnVsbCIgTk9UIE5VTEwgInNvbWVfY29sIgorVHJpZ2dlcnM6Cisg ICAgc29tZV90cmlnX2FmdGVyYSBBRlRFUiBVUERBVEUgT04gc29tZV90MSBGT1IgRUFDSCBST1cg V0hFTiAoTk9UIG9sZC5zb21lX2NvbCBBTkQgbmV3LnNvbWVfY29sKSBFWEVDVVRFIEZVTkNUSU9O IGR1bW15X3VwZGF0ZV9mdW5jKCdhZnRlcmEnKQorICAgIHNvbWVfdHJpZ19hZnRlcmIgQUZURVIg VVBEQVRFIE9OIHNvbWVfdDEgRk9SIEVBQ0ggUk9XIFdIRU4gKE5PVCBuZXcuc29tZV9jb2wpIEVY RUNVVEUgRlVOQ1RJT04gZHVtbXlfdXBkYXRlX2Z1bmMoJ2FmdGVyYicpCisgICAgc29tZV90cmln X2JlZm9yZSBCRUZPUkUgVVBEQVRFIE9OIHNvbWVfdDEgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVO Q1RJT04gZHVtbXlfdXBkYXRlX2Z1bmMoJ2JlZm9yZScpCisKIERST1AgVEFCTEUgc29tZV90Owor RFJPUCBUQUJMRSBzb21lX3QxOwogLS0gYm9ndXMgY2FzZXMKIENSRUFURSBUUklHR0VSIGVycm9y X3VwZF9hbmRfY29sIEJFRk9SRSBVUERBVEUgT1IgVVBEQVRFIE9GIGEgT04gbWFpbl90YWJsZQog Rk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuYygnZXJyb3JfdXBkX2Fu ZF9jb2wnKTsKQEAgLTg2MSw2ICs5MzAsMTUgQEAgQ1JFQVRFIFRSSUdHRVIgaW5zdGVhZF9vZl91 cGRhdGVfdHJpZyBJTlNURUFEIE9GIFVQREFURSBPTiBtYWluX3ZpZXcKIEZPUiBFQUNIIFJPVyBF WEVDVVRFIFBST0NFRFVSRSB2aWV3X3RyaWdnZXIoJ2luc3RlYWRfb2ZfdXBkJyk7CiBDUkVBVEUg VFJJR0dFUiBpbnN0ZWFkX29mX2RlbGV0ZV90cmlnIElOU1RFQUQgT0YgREVMRVRFIE9OIG1haW5f dmlldwogRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHZpZXdfdHJpZ2dlcignaW5zdGVh ZF9vZl9kZWwnKTsKK0NSRUFURSBUQUJMRSBtYWluX3ZpZXdfdGFibGUoTElLRSBtYWluX3ZpZXcg SU5DTFVESU5HIFRSSUdHRVJTKTsgLS0gVmlldyB0cmlnZ2VycyBhcmUgbm90IGNvcGllZAorXGQg bWFpbl92aWV3X3RhYmxlCisgICAgICAgICAgVGFibGUgInB1YmxpYy5tYWluX3ZpZXdfdGFibGUi CisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGEgICAg ICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGIgICAgICB8IGludGVnZXIg fCAgICAgICAgICAgfCAgICAgICAgICB8IAorCitEUk9QIFRBQkxFIG1haW5fdmlld190YWJsZTsK IC0tIFZhbGlkIEJFRk9SRSBzdGF0ZW1lbnQgVklFVyB0cmlnZ2VycwogQ1JFQVRFIFRSSUdHRVIg YmVmb3JlX2luc19zdG10X3RyaWcgQkVGT1JFIElOU0VSVCBPTiBtYWluX3ZpZXcKIEZPUiBFQUNI IFNUQVRFTUVOVCBFWEVDVVRFIFBST0NFRFVSRSB2aWV3X3RyaWdnZXIoJ2JlZm9yZV92aWV3X2lu c19zdG10Jyk7CkBAIC0yMzI2LDYgKzI0MDQsMjAgQEAgY3JlYXRlIGNvbnN0cmFpbnQgdHJpZ2dl ciBwYXJ0ZWRfdHJpZ190d28gYWZ0ZXIgaW5zZXJ0IG9uIHBhcnRlZF9jb25zdHIKICAgZGVmZXJy YWJsZSBpbml0aWFsbHkgZGVmZXJyZWQgZW5mb3JjZWQKICAgZm9yIGVhY2ggcm93IHdoZW4gKGJh cmsobmV3LmIpIEFORCBuZXcuYSAlIDIgPSAxKQogICBleGVjdXRlIHByb2NlZHVyZSB0cmlnZ2Vy X25vdGljZV9hYigpOworY3JlYXRlIHRhYmxlIHBhcnRlZF9jb25zdHJfY29weSAobGlrZSBwYXJ0 ZWRfY29uc3RyIGluY2x1ZGluZyBhbGwpOworc2VsZWN0ICBwZ19nZXRfdHJpZ2dlcmRlZihvaWQp Citmcm9tICAgIHBnX3RyaWdnZXIKK3doZXJlICAgbm90IHRnaXNpbnRlcm5hbCBhbmQgdGdyZWxp ZCBpbiAoJ3BhcnRlZF9jb25zdHJfY29weSc6OnJlZ2NsYXNzLCAncGFydGVkX2NvbnN0cic6OnJl Z2NsYXNzKQorb3JkZXIgYnkgdGduYW1lOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwZ19nZXRfdHJpZ2dlcmRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBD T05TVFJBSU5UIFRSSUdHRVIgcGFydGVkX3RyaWcgQUZURVIgSU5TRVJUIE9OIHB1YmxpYy5wYXJ0 ZWRfY29uc3RyIERFRkVSUkFCTEUgSU5JVElBTExZIElNTUVESUFURSBGT1IgRUFDSCBST1cgRVhF Q1VURSBGVU5DVElPTiB0cmlnZ2VyX25vdGljZV9hYigpCisgQ1JFQVRFIENPTlNUUkFJTlQgVFJJ R0dFUiBwYXJ0ZWRfdHJpZyBBRlRFUiBJTlNFUlQgT04gcHVibGljLnBhcnRlZF9jb25zdHJfY29w eSBERUZFUlJBQkxFIElOSVRJQUxMWSBJTU1FRElBVEUgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVO Q1RJT04gdHJpZ2dlcl9ub3RpY2VfYWIoKQorIENSRUFURSBDT05TVFJBSU5UIFRSSUdHRVIgcGFy dGVkX3RyaWdfdHdvIEFGVEVSIElOU0VSVCBPTiBwdWJsaWMucGFydGVkX2NvbnN0ciBERUZFUlJB QkxFIElOSVRJQUxMWSBERUZFUlJFRCBGT1IgRUFDSCBST1cgV0hFTiAoKGJhcmsobmV3LmIpIEFO RCAoKG5ldy5hICUgMikgPSAxKSkpIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9ub3RpY2VfYWIo KQorIENSRUFURSBDT05TVFJBSU5UIFRSSUdHRVIgcGFydGVkX3RyaWdfdHdvIEFGVEVSIElOU0VS VCBPTiBwdWJsaWMucGFydGVkX2NvbnN0cl9jb3B5IERFRkVSUkFCTEUgSU5JVElBTExZIERFRkVS UkVEIEZPUiBFQUNIIFJPVyBXSEVOICgoYmFyayhuZXcuYikgQU5EICgobmV3LmEgJSAyKSA9IDEp KSkgRVhFQ1VURSBGVU5DVElPTiB0cmlnZ2VyX25vdGljZV9hYigpCisoNCByb3dzKQorCitkcm9w IHRhYmxlIHBhcnRlZF9jb25zdHJfY29weTsKIC0tIFRoZSBpbW1lZGlhdGUgY29uc3RyYWludCBp cyBmaXJlZCBpbW1lZGlhdGVseTsgdGhlIFdIRU4gY2xhdXNlIG9mIHRoZQogLS0gZGVmZXJyZWQg Y29uc3RyYWludCBpcyBhbHNvIGNhbGxlZCBpbW1lZGlhdGVseS4gIFRoZSBkZWZlcnJlZCBjb25z dHJhaW50CiAtLSBpcyBmaXJlZCBhdCBjb21taXQgdGltZS4KQEAgLTMxMDYsNiArMzE5OCwxOCBA QCBjcmVhdGUgdHJpZ2dlciBpb2NkdV90dF9wYXJ0ZWRfaW5zZXJ0X3RyaWcKIGNyZWF0ZSB0cmln Z2VyIGlvY2R1X3R0X3BhcnRlZF91cGRhdGVfdHJpZwogICBhZnRlciB1cGRhdGUgb24gaW9jZHVf dHRfcGFydGVkIHJlZmVyZW5jaW5nIG9sZCB0YWJsZSBhcyBvbGRfdGFibGUgbmV3IHRhYmxlIGFz IG5ld190YWJsZQogICBmb3IgZWFjaCBzdGF0ZW1lbnQgZXhlY3V0ZSBwcm9jZWR1cmUgZHVtcF91 cGRhdGUoKTsKK0NSRUFURSBUQUJMRSBpb2NkdV90dF9wYXJ0ZWRfY29weShMSUtFIGlvY2R1X3R0 X3BhcnRlZCBJTkNMVURJTkcgVFJJR0dFUlMpOworXGQgaW9jZHVfdHRfcGFydGVkX2NvcHkKKyAg ICAgICAgVGFibGUgInB1YmxpYy5pb2NkdV90dF9wYXJ0ZWRfY29weSIKKyBDb2x1bW4gfCAgVHlw ZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8ICAg ICAgICAgICB8IG5vdCBudWxsIHwgCisgYiAgICAgIHwgdGV4dCAgICB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgCitUcmlnZ2VyczoKKyAgICBpb2NkdV90dF9wYXJ0ZWRfaW5zZXJ0X3RyaWcgQUZU RVIgSU5TRVJUIE9OIGlvY2R1X3R0X3BhcnRlZF9jb3B5IFJFRkVSRU5DSU5HIE5FVyBUQUJMRSBB UyBuZXdfdGFibGUgRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgRlVOQ1RJT04gZHVtcF9pbnNl cnQoKQorICAgIGlvY2R1X3R0X3BhcnRlZF91cGRhdGVfdHJpZyBBRlRFUiBVUERBVEUgT04gaW9j ZHVfdHRfcGFydGVkX2NvcHkgUkVGRVJFTkNJTkcgT0xEIFRBQkxFIEFTIG9sZF90YWJsZSBORVcg VEFCTEUgQVMgbmV3X3RhYmxlIEZPUiBFQUNIIFNUQVRFTUVOVCBFWEVDVVRFIEZVTkNUSU9OIGR1 bXBfdXBkYXRlKCkKKworRFJPUCBUQUJMRSBpb2NkdV90dF9wYXJ0ZWRfY29weTsKIC0tIGluc2Vy dHMgb25seQogaW5zZXJ0IGludG8gaW9jZHVfdHRfcGFydGVkIHZhbHVlcyAoMSwgJ0FBQScpLCAo MiwgJ0JCQicpCiAgIG9uIGNvbmZsaWN0IChhKSBkbwpAQCAtMzU4OSw2ICszNjkzLDI2IEBAIGJl Z2luCiBlbmQ7CiAkJDsKIGFsdGVyIGZ1bmN0aW9uIHdob2FtaSgpIG93bmVyIHRvIHJlZ3Jlc3Nf Zm5fb3duZXI7CistLSBDUkVBVEUgVEFCTEUgTElLRSBJTkNMVURJTkcgVFJJR0dFUlMgZm9yIGNv bnN0cmFpbnQgdHJpZ2dlcgorY3JlYXRlIHNjaGVtYSB0ZXN0X3RyaWc7CitjcmVhdGUgdGFibGUg dGVzdF90cmlnLnRyaWdfdDEgKGlkIGludGVnZXIpOworY3JlYXRlIHRhYmxlIHRlc3RfdHJpZy50 cmlnX3QyIChpZCBpbnRlZ2VyKTsKK2FsdGVyIGZ1bmN0aW9uIHdob2FtaSgpIHNldCBzY2hlbWEg dGVzdF90cmlnOworY3JlYXRlIGNvbnN0cmFpbnQgdHJpZ2dlciBjb25fdHJpZ190ZXN0IGFmdGVy IGluc2VydCBvbiB0ZXN0X3RyaWcudHJpZ190MQorZnJvbSB0ZXN0X3RyaWcudHJpZ190MgorZGVm ZXJyYWJsZSBpbml0aWFsbHkgZGVmZXJyZWQKK2ZvciBlYWNoIHJvdworZXhlY3V0ZSBmdW5jdGlv biB0ZXN0X3RyaWcud2hvYW1pKCk7CitjcmVhdGUgdGFibGUgdHJpZ190MV9jb3B5KGxpa2UgdGVz dF90cmlnLnRyaWdfdDEgaW5jbHVkaW5nIHRyaWdnZXJzKTsKK3NlbGVjdCBwZ19nZXRfdHJpZ2dl cmRlZihvaWQpIGZyb20gcGdfdHJpZ2dlciB3aGVyZSB0Z3JlbGlkID0gJ3RyaWdfdDFfY29weSc6 OnJlZ2NsYXNzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X3RyaWdnZXJkZWYgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIENPTlNUUkFJTlQgVFJJR0dF UiBjb25fdHJpZ190ZXN0IEFGVEVSIElOU0VSVCBPTiBwdWJsaWMudHJpZ190MV9jb3B5IEZST00g dGVzdF90cmlnLnRyaWdfdDIgREVGRVJSQUJMRSBJTklUSUFMTFkgREVGRVJSRUQgRk9SIEVBQ0gg Uk9XIEVYRUNVVEUgRlVOQ1RJT04gdGVzdF90cmlnLndob2FtaSgpCisoMSByb3cpCisKK2FsdGVy IGZ1bmN0aW9uIHRlc3RfdHJpZy53aG9hbWkoKSBzZXQgc2NoZW1hIHB1YmxpYzsKK2Ryb3AgdGFi bGUgdGVzdF90cmlnLnRyaWdfdDEsIHRlc3RfdHJpZy50cmlnX3QyLCB0cmlnX3QxX2NvcHk7Citk cm9wIHNjaGVtYSB0ZXN0X3RyaWc7CiBjcmVhdGUgdGFibGUgZGVmZXJfdHJpZyAoaWQgaW50ZWdl cik7CiBncmFudCBpbnNlcnQgb24gZGVmZXJfdHJpZyB0byBwdWJsaWM7CiBjcmVhdGUgY29uc3Ry YWludCB0cmlnZ2VyIHdob2FtaSBhZnRlciBpbnNlcnQgb24gZGVmZXJfdHJpZwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX3RhYmxlX2xpa2Uuc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvY3JlYXRlX3RhYmxlX2xpa2Uuc3FsCmluZGV4IGQ1MmE5M2VmMTMxLi5jMmQ4 YWNmNmI2ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX3RhYmxlX2xp a2Uuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV90YWJsZV9saWtlLnNxbApA QCAtMjU5LDYgKzI1OSwzMCBAQCBBTFRFUiBUQUJMRSBjdGxfdGFibGUgQUxURVIgQ09MVU1OIGIg U0VUIFNUT1JBR0UgTUFJTjsKIAogXGQrIGN0bF90YWJsZQogCitDUkVBVEUgT1IgUkVQTEFDRSBG VU5DVElPTiB0cmlnZ2VyX2Z1bmMoKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgcGxwZ3NxbCBB UyAnCitCRUdJTgorCVJBSVNFIE5PVElDRSAnJ3RyaWdnZXJfZnVuYyglKSBjYWxsZWQ6IGFjdGlv biA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnJywgVEdfQVJHVlswXSwgVEdfT1AsIFRHX1dIRU4s IFRHX0xFVkVMOworCVJFVFVSTiBOVUxMOworRU5EOyc7CitDUkVBVEUgVFJJR0dFUiB0cmlndGVz dF9iZWZvcmVfc3RtdCBCRUZPUkUgREVMRVRFIE9SIFVQREFURSBPTiBjdGxfdGFibGUKK0ZPUiBF QUNIIFJPVyBXSEVOIChPTEQuYSA+IDApCitFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmMo J3RyaWd0ZXN0X2JlZm9yZV9zdG10Jyk7CisKK0NSRUFURSBUUklHR0VSIHRyaWd0ZXN0X2FmdGVy X3N0bXQgQUZURVIgVVBEQVRFIE9GIGEsIGIgT04gY3RsX3RhYmxlCitGT1IgRUFDSCBTVEFURU1F TlQKK0VYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuYygndHJpZ3Rlc3RfYmVmb3JlX3N0bXQn KTsKKworLS0gQ1JFQVRFIEZPUkVJR04gVEFCTEUgTElLRSBzaG91bGQgbm90IGNvcHkgdHJpZ2dl cnMgdGhhdCBoYXZlIHRyYW5zaXRpb24gdGFibGVzCitDUkVBVEUgVFJJR0dFUiB0cmlndGVzdF9h ZnRlcl9zdG10MSBBRlRFUiBJTlNFUlQgT04gY3RsX3RhYmxlCitSRUZFUkVOQ0lORyBORVcgVEFC TEUgQVMgbmV3X3RhYmxlCitGT1IgRUFDSCBTVEFURU1FTlQKK0VYRUNVVEUgUFJPQ0VEVVJFIHRy aWdnZXJfZnVuYygndHJpZ3Rlc3RfYWZ0ZXJfc3RtdDEnKTsKKworLS0gQ1JFQVRFIEZPUkVJR04g VEFCTEUgTElLRSBzaG91bGQgbm90IGNvcHkgc291cmNlIHRhYmxlIGNvc250cmFpbnQgdHJpZ2dl cgorQ1JFQVRFIENPTlNUUkFJTlQgVFJJR0dFUiBjb25zdHJfdHJpZworICAgIEFGVEVSIElOU0VS VCBPTiBjdGxfdGFibGUgREVGRVJSQUJMRSBJTklUSUFMTFkgREVGRVJSRUQgZW5mb3JjZWQgRk9S IEVBQ0ggUk9XCisgICAgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jICgpOworCiAtLSBU ZXN0IEVYQ0xVRElORyBBTEwKIENSRUFURSBGT1JFSUdOIFRBQkxFIGN0bF9mb3JlaWduX3RhYmxl MShMSUtFIGN0bF90YWJsZSBFWENMVURJTkcgQUxMKSBTRVJWRVIgY3RsX3MwOwogXGQrIGN0bF9m b3JlaWduX3RhYmxlMQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHJpZ2dlcnMu c3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHJpZ2dlcnMuc3FsCmluZGV4IDIyODVlOTAxMTBl Li4xYWZhZWI4NjNmNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHJpZ2dlcnMu c3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RyaWdnZXJzLnNxbApAQCAtMTIwLDYgKzEy MCwxOCBAQCBGT1IgRUFDSCBTVEFURU1FTlQgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5j KCdiZWZvcmVfaW5zX3N0bXQnKTsKIENSRUFURSBUUklHR0VSIGFmdGVyX2luc19zdG10X3RyaWcg QUZURVIgSU5TRVJUIE9OIG1haW5fdGFibGUKIEZPUiBFQUNIIFNUQVRFTUVOVCBFWEVDVVRFIFBS T0NFRFVSRSB0cmlnZ2VyX2Z1bmMoJ2FmdGVyX2luc19zdG10Jyk7CiAKK0NSRUFURSBUUklHR0VS IHdob2xldHJpZyBCRUZPUkUgVVBEQVRFIE9OIG1haW5fdGFibGUgRk9SIEVBQ0ggUk9XCitXSEVO IChPTEQgSVMgTk9UIE5VTEwpCitFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmMoJ21vZGlm aWVkX2EnKTsKK0NSRUFURSBUQUJMRSBtYWluX3RhYmxlMShMSUtFIG1haW5fdGFibGUgSU5DTFVE SU5HIFRSSUdHRVJTKTsgLS0gZXJyb3IsIHdob2xlcm93IHJlZmVyZW5jZSBub3QgYWxsb3dlZAor RFJPUCBUUklHR0VSIHdob2xldHJpZyBPTiBtYWluX3RhYmxlOworCitDUkVBVEUgVFJJR0dFUiB3 aG9sZXRyaWcgQkVGT1JFIFVQREFURSBPTiBtYWluX3RhYmxlIEZPUiBFQUNIIFJPVworV0hFTiAo TkVXIElTIE5PVCBOVUxMKQorRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jKCdtb2RpZmll ZF9hJyk7CitDUkVBVEUgVEFCTEUgbWFpbl90YWJsZTEoTElLRSBtYWluX3RhYmxlIElOQ0xVRElO RyBUUklHR0VSUyk7IC0tIGVycm9yLCB3aG9sZXJvdyByZWZlcmVuY2Ugbm90IGFsbG93ZWQKK0RS T1AgVFJJR0dFUiB3aG9sZXRyaWcgT04gbWFpbl90YWJsZTsKKwogLS0KIC0tIGlmIG5laXRoZXIg J0ZPUiBFQUNIIFJPVycgbm9yICdGT1IgRUFDSCBTVEFURU1FTlQnIHdhcyBzcGVjaWZpZWQsCiAt LSBDUkVBVEUgVFJJR0dFUiBzaG91bGQgZGVmYXVsdCB0byAnRk9SIEVBQ0ggU1RBVEVNRU5UJwpA QCAtMjM0LDYgKzI0NiwyNCBAQCBTRUxFQ1QgcGdfZ2V0X3RyaWdnZXJkZWYob2lkKSBGUk9NIHBn X3RyaWdnZXIgV0hFUkUgdGdyZWxpZCA9ICdtYWluX3RhYmxlJzo6cmVnYwogVVBEQVRFIG1haW5f dGFibGUgU0VUIGEgPSA1MDsKIFVQREFURSBtYWluX3RhYmxlIFNFVCBiID0gMTA7CiAKKy0tIENS RUFURSBUQUJMRSBMSUtFIElOQ0xVRElORyBUUklHR0VSUyB0ZXN0cworQ09NTUVOVCBPTiBUUklH R0VSIGJlZm9yZV9pbnNfc3RtdF90cmlnIE9OIG1haW5fdGFibGUgSVMgJ3RyaWdnZXIgYmVmb3Jl X2luc19zdG10X3RyaWcnOworQ1JFQVRFIFRBQkxFIG1haW5fdGFibGUxKGMgaW50LCBMSUtFIG1h aW5fdGFibGUgSU5DTFVESU5HIFRSSUdHRVJTIElOQ0xVRElORyBDT01NRU5UUyk7CitDUkVBVEUg VEFCTEUgbWFpbl90YWJsZTIoYyBpbnQsIExJS0UgbWFpbl90YWJsZSBFWENMVURJTkcgVFJJR0dF UlMgSU5DTFVESU5HIENPTU1FTlRTKTsKKworU0VMRUNUICBwZ19nZXRfdHJpZ2dlcmRlZihvaWQp CitGUk9NICAgIHBnX3RyaWdnZXIKK1dIRVJFIE5PVCB0Z2lzaW50ZXJuYWwgQU5EIHRncmVsaWQg SU4gKCdtYWluX3RhYmxlJzo6cmVnY2xhc3MsICdtYWluX3RhYmxlMSc6OnJlZ2NsYXNzLCAnbWFp bl90YWJsZTInOjpyZWdjbGFzcykKK09SREVSIEJZIHRnbmFtZSwgdGdyZWxpZDo6cmVnY2xhc3M6 OnRleHQgQ09MTEFURSAiQyI7CisKK1NFTEVDVCAgcGMucmVsbmFtZSwgcGQudGduYW1lLCBvYmpf ZGVzY3JpcHRpb24ocGQub2lkLCAncGdfdHJpZ2dlcicpCitGUk9NICAgIHBnX3RyaWdnZXIgcGQg Sk9JTiBwZ19jbGFzcyBwYworT04gICAgICBwYy5vaWQgPSBwZC50Z3JlbGlkIEFORCBwZC50Z25h bWUgPSAnYmVmb3JlX2luc19zdG10X3RyaWcnCitPUkRFUiBCWSAxOworQ09NTUVOVCBPTiBUUklH R0VSIGJlZm9yZV9pbnNfc3RtdF90cmlnIE9OIG1haW5fdGFibGUgSVMgTlVMTDsKKworRFJPUCBU QUJMRSBtYWluX3RhYmxlMSwgbWFpbl90YWJsZTI7CisKIC0tCiAtLSBUZXN0IGNhc2UgZm9yIGJ1 ZyB3aXRoIEJFRk9SRSB0cmlnZ2VyIGZvbGxvd2VkIGJ5IEFGVEVSIHRyaWdnZXIgd2l0aCBXSEVO CiAtLQpAQCAtMjU4LDcgKzI4OCwxMCBAQCBJTlNFUlQgSU5UTyBzb21lX3QgVkFMVUVTIChUUlVF KTsKIFVQREFURSBzb21lX3QgU0VUIHNvbWVfY29sID0gVFJVRTsKIFVQREFURSBzb21lX3QgU0VU IHNvbWVfY29sID0gRkFMU0U7CiBVUERBVEUgc29tZV90IFNFVCBzb21lX2NvbCA9IFRSVUU7CitD UkVBVEUgVEFCTEUgc29tZV90MSAoYyBJTlQsIExJS0Ugc29tZV90IElOQ0xVRElORyBUUklHR0VS UyBJTkNMVURJTkcgQ09NTUVOVFMpOworXGQrIHNvbWVfdDEKIERST1AgVEFCTEUgc29tZV90Owor RFJPUCBUQUJMRSBzb21lX3QxOwogCiAtLSBib2d1cyBjYXNlcwogQ1JFQVRFIFRSSUdHRVIgZXJy b3JfdXBkX2FuZF9jb2wgQkVGT1JFIFVQREFURSBPUiBVUERBVEUgT0YgYSBPTiBtYWluX3RhYmxl CkBAIC02MjEsNiArNjU0LDEwIEBAIEZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSB2aWV3 X3RyaWdnZXIoJ2luc3RlYWRfb2ZfdXBkJyk7CiBDUkVBVEUgVFJJR0dFUiBpbnN0ZWFkX29mX2Rl bGV0ZV90cmlnIElOU1RFQUQgT0YgREVMRVRFIE9OIG1haW5fdmlldwogRk9SIEVBQ0ggUk9XIEVY RUNVVEUgUFJPQ0VEVVJFIHZpZXdfdHJpZ2dlcignaW5zdGVhZF9vZl9kZWwnKTsKIAorQ1JFQVRF IFRBQkxFIG1haW5fdmlld190YWJsZShMSUtFIG1haW5fdmlldyBJTkNMVURJTkcgVFJJR0dFUlMp OyAtLSBWaWV3IHRyaWdnZXJzIGFyZSBub3QgY29waWVkCitcZCBtYWluX3ZpZXdfdGFibGUKK0RS T1AgVEFCTEUgbWFpbl92aWV3X3RhYmxlOworCiAtLSBWYWxpZCBCRUZPUkUgc3RhdGVtZW50IFZJ RVcgdHJpZ2dlcnMKIENSRUFURSBUUklHR0VSIGJlZm9yZV9pbnNfc3RtdF90cmlnIEJFRk9SRSBJ TlNFUlQgT04gbWFpbl92aWV3CiBGT1IgRUFDSCBTVEFURU1FTlQgRVhFQ1VURSBQUk9DRURVUkUg dmlld190cmlnZ2VyKCdiZWZvcmVfdmlld19pbnNfc3RtdCcpOwpAQCAtMTYwOSw2ICsxNjQ2LDEz IEBAIGNyZWF0ZSBjb25zdHJhaW50IHRyaWdnZXIgcGFydGVkX3RyaWdfdHdvIGFmdGVyIGluc2Vy dCBvbiBwYXJ0ZWRfY29uc3RyCiAgIGZvciBlYWNoIHJvdyB3aGVuIChiYXJrKG5ldy5iKSBBTkQg bmV3LmEgJSAyID0gMSkKICAgZXhlY3V0ZSBwcm9jZWR1cmUgdHJpZ2dlcl9ub3RpY2VfYWIoKTsK IAorY3JlYXRlIHRhYmxlIHBhcnRlZF9jb25zdHJfY29weSAobGlrZSBwYXJ0ZWRfY29uc3RyIGlu Y2x1ZGluZyBhbGwpOworc2VsZWN0ICBwZ19nZXRfdHJpZ2dlcmRlZihvaWQpCitmcm9tICAgIHBn X3RyaWdnZXIKK3doZXJlICAgbm90IHRnaXNpbnRlcm5hbCBhbmQgdGdyZWxpZCBpbiAoJ3BhcnRl ZF9jb25zdHJfY29weSc6OnJlZ2NsYXNzLCAncGFydGVkX2NvbnN0cic6OnJlZ2NsYXNzKQorb3Jk ZXIgYnkgdGduYW1lOworZHJvcCB0YWJsZSBwYXJ0ZWRfY29uc3RyX2NvcHk7CisKIC0tIFRoZSBp bW1lZGlhdGUgY29uc3RyYWludCBpcyBmaXJlZCBpbW1lZGlhdGVseTsgdGhlIFdIRU4gY2xhdXNl IG9mIHRoZQogLS0gZGVmZXJyZWQgY29uc3RyYWludCBpcyBhbHNvIGNhbGxlZCBpbW1lZGlhdGVs eS4gIFRoZSBkZWZlcnJlZCBjb25zdHJhaW50CiAtLSBpcyBmaXJlZCBhdCBjb21taXQgdGltZS4K QEAgLTIyODMsNiArMjMyNywxMCBAQCBjcmVhdGUgdHJpZ2dlciBpb2NkdV90dF9wYXJ0ZWRfdXBk YXRlX3RyaWcKICAgYWZ0ZXIgdXBkYXRlIG9uIGlvY2R1X3R0X3BhcnRlZCByZWZlcmVuY2luZyBv bGQgdGFibGUgYXMgb2xkX3RhYmxlIG5ldyB0YWJsZSBhcyBuZXdfdGFibGUKICAgZm9yIGVhY2gg c3RhdGVtZW50IGV4ZWN1dGUgcHJvY2VkdXJlIGR1bXBfdXBkYXRlKCk7CiAKK0NSRUFURSBUQUJM RSBpb2NkdV90dF9wYXJ0ZWRfY29weShMSUtFIGlvY2R1X3R0X3BhcnRlZCBJTkNMVURJTkcgVFJJ R0dFUlMpOworXGQgaW9jZHVfdHRfcGFydGVkX2NvcHkKK0RST1AgVEFCTEUgaW9jZHVfdHRfcGFy dGVkX2NvcHk7CisKIC0tIGluc2VydHMgb25seQogaW5zZXJ0IGludG8gaW9jZHVfdHRfcGFydGVk IHZhbHVlcyAoMSwgJ0FBQScpLCAoMiwgJ0JCQicpCiAgIG9uIGNvbmZsaWN0IChhKSBkbwpAQCAt Mjc0MCw2ICsyNzg4LDI1IEBAIGVuZDsKICQkOwogYWx0ZXIgZnVuY3Rpb24gd2hvYW1pKCkgb3du ZXIgdG8gcmVncmVzc19mbl9vd25lcjsKIAorLS0gQ1JFQVRFIFRBQkxFIExJS0UgSU5DTFVESU5H IFRSSUdHRVJTIGZvciBjb25zdHJhaW50IHRyaWdnZXIKK2NyZWF0ZSBzY2hlbWEgdGVzdF90cmln OworY3JlYXRlIHRhYmxlIHRlc3RfdHJpZy50cmlnX3QxIChpZCBpbnRlZ2VyKTsKK2NyZWF0ZSB0 YWJsZSB0ZXN0X3RyaWcudHJpZ190MiAoaWQgaW50ZWdlcik7CithbHRlciBmdW5jdGlvbiB3aG9h bWkoKSBzZXQgc2NoZW1hIHRlc3RfdHJpZzsKKworY3JlYXRlIGNvbnN0cmFpbnQgdHJpZ2dlciBj b25fdHJpZ190ZXN0IGFmdGVyIGluc2VydCBvbiB0ZXN0X3RyaWcudHJpZ190MQorZnJvbSB0ZXN0 X3RyaWcudHJpZ190MgorZGVmZXJyYWJsZSBpbml0aWFsbHkgZGVmZXJyZWQKK2ZvciBlYWNoIHJv dworZXhlY3V0ZSBmdW5jdGlvbiB0ZXN0X3RyaWcud2hvYW1pKCk7CisKK2NyZWF0ZSB0YWJsZSB0 cmlnX3QxX2NvcHkobGlrZSB0ZXN0X3RyaWcudHJpZ190MSBpbmNsdWRpbmcgdHJpZ2dlcnMpOwor c2VsZWN0IHBnX2dldF90cmlnZ2VyZGVmKG9pZCkgZnJvbSBwZ190cmlnZ2VyIHdoZXJlIHRncmVs aWQgPSAndHJpZ190MV9jb3B5Jzo6cmVnY2xhc3M7CisKK2FsdGVyIGZ1bmN0aW9uIHRlc3RfdHJp Zy53aG9hbWkoKSBzZXQgc2NoZW1hIHB1YmxpYzsKK2Ryb3AgdGFibGUgdGVzdF90cmlnLnRyaWdf dDEsIHRlc3RfdHJpZy50cmlnX3QyLCB0cmlnX3QxX2NvcHk7Citkcm9wIHNjaGVtYSB0ZXN0X3Ry aWc7CisKIGNyZWF0ZSB0YWJsZSBkZWZlcl90cmlnIChpZCBpbnRlZ2VyKTsKIGdyYW50IGluc2Vy dCBvbiBkZWZlcl90cmlnIHRvIHB1YmxpYzsKIGNyZWF0ZSBjb25zdHJhaW50IHRyaWdnZXIgd2hv YW1pIGFmdGVyIGluc2VydCBvbiBkZWZlcl90cmlnCi0tIAoyLjM0LjEKCg== --0000000000002dfaed0653639c79--