From: Xue Peng Li Subject: Re: [ltc-perf] draft of nfs event hook Date: Wed, 16 Aug 2006 16:56:32 +0800 Message-ID: References: <44DBE409.4080907@cn.ibm.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=_mixed 0030AE97482571CC_=" Cc: nfs@lists.sourceforge.net Return-path: In-Reply-To: <44DBE409.4080907@cn.ibm.com> To: "systemtap@sourceware.org" List-Unsubscribe: List-Subscribe: List-Post: List-Help: , Sender: systemtap-owner@sourceware.org List-ID: --=_mixed 0030AE97482571CC_= Content-Type: text/plain; charset="US-ASCII" Hi folks This is another nfs tapset about nfs procedures stubs on client side. And I will write nfs procedures stubs on server side at next step. If you have any questions/suggestions/comments,pls tell me Thanks --=_mixed 0030AE97482571CC_= Content-Type: application/octet-stream; name="nfs_proc.stp" Content-Disposition: attachment; filename="nfs_proc.stp" Content-Transfer-Encoding: base64 JXsKCSNpbmNsdWRlIDxsaW51eC9uZnNfZnMuaD4KJX0KCiV7Ci8qR2V0IGlw IGFkZHJlc3MgZnJvbSBhIHJwY190YXNrKi8KCV9fdTMyIGdldF9pcChzdHJ1 Y3QgcnBjX3Rhc2sgKik7Ci8qR2V0IHByb3RvY29sIHR5cGVzIGZyb20gYSBy cGNfdGFzayovCglpbnQgZ2V0X3Byb3Qoc3RydWN0IHJwY190YXNrICopOwol fQolewogICAgIF9fdTMyIGdldF9pcChzdHJ1Y3QgcnBjX3Rhc2sgKiB0YXNr KQogICAgIHsKICAgICAgICBzdHJ1Y3QgcnBjX2NsbnQgKiB0a19jbGllbnQ7 CiAgICAgICAgc3RydWN0IHJwY194cHJ0ICogY2xfeHBydDsKICAgICAgICB0 a19jbGllbnQgPSB0YXNrLT50a19jbGllbnQ7CiAgICAgICAgY2xfeHBydD0g dGtfY2xpZW50LT5jbF94cHJ0OwoKICAgICAgICByZXR1cm4gY2xfeHBydC0+ YWRkci5zaW5fYWRkci5zX2FkZHI7CiAgICAgfQogICAgIGludCBnZXRfcHJv dChzdHJ1Y3QgcnBjX3Rhc2sgKiB0YXNrKQogICAgIHsKICAgICAgICBzdHJ1 Y3QgcnBjX2NsbnQgKiB0a19jbGllbnQ7CiAgICAgICAgc3RydWN0IHJwY194 cHJ0ICogY2xfeHBydDsKICAgICAgICB0a19jbGllbnQgPSB0YXNrLT50a19j bGllbnQ7CiAgICAgICAgY2xfeHBydD0gdGtfY2xpZW50LT5jbF94cHJ0OwoK ICAgICAgICByZXR1cm4gY2xfeHBydC0+cHJvdDsKICAgIH0KJX0KLyoKICAw OmdldCBpcCBhZGRyZXNzCiAgMTpnZXQgcHJvdG8KKi8KZnVuY3Rpb24gX19p Mm5faXBfcHJvdG8gOmxvbmcoZGlyOmxvbmcsaW5kZXg6bG9uZykKJXsKCWlu dCBpbmRleCA9IChpbnQpIChUSElTLT5pbmRleCk7CglzdHJ1Y3QgaW5vZGUg KiBkaXIgPSAoc3RydWN0IGlub2RlICopKFRISVMtPmRpcik7CiAgICAgICAg c3RydWN0IHJwY19jbG50ICogY2xudCA9IE5GU19DTElFTlQoZGlyKTsKICAg ICAgICBzdHJ1Y3QgcnBjX3hwcnQgKiBjbF94cHJ0ID0gY2xudC0+Y2xfeHBy dDsKICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gKiBhZGRyID0gJihjbF94 cHJ0LT5hZGRyKTsKCiAgICAgICAgaWYoaW5kZXggPT0gMCkKCQlUSElTLT5f X3JldHZhbHVlID0gYWRkci0+c2luX2FkZHIuc19hZGRyOwogICAgICAgIGVs c2UKCQlUSElTLT5fX3JldHZhbHVlID0gY2xfeHBydC0+cHJvdDsKJX0KCi8q CiAgMDpnZXQgaXAgYWRkcmVzcwogIDE6Z2V0IHByb3RvCiovCmZ1bmN0aW9u IF9fbmZzX2RhdGFfaXBfcHJvdG86bG9uZyAocmRhdGEgOmxvbmcsaW5kZXgg OmxvbmcpCiV7CiAgICAgICAgaW50IGluZGV4ID0gKGludCkoVEhJUy0+aW5k ZXgpOwogICAgICAgIHN0cnVjdCBuZnNfcmVhZF9kYXRhICogcmRhdGEgPSAo c3RydWN0IG5mc19yZWFkX2RhdGEgKikoVEhJUy0+cmRhdGEpOwoJc3RydWN0 IHJwY190YXNrICAgICp0YXNrID0gJihyZGF0YS0+dGFzayk7CgoJaWYoaW5k ZXggPT0gMCkKCQlUSElTLT5fX3JldHZhbHVlID0gZ2V0X2lwKHRhc2spOwoJ ZWxzZQoJCVRISVMtPl9fcmV0dmFsdWUgPSBnZXRfcHJvdCh0YXNrKTsKJX0K CmZ1bmN0aW9uIF9fbmZzdjRfYml0bWFzayA6bG9uZyhkaXI6bG9uZyxpOmxv bmcpCiV7CiAgICAgICAgaW50IGkgPSAoaW50KSAoVEhJUy0+aSk7CglzdHJ1 Y3QgaW5vZGUgKiBkaXIgPSAoc3RydWN0IGlub2RlICopKFRISVMtPmRpcik7 CiAgICAgICAgc3RydWN0IG5mc19zZXJ2ZXIgKiBzZXJ2ZXIgPSBORlNfU0VS VkVSKGRpcik7CgogICAgICAgIFRISVMtPl9fcmV0dmFsdWUgPSBzZXJ2ZXIt PmF0dHJfYml0bWFza1tpXTsKCiV9Cgpwcm9iZSBuZnMucHJvYy5lbnRyaWVz ID0gbmZzLnByb2MubG9va3VwLAoJCQluZnMucHJvYy5yZWFkLAoJCQluZnMu cHJvYy53cml0ZSwKCQkJbmZzLnByb2MuY29tbWl0LAoJCQluZnMucHJvYy5y ZWFkX3NldHVwLAoJCQluZnMucHJvYy53cml0ZV9zZXR1cCwKCQkJbmZzLnBy b2MuY29tbWl0X3NldHVwLAoJCQluZnMucHJvYy5yZWFkX2RvbmUsCgkJCW5m cy5wcm9jLndyaXRlX2RvbmUsCgkJCW5mcy5wcm9jLmNvbW1pdF9kb25lLAoJ CQluZnMucHJvYy5vcGVuLAoJCQluZnMucHJvYy5yZWxlYXNlCnsKfQoKCnBy b2JlIG5mcy5wcm9jLnJldHVybiA9IG5mcy5wcm9jLmxvb2t1cC5yZXR1cm4s CgkJCW5mcy5wcm9jLnJlYWQucmV0dXJuLAoJCQluZnMucHJvYy53cml0ZS5y ZXR1cm4sCgkJCW5mcy5wcm9jLmNvbW1pdC5yZXR1cm4sCgkJCW5mcy5wcm9j LnJlYWRfZG9uZS5yZXR1cm4sCgkJCW5mcy5wcm9jLndyaXRlX2RvbmUucmV0 dXJuLAoJCQluZnMucHJvYy5jb21taXRfZG9uZS5yZXR1cm4sCgkJCW5mcy5w cm9jLm9wZW4ucmV0dXJuLAoJCQluZnMucHJvYy5yZWxlYXNlLnJldHVybiAg CnsKfQoKLyoKKnByb2JlIG5mcy5wcm9jLmxvb2t1cAoqCiogRmlyZXMgd2hl biBjbGllbnQgb3BlbnMvc2VhcmNocyBhIGZpbGUgb24gc2VydmVyCioKKiBB cmd1bWVudHM6CiogICBzZXJ2ZXJfaXAgOiBpcCBhZGRyZXNzIG9mIHNlcnZl cgoqICAgcHJvdCAgOiB0cmFuc2ZlciBwcm90b2NvbAoqICAgdmVyc2lvbiA6 IG5mcyB2ZXJzaW9uCiogICBmaWxlbmFtZSA6IHRoZSBuYW1lIG9mICBmaWxl IHdoaWNoIGNsaWVudCBvcGVucy9zZWFyY2hzIG9uIHNlcnZlcgoqICAgbmFt ZV9sZW4gOiB0aGUgbGVuZ3RoIG9mIGZpbGUgbmFtZQoqICAgYml0bWFzazA6 CiogICBiaXRtYXNrMSA6VjQgYml0bWFzayByZXByZXNlbnRpbmcgdGhlIHNl dCBvZiBhdHRyaWJ1dGVzIAoqICAgICAgICAgICAgIHN1cHBvcnRlZCBvbiB0 aGlzIGZpbGVzeXN0ZW0gKG9ubHkgaW4gcHJvYmUgbmZzLnByb2M0Lmxvb2t1 cCkKKiAKKi8KcHJvYmUgbmZzLnByb2MubG9va3VwID0gbmZzLnByb2MyLmxv b2t1cCwKICAgICAgICAgICAgICAgICAgICAgICAgbmZzLnByb2MzLmxvb2t1 cCwKICAgICAgICAgICAgICAgICAgICAgICAgbmZzLnByb2M0Lmxvb2t1cAp7 Cn0KCnByb2JlIG5mcy5wcm9jLmxvb2t1cC5yZXR1cm4gPSBuZnMucHJvYzIu bG9va3VwLnJldHVybiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG5mcy5wcm9jMy5sb29rdXAucmV0dXJuLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbmZzLnByb2M0Lmxvb2t1cC5yZXR1cm4Ke30KCnByb2Jl IG5mcy5wcm9jMi5sb29rdXAgPSBrZXJuZWwuZnVuY3Rpb24oIm5mc19wcm9j X2xvb2t1cCIpPywKICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSgi bmZzIikuZnVuY3Rpb24oIm5mc19wcm9jX2xvb2t1cCIpPwp7CglzZXJ2ZXJf aXAgPSBfX2kybl9pcF9wcm90bygkZGlyLDApCiAgICAgICAgcHJvdCAgID0g X19pMm5faXBfcHJvdG8oJGRpciwxKQogICAgICAgIHZlcnNpb24gPSAiTkZT VjIiCgoJZmlsZW5hbWUgPSBrZXJuZWxfc3RyaW5nKCRuYW1lLT5uYW1lKQog ICAgICAgIG5hbWVfbGVuID0gJG5hbWUtPmxlbgoKICAgICAgICBuYW1lID0g Im5mcy5wcm9jMi5sb29rdXAiCiAgICAgICAgYXJnc3RyID0gc3ByaW50Zigi JXMiLGZpbGVuYW1lKSAKfQoKcHJvYmUgbmZzLnByb2MyLmxvb2t1cC5yZXR1 cm4gPSBrZXJuZWwuZnVuY3Rpb24oIm5mc19wcm9jX2xvb2t1cCIpLnJldHVy bj8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlKCJu ZnMiKS5mdW5jdGlvbigibmZzX3Byb2NfbG9va3VwIikucmV0dXJuPwp7CiAg ICAgICAgdmVyc2lvbiA9ICJORlNWMiIKCW5hbWUgPSAibmZzLnByb2MyLmxv b2t1cC5yZXR1cm4iCglyZXRzdHIgPSBzcHJpbnRmKCIlZCIsICRyZXR1cm4p Cn0KCnByb2JlIG5mcy5wcm9jMy5sb29rdXAgPSBrZXJuZWwuZnVuY3Rpb24o Im5mczNfcHJvY19sb29rdXAiKT8sCiAgICAgICAgICAgICAgICAgICAgICAg ICBtb2R1bGUoIm5mcyIpLmZ1bmN0aW9uKCJuZnMzX3Byb2NfbG9va3VwIik/ CnsKCglzZXJ2ZXJfaXAgPSBfX2kybl9pcF9wcm90bygkZGlyLDApCiAgICAg ICAgcHJvdCAgID0gX19pMm5faXBfcHJvdG8oJGRpciwxKQogICAgICAgIHZl cnNpb24gPSAiTkZTVjMiCgoJZmlsZW5hbWUgPSBrZXJuZWxfc3RyaW5nKCRu YW1lLT5uYW1lKQogICAgICAgIG5hbWVfbGVuID0gJG5hbWUtPmxlbgoKICAg ICAgICBuYW1lID0gIm5mcy5wcm9jMy5sb29rdXAiCiAgICAgICAgYXJnc3Ry ID0gc3ByaW50ZigiJXMiLGZpbGVuYW1lKSAKfQoKCnByb2JlIG5mcy5wcm9j My5sb29rdXAucmV0dXJuID0ga2VybmVsLmZ1bmN0aW9uKCJuZnMzX3Byb2Nf bG9va3VwIikucmV0dXJuPywKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtb2R1bGUoIm5mcyIpLmZ1bmN0aW9uKCJuZnMzX3Byb2NfbG9va3Vw IikucmV0dXJuPwp7CiAgICAgICAgdmVyc2lvbiA9ICJORlNWMyIKCW5hbWUg PSAibmZzLnByb2MzLmxvb2t1cC5yZXR1cm4iCglyZXRzdHIgPSBzcHJpbnRm KCIlZCIsICRyZXR1cm4pCn0KCnByb2JlIG5mcy5wcm9jNC5sb29rdXAgPSBr ZXJuZWwuZnVuY3Rpb24oIm5mczRfcHJvY19sb29rdXAiKT8sCiAgICAgICAg ICAgICAgICAgICAgICAgICBtb2R1bGUoIm5mcyIpLmZ1bmN0aW9uKCJuZnM0 X3Byb2NfbG9va3VwIik/CnsKCglzZXJ2ZXJfaXAgPSBfX2kybl9pcF9wcm90 bygkZGlyLDApCiAgICAgICAgcHJvdCAgID0gX19pMm5faXBfcHJvdG8oJGRp ciwxKQogICAgICAgIHZlcnNpb24gPSAiTkZTVjQiCgoJZmlsZW5hbWUgPSBr ZXJuZWxfc3RyaW5nKCRuYW1lLT5uYW1lKQogICAgICAgIG5hbWVfbGVuID0g JG5hbWUtPmxlbgogICAgICAgIGJpdG1hc2swID0gX19uZnN2NF9iaXRtYXNr KCRkaXIsMCkKICAgICAgICBiaXRtYXNrMSA9IF9fbmZzdjRfYml0bWFzaygk ZGlyLDEpCgogICAgICAgIG5hbWUgPSAibmZzLnByb2M0Lmxvb2t1cCIKICAg ICAgICBhcmdzdHIgPSBzcHJpbnRmKCIlcyIsZmlsZW5hbWUpIAp9Cgpwcm9i ZSBuZnMucHJvYzQubG9va3VwLnJldHVybiA9IGtlcm5lbC5mdW5jdGlvbigi bmZzNF9wcm9jX2xvb2t1cCIpLnJldHVybj8sCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbW9kdWxlKCJuZnMiKS5mdW5jdGlvbigibmZzNF9w cm9jX2xvb2t1cCIpLnJldHVybj8KewogICAgICAgIHZlcnNpb24gPSAiTkZT VjQiCgluYW1lID0gIm5mcy5wcm9jNC5sb29rdXAucmV0dXJuIgoJcmV0c3Ry ID0gc3ByaW50ZigiJWQiLCAkcmV0dXJuKQp9CgovKgoqcHJvYmUgbmZzLnBy b2MucmVhZAoqCiogRmlyZXMgd2hlbiBjbGllbnQgc3luY2hyb25vdXNseSBy ZWFkcyBmaWxlIGZyb20gc2VydmVyIAoqCiogQXJndW1lbnRzOgoqICAgc2Vy dmVyX2lwIDogaXAgYWRkcmVzcyBvZiBzZXJ2ZXIKKiAgIHByb3QgIDogdHJh bnNmZXIgcHJvdG9jb2wKKiAgIHZlcnNpb24gOiBuZnMgdmVyc2lvbgoqICAg ZmxhZ3MgIDogdXNlZCB0byBzZXQgdGFzay0+dGtfZmxhZ3MgaW4gcnBjX2lu aXRfdGFzayBmdW5jdGlvbgoqICAgc2l6ZToKKiAgIGNvdW50IDogcmVhZCBi eXRlcyBpbiB0aGlzIGV4ZWN1dGlvbgoqICAgb2Zmc2V0IDogdGhlIGZpbGUg b2Zmc2V0CiogCiovCnByb2JlIG5mcy5wcm9jLnJlYWQgPSBuZnMucHJvYzIu cmVhZCAsCiAgICAgICAgICAgICAgICAgICAgICBuZnMucHJvYzMucmVhZCAs CiAgICAgICAgICAgICAgICAgICAgICBuZnMucHJvYzQucmVhZCAKe30KCgpw cm9iZSBuZnMucHJvYy5yZWFkLnJldHVybiA9IG5mcy5wcm9jMi5yZWFkLnJl dHVybiAsCiAgICAgICAgICAgICAgICAgICAgICBuZnMucHJvYzMucmVhZC5y ZXR1cm4gLAogICAgICAgICAgICAgICAgICAgICAgbmZzLnByb2M0LnJlYWQu cmV0dXJuIAp7Cn0KCnByb2JlIG5mcy5wcm9jMi5yZWFkID0ga2VybmVsLmZ1 bmN0aW9uKCJuZnNfcHJvY19yZWFkIikgPywKICAgICAgICAgICAgICAgICAg ICAgICBtb2R1bGUoIm5mcyIpLmZ1bmN0aW9uKCJuZnNfcHJvY19yZWFkIik/ CnsKCXNlcnZlcl9pcCA9IF9fbmZzX2RhdGFfaXBfcHJvdG8oJHJkYXRhLDAp CiAgICAgICAgcHJvdCA9IF9fbmZzX2RhdGFfaXBfcHJvdG8oJHJkYXRhLDEp CiAgICAgICAgdmVyc2lvbiA9ICJORlNWMiIKCglmbGFncyA9ICRyZGF0YS0+ ZmxhZ3MKICAgICAgICBjb3VudCA9ICRyZGF0YS0+YXJncy0+Y291bnQKICAg ICAgICBvZmZzZXQgPSAkcmRhdGEtPmFyZ3MtPm9mZnNldAoKCW5hbWUgPSAi bmZzLnByb2MyLnJlYWQiCglhcmdzdHIgPSBzcHJpbnRmKCIlZCwlZCIsY291 bnQsb2Zmc2V0KQoKICAgICAgICBzaXplID0gY291bnQKICAgICAgICB1bml0 cyA9ICJieXRlcyIKfQoKcHJvYmUgbmZzLnByb2MyLnJlYWQucmV0dXJuID0g a2VybmVsLmZ1bmN0aW9uKCJuZnNfcHJvY19yZWFkIikucmV0dXJuID8sCiAg ICAgICAgICAgICAgICAgICAgICAgbW9kdWxlKCJuZnMiKS5mdW5jdGlvbigi bmZzX3Byb2NfcmVhZCIpLnJldHVybj8KewogICAgICAgIHZlcnNpb24gPSAi TkZTVjIiCgluYW1lID0gIm5mcy5wcm9jMi5yZWFkLnJldHVybiIKCXJldHN0 ciA9IHNwcmludGYoIiVkIiwgJHJldHVybikKICAgICAgIAogICAgICAgIGlm KHJldHNydCA+PSAwKQogICAgICAgIHsgIAogICAgICAgIAlzaXplID0gcmV0 c3RyCgkgICAgICAgIHVuaXRzID0gImJ5dGVzIgoJfQp9Cgpwcm9iZSBuZnMu cHJvYzMucmVhZCA9IGtlcm5lbC5mdW5jdGlvbigibmZzM19wcm9jX3JlYWQi KSA/LAogICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSgibmZzIikuZnVu Y3Rpb24oIm5mczNfcHJvY19yZWFkIik/CnsKCXNlcnZlcl9pcCA9IF9fbmZz X2RhdGFfaXBfcHJvdG8oJHJkYXRhLDApCiAgICAgICAgcHJvdCA9IF9fbmZz X2RhdGFfaXBfcHJvdG8oJHJkYXRhLDEpCiAgICAgICAgdmVyc2lvbiA9ICJO RlNWMyIKCglmbGFncyA9ICRyZGF0YS0+ZmxhZ3MKICAgICAgICBjb3VudCA9 ICRyZGF0YS0+YXJncy0+Y291bnQKICAgICAgICBvZmZzZXQgPSAkcmRhdGEt PmFyZ3MtPm9mZnNldAoKCW5hbWUgPSAibmZzLnByb2MzLnJlYWQiCglhcmdz dHIgPSBzcHJpbnRmKCIlZCwlZCIsY291bnQsb2Zmc2V0KQoKICAgICAgICBz aXplID0gY291bnQKICAgICAgICB1bml0cyA9ICJieXRlcyIKfQoKCnByb2Jl IG5mcy5wcm9jMy5yZWFkLnJldHVybiA9IGtlcm5lbC5mdW5jdGlvbigibmZz M19wcm9jX3JlYWQiKS5yZXR1cm4gPywKICAgICAgICAgICAgICAgICAgICAg ICBtb2R1bGUoIm5mcyIpLmZ1bmN0aW9uKCJuZnMzX3Byb2NfcmVhZCIpLnJl dHVybj8KewogICAgICAgIHZlcnNpb24gPSAiTkZTVjMiCgluYW1lID0gIm5m cy5wcm9jMy5yZWFkLnJldHVybiIKCXJldHN0ciA9IHNwcmludGYoIiVkIiwg JHJldHVybikKCiAgICAgICAgaWYocmV0c3J0ID49IDApCiAgICAgICAgeyAg CiAgICAgICAgCXNpemUgPSByZXRzdHIKCSAgICAgICAgdW5pdHMgPSAiYnl0 ZXMiCgl9Cn0KCgpwcm9iZSBuZnMucHJvYzQucmVhZCA9IGtlcm5lbC5mdW5j dGlvbigibmZzNF9wcm9jX3JlYWQiKSA/LAogICAgICAgICAgICAgICAgICAg ICAgIG1vZHVsZSgibmZzIikuZnVuY3Rpb24oIm5mczRfcHJvY19yZWFkIik/ CnsKCXNlcnZlcl9pcCA9IF9fbmZzX2RhdGFfaXBfcHJvdG8oJHJkYXRhLDAp CiAgICAgICAgcHJvdCA9IF9fbmZzX2RhdGFfaXBfcHJvdG8oJHJkYXRhLDEp CiAgICAgICAgdmVyc2lvbiA9ICJORlNWNCIKCglmbGFncyA9ICRyZGF0YS0+ ZmxhZ3MKICAgICAgICBjb3VudCA9ICRyZGF0YS0+YXJncy0+Y291bnQKICAg ICAgICBvZmZzZXQgPSAkcmRhdGEtPmFyZ3MtPm9mZnNldAoKCW5hbWUgPSAi bmZzLnByb2M0LnJlYWQiCglhcmdzdHIgPSBzcHJpbnRmKCIlZCwlZCIsY291 bnQsb2Zmc2V0KQoKICAgICAgICBzaXplID0gY291bnQKICAgICAgICB1bml0 cyA9ICJieXRlcyIKfQoKCnByb2JlIG5mcy5wcm9jNC5yZWFkLnJldHVybiA9 IGtlcm5lbC5mdW5jdGlvbigibmZzNF9wcm9jX3JlYWQiKS5yZXR1cm4gPywK ICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUoIm5mcyIpLmZ1bmN0aW9u KCJuZnM0X3Byb2NfcmVhZCIpLnJldHVybj8KewogICAgICAgIHZlcnNpb24g PSAiTkZTVjQiCgluYW1lID0gIm5mcy5wcm9jNC5yZWFkLnJldHVybiIKCXJl dHN0ciA9IHNwcmludGYoIiVkIiwgJHJldHVybikKICAgICAgICAKICAgICAg ICBpZihyZXRzcnQgPj0gMCkKICAgICAgICB7ICAKICAgICAgICAJc2l6ZSA9 IHJldHN0cgoJICAgICAgICB1bml0cyA9ICJieXRlcyIKCX0KfQoKCi8qCipw cm9iZSBuZnMucHJvYy53cml0ZQoqCiogRmlyZXMgd2hlbiBjbGllbnQgc3lu Y2hyb25vdXNseSB3cml0ZXMgZmlsZSB0byBzZXJ2ZXIgCioKKiBBcmd1bWVu dHM6CiogICBzZXJ2ZXJfaXAgOiBpcCBhZGRyZXNzIG9mIHNlcnZlcgoqICAg cHJvdCAgOiB0cmFuc2ZlciBwcm90b2NvbAoqICAgdmVyc2lvbiA6IG5mcyB2 ZXJzaW9uCiogICBmbGFncyAgOiB1c2VkIHRvIHNldCB0YXNrLT50a19mbGFn cyBpbiBycGNfaW5pdF90YXNrIGZ1bmN0aW9uCiogICBjb3VudCA6CiogICBz aXplICA6IHJlYWQgYnl0ZXMgaW4gdGhpcyBleGVjdXRpb24KKiAgIG9mZnNl dCA6IHRoZSBmaWxlIG9mZnNldAoqICAgYml0bWFzazA6CiogICBiaXRtYXNr MSA6VjQgYml0bWFzayByZXByZXNlbnRpbmcgdGhlIHNldCBvZiBhdHRyaWJ1 dGVzIAoqICAgICAgICAgICAgIHN1cHBvcnRlZCBvbiB0aGlzIGZpbGVzeXN0 ZW0gKG9ubHkgaW4gcHJvYmUgbmZzLnByb2M0Lmxvb2t1cCkKKi8KCnByb2Jl IG5mcy5wcm9jLndyaXRlID0gbmZzLnByb2MyLndyaXRlICwKICAgICAgICAg ICAgICAgICAgICAgIG5mcy5wcm9jMy53cml0ZSAsCiAgICAgICAgICAgICAg ICAgICAgICBuZnMucHJvYzQud3JpdGUgCnt9CgoKcHJvYmUgbmZzLnByb2Mu d3JpdGUucmV0dXJuID0gbmZzLnByb2MyLndyaXRlLnJldHVybiAsCiAgICAg ICAgICAgICAgICAgICAgICBuZnMucHJvYzMud3JpdGUucmV0dXJuICwKICAg ICAgICAgICAgICAgICAgICAgIG5mcy5wcm9jNC53cml0ZS5yZXR1cm4gCnt9 Cgpwcm9iZSBuZnMucHJvYzIud3JpdGUgPSBrZXJuZWwuZnVuY3Rpb24oIm5m c19wcm9jX3dyaXRlIik/LAogICAgICAgICAgICAgICAgICAgICAgICBtb2R1 bGUoIm5mcyIpLmZ1bmN0aW9uKCJuZnNfcHJvY193cml0ZSIpCnsKICAgICAg CglzZXJ2ZXJfaXAgPSBfX25mc19kYXRhX2lwX3Byb3RvKCR3ZGF0YSwwKQog ICAgICAgIHByb3QgPSBfX25mc19kYXRhX2lwX3Byb3RvKCR3ZGF0YSwxKQog ICAgICAgIHZlcnNpb24gPSAiTkZTVjIiCgoJZmxhZ3MgPSAkd2RhdGEtPmZs YWdzCiAgICAgICAgY291bnQgPSAkd2RhdGEtPmFyZ3MtPmNvdW50CiAgICAg ICAgb2Zmc2V0ID0gJHdkYXRhLT5hcmdzLT5vZmZzZXQKCgluYW1lID0gIm5m cy5wcm9jMi53cml0ZSIKCWFyZ3N0ciA9IHNwcmludGYoIiVkLCVkIixjb3Vu dCxvZmZzZXQpCgogICAgICAgIHNpemUgPSBjb3VudAogICAgICAgIHVuaXRz ID0gImJ5dGVzIgp9CgoKcHJvYmUgbmZzLnByb2MyLndyaXRlLnJldHVybiA9 IGtlcm5lbC5mdW5jdGlvbigibmZzX3Byb2Nfd3JpdGUiKS5yZXR1cm4gPywK ICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUoIm5mcyIpLmZ1bmN0aW9u KCJuZnNfcHJvY193cml0ZSIpLnJldHVybj8KewogICAgICAgIHZlcnNpb24g PSAiTkZTVjIiCgluYW1lID0gIm5mcy5wcm9jMi53cml0ZS5yZXR1cm4iCgly ZXRzdHIgPSBzcHJpbnRmKCIlZCIsICRyZXR1cm4pCiAgICAgICAgCiAgICAg ICAgaWYocmV0c3J0ID49IDApCiAgICAgICAgeyAgCiAgICAgICAgCXNpemUg PSByZXRzdHIKCSAgICAgICAgdW5pdHMgPSAiYnl0ZXMiCgl9Cn0KCgpwcm9i ZSBuZnMucHJvYzMud3JpdGUgPSBrZXJuZWwuZnVuY3Rpb24oIm5mczNfcHJv Y193cml0ZSIpPywKICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlKCJu ZnMiKS5mdW5jdGlvbigibmZzM19wcm9jX3dyaXRlIikKewogICAgICAKCXNl cnZlcl9pcCA9IF9fbmZzX2RhdGFfaXBfcHJvdG8oJHdkYXRhLDApCiAgICAg ICAgcHJvdCA9IF9fbmZzX2RhdGFfaXBfcHJvdG8oJHdkYXRhLDEpCiAgICAg ICAgdmVyc2lvbiA9ICJORlNWMyIKCglmbGFncyA9ICR3ZGF0YS0+ZmxhZ3MK ICAgICAgICBjb3VudCA9ICR3ZGF0YS0+YXJncy0+Y291bnQKICAgICAgICBv ZmZzZXQgPSAkd2RhdGEtPmFyZ3MtPm9mZnNldAoKCW5hbWUgPSAibmZzLnBy b2MzLndyaXRlIgoJYXJnc3RyID0gc3ByaW50ZigiJWQsJWQiLGNvdW50LG9m ZnNldCkKCiAgICAgICAgc2l6ZSA9IGNvdW50CiAgICAgICAgdW5pdHMgPSAi Ynl0ZXMiCn0KCgpwcm9iZSBuZnMucHJvYzMud3JpdGUucmV0dXJuID0ga2Vy bmVsLmZ1bmN0aW9uKCJuZnMzX3Byb2Nfd3JpdGUiKS5yZXR1cm4gPywKICAg ICAgICAgICAgICAgICAgICAgICBtb2R1bGUoIm5mcyIpLmZ1bmN0aW9uKCJu ZnMzX3Byb2Nfd3JpdGUiKS5yZXR1cm4/CnsKICAgICAgICB2ZXJzaW9uID0g Ik5GU1YzIgoJbmFtZSA9ICJuZnMucHJvYzMud3JpdGUucmV0dXJuIgoJcmV0 c3RyID0gc3ByaW50ZigiJWQiLCAkcmV0dXJuKQogICAgICAgIAogICAgICAg IGlmKHJldHNydCA+PSAwKQogICAgICAgIHsgIAogICAgICAgIAlzaXplID0g cmV0c3RyCgkgICAgICAgIHVuaXRzID0gImJ5dGVzIgoJfQp9CgoKcHJvYmUg bmZzLnByb2M0LndyaXRlID0ga2VybmVsLmZ1bmN0aW9uKCJuZnM0X3Byb2Nf d3JpdGUiKT8sCiAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSgibmZz IikuZnVuY3Rpb24oIm5mczRfcHJvY193cml0ZSIpCnsKICAgICAgCglzZXJ2 ZXJfaXAgPSBfX25mc19kYXRhX2lwX3Byb3RvKCR3ZGF0YSwwKQogICAgICAg IHByb3QgPSBfX25mc19kYXRhX2lwX3Byb3RvKCR3ZGF0YSwxKQogICAgICAg IHZlcnNpb24gPSAiTkZTVjQiCgoJZmxhZ3MgPSAkd2RhdGEtPmZsYWdzCiAg ICAgICAgY291bnQgPSAkd2RhdGEtPmFyZ3MtPmNvdW50CiAgICAgICAgb2Zm c2V0ID0gJHdkYXRhLT5hcmdzLT5vZmZzZXQKICAgICAgICBiaXRtYXNrMCA9 IF9fbmZzdjRfYml0bWFzaygkd2RhdGEtPmlub2RlLDApCiAgICAgICAgYml0 bWFzazEgPSBfX25mc3Y0X2JpdG1hc2soJHdkYXRhLT5pbm9kZSwxKQoKCW5h bWUgPSAibmZzLnByb2M0LndyaXRlIgoJYXJnc3RyID0gc3ByaW50ZigiJWQs JWQiLGNvdW50LG9mZnNldCkKCiAgICAgICAgc2l6ZSA9IGNvdW50CiAgICAg ICAgdW5pdHMgPSAiYnl0ZXMiCn0KCgpwcm9iZSBuZnMucHJvYzQud3JpdGUu cmV0dXJuID0ga2VybmVsLmZ1bmN0aW9uKCJuZnM0X3Byb2Nfd3JpdGUiKS5y ZXR1cm4gPywKICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUoIm5mcyIp LmZ1bmN0aW9uKCJuZnM0X3Byb2Nfd3JpdGUiKS5yZXR1cm4/CnsKICAgICAg ICB2ZXJzaW9uID0gIk5GU1Y0IgoJbmFtZSA9ICJuZnMucHJvYzQud3JpdGUu cmV0dXJuIgoJcmV0c3RyID0gc3ByaW50ZigiJWQiLCAkcmV0dXJuKQogICAg ICAgIAogICAgICAgIGlmKHJldHNydCA+PSAwKQogICAgICAgIHsgIAogICAg ICAgIAlzaXplID0gcmV0c3RyCgkgICAgICAgIHVuaXRzID0gImJ5dGVzIgoJ fQp9CgovKgoqcHJvYmUgbmZzLnByb2MuY29tbWl0CioKKiBGaXJlcyB3aGVu IGNsaWVudCB3cml0ZXMgdGhlIGJ1ZmZlcmVkIGRhdGEgdG8gZGlzayx0aGUg YnVmZmVyZWQgCiogZGF0YSBpcyBhc3luY2hyb25vdXNseSB3cml0dGVuIGJ5 IGNsaWVudCBiZWZvcmUKKiBUaGUgY29tbWl0IGZ1bmN0aW9uIHdvcmtzIGlu IHN5bmMgd2F5LG5vdCBleGlzdCBpbiBORlNWMgoqCiogQXJndW1lbnRzOgoq ICAgc2VydmVyX2lwIDogaXAgYWRkcmVzcyBvZiBzZXJ2ZXIKKiAgIHByb3Qg IDogdHJhbnNmZXIgcHJvdG9jb2wKKiAgIHZlcnNpb24gOiBuZnMgdmVyc2lv bgoqICAgZmxhZ3MgIDogdXNlZCB0byBzZXQgdGFzay0+dGtfZmxhZ3MgaW4g cnBjX2luaXRfdGFzayBmdW5jdGlvbgoqICAgY291bnQgOgoqICAgc2l6ZSAg OiByZWFkIGJ5dGVzIGluIHRoaXMgZXhlY3V0aW9uCiogICBvZmZzZXQgOiB0 aGUgZmlsZSBvZmZzZXQKKiAgIGJpdG1hc2swOgoqICAgYml0bWFzazEgOlY0 IGJpdG1hc2sgcmVwcmVzZW50aW5nIHRoZSBzZXQgb2YgYXR0cmlidXRlcyAK KiAgICAgICAgICAgICBzdXBwb3J0ZWQgb24gdGhpcyBmaWxlc3lzdGVtIChv bmx5IGluIHByb2JlIG5mcy5wcm9jNC5sb29rdXApCiovCnByb2JlIG5mcy5w cm9jLmNvbW1pdCA9IG5mcy5wcm9jMy5jb21taXQsCiAgICAgICAgICAgICAg ICAgICAgICAgIG5mcy5wcm9jNC5jb21taXQKe30KCnByb2JlIG5mcy5wcm9j LmNvbW1pdC5yZXR1cm4gPSBuZnMucHJvYzMuY29tbWl0LnJldHVybiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5mcy5wcm9jNC5jb21taXQu cmV0dXJuCnt9Cgpwcm9iZSBuZnMucHJvYzMuY29tbWl0ID0ga2VybmVsLmZ1 bmN0aW9uICgibmZzM19wcm9jX2NvbW1pdCIpPywKICAgICAgICAgICAgICAg ICAgICAgICAgIG1vZHVsZSgibmZzIikuZnVuY3Rpb24oIm5mczNfcHJvY19j b21taXQiKT8KewoJc2VydmVyX2lwID0gX19uZnNfZGF0YV9pcF9wcm90bygk Y2RhdGEsMCkKICAgICAgICBwcm90ID0gX19uZnNfZGF0YV9pcF9wcm90bygk Y2RhdGEsMSkKICAgICAgICB2ZXJzaW9uID0gIk5GU1YzIgoKICAgICAgICBj b3VudCA9ICRjZGF0YS0+YXJncy0+Y291bnQKICAgICAgICBvZmZzZXQgPSAk Y2RhdGEtPmFyZ3MtPm9mZnNldAoKCW5hbWUgPSAibmZzLnByb2MzLmNvbW1p dCIKCWFyZ3N0ciA9IHNwcmludGYoIiVkLCVkIixjb3VudCxvZmZzZXQpCgog ICAgICAgIHNpemUgPSBjb3VudAogICAgICAgIHVuaXRzID0gImJ5dGVzIgp9 Cgpwcm9iZSBuZnMucHJvYzMuY29tbWl0LnJldHVybiA9IGtlcm5lbC5mdW5j dGlvbiAoIm5mczNfcHJvY19jb21taXQiKS5yZXR1cm4/LAogICAgICAgICAg ICAgICAgICAgICAgICAgbW9kdWxlKCJuZnMiKS5mdW5jdGlvbigibmZzM19w cm9jX2NvbW1pdCIpLnJldHVybj8KewogICAgICAgIHZlcnNpb24gPSAiTkZT VjMiCgluYW1lID0gIm5mcy5wcm9jMy5jb21taXQucmV0dXJuIgoJcmV0c3Ry ID0gc3ByaW50ZigiJWQiLCAkcmV0dXJuKQogICAgICAgIAogICAgICAgIGlm KHJldHNydCA+PSAwKQogICAgICAgIHsgIAogICAgICAgIAlzaXplID0gcmV0 c3RyCgkgICAgICAgIHVuaXRzID0gImJ5dGVzIgoJfQp9CgoKcHJvYmUgbmZz LnByb2M0LmNvbW1pdCA9IGtlcm5lbC5mdW5jdGlvbiAoIm5mczRfcHJvY19j b21taXQiKT8sCiAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUoIm5m cyIpLmZ1bmN0aW9uKCJuZnM0X3Byb2NfY29tbWl0Iik/CnsKCXNlcnZlcl9p cCA9IF9fbmZzX2RhdGFfaXBfcHJvdG8oJGNkYXRhLDApCiAgICAgICAgcHJv dCA9IF9fbmZzX2RhdGFfaXBfcHJvdG8oJGNkYXRhLDEpCiAgICAgICAgdmVy c2lvbiA9ICJORlNWNCIKCiAgICAgICAgY291bnQgPSAkY2RhdGEtPmFyZ3Mt PmNvdW50CiAgICAgICAgb2Zmc2V0ID0gJGNkYXRhLT5hcmdzLT5vZmZzZXQK ICAgICAgICBiaXRtYXNrMCA9IF9fbmZzdjRfYml0bWFzaygkY2RhdGEtPmlu b2RlLDApCiAgICAgICAgYml0bWFzazEgPSBfX25mc3Y0X2JpdG1hc2soJGNk YXRhLT5pbm9kZSwxKQoKCW5hbWUgPSAibmZzLnByb2M0LmNvbW1pdCIKCWFy Z3N0ciA9IHNwcmludGYoIiVkLCVkIixjb3VudCxvZmZzZXQpCgogICAgICAg IHNpemUgPSBjb3VudAogICAgICAgIHVuaXRzID0gImJ5dGVzIgp9Cgpwcm9i ZSBuZnMucHJvYzQuY29tbWl0LnJldHVybiA9IGtlcm5lbC5mdW5jdGlvbiAo Im5mczRfcHJvY19jb21taXQiKS5yZXR1cm4/LAogICAgICAgICAgICAgICAg ICAgICAgICAgbW9kdWxlKCJuZnMiKS5mdW5jdGlvbigibmZzNF9wcm9jX2Nv bW1pdCIpLnJldHVybj8KewogICAgICAgIHZlcnNpb24gPSAiTkZTVjQiCglu YW1lID0gIm5mcy5wcm9jNC5jb21taXQucmV0dXJuIgoJcmV0c3RyID0gc3By aW50ZigiJWQiLCAkcmV0dXJuKQogICAgICAgIAogICAgICAgIGlmKHJldHNy dCA+PSAwKQogICAgICAgIHsgIAogICAgICAgIAlzaXplID0gcmV0c3RyCgkg ICAgICAgIHVuaXRzID0gImJ5dGVzIgoJfQp9CgovKgoqcHJvYmUgbmZzLnBy b2MucmVhZF9zZXR1cAoqCiogVGhlIHJlYWRfc2V0dXAgZnVuY3Rpb24gaXMg dXNlZCB0byBzZXR1cCBhIHJlYWQgcnBjIHRhc2ssbm90IGRvCiogYSByZWFs IHJlYWQgb3BlcmF0aW9uLgoqCiogQXJndW1lbnRzOgoqICAgc2VydmVyX2lw IDogaXAgYWRkcmVzcyBvZiBzZXJ2ZXIKKiAgIHByb3QgIDogdHJhbnNmZXIg cHJvdG9jb2wKKiAgIHZlcnNpb24gOiBuZnMgdmVyc2lvbgoqICAgY291bnQg OgoqICAgc2l6ZSAgOiByZWFkIGJ5dGVzIGluIHRoaXMgZXhlY3V0aW9uCiog ICBvZmZzZXQgOiB0aGUgZmlsZSBvZmZzZXQgCiovCnByb2JlIG5mcy5wcm9j LnJlYWRfc2V0dXAgPSBuZnMucHJvYzIucmVhZF9zZXR1cCAsCiAgICAgICAg ICAgICAgICAgICAgICBuZnMucHJvYzMucmVhZF9zZXR1cCAsCiAgICAgICAg ICAgICAgICAgICAgICBuZnMucHJvYzQucmVhZF9zZXR1cCAKe30KCgoKcHJv YmUgbmZzLnByb2MyLnJlYWRfc2V0dXAgPSBrZXJuZWwuZnVuY3Rpb24oIm5m c19wcm9jX3JlYWRfc2V0dXAiKSA/LAogICAgICAgICAgICAgICAgICAgICAg IG1vZHVsZSgibmZzIikuZnVuY3Rpb24oIm5mc19wcm9jX3JlYWRfc2V0dXAi KT8KewoJc2VydmVyX2lwID0gX19uZnNfZGF0YV9pcF9wcm90bygkZGF0YSww KQogICAgICAgIHByb3QgPSBfX25mc19kYXRhX2lwX3Byb3RvKCRkYXRhLDEp CiAgICAgICAgdmVyc2lvbiA9ICJORlNWMiIKCiAgICAgICAgY291bnQgPSAk ZGF0YS0+YXJncy0+Y291bnQKICAgICAgICBvZmZzZXQgPSAkZGF0YS0+YXJn cy0+b2Zmc2V0CgoJbmFtZSA9ICJuZnMucHJvYzIucmVhZF9zZXR1cCIKCWFy Z3N0ciA9IHNwcmludGYoIiVkLCVkIixjb3VudCxvZmZzZXQpCgogICAgICAg IHNpemUgPSBjb3VudAogICAgICAgIHVuaXRzID0gImJ5dGVzIgp9CgoKcHJv YmUgbmZzLnByb2MzLnJlYWRfc2V0dXAgPSBrZXJuZWwuZnVuY3Rpb24oIm5m czNfcHJvY19yZWFkX3NldHVwIikgPywKICAgICAgICAgICAgICAgICAgICAg ICBtb2R1bGUoIm5mcyIpLmZ1bmN0aW9uKCJuZnMzX3Byb2NfcmVhZF9zZXR1 cCIpPwp7CglzZXJ2ZXJfaXAgPSBfX25mc19kYXRhX2lwX3Byb3RvKCRkYXRh LDApCiAgICAgICAgcHJvdCA9IF9fbmZzX2RhdGFfaXBfcHJvdG8oJGRhdGEs MSkKICAgICAgICB2ZXJzaW9uID0gIk5GU1YzIgoKICAgICAgICBjb3VudCA9 ICRkYXRhLT5hcmdzLT5jb3VudAogICAgICAgIG9mZnNldCA9ICRkYXRhLT5h cmdzLT5vZmZzZXQKCgluYW1lID0gIm5mcy5wcm9jMy5yZWFkX3NldHVwIgoJ YXJnc3RyID0gc3ByaW50ZigiJWQsJWQiLGNvdW50LG9mZnNldCkKCiAgICAg ICAgc2l6ZSA9IGNvdW50CiAgICAgICAgdW5pdHMgPSAiYnl0ZXMiCn0KCgoK CnByb2JlIG5mcy5wcm9jNC5yZWFkX3NldHVwID0ga2VybmVsLmZ1bmN0aW9u KCJuZnM0X3Byb2NfcmVhZF9zZXR1cCIpID8sCiAgICAgICAgICAgICAgICAg ICAgICAgbW9kdWxlKCJuZnMiKS5mdW5jdGlvbigibmZzNF9wcm9jX3JlYWRf c2V0dXAiKT8KewoJc2VydmVyX2lwID0gX19uZnNfZGF0YV9pcF9wcm90bygk ZGF0YSwwKQogICAgICAgIHByb3QgPSBfX25mc19kYXRhX2lwX3Byb3RvKCRk YXRhLDEpCiAgICAgICAgdmVyc2lvbiA9ICJORlNWNCIKCiAgICAgICAgY291 bnQgPSAkZGF0YS0+YXJncy0+Y291bnQKICAgICAgICBvZmZzZXQgPSAkZGF0 YS0+YXJncy0+b2Zmc2V0CgkvL3RpbWVzdGFtcCA9ICRqaWZmaWVzCgoJbmFt ZSA9ICJuZnMucHJvYzQucmVhZF9zZXR1cCIKCWFyZ3N0ciA9IHNwcmludGYo IiVkLCVkIixjb3VudCxvZmZzZXQpCgogICAgICAgIHNpemUgPSBjb3VudAog ICAgICAgIHVuaXRzID0gImJ5dGVzIgp9CgoKLypwcm9iZSBuZnMucHJvYy5y ZWFkX2RvbmUKKgoqIEZpcmVzIHdoZW4gYSByZWFkIHJlcGx5IGlzIHJlY2Vp dmVkIG9yIHNvbWUgcmVhZCBlcnJvciBvY2N1cgoqICh0aW1lb3V0IG9yIHNv Y2tldCBzaHV0ZG93bikKKgoqIEFyZ3VtZW50czoKKiAgIHNlcnZlcl9pcCA6 IGlwIGFkZHJlc3Mgb2Ygc2VydmVyCiogICBwcm90ICA6IHRyYW5zZmVyIHBy b3RvY29sCiogICB2ZXJzaW9uIDogbmZzIHZlcnNpb24KKiAgIHN0YXR1cyA6 IHJlc3VsdCBvZiBsYXN0IG9wZXJhdGlvbgoqICAgY291bnQgIDogcmVhZCBz aXplIG9mIGxhc3Qgb3BlcmF0aW9uCiogICBvZmZzZXQgOiB0aGUgZmlsZSBv ZmZzZXQgb2YgbGFzdCBvcGVyYXRpb24KKiAgIHRpbWVzdGFtcCA6IHRpbWUg c3RhbXAgLHdoaWNoIGlzIHVzZWQgZm9yIGxlYXNlIHJlbmV3YWwgKG9ubHkK ICAgIGluIG5mcy5wcm9jNC5yZWFkX2RvbmUpCiovCnByb2JlIG5mcy5wcm9j LnJlYWRfZG9uZSA9IG5mcy5wcm9jMi5yZWFkX2RvbmUsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgIG5mcy5wcm9jMy5yZWFkX2RvbmUsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgIG5mcy5wcm9jNC5yZWFkX2RvbmUKe30KCnBy b2JlIG5mcy5wcm9jLnJlYWRfZG9uZS5yZXR1cm4gPSBuZnMucHJvYzIucmVh ZF9kb25lLnJldHVybiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgbmZz LnByb2MzLnJlYWRfZG9uZS5yZXR1cm4sCiAgICAgICAgICAgICAgICAgICAg ICAgICAgIG5mcy5wcm9jNC5yZWFkX2RvbmUucmV0dXJuCnt9Cgpwcm9iZSBu ZnMucHJvYzIucmVhZF9kb25lID0ga2VybmVsLmZ1bmN0aW9uKCJuZnNfcmVh ZF9kb25lIik/LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxl KCJuZnMiKS5mdW5jdGlvbigibmZzX3JlYWRfZG9uZSIpPwp7CglzZXJ2ZXJf aXAgPSBfX25mc19kYXRhX2lwX3Byb3RvKCRkYXRhLDApCiAgICAgICAgcHJv dCA9IF9fbmZzX2RhdGFfaXBfcHJvdG8oJGRhdGEsMSkKICAgICAgICB2ZXJz aW9uID0gIk5GU1YyIgoKCXN0YXR1cyA9ICR0YXNrLT50a19zdGF0dXMKCW9m ZnNldCA9ICRkYXRhLT5hcmdzLT5vZmZzZXQKCWNvdW50ID0gJGRhdGEtPmFy Z3MtPmNvdW50CgoJbmFtZSA9ICJuZnMucHJvYzIucmVhZF9kb25lIgogICAg ICAgIGFyZ3N0ciA9IHNwcmludGYoIiVkIixzdGF0dXMpCgp9Cgpwcm9iZSBu ZnMucHJvYzIucmVhZF9kb25lLnJldHVybiA9IGtlcm5lbC5mdW5jdGlvbigi bmZzX3JlYWRfZG9uZSIpLnJldHVybj8sCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBtb2R1bGUoIm5mcyIpLmZ1bmN0aW9uKCJuZnNfcmVhZF9kb25l IikucmV0dXJuPwp7CiAgICAgICAgdmVyc2lvbiA9ICJORlNWMiIKCW5hbWUg PSAibmZzLnByb2MyLnJlYWRfZG9uZS5yZXR1cm4iCglyZXRzdHIgPSBzcHJp bnRmKCIlZCIsICRyZXR1cm4pCn0KCgpwcm9iZSBuZnMucHJvYzMucmVhZF9k b25lID0ga2VybmVsLmZ1bmN0aW9uKCJuZnMzX3JlYWRfZG9uZSIpPywKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSgibmZzIikuZnVuY3Rp b24oIm5mczNfcmVhZF9kb25lIik/CnsKCXNlcnZlcl9pcCA9IF9fbmZzX2Rh dGFfaXBfcHJvdG8oJGRhdGEsMCkKICAgICAgICBwcm90ID0gX19uZnNfZGF0 YV9pcF9wcm90bygkZGF0YSwxKQogICAgICAgIHZlcnNpb24gPSAiTkZTVjMi CgoJc3RhdHVzID0gJHRhc2stPnRrX3N0YXR1cwoJb2Zmc2V0ID0gJGRhdGEt PmFyZ3MtPm9mZnNldAoJY291bnQgPSAkZGF0YS0+YXJncy0+Y291bnQKCglu YW1lID0gIm5mcy5wcm9jMy5yZWFkX2RvbmUiCiAgICAgICAgYXJnc3RyID0g c3ByaW50ZigiJWQiLHN0YXR1cykKCn0KCnByb2JlIG5mcy5wcm9jMy5yZWFk X2RvbmUucmV0dXJuID0ga2VybmVsLmZ1bmN0aW9uKCJuZnMzX3JlYWRfZG9u ZSIpLnJldHVybj8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1 bGUoIm5mcyIpLmZ1bmN0aW9uKCJuZnMzX3JlYWRfZG9uZSIpLnJldHVybj8K ewogICAgICAgIHZlcnNpb24gPSAiTkZTVjMiCgluYW1lID0gIm5mcy5wcm9j My5yZWFkX2RvbmUucmV0dXJuIgoJcmV0c3RyID0gc3ByaW50ZigiJWQiLCAk cmV0dXJuKQp9CgoKcHJvYmUgbmZzLnByb2M0LnJlYWRfZG9uZSA9IGtlcm5l bC5mdW5jdGlvbigibmZzNF9yZWFkX2RvbmUiKT8sCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBtb2R1bGUoIm5mcyIpLmZ1bmN0aW9uKCJuZnM0X3Jl YWRfZG9uZSIpPwp7CglzZXJ2ZXJfaXAgPSBfX25mc19kYXRhX2lwX3Byb3Rv KCRkYXRhLDApCiAgICAgICAgcHJvdCA9IF9fbmZzX2RhdGFfaXBfcHJvdG8o JGRhdGEsMSkKICAgICAgICB2ZXJzaW9uID0gIk5GU1Y0IgoKCXN0YXR1cyA9 ICR0YXNrLT50a19zdGF0dXMKCW9mZnNldCA9ICRkYXRhLT5hcmdzLT5vZmZz ZXQKCWNvdW50ID0gJGRhdGEtPmFyZ3MtPmNvdW50CiAgICAgICAgdGltZXN0 YW1wID0gJGRhdGEtPnRpbWVzdGFtcAoKCW5hbWUgPSAibmZzLnByb2M0LnJl YWRfZG9uZSIKICAgICAgICBhcmdzdHIgPSBzcHJpbnRmKCIlZCIsc3RhdHVz KQoKfQoKcHJvYmUgbmZzLnByb2M0LnJlYWRfZG9uZS5yZXR1cm4gPSBrZXJu ZWwuZnVuY3Rpb24oIm5mczRfcmVhZF9kb25lIikucmV0dXJuPywKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSgibmZzIikuZnVuY3Rpb24o Im5mczRfcmVhZF9kb25lIikucmV0dXJuPwp7CiAgICAgICAgdmVyc2lvbiA9 ICJORlNWNCIKCW5hbWUgPSAibmZzLnByb2M0LnJlYWRfZG9uZS5yZXR1cm4i CglyZXRzdHIgPSBzcHJpbnRmKCIlZCIsICRyZXR1cm4pCn0KCi8qcHJvYmUg bmZzLnByb2Mud3JpdGVfc2V0dXAKKgoqIFRoZSB3cml0ZV9zZXR1cCBmdW5j dGlvbiBpcyB1c2VkIHRvIHNldHVwIGEgd3JpdGUgcnBjIHRhc2ssbm90IGRv CiogYSByZWFsIHdyaXRlIG9wZXJhdGlvbi4KKgoqIEFyZ3VtZW50czoKKiAg IHNlcnZlcl9pcCA6IGlwIGFkZHJlc3Mgb2Ygc2VydmVyCiogICBwcm90ICA6 IHRyYW5zZmVyIHByb3RvY29sCiogICB2ZXJzaW9uIDogbmZzIHZlcnNpb24K KiAgIHNpemUgOgoqICAgY291bnQgOiByZWFkIGJ5dGVzIGluIHRoaXMgZXhl Y3V0aW9uCiogICBvZmZzZXQgOiB0aGUgZmlsZSBvZmZzZXQKKiAgIGhvdyA6 IHVzZWQgdG8gc2V0IGFyZ3Muc3RhYmxlLgoqICAgICAgICAgVGhlIHN0YWJs ZSB2YWx1ZSBjb3VsZCBiZToKKiAgICAgICAgIE5GU19VTlNUQUJMRSxORlNf REFUQV9TWU5DLE5GU19GSUxFX1NZTkMoaW4gbmZzLnByb2MzLndyaXRlX3Nl dHVwIGFuZCBuZnMucHJvYzQud3JpdGVfc2V0dXApCiogICBiaXRtYXNrMDoK KiAgIGJpdG1hc2sxIDpWNCBiaXRtYXNrIHJlcHJlc2VudGluZyB0aGUgc2V0 IG9mIGF0dHJpYnV0ZXMgCiogICAgICAgICAgICAgc3VwcG9ydGVkIG9uIHRo aXMgZmlsZXN5c3RlbSAob25seSBpbiBwcm9iZSBuZnMucHJvYzQubG9va3Vw KQoqLwoKcHJvYmUgbmZzLnByb2Mud3JpdGVfc2V0dXAgPSBuZnMucHJvYzIu d3JpdGVfc2V0dXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmZz LnByb2MzLndyaXRlX3NldHVwLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5mcy5wcm9jNC53cml0ZV9zZXR1cAp7fQoKCnByb2JlIG5mcy5wcm9j Mi53cml0ZV9zZXR1cCA9IGtlcm5lbC5mdW5jdGlvbigibmZzX3Byb2Nfd3Jp dGVfc2V0dXAiKSA/LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt b2R1bGUoIm5mcyIpLmZ1bmN0aW9uKCJuZnNfcHJvY193cml0ZV9zZXR1cCIp ID8KewoJc2VydmVyX2lwID0gX19uZnNfZGF0YV9pcF9wcm90bygkZGF0YSww KQogICAgICAgIHByb3QgPSBfX25mc19kYXRhX2lwX3Byb3RvKCRkYXRhLDEp CiAgICAgICAgdmVyc2lvbiA9ICJORlNWMiIKCiAgICAgICAgY291bnQgPSAk ZGF0YS0+YXJncy0+Y291bnQKICAgICAgICBvZmZzZXQgPSAkZGF0YS0+YXJn cy0+b2Zmc2V0CgoJbmFtZSA9ICJuZnMucHJvYzIud3JpdGVfc2V0dXAiCglh cmdzdHIgPSBzcHJpbnRmKCIlZCwlZCIsY291bnQsb2Zmc2V0KQoKICAgICAg ICBzaXplID0gY291bnQKICAgICAgICB1bml0cyA9ICJieXRlcyIKfQoKCnBy b2JlIG5mcy5wcm9jMy53cml0ZV9zZXR1cCA9IGtlcm5lbC5mdW5jdGlvbigi bmZzM19wcm9jX3dyaXRlX3NldHVwIikgPywKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbW9kdWxlKCJuZnMiKS5mdW5jdGlvbigibmZzM19wcm9j X3dyaXRlX3NldHVwIikgPwp7CglzZXJ2ZXJfaXAgPSBfX25mc19kYXRhX2lw X3Byb3RvKCRkYXRhLDApCiAgICAgICAgcHJvdCA9IF9fbmZzX2RhdGFfaXBf cHJvdG8oJGRhdGEsMSkKICAgICAgICB2ZXJzaW9uID0gIk5GU1YzIgoKICAg ICAgICBjb3VudCA9ICRkYXRhLT5hcmdzLT5jb3VudAogICAgICAgIG9mZnNl dCA9ICRkYXRhLT5hcmdzLT5vZmZzZXQKCWhvdyA9ICRob3cKCgluYW1lID0g Im5mcy5wcm9jMy53cml0ZV9zZXR1cCIKCWFyZ3N0ciA9IHNwcmludGYoIiVk LCVkLCVkIixjb3VudCxvZmZzZXQsaG93KQoKICAgICAgICBzaXplID0gY291 bnQKICAgICAgICB1bml0cyA9ICJieXRlcyIKfQoKcHJvYmUgbmZzLnByb2M0 LndyaXRlX3NldHVwID0ga2VybmVsLmZ1bmN0aW9uKCJuZnM0X3Byb2Nfd3Jp dGVfc2V0dXAiKSA/LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt b2R1bGUoIm5mcyIpLmZ1bmN0aW9uKCJuZnM0X3Byb2Nfd3JpdGVfc2V0dXAi KSA/CnsKCXNlcnZlcl9pcCA9IF9fbmZzX2RhdGFfaXBfcHJvdG8oJGRhdGEs MCkKICAgICAgICBwcm90ID0gX19uZnNfZGF0YV9pcF9wcm90bygkZGF0YSwx KQogICAgICAgIHZlcnNpb24gPSAiTkZTVjQiCgogICAgICAgIGNvdW50ID0g JGRhdGEtPmFyZ3MtPmNvdW50CiAgICAgICAgb2Zmc2V0ID0gJGRhdGEtPmFy Z3MtPm9mZnNldAoJaG93ID0gJGhvdwogICAgICAgIGJpdG1hc2swID0gX19u ZnN2NF9iaXRtYXNrKCRkYXRhLT5pbm9kZSwwKQogICAgICAgIGJpdG1hc2sx ID0gX19uZnN2NF9iaXRtYXNrKCRkYXRhLT5pbm9kZSwxKQoJLy90aW1lc3Rh bXAgPSAkamlmZmllcwoJCgluYW1lID0gIm5mcy5wcm9jNC53cml0ZV9zZXR1 cCIKCWFyZ3N0ciA9IHNwcmludGYoIiVkLCVkLCVkIixjb3VudCxvZmZzZXQs aG93KQoKICAgICAgICBzaXplID0gY291bnQKICAgICAgICB1bml0cyA9ICJi eXRlcyIKfQoKCi8qcHJvYmUgbmZzLnByb2Mud3JpdGVfZG9uZQoqCiogRmly ZXMgd2hlbiBhIHdyaXRlIHJlcGx5IGlzIHJlY2VpdmVkIG9yIHNvbWUgd3Jp dGUgZXJyb3Igb2NjdXIKKiAodGltZW91dCBvciBzb2NrZXQgc2h1dGRvd24p CioKKiBBcmd1bWVudHM6CiogICBzZXJ2ZXJfaXAgOiBpcCBhZGRyZXNzIG9m IHNlcnZlcgoqICAgcHJvdCAgOiB0cmFuc2ZlciBwcm90b2NvbAoqICAgdmVy c2lvbiA6IG5mcyB2ZXJzaW9uCiogICBzdGF0dXMgOiByZXN1bHQgb2YgbGFz dCBvcGVyYXRpb24KKiAgIHZhbGlkICA6IGZhdHRyLT52YWxpZCAsaW5kaWNh dGVzIHdoaWNoIGZpZWxkcyBhcmUgdmFsaWQgCiogICBjb3VudCAgOiByZWFk IHNpemUgb2YgbGFzdCBvcGVyYXRpb24KKiAgIG9mZnNldCA6IHRoZSBmaWxl IG9mZnNldCBvZiBsYXN0IG9wZXJhdGlvbgoqICAgdGltZXN0YW1wIDogdGlt ZSBzdGFtcCAsd2hpY2ggaXMgdXNlZCBmb3IgbGVhc2UgcmVuZXdhbCAob25s eQogICAgaW4gbmZzLnByb2M0LndyaXRlX2RvbmUpCiovCnByb2JlIG5mcy5w cm9jLndyaXRlX2RvbmUgPSBuZnMucHJvYzIud3JpdGVfZG9uZSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG5mcy5wcm9jMy53cml0ZV9kb25lLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmZzLnByb2M0LndyaXRlX2Rv bmUgCnt9Cgpwcm9iZSBuZnMucHJvYy53cml0ZV9kb25lLnJldHVybiA9IG5m cy5wcm9jMi53cml0ZV9kb25lLnJldHVybiwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5mcy5wcm9jMy53cml0ZV9kb25lLnJldHVybiwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG5mcy5wcm9jNC53cml0ZV9kb25lLnJl dHVybiAKe30KCnByb2JlIG5mcy5wcm9jMi53cml0ZV9kb25lID0ga2VybmVs LmZ1bmN0aW9uKCJuZnNfd3JpdGVfZG9uZSIpID8sCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbW9kdWxlKCJuZnMiKS5mdW5jdGlvbigibmZzX3dy aXRlX2RvbmUiKSA/CnsKCXNlcnZlcl9pcCA9IF9fbmZzX2RhdGFfaXBfcHJv dG8oJGRhdGEsMCkKICAgICAgICBwcm90ID0gX19uZnNfZGF0YV9pcF9wcm90 bygkZGF0YSwxKQogICAgICAgIHZlcnNpb24gPSAiTkZTVjIiCgoJc3RhdHVz ID0gJHRhc2stPnRrX3N0YXR1cwoJdmFsaWQgPSAkZGF0YS0+cmVzLT5mYXR0 ci0+dmFsaWQKCW9mZnNldCA9ICRkYXRhLT5hcmdzLT5vZmZzZXQKCWNvdW50 ID0gJGRhdGEtPmFyZ3MtPmNvdW50CgoJbmFtZSA9ICJuZnMucHJvYzIud3Jp dGVfZG9uZSIKCWFyZ3N0ciA9IHNwcmludGYoIiVkIixzdGF0dXMpCn0KCnBy b2JlIG5mcy5wcm9jMi53cml0ZV9kb25lLnJldHVybiA9IGtlcm5lbC5mdW5j dGlvbigibmZzX3dyaXRlX2RvbmUiKS5yZXR1cm4gPywKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtb2R1bGUoIm5mcyIpLmZ1bmN0aW9uKCJuZnNf d3JpdGVfZG9uZSIpLnJldHVybiA/CnsKICAgICAgICB2ZXJzaW9uID0gIk5G U1YyIgoJbmFtZSA9ICJuZnMucHJvYzIud3JpdGVfZG9uZS5yZXR1cm4iCgly ZXRzdHIgPSBzcHJpbnRmKCIlZCIsICRyZXR1cm4pCn0KCnByb2JlIG5mcy5w cm9jMy53cml0ZV9kb25lID0ga2VybmVsLmZ1bmN0aW9uKCJuZnMzX3dyaXRl X2RvbmUiKSA/LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVs ZSgibmZzIikuZnVuY3Rpb24oIm5mczNfd3JpdGVfZG9uZSIpID8KewoJc2Vy dmVyX2lwID0gX19uZnNfZGF0YV9pcF9wcm90bygkZGF0YSwwKQogICAgICAg IHByb3QgPSBfX25mc19kYXRhX2lwX3Byb3RvKCRkYXRhLDEpCiAgICAgICAg dmVyc2lvbiA9ICJORlNWMyIKCglzdGF0dXMgPSAkdGFzay0+dGtfc3RhdHVz Cgl2YWxpZCA9ICRkYXRhLT5yZXMtPmZhdHRyLT52YWxpZAoJb2Zmc2V0ID0g JGRhdGEtPmFyZ3MtPm9mZnNldAoJY291bnQgPSAkZGF0YS0+YXJncy0+Y291 bnQKCgluYW1lID0gIm5mcy5wcm9jMy53cml0ZV9kb25lIgoJYXJnc3RyID0g c3ByaW50ZigiJWQiLHN0YXR1cykKfQoKcHJvYmUgbmZzLnByb2MzLndyaXRl X2RvbmUucmV0dXJuID0ga2VybmVsLmZ1bmN0aW9uKCJuZnMzX3dyaXRlX2Rv bmUiKS5yZXR1cm4gPywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt b2R1bGUoIm5mcyIpLmZ1bmN0aW9uKCJuZnMzX3dyaXRlX2RvbmUiKS5yZXR1 cm4gPwp7CiAgICAgICAgdmVyc2lvbiA9ICJORlNWMyIKCW5hbWUgPSAibmZz LnByb2MzLndyaXRlX2RvbmUucmV0dXJuIgoJcmV0c3RyID0gc3ByaW50Zigi JWQiLCAkcmV0dXJuKQp9Cgpwcm9iZSBuZnMucHJvYzQud3JpdGVfZG9uZSA9 IGtlcm5lbC5mdW5jdGlvbigibmZzNF93cml0ZV9kb25lIikgPywKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUoIm5mcyIpLmZ1bmN0aW9u KCJuZnM0X3dyaXRlX2RvbmUiKSA/CnsKCXNlcnZlcl9pcCA9IF9fbmZzX2Rh dGFfaXBfcHJvdG8oJGRhdGEsMCkKICAgICAgICBwcm90ID0gX19uZnNfZGF0 YV9pcF9wcm90bygkZGF0YSwxKQogICAgICAgIHZlcnNpb24gPSAiTkZTVjQi CgoJc3RhdHVzID0gJHRhc2stPnRrX3N0YXR1cwoJdmFsaWQgPSAkZGF0YS0+ cmVzLT5mYXR0ci0+dmFsaWQKCW9mZnNldCA9ICRkYXRhLT5hcmdzLT5vZmZz ZXQKCWNvdW50ID0gJGRhdGEtPmFyZ3MtPmNvdW50Cgl0aW1lc3RhbXAgPSAk ZGF0YS0+dGltZXN0YW1wCgoJbmFtZSA9ICJuZnMucHJvYzQud3JpdGVfZG9u ZSIKCWFyZ3N0ciA9IHNwcmludGYoIiVkIixzdGF0dXMpCn0KCnByb2JlIG5m cy5wcm9jNC53cml0ZV9kb25lLnJldHVybiA9IGtlcm5lbC5mdW5jdGlvbigi bmZzNF93cml0ZV9kb25lIikucmV0dXJuID8sCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbW9kdWxlKCJuZnMiKS5mdW5jdGlvbigibmZzNF93cml0 ZV9kb25lIikucmV0dXJuID8KewogICAgICAgIHZlcnNpb24gPSAiTkZTVjQi CgluYW1lID0gIm5mcy5wcm9jNC53cml0ZV9kb25lLnJldHVybiIKCXJldHN0 ciA9IHNwcmludGYoIiVkIiwgJHJldHVybikKfQoKCi8qcHJvYmUgbmZzLnBy b2MuY29tbWl0X3NldHVwCioKKiBUaGUgY29tbWl0X3NldHVwIGZ1bmN0aW9u IGlzIHVzZWQgdG8gc2V0dXAgYSBjb21taXQgcnBjIHRhc2ssbm90IGRvCiog YSByZWFsIGNvbW1pdCBvcGVyYXRpb24uSXQgaXMgbm90IGV4aXN0IGluIE5G U1YyCioKKiBBcmd1bWVudHM6CiogICBzZXJ2ZXJfaXAgOiBpcCBhZGRyZXNz IG9mIHNlcnZlcgoqICAgcHJvdCAgOiB0cmFuc2ZlciBwcm90b2NvbAoqICAg dmVyc2lvbiA6IG5mcyB2ZXJzaW9uCiogICBzaXplIDoKKiAgIGNvdW50IDog cmVhZCBieXRlcyBpbiB0aGlzIGV4ZWN1dGlvbgoqICAgb2Zmc2V0IDogdGhl IGZpbGUgb2Zmc2V0CiogICBiaXRtYXNrMDoKKiAgIGJpdG1hc2sxIDpWNCBi aXRtYXNrIHJlcHJlc2VudGluZyB0aGUgc2V0IG9mIGF0dHJpYnV0ZXMgCiog ICAgICAgICAgICAgc3VwcG9ydGVkIG9uIHRoaXMgZmlsZXN5c3RlbSAob25s eSBpbiBwcm9iZSBuZnMucHJvYzQubG9va3VwKQoqLwoKcHJvYmUgbmZzLnBy b2MuY29tbWl0X3NldHVwID1uZnMucHJvYzMuY29tbWl0X3NldHVwLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG5mcy5wcm9jNC5jb21taXRfc2V0 dXAKe30KCgpwcm9iZSBuZnMucHJvYzMuY29tbWl0X3NldHVwID0ga2VybmVs LmZ1bmN0aW9uKCJuZnMzX3Byb2NfY29tbWl0X3NldHVwIikgPywKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlKCJuZnMiKS5mdW5jdGlv bigibmZzM19wcm9jX2NvbW1pdF9zZXR1cCIpID8KewoJc2VydmVyX2lwID0g X19uZnNfZGF0YV9pcF9wcm90bygkZGF0YSwwKQogICAgICAgIHByb3QgPSBf X25mc19kYXRhX2lwX3Byb3RvKCRkYXRhLDEpCiAgICAgICAgdmVyc2lvbiA9 ICJORlNWMyIKCiAgICAgICAgY291bnQgPSAkZGF0YS0+YXJncy0+Y291bnQK ICAgICAgICBvZmZzZXQgPSAkZGF0YS0+YXJncy0+b2Zmc2V0CgoJbmFtZSA9 ICJuZnMucHJvYzMuY29tbWl0X3NldHVwIgoJYXJnc3RyID0gc3ByaW50Zigi JWQsJWQsJWQiLGNvdW50LG9mZnNldCxob3cpCgogICAgICAgIHNpemUgPSBj b3VudAogICAgICAgIHVuaXRzID0gImJ5dGVzIgp9Cgpwcm9iZSBuZnMucHJv YzQuY29tbWl0X3NldHVwID0ga2VybmVsLmZ1bmN0aW9uKCJuZnM0X3Byb2Nf Y29tbWl0X3NldHVwIikgPywKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbW9kdWxlKCJuZnMiKS5mdW5jdGlvbigibmZzNF9wcm9jX2NvbW1pdF9z ZXR1cCIpID8KewoJc2VydmVyX2lwID0gX19uZnNfZGF0YV9pcF9wcm90bygk ZGF0YSwwKQogICAgICAgIHByb3QgPSBfX25mc19kYXRhX2lwX3Byb3RvKCRk YXRhLDEpCiAgICAgICAgdmVyc2lvbiA9ICJORlNWNCIKCiAgICAgICAgY291 bnQgPSAkZGF0YS0+YXJncy0+Y291bnQKICAgICAgICBvZmZzZXQgPSAkZGF0 YS0+YXJncy0+b2Zmc2V0CiAgICAgICAgYml0bWFzazAgPSBfX25mc3Y0X2Jp dG1hc2soJGRhdGEtPmlub2RlLDApCiAgICAgICAgYml0bWFzazEgPSBfX25m c3Y0X2JpdG1hc2soJGRhdGEtPmlub2RlLDEpCgkvL3RpbWVzdGFtcCA9ICRq aWZmaWVzCgkKCW5hbWUgPSAibmZzLnByb2M0LmNvbW1pdF9zZXR1cCIKCWFy Z3N0ciA9IHNwcmludGYoIiVkLCVkLCVkIixjb3VudCxvZmZzZXQsaG93KQoK ICAgICAgICBzaXplID0gY291bnQKICAgICAgICB1bml0cyA9ICJieXRlcyIK fQoKCi8qcHJvYmUgbmZzLnByb2MuY29tbWl0X2RvbmUKKgoqIEZpcmVzIHdo ZW4gYSBjb21taXQgcmVwbHkgaXMgcmVjZWl2ZWQgb3Igc29tZSBjb21taXQg b3BlcmF0aW9uIGVycm9yIG9jY3VyCiogKHRpbWVvdXQgb3Igc29ja2V0IHNo dXRkb3duKQoqCiogQXJndW1lbnRzOgoqICAgc2VydmVyX2lwIDogaXAgYWRk cmVzcyBvZiBzZXJ2ZXIKKiAgIHByb3QgIDogdHJhbnNmZXIgcHJvdG9jb2wK KiAgIHZlcnNpb24gOiBuZnMgdmVyc2lvbgoqICAgc3RhdHVzIDogcmVzdWx0 IG9mIGxhc3Qgb3BlcmF0aW9uCiogICB2YWxpZCAgOiBmYXR0ci0+dmFsaWQg LGluZGljYXRlcyB3aGljaCBmaWVsZHMgYXJlIHZhbGlkIAoqICAgY291bnQg IDogcmVhZCBzaXplIG9mIGxhc3Qgb3BlcmF0aW9uCiogICBvZmZzZXQgOiB0 aGUgZmlsZSBvZmZzZXQgb2YgbGFzdCBvcGVyYXRpb24KKiAgIHRpbWVzdGFt cCA6IHRpbWUgc3RhbXAgLHdoaWNoIGlzIHVzZWQgZm9yIGxlYXNlIHJlbmV3 YWwgKG9ubHkKICAgIGluIG5mcy5wcm9jNC5jb21taXRfZG9uZSkKKi8KcHJv YmUgbmZzLnByb2MuY29tbWl0X2RvbmUgPSAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5mcy5wcm9jMy5jb21taXRfZG9uZSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG5mcy5wcm9jNC5jb21taXRfZG9uZSAKe30KCnBy b2JlIG5mcy5wcm9jLmNvbW1pdF9kb25lLnJldHVybiA9IAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgbmZzLnByb2MzLmNvbW1pdF9kb25lLnJldHVy biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5mcy5wcm9jNC5jb21t aXRfZG9uZS5yZXR1cm4gCnt9CgoKcHJvYmUgbmZzLnByb2MzLmNvbW1pdF9k b25lID0ga2VybmVsLmZ1bmN0aW9uKCJuZnMzX2NvbW1pdF9kb25lIikgPywK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUoIm5mcyIpLmZ1 bmN0aW9uKCJuZnMzX2NvbW1pdF9kb25lIikgPwp7CglzZXJ2ZXJfaXAgPSBf X25mc19kYXRhX2lwX3Byb3RvKCRkYXRhLDApCiAgICAgICAgcHJvdCA9IF9f bmZzX2RhdGFfaXBfcHJvdG8oJGRhdGEsMSkKICAgICAgICB2ZXJzaW9uID0g Ik5GU1YzIgoKCXN0YXR1cyA9ICR0YXNrLT50a19zdGF0dXMKICAgICAgICBj b3VudCA9ICRkYXRhLT5hcmdzLT5jb3VudAogICAgICAgIG9mZnNldCA9ICRk YXRhLT5hcmdzLT5vZmZzZXQKCXZhbGlkID0gJGRhdGEtPnJlcy0+ZmF0dHIt PnZhbGlkCgoJbmFtZSA9ICJuZnMucHJvYzMuY29tbWl0X2RvbmUiCglhcmdz dHIgPSBzcHJpbnRmKCIlZCIsc3RhdHVzKQp9Cgpwcm9iZSBuZnMucHJvYzMu Y29tbWl0X2RvbmUucmV0dXJuID0ga2VybmVsLmZ1bmN0aW9uKCJuZnMzX2Nv bW1pdF9kb25lIikucmV0dXJuID8sCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbW9kdWxlKCJuZnMiKS5mdW5jdGlvbigibmZzM19jb21taXRfZG9u ZSIpLnJldHVybiA/CnsKICAgICAgICB2ZXJzaW9uID0gIk5GU1YzIgoJbmFt ZSA9ICJuZnMucHJvYzMuY29tbWl0X2RvbmUucmV0dXJuIgoJcmV0c3RyID0g c3ByaW50ZigiJWQiLCAkcmV0dXJuKQp9Cgpwcm9iZSBuZnMucHJvYzQuY29t bWl0X2RvbmUgPSBrZXJuZWwuZnVuY3Rpb24oIm5mczRfY29tbWl0X2RvbmUi KSA/LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSgibmZz IikuZnVuY3Rpb24oIm5mczRfY29tbWl0X2RvbmUiKSA/CnsKCXNlcnZlcl9p cCA9IF9fbmZzX2RhdGFfaXBfcHJvdG8oJGRhdGEsMCkKICAgICAgICBwcm90 ID0gX19uZnNfZGF0YV9pcF9wcm90bygkZGF0YSwxKQogICAgICAgIHZlcnNp b24gPSAiTkZTVjQiCgoJc3RhdHVzID0gJHRhc2stPnRrX3N0YXR1cwogICAg ICAgIGNvdW50ID0gJGRhdGEtPmFyZ3MtPmNvdW50CiAgICAgICAgb2Zmc2V0 ID0gJGRhdGEtPmFyZ3MtPm9mZnNldAoJdmFsaWQgPSAkZGF0YS0+cmVzLT5m YXR0ci0+dmFsaWQKCXRpbWVzdGFtcCA9ICRkYXRhLT50aW1lc3RhbXAKCglu YW1lID0gIm5mcy5wcm9jNC5jb21taXRfZG9uZSIKCWFyZ3N0ciA9IHNwcmlu dGYoIiVkIixzdGF0dXMpCn0KCnByb2JlIG5mcy5wcm9jNC5jb21taXRfZG9u ZS5yZXR1cm4gPSBrZXJuZWwuZnVuY3Rpb24oIm5mczRfY29tbWl0X2RvbmUi KS5yZXR1cm4gPywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1 bGUoIm5mcyIpLmZ1bmN0aW9uKCJuZnM0X2NvbW1pdF9kb25lIikucmV0dXJu ID8KewogICAgICAgIHZlcnNpb24gPSAiTkZTVjQiCgluYW1lID0gIm5mcy5w cm9jNC5jb21taXRfZG9uZS5yZXR1cm4iCglyZXRzdHIgPSBzcHJpbnRmKCIl ZCIsICRyZXR1cm4pCn0KLypwcm9iZSBuZnMucHJvYy5vcGVuCioKKiAgQWxs b2NhdGUgZmlsZSByZWFkL3dyaXRlIGNvbnRleHQgaW5mb3JtYXRpb24KKgoq IEFyZ3VtZW50czoKKiAgIHNlcnZlcl9pcCA6IGlwIGFkZHJlc3Mgb2Ygc2Vy dmVyCiogICBwcm90ICA6IHRyYW5zZmVyIHByb3RvY29sCiogICB2ZXJzaW9u IDogbmZzIHZlcnNpb24odGhlIGZ1bmN0aW9uIGlzIHVzZWQgZm9yIGFsbCBO RlMgdmVyc2lvbikKKiAgIGZpbGVuYW1lIDogZmlsZSBuYW1lIG9wZW5lZCBv biBzZXJ2ZXIgc2lkZQoqICAgZmxhZyAgIDogZmlsZSBmbGFnCiogICBtb2Rl ICAgOiBmaWxlICBtb2RlCiovCgpwcm9iZSBuZnMucHJvYy5vcGVuID0ga2Vy bmVsLmZ1bmN0aW9uKCJuZnNfb3BlbiIpID8sCiAgICAgICAgICAgICAgICAg ICAgICBtb2R1bGUoIm5mcyIpLmZ1bmN0aW9uKCJuZnNfb3BlbiIpID8KewoJ c2VydmVyX2lwID0gX19pMm5faXBfcHJvdG8oJGlub2RlLDApCglwcm90ID0g X19pMm5faXBfcHJvdG8oJGlub2RlLDEpICAJCgl2ZXJzaW9uID0gIk5GUyIK CglmaWxlbmFtZSA9IGtlcm5lbF9zdHJpbmcoJGZpbHAtPmZfZGVudHJ5LT5k X25hbWUtPm5hbWUpCglmbGFnID0gJGZpbHAtPmZfZmxhZ3MKCW1vZGUgPSAk ZmlscC0+Zl9tb2RlCgoJbmFtZSA9ICJuZnMucHJvYy5vcGVuIgoJYXJnc3Ry ID0gc3ByaW50ZigiJXMsJWQsJWQiLGZpbGVuYW1lLGZsYWcsbW9kZSkKfQoK cHJvYmUgbmZzLnByb2Mub3Blbi5yZXR1cm4gPSBrZXJuZWwuZnVuY3Rpb24o Im5mc19vcGVuIikucmV0dXJuID8sCiAgICAgICAgICAgICAgICAgICAgICBt b2R1bGUoIm5mcyIpLmZ1bmN0aW9uKCJuZnNfb3BlbiIpLnJldHVybiA/CnsK CXZlcnNpb24gPSAiTkZTIgoJbmFtZSA9ICJuZnMucHJvYy5vcGVuLnJldHVy biIKCXJldHN0ciA9IHNwcmludGYoIiVkIiwgJHJldHVybikKfQoKLypwcm9i ZSBuZnMucHJvYy5yZWxlYXNlCioKKiAgUmVsZWFzZSBmaWxlIHJlYWQvd3Jp dGUgY29udGV4dCBpbmZvcm1hdGlvbgoqCiogQXJndW1lbnRzOgoqICAgc2Vy dmVyX2lwIDogaXAgYWRkcmVzcyBvZiBzZXJ2ZXIKKiAgIHByb3QgIDogdHJh bnNmZXIgcHJvdG9jb2wKKiAgIHZlcnNpb24gOiBuZnMgdmVyc2lvbih0aGUg ZnVuY3Rpb24gaXMgdXNlZCBmb3IgYWxsIE5GUyB2ZXJzaW9uKQoqICAgZmls ZW5hbWUgOiBmaWxlIG5hbWUgb3BlbmVkIG9uIHNlcnZlciBzaWRlCiogICBm bGFnICAgOiBmaWxlIGZsYWcKKiAgIG1vZGUgICA6IGZpbGUgIG1vZGUKKi8K cHJvYmUgbmZzLnByb2MucmVsZWFzZT0ga2VybmVsLmZ1bmN0aW9uKCJuZnNf cmVsZWFzZSIpID8sCiAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUoIm5m cyIpLmZ1bmN0aW9uKCJuZnNfcmVsZWFzZSIpID8KewoJc2VydmVyX2lwID0g X19pMm5faXBfcHJvdG8oJGlub2RlLDApCglwcm90ID0gX19pMm5faXBfcHJv dG8oJGlub2RlLDEpICAJCgl2ZXJzaW9uID0gIk5GUyIKCglmaWxlbmFtZSA9 IGtlcm5lbF9zdHJpbmcoJGZpbHAtPmZfZGVudHJ5LT5kX25hbWUtPm5hbWUp CglmbGFnID0gJGZpbHAtPmZfZmxhZ3MKCW1vZGUgPSAkZmlscC0+Zl9tb2Rl CgoJbmFtZSA9ICJuZnMucHJvYy5yZWxlYXNlIgoJYXJnc3RyID0gc3ByaW50 ZigiJXMsJWQsJWQiLGZpbGVuYW1lLGZsYWcsbW9kZSkKfQoKcHJvYmUgbmZz LnByb2MucmVsZWFzZS5yZXR1cm4gPSBrZXJuZWwuZnVuY3Rpb24oIm5mc19y ZWxlYXNlIikucmV0dXJuID8sCiAgICAgICAgICAgICAgICAgICAgICBtb2R1 bGUoIm5mcyIpLmZ1bmN0aW9uKCJuZnNfcmVsZWFzZSIpLnJldHVybiA/CnsK CXZlcnNpb24gPSAiTkZTIgoJbmFtZSA9ICJuZnMucHJvYy5yZWxlYXNlLnJl dHVybiIKCXJldHN0ciA9IHNwcmludGYoIiVkIiwgJHJldHVybikKfQovKgoq cHJvYmUgbmZzLnByb2M0LmhhZGxlX2V4Y2VwdGlvbiAob25seSBmb3IgTkZT VjQpCiogVGhpcyBpcyB0aGUgZXJyb3IgaGFuZGxpbmcgcm91dGluZSBmb3Ig cHJvY2Vzc2VzIGZvciBuZnN2NAoqCiogQXJndW1lbnRzOgoqICBlcnJvcmNv ZGUgOiBpbmRpY2F0ZXMgdGhlIHR5cGUgb2YgZXJyb3IKKi8KcHJvYmUgbmZz LnByb2M0LmhhbmRsZV9leGNlcHRpb24gPSBrZXJuZWwuZnVuY3Rpb24oIm5m czRfaGFuZGxlX2V4Y2VwdGlvbiIpID8sCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBtb2R1bGUoIm5mcyIpLmZ1bmN0aW9uKCJuZnM0X2hhbmRs ZV9leGNlcHRpb24iKT8KewoJdmVyc2lvbiA9ICJORlNWNCIKCQogICAgICAg IGVycm9yY29kZSA9ICRlcnJvcmNvZGUKCiAgICAgICAgbmFtZSA9ICJuZnMu cHJvYzQuaGFuZGxlX2V4Y2VwdGlvbiIKICAgICAgICBhcmdzdHIgPSAgc3By aW50ZigiJWQiLGVycm9yY29kZSkKfQoKcHJvYmUgbmZzLnByb2M0LmhhbmRs ZV9leGNlcHRpb24ucmV0dXJuID0ga2VybmVsLmZ1bmN0aW9uKCJuZnM0X2hh bmRsZV9leGNlcHRpb24iKS5yZXR1cm4gPywKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG1vZHVsZSgibmZzIikuZnVuY3Rpb24oIm5mczRfaGFu ZGxlX2V4Y2VwdGlvbiIpLnJldHVybj8KewogICAgICAgIG5hbWUgPSAibmZz LnByb2M0LmhhbmRsZV9leGNlcHRpb24ucmV0dXJuIgogICAgICAgIHJldHN0 ciA9ICBzcHJpbnRmKCIlZCIsJHJldHVybikKfQoK --=_mixed 0030AE97482571CC_=--