Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1jIvEk-0001dx-6b for pgadmin-hackers@arkaria.postgresql.org; Mon, 30 Mar 2020 14:17:58 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1jIvEi-0000Bn-OZ for pgadmin-hackers@arkaria.postgresql.org; Mon, 30 Mar 2020 14:17:56 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jIvEi-0000BT-05 for pgadmin-hackers@lists.postgresql.org; Mon, 30 Mar 2020 14:17:56 +0000 Received: from mail-ed1-x544.google.com ([2a00:1450:4864:20::544]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1jIvEd-0006Be-IM for pgadmin-hackers@postgresql.org; Mon, 30 Mar 2020 14:17:54 +0000 Received: by mail-ed1-x544.google.com with SMTP id bd14so20734532edb.10 for ; Mon, 30 Mar 2020 07:17:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=hyxGMFy6oEY0q1jJPBg2RbsDHl5ws+0Pi5PNOHhl17s=; b=fOInoi3BVSTfe0eVCTagRPMFlKPkryDZBHtDZDsJWVSlRC51EyoKlyI095AOBNhPWs mFS4KVzjKGkIxhrjot3Ab5Cb5GcrbdB3iE/AMlM6NaWuW73rNnIgyoaIG5lDlLo+Cm/W uIIhNA3EjAVICZ5EP85HBrdirLTle2FCKt7VsRlicfuyxI2sYLaNh1LwTVplqxEuwspS BkEo1G1S2oN8re8TplECPfJSLu5DM0KKL6QEA4Dl4TvKN2XdKv3BYKGZfjstUwD2Ap9V ZwvDerpO3k2K2ZdwoI64ftd0yU+DpemoR7uGlq8PcPx44Xes+DQcRXTqTq9sgszHPHFg KiVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=hyxGMFy6oEY0q1jJPBg2RbsDHl5ws+0Pi5PNOHhl17s=; b=pqdkazQk0Hm5FoxTrlJtUZnNxrIve9IAl+tu88kmEoavH3WeWqiuhHmBlr1hn9Qes1 mmfZqX9nMyxdSDm85qikLnmNeO/MXx5gO5/nC1Pcwj5rHIsl9wmw+wVuIVq9pR3DYKKF khA6JGd19vghjhcy9BdIxaKRd7QOIKbPIaJe4eOXnIA3YjbgLII5UUHT80qWWkgEZM6N euolt0tw9W4CJ/SCrD9aYexHRfgf5VAzv1dAdytGcSCr99RCqg1vYbgpvCRZOxgLdjgn 9vlLMI8crKpQwxTccOhHfQmd27wfMBZZmxooxaftwjxeZHeEafgL8/dlPLFBUz7LIoHF bY7w== X-Gm-Message-State: ANhLgQ3SSiw4SgWBxqQ2cCgzFX5u87LrimCtXHNzWKB+6uJT+OdaiKdQ kflXqWUDmotdYQjrm3MNrhjUmkrRR4xVaasx7gFyxBPZ9kojPIV/TIKH0PHp5uGGR1qzcX9qMEa lqQRJ8oUjPr/9vZRsnD7BGAF91HOBY4Yr5QBBKhDjwHTGDxO2+5AsU626MFNqJhoWU/ziXO8yCs hQWR6G6J05jIJ3Q4IYo79Va6SLitwasW6bctD7rd+C+rUgvEmBUYevyx0i X-Google-Smtp-Source: ADFU+vsj/rqWifkjrCMPHrBB3D/XfWdhQg36RimTgICAYds2bDnQ4pjHc1xWx/1+ZZ/fCZYuoOXP58zkq+deeZ06Jz4= X-Received: by 2002:a50:cb84:: with SMTP id k4mr12039331edi.89.1585577869710; Mon, 30 Mar 2020 07:17:49 -0700 (PDT) MIME-Version: 1.0 From: Aditya Toshniwal Date: Mon, 30 Mar 2020 19:47:13 +0530 Message-ID: Subject: [pgAdmin][RM5181] Add support for parameters toast_tuple_target and parallel_workers of table To: pgadmin-hackers Content-Type: multipart/mixed; boundary="000000000000b06d6f05a2131d6a" X-CLOUD-SEC-AV-Info: edb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000b06d6f05a2131d6a Content-Type: multipart/alternative; boundary="000000000000b06d6d05a2131d68" --000000000000b06d6d05a2131d68 Content-Type: text/plain; charset="UTF-8" Hi Hackers, Attached is a patch to add support for parameters toast_tuple_target (PG v11+) and parallel_workers(PG 9.6+) of table. Refer - https://www.postgresql.org/docs/11/sql-createtable.html#SQL-CREATETABLE-STORAGE-PARAMETERS . Both the parameters are added in the advanced tab of table dialog. The patch also fixes a related issue - RM5180, where autovacuum_enabled parameter is added automatically in the RE-SQL when table has been created with WITH parameter. Please review. -- Thanks and Regards, Aditya Toshniwal pgAdmin Hacker | Sr. Software Engineer | EnterpriseDB India | Pune "Don't Complain about Heat, Plant a TREE" --000000000000b06d6d05a2131d68 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Hackers,

<= font face=3D"verdana, sans-serif">Attached is a=C2=A0patch to add support f= or parameters toast_tuple_target (PG v11+) and parallel_workers(PG 9.6+) of= table. Refer -=C2=A0https://www.pos= tgresql.org/docs/11/sql-createtable.html#SQL-CREATETABLE-STORAGE-PARAMETERS= .

= Both the parameters are added in the adv= anced tab of table dialog.

The patch also fi= xes a related issue - RM5180, where=C2=A0autovacuum_enabled parameter is ad= ded automatically in the RE-SQL when table has been created with WITH param= eter.

= Please review.

--
<= div dir=3D"ltr">Thanks and Regards,
= Aditya Toshniwal
pgAdmin Hacker | Sr. Software Engineer |=C2=A0EnterpriseDB Ind= ia |=C2=A0Pune=
= "Don't Complain about Heat, Plant a TREE"
<= /div>
--000000000000b06d6d05a2131d68-- --000000000000b06d6f05a2131d6a Content-Type: application/octet-stream; name="RM5181_5180.patch" Content-Disposition: attachment; filename="RM5181_5180.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k8ek33na0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9zdGF0aWMvanMvdGFibGUuanMgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvc3Rh dGljL2pzL3RhYmxlLmpzCmluZGV4IDYxNzYxNzk0Zi4uZjFkZDI3ZGM1IDEwMDY0NAotLS0gYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvc3RhdGljL2pzL3RhYmxlLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9zdGF0aWMvanMvdGFi bGUuanMKQEAgLTI5MSw2ICsyOTEsOCBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50YWJsZScsIFsK ICAgICAgICAgICB0cmlnZ2VyY291bnQ6IHVuZGVmaW5lZCwKICAgICAgICAgICByZWxwZXJzaXN0 ZW5jZTogdW5kZWZpbmVkLAogICAgICAgICAgIGZpbGxmYWN0b3I6IHVuZGVmaW5lZCwKKyAgICAg ICAgICB0b2FzdF90dXBsZV90YXJnZXQ6IHVuZGVmaW5lZCwKKyAgICAgICAgICBwYXJhbGxlbF93 b3JrZXJzOiB1bmRlZmluZWQsCiAgICAgICAgICAgcmVsb2Z0eXBlOiB1bmRlZmluZWQsCiAgICAg ICAgICAgdHlwbmFtZTogdW5kZWZpbmVkLAogICAgICAgICAgIGxhYmVsczogdW5kZWZpbmVkLApA QCAtNzc5LDYgKzc4MSwyNiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50YWJsZScsIFsKICAgICAg ICAgICAgIHJldHVybiBtLmluU2NoZW1hKCk7CiAgICAgICAgICAgfSwKICAgICAgICAgfSx7Cisg ICAgICAgICAgaWQ6ICd0b2FzdF90dXBsZV90YXJnZXQnLCBsYWJlbDogZ2V0dGV4dCgnVG9hc3Qg dHVwbGUgdGFyZ2V0JyksIHR5cGU6ICdpbnQnLAorICAgICAgICAgIG1vZGU6IFsnY3JlYXRlJywg J2VkaXQnXSwgbWluOiAxMjgsIG1pbl92ZXJzaW9uOiAxMTAwMDAsCisgICAgICAgICAgZ3JvdXA6 IGdldHRleHQoJ2FkdmFuY2VkJyksCisgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsK KyAgICAgICAgICAgIGlmKG0uZ2V0KCdpc19wYXJ0aXRpb25lZCcpKSB7CisgICAgICAgICAgICAg IHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG0uaW5TY2hl bWEoKTsKKyAgICAgICAgICB9LAorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3BhcmFsbGVs X3dvcmtlcnMnLCBsYWJlbDogZ2V0dGV4dCgnUGFyYWxsZWwgd29ya2VycycpLCB0eXBlOiAnaW50 JywKKyAgICAgICAgICBtb2RlOiBbJ2NyZWF0ZScsICdlZGl0J10sIGdyb3VwOiBnZXR0ZXh0KCdh ZHZhbmNlZCcpLCBtaW5fdmVyc2lvbjogOTA2MDAsCisgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0 aW9uKG0pIHsKKyAgICAgICAgICAgIGlmKG0uZ2V0KCdpc19wYXJ0aXRpb25lZCcpKSB7CisgICAg ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJu IG0uaW5TY2hlbWEoKTsKKyAgICAgICAgICB9LAorICAgICAgICB9LAorICAgICAgICB7CiAgICAg ICAgICAgaWQ6ICdyZWxoYXNvaWRzJywgbGFiZWw6IGdldHRleHQoJ0hhcyBPSURzPycpLCBjZWxs OiAnc3dpdGNoJywKICAgICAgICAgICB0eXBlOiAnc3dpdGNoJywgbW9kZTogWydwcm9wZXJ0aWVz JywgJ2NyZWF0ZScsICdlZGl0J10sCiAgICAgICAgICAgZ3JvdXA6IGdldHRleHQoJ2FkdmFuY2Vk JyksCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlcy9zcWwvMTBfcGx1cy9j cmVhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZXMvc3FsLzEwX3BsdXMvY3JlYXRl LnNxbAppbmRleCA0NzhlNmQ3NTIuLmRhZmM4N2FhMiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rl bXBsYXRlcy90YWJsZXMvc3FsLzEwX3BsdXMvY3JlYXRlLnNxbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVt cGxhdGVzL3RhYmxlcy9zcWwvMTBfcGx1cy9jcmVhdGUuc3FsCkBAIC03Nyw3ICs3Nyw4IEBAIENB Q0hFIHt7Yy5zZXFjYWNoZXxpbnR9fSB7JSBlbmRpZiAlfQogeyUgZW5kaWYgJX0KIFdJVEggKAog ICAgIE9JRFMgPSB7JSBpZiBkYXRhLnJlbGhhc29pZHMgJX1UUlVFeyUgZWxzZSAlfUZBTFNFeyUg ZW5kaWYgJX17JSBpZiBkYXRhLmZpbGxmYWN0b3IgJX0sCi0gICAgRklMTEZBQ1RPUiA9IHt7IGRh dGEuZmlsbGZhY3RvciB9fXslIGVuZGlmICV9eyUgaWYgZGF0YS5hdXRvdmFjdXVtX2N1c3RvbSAl fSwKKyAgICBGSUxMRkFDVE9SID0ge3sgZGF0YS5maWxsZmFjdG9yIH19eyUgZW5kaWYgJX17JSBp ZiBkYXRhLnBhcmFsbGVsX3dvcmtlcnMgaXMgZGVmaW5lZCBhbmQgZGF0YS5wYXJhbGxlbF93b3Jr ZXJzICE9ICcnIGFuZCBkYXRhLnBhcmFsbGVsX3dvcmtlcnMgIT0gTm9uZSAlfSwKKyAgICBwYXJh bGxlbF93b3JrZXJzID0ge3sgZGF0YS5wYXJhbGxlbF93b3JrZXJzIH19eyUgZW5kaWYgJX17JSBp ZiBkYXRhLmF1dG92YWN1dW1fY3VzdG9tICV9LAogICAgIGF1dG92YWN1dW1fZW5hYmxlZCA9IHsl IGlmIGRhdGEuYXV0b3ZhY3V1bV9lbmFibGVkICV9VFJVRXslIGVsc2UgJX1GQUxTRXslIGVuZGlm ICV9eyUgZW5kaWYgJX17JSBpZiBkYXRhLnRvYXN0X2F1dG92YWN1dW0gJX0sCiAgICAgdG9hc3Qu YXV0b3ZhY3V1bV9lbmFibGVkID0geyUgaWYgZGF0YS50b2FzdF9hdXRvdmFjdXVtX2VuYWJsZWQg JX1UUlVFeyUgZWxzZSAlfUZBTFNFeyUgZW5kaWYgJX0KIHslIGVuZGlmICV9eyUgaWYgZGF0YS5h dXRvdmFjdXVtX2VuYWJsZWQgYW5kIGRhdGEudmFjdXVtX3RhYmxlfGxlbmd0aCA+IDAgJX0KZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGVzL3NxbC8xMF9wbHVzL3Byb3BlcnRp ZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZXMvc3FsLzEwX3BsdXMvcHJvcGVydGll cy5zcWwKaW5kZXggZTliYjIyODI3Li4zZDMxZmU2MGUgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90 ZW1wbGF0ZXMvdGFibGVzL3NxbC8xMF9wbHVzL3Byb3BlcnRpZXMuc3FsCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy90ZW1wbGF0ZXMvdGFibGVzL3NxbC8xMF9wbHVzL3Byb3BlcnRpZXMuc3FsCkBAIC0yNyw2ICsy Nyw3IEBAIFNFTEVDVCByZWwub2lkLCByZWwucmVsbmFtZSBBUyBuYW1lLCByZWwucmVsdGFibGVz cGFjZSBBUyBzcGNvaWQscmVsLnJlbGFjbCBBUyByCiAJCVdIRVJFIGkuaW5ocmVsaWQgPSByZWwu b2lkKSBBUyBpbmhlcml0ZWRfdGFibGVzX2NudCwKIAkoQ0FTRSBXSEVOIHJlbC5yZWxwZXJzaXN0 ZW5jZSA9ICd1JyBUSEVOIHRydWUgRUxTRSBmYWxzZSBFTkQpIEFTIHJlbHBlcnNpc3RlbmNlLAog CXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnZmls bGZhY3Rvcj0oWzAtOV0qKScpIEFTIGZpbGxmYWN0b3IsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0 cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdwYXJhbGxlbF93b3JrZXJzPShbMC05XSop JykgQVMgcGFyYWxsZWxfd29ya2VycywKIAkoQ0FTRSBXSEVOIChzdWJzdHJpbmcoYXJyYXlfdG9f c3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fZW5hYmxlZD0oW2Et enwwLTldKiknKSA9ICd0cnVlJykKIAkgIFRIRU4gdHJ1ZSBFTFNFIGZhbHNlIEVORCkgQVMgYXV0 b3ZhY3V1bV9lbmFibGVkLAogCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlv bnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkPShbMC05XSopJykgQVMg YXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkLApAQCAtNTYsNyArNTcsNyBAQCBTRUxFQ1QgcmVs Lm9pZCwgcmVsLnJlbG5hbWUgQVMgbmFtZSwgcmVsLnJlbHRhYmxlc3BhY2UgQVMgc3Bjb2lkLHJl bC5yZWxhY2wgQVMgcgogCXR5cC50eXByZWxpZCBBUyB0eXBvaWQsCiAJKENBU0UgV0hFTiByZWwu cmVsdG9hc3RyZWxpZCA9IDAgVEhFTiBmYWxzZSBFTFNFIHRydWUgRU5EKSBBUyBoYXN0b2FzdHRh YmxlLAogICAgIC0tIEFkZGVkIGZvciBwZ0FkbWluNAotCShDQVNFIFdIRU4gYXJyYXlfbGVuZ3Ro KHJlbC5yZWxvcHRpb25zLCAxKSA+IDAgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyBhdXRv dmFjdXVtX2N1c3RvbSwKKwkoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIGxp a2UgJyVhdXRvdmFjdXVtJScpIEFTIGF1dG92YWN1dW1fY3VzdG9tLAogCShDQVNFIFdIRU4gYXJy YXlfbGVuZ3RoKHRzdC5yZWxvcHRpb25zLCAxKSA+IDAgQU5EIHJlbC5yZWx0b2FzdHJlbGlkICE9 IDAgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyB0b2FzdF9hdXRvdmFjdXVtLAogCiAJKFNF TEVDVCBhcnJheV9hZ2cocHJvdmlkZXIgfHwgJz0nIHx8IGxhYmVsKSBGUk9NIHBnX3NlY2xhYmVs cyBzbDEgV0hFUkUgc2wxLm9iam9pZD1yZWwub2lkIEFORCBzbDEub2Jqc3ViaWQ9MCkgQVMgc2Vj bGFiZWxzLApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZXMvc3FsLzExX3Bs dXMvY3JlYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGVzL3NxbC8xMV9wbHVzL2Ny ZWF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5jYWVjOGY1MjAK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlcy9zcWwvMTFfcGx1 cy9jcmVhdGUuc3FsCkBAIC0wLDAgKzEsMTg3IEBACit7JSBpbXBvcnQgJ21hY3Jvcy9zY2hlbWFz L3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VDTEFCRUwgJX0KK3slIGltcG9ydCAnbWFjcm9zL3NjaGVt YXMvcHJpdmlsZWdlLm1hY3JvcycgYXMgUFJJVklMRUdFICV9Cit7JSBpbXBvcnQgJ21hY3Jvcy92 YXJpYWJsZS5tYWNyb3MnIGFzIFZBUklBQkxFICV9Cit7JSBpbXBvcnQgJ2NvbHVtbnMvbWFjcm9z L3NlY3VyaXR5Lm1hY3JvcycgYXMgQ09MVU1OX1NFQ0xBQkVMICV9Cit7JSBpbXBvcnQgJ2NvbHVt bnMvbWFjcm9zL3ByaXZpbGVnZS5tYWNyb3MnIGFzIENPTFVNTl9QUklWSUxFR0UgJX0KK3slIGlt cG9ydCAndGFibGVzL3NxbC9tYWNyb3MvY29uc3RyYWludHMubWFjcm8nIGFzIENPTlNUUkFJTlRT ICV9Cit7JSBpbXBvcnQgJ3R5cGVzL21hY3Jvcy9nZXRfZnVsbF90eXBlX3NxbF9mb3JtYXQubWFj cm9zJyBhcyBHRVRfVFlQRSAlfQoreyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09I30KK3sjPT09PT09IE1BSU4gVEFCTEUgVEVNUExBVEUgU1RBUlRTIEhFUkUgPT09 PT09I30KK3sjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSN9Cit7 IworIElmIHVzZXIgaGFzIG5vdCBwcm92aWRlZCBhbnkgZGV0YWlscyBidXQgb25seSBuYW1lIHRo ZW4KKyBhZGQgZW1wdHkgYnJhY2tldCB3aXRoIHRhYmxlIG5hbWUKKyN9Cit7JSBzZXQgZW1wdHlf YnJhY2tldCA9ICIiJX0KK3slIGlmIGRhdGEuY29sbF9pbmhlcml0c3xsZW5ndGggPT0gMCBhbmQg IGRhdGEuY29sdW1uc3xsZW5ndGggPT0gMCBhbmQgbm90IGRhdGEudHlwbmFtZSBhbmQgbm90IGRh dGEubGlrZV9yZWxhdGlvbiBhbmQgZGF0YS5wcmltYXJ5X2tleXxsZW5ndGggPT0gMCBhbmQgZGF0 YS51bmlxdWVfY29uc3RyYWludHxsZW5ndGggPT0gMCBhbmQgZGF0YS5mb3JlaWduX2tleXxsZW5n dGggPT0gMCBhbmQgZGF0YS5jaGVja19jb25zdHJhaW50fGxlbmd0aCA9PSAwIGFuZCBkYXRhLmV4 Y2x1ZGVfY29uc3RyYWludHxsZW5ndGggPT0gMCAlfQoreyUgc2V0IGVtcHR5X2JyYWNrZXQgPSAi XG4oXG4pIiV9Cit7JSBlbmRpZiAlfQorQ1JFQVRFIHslIGlmIGRhdGEucmVscGVyc2lzdGVuY2Ug JX1VTkxPR0dFRCB7JSBlbmRpZiAlfVRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBk YXRhLm5hbWUpfX17e2VtcHR5X2JyYWNrZXR9fQoreyUgaWYgZGF0YS50eXBuYW1lICV9CisgICAg T0Yge3sgZGF0YS50eXBuYW1lIH19Cit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5saWtlX3JlbGF0 aW9uIG9yIGRhdGEuY29sbF9pbmhlcml0cyBvciBkYXRhLmNvbHVtbnN8bGVuZ3RoID4gMCBvciBk YXRhLnByaW1hcnlfa2V5fGxlbmd0aCA+IDAgb3IgZGF0YS51bmlxdWVfY29uc3RyYWludHxsZW5n dGggPiAwIG9yIGRhdGEuZm9yZWlnbl9rZXl8bGVuZ3RoID4gMCBvciBkYXRhLmNoZWNrX2NvbnN0 cmFpbnR8bGVuZ3RoID4gMCBvciBkYXRhLmV4Y2x1ZGVfY29uc3RyYWludHxsZW5ndGggPiAwICV9 CisoCit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5saWtlX3JlbGF0aW9uICV9CisgICAgTElLRSB7 eyBkYXRhLmxpa2VfcmVsYXRpb24gfX17JSBpZiBkYXRhLmxpa2VfZGVmYXVsdF92YWx1ZSAlfQor CisgICAgICAgIElOQ0xVRElORyBERUZBVUxUU3slIGVuZGlmICV9eyUgaWYgZGF0YS5saWtlX2Nv bnN0cmFpbnRzICV9CisKKyAgICAgICAgSU5DTFVESU5HIENPTlNUUkFJTlRTeyUgZW5kaWYgJX17 JSBpZiBkYXRhLmxpa2VfaW5kZXhlcyAlfQorCisgICAgICAgIElOQ0xVRElORyBJTkRFWEVTeyUg ZW5kaWYgJX17JSBpZiBkYXRhLmxpa2Vfc3RvcmFnZSAlfQorCisgICAgICAgIElOQ0xVRElORyBT VE9SQUdFeyUgZW5kaWYgJX17JSBpZiBkYXRhLmxpa2VfY29tbWVudHMgJX0KKworICAgICAgICBJ TkNMVURJTkcgQ09NTUVOVFN7JSBlbmRpZiAlfXslIGlmIGRhdGEuY29sdW1uc3xsZW5ndGggPiAw ICV9LAoreyUgZW5kaWYgJX0KKworeyUgZW5kaWYgJX0KK3sjIyMgQWRkIGNvbHVtbnMgIyMjfQor eyUgaWYgZGF0YS5jb2x1bW5zIGFuZCBkYXRhLmNvbHVtbnN8bGVuZ3RoID4gMCAlfQoreyUgZm9y IGMgaW4gZGF0YS5jb2x1bW5zICV9Cit7JSBpZiBjLm5hbWUgYW5kIGMuY2x0eXBlICV9CisgICAg eyUgaWYgYy5pbmhlcml0ZWRmcm9tdGFibGUgJX0tLSBJbmhlcml0ZWQgZnJvbSB0YWJsZSB7e2Mu aW5oZXJpdGVkZnJvbXRhYmxlfX06IHslIGVsaWYgYy5pbmhlcml0ZWRmcm9tdHlwZSAlfS0tIElu aGVyaXRlZCBmcm9tIHR5cGUge3tjLmluaGVyaXRlZGZyb210eXBlfX06IHslIGVuZGlmICV9e3tj b25ufHF0SWRlbnQoYy5uYW1lKX19IHslIGlmIGlzX3NxbCAlfXt7Yy5kaXNwbGF5dHlwbmFtZX19 eyUgZWxzZSAlfXt7IEdFVF9UWVBFLkNSRUFURV9UWVBFX1NRTChjb25uLCBjLmNsdHlwZSwgYy5h dHRsZW4sIGMuYXR0cHJlY2lzaW9uLCBjLmhhc1NxckJyYWNrZXQpIH19eyUgZW5kaWYgJX17JSBp ZiBjLmNvbGxzcGNuYW1lICV9IENPTExBVEUge3tjLmNvbGxzcGNuYW1lfX17JSBlbmRpZiAlfXsl IGlmIGMuYXR0bm90bnVsbCAlfSBOT1QgTlVMTHslIGVuZGlmICV9eyUgaWYgYy5kZWZ2YWwgaXMg ZGVmaW5lZCBhbmQgYy5kZWZ2YWwgaXMgbm90IG5vbmUgYW5kIGMuZGVmdmFsICE9ICcnICV9IERF RkFVTFQge3tjLmRlZnZhbH19eyUgZW5kaWYgJX0KK3slIGlmIGMuY29sY29uc3R5cGUgPT0gJ2kn IGFuZCBjLmF0dGlkZW50aXR5IGFuZCBjLmF0dGlkZW50aXR5ICE9ICcnICV9Cit7JSBpZiBjLmF0 dGlkZW50aXR5ID09ICdhJyAlfSBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZeyUgZWxpZiBj LmF0dGlkZW50aXR5ID09ICdkJyAlfSBHRU5FUkFURUQgQlkgREVGQVVMVCBBUyBJREVOVElUWXsl IGVuZGlmICV9Cit7JSBpZiBjLnNlcWluY3JlbWVudCBvciBjLnNlcWN5Y2xlIG9yIGMuc2VxaW5j cmVtZW50IG9yIGMuc2Vxc3RhcnQgb3IgYy5zZXFtaW4gb3IgYy5zZXFtYXggb3IgYy5zZXFjYWNo ZSAlfSAoIHslIGVuZGlmICV9Cit7JSBpZiBjLnNlcWN5Y2xlIGlzIGRlZmluZWQgYW5kIGMuc2Vx Y3ljbGUgJX0KK0NZQ0xFIHslIGVuZGlmICV9eyUgaWYgYy5zZXFpbmNyZW1lbnQgaXMgZGVmaW5l ZCBhbmQgYy5zZXFpbmNyZW1lbnR8aW50KC0xKSA+IC0xICV9CitJTkNSRU1FTlQge3tjLnNlcWlu Y3JlbWVudHxpbnR9fSB7JSBlbmRpZiAlfXslIGlmIGMuc2Vxc3RhcnQgaXMgZGVmaW5lZCBhbmQg Yy5zZXFzdGFydHxpbnQoLTEpID4gLTElfQorU1RBUlQge3tjLnNlcXN0YXJ0fGludH19IHslIGVu ZGlmICV9eyUgaWYgYy5zZXFtaW4gaXMgZGVmaW5lZCBhbmQgYy5zZXFtaW58aW50KC0xKSA+IC0x JX0KK01JTlZBTFVFIHt7Yy5zZXFtaW58aW50fX0geyUgZW5kaWYgJX17JSBpZiBjLnNlcW1heCBp cyBkZWZpbmVkIGFuZCBjLnNlcW1heHxpbnQoLTEpID4gLTElfQorTUFYVkFMVUUge3tjLnNlcW1h eHxpbnR9fSB7JSBlbmRpZiAlfXslIGlmIGMuc2VxY2FjaGUgaXMgZGVmaW5lZCBhbmQgYy5zZXFj YWNoZXxpbnQoLTEpID4gLTElfQorQ0FDSEUge3tjLnNlcWNhY2hlfGludH19IHslIGVuZGlmICV9 Cit7JSBpZiBjLnNlcWluY3JlbWVudCBvciBjLnNlcWN5Y2xlIG9yIGMuc2VxaW5jcmVtZW50IG9y IGMuc2Vxc3RhcnQgb3IgYy5zZXFtaW4gb3IgYy5zZXFtYXggb3IgYy5zZXFjYWNoZSAlfSl7JSBl bmRpZiAlfQoreyUgZW5kaWYgJX0KK3slIGlmIG5vdCBsb29wLmxhc3QgJX0sCit7JSBlbmRpZiAl fQoreyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3sjIE1hY3JvIHRvIHJl bmRlciBmb3IgY29uc3RyYWludHMgI30KK3slIGlmIGRhdGEucHJpbWFyeV9rZXl8bGVuZ3RoID4g MCAlfXslIGlmIGRhdGEuY29sdW1uc3xsZW5ndGggPiAwICV9LHslIGVuZGlmICV9Cit7e0NPTlNU UkFJTlRTLlBSSU1BUllfS0VZKGNvbm4sIGRhdGEucHJpbWFyeV9rZXlbMF0pfX17JSBlbmRpZiAl fXslIGlmIGRhdGEudW5pcXVlX2NvbnN0cmFpbnR8bGVuZ3RoID4gMCAlfXslIGlmIGRhdGEuY29s dW1uc3xsZW5ndGggPiAwIG9yIGRhdGEucHJpbWFyeV9rZXl8bGVuZ3RoID4gMCAlfSx7JSBlbmRp ZiAlfQore3tDT05TVFJBSU5UUy5VTklRVUUoY29ubiwgZGF0YS51bmlxdWVfY29uc3RyYWludCl9 fXslIGVuZGlmICV9eyUgaWYgZGF0YS5mb3JlaWduX2tleXxsZW5ndGggPiAwICV9eyUgaWYgZGF0 YS5jb2x1bW5zfGxlbmd0aCA+IDAgb3IgZGF0YS5wcmltYXJ5X2tleXxsZW5ndGggPiAwIG9yIGRh dGEudW5pcXVlX2NvbnN0cmFpbnR8bGVuZ3RoID4gMCAlfSx7JSBlbmRpZiAlfQore3tDT05TVFJB SU5UUy5GT1JFSUdOX0tFWShjb25uLCBkYXRhLmZvcmVpZ25fa2V5KX19eyUgZW5kaWYgJX17JSBp ZiBkYXRhLmNoZWNrX2NvbnN0cmFpbnR8bGVuZ3RoID4gMCAlfXslIGlmIGRhdGEuY29sdW1uc3xs ZW5ndGggPiAwIG9yIGRhdGEucHJpbWFyeV9rZXl8bGVuZ3RoID4gMCBvciBkYXRhLnVuaXF1ZV9j b25zdHJhaW50fGxlbmd0aCA+IDAgb3IgZGF0YS5mb3JlaWduX2tleXxsZW5ndGggPiAwICV9LHsl IGVuZGlmICV9Cit7e0NPTlNUUkFJTlRTLkNIRUNLKGNvbm4sIGRhdGEuY2hlY2tfY29uc3RyYWlu dCl9fXslIGVuZGlmICV9eyUgaWYgZGF0YS5leGNsdWRlX2NvbnN0cmFpbnR8bGVuZ3RoID4gMCAl fXslIGlmIGRhdGEuY29sdW1uc3xsZW5ndGggPiAwIG9yIGRhdGEucHJpbWFyeV9rZXl8bGVuZ3Ro ID4gMCBvciBkYXRhLnVuaXF1ZV9jb25zdHJhaW50fGxlbmd0aCA+IDAgb3IgZGF0YS5mb3JlaWdu X2tleXxsZW5ndGggPiAwIG9yIGRhdGEuY2hlY2tfY29uc3RyYWludHxsZW5ndGggPiAwICV9LHsl IGVuZGlmICV9Cit7e0NPTlNUUkFJTlRTLkVYQ0xVREUoY29ubiwgZGF0YS5leGNsdWRlX2NvbnN0 cmFpbnQpfX17JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5saWtlX3JlbGF0aW9uIG9yIGRhdGEuY29s bF9pbmhlcml0cyBvciBkYXRhLmNvbHVtbnN8bGVuZ3RoID4gMCBvciBkYXRhLnByaW1hcnlfa2V5 fGxlbmd0aCA+IDAgb3IgZGF0YS51bmlxdWVfY29uc3RyYWludHxsZW5ndGggPiAwIG9yIGRhdGEu Zm9yZWlnbl9rZXl8bGVuZ3RoID4gMCBvciBkYXRhLmNoZWNrX2NvbnN0cmFpbnR8bGVuZ3RoID4g MCBvciBkYXRhLmV4Y2x1ZGVfY29uc3RyYWludHxsZW5ndGggPiAwICV9CisKKyl7JSBlbmRpZiAl fXslIGlmIGRhdGEucmVsa2luZCBpcyBkZWZpbmVkIGFuZCBkYXRhLnJlbGtpbmQgPT0gJ3AnICV9 IFBBUlRJVElPTiBCWSB7eyBkYXRhLnBhcnRpdGlvbl9zY2hlbWUgfX0geyUgZW5kaWYgJX0KKwor eyMjIyBJZiB3ZSBhcmUgaW5oZXJpdGluZyBpdCBmcm9tIGFub3RoZXIgdGFibGUocykgIyMjfQor eyUgaWYgZGF0YS5jb2xsX2luaGVyaXRzICV9CisgICAgSU5IRVJJVFMgKHslIGZvciB2YWwgaW4g ZGF0YS5jb2xsX2luaGVyaXRzICV9eyUgaWYgbG9vcC5pbmRleCAhPSAxICV9LCB7JSBlbmRpZiAl fXt7dmFsfX17JSBlbmRmb3IgJX0pCit7JSBlbmRpZiAlfQorV0lUSCAoCisgICAgT0lEUyA9IHsl IGlmIGRhdGEucmVsaGFzb2lkcyAlfVRSVUV7JSBlbHNlICV9RkFMU0V7JSBlbmRpZiAlfXslIGlm IGRhdGEuZmlsbGZhY3RvciAlfSwKKyAgICBGSUxMRkFDVE9SID0ge3sgZGF0YS5maWxsZmFjdG9y IH19eyUgZW5kaWYgJX17JSBpZiBkYXRhLnBhcmFsbGVsX3dvcmtlcnMgaXMgZGVmaW5lZCBhbmQg ZGF0YS5wYXJhbGxlbF93b3JrZXJzICE9ICcnIGFuZCBkYXRhLnBhcmFsbGVsX3dvcmtlcnMgIT0g Tm9uZSAlfSwKKyAgICBwYXJhbGxlbF93b3JrZXJzID0ge3sgZGF0YS5wYXJhbGxlbF93b3JrZXJz IH19eyUgZW5kaWYgJX17JSBpZiBkYXRhLnRvYXN0X3R1cGxlX3RhcmdldCBpcyBkZWZpbmVkIGFu ZCBkYXRhLnRvYXN0X3R1cGxlX3RhcmdldCAhPSAnJyBhbmQgZGF0YS50b2FzdF90dXBsZV90YXJn ZXQgIT0gTm9uZSAlfSwKKyAgICB0b2FzdF90dXBsZV90YXJnZXQgPSB7eyBkYXRhLnRvYXN0X3R1 cGxlX3RhcmdldCB9fXslIGVuZGlmICV9eyUgaWYgZGF0YS5hdXRvdmFjdXVtX2N1c3RvbSAlfSwK KyAgICBhdXRvdmFjdXVtX2VuYWJsZWQgPSB7JSBpZiBkYXRhLmF1dG92YWN1dW1fZW5hYmxlZCAl fVRSVUV7JSBlbHNlICV9RkFMU0V7JSBlbmRpZiAlfXslIGVuZGlmICV9eyUgaWYgZGF0YS50b2Fz dF9hdXRvdmFjdXVtICV9LAorICAgIHRvYXN0LmF1dG92YWN1dW1fZW5hYmxlZCA9IHslIGlmIGRh dGEudG9hc3RfYXV0b3ZhY3V1bV9lbmFibGVkICV9VFJVRXslIGVsc2UgJX1GQUxTRXslIGVuZGlm ICV9Cit7JSBlbmRpZiAlfXslIGlmIGRhdGEuYXV0b3ZhY3V1bV9lbmFibGVkIGFuZCBkYXRhLnZh Y3V1bV90YWJsZXxsZW5ndGggPiAwICV9Cit7JSBmb3Igb3B0IGluIGRhdGEudmFjdXVtX3RhYmxl ICV9eyUgaWYgb3B0Lm5hbWUgYW5kIG9wdC52YWx1ZSAlfQorLAorICAgIHt7b3B0Lm5hbWV9fSA9 IHt7b3B0LnZhbHVlfX17JSBlbmRpZiAlfQoreyUgZW5kZm9yICV9eyUgZW5kaWYgJX17JSBpZiBk YXRhLnRvYXN0X2F1dG92YWN1dW1fZW5hYmxlZCBhbmQgZGF0YS52YWN1dW1fdG9hc3R8bGVuZ3Ro ID4gMCAlfQoreyUgZm9yIG9wdCBpbiBkYXRhLnZhY3V1bV90b2FzdCAlfXslIGlmIG9wdC5uYW1l IGFuZCBvcHQudmFsdWUgJX0KKywKKyAgICB0b2FzdC57e29wdC5uYW1lfX0gPSB7e29wdC52YWx1 ZX19eyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfXslIGVuZGlmICV9CisKK3sjIyMgU1FMIGZvciBU YWJsZXNwYWNlICMjI30KK3slIGlmIGRhdGEuc3BjbmFtZSAlfQorKQorVEFCTEVTUEFDRSB7eyBj b25ufHF0SWRlbnQoZGF0YS5zcGNuYW1lKSB9fTsKK3slIGVsc2UgJX0KKyk7Cit7JSBlbmRpZiAl fQoreyMjIyBBbHRlciBTUUwgZm9yIE93bmVyICMjI30KK3slIGlmIGRhdGEucmVsb3duZXIgJX0K KworQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fQor ICAgIE9XTkVSIHRvIHt7Y29ubnxxdElkZW50KGRhdGEucmVsb3duZXIpfX07Cit7JSBlbmRpZiAl fQoreyMjIyBTZWN1cml0eSBMYWJlbHMgb24gVGFibGUgIyMjfQoreyUgaWYgZGF0YS5zZWNsYWJl bHMgYW5kIGRhdGEuc2VjbGFiZWxzfGxlbmd0aCA+IDAgJX0KKworeyUgZm9yIHIgaW4gZGF0YS5z ZWNsYWJlbHMgJX0KK3t7IFNFQ0xBQkVMLlNFVChjb25uLCAnVEFCTEUnLCBkYXRhLm5hbWUsIHIu cHJvdmlkZXIsIHIubGFiZWwsIGRhdGEuc2NoZW1hKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRp ZiAlfQoreyMjIyAgQUNMIG9uIFRhYmxlICMjI30KK3slIGlmIGRhdGEucmVsYWNsICV9CisKK3sl IGZvciBwcml2IGluIGRhdGEucmVsYWNsICV9Cit7eyBQUklWSUxFR0UuU0VUKGNvbm4sICdUQUJM RScsIHByaXYuZ3JhbnRlZSwgZGF0YS5uYW1lLCBwcml2LndpdGhvdXRfZ3JhbnQsIHByaXYud2l0 aF9ncmFudCwgZGF0YS5zY2hlbWEpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7IyMj IFNRTCBmb3IgQ09NTUVOVCAjIyN9Cit7JSBpZiBkYXRhLmRlc2NyaXB0aW9uICV9CitDT01NRU5U IE9OIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpfX0KKyAgICBJ UyB7e2RhdGEuZGVzY3JpcHRpb258cXRMaXRlcmFsfX07Cit7JSBlbmRpZiAlfQoreyM9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09I30KK3sjPT09PT09IE1BSU4gVEFC TEUgVEVNUExBVEUgRU5EUyBIRVJFID09PT09PSN9Cit7Iz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0jfQoreyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09I30KK3sjICBDT0xVTU4gU1BFQ0lGSUMgVEVNUExBVEVTIFNUQVJUUyBIRVJF ICAgICN9Cit7Iz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0jfQor eyUgaWYgZGF0YS5jb2x1bW5zIGFuZCBkYXRhLmNvbHVtbnN8bGVuZ3RoID4gMCAlfQoreyUgZm9y IGMgaW4gZGF0YS5jb2x1bW5zICV9Cit7JSBpZiBjLmRlc2NyaXB0aW9uICV9CisKK0NPTU1FTlQg T04gQ09MVU1OIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUsIGMubmFtZSl9 fQorICAgIElTIHt7Yy5kZXNjcmlwdGlvbnxxdExpdGVyYWx9fTsKK3slIGVuZGlmICV9Cit7IyMj ICBBZGQgdmFyaWFibGVzIHRvIGNvbHVtbiAjIyN9Cit7JSBpZiBjLmF0dG9wdGlvbnMgYW5kIGMu YXR0b3B0aW9uc3xsZW5ndGggPiAwICV9CisKK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRh dGEuc2NoZW1hLCBkYXRhLm5hbWUpfX0KKyAgICB7eyBWQVJJQUJMRS5TRVQoY29ubiwgJ0NPTFVN TicsIGMubmFtZSwgYy5hdHRvcHRpb25zKSB9fQorCit7JSBlbmRpZiAlfQoreyMjIyAgQWx0ZXIg Y29sdW1uIHN0YXRpc3RpY3MgdmFsdWUgIyMjfQoreyUgaWYgYy5hdHRzdGF0dGFyZ2V0IGlzIGRl ZmluZWQgYW5kIGMuYXR0c3RhdHRhcmdldCA+IC0xICV9CitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJ ZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19CisgICAgQUxURVIgQ09MVU1OIHt7Y29ubnxx dFR5cGVJZGVudChjLm5hbWUpfX0gU0VUIFNUQVRJU1RJQ1Mge3tjLmF0dHN0YXR0YXJnZXR9fTsK KworeyUgZW5kaWYgJX0KK3sjIyMgIEFsdGVyIGNvbHVtbiBzdG9yYWdlIHZhbHVlICMjI30KK3sl IGlmIGMuYXR0c3RvcmFnZSBpcyBkZWZpbmVkIGFuZCBjLmF0dHN0b3JhZ2UgIT0gYy5kZWZhdWx0 c3RvcmFnZSAlfQorQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEu bmFtZSl9fQorICAgIEFMVEVSIENPTFVNTiB7e2Nvbm58cXRUeXBlSWRlbnQoYy5uYW1lKX19IFNF VCBTVE9SQUdFIHslaWYgYy5hdHRzdG9yYWdlID09ICdwJyAlfQorUExBSU57JSBlbGlmIGMuYXR0 c3RvcmFnZSA9PSAnbSclfU1BSU57JSBlbGlmIGMuYXR0c3RvcmFnZSA9PSAnZSclfQorRVhURVJO QUx7JSBlbGlmIGMuYXR0c3RvcmFnZSA9PSAneCclfUVYVEVOREVEeyUgZW5kaWYgJX07CisKK3sl IGVuZGlmICV9Cit7IyMjICBBQ0wgIyMjfQoreyUgaWYgYy5hdHRhY2wgYW5kIGMuYXR0YWNsfGxl bmd0aCA+IDAgJX0KKworeyUgZm9yIHByaXYgaW4gYy5hdHRhY2wgJX0KK3t7IENPTFVNTl9QUklW SUxFR0UuQVBQTFkoY29ubiwgZGF0YS5zY2hlbWEsIGRhdGEubmFtZSwgYy5uYW1lLCBwcml2Lmdy YW50ZWUsIHByaXYud2l0aG91dF9ncmFudCwgcHJpdi53aXRoX2dyYW50KSB9fQoreyUgZW5kZm9y ICV9Cit7JSBlbmRpZiAlfQoreyMjIyAgU2VjdXJpdHkgTGFibGVzICMjI30KK3slIGlmIGMuc2Vj bGFiZWxzIGFuZCBjLnNlY2xhYmVsc3xsZW5ndGggPiAwICV9CisKK3slIGZvciByIGluIGMuc2Vj bGFiZWxzICV9Cit7eyBDT0xVTU5fU0VDTEFCRUwuQVBQTFkoY29ubiwgJ0NPTFVNTicsZGF0YS5z Y2hlbWEsIGRhdGEubmFtZSwgYy5uYW1lLCByLnByb3ZpZGVyLCByLmxhYmVsKSB9fQoreyUgZW5k Zm9yICV9Cit7JSBlbmRpZiAlfQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyM9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09I30KK3sjICAgQ09MVU1OIFNQRUNJ RklDIFRFTVBMQVRFUyBFTkRTIEhFUkUgICAgICN9Cit7Iz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0jfQoreyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PSN9Cit7IyAgIENPTlNUUkFJTlRTIFNQRUNJRklDIFRFTVBMQVRFUyAgICAgI30KK3sj PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0jfQore3tDT05TVFJBSU5UUy5D T05TVFJBSU5UX0NPTU1FTlRTKGNvbm4sIGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUsIGRhdGEucHJp bWFyeV9rZXkpfX0KK3t7Q09OU1RSQUlOVFMuQ09OU1RSQUlOVF9DT01NRU5UUyhjb25uLCBkYXRh LnNjaGVtYSwgZGF0YS5uYW1lLCBkYXRhLnVuaXF1ZV9jb25zdHJhaW50KX19Cit7e0NPTlNUUkFJ TlRTLkNPTlNUUkFJTlRfQ09NTUVOVFMoY29ubiwgZGF0YS5zY2hlbWEsIGRhdGEubmFtZSwgZGF0 YS5mb3JlaWduX2tleSl9fQore3tDT05TVFJBSU5UUy5DT05TVFJBSU5UX0NPTU1FTlRTKGNvbm4s IGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUsIGRhdGEuY2hlY2tfY29uc3RyYWludCl9fQore3tDT05T VFJBSU5UUy5DT05TVFJBSU5UX0NPTU1FTlRTKGNvbm4sIGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUs IGRhdGEuZXhjbHVkZV9jb25zdHJhaW50KX19CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxh dGVzL3RhYmxlcy9zcWwvMTFfcGx1cy9wcm9wZXJ0aWVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0 ZXMvdGFibGVzL3NxbC8xMV9wbHVzL3Byb3BlcnRpZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMC4uM2FjN2NlYWU4Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3RlbXBsYXRlcy90YWJsZXMvc3FsLzExX3BsdXMvcHJvcGVydGllcy5zcWwKQEAgLTAsMCArMSw3 NyBAQAorU0VMRUNUIHJlbC5vaWQsIHJlbC5yZWxuYW1lIEFTIG5hbWUsIHJlbC5yZWx0YWJsZXNw YWNlIEFTIHNwY29pZCxyZWwucmVsYWNsIEFTIHJlbGFjbF9zdHIsCisgIChDQVNFIFdIRU4gbGVu Z3RoKHNwYy5zcGNuYW1lKSA+IDAgVEhFTiBzcGMuc3BjbmFtZSBFTFNFCisgICAgKFNFTEVDVCBz cC5zcGNuYW1lIEZST00gcGdfZGF0YWJhc2UgZHRiCisgICAgSk9JTiBwZ190YWJsZXNwYWNlIHNw IE9OIGR0Yi5kYXR0YWJsZXNwYWNlPXNwLm9pZAorICAgIFdIRVJFIGR0Yi5vaWQgPSB7eyBkaWQg fX06Om9pZCkKKyAgRU5EKSBhcyBzcGNuYW1lLAorICAoc2VsZWN0IG5zcG5hbWUgRlJPTSBwZ19u YW1lc3BhY2UgV0hFUkUgb2lkID0ge3tzY2lkfX06Om9pZCApIGFzIHNjaGVtYSwKKyAgcGdfZ2V0 X3VzZXJieWlkKHJlbC5yZWxvd25lcikgQVMgcmVsb3duZXIsIHJlbC5yZWxoYXNvaWRzLCByZWwu cmVsa2luZCwKKyAgKENBU0UgV0hFTiByZWwucmVsa2luZCA9ICdwJyBUSEVOIHRydWUgRUxTRSBm YWxzZSBFTkQpIEFTIGlzX3BhcnRpdGlvbmVkLAorICByZWwucmVsaGFzc3ViY2xhc3MsIHJlbC5y ZWx0dXBsZXM6OmJpZ2ludCwgZGVzLmRlc2NyaXB0aW9uLCBjb24uY29ubmFtZSwgY29uLmNvbmtl eSwKKwlFWElTVFMoc2VsZWN0IDEgRlJPTSBwZ190cmlnZ2VyCisJCQlKT0lOIHBnX3Byb2MgcHQg T04gcHQub2lkPXRnZm9pZCBBTkQgcHQucHJvbmFtZT0nbG9ndHJpZ2dlcicKKwkJCUpPSU4gcGdf cHJvYyBwYyBPTiBwYy5wcm9uYW1lc3BhY2U9cHQucHJvbmFtZXNwYWNlIEFORCBwYy5wcm9uYW1l PSdzbG9ueXZlcnNpb24nCisJCQlXSEVSRSB0Z3JlbGlkPXJlbC5vaWQpIEFTIGlzcmVwbCwKKwko U0VMRUNUIGNvdW50KCopIEZST00gcGdfdHJpZ2dlciBXSEVSRSB0Z3JlbGlkPXJlbC5vaWQgQU5E IHRnaXNpbnRlcm5hbCA9IEZBTFNFKSBBUyB0cmlnZ2VyY291bnQsCisJKFNFTEVDVCBBUlJBWShT RUxFQ1QgQ0FTRSBXSEVOIChuc3BuYW1lIE5PVCBMSUtFICdwZ1xfJScpIFRIRU4KKyAgICAgICAg ICAgIHF1b3RlX2lkZW50KG5zcG5hbWUpfHwnLid8fHF1b3RlX2lkZW50KGMucmVsbmFtZSkKKyAg ICAgICAgICAgIEVMU0UgcXVvdGVfaWRlbnQoYy5yZWxuYW1lKSBFTkQgQVMgaW5oZXJpdGVkX3Rh YmxlcworICAgIEZST00gcGdfaW5oZXJpdHMgaQorICAgIEpPSU4gcGdfY2xhc3MgYyBPTiBjLm9p ZCA9IGkuaW5ocGFyZW50CisgICAgSk9JTiBwZ19uYW1lc3BhY2UgbiBPTiBuLm9pZD1jLnJlbG5h bWVzcGFjZQorICAgIFdIRVJFIGkuaW5ocmVsaWQgPSByZWwub2lkIE9SREVSIEJZIGluaHNlcW5v KSkgQVMgY29sbF9pbmhlcml0cywKKyAgKFNFTEVDVCBjb3VudCgqKQorCQlGUk9NIHBnX2luaGVy aXRzIGkKKyAgICAgIEpPSU4gcGdfY2xhc3MgYyBPTiBjLm9pZCA9IGkuaW5ocGFyZW50CisgICAg ICBKT0lOIHBnX25hbWVzcGFjZSBuIE9OIG4ub2lkPWMucmVsbmFtZXNwYWNlCisJCVdIRVJFIGku aW5ocmVsaWQgPSByZWwub2lkKSBBUyBpbmhlcml0ZWRfdGFibGVzX2NudCwKKwkoQ0FTRSBXSEVO IHJlbC5yZWxwZXJzaXN0ZW5jZSA9ICd1JyBUSEVOIHRydWUgRUxTRSBmYWxzZSBFTkQpIEFTIHJl bHBlcnNpc3RlbmNlLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMs ICcsJykgRlJPTSAnZmlsbGZhY3Rvcj0oWzAtOV0qKScpIEFTIGZpbGxmYWN0b3IsCisJc3Vic3Ry aW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdwYXJhbGxlbF93 b3JrZXJzPShbMC05XSopJykgQVMgcGFyYWxsZWxfd29ya2VycywKKwlzdWJzdHJpbmcoYXJyYXlf dG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ3RvYXN0X3R1cGxlX3RhcmdldD0o WzAtOV0qKScpIEFTIHRvYXN0X3R1cGxlX3RhcmdldCwKKwkoQ0FTRSBXSEVOIChzdWJzdHJpbmco YXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fZW5h YmxlZD0oW2EtenwwLTldKiknKSA9ICd0cnVlJykKKwkgIFRIRU4gdHJ1ZSBFTFNFIGZhbHNlIEVO RCkgQVMgYXV0b3ZhY3V1bV9lbmFibGVkLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVs LnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkPShbMC05 XSopJykgQVMgYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkLAorCXN1YnN0cmluZyhhcnJheV90 b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1fc2Nh bGVfZmFjdG9yPShbMC05XSpbLl0/WzAtOV0qKScpIEFTIGF1dG92YWN1dW1fdmFjdXVtX3NjYWxl X2ZhY3RvciwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcp IEZST00gJ2F1dG92YWN1dW1fYW5hbHl6ZV90aHJlc2hvbGQ9KFswLTldKiknKSBBUyBhdXRvdmFj dXVtX2FuYWx5emVfdGhyZXNob2xkLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJl bG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9hbmFseXplX3NjYWxlX2ZhY3Rvcj0oWzAt OV0qWy5dP1swLTldKiknKSBBUyBhdXRvdmFjdXVtX2FuYWx5emVfc2NhbGVfZmFjdG9yLAorCXN1 YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3Zh Y3V1bV92YWN1dW1fY29zdF9kZWxheT0oWzAtOV0qKScpIEFTIGF1dG92YWN1dW1fdmFjdXVtX2Nv c3RfZGVsYXksCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywn KSBGUk9NICdhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2xpbWl0PShbMC05XSopJykgQVMgYXV0b3Zh Y3V1bV92YWN1dW1fY29zdF9saW1pdCwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5y ZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fZnJlZXplX21pbl9hZ2U9KFswLTldKikn KSBBUyBhdXRvdmFjdXVtX2ZyZWV6ZV9taW5fYWdlLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJp bmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9mcmVlemVfbWF4X2FnZT0o WzAtOV0qKScpIEFTIGF1dG92YWN1dW1fZnJlZXplX21heF9hZ2UsCisJc3Vic3RyaW5nKGFycmF5 X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2ZyZWV6ZV90 YWJsZV9hZ2U9KFswLTldKiknKSBBUyBhdXRvdmFjdXVtX2ZyZWV6ZV90YWJsZV9hZ2UsCisJKENB U0UgV0hFTiAoc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBG Uk9NICdhdXRvdmFjdXVtX2VuYWJsZWQ9KFthLXp8MC05XSopJykgPSAgJ3RydWUnKQorCSAgVEhF TiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyB0b2FzdF9hdXRvdmFjdXVtX2VuYWJsZWQsCisJc3Vi c3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFj dXVtX3ZhY3V1bV90aHJlc2hvbGQ9KFswLTldKiknKSBBUyB0b2FzdF9hdXRvdmFjdXVtX3ZhY3V1 bV90aHJlc2hvbGQsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywg JywnKSBGUk9NICdhdXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3I9KFswLTldKlsuXT9bMC05 XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1bV92YWN1dW1fc2NhbGVfZmFjdG9yLAorCXN1YnN0cmlu ZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9h bmFseXplX3RocmVzaG9sZD0oWzAtOV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1fYW5hbHl6ZV90 aHJlc2hvbGQsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywn KSBGUk9NICdhdXRvdmFjdXVtX2FuYWx5emVfc2NhbGVfZmFjdG9yPShbMC05XSpbLl0/WzAtOV0q KScpIEFTIHRvYXN0X2F1dG92YWN1dW1fYW5hbHl6ZV9zY2FsZV9mYWN0b3IsCisJc3Vic3RyaW5n KGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX3Zh Y3V1bV9jb3N0X2RlbGF5PShbMC05XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1bV92YWN1dW1fY29z dF9kZWxheSwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcp IEZST00gJ2F1dG92YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQ9KFswLTldKiknKSBBUyB0b2FzdF9h dXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2xpbWl0LAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmco dHN0LnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9mcmVlemVfbWluX2FnZT0oWzAt OV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1fZnJlZXplX21pbl9hZ2UsCisJc3Vic3RyaW5nKGFy cmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2ZyZWV6 ZV9tYXhfYWdlPShbMC05XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1bV9mcmVlemVfbWF4X2FnZSwK KwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1 dG92YWN1dW1fZnJlZXplX3RhYmxlX2FnZT0oWzAtOV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1f ZnJlZXplX3RhYmxlX2FnZSwKKwlhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykg QVMgdGFibGVfdmFjdXVtX3NldHRpbmdzX3N0ciwKKwlhcnJheV90b19zdHJpbmcodHN0LnJlbG9w dGlvbnMsICcsJykgQVMgdG9hc3RfdGFibGVfdmFjdXVtX3NldHRpbmdzX3N0ciwKKwlyZWwucmVs b3B0aW9ucyBBUyByZWxvcHRpb25zLCB0c3QucmVsb3B0aW9ucyBBUyB0b2FzdF9yZWxvcHRpb25z LCByZWwucmVsb2Z0eXBlLAorCUNBU0UgV0hFTiB0eXAudHlwbmFtZSBJUyBOT1QgTlVMTCBUSEVO IChzZWxlY3QgcXVvdGVfaWRlbnQobnNwbmFtZSkgRlJPTSBwZ19uYW1lc3BhY2UgV0hFUkUgb2lk ID0ge3tzY2lkfX06Om9pZCApfHwnLid8fHF1b3RlX2lkZW50KHR5cC50eXBuYW1lKSBFTFNFIHR5 cC50eXBuYW1lIEVORCBBUyB0eXBuYW1lLAorCXR5cC50eXByZWxpZCBBUyB0eXBvaWQsCisJKENB U0UgV0hFTiByZWwucmVsdG9hc3RyZWxpZCA9IDAgVEhFTiBmYWxzZSBFTFNFIHRydWUgRU5EKSBB UyBoYXN0b2FzdHRhYmxlLAorICAgIC0tIEFkZGVkIGZvciBwZ0FkbWluNAorCShhcnJheV90b19z dHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgbGlrZSAnJWF1dG92YWN1dW0lJykgQVMgYXV0b3Zh Y3V1bV9jdXN0b20sCisJKENBU0UgV0hFTiBhcnJheV9sZW5ndGgodHN0LnJlbG9wdGlvbnMsIDEp ID4gMCBBTkQgcmVsLnJlbHRvYXN0cmVsaWQgIT0gMCBUSEVOIHRydWUgRUxTRSBmYWxzZSBFTkQp IEFTIHRvYXN0X2F1dG92YWN1dW0sCisKKwkoU0VMRUNUIGFycmF5X2FnZyhwcm92aWRlciB8fCAn PScgfHwgbGFiZWwpIEZST00gcGdfc2VjbGFiZWxzIHNsMSBXSEVSRSBzbDEub2Jqb2lkPXJlbC5v aWQgQU5EIHNsMS5vYmpzdWJpZD0wKSBBUyBzZWNsYWJlbHMsCisJKENBU0UgV0hFTiByZWwub2lk IDw9IHt7IGRhdGxhc3RzeXNvaWR9fTo6b2lkIFRIRU4gdHJ1ZSBFbFNFIGZhbHNlIEVORCkgQVMg aXNfc3lzX3RhYmxlCisJLS0gQWRkZWQgZm9yIHBhcnRpdGlvbiB0YWJsZQorICAgIHslIGlmIHRp ZCAlfSwgKENBU0UgV0hFTiByZWwucmVsa2luZCA9ICdwJyBUSEVOIHBnX2dldF9wYXJ0a2V5ZGVm KHt7IHRpZCB9fTo6b2lkKSBFTFNFICcnIEVORCkgQVMgcGFydGl0aW9uX3NjaGVtZSB7JSBlbmRp ZiAlfQorRlJPTSBwZ19jbGFzcyByZWwKKyAgTEVGVCBPVVRFUiBKT0lOIHBnX3RhYmxlc3BhY2Ug c3BjIG9uIHNwYy5vaWQ9cmVsLnJlbHRhYmxlc3BhY2UKKyAgTEVGVCBPVVRFUiBKT0lOIHBnX2Rl c2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9pZD1yZWwub2lkIEFORCBkZXMub2Jqc3ViaWQ9MCBB TkQgZGVzLmNsYXNzb2lkPSdwZ19jbGFzcyc6OnJlZ2NsYXNzKQorICBMRUZUIE9VVEVSIEpPSU4g cGdfY29uc3RyYWludCBjb24gT04gY29uLmNvbnJlbGlkPXJlbC5vaWQgQU5EIGNvbi5jb250eXBl PSdwJworICBMRUZUIE9VVEVSIEpPSU4gcGdfY2xhc3MgdHN0IE9OIHRzdC5vaWQgPSByZWwucmVs dG9hc3RyZWxpZAorICBMRUZUIEpPSU4gcGdfdHlwZSB0eXAgT04gcmVsLnJlbG9mdHlwZT10eXAu b2lkCitXSEVSRSByZWwucmVsa2luZCBJTiAoJ3InLCdzJywndCcsJ3AnKSBBTkQgcmVsLnJlbG5h bWVzcGFjZSA9IHt7IHNjaWQgfX06Om9pZAorQU5EIE5PVCByZWwucmVsaXNwYXJ0aXRpb24KK3sl IGlmIHRpZCAlfSAgQU5EIHJlbC5vaWQgPSB7eyB0aWQgfX06Om9pZCB7JSBlbmRpZiAlfQorT1JE RVIgQlkgcmVsLnJlbG5hbWU7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxl cy9zcWwvMTFfcGx1cy91cGRhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZXMvc3Fs LzExX3BsdXMvdXBkYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAu LjBmMjdkYmVkMgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGVz L3NxbC8xMV9wbHVzL3VwZGF0ZS5zcWwKQEAgLTAsMCArMSwyNDUgQEAKK3slIGltcG9ydCAnbWFj cm9zL3NjaGVtYXMvc2VjdXJpdHkubWFjcm9zJyBhcyBTRUNMQUJFTCAlfQoreyUgaW1wb3J0ICdt YWNyb3Mvc2NoZW1hcy9wcml2aWxlZ2UubWFjcm9zJyBhcyBQUklWSUxFR0UgJX0KK3slIGltcG9y dCAnbWFjcm9zL3ZhcmlhYmxlLm1hY3JvcycgYXMgVkFSSUFCTEUgJX0KK3sjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3sjIyBSZW5hbWUgdGFi bGUgIyN9Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyN9Cit7JSBpZiBkYXRhLm5hbWUgYW5kIGRhdGEubmFtZSAhPSBvX2RhdGEubmFtZSAlfQor QUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQob19kYXRhLnNjaGVtYSwgb19kYXRhLm5hbWUpfX0K KyAgICBSRU5BTUUgVE8ge3tjb25ufHF0SWRlbnQoZGF0YS5uYW1lKX19OworCit7JSBlbmRpZiAl fQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj fQoreyMjIENoYW5nZSB0YWJsZSBzY2hlbWEgIyN9Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7JSBpZiBkYXRhLnNjaGVtYSBhbmQgZGF0 YS5zY2hlbWEgIT0gb19kYXRhLnNjaGVtYSAlfQorQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQo b19kYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19CisgIFNFVCBTQ0hFTUEge3tjb25ufHF0SWRlbnQo ZGF0YS5zY2hlbWEpfX07CisKK3slIGVuZGlmICV9Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7IyMgQ2hhbmdlIHRhYmxlIG93bmVyICMj fQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj fQoreyUgaWYgZGF0YS5yZWxvd25lciBhbmQgZGF0YS5yZWxvd25lciAhPSBvX2RhdGEucmVsb3du ZXIgJX0KK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUp fX0KKyAgICBPV05FUiBUTyB7e2Nvbm58cXRJZGVudChkYXRhLnJlbG93bmVyKX19OworCit7JSBl bmRpZiAlfQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjfQoreyMjIFVwZGF0ZSBJbmhlcml0cyB0YWJsZSBkZWZpbml0aW9uICMjfQoreyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyUgaWYg ZGF0YS5jb2xsX2luaGVyaXRzX2FkZGVkfGxlbmd0aCA+IDAgJX0KK3slIGZvciB2YWwgaW4gZGF0 YS5jb2xsX2luaGVyaXRzX2FkZGVkICV9CitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRh LnNjaGVtYSwgZGF0YS5uYW1lKX19CisgICAgSU5IRVJJVCB7e3ZhbH19OworCit7JSBlbmRmb3Ig JX0KK3slIGVuZGlmICV9Cit7JSBpZiBkYXRhLmNvbGxfaW5oZXJpdHNfcmVtb3ZlZHxsZW5ndGgg PiAwICV9Cit7JSBmb3IgdmFsIGluIGRhdGEuY29sbF9pbmhlcml0c19yZW1vdmVkICV9CitBTFRF UiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19CisgICAgTk8g SU5IRVJJVCB7e3ZhbH19OworCit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7IyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7IyMgQ2hhbmdl IGhhc09JRCBhdHRyaWJ1dGUgb2YgdGFibGUgIyN9Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7JSBpZiBkYXRhLnJlbGhhc29pZHMgaXMg ZGVmaW5lZCBhbmQgZGF0YS5yZWxoYXNvaWRzICE9IG9fZGF0YS5yZWxoYXNvaWRzICV9CitBTFRF UiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19CisgICAgU0VU IHslIGlmIGRhdGEucmVsaGFzb2lkcyAlfVdJVEh7JSBlbHNlICV9V0lUSE9VVHslIGVuZGlmICV9 IE9JRFM7CisKK3slIGVuZGlmICV9Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7IyMgQ2hhbmdlIHRhYmxlc3BhY2UgIyN9Cit7IyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7JSBpZiBk YXRhLnNwY25hbWUgYW5kIGRhdGEuc3BjbmFtZSAhPSBvX2RhdGEuc3BjbmFtZSAlfQorQUxURVIg VEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fQorICAgIFNFVCBU QUJMRVNQQUNFIHt7Y29ubnxxdElkZW50KGRhdGEuc3BjbmFtZSl9fTsKKworeyUgZW5kaWYgJX0K K3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30K K3sjIyBjaGFuZ2UgZmlsbGZhY3RvciBzZXR0aW5ncyAjI30KK3sjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3slIGlmIGRhdGEuZmlsbGZhY3Rv ciBhbmQgZGF0YS5maWxsZmFjdG9yICE9IG9fZGF0YS5maWxsZmFjdG9yICV9CitBTFRFUiBUQUJM RSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19CisgICAgU0VUIChGSUxM RkFDVE9SPXt7ZGF0YS5maWxsZmFjdG9yfX0pOworeyUgZWxpZiAoZGF0YS5maWxsZmFjdG9yID09 ICcnIG9yIGRhdGEuZmlsbGZhY3RvciA9PSBOb25lKSBhbmQgZGF0YS5maWxsZmFjdG9yICE9IG9f ZGF0YS5maWxsZmFjdG9yICV9CitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVt YSwgZGF0YS5uYW1lKX19CisgICAgUkVTRVQgKEZJTExGQUNUT1IpOworCit7JSBlbmRpZiAlfQor Cit7IyMgY2hhbmdlIHBhcmFsbGVsX3dvcmtlcnMgc2V0dGluZ3MgIyN9Cit7IyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7JSBpZiAoZGF0YS5w YXJhbGxlbF93b3JrZXJzID09ICcnIG9yIGRhdGEucGFyYWxsZWxfd29ya2VycyA9PSBOb25lKSBh bmQgZGF0YS5wYXJhbGxlbF93b3JrZXJzICE9IG9fZGF0YS5wYXJhbGxlbF93b3JrZXJzICV9CitB TFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19CisgICAg UkVTRVQgKHBhcmFsbGVsX3dvcmtlcnMpOworeyUgZWxpZiBkYXRhLnBhcmFsbGVsX3dvcmtlcnMg aXMgZGVmaW5lZCBhbmQgZGF0YS5wYXJhbGxlbF93b3JrZXJzICE9IG9fZGF0YS5wYXJhbGxlbF93 b3JrZXJzICV9CitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5u YW1lKX19CisgICAgU0VUIChwYXJhbGxlbF93b3JrZXJzPXt7ZGF0YS5wYXJhbGxlbF93b3JrZXJz fX0pOworCit7JSBlbmRpZiAlfQorCit7IyMgY2hhbmdlIHRvYXN0X3R1cGxlX3RhcmdldCBzZXR0 aW5ncyAjI30KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjI30KK3slIGlmIChkYXRhLnRvYXN0X3R1cGxlX3RhcmdldCA9PSAnJyBvciBkYXRhLnRv YXN0X3R1cGxlX3RhcmdldCA9PSBOb25lKSBhbmQgZGF0YS50b2FzdF90dXBsZV90YXJnZXQgIT0g b19kYXRhLnRvYXN0X3R1cGxlX3RhcmdldCAlfQorQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQo ZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fQorICAgIFJFU0VUICh0b2FzdF90dXBsZV90YXJnZXQp OworeyUgZWxpZiBkYXRhLnRvYXN0X3R1cGxlX3RhcmdldCBpcyBkZWZpbmVkIGFuZCBkYXRhLnRv YXN0X3R1cGxlX3RhcmdldCAhPSBvX2RhdGEudG9hc3RfdHVwbGVfdGFyZ2V0ICV9CitBTFRFUiBU QUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19CisgICAgU0VUICh0 b2FzdF90dXBsZV90YXJnZXQ9e3tkYXRhLnRvYXN0X3R1cGxlX3RhcmdldH19KTsKKworeyUgZW5k aWYgJX0KKworeyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7IyMgVGFibGUgQXV0 b1ZhY3V1bSBzZXR0aW5ncyAjI30KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQor eyUgaWYgZGF0YS52YWN1dW1fdGFibGUgaXMgZGVmaW5lZCBhbmQgZGF0YS52YWN1dW1fdGFibGUu c2V0X3ZhbHVlc3xsZW5ndGggPiAwICV9Cit7JSBzZXQgaGFzX3ZhY3V1bV9zZXQgPSB0cnVlICV9 Cit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS52YWN1dW1fdGFibGUgaXMgZGVmaW5lZCBhbmQgZGF0 YS52YWN1dW1fdGFibGUucmVzZXRfdmFsdWVzfGxlbmd0aCA+IDAgJX0KK3slIHNldCBoYXNfdmFj dXVtX3Jlc2V0ID0gdHJ1ZSAlfQoreyUgZW5kaWYgJX0KK3slIGlmIG9fZGF0YS5hdXRvdmFjdXVt X2N1c3RvbSBhbmQgZGF0YS5hdXRvdmFjdXVtX2N1c3RvbSA9PSBmYWxzZSAlfQorQUxURVIgVEFC TEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fSBSRVNFVCAoCisgICAg YXV0b3ZhY3V1bV9lbmFibGVkLAorICAgIGF1dG92YWN1dW1fYW5hbHl6ZV9zY2FsZV9mYWN0b3Is CisgICAgYXV0b3ZhY3V1bV9hbmFseXplX3RocmVzaG9sZCwKKyAgICBhdXRvdmFjdXVtX2ZyZWV6 ZV9tYXhfYWdlLAorICAgIGF1dG92YWN1dW1fdmFjdXVtX2Nvc3RfZGVsYXksCisgICAgYXV0b3Zh Y3V1bV92YWN1dW1fY29zdF9saW1pdCwKKyAgICBhdXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0 b3IsCisgICAgYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkLAorICAgIGF1dG92YWN1dW1fZnJl ZXplX21pbl9hZ2UsCisgICAgYXV0b3ZhY3V1bV9mcmVlemVfdGFibGVfYWdlCispOworeyUgZWxz ZSAlfQoreyUgaWYgZGF0YS5hdXRvdmFjdXVtX2VuYWJsZWQgaXMgZGVmaW5lZCBvciBoYXNfdmFj dXVtX3NldCAlfQorQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEu bmFtZSl9fSBTRVQgKAoreyUgaWYgZGF0YS5hdXRvdmFjdXVtX2VuYWJsZWQgaXMgZGVmaW5lZCBh bmQgZGF0YS5hdXRvdmFjdXVtX2VuYWJsZWQgIT0gb19kYXRhLmF1dG92YWN1dW1fZW5hYmxlZCAl fQorICAgIGF1dG92YWN1dW1fZW5hYmxlZCA9IHslIGlmIGRhdGEuYXV0b3ZhY3V1bV9lbmFibGVk ICV9dHJ1ZXslIGVsc2UgJX1mYWxzZXslIGVuZGlmICV9eyUgaWYgaGFzX3ZhY3V1bV9zZXQgJX0s Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KK3slIGlmIGhhc192YWN1dW1fc2V0ICV9Cit7JSBm b3Igb3B0IGluIGRhdGEudmFjdXVtX3RhYmxlLnNldF92YWx1ZXMgJX17JSBpZiBvcHQubmFtZSBh bmQgb3B0LnZhbHVlICV9CisgICAge3tvcHQubmFtZX19ID0ge3tvcHQudmFsdWV9fXslIGlmIG5v dCBsb29wLmxhc3QgJX0sCit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQor eyUgZW5kaWYgJX0KKworKTsKK3slIGVuZGlmICV9Cit7JSBpZiBoYXNfdmFjdXVtX3Jlc2V0ICV9 CitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19IFJF U0VUICgKK3slIGZvciBvcHQgaW4gZGF0YS52YWN1dW1fdGFibGUucmVzZXRfdmFsdWVzICV9eyUg aWYgb3B0Lm5hbWUgJX0KKyAgICB7e29wdC5uYW1lfX17JSBpZiBub3QgbG9vcC5sYXN0ICV9LAor eyUgZW5kaWYgJX0KK3slIGVuZGlmICV9Cit7JSBlbmRmb3IgJX0KKworKTsKK3slIGVuZGlmICV9 Cit7JSBlbmRpZiAlfQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7 IyMgVG9hc3QgdGFibGUgQXV0b1ZhY3V1bSBzZXR0aW5ncyAjI30KK3sjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyUgaWYgZGF0YS52YWN1dW1fdG9hc3QgaXMgZGVmaW5l ZCBhbmQgZGF0YS52YWN1dW1fdG9hc3Quc2V0X3ZhbHVlc3xsZW5ndGggPiAwICV9Cit7JSBzZXQg aGFzX3ZhY3V1bV90b2FzdF9zZXQgPSB0cnVlICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS52 YWN1dW1fdG9hc3QgaXMgZGVmaW5lZCBhbmQgZGF0YS52YWN1dW1fdG9hc3QucmVzZXRfdmFsdWVz fGxlbmd0aCA+IDAgJX0KK3slIHNldCBoYXNfdmFjdXVtX3RvYXN0X3Jlc2V0ID0gdHJ1ZSAlfQor eyUgZW5kaWYgJX0KK3slIGlmIG9fZGF0YS50b2FzdF9hdXRvdmFjdXVtIGFuZCBkYXRhLnRvYXN0 X2F1dG92YWN1dW0gPT0gZmFsc2UgJX0KK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEu c2NoZW1hLCBkYXRhLm5hbWUpfX0gUkVTRVQgKAorICAgIHRvYXN0LmF1dG92YWN1dW1fZW5hYmxl ZCwKKyAgICB0b2FzdC5hdXRvdmFjdXVtX2ZyZWV6ZV9tYXhfYWdlLAorICAgIHRvYXN0LmF1dG92 YWN1dW1fdmFjdXVtX2Nvc3RfZGVsYXksCisgICAgdG9hc3QuYXV0b3ZhY3V1bV92YWN1dW1fY29z dF9saW1pdCwKKyAgICB0b2FzdC5hdXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3IsCisgICAg dG9hc3QuYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkLAorICAgIHRvYXN0LmF1dG92YWN1dW1f ZnJlZXplX21pbl9hZ2UsCisgICAgdG9hc3QuYXV0b3ZhY3V1bV9mcmVlemVfdGFibGVfYWdlLAor ICAgIHRvYXN0LmF1dG92YWN1dW1fYW5hbHl6ZV90aHJlc2hvbGQsCisgICAgdG9hc3QuYXV0b3Zh Y3V1bV9hbmFseXplX3NjYWxlX2ZhY3RvcgorKTsKK3slIGVsc2UgJX0KK3slIGlmIGRhdGEudG9h c3RfYXV0b3ZhY3V1bV9lbmFibGVkIGlzIGRlZmluZWQgb3IgaGFzX3ZhY3V1bV90b2FzdF9zZXQg JX0KK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpfX0g U0VUICgKK3slIGlmIGRhdGEudG9hc3RfYXV0b3ZhY3V1bV9lbmFibGVkIGlzIGRlZmluZWQgYW5k IGRhdGEudG9hc3RfYXV0b3ZhY3V1bV9lbmFibGVkICE9IG9fZGF0YS50b2FzdF9hdXRvdmFjdXVt X2VuYWJsZWQgJX0KKyAgICB0b2FzdC5hdXRvdmFjdXVtX2VuYWJsZWQgPSB7JSBpZiBkYXRhLnRv YXN0X2F1dG92YWN1dW1fZW5hYmxlZCAlfXRydWV7JSBlbHNlICV9ZmFsc2V7JSBlbmRpZiAlfXsl IGlmIGhhc192YWN1dW1fdG9hc3Rfc2V0ICV9LAoreyUgZW5kaWYgJX0KK3slIGVuZGlmICV9Cit7 JSBpZiBoYXNfdmFjdXVtX3RvYXN0X3NldCAlfQoreyUgZm9yIG9wdCBpbiBkYXRhLnZhY3V1bV90 b2FzdC5zZXRfdmFsdWVzICV9eyUgaWYgb3B0Lm5hbWUgYW5kIG9wdC52YWx1ZSAlfQorICAgIHRv YXN0Lnt7b3B0Lm5hbWV9fSA9IHt7b3B0LnZhbHVlfX17JSBpZiBub3QgbG9vcC5sYXN0ICV9LAor eyUgZW5kaWYgJX0KK3slIGVuZGlmICV9Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9CisKKyk7 Cit7JSBlbmRpZiAlfQoreyUgaWYgaGFzX3ZhY3V1bV90b2FzdF9yZXNldCAlfQorQUxURVIgVEFC TEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fSBSRVNFVCAoCit7JSBm b3Igb3B0IGluIGRhdGEudmFjdXVtX3RvYXN0LnJlc2V0X3ZhbHVlcyAlfXslIGlmIG9wdC5uYW1l ICV9CisgICAgdG9hc3Que3tvcHQubmFtZX19eyUgaWYgbm90IGxvb3AubGFzdCAlfSwKK3slIGVu ZGlmICV9Cit7JSBlbmRpZiAlfQoreyUgZW5kZm9yICV9CisKKyk7Cit7JSBlbmRpZiAlfQoreyUg ZW5kaWYgJX0KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjI30KK3sjIyBDaGFuZ2UgdGFibGUgY29tbWVudHMgIyN9Cit7IyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7JSBpZiBkYXRhLmRlc2Ny aXB0aW9uIGlzIGRlZmluZWQgYW5kIGRhdGEuZGVzY3JpcHRpb24gIT0gb19kYXRhLmRlc2NyaXB0 aW9uICV9CitDT01NRU5UIE9OIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRh Lm5hbWUpfX0KKyAgSVMge3tkYXRhLmRlc2NyaXB0aW9ufHF0TGl0ZXJhbH19OworCit7JSBlbmRp ZiAlfQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjfQoreyMjIFVwZGF0ZSB0YWJsZSBQcml2aWxlZ2VzICMjfQoreyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyUgaWYgZGF0YS5yZWxhY2wg JX0KK3slIGlmICdkZWxldGVkJyBpbiBkYXRhLnJlbGFjbCAlfQoreyUgZm9yIHByaXYgaW4gZGF0 YS5yZWxhY2wuZGVsZXRlZCAlfQore3sgUFJJVklMRUdFLlVOU0VUQUxMKGNvbm4sICdUQUJMRScs IHByaXYuZ3JhbnRlZSwgZGF0YS5uYW1lLCBkYXRhLnNjaGVtYSkgfX0KK3slIGVuZGZvciAlfQor eyUgZW5kaWYgJX0KK3slIGlmICdjaGFuZ2VkJyBpbiBkYXRhLnJlbGFjbCAlfQoreyUgZm9yIHBy aXYgaW4gZGF0YS5yZWxhY2wuY2hhbmdlZCAlfQore3sgUFJJVklMRUdFLlVOU0VUQUxMKGNvbm4s ICdUQUJMRScsIHByaXYuZ3JhbnRlZSwgZGF0YS5uYW1lLCBkYXRhLnNjaGVtYSkgfX0KK3t7IFBS SVZJTEVHRS5TRVQoY29ubiwgJ1RBQkxFJywgcHJpdi5ncmFudGVlLCBkYXRhLm5hbWUsIHByaXYu d2l0aG91dF9ncmFudCwgcHJpdi53aXRoX2dyYW50LCBkYXRhLnNjaGVtYSkgfX0KK3slIGVuZGZv ciAlfQoreyUgZW5kaWYgJX0KK3slIGlmICdhZGRlZCcgaW4gZGF0YS5yZWxhY2wgJX0KK3slIGZv ciBwcml2IGluIGRhdGEucmVsYWNsLmFkZGVkICV9Cit7eyBQUklWSUxFR0UuU0VUKGNvbm4sICdU QUJMRScsIHByaXYuZ3JhbnRlZSwgZGF0YS5uYW1lLCBwcml2LndpdGhvdXRfZ3JhbnQsIHByaXYu d2l0aF9ncmFudCwgZGF0YS5zY2hlbWEpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7 JSBlbmRpZiAlfQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjfQoreyMjIFVwZGF0ZSB0YWJsZSBTZWN1cml0eUxhYmVsICMjfQoreyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyUgaWYgZGF0 YS5zZWNsYWJlbHMgYW5kIGRhdGEuc2VjbGFiZWxzfGxlbmd0aCA+IDAgJX0KK3slIHNldCBzZWNs YWJlbHMgPSBkYXRhLnNlY2xhYmVscyAlfQoreyUgaWYgJ2RlbGV0ZWQnIGluIHNlY2xhYmVscyBh bmQgc2VjbGFiZWxzLmRlbGV0ZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFiZWxz LmRlbGV0ZWQgJX0KK3t7IFNFQ0xBQkVMLlVOU0VUKGNvbm4sICdUQUJMRScsIGRhdGEubmFtZSwg ci5wcm92aWRlciwgZGF0YS5zY2hlbWEpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7 JSBpZiAnYWRkZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmFkZGVkfGxlbmd0aCA+IDAg JX0KK3slIGZvciByIGluIHNlY2xhYmVscy5hZGRlZCAlfQore3sgU0VDTEFCRUwuU0VUKGNvbm4s ICdUQUJMRScsIGRhdGEubmFtZSwgci5wcm92aWRlciwgci5sYWJlbCwgZGF0YS5zY2hlbWEpIH19 Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiAnY2hhbmdlZCcgaW4gc2VjbGFiZWxz IGFuZCBzZWNsYWJlbHMuY2hhbmdlZHxsZW5ndGggPiAwICV9Cit7JSBmb3IgciBpbiBzZWNsYWJl bHMuY2hhbmdlZCAlfQore3sgU0VDTEFCRUwuU0VUKGNvbm4sICdUQUJMRScsIGRhdGEubmFtZSwg ci5wcm92aWRlciwgci5sYWJlbCwgZGF0YS5zY2hlbWEpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVu ZGlmICV9CisKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3Rh Ymxlcy9zcWwvMTJfcGx1cy9jcmVhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZXMv c3FsLzEyX3BsdXMvY3JlYXRlLnNxbAppbmRleCBjNTI4NjFiMGMuLjQ4NmJjMzA5MSAxMDA2NDQK LS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZXMvc3FsLzEyX3BsdXMvY3JlYXRlLnNxbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlcy9zcWwvMTJfcGx1cy9jcmVhdGUuc3FsCkBA IC0xNyw3ICsxNyw3IEBACiB7JSBzZXQgZW1wdHlfYnJhY2tldCA9ICJcbihcbikiJX0KIHslIGVu ZGlmICV9CiB7JSBzZXQgd2l0aF9jbGF1c2UgPSBmYWxzZSV9Ci17JSBpZiBkYXRhLmZpbGxmYWN0 b3Igb3IgZGF0YS5hdXRvdmFjdXVtX2N1c3RvbSBvciBkYXRhLmF1dG92YWN1dW1fZW5hYmxlZCBv ciBkYXRhLnRvYXN0X2F1dG92YWN1dW0gb3IgZGF0YS50b2FzdF9hdXRvdmFjdXVtX2VuYWJsZWQg b3IgKGRhdGEuYXV0b3ZhY3V1bV9lbmFibGVkIGFuZCBkYXRhLnZhY3V1bV90YWJsZXxsZW5ndGgg PiAwKSBvciAoZGF0YS50b2FzdF9hdXRvdmFjdXVtX2VuYWJsZWQgYW5kIGRhdGEudmFjdXVtX3Rv YXN0fGxlbmd0aCA+IDApICV9Cit7JSBpZiBkYXRhLmZpbGxmYWN0b3Igb3IgZGF0YS5wYXJhbGxl bF93b3JrZXJzIG9yIGRhdGEudG9hc3RfdHVwbGVfdGFyZ2V0IG9yIGRhdGEuYXV0b3ZhY3V1bV9j dXN0b20gb3IgZGF0YS5hdXRvdmFjdXVtX2VuYWJsZWQgb3IgZGF0YS50b2FzdF9hdXRvdmFjdXVt IG9yIGRhdGEudG9hc3RfYXV0b3ZhY3V1bV9lbmFibGVkIG9yIChkYXRhLmF1dG92YWN1dW1fZW5h YmxlZCBhbmQgZGF0YS52YWN1dW1fdGFibGV8bGVuZ3RoID4gMCkgb3IgKGRhdGEudG9hc3RfYXV0 b3ZhY3V1bV9lbmFibGVkIGFuZCBkYXRhLnZhY3V1bV90b2FzdHxsZW5ndGggPiAwKSAlfQogeyUg c2V0IHdpdGhfY2xhdXNlID0gdHJ1ZSV9CiB7JSBlbmRpZiAlfQogQ1JFQVRFIHslIGlmIGRhdGEu cmVscGVyc2lzdGVuY2UgJX1VTkxPR0dFRCB7JSBlbmRpZiAlfVRBQkxFIHt7Y29ubnxxdElkZW50 KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpfX17e2VtcHR5X2JyYWNrZXR9fQpAQCAtODYsNyArODYs MTMgQEAgQ0FDSEUge3tjLnNlcWNhY2hlfGludH19IHslIGVuZGlmICV9CiB7JSBzZXQgYWRkX2Nv bW1hID0gZmFsc2UlfQogV0lUSCAoCiB7JSBpZiBkYXRhLmZpbGxmYWN0b3IgJX17JSBzZXQgYWRk X2NvbW1hID0gdHJ1ZSV9Ci0gICAgRklMTEZBQ1RPUiA9IHt7IGRhdGEuZmlsbGZhY3RvciB9fXsl IGVuZGlmICV9eyUgaWYgZGF0YS5hdXRvdmFjdXVtX2N1c3RvbSAlfQorICAgIEZJTExGQUNUT1Ig PSB7eyBkYXRhLmZpbGxmYWN0b3IgfX17JSBlbmRpZiAlfXslIGlmIGRhdGEucGFyYWxsZWxfd29y a2VycyAlfQoreyUgaWYgYWRkX2NvbW1hICV9LAoreyUgZW5kaWYgJX0KKyAgICBwYXJhbGxlbF93 b3JrZXJzID0ge3sgZGF0YS5wYXJhbGxlbF93b3JrZXJzIH19eyUgc2V0IGFkZF9jb21tYSA9IHRy dWUlfXslIGVuZGlmICV9eyUgaWYgZGF0YS50b2FzdF90dXBsZV90YXJnZXQgJX0KK3slIGlmIGFk ZF9jb21tYSAlfSwKK3slIGVuZGlmICV9CisgICAgdG9hc3RfdHVwbGVfdGFyZ2V0ID0ge3sgZGF0 YS50b2FzdF90dXBsZV90YXJnZXQgfX17JSBzZXQgYWRkX2NvbW1hID0gdHJ1ZSV9eyUgZW5kaWYg JX17JSBpZiBkYXRhLmF1dG92YWN1dW1fY3VzdG9tICV9CiB7JSBpZiBhZGRfY29tbWEgJX0sCiB7 JSBlbmRpZiAlfQogICAgIGF1dG92YWN1dW1fZW5hYmxlZCA9IHslIGlmIGRhdGEuYXV0b3ZhY3V1 bV9lbmFibGVkICV9VFJVRXslIGVsc2UgJX1GQUxTRXslIGVuZGlmICV9eyUgc2V0IGFkZF9jb21t YSA9IHRydWUlfXslIGVuZGlmICV9eyUgaWYgZGF0YS50b2FzdF9hdXRvdmFjdXVtICV9CmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlcy9zcWwvMTJfcGx1cy9wcm9wZXJ0aWVz LnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGVzL3NxbC8xMl9wbHVzL3Byb3BlcnRpZXMu c3FsCmluZGV4IGU3ZDE5MDU1ZC4uM2Q5YjFmNjIyIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVt cGxhdGVzL3RhYmxlcy9zcWwvMTJfcGx1cy9wcm9wZXJ0aWVzLnNxbAorKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv dGVtcGxhdGVzL3RhYmxlcy9zcWwvMTJfcGx1cy9wcm9wZXJ0aWVzLnNxbApAQCAtMjcsNiArMjcs OCBAQCBTRUxFQ1QgcmVsLm9pZCwgcmVsLnJlbG5hbWUgQVMgbmFtZSwgcmVsLnJlbHRhYmxlc3Bh Y2UgQVMgc3Bjb2lkLHJlbC5yZWxhY2wgQVMgcgogCQlXSEVSRSBpLmluaHJlbGlkID0gcmVsLm9p ZCkgQVMgaW5oZXJpdGVkX3RhYmxlc19jbnQsCiAJKENBU0UgV0hFTiByZWwucmVscGVyc2lzdGVu Y2UgPSAndScgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyByZWxwZXJzaXN0ZW5jZSwKIAlz dWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2ZpbGxm YWN0b3I9KFswLTldKiknKSBBUyBmaWxsZmFjdG9yLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJp bmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAncGFyYWxsZWxfd29ya2Vycz0oWzAtOV0qKScp IEFTIHBhcmFsbGVsX3dvcmtlcnMsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVs b3B0aW9ucywgJywnKSBGUk9NICd0b2FzdF90dXBsZV90YXJnZXQ9KFswLTldKiknKSBBUyB0b2Fz dF90dXBsZV90YXJnZXQsCiAJKENBU0UgV0hFTiAoc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhy ZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2VuYWJsZWQ9KFthLXp8MC05XSop JykgPSAndHJ1ZScpCiAJICBUSEVOIHRydWUgRUxTRSBmYWxzZSBFTkQpIEFTIGF1dG92YWN1dW1f ZW5hYmxlZCwKIAlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcp IEZST00gJ2F1dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZD0oWzAtOV0qKScpIEFTIGF1dG92YWN1 dW1fdmFjdXVtX3RocmVzaG9sZCwKQEAgLTU2LDcgKzU4LDcgQEAgU0VMRUNUIHJlbC5vaWQsIHJl bC5yZWxuYW1lIEFTIG5hbWUsIHJlbC5yZWx0YWJsZXNwYWNlIEFTIHNwY29pZCxyZWwucmVsYWNs IEFTIHIKIAl0eXAudHlwcmVsaWQgQVMgdHlwb2lkLAogCShDQVNFIFdIRU4gcmVsLnJlbHRvYXN0 cmVsaWQgPSAwIFRIRU4gZmFsc2UgRUxTRSB0cnVlIEVORCkgQVMgaGFzdG9hc3R0YWJsZSwKICAg ICAtLSBBZGRlZCBmb3IgcGdBZG1pbjQKLQkoQ0FTRSBXSEVOIGFycmF5X2xlbmd0aChyZWwucmVs b3B0aW9ucywgMSkgPiAwIFRIRU4gdHJ1ZSBFTFNFIGZhbHNlIEVORCkgQVMgYXV0b3ZhY3V1bV9j dXN0b20sCisJKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBsaWtlICclYXV0 b3ZhY3V1bSUnKSBBUyBhdXRvdmFjdXVtX2N1c3RvbSwKIAkoQ0FTRSBXSEVOIGFycmF5X2xlbmd0 aCh0c3QucmVsb3B0aW9ucywgMSkgPiAwIEFORCByZWwucmVsdG9hc3RyZWxpZCAhPSAwIFRIRU4g dHJ1ZSBFTFNFIGZhbHNlIEVORCkgQVMgdG9hc3RfYXV0b3ZhY3V1bSwKIAogCShTRUxFQ1QgYXJy YXlfYWdnKHByb3ZpZGVyIHx8ICc9JyB8fCBsYWJlbCkgRlJPTSBwZ19zZWNsYWJlbHMgc2wxIFdI RVJFIHNsMS5vYmpvaWQ9cmVsLm9pZCBBTkQgc2wxLm9ianN1YmlkPTApIEFTIHNlY2xhYmVscywK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGVzL3NxbC8xMl9wbHVzL3VwZGF0 ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlcy9zcWwvMTJfcGx1cy91cGRhdGUuc3Fs CmluZGV4IDNlZDEyMzAyZC4uZTI0MTVhZDJhIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxh dGVzL3RhYmxlcy9zcWwvMTJfcGx1cy91cGRhdGUuc3FsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0 ZXMvdGFibGVzL3NxbC8xMl9wbHVzL3VwZGF0ZS5zcWwKQEAgLTYxLDYgKzYxLDI5IEBAIEFMVEVS IFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpfX0KICAgICBSRVNF VCAoRklMTEZBQ1RPUik7CiAKIHslIGVuZGlmICV9CisKK3sjIyBjaGFuZ2UgcGFyYWxsZWxfd29y a2VycyBzZXR0aW5ncyAjI30KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjI30KK3slIGlmIChkYXRhLnBhcmFsbGVsX3dvcmtlcnMgPT0gJycgb3Ig ZGF0YS5wYXJhbGxlbF93b3JrZXJzID09IE5vbmUpIGFuZCBkYXRhLnBhcmFsbGVsX3dvcmtlcnMg IT0gb19kYXRhLnBhcmFsbGVsX3dvcmtlcnMgJX0KK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50 KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpfX0KKyAgICBSRVNFVCAocGFyYWxsZWxfd29ya2Vycyk7 Cit7JSBlbGlmIGRhdGEucGFyYWxsZWxfd29ya2VycyBpcyBkZWZpbmVkIGFuZCBkYXRhLnBhcmFs bGVsX3dvcmtlcnMgIT0gb19kYXRhLnBhcmFsbGVsX3dvcmtlcnMgJX0KK0FMVEVSIFRBQkxFIHt7 Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpfX0KKyAgICBTRVQgKHBhcmFsbGVs X3dvcmtlcnM9e3tkYXRhLnBhcmFsbGVsX3dvcmtlcnN9fSk7CisKK3slIGVuZGlmICV9CisKK3sj IyBjaGFuZ2UgdG9hc3RfdHVwbGVfdGFyZ2V0IHNldHRpbmdzICMjfQoreyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyUgaWYgKGRhdGEudG9h c3RfdHVwbGVfdGFyZ2V0ID09ICcnIG9yIGRhdGEudG9hc3RfdHVwbGVfdGFyZ2V0ID09IE5vbmUp IGFuZCBkYXRhLnRvYXN0X3R1cGxlX3RhcmdldCAhPSBvX2RhdGEudG9hc3RfdHVwbGVfdGFyZ2V0 ICV9CitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19 CisgICAgUkVTRVQgKHRvYXN0X3R1cGxlX3RhcmdldCk7Cit7JSBlbGlmIGRhdGEudG9hc3RfdHVw bGVfdGFyZ2V0IGlzIGRlZmluZWQgYW5kIGRhdGEudG9hc3RfdHVwbGVfdGFyZ2V0ICE9IG9fZGF0 YS50b2FzdF90dXBsZV90YXJnZXQgJX0KK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEu c2NoZW1hLCBkYXRhLm5hbWUpfX0KKyAgICBTRVQgKHRvYXN0X3R1cGxlX3RhcmdldD17e2RhdGEu dG9hc3RfdHVwbGVfdGFyZ2V0fX0pOworCit7JSBlbmRpZiAlfQorCiB7IyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjI30KIHsjIyBUYWJsZSBBdXRvVmFjdXVtIHNldHRpbmdzICMjfQogeyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVt cGxhdGVzL3RhYmxlcy9zcWwvOS42X3BsdXMvY3JlYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0 ZXMvdGFibGVzL3NxbC85LjZfcGx1cy9jcmVhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMC4uYTc0NDdlMzZiCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rl bXBsYXRlcy90YWJsZXMvc3FsLzkuNl9wbHVzL2NyZWF0ZS5zcWwKQEAgLTAsMCArMSwxNzQgQEAK K3slIGltcG9ydCAnbWFjcm9zL3NjaGVtYXMvc2VjdXJpdHkubWFjcm9zJyBhcyBTRUNMQUJFTCAl fQoreyUgaW1wb3J0ICdtYWNyb3Mvc2NoZW1hcy9wcml2aWxlZ2UubWFjcm9zJyBhcyBQUklWSUxF R0UgJX0KK3slIGltcG9ydCAnbWFjcm9zL3ZhcmlhYmxlLm1hY3JvcycgYXMgVkFSSUFCTEUgJX0K K3slIGltcG9ydCAnY29sdW1ucy9tYWNyb3Mvc2VjdXJpdHkubWFjcm9zJyBhcyBDT0xVTU5fU0VD TEFCRUwgJX0KK3slIGltcG9ydCAnY29sdW1ucy9tYWNyb3MvcHJpdmlsZWdlLm1hY3JvcycgYXMg Q09MVU1OX1BSSVZJTEVHRSAlfQoreyUgaW1wb3J0ICd0YWJsZXMvc3FsL21hY3Jvcy9jb25zdHJh aW50cy5tYWNybycgYXMgQ09OU1RSQUlOVFMgJX0KK3slIGltcG9ydCAndHlwZXMvbWFjcm9zL2dl dF9mdWxsX3R5cGVfc3FsX2Zvcm1hdC5tYWNyb3MnIGFzIEdFVF9UWVBFICV9Cit7Iz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0jfQoreyM9PT09PT0gTUFJTiBUQUJM RSBURU1QTEFURSBTVEFSVFMgSEVSRSA9PT09PT0jfQoreyM9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09I30KK3sjCisgSWYgdXNlciBoYXMgbm90IHByb3ZpZGVkIGFu eSBkZXRhaWxzIGJ1dCBvbmx5IG5hbWUgdGhlbgorIGFkZCBlbXB0eSBicmFja2V0IHdpdGggdGFi bGUgbmFtZQorI30KK3slIHNldCBlbXB0eV9icmFja2V0ID0gIiIlfQoreyUgaWYgZGF0YS5jb2xs X2luaGVyaXRzfGxlbmd0aCA9PSAwIGFuZCAgZGF0YS5jb2x1bW5zfGxlbmd0aCA9PSAwIGFuZCBu b3QgZGF0YS50eXBuYW1lIGFuZCBub3QgZGF0YS5saWtlX3JlbGF0aW9uIGFuZCBkYXRhLnByaW1h cnlfa2V5fGxlbmd0aCA9PSAwIGFuZCBkYXRhLnVuaXF1ZV9jb25zdHJhaW50fGxlbmd0aCA9PSAw IGFuZCBkYXRhLmZvcmVpZ25fa2V5fGxlbmd0aCA9PSAwIGFuZCBkYXRhLmNoZWNrX2NvbnN0cmFp bnR8bGVuZ3RoID09IDAgYW5kIGRhdGEuZXhjbHVkZV9jb25zdHJhaW50fGxlbmd0aCA9PSAwICV9 Cit7JSBzZXQgZW1wdHlfYnJhY2tldCA9ICJcbihcbikiJX0KK3slIGVuZGlmICV9CitDUkVBVEUg eyUgaWYgZGF0YS5yZWxwZXJzaXN0ZW5jZSAlfVVOTE9HR0VEIHslIGVuZGlmICV9VEFCTEUge3tj b25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fXt7ZW1wdHlfYnJhY2tldH19Cit7 JSBpZiBkYXRhLnR5cG5hbWUgJX0KKyAgICBPRiB7eyBkYXRhLnR5cG5hbWUgfX0KK3slIGVuZGlm ICV9Cit7JSBpZiBkYXRhLmxpa2VfcmVsYXRpb24gb3IgZGF0YS5jb2xsX2luaGVyaXRzIG9yIGRh dGEuY29sdW1uc3xsZW5ndGggPiAwIG9yIGRhdGEucHJpbWFyeV9rZXl8bGVuZ3RoID4gMCBvciBk YXRhLnVuaXF1ZV9jb25zdHJhaW50fGxlbmd0aCA+IDAgb3IgZGF0YS5mb3JlaWduX2tleXxsZW5n dGggPiAwIG9yIGRhdGEuY2hlY2tfY29uc3RyYWludHxsZW5ndGggPiAwIG9yIGRhdGEuZXhjbHVk ZV9jb25zdHJhaW50fGxlbmd0aCA+IDAgJX0KKygKK3slIGVuZGlmICV9Cit7JSBpZiBkYXRhLmxp a2VfcmVsYXRpb24gJX0KKyAgICBMSUtFIHt7IGRhdGEubGlrZV9yZWxhdGlvbiB9fXslIGlmIGRh dGEubGlrZV9kZWZhdWx0X3ZhbHVlICV9CisKKyAgICAgICAgSU5DTFVESU5HIERFRkFVTFRTeyUg ZW5kaWYgJX17JSBpZiBkYXRhLmxpa2VfY29uc3RyYWludHMgJX0KKworICAgICAgICBJTkNMVURJ TkcgQ09OU1RSQUlOVFN7JSBlbmRpZiAlfXslIGlmIGRhdGEubGlrZV9pbmRleGVzICV9CisKKyAg ICAgICAgSU5DTFVESU5HIElOREVYRVN7JSBlbmRpZiAlfXslIGlmIGRhdGEubGlrZV9zdG9yYWdl ICV9CisKKyAgICAgICAgSU5DTFVESU5HIFNUT1JBR0V7JSBlbmRpZiAlfXslIGlmIGRhdGEubGlr ZV9jb21tZW50cyAlfQorCisgICAgICAgIElOQ0xVRElORyBDT01NRU5UU3slIGVuZGlmICV9eyUg aWYgZGF0YS5jb2x1bW5zfGxlbmd0aCA+IDAgJX0sCit7JSBlbmRpZiAlfQorCit7JSBlbmRpZiAl fQoreyMjIyBBZGQgY29sdW1ucyAjIyN9Cit7JSBpZiBkYXRhLmNvbHVtbnMgYW5kIGRhdGEuY29s dW1uc3xsZW5ndGggPiAwICV9Cit7JSBmb3IgYyBpbiBkYXRhLmNvbHVtbnMgJX0KK3slIGlmIGMu bmFtZSBhbmQgYy5jbHR5cGUgJX0KKyAgICB7JSBpZiBjLmluaGVyaXRlZGZyb210YWJsZSAlfS0t IEluaGVyaXRlZCBmcm9tIHRhYmxlIHt7Yy5pbmhlcml0ZWRmcm9tdGFibGV9fTogeyUgZWxpZiBj LmluaGVyaXRlZGZyb210eXBlICV9LS0gSW5oZXJpdGVkIGZyb20gdHlwZSB7e2MuaW5oZXJpdGVk ZnJvbXR5cGV9fTogeyUgZW5kaWYgJX17e2Nvbm58cXRJZGVudChjLm5hbWUpfX0geyUgaWYgaXNf c3FsICV9e3tjLmRpc3BsYXl0eXBuYW1lfX17JSBlbHNlICV9e3sgR0VUX1RZUEUuQ1JFQVRFX1RZ UEVfU1FMKGNvbm4sIGMuY2x0eXBlLCBjLmF0dGxlbiwgYy5hdHRwcmVjaXNpb24sIGMuaGFzU3Fy QnJhY2tldCkgfX17JSBlbmRpZiAlfXslIGlmIGMuY29sbHNwY25hbWUgJX0gQ09MTEFURSB7e2Mu Y29sbHNwY25hbWV9fXslIGVuZGlmICV9eyUgaWYgYy5hdHRub3RudWxsICV9IE5PVCBOVUxMeyUg ZW5kaWYgJX17JSBpZiBjLmRlZnZhbCBpcyBkZWZpbmVkIGFuZCBjLmRlZnZhbCBpcyBub3Qgbm9u ZSBhbmQgYy5kZWZ2YWwgIT0gJycgJX0gREVGQVVMVCB7e2MuZGVmdmFsfX17JSBlbmRpZiAlfQor eyUgaWYgbm90IGxvb3AubGFzdCAlfSwKK3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQoreyUgZW5k Zm9yICV9Cit7JSBlbmRpZiAlfQoreyMgTWFjcm8gdG8gcmVuZGVyIGZvciBjb25zdHJhaW50cyAj fQoreyUgaWYgZGF0YS5wcmltYXJ5X2tleXxsZW5ndGggPiAwICV9eyUgaWYgZGF0YS5jb2x1bW5z fGxlbmd0aCA+IDAgJX0seyUgZW5kaWYgJX0KK3t7Q09OU1RSQUlOVFMuUFJJTUFSWV9LRVkoY29u biwgZGF0YS5wcmltYXJ5X2tleVswXSl9fXslIGVuZGlmICV9eyUgaWYgZGF0YS51bmlxdWVfY29u c3RyYWludHxsZW5ndGggPiAwICV9eyUgaWYgZGF0YS5jb2x1bW5zfGxlbmd0aCA+IDAgb3IgZGF0 YS5wcmltYXJ5X2tleXxsZW5ndGggPiAwICV9LHslIGVuZGlmICV9Cit7e0NPTlNUUkFJTlRTLlVO SVFVRShjb25uLCBkYXRhLnVuaXF1ZV9jb25zdHJhaW50KX19eyUgZW5kaWYgJX17JSBpZiBkYXRh LmZvcmVpZ25fa2V5fGxlbmd0aCA+IDAgJX17JSBpZiBkYXRhLmNvbHVtbnN8bGVuZ3RoID4gMCBv ciBkYXRhLnByaW1hcnlfa2V5fGxlbmd0aCA+IDAgb3IgZGF0YS51bmlxdWVfY29uc3RyYWludHxs ZW5ndGggPiAwICV9LHslIGVuZGlmICV9Cit7e0NPTlNUUkFJTlRTLkZPUkVJR05fS0VZKGNvbm4s IGRhdGEuZm9yZWlnbl9rZXkpfX17JSBlbmRpZiAlfXslIGlmIGRhdGEuY2hlY2tfY29uc3RyYWlu dHxsZW5ndGggPiAwICV9eyUgaWYgZGF0YS5jb2x1bW5zfGxlbmd0aCA+IDAgb3IgZGF0YS5wcmlt YXJ5X2tleXxsZW5ndGggPiAwIG9yIGRhdGEudW5pcXVlX2NvbnN0cmFpbnR8bGVuZ3RoID4gMCBv ciBkYXRhLmZvcmVpZ25fa2V5fGxlbmd0aCA+IDAgJX0seyUgZW5kaWYgJX0KK3t7Q09OU1RSQUlO VFMuQ0hFQ0soY29ubiwgZGF0YS5jaGVja19jb25zdHJhaW50KX19eyUgZW5kaWYgJX17JSBpZiBk YXRhLmV4Y2x1ZGVfY29uc3RyYWludHxsZW5ndGggPiAwICV9eyUgaWYgZGF0YS5jb2x1bW5zfGxl bmd0aCA+IDAgb3IgZGF0YS5wcmltYXJ5X2tleXxsZW5ndGggPiAwIG9yIGRhdGEudW5pcXVlX2Nv bnN0cmFpbnR8bGVuZ3RoID4gMCBvciBkYXRhLmZvcmVpZ25fa2V5fGxlbmd0aCA+IDAgb3IgZGF0 YS5jaGVja19jb25zdHJhaW50fGxlbmd0aCA+IDAgJX0seyUgZW5kaWYgJX0KK3t7Q09OU1RSQUlO VFMuRVhDTFVERShjb25uLCBkYXRhLmV4Y2x1ZGVfY29uc3RyYWludCl9fXslIGVuZGlmICV9Cit7 JSBpZiBkYXRhLmxpa2VfcmVsYXRpb24gb3IgZGF0YS5jb2xsX2luaGVyaXRzIG9yIGRhdGEuY29s dW1uc3xsZW5ndGggPiAwIG9yIGRhdGEucHJpbWFyeV9rZXl8bGVuZ3RoID4gMCBvciBkYXRhLnVu aXF1ZV9jb25zdHJhaW50fGxlbmd0aCA+IDAgb3IgZGF0YS5mb3JlaWduX2tleXxsZW5ndGggPiAw IG9yIGRhdGEuY2hlY2tfY29uc3RyYWludHxsZW5ndGggPiAwIG9yIGRhdGEuZXhjbHVkZV9jb25z dHJhaW50fGxlbmd0aCA+IDAgJX0KKworKXslIGVuZGlmICV9eyUgaWYgZGF0YS5yZWxraW5kIGlz IGRlZmluZWQgYW5kIGRhdGEucmVsa2luZCA9PSAncCcgJX0gUEFSVElUSU9OIEJZIHt7IGRhdGEu cGFydGl0aW9uX3NjaGVtZSB9fSB7JSBlbmRpZiAlfQorCit7IyMjIElmIHdlIGFyZSBpbmhlcml0 aW5nIGl0IGZyb20gYW5vdGhlciB0YWJsZShzKSAjIyN9Cit7JSBpZiBkYXRhLmNvbGxfaW5oZXJp dHMgJX0KKyAgICBJTkhFUklUUyAoeyUgZm9yIHZhbCBpbiBkYXRhLmNvbGxfaW5oZXJpdHMgJX17 JSBpZiBsb29wLmluZGV4ICE9IDEgJX0sIHslIGVuZGlmICV9e3t2YWx9fXslIGVuZGZvciAlfSkK K3slIGVuZGlmICV9CitXSVRIICgKKyAgICBPSURTID0geyUgaWYgZGF0YS5yZWxoYXNvaWRzICV9 VFJVRXslIGVsc2UgJX1GQUxTRXslIGVuZGlmICV9eyUgaWYgZGF0YS5maWxsZmFjdG9yICV9LAor ICAgIEZJTExGQUNUT1IgPSB7eyBkYXRhLmZpbGxmYWN0b3IgfX17JSBlbmRpZiAlfXslIGlmIGRh dGEuYXV0b3ZhY3V1bV9jdXN0b20gJX0seyUgaWYgZGF0YS5wYXJhbGxlbF93b3JrZXJzIGlzIGRl ZmluZWQgYW5kIGRhdGEucGFyYWxsZWxfd29ya2VycyAhPSAnJyAlfSwKKyAgICBwYXJhbGxlbF93 b3JrZXJzID0ge3sgZGF0YS5wYXJhbGxlbF93b3JrZXJzIH19eyUgZW5kaWYgJX0KKyAgICBhdXRv dmFjdXVtX2VuYWJsZWQgPSB7JSBpZiBkYXRhLmF1dG92YWN1dW1fZW5hYmxlZCAlfVRSVUV7JSBl bHNlICV9RkFMU0V7JSBlbmRpZiAlfXslIGVuZGlmICV9eyUgaWYgZGF0YS50b2FzdF9hdXRvdmFj dXVtICV9LAorICAgIHRvYXN0LmF1dG92YWN1dW1fZW5hYmxlZCA9IHslIGlmIGRhdGEudG9hc3Rf YXV0b3ZhY3V1bV9lbmFibGVkICV9VFJVRXslIGVsc2UgJX1GQUxTRXslIGVuZGlmICV9Cit7JSBl bmRpZiAlfXslIGlmIGRhdGEuYXV0b3ZhY3V1bV9lbmFibGVkIGFuZCBkYXRhLnZhY3V1bV90YWJs ZXxsZW5ndGggPiAwICV9Cit7JSBmb3Igb3B0IGluIGRhdGEudmFjdXVtX3RhYmxlICV9eyUgaWYg b3B0Lm5hbWUgYW5kIG9wdC52YWx1ZSAlfQorLAorICAgIHt7b3B0Lm5hbWV9fSA9IHt7b3B0LnZh bHVlfX17JSBlbmRpZiAlfQoreyUgZW5kZm9yICV9eyUgZW5kaWYgJX17JSBpZiBkYXRhLnRvYXN0 X2F1dG92YWN1dW1fZW5hYmxlZCBhbmQgZGF0YS52YWN1dW1fdG9hc3R8bGVuZ3RoID4gMCAlfQor eyUgZm9yIG9wdCBpbiBkYXRhLnZhY3V1bV90b2FzdCAlfXslIGlmIG9wdC5uYW1lIGFuZCBvcHQu dmFsdWUgJX0KKywKKyAgICB0b2FzdC57e29wdC5uYW1lfX0gPSB7e29wdC52YWx1ZX19eyUgZW5k aWYgJX0KK3slIGVuZGZvciAlfXslIGVuZGlmICV9CisKK3sjIyMgU1FMIGZvciBUYWJsZXNwYWNl ICMjI30KK3slIGlmIGRhdGEuc3BjbmFtZSAlfQorKQorVEFCTEVTUEFDRSB7eyBjb25ufHF0SWRl bnQoZGF0YS5zcGNuYW1lKSB9fTsKK3slIGVsc2UgJX0KKyk7Cit7JSBlbmRpZiAlfQoreyMjIyBB bHRlciBTUUwgZm9yIE93bmVyICMjI30KK3slIGlmIGRhdGEucmVsb3duZXIgJX0KKworQUxURVIg VEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fQorICAgIE9XTkVS IHRvIHt7Y29ubnxxdElkZW50KGRhdGEucmVsb3duZXIpfX07Cit7JSBlbmRpZiAlfQoreyMjIyBT ZWN1cml0eSBMYWJlbHMgb24gVGFibGUgIyMjfQoreyUgaWYgZGF0YS5zZWNsYWJlbHMgYW5kIGRh dGEuc2VjbGFiZWxzfGxlbmd0aCA+IDAgJX0KKworeyUgZm9yIHIgaW4gZGF0YS5zZWNsYWJlbHMg JX0KK3t7IFNFQ0xBQkVMLlNFVChjb25uLCAnVEFCTEUnLCBkYXRhLm5hbWUsIHIucHJvdmlkZXIs IHIubGFiZWwsIGRhdGEuc2NoZW1hKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyMj IyAgQUNMIG9uIFRhYmxlICMjI30KK3slIGlmIGRhdGEucmVsYWNsICV9CisKK3slIGZvciBwcml2 IGluIGRhdGEucmVsYWNsICV9Cit7eyBQUklWSUxFR0UuU0VUKGNvbm4sICdUQUJMRScsIHByaXYu Z3JhbnRlZSwgZGF0YS5uYW1lLCBwcml2LndpdGhvdXRfZ3JhbnQsIHByaXYud2l0aF9ncmFudCwg ZGF0YS5zY2hlbWEpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7IyMjIFNRTCBmb3Ig Q09NTUVOVCAjIyN9Cit7JSBpZiBkYXRhLmRlc2NyaXB0aW9uICV9CitDT01NRU5UIE9OIFRBQkxF IHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpfX0KKyAgICBJUyB7e2RhdGEu ZGVzY3JpcHRpb258cXRMaXRlcmFsfX07Cit7JSBlbmRpZiAlfQoreyM9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09I30KK3sjPT09PT09IE1BSU4gVEFCTEUgVEVNUExB VEUgRU5EUyBIRVJFID09PT09PSN9Cit7Iz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0jfQoreyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09I30KK3sjICBDT0xVTU4gU1BFQ0lGSUMgVEVNUExBVEVTIFNUQVJUUyBIRVJFICAgICN9Cit7 Iz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0jfQoreyUgaWYgZGF0 YS5jb2x1bW5zIGFuZCBkYXRhLmNvbHVtbnN8bGVuZ3RoID4gMCAlfQoreyUgZm9yIGMgaW4gZGF0 YS5jb2x1bW5zICV9Cit7JSBpZiBjLmRlc2NyaXB0aW9uICV9CisKK0NPTU1FTlQgT04gQ09MVU1O IHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUsIGMubmFtZSl9fQorICAgIElT IHt7Yy5kZXNjcmlwdGlvbnxxdExpdGVyYWx9fTsKK3slIGVuZGlmICV9Cit7IyMjICBBZGQgdmFy aWFibGVzIHRvIGNvbHVtbiAjIyN9Cit7JSBpZiBjLmF0dG9wdGlvbnMgYW5kIGMuYXR0b3B0aW9u c3xsZW5ndGggPiAwICV9CisKK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1h LCBkYXRhLm5hbWUpfX0KKyAgICB7eyBWQVJJQUJMRS5TRVQoY29ubiwgJ0NPTFVNTicsIGMubmFt ZSwgYy5hdHRvcHRpb25zKSB9fQorCit7JSBlbmRpZiAlfQoreyMjIyAgQWx0ZXIgY29sdW1uIHN0 YXRpc3RpY3MgdmFsdWUgIyMjfQoreyUgaWYgYy5hdHRzdGF0dGFyZ2V0IGlzIGRlZmluZWQgYW5k IGMuYXR0c3RhdHRhcmdldCA+IC0xICV9CitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRh LnNjaGVtYSwgZGF0YS5uYW1lKX19CisgICAgQUxURVIgQ09MVU1OIHt7Y29ubnxxdFR5cGVJZGVu dChjLm5hbWUpfX0gU0VUIFNUQVRJU1RJQ1Mge3tjLmF0dHN0YXR0YXJnZXR9fTsKKworeyUgZW5k aWYgJX0KK3sjIyMgIEFsdGVyIGNvbHVtbiBzdG9yYWdlIHZhbHVlICMjI30KK3slIGlmIGMuYXR0 c3RvcmFnZSBpcyBkZWZpbmVkIGFuZCBjLmF0dHN0b3JhZ2UgIT0gYy5kZWZhdWx0c3RvcmFnZSAl fQorQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fQor ICAgIEFMVEVSIENPTFVNTiB7e2Nvbm58cXRUeXBlSWRlbnQoYy5uYW1lKX19IFNFVCBTVE9SQUdF IHslaWYgYy5hdHRzdG9yYWdlID09ICdwJyAlfQorUExBSU57JSBlbGlmIGMuYXR0c3RvcmFnZSA9 PSAnbSclfU1BSU57JSBlbGlmIGMuYXR0c3RvcmFnZSA9PSAnZSclfQorRVhURVJOQUx7JSBlbGlm IGMuYXR0c3RvcmFnZSA9PSAneCclfUVYVEVOREVEeyUgZW5kaWYgJX07CisKK3slIGVuZGlmICV9 Cit7IyMjICBBQ0wgIyMjfQoreyUgaWYgYy5hdHRhY2wgYW5kIGMuYXR0YWNsfGxlbmd0aCA+IDAg JX0KKworeyUgZm9yIHByaXYgaW4gYy5hdHRhY2wgJX0KKyAgICB7eyBDT0xVTU5fUFJJVklMRUdF LkFQUExZKGNvbm4sIGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUsIGMubmFtZSwgcHJpdi5ncmFudGVl LCBwcml2LndpdGhvdXRfZ3JhbnQsIHByaXYud2l0aF9ncmFudCkgfX0KK3slIGVuZGZvciAlfQor eyUgZW5kaWYgJX0KK3sjIyMgIFNlY3VyaXR5IExhYmxlcyAjIyN9Cit7JSBpZiBjLnNlY2xhYmVs cyBhbmQgYy5zZWNsYWJlbHN8bGVuZ3RoID4gMCAlfQorCit7JSBmb3IgciBpbiBjLnNlY2xhYmVs cyAlfQore3sgQ09MVU1OX1NFQ0xBQkVMLkFQUExZKGNvbm4sICdDT0xVTU4nLGRhdGEuc2NoZW1h LCBkYXRhLm5hbWUsIGMubmFtZSwgci5wcm92aWRlciwgci5sYWJlbCkgfX0KK3slIGVuZGZvciAl fQoreyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3sjPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSN9Cit7IyAgIENPTFVNTiBTUEVDSUZJQyBU RU1QTEFURVMgRU5EUyBIRVJFICAgICAjfQoreyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09I30KK3sjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0jfQoreyMgICBDT05TVFJBSU5UUyBTUEVDSUZJQyBURU1QTEFURVMgICAgICN9Cit7Iz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09I30KK3t7Q09OU1RSQUlOVFMuQ09OU1RS QUlOVF9DT01NRU5UUyhjb25uLCBkYXRhLnNjaGVtYSwgZGF0YS5uYW1lLCBkYXRhLnByaW1hcnlf a2V5KX19Cit7e0NPTlNUUkFJTlRTLkNPTlNUUkFJTlRfQ09NTUVOVFMoY29ubiwgZGF0YS5zY2hl bWEsIGRhdGEubmFtZSwgZGF0YS51bmlxdWVfY29uc3RyYWludCl9fQore3tDT05TVFJBSU5UUy5D T05TVFJBSU5UX0NPTU1FTlRTKGNvbm4sIGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUsIGRhdGEuZm9y ZWlnbl9rZXkpfX0KK3t7Q09OU1RSQUlOVFMuQ09OU1RSQUlOVF9DT01NRU5UUyhjb25uLCBkYXRh LnNjaGVtYSwgZGF0YS5uYW1lLCBkYXRhLmNoZWNrX2NvbnN0cmFpbnQpfX0KK3t7Q09OU1RSQUlO VFMuQ09OU1RSQUlOVF9DT01NRU5UUyhjb25uLCBkYXRhLnNjaGVtYSwgZGF0YS5uYW1lLCBkYXRh LmV4Y2x1ZGVfY29uc3RyYWludCl9fQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90 YWJsZXMvc3FsLzkuNl9wbHVzL3Byb3BlcnRpZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90 YWJsZXMvc3FsLzkuNl9wbHVzL3Byb3BlcnRpZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMC4uNGVkMjAyZDRmCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rl bXBsYXRlcy90YWJsZXMvc3FsLzkuNl9wbHVzL3Byb3BlcnRpZXMuc3FsCkBAIC0wLDAgKzEsNzYg QEAKK1NFTEVDVCAqLAorCShDQVNFIHdoZW4gcHJlX2NvbGxfaW5oZXJpdHMgaXMgTlVMTCB0aGVu IEFSUkFZW106OnZhcmNoYXJbXSBlbHNlIHByZV9jb2xsX2luaGVyaXRzIEVORCkgYXMgY29sbF9p bmhlcml0cworRlJPTSAoCisJU0VMRUNUIHJlbC5vaWQsIHJlbC5yZWxuYW1lIEFTIG5hbWUsIHJl bC5yZWx0YWJsZXNwYWNlIEFTIHNwY29pZCxyZWwucmVsYWNsIEFTIHJlbGFjbF9zdHIsCisJCShD QVNFIFdIRU4gbGVuZ3RoKHNwYy5zcGNuYW1lKSA+IDAgVEhFTiBzcGMuc3BjbmFtZSBFTFNFCisJ CQkoU0VMRUNUIHNwLnNwY25hbWUgRlJPTSBwZ19kYXRhYmFzZSBkdGIKKwkJCUpPSU4gcGdfdGFi bGVzcGFjZSBzcCBPTiBkdGIuZGF0dGFibGVzcGFjZT1zcC5vaWQKKwkJCVdIRVJFIGR0Yi5vaWQg PSB7eyBkaWQgfX06Om9pZCkKKwkJRU5EKSBhcyBzcGNuYW1lLAorCQkoc2VsZWN0IG5zcG5hbWUg RlJPTSBwZ19uYW1lc3BhY2UgV0hFUkUgb2lkID0ge3tzY2lkfX06Om9pZCApIGFzIHNjaGVtYSwK KwkJcGdfZ2V0X3VzZXJieWlkKHJlbC5yZWxvd25lcikgQVMgcmVsb3duZXIsIHJlbC5yZWxoYXNv aWRzLAorCQlyZWwucmVsaGFzc3ViY2xhc3MsIHJlbC5yZWx0dXBsZXM6OmJpZ2ludCwgZGVzLmRl c2NyaXB0aW9uLCBjb24uY29ubmFtZSwgY29uLmNvbmtleSwKKwkJRVhJU1RTKHNlbGVjdCAxIEZS T00gcGdfdHJpZ2dlcgorCQkJCUpPSU4gcGdfcHJvYyBwdCBPTiBwdC5vaWQ9dGdmb2lkIEFORCBw dC5wcm9uYW1lPSdsb2d0cmlnZ2VyJworCQkJCUpPSU4gcGdfcHJvYyBwYyBPTiBwYy5wcm9uYW1l c3BhY2U9cHQucHJvbmFtZXNwYWNlIEFORCBwYy5wcm9uYW1lPSdzbG9ueXZlcnNpb24nCisJCQkJ V0hFUkUgdGdyZWxpZD1yZWwub2lkKSBBUyBpc3JlcGwsCisJCShTRUxFQ1QgY291bnQoKikgRlJP TSBwZ190cmlnZ2VyIFdIRVJFIHRncmVsaWQ9cmVsLm9pZCkgQVMgdHJpZ2dlcmNvdW50LAorCQko U0VMRUNUIEFSUkFZKFNFTEVDVCBDQVNFIFdIRU4gKG5zcG5hbWUgTk9UIExJS0UgJ3BnXF8lJykg VEhFTgorCQkJCQkJCXF1b3RlX2lkZW50KG5zcG5hbWUpfHwnLid8fHF1b3RlX2lkZW50KGMucmVs bmFtZSkKKwkJCQkJCQlFTFNFIHF1b3RlX2lkZW50KGMucmVsbmFtZSkgRU5EIEFTIGluaGVyaXRl ZF90YWJsZXMKKwkJCUZST00gcGdfaW5oZXJpdHMgaQorCQkJSk9JTiBwZ19jbGFzcyBjIE9OIGMu b2lkID0gaS5pbmhwYXJlbnQKKwkJCUpPSU4gcGdfbmFtZXNwYWNlIG4gT04gbi5vaWQ9Yy5yZWxu YW1lc3BhY2UKKwkJCVdIRVJFIGkuaW5ocmVsaWQgPSByZWwub2lkIE9SREVSIEJZIGluaHNlcW5v KSkgQVMgcHJlX2NvbGxfaW5oZXJpdHMsCisJCShTRUxFQ1QgY291bnQoKikKKwkJCUZST00gcGdf aW5oZXJpdHMgaQorCQkJCUpPSU4gcGdfY2xhc3MgYyBPTiBjLm9pZCA9IGkuaW5ocGFyZW50CisJ CQkJSk9JTiBwZ19uYW1lc3BhY2UgbiBPTiBuLm9pZD1jLnJlbG5hbWVzcGFjZQorCQkJV0hFUkUg aS5pbmhyZWxpZCA9IHJlbC5vaWQpIEFTIGluaGVyaXRlZF90YWJsZXNfY250LAorCQlmYWxzZSBB UyByZWxwZXJzaXN0ZW5jZSwKKwkJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0 aW9ucywgJywnKSBGUk9NICdmaWxsZmFjdG9yPShbMC05XSopJykgQVMgZmlsbGZhY3RvciwKKwkJ c3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdwYXJh bGxlbF93b3JrZXJzPShbMC05XSopJykgQVMgcGFyYWxsZWxfd29ya2VycywKKwkJKENBU0UgV0hF TiAoc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdh dXRvdmFjdXVtX2VuYWJsZWQ9KFthLXp8MC05XSopJykgPSAndHJ1ZScpCisJCQlUSEVOIHRydWUg RUxTRSBmYWxzZSBFTkQpIEFTIGF1dG92YWN1dW1fZW5hYmxlZCwKKwkJc3Vic3RyaW5nKGFycmF5 X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX3ZhY3V1bV90 aHJlc2hvbGQ9KFswLTldKiknKSBBUyBhdXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQsCisJCXN1 YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3Zh Y3V1bV92YWN1dW1fc2NhbGVfZmFjdG9yPShbMC05XSpbLl0/WzAtOV0qKScpIEFTIGF1dG92YWN1 dW1fdmFjdXVtX3NjYWxlX2ZhY3RvciwKKwkJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwu cmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2FuYWx5emVfdGhyZXNob2xkPShbMC05 XSopJykgQVMgYXV0b3ZhY3V1bV9hbmFseXplX3RocmVzaG9sZCwKKwkJc3Vic3RyaW5nKGFycmF5 X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2FuYWx5emVf c2NhbGVfZmFjdG9yPShbMC05XSpbLl0/WzAtOV0qKScpIEFTIGF1dG92YWN1dW1fYW5hbHl6ZV9z Y2FsZV9mYWN0b3IsCisJCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMs ICcsJykgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9kZWxheT0oWzAtOV0qKScpIEFTIGF1 dG92YWN1dW1fdmFjdXVtX2Nvc3RfZGVsYXksCisJCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmco cmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9saW1pdD0o WzAtOV0qKScpIEFTIGF1dG92YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQsCisJCXN1YnN0cmluZyhh cnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9mcmVl emVfbWluX2FnZT0oWzAtOV0qKScpIEFTIGF1dG92YWN1dW1fZnJlZXplX21pbl9hZ2UsCisJCXN1 YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3Zh Y3V1bV9mcmVlemVfbWF4X2FnZT0oWzAtOV0qKScpIEFTIGF1dG92YWN1dW1fZnJlZXplX21heF9h Z2UsCisJCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJP TSAnYXV0b3ZhY3V1bV9mcmVlemVfdGFibGVfYWdlPShbMC05XSopJykgQVMgYXV0b3ZhY3V1bV9m cmVlemVfdGFibGVfYWdlLAorCQkoQ0FTRSBXSEVOIChzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5n KHRzdC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fZW5hYmxlZD0oW2EtenwwLTld KiknKSA9ICAndHJ1ZScpCisJCQlUSEVOIHRydWUgRUxTRSBmYWxzZSBFTkQpIEFTIHRvYXN0X2F1 dG92YWN1dW1fZW5hYmxlZCwKKwkJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0 aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQ9KFswLTldKiknKSBB UyB0b2FzdF9hdXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQsCisJCXN1YnN0cmluZyhhcnJheV90 b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1fc2Nh bGVfZmFjdG9yPShbMC05XSpbLl0/WzAtOV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1fdmFjdXVt X3NjYWxlX2ZhY3RvciwKKwkJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9u cywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2FuYWx5emVfdGhyZXNob2xkPShbMC05XSopJykgQVMg dG9hc3RfYXV0b3ZhY3V1bV9hbmFseXplX3RocmVzaG9sZCwKKwkJc3Vic3RyaW5nKGFycmF5X3Rv X3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2FuYWx5emVfc2Nh bGVfZmFjdG9yPShbMC05XSpbLl0/WzAtOV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1fYW5hbHl6 ZV9zY2FsZV9mYWN0b3IsCisJCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlv bnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9kZWxheT0oWzAtOV0qKScpIEFT IHRvYXN0X2F1dG92YWN1dW1fdmFjdXVtX2Nvc3RfZGVsYXksCisJCXN1YnN0cmluZyhhcnJheV90 b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1fY29z dF9saW1pdD0oWzAtOV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQs CisJCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcsJykgRlJPTSAn YXV0b3ZhY3V1bV9mcmVlemVfbWluX2FnZT0oWzAtOV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1f ZnJlZXplX21pbl9hZ2UsCisJCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlv bnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9mcmVlemVfbWF4X2FnZT0oWzAtOV0qKScpIEFTIHRv YXN0X2F1dG92YWN1dW1fZnJlZXplX21heF9hZ2UsCisJCXN1YnN0cmluZyhhcnJheV90b19zdHJp bmcodHN0LnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9mcmVlemVfdGFibGVfYWdl PShbMC05XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1bV9mcmVlemVfdGFibGVfYWdlLAorCQlhcnJh eV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgQVMgdGFibGVfdmFjdXVtX3NldHRpbmdz X3N0ciwKKwkJYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpIEFTIHRvYXN0X3Rh YmxlX3ZhY3V1bV9zZXR0aW5nc19zdHIsCisJCXJlbC5yZWxvcHRpb25zIEFTIHJlbG9wdGlvbnMs IHRzdC5yZWxvcHRpb25zIEFTIHRvYXN0X3JlbG9wdGlvbnMsIE5VTEwgQVMgcmVsb2Z0eXBlLCBO VUxMIEFTIHR5cG5hbWUsCisJCXR5cC50eXByZWxpZCBBUyB0eXBvaWQsCisJCShDQVNFIFdIRU4g cmVsLnJlbHRvYXN0cmVsaWQgPSAwIFRIRU4gZmFsc2UgRUxTRSB0cnVlIEVORCkgQVMgaGFzdG9h c3R0YWJsZSwKKwkJCS0tIEFkZGVkIGZvciBwZ0FkbWluNAorCQkoYXJyYXlfdG9fc3RyaW5nKHJl bC5yZWxvcHRpb25zLCAnLCcpIGxpa2UgJyVhdXRvdmFjdXVtJScpIEFTIGF1dG92YWN1dW1fY3Vz dG9tLAorCQkoQ0FTRSBXSEVOIGFycmF5X2xlbmd0aCh0c3QucmVsb3B0aW9ucywgMSkgPiAwIEFO RCByZWwucmVsdG9hc3RyZWxpZCAhPSAwIFRIRU4gdHJ1ZSBFTFNFIGZhbHNlIEVORCkgQVMgdG9h c3RfYXV0b3ZhY3V1bSwKKworCQlBUlJBWVtdOjp2YXJjaGFyW10gQVMgc2VjbGFiZWxzLAorCQko Q0FTRSBXSEVOIHJlbC5vaWQgPD0ge3sgZGF0bGFzdHN5c29pZH19OjpvaWQgVEhFTiB0cnVlIEVs U0UgZmFsc2UgRU5EKSBBUyBpc19zeXNfdGFibGUKKworCUZST00gcGdfY2xhc3MgcmVsCisJCUxF RlQgT1VURVIgSk9JTiBwZ190YWJsZXNwYWNlIHNwYyBvbiBzcGMub2lkPXJlbC5yZWx0YWJsZXNw YWNlCisJCUxFRlQgT1VURVIgSk9JTiBwZ19kZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5vYmpvaWQ9 cmVsLm9pZCBBTkQgZGVzLm9ianN1YmlkPTAgQU5EIGRlcy5jbGFzc29pZD0ncGdfY2xhc3MnOjpy ZWdjbGFzcykKKwkJTEVGVCBPVVRFUiBKT0lOIHBnX2NvbnN0cmFpbnQgY29uIE9OIGNvbi5jb25y ZWxpZD1yZWwub2lkIEFORCBjb24uY29udHlwZT0ncCcKKwkJTEVGVCBPVVRFUiBKT0lOIHBnX2Ns YXNzIHRzdCBPTiB0c3Qub2lkID0gcmVsLnJlbHRvYXN0cmVsaWQKKworCSBXSEVSRSByZWwucmVs a2luZCBJTiAoJ3InLCdzJywndCcpIEFORCByZWwucmVsbmFtZXNwYWNlID0ge3sgc2NpZCB9fQor CXslIGlmIHRpZCAlfSAgQU5EIHJlbC5vaWQgPSB7eyB0aWQgfX06Om9pZCB7JSBlbmRpZiAlfQor KSBBUyBUYWJsZUluZm9ybWF0aW9uCisgT1JERVIgQlkgbmFtZQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL3RlbXBsYXRlcy90YWJsZXMvc3FsLzkuNl9wbHVzL3VwZGF0ZS5zcWwgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv dGVtcGxhdGVzL3RhYmxlcy9zcWwvOS42X3BsdXMvdXBkYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAuLjk4ZTllYmY0YgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy90ZW1wbGF0ZXMvdGFibGVzL3NxbC85LjZfcGx1cy91cGRhdGUuc3FsCkBAIC0wLDAgKzEs MjMzIEBACit7JSBpbXBvcnQgJ21hY3Jvcy9zY2hlbWFzL3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VD TEFCRUwgJX0KK3slIGltcG9ydCAnbWFjcm9zL3NjaGVtYXMvcHJpdmlsZWdlLm1hY3JvcycgYXMg UFJJVklMRUdFICV9Cit7JSBpbXBvcnQgJ21hY3Jvcy92YXJpYWJsZS5tYWNyb3MnIGFzIFZBUklB QkxFICV9Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyN9Cit7IyMgUmVuYW1lIHRhYmxlICMjfQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyUgaWYgZGF0YS5uYW1lIGFuZCBkYXRhLm5h bWUgIT0gb19kYXRhLm5hbWUgJX0KK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KG9fZGF0YS5z Y2hlbWEsIG9fZGF0YS5uYW1lKX19CisgICAgUkVOQU1FIFRPIHt7Y29ubnxxdElkZW50KGRhdGEu bmFtZSl9fTsKKworeyUgZW5kaWYgJX0KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3sjIyBDaGFuZ2UgdGFibGUgc2NoZW1hICMjfQoreyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyUg aWYgZGF0YS5zY2hlbWEgYW5kIGRhdGEuc2NoZW1hICE9IG9fZGF0YS5zY2hlbWEgJX0KK0FMVEVS IFRBQkxFIHt7Y29ubnxxdElkZW50KG9fZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fQorICBTRVQg U0NIRU1BIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hKX19OworCit7JSBlbmRpZiAlfQoreyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyMj IENoYW5nZSB0YWJsZSBvd25lciAjI30KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3slIGlmIGRhdGEucmVsb3duZXIgYW5kIGRhdGEucmVs b3duZXIgIT0gb19kYXRhLnJlbG93bmVyICV9CitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChk YXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19CisgICAgT1dORVIgVE8ge3tjb25ufHF0SWRlbnQoZGF0 YS5yZWxvd25lcil9fTsKKworeyUgZW5kaWYgJX0KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3sjIyBVcGRhdGUgSW5oZXJpdHMgdGFibGUg ZGVmaW5pdGlvbiAjI30KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjI30KK3slIGlmIGRhdGEuY29sbF9pbmhlcml0c19hZGRlZHxsZW5ndGggPiAw ICV9Cit7JSBmb3IgdmFsIGluIGRhdGEuY29sbF9pbmhlcml0c19hZGRlZCAlfQorQUxURVIgVEFC TEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fQorICAgIElOSEVSSVQg e3t2YWx9fTsKKworeyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5jb2xsX2lu aGVyaXRzX3JlbW92ZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHZhbCBpbiBkYXRhLmNvbGxfaW5o ZXJpdHNfcmVtb3ZlZCAlfQorQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEs IGRhdGEubmFtZSl9fQorICAgIE5PIElOSEVSSVQge3t2YWx9fTsKKworeyUgZW5kZm9yICV9Cit7 JSBlbmRpZiAlfQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjfQoreyMjIENoYW5nZSBoYXNPSUQgYXR0cmlidXRlIG9mIHRhYmxlICMjfQoreyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyUg aWYgZGF0YS5yZWxoYXNvaWRzIGlzIGRlZmluZWQgYW5kIGRhdGEucmVsaGFzb2lkcyAhPSBvX2Rh dGEucmVsaGFzb2lkcyAlfQorQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEs IGRhdGEubmFtZSl9fQorICAgIFNFVCB7JSBpZiBkYXRhLnJlbGhhc29pZHMgJX1XSVRIeyUgZWxz ZSAlfVdJVEhPVVR7JSBlbmRpZiAlfSBPSURTOworCit7JSBlbmRpZiAlfQoreyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyMjIENoYW5nZSB0 YWJsZXNwYWNlICMjfQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjfQoreyUgaWYgZGF0YS5zcGNuYW1lIGFuZCBkYXRhLnNwY25hbWUgIT0gb19k YXRhLnNwY25hbWUgJX0KK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBk YXRhLm5hbWUpfX0KKyAgICBTRVQgVEFCTEVTUEFDRSB7e2Nvbm58cXRJZGVudChkYXRhLnNwY25h bWUpfX07CisKK3slIGVuZGlmICV9Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7IyMgY2hhbmdlIGZpbGxmYWN0b3Igc2V0dGluZ3MgIyN9 Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9 Cit7JSBpZiBkYXRhLmZpbGxmYWN0b3IgYW5kIGRhdGEuZmlsbGZhY3RvciAhPSBvX2RhdGEuZmls bGZhY3RvciAlfQorQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEu bmFtZSl9fQorICAgIFNFVCAoRklMTEZBQ1RPUj17e2RhdGEuZmlsbGZhY3Rvcn19KTsKK3slIGVs aWYgKGRhdGEuZmlsbGZhY3RvciA9PSAnJyBvciBkYXRhLmZpbGxmYWN0b3IgPT0gTm9uZSkgYW5k IGRhdGEuZmlsbGZhY3RvciAhPSBvX2RhdGEuZmlsbGZhY3RvciAlfQorQUxURVIgVEFCTEUge3tj b25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fQorICAgIFJFU0VUIChGSUxMRkFD VE9SKTsKKworeyUgZW5kaWYgJX0KKworeyMjIGNoYW5nZSBwYXJhbGxlbF93b3JrZXJzIHNldHRp bmdzICMjfQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjfQoreyUgaWYgKGRhdGEucGFyYWxsZWxfd29ya2VycyA9PSAnJyBvciBkYXRhLnBhcmFs bGVsX3dvcmtlcnMgPT0gTm9uZSkgYW5kIGRhdGEucGFyYWxsZWxfd29ya2VycyAhPSBvX2RhdGEu cGFyYWxsZWxfd29ya2VycyAlfQorQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hl bWEsIGRhdGEubmFtZSl9fQorICAgIFJFU0VUIChwYXJhbGxlbF93b3JrZXJzKTsKK3slIGVsaWYg ZGF0YS5wYXJhbGxlbF93b3JrZXJzIGlzIGRlZmluZWQgYW5kIGRhdGEucGFyYWxsZWxfd29ya2Vy cyAhPSBvX2RhdGEucGFyYWxsZWxfd29ya2VycyAlfQorQUxURVIgVEFCTEUge3tjb25ufHF0SWRl bnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fQorICAgIFNFVCAocGFyYWxsZWxfd29ya2Vycz17 e2RhdGEucGFyYWxsZWxfd29ya2Vyc319KTsKKworeyUgZW5kaWYgJX0KK3sjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjfQoreyMjIFRhYmxlIEF1dG9WYWN1dW0gc2V0dGluZ3MgIyN9Cit7 IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3slIGlmIGRhdGEudmFjdXVtX3RhYmxl IGlzIGRlZmluZWQgYW5kIGRhdGEudmFjdXVtX3RhYmxlLnNldF92YWx1ZXN8bGVuZ3RoID4gMCAl fQoreyUgc2V0IGhhc192YWN1dW1fc2V0ID0gdHJ1ZSAlfQoreyUgZW5kaWYgJX0KK3slIGlmIGRh dGEudmFjdXVtX3RhYmxlIGlzIGRlZmluZWQgYW5kIGRhdGEudmFjdXVtX3RhYmxlLnJlc2V0X3Zh bHVlc3xsZW5ndGggPiAwICV9Cit7JSBzZXQgaGFzX3ZhY3V1bV9yZXNldCA9IHRydWUgJX0KK3sl IGVuZGlmICV9Cit7JSBpZiBvX2RhdGEuYXV0b3ZhY3V1bV9jdXN0b20gYW5kIGRhdGEuYXV0b3Zh Y3V1bV9jdXN0b20gPT0gZmFsc2UgJX0KK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEu c2NoZW1hLCBkYXRhLm5hbWUpfX0gUkVTRVQgKAorICAgIGF1dG92YWN1dW1fZW5hYmxlZCwKKyAg ICBhdXRvdmFjdXVtX2FuYWx5emVfc2NhbGVfZmFjdG9yLAorICAgIGF1dG92YWN1dW1fYW5hbHl6 ZV90aHJlc2hvbGQsCisgICAgYXV0b3ZhY3V1bV9mcmVlemVfbWF4X2FnZSwKKyAgICBhdXRvdmFj dXVtX3ZhY3V1bV9jb3N0X2RlbGF5LAorICAgIGF1dG92YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQs CisgICAgYXV0b3ZhY3V1bV92YWN1dW1fc2NhbGVfZmFjdG9yLAorICAgIGF1dG92YWN1dW1fdmFj dXVtX3RocmVzaG9sZCwKKyAgICBhdXRvdmFjdXVtX2ZyZWV6ZV9taW5fYWdlLAorICAgIGF1dG92 YWN1dW1fZnJlZXplX3RhYmxlX2FnZQorKTsKK3slIGVsc2UgJX0KK3slIGlmIGRhdGEuYXV0b3Zh Y3V1bV9lbmFibGVkIGlzIGRlZmluZWQgb3IgaGFzX3ZhY3V1bV9zZXQgJX0KK0FMVEVSIFRBQkxF IHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpfX0gU0VUICgKK3slIGlmIGRh dGEuYXV0b3ZhY3V1bV9lbmFibGVkIGlzIGRlZmluZWQgYW5kIGRhdGEuYXV0b3ZhY3V1bV9lbmFi bGVkICE9IG9fZGF0YS5hdXRvdmFjdXVtX2VuYWJsZWQgJX0KKyAgICBhdXRvdmFjdXVtX2VuYWJs ZWQgPSB7JSBpZiBkYXRhLmF1dG92YWN1dW1fZW5hYmxlZCAlfXRydWV7JSBlbHNlICV9ZmFsc2V7 JSBlbmRpZiAlfXslIGlmIGhhc192YWN1dW1fc2V0ICV9LAoreyUgZW5kaWYgJX0KK3slIGVuZGlm ICV9Cit7JSBpZiBoYXNfdmFjdXVtX3NldCAlfQoreyUgZm9yIG9wdCBpbiBkYXRhLnZhY3V1bV90 YWJsZS5zZXRfdmFsdWVzICV9eyUgaWYgb3B0Lm5hbWUgYW5kIG9wdC52YWx1ZSAlfQorICAgIHt7 b3B0Lm5hbWV9fSA9IHt7b3B0LnZhbHVlfX17JSBpZiBub3QgbG9vcC5sYXN0ICV9LAoreyUgZW5k aWYgJX0KK3slIGVuZGlmICV9Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9CisKKyk7Cit7JSBl bmRpZiAlfQoreyUgaWYgaGFzX3ZhY3V1bV9yZXNldCAlfQorQUxURVIgVEFCTEUge3tjb25ufHF0 SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fSBSRVNFVCAoCit7JSBmb3Igb3B0IGluIGRh dGEudmFjdXVtX3RhYmxlLnJlc2V0X3ZhbHVlcyAlfXslIGlmIG9wdC5uYW1lICV9CisgICAge3tv cHQubmFtZX19eyUgaWYgbm90IGxvb3AubGFzdCAlfSwKK3slIGVuZGlmICV9Cit7JSBlbmRpZiAl fQoreyUgZW5kZm9yICV9CisKKyk7Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KK3sjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyMjIFRvYXN0IHRhYmxlIEF1dG9WYWN1 dW0gc2V0dGluZ3MgIyN9Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30K K3slIGlmIGRhdGEudmFjdXVtX3RvYXN0IGlzIGRlZmluZWQgYW5kIGRhdGEudmFjdXVtX3RvYXN0 LnNldF92YWx1ZXN8bGVuZ3RoID4gMCAlfQoreyUgc2V0IGhhc192YWN1dW1fdG9hc3Rfc2V0ID0g dHJ1ZSAlfQoreyUgZW5kaWYgJX0KK3slIGlmIGRhdGEudmFjdXVtX3RvYXN0IGlzIGRlZmluZWQg YW5kIGRhdGEudmFjdXVtX3RvYXN0LnJlc2V0X3ZhbHVlc3xsZW5ndGggPiAwICV9Cit7JSBzZXQg aGFzX3ZhY3V1bV90b2FzdF9yZXNldCA9IHRydWUgJX0KK3slIGVuZGlmICV9Cit7JSBpZiBvX2Rh dGEudG9hc3RfYXV0b3ZhY3V1bSBhbmQgZGF0YS50b2FzdF9hdXRvdmFjdXVtID09IGZhbHNlICV9 CitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19IFJF U0VUICgKKyAgICB0b2FzdC5hdXRvdmFjdXVtX2VuYWJsZWQsCisgICAgdG9hc3QuYXV0b3ZhY3V1 bV9mcmVlemVfbWF4X2FnZSwKKyAgICB0b2FzdC5hdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2RlbGF5 LAorICAgIHRvYXN0LmF1dG92YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQsCisgICAgdG9hc3QuYXV0 b3ZhY3V1bV92YWN1dW1fc2NhbGVfZmFjdG9yLAorICAgIHRvYXN0LmF1dG92YWN1dW1fdmFjdXVt X3RocmVzaG9sZCwKKyAgICB0b2FzdC5hdXRvdmFjdXVtX2ZyZWV6ZV9taW5fYWdlLAorICAgIHRv YXN0LmF1dG92YWN1dW1fZnJlZXplX3RhYmxlX2FnZSwKKyAgICB0b2FzdC5hdXRvdmFjdXVtX2Fu YWx5emVfdGhyZXNob2xkLAorICAgIHRvYXN0LmF1dG92YWN1dW1fYW5hbHl6ZV9zY2FsZV9mYWN0 b3IKKyk7Cit7JSBlbHNlICV9Cit7JSBpZiBkYXRhLnRvYXN0X2F1dG92YWN1dW1fZW5hYmxlZCBp cyBkZWZpbmVkIG9yIGhhc192YWN1dW1fdG9hc3Rfc2V0ICV9CitBTFRFUiBUQUJMRSB7e2Nvbm58 cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19IFNFVCAoCit7JSBpZiBkYXRhLnRvYXN0 X2F1dG92YWN1dW1fZW5hYmxlZCBpcyBkZWZpbmVkIGFuZCBkYXRhLnRvYXN0X2F1dG92YWN1dW1f ZW5hYmxlZCAhPSBvX2RhdGEudG9hc3RfYXV0b3ZhY3V1bV9lbmFibGVkICV9CisgICAgdG9hc3Qu YXV0b3ZhY3V1bV9lbmFibGVkID0geyUgaWYgZGF0YS50b2FzdF9hdXRvdmFjdXVtX2VuYWJsZWQg JX10cnVleyUgZWxzZSAlfWZhbHNleyUgZW5kaWYgJX17JSBpZiBoYXNfdmFjdXVtX3RvYXN0X3Nl dCAlfSwKK3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgaGFzX3ZhY3V1bV90b2FzdF9z ZXQgJX0KK3slIGZvciBvcHQgaW4gZGF0YS52YWN1dW1fdG9hc3Quc2V0X3ZhbHVlcyAlfXslIGlm IG9wdC5uYW1lIGFuZCBvcHQudmFsdWUgJX0KKyAgICB0b2FzdC57e29wdC5uYW1lfX0gPSB7e29w dC52YWx1ZX19eyUgaWYgbm90IGxvb3AubGFzdCAlfSwKK3slIGVuZGlmICV9Cit7JSBlbmRpZiAl fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQorCispOworeyUgZW5kaWYgJX0KK3slIGlmIGhh c192YWN1dW1fdG9hc3RfcmVzZXQgJX0KK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEu c2NoZW1hLCBkYXRhLm5hbWUpfX0gUkVTRVQgKAoreyUgZm9yIG9wdCBpbiBkYXRhLnZhY3V1bV90 b2FzdC5yZXNldF92YWx1ZXMgJX17JSBpZiBvcHQubmFtZSAlfQorICAgIHRvYXN0Lnt7b3B0Lm5h bWV9fXslIGlmIG5vdCBsb29wLmxhc3QgJX0sCit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KK3sl IGVuZGZvciAlfQorCispOworeyUgZW5kaWYgJX0KK3slIGVuZGlmICV9Cit7IyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7IyMgQ2hhbmdlIHRh YmxlIGNvbW1lbnRzICMjfQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjfQoreyUgaWYgZGF0YS5kZXNjcmlwdGlvbiBpcyBkZWZpbmVkIGFuZCBk YXRhLmRlc2NyaXB0aW9uICE9IG9fZGF0YS5kZXNjcmlwdGlvbiAlfQorQ09NTUVOVCBPTiBUQUJM RSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19CisgIElTIHt7ZGF0YS5k ZXNjcmlwdGlvbnxxdExpdGVyYWx9fTsKKworeyUgZW5kaWYgJX0KK3sjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3sjIyBVcGRhdGUgdGFibGUg UHJpdmlsZWdlcyAjI30KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjI30KK3slIGlmIGRhdGEucmVsYWNsICV9Cit7JSBpZiAnZGVsZXRlZCcgaW4g ZGF0YS5yZWxhY2wgJX0KK3slIGZvciBwcml2IGluIGRhdGEucmVsYWNsLmRlbGV0ZWQgJX0KK3t7 IFBSSVZJTEVHRS5VTlNFVEFMTChjb25uLCAnVEFCTEUnLCBwcml2LmdyYW50ZWUsIGRhdGEubmFt ZSwgZGF0YS5zY2hlbWEpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiAnY2hh bmdlZCcgaW4gZGF0YS5yZWxhY2wgJX0KK3slIGZvciBwcml2IGluIGRhdGEucmVsYWNsLmNoYW5n ZWQgJX0KK3t7IFBSSVZJTEVHRS5VTlNFVEFMTChjb25uLCAnVEFCTEUnLCBwcml2LmdyYW50ZWUs IGRhdGEubmFtZSwgZGF0YS5zY2hlbWEpIH19Cit7eyBQUklWSUxFR0UuU0VUKGNvbm4sICdUQUJM RScsIHByaXYuZ3JhbnRlZSwgZGF0YS5uYW1lLCBwcml2LndpdGhvdXRfZ3JhbnQsIHByaXYud2l0 aF9ncmFudCwgZGF0YS5zY2hlbWEpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBp ZiAnYWRkZWQnIGluIGRhdGEucmVsYWNsICV9Cit7JSBmb3IgcHJpdiBpbiBkYXRhLnJlbGFjbC5h ZGRlZCAlfQore3sgUFJJVklMRUdFLlNFVChjb25uLCAnVEFCTEUnLCBwcml2LmdyYW50ZWUsIGRh dGEubmFtZSwgcHJpdi53aXRob3V0X2dyYW50LCBwcml2LndpdGhfZ3JhbnQsIGRhdGEuc2NoZW1h KSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KK3sjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3sjIyBVcGRhdGUg dGFibGUgU2VjdXJpdHlMYWJlbCAjI30KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3slIGlmIGRhdGEuc2VjbGFiZWxzIGFuZCBkYXRhLnNl Y2xhYmVsc3xsZW5ndGggPiAwICV9Cit7JSBzZXQgc2VjbGFiZWxzID0gZGF0YS5zZWNsYWJlbHMg JX0KK3slIGlmICdkZWxldGVkJyBpbiBzZWNsYWJlbHMgYW5kIHNlY2xhYmVscy5kZWxldGVkfGxl bmd0aCA+IDAgJX0KK3slIGZvciByIGluIHNlY2xhYmVscy5kZWxldGVkICV9Cit7eyBTRUNMQUJF TC5VTlNFVChjb25uLCAnVEFCTEUnLCBkYXRhLm5hbWUsIHIucHJvdmlkZXIsIGRhdGEuc2NoZW1h KSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2FkZGVkJyBpbiBzZWNsYWJl bHMgYW5kIHNlY2xhYmVscy5hZGRlZHxsZW5ndGggPiAwICV9Cit7JSBmb3IgciBpbiBzZWNsYWJl bHMuYWRkZWQgJX0KK3t7IFNFQ0xBQkVMLlNFVChjb25uLCAnVEFCTEUnLCBkYXRhLm5hbWUsIHIu cHJvdmlkZXIsIHIubGFiZWwsIGRhdGEuc2NoZW1hKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRp ZiAlfQoreyUgaWYgJ2NoYW5nZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmNoYW5nZWR8 bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFiZWxzLmNoYW5nZWQgJX0KK3t7IFNFQ0xB QkVMLlNFVChjb25uLCAnVEFCTEUnLCBkYXRhLm5hbWUsIHIucHJvdmlkZXIsIHIubGFiZWwsIGRh dGEuc2NoZW1hKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQorCit7JSBlbmRpZiAlfQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZXMvc3FsL2RlZmF1bHQvcHJvcGVy dGllcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlcy9zcWwvZGVmYXVsdC9wcm9wZXJ0 aWVzLnNxbAppbmRleCA5MzJlN2ZmYTUuLjQ3Njg2YTI4MCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3RlbXBsYXRlcy90YWJsZXMvc3FsL2RlZmF1bHQvcHJvcGVydGllcy5zcWwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL3RlbXBsYXRlcy90YWJsZXMvc3FsL2RlZmF1bHQvcHJvcGVydGllcy5zcWwKQEAgLTU3LDcg KzU3LDcgQEAgRlJPTSAoCiAJCXR5cC50eXByZWxpZCBBUyB0eXBvaWQsCiAJCShDQVNFIFdIRU4g cmVsLnJlbHRvYXN0cmVsaWQgPSAwIFRIRU4gZmFsc2UgRUxTRSB0cnVlIEVORCkgQVMgaGFzdG9h c3R0YWJsZSwKIAkJCS0tIEFkZGVkIGZvciBwZ0FkbWluNAotCQkoQ0FTRSBXSEVOIGFycmF5X2xl bmd0aChyZWwucmVsb3B0aW9ucywgMSkgPiAwIFRIRU4gdHJ1ZSBFTFNFIGZhbHNlIEVORCkgQVMg YXV0b3ZhY3V1bV9jdXN0b20sCisJCShhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcs JykgbGlrZSAnJWF1dG92YWN1dW0lJykgQVMgYXV0b3ZhY3V1bV9jdXN0b20sCiAJCShDQVNFIFdI RU4gYXJyYXlfbGVuZ3RoKHRzdC5yZWxvcHRpb25zLCAxKSA+IDAgQU5EIHJlbC5yZWx0b2FzdHJl bGlkICE9IDAgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyB0b2FzdF9hdXRvdmFjdXVtLAog CiAJCUFSUkFZW106OnZhcmNoYXJbXSBBUyBzZWNsYWJlbHMsCg== --000000000000b06d6f05a2131d6a--