From: Xue Peng Li Subject: Re: [ltc-perf] draft of nfs event hook Date: Tue, 22 Aug 2006 18:08:05 +0800 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=_mixed 00373A06482571D2_=" Cc: nfs@lists.sourceforge.net Return-path: In-Reply-To: To: systemtap"> List-Unsubscribe: List-Subscribe: List-Post: List-Help: , Sender: systemtap-owner@sourceware.org List-ID: --=_mixed 00373A06482571D2_= Content-Type: text/plain; charset="GB2312" Content-Transfer-Encoding: base64 SGkgZm9sa3MsDQogICAgVGhpcyBpcyBuZnNkIHRhcHNldCAsd2hpY2ggaW5j bHVkZXMgbmZzZCBwcm9jZWR1cmVzIHN0dWJzIG9uIHNlcnZlciANCnNpZGUg YW5kIG5mc2QgZnVuY3Rpb25zIGNhbGxlZCBieSBjb3JyZXNwb25kaW5nIHBy b2NlZHVyZXMgc3R1YnMuDQpJbiB0aGlzIHRhcHNldCAsIEkgb25seSBwcm9i ZXMgc29tZSBwcm9jZWR1cmVzIHN0dWJzIGFuZCBuZnNkIGZ1bmN0aW9ucyAN Cm5vdCBhbGwgb2YgdGhlbSAuQW5kIHRoaXMgaXMgdGhlIGxhc3QgbmZzIHRh cHNldCwNCkkgaGF2ZSBzZW50IG91dCBhbGwgbmZzIHRhcHNldHMgeWV0Lg0K DQogICAgTm90IGxpa2UgTkZTVjIgYW5kIE5GU1YzLHRoZXJlIGlzIGp1c3Qg b25lIHByb2NlZHVyZSBzdHViIGZvciANCk5GU1Y0LG5mc2Q0X3Byb2NfY29t cG91bmQgLHdoaWNoIHdpbGwgY2FsbCBkaWZmZXJlbmNlIGZ1bmN0aW9uIA0K YWNjb3JkaW5nIHRvIFJQQyByZXF1ZXN0LlNvIHRoZXJlIGlzIG9ubHkgb25l IHByb2JlIHBvaW50IGF0IHByb2MgbGV2ZWwgDQpmb3IgTkZTVjQuU29tZSBu ZnNkIGZ1bmN0aW9ucyBmb3IgTkZTVjQgbGlrZSBuZnNkNF9yZWFkLA0KbmZz ZDRfd3JpdGUgZXRjLGFyZSBzdGF0aWMgaW5saW5lIGZ1bmN0aW9ucyxjYW4n dCBiZSBwcm9iZWQuDQoNCiAgICB0ZWxsIG1lIGlmIHlvdSBoYXZlIGFueSBx dWVzdGlvbnMvY29tbWVudHMgDQoNCiAgICBCVFc6IE15IGtlcm5lbCBpcyAy LjYuMTcuMixjb3VsZCBhbnlvbmUgdGVsbCBtZSB0aGUgTkZTVjQgb2YgdGhp cyANCmtlcm5lbCBpcyAgYXZhaWxhYmxlPw0KDQoNCg0KVGhhbmtzLg0KQmVz dCBSZWdhcmRzLA0KDQpMaSBYdWVwZW5nICAowO7RqcX0KQ0KDQpMaW51eCBQ ZXJmb3JtYW5jZSwgQ2hpbmEgU3lzdGVtcyAmIFRlY2hub2xvZ3kgTGFiDQpD aGluYSBEZXZlbG9wbWVudCBMYWJzLCBCZWlqaW5nDQpFbWFpbDogeHVlcGVu Z2xAY24uaWJtLmNvbQ0KDQpzeXN0ZW10YXAtb3duZXJAc291cmNld2FyZS5v cmcgd3JvdGUgb24gMjAwNi0wOC0xNiAxNjo1NjozMjoNCg0KPiBIaSBmb2xr cw0KPiAgICAgVGhpcyBpcyBhbm90aGVyIG5mcyB0YXBzZXQgYWJvdXQgbmZz IHByb2NlZHVyZXMgc3R1YnMgb24gY2xpZW50IA0Kc2lkZS4gDQo+ICBBbmQg SSB3aWxsIHdyaXRlIG5mcyBwcm9jZWR1cmVzIHN0dWJzIG9uIHNlcnZlciBz aWRlIGF0IG5leHQgc3RlcC4NCj4gDQo+ICAgICBJZiB5b3UgaGF2ZSBhbnkg cXVlc3Rpb25zL3N1Z2dlc3Rpb25zL2NvbW1lbnRzLHBscyB0ZWxsIG1lDQo+ IA0KPiANCj4gDQo+IFRoYW5rcyANCj4gW2F0dGFjaG1lbnQgIm5mc19wcm9j LnN0cCIgZGVsZXRlZCBieSBYdWUgUGVuZyBMaS9DaGluYS9Db250ci9JQk1d IA0K --=_mixed 00373A06482571D2_= Content-Type: application/octet-stream; name="nfsd.stp" Content-Disposition: attachment; filename="nfsd.stp" Content-Transfer-Encoding: base64 JXsKI2luY2x1ZGUgPGxpbnV4L3N1bnJwYy9zdmMuaD4KI2luY2x1ZGUgPGxp bnV4L25mc2QvbmZzZC5oPgojaW5jbHVkZSA8bGludXgvbmZzZC9jYWNoZS5o PgojaW5jbHVkZSA8bGludXgvbmZzZC94ZHIuaD4KI2luY2x1ZGUgPGxpbnV4 L25mc2QveGRyMy5oPgolfQoKJXsKLypHZXQgZmlsZSBoYW5kbGUgZnJvbSBz dHJ1Y3Qgc3ZjX2ZoICovCgljaGFyICogZmhfZm10KHN0cnVjdCBzdmNfZmgg KiBmaHApCgl7CgkJIHN0cnVjdCBrbmZzZF9maCAqZmggPSAmZmhwLT5maF9o YW5kbGU7CgogICAgICAgIAlzdGF0aWMgY2hhciBidWZbODBdOwoJICAgICAg ICBzcHJpbnRmKGJ1ZiwgIiVkOiAlMDh4ICUwOHggJTA4eCAlMDh4ICUwOHgg JTA4eCIsCiAgICAgICAgCSAgICAgICAgZmgtPmZoX3NpemUsCiAgICAgICAg ICAgICAgICAJZmgtPmZoX2Jhc2UuZmhfcGFkWzBdLAoJICAgICAgICAgICAg ICAgIGZoLT5maF9iYXNlLmZoX3BhZFsxXSwKICAgICAgICAJICAgICAgICBm aC0+ZmhfYmFzZS5maF9wYWRbMl0sCgkgICAgICAgICAgICAgICAgZmgtPmZo X2Jhc2UuZmhfcGFkWzNdLAogICAgICAgIAkgICAgICAgIGZoLT5maF9iYXNl LmZoX3BhZFs0XSwKCSAgICAgICAgICAgICAgICBmaC0+ZmhfYmFzZS5maF9w YWRbNV0pOwoJICAgICAgICByZXR1cm4gYnVmOwoJfQolfQovKgoqMSA6IG5m c2QucHJvYzIubG9va3VwCioyIDogbmZzZC5wcm9jMy5sb29rdXAKKjMgOiBu ZnNkLnByb2MyLnJlYWQKKjQgOiBuZnNkLnByb2MzLnJlYWQKKjUgOiBuZnNk LnByb2MyLndyaXRlCio2IDogbmZzZC5wcm9jMy53cml0ZQoqNyA6IG5mc2Qu cHJvYzMuY29tbWl0Cio4IDogbmZzZC5wcm9jMi5jcmVhdGUKKjkgOiBuZnNk LnByb2MzLmNyZWF0ZQoqMTA6IG5mc2QucHJvYzIucmVtb3ZlCioxMTogbmZz ZC5wcm9jMy5yZW1vdmUKKjEyIDpuZnNkLnByb2MyLnJlbmFtZS5mZmgKKjEz IDpuZnNkLnByb2MyLnJlbmFtZS50ZmgKKjE0IDpuZnNkLnByb2MzLnJlbmFt ZS5mZmgKKjE1IDpuZnNkLnByb2MzLnJlbmFtZS50ZmgKKi8KCi8qR2V0IGZp bGUgaGFuZGxlciBmcm9tIGFyZ3AsdGhlIGluZGV4IGluZGljYXRlcyB0aGUg dHlwZSBvZiBhcmdwKi8KZnVuY3Rpb24gX19nZXRfZmg6c3RyaW5nIChhcmdw OmxvbmcsaW5kZXg6bG9uZykKJXsKCWludCBpbmRleCA9IChpbnQpKFRISVMt PmluZGV4KTsKCXN0cnVjdCBuZnNkX2Rpcm9wYXJncyAqIGFyZ3AgPSBOVUxM IDsKCXN0cnVjdCBuZnNkM19kaXJvcGFyZ3MgKiBhcmdwMyA9IE5VTEwgOwoJ c3RydWN0IG5mc2RfcmVhZGFyZ3MgKiBhcmdwciA9IE5VTEw7CglzdHJ1Y3Qg bmZzZDNfcmVhZGFyZ3MgKiBhcmdwcjMgPSBOVUxMOwoJc3RydWN0IG5mc2Rf d3JpdGVhcmdzICogYXJncHcgPSBOVUxMOwoJc3RydWN0IG5mc2QzX3dyaXRl YXJncyAqIGFyZ3B3MyA9IE5VTEw7CglzdHJ1Y3QgbmZzZDNfY29tbWl0YXJn cyAqIGFyZ3BjMyA9IE5VTEw7CglzdHJ1Y3QgbmZzZF9jcmVhdGVhcmdzICph cmdwY3IgPSBOVUxMOwoJc3RydWN0IG5mc2QzX2NyZWF0ZWFyZ3MgKmFyZ3Bj cjMgPSBOVUxMOwoJc3RydWN0IG5mc2RfZGlyb3BhcmdzICphcmdwcmUgPSBO VUxMOwoJc3RydWN0IG5mc2QzX2Rpcm9wYXJncyAqYXJncHJlMyA9IE5VTEw7 CglzdHJ1Y3QgbmZzZF9yZW5hbWVhcmdzICphcmdwcmVuID0gTlVMTDsKCXN0 cnVjdCBuZnNkM19yZW5hbWVhcmdzICphcmdwcmVuMyA9IE5VTEw7CglzdHJ1 Y3Qgc3ZjX2ZoICogZmhwID0gTlVMTDsKCWNoYXIgKiBidWY7CgoJc3dpdGNo KGluZGV4KQoJewoJY2FzZSAxOiBhcmdwID0gKHN0cnVjdCBuZnNkX2Rpcm9w YXJncyAqKVRISVMtPmFyZ3A7CgkJZmhwID0gJmFyZ3AtPmZoOwoJCWJyZWFr OwoJY2FzZSAyOiBhcmdwMyA9IChzdHJ1Y3QgbmZzZDNfZGlyb3BhcmdzICop VEhJUy0+YXJncDsKCQlmaHAgPSAmYXJncDMtPmZoOwoJCWJyZWFrOwoJY2Fz ZSAzOiBhcmdwciA9IChzdHJ1Y3QgbmZzZF9yZWFkYXJncyAqIClUSElTLT5h cmdwOwoJCWZocCA9ICZhcmdwci0+Zmg7CgkJYnJlYWs7CgljYXNlIDQ6IGFy Z3ByMyA9IChzdHJ1Y3QgbmZzZDNfcmVhZGFyZ3MgKiApVEhJUy0+YXJncDsK CQlmaHAgPSAmYXJncHIzLT5maDsKCQlicmVhazsKCWNhc2UgNTogYXJncHcg PSAoc3RydWN0IG5mc2Rfd3JpdGVhcmdzICogKVRISVMtPmFyZ3A7CgkJZmhw ID0gJmFyZ3B3LT5maDsKCQlicmVhazsKCWNhc2UgNjogYXJncHczID0gKHN0 cnVjdCBuZnNkM193cml0ZWFyZ3MgKiApVEhJUy0+YXJncDsKCQlmaHAgPSAm YXJncHczLT5maDsKCQlicmVhazsKCWNhc2UgNzogYXJncGMzID0gKHN0cnVj dCBuZnNkM19jb21taXRhcmdzICogKVRISVMtPmFyZ3A7CgkJZmhwID0gJmFy Z3BjMy0+Zmg7CgkJYnJlYWs7CgljYXNlIDg6IGFyZ3BjciA9IChzdHJ1Y3Qg bmZzZF9jcmVhdGVhcmdzICogKVRISVMtPmFyZ3A7CgkJZmhwID0gJmFyZ3Bj ci0+Zmg7CgkJYnJlYWs7CgljYXNlIDk6IGFyZ3BjcjMgPSAoc3RydWN0IG5m c2QzX2NyZWF0ZWFyZ3MgKiApVEhJUy0+YXJncDsKCQlmaHAgPSAmYXJncGNy My0+Zmg7CgkJYnJlYWs7CgljYXNlIDEwOiBhcmdwcmUgPSAoc3RydWN0IG5m c2RfZGlyb3BhcmdzICogKVRISVMtPmFyZ3A7CgkJZmhwID0gJmFyZ3ByZS0+ Zmg7CgkJYnJlYWs7CgljYXNlIDExOiBhcmdwcmUzID0gKHN0cnVjdCBuZnNk M19kaXJvcGFyZ3MgKiApVEhJUy0+YXJncDsKCQlmaHAgPSAmYXJncHJlMy0+ Zmg7CgkJYnJlYWs7CgljYXNlIDEyOiBhcmdwcmVuID0gKHN0cnVjdCBuZnNk X3JlbmFtZWFyZ3MgKiApVEhJUy0+YXJncDsKCQlmaHAgPSAmYXJncHJlbi0+ ZmZoOwoJCWJyZWFrOwoJY2FzZSAxMzogYXJncHJlbiA9IChzdHJ1Y3QgbmZz ZF9yZW5hbWVhcmdzICogKVRISVMtPmFyZ3A7CgkJZmhwID0gJmFyZ3ByZW4t PnRmaDsKCQlicmVhazsKCWNhc2UgMTQ6IGFyZ3ByZW4zID0gKHN0cnVjdCBu ZnNkM19yZW5hbWVhcmdzICogKVRISVMtPmFyZ3A7CgkJZmhwID0gJmFyZ3By ZW4zLT5mZmg7CgkJYnJlYWs7CgljYXNlIDE1OiBhcmdwcmVuMyA9IChzdHJ1 Y3QgbmZzZDNfcmVuYW1lYXJncyAqIClUSElTLT5hcmdwOwoJCWZocCA9ICZh cmdwcmVuMy0+dGZoOwoJCWJyZWFrOwoJfQoJCglpZihmaHAgPT0gTlVMTCkK CXsKCQlfc3RwX3ByaW50ZigidGhlIGZocCBpcyBOVUxMIik7Cgl9CgllbHNl Cgl7CgkJYnVmID0gZmhfZm10KGZocCk7Ci8vCV9zdHBfcHJpbnRmKCIlczpc biIsYnVmKTsKCQlzdHJsY3B5IChUSElTLT5fX3JldHZhbHVlLGJ1Ziw4MCk7 Cgl9CiV9Ci8qR2V0IGZpbGUgaGFuZGxlciBmcm9tIHN0cnVjdCBzdmNfZmgg LCBpdCB3aWxsIGNhbGwKZmhfZm10IGZ1bmN0aW9uKi8KZnVuY3Rpb24gX19z dmNfZmg6c3RyaW5nKGZoIDpsb25nKQolewoJc3RydWN0IHN2Y19maCAqIGZo cCA9IChzdHJ1Y3Qgc3ZjX2ZoICopIChUSElTLT5maCk7CgljaGFyICogYnVm IDsKCQoJYnVmID0gIGZoX2ZtdChmaHApOyAJCglzdHJsY3B5IChUSElTLT5f X3JldHZhbHVlLGJ1Ziw4MCk7CiV9CgpmdW5jdGlvbiBwX2xvbmc6bG9uZyhj bnQ6bG9uZykKJXsKCXVuc2lnbmVkIGxvbmcgKiBjb3VudCA9ICh1bnNpZ25l ZCBsb25nICopKFRISVMtPmNudCk7CgkKCVRISVMtPl9fcmV0dmFsdWUgPSAq Y291bnQ7CiV9Ci8qCipwcm9iZSBuZnNkLmRpc3BhdGNoCiogIEZpcmVzIHdo ZW4gc2VydmVyIHJlY2VpdmVzIGEgTkZTIG9wZXJhdGlvbiBmcm9tIGNsaWVu dCAKKgoqQXJndW1lbnRzOgoqICBjbGllbnRfaXAgOiB0aGUgaXAgYWRkcmVz cyBvZiBjbGllbnQKKiAgcHJvdG8gOiB0cmFuc2ZlciBwcm90b2NvbAoqICB2 ZXJzaW9uIDogbmZzIHZlcnNpb24KKiAgeGlkIDogdHJhbnNtaXNzaW9uIGlk CiogIHByb2cgOiBwcm9ncmFtIG51bWJlcgoqICBwcm9jIDogcHJvY2VkdXJl IG51bWJlcgoqLwpwcm9iZSBuZnNkLmRpc3BhdGNoID0ga2VybmVsLmZ1bmN0 aW9uKCJuZnNkX2Rpc3BhdGNoIik/LAogICAgICAgICAgICAgICAgICAgICAg bW9kdWxlKCJuZnNkIikuZnVuY3Rpb24oIm5mc2RfZGlzcGF0Y2giKSA/CnsK CWNsaWVudF9pcCA9ICRycXN0cC0+cnFfYWRkci0+c2luX2FkZHItPnNfYWRk cgoJcHJvdG8gPSAkcnFzdHAtPnJxX3Byb3QKCXZlcnNpb24gPSAkcnFzdHAt PnJxX3ZlcnMKCgl4aWQgPSAkcnFzdHAtPnJxX3hpZAoJcHJvZyA9ICRycXN0 cC0+cnFfcHJvZwoJcHJvYyA9ICRycXN0cC0+cnFfcHJvYwoKCW5hbWUgPSAi bmZzZC5kaXNwYXRjaCIKCWFyZ3N0ciA9IHNwcmludGYoIiVkLCVkIix2ZXJz aW9uLHByb3RvKQp9Cgpwcm9iZSBuZnNkLmRpc3BhdGNoLnJldHVybiA9IGtl cm5lbC5mdW5jdGlvbigibmZzZF9kaXNwYXRjaCIpLnJldHVybj8sCiAgICAg ICAgICAgICAgICAgICAgICBtb2R1bGUoIm5mc2QiKS5mdW5jdGlvbigibmZz ZF9kaXNwYXRjaCIpLnJldHVybiA/CnsKCW5hbWUgPSAibmZzZC5kaXNwYXRj aC5yZXR1cm4iCglyZXRzdHIgPSBzcHJpbnRmKCIlZCIsJHJldHVybikKfQoK cHJvYmUgbmZzZC5wcm9jLmVudHJpZXMgPSBuZnNkLnByb2MubG9va3VwLAog ICAgICAgICAgICAgICAgICAgICAgICAgIG5mc2QucHJvYy5yZWFkLAogICAg ICAgICAgICAgICAgICAgICAgICAgIG5mc2QucHJvYy53cml0ZSwKICAgICAg ICAgICAgICAgICAgICAgICAgICBuZnNkLnByb2MuY29tbWl0LAogICAgICAg ICAgICAgICAgICAgICAgICAgIG5mc2QucHJvYy5jb21wb3VuZCwKICAgICAg ICAgICAgICAgICAgICAgICAgICBuZnNkLnByb2MucmVuYW1lLAoJCQkgIG5m c2QucHJvYy5jcmVhdGUKe30gCgpwcm9iZSBuZnNkLnByb2MucmV0dXJuID0g bmZzZC5wcm9jLmxvb2t1cC5yZXR1cm4sCiAgICAgICAgICAgICAgICAgICAg ICAgICAgbmZzZC5wcm9jLnJlYWQucmV0dXJuLAogICAgICAgICAgICAgICAg ICAgICAgICAgIG5mc2QucHJvYy53cml0ZS5yZXR1cm4sCiAgICAgICAgICAg ICAgICAgICAgICAgICAgbmZzZC5wcm9jLmNvbW1pdC5yZXR1cm4sCiAgICAg ICAgICAgICAgICAgICAgICAgICAgbmZzZC5wcm9jLmNvbXBvdW5kLnJldHVy biwKICAgICAgICAgICAgICAgICAgICAgICAgICBuZnNkLnByb2MucmVuYW1l LnJldHVybiwKICAgICAgICAgICAgICAgICAgICAgICAgICBuZnNkLnByb2Mu Y3JlYXRlLnJldHVybgp7fSAKCi8qCipwcm9iZSBuZnNkLnByb2MubG9va3Vw CiogIEZpcmVzIHdoZW4gY2xpZW50IG9wZW5zL3NlYXJjaHMgZmlsZSBvbiBz ZXJ2ZXIKKgoqQXJndW1lbnRzOgoqICBjbGllbnRfaXAgOiB0aGUgaXAgYWRk cmVzcyBvZiBjbGllbnQKKiAgcHJvdG8gOiB0cmFuc2ZlciBwcm90b2NvbAoq ICB2ZXJzaW9uIDogbmZzIHZlcnNpb24KKiAgZmggIDogZmlsZSBoYW5kbGUg b2YgcGFyZW50IGRpciAodGhlIGZpcnN0IHBhcnQgaXMgdGhlIGxlbmd0aCBv ZiB0aGUgZmlsZSBoYW5kbGUpCiogIGZpbGVuYW1lIDogZmlsZSBuYW1lIAoq ICBmaWxlbGVuICA6IHRoZSBsZW5ndGggb2YgZmlsZSBuYW1lCiovCnByb2Jl IG5mc2QucHJvYy5sb29rdXAgPSBuZnNkLnByb2MyLmxvb2t1cCwKICAgICAg ICAgICAgICAgICAgICAgICAgIG5mc2QucHJvYzMubG9va3VwCnt9Cgpwcm9i ZSBuZnNkLnByb2MubG9va3VwLnJldHVybiA9IG5mc2QucHJvYzIubG9va3Vw LnJldHVybiwKICAgICAgICAgICAgICAgICAgICAgICAgIG5mc2QucHJvYzMu bG9va3VwLnJldHVybgp7fQoKcHJvYmUgbmZzZC5wcm9jMi5sb29rdXAgPSBr ZXJuZWwuZnVuY3Rpb24oIm5mc2RfcHJvY19sb29rdXAiKSA/LAogICAgICAg ICAgICAgICAgICAgICAgICAgIG1vZHVsZSgibmZzZCIpLmZ1bmN0aW9uKCJu ZnNkX3Byb2NfbG9va3VwIikgPwp7CgljbGllbnRfaXAgPSAkcnFzdHAtPnJx X2FkZHItPnNpbl9hZGRyLT5zX2FkZHIKCXByb3RvID0gJHJxc3RwLT5ycV9w cm90CiAgICAgICAgdmVyc2lvbiA9ICJORlNWMiIKCWZoID0gX19nZXRfZmgo JGFyZ3AsMSkKCglmaWxlbmFtZSA9IGtlcm5lbF9zdHJpbmcoJGFyZ3AtPm5h bWUpCglmaWxlbGVuID0gJGFyZ3AtPmxlbgoKCW5hbWUgPSAibmZzZC5wcm9j Mi5sb29rdXAiCglhcmdzdHIgPSBzcHJpbnRmKCIlcyIsZmlsZW5hbWUpCn0K CiAKcHJvYmUgbmZzZC5wcm9jMi5sb29rdXAucmV0dXJuID0ga2VybmVsLmZ1 bmN0aW9uKCJuZnNkX3Byb2NfbG9va3VwIikucmV0dXJuID8sCiAgICAgICAg ICAgICAgICAgICAgICAgICAgbW9kdWxlKCJuZnNkIikuZnVuY3Rpb24oIm5m c2RfcHJvY19sb29rdXAiKS5yZXR1cm4gPwp7CgluYW1lID0gIm5mc2QucHJv YzIubG9va3VwLnJldHVybiIKCXZlcnNpb24gPSAiTkZTVjIiCglyZXRzdHIg PSBzcHJpbnRmKCIlZCIsJHJldHVybikKfQoKcHJvYmUgbmZzZC5wcm9jMy5s b29rdXAgPSBrZXJuZWwuZnVuY3Rpb24oIm5mc2QzX3Byb2NfbG9va3VwIikg PywKICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUoIm5mc2QiKS5m dW5jdGlvbigibmZzZDNfcHJvY19sb29rdXAiKSA/CnsKCWNsaWVudF9pcCA9 ICRycXN0cC0+cnFfYWRkci0+c2luX2FkZHItPnNfYWRkcgoJcHJvdG8gPSAk cnFzdHAtPnJxX3Byb3QKICAgICAgICB2ZXJzaW9uID0gIk5GU1YzIgoJZmgg PSBfX2dldF9maCgkYXJncCwxKQoKCWZpbGVuYW1lID0ga2VybmVsX3N0cmlu ZygkYXJncC0+bmFtZSkKCWZpbGVsZW4gPSAkYXJncC0+bGVuCgoJbmFtZSA9 ICJuZnNkLnByb2MzLmxvb2t1cCIKCWFyZ3N0ciA9IHNwcmludGYoIiVzIixm aWxlbmFtZSkKfSAKCnByb2JlIG5mc2QucHJvYzMubG9va3VwLnJldHVybiA9 IGtlcm5lbC5mdW5jdGlvbigibmZzZDNfcHJvY19sb29rdXAiKS5yZXR1cm4g PywKICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUoIm5mc2QiKS5m dW5jdGlvbigibmZzZDNfcHJvY19sb29rdXAiKS5yZXR1cm4gPwp7CgluYW1l ID0gIm5mc2QucHJvYzMubG9va3VwLnJldHVybiIKCXZlcnNpb24gPSAiTkZT VjMiCglyZXRzdHIgPSBzcHJpbnRmKCIlZCIsJHJldHVybikKfQoKCi8qCipw cm9iZSBuZnNkLnByb2MucmVhZAoqICBGaXJlcyB3aGVuIGNsaWVudCByZWFk IGZpbGUgb24gc2VydmVyCioKKkFyZ3VtZW50czoKKiAgY2xpZW50X2lwIDog dGhlIGlwIGFkZHJlc3Mgb2YgY2xpZW50CiogIHByb3RvIDogdHJhbnNmZXIg cHJvdG9jb2wKKiAgdmVyc2lvbiA6IG5mcyB2ZXJzaW9uCiogIGZoICA6IGZp bGUgaGFuZGxlICh0aGUgZmlyc3QgcGFydCBpcyB0aGUgbGVuZ3RoIG9mIHRo ZSBmaWxlIGhhbmRsZSkKKiAgc2l6ZToKKiAgY291bnQgOiByZWFkIGJ5dGVz CiogIG9mZnNldCA6IHRoZSBvZmZzZXQgb2YgZmlsZSAKKiAgdmVjIDogc3Ry dWN0IGt2ZWMgLGluY2x1ZGVzIGJ1ZiBhZGRyZXNzIGluIGtlcm5lbCBhZGRy ZXNzCiAgICAgICAgIGFuZCBsZW5ndGggb2YgZWFjaCBidWZmZXIKKiAgdmxl biA6IHJlYWQgYmxvY2tzIAoqLwpwcm9iZSBuZnNkLnByb2MucmVhZCA9IG5m c2QucHJvYzIucmVhZCwKICAgICAgICAgICAgICAgICAgICAgICBuZnNkLnBy b2MzLnJlYWQKe30KCnByb2JlIG5mc2QucHJvYy5yZWFkLnJldHVybiA9IG5m c2QucHJvYzIucmVhZC5yZXR1cm4sCiAgICAgICAgICAgICAgICAgICAgICAg bmZzZC5wcm9jMy5yZWFkLnJldHVybgp7Cgp9Cgpwcm9iZSBuZnNkLnByb2My LnJlYWQgPSBrZXJuZWwuZnVuY3Rpb24oIm5mc2RfcHJvY19yZWFkIik/LAog ICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUoIm5mc2QiKS5mdW5jdGlv bigibmZzZF9wcm9jX3JlYWQiKT8KewoJY2xpZW50X2lwID0gJHJxc3RwLT5y cV9hZGRyLT5zaW5fYWRkci0+c19hZGRyCglwcm90byA9ICRycXN0cC0+cnFf cHJvdAogICAgICAgIHZlcnNpb24gPSAiTkZTVjIiCglmaCA9IF9fZ2V0X2Zo KCRhcmdwLDMpCgoJY291bnQgPSAkYXJncC0+Y291bnQgCglvZmZzZXQgPSAk YXJncC0+b2Zmc2V0IAoJdmVjID0gJGFyZ3AtPnZlYwoJdmxlbiA9ICRhcmdw LT52bGVuCgoJbmFtZSA9ICJuZnNkLnByb2MyLnJlYWQiCglhcmdzdHIgPSBz cHJpbnRmKCIlZCwlZCIsY291bnQsb2Zmc2V0KQoKICAgICAgICBzaXplID0g Y291bnQKICAgICAgICB1bml0cyA9ICJieXRlcyIKfQoKIApwcm9iZSBuZnNk LnByb2MyLnJlYWQucmV0dXJuID0ga2VybmVsLmZ1bmN0aW9uKCJuZnNkX3By b2NfcmVhZCIpLnJldHVybj8sCiAgICAgICAgICAgICAgICAgICAgICAgIG1v ZHVsZSgibmZzZCIpLmZ1bmN0aW9uKCJuZnNkX3Byb2NfcmVhZCIpLnJldHVy bj8KewoJbmFtZSA9ICJuZnNkLnByb2MyLnJlYWQucmV0dXJuIgoJdmVyc2lv biA9ICJORlNWMiIKCXJldHN0ciA9IHNwcmludGYoIiVkIiwkcmV0dXJuKQp9 Cgpwcm9iZSBuZnNkLnByb2MzLnJlYWQgPSBrZXJuZWwuZnVuY3Rpb24oIm5m c2QzX3Byb2NfcmVhZCIpPywKICAgICAgICAgICAgICAgICAgICAgICAgbW9k dWxlKCJuZnNkIikuZnVuY3Rpb24oIm5mc2QzX3Byb2NfcmVhZCIpPwp7Cglj bGllbnRfaXAgPSAkcnFzdHAtPnJxX2FkZHItPnNpbl9hZGRyLT5zX2FkZHIK CXByb3RvID0gJHJxc3RwLT5ycV9wcm90CiAgICAgICAgdmVyc2lvbiA9ICJO RlNWMyIKCWZoID0gX19nZXRfZmgoJGFyZ3AsNCkKCgljb3VudCA9ICRhcmdw LT5jb3VudCAKCW9mZnNldCA9ICRhcmdwLT5vZmZzZXQgCgl2ZWMgPSAkYXJn cC0+dmVjCgl2bGVuID0gJGFyZ3AtPnZsZW4KCgluYW1lID0gIm5mc2QucHJv YzMucmVhZCIKCWFyZ3N0ciA9IHNwcmludGYoIiVkLCVkIixjb3VudCxvZmZz ZXQpCgogICAgICAgIHNpemUgPSBjb3VudAogICAgICAgIHVuaXRzID0gImJ5 dGVzIgp9CgogCnByb2JlIG5mc2QucHJvYzMucmVhZC5yZXR1cm4gPSBrZXJu ZWwuZnVuY3Rpb24oIm5mc2QzX3Byb2NfcmVhZCIpLnJldHVybj8sCiAgICAg ICAgICAgICAgICAgICAgICAgIG1vZHVsZSgibmZzZCIpLmZ1bmN0aW9uKCJu ZnNkM19wcm9jX3JlYWQiKS5yZXR1cm4/CnsKCW5hbWUgPSAibmZzZC5wcm9j My5yZWFkLnJldHVybiIKCXZlcnNpb24gPSAiTkZTVjMiCglyZXRzdHIgPSBz cHJpbnRmKCIlZCIsJHJldHVybikKfQoKLyoKKnByb2JlIG5mc2QucHJvYy53 cml0ZQoqICBGaXJlcyB3aGVuIGNsaWVudCB3cml0ZXMgZGF0YSB0byAgZmls ZSBvbiBzZXJ2ZXIKKgoqQXJndW1lbnRzOgoqICBjbGllbnRfaXAgOiB0aGUg aXAgYWRkcmVzcyBvZiBjbGllbnQKKiAgcHJvdG8gOiB0cmFuc2ZlciBwcm90 b2NvbAoqICB2ZXJzaW9uIDogbmZzIHZlcnNpb24KKiAgZmggIDogZmlsZSBo YW5kbGUgKHRoZSBmaXJzdCBwYXJ0IGlzIHRoZSBsZW5ndGggb2YgdGhlIGZp bGUgaGFuZGxlKQoqICBzaXplOgoqICBjb3VudCA6IHJlYWQgYnl0ZXMKKiAg b2Zmc2V0IDogdGhlIG9mZnNldCBvZiBmaWxlIAoqICB2ZWMgOiBzdHJ1Y3Qg a3ZlYyAsaW5jbHVkZXMgYnVmIGFkZHJlc3MgaW4ga2VybmVsIGFkZHJlc3MK ICAgICAgICAgYW5kIGxlbmd0aCBvZiBlYWNoIGJ1ZmZlcgoqICB2bGVuIDog cmVhZCBibG9ja3MgCiogIHN0YWJsZSA6IGFyZ3AtPnN0YWJsZShvbmx5IGlu IG5mcy5wcm9jMy53cml0ZSkKKi8KcHJvYmUgbmZzZC5wcm9jLndyaXRlID0g bmZzZC5wcm9jMi53cml0ZSwKICAgICAgICAgICAgICAgICAgICAgICBuZnNk LnByb2MzLndyaXRlCnt9Cgpwcm9iZSBuZnNkLnByb2Mud3JpdGUucmV0dXJu ID0gbmZzZC5wcm9jMi53cml0ZS5yZXR1cm4sCiAgICAgICAgICAgICAgICAg ICAgICAgbmZzZC5wcm9jMy53cml0ZS5yZXR1cm4KewoKfQoKcHJvYmUgbmZz ZC5wcm9jMi53cml0ZSA9IGtlcm5lbC5mdW5jdGlvbigibmZzZF9wcm9jX3dy aXRlIik/LAogICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUoIm5mc2Qi KS5mdW5jdGlvbigibmZzZF9wcm9jX3dyaXRlIik/CnsKCWNsaWVudF9pcCA9 ICRycXN0cC0+cnFfYWRkci0+c2luX2FkZHItPnNfYWRkcgoJcHJvdG8gPSAk cnFzdHAtPnJxX3Byb3QKICAgICAgICB2ZXJzaW9uID0gIk5GU1YyIgoJZmgg PSBfX2dldF9maCgkYXJncCw1KQoKCWNvdW50ID0gJGFyZ3AtPmxlbgoJb2Zm c2V0ID0gJGFyZ3AtPm9mZnNldCAKCXZlYyA9ICRhcmdwLT52ZWMKCXZsZW4g PSAkYXJncC0+dmxlbgoKCW5hbWUgPSAibmZzZC5wcm9jMi53cml0ZSIKCWFy Z3N0ciA9IHNwcmludGYoIiVkLCVkIixjb3VudCxvZmZzZXQpCgogICAgICAg IHNpemUgPSBjb3VudAogICAgICAgIHVuaXRzID0gImJ5dGVzIgp9CgogCnBy b2JlIG5mc2QucHJvYzIud3JpdGUucmV0dXJuID0ga2VybmVsLmZ1bmN0aW9u KCJuZnNkX3Byb2Nfd3JpdGUiKS5yZXR1cm4/LAogICAgICAgICAgICAgICAg ICAgICAgICBtb2R1bGUoIm5mc2QiKS5mdW5jdGlvbigibmZzZF9wcm9jX3dy aXRlIikucmV0dXJuPwp7CgluYW1lID0gIm5mc2QucHJvYzIud3JpdGUucmV0 dXJuIgoJdmVyc2lvbiA9ICJORlNWMiIKCXJldHN0ciA9IHNwcmludGYoIiVk IiwkcmV0dXJuKQp9Cgpwcm9iZSBuZnNkLnByb2MzLndyaXRlID0ga2VybmVs LmZ1bmN0aW9uKCJuZnNkM19wcm9jX3dyaXRlIik/LAogICAgICAgICAgICAg ICAgICAgICAgICBtb2R1bGUoIm5mc2QiKS5mdW5jdGlvbigibmZzZDNfcHJv Y193cml0ZSIpPwp7CgljbGllbnRfaXAgPSAkcnFzdHAtPnJxX2FkZHItPnNp bl9hZGRyLT5zX2FkZHIKCXByb3RvID0gJHJxc3RwLT5ycV9wcm90CiAgICAg ICAgdmVyc2lvbiA9ICJORlNWMyIKCWZoID0gX19nZXRfZmgoJGFyZ3AsNikK Cgljb3VudCA9ICRhcmdwLT5jb3VudCAKCW9mZnNldCA9ICRhcmdwLT5vZmZz ZXQgCgl2ZWMgPSAkYXJncC0+dmVjCgl2bGVuID0gJGFyZ3AtPnZsZW4KCXN0 YWJsZSA9ICRhcmdwLT5zdGFibGUKCgluYW1lID0gIm5mc2QucHJvYzMud3Jp dGUiCglhcmdzdHIgPSBzcHJpbnRmKCIlZCwlZCIsY291bnQsb2Zmc2V0KQoK ICAgICAgICBzaXplID0gY291bnQKICAgICAgICB1bml0cyA9ICJieXRlcyIK fQoKIApwcm9iZSBuZnNkLnByb2MzLndyaXRlLnJldHVybiA9IGtlcm5lbC5m dW5jdGlvbigibmZzZDNfcHJvY193cml0ZSIpLnJldHVybj8sCiAgICAgICAg ICAgICAgICAgICAgICAgIG1vZHVsZSgibmZzZCIpLmZ1bmN0aW9uKCJuZnNk M19wcm9jX3dyaXRlIikucmV0dXJuPwp7CgluYW1lID0gIm5mc2QucHJvYzMu d3JpdGUucmV0dXJuIgoJdmVyc2lvbiA9ICJORlNWMyIKCXJldHN0ciA9IHNw cmludGYoIiVkIiwkcmV0dXJuKQp9CgovKgoqcHJvYmUgbmZzZC5wcm9jLmNv bW1pdAoqICBGaXJlcyB3aGVuIGNsaWVudCBkb2VzIGEgY29tbWl0IG9wZXJh dGlvbix3aGljaCBpcwoqICB1c2VkIHRvIGZsdXNoIHRoZSBkYXRhIHdyaXR0 ZW4gYnkgYXN5bmMgb3BlcmF0aW9uIGJlZm9yZQoqICB0byBkaXNrCioKKkFy Z3VtZW50czoKKiAgY2xpZW50X2lwIDogdGhlIGlwIGFkZHJlc3Mgb2YgY2xp ZW50CiogIHByb3RvIDogdHJhbnNmZXIgcHJvdG9jb2wKKiAgdmVyc2lvbiA6 IG5mcyB2ZXJzaW9uCiogIGZoICA6IGZpbGUgaGFuZGxlICh0aGUgZmlyc3Qg cGFydCBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBmaWxlIGhhbmRsZSkKKiAgc2l6 ZToKKiAgY291bnQgOiByZWFkIGJ5dGVzCiogIG9mZnNldCA6IHRoZSBvZmZz ZXQgb2YgZmlsZSAKKi8KcHJvYmUgbmZzZC5wcm9jLmNvbW1pdCA9ICBuZnNk LnByb2MzLmNvbW1pdAp7fQoKcHJvYmUgbmZzZC5wcm9jLmNvbW1pdC5yZXR1 cm4gPSBuZnNkLnByb2MzLmNvbW1pdC5yZXR1cm4KewoKfQoKcHJvYmUgbmZz ZC5wcm9jMy5jb21taXQgPSBrZXJuZWwuZnVuY3Rpb24oIm5mc2QzX3Byb2Nf Y29tbWl0Iik/LAogICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUoIm5m c2QiKS5mdW5jdGlvbigibmZzZDNfcHJvY19jb21taXQiKT8KewoJY2xpZW50 X2lwID0gJHJxc3RwLT5ycV9hZGRyLT5zaW5fYWRkci0+c19hZGRyCglwcm90 byA9ICRycXN0cC0+cnFfcHJvdAogICAgICAgIHZlcnNpb24gPSAiTkZTVjMi CglmaCA9IF9fZ2V0X2ZoKCRhcmdwLDcpIAoKCWNvdW50ID0gJGFyZ3AtPmNv dW50IAoJb2Zmc2V0ID0gJGFyZ3AtPm9mZnNldCAKCgluYW1lID0gIm5mc2Qu cHJvYzMuY29tbWl0IgoJYXJnc3RyID0gc3ByaW50ZigiJWQsJWQiLGNvdW50 LG9mZnNldCkKCiAgICAgICAgc2l6ZSA9IGNvdW50CiAgICAgICAgdW5pdHMg PSAiYnl0ZXMiCn0KCnByb2JlIG5mc2QucHJvYzMuY29tbWl0LnJldHVybiA9 IGtlcm5lbC5mdW5jdGlvbigibmZzZDNfcHJvY19jb21taXQiKS5yZXR1cm4/ LAogICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUoIm5mc2QiKS5mdW5j dGlvbigibmZzZDNfcHJvY19jb21taXQiKS5yZXR1cm4/CnsKCW5hbWUgPSAi bmZzZC5wcm9jMy5jb21taXQucmV0dXJuIgoJdmVyc2lvbiA9ICJORlNWMyIK CXJldHN0ciA9IHNwcmludGYoIiVkIiwkcmV0dXJuKQp9CgovKgoqcHJvYmUg bmZzZC5wcm9jLmNyZWF0ZQoqIEZpcmVzIHdoZW4gY2xpZW50cyBjcmVhdGUg YSBmaWxlIG9uIHNlcnZlciBzaWRlLgoqCiogQXJndW1lbnRzOgoqICBjbGll bnRfaXAgOiB0aGUgaXAgYWRkcmVzcyBvZiBjbGllbnQKKiAgcHJvdG8gOiB0 cmFuc2ZlciBwcm90b2NvbAoqICB2ZXJzaW9uIDogbmZzIHZlcnNpb24KKiAg ZmggIDogZmlsZSBoYW5kbGUgKHRoZSBmaXJzdCBwYXJ0IGlzIHRoZSBsZW5n dGggb2YgdGhlIGZpbGUgaGFuZGxlKQoqICBmaWxlbmFtZSA6IGZpbGUgbmFt ZQoqICBmaWxlbGVuIDogbGVuZ3RoIG9mIGZpbGUgbmFtZQoqLwpwcm9iZSBu ZnNkLnByb2MuY3JlYXRlID0gbmZzZC5wcm9jMi5jcmVhdGUsCiAgICAgICAg ICAgICAgICAgICAgICAgICBuZnNkLnByb2MzLmNyZWF0ZQp7fQpwcm9iZSBu ZnNkLnByb2MuY3JlYXRlLnJldHVybiA9IG5mc2QucHJvYzIuY3JlYXRlLnJl dHVybiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZnNkLnBy b2MzLmNyZWF0ZS5yZXR1cm4Ke30KCnByb2JlIG5mc2QucHJvYzIuY3JlYXRl ID0ga2VybmVsLmZ1bmN0aW9uKCJuZnNkX3Byb2NfY3JlYXRlIik/LAogICAg ICAgICAgICAgICAgICAgICAgICAgbW9kdWxlKCJuZnNkIikuZnVuY3Rpb24o Im5mc2RfcHJvY19jcmVhdGUiKQp7CgljbGllbnRfaXAgPSAkcnFzdHAtPnJx X2FkZHItPnNpbl9hZGRyLT5zX2FkZHIKCXByb3RvID0gJHJxc3RwLT5ycV9w cm90CiAgICAgICAgdmVyc2lvbiA9ICJORlNWMiIKCWZoID0gX19nZXRfZmgo JGFyZ3AsOCkKCglmaWxlbmFtZSAgPSBrZXJuZWxfc3RyaW5nKCRhcmdwLT5u YW1lKSAKCWZpbGVsZW4gPSAkYXJncC0+bGVuCgoJbmFtZSA9ICJuZnNkLnBy b2MyLmNyZWF0ZSIKCWFyZ3N0ciA9IHNwcmludGYoIiVzIixmaWxlbmFtZSkK fQoKcHJvYmUgbmZzZC5wcm9jMi5jcmVhdGUucmV0dXJuID0gIGtlcm5lbC5m dW5jdGlvbigibmZzZF9wcm9jX2NyZWF0ZSIpLnJldHVybj8sCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSgibmZzZCIpLmZ1bmN0 aW9uKCJuZnNkX3Byb2NfY3JlYXRlIikucmV0dXJuCnsKCW5hbWUgPSAibmZz ZC5wcm9jMi5jcmVhdGUucmV0dXJuIgoJdmVyc2lvbiA9ICJORlNWMiIKCXJl dHN0ciA9IHNwcmludGYoIiVkIiwkcmV0dXJuKQp9Cgpwcm9iZSBuZnNkLnBy b2MzLmNyZWF0ZSA9IGtlcm5lbC5mdW5jdGlvbigibmZzZDNfcHJvY19jcmVh dGUiKT8sCiAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUoIm5mc2Qi KS5mdW5jdGlvbigibmZzZDNfcHJvY19jcmVhdGUiKQp7CgljbGllbnRfaXAg PSAkcnFzdHAtPnJxX2FkZHItPnNpbl9hZGRyLT5zX2FkZHIKCXByb3RvID0g JHJxc3RwLT5ycV9wcm90CiAgICAgICAgdmVyc2lvbiA9ICJORlNWMyIKCWZo ID0gX19nZXRfZmgoJGFyZ3AsOSkKCglmaWxlbmFtZSAgPSBrZXJuZWxfc3Ry aW5nKCRhcmdwLT5uYW1lKSAKCWZpbGVsZW4gPSAkYXJncC0+bGVuCgkKCW5h bWUgPSAibmZzZC5wcm9jMy5jcmVhdGUiCglhcmdzdHIgPSBzcHJpbnRmKCIl cyIsZmlsZW5hbWUpCn0KCnByb2JlIG5mc2QucHJvYzMuY3JlYXRlLnJldHVy biA9ICBrZXJuZWwuZnVuY3Rpb24oIm5mc2QzX3Byb2NfY3JlYXRlIikucmV0 dXJuPywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxl KCJuZnNkIikuZnVuY3Rpb24oIm5mc2QzX3Byb2NfY3JlYXRlIikucmV0dXJu CnsKCW5hbWUgPSAibmZzZC5wcm9jMy5jcmVhdGUucmV0dXJuIgoJdmVyc2lv biA9ICJORlNWMyIKCXJldHN0ciA9IHNwcmludGYoIiVkIiwkcmV0dXJuKQp9 CgovKgoqcHJvYmUgbmZzZC5wcm9jLnJlbW92ZQoqIEZpcmVzIHdoZW4gY2xp ZW50cyByZW1vdmVzIGEgZmlsZSBvbiBzZXJ2ZXIgc2lkZS4KKgoqIEFyZ3Vt ZW50czoKKiAgY2xpZW50X2lwIDogdGhlIGlwIGFkZHJlc3Mgb2YgY2xpZW50 CiogIHByb3RvIDogdHJhbnNmZXIgcHJvdG9jb2wKKiAgdmVyc2lvbiA6IG5m cyB2ZXJzaW9uCiogIGZoICA6IGZpbGUgaGFuZGxlICh0aGUgZmlyc3QgcGFy dCBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBmaWxlIGhhbmRsZSkKKiAgZmlsZW5h bWUgOiBmaWxlIG5hbWUKKiAgZmlsZWxlbiA6IGxlbmd0aCBvZiBmaWxlIG5h bWUKKi8KcHJvYmUgbmZzZC5wcm9jLnJlbW92ZSA9IG5mc2QucHJvYzIucmVt b3ZlLAogICAgICAgICAgICAgICAgICAgICAgICAgbmZzZC5wcm9jMy5yZW1v dmUKe30KcHJvYmUgbmZzZC5wcm9jLnJlbW92ZS5yZXR1cm4gPSBuZnNkLnBy b2MyLnJlbW92ZS5yZXR1cm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbmZzZC5wcm9jMy5yZW1vdmUucmV0dXJuCnt9Cgpwcm9iZSBuZnNk LnByb2MyLnJlbW92ZSA9IGtlcm5lbC5mdW5jdGlvbigibmZzZF9wcm9jX3Jl bW92ZSIpPywKICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSgibmZz ZCIpLmZ1bmN0aW9uKCJuZnNkX3Byb2NfcmVtb3ZlIikKewoJY2xpZW50X2lw ID0gJHJxc3RwLT5ycV9hZGRyLT5zaW5fYWRkci0+c19hZGRyCglwcm90byA9 ICRycXN0cC0+cnFfcHJvdAogICAgICAgIHZlcnNpb24gPSAiTkZTVjIiCglm aCA9IF9fZ2V0X2ZoKCRhcmdwLDEwKQoKCWZpbGVuYW1lICA9IGtlcm5lbF9z dHJpbmcoJGFyZ3AtPm5hbWUpIAoJZmlsZWxlbiA9ICRhcmdwLT5sZW4KCglu YW1lID0gIm5mc2QucHJvYzIucmVtb3ZlIgoJYXJnc3RyID0gc3ByaW50Zigi JXMiLGZpbGVuYW1lKQp9Cgpwcm9iZSBuZnNkLnByb2MyLnJlbW92ZS5yZXR1 cm4gPSAga2VybmVsLmZ1bmN0aW9uKCJuZnNkX3Byb2NfcmVtb3ZlIikucmV0 dXJuPywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxl KCJuZnNkIikuZnVuY3Rpb24oIm5mc2RfcHJvY19yZW1vdmUiKS5yZXR1cm4K ewoJbmFtZSA9ICJuZnNkLnByb2MyLnJlbW92ZS5yZXR1cm4iCgl2ZXJzaW9u ID0gIk5GU1YyIgoJcmV0c3RyID0gc3ByaW50ZigiJWQiLCRyZXR1cm4pCn0K CnByb2JlIG5mc2QucHJvYzMucmVtb3ZlID0ga2VybmVsLmZ1bmN0aW9uKCJu ZnNkM19wcm9jX3JlbW92ZSIpPywKICAgICAgICAgICAgICAgICAgICAgICAg IG1vZHVsZSgibmZzZCIpLmZ1bmN0aW9uKCJuZnNkM19wcm9jX3JlbW92ZSIp CnsKCWNsaWVudF9pcCA9ICRycXN0cC0+cnFfYWRkci0+c2luX2FkZHItPnNf YWRkcgoJcHJvdG8gPSAkcnFzdHAtPnJxX3Byb3QKICAgICAgICB2ZXJzaW9u ID0gIk5GU1YzIgoJZmggPSBfX2dldF9maCgkYXJncCwxMSkKCglmaWxlbmFt ZSAgPSBrZXJuZWxfc3RyaW5nKCRhcmdwLT5uYW1lKSAKCWZpbGVsZW4gPSAk YXJncC0+bGVuCgkKCW5hbWUgPSAibmZzZC5wcm9jMy5yZW1vdmUiCglhcmdz dHIgPSBzcHJpbnRmKCIlcyIsZmlsZW5hbWUpCn0KCnByb2JlIG5mc2QucHJv YzMucmVtb3ZlLnJldHVybiA9ICBrZXJuZWwuZnVuY3Rpb24oIm5mc2QzX3By b2NfcmVtb3ZlIikucmV0dXJuPywKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbW9kdWxlKCJuZnNkIikuZnVuY3Rpb24oIm5mc2QzX3Byb2Nf cmVtb3ZlIikucmV0dXJuPwp7CgluYW1lID0gIm5mc2QucHJvYzMucmVtb3Zl LnJldHVybiIKCXZlcnNpb24gPSAiTkZTVjMiCglyZXRzdHIgPSBzcHJpbnRm KCIlZCIsJHJldHVybikKfQoKLyoKKiBwcm9iZSBuZnNkLnByb2MucmVuYW1l CiogIEZpcmVzIHdoZW4gY2xpZW50cyByZW5hbWUgYSBmaWxlIG9uIHNlcnZl ciBzaWRlCioKKiBBcmd1bWVudHM6CiogICBmaCA6IGZpbGUgaGFuZGxlciBv ZiBvbGQgcGF0aAoqICAgdGZoIDogZmlsZSBoYW5kbGVyIG9mIG5ldyBwYXRo CiogICBmaWxlbmFtZSA6IG9sZCBmaWxlIG5hbWUgCiogICB0bmFtZSA6IG5l dyBmaWxlIG5hbWUKKiAgIGZsZW4gOiBsZW5ndGggb2Ygb2xkIGZpbGUgbmFt ZSAKKiAgIHRsZW4gOiBsZW5ndGggb2YgbmV3IGZpbGUgbmFtZQoqLwpwcm9i ZSBuZnNkLnByb2MucmVuYW1lID0gbmZzZC5wcm9jMi5yZW5hbWUsCiAgICAg ICAgICAgICAgICAgICAgICAgICBuZnNkLnByb2MzLnJlbmFtZQp7fQoKcHJv YmUgbmZzZC5wcm9jLnJlbmFtZS5yZXR1cm4gPSBuZnNkLnByb2MyLnJlbmFt ZS5yZXR1cm4sCiAgICAgICAgICAgICAgICAgICAgICAgICBuZnNkLnByb2Mz LnJlbmFtZS5yZXR1cm4Ke30KCnByb2JlIG5mc2QucHJvYzIucmVuYW1lID0g IGtlcm5lbC5mdW5jdGlvbigibmZzZF9wcm9jX3JlbmFtZSIpPywKICAgICAg ICAgICAgICAgICAgICAgICAgICAgbW9kdWxlKCJuZnNkIikuZnVuY3Rpb24o Im5mc2RfcHJvY19yZW5hbWUiKT8KewoJY2xpZW50X2lwID0gJHJxc3RwLT5y cV9hZGRyLT5zaW5fYWRkci0+c19hZGRyCglwcm90byA9ICRycXN0cC0+cnFf cHJvdAogICAgICAgIHZlcnNpb24gPSAiTkZTVjIiCglmaCA9IF9fZ2V0X2Zo KCRhcmdwLDEyKQoJdGZoID0gX19nZXRfZmgoJGFyZ3AsMTMpCgoJZmlsZW5h bWUgID0ga2VybmVsX3N0cmluZygkYXJncC0+Zm5hbWUpIAoJZmlsZWxlbiA9 ICRhcmdwLT5mbGVuCgl0bmFtZSA9IGtlcm5lbF9zdHJpbmcoJGFyZ3AtPnRu YW1lKQoJdGxlbiA9ICRhcmdwLT50bGVuCgoJbmFtZSA9ICJuZnNkLnByb2My LnJlbmFtZSIKCWFyZ3N0ciA9IHNwcmludGYoIiVzLCVzIixmaWxlbmFtZSx0 bmFtZSkKfQoKcHJvYmUgbmZzZC5wcm9jMi5yZW5hbWUucmV0dXJuID0gIGtl cm5lbC5mdW5jdGlvbigibmZzZDJfcHJvY19yZW5hbWUiKS5yZXR1cm4/LAog ICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUoIm5mc2QiKS5mdW5j dGlvbigibmZzZDJfcHJvY19yZW5hbWUiKS5yZXR1cm4/CnsKCW5hbWUgPSAi bmZzZC5wcm9jMi5yZW5hbWUucmV0dXJuIgoJdmVyc2lvbiA9ICJORlNWMiIK CXJldHN0ciA9IHNwcmludGYoIiVkIiwkcmV0dXJuKQp9Cgpwcm9iZSBuZnNk LnByb2MzLnJlbmFtZSA9ICBrZXJuZWwuZnVuY3Rpb24oIm5mc2QzX3Byb2Nf cmVuYW1lIik/LAogICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUo Im5mc2QiKS5mdW5jdGlvbigibmZzZDNfcHJvY19yZW5hbWUiKT8KewoJY2xp ZW50X2lwID0gJHJxc3RwLT5ycV9hZGRyLT5zaW5fYWRkci0+c19hZGRyCglw cm90byA9ICRycXN0cC0+cnFfcHJvdAogICAgICAgIHZlcnNpb24gPSAiTkZT VjMiCglmaCA9IF9fZ2V0X2ZoKCRhcmdwLDE0KQoJdGZoID0gX19nZXRfZmgo JGFyZ3AsMTUpCgoJZmlsZW5hbWUgID0ga2VybmVsX3N0cmluZygkYXJncC0+ Zm5hbWUpIAoJZmlsZWxlbiA9ICRhcmdwLT5mbGVuCgl0bmFtZSA9IGtlcm5l bF9zdHJpbmcoJGFyZ3AtPnRuYW1lKQoJdGxlbiA9ICRhcmdwLT50bGVuCgoJ bmFtZSA9ICJuZnNkLnByb2MzLnJlbmFtZSIKCWFyZ3N0ciA9IHNwcmludGYo IiVzLCVzIixmaWxlbmFtZSx0bmFtZSkKfQoKcHJvYmUgbmZzZC5wcm9jMy5y ZW5hbWUucmV0dXJuID0gIGtlcm5lbC5mdW5jdGlvbigibmZzZDNfcHJvY19y ZW5hbWUiKS5yZXR1cm4/LAogICAgICAgICAgICAgICAgICAgICAgICAgICBt b2R1bGUoIm5mc2QiKS5mdW5jdGlvbigibmZzZDNfcHJvY19yZW5hbWUiKS5y ZXR1cm4/CnsKCW5hbWUgPSAibmZzZC5wcm9jMy5yZW5hbWUucmV0dXJuIgoJ dmVyc2lvbiA9ICJORlNWMyIKCXJldHN0ciA9IHNwcmludGYoIiVkIiwkcmV0 dXJuKQp9Ci8qCipwcm9iZSBuZnNkLnByb2MuY29tcG91bmQKKiAgIEZpcmVz IHdoZW4gdGhlIHNlcnZlciByZWNlaXZlZCBhIE5GU1Y0IG9wZXJhdGlvbiBm cm9tIGNsaWVudAoqCipBcmd1bWVudHM6CiogIGNsaWVudF9pcCA6IHRoZSBp cCBhZGRyZXNzIG9mIGNsaWVudAoqICBwcm90byA6IHRyYW5zZmVyIHByb3Rv Y29sCiogIHZlcnNpb24gOiBuZnMgdmVyc2lvbgoqICBudW0gOiBudW1iZXIg b2YgZmlsZSBvcGVyYXRpb24gaW4gdGhpcyBSUEMgb3BlcmF0aW9uIAoqICBv cCA6IGhlYWQgb2Ygb3BlcmF0aW9uIGxpc3QgaW4gdGhpcyBjb21wb3VuZCBl eGVjdXRpb24KKi8KcHJvYmUgbmZzZC5wcm9jLmNvbXBvdW5kID0gbmZzZC5w cm9jNC5jb21wb3VuZAp7fQoKcHJvYmUgbmZzZC5wcm9jLmNvbXBvdW5kLnJl dHVybiA9IG5mc2QucHJvYzQuY29tcG91bmQucmV0dXJuCnt9Cgpwcm9iZSBu ZnNkLnByb2M0LmNvbXBvdW5kID0ga2VybmVsLmZ1bmN0aW9uKCJuZnNkNF9w cm9jX2NvbXBvdW5kIik/LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg bW9kdWxlKCJuZnNkIikuZnVuY3Rpb24oIm5mc2Q0X3Byb2NfY29tcG91bmQi KQp7CgljbGllbnRfaXAgPSAkcnFzdHAtPnJxX2FkZHItPnNpbl9hZGRyLT5z X2FkZHIKCXByb3RvID0gJHJxc3RwLT5ycV9wcm90CiAgICAgICAgdmVyc2lv biA9ICJORlNWNCIKCgludW0gPSAkYXJncy0+b3BjbnQKCW9wID0gJGFyZ3Mt Pm9wcwoJCgluYW1lID0gIm5mc2QucHJvYzQuY21wb3VuZCIKCWFyZ3N0ciA9 IHNwcmludGYoIiVkIixudW0pCn0KCnByb2JlIG5mc2QucHJvYzQuY29tcG91 bmQucmV0dXJuID0ga2VybmVsLmZ1bmN0aW9uKCJuZnNkNF9wcm9jX2NvbXBv dW5kIikucmV0dXJuPywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1v ZHVsZSgibmZzZCIpLmZ1bmN0aW9uKCJuZnNkNF9wcm9jX2NvbXBvdW5kIiku cmV0dXJuCnsKCW5hbWUgPSAibmZzZC5wcm9jNC5jb21wb3VuZC5yZXR1cm4i Cgl2ZXJzaW9uID0gIk5GU1Y0IgoJcmV0c3RyID0gc3ByaW50ZigiJWQiLCRy ZXR1cm4pCn0KCnByb2JlIG5mc2QuZW50cmllcyA9IG5mc2Qub3BlbiwKCSAg ICAgICAgICAgICBuZnNkLnJlYWQsCiAgICAgICAgICAgICAgICAgICAgIG5m c2Qud3JpdGUsCiAgICAgICAgICAgICAgICAgICAgIG5mc2QubG9va3VwLAog ICAgICAgICAgICAgICAgICAgICBuZnNkLmNvbW1pdCwKICAgICAgICAgICAg ICAgICAgICAgbmZzZC5jcmVhdGUsCiAgICAgICAgICAgICAgICAgICAgIG5m c2QuY3JlYXRldjMsCiAgICAgICAgICAgICAgICAgICAgIG5mc2QudW5saW5r LAogICAgICAgICAgICAgICAgICAgICBuZnNkLnJlbmFtZSwKICAgICAgICAg ICAgICAgICAgICAgbmZzZC5jbG9zZQp7fQoKcHJvYmUgbmZzZC5yZXR1cm49 IG5mc2Qub3Blbi5yZXR1cm4sCgkgICAgICAgICAgICAgbmZzZC5yZWFkLnJl dHVybiwKICAgICAgICAgICAgICAgICAgICAgbmZzZC53cml0ZS5yZXR1cm4s CiAgICAgICAgICAgICAgICAgICAgIG5mc2QubG9va3VwLnJldHVybiwKICAg ICAgICAgICAgICAgICAgICAgbmZzZC5jb21taXQucmV0dXJuLAogICAgICAg ICAgICAgICAgICAgICBuZnNkLmNyZWF0ZS5yZXR1cm4sCiAgICAgICAgICAg ICAgICAgICAgIG5mc2QuY3JlYXRldjMucmV0dXJuLAogICAgICAgICAgICAg ICAgICAgICBuZnNkLnVubGluay5yZXR1cm4sCiAgICAgICAgICAgICAgICAg ICAgIG5mc2QucmVuYW1lLHJldHVybiwKICAgICAgICAgICAgICAgICAgICAg bmZzZC5jbG9zZS5yZXR1cm4Ke30KLypwcm9iZSBuZnNkLm9wZW4KKiAgRmly ZXMgd2hlbiBzZXJ2ZXIgb3BlbnMgYSBmaWxlCioKKiBBcmd1bWVudHM6Ciog IGZoICA6IGZpbGUgaGFuZGxlICh0aGUgZmlyc3QgcGFydCBpcyB0aGUgbGVu Z3RoIG9mIHRoZSBmaWxlIGhhbmRsZSkKKiAgYWNjZXNzIDogaW5kaWNhdGVz IHRoZSB0eXBlIG9mIG9wZW4ocmVhZC93cml0ZS9jb21taXQvcmVhZGRpci4u LikgCiogIHR5cGUgOiB0eXBlIG9mIGZpbGUocmVndWxhciBmaWxlIG9yIGRp cikKKi8KcHJvYmUgbmZzZC5vcGVuID0ga2VybmVsLmZ1bmN0aW9uKCJuZnNk X29wZW4iKSA/LAogICAgICAgICAgICAgICAgICBtb2R1bGUoIm5mc2QiKS5m dW5jdGlvbigibmZzZF9vcGVuIikKewoJZmggPSBfX3N2Y19maCgkZmhwKQoK CWFjY2VzcyA9ICRhY2Nlc3MKCXR5cGUgPSAkdHlwZQoKCW5hbWUgPSAibmZz ZC5vcGVuIgoJYXJnc3RyID0gc3ByaW50ZigiJWQiLGFjY2VzcykKfQoKcHJv YmUgbmZzZC5vcGVuLnJldHVybiA9IGtlcm5lbC5mdW5jdGlvbigibmZzZF9v cGVuIikucmV0dXJuID8sCiAgICAgICAgICAgICAgICAgIG1vZHVsZSgibmZz ZCIpLmZ1bmN0aW9uKCJuZnNkX29wZW4iKS5yZXR1cm4KewoJbmFtZSA9ICJu ZnNkLm9wZW4ucmV0dXJuIgoJcmV0c3RyID0gc3ByaW50ZigiJWQiLCRyZXR1 cm4pCn0KCi8qcHJvYmUgbmZzZC5jbG9zZQoqICBGaXJlcyB3aGVuIHNlcnZl ciBjbG9zZXMgYSBmaWxlCioKKiBBcmd1bWVudHM6CiogZmlsZW5hbWUgOiBm aWxlIG5hbWUKKi8KcHJvYmUgbmZzZC5jbG9zZSA9IGtlcm5lbC5mdW5jdGlv bigibmZzZF9jbG9zZSIpPywKICAgICAgICAgICAgICAgICAgIG1vZHVsZSgi bmZzZCIpLmZ1bmN0aW9uKCJuZnNkX2Nsb3NlIik/CnsKCWZpbGVuYW1lID0g a2VybmVsX3N0cmluZygkZmlscC0+Zl9kZW50cnktPmRfbmFtZS0+bmFtZSkK CgluYW1lID0gIm5mc2QuY2xvc2UiCglhcmdzdHIgPSBzcHJpbnRmKCIlcyIs ZmlsZW5hbWUpCn0KLypwcm9iZSBuZnNkLnJlYWQKKiAgRmlyZXMgd2hlbiBz ZXJ2ZXIgcmVhZHMgZGF0YSBmcm9tIGEgZmlsZQoqCiogQXJndW1lbnRzOgoq ICBmaCAgOiBmaWxlIGhhbmRsZSAodGhlIGZpcnN0IHBhcnQgaXMgdGhlIGxl bmd0aCBvZiB0aGUgZmlsZSBoYW5kbGUpCiogIGZpbGUgOiBhcmd1bWVudCBm aWxlLGluZGljYXRlcyBpZiB0aGUgZmlsZSBoYXMgYmVlbiBvcGVuZWQuCiog IHNpemU6CiogIGNvdW50IDogcmVhZCBieXRlcwoqICBvZmZzZXQgOiB0aGUg b2Zmc2V0IG9mIGZpbGUgCiogIHZlYyA6IHN0cnVjdCBrdmVjICxpbmNsdWRl cyBidWYgYWRkcmVzcyBpbiBrZXJuZWwgYWRkcmVzcwogICAgICAgICBhbmQg bGVuZ3RoIG9mIGVhY2ggYnVmZmVyCiogIHZsZW4gOiByZWFkIGJsb2NrcyAK Ki8KcHJvYmUgbmZzZC5yZWFkID0ga2VybmVsLmZ1bmN0aW9uKCJuZnNkX3Jl YWQiKSA/LAogICAgICAgICAgICAgICAgICBtb2R1bGUoIm5mc2QiKS5mdW5j dGlvbigibmZzZF9yZWFkIik/CnsKCWZoID0gX19zdmNfZmgoJGZocCkKCglm aWxlID0gJGZpbGUKCWNvdW50ID0gcF9sb25nKCRjb3VudCkKCW9mZnNldCA9 ICRvZmZzZXQKCXZlYyA9ICR2ZWMKCXZsZW4gPSAkdmxlbgoKCW5hbWUgPSAi bmZzZC5yZWFkIgoJYXJnc3RyID0gc3ByaW50ZigiJWQsJWQiLGNvdW50LG9m ZnNlZSkKCglzaXplID0gY291bnQKCXVuaXRzID0gImJ5dGVzIgp9IAoKcHJv YmUgbmZzZC5yZWFkLnJldHVybiA9IGtlcm5lbC5mdW5jdGlvbigibmZzZF9y ZWFkIikucmV0dXJuID8sCiAgICAgICAgICAgICAgICAgIG1vZHVsZSgibmZz ZCIpLmZ1bmN0aW9uKCJuZnNkX3JlYWQiKS5yZXR1cm4/CnsKCW5hbWUgPSAi bmZzZC5yZWFkLnJldHVybiIKCXJldHN0ciA9IHNwcmludGYoIiVkIiwkcmV0 dXJuKQp9CgovKnByb2JlIG5mc2Qud3JpdGUKKiAgRmlyZXMgd2hlbiBzZXJ2 ZXIgd3JpdGVzIGRhdGEgdG8gYSBmaWxlCioKKiBBcmd1bWVudHM6CiogIGZo ICA6IGZpbGUgaGFuZGxlICh0aGUgZmlyc3QgcGFydCBpcyB0aGUgbGVuZ3Ro IG9mIHRoZSBmaWxlIGhhbmRsZSkKKiAgZmlsZSA6IGFyZ3VtZW50IGZpbGUs aW5kaWNhdGVzIGlmIHRoZSBmaWxlIGhhcyBiZWVuIG9wZW5lZC4KKiAgc2l6 ZToKKiAgY291bnQgOiByZWFkIGJ5dGVzCiogIG9mZnNldCA6IHRoZSBvZmZz ZXQgb2YgZmlsZSAKKiAgdmVjIDogc3RydWN0IGt2ZWMgLGluY2x1ZGVzIGJ1 ZiBhZGRyZXNzIGluIGtlcm5lbCBhZGRyZXNzCiAgICAgICAgIGFuZCBsZW5n dGggb2YgZWFjaCBidWZmZXIKKiAgdmxlbiA6IHJlYWQgYmxvY2tzIAoqLwpw cm9iZSBuZnNkLndyaXRlID0ga2VybmVsLmZ1bmN0aW9uKCJuZnNkX3dyaXRl Iik/LAogICAgICAgICAgICAgICAgICAgbW9kdWxlKCJuZnNkIikuZnVuY3Rp b24oIm5mc2Rfd3JpdGUiKT8KewoJZmggPSBfX3N2Y19maCgkZmhwKQoKCWZp bGUgPSAkZmlsZQoJY291bnQgPSAkY250CglvZmZzZXQgPSAkb2Zmc2V0Cgl2 ZWMgPSAkdmVjCgl2bGVuID0gJHZsZW4KCgluYW1lID0gIm5mc2Qud3JpdGUi CglhcmdzdHIgPSBzcHJpbnRmKCIlZCwlZCIsY291bnQsb2Zmc2VlKQoKCXNp emUgPSBjb3VudAoJdW5pdHMgPSAiYnl0ZXMiCn0KCnByb2JlIG5mc2Qud3Jp dGUucmV0dXJuID0ga2VybmVsLmZ1bmN0aW9uKCJuZnNkX3dyaXRlIikucmV0 dXJuPywKICAgICAgICAgICAgICAgICAgIG1vZHVsZSgibmZzZCIpLmZ1bmN0 aW9uKCJuZnNkX3dyaXRlIikucmV0dXJuPwp7CgluYW1lID0gIm5mc2Qud3Jp dGUucmV0dXJuIgoJcmV0c3RyID0gc3ByaW50ZigiJWQiLCRyZXR1cm4pCn0K Ci8qcHJvYmUgbmZzZC5jb21taXQKKiAgRmlyZXMgd2hlbiBzZXJ2ZXIgY29t bWl0cyBhbGwgcGVuZGluZyB3cml0ZXMgdG8gc3RhYmxlIHN0b3JhZ2UuICAK KgoqIEFyZ3VtZW50czoKKiAgZmggIDogZmlsZSBoYW5kbGUgKHRoZSBmaXJz dCBwYXJ0IGlzIHRoZSBsZW5ndGggb2YgdGhlIGZpbGUgaGFuZGxlKQoqICBm bGFnIDogaW5kaWNhdGVzIHdoZXRoZXIgdGhpcyBleGVjdXRpb24gaXMgYSBz eW5jIG9wZXJhdGlvbgoqICBzaXplOgoqICBjb3VudCA6IHJlYWQgYnl0ZXMK KiAgb2Zmc2V0IDogdGhlIG9mZnNldCBvZiBmaWxlCiovCnByb2JlIG5mc2Qu Y29tbWl0ID0ga2VybmVsLmZ1bmN0aW9uKCJuZnNkX2NvbW1pdCIpPywKICAg ICAgICAgICAgICAgICAgICBtb2R1bGUoIm5mc2QiKS5mdW5jdGlvbigibmZz ZF9jb21taXQiKT8KewoJZmggPSBfX3N2Y19maCgkZmhwKQoKCWNvdW50ID0g JGNvdW50CglvZmZzZXQgPSAkb2Zmc2V0CglmbGFnID0gJGZocC0+ZmhfZXhw b3J0LT5leF9mbGFncwoKCW5hbWUgPSAibmZzZC5jb21taXQiCglhcmdzdHIg PSBzcHJpbnRmKCIlZCwlZCIsY291bnQsb2Zmc2V0KQoKCXNpemUgPSBjb3Vu dCAKCXVuaXRzID0gImJ5dGVzIgp9Cgpwcm9iZSBuZnNkLmNvbW1pdC5yZXR1 cm4gPSBrZXJuZWwuZnVuY3Rpb24oIm5mc2RfY29tbWl0IikucmV0dXJuPywK ICAgICAgICAgICAgICAgICAgICBtb2R1bGUoIm5mc2QiKS5mdW5jdGlvbigi bmZzZF9jb21taXQiKS5yZXR1cm4gPwp7CgluYW1lID0gIm5mc2QuY29tbWl0 LnJldHVybiIKCXJldHN0ciA9IHNwcmludGYoIiVkIiwkcmV0dXJuKQp9Cgov KgoqcHJvYmUgbmZzZC5sb29rdXAKKiAgRmlyZXMgd2hlbiBjbGllbnQgb3Bl bnMvc2VhcmNocyBmaWxlIG9uIHNlcnZlcgoqCipBcmd1bWVudHM6CiogIGZo ICA6IGZpbGUgaGFuZGxlIG9mIHBhcmVudCBkaXIodGhlIGZpcnN0IHBhcnQg aXMgdGhlIGxlbmd0aCBvZiB0aGUgZmlsZSBoYW5kbGUpCiogIGZpbGVuYW1l IDogZmlsZSBuYW1lIAoqICBmaWxlbGVuICA6IHRoZSBsZW5ndGggb2YgZmls ZSBuYW1lCiovCgpwcm9iZSBuZnNkLmxvb2t1cCA9IGtlcm5lbC5mdW5jdGlv bigibmZzZF9sb29rdXAiKT8sCiAgICAgICAgICAgICAgICAgICAgbW9kdWxl KCJuZnNkIikuZnVuY3Rpb24oIm5mc2RfbG9va3VwIik/CnsKCWZoID0gX19z dmNfZmgoJGZocCkKCglmaWxlbmFtZSA9IGtlcm5lbF9zdHJpbmcoJG5hbWUp CglmaWxlbGVuID0gJGxlbgoKCW5hbWUgPSAibmZzZC5sb29rdXAiCglhcmdz dHIgPSBzcHJpbnRmKCIlcyIsZmlsZW5hbWUpCn0KCnByb2JlIG5mc2QubG9v a3VwLnJldHVybiA9IGtlcm5lbC5mdW5jdGlvbigibmZzZF9sb29rdXAiKS5y ZXR1cm4/LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlKCJu ZnNkIikuZnVuY3Rpb24oIm5mc2RfbG9va3VwIikucmV0dXJuPwp7CgluYW1l ID0gIm5mc2QubG9va3VwLnJldHVybiIKCXJldHN0ciA9IHNwcmludGYoIiVk IiwkcmV0dXJuKQp9Ci8qCiogcHJvYmUgbmZzZC5jcmVhdGUKKiAgRmlyZXMg d2hlbiBjbGllbnQgY3JlYXRlcyBhIGZpbGUocmVndWxhcixkaXIsZGV2aWNl LGZpZm8pIG9uIHNlcnZlciBzaWRlLAoqICBzb21ldGltZXMgbmZzZCB3aWxs IGNhbGwgbmZzZF9jcmVhdGVfdjMgaW5zdGVhZCBvZiB0aGlzIGZ1bmN0aW9u CioKKiBBcmd1bWVudHM6CioKKiAgZmggIDogZmlsZSBoYW5kbGUgKHRoZSBm aXJzdCBwYXJ0IGlzIHRoZSBsZW5ndGggb2YgdGhlIGZpbGUgaGFuZGxlKQoq ICBmaWxlbmFtZSA6IGZpbGUgbmFtZSAKKiAgZmlsZWxlbiAgOiB0aGUgbGVu Z3RoIG9mIGZpbGUgbmFtZQoqICB0eXBlIDogZmlsZSB0eXBlKHJlZ3VsYXIs ZGlyLGRldmljZSxmaWZvIC4uLikKKiAgaWFwOiBpbm9kZSBhdHRyaWJ1dGVz IAoqLwpwcm9iZSBuZnNkLmNyZWF0ZSA9IGtlcm5lbC5mdW5jdGlvbigibmZz ZF9jcmVhdGUiKT8sICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgbW9k dWxlKCJuZnNkIikuZnVuY3Rpb24oIm5mc2RfY3JlYXRlIik/CnsKCWZoID0g X19zdmNfZmgoJGZocCkKCglmaWxlbmFtZSA9IGtlcm5lbF9zdHJpbmcoJGZu YW1lKQoJZmlsZWxlbiA9ICRmbGVuCgl0eXBlID0gJHR5cGUKCWlhcCA9ICRp YXAKCgluYW1lID0gIm5mc2QuY3JlYXRlIgoJYXJnc3RyID0gc3ByaW50Zigi JXMsJWQiLGZpbGVuYW1lLGlhcCkKfQoKcHJvYmUgbmZzZC5jcmVhdGUucmV0 dXJuID0ga2VybmVsLmZ1bmN0aW9uKCJuZnNkX2NyZWF0ZSIpLnJldHVybj8s ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgbW9kdWxlKCJuZnNkIiku ZnVuY3Rpb24oIm5mc2RfY3JlYXRlIikucmV0dXJuPwp7CgluYW1lID0gIm5m c2QuY3JlYXRlLnJldHVybiIKCXJldHN0ciA9IHNwcmludGYoIiVkIiwkcmV0 dXJuKQp9CgovKgoqIHByb2JlIG5mc2QuY3JlYXRldjMKKiAgRmlyZXMgd2hl biBjbGllbnQgY3JlYXRlcyBhIHJlZ3VsYXIgZmlsZSBvciBzZXQgZmlsZSBh dHRyaWJ1dGVzIG9uIHNlcnZlciBzaWRlLAoqICBvbmx5IGNhbGxlZCBieSBu ZnNkM19wcm9jX2NyZWF0ZSBhbmQgbmZzZDRfb3BlbihvcF9jbGFpbV90eXBl IGlzIE5GUzRfT1BFTl9DTEFJTV9OVUxMKQoqCiogQXJndW1lbnRzOgoqCiog IGZoICA6IGZpbGUgaGFuZGxlICh0aGUgZmlyc3QgcGFydCBpcyB0aGUgbGVu Z3RoIG9mIHRoZSBmaWxlIGhhbmRsZSkKKiAgZmlsZW5hbWUgOiBmaWxlIG5h bWUgCiogIGZpbGVsZW4gIDogdGhlIGxlbmd0aCBvZiBmaWxlIG5hbWUKKiAg aWFwIDogaW5vZGUgYXR0cmlidXRlcyAKKiAgY3JlYXRlbW9kZSA6IGNyZWF0 ZSBtb2RlIC5UaGUgcG9zc2libGUgdmFsdWVzIGNvdWxkIGJlOgoqCU5GUzNf Q1JFQVRFX0VYQ0xVU0lWRSxORlMzX0NSRUFURV9VTkNIRUNLRUQsTkZTM19D UkVBVEVfR1VBUkRFRAoqICB0cnVuY3AgOiB0cnVucCBhcmd1bWVudHMsIGlu ZGljYXRlcyBpZiB0aGUgZmlsZSBzaG91bGRiZSB0cnVuY2F0ZQoqICB2ZXJm aWVyIDogIGZpbGUgYXR0cmlidXRlcyAoYXRpbWUsbXRpbWUsbW9kZSkuSXQn cyB1c2VkIHRvIHJlc2V0IGZpbGUKICAgICAgICAgICAgICBhdHRyaWJ1dGVz IGZvciBDUkVBVEVfRVhDTFVTSVZFCiovCnByb2JlIG5mc2QuY3JlYXRldjMg PSBrZXJuZWwuZnVuY3Rpb24oIm5mc2RfY3JlYXRlX3YzIik/LCAgICAgICAg IAogICAgICAgICAgICAgICAgICAgIG1vZHVsZSgibmZzZCIpLmZ1bmN0aW9u KCJuZnNkX2NyZWF0ZV92MyIpPwp7CglmaCA9IF9fc3ZjX2ZoKCRmaHApCgoJ ZmlsZW5hbWUgPSBrZXJuZWxfc3RyaW5nKCRmbmFtZSkKCWZpbGVsZW4gPSAk ZmxlbgoJaWFfbW9kZSA9ICRpYXAKCXRydW5jcCA9ICR0cnVuY3AKCXZlcmZp ZXIgPSAkdmVyaWZpZXIKCWNyZWF0ZW1vZGUgPSAkY3JlYXRlbW9kZQoKCW5h bWUgPSAibmZzZC5jcmVhdGV2MyIKCWFyZ3N0ciA9IHNwcmludGYoIiVzLCVk IixmaWxlbmFtZSxjcmVhdGVtb2RlKQp9Cgpwcm9iZSBuZnNkLmNyZWF0ZXYz LnJldHVybiA9IGtlcm5lbC5mdW5jdGlvbigibmZzZF9jcmVhdGVfdjMiKS5y ZXR1cm4/LCAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIG1vZHVsZSgi bmZzZCIpLmZ1bmN0aW9uKCJuZnNkX2NyZWF0ZV92MyIpLnJldHVybj8KewoJ bmFtZSA9ICJuZnNkLmNyZWF0ZXYzLnJldHVybiIKCXJldHN0ciA9IHNwcmlu dGYoIiVkIiwkcmV0dXJuKQp9CgovKgoqIHByb2JlIG5mc2QudW5saW5rCiog IEZpcmVzIHdoZW4gY2xpZW50IHJlbW92ZXMgYSBmaWxlIG9yIGEgZGlyICBv biBzZXJ2ZXIgc2lkZSwKKgoqIEFyZ3VtZW50czoKKgoqICBmaCAgOiBmaWxl IGhhbmRsZSAodGhlIGZpcnN0IHBhcnQgaXMgdGhlIGxlbmd0aCBvZiB0aGUg ZmlsZSBoYW5kbGUpCiogIGZpbGVuYW1lIDogZmlsZSBuYW1lIAoqICBmaWxl bGVuICA6IHRoZSBsZW5ndGggb2YgZmlsZSBuYW1lCiogIHR5cGUgOiBmaWxl IHR5cGUoZmlsZSBvciBkaXIpCiovCnByb2JlIG5mc2QudW5saW5rID0ga2Vy bmVsLmZ1bmN0aW9uKCJuZnNkX3VubGluayIpPywgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICBtb2R1bGUoIm5mc2QiKS5mdW5jdGlvbigibmZzZF91 bmxpbmsiKT8KewoJZmggPSBfX3N2Y19maCgkZmhwKQoKCWZpbGVuYW1lID0g a2VybmVsX3N0cmluZygkZm5hbWUpCglmaWxlbGVuID0gJGZsZW4KCXR5cGUg PSAkdHlwZQoKCW5hbWUgPSAibmZzZC51bmxpbmsiCglhcmdzdHIgPSBzcHJp bnRmKCIlcywlZCIsZmlsZW5hbWUsaWFwKQp9Cgpwcm9iZSBuZnNkLnVubGlu ay5yZXR1cm4gPSBrZXJuZWwuZnVuY3Rpb24oIm5mc2RfdW5saW5rIikucmV0 dXJuPywgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBtb2R1bGUoIm5m c2QiKS5mdW5jdGlvbigibmZzZF91bmxpbmsiKS5yZXR1cm4/CnsKCW5hbWUg PSAibmZzZC51bmxpbmsucmV0dXJuIgoJcmV0c3RyID0gc3ByaW50ZigiJWQi LCRyZXR1cm4pCn0KCi8qCiogcHJvYmUgbmZzZC5yZW5hbWUKKiAgRmlyZXMg d2hlbiBjbGllbnRzIHJlbmFtZSBhIGZpbGUgb24gc2VydmVyIHNpZGUKKgoq IEFyZ3VtZW50czoKKiAgIGZoIDogZmlsZSBoYW5kbGVyIG9mIG9sZCBwYXRo CiogICB0ZmggOiBmaWxlIGhhbmRsZXIgb2YgbmV3IHBhdGgKKiAgIGZpbGVu YW1lIDogb2xkIGZpbGUgbmFtZSAKKiAgIHRuYW1lIDogbmV3IGZpbGUgbmFt ZQoqICAgZmxlbiA6IGxlbmd0aCBvZiBvbGQgZmlsZSBuYW1lIAoqICAgdGxl biA6IGxlbmd0aCBvZiBuZXcgZmlsZSBuYW1lCiovCgpwcm9iZSBuZnNkLnJl bmFtZSA9ICBrZXJuZWwuZnVuY3Rpb24oIm5mc2RfcmVuYW1lIik/LAogICAg ICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUoIm5mc2QiKS5mdW5jdGlv bigibmZzZF9yZW5hbWUiKT8KewoJZmggPSBfX3N2Y19maCgkZmZocCkKCXRm aCA9IF9fc3ZjX2ZoKCR0ZmhwKQoKCWZpbGVuYW1lICA9IGtlcm5lbF9zdHJp bmcoJGZuYW1lKSAKCWZpbGVsZW4gPSAkZmxlbgoJdG5hbWUgPSBrZXJuZWxf c3RyaW5nKCR0bmFtZSkKCXRsZW4gPSAkdGxlbgoKCW5hbWUgPSAibmZzZC5y ZW5hbWUiCglhcmdzdHIgPSBzcHJpbnRmKCIlcywlcyIsZmlsZW5hbWUsdG5h bWUpCn0KCnByb2JlIG5mc2QucmVuYW1lLnJldHVybiA9ICBrZXJuZWwuZnVu Y3Rpb24oIm5mc2RfcmVuYW1lIikucmV0dXJuPywKICAgICAgICAgICAgICAg ICAgICAgICAgICAgbW9kdWxlKCJuZnNkIikuZnVuY3Rpb24oIm5mc2RfcmVu YW1lIikucmV0dXJuPwp7CgluYW1lID0gIm5mc2QucmVuYW1lLnJldHVybiIK CXJldHN0ciA9IHNwcmludGYoIiVkIiwkcmV0dXJuKQp9Cg== --=_mixed 00373A06482571D2_=--