Veritas-bu

[Veritas-bu] Sharing a throughput script for Netbackup

2003-11-17 18:34:32
Subject: [Veritas-bu] Sharing a throughput script for Netbackup
From: mlin AT fxcm DOT com (FXCM - Mark Lin)
Date: Mon, 17 Nov 2003 18:34:32 -0500
This is a MIME message. If you are reading this text, you may want to 
consider changing to a mail reader or gateway that understands how to 
properly handle MIME multipart messages.

--=__PartADF32618.0__=
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Hi group,
    Thought I'd shared with other netbackup user a simple perl script that =
I wrote for netbackup 4.5.  I'm running 4.5 Datacenter so I'm not sure if =
it would run with other version/variation.  The script gets total daily =
thruoughput of each client and total for each media server.  You can also =
modify it to calculate backup growth rate or change the way it displays =
data by move the HASH around.



___________________________________________________________________________=
__________________________________________________
FXCM, L.L.C.=AE assumes no responsibility for errors, inaccuracies or =
omissions in these materials. FXCM, L.L.C.=AE does not warrant the =
accuracy or completeness of the information, text, graphics, links or =
other items contained within these materials. FXCM, L.L.C.=AE shall not be =
liable for any special, indirect, incidental, or consequential damages, =
including without limitation losses, lost revenues, or lost profits that =
may result from these materials. All information contained in this e-mail =
is strictly confidential and is only intended for use by the recipient.


--=__PartADF32618.0__=
Content-Type: application/x-perl; name="bp_report.pl"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="bp_report.pl"

IyEvdXNyL2Jpbi9wZXJsDQoNCiMgQ3JlYXRlZCBieSBNYXJrIExpbiAgMTEvMTIvMjAwMw0KDQoj
IFBhcnNlIC91c3Ivb3BlbnYvbmV0YmFja3VwL2Jpbi9hZG1pbmNtZC9icGltYWdlbGlzdCBvdXRw
dXQuDQojIE91dHB1dHMgSSB3b3VsZCBsaWtlIHRvIGhhdmU6DQojIDEuIEVhY2ggaG9zdCdzIGJh
Y2t1cCBzaXplICsgc3BlZWQNCiMgMi4gVG90YWwgYmFja3VwIGZpbGVzICsgc2l6ZQ0KIyAzLiBH
cm93aW5nIHJhdGUgKGhhbGYgZG9uZSwgb25seSB3b3JrIHdpdGggZGlmZmVyZW50aWFsIGluY3Jl
bWVudGFsIGJhY2t1cCkNCiMgNC4gVGFwZXMgdXNlZCBmb3IgdGhlIGR1cmluZyBvZiBwZXJpb2Qg
c3BlY2lmeS4gKG5vdCBkb25lKQ0KDQojIFBhcmFtZXRlcnM6DQojIC1kIDogU3RhcnRpbmcgZGF0
ZSBmb3IgYnBpbWFnZQ0KIyAtZSA6IEVuZGluZyBkYXRlIGZvciBicGltYWdlDQojIC1xIDogRGF5
IGludGVydmFsIGZyb20gdG9kYXkNCiMgLWMgOiBTaW5nbGUgY2xpZW50DQojIC12IDogVmVyYm9z
ZSAoIEp1c3QgbW9yZSBtZXNzeSBvdXRwdXQgYnV0IGdvb2Qgc3R1ZmYgaWYgeW91IHdhbnQgdG8g
c2VlIGhvdyBtdWNoIGVhY2ggY2xpZW50IGlzIGJhY2tpbmcgdXAgZWFjaCBkYXkgYW5kIHRvdGFs
IHRocm91Z2hwdXQgb2YgdGhlIG1lZGlhIHNlcnZlciB3aXRoIGNsaWVudCdzIHByb3BvcnRpb24g
KS4NCiMgLWggOiBIZWxwDQoNCnVzZSBHZXRvcHQ6OlN0ZDsNCnVzZSBUaW1lOjpsb2NhbHRpbWU7
DQoNCiMgcGFyYW1lbnRlciBkZWNsYXJ0aW9uDQoNCiMgU2VydmVyIHRoYXQgaGFzIHRoZSBiYWNr
dXAgY2F0YWxvZ3Vlcw0KIyBNb2RpZnkgdGhpcyBmb3IgeW91ciBvd24gc2VydmVyDQokc2VydmVy
ID0gJ21kY2JhY2t1cDEucHJvZC5meGNtLmNvbSc7DQoNCiMgYnBpbWFnZWxpc3QgY29tbWFuZCBs
b2NhdGlvbg0KJGJwaW1hZ2VsaXN0ID0gJy91c3Ivb3BlbnYvbmV0YmFja3VwL2Jpbi9hZG1pbmNt
ZC9icGltYWdlbGlzdCc7DQoNCiMgR2V0IHNjcmlwdCBuYW1lDQoobXkgJHJvdXRpbmUgPSAkMCkg
PX4gcyNeLiooXFx8XC8pIyM7ICNyb3V0aW5lIG5hbWUsIG1pbnVzIHBhdGgNCg0KDQojIEJ5IGRl
ZmF1bHQgNyBkYXlzIGJhY2sgd2l0aG91dCAtcTsNCiRkZWZhdWx0X2RheXMgPSA3Ow0KDQojIGRl
ZmF1bHQgdGltZTsNCiRzdGFydF90aW1lID0gJzAwOjAwOjAwJzsNCiRlbmRfdGltZT0gJzAwOjAw
OjAwJzsNCg0KIyBHZXQgdGhlIG9wdGlvbnMsIGFuZCBpZiB3cm9uZyBzZXQsIG91dHB1dCBoZWxw
IHNjcmVlbg0KZ2V0b3B0cygnZDplOnE6Yzp2aCcsIFwlb3B0cyk7DQoNCmlmIChkZWZpbmVkKCRv
cHRzeydxJ30pICYmIGV4aXN0cygkb3B0c3snZCd9KSkgew0KICAgcHJpbnQgInEgaXMgJG9wdHN7
J3EnfVxuIjsNCn0NCmlmICggKCRvcHRzeydkJ30gbmUgJycgfHwgZXhpc3RzKCRvcHRzeydkJ30p
ICkgJiYgKCRvcHRzeydlJ30gZXEgJycgfHwgIWV4aXN0cygkb3B0c3snZSd9KSApIA0KICB8fCAo
JG9wdHN7J2UnfSBuZSAnJyB8fCBleGlzdHMoJG9wdHN7J2UnfSkgKSAmJiAoJG9wdHN7J2QnfSBl
cSAnJyB8fCAhZXhpc3RzKCRvcHRzeydkJ30pICkNCiAgfHwgKCBkZWZpbmVkKCRvcHRzeydxJ30p
ICYmIGV4aXN0cygkb3B0c3snZCd9KSApDQogIHx8ICggZGVmaW5lZCgkb3B0c3sncSd9KSAmJiBl
eGlzdHMoJG9wdHN7J2UnfSkgKQ0KICB8fCBkZWZpbmVkKCRvcHRzeydoJ30pICkgew0KICAmdXNh
Z2U7DQp9DQoNCg0Kc3ViIHVzYWdlKCkgew0KDQogIHByaW50IDw8RU9GOw0KDQp1c2FnZTogJHJv
dXRpbmUgLVtkZXFjdmhdIA0KR2VuZXJhdGUgYSBkYWlseSB1c2FnZSByZXBvcnQgZnJvbSBuZXRi
YWNrdXAgdm9sdW1lIGltYWdlLg0KDQoNClJ1biBpdCB3aXRob3V0IHBhcmFtZXRlciB0byByZXRy
aWV2ZSBhbGwgY2xpZW50cycgaW5mbyBmb3IgdGhlIHBhc3Qgc2V2ZW4gZGF5cy4gDQoqKipSZW1l
YmVyIHRvIGNoYW5nZSAnc2VydmVyJyBwYXJhbWV0ZXIgaW4gdGhlIHNjcmlwdC4NCg0KUGFyYW1l
dGVycyBFeHBsYWluYXRpb246IA0KLWQgJiAtZSA6DQpJZiB5b3Ugd2FudCB0byBzcGVjaWZ5IGRh
dGUgYm91bmRyeSwgeW91IGhhdmUgdG8gc3BlY2lmeSBib3RoIG9mIHRoZW0uICAtZCBpcyBzdGFy
dGluZyBkYXRlIGFuZCAtZSBpcyB0aGUgZW5kaW5nIGRhdGUuDQpUaGV5IGFyZSBzaW1pbGFyIHRv
IE5ldGJhY2t1cCdzIGJwaW1hZ2UgcGFyYW1ldGVycyBleGNlcHQgaXQgb25seSB0YWtlcyB0aGUg
ZGF0ZSBhbmQgbm90IHRoZSB0aW1lLg0KRXg6IGJwX3JlcG9ydCAtZCAxMS8wMS8yMDAzIC1lIDEx
LzA4LzIwMDMNCkdlbmVyYXRlIHJlcG9ydHMgZnJvbSAxMS8wMS8yMDAzIHRvIDExLzA4LzIwMDMN
Cg0KLXEgOg0KU3BlY2lmeSBob3cgbWFueSBkYXlzIGJhY2sgZnJvbSB0b2RheS4gIENhbiBOT1Qg
Y29tYmluZSB3aXRoIC1kICYgLWUuDQpFeDogYnBfcmVwb3J0IC1xIDcNCkl0IHdpbGwgZ2VuZXJh
dGUgcmVwb3J0IGZyb20gdGhlIHBhc3Qgd2Vlay4NCg0KLWMgOg0KU3BlY2lmeSBzaW5nbGUgY2xp
ZW50cyBmb3IgcmVwb3J0Lg0KRXg6IGJwX3JlcG9ydCAtYyBhYmMuZm9vLmNvbQ0KR2VuZXJhdGUg
cmVwb3J0IG9mIHRoZSBob3N0IGFiYy5mb28uY29tIGZvciB0aGUgcGFzdCBzZXZlbiBkYXlzLg0K
DQotdiA6DQpTaG93IHZlcmJvc2Ugb3V0cHV0DQoNCi1oIDoNClNob3cgdGhpcyBoZWxwIHNjcmVl
bg0KDQpFT0YNCg0KICBleGl0KDEpOw0KfQ0KDQoNCiMgU2V0dGluZyB1cCBwYXJhbWV0ZXJzDQoN
CiMgU2luZ2xlIGNsaWVudCBvcHRpb24NCmlmICggZGVmaW5lZCgkb3B0c3snYyd9KSApIHsNCiAg
JHNpbmdsZV9jbGllbnQgPSAiLWNsaWVudCAkb3B0c3snYyd9IjsNCn0NCg0KIyBJZiBubyBkYXRl
IGlzIHNwZWNpZnksIHVzZSAkZGVlZmF1bHRfZGF5cyBpbnRlcnZhbCBmcm9tIHRvZGF5DQppZiAo
IGRlZmluZWQoJG9wdHN7J2QnfSkgJiYgZGVmaW5lZCgkb3B0c3snZSd9KSApIHsNCiAgJHN0YXJ0
X2RhdGUgPSAkb3B0c3snZCd9Ow0KICAkZW5kX2RhdGUgPSAkb3B0c3snZSd9Ow0KfQ0KZWxzZSB7
DQogIGlmICggISBkZWZpbmVkKCRvcHRzeydxJ30pICkgew0KICAgICRkYXlzID0gJGRlZmF1bHRf
ZGF5czsNCiAgfSANCiAgZWxzZSB7DQogICAgJGRheXMgPSAkb3B0c3sncSd9Ow0KICB9DQogICMg
U2V0dXAgZGVmYXVsdCBkYXRlIGFuZCB0aW1lIHdoZW4gLWQgJiAtZSBhcmUgbm90IHNwZWNpZnku
DQogICR0bSA9IGxvY2FsdGltZTsNCiAgJG1vbnRoID0gJHRtLT5tb24gKyAxOw0KICAkZW5kX2Rh
dGUgPSAkbW9udGggLiAiLyIgLiAkdG0tPm1kYXkgLiAiLyIgLiAoJHRtLT55ZWFyICsgMTkwMCk7
DQoNCiAgIyBBIGRheSBpcyA4NjQwMCA9IDYwICogNjAgKiAyNDsNCiAgJG90aGVydGltZSA9IHRp
bWUgLSAoODY0MDAgKiAkZGF5cyk7DQogICR0bSA9IGxvY2FsdGltZSgkb3RoZXJ0aW1lKTsNCiAg
JG1vbnRoID0gJHRtLT5tb24gKyAxOw0KICAkc3RhcnRfZGF0ZSA9ICRtb250aCAuICIvIiAuICR0
bS0+bWRheSAuIi8iLiAoJHRtLT55ZWFyKzE5MDApOw0KfQ0KDQokY29tbWFuZCA9ICIkYnBpbWFn
ZWxpc3QgLUwgLU0gJHNlcnZlciAtZCAkc3RhcnRfZGF0ZSAkc3RhcnRfdGltZSAtZSAkZW5kX2Rh
dGUgJGVuZF90aW1lICRzaW5nbGVfY2xpZW50IjsNCg0KaWYgKCBkZWZpbmVkKCRvcHRzeyd2J30p
ICkgew0KICBwcmludCAiJGNvbW1hbmRcbiI7DQp9DQoNCkBCUElNQUdFID0gYCRjb21tYW5kYDsN
Cg0KaWYgKCQ/KSB7DQogIHByaW50ICJicGltYWdlIGNvbW1hbmQgcmV0dXJucyB3aXRoIGVycm9y
XG4iOw0KICBleGl0KDEpOw0KfQ0KDQojIERhdGEgSGFzaGVzDQoldG1wSG9sZGVyID0gKCk7DQol
ZGF0YUhvbGRlciA9ICgpOw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQojIC0tIFBy
b2dyYW0gU3RhcnMgSEVSRSAtLSAjDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCiRp
ID0gMDsgIyBDb3VudGVyIGZvciBsaW5lDQokcHJvY2VlZCA9IDA7ICMgRGV0ZXJtaW5kIGlmIGEg
dG9rZW4gaXMgcmVhZHkgdG8gYmUgcHJvY2Vzc2VkLg0KDQojIEFkZCBhbiBleHRyYSAiXG4iIHNv
IHRoZSBsYXN0IHRva2VuIGNhbiBiZSBwYXJzZWQNCnB1c2goQEJQSU1BR0UsIlxuIik7DQoNCiMg
U3RhcnQgdGhlIHBhcnNpbmcuDQpmb3JlYWNoIChAQlBJTUFHRSkgew0KICAjIGZpcnN0IGxpbmUg
aXMgYWx3YXlzIGVtcHR5IGxpbmUsIHNvIHdlIGRpdGNoIGl0Lg0KICBpZiAoJGkgPT0gMCkgew0K
ICAgICRpKys7DQogICAgbmV4dDsNCiAgfQ0KICAjIGxvb2sgYXQgdGhlIGJwaW1hZ2Ugb3V0cHV0
IGlmIHlvdSBkb250IGtub3cgaG93IHRoaXMgcmVnZXggd29ya3MNCiMgIGlmICggKCR0YWcsJHRh
Z192YWx1ZSkgPSBzcGxpdCgvOlxzKy8sICRfKSApIHsNCiAgaWYgKCAkXyA9fiBtL14oLispOlxz
KyguKykkLyApIHsNCiAgICAkdHQgPSAkMjsNCiAgICAkdG1wSG9sZGVyeyQxfSA9ICR0dDsNCg0K
IyAgICBwcmludCAiJDEgaXMgJHR0XG4iOw0KDQogICAgIyBDaGVjayB0byBzZWUgaWYgd2UgY29t
ZSB0byB0aGUgZW5kIG9mIGVhY2ggYmFja3VwIGpvYg0KICAgICMgUHJlc3VtZWFibHksICdCYWNr
dXAgQ29weScgdGFnIG1hcmtzIHRoZSBlbmQgb2YgZWFjaCB0b2tlbi4NCiAgICAjaWYgKCQxIGVx
ICdCYWNrdXAgQ29weScpIHsNCiAgICBpZiAoJDEgZXEgJyBpX3VudXNlZDEnKSB7DQojICAgICAg
JHByb2NlZWQgPSAxOw0KICAgIH0NCiAgfQ0KDQogIGlmICggJHByb2NlZWQgfHwgJF8gPX4gbS9e
XG4kLyApIHsNCiAgICAjIEF0IHRoaXMgcG9pbnQsIG9uZSBiYWNrdXAgdG9rZW4gaXMgZG9uZS4g
IFdlIHdpbGwgZG8gb3VyIG5lY2Vzc2FyeSBwYXJzaW5nLg0KICAgICMgR2V0IHRoZSBkYXRlIHNv
IHdlIGNhbiBkaWZmZXJlbnRpYXRlIGRhaWx5IHRyYWZmaWMuDQogICAgKCRkYXksJG1vbnRoLCRk
YXRlLCR5ZWFyLCR0aW1lLCRzZXJpYWwpID0gc3BsaXQoL1xzLywkdG1wSG9sZGVyeydCYWNrdXAg
VGltZSd9KTsNCiMgICAgJHRtcEhvbGRlcnsnQmFja3VwIFRpbWUnfSA9fiBtL14oLispXHMvOw0K
ICAgICRiYWNrdXBfZGF0ZSA9ICRtb250aCAuICItIiAuICRkYXRlIC4gIi0iIC4gJHllYXI7DQoj
ICAgIHByaW50ICJkYXRlOiAkYmFja3VwX2RhdGUgXG4iOw0KICAgIA0KICAgICMgR2V0IGVsYXNw
ZWQgdGltZSBpbiBTZWNvbmRzDQogICAgKCRzZWNvbmQsJGdhcmJhZ2UxKSA9IHNwbGl0KC9ccy8s
JHRtcEhvbGRlcnsnRWxhcHNlZCBUaW1lJ30pOw0KICAgICMgVG90YWwgZWxhcHNlZCB0aW1lIGlu
IHNlY29uZHMNCiAgICAkdG90YWxfZWxhcHNlZCA9ICRzZWNvbmQ7DQoNCg0KICAgICMgRGlzdGlu
Z3Vpc2ggQ3VtdWxhdGl2ZSBhbmQgRnVsbCBiYWNrdXAgYW5kIHNlcGFyYXRlIHRoZW0gYnkgZGF0
ZQ0KICAgIGlmICggJHRtcEhvbGRlcnsnU2NoZWR1bGUgVHlwZSd9IGVxICdDSU5DICg0KScgKSB7
DQogICAgICAkZGF0YUhvbGRlcnskdG1wSG9sZGVyeydDbGllbnQnfX17JGJhY2t1cF9kYXRlfXsn
Y3VtdWxhdGl2ZV9zaXplX3RvdGFsJ30gKz0gJHRtcEhvbGRlcnsnS2lsb2J5dGVzJ307DQogICAg
ICAkZGF0YUhvbGRlcnskdG1wSG9sZGVyeydDbGllbnQnfX17JGJhY2t1cF9kYXRlfXsnY3VtdWxh
dGl2ZV90aW1lX3RvdGFsJ30gKz0gJHRvdGFsX2VsYXBzZWQ7DQoNCiAgICAgICMgR2V0IGEgdG90
YWwgZm9yIGVhY2ggbWVkaWEgc2VydmVyIGFuZCByZWNvcmQgd2hpY2ggaG9zdA0KICAgICAgJHNl
cnZlcl90b3RhbHskdG1wSG9sZGVyeycgSG9zdCd9fXskYmFja3VwX2RhdGV9eydjdW11bGF0aXZl
X3NpemVfdG90YWwnfSArPSAkdG1wSG9sZGVyeydLaWxvYnl0ZXMnfTsNCiAgICAgICRzZXJ2ZXJf
dG90YWx7JHRtcEhvbGRlcnsnIEhvc3QnfX17JGJhY2t1cF9kYXRlfXsnY3VtdWxhdGl2ZV9ob3N0
cyd9eyR0bXBIb2xkZXJ7J0NsaWVudCd9fSArPSAkdG1wSG9sZGVyeydLaWxvYnl0ZXMnfTsNCiAg
ICB9DQoNCiAgICBpZiAoICR0bXBIb2xkZXJ7J1NjaGVkdWxlIFR5cGUnfSBlcSAnRlVMTCAoMCkn
ICkgew0KICAgICAgJGRhdGFIb2xkZXJ7JHRtcEhvbGRlcnsnQ2xpZW50J319eyRiYWNrdXBfZGF0
ZX17J2Z1bGxfc2l6ZV90b3RhbCd9ICs9ICR0bXBIb2xkZXJ7J0tpbG9ieXRlcyd9Ow0KICAgICAg
JGRhdGFIb2xkZXJ7JHRtcEhvbGRlcnsnQ2xpZW50J319eyRiYWNrdXBfZGF0ZX17J2Z1bGxfdGlt
ZV90b3RhbCd9ICs9ICR0b3RhbF9lbGFwc2VkOw0KICAgICAgJHNlcnZlcl90b3RhbHskdG1wSG9s
ZGVyeycgSG9zdCd9fXskYmFja3VwX2RhdGV9eydmdWxsX3NpemVfdG90YWwnfSArPSAkdG1wSG9s
ZGVyeydLaWxvYnl0ZXMnfTsNCiAgICAgICRzZXJ2ZXJfdG90YWx7JHRtcEhvbGRlcnsnIEhvc3Qn
fX17JGJhY2t1cF9kYXRlfXsnZnVsbF9ob3N0cyd9eyR0bXBIb2xkZXJ7J0NsaWVudCd9fSArPSAk
dG1wSG9sZGVyeydLaWxvYnl0ZXMnfTsNCiAgICB9DQoNCiAgICAldG1wSG9sZGVyID0gKCk7DQog
ICAgJHByb2NlZWQgPSAwOw0KICB9DQp9DQoNCiMgTm93IHdlIGdvdCBhIGhhc2ggbmFtZWQgJGRh
dGFIb2xkZXIgdGhhdCBob2xkcyB0aGUgZGF0YSB3ZSBqdXN0IHBhcnNlZC4gIE5vdyBpdCdzIHRp
bWUgdG8gb3V0cHV0IHRoZW0uDQojIFdlIGFyZSBnb2luZyB0byBkbyBzb21lIG1hc3NpdmUgb3V0
cHV0dGluZywgeW91IHJlYWR5Pw0KDQojIFRoaXMgaGFzaCBpcyB1c2VkIHRvIGNhbGN1bGF0ZSBy
YXRlIG9mIGdyb3d0aA0KJXJhdGVzID0gKCk7DQojIEVhY2ggSG9zdA0KZm9yIG15ICRrZXkgKHNv
cnQga2V5cyAlZGF0YUhvbGRlcikgIHsNCg0KICAkbWVvdXQgLj0gIlxuSG9zdDogJGtleVxuIjsN
Cg0KICAjICRrZXkyID0gZGF0ZQ0KICBmb3IgbXkgJGtleTIgKHNvcnQga2V5cyAleyRkYXRhSG9s
ZGVyeyRrZXl9fSkgew0KICAgICRtZW91dCAuPSAiWyRrZXkyXVxuIjsNCg0KICAgICMgRWFjaCB0
YWcgYW5kIGl0cyB2YWx1ZQ0KICAgIGZvciBteSAka2V5MyAoIHNvcnQga2V5cyAleyRkYXRhSG9s
ZGVyeyRrZXl9eyRrZXkyfX0gKSB7DQoNCiAgICAgICR2YWx1ZTMgPSAkZGF0YUhvbGRlcnska2V5
fXska2V5Mn17JGtleTN9Ow0KICAgICAgIyBvdXRwdXRzIGJhY2t1cCBzaXplDQogICAgICBpZiAo
JGtleTMgZXEgJ2Z1bGxfc2l6ZV90b3RhbCcgfHwgJGtleTMgZXEgJ2N1bXVsYXRpdmVfc2l6ZV90
b3RhbCcpIHsNCiAgICAgICAgJHZhMyA9IHNwcmludGYgIiUuMmYiLCAoJHZhbHVlMyAvIDEwMjQp
Ow0KICAgICAgICAkbWVvdXQgLj0gIiRrZXkzID0+ICR2YTMgTWVnYWJ5dGVzXG4iOw0KDQogICAg
ICAgICMgQ2FsY3VsYXRlIGdyb3d0aCByYXRlIGN1bXVsYXRpdmUNCiAgICAgICAgaWYgKCEgZXhp
c3RzKCAkcmF0ZXN7JGtleX17JGtleTN9ICkgKSB7DQogICAgICAgICAgJHJhdGVzeyRrZXl9eyRr
ZXkzfSA9ICR2YWx1ZTM7DQogICAgICAgICAgJGdyb3d0aF90ZXh0ID0gIk5vIEdyb3d0aCBSYXRl
KExhY2sgb2YgcHJldmlvdXMgZGF0YSkuXG4iOw0KICAgICAgICB9DQogICAgICAgIGVsc2Ugew0K
ICAgICAgICAgICNwcmludCAiKCAoJHZhbHVlMyAtICRyYXRlc3ska2V5fXska2V5M30pIC8gJHJh
dGVzeyRrZXl9eyRrZXkzfSApXG4iOw0KICAgICAgICAgIGlmICggJHJhdGVzeyRrZXl9eyRrZXkz
fSAhPSAwICkgew0KICAgICAgICAgICAgJGdyb3d0aCA9ICggKCR2YWx1ZTMgLSAkcmF0ZXN7JGtl
eX17JGtleTN9KSAvICRyYXRlc3ska2V5fXska2V5M30gKSAqIDEwMDsNCiAgICAgICAgICAgICRn
cm93dGggPSBzcHJpbnRmICIlLjJmIiwgJGdyb3d0aDsNCiAgICAgICAgICAgICRncm93dGhfdGV4
dCA9ICIka2V5MyBHcm93dGggUmF0ZTogJGdyb3d0aCBwZXJjZW50XG4iOw0KICAgICAgICAgIH0N
CiAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICRncm93dGhfdGV4dCA9ICIka2V5MyBpcyAw
XG4iOw0KICAgICAgICAgIH0NCiAgICAgICAgICANCiAgICAgICAgICAkcmF0ZXN7JGtleX17JGtl
eTN9ID0gJHZhbHVlMzsNCg0KICAgICAgICB9DQogICAgICB9DQoNCiAgICAgICMgT3V0cHV0cyBU
aW1lIGFuZCBhdmVyYWdlIGJhY2t1cCBzcGVlZA0KICAgICAgaWYgKCRrZXkzIGVxICdmdWxsX3Rp
bWVfdG90YWwnIHx8ICRrZXkzIGVxICdjdW11bGF0aXZlX3RpbWVfdG90YWwnKSB7DQogICAgICAg
ICRtZW91dCAuPSAiJGtleTMgPT4gJHZhbHVlMyBTZWNvbmRzXG4iOw0KICAgICAgICBpZiAoICRr
ZXkzIGVxICdmdWxsX3RpbWVfdG90YWwnICkgew0KICAgICAgICAgICAkayA9ICdmdWxsX3NpemVf
dG90YWwnOw0KICAgICAgICB9DQogICAgICAgIGlmICggJGtleTMgZXEgJ2N1bXVsYXRpdmVfdGlt
ZV90b3RhbCcgKSB7DQogICAgICAgICAgICRrID0gJ2N1bXVsYXRpdmVfc2l6ZV90b3RhbCc7DQog
ICAgICAgIH0NCg0KICAgICAgICAjIFNwZWVkIG9mIHRoZSBiYWNrdXANCiAgICAgICAgJHNwZWVk
ID0gc3ByaW50ZiAiJS4yZiIsICgkcmF0ZXN7JGtleX17JGt9IC8gJHZhbHVlMyk7DQogICAgICAg
ICRzcGVlZDIgPSBzcHJpbnRmICIlLjJmIiwgKCRyYXRlc3ska2V5fXska30gLyAkdmFsdWUzICog
NjAgLyAxMDI0KTsNCiAgICAgICAgDQogICAgICAgICMgVW5jb21tZW50IHRoaXMgaWYgeW91IHJ1
biBkaWZmZXJlbnRpYWwgaW5jcmVtZW50YWwgYmFja3VwLiAgSXQgZG9lcyBub3Qgd29yayByaWdo
dCBmb3IgY3VtdWxhdGl2ZSBiYWNrdXAuDQogICAgICAgICNwcmludCAkZ3Jvd3RoX3RleHQ7DQoN
CiAgICAgICAgJG1lb3V0IC49ICJTcGVlZCA9PiAkc3BlZWQgS2lsb2J5dGVzL1NlY29uZCwgJHNw
ZWVkMiBNZWdhYnl0ZXMvTWludXRlXG4iOw0KICAgICAgICANCiAgICAgIH0NCiAgICB9ICMgRWFj
aCBmaWVsZA0KICAkbWVvdXQgLj0gIlxuIjsNCiAgfSAjIEVhY2ggRGF0ZQ0KICAkbWVvdXQgLj0g
Ii0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1c
biI7DQogICRjb3JwYmFja3VwMSA9IDA7DQogICRtZGNiYWNrdXAxID0gMDsNCn0NCg0KDQojIEhv
c3QgSW5mb3JtYXRpb24NCmlmICggZGVmaW5lZCgkb3B0c3sndid9KSB8fCBkZWZpbmVkKCRvcHRz
eydjJ30pICkgew0KICBwcmludCAkbWVvdXQ7DQp9DQoNCiMgaWYgc2luZ2xlIGNsaWVudCBvcHRp
b24gaXMgbm90IGRlZmluZSwgdGhlbiBwcmludCB0b3RhbCBzZXJ2ZXIgYmFja3VwLg0KDQppZiAo
ISBkZWZpbmVkKCRvcHRzeydjJ30pICkgew0KDQogICMgUHJpbnQgb3V0IHRoZSB0b3RhbCBzdG9y
YWdlIGVhY2ggZGF5DQogICMgVGhlcmUgYXJlIG9ubHkgdHdvIHR5cGVzIG9mIGJhY2t1cCB0aGF0
IGNhbiBoYXBwZW4gZm9yIHVzIGV2ZXJ5ZGF5LA0KICAjIGEgY3VtdWxhdGl2ZSBiYWNrIG9yIGZ1
bGwgYmFja3VwLiAgQ2xpZW50cyBkb2VzIHRoZWlyIGZ1bGwgYmFja3VwDQogICMgYWNjb3JkaW5n
IHRvIHRoZWlyIG93biBzY2hlZHVsZS4gIFRoYXQncyB3aHkgeW91IHNlZSBmdWxsIGJhY2t1cCBl
dmVyeWRheS4NCiAgcHJpbnQgIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xuIjsNCiAgcHJpbnQg
IiMgTWVkaWEgU2VydmVyIFN1bW1hcnkgI1xuIjsNCiAgcHJpbnQgIiMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjI1xuIjsNCiAgDQogIGZvciBteSAka2V5IChzb3J0IGtleXMgJXNlcnZlcl90b3RhbCkg
IHsNCg0KICAgICMgU2VydmVyIE5hbWUNCiAgICBwcmludCAiKioqICRrZXkgKioqXG4iOw0KICAg
ICMgRWFjaCBEYXRlDQogICAgZm9yIG15ICRrZXkyIChzb3J0IGtleXMgJXskc2VydmVyX3RvdGFs
eyRrZXl9fSkgew0KICAgICAgcHJpbnQgIlska2V5Ml1cbiI7DQogICAgICAkc2l6ZSA9IHNwcmlu
dGYgIiUuMmYiLCAoJHNlcnZlcl90b3RhbHska2V5fXska2V5Mn17J2N1bXVsYXRpdmVfc2l6ZV90
b3RhbCd9IC8gMTAyNCk7DQogICAgICBmb3IgbXkgJGhvc3QgKHNvcnQga2V5cyAleyRzZXJ2ZXJf
dG90YWx7JGtleX17JGtleTJ9eydjdW11bGF0aXZlX2hvc3RzJ319KSB7DQoJJHZhbHVlID0gJHNl
cnZlcl90b3RhbHska2V5fXska2V5Mn17J2N1bXVsYXRpdmVfaG9zdHMnfXskaG9zdH0gLyAxMDI0
Ow0KCSR2YWx1ZSA9IHNwcmludGYgIiUuMmYiLCAkdmFsdWU7DQogICAgICAgICRob3N0cyAuPSAk
aG9zdCAuICIgLSAiIC4gJHZhbHVlIC4gIiBNZWdzXG4iOw0KICAgICAgfQ0KICAgICAgcHJpbnQg
IkN1bXVsYXRpdmUgVG90YWw6ICRzaXplIE1lZ2FieXRlcy4gXG4iOyANCiAgICAgIGlmICggZGVm
aW5lZCgkb3B0c3sndid9KSApIHsNCiAgICAgICAgcHJpbnQgIkhvc3RzOiBcbiRob3N0c1xuIjsN
CiAgICAgIH0NCiAgICAgICRob3N0cyA9ICcnOw0KDQogICAgICAkc2l6ZSA9IHNwcmludGYgIiUu
MmYiLCAoJHNlcnZlcl90b3RhbHska2V5fXska2V5Mn17J2Z1bGxfc2l6ZV90b3RhbCd9IC8gMTAy
NCk7DQogICAgICBmb3IgbXkgJGhvc3QgKHNvcnQga2V5cyAleyRzZXJ2ZXJfdG90YWx7JGtleX17
JGtleTJ9eydmdWxsX2hvc3RzJ319KSB7DQoJJHZhbHVlID0gJHNlcnZlcl90b3RhbHska2V5fXsk
a2V5Mn17J2Z1bGxfaG9zdHMnfXskaG9zdH0gLyAxMDI0Ow0KCSR2YWx1ZSA9IHNwcmludGYgIiUu
MmYiLCAkdmFsdWU7DQogICAgICAgICRob3N0cyAuPSAkaG9zdCAuICIgLSAiIC4gJHZhbHVlIC4g
IiBNZWdzXG4iOw0KICAgICAgfQ0KICAgICAgcHJpbnQgIkZ1bGwgVG90YWw6ICRzaXplIE1lZ2Fi
eXRlc1xuIjsNCiAgICAgIGlmICggZGVmaW5lZCgkb3B0c3sndid9KSApIHsNCiAgICAgICAgcHJp
bnQgIkhvc3RzOiBcbiRob3N0c1xuIjsNCiAgICAgIH0NCiAgICAgICRob3N0cyA9ICcnOw0KICAg
ICAgcHJpbnQgIlxuIjsNCiAgICB9DQogICAgcHJpbnQgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiI7DQogICAgcHJpbnQgIlxuIjsNCiAg
fQ0KICANCn0NCg==

--=__PartADF32618.0__=--

<Prev in Thread] Current Thread [Next in Thread>