From kde-edu Tue Dec 13 05:49:00 2011 From: David Narvaez Date: Tue, 13 Dec 2011 05:49:00 +0000 To: kde-edu Subject: Re: Google Code-In Translation for pykig.py Message-Id: X-MARC-Message: https://marc.info/?l=kde-edu&m=132375548231292 MIME-Version: 1 Content-Type: multipart/mixed; boundary="--f46d043c7bf4165f7f04b3f2d02d" --f46d043c7bf4165f7f04b3f2d02d Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On Fri, Dec 2, 2011 at 6:58 AM, Eike Krumbacher wrote: > Am 01.12.2011 21:18, schrieb Maurizio Paolini: > >> About DICT: =A0pykig.py actually produces a 'kig save file', which is >> an XML file. =A0This requires quoting/encoding the characters that XML >> itself uses for its syntax. > > > xml.sax.saxutils.escape() > > would do the job. > > Eike Hi all, sorry for the delay on this. I'm attaching a version of the file which tries address the encoding issues using Eike's recommendation. I tried testing it against the examples provided in kig's documentation, but some of them seem to fail for reasons not related to the encoding issue (maybe we should review which of those sample files are still valid?), so I don't think I've tested it throughly. Maurizio, can you try with other files that include possible fail cases? (which I guess are labels with non-ascii characters, right?) I have to run to bed now so I can't do much more testing right now. I included some comments at the beginning of the file to credit the student that did the translations, does everybody agree on those? Anne-Marie, do you mind taking a look and see if something else should be added? I plan to CC him on the commit so that he gets notified of the fact that the translations were included, sounds good? Thank your all for the help! David E. Narv=E1ez --f46d043c7bf4165f7f04b3f2d02d Content-Type: text/x-python; charset=UTF-8; name="pykig.py" Content-Disposition: attachment; filename="pykig.py" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gw4hpm440 IyEvdXNyL2Jpbi9lbnYgcHl0aG9uDQojIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQ0KIy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1weXRob24tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1weWtp Zy5weS0tIw0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIw0KIyAgICAgICAgICAgICAgICAgICAgICAgICBGcm9t IFB5dGhvbiB0byBLaWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgIw0KIyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIw0KIy0tTWF1cml6aW8gUGFvbGluaS1EYW5pZWxlIFphbWJlbGxpLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0yMDA1LS0tIw0KIw0KIyBTb21lIGNvbW1lbnRzIHRyYW5zbGF0ZWQgdG8g RW5nbGlzaCBieSBCYXJ0b3N6IER6aWV3b8WEc2tpDQojIGR1cmluZyBHb29nbGUgQ29kZS1JbiAy MDExDQojDQojIChsaWNlbnNlZCB1bmRlciBHUEwpDQoNCnZlcnNpb249IjAuMi4xMSINCg0KIyMj IyMNCiMgVHlwZSBjb25zdGFudHMNCiMjIyMjDQpUST10eXBlKDApDQpURj10eXBlKDAuKQ0KVFM9 dHlwZSgiIikNClRUPXR5cGUoKDAsIDApKQ0KDQojIyMjIw0KIyBDb25zdGFudHM6IFBvaW50IFN0 eWxlLCBMaW5lIFN0eWxlLCBkZWZhdWx0IHZhbHVlcy4uLg0KIyMjIyMNClBTPSgiUm91bmQiLCAi Um91bmRFbXB0eSIsICJSZWN0YW5ndWxhciIsICJSZWN0YW5ndWxhckVtcHR5IiwgIkNyb3NzIikN CkxTPSgiU29saWRMaW5lIiwgIkRhc2hMaW5lIiwgIkRhc2hEb3RMaW5lIiwgIkRhc2hEb3REb3RM aW5lIiwgIkRvdExpbmUiKQ0KS0lHVFJVRT0idHJ1ZSINCktJR0ZBTFNFPSJmYWxzZSINCkRFRldJ RFRIPS0xDQpERUZDT0xPUj0iIzAwMDBmZiINCkRFRk5BTUU9Im5vbmUiDQpQUk9QRVJUWV9JTkk9 IlByb3BlcnR5IHdoaWNoIg0KT0JKRUNUX0lOST0iT2JqZWN0IHR5cGUiDQpQUk9QRVJUWV9FTkQ9 IlByb3BlcnR5Ig0KT0JKRUNUX0VORD0iT2JqZWN0Ig0KDQojDQojIHRoaXMgaXMgYSB0cmljayB0 byBhbGxvdyBkZWZpbml0aW9ucyBsaWtlICJwPVBvaW50KDAsMCxISURERU4pIg0KIyANCkhJRERF Tj1LSUdGQUxTRQ0KVklTSUJMRT1LSUdUUlVFDQoNCiMjIyMjDQojIFZhbGlkYXRpbmcgcGFyYW1l dGVycw0KIyMjIyMNCg0KZGVmIHBhcmFtZXRlcih2YWwsIGRlZnZhbCk6DQogIGlmIHZhbD09Tm9u ZTogcmV0dXJuIGRlZnZhbA0KICBlbHNlOiAgICAgICAgIHJldHVybiB2YWwNCiAgDQpkZWYgdmFs aWRzaG93bihzaG93bik6DQogIGlmIHNob3duPT1LSUdUUlVFIG9yIHNob3duPT1LSUdGQUxTRTog cmV0dXJuIHNob3duDQoNCmRlZiB2YWxpZHdpZHRoKHdpZHRoKToNCiAgaWYgdHlwZSh3aWR0aCk9 PVRJOiByZXR1cm4gd2lkdGgNCg0KZGVmIHZhbGlkcG9pbnRzdHlsZShwcyk6DQogIGlmIHBzIGlu IFBTOiByZXR1cm4gcHMNCg0KZGVmIHZhbGlkbmFtZShuYW1lKToNCiAgaWYgdHlwZShuYW1lKT09 VFM6IHJldHVybiBuYW1lDQoNCmRlZiB2YWxpZGxpbmVzdHlsZShscyk6DQogIGlmIGxzIGluIExT OiByZXR1cm4gbHMNCg0KZGVmIHZhbGlkY29sb3IoY29sb3IpOg0KICBpZiB0eXBlKGNvbG9yKT09 VFM6IHJldHVybiBjb2xvcg0KDQojIyMjIw0KIyBpZiBhcyBhIGZ1bmN0aW9uDQojIyMjIw0KDQpk ZWYgcmlmKGNvbmRpdGlvbiwgdmFsMSwgdmFsMik6DQogICIiIlJldHVybiB2YWwxIGlmIGNvbmRp dGlvbiBpcyBUcnVlOyBlbHNlIHJldHVybiB2YWwyLiIiIg0KICBpZiBjb25kaXRpb246IHJldHVy biB2YWwxDQogIGVsc2U6ICAgICAgICAgcmV0dXJuIHZhbDINCg0KIyMjIyMNCiMgRm9yY2Ugc29t ZSBQeXRob24gdmFyaWFibGVzIGFzIGtpZyB2YXJpYWJsZXMNCiMjIyMjDQoNCmRlZiBraWdfZG91 YmxlKHZhbCk6DQogIHRwPXR5cGUodmFsKQ0KICBpZiB0cD09VEkgb3IgdHA9PVRGOiByZXR1cm4g RG91YmxlKHZhbCkNCiAgZWxzZTogICAgICAgICAgICAgICAgcmV0dXJuIHZhbA0KDQpkZWYga2ln X2ludCh2YWwpOg0KICB0cD10eXBlKHZhbCkNCiAgaWYgdHA9PVRJOiAgICAgICAgICAgcmV0dXJu IEludCh2YWwpDQogIGVsc2U6ICAgICAgICAgICAgICAgIHJldHVybiB2YWwNCg0KZGVmIGtpZ19z dHJpbmcodmFsKToNCiAgdHA9dHlwZSh2YWwpDQogIGlmIHRwPT1UUzogICAgICAgICAgIHJldHVy biBTdHJpbmcodmFsKQ0KICBlbHNlOiAgICAgICAgICAgICAgICByZXR1cm4gdmFsDQoNCmRlZiBr aWdfcG9pbnQodmFsKToNCiAgdHA9dHlwZSh2YWwpDQogIGlmIHRwPT1UVDoNCiAgICB4LCB5ID0g dmFsDQogICAgcmV0dXJuIFBvaW50KHgsIHksIGludGVybmFsPVRydWUpDQogIGVsc2U6DQogICAg cmV0dXJuIHZhbA0KDQpkZWYga2lnX3JlbHBvaW50KG9iaiwgZGlzcGwpOg0KICB4LCB5ID0gZGlz cGwNCiAgcmV0dXJuIFJlbGF0aXZlUG9pbnQoeCwgeSwgb2JqLCBpbnRlcm5hbD1UcnVlKQ0KDQoj IyMjIw0KIyBiYXNlIGNsYXNzZXMNCiMjIyMjDQoNCiMjIyMjDQojIEtpZ0RvY3VtZW50IGNsYXNz DQojIyMjIw0KDQpjbGFzcyBLaWdEb2N1bWVudChvYmplY3QpOg0KICAiIiJBIGNsYXNzIHJlcHJl c2VudGluZyBhIEtpZyBkb2N1bWVudC4NCg0KICAgIGFuY2VzdG9yIGNoYWluOg0KICAgICAgS2ln RG9jdW1lbnQgPC0gb2JqZWN0DQoNCiAgICBjbGFzcyBhdHRyaWJ1dGVzOg0KDQogICAgYXR0cmli dXRlczoNCiAgICAgIGF4ZXMNCiAgICAgIGdyaWQNCiAgICAgIG91dGZpbGVuYW1lDQogICAgICBv dXRmaWxlDQogICAgICBjYWxsa2lnDQogICAgICBvZg0KICAgICAgdmlld2tpZw0KICAgICAgaGll cmFyY2h5DQogICAgICBpbnRlcm5hbA0KICAgICAgd2lkdGgNCiAgICAgIHBvaW50c3R5bGUNCiAg ICAgIG5hbWUNCiAgICAgIGxpbmVzdHlsZQ0KICAgICAgc2hvd24NCiAgICAgIGNvbG9yDQogICAg ICANCiAgICBtZXRob2RzOg0KICAgICAgdmlld2FwcGVuZA0KICAgICAgaGllcmFyY2h5YXBwZW5k DQogICAgICBzZXRjYWxsa2lnDQogICAgICBzZXRvZg0KICAgICAgc3RyX29wZW4NCiAgICAgIGNs b3NlDQogICAgICBub2F4ZXMNCiAgICAgIG5vZ3JpZA0KICAgICAgaGlkZW9iamVjdHMgDQogICAg ICBzaG93b2JqZWN0cyANCiAgICAgIHNldHdpZHRoIA0KICAgICAgc2V0cG9pbnRzdHlsZSANCiAg ICAgIHNldG5hbWUgDQogICAgICBzZXRsaW5lc3R5bGUgDQogICAgICBzZXRzaG93biANCiAgICAg IHNldGNvbG9yIA0KICAgICAgc2V0aW50ZXJuYWwgDQogICIiIg0KDQogIGRlZiBfX2luaXRfXyhz ZWxmLCBvdXRmaWxlbmFtZSwgY2FsbGtpZz1UcnVlLCBvZj1GYWxzZSk6DQojICAgIHByaW50ICJL aWdEb2N1bWVudC5fX2luaXRfXygpIg0KICAgIHNlbGYuYXhlcyA9ICIxIg0KICAgIHNlbGYuZ3Jp ZCA9ICIxIg0KICAgIHNlbGYub3V0ZmlsZW5hbWU9b3V0ZmlsZW5hbWUNCiAgICBzZWxmLmNhbGxr aWc9Y2FsbGtpZw0KICAgIHNlbGYub2Y9b2YNCiAgICB0cnk6DQogICAgICBzZWxmLm91dGZpbGUg PSBvcGVuKG91dGZpbGVuYW1lLCAndycpDQogICAgZXhjZXB0IElPRXJyb3IsIHZhbHVlOg0KIyAg ICAgIHByaW50ID4+IHN5cy5zdGRlcnIsIG91dGZpbGVuYW1lLCAndW53cml0YWJsZScNCiAgICAg IHByaW50ID4+IHN5cy5zdGRlcnIsIHZhbHVlDQogICAgICBzeXMuZXhpdCgyKQ0KIyAgICBLaWdP dXQuX2tpZ2RvY3VtZW50PXNlbGYNCiAgICBLaWdET1AuX2tkPXNlbGYNCiAgICBLaWdWaWV3Ll9r ZD1zZWxmDQogICAgc2VsZi52aWV3a2lnPVtdDQogICAgc2VsZi5oaWVyYXJjaHk9W10NCiMgRGVm YXVsdCB2YWx1ZXMgIA0KICAgIHNlbGYuaW50ZXJuYWw9RmFsc2UNCiAgICBzZWxmLndpZHRoPURF RldJRFRIDQogICAgc2VsZi5wb2ludHN0eWxlPVBTWzBdDQogICAgc2VsZi5uYW1lPURFRk5BTUUN CiAgICBzZWxmLmxpbmVzdHlsZT1MU1swXQ0KICAgIHNlbGYuc2hvd249VklTSUJMRQ0KICAgIHNl bGYuY29sb3I9REVGQ09MT1INCg0KDQogIGRlZiB2aWV3YXBwZW5kKHNlbGYsIGUpOiAgICAgICAg ICBzZWxmLnZpZXdraWcuYXBwZW5kKGUpDQogIGRlZiBoaWVyYXJjaHlhcHBlbmQoc2VsZiwgZSk6 ICAgICBzZWxmLmhpZXJhcmNoeS5hcHBlbmQoZSkNCiAgZGVmIHNldGNhbGxraWcodik6ICAgICAg ICAgICAgICAgIHNlbGYuY2FsbGtpZz12DQogIGRlZiBzZXRvZih2KTogICAgICAgICAgICAgICAg ICAgICBzZWxmLm9mPXYNCiAgDQogIGRlZiBzdHJfb3BlbihzZWxmKToNCiAgICByZXR1cm4gIiIi PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhRE9DVFlQRSBLaWdEb2N1 bWVudD4NCjxLaWdEb2N1bWVudCBheGVzPSIlcyIgZ3JpZD0iJXMiIENvbXBhdGliaWxpdHlWZXJz aW9uPSIwLjcuMCIgVmVyc2lvbj0iMC45LjEiID4NCiA8Q29vcmRpbmF0ZVN5c3RlbT5FdWNsaWRl YW48L0Nvb3JkaW5hdGVTeXN0ZW0+DQogPEhpZXJhcmNoeT4NCiIiIiAlIChzZWxmLmF4ZXMsIHNl bGYuZ3JpZCkNCg0KICBkZWYgY2xvc2Uoc2VsZik6DQogICAgdHJ5Og0KICAgICAgc2VsZi5vdXRm aWxlLndyaXRlKHNlbGYuc3RyX29wZW4oKSkNCiAgICAgIHNlbGYub3V0ZmlsZS53cml0ZWxpbmVz KHNlbGYuaGllcmFyY2h5KQ0KICAgICAgc2VsZi5vdXRmaWxlLndyaXRlKCIgPC9IaWVyYXJjaHk+ XG4gPFZpZXc+XG4iKQ0KICAgICAgZm9yIGYgaW4gc2VsZi52aWV3a2lnOg0KICAgICAgICBzZWxm Lm91dGZpbGUud3JpdGUoZi5zdHJfdmlldygpKQ0KICAgICAgc2VsZi5vdXRmaWxlLndyaXRlKCIg PC9WaWV3PlxuPC9LaWdEb2N1bWVudD5cbiIpDQogICAgICBpZiBzZWxmLm91dGZpbGUgIT0gc3lz LnN0ZG91dDoNCiAgICAgICAgc2VsZi5vdXRmaWxlLmNsb3NlKCkNCiAgICBleGNlcHQgSU9FcnJv ciwgdmFsdWU6DQogICAgICBwcmludCA+PiBzeXMuc3RkZXJyLCB2YWx1ZQ0KICAgICAgc3lzLmV4 aXQoMikNCiAgICB0cnk6DQogICAgICBpZiBzZWxmLmNhbGxraWc6DQogICAgICAgIGVyciA9IG9z LnN5c3RlbSgna2lnIC0tbm9mb3JrICcgKyBzZWxmLm91dGZpbGVuYW1lKQ0KICAgIGV4Y2VwdCBF eGNlcHRpb24sIHZhbHVlOg0KICAgICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgdmFsdWUgICAgICAN CiAgICBpZiBub3Qgc2VsZi5vZjoNCiAgICAgIG9zLnN5c3RlbSgncm0gJyArIHNlbGYub3V0Zmls ZW5hbWUpDQoNCiAgZGVmIG5vYXhlcyhzZWxmKTogICAgICAgICAgICBzZWxmLmF4ZXM9IjAiDQog IGRlZiBub2dyaWQoc2VsZik6ICAgICAgICAgICAgc2VsZi5ncmlkPSIwIg0KICBkZWYgaGlkZW9i amVjdHMoc2VsZik6ICAgICAgIHNlbGYuc2hvd249SElEREVODQogIGRlZiBzaG93b2JqZWN0cyhz ZWxmKTogICAgICAgc2VsZi5zaG93bj1WSVNJQkxFDQogIGRlZiBzZXR3aWR0aChzZWxmLCB3KTog ICAgICAgc2VsZi53aWR0aD13DQogIGRlZiBzZXRwb2ludHN0eWxlKHNlbGYsIHBzKTogc2VsZi5w b2ludHN0eWxlPXBzDQogIGRlZiBzZXRuYW1lKHNlbGYsIG4pOiAgICAgICAgc2VsZi5uYW1lPW4N CiAgZGVmIHNldGxpbmVzdHlsZShzZWxmLCBscyk6ICBzZWxmLmxpbmVzdHlsZT1scw0KICBkZWYg c2V0c2hvd24oc2VsZiwgcyk6ICAgICAgIHNlbGYuc2hvd249cw0KICBkZWYgc2V0Y29sb3Ioc2Vs ZiwgYyk6ICAgICAgIHNlbGYuY29sb3I9Yw0KICBkZWYgc2V0aW50ZXJuYWwoc2VsZiwgdik6ICAg IHNlbGYuaW50ZXJuYWw9dg0KDQojIyMjIw0KIyBLaWdET1AgY2xhc3MNCiMjIyMjDQoNCiNjbGFz cyBLaWdET1AoS2lnT3V0KToNCmNsYXNzIEtpZ0RPUChvYmplY3QpOg0KICAiIiJBbiBjbGFzcyBm cm9tIHdoaWNoIGFsbCBlbGVtZW50cyBoYXZpbmcgYW4gaWQgKERhdGEsIE9iamVjdCwgUHJvcGVy dHkpIGluaGVyaXQuDQoNCiAgICBhbmNlc3RvciBjaGFpbjoNCiAgICAgIEtpZ0RPUCA8LSBvYmpl Y3QNCg0KICAgIGNsYXNzIGF0dHJpYnV0ZXM6DQogICAgICBpZC1jb3VudGVyDQoNCiAgICBhdHRy aWJ1dGVzOg0KICAgICAgaWQNCiAgICAgIHR5cGUNCg0KICAgIG1ldGhvZHM6DQogICAgICBnZXRp ZA0KICAgICAgc3RyX2hpZXJhcmNoeQ0KICAiIiINCiAgX2tkPU5vbmUNCiAgX2lkX2NvdW50ZXI9 MA0KDQogIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlKToNCiAgICBLaWdET1AuX2lkX2NvdW50ZXIr PTENCiAgICBzZWxmLmlkPUtpZ0RPUC5faWRfY291bnRlcg0KICAgIHNlbGYuX3R5cGU9dHlwZQ0K IyAgICBzZWxmLmdldGtpZ2RvY3VtZW50KCkuaGllcmFyY2h5YXBwZW5kKHNlbGYuc3RyX2hpZXJh cmNoeSgpKQ0KICAgIEtpZ0RPUC5fa2QuaGllcmFyY2h5YXBwZW5kKHNlbGYuc3RyX2hpZXJhcmNo eSgpKQ0KDQogIGRlZiBnZXRpZChzZWxmKTogICAgICAgICAgcmV0dXJuIHN0cihzZWxmLmlkKQ0K ICBkZWYgc3RyX2hpZXJhcmNoeShzZWxmKTogIHBhc3MNCg0KIyMjIyMNCiMgS2lnVmlldyBjbGFz cw0KIyMjIyMNCg0KI2NsYXNzIEtpZ1ZpZXcoS2lnT3V0KToNCmNsYXNzIEtpZ1ZpZXcob2JqZWN0 KToNCiAgIiIiQSBjbGFzcyBjb250YWluaW5nIHZpc3VhbGlzYXRpb24gZGF0YS4NCg0KICAgIGFu Y2VzdG9yIGNoYWluOg0KICAgICAgS2lnVmlldyA8LSBvYmplY3QNCg0KICAgIGNsYXNzIGF0dHJp YnV0ZXM6DQogICAgICBfa2QNCiAgICAgIA0KICAgIGF0dHJpYnV0ZXM6DQogICAgICBzaG93bg0K ICAgICAgd2lkdGgNCiAgICAgIHN0eWxlDQogICAgICBjb2xvcg0KICAgICAgbmFtZQ0KICAgICAg cG9pbnRzdHlsZQ0KDQogICAgbWV0aG9kczoNCiAgICAgIHN0cl92aWV3DQogICAgICBzaG93DQog ICAgICBoaWRlDQogICIiIg0KICBfa2Q9Tm9uZQ0KICANCiAgZGVmIF9faW5pdF9fKHNlbGYsIG9i amVjdCwgc2hvd24sIG5hbWUsIHdpZHRoLCBwb2ludHN0eWxlLCBsaW5lc3R5bGUsIGNvbG9yKToN CiAgICBzZWxmLm9iamVjdD1vYmplY3QNCiAgICBzZWxmLnNob3duICAgICAgPSBwYXJhbWV0ZXIo c2hvd24sIEtpZ1ZpZXcuX2tkLnNob3duKQ0KICAgIHNlbGYud2lkdGggICAgICA9IHBhcmFtZXRl cih3aWR0aCwgS2lnVmlldy5fa2Qud2lkdGgpDQogICAgc2VsZi5wb2ludHN0eWxlID0gcGFyYW1l dGVyKHBvaW50c3R5bGUsIEtpZ1ZpZXcuX2tkLnBvaW50c3R5bGUpDQogICAgc2VsZi5saW5lc3R5 bGUgID0gcGFyYW1ldGVyKGxpbmVzdHlsZSwgS2lnVmlldy5fa2QubGluZXN0eWxlKQ0KICAgIHNl bGYuY29sb3IgICAgICA9IHBhcmFtZXRlcihjb2xvciwgS2lnVmlldy5fa2QuY29sb3IpDQogICAg c2VsZi5uYW1lICAgICAgID0gcGFyYW1ldGVyKG5hbWUsIEtpZ1ZpZXcuX2tkLm5hbWUpDQogICAg S2lnVmlldy5fa2Qudmlld2FwcGVuZChzZWxmKQ0KDQogIGRlZiBzdHJfdmlldyhzZWxmKToNCiAg ICAiIiJSZXR1cm5zIGEgc3RyaW5nIHdoaWNoIGNhbiBiZSBwbGFjZWQgaW5zaWRlIDxWaWV3PiB0 YWdzLg0KDQogICAgZXhhbXBsZToNCiAgPERyYXcgd2lkdGg9Ii0xIiBwb2ludC1zdHlsZT0iUm91 bmQiIG5hbWVjYWxjZXI9Im5vbmUiDQpzdHlsZT0iU29saWRMaW5lIiBzaG93bj1Ob25lIGNvbG9y PSIjMDAwMGZmIiBvYmplY3Q9IjMiIC8+DQoiIiINCg0KICAgIHJldHVybiAnICA8RHJhdyB3aWR0 aD0iJXMiIHBvaW50LXN0eWxlPSIlcyIgbmFtZWNhbGNlcj0iJXMiXA0KIHN0eWxlPSIlcyIgc2hv d249IiVzIiBjb2xvcj0iJXMiIG9iamVjdD0iJXMiIC8+XG4nICVcDQogICAgICAgICAgIChzZWxm LndpZHRoLCBzZWxmLnBvaW50c3R5bGUsIHNlbGYubmFtZSwNCiAgICAgICAgICAgIHNlbGYubGlu ZXN0eWxlLCBzZWxmLnNob3duLCBzZWxmLmNvbG9yLCBzZWxmLm9iamVjdC5nZXRpZCgpKQ0KDQoj IyMjIw0KIyBEYXRhIGNsYXNzDQojIyMjIw0KDQpjbGFzcyBEYXRhKEtpZ0RPUCk6DQogICIiIkFu IGNsYXNzIGZyb20gd2hpY2ggYWxsIERhdGEgZWxlbWVudHMgaW5oZXJpdC4NCg0KICAgIGFuY2Vz dG9yIGNoYWluOg0KICAgICAgRGF0YSA8LSBLaWdET1AgPC0gb2JqZWN0DQoNCiAgICBhdHRyaWJ1 dGVzOg0KICAgICAgdmFsDQoNCiAgICBtZXRob2RzOg0KICAgICAgc3RyX2hpZXJhcmNoeQ0KIiIi DQogIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlLCB2YWwpOg0KICAgIHNlbGYudmFsPXZhbA0KICAg IEtpZ0RPUC5fX2luaXRfXyhzZWxmLCB0eXBlKQ0KDQogIGRlZiBzdHJfaGllcmFyY2h5KHNlbGYp Og0KICAgICIiIlJldHVybnMgYSBzdHJpbmcgd2hpY2ggY2FuIGJlIHBsYWNlZCBpbnNpZGUgPEhp ZXJhcmNoeT4gdGFncy4NCg0KICAgIGV4YW1wbGU6DQogIDxEYXRhIHR5cGU9ImRvdWJsZSIgaWQ9 IjE3MCIgPjAuMTwvRGF0YT4NCiIiIg0KICAgIHJldHVybiAnICA8RGF0YSB0eXBlPSIlcyIgaWQ9 IiVzIiA+JXM8L0RhdGE+XG4nICUgXA0KICAgICAgICAgIChzZWxmLl90eXBlLCBzZWxmLmdldGlk KCksIHNlbGYudmFsKQ0KDQojIyMjIw0KIyBQcm9wT2JqIGNsYXNzDQojIyMjIw0KDQpjbGFzcyBQ cm9wT2JqKEtpZ0RPUCk6DQogICIiIkEgY2xhc3MgZnJvbSB3aGljaCBhbGwgdmlzaWJsZSBlbGVt ZW50cyBpbmhlcml0Lg0KDQogICAgYW5jZXN0b3IgY2hhaW46DQogICAgICBQcm9wT2JqIDwtIEtp Z0RPUCA8LSBvYmplY3QNCg0KICAgIGNsYXNzIGF0dHJpYnV0ZXM6DQoNCiAgICBhdHRyaWJ1dGVz Og0KICAgICAgcHJvcA0KICAgICAgb2JqdmVjDQogICAgICB2aWV3DQoNCiAgICBtZXRob2RzOg0K ICAgICAgc3RyX2hpZXJhcmNoeQ0KICAgICAgc2hvd25hbWUoc2VsZiwgbikNCiAgICAgIHNob3co c2VsZikNCiAgICAgIGhpZGUoc2VsZikNCiAgICAgIHNldHdpZHRoKHNlbGYsIHdpZHRoKQ0KICAg ICAgc2V0Y29sb3Ioc2VsZiwgY29sb3IpDQogICAgICBzZXRsaW5lc3R5bGUoc2VsZiwgbGluZXN0 eWxlKQ0KICAgICAgc2V0cG9pbnRzdHlsZShzZWxmLCBwb2ludHN0eWxlKQ0KICAgICAgc2V0bmFt ZShzZWxmLCBuKQ0KICAgICAgc2V0c2hvd24oc2VsZiwgcykNCiAgICAgIGdldHdpZHRoKHNlbGYp DQogICAgICBnZXRjb2xvcihzZWxmKQ0KICAgICAgZ2V0bGluZXN0eWxlKHNlbGYpDQogICAgICBn ZXRwb2ludHN0eWxlKHNlbGYpDQogICIiIg0KICANCiAgZGVmIF9faW5pdF9fKHNlbGYsIHByb3As IHR5cGUsIG9ianZlYywgc2hvd24sIG5hbWUsIGludGVybmFsLA0KICAgICAgICAgICAgICAgd2lk dGgsIHBvaW50c3R5bGUsIGxpbmVzdHlsZSwgY29sb3IpOg0KICAgIHNlbGYucHJvcD1wcm9wDQog ICAgc2VsZi5vYmp2ZWM9b2JqdmVjDQogICAgc2VsZi5uX2xiPU5vbmUNCiAgICBLaWdET1AuX19p bml0X18oc2VsZiwgdHlwZSkNCiAgICBpbnRlcm5hbD1wYXJhbWV0ZXIoaW50ZXJuYWwsIEtpZ0RP UC5fa2QuaW50ZXJuYWwpDQogICAgaWYgaW50ZXJuYWw6DQogICAgICBzZWxmLnZpZXcgPSBOb25l DQogICAgZWxzZToNCiMgSGVyZSB3ZSBhc3N1bWUgdGhhdCwgaWYgd2UncmUgZ2l2ZW4gYSBuYW1l IG9mIGFuIG9iamVjdCwNCiMgd2Ugd2FudCB0byB2aXN1YWxpemUgdGhlIG5hbWUgYXMgd2VsbA0K ICAgICAgaWYgbmFtZTogbl9pZD1zZWxmLnNob3duYW1lKG5hbWUsIHNob3duLCB3aWR0aCwgcG9p bnRzdHlsZSwgbGluZXN0eWxlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bG9yKQ0KICAgICAgZWxzZTogICAgbl9pZD1Ob25lDQogICAgICBzZWxmLnZpZXcgPSBLaWdWaWV3 KHNlbGYsIHNob3duLCBuX2lkLCB3aWR0aCwgcG9pbnRzdHlsZSwgbGluZXN0eWxlLA0KICAgICAg ICAgICAgICAgICAgICAgICAgICBjb2xvcikNCg0KICBkZWYgc3RyX2hpZXJhcmNoeShzZWxmKToN CiAgICAiIiJSZXR1cm5zIGEgc3RyaW5nIHdoaWNoIGNhbiBiZSBwbGFjZWQgaW5zaWRlIDxIaWVy YXJjaHk+IHRhZ3MuDQoNCiAgICBleGFtcGxlOg0KICA8UHJvcGVydHkgd2hpY2g9Im1pZC1wb2lu dCIgaWQ9IjE3MCIgPg0KICAgPFBhcmVudCBpZD0iLi4uIiAvPg0KICA8L1Byb3BlcnR5Pg0KDQog ICAgZXhhbXBsZToNCiAgPE9iamVjdCB0eXBlPSJDb25zdHJhaW5lZFBvaW50IiBpZD0iMTQiID4N CiAgIDxQYXJlbnQgaWQ9IjEzIiAvPg0KICAgPFBhcmVudCBpZD0iMTAiIC8+DQogIDwvT2JqZWN0 Pg0KIiIiDQogICAgcmV0c3RyaW5nID0gJyAgPCVzPSIlcyIgaWQ9IiVzIiA+JyAlXA0KICAgICAg ICAgICAgICAgICgoc2VsZi5wcm9wIGFuZCBQUk9QRVJUWV9JTkkgb3IgT0JKRUNUX0lOSSksDQog ICAgICAgICAgICAgICAgIHNlbGYuX3R5cGUsIHNlbGYuZ2V0aWQoKSkNCiAgICBmb3IgcCBpbiBz ZWxmLm9ianZlYzoNCiAgICAgIHJldHN0cmluZyA9IHJldHN0cmluZyArICdcbiAgIDxQYXJlbnQg aWQ9IiVzIiAvPicgJSBwLmdldGlkKCkNCiAgICByZXRzdHJpbmcgPSByZXRzdHJpbmcgKyAnXG4g IDwvJXM+XG4nICUgKHNlbGYucHJvcCBhbmQgUFJPUEVSVFlfRU5EIG9yDQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQkpFQ1RfRU5EKQ0K ICAgIHJldHVybiByZXRzdHJpbmcNCg0KICBkZWYgc2hvd25hbWUoc2VsZiwgbmFtZSwgc2hvd24s IHdpZHRoLCBwb2ludHN0eWxlLCBsaW5lc3R5bGUsIGNvbG9yKToNCiAgICBuPVN0cmluZyhuYW1l KQ0KICAgIHNlbGYubl9sYj1MYWJlbChzZWxmLCAoMCwgMCksIG4sIDAsIHNob3duLCBOb25lLCBG YWxzZSwNCiAgICAgICAgICAgICAgICAgICAgd2lkdGgsIHBvaW50c3R5bGUsIGxpbmVzdHlsZSwg Y29sb3IpDQogICAgcmV0dXJuIG4uZ2V0aWQoKQ0KICAgIA0KICBkZWYgc2hvdyhzZWxmKToNCiAg ICBpZiBzZWxmLnZpZXc6ICAgICAgICAgICAgICAgICAgc2VsZi52aWV3LnNob3duPU5vbmUNCiAg ZGVmIGhpZGUoc2VsZik6DQogICAgaWYgc2VsZi52aWV3OiAgICAgICAgICAgICAgICAgIHNlbGYu dmlldy5zaG93bj1LSUdGQUxTRQ0KICBkZWYgc2V0d2lkdGgoc2VsZiwgd2lkdGgpOiAgICAgICBz ZWxmLnZpZXcud2lkdGg9d2lkdGgNCiAgZGVmIHNldGNvbG9yKHNlbGYsIGNvbG9yKTogICAgICAg c2VsZi52aWV3LmNvbG9yPWNvbG9yDQogIGRlZiBzZXRsaW5lc3R5bGUoc2VsZiwgbGluZXN0eWxl KToNCiAgICBpZiBsaW5lc3R5bGUgaW4gTFM6ICAgICAgICAgICAgc2VsZi52aWV3LmxpbmVzdHls ZT1saW5lc3R5bGUNCiAgZGVmIHNldHBvaW50c3R5bGUoc2VsZiwgcG9pbnRzdHlsZSk6DQogICAg aWYgcG9pbnRzdHlsZSBpbiBQUzogICAgICAgICAgIHNlbGYudmlldy5wb2ludHN0eWxlPXBvaW50 c3R5bGUNCiAgZGVmIHR5cGUoc2VsZik6ICAgICAgICAgICAgICAgICAgcmV0dXJuIFR5cGUoc2Vs ZikNCiAgZGVmIHNldG5hbWUoc2VsZiwgbik6DQogICAgdj1zZWxmLnZpZXcNCiAgICB2Lm5hbWU9 c2VsZi5zaG93bmFtZShuLCB2LnNob3duLCB2LndpZHRoLCB2LnBvaW50c3R5bGUsIHYubGluZXN0 eWxlLA0KICAgICAgICAgICAgICAgICAgICAgICAgIHYuY29sb3IpDQogIGRlZiBzZXRzaG93bihz ZWxmLCBzKTogICAgICAgICAgIHNlbGYudmlldy5zaG93bj1zDQoNCiMjIyMjDQojIFByb3BlcnR5 IGNsYXNzDQojIyMjIw0KDQpjbGFzcyBQcm9wZXJ0eShQcm9wT2JqKToNCiAgIiIiQSBjbGFzcyBm cm9tIHdoaWNoIGFsbCBQcm9wZXJ0eSBlbGVtZW50cyBpbmhlcml0Lg0KDQogICAgYW5jZXN0b3Ig Y2hhaW46DQogICAgICBQcm9wZXJ0eSA8LSBQcm9wT2JqIDwtIEtpZ0RPUCA8LSBvYmplY3QNCiAg IiIiDQogIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlLCBwYXJlbnQsIHNob3duLCBuYW1lLCBpbnRl cm5hbCwNCiAgICAgICAgICAgICAgIHdpZHRoLCBwb2ludHN0eWxlLCBsaW5lc3R5bGUsIGNvbG9y KToNCiAgICBQcm9wT2JqLl9faW5pdF9fKHNlbGYsIFRydWUsIHR5cGUsIChwYXJlbnQsKSwgc2hv d24sIG5hbWUsIGludGVybmFsLA0KICAgICAgICAgICAgICAgd2lkdGgsIHBvaW50c3R5bGUsIGxp bmVzdHlsZSwgY29sb3IpDQojICAgIHByaW50IHNob3duDQoNCiMjIyMjDQojIE9iamVjdCBjbGFz cw0KIyMjIyMNCg0KY2xhc3MgT2JqZWN0KFByb3BPYmopOg0KICAiIiJBIGNsYXNzIGZyb20gd2hp Y2ggYWxsIE9iamVjdCBlbGVtZW50cyBpbmhlcml0Lg0KDQogICAgYW5jZXN0b3IgY2hhaW46DQog ICAgICBPYmplY3QgPC0gUHJvcE9iaiA8LSBLaWdET1AgPC0gb2JqZWN0DQogICIiIg0KDQogIGRl ZiBfX2luaXRfXyhzZWxmLCB0eXBlLCBvYmp2ZWMsIHNob3duLCBuYW1lLCBpbnRlcm5hbCwNCiAg ICAgICAgICAgICAgIHdpZHRoLCBwb2ludHN0eWxlLCBsaW5lc3R5bGUsIGNvbG9yKToNCiAgICBQ cm9wT2JqLl9faW5pdF9fKHNlbGYsIEZhbHNlLCB0eXBlLCBvYmp2ZWMsIHNob3duLCBuYW1lLCBp bnRlcm5hbCwNCiAgICAgICAgICAgICAgIHdpZHRoLCBwb2ludHN0eWxlLCBsaW5lc3R5bGUsIGNv bG9yKQ0KIA0KIyMjIyMNCiMgRGF0YQ0KIyMjIyMNCg0KZGF0YT0oXA0KKCJJbnQiLCAgICAiaW50 IiwgICAgInZhbCIpLA0KKCJEb3VibGUiLCAiZG91YmxlIiwgInZhbCIpLA0KKCJTdHJpbmciLCAi c3RyaW5nIiwgInhtbC5zYXguc2F4dXRpbHMuZXNjYXBlKHZhbCkiKSwNCikNCg0KZGVmIGRhdGFi dWlsZChub21lY2xhc3NlLCBub21la2lnLCB2PSJ2YWwiKToNCiAgIiIiQ3JlYXRlIHN0cmluZyB3 aXRoIGEgRGF0YSBjbGFzcyBkZWZpbml0aW9uLiIiIg0KICByZXR1cm4gIiIiY2xhc3MgJXMoRGF0 YSk6DQoNCiAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbCk6DQogICAgRGF0YS5fX2luaXRfXyhzZWxm LCAiJXMiLCAlcykNCiIiIiAlIChub21lY2xhc3NlLCBub21la2lnLCB2KQ0KDQpmb3IgZCBpbiBk YXRhOg0KICBwMSwgcDIsIHAzID0gZA0KICBleGVjIGRhdGFidWlsZChwMSwgcDIsIHAzKQ0KDQoj IyMjIw0KIyBPYmplY3RzDQojIyMjIw0KIiIiVG8gYWRkOg0KKCJDb252ZXhIdWxsIiwgIkNvbnZl eEh1bGwiLCAicG9seWdvbiwiLCAiKHBvbHlnb24sKSwiKSwNCigiRWxsaXBzZUJ5Rm9jdXNGb2N1 c1BvaW50IiwgIkVsbGlwc2VCRkZQIiwgInAxLCBwMiwgcDMsIiwgIihwMSwgcDIsIHAzLCksIiks DQooIkh5cGVyYm9sYUJ5Rm9jdXNGb2N1c1BvaW50IiwgIkh5cGVyYm9sYUJGRlAiLCAicDEsIHAy LCBwMywiLCAiKHAxLCBwMiwgcDMsKSwiKSwNCigiQ29uaWNCeTVQb2ludHMiLCAiQ29uaWNCNVAi LCAicDEsIHAyLCBwMywgcDQsIHA1LCIsICIocDEsIHAyLCBwMywgcDQsIHA1KSwiKSwNCigiUGFy YWJvbGFCeTNQb2ludHMiLCAiUGFyYWJvbGFCVFAiLCAicDEsIHAyLCBwMywiLCAiKHAxLCBwMiwg cDMsKSwiKSwNCigiQ29jQ3VydmUiLCAiQ29jQ3VydmUiLCAibGluZSwgcG9pbnQsIiwgIihsaW5l LCBwb2ludCwpLCIpLA0KIiIiDQpvYmplY3RzPShcDQojIyMjIyMgUG9pbnRzIGNsYXNzDQooIlBv aW50IiwgICAgICAgICAgICJGaXhlZFBvaW50IiwgIngsIHksIiwgIihraWdfZG91YmxlKHgpLCBr aWdfZG91YmxlKHkpKSwiKSwNCigiQ29uc3RyYWluZWRQb2ludCIsICJDb25zdHJhaW5lZFBvaW50 IiwNCiAgICAgICAgICAgICAgICAgICAgInQsIGN1cnZlLCIsICIoa2lnX2RvdWJsZSh0KSwgY3Vy dmUpLCIpLA0KKCJSZWxhdGl2ZVBvaW50IiwgICAiUmVsYXRpdmVQb2ludCIsDQogICAgICAgICAg ICAgICAgICAgICJ4LCB5LCBwLCIsICIoa2lnX2RvdWJsZSh4KSwga2lnX2RvdWJsZSh5KSwgcCks IiksDQojIyMjIyMgU2VnbWVudHMsIHJheXMsIGxpbmVzDQooIkxpbmUiLCAgICAgICAgICAgICJM aW5lQUIiLCAicDEsIHAyLCIsICIocDEsIHAyKSwiKSwNCigiU2VnbWVudCIsICAgICAgICAgIlNl Z21lbnRBQiIsICJwMSwgcDIsIiwgIihwMSwgcDIpLCIpLA0KKCJSYXkiLCAgICAgICAgICAgICAi UmF5QUIiLCAicDEsIHAyLCIsICIocDEsIHAyKSwiKSwNCigiT3J0aG9nb25hbCIsICAgICAgIkxp bmVQZXJwZW5kIiwgImxpbmUsIHBvaW50LCIsICIobGluZSwgcG9pbnQsKSwiKSwNCigiUGFyYWxs ZWwiLCAgICAgICAgIkxpbmVQYXJhbGxlbCIsICJsaW5lLCBwb2ludCwiLCAiKGxpbmUsIHBvaW50 LCksIiksDQojIyMjIyMgQ2lyY2xlcywgYXJjcywgLi4uDQooIkNpcmNsZSIsICAgICAgICAgICJD aXJjbGVCQ1AiLCAiY2VudGVyLCBwb2ludCwiLCAiKGNlbnRlciwgcG9pbnQsKSwiKSwNCigiQ2ly Y2xlQnlDZW50ZXJQb2ludCIsICAgICAgICAgICJDaXJjbGVCQ1AiLCAiY2VudGVyLCBwb2ludCwi LCAiKGNlbnRlciwgcG9pbnQsKSwiKSwNCigiQ2lyY2xlQnlDZW50ZXJSYWRpdXMiLCAiQ2lyY2xl QlBSIiwgImNlbnRlciwgcmFkaXVzLCIsICIoY2VudGVyLCByYWRpdXMsKSwiKSwNCigiQ2lyY2xl QnkzUG9pbnRzIiwgICJDaXJjbGVCVFAiLCAicDEsIHAyLCBwMywiLCAiKHAxLCBwMiwgcDMsKSwi KSwNCigiQXJjQnkzUG9pbnRzIiwgICAgIkFyY0JUUCIsICJwMSwgcDIsIHAzLCIsICIocDEsIHAy LCBwMywpLCIpLA0KKCJBcmNCeUNlbnRlclBvaW50QW5nbGUiLCAiQXJjQkNQQSIsDQogICAgICAg ICAgICAgICAgICAgICJjZW50ZXIsIHBvaW50LCBhbmdsZSwiLCAiKGNlbnRlciwgcG9pbnQsIGFu Z2xlKSwiKSwNCiMjIyMjIyBDb25pY3MuLi4NCigiUGFyYWJvbGFCeURpcmVjdHJpeEZvY3VzIiwg IlBhcmFib2xhQkRQIiwgImxpbmUsIHBvaW50LCIsICIobGluZSwgcG9pbnQsKSwiKSwNCigiVmVy dGljYWxDdWJpYyIsICJWZXJ0aWNhbEN1YmljQjRQIiwgInAxLCBwMiwgcDMsIHA0LCIsICIocDEs IHAyLCBwMywgcDQsKSwiKSwNCigiQ29uaWNBcmMiLCAiQ29uaWNBcmNCVFBDIiwgInAxLCBwMiwg cDMsIGNlbnRlciwiLCAiKHAxLCBwMiwgcDMsIGNlbnRlciksIiksDQooIkNvbmljQnk1UG9pbnRz IiwgIkNvbmljQjVQIiwgInAxLCBwMiwgcDMsIHA0LCBwNSwiLCAiKHAxLCBwMiwgcDMsIHA0LCBw NSwpLCIpLA0KKCJFbGxpcHNlQnlGb2N1c0ZvY3VzUG9pbnQiLCAiRWxsaXBzZUJGRlAiLCAicDEs IHAyLCBwMywiLCAiKHAxLCBwMiwgcDMsKSwiKSwNCigiUGFyYWJvbGFCeTNQb2ludHMiLCAiUGFy YWJvbGFCVFAiLCAicDEsIHAyLCBwMywiLCAiKHAxLCBwMiwgcDMsKSwiKSwNCigiSHlwZXJib2xh QnlGb2N1c0ZvY3VzUG9pbnQiLCAiSHlwZXJib2xhQkZGUCIsICJwMSwgcDIsIHAzLCIsICIocDEs IHAyLCBwMywpLCIpLA0KIyMjIyBDdWJpY3MNCigiQ3ViaWNCeTlQb2ludHMiLCAiQ3ViaWNCOVAi LCAicDEsIHAyLCBwMywgcDQsIHA1LCBwNiwgcDcsIHA4LCBwOSwiLCIocDEsIHAyLCBwMywgcDQs IHA1LCBwNiwgcDcsIHA4LCBwOSwpLCIgKSwNCiMjIyMjDQojIEludGVyc2VjdGlvbnMuICBUaGUg b25seSBzdGFuZGFyZCBvYmplY3QgaXMgdGhlIGludGVyc2VjdGlvbg0KIyBvZiB0d28gbGluZXMs IHdoaWNoIGFsd2F5cyBnaXZlcyBvbmUgc2luZ2xlIHBvaW50Lg0KIyMjIyMNCigiTGluZUxpbmVJ bnRlcnNlY3Rpb24iLCAiTGluZUxpbmVJbnRlcnNlY3Rpb24iLCAibDEsIGwyLCIsICIobDEsIGwy KSwiKSwNCiMjIyMjDQojIENpcmNsZUNpcmNsZUludGVyc2VjdGlvbiBhbmQgQ29uaWNMaW5lSW50 ZXJzZWN0aW9uIGNsYXNzZXMNCiMgVGhlICJ3aGljaCIgYXJndW1lbnQgdGFrZXMgdmFsdWVzIG9m IDEgb3IgLTEsIHRvIGluZGljYXRlDQojIHdoaWNoIG9mIHRoZSBpbnRlcnNlY3Rpb25zIHlvdSB3 YW50IHRvIGdldC4NCiMjIyMjDQooIkNpcmNsZUNpcmNsZUludGVyc2VjdGlvbiIsICJDaXJjbGVD aXJjbGVJbnRlcnNlY3Rpb24iLA0KICAgICAgICAgICAgICAgICAgICAiYzEsIGMyLCB3aGljaCwi LCAiKGMxLCBjMiwgSW50KHdoaWNoKSwpLCIpLA0KKCJDb25pY0xpbmVJbnRlcnNlY3Rpb24iLCAi Q29uaWNMaW5lSW50ZXJzZWN0aW9uIiwNCiAgICAgICAgICAgICAgICAgICAgImNvbmljLCBsaW5l LCB3aGljaCwiLCAiKGNvbmljLCBsaW5lLCBJbnQod2hpY2gpLCksIiksDQooIkNvbmljTGluZU90 aGVySW50ZXJzZWN0aW9uIiwgIkNvbmljTGluZU90aGVySW50ZXJzZWN0aW9uIiwNCiAgICAgICAg ICAgCSAgICAiY29uaWMsIGxpbmUsIHAsIiwgIihjb25pYywgbGluZSwgcCksIiksDQooIkN1Ymlj TGluZUludGVyc2VjdGlvbiIsICJDdWJpY0xpbmVJbnRlcnNlY3Rpb24iLA0KICAgICAgICAgICAg ICAgICAgICAiY3ViaWMsIGxpbmUsIHdoaWNoLCIsICIoY3ViaWMsIGxpbmUsIEludCh3aGljaCks KSwiKSwNCigiQ3ViaWNMaW5lT3RoZXJJbnRlcnNlY3Rpb24iLCAiQ3ViaWNMaW5lT3RoZXJJbnRl cnNlY3Rpb24iLCAiY3ViaWMsIGxpbmUsIHAxLCBwMiwiLCAiKGN1YmljLCBsaW5lLCBwMSwgcDIp LCIpLA0KIyMjIyMjIFRyaWFuZ2xlIGNsYXNzDQooIlRyaWFuZ2xlIiwgICAgICAgICJUcmlhbmds ZUIzUCIsICJwMSwgcDIsIHAzLCIsICIocDEsIHAyLCBwMyksIiksDQojIyMjIyMgUG9seWdvbiBj bGFzcyAgICh0aGUgb25seSBhcmd1bWVudCBpcyBhIHBvaW50cyB2ZWN0KQ0KKCJQb2x5Z29uIiwg ICAgICAgICAiUG9seWdvbkJOUCIsICJwdmVjLCIsICJwdmVjLCIpLA0KIyMjIyMjIFBvbHlnb25C Q1YgY2xhc3MNCiMgUmVndWxhciBwb2x5Z29uIGRhdGEgLSBjZW50ZXIgYW5kIGEgdmVydGV4LiBU aGUgdGhpcmQgYXJndW1lbnQNCiMgaXMgYW4gaW50ZWdlciBzaWduaWZ5aW5nIHRoZSBudW1iZXIg b2Ygc2lkZXMuDQooIlBvbHlnb25CQ1YiLCAgICAgICJQb2xpZ29uQkNWIiwNCiAgICAgICAgICAg ICAgICAgICAgImNlbnRlciwgdmVydGV4LCBuLCIsICIoY2VudGVyLCB2ZXJ0ZXgsIEludChuKSks IiksDQojIyMjIyBQb2x5Z29uVmVydGV4IGNsYXNzICAgIChwb2x5Z29uLCBpbnRlZ2VyID49IDAp DQooIlBvbHlnb25WZXJ0ZXgiLCAgICJQb2x5Z29uVmVydGV4IiwNCiAgICAgICAgICAgICAgICAg ICAgInBvbHlnb24sIGksIiwgIihwb2x5Z29uLCBJbnQoaSkpLCIpLA0KIyMjIyMgUG9seWdvblNp ZGUgY2xhc3MgICAgKHBvbHlnb24sIGludGVnZXIgPj0gMCkNCigiUG9seWdvblNpZGUiLCAgICAg IlBvbHlnb25TaWRlIiwNCiAgICAgICAgICAgICAgICAgICAgInBvbHlnb24sIGksIiwgIihwb2x5 Z29uLCBJbnQoaSkpLCIpLA0KIyMjIyMjIFZlY3RvciwgYW5nbGUsLi4uDQooIlZlY3RvciIsICAg ICAgICAgICJWZWN0b3IiLCAicDEsIHAyLCIsICIocDEsIHAyKSwiKSwNCigiQW5nbGUiLCAgICAg ICAgICAgIkFuZ2xlIiwgInAxLCB2LCBwMiwiLCAiKHAxLCB2LCBwMiksIiksDQojIyMjIyMgVHJh bnNmb3JtYXRpb25zDQooIlRyYW5zbGF0ZSIsICAgICAgICJUcmFuc2xhdGlvbiIsICJvYmosIHZl Y3RvciwiLCAiKG9iaiwgdmVjdG9yKSwiKSwNCigiQ2VudHJhbFN5bW1ldHJ5IiwgIlBvaW50UmVm bGVjdGlvbiIsICJvYmosIGNlbnRlciwiLCAiKG9iaiwgY2VudGVyKSwiKSwNCigiQXhpYWxTeW1t ZXRyeSIsICAgIkxpbmVSZWZsZWN0aW9uIiwgIm9iaiwgY2VudGVyLCIsICIob2JqLCBjZW50ZXIp LCIpLA0KKCJSb3RhdGUiLCAgICAgICAgICAiUm90YXRpb24iLA0KICAgICAgICAgICAgICAgICAg ICAib2JqLCBjZW50ZXIsIGFuZ2xlLCIsICIob2JqLCBjZW50ZXIsIGFuZ2xlKSwiKSwNCigiU2Nh bGUiLCAgICAgICAgICAgIlNjYWxpbmdPdmVyQ2VudGVyIiwNCiAgICAgICAgICAgICAgICAgICAg Im9iaiwgY2VudGVyLCBzZWdtZW50LCIsICIob2JqLCBjZW50ZXIsIHNlZ21lbnQpLCIpLA0KKCJT Y2FsZTIiLCAgICAgICAgICAiU2NhbGluZ092ZXJDZW50ZXIyIiwNCiAgICAgICAgICAgICAgICAg ICAgIm9iaiwgY2VudGVyLCBzMSwgczIsIiwgIihvYmosIGNlbnRlciwgczEsIHMyKSwiKSwNCigi SW52ZXJ0UG9pbnQiLCAgICAgIkludmVydFBvaW50IiwNCiAgICAgICAgICAgICAgICAgICAgInBv aW50LCBjaXJjbGUsIiwgIihwb2ludCwgY2lyY2xlKSwiKSwNCigiQ2lyY3VsYXJJbnZlcnNpb24i LCAiQ2lyY3VsYXJJbnZlcnNpb24iLA0KICAgICAgICAgICAgICAgICAgICAib2JqZWN0dG9pbnZl cnQsIGNpcmNsZSwiLCAiKG9iamVjdHRvaW52ZXJ0LCBjaXJjbGUpLCIpLA0KKCJJbnZlcnRMaW5l IiwgICAgICAiSW52ZXJ0TGluZSIsDQogICAgICAgICAgICAgICAgICAgICJsaW5lLCBjaXJjbGUs IiwgIihsaW5lLCBjaXJjbGUpLCIpLA0KKCJJbnZlcnRDaXJjbGUiLCAgICAiSW52ZXJ0Q2lyY2xl IiwNCiAgICAgICAgICAgICAgICAgICAgImNpcmNsZXRvaW52ZXJ0LCBjaXJjbGUsIiwgIihjaXJj bGV0b2ludmVydCwgY2lyY2xlKSwiKSwNCigiSW52ZXJ0QXJjIiwgICAgICAgIkludmVydEFyYyIs DQogICAgICAgICAgICAgICAgICAgICJhcmN0b2ludmVydCwgY2lyY2xlLCIsICIoYXJjdG9pbnZl cnQsIGNpcmNsZSksIiksDQooIkludmVydFNlZ21lbnQiLCAgICJJbnZlcnRTZWdtZW50IiwNCiAg ICAgICAgICAgICAgICAgICAgInNlZ21lbnQsIGNpcmNsZSwiLCAiKHNlZ21lbnQsIGNpcmNsZSks IiksDQojIyMjIyMgVGV4dCwgTGFiZWwsIC4uLg0KKCJUZXh0IiwgICAgICAgICAgICAiTGFiZWwi LA0KICAgICAgICAgICAgICAgICAgICAicG9pbnQsIHN0cmluZywgYm94ZWQ9MCwiLA0KICAgICAg ICAgICAgICAgICAgICAiKEludChib3hlZCksIGtpZ19wb2ludChwb2ludCksIGtpZ19zdHJpbmco c3RyaW5nKSksIiksDQooIkxhYmVsIiwgICAgICAgICAgICJMYWJlbCIsDQogICAgICAgICAgICAg ICAgICAgICJvYmosIGRpc3BsLCBzdHJpbmcsIGJveGVkPTAsIiwNCiAgICAgICAgICAgICAgICAg ICAgIihJbnQoYm94ZWQpLGtpZ19yZWxwb2ludChvYmosIGRpc3BsKSxraWdfc3RyaW5nKHN0cmlu ZykpLCIpLA0KKCJWYXJUZXh0IiwgICAgICAgICAiTGFiZWwiLA0KICAgICAgICAgICAgICAgICAg ICAicG9pbnQsIHN0cmluZywgdmFycywgYm94ZWQ9MCwiLA0KICAgICAgICAgICAgICAgICAgICAi KEludChib3hlZCksIGtpZ19wb2ludChwb2ludCksIFwNCiAgICAgICAgICAgICAgICAgICAga2ln X3N0cmluZyhzdHJpbmcpKSt0dXBsZSh2YXJzKSwiKSwNCigiVmFyTGFiZWwiLCAgICAgICAgIkxh YmVsIiwNCiAgICAgICAgICAgICAgICAgICAgIm9iaiwgZGlzcGwsIHN0cmluZywgdmFycywgYm94 ZWQ9MCwiLA0KICAgICAgICAgICAgICAgICAgICAiKEludChib3hlZCksIGtpZ19yZWxwb2ludChv YmosIGRpc3BsKSwgXA0KICAgICAgICAgICAgICAgICAgICBraWdfc3RyaW5nKHN0cmluZykpK3R1 cGxlKHZhcnMpLCIpLA0KIyMjIyMjIFB5dGhvbiBzY3JpcHRpbmcuLi4gd2UgbmVlZCBzb21lIHdv cmsgaGVyZS4uLg0KKCJQeXRob25TY3JpcHQiLCAgICAiUHl0aG9uRXhlY3V0ZVR5cGUiLA0KICAg ICAgICAgICAgICAgICAgICAic2NyaXB0LCBhcmd2ZWMsIiwNCiAgICAgICAgICAgICAgICAgICAg JyhPYmplY3QoIlB5dGhvbkNvbXBpbGVUeXBlIiwgKGtpZ19zdHJpbmcoc2NyaXB0KSwpLCBzaG93 bixcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIGludGVybmFsLCB3aWR0aCwg cG9pbnRzdHlsZSwgbGluZXN0eWxlLFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29s b3IpLCkrdHVwbGUoYXJndmVjKSwnKSwNCikNCg0KZGVmIG9iamVjdGJ1aWxkKG5hbWVjbGFzcywg bmFtZWtpZywgcGFyYW1zLCBvYmpwYXJhbXMpOg0KICAiIiJDcmVhdGUgc3RyaW5nIHdpdGggYSBP YmplY3QgY2xhc3MgZGVmaW5pdGlvbi4iIiINCiAgcmV0dXJuICIiImNsYXNzICVzKE9iamVjdCk6 DQoNCiAgZGVmIF9faW5pdF9fKHNlbGYsICVzIHNob3duPU5vbmUsIG5hbWU9Tm9uZSwgaW50ZXJu YWw9Tm9uZSwNCiAgICAgICAgICAgICAgIHdpZHRoPU5vbmUsIHBvaW50c3R5bGU9Tm9uZSwgbGlu ZXN0eWxlPU5vbmUsIGNvbG9yPU5vbmUpOg0KICAgIE9iamVjdC5fX2luaXRfXyhzZWxmLCAiJXMi LCAlcyBzaG93biwgbmFtZSwgaW50ZXJuYWwsDQogICAgICAgICAgICAgICAgICAgIHdpZHRoLCBw b2ludHN0eWxlLCBsaW5lc3R5bGUsIGNvbG9yKQ0KIiIiICUgKG5hbWVjbGFzcywgcGFyYW1zLCBu YW1la2lnLCBvYmpwYXJhbXMpDQoNCmZvciBvIGluIG9iamVjdHM6DQogIHAxLCBwMiwgcDMsIHA0 ID0gbw0KICBleGVjIG9iamVjdGJ1aWxkKHAxLCBwMiwgcDMsIHA0KQ0KDQojIyMjIw0KIyBQcm9w ZXJ0aWVzDQojIyMjIw0KDQpwcm9wZXJ0eT0oXA0KKCJUeXBlIiwgICAgICAgICAgICAiYmFzZS1v YmplY3QtdHlwZSIsICJvLCIsICJvLCIpLA0KKCJDb29yZGluYXRlIiwgICAgICAiY29vcmRpbmF0 ZSIsICJwb2ludCwiLCAicG9pbnQsIiksDQooIlhDb29yZCIsICAgICAgICAgICJjb29yZGluYXRl LXgiLCAicG9pbnQsIiwgInBvaW50LCIpLA0KKCJZQ29vcmQiLCAgICAgICAgICAiY29vcmRpbmF0 ZS15IiwgInBvaW50LCIsICJwb2ludCwiKSwNCigiTWlkUG9pbnRzIiwgICAgICAgIm1pZC1wb2lu dCIsICJhLCBiLCIsICJTZWdtZW50KGEsIGIsIGludGVybmFsPVRydWUpLCIpLA0KKCJNaWRQb2lu dCIsICAgICAgICAibWlkLXBvaW50IiwgInNlZ21lbnQsIiwgInNlZ21lbnQsIiksDQooIk1pZFBv aW50QUIiLCAgICAgICJtaWQtcG9pbnQiLCAiYSwgYiwiLCAiU2VnbWVudChhLCBiLCBpbnRlcm5h bD1UcnVlKSwiKSwNCigiTWlkUG9pbnRTZWdtZW50IiwgIm1pZC1wb2ludCIsICJzZWdtZW50LCIs ICJzZWdtZW50LCIpLA0KKCJFbmRQb2ludEEiLCAgICAgICAiZW5kLXBvaW50LUEiLCAic2VnbWVu dCwiLCAic2VnbWVudCwiKSwNCigiRW5kUG9pbnRCIiwgICAgICAgImVuZC1wb2ludC1CIiwgInNl Z21lbnQsIiwgInNlZ21lbnQsIiksDQooIkxlbmd0aCIsICAgICAgICAgICJsZW5ndGgiLCAic2Vn bWVudCwiLCAic2VnbWVudCwiKSwNCigiRXF1YXRpb24iLCAgICAgICAgImVxdWF0aW9uIiwgInNl Z21lbnQsIiwgInNlZ21lbnQsIiksDQooIlNsb3BlIiwgICAgICAgICAgICJzbG9wZSIsICJzZWdt ZW50LCIsICJzZWdtZW50LCIpLA0KKCJOdW1PZlNpZGVzIiwgICAgICAicG9seWdvbi1udW1iZXIt b2Ytc2lkZXMiLCAicG9seSwiLCAicG9seSwiKSwNCigiUGVyaW1ldGVyIiwgICAgICAgInBvbHln b24tcGVyaW1ldGVyIiwgInBvbHksIiwgInBvbHksIiksDQooIlN1cmZhY2UiLCAgICAgICAgICJw b2x5Z29uLXN1cmZhY2UiLCAicG9seSwiLCAicG9seSwiKSwNCigiQ2VudGVyT2ZNYXNzIiwgICAg InBvbHlnb24tY2VudGVyLW9mLW1hc3MiLCAicG9seSwiLCAicG9seSwiKSwNCigiV2luZGluZ051 bWJlciIsICAgInBvbHlnb24td2luZGluZy1udW1iZXIiLCAicG9seSwiLCAicG9seSwiKSwNCigi UmFkaXVzIiwgICAgICAgICAgInJhZGl1cyIsICJjaXJjbGUsIiwgImNpcmNsZSwiKSwNCigiQ2Vu dGVyIiwgICAgICAgICAgImNlbnRlciIsICJjaXJjbGUsIiwgImNpcmNsZSwiKSwNCigiQmlzZWN0 b3IiLCAgICAgICAgImFuZ2xlLWJpc2VjdG9yIiwgImFuZ2xlLCIsICJhbmdsZSwiKSwNCigiU3Vw cG9ydCIsICAgICAgICAgInN1cHBvcnQiLCAib2JqZWN0LCIsICJvYmplY3QsIiksDQopDQoNCmRl ZiBwcm9wZXJ0eWJ1aWxkKG5hbWVjbGFzcywgbmFtZWtpZywgcGFyYW1zLCBvYmpwYXJhbXMpOg0K ICAiIiJDcmVhdGUgc3RyaW5nIHdpdGggYSBQcm9wZXJ0eSBjbGFzcyBkZWZpbml0aW9uLiIiIg0K ICByZXR1cm4gIiIiY2xhc3MgJXMoUHJvcGVydHkpOg0KDQogIGRlZiBfX2luaXRfXyhzZWxmLCAl cyBzaG93bj1Ob25lLCBuYW1lPU5vbmUsIGludGVybmFsPUZhbHNlLA0KICAgICAgICAgICAgICAg d2lkdGg9Tm9uZSwgcG9pbnRzdHlsZT1Ob25lLCBsaW5lc3R5bGU9Tm9uZSwgY29sb3I9Tm9uZSk6 DQogICAgUHJvcGVydHkuX19pbml0X18oc2VsZiwgIiVzIiwgJXMgc2hvd24sIG5hbWUsIGludGVy bmFsLA0KICAgICAgICAgICAgICAgICAgICB3aWR0aCwgcG9pbnRzdHlsZSwgbGluZXN0eWxlLCBj b2xvcikNCiIiIiAlIChuYW1lY2xhc3MsIHBhcmFtcywgbmFtZWtpZywgb2JqcGFyYW1zKQ0KDQpm b3IgcCBpbiBwcm9wZXJ0eToNCiAgcDEsIHAyLCBwMywgcDQgPSBwDQogIGV4ZWMgcHJvcGVydHli dWlsZChwMSwgcDIsIHAzLCBwNCkNCg0KIyMjIyMNCiMgU3RhcnQgb2YgcHJvcGVydGllcyBkZWZp bml0aW9ucyBhcyBPYmplY3QncyBtZXRob2RzDQojIyMjIw0KIyB0byBiZSBjbGVhbmVkIHVwIQ0K cG9pbnRzICA9KFBvaW50LCBDb25zdHJhaW5lZFBvaW50LCBSZWxhdGl2ZVBvaW50LCBQb2x5Z29u VmVydGV4KQ0KbGluZXM9KFNlZ21lbnQsIFJheSwgVmVjdG9yLCBJbnZlcnRMaW5lKQ0Kc2VnbWVu dHM9KFNlZ21lbnQsIFZlY3RvciwgUG9seWdvblNpZGUsIEludmVydFNlZ21lbnQpDQpjaXJjbGVz ID0oQ2lyY2xlQnlDZW50ZXJQb2ludCwgQ2lyY2xlQnkzUG9pbnRzLCBDaXJjdWxhckludmVyc2lv biwgQXJjQnkzUG9pbnRzLA0KICAgICAgICAgIEFyY0J5Q2VudGVyUG9pbnRBbmdsZSwgSW52ZXJ0 Q2lyY2xlKQ0KcG9seWdvbnM9KFBvbHlnb24sIFBvbHlnb25CQ1YsIFRyaWFuZ2xlKQ0KYW5nbGVz ICA9KEFuZ2xlLCkNCnN1cHAgICAgPSBjaXJjbGVzK2xpbmVzDQoNCm1ldGhvZHM9KFwNCigiY29v cmRpbmF0ZSIsICJjb29yZGluYXRlIiwgcG9pbnRzKSwNCigiY29vcmRpbmF0ZS14IiwgInhjb29y ZCIsIHBvaW50cyksDQooImNvb3JkaW5hdGUteSIsICJ5Y29vcmQiLCBwb2ludHMpLA0KKCJtaWQt cG9pbnQiLCAibWlkcG9pbnQiLCBzZWdtZW50cyksDQooImVuZC1wb2ludC1BIiwgImVuZHBvaW50 QSIsIHNlZ21lbnRzKSwNCigiZW5kLXBvaW50LUIiLCAiZW5kcG9pbnRCIiwgc2VnbWVudHMpLA0K KCJsZW5ndGgiLCAibGVuZ3RoIiwgc2VnbWVudHMpLA0KKCJlcXVhdGlvbiIsICJlcXVhdGlvbiIs IGxpbmVzKSwNCigic2xvcGUiLCAic2xvcGUiLCBsaW5lcyksDQooInBvbHlnb24tbnVtYmVyLW9m LXNpZGVzIiwgIm51bW9mc2lkZXMiLCBwb2x5Z29ucyksDQooInBvbHlnb24tcGVyaW1ldGVyIiwg InBlcmltZXRlciIsIHBvbHlnb25zKSwNCigicG9seWdvbi1zdXJmYWNlIiwgInN1cmZhY2UiLCBw b2x5Z29ucyksDQooInBvbHlnb24tY2VudGVyLW9mLW1hc3MiLCAiY2VudGVyb2ZtYXNzIiwgcG9s eWdvbnMpLA0KKCJwb2x5Z29uLXdpbmRpbmctbnVtYmVyIiwgIndpbmRpbmdudW1iZXIiLCBwb2x5 Z29ucyksDQooImNlbnRlciIsICJjZW50ZXIiLCBwb2x5Z29ucyksDQooImNlbnRlciIsICJjZW50 ZXIiLCBjaXJjbGVzKSwNCigiYW5nbGUtYmlzZWN0b3IiLCAiYmlzZWN0b3IiLCBhbmdsZXMpLA0K KCJzdXBwb3J0IiwgInN1cHBvcnQiLCAgc3VwcCksDQopDQoNCmRlZiBtZXRob2RzYnVpbGQobmFt ZWtpZyk6DQogICIiIkNyZWF0ZSBzdHJpbmcgd2l0aCBhIG1ldGhvZCBjbGFzcyBkZWZpbml0aW9u LiIiIg0KICByZXR1cm4gIiIiZGVmIG1ldGhvZChzZWxmLHNob3duPU5vbmUsIG5hbWU9Tm9uZSwg aW50ZXJuYWw9RmFsc2UsDQogICAgICAgICAgICAgICB3aWR0aD1Ob25lLCBwb2ludHN0eWxlPU5v bmUsIGxpbmVzdHlsZT1Ob25lLCBjb2xvcj1Ob25lKToNCiAgICByZXR1cm4gUHJvcGVydHkoIiVz Iiwgc2VsZiwgc2hvd24sIG5hbWUsIGludGVybmFsLA0KICAgICAgICAgICAgICAgICAgICB3aWR0 aCwgcG9pbnRzdHlsZSwgbGluZXN0eWxlLCBjb2xvcikNCiIiIiAlIChuYW1la2lnLCApDQoNCmZv ciBwIGluIG1ldGhvZHM6DQogIHAxLCBwMiwgY2wgPSBwDQogIGV4ZWMgbWV0aG9kc2J1aWxkKHAx KQ0KICBmb3IgYyBpbiBjbDoNCiAgICBzZXRhdHRyKGMsIHAyLCBtZXRob2QpDQoNCiMjIyMjDQoj IFVzYWdlDQojIyMjIw0KDQpkZWYgdXNhZ2UoY29kZXhpdCk6DQogIHByaW50ID4+IHN5cy5zdGRl cnIsICIiIg0KdXNhZ2U6IHB5a2lnLnB5IFtvcHRpb25zLi4uXSBmaWxlIC4uLg0KDQpPcHRpb25z Og0KICAgIC1oLCAtLWhlbHAgICAgICAgICAgU2hvdyB0aGlzIHRleHQuDQogICAgLW8gPGtpZ19m aWxlPg0KICAgIC0tb3V0cHV0IDxraWdfZmlsZT4gT3V0cHV0IHRvIDxraWdfZmlsZT4gYW5kIGRv bid0IGNhbGwgS2lnLg0KICAgIC12LCAtLXZlcnNpb24gICAgICAgT3V0cHV0IHZlcnNpb24gYW5k IGV4aXQuDQogICAgLW4sIC0tbm9raWcgICAgICAgICBEb24ndCBjYWxsIEtpZy4NCg0KZXhhbXBs ZXM6DQogICAgJCBweWtpZy5weSBteV9maWxlLmtweQ0KICAgICQgcHlraWcucHkgLW8gb3V0cHV0 X2ZpbGUua2lnIG15X2ZpbGUua3B5DQogICAgJCAuLi4NCiIiIg0KICBzeXMuZXhpdChjb2RleGl0 KQ0KDQojIyMjIw0KIyBNYWluIGJvZHkNCiMjIyMjDQoNCmltcG9ydCBzeXMsIHRyYWNlYmFjaywg b3MNCiNmcm9tIG1hdGggaW1wb3J0ICogICAgIyBmb3IgdXNlcidzIHByb2dyYW1zDQppbXBvcnQg bWF0aCAgICAgICAgICAgICMgZm9yIHVzZXIncyBwcm9ncmFtcw0KaW1wb3J0IGdldG9wdA0KaW1w b3J0IGF0ZXhpdA0KaW1wb3J0IHhtbC5zYXguc2F4dXRpbHMNCg0KZGVmIHByb2coKToNCiAgdHJ5 Og0KICAgIF9vcHRzLCBfYXJncyA9IGdldG9wdC5nZXRvcHQoc3lzLmFyZ3ZbMTpdLCAiaHZubzoi LFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiaGVscCIsICJ2ZXJzaW9uIiwg Im5va2lnIiwgIm91dHB1dD0iXSkNCiAgZXhjZXB0IGdldG9wdC5HZXRvcHRFcnJvcjoNCiAgICBw cmludCAiR2V0b3B0RXJyb3IiDQogICAgdXNhZ2UoMikNCiAgX2NhbGxLaWc9VHJ1ZQ0KICBfb2Y9 RmFsc2UNCiAgZm9yIF9vcHQsIF9hcmcgaW4gX29wdHM6DQogICAgaWYgX29wdCBpbiAoIi1oIiwg Ii0taGVscCIpOg0KICAgICAgdXNhZ2UoMCkNCiAgICBpZiBfb3B0IGluICgiLXYiLCAiLS12ZXJz aW9uIik6DQogICAgICBwcmludCAiVmVyc2lvbjoiLCB2ZXJzaW9uDQogICAgICBzeXMuZXhpdCgw KQ0KICAgIGlmIF9vcHQgaW4gKCItbiIsICItLW5va2lnIik6DQogICAgICBfY2FsbEtpZz1GYWxz ZQ0KICAgIGVsaWYgX29wdCBpbiAoIi1vIiwgIi0tb3V0cHV0Iik6DQogICAgICBfb3V0ZmlsZW5h bWU9X2FyZw0KICAgICAgX29mPVRydWUNCiAgICAgIF9jYWxsS2lnPUZhbHNlICAgIyBpZiB0aGVy ZSdzIGFuIG91dHB1dCBmaWxlLCBkb24ndCBjYWxsIEtpZw0KICBpZiBsZW4oX2FyZ3MpPT0wOg0K ICAgIF9pbmZpbGVuYW1lPXJhd19pbnB1dCgiSW5wdXQgZmlsZSBuYW1lOiAiKQ0KICAgIGlmIG5v dCBfaW5maWxlbmFtZToNCiAgICAgIHByaW50ICJObyBpbnB1dCBmaWxlIG5hbWUuIg0KICAgICAg dXNhZ2UoMikNCiAgZWxpZiBsZW4oX2FyZ3MpPT0xOg0KICAgIF9pbmZpbGVuYW1lPV9hcmdzWzBd DQogIGVsc2U6DQogICAgcHJpbnQgIk5vIGlucHV0IGZpbGUgbmFtZS4iDQogICAgdXNhZ2UoMikN CiAgdHJ5Og0KICAgIF9pbmZpbGUgPSBvcGVuKF9pbmZpbGVuYW1lLCAncicpDQogIGV4Y2VwdDoN CiAgICBwcmludCA+PiBzeXMuc3RkZXJyLCBfaW5maWxlbmFtZSwgImlucHV0IGZpbGUgY2FuJ3Qg YmUgcmVhZC4iDQogICAgc3lzLmV4aXQoMikNCiAgaWYgX29mOg0KICAgIGlmIF9vdXRmaWxlbmFt ZT09Ii0iOg0KICAgICAgX24sIF9lID0gb3MucGF0aC5zcGxpdGV4dChfaW5maWxlbmFtZSkNCiAg ICAgIF9vdXRmaWxlbmFtZT1fbisnLmtpZycNCiAgZWxzZToNCiAgICBfb3V0ZmlsZW5hbWU9Ii90 bXAvcHlraWciICsgc3RyKG9zLmdldHBpZCgpKSArICIua2lnIg0KICBnbG9iYWwga2lnZG9jdW1l bnQNCiAga2lnZG9jdW1lbnQ9S2lnRG9jdW1lbnQoX291dGZpbGVuYW1lLCBfY2FsbEtpZywgX29m KQ0KICBrZD1raWdkb2N1bWVudA0KICB0cnk6DQogICAgZXhlY2ZpbGUoX2luZmlsZW5hbWUsIGds b2JhbHMoKSkNCiAgZXhjZXB0Og0KICAgIHByaW50ID4+IHN5cy5zdGRlcnIsICdTeW50YXggZXJy b3IgaW4nLCBfaW5maWxlbmFtZQ0KICAgIF9pbmZvID0gc3lzLmV4Y19pbmZvKCkgICAgIyBwcmlu dCBvdXQgdGhlIHRyYWNlYmFjaw0KICAgIHRyYWNlYmFjay5wcmludF9leGMoKQ0KICAgIHN5cy5l eGl0KDMpDQogIGtpZ2RvY3VtZW50LmNsb3NlKCkNCg0KICBpZiBfaW5maWxlICE9IHN5cy5zdGRp bjoNCiAgICBfaW5maWxlLmNsb3NlKCkNCg0KZGVmIGxpYigpOg0KICBfb3V0ZmlsZW5hbWU9Ii90 bXAvcHlraWciICsgc3RyKG9zLmdldHBpZCgpKSArICIua2lnIg0KICBnbG9iYWwga2lnZG9jdW1l bnQNCiAga2lnZG9jdW1lbnQ9S2lnRG9jdW1lbnQoX291dGZpbGVuYW1lKQ0KICBrZD1raWdkb2N1 bWVudA0KICBhdGV4aXQucmVnaXN0ZXIoa2lnZG9jdW1lbnQuY2xvc2UpDQoNCmlmIF9fbmFtZV9f ID09ICJfX21haW5fXyI6DQogIHByb2coKQ0KZWxzZToNCiAgbGliKCkNCg== --f46d043c7bf4165f7f04b3f2d02d Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ kde-edu mailing list kde-edu@mail.kde.org https://mail.kde.org/mailman/listinfo/kde-edu --f46d043c7bf4165f7f04b3f2d02d--