From: "Yugui (Yuki Sonoda)" Date: 2008-12-29T13:51:41+09:00 Subject: [ruby-dev:37642] Re: M17N of erb(1) Was: Re: Current status of 1.9.1 RC1's issues This is a multi-part message in MIME format. --------------080208020709030902050207 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit On 12/28/08 10:08 PM, Masatoshi SEKI wrote: > それともERBも考慮するのでしたっけ? ERBもmagic commentを考慮します。ERB.newを呼び出した場合はmagic commentと 渡された文字列のエンコーディングの衝突が考えられますが、これはevalの仕様 に倣ってmagic comment優先としました。 > > ライブラリ作者としては、ERB.new.runよりもERB.new.resultを、 > そしてERB.new.resultよりもメソッド化を、使ってほしい(そう > いう風に誘導したい)と願っているのですが、 > メソッド化するときのscript encodingってどうなるんだろうとか、 > 私がよく理解できていないので躊躇してます。 メソッド化した場合は、他のファイルでメソッドを追加した場合に倣って、erb テンプレートのscript encodingを使うと良いと思います。 > 現在のdef_methodはこんな風になってますが > 今回の修正後もそれらしく動くでしょうか。 メソッド化(とモジュール化、クラス化)を考えていなかったので、その点を修正 して添付のパッチのようになりました。 -- Yugui http://yugui.jp 私は私をDumpする --------------080208020709030902050207 Content-Type: text/plain; x-mac-type="0"; x-mac-creator="0"; name="erb-m17n2.diff" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="erb-m17n2.diff" ZGlmZiAtLWdpdCBhL2Jpbi9lcmIgYi9iaW4vZXJiCmluZGV4IDg1NDE0MzcuLjcyNDE4Mzgg MTAwNzU1Ci0tLSBhL2Jpbi9lcmIKKysrIGIvYmluL2VyYgpAQCAtMTIsOSArMTIsMTcgQEAg Y2xhc3MgRVJCCiAgICAgICBhcmcgPSBzZWxmLnNoaWZ0CiAgICAgICByZXR1cm4gbmlsIGlm IGFyZyA9PSAnLS0nCiAgICAgICBpZiBhcmcgPX4gL14tKC4pKC4qKS8KLSAgICAgICAgcmV0 dXJuIGFyZyBpZiAkMSA9PSAnLScKLSAgICAgICAgcmFpc2UgJ3Vua25vd24gc3dpdGNoICIt IicgaWYgJDIuaW5kZXgoJy0nKQotICAgICAgICBzZWxmLnVuc2hpZnQgIi0jeyQyfSIgaWYg JDIuc2l6ZSA+IDAKKyAgICAgICAgaWYgJDEgPT0gJy0nCisgICAgICAgICAgYXJnLCBAbWF5 YmVfYXJnID0gYXJnLnNwbGl0KC89LywgMikKKyAgICAgICAgICByZXR1cm4gYXJnIAorICAg ICAgICBlbmQKKyAgICAgICAgcmFpc2UgJ3Vua25vd24gc3dpdGNoICItIicgaWYgJDIuaW5k ZXgoJy0nKSBhbmQgJDEgIT0gJ1QnCisgICAgICAgIGlmICQyLnNpemUgPiAwCisgICAgICAg ICAgc2VsZi51bnNoaWZ0ICItI3skMn0iIAorICAgICAgICAgIEBtYXliZV9hcmcgPSAkMgor ICAgICAgICBlbHNlCisgICAgICAgICAgQG1heWJlX2FyZyA9IG5pbAorICAgICAgICBlbmQK ICAgICAgICAgIi0jeyQxfSIKICAgICAgIGVsc2UKICAgICAgICAgc2VsZi51bnNoaWZ0IGFy ZwpAQCAtMjMsNyArMzEsOSBAQCBjbGFzcyBFUkIKICAgICBlbmQKICAgICAKICAgICBkZWYg QVJHVi5yZXFfYXJnCi0gICAgICBzZWxmLnNoaWZ0IHx8IHJhaXNlKCdtaXNzaW5nIGFyZ3Vt ZW50JykKKyAgICAgIChAbWF5YmVfYXJnIHx8IHNlbGYuc2hpZnQgfHwgcmFpc2UoJ21pc3Np bmcgYXJndW1lbnQnKSkudGFwIHsKKyAgICAgICAgQG1heWJlX2FyZyA9IG5pbAorICAgICAg fQogICAgIGVuZAogCiAgICAgZGVmIHRyaW1fbW9kZV9vcHQodHJpbV9tb2RlLCBkaXNhYmxl X3BlcmNlbnQpCkBAIC03Miw2ICs4MiwxMSBAQCBjbGFzcyBFUkIKICAgICAgICAgICAgIGVu ZAogICAgICAgICAgICAgcmFpc2UgImludmFsaWQgdHJpbSBtb2RlICN7YXJnLmR1bXB9IiB1 bmxlc3MgYXJnID1+IC9eWzAtMl0kLwogICAgICAgICAgICAgdHJpbV9tb2RlID0gYXJnLnRv X2kKKyAgICAgICAgICB3aGVuICctRScsICctLWVuY29kaW5nJworICAgICAgICAgICAgYXJn ID0gQVJHVi5yZXFfYXJnCisgICAgICAgICAgICBzZXRfZW5jb2RpbmcoKmFyZy5zcGxpdCgv Oi8sIDIpKQorICAgICAgICAgIHdoZW4gJy1VJworICAgICAgICAgICAgc2V0X2VuY29kaW5n KEVuY29kaW5nOjpVVEZfOCwgRW5jb2Rpbmc6OlVURl84KQogICAgICAgICAgIHdoZW4gJy1Q JwogICAgICAgICAgICAgZGlzYWJsZV9wZXJjZW50ID0gdHJ1ZQogICAgICAgICAgIHdoZW4g Jy0taGVscCcKQEAgLTg5LDE0ICsxMDQsMTcgQEAgY2xhc3MgRVJCCiAgIC1uICAgICAgICAg ICAgICAgcHJpbnQgcnVieSBzY3JpcHQgd2l0aCBsaW5lIG51bWJlcgogICAtdiAgICAgICAg ICAgICAgIGVuYWJsZSB2ZXJib3NlIG1vZGUKICAgLWQgICAgICAgICAgICAgICBzZXQgJERF QlVHIHRvIHRydWUKLSAgLXIgW2xpYnJhcnldICAgICBsb2FkIGEgbGlicmFyeQotICAtUyBb c2FmZV9sZXZlbF0gIHNldCAkU0FGRSAoMC4uNCkKLSAgLVQgW3RyaW1fbW9kZV0gICBzcGVj aWZ5IHRyaW1fbW9kZSAoMC4uMiwgLSkKKyAgLXIgbGlicmFyeSAgICAgICBsb2FkIGEgbGli cmFyeQorICAtUyBzYWZlX2xldmVsICAgIHNldCAkU0FGRSAoMC4uNCkKKyAgLUUgZXhbOmlu XSAgICAgICBzZXQgZGVmYXVsdCBleHRlcm5hbC9pbnRlcm5hbCBlbmNvZGluZ3MKKyAgLVUg ICAgICAgICAgICAgICBzZXQgZGVmYXVsdCBlbmNvZGluZyB0byBVVEYtOC4KKyAgLVQgdHJp bV9tb2RlICAgICBzcGVjaWZ5IHRyaW1fbW9kZSAoMC4uMiwgLSkKICAgLVAgICAgICAgICAg ICAgICBpZ25vcmUgbGluZXMgd2hpY2ggc3RhcnQgd2l0aCAiJSIKIEVPVQogICAgICAgICBl eGl0IDEKICAgICAgIGVuZAogCisgICAgICAkPC5zZXRfZW5jb2RpbmcoRW5jb2Rpbmc6OkFT Q0lJXzhCSVQsIG5pbCkKICAgICAgIHNyYyA9ICQ8LnJlYWQKICAgICAgIGZpbGVuYW1lID0g JEZJTEVOQU1FCiAgICAgICBleGl0IDIgdW5sZXNzIHNyYwpAQCAtMTA1LDEwICsxMjMsOCBA QCBFT1UKICAgICAgIGVyYi5maWxlbmFtZSA9IGZpbGVuYW1lCiAgICAgICBpZiBvdXRwdXQK ICAgICAgICAgaWYgbnVtYmVyCi0gICAgICAgICAgbCA9IDEKLSAgICAgICAgICBmb3IgbGlu ZSBpbiBlcmIuc3JjCi0gICAgICAgICAgICBwdXRzICIlM2QgJXMiJVtsLCBsaW5lXQotICAg ICAgICAgICAgbCArPSAxCisgICAgICAgICAgZXJiLnNyYy5lYWNoX2xpbmUud2l0aF9pbmRl eCBkbyB8bGluZSwgbHwKKyAgICAgICAgICAgIHB1dHMgIiUzZCAlcyIlW2wrMSwgbGluZV0K ICAgICAgICAgICBlbmQKICAgICAgICAgZWxzZQogICAgICAgICAgIHB1dHMgZXJiLnNyYwpA QCAtMTE4LDYgKzEzNCwxOSBAQCBFT1UKICAgICAgIGVuZAogICAgIGVuZAogICAgIG1vZHVs ZV9mdW5jdGlvbiA6cnVuCisKKyAgICBkZWYgc2V0X2VuY29kaW5nKGV4dGVybiwgaW50ZXJu ID0gbmlsKQorICAgICAgdmVyYm9zZSwgJFZFUkJPU0UgPSAkVkVSQk9TRSwgbmlsCisgICAg ICBFbmNvZGluZy5kZWZhdWx0X2V4dGVybmFsID0gZXh0ZXJuIHVubGVzcyBleHRlcm4ubmls PyB8fCBleHRlcm4uZW1wdHk/CisgICAgICBFbmNvZGluZy5kZWZhdWx0X2ludGVybmFsID0g aW50ZXJuIHVubGVzcyBpbnRlcm4ubmlsPyB8fCBpbnRlcm4uZW1wdHk/CisgICAgICBbJHN0 ZGluLCAkc3Rkb3V0LCAkc3RkZXJyXS5lYWNoIGRvIHxpb3wKKyAgICAgICAgaW8uc2V0X2Vu Y29kaW5nKGV4dGVybiwgaW50ZXJuKQorICAgICAgZW5kCisgICAgZW5zdXJlCisgICAgICAk VkVSQk9TRSA9IHZlcmJvc2UKKyAgICBlbmQKKyAgICBtb2R1bGVfZnVuY3Rpb24gOnNldF9l bmNvZGluZworICAgIGNsYXNzIDw8IHNlbGY7IHByaXZhdGUgOnNldF9lbmNvZGluZzsgZW5k CiAgIGVuZAogZW5kCiAKZGlmZiAtLWdpdCBhL2xpYi9lcmIucmIgYi9saWIvZXJiLnJiCmlu ZGV4IGM4Nzk5NDEuLjU3NTVjZDIgMTAwNjQ0Ci0tLSBhL2xpYi9lcmIucmIKKysrIGIvbGli L2VyYi5yYgpAQCAtNTgsNiArNTgsMjQgQEAKICMKICMgU2VlIHRoZSBFUkIubmV3IGFuZCBF UkIjcmVzdWx0IG1ldGhvZHMgZm9yIG1vcmUgZGV0YWlsLgogIworIyA9PSBDaGFyYWN0ZXIg ZW5jb2RpbmdzCisjCisjIEVSQiAob3IgcnVieSBjb2RlIGdlbmVyYXRlZCBieSBFUkIpIHJl dHVybnMgYSBzdHJpbmcgaW4gdGhlIHNhbWUKKyMgY2hhcmFjdGVyIGVuY29kaW5nIGFzIHRo ZSBpbnB1dCBzdHJpbmcuICBXaGVuIHRoZSBpbnB1dCBzdHJpbmcgaGFzCisjIGEgbWFnaWMg Y29tbWVudCwgaG93ZXZlciwgaXQgcmV0dXJucyBhIHN0cmluZyBpbiB0aGUgZW5jb2Rpbmcg c3BlY2lmaWVkCisjIGJ5IHRoZSBtYWdpYyBjb21tZW50LgorIworIyAgICMgLSotIGNvZGlu ZzogVVRGLTggLSotCisjICAgcmVxdWlyZSAnZXJiJworIworIyAgIHRlbXBsYXRlID0gRVJC Lm5ldyA8PEVPRgorIyAgIDwlIy0qLSBjb2Rpbmc6IEJpZzUgLSotJT4KKyMgICAgIFxfXF9F TkNPRElOR1xfXF8gaXMgPCU9IFxfXF9FTkNPRElOR1xfXF8gJT4uCisjICAgRU9GCisjICAg cHV0cyB0ZW1wbGF0ZS5yZXN1bHQKKyMKKyMgPGVtPlByaW50czo8L2VtPiBcX1xfRU5DT0RJ TkdcX1xfIGlzIEJpZzUuCisjCiAjCiAjID09IEV4YW1wbGVzCiAjCkBAIC01MTcsMTAgKzUz NSwxNCBAQCBjbGFzcyBFUkIKICAgICBlbmQKIAogICAgIGRlZiBjb21waWxlKHMpCi0gICAg ICBvdXQgPSBCdWZmZXIubmV3KHNlbGYsIHMuZW5jb2RpbmcpCisgICAgICBlbmMgPSBzLmVu Y29kaW5nCisgICAgICByYWlzZSBBcmd1bWVudEVycm9yLCAiI3tlbmN9IGlzIG5vdCBBU0NJ SSBjb21wYXRpYmxlIiBpZiBlbmMuZHVtbXk/CisgICAgICBzID0gcy5kdXAuZm9yY2VfZW5j b2RpbmcoIkFTQ0lJLThCSVQiKSAjIGRvbid0IHVzZSBjb25zdGFudCBFbm9kaW5nOjpBU0NJ SV84QklUIGZvciBtaW5pcnVieQorICAgICAgZW5jID0gZGV0ZWN0X21hZ2ljX2NvbW1lbnQo cykgfHwgZW5jCisgICAgICBvdXQgPSBCdWZmZXIubmV3KHNlbGYsIGVuYykKIAogICAgICAg Y29udGVudCA9ICcnCi0gICAgICBzY2FubmVyID0gbWFrZV9zY2FubmVyKHMuZHVwLmZvcmNl X2VuY29kaW5nKCJBU0NJSS04QklUIikpCisgICAgICBzY2FubmVyID0gbWFrZV9zY2FubmVy KHMpIAogICAgICAgc2Nhbm5lci5zY2FuIGRvIHx0b2tlbnwKIAlpZiBzY2FubmVyLnN0YWcu bmlsPwogCSAgY2FzZSB0b2tlbgpAQCAtNTYwLDYgKzU4Miw3IEBAIGNsYXNzIEVSQgogCSAg ICB3aGVuICc8JT0nCiAJICAgICAgb3V0LnB1c2goIiN7QGluc2VydF9jbWR9KCgje2NvbnRl bnR9KS50b19zKSIpCiAJICAgIHdoZW4gJzwlIycKKwkgICAgICAjIGNvbnRlbnQgPSBjb250 ZW50LmZvcmNlX2VuY29kaW5nKEBlbmMpCiAJICAgICAgIyBvdXQucHVzaCgiIyAje2NvbnRl bnQuZHVtcH0iKQogCSAgICBlbmQKIAkgICAgc2Nhbm5lci5zdGFnID0gbmlsCkBAIC01NzMs NyArNTk2LDcgQEAgY2xhc3MgRVJCCiAgICAgICBlbmQKICAgICAgIG91dC5wdXNoKCIje0Bw dXRfY21kfSAje2NvbnRlbnQuZHVtcH0iKSBpZiBjb250ZW50LnNpemUgPiAwCiAgICAgICBv dXQuY2xvc2UKLSAgICAgIG91dC5zY3JpcHQKKyAgICAgIHJldHVybiBvdXQuc2NyaXB0LCBl bmMKICAgICBlbmQKIAogICAgIGRlZiBwcmVwYXJlX3RyaW1fbW9kZShtb2RlKQpAQCAtNjEz LDYgKzYzNiwxOCBAQCBjbGFzcyBFUkIKICAgICBlbmQKICAgICBhdHRyX3JlYWRlciA6cGVy Y2VudCwgOnRyaW1fbW9kZQogICAgIGF0dHJfYWNjZXNzb3IgOnB1dF9jbWQsIDppbnNlcnRf Y21kLCA6cHJlX2NtZCwgOnBvc3RfY21kCisKKyAgICBwcml2YXRlCisgICAgZGVmIGRldGVj dF9tYWdpY19jb21tZW50KHMpCisgICAgICBpZiAvXEE8JSMoLiopJT4vID1+IHMgb3IgKEBw ZXJjZW50IGFuZCAvXEElIyguKikvID1+IHMpCisJY29tbWVudCA9ICQxCisJY29tbWVudCA9 ICQxIGlmIGNvbW1lbnRbLy1cKi1ccyooLio/KVxzKi0qLSQvXQorCWlmICVyImNvZGluZ1xz Kls9Ol1ccyooW1s6YWxudW06XVwtX10rKSIgPX4gY29tbWVudAorCSAgZW5jID0gJDEuc3Vi KC8tKD86bWFjfGRvc3x1bml4KS9pLCAnJykKKwkgIGVuYyA9IEVuY29kaW5nLmZpbmQoZW5j KQorCWVuZAorICAgICAgZW5kCisgICAgZW5kCiAgIGVuZAogZW5kCiAKQEAgLTY4OCw3ICs3 MjMsNyBAQCBjbGFzcyBFUkIKICAgICBAc2FmZV9sZXZlbCA9IHNhZmVfbGV2ZWwKICAgICBj b21waWxlciA9IEVSQjo6Q29tcGlsZXIubmV3KHRyaW1fbW9kZSkKICAgICBzZXRfZW91dHZh cihjb21waWxlciwgZW91dHZhcikKLSAgICBAc3JjID0gY29tcGlsZXIuY29tcGlsZShzdHIp CisgICAgQHNyYywgQGVuYyA9ICpjb21waWxlci5jb21waWxlKHN0cikKICAgICBAZmlsZW5h bWUgPSBuaWwKICAgZW5kCiAKQEAgLTcxNCw3ICs3NDksNyBAQCBjbGFzcyBFUkIKICAgICBj b21waWxlci5wcmVfY21kID0gY21kCiAKICAgICBjbWQgPSBbXQotICAgIGNtZC5wdXNoKGVv dXR2YXIpCisgICAgY21kLnB1c2goIiN7ZW91dHZhcn0uZm9yY2VfZW5jb2RpbmcoX19FTkNP RElOR19fKSIpCiAKICAgICBjb21waWxlci5wb3N0X2NtZCA9IGNtZAogICBlbmQKQEAgLTc0 NSw3ICs3ODAsMTEgQEAgY2xhc3MgRVJCCiAgIGVuZAogCiAgIGRlZiBkZWZfbWV0aG9kKG1v ZCwgbWV0aG9kbmFtZSwgZm5hbWU9JyhFUkIpJykgICMgOm5vZG9jOgotICAgIG1vZC5tb2R1 bGVfZXZhbCgiZGVmICN7bWV0aG9kbmFtZX1cbiIgKyBzZWxmLnNyYyArICJcbmVuZFxuIiwg Zm5hbWUsIC0xKQorICAgIHNyYyA9IHNlbGYuc3JjCisgICAgbWFnaWNfY29tbWVudCA9ICIj Y29kaW5nOiN7QGVuY31cbiIKKyAgICBtb2QubW9kdWxlX2V2YWwgZG8KKyAgICAgIGV2YWwo bWFnaWNfY29tbWVudCArICJkZWYgI3ttZXRob2RuYW1lfVxuIiArIHNyYyArICJcbmVuZFxu IiwgYmluZGluZywgZm5hbWUsIC0xKQorICAgIGVuZAogICBlbmQKIAogICBkZWYgZGVmX21v ZHVsZShtZXRob2RuYW1lPSdlcmInKSAgIyA6bm9kb2M6CmRpZmYgLS1naXQgYS9tYW4vZXJi LjEgYi9tYW4vZXJiLjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDFl ZmYzMAotLS0gL2Rldi9udWxsCisrKyBiL21hbi9lcmIuMQpAQCAtMCwwICsxLDE1NiBAQAor LlwiUnVieSBpcyBjb3B5cmlnaHRlZCBieSBZdWtpaGlybyBNYXRzdW1vdG8gPG1hdHpAbmV0 bGFiLmpwPi4KKy5EZCBEZWNlbWJlciAyNywgMjAwOAorLkR0IEVSQigxKSAiIiAiUnVieSBQ cm9ncmFtbWVycyBSZWZlcmVuY2UgR3VpZGUiCisuT3MgVU5JWAorLlNoIE5BTUUKKy5ObSBl cmIKKy5OZCBSdWJ5IFRlbXBsYXRpbmcKKy5TaCBTWU5PUFNJUworLk5tCisuT3AgRmwgLXZl cnNpb24KKy5PcCBGbCBVUGRudngKKy5PcCBGbCBFIEFyIGV4dCBOcyBPcCBOcyA6IE5zIGlu dAorLk9wIEZsIFMgQXIgbGV2ZWwKKy5PcCBGbCBUIEFyIG1vZGUKKy5PcCBGbCByIEFyIGxp YnJhcnkKKy5PcCBGbCAtCisuT3AgZmlsZSAuLi4KKy5QcAorLlNoIERFU0NSSVBUSU9OCisu Tm0KK2lzIGEgY29tbWFuZCBsaW5lIGZyb250LWVuZCBmb3IgCisuTGkgIkVSQiIKK2xpYnJh cnksIHdoaWNoIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIGVSdWJ5LgorCitlUnVieSBwcm92 ZGVzIGFuIGVhc3kgdG8gdXNlIGJ1dCBwb3dlcmZ1bCB0ZW1wbGF0aW5nIHN5c3RlbSBmb3Ig UnVieS4gCitVc2luZyBlUnVieSwgYWN0dWFsIFJ1YnkgY29kZSBjYW4gYmUgYWRkZWQgdG8g YW55IHBsYWluIHRleHQgZG9jdW1lbnQgZm9yIHRoZQorcHVycG9zZXMgb2YgZ2VuZXJhdGlu ZyBkb2N1bWVudCBpbmZvcm1hdGlvbiBkZXRhaWxzIGFuZC9vciBmbG93IGNvbnRyb2wuCisK Ky5ObQoraXMgYSBwYXJ0IG9mCisuTm0gUnVieSAuCisuUHAKKy5TaCBPUFRJT05TCisuQmwg LXRhZyAtd2lkdGggIjEyMzQ1Njc4OTAxMjMiIC1jb21wYWN0CisuUHAKKy5JdCBGbCAtdmVy c2lvbgorUHJpbnRzIHRoZSB2ZXJzaW9uIG9mIAorLk5tIC4KKy5QcAorLkl0IEZsIEUgQXIg ZXh0ZXJuYWwgTnMgT3AgOiBOcyBBciBpbnRlcm5hbAorLkl0IEZsIC1lbmNvZGluZyBBciBl eHRlcm5hbCBOcyBPcCA6IE5zIEFyIGludGVybmFsCitTcGVjaWZpZXMgdGhlIGRlZmF1bHQg dmFsdWUocykgZm9yIGV4dGVybmFsIGVuY29kaW5ncyBhbmQgaW50ZXJuYWwgZW5jb2Rpbmcu IFZhbHVlcyBzaG91bGQgYmUgc2VwYXJhdGVkIHdpdGggY29sb24gKDopLgorCitZb3UgY2Fu IG9tbWl0IHRoZSBvbmUgZm9yIGludGVybmFsIGVuY29kaW5ncywgdGhlbiB0aGUgdmFsdWUK Ky5QZiAoIExpICJFbmNvZGluZy5kZWZhdWx0X2ludGVybmFsIiApIHdpbGwgYmUgbmlsLgor LlBwCisuSXQgRmwgUAorRXZhbHVhdGVzIGxpbmVzIHN0YXJ0aW5nIHdpdGggCisuTGkgIiUi CithcyBSdWJ5IGNvZGUgYW5kIHJlbW92ZXMgdGhlIHRhaWxpbmcgRU9Mcy4KKy5QcAorLkl0 IEZsIFMgQXIgbGV2ZWwKK1NwZWNpZmllcyB0aGUgc2FmZSBsZXZlbCBpbiB3aGljaCBlUnVi eSBzY3JpcHQgd2lsbCBydW4uCisuUHAKKy5JdCBGbCBUIEFyIG1vZGUKK1NwZWNpZmllcyB0 cmltIG1vZGUgKGRlZmF1bHQgMCkuIAorLkFyIG1vZGUKK2NhbiBiZSBvbmUgb2YKKy5CbCAt aGFuZyAtb2Zmc2V0IGluZGVudAorLkl0IFN5IDAKK0VPTCByZW1haW5zIGFmdGVyIHRoZSBl bWJlZGRlZCBydWJ5IHNjcmlwdCBpcyBldmFsdWF0ZWQuCisuUHAKKy5JdCBTeSAxCitFT0wg aXMgcmVtb3ZlZCBpZiB0aGUgbGluZSBlbmRzIHdpdGgKKy5MaSAiJT4iIC4KKy5QcAorLkl0 IFN5IDIKK0VPTCBpcyByZW1vdmVkIGlmIHRoZSBsaW5lIHN0YXJ0cyB3aXRoCisuTGkgIjwl IgorYW5kIGVuZHMgd2l0aAorLkxpICIlPiIgLgorLlBwCisuSXQgU3kgLQorRU9MIGlzIHJl bW92ZWQgaWYgdGhlIGxpbmUgZW5kcyB3aXRoCisuTGkgIi0lPiIgLgorQW5kIGxlYWRpbmcg d2hpdGVzcGFjZXMgYXJlIHJlbW92ZWQgaWYgdGhlIGVyYiBkaXJlY3RpdmUgc3RhcnRzIHdp dGgKKy5MaSAiPCUtIiAuCisuUHAKKy5FbAorLlBwCisuSXQgRmwgVQorY2FuIGJlIG9uZSBv ZgorU2V0cyB0aGUgZGVmYWx1dCB2YWx1ZSBmb3IgaW50ZXJuYWwgZW5jb2RpbmdzCisuUGYg KCBMaSAiRW5jb2RpbmcuZGVmYXVsdF9pbnRlcm5hbCIgKSB0byBVVEYtOC4KKy5QcAorLkl0 IEZsIGQKKy5JdCBGbCAtZGVidWcKK1R1cm5zIG9uIGRlYnVnIG1vZGUuCisuTGkgIiRERUJV RyIKK3dpbGwgYmUgc2V0IHRvIHRydWUuCisuUHAKKy5JdCBGbCBoCisuSXQgRmwgLWhlbHAK K1ByaW50cyBhIHN1bW1yeSBvZiB0aGUgb3B0aW9ucy4KKy5QcAorLkl0IEZsIG4KK0NvbnZl cnRzIHRoZSBlUnVieSBzY3JpcHQgaW50byBhIFJ1Ynkgc2NyaXB0IGFuZCBwcmludHMgaXQg d2l0aCBsaW5lIG51bWJlcnMuCisuUHAKKy5JdCBGbCB2CitFbmFibGVzIHZlcmJvc2UgbW9k ZS4gIAorLkxpICIkVkVSQk9TRSIKK3dpbGwgYmUgc2V0IHRvIHRydWUuCisuUHAKKy5JdCBG bCB4CitDb252ZXJ0cyB0aGUgZVJ1Ynkgc2NyaXB0IGludG8gUnVieSBzY3JpcHQgYW5kIHBy aW50cyBpdCB3aXRob3V0IGxpbmUgbnVtYmVycy4KKy5QcAorLkVsCisuUHAKKy5TaCBFWEFN UExFUworSGVyZSBpcyBhbiBlUnVieSBzY3JpcHQKKy5CZCAtbGl0ZXJhbCAtb2Zmc2V0IGlu ZGVudAorPD94bWwgdmVyc2lvbj0iMS4wIiA/PgorPCUgcmVxdWlyZSAncHJpbWUnIC0lPgor PGVyYi1leGFtcGxlPgorICA8Y2FsYz48JT0gMSsxICU+PC9jYWxjPgorICA8dmFyPjwlPSBf X0ZJTEVfXyAlPjwvdmFyPgorICA8bGlicmFyeT48JT0gUHJpbWUuZWFjaCgxMCkudG9fYS5q b2luKCIsICIpICU+PC9saWJyYXJ5PgorPC9lcmItZXhhbXBsZT4KKy5FZAorCitDb21tYW5k CisuRGwgIiUgZXJiIC1UIC0gZXhhbXBsZS5lcmIiCitwcmludHMKKy5CZCAtbGl0ZXJhbCAt b2Zmc2V0IGluZGVudAorPD94bWwgdmVyc2lvbj0iMS4wIiA/PgorPGVyYi1leGFtcGxlPgor ICA8Y2FsYz4yPC9jYWxjPgorICA8dmFyPmV4YW1wbGUuZXJiPC92YXI+CisgIDxsaWJyYXJ5 PjIsIDMsIDUsIDc8L2xpYnJhcnk+Cis8L2VyYi1leGFtcGxlPgorLkVkCisuUHAKKy5TaCBT RUUgQUxTTworLlhyIHJ1YnkgMSAuCisKK0FuZCBzZWUgCisuWHIgcmkgMQorZG9jdW1lbnRh dGlvbiBmb3IgCisuTGkgIkVSQiIKK2NsYXNzLgorLkVsCisuUHAKKy5TaCBSRVBPUlRJTkcg QlVHUworLkJsIC1idWxsZXQKKy5MaSBTZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMgc2hvdWxk IGJlIHJlcG9ydGVkIHZpYSBhbiBlbWFpbCB0byAKKy5BcSBzZWN1cml0eUBydWJ5LWxhbmcu b3JnIE5zCisuTGkgLgorUmVwb3J0ZWQgcHJvYmxlbXMgd2lsbCBiZSBwdWJsaXNoZWQgYWZ0 ZXIgZml4ZWQuCisuUHAKKy5MaSBBbmQgeW91IGNhbiByZXBvcnQgb3RoZXIgYnVncyBhbmQg ZmVhdHVyZSByZXF1ZXN0cyB2aWEgdGhlCitSdWJ5IElzc3VlIFRyYWNraW5nIFN5c3RlbSAo aHR0cDovL3JlZG1pbmUucnVieS1sYW5nLm9yZykuCitEbyBub3QgcmVwb3J0IHNlY3VyaXR5 IHZ1bG5lcmFiaWxpdGllcwordmlhIHRoZSBzeXN0ZW0gYmVjYXVzZSBpdCBwdWJsaXNoZXMg dGhlIHZ1bG5lcmFiaWxpdGllcyBpbW1lZGF0ZWx5LgorLkVsCisuU2ggQVVUSE9SUworV3Jp dHRlbiBieSBNYXNhdG9zaGkgU0VLSS4KZGlmZiAtLWdpdCBhL3Rlc3QvZXJiL3Rlc3RfZXJi X20xN24ucmIgYi90ZXN0L2VyYi90ZXN0X2VyYl9tMTduLnJiCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmZlYjIyMWYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2Vy Yi90ZXN0X2VyYl9tMTduLnJiCkBAIC0wLDAgKzEsMTE2IEBACisjIC0qLSBjb2Rpbmc6IFVU Ri04IC0qLQorcmVxdWlyZSAndGVzdC91bml0JworcmVxdWlyZSAnZXJiJworCitjbGFzcyBU ZXN0RVJCIDwgVGVzdDo6VW5pdDo6VGVzdENhc2UKKyAgZGVmIHRlc3RfcmVzdWx0X2VuY29k aW5nCisgICAgZXJiID0gRVJCLm5ldygiaGVsbG8iKQorICAgIGFzc2VydF9lcXVhbCBfX0VO Q09ESU5HX18sIGVyYi5yZXN1bHQuZW5jb2RpbmcKKworICAgIGVyYiA9IEVSQi5uZXcoIuOB k+OCk+OBq+OBoeOBryIuZW5jb2RlKCJFVUMtSlAiKSkKKyAgICBhc3NlcnRfZXF1YWwgRW5j b2Rpbmc6OkVVQ19KUCwgZXJiLnJlc3VsdC5lbmNvZGluZworCisgICAgZXJiID0gRVJCLm5l dygiXHhDNFx4RTNceEJBXHhDMyIuZm9yY2VfZW5jb2RpbmcoIkVVQy1DTiIpKQorICAgIGFz c2VydF9lcXVhbCBFbmNvZGluZzo6RVVDX0NOLCBlcmIucmVzdWx0LmVuY29kaW5nCisKKyAg ICBlcmIgPSBFUkIubmV3KCLOs861zrnOsSDPg86xz4IiLmVuY29kZSgiSVNPLTg4NTktNyIp KQorICAgIGFzc2VydF9lcXVhbCBFbmNvZGluZzo6SVNPXzg4NTlfNywgZXJiLnJlc3VsdC5l bmNvZGluZworCisgICAgYXNzZXJ0X3JhaXNlKEFyZ3VtZW50RXJyb3IsIC9BU0NJSSBjb21w YXRpYmxlLykgeyAKKyAgICAgIEVSQi5uZXcoIuOBk+OCk+OBq+OBoeOBryIuZm9yY2VfZW5j b2RpbmcoIklTTy0yMDIyLUpQIikpICMgZHVtbXkgZW5jb2RpbmcKKyAgICB9CisgIGVuZAor CisgIGRlZiB0ZXN0X2dlbmVyYXRlX21hZ2ljX2NvbW1lbnQKKyAgICBlcmIgPSBFUkIubmV3 KCJoZWxsbyIpCisgICAgYXNzZXJ0X21hdGNoIC8jY29kaW5nOlVURi04LywgZXJiLnNyYwor CisgICAgZXJiID0gRVJCLm5ldygiaGVsbG8iLmZvcmNlX2VuY29kaW5nKCJFVUMtSlAiKSkK KyAgICBhc3NlcnRfbWF0Y2ggLyNjb2Rpbmc6RVVDLUpQLywgZXJiLnNyYworCisgICAgZXJi ID0gRVJCLm5ldygiaGVsbG8iLmZvcmNlX2VuY29kaW5nKCJJU08tODg1OS05IikpCisgICAg YXNzZXJ0X21hdGNoIC8jY29kaW5nOklTTy04ODU5LTkvLCBlcmIuc3JjCisgIGVuZAorCisg IGRlZiB0ZXN0X2xpdGVyYWxfZW5jb2RpbmcKKyAgICBlcmIgPSBFUkIubmV3KCJsaXRlcmFs IGVuY29kaW5nIGlzIDwlPSAnaGVsbG8nLmVuY29kaW5nICAlPiIpCisgICAgYXNzZXJ0X21h dGNoIC9saXRlcmFsIGVuY29kaW5nIGlzIFVURi04LywgZXJiLnJlc3VsdAorCisgICAgZXJi ID0gRVJCLm5ldygibGl0ZXJhbCBlbmNvZGluZyBpcyA8JT0gJ+OBk+OCk+OBq+OBoeOBrycu ZW5jb2RpbmcgICU+Ii5lbmNvZGUoIkVVQy1KUCIpKQorICAgIGFzc2VydF9tYXRjaCAvbGl0 ZXJhbCBlbmNvZGluZyBpcyBFVUMtSlAvLCBlcmIucmVzdWx0CisKKyAgICBlcmIgPSBFUkIu bmV3KCJsaXRlcmFsIGVuY29kaW5nIGlzIDwlPSAnXHhDNFx4RTNceEJBXHhDMycuZW5jb2Rp bmcgJT4iLmZvcmNlX2VuY29kaW5nKCJFVUMtQ04iKSkKKyAgICBhc3NlcnRfbWF0Y2ggL2xp dGVyYWwgZW5jb2RpbmcgaXMgR0IyMzEyLywgZXJiLnJlc3VsdAorICBlbmQKKworICBkZWYg dGVzdF9fX0VOQ09ESU5HX18KKyAgICBlcmIgPSBFUkIubmV3KCJfX0VOQ09ESU5HX18gaXMg PCU9IF9fRU5DT0RJTkdfXyAlPiIpCisgICAgYXNzZXJ0X21hdGNoIC9fX0VOQ09ESU5HX18g aXMgVVRGLTgvLCBlcmIucmVzdWx0CisKKyAgICBlcmIgPSBFUkIubmV3KCJfX0VOQ09ESU5H X18gaXMgPCU9IF9fRU5DT0RJTkdfXyAlPiIuZm9yY2VfZW5jb2RpbmcoIkVVQy1KUCIpKQor ICAgIGFzc2VydF9tYXRjaCAvX19FTkNPRElOR19fIGlzIEVVQy1KUC8sIGVyYi5yZXN1bHQK KworICAgIGVyYiA9IEVSQi5uZXcoIl9fRU5DT0RJTkdfXyBpcyA8JT0gX19FTkNPRElOR19f ICU+Ii5mb3JjZV9lbmNvZGluZygiQmlnNSIpKQorICAgIGFzc2VydF9tYXRjaCAvX19FTkNP RElOR19fIGlzIEJpZzUvLCBlcmIucmVzdWx0CisgIGVuZAorCisgIGRlZiB0ZXN0X3JlY29n bml6ZV9tYWdpY19jb21tZW50CisgICAgZXJiID0gRVJCLm5ldyg8PC1FT1MuZW5jb2RlKCJF VUMtS1IiKSkKKzwlIyAtKi0gY29kaW5nOiBFVUMtS1IgLSotICU+CivslYjrhZXtlZjshLjs mpQKKyAgICBFT1MKKyAgICBhc3NlcnRfbWF0Y2ggLyNjb2Rpbmc6RVVDLUtSLywgZXJiLnNy YworICAgIGFzc2VydF9lcXVhbCBFbmNvZGluZzo6RVVDX0tSLCBlcmIucmVzdWx0LmVuY29k aW5nCisKKyAgICBlcmIgPSBFUkIubmV3KDw8LUVPUykKKzwlIy0qLSBjb2Rpbmc6IEVVQy1L UiAtKi0lPgor7JWI64WV7ZWY7IS47JqUCisgICAgRU9TCisgICAgYXNzZXJ0X21hdGNoIC8j Y29kaW5nOkVVQy1LUi8sIGVyYi5zcmMKKyAgICBhc3NlcnRfZXF1YWwgRW5jb2Rpbmc6OkVV Q19LUiwgZXJiLnJlc3VsdC5lbmNvZGluZworCisgICAgZXJiID0gRVJCLm5ldyg8PC1FT1Mp Cis8JSMgdmltOiBlbmNvZGluZz1FVUMtS1IgJT4KK+yViOuFle2VmOyEuOyalAorICAgIEVP UworICAgIGFzc2VydF9tYXRjaCAvI2NvZGluZzpFVUMtS1IvLCBlcmIuc3JjCisgICAgYXNz ZXJ0X2VxdWFsIEVuY29kaW5nOjpFVUNfS1IsIGVyYi5yZXN1bHQuZW5jb2RpbmcKKworICAg IGVyYiA9IEVSQi5uZXcoPDwtRU9TKQorPCUjY29kaW5nOkVVQy1LUiAlPgor7JWI64WV7ZWY 7IS47JqUCisgICAgRU9TCisgICAgYXNzZXJ0X21hdGNoIC8jY29kaW5nOkVVQy1LUi8sIGVy Yi5zcmMKKyAgICBhc3NlcnRfZXF1YWwgRW5jb2Rpbmc6OkVVQ19LUiwgZXJiLnJlc3VsdC5l bmNvZGluZworICBlbmQKKworICBtb2R1bGUgTTsgZW5kCisgIGRlZiB0ZXN0X21ldGhvZF93 aXRoX2VuY29kaW5nCisgICAgb2JqID0gT2JqZWN0Lm5ldworICAgIG9iai5leHRlbmQoTSkK KworICAgIGVyYiA9IEVSQi5uZXcoPDwtRU9TLmVuY29kZSgiRVVDLUpQIikpCis8JSNjb2Rp bmc6RVVDLUpQICU+CitsaXRlcmFsIGVuY29kaW5nIGlzIDwlPSAn44GT44KT44Gr44Gh44Gv Jy5lbmNvZGluZyAlPgorX19FTkNPRElOR19fIGlzIDwlPSBfX0VOQ09ESU5HX18gJT4KKyAg ICBFT1MKKyAgICBlcmIuZGVmX21ldGhvZChNLCA6bV9mcm9tX21hZ2ljX2NvbW1lbnQpCisK KyAgICByZXN1bHQgPSBvYmoubV9mcm9tX21hZ2ljX2NvbW1lbnQKKyAgICBhc3NlcnRfZXF1 YWwgRW5jb2Rpbmc6OkVVQ19KUCwgcmVzdWx0LmVuY29kaW5nCisgICAgYXNzZXJ0X21hdGNo IC9saXRlcmFsIGVuY29kaW5nIGlzIEVVQy1KUC8sIHJlc3VsdAorICAgIGFzc2VydF9tYXRj aCAvX19FTkNPRElOR19fIGlzIEVVQy1KUC8sIHJlc3VsdAorCisgICAgZXJiID0gRVJCLm5l dyg8PC1FT1MuZW5jb2RlKCJFVUMtS1IiKSkKK2xpdGVyYWwgZW5jb2RpbmcgaXMgPCU9ICfs lYjrhZXtlZjshLjsmpQnLmVuY29kaW5nICU+CitfX0VOQ09ESU5HX18gaXMgPCU9IF9fRU5D T0RJTkdfXyAlPgorRU9TCisgICAgZXJiLmRlZl9tZXRob2QoTSwgOm1fZnJvbV9ldmFsX2Vu Y29kaW5nKQorICAgIHJlc3VsdCA9IG9iai5tX2Zyb21fZXZhbF9lbmNvZGluZworICAgIGFz c2VydF9lcXVhbCBFbmNvZGluZzo6RVVDX0tSLCByZXN1bHQuZW5jb2RpbmcKKyAgICBhc3Nl cnRfbWF0Y2ggL2xpdGVyYWwgZW5jb2RpbmcgaXMgRVVDLUtSLywgcmVzdWx0CisgICAgYXNz ZXJ0X21hdGNoIC9fX0VOQ09ESU5HX18gaXMgRVVDLUtSLywgcmVzdWx0CisgIGVuZAorZW5k CisKKyMgdmltOmZpbGVlbmNvZGluZz1VVEYtOAo= --------------080208020709030902050207--