Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uRR7S-00BjkX-Ho for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Jun 2025 07:52:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uRR7P-007Dyp-Au for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Jun 2025 07:52:31 +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.94.2) (envelope-from ) id 1uRR7O-007Dyh-Bv for pgsql-hackers@lists.postgresql.org; Tue, 17 Jun 2025 07:52:31 +0000 Received: from mail-ua1-x92a.google.com ([2607:f8b0:4864:20::92a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uRR7M-002SRz-2H for pgsql-hackers@lists.postgresql.org; Tue, 17 Jun 2025 07:52:29 +0000 Received: by mail-ua1-x92a.google.com with SMTP id a1e0cc1a2514c-87f1b3a3e7bso704809241.1 for ; Tue, 17 Jun 2025 00:52:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750146748; x=1750751548; 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=F3viBhry2jlQWkOLp7I3WMEJb6pOL537kml8KSzeyLI=; b=kgK3qCGpxmsvcE58b25zFsnC/UzIN9EnpnSVfpJJp8VHGYWdPok8dPS65aJY3nkt2I 0uv97CJITW1g0IttEX2A6ueztHesnHaW4YmMi0UsMvDaRuz8VhpyPh3RH0bb1mqeZ5DM ZQhRC13BsPSxQl485JEsPc/gixQ8T4dyfYt7JwUFinYiATTT2scedDr9ILUxinxJojOP PNTeg3CrKhuuD9l0+BuzcW7QEQJUyWYsEIgRNlu2g92N6bGTDpeJXrNb09bCm68X3weo EhIIFBV99Khnn9k5QOPoEbERXnlxfHDrKw9tOWlTRxQZvcJ+0TNSHgg8Ajn5ZIUyzi+c TDaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750146748; x=1750751548; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=F3viBhry2jlQWkOLp7I3WMEJb6pOL537kml8KSzeyLI=; b=GxqmwTZU7DJdJor0BhCjM8Zw+w8DN7CrFIkg8BM5awEwXY+I66mgrFg5YcxdhbUXNw UaOayuCZjeWT6HWs1lG63H8WYADCTkCjdqAoZnDgd6tqdionsiVEI9/IemaSho8aC0tH g/iRFU/rZLD9JtcEvvwcdF0t5JhdC6FTchpKlx7PKHT4coBFg4En7QoymgK2/sYcJZjs h2B4HT0M3BFX+PG4dHqG9o8LmYQbb+torIdsdT8ccc4hToSMWsYhHiwYecPEvd58DAbA Qf76ZUL69eQY3XKsKdsKdhxRmfsowwD1dkNOdEDxZehTjrQ4tCXEHoGE6CPZkqluCR6Q CpBQ== X-Gm-Message-State: AOJu0Yz1UGw20umiPPfC0AilwR6YHwpzY+uuav3qXyAIuTwA2hgb+obF osx+4dAY8q1ewJtFGJsHicrS5ZBSaEdvs5j3IOqob5YQlEeiAhI9nI0Eo9VJ3FxjS3k+8Dcat6A v4oVw8sFx8MNDvWnsrdwh5s0/W/5ayCir+nQmdCwn9w== X-Gm-Gg: ASbGncvGHi5YV/INaMf+oZ2d5jmTOyCtbWlojXJXbnuutlwtB5p9/rlgXUL/Q2YRMLY W33k3pAJuW1qmODnwNBMTiVkDwz9qEq672NesJ7E3U/L01ecYSyZHpye4trRs8e8hRPr9BboQl1 GIWmk+FSqoWupwd0hNbIC5to18HW6GBj4KijwoCFxRx6p7bUINT5VhUooggkFJtSQVOSLJSHxfX 8A= X-Google-Smtp-Source: AGHT+IEdI+MS9b16/KDlRdM5BPPCfEBO82TZyWHUy3DJl3ZCcb+LTm2oveJ5ZGAibbgFgODsu53tT3cxyJAEDB/YLQc= X-Received: by 2002:a05:6102:4194:b0:4e5:8c2a:fbee with SMTP id ada2fe7eead31-4e7f643ae25mr7548537137.15.1750146747624; Tue, 17 Jun 2025 00:52:27 -0700 (PDT) MIME-Version: 1.0 References: <171085360143.2046436.7217841141682511557.pgcf@coridan.postgresql.org> <67ecf5fb-e63d-4284-be75-d0479eef81aa@postgrespro.ru> <884bcf9e-d6e3-4b0c-8dcb-7f2110070ac9@postgrespro.ru> <1e74c9fd-830e-4544-b0de-e49ea4b04029@postgrespro.ru> <9c1b75f1-5c40-4a86-9a61-a4b3f1d7ec60@postgrespro.ru> <7e1c67b8-ceba-4a04-964a-853eedeb02cc@postgrespro.ru> <0b3907b4-83b9-4873-9feb-2b60b29cda33@postgrespro.ru> In-Reply-To: <0b3907b4-83b9-4873-9feb-2b60b29cda33@postgrespro.ru> From: jian he Date: Tue, 17 Jun 2025 15:51:50 +0800 X-Gm-Features: AX0GCFuW3pqg4_zGuEWY8QRm-eIzxGZTEbqrTL2LOUsEx08NXulUE1FoR4ung60 Message-ID: Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands To: Dmitry Koval Cc: pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="00000000000032f5380637bfcbfe" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000032f5380637bfcbfe Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Jun 17, 2025 at 4:15=E2=80=AFAM Dmitry Koval wrote: > > Added patch and a bit modified test. > hi. Please check the attached patch for addressing the following issues. + else + { + ereport(ERROR, + errcode(ERRCODE_DUPLICATE_TABLE), + errmsg("relation \"%s\" already exists", cmd->name->relname)); + } There are no regress tests for this, I have added a simple test for it. SELECT c.oid::pg_catalog.regclass, c.relkind, inhdetachpending, pg_catalog.pg_get_expr(c.relpartbound, c.oid) FROM pg_catalog.pg_class c, pg_catalog.pg_inherits i WHERE c.oid =3D i.inhrelid AND i.inhparent =3D 'sales_range'::regclass ORDER BY pg_catalog.pg_get_expr(c.relpartbound, c.oid) =3D 'DEFAULT', c.oid::pg_catalog.regclass::pg_catalog.text; I found about 10 similar queries in partition_merge. We can replace them wi= th prepared statement=E2=80=94parsing once and executing multiple times. This = not only improves the readability of the test code but also slightly speeds up test execution. there are some test code pattern like: +SELECT * FROM sales_range; +SELECT * FROM sales_jan2022; +SELECT * FROM partitions_merge_schema2.sales_feb_mar_apr2022; +SELECT * FROM sales_others; since sales_jan2022, sales_feb_mar_apr2022, sales_others are partition of sales_range, we can simply use +SELECT tableoid::regclass, * FROM sales_range ORDER BY tableoid, salesperson_id; After applying the attached patch, partition_merge.out size is 61379 without the size is: 66145. The attached patch also addressed issues raised from =C3=81lvaro Herrera in= [1]. instead of making function StoreConstraints external, using AddRelationNewConstraints to install check constraints for new relation in createTableConstraints [1] https://postgr.es/m/202502031640.zem6orjmmxoz@alvherre.pgsql --00000000000032f5380637bfcbfe Content-Type: application/octet-stream; name="v46-0001-regress-test-refactoring-and-others.no-cfbot" Content-Disposition: attachment; filename="v46-0001-regress-test-refactoring-and-others.no-cfbot" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc084xee0 RnJvbSAxN2VkOGE1NTU0NGMwY2JhMGI3N2VmODFmNzVmMTQzMjZlYmU5YTZjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMTcgSnVuIDIwMjUgMTU6NDc6MTEgKzA4MDAKU3ViamVjdDogW1BBVENIIHY0 NiAxLzFdIHJlZ3Jlc3MgdGVzdCByZWZhY3RvcmluZyBhbmQgb3RoZXJzCgptYWluIGNoYW5nZXM6 CjEuIHJlZ3Jlc3MgdGVzdCByZWZhY3RvcmluZwoyLiBub3QgZXhwb3J0IGZ1bmN0aW9uIFN0b3Jl Q29uc3RyYWludHMsIHVzaW5nIEFkZFJlbGF0aW9uTmV3Q29uc3RyYWludHMKLS0tCiBzcmMvYmFj a2VuZC9jYXRhbG9nL2hlYXAuYyAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICAzNiArLQogc3JjL2luY2x1 ZGUvY2F0YWxvZy9oZWFwLmggICAgICAgICAgICAgICAgICAgIHwgICAzIC0KIHNyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91dCB8IDMyNyArKysrKystLS0tLS0tLS0t LS0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwgICAgICB8ICA4NCAr Ky0tLQogNSBmaWxlcyBjaGFuZ2VkLCAxNjMgaW5zZXJ0aW9ucygrKSwgMjkxIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9oZWFwLmMKaW5kZXggNTcxYjZiMDU3NDkuLjU0Yzk1ZTQyNTk4IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2hl YXAuYwpAQCAtMTAyLDYgKzEwMiw4IEBAIHN0YXRpYyBPYmplY3RBZGRyZXNzIEFkZE5ld1JlbGF0 aW9uVHlwZShjb25zdCBjaGFyICp0eXBlTmFtZSwKIAkJCQkJCQkJCQlPaWQgbmV3X3Jvd190eXBl LAogCQkJCQkJCQkJCU9pZCBuZXdfYXJyYXlfdHlwZSk7CiBzdGF0aWMgdm9pZCBSZWxhdGlvblJl bW92ZUluaGVyaXRhbmNlKE9pZCByZWxpZCk7CitzdGF0aWMgdm9pZCBTdG9yZUNvbnN0cmFpbnRz KFJlbGF0aW9uIHJlbCwgTGlzdCAqY29va2VkX2NvbnN0cmFpbnRzLAorCQkJCQkJCSBib29sIGlz X2ludGVybmFsKTsKIHN0YXRpYyBPaWQJU3RvcmVSZWxDaGVjayhSZWxhdGlvbiByZWwsIGNvbnN0 IGNoYXIgKmNjbmFtZSwgTm9kZSAqZXhwciwKIAkJCQkJCSAgYm9vbCBpc19lbmZvcmNlZCwgYm9v bCBpc192YWxpZGF0ZWQsIGJvb2wgaXNfbG9jYWwsCiAJCQkJCQkgIGludDE2IGluaGNvdW50LCBi b29sIGlzX25vX2luaGVyaXQsIGJvb2wgaXNfaW50ZXJuYWwpOwpAQCAtMjI5NCw3ICsyMjk2LDcg QEAgU3RvcmVSZWxOb3ROdWxsKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqbm5uYW1lLCBBdHRy TnVtYmVyIGF0dG51bSwKICAqIGV4cHJlc3Npb25zIGNhbiBiZSBhZGRlZCBsYXRlciwgYnkgZGly ZWN0IGNhbGxzIHRvIFN0b3JlQXR0ckRlZmF1bHQKICAqIGFuZCBTdG9yZVJlbENoZWNrIChzZWUg QWRkUmVsYXRpb25OZXdDb25zdHJhaW50cygpKS4KICAqLwotdm9pZAorc3RhdGljIHZvaWQKIFN0 b3JlQ29uc3RyYWludHMoUmVsYXRpb24gcmVsLCBMaXN0ICpjb29rZWRfY29uc3RyYWludHMsIGJv b2wgaXNfaW50ZXJuYWwpCiB7CiAJaW50CQkJbnVtY2hlY2tzID0gMDsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMKaW5kZXggOWE5MDUzZDMyNTIuLmI3MjRlMmQ3MTUwIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYwpAQCAtMjIyMjcsNiArMjIyMjcsNyBAQCBjcmVhdGVUYWJsZUNvbnN0cmFpbnRz KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKIAlBdHRyTWFwICAgICphdHRt YXA7CiAJQXR0ck51bWJlcglwYXJlbnRfYXR0bm87CiAJaW50CQkJY2NudW07CisJTGlzdAkgICAq Q29uc3RyYWludHMgPSBOSUw7CiAJTGlzdAkgICAqY29va2VkQ29uc3RyYWludHMgPSBOSUw7CiAK IAl0dXBsZURlc2MgPSBSZWxhdGlvbkdldERlc2NyKG1vZGVsUmVsKTsKQEAgLTIyMzE5LDcgKzIy MzIwLDcgQEAgY3JlYXRlVGFibGVDb25zdHJhaW50cyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFi bGVJbmZvICp0YWIsCiAJCWJvb2wJCWNjdmFsaWQgPSBjb25zdHItPmNoZWNrW2NjbnVtXS5jY3Zh bGlkOwogCQlOb2RlCSAgICpjY2Jpbl9ub2RlOwogCQlib29sCQlmb3VuZF93aG9sZV9yb3c7Ci0J CUNvb2tlZENvbnN0cmFpbnQgKmNvb2tlZDsKKwkJQ29uc3RyYWludCAqY29uc3RyOwogCiAJCS8q CiAJCSAqIFBhcnRpdGlvbmVkIHRhYmxlIGNhbiBub3QgaGF2ZSBOTyBJTkhFUklUIGNoZWNrIGNv bnN0cmFpbnQgKHNlZQpAQCAtMjIzNDYsMjIgKzIyMzQ3LDI3IEBAIGNyZWF0ZVRhYmxlQ29uc3Ry YWludHMoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAogCQkJCQkJCSAgIGNj bmFtZSwKIAkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShtb2RlbFJlbCkpKTsKIAot CQljb29rZWQgPSAoQ29va2VkQ29uc3RyYWludCAqKSBwYWxsb2Moc2l6ZW9mKENvb2tlZENvbnN0 cmFpbnQpKTsKLQkJY29va2VkLT5jb250eXBlID0gQ09OU1RSX0NIRUNLOwotCQljb29rZWQtPmNv bm9pZCA9IEludmFsaWRPaWQ7Ci0JCWNvb2tlZC0+bmFtZSA9IGNjbmFtZTsKLQkJY29va2VkLT5h dHRudW0gPSAwOwotCQljb29rZWQtPmV4cHIgPSBjY2Jpbl9ub2RlOwotCQljb29rZWQtPmlzX2Vu Zm9yY2VkID0gY2NlbmZvcmNlZDsKLQkJY29va2VkLT5za2lwX3ZhbGlkYXRpb24gPSAhY2N2YWxp ZDsKLQkJY29va2VkLT5pc19sb2NhbCA9IHRydWU7Ci0JCWNvb2tlZC0+aW5oY291bnQgPSAwOwot CQljb29rZWQtPmlzX25vX2luaGVyaXQgPSBjY25vaW5oZXJpdDsKLQkJY29va2VkQ29uc3RyYWlu dHMgPSBsYXBwZW5kKGNvb2tlZENvbnN0cmFpbnRzLCBjb29rZWQpOworCQljb25zdHIgPSBtYWtl Tm9kZShDb25zdHJhaW50KTsKKwkJY29uc3RyLT5jb250eXBlID0gQ09OU1RSX0NIRUNLOworCQlj b25zdHItPmNvbm5hbWUgPSBwc3RyZHVwKGNjbmFtZSk7CisJCWNvbnN0ci0+ZGVmZXJyYWJsZSA9 IGZhbHNlOworCQljb25zdHItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQljb25zdHItPmlzX2Vu Zm9yY2VkID0gY2NlbmZvcmNlZDsKKwkJY29uc3RyLT5za2lwX3ZhbGlkYXRpb24gPSAhY2N2YWxp ZDsKKwkJY29uc3RyLT5pbml0aWFsbHlfdmFsaWQgPSBjY3ZhbGlkOworCQljb25zdHItPmlzX25v X2luaGVyaXQgPSBjY25vaW5oZXJpdDsKKwkJY29uc3RyLT5yYXdfZXhwciA9IE5VTEw7CisJCWNv bnN0ci0+Y29va2VkX2V4cHIgPSBub2RlVG9TdHJpbmcoY2NiaW5fbm9kZSk7CisJCWNvbnN0ci0+ bG9jYXRpb24gPSAtMTsKKwkJQ29uc3RyYWludHMgPSBsYXBwZW5kKENvbnN0cmFpbnRzLCBjb25z dHIpOwogCX0KIAotCS8qIFN0b3JlIENIRUNLIGNvbnN0cmFpbnRzLiAqLwotCVN0b3JlQ29uc3Ry YWludHMobmV3UmVsLCBjb29rZWRDb25zdHJhaW50cywgdHJ1ZSk7CisJLyogaW5zdGFsbCBhbGwg Q0hFQ0sgY29uc3RyYWludHMuICovCisJY29va2VkQ29uc3RyYWludHMgPSBBZGRSZWxhdGlvbk5l d0NvbnN0cmFpbnRzKG5ld1JlbCwgTklMLCBDb25zdHJhaW50cywKKwkJCQkJCQkJCQkJCSAgZmFs c2UsIHRydWUsIHRydWUsIE5VTEwpOworCisJLyogTWFrZSB0aGUgYWRkaXRpb25hbCBjYXRhbG9n IGNoYW5nZXMgdmlzaWJsZSAqLworCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CiAKIAkvKgog CSAqIG1vZGVsUmVsIGNoZWNrIGNvbnN0cmFpbnQgZXhwcmVzc3Npb24gbWF5IHJlZmVyZW5jZSB0 YWJsZW9pZCwgc28gbGF0ZXIgaW4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaGVh cC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9oZWFwLmgKaW5kZXggYzEzMGJjMGMzOGQuLmRiZDMz OWU5ZGY0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAuaAorKysgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL2hlYXAuaApAQCAtMTE5LDkgKzExOSw2IEBAIGV4dGVybiBMaXN0ICpB ZGRSZWxhdGlvbk5vdE51bGxDb25zdHJhaW50cyhSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJICAg TGlzdCAqY29uc3RyYWludHMsCiAJCQkJCQkJCQkJICAgTGlzdCAqb2xkX25vdG51bGxzKTsKIAot ZXh0ZXJuIHZvaWQgU3RvcmVDb25zdHJhaW50cyhSZWxhdGlvbiByZWwsIExpc3QgKmNvb2tlZF9j b25zdHJhaW50cywKLQkJCQkJCQkgYm9vbCBpc19pbnRlcm5hbCk7Ci0KIGV4dGVybiB2b2lkIFJl bGF0aW9uQ2xlYXJNaXNzaW5nKFJlbGF0aW9uIHJlbCk7CiAKIGV4dGVybiB2b2lkIFN0b3JlQXR0 ck1pc3NpbmdWYWwoUmVsYXRpb24gcmVsLCBBdHRyTnVtYmVyIGF0dG51bSwKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91dAppbmRleCAxY2QzNGZhZTJkNS4u ZjFhNmI0YjFiMjUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0 aW9uX21lcmdlLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9t ZXJnZS5vdXQKQEAgLTQ1LDYgKzQ1LDkgQEAgQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0Ug UEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwgcGFydGl0aW8KIEVSUk9S OiAgcGFydGl0aW9uIHdpdGggbmFtZSAic2FsZXNfZmViMjAyMiIgaXMgYWxyZWFkeSB1c2VkCiBM SU5FIDE6IC4uLmUgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAy MiwgcGFydGl0aW9ucy4uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KKy0tRVJST1IsIHNhbGVzX2Fwcl8yIGFscmVhZHkgZXhp c3RzCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIy MDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19qYW4yMDIyKSBJTlRPIHNhbGVzX2Fwcl8yOworRVJS T1I6ICByZWxhdGlvbiAic2FsZXNfYXByXzIiIGFscmVhZHkgZXhpc3RzCiAtLSBOTyBFUlJPUjog dGVzdCBmb3IgY3VzdG9tIHBhcnRpdGlvbnMgb3JkZXIsIHNvdXJjZSBwYXJ0aXRpb25zIG5vdCBp biB0aGUgc2VhcmNoX3BhdGgKIFNFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hMiwgcHVibGljOwogQUxURVIgVEFCTEUgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNf cmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoCkBAIC01MiwxNiArNTUsMjMgQEAgQUxURVIgVEFCTEUg cGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoCiAg IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX21hcjIwMjIsCiAgIHBhcnRpdGlvbnNfbWVy Z2Vfc2NoZW1hLnNhbGVzX2phbjIwMjIpIElOVE8gc2FsZXNfamFuX2ZlYl9tYXIyMDIyOwogU0VU IHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKLVNFTEVDVCBj Lm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxraW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBw Z19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkKLSAgRlJPTSBwZ19j YXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQotICBXSEVSRSBjLm9p ZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3NhbGVzX3JhbmdlJzo6cmVnY2xhc3MK LSAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQp ID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0 OwotICAgICAgICAgICAgICAgICAgICAgIG9pZCAgICAgICAgICAgICAgICAgICAgICAgfCByZWxr aW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAg ICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gcGFydGl0aW9uc19tZXJnZV9zY2hl bWEyLnNhbGVzX2phbl9mZWJfbWFyMjAyMiB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg Rk9SIFZBTFVFUyBGUk9NICgnMDEtMDEtMjAyMicpIFRPICgnMDQtMDEtMjAyMicpCi0gc2FsZXNf YXByMjAyMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHAgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDQtMDEtMjAyMicpIFRPICgnMDUtMDEt MjAyMicpCi0gc2FsZXNfZGVjMjAyMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMTItMDEtMjAy MScpIFRPICgnMTItMzEtMjAyMScpCi0gc2FsZXNfb3RoZXJzICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgREVGQVVMVAorUFJF UEFSRSBnZXRfcGFydGl0aW9uX2luZm8ocmVnY2xhc3NbXSkgQVMKK1NFTEVDVCAgYy5vaWQ6OnBn X2NhdGFsb2cucmVnY2xhc3MsCisgICAgICAgIGMucmVscGVyc2lzdGVuY2UsCisgICAgICAgIGMu cmVsa2luZCwKKyAgICAgICAgaS5pbmhkZXRhY2hwZW5kaW5nLAorICAgICAgICBwZ19jYXRhbG9n LnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkKK0ZST00gICAgcGdfY2F0YWxvZy5w Z19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKK1dIRVJFICAgYy5vaWQgPSBpLmlu aHJlbGlkIEFORCBpLmluaHBhcmVudCA9IEFOWSgkMSkKK09SREVSIEJZIHBnX2NhdGFsb2cucGdf Z2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywKKyAgICAgICAgIGMu b2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIjsKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9p bmZvKCd7c2FsZXNfcmFuZ2V9Jyk7CisgICAgICAgICAgICAgICAgICAgICAgb2lkICAgICAgICAg ICAgICAgICAgICAgICB8IHJlbHBlcnNpc3RlbmNlIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRp bmcgfCAgICAgICAgICAgICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEy LnNhbGVzX2phbl9mZWJfbWFyMjAyMiB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMS0wMS0yMDIyJykgVE8gKCcwNC0wMS0y MDIyJykKKyBzYWxlc19hcHIyMDIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg cCAgICAgICAgICAgICAgfCBwICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMg RlJPTSAoJzA0LTAxLTIwMjInKSBUTyAoJzA1LTAxLTIwMjInKQorIHNhbGVzX2RlYzIwMjEgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwICAgICAgICAgICAgICB8IHIgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMTItMDEtMjAyMScpIFRPICgn MTItMzEtMjAyMScpCisgc2FsZXNfb3RoZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBERUZB VUxUCiAoNCByb3dzKQogCiBEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOwpAQCAtOTcsMzEgKzEwNywy NSBAQCBTRUxFQ1QgcGdfY2F0YWxvZy5wZ19nZXRfcGFydGtleWRlZignc2FsZXNfcmFuZ2UnOjpy ZWdjbGFzcyk7CiAoMSByb3cpCiAKIC0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6 Ci1TRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVsa2luZCwgaW5oZGV0YWNo cGVuZGluZywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpCi0g IEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKLSAg V0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICdzYWxlc19yYW5nZSc6 OnJlZ2NsYXNzCi0gIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91 bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2Nh dGFsb2cudGV4dDsKLSAgICAgIG9pZCAgICAgIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcg fCAgICAgICAgICAgICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgICAgICAgICAgICAgCi0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIHNhbGVzX2FwcjIwMjIgfCByICAg ICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzA0LTAxLTIwMjInKSBU TyAoJzA1LTAxLTIwMjInKQotIHNhbGVzX2ZlYjIwMjIgfCByICAgICAgIHwgZiAgICAgICAgICAg ICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzAyLTAxLTIwMjInKSBUTyAoJzAzLTAxLTIwMjInKQot IHNhbGVzX2phbjIwMjIgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMg RlJPTSAoJzAxLTAxLTIwMjInKSBUTyAoJzAyLTAxLTIwMjInKQotIHNhbGVzX21hcjIwMjIgfCBy ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzAzLTAxLTIwMjIn KSBUTyAoJzA0LTAxLTIwMjInKQotIHNhbGVzX290aGVycyAgfCByICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IERFRkFVTFQKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNfcmFu Z2V9Jyk7CisgICAgICBvaWQgICAgICB8IHJlbHBlcnNpc3RlbmNlIHwgcmVsa2luZCB8IGluaGRl dGFjaHBlbmRpbmcgfCAgICAgICAgICAgICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgc2FsZXNfYXByMjAyMiB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwNC0wMS0yMDIyJykgVE8gKCcwNS0wMS0y MDIyJykKKyBzYWxlc19mZWIyMDIyIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAg ICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzAyLTAxLTIwMjInKSBUTyAoJzAzLTAxLTIw MjInKQorIHNhbGVzX2phbjIwMjIgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAg ICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDEtMDEtMjAyMicpIFRPICgnMDItMDEtMjAy MicpCisgc2FsZXNfbWFyMjAyMiB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAg ICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMy0wMS0yMDIyJykgVE8gKCcwNC0wMS0yMDIy JykKKyBzYWxlc19vdGhlcnMgIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IERFRkFVTFQKICg1IHJvd3MpCiAKIC0tIGNoZWNrIHNjaGVtYS1xdWFsaWZpZWQg bmFtZSBvZiB0aGUgbmV3IHBhcnRpdGlvbgogQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0Ug UEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwgc2FsZXNfYXByMjAyMikg SU5UTyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyOwogLS0g c2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKLVNFTEVDVCBjLm9pZDo6cGdfY2F0YWxv Zy5yZWdjbGFzcywgYy5yZWxraW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBwZ19jYXRhbG9nLnBnX2dl dF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkKLSAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNz IGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQotICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQg QU5EIGkuaW5ocGFyZW50ID0gJ3NhbGVzX3JhbmdlJzo6cmVnY2xhc3MKLSAgT1JERVIgQlkgcGdf Y2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBj Lm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OwotICAgICAgICAgICAg ICAgICAgICAgIG9pZCAgICAgICAgICAgICAgICAgICAgICAgfCByZWxraW5kIHwgaW5oZGV0YWNo cGVuZGluZyB8ICAgICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAgICAg ICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCi0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9t YXJfYXByMjAyMiB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9N ICgnMDItMDEtMjAyMicpIFRPICgnMDUtMDEtMjAyMicpCi0gc2FsZXNfamFuMjAyMiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg Rk9SIFZBTFVFUyBGUk9NICgnMDEtMDEtMjAyMicpIFRPICgnMDItMDEtMjAyMicpCi0gc2FsZXNf b3RoZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgREVGQVVMVAorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxl c19yYW5nZX0nKTsKKyAgICAgICAgICAgICAgICAgICAgICBvaWQgICAgICAgICAgICAgICAgICAg ICAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAg ICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmVi X21hcl9hcHIyMDIyIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IEZPUiBWQUxVRVMgRlJPTSAoJzAyLTAxLTIwMjInKSBUTyAoJzA1LTAxLTIwMjInKQorIHNh bGVzX2phbjIwMjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwICAgICAgICAg ICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDEt MDEtMjAyMicpIFRPICgnMDItMDEtMjAyMicpCisgc2FsZXNfb3RoZXJzICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAg ICAgICAgICAgfCBERUZBVUxUCiAoMyByb3dzKQogCiBTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMg V0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX2ZlYl9tYXJfYXByMjAyMicgYW5kIHNjaGVtYW5hbWUg PSAncGFydGl0aW9uc19tZXJnZV9zY2hlbWEyJzsKQEAgLTEzMCw1NCArMTM0LDI1IEBAIFNFTEVD VCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfZmViX21hcl9hcHIy MDIyJyBhbmQgc2NoZW1hbmFtCiAgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyIHwgc2FsZXNfZmVi X21hcl9hcHIyMDIyIHwgc2FsZXNfZmViX21hcl9hcHIyMDIyX3NhbGVzX2RhdGVfaWR4IHwgICAg ICAgICAgICB8IENSRUFURSBJTkRFWCBzYWxlc19mZWJfbWFyX2FwcjIwMjJfc2FsZXNfZGF0ZV9p ZHggT04gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiBVU0lO RyBidHJlZSAoc2FsZXNfZGF0ZSkKICgxIHJvdykKIAotU0VMRUNUICogRlJPTSBzYWxlc19yYW5n ZTsKLSBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBz YWxlc19kYXRlIAotLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCi0gICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwg ICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgotICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAg ICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKLSAgICAgICAgICAgICAxMyB8IEdhbmRp ICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCi0gICAgICAgICAgICAgIDIg fCBTbWlybm9mZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgotICAgICAgICAg ICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKLSAg ICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0y MDIyCi0gICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwg MDMtMDgtMjAyMgotICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAg IDI1MCB8IDAzLTExLTIwMjIKLSAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAg ICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCi0gICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAg ICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgotICAgICAgICAgICAgICA0IHwgSXZhbm92 ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKLSAgICAgICAgICAgICAgNSB8 IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCi0gICAgICAgICAg ICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgotICAg ICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIw MjIKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBC WSB0YWJsZW9pZCwgc2FsZXNwZXJzb25faWQ7CisgICAgICAgICAgICAgICAgICAgIHRhYmxlb2lk ICAgICAgICAgICAgICAgICAgICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8 IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgc2FsZXNfamFuMjAyMiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8 ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyBzYWxlc19qYW4yMDIyICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwg ICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorIHNhbGVzX2phbjIwMjIgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAg ICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAgICB8ICAg ICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNf ZmViX21hcl9hcHIyMDIyIHwgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAg ICAgICAgNTAwIHwgMDItMTAtMjAyMgorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19m ZWJfbWFyX2FwcjIwMjIgfCAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAg ICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2Zl Yl9tYXJfYXByMjAyMiB8ICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAg ICAgIDc1MCB8IDA0LTEzLTIwMjIKKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmVi X21hcl9hcHIyMDIyIHwgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAg ICAgMjUwIHwgMDQtMDctMjAyMgorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJf bWFyX2FwcjIwMjIgfCAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAg ICAxNTAgfCAwMi0xMS0yMDIyCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9t YXJfYXByMjAyMiB8ICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAg IDE3NSB8IDAzLTA4LTIwMjIKKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21h cl9hcHIyMDIyIHwgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAg MTg1IHwgMDItMjMtMjAyMgorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFy X2FwcjIwMjIgfCAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAy NTAgfCAwMy0xMS0yMDIyCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJf YXByMjAyMiB8ICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4 MCB8IDA0LTA2LTIwMjIKKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9h cHIyMDIyIHwgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUw IHwgMDMtMTktMjAyMgogKDE0IHJvd3MpCiAKLVNFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsK LSBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxl c19kYXRlIAotLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCi0gICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAg ICAgICAxMDAwIHwgMDEtMzEtMjAyMgotICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAg ICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKLSAgICAgICAgICAgICAxMyB8IEdhbmRpICAg ICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCi0oMyByb3dzKQotCi1TRUxFQ1Qg KiBGUk9NIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjI7Ci0g c2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNf ZGF0ZSAKLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLQotICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAg ICAgIDUwMCB8IDAyLTEwLTIwMjIKLSAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAg fCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCi0gICAgICAgICAgICAgIDggfCBFcmljc3NvbiAg ICAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgotICAgICAgICAgICAgICA3IHwgTGkg ICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKLSAgICAgICAgICAgICAg OSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCi0gICAgICAg ICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgot ICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMw LTIwMjIKLSAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAg fCAwNC0xMy0yMDIyCi0gICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAg ICAgMjUwIHwgMDQtMDctMjAyMgotICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8 ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKLSgxMCByb3dzKQotCi1TRUxFQ1QgKiBGUk9NIHNh bGVzX290aGVyczsKLSBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19h bW91bnQgfCBzYWxlc19kYXRlIAotLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCi0gICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAg ICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgotKDEgcm93KQotCiAtLSBVc2UgaW5k ZXhzY2FuIGZvciB0ZXN0aW5nIGluZGV4ZXMKIFNFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKIFNF TEVDVCAqIEZST00gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAy MiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOwpAQCAtMjI2LDI4ICsyMDEsMjUgQEAg SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCiAtLSBuYW1lCiBBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBNRVJHRSBQQVJUSVRJT05TCiAgIChzYWxlc19qYW4yMDIyLCBzYWxlc19tYXIyMDIy LCBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYS5zYWxlc19vdGhlcnMpIElOVE8gc2FsZXNfb3RoZXJz Owotc2VsZWN0ICogZnJvbSBzYWxlc19vdGhlcnM7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVy cyBPUkRFUiBCWSBzYWxlc3BlcnNvbl9pZDsKICBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29u X25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAogLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICAg IDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgotICAgICAg ICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIK LSAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0w OS0yMDIyCiAgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1 IHwgMDMtMDgtMjAyMgogICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAg ICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAg fCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCiAgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAg ICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAgICAgICAgICAgIDEzIHwgR2Fu ZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKICAgICAgICAgICAgICAx NCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCiAoNyByb3dz KQogCiAtLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgotU0VMRUNUIGMub2lkOjpw Z19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFs b2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQotICBGUk9NIHBnX2NhdGFsb2cu cGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCi0gIFdIRVJFIGMub2lkID0gaS5p bmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcwotICBPUkRF UiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVG QVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7Ci0gICAg ICBvaWQgICAgICB8IHJlbGtpbmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwgICAgICAgICAgICAgICAg ICAgcGdfZ2V0X2V4cHIgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KLSBzYWxlc19hcHIyMDIyIHwgciAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwNC0wMS0yMDIyJykgVE8gKCcwNS0wMS0yMDIyJykK LSBzYWxlc19mZWIyMDIyIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVT IEZST00gKCcwMi0wMS0yMDIyJykgVE8gKCcwMy0wMS0yMDIyJykKLSBzYWxlc19vdGhlcnMgIHwg ciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBERUZBVUxUCitFWEVDVVRFIGdldF9wYXJ0aXRp b25faW5mbygne3NhbGVzX3JhbmdlfScpOworICAgICAgb2lkICAgICAgfCByZWxwZXJzaXN0ZW5j ZSB8IHJlbGtpbmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwgICAgICAgICAgICAgICAgICAgcGdfZ2V0 X2V4cHIgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzX2FwcjIwMjIgfCBwICAgICAgICAgICAg ICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDQtMDEt MjAyMicpIFRPICgnMDUtMDEtMjAyMicpCisgc2FsZXNfZmViMjAyMiB8IHAgICAgICAgICAgICAg IHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMi0wMS0y MDIyJykgVE8gKCcwMy0wMS0yMDIyJykKKyBzYWxlc19vdGhlcnMgIHwgcCAgICAgICAgICAgICAg fCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IERFRkFVTFQKICgzIHJvd3MpCiAKIERST1Ag VEFCTEUgc2FsZXNfcmFuZ2U7CkBAIC01MDMsODkgKzQ3NSwyMyBAQCBJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMKICAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAog ICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCiAgICgxNCwgJ1NtaXRoJywg ICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKLVNFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7Ci0gc2Fs ZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0 ZSAKLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLQotICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAgICAgICAg MTAwMCB8IDAxLTMxLTIwMjIKLSAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAg ICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCi0gICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAg ICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgotICAgICAgICAgICAgICAyIHwgU21pcm5v ZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKLSAgICAgICAgICAgICAgNiB8 IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCi0gICAgICAgICAg ICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgotICAg ICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIw MjIKLSAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAw My0xMS0yMDIyCi0gICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAg MzUwIHwgMDMtMTktMjAyMgotICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAg ICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKLSAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAg ICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCi0gICAgICAgICAgICAgIDQgfCBJdmFub3Yg ICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgotICAgICAgICAgICAgICAzIHwg Rm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKLSAgICAgICAgICAg ICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCi0oMTQg cm93cykKLQotU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOwotIHNhbGVzcGVyc29uX2lkIHwg c2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCi0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KLSAg ICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0y MDIyCi0gICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwg MDQtMDYtMjAyMgotICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAg IDc1MCB8IDA0LTEzLTIwMjIKLSAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAg ICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZS T00gc2FsZXNfYXByMjAyMjsKKyAgICAgIHRhYmxlb2lkICAgICAgIHwgc2FsZXNwZXJzb25faWQg fCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0KKyBzYWxlc19hcHIyMDIyXzAxXzEwIHwgICAgICAgICAgICAg IDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorIHNhbGVz X2FwcjIwMjJfMDFfMTAgfCAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAg ICAgICAzODAgfCAwNC0wNi0yMDIyCisgc2FsZXNfYXByMjAyMl8xMF8yMCB8ICAgICAgICAgICAg ICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyBzYWxl c19hcHIyMDIyXzIwXzMwIHwgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAg ICAgICAyMDAwIHwgMDQtMzAtMjAyMgogKDQgcm93cykKIAotU0VMRUNUICogRlJPTSBzYWxlc19h cHIyMDIyXzAxXzEwOwotIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVz X2Ftb3VudCB8IHNhbGVzX2RhdGUgCi0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAgNSB8IERlZXYgICAg ICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCi0gICAgICAgICAgICAgMTEgfCBU cnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgotKDIgcm93cykKLQot U0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyXzEwXzIwOwotIHNhbGVzcGVyc29uX2lkIHwgc2Fs ZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCi0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KLSAgICAg ICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIy Ci0oMSByb3cpCi0KLVNFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8yMF8zMDsKLSBzYWxlc3Bl cnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAot LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tCi0gICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAw IHwgMDQtMzAtMjAyMgotKDEgcm93KQotCiBBTFRFUiBUQUJMRSBzYWxlc19hcHIyMDIyIE1FUkdF IFBBUlRJVElPTlMgKHNhbGVzX2FwcjIwMjJfMDFfMTAsIHNhbGVzX2FwcjIwMjJfMTBfMjAsIHNh bGVzX2FwcjIwMjJfMjBfMzApIElOVE8gc2FsZXNfYXByX2FsbDsKLVNFTEVDVCAqIEZST00gc2Fs ZXNfcmFuZ2U7Ci0gc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1v dW50IHwgc2FsZXNfZGF0ZSAKLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQotICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAg ICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKLSAgICAgICAgICAgICAxMCB8IEhhbGRl ciAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCi0gICAgICAgICAgICAgMTMg fCBHYW5kaSAgICAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgotICAgICAgICAg ICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKLSAg ICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0y MDIyCi0gICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwg MDItMjMtMjAyMgotICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAg IDE3NSB8IDAzLTA4LTIwMjIKLSAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAg ICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCi0gICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAg ICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgotICAgICAgICAgICAgICA1IHwgRGVldiAg ICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKLSAgICAgICAgICAgICAxMSB8 IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCi0gICAgICAgICAg ICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgotICAg ICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIw MjIKLSAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAw NS0wNC0yMDIyCi0oMTQgcm93cykKLQotU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOwotIHNh bGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2Rh dGUgCi0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAg ICAyNTAgfCAwNC0wNy0yMDIyCi0gICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwg ICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgotICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAg ICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKLSAgICAgICAgICAgICAgMyB8IEZvcmQg ICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCi0oNCByb3dzKQotCi1TRUxF Q1QgKiBGUk9NIHNhbGVzX2Fwcl9hbGw7Ci0gc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9u YW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQotICAgICAgICAgICAgICA1 IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKLSAgICAgICAg ICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCi0g ICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMt MjAyMgotICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8 IDA0LTMwLTIwMjIKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19hcHIy MDIyIE9SREVSIEJZIHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9pZDsKKyAgIHRhYmxlb2lkICAgIHwg c2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNf ZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBzYWxlc19hcHJfYWxsIHwgICAgICAgICAg ICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorIHNh bGVzX2Fwcl9hbGwgfCAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAg ICA3NTAgfCAwNC0xMy0yMDIyCisgc2FsZXNfYXByX2FsbCB8ICAgICAgICAgICAgICA1IHwgRGVl diAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyBzYWxlc19hcHJfYWxs IHwgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQt MDYtMjAyMgogKDQgcm93cykKIAogRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKQEAgLTY2MSwzMCAr NTY3LDI0IEBAIElOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzcGVyc29uX25hbWUsIHNhbGVz X3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpCiAgICgnR2FuZGknLCAgICAnV2Fyc2F3 JywgICAgICAgICAgMTUwLCAnMjAyMi0wMy0wOCcpLAogICAoJ1BsYXRvJywgICAgJ0xpc2Jvbics ICAgICAgICAgIDk1MCwgJzIwMjItMDMtMDUnKTsKIC0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNv bmRpdGlvbnM6Ci1TRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVsa2luZCwg aW5oZGV0YWNocGVuZGluZywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwg Yy5vaWQpCi0gIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVy aXRzIGkKLSAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICdzYWxl c19saXN0Jzo6cmVnY2xhc3MKLSAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJl bHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFz czo6cGdfY2F0YWxvZy50ZXh0OwotICAgICAgb2lkICAgICAgfCByZWxraW5kIHwgaW5oZGV0YWNo cGVuZGluZyB8ICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAgICAgICAg ICAgICAgCi0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBzYWxl c19jZW50cmFsIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIElOICgn V2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykKLSBzYWxlc19lYXN0ICAgIHwgciAgICAgICB8IGYg ICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRp dm9zdG9rJykKLSBzYWxlc19ub3JkICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBG T1IgVkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScpCi0gc2Fs ZXNfd2VzdCAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBJTiAo J0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKQotIHNhbGVzX290aGVycyAgfCByICAgICAg IHwgZiAgICAgICAgICAgICAgICB8IERFRkFVTFQKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZv KCd7c2FsZXNfbGlzdH0nKTsKKyAgICAgIG9pZCAgICAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxr aW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2V4cHIg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzX2NlbnRyYWwgfCBwICAgICAgICAgICAg ICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycs ICdCZXJsaW4nLCAnS3lpdicpCisgc2FsZXNfZWFzdCAgICB8IHAgICAgICAgICAgICAgIHwgciAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhp JywgJ1ZsYWRpdm9zdG9rJykKKyBzYWxlc19ub3JkICAgIHwgcCAgICAgICAgICAgICAgfCByICAg ICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRl cnNidXJnJywgJ0hlbHNpbmtpJykKKyBzYWxlc193ZXN0ICAgIHwgcCAgICAgICAgICAgICAgfCBy ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3 IFlvcmsnLCAnTWFkcmlkJykKKyBzYWxlc19vdGhlcnMgIHwgcCAgICAgICAgICAgICAgfCByICAg ICAgIHwgZiAgICAgICAgICAgICAgICB8IERFRkFVTFQKICg1IHJvd3MpCiAKIEFMVEVSIFRBQkxF IHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfZWFzdCwgc2Fs ZXNfY2VudHJhbCkgSU5UTyBzYWxlc19hbGw7CiAtLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25k aXRpb25zOgotU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQsIGlu aGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMu b2lkKQotICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0 cyBpCi0gIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNf bGlzdCc6OnJlZ2NsYXNzCi0gIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxw YXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6 OnBnX2NhdGFsb2cudGV4dDsKLSAgICAgb2lkICAgICAgfCByZWxraW5kIHwgaW5oZGV0YWNocGVu ZGluZyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBn X2dldF9leHByICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBzYWxlc19hbGwg ICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdMaXNib24n LCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3Rvaycs ICdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKQotIHNhbGVzX25vcmQgICB8IHIgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1cmcn LCAnSGVsc2lua2knKQotIHNhbGVzX290aGVycyB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgREVGQVVMVAorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19saXN0fScpOwor ICAgICBvaWQgICAgICB8IHJlbHBlcnNpc3RlbmNlIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRp bmcgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19n ZXRfZXhwciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBzYWxlc19hbGwgICAgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAn QmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJywgJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lp dicpCisgc2FsZXNfbm9yZCAgIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNp bmtpJykKKyBzYWxlc19vdGhlcnMgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAg ICAgICAgICAgIHwgREVGQVVMVAogKDMgcm93cykKIAogU0VMRUNUICogRlJPTSBzYWxlc19saXN0 OwpAQCAtNzc5LDI1ICs2NzksMTkgQEAgRFJPUCBUQUJMRSB0MTsKIENSRUFURSBURU1QIFRBQkxF IHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOwogQ1JFQVRFIFRFTVAgVEFCTEUgdHBf MF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOwogQ1JFQVRFIFRF TVAgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIp OwotU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBwZ19jYXRhbG9nLnBnX2dldF9l eHByKGMucmVscGFydGJvdW5kLCBjLm9pZCksIGMucmVscGVyc2lzdGVuY2UKLSAgRlJPTSBwZ19j YXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQotICBXSEVSRSBjLm9p ZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3QnOjpyZWdjbGFzcwotICBPUkRFUiBC WSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVM VCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7Ci0gIG9pZCAg IHwgICAgICAgIHBnX2dldF9leHByICAgICAgICAgfCByZWxwZXJzaXN0ZW5jZSAKLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLQotIHRwXzBfMSB8 IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpIHwgdAotIHRwXzFfMiB8IEZPUiBWQUxVRVMgRlJP TSAoMSkgVE8gKDIpIHwgdAorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3t0fScpOworICBv aWQgICB8IHJlbHBlcnNpc3RlbmNlIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcgfCAgICAg ICAgcGdfZ2V0X2V4cHIgICAgICAgICAKKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdHBf MF8xIHwgdCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBW QUxVRVMgRlJPTSAoMCkgVE8gKDEpCisgdHBfMV8yIHwgdCAgICAgICAgICAgICAgfCByICAgICAg IHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpCiAoMiByb3dz KQogCiBBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRP IHRwXzBfMjsKIC0tIFBhcnRpdGlvbiBzaG91bGQgYmUgdGVtcG9yYXJ5LgotU0VMRUNUIGMub2lk OjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJv dW5kLCBjLm9pZCksIGMucmVscGVyc2lzdGVuY2UKLSAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNz IGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQotICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQg QU5EIGkuaW5ocGFyZW50ID0gJ3QnOjpyZWdjbGFzcwotICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBn X2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19j YXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7Ci0gIG9pZCAgIHwgICAgICAgIHBnX2dl dF9leHByICAgICAgICAgfCByZWxwZXJzaXN0ZW5jZSAKLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLQotIHRwXzBfMiB8IEZPUiBWQUxVRVMgRlJP TSAoMCkgVE8gKDIpIHwgdAorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3t0fScpOworICBv aWQgICB8IHJlbHBlcnNpc3RlbmNlIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcgfCAgICAg ICAgcGdfZ2V0X2V4cHIgICAgICAgICAKKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdHBf MF8yIHwgdCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBW QUxVRVMgRlJPTSAoMCkgVE8gKDIpCiAoMSByb3cpCiAKIERST1AgVEFCTEUgdDsKQEAgLTgzOSwx NCArNzMzLDExIEBAIFNFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxwZXJz aXN0ZW5jZSBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYyBXCiAgdCAgIHwgcAogKDEgcm93KQog Ci1TRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIHBnX2NhdGFsb2cucGdfZ2V0X2V4 cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSwgYy5yZWxwZXJzaXN0ZW5jZQotICBGUk9NIHBnX2Nh dGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCi0gIFdIRVJFIGMub2lk ID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAndCc6OnJlZ2NsYXNzCi0gIE9SREVSIEJZ IHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxU JywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKLSAgb2lkICAg fCAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICB8IHJlbHBlcnNpc3RlbmNlIAotLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tCi0gdHBfMF8xIHwg Rk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSkgfCBwCi0gdHBfMV8yIHwgRk9SIFZBTFVFUyBGUk9N ICgxKSBUTyAoMikgfCBwCitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5mbygne3R9Jyk7CisgIG9p ZCAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAg ICBwZ19nZXRfZXhwciAgICAgICAgIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0cF8w XzEgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZB TFVFUyBGUk9NICgwKSBUTyAoMSkKKyB0cF8xXzIgfCBwICAgICAgICAgICAgICB8IHIgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikKICgyIHJvd3Mp CiAKIFNFVCBzZWFyY2hfcGF0aCA9IHBnX3RlbXAsIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBw dWJsaWM7CkBAIC04NjksMTYgKzc2MCwxNCBAQCBTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVn Y2xhc3MsIGMucmVscGVyc2lzdGVuY2UgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMgVwogIHQg ICB8IHQKICgxIHJvdykKIAotU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBwZ19j YXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCksIGMucmVscGVyc2lzdGVu Y2UKLSAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMg aQotICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3QnOjpyZWdj bGFzcwotICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBj Lm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9n LnRleHQ7Ci0gIG9pZCAgIHwgICAgICAgIHBnX2dldF9leHByICAgICAgICAgfCByZWxwZXJzaXN0 ZW5jZSAKLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLQotIHRwXzBfMSB8IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpIHwgdAotIHRwXzFfMiB8 IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpIHwgdAorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2lu Zm8oJ3t0fScpOworICBvaWQgICB8IHJlbHBlcnNpc3RlbmNlIHwgcmVsa2luZCB8IGluaGRldGFj aHBlbmRpbmcgfCAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAKKy0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgdHBfMF8xIHwgdCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpCisgdHBfMV8yIHwgdCAgICAgICAg ICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoMSkg VE8gKDIpCiAoMiByb3dzKQogCitERUFMTE9DQVRFIGdldF9wYXJ0aXRpb25faW5mbzsKIFNFVCBz ZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwZ190ZW1wLCBwdWJsaWM7CiAt LSBDYW4ndCBtZXJnZSB0ZW1wb3JhcnkgcGFydGl0aW9ucyBpbnRvIGEgcGVyc2lzdGVudCBwYXJ0 aXRpb24KIEFMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElO VE8gdHBfMF8yOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX21l cmdlLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwKaW5kZXgg NWJhYmE1NjM5MmYuLjMyMGUxYzNlOGRmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9wYXJ0aXRpb25fbWVyZ2Uuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlv bl9tZXJnZS5zcWwKQEAgLTM5LDYgKzM5LDggQEAgQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVS R0UgUEFSVElUSU9OUyAoc2FsZXNfamFuMjAyMiwgc2FsZXNfbWFyMjAyMikgSU5UTyBzYWwKIEFM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2RlYzIwMjEsIHNh bGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZGVjX2phbl9mZWIyMDIyOwog LS0gRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5 IHVzZWQKIEFMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2Zl YjIwMjIsIHNhbGVzX21hcjIwMjIsIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX2ZlYjIw MjIpIElOVE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOworLS1FUlJPUiwgc2FsZXNfYXByXzIgYWxy ZWFkeSBleGlzdHMKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNh bGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2phbjIwMjIpIElOVE8gc2FsZXNfYXBy XzI7CiAKIC0tIE5PIEVSUk9SOiB0ZXN0IGZvciBjdXN0b20gcGFydGl0aW9ucyBvcmRlciwgc291 cmNlIHBhcnRpdGlvbnMgbm90IGluIHRoZSBzZWFyY2hfcGF0aAogU0VUIHNlYXJjaF9wYXRoID0g cGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLCBwdWJsaWM7CkBAIC00OCwxMCArNTAsMTggQEAgQUxU RVIgVEFCTEUgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElU SU9OUyAoCiAgIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX2phbjIwMjIpIElOVE8gc2Fs ZXNfamFuX2ZlYl9tYXIyMDIyOwogU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9z Y2hlbWEsIHB1YmxpYzsKIAotU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJl bGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0 Ym91bmQsIGMub2lkKQotICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5w Z19pbmhlcml0cyBpCi0gIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQg PSAnc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcwotICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9l eHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9n LnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CitQUkVQQVJFIGdldF9wYXJ0aXRpb25faW5mbyhy ZWdjbGFzc1tdKSBBUworU0VMRUNUICBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywKKyAgICAg ICAgYy5yZWxwZXJzaXN0ZW5jZSwKKyAgICAgICAgYy5yZWxraW5kLAorICAgICAgICBpLmluaGRl dGFjaHBlbmRpbmcsCisgICAgICAgIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91 bmQsIGMub2lkKQorRlJPTSAgICBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdf aW5oZXJpdHMgaQorV0hFUkUgICBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0g QU5ZKCQxKQorT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwg Yy5vaWQpID0gJ0RFRkFVTFQnLAorICAgICAgICAgYy5vaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExB VEUgIkMiOworCitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5mbygne3NhbGVzX3JhbmdlfScpOwog CiBEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOwogCkBAIC04NSwyNiArOTUsMTcgQEAgSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTCiBTRUxFQ1QgcGdfY2F0YWxvZy5wZ19nZXRfcGFydGtleWRl Zignc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcyk7CiAKIC0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNv bmRpdGlvbnM6Ci1TRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVsa2luZCwg aW5oZGV0YWNocGVuZGluZywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwg Yy5vaWQpCi0gIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVy aXRzIGkKLSAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICdzYWxl c19yYW5nZSc6OnJlZ2NsYXNzCi0gIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5y ZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xh c3M6OnBnX2NhdGFsb2cudGV4dDsKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNf cmFuZ2V9Jyk7CiAKIC0tIGNoZWNrIHNjaGVtYS1xdWFsaWZpZWQgbmFtZSBvZiB0aGUgbmV3IHBh cnRpdGlvbgogQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNf ZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwgc2FsZXNfYXByMjAyMikgSU5UTyBwYXJ0aXRpb25zX21l cmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyOwogCiAtLSBzaG93IHBhcnRpdGlvbnMg d2l0aCBjb25kaXRpb25zOgotU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJl bGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0 Ym91bmQsIGMub2lkKQotICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5w Z19pbmhlcml0cyBpCi0gIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQg PSAnc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcwotICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9l eHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9n LnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5mbygn e3NhbGVzX3JhbmdlfScpOwogCiBTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVu YW1lID0gJ3NhbGVzX2ZlYl9tYXJfYXByMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9u c19tZXJnZV9zY2hlbWEyJzsKIAotU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKLVNFTEVDVCAq IEZST00gc2FsZXNfamFuMjAyMjsKLVNFTEVDVCAqIEZST00gcGFydGl0aW9uc19tZXJnZV9zY2hl bWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKLVNFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOwor U0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRh Ymxlb2lkLCBzYWxlc3BlcnNvbl9pZDsKIAogLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdGluZyBp bmRleGVzCiBTRVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CkBAIC0xNDcsMTMgKzE0OCwxMCBAQCBJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKIEFMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1F UkdFIFBBUlRJVElPTlMKICAgKHNhbGVzX2phbjIwMjIsIHNhbGVzX21hcjIwMjIsIHBhcnRpdGlv bnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX290aGVycykgSU5UTyBzYWxlc19vdGhlcnM7CiAKLXNlbGVj dCAqIGZyb20gc2FsZXNfb3RoZXJzOworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnMgT1JERVIg Qlkgc2FsZXNwZXJzb25faWQ7CiAKIC0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6 Ci1TRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVsa2luZCwgaW5oZGV0YWNo cGVuZGluZywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpCi0g IEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKLSAg V0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICdzYWxlc19yYW5nZSc6 OnJlZ2NsYXNzCi0gIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91 bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2Nh dGFsb2cudGV4dDsKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNfcmFuZ2V9Jyk7 CiAKIERST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CiAKQEAgLTMyMywxNyArMzIxLDExIEBAIElOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUwogICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIy LTAxLTA5JyksCiAgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKIAotU0VM RUNUICogRlJPTSBzYWxlc19yYW5nZTsKLVNFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMjsKLVNF TEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8wMV8xMDsKLVNFTEVDVCAqIEZST00gc2FsZXNfYXBy MjAyMl8xMF8yMDsKLVNFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8yMF8zMDsKK1NFTEVDVCB0 YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19hcHIyMDIyOwogCiBBTFRFUiBUQUJMRSBz YWxlc19hcHIyMDIyIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2FwcjIwMjJfMDFfMTAsIHNhbGVz X2FwcjIwMjJfMTBfMjAsIHNhbGVzX2FwcjIwMjJfMjBfMzApIElOVE8gc2FsZXNfYXByX2FsbDsK IAotU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKLVNFTEVDVCAqIEZST00gc2FsZXNfYXByMjAy MjsKLVNFTEVDVCAqIEZST00gc2FsZXNfYXByX2FsbDsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xh c3MsICogRlJPTSBzYWxlc19hcHIyMDIyIE9SREVSIEJZIHRhYmxlb2lkLCBzYWxlc3BlcnNvbl9p ZDsKIAogRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKIApAQCAtNDE1LDE4ICs0MDcsMTIgQEAgSU5T RVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVz X2Ftb3VudCwgc2FsZXNfZGF0ZSkKICAgKCdQbGF0bycsICAgICdMaXNib24nLCAgICAgICAgICA5 NTAsICcyMDIyLTAzLTA1Jyk7CiAKIC0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6 Ci1TRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVsa2luZCwgaW5oZGV0YWNo cGVuZGluZywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpCi0g IEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKLSAg V0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICdzYWxlc19saXN0Jzo6 cmVnY2xhc3MKLSAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3Vu ZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0 YWxvZy50ZXh0OworRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19saXN0fScpOwog CiBBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNh bGVzX2Vhc3QsIHNhbGVzX2NlbnRyYWwpIElOVE8gc2FsZXNfYWxsOwogCiAtLSBzaG93IHBhcnRp dGlvbnMgd2l0aCBjb25kaXRpb25zOgotU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNz LCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5y ZWxwYXJ0Ym91bmQsIGMub2lkKQotICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0 YWxvZy5wZ19pbmhlcml0cyBpCi0gIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhw YXJlbnQgPSAnc2FsZXNfbGlzdCc6OnJlZ2NsYXNzCi0gIE9SREVSIEJZIHBnX2NhdGFsb2cucGdf Z2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2Nh dGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9p bmZvKCd7c2FsZXNfbGlzdH0nKTsKIAogU0VMRUNUICogRlJPTSBzYWxlc19saXN0OwogU0VMRUNU ICogRlJPTSBzYWxlc19ub3JkOwpAQCAtNDY4LDE4ICs0NTQsMTIgQEAgQ1JFQVRFIFRFTVAgVEFC TEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CiBDUkVBVEUgVEVNUCBUQUJMRSB0 cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CiBDUkVBVEUg VEVNUCBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAo Mik7CiAKLVNFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgcGdfY2F0YWxvZy5wZ19n ZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpLCBjLnJlbHBlcnNpc3RlbmNlCi0gIEZST00g cGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKLSAgV0hFUkUg Yy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICd0Jzo6cmVnY2xhc3MKLSAgT1JE RVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RF RkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworRVhF Q1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3t0fScpOwogCiBBTFRFUiBUQUJMRSB0IE1FUkdFIFBB UlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKIAogLS0gUGFydGl0aW9uIHNo b3VsZCBiZSB0ZW1wb3JhcnkuCi1TRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIHBn X2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSwgYy5yZWxwZXJzaXN0 ZW5jZQotICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0 cyBpCi0gIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAndCc6OnJl Z2NsYXNzCi0gIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQs IGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFs b2cudGV4dDsKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7dH0nKTsKIAogRFJPUCBUQUJM RSB0OwogCkBAIC01MTAsMTAgKzQ5MCw4IEBAIENSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9O IE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CiBDUkVBVEUgVEFCTEUgdHBfMV8yIFBB UlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOwogCiBTRUxFQ1QgYy5vaWQ6 OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVscGVyc2lzdGVuY2UgRlJPTSBwZ19jYXRhbG9nLnBn X2NsYXNzIGMgV0hFUkUgYy5vaWQgPSAndCc6OnJlZ2NsYXNzOwotU0VMRUNUIGMub2lkOjpwZ19j YXRhbG9nLnJlZ2NsYXNzLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBj Lm9pZCksIGMucmVscGVyc2lzdGVuY2UKLSAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBn X2NhdGFsb2cucGdfaW5oZXJpdHMgaQotICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGku aW5ocGFyZW50ID0gJ3QnOjpyZWdjbGFzcwotICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9l eHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9n LnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZv KCd7dH0nKTsKIAogU0VUIHNlYXJjaF9wYXRoID0gcGdfdGVtcCwgcGFydGl0aW9uc19tZXJnZV9z Y2hlbWEsIHB1YmxpYzsKIApAQCAtNTM0LDEwICs1MTIsMTAgQEAgQ1JFQVRFIFRBQkxFIHRwXzBf MSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKIENSRUFURSBUQUJM RSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CiAKIFNF TEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxwZXJzaXN0ZW5jZSBGUk9NIHBn X2NhdGFsb2cucGdfY2xhc3MgYyBXSEVSRSBjLm9pZCA9ICd0Jzo6cmVnY2xhc3M7Ci1TRUxFQ1Qg Yy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxw YXJ0Ym91bmQsIGMub2lkKSwgYy5yZWxwZXJzaXN0ZW5jZQotICBGUk9NIHBnX2NhdGFsb2cucGdf Y2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCi0gIFdIRVJFIGMub2lkID0gaS5pbmhy ZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAndCc6OnJlZ2NsYXNzCi0gIE9SREVSIEJZIHBnX2NhdGFs b2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6 OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKworRVhFQ1VURSBnZXRfcGFy dGl0aW9uX2luZm8oJ3t0fScpOworCitERUFMTE9DQVRFIGdldF9wYXJ0aXRpb25faW5mbzsKIAog U0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHBnX3RlbXAsIHB1Ymxp YzsKIAotLSAKMi4zNC4xCgo= --00000000000032f5380637bfcbfe--