my play with nacho

[prev] [thread] [next] [lurker] [Date index for 2003/08/01]

From: Jody Belka
Subject: my play with nacho
Date: 18:06 on 01 Aug 2003
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@xxxxxxxxx.xxx.xxxxxxxxxx.xxx for more info.

---1463760359-316734986-1059752961=:5155
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
Content-ID: <Pine.LNX.4.44.0308011757252.5155@xxxx.xxxx.xxxxxxxxxxx.xxx>

Over the last couple of days i've been playing about with the dispatch
engine of nacho. Attached is the result, together with a modified version
of a module that is required by it.

I'd be interested in seeing what people think about it in general, so
feedback welcome (and preferred :)

Other extra required modules compared to the official version are as
follows:

    Pod::Usage, Getopt::ArgvFile, Getopt::Long


Jody


---1463760359-316734986-1059752961=:5155
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME=nacho
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.44.0308011649210.5155@xxxx.xxxx.xxxxxxxxxxx.xxx>
Content-Description: my modified nacho
Content-Disposition: ATTACHMENT; FILENAME=nacho

IyEvdXNyL2Jpbi9wZXJsIC13DQojICRJZCQNCnVzZSBzdHJpY3Q7DQp1c2Ug
RmlsZTo6UGF0aCBxdyhta3BhdGgpOw0KdXNlIEZpbGU6OkJhc2VuYW1lOw0K
dXNlIERhdGE6OkR1bXBlcjsNCnVzZSBTdHJpbmc6OlNoZWxsUXVvdGU7DQp1
c2UgVU5JVkVSU0FMOjpyZXF1aXJlOw0KdXNlIFBvZDo6VXNhZ2U7DQp1c2Ug
R2V0b3B0OjpBcmd2RmlsZSBxdyhhcmd2RmlsZSk7DQp1c2UgR2V0b3B0OjpM
b25nOw0KDQp1c2UgdmFycyBxdy8gJFZFUlNJT04gJUNPTU1BTkRTICRGSVJT
VF9DT01NQU5EIC87DQokVkVSU0lPTiA9ICIxLjAiOw0KDQojIyBUT0RPDQoj
IHNldHRpbmcgcGVyc29uYWwgcGx1Z2lucw0KDQoNCj1oZWFkMSBOQU1FDQoN
Cm5hY2hvIC0gdGhlIHNpZXN0YSBjb21tYW5kIGxpbmUgY29uZmlndXJhdGlv
biB0b29sDQoNCj1oZWFkMSBTWU5PUFNJUw0KDQpuYWNobyBbY29tbWFuZCBb
b3B0aW9uc10uLi5dDQoNCiBHZW5lcmljIE9wdGlvbnM6DQogICAtZCwgLS1k
YXRhYmFzZT1EQklfVVJJICBcIHRoZXNlIHR3byBvcHRpb25zIGFsbG93IHlv
dSB0byBvdmVycmlkZQ0KICAgLWYsIC0tY29uZmlnLWZpbGU9RklMRSAgLyB0
aGUgdmFsdWVzIGRlZmluZWQgaW4gU2llc3RhOjpDb25maWcNCg0KICAgLWgs
IC0taGVscCAgICAgICAgICAgaGVscCB0ZXh0IGRldGFpbGluZyB0aGUgY29t
bWFuZHMgYW5kIHRoZWlyIG9wdGlvbnMNCiAgIC1WLCAtLXZlcnNpb24gICAg
ICAgIHByaW50cyB0aGUgdmVyc2lvbiBudW1iZXINCg0KDQogTWlzYyBDb21t
YW5kczogICBjcmVhdGUtZGF0YWJhc2UgIHJ1bi1tYXJpYWNoZSAgICAgIGNy
ZWF0ZS1iYWNrdXANCiBMaXN0IENvbW1hbmRzOiAgIHNob3ctbGlzdHMgICAg
ICAgc2hvdy1hbGlhcyAgICAgICAgZGVzY3JpYmUtbGlzdA0KICAgICAgICAg
ICAgICAgICAgY3JlYXRlLWxpc3QgICAgICBtb2RpZnktbGlzdCAgICAgICBk
ZWxldGUtbGlzdCAgICANCiAgICAgICAgICAgICAgICAgIHNldC1wbHVnaW5z
ICAgICAgYWRkLW1lbWJlciAgICAgICAgcmVtb3ZlLW1lbWJlcg0KIE1lbWJl
ciBDb21tYW5kczogc2hvdy1tZW1iZXJzICAgICBkZXNjcmliZS1tZW1iZXIg
ICBjcmVhdGUtbWVtYmVyDQogICAgICAgICAgICAgICAgICBtb2RpZnktbWVt
YmVyICAgIGRlbGV0ZS1tZW1iZXINCiBQbHVnaW4gQ29tbWFuZHM6IHNob3ct
cGx1Z2lucyAgICAgZGVzY3JpYmUtcGx1Z2lucyAgbW9kaWZ5LXBsdWdpbg0K
DQogT3B0aW9ucyBhbmQgY29tbWFuZHMgbWF5IGJlIHJlYWQgZnJvbSBhIGZp
bGUgYnkgZ2l2aW5nIHRoZSBuYW1lIG9mIHRoZQ0KIGZpbGUgcHJlZml4ZWQg
YnkgYSBALiBUaGUgZGF0YWJhc2UgYW5kIGNvbmZpZy1maWxlIG9wdGlvbnMg
YWZmZWN0IGFsbA0KIG9mIHRoZSBzdXBwbGllZCBjb21tYW5kcy4gaWYgZWl0
aGVyIG9mIHRoZW0gaXMgc3VwcGxpZWQgbW9yZSB0aGFuIG9uY2UsDQogdGhl
IGxhc3Qgb25lIHdpbGwgdGFrZSBwcmlvcml0eS4NCg0KPWhlYWQxIE9QVElP
TlMNCiANCiBOT1RFOiBBbGwgY29tbWFuZCBvcHRpb25zIGFyZSBtYW5kYXRv
cnkgdW5sZXNzIG90aGVyd2lzZSBzdGF0ZWQNCg0KIE1pc2MgQ29tbWFuZHM6
DQogICBjcmVhdGUtZGF0YWJhc2UgICAgICBpbml0aWFsaXNlcyBhIG5ldyBk
YXRhYmFzZQ0KICAgcnVuLW1hcmlhY2hpICAgICAgICAgaW52b2tlIG1hcmlh
Y2hpIHRvIG1ha2Ugd2ViaWZpZWQgYXJjaGl2ZXMNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGRlcGVuZHMgb24gdGhlIEFyY2hpdmUgcGx1Z2luKQ0K
ICAgY3JlYXRlLWJhY2t1cCAgICAgICAgcHJpbnRzIG91dCBhIHNoZWxsIHNj
cmlwdCB0aGF0IHdpbGwgcmVzdG9yZSB5b3VyIHN5c3RlbSB3aGVuIHJ1bg0K
ICAgICAtbCwgLS1saXN0PU5BTUUgICAgbGltaXQgdGhlIGJhY2t1cCBzY3Jp
cHQgdG8gdGhpcyBsaXN0IChvcHRpb25hbCkNCg0KICBMaXN0IENvbW1hbmRz
Og0KICAgc2hvdy1saXN0cyAgICAgICAgICAgc2hvd3MgYWxsIHRoZSBsaXN0
cyB0aGF0IGFyZSBpbiB0aGUgc3lzdGVtDQogICBjcmVhdGUtbGlzdCAgICAg
ICAgICBjcmVhdGVzIGEgbmV3IGxpc3QNCiAgICAgLWwsIC0tbGlzdD1OQU1F
ICAgICAgICB0aGUgbmFtZSBvZiB0aGUgbGlzdA0KICAgICAtbywgLS1vd25l
cj1FTUFJTCAgICAgIHRoZSBhZG1pbmlzdHJhdG9yIG9mIHRoZSBsaXN0DQog
ICAgIC1wLCAtLXBvc3Q9RU1BSUwgICAgICAgdGhlIGFkZHJlc3MgdG8gc2Vu
ZCBtYWlsIHRvIGZvciBwb3N0aW5nIHRvIHRoZSBsaXN0DQogICAgIC1iLCAt
LWJvdW5jZXM9RU1BSUwgICAgdGhlIGFkZHJlc3MgdGhhdCBib3VuY2VzIHNo
b3VsZCBjb21lIGJhY2sgdG8NCg0KICAgc2hvdy1hbGlhcyAgICAgICAgICAg
cHJpbnRzIG91dCBhbiBhbGlhcyBmaWxlIGVudHJ5IGZvciBhIGxpc3QNCiAg
ICAgLWwsIC0tbGlzdD1OQU1FfElEICAgICB0aGUgbmFtZSBvciBpZCBvZiB0
aGUgbGlzdA0KDQogICBkZXNjcmliZS1saXN0ICAgICAgICBzaG93cyBhbGwg
dGhlIHByb3BlcnRpZXMgb2YgYSBsaXN0IGFuZCB0aGVpciB2YWx1ZXMNCiAg
ICAgLWwsIC0tbGlzdD1OQU1FfElEICAgICB0aGUgbmFtZSBvciBpZCBvZiB0
aGUgbGlzdA0KDQogICBtb2RpZnktbGlzdCAgICAgICAgICBjaGFuZ2Ugb25l
IG9yIG1vcmUgcHJvcGVydGllcyBvZiBhIGxpc3QNCiAgICAgLWwsIC0tbGlz
dD1OQU1FfElEICAgICB0aGUgbmFtZSBvciBpZCBvZiB0aGUgbGlzdA0KICAg
ICAtcHIsIC0tcHJvcGVydHkgS0VZPVZBTFVFDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0cyB0aGUgcHJvcGVydHkgS0VZIHRvIFZBTFVFIChy
ZXBlYXRhYmxlKQ0KDQogICAgICBOb3RlOiB5b3UgY2FuIGVmZmVjdGl2ZWx5
IGNvcHkgdGhlIGNvbmZpZ3VyYXRpb24gb2YgYSBsaXN0IGJ5IG1vZGlmaXlp
bmcNCiAgICAgICAgICAgIHRoZSAnaWQnIHByb3BlcnR5IC0gYSBuZXcgbGlz
dCB3aXRoIHRoZSBuZXcgaWQgd2lsbCBiZSBjcmVhdGVkIGZvciB5b3UuDQoN
CiAgIGRlbGV0ZS1saXN0ICAgICAgICAgIHJlbW92ZSBhIGxpc3RzIGZyb20g
dGhlIHN5c3RlbQ0KICAgICAtbCwgLS1saXN0PU5BTUV8SUQgICAgIHRoZSBu
YW1lIG9yIGlkIG9mIHRoZSBsaXN0DQoNCiAgIHNldC1wbHVnaW5zICAgICAg
ICAgIHNldHMgdGhlIHBsdWdpbnMgb2YgYSBsaXN0DQogICAgICAgICAgICAg
ICAgICAgICAgICAgIChhbnkgZXhpc3RpbmcgcGx1Z2lucyBub3Qgc3BlY2lm
aWVkIHdpbGwgYmUgZGVsZXRlZCkNCiAgICAgLWwsIC0tbGlzdD1OQU1FfElE
ICAgICB0aGUgbmFtZSBvciBpZCBvZiB0aGUgbGlzdA0KICAgICAtcSwgLS1x
dWV1ZT1OQU1FICAgICAgIHRoZSBuYW1lIG9mIHRoZSBxdWV1ZSAoZWcgcG9z
dCwgc3ViLCB1bnN1YiwgLi4uKQ0KICAgICAtcCwgLS1wbHVnaW49TkFNRSAg
ICAgIHRoZSBuYW1lIG9mIGEgcGx1Z2luIChyZXBlYXRhYmxlKQ0KICAgICAN
CiAgIGFkZC1tZW1iZXIgICAgICAgICAgIGFkZHMgb25lIG9yIG1vcmUgbWVt
YmVycyB0byBhIGxpc3QNCiAgICAgICAgICAgICAgICAgICAgICAgICAgKHdp
bGwgY3JlYXRlIG5ldyBtZW1iZXJzIGlmIG5lY2Vzc2FyeSkNCiAgICAgLWws
IC0tbGlzdD1OQU1FfElEICAgICB0aGUgbmFtZSBvciBpZCBvZiB0aGUgbGlz
dA0KICAgICAtbSwgLS1tZW1iZXI9RU1BSUwgICAgIHRoZSBlbWFpbCBhZGRy
ZXNzIG9mIGEgbWVtYmVyIChyZXBlYXRhYmxlKQ0KDQogICByZW1vdmUtbWVt
YmVyICAgICAgICByZW1vdmVzIG9uZSBvciBtb3JlIG1lbWJlcnMgZnJvbSBh
IGxpc3QNCiAgICAgLWwsIC0tbGlzdD1OQU1FfElEICAgICB0aGUgbmFtZSBv
ciBpZCBvZiB0aGUgbGlzdA0KICAgICAtbSwgLS1tZW1iZXI9RU1BSUwgICAg
IHRoZSBlbWFpbCBhZGRyZXNzIG9mIGEgbWVtYmVyIChyZXBlYXRhYmxlKQ0K
DQogICANCiBNZW1iZXIgQ29tbWFuZHM6DQogICBzaG93LW1lbWJlcnMgICAg
ICAgICBzaG93cyB0aGUgbWVtYmVycyBpbiB0aGUgc3lzdGVtLCBvciBvbmUg
b3IgbW9yZSBsaXN0cw0KICAgICAtbCwgLS1saXN0PU5BTUV8SUQgICAgIHNo
b3cgdGhlIG1lbWJlcnMgc3ViYmVkIHRvIHRoaXMgbGlzdCAob3B0aW9uYWws
IHJlcGVhdGFibGUpDQoNCiAgIGNyZWF0ZS1tZW1iZXIgICAgICAgIGFkZHMg
b25lIG9yIG1vcmUgbmV3IG1lbWJlcnMgdG8gdGhlIHN5c3RlbQ0KICAgICAt
bSwgLS1tZW1iZXI9RU1BSUwgICAgIHRoZSBlbWFpbCBhZGRyZXNzIG9mIGEg
bWVtYmVyIChyZXBlYXRhYmxlKQ0KDQogICBkZXNjcmliZS1tZW1iZXIgICAg
ICBzaG93cyBhbGwgdGhlIHByb3BlcnRpZXMgb2YgYSBtZW1iZXIgYW5kIHRo
ZWlyIHZhbHVlcw0KICAgICAtbSwgLS1tZW1iZXI9RU1BSUx8SUQgIHRoZSBl
bWFpbCBhZGRyZXNzIG9yIGlkIG9mIGEgbWVtYmVyDQoNCiAgIG1vZGlmeS1t
ZW1iZXIgICAgICAgIGNoYW5nZSBvbiBvciBtb3JlIHByb3BlcnRpZXMgb2Yg
YSBtZW1iZXINCiAgICAgLW0sIC0tbWVtYmVyPUVNQUlMfElEICB0aGUgZW1h
aWwgYWRkcmVzcyBvciBpZCBvZiBhIG1lbWJlcg0KICAgICAtcHIsIC0tcHJv
cGVydHkgS0VZPVZBTFVFDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0cyB0aGUgcHJvcGVydHkgS0VZIHRvIFZBTFVFIChyZXBlYXRhYmxlKQ0K
DQogICAgICBOb3RlOiB5b3UgY2FuIGVmZmVjdGl2ZWx5IGNvcHkgdGhlIGNv
bmZpZ3VyYXRpb24gb2YgYSBtZW1iZXIgYnkgbW9kaWZpeWluZw0KICAgICAg
ICAgICAgdGhlICdpZCcgcHJvcGVydHkgLSBhIG5ldyBtZW1iZXIgd2l0aCB0
aGUgbmV3IGlkIHdpbGwgYmUgY3JlYXRlZCBmb3IgeW91Lg0KDQogICBkZWxl
dGUtbWVtYmVyICAgICAgICByZW1vdmVzIG9uZSBvciBtb3JlIG1lbWJlcnMg
ZnJvbSB0aGUgc3lzdGVtDQogICAgIC1tLCAtLW1lbWJlcj1FTUFJTHxJRCAg
dGhlIGVtYWlsIGFkZHJlc3Mgb3IgaWQgb2YgYSBtZW1iZXIgKHJlcGVhdGFi
bGUpDQoNCiBQbHVnaW4gQ29tbWFuZHM6DQogICBzaG93LXBsdWdpbnMgICAg
ICAgICBkaXNwbGF5IGEgbGlzdCBvZiBwbHVnaW5zIChvbiB0aGUgc3lzdGVt
LCBvciBzZXQgb24gbGlzdHMpICANCiAgICAgLWwsIC0tbGlzdD1OQU1FfElE
ICAgICBzaG93IHRoZSBwbHVnaW5zIHNldCBvbiB0aGlzIGxpc3QgKG9wdGlv
bmFsLCByZXBlYXRhYmxlKQ0KDQogICBkZXNjcmliZS1wbHVnaW4gICAgICBz
aG93cyBhbGwgdGhlIG9wdGlvbnMgZm9yIGEgcGFydGljdWxhciBwbHVnaW4N
CiAgICAgLXAsIC0tcGx1Z2luPU5BTUUgICAgICB0aGUgbmFtZSBvZiB0aGUg
cGx1Z2luDQogICAgIC1sLCAtLWxpc3Q9TkFNRXxJRCAgICAgc2hvdyB0aGUg
Y3VycmVudCBzZXR0aW5ncyBmb3IgdGhpcyBsaXN0IChvcHRpb25hbCkNCiAg
ICAgLW0sIC0tbWVtYmVyPUVNQUlMfElEICBzaG93IHRoZSBvcHRpb25zIGZv
ciB0aGlzIG1lbWJlciBmb3IgdGhlIHNwZWNpZmllZCBsaXN0IChvcHRpb25h
bCkNCg0KICAgbW9kaWZ5LXBsdWdpbiAgICAgICAgc2V0cyBvbmUgb3IgbW9y
ZSBwbHVnaW4gcHJlZmVyZW5jZXMgZm9yIGEgbGlzdA0KICAgICAtcGwsIC0t
cGx1Z2luPU5BTUUgICAgIHRoZSBuYW1lIG9mIHRoZSBwbHVnaW4NCiAgICAg
LWwsIC0tbGlzdD1OQU1FfElEICAgICB0aGUgbmFtZSBvciBpZCBvZiBhIGxp
c3QNCiAgICAgLW0sIC0tbWVtYmVyPUVNQUlMfElEICBzZXQgdGhlIHBlcnNv
bmFsIHByZWZlcmVuY2Ugb2YgdGhpcyBtZW1iZXIgZm9yIHRoaXMgbGlzdCAo
b3B0aW9uYWwpDQogICAgIC1wciwgLS1wcmVmZXJlbmNlIEtFWT1WQUxVRQ0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHMgdGhlIHByb3BlcnR5
IEtFWSB0byBWQUxVRSAocmVwZWF0YWJsZSkNCg0KPWN1dA0KDQpCRUdJTnsN
Cg0KCSMjIyMjDQoJIw0KCSMgTWlzYyBzdHVmZg0KCSMNCgkjIyMjIw0KDQoJ
JENPTU1BTkRTeydjcmVhdGUtZGF0YWJhc2UnfSA9IHsNCglhY3Rpb24gPT4g
c3ViIHsNCgkJcmVxdWlyZSBTaWVzdGE6OkRCSTsNCgkJU2llc3RhOjpEQkkt
PmluaXRfZGI7DQoJfQ0KCX07DQoNCgkkQ09NTUFORFN7J3J1bi1tYXJpYWNo
aSd9ID0gew0KCWFjdGlvbiA9PiBzdWIgew0KCSAgICBmb3IgbXkgJGxpc3Qg
KCBtYXAgeyAkXy0+bmFtZSB9IFNpZXN0YTo6TGlzdC0+cmV0cmlldmVfYWxs
ICkgew0KCQkJbXkgJGlucHV0Ow0KCQkJbXkgJG91dHB1dDsNCgkJCXsNCgkJ
CQlubyB3YXJuaW5nczsNCgkJICAgICAgICAkaW5wdXQgID0gJFNpZXN0YTo6
Q29uZmlnOjpBUkNISVZFIC4gIi8kbGlzdCI7DQoJCSAgICAgICAgJG91dHB1
dCA9ICRTaWVzdGE6OkNvbmZpZzo6Uk9PVCAuICIvbWFyaWFjaGktaHRtbC8k
bGlzdCI7DQoJCQl9DQoJICAgICAgICBta3BhdGgoJG91dHB1dCk7DQoJICAg
ICAgICBwcmludCAiaW52b2tpbmcgbWFyaWFjaGkgZm9yICRsaXN0XG4iOw0K
CSAgICAgICAgc3lzdGVtICdtYXJpYWNoaScsICctaScsICRpbnB1dCwgJy1v
JywgJG91dHB1dCwgJy1uJywgJGxpc3Q7DQoJICAgIH0NCgl9DQoJfTsNCg0K
CSRDT01NQU5EU3snY3JlYXRlLWJhY2t1cCd9ID0gew0KCW9wdGlvbmFsID0+
IFtxdy8gbGlzdD1zIC9dLA0KCWFjdGlvbiA9PiBzdWIgew0KCQlteSAlb3B0
cyA9IEBfOw0KDQoJCW15IEBtZW1iZXJzOw0KCQlteSBAbGlzdHM7DQoJCQ0K
CQkjaGF2ZSB3ZSBiZWVuIHBhc3NlZCBhIGxpc3QNCgkJaWYgKGRlZmluZWQg
JG9wdHN7bGlzdH0pIHsNCgkJCW15ICRsaXN0ID0gU2llc3RhOjpMaXN0LT5s
b2FkKCRfKSANCgkJCSAgb3IgZGllICJjcmVhdGUtYmFja3VwOiBObyBzdWNo
IGxpc3QgJyRfJ1xuIjsNCgkJCXB1c2ggQGxpc3RzLCAkbGlzdDsNCgkJCUBt
ZW1iZXJzID0gJGxpc3QtPm1lbWJlcnMoKTsNCgkJDQoJCSMgb3RoZXJ3aXNl
IGRvIGV2ZXJ5dGhpbmcNCgkJfSBlbHNlIHsNCgkJCUBtZW1iZXJzID0gU2ll
c3RhOjpNZW1iZXItPnJldHJpZXZlX2FsbDsNCgkJCUBsaXN0cyAgID0gU2ll
c3RhOjpMaXN0LT5yZXRyZWl2ZV9hbGw7DQoJCX0NCg0KCQlwcmludCBTaWVz
dGEtPmJha2UoJ2JhY2t1cCcsDQoJCSAgICAgICAgICAgICAgICAgICAnbWVt
YmVycycgPT4gXEBtZW1iZXJzLA0KCQkgICAgICAgICAgICAgICAgICAgJ2xp
c3RzJyAgID0+IFxAbGlzdHMsDQoJCSAgICAgICAgICAgICAgICAgICAnc2hl
bGxxJyAgPT4gc3ViIHsgcmV0dXJuIHNoZWxsX3F1b3RlICRfWzBdIH0sDQoJ
CSAgICAgICAgICAgICAgICAgICk7DQoJfQ0KCX07IA0KDQoJIyMjIyMNCgkj
DQoJIyBMaXN0IHN0dWZmDQoJIw0KCSMjIyMjDQoNCg0KCSRDT01NQU5EU3sn
c2hvdy1saXN0cyd9ID0gew0KCWFjdGlvbiA9PiBzdWIgew0KCQlmb3JlYWNo
IG15ICRsaXN0ICggU2llc3RhOjpMaXN0LT5yZXRyaWV2ZV9hbGwgKSB7DQoJ
CQlwcmludCAkbGlzdC0+bmFtZSAuICJcbiI7DQoJCX0NCgl9DQoJfTsNCgkN
CgkkQ09NTUFORFN7J2NyZWF0ZS1saXN0J30gPSB7DQoJcmVxdWlyZWQgPT4g
W3F3LyBsaXN0PXMgb3duZXI9cyBwb3N0PXMgYm91bmNlPXMgL10sDQoJYWN0
aW9uID0+IHN1YiB7DQoJCW15ICVvcHRzID0gQF87DQoNCgkJbXkgJGxpc3Qg
PSBTaWVzdGE6Okxpc3QtPm5ldygNCgkJCW5hbWUgICAgICAgICA9PiAkb3B0
c3tsaXN0fSwNCgkJCW93bmVyICAgICAgICA9PiBTaWVzdGE6Ok1lbWJlci0+
ZmluZF9vcl9jcmVhdGUoeyBlbWFpbCA9PiAkb3B0c3tvd25lcn0gfSksDQoJ
CQlwb3N0X2FkZHJlc3MgPT4gJG9wdHN7cG9zdH0sDQoJCQlyZXR1cm5fcGF0
aCAgPT4gJG9wdHN7Ym91bmNlfSwNCgkJICAgKQ0KCQkgIG9yIGRpZSAiY3Jl
YXRlLWxpc3Q6IEZhaWxlZCB0byBjcmVhdGUgYSBuZXcgbGlzdFxuIjsNCg0K
CQkjIHNldCB1cCBkZWZhdWx0IHBsdWdpbiBxdWV1ZXMNCgkJJGxpc3QtPnNl
dF9wbHVnaW5zKCBwb3N0ICA9PiBxdyggQXJjaGl2ZSBTZW5kICkgKTsNCgkJ
JGxpc3QtPnNldF9wbHVnaW5zKCBzdWIgICA9PiBxdyggU3Vic2NyaWJlICkg
KTsNCgkJJGxpc3QtPnNldF9wbHVnaW5zKCB1bnN1YiA9PiBxdyggVW5TdWJz
Y3JpYmUgKSApOw0KDQoJCXByaW50ICJDcmVhdGVkIHRoZSBuZXcgbGlzdCAn
JG9wdHN7bGlzdH0nIDwkb3B0c3twb3N0fT5cbiI7DQoJCXByaW50ICJuYWNo
byBzaG93LWFsaWFzIHdpbGwgc2hvdyB5b3Ugd2hhdCB0byBpbmNsdWRlIGlu
IC9ldGMvYWxpYXNlc1xuIjsNCgl9DQoJfTsNCg0KCSRDT01NQU5EU3snc2hv
dy1hbGlhcyd9ID0gew0KCXJlcXVpcmVkID0+IFtxdy8gbGlzdD1zIC9dLA0K
CWFjdGlvbiA9PiBzdWIgew0KCQlteSAlb3B0cyA9IEBfOw0KDQoJCW15ICRs
aXN0ID0gU2llc3RhOjpMaXN0LT5sb2FkKCAkb3B0c3tsaXN0fSApDQoJCSAg
b3IgZGllICJzaG93LWFsaWFzOiBOb3QgYSB2YWxpZCBsaXN0IG5hbWUgb3Ig
aWRcbiI7DQoNCgkJcHJpbnQgJGxpc3QtPmFsaWFzKCduYWNobyAodGhlIHNp
ZXN0YSBjb25maWd1cmF0aW9uIHRvb2wpJyk7DQoJfQ0KCX07DQoNCgkkQ09N
TUFORFN7J2Rlc2NyaWJlLWxpc3QnfSA9IHsNCglyZXF1aXJlZCA9PiBbcXcv
IGxpc3Q9cyAvXSwNCglhY3Rpb24gPT4gc3ViIHsNCgkJbXkgJW9wdHMgPSBA
XzsNCg0KCQlteSAkbGlzdCA9IFNpZXN0YTo6TGlzdC0+bG9hZCggJG9wdHN7
bGlzdH0gKQ0KCQkgIG9yIGRpZSAiZGVzY3JpYmUtbGlzdDogTm90IGEgdmFs
aWQgbGlzdCBuYW1lIG9yIGlkXG4iOw0KCQkNCgkJZm9yZWFjaCBteSAka2V5
ICgkbGlzdC0+Y29sdW1ucykgew0KCQkJbXkgJHZhbHVlID0gJGxpc3QtPiRr
ZXkoKSB8fCAnJzsNCgkJCXByaW50ICIka2V5ID0gJHZhbHVlXG4iOw0KCQl9
DQoNCgkJZm9yIG15ICRxdWV1ZSAoJGxpc3QtPnF1ZXVlcykgeyANCgkJCXBy
aW50ICIkcXVldWUgcGx1Z2luczogIiwgam9pbiggJyAnLCBtYXAgeyAoJF8t
PnBlcnNvbmFsKT8gIisiLiRfLT5uYW1lOiRfLT5uYW1lICB9ICRsaXN0LT5w
bHVnaW5zKCAkcXVldWUgKSksICJcbiI7DQoJCX0NCgl9DQoJfTsNCg0KCSRD
T01NQU5EU3snbW9kaWZ5LWxpc3QnfSA9IHsNCglyZXF1aXJlZCA9PiBbcXcv
IGxpc3Q9cyBwcm9wZXJ0eT1zJSAvXSwNCglhY3Rpb24gPT4gc3ViIHsNCgkJ
bXkgJW9wdHMgPSBAXzsNCg0KCQlteSAkbGlzdCA9IFNpZXN0YTo6TGlzdC0+
bG9hZCggJG9wdHN7bGlzdH0gKQ0KCQkgIG9yIGRpZSAibW9kaWZ5LWxpc3Q6
IE5vdCBhIHZhbGlkIGxpc3QgbmFtZSBvciBpZFxuIjsNCg0KCQl3aGlsZSAo
bXkgKCRrZXksICR2YWx1ZSkgPSBlYWNoICV7JG9wdHN7cHJvcGVydHl9fSkg
ew0KCQkJbXkgJWZpZWxkcyA9IG1hcCB7ICRfID0+IDEgfSAkbGlzdC0+Y29s
dW1uczsNCgkJCWRpZSAibW9kaWZ5LWxpc3Q6ICcka2V5JyBpcyBub3QgYSB2
YWxpZCBwcm9wZXJ0eSAtIHZhbGlkIHByb3BlcnRpZXMgYXJlXG4iLA0KCQkJ
CShqb2luICJcbiIsJGxpc3QtPmNvbHVtbnMpLCJcbiIgdW5sZXNzICRmaWVs
ZHN7JGtleX07DQoNCgkJCSRsaXN0LT4ka2V5KCR2YWx1ZSk7DQoJCQlwcmlu
dCAiUHJvcGVydHkgJyRrZXknIHNldCB0byAnJHZhbHVlJyBmb3IgdGhlIGxp
c3QgJG9wdHN7bGlzdH1cbiI7DQoJCX0NCgl9DQoJfTsNCg0KCSRDT01NQU5E
U3snZGVsZXRlLWxpc3QnfSA9IHsNCglyZXF1aXJlZCA9PiBbcXcvIGxpc3Q9
cyAvXSwNCglhY3Rpb24gPT4gc3ViIHsNCgkJbXkgJW9wdHMgPSBAXzsNCg0K
CQlteSAkbGlzdCA9IFNpZXN0YTo6TGlzdC0+bG9hZCggJG9wdHN7bGlzdH0g
KQ0KCQkgIG9yIGRpZSAiZGVsZXRlLWxpc3Q6IE5vdCBhIHZhbGlkIGxpc3Qg
bmFtZSBvciBpZFxuIjsNCgkNCgkJIyBnb3NoLCBDbGFzczo6REJJIG1ha2Vz
IHRoaXMgZWFzeQ0KCQkkbGlzdC0+ZGVsZXRlOw0KCQkNCgkJcHJpbnQgIkxp
c3QgJyRvcHRze2xpc3R9JyBkZWxldGVkXG4iOw0KCX0NCgl9Ow0KDQoJJENP
TU1BTkRTeydzZXQtcGx1Z2lucyd9ID0gew0KCXJlcXVpcmVkID0+IFtxdy8g
bGlzdD1zIHF1ZXVlPXMgL10sDQoJb3B0aW9uYWwgPT4gW3F3LyBwbHVnaW49
c0AgL10sDQoJYWN0aW9uID0+IHN1YiB7DQoJCW15ICVvcHRzID0gQF87DQoN
CgkJbXkgJGxpc3QgPSBTaWVzdGE6Okxpc3QtPmxvYWQoICRvcHRze2xpc3R9
ICkNCgkJICBvciBkaWUgInNldC1wbHVnaW5zOiBOb3QgYSB2YWxpZCBsaXN0
IG5hbWUgb3IgaWRcbiI7DQoNCgkJJGxpc3QtPnNldF9wbHVnaW5zKCAkb3B0
c3txdWV1ZX0gPT4gQHskb3B0c3twbHVnaW59fSApDQoJCSAgb3IgZGllICJz
ZXQtcGx1Z2luczogU29ycnksIGNvdWxkbid0IGRvIHRoYXQgZm9yIHNvbWUg
cmVhc29uXG4iOw0KDQoJCXVubGVzcyAoQHskb3B0c3twbHVnaW59fSkgew0K
CQkJcHJpbnQgIkRlbGV0ZWQgcGx1Z2lucyBmcm9tICRvcHRze2xpc3R9XG4i
Ow0KCQkJcmV0dXJuOw0KCQl9DQoJfQ0KCX07DQoNCgkkQ09NTUFORFN7J2Fk
ZC1tZW1iZXInfSA9IHsNCglyZXF1aXJlZCA9PiBbcXcvIGxpc3Q9cyBtZW1i
ZXI9c0AgL10sDQoJYWN0aW9uID0+IHN1YiB7DQoJCW15ICVvcHRzID0gQF87
DQoNCgkJbXkgJGxpc3QgPSBTaWVzdGE6Okxpc3QtPmxvYWQoICRvcHRze2xp
c3R9ICkNCgkJICBvciBkaWUgImFkZC1tZW1iZXI6IE5vdCBhIHZhbGlkIGxp
c3QgbmFtZSBvciBpZFxuIjsNCg0KCQlmb3IgbXkgJG1lbWJlcl9pZCAoQHsk
b3B0c3ttZW1iZXJ9fSkgew0KCQkJbXkgJG1lbWJlciA9IFNpZXN0YTo6TWVt
YmVyLT5maW5kX29yX2NyZWF0ZSh7IGVtYWlsID0+ICRtZW1iZXJfaWQgfSkN
CgkJCSAgb3IgZGllICJhZGQtbWVtYmVyOiBDb3VsZG4ndCBnZXQvY3JlYXRl
IGEgbWVtYmVyICckbWVtYmVyX2lkJ1xuIjsNCg0KCQkJJGxpc3QtPmFkZF9t
ZW1iZXIoJG1lbWJlcik7DQoJCQlwcmludCAiTWVtYmVyIDwiLiRtZW1iZXIt
PmVtYWlsLiI+ICgiLiRtZW1iZXItPmlkLiIpIGFkZGVkIHRvIGxpc3QgJyRv
cHRze2xpc3R9J1xuIjsNCgkJfTsNCgl9DQoJfTsNCg0KCSRDT01NQU5EU3sn
cmVtb3ZlLW1lbWJlcid9ID0gew0KCXJlcXVpcmVkID0+IFtxdy8gbGlzdD1z
IG1lbWJlcj1zQCAvXSwNCglhY3Rpb24gPT4gc3ViIHsNCgkJbXkgJW9wdHMg
PSBAXzsNCg0KCQlteSAkbGlzdCA9IFNpZXN0YTo6TGlzdC0+bG9hZCggJG9w
dHN7bGlzdH0gKQ0KCQkgIG9yIGRpZSAicmVtb3ZlLW1lbWJlcjogTm90IGEg
dmFsaWQgbGlzdCBuYW1lIG9yIGlkXG4iOw0KDQoJCWZvciBteSAkbWVtYmVy
X2lkIChAeyRvcHRze21lbWJlcn19KSB7DQoJCQlteSAkbWVtYmVyID0gU2ll
c3RhOjpNZW1iZXItPmxvYWQoJG1lbWJlcl9pZCkNCgkJCSAgb3IgZGllICJy
ZW1vdmUtbWVtYmVyOiAkbWVtYmVyX2lkIGlzIG5vdCBhIHZhbGlkIG1lbWJl
ciBpZFxuIjsNCgkJCQ0KCQkJJGxpc3QtPnJlbW92ZV9tZW1iZXIoJG1lbWJl
cik7DQoJCQlwcmludCAiTWVtYmVyICckbWVtYmVyX2lkJyByZW1vdmVkIGZy
b20gbGlzdCAnJG9wdHN7bGlzdH0nXG4iOw0KCQl9Ow0KCX0NCgl9Ow0KDQoJ
IyMjIyMNCgkjDQoJIyBNZW1iZXIgc3R1ZmYNCgkjDQoJIyMjIyMNCg0KDQoJ
JENPTU1BTkRTeydzaG93LW1lbWJlcnMnfSA9IHsNCglvcHRpb25hbCA9PiBb
cXcvIGxpc3Q9c0AgL10sDQoJYWN0aW9uID0+IHN1YiB7DQoJCW15ICVvcHRz
ID0gQF87DQoNCgkJaWYgKCFkZWZpbmVkICRvcHRze2xpc3R9KSB7DQoJCQlw
cmludCAiQWxsIG1lbWJlcnMgZm9yIHN5c3RlbTpcbiI7DQoJCQlmb3JlYWNo
IG15ICRtZW1iZXIgKCBTaWVzdGE6Ok1lbWJlci0+cmV0cmlldmVfYWxsICkg
ew0KCQkJCXByaW50ICRtZW1iZXItPmVtYWlsLCAiXG4iOw0KCQkJfQ0KCQkJ
cmV0dXJuOw0KCQl9IGVsc2Ugew0KCQkJZm9yIChAeyRvcHRze2xpc3R9fSkg
ew0KCQkJCW15ICRsaXN0ID0gU2llc3RhOjpMaXN0LT5sb2FkKCRfKQ0KCQkJ
CSAgb3IgZGllICJzaG93LW1lbWJlcnM6IE5vIGxpc3QgJyRfJyFcbiI7DQoJ
CQkJcHJpbnQgIk1lbWJlcnMgb2YgJF86XG4iOw0KCQ0KCQkJCWZvcmVhY2gg
bXkgJG1lbWJlciAoJGxpc3QtPm1lbWJlcnMpIHsNCgkJCQkJcHJpbnQgJG1l
bWJlci0+ZW1haWwsICJcbiI7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJfQ0KCX07
DQoNCgkkQ09NTUFORFN7J2NyZWF0ZS1tZW1iZXInfSA9IHsNCglyZXF1aXJl
ZCA9PiBbcXcvIG1lbWJlcj1zQCAvXSwNCglhY3Rpb24gPT4gc3ViIHsNCgkJ
bXkgJW9wdHMgPSBAXzsNCg0KCQlmb3IgbXkgJG1lbWJlcl9pZCAoQHskb3B0
c3ttZW1iZXJ9fSkgew0KCQkJbXkgJG1lbWJlciA9IFNpZXN0YTo6TWVtYmVy
LT5maW5kX29yX2NyZWF0ZSh7IGVtYWlsID0+ICRtZW1iZXJfaWQgfSkNCgkJ
CSAgb3IgZGllICJhZGQtbWVtYmVyOiBDb3VsZG4ndCBjcmVhdGUgYSBtZW1i
ZXIgJyRtZW1iZXJfaWQnXG4iOw0KDQoJCQlwcmludCAiTWVtYmVyICRtZW1i
ZXJfaWQgYWRkZWRcbiI7DQoJCX0NCgl9DQoJfTsNCg0KCSRDT01NQU5EU3sn
ZGVzY3JpYmUtbWVtYmVyJ30gPSB7DQoJcmVxdWlyZWQgPT4gW3F3LyBtZW1i
ZXI9cyAvXSwNCglhY3Rpb24gPT4gc3ViIHsNCgkJbXkgJW9wdHMgPSBAXzsN
Cg0KCQlteSAkbWVtYmVyID0gU2llc3RhOjpNZW1iZXItPmxvYWQoJG9wdHN7
bWVtYmVyfSkgDQoJCSAgb3IgZGllICJkZXNjcmliZS1tZW1iZXI6ICRvcHRz
e21lbWJlcn0gaXMgbm90IGEgdmFsaWQgbWVtYmVyIGlkXG4iOw0KDQoJCWZv
cmVhY2ggbXkgJGtleSAoJG1lbWJlci0+Y29sdW1ucykgew0KCQkJbXkgJHZh
bHVlID0gJG1lbWJlci0+JGtleSgpIHx8ICcnOw0KCQkJcHJpbnQgIiRrZXkg
PSAkdmFsdWVcbiI7DQoJCX0NCg0KCQlwcmludCAiU3Vic2NyaWJlZCB0byA6
ICIsIChqb2luICIsICIsIG1hcCB7ICRfLT5uYW1lIH0gJG1lbWJlci0+bGlz
dHMpLCAiXG4iOw0KCX0NCgl9Ow0KDQoJJENPTU1BTkRTeydtb2RpZnktbWVt
YmVyJ30gPSB7DQoJcmVxdWlyZWQgPT4gW3F3LyBtZW1iZXI9cyBwcm9wZXJ0
eT1zJSAvXSwNCglhY3Rpb24gPT4gc3ViIHsNCgkJbXkgJW9wdHMgPSBAXzsN
Cg0KCQlteSAkbWVtYmVyID0gU2llc3RhOjpNZW1iZXItPmxvYWQoICRvcHRz
e21lbWJlcn0gKQ0KCQkgIG9yIGRpZSAibW9kaWZ5LW1lbWJlcjogTm90IGEg
dmFsaWQgbWVtYmVyIGlkXG4iOw0KDQoJCXdoaWxlIChteSAoJGtleSwgJHZh
bHVlKSA9IGVhY2ggJXskb3B0c3twcm9wZXJ0eX19KSB7DQoJCQlteSAlZmll
bGRzID0gbWFwIHsgJF8gPT4gMSB9ICRtZW1iZXItPmNvbHVtbnM7DQoJCQlk
aWUgIm1vZGlmeS1tZW1iZXI6ICcka2V5JyBpcyBub3QgYSB2YWxpZCBwcm9w
ZXJ0eSAtIHZhbGlkIHByb3BlcnRpZXMgYXJlXG4iLA0KCQkJCShqb2luICJc
biIsJG1lbWJlci0+Y29sdW1ucyksIlxuIiB1bmxlc3MgJGZpZWxkc3ska2V5
fTsNCg0KCQkJJG1lbWJlci0+JGtleSgkdmFsdWUpOw0KCQkJcHJpbnQgIlBy
b3BlcnR5ICcka2V5JyBzZXQgdG8gJyR2YWx1ZScgZm9yIHRoZSBtZW1iZXIg
JG9wdHN7bWVtYmVyfVxuIjsNCgkJfQ0KCX0NCgl9Ow0KDQoJJENPTU1BTkRT
eydkZWxldGUtbWVtYmVyJ30gPSB7DQoJcmVxdWlyZWQgPT4gW3F3LyBtZW1i
ZXI9c0AgL10sDQoJYWN0aW9uID0+IHN1YiB7DQoJCW15ICVvcHRzID0gQF87
DQoNCgkJZm9yZWFjaCBteSAkbWVtYmVyX2lkIChAeyRvcHRze21lbWJlcn19
KSB7DQoJCQlteSAkbWVtYmVyID0gU2llc3RhOjpNZW1iZXItPmxvYWQoJG1l
bWJlcl9pZCkNCgkJCSAgb3IgZGllICJkZWxldGUtbWVtYmVyOiAkbWVtYmVy
X2lkIGlzIG5vdCBhIHZhbGlkIG1lbWJlciBpZFxuIjsNCgkJCQ0KCQkJZm9y
ZWFjaCBteSAkbGlzdCAoIFNpZXN0YTo6TGlzdC0+cmV0cmlldmVfYWxsICkg
ew0KCQkJCSRsaXN0LT5yZW1vdmVfbWVtYmVyKCRtZW1iZXIpOw0KCQkJfQ0K
DQoJCQkkbWVtYmVyLT5kZWxldGU7DQoNCgkJCXByaW50ICJNZW1iZXIgJyRt
ZW1iZXJfaWQnIGRlbGV0ZWRcbiI7DQoJCX0NCgl9DQoJfTsNCg0KCSMjIyMj
DQoJIw0KCSMgUGx1Z2luIHN0dWZmDQoJIw0KCSMjIyMjDQoNCg0KCSRDT01N
QU5EU3snc2hvdy1wbHVnaW5zJ30gPSB7DQoJb3B0aW9uYWwgPT4gW3F3LyBs
aXN0PXNAIC9dLA0KCWFjdGlvbiA9PiBzdWIgew0KCQlteSAlb3B0cyA9IEBf
Ow0KDQoJCWlmICghZGVmaW5lZCAkb3B0c3tsaXN0fSkgew0KCQkJcHJpbnQg
IlRoaXMgc3lzdGVtIGN1cnJlbnRseSBoYXMgdGhlc2UgcGx1Z2lucyBpbnN0
YWxsZWQ6IFxuXG4iOw0KCQkJZm9yZWFjaCBteSAkbmFtZSAoIFNpZXN0YS0+
YXZhaWxhYmxlX3BsdWdpbnMgKSB7DQoJCQkJbXkgJHAgPSAiU2llc3RhOjpQ
bHVnaW46OiRuYW1lIjsNCgkJCQkkcC0+cmVxdWlyZTsNCgkJCQlwcmludGYg
IiVzXG4gLVxuICVzXG5cbiIsICRuYW1lLCAkcC0+ZGVzY3JpcHRpb247DQoJ
CQl9DQoJCX0gZWxzZSB7DQoJCQlmb3IgKEB7JG9wdHN7bGlzdH19KSB7DQoJ
CQkJbXkgJGxpc3QgPSBTaWVzdGE6Okxpc3QtPmxvYWQoJF8pDQoJCQkJICBv
ciBkaWUgInNob3ctcGx1Z2luczogTm8gbGlzdCAnJF8nIVxuIjsNCgkJCQlw
cmludCAiUGx1Z2lucyBmb3IgJF86XG4iOw0KCQkJCWZvcmVhY2ggbXkgJHBs
dWdpbiAoJGxpc3QtPnBsdWdpbnMoJ3Bvc3QnKSkgew0KCQkJCQlwcmludCAk
cGx1Z2luLT5uYW1lLCAiXG4iOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCgl9
Ow0KDQoJJENPTU1BTkRTeydkZXNjcmliZS1wbHVnaW4nfSA9IHsNCglyZXF1
aXJlZCA9PiBbcXcvIHBsdWdpbj1zIC9dLA0KCW9wdGlvbmFsID0+IFtxdy8g
bGlzdD1zIG1lbWJlcj1zIC9dLA0KCWRlcGVuZGVuY2llcyA9PiB7IG1lbWJl
ciA9PiAnbGlzdCcgfSwNCglhY3Rpb24gPT4gc3ViIHsNCgkJbXkgJW9wdHMg
PSBAXzsNCg0KCQlpZiAoZGVmaW5lZCAkb3B0c3tsaXN0fSkgew0KCQkJX3Bs
dWdpbl9saXN0X29wdGlvbnMoJW9wdHMpOw0KCQl9IGVsc2Ugew0KCQkJX3Bs
dWdpbl9vcHRpb25zKCRvcHRze3BsdWdpbn0pOw0KCQl9DQoJfQ0KCX07DQoN
CgkkQ09NTUFORFN7J21vZGlmeS1wbHVnaW4nfSA9IHsNCglyZXF1aXJlZCA9
PiBbcXcvIHBsdWdpbj1zIGxpc3Q9cyAvXSwNCglvcHRpb25hbCA9PiBbcXcv
IG1lbWJlcj1zIHByZWZlcmVuY2U9cyUgL10sDQoJYWN0aW9uID0+IHN1YiB7
DQoJCW15ICVvcHRzID0gQF87DQoNCgkJbXkgJGxpc3QgPSBTaWVzdGE6Okxp
c3QtPmxvYWQoJG9wdHN7bGlzdH0pDQoJCSAgb3IgZGllICJtb2RpZnktcGx1
Z2luOiBOb3QgYSB2YWxpZCBsaXN0ICRvcHRze2xpc3R9XG4iOw0KDQoJCW15
ICVwbHVnaW5zID0gbWFwIHsgJF8tPm5hbWUgPT4gJF8gfSAkbGlzdC0+cGx1
Z2luczsNCgkJbXkgJHBsdWdpbiAgPSAkcGx1Z2luc3skb3B0c3twbHVnaW59
fQ0KCQkgIG9yIGRpZSAibW9kaWZ5LXBsdWdpbjogTm90IGEgdmFsaWQgcGx1
Z2luICRvcHRze3BsdWdpbn1cbiI7DQoNCgkJbXkgJG1lbWJlcjsNCgkJaWYg
KGRlZmluZWQgJG9wdHN7bWVtYmVyfSkgew0KCQkJJG1lbWJlciA9IFNpZXN0
YTo6TWVtYmVyLT5sb2FkKCRvcHRze21lbWJlcn0pDQoJCQkgIG9yIGRpZSAi
bW9kaWZ5LXBsdWdpbjogTm8gc3VjaCBtZW1iZXIgJG9wdHN7bWVtYmVyfVxu
IjsNCg0KCQkJZGllICJtb2RpZnktcGx1Z2luOiAkb3B0c3ttZW1iZXJ9IGlz
IG5vdCBzdWJzY3JpYmVkIHRvICRvcHRze2xpc3R9XG4iDQoJCQkgIHVubGVz
cyAkbGlzdC0+aXNfbWVtYmVyKCRtZW1iZXIpOw0KDQoJCQkkcGx1Z2luLT5t
ZW1iZXIoJG1lbWJlcik7DQoJCX0NCg0KCQl3aGlsZSAobXkgKCRrZXksICR2
YWx1ZSkgPSBlYWNoICV7JG9wdHN7cHJlZmVyZW5jZX19KSB7DQoJCQkkcGx1
Z2luLT5wcmVmKCRrZXksICR2YWx1ZSk7DQoJCX0NCg0KCQlteSAkb3B0aW9u
cyA9ICRwbHVnaW4tPm9wdGlvbnM7DQoNCgkJaWYgKGRlZmluZWQgJG1lbWJl
cikgew0KCQkJcHJpbnRmICJQZXJzb25hbCBwcmVmZXJlbmNlcyBmb3IgbWVt
YmVyICVzIG9uIGxpc3QgJXNcbiIsDQoJCQkgICRvcHRze21lbWJlcn0sICRv
cHRze2xpc3R9Ow0KCQl9IGVsc2Ugew0KCQkJcHJpbnRmICJQcmVmZXJlbmNl
cyBmb3IgbGlzdCAlc1xuIiwgJG9wdHN7bGlzdH07DQoJCX0NCg0KCQlmb3Jl
YWNoIG15ICRvcHRpb24gKCBrZXlzICV7JG9wdGlvbnN9ICkgew0KCQkJcHJp
bnQgIiAtICIsICRvcHRpb24sICIgOiAiLCAkcGx1Z2luLT5wcmVmKCRvcHRp
b24pLCAiXG4iOw0KCQl9DQoJfQ0KCX07DQoNCglhcmd2RmlsZTsNCg0KfQ0K
DQpzdWIgX3BsdWdpbl9vcHRpb25zIHsNCglteSAkcGx1Z2luX2lkID0gc2hp
ZnQ7DQoNCiAgICBteSAlcGx1Z2lucyA9IG1hcCB7ICRfID0+IDEgfSBTaWVz
dGEtPmF2YWlsYWJsZV9wbHVnaW5zOw0KDQogICAgZGllICJkZXNjcmliZS1w
bHVnaW46IE5vdCBhIHZhbGlkIHBsdWdpblxuIiB1bmxlc3MgJHBsdWdpbnN7
JHBsdWdpbl9pZH07DQoNCiAgICBteSAkY2xhc3MgPSAiU2llc3RhOjpQbHVn
aW46OiRwbHVnaW5faWQiOw0KICAgICRjbGFzcy0+cmVxdWlyZTsNCg0KICAg
IG15ICRvcHRpb25zID0gJGNsYXNzLT5vcHRpb25zOw0KDQogICAgcHJpbnQg
IlxuXG5UaGUgcGx1Z2luICRwbHVnaW5faWQgaGFzIHRoZSBmb2xsb3dpbmcg
b3B0aW9ucyA6XG4iOw0KICAgIGZvcmVhY2ggbXkgJG9wdGlvbiAoIGtleXMg
JXskb3B0aW9uc30gKSB7DQogICAgICAgIHByaW50ICIgLSAiLCAkb3B0aW9u
LCAiIDogIiwgJG9wdGlvbnMtPnskb3B0aW9ufS0+e2Rlc2NyaXB0aW9ufSwg
IlxuIjsNCiAgICB9DQogICAgcHJpbnQgIlxuIjsNCn0NCg0Kc3ViIF9wbHVn
aW5fbGlzdF9vcHRpb25zIHsNCglteSAlb3B0cyA9IEBfOw0KDQogICAgbXkg
JGxpc3QgPSBTaWVzdGE6Okxpc3QtPmxvYWQoJG9wdHN7bGlzdH0pDQogICAg
ICBvciBkaWUgImRlc2NyaWJlLXBsdWdpbjogTm90IGEgdmFsaWQgbGlzdCAk
b3B0c3tsaXN0fVxuIjsNCg0KICAgIG15ICVwbHVnaW5zID0gbWFwIHsgJF8t
Pm5hbWUgPT4gJF8gfSAkbGlzdC0+cGx1Z2luczsNCiAgICBteSAkcGx1Z2lu
ICA9ICRwbHVnaW5zeyRvcHRze3BsdWdpbn19DQogICAgICBvciBkaWUgImRl
c2NyaWJlLXBsdWdpbjogVGhhdCBwbHVnaW4gaXMgbm90IHVzZWQgaW4gdGhl
IGxpc3QgJyRvcHRze2xpc3R9J1xuIjsNCg0KDQogICAgbXkgJG1lbWJlcjsN
CiAgICBpZiAoZGVmaW5lZCAkb3B0c3ttZW1iZXJ9KSB7DQogICAgICAgICRt
ZW1iZXIgPSBTaWVzdGE6Ok1lbWJlci0+bG9hZCgkb3B0c3ttZW1iZXJ9KQ0K
ICAgICAgICAgIG9yIGRpZSAiZGVzY3JpYmUtcGx1Z2luOiBOb3QgYSB2YWxp
ZCBtZW1iZXIgaWRcbiI7DQoNCiAgICAgICAgZGllICJkZXNjcmliZS1wbHVn
aW46ICRvcHRze21lbWJlcn0gaXMgbm90IHN1YnNjcmliZWQgdG8gJG9wdHN7
bGlzdH1cbiINCiAgICAgICAgICB1bmxlc3MgJGxpc3QtPmlzX21lbWJlcigk
bWVtYmVyKTsNCg0KICAgICAgICAkcGx1Z2luLT5tZW1iZXIoJG1lbWJlcik7
DQogICAgfQ0KDQogICAgbXkgJG9wdGlvbnMgPSAkcGx1Z2luLT5vcHRpb25z
Ow0KDQogICAgaWYgKGRlZmluZWQgJG1lbWJlcikgew0KICAgICAgICBwcmlu
dGYgIlBlcnNvbmFsIHByZWZlcmVuY2VzIGZvciBtZW1iZXIgJXMgb24gbGlz
dCAlc1xuIiwgJG9wdHN7bWVtYmVyfSwgJG9wdHN7bGlzdH07DQogICAgfQ0K
ICAgIGVsc2Ugew0KICAgICAgICBwcmludGYgIlByZWZlcmVuY2VzIGZvciBs
aXN0ICVzXG4iLCAkb3B0c3tsaXN0fTsNCiAgICB9DQoNCiAgICBmb3JlYWNo
IG15ICRvcHRpb24gKCBrZXlzICV7JG9wdGlvbnN9ICkgew0KICAgICAgICBw
cmludCAiIC0gIiwgJG9wdGlvbiwgIiA6ICIsICRwbHVnaW4tPnByZWYoJG9w
dGlvbiksICJcbiI7DQogICAgfQ0KICAgICAgICBwcmludCAkcGx1Z2luLT5u
YW1lLCIgaXMgc2V0IHBlcnNvbmFsXG4iIGlmICRwbHVnaW4tPnBlcnNvbmFs
KCk7DQp9DQoNCiMjIyMjDQojDQojIERpc3BhdGNoIHN0dWZmDQojDQojIyMj
Iw0KDQoNCnVzZSBHZXRvcHQ6OkF1dG8gKA0KCW1hcCB7IG15ICRuYW1lID0g
JF87IFsgJG5hbWUsICcnLCBzdWIgeyBydW4oJG5hbWUpIH0gXSB9IA0KCQlr
ZXlzICVDT01NQU5EUw0KKTsNCg0KQkVHSU57DQoJbm8gd2FybmluZ3M7DQoJ
KkdldG9wdDo6QXV0bzo6aGVscG1lID0gXCZoZWxwbWU7DQoJKkdldG9wdDo6
QXV0bzo6dW5yZWNvZ25pemVkID0gXCZ1bnJlY29nbml6ZWQ7DQp9DQoNCnVz
ZSBTaWVzdGE6OkNvbmZpZzsNCkJFR0lOew0KCW15ICRkYXRhYmFzZTsNCglt
eSAkY29uZmlnOw0KDQoJR2V0b3B0OjpMb25nOjpDb25maWd1cmUgKCJwYXNz
X3Rocm91Z2giKTsNCglHZXRPcHRpb25zKCdkYXRhYmFzZT1zJyA9PiBcJGRh
dGFiYXNlLA0KICAgICAgICAgICAgICAgJ2NvbmZpZy1maWxlfGY9cycgPT4g
XCRjb25maWcpIG9yIGhlbHBtZSgwKTsNCg0KCUBTaWVzdGE6OkNvbmZpZzo6
U1RPUkFHRSA9IHNwbGl0IC8gLywgJGRhdGFiYXNlIGlmIGRlZmluZWQgJGRh
dGFiYXNlOw0KCSRTaWVzdGE6OkNvbmZpZzo6Q09ORklHX0ZJTEUgPSAkY29u
ZmlnIGlmIGRlZmluZWQgJGNvbmZpZzsNCn0NCg0Kc3ViIHJ1biB7DQoJbXkg
JGNvbW1hbmQgPSBzaGlmdDsNCgkNCglpZiAoJGNvbW1hbmQgbmUgImNyZWF0
ZS1kYXRhYmFzZSIpIHsNCgkJZXZhbCB7DQoJCQlyZXF1aXJlIFNpZXN0YTsN
CgkJCXJlcXVpcmUgU2llc3RhOjpMaXN0Ow0KCQl9Ow0KCQlpZiAoJEApIHsN
CgkJCXByaW50ICJFcnJvciBpbml0aWFsaXppbmcgU2llc3RhOlxuJEBcbiI7
DQoJCQlwcmludCAiXG5cblRyeSAnbmFjaG8gY3JlYXRlLWRhdGFiYXNlJyBp
ZiB5b3UgYXJlIGluc3RhbGxpbmcgc2llc3RhIGZvciB0aGUgZmlyc3QgdGlt
ZVxuIjsNCgkJCWV4aXQ7DQoJCX0NCgl9DQoNCglteSAlaCA9ICgpOw0KCW15
IEBvcHRpb25zID0gZ3JlcCB7IGRlZmluZWQgfSAoDQoJCUB7JENPTU1BTkRT
eyRjb21tYW5kfXtyZXF1aXJlZH19LCANCgkJQHskQ09NTUFORFN7JGNvbW1h
bmR9e29wdGlvbmFsfX0NCgkpOw0KCQ0KCUdldG9wdDo6TG9uZzo6Q29uZmln
dXJlICgicmVxdWlyZV9vcmRlciIpOw0KCUdldE9wdGlvbnMoXCVoLCBAb3B0
aW9ucykgb3IgaGVscG1lKDApOw0KDQoJbXkgQG1pc3Npbmc7DQoJZm9yIG15
ICRyZXF1aXJlZCAoQHskQ09NTUFORFN7JGNvbW1hbmR9e3JlcXVpcmVkfX0p
IHsNCgkJbXkgJHJlcXVpcmVkMiA9ICRyZXF1aXJlZDsNCgkJJHJlcXVpcmVk
MiA9fiBzL1teYS16QS1aXS4qLy87DQoJCXB1c2ggQG1pc3NpbmcsICRyZXF1
aXJlZDIgaWYgIWRlZmluZWQgJGh7JHJlcXVpcmVkMn07DQoJfQ0KCXdoaWxl
IChteSAoJGtleSwgJHZhbHVlKSA9IGVhY2ggJXskQ09NTUFORFN7JGNvbW1h
bmR9e2RlcGVuZGVuY2llc319ICkgew0KCQlwdXNoIEBtaXNzaW5nLCAkdmFs
dWUgaWYgZGVmaW5lZCAkaHska2V5fSBhbmQgIWRlZmluZWQgJGh7JHZhbHVl
fTsNCgl9DQoJaWYgKHNjYWxhciBAbWlzc2luZykgew0KCQlsb2NhbCAkIiA9
ICIsICI7DQoJCXByaW50ICJUaGUgZm9sbG93aW5nIG9wdGlvbnMgdG8gdGhl
IGNvbW1hbmQgJGNvbW1hbmQgYXJlIG1pc3Npbmc6XG4iOw0KCQlwcmludCAi
ICAgICIgLiAiQG1pc3NpbmdcbiI7DQoJCWV4aXQoMik7DQoJfQ0KDQoJZXZh
bCB7ICRDT01NQU5EU3skY29tbWFuZH17YWN0aW9ufS0+KCVoKTsgfTsNCglp
ZiAoJEApIHsNCgkJcHJpbnQgJEA7DQoJCXJldHVybiAwOw0KCX0NCg0KCXBy
aW50ICIjIyMjIyMjIyMjIyMjIyMjI1xuIjsNCglwcmludCAiIyMgZW5kIG9m
IGNvbW1hbmRcbiI7DQoJcHJpbnQgIiMjIyMjIyMjIyMjIyMjIyMjXG4iOw0K
DQoJcmV0dXJuIDEgaWYgc2NhbGFyIEBBUkdWICE9IDA7DQp9DQoNCnN1YiB1
bnJlY29nbml6ZWQgew0KICAgIG15ICRjb21tYW5kID0gc2hpZnQ7DQoNCiAg
ICBwcmludCBTVERFUlIgIlVucmVjb2duaXNlZCBjb21tYW5kICRjb21tYW5k
XG4iOw0KICAgIGhlbHBtZSgwKTsNCn0NCg0KIyMjIyMNCiMNCiMgSGVscCBz
dHVmZg0KIw0KIyMjIyMNCg0KDQpzdWIgaGVscG1lIHsNCglteSAkdmVyYm9z
aXR5ID0gc2hpZnQ7DQoJDQoJJHZlcmJvc2l0eSA9IDEgaWYgIWRlZmluZWQg
JHZlcmJvc2l0eTsNCg0KCXBvZDJ1c2FnZSgtdmVyYm9zZSA9PiAkdmVyYm9z
aXR5KTsNCn0NCg0Kc3ViIGRlZmF1bHQgew0KCWhlbHBtZSgwKTsNCn0NCg0K
PWhlYWQxIFNFRSBBTFNPDQoNCkw8U2llc3RhPiwgTDxTaWVzdGE6OlVzZXJH
dWlkZT4NCg0KPWhlYWQxIEFVVEhPUg0KDQpXcml0dGVuIGJ5IFNpbW9uIFdp
c3RvbiA8c2ltb25AdGhlZ2VzdGFsdC5vcmc+DQoNCk5ldyBkaXNwYXRjaCBj
b2RlIHdyaXR0ZW4gYnkgSm9keSBCZWxrYSA8YmVsa2FqbS1jcGFuQGFhcmR2
YXJrLXNzLmNvbT4NCg0KPWhlYWQxIENPUFlSSUdIVA0KDQooQylvcHlyaWdo
dCAyMDAyIHRoZSBTaWVzdGEgZGV2IHRlYW0uDQoNCkRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBzYW1lIHRlcm1zIGFzIFBlcmwgaXRzZWxmLg0KDQo9Y3V0DQoN
Cg==
---1463760359-316734986-1059752961=:5155
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="Auto.pm"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.44.0308011649211.5155@xxxx.xxxx.xxxxxxxxxxx.xxx>
Content-Description: modified Getopt::Auto
Content-Disposition: ATTACHMENT; FILENAME="Auto.pm"

cGFja2FnZSBHZXRvcHQ6OkF1dG87DQoNCnVzZSA1LjAwNjsNCnVzZSBzdHJp
Y3Q7DQp1c2Ugd2FybmluZ3M7DQp1c2UgQ2FycDsNCm91ciAkVkVSU0lPTiA9
ICcxLjAwJzsNCg0Kb3VyICRkb19pdDsNCm91ciBAc3BlYzsNCg0Kc3ViIGlt
cG9ydCB7DQogICAgbXkgJGNsYXNzID0gc2hpZnQ7DQoNCiAgICAjIFByb2Nl
c3MgaW50byB1c2FibGUgZm9ybWF0Lg0KICAgIEBzcGVjID0gQF87DQp9DQoN
Cm91ciAlb3B0aW9uczsNCm91ciAkdHlwZTsNCg0KQ0hFQ0sgew0KICAgIEBz
cGVjID0gc3VwZXJhdXRvKCkNCiAgICAgIHVubGVzcyBAc3BlYzsNCg0KICAg
IGZvciAoQHNwZWMpIHsNCiAgICAgICAgY3JvYWsgIk9wdGlvbiBzcGVjaWZp
Y2F0aW9uICRfIHNob3VsZCBiZSBhbiBhcnJheSByZWZlcmVuY2UiDQogICAg
ICAgICAgdW5sZXNzIHJlZiAkXyBlcSAiQVJSQVkiOw0KICAgICAgICBteSBA
c3R1ZmYgPSBAJF87DQogICAgICAgIG15ICRmbGFnICA9IHNoaWZ0IEBzdHVm
ZjsNCiAgICAgICAgaWYgKGRlZmluZWQgJHR5cGUpIHsNCiAgICAgICAgICAg
IGNyb2FrDQogICAgICAgICAgICAgICJPcHRpb24gaW5jb25zaXN0ZW5jeTog
ZXhwZWN0ZWQgJHR5cGUgb3B0aW9ucywgZm91bmQgJyRmbGFnJyINCiAgICAg
ICAgICAgICAgdW5sZXNzIF90eXBlKCRmbGFnKSBlcSAkdHlwZTsNCiAgICAg
ICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgJHR5cGUgPSBfdHlwZSgkZmxh
Zyk7DQogICAgICAgICAgICBjcm9haw0KIk9wdGlvbiBzdHlsZSB1bmtub3du
OiBmb3VuZCAnJGZsYWcnLCBuZWl0aGVyIGxvbmcsIHNob3J0IG5vciBiYXJl
Ig0KICAgICAgICAgICAgICBpZiAkdHlwZSBlcSAidW5rbm93biI7DQogICAg
ICAgIH0NCg0KICAgICAgICAkb3B0aW9uc3skZmxhZ317aGVscH0gPSBzaGlm
dCBAc3R1ZmY7DQoNCiAgICAgICAgaWYgKGRlZmluZWQgJHN0dWZmWzBdIGFu
ZCByZWYgJHN0dWZmWzBdIGVxICJDT0RFIikgew0KICAgICAgICAgICAgJG9w
dGlvbnN7JGZsYWd9e2NvZGV9ID0gc2hpZnQgQHN0dWZmOw0KICAgICAgICAg
IH0gZWxzZSB7DQogICAgICAgICAgICAkb3B0aW9uc3skZmxhZ317bG9uZ2hl
bHB9ID0gc2hpZnQgQHN0dWZmIGlmIGRlZmluZWQgJHN0dWZmWzBdOw0KICAg
ICAgICAgICAgJG9wdGlvbnN7JGZsYWd9e2NvZGV9ICAgICA9IHNoaWZ0IEBz
dHVmZg0KICAgICAgICAgICAgICBpZiBkZWZpbmVkICRzdHVmZlswXSBhbmQg
cmVmICRzdHVmZlswXSBlcSAiQ09ERSI7DQogICAgICAgIH0NCg0KICAgICAg
ICBpZiAoIWV4aXN0cyAkb3B0aW9uc3skZmxhZ317Y29kZX0pIHsNCiAgICAg
ICAgICAgIG15ICRzdWIgPSAkZmxhZzsNCiAgICAgICAgICAgICRzdWIgPX4g
cy9eLSsvLzsNCiAgICAgICAgICAgICRzdWIgPX4gcy8tL18vZzsNCiAgICAg
ICAgICAgIG5vIHN0cmljdCAncmVmcyc7DQogICAgICAgICAgICAkb3B0aW9u
c3skZmxhZ317Y29kZX0gPSAqeyJtYWluOjokc3ViIn17Q09ERX07DQogICAg
ICAgIH0NCiAgICB9DQp9DQoNCnN1YiBfdHlwZSB7DQogICAgbXkgJG9wdGlv
biA9IHNoaWZ0Ow0KICAgICRvcHRpb24gPX4gL14tLS8gYW5kIHJldHVybiAi
bG9uZyI7DQogICAgJG9wdGlvbiA9fiAvXi0vIGFuZCByZXR1cm4gInNob3J0
IjsNCiAgICAkb3B0aW9uID1+IC9eXHcvIGFuZCByZXR1cm4gImJhcmUiOw0K
ICAgIHJldHVybiAidW5rbm93biI7DQp9DQoNCnVzZSBGaW5kQmluOw0KDQpz
dWIgc3VwZXJhdXRvIHsNCiAgICBteSAkcG9kICA9IG5ldyBHZXRvcHQ6OkF1
dG86OlBvZEV4dHJhY3Q7DQogICAgbXkgJHNlbGYgPSAtciAkMCA/ICQwIDog
LXIgJEZpbmRCaW46OkJpbiAuICIvIiAuICQwID8gLXIgJEZpbmRCaW46OkJp
bg0KICAgICAgLiAiLyIgLiAkMCA6DQogICAgICBjcm9hayAiQ291bGRuJ3Qg
YXV0b21hdGljYWxseSBwYXJzZSB5b3VyIFBPRCAtICQwIG5vdCByZWFkYWJs
ZSEiOw0KICAgICRwb2QtPnBhcnNlX2Zyb21fZmlsZSgkc2VsZiwgJy9kZXYv
bnVsbCcpOw0KICAgIG15IEBzcGVjOw0KDQogICAgd2hpbGUgKG15ICgkaywg
JHYpID0gZWFjaCAleyAkcG9kLT57ZnVuY3N9IH0pIHsNCiAgICAgICAgJGsg
PX4gcy9fLy0vZzsNCiAgICAgICAgcHVzaCBAc3BlYywNCiAgICAgICAgICBb
ICItLSRrIiwgJHYtPntzaG9ydGhlbHB9LCAkdi0+e2xvbmdoZWxwfSwgJHYt
Pntjb2RlfSBdOw0KICAgIH0NCiAgICByZXR1cm4gQHNwZWM7DQp9DQoNCnN1
YiB2ZXJzaW9uIHsNCiAgICBwcmludCAiVGhpcyBpcyAkMCwgdmVyc2lvbiAk
bWFpbjo6VkVSU0lPTlxuXG4iOw0KfQ0KDQpzdWIgaGVscG1lIHsNCiAgICB2
ZXJzaW9uKCk7DQogICAgbXkgJHNpZyA9ICIiOw0KICAgIGlmICgkdHlwZSBl
cSAibG9uZyIpICAgICB7ICRzaWcgPSAiLS0iIH0NCiAgICBlbHNpZiAoJHR5
cGUgZXEgInNob3J0IikgeyAkc2lnID0gIi0iIH0NCg0KICAgICMgQXJlIHdl
IGJlaW5nIGFza2VkIGZvciAqc3BlY2lmaWMqIGhlbHA/DQogICAgaWYgKG15
IEBoZWxwID0gZ3JlcHsgZXhpc3RzICRvcHRpb25zeyRffSB9IEBBUkdWKSB7
DQogICAgICAgIG15ICR3aGF0ID0gJGhlbHBbMF07DQogICAgICAgIGlmIChl
eGlzdHMgJG9wdGlvbnN7ICRoZWxwWzBdIH17bG9uZ2hlbHB9KSB7DQogICAg
ICAgICAgICBwcmludCAiJDAgJHdoYXQgLSAkb3B0aW9uc3skd2hhdH17aGVs
cH1cblxuIjsNCiAgICAgICAgICAgIHByaW50ICRvcHRpb25zeyR3aGF0fXts
b25naGVscH0gLiAiXG4iOw0KICAgICAgICAgIH0gZWxzZSB7DQogICAgICAg
ICAgICBwcmludCAiTm8gaGVscCBhdmFpbGFibGUgZm9yICR3aGF0XG4iOw0K
ICAgICAgICB9DQogICAgICB9IGVsc2Ugew0KICAgICAgICBteSAkYW5kX3Ro
ZXJlX3NfbW9yZSA9IDA7DQogICAgICAgIHByaW50IDw8RU9GOw0KJDAgJHtz
aWd9aGVscCAtIFRoaXMgdGV4dA0KJDAgJHtzaWd9dmVyc2lvbiAtIFByaW50
cyB0aGUgdmVyc2lvbiBudW1iZXINCg0KRU9GDQoNCiAgICAgICAgZm9yIChr
ZXlzICVvcHRpb25zKSB7DQogICAgICAgICAgICBwcmludCAiJDAgJF8gLSAk
b3B0aW9uc3skX317aGVscH0iOw0KICAgICAgICAgICAgJGFuZF90aGVyZV9z
X21vcmUrKywgKHByaW50ICJbKl0iKQ0KICAgICAgICAgICAgICBpZiBkZWZp
bmVkICRvcHRpb25zeyRffXtsb25naGVscH0NCiAgICAgICAgICAgICAgYW5k
ICRvcHRpb25zeyRffXtsb25naGVscH0gPX4gL1xTLzsNCiAgICAgICAgICAg
IHByaW50ICJcbiI7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoJGFuZF90
aGVyZV9zX21vcmUpIHsNCiAgICAgICAgICAgIHByaW50IDw8RU9GDQoNCk1v
cmUgaGVscCBpcyBhdmFpbGFibGUgb24gdGhlIHRvcGljcyBtYXJrZWQgd2l0
aCBbKl0NClRyeSAkMCAke3NpZ31oZWxwICR7c2lnfWZvbw0KDQpFT0YNCiAg
ICAgICAgfQ0KICAgIH0NCiAgICBleGl0IDA7DQp9DQoNCkVORCB7DQogICAg
aWYgKGdyZXAgeyAvXi17MCwyfWgoZWxwfCkkLyB9IEBBUkdWKSB7IGhlbHBt
ZSgpIH0NCiAgICBpZiAoZ3JlcCB7IC9eLS12ZXJzaW9ufC1WJC8gIH0gQEFS
R1YpIHsgdmVyc2lvbigpOyBleGl0IDA7IH0NCiAgICB3aGlsZSAobXkgJGZv
byA9IHNoaWZ0IEBBUkdWKSB7DQogICAgICAgIGlmIChleGlzdHMgJG9wdGlv
bnN7JGZvb30pIHsNCiAgICAgICAgICAgIGV4aXQgaWYgISRvcHRpb25zeyRm
b299e2NvZGV9LT4oQEFSR1YpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAg
ICAgICAgaWYgKF90eXBlKCRmb28pIG5lICR0eXBlIGFuZCBfdHlwZSgkZm9v
KSBuZSAiYmFyZSIpIHsNCiAgICAgICAgICAgICAgICBpZiAoX3R5cGUoJGZv
bykgZXEgInNob3J0Iikgew0KICAgICAgICAgICAgICAgICAgICAkZm9vID1+
IHMvLS8vOw0KICAgICAgICAgICAgICAgICAgICAkbWFpbjo6b3B0aW9uc3sk
X30rKyANCiAgICAgICAgICAgICAgICAgICAgZm9yIHNwbGl0IC8vLCRmb287
DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAg
ICAgJG1haW46Om9wdGlvbnN7JGZvb30rKzsNCiAgICAgICAgICAgICAgICB9
DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICMgRG9u
J3Qga25vdyB0aGlzLg0KICAgICAgICAgICAgICAgIHVucmVjb2duaXplZCgk
Zm9vKTsNCiAgICAgICAgICAgIH0NCiAgICAgICB9DQogICB9DQogICBpZiAo
ZXhpc3RzICZtYWluOjpkZWZhdWx0KSB7IG1haW46OmRlZmF1bHQoKSB9DQp9
DQoNCnN1YiB1bnJlY29nbml6ZWQgew0KICAgIG15ICRjb21tYW5kID0gc2hp
ZnQ7DQoNCiAgICBwcmludCBTVERFUlIgIlVucmVjb2duaXNlZCBvcHRpb24g
JGNvbW1hbmRcbiI7DQogICAgaGVscG1lKCk7DQp9DQoNCnBhY2thZ2UgR2V0
b3B0OjpBdXRvOjpQb2RFeHRyYWN0Ow0KdXNlIGJhc2UgJ1BvZDo6UGFyc2Vy
JzsNCg0Kc3ViIGNvbW1hbmQgew0KICAgIG15ICRzZWxmID0gc2hpZnQ7DQog
ICAgbXkgKCRjb21tYW5kLCAkdGV4dCwgJGxpbmVfbnVtKSA9IEBfOw0KICAg
IGlmICgkY29tbWFuZCBlcSAnaXRlbScgfHwgJGNvbW1hbmQgPX4gL15oZWFk
KD86MnwzfDQpLykgew0KICAgICAgICBubyBzdHJpY3QgJ3JlZnMnOw0KDQog
ICAgICAgIGlmICgvQzwoW14+XSspPiAtICguKikvIG9yIC8oXHcrKSAtICgu
KikvIGFuZCBleGlzdHMgJnsibWFpbjo6JDEifSkNCiAgICAgICAgew0KICAg
ICAgICAgICAgJHNlbGYtPntmdW5jc317JDF9ID0gew0KICAgICAgICAgICAg
ICAgIHNob3J0aGVscCA9PiAkMiwNCiAgICAgICAgICAgICAgICAgICAgIGNv
ZGUgPT4gKnsibWFpbjo6JDEifXtDT0RFfQ0KICAgICAgICAgICAgfTsNCiAg
ICAgICAgICAgICRzZWxmLT57Y29weWluZ30gPSAxOw0KICAgICAgICAgICAg
JHNlbGYtPntsYXRlc3R9ICA9ICQxOw0KICAgICAgICB9DQogICAgfQ0KfQ0K
DQpzdWIgdmVyYmF0aW0gew0KICAgIG15ICgkc2VsZiwgJHBhcmFncmFwaCwg
JGxpbmVfbnVtKSA9IEBfOw0KICAgICRzZWxmLT57ZnVuY3N9eyAkc2VsZi0+
e2xhdGVzdH0gfXtsb25naGVscH0gLj0gJHBhcmFncmFwaA0KICAgICAgaWYg
JHNlbGYtPntjb3B5aW5nfTsNCn0NCg0Kc3ViIHRleHRibG9jayB7DQogICAg
bXkgKCRzZWxmLCAkcGFyYWdyYXBoLCAkbGluZV9udW0pID0gQF87DQogICAg
JHNlbGYtPntmdW5jc317ICRzZWxmLT57bGF0ZXN0fSB9e2xvbmdoZWxwfSAu
PQ0KICAgICAgJHNlbGYtPmludGVycG9sYXRlKCRwYXJhZ3JhcGgsICRsaW5l
X251bSkNCiAgICAgIGlmICRzZWxmLT57Y29weWluZ307DQp9DQoNCiMgUHJl
bG9hZGVkIG1ldGhvZHMgZ28gaGVyZS4NCg0KMTsNCl9fRU5EX18NCiMgQmVs
b3cgaXMgc3R1YiBkb2N1bWVudGF0aW9uIGZvciB5b3VyIG1vZHVsZS4gWW91
IGJldHRlciBlZGl0IGl0IQ0KDQo9aGVhZDEgTkFNRQ0KDQpHZXRvcHQ6OkF1
dG8gLSBGcmFtZXdvcmsgZm9yIGNvbW1hbmQtbGluZSBhcHBsaWNhdGlvbnMN
Cg0KPWhlYWQxIFNZTk9QU0lTDQoNCk5vdCB2ZXJ5IG1hZ2ljYWw6DQoNCiAg
dXNlIEdldG9wdDo6QXV0byANCiAgICAoDQogICAgICAgIFsgIi0td2liYmxl
IiwgIldpYmJsZSB0byBzdGFuZGFyZCBvdXRwdXQiIF0sDQogICAgICAgIFsg
Ii0td29iYmxlIiwgIldvYmJsZSB0byBzdGFuZGFyZCBvdXRwdXQiLCBcJlNv
bWV0aGluZzo6V29iYmxlIF0NCiAgICAgICAgWyAiLS13dWJibGUiLCAiV3Vi
YmxlIHRvIHN0YW5kYXJkIG91dHB1dCIsDQogICJXZSdyZSBub3QgZW50aXJl
bHkgc3VyZSB3aGF0IGEgd3ViYmxlIGlzLCBidXQgdGhpcyBvcHRpb24gZG9l
cyBpdC4iLA0KICBcJlNvbWV0aGluZzo6V3ViYmxlIF0NCiAgICApOw0KICBv
dXIgJFZFUlNJT04gPSAiMS4wIjsNCg0KTm93IEM8eW91cnByb2dyYW0gLS13
aWJibGUgZm9vPiB3aWxsIGNhbGwgQzx3aWJibGUoImZvbyIpPi4NCg0KUHJl
dHR5IG1hZ2ljYWw6DQoNCiAgICB1c2UgR2V0b3B0OjpBdXRvOyAjIFdlJ2xs
IHdvcmsgaXQgb3V0IGZyb20gdGhlIFBPRC4NCiAgICANCj1oZWFkMSBERVND
UklQVElPTg0KDQpVbml4IGNvbW1hbmQgbGluZSBhcHBsaWNhdGlvbnMsIHJh
dGhlciB0aGFuIHNpbXBsZSBmaWx0ZXJzLCBhcmUgcHJldHR5DQp1bnBsZWFz
YW50IHRvIHdyaXRlOyBhcyB3ZWxsIGFzIGFjdHVhbGx5IHdyaXRpbmcgdGhl
IGZ1bmN0aW9uYWxpdHksDQp0aGVyZSdzIHRoZSBib3JpbmcgcGFyc2luZyBv
ZiB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBhbmQgc28gb24uIEV2ZW4N
CndpdGggQzxHZXRvcHQ6Okxvbmc+IG9yIGVxdWl2YWxlbnQsIHlvdSBzdGls
bCBoYXZlIHRvIGRpc3BhdGNoIHRoZQ0KYXBwcm9wcmlhdGUgY29tbWFuZHMg
dG8gdGhlIHJpZ2h0IHN1YnJvdXRpbmVzLCB3cml0ZSBhIEM8LS1oZWxwPiBh
bmQNCkM8LS12ZXJzaW9uPiBoYW5kbGVyLCBhbmQgc28gb24uIFRoaXMgbW9k
dWxlIGFic3RyYWN0cyBvdXQgdGhhdCBjb2RlLA0KbGVhdmluZyB5b3UgZnJl
ZSBqdXN0IHRvIGNvbmNlbnRyYXRlIG9uIHRoZSBmdW5jdGlvbmFsIHBhcnQu
DQoNCkluIHRoZSAibm9uLW1hZ2ljYWwiIG1vZGUsIHlvdSBwcm92aWRlIGEg
bGlzdCBvZiBsaXN0cy4gRWFjaCBlbGVtZW50DQpjb250YWlucyB0aGUgbmFt
ZSBvZiB0aGUgY29tbWFuZCBhbmQgYSBzaG9ydCBoZWxwIG1lc3NhZ2U7IHRo
aXMgbWF5IGJlDQpmb2xsb3dlZCBieSBhIGxvbmdlciBoZWxwIG1lc3NhZ2Us
IHRvIGJlIGdpdmVuIHdoZW4gc29tZXRoaW5nIGxpa2UNCkM8LS1oZWxwIGZv
bz4gaXMgcGFzc2VkLCBhbmQvb3IgYSBjb2RlIHJlZmVyZW5jZSBmb3IgdGhl
IGZ1bmN0aW9uIHRvIGJlDQpjYWxsZWQuIElmIHRoZXJlIGlzbid0IGEgY29k
ZSByZWZlcmVuY2UgZ2l2ZW4sIHdlIGFzc3VtZSBpdCB3aWxsIGJlDQpDPCZt
YWluOjpmb28+LiBJZiB5b3VyIGNvbW1hbmQgbmFtZSBjb250YWlucyBoeXBo
ZW5zLCB0aGV5IHdpbGwgYmUNCmZsYXR0ZW5lZCB0byBzZW1pY29sb25zOiBD
PC0tZm9vLWJhcj4gd2lsbCBjYWxsIEM8Zm9vX2Jhcj4uDQoNCkM8R2V0b3B0
OjpBdXRvPiBpcyBoYXBweSBmb3IgeW91IHRvIHVzZSAibG9uZyIgKEM8LS1n
bnUtc3R5bGU+KSwNCiJzaG9ydCIgKEM8LW9sZHN0eWxlPikgb3IgZXZlbiAi
YmFyZSIgY29tbWFuZCBuYW1lcywNCihDPG15cHJvZ3JhbSBlZGl0IGZvby50
eHQ+LCBDVlMtc3R5bGUpIG9uIHRoZSBjb25kaXRpb24gdGhhdCB5b3UgYXJl
DQpjb25zaXN0ZW50LiBBZGRpdGlvbmFsbHksIGlmIHlvdSB1c2UgYmFyZSBv
ciBsb25nIHN0eWxlIGNvbW1hbmRzLCB0aGVuDQphbnkgc2hvcnQgb3B0aW9u
cyBwYXNzZWQgYmVmb3JlIGEgY29tbWFuZCBuYW1lIHdpbGwgYmUgc2VudCBp
bnRvDQpDPCVtYWluOjpvcHRpb25zPi4gRm9yIGluc3RhbmNlLCBnaXZlbg0K
DQogICAgdXNlIEdldG9wdDo6QXV0byAoDQogICAgICAgICJlZGl0IiA9PiAi
b3BlbiBhIGZpbGUgZm9yIGVkaXRpbmciLA0KICAgICAgICAiZXhwb3J0IiA9
PiAid3JpdGUgb3V0IHRoZSBkYXRhIGFzIGFuIEFTQ0lJIGZpbGUiDQogICAg
KTsNCg0KQzx5b3VycHJvZyAtdnQgZWRpdCAteCBmb28udHh0PiB3aWxsIHBl
cmZvcm0gdGhlIGZvbGxvd2luZzoNCg0KICAgICRtYWluOjpvcHRpb25ze3Z9
ID0gMQ0KICAgICRtYWluOjpvcHRpb25ze3R9ID0gMQ0KICAgIGVkaXQoIi14
IiwgImZvby50eHQiKTsNCg0KPWhlYWQyIEhFTFAgQU5EIFZFUlNJT04NCg0K
QzxHZXRvcHQ6OkF1dG8+IGF1dG9tYXRpY2FsbHkgcHJvdmlkZXMgQzxoZWxw
PiBhbmQgQzx2ZXJzaW9uPiBjb21tYW5kcywNCmZvbGxvd2luZyB5b3VyIGNo
b3NlbiBzdHlsZSAobG9uZywgc2hvcnQgb3IgYmFyZSkuDQoNCkM8aGVscD4g
bGlzdHMgdGhlIGNvbW1hbmRzIGF2YWlsYWJsZSBhbmQgdGhlIHNob3J0IGhl
bHAgbWVzc2FnZXMuIElmIGENCkM8aGVscCBJPGNvbW1hbmQ+PiBpcyBnaXZl
biBmb3IgYSBjb21tYW5kIG5hbWUgd2l0aCBhIGxvbmcgbWVzc2FnZSwgdGhl
DQpsb25nZXIgbWVzc2FnZSB3aWxsIGJlIHByaW50ZWQgaW5zdGVhZC4gDQoN
CkM8dmVyc2lvbj4gZGlzcGxheXMgeW91ciBwcm9ncmFtIG5hbWUsIHBsdXMg
QzwkbWFpbjo6VkVSU0lPTj4uIFRoaXMNCm1lYW5zIHlvdSBtdXN0IHNldCBD
PG91ciAkVkVSU0lPTiA9ICJ3aGF0ZXZlciI+IGluIHlvdXIgYXBwbGljYXRp
b24hDQoNCj1oZWFkMiBNQUdJQ0FMIE1PREUNCg0KTm93LCB0aGUgcHJlbWlz
ZSBvZiBDPEdldG9wdDo6QXV0bz4gaXMgdGhhdCBpdCBmcmVlcyB5b3UgZnJv
bSB0aGUNCmJvcmluZyBzdHVmZiwgcmlnaHQ/IEFuZCBpdCBjb3VsZCBiZSBh
cmd1ZWQgdGhhdCB3cml0aW5nIGEgc3BlY2lmaWNhdGlvbg0KdG8gaGFuZCB0
byBDPEdldG9wdDo6QXV0bz4gaXMgaXRzZWxmIGJvcmluZyBzdHVmZi4gV2Vs
bCwgbmV2ZXIgZmVhci4NCg0KSWYgeW91IGRvbid0IHdhbnQgdG8gd3JpdGUg
c3VjaCBhIHNwZWNpZmljYXRpb24sIHlvdSBkb24ndCBoYXZlIHRvLg0KDQpB
bGwgeW91IG5lZWQgdG8gZG8gaXMgd3JpdGUgeW91ciBjb21tYW5kcywgYW5k
IHRoZW4gd3JpdGUgc29tZSBQT0QgaW4NCmZyb250IG9mIHRoZW0sIGxpa2Ug
c286DQoNCiAgICB1c2UgR2V0b3B0OjpBdXRvOw0KICAgIG91ciAkVkVSU0lP
TiA9ICIxLjAiOw0KDQogICAgPWhlYWQyIHdpYmJsZSAtIHdpYmJsZSB0byBz
dGFuZGFyZCBvdXRwdXQNCg0KICAgIFRoaXMgY29tbWFuZCBlbWl0cyBhIHNp
bXBsZSB3aWJibGUgdG8gc3RhbmRhcmQgb3V0cHV0LiBJdCB0YWtlcyBubw0K
ICAgIG90aGVyIG9wdGlvbnMuDQoNCiAgICA9Y3V0DQoNCiAgICBzdWIgd2li
YmxlIHsgcHJpbnQgIkFhYXJnaCFcbiIgfQ0KDQpDPEdldG9wdDo6QXV0bz4g
d2lsbCBnbyB0aHJvdWdoIGFuZCBmaW5kIHRoZSBzdWJyb3V0aW5lcyB3aGlj
aCBoYXZlIGENCmNvcnJlc3BvbmRpbmcgYml0IG9mIFBPRCBkb2N1bWVudGF0
aW9uLCBhbmQgdHVybiB0aGVtIGludG8gbG9uZyBvcHRpb25zOw0KeW91IGNh
biBub3cgc2F5IEM8eW91cnByb2dhbSAtLXdpYmJsZT4sIGFuZCBDPHdpYmJs
ZSgpPiB3aWxsIGJlIGNhbGxlZC4NCkM8LS1oZWxwPiBhbmQgQzwtLXZlcnNp
b24+IHdvcmsgYXMgbm9ybWFsLCBhbmQgdGhlIGRvY3VtZW50YXRpb24NCmZv
bGxvd2luZyB0aGUgQzxoZWFkMj4gd2lsbCBiZSB0YWtlbiBhcyB0aGUgbG9u
ZyBoZWxwIHRleHQuDQoNCj1oZWFkMSBBVVRIT1INCg0KU2ltb24gQ296ZW5z
LCBDPHNpbW9uQGNwYW4ub3JnPg0KDQo9aGVhZDEgU0VFIEFMU08NCg0KTDxD
b25maWc6OkF1dG8+LCBMPEdldG9wdDo6TG9uZz4NCg0KPWN1dA0K
---1463760359-316734986-1059752961=:5155--

Generated at 13:56 on 01 Jul 2004 by mariachi 0.52