[Bioperl-l] Looking good - SYNOPSIS code

lp1@sanger.ac.uk lp1@sanger.ac.uk
Wed, 09 Jan 2002 21:46:38 +0000 (GMT)


This message is in MIME format.

---MOQ10106127986fb3d8315416e074b0f764306029fbe7
Content-Type: text/plain
Content-Transfer-Encoding: 8bit

Hi,

> (2) Documentation on modules: We want every synopsis to be
> cut-and-paste-able as much as possible. Does anyone want to try that
> out?
> Volunteers? (go on...)

Here is a script in attachment to test SYNOPSIS code. I don't have a proper 
bioperl + dependencies installation on my Linux box and since I just have 56k 
dialup for the moment...

Running it should be very simple:
1) get the Pdoc lib
cvs -d:pserver:anonymous@cvs.pdoc.sourceforge.net:/cvsroot/pdoc login 
<enter> as psswd 
cvs -z3 -d:pserver:anonymous@cvs.pdoc.sourceforge.net:/cvsroot/pdoc co pdoc-live
and install it.
2) testSyn.pl -source <path to bioperl-live> -target <target dir>
In <target dir>, the same bioperl dir tree will be generated except that 
all .pm files will be .pl containing the SYNOPSIS code. Each of them will be 
executed.
In <target dir>, a file named allSynopsis.out will contain all the SYNOPSIS 
content and a file named execSynopsis.out will contain execution outputs, 
except STDERR.
STDERR redirect (>&) is not possible for the moment since the module 
Bio::Tools::BPlite opens STDIN => when reaching that module, you need to Ctrl-D.

Modify runSynopsis() at will to get the info you want.

Hope it'll help.

Cheers,

Raphael

---MOQ10106127986fb3d8315416e074b0f764306029fbe7
Content-Type: application/octet-stream; name="testSyn.pl"; name="testSyn.pl"
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename="testSyn.pl"


IyEvdXNyL2xvY2FsL2Jpbi9wZXJsCgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgdGVzdFN5bi5wbCAtIGV4
dHJhY3RzIGNvZGUgZXhhbXBsZXMgZnJvbSBTWVNOT1BTSVMgYW5kIGV4ZXV0ZXMgaXQuCiMgCiMg
VXNlIC1oIGZvciBoZWxwLgojIFJlcXVpcmVzIHRoZSBQZG9jIGxpYjoKIyBjdnMgLWQ6cHNlcnZl
cjphbm9ueW1vdXNAY3ZzLnBkb2Muc291cmNlZm9yZ2UubmV0Oi9jdnNyb290L3Bkb2MgbG9naW4g
CiMgPGVudGVyPiBhcyBwc3N3ZCAKIyBjdnMgLXozIC1kOnBzZXJ2ZXI6YW5vbnltb3VzQGN2cy5w
ZG9jLnNvdXJjZWZvcmdlLm5ldDovY3Zzcm9vdC9wZG9jIGNvIHBkb2MtbGl2ZQojIGFuZCBpbnN0
YWxsIGl0LgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgp1c2Ugc3RyaWN0Owp1c2UgRmlsZUhhbmRsZTsKdXNl
IENhcnAgcXcoY2x1Y2sgY29uZmVzcyk7CgojIE5lZWQgYSBQZXJsIG1vZHVsZSBwYXJzZXIKdXNl
IFBkb2M6OlBhcnNlcnM6OkZpbGVzOjpQZXJsTW9kdWxlOwojIEEgVHJlZSBvYmplY3QKdXNlIFBk
b2M6OlRyZWU7CgojIERlZmluZSBkZWZhdWx0IGdsb2JhbCB2YXJpYWJsZXMgJiB2YWx1ZXMKdXNl
IHZhcnMgcXcoICRWRVJTSU9OICRSRUxFQVNFICRwc2VwICRfYXV0aG9yTmFtZSAkX2F1dGhvckVt
YWlsICk7CgojIEluaXQgZ2xvYmFscwokVkVSU0lPTiA9IGRvIHsgbXkgQHIgPSAocSRSZXZpc2lv
bjogMC4wLjEgJCA9fiAvXGQrL2cpOyBzcHJpbnRmICIlZC4iLiIlMDJkIiB4ICQjciwgQHIgfTsK
JFJFTEVBU0UgPSAnMS4wJzsKJF9hdXRob3JOYW1lID0gJ1JhcGhhZWwgTGVwbGFlJzsKJF9hdXRo
b3JFbWFpbCA9ICdscDFAc2FuZ2VyLmFjLnVrJzsKCiMgRG8gbm90IGJ1ZmZlcgokfCA9IDE7Cgoj
IEdsb2JhbCB2YXJpYWJsZXMKIyBTb3VyY2UgcGF0aCwgZGVmYXVsdCB0byBwd2QKbXkgJHNvdXJj
ZSA9ICRFTlZ7J1BXRCd9OwojIFRhcmdldCBwYXRoIChpbiBodHRwZCBhcmVhKQpteSAkdGFyZ2V0
OwojIERlZmluZSBkZWZhdWx0IGRpcihzKSB0byBza2lwCm15ICR0b19za2lwID0gJ0NWUyc7CiMg
SG9sZCBmaWxlIHdpdGggYWxsIFNZTk9QU0lTCm15ICRhbGxTeW47CiMgSG9sZCBmaWxlIHdpdGgg
bG9ncwpteSAkcnVuTG9nczsKIyBTeW5vcHNpcyBydW5zIGNvdW50ZXJzCm15ICRuYkNoZWNrcyA9
IDA7Cm15ICRuYkNoZWNrc09rID0gMDsKCiMgUGFyc2UgcGFzc2VkIGFyZ3MKR2V0X2FyZ3MgKCk7
CgojIE5lZWQgdGhlIFBlcmwgbW9kdWxlcyBwYXJzZXIKbXkgJG1vZF9wYXJzZXIgPSBQZG9jOjpQ
YXJzZXJzOjpGaWxlczo6UGVybE1vZHVsZS0+bmV3KCk7CgojIENoZWNrIHRhcmdldCBwYXRoIG5v
dwppZiAoISAtZCAkdGFyZ2V0KSB7CiAgICBwcmludCAiVGFyZ2V0IGRpciAkdGFyZ2V0IGlzIG5v
dCBhIGRpcmVjdG9yeS5cbiI7CiAgICBleGl0Owp9CgojIEdldCB0aGUgdHJlZQpwcmludCAiR2V0
dGluZyB0cmVlIGZyb20gJHNvdXJjZS4uLlxuIjsKbXkgJHRyZWUgPSBleHRyYWN0VHJlZSgkc291
cmNlKTsKCiMgQ3JlYXRlIGFsbCBTWU5PUFNJUyBmaWxlCiRhbGxTeW4gPSBGaWxlSGFuZGxlLT5u
ZXcoJz4nIC4gJHRhcmdldCAuICcvYWxsU3lub3BzaXMub3V0Jyk7CiRydW5Mb2dzID0gRmlsZUhh
bmRsZS0+bmV3KCc+JyAuICR0YXJnZXQgLiAnL2V4ZWNTeW5vcHNpcy5vdXQnKTsKCiMgRGVmaW5l
IHRhcmdldCBwYXRoIGNvcnJlY3RseQokcHNlcCA9ICR0cmVlLT5wYXRoX3NlcGFyYXRvcigpOwok
dGFyZ2V0ID1+IHMvW1wvXFw6XS8kcHNlcC9nOwokdGFyZ2V0ID1+IHMvJHBzZXAkLy87CgojIFN0
YXJ0IHRoZSBjb252ZXJ0aW9uIQpleHRyYWN0U3lub3BzaXMoJHRyZWUtPnJvb3QoKSk7CgokYWxs
U3luLT5jbG9zZSgpOwoKcHJpbnQgIkNvbXBsZXRlZCBTWU5PUFNJUyBleGVjdXRpb24uXG4iOwpw
cmludCAkcnVuTG9ncyAiQ29tcGxldGVkIFNZTk9QU0lTIGV4ZWN1dGlvbi5cbiI7Cm15ICRwZXJj
ID0gMTAwICogKCRuYkNoZWNrc09rIC8gJG5iQ2hlY2tzKTsKcHJpbnRmICIkbmJDaGVja3NPayBz
dWNjZXNzZnVsIHJ1bnMgb3V0IG9mICRuYkNoZWNrcyAoJTMuMmYlJSlcbiIsICRwZXJjOwpwcmlu
dGYgJHJ1bkxvZ3MgIiRuYkNoZWNrc09rIHN1Y2Nlc3NmdWwgcnVucyBvdXQgb2YgJG5iQ2hlY2tz
ICglMy4yZiUlKVxuIiwgJHBlcmM7CgokcnVuTG9ncy0+Y2xvc2UoKTsKCmV4aXQ7CgojIENoZWNr
X2RpcjogZ2V0IGEgcGF0aCBhbmQgY3JlYXRlIGFsbCBuZWNlc3NhcnkgZGlyZWN0b3JpZXMKCnN1
YiBDaGVja19kaXIgewogICAgbXkgJHBhdGggPSBzaGlmdDsKICAgIAogICAgbXkgJHNlcCA9IHF1
b3RlbWV0YSAkdHJlZS0+cGF0aF9zZXBhcmF0b3IoKTsKICAgIG15IEBkaXJzID0gc3BsaXQgKC8k
c2VwLywgJHBhdGgpOwogICAgbXkgJHBjaGVjayA9ICIiOwogICAgJHBjaGVjayA9ICR0cmVlLT5w
YXRoX3NlcGFyYXRvcigpIGlmKCAkcGF0aCA9fiAvXiRzZXAvICk7CiAgICAgICAgCiAgICBmb3Jl
YWNoIG15ICRkaXIgKEBkaXJzKSB7CgluZXh0IGlmICghIGRlZmluZWQgJGRpciB8fCAkZGlyIGVx
ICIiIHx8ICRkaXIgZXEgJy4nKTsKICAgIAkkcGNoZWNrIC49ICRkaXIgLiAkdHJlZS0+cGF0aF9z
ZXBhcmF0b3IoKTsKCWlmICghIC1kICRwY2hlY2spIHsKCSAgICB1bmxlc3MgKG1rZGlyICgkcGNo
ZWNrLCAwNzU1KSkgewoJICAgIAlwcmludCAiRXJyb3I6IGZhaWxlZCB0byBjcmVhdGUgZGlyZWN0
b3J5ICRwY2hlY2tcbiI7CgkJZXhpdDsKCSAgICB9Cgl9CiAgICB9Cn0KCiMgZXh0cmFjdFN5bm9w
c2lzOiBnZW5lcmF0ZSBQZXJsIG1vZHVsZSBkb2N1bWVudGF0aW9uCgpzdWIgZXh0cmFjdFN5bm9w
c2lzIHsKICAgIG15ICRub2RlID0gc2hpZnQ7CiAgICAKICAgIG15ICRmdWxsUGF0aCA9ICR0cmVl
LT5wYXRoKCkgLiAkdHJlZS0+cGF0aF9zZXBhcmF0b3IoKTsKICAgICRmdWxsUGF0aCAuPSAkbm9k
ZS0+cGF0aCgpIC4gJHRyZWUtPnBhdGhfc2VwYXJhdG9yKCkgaWYgKCRub2RlLT5wYXRoKCkpOwog
ICAgCiAgICBwcmludCAiUHJvY2Vzc2luZyAiLCAkZnVsbFBhdGgsICJcbiI7CiAgICBwcmludCAk
cnVuTG9ncyAiUHJvY2Vzc2luZyAiLCAkZnVsbFBhdGgsICJcbiI7CgogICAgbXkgJGZwdDsKICAg
IG15ICRmaWxlOwogICAgCiAgICAjIEl0ZXJhdGUgb24gZmlsZXMgaW4gdGhlIHRyZWUgbm9kZQog
ICAgbXkgJGl0ZXIgPSAkbm9kZS0+ZmlsZUl0ZXJhdG9yKCk7ICAgIAogICAgd2hpbGUgKCRmaWxl
ID0gJGl0ZXItPigpKSB7CiAgICAJbXkgJGZuYW1lID0gJHRyZWUtPnBhdGgoKSAuICR0cmVlLT5w
YXRoX3NlcGFyYXRvcigpOwoJJGZuYW1lIC49ICRub2RlLT5wYXRoKCkgLiAkdHJlZS0+cGF0aF9z
ZXBhcmF0b3IoKSBpZiAoZGVmaW5lZCAkbm9kZS0+cGF0aCgpKTsKCSRmbmFtZSAuPSAkZmlsZS0+
bmFtZSgpOwogICAgCQoJcHJpbnQgIiMgRmlsZSAkZm5hbWVcbiI7CglwcmludCAkcnVuTG9ncyAi
IyBGaWxlICRmbmFtZVxuIjsKICAgIAkkZnB0ID0gRmlsZUhhbmRsZS0+bmV3KCRmbmFtZSk7Cglp
ZiAoISBkZWZpbmVkICRmcHQpIHsKCSAgICBwcmludCAkcnVuTG9ncyAiRmFpbGVkIG9wZW5pbmcg
JGZuYW1lLCBza2lwcGVkLlxuIjsKCSAgICBuZXh0OwoJfQogICAgCQoJIyBMZXQgdGhlIGZpbGUg
cGFyc2VyIGRvIHRoZSBqb2IKCW15ICRwYXJzZWQ7CglteSAkY291bnQgPSAwOwoJCgkjIFBhcnNl
IGZpbGUKCSRtb2RfcGFyc2VyLT5zdHJlYW0oJGZwdCk7Cgl3aGlsZSAoJHBhcnNlZCA9ICRtb2Rf
cGFyc2VyLT5uZXh0RG9jdW1lbnQoJG5vZGUpKSB7CgkgICAgIyBTZXQgc29tZSB2YWx1ZXMgdG8g
dGhlIGRvY3VtZW50CiAgICAJICAgICRwYXJzZWQtPmZpbGUoJGZpbGUtPm5hbWUoKSk7CgkgICAg
CiAgICAJICAgICMgRXh0cmFjdCBzeW5vcHNpcyBhbmQgZXhlYyBjb2RlCgkgICAgJG5iQ2hlY2tz
T2srKyBpZiAocnVuU3lub3BzaXMoJG5vZGUsICRmaWxlLCAkcGFyc2VkKSk7CgkgICAgJG5iQ2hl
Y2tzKys7CgkgICAgCgkgICAgJGNvdW50Kys7CgkgICAgCiAgICAJICAgIHByaW50ICRydW5Mb2dz
ICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1c
biI7Cgl9CgkKCSRmcHQtPmNsb3NlKCk7CgkKCSMgV2FybmluZyBpZiBzb21ldGhpbmcgd3JvbmcK
CWlmICghICRjb3VudCkgewoJICAgIHByaW50ICRydW5Mb2dzICJXYXJuaW5nOiBmYWlsZWQgdG8g
cGFyc2UgZmlsZSAkZm5hbWUhXG4iOwoJICAgIHByaW50ICRydW5Mb2dzICJDaGVjayBpZiBwYWNr
YWdlIG5hbWUgZGVmaW5pdGlvbiBpcyBjb3JyZWN0ICgncGFja2FnZScgbGluZSlcbiI7CgkgICAg
bmV4dDsKCX0KICAgIH0KICAgICAgICAKICAgICMgRGVzY2VuZCB0cmVlCiAgICAkaXRlciA9ICRu
b2RlLT5ub2RlSXRlcmF0b3IoKTsKICAgIG15ICRzdWJfbm9kZTsKICAgIHdoaWxlICgkc3ViX25v
ZGUgPSAkaXRlci0+KCkpIHsKCWV4dHJhY3RTeW5vcHNpcygkc3ViX25vZGUpOyB9CiAgICAKICAg
IHJldHVybiAxOwp9CgojIHJ1blN5bm9wc2lzOiB0cmFuc2Zvcm0gYSBwYXJzZWQgUGVybCBtb2R1
bGUgdG8gYSB3ZWIgcGFnZQoKc3ViIHJ1blN5bm9wc2lzIHsKICAgIG15ICRub2RlID0gc2hpZnQ7
CiAgICBteSAkZmlsZV9vYmogPSBzaGlmdDsKICAgIG15ICRkb2N1bWVudCA9IHNoaWZ0OwogICAg
CiAgICAjIEdldCBkb2N1bWVudCBuYW1lCiAgICBteSAkbmFtZSA9ICRkb2N1bWVudC0+bmFtZSgp
OwogICAgCiAgICBpZiAoISBkZWZpbmVkICRuYW1lKSB7CiAgICAJcHJpbnQgJHJ1bkxvZ3MgIk5v
IGRvY3VtZW50IG5hbWUsIG5vdCBwcm9jZXNzZWQhXG4iOwoJcmV0dXJuIDA7CiAgICB9CgogICAg
IyBHZXQgUGVybCBsZXZlbCBhbmQgbW9kdWxlIG5hbWUKIyAgICBteSAkbGV2ZWwgPSAkdHJlZS0+
cm9vdF9uYW1lOwogICAgbXkgJGxldmVsOwogICAgaWYgKCRuYW1lID1+IC86Oi8pIHsKCSRuYW1l
ID1+IC9eKC4qKTo6KC4rKSQvOwoJJGxldmVsID0gJDEgaWYgKCQxIG5lICIiKTsKCSRuYW1lID0g
JDI7CiAgICB9CiAgICAKICAgICRsZXZlbCA9ICR0cmVlLT5yb290X25hbWUoKSBpZiAoJGxldmVs
IGVxICIiKTsKICAgIAogICAgIyBHZXQgc3lub3BzaXMKICAgIG15ICRzeW4gPSAkZG9jdW1lbnQt
PmZldGNoKCdQb2RIZWFkJywgJ1NZTk9QU0lTJyk7CiAgICB1bmxlc3MgKCRzeW4pIHsKICAgIAlw
cmludCAkcnVuTG9ncyAiRXJyb3I6IG5vdCBhYmxlIHRvIGdldCBTWU5PUFNJUyBmcm9tIHBhY2th
Z2UuXG4iOwoJcmV0dXJuIDA7CiAgICB9CiAgICAKICAgIGlmICghICRzeW4tPmNvbnRlbnQoKSB8
fCAkc3luLT5jb250ZW50KCkgZXEgJycpIHsKICAgIAlwcmludCAkcnVuTG9ncyAiRXJyb3I6IGZv
dW5kIGVtcHR5IFNZTk9QU0lTXG4iOwoJcmV0dXJuIDA7CiAgICB9CiAgICAKICAgICMgU3RvcmUg
c3lub3BzaXMKICAgIHByaW50ICRhbGxTeW4gIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09XG4iOwogICAgcHJpbnQgJGFsbFN5biAiU3lub3BzaXMg
Zm9yICIsICRkb2N1bWVudC0+bmFtZSgpLCAiXG4iOwogICAgcHJpbnQgJGFsbFN5biAiPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiI7CiAgICBw
cmludCAkYWxsU3luICRzeW4tPmNvbnRlbnQoKSwgIlxuIjsKICAgIAogICAgIyBQaWNrIGNvZGUg
ZnJvbSBzeW5vcHNpcwogICAgbXkgQGxpbmVzID0gc3BsaXQoL1xuLywgJHN5bi0+Y29udGVudCgp
KTsKICAgIG15ICRsaW5lOwogICAgCiAgICB3aGlsZSAoZGVmaW5lZCAoJGxpbmUgPSBzaGlmdCBA
bGluZXMpKSB7CiAgICAJY2hvbXAgJGxpbmU7CgluZXh0IGlmICghIGRlZmluZWQgJGxpbmUgfHwg
JGxpbmUgZXEgJycpOwogICAgCWxhc3QgaWYgKCRsaW5lID1+IC9eXHMrLyk7CiAgICB9CiAgICAK
ICAgIHVubGVzcyAoQGxpbmVzKSB7CiAgICAJcHJpbnQgJHJ1bkxvZ3MgIkVycm9yOiBpdCBzZWVt
cyBubyBzYW1wbGUgY29kZSBwcmVzZW50IGluIHRoZSBTWU5PUFNJU1xuIjsKCXJldHVybiAwOwog
ICAgfQogICAgCiAgICBteSAkdGVzdENvZGUgPSAkbGluZSAuICJcbiI7CiAgICB3aGlsZSAoZGVm
aW5lZCAoJGxpbmUgPSBzaGlmdCBAbGluZXMpKSB7CiAgICAJY2hvbXAgJGxpbmU7CglpZiAoISBk
ZWZpbmVkICRsaW5lIHx8ICRsaW5lIGVxICcnKSB7CgkgICAgJHRlc3RDb2RlIC49ICJcbiI7Cgkg
ICAgbmV4dDsKICAgIAl9CiAgICAJbGFzdCBpZiAoJGxpbmUgIX4gL15ccysvKTsKICAgIAkkdGVz
dENvZGUgLj0gJGxpbmUgLiAiXG4iOwogICAgfQogICAgCiAgICAjIERlZmluZSBzY3JpcHQgZmls
ZSBuYW1lCiAgICBteSAkZmlsZSA9IFJtRXh0KCRmaWxlX29iaik7CiAgICBteSAkZm5hbWUgPSAk
dGFyZ2V0IC4gJHRyZWUtPnBhdGhfc2VwYXJhdG9yKCk7CiAgICAkZm5hbWUgLj0gJG5vZGUtPnBh
dGgoKSAuICR0cmVlLT5wYXRoX3NlcGFyYXRvcigpIGlmIChkZWZpbmVkICRub2RlLT5wYXRoKCkp
OwogICAgCiAgICBDaGVja19kaXIoJGZuYW1lKTsKICAgIAogICAgJGZuYW1lIC49ICRmaWxlIC4g
Jy5wbCc7CiAgICAKICAgIHByaW50ICRydW5Mb2dzICItPiBTdG9yaW5nIFNZTk9QU0lTIGNvZGUg
Zm9yICIsICRkb2N1bWVudC0+bmFtZSgpLCAiIGluXG4gICAkZm5hbWVcbiI7CiAgICBwcmludCAi
LT4gU3RvcmluZyBTWU5PUFNJUyBjb2RlIGZvciAiLCAkZG9jdW1lbnQtPm5hbWUoKSwgIiBpblxu
ICAgJGZuYW1lXG4iOwogICAgICAgIAogICAgIyBXcml0ZSBwbCBmaWxlIG5vdwogICAgbXkgJGZw
dCA9IEZpbGVIYW5kbGUtPm5ldygiPiRmbmFtZSIpOwogICAgaWYgKCEgZGVmaW5lZCAkZnB0KSB7
CiAgICAJcHJpbnQgIlVuYWJsZSB0byBjcmVhdGUgJGZuYW1lIVxuIjsKCXJldHVybiAwOwogICAg
fQogICAgCiAgICBwcmludCAkZnB0IDw8WFhYOwojIS91c3IvbG9jYWwvYmluL3BlcmwgLXcKCiMg
Q29kZSBmcm9tIFNZTk9QU0lTIHRvIGV4ZWN1dGU6CiR0ZXN0Q29kZQpYWFgKICAgIAogICAgJGZw
dC0+Y2xvc2UoKTsKICAgIAogICAgIyBFeGVjdXRlIHNjcmlwdCBhbmQgY29sbGVjdCBvdXRwdXQK
ICAgIHByaW50ICRydW5Mb2dzICItPiBFeGVjdXRpb24gb3V0cHV0OlxuIjsKICAgIGNobW9kKDA3
NzcsJGZuYW1lKTsKICAgIAogICAgbXkgJGNtZCA9IEZpbGVIYW5kbGUtPm5ldygicGVybCAkZm5h
bWUgfCIpOwogICAgdW5sZXNzICgkY21kKSB7CiAgICAJcHJpbnQgJHJ1bkxvZ3MgIkVycm9yOiBm
YWlsZWQgdG8gZXhlY3V0ZSAkZm5hbWVcbiI7CglyZXR1cm4gMDsKICAgIH0KICAgIAogICAgbXkg
JGxpbmU7CiAgICB3aGlsZSAoZGVmaW5lZCAoJGxpbmUgPSA8JGNtZD4pKSB7CiAgICAJcHJpbnQg
JHJ1bkxvZ3MgIj4gJGxpbmUiOwogICAgfQogICAgICAgIAogICAgaWYgKCQ/ICE9IDApIHsKICAg
IAlwcmludCAkcnVuTG9ncyAiRXJyb3I6IGl0IHNlZW1zIHRoZSBleGVjdXRpb24gZmFpbGVkLlxu
IjsKCXJldHVybiAwOwogICAgfQogICAgCiAgICByZXR1cm4gMTsKfQoKIyBQYXRoVG9MZXZlbDog
Y29udmVydCBkaXIgcGF0aCB0byBQZXJsIGxldmVsIG5hbWUKCnN1YiBQYXRoVG9MZXZlbCB7CiAg
ICBteSAkb2JqID0gc2hpZnQ7CiAgICAKICAgICMgRmlyc3QgZ2V0IHJvb3QgbmFtZSBvZiB0aGUg
dHJlZQogICAgbXkgJHJldCA9ICR0cmVlLT5yb290X25hbWUoKTsKICAgIAogICAgIyBHZXQgcGF0
aCBvZiB0aGUgcGFzc2VkIG9iaiBmaWxlCiAgICBteSAkbmFtZSA9ICRvYmotPnBhdGgoKTsKICAg
ICAgICAKICAgICMgUmV0dXJuIHJvb3QgbmFtZSBpZiBubyBwYXRoIGluIGZpbGUgb2JqZWN0CiAg
ICByZXR1cm4gJHJldCBpZiAoISBkZWZpbmVkICRuYW1lIHx8ICRuYW1lIGVxICIiKTsKICAgIAog
ICAgIyBVc2UgcGF0aCBzZXBhcmF0b3IgZGVmaW5lZCBmcm9tIHRyZWUKICAgIG15ICRzZXAgPSBx
dW90ZW1ldGEgJHRyZWUtPnBhdGhfc2VwYXJhdG9yKCk7CiAgICAgICAgCiAgICAjIFJlcGxhY2Ug
c2VwYXJhdG9yIHdpdGggUGVybCBzdHlsZQogICAgJG5hbWUgPX4gcy9eJHNlcC8vOwogICAgJG5h
bWUgPX4gcy8kc2VwLzo6L2c7CiAgICAKICAgICRyZXQgLj0gJzo6JyAuICRuYW1lOwogICAgCiAg
ICByZXR1cm4gJHJldDsKfQoKIyBSbUV4dDogSnVzdCByZW1vdmUgdGhlIGV4dGVuc2lvbiBmcm9t
IGEgUGRvYzo6RG9jRW50cnkgb2JqZWN0IHJlbGF0ZWQgdG8gYSBmaWxlLgoKc3ViIFJtRXh0IHsK
ICAgIG15ICRvYmogPSBzaGlmdDsKCiAgICBteSAkbmFtZSA9ICRvYmotPm5hbWUoKTsKCiAgICAk
bmFtZSA9fiBzL1wuLiskLy87CiAgICByZXR1cm4gJG5hbWU7Cn0KCnN1YiBleHRyYWN0VHJlZSB7
CiAgICBteSAkcGF0aCA9IHNoaWZ0OwogICAgCiAgICBteSAkbnRyZWUgPSBQZG9jOjpUcmVlLT5u
ZXcoKTsKICAgICRudHJlZS0+bmFtZSgnUGVybCBtb2R1bGVzIGRvY3VtZW50YXRpb24uJyk7CiAg
ICAkbnRyZWUtPnBhdGgoJHBhdGgpOwogICAgCiAgICAjIERlZmluZSBkaXJlY3RvcmllcyB0byBl
eGNsdWRlCiAgICBteSBAc2tpcCA9IHNwbGl0KCcsJywkdG9fc2tpcCk7CiAgICBmb3JlYWNoIG15
ICRkaXIgKEBza2lwKSB7CgkkbnRyZWUtPmV4Y2x1ZGUoJGRpcik7IH0KCiAgICAjIEdldCBvbmx5
IC5wbSBmaWxlcwogICAgJG50cmVlLT5hZGRfZmlsdGVyKCcucG0kJyk7CgogICAgIyBHZXQgdHJl
ZSBhbmQgY2hlY2sgaWYgc3VjY2Vzc2Z1bAogICAgaWYgKCEgZGVmaW5lZCAkbnRyZWUtPnJvb3Qo
KSkgewoJcHJpbnQgIkZhaWxlZCBwYXJzaW5nIHRyZWUuXG4iOwoJZXhpdDsKICAgIH0KICAgIAog
ICAgcmV0dXJuICRudHJlZTsKfQoKCiMgR2V0X2FyZ3M6IHByb2Nlc3MgdGhlIGFyZ3VtZW50cyBw
YXNzZWQgdG8gdGhlIHNjcmlwdC4KCnN1YiBHZXRfYXJncyB7CiAgICBteSAkYXJnOwogICAgCiAg
ICB3aGlsZSAoJGFyZyA9IHNoaWZ0IChAQVJHVikpIHsKCWlmICgkYXJnIGVxICItaCIgfHwgJGFy
ZyBlcSAiLWhlbHAiKSB7CgkgICAgSGVscCAoKTsKCSAgICBleGl0OwoJfQoJCglpZiAoJGFyZyBl
cSAnLXNvdXJjZScpIHsKCSAgICAkc291cmNlID0gc2hpZnQgKEBBUkdWKTsgfQoJZWxzaWYgKCRh
cmcgZXEgJy10YXJnZXQnKSB7CgkgICAgJHRhcmdldCA9IHNoaWZ0IChAQVJHVik7IH0KCWVsc2lm
ICgkYXJnIGVxICctc2tpcCcpIHsKCSAgICAkdG9fc2tpcCAuPSAnLCcgLiBzaGlmdCAoQEFSR1Yp
OyB9CiAgICB9Cn0KCiMgSGVscDogLWgKCnN1YiBIZWxwIHsKICAgIHByaW50IDw8WFhYOwp0ZXN0
U3luLnBsIC0gZXh0cmFjdHMgY29kZSBleGFtcGxlIGZyb20gU1lOT1BTSVMgYW5kIGV4ZWN1dGVz
IGl0LgoKTWFuZGF0b3J5IGFyZ3VtZW50czoKICAgIC1zb3VyY2UgPHBhdGg+OiBEaXJlY3Rvcnkg
bG9jYXRpb24gb2YgdGhlIHRyZWUgd2l0aCB0aGUgUGVybCBtb2R1bGVzLCBtdXN0IGJlIGV4aXN0
aW5nLgogICAgLXRhcmdldCA8cGF0aD46IERpcmVjdG9yeSBsb2NhdGlvbiB0byBzdG9yZSBmaWxl
cy4KT3B0aW9uYWwgYXJndW1lbnRzOgogICAgLXNraXAgZGlyMSxkaXIyLGRpcjMsLi4uOiBza2lw
IHRoZSBkaXJlY3RvcnkgbmFtZXMgc2VwYXJhdGVkIGJ5IGEgY29tbWEgKCwpLiBDVlMgZGlycyBz
a2lwcGVkIGJ5IGRlZmF1bHQuClhYWAp9Cg==


---MOQ10106127986fb3d8315416e074b0f764306029fbe7--