From: aq Subject: [PATCH] replace tabs with spaces of Python code Date: Thu, 19 May 2005 03:58:48 +0900 Message-ID: <9cde8bff05051811584868a6a3@mail.gmail.com> Reply-To: aq Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_2315_15968302.1116442728528" Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel List-Id: xen-devel@lists.xenproject.org ------=_Part_2315_15968302.1116442728528 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline hello, there are many Python codes in tools/ that mix tab and space for indentation, which might introduce some silly and hidden bugs. this is a serious problem and must be avoid at all cost. here is a patch (against cset 1.1452) to replace all tabs with spaces. all the changes are pretty trivial, and i double checked everything. please take a look to see if all the modifies are OK. Signed-off-by: Nguyen Anh Quynh any idea? if nobody complains, i would prepare a patch like this for -testing tree. $ diffstat removetab.patch=20 logging/logging-0.4.9.2/test/mymodule.py | 6 +- xen/sv/CreateDomain.py | 34 ++++++++-------- xen/sv/Daemon.py | 2=20 xen/sv/DomInfo.py | 55 ++++++++++++-------------- xen/sv/DomList.py | 16 +++---- xen/sv/GenTabbed.py | 6 +- xen/sv/HTMLBase.py | 4 - xen/sv/Main.py | 12 ++--- xen/sv/NodeInfo.py | 16 +++---- xen/sv/Wizard.py | 64 +++++++++++++++-----------= ----- xen/sv/util.py | 6 +- xen/web/SrvBase.py | 6 +- xen/web/SrvDir.py | 2=20 xen/xend/EventServer.py | 24 +++++------ xen/xend/PrettyPrint.py | 6 +- xen/xend/XendClient.py | 6 +- xen/xend/XendDomain.py | 4 - xen/xend/encode.py | 2=20 xen/xend/server/SrvDomain.py | 6 +- xen/xend/sxp.py | 2=20 xen/xm/main.py | 12 ++--- 21 files changed, 143 insertions(+), 148 deletions(-) --=20 regards, aq ------=_Part_2315_15968302.1116442728528 Content-Type: application/octet-stream; name="removetab.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="removetab.patch" PT09PSB0b29scy9weXRob24vbG9nZ2luZy9sb2dnaW5nLTAuNC45LjIvdGVzdC9teW1vZHVsZS5w eSAxLjEgdnMgZWRpdGVkID09PT09Ci0tLSAxLjEvdG9vbHMvcHl0aG9uL2xvZ2dpbmcvbG9nZ2lu Zy0wLjQuOS4yL3Rlc3QvbXltb2R1bGUucHkJMjAwNC0wNy0yMiAyMjo0MjozOCArMDk6MDAKKysr IGVkaXRlZC90b29scy9weXRob24vbG9nZ2luZy9sb2dnaW5nLTAuNC45LjIvdGVzdC9teW1vZHVs ZS5weQkyMDA1LTA1LTE5IDAxOjQ4OjUwICswOTowMApAQCAtMiw3ICsyLDcgQEAgaW1wb3J0IGxv Z2dpbmcKIGxvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJNeU1vZHVsZSIpCiAKIGRlZiBkb0l0KCk6 Ci0JbG9nLmRlYnVnKCJEb2luJyBzdHVmZi4uLiIpCi0JI2RvIHN0dWZmLi4uCi0JcmFpc2UgVHlw ZUVycm9yLCAiQm9ndXMgdHlwZSBlcnJvciBmb3IgdGVzdGluZyIKKyAgICBsb2cuZGVidWcoIkRv aW4nIHN0dWZmLi4uIikKKyAgICAjZG8gc3R1ZmYuLi4KKyAgICByYWlzZSBUeXBlRXJyb3IsICJC b2d1cyB0eXBlIGVycm9yIGZvciB0ZXN0aW5nIgogCj09PT09IHRvb2xzL3B5dGhvbi94ZW4vc3Yv Q3JlYXRlRG9tYWluLnB5IDEuMTAgdnMgZWRpdGVkID09PT09Ci0tLSAxLjEwL3Rvb2xzL3B5dGhv bi94ZW4vc3YvQ3JlYXRlRG9tYWluLnB5CTIwMDQtMTEtMDIgMTA6MjY6MzkgKzA5OjAwCisrKyBl ZGl0ZWQvdG9vbHMvcHl0aG9uL3hlbi9zdi9DcmVhdGVEb21haW4ucHkJMjAwNS0wNS0xOSAwMzox MjozNyArMDk6MDAKQEAgLTgsMTUgKzgsMTUgQEAgZnJvbSB4ZW4ueGVuZC5YZW5kQ2xpZW50IGlt cG9ydCBzZXJ2ZXIKIAogY2xhc3MgQ3JlYXRlRG9tYWluKCBXaXphcmQgKToKICAgICBkZWYgX19p bml0X18oIHNlbGYsIHVybFdyaXRlciApOgotICAgIAkKLSAgICAJc2hlZXRzID0gWyBDcmVhdGVQ YWdlMCwKLSAgICAgICAgICAJICAgQ3JlYXRlUGFnZTEsCi0gICAgICAgICAgCSAgIENyZWF0ZVBh Z2UyLAorCisgICAgICAgIHNoZWV0cyA9IFsgQ3JlYXRlUGFnZTAsCisgICAgICAgICAgICAgICAg ICAgQ3JlYXRlUGFnZTEsCisgICAgICAgICAgICAgICAgICAgQ3JlYXRlUGFnZTIsCiAgICAgICAg ICAgICAgICAgICAgQ3JlYXRlUGFnZTMsCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlUGFnZTQs CiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlRmluaXNoIF0KICAgICAKLSAgICAJV2l6YXJkLl9f aW5pdF9fKCBzZWxmLCB1cmxXcml0ZXIsICJDcmVhdGUgRG9tYWluIiwgc2hlZXRzICkKKyAgICAg ICAgV2l6YXJkLl9faW5pdF9fKCBzZWxmLCB1cmxXcml0ZXIsICJDcmVhdGUgRG9tYWluIiwgc2hl ZXRzICkKICAgICAgICAKIGNsYXNzIENyZWF0ZVBhZ2UwKCBTaGVldCApOgogCkBAIC0zOSw3ICsz OSw3IEBAIGNsYXNzIENyZWF0ZVBhZ2UxKCBTaGVldCApOgogY2xhc3MgQ3JlYXRlUGFnZTIoIFNo ZWV0ICk6CiAKICAgICBkZWYgX19pbml0X18oIHNlbGYsIHVybFdyaXRlciApOgotICAgIAlTaGVl dC5fX2luaXRfXyggc2VsZiwgdXJsV3JpdGVyLCAiU2V0dXAgVmlydHVhbCBCbG9jayBEZXZpY2Ui LCAyICkKKyAgICAgICAgU2hlZXQuX19pbml0X18oIHNlbGYsIHVybFdyaXRlciwgIlNldHVwIFZp cnR1YWwgQmxvY2sgRGV2aWNlIiwgMiApCiAgICAgICAgIHNlbGYuYWRkQ29udHJvbCggSW5wdXRD b250cm9sKCAnbnVtX3ZiZHMnLCAnMScsICdOdW1iZXIgb2YgVkJEczonLCAnW1xcZF0rJywgIllv dSBtdXN0IGVudGVyIGEgbnVtYmVyIGluIHRoaXMgZmllbGQiICkgKQogCiBjbGFzcyBDcmVhdGVQ YWdlMyggU2hlZXQgKToKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgQ3JlYXRlUGFnZTMoIFNoZWV0 ICk6CiAgICAgZGVmIHdyaXRlX0JPRFkoIHNlbGYsIHJlcXVlc3QsIGVyciApOgogICAgICAgICBp ZiBub3Qgc2VsZi5wYXNzYmFjazogc2VsZi5wYXJzZUZvcm0oIHJlcXVlc3QgKQogICAgIAotICAg IAlwcmV2aW91c192YWx1ZXMgPSBzeHAyaGFzaCggc3RyaW5nMnN4cCggc2VsZi5wYXNzYmFjayAp ICkgI2dldCB0aGUgaGFzaCBmb3IgcXVpY2sgcmVmZXJlbmNlCisgICAgICAgIHByZXZpb3VzX3Zh bHVlcyA9IHN4cDJoYXNoKCBzdHJpbmcyc3hwKCBzZWxmLnBhc3NiYWNrICkgKSAjZ2V0IHRoZSBo YXNoIGZvciBxdWljayByZWZlcmVuY2UKICAgICAgICAgCiAgICAgICAgIG51bV92YmRzID0gcHJl dmlvdXNfdmFsdWVzLmdldCggJ251bV92YmRzJyApCiAgICAgICAgIApAQCAtMTAxLDcgKzEwMSw3 IEBAIGNsYXNzIENyZWF0ZUZpbmlzaCggU2hlZXQgKToKICAgICAgICAgcmVxdWVzdC53cml0ZSgg IjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3NoZWV0JyB2YWx1ZT0nJXMnPjwvcD4iICUgc2Vs Zi5sb2NhdGlvbiApCiAgICAgCiAgICAgZGVmIHRyYW5zbGF0ZV9zeHAoIHNlbGYsIGZpbl9zeHAg KToKLSAgIAlmaW5faGFzaCA9IHNzeHAyaGFzaCggZmluX3N4cCApCisgICAgICAgIGZpbl9oYXNo ID0gc3N4cDJoYXNoKCBmaW5fc3hwICkKICAgICAKICAgICAgICAgZGVmIGdldCgga2V5ICk6CiAg ICAgICAgICAgICByZXQgPSBmaW5faGFzaC5nZXQoIGtleSApCkBAIC0xMTAsMTggKzExMCwxOCBA QCBjbGFzcyBDcmVhdGVGaW5pc2goIFNoZWV0ICk6CiAgICAgICAgICAgICBlbHNlOgogICAgICAg ICAgICAgICAgIHJldHVybiAiIgogICAgICAgICAKLSAgICAJdmFscyA9IE9wdFZhbHMoKQorICAg ICAgICB2YWxzID0gT3B0VmFscygpCiAgICAgICAgIAotICAgICAgICB2YWxzLm5hbWUgPSAJZ2V0 KCAnbmFtZScgKQotICAgICAgICB2YWxzLm1lbW9yeSA9IAlnZXQoICdtZW1vcnknICkKLSAgICAg ICAgdmFscy5tYXhtZW0gPSAgIGdldCggJ21heG1lbScgKQotICAgICAgICB2YWxzLmNwdSA9ICAJ Z2V0KCAnY3B1JyApCisgICAgICAgIHZhbHMubmFtZSA9IGdldCggJ25hbWUnICkKKyAgICAgICAg dmFscy5tZW1vcnkgPSBnZXQoICdtZW1vcnknICkKKyAgICAgICAgdmFscy5tYXhtZW0gPSBnZXQo ICdtYXhtZW0nICkKKyAgICAgICAgdmFscy5jcHUgPSBnZXQoICdjcHUnICkKICAgICAgICAgdmFs cy5jcHVfd2VpZ2h0ID0gZ2V0KCAnY3B1X3dlaWdodCcgKQogICAgICAgICAKLSAgICAgICAgdmFs cy5idWlsZGVyID0gIGdldCggJ2J1aWxkZXInICkgICAgICAgCi0gICAgICAgIHZhbHMua2VybmVs ID0gICBnZXQoICdrZXJuZWwnICkKLQl2YWxzLnJvb3QgPSAJZ2V0KCAncm9vdCcgKQotICAgICAg ICB2YWxzLmV4dHJhID0gCWdldCggJ2V4dHJhJyApCisgICAgICAgIHZhbHMuYnVpbGRlciA9IGdl dCggJ2J1aWxkZXInICkgICAgICAgCisgICAgICAgIHZhbHMua2VybmVsID0gZ2V0KCAna2VybmVs JyApCisgICAgICAgIHZhbHMucm9vdCA9IGdldCggJ3Jvb3QnICkKKyAgICAgICAgdmFscy5leHRy YSA9IGdldCggJ2V4dHJhJyApCiAgICAgICAgIAogICAgICAgICAjc2V0dXAgdmJkcwogICAgICAg ICAKPT09PT0gdG9vbHMvcHl0aG9uL3hlbi9zdi9EYWVtb24ucHkgMS44IHZzIGVkaXRlZCA9PT09 PQotLS0gMS44L3Rvb2xzL3B5dGhvbi94ZW4vc3YvRGFlbW9uLnB5CTIwMDUtMDUtMTggMDc6Mjg6 MjQgKzA5OjAwCisrKyBlZGl0ZWQvdG9vbHMvcHl0aG9uL3hlbi9zdi9EYWVtb24ucHkJMjAwNS0w NS0xOSAwMjowMDo0NCArMDk6MDAKQEAgLTg5LDcgKzg5LDcgQEAgY2xhc3MgRGFlbW9uOgogICAg ICAgICByZXR1cm4gc2VsZi5jbGVhbnVwKGtpbGw9VHJ1ZSkKIAogICAgIGRlZiBydW4oc2VsZik6 Ci0Jcm9vdCA9IHN0YXRpYy5GaWxlKCBTVl9ST09UICkKKyAgICAgICAgcm9vdCA9IHN0YXRpYy5G aWxlKCBTVl9ST09UICkKICAgICAgICAgcm9vdC5pbmRleE5hbWVzID0gWyAnTWFpbi5ycHknIF0K ICAgICAgICAgcm9vdC5wcm9jZXNzb3JzID0geyAnLnJweSc6IHNjcmlwdC5SZXNvdXJjZVNjcmlw dCB9CiAgICAgICAgIHJlYWN0b3IubGlzdGVuVENQKCBTVl9QT1JULCBzZXJ2ZXIuU2l0ZSggcm9v dCApICkKPT09PT0gdG9vbHMvcHl0aG9uL3hlbi9zdi9Eb21JbmZvLnB5IDEuOSB2cyBlZGl0ZWQg PT09PT0KLS0tIDEuOS90b29scy9weXRob24veGVuL3N2L0RvbUluZm8ucHkJMjAwNC0wOS0yMiAx OTo1MTo1NSArMDk6MDAKKysrIGVkaXRlZC90b29scy9weXRob24veGVuL3N2L0RvbUluZm8ucHkJ MjAwNS0wNS0xOSAwMjoxMzoyNiArMDk6MDAKQEAgLTkxLDU5ICs5MSw1NCBAQCBjbGFzcyBEb21T WFBUYWIoIFByZVRhYiApOgogY2xhc3MgRG9tQWN0aW9uVGFiKCBBY3Rpb25UYWIgKToKIAogICAg IGRlZiBfX2luaXRfXyggc2VsZiApOgotICAgIAlhY3Rpb25zID0geyAic2h1dGRvd24iIDogKCAi U2h1dGRvd24gdGhlIERvbWFpbiIsICJzaHV0ZG93bi5wbmciICksCi0gICAgICAgIAkgICAgInJl Ym9vdCIgOiAoICJSZWJvb3QgdGhlIERvbWFpbiIsICJyZWJvb3QucG5nIiApLAorICAgICAgICBh Y3Rpb25zID0geyAic2h1dGRvd24iIDogKCAiU2h1dGRvd24gdGhlIERvbWFpbiIsICJzaHV0ZG93 bi5wbmciICksCisgICAgICAgICAgICAgICAgICAgICJyZWJvb3QiIDogKCAiUmVib290IHRoZSBE b21haW4iLCAicmVib290LnBuZyIgKSwKICAgICAgICAgICAgICAgICAgICAgInBhdXNlIiA6ICgg IlBhdXNlIHRoZSBEb21haW4iLCAicGF1c2UucG5nIiApLAogICAgICAgICAgICAgICAgICAgICAi dW5wYXVzZSIgOiAoICJVbnBhdXNlIHRoZSBEb21haW4iLCAidW5wYXVzZS5wbmciICksCiAgICAg ICAgICAgICAgICAgICAgICJkZXN0cm95IiA6ICggIkRlc3Ryb3kgdGhlIERvbWFpbiIsICJkZXN0 cm95LnBuZyIgKSB9CiAgICAgICAgIEFjdGlvblRhYi5fX2luaXRfXyggc2VsZiwgYWN0aW9ucyAp ICAgIAogICAgICAgICAKICAgICBkZWYgb3Bfc2h1dGRvd24oIHNlbGYsIHJlcXVlc3QgKToKLSAg IAlkb20gPSBnZXRWYXIoICdkb20nLCByZXF1ZXN0ICkKKyAgICAgICAgZG9tID0gZ2V0VmFyKCAn ZG9tJywgcmVxdWVzdCApCiAgICAgICAgIGlmIG5vdCBkb20gaXMgTm9uZSBhbmQgZG9tICE9ICcw JzoKLSAgICAJICAgaWYgREVCVUc6IHByaW50ICI+RG9tU2h1dERvd24gJXMiICUgZG9tCi0gICAg ICAgICAgIHRyeToKLSAgICAJICAgCXNlcnZlci54ZW5kX2RvbWFpbl9zaHV0ZG93biggaW50KCBk b20gKSwgImhhbHQiICkKLSAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAJcGFzcworICAg ICAgICAgICAgaWYgREVCVUc6IHByaW50ICI+RG9tU2h1dERvd24gJXMiICUgZG9tCisgICAgICAg ICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VydmVyLnhlbmRfZG9tYWluX3NodXRkb3duKCBp bnQoIGRvbSApLCAiaGFsdCIgKQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAg IHBhc3MKICAgICAKICAgICBkZWYgb3BfcmVib290KCBzZWxmLCByZXF1ZXN0ICk6Ci0gICAgICAg CWRvbSA9IGdldFZhciggJ2RvbScsIHJlcXVlc3QgKQorICAgICAgICBkb20gPSBnZXRWYXIoICdk b20nLCByZXF1ZXN0ICkKICAgICAgICAgaWYgbm90IGRvbSBpcyBOb25lIGFuZCBkb20gIT0gJzAn OgotICAgIAkgICAgaWYgREVCVUc6IHByaW50ICI+RG9tUmVib290ICVzIiAlIGRvbQorICAgICAg ICAgICAgaWYgREVCVUc6IHByaW50ICI+RG9tUmVib290ICVzIiAlIGRvbQogICAgICAgICAgICAg dHJ5OgotICAgICAgICAgICAgCXNlcnZlci54ZW5kX2RvbWFpbl9zaHV0ZG93biggaW50KCBkb20g KSwgInJlYm9vdCIgKQorICAgICAgICAgICAgICAgIHNlcnZlci54ZW5kX2RvbWFpbl9zaHV0ZG93 biggaW50KCBkb20gKSwgInJlYm9vdCIgKQogICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAg ICAgCXBhc3MKKyAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICAgCiAgICAgZGVm IG9wX3BhdXNlKCBzZWxmLCByZXF1ZXN0ICk6Ci0gICAgICAgCWRvbSA9IGdldFZhciggJ2RvbScs IHJlcXVlc3QgKQorICAgICAgICBkb20gPSBnZXRWYXIoICdkb20nLCByZXF1ZXN0ICkKICAgICAg ICAgaWYgbm90IGRvbSBpcyBOb25lIGFuZCBkb20gIT0gJzAnOgotICAgIAkgICAgaWYgREVCVUc6 IHByaW50ICI+RG9tUGF1c2UgJXMiICUgZG9tCisgICAgICAgICAgICBpZiBERUJVRzogcHJpbnQg Ij5Eb21QYXVzZSAlcyIgJSBkb20KICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBz ZXJ2ZXIueGVuZF9kb21haW5fcGF1c2UoIGludCggZG9tICkgKQogICAgICAgICAgICAgZXhjZXB0 OgotICAgICAgICAgICAgCXBhc3MKKyAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAg ICAKICAgICBkZWYgb3BfdW5wYXVzZSggc2VsZiwgcmVxdWVzdCApOgotICAgICAgIAlkb20gPSBn ZXRWYXIoICdkb20nLCByZXF1ZXN0ICkKKyAgICAgICAgZG9tID0gZ2V0VmFyKCAnZG9tJywgcmVx dWVzdCApCiAgICAgICAgIGlmIG5vdCBkb20gaXMgTm9uZSBhbmQgZG9tICE9ICcwJzoKLSAgICAJ ICAgaWYgREVCVUc6IHByaW50ICI+RG9tVW5wYXVzZSAlcyIgJSBkb20KLSAgICAgICAgICAgdHJ5 OgorICAgICAgICAgICAgaWYgREVCVUc6IHByaW50ICI+RG9tVW5wYXVzZSAlcyIgJSBkb20KKyAg ICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNlcnZlci54ZW5kX2RvbWFpbl91bnBhdXNl KCBpbnQoIGRvbSApICkKLSAgICAJICAgZXhjZXB0OgorICAgICAgICAgICAgZXhjZXB0OgogICAg ICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgCiAgICAgZGVmIG9wX2Rlc3Ryb3koIHNl bGYsIHJlcXVlc3QgKToKLSAgICAJZG9tID0gZ2V0VmFyKCAnZG9tJywgcmVxdWVzdCApCisgICAg ICAgIGRvbSA9IGdldFZhciggJ2RvbScsIHJlcXVlc3QgKQogICAgICAgICBpZiBub3QgZG9tIGlz IE5vbmUgYW5kIGRvbSAhPSAnMCc6Ci0gICAgCSAgIGlmIERFQlVHOiBwcmludCAiPkRvbURlc3Ry b3kgJXMiICUgZG9tCi0gICAgICAgICAgIHRyeToKLSAgICAgICAgICAgCXNlcnZlci54ZW5kX2Rv bWFpbl9kZXN0cm95KCBpbnQoIGRvbSApLCAiaGFsdCIgKQotICAgICAgICAgICBleGNlcHQ6Ci0g ICAgICAgICAgIAlwYXNzCi0gICAgICAgIAotICAgIAotICAgIAotICAgICAgICAKLQorICAgICAg ICAgICAgaWYgREVCVUc6IHByaW50ICI+RG9tRGVzdHJveSAlcyIgJSBkb20KKyAgICAgICAgICAg IHRyeToKKyAgICAgICAgICAgICAgICBzZXJ2ZXIueGVuZF9kb21haW5fZGVzdHJveSggaW50KCBk b20gKSwgImhhbHQiICkKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBwYXNz Cj09PT09IHRvb2xzL3B5dGhvbi94ZW4vc3YvRG9tTGlzdC5weSAxLjkgdnMgZWRpdGVkID09PT09 Ci0tLSAxLjkvdG9vbHMvcHl0aG9uL3hlbi9zdi9Eb21MaXN0LnB5CTIwMDQtMDktMTcgMDA6MTE6 NTMgKzA5OjAwCisrKyBlZGl0ZWQvdG9vbHMvcHl0aG9uL3hlbi9zdi9Eb21MaXN0LnB5CTIwMDUt MDUtMTkgMDI6MTg6MDQgKzA5OjAwCkBAIC0xMywxNyArMTMsMTcgQEAgY2xhc3MgRG9tTGlzdCgg SFRNTEJhc2UgKToKICAgICAgICAgc2VsZi51cmxXcml0ZXIgPSB1cmxXcml0ZXIKICAgICAgICAg CiAgICAgZGVmIHdyaXRlX01FTlUoIHNlbGYsIHJlcXVlc3QgKToKLSAgICAJcmV0dXJuIHNlbGYu d3JpdGVfQk9EWSggcmVxdWVzdCwgaGVhZD1UcnVlLCBsb25nPUZhbHNlICkgCisgICAgICAgIHJl dHVybiBzZWxmLndyaXRlX0JPRFkoIHJlcXVlc3QsIGhlYWQ9VHJ1ZSwgbG9uZz1GYWxzZSApIAog CiAgICAgZGVmIHdyaXRlX0JPRFkoIHNlbGYsIHJlcXVlc3QsIGhlYWQ9VHJ1ZSwgbG9uZz1UcnVl ICk6CiAgICAgICAgIAotICAgIAlkb21haW5zID0gTm9uZQorICAgICAgICBkb21haW5zID0gTm9u ZQogICAgIAotICAgIAl0cnk6Ci0gICAgICAgIAlkb21haW5zID0gc2VydmVyLnhlbmRfZG9tYWlu cygpCi0gICAgICAgIAlkb21haW5zLnNvcnQoKQotICAJZXhjZXB0OgotICAgICAgICAJcGFzcwor ICAgICAgICB0cnk6CisgICAgICAgICAgICBkb21haW5zID0gc2VydmVyLnhlbmRfZG9tYWlucygp CisgICAgICAgICAgICBkb21haW5zLnNvcnQoKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAg ICBwYXNzCiAgICAgICAgICAgICAgICAgCiAgICAgICAgIHJlcXVlc3Qud3JpdGUoICJcbjx0YWJs ZSBzdHlsZT0nYm9yZGVyOjBweCBzb2xpZCB3aGl0ZScgY2VsbHNwYWNpbmc9JzAnIGNlbGxwYWRk aW5nPScwJyBib3JkZXI9JzAnIHdpZHRoPScxMDAlJz5cbiIgKQogICAgICAgICAKQEAgLTQ1LDcg KzQ1LDcgQEAgY2xhc3MgRG9tTGlzdCggSFRNTEJhc2UgKToKICAgICAgICAgICAgICAgICBzZWxm LndyaXRlX0RPTUFJTiggcmVxdWVzdCwgZ2V0RG9tSW5mb0hhc2goIGRvbWFpbiApLCBsb25nICkK ICAgICAgICAgICAgICAgICByZXF1ZXN0LndyaXRlKCAiPC90cj5cbiIgKQogICAgICAgICBlbHNl OgotICAgICAgICAJcmVxdWVzdC53cml0ZSggIjx0ciBjb2xzcGFuPScxMCc+PHAgY2xhc3M9J3Nt YWxsJz5FcnJvciBnZXR0aW5nIGRvbWFpbiBsaXN0PGJyLz5QZXJoYXBzIFhlbkQgbm90IHJ1bm5p bmc/PC9wPjwvdHI+IikKKyAgICAgICAgICAgIHJlcXVlc3Qud3JpdGUoICI8dHIgY29sc3Bhbj0n MTAnPjxwIGNsYXNzPSdzbWFsbCc+RXJyb3IgZ2V0dGluZyBkb21haW4gbGlzdDxici8+UGVyaGFw cyBYZW5EIG5vdCBydW5uaW5nPzwvcD48L3RyPiIpCiAgICAgICAgICAgICAgICAgCiAgICAgICAg IHJlcXVlc3Qud3JpdGUoICI8L3RhYmxlPlxuIiApCiAgICAgICAgICAgICAKPT09PT0gdG9vbHMv cHl0aG9uL3hlbi9zdi9HZW5UYWJiZWQucHkgMS42IHZzIGVkaXRlZCA9PT09PQotLS0gMS42L3Rv b2xzL3B5dGhvbi94ZW4vc3YvR2VuVGFiYmVkLnB5CTIwMDQtMDctMjcgMDE6MTg6MDAgKzA5OjAw CisrKyBlZGl0ZWQvdG9vbHMvcHl0aG9uL3hlbi9zdi9HZW5UYWJiZWQucHkJMjAwNS0wNS0xOSAw MjoxOTozMiArMDk6MDAKQEAgLTExNCwxNiArMTE0LDE2IEBAIGNsYXNzIEFjdGlvblRhYiggSFRN TEJhc2UgKToKIGNsYXNzIENvbXBvc2l0ZVRhYiggSFRNTEJhc2UgKToKIAogICAgIGRlZiBfX2lu aXRfXyggc2VsZiwgdGFicyApOgotICAgIAlIVE1MQmFzZS5fX2luaXRfXyggc2VsZiApCisgICAg ICAgIEhUTUxCYXNlLl9faW5pdF9fKCBzZWxmICkKICAgICAgICAgc2VsZi50YWJzID0gdGFicwog ICAgICAgICAKICAgICBkZWYgd3JpdGVfQk9EWSggc2VsZiwgcmVxdWVzdCApOgotICAgIAlmb3Ig dGFiIGluIHNlbGYudGFiczoKKyAgICAgICAgZm9yIHRhYiBpbiBzZWxmLnRhYnM6CiAgICAgICAg ICAgICByZXF1ZXN0LndyaXRlKCAiPGJyLz4iICkKICAgICAgICAgICAgIHRhYigpLndyaXRlX0JP RFkoIHJlcXVlc3QgKQogICAgICAgICAgICAgCiAgICAgZGVmIHBlcmZvcm0oIHNlbGYsIHJlcXVl c3QgKToKLSAgICAJZm9yIHRhYiBpbiBzZWxmLnRhYnM6CisgICAgICAgIGZvciB0YWIgaW4gc2Vs Zi50YWJzOgogICAgICAgICAgICAgdGFiKCkucGVyZm9ybSggcmVxdWVzdCApCiAgICAgCiAgICAg Cj09PT09IHRvb2xzL3B5dGhvbi94ZW4vc3YvSFRNTEJhc2UucHkgMS44IHZzIGVkaXRlZCA9PT09 PQotLS0gMS44L3Rvb2xzL3B5dGhvbi94ZW4vc3YvSFRNTEJhc2UucHkJMjAwNC0wOC0xNiAyMjow NDozNyArMDk6MDAKKysrIGVkaXRlZC90b29scy9weXRob24veGVuL3N2L0hUTUxCYXNlLnB5CTIw MDUtMDUtMTkgMDI6MjA6MzggKzA5OjAwCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIEhUTUxCYXNl KCBSZXNvdXJjZSApOgogICAgICAgICAiIiJHZXQgdGhlIG1ldGhvZCBmb3IgYW4gb3BlcmF0aW9u LgogICAgICAgICBGb3Igb3BlcmF0aW9uICdmb28nIGxvb2tzIGZvciAnb3BfZm9vJy4KIAotICAg ICAgICBvcAlvcGVyYXRpb24gbmFtZQorICAgICAgICBvcCAgb3BlcmF0aW9uIG5hbWUKICAgICAg ICAgcmV0dXJucyBtZXRob2Qgb3IgTm9uZQogICAgICAgICAiIiIKICAgICAgICAgb3BfbWV0aG9k X25hbWUgPSAnb3BfJyArIG9wCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIEhUTUxCYXNlKCBSZXNv dXJjZSApOgogICAgICAgICBhbmQgYW4gSFRNTCBzdHJpbmcgb3RoZXJ3aXNlIChvciBsaXN0KS4K ICAgICAgICAgTWV0aG9kcyBtYXkgYWxzbyByZXR1cm4gYSBEZWZlcnJlZCAoZm9yIGluY29tcGxl dGUgcHJvY2Vzc2luZykuCiAKLSAgICAgICAgcmVxCXJlcXVlc3QKKyAgICAgICAgcmVxIHJlcXVl c3QKICAgICAgICAgIiIiCiAgICAgICAgIG9wID0gcmVxLmFyZ3MuZ2V0KCdvcCcpCiAgICAgICAg IGlmIG5vdCBvcCBpcyBOb25lIGFuZCBsZW4ob3ApID09IDE6Cj09PT09IHRvb2xzL3B5dGhvbi94 ZW4vc3YvTWFpbi5weSAxLjExIHZzIGVkaXRlZCA9PT09PQotLS0gMS4xMS90b29scy9weXRob24v eGVuL3N2L01haW4ucHkJMjAwNC0xMS0wMiAxMDoyNjozOSArMDk6MDAKKysrIGVkaXRlZC90b29s cy9weXRob24veGVuL3N2L01haW4ucHkJMjAwNS0wNS0xOSAwMjoyNTowMCArMDk6MDAKQEAgLTMx LDkgKzMxLDkgQEAgY2xhc3MgTWFpbiggSFRNTEJhc2UgKToKICAgICAgICAgCiAgICAgZGVmIHJl bmRlcl9QT1NUKCBzZWxmLCByZXF1ZXN0ICk6CiAgICAgCi0gICAgCSNkZWNpZGUgd2hhdCBtb2R1 bGUgcG9zdCdkIHRoZSBhY3Rpb24KKyAgICAgICAgI2RlY2lkZSB3aGF0IG1vZHVsZSBwb3N0J2Qg dGhlIGFjdGlvbgogICAgICAgICAgICAgICAgIAotICAgIAlhcmdzID0gZ2V0VmFyKCAnYXJncycs IHJlcXVlc3QgKQorICAgICAgICBhcmdzID0gZ2V0VmFyKCAnYXJncycsIHJlcXVlc3QgKQogCiAg ICAgICAgIG1vZCA9IGdldFZhciggJ21vZCcsIHJlcXVlc3QgKQogICAgICAgICAgICAgICAgIApA QCAtNDgsNyArNDgsNyBAQCBjbGFzcyBNYWluKCBIVE1MQmFzZSApOgogICAgICAgICByZXR1cm4g c2VsZi5yZW5kZXJfR0VUKCByZXF1ZXN0ICkKIAogICAgIGRlZiBtYWluVXJsV3JpdGVyKCBzZWxm LCBtb2R1bGUgKToKLSAgICAJZGVmIGZ1biggZiApOgorICAgICAgICBkZWYgZnVuKCBmICk6CiAg ICAgICAgICAgICByZXR1cm4gIk1haW4ucnB5P21vZD0lcyVzIiAlICggbW9kdWxlLCBmICkKICAg ICAgICAgcmV0dXJuIGZ1biAgICAKICAgICAgICAgCkBAIC05OCwxNiArOTgsMTYgQEAgY2xhc3Mg TWFpbiggSFRNTEJhc2UgKToKICAgICAgICAgCiAgICAgICAgICAgICAgICAgCiAgICAgZGVmIG9w X2Rlc3Ryb3koIHNlbGYsIHJlcXVlc3QgKToKLSAgICAJZG9tID0gZ2V0VmFyKCAnZG9tJywgcmVx dWVzdCApCisgICAgICAgIGRvbSA9IGdldFZhciggJ2RvbScsIHJlcXVlc3QgKQogICAgICAgICBp ZiBub3QgZG9tIGlzIE5vbmUgYW5kIGRvbSAhPSAiMCI6CiAgICAgICAgICAgICBzZXJ2ZXIueGVu ZF9kb21haW5fZGVzdHJveSggaW50KCBkb20gKSwgImhhbHQiICkgCiAgICAgICAgICAgICAgICAg IAogICAgIGRlZiBvcF9wYXVzZSggc2VsZiwgcmVxdWVzdCApOgotICAgIAlkb20gPSBnZXRWYXIo ICdkb20nLCByZXF1ZXN0ICkKKyAgICAgICAgZG9tID0gZ2V0VmFyKCAnZG9tJywgcmVxdWVzdCAp CiAgICAgICAgIGlmIG5vdCBkb20gaXMgTm9uZSBhbmQgZG9tICE9ICIwIjoKICAgICAgICAgICAg IHNlcnZlci54ZW5kX2RvbWFpbl9wYXVzZSggaW50KCBkb20gKSApICAgICAgCiAgICAgCiAgICAg ZGVmIG9wX3VucGF1c2UoIHNlbGYsIHJlcXVlc3QgKToKLSAgICAJZG9tID0gZ2V0VmFyKCAnZG9t JywgcmVxdWVzdCApCisgICAgICAgIGRvbSA9IGdldFZhciggJ2RvbScsIHJlcXVlc3QgKQogICAg ICAgICBpZiBub3QgZG9tIGlzIE5vbmUgYW5kIGRvbSAhPSAiMCI6CiAgICAgICAgICAgICBzZXJ2 ZXIueGVuZF9kb21haW5fdW5wYXVzZSggaW50KCBkb20gKSApICAgICAgCj09PT09IHRvb2xzL3B5 dGhvbi94ZW4vc3YvTm9kZUluZm8ucHkgMS45IHZzIGVkaXRlZCA9PT09PQotLS0gMS45L3Rvb2xz L3B5dGhvbi94ZW4vc3YvTm9kZUluZm8ucHkJMjAwNC0xMS0wMiAwMDo0OTo1NCArMDk6MDAKKysr IGVkaXRlZC90b29scy9weXRob24veGVuL3N2L05vZGVJbmZvLnB5CTIwMDUtMDUtMTkgMDI6Mjk6 MjEgKzA5OjAwCkBAIC0xNCwxNiArMTQsMTYgQEAgY2xhc3MgTm9kZUluZm8oIEdlblRhYmJlZCAp OgogCiBjbGFzcyBOb2RlR2VuZXJhbFRhYiggQ29tcG9zaXRlVGFiICk6CiAgICAgZGVmIF9faW5p dF9fKCBzZWxmICk6Ci0gICAgCUNvbXBvc2l0ZVRhYi5fX2luaXRfXyggc2VsZiwgWyBOb2RlSW5m b1RhYiwgTm9kZUFjdGlvblRhYiBdICkgICAgICAgIAorICAgICAgICBDb21wb3NpdGVUYWIuX19p bml0X18oIHNlbGYsIFsgTm9kZUluZm9UYWIsIE5vZGVBY3Rpb25UYWIgXSApICAgICAgICAKICAg ICAgICAgCiBjbGFzcyBOb2RlSW5mb1RhYiggR2VuZXJhbFRhYiApOgogICAgICAgICAgICAgICAg ICAgICAgICAgCiAgICAgZGVmIF9faW5pdF9fKCBzZWxmICk6CiAgICAgICAgICAKLSAgICAJbm9k ZUluZm8gPSB7fQorICAgICAgICBub2RlSW5mbyA9IHt9CiAgICAgICAgIHRyeToKICAgICAgICAg ICAgIG5vZGVJbmZvID0gc3hwMmhhc2goIHNlcnZlci54ZW5kX25vZGUoKSApCi0gICAJZXhjZXB0 OgorICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBub2RlSW5mb1sgJ3N5c3RlbScgXSA9ICdF cnJvciBnZXR0aW5nIG5vZGUgaW5mbycKICAgICAgICAgICAgICAKICAgICAgICAgZGljdFRpdGxl cyA9IHt9CkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIE5vZGVJbmZvVGFiKCBHZW5lcmFsVGFiICk6 CiBjbGFzcyBOb2RlRG1lc2dUYWIoIFByZVRhYiApOgogCiAgICAgZGVmIF9faW5pdF9fKCBzZWxm ICk6Ci0gICAgCXRyeToKKyAgICAgICAgdHJ5OgogICAgICAgICAgICAgZG1lc2cgPSBzZXJ2ZXIu eGVuZF9ub2RlX2dldF9kbWVzZygpCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIGRtZXNn ID0gIkVycm9yIGdldHRpbmcgbm9kZSBpbmZvcm1hdGlvbjogWGVuRCBub3QgcnVubmluZz8iCkBA IC01MywxMiArNTMsMTIgQEAgY2xhc3MgTm9kZUFjdGlvblRhYiggQWN0aW9uVGFiICk6CiAKICAg ICBkZWYgX19pbml0X18oIHNlbGYgKToKICAgICAgICAgQWN0aW9uVGFiLl9faW5pdF9fKCBzZWxm LCB7ICJzaHV0ZG93biIgOiAoICJTaHV0ZG93biB0aGUgTm9kZSIsICJzaHV0ZG93bi5wbmciICks Ci0gICAgICAgIAkicmVib290IiA6ICggIlJlYm9vdCB0aGUgTm9kZSIsICJyZWJvb3QucG5nIiAp IH0gKSAgICAKKyAgICAgICAgICAgICJyZWJvb3QiIDogKCAiUmVib290IHRoZSBOb2RlIiwgInJl Ym9vdC5wbmciICkgfSApICAgIAogICAgICAgICAKICAgICBkZWYgb3Bfc2h1dGRvd24oIHNlbGYs IHJlcXVlc3QgKToKLSAgICAJcHJpbnQgIj5Ob2RlU2h1dERvd24iCi0gICAgCXNlcnZlci54ZW5k X25vZGVfc2h1dGRvd24oKQorICAgICAgICBwcmludCAiPk5vZGVTaHV0RG93biIKKyAgICAgICAg c2VydmVyLnhlbmRfbm9kZV9zaHV0ZG93bigpCiAgICAgCiAgICAgZGVmIG9wX3JlYm9vdCggc2Vs ZiwgcmVxdWVzdCApOgotICAgIAlwcmludCAiPk5vZGVSZWJvb3QiCisgICAgICAgIHByaW50ICI+ Tm9kZVJlYm9vdCIKICAgICAgICAgc2VydmVyLnhlbmRfbm9kZV9yZWJvb3QoKQo9PT09PSB0b29s cy9weXRob24veGVuL3N2L1dpemFyZC5weSAxLjcgdnMgZWRpdGVkID09PT09Ci0tLSAxLjcvdG9v bHMvcHl0aG9uL3hlbi9zdi9XaXphcmQucHkJMjAwNC0wNy0yOSAyMTo1NDo0NCArMDk6MDAKKysr IGVkaXRlZC90b29scy9weXRob24veGVuL3N2L1dpemFyZC5weQkyMDA1LTA1LTE5IDAyOjQ0OjA1 ICswOTowMApAQCAtMTUsMTEgKzE1LDExIEBAIGNsYXNzIFdpemFyZCggSFRNTEJhc2UgKToKICAg ICAgICAgc2VsZi51cmxXcml0ZXIgPSB1cmxXcml0ZXIKICAgICAgICAgCiAgICAgZGVmIHdyaXRl X01FTlUoIHNlbGYsIHJlcXVlc3QgKToKLSAgICAJcmVxdWVzdC53cml0ZSggIjxwIGNsYXNzPSdz bWFsbCc+PGEgaHJlZj0nJXMnPiVzPC9hPjwvcD4iICUgKHNlbGYudXJsV3JpdGVyKCAnJyApLCBz ZWxmLnRpdGxlKSApIAorICAgICAgICByZXF1ZXN0LndyaXRlKCAiPHAgY2xhc3M9J3NtYWxsJz48 YSBocmVmPSclcyc+JXM8L2E+PC9wPiIgJSAoc2VsZi51cmxXcml0ZXIoICcnICksIHNlbGYudGl0 bGUpICkgCiAgICAgCiAgICAgZGVmIHdyaXRlX0JPRFkoIHNlbGYsIHJlcXVlc3QgKToKICAgICAg ICAgCi0gICAJcmVxdWVzdC53cml0ZSggIjx0YWJsZSB3aWR0aD0nMTAwJScgYm9yZGVyPScwJyBj ZWxsc3BhY2luZz0nMCcgY2VsbHBhZGRpbmc9JzAnPjx0cj48dGQ+IiApCisgICAgICAgIHJlcXVl c3Qud3JpdGUoICI8dGFibGUgd2lkdGg9JzEwMCUnIGJvcmRlcj0nMCcgY2VsbHNwYWNpbmc9JzAn IGNlbGxwYWRkaW5nPScwJz48dHI+PHRkPiIgKQogICAgICAgICByZXF1ZXN0LndyaXRlKCAiPHAg YWxpZ249J2NlbnRlcic+PHU+JXM8L3U+PC9wPjwvdGQ+PC90cj48dHI+PHRkPiIgJSBzZWxmLnRp dGxlICkKICAgICAgICAgCiAgICAgICAgIGN1cnJTaGVldCA9IGdldFZhciggJ3NoZWV0JywgcmVx dWVzdCApCkBAIC01MSw4ICs1MSw4IEBAIGNsYXNzIFdpemFyZCggSFRNTEJhc2UgKToKICAgICAg ICAgCiAgICAgICAgIHJlcXVlc3Qud3JpdGUoICI8L3RkPjwvdHI+PHRyPjx0ZD48dGFibGUgd2lk dGg9JzEwMCUnIGJvcmRlcj0nMCcgY2VsbHNwYWNpbmc9JzAnIGNlbGxwYWRkaW5nPScwJz48dHI+ IiApCiAgICAgICAgIHJlcXVlc3Qud3JpdGUoICI8dGQgd2lkdGg9JzgwJSc+PC90ZD48dGQgd2lk dGg9JzIwJScgYWxpZ249J2NlbnRlcic+PHAgYWxpZ249J2NlbnRlcic+IiApCi0JaWYgY3VyclNo ZWV0ID4gMDoKLSAgICAgICAJICAgIHJlcXVlc3Qud3JpdGUoICI8aW1nIHNyYz0naW1hZ2VzL3By ZXZpb3VzLnBuZycgb25jbGljaz0nZG9PcCggXCJwcmV2XCIgKScgb25tb3VzZW92ZXI9J3VwZGF0 ZSggXCJ3aXpUZXh0XCIsIFwiUHJldmlvdXNcIiApJyBvbm1vdXNlb3V0PSd1cGRhdGUoIFwid2l6 VGV4dFwiLCBcIiZuYnNwO1wiICknPiZuYnNwOyIgKQorICAgICAgICBpZiBjdXJyU2hlZXQgPiAw OgorICAgICAgICAgICAgcmVxdWVzdC53cml0ZSggIjxpbWcgc3JjPSdpbWFnZXMvcHJldmlvdXMu cG5nJyBvbmNsaWNrPSdkb09wKCBcInByZXZcIiApJyBvbm1vdXNlb3Zlcj0ndXBkYXRlKCBcIndp elRleHRcIiwgXCJQcmV2aW91c1wiICknIG9ubW91c2VvdXQ9J3VwZGF0ZSggXCJ3aXpUZXh0XCIs IFwiJm5ic3A7XCIgKSc+Jm5ic3A7IiApCiAgICAgICAgIGlmIGN1cnJTaGVldCA8ICggbGVuKCBz ZWxmLnNoZWV0cyApIC0gMiApOiAgICAgICAgCiAgICAgICAgICAgICByZXF1ZXN0LndyaXRlKCAi PGltZyBzcmM9J2ltYWdlcy9uZXh0LnBuZycgb25jbGljaz0nZG9PcCggXCJuZXh0XCIgKScgb25t b3VzZW92ZXI9J3VwZGF0ZSggXCJ3aXpUZXh0XCIsIFwiTmV4dFwiICknIG9ubW91c2VvdXQ9J3Vw ZGF0ZSggXCJ3aXpUZXh0XCIsIFwiJm5ic3A7XCIgKSc+IiApCiAgICAgICAgIGVsaWYgY3VyclNo ZWV0ID09ICggbGVuKCBzZWxmLnNoZWV0cyApIC0gMiApOgpAQCAtNjEsMTMgKzYxLDEzIEBAIGNs YXNzIFdpemFyZCggSFRNTEJhc2UgKToKICAgICAgICAgcmVxdWVzdC53cml0ZSggIjwvdGQ+PC90 cj48L3RhYmxlPiIgKQogICAgICAgICAKICAgICBkZWYgb3BfbmV4dCggc2VsZiwgcmVxdWVzdCAp OgotICAgIAlwYXNzCisgICAgICAgIHBhc3MKICAgICAgICAgCiAgICAgZGVmIG9wX3ByZXYoIHNl bGYsIHJlcXVlc3QgKToKLSAgICAJcGFzcworICAgICAgICBwYXNzCiAgICAgICAgIAogICAgIGRl ZiBvcF9maW5pc2goIHNlbGYsIHJlcXVlc3QgKToKLSAgICAJcGFzcyAgCisgICAgICAgIHBhc3Mg IAogICAgICAgICAKIGNsYXNzIFNoZWV0KCBIVE1MQmFzZSApOgogCkBAIC04MCw5ICs4MCw5IEBA IGNsYXNzIFNoZWV0KCBIVE1MQmFzZSApOgogICAgICAgICBzZWxmLnBhc3NiYWNrID0gTm9uZQog ICAgICAgICAKICAgICBkZWYgcGFyc2VGb3JtKCBzZWxmLCByZXF1ZXN0ICk6Ci0gICAgCWRvX25v dF9wYXJzZSA9IFsgJ21vZCcsICdvcCcsICdzaGVldCcsICdwYXNzYmFjaycgXSAKKyAgICAgICAg ZG9fbm90X3BhcnNlID0gWyAnbW9kJywgJ29wJywgJ3NoZWV0JywgJ3Bhc3NiYWNrJyBdIAogICAg IAotICAgIAlwYXNzZWRfYmFjayA9IHJlcXVlc3QuYXJncworICAgICAgICBwYXNzZWRfYmFjayA9 IHJlcXVlc3QuYXJncwogICAgICAgICAKICAgICAgICAgdGVtcF9wYXNzYmFjayA9IHBhc3NlZF9i YWNrLmdldCggInBhc3NiYWNrIiApCiAgICAgICAgIApAQCAtMTA1LDE4ICsxMDUsMTggQEAgY2xh c3MgU2hlZXQoIEhUTUxCYXNlICk6CiAgICAgICAgIAogICAgIGRlZiB3cml0ZV9CT0RZKCBzZWxm LCByZXF1ZXN0LCBlcnIgKToKICAgICAKLSAgICAJaWYgbm90IHNlbGYucGFzc2JhY2s6IHNlbGYu cGFyc2VGb3JtKCByZXF1ZXN0ICkKKyAgICAgICAgaWYgbm90IHNlbGYucGFzc2JhY2s6IHNlbGYu cGFyc2VGb3JtKCByZXF1ZXN0ICkKICAgICAgICAgCi0gICAJcmVxdWVzdC53cml0ZSggIjxwPiVz PC9wPiIgJSBzZWxmLnRpdGxlICkKKyAgICAgICAgcmVxdWVzdC53cml0ZSggIjxwPiVzPC9wPiIg JSBzZWxmLnRpdGxlICkKICAgICAKLSAgICAJcHJldmlvdXNfdmFsdWVzID0gc3N4cDJoYXNoKCBz dHJpbmcyc3hwKCBzZWxmLnBhc3NiYWNrICkgKSAjZ2V0IHRoZSBoYXNoIGZvciBxdWljayByZWZl cmVuY2UKKyAgICAgICAgcHJldmlvdXNfdmFsdWVzID0gc3N4cDJoYXNoKCBzdHJpbmcyc3hwKCBz ZWxmLnBhc3NiYWNrICkgKSAjZ2V0IHRoZSBoYXNoIGZvciBxdWljayByZWZlcmVuY2UKICAgICAg ICAgCiAgICAgICAgIHJlcXVlc3Qud3JpdGUoICI8dGFibGUgd2lkdGg9JzEwMCUnIGNlbGxwYWRk aW5nPScwJyBjZWxsc3BhY2luZz0nMScgYm9yZGVyPScwJz4iICkKICAgICAgICAgCi0gICAgCWZv ciAoZmVpbGQsIGNvbnRyb2wpIGluIHNlbGYuZmVpbGRzOgorICAgICAgICBmb3IgKGZlaWxkLCBj b250cm9sKSBpbiBzZWxmLmZlaWxkczoKICAgICAgICAgICAgIGNvbnRyb2wud3JpdGVfQ29udHJv bCggcmVxdWVzdCwgcHJldmlvdXNfdmFsdWVzLmdldCggZmVpbGQgKSApCiAgICAgICAgICAgICBp ZiBlcnIgYW5kIG5vdCBjb250cm9sLnZhbGlkYXRlKCBwcmV2aW91c192YWx1ZXMuZ2V0KCBmZWls ZCApICk6Ci0gICAgICAgICAgICAJY29udHJvbC53cml0ZV9IZWxwKCByZXF1ZXN0ICkKKyAgICAg ICAgICAgICAgICBjb250cm9sLndyaXRlX0hlbHAoIHJlcXVlc3QgKQogICAgICAgICAgICAgCiAg ICAgICAgIHJlcXVlc3Qud3JpdGUoICI8L3RhYmxlPiIgKQogICAgICAgICAgICAgCkBAIC0xMjUs MTggKzEyNSwxOCBAQCBjbGFzcyBTaGVldCggSFRNTEJhc2UgKToKICAgICAgICAgcmVxdWVzdC53 cml0ZSggIjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3Zpc2l0ZWQtc2hlZXQlcycgdmFsdWU9 J1RydWUnPjwvcD4iICUgc2VsZi5sb2NhdGlvbiApCiAgICAgICAgICAgICAgICAgCiAgICAgZGVm IGFkZENvbnRyb2woIHNlbGYsIGNvbnRyb2wgKToKLSAgICAJc2VsZi5mZWlsZHMuYXBwZW5kKCBb IGNvbnRyb2wuZ2V0TmFtZSgpLCBjb250cm9sIF0gKQorICAgICAgICBzZWxmLmZlaWxkcy5hcHBl bmQoIFsgY29udHJvbC5nZXROYW1lKCksIGNvbnRyb2wgXSApCiAgICAgICAgIAogICAgIGRlZiB2 YWxpZGF0ZSggc2VsZiwgcmVxdWVzdCApOgogICAgIAogICAgICAgICBpZiBub3Qgc2VsZi5wYXNz YmFjazogc2VsZi5wYXJzZUZvcm0oIHJlcXVlc3QgKQogICAgICAgICAgICAgCi0gICAgCWNoZWNr ID0gVHJ1ZQorICAgICAgICBjaGVjayA9IFRydWUKICAgICAgICAgCiAgICAgICAgIHByZXZpb3Vz X3ZhbHVlcyA9IHNzeHAyaGFzaCggc3RyaW5nMnN4cCggc2VsZi5wYXNzYmFjayApICkgI2dldCB0 aGUgaGFzaCBmb3IgcXVpY2sgcmVmZXJlbmNlCi0gICAgCWlmIERFQlVHOiBwcmludCBwcmV2aW91 c192YWx1ZXMKKyAgICAgICAgaWYgREVCVUc6IHByaW50IHByZXZpb3VzX3ZhbHVlcwogICAgICAg Ci0gICAgICAJZm9yIChmZWlsZCwgY29udHJvbCkgaW4gc2VsZi5mZWlsZHM6CisgICAgICAgIGZv ciAoZmVpbGQsIGNvbnRyb2wpIGluIHNlbGYuZmVpbGRzOgogICAgICAgICAgICAgaWYgbm90IGNv bnRyb2wudmFsaWRhdGUoIHByZXZpb3VzX3ZhbHVlcy5nZXQoIGZlaWxkICkgKToKICAgICAgICAg ICAgICAgICBjaGVjayA9IEZhbHNlCiAgICAgICAgICAgICAgICAgaWYgREVCVUc6IHByaW50ICI+ ICVzID0gJXMiICUgKGZlaWxkLCBwcmV2aW91c192YWx1ZXMuZ2V0KCBmZWlsZCApKQpAQCAtMTU4 LDE2ICsxNTgsMTYgQEAgY2xhc3MgU2hlZXRDb250cm9sKCBIVE1MQmFzZSApOgogICAgICAgICBy ZXF1ZXN0LndyaXRlKCAiICVzPC9wPjwvdGQ+PC90cj4iICUgc2VsZi5yZWdfZXhwICkKICAgICAg ICAgCiAgICAgZGVmIHZhbGlkYXRlKCBzZWxmLCBwZXJzaXN0ZWRWYWx1ZSApOgotICAgIAlpZiBw ZXJzaXN0ZWRWYWx1ZSBpcyBOb25lOgorICAgICAgICBpZiBwZXJzaXN0ZWRWYWx1ZSBpcyBOb25l OgogICAgICAgICAgICAgcGVyc2lzdGVkVmFsdWUgPSAiIgogICAgICAgICAgICAgCiAgICAgICAg IHJldHVybiBub3QgcmUuY29tcGlsZSggc2VsZi5yZWdfZXhwICkubWF0Y2goIHBlcnNpc3RlZFZh bHVlICkgaXMgTm9uZQogCiAgICAgZGVmIGdldE5hbWUoIHNlbGYgKToKLSAgICAJcmV0dXJuIHNl bGYubmFtZQorICAgICAgICByZXR1cm4gc2VsZi5uYW1lCiAgICAgICAgIAogICAgIGRlZiBzZXRO YW1lKCBzZWxmLCBuYW1lICk6Ci0gICAgCXNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5u YW1lID0gbmFtZQogICAgICAgICAKIGNsYXNzIElucHV0Q29udHJvbCggU2hlZXRDb250cm9sICk6 CiAKQEAgLTE4MCw3ICsxODAsNyBAQCBjbGFzcyBJbnB1dENvbnRyb2woIFNoZWV0Q29udHJvbCAp OgogICAgICAgICBzZWxmLmhlbHBfdGV4dCA9IGhlbHBfdGV4dAogICAgICAgICAKICAgICBkZWYg d3JpdGVfQ29udHJvbCggc2VsZiwgcmVxdWVzdCwgcGVyc2lzdGVkVmFsdWUgKToKLSAgICAJaWYg cGVyc2lzdGVkVmFsdWUgaXMgTm9uZToKKyAgICAgICAgaWYgcGVyc2lzdGVkVmFsdWUgaXMgTm9u ZToKICAgICAgICAgICAgIHBlcnNpc3RlZFZhbHVlID0gc2VsZi5kZWZhdWx0VmFsdWUKICAgICAg ICAgCiAgICAgICAgIHJlcXVlc3Qud3JpdGUoICI8dHI+PHRkIHdpZHRoPSc1MCUlJz48cD4lczwv cD48L3RkPjx0ZCB3aWR0aD0nNTAlJSc+PGlucHV0IHNpemU9JzQwJ3R5cGU9J3RleHQnIG5hbWU9 JyVzJyB2YWx1ZT1cIiVzXCI+PC90ZD48L3RyPiIgJSAoc2VsZi5odW1hblRleHQsIHNlbGYuZ2V0 TmFtZSgpLCBwZXJzaXN0ZWRWYWx1ZSkgKQpAQCAtMTkyLDM1ICsxOTIsMzUgQEAgY2xhc3MgSW5w dXRDb250cm9sKCBTaGVldENvbnRyb2wgKToKIGNsYXNzIFRleHRDb250cm9sKCBTaGVldENvbnRy b2wgKToKIAogICAgIGRlZiBfX2luaXRfXyggc2VsZiwgdGV4dCApOgotICAgIAlTaGVldENvbnRy b2wuX19pbml0X18oIHNlbGYgKQorICAgICAgICBTaGVldENvbnRyb2wuX19pbml0X18oIHNlbGYg KQogICAgICAgICBzZWxmLnRleHQgPSB0ZXh0CiAgICAgICAgIAogICAgIGRlZiB3cml0ZV9Db250 cm9sKCBzZWxmLCByZXF1ZXN0LCBwZXJzaXN0ZWRWYWx1ZSApOgotICAgIAlyZXF1ZXN0LndyaXRl KCAiPHRyPjx0ZCBjb2xzcGFuPScyJz48cD4lczwvcD48L3RkPjwvdHI+IiAlIHNlbGYudGV4dCAp CisgICAgICAgIHJlcXVlc3Qud3JpdGUoICI8dHI+PHRkIGNvbHNwYW49JzInPjxwPiVzPC9wPjwv dGQ+PC90cj4iICUgc2VsZi50ZXh0ICkKIAogY2xhc3MgU21hbGxUZXh0Q29udHJvbCggU2hlZXRD b250cm9sICk6CiAKICAgICBkZWYgX19pbml0X18oIHNlbGYsIHRleHQgKToKLSAgICAJU2hlZXRD b250cm9sLl9faW5pdF9fKCBzZWxmICkKKyAgICAgICAgU2hlZXRDb250cm9sLl9faW5pdF9fKCBz ZWxmICkKICAgICAgICAgc2VsZi50ZXh0ID0gdGV4dAogICAgICAgICAKICAgICBkZWYgd3JpdGVf Q29udHJvbCggc2VsZiwgcmVxdWVzdCwgcGVyc2lzdGVkVmFsdWUgKToKLSAgICAJcmVxdWVzdC53 cml0ZSggIjx0cj48dGQgY29sc3Bhbj0nMic+PHAgY2xhc3M9J3NtYWxsJz4lczwvcD48L3RyPjwv dGQ+IiAlIHNlbGYudGV4dCApCisgICAgICAgIHJlcXVlc3Qud3JpdGUoICI8dHI+PHRkIGNvbHNw YW49JzInPjxwIGNsYXNzPSdzbWFsbCc+JXM8L3A+PC90cj48L3RkPiIgJSBzZWxmLnRleHQgKQog ICAgICAgICAKIGNsYXNzIExpc3RDb250cm9sKCBTaGVldENvbnRyb2wgKToKIAogICAgIGRlZiBf X2luaXRfXyggc2VsZiwgbmFtZSwgb3B0aW9ucywgaHVtYW5UZXh0ICk6Ci0gICAgCVNoZWV0Q29u dHJvbC5fX2luaXRfXyggc2VsZiApCisgICAgICAgIFNoZWV0Q29udHJvbC5fX2luaXRfXyggc2Vs ZiApCiAgICAgICAgIHNlbGYuc2V0TmFtZSggbmFtZSApCiAgICAgICAgIHNlbGYub3B0aW9ucyA9 IG9wdGlvbnMKICAgICAgICAgc2VsZi5odW1hblRleHQgPSBodW1hblRleHQKICAgICAgICAgCiAg ICAgZGVmIHdyaXRlX0NvbnRyb2woIHNlbGYsIHJlcXVlc3QsIHBlcnNpc3RlZFZhbHVlICk6CiAg ICAgICAgIHJlcXVlc3Qud3JpdGUoICI8dHI+PHRkIHdpZHRoPSc1MCUlJz48cD4lczwvcD48L3Rk Pjx0ZCB3aWR0aD0nNTAlJSc+IiAlIHNlbGYuaHVtYW5UZXh0ICkKLSAgICAJcmVxdWVzdC53cml0 ZSggIjxzZWxlY3QgbmFtZT0nJXMnPiIgJSBzZWxmLmdldE5hbWUoKSApCisgICAgICAgIHJlcXVl c3Qud3JpdGUoICI8c2VsZWN0IG5hbWU9JyVzJz4iICUgc2VsZi5nZXROYW1lKCkgKQogICAgICAg ICBmb3IgKHZhbHVlLCB0ZXh0KSBpbiBzZWxmLm9wdGlvbnM6CiAgICAgICAgICAgICBpZiB2YWx1 ZSA9PSBwZXJzaXN0ZWRWYWx1ZToKLSAgICAgICAgICAgIAlyZXF1ZXN0LndyaXRlKCAiPG9wdGlv biB2YWx1ZT0nJXMnIHNlbGVjdGVkPiVzXG4iICUgKHZhbHVlLCB0ZXh0KSApCisgICAgICAgICAg ICAgICAgcmVxdWVzdC53cml0ZSggIjxvcHRpb24gdmFsdWU9JyVzJyBzZWxlY3RlZD4lc1xuIiAl ICh2YWx1ZSwgdGV4dCkgKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByZXF1 ZXN0LndyaXRlKCAiPG9wdGlvbiB2YWx1ZT0nJXMnPiVzXG4iICUgKHZhbHVlLCB0ZXh0KSApCiAg ICAgICAgIHJlcXVlc3Qud3JpdGUoICI8L3NlbGVjdD48L3RkPjwvdHI+IiApCkBAIC0yMzUsNyAr MjM1LDcgQEAgY2xhc3MgTGlzdENvbnRyb2woIFNoZWV0Q29udHJvbCApOgogY2xhc3MgRmlsZUNv bnRyb2woIElucHV0Q29udHJvbCApOgogCiAgICAgZGVmIF9faW5pdF9fKCBzZWxmLCBuYW1lLCBk ZWZhdWx0VmFsdWUsIGh1bWFuVGV4dCwgIHJlZ19leHAgPSAiLioiLCBoZWxwX3RleHQgPSAiWW91 IG11c3QgZW50ZXIgdGhlIGFwcHJvcHJpYXRlIGRldGFpbHMgaW4gdGhpcyBmZWlsZC4iICk6Ci0J SW5wdXRDb250cm9sLl9faW5pdF9fKCBzZWxmLCBuYW1lLCBkZWZhdWx0VmFsdWUsIGh1bWFuVGV4 dCApCisgICAgICAgIElucHV0Q29udHJvbC5fX2luaXRfXyggc2VsZiwgbmFtZSwgZGVmYXVsdFZh bHVlLCBodW1hblRleHQgKQogICAgICAgICAKICAgICBkZWYgdmFsaWRhdGUoIHNlbGYsIHBlcnNp c3RlZFZhbHVlICk6CiAgICAgICAgIGlmIHBlcnNpc3RlZFZhbHVlIGlzIE5vbmU6IHJldHVybiBG YWxzZQpAQCAtMjYwLDkgKzI2MCw5IEBAIGNsYXNzIFRpY2tDb250cm9sKCBTaGVldENvbnRyb2wg KToKICAgICAgICAgcmVxdWVzdC53cml0ZSggIjx0cj48dGQgd2lkdGg9JzUwJSUnPjxwPiVzPC9w PjwvdGQ+PHRkIHdpZHRoPSc1MCUlJz4iICUgc2VsZi5odW1hblRleHQgKQogICAgICAgICAKICAg ICAgICAgaWYgcGVyc2lzdGVkVmFsdWUgPT0gJ1RydWUnOgotICAgIAkgICAgcmVxdWVzdC53cml0 ZSggIjxpbnB1dCB0eXBlPSdjaGVja2JveCcgbmFtZT0nJXMnIHZhbHVlPSdUcnVlJyBjaGVja2Vk PiIgJSBzZWxmLmdldE5hbWUoKSApCisgICAgICAgICAgICByZXF1ZXN0LndyaXRlKCAiPGlucHV0 IHR5cGU9J2NoZWNrYm94JyBuYW1lPSclcycgdmFsdWU9J1RydWUnIGNoZWNrZWQ+IiAlIHNlbGYu Z2V0TmFtZSgpICkKICAgICAgICAgZWxzZToKLSAgICAJICAgIHJlcXVlc3Qud3JpdGUoICI8aW5w dXQgdHlwZT0nY2hlY2tib3gnIG5hbWU9JyVzJyB2YWx1ZT0nVHJ1ZSc+IiAlIHNlbGYuZ2V0TmFt ZSgpICkKKyAgICAgICAgICAgIHJlcXVlc3Qud3JpdGUoICI8aW5wdXQgdHlwZT0nY2hlY2tib3gn IG5hbWU9JyVzJyB2YWx1ZT0nVHJ1ZSc+IiAlIHNlbGYuZ2V0TmFtZSgpICkKICAgICAgICAgICAg IAogICAgICAgICByZXF1ZXN0LndyaXRlKCAiPC9zZWxlY3Q+PC90ZD48L3RyPiIgKQogCj09PT09 IHRvb2xzL3B5dGhvbi94ZW4vc3YvdXRpbC5weSAxLjEwIHZzIGVkaXRlZCA9PT09PQotLS0gMS4x MC90b29scy9weXRob24veGVuL3N2L3V0aWwucHkJMjAwNC0wOC0xNiAyMjowNDozNyArMDk6MDAK KysrIGVkaXRlZC90b29scy9weXRob24veGVuL3N2L3V0aWwucHkJMjAwNS0wNS0xOSAwMjo0NTo1 NyArMDk6MDAKQEAgLTEwLDE0ICsxMCwxNCBAQCBkZWYgZ2V0RG9tSW5mb0hhc2goIGRvbWFpbiAp OgogICAgICAgICBkb21JbmZvSGFzaCA9IHN4cDJoYXNoKCBzZXJ2ZXIueGVuZF9kb21haW4oIGRv bWFpbiApICkKICAgICAgICAgZG9tSW5mb0hhc2hbJ2RvbSddID0gZG9tYWluCiAgICAgZXhjZXB0 OgotICAgIAlkb21JbmZvSGFzaFsnbmFtZSddID0gIkVycm9yIGdldHRpbmcgZG9tYWluIGRldGFp bHMiCisgICAgICAgIGRvbUluZm9IYXNoWyduYW1lJ10gPSAiRXJyb3IgZ2V0dGluZyBkb21haW4g ZGV0YWlscyIKICAgICByZXR1cm4gZG9tSW5mb0hhc2gKIAogZGVmIHN4cDJoYXNoKCBzICk6CiAg ICAgc3hwaGFzaCA9IHt9CiAgICAgICAgIAogICAgIGZvciBjaGlsZCBpbiBzeHAuY2hpbGRyZW4o IHMgKToKLSAgICAJaWYgaXNpbnN0YW5jZSggY2hpbGQsIHR5cGVzLkxpc3RUeXBlICkgYW5kIGxl biggY2hpbGQgKSA+IDE6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoIGNoaWxkLCB0eXBlcy5MaXN0 VHlwZSApIGFuZCBsZW4oIGNoaWxkICkgPiAxOgogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSgg Y2hpbGRbMV0sIHR5cGVzLkxpc3RUeXBlICkgYW5kIGxlbiggY2hpbGQgKSA+IDE6CiAgICAgICAg ICAgICAgICAgc3hwaGFzaFsgY2hpbGRbMF0gXSA9IHN4cDJoYXNoKCBjaGlsZFsxXSApCiAgICAg ICAgICAgICBlbHNlOgpAQCAtMzgsNyArMzgsNyBAQCBkZWYgaGFzaDJzeHAoIGggKToKICAgICBo YXNoc3hwID0gW10KICAgICAKICAgICBmb3IgKGtleSwgaXRlbSkgaW4gaC5pdGVtcygpOgotICAg IAloYXNoc3hwLmFwcGVuZCggW2tleSwgaXRlbV0gKQorICAgICAgICBoYXNoc3hwLmFwcGVuZCgg W2tleSwgaXRlbV0gKQogICAgICAgICAKICAgICByZXR1cm4gaGFzaHN4cCAgICAKICAgICAKPT09 PT0gdG9vbHMvcHl0aG9uL3hlbi93ZWIvU3J2QmFzZS5weSAxLjMgdnMgZWRpdGVkID09PT09Ci0t LSAxLjMvdG9vbHMvcHl0aG9uL3hlbi93ZWIvU3J2QmFzZS5weQkyMDA1LTA0LTI3IDIzOjA0OjQz ICswOTowMAorKysgZWRpdGVkL3Rvb2xzL3B5dGhvbi94ZW4vd2ViL1NydkJhc2UucHkJMjAwNS0w NS0xOSAwMjo0NzozMSArMDk6MDAKQEAgLTE1LDcgKzE1LDcgQEAgaW1wb3J0IGh0dHBzZXJ2ZXIK IAogZGVmIHVyaV9wYXRobGlzdChwKToKICAgICAiIiJTcGxpdCBhIHBhdGggaW50byBhIGxpc3Qu Ci0gICAgcAkJcGF0aAorICAgIHAgICAgICAgcGF0aAogICAgIHJldHVybiBsaXN0IG9mIHBhdGgg ZWxlbWVudHMKICAgICAiIiIKICAgICBsID0gW10KQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgU3J2 QmFzZShyZXNvdXJjZS5SZXNvdXJjZSk6CiAgICAgICAgICIiIkdldCB0aGUgbWV0aG9kIGZvciBh biBvcGVyYXRpb24uCiAgICAgICAgIEZvciBvcGVyYXRpb24gJ2ZvbycgbG9va3MgZm9yICdvcF9m b28nLgogCi0gICAgICAgIG9wCW9wZXJhdGlvbiBuYW1lCisgICAgICAgIG9wICBvcGVyYXRpb24g bmFtZQogICAgICAgICByZXR1cm5zIG1ldGhvZCBvciBOb25lCiAgICAgICAgICIiIgogICAgICAg ICBvcF9tZXRob2RfbmFtZSA9ICdvcF8nICsgb3AKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgU3J2 QmFzZShyZXNvdXJjZS5SZXNvdXJjZSk6CiAgICAgICAgIGFuZCBhbiBIVE1MIHN0cmluZyBvdGhl cndpc2UgKG9yIGxpc3QpLgogICAgICAgICBNZXRob2RzIG1heSBhbHNvIHJldHVybiBhIFRocmVh ZFJlcXVlc3QgKGZvciBpbmNvbXBsZXRlIHByb2Nlc3NpbmcpLgogCi0gICAgICAgIHJlcQlyZXF1 ZXN0CisgICAgICAgIHJlcSByZXF1ZXN0CiAgICAgICAgICIiIgogICAgICAgICBvcCA9IHJlcS5h cmdzLmdldCgnb3AnKQogICAgICAgICBpZiBvcCBpcyBOb25lIG9yIGxlbihvcCkgIT0gMToKPT09 PT0gdG9vbHMvcHl0aG9uL3hlbi93ZWIvU3J2RGlyLnB5IDEuMyB2cyBlZGl0ZWQgPT09PT0KLS0t IDEuMy90b29scy9weXRob24veGVuL3dlYi9TcnZEaXIucHkJMjAwNS0wNC0yNyAyMzowNDo0MyAr MDk6MDAKKysrIGVkaXRlZC90b29scy9weXRob24veGVuL3dlYi9TcnZEaXIucHkJMjAwNS0wNS0x OSAwMjo0Nzo1NCArMDk6MDAKQEAgLTIyLDcgKzIyLDcgQEAgY2xhc3MgU3J2Q29uc3RydWN0b3I6 CiAgICAgICAgICIiIkNyZWF0ZSBhIGNvbnN0cnVjdG9yLiBJdCBpcyBhc3N1bWVkIHRoYXQgdGhl IGNsYXNzCiAgICAgICAgIHNob3VsZCBiZSBpbXBvcnRlZCBhcyAnZnJvbSB4ZW4ueGVuZC5zZXJ2 ZXIua2xhc3MgaW1wb3J0IGtsYXNzJy4KIAotICAgICAgICBrbGFzcwluYW1lIG9mIGl0cyBjbGFz cworICAgICAgICBrbGFzcyAgIG5hbWUgb2YgaXRzIGNsYXNzCiAgICAgICAgICIiIgogICAgICAg ICBzZWxmLmtsYXNzID0ga2xhc3MKICAgICAgICAgc2VsZi5vYmogPSBOb25lCj09PT09IHRvb2xz L3B5dGhvbi94ZW4veGVuZC9FdmVudFNlcnZlci5weSAxLjkgdnMgZWRpdGVkID09PT09Ci0tLSAx LjkvdG9vbHMvcHl0aG9uL3hlbi94ZW5kL0V2ZW50U2VydmVyLnB5CTIwMDUtMDQtMjMgMDI6MDc6 MDQgKzA5OjAwCisrKyBlZGl0ZWQvdG9vbHMvcHl0aG9uL3hlbi94ZW5kL0V2ZW50U2VydmVyLnB5 CTIwMDUtMDUtMTkgMDM6MDI6NDcgKzA5OjAwCkBAIC03MSw3ICs3MSw3IEBAIGNsYXNzIEV2ZW50 U2VydmVyOgogICAgICAgICBmb3IgdGhlICc/Jy4gQSBzdWJzY3JpcHRpb24gbGlrZSAnYS5iLmMu KicgZW5kaW5nIGluICcqJyBtYXRjaGVzCiAgICAgICAgIGFueSBldmVudCB0eXBlIHdpdGggdGhl IHNhbWUgcHJlZml4LCAnYS5iLmMnIGluIHRoaXMgY2FzZS4KIAotICAgICAgICBldmVudAlldmVu dCBuYW1lCisgICAgICAgIGV2ZW50ICAgZXZlbnQgbmFtZQogICAgICAgICBoYW5kbGVyIGV2ZW50 IGhhbmRsZXIgZm4oZXZlbnQsIHZhbCkKICAgICAgICAgIiIiCiAgICAgICAgIHRyeToKQEAgLTg3 LDcgKzg3LDcgQEAgY2xhc3MgRXZlbnRTZXJ2ZXI6CiAgICAgZGVmIHVuc3Vic2NyaWJlX2FsbChz ZWxmLCBldmVudD1Ob25lKToKICAgICAgICAgIiIiVW5zdWJzY3JpYmUgYWxsIGhhbmRsZXJzIGZv ciBhIGdpdmVuIGV2ZW50LCBvciBhbGwgaGFuZGxlcnMuCiAKLSAgICAgICAgZXZlbnQJZXZlbnQg KG9wdGlvbmFsKQorICAgICAgICBldmVudCAgIGV2ZW50IChvcHRpb25hbCkKICAgICAgICAgIiIi CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYubG9jay5hY3F1aXJlKCkKQEAgLTEwMSw3 ICsxMDEsNyBAQCBjbGFzcyBFdmVudFNlcnZlcjoKICAgICBkZWYgdW5zdWJzY3JpYmUoc2VsZiwg ZXZlbnQsIGhhbmRsZXIpOgogICAgICAgICAiIiJVbnN1YnNjcmliZSBhIGdpdmVuIGV2ZW50IGFu ZCBoYW5kbGVyLgogCi0gICAgICAgIGV2ZW50CWV2ZW50CisgICAgICAgIGV2ZW50ICAgZXZlbnQK ICAgICAgICAgaGFuZGxlciBoYW5kbGVyCiAgICAgICAgICIiIgogICAgICAgICB0cnk6CkBAIC0x MTgsOCArMTE4LDggQEAgY2xhc3MgRXZlbnRTZXJ2ZXI6CiAgICAgICAgICIiIkluamVjdCBhbiBl dmVudC4gSGFuZGxlcnMgZm9yIGl0IGFyZSBjYWxsZWQgaWYgcnVubmluZywgb3RoZXJ3aXNlCiAg ICAgICAgIGl0IGlzIHF1ZXVlZC4KIAotICAgICAgICBldmVudAlldmVudCB0eXBlCi0gICAgICAg IHZhbAlldmVudCB2YWx1ZQorICAgICAgICBldmVudCAgIGV2ZW50IHR5cGUKKyAgICAgICAgdmFs IGV2ZW50IHZhbHVlCiAgICAgICAgICIiIgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxm LmxvY2suYWNxdWlyZSgpCkBAIC0xNDYsOSArMTQ2LDkgQEAgY2xhc3MgRXZlbnRTZXJ2ZXI6CiAg ICAgICAgICIiIkNhbGwgdGhlIGhhbmRsZXJzIGZvciBhbiBldmVudC4KICAgICAgICAgSXQgaXMg c2FmZSBmb3IgaGFuZGxlcnMgdG8gc3Vic2NyaWJlIG9yIHVuc3Vic2NyaWJlLgogCi0gICAgICAg IGtleQlrZXkgZm9yIGhhbmRsZXIgbGlzdAotICAgICAgICBldmVudAlldmVudCB0eXBlCi0gICAg ICAgIHZhbAlldmVudCB2YWx1ZQorICAgICAgICBrZXkga2V5IGZvciBoYW5kbGVyIGxpc3QKKyAg ICAgICAgZXZlbnQgICBldmVudCB0eXBlCisgICAgICAgIHZhbCBldmVudCB2YWx1ZQogICAgICAg ICAiIiIKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5sb2NrLmFjcXVpcmUoKQpAQCAt MTcxLDggKzE3MSw4IEBAIGNsYXNzIEV2ZW50U2VydmVyOgogICAgIGRlZiBjYWxsX3F1ZXJ5X2hh bmRsZXJzKHNlbGYsIGV2ZW50LCB2YWwpOgogICAgICAgICAiIiJDYWxsIHJlZ2V4IGhhbmRsZXJz IGZvciBldmVudHMgbWF0Y2hpbmcgJ2V2ZW50JyB0aGF0IGVuZCBpbiAnPycuCiAKLSAgICAgICAg ZXZlbnQJZXZlbnQgdHlwZQotICAgICAgICB2YWwJZXZlbnQgdmFsdWUKKyAgICAgICAgZXZlbnQg ICBldmVudCB0eXBlCisgICAgICAgIHZhbCBldmVudCB2YWx1ZQogICAgICAgICAiIiIKICAgICAg ICAgZG90X2lkeCA9IGV2ZW50LnJmaW5kKHNlbGYuRE9UKQogICAgICAgICBpZiBkb3RfaWR4ID09 IC0xOgpAQCAtMTg0LDggKzE4NCw4IEBAIGNsYXNzIEV2ZW50U2VydmVyOgogICAgIGRlZiBjYWxs X3N0YXJfaGFuZGxlcnMoc2VsZiwgZXZlbnQsIHZhbCk6CiAgICAgICAgICIiIkNhbGwgcmVnZXgg aGFuZGxlcnMgZm9yIGV2ZW50cyBtYXRjaGluZyAnZXZlbnQnIHRoYXQgZW5kIGluICcqJy4KIAot ICAgICAgICBldmVudAlldmVudCB0eXBlCi0gICAgICAgIHZhbAlldmVudCB2YWx1ZQorICAgICAg ICBldmVudCAgIGV2ZW50IHR5cGUKKyAgICAgICAgdmFsIGV2ZW50IHZhbHVlCiAgICAgICAgICIi IgogICAgICAgICBldHlwZSA9IHN0cmluZy5zcGxpdChldmVudCwgc2VsZi5ET1QpCiAgICAgICAg IGZvciBpIGluIHJhbmdlKGxlbihldHlwZSksIDAsIC0xKToKPT09PT0gdG9vbHMvcHl0aG9uL3hl bi94ZW5kL1ByZXR0eVByaW50LnB5IDEuNiB2cyBlZGl0ZWQgPT09PT0KLS0tIDEuNi90b29scy9w eXRob24veGVuL3hlbmQvUHJldHR5UHJpbnQucHkJMjAwNS0wNS0xNyAxODowMzo0OCArMDk6MDAK KysrIGVkaXRlZC90b29scy9weXRob24veGVuL3hlbmQvUHJldHR5UHJpbnQucHkJMjAwNS0wNS0x OSAwMjo1OTo0MiArMDk6MDAKQEAgLTI3Myw5ICsyNzMsOSBAQCBjbGFzcyBTWFBQcmV0dHlQcmlu dGVyKFByZXR0eVByaW50ZXIpOgogZGVmIHByZXR0eXByaW50KHN4cHIsIG91dD1zeXMuc3Rkb3V0 LCB3aWR0aD04MCk6CiAgICAgIiIiUHJldHR5cHJpbnQgYW4gU1hQIGZvcm0uCiAKLSAgICBzeHBy CXMtZXhwcmVzc2lvbgotICAgIG91dAkJZGVzdGluYXRpb24KLSAgICB3aWR0aAltYXhpbXVtIG91 dHB1dCB3aWR0aAorICAgIHN4cHIgICAgcy1leHByZXNzaW9uCisgICAgb3V0ICAgICBkZXN0aW5h dGlvbgorICAgIHdpZHRoICAgbWF4aW11bSBvdXRwdXQgd2lkdGgKICAgICAiIiIKICAgICBpZiBp c2luc3RhbmNlKHN4cHIsIHR5cGVzLkxpc3RUeXBlKToKICAgICAgICAgcHAgPSBTWFBQcmV0dHlQ cmludGVyKHdpZHRoPXdpZHRoKQo9PT09PSB0b29scy9weXRob24veGVuL3hlbmQvWGVuZENsaWVu dC5weSAxLjQ4IHZzIGVkaXRlZCA9PT09PQotLS0gMS40OC90b29scy9weXRob24veGVuL3hlbmQv WGVuZENsaWVudC5weQkyMDA1LTA1LTEzIDAwOjA0OjU1ICswOTowMAorKysgZWRpdGVkL3Rvb2xz L3B5dGhvbi94ZW4veGVuZC9YZW5kQ2xpZW50LnB5CTIwMDUtMDUtMTkgMDI6NTg6MTYgKzA5OjAw CkBAIC0yNTYsOSArMjU2LDkgQEAgY2xhc3MgWGVuZDoKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgeydvcCcgICAgICAgIDogJ2NwdV9zZWRmX3NldCcsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAncGVyaW9kJyAgICA6IHBlcmlvZCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICdzbGljZScgICAgIDogc2xpY2UsCi0JCQkgICAgICAnbGF0ZW5jeScgICA6IGxhdGVu Y3ksCi0JCQkgICAgICAnZXh0cmF0aW1lJyA6IGV4dHJhdGltZSwKLQkJCSAgICAgICd3ZWlnaHQn ICAgIDogd2VpZ2h0IH0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGF0ZW5jeScg ICA6IGxhdGVuY3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXh0cmF0aW1lJyA6 IGV4dHJhdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3ZWlnaHQnICAgIDog d2VpZ2h0IH0pCiAKICAgICBkZWYgeGVuZF9kb21haW5fbWF4bWVtX3NldChzZWxmLCBpZCwgbWVt b3J5KToKICAgICAgICAgcmV0dXJuIHNlbGYueGVuZFBvc3Qoc2VsZi5kb21haW51cmwoaWQpLAo9 PT09PSB0b29scy9weXRob24veGVuL3hlbmQvWGVuZERvbWFpbi5weSAxLjc1IHZzIGVkaXRlZCA9 PT09PQotLS0gMS43NS90b29scy9weXRob24veGVuL3hlbmQvWGVuZERvbWFpbi5weQkyMDA1LTA1 LTE5IDAwOjMzOjM5ICswOTowMAorKysgZWRpdGVkL3Rvb2xzL3B5dGhvbi94ZW4veGVuZC9YZW5k RG9tYWluLnB5CTIwMDUtMDUtMTkgMDM6MTM6MjAgKzA5OjAwCkBAIC0xNjQsNyArMTY0LDcgQEAg Y2xhc3MgWGVuZERvbWFpbjoKICAgICBkZWYgc3luY19kb21haW4oc2VsZiwgZG9tKToKICAgICAg ICAgIiIiU3luYyBpbmZvIGZvciBhIGRvbWFpbiB0byBkaXNrLgogCi0gICAgICAgIGRvbQlkb21h aW4gaWQgKHN0cmluZykKKyAgICAgICAgZG9tIGRvbWFpbiBpZCAoc3RyaW5nKQogICAgICAgICAi IiIKICAgICAgICAgc2VsZi5kYi5zYXZlKGRvbSwgc2VsZi5kb21haW5fZGJbZG9tXSkKIApAQCAt NjU4LDcgKzY1OCw3IEBAIGNsYXNzIFhlbmREb21haW46CiAgICAgZGVmIGRvbWFpbl9jcHVfc2Vk Zl9zZXQoc2VsZiwgaWQsIHBlcmlvZCwgc2xpY2UsIGxhdGVuY3ksIGV4dHJhdGltZSwgd2VpZ2h0 KToKICAgICAgICAgIiIiU2V0IFNpbXBsZSBFREYgc2NoZWR1bGVyIHBhcmFtZXRlcnMgZm9yIGEg ZG9tYWluLgogICAgICAgICAiIiIKLQlkb21pbmZvID0gc2VsZi5kb21haW5fbG9va3VwKGlkKQor ICAgICAgICBkb21pbmZvID0gc2VsZi5kb21haW5fbG9va3VwKGlkKQogICAgICAgICB0cnk6CiAg ICAgICAgICAgICByZXR1cm4geGMuc2VkZl9kb21haW5fc2V0KGRvbWluZm8uZG9tLCBwZXJpb2Qs IHNsaWNlLCBsYXRlbmN5LCBleHRyYXRpbWUsIHdlaWdodCkKICAgICAgICAgZXhjZXB0IEV4Y2Vw dGlvbiwgZXg6Cj09PT09IHRvb2xzL3B5dGhvbi94ZW4veGVuZC9lbmNvZGUucHkgMS43IHZzIGVk aXRlZCA9PT09PQotLS0gMS43L3Rvb2xzL3B5dGhvbi94ZW4veGVuZC9lbmNvZGUucHkJMjAwNS0w NS0xOCAwNzoyODoyNCArMDk6MDAKKysrIGVkaXRlZC90b29scy9weXRob24veGVuL3hlbmQvZW5j b2RlLnB5CTIwMDUtMDUtMTkgMDI6NTQ6NTQgKzA5OjAwCkBAIC04Miw3ICs4Miw3IEBAIGRlZiBl bmNvZGVfZGF0YShkKToKICAgICAiIiJFbmNvZGUgc29tZSBkYXRhIGZvciBIVFRQIHRyYW5zcG9y dC4KICAgICBUaGUgZW5jb2RpbmcgdXNlZCBpcyBzdG9yZWQgaW4gJ0NvbnRlbnQtVHlwZScgaW4g dGhlIGhlYWRlcnMuCiAKLSAgICBkCWRhdGEgLSBzZXF1ZW5jZSBvZiB0dXBsZXMgb3IgZGljdGlv bmFyeQorICAgIGQgICBkYXRhIC0gc2VxdWVuY2Ugb2YgdHVwbGVzIG9yIGRpY3Rpb25hcnkKICAg ICByZXR1cm5zIGEgMi10dXBsZSBvZiB0aGUgaGVhZGVycyBhbmQgdGhlIGVuY29kZWQgZGF0YQog ICAgICIiIgogICAgIHZhbCA9ICh7fSwgTm9uZSkKPT09PT0gdG9vbHMvcHl0aG9uL3hlbi94ZW5k L3N4cC5weSAxLjE2IHZzIGVkaXRlZCA9PT09PQotLS0gMS4xNi90b29scy9weXRob24veGVuL3hl bmQvc3hwLnB5CTIwMDUtMDUtMTggMDc6Mjg6MjQgKzA5OjAwCisrKyBlZGl0ZWQvdG9vbHMvcHl0 aG9uL3hlbi94ZW5kL3N4cC5weQkyMDA1LTA1LTE5IDAyOjU0OjEzICswOTowMApAQCAtNzA3LDcg KzcwNyw3IEBAIGRlZiBhbGxfZnJvbV9zdHJpbmcoc3RyKToKIGRlZiBwYXJzZShpbyk6CiAgICAg IiIiQ29tcGxldGVseSBwYXJzZSBhbGwgaW5wdXQgZnJvbSAnaW8nLgogCi0gICAgaW8JaW5wdXQg ZmlsZSBvYmplY3QKKyAgICBpbyAgaW5wdXQgZmlsZSBvYmplY3QKICAgICByZXR1cm5zIGxpc3Qg b2YgdmFsdWVzLCBOb25lIGlmIGluY29tcGxldGUKICAgICByYWlzZXMgUGFyc2VFcnJvciBvbiBw YXJzZSBlcnJvcgogICAgICIiIgo9PT09PSB0b29scy9weXRob24veGVuL3hlbmQvc2VydmVyL1Ny dkRvbWFpbi5weSAxLjM4IHZzIGVkaXRlZCA9PT09PQotLS0gMS4zOC90b29scy9weXRob24veGVu L3hlbmQvc2VydmVyL1NydkRvbWFpbi5weQkyMDA1LTA1LTEzIDAwOjA0OjU1ICswOTowMAorKysg ZWRpdGVkL3Rvb2xzL3B5dGhvbi94ZW4veGVuZC9zZXJ2ZXIvU3J2RG9tYWluLnB5CTIwMDUtMDUt MTkgMDI6NDk6MTggKzA5OjAwCkBAIC0xMTAsOSArMTEwLDkgQEAgY2xhc3MgU3J2RG9tYWluKFNy dkRpcik6CiAgICAgICAgICAgICAgICAgICAgIFtbJ2RvbScsICdzdHInXSwKICAgICAgICAgICAg ICAgICAgICAgIFsncGVyaW9kJywgJ2ludCddLAogICAgICAgICAgICAgICAgICAgICAgWydzbGlj ZScsICdpbnQnXSwKLQkJICAgICBbJ2xhdGVuY3knLCAnaW50J10sCi0JCSAgICAgWydleHRyYXRp bWUnLCAnaW50J10sCi0JCSAgICAgWyd3ZWlnaHQnLCAnaW50J11dKQorICAgICAgICAgICAgICAg ICAgICAgWydsYXRlbmN5JywgJ2ludCddLAorICAgICAgICAgICAgICAgICAgICAgWydleHRyYXRp bWUnLCAnaW50J10sCisgICAgICAgICAgICAgICAgICAgICBbJ3dlaWdodCcsICdpbnQnXV0pCiAg ICAgICAgIHZhbCA9IGZuKHJlcS5hcmdzLCB7J2RvbSc6IHNlbGYuZG9tLmlkfSkKICAgICAgICAg cmV0dXJuIHZhbAogCj09PT09IHRvb2xzL3B5dGhvbi94ZW4veG0vbWFpbi5weSAxLjUyIHZzIGVk aXRlZCA9PT09PQotLS0gMS41Mi90b29scy9weXRob24veGVuL3htL21haW4ucHkJMjAwNS0wNS0x MyAwMDowNDo1NiArMDk6MDAKKysrIGVkaXRlZC90b29scy9weXRob24veGVuL3htL21haW4ucHkJ MjAwNS0wNS0xOSAwMjo1MzoxMSArMDk6MDAKQEAgLTE0Miw4ICsxNDIsOCBAQCBjbGFzcyBYbToK ICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYubmFtZSA9IGFyZ3NbMF0KICAgICAgICAgaWYgbGVu KGFyZ3MpIDwgMjoKLSAgICAgICAgCWFyZ3MuYXBwZW5kKCdoZWxwJykKLQloZWxwID0gc2VsZi5o ZWxwYXJnKGFyZ3MpCisgICAgICAgICAgICBhcmdzLmFwcGVuZCgnaGVscCcpCisgICAgICAgIGhl bHAgPSBzZWxmLmhlbHBhcmcoYXJncykKICAgICAgICAgcCA9IHNlbGYuZ2V0cHJvZyhhcmdzWzFd LCBzZWxmLnVua25vd24pCiAgICAgICAgIGlmIGhlbHAgb3IgbGVuKGFyZ3MpIDwgMjogCiAgICAg ICAgICAgICBwLmhlbHAoYXJnc1sxOl0pCkBAIC02NDYsMTAgKzY0NiwxMCBAQCBjbGFzcyBQcm9n U2VkZihQcm9nKToKICAgICAgICAgcHJpbnQgIlxuU2V0IHNpbXBsZSBFREYgcGFyYW1ldGVycy4i CiAKICAgICBkZWYgbWFpbihzZWxmLCBhcmdzKToKLQlpZiBsZW4oYXJncykgIT0gNzogc2VsZi5l cnIoIiVzOiBJbnZhbGlkIGFyZ3VtZW50KHMpIiAlIGFyZ3NbMF0pCi0JZG9tID0gYXJnc1sxXQot CXYgPSBtYXAoaW50LCBhcmdzWzI6N10pCi0Jc2VydmVyLnhlbmRfZG9tYWluX2NwdV9zZWRmX3Nl dChkb20sICp2KQorICAgICAgICBpZiBsZW4oYXJncykgIT0gNzogc2VsZi5lcnIoIiVzOiBJbnZh bGlkIGFyZ3VtZW50KHMpIiAlIGFyZ3NbMF0pCisgICAgICAgIGRvbSA9IGFyZ3NbMV0KKyAgICAg ICAgdiA9IG1hcChpbnQsIGFyZ3NbMjo3XSkKKyAgICAgICAgc2VydmVyLnhlbmRfZG9tYWluX2Nw dV9zZWRmX3NldChkb20sICp2KQogCiB4bS5wcm9nKFByb2dTZWRmKQogCg== ------=_Part_2315_15968302.1116442728528 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel ------=_Part_2315_15968302.1116442728528--