From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alistair Francis Subject: [PATCH v2 2/2] autotools: Remove the configure script and just use autoconf Date: Fri, 17 May 2019 15:31:52 -0700 Message-ID: <20190517223152.29839-2-alistair.francis@wdc.com> References: <20190517223152.29839-1-alistair.francis@wdc.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hRlQI-0000YV-On for xen-devel@lists.xenproject.org; Fri, 17 May 2019 22:33:55 +0000 In-Reply-To: <20190517223152.29839-1-alistair.francis@wdc.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: sstabellini@kernel.org, wei.liu2@citrix.com, konrad.wilk@oracle.com, George.Dunlap@eu.citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, tim@xen.org, julien.grall@arm.com, Alistair Francis , jbeulich@suse.com, alistair23@gmail.com List-Id: xen-devel@lists.xenproject.org RG9uJ3QgaGFyZGNvZGUgb2xkIHZlcnNpb25zIG9mIGNvbmZpZ3VyZSBpbiB0aGUgc291cmNlIGNv ZGUsIGluc3RlYWQKbGV0J3MganVzdCB1c2UgYXV0b2NvbmYgdG8gZ2VuZXJhdGUgdGhlbS4KClNp Z25lZC1vZmYtYnk6IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAd2RjLmNvbT4K LS0tCiAuZ2l0aWdub3JlICAgICAgICB8ICAgICA1ICsKIGNvbmZpZ3VyZSAgICAgICAgIHwgIDM2 MTggLS0tLS0tLS0tLS0tLS0tCiBkb2NzL2NvbmZpZ3VyZSAgICB8ICAzNDI3IC0tLS0tLS0tLS0t LS0tCiBzdHViZG9tL2NvbmZpZ3VyZSB8ICA0ODcwIC0tLS0tLS0tLS0tLS0tLS0tLS0KIHRvb2xz L2NvbmZpZ3VyZSAgIHwgMTEwODAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KIDUgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyMjk5NSBkZWxldGlv bnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDc1NSBjb25maWd1cmUKIGRlbGV0ZSBtb2RlIDEwMDc1NSBk b2NzL2NvbmZpZ3VyZQogZGVsZXRlIG1vZGUgMTAwNzU1IHN0dWJkb20vY29uZmlndXJlCiBkZWxl dGUgbW9kZSAxMDA3NTUgdG9vbHMvY29uZmlndXJlCgpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBi Ly5naXRpZ25vcmUKaW5kZXggMjZiYzU4M2Y3NC4uMmY3OWVmMTk3ZiAxMDA2NDQKLS0tIGEvLmdp dGlnbm9yZQorKysgYi8uZ2l0aWdub3JlCkBAIC00MSw2ICs0MSwxMSBAQCBjb25maWcuY2FjaGUK IGNvbmZpZy9Ub3BsZXZlbC5tawogY29uZmlnL1BhdGhzLm1rCiAKK2NvbmZpZ3VyZQorY29uZmRl ZnMuaAorZG9jcy9jb25maWd1cmUKK3Rvb2xzL2NvbmZpZ3VyZQorCiBidWlsZC0qCiBkaXN0LyoK IGRvY3MvdG1wLioKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQpkZWxldGVkIGZp bGUgbW9kZSAxMDA3NTUKaW5kZXggNGQyNThlYjYxNS4uMDAwMDAwMDAwMAotLS0gYS9jb25maWd1 cmUKKysrIC9kZXYvbnVsbApAQCAtMSwzNjE4ICswLDAgQEAKLSMhIC9iaW4vc2gKLSMgR3Vlc3Mg dmFsdWVzIGZvciBzeXN0ZW0tZGVwZW5kZW50IHZhcmlhYmxlcyBhbmQgY3JlYXRlIE1ha2VmaWxl cy4KLSMgR2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5IGZvciBYZW4gSHlwZXJ2aXNvciA0 LjEzLgotIwotIyBSZXBvcnQgYnVncyB0byA8eGVuLWRldmVsQGxpc3RzLnhlbi5vcmc+LgotIwot IwotIyBDb3B5cmlnaHQgKEMpIDE5OTItMTk5NiwgMTk5OC0yMDEyIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgotIwotIwotIyBUaGlzIGNvbmZpZ3VyZSBzY3JpcHQgaXMgZnJlZSBzb2Z0 d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotIyBnaXZlcyB1bmxpbWl0ZWQgcGVy bWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuCi0jIyAtLS0tLS0tLS0t LS0tLS0tLS0tLSAjIwotIyMgTTRzaCBJbml0aWFsaXphdGlvbi4gIyMKLSMjIC0tLS0tLS0tLS0t LS0tLS0tLS0tICMjCi0KLSMgQmUgbW9yZSBCb3VybmUgY29tcGF0aWJsZQotRFVBTENBU0U9MTsg ZXhwb3J0IERVQUxDQVNFICMgZm9yIE1LUyBzaAotaWYgdGVzdCAtbiAiJHtaU0hfVkVSU0lPTitz ZXR9IiAmJiAoZW11bGF0ZSBzaCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSAgZW11bGF0ZSBz aAotICBOVUxMQ01EPToKLSAgIyBQcmUtNC4yIHZlcnNpb25zIG9mIFpzaCBkbyB3b3JkIHNwbGl0 dGluZyBvbiAkezErIiRAIn0sIHdoaWNoCi0gICMgaXMgY29udHJhcnkgdG8gb3VyIHVzYWdlLiAg RGlzYWJsZSB0aGlzIGZlYXR1cmUuCi0gIGFsaWFzIC1nICckezErIiRAIn0nPSciJEAiJwotICBz ZXRvcHQgTk9fR0xPQl9TVUJTVAotZWxzZQotICBjYXNlIGAoc2V0IC1vKSAyPi9kZXYvbnVsbGAg aW4gIygKLSAgKnBvc2l4KikgOgotICAgIHNldCAtbyBwb3NpeCA7OyAjKAotICAqKSA6Ci0gICAg IDs7Ci1lc2FjCi1maQotCi0KLWFzX25sPScKLScKLWV4cG9ydCBhc19ubAotIyBQcmludGluZyBh IGxvbmcgc3RyaW5nIGNyYXNoZXMgU29sYXJpcyA3IC91c3IvYmluL3ByaW50Zi4KLWFzX2VjaG89 J1xcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFwnCi1hc19lY2hv PSRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8KLWFzX2VjaG89JGFzX2Vj aG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvCi0jIFByZWZlciBhIGtz aCBzaGVsbCBidWlsdGluIG92ZXIgYW4gZXh0ZXJuYWwgcHJpbnRmIHByb2dyYW0gb24gU29sYXJp cywKLSMgYnV0IHdpdGhvdXQgd2FzdGluZyBmb3JrcyBmb3IgYmFzaCBvciB6c2guCi1pZiB0ZXN0 IC16ICIkQkFTSF9WRVJTSU9OJFpTSF9WRVJTSU9OIiBcCi0gICAgJiYgKHRlc3QgIlhgcHJpbnQg LXIgLS0gJGFzX2VjaG9gIiA9ICJYJGFzX2VjaG8iKSAyPi9kZXYvbnVsbDsgdGhlbgotICBhc19l Y2hvPSdwcmludCAtciAtLScKLSAgYXNfZWNob19uPSdwcmludCAtcm4gLS0nCi1lbGlmICh0ZXN0 ICJYYHByaW50ZiAlcyAkYXNfZWNob2AiID0gIlgkYXNfZWNobyIpIDI+L2Rldi9udWxsOyB0aGVu Ci0gIGFzX2VjaG89J3ByaW50ZiAlc1xuJwotICBhc19lY2hvX249J3ByaW50ZiAlcycKLWVsc2UK LSAgaWYgdGVzdCAiWGAoL3Vzci91Y2IvZWNobyAtbiAtbiAkYXNfZWNobykgMj4vZGV2L251bGxg IiA9ICJYLW4gJGFzX2VjaG8iOyB0aGVuCi0gICAgYXNfZWNob19ib2R5PSdldmFsIC91c3IvdWNi L2VjaG8gLW4gIiQxJGFzX25sIicKLSAgICBhc19lY2hvX249Jy91c3IvdWNiL2VjaG8gLW4nCi0g IGVsc2UKLSAgICBhc19lY2hvX2JvZHk9J2V2YWwgZXhwciAiWCQxIiA6ICJYXFwoLipcXCkiJwot ICAgIGFzX2VjaG9fbl9ib2R5PSdldmFsCi0gICAgICBhcmc9JDE7Ci0gICAgICBjYXNlICRhcmcg aW4gIygKLSAgICAgICoiJGFzX25sIiopCi0JZXhwciAiWCRhcmciIDogIlhcXCguKlxcKSRhc19u bCI7Ci0JYXJnPWBleHByICJYJGFyZyIgOiAiLiokYXNfbmxcXCguKlxcKSJgOzsKLSAgICAgIGVz YWM7Ci0gICAgICBleHByICJYJGFyZyIgOiAiWFxcKC4qXFwpIiB8IHRyIC1kICIkYXNfbmwiCi0g ICAgJwotICAgIGV4cG9ydCBhc19lY2hvX25fYm9keQotICAgIGFzX2VjaG9fbj0nc2ggLWMgJGFz X2VjaG9fbl9ib2R5IGFzX2VjaG8nCi0gIGZpCi0gIGV4cG9ydCBhc19lY2hvX2JvZHkKLSAgYXNf ZWNobz0nc2ggLWMgJGFzX2VjaG9fYm9keSBhc19lY2hvJwotZmkKLQotIyBUaGUgdXNlciBpcyBh bHdheXMgcmlnaHQuCi1pZiB0ZXN0ICIke1BBVEhfU0VQQVJBVE9SK3NldH0iICE9IHNldDsgdGhl bgotICBQQVRIX1NFUEFSQVRPUj06Ci0gIChQQVRIPScvYmluOy9iaW4nOyBGUEFUSD0kUEFUSDsg c2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxICYmIHsKLSAgICAoUEFUSD0nL2JpbjovYmluJzsgRlBB VEg9JFBBVEg7IHNoIC1jIDopID4vZGV2L251bGwgMj4mMSB8fAotICAgICAgUEFUSF9TRVBBUkFU T1I9JzsnCi0gIH0KLWZpCi0KLQotIyBJRlMKLSMgV2UgbmVlZCBzcGFjZSwgdGFiIGFuZCBuZXcg bGluZSwgaW4gcHJlY2lzZWx5IHRoYXQgb3JkZXIuICBRdW90aW5nIGlzCi0jIHRoZXJlIHRvIHBy ZXZlbnQgZWRpdG9ycyBmcm9tIGNvbXBsYWluaW5nIGFib3V0IHNwYWNlLXRhYi4KLSMgKElmIF9B U19QQVRIX1dBTEsgd2VyZSBjYWxsZWQgd2l0aCBJRlMgdW5zZXQsIGl0IHdvdWxkIGRpc2FibGUg d29yZAotIyBzcGxpdHRpbmcgYnkgc2V0dGluZyBJRlMgdG8gZW1wdHkgdmFsdWUuKQotSUZTPSIg IiIJJGFzX25sIgotCi0jIEZpbmQgd2hvIHdlIGFyZS4gIExvb2sgaW4gdGhlIHBhdGggaWYgd2Ug Y29udGFpbiBubyBkaXJlY3Rvcnkgc2VwYXJhdG9yLgotYXNfbXlzZWxmPQotY2FzZSAkMCBpbiAj KCgKLSAgKltcXC9dKiApIGFzX215c2VsZj0kMCA7OwotICAqKSBhc19zYXZlX0lGUz0kSUZTOyBJ RlM9JFBBVEhfU0VQQVJBVE9SCi1mb3IgYXNfZGlyIGluICRQQVRICi1kbwotICBJRlM9JGFzX3Nh dmVfSUZTCi0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgdGVzdCAtciAiJGFz X2Rpci8kMCIgJiYgYXNfbXlzZWxmPSRhc19kaXIvJDAgJiYgYnJlYWsKLSAgZG9uZQotSUZTPSRh c19zYXZlX0lGUwotCi0gICAgIDs7Ci1lc2FjCi0jIFdlIGRpZCBub3QgZmluZCBvdXJzZWx2ZXMs IG1vc3QgcHJvYmFibHkgd2Ugd2VyZSBydW4gYXMgYHNoIENPTU1BTkQnCi0jIGluIHdoaWNoIGNh c2Ugd2UgYXJlIG5vdCB0byBiZSBmb3VuZCBpbiB0aGUgcGF0aC4KLWlmIHRlc3QgIngkYXNfbXlz ZWxmIiA9IHg7IHRoZW4KLSAgYXNfbXlzZWxmPSQwCi1maQotaWYgdGVzdCAhIC1mICIkYXNfbXlz ZWxmIjsgdGhlbgotICAkYXNfZWNobyAiJGFzX215c2VsZjogZXJyb3I6IGNhbm5vdCBmaW5kIG15 c2VsZjsgcmVydW4gd2l0aCBhbiBhYnNvbHV0ZSBmaWxlIG5hbWUiID4mMgotICBleGl0IDEKLWZp Ci0KLSMgVW5zZXQgdmFyaWFibGVzIHRoYXQgd2UgZG8gbm90IG5lZWQgYW5kIHdoaWNoIGNhdXNl IGJ1Z3MgKGUuZy4gaW4KLSMgcHJlLTMuMCBVV0lOIGtzaCkuICBCdXQgZG8gbm90IGNhdXNlIGJ1 Z3MgaW4gYmFzaCAyLjAxOyB0aGUgInx8IGV4aXQgMSIKLSMgc3VwcHJlc3NlcyBhbnkgIlNlZ21l bnRhdGlvbiBmYXVsdCIgbWVzc2FnZSB0aGVyZS4gICcoKCcgY291bGQKLSMgdHJpZ2dlciBhIGJ1 ZyBpbiBwZGtzaCA1LjIuMTQuCi1mb3IgYXNfdmFyIGluIEJBU0hfRU5WIEVOViBNQUlMIE1BSUxQ QVRICi1kbyBldmFsIHRlc3QgeFwkeyRhc192YXIrc2V0fSA9IHhzZXQgXAotICAmJiAoICh1bnNl dCAkYXNfdmFyKSB8fCBleGl0IDEpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCAkYXNfdmFyIHx8 IDoKLWRvbmUKLVBTMT0nJCAnCi1QUzI9Jz4gJwotUFM0PScrICcKLQotIyBOTFMgbnVpc2FuY2Vz LgotTENfQUxMPUMKLWV4cG9ydCBMQ19BTEwKLUxBTkdVQUdFPUMKLWV4cG9ydCBMQU5HVUFHRQot Ci0jIENEUEFUSC4KLSh1bnNldCBDRFBBVEgpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCBDRFBB VEgKLQotIyBVc2UgYSBwcm9wZXIgaW50ZXJuYWwgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gZW5z dXJlIHdlIGRvbid0IGZhbGwKLSAgIyBpbnRvIGFuIGluZmluaXRlIGxvb3AsIGNvbnRpbnVvdXNs eSByZS1leGVjdXRpbmcgb3Vyc2VsdmVzLgotICBpZiB0ZXN0IHgiJHtfYXNfY2FuX3JlZXhlY30i ICE9IHhubyAmJiB0ZXN0ICJ4JENPTkZJR19TSEVMTCIgIT0geDsgdGhlbgotICAgIF9hc19jYW5f cmVleGVjPW5vOyBleHBvcnQgX2FzX2Nhbl9yZWV4ZWM7Ci0gICAgIyBXZSBjYW5ub3QgeWV0IGFz c3VtZSBhIGRlY2VudCBzaGVsbCwgc28gd2UgaGF2ZSB0byBwcm92aWRlIGEKLSMgbmV1dHJhbGl6 YXRpb24gdmFsdWUgZm9yIHNoZWxscyB3aXRob3V0IHVuc2V0OyBhbmQgdGhpcyBhbHNvCi0jIHdv cmtzIGFyb3VuZCBzaGVsbHMgdGhhdCBjYW5ub3QgdW5zZXQgbm9uZXhpc3RlbnQgdmFyaWFibGVz LgotIyBQcmVzZXJ2ZSAtdiBhbmQgLXggdG8gdGhlIHJlcGxhY2VtZW50IHNoZWxsLgotQkFTSF9F TlY9L2Rldi9udWxsCi1FTlY9L2Rldi9udWxsCi0odW5zZXQgQkFTSF9FTlYpID4vZGV2L251bGwg Mj4mMSAmJiB1bnNldCBCQVNIX0VOViBFTlYKLWNhc2UgJC0gaW4gIyAoKCgoCi0gICp2KngqIHwg KngqdiogKSBhc19vcHRzPS12eCA7OwotICAqdiogKSBhc19vcHRzPS12IDs7Ci0gICp4KiApIGFz X29wdHM9LXggOzsKLSAgKiApIGFzX29wdHM9IDs7Ci1lc2FjCi1leGVjICRDT05GSUdfU0hFTEwg JGFzX29wdHMgIiRhc19teXNlbGYiICR7MSsiJEAifQotIyBBZG1pdHRlZGx5LCB0aGlzIGlzIHF1 aXRlIHBhcmFub2lkLCBzaW5jZSBhbGwgdGhlIGtub3duIHNoZWxscyBiYWlsCi0jIG91dCBhZnRl ciBhIGZhaWxlZCBgZXhlYycuCi0kYXNfZWNobyAiJDA6IGNvdWxkIG5vdCByZS1leGVjdXRlIHdp dGggJENPTkZJR19TSEVMTCIgPiYyCi1hc19mbl9leGl0IDI1NQotICBmaQotICAjIFdlIGRvbid0 IHdhbnQgdGhpcyB0byBwcm9wYWdhdGUgdG8gb3RoZXIgc3VicHJvY2Vzc2VzLgotICAgICAgICAg IHsgX2FzX2Nhbl9yZWV4ZWM9OyB1bnNldCBfYXNfY2FuX3JlZXhlYzt9Ci1pZiB0ZXN0ICJ4JENP TkZJR19TSEVMTCIgPSB4OyB0aGVuCi0gIGFzX2JvdXJuZV9jb21wYXRpYmxlPSJpZiB0ZXN0IC1u IFwiXCR7WlNIX1ZFUlNJT04rc2V0fVwiICYmIChlbXVsYXRlIHNoKSA+L2Rldi9udWxsIDI+JjE7 IHRoZW4gOgotICBlbXVsYXRlIHNoCi0gIE5VTExDTUQ9OgotICAjIFByZS00LjIgdmVyc2lvbnMg b2YgWnNoIGRvIHdvcmQgc3BsaXR0aW5nIG9uIFwkezErXCJcJEBcIn0sIHdoaWNoCi0gICMgaXMg Y29udHJhcnkgdG8gb3VyIHVzYWdlLiAgRGlzYWJsZSB0aGlzIGZlYXR1cmUuCi0gIGFsaWFzIC1n ICdcJHsxK1wiXCRAXCJ9Jz0nXCJcJEBcIicKLSAgc2V0b3B0IE5PX0dMT0JfU1VCU1QKLWVsc2UK LSAgY2FzZSBcYChzZXQgLW8pIDI+L2Rldi9udWxsXGAgaW4gIygKLSAgKnBvc2l4KikgOgotICAg IHNldCAtbyBwb3NpeCA7OyAjKAotICAqKSA6Ci0gICAgIDs7Ci1lc2FjCi1maQotIgotICBhc19y ZXF1aXJlZD0iYXNfZm5fcmV0dXJuICgpIHsgKGV4aXQgXCQxKTsgfQotYXNfZm5fc3VjY2VzcyAo KSB7IGFzX2ZuX3JldHVybiAwOyB9Ci1hc19mbl9mYWlsdXJlICgpIHsgYXNfZm5fcmV0dXJuIDE7 IH0KLWFzX2ZuX3JldF9zdWNjZXNzICgpIHsgcmV0dXJuIDA7IH0KLWFzX2ZuX3JldF9mYWlsdXJl ICgpIHsgcmV0dXJuIDE7IH0KLQotZXhpdGNvZGU9MAotYXNfZm5fc3VjY2VzcyB8fCB7IGV4aXRj b2RlPTE7IGVjaG8gYXNfZm5fc3VjY2VzcyBmYWlsZWQuOyB9Ci1hc19mbl9mYWlsdXJlICYmIHsg ZXhpdGNvZGU9MTsgZWNobyBhc19mbl9mYWlsdXJlIHN1Y2NlZWRlZC47IH0KLWFzX2ZuX3JldF9z dWNjZXNzIHx8IHsgZXhpdGNvZGU9MTsgZWNobyBhc19mbl9yZXRfc3VjY2VzcyBmYWlsZWQuOyB9 Ci1hc19mbl9yZXRfZmFpbHVyZSAmJiB7IGV4aXRjb2RlPTE7IGVjaG8gYXNfZm5fcmV0X2ZhaWx1 cmUgc3VjY2VlZGVkLjsgfQotaWYgKCBzZXQgeDsgYXNfZm5fcmV0X3N1Y2Nlc3MgeSAmJiB0ZXN0 IHggPSBcIlwkMVwiICk7IHRoZW4gOgotCi1lbHNlCi0gIGV4aXRjb2RlPTE7IGVjaG8gcG9zaXRp b25hbCBwYXJhbWV0ZXJzIHdlcmUgbm90IHNhdmVkLgotZmkKLXRlc3QgeFwkZXhpdGNvZGUgPSB4 MCB8fCBleGl0IDEKLXRlc3QgLXggLyB8fCBleGl0IDEiCi0gIGFzX3N1Z2dlc3RlZD0iICBhc19s aW5lbm9fMT0iO2FzX3N1Z2dlc3RlZD0kYXNfc3VnZ2VzdGVkJExJTkVOTzthc19zdWdnZXN0ZWQ9 JGFzX3N1Z2dlc3RlZCIgYXNfbGluZW5vXzFhPVwkTElORU5PCi0gIGFzX2xpbmVub18yPSI7YXNf c3VnZ2VzdGVkPSRhc19zdWdnZXN0ZWQkTElORU5PO2FzX3N1Z2dlc3RlZD0kYXNfc3VnZ2VzdGVk IiBhc19saW5lbm9fMmE9XCRMSU5FTk8KLSAgZXZhbCAndGVzdCBcInhcJGFzX2xpbmVub18xJ1wk YXNfcnVuJ1wiICE9IFwieFwkYXNfbGluZW5vXzInXCRhc19ydW4nXCIgJiYKLSAgdGVzdCBcInhc YGV4cHIgXCRhc19saW5lbm9fMSdcJGFzX3J1bicgKyAxXGBcIiA9IFwieFwkYXNfbGluZW5vXzIn XCRhc19ydW4nXCInIHx8IGV4aXQgMSIKLSAgaWYgKGV2YWwgIiRhc19yZXF1aXJlZCIpIDI+L2Rl di9udWxsOyB0aGVuIDoKLSAgYXNfaGF2ZV9yZXF1aXJlZD15ZXMKLWVsc2UKLSAgYXNfaGF2ZV9y ZXF1aXJlZD1ubwotZmkKLSAgaWYgdGVzdCB4JGFzX2hhdmVfcmVxdWlyZWQgPSB4eWVzICYmIChl dmFsICIkYXNfc3VnZ2VzdGVkIikgMj4vZGV2L251bGw7IHRoZW4gOgotCi1lbHNlCi0gIGFzX3Nh dmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLWFzX2ZvdW5kPWZhbHNlCi1mb3IgYXNf ZGlyIGluIC9iaW4kUEFUSF9TRVBBUkFUT1IvdXNyL2JpbiRQQVRIX1NFUEFSQVRPUiRQQVRICi1k bwotICBJRlM9JGFzX3NhdmVfSUZTCi0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0g IGFzX2ZvdW5kPToKLSAgY2FzZSAkYXNfZGlyIGluICMoCi0JIC8qKQotCSAgIGZvciBhc19iYXNl IGluIHNoIGJhc2gga3NoIHNoNTsgZG8KLQkgICAgICMgVHJ5IG9ubHkgc2hlbGxzIHRoYXQgZXhp c3QsIHRvIHNhdmUgc2V2ZXJhbCBmb3Jrcy4KLQkgICAgIGFzX3NoZWxsPSRhc19kaXIvJGFzX2Jh c2UKLQkgICAgIGlmIHsgdGVzdCAtZiAiJGFzX3NoZWxsIiB8fCB0ZXN0IC1mICIkYXNfc2hlbGwu ZXhlIjsgfSAmJgotCQkgICAgeyAkYXNfZWNobyAiJGFzX2JvdXJuZV9jb21wYXRpYmxlIiIkYXNf cmVxdWlyZWQiIHwgYXNfcnVuPWEgIiRhc19zaGVsbCI7IH0gMj4vZGV2L251bGw7IHRoZW4gOgot ICBDT05GSUdfU0hFTEw9JGFzX3NoZWxsIGFzX2hhdmVfcmVxdWlyZWQ9eWVzCi0JCSAgIGlmIHsg JGFzX2VjaG8gIiRhc19ib3VybmVfY29tcGF0aWJsZSIiJGFzX3N1Z2dlc3RlZCIgfCBhc19ydW49 YSAiJGFzX3NoZWxsIjsgfSAyPi9kZXYvbnVsbDsgdGhlbiA6Ci0gIGJyZWFrIDIKLWZpCi1maQot CSAgIGRvbmU7OwotICAgICAgIGVzYWMKLSAgYXNfZm91bmQ9ZmFsc2UKLWRvbmUKLSRhc19mb3Vu ZCB8fCB7IGlmIHsgdGVzdCAtZiAiJFNIRUxMIiB8fCB0ZXN0IC1mICIkU0hFTEwuZXhlIjsgfSAm JgotCSAgICAgIHsgJGFzX2VjaG8gIiRhc19ib3VybmVfY29tcGF0aWJsZSIiJGFzX3JlcXVpcmVk IiB8IGFzX3J1bj1hICIkU0hFTEwiOyB9IDI+L2Rldi9udWxsOyB0aGVuIDoKLSAgQ09ORklHX1NI RUxMPSRTSEVMTCBhc19oYXZlX3JlcXVpcmVkPXllcwotZmk7IH0KLUlGUz0kYXNfc2F2ZV9JRlMK LQotCi0gICAgICBpZiB0ZXN0ICJ4JENPTkZJR19TSEVMTCIgIT0geDsgdGhlbiA6Ci0gIGV4cG9y dCBDT05GSUdfU0hFTEwKLSAgICAgICAgICAgICAjIFdlIGNhbm5vdCB5ZXQgYXNzdW1lIGEgZGVj ZW50IHNoZWxsLCBzbyB3ZSBoYXZlIHRvIHByb3ZpZGUgYQotIyBuZXV0cmFsaXphdGlvbiB2YWx1 ZSBmb3Igc2hlbGxzIHdpdGhvdXQgdW5zZXQ7IGFuZCB0aGlzIGFsc28KLSMgd29ya3MgYXJvdW5k IHNoZWxscyB0aGF0IGNhbm5vdCB1bnNldCBub25leGlzdGVudCB2YXJpYWJsZXMuCi0jIFByZXNl cnZlIC12IGFuZCAteCB0byB0aGUgcmVwbGFjZW1lbnQgc2hlbGwuCi1CQVNIX0VOVj0vZGV2L251 bGwKLUVOVj0vZGV2L251bGwKLSh1bnNldCBCQVNIX0VOVikgPi9kZXYvbnVsbCAyPiYxICYmIHVu c2V0IEJBU0hfRU5WIEVOVgotY2FzZSAkLSBpbiAjICgoKCgKLSAgKnYqeCogfCAqeCp2KiApIGFz X29wdHM9LXZ4IDs7Ci0gICp2KiApIGFzX29wdHM9LXYgOzsKLSAgKngqICkgYXNfb3B0cz0teCA7 OwotICAqICkgYXNfb3B0cz0gOzsKLWVzYWMKLWV4ZWMgJENPTkZJR19TSEVMTCAkYXNfb3B0cyAi JGFzX215c2VsZiIgJHsxKyIkQCJ9Ci0jIEFkbWl0dGVkbHksIHRoaXMgaXMgcXVpdGUgcGFyYW5v aWQsIHNpbmNlIGFsbCB0aGUga25vd24gc2hlbGxzIGJhaWwKLSMgb3V0IGFmdGVyIGEgZmFpbGVk IGBleGVjJy4KLSRhc19lY2hvICIkMDogY291bGQgbm90IHJlLWV4ZWN1dGUgd2l0aCAkQ09ORklH X1NIRUxMIiA+JjIKLWV4aXQgMjU1Ci1maQotCi0gICAgaWYgdGVzdCB4JGFzX2hhdmVfcmVxdWly ZWQgPSB4bm87IHRoZW4gOgotICAkYXNfZWNobyAiJDA6IFRoaXMgc2NyaXB0IHJlcXVpcmVzIGEg c2hlbGwgbW9yZSBtb2Rlcm4gdGhhbiBhbGwiCi0gICRhc19lY2hvICIkMDogdGhlIHNoZWxscyB0 aGF0IEkgZm91bmQgb24geW91ciBzeXN0ZW0uIgotICBpZiB0ZXN0IHgke1pTSF9WRVJTSU9OK3Nl dH0gPSB4c2V0IDsgdGhlbgotICAgICRhc19lY2hvICIkMDogSW4gcGFydGljdWxhciwgenNoICRa U0hfVkVSU0lPTiBoYXMgYnVncyBhbmQgc2hvdWxkIgotICAgICRhc19lY2hvICIkMDogYmUgdXBn cmFkZWQgdG8genNoIDQuMy40IG9yIGxhdGVyLiIKLSAgZWxzZQotICAgICRhc19lY2hvICIkMDog UGxlYXNlIHRlbGwgYnVnLWF1dG9jb25mQGdudS5vcmcgYW5kCi0kMDogeGVuLWRldmVsQGxpc3Rz Lnhlbi5vcmcgYWJvdXQgeW91ciBzeXN0ZW0sIGluY2x1ZGluZwotJDA6IGFueSBlcnJvciBwb3Nz aWJseSBvdXRwdXQgYmVmb3JlIHRoaXMgbWVzc2FnZS4gVGhlbgotJDA6IGluc3RhbGwgYSBtb2Rl cm4gc2hlbGwsIG9yIG1hbnVhbGx5IHJ1biB0aGUgc2NyaXB0Ci0kMDogdW5kZXIgc3VjaCBhIHNo ZWxsIGlmIHlvdSBkbyBoYXZlIG9uZS4iCi0gIGZpCi0gIGV4aXQgMQotZmkKLWZpCi1maQotU0hF TEw9JHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0KLWV4cG9ydCBTSEVMTAotIyBVbnNldCBtb3JlIHZh cmlhYmxlcyBrbm93biB0byBpbnRlcmZlcmUgd2l0aCBiZWhhdmlvciBvZiBjb21tb24gdG9vbHMu Ci1DTElDT0xPUl9GT1JDRT0gR1JFUF9PUFRJT05TPQotdW5zZXQgQ0xJQ09MT1JfRk9SQ0UgR1JF UF9PUFRJT05TCi0KLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIyMgTTRzaCBTaGVsbCBG dW5jdGlvbnMuICMjCi0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLSMgYXNfZm5fdW5zZXQg VkFSCi0jIC0tLS0tLS0tLS0tLS0tLQotIyBQb3J0YWJseSB1bnNldCBWQVIuCi1hc19mbl91bnNl dCAoKQotewotICB7IGV2YWwgJDE9OyB1bnNldCAkMTt9Ci19Ci1hc191bnNldD1hc19mbl91bnNl dAotCi0jIGFzX2ZuX3NldF9zdGF0dXMgU1RBVFVTCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ci0jIFNldCAkPyB0byBTVEFUVVMsIHdpdGhvdXQgZm9ya2luZy4KLWFzX2ZuX3NldF9zdGF0dXMg KCkKLXsKLSAgcmV0dXJuICQxCi19ICMgYXNfZm5fc2V0X3N0YXR1cwotCi0jIGFzX2ZuX2V4aXQg U1RBVFVTCi0jIC0tLS0tLS0tLS0tLS0tLS0tCi0jIEV4aXQgdGhlIHNoZWxsIHdpdGggU1RBVFVT LCBldmVuIGluIGEgInRyYXAgMCIgb3IgInNldCAtZSIgY29udGV4dC4KLWFzX2ZuX2V4aXQgKCkK LXsKLSAgc2V0ICtlCi0gIGFzX2ZuX3NldF9zdGF0dXMgJDEKLSAgZXhpdCAkMQotfSAjIGFzX2Zu X2V4aXQKLQotIyBhc19mbl9ta2Rpcl9wCi0jIC0tLS0tLS0tLS0tLS0KLSMgQ3JlYXRlICIkYXNf ZGlyIiBhcyBhIGRpcmVjdG9yeSwgaW5jbHVkaW5nIHBhcmVudHMgaWYgbmVjZXNzYXJ5LgotYXNf Zm5fbWtkaXJfcCAoKQotewotCi0gIGNhc2UgJGFzX2RpciBpbiAjKAotICAtKikgYXNfZGlyPS4v JGFzX2Rpcjs7Ci0gIGVzYWMKLSAgdGVzdCAtZCAiJGFzX2RpciIgfHwgZXZhbCAkYXNfbWtkaXJf cCB8fCB7Ci0gICAgYXNfZGlycz0KLSAgICB3aGlsZSA6OyBkbwotICAgICAgY2FzZSAkYXNfZGly IGluICMoCi0gICAgICAqXCcqKSBhc19xZGlyPWAkYXNfZWNobyAiJGFzX2RpciIgfCBzZWQgInMv Jy8nXFxcXFxcXFwnJy9nImA7OyAjJygKLSAgICAgICopIGFzX3FkaXI9JGFzX2Rpcjs7Ci0gICAg ICBlc2FjCi0gICAgICBhc19kaXJzPSInJGFzX3FkaXInICRhc19kaXJzIgotICAgICAgYXNfZGly PWAkYXNfZGlybmFtZSAtLSAiJGFzX2RpciIgfHwKLSRhc19leHByIFgiJGFzX2RpciIgOiAnWFwo LipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwKLQkgWCIkYXNfZGlyIiA6ICdYXCgvL1wpW14v XScgXHwgXAotCSBYIiRhc19kaXIiIDogJ1hcKC8vXCkkJyBcfCBcCi0JIFgiJGFzX2RpciIgOiAn WFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8Ci0kYXNfZWNobyBYIiRhc19kaXIiIHwKLSAgICBz ZWQgJy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQvewotCSAgICBzLy9cMS8KLQkgICAg cQotCSAgfQotCSAgL15YXChcL1wvXClbXi9dLiovewotCSAgICBzLy9cMS8KLQkgICAgcQotCSAg fQotCSAgL15YXChcL1wvXCkkL3sKLQkgICAgcy8vXDEvCi0JICAgIHEKLQkgIH0KLQkgIC9eWFwo XC9cKS4qL3sKLQkgICAgcy8vXDEvCi0JICAgIHEKLQkgIH0KLQkgIHMvLiovLi87IHEnYAotICAg ICAgdGVzdCAtZCAiJGFzX2RpciIgJiYgYnJlYWsKLSAgICBkb25lCi0gICAgdGVzdCAteiAiJGFz X2RpcnMiIHx8IGV2YWwgIm1rZGlyICRhc19kaXJzIgotICB9IHx8IHRlc3QgLWQgIiRhc19kaXIi IHx8IGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgY3JlYXRlIGRpcmVjdG9yeSAkYXNfZGlyIgotCi0K LX0gIyBhc19mbl9ta2Rpcl9wCi0KLSMgYXNfZm5fZXhlY3V0YWJsZV9wIEZJTEUKLSMgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KLSMgVGVzdCBpZiBGSUxFIGlzIGFuIGV4ZWN1dGFibGUgcmVndWxh ciBmaWxlLgotYXNfZm5fZXhlY3V0YWJsZV9wICgpCi17Ci0gIHRlc3QgLWYgIiQxIiAmJiB0ZXN0 IC14ICIkMSIKLX0gIyBhc19mbl9leGVjdXRhYmxlX3AKLSMgYXNfZm5fYXBwZW5kIFZBUiBWQUxV RQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEFwcGVuZCB0aGUgdGV4dCBpbiBWQUxVRSB0 byB0aGUgZW5kIG9mIHRoZSBkZWZpbml0aW9uIGNvbnRhaW5lZCBpbiBWQVIuIFRha2UKLSMgYWR2 YW50YWdlIG9mIGFueSBzaGVsbCBvcHRpbWl6YXRpb25zIHRoYXQgYWxsb3cgYW1vcnRpemVkIGxp bmVhciBncm93dGggb3ZlcgotIyByZXBlYXRlZCBhcHBlbmRzLCBpbnN0ZWFkIG9mIHRoZSB0eXBp Y2FsIHF1YWRyYXRpYyBncm93dGggcHJlc2VudCBpbiBuYWl2ZQotIyBpbXBsZW1lbnRhdGlvbnMu Ci1pZiAoZXZhbCAiYXNfdmFyPTE7IGFzX3Zhcis9MjsgdGVzdCB4XCRhc192YXIgPSB4MTIiKSAy Pi9kZXYvbnVsbDsgdGhlbiA6Ci0gIGV2YWwgJ2FzX2ZuX2FwcGVuZCAoKQotICB7Ci0gICAgZXZh bCAkMSs9XCQyCi0gIH0nCi1lbHNlCi0gIGFzX2ZuX2FwcGVuZCAoKQotICB7Ci0gICAgZXZhbCAk MT1cJCQxXCQyCi0gIH0KLWZpICMgYXNfZm5fYXBwZW5kCi0KLSMgYXNfZm5fYXJpdGggQVJHLi4u Ci0jIC0tLS0tLS0tLS0tLS0tLS0tLQotIyBQZXJmb3JtIGFyaXRobWV0aWMgZXZhbHVhdGlvbiBv biB0aGUgQVJHcywgYW5kIHN0b3JlIHRoZSByZXN1bHQgaW4gdGhlCi0jIGdsb2JhbCAkYXNfdmFs LiBUYWtlIGFkdmFudGFnZSBvZiBzaGVsbHMgdGhhdCBjYW4gYXZvaWQgZm9ya3MuIFRoZSBhcmd1 bWVudHMKLSMgbXVzdCBiZSBwb3J0YWJsZSBhY3Jvc3MgJCgoKSkgYW5kIGV4cHIuCi1pZiAoZXZh bCAidGVzdCBcJCgoIDEgKyAxICkpID0gMiIpIDI+L2Rldi9udWxsOyB0aGVuIDoKLSAgZXZhbCAn YXNfZm5fYXJpdGggKCkKLSAgewotICAgIGFzX3ZhbD0kKCggJCogKSkKLSAgfScKLWVsc2UKLSAg YXNfZm5fYXJpdGggKCkKLSAgewotICAgIGFzX3ZhbD1gZXhwciAiJEAiIHx8IHRlc3QgJD8gLWVx IDFgCi0gIH0KLWZpICMgYXNfZm5fYXJpdGgKLQotCi0jIGFzX2ZuX2Vycm9yIFNUQVRVUyBFUlJP UiBbTElORU5PIExPR19GRF0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQotIyBPdXRwdXQgImBiYXNlbmFtZSAkMGA6IGVycm9yOiBFUlJPUiIgdG8gc3RkZXJyLiBJ ZiBMSU5FTk8gYW5kIExPR19GRCBhcmUKLSMgcHJvdmlkZWQsIGFsc28gb3V0cHV0IHRoZSBlcnJv ciB0byBMT0dfRkQsIHJlZmVyZW5jaW5nIExJTkVOTy4gVGhlbiBleGl0IHRoZQotIyBzY3JpcHQg d2l0aCBTVEFUVVMsIHVzaW5nIDEgaWYgdGhhdCB3YXMgMC4KLWFzX2ZuX2Vycm9yICgpCi17Ci0g IGFzX3N0YXR1cz0kMTsgdGVzdCAkYXNfc3RhdHVzIC1lcSAwICYmIGFzX3N0YXR1cz0xCi0gIGlm IHRlc3QgIiQ0IjsgdGhlbgotICAgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDMifSBhc19saW5l bm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKLSAgICAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogJDIiID4mJDQKLSAgZmkKLSAgJGFz X2VjaG8gIiRhc19tZTogZXJyb3I6ICQyIiA+JjIKLSAgYXNfZm5fZXhpdCAkYXNfc3RhdHVzCi19 ICMgYXNfZm5fZXJyb3IKLQotaWYgZXhwciBhIDogJ1woYVwpJyA+L2Rldi9udWxsIDI+JjEgJiYK LSAgIHRlc3QgIlhgZXhwciAwMDAwMSA6ICcuKlwoLi4uXCknYCIgPSBYMDAxOyB0aGVuCi0gIGFz X2V4cHI9ZXhwcgotZWxzZQotICBhc19leHByPWZhbHNlCi1maQotCi1pZiAoYmFzZW5hbWUgLS0g LykgPi9kZXYvbnVsbCAyPiYxICYmIHRlc3QgIlhgYmFzZW5hbWUgLS0gLyAyPiYxYCIgPSAiWC8i OyB0aGVuCi0gIGFzX2Jhc2VuYW1lPWJhc2VuYW1lCi1lbHNlCi0gIGFzX2Jhc2VuYW1lPWZhbHNl Ci1maQotCi1pZiAoYXNfZGlyPWBkaXJuYW1lIC0tIC9gICYmIHRlc3QgIlgkYXNfZGlyIiA9IFgv KSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSAgYXNfZGlybmFtZT1kaXJuYW1lCi1lbHNlCi0gIGFz X2Rpcm5hbWU9ZmFsc2UKLWZpCi0KLWFzX21lPWAkYXNfYmFzZW5hbWUgLS0gIiQwIiB8fAotJGFz X2V4cHIgWC8iJDAiIDogJy4qL1woW14vXVteL10qXCkvKiQnIFx8IFwKLQkgWCIkMCIgOiAnWFwo Ly9cKSQnIFx8IFwKLQkgWCIkMCIgOiAnWFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8Ci0kYXNf ZWNobyBYLyIkMCIgfAotICAgIHNlZCAnL14uKlwvXChbXi9dW14vXSpcKVwvKiQvewotCSAgICBz Ly9cMS8KLQkgICAgcQotCSAgfQotCSAgL15YXC9cKFwvXC9cKSQvewotCSAgICBzLy9cMS8KLQkg ICAgcQotCSAgfQotCSAgL15YXC9cKFwvXCkuKi97Ci0JICAgIHMvL1wxLwotCSAgICBxCi0JICB9 Ci0JICBzLy4qLy4vOyBxJ2AKLQotIyBBdm9pZCBkZXBlbmRpbmcgdXBvbiBDaGFyYWN0ZXIgUmFu Z2VzLgotYXNfY3JfbGV0dGVycz0nYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonCi1hc19jcl9M RVRURVJTPSdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicKLWFzX2NyX0xldHRlcnM9JGFzX2Ny X2xldHRlcnMkYXNfY3JfTEVUVEVSUwotYXNfY3JfZGlnaXRzPScwMTIzNDU2Nzg5JwotYXNfY3Jf YWxudW09JGFzX2NyX0xldHRlcnMkYXNfY3JfZGlnaXRzCi0KLQotICBhc19saW5lbm9fMT0kTElO RU5PIGFzX2xpbmVub18xYT0kTElORU5PCi0gIGFzX2xpbmVub18yPSRMSU5FTk8gYXNfbGluZW5v XzJhPSRMSU5FTk8KLSAgZXZhbCAndGVzdCAieCRhc19saW5lbm9fMSckYXNfcnVuJyIgIT0gIngk YXNfbGluZW5vXzInJGFzX3J1biciICYmCi0gIHRlc3QgInhgZXhwciAkYXNfbGluZW5vXzEnJGFz X3J1bicgKyAxYCIgPSAieCRhc19saW5lbm9fMickYXNfcnVuJyInIHx8IHsKLSAgIyBCbGFtZSBM ZWUgRS4gTWNNYWhvbiAoMTkzMS0xOTg5KSBmb3Igc2VkJ3Mgc3ludGF4LiAgOi0pCi0gIHNlZCAt biAnCi0gICAgcAotICAgIC9bJF1MSU5FTk8vPQotICAnIDwkYXNfbXlzZWxmIHwKLSAgICBzZWQg JwotICAgICAgcy9bJF1MSU5FTk8uKi8mLS8KLSAgICAgIHQgbGluZW5vCi0gICAgICBiCi0gICAg ICA6bGluZW5vCi0gICAgICBOCi0gICAgICA6bG9vcAotICAgICAgcy9bJF1MSU5FTk9cKFteJyRh c19jcl9hbG51bSdfXS4qXG5cKVwoLipcKS9cMlwxXDIvCi0gICAgICB0IGxvb3AKLSAgICAgIHMv LVxuLiovLwotICAgICcgPiRhc19tZS5saW5lbm8gJiYKLSAgY2htb2QgK3ggIiRhc19tZS5saW5l bm8iIHx8Ci0gICAgeyAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGNyZWF0ZSAkYXNf bWUubGluZW5vOyByZXJ1biB3aXRoIGEgUE9TSVggc2hlbGwiID4mMjsgYXNfZm5fZXhpdCAxOyB9 Ci0KLSAgIyBJZiB3ZSBoYWQgdG8gcmUtZXhlY3V0ZSB3aXRoICRDT05GSUdfU0hFTEwsIHdlJ3Jl IGVuc3VyZWQgdG8gaGF2ZQotICAjIGFscmVhZHkgZG9uZSB0aGF0LCBzbyBlbnN1cmUgd2UgZG9u J3QgdHJ5IHRvIGRvIHNvIGFnYWluIGFuZCBmYWxsCi0gICMgaW4gYW4gaW5maW5pdGUgbG9vcC4g IFRoaXMgaGFzIGFscmVhZHkgaGFwcGVuZWQgaW4gcHJhY3RpY2UuCi0gIF9hc19jYW5fcmVleGVj PW5vOyBleHBvcnQgX2FzX2Nhbl9yZWV4ZWMKLSAgIyBEb24ndCB0cnkgdG8gZXhlYyBhcyBpdCBj aGFuZ2VzICRbMF0sIGNhdXNpbmcgYWxsIHNvcnQgb2YgcHJvYmxlbXMKLSAgIyAodGhlIGRpcm5h bWUgb2YgJFswXSBpcyBub3QgdGhlIHBsYWNlIHdoZXJlIHdlIG1pZ2h0IGZpbmQgdGhlCi0gICMg b3JpZ2luYWwgYW5kIHNvIG9uLiAgQXV0b2NvbmYgaXMgZXNwZWNpYWxseSBzZW5zaXRpdmUgdG8g dGhpcykuCi0gIC4gIi4vJGFzX21lLmxpbmVubyIKLSAgIyBFeGl0IHN0YXR1cyBpcyB0aGF0IG9m IHRoZSBsYXN0IGNvbW1hbmQuCi0gIGV4aXQKLX0KLQotRUNIT19DPSBFQ0hPX049IEVDSE9fVD0K LWNhc2UgYGVjaG8gLW4geGAgaW4gIygoKCgoCi0tbiopCi0gIGNhc2UgYGVjaG8gJ3h5XGMnYCBp bgotICAqYyopIEVDSE9fVD0nCSc7OwkjIEVDSE9fVCBpcyBzaW5nbGUgdGFiIGNoYXJhY3Rlci4K LSAgeHkpICBFQ0hPX0M9J1xjJzs7Ci0gICopICAgZWNobyBgZWNobyBrc2g4OCBidWcgb24gQUlY IDYuMWAgPiAvZGV2L251bGwKLSAgICAgICBFQ0hPX1Q9JwknOzsKLSAgZXNhYzs7Ci0qKQotICBF Q0hPX049Jy1uJzs7Ci1lc2FjCi0KLXJtIC1mIGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5maWxl Ci1pZiB0ZXN0IC1kIGNvbmYkJC5kaXI7IHRoZW4KLSAgcm0gLWYgY29uZiQkLmRpci9jb25mJCQu ZmlsZQotZWxzZQotICBybSAtZiBjb25mJCQuZGlyCi0gIG1rZGlyIGNvbmYkJC5kaXIgMj4vZGV2 L251bGwKLWZpCi1pZiAoZWNobyA+Y29uZiQkLmZpbGUpIDI+L2Rldi9udWxsOyB0aGVuCi0gIGlm IGxuIC1zIGNvbmYkJC5maWxlIGNvbmYkJCAyPi9kZXYvbnVsbDsgdGhlbgotICAgIGFzX2xuX3M9 J2xuIC1zJwotICAgICMgLi4uIGJ1dCB0aGVyZSBhcmUgdHdvIGdvdGNoYXM6Ci0gICAgIyAxKSBP biBNU1lTLCBib3RoIGBsbiAtcyBmaWxlIGRpcicgYW5kIGBsbiBmaWxlIGRpcicgZmFpbC4KLSAg ICAjIDIpIERKR1BQIDwgMi4wNCBoYXMgbm8gc3ltbGlua3M7IGBsbiAtcycgY3JlYXRlcyBhIHdy YXBwZXIgZXhlY3V0YWJsZS4KLSAgICAjIEluIGJvdGggY2FzZXMsIHdlIGhhdmUgdG8gZGVmYXVs dCB0byBgY3AgLXBSJy4KLSAgICBsbiAtcyBjb25mJCQuZmlsZSBjb25mJCQuZGlyIDI+L2Rldi9u dWxsICYmIHRlc3QgISAtZiBjb25mJCQuZXhlIHx8Ci0gICAgICBhc19sbl9zPSdjcCAtcFInCi0g IGVsaWYgbG4gY29uZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVuCi0gICAgYXNfbG5f cz1sbgotICBlbHNlCi0gICAgYXNfbG5fcz0nY3AgLXBSJwotICBmaQotZWxzZQotICBhc19sbl9z PSdjcCAtcFInCi1maQotcm0gLWYgY29uZiQkIGNvbmYkJC5leGUgY29uZiQkLmRpci9jb25mJCQu ZmlsZSBjb25mJCQuZmlsZQotcm1kaXIgY29uZiQkLmRpciAyPi9kZXYvbnVsbAotCi1pZiBta2Rp ciAtcCAuIDI+L2Rldi9udWxsOyB0aGVuCi0gIGFzX21rZGlyX3A9J21rZGlyIC1wICIkYXNfZGly IicKLWVsc2UKLSAgdGVzdCAtZCAuLy1wICYmIHJtZGlyIC4vLXAKLSAgYXNfbWtkaXJfcD1mYWxz ZQotZmkKLQotYXNfdGVzdF94PSd0ZXN0IC14JwotYXNfZXhlY3V0YWJsZV9wPWFzX2ZuX2V4ZWN1 dGFibGVfcAotCi0jIFNlZCBleHByZXNzaW9uIHRvIG1hcCBhIHN0cmluZyBvbnRvIGEgdmFsaWQg Q1BQIG5hbWUuCi1hc190cl9jcHA9ImV2YWwgc2VkICd5JSokYXNfY3JfbGV0dGVycyVQJGFzX2Ny X0xFVFRFUlMlO3MlW15fJGFzX2NyX2FsbnVtXSVfJWcnIgotCi0jIFNlZCBleHByZXNzaW9uIHRv IG1hcCBhIHN0cmluZyBvbnRvIGEgdmFsaWQgdmFyaWFibGUgbmFtZS4KLWFzX3RyX3NoPSJldmFs IHNlZCAneSUqKyVwcCU7cyVbXl8kYXNfY3JfYWxudW1dJV8lZyciCi0KLQotdGVzdCAtbiAiJERK RElSIiB8fCBleGVjIDc8JjAgPC9kZXYvbnVsbAotZXhlYyA2PiYxCi0KLSMgTmFtZSBvZiB0aGUg aG9zdC4KLSMgaG9zdG5hbWUgb24gc29tZSBzeXN0ZW1zIChTVlIzLjIsIG9sZCBHTlUvTGludXgp IHJldHVybnMgYSBib2d1cyBleGl0IHN0YXR1cywKLSMgc28gdW5hbWUgZ2V0cyBydW4gdG9vLgot YWNfaG9zdG5hbWU9YChob3N0bmFtZSB8fCB1bmFtZSAtbikgMj4vZGV2L251bGwgfCBzZWQgMXFg Ci0KLSMKLSMgSW5pdGlhbGl6YXRpb25zLgotIwotYWNfZGVmYXVsdF9wcmVmaXg9L3Vzci9sb2Nh bAotYWNfY2xlYW5fZmlsZXM9Ci1hY19jb25maWdfbGlib2JqX2Rpcj0uCi1MSUJPQkpTPQotY3Jv c3NfY29tcGlsaW5nPW5vCi1zdWJkaXJzPQotTUZMQUdTPQotTUFLRUZMQUdTPQotCi0jIElkZW50 aXR5IG9mIHRoaXMgcGFja2FnZS4KLVBBQ0tBR0VfTkFNRT0nWGVuIEh5cGVydmlzb3InCi1QQUNL QUdFX1RBUk5BTUU9J3hlbicKLVBBQ0tBR0VfVkVSU0lPTj0nNC4xMycKLVBBQ0tBR0VfU1RSSU5H PSdYZW4gSHlwZXJ2aXNvciA0LjEzJwotUEFDS0FHRV9CVUdSRVBPUlQ9J3hlbi1kZXZlbEBsaXN0 cy54ZW4ub3JnJwotUEFDS0FHRV9VUkw9J2h0dHA6Ly93d3cueGVuLm9yZy8nCi0KLWFjX3VuaXF1 ZV9maWxlPSIuL3hlbi9jb21tb24va2VybmVsLmMiCi1lbmFibGVfb3B0aW9uX2NoZWNraW5nPW5v Ci1hY19zdWJzdF92YXJzPSdMVExJQk9CSlMKLUxJQk9CSlMKLVNVQlNZU1RFTVMKLWRvY3MKLXN0 dWJkb20KLXRvb2xzCi14ZW4KLXN1YmRpcnMKLWdpdGh0dHAKLURFQlVHX0RJUgotWEVOX0RVTVBf RElSCi1YRU5fUEFHSU5HX0RJUgotWEVOX0xPQ0tfRElSCi1YRU5fU0NSSVBUX0RJUgotWEVOX0NP TkZJR19ESVIKLUlOSVREX0RJUgotQ09ORklHX0RJUgotU0hBUkVESVIKLVhFTl9MSUJfRElSCi1Y RU5fUlVOX1NUT1JFRAotWEVOX0xJQl9TVE9SRUQKLVhFTl9MT0dfRElSCi1YRU5fUlVOX0RJUgot WEVORklSTVdBUkVESVIKLUxJQkVYRUNfSU5DCi1MSUJFWEVDX0xJQgotTElCRVhFQ19CSU4KLUxJ QkVYRUMKLUNPTkZJR19MRUFGX0RJUgotWEVOU1RPUkVEX1BPUlQKLVhFTlNUT1JFRF9LVkEKLWhv c3Rfb3MKLWhvc3RfdmVuZG9yCi1ob3N0X2NwdQotaG9zdAotYnVpbGRfb3MKLWJ1aWxkX3ZlbmRv cgotYnVpbGRfY3B1Ci1idWlsZAotdGFyZ2V0X2FsaWFzCi1ob3N0X2FsaWFzCi1idWlsZF9hbGlh cwotTElCUwotRUNIT19UCi1FQ0hPX04KLUVDSE9fQwotREVGUwotbWFuZGlyCi1sb2NhbGVkaXIK LWxpYmRpcgotcHNkaXIKLXBkZmRpcgotZHZpZGlyCi1odG1sZGlyCi1pbmZvZGlyCi1kb2NkaXIK LW9sZGluY2x1ZGVkaXIKLWluY2x1ZGVkaXIKLXJ1bnN0YXRlZGlyCi1sb2NhbHN0YXRlZGlyCi1z aGFyZWRzdGF0ZWRpcgotc3lzY29uZmRpcgotZGF0YWRpcgotZGF0YXJvb3RkaXIKLWxpYmV4ZWNk aXIKLXNiaW5kaXIKLWJpbmRpcgotcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZQotcHJlZml4Ci1leGVj X3ByZWZpeAotUEFDS0FHRV9VUkwKLVBBQ0tBR0VfQlVHUkVQT1JUCi1QQUNLQUdFX1NUUklORwot UEFDS0FHRV9WRVJTSU9OCi1QQUNLQUdFX1RBUk5BTUUKLVBBQ0tBR0VfTkFNRQotUEFUSF9TRVBB UkFUT1IKLVNIRUxMJwotYWNfc3Vic3RfZmlsZXM9JycKLWFjX3VzZXJfb3B0cz0nCi1lbmFibGVf b3B0aW9uX2NoZWNraW5nCi13aXRoX2luaXRkZGlyCi13aXRoX3N5c2NvbmZpZ19sZWFmX2Rpcgot d2l0aF9saWJleGVjX2xlYWZfZGlyCi13aXRoX3hlbl9kdW1wZGlyCi13aXRoX3J1bmRpcgotd2l0 aF9kZWJ1Z2RpcgotZW5hYmxlX2dpdGh0dHAKLWVuYWJsZV94ZW4KLWVuYWJsZV90b29scwotZW5h YmxlX3N0dWJkb20KLWVuYWJsZV9kb2NzCi0nCi0gICAgICBhY19wcmVjaW91c192YXJzPSdidWls ZF9hbGlhcwotaG9zdF9hbGlhcwotdGFyZ2V0X2FsaWFzJwotYWNfc3ViZGlyc19hbGw9J3hlbgot dG9vbHMKLXN0dWJkb20KLWRvY3MnCi0KLSMgSW5pdGlhbGl6ZSBzb21lIHZhcmlhYmxlcyBzZXQg Ynkgb3B0aW9ucy4KLWFjX2luaXRfaGVscD0KLWFjX2luaXRfdmVyc2lvbj1mYWxzZQotYWNfdW5y ZWNvZ25pemVkX29wdHM9Ci1hY191bnJlY29nbml6ZWRfc2VwPQotIyBUaGUgdmFyaWFibGVzIGhh dmUgdGhlIHNhbWUgbmFtZXMgYXMgdGhlIG9wdGlvbnMsIHdpdGgKLSMgZGFzaGVzIGNoYW5nZWQg dG8gdW5kZXJsaW5lcy4KLWNhY2hlX2ZpbGU9L2Rldi9udWxsCi1leGVjX3ByZWZpeD1OT05FCi1u b19jcmVhdGU9Ci1ub19yZWN1cnNpb249Ci1wcmVmaXg9Tk9ORQotcHJvZ3JhbV9wcmVmaXg9Tk9O RQotcHJvZ3JhbV9zdWZmaXg9Tk9ORQotcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZT1zLHgseCwKLXNp bGVudD0KLXNpdGU9Ci1zcmNkaXI9Ci12ZXJib3NlPQoteF9pbmNsdWRlcz1OT05FCi14X2xpYnJh cmllcz1OT05FCi0KLSMgSW5zdGFsbGF0aW9uIGRpcmVjdG9yeSBvcHRpb25zLgotIyBUaGVzZSBh cmUgbGVmdCB1bmV4cGFuZGVkIHNvIHVzZXJzIGNhbiAibWFrZSBpbnN0YWxsIGV4ZWNfcHJlZml4 PS9mb28iCi0jIGFuZCBhbGwgdGhlIHZhcmlhYmxlcyB0aGF0IGFyZSBzdXBwb3NlZCB0byBiZSBi YXNlZCBvbiBleGVjX3ByZWZpeAotIyBieSBkZWZhdWx0IHdpbGwgYWN0dWFsbHkgY2hhbmdlLgot IyBVc2UgYnJhY2VzIGluc3RlYWQgb2YgcGFyZW5zIGJlY2F1c2Ugc2gsIHBlcmwsIGV0Yy4gYWxz byBhY2NlcHQgdGhlbS4KLSMgKFRoZSBsaXN0IGZvbGxvd3MgdGhlIHNhbWUgb3JkZXIgYXMgdGhl IEdOVSBDb2RpbmcgU3RhbmRhcmRzLikKLWJpbmRpcj0nJHtleGVjX3ByZWZpeH0vYmluJwotc2Jp bmRpcj0nJHtleGVjX3ByZWZpeH0vc2JpbicKLWxpYmV4ZWNkaXI9JyR7ZXhlY19wcmVmaXh9L2xp YmV4ZWMnCi1kYXRhcm9vdGRpcj0nJHtwcmVmaXh9L3NoYXJlJwotZGF0YWRpcj0nJHtkYXRhcm9v dGRpcn0nCi1zeXNjb25mZGlyPScke3ByZWZpeH0vZXRjJwotc2hhcmVkc3RhdGVkaXI9JyR7cHJl Zml4fS9jb20nCi1sb2NhbHN0YXRlZGlyPScke3ByZWZpeH0vdmFyJwotcnVuc3RhdGVkaXI9JyR7 bG9jYWxzdGF0ZWRpcn0vcnVuJwotaW5jbHVkZWRpcj0nJHtwcmVmaXh9L2luY2x1ZGUnCi1vbGRp bmNsdWRlZGlyPScvdXNyL2luY2x1ZGUnCi1kb2NkaXI9JyR7ZGF0YXJvb3RkaXJ9L2RvYy8ke1BB Q0tBR0VfVEFSTkFNRX0nCi1pbmZvZGlyPScke2RhdGFyb290ZGlyfS9pbmZvJwotaHRtbGRpcj0n JHtkb2NkaXJ9JwotZHZpZGlyPScke2RvY2Rpcn0nCi1wZGZkaXI9JyR7ZG9jZGlyfScKLXBzZGly PScke2RvY2Rpcn0nCi1saWJkaXI9JyR7ZXhlY19wcmVmaXh9L2xpYicKLWxvY2FsZWRpcj0nJHtk YXRhcm9vdGRpcn0vbG9jYWxlJwotbWFuZGlyPScke2RhdGFyb290ZGlyfS9tYW4nCi0KLWFjX3By ZXY9Ci1hY19kYXNoZGFzaD0KLWZvciBhY19vcHRpb24KLWRvCi0gICMgSWYgdGhlIHByZXZpb3Vz IG9wdGlvbiBuZWVkcyBhbiBhcmd1bWVudCwgYXNzaWduIGl0LgotICBpZiB0ZXN0IC1uICIkYWNf cHJldiI7IHRoZW4KLSAgICBldmFsICRhY19wcmV2PVwkYWNfb3B0aW9uCi0gICAgYWNfcHJldj0K LSAgICBjb250aW51ZQotICBmaQotCi0gIGNhc2UgJGFjX29wdGlvbiBpbgotICAqPT8qKSBhY19v cHRhcmc9YGV4cHIgIlgkYWNfb3B0aW9uIiA6ICdbXj1dKj1cKC4qXCknYCA7OwotICAqPSkgICBh Y19vcHRhcmc9IDs7Ci0gICopICAgIGFjX29wdGFyZz15ZXMgOzsKLSAgZXNhYwotCi0gICMgQWNj ZXB0IHRoZSBpbXBvcnRhbnQgQ3lnbnVzIGNvbmZpZ3VyZSBvcHRpb25zLCBzbyB3ZSBjYW4gZGlh Z25vc2UgdHlwb3MuCi0KLSAgY2FzZSAkYWNfZGFzaGRhc2gkYWNfb3B0aW9uIGluCi0gIC0tKQot ICAgIGFjX2Rhc2hkYXNoPXllcyA7OwotCi0gIC1iaW5kaXIgfCAtLWJpbmRpciB8IC0tYmluZGkg fCAtLWJpbmQgfCAtLWJpbiB8IC0tYmkpCi0gICAgYWNfcHJldj1iaW5kaXIgOzsKLSAgLWJpbmRp cj0qIHwgLS1iaW5kaXI9KiB8IC0tYmluZGk9KiB8IC0tYmluZD0qIHwgLS1iaW49KiB8IC0tYmk9 KikKLSAgICBiaW5kaXI9JGFjX29wdGFyZyA7OwotCi0gIC1idWlsZCB8IC0tYnVpbGQgfCAtLWJ1 aWwgfCAtLWJ1aSB8IC0tYnUpCi0gICAgYWNfcHJldj1idWlsZF9hbGlhcyA7OwotICAtYnVpbGQ9 KiB8IC0tYnVpbGQ9KiB8IC0tYnVpbD0qIHwgLS1idWk9KiB8IC0tYnU9KikKLSAgICBidWlsZF9h bGlhcz0kYWNfb3B0YXJnIDs7Ci0KLSAgLWNhY2hlLWZpbGUgfCAtLWNhY2hlLWZpbGUgfCAtLWNh Y2hlLWZpbCB8IC0tY2FjaGUtZmkgXAotICB8IC0tY2FjaGUtZiB8IC0tY2FjaGUtIHwgLS1jYWNo ZSB8IC0tY2FjaCB8IC0tY2FjIHwgLS1jYSB8IC0tYykKLSAgICBhY19wcmV2PWNhY2hlX2ZpbGUg OzsKLSAgLWNhY2hlLWZpbGU9KiB8IC0tY2FjaGUtZmlsZT0qIHwgLS1jYWNoZS1maWw9KiB8IC0t Y2FjaGUtZmk9KiBcCi0gIHwgLS1jYWNoZS1mPSogfCAtLWNhY2hlLT0qIHwgLS1jYWNoZT0qIHwg LS1jYWNoPSogfCAtLWNhYz0qIHwgLS1jYT0qIHwgLS1jPSopCi0gICAgY2FjaGVfZmlsZT0kYWNf b3B0YXJnIDs7Ci0KLSAgLS1jb25maWctY2FjaGUgfCAtQykKLSAgICBjYWNoZV9maWxlPWNvbmZp Zy5jYWNoZSA7OwotCi0gIC1kYXRhZGlyIHwgLS1kYXRhZGlyIHwgLS1kYXRhZGkgfCAtLWRhdGFk KQotICAgIGFjX3ByZXY9ZGF0YWRpciA7OwotICAtZGF0YWRpcj0qIHwgLS1kYXRhZGlyPSogfCAt LWRhdGFkaT0qIHwgLS1kYXRhZD0qKQotICAgIGRhdGFkaXI9JGFjX29wdGFyZyA7OwotCi0gIC1k YXRhcm9vdGRpciB8IC0tZGF0YXJvb3RkaXIgfCAtLWRhdGFyb290ZGkgfCAtLWRhdGFyb290ZCB8 IC0tZGF0YXJvb3QgXAotICB8IC0tZGF0YXJvbyB8IC0tZGF0YXJvIHwgLS1kYXRhcikKLSAgICBh Y19wcmV2PWRhdGFyb290ZGlyIDs7Ci0gIC1kYXRhcm9vdGRpcj0qIHwgLS1kYXRhcm9vdGRpcj0q IHwgLS1kYXRhcm9vdGRpPSogfCAtLWRhdGFyb290ZD0qIFwKLSAgfCAtLWRhdGFyb290PSogfCAt LWRhdGFyb289KiB8IC0tZGF0YXJvPSogfCAtLWRhdGFyPSopCi0gICAgZGF0YXJvb3RkaXI9JGFj X29wdGFyZyA7OwotCi0gIC1kaXNhYmxlLSogfCAtLWRpc2FibGUtKikKLSAgICBhY191c2Vyb3B0 PWBleHByICJ4JGFjX29wdGlvbiIgOiAneC0qZGlzYWJsZS1cKC4qXCknYAotICAgICMgUmVqZWN0 IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4KLSAgICBleHBy ICJ4JGFjX3VzZXJvcHQiIDogIi4qW14tKy5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgot ICAgICAgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgZmVhdHVyZSBuYW1lOiAkYWNfdXNlcm9wdCIK LSAgICBhY191c2Vyb3B0X29yaWc9JGFjX3VzZXJvcHQKLSAgICBhY191c2Vyb3B0PWAkYXNfZWNo byAiJGFjX3VzZXJvcHQiIHwgc2VkICdzL1stKy5dL18vZydgCi0gICAgY2FzZSAkYWNfdXNlcl9v cHRzIGluCi0gICAgICAqIgotImVuYWJsZV8kYWNfdXNlcm9wdCIKLSIqKSA7OwotICAgICAgKikg YWNfdW5yZWNvZ25pemVkX29wdHM9IiRhY191bnJlY29nbml6ZWRfb3B0cyRhY191bnJlY29nbml6 ZWRfc2VwLS1kaXNhYmxlLSRhY191c2Vyb3B0X29yaWciCi0JIGFjX3VucmVjb2duaXplZF9zZXA9 JywgJzs7Ci0gICAgZXNhYwotICAgIGV2YWwgZW5hYmxlXyRhY191c2Vyb3B0PW5vIDs7Ci0KLSAg LWRvY2RpciB8IC0tZG9jZGlyIHwgLS1kb2NkaSB8IC0tZG9jIHwgLS1kbykKLSAgICBhY19wcmV2 PWRvY2RpciA7OwotICAtZG9jZGlyPSogfCAtLWRvY2Rpcj0qIHwgLS1kb2NkaT0qIHwgLS1kb2M9 KiB8IC0tZG89KikKLSAgICBkb2NkaXI9JGFjX29wdGFyZyA7OwotCi0gIC1kdmlkaXIgfCAtLWR2 aWRpciB8IC0tZHZpZGkgfCAtLWR2aWQgfCAtLWR2aSB8IC0tZHYpCi0gICAgYWNfcHJldj1kdmlk aXIgOzsKLSAgLWR2aWRpcj0qIHwgLS1kdmlkaXI9KiB8IC0tZHZpZGk9KiB8IC0tZHZpZD0qIHwg LS1kdmk9KiB8IC0tZHY9KikKLSAgICBkdmlkaXI9JGFjX29wdGFyZyA7OwotCi0gIC1lbmFibGUt KiB8IC0tZW5hYmxlLSopCi0gICAgYWNfdXNlcm9wdD1gZXhwciAieCRhY19vcHRpb24iIDogJ3gt KmVuYWJsZS1cKFtePV0qXCknYAotICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxp ZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4KLSAgICBleHByICJ4JGFjX3VzZXJvcHQiIDogIi4qW14t Ky5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgotICAgICAgYXNfZm5fZXJyb3IgJD8gImlu dmFsaWQgZmVhdHVyZSBuYW1lOiAkYWNfdXNlcm9wdCIKLSAgICBhY191c2Vyb3B0X29yaWc9JGFj X3VzZXJvcHQKLSAgICBhY191c2Vyb3B0PWAkYXNfZWNobyAiJGFjX3VzZXJvcHQiIHwgc2VkICdz L1stKy5dL18vZydgCi0gICAgY2FzZSAkYWNfdXNlcl9vcHRzIGluCi0gICAgICAqIgotImVuYWJs ZV8kYWNfdXNlcm9wdCIKLSIqKSA7OwotICAgICAgKikgYWNfdW5yZWNvZ25pemVkX29wdHM9IiRh Y191bnJlY29nbml6ZWRfb3B0cyRhY191bnJlY29nbml6ZWRfc2VwLS1lbmFibGUtJGFjX3VzZXJv cHRfb3JpZyIKLQkgYWNfdW5yZWNvZ25pemVkX3NlcD0nLCAnOzsKLSAgICBlc2FjCi0gICAgZXZh bCBlbmFibGVfJGFjX3VzZXJvcHQ9XCRhY19vcHRhcmcgOzsKLQotICAtZXhlYy1wcmVmaXggfCAt LWV4ZWNfcHJlZml4IHwgLS1leGVjLXByZWZpeCB8IC0tZXhlYy1wcmVmaSBcCi0gIHwgLS1leGVj LXByZWYgfCAtLWV4ZWMtcHJlIHwgLS1leGVjLXByIHwgLS1leGVjLXAgfCAtLWV4ZWMtIFwKLSAg fCAtLWV4ZWMgfCAtLWV4ZSB8IC0tZXgpCi0gICAgYWNfcHJldj1leGVjX3ByZWZpeCA7OwotICAt ZXhlYy1wcmVmaXg9KiB8IC0tZXhlY19wcmVmaXg9KiB8IC0tZXhlYy1wcmVmaXg9KiB8IC0tZXhl Yy1wcmVmaT0qIFwKLSAgfCAtLWV4ZWMtcHJlZj0qIHwgLS1leGVjLXByZT0qIHwgLS1leGVjLXBy PSogfCAtLWV4ZWMtcD0qIHwgLS1leGVjLT0qIFwKLSAgfCAtLWV4ZWM9KiB8IC0tZXhlPSogfCAt LWV4PSopCi0gICAgZXhlY19wcmVmaXg9JGFjX29wdGFyZyA7OwotCi0gIC1nYXMgfCAtLWdhcyB8 IC0tZ2EgfCAtLWcpCi0gICAgIyBPYnNvbGV0ZTsgdXNlIC0td2l0aC1nYXMuCi0gICAgd2l0aF9n YXM9eWVzIDs7Ci0KLSAgLWhlbHAgfCAtLWhlbHAgfCAtLWhlbCB8IC0taGUgfCAtaCkKLSAgICBh Y19pbml0X2hlbHA9bG9uZyA7OwotICAtaGVscD1yKiB8IC0taGVscD1yKiB8IC0taGVsPXIqIHwg LS1oZT1yKiB8IC1ociopCi0gICAgYWNfaW5pdF9oZWxwPXJlY3Vyc2l2ZSA7OwotICAtaGVscD1z KiB8IC0taGVscD1zKiB8IC0taGVsPXMqIHwgLS1oZT1zKiB8IC1ocyopCi0gICAgYWNfaW5pdF9o ZWxwPXNob3J0IDs7Ci0KLSAgLWhvc3QgfCAtLWhvc3QgfCAtLWhvcyB8IC0taG8pCi0gICAgYWNf cHJldj1ob3N0X2FsaWFzIDs7Ci0gIC1ob3N0PSogfCAtLWhvc3Q9KiB8IC0taG9zPSogfCAtLWhv PSopCi0gICAgaG9zdF9hbGlhcz0kYWNfb3B0YXJnIDs7Ci0KLSAgLWh0bWxkaXIgfCAtLWh0bWxk aXIgfCAtLWh0bWxkaSB8IC0taHRtbGQgfCAtLWh0bWwgfCAtLWh0bSB8IC0taHQpCi0gICAgYWNf cHJldj1odG1sZGlyIDs7Ci0gIC1odG1sZGlyPSogfCAtLWh0bWxkaXI9KiB8IC0taHRtbGRpPSog fCAtLWh0bWxkPSogfCAtLWh0bWw9KiB8IC0taHRtPSogXAotICB8IC0taHQ9KikKLSAgICBodG1s ZGlyPSRhY19vcHRhcmcgOzsKLQotICAtaW5jbHVkZWRpciB8IC0taW5jbHVkZWRpciB8IC0taW5j bHVkZWRpIHwgLS1pbmNsdWRlZCB8IC0taW5jbHVkZSBcCi0gIHwgLS1pbmNsdWQgfCAtLWluY2x1 IHwgLS1pbmNsIHwgLS1pbmMpCi0gICAgYWNfcHJldj1pbmNsdWRlZGlyIDs7Ci0gIC1pbmNsdWRl ZGlyPSogfCAtLWluY2x1ZGVkaXI9KiB8IC0taW5jbHVkZWRpPSogfCAtLWluY2x1ZGVkPSogfCAt LWluY2x1ZGU9KiBcCi0gIHwgLS1pbmNsdWQ9KiB8IC0taW5jbHU9KiB8IC0taW5jbD0qIHwgLS1p bmM9KikKLSAgICBpbmNsdWRlZGlyPSRhY19vcHRhcmcgOzsKLQotICAtaW5mb2RpciB8IC0taW5m b2RpciB8IC0taW5mb2RpIHwgLS1pbmZvZCB8IC0taW5mbyB8IC0taW5mKQotICAgIGFjX3ByZXY9 aW5mb2RpciA7OwotICAtaW5mb2Rpcj0qIHwgLS1pbmZvZGlyPSogfCAtLWluZm9kaT0qIHwgLS1p bmZvZD0qIHwgLS1pbmZvPSogfCAtLWluZj0qKQotICAgIGluZm9kaXI9JGFjX29wdGFyZyA7Owot Ci0gIC1saWJkaXIgfCAtLWxpYmRpciB8IC0tbGliZGkgfCAtLWxpYmQpCi0gICAgYWNfcHJldj1s aWJkaXIgOzsKLSAgLWxpYmRpcj0qIHwgLS1saWJkaXI9KiB8IC0tbGliZGk9KiB8IC0tbGliZD0q KQotICAgIGxpYmRpcj0kYWNfb3B0YXJnIDs7Ci0KLSAgLWxpYmV4ZWNkaXIgfCAtLWxpYmV4ZWNk aXIgfCAtLWxpYmV4ZWNkaSB8IC0tbGliZXhlY2QgfCAtLWxpYmV4ZWMgXAotICB8IC0tbGliZXhl IHwgLS1saWJleCB8IC0tbGliZSkKLSAgICBhY19wcmV2PWxpYmV4ZWNkaXIgOzsKLSAgLWxpYmV4 ZWNkaXI9KiB8IC0tbGliZXhlY2Rpcj0qIHwgLS1saWJleGVjZGk9KiB8IC0tbGliZXhlY2Q9KiB8 IC0tbGliZXhlYz0qIFwKLSAgfCAtLWxpYmV4ZT0qIHwgLS1saWJleD0qIHwgLS1saWJlPSopCi0g ICAgbGliZXhlY2Rpcj0kYWNfb3B0YXJnIDs7Ci0KLSAgLWxvY2FsZWRpciB8IC0tbG9jYWxlZGly IHwgLS1sb2NhbGVkaSB8IC0tbG9jYWxlZCB8IC0tbG9jYWxlKQotICAgIGFjX3ByZXY9bG9jYWxl ZGlyIDs7Ci0gIC1sb2NhbGVkaXI9KiB8IC0tbG9jYWxlZGlyPSogfCAtLWxvY2FsZWRpPSogfCAt LWxvY2FsZWQ9KiB8IC0tbG9jYWxlPSopCi0gICAgbG9jYWxlZGlyPSRhY19vcHRhcmcgOzsKLQot ICAtbG9jYWxzdGF0ZWRpciB8IC0tbG9jYWxzdGF0ZWRpciB8IC0tbG9jYWxzdGF0ZWRpIHwgLS1s b2NhbHN0YXRlZCBcCi0gIHwgLS1sb2NhbHN0YXRlIHwgLS1sb2NhbHN0YXQgfCAtLWxvY2Fsc3Rh IHwgLS1sb2NhbHN0IHwgLS1sb2NhbHMpCi0gICAgYWNfcHJldj1sb2NhbHN0YXRlZGlyIDs7Ci0g IC1sb2NhbHN0YXRlZGlyPSogfCAtLWxvY2Fsc3RhdGVkaXI9KiB8IC0tbG9jYWxzdGF0ZWRpPSog fCAtLWxvY2Fsc3RhdGVkPSogXAotICB8IC0tbG9jYWxzdGF0ZT0qIHwgLS1sb2NhbHN0YXQ9KiB8 IC0tbG9jYWxzdGE9KiB8IC0tbG9jYWxzdD0qIHwgLS1sb2NhbHM9KikKLSAgICBsb2NhbHN0YXRl ZGlyPSRhY19vcHRhcmcgOzsKLQotICAtbWFuZGlyIHwgLS1tYW5kaXIgfCAtLW1hbmRpIHwgLS1t YW5kIHwgLS1tYW4gfCAtLW1hIHwgLS1tKQotICAgIGFjX3ByZXY9bWFuZGlyIDs7Ci0gIC1tYW5k aXI9KiB8IC0tbWFuZGlyPSogfCAtLW1hbmRpPSogfCAtLW1hbmQ9KiB8IC0tbWFuPSogfCAtLW1h PSogfCAtLW09KikKLSAgICBtYW5kaXI9JGFjX29wdGFyZyA7OwotCi0gIC1uZnAgfCAtLW5mcCB8 IC0tbmYpCi0gICAgIyBPYnNvbGV0ZTsgdXNlIC0td2l0aG91dC1mcC4KLSAgICB3aXRoX2ZwPW5v IDs7Ci0KLSAgLW5vLWNyZWF0ZSB8IC0tbm8tY3JlYXRlIHwgLS1uby1jcmVhdCB8IC0tbm8tY3Jl YSB8IC0tbm8tY3JlIFwKLSAgfCAtLW5vLWNyIHwgLS1uby1jIHwgLW4pCi0gICAgbm9fY3JlYXRl PXllcyA7OwotCi0gIC1uby1yZWN1cnNpb24gfCAtLW5vLXJlY3Vyc2lvbiB8IC0tbm8tcmVjdXJz aW8gfCAtLW5vLXJlY3Vyc2kgXAotICB8IC0tbm8tcmVjdXJzIHwgLS1uby1yZWN1ciB8IC0tbm8t cmVjdSB8IC0tbm8tcmVjIHwgLS1uby1yZSB8IC0tbm8tcikKLSAgICBub19yZWN1cnNpb249eWVz IDs7Ci0KLSAgLW9sZGluY2x1ZGVkaXIgfCAtLW9sZGluY2x1ZGVkaXIgfCAtLW9sZGluY2x1ZGVk aSB8IC0tb2xkaW5jbHVkZWQgXAotICB8IC0tb2xkaW5jbHVkZSB8IC0tb2xkaW5jbHVkIHwgLS1v bGRpbmNsdSB8IC0tb2xkaW5jbCB8IC0tb2xkaW5jIFwKLSAgfCAtLW9sZGluIHwgLS1vbGRpIHwg LS1vbGQgfCAtLW9sIHwgLS1vKQotICAgIGFjX3ByZXY9b2xkaW5jbHVkZWRpciA7OwotICAtb2xk aW5jbHVkZWRpcj0qIHwgLS1vbGRpbmNsdWRlZGlyPSogfCAtLW9sZGluY2x1ZGVkaT0qIHwgLS1v bGRpbmNsdWRlZD0qIFwKLSAgfCAtLW9sZGluY2x1ZGU9KiB8IC0tb2xkaW5jbHVkPSogfCAtLW9s ZGluY2x1PSogfCAtLW9sZGluY2w9KiB8IC0tb2xkaW5jPSogXAotICB8IC0tb2xkaW49KiB8IC0t b2xkaT0qIHwgLS1vbGQ9KiB8IC0tb2w9KiB8IC0tbz0qKQotICAgIG9sZGluY2x1ZGVkaXI9JGFj X29wdGFyZyA7OwotCi0gIC1wcmVmaXggfCAtLXByZWZpeCB8IC0tcHJlZmkgfCAtLXByZWYgfCAt LXByZSB8IC0tcHIgfCAtLXApCi0gICAgYWNfcHJldj1wcmVmaXggOzsKLSAgLXByZWZpeD0qIHwg LS1wcmVmaXg9KiB8IC0tcHJlZmk9KiB8IC0tcHJlZj0qIHwgLS1wcmU9KiB8IC0tcHI9KiB8IC0t cD0qKQotICAgIHByZWZpeD0kYWNfb3B0YXJnIDs7Ci0KLSAgLXByb2dyYW0tcHJlZml4IHwgLS1w cm9ncmFtLXByZWZpeCB8IC0tcHJvZ3JhbS1wcmVmaSB8IC0tcHJvZ3JhbS1wcmVmIFwKLSAgfCAt LXByb2dyYW0tcHJlIHwgLS1wcm9ncmFtLXByIHwgLS1wcm9ncmFtLXApCi0gICAgYWNfcHJldj1w cm9ncmFtX3ByZWZpeCA7OwotICAtcHJvZ3JhbS1wcmVmaXg9KiB8IC0tcHJvZ3JhbS1wcmVmaXg9 KiB8IC0tcHJvZ3JhbS1wcmVmaT0qIFwKLSAgfCAtLXByb2dyYW0tcHJlZj0qIHwgLS1wcm9ncmFt LXByZT0qIHwgLS1wcm9ncmFtLXByPSogfCAtLXByb2dyYW0tcD0qKQotICAgIHByb2dyYW1fcHJl Zml4PSRhY19vcHRhcmcgOzsKLQotICAtcHJvZ3JhbS1zdWZmaXggfCAtLXByb2dyYW0tc3VmZml4 IHwgLS1wcm9ncmFtLXN1ZmZpIHwgLS1wcm9ncmFtLXN1ZmYgXAotICB8IC0tcHJvZ3JhbS1zdWYg fCAtLXByb2dyYW0tc3UgfCAtLXByb2dyYW0tcykKLSAgICBhY19wcmV2PXByb2dyYW1fc3VmZml4 IDs7Ci0gIC1wcm9ncmFtLXN1ZmZpeD0qIHwgLS1wcm9ncmFtLXN1ZmZpeD0qIHwgLS1wcm9ncmFt LXN1ZmZpPSogXAotICB8IC0tcHJvZ3JhbS1zdWZmPSogfCAtLXByb2dyYW0tc3VmPSogfCAtLXBy b2dyYW0tc3U9KiB8IC0tcHJvZ3JhbS1zPSopCi0gICAgcHJvZ3JhbV9zdWZmaXg9JGFjX29wdGFy ZyA7OwotCi0gIC1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1u YW1lIFwKLSAgfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbSB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0t bmEgXAotICB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbiB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tIFwK LSAgfCAtLXByb2dyYW0tdHJhbnNmb3JtIHwgLS1wcm9ncmFtLXRyYW5zZm9yIFwKLSAgfCAtLXBy b2dyYW0tdHJhbnNmbyB8IC0tcHJvZ3JhbS10cmFuc2YgXAotICB8IC0tcHJvZ3JhbS10cmFucyB8 IC0tcHJvZ3JhbS10cmFuIFwKLSAgfCAtLXByb2dyLXRyYSB8IC0tcHJvZ3JhbS10ciB8IC0tcHJv Z3JhbS10KQotICAgIGFjX3ByZXY9cHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSA7OwotICAtcHJvZ3Jh bS10cmFuc2Zvcm0tbmFtZT0qIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lPSogXAotICB8IC0t cHJvZ3JhbS10cmFuc2Zvcm0tbmFtPSogfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hPSogXAotICB8 IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbj0qIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS09KiBcCi0gIHwg LS1wcm9ncmFtLXRyYW5zZm9ybT0qIHwgLS1wcm9ncmFtLXRyYW5zZm9yPSogXAotICB8IC0tcHJv Z3JhbS10cmFuc2ZvPSogfCAtLXByb2dyYW0tdHJhbnNmPSogXAotICB8IC0tcHJvZ3JhbS10cmFu cz0qIHwgLS1wcm9ncmFtLXRyYW49KiBcCi0gIHwgLS1wcm9nci10cmE9KiB8IC0tcHJvZ3JhbS10 cj0qIHwgLS1wcm9ncmFtLXQ9KikKLSAgICBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lPSRhY19vcHRh cmcgOzsKLQotICAtcGRmZGlyIHwgLS1wZGZkaXIgfCAtLXBkZmRpIHwgLS1wZGZkIHwgLS1wZGYg fCAtLXBkKQotICAgIGFjX3ByZXY9cGRmZGlyIDs7Ci0gIC1wZGZkaXI9KiB8IC0tcGRmZGlyPSog fCAtLXBkZmRpPSogfCAtLXBkZmQ9KiB8IC0tcGRmPSogfCAtLXBkPSopCi0gICAgcGRmZGlyPSRh Y19vcHRhcmcgOzsKLQotICAtcHNkaXIgfCAtLXBzZGlyIHwgLS1wc2RpIHwgLS1wc2QgfCAtLXBz KQotICAgIGFjX3ByZXY9cHNkaXIgOzsKLSAgLXBzZGlyPSogfCAtLXBzZGlyPSogfCAtLXBzZGk9 KiB8IC0tcHNkPSogfCAtLXBzPSopCi0gICAgcHNkaXI9JGFjX29wdGFyZyA7OwotCi0gIC1xIHwg LXF1aWV0IHwgLS1xdWlldCB8IC0tcXVpZSB8IC0tcXVpIHwgLS1xdSB8IC0tcSBcCi0gIHwgLXNp bGVudCB8IC0tc2lsZW50IHwgLS1zaWxlbiB8IC0tc2lsZSB8IC0tc2lsKQotICAgIHNpbGVudD15 ZXMgOzsKLQotICAtcnVuc3RhdGVkaXIgfCAtLXJ1bnN0YXRlZGlyIHwgLS1ydW5zdGF0ZWRpIHwg LS1ydW5zdGF0ZWQgXAotICB8IC0tcnVuc3RhdGUgfCAtLXJ1bnN0YXQgfCAtLXJ1bnN0YSB8IC0t cnVuc3QgfCAtLXJ1bnMgXAotICB8IC0tcnVuIHwgLS1ydSB8IC0tcikKLSAgICBhY19wcmV2PXJ1 bnN0YXRlZGlyIDs7Ci0gIC1ydW5zdGF0ZWRpcj0qIHwgLS1ydW5zdGF0ZWRpcj0qIHwgLS1ydW5z dGF0ZWRpPSogfCAtLXJ1bnN0YXRlZD0qIFwKLSAgfCAtLXJ1bnN0YXRlPSogfCAtLXJ1bnN0YXQ9 KiB8IC0tcnVuc3RhPSogfCAtLXJ1bnN0PSogfCAtLXJ1bnM9KiBcCi0gIHwgLS1ydW49KiB8IC0t cnU9KiB8IC0tcj0qKQotICAgIHJ1bnN0YXRlZGlyPSRhY19vcHRhcmcgOzsKLQotICAtc2JpbmRp ciB8IC0tc2JpbmRpciB8IC0tc2JpbmRpIHwgLS1zYmluZCB8IC0tc2JpbiB8IC0tc2JpIHwgLS1z YikKLSAgICBhY19wcmV2PXNiaW5kaXIgOzsKLSAgLXNiaW5kaXI9KiB8IC0tc2JpbmRpcj0qIHwg LS1zYmluZGk9KiB8IC0tc2JpbmQ9KiB8IC0tc2Jpbj0qIFwKLSAgfCAtLXNiaT0qIHwgLS1zYj0q KQotICAgIHNiaW5kaXI9JGFjX29wdGFyZyA7OwotCi0gIC1zaGFyZWRzdGF0ZWRpciB8IC0tc2hh cmVkc3RhdGVkaXIgfCAtLXNoYXJlZHN0YXRlZGkgXAotICB8IC0tc2hhcmVkc3RhdGVkIHwgLS1z aGFyZWRzdGF0ZSB8IC0tc2hhcmVkc3RhdCB8IC0tc2hhcmVkc3RhIFwKLSAgfCAtLXNoYXJlZHN0 IHwgLS1zaGFyZWRzIHwgLS1zaGFyZWQgfCAtLXNoYXJlIHwgLS1zaGFyIFwKLSAgfCAtLXNoYSB8 IC0tc2gpCi0gICAgYWNfcHJldj1zaGFyZWRzdGF0ZWRpciA7OwotICAtc2hhcmVkc3RhdGVkaXI9 KiB8IC0tc2hhcmVkc3RhdGVkaXI9KiB8IC0tc2hhcmVkc3RhdGVkaT0qIFwKLSAgfCAtLXNoYXJl ZHN0YXRlZD0qIHwgLS1zaGFyZWRzdGF0ZT0qIHwgLS1zaGFyZWRzdGF0PSogfCAtLXNoYXJlZHN0 YT0qIFwKLSAgfCAtLXNoYXJlZHN0PSogfCAtLXNoYXJlZHM9KiB8IC0tc2hhcmVkPSogfCAtLXNo YXJlPSogfCAtLXNoYXI9KiBcCi0gIHwgLS1zaGE9KiB8IC0tc2g9KikKLSAgICBzaGFyZWRzdGF0 ZWRpcj0kYWNfb3B0YXJnIDs7Ci0KLSAgLXNpdGUgfCAtLXNpdGUgfCAtLXNpdCkKLSAgICBhY19w cmV2PXNpdGUgOzsKLSAgLXNpdGU9KiB8IC0tc2l0ZT0qIHwgLS1zaXQ9KikKLSAgICBzaXRlPSRh Y19vcHRhcmcgOzsKLQotICAtc3JjZGlyIHwgLS1zcmNkaXIgfCAtLXNyY2RpIHwgLS1zcmNkIHwg LS1zcmMgfCAtLXNyKQotICAgIGFjX3ByZXY9c3JjZGlyIDs7Ci0gIC1zcmNkaXI9KiB8IC0tc3Jj ZGlyPSogfCAtLXNyY2RpPSogfCAtLXNyY2Q9KiB8IC0tc3JjPSogfCAtLXNyPSopCi0gICAgc3Jj ZGlyPSRhY19vcHRhcmcgOzsKLQotICAtc3lzY29uZmRpciB8IC0tc3lzY29uZmRpciB8IC0tc3lz Y29uZmRpIHwgLS1zeXNjb25mZCB8IC0tc3lzY29uZiBcCi0gIHwgLS1zeXNjb24gfCAtLXN5c2Nv IHwgLS1zeXNjIHwgLS1zeXMgfCAtLXN5KQotICAgIGFjX3ByZXY9c3lzY29uZmRpciA7OwotICAt c3lzY29uZmRpcj0qIHwgLS1zeXNjb25mZGlyPSogfCAtLXN5c2NvbmZkaT0qIHwgLS1zeXNjb25m ZD0qIHwgLS1zeXNjb25mPSogXAotICB8IC0tc3lzY29uPSogfCAtLXN5c2NvPSogfCAtLXN5c2M9 KiB8IC0tc3lzPSogfCAtLXN5PSopCi0gICAgc3lzY29uZmRpcj0kYWNfb3B0YXJnIDs7Ci0KLSAg LXRhcmdldCB8IC0tdGFyZ2V0IHwgLS10YXJnZSB8IC0tdGFyZyB8IC0tdGFyIHwgLS10YSB8IC0t dCkKLSAgICBhY19wcmV2PXRhcmdldF9hbGlhcyA7OwotICAtdGFyZ2V0PSogfCAtLXRhcmdldD0q IHwgLS10YXJnZT0qIHwgLS10YXJnPSogfCAtLXRhcj0qIHwgLS10YT0qIHwgLS10PSopCi0gICAg dGFyZ2V0X2FsaWFzPSRhY19vcHRhcmcgOzsKLQotICAtdiB8IC12ZXJib3NlIHwgLS12ZXJib3Nl IHwgLS12ZXJib3MgfCAtLXZlcmJvIHwgLS12ZXJiKQotICAgIHZlcmJvc2U9eWVzIDs7Ci0KLSAg LXZlcnNpb24gfCAtLXZlcnNpb24gfCAtLXZlcnNpbyB8IC0tdmVyc2kgfCAtLXZlcnMgfCAtVikK LSAgICBhY19pbml0X3ZlcnNpb249OiA7OwotCi0gIC13aXRoLSogfCAtLXdpdGgtKikKLSAgICBh Y191c2Vyb3B0PWBleHByICJ4JGFjX29wdGlvbiIgOiAneC0qd2l0aC1cKFtePV0qXCknYAotICAg ICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4K LSAgICBleHByICJ4JGFjX3VzZXJvcHQiIDogIi4qW14tKy5fJGFzX2NyX2FsbnVtXSIgPi9kZXYv bnVsbCAmJgotICAgICAgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgcGFja2FnZSBuYW1lOiAkYWNf dXNlcm9wdCIKLSAgICBhY191c2Vyb3B0X29yaWc9JGFjX3VzZXJvcHQKLSAgICBhY191c2Vyb3B0 PWAkYXNfZWNobyAiJGFjX3VzZXJvcHQiIHwgc2VkICdzL1stKy5dL18vZydgCi0gICAgY2FzZSAk YWNfdXNlcl9vcHRzIGluCi0gICAgICAqIgotIndpdGhfJGFjX3VzZXJvcHQiCi0iKikgOzsKLSAg ICAgICopIGFjX3VucmVjb2duaXplZF9vcHRzPSIkYWNfdW5yZWNvZ25pemVkX29wdHMkYWNfdW5y ZWNvZ25pemVkX3NlcC0td2l0aC0kYWNfdXNlcm9wdF9vcmlnIgotCSBhY191bnJlY29nbml6ZWRf c2VwPScsICc7OwotICAgIGVzYWMKLSAgICBldmFsIHdpdGhfJGFjX3VzZXJvcHQ9XCRhY19vcHRh cmcgOzsKLQotICAtd2l0aG91dC0qIHwgLS13aXRob3V0LSopCi0gICAgYWNfdXNlcm9wdD1gZXhw ciAieCRhY19vcHRpb24iIDogJ3gtKndpdGhvdXQtXCguKlwpJ2AKLSAgICAjIFJlamVjdCBuYW1l cyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCi0gICAgZXhwciAieCRh Y191c2Vyb3B0IiA6ICIuKlteLSsuXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYKLSAgICAg IGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHBhY2thZ2UgbmFtZTogJGFjX3VzZXJvcHQiCi0gICAg YWNfdXNlcm9wdF9vcmlnPSRhY191c2Vyb3B0Ci0gICAgYWNfdXNlcm9wdD1gJGFzX2VjaG8gIiRh Y191c2Vyb3B0IiB8IHNlZCAncy9bLSsuXS9fL2cnYAotICAgIGNhc2UgJGFjX3VzZXJfb3B0cyBp bgotICAgICAgKiIKLSJ3aXRoXyRhY191c2Vyb3B0IgotIiopIDs7Ci0gICAgICAqKSBhY191bnJl Y29nbml6ZWRfb3B0cz0iJGFjX3VucmVjb2duaXplZF9vcHRzJGFjX3VucmVjb2duaXplZF9zZXAt LXdpdGhvdXQtJGFjX3VzZXJvcHRfb3JpZyIKLQkgYWNfdW5yZWNvZ25pemVkX3NlcD0nLCAnOzsK LSAgICBlc2FjCi0gICAgZXZhbCB3aXRoXyRhY191c2Vyb3B0PW5vIDs7Ci0KLSAgLS14KQotICAg ICMgT2Jzb2xldGU7IHVzZSAtLXdpdGgteC4KLSAgICB3aXRoX3g9eWVzIDs7Ci0KLSAgLXgtaW5j bHVkZXMgfCAtLXgtaW5jbHVkZXMgfCAtLXgtaW5jbHVkZSB8IC0teC1pbmNsdWQgfCAtLXgtaW5j bHUgXAotICB8IC0teC1pbmNsIHwgLS14LWluYyB8IC0teC1pbiB8IC0teC1pKQotICAgIGFjX3By ZXY9eF9pbmNsdWRlcyA7OwotICAteC1pbmNsdWRlcz0qIHwgLS14LWluY2x1ZGVzPSogfCAtLXgt aW5jbHVkZT0qIHwgLS14LWluY2x1ZD0qIHwgLS14LWluY2x1PSogXAotICB8IC0teC1pbmNsPSog fCAtLXgtaW5jPSogfCAtLXgtaW49KiB8IC0teC1pPSopCi0gICAgeF9pbmNsdWRlcz0kYWNfb3B0 YXJnIDs7Ci0KLSAgLXgtbGlicmFyaWVzIHwgLS14LWxpYnJhcmllcyB8IC0teC1saWJyYXJpZSB8 IC0teC1saWJyYXJpIFwKLSAgfCAtLXgtbGlicmFyIHwgLS14LWxpYnJhIHwgLS14LWxpYnIgfCAt LXgtbGliIHwgLS14LWxpIHwgLS14LWwpCi0gICAgYWNfcHJldj14X2xpYnJhcmllcyA7OwotICAt eC1saWJyYXJpZXM9KiB8IC0teC1saWJyYXJpZXM9KiB8IC0teC1saWJyYXJpZT0qIHwgLS14LWxp YnJhcmk9KiBcCi0gIHwgLS14LWxpYnJhcj0qIHwgLS14LWxpYnJhPSogfCAtLXgtbGlicj0qIHwg LS14LWxpYj0qIHwgLS14LWxpPSogfCAtLXgtbD0qKQotICAgIHhfbGlicmFyaWVzPSRhY19vcHRh cmcgOzsKLQotICAtKikgYXNfZm5fZXJyb3IgJD8gInVucmVjb2duaXplZCBvcHRpb246IFxgJGFj X29wdGlvbicKLVRyeSBcYCQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24iCi0gICAgOzsK LQotICAqPSopCi0gICAgYWNfZW52dmFyPWBleHByICJ4JGFjX29wdGlvbiIgOiAneFwoW149XSpc KT0nYAotICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJs ZSBuYW1lcy4KLSAgICBjYXNlICRhY19lbnZ2YXIgaW4gIygKLSAgICAgICcnIHwgWzAtOV0qIHwg KlshXyRhc19jcl9hbG51bV0qICkKLSAgICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHZhcmlh YmxlIG5hbWU6IFxgJGFjX2VudnZhciciIDs7Ci0gICAgZXNhYwotICAgIGV2YWwgJGFjX2VudnZh cj1cJGFjX29wdGFyZwotICAgIGV4cG9ydCAkYWNfZW52dmFyIDs7Ci0KLSAgKikKLSAgICAjIEZJ WE1FOiBzaG91bGQgYmUgcmVtb3ZlZCBpbiBhdXRvY29uZiAzLjAuCi0gICAgJGFzX2VjaG8gIiRh c19tZTogV0FSTklORzogeW91IHNob3VsZCB1c2UgLS1idWlsZCwgLS1ob3N0LCAtLXRhcmdldCIg PiYyCi0gICAgZXhwciAieCRhY19vcHRpb24iIDogIi4qW14tLl8kYXNfY3JfYWxudW1dIiA+L2Rl di9udWxsICYmCi0gICAgICAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBpbnZhbGlkIGhvc3Qg dHlwZTogJGFjX29wdGlvbiIgPiYyCi0gICAgOiAiJHtidWlsZF9hbGlhcz0kYWNfb3B0aW9ufSAk e2hvc3RfYWxpYXM9JGFjX29wdGlvbn0gJHt0YXJnZXRfYWxpYXM9JGFjX29wdGlvbn0iCi0gICAg OzsKLQotICBlc2FjCi1kb25lCi0KLWlmIHRlc3QgLW4gIiRhY19wcmV2IjsgdGhlbgotICBhY19v cHRpb249LS1gZWNobyAkYWNfcHJldiB8IHNlZCAncy9fLy0vZydgCi0gIGFzX2ZuX2Vycm9yICQ/ ICJtaXNzaW5nIGFyZ3VtZW50IHRvICRhY19vcHRpb24iCi1maQotCi1pZiB0ZXN0IC1uICIkYWNf dW5yZWNvZ25pemVkX29wdHMiOyB0aGVuCi0gIGNhc2UgJGVuYWJsZV9vcHRpb25fY2hlY2tpbmcg aW4KLSAgICBubykgOzsKLSAgICBmYXRhbCkgYXNfZm5fZXJyb3IgJD8gInVucmVjb2duaXplZCBv cHRpb25zOiAkYWNfdW5yZWNvZ25pemVkX29wdHMiIDs7Ci0gICAgKikgICAgICRhc19lY2hvICIk YXNfbWU6IFdBUk5JTkc6IHVucmVjb2duaXplZCBvcHRpb25zOiAkYWNfdW5yZWNvZ25pemVkX29w dHMiID4mMiA7OwotICBlc2FjCi1maQotCi0jIENoZWNrIGFsbCBkaXJlY3RvcnkgYXJndW1lbnRz IGZvciBjb25zaXN0ZW5jeS4KLWZvciBhY192YXIgaW4JZXhlY19wcmVmaXggcHJlZml4IGJpbmRp ciBzYmluZGlyIGxpYmV4ZWNkaXIgZGF0YXJvb3RkaXIgXAotCQlkYXRhZGlyIHN5c2NvbmZkaXIg c2hhcmVkc3RhdGVkaXIgbG9jYWxzdGF0ZWRpciBpbmNsdWRlZGlyIFwKLQkJb2xkaW5jbHVkZWRp ciBkb2NkaXIgaW5mb2RpciBodG1sZGlyIGR2aWRpciBwZGZkaXIgcHNkaXIgXAotCQlsaWJkaXIg bG9jYWxlZGlyIG1hbmRpciBydW5zdGF0ZWRpcgotZG8KLSAgZXZhbCBhY192YWw9XCQkYWNfdmFy Ci0gICMgUmVtb3ZlIHRyYWlsaW5nIHNsYXNoZXMuCi0gIGNhc2UgJGFjX3ZhbCBpbgotICAgICov ICkKLSAgICAgIGFjX3ZhbD1gZXhwciAiWCRhY192YWwiIDogJ1hcKC4qW14vXVwpJyBcfCAiWCRh Y192YWwiIDogJ1hcKC4qXCknYAotICAgICAgZXZhbCAkYWNfdmFyPVwkYWNfdmFsOzsKLSAgZXNh YwotICAjIEJlIHN1cmUgdG8gaGF2ZSBhYnNvbHV0ZSBkaXJlY3RvcnkgbmFtZXMuCi0gIGNhc2Ug JGFjX3ZhbCBpbgotICAgIFtcXC8kXSogfCA/OltcXC9dKiApICBjb250aW51ZTs7Ci0gICAgTk9O RSB8ICcnICkgY2FzZSAkYWNfdmFyIGluICpwcmVmaXggKSBjb250aW51ZTs7IGVzYWM7OwotICBl c2FjCi0gIGFzX2ZuX2Vycm9yICQ/ICJleHBlY3RlZCBhbiBhYnNvbHV0ZSBkaXJlY3RvcnkgbmFt ZSBmb3IgLS0kYWNfdmFyOiAkYWNfdmFsIgotZG9uZQotCi0jIFRoZXJlIG1pZ2h0IGJlIHBlb3Bs ZSB3aG8gZGVwZW5kIG9uIHRoZSBvbGQgYnJva2VuIGJlaGF2aW9yOiBgJGhvc3QnCi0jIHVzZWQg dG8gaG9sZCB0aGUgYXJndW1lbnQgb2YgLS1ob3N0IGV0Yy4KLSMgRklYTUU6IFRvIHJlbW92ZSBz b21lIGRheS4KLWJ1aWxkPSRidWlsZF9hbGlhcwotaG9zdD0kaG9zdF9hbGlhcwotdGFyZ2V0PSR0 YXJnZXRfYWxpYXMKLQotIyBGSVhNRTogVG8gcmVtb3ZlIHNvbWUgZGF5LgotaWYgdGVzdCAieCRo b3N0X2FsaWFzIiAhPSB4OyB0aGVuCi0gIGlmIHRlc3QgIngkYnVpbGRfYWxpYXMiID0geDsgdGhl bgotICAgIGNyb3NzX2NvbXBpbGluZz1tYXliZQotICBlbGlmIHRlc3QgIngkYnVpbGRfYWxpYXMi ICE9ICJ4JGhvc3RfYWxpYXMiOyB0aGVuCi0gICAgY3Jvc3NfY29tcGlsaW5nPXllcwotICBmaQot ZmkKLQotYWNfdG9vbF9wcmVmaXg9Ci10ZXN0IC1uICIkaG9zdF9hbGlhcyIgJiYgYWNfdG9vbF9w cmVmaXg9JGhvc3RfYWxpYXMtCi0KLXRlc3QgIiRzaWxlbnQiID0geWVzICYmIGV4ZWMgNj4vZGV2 L251bGwKLQotCi1hY19wd2Q9YHB3ZGAgJiYgdGVzdCAtbiAiJGFjX3B3ZCIgJiYKLWFjX2xzX2Rp PWBscyAtZGkgLmAgJiYKLWFjX3B3ZF9sc19kaT1gY2QgIiRhY19wd2QiICYmIGxzIC1kaSAuYCB8 fAotICBhc19mbl9lcnJvciAkPyAid29ya2luZyBkaXJlY3RvcnkgY2Fubm90IGJlIGRldGVybWlu ZWQiCi10ZXN0ICJYJGFjX2xzX2RpIiA9ICJYJGFjX3B3ZF9sc19kaSIgfHwKLSAgYXNfZm5fZXJy b3IgJD8gInB3ZCBkb2VzIG5vdCByZXBvcnQgbmFtZSBvZiB3b3JraW5nIGRpcmVjdG9yeSIKLQot Ci0jIEZpbmQgdGhlIHNvdXJjZSBmaWxlcywgaWYgbG9jYXRpb24gd2FzIG5vdCBzcGVjaWZpZWQu Ci1pZiB0ZXN0IC16ICIkc3JjZGlyIjsgdGhlbgotICBhY19zcmNkaXJfZGVmYXVsdGVkPXllcwot ICAjIFRyeSB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhpcyBzY3JpcHQsIHRoZW4gdGhlIHBh cmVudCBkaXJlY3RvcnkuCi0gIGFjX2NvbmZkaXI9YCRhc19kaXJuYW1lIC0tICIkYXNfbXlzZWxm IiB8fAotJGFzX2V4cHIgWCIkYXNfbXlzZWxmIiA6ICdYXCguKlteL11cKS8vKlteL11bXi9dKi8q JCcgXHwgXAotCSBYIiRhc19teXNlbGYiIDogJ1hcKC8vXClbXi9dJyBcfCBcCi0JIFgiJGFzX215 c2VsZiIgOiAnWFwoLy9cKSQnIFx8IFwKLQkgWCIkYXNfbXlzZWxmIiA6ICdYXCgvXCknIFx8IC4g Mj4vZGV2L251bGwgfHwKLSRhc19lY2hvIFgiJGFzX215c2VsZiIgfAotICAgIHNlZCAnL15YXCgu KlteL11cKVwvXC8qW14vXVteL10qXC8qJC97Ci0JICAgIHMvL1wxLwotCSAgICBxCi0JICB9Ci0J ICAvXlhcKFwvXC9cKVteL10uKi97Ci0JICAgIHMvL1wxLwotCSAgICBxCi0JICB9Ci0JICAvXlhc KFwvXC9cKSQvewotCSAgICBzLy9cMS8KLQkgICAgcQotCSAgfQotCSAgL15YXChcL1wpLiovewot CSAgICBzLy9cMS8KLQkgICAgcQotCSAgfQotCSAgcy8uKi8uLzsgcSdgCi0gIHNyY2Rpcj0kYWNf Y29uZmRpcgotICBpZiB0ZXN0ICEgLXIgIiRzcmNkaXIvJGFjX3VuaXF1ZV9maWxlIjsgdGhlbgot ICAgIHNyY2Rpcj0uLgotICBmaQotZWxzZQotICBhY19zcmNkaXJfZGVmYXVsdGVkPW5vCi1maQot aWYgdGVzdCAhIC1yICIkc3JjZGlyLyRhY191bmlxdWVfZmlsZSI7IHRoZW4KLSAgdGVzdCAiJGFj X3NyY2Rpcl9kZWZhdWx0ZWQiID0geWVzICYmIHNyY2Rpcj0iJGFjX2NvbmZkaXIgb3IgLi4iCi0g IGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgZmluZCBzb3VyY2VzICgkYWNfdW5pcXVlX2ZpbGUpIGlu ICRzcmNkaXIiCi1maQotYWNfbXNnPSJzb3VyY2VzIGFyZSBpbiAkc3JjZGlyLCBidXQgXGBjZCAk c3JjZGlyJyBkb2VzIG5vdCB3b3JrIgotYWNfYWJzX2NvbmZkaXI9YCgKLQljZCAiJHNyY2RpciIg JiYgdGVzdCAtciAiLi8kYWNfdW5pcXVlX2ZpbGUiIHx8IGFzX2ZuX2Vycm9yICQ/ICIkYWNfbXNn IgotCXB3ZClgCi0jIFdoZW4gYnVpbGRpbmcgaW4gcGxhY2UsIHNldCBzcmNkaXI9LgotaWYgdGVz dCAiJGFjX2Fic19jb25mZGlyIiA9ICIkYWNfcHdkIjsgdGhlbgotICBzcmNkaXI9LgotZmkKLSMg UmVtb3ZlIHVubmVjZXNzYXJ5IHRyYWlsaW5nIHNsYXNoZXMgZnJvbSBzcmNkaXIuCi0jIERvdWJs ZSBzbGFzaGVzIGluIGZpbGUgbmFtZXMgaW4gb2JqZWN0IGZpbGUgZGVidWdnaW5nIGluZm8KLSMg bWVzcyB1cCBNLXggZ2RiIGluIEVtYWNzLgotY2FzZSAkc3JjZGlyIGluCi0qLykgc3JjZGlyPWBl eHByICJYJHNyY2RpciIgOiAnWFwoLipbXi9dXCknIFx8ICJYJHNyY2RpciIgOiAnWFwoLipcKSdg OzsKLWVzYWMKLWZvciBhY192YXIgaW4gJGFjX3ByZWNpb3VzX3ZhcnM7IGRvCi0gIGV2YWwgYWNf ZW52XyR7YWNfdmFyfV9zZXQ9XCR7JHthY192YXJ9K3NldH0KLSAgZXZhbCBhY19lbnZfJHthY192 YXJ9X3ZhbHVlPVwkJHthY192YXJ9Ci0gIGV2YWwgYWNfY3ZfZW52XyR7YWNfdmFyfV9zZXQ9XCR7 JHthY192YXJ9K3NldH0KLSAgZXZhbCBhY19jdl9lbnZfJHthY192YXJ9X3ZhbHVlPVwkJHthY192 YXJ9Ci1kb25lCi0KLSMKLSMgUmVwb3J0IHRoZSAtLWhlbHAgbWVzc2FnZS4KLSMKLWlmIHRlc3Qg IiRhY19pbml0X2hlbHAiID0gImxvbmciOyB0aGVuCi0gICMgT21pdCBzb21lIGludGVybmFsIG9y IG9ic29sZXRlIG9wdGlvbnMgdG8gbWFrZSB0aGUgbGlzdCBsZXNzIGltcG9zaW5nLgotICAjIFRo aXMgbWVzc2FnZSBpcyB0b28gbG9uZyB0byBiZSBhIHN0cmluZyBpbiB0aGUgQS9VWCAzLjEgc2gu Ci0gIGNhdCA8PF9BQ0VPRgotXGBjb25maWd1cmUnIGNvbmZpZ3VyZXMgWGVuIEh5cGVydmlzb3Ig NC4xMyB0byBhZGFwdCB0byBtYW55IGtpbmRzIG9mIHN5c3RlbXMuCi0KLVVzYWdlOiAkMCBbT1BU SU9OXS4uLiBbVkFSPVZBTFVFXS4uLgotCi1UbyBhc3NpZ24gZW52aXJvbm1lbnQgdmFyaWFibGVz IChlLmcuLCBDQywgQ0ZMQUdTLi4uKSwgc3BlY2lmeSB0aGVtIGFzCi1WQVI9VkFMVUUuICBTZWUg YmVsb3cgZm9yIGRlc2NyaXB0aW9ucyBvZiBzb21lIG9mIHRoZSB1c2VmdWwgdmFyaWFibGVzLgot Ci1EZWZhdWx0cyBmb3IgdGhlIG9wdGlvbnMgYXJlIHNwZWNpZmllZCBpbiBicmFja2V0cy4KLQot Q29uZmlndXJhdGlvbjoKLSAgLWgsIC0taGVscCAgICAgICAgICAgICAgZGlzcGxheSB0aGlzIGhl bHAgYW5kIGV4aXQKLSAgICAgIC0taGVscD1zaG9ydCAgICAgICAgZGlzcGxheSBvcHRpb25zIHNw ZWNpZmljIHRvIHRoaXMgcGFja2FnZQotICAgICAgLS1oZWxwPXJlY3Vyc2l2ZSAgICBkaXNwbGF5 IHRoZSBzaG9ydCBoZWxwIG9mIGFsbCB0aGUgaW5jbHVkZWQgcGFja2FnZXMKLSAgLVYsIC0tdmVy c2lvbiAgICAgICAgICAgZGlzcGxheSB2ZXJzaW9uIGluZm9ybWF0aW9uIGFuZCBleGl0Ci0gIC1x LCAtLXF1aWV0LCAtLXNpbGVudCAgIGRvIG5vdCBwcmludCBcYGNoZWNraW5nIC4uLicgbWVzc2Fn ZXMKLSAgICAgIC0tY2FjaGUtZmlsZT1GSUxFICAgY2FjaGUgdGVzdCByZXN1bHRzIGluIEZJTEUg W2Rpc2FibGVkXQotICAtQywgLS1jb25maWctY2FjaGUgICAgICBhbGlhcyBmb3IgXGAtLWNhY2hl LWZpbGU9Y29uZmlnLmNhY2hlJwotICAtbiwgLS1uby1jcmVhdGUgICAgICAgICBkbyBub3QgY3Jl YXRlIG91dHB1dCBmaWxlcwotICAgICAgLS1zcmNkaXI9RElSICAgICAgICBmaW5kIHRoZSBzb3Vy Y2VzIGluIERJUiBbY29uZmlndXJlIGRpciBvciBcYC4uJ10KLQotSW5zdGFsbGF0aW9uIGRpcmVj dG9yaWVzOgotICAtLXByZWZpeD1QUkVGSVggICAgICAgICBpbnN0YWxsIGFyY2hpdGVjdHVyZS1p bmRlcGVuZGVudCBmaWxlcyBpbiBQUkVGSVgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgWyRh Y19kZWZhdWx0X3ByZWZpeF0KLSAgLS1leGVjLXByZWZpeD1FUFJFRklYICAgaW5zdGFsbCBhcmNo aXRlY3R1cmUtZGVwZW5kZW50IGZpbGVzIGluIEVQUkVGSVgKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgW1BSRUZJWF0KLQotQnkgZGVmYXVsdCwgXGBtYWtlIGluc3RhbGwnIHdpbGwgaW5zdGFs bCBhbGwgdGhlIGZpbGVzIGluCi1cYCRhY19kZWZhdWx0X3ByZWZpeC9iaW4nLCBcYCRhY19kZWZh dWx0X3ByZWZpeC9saWInIGV0Yy4gIFlvdSBjYW4gc3BlY2lmeQotYW4gaW5zdGFsbGF0aW9uIHBy ZWZpeCBvdGhlciB0aGFuIFxgJGFjX2RlZmF1bHRfcHJlZml4JyB1c2luZyBcYC0tcHJlZml4JywK LWZvciBpbnN0YW5jZSBcYC0tcHJlZml4PVwkSE9NRScuCi0KLUZvciBiZXR0ZXIgY29udHJvbCwg dXNlIHRoZSBvcHRpb25zIGJlbG93LgotCi1GaW5lIHR1bmluZyBvZiB0aGUgaW5zdGFsbGF0aW9u IGRpcmVjdG9yaWVzOgotICAtLWJpbmRpcj1ESVIgICAgICAgICAgICB1c2VyIGV4ZWN1dGFibGVz IFtFUFJFRklYL2Jpbl0KLSAgLS1zYmluZGlyPURJUiAgICAgICAgICAgc3lzdGVtIGFkbWluIGV4 ZWN1dGFibGVzIFtFUFJFRklYL3NiaW5dCi0gIC0tbGliZXhlY2Rpcj1ESVIgICAgICAgIHByb2dy YW0gZXhlY3V0YWJsZXMgW0VQUkVGSVgvbGliZXhlY10KLSAgLS1zeXNjb25mZGlyPURJUiAgICAg ICAgcmVhZC1vbmx5IHNpbmdsZS1tYWNoaW5lIGRhdGEgW1BSRUZJWC9ldGNdCi0gIC0tc2hhcmVk c3RhdGVkaXI9RElSICAgIG1vZGlmaWFibGUgYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGRhdGEg W1BSRUZJWC9jb21dCi0gIC0tbG9jYWxzdGF0ZWRpcj1ESVIgICAgIG1vZGlmaWFibGUgc2luZ2xl LW1hY2hpbmUgZGF0YSBbUFJFRklYL3Zhcl0KLSAgLS1ydW5zdGF0ZWRpcj1ESVIgICAgICAgbW9k aWZpYWJsZSBwZXItcHJvY2VzcyBkYXRhIFtMT0NBTFNUQVRFRElSL3J1bl0KLSAgLS1saWJkaXI9 RElSICAgICAgICAgICAgb2JqZWN0IGNvZGUgbGlicmFyaWVzIFtFUFJFRklYL2xpYl0KLSAgLS1p bmNsdWRlZGlyPURJUiAgICAgICAgQyBoZWFkZXIgZmlsZXMgW1BSRUZJWC9pbmNsdWRlXQotICAt LW9sZGluY2x1ZGVkaXI9RElSICAgICBDIGhlYWRlciBmaWxlcyBmb3Igbm9uLWdjYyBbL3Vzci9p bmNsdWRlXQotICAtLWRhdGFyb290ZGlyPURJUiAgICAgICByZWFkLW9ubHkgYXJjaC4taW5kZXBl bmRlbnQgZGF0YSByb290IFtQUkVGSVgvc2hhcmVdCi0gIC0tZGF0YWRpcj1ESVIgICAgICAgICAg IHJlYWQtb25seSBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgZGF0YSBbREFUQVJPT1RESVJdCi0g IC0taW5mb2Rpcj1ESVIgICAgICAgICAgIGluZm8gZG9jdW1lbnRhdGlvbiBbREFUQVJPT1RESVIv aW5mb10KLSAgLS1sb2NhbGVkaXI9RElSICAgICAgICAgbG9jYWxlLWRlcGVuZGVudCBkYXRhIFtE QVRBUk9PVERJUi9sb2NhbGVdCi0gIC0tbWFuZGlyPURJUiAgICAgICAgICAgIG1hbiBkb2N1bWVu dGF0aW9uIFtEQVRBUk9PVERJUi9tYW5dCi0gIC0tZG9jZGlyPURJUiAgICAgICAgICAgIGRvY3Vt ZW50YXRpb24gcm9vdCBbREFUQVJPT1RESVIvZG9jL3hlbl0KLSAgLS1odG1sZGlyPURJUiAgICAg ICAgICAgaHRtbCBkb2N1bWVudGF0aW9uIFtET0NESVJdCi0gIC0tZHZpZGlyPURJUiAgICAgICAg ICAgIGR2aSBkb2N1bWVudGF0aW9uIFtET0NESVJdCi0gIC0tcGRmZGlyPURJUiAgICAgICAgICAg IHBkZiBkb2N1bWVudGF0aW9uIFtET0NESVJdCi0gIC0tcHNkaXI9RElSICAgICAgICAgICAgIHBz IGRvY3VtZW50YXRpb24gW0RPQ0RJUl0KLV9BQ0VPRgotCi0gIGNhdCA8PFxfQUNFT0YKLQotU3lz dGVtIHR5cGVzOgotICAtLWJ1aWxkPUJVSUxEICAgICBjb25maWd1cmUgZm9yIGJ1aWxkaW5nIG9u IEJVSUxEIFtndWVzc2VkXQotICAtLWhvc3Q9SE9TVCAgICAgICBjcm9zcy1jb21waWxlIHRvIGJ1 aWxkIHByb2dyYW1zIHRvIHJ1biBvbiBIT1NUIFtCVUlMRF0KLV9BQ0VPRgotZmkKLQotaWYgdGVz dCAtbiAiJGFjX2luaXRfaGVscCI7IHRoZW4KLSAgY2FzZSAkYWNfaW5pdF9oZWxwIGluCi0gICAg IHNob3J0IHwgcmVjdXJzaXZlICkgZWNobyAiQ29uZmlndXJhdGlvbiBvZiBYZW4gSHlwZXJ2aXNv ciA0LjEzOiI7OwotICAgZXNhYwotICBjYXQgPDxcX0FDRU9GCi0KLU9wdGlvbmFsIEZlYXR1cmVz OgotICAtLWRpc2FibGUtb3B0aW9uLWNoZWNraW5nICBpZ25vcmUgdW5yZWNvZ25pemVkIC0tZW5h YmxlLy0td2l0aCBvcHRpb25zCi0gIC0tZGlzYWJsZS1GRUFUVVJFICAgICAgIGRvIG5vdCBpbmNs dWRlIEZFQVRVUkUgKHNhbWUgYXMgLS1lbmFibGUtRkVBVFVSRT1ubykKLSAgLS1lbmFibGUtRkVB VFVSRVs9QVJHXSAgaW5jbHVkZSBGRUFUVVJFIFtBUkc9eWVzXQotICAtLWVuYWJsZS1naXRodHRw ICAgICAgICBEb3dubG9hZCBHSVQgcmVwb3NpdG9yaWVzIHZpYSBIVFRQIChkZWZhdWx0IGlzCi0g ICAgICAgICAgICAgICAgICAgICAgICAgIERJU0FCTEVEKQotICAtLWRpc2FibGUteGVuICAgICAg ICAgICBEaXNhYmxlIGJ1aWxkIGFuZCBpbnN0YWxsIG9mIHhlbgotICAtLWRpc2FibGUtdG9vbHMg ICAgICAgICBEaXNhYmxlIGJ1aWxkIGFuZCBpbnN0YWxsIG9mIHRvb2xzCi0gIC0tZW5hYmxlLXN0 dWJkb20gICAgICAgIEVuYWJsZSBidWlsZCBhbmQgaW5zdGFsbCBvZiBzdHViZG9tCi0gIC0tZGlz YWJsZS1kb2NzICAgICAgICAgIERpc2FibGUgYnVpbGQgYW5kIGluc3RhbGwgb2YgZG9jcwotCi1P cHRpb25hbCBQYWNrYWdlczoKLSAgLS13aXRoLVBBQ0tBR0VbPUFSR10gICAgdXNlIFBBQ0tBR0Ug W0FSRz15ZXNdCi0gIC0td2l0aG91dC1QQUNLQUdFICAgICAgIGRvIG5vdCB1c2UgUEFDS0FHRSAo c2FtZSBhcyAtLXdpdGgtUEFDS0FHRT1ubykKLSAgLS13aXRoLWluaXRkZGlyPURJUiAgICAgUGF0 aCB0byBkaXJlY3Rvcnkgd2l0aCBzeXN2IHJ1bmxldmVsIHNjcmlwdHMuCi0gICAgICAgICAgICAg ICAgICAgICAgICAgIFtTWVNDT05GRElSL2luaXQuZF0KLSAgLS13aXRoLXN5c2NvbmZpZy1sZWFm LWRpcj1TVUJESVIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSBvZiBzdWJkaXJlY3Rv cnkgaW4gL2V0YyB0byBzdG9yZSBydW50aW1lCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG9w dGlvbnMgZm9yIHJ1bmxldmVsIHNjcmlwdHMgYW5kIGRhZW1vbnMgc3VjaCBhcwotICAgICAgICAg ICAgICAgICAgICAgICAgICB4ZW5zdG9yZWQuIFRoaXMgc2hvdWxkIGJlIGVpdGhlciAic3lzY29u ZmlnIiBvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCIuIFtzeXNjb25maWdd Ci0gIC0td2l0aC1saWJleGVjLWxlYWYtZGlyPVNVQkRJUgotICAgICAgICAgICAgICAgICAgICAg ICAgICBOYW1lIG9mIHN1YmRpcmVjdG9yeSBpbiBsaWJleGVjZGlyIHRvIHVzZS4KLSAgLS13aXRo LXhlbi1kdW1wZGlyPURJUiAgUGF0aCB0byBkaXJlY3RvcnkgZm9yIGRvbVUgY3Jhc2ggZHVtcHMu Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIFtMT0NBTFNUQVRFRElSL2xpYi94ZW4vZHVtcF0K LSAgLS13aXRoLXJ1bmRpcj1ESVIgICAgICAgUGF0aCB0byBkaXJlY3RvcnkgZm9yIHJ1bnRpbWUg ZGF0YS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0xPQ0FMU1RBVEVESVIvcnVuXQotICAt LXdpdGgtZGVidWdkaXI9RElSICAgICBQYXRoIHRvIGRpcmVjdG9yeSBmb3IgZGVidWcgc3ltYm9s cy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgW1BSRUZJWC9saWIvZGVidWddCi0KLVJlcG9y dCBidWdzIHRvIDx4ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZz4uCi1YZW4gSHlwZXJ2aXNvciBob21l IHBhZ2U6IDxodHRwOi8vd3d3Lnhlbi5vcmcvPi4KLV9BQ0VPRgotYWNfc3RhdHVzPSQ/Ci1maQot Ci1pZiB0ZXN0ICIkYWNfaW5pdF9oZWxwIiA9ICJyZWN1cnNpdmUiOyB0aGVuCi0gICMgSWYgdGhl cmUgYXJlIHN1YmRpcnMsIHJlcG9ydCB0aGVpciBzcGVjaWZpYyAtLWhlbHAuCi0gIGZvciBhY19k aXIgaW4gOiAkYWNfc3ViZGlyc19hbGw7IGRvIHRlc3QgIngkYWNfZGlyIiA9IHg6ICYmIGNvbnRp bnVlCi0gICAgdGVzdCAtZCAiJGFjX2RpciIgfHwKLSAgICAgIHsgY2QgIiRzcmNkaXIiICYmIGFj X3B3ZD1gcHdkYCAmJiBzcmNkaXI9LiAmJiB0ZXN0IC1kICIkYWNfZGlyIjsgfSB8fAotICAgICAg Y29udGludWUKLSAgICBhY19idWlsZGRpcj0uCi0KLWNhc2UgIiRhY19kaXIiIGluCi0uKSBhY19k aXJfc3VmZml4PSBhY190b3BfYnVpbGRkaXJfc3ViPS4gYWNfdG9wX2J1aWxkX3ByZWZpeD0gOzsK LSopCi0gIGFjX2Rpcl9zdWZmaXg9L2AkYXNfZWNobyAiJGFjX2RpciIgfCBzZWQgJ3N8XlwuW1xc L118fCdgCi0gICMgQSAiLi4iIGZvciBlYWNoIGRpcmVjdG9yeSBpbiAkYWNfZGlyX3N1ZmZpeC4K LSAgYWNfdG9wX2J1aWxkZGlyX3N1Yj1gJGFzX2VjaG8gIiRhY19kaXJfc3VmZml4IiB8IHNlZCAn c3wvW15cXC9dKnwvLi58ZztzfC98fCdgCi0gIGNhc2UgJGFjX3RvcF9idWlsZGRpcl9zdWIgaW4K LSAgIiIpIGFjX3RvcF9idWlsZGRpcl9zdWI9LiBhY190b3BfYnVpbGRfcHJlZml4PSA7OwotICAq KSAgYWNfdG9wX2J1aWxkX3ByZWZpeD0kYWNfdG9wX2J1aWxkZGlyX3N1Yi8gOzsKLSAgZXNhYyA7 OwotZXNhYwotYWNfYWJzX3RvcF9idWlsZGRpcj0kYWNfcHdkCi1hY19hYnNfYnVpbGRkaXI9JGFj X3B3ZCRhY19kaXJfc3VmZml4Ci0jIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5OgotYWNfdG9w X2J1aWxkZGlyPSRhY190b3BfYnVpbGRfcHJlZml4Ci0KLWNhc2UgJHNyY2RpciBpbgotICAuKSAg IyBXZSBhcmUgYnVpbGRpbmcgaW4gcGxhY2UuCi0gICAgYWNfc3JjZGlyPS4KLSAgICBhY190b3Bf c3JjZGlyPSRhY190b3BfYnVpbGRkaXJfc3ViCi0gICAgYWNfYWJzX3RvcF9zcmNkaXI9JGFjX3B3 ZCA7OwotICBbXFwvXSogfCA/OltcXC9dKiApICAjIEFic29sdXRlIG5hbWUuCi0gICAgYWNfc3Jj ZGlyPSRzcmNkaXIkYWNfZGlyX3N1ZmZpeDsKLSAgICBhY190b3Bfc3JjZGlyPSRzcmNkaXIKLSAg ICBhY19hYnNfdG9wX3NyY2Rpcj0kc3JjZGlyIDs7Ci0gICopICMgUmVsYXRpdmUgbmFtZS4KLSAg ICBhY19zcmNkaXI9JGFjX3RvcF9idWlsZF9wcmVmaXgkc3JjZGlyJGFjX2Rpcl9zdWZmaXgKLSAg ICBhY190b3Bfc3JjZGlyPSRhY190b3BfYnVpbGRfcHJlZml4JHNyY2RpcgotICAgIGFjX2Fic190 b3Bfc3JjZGlyPSRhY19wd2QvJHNyY2RpciA7OwotZXNhYwotYWNfYWJzX3NyY2Rpcj0kYWNfYWJz X3RvcF9zcmNkaXIkYWNfZGlyX3N1ZmZpeAotCi0gICAgY2QgIiRhY19kaXIiIHx8IHsgYWNfc3Rh dHVzPSQ/OyBjb250aW51ZTsgfQotICAgICMgQ2hlY2sgZm9yIGd1ZXN0ZWQgY29uZmlndXJlLgot ICAgIGlmIHRlc3QgLWYgIiRhY19zcmNkaXIvY29uZmlndXJlLmdudSI7IHRoZW4KLSAgICAgIGVj aG8gJiYKLSAgICAgICRTSEVMTCAiJGFjX3NyY2Rpci9jb25maWd1cmUuZ251IiAtLWhlbHA9cmVj dXJzaXZlCi0gICAgZWxpZiB0ZXN0IC1mICIkYWNfc3JjZGlyL2NvbmZpZ3VyZSI7IHRoZW4KLSAg ICAgIGVjaG8gJiYKLSAgICAgICRTSEVMTCAiJGFjX3NyY2Rpci9jb25maWd1cmUiIC0taGVscD1y ZWN1cnNpdmUKLSAgICBlbHNlCi0gICAgICAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBubyBj b25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGlzIGluICRhY19kaXIiID4mMgotICAgIGZpIHx8IGFj X3N0YXR1cz0kPwotICAgIGNkICIkYWNfcHdkIiB8fCB7IGFjX3N0YXR1cz0kPzsgYnJlYWs7IH0K LSAgZG9uZQotZmkKLQotdGVzdCAtbiAiJGFjX2luaXRfaGVscCIgJiYgZXhpdCAkYWNfc3RhdHVz Ci1pZiAkYWNfaW5pdF92ZXJzaW9uOyB0aGVuCi0gIGNhdCA8PFxfQUNFT0YKLVhlbiBIeXBlcnZp c29yIGNvbmZpZ3VyZSA0LjEzCi1nZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkKLQotQ29w eXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotVGhpcyBjb25m aWd1cmUgc2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24KLWdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1v ZGlmeSBpdC4KLV9BQ0VPRgotICBleGl0Ci1maQotCi0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0gIyMKLSMjIEF1dG9jb25mIGluaXRpYWxpemF0aW9uLiAjIwotIyMgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tICMjCi1jYXQgPmNvbmZpZy5sb2cgPDxfQUNFT0YKLVRoaXMgZmlsZSBjb250YWlu cyBhbnkgbWVzc2FnZXMgcHJvZHVjZWQgYnkgY29tcGlsZXJzIHdoaWxlCi1ydW5uaW5nIGNvbmZp Z3VyZSwgdG8gYWlkIGRlYnVnZ2luZyBpZiBjb25maWd1cmUgbWFrZXMgYSBtaXN0YWtlLgotCi1J dCB3YXMgY3JlYXRlZCBieSBYZW4gSHlwZXJ2aXNvciAkYXNfbWUgNC4xMywgd2hpY2ggd2FzCi1n ZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3 YXMKLQotICAkICQwICRACi0KLV9BQ0VPRgotZXhlYyA1Pj5jb25maWcubG9nCi17Ci1jYXQgPDxf QVNVTkFNRQotIyMgLS0tLS0tLS0tICMjCi0jIyBQbGF0Zm9ybS4gIyMKLSMjIC0tLS0tLS0tLSAj IwotCi1ob3N0bmFtZSA9IGAoaG9zdG5hbWUgfHwgdW5hbWUgLW4pIDI+L2Rldi9udWxsIHwgc2Vk IDFxYAotdW5hbWUgLW0gPSBgKHVuYW1lIC1tKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25g Ci11bmFtZSAtciA9IGAodW5hbWUgLXIpIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKLXVu YW1lIC1zID0gYCh1bmFtZSAtcykgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAotdW5hbWUg LXYgPSBgKHVuYW1lIC12KSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCi0KLS91c3IvYmlu L3VuYW1lIC1wID0gYCgvdXNyL2Jpbi91bmFtZSAtcCkgMj4vZGV2L251bGwgfHwgZWNobyB1bmtu b3duYAotL2Jpbi91bmFtZSAtWCAgICAgPSBgKC9iaW4vdW5hbWUgLVgpIDI+L2Rldi9udWxsICAg ICB8fCBlY2hvIHVua25vd25gCi0KLS9iaW4vYXJjaCAgICAgICAgICAgICAgPSBgKC9iaW4vYXJj aCkgMj4vZGV2L251bGwgICAgICAgICAgICAgIHx8IGVjaG8gdW5rbm93bmAKLS91c3IvYmluL2Fy Y2ggLWsgICAgICAgPSBgKC91c3IvYmluL2FyY2ggLWspIDI+L2Rldi9udWxsICAgICAgIHx8IGVj aG8gdW5rbm93bmAKLS91c3IvY29udmV4L2dldHN5c2luZm8gPSBgKC91c3IvY29udmV4L2dldHN5 c2luZm8pIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKLS91c3IvYmluL2hvc3RpbmZvICAg ICAgPSBgKC91c3IvYmluL2hvc3RpbmZvKSAyPi9kZXYvbnVsbCAgICAgIHx8IGVjaG8gdW5rbm93 bmAKLS9iaW4vbWFjaGluZSAgICAgICAgICAgPSBgKC9iaW4vbWFjaGluZSkgMj4vZGV2L251bGwg ICAgICAgICAgIHx8IGVjaG8gdW5rbm93bmAKLS91c3IvYmluL29zbGV2ZWwgICAgICAgPSBgKC91 c3IvYmluL29zbGV2ZWwpIDI+L2Rldi9udWxsICAgICAgIHx8IGVjaG8gdW5rbm93bmAKLS9iaW4v dW5pdmVyc2UgICAgICAgICAgPSBgKC9iaW4vdW5pdmVyc2UpIDI+L2Rldi9udWxsICAgICAgICAg IHx8IGVjaG8gdW5rbm93bmAKLQotX0FTVU5BTUUKLQotYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQ QVRIX1NFUEFSQVRPUgotZm9yIGFzX2RpciBpbiAkUEFUSAotZG8KLSAgSUZTPSRhc19zYXZlX0lG UwotICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICRhc19lY2hvICJQQVRIOiAk YXNfZGlyIgotICBkb25lCi1JRlM9JGFzX3NhdmVfSUZTCi0KLX0gPiY1Ci0KLWNhdCA+JjUgPDxf QUNFT0YKLQotCi0jIyAtLS0tLS0tLS0tLSAjIwotIyMgQ29yZSB0ZXN0cy4gIyMKLSMjIC0tLS0t LS0tLS0tICMjCi0KLV9BQ0VPRgotCi0KLSMgS2VlcCBhIHRyYWNlIG9mIHRoZSBjb21tYW5kIGxp bmUuCi0jIFN0cmlwIG91dCAtLW5vLWNyZWF0ZSBhbmQgLS1uby1yZWN1cnNpb24gc28gdGhleSBk byBub3QgcGlsZSB1cC4KLSMgU3RyaXAgb3V0IC0tc2lsZW50IGJlY2F1c2Ugd2UgZG9uJ3Qgd2Fu dCB0byByZWNvcmQgaXQgZm9yIGZ1dHVyZSBydW5zLgotIyBBbHNvIHF1b3RlIGFueSBhcmdzIGNv bnRhaW5pbmcgc2hlbGwgbWV0YS1jaGFyYWN0ZXJzLgotIyBNYWtlIHR3byBwYXNzZXMgdG8gYWxs b3cgZm9yIHByb3BlciBkdXBsaWNhdGUtYXJndW1lbnQgc3VwcHJlc3Npb24uCi1hY19jb25maWd1 cmVfYXJncz0KLWFjX2NvbmZpZ3VyZV9hcmdzMD0KLWFjX2NvbmZpZ3VyZV9hcmdzMT0KLWFjX211 c3Rfa2VlcF9uZXh0PWZhbHNlCi1mb3IgYWNfcGFzcyBpbiAxIDIKLWRvCi0gIGZvciBhY19hcmcK LSAgZG8KLSAgICBjYXNlICRhY19hcmcgaW4KLSAgICAtbm8tY3JlYXRlIHwgLS1uby1jKiB8IC1u IHwgLW5vLXJlY3Vyc2lvbiB8IC0tbm8tciopIGNvbnRpbnVlIDs7Ci0gICAgLXEgfCAtcXVpZXQg fCAtLXF1aWV0IHwgLS1xdWllIHwgLS1xdWkgfCAtLXF1IHwgLS1xIFwKLSAgICB8IC1zaWxlbnQg fCAtLXNpbGVudCB8IC0tc2lsZW4gfCAtLXNpbGUgfCAtLXNpbCkKLSAgICAgIGNvbnRpbnVlIDs7 Ci0gICAgKlwnKikKLSAgICAgIGFjX2FyZz1gJGFzX2VjaG8gIiRhY19hcmciIHwgc2VkICJzLycv J1xcXFxcXFxcJycvZyJgIDs7Ci0gICAgZXNhYwotICAgIGNhc2UgJGFjX3Bhc3MgaW4KLSAgICAx KSBhc19mbl9hcHBlbmQgYWNfY29uZmlndXJlX2FyZ3MwICIgJyRhY19hcmcnIiA7OwotICAgIDIp Ci0gICAgICBhc19mbl9hcHBlbmQgYWNfY29uZmlndXJlX2FyZ3MxICIgJyRhY19hcmcnIgotICAg ICAgaWYgdGVzdCAkYWNfbXVzdF9rZWVwX25leHQgPSB0cnVlOyB0aGVuCi0JYWNfbXVzdF9rZWVw X25leHQ9ZmFsc2UgIyBHb3QgdmFsdWUsIGJhY2sgdG8gbm9ybWFsLgotICAgICAgZWxzZQotCWNh c2UgJGFjX2FyZyBpbgotCSAgKj0qIHwgLS1jb25maWctY2FjaGUgfCAtQyB8IC1kaXNhYmxlLSog fCAtLWRpc2FibGUtKiBcCi0JICB8IC1lbmFibGUtKiB8IC0tZW5hYmxlLSogfCAtZ2FzIHwgLS1n KiB8IC1uZnAgfCAtLW5mKiBcCi0JICB8IC1xIHwgLXF1aWV0IHwgLS1xKiB8IC1zaWxlbnQgfCAt LXNpbCogfCAtdiB8IC12ZXJiKiBcCi0JICB8IC13aXRoLSogfCAtLXdpdGgtKiB8IC13aXRob3V0 LSogfCAtLXdpdGhvdXQtKiB8IC0teCkKLQkgICAgY2FzZSAiJGFjX2NvbmZpZ3VyZV9hcmdzMCAi IGluCi0JICAgICAgIiRhY19jb25maWd1cmVfYXJnczEiKiIgJyRhY19hcmcnICIqICkgY29udGlu dWUgOzsKLQkgICAgZXNhYwotCSAgICA7OwotCSAgLSogKSBhY19tdXN0X2tlZXBfbmV4dD10cnVl IDs7Ci0JZXNhYwotICAgICAgZmkKLSAgICAgIGFzX2ZuX2FwcGVuZCBhY19jb25maWd1cmVfYXJn cyAiICckYWNfYXJnJyIKLSAgICAgIDs7Ci0gICAgZXNhYwotICBkb25lCi1kb25lCi17IGFjX2Nv bmZpZ3VyZV9hcmdzMD07IHVuc2V0IGFjX2NvbmZpZ3VyZV9hcmdzMDt9Ci17IGFjX2NvbmZpZ3Vy ZV9hcmdzMT07IHVuc2V0IGFjX2NvbmZpZ3VyZV9hcmdzMTt9Ci0KLSMgV2hlbiBpbnRlcnJ1cHRl ZCBvciBleGl0J2QsIGNsZWFudXAgdGVtcG9yYXJ5IGZpbGVzLCBhbmQgY29tcGxldGUKLSMgY29u ZmlnLmxvZy4gIFdlIHJlbW92ZSBjb21tZW50cyBiZWNhdXNlIGFueXdheSB0aGUgcXVvdGVzIGlu IHRoZXJlCi0jIHdvdWxkIGNhdXNlIHByb2JsZW1zIG9yIGxvb2sgdWdseS4KLSMgV0FSTklORzog VXNlICdcJycgdG8gcmVwcmVzZW50IGFuIGFwb3N0cm9waGUgd2l0aGluIHRoZSB0cmFwLgotIyBX QVJOSU5HOiBEbyBub3Qgc3RhcnQgdGhlIHRyYXAgY29kZSB3aXRoIGEgbmV3bGluZSwgZHVlIHRv IGEgRnJlZUJTRCA0LjAgYnVnLgotdHJhcCAnZXhpdF9zdGF0dXM9JD8KLSAgIyBTYXZlIGludG8g Y29uZmlnLmxvZyBzb21lIGluZm9ybWF0aW9uIHRoYXQgbWlnaHQgaGVscCBpbiBkZWJ1Z2dpbmcu Ci0gIHsKLSAgICBlY2hvCi0KLSAgICAkYXNfZWNobyAiIyMgLS0tLS0tLS0tLS0tLS0tLSAjIwot IyMgQ2FjaGUgdmFyaWFibGVzLiAjIwotIyMgLS0tLS0tLS0tLS0tLS0tLSAjIyIKLSAgICBlY2hv Ci0gICAgIyBUaGUgZm9sbG93aW5nIHdheSBvZiB3cml0aW5nIHRoZSBjYWNoZSBtaXNoYW5kbGVz IG5ld2xpbmVzIGluIHZhbHVlcywKLSgKLSAgZm9yIGFjX3ZhciBpbiBgKHNldCkgMj4mMSB8IHNl ZCAtbiAnXCcncy9eXChbYS16QS1aX11bYS16QS1aMC05X10qXCk9LiovXDEvcCdcJydgOyBkbwot ICAgIGV2YWwgYWNfdmFsPVwkJGFjX3ZhcgotICAgIGNhc2UgJGFjX3ZhbCBpbiAjKAotICAgICok e2FzX25sfSopCi0gICAgICBjYXNlICRhY192YXIgaW4gIygKLSAgICAgICpfY3ZfKikgeyAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBjYWNoZSB2YXJpYWJs ZSAkYWNfdmFyIGNvbnRhaW5zIGEgbmV3bGluZSIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiBXQVJO SU5HOiBjYWNoZSB2YXJpYWJsZSAkYWNfdmFyIGNvbnRhaW5zIGEgbmV3bGluZSIgPiYyO30gOzsK LSAgICAgIGVzYWMKLSAgICAgIGNhc2UgJGFjX3ZhciBpbiAjKAotICAgICAgXyB8IElGUyB8IGFz X25sKSA7OyAjKAotICAgICAgQkFTSF9BUkdWIHwgQkFTSF9TT1VSQ0UpIGV2YWwgJGFjX3Zhcj0g OzsgIygKLSAgICAgICopIHsgZXZhbCAkYWNfdmFyPTsgdW5zZXQgJGFjX3Zhcjt9IDs7Ci0gICAg ICBlc2FjIDs7Ci0gICAgZXNhYwotICBkb25lCi0gIChzZXQpIDI+JjEgfAotICAgIGNhc2UgJGFz X25sYChhY19zcGFjZT0nXCcnICdcJyc7IHNldCkgMj4mMWAgaW4gIygKLSAgICAqJHthc19ubH1h Y19zcGFjZT1cICopCi0gICAgICBzZWQgLW4gXAotCSJzLydcJycvJ1wnJ1xcXFwnXCcnJ1wnJy9n OwotCSAgcy9eXFwoW18kYXNfY3JfYWxudW1dKl9jdl9bXyRhc19jcl9hbG51bV0qXFwpPVxcKC4q XFwpL1xcMT0nXCcnXFwyJ1wnJy9wIgotICAgICAgOzsgIygKLSAgICAqKQotICAgICAgc2VkIC1u ICIvXltfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKj0vcCIKLSAgICAgIDs7Ci0g ICAgZXNhYyB8Ci0gICAgc29ydAotKQotICAgIGVjaG8KLQotICAgICRhc19lY2hvICIjIyAtLS0t LS0tLS0tLS0tLS0tLSAjIwotIyMgT3V0cHV0IHZhcmlhYmxlcy4gIyMKLSMjIC0tLS0tLS0tLS0t LS0tLS0tICMjIgotICAgIGVjaG8KLSAgICBmb3IgYWNfdmFyIGluICRhY19zdWJzdF92YXJzCi0g ICAgZG8KLSAgICAgIGV2YWwgYWNfdmFsPVwkJGFjX3ZhcgotICAgICAgY2FzZSAkYWNfdmFsIGlu Ci0gICAgICAqXCdcJycqKSBhY192YWw9YCRhc19lY2hvICIkYWNfdmFsIiB8IHNlZCAicy8nXCcn LydcJydcXFxcXFxcXCdcJycnXCcnL2ciYDs7Ci0gICAgICBlc2FjCi0gICAgICAkYXNfZWNobyAi JGFjX3Zhcj0nXCcnJGFjX3ZhbCdcJyciCi0gICAgZG9uZSB8IHNvcnQKLSAgICBlY2hvCi0KLSAg ICBpZiB0ZXN0IC1uICIkYWNfc3Vic3RfZmlsZXMiOyB0aGVuCi0gICAgICAkYXNfZWNobyAiIyMg LS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIyMgRmlsZSBzdWJzdGl0dXRpb25zLiAjIwotIyMgLS0t LS0tLS0tLS0tLS0tLS0tLSAjIyIKLSAgICAgIGVjaG8KLSAgICAgIGZvciBhY192YXIgaW4gJGFj X3N1YnN0X2ZpbGVzCi0gICAgICBkbwotCWV2YWwgYWNfdmFsPVwkJGFjX3ZhcgotCWNhc2UgJGFj X3ZhbCBpbgotCSpcJ1wnJyopIGFjX3ZhbD1gJGFzX2VjaG8gIiRhY192YWwiIHwgc2VkICJzLydc JycvJ1wnJ1xcXFxcXFxcJ1wnJydcJycvZyJgOzsKLQllc2FjCi0JJGFzX2VjaG8gIiRhY192YXI9 J1wnJyRhY192YWwnXCcnIgotICAgICAgZG9uZSB8IHNvcnQKLSAgICAgIGVjaG8KLSAgICBmaQot Ci0gICAgaWYgdGVzdCAtcyBjb25mZGVmcy5oOyB0aGVuCi0gICAgICAkYXNfZWNobyAiIyMgLS0t LS0tLS0tLS0gIyMKLSMjIGNvbmZkZWZzLmguICMjCi0jIyAtLS0tLS0tLS0tLSAjIyIKLSAgICAg IGVjaG8KLSAgICAgIGNhdCBjb25mZGVmcy5oCi0gICAgICBlY2hvCi0gICAgZmkKLSAgICB0ZXN0 ICIkYWNfc2lnbmFsIiAhPSAwICYmCi0gICAgICAkYXNfZWNobyAiJGFzX21lOiBjYXVnaHQgc2ln bmFsICRhY19zaWduYWwiCi0gICAgJGFzX2VjaG8gIiRhc19tZTogZXhpdCAkZXhpdF9zdGF0dXMi Ci0gIH0gPiY1Ci0gIHJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiAmJgotICAgIHJt IC1mIC1yIGNvbmZ0ZXN0KiBjb25mZGVmcyogY29uZiQkKiAkYWNfY2xlYW5fZmlsZXMgJiYKLSAg ICBleGl0ICRleGl0X3N0YXR1cwotJyAwCi1mb3IgYWNfc2lnbmFsIGluIDEgMiAxMyAxNTsgZG8K LSAgdHJhcCAnYWNfc2lnbmFsPSckYWNfc2lnbmFsJzsgYXNfZm5fZXhpdCAxJyAkYWNfc2lnbmFs Ci1kb25lCi1hY19zaWduYWw9MAotCi0jIGNvbmZkZWZzLmggYXZvaWRzIE9TIGNvbW1hbmQgbGlu ZSBsZW5ndGggbGltaXRzIHRoYXQgREVGUyBjYW4gZXhjZWVkLgotcm0gLWYgLXIgY29uZnRlc3Qq IGNvbmZkZWZzLmgKLQotJGFzX2VjaG8gIi8qIGNvbmZkZWZzLmggKi8iID4gY29uZmRlZnMuaAot Ci0jIFByZWRlZmluZWQgcHJlcHJvY2Vzc29yIHZhcmlhYmxlcy4KLQotY2F0ID4+Y29uZmRlZnMu aCA8PF9BQ0VPRgotI2RlZmluZSBQQUNLQUdFX05BTUUgIiRQQUNLQUdFX05BTUUiCi1fQUNFT0YK LQotY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSBQQUNLQUdFX1RBUk5BTUUgIiRQ QUNLQUdFX1RBUk5BTUUiCi1fQUNFT0YKLQotY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2Rl ZmluZSBQQUNLQUdFX1ZFUlNJT04gIiRQQUNLQUdFX1ZFUlNJT04iCi1fQUNFT0YKLQotY2F0ID4+ Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSBQQUNLQUdFX1NUUklORyAiJFBBQ0tBR0VfU1RS SU5HIgotX0FDRU9GCi0KLWNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSNkZWZpbmUgUEFDS0FH RV9CVUdSRVBPUlQgIiRQQUNLQUdFX0JVR1JFUE9SVCIKLV9BQ0VPRgotCi1jYXQgPj5jb25mZGVm cy5oIDw8X0FDRU9GCi0jZGVmaW5lIFBBQ0tBR0VfVVJMICIkUEFDS0FHRV9VUkwiCi1fQUNFT0YK LQotCi0jIExldCB0aGUgc2l0ZSBmaWxlIHNlbGVjdCBhbiBhbHRlcm5hdGUgY2FjaGUgZmlsZSBp ZiBpdCB3YW50cyB0by4KLSMgUHJlZmVyIGFuIGV4cGxpY2l0bHkgc2VsZWN0ZWQgZmlsZSB0byBh dXRvbWF0aWNhbGx5IHNlbGVjdGVkIG9uZXMuCi1hY19zaXRlX2ZpbGUxPU5PTkUKLWFjX3NpdGVf ZmlsZTI9Tk9ORQotaWYgdGVzdCAtbiAiJENPTkZJR19TSVRFIjsgdGhlbgotICAjIFdlIGRvIG5v dCB3YW50IGEgUEFUSCBzZWFyY2ggZm9yIGNvbmZpZy5zaXRlLgotICBjYXNlICRDT05GSUdfU0lU RSBpbiAjKCgKLSAgICAtKikgIGFjX3NpdGVfZmlsZTE9Li8kQ09ORklHX1NJVEU7OwotICAgICov KikgYWNfc2l0ZV9maWxlMT0kQ09ORklHX1NJVEU7OwotICAgICopICAgYWNfc2l0ZV9maWxlMT0u LyRDT05GSUdfU0lURTs7Ci0gIGVzYWMKLWVsaWYgdGVzdCAieCRwcmVmaXgiICE9IHhOT05FOyB0 aGVuCi0gIGFjX3NpdGVfZmlsZTE9JHByZWZpeC9zaGFyZS9jb25maWcuc2l0ZQotICBhY19zaXRl X2ZpbGUyPSRwcmVmaXgvZXRjL2NvbmZpZy5zaXRlCi1lbHNlCi0gIGFjX3NpdGVfZmlsZTE9JGFj X2RlZmF1bHRfcHJlZml4L3NoYXJlL2NvbmZpZy5zaXRlCi0gIGFjX3NpdGVfZmlsZTI9JGFjX2Rl ZmF1bHRfcHJlZml4L2V0Yy9jb25maWcuc2l0ZQotZmkKLWZvciBhY19zaXRlX2ZpbGUgaW4gIiRh Y19zaXRlX2ZpbGUxIiAiJGFjX3NpdGVfZmlsZTIiCi1kbwotICB0ZXN0ICJ4JGFjX3NpdGVfZmls ZSIgPSB4Tk9ORSAmJiBjb250aW51ZQotICBpZiB0ZXN0IC9kZXYvbnVsbCAhPSAiJGFjX3NpdGVf ZmlsZSIgJiYgdGVzdCAtciAiJGFjX3NpdGVfZmlsZSI7IHRoZW4KLSAgICB7ICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGxvYWRpbmcgc2l0ZSBzY3JpcHQgJGFjX3NpdGVf ZmlsZSIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiBsb2FkaW5nIHNpdGUgc2NyaXB0ICRhY19zaXRl X2ZpbGUiID4mNjt9Ci0gICAgc2VkICdzL14vfCAvJyAiJGFjX3NpdGVfZmlsZSIgPiY1Ci0gICAg LiAiJGFjX3NpdGVfZmlsZSIgXAotICAgICAgfHwgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1Ci0kYXNfZWNobyAiJGFz X21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Ci1hc19mbl9lcnJvciAkPyAiZmFpbGVk IHRvIGxvYWQgc2l0ZSBzY3JpcHQgJGFjX3NpdGVfZmlsZQotU2VlIFxgY29uZmlnLmxvZycgZm9y IG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KLSAgZmkKLWRvbmUKLQotaWYgdGVzdCAtciAi JGNhY2hlX2ZpbGUiOyB0aGVuCi0gICMgU29tZSB2ZXJzaW9ucyBvZiBiYXNoIHdpbGwgZmFpbCB0 byBzb3VyY2UgL2Rldi9udWxsIChzcGVjaWFsIGZpbGVzCi0gICMgYWN0dWFsbHkpLCBzbyB3ZSBh dm9pZCBkb2luZyB0aGF0LiAgREpHUFAgZW11bGF0ZXMgaXQgYXMgYSByZWd1bGFyIGZpbGUuCi0g IGlmIHRlc3QgL2Rldi9udWxsICE9ICIkY2FjaGVfZmlsZSIgJiYgdGVzdCAtZiAiJGNhY2hlX2Zp bGUiOyB0aGVuCi0gICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBs b2FkaW5nIGNhY2hlICRjYWNoZV9maWxlIiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IGxvYWRpbmcg Y2FjaGUgJGNhY2hlX2ZpbGUiID4mNjt9Ci0gICAgY2FzZSAkY2FjaGVfZmlsZSBpbgotICAgICAg W1xcL10qIHwgPzpbXFwvXSogKSAuICIkY2FjaGVfZmlsZSI7OwotICAgICAgKikgICAgICAgICAg ICAgICAgICAgICAgLiAiLi8kY2FjaGVfZmlsZSI7OwotICAgIGVzYWMKLSAgZmkKLWVsc2UKLSAg eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjcmVhdGluZyBjYWNoZSAk Y2FjaGVfZmlsZSIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiBjcmVhdGluZyBjYWNoZSAkY2FjaGVf ZmlsZSIgPiY2O30KLSAgPiRjYWNoZV9maWxlCi1maQotCi0jIENoZWNrIHRoYXQgdGhlIHByZWNp b3VzIHZhcmlhYmxlcyBzYXZlZCBpbiB0aGUgY2FjaGUgaGF2ZSBrZXB0IHRoZSBzYW1lCi0jIHZh bHVlLgotYWNfY2FjaGVfY29ycnVwdGVkPWZhbHNlCi1mb3IgYWNfdmFyIGluICRhY19wcmVjaW91 c192YXJzOyBkbwotICBldmFsIGFjX29sZF9zZXQ9XCRhY19jdl9lbnZfJHthY192YXJ9X3NldAot ICBldmFsIGFjX25ld19zZXQ9XCRhY19lbnZfJHthY192YXJ9X3NldAotICBldmFsIGFjX29sZF92 YWw9XCRhY19jdl9lbnZfJHthY192YXJ9X3ZhbHVlCi0gIGV2YWwgYWNfbmV3X3ZhbD1cJGFjX2Vu dl8ke2FjX3Zhcn1fdmFsdWUKLSAgY2FzZSAkYWNfb2xkX3NldCwkYWNfbmV3X3NldCBpbgotICAg IHNldCwpCi0gICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVy cm9yOiBcYCRhY192YXInIHdhcyBzZXQgdG8gXGAkYWNfb2xkX3ZhbCcgaW4gdGhlIHByZXZpb3Vz IHJ1biIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiBlcnJvcjogXGAkYWNfdmFyJyB3YXMgc2V0IHRv IFxgJGFjX29sZF92YWwnIGluIHRoZSBwcmV2aW91cyBydW4iID4mMjt9Ci0gICAgICBhY19jYWNo ZV9jb3JydXB0ZWQ9OiA7OwotICAgICxzZXQpCi0gICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IGVycm9yOiBcYCRhY192YXInIHdhcyBub3Qgc2V0IGluIHRoZSBw cmV2aW91cyBydW4iID4mNQotJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IFxgJGFjX3Zhcicgd2Fz IG5vdCBzZXQgaW4gdGhlIHByZXZpb3VzIHJ1biIgPiYyO30KLSAgICAgIGFjX2NhY2hlX2NvcnJ1 cHRlZD06IDs7Ci0gICAgLCk7OwotICAgICopCi0gICAgICBpZiB0ZXN0ICJ4JGFjX29sZF92YWwi ICE9ICJ4JGFjX25ld192YWwiOyB0aGVuCi0JIyBkaWZmZXJlbmNlcyBpbiB3aGl0ZXNwYWNlIGRv IG5vdCBsZWFkIHRvIGZhaWx1cmUuCi0JYWNfb2xkX3ZhbF93PWBlY2hvIHggJGFjX29sZF92YWxg Ci0JYWNfbmV3X3ZhbF93PWBlY2hvIHggJGFjX25ld192YWxgCi0JaWYgdGVzdCAiJGFjX29sZF92 YWxfdyIgIT0gIiRhY19uZXdfdmFsX3ciOyB0aGVuCi0JICB7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IGVycm9yOiBcYCRhY192YXInIGhhcyBjaGFuZ2VkIHNpbmNlIHRo ZSBwcmV2aW91cyBydW46IiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBcYCRhY192YXIn IGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2aW91cyBydW46IiA+JjI7fQotCSAgYWNfY2FjaGVf Y29ycnVwdGVkPToKLQllbHNlCi0JICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IHdhcm5pbmc6IGlnbm9yaW5nIHdoaXRlc3BhY2UgY2hhbmdlcyBpbiBcYCRhY192YXIn IHNpbmNlIHRoZSBwcmV2aW91cyBydW46IiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IHdhcm5pbmc6 IGlnbm9yaW5nIHdoaXRlc3BhY2UgY2hhbmdlcyBpbiBcYCRhY192YXInIHNpbmNlIHRoZSBwcmV2 aW91cyBydW46IiA+JjI7fQotCSAgZXZhbCAkYWNfdmFyPVwkYWNfb2xkX3ZhbAotCWZpCi0JeyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAgIGZvcm1lciB2YWx1ZTogIFxg JGFjX29sZF92YWwnIiA+JjUKLSRhc19lY2hvICIkYXNfbWU6ICAgZm9ybWVyIHZhbHVlOiAgXGAk YWNfb2xkX3ZhbCciID4mMjt9Ci0JeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiAgIGN1cnJlbnQgdmFsdWU6IFxgJGFjX25ld192YWwnIiA+JjUKLSRhc19lY2hvICIkYXNf bWU6ICAgY3VycmVudCB2YWx1ZTogXGAkYWNfbmV3X3ZhbCciID4mMjt9Ci0gICAgICBmaTs7Ci0g IGVzYWMKLSAgIyBQYXNzIHByZWNpb3VzIHZhcmlhYmxlcyB0byBjb25maWcuc3RhdHVzLgotICBp ZiB0ZXN0ICIkYWNfbmV3X3NldCIgPSBzZXQ7IHRoZW4KLSAgICBjYXNlICRhY19uZXdfdmFsIGlu Ci0gICAgKlwnKikgYWNfYXJnPSRhY192YXI9YCRhc19lY2hvICIkYWNfbmV3X3ZhbCIgfCBzZWQg InMvJy8nXFxcXFxcXFwnJy9nImAgOzsKLSAgICAqKSBhY19hcmc9JGFjX3Zhcj0kYWNfbmV3X3Zh bCA7OwotICAgIGVzYWMKLSAgICBjYXNlICIgJGFjX2NvbmZpZ3VyZV9hcmdzICIgaW4KLSAgICAg ICoiICckYWNfYXJnJyAiKikgOzsgIyBBdm9pZCBkdXBzLiAgVXNlIG9mIHF1b3RlcyBlbnN1cmVz IGFjY3VyYWN5LgotICAgICAgKikgYXNfZm5fYXBwZW5kIGFjX2NvbmZpZ3VyZV9hcmdzICIgJyRh Y19hcmcnIiA7OwotICAgIGVzYWMKLSAgZmkKLWRvbmUKLWlmICRhY19jYWNoZV9jb3JydXB0ZWQ7 IHRoZW4KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjog aW4gXGAkYWNfcHdkJzoiID4mNQotJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3 ZCc6IiA+JjI7fQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVy cm9yOiBjaGFuZ2VzIGluIHRoZSBlbnZpcm9ubWVudCBjYW4gY29tcHJvbWlzZSB0aGUgYnVpbGQi ID4mNQotJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGNoYW5nZXMgaW4gdGhlIGVudmlyb25tZW50 IGNhbiBjb21wcm9taXNlIHRoZSBidWlsZCIgPiYyO30KLSAgYXNfZm5fZXJyb3IgJD8gInJ1biBc YG1ha2UgZGlzdGNsZWFuJyBhbmQvb3IgXGBybSAkY2FjaGVfZmlsZScgYW5kIHN0YXJ0IG92ZXIi ICIkTElORU5PIiA1Ci1maQotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLSMjIE1haW4gYm9k eSBvZiBzY3JpcHQuICMjCi0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotCi1hY19leHQ9Ywot YWNfY3BwPSckQ1BQICRDUFBGTEFHUycKLWFjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBG TEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKLWFjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19l eGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+ JjUnCi1hY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251Ci0KLQotCi1hY19jb25m aWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMgY29uZmlnL1RvcGxldmVsLm1rIGNvbmZpZy9QYXRo cy5tayIKLQotCi1hY19hdXhfZGlyPQotZm9yIGFjX2RpciBpbiAiJHNyY2RpciIgIiRzcmNkaXIv Li4iICIkc3JjZGlyLy4uLy4uIjsgZG8KLSAgaWYgdGVzdCAtZiAiJGFjX2Rpci9pbnN0YWxsLXNo IjsgdGhlbgotICAgIGFjX2F1eF9kaXI9JGFjX2RpcgotICAgIGFjX2luc3RhbGxfc2g9IiRhY19h dXhfZGlyL2luc3RhbGwtc2ggLWMiCi0gICAgYnJlYWsKLSAgZWxpZiB0ZXN0IC1mICIkYWNfZGly L2luc3RhbGwuc2giOyB0aGVuCi0gICAgYWNfYXV4X2Rpcj0kYWNfZGlyCi0gICAgYWNfaW5zdGFs bF9zaD0iJGFjX2F1eF9kaXIvaW5zdGFsbC5zaCAtYyIKLSAgICBicmVhawotICBlbGlmIHRlc3Qg LWYgIiRhY19kaXIvc2h0b29sIjsgdGhlbgotICAgIGFjX2F1eF9kaXI9JGFjX2RpcgotICAgIGFj X2luc3RhbGxfc2g9IiRhY19hdXhfZGlyL3NodG9vbCBpbnN0YWxsIC1jIgotICAgIGJyZWFrCi0g IGZpCi1kb25lCi1pZiB0ZXN0IC16ICIkYWNfYXV4X2RpciI7IHRoZW4KLSAgYXNfZm5fZXJyb3Ig JD8gImNhbm5vdCBmaW5kIGluc3RhbGwtc2gsIGluc3RhbGwuc2gsIG9yIHNodG9vbCBpbiBcIiRz cmNkaXJcIiBcIiRzcmNkaXIvLi5cIiBcIiRzcmNkaXIvLi4vLi5cIiIgIiRMSU5FTk8iIDUKLWZp Ci0KLSMgVGhlc2UgdGhyZWUgdmFyaWFibGVzIGFyZSB1bmRvY3VtZW50ZWQgYW5kIHVuc3VwcG9y dGVkLAotIyBhbmQgYXJlIGludGVuZGVkIHRvIGJlIHdpdGhkcmF3biBpbiBhIGZ1dHVyZSBBdXRv Y29uZiByZWxlYXNlLgotIyBUaGV5IGNhbiBjYXVzZSBzZXJpb3VzIHByb2JsZW1zIGlmIGEgYnVp bGRlcidzIHNvdXJjZSB0cmVlIGlzIGluIGEgZGlyZWN0b3J5Ci0jIHdob3NlIGZ1bGwgbmFtZSBj b250YWlucyB1bnVzdWFsIGNoYXJhY3RlcnMuCi1hY19jb25maWdfZ3Vlc3M9IiRTSEVMTCAkYWNf YXV4X2Rpci9jb25maWcuZ3Vlc3MiICAjIFBsZWFzZSBkb24ndCB1c2UgdGhpcyB2YXIuCi1hY19j b25maWdfc3ViPSIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgICMgUGxlYXNlIGRvbid0 IHVzZSB0aGlzIHZhci4KLWFjX2NvbmZpZ3VyZT0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZ3Vy ZSIgICMgUGxlYXNlIGRvbid0IHVzZSB0aGlzIHZhci4KLQotCi0jIE1ha2Ugc3VyZSB3ZSBjYW4g cnVuIGNvbmZpZy5zdWIuCi0kU0hFTEwgIiRhY19hdXhfZGlyL2NvbmZpZy5zdWIiIHN1bjQgPi9k ZXYvbnVsbCAyPiYxIHx8Ci0gIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgcnVuICRTSEVMTCAkYWNf YXV4X2Rpci9jb25maWcuc3ViIiAiJExJTkVOTyIgNQotCi17ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGJ1aWxkIHN5c3RlbSB0eXBlIiA+JjUKLSRhc19l Y2hvX24gImNoZWNraW5nIGJ1aWxkIHN5c3RlbSB0eXBlLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2 X2J1aWxkKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVs c2UKLSAgYWNfYnVpbGRfYWxpYXM9JGJ1aWxkX2FsaWFzCi10ZXN0ICJ4JGFjX2J1aWxkX2FsaWFz IiA9IHggJiYKLSAgYWNfYnVpbGRfYWxpYXM9YCRTSEVMTCAiJGFjX2F1eF9kaXIvY29uZmlnLmd1 ZXNzImAKLXRlc3QgIngkYWNfYnVpbGRfYWxpYXMiID0geCAmJgotICBhc19mbl9lcnJvciAkPyAi Y2Fubm90IGd1ZXNzIGJ1aWxkIHR5cGU7IHlvdSBtdXN0IHNwZWNpZnkgb25lIiAiJExJTkVOTyIg NQotYWNfY3ZfYnVpbGQ9YCRTSEVMTCAiJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgJGFjX2J1aWxk X2FsaWFzYCB8fAotICBhc19mbl9lcnJvciAkPyAiJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5z dWIgJGFjX2J1aWxkX2FsaWFzIGZhaWxlZCIgIiRMSU5FTk8iIDUKLQotZmkKLXsgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfYnVpbGQiID4mNQot JGFzX2VjaG8gIiRhY19jdl9idWlsZCIgPiY2OyB9Ci1jYXNlICRhY19jdl9idWlsZCBpbgotKi0q LSopIDs7Ci0qKSBhc19mbl9lcnJvciAkPyAiaW52YWxpZCB2YWx1ZSBvZiBjYW5vbmljYWwgYnVp bGQiICIkTElORU5PIiA1OzsKLWVzYWMKLWJ1aWxkPSRhY19jdl9idWlsZAotYWNfc2F2ZV9JRlM9 JElGUzsgSUZTPSctJwotc2V0IHggJGFjX2N2X2J1aWxkCi1zaGlmdAotYnVpbGRfY3B1PSQxCi1i dWlsZF92ZW5kb3I9JDIKLXNoaWZ0OyBzaGlmdAotIyBSZW1lbWJlciwgdGhlIGZpcnN0IGNoYXJh Y3RlciBvZiBJRlMgaXMgdXNlZCB0byBjcmVhdGUgJCosCi0jIGV4Y2VwdCB3aXRoIG9sZCBzaGVs bHM6Ci1idWlsZF9vcz0kKgotSUZTPSRhY19zYXZlX0lGUwotY2FzZSAkYnVpbGRfb3MgaW4gKlwg KikgYnVpbGRfb3M9YGVjaG8gIiRidWlsZF9vcyIgfCBzZWQgJ3MvIC8tL2cnYDs7IGVzYWMKLQot Ci17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvc3Qg c3lzdGVtIHR5cGUiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG9zdCBzeXN0ZW0gdHlwZS4u LiAiID4mNjsgfQotaWYgJHthY19jdl9ob3N0Kzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9f biAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgaWYgdGVzdCAieCRob3N0X2FsaWFzIiA9IHg7IHRo ZW4KLSAgYWNfY3ZfaG9zdD0kYWNfY3ZfYnVpbGQKLWVsc2UKLSAgYWNfY3ZfaG9zdD1gJFNIRUxM ICIkYWNfYXV4X2Rpci9jb25maWcuc3ViIiAkaG9zdF9hbGlhc2AgfHwKLSAgICBhc19mbl9lcnJv ciAkPyAiJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIgJGhvc3RfYWxpYXMgZmFpbGVkIiAi JExJTkVOTyIgNQotZmkKLQotZmkKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogcmVzdWx0OiAkYWNfY3ZfaG9zdCIgPiY1Ci0kYXNfZWNobyAiJGFjX2N2X2hvc3QiID4m NjsgfQotY2FzZSAkYWNfY3ZfaG9zdCBpbgotKi0qLSopIDs7Ci0qKSBhc19mbl9lcnJvciAkPyAi aW52YWxpZCB2YWx1ZSBvZiBjYW5vbmljYWwgaG9zdCIgIiRMSU5FTk8iIDU7OwotZXNhYwotaG9z dD0kYWNfY3ZfaG9zdAotYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSctJwotc2V0IHggJGFjX2N2X2hv c3QKLXNoaWZ0Ci1ob3N0X2NwdT0kMQotaG9zdF92ZW5kb3I9JDIKLXNoaWZ0OyBzaGlmdAotIyBS ZW1lbWJlciwgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBJRlMgaXMgdXNlZCB0byBjcmVhdGUgJCos Ci0jIGV4Y2VwdCB3aXRoIG9sZCBzaGVsbHM6Ci1ob3N0X29zPSQqCi1JRlM9JGFjX3NhdmVfSUZT Ci1jYXNlICRob3N0X29zIGluICpcICopIGhvc3Rfb3M9YGVjaG8gIiRob3N0X29zIiB8IHNlZCAn cy8gLy0vZydgOzsgZXNhYwotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0K LQotCi0KLQotCi0KLQotY2FzZSAiJGhvc3Rfb3MiIGluCi0qZnJlZWJzZCopIFhFTlNUT1JFRF9L VkE9L2Rldi94ZW4veGVuc3RvcmVkIDs7Ci0qKSBYRU5TVE9SRURfS1ZBPS9wcm9jL3hlbi94c2Rf a3ZhIDs7Ci1lc2FjCi0KLQotY2FzZSAiJGhvc3Rfb3MiIGluCi0qZnJlZWJzZCopIFhFTlNUT1JF RF9QT1JUPS9kZXYveGVuL3hlbnN0b3JlZCA7OwotKikgWEVOU1RPUkVEX1BPUlQ9L3Byb2MveGVu L3hzZF9wb3J0IDs7Ci1lc2FjCi0KLQotCi0KLXRlc3QgIngkcHJlZml4IiA9ICJ4Tk9ORSIgJiYg cHJlZml4PSRhY19kZWZhdWx0X3ByZWZpeAotdGVzdCAieCRleGVjX3ByZWZpeCIgPSAieE5PTkUi ICYmIGV4ZWNfcHJlZml4PSR7cHJlZml4fQotCi1pZiB0ZXN0ICIkbG9jYWxzdGF0ZWRpciIgPSAn JHtwcmVmaXh9L3ZhcicgOyB0aGVuCi0gICAgbG9jYWxzdGF0ZWRpcj0vdmFyCi1maQotCi1iaW5k aXI9YGV2YWwgZWNobyAkYmluZGlyYAotc2JpbmRpcj1gZXZhbCBlY2hvICRzYmluZGlyYAotbGli ZGlyPWBldmFsIGVjaG8gJGxpYmRpcmAKLQotaWYgdGVzdCAieCRzeXNjb25mZGlyIiA9ICd4JHtw cmVmaXh9L2V0YycgOyB0aGVuCi0gICAgY2FzZSAiJGhvc3Rfb3MiIGluCi0gICAgICAgICAqZnJl ZWJzZCopCi0gICAgICAgICBzeXNjb25mZGlyPSRwcmVmaXgvZXRjCi0gICAgICAgICA7OwotICAg ICAgICAgKnNvbGFyaXMqKQotICAgICAgICAgaWYgdGVzdCAiJHByZWZpeCIgPSAiL3VzciIgOyB0 aGVuCi0gICAgICAgICAgICAgc3lzY29uZmRpcj0vZXRjCi0gICAgICAgICBlbHNlCi0gICAgICAg ICAgICAgc3lzY29uZmRpcj0kcHJlZml4L2V0YwotICAgICAgICAgZmkKLSAgICAgICAgIDs7Ci0g ICAgICAgICAqKQotICAgICAgICAgc3lzY29uZmRpcj0vZXRjCi0gICAgICAgICA7OwotICAgIGVz YWMKLWZpCi0KLQotIyBDaGVjayB3aGV0aGVyIC0td2l0aC1pbml0ZGRpciB3YXMgZ2l2ZW4uCi1p ZiB0ZXN0ICIke3dpdGhfaW5pdGRkaXIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICB3aXRodmFsPSR3 aXRoX2luaXRkZGlyOyBpbml0ZGRpcl9wYXRoPSR3aXRodmFsCi1lbHNlCi0gIGNhc2UgIiRob3N0 X29zIiBpbgotICAgICAgICAgKmxpbnV4KikKLSAgICAgICAgIGlmIHRlc3QgLWQgJHN5c2NvbmZk aXIvcmMuZC9pbml0LmQgOyB0aGVuCi0gICAgICAgICAgICAgaW5pdGRkaXJfcGF0aD0kc3lzY29u ZmRpci9yYy5kL2luaXQuZAotICAgICAgICAgZWxzZQotICAgICAgICAgICAgIGluaXRkZGlyX3Bh dGg9JHN5c2NvbmZkaXIvaW5pdC5kCi0gICAgICAgICBmaQotICAgICAgICAgOzsKLSAgICAgICAg ICopCi0gICAgICAgICBpbml0ZGRpcl9wYXRoPSRzeXNjb25mZGlyL3JjLmQKLSAgICAgICAgIDs7 Ci0gICAgIGVzYWMKLWZpCi0KLQotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLXN5c2NvbmZpZy1s ZWFmLWRpciB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfc3lzY29uZmlnX2xlYWZfZGlyK3Nl dH0iID0gc2V0OyB0aGVuIDoKLSAgd2l0aHZhbD0kd2l0aF9zeXNjb25maWdfbGVhZl9kaXI7IGNv bmZpZ19sZWFmX2Rpcj0kd2l0aHZhbAotZWxzZQotICBjb25maWdfbGVhZl9kaXI9c3lzY29uZmln Ci0gICAgaWYgdGVzdCAhIC1kIC9ldGMvc3lzY29uZmlnIDsgdGhlbiBjb25maWdfbGVhZl9kaXI9 ZGVmYXVsdCA7IGZpCi1maQotCi1DT05GSUdfTEVBRl9ESVI9JGNvbmZpZ19sZWFmX2RpcgotCi0K LQotIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJleGVjLWxlYWYtZGlyIHdhcyBnaXZlbi4KLWlm IHRlc3QgIiR7d2l0aF9saWJleGVjX2xlYWZfZGlyK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgd2l0 aHZhbD0kd2l0aF9saWJleGVjX2xlYWZfZGlyOyBsaWJleGVjX3N1YmRpcj0kd2l0aHZhbAotZWxz ZQotICBsaWJleGVjX3N1YmRpcj0kUEFDS0FHRV9UQVJOQU1FCi1maQotCi0KLQotIyBDaGVjayB3 aGV0aGVyIC0td2l0aC14ZW4tZHVtcGRpciB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfeGVu X2R1bXBkaXIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICB3aXRodmFsPSR3aXRoX3hlbl9kdW1wZGly OyB4ZW5fZHVtcGRpcl9wYXRoPSR3aXRodmFsCi1lbHNlCi0gIHhlbl9kdW1wZGlyX3BhdGg9JGxv Y2Fsc3RhdGVkaXIvbGliL3hlbi9kdW1wCi1maQotCi0KLQotIyBDaGVjayB3aGV0aGVyIC0td2l0 aC1ydW5kaXIgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHt3aXRoX3J1bmRpcitzZXR9IiA9IHNldDsg dGhlbiA6Ci0gIHdpdGh2YWw9JHdpdGhfcnVuZGlyOyBydW5kaXJfcGF0aD0kd2l0aHZhbAotZWxz ZQotICBydW5kaXJfcGF0aD0kbG9jYWxzdGF0ZWRpci9ydW4KLWZpCi0KLQotCi0jIENoZWNrIHdo ZXRoZXIgLS13aXRoLWRlYnVnZGlyIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF9kZWJ1Z2Rp citzZXR9IiA9IHNldDsgdGhlbiA6Ci0gIHdpdGh2YWw9JHdpdGhfZGVidWdkaXI7IGRlYnVnZGly X3BhdGg9JHdpdGh2YWwKLWVsc2UKLSAgZGVidWdkaXJfcGF0aD0kcHJlZml4L2xpYi9kZWJ1Zwot ZmkKLQotCi1pZiB0ZXN0ICIkbGliZXhlY2RpciIgPSAnJHtleGVjX3ByZWZpeH0vbGliZXhlYycg OyB0aGVuCi0gICAgY2FzZSAiJGhvc3Rfb3MiIGluCi0gICAgICAgICAqbmV0YnNkKikgOzsKLSAg ICAgICAgICopCi0gICAgICAgICBsaWJleGVjZGlyPScke2V4ZWNfcHJlZml4fS9saWInCi0gICAg ICAgICA7OwotICAgIGVzYWMKLWZpCi1MSUJFWEVDPWBldmFsIGVjaG8gJGxpYmV4ZWNkaXIvJGxp YmV4ZWNfc3ViZGlyYAotCi0KLUxJQkVYRUNfQklOPSR7TElCRVhFQ30vYmluCi0KLUxJQkVYRUNf TElCPSR7TElCRVhFQ30vbGliCi0KLUxJQkVYRUNfSU5DPSR7TElCRVhFQ30vaW5jbHVkZQotCi1Y RU5GSVJNV0FSRURJUj0ke0xJQkVYRUN9L2Jvb3QKLQotCi1YRU5fUlVOX0RJUj0kcnVuZGlyX3Bh dGgveGVuCi0KLQotWEVOX0xPR19ESVI9JGxvY2Fsc3RhdGVkaXIvbG9nL3hlbgotCi0KLVhFTl9M SUJfU1RPUkVEPSRsb2NhbHN0YXRlZGlyL2xpYi94ZW5zdG9yZWQKLQotCi1YRU5fUlVOX1NUT1JF RD0kcnVuZGlyX3BhdGgveGVuc3RvcmVkCi0KLQotWEVOX0xJQl9ESVI9JGxvY2Fsc3RhdGVkaXIv bGliL3hlbgotCi0KLVNIQVJFRElSPSRwcmVmaXgvc2hhcmUKLQotCi1DT05GSUdfRElSPSRzeXNj b25mZGlyCi0KLQotSU5JVERfRElSPSRpbml0ZGRpcl9wYXRoCi0KLQotWEVOX0NPTkZJR19ESVI9 JENPTkZJR19ESVIveGVuCi0KLQotWEVOX1NDUklQVF9ESVI9JFhFTl9DT05GSUdfRElSL3Njcmlw dHMKLQotCi1jYXNlICIkaG9zdF9vcyIgaW4KLSpmcmVlYnNkKikgWEVOX0xPQ0tfRElSPSRsb2Nh bHN0YXRlZGlyL2xpYiA7OwotKm5ldGJzZCopIFhFTl9MT0NLX0RJUj0kbG9jYWxzdGF0ZWRpci9s aWIgOzsKLSopIFhFTl9MT0NLX0RJUj0kbG9jYWxzdGF0ZWRpci9sb2NrIDs7Ci1lc2FjCi0KLQot WEVOX1BBR0lOR19ESVI9JGxvY2Fsc3RhdGVkaXIvbGliL3hlbi94ZW5wYWdpbmcKLQotCi1YRU5f RFVNUF9ESVI9JHhlbl9kdW1wZGlyX3BhdGgKLQotCi1ERUJVR19ESVI9JGRlYnVnZGlyX3BhdGgK LQotCi0KLSMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1naXRodHRwIHdhcyBnaXZlbi4KLWlmIHRl c3QgIiR7ZW5hYmxlX2dpdGh0dHArc2V0fSIgPSBzZXQ7IHRoZW4gOgotICBlbmFibGV2YWw9JGVu YWJsZV9naXRodHRwOwotZmkKLQotCi1pZiB0ZXN0ICJ4JGVuYWJsZV9naXRodHRwIiA9ICJ4bm8i OyB0aGVuIDoKLQotICAgIGF4X2N2X2dpdGh0dHA9Im4iCi0KLWVsaWYgdGVzdCAieCRlbmFibGVf Z2l0aHR0cCIgPSAieHllcyI7IHRoZW4gOgotCi0gICAgYXhfY3ZfZ2l0aHR0cD0ieSIKLQotZWxp ZiB0ZXN0IC16ICRheF9jdl9naXRodHRwOyB0aGVuIDoKLQotICAgIGF4X2N2X2dpdGh0dHA9Im4i Ci0KLWZpCi1naXRodHRwPSRheF9jdl9naXRodHRwCi0KLQotCi1jYXNlICIkaG9zdF9jcHUiIGlu Ci0gICAgaVszNDU2XTg2fHg4Nl82NCkKLSAgICAgICAgYXJjaF9lbmFibGVfc3R1YmRvbT15Ci0g ICAgICAgIDs7Ci0gICAgKikKLSAgICAgICAgYXJjaF9lbmFibGVfc3R1YmRvbT1uCi0gICAgICAg IDs7Ci1lc2FjCi0KLWNhc2UgIiRob3N0X29zIiBpbgotICAgIGZyZWVic2QqKQotICAgICAgICBh cmNoX2VuYWJsZV9zdHViZG9tPW4KLSAgICAgICAgOzsKLWVzYWMKLQotCi0KLQotIyBDaGVjayB3 aGV0aGVyIC0tZW5hYmxlLXhlbiB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke2VuYWJsZV94ZW4rc2V0 fSIgPSBzZXQ7IHRoZW4gOgotICBlbmFibGV2YWw9JGVuYWJsZV94ZW47Ci0KLWlmIHRlc3QgIngk ZW5hYmxldmFsIiA9ICJ4eWVzIjsgdGhlbiA6Ci0KLQoteGVuPXkKLVNVQlNZU1RFTVM9IiRTVUJT WVNURU1TIHhlbiIKLQotCi1lbHNlCi0KLWlmIHRlc3QgIngkZW5hYmxldmFsIiA9ICJ4bm8iOyB0 aGVuIDoKLQotCi14ZW49bgotCi0KLWZpCi0KLWZpCi0KLQotZWxzZQotCi0KLXhlbj15Ci1TVUJT WVNURU1TPSIkU1VCU1lTVEVNUyB4ZW4iCi0KLQotZmkKLQotCi1pZiB0ZXN0IC1lICJ4ZW4vY29u ZmlndXJlIjsgdGhlbiA6Ci0KLWlmIHRlc3QgIngkeGVuIiA9ICJ4eSIgfHwgdGVzdCAieCR4ZW4i ID0gIngiIDsgdGhlbgotICAgIHN1YmRpcnM9IiRzdWJkaXJzIHhlbiIKLQotZmkKLQotZmkKLQot Ci0KLQotIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXRvb2xzIHdhcyBnaXZlbi4KLWlmIHRlc3Qg IiR7ZW5hYmxlX3Rvb2xzK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgZW5hYmxldmFsPSRlbmFibGVf dG9vbHM7Ci0KLWlmIHRlc3QgIngkZW5hYmxldmFsIiA9ICJ4eWVzIjsgdGhlbiA6Ci0KLQotdG9v bHM9eQotU1VCU1lTVEVNUz0iJFNVQlNZU1RFTVMgdG9vbHMiCi0KLQotZWxzZQotCi1pZiB0ZXN0 ICJ4JGVuYWJsZXZhbCIgPSAieG5vIjsgdGhlbiA6Ci0KLQotdG9vbHM9bgotCi0KLWZpCi0KLWZp Ci0KLQotZWxzZQotCi0KLXRvb2xzPXkKLVNVQlNZU1RFTVM9IiRTVUJTWVNURU1TIHRvb2xzIgot Ci0KLWZpCi0KLQotaWYgdGVzdCAtZSAidG9vbHMvY29uZmlndXJlIjsgdGhlbiA6Ci0KLWlmIHRl c3QgIngkdG9vbHMiID0gInh5IiB8fCB0ZXN0ICJ4JHRvb2xzIiA9ICJ4IiA7IHRoZW4KLSAgICBz dWJkaXJzPSIkc3ViZGlycyB0b29scyIKLQotZmkKLQotZmkKLQotCi0KLQotIyBDaGVjayB3aGV0 aGVyIC0tZW5hYmxlLXN0dWJkb20gd2FzIGdpdmVuLgotaWYgdGVzdCAiJHtlbmFibGVfc3R1YmRv bStzZXR9IiA9IHNldDsgdGhlbiA6Ci0gIGVuYWJsZXZhbD0kZW5hYmxlX3N0dWJkb207Ci0KLWlm IHRlc3QgIngkZW5hYmxldmFsIiA9ICJ4eWVzIjsgdGhlbiA6Ci0KLQotc3R1YmRvbT15Ci1TVUJT WVNURU1TPSIkU1VCU1lTVEVNUyBzdHViZG9tIgotCi0KLWVsc2UKLQotaWYgdGVzdCAieCRlbmFi bGV2YWwiID0gInhubyI7IHRoZW4gOgotCi0KLXN0dWJkb209bgotCi0KLWZpCi0KLWZpCi0KLQot ZWxzZQotCi1pZiB0ZXN0ICJ4JGFyY2hfZW5hYmxlX3N0dWJkb20iID0gInh5IjsgdGhlbiA6Ci0K LQotc3R1YmRvbT15Ci1TVUJTWVNURU1TPSIkU1VCU1lTVEVNUyBzdHViZG9tIgotCi0KLWVsc2UK LQotCi1zdHViZG9tPW4KLQotCi1maQotCi1maQotCi0KLWlmIHRlc3QgLWUgInN0dWJkb20vY29u ZmlndXJlIjsgdGhlbiA6Ci0KLWlmIHRlc3QgIngkc3R1YmRvbSIgPSAieHkiIHx8IHRlc3QgIngk c3R1YmRvbSIgPSAieCIgOyB0aGVuCi0gICAgc3ViZGlycz0iJHN1YmRpcnMgc3R1YmRvbSIKLQot ZmkKLQotZmkKLQotCi0KLQotIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWRvY3Mgd2FzIGdpdmVu LgotaWYgdGVzdCAiJHtlbmFibGVfZG9jcytzZXR9IiA9IHNldDsgdGhlbiA6Ci0gIGVuYWJsZXZh bD0kZW5hYmxlX2RvY3M7Ci0KLWlmIHRlc3QgIngkZW5hYmxldmFsIiA9ICJ4eWVzIjsgdGhlbiA6 Ci0KLQotZG9jcz15Ci1TVUJTWVNURU1TPSIkU1VCU1lTVEVNUyBkb2NzIgotCi0KLWVsc2UKLQot aWYgdGVzdCAieCRlbmFibGV2YWwiID0gInhubyI7IHRoZW4gOgotCi0KLWRvY3M9bgotCi0KLWZp Ci0KLWZpCi0KLQotZWxzZQotCi0KLWRvY3M9eQotU1VCU1lTVEVNUz0iJFNVQlNZU1RFTVMgZG9j cyIKLQotCi1maQotCi0KLWlmIHRlc3QgLWUgImRvY3MvY29uZmlndXJlIjsgdGhlbiA6Ci0KLWlm IHRlc3QgIngkZG9jcyIgPSAieHkiIHx8IHRlc3QgIngkZG9jcyIgPSAieCIgOyB0aGVuCi0gICAg c3ViZGlycz0iJHN1YmRpcnMgZG9jcyIKLQotZmkKLQotZmkKLQotCi0KLQotCi0KLWVjaG8gIldp bGwgYnVpbGQgdGhlIGZvbGxvd2luZyBzdWJzeXN0ZW1zOiIKLWZvciB4IGluICRTVUJTWVNURU1T OyBkbwotCWVjaG8gIiAgJHgiCi1kb25lCi0KLQotY2F0ID5jb25mY2FjaGUgPDxcX0FDRU9GCi0j IFRoaXMgZmlsZSBpcyBhIHNoZWxsIHNjcmlwdCB0aGF0IGNhY2hlcyB0aGUgcmVzdWx0cyBvZiBj b25maWd1cmUKLSMgdGVzdHMgcnVuIG9uIHRoaXMgc3lzdGVtIHNvIHRoZXkgY2FuIGJlIHNoYXJl ZCBiZXR3ZWVuIGNvbmZpZ3VyZQotIyBzY3JpcHRzIGFuZCBjb25maWd1cmUgcnVucywgc2VlIGNv bmZpZ3VyZSdzIG9wdGlvbiAtLWNvbmZpZy1jYWNoZS4KLSMgSXQgaXMgbm90IHVzZWZ1bCBvbiBv dGhlciBzeXN0ZW1zLiAgSWYgaXQgY29udGFpbnMgcmVzdWx0cyB5b3UgZG9uJ3QKLSMgd2FudCB0 byBrZWVwLCB5b3UgbWF5IHJlbW92ZSBvciBlZGl0IGl0LgotIwotIyBjb25maWcuc3RhdHVzIG9u bHkgcGF5cyBhdHRlbnRpb24gdG8gdGhlIGNhY2hlIGZpbGUgaWYgeW91IGdpdmUgaXQKLSMgdGhl IC0tcmVjaGVjayBvcHRpb24gdG8gcmVydW4gY29uZmlndXJlLgotIwotIyBgYWNfY3ZfZW52X2Zv bycgdmFyaWFibGVzIChzZXQgb3IgdW5zZXQpIHdpbGwgYmUgb3ZlcnJpZGRlbiB3aGVuCi0jIGxv YWRpbmcgdGhpcyBmaWxlLCBvdGhlciAqdW5zZXQqIGBhY19jdl9mb28nIHdpbGwgYmUgYXNzaWdu ZWQgdGhlCi0jIGZvbGxvd2luZyB2YWx1ZXMuCi0KLV9BQ0VPRgotCi0jIFRoZSBmb2xsb3dpbmcg d2F5IG9mIHdyaXRpbmcgdGhlIGNhY2hlIG1pc2hhbmRsZXMgbmV3bGluZXMgaW4gdmFsdWVzLAot IyBidXQgd2Uga25vdyBvZiBubyB3b3JrYXJvdW5kIHRoYXQgaXMgc2ltcGxlLCBwb3J0YWJsZSwg YW5kIGVmZmljaWVudC4KLSMgU28sIHdlIGtpbGwgdmFyaWFibGVzIGNvbnRhaW5pbmcgbmV3bGlu ZXMuCi0jIFVsdHJpeCBzaCBzZXQgd3JpdGVzIHRvIHN0ZGVyciBhbmQgY2FuJ3QgYmUgcmVkaXJl Y3RlZCBkaXJlY3RseSwKLSMgYW5kIHNldHMgdGhlIGhpZ2ggYml0IGluIHRoZSBjYWNoZSBmaWxl IHVubGVzcyB3ZSBhc3NpZ24gdG8gdGhlIHZhcnMuCi0oCi0gIGZvciBhY192YXIgaW4gYChzZXQp IDI+JjEgfCBzZWQgLW4gJ3MvXlwoW2EtekEtWl9dW2EtekEtWjAtOV9dKlwpPS4qL1wxL3AnYDsg ZG8KLSAgICBldmFsIGFjX3ZhbD1cJCRhY192YXIKLSAgICBjYXNlICRhY192YWwgaW4gIygKLSAg ICAqJHthc19ubH0qKQotICAgICAgY2FzZSAkYWNfdmFyIGluICMoCi0gICAgICAqX2N2XyopIHsg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogY2FjaGUgdmFy aWFibGUgJGFjX3ZhciBjb250YWlucyBhIG5ld2xpbmUiID4mNQotJGFzX2VjaG8gIiRhc19tZTog V0FSTklORzogY2FjaGUgdmFyaWFibGUgJGFjX3ZhciBjb250YWlucyBhIG5ld2xpbmUiID4mMjt9 IDs7Ci0gICAgICBlc2FjCi0gICAgICBjYXNlICRhY192YXIgaW4gIygKLSAgICAgIF8gfCBJRlMg fCBhc19ubCkgOzsgIygKLSAgICAgIEJBU0hfQVJHViB8IEJBU0hfU09VUkNFKSBldmFsICRhY192 YXI9IDs7ICMoCi0gICAgICAqKSB7IGV2YWwgJGFjX3Zhcj07IHVuc2V0ICRhY192YXI7fSA7Owot ICAgICAgZXNhYyA7OwotICAgIGVzYWMKLSAgZG9uZQotCi0gIChzZXQpIDI+JjEgfAotICAgIGNh c2UgJGFzX25sYChhY19zcGFjZT0nICc7IHNldCkgMj4mMWAgaW4gIygKLSAgICAqJHthc19ubH1h Y19zcGFjZT1cICopCi0gICAgICAjIGBzZXQnIGRvZXMgbm90IHF1b3RlIGNvcnJlY3RseSwgc28g YWRkIHF1b3RlczogZG91YmxlLXF1b3RlCi0gICAgICAjIHN1YnN0aXR1dGlvbiB0dXJucyBcXFxc IGludG8gXFwsIGFuZCBzZWQgdHVybnMgXFwgaW50byBcLgotICAgICAgc2VkIC1uIFwKLQkicy8n LydcXFxcJycvZzsKLQkgIHMvXlxcKFtfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1d KlxcKT1cXCguKlxcKS9cXDE9J1xcMicvcCIKLSAgICAgIDs7ICMoCi0gICAgKikKLSAgICAgICMg YHNldCcgcXVvdGVzIGNvcnJlY3RseSBhcyByZXF1aXJlZCBieSBQT1NJWCwgc28gZG8gbm90IGFk ZCBxdW90ZXMuCi0gICAgICBzZWQgLW4gIi9eW18kYXNfY3JfYWxudW1dKl9jdl9bXyRhc19jcl9h bG51bV0qPS9wIgotICAgICAgOzsKLSAgICBlc2FjIHwKLSAgICBzb3J0Ci0pIHwKLSAgc2VkICcK LSAgICAgL15hY19jdl9lbnZfL2IgZW5kCi0gICAgIHQgY2xlYXIKLSAgICAgOmNsZWFyCi0gICAg IHMvXlwoW149XSpcKT1cKC4qW3t9XS4qXCkkL3Rlc3QgIiR7XDErc2V0fSIgPSBzZXQgfHwgJi8K LSAgICAgdCBlbmQKLSAgICAgcy9eXChbXj1dKlwpPVwoLipcKSQvXDE9JHtcMT1cMn0vCi0gICAg IDplbmQnID4+Y29uZmNhY2hlCi1pZiBkaWZmICIkY2FjaGVfZmlsZSIgY29uZmNhY2hlID4vZGV2 L251bGwgMj4mMTsgdGhlbiA6OyBlbHNlCi0gIGlmIHRlc3QgLXcgIiRjYWNoZV9maWxlIjsgdGhl bgotICAgIGlmIHRlc3QgIngkY2FjaGVfZmlsZSIgIT0gIngvZGV2L251bGwiOyB0aGVuCi0gICAg ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHVwZGF0aW5nIGNhY2hl ICRjYWNoZV9maWxlIiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IHVwZGF0aW5nIGNhY2hlICRjYWNo ZV9maWxlIiA+JjY7fQotICAgICAgaWYgdGVzdCAhIC1mICIkY2FjaGVfZmlsZSIgfHwgdGVzdCAt aCAiJGNhY2hlX2ZpbGUiOyB0aGVuCi0JY2F0IGNvbmZjYWNoZSA+IiRjYWNoZV9maWxlIgotICAg ICAgZWxzZQotICAgICAgICBjYXNlICRjYWNoZV9maWxlIGluICMoCi0gICAgICAgICovKiB8ID86 KikKLQkgIG12IC1mIGNvbmZjYWNoZSAiJGNhY2hlX2ZpbGUiJCQgJiYKLQkgIG12IC1mICIkY2Fj aGVfZmlsZSIkJCAiJGNhY2hlX2ZpbGUiIDs7ICMoCi0gICAgICAgICopCi0JICBtdiAtZiBjb25m Y2FjaGUgIiRjYWNoZV9maWxlIiA7OwotCWVzYWMKLSAgICAgIGZpCi0gICAgZmkKLSAgZWxzZQot ICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogbm90IHVwZGF0aW5n IHVud3JpdGFibGUgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNQotJGFzX2VjaG8gIiRhc19tZTogbm90 IHVwZGF0aW5nIHVud3JpdGFibGUgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNjt9Ci0gIGZpCi1maQot cm0gLWYgY29uZmNhY2hlCi0KLXRlc3QgIngkcHJlZml4IiA9IHhOT05FICYmIHByZWZpeD0kYWNf ZGVmYXVsdF9wcmVmaXgKLSMgTGV0IG1ha2UgZXhwYW5kIGV4ZWNfcHJlZml4LgotdGVzdCAieCRl eGVjX3ByZWZpeCIgPSB4Tk9ORSAmJiBleGVjX3ByZWZpeD0nJHtwcmVmaXh9JwotCi0jIFRyYW5z Zm9ybSBjb25mZGVmcy5oIGludG8gREVGUy4KLSMgUHJvdGVjdCBhZ2FpbnN0IHNoZWxsIGV4cGFu c2lvbiB3aGlsZSBleGVjdXRpbmcgTWFrZWZpbGUgcnVsZXMuCi0jIFByb3RlY3QgYWdhaW5zdCBN YWtlZmlsZSBtYWNybyBleHBhbnNpb24uCi0jCi0jIElmIHRoZSBmaXJzdCBzZWQgc3Vic3RpdHV0 aW9uIGlzIGV4ZWN1dGVkICh3aGljaCBsb29rcyBmb3IgbWFjcm9zIHRoYXQKLSMgdGFrZSBhcmd1 bWVudHMpLCB0aGVuIGJyYW5jaCB0byB0aGUgcXVvdGUgc2VjdGlvbi4gIE90aGVyd2lzZSwKLSMg bG9vayBmb3IgYSBtYWNybyB0aGF0IGRvZXNuJ3QgdGFrZSBhcmd1bWVudHMuCi1hY19zY3JpcHQ9 JwotOm1saW5lCi0vXFwkL3sKLSBOCi0gcyxcXFxuLCwKLSBiIG1saW5lCi19Ci10IGNsZWFyCi06 Y2xlYXIKLXMvXlsJIF0qI1sJIF0qZGVmaW5lWwkgXVsJIF0qXChbXgkgKF1bXgkgKF0qKFteKV0q KVwpWwkgXSpcKC4qXCkvLURcMT1cMi9nCi10IHF1b3RlCi1zL15bCSBdKiNbCSBdKmRlZmluZVsJ IF1bCSBdKlwoW14JIF1bXgkgXSpcKVsJIF0qXCguKlwpLy1EXDE9XDIvZwotdCBxdW90ZQotYiBh bnkKLTpxdW90ZQotcy9bCSBgfiMkXiYqKCl7fVxcfDsnXCcnIjw+P10vXFwmL2cKLXMvXFsvXFwm L2cKLXMvXF0vXFwmL2cKLXMvXCQvJCQvZwotSAotOmFueQotJHsKLQlnCi0Jcy9eXG4vLwotCXMv XG4vIC9nCi0JcAotfQotJwotREVGUz1gc2VkIC1uICIkYWNfc2NyaXB0IiBjb25mZGVmcy5oYAot Ci0KLWFjX2xpYm9ianM9Ci1hY19sdGxpYm9ianM9Ci1VPQotZm9yIGFjX2kgaW4gOiAkTElCT0JK UzsgZG8gdGVzdCAieCRhY19pIiA9IHg6ICYmIGNvbnRpbnVlCi0gICMgMS4gUmVtb3ZlIHRoZSBl eHRlbnNpb24sIGFuZCAkVSBpZiBhbHJlYWR5IGluc3RhbGxlZC4KLSAgYWNfc2NyaXB0PSdzL1wk VVwuLy4vO3MvXC5vJC8vO3MvXC5vYmokLy8nCi0gIGFjX2k9YCRhc19lY2hvICIkYWNfaSIgfCBz ZWQgIiRhY19zY3JpcHQiYAotICAjIDIuIFByZXBlbmQgTElCT0JKRElSLiAgV2hlbiB1c2VkIHdp dGggYXV0b21ha2U+PTEuMTAgTElCT0JKRElSCi0gICMgICAgd2lsbCBiZSBzZXQgdG8gdGhlIGRp cmVjdG9yeSB3aGVyZSBMSUJPQkpTIG9iamVjdHMgYXJlIGJ1aWx0LgotICBhc19mbl9hcHBlbmQg YWNfbGlib2JqcyAiIFwke0xJQk9CSkRJUn0kYWNfaVwkVS4kYWNfb2JqZXh0IgotICBhc19mbl9h cHBlbmQgYWNfbHRsaWJvYmpzICIgXCR7TElCT0JKRElSfSRhY19pIickVS5sbycKLWRvbmUKLUxJ Qk9CSlM9JGFjX2xpYm9ianMKLQotTFRMSUJPQkpTPSRhY19sdGxpYm9ianMKLQotCi0KLTogIiR7 Q09ORklHX1NUQVRVUz0uL2NvbmZpZy5zdGF0dXN9IgotYWNfd3JpdGVfZmFpbD0wCi1hY19jbGVh bl9maWxlc19zYXZlPSRhY19jbGVhbl9maWxlcwotYWNfY2xlYW5fZmlsZXM9IiRhY19jbGVhbl9m aWxlcyAkQ09ORklHX1NUQVRVUyIKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogY3JlYXRpbmcgJENPTkZJR19TVEFUVVMiID4mNQotJGFzX2VjaG8gIiRhc19tZTogY3Jl YXRpbmcgJENPTkZJR19TVEFUVVMiID4mNjt9Ci1hc193cml0ZV9mYWlsPTAKLWNhdCA+JENPTkZJ R19TVEFUVVMgPDxfQVNFT0YgfHwgYXNfd3JpdGVfZmFpbD0xCi0jISAkU0hFTEwKLSMgR2VuZXJh dGVkIGJ5ICRhc19tZS4KLSMgUnVuIHRoaXMgZmlsZSB0byByZWNyZWF0ZSB0aGUgY3VycmVudCBj b25maWd1cmF0aW9uLgotIyBDb21waWxlciBvdXRwdXQgcHJvZHVjZWQgYnkgY29uZmlndXJlLCB1 c2VmdWwgZm9yIGRlYnVnZ2luZwotIyBjb25maWd1cmUsIGlzIGluIGNvbmZpZy5sb2cgaWYgaXQg ZXhpc3RzLgotCi1kZWJ1Zz1mYWxzZQotYWNfY3NfcmVjaGVjaz1mYWxzZQotYWNfY3Nfc2lsZW50 PWZhbHNlCi0KLVNIRUxMPVwke0NPTkZJR19TSEVMTC0kU0hFTEx9Ci1leHBvcnQgU0hFTEwKLV9B U0VPRgotY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FTRU9GIHx8IGFzX3dyaXRlX2ZhaWw9MQot IyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLSMjIE00c2ggSW5pdGlhbGl6YXRpb24uICMjCi0j IyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotCi0jIEJlIG1vcmUgQm91cm5lIGNvbXBhdGlibGUK LURVQUxDQVNFPTE7IGV4cG9ydCBEVUFMQ0FTRSAjIGZvciBNS1Mgc2gKLWlmIHRlc3QgLW4gIiR7 WlNIX1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbiA6 Ci0gIGVtdWxhdGUgc2gKLSAgTlVMTENNRD06Ci0gICMgUHJlLTQuMiB2ZXJzaW9ucyBvZiBac2gg ZG8gd29yZCBzcGxpdHRpbmcgb24gJHsxKyIkQCJ9LCB3aGljaAotICAjIGlzIGNvbnRyYXJ5IHRv IG91ciB1c2FnZS4gIERpc2FibGUgdGhpcyBmZWF0dXJlLgotICBhbGlhcyAtZyAnJHsxKyIkQCJ9 Jz0nIiRAIicKLSAgc2V0b3B0IE5PX0dMT0JfU1VCU1QKLWVsc2UKLSAgY2FzZSBgKHNldCAtbykg Mj4vZGV2L251bGxgIGluICMoCi0gICpwb3NpeCopIDoKLSAgICBzZXQgLW8gcG9zaXggOzsgIygK LSAgKikgOgotICAgICA7OwotZXNhYwotZmkKLQotCi1hc19ubD0nCi0nCi1leHBvcnQgYXNfbmwK LSMgUHJpbnRpbmcgYSBsb25nIHN0cmluZyBjcmFzaGVzIFNvbGFyaXMgNyAvdXNyL2Jpbi9wcmlu dGYuCi1hc19lY2hvPSdcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc XFxcJwotYXNfZWNobz0kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvCi1h c19lY2hvPSRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobwot IyBQcmVmZXIgYSBrc2ggc2hlbGwgYnVpbHRpbiBvdmVyIGFuIGV4dGVybmFsIHByaW50ZiBwcm9n cmFtIG9uIFNvbGFyaXMsCi0jIGJ1dCB3aXRob3V0IHdhc3RpbmcgZm9ya3MgZm9yIGJhc2ggb3Ig enNoLgotaWYgdGVzdCAteiAiJEJBU0hfVkVSU0lPTiRaU0hfVkVSU0lPTiIgXAotICAgICYmICh0 ZXN0ICJYYHByaW50IC1yIC0tICRhc19lY2hvYCIgPSAiWCRhc19lY2hvIikgMj4vZGV2L251bGw7 IHRoZW4KLSAgYXNfZWNobz0ncHJpbnQgLXIgLS0nCi0gIGFzX2VjaG9fbj0ncHJpbnQgLXJuIC0t JwotZWxpZiAodGVzdCAiWGBwcmludGYgJXMgJGFzX2VjaG9gIiA9ICJYJGFzX2VjaG8iKSAyPi9k ZXYvbnVsbDsgdGhlbgotICBhc19lY2hvPSdwcmludGYgJXNcbicKLSAgYXNfZWNob19uPSdwcmlu dGYgJXMnCi1lbHNlCi0gIGlmIHRlc3QgIlhgKC91c3IvdWNiL2VjaG8gLW4gLW4gJGFzX2VjaG8p IDI+L2Rldi9udWxsYCIgPSAiWC1uICRhc19lY2hvIjsgdGhlbgotICAgIGFzX2VjaG9fYm9keT0n ZXZhbCAvdXNyL3VjYi9lY2hvIC1uICIkMSRhc19ubCInCi0gICAgYXNfZWNob19uPScvdXNyL3Vj Yi9lY2hvIC1uJwotICBlbHNlCi0gICAgYXNfZWNob19ib2R5PSdldmFsIGV4cHIgIlgkMSIgOiAi WFxcKC4qXFwpIicKLSAgICBhc19lY2hvX25fYm9keT0nZXZhbAotICAgICAgYXJnPSQxOwotICAg ICAgY2FzZSAkYXJnIGluICMoCi0gICAgICAqIiRhc19ubCIqKQotCWV4cHIgIlgkYXJnIiA6ICJY XFwoLipcXCkkYXNfbmwiOwotCWFyZz1gZXhwciAiWCRhcmciIDogIi4qJGFzX25sXFwoLipcXCki YDs7Ci0gICAgICBlc2FjOwotICAgICAgZXhwciAiWCRhcmciIDogIlhcXCguKlxcKSIgfCB0ciAt ZCAiJGFzX25sIgotICAgICcKLSAgICBleHBvcnQgYXNfZWNob19uX2JvZHkKLSAgICBhc19lY2hv X249J3NoIC1jICRhc19lY2hvX25fYm9keSBhc19lY2hvJwotICBmaQotICBleHBvcnQgYXNfZWNo b19ib2R5Ci0gIGFzX2VjaG89J3NoIC1jICRhc19lY2hvX2JvZHkgYXNfZWNobycKLWZpCi0KLSMg VGhlIHVzZXIgaXMgYWx3YXlzIHJpZ2h0LgotaWYgdGVzdCAiJHtQQVRIX1NFUEFSQVRPUitzZXR9 IiAhPSBzZXQ7IHRoZW4KLSAgUEFUSF9TRVBBUkFUT1I9OgotICAoUEFUSD0nL2JpbjsvYmluJzsg RlBBVEg9JFBBVEg7IHNoIC1jIDopID4vZGV2L251bGwgMj4mMSAmJiB7Ci0gICAgKFBBVEg9Jy9i aW46L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+JjEgfHwKLSAgICAg IFBBVEhfU0VQQVJBVE9SPSc7JwotICB9Ci1maQotCi0KLSMgSUZTCi0jIFdlIG5lZWQgc3BhY2Us IHRhYiBhbmQgbmV3IGxpbmUsIGluIHByZWNpc2VseSB0aGF0IG9yZGVyLiAgUXVvdGluZyBpcwot IyB0aGVyZSB0byBwcmV2ZW50IGVkaXRvcnMgZnJvbSBjb21wbGFpbmluZyBhYm91dCBzcGFjZS10 YWIuCi0jIChJZiBfQVNfUEFUSF9XQUxLIHdlcmUgY2FsbGVkIHdpdGggSUZTIHVuc2V0LCBpdCB3 b3VsZCBkaXNhYmxlIHdvcmQKLSMgc3BsaXR0aW5nIGJ5IHNldHRpbmcgSUZTIHRvIGVtcHR5IHZh bHVlLikKLUlGUz0iICIiCSRhc19ubCIKLQotIyBGaW5kIHdobyB3ZSBhcmUuICBMb29rIGluIHRo ZSBwYXRoIGlmIHdlIGNvbnRhaW4gbm8gZGlyZWN0b3J5IHNlcGFyYXRvci4KLWFzX215c2VsZj0K LWNhc2UgJDAgaW4gIygoCi0gICpbXFwvXSogKSBhc19teXNlbGY9JDAgOzsKLSAgKikgYXNfc2F2 ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotZm9yIGFzX2RpciBpbiAkUEFUSAotZG8K LSAgSUZTPSRhc19zYXZlX0lGUwotICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAg IHRlc3QgLXIgIiRhc19kaXIvJDAiICYmIGFzX215c2VsZj0kYXNfZGlyLyQwICYmIGJyZWFrCi0g IGRvbmUKLUlGUz0kYXNfc2F2ZV9JRlMKLQotICAgICA7OwotZXNhYwotIyBXZSBkaWQgbm90IGZp bmQgb3Vyc2VsdmVzLCBtb3N0IHByb2JhYmx5IHdlIHdlcmUgcnVuIGFzIGBzaCBDT01NQU5EJwot IyBpbiB3aGljaCBjYXNlIHdlIGFyZSBub3QgdG8gYmUgZm91bmQgaW4gdGhlIHBhdGguCi1pZiB0 ZXN0ICJ4JGFzX215c2VsZiIgPSB4OyB0aGVuCi0gIGFzX215c2VsZj0kMAotZmkKLWlmIHRlc3Qg ISAtZiAiJGFzX215c2VsZiI7IHRoZW4KLSAgJGFzX2VjaG8gIiRhc19teXNlbGY6IGVycm9yOiBj YW5ub3QgZmluZCBteXNlbGY7IHJlcnVuIHdpdGggYW4gYWJzb2x1dGUgZmlsZSBuYW1lIiA+JjIK LSAgZXhpdCAxCi1maQotCi0jIFVuc2V0IHZhcmlhYmxlcyB0aGF0IHdlIGRvIG5vdCBuZWVkIGFu ZCB3aGljaCBjYXVzZSBidWdzIChlLmcuIGluCi0jIHByZS0zLjAgVVdJTiBrc2gpLiAgQnV0IGRv IG5vdCBjYXVzZSBidWdzIGluIGJhc2ggMi4wMTsgdGhlICJ8fCBleGl0IDEiCi0jIHN1cHByZXNz ZXMgYW55ICJTZWdtZW50YXRpb24gZmF1bHQiIG1lc3NhZ2UgdGhlcmUuICAnKCgnIGNvdWxkCi0j IHRyaWdnZXIgYSBidWcgaW4gcGRrc2ggNS4yLjE0LgotZm9yIGFzX3ZhciBpbiBCQVNIX0VOViBF TlYgTUFJTCBNQUlMUEFUSAotZG8gZXZhbCB0ZXN0IHhcJHskYXNfdmFyK3NldH0gPSB4c2V0IFwK LSAgJiYgKCAodW5zZXQgJGFzX3ZhcikgfHwgZXhpdCAxKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5z ZXQgJGFzX3ZhciB8fCA6Ci1kb25lCi1QUzE9JyQgJwotUFMyPSc+ICcKLVBTND0nKyAnCi0KLSMg TkxTIG51aXNhbmNlcy4KLUxDX0FMTD1DCi1leHBvcnQgTENfQUxMCi1MQU5HVUFHRT1DCi1leHBv cnQgTEFOR1VBR0UKLQotIyBDRFBBVEguCi0odW5zZXQgQ0RQQVRIKSA+L2Rldi9udWxsIDI+JjEg JiYgdW5zZXQgQ0RQQVRICi0KLQotIyBhc19mbl9lcnJvciBTVEFUVVMgRVJST1IgW0xJTkVOTyBM T0dfRkRdCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgT3V0 cHV0ICJgYmFzZW5hbWUgJDBgOiBlcnJvcjogRVJST1IiIHRvIHN0ZGVyci4gSWYgTElORU5PIGFu ZCBMT0dfRkQgYXJlCi0jIHByb3ZpZGVkLCBhbHNvIG91dHB1dCB0aGUgZXJyb3IgdG8gTE9HX0ZE LCByZWZlcmVuY2luZyBMSU5FTk8uIFRoZW4gZXhpdCB0aGUKLSMgc2NyaXB0IHdpdGggU1RBVFVT LCB1c2luZyAxIGlmIHRoYXQgd2FzIDAuCi1hc19mbl9lcnJvciAoKQotewotICBhc19zdGF0dXM9 JDE7IHRlc3QgJGFzX3N0YXR1cyAtZXEgMCAmJiBhc19zdGF0dXM9MQotICBpZiB0ZXN0ICIkNCI7 IHRoZW4KLSAgICBhc19saW5lbm89JHthc19saW5lbm8tIiQzIn0gYXNfbGluZW5vX3N0YWNrPWFz X2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCi0gICAgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogZXJyb3I6ICQyIiA+JiQ0Ci0gIGZpCi0gICRhc19lY2hvICIkYXNf bWU6IGVycm9yOiAkMiIgPiYyCi0gIGFzX2ZuX2V4aXQgJGFzX3N0YXR1cwotfSAjIGFzX2ZuX2Vy cm9yCi0KLQotIyBhc19mbl9zZXRfc3RhdHVzIFNUQVRVUwotIyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQotIyBTZXQgJD8gdG8gU1RBVFVTLCB3aXRob3V0IGZvcmtpbmcuCi1hc19mbl9zZXRfc3Rh dHVzICgpCi17Ci0gIHJldHVybiAkMQotfSAjIGFzX2ZuX3NldF9zdGF0dXMKLQotIyBhc19mbl9l eGl0IFNUQVRVUwotIyAtLS0tLS0tLS0tLS0tLS0tLQotIyBFeGl0IHRoZSBzaGVsbCB3aXRoIFNU QVRVUywgZXZlbiBpbiBhICJ0cmFwIDAiIG9yICJzZXQgLWUiIGNvbnRleHQuCi1hc19mbl9leGl0 ICgpCi17Ci0gIHNldCArZQotICBhc19mbl9zZXRfc3RhdHVzICQxCi0gIGV4aXQgJDEKLX0gIyBh c19mbl9leGl0Ci0KLSMgYXNfZm5fdW5zZXQgVkFSCi0jIC0tLS0tLS0tLS0tLS0tLQotIyBQb3J0 YWJseSB1bnNldCBWQVIuCi1hc19mbl91bnNldCAoKQotewotICB7IGV2YWwgJDE9OyB1bnNldCAk MTt9Ci19Ci1hc191bnNldD1hc19mbl91bnNldAotIyBhc19mbl9hcHBlbmQgVkFSIFZBTFVFCi0j IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQXBwZW5kIHRoZSB0ZXh0IGluIFZBTFVFIHRvIHRo ZSBlbmQgb2YgdGhlIGRlZmluaXRpb24gY29udGFpbmVkIGluIFZBUi4gVGFrZQotIyBhZHZhbnRh Z2Ugb2YgYW55IHNoZWxsIG9wdGltaXphdGlvbnMgdGhhdCBhbGxvdyBhbW9ydGl6ZWQgbGluZWFy IGdyb3d0aCBvdmVyCi0jIHJlcGVhdGVkIGFwcGVuZHMsIGluc3RlYWQgb2YgdGhlIHR5cGljYWwg cXVhZHJhdGljIGdyb3d0aCBwcmVzZW50IGluIG5haXZlCi0jIGltcGxlbWVudGF0aW9ucy4KLWlm IChldmFsICJhc192YXI9MTsgYXNfdmFyKz0yOyB0ZXN0IHhcJGFzX3ZhciA9IHgxMiIpIDI+L2Rl di9udWxsOyB0aGVuIDoKLSAgZXZhbCAnYXNfZm5fYXBwZW5kICgpCi0gIHsKLSAgICBldmFsICQx Kz1cJDIKLSAgfScKLWVsc2UKLSAgYXNfZm5fYXBwZW5kICgpCi0gIHsKLSAgICBldmFsICQxPVwk JDFcJDIKLSAgfQotZmkgIyBhc19mbl9hcHBlbmQKLQotIyBhc19mbl9hcml0aCBBUkcuLi4KLSMg LS0tLS0tLS0tLS0tLS0tLS0tCi0jIFBlcmZvcm0gYXJpdGhtZXRpYyBldmFsdWF0aW9uIG9uIHRo ZSBBUkdzLCBhbmQgc3RvcmUgdGhlIHJlc3VsdCBpbiB0aGUKLSMgZ2xvYmFsICRhc192YWwuIFRh a2UgYWR2YW50YWdlIG9mIHNoZWxscyB0aGF0IGNhbiBhdm9pZCBmb3Jrcy4gVGhlIGFyZ3VtZW50 cwotIyBtdXN0IGJlIHBvcnRhYmxlIGFjcm9zcyAkKCgpKSBhbmQgZXhwci4KLWlmIChldmFsICJ0 ZXN0IFwkKCggMSArIDEgKSkgPSAyIikgMj4vZGV2L251bGw7IHRoZW4gOgotICBldmFsICdhc19m bl9hcml0aCAoKQotICB7Ci0gICAgYXNfdmFsPSQoKCAkKiApKQotICB9JwotZWxzZQotICBhc19m bl9hcml0aCAoKQotICB7Ci0gICAgYXNfdmFsPWBleHByICIkQCIgfHwgdGVzdCAkPyAtZXEgMWAK LSAgfQotZmkgIyBhc19mbl9hcml0aAotCi0KLWlmIGV4cHIgYSA6ICdcKGFcKScgPi9kZXYvbnVs bCAyPiYxICYmCi0gICB0ZXN0ICJYYGV4cHIgMDAwMDEgOiAnLipcKC4uLlwpJ2AiID0gWDAwMTsg dGhlbgotICBhc19leHByPWV4cHIKLWVsc2UKLSAgYXNfZXhwcj1mYWxzZQotZmkKLQotaWYgKGJh c2VuYW1lIC0tIC8pID4vZGV2L251bGwgMj4mMSAmJiB0ZXN0ICJYYGJhc2VuYW1lIC0tIC8gMj4m MWAiID0gIlgvIjsgdGhlbgotICBhc19iYXNlbmFtZT1iYXNlbmFtZQotZWxzZQotICBhc19iYXNl bmFtZT1mYWxzZQotZmkKLQotaWYgKGFzX2Rpcj1gZGlybmFtZSAtLSAvYCAmJiB0ZXN0ICJYJGFz X2RpciIgPSBYLykgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gIGFzX2Rpcm5hbWU9ZGlybmFtZQot ZWxzZQotICBhc19kaXJuYW1lPWZhbHNlCi1maQotCi1hc19tZT1gJGFzX2Jhc2VuYW1lIC0tICIk MCIgfHwKLSRhc19leHByIFgvIiQwIiA6ICcuKi9cKFteL11bXi9dKlwpLyokJyBcfCBcCi0JIFgi JDAiIDogJ1hcKC8vXCkkJyBcfCBcCi0JIFgiJDAiIDogJ1hcKC9cKScgXHwgLiAyPi9kZXYvbnVs bCB8fAotJGFzX2VjaG8gWC8iJDAiIHwKLSAgICBzZWQgJy9eLipcL1woW14vXVteL10qXClcLyok L3sKLQkgICAgcy8vXDEvCi0JICAgIHEKLQkgIH0KLQkgIC9eWFwvXChcL1wvXCkkL3sKLQkgICAg cy8vXDEvCi0JICAgIHEKLQkgIH0KLQkgIC9eWFwvXChcL1wpLiovewotCSAgICBzLy9cMS8KLQkg ICAgcQotCSAgfQotCSAgcy8uKi8uLzsgcSdgCi0KLSMgQXZvaWQgZGVwZW5kaW5nIHVwb24gQ2hh cmFjdGVyIFJhbmdlcy4KLWFzX2NyX2xldHRlcnM9J2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6 JwotYXNfY3JfTEVUVEVSUz0nQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonCi1hc19jcl9MZXR0 ZXJzPSRhc19jcl9sZXR0ZXJzJGFzX2NyX0xFVFRFUlMKLWFzX2NyX2RpZ2l0cz0nMDEyMzQ1Njc4 OScKLWFzX2NyX2FsbnVtPSRhc19jcl9MZXR0ZXJzJGFzX2NyX2RpZ2l0cwotCi1FQ0hPX0M9IEVD SE9fTj0gRUNIT19UPQotY2FzZSBgZWNobyAtbiB4YCBpbiAjKCgoKCgKLS1uKikKLSAgY2FzZSBg ZWNobyAneHlcYydgIGluCi0gICpjKikgRUNIT19UPScJJzs7CSMgRUNIT19UIGlzIHNpbmdsZSB0 YWIgY2hhcmFjdGVyLgotICB4eSkgIEVDSE9fQz0nXGMnOzsKLSAgKikgICBlY2hvIGBlY2hvIGtz aDg4IGJ1ZyBvbiBBSVggNi4xYCA+IC9kZXYvbnVsbAotICAgICAgIEVDSE9fVD0nCSc7OwotICBl c2FjOzsKLSopCi0gIEVDSE9fTj0nLW4nOzsKLWVzYWMKLQotcm0gLWYgY29uZiQkIGNvbmYkJC5l eGUgY29uZiQkLmZpbGUKLWlmIHRlc3QgLWQgY29uZiQkLmRpcjsgdGhlbgotICBybSAtZiBjb25m JCQuZGlyL2NvbmYkJC5maWxlCi1lbHNlCi0gIHJtIC1mIGNvbmYkJC5kaXIKLSAgbWtkaXIgY29u ZiQkLmRpciAyPi9kZXYvbnVsbAotZmkKLWlmIChlY2hvID5jb25mJCQuZmlsZSkgMj4vZGV2L251 bGw7IHRoZW4KLSAgaWYgbG4gLXMgY29uZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVu Ci0gICAgYXNfbG5fcz0nbG4gLXMnCi0gICAgIyAuLi4gYnV0IHRoZXJlIGFyZSB0d28gZ290Y2hh czoKLSAgICAjIDEpIE9uIE1TWVMsIGJvdGggYGxuIC1zIGZpbGUgZGlyJyBhbmQgYGxuIGZpbGUg ZGlyJyBmYWlsLgotICAgICMgMikgREpHUFAgPCAyLjA0IGhhcyBubyBzeW1saW5rczsgYGxuIC1z JyBjcmVhdGVzIGEgd3JhcHBlciBleGVjdXRhYmxlLgotICAgICMgSW4gYm90aCBjYXNlcywgd2Ug aGF2ZSB0byBkZWZhdWx0IHRvIGBjcCAtcFInLgotICAgIGxuIC1zIGNvbmYkJC5maWxlIGNvbmYk JC5kaXIgMj4vZGV2L251bGwgJiYgdGVzdCAhIC1mIGNvbmYkJC5leGUgfHwKLSAgICAgIGFzX2xu X3M9J2NwIC1wUicKLSAgZWxpZiBsbiBjb25mJCQuZmlsZSBjb25mJCQgMj4vZGV2L251bGw7IHRo ZW4KLSAgICBhc19sbl9zPWxuCi0gIGVsc2UKLSAgICBhc19sbl9zPSdjcCAtcFInCi0gIGZpCi1l bHNlCi0gIGFzX2xuX3M9J2NwIC1wUicKLWZpCi1ybSAtZiBjb25mJCQgY29uZiQkLmV4ZSBjb25m JCQuZGlyL2NvbmYkJC5maWxlIGNvbmYkJC5maWxlCi1ybWRpciBjb25mJCQuZGlyIDI+L2Rldi9u dWxsCi0KLQotIyBhc19mbl9ta2Rpcl9wCi0jIC0tLS0tLS0tLS0tLS0KLSMgQ3JlYXRlICIkYXNf ZGlyIiBhcyBhIGRpcmVjdG9yeSwgaW5jbHVkaW5nIHBhcmVudHMgaWYgbmVjZXNzYXJ5LgotYXNf Zm5fbWtkaXJfcCAoKQotewotCi0gIGNhc2UgJGFzX2RpciBpbiAjKAotICAtKikgYXNfZGlyPS4v JGFzX2Rpcjs7Ci0gIGVzYWMKLSAgdGVzdCAtZCAiJGFzX2RpciIgfHwgZXZhbCAkYXNfbWtkaXJf cCB8fCB7Ci0gICAgYXNfZGlycz0KLSAgICB3aGlsZSA6OyBkbwotICAgICAgY2FzZSAkYXNfZGly IGluICMoCi0gICAgICAqXCcqKSBhc19xZGlyPWAkYXNfZWNobyAiJGFzX2RpciIgfCBzZWQgInMv Jy8nXFxcXFxcXFwnJy9nImA7OyAjJygKLSAgICAgICopIGFzX3FkaXI9JGFzX2Rpcjs7Ci0gICAg ICBlc2FjCi0gICAgICBhc19kaXJzPSInJGFzX3FkaXInICRhc19kaXJzIgotICAgICAgYXNfZGly PWAkYXNfZGlybmFtZSAtLSAiJGFzX2RpciIgfHwKLSRhc19leHByIFgiJGFzX2RpciIgOiAnWFwo LipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwKLQkgWCIkYXNfZGlyIiA6ICdYXCgvL1wpW14v XScgXHwgXAotCSBYIiRhc19kaXIiIDogJ1hcKC8vXCkkJyBcfCBcCi0JIFgiJGFzX2RpciIgOiAn WFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8Ci0kYXNfZWNobyBYIiRhc19kaXIiIHwKLSAgICBz ZWQgJy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQvewotCSAgICBzLy9cMS8KLQkgICAg cQotCSAgfQotCSAgL15YXChcL1wvXClbXi9dLiovewotCSAgICBzLy9cMS8KLQkgICAgcQotCSAg fQotCSAgL15YXChcL1wvXCkkL3sKLQkgICAgcy8vXDEvCi0JICAgIHEKLQkgIH0KLQkgIC9eWFwo XC9cKS4qL3sKLQkgICAgcy8vXDEvCi0JICAgIHEKLQkgIH0KLQkgIHMvLiovLi87IHEnYAotICAg ICAgdGVzdCAtZCAiJGFzX2RpciIgJiYgYnJlYWsKLSAgICBkb25lCi0gICAgdGVzdCAteiAiJGFz X2RpcnMiIHx8IGV2YWwgIm1rZGlyICRhc19kaXJzIgotICB9IHx8IHRlc3QgLWQgIiRhc19kaXIi IHx8IGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgY3JlYXRlIGRpcmVjdG9yeSAkYXNfZGlyIgotCi0K LX0gIyBhc19mbl9ta2Rpcl9wCi1pZiBta2RpciAtcCAuIDI+L2Rldi9udWxsOyB0aGVuCi0gIGFz X21rZGlyX3A9J21rZGlyIC1wICIkYXNfZGlyIicKLWVsc2UKLSAgdGVzdCAtZCAuLy1wICYmIHJt ZGlyIC4vLXAKLSAgYXNfbWtkaXJfcD1mYWxzZQotZmkKLQotCi0jIGFzX2ZuX2V4ZWN1dGFibGVf cCBGSUxFCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIFRlc3QgaWYgRklMRSBpcyBhbiBl eGVjdXRhYmxlIHJlZ3VsYXIgZmlsZS4KLWFzX2ZuX2V4ZWN1dGFibGVfcCAoKQotewotICB0ZXN0 IC1mICIkMSIgJiYgdGVzdCAteCAiJDEiCi19ICMgYXNfZm5fZXhlY3V0YWJsZV9wCi1hc190ZXN0 X3g9J3Rlc3QgLXgnCi1hc19leGVjdXRhYmxlX3A9YXNfZm5fZXhlY3V0YWJsZV9wCi0KLSMgU2Vk IGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9udG8gYSB2YWxpZCBDUFAgbmFtZS4KLWFzX3Ry X2NwcD0iZXZhbCBzZWQgJ3klKiRhc19jcl9sZXR0ZXJzJVAkYXNfY3JfTEVUVEVSUyU7cyVbXl8k YXNfY3JfYWxudW1dJV8lZyciCi0KLSMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9u dG8gYSB2YWxpZCB2YXJpYWJsZSBuYW1lLgotYXNfdHJfc2g9ImV2YWwgc2VkICd5JSorJXBwJTtz JVteXyRhc19jcl9hbG51bV0lXyVnJyIKLQotCi1leGVjIDY+JjEKLSMjIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0jIyBNYWluIGJvZHkgb2YgJENPTkZJR19TVEFUVVMg c2NyaXB0LiAjIwotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLV9B U0VPRgotdGVzdCAkYXNfd3JpdGVfZmFpbCA9IDAgJiYgY2htb2QgK3ggJENPTkZJR19TVEFUVVMg fHwgYWNfd3JpdGVfZmFpbD0xCi0KLWNhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBh Y193cml0ZV9mYWlsPTEKLSMgU2F2ZSB0aGUgbG9nIG1lc3NhZ2UsIHRvIGtlZXAgJDAgYW5kIHNv IG9uIG1lYW5pbmdmdWwsIGFuZCB0bwotIyByZXBvcnQgYWN0dWFsIGlucHV0IHZhbHVlcyBvZiBD T05GSUdfRklMRVMgZXRjLiBpbnN0ZWFkIG9mIHRoZWlyCi0jIHZhbHVlcyBhZnRlciBvcHRpb25z IGhhbmRsaW5nLgotYWNfbG9nPSIKLVRoaXMgZmlsZSB3YXMgZXh0ZW5kZWQgYnkgWGVuIEh5cGVy dmlzb3IgJGFzX21lIDQuMTMsIHdoaWNoIHdhcwotZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAy LjY5LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCi0KLSAgQ09ORklHX0ZJTEVTICAgID0g JENPTkZJR19GSUxFUwotICBDT05GSUdfSEVBREVSUyAgPSAkQ09ORklHX0hFQURFUlMKLSAgQ09O RklHX0xJTktTICAgID0gJENPTkZJR19MSU5LUwotICBDT05GSUdfQ09NTUFORFMgPSAkQ09ORklH X0NPTU1BTkRTCi0gICQgJDAgJEAKLQotb24gYChob3N0bmFtZSB8fCB1bmFtZSAtbikgMj4vZGV2 L251bGwgfCBzZWQgMXFgCi0iCi0KLV9BQ0VPRgotCi1jYXNlICRhY19jb25maWdfZmlsZXMgaW4g KiIKLSIqKSBzZXQgeCAkYWNfY29uZmlnX2ZpbGVzOyBzaGlmdDsgYWNfY29uZmlnX2ZpbGVzPSQq OzsKLWVzYWMKLQotCi0KLWNhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRl X2ZhaWw9MQotIyBGaWxlcyB0aGF0IGNvbmZpZy5zdGF0dXMgd2FzIG1hZGUgZm9yLgotY29uZmln X2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIgotCi1fQUNFT0YKLQotY2F0ID4+JENPTkZJR19TVEFU VVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQotYWNfY3NfdXNhZ2U9IlwKLVxgJGFzX21l JyBpbnN0YW50aWF0ZXMgZmlsZXMgYW5kIG90aGVyIGNvbmZpZ3VyYXRpb24gYWN0aW9ucwotZnJv bSB0ZW1wbGF0ZXMgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uICBVbmxl c3MgdGhlIGZpbGVzCi1hbmQgYWN0aW9ucyBhcmUgc3BlY2lmaWVkIGFzIFRBR3MsIGFsbCBhcmUg aW5zdGFudGlhdGVkIGJ5IGRlZmF1bHQuCi0KLVVzYWdlOiAkMCBbT1BUSU9OXS4uLiBbVEFHXS4u LgotCi0gIC1oLCAtLWhlbHAgICAgICAgcHJpbnQgdGhpcyBoZWxwLCB0aGVuIGV4aXQKLSAgLVYs IC0tdmVyc2lvbiAgICBwcmludCB2ZXJzaW9uIG51bWJlciBhbmQgY29uZmlndXJhdGlvbiBzZXR0 aW5ncywgdGhlbiBleGl0Ci0gICAgICAtLWNvbmZpZyAgICAgcHJpbnQgY29uZmlndXJhdGlvbiwg dGhlbiBleGl0Ci0gIC1xLCAtLXF1aWV0LCAtLXNpbGVudAotICAgICAgICAgICAgICAgICAgIGRv IG5vdCBwcmludCBwcm9ncmVzcyBtZXNzYWdlcwotICAtZCwgLS1kZWJ1ZyAgICAgIGRvbid0IHJl bW92ZSB0ZW1wb3JhcnkgZmlsZXMKLSAgICAgIC0tcmVjaGVjayAgICB1cGRhdGUgJGFzX21lIGJ5 IHJlY29uZmlndXJpbmcgaW4gdGhlIHNhbWUgY29uZGl0aW9ucwotICAgICAgLS1maWxlPUZJTEVb OlRFTVBMQVRFXQotICAgICAgICAgICAgICAgICAgIGluc3RhbnRpYXRlIHRoZSBjb25maWd1cmF0 aW9uIGZpbGUgRklMRQotCi1Db25maWd1cmF0aW9uIGZpbGVzOgotJGNvbmZpZ19maWxlcwotCi1S ZXBvcnQgYnVncyB0byA8eGVuLWRldmVsQGxpc3RzLnhlbi5vcmc+LgotWGVuIEh5cGVydmlzb3Ig aG9tZSBwYWdlOiA8aHR0cDovL3d3dy54ZW4ub3JnLz4uIgotCi1fQUNFT0YKLWNhdCA+PiRDT05G SUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQotYWNfY3NfY29uZmlnPSJgJGFz X2VjaG8gIiRhY19jb25maWd1cmVfYXJncyIgfCBzZWQgJ3MvXiAvLzsgcy9bXFwiIlxgXCRdL1xc XFwmL2cnYCIKLWFjX2NzX3ZlcnNpb249IlxcCi1YZW4gSHlwZXJ2aXNvciBjb25maWcuc3RhdHVz IDQuMTMKLWNvbmZpZ3VyZWQgYnkgJDAsIGdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OSwK LSAgd2l0aCBvcHRpb25zIFxcIlwkYWNfY3NfY29uZmlnXFwiCi0KLUNvcHlyaWdodCAoQykgMjAx MiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLVRoaXMgY29uZmlnLnN0YXR1cyBzY3Jp cHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotZ2l2ZXMg dW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IGl0LiIK LQotYWNfcHdkPSckYWNfcHdkJwotc3JjZGlyPSckc3JjZGlyJwotdGVzdCAtbiAiXCRBV0siIHx8 IEFXSz1hd2sKLV9BQ0VPRgotCi1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNf d3JpdGVfZmFpbD0xCi0jIFRoZSBkZWZhdWx0IGxpc3RzIGFwcGx5IGlmIHRoZSB1c2VyIGRvZXMg bm90IHNwZWNpZnkgYW55IGZpbGUuCi1hY19uZWVkX2RlZmF1bHRzPToKLXdoaWxlIHRlc3QgJCMg IT0gMAotZG8KLSAgY2FzZSAkMSBpbgotICAtLSo9PyopCi0gICAgYWNfb3B0aW9uPWBleHByICJY JDEiIDogJ1hcKFtePV0qXCk9J2AKLSAgICBhY19vcHRhcmc9YGV4cHIgIlgkMSIgOiAnWFtePV0q PVwoLipcKSdgCi0gICAgYWNfc2hpZnQ9OgotICAgIDs7Ci0gIC0tKj0pCi0gICAgYWNfb3B0aW9u PWBleHByICJYJDEiIDogJ1hcKFtePV0qXCk9J2AKLSAgICBhY19vcHRhcmc9Ci0gICAgYWNfc2hp ZnQ9OgotICAgIDs7Ci0gICopCi0gICAgYWNfb3B0aW9uPSQxCi0gICAgYWNfb3B0YXJnPSQyCi0g ICAgYWNfc2hpZnQ9c2hpZnQKLSAgICA7OwotICBlc2FjCi0KLSAgY2FzZSAkYWNfb3B0aW9uIGlu Ci0gICMgSGFuZGxpbmcgb2YgdGhlIG9wdGlvbnMuCi0gIC1yZWNoZWNrIHwgLS1yZWNoZWNrIHwg LS1yZWNoZWMgfCAtLXJlY2hlIHwgLS1yZWNoIHwgLS1yZWMgfCAtLXJlIHwgLS1yKQotICAgIGFj X2NzX3JlY2hlY2s9OiA7OwotICAtLXZlcnNpb24gfCAtLXZlcnNpbyB8IC0tdmVyc2kgfCAtLXZl cnMgfCAtLXZlciB8IC0tdmUgfCAtLXYgfCAtViApCi0gICAgJGFzX2VjaG8gIiRhY19jc192ZXJz aW9uIjsgZXhpdCA7OwotICAtLWNvbmZpZyB8IC0tY29uZmkgfCAtLWNvbmYgfCAtLWNvbiB8IC0t Y28gfCAtLWMgKQotICAgICRhc19lY2hvICIkYWNfY3NfY29uZmlnIjsgZXhpdCA7OwotICAtLWRl YnVnIHwgLS1kZWJ1IHwgLS1kZWIgfCAtLWRlIHwgLS1kIHwgLWQgKQotICAgIGRlYnVnPTogOzsK LSAgLS1maWxlIHwgLS1maWwgfCAtLWZpIHwgLS1mICkKLSAgICAkYWNfc2hpZnQKLSAgICBjYXNl ICRhY19vcHRhcmcgaW4KLSAgICAqXCcqKSBhY19vcHRhcmc9YCRhc19lY2hvICIkYWNfb3B0YXJn IiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYCA7OwotICAgICcnKSBhc19mbl9lcnJvciAkPyAi bWlzc2luZyBmaWxlIGFyZ3VtZW50IiA7OwotICAgIGVzYWMKLSAgICBhc19mbl9hcHBlbmQgQ09O RklHX0ZJTEVTICIgJyRhY19vcHRhcmcnIgotICAgIGFjX25lZWRfZGVmYXVsdHM9ZmFsc2U7Owot ICAtLWhlIHwgLS1oIHwgIC0taGVscCB8IC0taGVsIHwgLWggKQotICAgICRhc19lY2hvICIkYWNf Y3NfdXNhZ2UiOyBleGl0IDs7Ci0gIC1xIHwgLXF1aWV0IHwgLS1xdWlldCB8IC0tcXVpZSB8IC0t cXVpIHwgLS1xdSB8IC0tcSBcCi0gIHwgLXNpbGVudCB8IC0tc2lsZW50IHwgLS1zaWxlbiB8IC0t c2lsZSB8IC0tc2lsIHwgLS1zaSB8IC0tcykKLSAgICBhY19jc19zaWxlbnQ9OiA7OwotCi0gICMg VGhpcyBpcyBhbiBlcnJvci4KLSAgLSopIGFzX2ZuX2Vycm9yICQ/ICJ1bnJlY29nbml6ZWQgb3B0 aW9uOiBcYCQxJwotVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iIDs7Ci0K LSAgKikgYXNfZm5fYXBwZW5kIGFjX2NvbmZpZ190YXJnZXRzICIgJDEiCi0gICAgIGFjX25lZWRf ZGVmYXVsdHM9ZmFsc2UgOzsKLQotICBlc2FjCi0gIHNoaWZ0Ci1kb25lCi0KLWFjX2NvbmZpZ3Vy ZV9leHRyYV9hcmdzPQotCi1pZiAkYWNfY3Nfc2lsZW50OyB0aGVuCi0gIGV4ZWMgNj4vZGV2L251 bGwKLSAgYWNfY29uZmlndXJlX2V4dHJhX2FyZ3M9IiRhY19jb25maWd1cmVfZXh0cmFfYXJncyAt LXNpbGVudCIKLWZpCi0KLV9BQ0VPRgotY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwg YWNfd3JpdGVfZmFpbD0xCi1pZiBcJGFjX2NzX3JlY2hlY2s7IHRoZW4KLSAgc2V0IFggJFNIRUxM ICckMCcgJGFjX2NvbmZpZ3VyZV9hcmdzIFwkYWNfY29uZmlndXJlX2V4dHJhX2FyZ3MgLS1uby1j cmVhdGUgLS1uby1yZWN1cnNpb24KLSAgc2hpZnQKLSAgXCRhc19lY2hvICJydW5uaW5nIENPTkZJ R19TSEVMTD0kU0hFTEwgXCQqIiA+JjYKLSAgQ09ORklHX1NIRUxMPSckU0hFTEwnCi0gIGV4cG9y dCBDT05GSUdfU0hFTEwKLSAgZXhlYyAiXCRAIgotZmkKLQotX0FDRU9GCi1jYXQgPj4kQ09ORklH X1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCi1leGVjIDU+PmNvbmZpZy5sb2cK LXsKLSAgZWNobwotICBzZWQgJ2g7cy8uLy0vZztzL14uLi4vIyMgLztzLy4uLiQvICMjLztwO3g7 cDt4JyA8PF9BU0JPWAotIyMgUnVubmluZyAkYXNfbWUuICMjCi1fQVNCT1gKLSAgJGFzX2VjaG8g IiRhY19sb2ciCi19ID4mNQotCi1fQUNFT0YKLWNhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9G IHx8IGFjX3dyaXRlX2ZhaWw9MQotX0FDRU9GCi0KLWNhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9B Q0VPRiB8fCBhY193cml0ZV9mYWlsPTEKLQotIyBIYW5kbGluZyBvZiBhcmd1bWVudHMuCi1mb3Ig YWNfY29uZmlnX3RhcmdldCBpbiAkYWNfY29uZmlnX3RhcmdldHMKLWRvCi0gIGNhc2UgJGFjX2Nv bmZpZ190YXJnZXQgaW4KLSAgICAiY29uZmlnL1RvcGxldmVsLm1rIikgQ09ORklHX0ZJTEVTPSIk Q09ORklHX0ZJTEVTIGNvbmZpZy9Ub3BsZXZlbC5tayIgOzsKLSAgICAiY29uZmlnL1BhdGhzLm1r IikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGNvbmZpZy9QYXRocy5tayIgOzsKLQotICAq KSBhc19mbl9lcnJvciAkPyAiaW52YWxpZCBhcmd1bWVudDogXGAkYWNfY29uZmlnX3RhcmdldCci ICIkTElORU5PIiA1OzsKLSAgZXNhYwotZG9uZQotCi0KLSMgSWYgdGhlIHVzZXIgZGlkIG5vdCB1 c2UgdGhlIGFyZ3VtZW50cyB0byBzcGVjaWZ5IHRoZSBpdGVtcyB0byBpbnN0YW50aWF0ZSwKLSMg dGhlbiB0aGUgZW52dmFyIGludGVyZmFjZSBpcyB1c2VkLiAgU2V0IG9ubHkgdGhvc2UgdGhhdCBh cmUgbm90LgotIyBXZSB1c2UgdGhlIGxvbmcgZm9ybSBmb3IgdGhlIGRlZmF1bHQgYXNzaWdubWVu dCBiZWNhdXNlIG9mIGFuIGV4dHJlbWVseQotIyBiaXphcnJlIGJ1ZyBvbiBTdW5PUyA0LjEuMy4K LWlmICRhY19uZWVkX2RlZmF1bHRzOyB0aGVuCi0gIHRlc3QgIiR7Q09ORklHX0ZJTEVTK3NldH0i ID0gc2V0IHx8IENPTkZJR19GSUxFUz0kY29uZmlnX2ZpbGVzCi1maQotCi0jIEhhdmUgYSB0ZW1w b3JhcnkgZGlyZWN0b3J5IGZvciBjb252ZW5pZW5jZS4gIE1ha2UgaXQgaW4gdGhlIGJ1aWxkIHRy ZWUKLSMgc2ltcGx5IGJlY2F1c2UgdGhlcmUgaXMgbm8gcmVhc29uIGFnYWluc3QgaGF2aW5nIGl0 IGhlcmUsIGFuZCBpbiBhZGRpdGlvbiwKLSMgY3JlYXRpbmcgYW5kIG1vdmluZyBmaWxlcyBmcm9t IC90bXAgY2FuIHNvbWV0aW1lcyBjYXVzZSBwcm9ibGVtcy4KLSMgSG9vayBmb3IgaXRzIHJlbW92 YWwgdW5sZXNzIGRlYnVnZ2luZy4KLSMgTm90ZSB0aGF0IHRoZXJlIGlzIGEgc21hbGwgd2luZG93 IGluIHdoaWNoIHRoZSBkaXJlY3Rvcnkgd2lsbCBub3QgYmUgY2xlYW5lZDoKLSMgYWZ0ZXIgaXRz IGNyZWF0aW9uIGJ1dCBiZWZvcmUgaXRzIG5hbWUgaGFzIGJlZW4gYXNzaWduZWQgdG8gYCR0bXAn LgotJGRlYnVnIHx8Ci17Ci0gIHRtcD0gYWNfdG1wPQotICB0cmFwICdleGl0X3N0YXR1cz0kPwot ICA6ICIke2FjX3RtcDo9JHRtcH0iCi0gIHsgdGVzdCAhIC1kICIkYWNfdG1wIiB8fCBybSAtZnIg IiRhY190bXAiOyB9ICYmIGV4aXQgJGV4aXRfc3RhdHVzCi0nIDAKLSAgdHJhcCAnYXNfZm5fZXhp dCAxJyAxIDIgMTMgMTUKLX0KLSMgQ3JlYXRlIGEgKHNlY3VyZSkgdG1wIGRpcmVjdG9yeSBmb3Ig dG1wIGZpbGVzLgotCi17Ci0gIHRtcD1gKHVtYXNrIDA3NyAmJiBta3RlbXAgLWQgIi4vY29uZlhY WFhYWCIpIDI+L2Rldi9udWxsYCAmJgotICB0ZXN0IC1kICIkdG1wIgotfSAgfHwKLXsKLSAgdG1w PS4vY29uZiQkLSRSQU5ET00KLSAgKHVtYXNrIDA3NyAmJiBta2RpciAiJHRtcCIpCi19IHx8IGFz X2ZuX2Vycm9yICQ/ICJjYW5ub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSBpbiAuIiAi JExJTkVOTyIgNQotYWNfdG1wPSR0bXAKLQotIyBTZXQgdXAgdGhlIHNjcmlwdHMgZm9yIENPTkZJ R19GSUxFUyBzZWN0aW9uLgotIyBObyBuZWVkIHRvIGdlbmVyYXRlIHRoZW0gaWYgdGhlcmUgYXJl IG5vIENPTkZJR19GSUxFUy4KLSMgVGhpcyBoYXBwZW5zIGZvciBpbnN0YW5jZSB3aXRoIGAuL2Nv bmZpZy5zdGF0dXMgY29uZmlnLmgnLgotaWYgdGVzdCAtbiAiJENPTkZJR19GSUxFUyI7IHRoZW4K LQotCi1hY19jcj1gZWNobyBYIHwgdHIgWCAnXDAxNSdgCi0jIE9uIGN5Z3dpbiwgYmFzaCBjYW4g ZWF0IFxyIGluc2lkZSBgYCBpZiB0aGUgdXNlciByZXF1ZXN0ZWQgaWduY3IuCi0jIEJ1dCB3ZSBr bm93IG9mIG5vIG90aGVyIHNoZWxsIHdoZXJlIGFjX2NyIHdvdWxkIGJlIGVtcHR5IGF0IHRoaXMK LSMgcG9pbnQsIHNvIHdlIGNhbiB1c2UgYSBiYXNoaXNtIGFzIGEgZmFsbGJhY2suCi1pZiB0ZXN0 ICJ4JGFjX2NyIiA9IHg7IHRoZW4KLSAgZXZhbCBhY19jcj1cJFwnXFxyXCcKLWZpCi1hY19jc19h d2tfY3I9YCRBV0sgJ0JFR0lOIHsgcHJpbnQgImFccmIiIH0nIDwvZGV2L251bGwgMj4vZGV2L251 bGxgCi1pZiB0ZXN0ICIkYWNfY3NfYXdrX2NyIiA9ICJhJHthY19jcn1iIjsgdGhlbgotICBhY19j c19hd2tfY3I9J1xccicKLWVsc2UKLSAgYWNfY3NfYXdrX2NyPSRhY19jcgotZmkKLQotZWNobyAn QkVHSU4geycgPiIkYWNfdG1wL3N1YnMxLmF3ayIgJiYKLV9BQ0VPRgotCi0KLXsKLSAgZWNobyAi Y2F0ID5jb25mJCRzdWJzLmF3ayA8PF9BQ0VPRiIgJiYKLSAgZWNobyAiJGFjX3N1YnN0X3ZhcnMi IHwgc2VkICdzLy4qLyYhJCYkYWNfZGVsaW0vJyAmJgotICBlY2hvICJfQUNFT0YiCi19ID5jb25m JCRzdWJzLnNoIHx8Ci0gIGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgbWFrZSAkQ09ORklHX1NU QVRVUyIgIiRMSU5FTk8iIDUKLWFjX2RlbGltX251bT1gZWNobyAiJGFjX3N1YnN0X3ZhcnMiIHwg Z3JlcCAtYyAnXidgCi1hY19kZWxpbT0nJSFfISMgJwotZm9yIGFjX2xhc3RfdHJ5IGluIGZhbHNl IGZhbHNlIGZhbHNlIGZhbHNlIGZhbHNlIDo7IGRvCi0gIC4gLi9jb25mJCRzdWJzLnNoIHx8Ci0g ICAgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBtYWtlICRDT05GSUdfU1RBVFVTIiAiJExJTkVO TyIgNQotCi0gIGFjX2RlbGltX249YHNlZCAtbiAicy8uKiRhY19kZWxpbVwkL1gvcCIgY29uZiQk c3Vicy5hd2sgfCBncmVwIC1jIFhgCi0gIGlmIHRlc3QgJGFjX2RlbGltX24gPSAkYWNfZGVsaW1f bnVtOyB0aGVuCi0gICAgYnJlYWsKLSAgZWxpZiAkYWNfbGFzdF90cnk7IHRoZW4KLSAgICBhc19m bl9lcnJvciAkPyAiY291bGQgbm90IG1ha2UgJENPTkZJR19TVEFUVVMiICIkTElORU5PIiA1Ci0g IGVsc2UKLSAgICBhY19kZWxpbT0iJGFjX2RlbGltISRhY19kZWxpbSBfJGFjX2RlbGltISEgIgot ICBmaQotZG9uZQotcm0gLWYgY29uZiQkc3Vicy5zaAotCi1jYXQgPj4kQ09ORklHX1NUQVRVUyA8 PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKLWNhdCA+PiJcJGFjX3RtcC9zdWJzMS5hd2siIDw8 XFxfQUNBV0sgJiYKLV9BQ0VPRgotc2VkIC1uICcKLWgKLXMvXi9TWyIvOyBzLyEuKi8iXT0vCi1w Ci1nCi1zL15bXiFdKiEvLwotOnJlcGwKLXQgcmVwbAotcy8nIiRhY19kZWxpbSInJC8vCi10IGRl bGltCi06bmwKLWgKLXMvXCguXHsxNDhcfVwpLi4qL1wxLwotdCBtb3JlMQotcy9bIlxcXS9cXCYv Zzsgcy9eLyIvOyBzLyQvXFxuIlxcLwotcAotbgotYiByZXBsCi06bW9yZTEKLXMvWyJcXF0vXFwm L2c7IHMvXi8iLzsgcy8kLyJcXC8KLXAKLWcKLXMvLlx7MTQ4XH0vLwotdCBubAotOmRlbGltCi1o Ci1zL1woLlx7MTQ4XH1cKS4uKi9cMS8KLXQgbW9yZTIKLXMvWyJcXF0vXFwmL2c7IHMvXi8iLzsg cy8kLyIvCi1wCi1iCi06bW9yZTIKLXMvWyJcXF0vXFwmL2c7IHMvXi8iLzsgcy8kLyJcXC8KLXAK LWcKLXMvLlx7MTQ4XH0vLwotdCBkZWxpbQotJyA8Y29uZiQkc3Vicy5hd2sgfCBzZWQgJwotL15b XiIiXS97Ci0gIE4KLSAgcy9cbi8vCi19Ci0nID4+JENPTkZJR19TVEFUVVMgfHwgYWNfd3JpdGVf ZmFpbD0xCi1ybSAtZiBjb25mJCRzdWJzLmF3awotY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNF T0YgfHwgYWNfd3JpdGVfZmFpbD0xCi1fQUNBV0sKLWNhdCA+PiJcJGFjX3RtcC9zdWJzMS5hd2si IDw8X0FDQVdLICYmCi0gIGZvciAoa2V5IGluIFMpIFNfaXNfc2V0W2tleV0gPSAxCi0gIEZTID0g IgciCi0KLX0KLXsKLSAgbGluZSA9ICQgMAotICBuZmllbGRzID0gc3BsaXQobGluZSwgZmllbGQs ICJAIikKLSAgc3Vic3RlZCA9IDAKLSAgbGVuID0gbGVuZ3RoKGZpZWxkWzFdKQotICBmb3IgKGkg PSAyOyBpIDwgbmZpZWxkczsgaSsrKSB7Ci0gICAga2V5ID0gZmllbGRbaV0KLSAgICBrZXlsZW4g PSBsZW5ndGgoa2V5KQotICAgIGlmIChTX2lzX3NldFtrZXldKSB7Ci0gICAgICB2YWx1ZSA9IFNb a2V5XQotICAgICAgbGluZSA9IHN1YnN0cihsaW5lLCAxLCBsZW4pICIiIHZhbHVlICIiIHN1YnN0 cihsaW5lLCBsZW4gKyBrZXlsZW4gKyAzKQotICAgICAgbGVuICs9IGxlbmd0aCh2YWx1ZSkgKyBs ZW5ndGgoZmllbGRbKytpXSkKLSAgICAgIHN1YnN0ZWQgPSAxCi0gICAgfSBlbHNlCi0gICAgICBs ZW4gKz0gMSArIGtleWxlbgotICB9Ci0KLSAgcHJpbnQgbGluZQotfQotCi1fQUNBV0sKLV9BQ0VP RgotY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQotaWYg c2VkICJzLyRhY19jci8vIiA8IC9kZXYvbnVsbCA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gIHNl ZCAicy8kYWNfY3JcJC8vOyBzLyRhY19jci8kYWNfY3NfYXdrX2NyL2ciCi1lbHNlCi0gIGNhdAot ZmkgPCAiJGFjX3RtcC9zdWJzMS5hd2siID4gIiRhY190bXAvc3Vicy5hd2siIFwKLSAgfHwgYXNf Zm5fZXJyb3IgJD8gImNvdWxkIG5vdCBzZXR1cCBjb25maWcgZmlsZXMgbWFjaGluZXJ5IiAiJExJ TkVOTyIgNQotX0FDRU9GCi0KLSMgVlBBVEggbWF5IGNhdXNlIHRyb3VibGUgd2l0aCBzb21lIG1h a2VzLCBzbyB3ZSByZW1vdmUgc29sZSAkKHNyY2RpciksCi0jICR7c3JjZGlyfSBhbmQgQHNyY2Rp ckAgZW50cmllcyBmcm9tIFZQQVRIIGlmIHNyY2RpciBpcyAiLiIsIHN0cmlwIGxlYWRpbmcgYW5k Ci0jIHRyYWlsaW5nIGNvbG9ucyBhbmQgdGhlbiByZW1vdmUgdGhlIHdob2xlIGxpbmUgaWYgVlBB VEggYmVjb21lcyBlbXB0eQotIyAoYWN0dWFsbHkgd2UgbGVhdmUgYW4gZW1wdHkgbGluZSB0byBw cmVzZXJ2ZSBsaW5lIG51bWJlcnMpLgotaWYgdGVzdCAieCRzcmNkaXIiID0geC47IHRoZW4KLSAg YWNfdnBzdWI9Jy9eWwkgXSpWUEFUSFsJIF0qPVsJIF0qL3sKLWgKLXMvLy8KLXMvXi86Lwotcy9b CSBdKiQvOi8KLXMvOlwkKHNyY2Rpcik6LzovZwotcy86XCR7c3JjZGlyfTovOi9nCi1zLzpAc3Jj ZGlyQDovOi9nCi1zL146Ki8vCi1zLzoqJC8vCi14Ci1zL1woPVsJIF0qXCkuKi9cMS8KLUcKLXMv XG4vLwotcy9eW149XSo9WwkgXSokLy8KLX0nCi1maQotCi1jYXQgPj4kQ09ORklHX1NUQVRVUyA8 PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCi1maSAjIHRlc3QgLW4gIiRDT05GSUdfRklMRVMi Ci0KLQotZXZhbCBzZXQgWCAiICA6RiAkQ09ORklHX0ZJTEVTICAgICAgIgotc2hpZnQKLWZvciBh Y190YWcKLWRvCi0gIGNhc2UgJGFjX3RhZyBpbgotICA6W0ZITENdKSBhY19tb2RlPSRhY190YWc7 IGNvbnRpbnVlOzsKLSAgZXNhYwotICBjYXNlICRhY19tb2RlJGFjX3RhZyBpbgotICA6W0ZITF0q OiopOzsKLSAgOkwqIHwgOkMqOiopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHRhZyBcYCRhY190 YWcnIiAiJExJTkVOTyIgNTs7Ci0gIDpbRkhdLSkgYWNfdGFnPS06LTs7Ci0gIDpbRkhdKikgYWNf dGFnPSRhY190YWc6JGFjX3RhZy5pbjs7Ci0gIGVzYWMKLSAgYWNfc2F2ZV9JRlM9JElGUwotICBJ RlM9OgotICBzZXQgeCAkYWNfdGFnCi0gIElGUz0kYWNfc2F2ZV9JRlMKLSAgc2hpZnQKLSAgYWNf ZmlsZT0kMQotICBzaGlmdAotCi0gIGNhc2UgJGFjX21vZGUgaW4KLSAgOkwpIGFjX3NvdXJjZT0k MTs7Ci0gIDpbRkhdKQotICAgIGFjX2ZpbGVfaW5wdXRzPQotICAgIGZvciBhY19mCi0gICAgZG8K LSAgICAgIGNhc2UgJGFjX2YgaW4KLSAgICAgIC0pIGFjX2Y9IiRhY190bXAvc3RkaW4iOzsKLSAg ICAgICopICMgTG9vayBmb3IgdGhlIGZpbGUgZmlyc3QgaW4gdGhlIGJ1aWxkIHRyZWUsIHRoZW4g aW4gdGhlIHNvdXJjZSB0cmVlCi0JICMgKGlmIHRoZSBwYXRoIGlzIG5vdCBhYnNvbHV0ZSkuICBU aGUgYWJzb2x1dGUgcGF0aCBjYW5ub3QgYmUgRE9TLXN0eWxlLAotCSAjIGJlY2F1c2UgJGFjX2Yg Y2Fubm90IGNvbnRhaW4gYDonLgotCSB0ZXN0IC1mICIkYWNfZiIgfHwKLQkgICBjYXNlICRhY19m IGluCi0JICAgW1xcLyRdKikgZmFsc2U7OwotCSAgICopIHRlc3QgLWYgIiRzcmNkaXIvJGFjX2Yi ICYmIGFjX2Y9IiRzcmNkaXIvJGFjX2YiOzsKLQkgICBlc2FjIHx8Ci0JICAgYXNfZm5fZXJyb3Ig MSAiY2Fubm90IGZpbmQgaW5wdXQgZmlsZTogXGAkYWNfZiciICIkTElORU5PIiA1OzsKLSAgICAg IGVzYWMKLSAgICAgIGNhc2UgJGFjX2YgaW4gKlwnKikgYWNfZj1gJGFzX2VjaG8gIiRhY19mIiB8 IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYDs7IGVzYWMKLSAgICAgIGFzX2ZuX2FwcGVuZCBhY19m aWxlX2lucHV0cyAiICckYWNfZiciCi0gICAgZG9uZQotCi0gICAgIyBMZXQncyBzdGlsbCBwcmV0 ZW5kIGl0IGlzIGBjb25maWd1cmUnIHdoaWNoIGluc3RhbnRpYXRlcyAoaS5lLiwgZG9uJ3QKLSAg ICAjIHVzZSAkYXNfbWUpLCBwZW9wbGUgd291bGQgYmUgc3VycHJpc2VkIHRvIHJlYWQ6Ci0gICAg IyAgICAvKiBjb25maWcuaC4gIEdlbmVyYXRlZCBieSBjb25maWcuc3RhdHVzLiAgKi8KLSAgICBj b25maWd1cmVfaW5wdXQ9J0dlbmVyYXRlZCBmcm9tICdgCi0JICAkYXNfZWNobyAiJCoiIHwgc2Vk ICdzfF5bXjpdKi98fDtzfDpbXjpdKi98LCB8ZycKLQlgJyBieSBjb25maWd1cmUuJwotICAgIGlm IHRlc3QgeCIkYWNfZmlsZSIgIT0geC07IHRoZW4KLSAgICAgIGNvbmZpZ3VyZV9pbnB1dD0iJGFj X2ZpbGUuICAkY29uZmlndXJlX2lucHV0IgotICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiBjcmVhdGluZyAkYWNfZmlsZSIgPiY1Ci0kYXNfZWNobyAiJGFzX21l OiBjcmVhdGluZyAkYWNfZmlsZSIgPiY2O30KLSAgICBmaQotICAgICMgTmV1dHJhbGl6ZSBzcGVj aWFsIGNoYXJhY3RlcnMgaW50ZXJwcmV0ZWQgYnkgc2VkIGluIHJlcGxhY2VtZW50IHN0cmluZ3Mu Ci0gICAgY2FzZSAkY29uZmlndXJlX2lucHV0IGluICMoCi0gICAgKlwmKiB8ICpcfCogfCAqXFwq ICkKLSAgICAgICBhY19zZWRfY29uZl9pbnB1dD1gJGFzX2VjaG8gIiRjb25maWd1cmVfaW5wdXQi IHwKLSAgICAgICBzZWQgJ3MvW1xcXFwmfF0vXFxcXCYvZydgOzsgIygKLSAgICAqKSBhY19zZWRf Y29uZl9pbnB1dD0kY29uZmlndXJlX2lucHV0OzsKLSAgICBlc2FjCi0KLSAgICBjYXNlICRhY190 YWcgaW4KLSAgICAqOi06KiB8ICo6LSkgY2F0ID4iJGFjX3RtcC9zdGRpbiIgXAotICAgICAgfHwg YXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1IDs7 Ci0gICAgZXNhYwotICAgIDs7Ci0gIGVzYWMKLQotICBhY19kaXI9YCRhc19kaXJuYW1lIC0tICIk YWNfZmlsZSIgfHwKLSRhc19leHByIFgiJGFjX2ZpbGUiIDogJ1hcKC4qW14vXVwpLy8qW14vXVte L10qLyokJyBcfCBcCi0JIFgiJGFjX2ZpbGUiIDogJ1hcKC8vXClbXi9dJyBcfCBcCi0JIFgiJGFj X2ZpbGUiIDogJ1hcKC8vXCkkJyBcfCBcCi0JIFgiJGFjX2ZpbGUiIDogJ1hcKC9cKScgXHwgLiAy Pi9kZXYvbnVsbCB8fAotJGFzX2VjaG8gWCIkYWNfZmlsZSIgfAotICAgIHNlZCAnL15YXCguKlte L11cKVwvXC8qW14vXVteL10qXC8qJC97Ci0JICAgIHMvL1wxLwotCSAgICBxCi0JICB9Ci0JICAv XlhcKFwvXC9cKVteL10uKi97Ci0JICAgIHMvL1wxLwotCSAgICBxCi0JICB9Ci0JICAvXlhcKFwv XC9cKSQvewotCSAgICBzLy9cMS8KLQkgICAgcQotCSAgfQotCSAgL15YXChcL1wpLiovewotCSAg ICBzLy9cMS8KLQkgICAgcQotCSAgfQotCSAgcy8uKi8uLzsgcSdgCi0gIGFzX2Rpcj0iJGFjX2Rp ciI7IGFzX2ZuX21rZGlyX3AKLSAgYWNfYnVpbGRkaXI9LgotCi1jYXNlICIkYWNfZGlyIiBpbgot LikgYWNfZGlyX3N1ZmZpeD0gYWNfdG9wX2J1aWxkZGlyX3N1Yj0uIGFjX3RvcF9idWlsZF9wcmVm aXg9IDs7Ci0qKQotICBhY19kaXJfc3VmZml4PS9gJGFzX2VjaG8gIiRhY19kaXIiIHwgc2VkICdz fF5cLltcXC9dfHwnYAotICAjIEEgIi4uIiBmb3IgZWFjaCBkaXJlY3RvcnkgaW4gJGFjX2Rpcl9z dWZmaXguCi0gIGFjX3RvcF9idWlsZGRpcl9zdWI9YCRhc19lY2hvICIkYWNfZGlyX3N1ZmZpeCIg fCBzZWQgJ3N8L1teXFwvXSp8Ly4ufGc7c3wvfHwnYAotICBjYXNlICRhY190b3BfYnVpbGRkaXJf c3ViIGluCi0gICIiKSBhY190b3BfYnVpbGRkaXJfc3ViPS4gYWNfdG9wX2J1aWxkX3ByZWZpeD0g OzsKLSAgKikgIGFjX3RvcF9idWlsZF9wcmVmaXg9JGFjX3RvcF9idWlsZGRpcl9zdWIvIDs7Ci0g IGVzYWMgOzsKLWVzYWMKLWFjX2Fic190b3BfYnVpbGRkaXI9JGFjX3B3ZAotYWNfYWJzX2J1aWxk ZGlyPSRhY19wd2QkYWNfZGlyX3N1ZmZpeAotIyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eToK LWFjX3RvcF9idWlsZGRpcj0kYWNfdG9wX2J1aWxkX3ByZWZpeAotCi1jYXNlICRzcmNkaXIgaW4K LSAgLikgICMgV2UgYXJlIGJ1aWxkaW5nIGluIHBsYWNlLgotICAgIGFjX3NyY2Rpcj0uCi0gICAg YWNfdG9wX3NyY2Rpcj0kYWNfdG9wX2J1aWxkZGlyX3N1YgotICAgIGFjX2Fic190b3Bfc3JjZGly PSRhY19wd2QgOzsKLSAgW1xcL10qIHwgPzpbXFwvXSogKSAgIyBBYnNvbHV0ZSBuYW1lLgotICAg IGFjX3NyY2Rpcj0kc3JjZGlyJGFjX2Rpcl9zdWZmaXg7Ci0gICAgYWNfdG9wX3NyY2Rpcj0kc3Jj ZGlyCi0gICAgYWNfYWJzX3RvcF9zcmNkaXI9JHNyY2RpciA7OwotICAqKSAjIFJlbGF0aXZlIG5h bWUuCi0gICAgYWNfc3JjZGlyPSRhY190b3BfYnVpbGRfcHJlZml4JHNyY2RpciRhY19kaXJfc3Vm Zml4Ci0gICAgYWNfdG9wX3NyY2Rpcj0kYWNfdG9wX2J1aWxkX3ByZWZpeCRzcmNkaXIKLSAgICBh Y19hYnNfdG9wX3NyY2Rpcj0kYWNfcHdkLyRzcmNkaXIgOzsKLWVzYWMKLWFjX2Fic19zcmNkaXI9 JGFjX2Fic190b3Bfc3JjZGlyJGFjX2Rpcl9zdWZmaXgKLQotCi0gIGNhc2UgJGFjX21vZGUgaW4K LSAgOkYpCi0gICMKLSAgIyBDT05GSUdfRklMRQotICAjCi0KLV9BQ0VPRgotCi1jYXQgPj4kQ09O RklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCi0jIElmIHRoZSB0ZW1wbGF0 ZSBkb2VzIG5vdCBrbm93IGFib3V0IGRhdGFyb290ZGlyLCBleHBhbmQgaXQuCi0jIEZJWE1FOiBU aGlzIGhhY2sgc2hvdWxkIGJlIHJlbW92ZWQgYSBmZXcgeWVhcnMgYWZ0ZXIgMi42MC4KLWFjX2Rh dGFyb290ZGlyX2hhY2s9OyBhY19kYXRhcm9vdGRpcl9zZWVuPQotYWNfc2VkX2RhdGFyb290PScK LS9kYXRhcm9vdGRpci8gewotICBwCi0gIHEKLX0KLS9AZGF0YWRpckAvcAotL0Bkb2NkaXJAL3AK LS9AaW5mb2RpckAvcAotL0Bsb2NhbGVkaXJAL3AKLS9AbWFuZGlyQC9wJwotY2FzZSBgZXZhbCAi c2VkIC1uIFwiXCRhY19zZWRfZGF0YXJvb3RcIiAkYWNfZmlsZV9pbnB1dHMiYCBpbgotKmRhdGFy b290ZGlyKikgYWNfZGF0YXJvb3RkaXJfc2Vlbj15ZXM7OwotKkBkYXRhZGlyQCp8KkBkb2NkaXJA KnwqQGluZm9kaXJAKnwqQGxvY2FsZWRpckAqfCpAbWFuZGlyQCopCi0gIHsgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogJGFjX2ZpbGVfaW5wdXRzIHNlZW1z IHRvIGlnbm9yZSB0aGUgLS1kYXRhcm9vdGRpciBzZXR0aW5nIiA+JjUKLSRhc19lY2hvICIkYXNf bWU6IFdBUk5JTkc6ICRhY19maWxlX2lucHV0cyBzZWVtcyB0byBpZ25vcmUgdGhlIC0tZGF0YXJv b3RkaXIgc2V0dGluZyIgPiYyO30KLV9BQ0VPRgotY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNF T0YgfHwgYWNfd3JpdGVfZmFpbD0xCi0gIGFjX2RhdGFyb290ZGlyX2hhY2s9JwotICBzJkBkYXRh ZGlyQCYkZGF0YWRpciZnCi0gIHMmQGRvY2RpckAmJGRvY2RpciZnCi0gIHMmQGluZm9kaXJAJiRp bmZvZGlyJmcKLSAgcyZAbG9jYWxlZGlyQCYkbG9jYWxlZGlyJmcKLSAgcyZAbWFuZGlyQCYkbWFu ZGlyJmcKLSAgcyZcXFwke2RhdGFyb290ZGlyfSYkZGF0YXJvb3RkaXImZycgOzsKLWVzYWMKLV9B Q0VPRgotCi0jIE5ldXRyYWxpemUgVlBBVEggd2hlbiBgJHNyY2RpcicgPSBgLicuCi0jIFNoZWxs IGNvZGUgaW4gY29uZmlndXJlLmFjIG1pZ2h0IHNldCBleHRyYXN1Yi4KLSMgRklYTUU6IGRvIHdl IHJlYWxseSB3YW50IHRvIG1haW50YWluIHRoaXMgZmVhdHVyZT8KLWNhdCA+PiRDT05GSUdfU1RB VFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQotYWNfc2VkX2V4dHJhPSIkYWNfdnBzdWIK LSRleHRyYXN1YgotX0FDRU9GCi1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNf d3JpdGVfZmFpbD0xCi06dAotL0BbYS16QS1aX11bYS16QS1aXzAtOV0qQC8hYgotc3xAY29uZmln dXJlX2lucHV0QHwkYWNfc2VkX2NvbmZfaW5wdXR8O3QgdAotcyZAdG9wX2J1aWxkZGlyQCYkYWNf dG9wX2J1aWxkZGlyX3N1YiY7dCB0Ci1zJkB0b3BfYnVpbGRfcHJlZml4QCYkYWNfdG9wX2J1aWxk X3ByZWZpeCY7dCB0Ci1zJkBzcmNkaXJAJiRhY19zcmNkaXImO3QgdAotcyZAYWJzX3NyY2RpckAm JGFjX2Fic19zcmNkaXImO3QgdAotcyZAdG9wX3NyY2RpckAmJGFjX3RvcF9zcmNkaXImO3QgdAot cyZAYWJzX3RvcF9zcmNkaXJAJiRhY19hYnNfdG9wX3NyY2RpciY7dCB0Ci1zJkBidWlsZGRpckAm JGFjX2J1aWxkZGlyJjt0IHQKLXMmQGFic19idWlsZGRpckAmJGFjX2Fic19idWlsZGRpciY7dCB0 Ci1zJkBhYnNfdG9wX2J1aWxkZGlyQCYkYWNfYWJzX3RvcF9idWlsZGRpciY7dCB0Ci0kYWNfZGF0 YXJvb3RkaXJfaGFjawotIgotZXZhbCBzZWQgXCJcJGFjX3NlZF9leHRyYVwiICIkYWNfZmlsZV9p bnB1dHMiIHwgJEFXSyAtZiAiJGFjX3RtcC9zdWJzLmF3ayIgXAotICA+JGFjX3RtcC9vdXQgfHwg YXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1Ci0K LXRlc3QgLXogIiRhY19kYXRhcm9vdGRpcl9oYWNrJGFjX2RhdGFyb290ZGlyX3NlZW4iICYmCi0g IHsgYWNfb3V0PWBzZWQgLW4gJy9cJHtkYXRhcm9vdGRpcn0vcCcgIiRhY190bXAvb3V0ImA7IHRl c3QgLW4gIiRhY19vdXQiOyB9ICYmCi0gIHsgYWNfb3V0PWBzZWQgLW4gJy9eWwkgXSpkYXRhcm9v dGRpclsJIF0qOio9L3AnIFwKLSAgICAgICIkYWNfdG1wL291dCJgOyB0ZXN0IC16ICIkYWNfb3V0 IjsgfSAmJgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5J Tkc6ICRhY19maWxlIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSB2YXJpYWJsZSBcYGRhdGFy b290ZGlyJwotd2hpY2ggc2VlbXMgdG8gYmUgdW5kZWZpbmVkLiAgUGxlYXNlIG1ha2Ugc3VyZSBp dCBpcyBkZWZpbmVkIiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19maWxlIGNv bnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSB2YXJpYWJsZSBcYGRhdGFyb290ZGlyJwotd2hpY2gg c2VlbXMgdG8gYmUgdW5kZWZpbmVkLiAgUGxlYXNlIG1ha2Ugc3VyZSBpdCBpcyBkZWZpbmVkIiA+ JjI7fQotCi0gIHJtIC1mICIkYWNfdG1wL3N0ZGluIgotICBjYXNlICRhY19maWxlIGluCi0gIC0p IGNhdCAiJGFjX3RtcC9vdXQiICYmIHJtIC1mICIkYWNfdG1wL291dCI7OwotICAqKSBybSAtZiAi JGFjX2ZpbGUiICYmIG12ICIkYWNfdG1wL291dCIgIiRhY19maWxlIjs7Ci0gIGVzYWMgXAotICB8 fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUK LSA7OwotCi0KLQotICBlc2FjCi0KLWRvbmUgIyBmb3IgYWNfdGFnCi0KLQotYXNfZm5fZXhpdCAw Ci1fQUNFT0YKLWFjX2NsZWFuX2ZpbGVzPSRhY19jbGVhbl9maWxlc19zYXZlCi0KLXRlc3QgJGFj X3dyaXRlX2ZhaWwgPSAwIHx8Ci0gIGFzX2ZuX2Vycm9yICQ/ICJ3cml0ZSBmYWlsdXJlIGNyZWF0 aW5nICRDT05GSUdfU1RBVFVTIiAiJExJTkVOTyIgNQotCi0KLSMgY29uZmlndXJlIGlzIHdyaXRp bmcgdG8gY29uZmlnLmxvZywgYW5kIHRoZW4gY2FsbHMgY29uZmlnLnN0YXR1cy4KLSMgY29uZmln LnN0YXR1cyBkb2VzIGl0cyBvd24gcmVkaXJlY3Rpb24sIGFwcGVuZGluZyB0byBjb25maWcubG9n LgotIyBVbmZvcnR1bmF0ZWx5LCBvbiBET1MgdGhpcyBmYWlscywgYXMgY29uZmlnLmxvZyBpcyBz dGlsbCBrZXB0IG9wZW4KLSMgYnkgY29uZmlndXJlLCBzbyBjb25maWcuc3RhdHVzIHdvbid0IGJl IGFibGUgdG8gd3JpdGUgdG8gaXQ7IGl0cwotIyBvdXRwdXQgaXMgc2ltcGx5IGRpc2NhcmRlZC4g IFNvIHdlIGV4ZWMgdGhlIEZEIHRvIC9kZXYvbnVsbCwKLSMgZWZmZWN0aXZlbHkgY2xvc2luZyBj b25maWcubG9nLCBzbyBpdCBjYW4gYmUgcHJvcGVybHkgKHJlKW9wZW5lZCBhbmQKLSMgYXBwZW5k ZWQgdG8gYnkgY29uZmlnLnN0YXR1cy4gIFdoZW4gY29taW5nIGJhY2sgdG8gY29uZmlndXJlLCB3 ZQotIyBuZWVkIHRvIG1ha2UgdGhlIEZEIGF2YWlsYWJsZSBhZ2Fpbi4KLWlmIHRlc3QgIiRub19j cmVhdGUiICE9IHllczsgdGhlbgotICBhY19jc19zdWNjZXNzPToKLSAgYWNfY29uZmlnX3N0YXR1 c19hcmdzPQotICB0ZXN0ICIkc2lsZW50IiA9IHllcyAmJgotICAgIGFjX2NvbmZpZ19zdGF0dXNf YXJncz0iJGFjX2NvbmZpZ19zdGF0dXNfYXJncyAtLXF1aWV0IgotICBleGVjIDU+L2Rldi9udWxs Ci0gICRTSEVMTCAkQ09ORklHX1NUQVRVUyAkYWNfY29uZmlnX3N0YXR1c19hcmdzIHx8IGFjX2Nz X3N1Y2Nlc3M9ZmFsc2UKLSAgZXhlYyA1Pj5jb25maWcubG9nCi0gICMgVXNlIHx8LCBub3QgJiYs IHRvIGF2b2lkIGV4aXRpbmcgZnJvbSB0aGUgaWYgd2l0aCAkPyA9IDEsIHdoaWNoCi0gICMgd291 bGQgbWFrZSBjb25maWd1cmUgZmFpbCBpZiB0aGlzIGlzIHRoZSBsYXN0IGluc3RydWN0aW9uLgot ICAkYWNfY3Nfc3VjY2VzcyB8fCBhc19mbl9leGl0IDEKLWZpCi0KLSMKLSMgQ09ORklHX1NVQkRJ UlMgc2VjdGlvbi4KLSMKLWlmIHRlc3QgIiRub19yZWN1cnNpb24iICE9IHllczsgdGhlbgotCi0g ICMgUmVtb3ZlIC0tY2FjaGUtZmlsZSwgLS1zcmNkaXIsIGFuZCAtLWRpc2FibGUtb3B0aW9uLWNo ZWNraW5nIGFyZ3VtZW50cwotICAjIHNvIHRoZXkgZG8gbm90IHBpbGUgdXAuCi0gIGFjX3N1Yl9j b25maWd1cmVfYXJncz0KLSAgYWNfcHJldj0KLSAgZXZhbCAic2V0IHggJGFjX2NvbmZpZ3VyZV9h cmdzIgotICBzaGlmdAotICBmb3IgYWNfYXJnCi0gIGRvCi0gICAgaWYgdGVzdCAtbiAiJGFjX3By ZXYiOyB0aGVuCi0gICAgICBhY19wcmV2PQotICAgICAgY29udGludWUKLSAgICBmaQotICAgIGNh c2UgJGFjX2FyZyBpbgotICAgIC1jYWNoZS1maWxlIHwgLS1jYWNoZS1maWxlIHwgLS1jYWNoZS1m aWwgfCAtLWNhY2hlLWZpIFwKLSAgICB8IC0tY2FjaGUtZiB8IC0tY2FjaGUtIHwgLS1jYWNoZSB8 IC0tY2FjaCB8IC0tY2FjIHwgLS1jYSB8IC0tYykKLSAgICAgIGFjX3ByZXY9Y2FjaGVfZmlsZSA7 OwotICAgIC1jYWNoZS1maWxlPSogfCAtLWNhY2hlLWZpbGU9KiB8IC0tY2FjaGUtZmlsPSogfCAt LWNhY2hlLWZpPSogXAotICAgIHwgLS1jYWNoZS1mPSogfCAtLWNhY2hlLT0qIHwgLS1jYWNoZT0q IHwgLS1jYWNoPSogfCAtLWNhYz0qIHwgLS1jYT0qIFwKLSAgICB8IC0tYz0qKQotICAgICAgOzsK LSAgICAtLWNvbmZpZy1jYWNoZSB8IC1DKQotICAgICAgOzsKLSAgICAtc3JjZGlyIHwgLS1zcmNk aXIgfCAtLXNyY2RpIHwgLS1zcmNkIHwgLS1zcmMgfCAtLXNyKQotICAgICAgYWNfcHJldj1zcmNk aXIgOzsKLSAgICAtc3JjZGlyPSogfCAtLXNyY2Rpcj0qIHwgLS1zcmNkaT0qIHwgLS1zcmNkPSog fCAtLXNyYz0qIHwgLS1zcj0qKQotICAgICAgOzsKLSAgICAtcHJlZml4IHwgLS1wcmVmaXggfCAt LXByZWZpIHwgLS1wcmVmIHwgLS1wcmUgfCAtLXByIHwgLS1wKQotICAgICAgYWNfcHJldj1wcmVm aXggOzsKLSAgICAtcHJlZml4PSogfCAtLXByZWZpeD0qIHwgLS1wcmVmaT0qIHwgLS1wcmVmPSog fCAtLXByZT0qIHwgLS1wcj0qIHwgLS1wPSopCi0gICAgICA7OwotICAgIC0tZGlzYWJsZS1vcHRp b24tY2hlY2tpbmcpCi0gICAgICA7OwotICAgICopCi0gICAgICBjYXNlICRhY19hcmcgaW4KLSAg ICAgICpcJyopIGFjX2FyZz1gJGFzX2VjaG8gIiRhY19hcmciIHwgc2VkICJzLycvJ1xcXFxcXFxc JycvZyJgIDs7Ci0gICAgICBlc2FjCi0gICAgICBhc19mbl9hcHBlbmQgYWNfc3ViX2NvbmZpZ3Vy ZV9hcmdzICIgJyRhY19hcmcnIiA7OwotICAgIGVzYWMKLSAgZG9uZQotCi0gICMgQWx3YXlzIHBy ZXBlbmQgLS1wcmVmaXggdG8gZW5zdXJlIHVzaW5nIHRoZSBzYW1lIHByZWZpeAotICAjIGluIHN1 YmRpciBjb25maWd1cmF0aW9ucy4KLSAgYWNfYXJnPSItLXByZWZpeD0kcHJlZml4IgotICBjYXNl ICRhY19hcmcgaW4KLSAgKlwnKikgYWNfYXJnPWAkYXNfZWNobyAiJGFjX2FyZyIgfCBzZWQgInMv Jy8nXFxcXFxcXFwnJy9nImAgOzsKLSAgZXNhYwotICBhY19zdWJfY29uZmlndXJlX2FyZ3M9Iick YWNfYXJnJyAkYWNfc3ViX2NvbmZpZ3VyZV9hcmdzIgotCi0gICMgUGFzcyAtLXNpbGVudAotICBp ZiB0ZXN0ICIkc2lsZW50IiA9IHllczsgdGhlbgotICAgIGFjX3N1Yl9jb25maWd1cmVfYXJncz0i LS1zaWxlbnQgJGFjX3N1Yl9jb25maWd1cmVfYXJncyIKLSAgZmkKLQotICAjIEFsd2F5cyBwcmVw ZW5kIC0tZGlzYWJsZS1vcHRpb24tY2hlY2tpbmcgdG8gc2lsZW5jZSB3YXJuaW5ncywgc2luY2UK LSAgIyBkaWZmZXJlbnQgc3ViZGlycyBjYW4gaGF2ZSBkaWZmZXJlbnQgLS1lbmFibGUgYW5kIC0t d2l0aCBvcHRpb25zLgotICBhY19zdWJfY29uZmlndXJlX2FyZ3M9Ii0tZGlzYWJsZS1vcHRpb24t Y2hlY2tpbmcgJGFjX3N1Yl9jb25maWd1cmVfYXJncyIKLQotICBhY19wb3BkaXI9YHB3ZGAKLSAg Zm9yIGFjX2RpciBpbiA6ICRzdWJkaXJzOyBkbyB0ZXN0ICJ4JGFjX2RpciIgPSB4OiAmJiBjb250 aW51ZQotCi0gICAgIyBEbyBub3QgY29tcGxhaW4sIHNvIGEgY29uZmlndXJlIHNjcmlwdCBjYW4g Y29uZmlndXJlIHdoaWNoZXZlcgotICAgICMgcGFydHMgb2YgYSBsYXJnZSBzb3VyY2UgdHJlZSBh cmUgcHJlc2VudC4KLSAgICB0ZXN0IC1kICIkc3JjZGlyLyRhY19kaXIiIHx8IGNvbnRpbnVlCi0K LSAgICBhY19tc2c9Ij09PSBjb25maWd1cmluZyBpbiAkYWNfZGlyIChgcHdkYC8kYWNfZGlyKSIK LSAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfbXNnIiA+JjUK LSAgICAkYXNfZWNobyAiJGFjX21zZyIgPiY2Ci0gICAgYXNfZGlyPSIkYWNfZGlyIjsgYXNfZm5f bWtkaXJfcAotICAgIGFjX2J1aWxkZGlyPS4KLQotY2FzZSAiJGFjX2RpciIgaW4KLS4pIGFjX2Rp cl9zdWZmaXg9IGFjX3RvcF9idWlsZGRpcl9zdWI9LiBhY190b3BfYnVpbGRfcHJlZml4PSA7Owot KikKLSAgYWNfZGlyX3N1ZmZpeD0vYCRhc19lY2hvICIkYWNfZGlyIiB8IHNlZCAnc3xeXC5bXFwv XXx8J2AKLSAgIyBBICIuLiIgZm9yIGVhY2ggZGlyZWN0b3J5IGluICRhY19kaXJfc3VmZml4Lgot ICBhY190b3BfYnVpbGRkaXJfc3ViPWAkYXNfZWNobyAiJGFjX2Rpcl9zdWZmaXgiIHwgc2VkICdz fC9bXlxcL10qfC8uLnxnO3N8L3x8J2AKLSAgY2FzZSAkYWNfdG9wX2J1aWxkZGlyX3N1YiBpbgot ICAiIikgYWNfdG9wX2J1aWxkZGlyX3N1Yj0uIGFjX3RvcF9idWlsZF9wcmVmaXg9IDs7Ci0gICop ICBhY190b3BfYnVpbGRfcHJlZml4PSRhY190b3BfYnVpbGRkaXJfc3ViLyA7OwotICBlc2FjIDs7 Ci1lc2FjCi1hY19hYnNfdG9wX2J1aWxkZGlyPSRhY19wd2QKLWFjX2Fic19idWlsZGRpcj0kYWNf cHdkJGFjX2Rpcl9zdWZmaXgKLSMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHk6Ci1hY190b3Bf YnVpbGRkaXI9JGFjX3RvcF9idWlsZF9wcmVmaXgKLQotY2FzZSAkc3JjZGlyIGluCi0gIC4pICAj IFdlIGFyZSBidWlsZGluZyBpbiBwbGFjZS4KLSAgICBhY19zcmNkaXI9LgotICAgIGFjX3RvcF9z cmNkaXI9JGFjX3RvcF9idWlsZGRpcl9zdWIKLSAgICBhY19hYnNfdG9wX3NyY2Rpcj0kYWNfcHdk IDs7Ci0gIFtcXC9dKiB8ID86W1xcL10qICkgICMgQWJzb2x1dGUgbmFtZS4KLSAgICBhY19zcmNk aXI9JHNyY2RpciRhY19kaXJfc3VmZml4OwotICAgIGFjX3RvcF9zcmNkaXI9JHNyY2RpcgotICAg IGFjX2Fic190b3Bfc3JjZGlyPSRzcmNkaXIgOzsKLSAgKikgIyBSZWxhdGl2ZSBuYW1lLgotICAg IGFjX3NyY2Rpcj0kYWNfdG9wX2J1aWxkX3ByZWZpeCRzcmNkaXIkYWNfZGlyX3N1ZmZpeAotICAg IGFjX3RvcF9zcmNkaXI9JGFjX3RvcF9idWlsZF9wcmVmaXgkc3JjZGlyCi0gICAgYWNfYWJzX3Rv cF9zcmNkaXI9JGFjX3B3ZC8kc3JjZGlyIDs7Ci1lc2FjCi1hY19hYnNfc3JjZGlyPSRhY19hYnNf dG9wX3NyY2RpciRhY19kaXJfc3VmZml4Ci0KLQotICAgIGNkICIkYWNfZGlyIgotCi0gICAgIyBD aGVjayBmb3IgZ3Vlc3RlZCBjb25maWd1cmU7IG90aGVyd2lzZSBnZXQgQ3lnbnVzIHN0eWxlIGNv bmZpZ3VyZS4KLSAgICBpZiB0ZXN0IC1mICIkYWNfc3JjZGlyL2NvbmZpZ3VyZS5nbnUiOyB0aGVu Ci0gICAgICBhY19zdWJfY29uZmlndXJlPSRhY19zcmNkaXIvY29uZmlndXJlLmdudQotICAgIGVs aWYgdGVzdCAtZiAiJGFjX3NyY2Rpci9jb25maWd1cmUiOyB0aGVuCi0gICAgICBhY19zdWJfY29u ZmlndXJlPSRhY19zcmNkaXIvY29uZmlndXJlCi0gICAgZWxpZiB0ZXN0IC1mICIkYWNfc3JjZGly L2NvbmZpZ3VyZS5pbiI7IHRoZW4KLSAgICAgICMgVGhpcyBzaG91bGQgYmUgQ3lnbnVzIGNvbmZp Z3VyZS4KLSAgICAgIGFjX3N1Yl9jb25maWd1cmU9JGFjX2F1eF9kaXIvY29uZmlndXJlCi0gICAg ZWxzZQotICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJO SU5HOiBubyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGlzIGluICRhY19kaXIiID4mNQotJGFz X2VjaG8gIiRhc19tZTogV0FSTklORzogbm8gY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBpcyBp biAkYWNfZGlyIiA+JjI7fQotICAgICAgYWNfc3ViX2NvbmZpZ3VyZT0KLSAgICBmaQotCi0gICAg IyBUaGUgcmVjdXJzaW9uIGlzIGhlcmUuCi0gICAgaWYgdGVzdCAtbiAiJGFjX3N1Yl9jb25maWd1 cmUiOyB0aGVuCi0gICAgICAjIE1ha2UgdGhlIGNhY2hlIGZpbGUgbmFtZSBjb3JyZWN0IHJlbGF0 aXZlIHRvIHRoZSBzdWJkaXJlY3RvcnkuCi0gICAgICBjYXNlICRjYWNoZV9maWxlIGluCi0gICAg ICBbXFwvXSogfCA/OltcXC9dKiApIGFjX3N1Yl9jYWNoZV9maWxlPSRjYWNoZV9maWxlIDs7Ci0g ICAgICAqKSAjIFJlbGF0aXZlIG5hbWUuCi0JYWNfc3ViX2NhY2hlX2ZpbGU9JGFjX3RvcF9idWls ZF9wcmVmaXgkY2FjaGVfZmlsZSA7OwotICAgICAgZXNhYwotCi0gICAgICB7ICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJ1bm5pbmcgJFNIRUxMICRhY19zdWJfY29uZmln dXJlICRhY19zdWJfY29uZmlndXJlX2FyZ3MgLS1jYWNoZS1maWxlPSRhY19zdWJfY2FjaGVfZmls ZSAtLXNyY2Rpcj0kYWNfc3JjZGlyIiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IHJ1bm5pbmcgJFNI RUxMICRhY19zdWJfY29uZmlndXJlICRhY19zdWJfY29uZmlndXJlX2FyZ3MgLS1jYWNoZS1maWxl PSRhY19zdWJfY2FjaGVfZmlsZSAtLXNyY2Rpcj0kYWNfc3JjZGlyIiA+JjY7fQotICAgICAgIyBU aGUgZXZhbCBtYWtlcyBxdW90aW5nIGFyZ3VtZW50cyB3b3JrLgotICAgICAgZXZhbCAiXCRTSEVM TCBcIlwkYWNfc3ViX2NvbmZpZ3VyZVwiICRhY19zdWJfY29uZmlndXJlX2FyZ3MgXAotCSAgIC0t Y2FjaGUtZmlsZT1cIlwkYWNfc3ViX2NhY2hlX2ZpbGVcIiAtLXNyY2Rpcj1cIlwkYWNfc3JjZGly XCIiIHx8Ci0JYXNfZm5fZXJyb3IgJD8gIiRhY19zdWJfY29uZmlndXJlIGZhaWxlZCBmb3IgJGFj X2RpciIgIiRMSU5FTk8iIDUKLSAgICBmaQotCi0gICAgY2QgIiRhY19wb3BkaXIiCi0gIGRvbmUK LWZpCi1pZiB0ZXN0IC1uICIkYWNfdW5yZWNvZ25pemVkX29wdHMiICYmIHRlc3QgIiRlbmFibGVf b3B0aW9uX2NoZWNraW5nIiAhPSBubzsgdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVucmVjb2duaXplZCBvcHRpb25zOiAkYWNfdW5yZWNv Z25pemVkX29wdHMiID4mNQotJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdW5yZWNvZ25pemVk IG9wdGlvbnM6ICRhY191bnJlY29nbml6ZWRfb3B0cyIgPiYyO30KLWZpCi0KZGlmZiAtLWdpdCBh L2RvY3MvY29uZmlndXJlIGIvZG9jcy9jb25maWd1cmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1 CmluZGV4IGU4MTY0NDc1MmYuLjAwMDAwMDAwMDAKLS0tIGEvZG9jcy9jb25maWd1cmUKKysrIC9k ZXYvbnVsbApAQCAtMSwzNDI3ICswLDAgQEAKLSMhIC9iaW4vc2gKLSMgR3Vlc3MgdmFsdWVzIGZv ciBzeXN0ZW0tZGVwZW5kZW50IHZhcmlhYmxlcyBhbmQgY3JlYXRlIE1ha2VmaWxlcy4KLSMgR2Vu ZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5IGZvciBYZW4gSHlwZXJ2aXNvciBEb2N1bWVudGF0 aW9uIDQuMTMuCi0jCi0jIFJlcG9ydCBidWdzIHRvIDx4ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZz4u Ci0jCi0jCi0jIENvcHlyaWdodCAoQykgMTk5Mi0xOTk2LCAxOTk4LTIwMTIgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCi0jCi0jCi0jIFRoaXMgY29uZmlndXJlIHNjcmlwdCBpcyBmcmVl IHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0jIGdpdmVzIHVubGltaXRl ZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4KLSMjIC0tLS0t LS0tLS0tLS0tLS0tLS0tICMjCi0jIyBNNHNoIEluaXRpYWxpemF0aW9uLiAjIwotIyMgLS0tLS0t LS0tLS0tLS0tLS0tLS0gIyMKLQotIyBCZSBtb3JlIEJvdXJuZSBjb21wYXRpYmxlCi1EVUFMQ0FT RT0xOyBleHBvcnQgRFVBTENBU0UgIyBmb3IgTUtTIHNoCi1pZiB0ZXN0IC1uICIke1pTSF9WRVJT SU9OK3NldH0iICYmIChlbXVsYXRlIHNoKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotICBlbXVs YXRlIHNoCi0gIE5VTExDTUQ9OgotICAjIFByZS00LjIgdmVyc2lvbnMgb2YgWnNoIGRvIHdvcmQg c3BsaXR0aW5nIG9uICR7MSsiJEAifSwgd2hpY2gKLSAgIyBpcyBjb250cmFyeSB0byBvdXIgdXNh Z2UuICBEaXNhYmxlIHRoaXMgZmVhdHVyZS4KLSAgYWxpYXMgLWcgJyR7MSsiJEAifSc9JyIkQCIn Ci0gIHNldG9wdCBOT19HTE9CX1NVQlNUCi1lbHNlCi0gIGNhc2UgYChzZXQgLW8pIDI+L2Rldi9u dWxsYCBpbiAjKAotICAqcG9zaXgqKSA6Ci0gICAgc2V0IC1vIHBvc2l4IDs7ICMoCi0gICopIDoK LSAgICAgOzsKLWVzYWMKLWZpCi0KLQotYXNfbmw9JwotJwotZXhwb3J0IGFzX25sCi0jIFByaW50 aW5nIGEgbG9uZyBzdHJpbmcgY3Jhc2hlcyBTb2xhcmlzIDcgL3Vzci9iaW4vcHJpbnRmLgotYXNf ZWNobz0nXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXCcKLWFz X2VjaG89JGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobwotYXNfZWNobz0k YXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8KLSMgUHJlZmVy IGEga3NoIHNoZWxsIGJ1aWx0aW4gb3ZlciBhbiBleHRlcm5hbCBwcmludGYgcHJvZ3JhbSBvbiBT b2xhcmlzLAotIyBidXQgd2l0aG91dCB3YXN0aW5nIGZvcmtzIGZvciBiYXNoIG9yIHpzaC4KLWlm IHRlc3QgLXogIiRCQVNIX1ZFUlNJT04kWlNIX1ZFUlNJT04iIFwKLSAgICAmJiAodGVzdCAiWGBw cmludCAtciAtLSAkYXNfZWNob2AiID0gIlgkYXNfZWNobyIpIDI+L2Rldi9udWxsOyB0aGVuCi0g IGFzX2VjaG89J3ByaW50IC1yIC0tJwotICBhc19lY2hvX249J3ByaW50IC1ybiAtLScKLWVsaWYg KHRlc3QgIlhgcHJpbnRmICVzICRhc19lY2hvYCIgPSAiWCRhc19lY2hvIikgMj4vZGV2L251bGw7 IHRoZW4KLSAgYXNfZWNobz0ncHJpbnRmICVzXG4nCi0gIGFzX2VjaG9fbj0ncHJpbnRmICVzJwot ZWxzZQotICBpZiB0ZXN0ICJYYCgvdXNyL3VjYi9lY2hvIC1uIC1uICRhc19lY2hvKSAyPi9kZXYv bnVsbGAiID0gIlgtbiAkYXNfZWNobyI7IHRoZW4KLSAgICBhc19lY2hvX2JvZHk9J2V2YWwgL3Vz ci91Y2IvZWNobyAtbiAiJDEkYXNfbmwiJwotICAgIGFzX2VjaG9fbj0nL3Vzci91Y2IvZWNobyAt bicKLSAgZWxzZQotICAgIGFzX2VjaG9fYm9keT0nZXZhbCBleHByICJYJDEiIDogIlhcXCguKlxc KSInCi0gICAgYXNfZWNob19uX2JvZHk9J2V2YWwKLSAgICAgIGFyZz0kMTsKLSAgICAgIGNhc2Ug JGFyZyBpbiAjKAotICAgICAgKiIkYXNfbmwiKikKLQlleHByICJYJGFyZyIgOiAiWFxcKC4qXFwp JGFzX25sIjsKLQlhcmc9YGV4cHIgIlgkYXJnIiA6ICIuKiRhc19ubFxcKC4qXFwpImA7OwotICAg ICAgZXNhYzsKLSAgICAgIGV4cHIgIlgkYXJnIiA6ICJYXFwoLipcXCkiIHwgdHIgLWQgIiRhc19u bCIKLSAgICAnCi0gICAgZXhwb3J0IGFzX2VjaG9fbl9ib2R5Ci0gICAgYXNfZWNob19uPSdzaCAt YyAkYXNfZWNob19uX2JvZHkgYXNfZWNobycKLSAgZmkKLSAgZXhwb3J0IGFzX2VjaG9fYm9keQot ICBhc19lY2hvPSdzaCAtYyAkYXNfZWNob19ib2R5IGFzX2VjaG8nCi1maQotCi0jIFRoZSB1c2Vy IGlzIGFsd2F5cyByaWdodC4KLWlmIHRlc3QgIiR7UEFUSF9TRVBBUkFUT1Irc2V0fSIgIT0gc2V0 OyB0aGVuCi0gIFBBVEhfU0VQQVJBVE9SPToKLSAgKFBBVEg9Jy9iaW47L2Jpbic7IEZQQVRIPSRQ QVRIOyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+JjEgJiYgewotICAgIChQQVRIPScvYmluOi9iaW4n OyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxIHx8Ci0gICAgICBQQVRIX1NF UEFSQVRPUj0nOycKLSAgfQotZmkKLQotCi0jIElGUwotIyBXZSBuZWVkIHNwYWNlLCB0YWIgYW5k IG5ldyBsaW5lLCBpbiBwcmVjaXNlbHkgdGhhdCBvcmRlci4gIFF1b3RpbmcgaXMKLSMgdGhlcmUg dG8gcHJldmVudCBlZGl0b3JzIGZyb20gY29tcGxhaW5pbmcgYWJvdXQgc3BhY2UtdGFiLgotIyAo SWYgX0FTX1BBVEhfV0FMSyB3ZXJlIGNhbGxlZCB3aXRoIElGUyB1bnNldCwgaXQgd291bGQgZGlz YWJsZSB3b3JkCi0jIHNwbGl0dGluZyBieSBzZXR0aW5nIElGUyB0byBlbXB0eSB2YWx1ZS4pCi1J RlM9IiAiIgkkYXNfbmwiCi0KLSMgRmluZCB3aG8gd2UgYXJlLiAgTG9vayBpbiB0aGUgcGF0aCBp ZiB3ZSBjb250YWluIG5vIGRpcmVjdG9yeSBzZXBhcmF0b3IuCi1hc19teXNlbGY9Ci1jYXNlICQw IGluICMoKAotICAqW1xcL10qICkgYXNfbXlzZWxmPSQwIDs7Ci0gICopIGFzX3NhdmVfSUZTPSRJ RlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLWZvciBhc19kaXIgaW4gJFBBVEgKLWRvCi0gIElGUz0k YXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICB0ZXN0IC1y ICIkYXNfZGlyLyQwIiAmJiBhc19teXNlbGY9JGFzX2Rpci8kMCAmJiBicmVhawotICBkb25lCi1J RlM9JGFzX3NhdmVfSUZTCi0KLSAgICAgOzsKLWVzYWMKLSMgV2UgZGlkIG5vdCBmaW5kIG91cnNl bHZlcywgbW9zdCBwcm9iYWJseSB3ZSB3ZXJlIHJ1biBhcyBgc2ggQ09NTUFORCcKLSMgaW4gd2hp Y2ggY2FzZSB3ZSBhcmUgbm90IHRvIGJlIGZvdW5kIGluIHRoZSBwYXRoLgotaWYgdGVzdCAieCRh c19teXNlbGYiID0geDsgdGhlbgotICBhc19teXNlbGY9JDAKLWZpCi1pZiB0ZXN0ICEgLWYgIiRh c19teXNlbGYiOyB0aGVuCi0gICRhc19lY2hvICIkYXNfbXlzZWxmOiBlcnJvcjogY2Fubm90IGZp bmQgbXlzZWxmOyByZXJ1biB3aXRoIGFuIGFic29sdXRlIGZpbGUgbmFtZSIgPiYyCi0gIGV4aXQg MQotZmkKLQotIyBVbnNldCB2YXJpYWJsZXMgdGhhdCB3ZSBkbyBub3QgbmVlZCBhbmQgd2hpY2gg Y2F1c2UgYnVncyAoZS5nLiBpbgotIyBwcmUtMy4wIFVXSU4ga3NoKS4gIEJ1dCBkbyBub3QgY2F1 c2UgYnVncyBpbiBiYXNoIDIuMDE7IHRoZSAifHwgZXhpdCAxIgotIyBzdXBwcmVzc2VzIGFueSAi U2VnbWVudGF0aW9uIGZhdWx0IiBtZXNzYWdlIHRoZXJlLiAgJygoJyBjb3VsZAotIyB0cmlnZ2Vy IGEgYnVnIGluIHBka3NoIDUuMi4xNC4KLWZvciBhc192YXIgaW4gQkFTSF9FTlYgRU5WIE1BSUwg TUFJTFBBVEgKLWRvIGV2YWwgdGVzdCB4XCR7JGFzX3ZhcitzZXR9ID0geHNldCBcCi0gICYmICgg KHVuc2V0ICRhc192YXIpIHx8IGV4aXQgMSkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0ICRhc192 YXIgfHwgOgotZG9uZQotUFMxPSckICcKLVBTMj0nPiAnCi1QUzQ9JysgJwotCi0jIE5MUyBudWlz YW5jZXMuCi1MQ19BTEw9QwotZXhwb3J0IExDX0FMTAotTEFOR1VBR0U9QwotZXhwb3J0IExBTkdV QUdFCi0KLSMgQ0RQQVRILgotKHVuc2V0IENEUEFUSCkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0 IENEUEFUSAotCi0jIFVzZSBhIHByb3BlciBpbnRlcm5hbCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0 byBlbnN1cmUgd2UgZG9uJ3QgZmFsbAotICAjIGludG8gYW4gaW5maW5pdGUgbG9vcCwgY29udGlu dW91c2x5IHJlLWV4ZWN1dGluZyBvdXJzZWx2ZXMuCi0gIGlmIHRlc3QgeCIke19hc19jYW5fcmVl eGVjfSIgIT0geG5vICYmIHRlc3QgIngkQ09ORklHX1NIRUxMIiAhPSB4OyB0aGVuCi0gICAgX2Fz X2Nhbl9yZWV4ZWM9bm87IGV4cG9ydCBfYXNfY2FuX3JlZXhlYzsKLSAgICAjIFdlIGNhbm5vdCB5 ZXQgYXNzdW1lIGEgZGVjZW50IHNoZWxsLCBzbyB3ZSBoYXZlIHRvIHByb3ZpZGUgYQotIyBuZXV0 cmFsaXphdGlvbiB2YWx1ZSBmb3Igc2hlbGxzIHdpdGhvdXQgdW5zZXQ7IGFuZCB0aGlzIGFsc28K LSMgd29ya3MgYXJvdW5kIHNoZWxscyB0aGF0IGNhbm5vdCB1bnNldCBub25leGlzdGVudCB2YXJp YWJsZXMuCi0jIFByZXNlcnZlIC12IGFuZCAteCB0byB0aGUgcmVwbGFjZW1lbnQgc2hlbGwuCi1C QVNIX0VOVj0vZGV2L251bGwKLUVOVj0vZGV2L251bGwKLSh1bnNldCBCQVNIX0VOVikgPi9kZXYv bnVsbCAyPiYxICYmIHVuc2V0IEJBU0hfRU5WIEVOVgotY2FzZSAkLSBpbiAjICgoKCgKLSAgKnYq eCogfCAqeCp2KiApIGFzX29wdHM9LXZ4IDs7Ci0gICp2KiApIGFzX29wdHM9LXYgOzsKLSAgKngq ICkgYXNfb3B0cz0teCA7OwotICAqICkgYXNfb3B0cz0gOzsKLWVzYWMKLWV4ZWMgJENPTkZJR19T SEVMTCAkYXNfb3B0cyAiJGFzX215c2VsZiIgJHsxKyIkQCJ9Ci0jIEFkbWl0dGVkbHksIHRoaXMg aXMgcXVpdGUgcGFyYW5vaWQsIHNpbmNlIGFsbCB0aGUga25vd24gc2hlbGxzIGJhaWwKLSMgb3V0 IGFmdGVyIGEgZmFpbGVkIGBleGVjJy4KLSRhc19lY2hvICIkMDogY291bGQgbm90IHJlLWV4ZWN1 dGUgd2l0aCAkQ09ORklHX1NIRUxMIiA+JjIKLWFzX2ZuX2V4aXQgMjU1Ci0gIGZpCi0gICMgV2Ug ZG9uJ3Qgd2FudCB0aGlzIHRvIHByb3BhZ2F0ZSB0byBvdGhlciBzdWJwcm9jZXNzZXMuCi0gICAg ICAgICAgeyBfYXNfY2FuX3JlZXhlYz07IHVuc2V0IF9hc19jYW5fcmVleGVjO30KLWlmIHRlc3Qg IngkQ09ORklHX1NIRUxMIiA9IHg7IHRoZW4KLSAgYXNfYm91cm5lX2NvbXBhdGlibGU9ImlmIHRl c3QgLW4gXCJcJHtaU0hfVkVSU0lPTitzZXR9XCIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwg Mj4mMTsgdGhlbiA6Ci0gIGVtdWxhdGUgc2gKLSAgTlVMTENNRD06Ci0gICMgUHJlLTQuMiB2ZXJz aW9ucyBvZiBac2ggZG8gd29yZCBzcGxpdHRpbmcgb24gXCR7MStcIlwkQFwifSwgd2hpY2gKLSAg IyBpcyBjb250cmFyeSB0byBvdXIgdXNhZ2UuICBEaXNhYmxlIHRoaXMgZmVhdHVyZS4KLSAgYWxp YXMgLWcgJ1wkezErXCJcJEBcIn0nPSdcIlwkQFwiJwotICBzZXRvcHQgTk9fR0xPQl9TVUJTVAot ZWxzZQotICBjYXNlIFxgKHNldCAtbykgMj4vZGV2L251bGxcYCBpbiAjKAotICAqcG9zaXgqKSA6 Ci0gICAgc2V0IC1vIHBvc2l4IDs7ICMoCi0gICopIDoKLSAgICAgOzsKLWVzYWMKLWZpCi0iCi0g IGFzX3JlcXVpcmVkPSJhc19mbl9yZXR1cm4gKCkgeyAoZXhpdCBcJDEpOyB9Ci1hc19mbl9zdWNj ZXNzICgpIHsgYXNfZm5fcmV0dXJuIDA7IH0KLWFzX2ZuX2ZhaWx1cmUgKCkgeyBhc19mbl9yZXR1 cm4gMTsgfQotYXNfZm5fcmV0X3N1Y2Nlc3MgKCkgeyByZXR1cm4gMDsgfQotYXNfZm5fcmV0X2Zh aWx1cmUgKCkgeyByZXR1cm4gMTsgfQotCi1leGl0Y29kZT0wCi1hc19mbl9zdWNjZXNzIHx8IHsg ZXhpdGNvZGU9MTsgZWNobyBhc19mbl9zdWNjZXNzIGZhaWxlZC47IH0KLWFzX2ZuX2ZhaWx1cmUg JiYgeyBleGl0Y29kZT0xOyBlY2hvIGFzX2ZuX2ZhaWx1cmUgc3VjY2VlZGVkLjsgfQotYXNfZm5f cmV0X3N1Y2Nlc3MgfHwgeyBleGl0Y29kZT0xOyBlY2hvIGFzX2ZuX3JldF9zdWNjZXNzIGZhaWxl ZC47IH0KLWFzX2ZuX3JldF9mYWlsdXJlICYmIHsgZXhpdGNvZGU9MTsgZWNobyBhc19mbl9yZXRf ZmFpbHVyZSBzdWNjZWVkZWQuOyB9Ci1pZiAoIHNldCB4OyBhc19mbl9yZXRfc3VjY2VzcyB5ICYm IHRlc3QgeCA9IFwiXCQxXCIgKTsgdGhlbiA6Ci0KLWVsc2UKLSAgZXhpdGNvZGU9MTsgZWNobyBw b3NpdGlvbmFsIHBhcmFtZXRlcnMgd2VyZSBub3Qgc2F2ZWQuCi1maQotdGVzdCB4XCRleGl0Y29k ZSA9IHgwIHx8IGV4aXQgMQotdGVzdCAteCAvIHx8IGV4aXQgMSIKLSAgYXNfc3VnZ2VzdGVkPSIg IGFzX2xpbmVub18xPSI7YXNfc3VnZ2VzdGVkPSRhc19zdWdnZXN0ZWQkTElORU5PO2FzX3N1Z2dl c3RlZD0kYXNfc3VnZ2VzdGVkIiBhc19saW5lbm9fMWE9XCRMSU5FTk8KLSAgYXNfbGluZW5vXzI9 Ijthc19zdWdnZXN0ZWQ9JGFzX3N1Z2dlc3RlZCRMSU5FTk87YXNfc3VnZ2VzdGVkPSRhc19zdWdn ZXN0ZWQiIGFzX2xpbmVub18yYT1cJExJTkVOTwotICBldmFsICd0ZXN0IFwieFwkYXNfbGluZW5v XzEnXCRhc19ydW4nXCIgIT0gXCJ4XCRhc19saW5lbm9fMidcJGFzX3J1bidcIiAmJgotICB0ZXN0 IFwieFxgZXhwciBcJGFzX2xpbmVub18xJ1wkYXNfcnVuJyArIDFcYFwiID0gXCJ4XCRhc19saW5l bm9fMidcJGFzX3J1bidcIicgfHwgZXhpdCAxIgotICBpZiAoZXZhbCAiJGFzX3JlcXVpcmVkIikg Mj4vZGV2L251bGw7IHRoZW4gOgotICBhc19oYXZlX3JlcXVpcmVkPXllcwotZWxzZQotICBhc19o YXZlX3JlcXVpcmVkPW5vCi1maQotICBpZiB0ZXN0IHgkYXNfaGF2ZV9yZXF1aXJlZCA9IHh5ZXMg JiYgKGV2YWwgIiRhc19zdWdnZXN0ZWQiKSAyPi9kZXYvbnVsbDsgdGhlbiA6Ci0KLWVsc2UKLSAg YXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotYXNfZm91bmQ9ZmFsc2UKLWZv ciBhc19kaXIgaW4gL2JpbiRQQVRIX1NFUEFSQVRPUi91c3IvYmluJFBBVEhfU0VQQVJBVE9SJFBB VEgKLWRvCi0gIElGUz0kYXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGly PS4KLSAgYXNfZm91bmQ9OgotICBjYXNlICRhc19kaXIgaW4gIygKLQkgLyopCi0JICAgZm9yIGFz X2Jhc2UgaW4gc2ggYmFzaCBrc2ggc2g1OyBkbwotCSAgICAgIyBUcnkgb25seSBzaGVsbHMgdGhh dCBleGlzdCwgdG8gc2F2ZSBzZXZlcmFsIGZvcmtzLgotCSAgICAgYXNfc2hlbGw9JGFzX2Rpci8k YXNfYmFzZQotCSAgICAgaWYgeyB0ZXN0IC1mICIkYXNfc2hlbGwiIHx8IHRlc3QgLWYgIiRhc19z aGVsbC5leGUiOyB9ICYmCi0JCSAgICB7ICRhc19lY2hvICIkYXNfYm91cm5lX2NvbXBhdGlibGUi IiRhc19yZXF1aXJlZCIgfCBhc19ydW49YSAiJGFzX3NoZWxsIjsgfSAyPi9kZXYvbnVsbDsgdGhl biA6Ci0gIENPTkZJR19TSEVMTD0kYXNfc2hlbGwgYXNfaGF2ZV9yZXF1aXJlZD15ZXMKLQkJICAg aWYgeyAkYXNfZWNobyAiJGFzX2JvdXJuZV9jb21wYXRpYmxlIiIkYXNfc3VnZ2VzdGVkIiB8IGFz X3J1bj1hICIkYXNfc2hlbGwiOyB9IDI+L2Rldi9udWxsOyB0aGVuIDoKLSAgYnJlYWsgMgotZmkK LWZpCi0JICAgZG9uZTs7Ci0gICAgICAgZXNhYwotICBhc19mb3VuZD1mYWxzZQotZG9uZQotJGFz X2ZvdW5kIHx8IHsgaWYgeyB0ZXN0IC1mICIkU0hFTEwiIHx8IHRlc3QgLWYgIiRTSEVMTC5leGUi OyB9ICYmCi0JICAgICAgeyAkYXNfZWNobyAiJGFzX2JvdXJuZV9jb21wYXRpYmxlIiIkYXNfcmVx dWlyZWQiIHwgYXNfcnVuPWEgIiRTSEVMTCI7IH0gMj4vZGV2L251bGw7IHRoZW4gOgotICBDT05G SUdfU0hFTEw9JFNIRUxMIGFzX2hhdmVfcmVxdWlyZWQ9eWVzCi1maTsgfQotSUZTPSRhc19zYXZl X0lGUwotCi0KLSAgICAgIGlmIHRlc3QgIngkQ09ORklHX1NIRUxMIiAhPSB4OyB0aGVuIDoKLSAg ZXhwb3J0IENPTkZJR19TSEVMTAotICAgICAgICAgICAgICMgV2UgY2Fubm90IHlldCBhc3N1bWUg YSBkZWNlbnQgc2hlbGwsIHNvIHdlIGhhdmUgdG8gcHJvdmlkZSBhCi0jIG5ldXRyYWxpemF0aW9u IHZhbHVlIGZvciBzaGVsbHMgd2l0aG91dCB1bnNldDsgYW5kIHRoaXMgYWxzbwotIyB3b3JrcyBh cm91bmQgc2hlbGxzIHRoYXQgY2Fubm90IHVuc2V0IG5vbmV4aXN0ZW50IHZhcmlhYmxlcy4KLSMg UHJlc2VydmUgLXYgYW5kIC14IHRvIHRoZSByZXBsYWNlbWVudCBzaGVsbC4KLUJBU0hfRU5WPS9k ZXYvbnVsbAotRU5WPS9kZXYvbnVsbAotKHVuc2V0IEJBU0hfRU5WKSA+L2Rldi9udWxsIDI+JjEg JiYgdW5zZXQgQkFTSF9FTlYgRU5WCi1jYXNlICQtIGluICMgKCgoKAotICAqdip4KiB8ICp4KnYq ICkgYXNfb3B0cz0tdnggOzsKLSAgKnYqICkgYXNfb3B0cz0tdiA7OwotICAqeCogKSBhc19vcHRz PS14IDs7Ci0gICogKSBhc19vcHRzPSA7OwotZXNhYwotZXhlYyAkQ09ORklHX1NIRUxMICRhc19v cHRzICIkYXNfbXlzZWxmIiAkezErIiRAIn0KLSMgQWRtaXR0ZWRseSwgdGhpcyBpcyBxdWl0ZSBw YXJhbm9pZCwgc2luY2UgYWxsIHRoZSBrbm93biBzaGVsbHMgYmFpbAotIyBvdXQgYWZ0ZXIgYSBm YWlsZWQgYGV4ZWMnLgotJGFzX2VjaG8gIiQwOiBjb3VsZCBub3QgcmUtZXhlY3V0ZSB3aXRoICRD T05GSUdfU0hFTEwiID4mMgotZXhpdCAyNTUKLWZpCi0KLSAgICBpZiB0ZXN0IHgkYXNfaGF2ZV9y ZXF1aXJlZCA9IHhubzsgdGhlbiA6Ci0gICRhc19lY2hvICIkMDogVGhpcyBzY3JpcHQgcmVxdWly ZXMgYSBzaGVsbCBtb3JlIG1vZGVybiB0aGFuIGFsbCIKLSAgJGFzX2VjaG8gIiQwOiB0aGUgc2hl bGxzIHRoYXQgSSBmb3VuZCBvbiB5b3VyIHN5c3RlbS4iCi0gIGlmIHRlc3QgeCR7WlNIX1ZFUlNJ T04rc2V0fSA9IHhzZXQgOyB0aGVuCi0gICAgJGFzX2VjaG8gIiQwOiBJbiBwYXJ0aWN1bGFyLCB6 c2ggJFpTSF9WRVJTSU9OIGhhcyBidWdzIGFuZCBzaG91bGQiCi0gICAgJGFzX2VjaG8gIiQwOiBi ZSB1cGdyYWRlZCB0byB6c2ggNC4zLjQgb3IgbGF0ZXIuIgotICBlbHNlCi0gICAgJGFzX2VjaG8g IiQwOiBQbGVhc2UgdGVsbCBidWctYXV0b2NvbmZAZ251Lm9yZyBhbmQKLSQwOiB4ZW4tZGV2ZWxA bGlzdHMueGVuLm9yZyBhYm91dCB5b3VyIHN5c3RlbSwgaW5jbHVkaW5nCi0kMDogYW55IGVycm9y IHBvc3NpYmx5IG91dHB1dCBiZWZvcmUgdGhpcyBtZXNzYWdlLiBUaGVuCi0kMDogaW5zdGFsbCBh IG1vZGVybiBzaGVsbCwgb3IgbWFudWFsbHkgcnVuIHRoZSBzY3JpcHQKLSQwOiB1bmRlciBzdWNo IGEgc2hlbGwgaWYgeW91IGRvIGhhdmUgb25lLiIKLSAgZmkKLSAgZXhpdCAxCi1maQotZmkKLWZp Ci1TSEVMTD0ke0NPTkZJR19TSEVMTC0vYmluL3NofQotZXhwb3J0IFNIRUxMCi0jIFVuc2V0IG1v cmUgdmFyaWFibGVzIGtub3duIHRvIGludGVyZmVyZSB3aXRoIGJlaGF2aW9yIG9mIGNvbW1vbiB0 b29scy4KLUNMSUNPTE9SX0ZPUkNFPSBHUkVQX09QVElPTlM9Ci11bnNldCBDTElDT0xPUl9GT1JD RSBHUkVQX09QVElPTlMKLQotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0jIyBNNHNoIFNo ZWxsIEZ1bmN0aW9ucy4gIyMKLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIyBhc19mbl91 bnNldCBWQVIKLSMgLS0tLS0tLS0tLS0tLS0tCi0jIFBvcnRhYmx5IHVuc2V0IFZBUi4KLWFzX2Zu X3Vuc2V0ICgpCi17Ci0gIHsgZXZhbCAkMT07IHVuc2V0ICQxO30KLX0KLWFzX3Vuc2V0PWFzX2Zu X3Vuc2V0Ci0KLSMgYXNfZm5fc2V0X3N0YXR1cyBTVEFUVVMKLSMgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KLSMgU2V0ICQ/IHRvIFNUQVRVUywgd2l0aG91dCBmb3JraW5nLgotYXNfZm5fc2V0X3N0 YXR1cyAoKQotewotICByZXR1cm4gJDEKLX0gIyBhc19mbl9zZXRfc3RhdHVzCi0KLSMgYXNfZm5f ZXhpdCBTVEFUVVMKLSMgLS0tLS0tLS0tLS0tLS0tLS0KLSMgRXhpdCB0aGUgc2hlbGwgd2l0aCBT VEFUVVMsIGV2ZW4gaW4gYSAidHJhcCAwIiBvciAic2V0IC1lIiBjb250ZXh0LgotYXNfZm5fZXhp dCAoKQotewotICBzZXQgK2UKLSAgYXNfZm5fc2V0X3N0YXR1cyAkMQotICBleGl0ICQxCi19ICMg YXNfZm5fZXhpdAotCi0jIGFzX2ZuX21rZGlyX3AKLSMgLS0tLS0tLS0tLS0tLQotIyBDcmVhdGUg IiRhc19kaXIiIGFzIGEgZGlyZWN0b3J5LCBpbmNsdWRpbmcgcGFyZW50cyBpZiBuZWNlc3Nhcnku Ci1hc19mbl9ta2Rpcl9wICgpCi17Ci0KLSAgY2FzZSAkYXNfZGlyIGluICMoCi0gIC0qKSBhc19k aXI9Li8kYXNfZGlyOzsKLSAgZXNhYwotICB0ZXN0IC1kICIkYXNfZGlyIiB8fCBldmFsICRhc19t a2Rpcl9wIHx8IHsKLSAgICBhc19kaXJzPQotICAgIHdoaWxlIDo7IGRvCi0gICAgICBjYXNlICRh c19kaXIgaW4gIygKLSAgICAgICpcJyopIGFzX3FkaXI9YCRhc19lY2hvICIkYXNfZGlyIiB8IHNl ZCAicy8nLydcXFxcXFxcXCcnL2ciYDs7ICMnKAotICAgICAgKikgYXNfcWRpcj0kYXNfZGlyOzsK LSAgICAgIGVzYWMKLSAgICAgIGFzX2RpcnM9IickYXNfcWRpcicgJGFzX2RpcnMiCi0gICAgICBh c19kaXI9YCRhc19kaXJuYW1lIC0tICIkYXNfZGlyIiB8fAotJGFzX2V4cHIgWCIkYXNfZGlyIiA6 ICdYXCguKlteL11cKS8vKlteL11bXi9dKi8qJCcgXHwgXAotCSBYIiRhc19kaXIiIDogJ1hcKC8v XClbXi9dJyBcfCBcCi0JIFgiJGFzX2RpciIgOiAnWFwoLy9cKSQnIFx8IFwKLQkgWCIkYXNfZGly IiA6ICdYXCgvXCknIFx8IC4gMj4vZGV2L251bGwgfHwKLSRhc19lY2hvIFgiJGFzX2RpciIgfAot ICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97Ci0JICAgIHMvL1wxLwot CSAgICBxCi0JICB9Ci0JICAvXlhcKFwvXC9cKVteL10uKi97Ci0JICAgIHMvL1wxLwotCSAgICBx Ci0JICB9Ci0JICAvXlhcKFwvXC9cKSQvewotCSAgICBzLy9cMS8KLQkgICAgcQotCSAgfQotCSAg L15YXChcL1wpLiovewotCSAgICBzLy9cMS8KLQkgICAgcQotCSAgfQotCSAgcy8uKi8uLzsgcSdg Ci0gICAgICB0ZXN0IC1kICIkYXNfZGlyIiAmJiBicmVhawotICAgIGRvbmUKLSAgICB0ZXN0IC16 ICIkYXNfZGlycyIgfHwgZXZhbCAibWtkaXIgJGFzX2RpcnMiCi0gIH0gfHwgdGVzdCAtZCAiJGFz X2RpciIgfHwgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBjcmVhdGUgZGlyZWN0b3J5ICRhc19kaXIi Ci0KLQotfSAjIGFzX2ZuX21rZGlyX3AKLQotIyBhc19mbl9leGVjdXRhYmxlX3AgRklMRQotIyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBUZXN0IGlmIEZJTEUgaXMgYW4gZXhlY3V0YWJsZSBy ZWd1bGFyIGZpbGUuCi1hc19mbl9leGVjdXRhYmxlX3AgKCkKLXsKLSAgdGVzdCAtZiAiJDEiICYm IHRlc3QgLXggIiQxIgotfSAjIGFzX2ZuX2V4ZWN1dGFibGVfcAotIyBhc19mbl9hcHBlbmQgVkFS IFZBTFVFCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQXBwZW5kIHRoZSB0ZXh0IGluIFZB TFVFIHRvIHRoZSBlbmQgb2YgdGhlIGRlZmluaXRpb24gY29udGFpbmVkIGluIFZBUi4gVGFrZQot IyBhZHZhbnRhZ2Ugb2YgYW55IHNoZWxsIG9wdGltaXphdGlvbnMgdGhhdCBhbGxvdyBhbW9ydGl6 ZWQgbGluZWFyIGdyb3d0aCBvdmVyCi0jIHJlcGVhdGVkIGFwcGVuZHMsIGluc3RlYWQgb2YgdGhl IHR5cGljYWwgcXVhZHJhdGljIGdyb3d0aCBwcmVzZW50IGluIG5haXZlCi0jIGltcGxlbWVudGF0 aW9ucy4KLWlmIChldmFsICJhc192YXI9MTsgYXNfdmFyKz0yOyB0ZXN0IHhcJGFzX3ZhciA9IHgx MiIpIDI+L2Rldi9udWxsOyB0aGVuIDoKLSAgZXZhbCAnYXNfZm5fYXBwZW5kICgpCi0gIHsKLSAg ICBldmFsICQxKz1cJDIKLSAgfScKLWVsc2UKLSAgYXNfZm5fYXBwZW5kICgpCi0gIHsKLSAgICBl dmFsICQxPVwkJDFcJDIKLSAgfQotZmkgIyBhc19mbl9hcHBlbmQKLQotIyBhc19mbl9hcml0aCBB UkcuLi4KLSMgLS0tLS0tLS0tLS0tLS0tLS0tCi0jIFBlcmZvcm0gYXJpdGhtZXRpYyBldmFsdWF0 aW9uIG9uIHRoZSBBUkdzLCBhbmQgc3RvcmUgdGhlIHJlc3VsdCBpbiB0aGUKLSMgZ2xvYmFsICRh c192YWwuIFRha2UgYWR2YW50YWdlIG9mIHNoZWxscyB0aGF0IGNhbiBhdm9pZCBmb3Jrcy4gVGhl IGFyZ3VtZW50cwotIyBtdXN0IGJlIHBvcnRhYmxlIGFjcm9zcyAkKCgpKSBhbmQgZXhwci4KLWlm IChldmFsICJ0ZXN0IFwkKCggMSArIDEgKSkgPSAyIikgMj4vZGV2L251bGw7IHRoZW4gOgotICBl dmFsICdhc19mbl9hcml0aCAoKQotICB7Ci0gICAgYXNfdmFsPSQoKCAkKiApKQotICB9JwotZWxz ZQotICBhc19mbl9hcml0aCAoKQotICB7Ci0gICAgYXNfdmFsPWBleHByICIkQCIgfHwgdGVzdCAk PyAtZXEgMWAKLSAgfQotZmkgIyBhc19mbl9hcml0aAotCi0KLSMgYXNfZm5fZXJyb3IgU1RBVFVT IEVSUk9SIFtMSU5FTk8gTE9HX0ZEXQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCi0jIE91dHB1dCAiYGJhc2VuYW1lICQwYDogZXJyb3I6IEVSUk9SIiB0byBzdGRl cnIuIElmIExJTkVOTyBhbmQgTE9HX0ZEIGFyZQotIyBwcm92aWRlZCwgYWxzbyBvdXRwdXQgdGhl IGVycm9yIHRvIExPR19GRCwgcmVmZXJlbmNpbmcgTElORU5PLiBUaGVuIGV4aXQgdGhlCi0jIHNj cmlwdCB3aXRoIFNUQVRVUywgdXNpbmcgMSBpZiB0aGF0IHdhcyAwLgotYXNfZm5fZXJyb3IgKCkK LXsKLSAgYXNfc3RhdHVzPSQxOyB0ZXN0ICRhc19zdGF0dXMgLWVxIDAgJiYgYXNfc3RhdHVzPTEK LSAgaWYgdGVzdCAiJDQiOyB0aGVuCi0gICAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMyJ9IGFz X2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjawotICAgICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiAkMiIgPiYkNAotICBmaQot ICAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogJDIiID4mMgotICBhc19mbl9leGl0ICRhc19zdGF0 dXMKLX0gIyBhc19mbl9lcnJvcgotCi1pZiBleHByIGEgOiAnXChhXCknID4vZGV2L251bGwgMj4m MSAmJgotICAgdGVzdCAiWGBleHByIDAwMDAxIDogJy4qXCguLi5cKSdgIiA9IFgwMDE7IHRoZW4K LSAgYXNfZXhwcj1leHByCi1lbHNlCi0gIGFzX2V4cHI9ZmFsc2UKLWZpCi0KLWlmIChiYXNlbmFt ZSAtLSAvKSA+L2Rldi9udWxsIDI+JjEgJiYgdGVzdCAiWGBiYXNlbmFtZSAtLSAvIDI+JjFgIiA9 ICJYLyI7IHRoZW4KLSAgYXNfYmFzZW5hbWU9YmFzZW5hbWUKLWVsc2UKLSAgYXNfYmFzZW5hbWU9 ZmFsc2UKLWZpCi0KLWlmIChhc19kaXI9YGRpcm5hbWUgLS0gL2AgJiYgdGVzdCAiWCRhc19kaXIi ID0gWC8pID4vZGV2L251bGwgMj4mMTsgdGhlbgotICBhc19kaXJuYW1lPWRpcm5hbWUKLWVsc2UK LSAgYXNfZGlybmFtZT1mYWxzZQotZmkKLQotYXNfbWU9YCRhc19iYXNlbmFtZSAtLSAiJDAiIHx8 Ci0kYXNfZXhwciBYLyIkMCIgOiAnLiovXChbXi9dW14vXSpcKS8qJCcgXHwgXAotCSBYIiQwIiA6 ICdYXCgvL1wpJCcgXHwgXAotCSBYIiQwIiA6ICdYXCgvXCknIFx8IC4gMj4vZGV2L251bGwgfHwK LSRhc19lY2hvIFgvIiQwIiB8Ci0gICAgc2VkICcvXi4qXC9cKFteL11bXi9dKlwpXC8qJC97Ci0J ICAgIHMvL1wxLwotCSAgICBxCi0JICB9Ci0JICAvXlhcL1woXC9cL1wpJC97Ci0JICAgIHMvL1wx LwotCSAgICBxCi0JICB9Ci0JICAvXlhcL1woXC9cKS4qL3sKLQkgICAgcy8vXDEvCi0JICAgIHEK LQkgIH0KLQkgIHMvLiovLi87IHEnYAotCi0jIEF2b2lkIGRlcGVuZGluZyB1cG9uIENoYXJhY3Rl ciBSYW5nZXMuCi1hc19jcl9sZXR0ZXJzPSdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicKLWFz X2NyX0xFVFRFUlM9J0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJwotYXNfY3JfTGV0dGVycz0k YXNfY3JfbGV0dGVycyRhc19jcl9MRVRURVJTCi1hc19jcl9kaWdpdHM9JzAxMjM0NTY3ODknCi1h c19jcl9hbG51bT0kYXNfY3JfTGV0dGVycyRhc19jcl9kaWdpdHMKLQotCi0gIGFzX2xpbmVub18x PSRMSU5FTk8gYXNfbGluZW5vXzFhPSRMSU5FTk8KLSAgYXNfbGluZW5vXzI9JExJTkVOTyBhc19s aW5lbm9fMmE9JExJTkVOTwotICBldmFsICd0ZXN0ICJ4JGFzX2xpbmVub18xJyRhc19ydW4nIiAh PSAieCRhc19saW5lbm9fMickYXNfcnVuJyIgJiYKLSAgdGVzdCAieGBleHByICRhc19saW5lbm9f MSckYXNfcnVuJyArIDFgIiA9ICJ4JGFzX2xpbmVub18yJyRhc19ydW4nIicgfHwgewotICAjIEJs YW1lIExlZSBFLiBNY01haG9uICgxOTMxLTE5ODkpIGZvciBzZWQncyBzeW50YXguICA6LSkKLSAg c2VkIC1uICcKLSAgICBwCi0gICAgL1skXUxJTkVOTy89Ci0gICcgPCRhc19teXNlbGYgfAotICAg IHNlZCAnCi0gICAgICBzL1skXUxJTkVOTy4qLyYtLwotICAgICAgdCBsaW5lbm8KLSAgICAgIGIK LSAgICAgIDpsaW5lbm8KLSAgICAgIE4KLSAgICAgIDpsb29wCi0gICAgICBzL1skXUxJTkVOT1wo W14nJGFzX2NyX2FsbnVtJ19dLipcblwpXCguKlwpL1wyXDFcMi8KLSAgICAgIHQgbG9vcAotICAg ICAgcy8tXG4uKi8vCi0gICAgJyA+JGFzX21lLmxpbmVubyAmJgotICBjaG1vZCAreCAiJGFzX21l LmxpbmVubyIgfHwKLSAgICB7ICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgY3JlYXRl ICRhc19tZS5saW5lbm87IHJlcnVuIHdpdGggYSBQT1NJWCBzaGVsbCIgPiYyOyBhc19mbl9leGl0 IDE7IH0KLQotICAjIElmIHdlIGhhZCB0byByZS1leGVjdXRlIHdpdGggJENPTkZJR19TSEVMTCwg d2UncmUgZW5zdXJlZCB0byBoYXZlCi0gICMgYWxyZWFkeSBkb25lIHRoYXQsIHNvIGVuc3VyZSB3 ZSBkb24ndCB0cnkgdG8gZG8gc28gYWdhaW4gYW5kIGZhbGwKLSAgIyBpbiBhbiBpbmZpbml0ZSBs b29wLiAgVGhpcyBoYXMgYWxyZWFkeSBoYXBwZW5lZCBpbiBwcmFjdGljZS4KLSAgX2FzX2Nhbl9y ZWV4ZWM9bm87IGV4cG9ydCBfYXNfY2FuX3JlZXhlYwotICAjIERvbid0IHRyeSB0byBleGVjIGFz IGl0IGNoYW5nZXMgJFswXSwgY2F1c2luZyBhbGwgc29ydCBvZiBwcm9ibGVtcwotICAjICh0aGUg ZGlybmFtZSBvZiAkWzBdIGlzIG5vdCB0aGUgcGxhY2Ugd2hlcmUgd2UgbWlnaHQgZmluZCB0aGUK LSAgIyBvcmlnaW5hbCBhbmQgc28gb24uICBBdXRvY29uZiBpcyBlc3BlY2lhbGx5IHNlbnNpdGl2 ZSB0byB0aGlzKS4KLSAgLiAiLi8kYXNfbWUubGluZW5vIgotICAjIEV4aXQgc3RhdHVzIGlzIHRo YXQgb2YgdGhlIGxhc3QgY29tbWFuZC4KLSAgZXhpdAotfQotCi1FQ0hPX0M9IEVDSE9fTj0gRUNI T19UPQotY2FzZSBgZWNobyAtbiB4YCBpbiAjKCgoKCgKLS1uKikKLSAgY2FzZSBgZWNobyAneHlc YydgIGluCi0gICpjKikgRUNIT19UPScJJzs7CSMgRUNIT19UIGlzIHNpbmdsZSB0YWIgY2hhcmFj dGVyLgotICB4eSkgIEVDSE9fQz0nXGMnOzsKLSAgKikgICBlY2hvIGBlY2hvIGtzaDg4IGJ1ZyBv biBBSVggNi4xYCA+IC9kZXYvbnVsbAotICAgICAgIEVDSE9fVD0nCSc7OwotICBlc2FjOzsKLSop Ci0gIEVDSE9fTj0nLW4nOzsKLWVzYWMKLQotcm0gLWYgY29uZiQkIGNvbmYkJC5leGUgY29uZiQk LmZpbGUKLWlmIHRlc3QgLWQgY29uZiQkLmRpcjsgdGhlbgotICBybSAtZiBjb25mJCQuZGlyL2Nv bmYkJC5maWxlCi1lbHNlCi0gIHJtIC1mIGNvbmYkJC5kaXIKLSAgbWtkaXIgY29uZiQkLmRpciAy Pi9kZXYvbnVsbAotZmkKLWlmIChlY2hvID5jb25mJCQuZmlsZSkgMj4vZGV2L251bGw7IHRoZW4K LSAgaWYgbG4gLXMgY29uZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVuCi0gICAgYXNf bG5fcz0nbG4gLXMnCi0gICAgIyAuLi4gYnV0IHRoZXJlIGFyZSB0d28gZ290Y2hhczoKLSAgICAj IDEpIE9uIE1TWVMsIGJvdGggYGxuIC1zIGZpbGUgZGlyJyBhbmQgYGxuIGZpbGUgZGlyJyBmYWls LgotICAgICMgMikgREpHUFAgPCAyLjA0IGhhcyBubyBzeW1saW5rczsgYGxuIC1zJyBjcmVhdGVz IGEgd3JhcHBlciBleGVjdXRhYmxlLgotICAgICMgSW4gYm90aCBjYXNlcywgd2UgaGF2ZSB0byBk ZWZhdWx0IHRvIGBjcCAtcFInLgotICAgIGxuIC1zIGNvbmYkJC5maWxlIGNvbmYkJC5kaXIgMj4v ZGV2L251bGwgJiYgdGVzdCAhIC1mIGNvbmYkJC5leGUgfHwKLSAgICAgIGFzX2xuX3M9J2NwIC1w UicKLSAgZWxpZiBsbiBjb25mJCQuZmlsZSBjb25mJCQgMj4vZGV2L251bGw7IHRoZW4KLSAgICBh c19sbl9zPWxuCi0gIGVsc2UKLSAgICBhc19sbl9zPSdjcCAtcFInCi0gIGZpCi1lbHNlCi0gIGFz X2xuX3M9J2NwIC1wUicKLWZpCi1ybSAtZiBjb25mJCQgY29uZiQkLmV4ZSBjb25mJCQuZGlyL2Nv bmYkJC5maWxlIGNvbmYkJC5maWxlCi1ybWRpciBjb25mJCQuZGlyIDI+L2Rldi9udWxsCi0KLWlm IG1rZGlyIC1wIC4gMj4vZGV2L251bGw7IHRoZW4KLSAgYXNfbWtkaXJfcD0nbWtkaXIgLXAgIiRh c19kaXIiJwotZWxzZQotICB0ZXN0IC1kIC4vLXAgJiYgcm1kaXIgLi8tcAotICBhc19ta2Rpcl9w PWZhbHNlCi1maQotCi1hc190ZXN0X3g9J3Rlc3QgLXgnCi1hc19leGVjdXRhYmxlX3A9YXNfZm5f ZXhlY3V0YWJsZV9wCi0KLSMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9udG8gYSB2 YWxpZCBDUFAgbmFtZS4KLWFzX3RyX2NwcD0iZXZhbCBzZWQgJ3klKiRhc19jcl9sZXR0ZXJzJVAk YXNfY3JfTEVUVEVSUyU7cyVbXl8kYXNfY3JfYWxudW1dJV8lZyciCi0KLSMgU2VkIGV4cHJlc3Np b24gdG8gbWFwIGEgc3RyaW5nIG9udG8gYSB2YWxpZCB2YXJpYWJsZSBuYW1lLgotYXNfdHJfc2g9 ImV2YWwgc2VkICd5JSorJXBwJTtzJVteXyRhc19jcl9hbG51bV0lXyVnJyIKLQotCi10ZXN0IC1u ICIkREpESVIiIHx8IGV4ZWMgNzwmMCA8L2Rldi9udWxsCi1leGVjIDY+JjEKLQotIyBOYW1lIG9m IHRoZSBob3N0LgotIyBob3N0bmFtZSBvbiBzb21lIHN5c3RlbXMgKFNWUjMuMiwgb2xkIEdOVS9M aW51eCkgcmV0dXJucyBhIGJvZ3VzIGV4aXQgc3RhdHVzLAotIyBzbyB1bmFtZSBnZXRzIHJ1biB0 b28uCi1hY19ob3N0bmFtZT1gKGhvc3RuYW1lIHx8IHVuYW1lIC1uKSAyPi9kZXYvbnVsbCB8IHNl ZCAxcWAKLQotIwotIyBJbml0aWFsaXphdGlvbnMuCi0jCi1hY19kZWZhdWx0X3ByZWZpeD0vdXNy L2xvY2FsCi1hY19jbGVhbl9maWxlcz0KLWFjX2NvbmZpZ19saWJvYmpfZGlyPS4KLUxJQk9CSlM9 Ci1jcm9zc19jb21waWxpbmc9bm8KLXN1YmRpcnM9Ci1NRkxBR1M9Ci1NQUtFRkxBR1M9Ci0KLSMg SWRlbnRpdHkgb2YgdGhpcyBwYWNrYWdlLgotUEFDS0FHRV9OQU1FPSdYZW4gSHlwZXJ2aXNvciBE b2N1bWVudGF0aW9uJwotUEFDS0FHRV9UQVJOQU1FPSd4ZW4nCi1QQUNLQUdFX1ZFUlNJT049JzQu MTMnCi1QQUNLQUdFX1NUUklORz0nWGVuIEh5cGVydmlzb3IgRG9jdW1lbnRhdGlvbiA0LjEzJwot UEFDS0FHRV9CVUdSRVBPUlQ9J3hlbi1kZXZlbEBsaXN0cy54ZW4ub3JnJwotUEFDS0FHRV9VUkw9 J2h0dHA6Ly93d3cueGVuLm9yZy8nCi0KLWFjX3VuaXF1ZV9maWxlPSJtaXNjL3hlbi1jb21tYW5k LWxpbmUucGFuZG9jIgotYWNfc3Vic3RfdmFycz0nTFRMSUJPQkpTCi1MSUJPQkpTCi1QRVJMCi1Q QU5ET0MKLVBPRDJURVhUCi1QT0QySFRNTAotUE9EMk1BTgotRklHMkRFVgotREVCVUdfRElSCi1Y RU5fRFVNUF9ESVIKLVhFTl9QQUdJTkdfRElSCi1YRU5fTE9DS19ESVIKLVhFTl9TQ1JJUFRfRElS Ci1YRU5fQ09ORklHX0RJUgotSU5JVERfRElSCi1DT05GSUdfRElSCi1TSEFSRURJUgotWEVOX0xJ Ql9ESVIKLVhFTl9SVU5fU1RPUkVECi1YRU5fTElCX1NUT1JFRAotWEVOX0xPR19ESVIKLVhFTl9S VU5fRElSCi1YRU5GSVJNV0FSRURJUgotTElCRVhFQ19JTkMKLUxJQkVYRUNfTElCCi1MSUJFWEVD X0JJTgotTElCRVhFQwotQ09ORklHX0xFQUZfRElSCi1YRU5TVE9SRURfUE9SVAotWEVOU1RPUkVE X0tWQQotdGFyZ2V0X2FsaWFzCi1ob3N0X2FsaWFzCi1idWlsZF9hbGlhcwotTElCUwotRUNIT19U Ci1FQ0hPX04KLUVDSE9fQwotREVGUwotbWFuZGlyCi1sb2NhbGVkaXIKLWxpYmRpcgotcHNkaXIK LXBkZmRpcgotZHZpZGlyCi1odG1sZGlyCi1pbmZvZGlyCi1kb2NkaXIKLW9sZGluY2x1ZGVkaXIK LWluY2x1ZGVkaXIKLXJ1bnN0YXRlZGlyCi1sb2NhbHN0YXRlZGlyCi1zaGFyZWRzdGF0ZWRpcgot c3lzY29uZmRpcgotZGF0YWRpcgotZGF0YXJvb3RkaXIKLWxpYmV4ZWNkaXIKLXNiaW5kaXIKLWJp bmRpcgotcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZQotcHJlZml4Ci1leGVjX3ByZWZpeAotUEFDS0FH RV9VUkwKLVBBQ0tBR0VfQlVHUkVQT1JUCi1QQUNLQUdFX1NUUklORwotUEFDS0FHRV9WRVJTSU9O Ci1QQUNLQUdFX1RBUk5BTUUKLVBBQ0tBR0VfTkFNRQotUEFUSF9TRVBBUkFUT1IKLVNIRUxMJwot YWNfc3Vic3RfZmlsZXM9JycKLWFjX3VzZXJfb3B0cz0nCi1lbmFibGVfb3B0aW9uX2NoZWNraW5n Ci13aXRoX2luaXRkZGlyCi13aXRoX3N5c2NvbmZpZ19sZWFmX2Rpcgotd2l0aF9saWJleGVjX2xl YWZfZGlyCi13aXRoX3hlbl9kdW1wZGlyCi13aXRoX3J1bmRpcgotd2l0aF9kZWJ1Z2RpcgotJwot ICAgICAgYWNfcHJlY2lvdXNfdmFycz0nYnVpbGRfYWxpYXMKLWhvc3RfYWxpYXMKLXRhcmdldF9h bGlhcwotRklHMkRFVgotUE9EMk1BTgotUE9EMkhUTUwKLVBPRDJURVhUCi1QQU5ET0MKLVBFUkwn Ci0KLQotIyBJbml0aWFsaXplIHNvbWUgdmFyaWFibGVzIHNldCBieSBvcHRpb25zLgotYWNfaW5p dF9oZWxwPQotYWNfaW5pdF92ZXJzaW9uPWZhbHNlCi1hY191bnJlY29nbml6ZWRfb3B0cz0KLWFj X3VucmVjb2duaXplZF9zZXA9Ci0jIFRoZSB2YXJpYWJsZXMgaGF2ZSB0aGUgc2FtZSBuYW1lcyBh cyB0aGUgb3B0aW9ucywgd2l0aAotIyBkYXNoZXMgY2hhbmdlZCB0byB1bmRlcmxpbmVzLgotY2Fj aGVfZmlsZT0vZGV2L251bGwKLWV4ZWNfcHJlZml4PU5PTkUKLW5vX2NyZWF0ZT0KLW5vX3JlY3Vy c2lvbj0KLXByZWZpeD1OT05FCi1wcm9ncmFtX3ByZWZpeD1OT05FCi1wcm9ncmFtX3N1ZmZpeD1O T05FCi1wcm9ncmFtX3RyYW5zZm9ybV9uYW1lPXMseCx4LAotc2lsZW50PQotc2l0ZT0KLXNyY2Rp cj0KLXZlcmJvc2U9Ci14X2luY2x1ZGVzPU5PTkUKLXhfbGlicmFyaWVzPU5PTkUKLQotIyBJbnN0 YWxsYXRpb24gZGlyZWN0b3J5IG9wdGlvbnMuCi0jIFRoZXNlIGFyZSBsZWZ0IHVuZXhwYW5kZWQg c28gdXNlcnMgY2FuICJtYWtlIGluc3RhbGwgZXhlY19wcmVmaXg9L2ZvbyIKLSMgYW5kIGFsbCB0 aGUgdmFyaWFibGVzIHRoYXQgYXJlIHN1cHBvc2VkIHRvIGJlIGJhc2VkIG9uIGV4ZWNfcHJlZml4 Ci0jIGJ5IGRlZmF1bHQgd2lsbCBhY3R1YWxseSBjaGFuZ2UuCi0jIFVzZSBicmFjZXMgaW5zdGVh ZCBvZiBwYXJlbnMgYmVjYXVzZSBzaCwgcGVybCwgZXRjLiBhbHNvIGFjY2VwdCB0aGVtLgotIyAo VGhlIGxpc3QgZm9sbG93cyB0aGUgc2FtZSBvcmRlciBhcyB0aGUgR05VIENvZGluZyBTdGFuZGFy ZHMuKQotYmluZGlyPScke2V4ZWNfcHJlZml4fS9iaW4nCi1zYmluZGlyPScke2V4ZWNfcHJlZml4 fS9zYmluJwotbGliZXhlY2Rpcj0nJHtleGVjX3ByZWZpeH0vbGliZXhlYycKLWRhdGFyb290ZGly PScke3ByZWZpeH0vc2hhcmUnCi1kYXRhZGlyPScke2RhdGFyb290ZGlyfScKLXN5c2NvbmZkaXI9 JyR7cHJlZml4fS9ldGMnCi1zaGFyZWRzdGF0ZWRpcj0nJHtwcmVmaXh9L2NvbScKLWxvY2Fsc3Rh dGVkaXI9JyR7cHJlZml4fS92YXInCi1ydW5zdGF0ZWRpcj0nJHtsb2NhbHN0YXRlZGlyfS9ydW4n Ci1pbmNsdWRlZGlyPScke3ByZWZpeH0vaW5jbHVkZScKLW9sZGluY2x1ZGVkaXI9Jy91c3IvaW5j bHVkZScKLWRvY2Rpcj0nJHtkYXRhcm9vdGRpcn0vZG9jLyR7UEFDS0FHRV9UQVJOQU1FfScKLWlu Zm9kaXI9JyR7ZGF0YXJvb3RkaXJ9L2luZm8nCi1odG1sZGlyPScke2RvY2Rpcn0nCi1kdmlkaXI9 JyR7ZG9jZGlyfScKLXBkZmRpcj0nJHtkb2NkaXJ9JwotcHNkaXI9JyR7ZG9jZGlyfScKLWxpYmRp cj0nJHtleGVjX3ByZWZpeH0vbGliJwotbG9jYWxlZGlyPScke2RhdGFyb290ZGlyfS9sb2NhbGUn Ci1tYW5kaXI9JyR7ZGF0YXJvb3RkaXJ9L21hbicKLQotYWNfcHJldj0KLWFjX2Rhc2hkYXNoPQot Zm9yIGFjX29wdGlvbgotZG8KLSAgIyBJZiB0aGUgcHJldmlvdXMgb3B0aW9uIG5lZWRzIGFuIGFy Z3VtZW50LCBhc3NpZ24gaXQuCi0gIGlmIHRlc3QgLW4gIiRhY19wcmV2IjsgdGhlbgotICAgIGV2 YWwgJGFjX3ByZXY9XCRhY19vcHRpb24KLSAgICBhY19wcmV2PQotICAgIGNvbnRpbnVlCi0gIGZp Ci0KLSAgY2FzZSAkYWNfb3B0aW9uIGluCi0gICo9PyopIGFjX29wdGFyZz1gZXhwciAiWCRhY19v cHRpb24iIDogJ1tePV0qPVwoLipcKSdgIDs7Ci0gICo9KSAgIGFjX29wdGFyZz0gOzsKLSAgKikg ICAgYWNfb3B0YXJnPXllcyA7OwotICBlc2FjCi0KLSAgIyBBY2NlcHQgdGhlIGltcG9ydGFudCBD eWdudXMgY29uZmlndXJlIG9wdGlvbnMsIHNvIHdlIGNhbiBkaWFnbm9zZSB0eXBvcy4KLQotICBj YXNlICRhY19kYXNoZGFzaCRhY19vcHRpb24gaW4KLSAgLS0pCi0gICAgYWNfZGFzaGRhc2g9eWVz IDs7Ci0KLSAgLWJpbmRpciB8IC0tYmluZGlyIHwgLS1iaW5kaSB8IC0tYmluZCB8IC0tYmluIHwg LS1iaSkKLSAgICBhY19wcmV2PWJpbmRpciA7OwotICAtYmluZGlyPSogfCAtLWJpbmRpcj0qIHwg LS1iaW5kaT0qIHwgLS1iaW5kPSogfCAtLWJpbj0qIHwgLS1iaT0qKQotICAgIGJpbmRpcj0kYWNf b3B0YXJnIDs7Ci0KLSAgLWJ1aWxkIHwgLS1idWlsZCB8IC0tYnVpbCB8IC0tYnVpIHwgLS1idSkK LSAgICBhY19wcmV2PWJ1aWxkX2FsaWFzIDs7Ci0gIC1idWlsZD0qIHwgLS1idWlsZD0qIHwgLS1i dWlsPSogfCAtLWJ1aT0qIHwgLS1idT0qKQotICAgIGJ1aWxkX2FsaWFzPSRhY19vcHRhcmcgOzsK LQotICAtY2FjaGUtZmlsZSB8IC0tY2FjaGUtZmlsZSB8IC0tY2FjaGUtZmlsIHwgLS1jYWNoZS1m aSBcCi0gIHwgLS1jYWNoZS1mIHwgLS1jYWNoZS0gfCAtLWNhY2hlIHwgLS1jYWNoIHwgLS1jYWMg fCAtLWNhIHwgLS1jKQotICAgIGFjX3ByZXY9Y2FjaGVfZmlsZSA7OwotICAtY2FjaGUtZmlsZT0q IHwgLS1jYWNoZS1maWxlPSogfCAtLWNhY2hlLWZpbD0qIHwgLS1jYWNoZS1maT0qIFwKLSAgfCAt LWNhY2hlLWY9KiB8IC0tY2FjaGUtPSogfCAtLWNhY2hlPSogfCAtLWNhY2g9KiB8IC0tY2FjPSog fCAtLWNhPSogfCAtLWM9KikKLSAgICBjYWNoZV9maWxlPSRhY19vcHRhcmcgOzsKLQotICAtLWNv bmZpZy1jYWNoZSB8IC1DKQotICAgIGNhY2hlX2ZpbGU9Y29uZmlnLmNhY2hlIDs7Ci0KLSAgLWRh dGFkaXIgfCAtLWRhdGFkaXIgfCAtLWRhdGFkaSB8IC0tZGF0YWQpCi0gICAgYWNfcHJldj1kYXRh ZGlyIDs7Ci0gIC1kYXRhZGlyPSogfCAtLWRhdGFkaXI9KiB8IC0tZGF0YWRpPSogfCAtLWRhdGFk PSopCi0gICAgZGF0YWRpcj0kYWNfb3B0YXJnIDs7Ci0KLSAgLWRhdGFyb290ZGlyIHwgLS1kYXRh cm9vdGRpciB8IC0tZGF0YXJvb3RkaSB8IC0tZGF0YXJvb3RkIHwgLS1kYXRhcm9vdCBcCi0gIHwg LS1kYXRhcm9vIHwgLS1kYXRhcm8gfCAtLWRhdGFyKQotICAgIGFjX3ByZXY9ZGF0YXJvb3RkaXIg OzsKLSAgLWRhdGFyb290ZGlyPSogfCAtLWRhdGFyb290ZGlyPSogfCAtLWRhdGFyb290ZGk9KiB8 IC0tZGF0YXJvb3RkPSogXAotICB8IC0tZGF0YXJvb3Q9KiB8IC0tZGF0YXJvbz0qIHwgLS1kYXRh cm89KiB8IC0tZGF0YXI9KikKLSAgICBkYXRhcm9vdGRpcj0kYWNfb3B0YXJnIDs7Ci0KLSAgLWRp c2FibGUtKiB8IC0tZGlzYWJsZS0qKQotICAgIGFjX3VzZXJvcHQ9YGV4cHIgIngkYWNfb3B0aW9u IiA6ICd4LSpkaXNhYmxlLVwoLipcKSdgCi0gICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90 IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLgotICAgIGV4cHIgIngkYWNfdXNlcm9wdCIgOiAi LipbXi0rLl8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmCi0gICAgICBhc19mbl9lcnJvciAk PyAiaW52YWxpZCBmZWF0dXJlIG5hbWU6ICRhY191c2Vyb3B0IgotICAgIGFjX3VzZXJvcHRfb3Jp Zz0kYWNfdXNlcm9wdAotICAgIGFjX3VzZXJvcHQ9YCRhc19lY2hvICIkYWNfdXNlcm9wdCIgfCBz ZWQgJ3MvWy0rLl0vXy9nJ2AKLSAgICBjYXNlICRhY191c2VyX29wdHMgaW4KLSAgICAgICoiCi0i ZW5hYmxlXyRhY191c2Vyb3B0IgotIiopIDs7Ci0gICAgICAqKSBhY191bnJlY29nbml6ZWRfb3B0 cz0iJGFjX3VucmVjb2duaXplZF9vcHRzJGFjX3VucmVjb2duaXplZF9zZXAtLWRpc2FibGUtJGFj X3VzZXJvcHRfb3JpZyIKLQkgYWNfdW5yZWNvZ25pemVkX3NlcD0nLCAnOzsKLSAgICBlc2FjCi0g ICAgZXZhbCBlbmFibGVfJGFjX3VzZXJvcHQ9bm8gOzsKLQotICAtZG9jZGlyIHwgLS1kb2NkaXIg fCAtLWRvY2RpIHwgLS1kb2MgfCAtLWRvKQotICAgIGFjX3ByZXY9ZG9jZGlyIDs7Ci0gIC1kb2Nk aXI9KiB8IC0tZG9jZGlyPSogfCAtLWRvY2RpPSogfCAtLWRvYz0qIHwgLS1kbz0qKQotICAgIGRv Y2Rpcj0kYWNfb3B0YXJnIDs7Ci0KLSAgLWR2aWRpciB8IC0tZHZpZGlyIHwgLS1kdmlkaSB8IC0t ZHZpZCB8IC0tZHZpIHwgLS1kdikKLSAgICBhY19wcmV2PWR2aWRpciA7OwotICAtZHZpZGlyPSog fCAtLWR2aWRpcj0qIHwgLS1kdmlkaT0qIHwgLS1kdmlkPSogfCAtLWR2aT0qIHwgLS1kdj0qKQot ICAgIGR2aWRpcj0kYWNfb3B0YXJnIDs7Ci0KLSAgLWVuYWJsZS0qIHwgLS1lbmFibGUtKikKLSAg ICBhY191c2Vyb3B0PWBleHByICJ4JGFjX29wdGlvbiIgOiAneC0qZW5hYmxlLVwoW149XSpcKSdg Ci0gICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5h bWVzLgotICAgIGV4cHIgIngkYWNfdXNlcm9wdCIgOiAiLipbXi0rLl8kYXNfY3JfYWxudW1dIiA+ L2Rldi9udWxsICYmCi0gICAgICBhc19mbl9lcnJvciAkPyAiaW52YWxpZCBmZWF0dXJlIG5hbWU6 ICRhY191c2Vyb3B0IgotICAgIGFjX3VzZXJvcHRfb3JpZz0kYWNfdXNlcm9wdAotICAgIGFjX3Vz ZXJvcHQ9YCRhc19lY2hvICIkYWNfdXNlcm9wdCIgfCBzZWQgJ3MvWy0rLl0vXy9nJ2AKLSAgICBj YXNlICRhY191c2VyX29wdHMgaW4KLSAgICAgICoiCi0iZW5hYmxlXyRhY191c2Vyb3B0IgotIiop IDs7Ci0gICAgICAqKSBhY191bnJlY29nbml6ZWRfb3B0cz0iJGFjX3VucmVjb2duaXplZF9vcHRz JGFjX3VucmVjb2duaXplZF9zZXAtLWVuYWJsZS0kYWNfdXNlcm9wdF9vcmlnIgotCSBhY191bnJl Y29nbml6ZWRfc2VwPScsICc7OwotICAgIGVzYWMKLSAgICBldmFsIGVuYWJsZV8kYWNfdXNlcm9w dD1cJGFjX29wdGFyZyA7OwotCi0gIC1leGVjLXByZWZpeCB8IC0tZXhlY19wcmVmaXggfCAtLWV4 ZWMtcHJlZml4IHwgLS1leGVjLXByZWZpIFwKLSAgfCAtLWV4ZWMtcHJlZiB8IC0tZXhlYy1wcmUg fCAtLWV4ZWMtcHIgfCAtLWV4ZWMtcCB8IC0tZXhlYy0gXAotICB8IC0tZXhlYyB8IC0tZXhlIHwg LS1leCkKLSAgICBhY19wcmV2PWV4ZWNfcHJlZml4IDs7Ci0gIC1leGVjLXByZWZpeD0qIHwgLS1l eGVjX3ByZWZpeD0qIHwgLS1leGVjLXByZWZpeD0qIHwgLS1leGVjLXByZWZpPSogXAotICB8IC0t ZXhlYy1wcmVmPSogfCAtLWV4ZWMtcHJlPSogfCAtLWV4ZWMtcHI9KiB8IC0tZXhlYy1wPSogfCAt LWV4ZWMtPSogXAotICB8IC0tZXhlYz0qIHwgLS1leGU9KiB8IC0tZXg9KikKLSAgICBleGVjX3By ZWZpeD0kYWNfb3B0YXJnIDs7Ci0KLSAgLWdhcyB8IC0tZ2FzIHwgLS1nYSB8IC0tZykKLSAgICAj IE9ic29sZXRlOyB1c2UgLS13aXRoLWdhcy4KLSAgICB3aXRoX2dhcz15ZXMgOzsKLQotICAtaGVs cCB8IC0taGVscCB8IC0taGVsIHwgLS1oZSB8IC1oKQotICAgIGFjX2luaXRfaGVscD1sb25nIDs7 Ci0gIC1oZWxwPXIqIHwgLS1oZWxwPXIqIHwgLS1oZWw9ciogfCAtLWhlPXIqIHwgLWhyKikKLSAg ICBhY19pbml0X2hlbHA9cmVjdXJzaXZlIDs7Ci0gIC1oZWxwPXMqIHwgLS1oZWxwPXMqIHwgLS1o ZWw9cyogfCAtLWhlPXMqIHwgLWhzKikKLSAgICBhY19pbml0X2hlbHA9c2hvcnQgOzsKLQotICAt aG9zdCB8IC0taG9zdCB8IC0taG9zIHwgLS1obykKLSAgICBhY19wcmV2PWhvc3RfYWxpYXMgOzsK LSAgLWhvc3Q9KiB8IC0taG9zdD0qIHwgLS1ob3M9KiB8IC0taG89KikKLSAgICBob3N0X2FsaWFz PSRhY19vcHRhcmcgOzsKLQotICAtaHRtbGRpciB8IC0taHRtbGRpciB8IC0taHRtbGRpIHwgLS1o dG1sZCB8IC0taHRtbCB8IC0taHRtIHwgLS1odCkKLSAgICBhY19wcmV2PWh0bWxkaXIgOzsKLSAg LWh0bWxkaXI9KiB8IC0taHRtbGRpcj0qIHwgLS1odG1sZGk9KiB8IC0taHRtbGQ9KiB8IC0taHRt bD0qIHwgLS1odG09KiBcCi0gIHwgLS1odD0qKQotICAgIGh0bWxkaXI9JGFjX29wdGFyZyA7Owot Ci0gIC1pbmNsdWRlZGlyIHwgLS1pbmNsdWRlZGlyIHwgLS1pbmNsdWRlZGkgfCAtLWluY2x1ZGVk IHwgLS1pbmNsdWRlIFwKLSAgfCAtLWluY2x1ZCB8IC0taW5jbHUgfCAtLWluY2wgfCAtLWluYykK LSAgICBhY19wcmV2PWluY2x1ZGVkaXIgOzsKLSAgLWluY2x1ZGVkaXI9KiB8IC0taW5jbHVkZWRp cj0qIHwgLS1pbmNsdWRlZGk9KiB8IC0taW5jbHVkZWQ9KiB8IC0taW5jbHVkZT0qIFwKLSAgfCAt LWluY2x1ZD0qIHwgLS1pbmNsdT0qIHwgLS1pbmNsPSogfCAtLWluYz0qKQotICAgIGluY2x1ZGVk aXI9JGFjX29wdGFyZyA7OwotCi0gIC1pbmZvZGlyIHwgLS1pbmZvZGlyIHwgLS1pbmZvZGkgfCAt LWluZm9kIHwgLS1pbmZvIHwgLS1pbmYpCi0gICAgYWNfcHJldj1pbmZvZGlyIDs7Ci0gIC1pbmZv ZGlyPSogfCAtLWluZm9kaXI9KiB8IC0taW5mb2RpPSogfCAtLWluZm9kPSogfCAtLWluZm89KiB8 IC0taW5mPSopCi0gICAgaW5mb2Rpcj0kYWNfb3B0YXJnIDs7Ci0KLSAgLWxpYmRpciB8IC0tbGli ZGlyIHwgLS1saWJkaSB8IC0tbGliZCkKLSAgICBhY19wcmV2PWxpYmRpciA7OwotICAtbGliZGly PSogfCAtLWxpYmRpcj0qIHwgLS1saWJkaT0qIHwgLS1saWJkPSopCi0gICAgbGliZGlyPSRhY19v cHRhcmcgOzsKLQotICAtbGliZXhlY2RpciB8IC0tbGliZXhlY2RpciB8IC0tbGliZXhlY2RpIHwg LS1saWJleGVjZCB8IC0tbGliZXhlYyBcCi0gIHwgLS1saWJleGUgfCAtLWxpYmV4IHwgLS1saWJl KQotICAgIGFjX3ByZXY9bGliZXhlY2RpciA7OwotICAtbGliZXhlY2Rpcj0qIHwgLS1saWJleGVj ZGlyPSogfCAtLWxpYmV4ZWNkaT0qIHwgLS1saWJleGVjZD0qIHwgLS1saWJleGVjPSogXAotICB8 IC0tbGliZXhlPSogfCAtLWxpYmV4PSogfCAtLWxpYmU9KikKLSAgICBsaWJleGVjZGlyPSRhY19v cHRhcmcgOzsKLQotICAtbG9jYWxlZGlyIHwgLS1sb2NhbGVkaXIgfCAtLWxvY2FsZWRpIHwgLS1s b2NhbGVkIHwgLS1sb2NhbGUpCi0gICAgYWNfcHJldj1sb2NhbGVkaXIgOzsKLSAgLWxvY2FsZWRp cj0qIHwgLS1sb2NhbGVkaXI9KiB8IC0tbG9jYWxlZGk9KiB8IC0tbG9jYWxlZD0qIHwgLS1sb2Nh bGU9KikKLSAgICBsb2NhbGVkaXI9JGFjX29wdGFyZyA7OwotCi0gIC1sb2NhbHN0YXRlZGlyIHwg LS1sb2NhbHN0YXRlZGlyIHwgLS1sb2NhbHN0YXRlZGkgfCAtLWxvY2Fsc3RhdGVkIFwKLSAgfCAt LWxvY2Fsc3RhdGUgfCAtLWxvY2Fsc3RhdCB8IC0tbG9jYWxzdGEgfCAtLWxvY2Fsc3QgfCAtLWxv Y2FscykKLSAgICBhY19wcmV2PWxvY2Fsc3RhdGVkaXIgOzsKLSAgLWxvY2Fsc3RhdGVkaXI9KiB8 IC0tbG9jYWxzdGF0ZWRpcj0qIHwgLS1sb2NhbHN0YXRlZGk9KiB8IC0tbG9jYWxzdGF0ZWQ9KiBc Ci0gIHwgLS1sb2NhbHN0YXRlPSogfCAtLWxvY2Fsc3RhdD0qIHwgLS1sb2NhbHN0YT0qIHwgLS1s b2NhbHN0PSogfCAtLWxvY2Fscz0qKQotICAgIGxvY2Fsc3RhdGVkaXI9JGFjX29wdGFyZyA7Owot Ci0gIC1tYW5kaXIgfCAtLW1hbmRpciB8IC0tbWFuZGkgfCAtLW1hbmQgfCAtLW1hbiB8IC0tbWEg fCAtLW0pCi0gICAgYWNfcHJldj1tYW5kaXIgOzsKLSAgLW1hbmRpcj0qIHwgLS1tYW5kaXI9KiB8 IC0tbWFuZGk9KiB8IC0tbWFuZD0qIHwgLS1tYW49KiB8IC0tbWE9KiB8IC0tbT0qKQotICAgIG1h bmRpcj0kYWNfb3B0YXJnIDs7Ci0KLSAgLW5mcCB8IC0tbmZwIHwgLS1uZikKLSAgICAjIE9ic29s ZXRlOyB1c2UgLS13aXRob3V0LWZwLgotICAgIHdpdGhfZnA9bm8gOzsKLQotICAtbm8tY3JlYXRl IHwgLS1uby1jcmVhdGUgfCAtLW5vLWNyZWF0IHwgLS1uby1jcmVhIHwgLS1uby1jcmUgXAotICB8 IC0tbm8tY3IgfCAtLW5vLWMgfCAtbikKLSAgICBub19jcmVhdGU9eWVzIDs7Ci0KLSAgLW5vLXJl Y3Vyc2lvbiB8IC0tbm8tcmVjdXJzaW9uIHwgLS1uby1yZWN1cnNpbyB8IC0tbm8tcmVjdXJzaSBc Ci0gIHwgLS1uby1yZWN1cnMgfCAtLW5vLXJlY3VyIHwgLS1uby1yZWN1IHwgLS1uby1yZWMgfCAt LW5vLXJlIHwgLS1uby1yKQotICAgIG5vX3JlY3Vyc2lvbj15ZXMgOzsKLQotICAtb2xkaW5jbHVk ZWRpciB8IC0tb2xkaW5jbHVkZWRpciB8IC0tb2xkaW5jbHVkZWRpIHwgLS1vbGRpbmNsdWRlZCBc Ci0gIHwgLS1vbGRpbmNsdWRlIHwgLS1vbGRpbmNsdWQgfCAtLW9sZGluY2x1IHwgLS1vbGRpbmNs IHwgLS1vbGRpbmMgXAotICB8IC0tb2xkaW4gfCAtLW9sZGkgfCAtLW9sZCB8IC0tb2wgfCAtLW8p Ci0gICAgYWNfcHJldj1vbGRpbmNsdWRlZGlyIDs7Ci0gIC1vbGRpbmNsdWRlZGlyPSogfCAtLW9s ZGluY2x1ZGVkaXI9KiB8IC0tb2xkaW5jbHVkZWRpPSogfCAtLW9sZGluY2x1ZGVkPSogXAotICB8 IC0tb2xkaW5jbHVkZT0qIHwgLS1vbGRpbmNsdWQ9KiB8IC0tb2xkaW5jbHU9KiB8IC0tb2xkaW5j bD0qIHwgLS1vbGRpbmM9KiBcCi0gIHwgLS1vbGRpbj0qIHwgLS1vbGRpPSogfCAtLW9sZD0qIHwg LS1vbD0qIHwgLS1vPSopCi0gICAgb2xkaW5jbHVkZWRpcj0kYWNfb3B0YXJnIDs7Ci0KLSAgLXBy ZWZpeCB8IC0tcHJlZml4IHwgLS1wcmVmaSB8IC0tcHJlZiB8IC0tcHJlIHwgLS1wciB8IC0tcCkK LSAgICBhY19wcmV2PXByZWZpeCA7OwotICAtcHJlZml4PSogfCAtLXByZWZpeD0qIHwgLS1wcmVm aT0qIHwgLS1wcmVmPSogfCAtLXByZT0qIHwgLS1wcj0qIHwgLS1wPSopCi0gICAgcHJlZml4PSRh Y19vcHRhcmcgOzsKLQotICAtcHJvZ3JhbS1wcmVmaXggfCAtLXByb2dyYW0tcHJlZml4IHwgLS1w cm9ncmFtLXByZWZpIHwgLS1wcm9ncmFtLXByZWYgXAotICB8IC0tcHJvZ3JhbS1wcmUgfCAtLXBy b2dyYW0tcHIgfCAtLXByb2dyYW0tcCkKLSAgICBhY19wcmV2PXByb2dyYW1fcHJlZml4IDs7Ci0g IC1wcm9ncmFtLXByZWZpeD0qIHwgLS1wcm9ncmFtLXByZWZpeD0qIHwgLS1wcm9ncmFtLXByZWZp PSogXAotICB8IC0tcHJvZ3JhbS1wcmVmPSogfCAtLXByb2dyYW0tcHJlPSogfCAtLXByb2dyYW0t cHI9KiB8IC0tcHJvZ3JhbS1wPSopCi0gICAgcHJvZ3JhbV9wcmVmaXg9JGFjX29wdGFyZyA7Owot Ci0gIC1wcm9ncmFtLXN1ZmZpeCB8IC0tcHJvZ3JhbS1zdWZmaXggfCAtLXByb2dyYW0tc3VmZmkg fCAtLXByb2dyYW0tc3VmZiBcCi0gIHwgLS1wcm9ncmFtLXN1ZiB8IC0tcHJvZ3JhbS1zdSB8IC0t cHJvZ3JhbS1zKQotICAgIGFjX3ByZXY9cHJvZ3JhbV9zdWZmaXggOzsKLSAgLXByb2dyYW0tc3Vm Zml4PSogfCAtLXByb2dyYW0tc3VmZml4PSogfCAtLXByb2dyYW0tc3VmZmk9KiBcCi0gIHwgLS1w cm9ncmFtLXN1ZmY9KiB8IC0tcHJvZ3JhbS1zdWY9KiB8IC0tcHJvZ3JhbS1zdT0qIHwgLS1wcm9n cmFtLXM9KikKLSAgICBwcm9ncmFtX3N1ZmZpeD0kYWNfb3B0YXJnIDs7Ci0KLSAgLXByb2dyYW0t dHJhbnNmb3JtLW5hbWUgfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbWUgXAotICB8IC0tcHJvZ3Jh bS10cmFuc2Zvcm0tbmFtIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYSBcCi0gIHwgLS1wcm9ncmFt LXRyYW5zZm9ybS1uIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS0gXAotICB8IC0tcHJvZ3JhbS10cmFu c2Zvcm0gfCAtLXByb2dyYW0tdHJhbnNmb3IgXAotICB8IC0tcHJvZ3JhbS10cmFuc2ZvIHwgLS1w cm9ncmFtLXRyYW5zZiBcCi0gIHwgLS1wcm9ncmFtLXRyYW5zIHwgLS1wcm9ncmFtLXRyYW4gXAot ICB8IC0tcHJvZ3ItdHJhIHwgLS1wcm9ncmFtLXRyIHwgLS1wcm9ncmFtLXQpCi0gICAgYWNfcHJl dj1wcm9ncmFtX3RyYW5zZm9ybV9uYW1lIDs7Ci0gIC1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lPSog fCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbWU9KiBcCi0gIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1u YW09KiB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmE9KiBcCi0gIHwgLS1wcm9ncmFtLXRyYW5zZm9y bS1uPSogfCAtLXByb2dyYW0tdHJhbnNmb3JtLT0qIFwKLSAgfCAtLXByb2dyYW0tdHJhbnNmb3Jt PSogfCAtLXByb2dyYW0tdHJhbnNmb3I9KiBcCi0gIHwgLS1wcm9ncmFtLXRyYW5zZm89KiB8IC0t cHJvZ3JhbS10cmFuc2Y9KiBcCi0gIHwgLS1wcm9ncmFtLXRyYW5zPSogfCAtLXByb2dyYW0tdHJh bj0qIFwKLSAgfCAtLXByb2dyLXRyYT0qIHwgLS1wcm9ncmFtLXRyPSogfCAtLXByb2dyYW0tdD0q KQotICAgIHByb2dyYW1fdHJhbnNmb3JtX25hbWU9JGFjX29wdGFyZyA7OwotCi0gIC1wZGZkaXIg fCAtLXBkZmRpciB8IC0tcGRmZGkgfCAtLXBkZmQgfCAtLXBkZiB8IC0tcGQpCi0gICAgYWNfcHJl dj1wZGZkaXIgOzsKLSAgLXBkZmRpcj0qIHwgLS1wZGZkaXI9KiB8IC0tcGRmZGk9KiB8IC0tcGRm ZD0qIHwgLS1wZGY9KiB8IC0tcGQ9KikKLSAgICBwZGZkaXI9JGFjX29wdGFyZyA7OwotCi0gIC1w c2RpciB8IC0tcHNkaXIgfCAtLXBzZGkgfCAtLXBzZCB8IC0tcHMpCi0gICAgYWNfcHJldj1wc2Rp ciA7OwotICAtcHNkaXI9KiB8IC0tcHNkaXI9KiB8IC0tcHNkaT0qIHwgLS1wc2Q9KiB8IC0tcHM9 KikKLSAgICBwc2Rpcj0kYWNfb3B0YXJnIDs7Ci0KLSAgLXEgfCAtcXVpZXQgfCAtLXF1aWV0IHwg LS1xdWllIHwgLS1xdWkgfCAtLXF1IHwgLS1xIFwKLSAgfCAtc2lsZW50IHwgLS1zaWxlbnQgfCAt LXNpbGVuIHwgLS1zaWxlIHwgLS1zaWwpCi0gICAgc2lsZW50PXllcyA7OwotCi0gIC1ydW5zdGF0 ZWRpciB8IC0tcnVuc3RhdGVkaXIgfCAtLXJ1bnN0YXRlZGkgfCAtLXJ1bnN0YXRlZCBcCi0gIHwg LS1ydW5zdGF0ZSB8IC0tcnVuc3RhdCB8IC0tcnVuc3RhIHwgLS1ydW5zdCB8IC0tcnVucyBcCi0g IHwgLS1ydW4gfCAtLXJ1IHwgLS1yKQotICAgIGFjX3ByZXY9cnVuc3RhdGVkaXIgOzsKLSAgLXJ1 bnN0YXRlZGlyPSogfCAtLXJ1bnN0YXRlZGlyPSogfCAtLXJ1bnN0YXRlZGk9KiB8IC0tcnVuc3Rh dGVkPSogXAotICB8IC0tcnVuc3RhdGU9KiB8IC0tcnVuc3RhdD0qIHwgLS1ydW5zdGE9KiB8IC0t cnVuc3Q9KiB8IC0tcnVucz0qIFwKLSAgfCAtLXJ1bj0qIHwgLS1ydT0qIHwgLS1yPSopCi0gICAg cnVuc3RhdGVkaXI9JGFjX29wdGFyZyA7OwotCi0gIC1zYmluZGlyIHwgLS1zYmluZGlyIHwgLS1z YmluZGkgfCAtLXNiaW5kIHwgLS1zYmluIHwgLS1zYmkgfCAtLXNiKQotICAgIGFjX3ByZXY9c2Jp bmRpciA7OwotICAtc2JpbmRpcj0qIHwgLS1zYmluZGlyPSogfCAtLXNiaW5kaT0qIHwgLS1zYmlu ZD0qIHwgLS1zYmluPSogXAotICB8IC0tc2JpPSogfCAtLXNiPSopCi0gICAgc2JpbmRpcj0kYWNf b3B0YXJnIDs7Ci0KLSAgLXNoYXJlZHN0YXRlZGlyIHwgLS1zaGFyZWRzdGF0ZWRpciB8IC0tc2hh cmVkc3RhdGVkaSBcCi0gIHwgLS1zaGFyZWRzdGF0ZWQgfCAtLXNoYXJlZHN0YXRlIHwgLS1zaGFy ZWRzdGF0IHwgLS1zaGFyZWRzdGEgXAotICB8IC0tc2hhcmVkc3QgfCAtLXNoYXJlZHMgfCAtLXNo YXJlZCB8IC0tc2hhcmUgfCAtLXNoYXIgXAotICB8IC0tc2hhIHwgLS1zaCkKLSAgICBhY19wcmV2 PXNoYXJlZHN0YXRlZGlyIDs7Ci0gIC1zaGFyZWRzdGF0ZWRpcj0qIHwgLS1zaGFyZWRzdGF0ZWRp cj0qIHwgLS1zaGFyZWRzdGF0ZWRpPSogXAotICB8IC0tc2hhcmVkc3RhdGVkPSogfCAtLXNoYXJl ZHN0YXRlPSogfCAtLXNoYXJlZHN0YXQ9KiB8IC0tc2hhcmVkc3RhPSogXAotICB8IC0tc2hhcmVk c3Q9KiB8IC0tc2hhcmVkcz0qIHwgLS1zaGFyZWQ9KiB8IC0tc2hhcmU9KiB8IC0tc2hhcj0qIFwK LSAgfCAtLXNoYT0qIHwgLS1zaD0qKQotICAgIHNoYXJlZHN0YXRlZGlyPSRhY19vcHRhcmcgOzsK LQotICAtc2l0ZSB8IC0tc2l0ZSB8IC0tc2l0KQotICAgIGFjX3ByZXY9c2l0ZSA7OwotICAtc2l0 ZT0qIHwgLS1zaXRlPSogfCAtLXNpdD0qKQotICAgIHNpdGU9JGFjX29wdGFyZyA7OwotCi0gIC1z cmNkaXIgfCAtLXNyY2RpciB8IC0tc3JjZGkgfCAtLXNyY2QgfCAtLXNyYyB8IC0tc3IpCi0gICAg YWNfcHJldj1zcmNkaXIgOzsKLSAgLXNyY2Rpcj0qIHwgLS1zcmNkaXI9KiB8IC0tc3JjZGk9KiB8 IC0tc3JjZD0qIHwgLS1zcmM9KiB8IC0tc3I9KikKLSAgICBzcmNkaXI9JGFjX29wdGFyZyA7Owot Ci0gIC1zeXNjb25mZGlyIHwgLS1zeXNjb25mZGlyIHwgLS1zeXNjb25mZGkgfCAtLXN5c2NvbmZk IHwgLS1zeXNjb25mIFwKLSAgfCAtLXN5c2NvbiB8IC0tc3lzY28gfCAtLXN5c2MgfCAtLXN5cyB8 IC0tc3kpCi0gICAgYWNfcHJldj1zeXNjb25mZGlyIDs7Ci0gIC1zeXNjb25mZGlyPSogfCAtLXN5 c2NvbmZkaXI9KiB8IC0tc3lzY29uZmRpPSogfCAtLXN5c2NvbmZkPSogfCAtLXN5c2NvbmY9KiBc Ci0gIHwgLS1zeXNjb249KiB8IC0tc3lzY289KiB8IC0tc3lzYz0qIHwgLS1zeXM9KiB8IC0tc3k9 KikKLSAgICBzeXNjb25mZGlyPSRhY19vcHRhcmcgOzsKLQotICAtdGFyZ2V0IHwgLS10YXJnZXQg fCAtLXRhcmdlIHwgLS10YXJnIHwgLS10YXIgfCAtLXRhIHwgLS10KQotICAgIGFjX3ByZXY9dGFy Z2V0X2FsaWFzIDs7Ci0gIC10YXJnZXQ9KiB8IC0tdGFyZ2V0PSogfCAtLXRhcmdlPSogfCAtLXRh cmc9KiB8IC0tdGFyPSogfCAtLXRhPSogfCAtLXQ9KikKLSAgICB0YXJnZXRfYWxpYXM9JGFjX29w dGFyZyA7OwotCi0gIC12IHwgLXZlcmJvc2UgfCAtLXZlcmJvc2UgfCAtLXZlcmJvcyB8IC0tdmVy Ym8gfCAtLXZlcmIpCi0gICAgdmVyYm9zZT15ZXMgOzsKLQotICAtdmVyc2lvbiB8IC0tdmVyc2lv biB8IC0tdmVyc2lvIHwgLS12ZXJzaSB8IC0tdmVycyB8IC1WKQotICAgIGFjX2luaXRfdmVyc2lv bj06IDs7Ci0KLSAgLXdpdGgtKiB8IC0td2l0aC0qKQotICAgIGFjX3VzZXJvcHQ9YGV4cHIgIngk YWNfb3B0aW9uIiA6ICd4LSp3aXRoLVwoW149XSpcKSdgCi0gICAgIyBSZWplY3QgbmFtZXMgdGhh dCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLgotICAgIGV4cHIgIngkYWNfdXNl cm9wdCIgOiAiLipbXi0rLl8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmCi0gICAgICBhc19m bl9lcnJvciAkPyAiaW52YWxpZCBwYWNrYWdlIG5hbWU6ICRhY191c2Vyb3B0IgotICAgIGFjX3Vz ZXJvcHRfb3JpZz0kYWNfdXNlcm9wdAotICAgIGFjX3VzZXJvcHQ9YCRhc19lY2hvICIkYWNfdXNl cm9wdCIgfCBzZWQgJ3MvWy0rLl0vXy9nJ2AKLSAgICBjYXNlICRhY191c2VyX29wdHMgaW4KLSAg ICAgICoiCi0id2l0aF8kYWNfdXNlcm9wdCIKLSIqKSA7OwotICAgICAgKikgYWNfdW5yZWNvZ25p emVkX29wdHM9IiRhY191bnJlY29nbml6ZWRfb3B0cyRhY191bnJlY29nbml6ZWRfc2VwLS13aXRo LSRhY191c2Vyb3B0X29yaWciCi0JIGFjX3VucmVjb2duaXplZF9zZXA9JywgJzs7Ci0gICAgZXNh YwotICAgIGV2YWwgd2l0aF8kYWNfdXNlcm9wdD1cJGFjX29wdGFyZyA7OwotCi0gIC13aXRob3V0 LSogfCAtLXdpdGhvdXQtKikKLSAgICBhY191c2Vyb3B0PWBleHByICJ4JGFjX29wdGlvbiIgOiAn eC0qd2l0aG91dC1cKC4qXCknYAotICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxp ZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4KLSAgICBleHByICJ4JGFjX3VzZXJvcHQiIDogIi4qW14t Ky5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgotICAgICAgYXNfZm5fZXJyb3IgJD8gImlu dmFsaWQgcGFja2FnZSBuYW1lOiAkYWNfdXNlcm9wdCIKLSAgICBhY191c2Vyb3B0X29yaWc9JGFj X3VzZXJvcHQKLSAgICBhY191c2Vyb3B0PWAkYXNfZWNobyAiJGFjX3VzZXJvcHQiIHwgc2VkICdz L1stKy5dL18vZydgCi0gICAgY2FzZSAkYWNfdXNlcl9vcHRzIGluCi0gICAgICAqIgotIndpdGhf JGFjX3VzZXJvcHQiCi0iKikgOzsKLSAgICAgICopIGFjX3VucmVjb2duaXplZF9vcHRzPSIkYWNf dW5yZWNvZ25pemVkX29wdHMkYWNfdW5yZWNvZ25pemVkX3NlcC0td2l0aG91dC0kYWNfdXNlcm9w dF9vcmlnIgotCSBhY191bnJlY29nbml6ZWRfc2VwPScsICc7OwotICAgIGVzYWMKLSAgICBldmFs IHdpdGhfJGFjX3VzZXJvcHQ9bm8gOzsKLQotICAtLXgpCi0gICAgIyBPYnNvbGV0ZTsgdXNlIC0t d2l0aC14LgotICAgIHdpdGhfeD15ZXMgOzsKLQotICAteC1pbmNsdWRlcyB8IC0teC1pbmNsdWRl cyB8IC0teC1pbmNsdWRlIHwgLS14LWluY2x1ZCB8IC0teC1pbmNsdSBcCi0gIHwgLS14LWluY2wg fCAtLXgtaW5jIHwgLS14LWluIHwgLS14LWkpCi0gICAgYWNfcHJldj14X2luY2x1ZGVzIDs7Ci0g IC14LWluY2x1ZGVzPSogfCAtLXgtaW5jbHVkZXM9KiB8IC0teC1pbmNsdWRlPSogfCAtLXgtaW5j bHVkPSogfCAtLXgtaW5jbHU9KiBcCi0gIHwgLS14LWluY2w9KiB8IC0teC1pbmM9KiB8IC0teC1p bj0qIHwgLS14LWk9KikKLSAgICB4X2luY2x1ZGVzPSRhY19vcHRhcmcgOzsKLQotICAteC1saWJy YXJpZXMgfCAtLXgtbGlicmFyaWVzIHwgLS14LWxpYnJhcmllIHwgLS14LWxpYnJhcmkgXAotICB8 IC0teC1saWJyYXIgfCAtLXgtbGlicmEgfCAtLXgtbGliciB8IC0teC1saWIgfCAtLXgtbGkgfCAt LXgtbCkKLSAgICBhY19wcmV2PXhfbGlicmFyaWVzIDs7Ci0gIC14LWxpYnJhcmllcz0qIHwgLS14 LWxpYnJhcmllcz0qIHwgLS14LWxpYnJhcmllPSogfCAtLXgtbGlicmFyaT0qIFwKLSAgfCAtLXgt bGlicmFyPSogfCAtLXgtbGlicmE9KiB8IC0teC1saWJyPSogfCAtLXgtbGliPSogfCAtLXgtbGk9 KiB8IC0teC1sPSopCi0gICAgeF9saWJyYXJpZXM9JGFjX29wdGFyZyA7OwotCi0gIC0qKSBhc19m bl9lcnJvciAkPyAidW5yZWNvZ25pemVkIG9wdGlvbjogXGAkYWNfb3B0aW9uJwotVHJ5IFxgJDAg LS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbiIKLSAgICA7OwotCi0gICo9KikKLSAgICBhY19l bnZ2YXI9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4XChbXj1dKlwpPSdgCi0gICAgIyBSZWplY3Qg bmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLgotICAgIGNhc2Ug JGFjX2VudnZhciBpbiAjKAotICAgICAgJycgfCBbMC05XSogfCAqWyFfJGFzX2NyX2FsbnVtXSog KQotICAgICAgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgdmFyaWFibGUgbmFtZTogXGAkYWNfZW52 dmFyJyIgOzsKLSAgICBlc2FjCi0gICAgZXZhbCAkYWNfZW52dmFyPVwkYWNfb3B0YXJnCi0gICAg ZXhwb3J0ICRhY19lbnZ2YXIgOzsKLQotICAqKQotICAgICMgRklYTUU6IHNob3VsZCBiZSByZW1v dmVkIGluIGF1dG9jb25mIDMuMC4KLSAgICAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB5b3Ug c2hvdWxkIHVzZSAtLWJ1aWxkLCAtLWhvc3QsIC0tdGFyZ2V0IiA+JjIKLSAgICBleHByICJ4JGFj X29wdGlvbiIgOiAiLipbXi0uXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYKLSAgICAgICRh c19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IGludmFsaWQgaG9zdCB0eXBlOiAkYWNfb3B0aW9uIiA+ JjIKLSAgICA6ICIke2J1aWxkX2FsaWFzPSRhY19vcHRpb259ICR7aG9zdF9hbGlhcz0kYWNfb3B0 aW9ufSAke3RhcmdldF9hbGlhcz0kYWNfb3B0aW9ufSIKLSAgICA7OwotCi0gIGVzYWMKLWRvbmUK LQotaWYgdGVzdCAtbiAiJGFjX3ByZXYiOyB0aGVuCi0gIGFjX29wdGlvbj0tLWBlY2hvICRhY19w cmV2IHwgc2VkICdzL18vLS9nJ2AKLSAgYXNfZm5fZXJyb3IgJD8gIm1pc3NpbmcgYXJndW1lbnQg dG8gJGFjX29wdGlvbiIKLWZpCi0KLWlmIHRlc3QgLW4gIiRhY191bnJlY29nbml6ZWRfb3B0cyI7 IHRoZW4KLSAgY2FzZSAkZW5hYmxlX29wdGlvbl9jaGVja2luZyBpbgotICAgIG5vKSA7OwotICAg IGZhdGFsKSBhc19mbl9lcnJvciAkPyAidW5yZWNvZ25pemVkIG9wdGlvbnM6ICRhY191bnJlY29n bml6ZWRfb3B0cyIgOzsKLSAgICAqKSAgICAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdW5y ZWNvZ25pemVkIG9wdGlvbnM6ICRhY191bnJlY29nbml6ZWRfb3B0cyIgPiYyIDs7Ci0gIGVzYWMK LWZpCi0KLSMgQ2hlY2sgYWxsIGRpcmVjdG9yeSBhcmd1bWVudHMgZm9yIGNvbnNpc3RlbmN5Lgot Zm9yIGFjX3ZhciBpbglleGVjX3ByZWZpeCBwcmVmaXggYmluZGlyIHNiaW5kaXIgbGliZXhlY2Rp ciBkYXRhcm9vdGRpciBcCi0JCWRhdGFkaXIgc3lzY29uZmRpciBzaGFyZWRzdGF0ZWRpciBsb2Nh bHN0YXRlZGlyIGluY2x1ZGVkaXIgXAotCQlvbGRpbmNsdWRlZGlyIGRvY2RpciBpbmZvZGlyIGh0 bWxkaXIgZHZpZGlyIHBkZmRpciBwc2RpciBcCi0JCWxpYmRpciBsb2NhbGVkaXIgbWFuZGlyIHJ1 bnN0YXRlZGlyCi1kbwotICBldmFsIGFjX3ZhbD1cJCRhY192YXIKLSAgIyBSZW1vdmUgdHJhaWxp bmcgc2xhc2hlcy4KLSAgY2FzZSAkYWNfdmFsIGluCi0gICAgKi8gKQotICAgICAgYWNfdmFsPWBl eHByICJYJGFjX3ZhbCIgOiAnWFwoLipbXi9dXCknIFx8ICJYJGFjX3ZhbCIgOiAnWFwoLipcKSdg Ci0gICAgICBldmFsICRhY192YXI9XCRhY192YWw7OwotICBlc2FjCi0gICMgQmUgc3VyZSB0byBo YXZlIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lcy4KLSAgY2FzZSAkYWNfdmFsIGluCi0gICAgW1xc LyRdKiB8ID86W1xcL10qICkgIGNvbnRpbnVlOzsKLSAgICBOT05FIHwgJycgKSBjYXNlICRhY192 YXIgaW4gKnByZWZpeCApIGNvbnRpbnVlOzsgZXNhYzs7Ci0gIGVzYWMKLSAgYXNfZm5fZXJyb3Ig JD8gImV4cGVjdGVkIGFuIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lIGZvciAtLSRhY192YXI6ICRh Y192YWwiCi1kb25lCi0KLSMgVGhlcmUgbWlnaHQgYmUgcGVvcGxlIHdobyBkZXBlbmQgb24gdGhl IG9sZCBicm9rZW4gYmVoYXZpb3I6IGAkaG9zdCcKLSMgdXNlZCB0byBob2xkIHRoZSBhcmd1bWVu dCBvZiAtLWhvc3QgZXRjLgotIyBGSVhNRTogVG8gcmVtb3ZlIHNvbWUgZGF5LgotYnVpbGQ9JGJ1 aWxkX2FsaWFzCi1ob3N0PSRob3N0X2FsaWFzCi10YXJnZXQ9JHRhcmdldF9hbGlhcwotCi0jIEZJ WE1FOiBUbyByZW1vdmUgc29tZSBkYXkuCi1pZiB0ZXN0ICJ4JGhvc3RfYWxpYXMiICE9IHg7IHRo ZW4KLSAgaWYgdGVzdCAieCRidWlsZF9hbGlhcyIgPSB4OyB0aGVuCi0gICAgY3Jvc3NfY29tcGls aW5nPW1heWJlCi0gIGVsaWYgdGVzdCAieCRidWlsZF9hbGlhcyIgIT0gIngkaG9zdF9hbGlhcyI7 IHRoZW4KLSAgICBjcm9zc19jb21waWxpbmc9eWVzCi0gIGZpCi1maQotCi1hY190b29sX3ByZWZp eD0KLXRlc3QgLW4gIiRob3N0X2FsaWFzIiAmJiBhY190b29sX3ByZWZpeD0kaG9zdF9hbGlhcy0K LQotdGVzdCAiJHNpbGVudCIgPSB5ZXMgJiYgZXhlYyA2Pi9kZXYvbnVsbAotCi0KLWFjX3B3ZD1g cHdkYCAmJiB0ZXN0IC1uICIkYWNfcHdkIiAmJgotYWNfbHNfZGk9YGxzIC1kaSAuYCAmJgotYWNf cHdkX2xzX2RpPWBjZCAiJGFjX3B3ZCIgJiYgbHMgLWRpIC5gIHx8Ci0gIGFzX2ZuX2Vycm9yICQ/ ICJ3b3JraW5nIGRpcmVjdG9yeSBjYW5ub3QgYmUgZGV0ZXJtaW5lZCIKLXRlc3QgIlgkYWNfbHNf ZGkiID0gIlgkYWNfcHdkX2xzX2RpIiB8fAotICBhc19mbl9lcnJvciAkPyAicHdkIGRvZXMgbm90 IHJlcG9ydCBuYW1lIG9mIHdvcmtpbmcgZGlyZWN0b3J5IgotCi0KLSMgRmluZCB0aGUgc291cmNl IGZpbGVzLCBpZiBsb2NhdGlvbiB3YXMgbm90IHNwZWNpZmllZC4KLWlmIHRlc3QgLXogIiRzcmNk aXIiOyB0aGVuCi0gIGFjX3NyY2Rpcl9kZWZhdWx0ZWQ9eWVzCi0gICMgVHJ5IHRoZSBkaXJlY3Rv cnkgY29udGFpbmluZyB0aGlzIHNjcmlwdCwgdGhlbiB0aGUgcGFyZW50IGRpcmVjdG9yeS4KLSAg YWNfY29uZmRpcj1gJGFzX2Rpcm5hbWUgLS0gIiRhc19teXNlbGYiIHx8Ci0kYXNfZXhwciBYIiRh c19teXNlbGYiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcCi0JIFgiJGFzX215 c2VsZiIgOiAnWFwoLy9cKVteL10nIFx8IFwKLQkgWCIkYXNfbXlzZWxmIiA6ICdYXCgvL1wpJCcg XHwgXAotCSBYIiRhc19teXNlbGYiIDogJ1hcKC9cKScgXHwgLiAyPi9kZXYvbnVsbCB8fAotJGFz X2VjaG8gWCIkYXNfbXlzZWxmIiB8Ci0gICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14v XSpcLyokL3sKLQkgICAgcy8vXDEvCi0JICAgIHEKLQkgIH0KLQkgIC9eWFwoXC9cL1wpW14vXS4q L3sKLQkgICAgcy8vXDEvCi0JICAgIHEKLQkgIH0KLQkgIC9eWFwoXC9cL1wpJC97Ci0JICAgIHMv L1wxLwotCSAgICBxCi0JICB9Ci0JICAvXlhcKFwvXCkuKi97Ci0JICAgIHMvL1wxLwotCSAgICBx Ci0JICB9Ci0JICBzLy4qLy4vOyBxJ2AKLSAgc3JjZGlyPSRhY19jb25mZGlyCi0gIGlmIHRlc3Qg ISAtciAiJHNyY2Rpci8kYWNfdW5pcXVlX2ZpbGUiOyB0aGVuCi0gICAgc3JjZGlyPS4uCi0gIGZp Ci1lbHNlCi0gIGFjX3NyY2Rpcl9kZWZhdWx0ZWQ9bm8KLWZpCi1pZiB0ZXN0ICEgLXIgIiRzcmNk aXIvJGFjX3VuaXF1ZV9maWxlIjsgdGhlbgotICB0ZXN0ICIkYWNfc3JjZGlyX2RlZmF1bHRlZCIg PSB5ZXMgJiYgc3JjZGlyPSIkYWNfY29uZmRpciBvciAuLiIKLSAgYXNfZm5fZXJyb3IgJD8gImNh bm5vdCBmaW5kIHNvdXJjZXMgKCRhY191bmlxdWVfZmlsZSkgaW4gJHNyY2RpciIKLWZpCi1hY19t c2c9InNvdXJjZXMgYXJlIGluICRzcmNkaXIsIGJ1dCBcYGNkICRzcmNkaXInIGRvZXMgbm90IHdv cmsiCi1hY19hYnNfY29uZmRpcj1gKAotCWNkICIkc3JjZGlyIiAmJiB0ZXN0IC1yICIuLyRhY191 bmlxdWVfZmlsZSIgfHwgYXNfZm5fZXJyb3IgJD8gIiRhY19tc2ciCi0JcHdkKWAKLSMgV2hlbiBi dWlsZGluZyBpbiBwbGFjZSwgc2V0IHNyY2Rpcj0uCi1pZiB0ZXN0ICIkYWNfYWJzX2NvbmZkaXIi ID0gIiRhY19wd2QiOyB0aGVuCi0gIHNyY2Rpcj0uCi1maQotIyBSZW1vdmUgdW5uZWNlc3Nhcnkg dHJhaWxpbmcgc2xhc2hlcyBmcm9tIHNyY2Rpci4KLSMgRG91YmxlIHNsYXNoZXMgaW4gZmlsZSBu YW1lcyBpbiBvYmplY3QgZmlsZSBkZWJ1Z2dpbmcgaW5mbwotIyBtZXNzIHVwIE0teCBnZGIgaW4g RW1hY3MuCi1jYXNlICRzcmNkaXIgaW4KLSovKSBzcmNkaXI9YGV4cHIgIlgkc3JjZGlyIiA6ICdY XCguKlteL11cKScgXHwgIlgkc3JjZGlyIiA6ICdYXCguKlwpJ2A7OwotZXNhYwotZm9yIGFjX3Zh ciBpbiAkYWNfcHJlY2lvdXNfdmFyczsgZG8KLSAgZXZhbCBhY19lbnZfJHthY192YXJ9X3NldD1c JHske2FjX3Zhcn0rc2V0fQotICBldmFsIGFjX2Vudl8ke2FjX3Zhcn1fdmFsdWU9XCQke2FjX3Zh cn0KLSAgZXZhbCBhY19jdl9lbnZfJHthY192YXJ9X3NldD1cJHske2FjX3Zhcn0rc2V0fQotICBl dmFsIGFjX2N2X2Vudl8ke2FjX3Zhcn1fdmFsdWU9XCQke2FjX3Zhcn0KLWRvbmUKLQotIwotIyBS ZXBvcnQgdGhlIC0taGVscCBtZXNzYWdlLgotIwotaWYgdGVzdCAiJGFjX2luaXRfaGVscCIgPSAi bG9uZyI7IHRoZW4KLSAgIyBPbWl0IHNvbWUgaW50ZXJuYWwgb3Igb2Jzb2xldGUgb3B0aW9ucyB0 byBtYWtlIHRoZSBsaXN0IGxlc3MgaW1wb3NpbmcuCi0gICMgVGhpcyBtZXNzYWdlIGlzIHRvbyBs b25nIHRvIGJlIGEgc3RyaW5nIGluIHRoZSBBL1VYIDMuMSBzaC4KLSAgY2F0IDw8X0FDRU9GCi1c YGNvbmZpZ3VyZScgY29uZmlndXJlcyBYZW4gSHlwZXJ2aXNvciBEb2N1bWVudGF0aW9uIDQuMTMg dG8gYWRhcHQgdG8gbWFueSBraW5kcyBvZiBzeXN0ZW1zLgotCi1Vc2FnZTogJDAgW09QVElPTl0u Li4gW1ZBUj1WQUxVRV0uLi4KLQotVG8gYXNzaWduIGVudmlyb25tZW50IHZhcmlhYmxlcyAoZS5n LiwgQ0MsIENGTEFHUy4uLiksIHNwZWNpZnkgdGhlbSBhcwotVkFSPVZBTFVFLiAgU2VlIGJlbG93 IGZvciBkZXNjcmlwdGlvbnMgb2Ygc29tZSBvZiB0aGUgdXNlZnVsIHZhcmlhYmxlcy4KLQotRGVm YXVsdHMgZm9yIHRoZSBvcHRpb25zIGFyZSBzcGVjaWZpZWQgaW4gYnJhY2tldHMuCi0KLUNvbmZp Z3VyYXRpb246Ci0gIC1oLCAtLWhlbHAgICAgICAgICAgICAgIGRpc3BsYXkgdGhpcyBoZWxwIGFu ZCBleGl0Ci0gICAgICAtLWhlbHA9c2hvcnQgICAgICAgIGRpc3BsYXkgb3B0aW9ucyBzcGVjaWZp YyB0byB0aGlzIHBhY2thZ2UKLSAgICAgIC0taGVscD1yZWN1cnNpdmUgICAgZGlzcGxheSB0aGUg c2hvcnQgaGVscCBvZiBhbGwgdGhlIGluY2x1ZGVkIHBhY2thZ2VzCi0gIC1WLCAtLXZlcnNpb24g ICAgICAgICAgIGRpc3BsYXkgdmVyc2lvbiBpbmZvcm1hdGlvbiBhbmQgZXhpdAotICAtcSwgLS1x dWlldCwgLS1zaWxlbnQgICBkbyBub3QgcHJpbnQgXGBjaGVja2luZyAuLi4nIG1lc3NhZ2VzCi0g ICAgICAtLWNhY2hlLWZpbGU9RklMRSAgIGNhY2hlIHRlc3QgcmVzdWx0cyBpbiBGSUxFIFtkaXNh YmxlZF0KLSAgLUMsIC0tY29uZmlnLWNhY2hlICAgICAgYWxpYXMgZm9yIFxgLS1jYWNoZS1maWxl PWNvbmZpZy5jYWNoZScKLSAgLW4sIC0tbm8tY3JlYXRlICAgICAgICAgZG8gbm90IGNyZWF0ZSBv dXRwdXQgZmlsZXMKLSAgICAgIC0tc3JjZGlyPURJUiAgICAgICAgZmluZCB0aGUgc291cmNlcyBp biBESVIgW2NvbmZpZ3VyZSBkaXIgb3IgXGAuLiddCi0KLUluc3RhbGxhdGlvbiBkaXJlY3Rvcmll czoKLSAgLS1wcmVmaXg9UFJFRklYICAgICAgICAgaW5zdGFsbCBhcmNoaXRlY3R1cmUtaW5kZXBl bmRlbnQgZmlsZXMgaW4gUFJFRklYCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFskYWNfZGVm YXVsdF9wcmVmaXhdCi0gIC0tZXhlYy1wcmVmaXg9RVBSRUZJWCAgIGluc3RhbGwgYXJjaGl0ZWN0 dXJlLWRlcGVuZGVudCBmaWxlcyBpbiBFUFJFRklYCi0gICAgICAgICAgICAgICAgICAgICAgICAg IFtQUkVGSVhdCi0KLUJ5IGRlZmF1bHQsIFxgbWFrZSBpbnN0YWxsJyB3aWxsIGluc3RhbGwgYWxs IHRoZSBmaWxlcyBpbgotXGAkYWNfZGVmYXVsdF9wcmVmaXgvYmluJywgXGAkYWNfZGVmYXVsdF9w cmVmaXgvbGliJyBldGMuICBZb3UgY2FuIHNwZWNpZnkKLWFuIGluc3RhbGxhdGlvbiBwcmVmaXgg b3RoZXIgdGhhbiBcYCRhY19kZWZhdWx0X3ByZWZpeCcgdXNpbmcgXGAtLXByZWZpeCcsCi1mb3Ig aW5zdGFuY2UgXGAtLXByZWZpeD1cJEhPTUUnLgotCi1Gb3IgYmV0dGVyIGNvbnRyb2wsIHVzZSB0 aGUgb3B0aW9ucyBiZWxvdy4KLQotRmluZSB0dW5pbmcgb2YgdGhlIGluc3RhbGxhdGlvbiBkaXJl Y3RvcmllczoKLSAgLS1iaW5kaXI9RElSICAgICAgICAgICAgdXNlciBleGVjdXRhYmxlcyBbRVBS RUZJWC9iaW5dCi0gIC0tc2JpbmRpcj1ESVIgICAgICAgICAgIHN5c3RlbSBhZG1pbiBleGVjdXRh YmxlcyBbRVBSRUZJWC9zYmluXQotICAtLWxpYmV4ZWNkaXI9RElSICAgICAgICBwcm9ncmFtIGV4 ZWN1dGFibGVzIFtFUFJFRklYL2xpYmV4ZWNdCi0gIC0tc3lzY29uZmRpcj1ESVIgICAgICAgIHJl YWQtb25seSBzaW5nbGUtbWFjaGluZSBkYXRhIFtQUkVGSVgvZXRjXQotICAtLXNoYXJlZHN0YXRl ZGlyPURJUiAgICBtb2RpZmlhYmxlIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBkYXRhIFtQUkVG SVgvY29tXQotICAtLWxvY2Fsc3RhdGVkaXI9RElSICAgICBtb2RpZmlhYmxlIHNpbmdsZS1tYWNo aW5lIGRhdGEgW1BSRUZJWC92YXJdCi0gIC0tcnVuc3RhdGVkaXI9RElSICAgICAgIG1vZGlmaWFi bGUgcGVyLXByb2Nlc3MgZGF0YSBbTE9DQUxTVEFURURJUi9ydW5dCi0gIC0tbGliZGlyPURJUiAg ICAgICAgICAgIG9iamVjdCBjb2RlIGxpYnJhcmllcyBbRVBSRUZJWC9saWJdCi0gIC0taW5jbHVk ZWRpcj1ESVIgICAgICAgIEMgaGVhZGVyIGZpbGVzIFtQUkVGSVgvaW5jbHVkZV0KLSAgLS1vbGRp bmNsdWRlZGlyPURJUiAgICAgQyBoZWFkZXIgZmlsZXMgZm9yIG5vbi1nY2MgWy91c3IvaW5jbHVk ZV0KLSAgLS1kYXRhcm9vdGRpcj1ESVIgICAgICAgcmVhZC1vbmx5IGFyY2guLWluZGVwZW5kZW50 IGRhdGEgcm9vdCBbUFJFRklYL3NoYXJlXQotICAtLWRhdGFkaXI9RElSICAgICAgICAgICByZWFk LW9ubHkgYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGRhdGEgW0RBVEFST09URElSXQotICAtLWlu Zm9kaXI9RElSICAgICAgICAgICBpbmZvIGRvY3VtZW50YXRpb24gW0RBVEFST09URElSL2luZm9d Ci0gIC0tbG9jYWxlZGlyPURJUiAgICAgICAgIGxvY2FsZS1kZXBlbmRlbnQgZGF0YSBbREFUQVJP T1RESVIvbG9jYWxlXQotICAtLW1hbmRpcj1ESVIgICAgICAgICAgICBtYW4gZG9jdW1lbnRhdGlv biBbREFUQVJPT1RESVIvbWFuXQotICAtLWRvY2Rpcj1ESVIgICAgICAgICAgICBkb2N1bWVudGF0 aW9uIHJvb3QgW0RBVEFST09URElSL2RvYy94ZW5dCi0gIC0taHRtbGRpcj1ESVIgICAgICAgICAg IGh0bWwgZG9jdW1lbnRhdGlvbiBbRE9DRElSXQotICAtLWR2aWRpcj1ESVIgICAgICAgICAgICBk dmkgZG9jdW1lbnRhdGlvbiBbRE9DRElSXQotICAtLXBkZmRpcj1ESVIgICAgICAgICAgICBwZGYg ZG9jdW1lbnRhdGlvbiBbRE9DRElSXQotICAtLXBzZGlyPURJUiAgICAgICAgICAgICBwcyBkb2N1 bWVudGF0aW9uIFtET0NESVJdCi1fQUNFT0YKLQotICBjYXQgPDxcX0FDRU9GCi1fQUNFT0YKLWZp Ci0KLWlmIHRlc3QgLW4gIiRhY19pbml0X2hlbHAiOyB0aGVuCi0gIGNhc2UgJGFjX2luaXRfaGVs cCBpbgotICAgICBzaG9ydCB8IHJlY3Vyc2l2ZSApIGVjaG8gIkNvbmZpZ3VyYXRpb24gb2YgWGVu IEh5cGVydmlzb3IgRG9jdW1lbnRhdGlvbiA0LjEzOiI7OwotICAgZXNhYwotICBjYXQgPDxcX0FD RU9GCi0KLU9wdGlvbmFsIFBhY2thZ2VzOgotICAtLXdpdGgtUEFDS0FHRVs9QVJHXSAgICB1c2Ug UEFDS0FHRSBbQVJHPXllc10KLSAgLS13aXRob3V0LVBBQ0tBR0UgICAgICAgZG8gbm90IHVzZSBQ QUNLQUdFIChzYW1lIGFzIC0td2l0aC1QQUNLQUdFPW5vKQotICAtLXdpdGgtaW5pdGRkaXI9RElS ICAgICBQYXRoIHRvIGRpcmVjdG9yeSB3aXRoIHN5c3YgcnVubGV2ZWwgc2NyaXB0cy4KLSAgICAg ICAgICAgICAgICAgICAgICAgICAgW1NZU0NPTkZESVIvaW5pdC5kXQotICAtLXdpdGgtc3lzY29u ZmlnLWxlYWYtZGlyPVNVQkRJUgotICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lIG9mIHN1 YmRpcmVjdG9yeSBpbiAvZXRjIHRvIHN0b3JlIHJ1bnRpbWUKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgb3B0aW9ucyBmb3IgcnVubGV2ZWwgc2NyaXB0cyBhbmQgZGFlbW9ucyBzdWNoIGFzCi0g ICAgICAgICAgICAgICAgICAgICAgICAgIHhlbnN0b3JlZC4gVGhpcyBzaG91bGQgYmUgZWl0aGVy ICJzeXNjb25maWciIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0Ii4gW3N5 c2NvbmZpZ10KLSAgLS13aXRoLWxpYmV4ZWMtbGVhZi1kaXI9U1VCRElSCi0gICAgICAgICAgICAg ICAgICAgICAgICAgIE5hbWUgb2Ygc3ViZGlyZWN0b3J5IGluIGxpYmV4ZWNkaXIgdG8gdXNlLgot ICAtLXdpdGgteGVuLWR1bXBkaXI9RElSICBQYXRoIHRvIGRpcmVjdG9yeSBmb3IgZG9tVSBjcmFz aCBkdW1wcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0xPQ0FMU1RBVEVESVIvbGliL3hl bi9kdW1wXQotICAtLXdpdGgtcnVuZGlyPURJUiAgICAgICBQYXRoIHRvIGRpcmVjdG9yeSBmb3Ig cnVudGltZSBkYXRhLgotICAgICAgICAgICAgICAgICAgICAgICAgICBbTE9DQUxTVEFURURJUi9y dW5dCi0gIC0td2l0aC1kZWJ1Z2Rpcj1ESVIgICAgIFBhdGggdG8gZGlyZWN0b3J5IGZvciBkZWJ1 ZyBzeW1ib2xzLgotICAgICAgICAgICAgICAgICAgICAgICAgICBbUFJFRklYL2xpYi9kZWJ1Z10K LQotU29tZSBpbmZsdWVudGlhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6Ci0gIEZJRzJERVYgICAg IFBhdGggdG8gZmlnMmRldiB0b29sCi0gIFBPRDJNQU4gICAgIFBhdGggdG8gcG9kMm1hbiB0b29s Ci0gIFBPRDJIVE1MICAgIFBhdGggdG8gcG9kMmh0bWwgdG9vbAotICBQT0QyVEVYVCAgICBQYXRo IHRvIHBvZDJ0ZXh0IHRvb2wKLSAgUEFORE9DICAgICAgUGF0aCB0byBwYW5kb2MgdG9vbAotICBQ RVJMICAgICAgICBQYXRoIHRvIFBlcmwgcGFyc2VyCi0KLVVzZSB0aGVzZSB2YXJpYWJsZXMgdG8g b3ZlcnJpZGUgdGhlIGNob2ljZXMgbWFkZSBieSBgY29uZmlndXJlJyBvciB0byBoZWxwCi1pdCB0 byBmaW5kIGxpYnJhcmllcyBhbmQgcHJvZ3JhbXMgd2l0aCBub25zdGFuZGFyZCBuYW1lcy9sb2Nh dGlvbnMuCi0KLVJlcG9ydCBidWdzIHRvIDx4ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZz4uCi1YZW4g SHlwZXJ2aXNvciBEb2N1bWVudGF0aW9uIGhvbWUgcGFnZTogPGh0dHA6Ly93d3cueGVuLm9yZy8+ LgotX0FDRU9GCi1hY19zdGF0dXM9JD8KLWZpCi0KLWlmIHRlc3QgIiRhY19pbml0X2hlbHAiID0g InJlY3Vyc2l2ZSI7IHRoZW4KLSAgIyBJZiB0aGVyZSBhcmUgc3ViZGlycywgcmVwb3J0IHRoZWly IHNwZWNpZmljIC0taGVscC4KLSAgZm9yIGFjX2RpciBpbiA6ICRhY19zdWJkaXJzX2FsbDsgZG8g dGVzdCAieCRhY19kaXIiID0geDogJiYgY29udGludWUKLSAgICB0ZXN0IC1kICIkYWNfZGlyIiB8 fAotICAgICAgeyBjZCAiJHNyY2RpciIgJiYgYWNfcHdkPWBwd2RgICYmIHNyY2Rpcj0uICYmIHRl c3QgLWQgIiRhY19kaXIiOyB9IHx8Ci0gICAgICBjb250aW51ZQotICAgIGFjX2J1aWxkZGlyPS4K LQotY2FzZSAiJGFjX2RpciIgaW4KLS4pIGFjX2Rpcl9zdWZmaXg9IGFjX3RvcF9idWlsZGRpcl9z dWI9LiBhY190b3BfYnVpbGRfcHJlZml4PSA7OwotKikKLSAgYWNfZGlyX3N1ZmZpeD0vYCRhc19l Y2hvICIkYWNfZGlyIiB8IHNlZCAnc3xeXC5bXFwvXXx8J2AKLSAgIyBBICIuLiIgZm9yIGVhY2gg ZGlyZWN0b3J5IGluICRhY19kaXJfc3VmZml4LgotICBhY190b3BfYnVpbGRkaXJfc3ViPWAkYXNf ZWNobyAiJGFjX2Rpcl9zdWZmaXgiIHwgc2VkICdzfC9bXlxcL10qfC8uLnxnO3N8L3x8J2AKLSAg Y2FzZSAkYWNfdG9wX2J1aWxkZGlyX3N1YiBpbgotICAiIikgYWNfdG9wX2J1aWxkZGlyX3N1Yj0u IGFjX3RvcF9idWlsZF9wcmVmaXg9IDs7Ci0gICopICBhY190b3BfYnVpbGRfcHJlZml4PSRhY190 b3BfYnVpbGRkaXJfc3ViLyA7OwotICBlc2FjIDs7Ci1lc2FjCi1hY19hYnNfdG9wX2J1aWxkZGly PSRhY19wd2QKLWFjX2Fic19idWlsZGRpcj0kYWNfcHdkJGFjX2Rpcl9zdWZmaXgKLSMgZm9yIGJh Y2t3YXJkIGNvbXBhdGliaWxpdHk6Ci1hY190b3BfYnVpbGRkaXI9JGFjX3RvcF9idWlsZF9wcmVm aXgKLQotY2FzZSAkc3JjZGlyIGluCi0gIC4pICAjIFdlIGFyZSBidWlsZGluZyBpbiBwbGFjZS4K LSAgICBhY19zcmNkaXI9LgotICAgIGFjX3RvcF9zcmNkaXI9JGFjX3RvcF9idWlsZGRpcl9zdWIK LSAgICBhY19hYnNfdG9wX3NyY2Rpcj0kYWNfcHdkIDs7Ci0gIFtcXC9dKiB8ID86W1xcL10qICkg ICMgQWJzb2x1dGUgbmFtZS4KLSAgICBhY19zcmNkaXI9JHNyY2RpciRhY19kaXJfc3VmZml4Owot ICAgIGFjX3RvcF9zcmNkaXI9JHNyY2RpcgotICAgIGFjX2Fic190b3Bfc3JjZGlyPSRzcmNkaXIg OzsKLSAgKikgIyBSZWxhdGl2ZSBuYW1lLgotICAgIGFjX3NyY2Rpcj0kYWNfdG9wX2J1aWxkX3By ZWZpeCRzcmNkaXIkYWNfZGlyX3N1ZmZpeAotICAgIGFjX3RvcF9zcmNkaXI9JGFjX3RvcF9idWls ZF9wcmVmaXgkc3JjZGlyCi0gICAgYWNfYWJzX3RvcF9zcmNkaXI9JGFjX3B3ZC8kc3JjZGlyIDs7 Ci1lc2FjCi1hY19hYnNfc3JjZGlyPSRhY19hYnNfdG9wX3NyY2RpciRhY19kaXJfc3VmZml4Ci0K LSAgICBjZCAiJGFjX2RpciIgfHwgeyBhY19zdGF0dXM9JD87IGNvbnRpbnVlOyB9Ci0gICAgIyBD aGVjayBmb3IgZ3Vlc3RlZCBjb25maWd1cmUuCi0gICAgaWYgdGVzdCAtZiAiJGFjX3NyY2Rpci9j b25maWd1cmUuZ251IjsgdGhlbgotICAgICAgZWNobyAmJgotICAgICAgJFNIRUxMICIkYWNfc3Jj ZGlyL2NvbmZpZ3VyZS5nbnUiIC0taGVscD1yZWN1cnNpdmUKLSAgICBlbGlmIHRlc3QgLWYgIiRh Y19zcmNkaXIvY29uZmlndXJlIjsgdGhlbgotICAgICAgZWNobyAmJgotICAgICAgJFNIRUxMICIk YWNfc3JjZGlyL2NvbmZpZ3VyZSIgLS1oZWxwPXJlY3Vyc2l2ZQotICAgIGVsc2UKLSAgICAgICRh c19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IG5vIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gaXMg aW4gJGFjX2RpciIgPiYyCi0gICAgZmkgfHwgYWNfc3RhdHVzPSQ/Ci0gICAgY2QgIiRhY19wd2Qi IHx8IHsgYWNfc3RhdHVzPSQ/OyBicmVhazsgfQotICBkb25lCi1maQotCi10ZXN0IC1uICIkYWNf aW5pdF9oZWxwIiAmJiBleGl0ICRhY19zdGF0dXMKLWlmICRhY19pbml0X3ZlcnNpb247IHRoZW4K LSAgY2F0IDw8XF9BQ0VPRgotWGVuIEh5cGVydmlzb3IgRG9jdW1lbnRhdGlvbiBjb25maWd1cmUg NC4xMwotZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5Ci0KLUNvcHlyaWdodCAoQykgMjAx MiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLVRoaXMgY29uZmlndXJlIHNjcmlwdCBp cyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi1naXZlcyB1bmxp bWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuCi1fQUNF T0YKLSAgZXhpdAotZmkKLQotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0jIyBBdXRv Y29uZiBpbml0aWFsaXphdGlvbi4gIyMKLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwot Y2F0ID5jb25maWcubG9nIDw8X0FDRU9GCi1UaGlzIGZpbGUgY29udGFpbnMgYW55IG1lc3NhZ2Vz IHByb2R1Y2VkIGJ5IGNvbXBpbGVycyB3aGlsZQotcnVubmluZyBjb25maWd1cmUsIHRvIGFpZCBk ZWJ1Z2dpbmcgaWYgY29uZmlndXJlIG1ha2VzIGEgbWlzdGFrZS4KLQotSXQgd2FzIGNyZWF0ZWQg YnkgWGVuIEh5cGVydmlzb3IgRG9jdW1lbnRhdGlvbiAkYXNfbWUgNC4xMywgd2hpY2ggd2FzCi1n ZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3 YXMKLQotICAkICQwICRACi0KLV9BQ0VPRgotZXhlYyA1Pj5jb25maWcubG9nCi17Ci1jYXQgPDxf QVNVTkFNRQotIyMgLS0tLS0tLS0tICMjCi0jIyBQbGF0Zm9ybS4gIyMKLSMjIC0tLS0tLS0tLSAj IwotCi1ob3N0bmFtZSA9IGAoaG9zdG5hbWUgfHwgdW5hbWUgLW4pIDI+L2Rldi9udWxsIHwgc2Vk IDFxYAotdW5hbWUgLW0gPSBgKHVuYW1lIC1tKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25g Ci11bmFtZSAtciA9IGAodW5hbWUgLXIpIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKLXVu YW1lIC1zID0gYCh1bmFtZSAtcykgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAotdW5hbWUg LXYgPSBgKHVuYW1lIC12KSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCi0KLS91c3IvYmlu L3VuYW1lIC1wID0gYCgvdXNyL2Jpbi91bmFtZSAtcCkgMj4vZGV2L251bGwgfHwgZWNobyB1bmtu b3duYAotL2Jpbi91bmFtZSAtWCAgICAgPSBgKC9iaW4vdW5hbWUgLVgpIDI+L2Rldi9udWxsICAg ICB8fCBlY2hvIHVua25vd25gCi0KLS9iaW4vYXJjaCAgICAgICAgICAgICAgPSBgKC9iaW4vYXJj aCkgMj4vZGV2L251bGwgICAgICAgICAgICAgIHx8IGVjaG8gdW5rbm93bmAKLS91c3IvYmluL2Fy Y2ggLWsgICAgICAgPSBgKC91c3IvYmluL2FyY2ggLWspIDI+L2Rldi9udWxsICAgICAgIHx8IGVj aG8gdW5rbm93bmAKLS91c3IvY29udmV4L2dldHN5c2luZm8gPSBgKC91c3IvY29udmV4L2dldHN5 c2luZm8pIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKLS91c3IvYmluL2hvc3RpbmZvICAg ICAgPSBgKC91c3IvYmluL2hvc3RpbmZvKSAyPi9kZXYvbnVsbCAgICAgIHx8IGVjaG8gdW5rbm93 bmAKLS9iaW4vbWFjaGluZSAgICAgICAgICAgPSBgKC9iaW4vbWFjaGluZSkgMj4vZGV2L251bGwg ICAgICAgICAgIHx8IGVjaG8gdW5rbm93bmAKLS91c3IvYmluL29zbGV2ZWwgICAgICAgPSBgKC91 c3IvYmluL29zbGV2ZWwpIDI+L2Rldi9udWxsICAgICAgIHx8IGVjaG8gdW5rbm93bmAKLS9iaW4v dW5pdmVyc2UgICAgICAgICAgPSBgKC9iaW4vdW5pdmVyc2UpIDI+L2Rldi9udWxsICAgICAgICAg IHx8IGVjaG8gdW5rbm93bmAKLQotX0FTVU5BTUUKLQotYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQ QVRIX1NFUEFSQVRPUgotZm9yIGFzX2RpciBpbiAkUEFUSAotZG8KLSAgSUZTPSRhc19zYXZlX0lG UwotICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICRhc19lY2hvICJQQVRIOiAk YXNfZGlyIgotICBkb25lCi1JRlM9JGFzX3NhdmVfSUZTCi0KLX0gPiY1Ci0KLWNhdCA+JjUgPDxf QUNFT0YKLQotCi0jIyAtLS0tLS0tLS0tLSAjIwotIyMgQ29yZSB0ZXN0cy4gIyMKLSMjIC0tLS0t LS0tLS0tICMjCi0KLV9BQ0VPRgotCi0KLSMgS2VlcCBhIHRyYWNlIG9mIHRoZSBjb21tYW5kIGxp bmUuCi0jIFN0cmlwIG91dCAtLW5vLWNyZWF0ZSBhbmQgLS1uby1yZWN1cnNpb24gc28gdGhleSBk byBub3QgcGlsZSB1cC4KLSMgU3RyaXAgb3V0IC0tc2lsZW50IGJlY2F1c2Ugd2UgZG9uJ3Qgd2Fu dCB0byByZWNvcmQgaXQgZm9yIGZ1dHVyZSBydW5zLgotIyBBbHNvIHF1b3RlIGFueSBhcmdzIGNv bnRhaW5pbmcgc2hlbGwgbWV0YS1jaGFyYWN0ZXJzLgotIyBNYWtlIHR3byBwYXNzZXMgdG8gYWxs b3cgZm9yIHByb3BlciBkdXBsaWNhdGUtYXJndW1lbnQgc3VwcHJlc3Npb24uCi1hY19jb25maWd1 cmVfYXJncz0KLWFjX2NvbmZpZ3VyZV9hcmdzMD0KLWFjX2NvbmZpZ3VyZV9hcmdzMT0KLWFjX211 c3Rfa2VlcF9uZXh0PWZhbHNlCi1mb3IgYWNfcGFzcyBpbiAxIDIKLWRvCi0gIGZvciBhY19hcmcK LSAgZG8KLSAgICBjYXNlICRhY19hcmcgaW4KLSAgICAtbm8tY3JlYXRlIHwgLS1uby1jKiB8IC1u IHwgLW5vLXJlY3Vyc2lvbiB8IC0tbm8tciopIGNvbnRpbnVlIDs7Ci0gICAgLXEgfCAtcXVpZXQg fCAtLXF1aWV0IHwgLS1xdWllIHwgLS1xdWkgfCAtLXF1IHwgLS1xIFwKLSAgICB8IC1zaWxlbnQg fCAtLXNpbGVudCB8IC0tc2lsZW4gfCAtLXNpbGUgfCAtLXNpbCkKLSAgICAgIGNvbnRpbnVlIDs7 Ci0gICAgKlwnKikKLSAgICAgIGFjX2FyZz1gJGFzX2VjaG8gIiRhY19hcmciIHwgc2VkICJzLycv J1xcXFxcXFxcJycvZyJgIDs7Ci0gICAgZXNhYwotICAgIGNhc2UgJGFjX3Bhc3MgaW4KLSAgICAx KSBhc19mbl9hcHBlbmQgYWNfY29uZmlndXJlX2FyZ3MwICIgJyRhY19hcmcnIiA7OwotICAgIDIp Ci0gICAgICBhc19mbl9hcHBlbmQgYWNfY29uZmlndXJlX2FyZ3MxICIgJyRhY19hcmcnIgotICAg ICAgaWYgdGVzdCAkYWNfbXVzdF9rZWVwX25leHQgPSB0cnVlOyB0aGVuCi0JYWNfbXVzdF9rZWVw X25leHQ9ZmFsc2UgIyBHb3QgdmFsdWUsIGJhY2sgdG8gbm9ybWFsLgotICAgICAgZWxzZQotCWNh c2UgJGFjX2FyZyBpbgotCSAgKj0qIHwgLS1jb25maWctY2FjaGUgfCAtQyB8IC1kaXNhYmxlLSog fCAtLWRpc2FibGUtKiBcCi0JICB8IC1lbmFibGUtKiB8IC0tZW5hYmxlLSogfCAtZ2FzIHwgLS1n KiB8IC1uZnAgfCAtLW5mKiBcCi0JICB8IC1xIHwgLXF1aWV0IHwgLS1xKiB8IC1zaWxlbnQgfCAt LXNpbCogfCAtdiB8IC12ZXJiKiBcCi0JICB8IC13aXRoLSogfCAtLXdpdGgtKiB8IC13aXRob3V0 LSogfCAtLXdpdGhvdXQtKiB8IC0teCkKLQkgICAgY2FzZSAiJGFjX2NvbmZpZ3VyZV9hcmdzMCAi IGluCi0JICAgICAgIiRhY19jb25maWd1cmVfYXJnczEiKiIgJyRhY19hcmcnICIqICkgY29udGlu dWUgOzsKLQkgICAgZXNhYwotCSAgICA7OwotCSAgLSogKSBhY19tdXN0X2tlZXBfbmV4dD10cnVl IDs7Ci0JZXNhYwotICAgICAgZmkKLSAgICAgIGFzX2ZuX2FwcGVuZCBhY19jb25maWd1cmVfYXJn cyAiICckYWNfYXJnJyIKLSAgICAgIDs7Ci0gICAgZXNhYwotICBkb25lCi1kb25lCi17IGFjX2Nv bmZpZ3VyZV9hcmdzMD07IHVuc2V0IGFjX2NvbmZpZ3VyZV9hcmdzMDt9Ci17IGFjX2NvbmZpZ3Vy ZV9hcmdzMT07IHVuc2V0IGFjX2NvbmZpZ3VyZV9hcmdzMTt9Ci0KLSMgV2hlbiBpbnRlcnJ1cHRl ZCBvciBleGl0J2QsIGNsZWFudXAgdGVtcG9yYXJ5IGZpbGVzLCBhbmQgY29tcGxldGUKLSMgY29u ZmlnLmxvZy4gIFdlIHJlbW92ZSBjb21tZW50cyBiZWNhdXNlIGFueXdheSB0aGUgcXVvdGVzIGlu IHRoZXJlCi0jIHdvdWxkIGNhdXNlIHByb2JsZW1zIG9yIGxvb2sgdWdseS4KLSMgV0FSTklORzog VXNlICdcJycgdG8gcmVwcmVzZW50IGFuIGFwb3N0cm9waGUgd2l0aGluIHRoZSB0cmFwLgotIyBX QVJOSU5HOiBEbyBub3Qgc3RhcnQgdGhlIHRyYXAgY29kZSB3aXRoIGEgbmV3bGluZSwgZHVlIHRv IGEgRnJlZUJTRCA0LjAgYnVnLgotdHJhcCAnZXhpdF9zdGF0dXM9JD8KLSAgIyBTYXZlIGludG8g Y29uZmlnLmxvZyBzb21lIGluZm9ybWF0aW9uIHRoYXQgbWlnaHQgaGVscCBpbiBkZWJ1Z2dpbmcu Ci0gIHsKLSAgICBlY2hvCi0KLSAgICAkYXNfZWNobyAiIyMgLS0tLS0tLS0tLS0tLS0tLSAjIwot IyMgQ2FjaGUgdmFyaWFibGVzLiAjIwotIyMgLS0tLS0tLS0tLS0tLS0tLSAjIyIKLSAgICBlY2hv Ci0gICAgIyBUaGUgZm9sbG93aW5nIHdheSBvZiB3cml0aW5nIHRoZSBjYWNoZSBtaXNoYW5kbGVz IG5ld2xpbmVzIGluIHZhbHVlcywKLSgKLSAgZm9yIGFjX3ZhciBpbiBgKHNldCkgMj4mMSB8IHNl ZCAtbiAnXCcncy9eXChbYS16QS1aX11bYS16QS1aMC05X10qXCk9LiovXDEvcCdcJydgOyBkbwot ICAgIGV2YWwgYWNfdmFsPVwkJGFjX3ZhcgotICAgIGNhc2UgJGFjX3ZhbCBpbiAjKAotICAgICok e2FzX25sfSopCi0gICAgICBjYXNlICRhY192YXIgaW4gIygKLSAgICAgICpfY3ZfKikgeyAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBjYWNoZSB2YXJpYWJs ZSAkYWNfdmFyIGNvbnRhaW5zIGEgbmV3bGluZSIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiBXQVJO SU5HOiBjYWNoZSB2YXJpYWJsZSAkYWNfdmFyIGNvbnRhaW5zIGEgbmV3bGluZSIgPiYyO30gOzsK LSAgICAgIGVzYWMKLSAgICAgIGNhc2UgJGFjX3ZhciBpbiAjKAotICAgICAgXyB8IElGUyB8IGFz X25sKSA7OyAjKAotICAgICAgQkFTSF9BUkdWIHwgQkFTSF9TT1VSQ0UpIGV2YWwgJGFjX3Zhcj0g OzsgIygKLSAgICAgICopIHsgZXZhbCAkYWNfdmFyPTsgdW5zZXQgJGFjX3Zhcjt9IDs7Ci0gICAg ICBlc2FjIDs7Ci0gICAgZXNhYwotICBkb25lCi0gIChzZXQpIDI+JjEgfAotICAgIGNhc2UgJGFz X25sYChhY19zcGFjZT0nXCcnICdcJyc7IHNldCkgMj4mMWAgaW4gIygKLSAgICAqJHthc19ubH1h Y19zcGFjZT1cICopCi0gICAgICBzZWQgLW4gXAotCSJzLydcJycvJ1wnJ1xcXFwnXCcnJ1wnJy9n OwotCSAgcy9eXFwoW18kYXNfY3JfYWxudW1dKl9jdl9bXyRhc19jcl9hbG51bV0qXFwpPVxcKC4q XFwpL1xcMT0nXCcnXFwyJ1wnJy9wIgotICAgICAgOzsgIygKLSAgICAqKQotICAgICAgc2VkIC1u ICIvXltfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKj0vcCIKLSAgICAgIDs7Ci0g ICAgZXNhYyB8Ci0gICAgc29ydAotKQotICAgIGVjaG8KLQotICAgICRhc19lY2hvICIjIyAtLS0t LS0tLS0tLS0tLS0tLSAjIwotIyMgT3V0cHV0IHZhcmlhYmxlcy4gIyMKLSMjIC0tLS0tLS0tLS0t LS0tLS0tICMjIgotICAgIGVjaG8KLSAgICBmb3IgYWNfdmFyIGluICRhY19zdWJzdF92YXJzCi0g ICAgZG8KLSAgICAgIGV2YWwgYWNfdmFsPVwkJGFjX3ZhcgotICAgICAgY2FzZSAkYWNfdmFsIGlu Ci0gICAgICAqXCdcJycqKSBhY192YWw9YCRhc19lY2hvICIkYWNfdmFsIiB8IHNlZCAicy8nXCcn LydcJydcXFxcXFxcXCdcJycnXCcnL2ciYDs7Ci0gICAgICBlc2FjCi0gICAgICAkYXNfZWNobyAi JGFjX3Zhcj0nXCcnJGFjX3ZhbCdcJyciCi0gICAgZG9uZSB8IHNvcnQKLSAgICBlY2hvCi0KLSAg ICBpZiB0ZXN0IC1uICIkYWNfc3Vic3RfZmlsZXMiOyB0aGVuCi0gICAgICAkYXNfZWNobyAiIyMg LS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIyMgRmlsZSBzdWJzdGl0dXRpb25zLiAjIwotIyMgLS0t LS0tLS0tLS0tLS0tLS0tLSAjIyIKLSAgICAgIGVjaG8KLSAgICAgIGZvciBhY192YXIgaW4gJGFj X3N1YnN0X2ZpbGVzCi0gICAgICBkbwotCWV2YWwgYWNfdmFsPVwkJGFjX3ZhcgotCWNhc2UgJGFj X3ZhbCBpbgotCSpcJ1wnJyopIGFjX3ZhbD1gJGFzX2VjaG8gIiRhY192YWwiIHwgc2VkICJzLydc JycvJ1wnJ1xcXFxcXFxcJ1wnJydcJycvZyJgOzsKLQllc2FjCi0JJGFzX2VjaG8gIiRhY192YXI9 J1wnJyRhY192YWwnXCcnIgotICAgICAgZG9uZSB8IHNvcnQKLSAgICAgIGVjaG8KLSAgICBmaQot Ci0gICAgaWYgdGVzdCAtcyBjb25mZGVmcy5oOyB0aGVuCi0gICAgICAkYXNfZWNobyAiIyMgLS0t LS0tLS0tLS0gIyMKLSMjIGNvbmZkZWZzLmguICMjCi0jIyAtLS0tLS0tLS0tLSAjIyIKLSAgICAg IGVjaG8KLSAgICAgIGNhdCBjb25mZGVmcy5oCi0gICAgICBlY2hvCi0gICAgZmkKLSAgICB0ZXN0 ICIkYWNfc2lnbmFsIiAhPSAwICYmCi0gICAgICAkYXNfZWNobyAiJGFzX21lOiBjYXVnaHQgc2ln bmFsICRhY19zaWduYWwiCi0gICAgJGFzX2VjaG8gIiRhc19tZTogZXhpdCAkZXhpdF9zdGF0dXMi Ci0gIH0gPiY1Ci0gIHJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiAmJgotICAgIHJt IC1mIC1yIGNvbmZ0ZXN0KiBjb25mZGVmcyogY29uZiQkKiAkYWNfY2xlYW5fZmlsZXMgJiYKLSAg ICBleGl0ICRleGl0X3N0YXR1cwotJyAwCi1mb3IgYWNfc2lnbmFsIGluIDEgMiAxMyAxNTsgZG8K LSAgdHJhcCAnYWNfc2lnbmFsPSckYWNfc2lnbmFsJzsgYXNfZm5fZXhpdCAxJyAkYWNfc2lnbmFs Ci1kb25lCi1hY19zaWduYWw9MAotCi0jIGNvbmZkZWZzLmggYXZvaWRzIE9TIGNvbW1hbmQgbGlu ZSBsZW5ndGggbGltaXRzIHRoYXQgREVGUyBjYW4gZXhjZWVkLgotcm0gLWYgLXIgY29uZnRlc3Qq IGNvbmZkZWZzLmgKLQotJGFzX2VjaG8gIi8qIGNvbmZkZWZzLmggKi8iID4gY29uZmRlZnMuaAot Ci0jIFByZWRlZmluZWQgcHJlcHJvY2Vzc29yIHZhcmlhYmxlcy4KLQotY2F0ID4+Y29uZmRlZnMu aCA8PF9BQ0VPRgotI2RlZmluZSBQQUNLQUdFX05BTUUgIiRQQUNLQUdFX05BTUUiCi1fQUNFT0YK LQotY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSBQQUNLQUdFX1RBUk5BTUUgIiRQ QUNLQUdFX1RBUk5BTUUiCi1fQUNFT0YKLQotY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2Rl ZmluZSBQQUNLQUdFX1ZFUlNJT04gIiRQQUNLQUdFX1ZFUlNJT04iCi1fQUNFT0YKLQotY2F0ID4+ Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSBQQUNLQUdFX1NUUklORyAiJFBBQ0tBR0VfU1RS SU5HIgotX0FDRU9GCi0KLWNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSNkZWZpbmUgUEFDS0FH RV9CVUdSRVBPUlQgIiRQQUNLQUdFX0JVR1JFUE9SVCIKLV9BQ0VPRgotCi1jYXQgPj5jb25mZGVm cy5oIDw8X0FDRU9GCi0jZGVmaW5lIFBBQ0tBR0VfVVJMICIkUEFDS0FHRV9VUkwiCi1fQUNFT0YK LQotCi0jIExldCB0aGUgc2l0ZSBmaWxlIHNlbGVjdCBhbiBhbHRlcm5hdGUgY2FjaGUgZmlsZSBp ZiBpdCB3YW50cyB0by4KLSMgUHJlZmVyIGFuIGV4cGxpY2l0bHkgc2VsZWN0ZWQgZmlsZSB0byBh dXRvbWF0aWNhbGx5IHNlbGVjdGVkIG9uZXMuCi1hY19zaXRlX2ZpbGUxPU5PTkUKLWFjX3NpdGVf ZmlsZTI9Tk9ORQotaWYgdGVzdCAtbiAiJENPTkZJR19TSVRFIjsgdGhlbgotICAjIFdlIGRvIG5v dCB3YW50IGEgUEFUSCBzZWFyY2ggZm9yIGNvbmZpZy5zaXRlLgotICBjYXNlICRDT05GSUdfU0lU RSBpbiAjKCgKLSAgICAtKikgIGFjX3NpdGVfZmlsZTE9Li8kQ09ORklHX1NJVEU7OwotICAgICov KikgYWNfc2l0ZV9maWxlMT0kQ09ORklHX1NJVEU7OwotICAgICopICAgYWNfc2l0ZV9maWxlMT0u LyRDT05GSUdfU0lURTs7Ci0gIGVzYWMKLWVsaWYgdGVzdCAieCRwcmVmaXgiICE9IHhOT05FOyB0 aGVuCi0gIGFjX3NpdGVfZmlsZTE9JHByZWZpeC9zaGFyZS9jb25maWcuc2l0ZQotICBhY19zaXRl X2ZpbGUyPSRwcmVmaXgvZXRjL2NvbmZpZy5zaXRlCi1lbHNlCi0gIGFjX3NpdGVfZmlsZTE9JGFj X2RlZmF1bHRfcHJlZml4L3NoYXJlL2NvbmZpZy5zaXRlCi0gIGFjX3NpdGVfZmlsZTI9JGFjX2Rl ZmF1bHRfcHJlZml4L2V0Yy9jb25maWcuc2l0ZQotZmkKLWZvciBhY19zaXRlX2ZpbGUgaW4gIiRh Y19zaXRlX2ZpbGUxIiAiJGFjX3NpdGVfZmlsZTIiCi1kbwotICB0ZXN0ICJ4JGFjX3NpdGVfZmls ZSIgPSB4Tk9ORSAmJiBjb250aW51ZQotICBpZiB0ZXN0IC9kZXYvbnVsbCAhPSAiJGFjX3NpdGVf ZmlsZSIgJiYgdGVzdCAtciAiJGFjX3NpdGVfZmlsZSI7IHRoZW4KLSAgICB7ICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGxvYWRpbmcgc2l0ZSBzY3JpcHQgJGFjX3NpdGVf ZmlsZSIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiBsb2FkaW5nIHNpdGUgc2NyaXB0ICRhY19zaXRl X2ZpbGUiID4mNjt9Ci0gICAgc2VkICdzL14vfCAvJyAiJGFjX3NpdGVfZmlsZSIgPiY1Ci0gICAg LiAiJGFjX3NpdGVfZmlsZSIgXAotICAgICAgfHwgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1Ci0kYXNfZWNobyAiJGFz X21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Ci1hc19mbl9lcnJvciAkPyAiZmFpbGVk IHRvIGxvYWQgc2l0ZSBzY3JpcHQgJGFjX3NpdGVfZmlsZQotU2VlIFxgY29uZmlnLmxvZycgZm9y IG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KLSAgZmkKLWRvbmUKLQotaWYgdGVzdCAtciAi JGNhY2hlX2ZpbGUiOyB0aGVuCi0gICMgU29tZSB2ZXJzaW9ucyBvZiBiYXNoIHdpbGwgZmFpbCB0 byBzb3VyY2UgL2Rldi9udWxsIChzcGVjaWFsIGZpbGVzCi0gICMgYWN0dWFsbHkpLCBzbyB3ZSBh dm9pZCBkb2luZyB0aGF0LiAgREpHUFAgZW11bGF0ZXMgaXQgYXMgYSByZWd1bGFyIGZpbGUuCi0g IGlmIHRlc3QgL2Rldi9udWxsICE9ICIkY2FjaGVfZmlsZSIgJiYgdGVzdCAtZiAiJGNhY2hlX2Zp bGUiOyB0aGVuCi0gICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBs b2FkaW5nIGNhY2hlICRjYWNoZV9maWxlIiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IGxvYWRpbmcg Y2FjaGUgJGNhY2hlX2ZpbGUiID4mNjt9Ci0gICAgY2FzZSAkY2FjaGVfZmlsZSBpbgotICAgICAg W1xcL10qIHwgPzpbXFwvXSogKSAuICIkY2FjaGVfZmlsZSI7OwotICAgICAgKikgICAgICAgICAg ICAgICAgICAgICAgLiAiLi8kY2FjaGVfZmlsZSI7OwotICAgIGVzYWMKLSAgZmkKLWVsc2UKLSAg eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjcmVhdGluZyBjYWNoZSAk Y2FjaGVfZmlsZSIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiBjcmVhdGluZyBjYWNoZSAkY2FjaGVf ZmlsZSIgPiY2O30KLSAgPiRjYWNoZV9maWxlCi1maQotCi0jIENoZWNrIHRoYXQgdGhlIHByZWNp b3VzIHZhcmlhYmxlcyBzYXZlZCBpbiB0aGUgY2FjaGUgaGF2ZSBrZXB0IHRoZSBzYW1lCi0jIHZh bHVlLgotYWNfY2FjaGVfY29ycnVwdGVkPWZhbHNlCi1mb3IgYWNfdmFyIGluICRhY19wcmVjaW91 c192YXJzOyBkbwotICBldmFsIGFjX29sZF9zZXQ9XCRhY19jdl9lbnZfJHthY192YXJ9X3NldAot ICBldmFsIGFjX25ld19zZXQ9XCRhY19lbnZfJHthY192YXJ9X3NldAotICBldmFsIGFjX29sZF92 YWw9XCRhY19jdl9lbnZfJHthY192YXJ9X3ZhbHVlCi0gIGV2YWwgYWNfbmV3X3ZhbD1cJGFjX2Vu dl8ke2FjX3Zhcn1fdmFsdWUKLSAgY2FzZSAkYWNfb2xkX3NldCwkYWNfbmV3X3NldCBpbgotICAg IHNldCwpCi0gICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVy cm9yOiBcYCRhY192YXInIHdhcyBzZXQgdG8gXGAkYWNfb2xkX3ZhbCcgaW4gdGhlIHByZXZpb3Vz IHJ1biIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiBlcnJvcjogXGAkYWNfdmFyJyB3YXMgc2V0IHRv IFxgJGFjX29sZF92YWwnIGluIHRoZSBwcmV2aW91cyBydW4iID4mMjt9Ci0gICAgICBhY19jYWNo ZV9jb3JydXB0ZWQ9OiA7OwotICAgICxzZXQpCi0gICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IGVycm9yOiBcYCRhY192YXInIHdhcyBub3Qgc2V0IGluIHRoZSBw cmV2aW91cyBydW4iID4mNQotJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IFxgJGFjX3Zhcicgd2Fz IG5vdCBzZXQgaW4gdGhlIHByZXZpb3VzIHJ1biIgPiYyO30KLSAgICAgIGFjX2NhY2hlX2NvcnJ1 cHRlZD06IDs7Ci0gICAgLCk7OwotICAgICopCi0gICAgICBpZiB0ZXN0ICJ4JGFjX29sZF92YWwi ICE9ICJ4JGFjX25ld192YWwiOyB0aGVuCi0JIyBkaWZmZXJlbmNlcyBpbiB3aGl0ZXNwYWNlIGRv IG5vdCBsZWFkIHRvIGZhaWx1cmUuCi0JYWNfb2xkX3ZhbF93PWBlY2hvIHggJGFjX29sZF92YWxg Ci0JYWNfbmV3X3ZhbF93PWBlY2hvIHggJGFjX25ld192YWxgCi0JaWYgdGVzdCAiJGFjX29sZF92 YWxfdyIgIT0gIiRhY19uZXdfdmFsX3ciOyB0aGVuCi0JICB7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IGVycm9yOiBcYCRhY192YXInIGhhcyBjaGFuZ2VkIHNpbmNlIHRo ZSBwcmV2aW91cyBydW46IiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBcYCRhY192YXIn IGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2aW91cyBydW46IiA+JjI7fQotCSAgYWNfY2FjaGVf Y29ycnVwdGVkPToKLQllbHNlCi0JICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IHdhcm5pbmc6IGlnbm9yaW5nIHdoaXRlc3BhY2UgY2hhbmdlcyBpbiBcYCRhY192YXIn IHNpbmNlIHRoZSBwcmV2aW91cyBydW46IiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IHdhcm5pbmc6 IGlnbm9yaW5nIHdoaXRlc3BhY2UgY2hhbmdlcyBpbiBcYCRhY192YXInIHNpbmNlIHRoZSBwcmV2 aW91cyBydW46IiA+JjI7fQotCSAgZXZhbCAkYWNfdmFyPVwkYWNfb2xkX3ZhbAotCWZpCi0JeyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAgIGZvcm1lciB2YWx1ZTogIFxg JGFjX29sZF92YWwnIiA+JjUKLSRhc19lY2hvICIkYXNfbWU6ICAgZm9ybWVyIHZhbHVlOiAgXGAk YWNfb2xkX3ZhbCciID4mMjt9Ci0JeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiAgIGN1cnJlbnQgdmFsdWU6IFxgJGFjX25ld192YWwnIiA+JjUKLSRhc19lY2hvICIkYXNf bWU6ICAgY3VycmVudCB2YWx1ZTogXGAkYWNfbmV3X3ZhbCciID4mMjt9Ci0gICAgICBmaTs7Ci0g IGVzYWMKLSAgIyBQYXNzIHByZWNpb3VzIHZhcmlhYmxlcyB0byBjb25maWcuc3RhdHVzLgotICBp ZiB0ZXN0ICIkYWNfbmV3X3NldCIgPSBzZXQ7IHRoZW4KLSAgICBjYXNlICRhY19uZXdfdmFsIGlu Ci0gICAgKlwnKikgYWNfYXJnPSRhY192YXI9YCRhc19lY2hvICIkYWNfbmV3X3ZhbCIgfCBzZWQg InMvJy8nXFxcXFxcXFwnJy9nImAgOzsKLSAgICAqKSBhY19hcmc9JGFjX3Zhcj0kYWNfbmV3X3Zh bCA7OwotICAgIGVzYWMKLSAgICBjYXNlICIgJGFjX2NvbmZpZ3VyZV9hcmdzICIgaW4KLSAgICAg ICoiICckYWNfYXJnJyAiKikgOzsgIyBBdm9pZCBkdXBzLiAgVXNlIG9mIHF1b3RlcyBlbnN1cmVz IGFjY3VyYWN5LgotICAgICAgKikgYXNfZm5fYXBwZW5kIGFjX2NvbmZpZ3VyZV9hcmdzICIgJyRh Y19hcmcnIiA7OwotICAgIGVzYWMKLSAgZmkKLWRvbmUKLWlmICRhY19jYWNoZV9jb3JydXB0ZWQ7 IHRoZW4KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjog aW4gXGAkYWNfcHdkJzoiID4mNQotJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3 ZCc6IiA+JjI7fQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVy cm9yOiBjaGFuZ2VzIGluIHRoZSBlbnZpcm9ubWVudCBjYW4gY29tcHJvbWlzZSB0aGUgYnVpbGQi ID4mNQotJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGNoYW5nZXMgaW4gdGhlIGVudmlyb25tZW50 IGNhbiBjb21wcm9taXNlIHRoZSBidWlsZCIgPiYyO30KLSAgYXNfZm5fZXJyb3IgJD8gInJ1biBc YG1ha2UgZGlzdGNsZWFuJyBhbmQvb3IgXGBybSAkY2FjaGVfZmlsZScgYW5kIHN0YXJ0IG92ZXIi ICIkTElORU5PIiA1Ci1maQotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLSMjIE1haW4gYm9k eSBvZiBzY3JpcHQuICMjCi0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotCi1hY19leHQ9Ywot YWNfY3BwPSckQ1BQICRDUFBGTEFHUycKLWFjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBG TEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKLWFjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19l eGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+ JjUnCi1hY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251Ci0KLQotCi1hY19jb25m aWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMgLi4vY29uZmlnL0RvY3MubWsgbWFuL3hsLmNmZy41 LnBvZCBtYW4veGwuMS5wb2QiCi0KLWFjX2F1eF9kaXI9Ci1mb3IgYWNfZGlyIGluIC4uLyAiJHNy Y2RpciIvLi4vOyBkbwotICBpZiB0ZXN0IC1mICIkYWNfZGlyL2luc3RhbGwtc2giOyB0aGVuCi0g ICAgYWNfYXV4X2Rpcj0kYWNfZGlyCi0gICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvaW5z dGFsbC1zaCAtYyIKLSAgICBicmVhawotICBlbGlmIHRlc3QgLWYgIiRhY19kaXIvaW5zdGFsbC5z aCI7IHRoZW4KLSAgICBhY19hdXhfZGlyPSRhY19kaXIKLSAgICBhY19pbnN0YWxsX3NoPSIkYWNf YXV4X2Rpci9pbnN0YWxsLnNoIC1jIgotICAgIGJyZWFrCi0gIGVsaWYgdGVzdCAtZiAiJGFjX2Rp ci9zaHRvb2wiOyB0aGVuCi0gICAgYWNfYXV4X2Rpcj0kYWNfZGlyCi0gICAgYWNfaW5zdGFsbF9z aD0iJGFjX2F1eF9kaXIvc2h0b29sIGluc3RhbGwgLWMiCi0gICAgYnJlYWsKLSAgZmkKLWRvbmUK LWlmIHRlc3QgLXogIiRhY19hdXhfZGlyIjsgdGhlbgotICBhc19mbl9lcnJvciAkPyAiY2Fubm90 IGZpbmQgaW5zdGFsbC1zaCwgaW5zdGFsbC5zaCwgb3Igc2h0b29sIGluIC4uLyBcIiRzcmNkaXJc Ii8uLi8iICIkTElORU5PIiA1Ci1maQotCi0jIFRoZXNlIHRocmVlIHZhcmlhYmxlcyBhcmUgdW5k b2N1bWVudGVkIGFuZCB1bnN1cHBvcnRlZCwKLSMgYW5kIGFyZSBpbnRlbmRlZCB0byBiZSB3aXRo ZHJhd24gaW4gYSBmdXR1cmUgQXV0b2NvbmYgcmVsZWFzZS4KLSMgVGhleSBjYW4gY2F1c2Ugc2Vy aW91cyBwcm9ibGVtcyBpZiBhIGJ1aWxkZXIncyBzb3VyY2UgdHJlZSBpcyBpbiBhIGRpcmVjdG9y eQotIyB3aG9zZSBmdWxsIG5hbWUgY29udGFpbnMgdW51c3VhbCBjaGFyYWN0ZXJzLgotYWNfY29u ZmlnX2d1ZXNzPSIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLmd1ZXNzIiAgIyBQbGVhc2UgZG9u J3QgdXNlIHRoaXMgdmFyLgotYWNfY29uZmlnX3N1Yj0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZp Zy5zdWIiICAjIFBsZWFzZSBkb24ndCB1c2UgdGhpcyB2YXIuCi1hY19jb25maWd1cmU9IiRTSEVM TCAkYWNfYXV4X2Rpci9jb25maWd1cmUiICAjIFBsZWFzZSBkb24ndCB1c2UgdGhpcyB2YXIuCi0K LQotCi0jIE00IE1hY3JvIGluY2x1ZGVzCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotY2Fz ZSAiJGhvc3Rfb3MiIGluCi0qZnJlZWJzZCopIFhFTlNUT1JFRF9LVkE9L2Rldi94ZW4veGVuc3Rv cmVkIDs7Ci0qKSBYRU5TVE9SRURfS1ZBPS9wcm9jL3hlbi94c2Rfa3ZhIDs7Ci1lc2FjCi0KLQot Y2FzZSAiJGhvc3Rfb3MiIGluCi0qZnJlZWJzZCopIFhFTlNUT1JFRF9QT1JUPS9kZXYveGVuL3hl bnN0b3JlZCA7OwotKikgWEVOU1RPUkVEX1BPUlQ9L3Byb2MveGVuL3hzZF9wb3J0IDs7Ci1lc2Fj Ci0KLQotCi0KLXRlc3QgIngkcHJlZml4IiA9ICJ4Tk9ORSIgJiYgcHJlZml4PSRhY19kZWZhdWx0 X3ByZWZpeAotdGVzdCAieCRleGVjX3ByZWZpeCIgPSAieE5PTkUiICYmIGV4ZWNfcHJlZml4PSR7 cHJlZml4fQotCi1pZiB0ZXN0ICIkbG9jYWxzdGF0ZWRpciIgPSAnJHtwcmVmaXh9L3ZhcicgOyB0 aGVuCi0gICAgbG9jYWxzdGF0ZWRpcj0vdmFyCi1maQotCi1iaW5kaXI9YGV2YWwgZWNobyAkYmlu ZGlyYAotc2JpbmRpcj1gZXZhbCBlY2hvICRzYmluZGlyYAotbGliZGlyPWBldmFsIGVjaG8gJGxp YmRpcmAKLQotaWYgdGVzdCAieCRzeXNjb25mZGlyIiA9ICd4JHtwcmVmaXh9L2V0YycgOyB0aGVu Ci0gICAgY2FzZSAiJGhvc3Rfb3MiIGluCi0gICAgICAgICAqZnJlZWJzZCopCi0gICAgICAgICBz eXNjb25mZGlyPSRwcmVmaXgvZXRjCi0gICAgICAgICA7OwotICAgICAgICAgKnNvbGFyaXMqKQot ICAgICAgICAgaWYgdGVzdCAiJHByZWZpeCIgPSAiL3VzciIgOyB0aGVuCi0gICAgICAgICAgICAg c3lzY29uZmRpcj0vZXRjCi0gICAgICAgICBlbHNlCi0gICAgICAgICAgICAgc3lzY29uZmRpcj0k cHJlZml4L2V0YwotICAgICAgICAgZmkKLSAgICAgICAgIDs7Ci0gICAgICAgICAqKQotICAgICAg ICAgc3lzY29uZmRpcj0vZXRjCi0gICAgICAgICA7OwotICAgIGVzYWMKLWZpCi0KLQotIyBDaGVj ayB3aGV0aGVyIC0td2l0aC1pbml0ZGRpciB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfaW5p dGRkaXIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICB3aXRodmFsPSR3aXRoX2luaXRkZGlyOyBpbml0 ZGRpcl9wYXRoPSR3aXRodmFsCi1lbHNlCi0gIGNhc2UgIiRob3N0X29zIiBpbgotICAgICAgICAg KmxpbnV4KikKLSAgICAgICAgIGlmIHRlc3QgLWQgJHN5c2NvbmZkaXIvcmMuZC9pbml0LmQgOyB0 aGVuCi0gICAgICAgICAgICAgaW5pdGRkaXJfcGF0aD0kc3lzY29uZmRpci9yYy5kL2luaXQuZAot ICAgICAgICAgZWxzZQotICAgICAgICAgICAgIGluaXRkZGlyX3BhdGg9JHN5c2NvbmZkaXIvaW5p dC5kCi0gICAgICAgICBmaQotICAgICAgICAgOzsKLSAgICAgICAgICopCi0gICAgICAgICBpbml0 ZGRpcl9wYXRoPSRzeXNjb25mZGlyL3JjLmQKLSAgICAgICAgIDs7Ci0gICAgIGVzYWMKLWZpCi0K LQotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLXN5c2NvbmZpZy1sZWFmLWRpciB3YXMgZ2l2ZW4u Ci1pZiB0ZXN0ICIke3dpdGhfc3lzY29uZmlnX2xlYWZfZGlyK3NldH0iID0gc2V0OyB0aGVuIDoK LSAgd2l0aHZhbD0kd2l0aF9zeXNjb25maWdfbGVhZl9kaXI7IGNvbmZpZ19sZWFmX2Rpcj0kd2l0 aHZhbAotZWxzZQotICBjb25maWdfbGVhZl9kaXI9c3lzY29uZmlnCi0gICAgaWYgdGVzdCAhIC1k IC9ldGMvc3lzY29uZmlnIDsgdGhlbiBjb25maWdfbGVhZl9kaXI9ZGVmYXVsdCA7IGZpCi1maQot Ci1DT05GSUdfTEVBRl9ESVI9JGNvbmZpZ19sZWFmX2RpcgotCi0KLQotIyBDaGVjayB3aGV0aGVy IC0td2l0aC1saWJleGVjLWxlYWYtZGlyIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF9saWJl eGVjX2xlYWZfZGlyK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgd2l0aHZhbD0kd2l0aF9saWJleGVj X2xlYWZfZGlyOyBsaWJleGVjX3N1YmRpcj0kd2l0aHZhbAotZWxzZQotICBsaWJleGVjX3N1YmRp cj0kUEFDS0FHRV9UQVJOQU1FCi1maQotCi0KLQotIyBDaGVjayB3aGV0aGVyIC0td2l0aC14ZW4t ZHVtcGRpciB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfeGVuX2R1bXBkaXIrc2V0fSIgPSBz ZXQ7IHRoZW4gOgotICB3aXRodmFsPSR3aXRoX3hlbl9kdW1wZGlyOyB4ZW5fZHVtcGRpcl9wYXRo PSR3aXRodmFsCi1lbHNlCi0gIHhlbl9kdW1wZGlyX3BhdGg9JGxvY2Fsc3RhdGVkaXIvbGliL3hl bi9kdW1wCi1maQotCi0KLQotIyBDaGVjayB3aGV0aGVyIC0td2l0aC1ydW5kaXIgd2FzIGdpdmVu LgotaWYgdGVzdCAiJHt3aXRoX3J1bmRpcitzZXR9IiA9IHNldDsgdGhlbiA6Ci0gIHdpdGh2YWw9 JHdpdGhfcnVuZGlyOyBydW5kaXJfcGF0aD0kd2l0aHZhbAotZWxzZQotICBydW5kaXJfcGF0aD0k bG9jYWxzdGF0ZWRpci9ydW4KLWZpCi0KLQotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLWRlYnVn ZGlyIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF9kZWJ1Z2RpcitzZXR9IiA9IHNldDsgdGhl biA6Ci0gIHdpdGh2YWw9JHdpdGhfZGVidWdkaXI7IGRlYnVnZGlyX3BhdGg9JHdpdGh2YWwKLWVs c2UKLSAgZGVidWdkaXJfcGF0aD0kcHJlZml4L2xpYi9kZWJ1ZwotZmkKLQotCi1pZiB0ZXN0ICIk bGliZXhlY2RpciIgPSAnJHtleGVjX3ByZWZpeH0vbGliZXhlYycgOyB0aGVuCi0gICAgY2FzZSAi JGhvc3Rfb3MiIGluCi0gICAgICAgICAqbmV0YnNkKikgOzsKLSAgICAgICAgICopCi0gICAgICAg ICBsaWJleGVjZGlyPScke2V4ZWNfcHJlZml4fS9saWInCi0gICAgICAgICA7OwotICAgIGVzYWMK LWZpCi1MSUJFWEVDPWBldmFsIGVjaG8gJGxpYmV4ZWNkaXIvJGxpYmV4ZWNfc3ViZGlyYAotCi0K LUxJQkVYRUNfQklOPSR7TElCRVhFQ30vYmluCi0KLUxJQkVYRUNfTElCPSR7TElCRVhFQ30vbGli Ci0KLUxJQkVYRUNfSU5DPSR7TElCRVhFQ30vaW5jbHVkZQotCi1YRU5GSVJNV0FSRURJUj0ke0xJ QkVYRUN9L2Jvb3QKLQotCi1YRU5fUlVOX0RJUj0kcnVuZGlyX3BhdGgveGVuCi0KLQotWEVOX0xP R19ESVI9JGxvY2Fsc3RhdGVkaXIvbG9nL3hlbgotCi0KLVhFTl9MSUJfU1RPUkVEPSRsb2NhbHN0 YXRlZGlyL2xpYi94ZW5zdG9yZWQKLQotCi1YRU5fUlVOX1NUT1JFRD0kcnVuZGlyX3BhdGgveGVu c3RvcmVkCi0KLQotWEVOX0xJQl9ESVI9JGxvY2Fsc3RhdGVkaXIvbGliL3hlbgotCi0KLVNIQVJF RElSPSRwcmVmaXgvc2hhcmUKLQotCi1DT05GSUdfRElSPSRzeXNjb25mZGlyCi0KLQotSU5JVERf RElSPSRpbml0ZGRpcl9wYXRoCi0KLQotWEVOX0NPTkZJR19ESVI9JENPTkZJR19ESVIveGVuCi0K LQotWEVOX1NDUklQVF9ESVI9JFhFTl9DT05GSUdfRElSL3NjcmlwdHMKLQotCi1jYXNlICIkaG9z dF9vcyIgaW4KLSpmcmVlYnNkKikgWEVOX0xPQ0tfRElSPSRsb2NhbHN0YXRlZGlyL2xpYiA7Owot Km5ldGJzZCopIFhFTl9MT0NLX0RJUj0kbG9jYWxzdGF0ZWRpci9saWIgOzsKLSopIFhFTl9MT0NL X0RJUj0kbG9jYWxzdGF0ZWRpci9sb2NrIDs7Ci1lc2FjCi0KLQotWEVOX1BBR0lOR19ESVI9JGxv Y2Fsc3RhdGVkaXIvbGliL3hlbi94ZW5wYWdpbmcKLQotCi1YRU5fRFVNUF9ESVI9JHhlbl9kdW1w ZGlyX3BhdGgKLQotCi1ERUJVR19ESVI9JGRlYnVnZGlyX3BhdGgKLQotCi0KLQotCi0gICAgIyBF eHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJmaWcyZGV2Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3Jh bSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSBmaWcyZGV2OyBhY193b3JkPSQyCi17ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIg PiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmICR7 YWNfY3ZfcGF0aF9GSUcyREVWKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hl ZCkgIiA+JjYKLWVsc2UKLSAgY2FzZSAkRklHMkRFViBpbgotICBbXFwvXSogfCA/OltcXC9dKikK LSAgYWNfY3ZfcGF0aF9GSUcyREVWPSIkRklHMkRFViIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUg dGhlIHRlc3Qgd2l0aCBhIHBhdGguCi0gIDs7Ci0gICopCi0gIGFzX3NhdmVfSUZTPSRJRlM7IElG Uz0kUEFUSF9TRVBBUkFUT1IKLWZvciBhc19kaXIgaW4gJFBBVEgKLWRvCi0gIElGUz0kYXNfc2F2 ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICBmb3IgYWNfZXhlY19l eHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYgYXNfZm5fZXhlY3V0 YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotICAgIGFjX2N2X3Bh dGhfRklHMkRFVj0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKLSAgICAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4 ZWNfZXh0IiA+JjUKLSAgICBicmVhayAyCi0gIGZpCi1kb25lCi0gIGRvbmUKLUlGUz0kYXNfc2F2 ZV9JRlMKLQotICA7OwotZXNhYwotZmkKLUZJRzJERVY9JGFjX2N2X3BhdGhfRklHMkRFVgotaWYg dGVzdCAtbiAiJEZJRzJERVYiOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogcmVzdWx0OiAkRklHMkRFViIgPiY1Ci0kYXNfZWNobyAiJEZJRzJERVYiID4m NjsgfQotZWxzZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl c3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLWZpCi0KLQotICAgIGlmICEgdGVz dCAteCAiJGFjX2N2X3BhdGhfRklHMkRFViI7IHRoZW4gOgotCi0gICAgICAgIHsgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogZmlnMmRldiBpcyBub3QgYXZh aWxhYmxlIHNvIHNvbWUgZG9jdW1lbnRhdGlvbiB3b24ndCBiZSBidWlsdCIgPiY1Ci0kYXNfZWNo byAiJGFzX21lOiBXQVJOSU5HOiBmaWcyZGV2IGlzIG5vdCBhdmFpbGFibGUgc28gc29tZSBkb2N1 bWVudGF0aW9uIHdvbid0IGJlIGJ1aWx0IiA+JjI7fQotCi1maQotCi0KLQotICAgICMgRXh0cmFj dCB0aGUgZmlyc3Qgd29yZCBvZiAicG9kMm1hbiIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFt ZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgcG9kMm1hbjsgYWNfd29yZD0kMgoteyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQot JGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2 X3BhdGhfUE9EMk1BTis6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIg PiY2Ci1lbHNlCi0gIGNhc2UgJFBPRDJNQU4gaW4KLSAgW1xcL10qIHwgPzpbXFwvXSopCi0gIGFj X2N2X3BhdGhfUE9EMk1BTj0iJFBPRDJNQU4iICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0 ZXN0IHdpdGggYSBwYXRoLgotICA7OwotICAqKQotICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBB VEhfU0VQQVJBVE9SCi1mb3IgYXNfZGlyIGluICRQQVRICi1kbwotICBJRlM9JGFzX3NhdmVfSUZT Ci0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgZm9yIGFjX2V4ZWNfZXh0IGlu ICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gIGlmIGFzX2ZuX2V4ZWN1dGFibGVf cCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSAgICBhY19jdl9wYXRoX1BP RDJNQU49IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCi0gICAgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4 dCIgPiY1Ci0gICAgYnJlYWsgMgotICBmaQotZG9uZQotICBkb25lCi1JRlM9JGFzX3NhdmVfSUZT Ci0KLSAgOzsKLWVzYWMKLWZpCi1QT0QyTUFOPSRhY19jdl9wYXRoX1BPRDJNQU4KLWlmIHRlc3Qg LW4gIiRQT0QyTUFOIjsgdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IHJlc3VsdDogJFBPRDJNQU4iID4mNQotJGFzX2VjaG8gIiRQT0QyTUFOIiA+JjY7IH0K LWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6 IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci1maQotCi0KLSAgICBpZiAhIHRlc3QgLXgg IiRhY19jdl9wYXRoX1BPRDJNQU4iOyB0aGVuIDoKLQotICAgICAgICB7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHBvZDJtYW4gaXMgbm90IGF2YWlsYWJs ZSBzbyBzb21lIGRvY3VtZW50YXRpb24gd29uJ3QgYmUgYnVpbHQiID4mNQotJGFzX2VjaG8gIiRh c19tZTogV0FSTklORzogcG9kMm1hbiBpcyBub3QgYXZhaWxhYmxlIHNvIHNvbWUgZG9jdW1lbnRh dGlvbiB3b24ndCBiZSBidWlsdCIgPiYyO30KLQotZmkKLQotCi0KLSAgICAjIEV4dHJhY3QgdGhl IGZpcnN0IHdvcmQgb2YgInBvZDJodG1sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdp dGggYXJncy4KLXNldCBkdW1teSBwb2QyaHRtbDsgYWNfd29yZD0kMgoteyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotJGFz X2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3Bh dGhfUE9EMkhUTUwrOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4m NgotZWxzZQotICBjYXNlICRQT0QySFRNTCBpbgotICBbXFwvXSogfCA/OltcXC9dKikKLSAgYWNf Y3ZfcGF0aF9QT0QySFRNTD0iJFBPRDJIVE1MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUg dGVzdCB3aXRoIGEgcGF0aC4KLSAgOzsKLSAgKikKLSAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQ QVRIX1NFUEFSQVRPUgotZm9yIGFzX2RpciBpbiAkUEFUSAotZG8KLSAgSUZTPSRhc19zYXZlX0lG UwotICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgIGZvciBhY19leGVjX2V4dCBp biAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICBpZiBhc19mbl9leGVjdXRhYmxl X3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0gICAgYWNfY3ZfcGF0aF9Q T0QySFRNTD0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKLSAgICAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNf ZXh0IiA+JjUKLSAgICBicmVhayAyCi0gIGZpCi1kb25lCi0gIGRvbmUKLUlGUz0kYXNfc2F2ZV9J RlMKLQotICA7OwotZXNhYwotZmkKLVBPRDJIVE1MPSRhY19jdl9wYXRoX1BPRDJIVE1MCi1pZiB0 ZXN0IC1uICIkUE9EMkhUTUwiOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogcmVzdWx0OiAkUE9EMkhUTUwiID4mNQotJGFzX2VjaG8gIiRQT0QySFRNTCIg PiY2OyB9Ci1lbHNlCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQotZmkKLQotCi0gICAgaWYgISB0 ZXN0IC14ICIkYWNfY3ZfcGF0aF9QT0QySFRNTCI7IHRoZW4gOgotCi0gICAgICAgIHsgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogcG9kMmh0bWwgaXMgbm90 IGF2YWlsYWJsZSBzbyBzb21lIGRvY3VtZW50YXRpb24gd29uJ3QgYmUgYnVpbHQiID4mNQotJGFz X2VjaG8gIiRhc19tZTogV0FSTklORzogcG9kMmh0bWwgaXMgbm90IGF2YWlsYWJsZSBzbyBzb21l IGRvY3VtZW50YXRpb24gd29uJ3QgYmUgYnVpbHQiID4mMjt9Ci0KLWZpCi0KLQotCi0gICAgIyBF eHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJwb2QydGV4dCIsIHNvIGl0IGNhbiBiZSBhIHByb2dy YW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgcG9kMnRleHQ7IGFjX3dvcmQ9JDIKLXsgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3Jk IiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYg JHthY19jdl9wYXRoX1BPRDJURVhUKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNh Y2hlZCkgIiA+JjYKLWVsc2UKLSAgY2FzZSAkUE9EMlRFWFQgaW4KLSAgW1xcL10qIHwgPzpbXFwv XSopCi0gIGFjX2N2X3BhdGhfUE9EMlRFWFQ9IiRQT0QyVEVYVCIgIyBMZXQgdGhlIHVzZXIgb3Zl cnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCi0gIDs7Ci0gICopCi0gIGFzX3NhdmVfSUZTPSRJ RlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLWZvciBhc19kaXIgaW4gJFBBVEgKLWRvCi0gIElGUz0k YXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICBmb3IgYWNf ZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYgYXNfZm5f ZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotICAgIGFj X2N2X3BhdGhfUE9EMlRFWFQ9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCi0gICAgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29y ZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgYnJlYWsgMgotICBmaQotZG9uZQotICBkb25lCi1JRlM9 JGFzX3NhdmVfSUZTCi0KLSAgOzsKLWVzYWMKLWZpCi1QT0QyVEVYVD0kYWNfY3ZfcGF0aF9QT0Qy VEVYVAotaWYgdGVzdCAtbiAiJFBPRDJURVhUIjsgdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFBPRDJURVhUIiA+JjUKLSRhc19lY2hvICIk UE9EMlRFWFQiID4mNjsgfQotZWxzZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLWZpCi0KLQot ICAgIGlmICEgdGVzdCAteCAiJGFjX2N2X3BhdGhfUE9EMlRFWFQiOyB0aGVuIDoKLQotICAgICAg ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHBvZDJ0 ZXh0IGlzIG5vdCBhdmFpbGFibGUgc28gc29tZSBkb2N1bWVudGF0aW9uIHdvbid0IGJlIGJ1aWx0 IiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHBvZDJ0ZXh0IGlzIG5vdCBhdmFpbGFi bGUgc28gc29tZSBkb2N1bWVudGF0aW9uIHdvbid0IGJlIGJ1aWx0IiA+JjI7fQotCi1maQotCi0K LQotICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAicGFuZG9jIiwgc28gaXQgY2FuIGJl IGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSBwYW5kb2M7IGFjX3dvcmQ9JDIK LXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRh Y193b3JkIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsg fQotaWYgJHthY19jdl9wYXRoX1BBTkRPQys6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24g IihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGNhc2UgJFBBTkRPQyBpbgotICBbXFwvXSogfCA/Oltc XC9dKikKLSAgYWNfY3ZfcGF0aF9QQU5ET0M9IiRQQU5ET0MiICMgTGV0IHRoZSB1c2VyIG92ZXJy aWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgotICA7OwotICAqKQotICBhc19zYXZlX0lGUz0kSUZT OyBJRlM9JFBBVEhfU0VQQVJBVE9SCi1mb3IgYXNfZGlyIGluICRQQVRICi1kbwotICBJRlM9JGFz X3NhdmVfSUZTCi0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgZm9yIGFjX2V4 ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gIGlmIGFzX2ZuX2V4 ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSAgICBhY19j dl9wYXRoX1BBTkRPQz0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKLSAgICAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFj X2V4ZWNfZXh0IiA+JjUKLSAgICBicmVhayAyCi0gIGZpCi1kb25lCi0gIGRvbmUKLUlGUz0kYXNf c2F2ZV9JRlMKLQotICA7OwotZXNhYwotZmkKLVBBTkRPQz0kYWNfY3ZfcGF0aF9QQU5ET0MKLWlm IHRlc3QgLW4gIiRQQU5ET0MiOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogcmVzdWx0OiAkUEFORE9DIiA+JjUKLSRhc19lY2hvICIkUEFORE9DIiA+JjY7 IH0KLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1 bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci1maQotCi0KLSAgICBpZiAhIHRlc3Qg LXggIiRhY19jdl9wYXRoX1BBTkRPQyI7IHRoZW4gOgotCi0gICAgICAgIHsgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogcGFuZG9jIGlzIG5vdCBhdmFpbGFi bGUgc28gc29tZSBkb2N1bWVudGF0aW9uIHdvbid0IGJlIGJ1aWx0IiA+JjUKLSRhc19lY2hvICIk YXNfbWU6IFdBUk5JTkc6IHBhbmRvYyBpcyBub3QgYXZhaWxhYmxlIHNvIHNvbWUgZG9jdW1lbnRh dGlvbiB3b24ndCBiZSBidWlsdCIgPiYyO30KLQotZmkKLQotCi0KLSMgRXh0cmFjdCB0aGUgZmly c3Qgd29yZCBvZiAicGVybCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3Mu Ci1zZXQgZHVtbXkgcGVybDsgYWNfd29yZD0kMgoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotJGFzX2VjaG9fbiAiY2hl Y2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3BhdGhfUEVSTCs6fSBm YWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGNhc2Ug JFBFUkwgaW4KLSAgW1xcL10qIHwgPzpbXFwvXSopCi0gIGFjX2N2X3BhdGhfUEVSTD0iJFBFUkwi ICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgotICA7OwotICAq KQotICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi1mb3IgYXNfZGlyIGlu ICRQQVRICi1kbwotICBJRlM9JGFzX3NhdmVfSUZTCi0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFz X2Rpcj0uCi0gICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lv bnM7IGRvCi0gIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVj X2V4dCI7IHRoZW4KLSAgICBhY19jdl9wYXRoX1BFUkw9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhl Y19leHQiCi0gICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQg JGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgYnJlYWsgMgotICBmaQotZG9u ZQotICBkb25lCi1JRlM9JGFzX3NhdmVfSUZTCi0KLSAgdGVzdCAteiAiJGFjX2N2X3BhdGhfUEVS TCIgJiYgYWNfY3ZfcGF0aF9QRVJMPSJubyIKLSAgOzsKLWVzYWMKLWZpCi1QRVJMPSRhY19jdl9w YXRoX1BFUkwKLWlmIHRlc3QgLW4gIiRQRVJMIjsgdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFBFUkwiID4mNQotJGFzX2VjaG8gIiRQRVJM IiA+JjY7IH0KLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci1maQotCi0KLWlmIHRlc3Qg eCIke1BFUkx9IiA9IHgibm8iCi10aGVuCi0gICAgYXNfZm5fZXJyb3IgJD8gIlVuYWJsZSB0byBm aW5kIHBlcmwsIHBsZWFzZSBpbnN0YWxsIHBlcmwiICIkTElORU5PIiA1Ci1maQotCi1jYXQgPmNv bmZjYWNoZSA8PFxfQUNFT0YKLSMgVGhpcyBmaWxlIGlzIGEgc2hlbGwgc2NyaXB0IHRoYXQgY2Fj aGVzIHRoZSByZXN1bHRzIG9mIGNvbmZpZ3VyZQotIyB0ZXN0cyBydW4gb24gdGhpcyBzeXN0ZW0g c28gdGhleSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gY29uZmlndXJlCi0jIHNjcmlwdHMgYW5kIGNv bmZpZ3VyZSBydW5zLCBzZWUgY29uZmlndXJlJ3Mgb3B0aW9uIC0tY29uZmlnLWNhY2hlLgotIyBJ dCBpcyBub3QgdXNlZnVsIG9uIG90aGVyIHN5c3RlbXMuICBJZiBpdCBjb250YWlucyByZXN1bHRz IHlvdSBkb24ndAotIyB3YW50IHRvIGtlZXAsIHlvdSBtYXkgcmVtb3ZlIG9yIGVkaXQgaXQuCi0j Ci0jIGNvbmZpZy5zdGF0dXMgb25seSBwYXlzIGF0dGVudGlvbiB0byB0aGUgY2FjaGUgZmlsZSBp ZiB5b3UgZ2l2ZSBpdAotIyB0aGUgLS1yZWNoZWNrIG9wdGlvbiB0byByZXJ1biBjb25maWd1cmUu Ci0jCi0jIGBhY19jdl9lbnZfZm9vJyB2YXJpYWJsZXMgKHNldCBvciB1bnNldCkgd2lsbCBiZSBv dmVycmlkZGVuIHdoZW4KLSMgbG9hZGluZyB0aGlzIGZpbGUsIG90aGVyICp1bnNldCogYGFjX2N2 X2Zvbycgd2lsbCBiZSBhc3NpZ25lZCB0aGUKLSMgZm9sbG93aW5nIHZhbHVlcy4KLQotX0FDRU9G Ci0KLSMgVGhlIGZvbGxvd2luZyB3YXkgb2Ygd3JpdGluZyB0aGUgY2FjaGUgbWlzaGFuZGxlcyBu ZXdsaW5lcyBpbiB2YWx1ZXMsCi0jIGJ1dCB3ZSBrbm93IG9mIG5vIHdvcmthcm91bmQgdGhhdCBp cyBzaW1wbGUsIHBvcnRhYmxlLCBhbmQgZWZmaWNpZW50LgotIyBTbywgd2Uga2lsbCB2YXJpYWJs ZXMgY29udGFpbmluZyBuZXdsaW5lcy4KLSMgVWx0cml4IHNoIHNldCB3cml0ZXMgdG8gc3RkZXJy IGFuZCBjYW4ndCBiZSByZWRpcmVjdGVkIGRpcmVjdGx5LAotIyBhbmQgc2V0cyB0aGUgaGlnaCBi aXQgaW4gdGhlIGNhY2hlIGZpbGUgdW5sZXNzIHdlIGFzc2lnbiB0byB0aGUgdmFycy4KLSgKLSAg Zm9yIGFjX3ZhciBpbiBgKHNldCkgMj4mMSB8IHNlZCAtbiAncy9eXChbYS16QS1aX11bYS16QS1a MC05X10qXCk9LiovXDEvcCdgOyBkbwotICAgIGV2YWwgYWNfdmFsPVwkJGFjX3ZhcgotICAgIGNh c2UgJGFjX3ZhbCBpbiAjKAotICAgICoke2FzX25sfSopCi0gICAgICBjYXNlICRhY192YXIgaW4g IygKLSAgICAgICpfY3ZfKikgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiBXQVJOSU5HOiBjYWNoZSB2YXJpYWJsZSAkYWNfdmFyIGNvbnRhaW5zIGEgbmV3bGluZSIgPiY1 Ci0kYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBjYWNoZSB2YXJpYWJsZSAkYWNfdmFyIGNvbnRh aW5zIGEgbmV3bGluZSIgPiYyO30gOzsKLSAgICAgIGVzYWMKLSAgICAgIGNhc2UgJGFjX3ZhciBp biAjKAotICAgICAgXyB8IElGUyB8IGFzX25sKSA7OyAjKAotICAgICAgQkFTSF9BUkdWIHwgQkFT SF9TT1VSQ0UpIGV2YWwgJGFjX3Zhcj0gOzsgIygKLSAgICAgICopIHsgZXZhbCAkYWNfdmFyPTsg dW5zZXQgJGFjX3Zhcjt9IDs7Ci0gICAgICBlc2FjIDs7Ci0gICAgZXNhYwotICBkb25lCi0KLSAg KHNldCkgMj4mMSB8Ci0gICAgY2FzZSAkYXNfbmxgKGFjX3NwYWNlPScgJzsgc2V0KSAyPiYxYCBp biAjKAotICAgICoke2FzX25sfWFjX3NwYWNlPVwgKikKLSAgICAgICMgYHNldCcgZG9lcyBub3Qg cXVvdGUgY29ycmVjdGx5LCBzbyBhZGQgcXVvdGVzOiBkb3VibGUtcXVvdGUKLSAgICAgICMgc3Vi c3RpdHV0aW9uIHR1cm5zIFxcXFwgaW50byBcXCwgYW5kIHNlZCB0dXJucyBcXCBpbnRvIFwuCi0g ICAgICBzZWQgLW4gXAotCSJzLycvJ1xcXFwnJy9nOwotCSAgcy9eXFwoW18kYXNfY3JfYWxudW1d Kl9jdl9bXyRhc19jcl9hbG51bV0qXFwpPVxcKC4qXFwpL1xcMT0nXFwyJy9wIgotICAgICAgOzsg IygKLSAgICAqKQotICAgICAgIyBgc2V0JyBxdW90ZXMgY29ycmVjdGx5IGFzIHJlcXVpcmVkIGJ5 IFBPU0lYLCBzbyBkbyBub3QgYWRkIHF1b3Rlcy4KLSAgICAgIHNlZCAtbiAiL15bXyRhc19jcl9h bG51bV0qX2N2X1tfJGFzX2NyX2FsbnVtXSo9L3AiCi0gICAgICA7OwotICAgIGVzYWMgfAotICAg IHNvcnQKLSkgfAotICBzZWQgJwotICAgICAvXmFjX2N2X2Vudl8vYiBlbmQKLSAgICAgdCBjbGVh cgotICAgICA6Y2xlYXIKLSAgICAgcy9eXChbXj1dKlwpPVwoLipbe31dLipcKSQvdGVzdCAiJHtc MStzZXR9IiA9IHNldCB8fCAmLwotICAgICB0IGVuZAotICAgICBzL15cKFtePV0qXCk9XCguKlwp JC9cMT0ke1wxPVwyfS8KLSAgICAgOmVuZCcgPj5jb25mY2FjaGUKLWlmIGRpZmYgIiRjYWNoZV9m aWxlIiBjb25mY2FjaGUgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDo7IGVsc2UKLSAgaWYgdGVzdCAt dyAiJGNhY2hlX2ZpbGUiOyB0aGVuCi0gICAgaWYgdGVzdCAieCRjYWNoZV9maWxlIiAhPSAieC9k ZXYvbnVsbCI7IHRoZW4KLSAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogdXBkYXRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNQotJGFzX2VjaG8gIiRhc19tZTog dXBkYXRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNjt9Ci0gICAgICBpZiB0ZXN0ICEgLWYgIiRj YWNoZV9maWxlIiB8fCB0ZXN0IC1oICIkY2FjaGVfZmlsZSI7IHRoZW4KLQljYXQgY29uZmNhY2hl ID4iJGNhY2hlX2ZpbGUiCi0gICAgICBlbHNlCi0gICAgICAgIGNhc2UgJGNhY2hlX2ZpbGUgaW4g IygKLSAgICAgICAgKi8qIHwgPzoqKQotCSAgbXYgLWYgY29uZmNhY2hlICIkY2FjaGVfZmlsZSIk JCAmJgotCSAgbXYgLWYgIiRjYWNoZV9maWxlIiQkICIkY2FjaGVfZmlsZSIgOzsgIygKLSAgICAg ICAgKikKLQkgIG12IC1mIGNvbmZjYWNoZSAiJGNhY2hlX2ZpbGUiIDs7Ci0JZXNhYwotICAgICAg ZmkKLSAgICBmaQotICBlbHNlCi0gICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBub3QgdXBkYXRpbmcgdW53cml0YWJsZSBjYWNoZSAkY2FjaGVfZmlsZSIgPiY1Ci0k YXNfZWNobyAiJGFzX21lOiBub3QgdXBkYXRpbmcgdW53cml0YWJsZSBjYWNoZSAkY2FjaGVfZmls ZSIgPiY2O30KLSAgZmkKLWZpCi1ybSAtZiBjb25mY2FjaGUKLQotdGVzdCAieCRwcmVmaXgiID0g eE5PTkUgJiYgcHJlZml4PSRhY19kZWZhdWx0X3ByZWZpeAotIyBMZXQgbWFrZSBleHBhbmQgZXhl Y19wcmVmaXguCi10ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9IHhOT05FICYmIGV4ZWNfcHJlZml4PSck e3ByZWZpeH0nCi0KLSMgVHJhbnNmb3JtIGNvbmZkZWZzLmggaW50byBERUZTLgotIyBQcm90ZWN0 IGFnYWluc3Qgc2hlbGwgZXhwYW5zaW9uIHdoaWxlIGV4ZWN1dGluZyBNYWtlZmlsZSBydWxlcy4K LSMgUHJvdGVjdCBhZ2FpbnN0IE1ha2VmaWxlIG1hY3JvIGV4cGFuc2lvbi4KLSMKLSMgSWYgdGhl IGZpcnN0IHNlZCBzdWJzdGl0dXRpb24gaXMgZXhlY3V0ZWQgKHdoaWNoIGxvb2tzIGZvciBtYWNy b3MgdGhhdAotIyB0YWtlIGFyZ3VtZW50cyksIHRoZW4gYnJhbmNoIHRvIHRoZSBxdW90ZSBzZWN0 aW9uLiAgT3RoZXJ3aXNlLAotIyBsb29rIGZvciBhIG1hY3JvIHRoYXQgZG9lc24ndCB0YWtlIGFy Z3VtZW50cy4KLWFjX3NjcmlwdD0nCi06bWxpbmUKLS9cXCQvewotIE4KLSBzLFxcXG4sLAotIGIg bWxpbmUKLX0KLXQgY2xlYXIKLTpjbGVhcgotcy9eWwkgXSojWwkgXSpkZWZpbmVbCSBdWwkgXSpc KFteCSAoXVteCSAoXSooW14pXSopXClbCSBdKlwoLipcKS8tRFwxPVwyL2cKLXQgcXVvdGUKLXMv XlsJIF0qI1sJIF0qZGVmaW5lWwkgXVsJIF0qXChbXgkgXVteCSBdKlwpWwkgXSpcKC4qXCkvLURc MT1cMi9nCi10IHF1b3RlCi1iIGFueQotOnF1b3RlCi1zL1sJIGB+IyReJiooKXt9XFx8OydcJyci PD4/XS9cXCYvZwotcy9cWy9cXCYvZwotcy9cXS9cXCYvZwotcy9cJC8kJC9nCi1ICi06YW55Ci0k ewotCWcKLQlzL15cbi8vCi0Jcy9cbi8gL2cKLQlwCi19Ci0nCi1ERUZTPWBzZWQgLW4gIiRhY19z Y3JpcHQiIGNvbmZkZWZzLmhgCi0KLQotYWNfbGlib2Jqcz0KLWFjX2x0bGlib2Jqcz0KLVU9Ci1m b3IgYWNfaSBpbiA6ICRMSUJPQkpTOyBkbyB0ZXN0ICJ4JGFjX2kiID0geDogJiYgY29udGludWUK LSAgIyAxLiBSZW1vdmUgdGhlIGV4dGVuc2lvbiwgYW5kICRVIGlmIGFscmVhZHkgaW5zdGFsbGVk LgotICBhY19zY3JpcHQ9J3MvXCRVXC4vLi87cy9cLm8kLy87cy9cLm9iaiQvLycKLSAgYWNfaT1g JGFzX2VjaG8gIiRhY19pIiB8IHNlZCAiJGFjX3NjcmlwdCJgCi0gICMgMi4gUHJlcGVuZCBMSUJP QkpESVIuICBXaGVuIHVzZWQgd2l0aCBhdXRvbWFrZT49MS4xMCBMSUJPQkpESVIKLSAgIyAgICB3 aWxsIGJlIHNldCB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIExJQk9CSlMgb2JqZWN0cyBhcmUgYnVp bHQuCi0gIGFzX2ZuX2FwcGVuZCBhY19saWJvYmpzICIgXCR7TElCT0JKRElSfSRhY19pXCRVLiRh Y19vYmpleHQiCi0gIGFzX2ZuX2FwcGVuZCBhY19sdGxpYm9ianMgIiBcJHtMSUJPQkpESVJ9JGFj X2kiJyRVLmxvJwotZG9uZQotTElCT0JKUz0kYWNfbGlib2JqcwotCi1MVExJQk9CSlM9JGFjX2x0 bGlib2JqcwotCi0KLQotOiAiJHtDT05GSUdfU1RBVFVTPS4vY29uZmlnLnN0YXR1c30iCi1hY193 cml0ZV9mYWlsPTAKLWFjX2NsZWFuX2ZpbGVzX3NhdmU9JGFjX2NsZWFuX2ZpbGVzCi1hY19jbGVh bl9maWxlcz0iJGFjX2NsZWFuX2ZpbGVzICRDT05GSUdfU1RBVFVTIgoteyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjcmVhdGluZyAkQ09ORklHX1NUQVRVUyIgPiY1Ci0k YXNfZWNobyAiJGFzX21lOiBjcmVhdGluZyAkQ09ORklHX1NUQVRVUyIgPiY2O30KLWFzX3dyaXRl X2ZhaWw9MAotY2F0ID4kQ09ORklHX1NUQVRVUyA8PF9BU0VPRiB8fCBhc193cml0ZV9mYWlsPTEK LSMhICRTSEVMTAotIyBHZW5lcmF0ZWQgYnkgJGFzX21lLgotIyBSdW4gdGhpcyBmaWxlIHRvIHJl Y3JlYXRlIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uCi0jIENvbXBpbGVyIG91dHB1dCBwcm9k dWNlZCBieSBjb25maWd1cmUsIHVzZWZ1bCBmb3IgZGVidWdnaW5nCi0jIGNvbmZpZ3VyZSwgaXMg aW4gY29uZmlnLmxvZyBpZiBpdCBleGlzdHMuCi0KLWRlYnVnPWZhbHNlCi1hY19jc19yZWNoZWNr PWZhbHNlCi1hY19jc19zaWxlbnQ9ZmFsc2UKLQotU0hFTEw9XCR7Q09ORklHX1NIRUxMLSRTSEVM TH0KLWV4cG9ydCBTSEVMTAotX0FTRU9GCi1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQVNFT0Yg fHwgYXNfd3JpdGVfZmFpbD0xCi0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIyMgTTRzaCBJ bml0aWFsaXphdGlvbi4gIyMKLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0KLSMgQmUgbW9y ZSBCb3VybmUgY29tcGF0aWJsZQotRFVBTENBU0U9MTsgZXhwb3J0IERVQUxDQVNFICMgZm9yIE1L UyBzaAotaWYgdGVzdCAtbiAiJHtaU0hfVkVSU0lPTitzZXR9IiAmJiAoZW11bGF0ZSBzaCkgPi9k ZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSAgZW11bGF0ZSBzaAotICBOVUxMQ01EPToKLSAgIyBQcmUt NC4yIHZlcnNpb25zIG9mIFpzaCBkbyB3b3JkIHNwbGl0dGluZyBvbiAkezErIiRAIn0sIHdoaWNo Ci0gICMgaXMgY29udHJhcnkgdG8gb3VyIHVzYWdlLiAgRGlzYWJsZSB0aGlzIGZlYXR1cmUuCi0g IGFsaWFzIC1nICckezErIiRAIn0nPSciJEAiJwotICBzZXRvcHQgTk9fR0xPQl9TVUJTVAotZWxz ZQotICBjYXNlIGAoc2V0IC1vKSAyPi9kZXYvbnVsbGAgaW4gIygKLSAgKnBvc2l4KikgOgotICAg IHNldCAtbyBwb3NpeCA7OyAjKAotICAqKSA6Ci0gICAgIDs7Ci1lc2FjCi1maQotCi0KLWFzX25s PScKLScKLWV4cG9ydCBhc19ubAotIyBQcmludGluZyBhIGxvbmcgc3RyaW5nIGNyYXNoZXMgU29s YXJpcyA3IC91c3IvYmluL3ByaW50Zi4KLWFzX2VjaG89J1xcXFxcXFxcXFxcXFxcXFxcXFxcXFxc XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFwnCi1hc19lY2hvPSRhc19lY2hvJGFzX2VjaG8kYXNfZWNo byRhc19lY2hvJGFzX2VjaG8KLWFzX2VjaG89JGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2Vj aG8kYXNfZWNobyRhc19lY2hvCi0jIFByZWZlciBhIGtzaCBzaGVsbCBidWlsdGluIG92ZXIgYW4g ZXh0ZXJuYWwgcHJpbnRmIHByb2dyYW0gb24gU29sYXJpcywKLSMgYnV0IHdpdGhvdXQgd2FzdGlu ZyBmb3JrcyBmb3IgYmFzaCBvciB6c2guCi1pZiB0ZXN0IC16ICIkQkFTSF9WRVJTSU9OJFpTSF9W RVJTSU9OIiBcCi0gICAgJiYgKHRlc3QgIlhgcHJpbnQgLXIgLS0gJGFzX2VjaG9gIiA9ICJYJGFz X2VjaG8iKSAyPi9kZXYvbnVsbDsgdGhlbgotICBhc19lY2hvPSdwcmludCAtciAtLScKLSAgYXNf ZWNob19uPSdwcmludCAtcm4gLS0nCi1lbGlmICh0ZXN0ICJYYHByaW50ZiAlcyAkYXNfZWNob2Ai ID0gIlgkYXNfZWNobyIpIDI+L2Rldi9udWxsOyB0aGVuCi0gIGFzX2VjaG89J3ByaW50ZiAlc1xu JwotICBhc19lY2hvX249J3ByaW50ZiAlcycKLWVsc2UKLSAgaWYgdGVzdCAiWGAoL3Vzci91Y2Iv ZWNobyAtbiAtbiAkYXNfZWNobykgMj4vZGV2L251bGxgIiA9ICJYLW4gJGFzX2VjaG8iOyB0aGVu Ci0gICAgYXNfZWNob19ib2R5PSdldmFsIC91c3IvdWNiL2VjaG8gLW4gIiQxJGFzX25sIicKLSAg ICBhc19lY2hvX249Jy91c3IvdWNiL2VjaG8gLW4nCi0gIGVsc2UKLSAgICBhc19lY2hvX2JvZHk9 J2V2YWwgZXhwciAiWCQxIiA6ICJYXFwoLipcXCkiJwotICAgIGFzX2VjaG9fbl9ib2R5PSdldmFs Ci0gICAgICBhcmc9JDE7Ci0gICAgICBjYXNlICRhcmcgaW4gIygKLSAgICAgICoiJGFzX25sIiop Ci0JZXhwciAiWCRhcmciIDogIlhcXCguKlxcKSRhc19ubCI7Ci0JYXJnPWBleHByICJYJGFyZyIg OiAiLiokYXNfbmxcXCguKlxcKSJgOzsKLSAgICAgIGVzYWM7Ci0gICAgICBleHByICJYJGFyZyIg OiAiWFxcKC4qXFwpIiB8IHRyIC1kICIkYXNfbmwiCi0gICAgJwotICAgIGV4cG9ydCBhc19lY2hv X25fYm9keQotICAgIGFzX2VjaG9fbj0nc2ggLWMgJGFzX2VjaG9fbl9ib2R5IGFzX2VjaG8nCi0g IGZpCi0gIGV4cG9ydCBhc19lY2hvX2JvZHkKLSAgYXNfZWNobz0nc2ggLWMgJGFzX2VjaG9fYm9k eSBhc19lY2hvJwotZmkKLQotIyBUaGUgdXNlciBpcyBhbHdheXMgcmlnaHQuCi1pZiB0ZXN0ICIk e1BBVEhfU0VQQVJBVE9SK3NldH0iICE9IHNldDsgdGhlbgotICBQQVRIX1NFUEFSQVRPUj06Ci0g IChQQVRIPScvYmluOy9iaW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYx ICYmIHsKLSAgICAoUEFUSD0nL2JpbjovYmluJzsgRlBBVEg9JFBBVEg7IHNoIC1jIDopID4vZGV2 L251bGwgMj4mMSB8fAotICAgICAgUEFUSF9TRVBBUkFUT1I9JzsnCi0gIH0KLWZpCi0KLQotIyBJ RlMKLSMgV2UgbmVlZCBzcGFjZSwgdGFiIGFuZCBuZXcgbGluZSwgaW4gcHJlY2lzZWx5IHRoYXQg b3JkZXIuICBRdW90aW5nIGlzCi0jIHRoZXJlIHRvIHByZXZlbnQgZWRpdG9ycyBmcm9tIGNvbXBs YWluaW5nIGFib3V0IHNwYWNlLXRhYi4KLSMgKElmIF9BU19QQVRIX1dBTEsgd2VyZSBjYWxsZWQg d2l0aCBJRlMgdW5zZXQsIGl0IHdvdWxkIGRpc2FibGUgd29yZAotIyBzcGxpdHRpbmcgYnkgc2V0 dGluZyBJRlMgdG8gZW1wdHkgdmFsdWUuKQotSUZTPSIgIiIJJGFzX25sIgotCi0jIEZpbmQgd2hv IHdlIGFyZS4gIExvb2sgaW4gdGhlIHBhdGggaWYgd2UgY29udGFpbiBubyBkaXJlY3Rvcnkgc2Vw YXJhdG9yLgotYXNfbXlzZWxmPQotY2FzZSAkMCBpbiAjKCgKLSAgKltcXC9dKiApIGFzX215c2Vs Zj0kMCA7OwotICAqKSBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi1mb3Ig YXNfZGlyIGluICRQQVRICi1kbwotICBJRlM9JGFzX3NhdmVfSUZTCi0gIHRlc3QgLXogIiRhc19k aXIiICYmIGFzX2Rpcj0uCi0gICAgdGVzdCAtciAiJGFzX2Rpci8kMCIgJiYgYXNfbXlzZWxmPSRh c19kaXIvJDAgJiYgYnJlYWsKLSAgZG9uZQotSUZTPSRhc19zYXZlX0lGUwotCi0gICAgIDs7Ci1l c2FjCi0jIFdlIGRpZCBub3QgZmluZCBvdXJzZWx2ZXMsIG1vc3QgcHJvYmFibHkgd2Ugd2VyZSBy dW4gYXMgYHNoIENPTU1BTkQnCi0jIGluIHdoaWNoIGNhc2Ugd2UgYXJlIG5vdCB0byBiZSBmb3Vu ZCBpbiB0aGUgcGF0aC4KLWlmIHRlc3QgIngkYXNfbXlzZWxmIiA9IHg7IHRoZW4KLSAgYXNfbXlz ZWxmPSQwCi1maQotaWYgdGVzdCAhIC1mICIkYXNfbXlzZWxmIjsgdGhlbgotICAkYXNfZWNobyAi JGFzX215c2VsZjogZXJyb3I6IGNhbm5vdCBmaW5kIG15c2VsZjsgcmVydW4gd2l0aCBhbiBhYnNv bHV0ZSBmaWxlIG5hbWUiID4mMgotICBleGl0IDEKLWZpCi0KLSMgVW5zZXQgdmFyaWFibGVzIHRo YXQgd2UgZG8gbm90IG5lZWQgYW5kIHdoaWNoIGNhdXNlIGJ1Z3MgKGUuZy4gaW4KLSMgcHJlLTMu MCBVV0lOIGtzaCkuICBCdXQgZG8gbm90IGNhdXNlIGJ1Z3MgaW4gYmFzaCAyLjAxOyB0aGUgInx8 IGV4aXQgMSIKLSMgc3VwcHJlc3NlcyBhbnkgIlNlZ21lbnRhdGlvbiBmYXVsdCIgbWVzc2FnZSB0 aGVyZS4gICcoKCcgY291bGQKLSMgdHJpZ2dlciBhIGJ1ZyBpbiBwZGtzaCA1LjIuMTQuCi1mb3Ig YXNfdmFyIGluIEJBU0hfRU5WIEVOViBNQUlMIE1BSUxQQVRICi1kbyBldmFsIHRlc3QgeFwkeyRh c192YXIrc2V0fSA9IHhzZXQgXAotICAmJiAoICh1bnNldCAkYXNfdmFyKSB8fCBleGl0IDEpID4v ZGV2L251bGwgMj4mMSAmJiB1bnNldCAkYXNfdmFyIHx8IDoKLWRvbmUKLVBTMT0nJCAnCi1QUzI9 Jz4gJwotUFM0PScrICcKLQotIyBOTFMgbnVpc2FuY2VzLgotTENfQUxMPUMKLWV4cG9ydCBMQ19B TEwKLUxBTkdVQUdFPUMKLWV4cG9ydCBMQU5HVUFHRQotCi0jIENEUEFUSC4KLSh1bnNldCBDRFBB VEgpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCBDRFBBVEgKLQotCi0jIGFzX2ZuX2Vycm9yIFNU QVRVUyBFUlJPUiBbTElORU5PIExPR19GRF0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQotIyBPdXRwdXQgImBiYXNlbmFtZSAkMGA6IGVycm9yOiBFUlJPUiIgdG8g c3RkZXJyLiBJZiBMSU5FTk8gYW5kIExPR19GRCBhcmUKLSMgcHJvdmlkZWQsIGFsc28gb3V0cHV0 IHRoZSBlcnJvciB0byBMT0dfRkQsIHJlZmVyZW5jaW5nIExJTkVOTy4gVGhlbiBleGl0IHRoZQot IyBzY3JpcHQgd2l0aCBTVEFUVVMsIHVzaW5nIDEgaWYgdGhhdCB3YXMgMC4KLWFzX2ZuX2Vycm9y ICgpCi17Ci0gIGFzX3N0YXR1cz0kMTsgdGVzdCAkYXNfc3RhdHVzIC1lcSAwICYmIGFzX3N0YXR1 cz0xCi0gIGlmIHRlc3QgIiQ0IjsgdGhlbgotICAgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDMi fSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKLSAgICAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogJDIiID4mJDQKLSAg ZmkKLSAgJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6ICQyIiA+JjIKLSAgYXNfZm5fZXhpdCAkYXNf c3RhdHVzCi19ICMgYXNfZm5fZXJyb3IKLQotCi0jIGFzX2ZuX3NldF9zdGF0dXMgU1RBVFVTCi0j IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIFNldCAkPyB0byBTVEFUVVMsIHdpdGhvdXQgZm9y a2luZy4KLWFzX2ZuX3NldF9zdGF0dXMgKCkKLXsKLSAgcmV0dXJuICQxCi19ICMgYXNfZm5fc2V0 X3N0YXR1cwotCi0jIGFzX2ZuX2V4aXQgU1RBVFVTCi0jIC0tLS0tLS0tLS0tLS0tLS0tCi0jIEV4 aXQgdGhlIHNoZWxsIHdpdGggU1RBVFVTLCBldmVuIGluIGEgInRyYXAgMCIgb3IgInNldCAtZSIg Y29udGV4dC4KLWFzX2ZuX2V4aXQgKCkKLXsKLSAgc2V0ICtlCi0gIGFzX2ZuX3NldF9zdGF0dXMg JDEKLSAgZXhpdCAkMQotfSAjIGFzX2ZuX2V4aXQKLQotIyBhc19mbl91bnNldCBWQVIKLSMgLS0t LS0tLS0tLS0tLS0tCi0jIFBvcnRhYmx5IHVuc2V0IFZBUi4KLWFzX2ZuX3Vuc2V0ICgpCi17Ci0g IHsgZXZhbCAkMT07IHVuc2V0ICQxO30KLX0KLWFzX3Vuc2V0PWFzX2ZuX3Vuc2V0Ci0jIGFzX2Zu X2FwcGVuZCBWQVIgVkFMVUUKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBBcHBlbmQgdGhl IHRleHQgaW4gVkFMVUUgdG8gdGhlIGVuZCBvZiB0aGUgZGVmaW5pdGlvbiBjb250YWluZWQgaW4g VkFSLiBUYWtlCi0jIGFkdmFudGFnZSBvZiBhbnkgc2hlbGwgb3B0aW1pemF0aW9ucyB0aGF0IGFs bG93IGFtb3J0aXplZCBsaW5lYXIgZ3Jvd3RoIG92ZXIKLSMgcmVwZWF0ZWQgYXBwZW5kcywgaW5z dGVhZCBvZiB0aGUgdHlwaWNhbCBxdWFkcmF0aWMgZ3Jvd3RoIHByZXNlbnQgaW4gbmFpdmUKLSMg aW1wbGVtZW50YXRpb25zLgotaWYgKGV2YWwgImFzX3Zhcj0xOyBhc192YXIrPTI7IHRlc3QgeFwk YXNfdmFyID0geDEyIikgMj4vZGV2L251bGw7IHRoZW4gOgotICBldmFsICdhc19mbl9hcHBlbmQg KCkKLSAgewotICAgIGV2YWwgJDErPVwkMgotICB9JwotZWxzZQotICBhc19mbl9hcHBlbmQgKCkK LSAgewotICAgIGV2YWwgJDE9XCQkMVwkMgotICB9Ci1maSAjIGFzX2ZuX2FwcGVuZAotCi0jIGFz X2ZuX2FyaXRoIEFSRy4uLgotIyAtLS0tLS0tLS0tLS0tLS0tLS0KLSMgUGVyZm9ybSBhcml0aG1l dGljIGV2YWx1YXRpb24gb24gdGhlIEFSR3MsIGFuZCBzdG9yZSB0aGUgcmVzdWx0IGluIHRoZQot IyBnbG9iYWwgJGFzX3ZhbC4gVGFrZSBhZHZhbnRhZ2Ugb2Ygc2hlbGxzIHRoYXQgY2FuIGF2b2lk IGZvcmtzLiBUaGUgYXJndW1lbnRzCi0jIG11c3QgYmUgcG9ydGFibGUgYWNyb3NzICQoKCkpIGFu ZCBleHByLgotaWYgKGV2YWwgInRlc3QgXCQoKCAxICsgMSApKSA9IDIiKSAyPi9kZXYvbnVsbDsg dGhlbiA6Ci0gIGV2YWwgJ2FzX2ZuX2FyaXRoICgpCi0gIHsKLSAgICBhc192YWw9JCgoICQqICkp Ci0gIH0nCi1lbHNlCi0gIGFzX2ZuX2FyaXRoICgpCi0gIHsKLSAgICBhc192YWw9YGV4cHIgIiRA IiB8fCB0ZXN0ICQ/IC1lcSAxYAotICB9Ci1maSAjIGFzX2ZuX2FyaXRoCi0KLQotaWYgZXhwciBh IDogJ1woYVwpJyA+L2Rldi9udWxsIDI+JjEgJiYKLSAgIHRlc3QgIlhgZXhwciAwMDAwMSA6ICcu KlwoLi4uXCknYCIgPSBYMDAxOyB0aGVuCi0gIGFzX2V4cHI9ZXhwcgotZWxzZQotICBhc19leHBy PWZhbHNlCi1maQotCi1pZiAoYmFzZW5hbWUgLS0gLykgPi9kZXYvbnVsbCAyPiYxICYmIHRlc3Qg IlhgYmFzZW5hbWUgLS0gLyAyPiYxYCIgPSAiWC8iOyB0aGVuCi0gIGFzX2Jhc2VuYW1lPWJhc2Vu YW1lCi1lbHNlCi0gIGFzX2Jhc2VuYW1lPWZhbHNlCi1maQotCi1pZiAoYXNfZGlyPWBkaXJuYW1l IC0tIC9gICYmIHRlc3QgIlgkYXNfZGlyIiA9IFgvKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSAg YXNfZGlybmFtZT1kaXJuYW1lCi1lbHNlCi0gIGFzX2Rpcm5hbWU9ZmFsc2UKLWZpCi0KLWFzX21l PWAkYXNfYmFzZW5hbWUgLS0gIiQwIiB8fAotJGFzX2V4cHIgWC8iJDAiIDogJy4qL1woW14vXVte L10qXCkvKiQnIFx8IFwKLQkgWCIkMCIgOiAnWFwoLy9cKSQnIFx8IFwKLQkgWCIkMCIgOiAnWFwo L1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8Ci0kYXNfZWNobyBYLyIkMCIgfAotICAgIHNlZCAnL14u KlwvXChbXi9dW14vXSpcKVwvKiQvewotCSAgICBzLy9cMS8KLQkgICAgcQotCSAgfQotCSAgL15Y XC9cKFwvXC9cKSQvewotCSAgICBzLy9cMS8KLQkgICAgcQotCSAgfQotCSAgL15YXC9cKFwvXCku Ki97Ci0JICAgIHMvL1wxLwotCSAgICBxCi0JICB9Ci0JICBzLy4qLy4vOyBxJ2AKLQotIyBBdm9p ZCBkZXBlbmRpbmcgdXBvbiBDaGFyYWN0ZXIgUmFuZ2VzLgotYXNfY3JfbGV0dGVycz0nYWJjZGVm Z2hpamtsbW5vcHFyc3R1dnd4eXonCi1hc19jcl9MRVRURVJTPSdBQkNERUZHSElKS0xNTk9QUVJT VFVWV1hZWicKLWFzX2NyX0xldHRlcnM9JGFzX2NyX2xldHRlcnMkYXNfY3JfTEVUVEVSUwotYXNf Y3JfZGlnaXRzPScwMTIzNDU2Nzg5JwotYXNfY3JfYWxudW09JGFzX2NyX0xldHRlcnMkYXNfY3Jf ZGlnaXRzCi0KLUVDSE9fQz0gRUNIT19OPSBFQ0hPX1Q9Ci1jYXNlIGBlY2hvIC1uIHhgIGluICMo KCgoKAotLW4qKQotICBjYXNlIGBlY2hvICd4eVxjJ2AgaW4KLSAgKmMqKSBFQ0hPX1Q9JwknOzsJ IyBFQ0hPX1QgaXMgc2luZ2xlIHRhYiBjaGFyYWN0ZXIuCi0gIHh5KSAgRUNIT19DPSdcYyc7Owot ICAqKSAgIGVjaG8gYGVjaG8ga3NoODggYnVnIG9uIEFJWCA2LjFgID4gL2Rldi9udWxsCi0gICAg ICAgRUNIT19UPScJJzs7Ci0gIGVzYWM7OwotKikKLSAgRUNIT19OPSctbic7OwotZXNhYwotCi1y bSAtZiBjb25mJCQgY29uZiQkLmV4ZSBjb25mJCQuZmlsZQotaWYgdGVzdCAtZCBjb25mJCQuZGly OyB0aGVuCi0gIHJtIC1mIGNvbmYkJC5kaXIvY29uZiQkLmZpbGUKLWVsc2UKLSAgcm0gLWYgY29u ZiQkLmRpcgotICBta2RpciBjb25mJCQuZGlyIDI+L2Rldi9udWxsCi1maQotaWYgKGVjaG8gPmNv bmYkJC5maWxlKSAyPi9kZXYvbnVsbDsgdGhlbgotICBpZiBsbiAtcyBjb25mJCQuZmlsZSBjb25m JCQgMj4vZGV2L251bGw7IHRoZW4KLSAgICBhc19sbl9zPSdsbiAtcycKLSAgICAjIC4uLiBidXQg dGhlcmUgYXJlIHR3byBnb3RjaGFzOgotICAgICMgMSkgT24gTVNZUywgYm90aCBgbG4gLXMgZmls ZSBkaXInIGFuZCBgbG4gZmlsZSBkaXInIGZhaWwuCi0gICAgIyAyKSBESkdQUCA8IDIuMDQgaGFz IG5vIHN5bWxpbmtzOyBgbG4gLXMnIGNyZWF0ZXMgYSB3cmFwcGVyIGV4ZWN1dGFibGUuCi0gICAg IyBJbiBib3RoIGNhc2VzLCB3ZSBoYXZlIHRvIGRlZmF1bHQgdG8gYGNwIC1wUicuCi0gICAgbG4g LXMgY29uZiQkLmZpbGUgY29uZiQkLmRpciAyPi9kZXYvbnVsbCAmJiB0ZXN0ICEgLWYgY29uZiQk LmV4ZSB8fAotICAgICAgYXNfbG5fcz0nY3AgLXBSJwotICBlbGlmIGxuIGNvbmYkJC5maWxlIGNv bmYkJCAyPi9kZXYvbnVsbDsgdGhlbgotICAgIGFzX2xuX3M9bG4KLSAgZWxzZQotICAgIGFzX2xu X3M9J2NwIC1wUicKLSAgZmkKLWVsc2UKLSAgYXNfbG5fcz0nY3AgLXBSJwotZmkKLXJtIC1mIGNv bmYkJCBjb25mJCQuZXhlIGNvbmYkJC5kaXIvY29uZiQkLmZpbGUgY29uZiQkLmZpbGUKLXJtZGly IGNvbmYkJC5kaXIgMj4vZGV2L251bGwKLQotCi0jIGFzX2ZuX21rZGlyX3AKLSMgLS0tLS0tLS0t LS0tLQotIyBDcmVhdGUgIiRhc19kaXIiIGFzIGEgZGlyZWN0b3J5LCBpbmNsdWRpbmcgcGFyZW50 cyBpZiBuZWNlc3NhcnkuCi1hc19mbl9ta2Rpcl9wICgpCi17Ci0KLSAgY2FzZSAkYXNfZGlyIGlu ICMoCi0gIC0qKSBhc19kaXI9Li8kYXNfZGlyOzsKLSAgZXNhYwotICB0ZXN0IC1kICIkYXNfZGly IiB8fCBldmFsICRhc19ta2Rpcl9wIHx8IHsKLSAgICBhc19kaXJzPQotICAgIHdoaWxlIDo7IGRv Ci0gICAgICBjYXNlICRhc19kaXIgaW4gIygKLSAgICAgICpcJyopIGFzX3FkaXI9YCRhc19lY2hv ICIkYXNfZGlyIiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYDs7ICMnKAotICAgICAgKikgYXNf cWRpcj0kYXNfZGlyOzsKLSAgICAgIGVzYWMKLSAgICAgIGFzX2RpcnM9IickYXNfcWRpcicgJGFz X2RpcnMiCi0gICAgICBhc19kaXI9YCRhc19kaXJuYW1lIC0tICIkYXNfZGlyIiB8fAotJGFzX2V4 cHIgWCIkYXNfZGlyIiA6ICdYXCguKlteL11cKS8vKlteL11bXi9dKi8qJCcgXHwgXAotCSBYIiRh c19kaXIiIDogJ1hcKC8vXClbXi9dJyBcfCBcCi0JIFgiJGFzX2RpciIgOiAnWFwoLy9cKSQnIFx8 IFwKLQkgWCIkYXNfZGlyIiA6ICdYXCgvXCknIFx8IC4gMj4vZGV2L251bGwgfHwKLSRhc19lY2hv IFgiJGFzX2RpciIgfAotICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97 Ci0JICAgIHMvL1wxLwotCSAgICBxCi0JICB9Ci0JICAvXlhcKFwvXC9cKVteL10uKi97Ci0JICAg IHMvL1wxLwotCSAgICBxCi0JICB9Ci0JICAvXlhcKFwvXC9cKSQvewotCSAgICBzLy9cMS8KLQkg ICAgcQotCSAgfQotCSAgL15YXChcL1wpLiovewotCSAgICBzLy9cMS8KLQkgICAgcQotCSAgfQot CSAgcy8uKi8uLzsgcSdgCi0gICAgICB0ZXN0IC1kICIkYXNfZGlyIiAmJiBicmVhawotICAgIGRv bmUKLSAgICB0ZXN0IC16ICIkYXNfZGlycyIgfHwgZXZhbCAibWtkaXIgJGFzX2RpcnMiCi0gIH0g fHwgdGVzdCAtZCAiJGFzX2RpciIgfHwgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBjcmVhdGUgZGly ZWN0b3J5ICRhc19kaXIiCi0KLQotfSAjIGFzX2ZuX21rZGlyX3AKLWlmIG1rZGlyIC1wIC4gMj4v ZGV2L251bGw7IHRoZW4KLSAgYXNfbWtkaXJfcD0nbWtkaXIgLXAgIiRhc19kaXIiJwotZWxzZQot ICB0ZXN0IC1kIC4vLXAgJiYgcm1kaXIgLi8tcAotICBhc19ta2Rpcl9wPWZhbHNlCi1maQotCi0K LSMgYXNfZm5fZXhlY3V0YWJsZV9wIEZJTEUKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMg VGVzdCBpZiBGSUxFIGlzIGFuIGV4ZWN1dGFibGUgcmVndWxhciBmaWxlLgotYXNfZm5fZXhlY3V0 YWJsZV9wICgpCi17Ci0gIHRlc3QgLWYgIiQxIiAmJiB0ZXN0IC14ICIkMSIKLX0gIyBhc19mbl9l eGVjdXRhYmxlX3AKLWFzX3Rlc3RfeD0ndGVzdCAteCcKLWFzX2V4ZWN1dGFibGVfcD1hc19mbl9l eGVjdXRhYmxlX3AKLQotIyBTZWQgZXhwcmVzc2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBhIHZh bGlkIENQUCBuYW1lLgotYXNfdHJfY3BwPSJldmFsIHNlZCAneSUqJGFzX2NyX2xldHRlcnMlUCRh c19jcl9MRVRURVJTJTtzJVteXyRhc19jcl9hbG51bV0lXyVnJyIKLQotIyBTZWQgZXhwcmVzc2lv biB0byBtYXAgYSBzdHJpbmcgb250byBhIHZhbGlkIHZhcmlhYmxlIG5hbWUuCi1hc190cl9zaD0i ZXZhbCBzZWQgJ3klKislcHAlO3MlW15fJGFzX2NyX2FsbnVtXSVfJWcnIgotCi0KLWV4ZWMgNj4m MQotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLSMjIE1haW4gYm9k eSBvZiAkQ09ORklHX1NUQVRVUyBzY3JpcHQuICMjCi0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSAjIwotX0FTRU9GCi10ZXN0ICRhc193cml0ZV9mYWlsID0gMCAmJiBjaG1v ZCAreCAkQ09ORklHX1NUQVRVUyB8fCBhY193cml0ZV9mYWlsPTEKLQotY2F0ID4+JENPTkZJR19T VEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQotIyBTYXZlIHRoZSBsb2cgbWVzc2Fn ZSwgdG8ga2VlcCAkMCBhbmQgc28gb24gbWVhbmluZ2Z1bCwgYW5kIHRvCi0jIHJlcG9ydCBhY3R1 YWwgaW5wdXQgdmFsdWVzIG9mIENPTkZJR19GSUxFUyBldGMuIGluc3RlYWQgb2YgdGhlaXIKLSMg dmFsdWVzIGFmdGVyIG9wdGlvbnMgaGFuZGxpbmcuCi1hY19sb2c9IgotVGhpcyBmaWxlIHdhcyBl eHRlbmRlZCBieSBYZW4gSHlwZXJ2aXNvciBEb2N1bWVudGF0aW9uICRhc19tZSA0LjEzLCB3aGlj aCB3YXMKLWdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OS4gIEludm9jYXRpb24gY29tbWFu ZCBsaW5lIHdhcwotCi0gIENPTkZJR19GSUxFUyAgICA9ICRDT05GSUdfRklMRVMKLSAgQ09ORklH X0hFQURFUlMgID0gJENPTkZJR19IRUFERVJTCi0gIENPTkZJR19MSU5LUyAgICA9ICRDT05GSUdf TElOS1MKLSAgQ09ORklHX0NPTU1BTkRTID0gJENPTkZJR19DT01NQU5EUwotICAkICQwICRACi0K LW9uIGAoaG9zdG5hbWUgfHwgdW5hbWUgLW4pIDI+L2Rldi9udWxsIHwgc2VkIDFxYAotIgotCi1f QUNFT0YKLQotY2FzZSAkYWNfY29uZmlnX2ZpbGVzIGluICoiCi0iKikgc2V0IHggJGFjX2NvbmZp Z19maWxlczsgc2hpZnQ7IGFjX2NvbmZpZ19maWxlcz0kKjs7Ci1lc2FjCi0KLQotCi1jYXQgPj4k Q09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKLSMgRmlsZXMgdGhhdCBj b25maWcuc3RhdHVzIHdhcyBtYWRlIGZvci4KLWNvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19maWxl cyIKLQotX0FDRU9GCi0KLWNhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0 ZV9mYWlsPTEKLWFjX2NzX3VzYWdlPSJcCi1cYCRhc19tZScgaW5zdGFudGlhdGVzIGZpbGVzIGFu ZCBvdGhlciBjb25maWd1cmF0aW9uIGFjdGlvbnMKLWZyb20gdGVtcGxhdGVzIGFjY29yZGluZyB0 byB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLiAgVW5sZXNzIHRoZSBmaWxlcwotYW5kIGFjdGlv bnMgYXJlIHNwZWNpZmllZCBhcyBUQUdzLCBhbGwgYXJlIGluc3RhbnRpYXRlZCBieSBkZWZhdWx0 LgotCi1Vc2FnZTogJDAgW09QVElPTl0uLi4gW1RBR10uLi4KLQotICAtaCwgLS1oZWxwICAgICAg IHByaW50IHRoaXMgaGVscCwgdGhlbiBleGl0Ci0gIC1WLCAtLXZlcnNpb24gICAgcHJpbnQgdmVy c2lvbiBudW1iZXIgYW5kIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MsIHRoZW4gZXhpdAotICAgICAg LS1jb25maWcgICAgIHByaW50IGNvbmZpZ3VyYXRpb24sIHRoZW4gZXhpdAotICAtcSwgLS1xdWll dCwgLS1zaWxlbnQKLSAgICAgICAgICAgICAgICAgICBkbyBub3QgcHJpbnQgcHJvZ3Jlc3MgbWVz c2FnZXMKLSAgLWQsIC0tZGVidWcgICAgICBkb24ndCByZW1vdmUgdGVtcG9yYXJ5IGZpbGVzCi0g ICAgICAtLXJlY2hlY2sgICAgdXBkYXRlICRhc19tZSBieSByZWNvbmZpZ3VyaW5nIGluIHRoZSBz YW1lIGNvbmRpdGlvbnMKLSAgICAgIC0tZmlsZT1GSUxFWzpURU1QTEFURV0KLSAgICAgICAgICAg ICAgICAgICBpbnN0YW50aWF0ZSB0aGUgY29uZmlndXJhdGlvbiBmaWxlIEZJTEUKLQotQ29uZmln dXJhdGlvbiBmaWxlczoKLSRjb25maWdfZmlsZXMKLQotUmVwb3J0IGJ1Z3MgdG8gPHhlbi1kZXZl bEBsaXN0cy54ZW4ub3JnPi4KLVhlbiBIeXBlcnZpc29yIERvY3VtZW50YXRpb24gaG9tZSBwYWdl OiA8aHR0cDovL3d3dy54ZW4ub3JnLz4uIgotCi1fQUNFT0YKLWNhdCA+PiRDT05GSUdfU1RBVFVT IDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQotYWNfY3NfY29uZmlnPSJgJGFzX2VjaG8gIiRh Y19jb25maWd1cmVfYXJncyIgfCBzZWQgJ3MvXiAvLzsgcy9bXFwiIlxgXCRdL1xcXFwmL2cnYCIK LWFjX2NzX3ZlcnNpb249IlxcCi1YZW4gSHlwZXJ2aXNvciBEb2N1bWVudGF0aW9uIGNvbmZpZy5z dGF0dXMgNC4xMwotY29uZmlndXJlZCBieSAkMCwgZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAy LjY5LAotICB3aXRoIG9wdGlvbnMgXFwiXCRhY19jc19jb25maWdcXCIKLQotQ29weXJpZ2h0IChD KSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotVGhpcyBjb25maWcuc3RhdHVz IHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi1n aXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkg aXQuIgotCi1hY19wd2Q9JyRhY19wd2QnCi1zcmNkaXI9JyRzcmNkaXInCi10ZXN0IC1uICJcJEFX SyIgfHwgQVdLPWF3awotX0FDRU9GCi0KLWNhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8 fCBhY193cml0ZV9mYWlsPTEKLSMgVGhlIGRlZmF1bHQgbGlzdHMgYXBwbHkgaWYgdGhlIHVzZXIg ZG9lcyBub3Qgc3BlY2lmeSBhbnkgZmlsZS4KLWFjX25lZWRfZGVmYXVsdHM9Ogotd2hpbGUgdGVz dCAkIyAhPSAwCi1kbwotICBjYXNlICQxIGluCi0gIC0tKj0/KikKLSAgICBhY19vcHRpb249YGV4 cHIgIlgkMSIgOiAnWFwoW149XSpcKT0nYAotICAgIGFjX29wdGFyZz1gZXhwciAiWCQxIiA6ICdY W149XSo9XCguKlwpJ2AKLSAgICBhY19zaGlmdD06Ci0gICAgOzsKLSAgLS0qPSkKLSAgICBhY19v cHRpb249YGV4cHIgIlgkMSIgOiAnWFwoW149XSpcKT0nYAotICAgIGFjX29wdGFyZz0KLSAgICBh Y19zaGlmdD06Ci0gICAgOzsKLSAgKikKLSAgICBhY19vcHRpb249JDEKLSAgICBhY19vcHRhcmc9 JDIKLSAgICBhY19zaGlmdD1zaGlmdAotICAgIDs7Ci0gIGVzYWMKLQotICBjYXNlICRhY19vcHRp b24gaW4KLSAgIyBIYW5kbGluZyBvZiB0aGUgb3B0aW9ucy4KLSAgLXJlY2hlY2sgfCAtLXJlY2hl Y2sgfCAtLXJlY2hlYyB8IC0tcmVjaGUgfCAtLXJlY2ggfCAtLXJlYyB8IC0tcmUgfCAtLXIpCi0g ICAgYWNfY3NfcmVjaGVjaz06IDs7Ci0gIC0tdmVyc2lvbiB8IC0tdmVyc2lvIHwgLS12ZXJzaSB8 IC0tdmVycyB8IC0tdmVyIHwgLS12ZSB8IC0tdiB8IC1WICkKLSAgICAkYXNfZWNobyAiJGFjX2Nz X3ZlcnNpb24iOyBleGl0IDs7Ci0gIC0tY29uZmlnIHwgLS1jb25maSB8IC0tY29uZiB8IC0tY29u IHwgLS1jbyB8IC0tYyApCi0gICAgJGFzX2VjaG8gIiRhY19jc19jb25maWciOyBleGl0IDs7Ci0g IC0tZGVidWcgfCAtLWRlYnUgfCAtLWRlYiB8IC0tZGUgfCAtLWQgfCAtZCApCi0gICAgZGVidWc9 OiA7OwotICAtLWZpbGUgfCAtLWZpbCB8IC0tZmkgfCAtLWYgKQotICAgICRhY19zaGlmdAotICAg IGNhc2UgJGFjX29wdGFyZyBpbgotICAgICpcJyopIGFjX29wdGFyZz1gJGFzX2VjaG8gIiRhY19v cHRhcmciIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgIDs7Ci0gICAgJycpIGFzX2ZuX2Vycm9y ICQ/ICJtaXNzaW5nIGZpbGUgYXJndW1lbnQiIDs7Ci0gICAgZXNhYwotICAgIGFzX2ZuX2FwcGVu ZCBDT05GSUdfRklMRVMgIiAnJGFjX29wdGFyZyciCi0gICAgYWNfbmVlZF9kZWZhdWx0cz1mYWxz ZTs7Ci0gIC0taGUgfCAtLWggfCAgLS1oZWxwIHwgLS1oZWwgfCAtaCApCi0gICAgJGFzX2VjaG8g IiRhY19jc191c2FnZSI7IGV4aXQgOzsKLSAgLXEgfCAtcXVpZXQgfCAtLXF1aWV0IHwgLS1xdWll IHwgLS1xdWkgfCAtLXF1IHwgLS1xIFwKLSAgfCAtc2lsZW50IHwgLS1zaWxlbnQgfCAtLXNpbGVu IHwgLS1zaWxlIHwgLS1zaWwgfCAtLXNpIHwgLS1zKQotICAgIGFjX2NzX3NpbGVudD06IDs7Ci0K LSAgIyBUaGlzIGlzIGFuIGVycm9yLgotICAtKikgYXNfZm5fZXJyb3IgJD8gInVucmVjb2duaXpl ZCBvcHRpb246IFxgJDEnCi1UcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIg OzsKLQotICAqKSBhc19mbl9hcHBlbmQgYWNfY29uZmlnX3RhcmdldHMgIiAkMSIKLSAgICAgYWNf bmVlZF9kZWZhdWx0cz1mYWxzZSA7OwotCi0gIGVzYWMKLSAgc2hpZnQKLWRvbmUKLQotYWNfY29u ZmlndXJlX2V4dHJhX2FyZ3M9Ci0KLWlmICRhY19jc19zaWxlbnQ7IHRoZW4KLSAgZXhlYyA2Pi9k ZXYvbnVsbAotICBhY19jb25maWd1cmVfZXh0cmFfYXJncz0iJGFjX2NvbmZpZ3VyZV9leHRyYV9h cmdzIC0tc2lsZW50IgotZmkKLQotX0FDRU9GCi1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VP RiB8fCBhY193cml0ZV9mYWlsPTEKLWlmIFwkYWNfY3NfcmVjaGVjazsgdGhlbgotICBzZXQgWCAk U0hFTEwgJyQwJyAkYWNfY29uZmlndXJlX2FyZ3MgXCRhY19jb25maWd1cmVfZXh0cmFfYXJncyAt LW5vLWNyZWF0ZSAtLW5vLXJlY3Vyc2lvbgotICBzaGlmdAotICBcJGFzX2VjaG8gInJ1bm5pbmcg Q09ORklHX1NIRUxMPSRTSEVMTCBcJCoiID4mNgotICBDT05GSUdfU0hFTEw9JyRTSEVMTCcKLSAg ZXhwb3J0IENPTkZJR19TSEVMTAotICBleGVjICJcJEAiCi1maQotCi1fQUNFT0YKLWNhdCA+PiRD T05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKLWV4ZWMgNT4+Y29uZmln LmxvZwotewotICBlY2hvCi0gIHNlZCAnaDtzLy4vLS9nO3MvXi4uLi8jIyAvO3MvLi4uJC8gIyMv O3A7eDtwO3gnIDw8X0FTQk9YCi0jIyBSdW5uaW5nICRhc19tZS4gIyMKLV9BU0JPWAotICAkYXNf ZWNobyAiJGFjX2xvZyIKLX0gPiY1Ci0KLV9BQ0VPRgotY2F0ID4+JENPTkZJR19TVEFUVVMgPDxf QUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCi1fQUNFT0YKLQotY2F0ID4+JENPTkZJR19TVEFUVVMg PDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQotCi0jIEhhbmRsaW5nIG9mIGFyZ3VtZW50cy4K LWZvciBhY19jb25maWdfdGFyZ2V0IGluICRhY19jb25maWdfdGFyZ2V0cwotZG8KLSAgY2FzZSAk YWNfY29uZmlnX3RhcmdldCBpbgotICAgICIuLi9jb25maWcvRG9jcy5tayIpIENPTkZJR19GSUxF Uz0iJENPTkZJR19GSUxFUyAuLi9jb25maWcvRG9jcy5tayIgOzsKLSAgICAibWFuL3hsLmNmZy41 LnBvZCIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBtYW4veGwuY2ZnLjUucG9kIiA7Owot ICAgICJtYW4veGwuMS5wb2QiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgbWFuL3hsLjEu cG9kIiA7OwotCi0gICopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIGFyZ3VtZW50OiBcYCRhY19j b25maWdfdGFyZ2V0JyIgIiRMSU5FTk8iIDU7OwotICBlc2FjCi1kb25lCi0KLQotIyBJZiB0aGUg dXNlciBkaWQgbm90IHVzZSB0aGUgYXJndW1lbnRzIHRvIHNwZWNpZnkgdGhlIGl0ZW1zIHRvIGlu c3RhbnRpYXRlLAotIyB0aGVuIHRoZSBlbnZ2YXIgaW50ZXJmYWNlIGlzIHVzZWQuICBTZXQgb25s eSB0aG9zZSB0aGF0IGFyZSBub3QuCi0jIFdlIHVzZSB0aGUgbG9uZyBmb3JtIGZvciB0aGUgZGVm YXVsdCBhc3NpZ25tZW50IGJlY2F1c2Ugb2YgYW4gZXh0cmVtZWx5Ci0jIGJpemFycmUgYnVnIG9u IFN1bk9TIDQuMS4zLgotaWYgJGFjX25lZWRfZGVmYXVsdHM7IHRoZW4KLSAgdGVzdCAiJHtDT05G SUdfRklMRVMrc2V0fSIgPSBzZXQgfHwgQ09ORklHX0ZJTEVTPSRjb25maWdfZmlsZXMKLWZpCi0K LSMgSGF2ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgZm9yIGNvbnZlbmllbmNlLiAgTWFrZSBpdCBp biB0aGUgYnVpbGQgdHJlZQotIyBzaW1wbHkgYmVjYXVzZSB0aGVyZSBpcyBubyByZWFzb24gYWdh aW5zdCBoYXZpbmcgaXQgaGVyZSwgYW5kIGluIGFkZGl0aW9uLAotIyBjcmVhdGluZyBhbmQgbW92 aW5nIGZpbGVzIGZyb20gL3RtcCBjYW4gc29tZXRpbWVzIGNhdXNlIHByb2JsZW1zLgotIyBIb29r IGZvciBpdHMgcmVtb3ZhbCB1bmxlc3MgZGVidWdnaW5nLgotIyBOb3RlIHRoYXQgdGhlcmUgaXMg YSBzbWFsbCB3aW5kb3cgaW4gd2hpY2ggdGhlIGRpcmVjdG9yeSB3aWxsIG5vdCBiZSBjbGVhbmVk OgotIyBhZnRlciBpdHMgY3JlYXRpb24gYnV0IGJlZm9yZSBpdHMgbmFtZSBoYXMgYmVlbiBhc3Np Z25lZCB0byBgJHRtcCcuCi0kZGVidWcgfHwKLXsKLSAgdG1wPSBhY190bXA9Ci0gIHRyYXAgJ2V4 aXRfc3RhdHVzPSQ/Ci0gIDogIiR7YWNfdG1wOj0kdG1wfSIKLSAgeyB0ZXN0ICEgLWQgIiRhY190 bXAiIHx8IHJtIC1mciAiJGFjX3RtcCI7IH0gJiYgZXhpdCAkZXhpdF9zdGF0dXMKLScgMAotICB0 cmFwICdhc19mbl9leGl0IDEnIDEgMiAxMyAxNQotfQotIyBDcmVhdGUgYSAoc2VjdXJlKSB0bXAg ZGlyZWN0b3J5IGZvciB0bXAgZmlsZXMuCi0KLXsKLSAgdG1wPWAodW1hc2sgMDc3ICYmIG1rdGVt cCAtZCAiLi9jb25mWFhYWFhYIikgMj4vZGV2L251bGxgICYmCi0gIHRlc3QgLWQgIiR0bXAiCi19 ICB8fAotewotICB0bXA9Li9jb25mJCQtJFJBTkRPTQotICAodW1hc2sgMDc3ICYmIG1rZGlyICIk dG1wIikKLX0gfHwgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBjcmVhdGUgYSB0ZW1wb3JhcnkgZGly ZWN0b3J5IGluIC4iICIkTElORU5PIiA1Ci1hY190bXA9JHRtcAotCi0jIFNldCB1cCB0aGUgc2Ny aXB0cyBmb3IgQ09ORklHX0ZJTEVTIHNlY3Rpb24uCi0jIE5vIG5lZWQgdG8gZ2VuZXJhdGUgdGhl bSBpZiB0aGVyZSBhcmUgbm8gQ09ORklHX0ZJTEVTLgotIyBUaGlzIGhhcHBlbnMgZm9yIGluc3Rh bmNlIHdpdGggYC4vY29uZmlnLnN0YXR1cyBjb25maWcuaCcuCi1pZiB0ZXN0IC1uICIkQ09ORklH X0ZJTEVTIjsgdGhlbgotCi0KLWFjX2NyPWBlY2hvIFggfCB0ciBYICdcMDE1J2AKLSMgT24gY3ln d2luLCBiYXNoIGNhbiBlYXQgXHIgaW5zaWRlIGBgIGlmIHRoZSB1c2VyIHJlcXVlc3RlZCBpZ25j ci4KLSMgQnV0IHdlIGtub3cgb2Ygbm8gb3RoZXIgc2hlbGwgd2hlcmUgYWNfY3Igd291bGQgYmUg ZW1wdHkgYXQgdGhpcwotIyBwb2ludCwgc28gd2UgY2FuIHVzZSBhIGJhc2hpc20gYXMgYSBmYWxs YmFjay4KLWlmIHRlc3QgIngkYWNfY3IiID0geDsgdGhlbgotICBldmFsIGFjX2NyPVwkXCdcXHJc JwotZmkKLWFjX2NzX2F3a19jcj1gJEFXSyAnQkVHSU4geyBwcmludCAiYVxyYiIgfScgPC9kZXYv bnVsbCAyPi9kZXYvbnVsbGAKLWlmIHRlc3QgIiRhY19jc19hd2tfY3IiID0gImEke2FjX2NyfWIi OyB0aGVuCi0gIGFjX2NzX2F3a19jcj0nXFxyJwotZWxzZQotICBhY19jc19hd2tfY3I9JGFjX2Ny Ci1maQotCi1lY2hvICdCRUdJTiB7JyA+IiRhY190bXAvc3ViczEuYXdrIiAmJgotX0FDRU9GCi0K LQotewotICBlY2hvICJjYXQgPmNvbmYkJHN1YnMuYXdrIDw8X0FDRU9GIiAmJgotICBlY2hvICIk YWNfc3Vic3RfdmFycyIgfCBzZWQgJ3MvLiovJiEkJiRhY19kZWxpbS8nICYmCi0gIGVjaG8gIl9B Q0VPRiIKLX0gPmNvbmYkJHN1YnMuc2ggfHwKLSAgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBt YWtlICRDT05GSUdfU1RBVFVTIiAiJExJTkVOTyIgNQotYWNfZGVsaW1fbnVtPWBlY2hvICIkYWNf c3Vic3RfdmFycyIgfCBncmVwIC1jICdeJ2AKLWFjX2RlbGltPSclIV8hIyAnCi1mb3IgYWNfbGFz dF90cnkgaW4gZmFsc2UgZmFsc2UgZmFsc2UgZmFsc2UgZmFsc2UgOjsgZG8KLSAgLiAuL2NvbmYk JHN1YnMuc2ggfHwKLSAgICBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IG1ha2UgJENPTkZJR19T VEFUVVMiICIkTElORU5PIiA1Ci0KLSAgYWNfZGVsaW1fbj1gc2VkIC1uICJzLy4qJGFjX2RlbGlt XCQvWC9wIiBjb25mJCRzdWJzLmF3ayB8IGdyZXAgLWMgWGAKLSAgaWYgdGVzdCAkYWNfZGVsaW1f biA9ICRhY19kZWxpbV9udW07IHRoZW4KLSAgICBicmVhawotICBlbGlmICRhY19sYXN0X3RyeTsg dGhlbgotICAgIGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgbWFrZSAkQ09ORklHX1NUQVRVUyIg IiRMSU5FTk8iIDUKLSAgZWxzZQotICAgIGFjX2RlbGltPSIkYWNfZGVsaW0hJGFjX2RlbGltIF8k YWNfZGVsaW0hISAiCi0gIGZpCi1kb25lCi1ybSAtZiBjb25mJCRzdWJzLnNoCi0KLWNhdCA+PiRD T05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQotY2F0ID4+IlwkYWNfdG1w L3N1YnMxLmF3ayIgPDxcXF9BQ0FXSyAmJgotX0FDRU9GCi1zZWQgLW4gJwotaAotcy9eL1NbIi87 IHMvIS4qLyJdPS8KLXAKLWcKLXMvXlteIV0qIS8vCi06cmVwbAotdCByZXBsCi1zLyciJGFjX2Rl bGltIickLy8KLXQgZGVsaW0KLTpubAotaAotcy9cKC5cezE0OFx9XCkuLiovXDEvCi10IG1vcmUx Ci1zL1siXFxdL1xcJi9nOyBzL14vIi87IHMvJC9cXG4iXFwvCi1wCi1uCi1iIHJlcGwKLTptb3Jl MQotcy9bIlxcXS9cXCYvZzsgcy9eLyIvOyBzLyQvIlxcLwotcAotZwotcy8uXHsxNDhcfS8vCi10 IG5sCi06ZGVsaW0KLWgKLXMvXCguXHsxNDhcfVwpLi4qL1wxLwotdCBtb3JlMgotcy9bIlxcXS9c XCYvZzsgcy9eLyIvOyBzLyQvIi8KLXAKLWIKLTptb3JlMgotcy9bIlxcXS9cXCYvZzsgcy9eLyIv OyBzLyQvIlxcLwotcAotZwotcy8uXHsxNDhcfS8vCi10IGRlbGltCi0nIDxjb25mJCRzdWJzLmF3 ayB8IHNlZCAnCi0vXlteIiJdL3sKLSAgTgotICBzL1xuLy8KLX0KLScgPj4kQ09ORklHX1NUQVRV UyB8fCBhY193cml0ZV9mYWlsPTEKLXJtIC1mIGNvbmYkJHN1YnMuYXdrCi1jYXQgPj4kQ09ORklH X1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKLV9BQ0FXSwotY2F0ID4+IlwkYWNf dG1wL3N1YnMxLmF3ayIgPDxfQUNBV0sgJiYKLSAgZm9yIChrZXkgaW4gUykgU19pc19zZXRba2V5 XSA9IDEKLSAgRlMgPSAiByIKLQotfQotewotICBsaW5lID0gJCAwCi0gIG5maWVsZHMgPSBzcGxp dChsaW5lLCBmaWVsZCwgIkAiKQotICBzdWJzdGVkID0gMAotICBsZW4gPSBsZW5ndGgoZmllbGRb MV0pCi0gIGZvciAoaSA9IDI7IGkgPCBuZmllbGRzOyBpKyspIHsKLSAgICBrZXkgPSBmaWVsZFtp XQotICAgIGtleWxlbiA9IGxlbmd0aChrZXkpCi0gICAgaWYgKFNfaXNfc2V0W2tleV0pIHsKLSAg ICAgIHZhbHVlID0gU1trZXldCi0gICAgICBsaW5lID0gc3Vic3RyKGxpbmUsIDEsIGxlbikgIiIg dmFsdWUgIiIgc3Vic3RyKGxpbmUsIGxlbiArIGtleWxlbiArIDMpCi0gICAgICBsZW4gKz0gbGVu Z3RoKHZhbHVlKSArIGxlbmd0aChmaWVsZFsrK2ldKQotICAgICAgc3Vic3RlZCA9IDEKLSAgICB9 IGVsc2UKLSAgICAgIGxlbiArPSAxICsga2V5bGVuCi0gIH0KLQotICBwcmludCBsaW5lCi19Ci0K LV9BQ0FXSwotX0FDRU9GCi1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3Jp dGVfZmFpbD0xCi1pZiBzZWQgInMvJGFjX2NyLy8iIDwgL2Rldi9udWxsID4gL2Rldi9udWxsIDI+ JjE7IHRoZW4KLSAgc2VkICJzLyRhY19jclwkLy87IHMvJGFjX2NyLyRhY19jc19hd2tfY3IvZyIK LWVsc2UKLSAgY2F0Ci1maSA8ICIkYWNfdG1wL3N1YnMxLmF3ayIgPiAiJGFjX3RtcC9zdWJzLmF3 ayIgXAotICB8fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IHNldHVwIGNvbmZpZyBmaWxlcyBt YWNoaW5lcnkiICIkTElORU5PIiA1Ci1fQUNFT0YKLQotIyBWUEFUSCBtYXkgY2F1c2UgdHJvdWJs ZSB3aXRoIHNvbWUgbWFrZXMsIHNvIHdlIHJlbW92ZSBzb2xlICQoc3JjZGlyKSwKLSMgJHtzcmNk aXJ9IGFuZCBAc3JjZGlyQCBlbnRyaWVzIGZyb20gVlBBVEggaWYgc3JjZGlyIGlzICIuIiwgc3Ry aXAgbGVhZGluZyBhbmQKLSMgdHJhaWxpbmcgY29sb25zIGFuZCB0aGVuIHJlbW92ZSB0aGUgd2hv bGUgbGluZSBpZiBWUEFUSCBiZWNvbWVzIGVtcHR5Ci0jIChhY3R1YWxseSB3ZSBsZWF2ZSBhbiBl bXB0eSBsaW5lIHRvIHByZXNlcnZlIGxpbmUgbnVtYmVycykuCi1pZiB0ZXN0ICJ4JHNyY2RpciIg PSB4LjsgdGhlbgotICBhY192cHN1Yj0nL15bCSBdKlZQQVRIWwkgXSo9WwkgXSovewotaAotcy8v Lwotcy9eLzovCi1zL1sJIF0qJC86Lwotcy86XCQoc3JjZGlyKTovOi9nCi1zLzpcJHtzcmNkaXJ9 Oi86L2cKLXMvOkBzcmNkaXJAOi86L2cKLXMvXjoqLy8KLXMvOiokLy8KLXgKLXMvXCg9WwkgXSpc KS4qL1wxLwotRwotcy9cbi8vCi1zL15bXj1dKj1bCSBdKiQvLwotfScKLWZpCi0KLWNhdCA+PiRD T05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKLWZpICMgdGVzdCAtbiAi JENPTkZJR19GSUxFUyIKLQotCi1ldmFsIHNldCBYICIgIDpGICRDT05GSUdfRklMRVMgICAgICAi Ci1zaGlmdAotZm9yIGFjX3RhZwotZG8KLSAgY2FzZSAkYWNfdGFnIGluCi0gIDpbRkhMQ10pIGFj X21vZGU9JGFjX3RhZzsgY29udGludWU7OwotICBlc2FjCi0gIGNhc2UgJGFjX21vZGUkYWNfdGFn IGluCi0gIDpbRkhMXSo6Kik7OwotICA6TCogfCA6Qyo6KikgYXNfZm5fZXJyb3IgJD8gImludmFs aWQgdGFnIFxgJGFjX3RhZyciICIkTElORU5PIiA1OzsKLSAgOltGSF0tKSBhY190YWc9LTotOzsK LSAgOltGSF0qKSBhY190YWc9JGFjX3RhZzokYWNfdGFnLmluOzsKLSAgZXNhYwotICBhY19zYXZl X0lGUz0kSUZTCi0gIElGUz06Ci0gIHNldCB4ICRhY190YWcKLSAgSUZTPSRhY19zYXZlX0lGUwot ICBzaGlmdAotICBhY19maWxlPSQxCi0gIHNoaWZ0Ci0KLSAgY2FzZSAkYWNfbW9kZSBpbgotICA6 TCkgYWNfc291cmNlPSQxOzsKLSAgOltGSF0pCi0gICAgYWNfZmlsZV9pbnB1dHM9Ci0gICAgZm9y IGFjX2YKLSAgICBkbwotICAgICAgY2FzZSAkYWNfZiBpbgotICAgICAgLSkgYWNfZj0iJGFjX3Rt cC9zdGRpbiI7OwotICAgICAgKikgIyBMb29rIGZvciB0aGUgZmlsZSBmaXJzdCBpbiB0aGUgYnVp bGQgdHJlZSwgdGhlbiBpbiB0aGUgc291cmNlIHRyZWUKLQkgIyAoaWYgdGhlIHBhdGggaXMgbm90 IGFic29sdXRlKS4gIFRoZSBhYnNvbHV0ZSBwYXRoIGNhbm5vdCBiZSBET1Mtc3R5bGUsCi0JICMg YmVjYXVzZSAkYWNfZiBjYW5ub3QgY29udGFpbiBgOicuCi0JIHRlc3QgLWYgIiRhY19mIiB8fAot CSAgIGNhc2UgJGFjX2YgaW4KLQkgICBbXFwvJF0qKSBmYWxzZTs7Ci0JICAgKikgdGVzdCAtZiAi JHNyY2Rpci8kYWNfZiIgJiYgYWNfZj0iJHNyY2Rpci8kYWNfZiI7OwotCSAgIGVzYWMgfHwKLQkg ICBhc19mbl9lcnJvciAxICJjYW5ub3QgZmluZCBpbnB1dCBmaWxlOiBcYCRhY19mJyIgIiRMSU5F Tk8iIDU7OwotICAgICAgZXNhYwotICAgICAgY2FzZSAkYWNfZiBpbiAqXCcqKSBhY19mPWAkYXNf ZWNobyAiJGFjX2YiIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgOzsgZXNhYwotICAgICAgYXNf Zm5fYXBwZW5kIGFjX2ZpbGVfaW5wdXRzICIgJyRhY19mJyIKLSAgICBkb25lCi0KLSAgICAjIExl dCdzIHN0aWxsIHByZXRlbmQgaXQgaXMgYGNvbmZpZ3VyZScgd2hpY2ggaW5zdGFudGlhdGVzIChp LmUuLCBkb24ndAotICAgICMgdXNlICRhc19tZSksIHBlb3BsZSB3b3VsZCBiZSBzdXJwcmlzZWQg dG8gcmVhZDoKLSAgICAjICAgIC8qIGNvbmZpZy5oLiAgR2VuZXJhdGVkIGJ5IGNvbmZpZy5zdGF0 dXMuICAqLwotICAgIGNvbmZpZ3VyZV9pbnB1dD0nR2VuZXJhdGVkIGZyb20gJ2AKLQkgICRhc19l Y2hvICIkKiIgfCBzZWQgJ3N8XlteOl0qL3x8O3N8OlteOl0qL3wsIHxnJwotCWAnIGJ5IGNvbmZp Z3VyZS4nCi0gICAgaWYgdGVzdCB4IiRhY19maWxlIiAhPSB4LTsgdGhlbgotICAgICAgY29uZmln dXJlX2lucHV0PSIkYWNfZmlsZS4gICRjb25maWd1cmVfaW5wdXQiCi0gICAgICB7ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNyZWF0aW5nICRhY19maWxlIiA+JjUKLSRh c19lY2hvICIkYXNfbWU6IGNyZWF0aW5nICRhY19maWxlIiA+JjY7fQotICAgIGZpCi0gICAgIyBO ZXV0cmFsaXplIHNwZWNpYWwgY2hhcmFjdGVycyBpbnRlcnByZXRlZCBieSBzZWQgaW4gcmVwbGFj ZW1lbnQgc3RyaW5ncy4KLSAgICBjYXNlICRjb25maWd1cmVfaW5wdXQgaW4gIygKLSAgICAqXCYq IHwgKlx8KiB8ICpcXCogKQotICAgICAgIGFjX3NlZF9jb25mX2lucHV0PWAkYXNfZWNobyAiJGNv bmZpZ3VyZV9pbnB1dCIgfAotICAgICAgIHNlZCAncy9bXFxcXCZ8XS9cXFxcJi9nJ2A7OyAjKAot ICAgICopIGFjX3NlZF9jb25mX2lucHV0PSRjb25maWd1cmVfaW5wdXQ7OwotICAgIGVzYWMKLQot ICAgIGNhc2UgJGFjX3RhZyBpbgotICAgICo6LToqIHwgKjotKSBjYXQgPiIkYWNfdG1wL3N0ZGlu IiBcCi0gICAgICB8fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIg IiRMSU5FTk8iIDUgOzsKLSAgICBlc2FjCi0gICAgOzsKLSAgZXNhYwotCi0gIGFjX2Rpcj1gJGFz X2Rpcm5hbWUgLS0gIiRhY19maWxlIiB8fAotJGFzX2V4cHIgWCIkYWNfZmlsZSIgOiAnWFwoLipb Xi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwKLQkgWCIkYWNfZmlsZSIgOiAnWFwoLy9cKVteL10n IFx8IFwKLQkgWCIkYWNfZmlsZSIgOiAnWFwoLy9cKSQnIFx8IFwKLQkgWCIkYWNfZmlsZSIgOiAn WFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8Ci0kYXNfZWNobyBYIiRhY19maWxlIiB8Ci0gICAg c2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sKLQkgICAgcy8vXDEvCi0JICAg IHEKLQkgIH0KLQkgIC9eWFwoXC9cL1wpW14vXS4qL3sKLQkgICAgcy8vXDEvCi0JICAgIHEKLQkg IH0KLQkgIC9eWFwoXC9cL1wpJC97Ci0JICAgIHMvL1wxLwotCSAgICBxCi0JICB9Ci0JICAvXlhc KFwvXCkuKi97Ci0JICAgIHMvL1wxLwotCSAgICBxCi0JICB9Ci0JICBzLy4qLy4vOyBxJ2AKLSAg YXNfZGlyPSIkYWNfZGlyIjsgYXNfZm5fbWtkaXJfcAotICBhY19idWlsZGRpcj0uCi0KLWNhc2Ug IiRhY19kaXIiIGluCi0uKSBhY19kaXJfc3VmZml4PSBhY190b3BfYnVpbGRkaXJfc3ViPS4gYWNf dG9wX2J1aWxkX3ByZWZpeD0gOzsKLSopCi0gIGFjX2Rpcl9zdWZmaXg9L2AkYXNfZWNobyAiJGFj X2RpciIgfCBzZWQgJ3N8XlwuW1xcL118fCdgCi0gICMgQSAiLi4iIGZvciBlYWNoIGRpcmVjdG9y eSBpbiAkYWNfZGlyX3N1ZmZpeC4KLSAgYWNfdG9wX2J1aWxkZGlyX3N1Yj1gJGFzX2VjaG8gIiRh Y19kaXJfc3VmZml4IiB8IHNlZCAnc3wvW15cXC9dKnwvLi58ZztzfC98fCdgCi0gIGNhc2UgJGFj X3RvcF9idWlsZGRpcl9zdWIgaW4KLSAgIiIpIGFjX3RvcF9idWlsZGRpcl9zdWI9LiBhY190b3Bf YnVpbGRfcHJlZml4PSA7OwotICAqKSAgYWNfdG9wX2J1aWxkX3ByZWZpeD0kYWNfdG9wX2J1aWxk ZGlyX3N1Yi8gOzsKLSAgZXNhYyA7OwotZXNhYwotYWNfYWJzX3RvcF9idWlsZGRpcj0kYWNfcHdk Ci1hY19hYnNfYnVpbGRkaXI9JGFjX3B3ZCRhY19kaXJfc3VmZml4Ci0jIGZvciBiYWNrd2FyZCBj b21wYXRpYmlsaXR5OgotYWNfdG9wX2J1aWxkZGlyPSRhY190b3BfYnVpbGRfcHJlZml4Ci0KLWNh c2UgJHNyY2RpciBpbgotICAuKSAgIyBXZSBhcmUgYnVpbGRpbmcgaW4gcGxhY2UuCi0gICAgYWNf c3JjZGlyPS4KLSAgICBhY190b3Bfc3JjZGlyPSRhY190b3BfYnVpbGRkaXJfc3ViCi0gICAgYWNf YWJzX3RvcF9zcmNkaXI9JGFjX3B3ZCA7OwotICBbXFwvXSogfCA/OltcXC9dKiApICAjIEFic29s dXRlIG5hbWUuCi0gICAgYWNfc3JjZGlyPSRzcmNkaXIkYWNfZGlyX3N1ZmZpeDsKLSAgICBhY190 b3Bfc3JjZGlyPSRzcmNkaXIKLSAgICBhY19hYnNfdG9wX3NyY2Rpcj0kc3JjZGlyIDs7Ci0gICop ICMgUmVsYXRpdmUgbmFtZS4KLSAgICBhY19zcmNkaXI9JGFjX3RvcF9idWlsZF9wcmVmaXgkc3Jj ZGlyJGFjX2Rpcl9zdWZmaXgKLSAgICBhY190b3Bfc3JjZGlyPSRhY190b3BfYnVpbGRfcHJlZml4 JHNyY2RpcgotICAgIGFjX2Fic190b3Bfc3JjZGlyPSRhY19wd2QvJHNyY2RpciA7OwotZXNhYwot YWNfYWJzX3NyY2Rpcj0kYWNfYWJzX3RvcF9zcmNkaXIkYWNfZGlyX3N1ZmZpeAotCi0KLSAgY2Fz ZSAkYWNfbW9kZSBpbgotICA6RikKLSAgIwotICAjIENPTkZJR19GSUxFCi0gICMKLQotX0FDRU9G Ci0KLWNhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKLSMg SWYgdGhlIHRlbXBsYXRlIGRvZXMgbm90IGtub3cgYWJvdXQgZGF0YXJvb3RkaXIsIGV4cGFuZCBp dC4KLSMgRklYTUU6IFRoaXMgaGFjayBzaG91bGQgYmUgcmVtb3ZlZCBhIGZldyB5ZWFycyBhZnRl ciAyLjYwLgotYWNfZGF0YXJvb3RkaXJfaGFjaz07IGFjX2RhdGFyb290ZGlyX3NlZW49Ci1hY19z ZWRfZGF0YXJvb3Q9JwotL2RhdGFyb290ZGlyLyB7Ci0gIHAKLSAgcQotfQotL0BkYXRhZGlyQC9w Ci0vQGRvY2RpckAvcAotL0BpbmZvZGlyQC9wCi0vQGxvY2FsZWRpckAvcAotL0BtYW5kaXJAL3An Ci1jYXNlIGBldmFsICJzZWQgLW4gXCJcJGFjX3NlZF9kYXRhcm9vdFwiICRhY19maWxlX2lucHV0 cyJgIGluCi0qZGF0YXJvb3RkaXIqKSBhY19kYXRhcm9vdGRpcl9zZWVuPXllczs7Ci0qQGRhdGFk aXJAKnwqQGRvY2RpckAqfCpAaW5mb2RpckAqfCpAbG9jYWxlZGlyQCp8KkBtYW5kaXJAKikKLSAg eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAkYWNfZmls ZV9pbnB1dHMgc2VlbXMgdG8gaWdub3JlIHRoZSAtLWRhdGFyb290ZGlyIHNldHRpbmciID4mNQot JGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJGFjX2ZpbGVfaW5wdXRzIHNlZW1zIHRvIGlnbm9y ZSB0aGUgLS1kYXRhcm9vdGRpciBzZXR0aW5nIiA+JjI7fQotX0FDRU9GCi1jYXQgPj4kQ09ORklH X1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKLSAgYWNfZGF0YXJvb3RkaXJfaGFj az0nCi0gIHMmQGRhdGFkaXJAJiRkYXRhZGlyJmcKLSAgcyZAZG9jZGlyQCYkZG9jZGlyJmcKLSAg cyZAaW5mb2RpckAmJGluZm9kaXImZwotICBzJkBsb2NhbGVkaXJAJiRsb2NhbGVkaXImZwotICBz JkBtYW5kaXJAJiRtYW5kaXImZwotICBzJlxcXCR7ZGF0YXJvb3RkaXJ9JiRkYXRhcm9vdGRpciZn JyA7OwotZXNhYwotX0FDRU9GCi0KLSMgTmV1dHJhbGl6ZSBWUEFUSCB3aGVuIGAkc3JjZGlyJyA9 IGAuJy4KLSMgU2hlbGwgY29kZSBpbiBjb25maWd1cmUuYWMgbWlnaHQgc2V0IGV4dHJhc3ViLgot IyBGSVhNRTogZG8gd2UgcmVhbGx5IHdhbnQgdG8gbWFpbnRhaW4gdGhpcyBmZWF0dXJlPwotY2F0 ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCi1hY19zZWRfZXh0 cmE9IiRhY192cHN1YgotJGV4dHJhc3ViCi1fQUNFT0YKLWNhdCA+PiRDT05GSUdfU1RBVFVTIDw8 XF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKLTp0Ci0vQFthLXpBLVpfXVthLXpBLVpfMC05XSpA LyFiCi1zfEBjb25maWd1cmVfaW5wdXRAfCRhY19zZWRfY29uZl9pbnB1dHw7dCB0Ci1zJkB0b3Bf YnVpbGRkaXJAJiRhY190b3BfYnVpbGRkaXJfc3ViJjt0IHQKLXMmQHRvcF9idWlsZF9wcmVmaXhA JiRhY190b3BfYnVpbGRfcHJlZml4Jjt0IHQKLXMmQHNyY2RpckAmJGFjX3NyY2RpciY7dCB0Ci1z JkBhYnNfc3JjZGlyQCYkYWNfYWJzX3NyY2RpciY7dCB0Ci1zJkB0b3Bfc3JjZGlyQCYkYWNfdG9w X3NyY2RpciY7dCB0Ci1zJkBhYnNfdG9wX3NyY2RpckAmJGFjX2Fic190b3Bfc3JjZGlyJjt0IHQK LXMmQGJ1aWxkZGlyQCYkYWNfYnVpbGRkaXImO3QgdAotcyZAYWJzX2J1aWxkZGlyQCYkYWNfYWJz X2J1aWxkZGlyJjt0IHQKLXMmQGFic190b3BfYnVpbGRkaXJAJiRhY19hYnNfdG9wX2J1aWxkZGly Jjt0IHQKLSRhY19kYXRhcm9vdGRpcl9oYWNrCi0iCi1ldmFsIHNlZCBcIlwkYWNfc2VkX2V4dHJh XCIgIiRhY19maWxlX2lucHV0cyIgfCAkQVdLIC1mICIkYWNfdG1wL3N1YnMuYXdrIiBcCi0gID4k YWNfdG1wL291dCB8fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIg IiRMSU5FTk8iIDUKLQotdGVzdCAteiAiJGFjX2RhdGFyb290ZGlyX2hhY2skYWNfZGF0YXJvb3Rk aXJfc2VlbiIgJiYKLSAgeyBhY19vdXQ9YHNlZCAtbiAnL1wke2RhdGFyb290ZGlyfS9wJyAiJGFj X3RtcC9vdXQiYDsgdGVzdCAtbiAiJGFjX291dCI7IH0gJiYKLSAgeyBhY19vdXQ9YHNlZCAtbiAn L15bCSBdKmRhdGFyb290ZGlyWwkgXSo6Kj0vcCcgXAotICAgICAgIiRhY190bXAvb3V0ImA7IHRl c3QgLXogIiRhY19vdXQiOyB9ICYmCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogV0FSTklORzogJGFjX2ZpbGUgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIHZh cmlhYmxlIFxgZGF0YXJvb3RkaXInCi13aGljaCBzZWVtcyB0byBiZSB1bmRlZmluZWQuICBQbGVh c2UgbWFrZSBzdXJlIGl0IGlzIGRlZmluZWQiID4mNQotJGFzX2VjaG8gIiRhc19tZTogV0FSTklO RzogJGFjX2ZpbGUgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIHZhcmlhYmxlIFxgZGF0YXJv b3RkaXInCi13aGljaCBzZWVtcyB0byBiZSB1bmRlZmluZWQuICBQbGVhc2UgbWFrZSBzdXJlIGl0 IGlzIGRlZmluZWQiID4mMjt9Ci0KLSAgcm0gLWYgIiRhY190bXAvc3RkaW4iCi0gIGNhc2UgJGFj X2ZpbGUgaW4KLSAgLSkgY2F0ICIkYWNfdG1wL291dCIgJiYgcm0gLWYgIiRhY190bXAvb3V0Ijs7 Ci0gICopIHJtIC1mICIkYWNfZmlsZSIgJiYgbXYgIiRhY190bXAvb3V0IiAiJGFjX2ZpbGUiOzsK LSAgZXNhYyBcCi0gIHx8IGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgY3JlYXRlICRhY19maWxl IiAiJExJTkVOTyIgNQotIDs7Ci0KLQotCi0gIGVzYWMKLQotZG9uZSAjIGZvciBhY190YWcKLQot Ci1hc19mbl9leGl0IDAKLV9BQ0VPRgotYWNfY2xlYW5fZmlsZXM9JGFjX2NsZWFuX2ZpbGVzX3Nh dmUKLQotdGVzdCAkYWNfd3JpdGVfZmFpbCA9IDAgfHwKLSAgYXNfZm5fZXJyb3IgJD8gIndyaXRl IGZhaWx1cmUgY3JlYXRpbmcgJENPTkZJR19TVEFUVVMiICIkTElORU5PIiA1Ci0KLQotIyBjb25m aWd1cmUgaXMgd3JpdGluZyB0byBjb25maWcubG9nLCBhbmQgdGhlbiBjYWxscyBjb25maWcuc3Rh dHVzLgotIyBjb25maWcuc3RhdHVzIGRvZXMgaXRzIG93biByZWRpcmVjdGlvbiwgYXBwZW5kaW5n IHRvIGNvbmZpZy5sb2cuCi0jIFVuZm9ydHVuYXRlbHksIG9uIERPUyB0aGlzIGZhaWxzLCBhcyBj b25maWcubG9nIGlzIHN0aWxsIGtlcHQgb3BlbgotIyBieSBjb25maWd1cmUsIHNvIGNvbmZpZy5z dGF0dXMgd29uJ3QgYmUgYWJsZSB0byB3cml0ZSB0byBpdDsgaXRzCi0jIG91dHB1dCBpcyBzaW1w bHkgZGlzY2FyZGVkLiAgU28gd2UgZXhlYyB0aGUgRkQgdG8gL2Rldi9udWxsLAotIyBlZmZlY3Rp dmVseSBjbG9zaW5nIGNvbmZpZy5sb2csIHNvIGl0IGNhbiBiZSBwcm9wZXJseSAocmUpb3BlbmVk IGFuZAotIyBhcHBlbmRlZCB0byBieSBjb25maWcuc3RhdHVzLiAgV2hlbiBjb21pbmcgYmFjayB0 byBjb25maWd1cmUsIHdlCi0jIG5lZWQgdG8gbWFrZSB0aGUgRkQgYXZhaWxhYmxlIGFnYWluLgot aWYgdGVzdCAiJG5vX2NyZWF0ZSIgIT0geWVzOyB0aGVuCi0gIGFjX2NzX3N1Y2Nlc3M9OgotICBh Y19jb25maWdfc3RhdHVzX2FyZ3M9Ci0gIHRlc3QgIiRzaWxlbnQiID0geWVzICYmCi0gICAgYWNf Y29uZmlnX3N0YXR1c19hcmdzPSIkYWNfY29uZmlnX3N0YXR1c19hcmdzIC0tcXVpZXQiCi0gIGV4 ZWMgNT4vZGV2L251bGwKLSAgJFNIRUxMICRDT05GSUdfU1RBVFVTICRhY19jb25maWdfc3RhdHVz X2FyZ3MgfHwgYWNfY3Nfc3VjY2Vzcz1mYWxzZQotICBleGVjIDU+PmNvbmZpZy5sb2cKLSAgIyBV c2UgfHwsIG5vdCAmJiwgdG8gYXZvaWQgZXhpdGluZyBmcm9tIHRoZSBpZiB3aXRoICQ/ID0gMSwg d2hpY2gKLSAgIyB3b3VsZCBtYWtlIGNvbmZpZ3VyZSBmYWlsIGlmIHRoaXMgaXMgdGhlIGxhc3Qg aW5zdHJ1Y3Rpb24uCi0gICRhY19jc19zdWNjZXNzIHx8IGFzX2ZuX2V4aXQgMQotZmkKLWlmIHRl c3QgLW4gIiRhY191bnJlY29nbml6ZWRfb3B0cyIgJiYgdGVzdCAiJGVuYWJsZV9vcHRpb25fY2hl Y2tpbmciICE9IG5vOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogV0FSTklORzogdW5yZWNvZ25pemVkIG9wdGlvbnM6ICRhY191bnJlY29nbml6ZWRfb3B0 cyIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1bnJlY29nbml6ZWQgb3B0aW9uczog JGFjX3VucmVjb2duaXplZF9vcHRzIiA+JjI7fQotZmkKLQpkaWZmIC0tZ2l0IGEvc3R1YmRvbS9j b25maWd1cmUgYi9zdHViZG9tL2NvbmZpZ3VyZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5k ZXggYmVlYjhkYjJlMS4uMDAwMDAwMDAwMAotLS0gYS9zdHViZG9tL2NvbmZpZ3VyZQorKysgL2Rl di9udWxsCkBAIC0xLDQ4NzAgKzAsMCBAQAotIyEgL2Jpbi9zaAotIyBHdWVzcyB2YWx1ZXMgZm9y IHN5c3RlbS1kZXBlbmRlbnQgdmFyaWFibGVzIGFuZCBjcmVhdGUgTWFrZWZpbGVzLgotIyBHZW5l cmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkgZm9yIFhlbiBIeXBlcnZpc29yIFN0dWIgRG9tYWlu cyA0LjEzLgotIwotIyBSZXBvcnQgYnVncyB0byA8eGVuLWRldmVsQGxpc3RzLnhlbi5vcmc+Lgot IwotIwotIyBDb3B5cmlnaHQgKEMpIDE5OTItMTk5NiwgMTk5OC0yMDEyIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotIwotIwotIyBUaGlzIGNvbmZpZ3VyZSBzY3JpcHQgaXMgZnJlZSBz b2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotIyBnaXZlcyB1bmxpbWl0ZWQg cGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuCi0jIyAtLS0tLS0t LS0tLS0tLS0tLS0tLSAjIwotIyMgTTRzaCBJbml0aWFsaXphdGlvbi4gIyMKLSMjIC0tLS0tLS0t LS0tLS0tLS0tLS0tICMjCi0KLSMgQmUgbW9yZSBCb3VybmUgY29tcGF0aWJsZQotRFVBTENBU0U9 MTsgZXhwb3J0IERVQUxDQVNFICMgZm9yIE1LUyBzaAotaWYgdGVzdCAtbiAiJHtaU0hfVkVSU0lP TitzZXR9IiAmJiAoZW11bGF0ZSBzaCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSAgZW11bGF0 ZSBzaAotICBOVUxMQ01EPToKLSAgIyBQcmUtNC4yIHZlcnNpb25zIG9mIFpzaCBkbyB3b3JkIHNw bGl0dGluZyBvbiAkezErIiRAIn0sIHdoaWNoCi0gICMgaXMgY29udHJhcnkgdG8gb3VyIHVzYWdl LiAgRGlzYWJsZSB0aGlzIGZlYXR1cmUuCi0gIGFsaWFzIC1nICckezErIiRAIn0nPSciJEAiJwot ICBzZXRvcHQgTk9fR0xPQl9TVUJTVAotZWxzZQotICBjYXNlIGAoc2V0IC1vKSAyPi9kZXYvbnVs bGAgaW4gIygKLSAgKnBvc2l4KikgOgotICAgIHNldCAtbyBwb3NpeCA7OyAjKAotICAqKSA6Ci0g ICAgIDs7Ci1lc2FjCi1maQotCi0KLWFzX25sPScKLScKLWV4cG9ydCBhc19ubAotIyBQcmludGlu ZyBhIGxvbmcgc3RyaW5nIGNyYXNoZXMgU29sYXJpcyA3IC91c3IvYmluL3ByaW50Zi4KLWFzX2Vj aG89J1xcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFwnCi1hc19l Y2hvPSRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8KLWFzX2VjaG89JGFz X2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvCi0jIFByZWZlciBh IGtzaCBzaGVsbCBidWlsdGluIG92ZXIgYW4gZXh0ZXJuYWwgcHJpbnRmIHByb2dyYW0gb24gU29s YXJpcywKLSMgYnV0IHdpdGhvdXQgd2FzdGluZyBmb3JrcyBmb3IgYmFzaCBvciB6c2guCi1pZiB0 ZXN0IC16ICIkQkFTSF9WRVJTSU9OJFpTSF9WRVJTSU9OIiBcCi0gICAgJiYgKHRlc3QgIlhgcHJp bnQgLXIgLS0gJGFzX2VjaG9gIiA9ICJYJGFzX2VjaG8iKSAyPi9kZXYvbnVsbDsgdGhlbgotICBh c19lY2hvPSdwcmludCAtciAtLScKLSAgYXNfZWNob19uPSdwcmludCAtcm4gLS0nCi1lbGlmICh0 ZXN0ICJYYHByaW50ZiAlcyAkYXNfZWNob2AiID0gIlgkYXNfZWNobyIpIDI+L2Rldi9udWxsOyB0 aGVuCi0gIGFzX2VjaG89J3ByaW50ZiAlc1xuJwotICBhc19lY2hvX249J3ByaW50ZiAlcycKLWVs c2UKLSAgaWYgdGVzdCAiWGAoL3Vzci91Y2IvZWNobyAtbiAtbiAkYXNfZWNobykgMj4vZGV2L251 bGxgIiA9ICJYLW4gJGFzX2VjaG8iOyB0aGVuCi0gICAgYXNfZWNob19ib2R5PSdldmFsIC91c3Iv dWNiL2VjaG8gLW4gIiQxJGFzX25sIicKLSAgICBhc19lY2hvX249Jy91c3IvdWNiL2VjaG8gLW4n Ci0gIGVsc2UKLSAgICBhc19lY2hvX2JvZHk9J2V2YWwgZXhwciAiWCQxIiA6ICJYXFwoLipcXCki JwotICAgIGFzX2VjaG9fbl9ib2R5PSdldmFsCi0gICAgICBhcmc9JDE7Ci0gICAgICBjYXNlICRh cmcgaW4gIygKLSAgICAgICoiJGFzX25sIiopCi0JZXhwciAiWCRhcmciIDogIlhcXCguKlxcKSRh c19ubCI7Ci0JYXJnPWBleHByICJYJGFyZyIgOiAiLiokYXNfbmxcXCguKlxcKSJgOzsKLSAgICAg IGVzYWM7Ci0gICAgICBleHByICJYJGFyZyIgOiAiWFxcKC4qXFwpIiB8IHRyIC1kICIkYXNfbmwi Ci0gICAgJwotICAgIGV4cG9ydCBhc19lY2hvX25fYm9keQotICAgIGFzX2VjaG9fbj0nc2ggLWMg JGFzX2VjaG9fbl9ib2R5IGFzX2VjaG8nCi0gIGZpCi0gIGV4cG9ydCBhc19lY2hvX2JvZHkKLSAg YXNfZWNobz0nc2ggLWMgJGFzX2VjaG9fYm9keSBhc19lY2hvJwotZmkKLQotIyBUaGUgdXNlciBp cyBhbHdheXMgcmlnaHQuCi1pZiB0ZXN0ICIke1BBVEhfU0VQQVJBVE9SK3NldH0iICE9IHNldDsg dGhlbgotICBQQVRIX1NFUEFSQVRPUj06Ci0gIChQQVRIPScvYmluOy9iaW4nOyBGUEFUSD0kUEFU SDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxICYmIHsKLSAgICAoUEFUSD0nL2JpbjovYmluJzsg RlBBVEg9JFBBVEg7IHNoIC1jIDopID4vZGV2L251bGwgMj4mMSB8fAotICAgICAgUEFUSF9TRVBB UkFUT1I9JzsnCi0gIH0KLWZpCi0KLQotIyBJRlMKLSMgV2UgbmVlZCBzcGFjZSwgdGFiIGFuZCBu ZXcgbGluZSwgaW4gcHJlY2lzZWx5IHRoYXQgb3JkZXIuICBRdW90aW5nIGlzCi0jIHRoZXJlIHRv IHByZXZlbnQgZWRpdG9ycyBmcm9tIGNvbXBsYWluaW5nIGFib3V0IHNwYWNlLXRhYi4KLSMgKElm IF9BU19QQVRIX1dBTEsgd2VyZSBjYWxsZWQgd2l0aCBJRlMgdW5zZXQsIGl0IHdvdWxkIGRpc2Fi bGUgd29yZAotIyBzcGxpdHRpbmcgYnkgc2V0dGluZyBJRlMgdG8gZW1wdHkgdmFsdWUuKQotSUZT PSIgIiIJJGFzX25sIgotCi0jIEZpbmQgd2hvIHdlIGFyZS4gIExvb2sgaW4gdGhlIHBhdGggaWYg d2UgY29udGFpbiBubyBkaXJlY3Rvcnkgc2VwYXJhdG9yLgotYXNfbXlzZWxmPQotY2FzZSAkMCBp biAjKCgKLSAgKltcXC9dKiApIGFzX215c2VsZj0kMCA7OwotICAqKSBhc19zYXZlX0lGUz0kSUZT OyBJRlM9JFBBVEhfU0VQQVJBVE9SCi1mb3IgYXNfZGlyIGluICRQQVRICi1kbwotICBJRlM9JGFz X3NhdmVfSUZTCi0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgdGVzdCAtciAi JGFzX2Rpci8kMCIgJiYgYXNfbXlzZWxmPSRhc19kaXIvJDAgJiYgYnJlYWsKLSAgZG9uZQotSUZT PSRhc19zYXZlX0lGUwotCi0gICAgIDs7Ci1lc2FjCi0jIFdlIGRpZCBub3QgZmluZCBvdXJzZWx2 ZXMsIG1vc3QgcHJvYmFibHkgd2Ugd2VyZSBydW4gYXMgYHNoIENPTU1BTkQnCi0jIGluIHdoaWNo IGNhc2Ugd2UgYXJlIG5vdCB0byBiZSBmb3VuZCBpbiB0aGUgcGF0aC4KLWlmIHRlc3QgIngkYXNf bXlzZWxmIiA9IHg7IHRoZW4KLSAgYXNfbXlzZWxmPSQwCi1maQotaWYgdGVzdCAhIC1mICIkYXNf bXlzZWxmIjsgdGhlbgotICAkYXNfZWNobyAiJGFzX215c2VsZjogZXJyb3I6IGNhbm5vdCBmaW5k IG15c2VsZjsgcmVydW4gd2l0aCBhbiBhYnNvbHV0ZSBmaWxlIG5hbWUiID4mMgotICBleGl0IDEK LWZpCi0KLSMgVW5zZXQgdmFyaWFibGVzIHRoYXQgd2UgZG8gbm90IG5lZWQgYW5kIHdoaWNoIGNh dXNlIGJ1Z3MgKGUuZy4gaW4KLSMgcHJlLTMuMCBVV0lOIGtzaCkuICBCdXQgZG8gbm90IGNhdXNl IGJ1Z3MgaW4gYmFzaCAyLjAxOyB0aGUgInx8IGV4aXQgMSIKLSMgc3VwcHJlc3NlcyBhbnkgIlNl Z21lbnRhdGlvbiBmYXVsdCIgbWVzc2FnZSB0aGVyZS4gICcoKCcgY291bGQKLSMgdHJpZ2dlciBh IGJ1ZyBpbiBwZGtzaCA1LjIuMTQuCi1mb3IgYXNfdmFyIGluIEJBU0hfRU5WIEVOViBNQUlMIE1B SUxQQVRICi1kbyBldmFsIHRlc3QgeFwkeyRhc192YXIrc2V0fSA9IHhzZXQgXAotICAmJiAoICh1 bnNldCAkYXNfdmFyKSB8fCBleGl0IDEpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCAkYXNfdmFy IHx8IDoKLWRvbmUKLVBTMT0nJCAnCi1QUzI9Jz4gJwotUFM0PScrICcKLQotIyBOTFMgbnVpc2Fu Y2VzLgotTENfQUxMPUMKLWV4cG9ydCBMQ19BTEwKLUxBTkdVQUdFPUMKLWV4cG9ydCBMQU5HVUFH RQotCi0jIENEUEFUSC4KLSh1bnNldCBDRFBBVEgpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCBD RFBBVEgKLQotIyBVc2UgYSBwcm9wZXIgaW50ZXJuYWwgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8g ZW5zdXJlIHdlIGRvbid0IGZhbGwKLSAgIyBpbnRvIGFuIGluZmluaXRlIGxvb3AsIGNvbnRpbnVv dXNseSByZS1leGVjdXRpbmcgb3Vyc2VsdmVzLgotICBpZiB0ZXN0IHgiJHtfYXNfY2FuX3JlZXhl Y30iICE9IHhubyAmJiB0ZXN0ICJ4JENPTkZJR19TSEVMTCIgIT0geDsgdGhlbgotICAgIF9hc19j YW5fcmVleGVjPW5vOyBleHBvcnQgX2FzX2Nhbl9yZWV4ZWM7Ci0gICAgIyBXZSBjYW5ub3QgeWV0 IGFzc3VtZSBhIGRlY2VudCBzaGVsbCwgc28gd2UgaGF2ZSB0byBwcm92aWRlIGEKLSMgbmV1dHJh bGl6YXRpb24gdmFsdWUgZm9yIHNoZWxscyB3aXRob3V0IHVuc2V0OyBhbmQgdGhpcyBhbHNvCi0j IHdvcmtzIGFyb3VuZCBzaGVsbHMgdGhhdCBjYW5ub3QgdW5zZXQgbm9uZXhpc3RlbnQgdmFyaWFi bGVzLgotIyBQcmVzZXJ2ZSAtdiBhbmQgLXggdG8gdGhlIHJlcGxhY2VtZW50IHNoZWxsLgotQkFT SF9FTlY9L2Rldi9udWxsCi1FTlY9L2Rldi9udWxsCi0odW5zZXQgQkFTSF9FTlYpID4vZGV2L251 bGwgMj4mMSAmJiB1bnNldCBCQVNIX0VOViBFTlYKLWNhc2UgJC0gaW4gIyAoKCgoCi0gICp2Kngq IHwgKngqdiogKSBhc19vcHRzPS12eCA7OwotICAqdiogKSBhc19vcHRzPS12IDs7Ci0gICp4KiAp IGFzX29wdHM9LXggOzsKLSAgKiApIGFzX29wdHM9IDs7Ci1lc2FjCi1leGVjICRDT05GSUdfU0hF TEwgJGFzX29wdHMgIiRhc19teXNlbGYiICR7MSsiJEAifQotIyBBZG1pdHRlZGx5LCB0aGlzIGlz IHF1aXRlIHBhcmFub2lkLCBzaW5jZSBhbGwgdGhlIGtub3duIHNoZWxscyBiYWlsCi0jIG91dCBh ZnRlciBhIGZhaWxlZCBgZXhlYycuCi0kYXNfZWNobyAiJDA6IGNvdWxkIG5vdCByZS1leGVjdXRl IHdpdGggJENPTkZJR19TSEVMTCIgPiYyCi1hc19mbl9leGl0IDI1NQotICBmaQotICAjIFdlIGRv bid0IHdhbnQgdGhpcyB0byBwcm9wYWdhdGUgdG8gb3RoZXIgc3VicHJvY2Vzc2VzLgotICAgICAg ICAgIHsgX2FzX2Nhbl9yZWV4ZWM9OyB1bnNldCBfYXNfY2FuX3JlZXhlYzt9Ci1pZiB0ZXN0ICJ4 JENPTkZJR19TSEVMTCIgPSB4OyB0aGVuCi0gIGFzX2JvdXJuZV9jb21wYXRpYmxlPSJpZiB0ZXN0 IC1uIFwiXCR7WlNIX1ZFUlNJT04rc2V0fVwiICYmIChlbXVsYXRlIHNoKSA+L2Rldi9udWxsIDI+ JjE7IHRoZW4gOgotICBlbXVsYXRlIHNoCi0gIE5VTExDTUQ9OgotICAjIFByZS00LjIgdmVyc2lv bnMgb2YgWnNoIGRvIHdvcmQgc3BsaXR0aW5nIG9uIFwkezErXCJcJEBcIn0sIHdoaWNoCi0gICMg aXMgY29udHJhcnkgdG8gb3VyIHVzYWdlLiAgRGlzYWJsZSB0aGlzIGZlYXR1cmUuCi0gIGFsaWFz IC1nICdcJHsxK1wiXCRAXCJ9Jz0nXCJcJEBcIicKLSAgc2V0b3B0IE5PX0dMT0JfU1VCU1QKLWVs c2UKLSAgY2FzZSBcYChzZXQgLW8pIDI+L2Rldi9udWxsXGAgaW4gIygKLSAgKnBvc2l4KikgOgot ICAgIHNldCAtbyBwb3NpeCA7OyAjKAotICAqKSA6Ci0gICAgIDs7Ci1lc2FjCi1maQotIgotICBh c19yZXF1aXJlZD0iYXNfZm5fcmV0dXJuICgpIHsgKGV4aXQgXCQxKTsgfQotYXNfZm5fc3VjY2Vz cyAoKSB7IGFzX2ZuX3JldHVybiAwOyB9Ci1hc19mbl9mYWlsdXJlICgpIHsgYXNfZm5fcmV0dXJu IDE7IH0KLWFzX2ZuX3JldF9zdWNjZXNzICgpIHsgcmV0dXJuIDA7IH0KLWFzX2ZuX3JldF9mYWls dXJlICgpIHsgcmV0dXJuIDE7IH0KLQotZXhpdGNvZGU9MAotYXNfZm5fc3VjY2VzcyB8fCB7IGV4 aXRjb2RlPTE7IGVjaG8gYXNfZm5fc3VjY2VzcyBmYWlsZWQuOyB9Ci1hc19mbl9mYWlsdXJlICYm IHsgZXhpdGNvZGU9MTsgZWNobyBhc19mbl9mYWlsdXJlIHN1Y2NlZWRlZC47IH0KLWFzX2ZuX3Jl dF9zdWNjZXNzIHx8IHsgZXhpdGNvZGU9MTsgZWNobyBhc19mbl9yZXRfc3VjY2VzcyBmYWlsZWQu OyB9Ci1hc19mbl9yZXRfZmFpbHVyZSAmJiB7IGV4aXRjb2RlPTE7IGVjaG8gYXNfZm5fcmV0X2Zh aWx1cmUgc3VjY2VlZGVkLjsgfQotaWYgKCBzZXQgeDsgYXNfZm5fcmV0X3N1Y2Nlc3MgeSAmJiB0 ZXN0IHggPSBcIlwkMVwiICk7IHRoZW4gOgotCi1lbHNlCi0gIGV4aXRjb2RlPTE7IGVjaG8gcG9z aXRpb25hbCBwYXJhbWV0ZXJzIHdlcmUgbm90IHNhdmVkLgotZmkKLXRlc3QgeFwkZXhpdGNvZGUg PSB4MCB8fCBleGl0IDEKLXRlc3QgLXggLyB8fCBleGl0IDEiCi0gIGFzX3N1Z2dlc3RlZD0iICBh c19saW5lbm9fMT0iO2FzX3N1Z2dlc3RlZD0kYXNfc3VnZ2VzdGVkJExJTkVOTzthc19zdWdnZXN0 ZWQ9JGFzX3N1Z2dlc3RlZCIgYXNfbGluZW5vXzFhPVwkTElORU5PCi0gIGFzX2xpbmVub18yPSI7 YXNfc3VnZ2VzdGVkPSRhc19zdWdnZXN0ZWQkTElORU5PO2FzX3N1Z2dlc3RlZD0kYXNfc3VnZ2Vz dGVkIiBhc19saW5lbm9fMmE9XCRMSU5FTk8KLSAgZXZhbCAndGVzdCBcInhcJGFzX2xpbmVub18x J1wkYXNfcnVuJ1wiICE9IFwieFwkYXNfbGluZW5vXzInXCRhc19ydW4nXCIgJiYKLSAgdGVzdCBc InhcYGV4cHIgXCRhc19saW5lbm9fMSdcJGFzX3J1bicgKyAxXGBcIiA9IFwieFwkYXNfbGluZW5v XzInXCRhc19ydW4nXCInIHx8IGV4aXQgMSIKLSAgaWYgKGV2YWwgIiRhc19yZXF1aXJlZCIpIDI+ L2Rldi9udWxsOyB0aGVuIDoKLSAgYXNfaGF2ZV9yZXF1aXJlZD15ZXMKLWVsc2UKLSAgYXNfaGF2 ZV9yZXF1aXJlZD1ubwotZmkKLSAgaWYgdGVzdCB4JGFzX2hhdmVfcmVxdWlyZWQgPSB4eWVzICYm IChldmFsICIkYXNfc3VnZ2VzdGVkIikgMj4vZGV2L251bGw7IHRoZW4gOgotCi1lbHNlCi0gIGFz X3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLWFzX2ZvdW5kPWZhbHNlCi1mb3Ig YXNfZGlyIGluIC9iaW4kUEFUSF9TRVBBUkFUT1IvdXNyL2JpbiRQQVRIX1NFUEFSQVRPUiRQQVRI Ci1kbwotICBJRlM9JGFzX3NhdmVfSUZTCi0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0u Ci0gIGFzX2ZvdW5kPToKLSAgY2FzZSAkYXNfZGlyIGluICMoCi0JIC8qKQotCSAgIGZvciBhc19i YXNlIGluIHNoIGJhc2gga3NoIHNoNTsgZG8KLQkgICAgICMgVHJ5IG9ubHkgc2hlbGxzIHRoYXQg ZXhpc3QsIHRvIHNhdmUgc2V2ZXJhbCBmb3Jrcy4KLQkgICAgIGFzX3NoZWxsPSRhc19kaXIvJGFz X2Jhc2UKLQkgICAgIGlmIHsgdGVzdCAtZiAiJGFzX3NoZWxsIiB8fCB0ZXN0IC1mICIkYXNfc2hl bGwuZXhlIjsgfSAmJgotCQkgICAgeyAkYXNfZWNobyAiJGFzX2JvdXJuZV9jb21wYXRpYmxlIiIk YXNfcmVxdWlyZWQiIHwgYXNfcnVuPWEgIiRhc19zaGVsbCI7IH0gMj4vZGV2L251bGw7IHRoZW4g OgotICBDT05GSUdfU0hFTEw9JGFzX3NoZWxsIGFzX2hhdmVfcmVxdWlyZWQ9eWVzCi0JCSAgIGlm IHsgJGFzX2VjaG8gIiRhc19ib3VybmVfY29tcGF0aWJsZSIiJGFzX3N1Z2dlc3RlZCIgfCBhc19y dW49YSAiJGFzX3NoZWxsIjsgfSAyPi9kZXYvbnVsbDsgdGhlbiA6Ci0gIGJyZWFrIDIKLWZpCi1m aQotCSAgIGRvbmU7OwotICAgICAgIGVzYWMKLSAgYXNfZm91bmQ9ZmFsc2UKLWRvbmUKLSRhc19m b3VuZCB8fCB7IGlmIHsgdGVzdCAtZiAiJFNIRUxMIiB8fCB0ZXN0IC1mICIkU0hFTEwuZXhlIjsg fSAmJgotCSAgICAgIHsgJGFzX2VjaG8gIiRhc19ib3VybmVfY29tcGF0aWJsZSIiJGFzX3JlcXVp cmVkIiB8IGFzX3J1bj1hICIkU0hFTEwiOyB9IDI+L2Rldi9udWxsOyB0aGVuIDoKLSAgQ09ORklH X1NIRUxMPSRTSEVMTCBhc19oYXZlX3JlcXVpcmVkPXllcwotZmk7IH0KLUlGUz0kYXNfc2F2ZV9J RlMKLQotCi0gICAgICBpZiB0ZXN0ICJ4JENPTkZJR19TSEVMTCIgIT0geDsgdGhlbiA6Ci0gIGV4 cG9ydCBDT05GSUdfU0hFTEwKLSAgICAgICAgICAgICAjIFdlIGNhbm5vdCB5ZXQgYXNzdW1lIGEg ZGVjZW50IHNoZWxsLCBzbyB3ZSBoYXZlIHRvIHByb3ZpZGUgYQotIyBuZXV0cmFsaXphdGlvbiB2 YWx1ZSBmb3Igc2hlbGxzIHdpdGhvdXQgdW5zZXQ7IGFuZCB0aGlzIGFsc28KLSMgd29ya3MgYXJv dW5kIHNoZWxscyB0aGF0IGNhbm5vdCB1bnNldCBub25leGlzdGVudCB2YXJpYWJsZXMuCi0jIFBy ZXNlcnZlIC12IGFuZCAteCB0byB0aGUgcmVwbGFjZW1lbnQgc2hlbGwuCi1CQVNIX0VOVj0vZGV2 L251bGwKLUVOVj0vZGV2L251bGwKLSh1bnNldCBCQVNIX0VOVikgPi9kZXYvbnVsbCAyPiYxICYm IHVuc2V0IEJBU0hfRU5WIEVOVgotY2FzZSAkLSBpbiAjICgoKCgKLSAgKnYqeCogfCAqeCp2KiAp IGFzX29wdHM9LXZ4IDs7Ci0gICp2KiApIGFzX29wdHM9LXYgOzsKLSAgKngqICkgYXNfb3B0cz0t eCA7OwotICAqICkgYXNfb3B0cz0gOzsKLWVzYWMKLWV4ZWMgJENPTkZJR19TSEVMTCAkYXNfb3B0 cyAiJGFzX215c2VsZiIgJHsxKyIkQCJ9Ci0jIEFkbWl0dGVkbHksIHRoaXMgaXMgcXVpdGUgcGFy YW5vaWQsIHNpbmNlIGFsbCB0aGUga25vd24gc2hlbGxzIGJhaWwKLSMgb3V0IGFmdGVyIGEgZmFp bGVkIGBleGVjJy4KLSRhc19lY2hvICIkMDogY291bGQgbm90IHJlLWV4ZWN1dGUgd2l0aCAkQ09O RklHX1NIRUxMIiA+JjIKLWV4aXQgMjU1Ci1maQotCi0gICAgaWYgdGVzdCB4JGFzX2hhdmVfcmVx dWlyZWQgPSB4bm87IHRoZW4gOgotICAkYXNfZWNobyAiJDA6IFRoaXMgc2NyaXB0IHJlcXVpcmVz IGEgc2hlbGwgbW9yZSBtb2Rlcm4gdGhhbiBhbGwiCi0gICRhc19lY2hvICIkMDogdGhlIHNoZWxs cyB0aGF0IEkgZm91bmQgb24geW91ciBzeXN0ZW0uIgotICBpZiB0ZXN0IHgke1pTSF9WRVJTSU9O K3NldH0gPSB4c2V0IDsgdGhlbgotICAgICRhc19lY2hvICIkMDogSW4gcGFydGljdWxhciwgenNo ICRaU0hfVkVSU0lPTiBoYXMgYnVncyBhbmQgc2hvdWxkIgotICAgICRhc19lY2hvICIkMDogYmUg dXBncmFkZWQgdG8genNoIDQuMy40IG9yIGxhdGVyLiIKLSAgZWxzZQotICAgICRhc19lY2hvICIk MDogUGxlYXNlIHRlbGwgYnVnLWF1dG9jb25mQGdudS5vcmcgYW5kCi0kMDogeGVuLWRldmVsQGxp c3RzLnhlbi5vcmcgYWJvdXQgeW91ciBzeXN0ZW0sIGluY2x1ZGluZwotJDA6IGFueSBlcnJvciBw b3NzaWJseSBvdXRwdXQgYmVmb3JlIHRoaXMgbWVzc2FnZS4gVGhlbgotJDA6IGluc3RhbGwgYSBt b2Rlcm4gc2hlbGwsIG9yIG1hbnVhbGx5IHJ1biB0aGUgc2NyaXB0Ci0kMDogdW5kZXIgc3VjaCBh IHNoZWxsIGlmIHlvdSBkbyBoYXZlIG9uZS4iCi0gIGZpCi0gIGV4aXQgMQotZmkKLWZpCi1maQot U0hFTEw9JHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0KLWV4cG9ydCBTSEVMTAotIyBVbnNldCBtb3Jl IHZhcmlhYmxlcyBrbm93biB0byBpbnRlcmZlcmUgd2l0aCBiZWhhdmlvciBvZiBjb21tb24gdG9v bHMuCi1DTElDT0xPUl9GT1JDRT0gR1JFUF9PUFRJT05TPQotdW5zZXQgQ0xJQ09MT1JfRk9SQ0Ug R1JFUF9PUFRJT05TCi0KLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIyMgTTRzaCBTaGVs bCBGdW5jdGlvbnMuICMjCi0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLSMgYXNfZm5fdW5z ZXQgVkFSCi0jIC0tLS0tLS0tLS0tLS0tLQotIyBQb3J0YWJseSB1bnNldCBWQVIuCi1hc19mbl91 bnNldCAoKQotewotICB7IGV2YWwgJDE9OyB1bnNldCAkMTt9Ci19Ci1hc191bnNldD1hc19mbl91 bnNldAotCi0jIGFzX2ZuX3NldF9zdGF0dXMgU1RBVFVTCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCi0jIFNldCAkPyB0byBTVEFUVVMsIHdpdGhvdXQgZm9ya2luZy4KLWFzX2ZuX3NldF9zdGF0 dXMgKCkKLXsKLSAgcmV0dXJuICQxCi19ICMgYXNfZm5fc2V0X3N0YXR1cwotCi0jIGFzX2ZuX2V4 aXQgU1RBVFVTCi0jIC0tLS0tLS0tLS0tLS0tLS0tCi0jIEV4aXQgdGhlIHNoZWxsIHdpdGggU1RB VFVTLCBldmVuIGluIGEgInRyYXAgMCIgb3IgInNldCAtZSIgY29udGV4dC4KLWFzX2ZuX2V4aXQg KCkKLXsKLSAgc2V0ICtlCi0gIGFzX2ZuX3NldF9zdGF0dXMgJDEKLSAgZXhpdCAkMQotfSAjIGFz X2ZuX2V4aXQKLQotIyBhc19mbl9ta2Rpcl9wCi0jIC0tLS0tLS0tLS0tLS0KLSMgQ3JlYXRlICIk YXNfZGlyIiBhcyBhIGRpcmVjdG9yeSwgaW5jbHVkaW5nIHBhcmVudHMgaWYgbmVjZXNzYXJ5Lgot YXNfZm5fbWtkaXJfcCAoKQotewotCi0gIGNhc2UgJGFzX2RpciBpbiAjKAotICAtKikgYXNfZGly PS4vJGFzX2Rpcjs7Ci0gIGVzYWMKLSAgdGVzdCAtZCAiJGFzX2RpciIgfHwgZXZhbCAkYXNfbWtk aXJfcCB8fCB7Ci0gICAgYXNfZGlycz0KLSAgICB3aGlsZSA6OyBkbwotICAgICAgY2FzZSAkYXNf ZGlyIGluICMoCi0gICAgICAqXCcqKSBhc19xZGlyPWAkYXNfZWNobyAiJGFzX2RpciIgfCBzZWQg InMvJy8nXFxcXFxcXFwnJy9nImA7OyAjJygKLSAgICAgICopIGFzX3FkaXI9JGFzX2Rpcjs7Ci0g ICAgICBlc2FjCi0gICAgICBhc19kaXJzPSInJGFzX3FkaXInICRhc19kaXJzIgotICAgICAgYXNf ZGlyPWAkYXNfZGlybmFtZSAtLSAiJGFzX2RpciIgfHwKLSRhc19leHByIFgiJGFzX2RpciIgOiAn WFwoLipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwKLQkgWCIkYXNfZGlyIiA6ICdYXCgvL1wp W14vXScgXHwgXAotCSBYIiRhc19kaXIiIDogJ1hcKC8vXCkkJyBcfCBcCi0JIFgiJGFzX2RpciIg OiAnWFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8Ci0kYXNfZWNobyBYIiRhc19kaXIiIHwKLSAg ICBzZWQgJy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQvewotCSAgICBzLy9cMS8KLQkg ICAgcQotCSAgfQotCSAgL15YXChcL1wvXClbXi9dLiovewotCSAgICBzLy9cMS8KLQkgICAgcQot CSAgfQotCSAgL15YXChcL1wvXCkkL3sKLQkgICAgcy8vXDEvCi0JICAgIHEKLQkgIH0KLQkgIC9e WFwoXC9cKS4qL3sKLQkgICAgcy8vXDEvCi0JICAgIHEKLQkgIH0KLQkgIHMvLiovLi87IHEnYAot ICAgICAgdGVzdCAtZCAiJGFzX2RpciIgJiYgYnJlYWsKLSAgICBkb25lCi0gICAgdGVzdCAteiAi JGFzX2RpcnMiIHx8IGV2YWwgIm1rZGlyICRhc19kaXJzIgotICB9IHx8IHRlc3QgLWQgIiRhc19k aXIiIHx8IGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgY3JlYXRlIGRpcmVjdG9yeSAkYXNfZGlyIgot Ci0KLX0gIyBhc19mbl9ta2Rpcl9wCi0KLSMgYXNfZm5fZXhlY3V0YWJsZV9wIEZJTEUKLSMgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgVGVzdCBpZiBGSUxFIGlzIGFuIGV4ZWN1dGFibGUgcmVn dWxhciBmaWxlLgotYXNfZm5fZXhlY3V0YWJsZV9wICgpCi17Ci0gIHRlc3QgLWYgIiQxIiAmJiB0 ZXN0IC14ICIkMSIKLX0gIyBhc19mbl9leGVjdXRhYmxlX3AKLSMgYXNfZm5fYXBwZW5kIFZBUiBW QUxVRQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEFwcGVuZCB0aGUgdGV4dCBpbiBWQUxV RSB0byB0aGUgZW5kIG9mIHRoZSBkZWZpbml0aW9uIGNvbnRhaW5lZCBpbiBWQVIuIFRha2UKLSMg YWR2YW50YWdlIG9mIGFueSBzaGVsbCBvcHRpbWl6YXRpb25zIHRoYXQgYWxsb3cgYW1vcnRpemVk IGxpbmVhciBncm93dGggb3ZlcgotIyByZXBlYXRlZCBhcHBlbmRzLCBpbnN0ZWFkIG9mIHRoZSB0 eXBpY2FsIHF1YWRyYXRpYyBncm93dGggcHJlc2VudCBpbiBuYWl2ZQotIyBpbXBsZW1lbnRhdGlv bnMuCi1pZiAoZXZhbCAiYXNfdmFyPTE7IGFzX3Zhcis9MjsgdGVzdCB4XCRhc192YXIgPSB4MTIi KSAyPi9kZXYvbnVsbDsgdGhlbiA6Ci0gIGV2YWwgJ2FzX2ZuX2FwcGVuZCAoKQotICB7Ci0gICAg ZXZhbCAkMSs9XCQyCi0gIH0nCi1lbHNlCi0gIGFzX2ZuX2FwcGVuZCAoKQotICB7Ci0gICAgZXZh bCAkMT1cJCQxXCQyCi0gIH0KLWZpICMgYXNfZm5fYXBwZW5kCi0KLSMgYXNfZm5fYXJpdGggQVJH Li4uCi0jIC0tLS0tLS0tLS0tLS0tLS0tLQotIyBQZXJmb3JtIGFyaXRobWV0aWMgZXZhbHVhdGlv biBvbiB0aGUgQVJHcywgYW5kIHN0b3JlIHRoZSByZXN1bHQgaW4gdGhlCi0jIGdsb2JhbCAkYXNf dmFsLiBUYWtlIGFkdmFudGFnZSBvZiBzaGVsbHMgdGhhdCBjYW4gYXZvaWQgZm9ya3MuIFRoZSBh cmd1bWVudHMKLSMgbXVzdCBiZSBwb3J0YWJsZSBhY3Jvc3MgJCgoKSkgYW5kIGV4cHIuCi1pZiAo ZXZhbCAidGVzdCBcJCgoIDEgKyAxICkpID0gMiIpIDI+L2Rldi9udWxsOyB0aGVuIDoKLSAgZXZh bCAnYXNfZm5fYXJpdGggKCkKLSAgewotICAgIGFzX3ZhbD0kKCggJCogKSkKLSAgfScKLWVsc2UK LSAgYXNfZm5fYXJpdGggKCkKLSAgewotICAgIGFzX3ZhbD1gZXhwciAiJEAiIHx8IHRlc3QgJD8g LWVxIDFgCi0gIH0KLWZpICMgYXNfZm5fYXJpdGgKLQotCi0jIGFzX2ZuX2Vycm9yIFNUQVRVUyBF UlJPUiBbTElORU5PIExPR19GRF0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQotIyBPdXRwdXQgImBiYXNlbmFtZSAkMGA6IGVycm9yOiBFUlJPUiIgdG8gc3RkZXJy LiBJZiBMSU5FTk8gYW5kIExPR19GRCBhcmUKLSMgcHJvdmlkZWQsIGFsc28gb3V0cHV0IHRoZSBl cnJvciB0byBMT0dfRkQsIHJlZmVyZW5jaW5nIExJTkVOTy4gVGhlbiBleGl0IHRoZQotIyBzY3Jp cHQgd2l0aCBTVEFUVVMsIHVzaW5nIDEgaWYgdGhhdCB3YXMgMC4KLWFzX2ZuX2Vycm9yICgpCi17 Ci0gIGFzX3N0YXR1cz0kMTsgdGVzdCAkYXNfc3RhdHVzIC1lcSAwICYmIGFzX3N0YXR1cz0xCi0g IGlmIHRlc3QgIiQ0IjsgdGhlbgotICAgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDMifSBhc19s aW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKLSAgICAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogJDIiID4mJDQKLSAgZmkKLSAg JGFzX2VjaG8gIiRhc19tZTogZXJyb3I6ICQyIiA+JjIKLSAgYXNfZm5fZXhpdCAkYXNfc3RhdHVz Ci19ICMgYXNfZm5fZXJyb3IKLQotaWYgZXhwciBhIDogJ1woYVwpJyA+L2Rldi9udWxsIDI+JjEg JiYKLSAgIHRlc3QgIlhgZXhwciAwMDAwMSA6ICcuKlwoLi4uXCknYCIgPSBYMDAxOyB0aGVuCi0g IGFzX2V4cHI9ZXhwcgotZWxzZQotICBhc19leHByPWZhbHNlCi1maQotCi1pZiAoYmFzZW5hbWUg LS0gLykgPi9kZXYvbnVsbCAyPiYxICYmIHRlc3QgIlhgYmFzZW5hbWUgLS0gLyAyPiYxYCIgPSAi WC8iOyB0aGVuCi0gIGFzX2Jhc2VuYW1lPWJhc2VuYW1lCi1lbHNlCi0gIGFzX2Jhc2VuYW1lPWZh bHNlCi1maQotCi1pZiAoYXNfZGlyPWBkaXJuYW1lIC0tIC9gICYmIHRlc3QgIlgkYXNfZGlyIiA9 IFgvKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSAgYXNfZGlybmFtZT1kaXJuYW1lCi1lbHNlCi0g IGFzX2Rpcm5hbWU9ZmFsc2UKLWZpCi0KLWFzX21lPWAkYXNfYmFzZW5hbWUgLS0gIiQwIiB8fAot JGFzX2V4cHIgWC8iJDAiIDogJy4qL1woW14vXVteL10qXCkvKiQnIFx8IFwKLQkgWCIkMCIgOiAn WFwoLy9cKSQnIFx8IFwKLQkgWCIkMCIgOiAnWFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8Ci0k YXNfZWNobyBYLyIkMCIgfAotICAgIHNlZCAnL14uKlwvXChbXi9dW14vXSpcKVwvKiQvewotCSAg ICBzLy9cMS8KLQkgICAgcQotCSAgfQotCSAgL15YXC9cKFwvXC9cKSQvewotCSAgICBzLy9cMS8K LQkgICAgcQotCSAgfQotCSAgL15YXC9cKFwvXCkuKi97Ci0JICAgIHMvL1wxLwotCSAgICBxCi0J ICB9Ci0JICBzLy4qLy4vOyBxJ2AKLQotIyBBdm9pZCBkZXBlbmRpbmcgdXBvbiBDaGFyYWN0ZXIg UmFuZ2VzLgotYXNfY3JfbGV0dGVycz0nYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonCi1hc19j cl9MRVRURVJTPSdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicKLWFzX2NyX0xldHRlcnM9JGFz X2NyX2xldHRlcnMkYXNfY3JfTEVUVEVSUwotYXNfY3JfZGlnaXRzPScwMTIzNDU2Nzg5JwotYXNf Y3JfYWxudW09JGFzX2NyX0xldHRlcnMkYXNfY3JfZGlnaXRzCi0KLQotICBhc19saW5lbm9fMT0k TElORU5PIGFzX2xpbmVub18xYT0kTElORU5PCi0gIGFzX2xpbmVub18yPSRMSU5FTk8gYXNfbGlu ZW5vXzJhPSRMSU5FTk8KLSAgZXZhbCAndGVzdCAieCRhc19saW5lbm9fMSckYXNfcnVuJyIgIT0g IngkYXNfbGluZW5vXzInJGFzX3J1biciICYmCi0gIHRlc3QgInhgZXhwciAkYXNfbGluZW5vXzEn JGFzX3J1bicgKyAxYCIgPSAieCRhc19saW5lbm9fMickYXNfcnVuJyInIHx8IHsKLSAgIyBCbGFt ZSBMZWUgRS4gTWNNYWhvbiAoMTkzMS0xOTg5KSBmb3Igc2VkJ3Mgc3ludGF4LiAgOi0pCi0gIHNl ZCAtbiAnCi0gICAgcAotICAgIC9bJF1MSU5FTk8vPQotICAnIDwkYXNfbXlzZWxmIHwKLSAgICBz ZWQgJwotICAgICAgcy9bJF1MSU5FTk8uKi8mLS8KLSAgICAgIHQgbGluZW5vCi0gICAgICBiCi0g ICAgICA6bGluZW5vCi0gICAgICBOCi0gICAgICA6bG9vcAotICAgICAgcy9bJF1MSU5FTk9cKFte JyRhc19jcl9hbG51bSdfXS4qXG5cKVwoLipcKS9cMlwxXDIvCi0gICAgICB0IGxvb3AKLSAgICAg IHMvLVxuLiovLwotICAgICcgPiRhc19tZS5saW5lbm8gJiYKLSAgY2htb2QgK3ggIiRhc19tZS5s aW5lbm8iIHx8Ci0gICAgeyAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGNyZWF0ZSAk YXNfbWUubGluZW5vOyByZXJ1biB3aXRoIGEgUE9TSVggc2hlbGwiID4mMjsgYXNfZm5fZXhpdCAx OyB9Ci0KLSAgIyBJZiB3ZSBoYWQgdG8gcmUtZXhlY3V0ZSB3aXRoICRDT05GSUdfU0hFTEwsIHdl J3JlIGVuc3VyZWQgdG8gaGF2ZQotICAjIGFscmVhZHkgZG9uZSB0aGF0LCBzbyBlbnN1cmUgd2Ug ZG9uJ3QgdHJ5IHRvIGRvIHNvIGFnYWluIGFuZCBmYWxsCi0gICMgaW4gYW4gaW5maW5pdGUgbG9v cC4gIFRoaXMgaGFzIGFscmVhZHkgaGFwcGVuZWQgaW4gcHJhY3RpY2UuCi0gIF9hc19jYW5fcmVl eGVjPW5vOyBleHBvcnQgX2FzX2Nhbl9yZWV4ZWMKLSAgIyBEb24ndCB0cnkgdG8gZXhlYyBhcyBp dCBjaGFuZ2VzICRbMF0sIGNhdXNpbmcgYWxsIHNvcnQgb2YgcHJvYmxlbXMKLSAgIyAodGhlIGRp cm5hbWUgb2YgJFswXSBpcyBub3QgdGhlIHBsYWNlIHdoZXJlIHdlIG1pZ2h0IGZpbmQgdGhlCi0g ICMgb3JpZ2luYWwgYW5kIHNvIG9uLiAgQXV0b2NvbmYgaXMgZXNwZWNpYWxseSBzZW5zaXRpdmUg dG8gdGhpcykuCi0gIC4gIi4vJGFzX21lLmxpbmVubyIKLSAgIyBFeGl0IHN0YXR1cyBpcyB0aGF0 IG9mIHRoZSBsYXN0IGNvbW1hbmQuCi0gIGV4aXQKLX0KLQotRUNIT19DPSBFQ0hPX049IEVDSE9f VD0KLWNhc2UgYGVjaG8gLW4geGAgaW4gIygoKCgoCi0tbiopCi0gIGNhc2UgYGVjaG8gJ3h5XGMn YCBpbgotICAqYyopIEVDSE9fVD0nCSc7OwkjIEVDSE9fVCBpcyBzaW5nbGUgdGFiIGNoYXJhY3Rl ci4KLSAgeHkpICBFQ0hPX0M9J1xjJzs7Ci0gICopICAgZWNobyBgZWNobyBrc2g4OCBidWcgb24g QUlYIDYuMWAgPiAvZGV2L251bGwKLSAgICAgICBFQ0hPX1Q9JwknOzsKLSAgZXNhYzs7Ci0qKQot ICBFQ0hPX049Jy1uJzs7Ci1lc2FjCi0KLXJtIC1mIGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5m aWxlCi1pZiB0ZXN0IC1kIGNvbmYkJC5kaXI7IHRoZW4KLSAgcm0gLWYgY29uZiQkLmRpci9jb25m JCQuZmlsZQotZWxzZQotICBybSAtZiBjb25mJCQuZGlyCi0gIG1rZGlyIGNvbmYkJC5kaXIgMj4v ZGV2L251bGwKLWZpCi1pZiAoZWNobyA+Y29uZiQkLmZpbGUpIDI+L2Rldi9udWxsOyB0aGVuCi0g IGlmIGxuIC1zIGNvbmYkJC5maWxlIGNvbmYkJCAyPi9kZXYvbnVsbDsgdGhlbgotICAgIGFzX2xu X3M9J2xuIC1zJwotICAgICMgLi4uIGJ1dCB0aGVyZSBhcmUgdHdvIGdvdGNoYXM6Ci0gICAgIyAx KSBPbiBNU1lTLCBib3RoIGBsbiAtcyBmaWxlIGRpcicgYW5kIGBsbiBmaWxlIGRpcicgZmFpbC4K LSAgICAjIDIpIERKR1BQIDwgMi4wNCBoYXMgbm8gc3ltbGlua3M7IGBsbiAtcycgY3JlYXRlcyBh IHdyYXBwZXIgZXhlY3V0YWJsZS4KLSAgICAjIEluIGJvdGggY2FzZXMsIHdlIGhhdmUgdG8gZGVm YXVsdCB0byBgY3AgLXBSJy4KLSAgICBsbiAtcyBjb25mJCQuZmlsZSBjb25mJCQuZGlyIDI+L2Rl di9udWxsICYmIHRlc3QgISAtZiBjb25mJCQuZXhlIHx8Ci0gICAgICBhc19sbl9zPSdjcCAtcFIn Ci0gIGVsaWYgbG4gY29uZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVuCi0gICAgYXNf bG5fcz1sbgotICBlbHNlCi0gICAgYXNfbG5fcz0nY3AgLXBSJwotICBmaQotZWxzZQotICBhc19s bl9zPSdjcCAtcFInCi1maQotcm0gLWYgY29uZiQkIGNvbmYkJC5leGUgY29uZiQkLmRpci9jb25m JCQuZmlsZSBjb25mJCQuZmlsZQotcm1kaXIgY29uZiQkLmRpciAyPi9kZXYvbnVsbAotCi1pZiBt a2RpciAtcCAuIDI+L2Rldi9udWxsOyB0aGVuCi0gIGFzX21rZGlyX3A9J21rZGlyIC1wICIkYXNf ZGlyIicKLWVsc2UKLSAgdGVzdCAtZCAuLy1wICYmIHJtZGlyIC4vLXAKLSAgYXNfbWtkaXJfcD1m YWxzZQotZmkKLQotYXNfdGVzdF94PSd0ZXN0IC14JwotYXNfZXhlY3V0YWJsZV9wPWFzX2ZuX2V4 ZWN1dGFibGVfcAotCi0jIFNlZCBleHByZXNzaW9uIHRvIG1hcCBhIHN0cmluZyBvbnRvIGEgdmFs aWQgQ1BQIG5hbWUuCi1hc190cl9jcHA9ImV2YWwgc2VkICd5JSokYXNfY3JfbGV0dGVycyVQJGFz X2NyX0xFVFRFUlMlO3MlW15fJGFzX2NyX2FsbnVtXSVfJWcnIgotCi0jIFNlZCBleHByZXNzaW9u IHRvIG1hcCBhIHN0cmluZyBvbnRvIGEgdmFsaWQgdmFyaWFibGUgbmFtZS4KLWFzX3RyX3NoPSJl dmFsIHNlZCAneSUqKyVwcCU7cyVbXl8kYXNfY3JfYWxudW1dJV8lZyciCi0KLQotdGVzdCAtbiAi JERKRElSIiB8fCBleGVjIDc8JjAgPC9kZXYvbnVsbAotZXhlYyA2PiYxCi0KLSMgTmFtZSBvZiB0 aGUgaG9zdC4KLSMgaG9zdG5hbWUgb24gc29tZSBzeXN0ZW1zIChTVlIzLjIsIG9sZCBHTlUvTGlu dXgpIHJldHVybnMgYSBib2d1cyBleGl0IHN0YXR1cywKLSMgc28gdW5hbWUgZ2V0cyBydW4gdG9v LgotYWNfaG9zdG5hbWU9YChob3N0bmFtZSB8fCB1bmFtZSAtbikgMj4vZGV2L251bGwgfCBzZWQg MXFgCi0KLSMKLSMgSW5pdGlhbGl6YXRpb25zLgotIwotYWNfZGVmYXVsdF9wcmVmaXg9L3Vzci9s b2NhbAotYWNfY2xlYW5fZmlsZXM9Ci1hY19jb25maWdfbGlib2JqX2Rpcj0uCi1MSUJPQkpTPQot Y3Jvc3NfY29tcGlsaW5nPW5vCi1zdWJkaXJzPQotTUZMQUdTPQotTUFLRUZMQUdTPQotCi0jIElk ZW50aXR5IG9mIHRoaXMgcGFja2FnZS4KLVBBQ0tBR0VfTkFNRT0nWGVuIEh5cGVydmlzb3IgU3R1 YiBEb21haW5zJwotUEFDS0FHRV9UQVJOQU1FPSd4ZW4nCi1QQUNLQUdFX1ZFUlNJT049JzQuMTMn Ci1QQUNLQUdFX1NUUklORz0nWGVuIEh5cGVydmlzb3IgU3R1YiBEb21haW5zIDQuMTMnCi1QQUNL QUdFX0JVR1JFUE9SVD0neGVuLWRldmVsQGxpc3RzLnhlbi5vcmcnCi1QQUNLQUdFX1VSTD0naHR0 cDovL3d3dy54ZW4ub3JnLycKLQotYWNfdW5pcXVlX2ZpbGU9InhlbnN0b3JlLW1pbmlvcy5jZmci Ci1hY19zdWJzdF92YXJzPSdMVExJQk9CSlMKLUxJQk9CSlMKLVNUVUJET01fVU5JTlNUQUxMCi1T VFVCRE9NX0lOU1RBTEwKLVNUVUJET01fQlVJTEQKLVNUVUJET01fVEFSR0VUUwotaW9lbXUKLXZ0 cG1tZ3IKLXZ0cG0KLVRQTUVNVV9WRVJTSU9OCi1UUE1FTVVfVVJMCi1QT0xBUlNTTF9WRVJTSU9O Ci1QT0xBUlNTTF9VUkwKLUdNUF9WRVJTSU9OCi1HTVBfVVJMCi1PQ0FNTF9WRVJTSU9OCi1PQ0FN TF9VUkwKLUdSVUJfVkVSU0lPTgotR1JVQl9VUkwKLUxXSVBfVkVSU0lPTgotTFdJUF9VUkwKLU5F V0xJQl9WRVJTSU9OCi1ORVdMSUJfVVJMCi1MSUJQQ0lfVkVSU0lPTgotTElCUENJX1VSTAotWkxJ Ql9WRVJTSU9OCi1aTElCX1VSTAotSU5TVEFMTF9EQVRBCi1JTlNUQUxMX1NDUklQVAotSU5TVEFM TF9QUk9HUkFNCi1TRVRfTUFLRQotT0JKRVhUCi1FWEVFWFQKLWFjX2N0X0NDCi1DUFBGTEFHUwot TERGTEFHUwotQ0ZMQUdTCi1DQwotRkVUQ0hFUgotRlRQCi1GQUxTRQotV0dFVAotQ01BS0UKLWV4 dGZpbGVzCi1kZWJ1ZwoteGVuc3RvcmUKLWdydWIKLWNhbWwKLWMKLWhvc3Rfb3MKLWhvc3RfdmVu ZG9yCi1ob3N0X2NwdQotaG9zdAotYnVpbGRfb3MKLWJ1aWxkX3ZlbmRvcgotYnVpbGRfY3B1Ci1i dWlsZAotdGFyZ2V0X2FsaWFzCi1ob3N0X2FsaWFzCi1idWlsZF9hbGlhcwotTElCUwotRUNIT19U Ci1FQ0hPX04KLUVDSE9fQwotREVGUwotbWFuZGlyCi1sb2NhbGVkaXIKLWxpYmRpcgotcHNkaXIK LXBkZmRpcgotZHZpZGlyCi1odG1sZGlyCi1pbmZvZGlyCi1kb2NkaXIKLW9sZGluY2x1ZGVkaXIK LWluY2x1ZGVkaXIKLXJ1bnN0YXRlZGlyCi1sb2NhbHN0YXRlZGlyCi1zaGFyZWRzdGF0ZWRpcgot c3lzY29uZmRpcgotZGF0YWRpcgotZGF0YXJvb3RkaXIKLWxpYmV4ZWNkaXIKLXNiaW5kaXIKLWJp bmRpcgotcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZQotcHJlZml4Ci1leGVjX3ByZWZpeAotUEFDS0FH RV9VUkwKLVBBQ0tBR0VfQlVHUkVQT1JUCi1QQUNLQUdFX1NUUklORwotUEFDS0FHRV9WRVJTSU9O Ci1QQUNLQUdFX1RBUk5BTUUKLVBBQ0tBR0VfTkFNRQotUEFUSF9TRVBBUkFUT1IKLVNIRUxMJwot YWNfc3Vic3RfZmlsZXM9JycKLWFjX3VzZXJfb3B0cz0nCi1lbmFibGVfb3B0aW9uX2NoZWNraW5n Ci1lbmFibGVfaW9lbXVfc3R1YmRvbQotZW5hYmxlX2Nfc3R1YmRvbQotZW5hYmxlX2NhbWxfc3R1 YmRvbQotZW5hYmxlX3B2X2dydWIKLWVuYWJsZV94ZW5zdG9yZV9zdHViZG9tCi1lbmFibGVfdnRw bV9zdHViZG9tCi1lbmFibGVfdnRwbW1ncl9zdHViZG9tCi1lbmFibGVfcWVtdV90cmFkaXRpb25h bAotZW5hYmxlX2RlYnVnCi1lbmFibGVfZXh0ZmlsZXMKLScKLSAgICAgIGFjX3ByZWNpb3VzX3Zh cnM9J2J1aWxkX2FsaWFzCi1ob3N0X2FsaWFzCi10YXJnZXRfYWxpYXMKLUNNQUtFCi1DQwotQ0ZM QUdTCi1MREZMQUdTCi1MSUJTCi1DUFBGTEFHUwotWkxJQl9VUkwKLUxJQlBDSV9VUkwKLU5FV0xJ Ql9VUkwKLUxXSVBfVVJMCi1HUlVCX1VSTAotT0NBTUxfVVJMCi1HTVBfVVJMCi1QT0xBUlNTTF9V UkwKLVRQTUVNVV9VUkwnCi0KLQotIyBJbml0aWFsaXplIHNvbWUgdmFyaWFibGVzIHNldCBieSBv cHRpb25zLgotYWNfaW5pdF9oZWxwPQotYWNfaW5pdF92ZXJzaW9uPWZhbHNlCi1hY191bnJlY29n bml6ZWRfb3B0cz0KLWFjX3VucmVjb2duaXplZF9zZXA9Ci0jIFRoZSB2YXJpYWJsZXMgaGF2ZSB0 aGUgc2FtZSBuYW1lcyBhcyB0aGUgb3B0aW9ucywgd2l0aAotIyBkYXNoZXMgY2hhbmdlZCB0byB1 bmRlcmxpbmVzLgotY2FjaGVfZmlsZT0vZGV2L251bGwKLWV4ZWNfcHJlZml4PU5PTkUKLW5vX2Ny ZWF0ZT0KLW5vX3JlY3Vyc2lvbj0KLXByZWZpeD1OT05FCi1wcm9ncmFtX3ByZWZpeD1OT05FCi1w cm9ncmFtX3N1ZmZpeD1OT05FCi1wcm9ncmFtX3RyYW5zZm9ybV9uYW1lPXMseCx4LAotc2lsZW50 PQotc2l0ZT0KLXNyY2Rpcj0KLXZlcmJvc2U9Ci14X2luY2x1ZGVzPU5PTkUKLXhfbGlicmFyaWVz PU5PTkUKLQotIyBJbnN0YWxsYXRpb24gZGlyZWN0b3J5IG9wdGlvbnMuCi0jIFRoZXNlIGFyZSBs ZWZ0IHVuZXhwYW5kZWQgc28gdXNlcnMgY2FuICJtYWtlIGluc3RhbGwgZXhlY19wcmVmaXg9L2Zv byIKLSMgYW5kIGFsbCB0aGUgdmFyaWFibGVzIHRoYXQgYXJlIHN1cHBvc2VkIHRvIGJlIGJhc2Vk IG9uIGV4ZWNfcHJlZml4Ci0jIGJ5IGRlZmF1bHQgd2lsbCBhY3R1YWxseSBjaGFuZ2UuCi0jIFVz ZSBicmFjZXMgaW5zdGVhZCBvZiBwYXJlbnMgYmVjYXVzZSBzaCwgcGVybCwgZXRjLiBhbHNvIGFj Y2VwdCB0aGVtLgotIyAoVGhlIGxpc3QgZm9sbG93cyB0aGUgc2FtZSBvcmRlciBhcyB0aGUgR05V IENvZGluZyBTdGFuZGFyZHMuKQotYmluZGlyPScke2V4ZWNfcHJlZml4fS9iaW4nCi1zYmluZGly PScke2V4ZWNfcHJlZml4fS9zYmluJwotbGliZXhlY2Rpcj0nJHtleGVjX3ByZWZpeH0vbGliZXhl YycKLWRhdGFyb290ZGlyPScke3ByZWZpeH0vc2hhcmUnCi1kYXRhZGlyPScke2RhdGFyb290ZGly fScKLXN5c2NvbmZkaXI9JyR7cHJlZml4fS9ldGMnCi1zaGFyZWRzdGF0ZWRpcj0nJHtwcmVmaXh9 L2NvbScKLWxvY2Fsc3RhdGVkaXI9JyR7cHJlZml4fS92YXInCi1ydW5zdGF0ZWRpcj0nJHtsb2Nh bHN0YXRlZGlyfS9ydW4nCi1pbmNsdWRlZGlyPScke3ByZWZpeH0vaW5jbHVkZScKLW9sZGluY2x1 ZGVkaXI9Jy91c3IvaW5jbHVkZScKLWRvY2Rpcj0nJHtkYXRhcm9vdGRpcn0vZG9jLyR7UEFDS0FH RV9UQVJOQU1FfScKLWluZm9kaXI9JyR7ZGF0YXJvb3RkaXJ9L2luZm8nCi1odG1sZGlyPScke2Rv Y2Rpcn0nCi1kdmlkaXI9JyR7ZG9jZGlyfScKLXBkZmRpcj0nJHtkb2NkaXJ9JwotcHNkaXI9JyR7 ZG9jZGlyfScKLWxpYmRpcj0nJHtleGVjX3ByZWZpeH0vbGliJwotbG9jYWxlZGlyPScke2RhdGFy b290ZGlyfS9sb2NhbGUnCi1tYW5kaXI9JyR7ZGF0YXJvb3RkaXJ9L21hbicKLQotYWNfcHJldj0K LWFjX2Rhc2hkYXNoPQotZm9yIGFjX29wdGlvbgotZG8KLSAgIyBJZiB0aGUgcHJldmlvdXMgb3B0 aW9uIG5lZWRzIGFuIGFyZ3VtZW50LCBhc3NpZ24gaXQuCi0gIGlmIHRlc3QgLW4gIiRhY19wcmV2 IjsgdGhlbgotICAgIGV2YWwgJGFjX3ByZXY9XCRhY19vcHRpb24KLSAgICBhY19wcmV2PQotICAg IGNvbnRpbnVlCi0gIGZpCi0KLSAgY2FzZSAkYWNfb3B0aW9uIGluCi0gICo9PyopIGFjX29wdGFy Zz1gZXhwciAiWCRhY19vcHRpb24iIDogJ1tePV0qPVwoLipcKSdgIDs7Ci0gICo9KSAgIGFjX29w dGFyZz0gOzsKLSAgKikgICAgYWNfb3B0YXJnPXllcyA7OwotICBlc2FjCi0KLSAgIyBBY2NlcHQg dGhlIGltcG9ydGFudCBDeWdudXMgY29uZmlndXJlIG9wdGlvbnMsIHNvIHdlIGNhbiBkaWFnbm9z ZSB0eXBvcy4KLQotICBjYXNlICRhY19kYXNoZGFzaCRhY19vcHRpb24gaW4KLSAgLS0pCi0gICAg YWNfZGFzaGRhc2g9eWVzIDs7Ci0KLSAgLWJpbmRpciB8IC0tYmluZGlyIHwgLS1iaW5kaSB8IC0t YmluZCB8IC0tYmluIHwgLS1iaSkKLSAgICBhY19wcmV2PWJpbmRpciA7OwotICAtYmluZGlyPSog fCAtLWJpbmRpcj0qIHwgLS1iaW5kaT0qIHwgLS1iaW5kPSogfCAtLWJpbj0qIHwgLS1iaT0qKQot ICAgIGJpbmRpcj0kYWNfb3B0YXJnIDs7Ci0KLSAgLWJ1aWxkIHwgLS1idWlsZCB8IC0tYnVpbCB8 IC0tYnVpIHwgLS1idSkKLSAgICBhY19wcmV2PWJ1aWxkX2FsaWFzIDs7Ci0gIC1idWlsZD0qIHwg LS1idWlsZD0qIHwgLS1idWlsPSogfCAtLWJ1aT0qIHwgLS1idT0qKQotICAgIGJ1aWxkX2FsaWFz PSRhY19vcHRhcmcgOzsKLQotICAtY2FjaGUtZmlsZSB8IC0tY2FjaGUtZmlsZSB8IC0tY2FjaGUt ZmlsIHwgLS1jYWNoZS1maSBcCi0gIHwgLS1jYWNoZS1mIHwgLS1jYWNoZS0gfCAtLWNhY2hlIHwg LS1jYWNoIHwgLS1jYWMgfCAtLWNhIHwgLS1jKQotICAgIGFjX3ByZXY9Y2FjaGVfZmlsZSA7Owot ICAtY2FjaGUtZmlsZT0qIHwgLS1jYWNoZS1maWxlPSogfCAtLWNhY2hlLWZpbD0qIHwgLS1jYWNo ZS1maT0qIFwKLSAgfCAtLWNhY2hlLWY9KiB8IC0tY2FjaGUtPSogfCAtLWNhY2hlPSogfCAtLWNh Y2g9KiB8IC0tY2FjPSogfCAtLWNhPSogfCAtLWM9KikKLSAgICBjYWNoZV9maWxlPSRhY19vcHRh cmcgOzsKLQotICAtLWNvbmZpZy1jYWNoZSB8IC1DKQotICAgIGNhY2hlX2ZpbGU9Y29uZmlnLmNh Y2hlIDs7Ci0KLSAgLWRhdGFkaXIgfCAtLWRhdGFkaXIgfCAtLWRhdGFkaSB8IC0tZGF0YWQpCi0g ICAgYWNfcHJldj1kYXRhZGlyIDs7Ci0gIC1kYXRhZGlyPSogfCAtLWRhdGFkaXI9KiB8IC0tZGF0 YWRpPSogfCAtLWRhdGFkPSopCi0gICAgZGF0YWRpcj0kYWNfb3B0YXJnIDs7Ci0KLSAgLWRhdGFy b290ZGlyIHwgLS1kYXRhcm9vdGRpciB8IC0tZGF0YXJvb3RkaSB8IC0tZGF0YXJvb3RkIHwgLS1k YXRhcm9vdCBcCi0gIHwgLS1kYXRhcm9vIHwgLS1kYXRhcm8gfCAtLWRhdGFyKQotICAgIGFjX3By ZXY9ZGF0YXJvb3RkaXIgOzsKLSAgLWRhdGFyb290ZGlyPSogfCAtLWRhdGFyb290ZGlyPSogfCAt LWRhdGFyb290ZGk9KiB8IC0tZGF0YXJvb3RkPSogXAotICB8IC0tZGF0YXJvb3Q9KiB8IC0tZGF0 YXJvbz0qIHwgLS1kYXRhcm89KiB8IC0tZGF0YXI9KikKLSAgICBkYXRhcm9vdGRpcj0kYWNfb3B0 YXJnIDs7Ci0KLSAgLWRpc2FibGUtKiB8IC0tZGlzYWJsZS0qKQotICAgIGFjX3VzZXJvcHQ9YGV4 cHIgIngkYWNfb3B0aW9uIiA6ICd4LSpkaXNhYmxlLVwoLipcKSdgCi0gICAgIyBSZWplY3QgbmFt ZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLgotICAgIGV4cHIgIngk YWNfdXNlcm9wdCIgOiAiLipbXi0rLl8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmCi0gICAg ICBhc19mbl9lcnJvciAkPyAiaW52YWxpZCBmZWF0dXJlIG5hbWU6ICRhY191c2Vyb3B0IgotICAg IGFjX3VzZXJvcHRfb3JpZz0kYWNfdXNlcm9wdAotICAgIGFjX3VzZXJvcHQ9YCRhc19lY2hvICIk YWNfdXNlcm9wdCIgfCBzZWQgJ3MvWy0rLl0vXy9nJ2AKLSAgICBjYXNlICRhY191c2VyX29wdHMg aW4KLSAgICAgICoiCi0iZW5hYmxlXyRhY191c2Vyb3B0IgotIiopIDs7Ci0gICAgICAqKSBhY191 bnJlY29nbml6ZWRfb3B0cz0iJGFjX3VucmVjb2duaXplZF9vcHRzJGFjX3VucmVjb2duaXplZF9z ZXAtLWRpc2FibGUtJGFjX3VzZXJvcHRfb3JpZyIKLQkgYWNfdW5yZWNvZ25pemVkX3NlcD0nLCAn OzsKLSAgICBlc2FjCi0gICAgZXZhbCBlbmFibGVfJGFjX3VzZXJvcHQ9bm8gOzsKLQotICAtZG9j ZGlyIHwgLS1kb2NkaXIgfCAtLWRvY2RpIHwgLS1kb2MgfCAtLWRvKQotICAgIGFjX3ByZXY9ZG9j ZGlyIDs7Ci0gIC1kb2NkaXI9KiB8IC0tZG9jZGlyPSogfCAtLWRvY2RpPSogfCAtLWRvYz0qIHwg LS1kbz0qKQotICAgIGRvY2Rpcj0kYWNfb3B0YXJnIDs7Ci0KLSAgLWR2aWRpciB8IC0tZHZpZGly IHwgLS1kdmlkaSB8IC0tZHZpZCB8IC0tZHZpIHwgLS1kdikKLSAgICBhY19wcmV2PWR2aWRpciA7 OwotICAtZHZpZGlyPSogfCAtLWR2aWRpcj0qIHwgLS1kdmlkaT0qIHwgLS1kdmlkPSogfCAtLWR2 aT0qIHwgLS1kdj0qKQotICAgIGR2aWRpcj0kYWNfb3B0YXJnIDs7Ci0KLSAgLWVuYWJsZS0qIHwg LS1lbmFibGUtKikKLSAgICBhY191c2Vyb3B0PWBleHByICJ4JGFjX29wdGlvbiIgOiAneC0qZW5h YmxlLVwoW149XSpcKSdgCi0gICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNo ZWxsIHZhcmlhYmxlIG5hbWVzLgotICAgIGV4cHIgIngkYWNfdXNlcm9wdCIgOiAiLipbXi0rLl8k YXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmCi0gICAgICBhc19mbl9lcnJvciAkPyAiaW52YWxp ZCBmZWF0dXJlIG5hbWU6ICRhY191c2Vyb3B0IgotICAgIGFjX3VzZXJvcHRfb3JpZz0kYWNfdXNl cm9wdAotICAgIGFjX3VzZXJvcHQ9YCRhc19lY2hvICIkYWNfdXNlcm9wdCIgfCBzZWQgJ3MvWy0r Ll0vXy9nJ2AKLSAgICBjYXNlICRhY191c2VyX29wdHMgaW4KLSAgICAgICoiCi0iZW5hYmxlXyRh Y191c2Vyb3B0IgotIiopIDs7Ci0gICAgICAqKSBhY191bnJlY29nbml6ZWRfb3B0cz0iJGFjX3Vu cmVjb2duaXplZF9vcHRzJGFjX3VucmVjb2duaXplZF9zZXAtLWVuYWJsZS0kYWNfdXNlcm9wdF9v cmlnIgotCSBhY191bnJlY29nbml6ZWRfc2VwPScsICc7OwotICAgIGVzYWMKLSAgICBldmFsIGVu YWJsZV8kYWNfdXNlcm9wdD1cJGFjX29wdGFyZyA7OwotCi0gIC1leGVjLXByZWZpeCB8IC0tZXhl Y19wcmVmaXggfCAtLWV4ZWMtcHJlZml4IHwgLS1leGVjLXByZWZpIFwKLSAgfCAtLWV4ZWMtcHJl ZiB8IC0tZXhlYy1wcmUgfCAtLWV4ZWMtcHIgfCAtLWV4ZWMtcCB8IC0tZXhlYy0gXAotICB8IC0t ZXhlYyB8IC0tZXhlIHwgLS1leCkKLSAgICBhY19wcmV2PWV4ZWNfcHJlZml4IDs7Ci0gIC1leGVj LXByZWZpeD0qIHwgLS1leGVjX3ByZWZpeD0qIHwgLS1leGVjLXByZWZpeD0qIHwgLS1leGVjLXBy ZWZpPSogXAotICB8IC0tZXhlYy1wcmVmPSogfCAtLWV4ZWMtcHJlPSogfCAtLWV4ZWMtcHI9KiB8 IC0tZXhlYy1wPSogfCAtLWV4ZWMtPSogXAotICB8IC0tZXhlYz0qIHwgLS1leGU9KiB8IC0tZXg9 KikKLSAgICBleGVjX3ByZWZpeD0kYWNfb3B0YXJnIDs7Ci0KLSAgLWdhcyB8IC0tZ2FzIHwgLS1n YSB8IC0tZykKLSAgICAjIE9ic29sZXRlOyB1c2UgLS13aXRoLWdhcy4KLSAgICB3aXRoX2dhcz15 ZXMgOzsKLQotICAtaGVscCB8IC0taGVscCB8IC0taGVsIHwgLS1oZSB8IC1oKQotICAgIGFjX2lu aXRfaGVscD1sb25nIDs7Ci0gIC1oZWxwPXIqIHwgLS1oZWxwPXIqIHwgLS1oZWw9ciogfCAtLWhl PXIqIHwgLWhyKikKLSAgICBhY19pbml0X2hlbHA9cmVjdXJzaXZlIDs7Ci0gIC1oZWxwPXMqIHwg LS1oZWxwPXMqIHwgLS1oZWw9cyogfCAtLWhlPXMqIHwgLWhzKikKLSAgICBhY19pbml0X2hlbHA9 c2hvcnQgOzsKLQotICAtaG9zdCB8IC0taG9zdCB8IC0taG9zIHwgLS1obykKLSAgICBhY19wcmV2 PWhvc3RfYWxpYXMgOzsKLSAgLWhvc3Q9KiB8IC0taG9zdD0qIHwgLS1ob3M9KiB8IC0taG89KikK LSAgICBob3N0X2FsaWFzPSRhY19vcHRhcmcgOzsKLQotICAtaHRtbGRpciB8IC0taHRtbGRpciB8 IC0taHRtbGRpIHwgLS1odG1sZCB8IC0taHRtbCB8IC0taHRtIHwgLS1odCkKLSAgICBhY19wcmV2 PWh0bWxkaXIgOzsKLSAgLWh0bWxkaXI9KiB8IC0taHRtbGRpcj0qIHwgLS1odG1sZGk9KiB8IC0t aHRtbGQ9KiB8IC0taHRtbD0qIHwgLS1odG09KiBcCi0gIHwgLS1odD0qKQotICAgIGh0bWxkaXI9 JGFjX29wdGFyZyA7OwotCi0gIC1pbmNsdWRlZGlyIHwgLS1pbmNsdWRlZGlyIHwgLS1pbmNsdWRl ZGkgfCAtLWluY2x1ZGVkIHwgLS1pbmNsdWRlIFwKLSAgfCAtLWluY2x1ZCB8IC0taW5jbHUgfCAt LWluY2wgfCAtLWluYykKLSAgICBhY19wcmV2PWluY2x1ZGVkaXIgOzsKLSAgLWluY2x1ZGVkaXI9 KiB8IC0taW5jbHVkZWRpcj0qIHwgLS1pbmNsdWRlZGk9KiB8IC0taW5jbHVkZWQ9KiB8IC0taW5j bHVkZT0qIFwKLSAgfCAtLWluY2x1ZD0qIHwgLS1pbmNsdT0qIHwgLS1pbmNsPSogfCAtLWluYz0q KQotICAgIGluY2x1ZGVkaXI9JGFjX29wdGFyZyA7OwotCi0gIC1pbmZvZGlyIHwgLS1pbmZvZGly IHwgLS1pbmZvZGkgfCAtLWluZm9kIHwgLS1pbmZvIHwgLS1pbmYpCi0gICAgYWNfcHJldj1pbmZv ZGlyIDs7Ci0gIC1pbmZvZGlyPSogfCAtLWluZm9kaXI9KiB8IC0taW5mb2RpPSogfCAtLWluZm9k PSogfCAtLWluZm89KiB8IC0taW5mPSopCi0gICAgaW5mb2Rpcj0kYWNfb3B0YXJnIDs7Ci0KLSAg LWxpYmRpciB8IC0tbGliZGlyIHwgLS1saWJkaSB8IC0tbGliZCkKLSAgICBhY19wcmV2PWxpYmRp ciA7OwotICAtbGliZGlyPSogfCAtLWxpYmRpcj0qIHwgLS1saWJkaT0qIHwgLS1saWJkPSopCi0g ICAgbGliZGlyPSRhY19vcHRhcmcgOzsKLQotICAtbGliZXhlY2RpciB8IC0tbGliZXhlY2RpciB8 IC0tbGliZXhlY2RpIHwgLS1saWJleGVjZCB8IC0tbGliZXhlYyBcCi0gIHwgLS1saWJleGUgfCAt LWxpYmV4IHwgLS1saWJlKQotICAgIGFjX3ByZXY9bGliZXhlY2RpciA7OwotICAtbGliZXhlY2Rp cj0qIHwgLS1saWJleGVjZGlyPSogfCAtLWxpYmV4ZWNkaT0qIHwgLS1saWJleGVjZD0qIHwgLS1s aWJleGVjPSogXAotICB8IC0tbGliZXhlPSogfCAtLWxpYmV4PSogfCAtLWxpYmU9KikKLSAgICBs aWJleGVjZGlyPSRhY19vcHRhcmcgOzsKLQotICAtbG9jYWxlZGlyIHwgLS1sb2NhbGVkaXIgfCAt LWxvY2FsZWRpIHwgLS1sb2NhbGVkIHwgLS1sb2NhbGUpCi0gICAgYWNfcHJldj1sb2NhbGVkaXIg OzsKLSAgLWxvY2FsZWRpcj0qIHwgLS1sb2NhbGVkaXI9KiB8IC0tbG9jYWxlZGk9KiB8IC0tbG9j YWxlZD0qIHwgLS1sb2NhbGU9KikKLSAgICBsb2NhbGVkaXI9JGFjX29wdGFyZyA7OwotCi0gIC1s b2NhbHN0YXRlZGlyIHwgLS1sb2NhbHN0YXRlZGlyIHwgLS1sb2NhbHN0YXRlZGkgfCAtLWxvY2Fs c3RhdGVkIFwKLSAgfCAtLWxvY2Fsc3RhdGUgfCAtLWxvY2Fsc3RhdCB8IC0tbG9jYWxzdGEgfCAt LWxvY2Fsc3QgfCAtLWxvY2FscykKLSAgICBhY19wcmV2PWxvY2Fsc3RhdGVkaXIgOzsKLSAgLWxv Y2Fsc3RhdGVkaXI9KiB8IC0tbG9jYWxzdGF0ZWRpcj0qIHwgLS1sb2NhbHN0YXRlZGk9KiB8IC0t bG9jYWxzdGF0ZWQ9KiBcCi0gIHwgLS1sb2NhbHN0YXRlPSogfCAtLWxvY2Fsc3RhdD0qIHwgLS1s b2NhbHN0YT0qIHwgLS1sb2NhbHN0PSogfCAtLWxvY2Fscz0qKQotICAgIGxvY2Fsc3RhdGVkaXI9 JGFjX29wdGFyZyA7OwotCi0gIC1tYW5kaXIgfCAtLW1hbmRpciB8IC0tbWFuZGkgfCAtLW1hbmQg fCAtLW1hbiB8IC0tbWEgfCAtLW0pCi0gICAgYWNfcHJldj1tYW5kaXIgOzsKLSAgLW1hbmRpcj0q IHwgLS1tYW5kaXI9KiB8IC0tbWFuZGk9KiB8IC0tbWFuZD0qIHwgLS1tYW49KiB8IC0tbWE9KiB8 IC0tbT0qKQotICAgIG1hbmRpcj0kYWNfb3B0YXJnIDs7Ci0KLSAgLW5mcCB8IC0tbmZwIHwgLS1u ZikKLSAgICAjIE9ic29sZXRlOyB1c2UgLS13aXRob3V0LWZwLgotICAgIHdpdGhfZnA9bm8gOzsK LQotICAtbm8tY3JlYXRlIHwgLS1uby1jcmVhdGUgfCAtLW5vLWNyZWF0IHwgLS1uby1jcmVhIHwg LS1uby1jcmUgXAotICB8IC0tbm8tY3IgfCAtLW5vLWMgfCAtbikKLSAgICBub19jcmVhdGU9eWVz IDs7Ci0KLSAgLW5vLXJlY3Vyc2lvbiB8IC0tbm8tcmVjdXJzaW9uIHwgLS1uby1yZWN1cnNpbyB8 IC0tbm8tcmVjdXJzaSBcCi0gIHwgLS1uby1yZWN1cnMgfCAtLW5vLXJlY3VyIHwgLS1uby1yZWN1 IHwgLS1uby1yZWMgfCAtLW5vLXJlIHwgLS1uby1yKQotICAgIG5vX3JlY3Vyc2lvbj15ZXMgOzsK LQotICAtb2xkaW5jbHVkZWRpciB8IC0tb2xkaW5jbHVkZWRpciB8IC0tb2xkaW5jbHVkZWRpIHwg LS1vbGRpbmNsdWRlZCBcCi0gIHwgLS1vbGRpbmNsdWRlIHwgLS1vbGRpbmNsdWQgfCAtLW9sZGlu Y2x1IHwgLS1vbGRpbmNsIHwgLS1vbGRpbmMgXAotICB8IC0tb2xkaW4gfCAtLW9sZGkgfCAtLW9s ZCB8IC0tb2wgfCAtLW8pCi0gICAgYWNfcHJldj1vbGRpbmNsdWRlZGlyIDs7Ci0gIC1vbGRpbmNs dWRlZGlyPSogfCAtLW9sZGluY2x1ZGVkaXI9KiB8IC0tb2xkaW5jbHVkZWRpPSogfCAtLW9sZGlu Y2x1ZGVkPSogXAotICB8IC0tb2xkaW5jbHVkZT0qIHwgLS1vbGRpbmNsdWQ9KiB8IC0tb2xkaW5j bHU9KiB8IC0tb2xkaW5jbD0qIHwgLS1vbGRpbmM9KiBcCi0gIHwgLS1vbGRpbj0qIHwgLS1vbGRp PSogfCAtLW9sZD0qIHwgLS1vbD0qIHwgLS1vPSopCi0gICAgb2xkaW5jbHVkZWRpcj0kYWNfb3B0 YXJnIDs7Ci0KLSAgLXByZWZpeCB8IC0tcHJlZml4IHwgLS1wcmVmaSB8IC0tcHJlZiB8IC0tcHJl IHwgLS1wciB8IC0tcCkKLSAgICBhY19wcmV2PXByZWZpeCA7OwotICAtcHJlZml4PSogfCAtLXBy ZWZpeD0qIHwgLS1wcmVmaT0qIHwgLS1wcmVmPSogfCAtLXByZT0qIHwgLS1wcj0qIHwgLS1wPSop Ci0gICAgcHJlZml4PSRhY19vcHRhcmcgOzsKLQotICAtcHJvZ3JhbS1wcmVmaXggfCAtLXByb2dy YW0tcHJlZml4IHwgLS1wcm9ncmFtLXByZWZpIHwgLS1wcm9ncmFtLXByZWYgXAotICB8IC0tcHJv Z3JhbS1wcmUgfCAtLXByb2dyYW0tcHIgfCAtLXByb2dyYW0tcCkKLSAgICBhY19wcmV2PXByb2dy YW1fcHJlZml4IDs7Ci0gIC1wcm9ncmFtLXByZWZpeD0qIHwgLS1wcm9ncmFtLXByZWZpeD0qIHwg LS1wcm9ncmFtLXByZWZpPSogXAotICB8IC0tcHJvZ3JhbS1wcmVmPSogfCAtLXByb2dyYW0tcHJl PSogfCAtLXByb2dyYW0tcHI9KiB8IC0tcHJvZ3JhbS1wPSopCi0gICAgcHJvZ3JhbV9wcmVmaXg9 JGFjX29wdGFyZyA7OwotCi0gIC1wcm9ncmFtLXN1ZmZpeCB8IC0tcHJvZ3JhbS1zdWZmaXggfCAt LXByb2dyYW0tc3VmZmkgfCAtLXByb2dyYW0tc3VmZiBcCi0gIHwgLS1wcm9ncmFtLXN1ZiB8IC0t cHJvZ3JhbS1zdSB8IC0tcHJvZ3JhbS1zKQotICAgIGFjX3ByZXY9cHJvZ3JhbV9zdWZmaXggOzsK LSAgLXByb2dyYW0tc3VmZml4PSogfCAtLXByb2dyYW0tc3VmZml4PSogfCAtLXByb2dyYW0tc3Vm Zmk9KiBcCi0gIHwgLS1wcm9ncmFtLXN1ZmY9KiB8IC0tcHJvZ3JhbS1zdWY9KiB8IC0tcHJvZ3Jh bS1zdT0qIHwgLS1wcm9ncmFtLXM9KikKLSAgICBwcm9ncmFtX3N1ZmZpeD0kYWNfb3B0YXJnIDs7 Ci0KLSAgLXByb2dyYW0tdHJhbnNmb3JtLW5hbWUgfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbWUg XAotICB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmFtIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYSBc Ci0gIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS0gXAotICB8 IC0tcHJvZ3JhbS10cmFuc2Zvcm0gfCAtLXByb2dyYW0tdHJhbnNmb3IgXAotICB8IC0tcHJvZ3Jh bS10cmFuc2ZvIHwgLS1wcm9ncmFtLXRyYW5zZiBcCi0gIHwgLS1wcm9ncmFtLXRyYW5zIHwgLS1w cm9ncmFtLXRyYW4gXAotICB8IC0tcHJvZ3ItdHJhIHwgLS1wcm9ncmFtLXRyIHwgLS1wcm9ncmFt LXQpCi0gICAgYWNfcHJldj1wcm9ncmFtX3RyYW5zZm9ybV9uYW1lIDs7Ci0gIC1wcm9ncmFtLXRy YW5zZm9ybS1uYW1lPSogfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbWU9KiBcCi0gIHwgLS1wcm9n cmFtLXRyYW5zZm9ybS1uYW09KiB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmE9KiBcCi0gIHwgLS1w cm9ncmFtLXRyYW5zZm9ybS1uPSogfCAtLXByb2dyYW0tdHJhbnNmb3JtLT0qIFwKLSAgfCAtLXBy b2dyYW0tdHJhbnNmb3JtPSogfCAtLXByb2dyYW0tdHJhbnNmb3I9KiBcCi0gIHwgLS1wcm9ncmFt LXRyYW5zZm89KiB8IC0tcHJvZ3JhbS10cmFuc2Y9KiBcCi0gIHwgLS1wcm9ncmFtLXRyYW5zPSog fCAtLXByb2dyYW0tdHJhbj0qIFwKLSAgfCAtLXByb2dyLXRyYT0qIHwgLS1wcm9ncmFtLXRyPSog fCAtLXByb2dyYW0tdD0qKQotICAgIHByb2dyYW1fdHJhbnNmb3JtX25hbWU9JGFjX29wdGFyZyA7 OwotCi0gIC1wZGZkaXIgfCAtLXBkZmRpciB8IC0tcGRmZGkgfCAtLXBkZmQgfCAtLXBkZiB8IC0t cGQpCi0gICAgYWNfcHJldj1wZGZkaXIgOzsKLSAgLXBkZmRpcj0qIHwgLS1wZGZkaXI9KiB8IC0t cGRmZGk9KiB8IC0tcGRmZD0qIHwgLS1wZGY9KiB8IC0tcGQ9KikKLSAgICBwZGZkaXI9JGFjX29w dGFyZyA7OwotCi0gIC1wc2RpciB8IC0tcHNkaXIgfCAtLXBzZGkgfCAtLXBzZCB8IC0tcHMpCi0g ICAgYWNfcHJldj1wc2RpciA7OwotICAtcHNkaXI9KiB8IC0tcHNkaXI9KiB8IC0tcHNkaT0qIHwg LS1wc2Q9KiB8IC0tcHM9KikKLSAgICBwc2Rpcj0kYWNfb3B0YXJnIDs7Ci0KLSAgLXEgfCAtcXVp ZXQgfCAtLXF1aWV0IHwgLS1xdWllIHwgLS1xdWkgfCAtLXF1IHwgLS1xIFwKLSAgfCAtc2lsZW50 IHwgLS1zaWxlbnQgfCAtLXNpbGVuIHwgLS1zaWxlIHwgLS1zaWwpCi0gICAgc2lsZW50PXllcyA7 OwotCi0gIC1ydW5zdGF0ZWRpciB8IC0tcnVuc3RhdGVkaXIgfCAtLXJ1bnN0YXRlZGkgfCAtLXJ1 bnN0YXRlZCBcCi0gIHwgLS1ydW5zdGF0ZSB8IC0tcnVuc3RhdCB8IC0tcnVuc3RhIHwgLS1ydW5z dCB8IC0tcnVucyBcCi0gIHwgLS1ydW4gfCAtLXJ1IHwgLS1yKQotICAgIGFjX3ByZXY9cnVuc3Rh dGVkaXIgOzsKLSAgLXJ1bnN0YXRlZGlyPSogfCAtLXJ1bnN0YXRlZGlyPSogfCAtLXJ1bnN0YXRl ZGk9KiB8IC0tcnVuc3RhdGVkPSogXAotICB8IC0tcnVuc3RhdGU9KiB8IC0tcnVuc3RhdD0qIHwg LS1ydW5zdGE9KiB8IC0tcnVuc3Q9KiB8IC0tcnVucz0qIFwKLSAgfCAtLXJ1bj0qIHwgLS1ydT0q IHwgLS1yPSopCi0gICAgcnVuc3RhdGVkaXI9JGFjX29wdGFyZyA7OwotCi0gIC1zYmluZGlyIHwg LS1zYmluZGlyIHwgLS1zYmluZGkgfCAtLXNiaW5kIHwgLS1zYmluIHwgLS1zYmkgfCAtLXNiKQot ICAgIGFjX3ByZXY9c2JpbmRpciA7OwotICAtc2JpbmRpcj0qIHwgLS1zYmluZGlyPSogfCAtLXNi aW5kaT0qIHwgLS1zYmluZD0qIHwgLS1zYmluPSogXAotICB8IC0tc2JpPSogfCAtLXNiPSopCi0g ICAgc2JpbmRpcj0kYWNfb3B0YXJnIDs7Ci0KLSAgLXNoYXJlZHN0YXRlZGlyIHwgLS1zaGFyZWRz dGF0ZWRpciB8IC0tc2hhcmVkc3RhdGVkaSBcCi0gIHwgLS1zaGFyZWRzdGF0ZWQgfCAtLXNoYXJl ZHN0YXRlIHwgLS1zaGFyZWRzdGF0IHwgLS1zaGFyZWRzdGEgXAotICB8IC0tc2hhcmVkc3QgfCAt LXNoYXJlZHMgfCAtLXNoYXJlZCB8IC0tc2hhcmUgfCAtLXNoYXIgXAotICB8IC0tc2hhIHwgLS1z aCkKLSAgICBhY19wcmV2PXNoYXJlZHN0YXRlZGlyIDs7Ci0gIC1zaGFyZWRzdGF0ZWRpcj0qIHwg LS1zaGFyZWRzdGF0ZWRpcj0qIHwgLS1zaGFyZWRzdGF0ZWRpPSogXAotICB8IC0tc2hhcmVkc3Rh dGVkPSogfCAtLXNoYXJlZHN0YXRlPSogfCAtLXNoYXJlZHN0YXQ9KiB8IC0tc2hhcmVkc3RhPSog XAotICB8IC0tc2hhcmVkc3Q9KiB8IC0tc2hhcmVkcz0qIHwgLS1zaGFyZWQ9KiB8IC0tc2hhcmU9 KiB8IC0tc2hhcj0qIFwKLSAgfCAtLXNoYT0qIHwgLS1zaD0qKQotICAgIHNoYXJlZHN0YXRlZGly PSRhY19vcHRhcmcgOzsKLQotICAtc2l0ZSB8IC0tc2l0ZSB8IC0tc2l0KQotICAgIGFjX3ByZXY9 c2l0ZSA7OwotICAtc2l0ZT0qIHwgLS1zaXRlPSogfCAtLXNpdD0qKQotICAgIHNpdGU9JGFjX29w dGFyZyA7OwotCi0gIC1zcmNkaXIgfCAtLXNyY2RpciB8IC0tc3JjZGkgfCAtLXNyY2QgfCAtLXNy YyB8IC0tc3IpCi0gICAgYWNfcHJldj1zcmNkaXIgOzsKLSAgLXNyY2Rpcj0qIHwgLS1zcmNkaXI9 KiB8IC0tc3JjZGk9KiB8IC0tc3JjZD0qIHwgLS1zcmM9KiB8IC0tc3I9KikKLSAgICBzcmNkaXI9 JGFjX29wdGFyZyA7OwotCi0gIC1zeXNjb25mZGlyIHwgLS1zeXNjb25mZGlyIHwgLS1zeXNjb25m ZGkgfCAtLXN5c2NvbmZkIHwgLS1zeXNjb25mIFwKLSAgfCAtLXN5c2NvbiB8IC0tc3lzY28gfCAt LXN5c2MgfCAtLXN5cyB8IC0tc3kpCi0gICAgYWNfcHJldj1zeXNjb25mZGlyIDs7Ci0gIC1zeXNj b25mZGlyPSogfCAtLXN5c2NvbmZkaXI9KiB8IC0tc3lzY29uZmRpPSogfCAtLXN5c2NvbmZkPSog fCAtLXN5c2NvbmY9KiBcCi0gIHwgLS1zeXNjb249KiB8IC0tc3lzY289KiB8IC0tc3lzYz0qIHwg LS1zeXM9KiB8IC0tc3k9KikKLSAgICBzeXNjb25mZGlyPSRhY19vcHRhcmcgOzsKLQotICAtdGFy Z2V0IHwgLS10YXJnZXQgfCAtLXRhcmdlIHwgLS10YXJnIHwgLS10YXIgfCAtLXRhIHwgLS10KQot ICAgIGFjX3ByZXY9dGFyZ2V0X2FsaWFzIDs7Ci0gIC10YXJnZXQ9KiB8IC0tdGFyZ2V0PSogfCAt LXRhcmdlPSogfCAtLXRhcmc9KiB8IC0tdGFyPSogfCAtLXRhPSogfCAtLXQ9KikKLSAgICB0YXJn ZXRfYWxpYXM9JGFjX29wdGFyZyA7OwotCi0gIC12IHwgLXZlcmJvc2UgfCAtLXZlcmJvc2UgfCAt LXZlcmJvcyB8IC0tdmVyYm8gfCAtLXZlcmIpCi0gICAgdmVyYm9zZT15ZXMgOzsKLQotICAtdmVy c2lvbiB8IC0tdmVyc2lvbiB8IC0tdmVyc2lvIHwgLS12ZXJzaSB8IC0tdmVycyB8IC1WKQotICAg IGFjX2luaXRfdmVyc2lvbj06IDs7Ci0KLSAgLXdpdGgtKiB8IC0td2l0aC0qKQotICAgIGFjX3Vz ZXJvcHQ9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4LSp3aXRoLVwoW149XSpcKSdgCi0gICAgIyBS ZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLgotICAg IGV4cHIgIngkYWNfdXNlcm9wdCIgOiAiLipbXi0rLl8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxs ICYmCi0gICAgICBhc19mbl9lcnJvciAkPyAiaW52YWxpZCBwYWNrYWdlIG5hbWU6ICRhY191c2Vy b3B0IgotICAgIGFjX3VzZXJvcHRfb3JpZz0kYWNfdXNlcm9wdAotICAgIGFjX3VzZXJvcHQ9YCRh c19lY2hvICIkYWNfdXNlcm9wdCIgfCBzZWQgJ3MvWy0rLl0vXy9nJ2AKLSAgICBjYXNlICRhY191 c2VyX29wdHMgaW4KLSAgICAgICoiCi0id2l0aF8kYWNfdXNlcm9wdCIKLSIqKSA7OwotICAgICAg KikgYWNfdW5yZWNvZ25pemVkX29wdHM9IiRhY191bnJlY29nbml6ZWRfb3B0cyRhY191bnJlY29n bml6ZWRfc2VwLS13aXRoLSRhY191c2Vyb3B0X29yaWciCi0JIGFjX3VucmVjb2duaXplZF9zZXA9 JywgJzs7Ci0gICAgZXNhYwotICAgIGV2YWwgd2l0aF8kYWNfdXNlcm9wdD1cJGFjX29wdGFyZyA7 OwotCi0gIC13aXRob3V0LSogfCAtLXdpdGhvdXQtKikKLSAgICBhY191c2Vyb3B0PWBleHByICJ4 JGFjX29wdGlvbiIgOiAneC0qd2l0aG91dC1cKC4qXCknYAotICAgICMgUmVqZWN0IG5hbWVzIHRo YXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4KLSAgICBleHByICJ4JGFjX3Vz ZXJvcHQiIDogIi4qW14tKy5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgotICAgICAgYXNf Zm5fZXJyb3IgJD8gImludmFsaWQgcGFja2FnZSBuYW1lOiAkYWNfdXNlcm9wdCIKLSAgICBhY191 c2Vyb3B0X29yaWc9JGFjX3VzZXJvcHQKLSAgICBhY191c2Vyb3B0PWAkYXNfZWNobyAiJGFjX3Vz ZXJvcHQiIHwgc2VkICdzL1stKy5dL18vZydgCi0gICAgY2FzZSAkYWNfdXNlcl9vcHRzIGluCi0g ICAgICAqIgotIndpdGhfJGFjX3VzZXJvcHQiCi0iKikgOzsKLSAgICAgICopIGFjX3VucmVjb2du aXplZF9vcHRzPSIkYWNfdW5yZWNvZ25pemVkX29wdHMkYWNfdW5yZWNvZ25pemVkX3NlcC0td2l0 aG91dC0kYWNfdXNlcm9wdF9vcmlnIgotCSBhY191bnJlY29nbml6ZWRfc2VwPScsICc7OwotICAg IGVzYWMKLSAgICBldmFsIHdpdGhfJGFjX3VzZXJvcHQ9bm8gOzsKLQotICAtLXgpCi0gICAgIyBP YnNvbGV0ZTsgdXNlIC0td2l0aC14LgotICAgIHdpdGhfeD15ZXMgOzsKLQotICAteC1pbmNsdWRl cyB8IC0teC1pbmNsdWRlcyB8IC0teC1pbmNsdWRlIHwgLS14LWluY2x1ZCB8IC0teC1pbmNsdSBc Ci0gIHwgLS14LWluY2wgfCAtLXgtaW5jIHwgLS14LWluIHwgLS14LWkpCi0gICAgYWNfcHJldj14 X2luY2x1ZGVzIDs7Ci0gIC14LWluY2x1ZGVzPSogfCAtLXgtaW5jbHVkZXM9KiB8IC0teC1pbmNs dWRlPSogfCAtLXgtaW5jbHVkPSogfCAtLXgtaW5jbHU9KiBcCi0gIHwgLS14LWluY2w9KiB8IC0t eC1pbmM9KiB8IC0teC1pbj0qIHwgLS14LWk9KikKLSAgICB4X2luY2x1ZGVzPSRhY19vcHRhcmcg OzsKLQotICAteC1saWJyYXJpZXMgfCAtLXgtbGlicmFyaWVzIHwgLS14LWxpYnJhcmllIHwgLS14 LWxpYnJhcmkgXAotICB8IC0teC1saWJyYXIgfCAtLXgtbGlicmEgfCAtLXgtbGliciB8IC0teC1s aWIgfCAtLXgtbGkgfCAtLXgtbCkKLSAgICBhY19wcmV2PXhfbGlicmFyaWVzIDs7Ci0gIC14LWxp YnJhcmllcz0qIHwgLS14LWxpYnJhcmllcz0qIHwgLS14LWxpYnJhcmllPSogfCAtLXgtbGlicmFy aT0qIFwKLSAgfCAtLXgtbGlicmFyPSogfCAtLXgtbGlicmE9KiB8IC0teC1saWJyPSogfCAtLXgt bGliPSogfCAtLXgtbGk9KiB8IC0teC1sPSopCi0gICAgeF9saWJyYXJpZXM9JGFjX29wdGFyZyA7 OwotCi0gIC0qKSBhc19mbl9lcnJvciAkPyAidW5yZWNvZ25pemVkIG9wdGlvbjogXGAkYWNfb3B0 aW9uJwotVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbiIKLSAgICA7OwotCi0g ICo9KikKLSAgICBhY19lbnZ2YXI9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4XChbXj1dKlwpPSdg Ci0gICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5h bWVzLgotICAgIGNhc2UgJGFjX2VudnZhciBpbiAjKAotICAgICAgJycgfCBbMC05XSogfCAqWyFf JGFzX2NyX2FsbnVtXSogKQotICAgICAgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgdmFyaWFibGUg bmFtZTogXGAkYWNfZW52dmFyJyIgOzsKLSAgICBlc2FjCi0gICAgZXZhbCAkYWNfZW52dmFyPVwk YWNfb3B0YXJnCi0gICAgZXhwb3J0ICRhY19lbnZ2YXIgOzsKLQotICAqKQotICAgICMgRklYTUU6 IHNob3VsZCBiZSByZW1vdmVkIGluIGF1dG9jb25mIDMuMC4KLSAgICAkYXNfZWNobyAiJGFzX21l OiBXQVJOSU5HOiB5b3Ugc2hvdWxkIHVzZSAtLWJ1aWxkLCAtLWhvc3QsIC0tdGFyZ2V0IiA+JjIK LSAgICBleHByICJ4JGFjX29wdGlvbiIgOiAiLipbXi0uXyRhc19jcl9hbG51bV0iID4vZGV2L251 bGwgJiYKLSAgICAgICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IGludmFsaWQgaG9zdCB0eXBl OiAkYWNfb3B0aW9uIiA+JjIKLSAgICA6ICIke2J1aWxkX2FsaWFzPSRhY19vcHRpb259ICR7aG9z dF9hbGlhcz0kYWNfb3B0aW9ufSAke3RhcmdldF9hbGlhcz0kYWNfb3B0aW9ufSIKLSAgICA7Owot Ci0gIGVzYWMKLWRvbmUKLQotaWYgdGVzdCAtbiAiJGFjX3ByZXYiOyB0aGVuCi0gIGFjX29wdGlv bj0tLWBlY2hvICRhY19wcmV2IHwgc2VkICdzL18vLS9nJ2AKLSAgYXNfZm5fZXJyb3IgJD8gIm1p c3NpbmcgYXJndW1lbnQgdG8gJGFjX29wdGlvbiIKLWZpCi0KLWlmIHRlc3QgLW4gIiRhY191bnJl Y29nbml6ZWRfb3B0cyI7IHRoZW4KLSAgY2FzZSAkZW5hYmxlX29wdGlvbl9jaGVja2luZyBpbgot ICAgIG5vKSA7OwotICAgIGZhdGFsKSBhc19mbl9lcnJvciAkPyAidW5yZWNvZ25pemVkIG9wdGlv bnM6ICRhY191bnJlY29nbml6ZWRfb3B0cyIgOzsKLSAgICAqKSAgICAgJGFzX2VjaG8gIiRhc19t ZTogV0FSTklORzogdW5yZWNvZ25pemVkIG9wdGlvbnM6ICRhY191bnJlY29nbml6ZWRfb3B0cyIg PiYyIDs7Ci0gIGVzYWMKLWZpCi0KLSMgQ2hlY2sgYWxsIGRpcmVjdG9yeSBhcmd1bWVudHMgZm9y IGNvbnNpc3RlbmN5LgotZm9yIGFjX3ZhciBpbglleGVjX3ByZWZpeCBwcmVmaXggYmluZGlyIHNi aW5kaXIgbGliZXhlY2RpciBkYXRhcm9vdGRpciBcCi0JCWRhdGFkaXIgc3lzY29uZmRpciBzaGFy ZWRzdGF0ZWRpciBsb2NhbHN0YXRlZGlyIGluY2x1ZGVkaXIgXAotCQlvbGRpbmNsdWRlZGlyIGRv Y2RpciBpbmZvZGlyIGh0bWxkaXIgZHZpZGlyIHBkZmRpciBwc2RpciBcCi0JCWxpYmRpciBsb2Nh bGVkaXIgbWFuZGlyIHJ1bnN0YXRlZGlyCi1kbwotICBldmFsIGFjX3ZhbD1cJCRhY192YXIKLSAg IyBSZW1vdmUgdHJhaWxpbmcgc2xhc2hlcy4KLSAgY2FzZSAkYWNfdmFsIGluCi0gICAgKi8gKQot ICAgICAgYWNfdmFsPWBleHByICJYJGFjX3ZhbCIgOiAnWFwoLipbXi9dXCknIFx8ICJYJGFjX3Zh bCIgOiAnWFwoLipcKSdgCi0gICAgICBldmFsICRhY192YXI9XCRhY192YWw7OwotICBlc2FjCi0g ICMgQmUgc3VyZSB0byBoYXZlIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lcy4KLSAgY2FzZSAkYWNf dmFsIGluCi0gICAgW1xcLyRdKiB8ID86W1xcL10qICkgIGNvbnRpbnVlOzsKLSAgICBOT05FIHwg JycgKSBjYXNlICRhY192YXIgaW4gKnByZWZpeCApIGNvbnRpbnVlOzsgZXNhYzs7Ci0gIGVzYWMK LSAgYXNfZm5fZXJyb3IgJD8gImV4cGVjdGVkIGFuIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lIGZv ciAtLSRhY192YXI6ICRhY192YWwiCi1kb25lCi0KLSMgVGhlcmUgbWlnaHQgYmUgcGVvcGxlIHdo byBkZXBlbmQgb24gdGhlIG9sZCBicm9rZW4gYmVoYXZpb3I6IGAkaG9zdCcKLSMgdXNlZCB0byBo b2xkIHRoZSBhcmd1bWVudCBvZiAtLWhvc3QgZXRjLgotIyBGSVhNRTogVG8gcmVtb3ZlIHNvbWUg ZGF5LgotYnVpbGQ9JGJ1aWxkX2FsaWFzCi1ob3N0PSRob3N0X2FsaWFzCi10YXJnZXQ9JHRhcmdl dF9hbGlhcwotCi0jIEZJWE1FOiBUbyByZW1vdmUgc29tZSBkYXkuCi1pZiB0ZXN0ICJ4JGhvc3Rf YWxpYXMiICE9IHg7IHRoZW4KLSAgaWYgdGVzdCAieCRidWlsZF9hbGlhcyIgPSB4OyB0aGVuCi0g ICAgY3Jvc3NfY29tcGlsaW5nPW1heWJlCi0gIGVsaWYgdGVzdCAieCRidWlsZF9hbGlhcyIgIT0g IngkaG9zdF9hbGlhcyI7IHRoZW4KLSAgICBjcm9zc19jb21waWxpbmc9eWVzCi0gIGZpCi1maQot Ci1hY190b29sX3ByZWZpeD0KLXRlc3QgLW4gIiRob3N0X2FsaWFzIiAmJiBhY190b29sX3ByZWZp eD0kaG9zdF9hbGlhcy0KLQotdGVzdCAiJHNpbGVudCIgPSB5ZXMgJiYgZXhlYyA2Pi9kZXYvbnVs bAotCi0KLWFjX3B3ZD1gcHdkYCAmJiB0ZXN0IC1uICIkYWNfcHdkIiAmJgotYWNfbHNfZGk9YGxz IC1kaSAuYCAmJgotYWNfcHdkX2xzX2RpPWBjZCAiJGFjX3B3ZCIgJiYgbHMgLWRpIC5gIHx8Ci0g IGFzX2ZuX2Vycm9yICQ/ICJ3b3JraW5nIGRpcmVjdG9yeSBjYW5ub3QgYmUgZGV0ZXJtaW5lZCIK LXRlc3QgIlgkYWNfbHNfZGkiID0gIlgkYWNfcHdkX2xzX2RpIiB8fAotICBhc19mbl9lcnJvciAk PyAicHdkIGRvZXMgbm90IHJlcG9ydCBuYW1lIG9mIHdvcmtpbmcgZGlyZWN0b3J5IgotCi0KLSMg RmluZCB0aGUgc291cmNlIGZpbGVzLCBpZiBsb2NhdGlvbiB3YXMgbm90IHNwZWNpZmllZC4KLWlm IHRlc3QgLXogIiRzcmNkaXIiOyB0aGVuCi0gIGFjX3NyY2Rpcl9kZWZhdWx0ZWQ9eWVzCi0gICMg VHJ5IHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGlzIHNjcmlwdCwgdGhlbiB0aGUgcGFyZW50 IGRpcmVjdG9yeS4KLSAgYWNfY29uZmRpcj1gJGFzX2Rpcm5hbWUgLS0gIiRhc19teXNlbGYiIHx8 Ci0kYXNfZXhwciBYIiRhc19teXNlbGYiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBc fCBcCi0JIFgiJGFzX215c2VsZiIgOiAnWFwoLy9cKVteL10nIFx8IFwKLQkgWCIkYXNfbXlzZWxm IiA6ICdYXCgvL1wpJCcgXHwgXAotCSBYIiRhc19teXNlbGYiIDogJ1hcKC9cKScgXHwgLiAyPi9k ZXYvbnVsbCB8fAotJGFzX2VjaG8gWCIkYXNfbXlzZWxmIiB8Ci0gICAgc2VkICcvXlhcKC4qW14v XVwpXC9cLypbXi9dW14vXSpcLyokL3sKLQkgICAgcy8vXDEvCi0JICAgIHEKLQkgIH0KLQkgIC9e WFwoXC9cL1wpW14vXS4qL3sKLQkgICAgcy8vXDEvCi0JICAgIHEKLQkgIH0KLQkgIC9eWFwoXC9c L1wpJC97Ci0JICAgIHMvL1wxLwotCSAgICBxCi0JICB9Ci0JICAvXlhcKFwvXCkuKi97Ci0JICAg IHMvL1wxLwotCSAgICBxCi0JICB9Ci0JICBzLy4qLy4vOyBxJ2AKLSAgc3JjZGlyPSRhY19jb25m ZGlyCi0gIGlmIHRlc3QgISAtciAiJHNyY2Rpci8kYWNfdW5pcXVlX2ZpbGUiOyB0aGVuCi0gICAg c3JjZGlyPS4uCi0gIGZpCi1lbHNlCi0gIGFjX3NyY2Rpcl9kZWZhdWx0ZWQ9bm8KLWZpCi1pZiB0 ZXN0ICEgLXIgIiRzcmNkaXIvJGFjX3VuaXF1ZV9maWxlIjsgdGhlbgotICB0ZXN0ICIkYWNfc3Jj ZGlyX2RlZmF1bHRlZCIgPSB5ZXMgJiYgc3JjZGlyPSIkYWNfY29uZmRpciBvciAuLiIKLSAgYXNf Zm5fZXJyb3IgJD8gImNhbm5vdCBmaW5kIHNvdXJjZXMgKCRhY191bmlxdWVfZmlsZSkgaW4gJHNy Y2RpciIKLWZpCi1hY19tc2c9InNvdXJjZXMgYXJlIGluICRzcmNkaXIsIGJ1dCBcYGNkICRzcmNk aXInIGRvZXMgbm90IHdvcmsiCi1hY19hYnNfY29uZmRpcj1gKAotCWNkICIkc3JjZGlyIiAmJiB0 ZXN0IC1yICIuLyRhY191bmlxdWVfZmlsZSIgfHwgYXNfZm5fZXJyb3IgJD8gIiRhY19tc2ciCi0J cHdkKWAKLSMgV2hlbiBidWlsZGluZyBpbiBwbGFjZSwgc2V0IHNyY2Rpcj0uCi1pZiB0ZXN0ICIk YWNfYWJzX2NvbmZkaXIiID0gIiRhY19wd2QiOyB0aGVuCi0gIHNyY2Rpcj0uCi1maQotIyBSZW1v dmUgdW5uZWNlc3NhcnkgdHJhaWxpbmcgc2xhc2hlcyBmcm9tIHNyY2Rpci4KLSMgRG91YmxlIHNs YXNoZXMgaW4gZmlsZSBuYW1lcyBpbiBvYmplY3QgZmlsZSBkZWJ1Z2dpbmcgaW5mbwotIyBtZXNz IHVwIE0teCBnZGIgaW4gRW1hY3MuCi1jYXNlICRzcmNkaXIgaW4KLSovKSBzcmNkaXI9YGV4cHIg Ilgkc3JjZGlyIiA6ICdYXCguKlteL11cKScgXHwgIlgkc3JjZGlyIiA6ICdYXCguKlwpJ2A7Owot ZXNhYwotZm9yIGFjX3ZhciBpbiAkYWNfcHJlY2lvdXNfdmFyczsgZG8KLSAgZXZhbCBhY19lbnZf JHthY192YXJ9X3NldD1cJHske2FjX3Zhcn0rc2V0fQotICBldmFsIGFjX2Vudl8ke2FjX3Zhcn1f dmFsdWU9XCQke2FjX3Zhcn0KLSAgZXZhbCBhY19jdl9lbnZfJHthY192YXJ9X3NldD1cJHske2Fj X3Zhcn0rc2V0fQotICBldmFsIGFjX2N2X2Vudl8ke2FjX3Zhcn1fdmFsdWU9XCQke2FjX3Zhcn0K LWRvbmUKLQotIwotIyBSZXBvcnQgdGhlIC0taGVscCBtZXNzYWdlLgotIwotaWYgdGVzdCAiJGFj X2luaXRfaGVscCIgPSAibG9uZyI7IHRoZW4KLSAgIyBPbWl0IHNvbWUgaW50ZXJuYWwgb3Igb2Jz b2xldGUgb3B0aW9ucyB0byBtYWtlIHRoZSBsaXN0IGxlc3MgaW1wb3NpbmcuCi0gICMgVGhpcyBt ZXNzYWdlIGlzIHRvbyBsb25nIHRvIGJlIGEgc3RyaW5nIGluIHRoZSBBL1VYIDMuMSBzaC4KLSAg Y2F0IDw8X0FDRU9GCi1cYGNvbmZpZ3VyZScgY29uZmlndXJlcyBYZW4gSHlwZXJ2aXNvciBTdHVi IERvbWFpbnMgNC4xMyB0byBhZGFwdCB0byBtYW55IGtpbmRzIG9mIHN5c3RlbXMuCi0KLVVzYWdl OiAkMCBbT1BUSU9OXS4uLiBbVkFSPVZBTFVFXS4uLgotCi1UbyBhc3NpZ24gZW52aXJvbm1lbnQg dmFyaWFibGVzIChlLmcuLCBDQywgQ0ZMQUdTLi4uKSwgc3BlY2lmeSB0aGVtIGFzCi1WQVI9VkFM VUUuICBTZWUgYmVsb3cgZm9yIGRlc2NyaXB0aW9ucyBvZiBzb21lIG9mIHRoZSB1c2VmdWwgdmFy aWFibGVzLgotCi1EZWZhdWx0cyBmb3IgdGhlIG9wdGlvbnMgYXJlIHNwZWNpZmllZCBpbiBicmFj a2V0cy4KLQotQ29uZmlndXJhdGlvbjoKLSAgLWgsIC0taGVscCAgICAgICAgICAgICAgZGlzcGxh eSB0aGlzIGhlbHAgYW5kIGV4aXQKLSAgICAgIC0taGVscD1zaG9ydCAgICAgICAgZGlzcGxheSBv cHRpb25zIHNwZWNpZmljIHRvIHRoaXMgcGFja2FnZQotICAgICAgLS1oZWxwPXJlY3Vyc2l2ZSAg ICBkaXNwbGF5IHRoZSBzaG9ydCBoZWxwIG9mIGFsbCB0aGUgaW5jbHVkZWQgcGFja2FnZXMKLSAg LVYsIC0tdmVyc2lvbiAgICAgICAgICAgZGlzcGxheSB2ZXJzaW9uIGluZm9ybWF0aW9uIGFuZCBl eGl0Ci0gIC1xLCAtLXF1aWV0LCAtLXNpbGVudCAgIGRvIG5vdCBwcmludCBcYGNoZWNraW5nIC4u LicgbWVzc2FnZXMKLSAgICAgIC0tY2FjaGUtZmlsZT1GSUxFICAgY2FjaGUgdGVzdCByZXN1bHRz IGluIEZJTEUgW2Rpc2FibGVkXQotICAtQywgLS1jb25maWctY2FjaGUgICAgICBhbGlhcyBmb3Ig XGAtLWNhY2hlLWZpbGU9Y29uZmlnLmNhY2hlJwotICAtbiwgLS1uby1jcmVhdGUgICAgICAgICBk byBub3QgY3JlYXRlIG91dHB1dCBmaWxlcwotICAgICAgLS1zcmNkaXI9RElSICAgICAgICBmaW5k IHRoZSBzb3VyY2VzIGluIERJUiBbY29uZmlndXJlIGRpciBvciBcYC4uJ10KLQotSW5zdGFsbGF0 aW9uIGRpcmVjdG9yaWVzOgotICAtLXByZWZpeD1QUkVGSVggICAgICAgICBpbnN0YWxsIGFyY2hp dGVjdHVyZS1pbmRlcGVuZGVudCBmaWxlcyBpbiBQUkVGSVgKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgWyRhY19kZWZhdWx0X3ByZWZpeF0KLSAgLS1leGVjLXByZWZpeD1FUFJFRklYICAgaW5z dGFsbCBhcmNoaXRlY3R1cmUtZGVwZW5kZW50IGZpbGVzIGluIEVQUkVGSVgKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgW1BSRUZJWF0KLQotQnkgZGVmYXVsdCwgXGBtYWtlIGluc3RhbGwnIHdp bGwgaW5zdGFsbCBhbGwgdGhlIGZpbGVzIGluCi1cYCRhY19kZWZhdWx0X3ByZWZpeC9iaW4nLCBc YCRhY19kZWZhdWx0X3ByZWZpeC9saWInIGV0Yy4gIFlvdSBjYW4gc3BlY2lmeQotYW4gaW5zdGFs bGF0aW9uIHByZWZpeCBvdGhlciB0aGFuIFxgJGFjX2RlZmF1bHRfcHJlZml4JyB1c2luZyBcYC0t cHJlZml4JywKLWZvciBpbnN0YW5jZSBcYC0tcHJlZml4PVwkSE9NRScuCi0KLUZvciBiZXR0ZXIg Y29udHJvbCwgdXNlIHRoZSBvcHRpb25zIGJlbG93LgotCi1GaW5lIHR1bmluZyBvZiB0aGUgaW5z dGFsbGF0aW9uIGRpcmVjdG9yaWVzOgotICAtLWJpbmRpcj1ESVIgICAgICAgICAgICB1c2VyIGV4 ZWN1dGFibGVzIFtFUFJFRklYL2Jpbl0KLSAgLS1zYmluZGlyPURJUiAgICAgICAgICAgc3lzdGVt IGFkbWluIGV4ZWN1dGFibGVzIFtFUFJFRklYL3NiaW5dCi0gIC0tbGliZXhlY2Rpcj1ESVIgICAg ICAgIHByb2dyYW0gZXhlY3V0YWJsZXMgW0VQUkVGSVgvbGliZXhlY10KLSAgLS1zeXNjb25mZGly PURJUiAgICAgICAgcmVhZC1vbmx5IHNpbmdsZS1tYWNoaW5lIGRhdGEgW1BSRUZJWC9ldGNdCi0g IC0tc2hhcmVkc3RhdGVkaXI9RElSICAgIG1vZGlmaWFibGUgYXJjaGl0ZWN0dXJlLWluZGVwZW5k ZW50IGRhdGEgW1BSRUZJWC9jb21dCi0gIC0tbG9jYWxzdGF0ZWRpcj1ESVIgICAgIG1vZGlmaWFi bGUgc2luZ2xlLW1hY2hpbmUgZGF0YSBbUFJFRklYL3Zhcl0KLSAgLS1ydW5zdGF0ZWRpcj1ESVIg ICAgICAgbW9kaWZpYWJsZSBwZXItcHJvY2VzcyBkYXRhIFtMT0NBTFNUQVRFRElSL3J1bl0KLSAg LS1saWJkaXI9RElSICAgICAgICAgICAgb2JqZWN0IGNvZGUgbGlicmFyaWVzIFtFUFJFRklYL2xp Yl0KLSAgLS1pbmNsdWRlZGlyPURJUiAgICAgICAgQyBoZWFkZXIgZmlsZXMgW1BSRUZJWC9pbmNs dWRlXQotICAtLW9sZGluY2x1ZGVkaXI9RElSICAgICBDIGhlYWRlciBmaWxlcyBmb3Igbm9uLWdj YyBbL3Vzci9pbmNsdWRlXQotICAtLWRhdGFyb290ZGlyPURJUiAgICAgICByZWFkLW9ubHkgYXJj aC4taW5kZXBlbmRlbnQgZGF0YSByb290IFtQUkVGSVgvc2hhcmVdCi0gIC0tZGF0YWRpcj1ESVIg ICAgICAgICAgIHJlYWQtb25seSBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgZGF0YSBbREFUQVJP T1RESVJdCi0gIC0taW5mb2Rpcj1ESVIgICAgICAgICAgIGluZm8gZG9jdW1lbnRhdGlvbiBbREFU QVJPT1RESVIvaW5mb10KLSAgLS1sb2NhbGVkaXI9RElSICAgICAgICAgbG9jYWxlLWRlcGVuZGVu dCBkYXRhIFtEQVRBUk9PVERJUi9sb2NhbGVdCi0gIC0tbWFuZGlyPURJUiAgICAgICAgICAgIG1h biBkb2N1bWVudGF0aW9uIFtEQVRBUk9PVERJUi9tYW5dCi0gIC0tZG9jZGlyPURJUiAgICAgICAg ICAgIGRvY3VtZW50YXRpb24gcm9vdCBbREFUQVJPT1RESVIvZG9jL3hlbl0KLSAgLS1odG1sZGly PURJUiAgICAgICAgICAgaHRtbCBkb2N1bWVudGF0aW9uIFtET0NESVJdCi0gIC0tZHZpZGlyPURJ UiAgICAgICAgICAgIGR2aSBkb2N1bWVudGF0aW9uIFtET0NESVJdCi0gIC0tcGRmZGlyPURJUiAg ICAgICAgICAgIHBkZiBkb2N1bWVudGF0aW9uIFtET0NESVJdCi0gIC0tcHNkaXI9RElSICAgICAg ICAgICAgIHBzIGRvY3VtZW50YXRpb24gW0RPQ0RJUl0KLV9BQ0VPRgotCi0gIGNhdCA8PFxfQUNF T0YKLQotU3lzdGVtIHR5cGVzOgotICAtLWJ1aWxkPUJVSUxEICAgICBjb25maWd1cmUgZm9yIGJ1 aWxkaW5nIG9uIEJVSUxEIFtndWVzc2VkXQotICAtLWhvc3Q9SE9TVCAgICAgICBjcm9zcy1jb21w aWxlIHRvIGJ1aWxkIHByb2dyYW1zIHRvIHJ1biBvbiBIT1NUIFtCVUlMRF0KLV9BQ0VPRgotZmkK LQotaWYgdGVzdCAtbiAiJGFjX2luaXRfaGVscCI7IHRoZW4KLSAgY2FzZSAkYWNfaW5pdF9oZWxw IGluCi0gICAgIHNob3J0IHwgcmVjdXJzaXZlICkgZWNobyAiQ29uZmlndXJhdGlvbiBvZiBYZW4g SHlwZXJ2aXNvciBTdHViIERvbWFpbnMgNC4xMzoiOzsKLSAgIGVzYWMKLSAgY2F0IDw8XF9BQ0VP RgotCi1PcHRpb25hbCBGZWF0dXJlczoKLSAgLS1kaXNhYmxlLW9wdGlvbi1jaGVja2luZyAgaWdu b3JlIHVucmVjb2duaXplZCAtLWVuYWJsZS8tLXdpdGggb3B0aW9ucwotICAtLWRpc2FibGUtRkVB VFVSRSAgICAgICBkbyBub3QgaW5jbHVkZSBGRUFUVVJFIChzYW1lIGFzIC0tZW5hYmxlLUZFQVRV UkU9bm8pCi0gIC0tZW5hYmxlLUZFQVRVUkVbPUFSR10gIGluY2x1ZGUgRkVBVFVSRSBbQVJHPXll c10KLSAgLS1lbmFibGUtaW9lbXUtc3R1YmRvbSAgQnVpbGQgYW5kIGluc3RhbGwgaW9lbXUtc3R1 YmRvbQotICAtLWVuYWJsZS1jLXN0dWJkb20gICAgICBCdWlsZCBhbmQgaW5zdGFsbCBjLXN0dWJk b20gKGRlZmF1bHQgaXMgRElTQUJMRUQpCi0gIC0tZW5hYmxlLWNhbWwtc3R1YmRvbSAgIEJ1aWxk IGFuZCBpbnN0YWxsIGNhbWwtc3R1YmRvbSAoZGVmYXVsdCBpcyBESVNBQkxFRCkKLSAgLS1kaXNh YmxlLXB2LWdydWIgICAgICAgQnVpbGQgYW5kIGluc3RhbGwgcHYtZ3J1YiAoZGVmYXVsdCBpcyBF TkFCTEVEKQotICAtLWRpc2FibGUteGVuc3RvcmUtc3R1YmRvbQotICAgICAgICAgICAgICAgICAg ICAgICAgICBCdWlsZCBhbmQgaW5zdGFsbCB4ZW5zdG9yZS1zdHViZG9tIChkZWZhdWx0IGlzCi0g ICAgICAgICAgICAgICAgICAgICAgICAgIEVOQUJMRUQpCi0gIC0tZW5hYmxlLXZ0cG0tc3R1YmRv bSAgIEJ1aWxkIGFuZCBpbnN0YWxsIHZ0cG0tc3R1YmRvbQotICAtLWVuYWJsZS12dHBtbWdyLXN0 dWJkb20KLSAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbGQgYW5kIGluc3RhbGwgdnRwbW1n ci1zdHViZG9tCi0KLSAgLS1kaXNhYmxlLWRlYnVnICAgICAgICAgRGlzYWJsZSBkZWJ1ZyBidWls ZCBvZiBzdHViZG9tIChkZWZhdWx0IGlzIEVOQUJMRUQpCi0gIC0tZGlzYWJsZS1leHRmaWxlcyAg ICAgIFVzZSB4ZW4gZXh0ZmlsZXMgcmVwb3NpdG9yeSBmb3IgbGlicmFyaWVzIChkZWZhdWx0Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgIGlzIEVOQUJMRUQpCi0KLVNvbWUgaW5mbHVlbnRpYWwg ZW52aXJvbm1lbnQgdmFyaWFibGVzOgotICBDTUFLRSAgICAgICBQYXRoIHRvIHRoZSBjbWFrZSBw cm9ncmFtCi0gIENDICAgICAgICAgIEMgY29tcGlsZXIgY29tbWFuZAotICBDRkxBR1MgICAgICBD IGNvbXBpbGVyIGZsYWdzCi0gIExERkxBR1MgICAgIGxpbmtlciBmbGFncywgZS5nLiAtTDxsaWIg ZGlyPiBpZiB5b3UgaGF2ZSBsaWJyYXJpZXMgaW4gYQotICAgICAgICAgICAgICBub25zdGFuZGFy ZCBkaXJlY3RvcnkgPGxpYiBkaXI+Ci0gIExJQlMgICAgICAgIGxpYnJhcmllcyB0byBwYXNzIHRv IHRoZSBsaW5rZXIsIGUuZy4gLWw8bGlicmFyeT4KLSAgQ1BQRkxBR1MgICAgKE9iamVjdGl2ZSkg Qy9DKysgcHJlcHJvY2Vzc29yIGZsYWdzLCBlLmcuIC1JPGluY2x1ZGUgZGlyPiBpZgotICAgICAg ICAgICAgICB5b3UgaGF2ZSBoZWFkZXJzIGluIGEgbm9uc3RhbmRhcmQgZGlyZWN0b3J5IDxpbmNs dWRlIGRpcj4KLSAgWkxJQl9VUkwgICAgRG93bmxvYWQgdXJsIGZvciB6bGliCi0gIExJQlBDSV9V UkwgIERvd25sb2FkIHVybCBmb3IgbGlicGNpCi0gIE5FV0xJQl9VUkwgIERvd25sb2FkIHVybCBm b3IgbmV3bGliCi0gIExXSVBfVVJMICAgIERvd25sb2FkIHVybCBmb3IgbHdpcAotICBHUlVCX1VS TCAgICBEb3dubG9hZCB1cmwgZm9yIGdydWIKLSAgT0NBTUxfVVJMICAgRG93bmxvYWQgdXJsIGZv ciBvY2FtbAotICBHTVBfVVJMICAgICBEb3dubG9hZCB1cmwgZm9yIGxpYmdtcAotICBQT0xBUlNT TF9VUkwKLSAgICAgICAgICAgICAgRG93bmxvYWQgdXJsIGZvciBwb2xhcnNzbAotICBUUE1FTVVf VVJMICBEb3dubG9hZCB1cmwgZm9yIGJlcmxpb3MgdHBtIGVtdWxhdG9yCi0KLVVzZSB0aGVzZSB2 YXJpYWJsZXMgdG8gb3ZlcnJpZGUgdGhlIGNob2ljZXMgbWFkZSBieSBgY29uZmlndXJlJyBvciB0 byBoZWxwCi1pdCB0byBmaW5kIGxpYnJhcmllcyBhbmQgcHJvZ3JhbXMgd2l0aCBub25zdGFuZGFy ZCBuYW1lcy9sb2NhdGlvbnMuCi0KLVJlcG9ydCBidWdzIHRvIDx4ZW4tZGV2ZWxAbGlzdHMueGVu Lm9yZz4uCi1YZW4gSHlwZXJ2aXNvciBTdHViIERvbWFpbnMgaG9tZSBwYWdlOiA8aHR0cDovL3d3 dy54ZW4ub3JnLz4uCi1fQUNFT0YKLWFjX3N0YXR1cz0kPwotZmkKLQotaWYgdGVzdCAiJGFjX2lu aXRfaGVscCIgPSAicmVjdXJzaXZlIjsgdGhlbgotICAjIElmIHRoZXJlIGFyZSBzdWJkaXJzLCBy ZXBvcnQgdGhlaXIgc3BlY2lmaWMgLS1oZWxwLgotICBmb3IgYWNfZGlyIGluIDogJGFjX3N1YmRp cnNfYWxsOyBkbyB0ZXN0ICJ4JGFjX2RpciIgPSB4OiAmJiBjb250aW51ZQotICAgIHRlc3QgLWQg IiRhY19kaXIiIHx8Ci0gICAgICB7IGNkICIkc3JjZGlyIiAmJiBhY19wd2Q9YHB3ZGAgJiYgc3Jj ZGlyPS4gJiYgdGVzdCAtZCAiJGFjX2RpciI7IH0gfHwKLSAgICAgIGNvbnRpbnVlCi0gICAgYWNf YnVpbGRkaXI9LgotCi1jYXNlICIkYWNfZGlyIiBpbgotLikgYWNfZGlyX3N1ZmZpeD0gYWNfdG9w X2J1aWxkZGlyX3N1Yj0uIGFjX3RvcF9idWlsZF9wcmVmaXg9IDs7Ci0qKQotICBhY19kaXJfc3Vm Zml4PS9gJGFzX2VjaG8gIiRhY19kaXIiIHwgc2VkICdzfF5cLltcXC9dfHwnYAotICAjIEEgIi4u IiBmb3IgZWFjaCBkaXJlY3RvcnkgaW4gJGFjX2Rpcl9zdWZmaXguCi0gIGFjX3RvcF9idWlsZGRp cl9zdWI9YCRhc19lY2hvICIkYWNfZGlyX3N1ZmZpeCIgfCBzZWQgJ3N8L1teXFwvXSp8Ly4ufGc7 c3wvfHwnYAotICBjYXNlICRhY190b3BfYnVpbGRkaXJfc3ViIGluCi0gICIiKSBhY190b3BfYnVp bGRkaXJfc3ViPS4gYWNfdG9wX2J1aWxkX3ByZWZpeD0gOzsKLSAgKikgIGFjX3RvcF9idWlsZF9w cmVmaXg9JGFjX3RvcF9idWlsZGRpcl9zdWIvIDs7Ci0gIGVzYWMgOzsKLWVzYWMKLWFjX2Fic190 b3BfYnVpbGRkaXI9JGFjX3B3ZAotYWNfYWJzX2J1aWxkZGlyPSRhY19wd2QkYWNfZGlyX3N1ZmZp eAotIyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eToKLWFjX3RvcF9idWlsZGRpcj0kYWNfdG9w X2J1aWxkX3ByZWZpeAotCi1jYXNlICRzcmNkaXIgaW4KLSAgLikgICMgV2UgYXJlIGJ1aWxkaW5n IGluIHBsYWNlLgotICAgIGFjX3NyY2Rpcj0uCi0gICAgYWNfdG9wX3NyY2Rpcj0kYWNfdG9wX2J1 aWxkZGlyX3N1YgotICAgIGFjX2Fic190b3Bfc3JjZGlyPSRhY19wd2QgOzsKLSAgW1xcL10qIHwg PzpbXFwvXSogKSAgIyBBYnNvbHV0ZSBuYW1lLgotICAgIGFjX3NyY2Rpcj0kc3JjZGlyJGFjX2Rp cl9zdWZmaXg7Ci0gICAgYWNfdG9wX3NyY2Rpcj0kc3JjZGlyCi0gICAgYWNfYWJzX3RvcF9zcmNk aXI9JHNyY2RpciA7OwotICAqKSAjIFJlbGF0aXZlIG5hbWUuCi0gICAgYWNfc3JjZGlyPSRhY190 b3BfYnVpbGRfcHJlZml4JHNyY2RpciRhY19kaXJfc3VmZml4Ci0gICAgYWNfdG9wX3NyY2Rpcj0k YWNfdG9wX2J1aWxkX3ByZWZpeCRzcmNkaXIKLSAgICBhY19hYnNfdG9wX3NyY2Rpcj0kYWNfcHdk LyRzcmNkaXIgOzsKLWVzYWMKLWFjX2Fic19zcmNkaXI9JGFjX2Fic190b3Bfc3JjZGlyJGFjX2Rp cl9zdWZmaXgKLQotICAgIGNkICIkYWNfZGlyIiB8fCB7IGFjX3N0YXR1cz0kPzsgY29udGludWU7 IH0KLSAgICAjIENoZWNrIGZvciBndWVzdGVkIGNvbmZpZ3VyZS4KLSAgICBpZiB0ZXN0IC1mICIk YWNfc3JjZGlyL2NvbmZpZ3VyZS5nbnUiOyB0aGVuCi0gICAgICBlY2hvICYmCi0gICAgICAkU0hF TEwgIiRhY19zcmNkaXIvY29uZmlndXJlLmdudSIgLS1oZWxwPXJlY3Vyc2l2ZQotICAgIGVsaWYg dGVzdCAtZiAiJGFjX3NyY2Rpci9jb25maWd1cmUiOyB0aGVuCi0gICAgICBlY2hvICYmCi0gICAg ICAkU0hFTEwgIiRhY19zcmNkaXIvY29uZmlndXJlIiAtLWhlbHA9cmVjdXJzaXZlCi0gICAgZWxz ZQotICAgICAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogbm8gY29uZmlndXJhdGlvbiBpbmZv cm1hdGlvbiBpcyBpbiAkYWNfZGlyIiA+JjIKLSAgICBmaSB8fCBhY19zdGF0dXM9JD8KLSAgICBj ZCAiJGFjX3B3ZCIgfHwgeyBhY19zdGF0dXM9JD87IGJyZWFrOyB9Ci0gIGRvbmUKLWZpCi0KLXRl c3QgLW4gIiRhY19pbml0X2hlbHAiICYmIGV4aXQgJGFjX3N0YXR1cwotaWYgJGFjX2luaXRfdmVy c2lvbjsgdGhlbgotICBjYXQgPDxcX0FDRU9GCi1YZW4gSHlwZXJ2aXNvciBTdHViIERvbWFpbnMg Y29uZmlndXJlIDQuMTMKLWdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OQotCi1Db3B5cmln aHQgKEMpIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi1UaGlzIGNvbmZpZ3Vy ZSBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgot Z2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5 IGl0LgotX0FDRU9GCi0gIGV4aXQKLWZpCi0KLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAj IwotIyMgQXV0b2NvbmYgaW5pdGlhbGl6YXRpb24uICMjCi0jIyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0gIyMKLQotIyBhY19mbl9jX3RyeV9jb21waWxlIExJTkVOTwotIyAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQotIyBUcnkgdG8gY29tcGlsZSBjb25mdGVzdC4kYWNfZXh0LCBhbmQgcmV0 dXJuIHdoZXRoZXIgdGhpcyBzdWNjZWVkZWQuCi1hY19mbl9jX3RyeV9jb21waWxlICgpCi17Ci0g IGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0 YWNrPSRhc19saW5lbm9fc3RhY2sKLSAgcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotICBpZiB7 IHsgYWNfdHJ5PSIkYWNfY29tcGlsZSIKLWNhc2UgIigoJGFjX3RyeSIgaW4KLSAgKlwiKiB8ICpc YCogfCAqXFwqKSBhY190cnlfZWNobz1cJGFjX3RyeTs7Ci0gICopIGFjX3RyeV9lY2hvPSRhY190 cnk7OwotZXNhYwotZXZhbCBhY190cnlfZWNobz0iXCJcJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiAkYWNfdHJ5X2VjaG9cIiIKLSRhc19lY2hvICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQotICAo ZXZhbCAiJGFjX2NvbXBpbGUiKSAyPmNvbmZ0ZXN0LmVycgotICBhY19zdGF0dXM9JD8KLSAgaWYg dGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KLSAgICBncmVwIC12ICdeICorJyBjb25mdGVzdC5l cnIgPmNvbmZ0ZXN0LmVyMQotICAgIGNhdCBjb25mdGVzdC5lcjEgPiY1Ci0gICAgbXYgLWYgY29u ZnRlc3QuZXIxIGNvbmZ0ZXN0LmVycgotICBmaQotICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgdGVzdCAkYWNfc3RhdHVzID0g MDsgfSAmJiB7Ci0JIHRlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIiB8fAotCSB0ZXN0ICEgLXMg Y29uZnRlc3QuZXJyCi0gICAgICAgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQ7IHRo ZW4gOgotICBhY19yZXR2YWw9MAotZWxzZQotICAkYXNfZWNobyAiJGFzX21lOiBmYWlsZWQgcHJv Z3JhbSB3YXM6IiA+JjUKLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLQotCWFj X3JldHZhbD0xCi1maQotICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNr Ois6fSB1bnNldCBhc19saW5lbm8KLSAgYXNfZm5fc2V0X3N0YXR1cyAkYWNfcmV0dmFsCi0KLX0g IyBhY19mbl9jX3RyeV9jb21waWxlCi1jYXQgPmNvbmZpZy5sb2cgPDxfQUNFT0YKLVRoaXMgZmls ZSBjb250YWlucyBhbnkgbWVzc2FnZXMgcHJvZHVjZWQgYnkgY29tcGlsZXJzIHdoaWxlCi1ydW5u aW5nIGNvbmZpZ3VyZSwgdG8gYWlkIGRlYnVnZ2luZyBpZiBjb25maWd1cmUgbWFrZXMgYSBtaXN0 YWtlLgotCi1JdCB3YXMgY3JlYXRlZCBieSBYZW4gSHlwZXJ2aXNvciBTdHViIERvbWFpbnMgJGFz X21lIDQuMTMsIHdoaWNoIHdhcwotZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5LiAgSW52 b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCi0KLSAgJCAkMCAkQAotCi1fQUNFT0YKLWV4ZWMgNT4+ Y29uZmlnLmxvZwotewotY2F0IDw8X0FTVU5BTUUKLSMjIC0tLS0tLS0tLSAjIwotIyMgUGxhdGZv cm0uICMjCi0jIyAtLS0tLS0tLS0gIyMKLQotaG9zdG5hbWUgPSBgKGhvc3RuYW1lIHx8IHVuYW1l IC1uKSAyPi9kZXYvbnVsbCB8IHNlZCAxcWAKLXVuYW1lIC1tID0gYCh1bmFtZSAtbSkgMj4vZGV2 L251bGwgfHwgZWNobyB1bmtub3duYAotdW5hbWUgLXIgPSBgKHVuYW1lIC1yKSAyPi9kZXYvbnVs bCB8fCBlY2hvIHVua25vd25gCi11bmFtZSAtcyA9IGAodW5hbWUgLXMpIDI+L2Rldi9udWxsIHx8 IGVjaG8gdW5rbm93bmAKLXVuYW1lIC12ID0gYCh1bmFtZSAtdikgMj4vZGV2L251bGwgfHwgZWNo byB1bmtub3duYAotCi0vdXNyL2Jpbi91bmFtZSAtcCA9IGAoL3Vzci9iaW4vdW5hbWUgLXApIDI+ L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKLS9iaW4vdW5hbWUgLVggICAgID0gYCgvYmluL3Vu YW1lIC1YKSAyPi9kZXYvbnVsbCAgICAgfHwgZWNobyB1bmtub3duYAotCi0vYmluL2FyY2ggICAg ICAgICAgICAgID0gYCgvYmluL2FyY2gpIDI+L2Rldi9udWxsICAgICAgICAgICAgICB8fCBlY2hv IHVua25vd25gCi0vdXNyL2Jpbi9hcmNoIC1rICAgICAgID0gYCgvdXNyL2Jpbi9hcmNoIC1rKSAy Pi9kZXYvbnVsbCAgICAgICB8fCBlY2hvIHVua25vd25gCi0vdXNyL2NvbnZleC9nZXRzeXNpbmZv ID0gYCgvdXNyL2NvbnZleC9nZXRzeXNpbmZvKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25g Ci0vdXNyL2Jpbi9ob3N0aW5mbyAgICAgID0gYCgvdXNyL2Jpbi9ob3N0aW5mbykgMj4vZGV2L251 bGwgICAgICB8fCBlY2hvIHVua25vd25gCi0vYmluL21hY2hpbmUgICAgICAgICAgID0gYCgvYmlu L21hY2hpbmUpIDI+L2Rldi9udWxsICAgICAgICAgICB8fCBlY2hvIHVua25vd25gCi0vdXNyL2Jp bi9vc2xldmVsICAgICAgID0gYCgvdXNyL2Jpbi9vc2xldmVsKSAyPi9kZXYvbnVsbCAgICAgICB8 fCBlY2hvIHVua25vd25gCi0vYmluL3VuaXZlcnNlICAgICAgICAgID0gYCgvYmluL3VuaXZlcnNl KSAyPi9kZXYvbnVsbCAgICAgICAgICB8fCBlY2hvIHVua25vd25gCi0KLV9BU1VOQU1FCi0KLWFz X3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLWZvciBhc19kaXIgaW4gJFBBVEgK LWRvCi0gIElGUz0kYXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4K LSAgICAkYXNfZWNobyAiUEFUSDogJGFzX2RpciIKLSAgZG9uZQotSUZTPSRhc19zYXZlX0lGUwot Ci19ID4mNQotCi1jYXQgPiY1IDw8X0FDRU9GCi0KLQotIyMgLS0tLS0tLS0tLS0gIyMKLSMjIENv cmUgdGVzdHMuICMjCi0jIyAtLS0tLS0tLS0tLSAjIwotCi1fQUNFT0YKLQotCi0jIEtlZXAgYSB0 cmFjZSBvZiB0aGUgY29tbWFuZCBsaW5lLgotIyBTdHJpcCBvdXQgLS1uby1jcmVhdGUgYW5kIC0t bm8tcmVjdXJzaW9uIHNvIHRoZXkgZG8gbm90IHBpbGUgdXAuCi0jIFN0cmlwIG91dCAtLXNpbGVu dCBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gcmVjb3JkIGl0IGZvciBmdXR1cmUgcnVucy4KLSMg QWxzbyBxdW90ZSBhbnkgYXJncyBjb250YWluaW5nIHNoZWxsIG1ldGEtY2hhcmFjdGVycy4KLSMg TWFrZSB0d28gcGFzc2VzIHRvIGFsbG93IGZvciBwcm9wZXIgZHVwbGljYXRlLWFyZ3VtZW50IHN1 cHByZXNzaW9uLgotYWNfY29uZmlndXJlX2FyZ3M9Ci1hY19jb25maWd1cmVfYXJnczA9Ci1hY19j b25maWd1cmVfYXJnczE9Ci1hY19tdXN0X2tlZXBfbmV4dD1mYWxzZQotZm9yIGFjX3Bhc3MgaW4g MSAyCi1kbwotICBmb3IgYWNfYXJnCi0gIGRvCi0gICAgY2FzZSAkYWNfYXJnIGluCi0gICAgLW5v LWNyZWF0ZSB8IC0tbm8tYyogfCAtbiB8IC1uby1yZWN1cnNpb24gfCAtLW5vLXIqKSBjb250aW51 ZSA7OwotICAgIC1xIHwgLXF1aWV0IHwgLS1xdWlldCB8IC0tcXVpZSB8IC0tcXVpIHwgLS1xdSB8 IC0tcSBcCi0gICAgfCAtc2lsZW50IHwgLS1zaWxlbnQgfCAtLXNpbGVuIHwgLS1zaWxlIHwgLS1z aWwpCi0gICAgICBjb250aW51ZSA7OwotICAgICpcJyopCi0gICAgICBhY19hcmc9YCRhc19lY2hv ICIkYWNfYXJnIiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYCA7OwotICAgIGVzYWMKLSAgICBj YXNlICRhY19wYXNzIGluCi0gICAgMSkgYXNfZm5fYXBwZW5kIGFjX2NvbmZpZ3VyZV9hcmdzMCAi ICckYWNfYXJnJyIgOzsKLSAgICAyKQotICAgICAgYXNfZm5fYXBwZW5kIGFjX2NvbmZpZ3VyZV9h cmdzMSAiICckYWNfYXJnJyIKLSAgICAgIGlmIHRlc3QgJGFjX211c3Rfa2VlcF9uZXh0ID0gdHJ1 ZTsgdGhlbgotCWFjX211c3Rfa2VlcF9uZXh0PWZhbHNlICMgR290IHZhbHVlLCBiYWNrIHRvIG5v cm1hbC4KLSAgICAgIGVsc2UKLQljYXNlICRhY19hcmcgaW4KLQkgICo9KiB8IC0tY29uZmlnLWNh Y2hlIHwgLUMgfCAtZGlzYWJsZS0qIHwgLS1kaXNhYmxlLSogXAotCSAgfCAtZW5hYmxlLSogfCAt LWVuYWJsZS0qIHwgLWdhcyB8IC0tZyogfCAtbmZwIHwgLS1uZiogXAotCSAgfCAtcSB8IC1xdWll dCB8IC0tcSogfCAtc2lsZW50IHwgLS1zaWwqIHwgLXYgfCAtdmVyYiogXAotCSAgfCAtd2l0aC0q IHwgLS13aXRoLSogfCAtd2l0aG91dC0qIHwgLS13aXRob3V0LSogfCAtLXgpCi0JICAgIGNhc2Ug IiRhY19jb25maWd1cmVfYXJnczAgIiBpbgotCSAgICAgICIkYWNfY29uZmlndXJlX2FyZ3MxIioi ICckYWNfYXJnJyAiKiApIGNvbnRpbnVlIDs7Ci0JICAgIGVzYWMKLQkgICAgOzsKLQkgIC0qICkg YWNfbXVzdF9rZWVwX25leHQ9dHJ1ZSA7OwotCWVzYWMKLSAgICAgIGZpCi0gICAgICBhc19mbl9h cHBlbmQgYWNfY29uZmlndXJlX2FyZ3MgIiAnJGFjX2FyZyciCi0gICAgICA7OwotICAgIGVzYWMK LSAgZG9uZQotZG9uZQoteyBhY19jb25maWd1cmVfYXJnczA9OyB1bnNldCBhY19jb25maWd1cmVf YXJnczA7fQoteyBhY19jb25maWd1cmVfYXJnczE9OyB1bnNldCBhY19jb25maWd1cmVfYXJnczE7 fQotCi0jIFdoZW4gaW50ZXJydXB0ZWQgb3IgZXhpdCdkLCBjbGVhbnVwIHRlbXBvcmFyeSBmaWxl cywgYW5kIGNvbXBsZXRlCi0jIGNvbmZpZy5sb2cuICBXZSByZW1vdmUgY29tbWVudHMgYmVjYXVz ZSBhbnl3YXkgdGhlIHF1b3RlcyBpbiB0aGVyZQotIyB3b3VsZCBjYXVzZSBwcm9ibGVtcyBvciBs b29rIHVnbHkuCi0jIFdBUk5JTkc6IFVzZSAnXCcnIHRvIHJlcHJlc2VudCBhbiBhcG9zdHJvcGhl IHdpdGhpbiB0aGUgdHJhcC4KLSMgV0FSTklORzogRG8gbm90IHN0YXJ0IHRoZSB0cmFwIGNvZGUg d2l0aCBhIG5ld2xpbmUsIGR1ZSB0byBhIEZyZWVCU0QgNC4wIGJ1Zy4KLXRyYXAgJ2V4aXRfc3Rh dHVzPSQ/Ci0gICMgU2F2ZSBpbnRvIGNvbmZpZy5sb2cgc29tZSBpbmZvcm1hdGlvbiB0aGF0IG1p Z2h0IGhlbHAgaW4gZGVidWdnaW5nLgotICB7Ci0gICAgZWNobwotCi0gICAgJGFzX2VjaG8gIiMj IC0tLS0tLS0tLS0tLS0tLS0gIyMKLSMjIENhY2hlIHZhcmlhYmxlcy4gIyMKLSMjIC0tLS0tLS0t LS0tLS0tLS0gIyMiCi0gICAgZWNobwotICAgICMgVGhlIGZvbGxvd2luZyB3YXkgb2Ygd3JpdGlu ZyB0aGUgY2FjaGUgbWlzaGFuZGxlcyBuZXdsaW5lcyBpbiB2YWx1ZXMsCi0oCi0gIGZvciBhY192 YXIgaW4gYChzZXQpIDI+JjEgfCBzZWQgLW4gJ1wnJ3MvXlwoW2EtekEtWl9dW2EtekEtWjAtOV9d KlwpPS4qL1wxL3AnXCcnYDsgZG8KLSAgICBldmFsIGFjX3ZhbD1cJCRhY192YXIKLSAgICBjYXNl ICRhY192YWwgaW4gIygKLSAgICAqJHthc19ubH0qKQotICAgICAgY2FzZSAkYWNfdmFyIGluICMo Ci0gICAgICAqX2N2XyopIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog V0FSTklORzogY2FjaGUgdmFyaWFibGUgJGFjX3ZhciBjb250YWlucyBhIG5ld2xpbmUiID4mNQot JGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogY2FjaGUgdmFyaWFibGUgJGFjX3ZhciBjb250YWlu cyBhIG5ld2xpbmUiID4mMjt9IDs7Ci0gICAgICBlc2FjCi0gICAgICBjYXNlICRhY192YXIgaW4g IygKLSAgICAgIF8gfCBJRlMgfCBhc19ubCkgOzsgIygKLSAgICAgIEJBU0hfQVJHViB8IEJBU0hf U09VUkNFKSBldmFsICRhY192YXI9IDs7ICMoCi0gICAgICAqKSB7IGV2YWwgJGFjX3Zhcj07IHVu c2V0ICRhY192YXI7fSA7OwotICAgICAgZXNhYyA7OwotICAgIGVzYWMKLSAgZG9uZQotICAoc2V0 KSAyPiYxIHwKLSAgICBjYXNlICRhc19ubGAoYWNfc3BhY2U9J1wnJyAnXCcnOyBzZXQpIDI+JjFg IGluICMoCi0gICAgKiR7YXNfbmx9YWNfc3BhY2U9XCAqKQotICAgICAgc2VkIC1uIFwKLQkicy8n XCcnLydcJydcXFxcJ1wnJydcJycvZzsKLQkgIHMvXlxcKFtfJGFzX2NyX2FsbnVtXSpfY3ZfW18k YXNfY3JfYWxudW1dKlxcKT1cXCguKlxcKS9cXDE9J1wnJ1xcMidcJycvcCIKLSAgICAgIDs7ICMo Ci0gICAgKikKLSAgICAgIHNlZCAtbiAiL15bXyRhc19jcl9hbG51bV0qX2N2X1tfJGFzX2NyX2Fs bnVtXSo9L3AiCi0gICAgICA7OwotICAgIGVzYWMgfAotICAgIHNvcnQKLSkKLSAgICBlY2hvCi0K LSAgICAkYXNfZWNobyAiIyMgLS0tLS0tLS0tLS0tLS0tLS0gIyMKLSMjIE91dHB1dCB2YXJpYWJs ZXMuICMjCi0jIyAtLS0tLS0tLS0tLS0tLS0tLSAjIyIKLSAgICBlY2hvCi0gICAgZm9yIGFjX3Zh ciBpbiAkYWNfc3Vic3RfdmFycwotICAgIGRvCi0gICAgICBldmFsIGFjX3ZhbD1cJCRhY192YXIK LSAgICAgIGNhc2UgJGFjX3ZhbCBpbgotICAgICAgKlwnXCcnKikgYWNfdmFsPWAkYXNfZWNobyAi JGFjX3ZhbCIgfCBzZWQgInMvJ1wnJy8nXCcnXFxcXFxcXFwnXCcnJ1wnJy9nImA7OwotICAgICAg ZXNhYwotICAgICAgJGFzX2VjaG8gIiRhY192YXI9J1wnJyRhY192YWwnXCcnIgotICAgIGRvbmUg fCBzb3J0Ci0gICAgZWNobwotCi0gICAgaWYgdGVzdCAtbiAiJGFjX3N1YnN0X2ZpbGVzIjsgdGhl bgotICAgICAgJGFzX2VjaG8gIiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLSMjIEZpbGUgc3Vi c3RpdHV0aW9ucy4gIyMKLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0gIyMiCi0gICAgICBlY2hvCi0g ICAgICBmb3IgYWNfdmFyIGluICRhY19zdWJzdF9maWxlcwotICAgICAgZG8KLQlldmFsIGFjX3Zh bD1cJCRhY192YXIKLQljYXNlICRhY192YWwgaW4KLQkqXCdcJycqKSBhY192YWw9YCRhc19lY2hv ICIkYWNfdmFsIiB8IHNlZCAicy8nXCcnLydcJydcXFxcXFxcXCdcJycnXCcnL2ciYDs7Ci0JZXNh YwotCSRhc19lY2hvICIkYWNfdmFyPSdcJyckYWNfdmFsJ1wnJyIKLSAgICAgIGRvbmUgfCBzb3J0 Ci0gICAgICBlY2hvCi0gICAgZmkKLQotICAgIGlmIHRlc3QgLXMgY29uZmRlZnMuaDsgdGhlbgot ICAgICAgJGFzX2VjaG8gIiMjIC0tLS0tLS0tLS0tICMjCi0jIyBjb25mZGVmcy5oLiAjIwotIyMg LS0tLS0tLS0tLS0gIyMiCi0gICAgICBlY2hvCi0gICAgICBjYXQgY29uZmRlZnMuaAotICAgICAg ZWNobwotICAgIGZpCi0gICAgdGVzdCAiJGFjX3NpZ25hbCIgIT0gMCAmJgotICAgICAgJGFzX2Vj aG8gIiRhc19tZTogY2F1Z2h0IHNpZ25hbCAkYWNfc2lnbmFsIgotICAgICRhc19lY2hvICIkYXNf bWU6IGV4aXQgJGV4aXRfc3RhdHVzIgotICB9ID4mNQotICBybSAtZiBjb3JlICouY29yZSBjb3Jl LmNvbmZ0ZXN0LiogJiYKLSAgICBybSAtZiAtciBjb25mdGVzdCogY29uZmRlZnMqIGNvbmYkJCog JGFjX2NsZWFuX2ZpbGVzICYmCi0gICAgZXhpdCAkZXhpdF9zdGF0dXMKLScgMAotZm9yIGFjX3Np Z25hbCBpbiAxIDIgMTMgMTU7IGRvCi0gIHRyYXAgJ2FjX3NpZ25hbD0nJGFjX3NpZ25hbCc7IGFz X2ZuX2V4aXQgMScgJGFjX3NpZ25hbAotZG9uZQotYWNfc2lnbmFsPTAKLQotIyBjb25mZGVmcy5o IGF2b2lkcyBPUyBjb21tYW5kIGxpbmUgbGVuZ3RoIGxpbWl0cyB0aGF0IERFRlMgY2FuIGV4Y2Vl ZC4KLXJtIC1mIC1yIGNvbmZ0ZXN0KiBjb25mZGVmcy5oCi0KLSRhc19lY2hvICIvKiBjb25mZGVm cy5oICovIiA+IGNvbmZkZWZzLmgKLQotIyBQcmVkZWZpbmVkIHByZXByb2Nlc3NvciB2YXJpYWJs ZXMuCi0KLWNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSNkZWZpbmUgUEFDS0FHRV9OQU1FICIk UEFDS0FHRV9OQU1FIgotX0FDRU9GCi0KLWNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSNkZWZp bmUgUEFDS0FHRV9UQVJOQU1FICIkUEFDS0FHRV9UQVJOQU1FIgotX0FDRU9GCi0KLWNhdCA+PmNv bmZkZWZzLmggPDxfQUNFT0YKLSNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICIkUEFDS0FHRV9WRVJT SU9OIgotX0FDRU9GCi0KLWNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSNkZWZpbmUgUEFDS0FH RV9TVFJJTkcgIiRQQUNLQUdFX1NUUklORyIKLV9BQ0VPRgotCi1jYXQgPj5jb25mZGVmcy5oIDw8 X0FDRU9GCi0jZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICIkUEFDS0FHRV9CVUdSRVBPUlQiCi1f QUNFT0YKLQotY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSBQQUNLQUdFX1VSTCAi JFBBQ0tBR0VfVVJMIgotX0FDRU9GCi0KLQotIyBMZXQgdGhlIHNpdGUgZmlsZSBzZWxlY3QgYW4g YWx0ZXJuYXRlIGNhY2hlIGZpbGUgaWYgaXQgd2FudHMgdG8uCi0jIFByZWZlciBhbiBleHBsaWNp dGx5IHNlbGVjdGVkIGZpbGUgdG8gYXV0b21hdGljYWxseSBzZWxlY3RlZCBvbmVzLgotYWNfc2l0 ZV9maWxlMT1OT05FCi1hY19zaXRlX2ZpbGUyPU5PTkUKLWlmIHRlc3QgLW4gIiRDT05GSUdfU0lU RSI7IHRoZW4KLSAgIyBXZSBkbyBub3Qgd2FudCBhIFBBVEggc2VhcmNoIGZvciBjb25maWcuc2l0 ZS4KLSAgY2FzZSAkQ09ORklHX1NJVEUgaW4gIygoCi0gICAgLSopICBhY19zaXRlX2ZpbGUxPS4v JENPTkZJR19TSVRFOzsKLSAgICAqLyopIGFjX3NpdGVfZmlsZTE9JENPTkZJR19TSVRFOzsKLSAg ICAqKSAgIGFjX3NpdGVfZmlsZTE9Li8kQ09ORklHX1NJVEU7OwotICBlc2FjCi1lbGlmIHRlc3Qg IngkcHJlZml4IiAhPSB4Tk9ORTsgdGhlbgotICBhY19zaXRlX2ZpbGUxPSRwcmVmaXgvc2hhcmUv Y29uZmlnLnNpdGUKLSAgYWNfc2l0ZV9maWxlMj0kcHJlZml4L2V0Yy9jb25maWcuc2l0ZQotZWxz ZQotICBhY19zaXRlX2ZpbGUxPSRhY19kZWZhdWx0X3ByZWZpeC9zaGFyZS9jb25maWcuc2l0ZQot ICBhY19zaXRlX2ZpbGUyPSRhY19kZWZhdWx0X3ByZWZpeC9ldGMvY29uZmlnLnNpdGUKLWZpCi1m b3IgYWNfc2l0ZV9maWxlIGluICIkYWNfc2l0ZV9maWxlMSIgIiRhY19zaXRlX2ZpbGUyIgotZG8K LSAgdGVzdCAieCRhY19zaXRlX2ZpbGUiID0geE5PTkUgJiYgY29udGludWUKLSAgaWYgdGVzdCAv ZGV2L251bGwgIT0gIiRhY19zaXRlX2ZpbGUiICYmIHRlc3QgLXIgIiRhY19zaXRlX2ZpbGUiOyB0 aGVuCi0gICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBsb2FkaW5n IHNpdGUgc2NyaXB0ICRhY19zaXRlX2ZpbGUiID4mNQotJGFzX2VjaG8gIiRhc19tZTogbG9hZGlu ZyBzaXRlIHNjcmlwdCAkYWNfc2l0ZV9maWxlIiA+JjY7fQotICAgIHNlZCAncy9eL3wgLycgIiRh Y19zaXRlX2ZpbGUiID4mNQotICAgIC4gIiRhY19zaXRlX2ZpbGUiIFwKLSAgICAgIHx8IHsgeyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdk JzoiID4mNQotJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQot YXNfZm5fZXJyb3IgJD8gImZhaWxlZCB0byBsb2FkIHNpdGUgc2NyaXB0ICRhY19zaXRlX2ZpbGUK LVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9Ci0gIGZp Ci1kb25lCi0KLWlmIHRlc3QgLXIgIiRjYWNoZV9maWxlIjsgdGhlbgotICAjIFNvbWUgdmVyc2lv bnMgb2YgYmFzaCB3aWxsIGZhaWwgdG8gc291cmNlIC9kZXYvbnVsbCAoc3BlY2lhbCBmaWxlcwot ICAjIGFjdHVhbGx5KSwgc28gd2UgYXZvaWQgZG9pbmcgdGhhdC4gIERKR1BQIGVtdWxhdGVzIGl0 IGFzIGEgcmVndWxhciBmaWxlLgotICBpZiB0ZXN0IC9kZXYvbnVsbCAhPSAiJGNhY2hlX2ZpbGUi ICYmIHRlc3QgLWYgIiRjYWNoZV9maWxlIjsgdGhlbgotICAgIHsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogbG9hZGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY1Ci0kYXNf ZWNobyAiJGFzX21lOiBsb2FkaW5nIGNhY2hlICRjYWNoZV9maWxlIiA+JjY7fQotICAgIGNhc2Ug JGNhY2hlX2ZpbGUgaW4KLSAgICAgIFtcXC9dKiB8ID86W1xcL10qICkgLiAiJGNhY2hlX2ZpbGUi OzsKLSAgICAgICopICAgICAgICAgICAgICAgICAgICAgIC4gIi4vJGNhY2hlX2ZpbGUiOzsKLSAg ICBlc2FjCi0gIGZpCi1lbHNlCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogY3JlYXRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNQotJGFzX2VjaG8gIiRhc19tZTog Y3JlYXRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNjt9Ci0gID4kY2FjaGVfZmlsZQotZmkKLQot IyBDaGVjayB0aGF0IHRoZSBwcmVjaW91cyB2YXJpYWJsZXMgc2F2ZWQgaW4gdGhlIGNhY2hlIGhh dmUga2VwdCB0aGUgc2FtZQotIyB2YWx1ZS4KLWFjX2NhY2hlX2NvcnJ1cHRlZD1mYWxzZQotZm9y IGFjX3ZhciBpbiAkYWNfcHJlY2lvdXNfdmFyczsgZG8KLSAgZXZhbCBhY19vbGRfc2V0PVwkYWNf Y3ZfZW52XyR7YWNfdmFyfV9zZXQKLSAgZXZhbCBhY19uZXdfc2V0PVwkYWNfZW52XyR7YWNfdmFy fV9zZXQKLSAgZXZhbCBhY19vbGRfdmFsPVwkYWNfY3ZfZW52XyR7YWNfdmFyfV92YWx1ZQotICBl dmFsIGFjX25ld192YWw9XCRhY19lbnZfJHthY192YXJ9X3ZhbHVlCi0gIGNhc2UgJGFjX29sZF9z ZXQsJGFjX25ld19zZXQgaW4KLSAgICBzZXQsKQotICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogXGAkYWNfdmFyJyB3YXMgc2V0IHRvIFxgJGFjX29s ZF92YWwnIGluIHRoZSBwcmV2aW91cyBydW4iID4mNQotJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6 IFxgJGFjX3Zhcicgd2FzIHNldCB0byBcYCRhY19vbGRfdmFsJyBpbiB0aGUgcHJldmlvdXMgcnVu IiA+JjI7fQotICAgICAgYWNfY2FjaGVfY29ycnVwdGVkPTogOzsKLSAgICAsc2V0KQotICAgICAg eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogXGAkYWNfdmFy JyB3YXMgbm90IHNldCBpbiB0aGUgcHJldmlvdXMgcnVuIiA+JjUKLSRhc19lY2hvICIkYXNfbWU6 IGVycm9yOiBcYCRhY192YXInIHdhcyBub3Qgc2V0IGluIHRoZSBwcmV2aW91cyBydW4iID4mMjt9 Ci0gICAgICBhY19jYWNoZV9jb3JydXB0ZWQ9OiA7OwotICAgICwpOzsKLSAgICAqKQotICAgICAg aWYgdGVzdCAieCRhY19vbGRfdmFsIiAhPSAieCRhY19uZXdfdmFsIjsgdGhlbgotCSMgZGlmZmVy ZW5jZXMgaW4gd2hpdGVzcGFjZSBkbyBub3QgbGVhZCB0byBmYWlsdXJlLgotCWFjX29sZF92YWxf dz1gZWNobyB4ICRhY19vbGRfdmFsYAotCWFjX25ld192YWxfdz1gZWNobyB4ICRhY19uZXdfdmFs YAotCWlmIHRlc3QgIiRhY19vbGRfdmFsX3ciICE9ICIkYWNfbmV3X3ZhbF93IjsgdGhlbgotCSAg eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogXGAkYWNfdmFy JyBoYXMgY2hhbmdlZCBzaW5jZSB0aGUgcHJldmlvdXMgcnVuOiIgPiY1Ci0kYXNfZWNobyAiJGFz X21lOiBlcnJvcjogXGAkYWNfdmFyJyBoYXMgY2hhbmdlZCBzaW5jZSB0aGUgcHJldmlvdXMgcnVu OiIgPiYyO30KLQkgIGFjX2NhY2hlX2NvcnJ1cHRlZD06Ci0JZWxzZQotCSAgeyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiB3YXJuaW5nOiBpZ25vcmluZyB3aGl0ZXNwYWNl IGNoYW5nZXMgaW4gXGAkYWNfdmFyJyBzaW5jZSB0aGUgcHJldmlvdXMgcnVuOiIgPiY1Ci0kYXNf ZWNobyAiJGFzX21lOiB3YXJuaW5nOiBpZ25vcmluZyB3aGl0ZXNwYWNlIGNoYW5nZXMgaW4gXGAk YWNfdmFyJyBzaW5jZSB0aGUgcHJldmlvdXMgcnVuOiIgPiYyO30KLQkgIGV2YWwgJGFjX3Zhcj1c JGFjX29sZF92YWwKLQlmaQotCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogICBmb3JtZXIgdmFsdWU6ICBcYCRhY19vbGRfdmFsJyIgPiY1Ci0kYXNfZWNobyAiJGFzX21l OiAgIGZvcm1lciB2YWx1ZTogIFxgJGFjX29sZF92YWwnIiA+JjI7fQotCXsgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogICBjdXJyZW50IHZhbHVlOiBcYCRhY19uZXdfdmFs JyIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiAgIGN1cnJlbnQgdmFsdWU6IFxgJGFjX25ld192YWwn IiA+JjI7fQotICAgICAgZmk7OwotICBlc2FjCi0gICMgUGFzcyBwcmVjaW91cyB2YXJpYWJsZXMg dG8gY29uZmlnLnN0YXR1cy4KLSAgaWYgdGVzdCAiJGFjX25ld19zZXQiID0gc2V0OyB0aGVuCi0g ICAgY2FzZSAkYWNfbmV3X3ZhbCBpbgotICAgICpcJyopIGFjX2FyZz0kYWNfdmFyPWAkYXNfZWNo byAiJGFjX25ld192YWwiIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgIDs7Ci0gICAgKikgYWNf YXJnPSRhY192YXI9JGFjX25ld192YWwgOzsKLSAgICBlc2FjCi0gICAgY2FzZSAiICRhY19jb25m aWd1cmVfYXJncyAiIGluCi0gICAgICAqIiAnJGFjX2FyZycgIiopIDs7ICMgQXZvaWQgZHVwcy4g IFVzZSBvZiBxdW90ZXMgZW5zdXJlcyBhY2N1cmFjeS4KLSAgICAgICopIGFzX2ZuX2FwcGVuZCBh Y19jb25maWd1cmVfYXJncyAiICckYWNfYXJnJyIgOzsKLSAgICBlc2FjCi0gIGZpCi1kb25lCi1p ZiAkYWNfY2FjaGVfY29ycnVwdGVkOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKLSRhc19lY2hvICIkYXNf bWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogY2hhbmdlcyBpbiB0aGUgZW52aXJvbm1lbnQgY2Fu IGNvbXByb21pc2UgdGhlIGJ1aWxkIiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBjaGFu Z2VzIGluIHRoZSBlbnZpcm9ubWVudCBjYW4gY29tcHJvbWlzZSB0aGUgYnVpbGQiID4mMjt9Ci0g IGFzX2ZuX2Vycm9yICQ/ICJydW4gXGBtYWtlIGRpc3RjbGVhbicgYW5kL29yIFxgcm0gJGNhY2hl X2ZpbGUnIGFuZCBzdGFydCBvdmVyIiAiJExJTkVOTyIgNQotZmkKLSMjIC0tLS0tLS0tLS0tLS0t LS0tLS0tICMjCi0jIyBNYWluIGJvZHkgb2Ygc2NyaXB0LiAjIwotIyMgLS0tLS0tLS0tLS0tLS0t LS0tLS0gIyMKLQotYWNfZXh0PWMKLWFjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCi1hY19jb21waWxl PSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCi1hY19saW5r PSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNv bmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwotYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBp bGVyX2dudQotCi0KLQotYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIC4uL2NvbmZp Zy9TdHViZG9tLm1rIgotCi1hY19hdXhfZGlyPQotZm9yIGFjX2RpciBpbiAuLi8gIiRzcmNkaXIi Ly4uLzsgZG8KLSAgaWYgdGVzdCAtZiAiJGFjX2Rpci9pbnN0YWxsLXNoIjsgdGhlbgotICAgIGFj X2F1eF9kaXI9JGFjX2RpcgotICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGlyL2luc3RhbGwt c2ggLWMiCi0gICAgYnJlYWsKLSAgZWxpZiB0ZXN0IC1mICIkYWNfZGlyL2luc3RhbGwuc2giOyB0 aGVuCi0gICAgYWNfYXV4X2Rpcj0kYWNfZGlyCi0gICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9k aXIvaW5zdGFsbC5zaCAtYyIKLSAgICBicmVhawotICBlbGlmIHRlc3QgLWYgIiRhY19kaXIvc2h0 b29sIjsgdGhlbgotICAgIGFjX2F1eF9kaXI9JGFjX2RpcgotICAgIGFjX2luc3RhbGxfc2g9IiRh Y19hdXhfZGlyL3NodG9vbCBpbnN0YWxsIC1jIgotICAgIGJyZWFrCi0gIGZpCi1kb25lCi1pZiB0 ZXN0IC16ICIkYWNfYXV4X2RpciI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBmaW5k IGluc3RhbGwtc2gsIGluc3RhbGwuc2gsIG9yIHNodG9vbCBpbiAuLi8gXCIkc3JjZGlyXCIvLi4v IiAiJExJTkVOTyIgNQotZmkKLQotIyBUaGVzZSB0aHJlZSB2YXJpYWJsZXMgYXJlIHVuZG9jdW1l bnRlZCBhbmQgdW5zdXBwb3J0ZWQsCi0jIGFuZCBhcmUgaW50ZW5kZWQgdG8gYmUgd2l0aGRyYXdu IGluIGEgZnV0dXJlIEF1dG9jb25mIHJlbGVhc2UuCi0jIFRoZXkgY2FuIGNhdXNlIHNlcmlvdXMg cHJvYmxlbXMgaWYgYSBidWlsZGVyJ3Mgc291cmNlIHRyZWUgaXMgaW4gYSBkaXJlY3RvcnkKLSMg d2hvc2UgZnVsbCBuYW1lIGNvbnRhaW5zIHVudXN1YWwgY2hhcmFjdGVycy4KLWFjX2NvbmZpZ19n dWVzcz0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5ndWVzcyIgICMgUGxlYXNlIGRvbid0IHVz ZSB0aGlzIHZhci4KLWFjX2NvbmZpZ19zdWI9IiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuc3Vi IiAgIyBQbGVhc2UgZG9uJ3QgdXNlIHRoaXMgdmFyLgotYWNfY29uZmlndXJlPSIkU0hFTEwgJGFj X2F1eF9kaXIvY29uZmlndXJlIiAgIyBQbGVhc2UgZG9uJ3QgdXNlIHRoaXMgdmFyLgotCi0KLQot IyBNYWtlIHN1cmUgd2UgY2FuIHJ1biBjb25maWcuc3ViLgotJFNIRUxMICIkYWNfYXV4X2Rpci9j b25maWcuc3ViIiBzdW40ID4vZGV2L251bGwgMj4mMSB8fAotICBhc19mbl9lcnJvciAkPyAiY2Fu bm90IHJ1biAkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgIiRMSU5FTk8iIDUKLQoteyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBidWlsZCBzeXN0 ZW0gdHlwZSIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBidWlsZCBzeXN0ZW0gdHlwZS4uLiAi ID4mNjsgfQotaWYgJHthY19jdl9idWlsZCs6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24g IihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGFjX2J1aWxkX2FsaWFzPSRidWlsZF9hbGlhcwotdGVz dCAieCRhY19idWlsZF9hbGlhcyIgPSB4ICYmCi0gIGFjX2J1aWxkX2FsaWFzPWAkU0hFTEwgIiRh Y19hdXhfZGlyL2NvbmZpZy5ndWVzcyJgCi10ZXN0ICJ4JGFjX2J1aWxkX2FsaWFzIiA9IHggJiYK LSAgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBndWVzcyBidWlsZCB0eXBlOyB5b3UgbXVzdCBzcGVj aWZ5IG9uZSIgIiRMSU5FTk8iIDUKLWFjX2N2X2J1aWxkPWAkU0hFTEwgIiRhY19hdXhfZGlyL2Nv bmZpZy5zdWIiICRhY19idWlsZF9hbGlhc2AgfHwKLSAgYXNfZm5fZXJyb3IgJD8gIiRTSEVMTCAk YWNfYXV4X2Rpci9jb25maWcuc3ViICRhY19idWlsZF9hbGlhcyBmYWlsZWQiICIkTElORU5PIiA1 Ci0KLWZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog JGFjX2N2X2J1aWxkIiA+JjUKLSRhc19lY2hvICIkYWNfY3ZfYnVpbGQiID4mNjsgfQotY2FzZSAk YWNfY3ZfYnVpbGQgaW4KLSotKi0qKSA7OwotKikgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgdmFs dWUgb2YgY2Fub25pY2FsIGJ1aWxkIiAiJExJTkVOTyIgNTs7Ci1lc2FjCi1idWlsZD0kYWNfY3Zf YnVpbGQKLWFjX3NhdmVfSUZTPSRJRlM7IElGUz0nLScKLXNldCB4ICRhY19jdl9idWlsZAotc2hp ZnQKLWJ1aWxkX2NwdT0kMQotYnVpbGRfdmVuZG9yPSQyCi1zaGlmdDsgc2hpZnQKLSMgUmVtZW1i ZXIsIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgSUZTIGlzIHVzZWQgdG8gY3JlYXRlICQqLAotIyBl eGNlcHQgd2l0aCBvbGQgc2hlbGxzOgotYnVpbGRfb3M9JCoKLUlGUz0kYWNfc2F2ZV9JRlMKLWNh c2UgJGJ1aWxkX29zIGluICpcICopIGJ1aWxkX29zPWBlY2hvICIkYnVpbGRfb3MiIHwgc2VkICdz LyAvLS9nJ2A7OyBlc2FjCi0KLQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBjaGVja2luZyBob3N0IHN5c3RlbSB0eXBlIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5n IGhvc3Qgc3lzdGVtIHR5cGUuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfaG9zdCs6fSBmYWxzZTsg dGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGlmIHRlc3QgIngk aG9zdF9hbGlhcyIgPSB4OyB0aGVuCi0gIGFjX2N2X2hvc3Q9JGFjX2N2X2J1aWxkCi1lbHNlCi0g IGFjX2N2X2hvc3Q9YCRTSEVMTCAiJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgJGhvc3RfYWxpYXNg IHx8Ci0gICAgYXNfZm5fZXJyb3IgJD8gIiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuc3ViICRo b3N0X2FsaWFzIGZhaWxlZCIgIiRMSU5FTk8iIDUKLWZpCi0KLWZpCi17ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2hvc3QiID4mNQotJGFzX2Vj aG8gIiRhY19jdl9ob3N0IiA+JjY7IH0KLWNhc2UgJGFjX2N2X2hvc3QgaW4KLSotKi0qKSA7Owot KikgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgdmFsdWUgb2YgY2Fub25pY2FsIGhvc3QiICIkTElO RU5PIiA1OzsKLWVzYWMKLWhvc3Q9JGFjX2N2X2hvc3QKLWFjX3NhdmVfSUZTPSRJRlM7IElGUz0n LScKLXNldCB4ICRhY19jdl9ob3N0Ci1zaGlmdAotaG9zdF9jcHU9JDEKLWhvc3RfdmVuZG9yPSQy Ci1zaGlmdDsgc2hpZnQKLSMgUmVtZW1iZXIsIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgSUZTIGlz IHVzZWQgdG8gY3JlYXRlICQqLAotIyBleGNlcHQgd2l0aCBvbGQgc2hlbGxzOgotaG9zdF9vcz0k KgotSUZTPSRhY19zYXZlX0lGUwotY2FzZSAkaG9zdF9vcyBpbiAqXCAqKSBob3N0X29zPWBlY2hv ICIkaG9zdF9vcyIgfCBzZWQgJ3MvIC8tL2cnYDs7IGVzYWMKLQotCi0KLSMgTTQgTWFjcm8gaW5j bHVkZXMKLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQot Ci0KLQotCi0KLQotCi0KLQotCi0KLQotIyBFbmFibGUvZGlzYWJsZSBzdHViIGRvbWFpbnMKLQot IyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWlvZW11LXN0dWJkb20gd2FzIGdpdmVuLgotaWYgdGVz dCAiJHtlbmFibGVfaW9lbXVfc3R1YmRvbStzZXR9IiA9IHNldDsgdGhlbiA6Ci0gIGVuYWJsZXZh bD0kZW5hYmxlX2lvZW11X3N0dWJkb207Ci0KLWlmIHRlc3QgIngkZW5hYmxldmFsIiA9ICJ4eWVz IjsgdGhlbiA6Ci0KLQotaW9lbXU9eQotU1RVQkRPTV9UQVJHRVRTPSIkU1RVQkRPTV9UQVJHRVRT IGlvZW11IgotU1RVQkRPTV9CVUlMRD0iJFNUVUJET01fQlVJTEQgaW9lbXUtc3R1YmRvbSIKLVNU VUJET01fSU5TVEFMTD0iJFNUVUJET01fSU5TVEFMTCBpbnN0YWxsLWlvZW11IgotU1RVQkRPTV9V TklOU1RBTEw9IiRTVFVCRE9NX1VOSU5TVEFMTCBpbnN0YWxsLWlvZW11IgotCi0KLWVsc2UKLQot aWYgdGVzdCAieCRlbmFibGV2YWwiID0gInhubyI7IHRoZW4gOgotCi0KLWlvZW11PW4KLQotCi1m aQotCi1maQotCi0KLWZpCi0KLQotCi0jIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtYy1zdHViZG9t IHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7ZW5hYmxlX2Nfc3R1YmRvbStzZXR9IiA9IHNldDsgdGhl biA6Ci0gIGVuYWJsZXZhbD0kZW5hYmxlX2Nfc3R1YmRvbTsKLQotaWYgdGVzdCAieCRlbmFibGV2 YWwiID0gInh5ZXMiOyB0aGVuIDoKLQotCi1jPXkKLVNUVUJET01fVEFSR0VUUz0iJFNUVUJET01f VEFSR0VUUyBjIgotU1RVQkRPTV9CVUlMRD0iJFNUVUJET01fQlVJTEQgYy1zdHViZG9tIgotU1RV QkRPTV9JTlNUQUxMPSIkU1RVQkRPTV9JTlNUQUxMIGluc3RhbGwtYyIKLVNUVUJET01fVU5JTlNU QUxMPSIkU1RVQkRPTV9VTklOU1RBTEwgaW5zdGFsbC1jIgotCi0KLWVsc2UKLQotaWYgdGVzdCAi eCRlbmFibGV2YWwiID0gInhubyI7IHRoZW4gOgotCi0KLWM9bgotCi0KLWZpCi0KLWZpCi0KLQot ZWxzZQotCi0KLWM9bgotCi0KLWZpCi0KLQotCi0KLSMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1j YW1sLXN0dWJkb20gd2FzIGdpdmVuLgotaWYgdGVzdCAiJHtlbmFibGVfY2FtbF9zdHViZG9tK3Nl dH0iID0gc2V0OyB0aGVuIDoKLSAgZW5hYmxldmFsPSRlbmFibGVfY2FtbF9zdHViZG9tOwotCi1p ZiB0ZXN0ICJ4JGVuYWJsZXZhbCIgPSAieHllcyI7IHRoZW4gOgotCi0KLWNhbWw9eQotU1RVQkRP TV9UQVJHRVRTPSIkU1RVQkRPTV9UQVJHRVRTIGNhbWwiCi1TVFVCRE9NX0JVSUxEPSIkU1RVQkRP TV9CVUlMRCBjYW1sLXN0dWJkb20iCi1TVFVCRE9NX0lOU1RBTEw9IiRTVFVCRE9NX0lOU1RBTEwg aW5zdGFsbC1jYW1sIgotU1RVQkRPTV9VTklOU1RBTEw9IiRTVFVCRE9NX1VOSU5TVEFMTCBpbnN0 YWxsLWNhbWwiCi0KLQotZWxzZQotCi1pZiB0ZXN0ICJ4JGVuYWJsZXZhbCIgPSAieG5vIjsgdGhl biA6Ci0KLQotY2FtbD1uCi0KLQotZmkKLQotZmkKLQotCi1lbHNlCi0KLQotY2FtbD1uCi0KLQot ZmkKLQotCi0KLQotIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXB2LWdydWIgd2FzIGdpdmVuLgot aWYgdGVzdCAiJHtlbmFibGVfcHZfZ3J1YitzZXR9IiA9IHNldDsgdGhlbiA6Ci0gIGVuYWJsZXZh bD0kZW5hYmxlX3B2X2dydWI7Ci0KLWlmIHRlc3QgIngkZW5hYmxldmFsIiA9ICJ4eWVzIjsgdGhl biA6Ci0KLQotZ3J1Yj15Ci1TVFVCRE9NX1RBUkdFVFM9IiRTVFVCRE9NX1RBUkdFVFMgZ3J1YiIK LVNUVUJET01fQlVJTEQ9IiRTVFVCRE9NX0JVSUxEIHB2LWdydWIiCi1TVFVCRE9NX0lOU1RBTEw9 IiRTVFVCRE9NX0lOU1RBTEwgaW5zdGFsbC1ncnViIgotU1RVQkRPTV9VTklOU1RBTEw9IiRTVFVC RE9NX1VOSU5TVEFMTCBpbnN0YWxsLWdydWIiCi0KLQotZWxzZQotCi1pZiB0ZXN0ICJ4JGVuYWJs ZXZhbCIgPSAieG5vIjsgdGhlbiA6Ci0KLQotZ3J1Yj1uCi0KLQotZmkKLQotZmkKLQotCi1lbHNl Ci0KLQotZ3J1Yj15Ci1TVFVCRE9NX1RBUkdFVFM9IiRTVFVCRE9NX1RBUkdFVFMgZ3J1YiIKLVNU VUJET01fQlVJTEQ9IiRTVFVCRE9NX0JVSUxEIHB2LWdydWIiCi1TVFVCRE9NX0lOU1RBTEw9IiRT VFVCRE9NX0lOU1RBTEwgaW5zdGFsbC1ncnViIgotU1RVQkRPTV9VTklOU1RBTEw9IiRTVFVCRE9N X1VOSU5TVEFMTCBpbnN0YWxsLWdydWIiCi0KLQotZmkKLQotCi0KLQotIyBDaGVjayB3aGV0aGVy IC0tZW5hYmxlLXhlbnN0b3JlLXN0dWJkb20gd2FzIGdpdmVuLgotaWYgdGVzdCAiJHtlbmFibGVf eGVuc3RvcmVfc3R1YmRvbStzZXR9IiA9IHNldDsgdGhlbiA6Ci0gIGVuYWJsZXZhbD0kZW5hYmxl X3hlbnN0b3JlX3N0dWJkb207Ci0KLWlmIHRlc3QgIngkZW5hYmxldmFsIiA9ICJ4eWVzIjsgdGhl biA6Ci0KLQoteGVuc3RvcmU9eQotU1RVQkRPTV9UQVJHRVRTPSIkU1RVQkRPTV9UQVJHRVRTIHhl bnN0b3JlIgotU1RVQkRPTV9CVUlMRD0iJFNUVUJET01fQlVJTEQgeGVuc3RvcmUtc3R1YmRvbSIK LVNUVUJET01fSU5TVEFMTD0iJFNUVUJET01fSU5TVEFMTCBpbnN0YWxsLXhlbnN0b3JlIgotU1RV QkRPTV9VTklOU1RBTEw9IiRTVFVCRE9NX1VOSU5TVEFMTCBpbnN0YWxsLXhlbnN0b3JlIgotCi0K LWVsc2UKLQotaWYgdGVzdCAieCRlbmFibGV2YWwiID0gInhubyI7IHRoZW4gOgotCi0KLXhlbnN0 b3JlPW4KLQotCi1maQotCi1maQotCi0KLWVsc2UKLQotCi14ZW5zdG9yZT15Ci1TVFVCRE9NX1RB UkdFVFM9IiRTVFVCRE9NX1RBUkdFVFMgeGVuc3RvcmUiCi1TVFVCRE9NX0JVSUxEPSIkU1RVQkRP TV9CVUlMRCB4ZW5zdG9yZS1zdHViZG9tIgotU1RVQkRPTV9JTlNUQUxMPSIkU1RVQkRPTV9JTlNU QUxMIGluc3RhbGwteGVuc3RvcmUiCi1TVFVCRE9NX1VOSU5TVEFMTD0iJFNUVUJET01fVU5JTlNU QUxMIGluc3RhbGwteGVuc3RvcmUiCi0KLQotZmkKLQotCi0KLQotIyBDaGVjayB3aGV0aGVyIC0t ZW5hYmxlLXZ0cG0tc3R1YmRvbSB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke2VuYWJsZV92dHBtX3N0 dWJkb20rc2V0fSIgPSBzZXQ7IHRoZW4gOgotICBlbmFibGV2YWw9JGVuYWJsZV92dHBtX3N0dWJk b207Ci0KLWlmIHRlc3QgIngkZW5hYmxldmFsIiA9ICJ4eWVzIjsgdGhlbiA6Ci0KLQotdnRwbT15 Ci1TVFVCRE9NX1RBUkdFVFM9IiRTVFVCRE9NX1RBUkdFVFMgdnRwbSIKLVNUVUJET01fQlVJTEQ9 IiRTVFVCRE9NX0JVSUxEIHZ0cG0tc3R1YmRvbSIKLVNUVUJET01fSU5TVEFMTD0iJFNUVUJET01f SU5TVEFMTCBpbnN0YWxsLXZ0cG0iCi1TVFVCRE9NX1VOSU5TVEFMTD0iJFNUVUJET01fVU5JTlNU QUxMIGluc3RhbGwtdnRwbSIKLQotCi1lbHNlCi0KLWlmIHRlc3QgIngkZW5hYmxldmFsIiA9ICJ4 bm8iOyB0aGVuIDoKLQotCi12dHBtPW4KLQotCi1maQotCi1maQotCi0KLWZpCi0KLQotCi0jIENo ZWNrIHdoZXRoZXIgLS1lbmFibGUtdnRwbW1nci1zdHViZG9tIHdhcyBnaXZlbi4KLWlmIHRlc3Qg IiR7ZW5hYmxlX3Z0cG1tZ3Jfc3R1YmRvbStzZXR9IiA9IHNldDsgdGhlbiA6Ci0gIGVuYWJsZXZh bD0kZW5hYmxlX3Z0cG1tZ3Jfc3R1YmRvbTsKLQotaWYgdGVzdCAieCRlbmFibGV2YWwiID0gInh5 ZXMiOyB0aGVuIDoKLQotCi12dHBtbWdyPXkKLVNUVUJET01fVEFSR0VUUz0iJFNUVUJET01fVEFS R0VUUyB2dHBtbWdyIgotU1RVQkRPTV9CVUlMRD0iJFNUVUJET01fQlVJTEQgdnRwbW1nci1zdHVi ZG9tIgotU1RVQkRPTV9JTlNUQUxMPSIkU1RVQkRPTV9JTlNUQUxMIGluc3RhbGwtdnRwbW1nciIK LVNUVUJET01fVU5JTlNUQUxMPSIkU1RVQkRPTV9VTklOU1RBTEwgaW5zdGFsbC12dHBtbWdyIgot Ci0KLWVsc2UKLQotaWYgdGVzdCAieCRlbmFibGV2YWwiID0gInhubyI7IHRoZW4gOgotCi0KLXZ0 cG1tZ3I9bgotCi0KLWZpCi0KLWZpCi0KLQotZmkKLQotCi0KLSMgQ2hlY2sgd2hldGhlciAtLWVu YWJsZS1xZW11LXRyYWRpdGlvbmFsIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7ZW5hYmxlX3FlbXVf dHJhZGl0aW9uYWwrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICBlbmFibGV2YWw9JGVuYWJsZV9xZW11 X3RyYWRpdGlvbmFsOwotZWxzZQotCi0gICAgY2FzZSAiJGhvc3RfY3B1IiBpbgotICAgICAgICBp WzM0NTZdODZ8eDg2XzY0KQotICAgICAgICAgICBlbmFibGVfcWVtdV90cmFkaXRpb25hbD0ieWVz Ijs7Ci0gICAgICAgICopIGVuYWJsZV9xZW11X3RyYWRpdGlvbmFsPSJubyI7OwotICAgIGVzYWMK LQotZmkKLQotaWYgdGVzdCAieCRlbmFibGVfcWVtdV90cmFkaXRpb25hbCIgPSAieHllcyI7IHRo ZW4gOgotCi0gICAgcWVtdV90cmFkaXRpb25hbD15Ci1lbHNlCi0KLSAgICBxZW11X3RyYWRpdGlv bmFsPW4KLQotZmkKLWlmIHRlc3QgIngkaW9lbXUiID0gIngiOyB0aGVuIDoKLQotICAgIGlvZW11 PSRxZW11X3RyYWRpdGlvbmFsCi0KLWZpCi1lY2hvICJ4JGlvZW11JHFlbXVfdHJhZGl0aW9uYWwi Ci1pZiB0ZXN0ICJ4JGlvZW11JHFlbXVfdHJhZGl0aW9uYWwiID0gInh5biI7IHRoZW4gOgotCi0g ICAgYXNfZm5fZXJyb3IgJD8gIklPRU1VIHN0dWJkb21haW4gcmVxdWlyZXMgcWVtdS10cmFkaXRp b25hbCIgIiRMSU5FTk8iIDUKLQotZmkKLQotCi0jIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtZGVi dWcgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHtlbmFibGVfZGVidWcrc2V0fSIgPSBzZXQ7IHRoZW4g OgotICBlbmFibGV2YWw9JGVuYWJsZV9kZWJ1ZzsKLWZpCi0KLQotaWYgdGVzdCAieCRlbmFibGVf ZGVidWciID0gInhubyI7IHRoZW4gOgotCi0gICAgYXhfY3ZfZGVidWc9Im4iCi0KLWVsaWYgdGVz dCAieCRlbmFibGVfZGVidWciID0gInh5ZXMiOyB0aGVuIDoKLQotICAgIGF4X2N2X2RlYnVnPSJ5 IgotCi1lbGlmIHRlc3QgLXogJGF4X2N2X2RlYnVnOyB0aGVuIDoKLQotICAgIGF4X2N2X2RlYnVn PSJ5IgotCi1maQotZGVidWc9JGF4X2N2X2RlYnVnCi0KLQotCi0jIENoZWNrIHdoZXRoZXIgLS1l bmFibGUtZXh0ZmlsZXMgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHtlbmFibGVfZXh0ZmlsZXMrc2V0 fSIgPSBzZXQ7IHRoZW4gOgotICBlbmFibGV2YWw9JGVuYWJsZV9leHRmaWxlczsKLWZpCi0KLQot aWYgdGVzdCAieCRlbmFibGVfZXh0ZmlsZXMiID0gInhubyI7IHRoZW4gOgotCi0gICAgYXhfY3Zf ZXh0ZmlsZXM9Im4iCi0KLWVsaWYgdGVzdCAieCRlbmFibGVfZXh0ZmlsZXMiID0gInh5ZXMiOyB0 aGVuIDoKLQotICAgIGF4X2N2X2V4dGZpbGVzPSJ5IgotCi1lbGlmIHRlc3QgLXogJGF4X2N2X2V4 dGZpbGVzOyB0aGVuIDoKLQotICAgIGF4X2N2X2V4dGZpbGVzPSJ5IgotCi1maQotZXh0ZmlsZXM9 JGF4X2N2X2V4dGZpbGVzCi0KLQotCi0KLQotIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJ3 Z2V0Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSB3 Z2V0OyBhY193b3JkPSQyCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFj X3dvcmQuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfcGF0aF9XR0VUKzp9IGZhbHNlOyB0aGVuIDoK LSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgY2FzZSAkV0dFVCBpbgotICBb XFwvXSogfCA/OltcXC9dKikKLSAgYWNfY3ZfcGF0aF9XR0VUPSIkV0dFVCIgIyBMZXQgdGhlIHVz ZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCi0gIDs7Ci0gICopCi0gIGFzX3NhdmVf SUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLWZvciBhc19kaXIgaW4gJFBBVEgKLWRvCi0g IElGUz0kYXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICBm b3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYg YXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgot ICAgIGFjX2N2X3BhdGhfV0dFVD0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKLSAgICAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193 b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICBicmVhayAyCi0gIGZpCi1kb25lCi0gIGRvbmUKLUlG Uz0kYXNfc2F2ZV9JRlMKLQotICB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9XR0VUIiAmJiBhY19jdl9w YXRoX1dHRVQ9Im5vIgotICA7OwotZXNhYwotZmkKLVdHRVQ9JGFjX2N2X3BhdGhfV0dFVAotaWYg dGVzdCAtbiAiJFdHRVQiOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogcmVzdWx0OiAkV0dFVCIgPiY1Ci0kYXNfZWNobyAiJFdHRVQiID4mNjsgfQotZWxz ZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8i ID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLWZpCi0KLQotIyBFeHRyYWN0IHRoZSBmaXJzdCB3 b3JkIG9mICJmYWxzZSIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1z ZXQgZHVtbXkgZmFsc2U7IGFjX3dvcmQ9JDIKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSRhc19lY2hvX24gImNoZWNr aW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgJHthY19jdl9wYXRoX0ZBTFNFKzp9IGZh bHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgY2FzZSAk RkFMU0UgaW4KLSAgW1xcL10qIHwgPzpbXFwvXSopCi0gIGFjX2N2X3BhdGhfRkFMU0U9IiRGQUxT RSIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCi0gIDs7Ci0g ICopCi0gIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLWZvciBhc19kaXIg aW4gJFBBVEgKLWRvCi0gIElGUz0kYXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2RpciIgJiYg YXNfZGlyPS4KLSAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5z aW9uczsgZG8KLSAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4 ZWNfZXh0IjsgdGhlbgotICAgIGFjX2N2X3BhdGhfRkFMU0U9IiRhc19kaXIvJGFjX3dvcmQkYWNf ZXhlY19leHQiCi0gICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91 bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgYnJlYWsgMgotICBmaQot ZG9uZQotICBkb25lCi1JRlM9JGFzX3NhdmVfSUZTCi0KLSAgdGVzdCAteiAiJGFjX2N2X3BhdGhf RkFMU0UiICYmIGFjX2N2X3BhdGhfRkFMU0U9Ii9iaW4vZmFsc2UiCi0gIDs7Ci1lc2FjCi1maQot RkFMU0U9JGFjX2N2X3BhdGhfRkFMU0UKLWlmIHRlc3QgLW4gIiRGQUxTRSI7IHRoZW4KLSAgeyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRGQUxTRSIgPiY1 Ci0kYXNfZWNobyAiJEZBTFNFIiA+JjY7IH0KLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9 Ci1maQotCi0KLWlmIHRlc3QgeCIkV0dFVCIgIT0geCJubyI7IHRoZW4gOgotCi0gICAgRkVUQ0hF Uj0iJFdHRVQgLWMgLU8iCi0KLWVsc2UKLQotICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBv ZiAiZnRwIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1t eSBmdHA7IGFjX3dvcmQ9JDIKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAk YWNfd29yZC4uLiAiID4mNjsgfQotaWYgJHthY19jdl9wYXRoX0ZUUCs6fSBmYWxzZTsgdGhlbiA6 Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGNhc2UgJEZUUCBpbgotICBb XFwvXSogfCA/OltcXC9dKikKLSAgYWNfY3ZfcGF0aF9GVFA9IiRGVFAiICMgTGV0IHRoZSB1c2Vy IG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgotICA7OwotICAqKQotICBhc19zYXZlX0lG Uz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi1mb3IgYXNfZGlyIGluICRQQVRICi1kbwotICBJ RlM9JGFzX3NhdmVfSUZTCi0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgZm9y IGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gIGlmIGFz X2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSAg ICBhY19jdl9wYXRoX0ZUUD0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKLSAgICAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3Jk JGFjX2V4ZWNfZXh0IiA+JjUKLSAgICBicmVhayAyCi0gIGZpCi1kb25lCi0gIGRvbmUKLUlGUz0k YXNfc2F2ZV9JRlMKLQotICB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9GVFAiICYmIGFjX2N2X3BhdGhf RlRQPSJubyIKLSAgOzsKLWVzYWMKLWZpCi1GVFA9JGFjX2N2X3BhdGhfRlRQCi1pZiB0ZXN0IC1u ICIkRlRQIjsgdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IHJlc3VsdDogJEZUUCIgPiY1Ci0kYXNfZWNobyAiJEZUUCIgPiY2OyB9Ci1lbHNlCi0gIHsgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNf ZWNobyAibm8iID4mNjsgfQotZmkKLQotCi0gICAgaWYgdGVzdCB4IiRGVFAiICE9IHgibm8iOyB0 aGVuIDoKLQotICAgICAgICBGRVRDSEVSPSIkRlRQIC1vIgotCi1lbHNlCi0KLSAgICAgICAgRkVU Q0hFUj0iJEZBTFNFIgotICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IFdBUk5JTkc6IGNhbm5vdCBmaW5kIHdnZXQgb3IgZnRwIiA+JjUKLSRhc19lY2hvICIk YXNfbWU6IFdBUk5JTkc6IGNhbm5vdCBmaW5kIHdnZXQgb3IgZnRwIiA+JjI7fQotCi1maQotCi1m aQotCi0KLQotIyBDaGVja3MgZm9yIHByb2dyYW1zLgotYWNfZXh0PWMKLWFjX2NwcD0nJENQUCAk Q1BQRkxBR1MnCi1hY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3Qu JGFjX2V4dCA+JjUnCi1hY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1Mg JENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwotYWNfY29tcGls ZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQotaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4 IjsgdGhlbgotICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9 Z2NjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSAk e2FjX3Rvb2xfcHJlZml4fWdjYzsgYWNfd29yZD0kMgoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotJGFzX2VjaG9fbiAi Y2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3Byb2dfQ0MrOn0g ZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBpZiB0 ZXN0IC1uICIkQ0MiOyB0aGVuCi0gIGFjX2N2X3Byb2dfQ0M9IiRDQyIgIyBMZXQgdGhlIHVzZXIg b3ZlcnJpZGUgdGhlIHRlc3QuCi1lbHNlCi1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQ QVJBVE9SCi1mb3IgYXNfZGlyIGluICRQQVRICi1kbwotICBJRlM9JGFzX3NhdmVfSUZTCi0gIHRl c3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRh Y19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFz X2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSAgICBhY19jdl9wcm9nX0NDPSIke2Fj X3Rvb2xfcHJlZml4fWdjYyIKLSAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICBicmVhayAy Ci0gIGZpCi1kb25lCi0gIGRvbmUKLUlGUz0kYXNfc2F2ZV9JRlMKLQotZmkKLWZpCi1DQz0kYWNf Y3ZfcHJvZ19DQwotaWYgdGVzdCAtbiAiJENDIjsgdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJENDIiA+JjUKLSRhc19lY2hvICIkQ0MiID4m NjsgfQotZWxzZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl c3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLWZpCi0KLQotZmkKLWlmIHRlc3Qg LXogIiRhY19jdl9wcm9nX0NDIjsgdGhlbgotICBhY19jdF9DQz0kQ0MKLSAgIyBFeHRyYWN0IHRo ZSBmaXJzdCB3b3JkIG9mICJnY2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBh cmdzLgotc2V0IGR1bW15IGdjYzsgYWNfd29yZD0kMgoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotJGFzX2VjaG9fbiAi Y2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3Byb2dfYWNfY3Rf Q0MrOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQot ICBpZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVuCi0gIGFjX2N2X3Byb2dfYWNfY3RfQ0M9IiRh Y19jdF9DQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi1lbHNlCi1hc19zYXZl X0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi1mb3IgYXNfZGlyIGluICRQQVRICi1kbwot ICBJRlM9JGFzX3NhdmVfSUZTCi0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAg Zm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gIGlm IGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4K LSAgICBhY19jdl9wcm9nX2FjX2N0X0NDPSJnY2MiCi0gICAgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1 Ci0gICAgYnJlYWsgMgotICBmaQotZG9uZQotICBkb25lCi1JRlM9JGFzX3NhdmVfSUZTCi0KLWZp Ci1maQotYWNfY3RfQ0M9JGFjX2N2X3Byb2dfYWNfY3RfQ0MKLWlmIHRlc3QgLW4gIiRhY19jdF9D QyI7IHRoZW4KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1 bHQ6ICRhY19jdF9DQyIgPiY1Ci0kYXNfZWNobyAiJGFjX2N0X0NDIiA+JjY7IH0KLWVsc2UKLSAg eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUK LSRhc19lY2hvICJubyIgPiY2OyB9Ci1maQotCi0gIGlmIHRlc3QgIngkYWNfY3RfQ0MiID0geDsg dGhlbgotICAgIENDPSIiCi0gIGVsc2UKLSAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rv b2xfd2FybmVkIGluCi15ZXM6KQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRy aXBsZXQiID4mNQotJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMg bm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotYWNfdG9vbF93YXJuZWQ9eWVz IDs7Ci1lc2FjCi0gICAgQ0M9JGFjX2N0X0NDCi0gIGZpCi1lbHNlCi0gIENDPSIkYWNfY3ZfcHJv Z19DQyIKLWZpCi0KLWlmIHRlc3QgLXogIiRDQyI7IHRoZW4KLSAgICAgICAgICBpZiB0ZXN0IC1u ICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0gICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9m ICIke2FjX3Rvb2xfcHJlZml4fWNjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGgg YXJncy4KLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWNjOyBhY193b3JkPSQyCi17ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIg PiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmICR7 YWNfY3ZfcHJvZ19DQys6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIg PiY2Ci1lbHNlCi0gIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KLSAgYWNfY3ZfcHJvZ19DQz0iJEND IiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLWVsc2UKLWFzX3NhdmVfSUZTPSRJ RlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLWZvciBhc19kaXIgaW4gJFBBVEgKLWRvCi0gIElGUz0k YXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICBmb3IgYWNf ZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYgYXNfZm5f ZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotICAgIGFj X2N2X3Byb2dfQ0M9IiR7YWNfdG9vbF9wcmVmaXh9Y2MiCi0gICAgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIg PiY1Ci0gICAgYnJlYWsgMgotICBmaQotZG9uZQotICBkb25lCi1JRlM9JGFzX3NhdmVfSUZTCi0K LWZpCi1maQotQ0M9JGFjX2N2X3Byb2dfQ0MKLWlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KLSAgeyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRDQyIgPiY1Ci0k YXNfZWNobyAiJENDIiA+JjY7IH0KLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci1maQot Ci0KLSAgZmkKLWZpCi1pZiB0ZXN0IC16ICIkQ0MiOyB0aGVuCi0gICMgRXh0cmFjdCB0aGUgZmly c3Qgd29yZCBvZiAiY2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgot c2V0IGR1bW15IGNjOyBhY193b3JkPSQyCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2lu ZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfcHJvZ19DQys6fSBmYWxzZTsg dGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGlmIHRlc3QgLW4g IiRDQyI7IHRoZW4KLSAgYWNfY3ZfcHJvZ19DQz0iJENDIiAjIExldCB0aGUgdXNlciBvdmVycmlk ZSB0aGUgdGVzdC4KLWVsc2UKLSAgYWNfcHJvZ19yZWplY3RlZD1ubwotYXNfc2F2ZV9JRlM9JElG UzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotZm9yIGFzX2RpciBpbiAkUEFUSAotZG8KLSAgSUZTPSRh c19zYXZlX0lGUwotICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgIGZvciBhY19l eGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICBpZiBhc19mbl9l eGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0gICAgaWYg dGVzdCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPSAiL3Vzci91Y2IvY2MiOyB0aGVu Ci0gICAgICAgYWNfcHJvZ19yZWplY3RlZD15ZXMKLSAgICAgICBjb250aW51ZQotICAgICBmaQot ICAgIGFjX2N2X3Byb2dfQ0M9ImNjIgotICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgIGJy ZWFrIDIKLSAgZmkKLWRvbmUKLSAgZG9uZQotSUZTPSRhc19zYXZlX0lGUwotCi1pZiB0ZXN0ICRh Y19wcm9nX3JlamVjdGVkID0geWVzOyB0aGVuCi0gICMgV2UgZm91bmQgYSBib2dvbiBpbiB0aGUg cGF0aCwgc28gbWFrZSBzdXJlIHdlIG5ldmVyIHVzZSBpdC4KLSAgc2V0IGR1bW15ICRhY19jdl9w cm9nX0NDCi0gIHNoaWZ0Ci0gIGlmIHRlc3QgJCMgIT0gMDsgdGhlbgotICAgICMgV2UgY2hvc2Ug YSBkaWZmZXJlbnQgY29tcGlsZXIgZnJvbSB0aGUgYm9ndXMgb25lLgotICAgICMgSG93ZXZlciwg aXQgaGFzIHRoZSBzYW1lIGJhc2VuYW1lLCBzbyB0aGUgYm9nb24gd2lsbCBiZSBjaG9zZW4KLSAg ICAjIGZpcnN0IGlmIHdlIHNldCBDQyB0byBqdXN0IHRoZSBiYXNlbmFtZTsgdXNlIHRoZSBmdWxs IGZpbGUgbmFtZS4KLSAgICBzaGlmdAotICAgIGFjX2N2X3Byb2dfQ0M9IiRhc19kaXIvJGFjX3dv cmQkezErJyAnfSRAIgotICBmaQotZmkKLWZpCi1maQotQ0M9JGFjX2N2X3Byb2dfQ0MKLWlmIHRl c3QgLW4gIiRDQyI7IHRoZW4KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiByZXN1bHQ6ICRDQyIgPiY1Ci0kYXNfZWNobyAiJENDIiA+JjY7IH0KLWVsc2UKLSAgeyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRh c19lY2hvICJubyIgPiY2OyB9Ci1maQotCi0KLWZpCi1pZiB0ZXN0IC16ICIkQ0MiOyB0aGVuCi0g IGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSAgZm9yIGFjX3Byb2cgaW4gY2wu ZXhlCi0gIGRvCi0gICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVm aXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQg ZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKLXsgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSRh c19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgJHthY19jdl9w cm9nX0NDKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVs c2UKLSAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbgotICBhY19jdl9wcm9nX0NDPSIkQ0MiICMgTGV0 IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotZWxzZQotYXNfc2F2ZV9JRlM9JElGUzsgSUZT PSRQQVRIX1NFUEFSQVRPUgotZm9yIGFzX2RpciBpbiAkUEFUSAotZG8KLSAgSUZTPSRhc19zYXZl X0lGUwotICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgIGZvciBhY19leGVjX2V4 dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICBpZiBhc19mbl9leGVjdXRh YmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0gICAgYWNfY3ZfcHJv Z19DQz0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCi0gICAgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1 Ci0gICAgYnJlYWsgMgotICBmaQotZG9uZQotICBkb25lCi1JRlM9JGFzX3NhdmVfSUZTCi0KLWZp Ci1maQotQ0M9JGFjX2N2X3Byb2dfQ0MKLWlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KLSAgeyAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRDQyIgPiY1Ci0kYXNf ZWNobyAiJENDIiA+JjY7IH0KLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci1maQotCi0K LSAgICB0ZXN0IC1uICIkQ0MiICYmIGJyZWFrCi0gIGRvbmUKLWZpCi1pZiB0ZXN0IC16ICIkQ0Mi OyB0aGVuCi0gIGFjX2N0X0NDPSRDQwotICBmb3IgYWNfcHJvZyBpbiBjbC5leGUKLWRvCi0gICMg RXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9n cmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCi17ICRh c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29y ZCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlm ICR7YWNfY3ZfcHJvZ19hY19jdF9DQys6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihj YWNoZWQpICIgPiY2Ci1lbHNlCi0gIGlmIHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4KLSAgYWNf Y3ZfcHJvZ19hY19jdF9DQz0iJGFjX2N0X0NDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUg dGVzdC4KLWVsc2UKLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLWZvciBh c19kaXIgaW4gJFBBVEgKLWRvCi0gIElGUz0kYXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2Rp ciIgJiYgYXNfZGlyPS4KLSAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVf ZXh0ZW5zaW9uczsgZG8KLSAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3Jk JGFjX2V4ZWNfZXh0IjsgdGhlbgotICAgIGFjX2N2X3Byb2dfYWNfY3RfQ0M9IiRhY19wcm9nIgot ICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIv JGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgIGJyZWFrIDIKLSAgZmkKLWRvbmUKLSAgZG9u ZQotSUZTPSRhc19zYXZlX0lGUwotCi1maQotZmkKLWFjX2N0X0NDPSRhY19jdl9wcm9nX2FjX2N0 X0NDCi1pZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfQ0MiID4mNQotJGFzX2VjaG8gIiRh Y19jdF9DQyIgPiY2OyB9Ci1lbHNlCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQotZmkKLQotCi0g IHRlc3QgLW4gIiRhY19jdF9DQyIgJiYgYnJlYWsKLWRvbmUKLQotICBpZiB0ZXN0ICJ4JGFjX2N0 X0NDIiA9IHg7IHRoZW4KLSAgICBDQz0iIgotICBlbHNlCi0gICAgY2FzZSAkY3Jvc3NfY29tcGls aW5nOiRhY190b29sX3dhcm5lZCBpbgoteWVzOikKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdp dGggaG9zdCB0cmlwbGV0IiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNy b3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLWFjX3Rvb2xf d2FybmVkPXllcyA7OwotZXNhYwotICAgIENDPSRhY19jdF9DQwotICBmaQotZmkKLQotZmkKLQot Ci10ZXN0IC16ICIkQ0MiICYmIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQotJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6 IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQotYXNfZm5fZXJyb3IgJD8gIm5vIGFjY2VwdGFibGUgQyBj b21waWxlciBmb3VuZCBpbiBcJFBBVEgKLVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFp bHMiICIkTElORU5PIiA1OyB9Ci0KLSMgUHJvdmlkZSBzb21lIGluZm9ybWF0aW9uIGFib3V0IHRo ZSBjb21waWxlci4KLSRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIGZvciBDIGNvbXBpbGVyIHZlcnNpb24iID4mNQotc2V0IFggJGFjX2NvbXBpbGUKLWFjX2Nv bXBpbGVyPSQyCi1mb3IgYWNfb3B0aW9uIGluIC0tdmVyc2lvbiAtdiAtViAtcXZlcnNpb247IGRv Ci0gIHsgeyBhY190cnk9IiRhY19jb21waWxlciAkYWNfb3B0aW9uID4mNSIKLWNhc2UgIigoJGFj X3RyeSIgaW4KLSAgKlwiKiB8ICpcYCogfCAqXFwqKSBhY190cnlfZWNobz1cJGFjX3RyeTs7Ci0g ICopIGFjX3RyeV9lY2hvPSRhY190cnk7OwotZXNhYwotZXZhbCBhY190cnlfZWNobz0iXCJcJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfdHJ5X2VjaG9cIiIKLSRhc19lY2hvICIkYWNf dHJ5X2VjaG8iOyB9ID4mNQotICAoZXZhbCAiJGFjX2NvbXBpbGVyICRhY19vcHRpb24gPiY1Iikg Mj5jb25mdGVzdC5lcnIKLSAgYWNfc3RhdHVzPSQ/Ci0gIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJy OyB0aGVuCi0gICAgc2VkICcxMGFcCi0uLi4gcmVzdCBvZiBzdGRlcnIgb3V0cHV0IGRlbGV0ZWQg Li4uCi0gICAgICAgICAxMHEnIGNvbmZ0ZXN0LmVyciA+Y29uZnRlc3QuZXIxCi0gICAgY2F0IGNv bmZ0ZXN0LmVyMSA+JjUKLSAgZmkKLSAgcm0gLWYgY29uZnRlc3QuZXIxIGNvbmZ0ZXN0LmVycgot ICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVz IiA+JjUKLSAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotZG9uZQotCi1jYXQgY29uZmRlZnMuaCAt IDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLWlu dAotbWFpbiAoKQotewotCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLWFjX2NsZWFuX2Zp bGVzX3NhdmU9JGFjX2NsZWFuX2ZpbGVzCi1hY19jbGVhbl9maWxlcz0iJGFjX2NsZWFuX2ZpbGVz IGEub3V0IGEub3V0LmRTWU0gYS5leGUgYi5vdXQiCi0jIFRyeSB0byBjcmVhdGUgYW4gZXhlY3V0 YWJsZSB3aXRob3V0IC1vIGZpcnN0LCBkaXNyZWdhcmQgYS5vdXQuCi0jIEl0IHdpbGwgaGVscCB1 cyBkaWFnbm9zZSBicm9rZW4gY29tcGlsZXJzLCBhbmQgZmluZGluZyBvdXQgYW4gaW50dWl0aW9u Ci0jIG9mIGV4ZWV4dC4KLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog Y2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciB3b3JrcyIgPiY1Ci0kYXNfZWNob19uICJj aGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyIHdvcmtzLi4uICIgPiY2OyB9Ci1hY19saW5r X2RlZmF1bHQ9YCRhc19lY2hvICIkYWNfbGluayIgfCBzZWQgJ3MvIC1vICpjb25mdGVzdFteIF0q Ly8nYAotCi0jIFRoZSBwb3NzaWJsZSBvdXRwdXQgZmlsZXM6Ci1hY19maWxlcz0iYS5vdXQgY29u ZnRlc3QuZXhlIGNvbmZ0ZXN0IGEuZXhlIGFfb3V0LmV4ZSBiLm91dCBjb25mdGVzdC4qIgotCi1h Y19ybWZpbGVzPQotZm9yIGFjX2ZpbGUgaW4gJGFjX2ZpbGVzCi1kbwotICBjYXNlICRhY19maWxl IGluCi0gICAgKi4kYWNfZXh0IHwgKi54Y29mZiB8ICoudGRzIHwgKi5kIHwgKi5wZGIgfCAqLnhT WU0gfCAqLmJiIHwgKi5iYmcgfCAqLm1hcCB8ICouaW5mIHwgKi5kU1lNIHwgKi5vIHwgKi5vYmog KSA7OwotICAgICogKSBhY19ybWZpbGVzPSIkYWNfcm1maWxlcyAkYWNfZmlsZSI7OwotICBlc2Fj Ci1kb25lCi1ybSAtZiAkYWNfcm1maWxlcwotCi1pZiB7IHsgYWNfdHJ5PSIkYWNfbGlua19kZWZh dWx0IgotY2FzZSAiKCgkYWNfdHJ5IiBpbgotICAqXCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9l Y2hvPVwkYWNfdHJ5OzsKLSAgKikgYWNfdHJ5X2VjaG89JGFjX3RyeTs7Ci1lc2FjCi1ldmFsIGFj X3RyeV9lY2hvPSJcIlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRhY190cnlfZWNob1wi IgotJGFzX2VjaG8gIiRhY190cnlfZWNobyI7IH0gPiY1Ci0gIChldmFsICIkYWNfbGlua19kZWZh dWx0IikgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIHRlc3QgJGFjX3N0YXR1cyA9IDA7 IH07IHRoZW4gOgotICAjIEF1dG9jb25mLTIuMTMgY291bGQgc2V0IHRoZSBhY19jdl9leGVleHQg dmFyaWFibGUgdG8gYG5vJy4KLSMgU28gaWdub3JlIGEgdmFsdWUgb2YgYG5vJywgb3RoZXJ3aXNl IHRoaXMgd291bGQgbGVhZCB0byBgRVhFRVhUID0gbm8nCi0jIGluIGEgTWFrZWZpbGUuICBXZSBz aG91bGQgbm90IG92ZXJyaWRlIGFjX2N2X2V4ZWV4dCBpZiBpdCB3YXMgY2FjaGVkLAotIyBzbyB0 aGF0IHRoZSB1c2VyIGNhbiBzaG9ydC1jaXJjdWl0IHRoaXMgdGVzdCBmb3IgY29tcGlsZXJzIHVu a25vd24gdG8KLSMgQXV0b2NvbmYuCi1mb3IgYWNfZmlsZSBpbiAkYWNfZmlsZXMgJycKLWRvCi0g IHRlc3QgLWYgIiRhY19maWxlIiB8fCBjb250aW51ZQotICBjYXNlICRhY19maWxlIGluCi0gICAg Ki4kYWNfZXh0IHwgKi54Y29mZiB8ICoudGRzIHwgKi5kIHwgKi5wZGIgfCAqLnhTWU0gfCAqLmJi IHwgKi5iYmcgfCAqLm1hcCB8ICouaW5mIHwgKi5kU1lNIHwgKi5vIHwgKi5vYmogKQotCTs7Ci0g ICAgW2FiXS5vdXQgKQotCSMgV2UgZm91bmQgdGhlIGRlZmF1bHQgZXhlY3V0YWJsZSwgYnV0IGV4 ZWV4dD0nJyBpcyBtb3N0Ci0JIyBjZXJ0YWlubHkgcmlnaHQuCi0JYnJlYWs7OwotICAgICouKiAp Ci0JaWYgdGVzdCAiJHthY19jdl9leGVleHQrc2V0fSIgPSBzZXQgJiYgdGVzdCAiJGFjX2N2X2V4 ZWV4dCIgIT0gbm87Ci0JdGhlbiA6OyBlbHNlCi0JICAgYWNfY3ZfZXhlZXh0PWBleHByICIkYWNf ZmlsZSIgOiAnW14uXSpcKFwuLipcKSdgCi0JZmkKLQkjIFdlIHNldCBhY19jdl9leGVleHQgaGVy ZSBiZWNhdXNlIHRoZSBsYXRlciB0ZXN0IGZvciBpdCBpcyBub3QKLQkjIHNhZmU6IGNyb3NzIGNv bXBpbGVycyBtYXkgbm90IGFkZCB0aGUgc3VmZml4IGlmIGdpdmVuIGFuIGAtbycKLQkjIGFyZ3Vt ZW50LCBzbyB3ZSBtYXkgbmVlZCB0byBrbm93IGl0IGF0IHRoYXQgcG9pbnQgYWxyZWFkeS4KLQkj IEV2ZW4gaWYgdGhpcyBzZWN0aW9uIGxvb2tzIGNydWZ0eTogaXQgaGFzIHRoZSBhZHZhbnRhZ2Ug b2YKLQkjIGFjdHVhbGx5IHdvcmtpbmcuCi0JYnJlYWs7OwotICAgICogKQotCWJyZWFrOzsKLSAg ZXNhYwotZG9uZQotdGVzdCAiJGFjX2N2X2V4ZWV4dCIgPSBubyAmJiBhY19jdl9leGVleHQ9Ci0K LWVsc2UKLSAgYWNfZmlsZT0nJwotZmkKLWlmIHRlc3QgLXogIiRhY19maWxlIjsgdGhlbiA6Ci0g IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1 Ci0kYXNfZWNobyAibm8iID4mNjsgfQotJGFzX2VjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0g d2FzOiIgPiY1Ci1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0KLXsgeyAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoi ID4mNQotJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQotYXNf Zm5fZXJyb3IgNzcgIkMgY29tcGlsZXIgY2Fubm90IGNyZWF0ZSBleGVjdXRhYmxlcwotU2VlIFxg Y29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KLWVsc2UKLSAgeyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1Ci0k YXNfZWNobyAieWVzIiA+JjY7IH0KLWZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IGNoZWNraW5nIGZvciBDIGNvbXBpbGVyIGRlZmF1bHQgb3V0cHV0IGZpbGUgbmFt ZSIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgQyBjb21waWxlciBkZWZhdWx0IG91dHB1 dCBmaWxlIG5hbWUuLi4gIiA+JjY7IH0KLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogcmVzdWx0OiAkYWNfZmlsZSIgPiY1Ci0kYXNfZWNobyAiJGFjX2ZpbGUiID4mNjsg fQotYWNfZXhlZXh0PSRhY19jdl9leGVleHQKLQotcm0gLWYgLXIgYS5vdXQgYS5vdXQuZFNZTSBh LmV4ZSBjb25mdGVzdCRhY19jdl9leGVleHQgYi5vdXQKLWFjX2NsZWFuX2ZpbGVzPSRhY19jbGVh bl9maWxlc19zYXZlCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNo ZWNraW5nIGZvciBzdWZmaXggb2YgZXhlY3V0YWJsZXMiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tp bmcgZm9yIHN1ZmZpeCBvZiBleGVjdXRhYmxlcy4uLiAiID4mNjsgfQotaWYgeyB7IGFjX3RyeT0i JGFjX2xpbmsiCi1jYXNlICIoKCRhY190cnkiIGluCi0gICpcIiogfCAqXGAqIHwgKlxcKikgYWNf dHJ5X2VjaG89XCRhY190cnk7OwotICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKLWVzYWMKLWV2 YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9l Y2hvXCIiCi0kYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKLSAgKGV2YWwgIiRhY19saW5r IikgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07 IHRoZW4gOgotICAjIElmIGJvdGggYGNvbmZ0ZXN0LmV4ZScgYW5kIGBjb25mdGVzdCcgYXJlIGBw cmVzZW50JyAod2VsbCwgb2JzZXJ2YWJsZSkKLSMgY2F0Y2ggYGNvbmZ0ZXN0LmV4ZScuICBGb3Ig aW5zdGFuY2Ugd2l0aCBDeWd3aW4sIGBscyBjb25mdGVzdCcgd2lsbAotIyB3b3JrIHByb3Blcmx5 IChpLmUuLCByZWZlciB0byBgY29uZnRlc3QuZXhlJyksIHdoaWxlIGl0IHdvbid0IHdpdGgKLSMg YHJtJy4KLWZvciBhY19maWxlIGluIGNvbmZ0ZXN0LmV4ZSBjb25mdGVzdCBjb25mdGVzdC4qOyBk bwotICB0ZXN0IC1mICIkYWNfZmlsZSIgfHwgY29udGludWUKLSAgY2FzZSAkYWNfZmlsZSBpbgot ICAgICouJGFjX2V4dCB8ICoueGNvZmYgfCAqLnRkcyB8ICouZCB8ICoucGRiIHwgKi54U1lNIHwg Ki5iYiB8ICouYmJnIHwgKi5tYXAgfCAqLmluZiB8ICouZFNZTSB8ICoubyB8ICoub2JqICkgOzsK LSAgICAqLiogKSBhY19jdl9leGVleHQ9YGV4cHIgIiRhY19maWxlIiA6ICdbXi5dKlwoXC4uKlwp J2AKLQkgIGJyZWFrOzsKLSAgICAqICkgYnJlYWs7OwotICBlc2FjCi1kb25lCi1lbHNlCi0gIHsg eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNf cHdkJzoiID4mNQotJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7 fQotYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBjb21wdXRlIHN1ZmZpeCBvZiBleGVjdXRhYmxlczog Y2Fubm90IGNvbXBpbGUgYW5kIGxpbmsKLVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFp bHMiICIkTElORU5PIiA1OyB9Ci1maQotcm0gLWYgY29uZnRlc3QgY29uZnRlc3QkYWNfY3ZfZXhl ZXh0Ci17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFj X2N2X2V4ZWV4dCIgPiY1Ci0kYXNfZWNobyAiJGFjX2N2X2V4ZWV4dCIgPiY2OyB9Ci0KLXJtIC1m IGNvbmZ0ZXN0LiRhY19leHQKLUVYRUVYVD0kYWNfY3ZfZXhlZXh0Ci1hY19leGVleHQ9JEVYRUVY VAotY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNv bmZkZWZzLmguICAqLwotI2luY2x1ZGUgPHN0ZGlvLmg+Ci1pbnQKLW1haW4gKCkKLXsKLUZJTEUg KmYgPSBmb3BlbiAoImNvbmZ0ZXN0Lm91dCIsICJ3Iik7Ci0gcmV0dXJuIGZlcnJvciAoZikgfHwg ZmNsb3NlIChmKSAhPSAwOwotCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLWFjX2NsZWFu X2ZpbGVzPSIkYWNfY2xlYW5fZmlsZXMgY29uZnRlc3Qub3V0IgotIyBDaGVjayB0aGF0IHRoZSBj b21waWxlciBwcm9kdWNlcyBleGVjdXRhYmxlcyB3ZSBjYW4gcnVuLiAgSWYgbm90LCBlaXRoZXIK LSMgdGhlIGNvbXBpbGVyIGlzIGJyb2tlbiwgb3Igd2UgY3Jvc3MgY29tcGlsZS4KLXsgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUg Y3Jvc3MgY29tcGlsaW5nIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgd2UgYXJl IGNyb3NzIGNvbXBpbGluZy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIg IT0geWVzOyB0aGVuCi0gIHsgeyBhY190cnk9IiRhY19saW5rIgotY2FzZSAiKCgkYWNfdHJ5IiBp bgotICAqXCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsKLSAgKikgYWNf dHJ5X2VjaG89JGFjX3RyeTs7Ci1lc2FjCi1ldmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306ICRhY190cnlfZWNob1wiIgotJGFzX2VjaG8gIiRhY190cnlfZWNo byI7IH0gPiY1Ci0gIChldmFsICIkYWNfbGluayIpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gICRh c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4m NQotICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0gIGlmIHsgYWNfdHJ5PScuL2NvbmZ0ZXN0JGFj X2N2X2V4ZWV4dCcKLSAgeyB7IGNhc2UgIigoJGFjX3RyeSIgaW4KLSAgKlwiKiB8ICpcYCogfCAq XFwqKSBhY190cnlfZWNobz1cJGFjX3RyeTs7Ci0gICopIGFjX3RyeV9lY2hvPSRhY190cnk7Owot ZXNhYwotZXZhbCBhY190cnlfZWNobz0iXCJcJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAk YWNfdHJ5X2VjaG9cIiIKLSRhc19lY2hvICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQotICAoZXZhbCAi JGFjX3RyeSIpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gICRhc19lY2hvICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICB0ZXN0ICRhY19zdGF0dXMg PSAwOyB9OyB9OyB0aGVuCi0gICAgY3Jvc3NfY29tcGlsaW5nPW5vCi0gIGVsc2UKLSAgICBpZiB0 ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IG1heWJlOyB0aGVuCi0JY3Jvc3NfY29tcGlsaW5nPXll cwotICAgIGVsc2UKLQl7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog ZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBc YCRhY19wd2QnOiIgPiYyO30KLWFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgcnVuIEMgY29tcGlsZWQg cHJvZ3JhbXMuCi1JZiB5b3UgbWVhbnQgdG8gY3Jvc3MgY29tcGlsZSwgdXNlIFxgLS1ob3N0Jy4K LVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9Ci0gICAg ZmkKLSAgZmkKLWZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl c3VsdDogJGNyb3NzX2NvbXBpbGluZyIgPiY1Ci0kYXNfZWNobyAiJGNyb3NzX2NvbXBpbGluZyIg PiY2OyB9Ci0KLXJtIC1mIGNvbmZ0ZXN0LiRhY19leHQgY29uZnRlc3QkYWNfY3ZfZXhlZXh0IGNv bmZ0ZXN0Lm91dAotYWNfY2xlYW5fZmlsZXM9JGFjX2NsZWFuX2ZpbGVzX3NhdmUKLXsgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN1ZmZpeCBvZiBv YmplY3QgZmlsZXMiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN1ZmZpeCBvZiBvYmpl Y3QgZmlsZXMuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3Zfb2JqZXh0Kzp9IGZhbHNlOyB0aGVuIDoK LSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgY2F0IGNvbmZkZWZzLmggLSA8 PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotCi1pbnQK LW1haW4gKCkKLXsKLQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1ybSAtZiBjb25mdGVz dC5vIGNvbmZ0ZXN0Lm9iagotaWYgeyB7IGFjX3RyeT0iJGFjX2NvbXBpbGUiCi1jYXNlICIoKCRh Y190cnkiIGluCi0gICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7Owot ICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKLWVzYWMKLWV2YWwgYWNfdHJ5X2VjaG89IlwiXCRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCi0kYXNfZWNobyAiJGFj X3RyeV9lY2hvIjsgfSA+JjUKLSAgKGV2YWwgIiRhY19jb21waWxlIikgMj4mNQotICBhY19zdGF0 dXM9JD8KLSAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFj X3N0YXR1cyIgPiY1Ci0gIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4gOgotICBmb3IgYWNf ZmlsZSBpbiBjb25mdGVzdC5vIGNvbmZ0ZXN0Lm9iaiBjb25mdGVzdC4qOyBkbwotICB0ZXN0IC1m ICIkYWNfZmlsZSIgfHwgY29udGludWU7Ci0gIGNhc2UgJGFjX2ZpbGUgaW4KLSAgICAqLiRhY19l eHQgfCAqLnhjb2ZmIHwgKi50ZHMgfCAqLmQgfCAqLnBkYiB8ICoueFNZTSB8ICouYmIgfCAqLmJi ZyB8ICoubWFwIHwgKi5pbmYgfCAqLmRTWU0gKSA7OwotICAgICopIGFjX2N2X29iamV4dD1gZXhw ciAiJGFjX2ZpbGUiIDogJy4qXC5cKC4qXCknYAotICAgICAgIGJyZWFrOzsKLSAgZXNhYwotZG9u ZQotZWxzZQotICAkYXNfZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLXNl ZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLQoteyB7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1Ci0kYXNfZWNo byAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Ci1hc19mbl9lcnJvciAkPyAi Y2Fubm90IGNvbXB1dGUgc3VmZml4IG9mIG9iamVjdCBmaWxlczogY2Fubm90IGNvbXBpbGUKLVNl ZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9Ci1maQotcm0g LWYgY29uZnRlc3QuJGFjX2N2X29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci1maQoteyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9vYmpleHQiID4m NQotJGFzX2VjaG8gIiRhY19jdl9vYmpleHQiID4mNjsgfQotT0JKRVhUPSRhY19jdl9vYmpleHQK LWFjX29iamV4dD0kT0JKRVhUCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IGNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBHTlUgQyBjb21waWxlciIgPiY1 Ci0kYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHdlIGFyZSB1c2luZyB0aGUgR05VIEMgY29t cGlsZXIuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfY19jb21waWxlcl9nbnUrOn0gZmFsc2U7IHRo ZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBjYXQgY29uZmRlZnMu aCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0K LWludAotbWFpbiAoKQotewotI2lmbmRlZiBfX0dOVUNfXwotICAgICAgIGNob2tlIG1lCi0jZW5k aWYKLQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxl ICIkTElORU5PIjsgdGhlbiA6Ci0gIGFjX2NvbXBpbGVyX2dudT15ZXMKLWVsc2UKLSAgYWNfY29t cGlsZXJfZ251PW5vCi1maQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29i amV4dCBjb25mdGVzdC4kYWNfZXh0Ci1hY19jdl9jX2NvbXBpbGVyX2dudT0kYWNfY29tcGlsZXJf Z251Ci0KLWZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs dDogJGFjX2N2X2NfY29tcGlsZXJfZ251IiA+JjUKLSRhc19lY2hvICIkYWNfY3ZfY19jb21waWxl cl9nbnUiID4mNjsgfQotaWYgdGVzdCAkYWNfY29tcGlsZXJfZ251ID0geWVzOyB0aGVuCi0gIEdD Qz15ZXMKLWVsc2UKLSAgR0NDPQotZmkKLWFjX3Rlc3RfQ0ZMQUdTPSR7Q0ZMQUdTK3NldH0KLWFj X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogY2hlY2tpbmcgd2hldGhlciAkQ0MgYWNjZXB0cyAtZyIgPiY1Ci0kYXNfZWNob19uICJj aGVja2luZyB3aGV0aGVyICRDQyBhY2NlcHRzIC1nLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3By b2dfY2NfZys6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1l bHNlCi0gIGFjX3NhdmVfY193ZXJyb3JfZmxhZz0kYWNfY193ZXJyb3JfZmxhZwotICAgYWNfY193 ZXJyb3JfZmxhZz15ZXMKLSAgIGFjX2N2X3Byb2dfY2NfZz1ubwotICAgQ0ZMQUdTPSItZyIKLSAg IGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25m ZGVmcy5oLiAgKi8KLQotaW50Ci1tYWluICgpCi17Ci0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9B Q0VPRgotaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotICBhY19jdl9w cm9nX2NjX2c9eWVzCi1lbHNlCi0gIENGTEFHUz0iIgotICAgICAgY2F0IGNvbmZkZWZzLmggLSA8 PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotCi1pbnQK LW1haW4gKCkKLXsKLQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3Ry eV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0KLWVsc2UKLSAgYWNfY193ZXJyb3JfZmxhZz0k YWNfc2F2ZV9jX3dlcnJvcl9mbGFnCi0JIENGTEFHUz0iLWciCi0JIGNhdCBjb25mZGVmcy5oIC0g PDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQotaW50 Ci1tYWluICgpCi17Ci0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotaWYgYWNfZm5fY190 cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotICBhY19jdl9wcm9nX2NjX2c9eWVzCi1maQot cm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNf ZXh0Ci1maQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25m dGVzdC4kYWNfZXh0Ci1maQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29i amV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gICBhY19jX3dlcnJvcl9mbGFnPSRhY19zYXZlX2Nfd2Vy cm9yX2ZsYWcKLWZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl c3VsdDogJGFjX2N2X3Byb2dfY2NfZyIgPiY1Ci0kYXNfZWNobyAiJGFjX2N2X3Byb2dfY2NfZyIg PiY2OyB9Ci1pZiB0ZXN0ICIkYWNfdGVzdF9DRkxBR1MiID0gc2V0OyB0aGVuCi0gIENGTEFHUz0k YWNfc2F2ZV9DRkxBR1MKLWVsaWYgdGVzdCAkYWNfY3ZfcHJvZ19jY19nID0geWVzOyB0aGVuCi0g IGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgQ0ZMQUdTPSItZyAtTzIiCi0gIGVsc2UK LSAgICBDRkxBR1M9Ii1nIgotICBmaQotZWxzZQotICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhl bgotICAgIENGTEFHUz0iLU8yIgotICBlbHNlCi0gICAgQ0ZMQUdTPQotICBmaQotZmkKLXsgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRDQyBvcHRp b24gdG8gYWNjZXB0IElTTyBDODkiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRDQyBv cHRpb24gdG8gYWNjZXB0IElTTyBDODkuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfcHJvZ19jY19j ODkrOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQot ICBhY19jdl9wcm9nX2NjX2M4OT1ubwotYWNfc2F2ZV9DQz0kQ0MKLWNhdCBjb25mZGVmcy5oIC0g PDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSNpbmNs dWRlIDxzdGRhcmcuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotc3RydWN0IHN0YXQ7Ci0vKiBNb3N0 IG9mIHRoZSBmb2xsb3dpbmcgdGVzdHMgYXJlIHN0b2xlbiBmcm9tIFJDUyA1LjcncyBzcmMvY29u Zi5zaC4gICovCi1zdHJ1Y3QgYnVmIHsgaW50IHg7IH07Ci1GSUxFICogKCpyY3NvcGVuKSAoc3Ry dWN0IGJ1ZiAqLCBzdHJ1Y3Qgc3RhdCAqLCBpbnQpOwotc3RhdGljIGNoYXIgKmUgKHAsIGkpCi0g ICAgIGNoYXIgKipwOwotICAgICBpbnQgaTsKLXsKLSAgcmV0dXJuIHBbaV07Ci19Ci1zdGF0aWMg Y2hhciAqZiAoY2hhciAqICgqZykgKGNoYXIgKiosIGludCksIGNoYXIgKipwLCAuLi4pCi17Ci0g IGNoYXIgKnM7Ci0gIHZhX2xpc3QgdjsKLSAgdmFfc3RhcnQgKHYscCk7Ci0gIHMgPSBnIChwLCB2 YV9hcmcgKHYsaW50KSk7Ci0gIHZhX2VuZCAodik7Ci0gIHJldHVybiBzOwotfQotCi0vKiBPU0Yg NC4wIENvbXBhcSBjYyBpcyBzb21lIHNvcnQgb2YgYWxtb3N0LUFOU0kgYnkgZGVmYXVsdC4gIEl0 IGhhcwotICAgZnVuY3Rpb24gcHJvdG90eXBlcyBhbmQgc3R1ZmYsIGJ1dCBub3QgJ1x4SEgnIGhl eCBjaGFyYWN0ZXIgY29uc3RhbnRzLgotICAgVGhlc2UgZG9uJ3QgcHJvdm9rZSBhbiBlcnJvciB1 bmZvcnR1bmF0ZWx5LCBpbnN0ZWFkIGFyZSBzaWxlbnRseSB0cmVhdGVkCi0gICBhcyAneCcuICBU aGUgZm9sbG93aW5nIGluZHVjZXMgYW4gZXJyb3IsIHVudGlsIC1zdGQgaXMgYWRkZWQgdG8gZ2V0 Ci0gICBwcm9wZXIgQU5TSSBtb2RlLiAgQ3VyaW91c2x5ICdceDAwJyE9J3gnIGFsd2F5cyBjb21l cyBvdXQgdHJ1ZSwgZm9yIGFuCi0gICBhcnJheSBzaXplIGF0IGxlYXN0LiAgSXQncyBuZWNlc3Nh cnkgdG8gd3JpdGUgJ1x4MDAnPT0wIHRvIGdldCBzb21ldGhpbmcKLSAgIHRoYXQncyB0cnVlIG9u bHkgd2l0aCAtc3RkLiAgKi8KLWludCBvc2Y0X2NjX2FycmF5IFsnXHgwMCcgPT0gMCA/IDEgOiAt MV07Ci0KLS8qIElCTSBDIDYgZm9yIEFJWCBpcyBhbG1vc3QtQU5TSSBieSBkZWZhdWx0LCBidXQg aXQgcmVwbGFjZXMgbWFjcm8gcGFyYW1ldGVycwotICAgaW5zaWRlIHN0cmluZ3MgYW5kIGNoYXJh Y3RlciBjb25zdGFudHMuICAqLwotI2RlZmluZSBGT08oeCkgJ3gnCi1pbnQgeGxjNl9jY19hcnJh eVtGT08oYSkgPT0gJ3gnID8gMSA6IC0xXTsKLQotaW50IHRlc3QgKGludCBpLCBkb3VibGUgeCk7 Ci1zdHJ1Y3QgczEge2ludCAoKmYpIChpbnQgYSk7fTsKLXN0cnVjdCBzMiB7aW50ICgqZikgKGRv dWJsZSBhKTt9OwotaW50IHBhaXJuYW1lcyAoaW50LCBjaGFyICoqLCBGSUxFICooKikoc3RydWN0 IGJ1ZiAqLCBzdHJ1Y3Qgc3RhdCAqLCBpbnQpLCBpbnQsIGludCk7Ci1pbnQgYXJnYzsKLWNoYXIg Kiphcmd2OwotaW50Ci1tYWluICgpCi17Ci1yZXR1cm4gZiAoZSwgYXJndiwgMCkgIT0gYXJndlsw XSAgfHwgIGYgKGUsIGFyZ3YsIDEpICE9IGFyZ3ZbMV07Ci0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1f QUNFT0YKLWZvciBhY19hcmcgaW4gJycgLXFsYW5nbHZsPWV4dGM4OSAtcWxhbmdsdmw9YW5zaSAt c3RkIFwKLQktQWUgIi1BYSAtRF9IUFVYX1NPVVJDRSIgIi1YYyAtRF9fRVhURU5TSU9OU19fIgot ZG8KLSAgQ0M9IiRhY19zYXZlX0NDICRhY19hcmciCi0gIGlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUg IiRMSU5FTk8iOyB0aGVuIDoKLSAgYWNfY3ZfcHJvZ19jY19jODk9JGFjX2FyZwotZmkKLXJtIC1m IGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQKLSAgdGVzdCAieCRhY19jdl9w cm9nX2NjX2M4OSIgIT0gInhubyIgJiYgYnJlYWsKLWRvbmUKLXJtIC1mIGNvbmZ0ZXN0LiRhY19l eHQKLUNDPSRhY19zYXZlX0NDCi0KLWZpCi0jIEFDX0NBQ0hFX1ZBTAotY2FzZSAieCRhY19jdl9w cm9nX2NjX2M4OSIgaW4KLSAgeCkKLSAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IHJlc3VsdDogbm9uZSBuZWVkZWQiID4mNQotJGFzX2VjaG8gIm5vbmUgbmVlZGVk IiA+JjY7IH0gOzsKLSAgeG5vKQotICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogcmVzdWx0OiB1bnN1cHBvcnRlZCIgPiY1Ci0kYXNfZWNobyAidW5zdXBwb3J0ZWQi ID4mNjsgfSA7OwotICAqKQotICAgIENDPSIkQ0MgJGFjX2N2X3Byb2dfY2NfYzg5IgotICAgIHsg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfcHJv Z19jY19jODkiID4mNQotJGFzX2VjaG8gIiRhY19jdl9wcm9nX2NjX2M4OSIgPiY2OyB9IDs7Ci1l c2FjCi1pZiB0ZXN0ICJ4JGFjX2N2X3Byb2dfY2NfYzg5IiAhPSB4bm87IHRoZW4gOgotCi1maQot Ci1hY19leHQ9YwotYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKLWFjX2NvbXBpbGU9JyRDQyAtYyAk Q0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKLWFjX2xpbms9JyRDQyAtbyBj b25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFj X2V4dCAkTElCUyA+JjUnCi1hY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251Ci0K LXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhl ciAke01BS0UtbWFrZX0gc2V0cyBcJChNQUtFKSIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyB3 aGV0aGVyICR7TUFLRS1tYWtlfSBzZXRzIFwkKE1BS0UpLi4uICIgPiY2OyB9Ci1zZXQgeCAke01B S0UtbWFrZX0KLWFjX21ha2U9YCRhc19lY2hvICIkMiIgfCBzZWQgJ3MvKy9wL2c7IHMvW15hLXpB LVowLTlfXS9fL2cnYAotaWYgZXZhbCBcJHthY19jdl9wcm9nX21ha2VfJHthY19tYWtlfV9zZXQr On0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBj YXQgPmNvbmZ0ZXN0Lm1ha2UgPDxcX0FDRU9GCi1TSEVMTCA9IC9iaW4vc2gKLWFsbDoKLQlAZWNo byAnQEBAJSUlPSQoTUFLRSk9QEBAJSUlJwotX0FDRU9GCi0jIEdOVSBtYWtlIHNvbWV0aW1lcyBw cmludHMgIm1ha2VbMV06IEVudGVyaW5nIC4uLiIsIHdoaWNoIHdvdWxkIGNvbmZ1c2UgdXMuCi1j YXNlIGAke01BS0UtbWFrZX0gLWYgY29uZnRlc3QubWFrZSAyPi9kZXYvbnVsbGAgaW4KLSAgKkBA QCUlJT0/Kj1AQEAlJSUqKQotICAgIGV2YWwgYWNfY3ZfcHJvZ19tYWtlXyR7YWNfbWFrZX1fc2V0 PXllczs7Ci0gICopCi0gICAgZXZhbCBhY19jdl9wcm9nX21ha2VfJHthY19tYWtlfV9zZXQ9bm87 OwotZXNhYwotcm0gLWYgY29uZnRlc3QubWFrZQotZmkKLWlmIGV2YWwgdGVzdCBcJGFjX2N2X3By b2dfbWFrZV8ke2FjX21ha2V9X3NldCA9IHllczsgdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKLSRhc19lY2hvICJ5ZXMiID4m NjsgfQotICBTRVRfTUFLRT0KLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci0gIFNFVF9N QUtFPSJNQUtFPSR7TUFLRS1tYWtlfSIKLWZpCi0KLSMgRmluZCBhIGdvb2QgaW5zdGFsbCBwcm9n cmFtLiAgV2UgcHJlZmVyIGEgQyBwcm9ncmFtIChmYXN0ZXIpLAotIyBzbyBvbmUgc2NyaXB0IGlz IGFzIGdvb2QgYXMgYW5vdGhlci4gIEJ1dCBhdm9pZCB0aGUgYnJva2VuIG9yCi0jIGluY29tcGF0 aWJsZSB2ZXJzaW9uczoKLSMgU3lzViAvZXRjL2luc3RhbGwsIC91c3Ivc2Jpbi9pbnN0YWxsCi0j IFN1bk9TIC91c3IvZXRjL2luc3RhbGwKLSMgSVJJWCAvc2Jpbi9pbnN0YWxsCi0jIEFJWCAvYmlu L2luc3RhbGwKLSMgQW1pZ2FPUyAvQy9pbnN0YWxsLCB3aGljaCBpbnN0YWxscyBib290YmxvY2tz IG9uIGZsb3BweSBkaXNjcwotIyBBSVggNCAvdXNyL2Jpbi9pbnN0YWxsYnNkLCB3aGljaCBkb2Vz bid0IHdvcmsgd2l0aG91dCBhIC1nIGZsYWcKLSMgQUZTIC91c3IvYWZzd3MvYmluL2luc3RhbGws IHdoaWNoIG1pc2hhbmRsZXMgbm9uZXhpc3RlbnQgYXJncwotIyBTVlI0IC91c3IvdWNiL2luc3Rh bGwsIHdoaWNoIHRyaWVzIHRvIHVzZSB0aGUgbm9uZXhpc3RlbnQgZ3JvdXAgInN0YWZmIgotIyBP Uy8yJ3Mgc3lzdGVtIGluc3RhbGwsIHdoaWNoIGhhcyBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IHNl bWFudGljCi0jIC4vaW5zdGFsbCwgd2hpY2ggY2FuIGJlIGVycm9uZW91c2x5IGNyZWF0ZWQgYnkg bWFrZSBmcm9tIC4vaW5zdGFsbC5zaC4KLSMgUmVqZWN0IGluc3RhbGwgcHJvZ3JhbXMgdGhhdCBj YW5ub3QgaW5zdGFsbCBtdWx0aXBsZSBmaWxlcy4KLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGEgQlNELWNvbXBhdGlibGUgaW5zdGFsbCIgPiY1 Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgYSBCU0QtY29tcGF0aWJsZSBpbnN0YWxsLi4uICIg PiY2OyB9Ci1pZiB0ZXN0IC16ICIkSU5TVEFMTCI7IHRoZW4KLWlmICR7YWNfY3ZfcGF0aF9pbnN0 YWxsKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UK LSAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotZm9yIGFzX2RpciBpbiAk UEFUSAotZG8KLSAgSUZTPSRhc19zYXZlX0lGUwotICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19k aXI9LgotICAgICMgQWNjb3VudCBmb3IgcGVvcGxlIHdobyBwdXQgdHJhaWxpbmcgc2xhc2hlcyBp biBQQVRIIGVsZW1lbnRzLgotY2FzZSAkYXNfZGlyLyBpbiAjKCgKLSAgLi8gfCAuLy8gfCAvW2ND XS8qIHwgXAotICAvZXRjLyogfCAvdXNyL3NiaW4vKiB8IC91c3IvZXRjLyogfCAvc2Jpbi8qIHwg L3Vzci9hZnN3cy9iaW4vKiB8IFwKLSAgPzpbXFwvXW9zMltcXC9daW5zdGFsbFtcXC9dKiB8ID86 W1xcL11PUzJbXFwvXUlOU1RBTExbXFwvXSogfCBcCi0gIC91c3IvdWNiLyogKSA7OwotICAqKQot ICAgICMgT1NGMSBhbmQgU0NPIE9EVCAzLjAgaGF2ZSB0aGVpciBvd24gbmFtZXMgZm9yIGluc3Rh bGwuCi0gICAgIyBEb24ndCB1c2UgaW5zdGFsbGJzZCBmcm9tIE9TRiBzaW5jZSBpdCBpbnN0YWxs cyBzdHVmZiBhcyByb290Ci0gICAgIyBieSBkZWZhdWx0LgotICAgIGZvciBhY19wcm9nIGluIGdp bnN0YWxsIHNjb2luc3QgaW5zdGFsbDsgZG8KLSAgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAk YWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotCWlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFz X2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCI7IHRoZW4KLQkgIGlmIHRlc3QgJGFjX3Byb2cgPSBp bnN0YWxsICYmCi0JICAgIGdyZXAgZHNwbXNnICIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0 IiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLQkgICAgIyBBSVggaW5zdGFsbC4gIEl0IGhhcyBhbiBp bmNvbXBhdGlibGUgY2FsbGluZyBjb252ZW50aW9uLgotCSAgICA6Ci0JICBlbGlmIHRlc3QgJGFj X3Byb2cgPSBpbnN0YWxsICYmCi0JICAgIGdyZXAgcHdwbHVzICIkYXNfZGlyLyRhY19wcm9nJGFj X2V4ZWNfZXh0IiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLQkgICAgIyBwcm9ncmFtLXNwZWNpZmlj IGluc3RhbGwgc2NyaXB0IHVzZWQgYnkgSFAgcHdwbHVzLS1kb24ndCB1c2UuCi0JICAgIDoKLQkg IGVsc2UKLQkgICAgcm0gLXJmIGNvbmZ0ZXN0Lm9uZSBjb25mdGVzdC50d28gY29uZnRlc3QuZGly Ci0JICAgIGVjaG8gb25lID4gY29uZnRlc3Qub25lCi0JICAgIGVjaG8gdHdvID4gY29uZnRlc3Qu dHdvCi0JICAgIG1rZGlyIGNvbmZ0ZXN0LmRpcgotCSAgICBpZiAiJGFzX2Rpci8kYWNfcHJvZyRh Y19leGVjX2V4dCIgLWMgY29uZnRlc3Qub25lIGNvbmZ0ZXN0LnR3byAiYHB3ZGAvY29uZnRlc3Qu ZGlyIiAmJgotCSAgICAgIHRlc3QgLXMgY29uZnRlc3Qub25lICYmIHRlc3QgLXMgY29uZnRlc3Qu dHdvICYmCi0JICAgICAgdGVzdCAtcyBjb25mdGVzdC5kaXIvY29uZnRlc3Qub25lICYmCi0JICAg ICAgdGVzdCAtcyBjb25mdGVzdC5kaXIvY29uZnRlc3QudHdvCi0JICAgIHRoZW4KLQkgICAgICBh Y19jdl9wYXRoX2luc3RhbGw9IiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQgLWMiCi0JICAg ICAgYnJlYWsgMwotCSAgICBmaQotCSAgZmkKLQlmaQotICAgICAgZG9uZQotICAgIGRvbmUKLSAg ICA7OwotZXNhYwotCi0gIGRvbmUKLUlGUz0kYXNfc2F2ZV9JRlMKLQotcm0gLXJmIGNvbmZ0ZXN0 Lm9uZSBjb25mdGVzdC50d28gY29uZnRlc3QuZGlyCi0KLWZpCi0gIGlmIHRlc3QgIiR7YWNfY3Zf cGF0aF9pbnN0YWxsK3NldH0iID0gc2V0OyB0aGVuCi0gICAgSU5TVEFMTD0kYWNfY3ZfcGF0aF9p bnN0YWxsCi0gIGVsc2UKLSAgICAjIEFzIGEgbGFzdCByZXNvcnQsIHVzZSB0aGUgc2xvdyBzaGVs bCBzY3JpcHQuICBEb24ndCBjYWNoZSBhCi0gICAgIyB2YWx1ZSBmb3IgSU5TVEFMTCB3aXRoaW4g YSBzb3VyY2UgZGlyZWN0b3J5LCBiZWNhdXNlIHRoYXQgd2lsbAotICAgICMgYnJlYWsgb3RoZXIg cGFja2FnZXMgdXNpbmcgdGhlIGNhY2hlIGlmIHRoYXQgZGlyZWN0b3J5IGlzCi0gICAgIyByZW1v dmVkLCBvciBpZiB0aGUgdmFsdWUgaXMgYSByZWxhdGl2ZSBuYW1lLgotICAgIElOU1RBTEw9JGFj X2luc3RhbGxfc2gKLSAgZmkKLWZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IHJlc3VsdDogJElOU1RBTEwiID4mNQotJGFzX2VjaG8gIiRJTlNUQUxMIiA+JjY7IH0K LQotIyBVc2UgdGVzdCAteiBiZWNhdXNlIFN1bk9TNCBzaCBtaXNoYW5kbGVzIGJyYWNlcyBpbiAk e3Zhci12YWx9LgotIyBJdCB0aGlua3MgdGhlIGZpcnN0IGNsb3NlIGJyYWNlIGVuZHMgdGhlIHZh cmlhYmxlIHN1YnN0aXR1dGlvbi4KLXRlc3QgLXogIiRJTlNUQUxMX1BST0dSQU0iICYmIElOU1RB TExfUFJPR1JBTT0nJHtJTlNUQUxMfScKLQotdGVzdCAteiAiJElOU1RBTExfU0NSSVBUIiAmJiBJ TlNUQUxMX1NDUklQVD0nJHtJTlNUQUxMfScKLQotdGVzdCAteiAiJElOU1RBTExfREFUQSIgJiYg SU5TVEFMTF9EQVRBPScke0lOU1RBTEx9IC1tIDY0NCcKLQotCi0jIENoZWNrcyBmb3IgcHJvZ3Jh bXMgdGhhdCBkZXBlbmQgb24gYSBmZWF0dXJlCi0KLWlmIHRlc3QgIngkdnRwbSIgPSAieHkiOyB0 aGVuIDoKLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJjbWFrZSIsIHNvIGl0IGNhbiBi ZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgY21ha2U7IGFjX3dvcmQ9JDIK LXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRh Y193b3JkIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsg fQotaWYgJHthY19jdl9wYXRoX0NNQUtFKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAi KGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgY2FzZSAkQ01BS0UgaW4KLSAgW1xcL10qIHwgPzpbXFwv XSopCi0gIGFjX2N2X3BhdGhfQ01BS0U9IiRDTUFLRSIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUg dGhlIHRlc3Qgd2l0aCBhIHBhdGguCi0gIDs7Ci0gICopCi0gIGFzX3NhdmVfSUZTPSRJRlM7IElG Uz0kUEFUSF9TRVBBUkFUT1IKLWZvciBhc19kaXIgaW4gJFBBVEgKLWRvCi0gIElGUz0kYXNfc2F2 ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICBmb3IgYWNfZXhlY19l eHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYgYXNfZm5fZXhlY3V0 YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotICAgIGFjX2N2X3Bh dGhfQ01BS0U9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCi0gICAgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVj X2V4dCIgPiY1Ci0gICAgYnJlYWsgMgotICBmaQotZG9uZQotICBkb25lCi1JRlM9JGFzX3NhdmVf SUZTCi0KLSAgdGVzdCAteiAiJGFjX2N2X3BhdGhfQ01BS0UiICYmIGFjX2N2X3BhdGhfQ01BS0U9 Im5vIgotICA7OwotZXNhYwotZmkKLUNNQUtFPSRhY19jdl9wYXRoX0NNQUtFCi1pZiB0ZXN0IC1u ICIkQ01BS0UiOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogcmVzdWx0OiAkQ01BS0UiID4mNQotJGFzX2VjaG8gIiRDTUFLRSIgPiY2OyB9Ci1lbHNlCi0g IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1 Ci0kYXNfZWNobyAibm8iID4mNjsgfQotZmkKLQotCi1pZiB0ZXN0IHgiJHtDTUFLRX0iID0geCJu byIKLXRoZW4KLSAgICBhc19mbl9lcnJvciAkPyAiVW5hYmxlIHRvIGZpbmQgY21ha2UsIHBsZWFz ZSBpbnN0YWxsIGNtYWtlIiAiJExJTkVOTyIgNQotZmkKLWVsc2UKLQotaWYgdGVzdCAieCR2dHBt IiA9ICJ4biI7IHRoZW4gOgotCi1DTUFLRT0iL2NtYWtlLWRpc2FibGVkLWluLWNvbmZpZ3VyZS1z Y3JpcHQiCi0KLWVsc2UKLQotIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJjbWFrZSIsIHNv IGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgY21ha2U7IGFj X3dvcmQ9JDIKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tp bmcgZm9yICRhY193b3JkIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4u LiAiID4mNjsgfQotaWYgJHthY19jdl9wYXRoX0NNQUtFKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFz X2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgY2FzZSAkQ01BS0UgaW4KLSAgW1xcL10q IHwgPzpbXFwvXSopCi0gIGFjX2N2X3BhdGhfQ01BS0U9IiRDTUFLRSIgIyBMZXQgdGhlIHVzZXIg b3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCi0gIDs7Ci0gICopCi0gIGFzX3NhdmVfSUZT PSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLWZvciBhc19kaXIgaW4gJFBBVEgKLWRvCi0gIElG Uz0kYXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICBmb3Ig YWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYgYXNf Zm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotICAg IGFjX2N2X3BhdGhfQ01BS0U9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCi0gICAgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29y ZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgYnJlYWsgMgotICBmaQotZG9uZQotICBkb25lCi1JRlM9 JGFzX3NhdmVfSUZTCi0KLSAgdGVzdCAteiAiJGFjX2N2X3BhdGhfQ01BS0UiICYmIGFjX2N2X3Bh dGhfQ01BS0U9Im5vIgotICA7OwotZXNhYwotZmkKLUNNQUtFPSRhY19jdl9wYXRoX0NNQUtFCi1p ZiB0ZXN0IC1uICIkQ01BS0UiOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogcmVzdWx0OiAkQ01BS0UiID4mNQotJGFzX2VjaG8gIiRDTUFLRSIgPiY2OyB9 Ci1lbHNlCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0 OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQotZmkKLQotCi1pZiB0ZXN0IHgiJHtDTUFL RX0iID0gInhubyI7IHRoZW4gOgotCi12dHBtPW4KLUNNQUtFPSIvY21ha2UtZGlzYWJsZWQtaW4t Y29uZmlndXJlLXNjcmlwdCIKLQotZmkKLQotZmkKLQotZmkKLQotCi0KLSMgU3R1YmRvbSBsaWJy YXJpZXMgdmVyc2lvbiBhbmQgdXJsIHNldHVwCi0KLQotaWYgdGVzdCAieCRaTElCX1VSTCIgPSAi eCI7IHRoZW4gOgotCi0JaWYgdGVzdCAieCRleHRmaWxlcyIgPSAieHkiOyB0aGVuIDoKLSAgWkxJ Ql9VUkw9XCRcKFhFTl9FWFRGSUxFU19VUkxcKQotZWxzZQotICBaTElCX1VSTD0iaHR0cDovL3d3 dy56bGliLm5ldCIKLWZpCi0KLWZpCi1aTElCX1ZFUlNJT049IjEuMi4zIgotCi0KLQotCi0KLWlm IHRlc3QgIngkTElCUENJX1VSTCIgPSAieCI7IHRoZW4gOgotCi0JaWYgdGVzdCAieCRleHRmaWxl cyIgPSAieHkiOyB0aGVuIDoKLSAgTElCUENJX1VSTD1cJFwoWEVOX0VYVEZJTEVTX1VSTFwpCi1l bHNlCi0gIExJQlBDSV9VUkw9Imh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvc29mdHdhcmUvdXRp bHMvcGNpdXRpbHMiCi1maQotCi1maQotTElCUENJX1ZFUlNJT049IjIuMi45IgotCi0KLQotCi0K LWlmIHRlc3QgIngkTkVXTElCX1VSTCIgPSAieCI7IHRoZW4gOgotCi0JaWYgdGVzdCAieCRleHRm aWxlcyIgPSAieHkiOyB0aGVuIDoKLSAgTkVXTElCX1VSTD1cJFwoWEVOX0VYVEZJTEVTX1VSTFwp Ci1lbHNlCi0gIE5FV0xJQl9VUkw9ImZ0cDovL3NvdXJjZXMucmVkaGF0LmNvbS9wdWIvbmV3bGli IgotZmkKLQotZmkKLU5FV0xJQl9WRVJTSU9OPSIxLjE2LjAiCi0KLQotCi0KLQotaWYgdGVzdCAi eCRMV0lQX1VSTCIgPSAieCI7IHRoZW4gOgotCi0JaWYgdGVzdCAieCRleHRmaWxlcyIgPSAieHki OyB0aGVuIDoKLSAgTFdJUF9VUkw9XCRcKFhFTl9FWFRGSUxFU19VUkxcKQotZWxzZQotICBMV0lQ X1VSTD0iaHR0cDovL2Rvd25sb2FkLnNhdmFubmFoLmdudS5vcmcvcmVsZWFzZXMvbHdpcCIKLWZp Ci0KLWZpCi1MV0lQX1ZFUlNJT049IjEuMy4wIgotCi0KLQotCi0KLWlmIHRlc3QgIngkR1JVQl9V UkwiID0gIngiOyB0aGVuIDoKLQotCWlmIHRlc3QgIngkZXh0ZmlsZXMiID0gInh5IjsgdGhlbiA6 Ci0gIEdSVUJfVVJMPVwkXChYRU5fRVhURklMRVNfVVJMXCkKLWVsc2UKLSAgR1JVQl9VUkw9Imh0 dHA6Ly9hbHBoYS5nbnUub3JnL2dudS9ncnViIgotZmkKLQotZmkKLUdSVUJfVkVSU0lPTj0iMC45 NyIKLQotCi0KLQotCi1pZiB0ZXN0ICJ4JE9DQU1MX1VSTCIgPSAieCI7IHRoZW4gOgotCi0JT0NB TUxfVVJMPSJodHRwOi8vY2FtbC5pbnJpYS5mci9wdWIvZGlzdHJpYi9vY2FtbC00LjAyIgotCi1m aQotT0NBTUxfVkVSU0lPTj0iNC4wMi4wIgotCi0KLQotCi0KLWlmIHRlc3QgIngkR01QX1VSTCIg PSAieCI7IHRoZW4gOgotCi0JaWYgdGVzdCAieCRleHRmaWxlcyIgPSAieHkiOyB0aGVuIDoKLSAg R01QX1VSTD1cJFwoWEVOX0VYVEZJTEVTX1VSTFwpCi1lbHNlCi0gIEdNUF9VUkw9ImZ0cDovL2Z0 cC5nbXBsaWIub3JnL3B1Yi9nbXAtNC4zLjIiCi1maQotCi1maQotR01QX1ZFUlNJT049IjQuMy4y IgotCi0KLQotCi0KLWlmIHRlc3QgIngkUE9MQVJTU0xfVVJMIiA9ICJ4IjsgdGhlbiA6Ci0KLQlp ZiB0ZXN0ICJ4JGV4dGZpbGVzIiA9ICJ4eSI7IHRoZW4gOgotICBQT0xBUlNTTF9VUkw9XCRcKFhF Tl9FWFRGSUxFU19VUkxcKQotZWxzZQotICBQT0xBUlNTTF9VUkw9Imh0dHA6Ly9wb2xhcnNzbC5v cmcvY29kZS9yZWxlYXNlcyIKLWZpCi0KLWZpCi1QT0xBUlNTTF9WRVJTSU9OPSIxLjEuNCIKLQot Ci0KLQotCi1pZiB0ZXN0ICJ4JFRQTUVNVV9VUkwiID0gIngiOyB0aGVuIDoKLQotCWlmIHRlc3Qg IngkZXh0ZmlsZXMiID0gInh5IjsgdGhlbiA6Ci0gIFRQTUVNVV9VUkw9XCRcKFhFTl9FWFRGSUxF U19VUkxcKQotZWxzZQotICBUUE1FTVVfVVJMPSJodHRwOi8vZG93bmxvYWQuYmVybGlvcy5kZS90 cG0tZW11bGF0b3IiCi1maQotCi1maQotVFBNRU1VX1ZFUlNJT049IjAuNy40IgotCi0KLQotCi0j VGhlc2Ugc3R1YmRvbXMgc2hvdWxkIGJlIGVuYWJsZWQgaWYgdGhlIGRlcGVuZGVudCBvbmUgaXMK LQotaWYgdGVzdCAieCR2dHBtbWdyIiA9ICJ4IiAmJiB0ZXN0ICJ4JHZ0cG0iID0gInhuIjsgdGhl biA6Ci0KLXZ0cG1tZ3I9Im4iCi0KLWZpCi0KLQotI0NvbmRpdGlvbmFsbHkgZW5hYmxlIHRoZXNl IHN0dWJkb21zIGJhc2VkIG9uIHRoZSBwcmVzZW5zZSBvZiBkZXBlbmRlbmNpZXMKLQotaWYgdGVz dCAieCR2dHBtIiA9ICJ4eSIgfHwgdGVzdCAieCR2dHBtIiA9ICJ4IjsgdGhlbiA6Ci0KLQotdnRw bT15Ci1TVFVCRE9NX1RBUkdFVFM9IiRTVFVCRE9NX1RBUkdFVFMgdnRwbSIKLVNUVUJET01fQlVJ TEQ9IiRTVFVCRE9NX0JVSUxEIHZ0cG0tc3R1YmRvbSIKLVNUVUJET01fSU5TVEFMTD0iJFNUVUJE T01fSU5TVEFMTCBpbnN0YWxsLXZ0cG0iCi1TVFVCRE9NX1VOSU5TVEFMTD0iJFNUVUJET01fVU5J TlNUQUxMIGluc3RhbGwtdnRwbSIKLQotCi1lbHNlCi0KLQotdnRwbT1uCi0KLQotZmkKLQotCi0K LWlmIHRlc3QgIngkdnRwbW1nciIgPSAieHkiIHx8IHRlc3QgIngkdnRwbW1nciIgPSAieCI7IHRo ZW4gOgotCi0KLXZ0cG1tZ3I9eQotU1RVQkRPTV9UQVJHRVRTPSIkU1RVQkRPTV9UQVJHRVRTIHZ0 cG1tZ3IiCi1TVFVCRE9NX0JVSUxEPSIkU1RVQkRPTV9CVUlMRCB2dHBtbWdyLXN0dWJkb20iCi1T VFVCRE9NX0lOU1RBTEw9IiRTVFVCRE9NX0lOU1RBTEwgaW5zdGFsbC12dHBtbWdyIgotU1RVQkRP TV9VTklOU1RBTEw9IiRTVFVCRE9NX1VOSU5TVEFMTCBpbnN0YWxsLXZ0cG1tZ3IiCi0KLQotZWxz ZQotCi0KLXZ0cG1tZ3I9bgotCi0KLWZpCi0KLQotCi1pZiB0ZXN0ICJ4JGlvZW11IiA9ICJ4eSIg fHwgdGVzdCAieCRpb2VtdSIgPSAieCI7IHRoZW4gOgotCi0KLWlvZW11PXkKLVNUVUJET01fVEFS R0VUUz0iJFNUVUJET01fVEFSR0VUUyBpb2VtdSIKLVNUVUJET01fQlVJTEQ9IiRTVFVCRE9NX0JV SUxEIGlvZW11LXN0dWJkb20iCi1TVFVCRE9NX0lOU1RBTEw9IiRTVFVCRE9NX0lOU1RBTEwgaW5z dGFsbC1pb2VtdSIKLVNUVUJET01fVU5JTlNUQUxMPSIkU1RVQkRPTV9VTklOU1RBTEwgaW5zdGFs bC1pb2VtdSIKLQotCi1lbHNlCi0KLQotaW9lbXU9bgotCi0KLWZpCi0KLQotCi0KLQotCi0KLQot ZWNobyAiV2lsbCBidWlsZCB0aGUgZm9sbG93aW5nIHN0dWIgZG9tYWluczoiCi1mb3IgeCBpbiAk U1RVQkRPTV9CVUlMRDsgZG8KLQllY2hvICIgICR4IgotZG9uZQotCi1jYXQgPmNvbmZjYWNoZSA8 PFxfQUNFT0YKLSMgVGhpcyBmaWxlIGlzIGEgc2hlbGwgc2NyaXB0IHRoYXQgY2FjaGVzIHRoZSBy ZXN1bHRzIG9mIGNvbmZpZ3VyZQotIyB0ZXN0cyBydW4gb24gdGhpcyBzeXN0ZW0gc28gdGhleSBj YW4gYmUgc2hhcmVkIGJldHdlZW4gY29uZmlndXJlCi0jIHNjcmlwdHMgYW5kIGNvbmZpZ3VyZSBy dW5zLCBzZWUgY29uZmlndXJlJ3Mgb3B0aW9uIC0tY29uZmlnLWNhY2hlLgotIyBJdCBpcyBub3Qg dXNlZnVsIG9uIG90aGVyIHN5c3RlbXMuICBJZiBpdCBjb250YWlucyByZXN1bHRzIHlvdSBkb24n dAotIyB3YW50IHRvIGtlZXAsIHlvdSBtYXkgcmVtb3ZlIG9yIGVkaXQgaXQuCi0jCi0jIGNvbmZp Zy5zdGF0dXMgb25seSBwYXlzIGF0dGVudGlvbiB0byB0aGUgY2FjaGUgZmlsZSBpZiB5b3UgZ2l2 ZSBpdAotIyB0aGUgLS1yZWNoZWNrIG9wdGlvbiB0byByZXJ1biBjb25maWd1cmUuCi0jCi0jIGBh Y19jdl9lbnZfZm9vJyB2YXJpYWJsZXMgKHNldCBvciB1bnNldCkgd2lsbCBiZSBvdmVycmlkZGVu IHdoZW4KLSMgbG9hZGluZyB0aGlzIGZpbGUsIG90aGVyICp1bnNldCogYGFjX2N2X2Zvbycgd2ls bCBiZSBhc3NpZ25lZCB0aGUKLSMgZm9sbG93aW5nIHZhbHVlcy4KLQotX0FDRU9GCi0KLSMgVGhl IGZvbGxvd2luZyB3YXkgb2Ygd3JpdGluZyB0aGUgY2FjaGUgbWlzaGFuZGxlcyBuZXdsaW5lcyBp biB2YWx1ZXMsCi0jIGJ1dCB3ZSBrbm93IG9mIG5vIHdvcmthcm91bmQgdGhhdCBpcyBzaW1wbGUs IHBvcnRhYmxlLCBhbmQgZWZmaWNpZW50LgotIyBTbywgd2Uga2lsbCB2YXJpYWJsZXMgY29udGFp bmluZyBuZXdsaW5lcy4KLSMgVWx0cml4IHNoIHNldCB3cml0ZXMgdG8gc3RkZXJyIGFuZCBjYW4n dCBiZSByZWRpcmVjdGVkIGRpcmVjdGx5LAotIyBhbmQgc2V0cyB0aGUgaGlnaCBiaXQgaW4gdGhl IGNhY2hlIGZpbGUgdW5sZXNzIHdlIGFzc2lnbiB0byB0aGUgdmFycy4KLSgKLSAgZm9yIGFjX3Zh ciBpbiBgKHNldCkgMj4mMSB8IHNlZCAtbiAncy9eXChbYS16QS1aX11bYS16QS1aMC05X10qXCk9 LiovXDEvcCdgOyBkbwotICAgIGV2YWwgYWNfdmFsPVwkJGFjX3ZhcgotICAgIGNhc2UgJGFjX3Zh bCBpbiAjKAotICAgICoke2FzX25sfSopCi0gICAgICBjYXNlICRhY192YXIgaW4gIygKLSAgICAg ICpfY3ZfKikgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5H OiBjYWNoZSB2YXJpYWJsZSAkYWNfdmFyIGNvbnRhaW5zIGEgbmV3bGluZSIgPiY1Ci0kYXNfZWNo byAiJGFzX21lOiBXQVJOSU5HOiBjYWNoZSB2YXJpYWJsZSAkYWNfdmFyIGNvbnRhaW5zIGEgbmV3 bGluZSIgPiYyO30gOzsKLSAgICAgIGVzYWMKLSAgICAgIGNhc2UgJGFjX3ZhciBpbiAjKAotICAg ICAgXyB8IElGUyB8IGFzX25sKSA7OyAjKAotICAgICAgQkFTSF9BUkdWIHwgQkFTSF9TT1VSQ0Up IGV2YWwgJGFjX3Zhcj0gOzsgIygKLSAgICAgICopIHsgZXZhbCAkYWNfdmFyPTsgdW5zZXQgJGFj X3Zhcjt9IDs7Ci0gICAgICBlc2FjIDs7Ci0gICAgZXNhYwotICBkb25lCi0KLSAgKHNldCkgMj4m MSB8Ci0gICAgY2FzZSAkYXNfbmxgKGFjX3NwYWNlPScgJzsgc2V0KSAyPiYxYCBpbiAjKAotICAg ICoke2FzX25sfWFjX3NwYWNlPVwgKikKLSAgICAgICMgYHNldCcgZG9lcyBub3QgcXVvdGUgY29y cmVjdGx5LCBzbyBhZGQgcXVvdGVzOiBkb3VibGUtcXVvdGUKLSAgICAgICMgc3Vic3RpdHV0aW9u IHR1cm5zIFxcXFwgaW50byBcXCwgYW5kIHNlZCB0dXJucyBcXCBpbnRvIFwuCi0gICAgICBzZWQg LW4gXAotCSJzLycvJ1xcXFwnJy9nOwotCSAgcy9eXFwoW18kYXNfY3JfYWxudW1dKl9jdl9bXyRh c19jcl9hbG51bV0qXFwpPVxcKC4qXFwpL1xcMT0nXFwyJy9wIgotICAgICAgOzsgIygKLSAgICAq KQotICAgICAgIyBgc2V0JyBxdW90ZXMgY29ycmVjdGx5IGFzIHJlcXVpcmVkIGJ5IFBPU0lYLCBz byBkbyBub3QgYWRkIHF1b3Rlcy4KLSAgICAgIHNlZCAtbiAiL15bXyRhc19jcl9hbG51bV0qX2N2 X1tfJGFzX2NyX2FsbnVtXSo9L3AiCi0gICAgICA7OwotICAgIGVzYWMgfAotICAgIHNvcnQKLSkg fAotICBzZWQgJwotICAgICAvXmFjX2N2X2Vudl8vYiBlbmQKLSAgICAgdCBjbGVhcgotICAgICA6 Y2xlYXIKLSAgICAgcy9eXChbXj1dKlwpPVwoLipbe31dLipcKSQvdGVzdCAiJHtcMStzZXR9IiA9 IHNldCB8fCAmLwotICAgICB0IGVuZAotICAgICBzL15cKFtePV0qXCk9XCguKlwpJC9cMT0ke1wx PVwyfS8KLSAgICAgOmVuZCcgPj5jb25mY2FjaGUKLWlmIGRpZmYgIiRjYWNoZV9maWxlIiBjb25m Y2FjaGUgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDo7IGVsc2UKLSAgaWYgdGVzdCAtdyAiJGNhY2hl X2ZpbGUiOyB0aGVuCi0gICAgaWYgdGVzdCAieCRjYWNoZV9maWxlIiAhPSAieC9kZXYvbnVsbCI7 IHRoZW4KLSAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogdXBk YXRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNQotJGFzX2VjaG8gIiRhc19tZTogdXBkYXRpbmcg Y2FjaGUgJGNhY2hlX2ZpbGUiID4mNjt9Ci0gICAgICBpZiB0ZXN0ICEgLWYgIiRjYWNoZV9maWxl IiB8fCB0ZXN0IC1oICIkY2FjaGVfZmlsZSI7IHRoZW4KLQljYXQgY29uZmNhY2hlID4iJGNhY2hl X2ZpbGUiCi0gICAgICBlbHNlCi0gICAgICAgIGNhc2UgJGNhY2hlX2ZpbGUgaW4gIygKLSAgICAg ICAgKi8qIHwgPzoqKQotCSAgbXYgLWYgY29uZmNhY2hlICIkY2FjaGVfZmlsZSIkJCAmJgotCSAg bXYgLWYgIiRjYWNoZV9maWxlIiQkICIkY2FjaGVfZmlsZSIgOzsgIygKLSAgICAgICAgKikKLQkg IG12IC1mIGNvbmZjYWNoZSAiJGNhY2hlX2ZpbGUiIDs7Ci0JZXNhYwotICAgICAgZmkKLSAgICBm aQotICBlbHNlCi0gICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBu b3QgdXBkYXRpbmcgdW53cml0YWJsZSBjYWNoZSAkY2FjaGVfZmlsZSIgPiY1Ci0kYXNfZWNobyAi JGFzX21lOiBub3QgdXBkYXRpbmcgdW53cml0YWJsZSBjYWNoZSAkY2FjaGVfZmlsZSIgPiY2O30K LSAgZmkKLWZpCi1ybSAtZiBjb25mY2FjaGUKLQotdGVzdCAieCRwcmVmaXgiID0geE5PTkUgJiYg cHJlZml4PSRhY19kZWZhdWx0X3ByZWZpeAotIyBMZXQgbWFrZSBleHBhbmQgZXhlY19wcmVmaXgu Ci10ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9IHhOT05FICYmIGV4ZWNfcHJlZml4PScke3ByZWZpeH0n Ci0KLSMgVHJhbnNmb3JtIGNvbmZkZWZzLmggaW50byBERUZTLgotIyBQcm90ZWN0IGFnYWluc3Qg c2hlbGwgZXhwYW5zaW9uIHdoaWxlIGV4ZWN1dGluZyBNYWtlZmlsZSBydWxlcy4KLSMgUHJvdGVj dCBhZ2FpbnN0IE1ha2VmaWxlIG1hY3JvIGV4cGFuc2lvbi4KLSMKLSMgSWYgdGhlIGZpcnN0IHNl ZCBzdWJzdGl0dXRpb24gaXMgZXhlY3V0ZWQgKHdoaWNoIGxvb2tzIGZvciBtYWNyb3MgdGhhdAot IyB0YWtlIGFyZ3VtZW50cyksIHRoZW4gYnJhbmNoIHRvIHRoZSBxdW90ZSBzZWN0aW9uLiAgT3Ro ZXJ3aXNlLAotIyBsb29rIGZvciBhIG1hY3JvIHRoYXQgZG9lc24ndCB0YWtlIGFyZ3VtZW50cy4K LWFjX3NjcmlwdD0nCi06bWxpbmUKLS9cXCQvewotIE4KLSBzLFxcXG4sLAotIGIgbWxpbmUKLX0K LXQgY2xlYXIKLTpjbGVhcgotcy9eWwkgXSojWwkgXSpkZWZpbmVbCSBdWwkgXSpcKFteCSAoXVte CSAoXSooW14pXSopXClbCSBdKlwoLipcKS8tRFwxPVwyL2cKLXQgcXVvdGUKLXMvXlsJIF0qI1sJ IF0qZGVmaW5lWwkgXVsJIF0qXChbXgkgXVteCSBdKlwpWwkgXSpcKC4qXCkvLURcMT1cMi9nCi10 IHF1b3RlCi1iIGFueQotOnF1b3RlCi1zL1sJIGB+IyReJiooKXt9XFx8OydcJyciPD4/XS9cXCYv Zwotcy9cWy9cXCYvZwotcy9cXS9cXCYvZwotcy9cJC8kJC9nCi1ICi06YW55Ci0kewotCWcKLQlz L15cbi8vCi0Jcy9cbi8gL2cKLQlwCi19Ci0nCi1ERUZTPWBzZWQgLW4gIiRhY19zY3JpcHQiIGNv bmZkZWZzLmhgCi0KLQotYWNfbGlib2Jqcz0KLWFjX2x0bGlib2Jqcz0KLVU9Ci1mb3IgYWNfaSBp biA6ICRMSUJPQkpTOyBkbyB0ZXN0ICJ4JGFjX2kiID0geDogJiYgY29udGludWUKLSAgIyAxLiBS ZW1vdmUgdGhlIGV4dGVuc2lvbiwgYW5kICRVIGlmIGFscmVhZHkgaW5zdGFsbGVkLgotICBhY19z Y3JpcHQ9J3MvXCRVXC4vLi87cy9cLm8kLy87cy9cLm9iaiQvLycKLSAgYWNfaT1gJGFzX2VjaG8g IiRhY19pIiB8IHNlZCAiJGFjX3NjcmlwdCJgCi0gICMgMi4gUHJlcGVuZCBMSUJPQkpESVIuICBX aGVuIHVzZWQgd2l0aCBhdXRvbWFrZT49MS4xMCBMSUJPQkpESVIKLSAgIyAgICB3aWxsIGJlIHNl dCB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIExJQk9CSlMgb2JqZWN0cyBhcmUgYnVpbHQuCi0gIGFz X2ZuX2FwcGVuZCBhY19saWJvYmpzICIgXCR7TElCT0JKRElSfSRhY19pXCRVLiRhY19vYmpleHQi Ci0gIGFzX2ZuX2FwcGVuZCBhY19sdGxpYm9ianMgIiBcJHtMSUJPQkpESVJ9JGFjX2kiJyRVLmxv JwotZG9uZQotTElCT0JKUz0kYWNfbGlib2JqcwotCi1MVExJQk9CSlM9JGFjX2x0bGlib2Jqcwot Ci0KLQotOiAiJHtDT05GSUdfU1RBVFVTPS4vY29uZmlnLnN0YXR1c30iCi1hY193cml0ZV9mYWls PTAKLWFjX2NsZWFuX2ZpbGVzX3NhdmU9JGFjX2NsZWFuX2ZpbGVzCi1hY19jbGVhbl9maWxlcz0i JGFjX2NsZWFuX2ZpbGVzICRDT05GSUdfU1RBVFVTIgoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiBjcmVhdGluZyAkQ09ORklHX1NUQVRVUyIgPiY1Ci0kYXNfZWNobyAi JGFzX21lOiBjcmVhdGluZyAkQ09ORklHX1NUQVRVUyIgPiY2O30KLWFzX3dyaXRlX2ZhaWw9MAot Y2F0ID4kQ09ORklHX1NUQVRVUyA8PF9BU0VPRiB8fCBhc193cml0ZV9mYWlsPTEKLSMhICRTSEVM TAotIyBHZW5lcmF0ZWQgYnkgJGFzX21lLgotIyBSdW4gdGhpcyBmaWxlIHRvIHJlY3JlYXRlIHRo ZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uCi0jIENvbXBpbGVyIG91dHB1dCBwcm9kdWNlZCBieSBj b25maWd1cmUsIHVzZWZ1bCBmb3IgZGVidWdnaW5nCi0jIGNvbmZpZ3VyZSwgaXMgaW4gY29uZmln LmxvZyBpZiBpdCBleGlzdHMuCi0KLWRlYnVnPWZhbHNlCi1hY19jc19yZWNoZWNrPWZhbHNlCi1h Y19jc19zaWxlbnQ9ZmFsc2UKLQotU0hFTEw9XCR7Q09ORklHX1NIRUxMLSRTSEVMTH0KLWV4cG9y dCBTSEVMTAotX0FTRU9GCi1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQVNFT0YgfHwgYXNfd3Jp dGVfZmFpbD0xCi0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIyMgTTRzaCBJbml0aWFsaXph dGlvbi4gIyMKLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0KLSMgQmUgbW9yZSBCb3VybmUg Y29tcGF0aWJsZQotRFVBTENBU0U9MTsgZXhwb3J0IERVQUxDQVNFICMgZm9yIE1LUyBzaAotaWYg dGVzdCAtbiAiJHtaU0hfVkVSU0lPTitzZXR9IiAmJiAoZW11bGF0ZSBzaCkgPi9kZXYvbnVsbCAy PiYxOyB0aGVuIDoKLSAgZW11bGF0ZSBzaAotICBOVUxMQ01EPToKLSAgIyBQcmUtNC4yIHZlcnNp b25zIG9mIFpzaCBkbyB3b3JkIHNwbGl0dGluZyBvbiAkezErIiRAIn0sIHdoaWNoCi0gICMgaXMg Y29udHJhcnkgdG8gb3VyIHVzYWdlLiAgRGlzYWJsZSB0aGlzIGZlYXR1cmUuCi0gIGFsaWFzIC1n ICckezErIiRAIn0nPSciJEAiJwotICBzZXRvcHQgTk9fR0xPQl9TVUJTVAotZWxzZQotICBjYXNl IGAoc2V0IC1vKSAyPi9kZXYvbnVsbGAgaW4gIygKLSAgKnBvc2l4KikgOgotICAgIHNldCAtbyBw b3NpeCA7OyAjKAotICAqKSA6Ci0gICAgIDs7Ci1lc2FjCi1maQotCi0KLWFzX25sPScKLScKLWV4 cG9ydCBhc19ubAotIyBQcmludGluZyBhIGxvbmcgc3RyaW5nIGNyYXNoZXMgU29sYXJpcyA3IC91 c3IvYmluL3ByaW50Zi4KLWFzX2VjaG89J1xcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc XFxcXFxcXFxcXFxcXFwnCi1hc19lY2hvPSRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hv JGFzX2VjaG8KLWFzX2VjaG89JGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNo byRhc19lY2hvCi0jIFByZWZlciBhIGtzaCBzaGVsbCBidWlsdGluIG92ZXIgYW4gZXh0ZXJuYWwg cHJpbnRmIHByb2dyYW0gb24gU29sYXJpcywKLSMgYnV0IHdpdGhvdXQgd2FzdGluZyBmb3JrcyBm b3IgYmFzaCBvciB6c2guCi1pZiB0ZXN0IC16ICIkQkFTSF9WRVJTSU9OJFpTSF9WRVJTSU9OIiBc Ci0gICAgJiYgKHRlc3QgIlhgcHJpbnQgLXIgLS0gJGFzX2VjaG9gIiA9ICJYJGFzX2VjaG8iKSAy Pi9kZXYvbnVsbDsgdGhlbgotICBhc19lY2hvPSdwcmludCAtciAtLScKLSAgYXNfZWNob19uPSdw cmludCAtcm4gLS0nCi1lbGlmICh0ZXN0ICJYYHByaW50ZiAlcyAkYXNfZWNob2AiID0gIlgkYXNf ZWNobyIpIDI+L2Rldi9udWxsOyB0aGVuCi0gIGFzX2VjaG89J3ByaW50ZiAlc1xuJwotICBhc19l Y2hvX249J3ByaW50ZiAlcycKLWVsc2UKLSAgaWYgdGVzdCAiWGAoL3Vzci91Y2IvZWNobyAtbiAt biAkYXNfZWNobykgMj4vZGV2L251bGxgIiA9ICJYLW4gJGFzX2VjaG8iOyB0aGVuCi0gICAgYXNf ZWNob19ib2R5PSdldmFsIC91c3IvdWNiL2VjaG8gLW4gIiQxJGFzX25sIicKLSAgICBhc19lY2hv X249Jy91c3IvdWNiL2VjaG8gLW4nCi0gIGVsc2UKLSAgICBhc19lY2hvX2JvZHk9J2V2YWwgZXhw ciAiWCQxIiA6ICJYXFwoLipcXCkiJwotICAgIGFzX2VjaG9fbl9ib2R5PSdldmFsCi0gICAgICBh cmc9JDE7Ci0gICAgICBjYXNlICRhcmcgaW4gIygKLSAgICAgICoiJGFzX25sIiopCi0JZXhwciAi WCRhcmciIDogIlhcXCguKlxcKSRhc19ubCI7Ci0JYXJnPWBleHByICJYJGFyZyIgOiAiLiokYXNf bmxcXCguKlxcKSJgOzsKLSAgICAgIGVzYWM7Ci0gICAgICBleHByICJYJGFyZyIgOiAiWFxcKC4q XFwpIiB8IHRyIC1kICIkYXNfbmwiCi0gICAgJwotICAgIGV4cG9ydCBhc19lY2hvX25fYm9keQot ICAgIGFzX2VjaG9fbj0nc2ggLWMgJGFzX2VjaG9fbl9ib2R5IGFzX2VjaG8nCi0gIGZpCi0gIGV4 cG9ydCBhc19lY2hvX2JvZHkKLSAgYXNfZWNobz0nc2ggLWMgJGFzX2VjaG9fYm9keSBhc19lY2hv JwotZmkKLQotIyBUaGUgdXNlciBpcyBhbHdheXMgcmlnaHQuCi1pZiB0ZXN0ICIke1BBVEhfU0VQ QVJBVE9SK3NldH0iICE9IHNldDsgdGhlbgotICBQQVRIX1NFUEFSQVRPUj06Ci0gIChQQVRIPScv YmluOy9iaW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxICYmIHsKLSAg ICAoUEFUSD0nL2JpbjovYmluJzsgRlBBVEg9JFBBVEg7IHNoIC1jIDopID4vZGV2L251bGwgMj4m MSB8fAotICAgICAgUEFUSF9TRVBBUkFUT1I9JzsnCi0gIH0KLWZpCi0KLQotIyBJRlMKLSMgV2Ug bmVlZCBzcGFjZSwgdGFiIGFuZCBuZXcgbGluZSwgaW4gcHJlY2lzZWx5IHRoYXQgb3JkZXIuICBR dW90aW5nIGlzCi0jIHRoZXJlIHRvIHByZXZlbnQgZWRpdG9ycyBmcm9tIGNvbXBsYWluaW5nIGFi b3V0IHNwYWNlLXRhYi4KLSMgKElmIF9BU19QQVRIX1dBTEsgd2VyZSBjYWxsZWQgd2l0aCBJRlMg dW5zZXQsIGl0IHdvdWxkIGRpc2FibGUgd29yZAotIyBzcGxpdHRpbmcgYnkgc2V0dGluZyBJRlMg dG8gZW1wdHkgdmFsdWUuKQotSUZTPSIgIiIJJGFzX25sIgotCi0jIEZpbmQgd2hvIHdlIGFyZS4g IExvb2sgaW4gdGhlIHBhdGggaWYgd2UgY29udGFpbiBubyBkaXJlY3Rvcnkgc2VwYXJhdG9yLgot YXNfbXlzZWxmPQotY2FzZSAkMCBpbiAjKCgKLSAgKltcXC9dKiApIGFzX215c2VsZj0kMCA7Owot ICAqKSBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi1mb3IgYXNfZGlyIGlu ICRQQVRICi1kbwotICBJRlM9JGFzX3NhdmVfSUZTCi0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFz X2Rpcj0uCi0gICAgdGVzdCAtciAiJGFzX2Rpci8kMCIgJiYgYXNfbXlzZWxmPSRhc19kaXIvJDAg JiYgYnJlYWsKLSAgZG9uZQotSUZTPSRhc19zYXZlX0lGUwotCi0gICAgIDs7Ci1lc2FjCi0jIFdl IGRpZCBub3QgZmluZCBvdXJzZWx2ZXMsIG1vc3QgcHJvYmFibHkgd2Ugd2VyZSBydW4gYXMgYHNo IENPTU1BTkQnCi0jIGluIHdoaWNoIGNhc2Ugd2UgYXJlIG5vdCB0byBiZSBmb3VuZCBpbiB0aGUg cGF0aC4KLWlmIHRlc3QgIngkYXNfbXlzZWxmIiA9IHg7IHRoZW4KLSAgYXNfbXlzZWxmPSQwCi1m aQotaWYgdGVzdCAhIC1mICIkYXNfbXlzZWxmIjsgdGhlbgotICAkYXNfZWNobyAiJGFzX215c2Vs ZjogZXJyb3I6IGNhbm5vdCBmaW5kIG15c2VsZjsgcmVydW4gd2l0aCBhbiBhYnNvbHV0ZSBmaWxl IG5hbWUiID4mMgotICBleGl0IDEKLWZpCi0KLSMgVW5zZXQgdmFyaWFibGVzIHRoYXQgd2UgZG8g bm90IG5lZWQgYW5kIHdoaWNoIGNhdXNlIGJ1Z3MgKGUuZy4gaW4KLSMgcHJlLTMuMCBVV0lOIGtz aCkuICBCdXQgZG8gbm90IGNhdXNlIGJ1Z3MgaW4gYmFzaCAyLjAxOyB0aGUgInx8IGV4aXQgMSIK LSMgc3VwcHJlc3NlcyBhbnkgIlNlZ21lbnRhdGlvbiBmYXVsdCIgbWVzc2FnZSB0aGVyZS4gICco KCcgY291bGQKLSMgdHJpZ2dlciBhIGJ1ZyBpbiBwZGtzaCA1LjIuMTQuCi1mb3IgYXNfdmFyIGlu IEJBU0hfRU5WIEVOViBNQUlMIE1BSUxQQVRICi1kbyBldmFsIHRlc3QgeFwkeyRhc192YXIrc2V0 fSA9IHhzZXQgXAotICAmJiAoICh1bnNldCAkYXNfdmFyKSB8fCBleGl0IDEpID4vZGV2L251bGwg Mj4mMSAmJiB1bnNldCAkYXNfdmFyIHx8IDoKLWRvbmUKLVBTMT0nJCAnCi1QUzI9Jz4gJwotUFM0 PScrICcKLQotIyBOTFMgbnVpc2FuY2VzLgotTENfQUxMPUMKLWV4cG9ydCBMQ19BTEwKLUxBTkdV QUdFPUMKLWV4cG9ydCBMQU5HVUFHRQotCi0jIENEUEFUSC4KLSh1bnNldCBDRFBBVEgpID4vZGV2 L251bGwgMj4mMSAmJiB1bnNldCBDRFBBVEgKLQotCi0jIGFzX2ZuX2Vycm9yIFNUQVRVUyBFUlJP UiBbTElORU5PIExPR19GRF0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQotIyBPdXRwdXQgImBiYXNlbmFtZSAkMGA6IGVycm9yOiBFUlJPUiIgdG8gc3RkZXJyLiBJ ZiBMSU5FTk8gYW5kIExPR19GRCBhcmUKLSMgcHJvdmlkZWQsIGFsc28gb3V0cHV0IHRoZSBlcnJv ciB0byBMT0dfRkQsIHJlZmVyZW5jaW5nIExJTkVOTy4gVGhlbiBleGl0IHRoZQotIyBzY3JpcHQg d2l0aCBTVEFUVVMsIHVzaW5nIDEgaWYgdGhhdCB3YXMgMC4KLWFzX2ZuX2Vycm9yICgpCi17Ci0g IGFzX3N0YXR1cz0kMTsgdGVzdCAkYXNfc3RhdHVzIC1lcSAwICYmIGFzX3N0YXR1cz0xCi0gIGlm IHRlc3QgIiQ0IjsgdGhlbgotICAgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDMifSBhc19saW5l bm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKLSAgICAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogJDIiID4mJDQKLSAgZmkKLSAgJGFz X2VjaG8gIiRhc19tZTogZXJyb3I6ICQyIiA+JjIKLSAgYXNfZm5fZXhpdCAkYXNfc3RhdHVzCi19 ICMgYXNfZm5fZXJyb3IKLQotCi0jIGFzX2ZuX3NldF9zdGF0dXMgU1RBVFVTCi0jIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCi0jIFNldCAkPyB0byBTVEFUVVMsIHdpdGhvdXQgZm9ya2luZy4KLWFz X2ZuX3NldF9zdGF0dXMgKCkKLXsKLSAgcmV0dXJuICQxCi19ICMgYXNfZm5fc2V0X3N0YXR1cwot Ci0jIGFzX2ZuX2V4aXQgU1RBVFVTCi0jIC0tLS0tLS0tLS0tLS0tLS0tCi0jIEV4aXQgdGhlIHNo ZWxsIHdpdGggU1RBVFVTLCBldmVuIGluIGEgInRyYXAgMCIgb3IgInNldCAtZSIgY29udGV4dC4K LWFzX2ZuX2V4aXQgKCkKLXsKLSAgc2V0ICtlCi0gIGFzX2ZuX3NldF9zdGF0dXMgJDEKLSAgZXhp dCAkMQotfSAjIGFzX2ZuX2V4aXQKLQotIyBhc19mbl91bnNldCBWQVIKLSMgLS0tLS0tLS0tLS0t LS0tCi0jIFBvcnRhYmx5IHVuc2V0IFZBUi4KLWFzX2ZuX3Vuc2V0ICgpCi17Ci0gIHsgZXZhbCAk MT07IHVuc2V0ICQxO30KLX0KLWFzX3Vuc2V0PWFzX2ZuX3Vuc2V0Ci0jIGFzX2ZuX2FwcGVuZCBW QVIgVkFMVUUKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBBcHBlbmQgdGhlIHRleHQgaW4g VkFMVUUgdG8gdGhlIGVuZCBvZiB0aGUgZGVmaW5pdGlvbiBjb250YWluZWQgaW4gVkFSLiBUYWtl Ci0jIGFkdmFudGFnZSBvZiBhbnkgc2hlbGwgb3B0aW1pemF0aW9ucyB0aGF0IGFsbG93IGFtb3J0 aXplZCBsaW5lYXIgZ3Jvd3RoIG92ZXIKLSMgcmVwZWF0ZWQgYXBwZW5kcywgaW5zdGVhZCBvZiB0 aGUgdHlwaWNhbCBxdWFkcmF0aWMgZ3Jvd3RoIHByZXNlbnQgaW4gbmFpdmUKLSMgaW1wbGVtZW50 YXRpb25zLgotaWYgKGV2YWwgImFzX3Zhcj0xOyBhc192YXIrPTI7IHRlc3QgeFwkYXNfdmFyID0g eDEyIikgMj4vZGV2L251bGw7IHRoZW4gOgotICBldmFsICdhc19mbl9hcHBlbmQgKCkKLSAgewot ICAgIGV2YWwgJDErPVwkMgotICB9JwotZWxzZQotICBhc19mbl9hcHBlbmQgKCkKLSAgewotICAg IGV2YWwgJDE9XCQkMVwkMgotICB9Ci1maSAjIGFzX2ZuX2FwcGVuZAotCi0jIGFzX2ZuX2FyaXRo IEFSRy4uLgotIyAtLS0tLS0tLS0tLS0tLS0tLS0KLSMgUGVyZm9ybSBhcml0aG1ldGljIGV2YWx1 YXRpb24gb24gdGhlIEFSR3MsIGFuZCBzdG9yZSB0aGUgcmVzdWx0IGluIHRoZQotIyBnbG9iYWwg JGFzX3ZhbC4gVGFrZSBhZHZhbnRhZ2Ugb2Ygc2hlbGxzIHRoYXQgY2FuIGF2b2lkIGZvcmtzLiBU aGUgYXJndW1lbnRzCi0jIG11c3QgYmUgcG9ydGFibGUgYWNyb3NzICQoKCkpIGFuZCBleHByLgot aWYgKGV2YWwgInRlc3QgXCQoKCAxICsgMSApKSA9IDIiKSAyPi9kZXYvbnVsbDsgdGhlbiA6Ci0g IGV2YWwgJ2FzX2ZuX2FyaXRoICgpCi0gIHsKLSAgICBhc192YWw9JCgoICQqICkpCi0gIH0nCi1l bHNlCi0gIGFzX2ZuX2FyaXRoICgpCi0gIHsKLSAgICBhc192YWw9YGV4cHIgIiRAIiB8fCB0ZXN0 ICQ/IC1lcSAxYAotICB9Ci1maSAjIGFzX2ZuX2FyaXRoCi0KLQotaWYgZXhwciBhIDogJ1woYVwp JyA+L2Rldi9udWxsIDI+JjEgJiYKLSAgIHRlc3QgIlhgZXhwciAwMDAwMSA6ICcuKlwoLi4uXCkn YCIgPSBYMDAxOyB0aGVuCi0gIGFzX2V4cHI9ZXhwcgotZWxzZQotICBhc19leHByPWZhbHNlCi1m aQotCi1pZiAoYmFzZW5hbWUgLS0gLykgPi9kZXYvbnVsbCAyPiYxICYmIHRlc3QgIlhgYmFzZW5h bWUgLS0gLyAyPiYxYCIgPSAiWC8iOyB0aGVuCi0gIGFzX2Jhc2VuYW1lPWJhc2VuYW1lCi1lbHNl Ci0gIGFzX2Jhc2VuYW1lPWZhbHNlCi1maQotCi1pZiAoYXNfZGlyPWBkaXJuYW1lIC0tIC9gICYm IHRlc3QgIlgkYXNfZGlyIiA9IFgvKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSAgYXNfZGlybmFt ZT1kaXJuYW1lCi1lbHNlCi0gIGFzX2Rpcm5hbWU9ZmFsc2UKLWZpCi0KLWFzX21lPWAkYXNfYmFz ZW5hbWUgLS0gIiQwIiB8fAotJGFzX2V4cHIgWC8iJDAiIDogJy4qL1woW14vXVteL10qXCkvKiQn IFx8IFwKLQkgWCIkMCIgOiAnWFwoLy9cKSQnIFx8IFwKLQkgWCIkMCIgOiAnWFwoL1wpJyBcfCAu IDI+L2Rldi9udWxsIHx8Ci0kYXNfZWNobyBYLyIkMCIgfAotICAgIHNlZCAnL14uKlwvXChbXi9d W14vXSpcKVwvKiQvewotCSAgICBzLy9cMS8KLQkgICAgcQotCSAgfQotCSAgL15YXC9cKFwvXC9c KSQvewotCSAgICBzLy9cMS8KLQkgICAgcQotCSAgfQotCSAgL15YXC9cKFwvXCkuKi97Ci0JICAg IHMvL1wxLwotCSAgICBxCi0JICB9Ci0JICBzLy4qLy4vOyBxJ2AKLQotIyBBdm9pZCBkZXBlbmRp bmcgdXBvbiBDaGFyYWN0ZXIgUmFuZ2VzLgotYXNfY3JfbGV0dGVycz0nYWJjZGVmZ2hpamtsbW5v cHFyc3R1dnd4eXonCi1hc19jcl9MRVRURVJTPSdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicK LWFzX2NyX0xldHRlcnM9JGFzX2NyX2xldHRlcnMkYXNfY3JfTEVUVEVSUwotYXNfY3JfZGlnaXRz PScwMTIzNDU2Nzg5JwotYXNfY3JfYWxudW09JGFzX2NyX0xldHRlcnMkYXNfY3JfZGlnaXRzCi0K LUVDSE9fQz0gRUNIT19OPSBFQ0hPX1Q9Ci1jYXNlIGBlY2hvIC1uIHhgIGluICMoKCgoKAotLW4q KQotICBjYXNlIGBlY2hvICd4eVxjJ2AgaW4KLSAgKmMqKSBFQ0hPX1Q9JwknOzsJIyBFQ0hPX1Qg aXMgc2luZ2xlIHRhYiBjaGFyYWN0ZXIuCi0gIHh5KSAgRUNIT19DPSdcYyc7OwotICAqKSAgIGVj aG8gYGVjaG8ga3NoODggYnVnIG9uIEFJWCA2LjFgID4gL2Rldi9udWxsCi0gICAgICAgRUNIT19U PScJJzs7Ci0gIGVzYWM7OwotKikKLSAgRUNIT19OPSctbic7OwotZXNhYwotCi1ybSAtZiBjb25m JCQgY29uZiQkLmV4ZSBjb25mJCQuZmlsZQotaWYgdGVzdCAtZCBjb25mJCQuZGlyOyB0aGVuCi0g IHJtIC1mIGNvbmYkJC5kaXIvY29uZiQkLmZpbGUKLWVsc2UKLSAgcm0gLWYgY29uZiQkLmRpcgot ICBta2RpciBjb25mJCQuZGlyIDI+L2Rldi9udWxsCi1maQotaWYgKGVjaG8gPmNvbmYkJC5maWxl KSAyPi9kZXYvbnVsbDsgdGhlbgotICBpZiBsbiAtcyBjb25mJCQuZmlsZSBjb25mJCQgMj4vZGV2 L251bGw7IHRoZW4KLSAgICBhc19sbl9zPSdsbiAtcycKLSAgICAjIC4uLiBidXQgdGhlcmUgYXJl IHR3byBnb3RjaGFzOgotICAgICMgMSkgT24gTVNZUywgYm90aCBgbG4gLXMgZmlsZSBkaXInIGFu ZCBgbG4gZmlsZSBkaXInIGZhaWwuCi0gICAgIyAyKSBESkdQUCA8IDIuMDQgaGFzIG5vIHN5bWxp bmtzOyBgbG4gLXMnIGNyZWF0ZXMgYSB3cmFwcGVyIGV4ZWN1dGFibGUuCi0gICAgIyBJbiBib3Ro IGNhc2VzLCB3ZSBoYXZlIHRvIGRlZmF1bHQgdG8gYGNwIC1wUicuCi0gICAgbG4gLXMgY29uZiQk LmZpbGUgY29uZiQkLmRpciAyPi9kZXYvbnVsbCAmJiB0ZXN0ICEgLWYgY29uZiQkLmV4ZSB8fAot ICAgICAgYXNfbG5fcz0nY3AgLXBSJwotICBlbGlmIGxuIGNvbmYkJC5maWxlIGNvbmYkJCAyPi9k ZXYvbnVsbDsgdGhlbgotICAgIGFzX2xuX3M9bG4KLSAgZWxzZQotICAgIGFzX2xuX3M9J2NwIC1w UicKLSAgZmkKLWVsc2UKLSAgYXNfbG5fcz0nY3AgLXBSJwotZmkKLXJtIC1mIGNvbmYkJCBjb25m JCQuZXhlIGNvbmYkJC5kaXIvY29uZiQkLmZpbGUgY29uZiQkLmZpbGUKLXJtZGlyIGNvbmYkJC5k aXIgMj4vZGV2L251bGwKLQotCi0jIGFzX2ZuX21rZGlyX3AKLSMgLS0tLS0tLS0tLS0tLQotIyBD cmVhdGUgIiRhc19kaXIiIGFzIGEgZGlyZWN0b3J5LCBpbmNsdWRpbmcgcGFyZW50cyBpZiBuZWNl c3NhcnkuCi1hc19mbl9ta2Rpcl9wICgpCi17Ci0KLSAgY2FzZSAkYXNfZGlyIGluICMoCi0gIC0q KSBhc19kaXI9Li8kYXNfZGlyOzsKLSAgZXNhYwotICB0ZXN0IC1kICIkYXNfZGlyIiB8fCBldmFs ICRhc19ta2Rpcl9wIHx8IHsKLSAgICBhc19kaXJzPQotICAgIHdoaWxlIDo7IGRvCi0gICAgICBj YXNlICRhc19kaXIgaW4gIygKLSAgICAgICpcJyopIGFzX3FkaXI9YCRhc19lY2hvICIkYXNfZGly IiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYDs7ICMnKAotICAgICAgKikgYXNfcWRpcj0kYXNf ZGlyOzsKLSAgICAgIGVzYWMKLSAgICAgIGFzX2RpcnM9IickYXNfcWRpcicgJGFzX2RpcnMiCi0g ICAgICBhc19kaXI9YCRhc19kaXJuYW1lIC0tICIkYXNfZGlyIiB8fAotJGFzX2V4cHIgWCIkYXNf ZGlyIiA6ICdYXCguKlteL11cKS8vKlteL11bXi9dKi8qJCcgXHwgXAotCSBYIiRhc19kaXIiIDog J1hcKC8vXClbXi9dJyBcfCBcCi0JIFgiJGFzX2RpciIgOiAnWFwoLy9cKSQnIFx8IFwKLQkgWCIk YXNfZGlyIiA6ICdYXCgvXCknIFx8IC4gMj4vZGV2L251bGwgfHwKLSRhc19lY2hvIFgiJGFzX2Rp ciIgfAotICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97Ci0JICAgIHMv L1wxLwotCSAgICBxCi0JICB9Ci0JICAvXlhcKFwvXC9cKVteL10uKi97Ci0JICAgIHMvL1wxLwot CSAgICBxCi0JICB9Ci0JICAvXlhcKFwvXC9cKSQvewotCSAgICBzLy9cMS8KLQkgICAgcQotCSAg fQotCSAgL15YXChcL1wpLiovewotCSAgICBzLy9cMS8KLQkgICAgcQotCSAgfQotCSAgcy8uKi8u LzsgcSdgCi0gICAgICB0ZXN0IC1kICIkYXNfZGlyIiAmJiBicmVhawotICAgIGRvbmUKLSAgICB0 ZXN0IC16ICIkYXNfZGlycyIgfHwgZXZhbCAibWtkaXIgJGFzX2RpcnMiCi0gIH0gfHwgdGVzdCAt ZCAiJGFzX2RpciIgfHwgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBjcmVhdGUgZGlyZWN0b3J5ICRh c19kaXIiCi0KLQotfSAjIGFzX2ZuX21rZGlyX3AKLWlmIG1rZGlyIC1wIC4gMj4vZGV2L251bGw7 IHRoZW4KLSAgYXNfbWtkaXJfcD0nbWtkaXIgLXAgIiRhc19kaXIiJwotZWxzZQotICB0ZXN0IC1k IC4vLXAgJiYgcm1kaXIgLi8tcAotICBhc19ta2Rpcl9wPWZhbHNlCi1maQotCi0KLSMgYXNfZm5f ZXhlY3V0YWJsZV9wIEZJTEUKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgVGVzdCBpZiBG SUxFIGlzIGFuIGV4ZWN1dGFibGUgcmVndWxhciBmaWxlLgotYXNfZm5fZXhlY3V0YWJsZV9wICgp Ci17Ci0gIHRlc3QgLWYgIiQxIiAmJiB0ZXN0IC14ICIkMSIKLX0gIyBhc19mbl9leGVjdXRhYmxl X3AKLWFzX3Rlc3RfeD0ndGVzdCAteCcKLWFzX2V4ZWN1dGFibGVfcD1hc19mbl9leGVjdXRhYmxl X3AKLQotIyBTZWQgZXhwcmVzc2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBhIHZhbGlkIENQUCBu YW1lLgotYXNfdHJfY3BwPSJldmFsIHNlZCAneSUqJGFzX2NyX2xldHRlcnMlUCRhc19jcl9MRVRU RVJTJTtzJVteXyRhc19jcl9hbG51bV0lXyVnJyIKLQotIyBTZWQgZXhwcmVzc2lvbiB0byBtYXAg YSBzdHJpbmcgb250byBhIHZhbGlkIHZhcmlhYmxlIG5hbWUuCi1hc190cl9zaD0iZXZhbCBzZWQg J3klKislcHAlO3MlW15fJGFzX2NyX2FsbnVtXSVfJWcnIgotCi0KLWV4ZWMgNj4mMQotIyMgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLSMjIE1haW4gYm9keSBvZiAkQ09O RklHX1NUQVRVUyBzY3JpcHQuICMjCi0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSAjIwotX0FTRU9GCi10ZXN0ICRhc193cml0ZV9mYWlsID0gMCAmJiBjaG1vZCAreCAkQ09O RklHX1NUQVRVUyB8fCBhY193cml0ZV9mYWlsPTEKLQotY2F0ID4+JENPTkZJR19TVEFUVVMgPDxc X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQotIyBTYXZlIHRoZSBsb2cgbWVzc2FnZSwgdG8ga2Vl cCAkMCBhbmQgc28gb24gbWVhbmluZ2Z1bCwgYW5kIHRvCi0jIHJlcG9ydCBhY3R1YWwgaW5wdXQg dmFsdWVzIG9mIENPTkZJR19GSUxFUyBldGMuIGluc3RlYWQgb2YgdGhlaXIKLSMgdmFsdWVzIGFm dGVyIG9wdGlvbnMgaGFuZGxpbmcuCi1hY19sb2c9IgotVGhpcyBmaWxlIHdhcyBleHRlbmRlZCBi eSBYZW4gSHlwZXJ2aXNvciBTdHViIERvbWFpbnMgJGFzX21lIDQuMTMsIHdoaWNoIHdhcwotZ2Vu ZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2Fz Ci0KLSAgQ09ORklHX0ZJTEVTICAgID0gJENPTkZJR19GSUxFUwotICBDT05GSUdfSEVBREVSUyAg PSAkQ09ORklHX0hFQURFUlMKLSAgQ09ORklHX0xJTktTICAgID0gJENPTkZJR19MSU5LUwotICBD T05GSUdfQ09NTUFORFMgPSAkQ09ORklHX0NPTU1BTkRTCi0gICQgJDAgJEAKLQotb24gYChob3N0 bmFtZSB8fCB1bmFtZSAtbikgMj4vZGV2L251bGwgfCBzZWQgMXFgCi0iCi0KLV9BQ0VPRgotCi1j YXNlICRhY19jb25maWdfZmlsZXMgaW4gKiIKLSIqKSBzZXQgeCAkYWNfY29uZmlnX2ZpbGVzOyBz aGlmdDsgYWNfY29uZmlnX2ZpbGVzPSQqOzsKLWVzYWMKLQotCi0KLWNhdCA+PiRDT05GSUdfU1RB VFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQotIyBGaWxlcyB0aGF0IGNvbmZpZy5zdGF0 dXMgd2FzIG1hZGUgZm9yLgotY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIgotCi1fQUNF T0YKLQotY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQot YWNfY3NfdXNhZ2U9IlwKLVxgJGFzX21lJyBpbnN0YW50aWF0ZXMgZmlsZXMgYW5kIG90aGVyIGNv bmZpZ3VyYXRpb24gYWN0aW9ucwotZnJvbSB0ZW1wbGF0ZXMgYWNjb3JkaW5nIHRvIHRoZSBjdXJy ZW50IGNvbmZpZ3VyYXRpb24uICBVbmxlc3MgdGhlIGZpbGVzCi1hbmQgYWN0aW9ucyBhcmUgc3Bl Y2lmaWVkIGFzIFRBR3MsIGFsbCBhcmUgaW5zdGFudGlhdGVkIGJ5IGRlZmF1bHQuCi0KLVVzYWdl OiAkMCBbT1BUSU9OXS4uLiBbVEFHXS4uLgotCi0gIC1oLCAtLWhlbHAgICAgICAgcHJpbnQgdGhp cyBoZWxwLCB0aGVuIGV4aXQKLSAgLVYsIC0tdmVyc2lvbiAgICBwcmludCB2ZXJzaW9uIG51bWJl ciBhbmQgY29uZmlndXJhdGlvbiBzZXR0aW5ncywgdGhlbiBleGl0Ci0gICAgICAtLWNvbmZpZyAg ICAgcHJpbnQgY29uZmlndXJhdGlvbiwgdGhlbiBleGl0Ci0gIC1xLCAtLXF1aWV0LCAtLXNpbGVu dAotICAgICAgICAgICAgICAgICAgIGRvIG5vdCBwcmludCBwcm9ncmVzcyBtZXNzYWdlcwotICAt ZCwgLS1kZWJ1ZyAgICAgIGRvbid0IHJlbW92ZSB0ZW1wb3JhcnkgZmlsZXMKLSAgICAgIC0tcmVj aGVjayAgICB1cGRhdGUgJGFzX21lIGJ5IHJlY29uZmlndXJpbmcgaW4gdGhlIHNhbWUgY29uZGl0 aW9ucwotICAgICAgLS1maWxlPUZJTEVbOlRFTVBMQVRFXQotICAgICAgICAgICAgICAgICAgIGlu c3RhbnRpYXRlIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgRklMRQotCi1Db25maWd1cmF0aW9uIGZp bGVzOgotJGNvbmZpZ19maWxlcwotCi1SZXBvcnQgYnVncyB0byA8eGVuLWRldmVsQGxpc3RzLnhl bi5vcmc+LgotWGVuIEh5cGVydmlzb3IgU3R1YiBEb21haW5zIGhvbWUgcGFnZTogPGh0dHA6Ly93 d3cueGVuLm9yZy8+LiIKLQotX0FDRU9GCi1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8 fCBhY193cml0ZV9mYWlsPTEKLWFjX2NzX2NvbmZpZz0iYCRhc19lY2hvICIkYWNfY29uZmlndXJl X2FyZ3MiIHwgc2VkICdzL14gLy87IHMvW1xcIiJcYFwkXS9cXFxcJi9nJ2AiCi1hY19jc192ZXJz aW9uPSJcXAotWGVuIEh5cGVydmlzb3IgU3R1YiBEb21haW5zIGNvbmZpZy5zdGF0dXMgNC4xMwot Y29uZmlndXJlZCBieSAkMCwgZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5LAotICB3aXRo IG9wdGlvbnMgXFwiXCRhY19jc19jb25maWdcXCIKLQotQ29weXJpZ2h0IChDKSAyMDEyIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotVGhpcyBjb25maWcuc3RhdHVzIHNjcmlwdCBpcyBm cmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi1naXZlcyB1bmxpbWl0 ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuIgotCi1hY19w d2Q9JyRhY19wd2QnCi1zcmNkaXI9JyRzcmNkaXInCi1JTlNUQUxMPSckSU5TVEFMTCcKLXRlc3Qg LW4gIlwkQVdLIiB8fCBBV0s9YXdrCi1fQUNFT0YKLQotY2F0ID4+JENPTkZJR19TVEFUVVMgPDxc X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQotIyBUaGUgZGVmYXVsdCBsaXN0cyBhcHBseSBpZiB0 aGUgdXNlciBkb2VzIG5vdCBzcGVjaWZ5IGFueSBmaWxlLgotYWNfbmVlZF9kZWZhdWx0cz06Ci13 aGlsZSB0ZXN0ICQjICE9IDAKLWRvCi0gIGNhc2UgJDEgaW4KLSAgLS0qPT8qKQotICAgIGFjX29w dGlvbj1gZXhwciAiWCQxIiA6ICdYXChbXj1dKlwpPSdgCi0gICAgYWNfb3B0YXJnPWBleHByICJY JDEiIDogJ1hbXj1dKj1cKC4qXCknYAotICAgIGFjX3NoaWZ0PToKLSAgICA7OwotICAtLSo9KQot ICAgIGFjX29wdGlvbj1gZXhwciAiWCQxIiA6ICdYXChbXj1dKlwpPSdgCi0gICAgYWNfb3B0YXJn PQotICAgIGFjX3NoaWZ0PToKLSAgICA7OwotICAqKQotICAgIGFjX29wdGlvbj0kMQotICAgIGFj X29wdGFyZz0kMgotICAgIGFjX3NoaWZ0PXNoaWZ0Ci0gICAgOzsKLSAgZXNhYwotCi0gIGNhc2Ug JGFjX29wdGlvbiBpbgotICAjIEhhbmRsaW5nIG9mIHRoZSBvcHRpb25zLgotICAtcmVjaGVjayB8 IC0tcmVjaGVjayB8IC0tcmVjaGVjIHwgLS1yZWNoZSB8IC0tcmVjaCB8IC0tcmVjIHwgLS1yZSB8 IC0tcikKLSAgICBhY19jc19yZWNoZWNrPTogOzsKLSAgLS12ZXJzaW9uIHwgLS12ZXJzaW8gfCAt LXZlcnNpIHwgLS12ZXJzIHwgLS12ZXIgfCAtLXZlIHwgLS12IHwgLVYgKQotICAgICRhc19lY2hv ICIkYWNfY3NfdmVyc2lvbiI7IGV4aXQgOzsKLSAgLS1jb25maWcgfCAtLWNvbmZpIHwgLS1jb25m IHwgLS1jb24gfCAtLWNvIHwgLS1jICkKLSAgICAkYXNfZWNobyAiJGFjX2NzX2NvbmZpZyI7IGV4 aXQgOzsKLSAgLS1kZWJ1ZyB8IC0tZGVidSB8IC0tZGViIHwgLS1kZSB8IC0tZCB8IC1kICkKLSAg ICBkZWJ1Zz06IDs7Ci0gIC0tZmlsZSB8IC0tZmlsIHwgLS1maSB8IC0tZiApCi0gICAgJGFjX3No aWZ0Ci0gICAgY2FzZSAkYWNfb3B0YXJnIGluCi0gICAgKlwnKikgYWNfb3B0YXJnPWAkYXNfZWNo byAiJGFjX29wdGFyZyIgfCBzZWQgInMvJy8nXFxcXFxcXFwnJy9nImAgOzsKLSAgICAnJykgYXNf Zm5fZXJyb3IgJD8gIm1pc3NpbmcgZmlsZSBhcmd1bWVudCIgOzsKLSAgICBlc2FjCi0gICAgYXNf Zm5fYXBwZW5kIENPTkZJR19GSUxFUyAiICckYWNfb3B0YXJnJyIKLSAgICBhY19uZWVkX2RlZmF1 bHRzPWZhbHNlOzsKLSAgLS1oZSB8IC0taCB8ICAtLWhlbHAgfCAtLWhlbCB8IC1oICkKLSAgICAk YXNfZWNobyAiJGFjX2NzX3VzYWdlIjsgZXhpdCA7OwotICAtcSB8IC1xdWlldCB8IC0tcXVpZXQg fCAtLXF1aWUgfCAtLXF1aSB8IC0tcXUgfCAtLXEgXAotICB8IC1zaWxlbnQgfCAtLXNpbGVudCB8 IC0tc2lsZW4gfCAtLXNpbGUgfCAtLXNpbCB8IC0tc2kgfCAtLXMpCi0gICAgYWNfY3Nfc2lsZW50 PTogOzsKLQotICAjIFRoaXMgaXMgYW4gZXJyb3IuCi0gIC0qKSBhc19mbl9lcnJvciAkPyAidW5y ZWNvZ25pemVkIG9wdGlvbjogXGAkMScKLVRyeSBcYCQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3Jt YXRpb24uIiA7OwotCi0gICopIGFzX2ZuX2FwcGVuZCBhY19jb25maWdfdGFyZ2V0cyAiICQxIgot ICAgICBhY19uZWVkX2RlZmF1bHRzPWZhbHNlIDs7Ci0KLSAgZXNhYwotICBzaGlmdAotZG9uZQot Ci1hY19jb25maWd1cmVfZXh0cmFfYXJncz0KLQotaWYgJGFjX2NzX3NpbGVudDsgdGhlbgotICBl eGVjIDY+L2Rldi9udWxsCi0gIGFjX2NvbmZpZ3VyZV9leHRyYV9hcmdzPSIkYWNfY29uZmlndXJl X2V4dHJhX2FyZ3MgLS1zaWxlbnQiCi1maQotCi1fQUNFT0YKLWNhdCA+PiRDT05GSUdfU1RBVFVT IDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQotaWYgXCRhY19jc19yZWNoZWNrOyB0aGVuCi0g IHNldCBYICRTSEVMTCAnJDAnICRhY19jb25maWd1cmVfYXJncyBcJGFjX2NvbmZpZ3VyZV9leHRy YV9hcmdzIC0tbm8tY3JlYXRlIC0tbm8tcmVjdXJzaW9uCi0gIHNoaWZ0Ci0gIFwkYXNfZWNobyAi cnVubmluZyBDT05GSUdfU0hFTEw9JFNIRUxMIFwkKiIgPiY2Ci0gIENPTkZJR19TSEVMTD0nJFNI RUxMJwotICBleHBvcnQgQ09ORklHX1NIRUxMCi0gIGV4ZWMgIlwkQCIKLWZpCi0KLV9BQ0VPRgot Y2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQotZXhlYyA1 Pj5jb25maWcubG9nCi17Ci0gIGVjaG8KLSAgc2VkICdoO3MvLi8tL2c7cy9eLi4uLyMjIC87cy8u Li4kLyAjIy87cDt4O3A7eCcgPDxfQVNCT1gKLSMjIFJ1bm5pbmcgJGFzX21lLiAjIwotX0FTQk9Y Ci0gICRhc19lY2hvICIkYWNfbG9nIgotfSA+JjUKLQotX0FDRU9GCi1jYXQgPj4kQ09ORklHX1NU QVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKLV9BQ0VPRgotCi1jYXQgPj4kQ09ORklH X1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCi0KLSMgSGFuZGxpbmcgb2YgYXJn dW1lbnRzLgotZm9yIGFjX2NvbmZpZ190YXJnZXQgaW4gJGFjX2NvbmZpZ190YXJnZXRzCi1kbwot ICBjYXNlICRhY19jb25maWdfdGFyZ2V0IGluCi0gICAgIi4uL2NvbmZpZy9TdHViZG9tLm1rIikg Q09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIC4uL2NvbmZpZy9TdHViZG9tLm1rIiA7OwotCi0g ICopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIGFyZ3VtZW50OiBcYCRhY19jb25maWdfdGFyZ2V0 JyIgIiRMSU5FTk8iIDU7OwotICBlc2FjCi1kb25lCi0KLQotIyBJZiB0aGUgdXNlciBkaWQgbm90 IHVzZSB0aGUgYXJndW1lbnRzIHRvIHNwZWNpZnkgdGhlIGl0ZW1zIHRvIGluc3RhbnRpYXRlLAot IyB0aGVuIHRoZSBlbnZ2YXIgaW50ZXJmYWNlIGlzIHVzZWQuICBTZXQgb25seSB0aG9zZSB0aGF0 IGFyZSBub3QuCi0jIFdlIHVzZSB0aGUgbG9uZyBmb3JtIGZvciB0aGUgZGVmYXVsdCBhc3NpZ25t ZW50IGJlY2F1c2Ugb2YgYW4gZXh0cmVtZWx5Ci0jIGJpemFycmUgYnVnIG9uIFN1bk9TIDQuMS4z LgotaWYgJGFjX25lZWRfZGVmYXVsdHM7IHRoZW4KLSAgdGVzdCAiJHtDT05GSUdfRklMRVMrc2V0 fSIgPSBzZXQgfHwgQ09ORklHX0ZJTEVTPSRjb25maWdfZmlsZXMKLWZpCi0KLSMgSGF2ZSBhIHRl bXBvcmFyeSBkaXJlY3RvcnkgZm9yIGNvbnZlbmllbmNlLiAgTWFrZSBpdCBpbiB0aGUgYnVpbGQg dHJlZQotIyBzaW1wbHkgYmVjYXVzZSB0aGVyZSBpcyBubyByZWFzb24gYWdhaW5zdCBoYXZpbmcg aXQgaGVyZSwgYW5kIGluIGFkZGl0aW9uLAotIyBjcmVhdGluZyBhbmQgbW92aW5nIGZpbGVzIGZy b20gL3RtcCBjYW4gc29tZXRpbWVzIGNhdXNlIHByb2JsZW1zLgotIyBIb29rIGZvciBpdHMgcmVt b3ZhbCB1bmxlc3MgZGVidWdnaW5nLgotIyBOb3RlIHRoYXQgdGhlcmUgaXMgYSBzbWFsbCB3aW5k b3cgaW4gd2hpY2ggdGhlIGRpcmVjdG9yeSB3aWxsIG5vdCBiZSBjbGVhbmVkOgotIyBhZnRlciBp dHMgY3JlYXRpb24gYnV0IGJlZm9yZSBpdHMgbmFtZSBoYXMgYmVlbiBhc3NpZ25lZCB0byBgJHRt cCcuCi0kZGVidWcgfHwKLXsKLSAgdG1wPSBhY190bXA9Ci0gIHRyYXAgJ2V4aXRfc3RhdHVzPSQ/ Ci0gIDogIiR7YWNfdG1wOj0kdG1wfSIKLSAgeyB0ZXN0ICEgLWQgIiRhY190bXAiIHx8IHJtIC1m ciAiJGFjX3RtcCI7IH0gJiYgZXhpdCAkZXhpdF9zdGF0dXMKLScgMAotICB0cmFwICdhc19mbl9l eGl0IDEnIDEgMiAxMyAxNQotfQotIyBDcmVhdGUgYSAoc2VjdXJlKSB0bXAgZGlyZWN0b3J5IGZv ciB0bXAgZmlsZXMuCi0KLXsKLSAgdG1wPWAodW1hc2sgMDc3ICYmIG1rdGVtcCAtZCAiLi9jb25m WFhYWFhYIikgMj4vZGV2L251bGxgICYmCi0gIHRlc3QgLWQgIiR0bXAiCi19ICB8fAotewotICB0 bXA9Li9jb25mJCQtJFJBTkRPTQotICAodW1hc2sgMDc3ICYmIG1rZGlyICIkdG1wIikKLX0gfHwg YXNfZm5fZXJyb3IgJD8gImNhbm5vdCBjcmVhdGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGluIC4i ICIkTElORU5PIiA1Ci1hY190bXA9JHRtcAotCi0jIFNldCB1cCB0aGUgc2NyaXB0cyBmb3IgQ09O RklHX0ZJTEVTIHNlY3Rpb24uCi0jIE5vIG5lZWQgdG8gZ2VuZXJhdGUgdGhlbSBpZiB0aGVyZSBh cmUgbm8gQ09ORklHX0ZJTEVTLgotIyBUaGlzIGhhcHBlbnMgZm9yIGluc3RhbmNlIHdpdGggYC4v Y29uZmlnLnN0YXR1cyBjb25maWcuaCcuCi1pZiB0ZXN0IC1uICIkQ09ORklHX0ZJTEVTIjsgdGhl bgotCi0KLWFjX2NyPWBlY2hvIFggfCB0ciBYICdcMDE1J2AKLSMgT24gY3lnd2luLCBiYXNoIGNh biBlYXQgXHIgaW5zaWRlIGBgIGlmIHRoZSB1c2VyIHJlcXVlc3RlZCBpZ25jci4KLSMgQnV0IHdl IGtub3cgb2Ygbm8gb3RoZXIgc2hlbGwgd2hlcmUgYWNfY3Igd291bGQgYmUgZW1wdHkgYXQgdGhp cwotIyBwb2ludCwgc28gd2UgY2FuIHVzZSBhIGJhc2hpc20gYXMgYSBmYWxsYmFjay4KLWlmIHRl c3QgIngkYWNfY3IiID0geDsgdGhlbgotICBldmFsIGFjX2NyPVwkXCdcXHJcJwotZmkKLWFjX2Nz X2F3a19jcj1gJEFXSyAnQkVHSU4geyBwcmludCAiYVxyYiIgfScgPC9kZXYvbnVsbCAyPi9kZXYv bnVsbGAKLWlmIHRlc3QgIiRhY19jc19hd2tfY3IiID0gImEke2FjX2NyfWIiOyB0aGVuCi0gIGFj X2NzX2F3a19jcj0nXFxyJwotZWxzZQotICBhY19jc19hd2tfY3I9JGFjX2NyCi1maQotCi1lY2hv ICdCRUdJTiB7JyA+IiRhY190bXAvc3ViczEuYXdrIiAmJgotX0FDRU9GCi0KLQotewotICBlY2hv ICJjYXQgPmNvbmYkJHN1YnMuYXdrIDw8X0FDRU9GIiAmJgotICBlY2hvICIkYWNfc3Vic3RfdmFy cyIgfCBzZWQgJ3MvLiovJiEkJiRhY19kZWxpbS8nICYmCi0gIGVjaG8gIl9BQ0VPRiIKLX0gPmNv bmYkJHN1YnMuc2ggfHwKLSAgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBtYWtlICRDT05GSUdf U1RBVFVTIiAiJExJTkVOTyIgNQotYWNfZGVsaW1fbnVtPWBlY2hvICIkYWNfc3Vic3RfdmFycyIg fCBncmVwIC1jICdeJ2AKLWFjX2RlbGltPSclIV8hIyAnCi1mb3IgYWNfbGFzdF90cnkgaW4gZmFs c2UgZmFsc2UgZmFsc2UgZmFsc2UgZmFsc2UgOjsgZG8KLSAgLiAuL2NvbmYkJHN1YnMuc2ggfHwK LSAgICBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IG1ha2UgJENPTkZJR19TVEFUVVMiICIkTElO RU5PIiA1Ci0KLSAgYWNfZGVsaW1fbj1gc2VkIC1uICJzLy4qJGFjX2RlbGltXCQvWC9wIiBjb25m JCRzdWJzLmF3ayB8IGdyZXAgLWMgWGAKLSAgaWYgdGVzdCAkYWNfZGVsaW1fbiA9ICRhY19kZWxp bV9udW07IHRoZW4KLSAgICBicmVhawotICBlbGlmICRhY19sYXN0X3RyeTsgdGhlbgotICAgIGFz X2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgbWFrZSAkQ09ORklHX1NUQVRVUyIgIiRMSU5FTk8iIDUK LSAgZWxzZQotICAgIGFjX2RlbGltPSIkYWNfZGVsaW0hJGFjX2RlbGltIF8kYWNfZGVsaW0hISAi Ci0gIGZpCi1kb25lCi1ybSAtZiBjb25mJCRzdWJzLnNoCi0KLWNhdCA+PiRDT05GSUdfU1RBVFVT IDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQotY2F0ID4+IlwkYWNfdG1wL3N1YnMxLmF3ayIg PDxcXF9BQ0FXSyAmJgotX0FDRU9GCi1zZWQgLW4gJwotaAotcy9eL1NbIi87IHMvIS4qLyJdPS8K LXAKLWcKLXMvXlteIV0qIS8vCi06cmVwbAotdCByZXBsCi1zLyciJGFjX2RlbGltIickLy8KLXQg ZGVsaW0KLTpubAotaAotcy9cKC5cezE0OFx9XCkuLiovXDEvCi10IG1vcmUxCi1zL1siXFxdL1xc Ji9nOyBzL14vIi87IHMvJC9cXG4iXFwvCi1wCi1uCi1iIHJlcGwKLTptb3JlMQotcy9bIlxcXS9c XCYvZzsgcy9eLyIvOyBzLyQvIlxcLwotcAotZwotcy8uXHsxNDhcfS8vCi10IG5sCi06ZGVsaW0K LWgKLXMvXCguXHsxNDhcfVwpLi4qL1wxLwotdCBtb3JlMgotcy9bIlxcXS9cXCYvZzsgcy9eLyIv OyBzLyQvIi8KLXAKLWIKLTptb3JlMgotcy9bIlxcXS9cXCYvZzsgcy9eLyIvOyBzLyQvIlxcLwot cAotZwotcy8uXHsxNDhcfS8vCi10IGRlbGltCi0nIDxjb25mJCRzdWJzLmF3ayB8IHNlZCAnCi0v XlteIiJdL3sKLSAgTgotICBzL1xuLy8KLX0KLScgPj4kQ09ORklHX1NUQVRVUyB8fCBhY193cml0 ZV9mYWlsPTEKLXJtIC1mIGNvbmYkJHN1YnMuYXdrCi1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9B Q0VPRiB8fCBhY193cml0ZV9mYWlsPTEKLV9BQ0FXSwotY2F0ID4+IlwkYWNfdG1wL3N1YnMxLmF3 ayIgPDxfQUNBV0sgJiYKLSAgZm9yIChrZXkgaW4gUykgU19pc19zZXRba2V5XSA9IDEKLSAgRlMg PSAiByIKLQotfQotewotICBsaW5lID0gJCAwCi0gIG5maWVsZHMgPSBzcGxpdChsaW5lLCBmaWVs ZCwgIkAiKQotICBzdWJzdGVkID0gMAotICBsZW4gPSBsZW5ndGgoZmllbGRbMV0pCi0gIGZvciAo aSA9IDI7IGkgPCBuZmllbGRzOyBpKyspIHsKLSAgICBrZXkgPSBmaWVsZFtpXQotICAgIGtleWxl biA9IGxlbmd0aChrZXkpCi0gICAgaWYgKFNfaXNfc2V0W2tleV0pIHsKLSAgICAgIHZhbHVlID0g U1trZXldCi0gICAgICBsaW5lID0gc3Vic3RyKGxpbmUsIDEsIGxlbikgIiIgdmFsdWUgIiIgc3Vi c3RyKGxpbmUsIGxlbiArIGtleWxlbiArIDMpCi0gICAgICBsZW4gKz0gbGVuZ3RoKHZhbHVlKSAr IGxlbmd0aChmaWVsZFsrK2ldKQotICAgICAgc3Vic3RlZCA9IDEKLSAgICB9IGVsc2UKLSAgICAg IGxlbiArPSAxICsga2V5bGVuCi0gIH0KLQotICBwcmludCBsaW5lCi19Ci0KLV9BQ0FXSwotX0FD RU9GCi1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCi1p ZiBzZWQgInMvJGFjX2NyLy8iIDwgL2Rldi9udWxsID4gL2Rldi9udWxsIDI+JjE7IHRoZW4KLSAg c2VkICJzLyRhY19jclwkLy87IHMvJGFjX2NyLyRhY19jc19hd2tfY3IvZyIKLWVsc2UKLSAgY2F0 Ci1maSA8ICIkYWNfdG1wL3N1YnMxLmF3ayIgPiAiJGFjX3RtcC9zdWJzLmF3ayIgXAotICB8fCBh c19mbl9lcnJvciAkPyAiY291bGQgbm90IHNldHVwIGNvbmZpZyBmaWxlcyBtYWNoaW5lcnkiICIk TElORU5PIiA1Ci1fQUNFT0YKLQotIyBWUEFUSCBtYXkgY2F1c2UgdHJvdWJsZSB3aXRoIHNvbWUg bWFrZXMsIHNvIHdlIHJlbW92ZSBzb2xlICQoc3JjZGlyKSwKLSMgJHtzcmNkaXJ9IGFuZCBAc3Jj ZGlyQCBlbnRyaWVzIGZyb20gVlBBVEggaWYgc3JjZGlyIGlzICIuIiwgc3RyaXAgbGVhZGluZyBh bmQKLSMgdHJhaWxpbmcgY29sb25zIGFuZCB0aGVuIHJlbW92ZSB0aGUgd2hvbGUgbGluZSBpZiBW UEFUSCBiZWNvbWVzIGVtcHR5Ci0jIChhY3R1YWxseSB3ZSBsZWF2ZSBhbiBlbXB0eSBsaW5lIHRv IHByZXNlcnZlIGxpbmUgbnVtYmVycykuCi1pZiB0ZXN0ICJ4JHNyY2RpciIgPSB4LjsgdGhlbgot ICBhY192cHN1Yj0nL15bCSBdKlZQQVRIWwkgXSo9WwkgXSovewotaAotcy8vLwotcy9eLzovCi1z L1sJIF0qJC86Lwotcy86XCQoc3JjZGlyKTovOi9nCi1zLzpcJHtzcmNkaXJ9Oi86L2cKLXMvOkBz cmNkaXJAOi86L2cKLXMvXjoqLy8KLXMvOiokLy8KLXgKLXMvXCg9WwkgXSpcKS4qL1wxLwotRwot cy9cbi8vCi1zL15bXj1dKj1bCSBdKiQvLwotfScKLWZpCi0KLWNhdCA+PiRDT05GSUdfU1RBVFVT IDw8XF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKLWZpICMgdGVzdCAtbiAiJENPTkZJR19GSUxF UyIKLQotCi1ldmFsIHNldCBYICIgIDpGICRDT05GSUdfRklMRVMgICAgICAiCi1zaGlmdAotZm9y IGFjX3RhZwotZG8KLSAgY2FzZSAkYWNfdGFnIGluCi0gIDpbRkhMQ10pIGFjX21vZGU9JGFjX3Rh ZzsgY29udGludWU7OwotICBlc2FjCi0gIGNhc2UgJGFjX21vZGUkYWNfdGFnIGluCi0gIDpbRkhM XSo6Kik7OwotICA6TCogfCA6Qyo6KikgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgdGFnIFxgJGFj X3RhZyciICIkTElORU5PIiA1OzsKLSAgOltGSF0tKSBhY190YWc9LTotOzsKLSAgOltGSF0qKSBh Y190YWc9JGFjX3RhZzokYWNfdGFnLmluOzsKLSAgZXNhYwotICBhY19zYXZlX0lGUz0kSUZTCi0g IElGUz06Ci0gIHNldCB4ICRhY190YWcKLSAgSUZTPSRhY19zYXZlX0lGUwotICBzaGlmdAotICBh Y19maWxlPSQxCi0gIHNoaWZ0Ci0KLSAgY2FzZSAkYWNfbW9kZSBpbgotICA6TCkgYWNfc291cmNl PSQxOzsKLSAgOltGSF0pCi0gICAgYWNfZmlsZV9pbnB1dHM9Ci0gICAgZm9yIGFjX2YKLSAgICBk bwotICAgICAgY2FzZSAkYWNfZiBpbgotICAgICAgLSkgYWNfZj0iJGFjX3RtcC9zdGRpbiI7Owot ICAgICAgKikgIyBMb29rIGZvciB0aGUgZmlsZSBmaXJzdCBpbiB0aGUgYnVpbGQgdHJlZSwgdGhl biBpbiB0aGUgc291cmNlIHRyZWUKLQkgIyAoaWYgdGhlIHBhdGggaXMgbm90IGFic29sdXRlKS4g IFRoZSBhYnNvbHV0ZSBwYXRoIGNhbm5vdCBiZSBET1Mtc3R5bGUsCi0JICMgYmVjYXVzZSAkYWNf ZiBjYW5ub3QgY29udGFpbiBgOicuCi0JIHRlc3QgLWYgIiRhY19mIiB8fAotCSAgIGNhc2UgJGFj X2YgaW4KLQkgICBbXFwvJF0qKSBmYWxzZTs7Ci0JICAgKikgdGVzdCAtZiAiJHNyY2Rpci8kYWNf ZiIgJiYgYWNfZj0iJHNyY2Rpci8kYWNfZiI7OwotCSAgIGVzYWMgfHwKLQkgICBhc19mbl9lcnJv ciAxICJjYW5ub3QgZmluZCBpbnB1dCBmaWxlOiBcYCRhY19mJyIgIiRMSU5FTk8iIDU7OwotICAg ICAgZXNhYwotICAgICAgY2FzZSAkYWNfZiBpbiAqXCcqKSBhY19mPWAkYXNfZWNobyAiJGFjX2Yi IHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgOzsgZXNhYwotICAgICAgYXNfZm5fYXBwZW5kIGFj X2ZpbGVfaW5wdXRzICIgJyRhY19mJyIKLSAgICBkb25lCi0KLSAgICAjIExldCdzIHN0aWxsIHBy ZXRlbmQgaXQgaXMgYGNvbmZpZ3VyZScgd2hpY2ggaW5zdGFudGlhdGVzIChpLmUuLCBkb24ndAot ICAgICMgdXNlICRhc19tZSksIHBlb3BsZSB3b3VsZCBiZSBzdXJwcmlzZWQgdG8gcmVhZDoKLSAg ICAjICAgIC8qIGNvbmZpZy5oLiAgR2VuZXJhdGVkIGJ5IGNvbmZpZy5zdGF0dXMuICAqLwotICAg IGNvbmZpZ3VyZV9pbnB1dD0nR2VuZXJhdGVkIGZyb20gJ2AKLQkgICRhc19lY2hvICIkKiIgfCBz ZWQgJ3N8XlteOl0qL3x8O3N8OlteOl0qL3wsIHxnJwotCWAnIGJ5IGNvbmZpZ3VyZS4nCi0gICAg aWYgdGVzdCB4IiRhY19maWxlIiAhPSB4LTsgdGhlbgotICAgICAgY29uZmlndXJlX2lucHV0PSIk YWNfZmlsZS4gICRjb25maWd1cmVfaW5wdXQiCi0gICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IGNyZWF0aW5nICRhY19maWxlIiA+JjUKLSRhc19lY2hvICIkYXNf bWU6IGNyZWF0aW5nICRhY19maWxlIiA+JjY7fQotICAgIGZpCi0gICAgIyBOZXV0cmFsaXplIHNw ZWNpYWwgY2hhcmFjdGVycyBpbnRlcnByZXRlZCBieSBzZWQgaW4gcmVwbGFjZW1lbnQgc3RyaW5n cy4KLSAgICBjYXNlICRjb25maWd1cmVfaW5wdXQgaW4gIygKLSAgICAqXCYqIHwgKlx8KiB8ICpc XCogKQotICAgICAgIGFjX3NlZF9jb25mX2lucHV0PWAkYXNfZWNobyAiJGNvbmZpZ3VyZV9pbnB1 dCIgfAotICAgICAgIHNlZCAncy9bXFxcXCZ8XS9cXFxcJi9nJ2A7OyAjKAotICAgICopIGFjX3Nl ZF9jb25mX2lucHV0PSRjb25maWd1cmVfaW5wdXQ7OwotICAgIGVzYWMKLQotICAgIGNhc2UgJGFj X3RhZyBpbgotICAgICo6LToqIHwgKjotKSBjYXQgPiIkYWNfdG1wL3N0ZGluIiBcCi0gICAgICB8 fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUg OzsKLSAgICBlc2FjCi0gICAgOzsKLSAgZXNhYwotCi0gIGFjX2Rpcj1gJGFzX2Rpcm5hbWUgLS0g IiRhY19maWxlIiB8fAotJGFzX2V4cHIgWCIkYWNfZmlsZSIgOiAnWFwoLipbXi9dXCkvLypbXi9d W14vXSovKiQnIFx8IFwKLQkgWCIkYWNfZmlsZSIgOiAnWFwoLy9cKVteL10nIFx8IFwKLQkgWCIk YWNfZmlsZSIgOiAnWFwoLy9cKSQnIFx8IFwKLQkgWCIkYWNfZmlsZSIgOiAnWFwoL1wpJyBcfCAu IDI+L2Rldi9udWxsIHx8Ci0kYXNfZWNobyBYIiRhY19maWxlIiB8Ci0gICAgc2VkICcvXlhcKC4q W14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sKLQkgICAgcy8vXDEvCi0JICAgIHEKLQkgIH0KLQkg IC9eWFwoXC9cL1wpW14vXS4qL3sKLQkgICAgcy8vXDEvCi0JICAgIHEKLQkgIH0KLQkgIC9eWFwo XC9cL1wpJC97Ci0JICAgIHMvL1wxLwotCSAgICBxCi0JICB9Ci0JICAvXlhcKFwvXCkuKi97Ci0J ICAgIHMvL1wxLwotCSAgICBxCi0JICB9Ci0JICBzLy4qLy4vOyBxJ2AKLSAgYXNfZGlyPSIkYWNf ZGlyIjsgYXNfZm5fbWtkaXJfcAotICBhY19idWlsZGRpcj0uCi0KLWNhc2UgIiRhY19kaXIiIGlu Ci0uKSBhY19kaXJfc3VmZml4PSBhY190b3BfYnVpbGRkaXJfc3ViPS4gYWNfdG9wX2J1aWxkX3By ZWZpeD0gOzsKLSopCi0gIGFjX2Rpcl9zdWZmaXg9L2AkYXNfZWNobyAiJGFjX2RpciIgfCBzZWQg J3N8XlwuW1xcL118fCdgCi0gICMgQSAiLi4iIGZvciBlYWNoIGRpcmVjdG9yeSBpbiAkYWNfZGly X3N1ZmZpeC4KLSAgYWNfdG9wX2J1aWxkZGlyX3N1Yj1gJGFzX2VjaG8gIiRhY19kaXJfc3VmZml4 IiB8IHNlZCAnc3wvW15cXC9dKnwvLi58ZztzfC98fCdgCi0gIGNhc2UgJGFjX3RvcF9idWlsZGRp cl9zdWIgaW4KLSAgIiIpIGFjX3RvcF9idWlsZGRpcl9zdWI9LiBhY190b3BfYnVpbGRfcHJlZml4 PSA7OwotICAqKSAgYWNfdG9wX2J1aWxkX3ByZWZpeD0kYWNfdG9wX2J1aWxkZGlyX3N1Yi8gOzsK LSAgZXNhYyA7OwotZXNhYwotYWNfYWJzX3RvcF9idWlsZGRpcj0kYWNfcHdkCi1hY19hYnNfYnVp bGRkaXI9JGFjX3B3ZCRhY19kaXJfc3VmZml4Ci0jIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5 OgotYWNfdG9wX2J1aWxkZGlyPSRhY190b3BfYnVpbGRfcHJlZml4Ci0KLWNhc2UgJHNyY2RpciBp bgotICAuKSAgIyBXZSBhcmUgYnVpbGRpbmcgaW4gcGxhY2UuCi0gICAgYWNfc3JjZGlyPS4KLSAg ICBhY190b3Bfc3JjZGlyPSRhY190b3BfYnVpbGRkaXJfc3ViCi0gICAgYWNfYWJzX3RvcF9zcmNk aXI9JGFjX3B3ZCA7OwotICBbXFwvXSogfCA/OltcXC9dKiApICAjIEFic29sdXRlIG5hbWUuCi0g ICAgYWNfc3JjZGlyPSRzcmNkaXIkYWNfZGlyX3N1ZmZpeDsKLSAgICBhY190b3Bfc3JjZGlyPSRz cmNkaXIKLSAgICBhY19hYnNfdG9wX3NyY2Rpcj0kc3JjZGlyIDs7Ci0gICopICMgUmVsYXRpdmUg bmFtZS4KLSAgICBhY19zcmNkaXI9JGFjX3RvcF9idWlsZF9wcmVmaXgkc3JjZGlyJGFjX2Rpcl9z dWZmaXgKLSAgICBhY190b3Bfc3JjZGlyPSRhY190b3BfYnVpbGRfcHJlZml4JHNyY2RpcgotICAg IGFjX2Fic190b3Bfc3JjZGlyPSRhY19wd2QvJHNyY2RpciA7OwotZXNhYwotYWNfYWJzX3NyY2Rp cj0kYWNfYWJzX3RvcF9zcmNkaXIkYWNfZGlyX3N1ZmZpeAotCi0KLSAgY2FzZSAkYWNfbW9kZSBp bgotICA6RikKLSAgIwotICAjIENPTkZJR19GSUxFCi0gICMKLQotICBjYXNlICRJTlNUQUxMIGlu Ci0gIFtcXC8kXSogfCA/OltcXC9dKiApIGFjX0lOU1RBTEw9JElOU1RBTEwgOzsKLSAgKikgYWNf SU5TVEFMTD0kYWNfdG9wX2J1aWxkX3ByZWZpeCRJTlNUQUxMIDs7Ci0gIGVzYWMKLV9BQ0VPRgot Ci1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCi0jIElm IHRoZSB0ZW1wbGF0ZSBkb2VzIG5vdCBrbm93IGFib3V0IGRhdGFyb290ZGlyLCBleHBhbmQgaXQu Ci0jIEZJWE1FOiBUaGlzIGhhY2sgc2hvdWxkIGJlIHJlbW92ZWQgYSBmZXcgeWVhcnMgYWZ0ZXIg Mi42MC4KLWFjX2RhdGFyb290ZGlyX2hhY2s9OyBhY19kYXRhcm9vdGRpcl9zZWVuPQotYWNfc2Vk X2RhdGFyb290PScKLS9kYXRhcm9vdGRpci8gewotICBwCi0gIHEKLX0KLS9AZGF0YWRpckAvcAot L0Bkb2NkaXJAL3AKLS9AaW5mb2RpckAvcAotL0Bsb2NhbGVkaXJAL3AKLS9AbWFuZGlyQC9wJwot Y2FzZSBgZXZhbCAic2VkIC1uIFwiXCRhY19zZWRfZGF0YXJvb3RcIiAkYWNfZmlsZV9pbnB1dHMi YCBpbgotKmRhdGFyb290ZGlyKikgYWNfZGF0YXJvb3RkaXJfc2Vlbj15ZXM7OwotKkBkYXRhZGly QCp8KkBkb2NkaXJAKnwqQGluZm9kaXJAKnwqQGxvY2FsZWRpckAqfCpAbWFuZGlyQCopCi0gIHsg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogJGFjX2ZpbGVf aW5wdXRzIHNlZW1zIHRvIGlnbm9yZSB0aGUgLS1kYXRhcm9vdGRpciBzZXR0aW5nIiA+JjUKLSRh c19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19maWxlX2lucHV0cyBzZWVtcyB0byBpZ25vcmUg dGhlIC0tZGF0YXJvb3RkaXIgc2V0dGluZyIgPiYyO30KLV9BQ0VPRgotY2F0ID4+JENPTkZJR19T VEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCi0gIGFjX2RhdGFyb290ZGlyX2hhY2s9 JwotICBzJkBkYXRhZGlyQCYkZGF0YWRpciZnCi0gIHMmQGRvY2RpckAmJGRvY2RpciZnCi0gIHMm QGluZm9kaXJAJiRpbmZvZGlyJmcKLSAgcyZAbG9jYWxlZGlyQCYkbG9jYWxlZGlyJmcKLSAgcyZA bWFuZGlyQCYkbWFuZGlyJmcKLSAgcyZcXFwke2RhdGFyb290ZGlyfSYkZGF0YXJvb3RkaXImZycg OzsKLWVzYWMKLV9BQ0VPRgotCi0jIE5ldXRyYWxpemUgVlBBVEggd2hlbiBgJHNyY2RpcicgPSBg LicuCi0jIFNoZWxsIGNvZGUgaW4gY29uZmlndXJlLmFjIG1pZ2h0IHNldCBleHRyYXN1Yi4KLSMg RklYTUU6IGRvIHdlIHJlYWxseSB3YW50IHRvIG1haW50YWluIHRoaXMgZmVhdHVyZT8KLWNhdCA+ PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQotYWNfc2VkX2V4dHJh PSIkYWNfdnBzdWIKLSRleHRyYXN1YgotX0FDRU9GCi1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxf QUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCi06dAotL0BbYS16QS1aX11bYS16QS1aXzAtOV0qQC8h Ygotc3xAY29uZmlndXJlX2lucHV0QHwkYWNfc2VkX2NvbmZfaW5wdXR8O3QgdAotcyZAdG9wX2J1 aWxkZGlyQCYkYWNfdG9wX2J1aWxkZGlyX3N1YiY7dCB0Ci1zJkB0b3BfYnVpbGRfcHJlZml4QCYk YWNfdG9wX2J1aWxkX3ByZWZpeCY7dCB0Ci1zJkBzcmNkaXJAJiRhY19zcmNkaXImO3QgdAotcyZA YWJzX3NyY2RpckAmJGFjX2Fic19zcmNkaXImO3QgdAotcyZAdG9wX3NyY2RpckAmJGFjX3RvcF9z cmNkaXImO3QgdAotcyZAYWJzX3RvcF9zcmNkaXJAJiRhY19hYnNfdG9wX3NyY2RpciY7dCB0Ci1z JkBidWlsZGRpckAmJGFjX2J1aWxkZGlyJjt0IHQKLXMmQGFic19idWlsZGRpckAmJGFjX2Fic19i dWlsZGRpciY7dCB0Ci1zJkBhYnNfdG9wX2J1aWxkZGlyQCYkYWNfYWJzX3RvcF9idWlsZGRpciY7 dCB0Ci1zJkBJTlNUQUxMQCYkYWNfSU5TVEFMTCY7dCB0Ci0kYWNfZGF0YXJvb3RkaXJfaGFjawot IgotZXZhbCBzZWQgXCJcJGFjX3NlZF9leHRyYVwiICIkYWNfZmlsZV9pbnB1dHMiIHwgJEFXSyAt ZiAiJGFjX3RtcC9zdWJzLmF3ayIgXAotICA+JGFjX3RtcC9vdXQgfHwgYXNfZm5fZXJyb3IgJD8g ImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1Ci0KLXRlc3QgLXogIiRhY19k YXRhcm9vdGRpcl9oYWNrJGFjX2RhdGFyb290ZGlyX3NlZW4iICYmCi0gIHsgYWNfb3V0PWBzZWQg LW4gJy9cJHtkYXRhcm9vdGRpcn0vcCcgIiRhY190bXAvb3V0ImA7IHRlc3QgLW4gIiRhY19vdXQi OyB9ICYmCi0gIHsgYWNfb3V0PWBzZWQgLW4gJy9eWwkgXSpkYXRhcm9vdGRpclsJIF0qOio9L3An IFwKLSAgICAgICIkYWNfdG1wL291dCJgOyB0ZXN0IC16ICIkYWNfb3V0IjsgfSAmJgotICB7ICRh c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICRhY19maWxlIGNv bnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSB2YXJpYWJsZSBcYGRhdGFyb290ZGlyJwotd2hpY2gg c2VlbXMgdG8gYmUgdW5kZWZpbmVkLiAgUGxlYXNlIG1ha2Ugc3VyZSBpdCBpcyBkZWZpbmVkIiA+ JjUKLSRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19maWxlIGNvbnRhaW5zIGEgcmVmZXJl bmNlIHRvIHRoZSB2YXJpYWJsZSBcYGRhdGFyb290ZGlyJwotd2hpY2ggc2VlbXMgdG8gYmUgdW5k ZWZpbmVkLiAgUGxlYXNlIG1ha2Ugc3VyZSBpdCBpcyBkZWZpbmVkIiA+JjI7fQotCi0gIHJtIC1m ICIkYWNfdG1wL3N0ZGluIgotICBjYXNlICRhY19maWxlIGluCi0gIC0pIGNhdCAiJGFjX3RtcC9v dXQiICYmIHJtIC1mICIkYWNfdG1wL291dCI7OwotICAqKSBybSAtZiAiJGFjX2ZpbGUiICYmIG12 ICIkYWNfdG1wL291dCIgIiRhY19maWxlIjs7Ci0gIGVzYWMgXAotICB8fCBhc19mbl9lcnJvciAk PyAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUKLSA7OwotCi0KLQotICBl c2FjCi0KLWRvbmUgIyBmb3IgYWNfdGFnCi0KLQotYXNfZm5fZXhpdCAwCi1fQUNFT0YKLWFjX2Ns ZWFuX2ZpbGVzPSRhY19jbGVhbl9maWxlc19zYXZlCi0KLXRlc3QgJGFjX3dyaXRlX2ZhaWwgPSAw IHx8Ci0gIGFzX2ZuX2Vycm9yICQ/ICJ3cml0ZSBmYWlsdXJlIGNyZWF0aW5nICRDT05GSUdfU1RB VFVTIiAiJExJTkVOTyIgNQotCi0KLSMgY29uZmlndXJlIGlzIHdyaXRpbmcgdG8gY29uZmlnLmxv ZywgYW5kIHRoZW4gY2FsbHMgY29uZmlnLnN0YXR1cy4KLSMgY29uZmlnLnN0YXR1cyBkb2VzIGl0 cyBvd24gcmVkaXJlY3Rpb24sIGFwcGVuZGluZyB0byBjb25maWcubG9nLgotIyBVbmZvcnR1bmF0 ZWx5LCBvbiBET1MgdGhpcyBmYWlscywgYXMgY29uZmlnLmxvZyBpcyBzdGlsbCBrZXB0IG9wZW4K LSMgYnkgY29uZmlndXJlLCBzbyBjb25maWcuc3RhdHVzIHdvbid0IGJlIGFibGUgdG8gd3JpdGUg dG8gaXQ7IGl0cwotIyBvdXRwdXQgaXMgc2ltcGx5IGRpc2NhcmRlZC4gIFNvIHdlIGV4ZWMgdGhl IEZEIHRvIC9kZXYvbnVsbCwKLSMgZWZmZWN0aXZlbHkgY2xvc2luZyBjb25maWcubG9nLCBzbyBp dCBjYW4gYmUgcHJvcGVybHkgKHJlKW9wZW5lZCBhbmQKLSMgYXBwZW5kZWQgdG8gYnkgY29uZmln LnN0YXR1cy4gIFdoZW4gY29taW5nIGJhY2sgdG8gY29uZmlndXJlLCB3ZQotIyBuZWVkIHRvIG1h a2UgdGhlIEZEIGF2YWlsYWJsZSBhZ2Fpbi4KLWlmIHRlc3QgIiRub19jcmVhdGUiICE9IHllczsg dGhlbgotICBhY19jc19zdWNjZXNzPToKLSAgYWNfY29uZmlnX3N0YXR1c19hcmdzPQotICB0ZXN0 ICIkc2lsZW50IiA9IHllcyAmJgotICAgIGFjX2NvbmZpZ19zdGF0dXNfYXJncz0iJGFjX2NvbmZp Z19zdGF0dXNfYXJncyAtLXF1aWV0IgotICBleGVjIDU+L2Rldi9udWxsCi0gICRTSEVMTCAkQ09O RklHX1NUQVRVUyAkYWNfY29uZmlnX3N0YXR1c19hcmdzIHx8IGFjX2NzX3N1Y2Nlc3M9ZmFsc2UK LSAgZXhlYyA1Pj5jb25maWcubG9nCi0gICMgVXNlIHx8LCBub3QgJiYsIHRvIGF2b2lkIGV4aXRp bmcgZnJvbSB0aGUgaWYgd2l0aCAkPyA9IDEsIHdoaWNoCi0gICMgd291bGQgbWFrZSBjb25maWd1 cmUgZmFpbCBpZiB0aGlzIGlzIHRoZSBsYXN0IGluc3RydWN0aW9uLgotICAkYWNfY3Nfc3VjY2Vz cyB8fCBhc19mbl9leGl0IDEKLWZpCi1pZiB0ZXN0IC1uICIkYWNfdW5yZWNvZ25pemVkX29wdHMi ICYmIHRlc3QgIiRlbmFibGVfb3B0aW9uX2NoZWNraW5nIiAhPSBubzsgdGhlbgotICB7ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVucmVjb2duaXplZCBv cHRpb25zOiAkYWNfdW5yZWNvZ25pemVkX29wdHMiID4mNQotJGFzX2VjaG8gIiRhc19tZTogV0FS TklORzogdW5yZWNvZ25pemVkIG9wdGlvbnM6ICRhY191bnJlY29nbml6ZWRfb3B0cyIgPiYyO30K LWZpCi0KZGlmZiAtLWdpdCBhL3Rvb2xzL2NvbmZpZ3VyZSBiL3Rvb2xzL2NvbmZpZ3VyZQpkZWxl dGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOTJlYWQ5MzMzNS4uMDAwMDAwMDAwMAotLS0gYS90 b29scy9jb25maWd1cmUKKysrIC9kZXYvbnVsbApAQCAtMSwxMTA4MCArMCwwIEBACi0jISAvYmlu L3NoCi0jIEd1ZXNzIHZhbHVlcyBmb3Igc3lzdGVtLWRlcGVuZGVudCB2YXJpYWJsZXMgYW5kIGNy ZWF0ZSBNYWtlZmlsZXMuCi0jIEdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OSBmb3IgWGVu IEh5cGVydmlzb3IgVG9vbHMgNC4xMy4KLSMKLSMgUmVwb3J0IGJ1Z3MgdG8gPHhlbi1kZXZlbEBs aXN0cy54ZW4ub3JnPi4KLSMKLSMKLSMgQ29weXJpZ2h0IChDKSAxOTkyLTE5OTYsIDE5OTgtMjAx MiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSMKLSMKLSMgVGhpcyBjb25maWd1cmUg c2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLSMg Z2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5 IGl0LgotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLSMjIE00c2ggSW5pdGlhbGl6YXRpb24u ICMjCi0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotCi0jIEJlIG1vcmUgQm91cm5lIGNvbXBh dGlibGUKLURVQUxDQVNFPTE7IGV4cG9ydCBEVUFMQ0FTRSAjIGZvciBNS1Mgc2gKLWlmIHRlc3Qg LW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsg dGhlbiA6Ci0gIGVtdWxhdGUgc2gKLSAgTlVMTENNRD06Ci0gICMgUHJlLTQuMiB2ZXJzaW9ucyBv ZiBac2ggZG8gd29yZCBzcGxpdHRpbmcgb24gJHsxKyIkQCJ9LCB3aGljaAotICAjIGlzIGNvbnRy YXJ5IHRvIG91ciB1c2FnZS4gIERpc2FibGUgdGhpcyBmZWF0dXJlLgotICBhbGlhcyAtZyAnJHsx KyIkQCJ9Jz0nIiRAIicKLSAgc2V0b3B0IE5PX0dMT0JfU1VCU1QKLWVsc2UKLSAgY2FzZSBgKHNl dCAtbykgMj4vZGV2L251bGxgIGluICMoCi0gICpwb3NpeCopIDoKLSAgICBzZXQgLW8gcG9zaXgg OzsgIygKLSAgKikgOgotICAgICA7OwotZXNhYwotZmkKLQotCi1hc19ubD0nCi0nCi1leHBvcnQg YXNfbmwKLSMgUHJpbnRpbmcgYSBsb25nIHN0cmluZyBjcmFzaGVzIFNvbGFyaXMgNyAvdXNyL2Jp bi9wcmludGYuCi1hc19lY2hvPSdcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc XFxcXFxcXFxcJwotYXNfZWNobz0kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19l Y2hvCi1hc19lY2hvPSRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNf ZWNobwotIyBQcmVmZXIgYSBrc2ggc2hlbGwgYnVpbHRpbiBvdmVyIGFuIGV4dGVybmFsIHByaW50 ZiBwcm9ncmFtIG9uIFNvbGFyaXMsCi0jIGJ1dCB3aXRob3V0IHdhc3RpbmcgZm9ya3MgZm9yIGJh c2ggb3IgenNoLgotaWYgdGVzdCAteiAiJEJBU0hfVkVSU0lPTiRaU0hfVkVSU0lPTiIgXAotICAg ICYmICh0ZXN0ICJYYHByaW50IC1yIC0tICRhc19lY2hvYCIgPSAiWCRhc19lY2hvIikgMj4vZGV2 L251bGw7IHRoZW4KLSAgYXNfZWNobz0ncHJpbnQgLXIgLS0nCi0gIGFzX2VjaG9fbj0ncHJpbnQg LXJuIC0tJwotZWxpZiAodGVzdCAiWGBwcmludGYgJXMgJGFzX2VjaG9gIiA9ICJYJGFzX2VjaG8i KSAyPi9kZXYvbnVsbDsgdGhlbgotICBhc19lY2hvPSdwcmludGYgJXNcbicKLSAgYXNfZWNob19u PSdwcmludGYgJXMnCi1lbHNlCi0gIGlmIHRlc3QgIlhgKC91c3IvdWNiL2VjaG8gLW4gLW4gJGFz X2VjaG8pIDI+L2Rldi9udWxsYCIgPSAiWC1uICRhc19lY2hvIjsgdGhlbgotICAgIGFzX2VjaG9f Ym9keT0nZXZhbCAvdXNyL3VjYi9lY2hvIC1uICIkMSRhc19ubCInCi0gICAgYXNfZWNob19uPScv dXNyL3VjYi9lY2hvIC1uJwotICBlbHNlCi0gICAgYXNfZWNob19ib2R5PSdldmFsIGV4cHIgIlgk MSIgOiAiWFxcKC4qXFwpIicKLSAgICBhc19lY2hvX25fYm9keT0nZXZhbAotICAgICAgYXJnPSQx OwotICAgICAgY2FzZSAkYXJnIGluICMoCi0gICAgICAqIiRhc19ubCIqKQotCWV4cHIgIlgkYXJn IiA6ICJYXFwoLipcXCkkYXNfbmwiOwotCWFyZz1gZXhwciAiWCRhcmciIDogIi4qJGFzX25sXFwo LipcXCkiYDs7Ci0gICAgICBlc2FjOwotICAgICAgZXhwciAiWCRhcmciIDogIlhcXCguKlxcKSIg fCB0ciAtZCAiJGFzX25sIgotICAgICcKLSAgICBleHBvcnQgYXNfZWNob19uX2JvZHkKLSAgICBh c19lY2hvX249J3NoIC1jICRhc19lY2hvX25fYm9keSBhc19lY2hvJwotICBmaQotICBleHBvcnQg YXNfZWNob19ib2R5Ci0gIGFzX2VjaG89J3NoIC1jICRhc19lY2hvX2JvZHkgYXNfZWNobycKLWZp Ci0KLSMgVGhlIHVzZXIgaXMgYWx3YXlzIHJpZ2h0LgotaWYgdGVzdCAiJHtQQVRIX1NFUEFSQVRP UitzZXR9IiAhPSBzZXQ7IHRoZW4KLSAgUEFUSF9TRVBBUkFUT1I9OgotICAoUEFUSD0nL2Jpbjsv YmluJzsgRlBBVEg9JFBBVEg7IHNoIC1jIDopID4vZGV2L251bGwgMj4mMSAmJiB7Ci0gICAgKFBB VEg9Jy9iaW46L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+JjEgfHwK LSAgICAgIFBBVEhfU0VQQVJBVE9SPSc7JwotICB9Ci1maQotCi0KLSMgSUZTCi0jIFdlIG5lZWQg c3BhY2UsIHRhYiBhbmQgbmV3IGxpbmUsIGluIHByZWNpc2VseSB0aGF0IG9yZGVyLiAgUXVvdGlu ZyBpcwotIyB0aGVyZSB0byBwcmV2ZW50IGVkaXRvcnMgZnJvbSBjb21wbGFpbmluZyBhYm91dCBz cGFjZS10YWIuCi0jIChJZiBfQVNfUEFUSF9XQUxLIHdlcmUgY2FsbGVkIHdpdGggSUZTIHVuc2V0 LCBpdCB3b3VsZCBkaXNhYmxlIHdvcmQKLSMgc3BsaXR0aW5nIGJ5IHNldHRpbmcgSUZTIHRvIGVt cHR5IHZhbHVlLikKLUlGUz0iICIiCSRhc19ubCIKLQotIyBGaW5kIHdobyB3ZSBhcmUuICBMb29r IGluIHRoZSBwYXRoIGlmIHdlIGNvbnRhaW4gbm8gZGlyZWN0b3J5IHNlcGFyYXRvci4KLWFzX215 c2VsZj0KLWNhc2UgJDAgaW4gIygoCi0gICpbXFwvXSogKSBhc19teXNlbGY9JDAgOzsKLSAgKikg YXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotZm9yIGFzX2RpciBpbiAkUEFU SAotZG8KLSAgSUZTPSRhc19zYXZlX0lGUwotICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9 LgotICAgIHRlc3QgLXIgIiRhc19kaXIvJDAiICYmIGFzX215c2VsZj0kYXNfZGlyLyQwICYmIGJy ZWFrCi0gIGRvbmUKLUlGUz0kYXNfc2F2ZV9JRlMKLQotICAgICA7OwotZXNhYwotIyBXZSBkaWQg bm90IGZpbmQgb3Vyc2VsdmVzLCBtb3N0IHByb2JhYmx5IHdlIHdlcmUgcnVuIGFzIGBzaCBDT01N QU5EJwotIyBpbiB3aGljaCBjYXNlIHdlIGFyZSBub3QgdG8gYmUgZm91bmQgaW4gdGhlIHBhdGgu Ci1pZiB0ZXN0ICJ4JGFzX215c2VsZiIgPSB4OyB0aGVuCi0gIGFzX215c2VsZj0kMAotZmkKLWlm IHRlc3QgISAtZiAiJGFzX215c2VsZiI7IHRoZW4KLSAgJGFzX2VjaG8gIiRhc19teXNlbGY6IGVy cm9yOiBjYW5ub3QgZmluZCBteXNlbGY7IHJlcnVuIHdpdGggYW4gYWJzb2x1dGUgZmlsZSBuYW1l IiA+JjIKLSAgZXhpdCAxCi1maQotCi0jIFVuc2V0IHZhcmlhYmxlcyB0aGF0IHdlIGRvIG5vdCBu ZWVkIGFuZCB3aGljaCBjYXVzZSBidWdzIChlLmcuIGluCi0jIHByZS0zLjAgVVdJTiBrc2gpLiAg QnV0IGRvIG5vdCBjYXVzZSBidWdzIGluIGJhc2ggMi4wMTsgdGhlICJ8fCBleGl0IDEiCi0jIHN1 cHByZXNzZXMgYW55ICJTZWdtZW50YXRpb24gZmF1bHQiIG1lc3NhZ2UgdGhlcmUuICAnKCgnIGNv dWxkCi0jIHRyaWdnZXIgYSBidWcgaW4gcGRrc2ggNS4yLjE0LgotZm9yIGFzX3ZhciBpbiBCQVNI X0VOViBFTlYgTUFJTCBNQUlMUEFUSAotZG8gZXZhbCB0ZXN0IHhcJHskYXNfdmFyK3NldH0gPSB4 c2V0IFwKLSAgJiYgKCAodW5zZXQgJGFzX3ZhcikgfHwgZXhpdCAxKSA+L2Rldi9udWxsIDI+JjEg JiYgdW5zZXQgJGFzX3ZhciB8fCA6Ci1kb25lCi1QUzE9JyQgJwotUFMyPSc+ICcKLVBTND0nKyAn Ci0KLSMgTkxTIG51aXNhbmNlcy4KLUxDX0FMTD1DCi1leHBvcnQgTENfQUxMCi1MQU5HVUFHRT1D Ci1leHBvcnQgTEFOR1VBR0UKLQotIyBDRFBBVEguCi0odW5zZXQgQ0RQQVRIKSA+L2Rldi9udWxs IDI+JjEgJiYgdW5zZXQgQ0RQQVRICi0KLSMgVXNlIGEgcHJvcGVyIGludGVybmFsIGVudmlyb25t ZW50IHZhcmlhYmxlIHRvIGVuc3VyZSB3ZSBkb24ndCBmYWxsCi0gICMgaW50byBhbiBpbmZpbml0 ZSBsb29wLCBjb250aW51b3VzbHkgcmUtZXhlY3V0aW5nIG91cnNlbHZlcy4KLSAgaWYgdGVzdCB4 IiR7X2FzX2Nhbl9yZWV4ZWN9IiAhPSB4bm8gJiYgdGVzdCAieCRDT05GSUdfU0hFTEwiICE9IHg7 IHRoZW4KLSAgICBfYXNfY2FuX3JlZXhlYz1ubzsgZXhwb3J0IF9hc19jYW5fcmVleGVjOwotICAg ICMgV2UgY2Fubm90IHlldCBhc3N1bWUgYSBkZWNlbnQgc2hlbGwsIHNvIHdlIGhhdmUgdG8gcHJv dmlkZSBhCi0jIG5ldXRyYWxpemF0aW9uIHZhbHVlIGZvciBzaGVsbHMgd2l0aG91dCB1bnNldDsg YW5kIHRoaXMgYWxzbwotIyB3b3JrcyBhcm91bmQgc2hlbGxzIHRoYXQgY2Fubm90IHVuc2V0IG5v bmV4aXN0ZW50IHZhcmlhYmxlcy4KLSMgUHJlc2VydmUgLXYgYW5kIC14IHRvIHRoZSByZXBsYWNl bWVudCBzaGVsbC4KLUJBU0hfRU5WPS9kZXYvbnVsbAotRU5WPS9kZXYvbnVsbAotKHVuc2V0IEJB U0hfRU5WKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgQkFTSF9FTlYgRU5WCi1jYXNlICQtIGlu ICMgKCgoKAotICAqdip4KiB8ICp4KnYqICkgYXNfb3B0cz0tdnggOzsKLSAgKnYqICkgYXNfb3B0 cz0tdiA7OwotICAqeCogKSBhc19vcHRzPS14IDs7Ci0gICogKSBhc19vcHRzPSA7OwotZXNhYwot ZXhlYyAkQ09ORklHX1NIRUxMICRhc19vcHRzICIkYXNfbXlzZWxmIiAkezErIiRAIn0KLSMgQWRt aXR0ZWRseSwgdGhpcyBpcyBxdWl0ZSBwYXJhbm9pZCwgc2luY2UgYWxsIHRoZSBrbm93biBzaGVs bHMgYmFpbAotIyBvdXQgYWZ0ZXIgYSBmYWlsZWQgYGV4ZWMnLgotJGFzX2VjaG8gIiQwOiBjb3Vs ZCBub3QgcmUtZXhlY3V0ZSB3aXRoICRDT05GSUdfU0hFTEwiID4mMgotYXNfZm5fZXhpdCAyNTUK LSAgZmkKLSAgIyBXZSBkb24ndCB3YW50IHRoaXMgdG8gcHJvcGFnYXRlIHRvIG90aGVyIHN1YnBy b2Nlc3Nlcy4KLSAgICAgICAgICB7IF9hc19jYW5fcmVleGVjPTsgdW5zZXQgX2FzX2Nhbl9yZWV4 ZWM7fQotaWYgdGVzdCAieCRDT05GSUdfU0hFTEwiID0geDsgdGhlbgotICBhc19ib3VybmVfY29t cGF0aWJsZT0iaWYgdGVzdCAtbiBcIlwke1pTSF9WRVJTSU9OK3NldH1cIiAmJiAoZW11bGF0ZSBz aCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSAgZW11bGF0ZSBzaAotICBOVUxMQ01EPToKLSAg IyBQcmUtNC4yIHZlcnNpb25zIG9mIFpzaCBkbyB3b3JkIHNwbGl0dGluZyBvbiBcJHsxK1wiXCRA XCJ9LCB3aGljaAotICAjIGlzIGNvbnRyYXJ5IHRvIG91ciB1c2FnZS4gIERpc2FibGUgdGhpcyBm ZWF0dXJlLgotICBhbGlhcyAtZyAnXCR7MStcIlwkQFwifSc9J1wiXCRAXCInCi0gIHNldG9wdCBO T19HTE9CX1NVQlNUCi1lbHNlCi0gIGNhc2UgXGAoc2V0IC1vKSAyPi9kZXYvbnVsbFxgIGluICMo Ci0gICpwb3NpeCopIDoKLSAgICBzZXQgLW8gcG9zaXggOzsgIygKLSAgKikgOgotICAgICA7Owot ZXNhYwotZmkKLSIKLSAgYXNfcmVxdWlyZWQ9ImFzX2ZuX3JldHVybiAoKSB7IChleGl0IFwkMSk7 IH0KLWFzX2ZuX3N1Y2Nlc3MgKCkgeyBhc19mbl9yZXR1cm4gMDsgfQotYXNfZm5fZmFpbHVyZSAo KSB7IGFzX2ZuX3JldHVybiAxOyB9Ci1hc19mbl9yZXRfc3VjY2VzcyAoKSB7IHJldHVybiAwOyB9 Ci1hc19mbl9yZXRfZmFpbHVyZSAoKSB7IHJldHVybiAxOyB9Ci0KLWV4aXRjb2RlPTAKLWFzX2Zu X3N1Y2Nlc3MgfHwgeyBleGl0Y29kZT0xOyBlY2hvIGFzX2ZuX3N1Y2Nlc3MgZmFpbGVkLjsgfQot YXNfZm5fZmFpbHVyZSAmJiB7IGV4aXRjb2RlPTE7IGVjaG8gYXNfZm5fZmFpbHVyZSBzdWNjZWVk ZWQuOyB9Ci1hc19mbl9yZXRfc3VjY2VzcyB8fCB7IGV4aXRjb2RlPTE7IGVjaG8gYXNfZm5fcmV0 X3N1Y2Nlc3MgZmFpbGVkLjsgfQotYXNfZm5fcmV0X2ZhaWx1cmUgJiYgeyBleGl0Y29kZT0xOyBl Y2hvIGFzX2ZuX3JldF9mYWlsdXJlIHN1Y2NlZWRlZC47IH0KLWlmICggc2V0IHg7IGFzX2ZuX3Jl dF9zdWNjZXNzIHkgJiYgdGVzdCB4ID0gXCJcJDFcIiApOyB0aGVuIDoKLQotZWxzZQotICBleGl0 Y29kZT0xOyBlY2hvIHBvc2l0aW9uYWwgcGFyYW1ldGVycyB3ZXJlIG5vdCBzYXZlZC4KLWZpCi10 ZXN0IHhcJGV4aXRjb2RlID0geDAgfHwgZXhpdCAxCi10ZXN0IC14IC8gfHwgZXhpdCAxIgotICBh c19zdWdnZXN0ZWQ9IiAgYXNfbGluZW5vXzE9Ijthc19zdWdnZXN0ZWQ9JGFzX3N1Z2dlc3RlZCRM SU5FTk87YXNfc3VnZ2VzdGVkPSRhc19zdWdnZXN0ZWQiIGFzX2xpbmVub18xYT1cJExJTkVOTwot ICBhc19saW5lbm9fMj0iO2FzX3N1Z2dlc3RlZD0kYXNfc3VnZ2VzdGVkJExJTkVOTzthc19zdWdn ZXN0ZWQ9JGFzX3N1Z2dlc3RlZCIgYXNfbGluZW5vXzJhPVwkTElORU5PCi0gIGV2YWwgJ3Rlc3Qg XCJ4XCRhc19saW5lbm9fMSdcJGFzX3J1bidcIiAhPSBcInhcJGFzX2xpbmVub18yJ1wkYXNfcnVu J1wiICYmCi0gIHRlc3QgXCJ4XGBleHByIFwkYXNfbGluZW5vXzEnXCRhc19ydW4nICsgMVxgXCIg PSBcInhcJGFzX2xpbmVub18yJ1wkYXNfcnVuJ1wiJyB8fCBleGl0IDEKLXRlc3QgXCQoKCAxICsg MSApKSA9IDIgfHwgZXhpdCAxIgotICBpZiAoZXZhbCAiJGFzX3JlcXVpcmVkIikgMj4vZGV2L251 bGw7IHRoZW4gOgotICBhc19oYXZlX3JlcXVpcmVkPXllcwotZWxzZQotICBhc19oYXZlX3JlcXVp cmVkPW5vCi1maQotICBpZiB0ZXN0IHgkYXNfaGF2ZV9yZXF1aXJlZCA9IHh5ZXMgJiYgKGV2YWwg IiRhc19zdWdnZXN0ZWQiKSAyPi9kZXYvbnVsbDsgdGhlbiA6Ci0KLWVsc2UKLSAgYXNfc2F2ZV9J RlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotYXNfZm91bmQ9ZmFsc2UKLWZvciBhc19kaXIg aW4gL2JpbiRQQVRIX1NFUEFSQVRPUi91c3IvYmluJFBBVEhfU0VQQVJBVE9SJFBBVEgKLWRvCi0g IElGUz0kYXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgYXNf Zm91bmQ9OgotICBjYXNlICRhc19kaXIgaW4gIygKLQkgLyopCi0JICAgZm9yIGFzX2Jhc2UgaW4g c2ggYmFzaCBrc2ggc2g1OyBkbwotCSAgICAgIyBUcnkgb25seSBzaGVsbHMgdGhhdCBleGlzdCwg dG8gc2F2ZSBzZXZlcmFsIGZvcmtzLgotCSAgICAgYXNfc2hlbGw9JGFzX2Rpci8kYXNfYmFzZQot CSAgICAgaWYgeyB0ZXN0IC1mICIkYXNfc2hlbGwiIHx8IHRlc3QgLWYgIiRhc19zaGVsbC5leGUi OyB9ICYmCi0JCSAgICB7ICRhc19lY2hvICIkYXNfYm91cm5lX2NvbXBhdGlibGUiIiRhc19yZXF1 aXJlZCIgfCBhc19ydW49YSAiJGFzX3NoZWxsIjsgfSAyPi9kZXYvbnVsbDsgdGhlbiA6Ci0gIENP TkZJR19TSEVMTD0kYXNfc2hlbGwgYXNfaGF2ZV9yZXF1aXJlZD15ZXMKLQkJICAgaWYgeyAkYXNf ZWNobyAiJGFzX2JvdXJuZV9jb21wYXRpYmxlIiIkYXNfc3VnZ2VzdGVkIiB8IGFzX3J1bj1hICIk YXNfc2hlbGwiOyB9IDI+L2Rldi9udWxsOyB0aGVuIDoKLSAgYnJlYWsgMgotZmkKLWZpCi0JICAg ZG9uZTs7Ci0gICAgICAgZXNhYwotICBhc19mb3VuZD1mYWxzZQotZG9uZQotJGFzX2ZvdW5kIHx8 IHsgaWYgeyB0ZXN0IC1mICIkU0hFTEwiIHx8IHRlc3QgLWYgIiRTSEVMTC5leGUiOyB9ICYmCi0J ICAgICAgeyAkYXNfZWNobyAiJGFzX2JvdXJuZV9jb21wYXRpYmxlIiIkYXNfcmVxdWlyZWQiIHwg YXNfcnVuPWEgIiRTSEVMTCI7IH0gMj4vZGV2L251bGw7IHRoZW4gOgotICBDT05GSUdfU0hFTEw9 JFNIRUxMIGFzX2hhdmVfcmVxdWlyZWQ9eWVzCi1maTsgfQotSUZTPSRhc19zYXZlX0lGUwotCi0K LSAgICAgIGlmIHRlc3QgIngkQ09ORklHX1NIRUxMIiAhPSB4OyB0aGVuIDoKLSAgZXhwb3J0IENP TkZJR19TSEVMTAotICAgICAgICAgICAgICMgV2UgY2Fubm90IHlldCBhc3N1bWUgYSBkZWNlbnQg c2hlbGwsIHNvIHdlIGhhdmUgdG8gcHJvdmlkZSBhCi0jIG5ldXRyYWxpemF0aW9uIHZhbHVlIGZv ciBzaGVsbHMgd2l0aG91dCB1bnNldDsgYW5kIHRoaXMgYWxzbwotIyB3b3JrcyBhcm91bmQgc2hl bGxzIHRoYXQgY2Fubm90IHVuc2V0IG5vbmV4aXN0ZW50IHZhcmlhYmxlcy4KLSMgUHJlc2VydmUg LXYgYW5kIC14IHRvIHRoZSByZXBsYWNlbWVudCBzaGVsbC4KLUJBU0hfRU5WPS9kZXYvbnVsbAot RU5WPS9kZXYvbnVsbAotKHVuc2V0IEJBU0hfRU5WKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQg QkFTSF9FTlYgRU5WCi1jYXNlICQtIGluICMgKCgoKAotICAqdip4KiB8ICp4KnYqICkgYXNfb3B0 cz0tdnggOzsKLSAgKnYqICkgYXNfb3B0cz0tdiA7OwotICAqeCogKSBhc19vcHRzPS14IDs7Ci0g ICogKSBhc19vcHRzPSA7OwotZXNhYwotZXhlYyAkQ09ORklHX1NIRUxMICRhc19vcHRzICIkYXNf bXlzZWxmIiAkezErIiRAIn0KLSMgQWRtaXR0ZWRseSwgdGhpcyBpcyBxdWl0ZSBwYXJhbm9pZCwg c2luY2UgYWxsIHRoZSBrbm93biBzaGVsbHMgYmFpbAotIyBvdXQgYWZ0ZXIgYSBmYWlsZWQgYGV4 ZWMnLgotJGFzX2VjaG8gIiQwOiBjb3VsZCBub3QgcmUtZXhlY3V0ZSB3aXRoICRDT05GSUdfU0hF TEwiID4mMgotZXhpdCAyNTUKLWZpCi0KLSAgICBpZiB0ZXN0IHgkYXNfaGF2ZV9yZXF1aXJlZCA9 IHhubzsgdGhlbiA6Ci0gICRhc19lY2hvICIkMDogVGhpcyBzY3JpcHQgcmVxdWlyZXMgYSBzaGVs bCBtb3JlIG1vZGVybiB0aGFuIGFsbCIKLSAgJGFzX2VjaG8gIiQwOiB0aGUgc2hlbGxzIHRoYXQg SSBmb3VuZCBvbiB5b3VyIHN5c3RlbS4iCi0gIGlmIHRlc3QgeCR7WlNIX1ZFUlNJT04rc2V0fSA9 IHhzZXQgOyB0aGVuCi0gICAgJGFzX2VjaG8gIiQwOiBJbiBwYXJ0aWN1bGFyLCB6c2ggJFpTSF9W RVJTSU9OIGhhcyBidWdzIGFuZCBzaG91bGQiCi0gICAgJGFzX2VjaG8gIiQwOiBiZSB1cGdyYWRl ZCB0byB6c2ggNC4zLjQgb3IgbGF0ZXIuIgotICBlbHNlCi0gICAgJGFzX2VjaG8gIiQwOiBQbGVh c2UgdGVsbCBidWctYXV0b2NvbmZAZ251Lm9yZyBhbmQKLSQwOiB4ZW4tZGV2ZWxAbGlzdHMueGVu Lm9yZyBhYm91dCB5b3VyIHN5c3RlbSwgaW5jbHVkaW5nCi0kMDogYW55IGVycm9yIHBvc3NpYmx5 IG91dHB1dCBiZWZvcmUgdGhpcyBtZXNzYWdlLiBUaGVuCi0kMDogaW5zdGFsbCBhIG1vZGVybiBz aGVsbCwgb3IgbWFudWFsbHkgcnVuIHRoZSBzY3JpcHQKLSQwOiB1bmRlciBzdWNoIGEgc2hlbGwg aWYgeW91IGRvIGhhdmUgb25lLiIKLSAgZmkKLSAgZXhpdCAxCi1maQotZmkKLWZpCi1TSEVMTD0k e0NPTkZJR19TSEVMTC0vYmluL3NofQotZXhwb3J0IFNIRUxMCi0jIFVuc2V0IG1vcmUgdmFyaWFi bGVzIGtub3duIHRvIGludGVyZmVyZSB3aXRoIGJlaGF2aW9yIG9mIGNvbW1vbiB0b29scy4KLUNM SUNPTE9SX0ZPUkNFPSBHUkVQX09QVElPTlM9Ci11bnNldCBDTElDT0xPUl9GT1JDRSBHUkVQX09Q VElPTlMKLQotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0jIyBNNHNoIFNoZWxsIEZ1bmN0 aW9ucy4gIyMKLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIyBhc19mbl91bnNldCBWQVIK LSMgLS0tLS0tLS0tLS0tLS0tCi0jIFBvcnRhYmx5IHVuc2V0IFZBUi4KLWFzX2ZuX3Vuc2V0ICgp Ci17Ci0gIHsgZXZhbCAkMT07IHVuc2V0ICQxO30KLX0KLWFzX3Vuc2V0PWFzX2ZuX3Vuc2V0Ci0K LSMgYXNfZm5fc2V0X3N0YXR1cyBTVEFUVVMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMg U2V0ICQ/IHRvIFNUQVRVUywgd2l0aG91dCBmb3JraW5nLgotYXNfZm5fc2V0X3N0YXR1cyAoKQot ewotICByZXR1cm4gJDEKLX0gIyBhc19mbl9zZXRfc3RhdHVzCi0KLSMgYXNfZm5fZXhpdCBTVEFU VVMKLSMgLS0tLS0tLS0tLS0tLS0tLS0KLSMgRXhpdCB0aGUgc2hlbGwgd2l0aCBTVEFUVVMsIGV2 ZW4gaW4gYSAidHJhcCAwIiBvciAic2V0IC1lIiBjb250ZXh0LgotYXNfZm5fZXhpdCAoKQotewot ICBzZXQgK2UKLSAgYXNfZm5fc2V0X3N0YXR1cyAkMQotICBleGl0ICQxCi19ICMgYXNfZm5fZXhp dAotCi0jIGFzX2ZuX21rZGlyX3AKLSMgLS0tLS0tLS0tLS0tLQotIyBDcmVhdGUgIiRhc19kaXIi IGFzIGEgZGlyZWN0b3J5LCBpbmNsdWRpbmcgcGFyZW50cyBpZiBuZWNlc3NhcnkuCi1hc19mbl9t a2Rpcl9wICgpCi17Ci0KLSAgY2FzZSAkYXNfZGlyIGluICMoCi0gIC0qKSBhc19kaXI9Li8kYXNf ZGlyOzsKLSAgZXNhYwotICB0ZXN0IC1kICIkYXNfZGlyIiB8fCBldmFsICRhc19ta2Rpcl9wIHx8 IHsKLSAgICBhc19kaXJzPQotICAgIHdoaWxlIDo7IGRvCi0gICAgICBjYXNlICRhc19kaXIgaW4g IygKLSAgICAgICpcJyopIGFzX3FkaXI9YCRhc19lY2hvICIkYXNfZGlyIiB8IHNlZCAicy8nLydc XFxcXFxcXCcnL2ciYDs7ICMnKAotICAgICAgKikgYXNfcWRpcj0kYXNfZGlyOzsKLSAgICAgIGVz YWMKLSAgICAgIGFzX2RpcnM9IickYXNfcWRpcicgJGFzX2RpcnMiCi0gICAgICBhc19kaXI9YCRh c19kaXJuYW1lIC0tICIkYXNfZGlyIiB8fAotJGFzX2V4cHIgWCIkYXNfZGlyIiA6ICdYXCguKlte L11cKS8vKlteL11bXi9dKi8qJCcgXHwgXAotCSBYIiRhc19kaXIiIDogJ1hcKC8vXClbXi9dJyBc fCBcCi0JIFgiJGFzX2RpciIgOiAnWFwoLy9cKSQnIFx8IFwKLQkgWCIkYXNfZGlyIiA6ICdYXCgv XCknIFx8IC4gMj4vZGV2L251bGwgfHwKLSRhc19lY2hvIFgiJGFzX2RpciIgfAotICAgIHNlZCAn L15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97Ci0JICAgIHMvL1wxLwotCSAgICBxCi0J ICB9Ci0JICAvXlhcKFwvXC9cKVteL10uKi97Ci0JICAgIHMvL1wxLwotCSAgICBxCi0JICB9Ci0J ICAvXlhcKFwvXC9cKSQvewotCSAgICBzLy9cMS8KLQkgICAgcQotCSAgfQotCSAgL15YXChcL1wp LiovewotCSAgICBzLy9cMS8KLQkgICAgcQotCSAgfQotCSAgcy8uKi8uLzsgcSdgCi0gICAgICB0 ZXN0IC1kICIkYXNfZGlyIiAmJiBicmVhawotICAgIGRvbmUKLSAgICB0ZXN0IC16ICIkYXNfZGly cyIgfHwgZXZhbCAibWtkaXIgJGFzX2RpcnMiCi0gIH0gfHwgdGVzdCAtZCAiJGFzX2RpciIgfHwg YXNfZm5fZXJyb3IgJD8gImNhbm5vdCBjcmVhdGUgZGlyZWN0b3J5ICRhc19kaXIiCi0KLQotfSAj IGFzX2ZuX21rZGlyX3AKLQotIyBhc19mbl9leGVjdXRhYmxlX3AgRklMRQotIyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQotIyBUZXN0IGlmIEZJTEUgaXMgYW4gZXhlY3V0YWJsZSByZWd1bGFyIGZp bGUuCi1hc19mbl9leGVjdXRhYmxlX3AgKCkKLXsKLSAgdGVzdCAtZiAiJDEiICYmIHRlc3QgLXgg IiQxIgotfSAjIGFzX2ZuX2V4ZWN1dGFibGVfcAotIyBhc19mbl9hcHBlbmQgVkFSIFZBTFVFCi0j IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQXBwZW5kIHRoZSB0ZXh0IGluIFZBTFVFIHRvIHRo ZSBlbmQgb2YgdGhlIGRlZmluaXRpb24gY29udGFpbmVkIGluIFZBUi4gVGFrZQotIyBhZHZhbnRh Z2Ugb2YgYW55IHNoZWxsIG9wdGltaXphdGlvbnMgdGhhdCBhbGxvdyBhbW9ydGl6ZWQgbGluZWFy IGdyb3d0aCBvdmVyCi0jIHJlcGVhdGVkIGFwcGVuZHMsIGluc3RlYWQgb2YgdGhlIHR5cGljYWwg cXVhZHJhdGljIGdyb3d0aCBwcmVzZW50IGluIG5haXZlCi0jIGltcGxlbWVudGF0aW9ucy4KLWlm IChldmFsICJhc192YXI9MTsgYXNfdmFyKz0yOyB0ZXN0IHhcJGFzX3ZhciA9IHgxMiIpIDI+L2Rl di9udWxsOyB0aGVuIDoKLSAgZXZhbCAnYXNfZm5fYXBwZW5kICgpCi0gIHsKLSAgICBldmFsICQx Kz1cJDIKLSAgfScKLWVsc2UKLSAgYXNfZm5fYXBwZW5kICgpCi0gIHsKLSAgICBldmFsICQxPVwk JDFcJDIKLSAgfQotZmkgIyBhc19mbl9hcHBlbmQKLQotIyBhc19mbl9hcml0aCBBUkcuLi4KLSMg LS0tLS0tLS0tLS0tLS0tLS0tCi0jIFBlcmZvcm0gYXJpdGhtZXRpYyBldmFsdWF0aW9uIG9uIHRo ZSBBUkdzLCBhbmQgc3RvcmUgdGhlIHJlc3VsdCBpbiB0aGUKLSMgZ2xvYmFsICRhc192YWwuIFRh a2UgYWR2YW50YWdlIG9mIHNoZWxscyB0aGF0IGNhbiBhdm9pZCBmb3Jrcy4gVGhlIGFyZ3VtZW50 cwotIyBtdXN0IGJlIHBvcnRhYmxlIGFjcm9zcyAkKCgpKSBhbmQgZXhwci4KLWlmIChldmFsICJ0 ZXN0IFwkKCggMSArIDEgKSkgPSAyIikgMj4vZGV2L251bGw7IHRoZW4gOgotICBldmFsICdhc19m bl9hcml0aCAoKQotICB7Ci0gICAgYXNfdmFsPSQoKCAkKiApKQotICB9JwotZWxzZQotICBhc19m bl9hcml0aCAoKQotICB7Ci0gICAgYXNfdmFsPWBleHByICIkQCIgfHwgdGVzdCAkPyAtZXEgMWAK LSAgfQotZmkgIyBhc19mbl9hcml0aAotCi0KLSMgYXNfZm5fZXJyb3IgU1RBVFVTIEVSUk9SIFtM SU5FTk8gTE9HX0ZEXQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ci0jIE91dHB1dCAiYGJhc2VuYW1lICQwYDogZXJyb3I6IEVSUk9SIiB0byBzdGRlcnIuIElmIExJ TkVOTyBhbmQgTE9HX0ZEIGFyZQotIyBwcm92aWRlZCwgYWxzbyBvdXRwdXQgdGhlIGVycm9yIHRv IExPR19GRCwgcmVmZXJlbmNpbmcgTElORU5PLiBUaGVuIGV4aXQgdGhlCi0jIHNjcmlwdCB3aXRo IFNUQVRVUywgdXNpbmcgMSBpZiB0aGF0IHdhcyAwLgotYXNfZm5fZXJyb3IgKCkKLXsKLSAgYXNf c3RhdHVzPSQxOyB0ZXN0ICRhc19zdGF0dXMgLWVxIDAgJiYgYXNfc3RhdHVzPTEKLSAgaWYgdGVz dCAiJDQiOyB0aGVuCi0gICAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMyJ9IGFzX2xpbmVub19z dGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjawotICAgICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiAkMiIgPiYkNAotICBmaQotICAkYXNfZWNo byAiJGFzX21lOiBlcnJvcjogJDIiID4mMgotICBhc19mbl9leGl0ICRhc19zdGF0dXMKLX0gIyBh c19mbl9lcnJvcgotCi1pZiBleHByIGEgOiAnXChhXCknID4vZGV2L251bGwgMj4mMSAmJgotICAg dGVzdCAiWGBleHByIDAwMDAxIDogJy4qXCguLi5cKSdgIiA9IFgwMDE7IHRoZW4KLSAgYXNfZXhw cj1leHByCi1lbHNlCi0gIGFzX2V4cHI9ZmFsc2UKLWZpCi0KLWlmIChiYXNlbmFtZSAtLSAvKSA+ L2Rldi9udWxsIDI+JjEgJiYgdGVzdCAiWGBiYXNlbmFtZSAtLSAvIDI+JjFgIiA9ICJYLyI7IHRo ZW4KLSAgYXNfYmFzZW5hbWU9YmFzZW5hbWUKLWVsc2UKLSAgYXNfYmFzZW5hbWU9ZmFsc2UKLWZp Ci0KLWlmIChhc19kaXI9YGRpcm5hbWUgLS0gL2AgJiYgdGVzdCAiWCRhc19kaXIiID0gWC8pID4v ZGV2L251bGwgMj4mMTsgdGhlbgotICBhc19kaXJuYW1lPWRpcm5hbWUKLWVsc2UKLSAgYXNfZGly bmFtZT1mYWxzZQotZmkKLQotYXNfbWU9YCRhc19iYXNlbmFtZSAtLSAiJDAiIHx8Ci0kYXNfZXhw ciBYLyIkMCIgOiAnLiovXChbXi9dW14vXSpcKS8qJCcgXHwgXAotCSBYIiQwIiA6ICdYXCgvL1wp JCcgXHwgXAotCSBYIiQwIiA6ICdYXCgvXCknIFx8IC4gMj4vZGV2L251bGwgfHwKLSRhc19lY2hv IFgvIiQwIiB8Ci0gICAgc2VkICcvXi4qXC9cKFteL11bXi9dKlwpXC8qJC97Ci0JICAgIHMvL1wx LwotCSAgICBxCi0JICB9Ci0JICAvXlhcL1woXC9cL1wpJC97Ci0JICAgIHMvL1wxLwotCSAgICBx Ci0JICB9Ci0JICAvXlhcL1woXC9cKS4qL3sKLQkgICAgcy8vXDEvCi0JICAgIHEKLQkgIH0KLQkg IHMvLiovLi87IHEnYAotCi0jIEF2b2lkIGRlcGVuZGluZyB1cG9uIENoYXJhY3RlciBSYW5nZXMu Ci1hc19jcl9sZXR0ZXJzPSdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicKLWFzX2NyX0xFVFRF UlM9J0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJwotYXNfY3JfTGV0dGVycz0kYXNfY3JfbGV0 dGVycyRhc19jcl9MRVRURVJTCi1hc19jcl9kaWdpdHM9JzAxMjM0NTY3ODknCi1hc19jcl9hbG51 bT0kYXNfY3JfTGV0dGVycyRhc19jcl9kaWdpdHMKLQotCi0gIGFzX2xpbmVub18xPSRMSU5FTk8g YXNfbGluZW5vXzFhPSRMSU5FTk8KLSAgYXNfbGluZW5vXzI9JExJTkVOTyBhc19saW5lbm9fMmE9 JExJTkVOTwotICBldmFsICd0ZXN0ICJ4JGFzX2xpbmVub18xJyRhc19ydW4nIiAhPSAieCRhc19s aW5lbm9fMickYXNfcnVuJyIgJiYKLSAgdGVzdCAieGBleHByICRhc19saW5lbm9fMSckYXNfcnVu JyArIDFgIiA9ICJ4JGFzX2xpbmVub18yJyRhc19ydW4nIicgfHwgewotICAjIEJsYW1lIExlZSBF LiBNY01haG9uICgxOTMxLTE5ODkpIGZvciBzZWQncyBzeW50YXguICA6LSkKLSAgc2VkIC1uICcK LSAgICBwCi0gICAgL1skXUxJTkVOTy89Ci0gICcgPCRhc19teXNlbGYgfAotICAgIHNlZCAnCi0g ICAgICBzL1skXUxJTkVOTy4qLyYtLwotICAgICAgdCBsaW5lbm8KLSAgICAgIGIKLSAgICAgIDps aW5lbm8KLSAgICAgIE4KLSAgICAgIDpsb29wCi0gICAgICBzL1skXUxJTkVOT1woW14nJGFzX2Ny X2FsbnVtJ19dLipcblwpXCguKlwpL1wyXDFcMi8KLSAgICAgIHQgbG9vcAotICAgICAgcy8tXG4u Ki8vCi0gICAgJyA+JGFzX21lLmxpbmVubyAmJgotICBjaG1vZCAreCAiJGFzX21lLmxpbmVubyIg fHwKLSAgICB7ICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgY3JlYXRlICRhc19tZS5s aW5lbm87IHJlcnVuIHdpdGggYSBQT1NJWCBzaGVsbCIgPiYyOyBhc19mbl9leGl0IDE7IH0KLQot ICAjIElmIHdlIGhhZCB0byByZS1leGVjdXRlIHdpdGggJENPTkZJR19TSEVMTCwgd2UncmUgZW5z dXJlZCB0byBoYXZlCi0gICMgYWxyZWFkeSBkb25lIHRoYXQsIHNvIGVuc3VyZSB3ZSBkb24ndCB0 cnkgdG8gZG8gc28gYWdhaW4gYW5kIGZhbGwKLSAgIyBpbiBhbiBpbmZpbml0ZSBsb29wLiAgVGhp cyBoYXMgYWxyZWFkeSBoYXBwZW5lZCBpbiBwcmFjdGljZS4KLSAgX2FzX2Nhbl9yZWV4ZWM9bm87 IGV4cG9ydCBfYXNfY2FuX3JlZXhlYwotICAjIERvbid0IHRyeSB0byBleGVjIGFzIGl0IGNoYW5n ZXMgJFswXSwgY2F1c2luZyBhbGwgc29ydCBvZiBwcm9ibGVtcwotICAjICh0aGUgZGlybmFtZSBv ZiAkWzBdIGlzIG5vdCB0aGUgcGxhY2Ugd2hlcmUgd2UgbWlnaHQgZmluZCB0aGUKLSAgIyBvcmln aW5hbCBhbmQgc28gb24uICBBdXRvY29uZiBpcyBlc3BlY2lhbGx5IHNlbnNpdGl2ZSB0byB0aGlz KS4KLSAgLiAiLi8kYXNfbWUubGluZW5vIgotICAjIEV4aXQgc3RhdHVzIGlzIHRoYXQgb2YgdGhl IGxhc3QgY29tbWFuZC4KLSAgZXhpdAotfQotCi1FQ0hPX0M9IEVDSE9fTj0gRUNIT19UPQotY2Fz ZSBgZWNobyAtbiB4YCBpbiAjKCgoKCgKLS1uKikKLSAgY2FzZSBgZWNobyAneHlcYydgIGluCi0g ICpjKikgRUNIT19UPScJJzs7CSMgRUNIT19UIGlzIHNpbmdsZSB0YWIgY2hhcmFjdGVyLgotICB4 eSkgIEVDSE9fQz0nXGMnOzsKLSAgKikgICBlY2hvIGBlY2hvIGtzaDg4IGJ1ZyBvbiBBSVggNi4x YCA+IC9kZXYvbnVsbAotICAgICAgIEVDSE9fVD0nCSc7OwotICBlc2FjOzsKLSopCi0gIEVDSE9f Tj0nLW4nOzsKLWVzYWMKLQotcm0gLWYgY29uZiQkIGNvbmYkJC5leGUgY29uZiQkLmZpbGUKLWlm IHRlc3QgLWQgY29uZiQkLmRpcjsgdGhlbgotICBybSAtZiBjb25mJCQuZGlyL2NvbmYkJC5maWxl Ci1lbHNlCi0gIHJtIC1mIGNvbmYkJC5kaXIKLSAgbWtkaXIgY29uZiQkLmRpciAyPi9kZXYvbnVs bAotZmkKLWlmIChlY2hvID5jb25mJCQuZmlsZSkgMj4vZGV2L251bGw7IHRoZW4KLSAgaWYgbG4g LXMgY29uZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVuCi0gICAgYXNfbG5fcz0nbG4g LXMnCi0gICAgIyAuLi4gYnV0IHRoZXJlIGFyZSB0d28gZ290Y2hhczoKLSAgICAjIDEpIE9uIE1T WVMsIGJvdGggYGxuIC1zIGZpbGUgZGlyJyBhbmQgYGxuIGZpbGUgZGlyJyBmYWlsLgotICAgICMg MikgREpHUFAgPCAyLjA0IGhhcyBubyBzeW1saW5rczsgYGxuIC1zJyBjcmVhdGVzIGEgd3JhcHBl ciBleGVjdXRhYmxlLgotICAgICMgSW4gYm90aCBjYXNlcywgd2UgaGF2ZSB0byBkZWZhdWx0IHRv IGBjcCAtcFInLgotICAgIGxuIC1zIGNvbmYkJC5maWxlIGNvbmYkJC5kaXIgMj4vZGV2L251bGwg JiYgdGVzdCAhIC1mIGNvbmYkJC5leGUgfHwKLSAgICAgIGFzX2xuX3M9J2NwIC1wUicKLSAgZWxp ZiBsbiBjb25mJCQuZmlsZSBjb25mJCQgMj4vZGV2L251bGw7IHRoZW4KLSAgICBhc19sbl9zPWxu Ci0gIGVsc2UKLSAgICBhc19sbl9zPSdjcCAtcFInCi0gIGZpCi1lbHNlCi0gIGFzX2xuX3M9J2Nw IC1wUicKLWZpCi1ybSAtZiBjb25mJCQgY29uZiQkLmV4ZSBjb25mJCQuZGlyL2NvbmYkJC5maWxl IGNvbmYkJC5maWxlCi1ybWRpciBjb25mJCQuZGlyIDI+L2Rldi9udWxsCi0KLWlmIG1rZGlyIC1w IC4gMj4vZGV2L251bGw7IHRoZW4KLSAgYXNfbWtkaXJfcD0nbWtkaXIgLXAgIiRhc19kaXIiJwot ZWxzZQotICB0ZXN0IC1kIC4vLXAgJiYgcm1kaXIgLi8tcAotICBhc19ta2Rpcl9wPWZhbHNlCi1m aQotCi1hc190ZXN0X3g9J3Rlc3QgLXgnCi1hc19leGVjdXRhYmxlX3A9YXNfZm5fZXhlY3V0YWJs ZV9wCi0KLSMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9udG8gYSB2YWxpZCBDUFAg bmFtZS4KLWFzX3RyX2NwcD0iZXZhbCBzZWQgJ3klKiRhc19jcl9sZXR0ZXJzJVAkYXNfY3JfTEVU VEVSUyU7cyVbXl8kYXNfY3JfYWxudW1dJV8lZyciCi0KLSMgU2VkIGV4cHJlc3Npb24gdG8gbWFw IGEgc3RyaW5nIG9udG8gYSB2YWxpZCB2YXJpYWJsZSBuYW1lLgotYXNfdHJfc2g9ImV2YWwgc2Vk ICd5JSorJXBwJTtzJVteXyRhc19jcl9hbG51bV0lXyVnJyIKLQotCi10ZXN0IC1uICIkREpESVIi IHx8IGV4ZWMgNzwmMCA8L2Rldi9udWxsCi1leGVjIDY+JjEKLQotIyBOYW1lIG9mIHRoZSBob3N0 LgotIyBob3N0bmFtZSBvbiBzb21lIHN5c3RlbXMgKFNWUjMuMiwgb2xkIEdOVS9MaW51eCkgcmV0 dXJucyBhIGJvZ3VzIGV4aXQgc3RhdHVzLAotIyBzbyB1bmFtZSBnZXRzIHJ1biB0b28uCi1hY19o b3N0bmFtZT1gKGhvc3RuYW1lIHx8IHVuYW1lIC1uKSAyPi9kZXYvbnVsbCB8IHNlZCAxcWAKLQot IwotIyBJbml0aWFsaXphdGlvbnMuCi0jCi1hY19kZWZhdWx0X3ByZWZpeD0vdXNyL2xvY2FsCi1h Y19jbGVhbl9maWxlcz0KLWFjX2NvbmZpZ19saWJvYmpfZGlyPS4KLUxJQk9CSlM9Ci1jcm9zc19j b21waWxpbmc9bm8KLXN1YmRpcnM9Ci1NRkxBR1M9Ci1NQUtFRkxBR1M9Ci0KLSMgSWRlbnRpdHkg b2YgdGhpcyBwYWNrYWdlLgotUEFDS0FHRV9OQU1FPSdYZW4gSHlwZXJ2aXNvciBUb29scycKLVBB Q0tBR0VfVEFSTkFNRT0neGVuJwotUEFDS0FHRV9WRVJTSU9OPSc0LjEzJwotUEFDS0FHRV9TVFJJ Tkc9J1hlbiBIeXBlcnZpc29yIFRvb2xzIDQuMTMnCi1QQUNLQUdFX0JVR1JFUE9SVD0neGVuLWRl dmVsQGxpc3RzLnhlbi5vcmcnCi1QQUNLQUdFX1VSTD0naHR0cDovL3d3dy54ZW4ub3JnLycKLQot YWNfdW5pcXVlX2ZpbGU9ImxpYnhsL2xpYnhsLmMiCi0jIEZhY3RvcmluZyBkZWZhdWx0IGhlYWRl cnMgZm9yIG1vc3QgdGVzdHMuCi1hY19pbmNsdWRlc19kZWZhdWx0PSJcCi0jaW5jbHVkZSA8c3Rk aW8uaD4KLSNpZmRlZiBIQVZFX1NZU19UWVBFU19ICi0jIGluY2x1ZGUgPHN5cy90eXBlcy5oPgot I2VuZGlmCi0jaWZkZWYgSEFWRV9TWVNfU1RBVF9ICi0jIGluY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0j ZW5kaWYKLSNpZmRlZiBTVERDX0hFQURFUlMKLSMgaW5jbHVkZSA8c3RkbGliLmg+Ci0jIGluY2x1 ZGUgPHN0ZGRlZi5oPgotI2Vsc2UKLSMgaWZkZWYgSEFWRV9TVERMSUJfSAotIyAgaW5jbHVkZSA8 c3RkbGliLmg+Ci0jIGVuZGlmCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1NUUklOR19ICi0jIGlmICFk ZWZpbmVkIFNURENfSEVBREVSUyAmJiBkZWZpbmVkIEhBVkVfTUVNT1JZX0gKLSMgIGluY2x1ZGUg PG1lbW9yeS5oPgotIyBlbmRpZgotIyBpbmNsdWRlIDxzdHJpbmcuaD4KLSNlbmRpZgotI2lmZGVm IEhBVkVfU1RSSU5HU19ICi0jIGluY2x1ZGUgPHN0cmluZ3MuaD4KLSNlbmRpZgotI2lmZGVmIEhB VkVfSU5UVFlQRVNfSAotIyBpbmNsdWRlIDxpbnR0eXBlcy5oPgotI2VuZGlmCi0jaWZkZWYgSEFW RV9TVERJTlRfSAotIyBpbmNsdWRlIDxzdGRpbnQuaD4KLSNlbmRpZgotI2lmZGVmIEhBVkVfVU5J U1REX0gKLSMgaW5jbHVkZSA8dW5pc3RkLmg+Ci0jZW5kaWYiCi0KLWFjX3N1YnN0X3ZhcnM9J0xU TElCT0JKUwotTElCT0JKUwotbmluZXBmcwotU1lTVEVNRF9MSUJTCi1TWVNURU1EX0NGTEFHUwot U1lTVEVNRF9NT0RVTEVTX0xPQUQKLVNZU1RFTURfRElSCi1zeXN0ZW1kCi1saWJubAotTElCTkwz X0xJQlMKLUxJQk5MM19DRkxBR1MKLWFyZ3BfbGRmbGFncwotbGliaWNvbnYKLVBUWUZVTkNTX0xJ QlMKLVBUSFJFQURfTElCUwotUFRIUkVBRF9MREZMQUdTCi1QVEhSRUFEX0NGTEFHUwotRVhURlNf TElCUwotc3lzdGVtX2FpbwotemxpYgotRkVUQ0hFUgotRlRQCi1GQUxTRQotV0dFVAotcGl4bWFu X0xJQlMKLXBpeG1hbl9DRkxBR1MKLWdsaWJfTElCUwotZ2xpYl9DRkxBR1MKLVBLR19DT05GSUdf TElCRElSCi1QS0dfQ09ORklHX1BBVEgKLVBLR19DT05GSUcKLVRJTkZPX0xJQlMKLUNVUlNFU19M SUJTCi1QWV9OT09QVF9DRkxBR1MKLUVHUkVQCi1HUkVQCi1DUFAKLXB5Y29uZmlnCi1QWVRIT05Q QVRICi1DSEVDS1BPTElDWQotWEVOU1RPUkVECi1PQ0FNTEZJTkQKLU9DQU1MQlVJTEQKLU9DQU1M RE9DCi1PQ0FNTE1LTElCCi1PQ0FNTE1LVE9QCi1PQ0FNTERFUAotT0NBTUwKLU9DQU1MT1BURE9U T1BUCi1PQ0FNTENET1RPUFQKLU9DQU1MQkVTVAotT0NBTUxPUFQKLU9DQU1MTElCCi1PQ0FNTFZF UlNJT04KLU9DQU1MQwotSU5TVEFMTF9EQVRBCi1JTlNUQUxMX1NDUklQVAotSU5TVEFMTF9QUk9H UkFNCi1TRVRfTUFLRQotQVdLCi1JQVNMCi1YR0VUVEVYVAotQkFTSAotRkxFWAotQklTT04KLVBF UkwKLVBZVEhPTgotQVBQRU5EX0xJQgotQVBQRU5EX0lOQ0xVREVTCi1QUkVQRU5EX0xJQgotUFJF UEVORF9JTkNMVURFUwotRVhUUkFfUUVNVVVfQ09ORklHVVJFX0FSR1MKLWlweGUKLXFlbXVfeGVu X3N5c3RlbWQKLXFlbXVfeGVuX3BhdGgKLXFlbXVfeGVuCi1yb21iaW9zCi1CQ0MKLUxEODYKLUFT ODYKLXFlbXVfdHJhZGl0aW9uYWwKLWJsa3RhcDIKLUxJTlVYX0JBQ0tFTkRfTU9EVUxFUwotc2Vh Ymlvcwotb3ZtZgoteHNtcG9saWN5Ci1vY2FtbHRvb2xzCi1tb25pdG9ycwotZ2l0aHR0cAotcnBh dGgKLURFQlVHX0RJUgotWEVOX0RVTVBfRElSCi1YRU5fUEFHSU5HX0RJUgotWEVOX0xPQ0tfRElS Ci1YRU5fU0NSSVBUX0RJUgotWEVOX0NPTkZJR19ESVIKLUlOSVREX0RJUgotQ09ORklHX0RJUgot U0hBUkVESVIKLVhFTl9MSUJfRElSCi1YRU5fUlVOX1NUT1JFRAotWEVOX0xJQl9TVE9SRUQKLVhF Tl9MT0dfRElSCi1YRU5fUlVOX0RJUgotWEVORklSTVdBUkVESVIKLUxJQkVYRUNfSU5DCi1MSUJF WEVDX0xJQgotTElCRVhFQ19CSU4KLUxJQkVYRUMKLUNPTkZJR19MRUFGX0RJUgotWEVOU1RPUkVE X1BPUlQKLVhFTlNUT1JFRF9LVkEKLUZJTEVfT0ZGU0VUX0JJVFMKLU9CSkVYVAotRVhFRVhUCi1h Y19jdF9DQwotQ1BQRkxBR1MKLUxERkxBR1MKLUNGTEFHUwotQ0MKLUNPTkZJR19SVU1QCi1ob3N0 X29zCi1ob3N0X3ZlbmRvcgotaG9zdF9jcHUKLWhvc3QKLWJ1aWxkX29zCi1idWlsZF92ZW5kb3IK LWJ1aWxkX2NwdQotYnVpbGQKLXRhcmdldF9hbGlhcwotaG9zdF9hbGlhcwotYnVpbGRfYWxpYXMK LUxJQlMKLUVDSE9fVAotRUNIT19OCi1FQ0hPX0MKLURFRlMKLW1hbmRpcgotbG9jYWxlZGlyCi1s aWJkaXIKLXBzZGlyCi1wZGZkaXIKLWR2aWRpcgotaHRtbGRpcgotaW5mb2RpcgotZG9jZGlyCi1v bGRpbmNsdWRlZGlyCi1pbmNsdWRlZGlyCi1ydW5zdGF0ZWRpcgotbG9jYWxzdGF0ZWRpcgotc2hh cmVkc3RhdGVkaXIKLXN5c2NvbmZkaXIKLWRhdGFkaXIKLWRhdGFyb290ZGlyCi1saWJleGVjZGly Ci1zYmluZGlyCi1iaW5kaXIKLXByb2dyYW1fdHJhbnNmb3JtX25hbWUKLXByZWZpeAotZXhlY19w cmVmaXgKLVBBQ0tBR0VfVVJMCi1QQUNLQUdFX0JVR1JFUE9SVAotUEFDS0FHRV9TVFJJTkcKLVBB Q0tBR0VfVkVSU0lPTgotUEFDS0FHRV9UQVJOQU1FCi1QQUNLQUdFX05BTUUKLVBBVEhfU0VQQVJB VE9SCi1TSEVMTCcKLWFjX3N1YnN0X2ZpbGVzPScnCi1hY191c2VyX29wdHM9JwotZW5hYmxlX29w dGlvbl9jaGVja2luZwotZW5hYmxlX2xhcmdlZmlsZQotd2l0aF9pbml0ZGRpcgotd2l0aF9zeXNj b25maWdfbGVhZl9kaXIKLXdpdGhfbGliZXhlY19sZWFmX2Rpcgotd2l0aF94ZW5fZHVtcGRpcgot d2l0aF9ydW5kaXIKLXdpdGhfZGVidWdkaXIKLWVuYWJsZV9ycGF0aAotZW5hYmxlX2dpdGh0dHAK LWVuYWJsZV9tb25pdG9ycwotZW5hYmxlX29jYW1sdG9vbHMKLWVuYWJsZV94c21wb2xpY3kKLWVu YWJsZV9vdm1mCi1lbmFibGVfc2VhYmlvcwotd2l0aF9saW51eF9iYWNrZW5kX21vZHVsZXMKLWVu YWJsZV9ibGt0YXAyCi1lbmFibGVfcWVtdV90cmFkaXRpb25hbAotZW5hYmxlX3JvbWJpb3MKLXdp dGhfc3lzdGVtX3FlbXUKLXdpdGhfc3lzdGVtX3NlYWJpb3MKLXdpdGhfc3lzdGVtX292bWYKLWVu YWJsZV9pcHhlCi13aXRoX3N5c3RlbV9pcHhlCi13aXRoX2V4dHJhX3FlbXV1X2NvbmZpZ3VyZV9h cmdzCi13aXRoX3hlbnN0b3JlZAotZW5hYmxlX3N5c3RlbWQKLXdpdGhfc3lzdGVtZAotd2l0aF9z eXN0ZW1kX21vZHVsZXNfbG9hZAotZW5hYmxlXzlwZnMKLScKLSAgICAgIGFjX3ByZWNpb3VzX3Zh cnM9J2J1aWxkX2FsaWFzCi1ob3N0X2FsaWFzCi10YXJnZXRfYWxpYXMKLUNDCi1DRkxBR1MKLUxE RkxBR1MKLUxJQlMKLUNQUEZMQUdTCi1QUkVQRU5EX0lOQ0xVREVTCi1QUkVQRU5EX0xJQgotQVBQ RU5EX0lOQ0xVREVTCi1BUFBFTkRfTElCCi1QWVRIT04KLVBFUkwKLUJJU09OCi1GTEVYCi1CQVNI Ci1YR0VUVEVYVAotQVM4NgotTEQ4NgotQkNDCi1JQVNMCi1BV0sKLUNQUAotUEtHX0NPTkZJRwot UEtHX0NPTkZJR19QQVRICi1QS0dfQ09ORklHX0xJQkRJUgotZ2xpYl9DRkxBR1MKLWdsaWJfTElC UwotcGl4bWFuX0NGTEFHUwotcGl4bWFuX0xJQlMKLUxJQk5MM19DRkxBR1MKLUxJQk5MM19MSUJT Ci1TWVNURU1EX0NGTEFHUwotU1lTVEVNRF9MSUJTJwotCi0KLSMgSW5pdGlhbGl6ZSBzb21lIHZh cmlhYmxlcyBzZXQgYnkgb3B0aW9ucy4KLWFjX2luaXRfaGVscD0KLWFjX2luaXRfdmVyc2lvbj1m YWxzZQotYWNfdW5yZWNvZ25pemVkX29wdHM9Ci1hY191bnJlY29nbml6ZWRfc2VwPQotIyBUaGUg dmFyaWFibGVzIGhhdmUgdGhlIHNhbWUgbmFtZXMgYXMgdGhlIG9wdGlvbnMsIHdpdGgKLSMgZGFz aGVzIGNoYW5nZWQgdG8gdW5kZXJsaW5lcy4KLWNhY2hlX2ZpbGU9L2Rldi9udWxsCi1leGVjX3By ZWZpeD1OT05FCi1ub19jcmVhdGU9Ci1ub19yZWN1cnNpb249Ci1wcmVmaXg9Tk9ORQotcHJvZ3Jh bV9wcmVmaXg9Tk9ORQotcHJvZ3JhbV9zdWZmaXg9Tk9ORQotcHJvZ3JhbV90cmFuc2Zvcm1fbmFt ZT1zLHgseCwKLXNpbGVudD0KLXNpdGU9Ci1zcmNkaXI9Ci12ZXJib3NlPQoteF9pbmNsdWRlcz1O T05FCi14X2xpYnJhcmllcz1OT05FCi0KLSMgSW5zdGFsbGF0aW9uIGRpcmVjdG9yeSBvcHRpb25z LgotIyBUaGVzZSBhcmUgbGVmdCB1bmV4cGFuZGVkIHNvIHVzZXJzIGNhbiAibWFrZSBpbnN0YWxs IGV4ZWNfcHJlZml4PS9mb28iCi0jIGFuZCBhbGwgdGhlIHZhcmlhYmxlcyB0aGF0IGFyZSBzdXBw b3NlZCB0byBiZSBiYXNlZCBvbiBleGVjX3ByZWZpeAotIyBieSBkZWZhdWx0IHdpbGwgYWN0dWFs bHkgY2hhbmdlLgotIyBVc2UgYnJhY2VzIGluc3RlYWQgb2YgcGFyZW5zIGJlY2F1c2Ugc2gsIHBl cmwsIGV0Yy4gYWxzbyBhY2NlcHQgdGhlbS4KLSMgKFRoZSBsaXN0IGZvbGxvd3MgdGhlIHNhbWUg b3JkZXIgYXMgdGhlIEdOVSBDb2RpbmcgU3RhbmRhcmRzLikKLWJpbmRpcj0nJHtleGVjX3ByZWZp eH0vYmluJwotc2JpbmRpcj0nJHtleGVjX3ByZWZpeH0vc2JpbicKLWxpYmV4ZWNkaXI9JyR7ZXhl Y19wcmVmaXh9L2xpYmV4ZWMnCi1kYXRhcm9vdGRpcj0nJHtwcmVmaXh9L3NoYXJlJwotZGF0YWRp cj0nJHtkYXRhcm9vdGRpcn0nCi1zeXNjb25mZGlyPScke3ByZWZpeH0vZXRjJwotc2hhcmVkc3Rh dGVkaXI9JyR7cHJlZml4fS9jb20nCi1sb2NhbHN0YXRlZGlyPScke3ByZWZpeH0vdmFyJwotcnVu c3RhdGVkaXI9JyR7bG9jYWxzdGF0ZWRpcn0vcnVuJwotaW5jbHVkZWRpcj0nJHtwcmVmaXh9L2lu Y2x1ZGUnCi1vbGRpbmNsdWRlZGlyPScvdXNyL2luY2x1ZGUnCi1kb2NkaXI9JyR7ZGF0YXJvb3Rk aXJ9L2RvYy8ke1BBQ0tBR0VfVEFSTkFNRX0nCi1pbmZvZGlyPScke2RhdGFyb290ZGlyfS9pbmZv JwotaHRtbGRpcj0nJHtkb2NkaXJ9JwotZHZpZGlyPScke2RvY2Rpcn0nCi1wZGZkaXI9JyR7ZG9j ZGlyfScKLXBzZGlyPScke2RvY2Rpcn0nCi1saWJkaXI9JyR7ZXhlY19wcmVmaXh9L2xpYicKLWxv Y2FsZWRpcj0nJHtkYXRhcm9vdGRpcn0vbG9jYWxlJwotbWFuZGlyPScke2RhdGFyb290ZGlyfS9t YW4nCi0KLWFjX3ByZXY9Ci1hY19kYXNoZGFzaD0KLWZvciBhY19vcHRpb24KLWRvCi0gICMgSWYg dGhlIHByZXZpb3VzIG9wdGlvbiBuZWVkcyBhbiBhcmd1bWVudCwgYXNzaWduIGl0LgotICBpZiB0 ZXN0IC1uICIkYWNfcHJldiI7IHRoZW4KLSAgICBldmFsICRhY19wcmV2PVwkYWNfb3B0aW9uCi0g ICAgYWNfcHJldj0KLSAgICBjb250aW51ZQotICBmaQotCi0gIGNhc2UgJGFjX29wdGlvbiBpbgot ICAqPT8qKSBhY19vcHRhcmc9YGV4cHIgIlgkYWNfb3B0aW9uIiA6ICdbXj1dKj1cKC4qXCknYCA7 OwotICAqPSkgICBhY19vcHRhcmc9IDs7Ci0gICopICAgIGFjX29wdGFyZz15ZXMgOzsKLSAgZXNh YwotCi0gICMgQWNjZXB0IHRoZSBpbXBvcnRhbnQgQ3lnbnVzIGNvbmZpZ3VyZSBvcHRpb25zLCBz byB3ZSBjYW4gZGlhZ25vc2UgdHlwb3MuCi0KLSAgY2FzZSAkYWNfZGFzaGRhc2gkYWNfb3B0aW9u IGluCi0gIC0tKQotICAgIGFjX2Rhc2hkYXNoPXllcyA7OwotCi0gIC1iaW5kaXIgfCAtLWJpbmRp ciB8IC0tYmluZGkgfCAtLWJpbmQgfCAtLWJpbiB8IC0tYmkpCi0gICAgYWNfcHJldj1iaW5kaXIg OzsKLSAgLWJpbmRpcj0qIHwgLS1iaW5kaXI9KiB8IC0tYmluZGk9KiB8IC0tYmluZD0qIHwgLS1i aW49KiB8IC0tYmk9KikKLSAgICBiaW5kaXI9JGFjX29wdGFyZyA7OwotCi0gIC1idWlsZCB8IC0t YnVpbGQgfCAtLWJ1aWwgfCAtLWJ1aSB8IC0tYnUpCi0gICAgYWNfcHJldj1idWlsZF9hbGlhcyA7 OwotICAtYnVpbGQ9KiB8IC0tYnVpbGQ9KiB8IC0tYnVpbD0qIHwgLS1idWk9KiB8IC0tYnU9KikK LSAgICBidWlsZF9hbGlhcz0kYWNfb3B0YXJnIDs7Ci0KLSAgLWNhY2hlLWZpbGUgfCAtLWNhY2hl LWZpbGUgfCAtLWNhY2hlLWZpbCB8IC0tY2FjaGUtZmkgXAotICB8IC0tY2FjaGUtZiB8IC0tY2Fj aGUtIHwgLS1jYWNoZSB8IC0tY2FjaCB8IC0tY2FjIHwgLS1jYSB8IC0tYykKLSAgICBhY19wcmV2 PWNhY2hlX2ZpbGUgOzsKLSAgLWNhY2hlLWZpbGU9KiB8IC0tY2FjaGUtZmlsZT0qIHwgLS1jYWNo ZS1maWw9KiB8IC0tY2FjaGUtZmk9KiBcCi0gIHwgLS1jYWNoZS1mPSogfCAtLWNhY2hlLT0qIHwg LS1jYWNoZT0qIHwgLS1jYWNoPSogfCAtLWNhYz0qIHwgLS1jYT0qIHwgLS1jPSopCi0gICAgY2Fj aGVfZmlsZT0kYWNfb3B0YXJnIDs7Ci0KLSAgLS1jb25maWctY2FjaGUgfCAtQykKLSAgICBjYWNo ZV9maWxlPWNvbmZpZy5jYWNoZSA7OwotCi0gIC1kYXRhZGlyIHwgLS1kYXRhZGlyIHwgLS1kYXRh ZGkgfCAtLWRhdGFkKQotICAgIGFjX3ByZXY9ZGF0YWRpciA7OwotICAtZGF0YWRpcj0qIHwgLS1k YXRhZGlyPSogfCAtLWRhdGFkaT0qIHwgLS1kYXRhZD0qKQotICAgIGRhdGFkaXI9JGFjX29wdGFy ZyA7OwotCi0gIC1kYXRhcm9vdGRpciB8IC0tZGF0YXJvb3RkaXIgfCAtLWRhdGFyb290ZGkgfCAt LWRhdGFyb290ZCB8IC0tZGF0YXJvb3QgXAotICB8IC0tZGF0YXJvbyB8IC0tZGF0YXJvIHwgLS1k YXRhcikKLSAgICBhY19wcmV2PWRhdGFyb290ZGlyIDs7Ci0gIC1kYXRhcm9vdGRpcj0qIHwgLS1k YXRhcm9vdGRpcj0qIHwgLS1kYXRhcm9vdGRpPSogfCAtLWRhdGFyb290ZD0qIFwKLSAgfCAtLWRh dGFyb290PSogfCAtLWRhdGFyb289KiB8IC0tZGF0YXJvPSogfCAtLWRhdGFyPSopCi0gICAgZGF0 YXJvb3RkaXI9JGFjX29wdGFyZyA7OwotCi0gIC1kaXNhYmxlLSogfCAtLWRpc2FibGUtKikKLSAg ICBhY191c2Vyb3B0PWBleHByICJ4JGFjX29wdGlvbiIgOiAneC0qZGlzYWJsZS1cKC4qXCknYAot ICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1l cy4KLSAgICBleHByICJ4JGFjX3VzZXJvcHQiIDogIi4qW14tKy5fJGFzX2NyX2FsbnVtXSIgPi9k ZXYvbnVsbCAmJgotICAgICAgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgZmVhdHVyZSBuYW1lOiAk YWNfdXNlcm9wdCIKLSAgICBhY191c2Vyb3B0X29yaWc9JGFjX3VzZXJvcHQKLSAgICBhY191c2Vy b3B0PWAkYXNfZWNobyAiJGFjX3VzZXJvcHQiIHwgc2VkICdzL1stKy5dL18vZydgCi0gICAgY2Fz ZSAkYWNfdXNlcl9vcHRzIGluCi0gICAgICAqIgotImVuYWJsZV8kYWNfdXNlcm9wdCIKLSIqKSA7 OwotICAgICAgKikgYWNfdW5yZWNvZ25pemVkX29wdHM9IiRhY191bnJlY29nbml6ZWRfb3B0cyRh Y191bnJlY29nbml6ZWRfc2VwLS1kaXNhYmxlLSRhY191c2Vyb3B0X29yaWciCi0JIGFjX3VucmVj b2duaXplZF9zZXA9JywgJzs7Ci0gICAgZXNhYwotICAgIGV2YWwgZW5hYmxlXyRhY191c2Vyb3B0 PW5vIDs7Ci0KLSAgLWRvY2RpciB8IC0tZG9jZGlyIHwgLS1kb2NkaSB8IC0tZG9jIHwgLS1kbykK LSAgICBhY19wcmV2PWRvY2RpciA7OwotICAtZG9jZGlyPSogfCAtLWRvY2Rpcj0qIHwgLS1kb2Nk aT0qIHwgLS1kb2M9KiB8IC0tZG89KikKLSAgICBkb2NkaXI9JGFjX29wdGFyZyA7OwotCi0gIC1k dmlkaXIgfCAtLWR2aWRpciB8IC0tZHZpZGkgfCAtLWR2aWQgfCAtLWR2aSB8IC0tZHYpCi0gICAg YWNfcHJldj1kdmlkaXIgOzsKLSAgLWR2aWRpcj0qIHwgLS1kdmlkaXI9KiB8IC0tZHZpZGk9KiB8 IC0tZHZpZD0qIHwgLS1kdmk9KiB8IC0tZHY9KikKLSAgICBkdmlkaXI9JGFjX29wdGFyZyA7Owot Ci0gIC1lbmFibGUtKiB8IC0tZW5hYmxlLSopCi0gICAgYWNfdXNlcm9wdD1gZXhwciAieCRhY19v cHRpb24iIDogJ3gtKmVuYWJsZS1cKFtePV0qXCknYAotICAgICMgUmVqZWN0IG5hbWVzIHRoYXQg YXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4KLSAgICBleHByICJ4JGFjX3VzZXJv cHQiIDogIi4qW14tKy5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgotICAgICAgYXNfZm5f ZXJyb3IgJD8gImludmFsaWQgZmVhdHVyZSBuYW1lOiAkYWNfdXNlcm9wdCIKLSAgICBhY191c2Vy b3B0X29yaWc9JGFjX3VzZXJvcHQKLSAgICBhY191c2Vyb3B0PWAkYXNfZWNobyAiJGFjX3VzZXJv cHQiIHwgc2VkICdzL1stKy5dL18vZydgCi0gICAgY2FzZSAkYWNfdXNlcl9vcHRzIGluCi0gICAg ICAqIgotImVuYWJsZV8kYWNfdXNlcm9wdCIKLSIqKSA7OwotICAgICAgKikgYWNfdW5yZWNvZ25p emVkX29wdHM9IiRhY191bnJlY29nbml6ZWRfb3B0cyRhY191bnJlY29nbml6ZWRfc2VwLS1lbmFi bGUtJGFjX3VzZXJvcHRfb3JpZyIKLQkgYWNfdW5yZWNvZ25pemVkX3NlcD0nLCAnOzsKLSAgICBl c2FjCi0gICAgZXZhbCBlbmFibGVfJGFjX3VzZXJvcHQ9XCRhY19vcHRhcmcgOzsKLQotICAtZXhl Yy1wcmVmaXggfCAtLWV4ZWNfcHJlZml4IHwgLS1leGVjLXByZWZpeCB8IC0tZXhlYy1wcmVmaSBc Ci0gIHwgLS1leGVjLXByZWYgfCAtLWV4ZWMtcHJlIHwgLS1leGVjLXByIHwgLS1leGVjLXAgfCAt LWV4ZWMtIFwKLSAgfCAtLWV4ZWMgfCAtLWV4ZSB8IC0tZXgpCi0gICAgYWNfcHJldj1leGVjX3By ZWZpeCA7OwotICAtZXhlYy1wcmVmaXg9KiB8IC0tZXhlY19wcmVmaXg9KiB8IC0tZXhlYy1wcmVm aXg9KiB8IC0tZXhlYy1wcmVmaT0qIFwKLSAgfCAtLWV4ZWMtcHJlZj0qIHwgLS1leGVjLXByZT0q IHwgLS1leGVjLXByPSogfCAtLWV4ZWMtcD0qIHwgLS1leGVjLT0qIFwKLSAgfCAtLWV4ZWM9KiB8 IC0tZXhlPSogfCAtLWV4PSopCi0gICAgZXhlY19wcmVmaXg9JGFjX29wdGFyZyA7OwotCi0gIC1n YXMgfCAtLWdhcyB8IC0tZ2EgfCAtLWcpCi0gICAgIyBPYnNvbGV0ZTsgdXNlIC0td2l0aC1nYXMu Ci0gICAgd2l0aF9nYXM9eWVzIDs7Ci0KLSAgLWhlbHAgfCAtLWhlbHAgfCAtLWhlbCB8IC0taGUg fCAtaCkKLSAgICBhY19pbml0X2hlbHA9bG9uZyA7OwotICAtaGVscD1yKiB8IC0taGVscD1yKiB8 IC0taGVsPXIqIHwgLS1oZT1yKiB8IC1ociopCi0gICAgYWNfaW5pdF9oZWxwPXJlY3Vyc2l2ZSA7 OwotICAtaGVscD1zKiB8IC0taGVscD1zKiB8IC0taGVsPXMqIHwgLS1oZT1zKiB8IC1ocyopCi0g ICAgYWNfaW5pdF9oZWxwPXNob3J0IDs7Ci0KLSAgLWhvc3QgfCAtLWhvc3QgfCAtLWhvcyB8IC0t aG8pCi0gICAgYWNfcHJldj1ob3N0X2FsaWFzIDs7Ci0gIC1ob3N0PSogfCAtLWhvc3Q9KiB8IC0t aG9zPSogfCAtLWhvPSopCi0gICAgaG9zdF9hbGlhcz0kYWNfb3B0YXJnIDs7Ci0KLSAgLWh0bWxk aXIgfCAtLWh0bWxkaXIgfCAtLWh0bWxkaSB8IC0taHRtbGQgfCAtLWh0bWwgfCAtLWh0bSB8IC0t aHQpCi0gICAgYWNfcHJldj1odG1sZGlyIDs7Ci0gIC1odG1sZGlyPSogfCAtLWh0bWxkaXI9KiB8 IC0taHRtbGRpPSogfCAtLWh0bWxkPSogfCAtLWh0bWw9KiB8IC0taHRtPSogXAotICB8IC0taHQ9 KikKLSAgICBodG1sZGlyPSRhY19vcHRhcmcgOzsKLQotICAtaW5jbHVkZWRpciB8IC0taW5jbHVk ZWRpciB8IC0taW5jbHVkZWRpIHwgLS1pbmNsdWRlZCB8IC0taW5jbHVkZSBcCi0gIHwgLS1pbmNs dWQgfCAtLWluY2x1IHwgLS1pbmNsIHwgLS1pbmMpCi0gICAgYWNfcHJldj1pbmNsdWRlZGlyIDs7 Ci0gIC1pbmNsdWRlZGlyPSogfCAtLWluY2x1ZGVkaXI9KiB8IC0taW5jbHVkZWRpPSogfCAtLWlu Y2x1ZGVkPSogfCAtLWluY2x1ZGU9KiBcCi0gIHwgLS1pbmNsdWQ9KiB8IC0taW5jbHU9KiB8IC0t aW5jbD0qIHwgLS1pbmM9KikKLSAgICBpbmNsdWRlZGlyPSRhY19vcHRhcmcgOzsKLQotICAtaW5m b2RpciB8IC0taW5mb2RpciB8IC0taW5mb2RpIHwgLS1pbmZvZCB8IC0taW5mbyB8IC0taW5mKQot ICAgIGFjX3ByZXY9aW5mb2RpciA7OwotICAtaW5mb2Rpcj0qIHwgLS1pbmZvZGlyPSogfCAtLWlu Zm9kaT0qIHwgLS1pbmZvZD0qIHwgLS1pbmZvPSogfCAtLWluZj0qKQotICAgIGluZm9kaXI9JGFj X29wdGFyZyA7OwotCi0gIC1saWJkaXIgfCAtLWxpYmRpciB8IC0tbGliZGkgfCAtLWxpYmQpCi0g ICAgYWNfcHJldj1saWJkaXIgOzsKLSAgLWxpYmRpcj0qIHwgLS1saWJkaXI9KiB8IC0tbGliZGk9 KiB8IC0tbGliZD0qKQotICAgIGxpYmRpcj0kYWNfb3B0YXJnIDs7Ci0KLSAgLWxpYmV4ZWNkaXIg fCAtLWxpYmV4ZWNkaXIgfCAtLWxpYmV4ZWNkaSB8IC0tbGliZXhlY2QgfCAtLWxpYmV4ZWMgXAot ICB8IC0tbGliZXhlIHwgLS1saWJleCB8IC0tbGliZSkKLSAgICBhY19wcmV2PWxpYmV4ZWNkaXIg OzsKLSAgLWxpYmV4ZWNkaXI9KiB8IC0tbGliZXhlY2Rpcj0qIHwgLS1saWJleGVjZGk9KiB8IC0t bGliZXhlY2Q9KiB8IC0tbGliZXhlYz0qIFwKLSAgfCAtLWxpYmV4ZT0qIHwgLS1saWJleD0qIHwg LS1saWJlPSopCi0gICAgbGliZXhlY2Rpcj0kYWNfb3B0YXJnIDs7Ci0KLSAgLWxvY2FsZWRpciB8 IC0tbG9jYWxlZGlyIHwgLS1sb2NhbGVkaSB8IC0tbG9jYWxlZCB8IC0tbG9jYWxlKQotICAgIGFj X3ByZXY9bG9jYWxlZGlyIDs7Ci0gIC1sb2NhbGVkaXI9KiB8IC0tbG9jYWxlZGlyPSogfCAtLWxv Y2FsZWRpPSogfCAtLWxvY2FsZWQ9KiB8IC0tbG9jYWxlPSopCi0gICAgbG9jYWxlZGlyPSRhY19v cHRhcmcgOzsKLQotICAtbG9jYWxzdGF0ZWRpciB8IC0tbG9jYWxzdGF0ZWRpciB8IC0tbG9jYWxz dGF0ZWRpIHwgLS1sb2NhbHN0YXRlZCBcCi0gIHwgLS1sb2NhbHN0YXRlIHwgLS1sb2NhbHN0YXQg fCAtLWxvY2Fsc3RhIHwgLS1sb2NhbHN0IHwgLS1sb2NhbHMpCi0gICAgYWNfcHJldj1sb2NhbHN0 YXRlZGlyIDs7Ci0gIC1sb2NhbHN0YXRlZGlyPSogfCAtLWxvY2Fsc3RhdGVkaXI9KiB8IC0tbG9j YWxzdGF0ZWRpPSogfCAtLWxvY2Fsc3RhdGVkPSogXAotICB8IC0tbG9jYWxzdGF0ZT0qIHwgLS1s b2NhbHN0YXQ9KiB8IC0tbG9jYWxzdGE9KiB8IC0tbG9jYWxzdD0qIHwgLS1sb2NhbHM9KikKLSAg ICBsb2NhbHN0YXRlZGlyPSRhY19vcHRhcmcgOzsKLQotICAtbWFuZGlyIHwgLS1tYW5kaXIgfCAt LW1hbmRpIHwgLS1tYW5kIHwgLS1tYW4gfCAtLW1hIHwgLS1tKQotICAgIGFjX3ByZXY9bWFuZGly IDs7Ci0gIC1tYW5kaXI9KiB8IC0tbWFuZGlyPSogfCAtLW1hbmRpPSogfCAtLW1hbmQ9KiB8IC0t bWFuPSogfCAtLW1hPSogfCAtLW09KikKLSAgICBtYW5kaXI9JGFjX29wdGFyZyA7OwotCi0gIC1u ZnAgfCAtLW5mcCB8IC0tbmYpCi0gICAgIyBPYnNvbGV0ZTsgdXNlIC0td2l0aG91dC1mcC4KLSAg ICB3aXRoX2ZwPW5vIDs7Ci0KLSAgLW5vLWNyZWF0ZSB8IC0tbm8tY3JlYXRlIHwgLS1uby1jcmVh dCB8IC0tbm8tY3JlYSB8IC0tbm8tY3JlIFwKLSAgfCAtLW5vLWNyIHwgLS1uby1jIHwgLW4pCi0g ICAgbm9fY3JlYXRlPXllcyA7OwotCi0gIC1uby1yZWN1cnNpb24gfCAtLW5vLXJlY3Vyc2lvbiB8 IC0tbm8tcmVjdXJzaW8gfCAtLW5vLXJlY3Vyc2kgXAotICB8IC0tbm8tcmVjdXJzIHwgLS1uby1y ZWN1ciB8IC0tbm8tcmVjdSB8IC0tbm8tcmVjIHwgLS1uby1yZSB8IC0tbm8tcikKLSAgICBub19y ZWN1cnNpb249eWVzIDs7Ci0KLSAgLW9sZGluY2x1ZGVkaXIgfCAtLW9sZGluY2x1ZGVkaXIgfCAt LW9sZGluY2x1ZGVkaSB8IC0tb2xkaW5jbHVkZWQgXAotICB8IC0tb2xkaW5jbHVkZSB8IC0tb2xk aW5jbHVkIHwgLS1vbGRpbmNsdSB8IC0tb2xkaW5jbCB8IC0tb2xkaW5jIFwKLSAgfCAtLW9sZGlu IHwgLS1vbGRpIHwgLS1vbGQgfCAtLW9sIHwgLS1vKQotICAgIGFjX3ByZXY9b2xkaW5jbHVkZWRp ciA7OwotICAtb2xkaW5jbHVkZWRpcj0qIHwgLS1vbGRpbmNsdWRlZGlyPSogfCAtLW9sZGluY2x1 ZGVkaT0qIHwgLS1vbGRpbmNsdWRlZD0qIFwKLSAgfCAtLW9sZGluY2x1ZGU9KiB8IC0tb2xkaW5j bHVkPSogfCAtLW9sZGluY2x1PSogfCAtLW9sZGluY2w9KiB8IC0tb2xkaW5jPSogXAotICB8IC0t b2xkaW49KiB8IC0tb2xkaT0qIHwgLS1vbGQ9KiB8IC0tb2w9KiB8IC0tbz0qKQotICAgIG9sZGlu Y2x1ZGVkaXI9JGFjX29wdGFyZyA7OwotCi0gIC1wcmVmaXggfCAtLXByZWZpeCB8IC0tcHJlZmkg fCAtLXByZWYgfCAtLXByZSB8IC0tcHIgfCAtLXApCi0gICAgYWNfcHJldj1wcmVmaXggOzsKLSAg LXByZWZpeD0qIHwgLS1wcmVmaXg9KiB8IC0tcHJlZmk9KiB8IC0tcHJlZj0qIHwgLS1wcmU9KiB8 IC0tcHI9KiB8IC0tcD0qKQotICAgIHByZWZpeD0kYWNfb3B0YXJnIDs7Ci0KLSAgLXByb2dyYW0t cHJlZml4IHwgLS1wcm9ncmFtLXByZWZpeCB8IC0tcHJvZ3JhbS1wcmVmaSB8IC0tcHJvZ3JhbS1w cmVmIFwKLSAgfCAtLXByb2dyYW0tcHJlIHwgLS1wcm9ncmFtLXByIHwgLS1wcm9ncmFtLXApCi0g ICAgYWNfcHJldj1wcm9ncmFtX3ByZWZpeCA7OwotICAtcHJvZ3JhbS1wcmVmaXg9KiB8IC0tcHJv Z3JhbS1wcmVmaXg9KiB8IC0tcHJvZ3JhbS1wcmVmaT0qIFwKLSAgfCAtLXByb2dyYW0tcHJlZj0q IHwgLS1wcm9ncmFtLXByZT0qIHwgLS1wcm9ncmFtLXByPSogfCAtLXByb2dyYW0tcD0qKQotICAg IHByb2dyYW1fcHJlZml4PSRhY19vcHRhcmcgOzsKLQotICAtcHJvZ3JhbS1zdWZmaXggfCAtLXBy b2dyYW0tc3VmZml4IHwgLS1wcm9ncmFtLXN1ZmZpIHwgLS1wcm9ncmFtLXN1ZmYgXAotICB8IC0t cHJvZ3JhbS1zdWYgfCAtLXByb2dyYW0tc3UgfCAtLXByb2dyYW0tcykKLSAgICBhY19wcmV2PXBy b2dyYW1fc3VmZml4IDs7Ci0gIC1wcm9ncmFtLXN1ZmZpeD0qIHwgLS1wcm9ncmFtLXN1ZmZpeD0q IHwgLS1wcm9ncmFtLXN1ZmZpPSogXAotICB8IC0tcHJvZ3JhbS1zdWZmPSogfCAtLXByb2dyYW0t c3VmPSogfCAtLXByb2dyYW0tc3U9KiB8IC0tcHJvZ3JhbS1zPSopCi0gICAgcHJvZ3JhbV9zdWZm aXg9JGFjX29wdGFyZyA7OwotCi0gIC1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lIHwgLS1wcm9ncmFt LXRyYW5zZm9ybS1uYW1lIFwKLSAgfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbSB8IC0tcHJvZ3Jh bS10cmFuc2Zvcm0tbmEgXAotICB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbiB8IC0tcHJvZ3JhbS10 cmFuc2Zvcm0tIFwKLSAgfCAtLXByb2dyYW0tdHJhbnNmb3JtIHwgLS1wcm9ncmFtLXRyYW5zZm9y IFwKLSAgfCAtLXByb2dyYW0tdHJhbnNmbyB8IC0tcHJvZ3JhbS10cmFuc2YgXAotICB8IC0tcHJv Z3JhbS10cmFucyB8IC0tcHJvZ3JhbS10cmFuIFwKLSAgfCAtLXByb2dyLXRyYSB8IC0tcHJvZ3Jh bS10ciB8IC0tcHJvZ3JhbS10KQotICAgIGFjX3ByZXY9cHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSA7 OwotICAtcHJvZ3JhbS10cmFuc2Zvcm0tbmFtZT0qIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYW1l PSogXAotICB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmFtPSogfCAtLXByb2dyYW0tdHJhbnNmb3Jt LW5hPSogXAotICB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbj0qIHwgLS1wcm9ncmFtLXRyYW5zZm9y bS09KiBcCi0gIHwgLS1wcm9ncmFtLXRyYW5zZm9ybT0qIHwgLS1wcm9ncmFtLXRyYW5zZm9yPSog XAotICB8IC0tcHJvZ3JhbS10cmFuc2ZvPSogfCAtLXByb2dyYW0tdHJhbnNmPSogXAotICB8IC0t cHJvZ3JhbS10cmFucz0qIHwgLS1wcm9ncmFtLXRyYW49KiBcCi0gIHwgLS1wcm9nci10cmE9KiB8 IC0tcHJvZ3JhbS10cj0qIHwgLS1wcm9ncmFtLXQ9KikKLSAgICBwcm9ncmFtX3RyYW5zZm9ybV9u YW1lPSRhY19vcHRhcmcgOzsKLQotICAtcGRmZGlyIHwgLS1wZGZkaXIgfCAtLXBkZmRpIHwgLS1w ZGZkIHwgLS1wZGYgfCAtLXBkKQotICAgIGFjX3ByZXY9cGRmZGlyIDs7Ci0gIC1wZGZkaXI9KiB8 IC0tcGRmZGlyPSogfCAtLXBkZmRpPSogfCAtLXBkZmQ9KiB8IC0tcGRmPSogfCAtLXBkPSopCi0g ICAgcGRmZGlyPSRhY19vcHRhcmcgOzsKLQotICAtcHNkaXIgfCAtLXBzZGlyIHwgLS1wc2RpIHwg LS1wc2QgfCAtLXBzKQotICAgIGFjX3ByZXY9cHNkaXIgOzsKLSAgLXBzZGlyPSogfCAtLXBzZGly PSogfCAtLXBzZGk9KiB8IC0tcHNkPSogfCAtLXBzPSopCi0gICAgcHNkaXI9JGFjX29wdGFyZyA7 OwotCi0gIC1xIHwgLXF1aWV0IHwgLS1xdWlldCB8IC0tcXVpZSB8IC0tcXVpIHwgLS1xdSB8IC0t cSBcCi0gIHwgLXNpbGVudCB8IC0tc2lsZW50IHwgLS1zaWxlbiB8IC0tc2lsZSB8IC0tc2lsKQot ICAgIHNpbGVudD15ZXMgOzsKLQotICAtcnVuc3RhdGVkaXIgfCAtLXJ1bnN0YXRlZGlyIHwgLS1y dW5zdGF0ZWRpIHwgLS1ydW5zdGF0ZWQgXAotICB8IC0tcnVuc3RhdGUgfCAtLXJ1bnN0YXQgfCAt LXJ1bnN0YSB8IC0tcnVuc3QgfCAtLXJ1bnMgXAotICB8IC0tcnVuIHwgLS1ydSB8IC0tcikKLSAg ICBhY19wcmV2PXJ1bnN0YXRlZGlyIDs7Ci0gIC1ydW5zdGF0ZWRpcj0qIHwgLS1ydW5zdGF0ZWRp cj0qIHwgLS1ydW5zdGF0ZWRpPSogfCAtLXJ1bnN0YXRlZD0qIFwKLSAgfCAtLXJ1bnN0YXRlPSog fCAtLXJ1bnN0YXQ9KiB8IC0tcnVuc3RhPSogfCAtLXJ1bnN0PSogfCAtLXJ1bnM9KiBcCi0gIHwg LS1ydW49KiB8IC0tcnU9KiB8IC0tcj0qKQotICAgIHJ1bnN0YXRlZGlyPSRhY19vcHRhcmcgOzsK LQotICAtc2JpbmRpciB8IC0tc2JpbmRpciB8IC0tc2JpbmRpIHwgLS1zYmluZCB8IC0tc2JpbiB8 IC0tc2JpIHwgLS1zYikKLSAgICBhY19wcmV2PXNiaW5kaXIgOzsKLSAgLXNiaW5kaXI9KiB8IC0t c2JpbmRpcj0qIHwgLS1zYmluZGk9KiB8IC0tc2JpbmQ9KiB8IC0tc2Jpbj0qIFwKLSAgfCAtLXNi aT0qIHwgLS1zYj0qKQotICAgIHNiaW5kaXI9JGFjX29wdGFyZyA7OwotCi0gIC1zaGFyZWRzdGF0 ZWRpciB8IC0tc2hhcmVkc3RhdGVkaXIgfCAtLXNoYXJlZHN0YXRlZGkgXAotICB8IC0tc2hhcmVk c3RhdGVkIHwgLS1zaGFyZWRzdGF0ZSB8IC0tc2hhcmVkc3RhdCB8IC0tc2hhcmVkc3RhIFwKLSAg fCAtLXNoYXJlZHN0IHwgLS1zaGFyZWRzIHwgLS1zaGFyZWQgfCAtLXNoYXJlIHwgLS1zaGFyIFwK LSAgfCAtLXNoYSB8IC0tc2gpCi0gICAgYWNfcHJldj1zaGFyZWRzdGF0ZWRpciA7OwotICAtc2hh cmVkc3RhdGVkaXI9KiB8IC0tc2hhcmVkc3RhdGVkaXI9KiB8IC0tc2hhcmVkc3RhdGVkaT0qIFwK LSAgfCAtLXNoYXJlZHN0YXRlZD0qIHwgLS1zaGFyZWRzdGF0ZT0qIHwgLS1zaGFyZWRzdGF0PSog fCAtLXNoYXJlZHN0YT0qIFwKLSAgfCAtLXNoYXJlZHN0PSogfCAtLXNoYXJlZHM9KiB8IC0tc2hh cmVkPSogfCAtLXNoYXJlPSogfCAtLXNoYXI9KiBcCi0gIHwgLS1zaGE9KiB8IC0tc2g9KikKLSAg ICBzaGFyZWRzdGF0ZWRpcj0kYWNfb3B0YXJnIDs7Ci0KLSAgLXNpdGUgfCAtLXNpdGUgfCAtLXNp dCkKLSAgICBhY19wcmV2PXNpdGUgOzsKLSAgLXNpdGU9KiB8IC0tc2l0ZT0qIHwgLS1zaXQ9KikK LSAgICBzaXRlPSRhY19vcHRhcmcgOzsKLQotICAtc3JjZGlyIHwgLS1zcmNkaXIgfCAtLXNyY2Rp IHwgLS1zcmNkIHwgLS1zcmMgfCAtLXNyKQotICAgIGFjX3ByZXY9c3JjZGlyIDs7Ci0gIC1zcmNk aXI9KiB8IC0tc3JjZGlyPSogfCAtLXNyY2RpPSogfCAtLXNyY2Q9KiB8IC0tc3JjPSogfCAtLXNy PSopCi0gICAgc3JjZGlyPSRhY19vcHRhcmcgOzsKLQotICAtc3lzY29uZmRpciB8IC0tc3lzY29u ZmRpciB8IC0tc3lzY29uZmRpIHwgLS1zeXNjb25mZCB8IC0tc3lzY29uZiBcCi0gIHwgLS1zeXNj b24gfCAtLXN5c2NvIHwgLS1zeXNjIHwgLS1zeXMgfCAtLXN5KQotICAgIGFjX3ByZXY9c3lzY29u ZmRpciA7OwotICAtc3lzY29uZmRpcj0qIHwgLS1zeXNjb25mZGlyPSogfCAtLXN5c2NvbmZkaT0q IHwgLS1zeXNjb25mZD0qIHwgLS1zeXNjb25mPSogXAotICB8IC0tc3lzY29uPSogfCAtLXN5c2Nv PSogfCAtLXN5c2M9KiB8IC0tc3lzPSogfCAtLXN5PSopCi0gICAgc3lzY29uZmRpcj0kYWNfb3B0 YXJnIDs7Ci0KLSAgLXRhcmdldCB8IC0tdGFyZ2V0IHwgLS10YXJnZSB8IC0tdGFyZyB8IC0tdGFy IHwgLS10YSB8IC0tdCkKLSAgICBhY19wcmV2PXRhcmdldF9hbGlhcyA7OwotICAtdGFyZ2V0PSog fCAtLXRhcmdldD0qIHwgLS10YXJnZT0qIHwgLS10YXJnPSogfCAtLXRhcj0qIHwgLS10YT0qIHwg LS10PSopCi0gICAgdGFyZ2V0X2FsaWFzPSRhY19vcHRhcmcgOzsKLQotICAtdiB8IC12ZXJib3Nl IHwgLS12ZXJib3NlIHwgLS12ZXJib3MgfCAtLXZlcmJvIHwgLS12ZXJiKQotICAgIHZlcmJvc2U9 eWVzIDs7Ci0KLSAgLXZlcnNpb24gfCAtLXZlcnNpb24gfCAtLXZlcnNpbyB8IC0tdmVyc2kgfCAt LXZlcnMgfCAtVikKLSAgICBhY19pbml0X3ZlcnNpb249OiA7OwotCi0gIC13aXRoLSogfCAtLXdp dGgtKikKLSAgICBhY191c2Vyb3B0PWBleHByICJ4JGFjX29wdGlvbiIgOiAneC0qd2l0aC1cKFte PV0qXCknYAotICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJp YWJsZSBuYW1lcy4KLSAgICBleHByICJ4JGFjX3VzZXJvcHQiIDogIi4qW14tKy5fJGFzX2NyX2Fs bnVtXSIgPi9kZXYvbnVsbCAmJgotICAgICAgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgcGFja2Fn ZSBuYW1lOiAkYWNfdXNlcm9wdCIKLSAgICBhY191c2Vyb3B0X29yaWc9JGFjX3VzZXJvcHQKLSAg ICBhY191c2Vyb3B0PWAkYXNfZWNobyAiJGFjX3VzZXJvcHQiIHwgc2VkICdzL1stKy5dL18vZydg Ci0gICAgY2FzZSAkYWNfdXNlcl9vcHRzIGluCi0gICAgICAqIgotIndpdGhfJGFjX3VzZXJvcHQi Ci0iKikgOzsKLSAgICAgICopIGFjX3VucmVjb2duaXplZF9vcHRzPSIkYWNfdW5yZWNvZ25pemVk X29wdHMkYWNfdW5yZWNvZ25pemVkX3NlcC0td2l0aC0kYWNfdXNlcm9wdF9vcmlnIgotCSBhY191 bnJlY29nbml6ZWRfc2VwPScsICc7OwotICAgIGVzYWMKLSAgICBldmFsIHdpdGhfJGFjX3VzZXJv cHQ9XCRhY19vcHRhcmcgOzsKLQotICAtd2l0aG91dC0qIHwgLS13aXRob3V0LSopCi0gICAgYWNf dXNlcm9wdD1gZXhwciAieCRhY19vcHRpb24iIDogJ3gtKndpdGhvdXQtXCguKlwpJ2AKLSAgICAj IFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCi0g ICAgZXhwciAieCRhY191c2Vyb3B0IiA6ICIuKlteLSsuXyRhc19jcl9hbG51bV0iID4vZGV2L251 bGwgJiYKLSAgICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHBhY2thZ2UgbmFtZTogJGFjX3Vz ZXJvcHQiCi0gICAgYWNfdXNlcm9wdF9vcmlnPSRhY191c2Vyb3B0Ci0gICAgYWNfdXNlcm9wdD1g JGFzX2VjaG8gIiRhY191c2Vyb3B0IiB8IHNlZCAncy9bLSsuXS9fL2cnYAotICAgIGNhc2UgJGFj X3VzZXJfb3B0cyBpbgotICAgICAgKiIKLSJ3aXRoXyRhY191c2Vyb3B0IgotIiopIDs7Ci0gICAg ICAqKSBhY191bnJlY29nbml6ZWRfb3B0cz0iJGFjX3VucmVjb2duaXplZF9vcHRzJGFjX3VucmVj b2duaXplZF9zZXAtLXdpdGhvdXQtJGFjX3VzZXJvcHRfb3JpZyIKLQkgYWNfdW5yZWNvZ25pemVk X3NlcD0nLCAnOzsKLSAgICBlc2FjCi0gICAgZXZhbCB3aXRoXyRhY191c2Vyb3B0PW5vIDs7Ci0K LSAgLS14KQotICAgICMgT2Jzb2xldGU7IHVzZSAtLXdpdGgteC4KLSAgICB3aXRoX3g9eWVzIDs7 Ci0KLSAgLXgtaW5jbHVkZXMgfCAtLXgtaW5jbHVkZXMgfCAtLXgtaW5jbHVkZSB8IC0teC1pbmNs dWQgfCAtLXgtaW5jbHUgXAotICB8IC0teC1pbmNsIHwgLS14LWluYyB8IC0teC1pbiB8IC0teC1p KQotICAgIGFjX3ByZXY9eF9pbmNsdWRlcyA7OwotICAteC1pbmNsdWRlcz0qIHwgLS14LWluY2x1 ZGVzPSogfCAtLXgtaW5jbHVkZT0qIHwgLS14LWluY2x1ZD0qIHwgLS14LWluY2x1PSogXAotICB8 IC0teC1pbmNsPSogfCAtLXgtaW5jPSogfCAtLXgtaW49KiB8IC0teC1pPSopCi0gICAgeF9pbmNs dWRlcz0kYWNfb3B0YXJnIDs7Ci0KLSAgLXgtbGlicmFyaWVzIHwgLS14LWxpYnJhcmllcyB8IC0t eC1saWJyYXJpZSB8IC0teC1saWJyYXJpIFwKLSAgfCAtLXgtbGlicmFyIHwgLS14LWxpYnJhIHwg LS14LWxpYnIgfCAtLXgtbGliIHwgLS14LWxpIHwgLS14LWwpCi0gICAgYWNfcHJldj14X2xpYnJh cmllcyA7OwotICAteC1saWJyYXJpZXM9KiB8IC0teC1saWJyYXJpZXM9KiB8IC0teC1saWJyYXJp ZT0qIHwgLS14LWxpYnJhcmk9KiBcCi0gIHwgLS14LWxpYnJhcj0qIHwgLS14LWxpYnJhPSogfCAt LXgtbGlicj0qIHwgLS14LWxpYj0qIHwgLS14LWxpPSogfCAtLXgtbD0qKQotICAgIHhfbGlicmFy aWVzPSRhY19vcHRhcmcgOzsKLQotICAtKikgYXNfZm5fZXJyb3IgJD8gInVucmVjb2duaXplZCBv cHRpb246IFxgJGFjX29wdGlvbicKLVRyeSBcYCQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRp b24iCi0gICAgOzsKLQotICAqPSopCi0gICAgYWNfZW52dmFyPWBleHByICJ4JGFjX29wdGlvbiIg OiAneFwoW149XSpcKT0nYAotICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBz aGVsbCB2YXJpYWJsZSBuYW1lcy4KLSAgICBjYXNlICRhY19lbnZ2YXIgaW4gIygKLSAgICAgICcn IHwgWzAtOV0qIHwgKlshXyRhc19jcl9hbG51bV0qICkKLSAgICAgIGFzX2ZuX2Vycm9yICQ/ICJp bnZhbGlkIHZhcmlhYmxlIG5hbWU6IFxgJGFjX2VudnZhciciIDs7Ci0gICAgZXNhYwotICAgIGV2 YWwgJGFjX2VudnZhcj1cJGFjX29wdGFyZwotICAgIGV4cG9ydCAkYWNfZW52dmFyIDs7Ci0KLSAg KikKLSAgICAjIEZJWE1FOiBzaG91bGQgYmUgcmVtb3ZlZCBpbiBhdXRvY29uZiAzLjAuCi0gICAg JGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogeW91IHNob3VsZCB1c2UgLS1idWlsZCwgLS1ob3N0 LCAtLXRhcmdldCIgPiYyCi0gICAgZXhwciAieCRhY19vcHRpb24iIDogIi4qW14tLl8kYXNfY3Jf YWxudW1dIiA+L2Rldi9udWxsICYmCi0gICAgICAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBp bnZhbGlkIGhvc3QgdHlwZTogJGFjX29wdGlvbiIgPiYyCi0gICAgOiAiJHtidWlsZF9hbGlhcz0k YWNfb3B0aW9ufSAke2hvc3RfYWxpYXM9JGFjX29wdGlvbn0gJHt0YXJnZXRfYWxpYXM9JGFjX29w dGlvbn0iCi0gICAgOzsKLQotICBlc2FjCi1kb25lCi0KLWlmIHRlc3QgLW4gIiRhY19wcmV2Ijsg dGhlbgotICBhY19vcHRpb249LS1gZWNobyAkYWNfcHJldiB8IHNlZCAncy9fLy0vZydgCi0gIGFz X2ZuX2Vycm9yICQ/ICJtaXNzaW5nIGFyZ3VtZW50IHRvICRhY19vcHRpb24iCi1maQotCi1pZiB0 ZXN0IC1uICIkYWNfdW5yZWNvZ25pemVkX29wdHMiOyB0aGVuCi0gIGNhc2UgJGVuYWJsZV9vcHRp b25fY2hlY2tpbmcgaW4KLSAgICBubykgOzsKLSAgICBmYXRhbCkgYXNfZm5fZXJyb3IgJD8gInVu cmVjb2duaXplZCBvcHRpb25zOiAkYWNfdW5yZWNvZ25pemVkX29wdHMiIDs7Ci0gICAgKikgICAg ICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVucmVjb2duaXplZCBvcHRpb25zOiAkYWNfdW5y ZWNvZ25pemVkX29wdHMiID4mMiA7OwotICBlc2FjCi1maQotCi0jIENoZWNrIGFsbCBkaXJlY3Rv cnkgYXJndW1lbnRzIGZvciBjb25zaXN0ZW5jeS4KLWZvciBhY192YXIgaW4JZXhlY19wcmVmaXgg cHJlZml4IGJpbmRpciBzYmluZGlyIGxpYmV4ZWNkaXIgZGF0YXJvb3RkaXIgXAotCQlkYXRhZGly IHN5c2NvbmZkaXIgc2hhcmVkc3RhdGVkaXIgbG9jYWxzdGF0ZWRpciBpbmNsdWRlZGlyIFwKLQkJ b2xkaW5jbHVkZWRpciBkb2NkaXIgaW5mb2RpciBodG1sZGlyIGR2aWRpciBwZGZkaXIgcHNkaXIg XAotCQlsaWJkaXIgbG9jYWxlZGlyIG1hbmRpciBydW5zdGF0ZWRpcgotZG8KLSAgZXZhbCBhY192 YWw9XCQkYWNfdmFyCi0gICMgUmVtb3ZlIHRyYWlsaW5nIHNsYXNoZXMuCi0gIGNhc2UgJGFjX3Zh bCBpbgotICAgICovICkKLSAgICAgIGFjX3ZhbD1gZXhwciAiWCRhY192YWwiIDogJ1hcKC4qW14v XVwpJyBcfCAiWCRhY192YWwiIDogJ1hcKC4qXCknYAotICAgICAgZXZhbCAkYWNfdmFyPVwkYWNf dmFsOzsKLSAgZXNhYwotICAjIEJlIHN1cmUgdG8gaGF2ZSBhYnNvbHV0ZSBkaXJlY3RvcnkgbmFt ZXMuCi0gIGNhc2UgJGFjX3ZhbCBpbgotICAgIFtcXC8kXSogfCA/OltcXC9dKiApICBjb250aW51 ZTs7Ci0gICAgTk9ORSB8ICcnICkgY2FzZSAkYWNfdmFyIGluICpwcmVmaXggKSBjb250aW51ZTs7 IGVzYWM7OwotICBlc2FjCi0gIGFzX2ZuX2Vycm9yICQ/ICJleHBlY3RlZCBhbiBhYnNvbHV0ZSBk aXJlY3RvcnkgbmFtZSBmb3IgLS0kYWNfdmFyOiAkYWNfdmFsIgotZG9uZQotCi0jIFRoZXJlIG1p Z2h0IGJlIHBlb3BsZSB3aG8gZGVwZW5kIG9uIHRoZSBvbGQgYnJva2VuIGJlaGF2aW9yOiBgJGhv c3QnCi0jIHVzZWQgdG8gaG9sZCB0aGUgYXJndW1lbnQgb2YgLS1ob3N0IGV0Yy4KLSMgRklYTUU6 IFRvIHJlbW92ZSBzb21lIGRheS4KLWJ1aWxkPSRidWlsZF9hbGlhcwotaG9zdD0kaG9zdF9hbGlh cwotdGFyZ2V0PSR0YXJnZXRfYWxpYXMKLQotIyBGSVhNRTogVG8gcmVtb3ZlIHNvbWUgZGF5Lgot aWYgdGVzdCAieCRob3N0X2FsaWFzIiAhPSB4OyB0aGVuCi0gIGlmIHRlc3QgIngkYnVpbGRfYWxp YXMiID0geDsgdGhlbgotICAgIGNyb3NzX2NvbXBpbGluZz1tYXliZQotICBlbGlmIHRlc3QgIngk YnVpbGRfYWxpYXMiICE9ICJ4JGhvc3RfYWxpYXMiOyB0aGVuCi0gICAgY3Jvc3NfY29tcGlsaW5n PXllcwotICBmaQotZmkKLQotYWNfdG9vbF9wcmVmaXg9Ci10ZXN0IC1uICIkaG9zdF9hbGlhcyIg JiYgYWNfdG9vbF9wcmVmaXg9JGhvc3RfYWxpYXMtCi0KLXRlc3QgIiRzaWxlbnQiID0geWVzICYm IGV4ZWMgNj4vZGV2L251bGwKLQotCi1hY19wd2Q9YHB3ZGAgJiYgdGVzdCAtbiAiJGFjX3B3ZCIg JiYKLWFjX2xzX2RpPWBscyAtZGkgLmAgJiYKLWFjX3B3ZF9sc19kaT1gY2QgIiRhY19wd2QiICYm IGxzIC1kaSAuYCB8fAotICBhc19mbl9lcnJvciAkPyAid29ya2luZyBkaXJlY3RvcnkgY2Fubm90 IGJlIGRldGVybWluZWQiCi10ZXN0ICJYJGFjX2xzX2RpIiA9ICJYJGFjX3B3ZF9sc19kaSIgfHwK LSAgYXNfZm5fZXJyb3IgJD8gInB3ZCBkb2VzIG5vdCByZXBvcnQgbmFtZSBvZiB3b3JraW5nIGRp cmVjdG9yeSIKLQotCi0jIEZpbmQgdGhlIHNvdXJjZSBmaWxlcywgaWYgbG9jYXRpb24gd2FzIG5v dCBzcGVjaWZpZWQuCi1pZiB0ZXN0IC16ICIkc3JjZGlyIjsgdGhlbgotICBhY19zcmNkaXJfZGVm YXVsdGVkPXllcwotICAjIFRyeSB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhpcyBzY3JpcHQs IHRoZW4gdGhlIHBhcmVudCBkaXJlY3RvcnkuCi0gIGFjX2NvbmZkaXI9YCRhc19kaXJuYW1lIC0t ICIkYXNfbXlzZWxmIiB8fAotJGFzX2V4cHIgWCIkYXNfbXlzZWxmIiA6ICdYXCguKlteL11cKS8v KlteL11bXi9dKi8qJCcgXHwgXAotCSBYIiRhc19teXNlbGYiIDogJ1hcKC8vXClbXi9dJyBcfCBc Ci0JIFgiJGFzX215c2VsZiIgOiAnWFwoLy9cKSQnIFx8IFwKLQkgWCIkYXNfbXlzZWxmIiA6ICdY XCgvXCknIFx8IC4gMj4vZGV2L251bGwgfHwKLSRhc19lY2hvIFgiJGFzX215c2VsZiIgfAotICAg IHNlZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97Ci0JICAgIHMvL1wxLwotCSAg ICBxCi0JICB9Ci0JICAvXlhcKFwvXC9cKVteL10uKi97Ci0JICAgIHMvL1wxLwotCSAgICBxCi0J ICB9Ci0JICAvXlhcKFwvXC9cKSQvewotCSAgICBzLy9cMS8KLQkgICAgcQotCSAgfQotCSAgL15Y XChcL1wpLiovewotCSAgICBzLy9cMS8KLQkgICAgcQotCSAgfQotCSAgcy8uKi8uLzsgcSdgCi0g IHNyY2Rpcj0kYWNfY29uZmRpcgotICBpZiB0ZXN0ICEgLXIgIiRzcmNkaXIvJGFjX3VuaXF1ZV9m aWxlIjsgdGhlbgotICAgIHNyY2Rpcj0uLgotICBmaQotZWxzZQotICBhY19zcmNkaXJfZGVmYXVs dGVkPW5vCi1maQotaWYgdGVzdCAhIC1yICIkc3JjZGlyLyRhY191bmlxdWVfZmlsZSI7IHRoZW4K LSAgdGVzdCAiJGFjX3NyY2Rpcl9kZWZhdWx0ZWQiID0geWVzICYmIHNyY2Rpcj0iJGFjX2NvbmZk aXIgb3IgLi4iCi0gIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgZmluZCBzb3VyY2VzICgkYWNfdW5p cXVlX2ZpbGUpIGluICRzcmNkaXIiCi1maQotYWNfbXNnPSJzb3VyY2VzIGFyZSBpbiAkc3JjZGly LCBidXQgXGBjZCAkc3JjZGlyJyBkb2VzIG5vdCB3b3JrIgotYWNfYWJzX2NvbmZkaXI9YCgKLQlj ZCAiJHNyY2RpciIgJiYgdGVzdCAtciAiLi8kYWNfdW5pcXVlX2ZpbGUiIHx8IGFzX2ZuX2Vycm9y ICQ/ICIkYWNfbXNnIgotCXB3ZClgCi0jIFdoZW4gYnVpbGRpbmcgaW4gcGxhY2UsIHNldCBzcmNk aXI9LgotaWYgdGVzdCAiJGFjX2Fic19jb25mZGlyIiA9ICIkYWNfcHdkIjsgdGhlbgotICBzcmNk aXI9LgotZmkKLSMgUmVtb3ZlIHVubmVjZXNzYXJ5IHRyYWlsaW5nIHNsYXNoZXMgZnJvbSBzcmNk aXIuCi0jIERvdWJsZSBzbGFzaGVzIGluIGZpbGUgbmFtZXMgaW4gb2JqZWN0IGZpbGUgZGVidWdn aW5nIGluZm8KLSMgbWVzcyB1cCBNLXggZ2RiIGluIEVtYWNzLgotY2FzZSAkc3JjZGlyIGluCi0q Lykgc3JjZGlyPWBleHByICJYJHNyY2RpciIgOiAnWFwoLipbXi9dXCknIFx8ICJYJHNyY2RpciIg OiAnWFwoLipcKSdgOzsKLWVzYWMKLWZvciBhY192YXIgaW4gJGFjX3ByZWNpb3VzX3ZhcnM7IGRv Ci0gIGV2YWwgYWNfZW52XyR7YWNfdmFyfV9zZXQ9XCR7JHthY192YXJ9K3NldH0KLSAgZXZhbCBh Y19lbnZfJHthY192YXJ9X3ZhbHVlPVwkJHthY192YXJ9Ci0gIGV2YWwgYWNfY3ZfZW52XyR7YWNf dmFyfV9zZXQ9XCR7JHthY192YXJ9K3NldH0KLSAgZXZhbCBhY19jdl9lbnZfJHthY192YXJ9X3Zh bHVlPVwkJHthY192YXJ9Ci1kb25lCi0KLSMKLSMgUmVwb3J0IHRoZSAtLWhlbHAgbWVzc2FnZS4K LSMKLWlmIHRlc3QgIiRhY19pbml0X2hlbHAiID0gImxvbmciOyB0aGVuCi0gICMgT21pdCBzb21l IGludGVybmFsIG9yIG9ic29sZXRlIG9wdGlvbnMgdG8gbWFrZSB0aGUgbGlzdCBsZXNzIGltcG9z aW5nLgotICAjIFRoaXMgbWVzc2FnZSBpcyB0b28gbG9uZyB0byBiZSBhIHN0cmluZyBpbiB0aGUg QS9VWCAzLjEgc2guCi0gIGNhdCA8PF9BQ0VPRgotXGBjb25maWd1cmUnIGNvbmZpZ3VyZXMgWGVu IEh5cGVydmlzb3IgVG9vbHMgNC4xMyB0byBhZGFwdCB0byBtYW55IGtpbmRzIG9mIHN5c3RlbXMu Ci0KLVVzYWdlOiAkMCBbT1BUSU9OXS4uLiBbVkFSPVZBTFVFXS4uLgotCi1UbyBhc3NpZ24gZW52 aXJvbm1lbnQgdmFyaWFibGVzIChlLmcuLCBDQywgQ0ZMQUdTLi4uKSwgc3BlY2lmeSB0aGVtIGFz Ci1WQVI9VkFMVUUuICBTZWUgYmVsb3cgZm9yIGRlc2NyaXB0aW9ucyBvZiBzb21lIG9mIHRoZSB1 c2VmdWwgdmFyaWFibGVzLgotCi1EZWZhdWx0cyBmb3IgdGhlIG9wdGlvbnMgYXJlIHNwZWNpZmll ZCBpbiBicmFja2V0cy4KLQotQ29uZmlndXJhdGlvbjoKLSAgLWgsIC0taGVscCAgICAgICAgICAg ICAgZGlzcGxheSB0aGlzIGhlbHAgYW5kIGV4aXQKLSAgICAgIC0taGVscD1zaG9ydCAgICAgICAg ZGlzcGxheSBvcHRpb25zIHNwZWNpZmljIHRvIHRoaXMgcGFja2FnZQotICAgICAgLS1oZWxwPXJl Y3Vyc2l2ZSAgICBkaXNwbGF5IHRoZSBzaG9ydCBoZWxwIG9mIGFsbCB0aGUgaW5jbHVkZWQgcGFj a2FnZXMKLSAgLVYsIC0tdmVyc2lvbiAgICAgICAgICAgZGlzcGxheSB2ZXJzaW9uIGluZm9ybWF0 aW9uIGFuZCBleGl0Ci0gIC1xLCAtLXF1aWV0LCAtLXNpbGVudCAgIGRvIG5vdCBwcmludCBcYGNo ZWNraW5nIC4uLicgbWVzc2FnZXMKLSAgICAgIC0tY2FjaGUtZmlsZT1GSUxFICAgY2FjaGUgdGVz dCByZXN1bHRzIGluIEZJTEUgW2Rpc2FibGVkXQotICAtQywgLS1jb25maWctY2FjaGUgICAgICBh bGlhcyBmb3IgXGAtLWNhY2hlLWZpbGU9Y29uZmlnLmNhY2hlJwotICAtbiwgLS1uby1jcmVhdGUg ICAgICAgICBkbyBub3QgY3JlYXRlIG91dHB1dCBmaWxlcwotICAgICAgLS1zcmNkaXI9RElSICAg ICAgICBmaW5kIHRoZSBzb3VyY2VzIGluIERJUiBbY29uZmlndXJlIGRpciBvciBcYC4uJ10KLQot SW5zdGFsbGF0aW9uIGRpcmVjdG9yaWVzOgotICAtLXByZWZpeD1QUkVGSVggICAgICAgICBpbnN0 YWxsIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBmaWxlcyBpbiBQUkVGSVgKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgWyRhY19kZWZhdWx0X3ByZWZpeF0KLSAgLS1leGVjLXByZWZpeD1FUFJF RklYICAgaW5zdGFsbCBhcmNoaXRlY3R1cmUtZGVwZW5kZW50IGZpbGVzIGluIEVQUkVGSVgKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgW1BSRUZJWF0KLQotQnkgZGVmYXVsdCwgXGBtYWtlIGlu c3RhbGwnIHdpbGwgaW5zdGFsbCBhbGwgdGhlIGZpbGVzIGluCi1cYCRhY19kZWZhdWx0X3ByZWZp eC9iaW4nLCBcYCRhY19kZWZhdWx0X3ByZWZpeC9saWInIGV0Yy4gIFlvdSBjYW4gc3BlY2lmeQot YW4gaW5zdGFsbGF0aW9uIHByZWZpeCBvdGhlciB0aGFuIFxgJGFjX2RlZmF1bHRfcHJlZml4JyB1 c2luZyBcYC0tcHJlZml4JywKLWZvciBpbnN0YW5jZSBcYC0tcHJlZml4PVwkSE9NRScuCi0KLUZv ciBiZXR0ZXIgY29udHJvbCwgdXNlIHRoZSBvcHRpb25zIGJlbG93LgotCi1GaW5lIHR1bmluZyBv ZiB0aGUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yaWVzOgotICAtLWJpbmRpcj1ESVIgICAgICAgICAg ICB1c2VyIGV4ZWN1dGFibGVzIFtFUFJFRklYL2Jpbl0KLSAgLS1zYmluZGlyPURJUiAgICAgICAg ICAgc3lzdGVtIGFkbWluIGV4ZWN1dGFibGVzIFtFUFJFRklYL3NiaW5dCi0gIC0tbGliZXhlY2Rp cj1ESVIgICAgICAgIHByb2dyYW0gZXhlY3V0YWJsZXMgW0VQUkVGSVgvbGliZXhlY10KLSAgLS1z eXNjb25mZGlyPURJUiAgICAgICAgcmVhZC1vbmx5IHNpbmdsZS1tYWNoaW5lIGRhdGEgW1BSRUZJ WC9ldGNdCi0gIC0tc2hhcmVkc3RhdGVkaXI9RElSICAgIG1vZGlmaWFibGUgYXJjaGl0ZWN0dXJl LWluZGVwZW5kZW50IGRhdGEgW1BSRUZJWC9jb21dCi0gIC0tbG9jYWxzdGF0ZWRpcj1ESVIgICAg IG1vZGlmaWFibGUgc2luZ2xlLW1hY2hpbmUgZGF0YSBbUFJFRklYL3Zhcl0KLSAgLS1ydW5zdGF0 ZWRpcj1ESVIgICAgICAgbW9kaWZpYWJsZSBwZXItcHJvY2VzcyBkYXRhIFtMT0NBTFNUQVRFRElS L3J1bl0KLSAgLS1saWJkaXI9RElSICAgICAgICAgICAgb2JqZWN0IGNvZGUgbGlicmFyaWVzIFtF UFJFRklYL2xpYl0KLSAgLS1pbmNsdWRlZGlyPURJUiAgICAgICAgQyBoZWFkZXIgZmlsZXMgW1BS RUZJWC9pbmNsdWRlXQotICAtLW9sZGluY2x1ZGVkaXI9RElSICAgICBDIGhlYWRlciBmaWxlcyBm b3Igbm9uLWdjYyBbL3Vzci9pbmNsdWRlXQotICAtLWRhdGFyb290ZGlyPURJUiAgICAgICByZWFk LW9ubHkgYXJjaC4taW5kZXBlbmRlbnQgZGF0YSByb290IFtQUkVGSVgvc2hhcmVdCi0gIC0tZGF0 YWRpcj1ESVIgICAgICAgICAgIHJlYWQtb25seSBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgZGF0 YSBbREFUQVJPT1RESVJdCi0gIC0taW5mb2Rpcj1ESVIgICAgICAgICAgIGluZm8gZG9jdW1lbnRh dGlvbiBbREFUQVJPT1RESVIvaW5mb10KLSAgLS1sb2NhbGVkaXI9RElSICAgICAgICAgbG9jYWxl LWRlcGVuZGVudCBkYXRhIFtEQVRBUk9PVERJUi9sb2NhbGVdCi0gIC0tbWFuZGlyPURJUiAgICAg ICAgICAgIG1hbiBkb2N1bWVudGF0aW9uIFtEQVRBUk9PVERJUi9tYW5dCi0gIC0tZG9jZGlyPURJ UiAgICAgICAgICAgIGRvY3VtZW50YXRpb24gcm9vdCBbREFUQVJPT1RESVIvZG9jL3hlbl0KLSAg LS1odG1sZGlyPURJUiAgICAgICAgICAgaHRtbCBkb2N1bWVudGF0aW9uIFtET0NESVJdCi0gIC0t ZHZpZGlyPURJUiAgICAgICAgICAgIGR2aSBkb2N1bWVudGF0aW9uIFtET0NESVJdCi0gIC0tcGRm ZGlyPURJUiAgICAgICAgICAgIHBkZiBkb2N1bWVudGF0aW9uIFtET0NESVJdCi0gIC0tcHNkaXI9 RElSICAgICAgICAgICAgIHBzIGRvY3VtZW50YXRpb24gW0RPQ0RJUl0KLV9BQ0VPRgotCi0gIGNh dCA8PFxfQUNFT0YKLQotU3lzdGVtIHR5cGVzOgotICAtLWJ1aWxkPUJVSUxEICAgICBjb25maWd1 cmUgZm9yIGJ1aWxkaW5nIG9uIEJVSUxEIFtndWVzc2VkXQotICAtLWhvc3Q9SE9TVCAgICAgICBj cm9zcy1jb21waWxlIHRvIGJ1aWxkIHByb2dyYW1zIHRvIHJ1biBvbiBIT1NUIFtCVUlMRF0KLV9B Q0VPRgotZmkKLQotaWYgdGVzdCAtbiAiJGFjX2luaXRfaGVscCI7IHRoZW4KLSAgY2FzZSAkYWNf aW5pdF9oZWxwIGluCi0gICAgIHNob3J0IHwgcmVjdXJzaXZlICkgZWNobyAiQ29uZmlndXJhdGlv biBvZiBYZW4gSHlwZXJ2aXNvciBUb29scyA0LjEzOiI7OwotICAgZXNhYwotICBjYXQgPDxcX0FD RU9GCi0KLU9wdGlvbmFsIEZlYXR1cmVzOgotICAtLWRpc2FibGUtb3B0aW9uLWNoZWNraW5nICBp Z25vcmUgdW5yZWNvZ25pemVkIC0tZW5hYmxlLy0td2l0aCBvcHRpb25zCi0gIC0tZGlzYWJsZS1G RUFUVVJFICAgICAgIGRvIG5vdCBpbmNsdWRlIEZFQVRVUkUgKHNhbWUgYXMgLS1lbmFibGUtRkVB VFVSRT1ubykKLSAgLS1lbmFibGUtRkVBVFVSRVs9QVJHXSAgaW5jbHVkZSBGRUFUVVJFIFtBUkc9 eWVzXQotICAtLWRpc2FibGUtbGFyZ2VmaWxlICAgICBvbWl0IHN1cHBvcnQgZm9yIGxhcmdlIGZp bGVzCi0gIC0tZW5hYmxlLXJwYXRoICAgICAgICAgIEJ1aWxkIHRvb2xzIHdpdGggLVdsLC1ycGF0 aCxMSUJESVIgKGRlZmF1bHQgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRElTQUJMRUQp Ci0gIC0tZW5hYmxlLWdpdGh0dHAgICAgICAgIERvd25sb2FkIEdJVCByZXBvc2l0b3JpZXMgdmlh IEhUVFAgKGRlZmF1bHQgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRElTQUJMRUQpCi0g IC0tZGlzYWJsZS1tb25pdG9ycyAgICAgIERpc2FibGUgeGVuc3RhdCBhbmQgeGVudG9wIG1vbml0 b3JpbmcgdG9vbHMgKGRlZmF1bHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgRU5BQkxF RCkKLSAgLS1kaXNhYmxlLW9jYW1sdG9vbHMgICAgRGlzYWJsZSBPY2FtbCB0b29scyAoZGVmYXVs dCBpcyBFTkFCTEVEKQotICAtLWRpc2FibGUteHNtcG9saWN5ICAgICBEaXNhYmxlIFhTTSBwb2xp Y3kgY29tcGlsYXRpb24gKGRlZmF1bHQgaXMgRU5BQkxFRCkKLSAgLS1lbmFibGUtb3ZtZiAgICAg ICAgICAgRW5hYmxlIE9WTUYgKGRlZmF1bHQgaXMgRElTQUJMRUQpCi0gIC0tZGlzYWJsZS1zZWFi aW9zICAgICAgIERpc2FibGUgU2VhQklPUyAoZGVmYXVsdCBpcyBFTkFCTEVEKQotICAtLWVuYWJs ZS1ibGt0YXAyICAgICAgICBFbmFibGUgYmxrdGFwMiwgKERFRkFVTFQgaXMgb2ZmKQotICAtLWVu YWJsZS1xZW11LXRyYWRpdGlvbmFsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEVuYWJsZSBx ZW11IHRyYWRpdGlvbmFsIGRldmljZSBtb2RlbCwgKERFRkFVTFQgaXMgb24KLSAgICAgICAgICAg ICAgICAgICAgICAgICAgZm9yIExpbnV4IG9yIE5ldEJTRCB4ODYsIG90aGVyd2lzZSBvZmYpCi0g IC0tZW5hYmxlLXJvbWJpb3MgICAgICAgIEVuYWJsZSBST01CSU9TLCAoREVGQVVMVCBpcyBvbiBp ZiBxZW11LXRyYWRpdGlvbmFsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGVuYWJsZWQs IG90aGVyd2lzZSBvZmYpCi0gIC0tZGlzYWJsZS1pcHhlICAgICAgICAgIEVuYWJsZSBpbi10cmVl IElQWEUsIChERUZBVUxUIGlzIG9uIGlmIHJvbWJpb3MgaXMKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgZW5hYmxlZCwgb3RoZXJ3aXNlIG9mZiwgc2VlIGFsc28gLS13aXRoLXN5c3RlbS1pcHhl KQotICAtLWVuYWJsZS1zeXN0ZW1kICAgICAgICBFbmFibGUgc3lzdGVtZCBzdXBwb3J0IChkZWZh dWx0IGlzIERJU0FCTEVEKQotICAtLWVuYWJsZS05cGZzICAgICAgICAgICBFeHBsaWNpdGx5IGVu YWJsZSA5cGZzIHN1cHBvcnQgaW4gUUVNVSBidWlsZAotICAgICAgICAgICAgICAgICAgICAgICAg ICAoZGVmYXVsdCBpcyB0byBkZWZlciB0byBRRU1VIGNvbmZpZ3VyZSBkZWZhdWx0KQotCi1PcHRp b25hbCBQYWNrYWdlczoKLSAgLS13aXRoLVBBQ0tBR0VbPUFSR10gICAgdXNlIFBBQ0tBR0UgW0FS Rz15ZXNdCi0gIC0td2l0aG91dC1QQUNLQUdFICAgICAgIGRvIG5vdCB1c2UgUEFDS0FHRSAoc2Ft ZSBhcyAtLXdpdGgtUEFDS0FHRT1ubykKLSAgLS13aXRoLWluaXRkZGlyPURJUiAgICAgUGF0aCB0 byBkaXJlY3Rvcnkgd2l0aCBzeXN2IHJ1bmxldmVsIHNjcmlwdHMuCi0gICAgICAgICAgICAgICAg ICAgICAgICAgIFtTWVNDT05GRElSL2luaXQuZF0KLSAgLS13aXRoLXN5c2NvbmZpZy1sZWFmLWRp cj1TVUJESVIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSBvZiBzdWJkaXJlY3Rvcnkg aW4gL2V0YyB0byBzdG9yZSBydW50aW1lCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlv bnMgZm9yIHJ1bmxldmVsIHNjcmlwdHMgYW5kIGRhZW1vbnMgc3VjaCBhcwotICAgICAgICAgICAg ICAgICAgICAgICAgICB4ZW5zdG9yZWQuIFRoaXMgc2hvdWxkIGJlIGVpdGhlciAic3lzY29uZmln IiBvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCIuIFtzeXNjb25maWddCi0g IC0td2l0aC1saWJleGVjLWxlYWYtZGlyPVNVQkRJUgotICAgICAgICAgICAgICAgICAgICAgICAg ICBOYW1lIG9mIHN1YmRpcmVjdG9yeSBpbiBsaWJleGVjZGlyIHRvIHVzZS4KLSAgLS13aXRoLXhl bi1kdW1wZGlyPURJUiAgUGF0aCB0byBkaXJlY3RvcnkgZm9yIGRvbVUgY3Jhc2ggZHVtcHMuCi0g ICAgICAgICAgICAgICAgICAgICAgICAgIFtMT0NBTFNUQVRFRElSL2xpYi94ZW4vZHVtcF0KLSAg LS13aXRoLXJ1bmRpcj1ESVIgICAgICAgUGF0aCB0byBkaXJlY3RvcnkgZm9yIHJ1bnRpbWUgZGF0 YS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0xPQ0FMU1RBVEVESVIvcnVuXQotICAtLXdp dGgtZGVidWdkaXI9RElSICAgICBQYXRoIHRvIGRpcmVjdG9yeSBmb3IgZGVidWcgc3ltYm9scy4K LSAgICAgICAgICAgICAgICAgICAgICAgICAgW1BSRUZJWC9saWIvZGVidWddCi0gIC0td2l0aC1s aW51eC1iYWNrZW5kLW1vZHVsZXM9Im1vZDEgbW9kMiIKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgTGlzdCBvZiBMaW51eCBiYWNrZW5kIG1vZHVsZSBvciBtb2RhbGlhcyBuYW1lcyB0byBiZQot ICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvbG9hZGVkIG9uIHN0YXJ0dXAuCi0gIC0td2l0 aC1zeXN0ZW0tcWVtdVs9UEFUSF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHN5c3Rl bSBzdXBwbGllZCBxZW11IFBBVEggb3IgcWVtdSAodGFrZW4gZnJvbQotICAgICAgICAgICAgICAg ICAgICAgICAgICAkUEFUSCkgYXMgcWVtdS14ZW4gZGV2aWNlIG1vZGVsIGluc3RlYWQgb2YgYnVp bGRpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGluc3RhbGxpbmcgb3VyIG93biB2 ZXJzaW9uCi0gIC0td2l0aC1zeXN0ZW0tc2VhYmlvc1s9UEFUSF0KLSAgICAgICAgICAgICAgICAg ICAgICAgICAgVXNlIHN5c3RlbSBzdXBwbGllZCBzZWFiaW9zIFBBVEggaW5zdGVhZCBvZiBidWls ZGluZwotICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgaW5zdGFsbGluZyBvdXIgb3duIHZl cnNpb24KLSAgLS13aXRoLXN5c3RlbS1vdm1mWz1QQVRIXQotICAgICAgICAgICAgICAgICAgICAg ICAgICBVc2Ugc3lzdGVtIHN1cHBsaWVkIE9WTUYgUEFUSCBpbnN0ZWFkIG9mIGJ1aWxkaW5nCi0g ICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBpbnN0YWxsaW5nIG91ciBvd24gdmVyc2lvbgot ICAtLXdpdGgtc3lzdGVtLWlweGVbPVBBVEhdCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFVz ZSBzeXN0ZW0gc3VwcGxpZWQgSVBYRSBQQVRIIGluc3RlYWQgb2YgYnVpbGRpbmcKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgYW5kIGluc3RhbGxpbmcgb3VyIG93biB2ZXJzaW9uLCBpdCB0YWtl cyBwcmVjZWRlbmNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXIgLS17ZW4sZGlzfWFi bGUtaXB4ZSBhbmQgaXMgYm91bmQgYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHBy ZXNlbmNlIG9mIHJvbWJpb3MsIC0td2l0aG91dC1zeXN0ZW0taXB4ZSBpcyBhbgotICAgICAgICAg ICAgICAgICAgICAgICAgICBlcnJvcgotICAtLXdpdGgtZXh0cmEtcWVtdXUtY29uZmlndXJlLWFy Z3NbPSItLUFSRzEgLi4uIl0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBhZGRp dGlvbmFsIGNvbmZpZ3VyZSBvcHRpb25zIGZvciB1cHN0cmVhbQotICAgICAgICAgICAgICAgICAg ICAgICAgICBxZW11Ci0gIC0td2l0aC14ZW5zdG9yZWRbPW94ZW5zdG9yZWR8eGVuc3RvcmVkXQot ICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGxldHMgeW91IGNob29zZSB3aGljaCB4ZW5z dG9yZSBkYWVtb24geW91IHdhbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBoYXZl IHR3byBvcHRpb25zOiB0aGUgb3JpZ2luYWwgeGVuc3RvcmVkIHdyaXR0ZW4KLSAgICAgICAgICAg ICAgICAgICAgICAgICAgaW4gQyAoeGVuc3RvcmVkKSBvciB0aGUgbmV3ZXIgYW5kIHJvYnVzdCBv bmUgd3JpdHRlbgotICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBPY2FtbCAob3hlbnN0b3Jl ZCkuIFRoZSBveGVuc3RvcmVkIGRhZW1vbiBpcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgZGVmYXVsdCBidXQgY2FuIG9ubHkgYmUgdXNlZCBpZiB5b3UgaGF2ZSBvY2FtbAotICAgICAg ICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5IC8gYnVpbGQgZGVwZW5kZW5jaWVzIHNvbHZlZCwg aWYgeW91IGhhdmUgbm90Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCBhIHBy ZWZlcmVuY2UgYW5kIGRvIG5vdCBoYXZlIG9jYW1sCi0gICAgICAgICAgICAgICAgICAgICAgICAg IGRlcGVuZGVuY2llcyByZXNvbHZlZCB3ZSdsbCBlbmFibGUgdGhlIEMgeGVuc3RvcmVkCi0gICAg ICAgICAgICAgICAgICAgICAgICAgIGZvciB5b3UuIElmIHlvdSBhc2sgZm9yIG94ZW5zdG9yZWQg d2UnbGwgY29tcGxhaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgdW50aWwgeW91IHJlc29s dmUgdGhvc2UgZGVwZW5kZW5jaWVzCi0gIC0td2l0aC1zeXN0ZW1kPURJUiAgICAgIHNldCBkaXJl Y3RvcnkgZm9yIHN5c3RlbWQgc2VydmljZSBmaWxlcwotICAgICAgICAgICAgICAgICAgICAgICAg ICBbUFJFRklYL2xpYi9zeXN0ZW1kL3N5c3RlbV0KLSAgLS13aXRoLXN5c3RlbWQtbW9kdWxlcy1s b2FkPURJUgotICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQgZGlyZWN0b3J5IGZvciBzeXN0 ZW1kIG1vZHVsZXMgbG9hZCBmaWxlcwotICAgICAgICAgICAgICAgICAgICAgICAgICBbUFJFRklY L2xpYi9tb2R1bGVzLWxvYWQuZC9dCi0KLVNvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1lbnQgdmFy aWFibGVzOgotICBDQyAgICAgICAgICBDIGNvbXBpbGVyIGNvbW1hbmQKLSAgQ0ZMQUdTICAgICAg QyBjb21waWxlciBmbGFncwotICBMREZMQUdTICAgICBsaW5rZXIgZmxhZ3MsIGUuZy4gLUw8bGli IGRpcj4gaWYgeW91IGhhdmUgbGlicmFyaWVzIGluIGEKLSAgICAgICAgICAgICAgbm9uc3RhbmRh cmQgZGlyZWN0b3J5IDxsaWIgZGlyPgotICBMSUJTICAgICAgICBsaWJyYXJpZXMgdG8gcGFzcyB0 byB0aGUgbGlua2VyLCBlLmcuIC1sPGxpYnJhcnk+Ci0gIENQUEZMQUdTICAgIChPYmplY3RpdmUp IEMvQysrIHByZXByb2Nlc3NvciBmbGFncywgZS5nLiAtSTxpbmNsdWRlIGRpcj4gaWYKLSAgICAg ICAgICAgICAgeW91IGhhdmUgaGVhZGVycyBpbiBhIG5vbnN0YW5kYXJkIGRpcmVjdG9yeSA8aW5j bHVkZSBkaXI+Ci0gIFBSRVBFTkRfSU5DTFVERVMKLSAgICAgICAgICAgICAgTGlzdCBvZiBpbmNs dWRlIGZvbGRlcnMgdG8gcHJlcGVuZCB0byBDRkxBR1MgKHdpdGhvdXQgLUkpCi0gIFBSRVBFTkRf TElCIExpc3Qgb2YgbGlicmFyeSBmb2xkZXJzIHRvIHByZXBlbmQgdG8gTERGTEFHUyAod2l0aG91 dCAtTCkKLSAgQVBQRU5EX0lOQ0xVREVTCi0gICAgICAgICAgICAgIExpc3Qgb2YgaW5jbHVkZSBm b2xkZXJzIHRvIGFwcGVuZCB0byBDRkxBR1MgKHdpdGhvdXQgLUkpCi0gIEFQUEVORF9MSUIgIExp c3Qgb2YgbGlicmFyeSBmb2xkZXJzIHRvIGFwcGVuZCB0byBMREZMQUdTICh3aXRob3V0IC1MKQot ICBQWVRIT04gICAgICBQYXRoIHRvIHRoZSBQeXRob24gcGFyc2VyCi0gIFBFUkwgICAgICAgIFBh dGggdG8gUGVybCBwYXJzZXIKLSAgQklTT04gICAgICAgUGF0aCB0byBCaXNvbiBwYXJzZXIgZ2Vu ZXJhdG9yCi0gIEZMRVggICAgICAgIFBhdGggdG8gRmxleCBsZXhpY2FsIGFuYWx5c2VyIGdlbmVy YXRvcgotICBCQVNIICAgICAgICBQYXRoIHRvIGJhc2ggc2hlbGwKLSAgWEdFVFRFWFQgICAgUGF0 aCB0byB4Z2V0dHRleHQgdG9vbAotICBBUzg2ICAgICAgICBQYXRoIHRvIGFzODYgdG9vbAotICBM RDg2ICAgICAgICBQYXRoIHRvIGxkODYgdG9vbAotICBCQ0MgICAgICAgICBQYXRoIHRvIGJjYyB0 b29sCi0gIElBU0wgICAgICAgIFBhdGggdG8gaWFzbCB0b29sCi0gIEFXSyAgICAgICAgIFBhdGgg dG8gYXdrIHRvb2wKLSAgQ1BQICAgICAgICAgQyBwcmVwcm9jZXNzb3IKLSAgUEtHX0NPTkZJRyAg cGF0aCB0byBwa2ctY29uZmlnIHV0aWxpdHkKLSAgUEtHX0NPTkZJR19QQVRICi0gICAgICAgICAg ICAgIGRpcmVjdG9yaWVzIHRvIGFkZCB0byBwa2ctY29uZmlnJ3Mgc2VhcmNoIHBhdGgKLSAgUEtH X0NPTkZJR19MSUJESVIKLSAgICAgICAgICAgICAgcGF0aCBvdmVycmlkaW5nIHBrZy1jb25maWcn cyBidWlsdC1pbiBzZWFyY2ggcGF0aAotICBnbGliX0NGTEFHUyBDIGNvbXBpbGVyIGZsYWdzIGZv ciBnbGliLCBvdmVycmlkaW5nIHBrZy1jb25maWcKLSAgZ2xpYl9MSUJTICAgbGlua2VyIGZsYWdz IGZvciBnbGliLCBvdmVycmlkaW5nIHBrZy1jb25maWcKLSAgcGl4bWFuX0NGTEFHUwotICAgICAg ICAgICAgICBDIGNvbXBpbGVyIGZsYWdzIGZvciBwaXhtYW4sIG92ZXJyaWRpbmcgcGtnLWNvbmZp ZwotICBwaXhtYW5fTElCUyBsaW5rZXIgZmxhZ3MgZm9yIHBpeG1hbiwgb3ZlcnJpZGluZyBwa2ct Y29uZmlnCi0gIExJQk5MM19DRkxBR1MKLSAgICAgICAgICAgICAgQyBjb21waWxlciBmbGFncyBm b3IgTElCTkwzLCBvdmVycmlkaW5nIHBrZy1jb25maWcKLSAgTElCTkwzX0xJQlMgbGlua2VyIGZs YWdzIGZvciBMSUJOTDMsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwotICBTWVNURU1EX0NGTEFHUwot ICAgICAgICAgICAgICBDIGNvbXBpbGVyIGZsYWdzIGZvciBTWVNURU1ELCBvdmVycmlkaW5nIHBr Zy1jb25maWcKLSAgU1lTVEVNRF9MSUJTCi0gICAgICAgICAgICAgIGxpbmtlciBmbGFncyBmb3Ig U1lTVEVNRCwgb3ZlcnJpZGluZyBwa2ctY29uZmlnCi0KLVVzZSB0aGVzZSB2YXJpYWJsZXMgdG8g b3ZlcnJpZGUgdGhlIGNob2ljZXMgbWFkZSBieSBgY29uZmlndXJlJyBvciB0byBoZWxwCi1pdCB0 byBmaW5kIGxpYnJhcmllcyBhbmQgcHJvZ3JhbXMgd2l0aCBub25zdGFuZGFyZCBuYW1lcy9sb2Nh dGlvbnMuCi0KLVJlcG9ydCBidWdzIHRvIDx4ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZz4uCi1YZW4g SHlwZXJ2aXNvciBUb29scyBob21lIHBhZ2U6IDxodHRwOi8vd3d3Lnhlbi5vcmcvPi4KLV9BQ0VP RgotYWNfc3RhdHVzPSQ/Ci1maQotCi1pZiB0ZXN0ICIkYWNfaW5pdF9oZWxwIiA9ICJyZWN1cnNp dmUiOyB0aGVuCi0gICMgSWYgdGhlcmUgYXJlIHN1YmRpcnMsIHJlcG9ydCB0aGVpciBzcGVjaWZp YyAtLWhlbHAuCi0gIGZvciBhY19kaXIgaW4gOiAkYWNfc3ViZGlyc19hbGw7IGRvIHRlc3QgIngk YWNfZGlyIiA9IHg6ICYmIGNvbnRpbnVlCi0gICAgdGVzdCAtZCAiJGFjX2RpciIgfHwKLSAgICAg IHsgY2QgIiRzcmNkaXIiICYmIGFjX3B3ZD1gcHdkYCAmJiBzcmNkaXI9LiAmJiB0ZXN0IC1kICIk YWNfZGlyIjsgfSB8fAotICAgICAgY29udGludWUKLSAgICBhY19idWlsZGRpcj0uCi0KLWNhc2Ug IiRhY19kaXIiIGluCi0uKSBhY19kaXJfc3VmZml4PSBhY190b3BfYnVpbGRkaXJfc3ViPS4gYWNf dG9wX2J1aWxkX3ByZWZpeD0gOzsKLSopCi0gIGFjX2Rpcl9zdWZmaXg9L2AkYXNfZWNobyAiJGFj X2RpciIgfCBzZWQgJ3N8XlwuW1xcL118fCdgCi0gICMgQSAiLi4iIGZvciBlYWNoIGRpcmVjdG9y eSBpbiAkYWNfZGlyX3N1ZmZpeC4KLSAgYWNfdG9wX2J1aWxkZGlyX3N1Yj1gJGFzX2VjaG8gIiRh Y19kaXJfc3VmZml4IiB8IHNlZCAnc3wvW15cXC9dKnwvLi58ZztzfC98fCdgCi0gIGNhc2UgJGFj X3RvcF9idWlsZGRpcl9zdWIgaW4KLSAgIiIpIGFjX3RvcF9idWlsZGRpcl9zdWI9LiBhY190b3Bf YnVpbGRfcHJlZml4PSA7OwotICAqKSAgYWNfdG9wX2J1aWxkX3ByZWZpeD0kYWNfdG9wX2J1aWxk ZGlyX3N1Yi8gOzsKLSAgZXNhYyA7OwotZXNhYwotYWNfYWJzX3RvcF9idWlsZGRpcj0kYWNfcHdk Ci1hY19hYnNfYnVpbGRkaXI9JGFjX3B3ZCRhY19kaXJfc3VmZml4Ci0jIGZvciBiYWNrd2FyZCBj b21wYXRpYmlsaXR5OgotYWNfdG9wX2J1aWxkZGlyPSRhY190b3BfYnVpbGRfcHJlZml4Ci0KLWNh c2UgJHNyY2RpciBpbgotICAuKSAgIyBXZSBhcmUgYnVpbGRpbmcgaW4gcGxhY2UuCi0gICAgYWNf c3JjZGlyPS4KLSAgICBhY190b3Bfc3JjZGlyPSRhY190b3BfYnVpbGRkaXJfc3ViCi0gICAgYWNf YWJzX3RvcF9zcmNkaXI9JGFjX3B3ZCA7OwotICBbXFwvXSogfCA/OltcXC9dKiApICAjIEFic29s dXRlIG5hbWUuCi0gICAgYWNfc3JjZGlyPSRzcmNkaXIkYWNfZGlyX3N1ZmZpeDsKLSAgICBhY190 b3Bfc3JjZGlyPSRzcmNkaXIKLSAgICBhY19hYnNfdG9wX3NyY2Rpcj0kc3JjZGlyIDs7Ci0gICop ICMgUmVsYXRpdmUgbmFtZS4KLSAgICBhY19zcmNkaXI9JGFjX3RvcF9idWlsZF9wcmVmaXgkc3Jj ZGlyJGFjX2Rpcl9zdWZmaXgKLSAgICBhY190b3Bfc3JjZGlyPSRhY190b3BfYnVpbGRfcHJlZml4 JHNyY2RpcgotICAgIGFjX2Fic190b3Bfc3JjZGlyPSRhY19wd2QvJHNyY2RpciA7OwotZXNhYwot YWNfYWJzX3NyY2Rpcj0kYWNfYWJzX3RvcF9zcmNkaXIkYWNfZGlyX3N1ZmZpeAotCi0gICAgY2Qg IiRhY19kaXIiIHx8IHsgYWNfc3RhdHVzPSQ/OyBjb250aW51ZTsgfQotICAgICMgQ2hlY2sgZm9y IGd1ZXN0ZWQgY29uZmlndXJlLgotICAgIGlmIHRlc3QgLWYgIiRhY19zcmNkaXIvY29uZmlndXJl LmdudSI7IHRoZW4KLSAgICAgIGVjaG8gJiYKLSAgICAgICRTSEVMTCAiJGFjX3NyY2Rpci9jb25m aWd1cmUuZ251IiAtLWhlbHA9cmVjdXJzaXZlCi0gICAgZWxpZiB0ZXN0IC1mICIkYWNfc3JjZGly L2NvbmZpZ3VyZSI7IHRoZW4KLSAgICAgIGVjaG8gJiYKLSAgICAgICRTSEVMTCAiJGFjX3NyY2Rp ci9jb25maWd1cmUiIC0taGVscD1yZWN1cnNpdmUKLSAgICBlbHNlCi0gICAgICAkYXNfZWNobyAi JGFzX21lOiBXQVJOSU5HOiBubyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGlzIGluICRhY19k aXIiID4mMgotICAgIGZpIHx8IGFjX3N0YXR1cz0kPwotICAgIGNkICIkYWNfcHdkIiB8fCB7IGFj X3N0YXR1cz0kPzsgYnJlYWs7IH0KLSAgZG9uZQotZmkKLQotdGVzdCAtbiAiJGFjX2luaXRfaGVs cCIgJiYgZXhpdCAkYWNfc3RhdHVzCi1pZiAkYWNfaW5pdF92ZXJzaW9uOyB0aGVuCi0gIGNhdCA8 PFxfQUNFT0YKLVhlbiBIeXBlcnZpc29yIFRvb2xzIGNvbmZpZ3VyZSA0LjEzCi1nZW5lcmF0ZWQg YnkgR05VIEF1dG9jb25mIDIuNjkKLQotQ29weXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotVGhpcyBjb25maWd1cmUgc2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7 IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLWdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9u IHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4KLV9BQ0VPRgotICBleGl0Ci1maQot Ci0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLSMjIEF1dG9jb25mIGluaXRpYWxpemF0 aW9uLiAjIwotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0KLSMgYWNfZm5fY190cnlf Y29tcGlsZSBMSU5FTk8KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgVHJ5IHRvIGNv bXBpbGUgY29uZnRlc3QuJGFjX2V4dCwgYW5kIHJldHVybiB3aGV0aGVyIHRoaXMgc3VjY2VlZGVk LgotYWNfZm5fY190cnlfY29tcGlsZSAoKQotewotICBhc19saW5lbm89JHthc19saW5lbm8tIiQx In0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCi0gIHJt IC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLSAgaWYgeyB7IGFjX3RyeT0iJGFjX2NvbXBpbGUiCi1j YXNlICIoKCRhY190cnkiIGluCi0gICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRh Y190cnk7OwotICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKLWVzYWMKLWV2YWwgYWNfdHJ5X2Vj aG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCi0kYXNf ZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKLSAgKGV2YWwgIiRhY19jb21waWxlIikgMj5jb25m dGVzdC5lcnIKLSAgYWNfc3RhdHVzPSQ/Ci0gIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVu Ci0gICAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXJyID5jb25mdGVzdC5lcjEKLSAgICBjYXQg Y29uZnRlc3QuZXIxID4mNQotICAgIG12IC1mIGNvbmZ0ZXN0LmVyMSBjb25mdGVzdC5lcnIKLSAg ZmkKLSAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0 YXR1cyIgPiY1Ci0gIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgewotCSB0ZXN0IC16ICIkYWNf Y193ZXJyb3JfZmxhZyIgfHwKLQkgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycgotICAgICAgIH0gJiYg dGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0OyB0aGVuIDoKLSAgYWNfcmV0dmFsPTAKLWVsc2UK LSAgJGFzX2VjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1zZWQgJ3MvXi98 IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0KLQlhY19yZXR2YWw9MQotZmkKLSAgZXZhbCAkYXNf bGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCi0gIGFz X2ZuX3NldF9zdGF0dXMgJGFjX3JldHZhbAotCi19ICMgYWNfZm5fY190cnlfY29tcGlsZQotCi0j IGFjX2ZuX2NfdHJ5X2xpbmsgTElORU5PCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIFRy eSB0byBsaW5rIGNvbmZ0ZXN0LiRhY19leHQsIGFuZCByZXR1cm4gd2hldGhlciB0aGlzIHN1Y2Nl ZWRlZC4KLWFjX2ZuX2NfdHJ5X2xpbmsgKCkKLXsKLSAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIk MSJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjawotICBy bSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAotICBpZiB7IHsgYWNf dHJ5PSIkYWNfbGluayIKLWNhc2UgIigoJGFjX3RyeSIgaW4KLSAgKlwiKiB8ICpcYCogfCAqXFwq KSBhY190cnlfZWNobz1cJGFjX3RyeTs7Ci0gICopIGFjX3RyeV9lY2hvPSRhY190cnk7OwotZXNh YwotZXZhbCBhY190cnlfZWNobz0iXCJcJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNf dHJ5X2VjaG9cIiIKLSRhc19lY2hvICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQotICAoZXZhbCAiJGFj X2xpbmsiKSAyPmNvbmZ0ZXN0LmVycgotICBhY19zdGF0dXM9JD8KLSAgaWYgdGVzdCAtcyBjb25m dGVzdC5lcnI7IHRoZW4KLSAgICBncmVwIC12ICdeICorJyBjb25mdGVzdC5lcnIgPmNvbmZ0ZXN0 LmVyMQotICAgIGNhdCBjb25mdGVzdC5lcjEgPiY1Ci0gICAgbXYgLWYgY29uZnRlc3QuZXIxIGNv bmZ0ZXN0LmVycgotICBmaQotICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB7Ci0J IHRlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIiB8fAotCSB0ZXN0ICEgLXMgY29uZnRlc3QuZXJy Ci0gICAgICAgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAmJiB7Ci0JIHRlc3QgIiRj cm9zc19jb21waWxpbmciID0geWVzIHx8Ci0JIHRlc3QgLXggY29uZnRlc3QkYWNfZXhlZXh0Ci0g ICAgICAgfTsgdGhlbiA6Ci0gIGFjX3JldHZhbD0wCi1lbHNlCi0gICRhc19lY2hvICIkYXNfbWU6 IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0 ID4mNQotCi0JYWNfcmV0dmFsPTEKLWZpCi0gICMgRGVsZXRlIHRoZSBJUEEvSVBPIChJbnRlciBQ cm9jZWR1cmFsIEFuYWx5c2lzL09wdGltaXphdGlvbikgaW5mb3JtYXRpb24KLSAgIyBjcmVhdGVk IGJ5IHRoZSBQR0kgY29tcGlsZXIgKGNvbmZ0ZXN0X2lwYThfY29uZnRlc3Qub28pLCBhcyBpdCB3 b3VsZAotICAjIGludGVyZmVyZSB3aXRoIHRoZSBuZXh0IGxpbmsgY29tbWFuZDsgYWxzbyBkZWxl dGUgYSBkaXJlY3RvcnkgdGhhdCBpcwotICAjIGxlZnQgYmVoaW5kIGJ5IEFwcGxlJ3MgY29tcGls ZXIuICBXZSBkbyB0aGlzIGJlZm9yZSBleGVjdXRpbmcgdGhlIGFjdGlvbnMuCi0gIHJtIC1yZiBj b25mdGVzdC5kU1lNIGNvbmZ0ZXN0X2lwYThfY29uZnRlc3Qub28KLSAgZXZhbCAkYXNfbGluZW5v X3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCi0gIGFzX2ZuX3Nl dF9zdGF0dXMgJGFjX3JldHZhbAotCi19ICMgYWNfZm5fY190cnlfbGluawotCi0jIGFjX2ZuX2Nf dHJ5X2NwcCBMSU5FTk8KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBUcnkgdG8gcHJlcHJv Y2VzcyBjb25mdGVzdC4kYWNfZXh0LCBhbmQgcmV0dXJuIHdoZXRoZXIgdGhpcyBzdWNjZWVkZWQu Ci1hY19mbl9jX3RyeV9jcHAgKCkKLXsKLSAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFz X2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjawotICBpZiB7IHsg YWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiCi1jYXNlICIoKCRhY190cnkiIGluCi0g ICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7OwotICAqKSBhY190cnlf ZWNobz0kYWNfdHJ5OzsKLWVzYWMKLWV2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCi0kYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsg fSA+JjUKLSAgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+Y29uZnRlc3QuZXJy Ci0gIGFjX3N0YXR1cz0kPwotICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgotICAgIGdy ZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyciA+Y29uZnRlc3QuZXIxCi0gICAgY2F0IGNvbmZ0ZXN0 LmVyMSA+JjUKLSAgICBtdiAtZiBjb25mdGVzdC5lcjEgY29uZnRlc3QuZXJyCi0gIGZpCi0gICRh c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4m NQotICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ID4gY29uZnRlc3QuaSAmJiB7Ci0JIHRlc3QgLXog IiRhY19jX3ByZXByb2Nfd2Fybl9mbGFnJGFjX2Nfd2Vycm9yX2ZsYWciIHx8Ci0JIHRlc3QgISAt cyBjb25mdGVzdC5lcnIKLSAgICAgICB9OyB0aGVuIDoKLSAgYWNfcmV0dmFsPTAKLWVsc2UKLSAg JGFzX2VjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1zZWQgJ3MvXi98IC8n IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0KLSAgICBhY19yZXR2YWw9MQotZmkKLSAgZXZhbCAkYXNf bGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCi0gIGFz X2ZuX3NldF9zdGF0dXMgJGFjX3JldHZhbAotCi19ICMgYWNfZm5fY190cnlfY3BwCi0KLSMgYWNf Zm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCBMSU5FTk8gSEVBREVSIFZBUiBJTkNMVURFUwotIyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0j IFRlc3RzIHdoZXRoZXIgSEVBREVSIGV4aXN0cywgZ2l2aW5nIGEgd2FybmluZyBpZiBpdCBjYW5u b3QgYmUgY29tcGlsZWQgdXNpbmcKLSMgdGhlIGluY2x1ZGUgZmlsZXMgaW4gSU5DTFVERVMgYW5k IHNldHRpbmcgdGhlIGNhY2hlIHZhcmlhYmxlIFZBUgotIyBhY2NvcmRpbmdseS4KLWFjX2ZuX2Nf Y2hlY2tfaGVhZGVyX21vbmdyZWwgKCkKLXsKLSAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9 IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjawotICBpZiBl dmFsIFwkeyQzKzp9IGZhbHNlOyB0aGVuIDoKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJDIiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcg Zm9yICQyLi4uICIgPiY2OyB9Ci1pZiBldmFsIFwkeyQzKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFz X2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWZpCi1ldmFsIGFjX3Jlcz1cJCQzCi0JICAgICAgIHsg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+ JjUKLSRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KLWVsc2UKLSAgIyBJcyB0aGUgaGVhZGVyIGNv bXBpbGFibGU/Ci17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nICQyIHVzYWJpbGl0eSIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyAkMiB1c2FiaWxpdHku Li4gIiA+JjY7IH0KLWNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQK LS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSQ0Ci0jaW5jbHVkZSA8JDI+Ci1fQUNFT0YKLWlmIGFj X2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSAgYWNfaGVhZGVyX2NvbXBpbGVy PXllcwotZWxzZQotICBhY19oZWFkZXJfY29tcGlsZXI9bm8KLWZpCi1ybSAtZiBjb3JlIGNvbmZ0 ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLXsgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfaGVhZGVyX2NvbXBpbGVy IiA+JjUKLSRhc19lY2hvICIkYWNfaGVhZGVyX2NvbXBpbGVyIiA+JjY7IH0KLQotIyBJcyB0aGUg aGVhZGVyIHByZXNlbnQ/Ci17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IGNoZWNraW5nICQyIHByZXNlbmNlIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nICQyIHByZXNl bmNlLi4uICIgPiY2OyB9Ci1jYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNf ZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0jaW5jbHVkZSA8JDI+Ci1fQUNFT0YKLWlmIGFj X2ZuX2NfdHJ5X2NwcCAiJExJTkVOTyI7IHRoZW4gOgotICBhY19oZWFkZXJfcHJlcHJvYz15ZXMK LWVsc2UKLSAgYWNfaGVhZGVyX3ByZXByb2M9bm8KLWZpCi1ybSAtZiBjb25mdGVzdC5lcnIgY29u ZnRlc3QuaSBjb25mdGVzdC4kYWNfZXh0Ci17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IHJlc3VsdDogJGFjX2hlYWRlcl9wcmVwcm9jIiA+JjUKLSRhc19lY2hvICIkYWNf aGVhZGVyX3ByZXByb2MiID4mNjsgfQotCi0jIFNvPyAgV2hhdCBhYm91dCB0aGlzIGhlYWRlcj8K LWNhc2UgJGFjX2hlYWRlcl9jb21waWxlcjokYWNfaGVhZGVyX3ByZXByb2M6JGFjX2NfcHJlcHJv Y193YXJuX2ZsYWcgaW4gIygoCi0gIHllczpubzogKQotICAgIHsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogJDI6IGFjY2VwdGVkIGJ5IHRoZSBjb21waWxl ciwgcmVqZWN0ZWQgYnkgdGhlIHByZXByb2Nlc3NvciEiID4mNQotJGFzX2VjaG8gIiRhc19tZTog V0FSTklORzogJDI6IGFjY2VwdGVkIGJ5IHRoZSBjb21waWxlciwgcmVqZWN0ZWQgYnkgdGhlIHBy ZXByb2Nlc3NvciEiID4mMjt9Ci0gICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBXQVJOSU5HOiAkMjogcHJvY2VlZGluZyB3aXRoIHRoZSBjb21waWxlcidzIHJlc3Vs dCIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkMjogcHJvY2VlZGluZyB3aXRoIHRo ZSBjb21waWxlcidzIHJlc3VsdCIgPiYyO30KLSAgICA7OwotICBubzp5ZXM6KiApCi0gICAgeyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAkMjogcHJlc2Vu dCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6 ICQyOiBwcmVzZW50IGJ1dCBjYW5ub3QgYmUgY29tcGlsZWQiID4mMjt9Ci0gICAgeyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAkMjogICAgIGNoZWNrIGZv ciBtaXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFkZXJzPyIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiBX QVJOSU5HOiAkMjogICAgIGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFkZXJzPyIg PiYyO30KLSAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5J Tkc6ICQyOiBzZWUgdGhlIEF1dG9jb25mIGRvY3VtZW50YXRpb24iID4mNQotJGFzX2VjaG8gIiRh c19tZTogV0FSTklORzogJDI6IHNlZSB0aGUgQXV0b2NvbmYgZG9jdW1lbnRhdGlvbiIgPiYyO30K LSAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICQy OiAgICAgc2VjdGlvbiBcIlByZXNlbnQgQnV0IENhbm5vdCBCZSBDb21waWxlZFwiIiA+JjUKLSRh c19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICQyOiAgICAgc2VjdGlvbiBcIlByZXNlbnQgQnV0IENh bm5vdCBCZSBDb21waWxlZFwiIiA+JjI7fQotICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogV0FSTklORzogJDI6IHByb2NlZWRpbmcgd2l0aCB0aGUgY29tcGlsZXIn cyByZXN1bHQiID4mNQotJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJDI6IHByb2NlZWRpbmcg d2l0aCB0aGUgY29tcGlsZXIncyByZXN1bHQiID4mMjt9Ci0oICRhc19lY2hvICIjIyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIyMgUmVwb3J0IHRoaXMgdG8geGVu LWRldmVsQGxpc3RzLnhlbi5vcmcgIyMKLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tICMjIgotICAgICApIHwgc2VkICJzL14vJGFzX21lOiBXQVJOSU5HOiAgICAgLyIg PiYyCi0gICAgOzsKLWVzYWMKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBjaGVja2luZyBmb3IgJDIiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICQyLi4u ICIgPiY2OyB9Ci1pZiBldmFsIFwkeyQzKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAi KGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgZXZhbCAiJDM9XCRhY19oZWFkZXJfY29tcGlsZXIiCi1m aQotZXZhbCBhY19yZXM9XCQkMwotCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1Ci0kYXNfZWNobyAiJGFjX3JlcyIgPiY2 OyB9Ci1maQotICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNrOis6fSB1 bnNldCBhc19saW5lbm8KLQotfSAjIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwKLQotIyBh Y19mbl9jX3RyeV9ydW4gTElORU5PCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgVHJ5IHRv IGxpbmsgY29uZnRlc3QuJGFjX2V4dCwgYW5kIHJldHVybiB3aGV0aGVyIHRoaXMgc3VjY2VlZGVk LiBBc3N1bWVzCi0jIHRoYXQgZXhlY3V0YWJsZXMgKmNhbiogYmUgcnVuLgotYWNfZm5fY190cnlf cnVuICgpCi17Ci0gIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9 YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKLSAgaWYgeyB7IGFjX3RyeT0iJGFjX2xp bmsiCi1jYXNlICIoKCRhY190cnkiIGluCi0gICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2Vj aG89XCRhY190cnk7OwotICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKLWVzYWMKLWV2YWwgYWNf dHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIi Ci0kYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKLSAgKGV2YWwgIiRhY19saW5rIikgMj4m NQotICBhY19zdGF0dXM9JD8KLSAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgeyBh Y190cnk9Jy4vY29uZnRlc3QkYWNfZXhlZXh0JwotICB7IHsgY2FzZSAiKCgkYWNfdHJ5IiBpbgot ICAqXCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsKLSAgKikgYWNfdHJ5 X2VjaG89JGFjX3RyeTs7Ci1lc2FjCi1ldmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306ICRhY190cnlfZWNob1wiIgotJGFzX2VjaG8gIiRhY190cnlfZWNobyI7 IH0gPiY1Ci0gIChldmFsICIkYWNfdHJ5IikgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0g IHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IH07IHRoZW4gOgotICBhY19yZXR2YWw9MAotZWxzZQot ICAkYXNfZWNobyAiJGFzX21lOiBwcm9ncmFtIGV4aXRlZCB3aXRoIHN0YXR1cyAkYWNfc3RhdHVz IiA+JjUKLSAgICAgICAkYXNfZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUK LXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLQotICAgICAgIGFjX3JldHZhbD0k YWNfc3RhdHVzCi1maQotICBybSAtcmYgY29uZnRlc3QuZFNZTSBjb25mdGVzdF9pcGE4X2NvbmZ0 ZXN0Lm9vCi0gIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVu c2V0IGFzX2xpbmVubwotICBhc19mbl9zZXRfc3RhdHVzICRhY19yZXR2YWwKLQotfSAjIGFjX2Zu X2NfdHJ5X3J1bgotCi0jIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUgTElORU5PIEhFQURF UiBWQVIgSU5DTFVERVMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQotIyBUZXN0cyB3aGV0aGVyIEhFQURFUiBleGlzdHMgYW5kIGNhbiBi ZSBjb21waWxlZCB1c2luZyB0aGUgaW5jbHVkZSBmaWxlcyBpbgotIyBJTkNMVURFUywgc2V0dGlu ZyB0aGUgY2FjaGUgdmFyaWFibGUgVkFSIGFjY29yZGluZ2x5LgotYWNfZm5fY19jaGVja19oZWFk ZXJfY29tcGlsZSAoKQotewotICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5v X3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCi0gIHsgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICQyIiA+JjUKLSRhc19lY2hv X24gImNoZWNraW5nIGZvciAkMi4uLiAiID4mNjsgfQotaWYgZXZhbCBcJHskMys6fSBmYWxzZTsg dGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGNhdCBjb25mZGVm cy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8K LSQ0Ci0jaW5jbHVkZSA8JDI+Ci1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5F Tk8iOyB0aGVuIDoKLSAgZXZhbCAiJDM9eWVzIgotZWxzZQotICBldmFsICIkMz1ubyIKLWZpCi1y bSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19l eHQKLWZpCi1ldmFsIGFjX3Jlcz1cJCQzCi0JICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKLSRhc19lY2hvICIkYWNfcmVz IiA+JjY7IH0KLSAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0g dW5zZXQgYXNfbGluZW5vCi0KLX0gIyBhY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlCi0KLSMg YWNfZm5fY19jaGVja19mdW5jIExJTkVOTyBGVU5DIFZBUgotIyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCi0jIFRlc3RzIHdoZXRoZXIgRlVOQyBleGlzdHMsIHNldHRpbmcgdGhl IGNhY2hlIHZhcmlhYmxlIFZBUiBhY2NvcmRpbmdseQotYWNfZm5fY19jaGVja19mdW5jICgpCi17 Ci0gIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5v X3N0YWNrPSRhc19saW5lbm9fc3RhY2sKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBjaGVja2luZyBmb3IgJDIiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9y ICQyLi4uICIgPiY2OyB9Ci1pZiBldmFsIFwkeyQzKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2Vj aG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+ Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotLyogRGVmaW5lICQyIHRv IGFuIGlubm9jdW91cyB2YXJpYW50LCBpbiBjYXNlIDxsaW1pdHMuaD4gZGVjbGFyZXMgJDIuCi0g ICBGb3IgZXhhbXBsZSwgSFAtVVggMTFpIDxsaW1pdHMuaD4gZGVjbGFyZXMgZ2V0dGltZW9mZGF5 LiAgKi8KLSNkZWZpbmUgJDIgaW5ub2N1b3VzXyQyCi0KLS8qIFN5c3RlbSBoZWFkZXIgdG8gZGVm aW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKLSAgICB3aGlj aCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyICQyICgpOyBiZWxvdy4KLSAgICBQcmVmZXIgPGxpbWl0 cy5oPiB0byA8YXNzZXJ0Lmg+IGlmIF9fU1REQ19fIGlzIGRlZmluZWQsIHNpbmNlCi0gICAgPGxp bWl0cy5oPiBleGlzdHMgZXZlbiBvbiBmcmVlc3RhbmRpbmcgY29tcGlsZXJzLiAgKi8KLQotI2lm ZGVmIF9fU1REQ19fCi0jIGluY2x1ZGUgPGxpbWl0cy5oPgotI2Vsc2UKLSMgaW5jbHVkZSA8YXNz ZXJ0Lmg+Ci0jZW5kaWYKLQotI3VuZGVmICQyCi0KLS8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJu YWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgotICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQg bWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCi0gICBidWlsdGluIGFuZCB0aGVu IGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwotI2lmZGVmIF9f Y3BsdXNwbHVzCi1leHRlcm4gIkMiCi0jZW5kaWYKLWNoYXIgJDIgKCk7Ci0vKiBUaGUgR05VIEMg bGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCi0g ICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFs bHkgbmFtZWQKLSAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBu YW1lIGlzIGFuIGFsaWFzLiAgKi8KLSNpZiBkZWZpbmVkIF9fc3R1Yl8kMiB8fCBkZWZpbmVkIF9f c3R1Yl9fXyQyCi1jaG9rZSBtZQotI2VuZGlmCi0KLWludAotbWFpbiAoKQotewotcmV0dXJuICQy ICgpOwotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9saW5rICIk TElORU5PIjsgdGhlbiA6Ci0gIGV2YWwgIiQzPXllcyIKLWVsc2UKLSAgZXZhbCAiJDM9bm8iCi1m aQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgY29u ZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLWZpCi1ldmFsIGFjX3Jlcz1cJCQzCi0J ICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAk YWNfcmVzIiA+JjUKLSRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KLSAgZXZhbCAkYXNfbGluZW5v X3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCi0KLX0gIyBhY19m bl9jX2NoZWNrX2Z1bmMKLQotIyBhY19mbl9jX2NoZWNrX2RlY2wgTElORU5PIFNZTUJPTCBWQVIg SU5DTFVERVMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ci0jIFRlc3RzIHdoZXRoZXIgU1lNQk9MIGlzIGRlY2xhcmVkIGluIElOQ0xVREVTLCBzZXR0aW5n IGNhY2hlIHZhcmlhYmxlIFZBUgotIyBhY2NvcmRpbmdseS4KLWFjX2ZuX2NfY2hlY2tfZGVjbCAo KQotewotICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xp bmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCi0gIGFzX2RlY2xfbmFtZT1gZWNobyAkMnxzZWQg J3MvICooLiovLydgCi0gIGFzX2RlY2xfdXNlPWBlY2hvICQyfHNlZCAtZSAncy8oLygoLycgLWUg J3MvKS8pIDAmLycgLWUgJ3MvLC8pIDAmICgvZydgCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAkYXNfZGVjbF9uYW1lIGlzIGRlY2xh cmVkIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgJGFzX2RlY2xfbmFtZSBpcyBk ZWNsYXJlZC4uLiAiID4mNjsgfQotaWYgZXZhbCBcJHskMys6fSBmYWxzZTsgdGhlbiA6Ci0gICRh c19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNF T0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSQ0Ci1pbnQKLW1h aW4gKCkKLXsKLSNpZm5kZWYgJGFzX2RlY2xfbmFtZQotI2lmZGVmIF9fY3BsdXNwbHVzCi0gICh2 b2lkKSAkYXNfZGVjbF91c2U7Ci0jZWxzZQotICAodm9pZCkgJGFzX2RlY2xfbmFtZTsKLSNlbmRp ZgotI2VuZGlmCi0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlf Y29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotICBldmFsICIkMz15ZXMiCi1lbHNlCi0gIGV2YWwg IiQzPW5vIgotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQg Y29uZnRlc3QuJGFjX2V4dAotZmkKLWV2YWwgYWNfcmVzPVwkJDMKLQkgICAgICAgeyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQotJGFz X2VjaG8gIiRhY19yZXMiID4mNjsgfQotICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGlu ZW5vX3N0YWNrOis6fSB1bnNldCBhc19saW5lbm8KLQotfSAjIGFjX2ZuX2NfY2hlY2tfZGVjbAot Y2F0ID5jb25maWcubG9nIDw8X0FDRU9GCi1UaGlzIGZpbGUgY29udGFpbnMgYW55IG1lc3NhZ2Vz IHByb2R1Y2VkIGJ5IGNvbXBpbGVycyB3aGlsZQotcnVubmluZyBjb25maWd1cmUsIHRvIGFpZCBk ZWJ1Z2dpbmcgaWYgY29uZmlndXJlIG1ha2VzIGEgbWlzdGFrZS4KLQotSXQgd2FzIGNyZWF0ZWQg YnkgWGVuIEh5cGVydmlzb3IgVG9vbHMgJGFzX21lIDQuMTMsIHdoaWNoIHdhcwotZ2VuZXJhdGVk IGJ5IEdOVSBBdXRvY29uZiAyLjY5LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCi0KLSAg JCAkMCAkQAotCi1fQUNFT0YKLWV4ZWMgNT4+Y29uZmlnLmxvZwotewotY2F0IDw8X0FTVU5BTUUK LSMjIC0tLS0tLS0tLSAjIwotIyMgUGxhdGZvcm0uICMjCi0jIyAtLS0tLS0tLS0gIyMKLQotaG9z dG5hbWUgPSBgKGhvc3RuYW1lIHx8IHVuYW1lIC1uKSAyPi9kZXYvbnVsbCB8IHNlZCAxcWAKLXVu YW1lIC1tID0gYCh1bmFtZSAtbSkgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAotdW5hbWUg LXIgPSBgKHVuYW1lIC1yKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCi11bmFtZSAtcyA9 IGAodW5hbWUgLXMpIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKLXVuYW1lIC12ID0gYCh1 bmFtZSAtdikgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAotCi0vdXNyL2Jpbi91bmFtZSAt cCA9IGAoL3Vzci9iaW4vdW5hbWUgLXApIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKLS9i aW4vdW5hbWUgLVggICAgID0gYCgvYmluL3VuYW1lIC1YKSAyPi9kZXYvbnVsbCAgICAgfHwgZWNo byB1bmtub3duYAotCi0vYmluL2FyY2ggICAgICAgICAgICAgID0gYCgvYmluL2FyY2gpIDI+L2Rl di9udWxsICAgICAgICAgICAgICB8fCBlY2hvIHVua25vd25gCi0vdXNyL2Jpbi9hcmNoIC1rICAg ICAgID0gYCgvdXNyL2Jpbi9hcmNoIC1rKSAyPi9kZXYvbnVsbCAgICAgICB8fCBlY2hvIHVua25v d25gCi0vdXNyL2NvbnZleC9nZXRzeXNpbmZvID0gYCgvdXNyL2NvbnZleC9nZXRzeXNpbmZvKSAy Pi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCi0vdXNyL2Jpbi9ob3N0aW5mbyAgICAgID0gYCgv dXNyL2Jpbi9ob3N0aW5mbykgMj4vZGV2L251bGwgICAgICB8fCBlY2hvIHVua25vd25gCi0vYmlu L21hY2hpbmUgICAgICAgICAgID0gYCgvYmluL21hY2hpbmUpIDI+L2Rldi9udWxsICAgICAgICAg ICB8fCBlY2hvIHVua25vd25gCi0vdXNyL2Jpbi9vc2xldmVsICAgICAgID0gYCgvdXNyL2Jpbi9v c2xldmVsKSAyPi9kZXYvbnVsbCAgICAgICB8fCBlY2hvIHVua25vd25gCi0vYmluL3VuaXZlcnNl ICAgICAgICAgID0gYCgvYmluL3VuaXZlcnNlKSAyPi9kZXYvbnVsbCAgICAgICAgICB8fCBlY2hv IHVua25vd25gCi0KLV9BU1VOQU1FCi0KLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBB UkFUT1IKLWZvciBhc19kaXIgaW4gJFBBVEgKLWRvCi0gIElGUz0kYXNfc2F2ZV9JRlMKLSAgdGVz dCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICAkYXNfZWNobyAiUEFUSDogJGFzX2RpciIK LSAgZG9uZQotSUZTPSRhc19zYXZlX0lGUwotCi19ID4mNQotCi1jYXQgPiY1IDw8X0FDRU9GCi0K LQotIyMgLS0tLS0tLS0tLS0gIyMKLSMjIENvcmUgdGVzdHMuICMjCi0jIyAtLS0tLS0tLS0tLSAj IwotCi1fQUNFT0YKLQotCi0jIEtlZXAgYSB0cmFjZSBvZiB0aGUgY29tbWFuZCBsaW5lLgotIyBT dHJpcCBvdXQgLS1uby1jcmVhdGUgYW5kIC0tbm8tcmVjdXJzaW9uIHNvIHRoZXkgZG8gbm90IHBp bGUgdXAuCi0jIFN0cmlwIG91dCAtLXNpbGVudCBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gcmVj b3JkIGl0IGZvciBmdXR1cmUgcnVucy4KLSMgQWxzbyBxdW90ZSBhbnkgYXJncyBjb250YWluaW5n IHNoZWxsIG1ldGEtY2hhcmFjdGVycy4KLSMgTWFrZSB0d28gcGFzc2VzIHRvIGFsbG93IGZvciBw cm9wZXIgZHVwbGljYXRlLWFyZ3VtZW50IHN1cHByZXNzaW9uLgotYWNfY29uZmlndXJlX2FyZ3M9 Ci1hY19jb25maWd1cmVfYXJnczA9Ci1hY19jb25maWd1cmVfYXJnczE9Ci1hY19tdXN0X2tlZXBf bmV4dD1mYWxzZQotZm9yIGFjX3Bhc3MgaW4gMSAyCi1kbwotICBmb3IgYWNfYXJnCi0gIGRvCi0g ICAgY2FzZSAkYWNfYXJnIGluCi0gICAgLW5vLWNyZWF0ZSB8IC0tbm8tYyogfCAtbiB8IC1uby1y ZWN1cnNpb24gfCAtLW5vLXIqKSBjb250aW51ZSA7OwotICAgIC1xIHwgLXF1aWV0IHwgLS1xdWll dCB8IC0tcXVpZSB8IC0tcXVpIHwgLS1xdSB8IC0tcSBcCi0gICAgfCAtc2lsZW50IHwgLS1zaWxl bnQgfCAtLXNpbGVuIHwgLS1zaWxlIHwgLS1zaWwpCi0gICAgICBjb250aW51ZSA7OwotICAgICpc JyopCi0gICAgICBhY19hcmc9YCRhc19lY2hvICIkYWNfYXJnIiB8IHNlZCAicy8nLydcXFxcXFxc XCcnL2ciYCA7OwotICAgIGVzYWMKLSAgICBjYXNlICRhY19wYXNzIGluCi0gICAgMSkgYXNfZm5f YXBwZW5kIGFjX2NvbmZpZ3VyZV9hcmdzMCAiICckYWNfYXJnJyIgOzsKLSAgICAyKQotICAgICAg YXNfZm5fYXBwZW5kIGFjX2NvbmZpZ3VyZV9hcmdzMSAiICckYWNfYXJnJyIKLSAgICAgIGlmIHRl c3QgJGFjX211c3Rfa2VlcF9uZXh0ID0gdHJ1ZTsgdGhlbgotCWFjX211c3Rfa2VlcF9uZXh0PWZh bHNlICMgR290IHZhbHVlLCBiYWNrIHRvIG5vcm1hbC4KLSAgICAgIGVsc2UKLQljYXNlICRhY19h cmcgaW4KLQkgICo9KiB8IC0tY29uZmlnLWNhY2hlIHwgLUMgfCAtZGlzYWJsZS0qIHwgLS1kaXNh YmxlLSogXAotCSAgfCAtZW5hYmxlLSogfCAtLWVuYWJsZS0qIHwgLWdhcyB8IC0tZyogfCAtbmZw IHwgLS1uZiogXAotCSAgfCAtcSB8IC1xdWlldCB8IC0tcSogfCAtc2lsZW50IHwgLS1zaWwqIHwg LXYgfCAtdmVyYiogXAotCSAgfCAtd2l0aC0qIHwgLS13aXRoLSogfCAtd2l0aG91dC0qIHwgLS13 aXRob3V0LSogfCAtLXgpCi0JICAgIGNhc2UgIiRhY19jb25maWd1cmVfYXJnczAgIiBpbgotCSAg ICAgICIkYWNfY29uZmlndXJlX2FyZ3MxIioiICckYWNfYXJnJyAiKiApIGNvbnRpbnVlIDs7Ci0J ICAgIGVzYWMKLQkgICAgOzsKLQkgIC0qICkgYWNfbXVzdF9rZWVwX25leHQ9dHJ1ZSA7OwotCWVz YWMKLSAgICAgIGZpCi0gICAgICBhc19mbl9hcHBlbmQgYWNfY29uZmlndXJlX2FyZ3MgIiAnJGFj X2FyZyciCi0gICAgICA7OwotICAgIGVzYWMKLSAgZG9uZQotZG9uZQoteyBhY19jb25maWd1cmVf YXJnczA9OyB1bnNldCBhY19jb25maWd1cmVfYXJnczA7fQoteyBhY19jb25maWd1cmVfYXJnczE9 OyB1bnNldCBhY19jb25maWd1cmVfYXJnczE7fQotCi0jIFdoZW4gaW50ZXJydXB0ZWQgb3IgZXhp dCdkLCBjbGVhbnVwIHRlbXBvcmFyeSBmaWxlcywgYW5kIGNvbXBsZXRlCi0jIGNvbmZpZy5sb2cu ICBXZSByZW1vdmUgY29tbWVudHMgYmVjYXVzZSBhbnl3YXkgdGhlIHF1b3RlcyBpbiB0aGVyZQot IyB3b3VsZCBjYXVzZSBwcm9ibGVtcyBvciBsb29rIHVnbHkuCi0jIFdBUk5JTkc6IFVzZSAnXCcn IHRvIHJlcHJlc2VudCBhbiBhcG9zdHJvcGhlIHdpdGhpbiB0aGUgdHJhcC4KLSMgV0FSTklORzog RG8gbm90IHN0YXJ0IHRoZSB0cmFwIGNvZGUgd2l0aCBhIG5ld2xpbmUsIGR1ZSB0byBhIEZyZWVC U0QgNC4wIGJ1Zy4KLXRyYXAgJ2V4aXRfc3RhdHVzPSQ/Ci0gICMgU2F2ZSBpbnRvIGNvbmZpZy5s b2cgc29tZSBpbmZvcm1hdGlvbiB0aGF0IG1pZ2h0IGhlbHAgaW4gZGVidWdnaW5nLgotICB7Ci0g ICAgZWNobwotCi0gICAgJGFzX2VjaG8gIiMjIC0tLS0tLS0tLS0tLS0tLS0gIyMKLSMjIENhY2hl IHZhcmlhYmxlcy4gIyMKLSMjIC0tLS0tLS0tLS0tLS0tLS0gIyMiCi0gICAgZWNobwotICAgICMg VGhlIGZvbGxvd2luZyB3YXkgb2Ygd3JpdGluZyB0aGUgY2FjaGUgbWlzaGFuZGxlcyBuZXdsaW5l cyBpbiB2YWx1ZXMsCi0oCi0gIGZvciBhY192YXIgaW4gYChzZXQpIDI+JjEgfCBzZWQgLW4gJ1wn J3MvXlwoW2EtekEtWl9dW2EtekEtWjAtOV9dKlwpPS4qL1wxL3AnXCcnYDsgZG8KLSAgICBldmFs IGFjX3ZhbD1cJCRhY192YXIKLSAgICBjYXNlICRhY192YWwgaW4gIygKLSAgICAqJHthc19ubH0q KQotICAgICAgY2FzZSAkYWNfdmFyIGluICMoCi0gICAgICAqX2N2XyopIHsgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogY2FjaGUgdmFyaWFibGUgJGFjX3Zh ciBjb250YWlucyBhIG5ld2xpbmUiID4mNQotJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogY2Fj aGUgdmFyaWFibGUgJGFjX3ZhciBjb250YWlucyBhIG5ld2xpbmUiID4mMjt9IDs7Ci0gICAgICBl c2FjCi0gICAgICBjYXNlICRhY192YXIgaW4gIygKLSAgICAgIF8gfCBJRlMgfCBhc19ubCkgOzsg IygKLSAgICAgIEJBU0hfQVJHViB8IEJBU0hfU09VUkNFKSBldmFsICRhY192YXI9IDs7ICMoCi0g ICAgICAqKSB7IGV2YWwgJGFjX3Zhcj07IHVuc2V0ICRhY192YXI7fSA7OwotICAgICAgZXNhYyA7 OwotICAgIGVzYWMKLSAgZG9uZQotICAoc2V0KSAyPiYxIHwKLSAgICBjYXNlICRhc19ubGAoYWNf c3BhY2U9J1wnJyAnXCcnOyBzZXQpIDI+JjFgIGluICMoCi0gICAgKiR7YXNfbmx9YWNfc3BhY2U9 XCAqKQotICAgICAgc2VkIC1uIFwKLQkicy8nXCcnLydcJydcXFxcJ1wnJydcJycvZzsKLQkgIHMv XlxcKFtfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKlxcKT1cXCguKlxcKS9cXDE9 J1wnJ1xcMidcJycvcCIKLSAgICAgIDs7ICMoCi0gICAgKikKLSAgICAgIHNlZCAtbiAiL15bXyRh c19jcl9hbG51bV0qX2N2X1tfJGFzX2NyX2FsbnVtXSo9L3AiCi0gICAgICA7OwotICAgIGVzYWMg fAotICAgIHNvcnQKLSkKLSAgICBlY2hvCi0KLSAgICAkYXNfZWNobyAiIyMgLS0tLS0tLS0tLS0t LS0tLS0gIyMKLSMjIE91dHB1dCB2YXJpYWJsZXMuICMjCi0jIyAtLS0tLS0tLS0tLS0tLS0tLSAj IyIKLSAgICBlY2hvCi0gICAgZm9yIGFjX3ZhciBpbiAkYWNfc3Vic3RfdmFycwotICAgIGRvCi0g ICAgICBldmFsIGFjX3ZhbD1cJCRhY192YXIKLSAgICAgIGNhc2UgJGFjX3ZhbCBpbgotICAgICAg KlwnXCcnKikgYWNfdmFsPWAkYXNfZWNobyAiJGFjX3ZhbCIgfCBzZWQgInMvJ1wnJy8nXCcnXFxc XFxcXFwnXCcnJ1wnJy9nImA7OwotICAgICAgZXNhYwotICAgICAgJGFzX2VjaG8gIiRhY192YXI9 J1wnJyRhY192YWwnXCcnIgotICAgIGRvbmUgfCBzb3J0Ci0gICAgZWNobwotCi0gICAgaWYgdGVz dCAtbiAiJGFjX3N1YnN0X2ZpbGVzIjsgdGhlbgotICAgICAgJGFzX2VjaG8gIiMjIC0tLS0tLS0t LS0tLS0tLS0tLS0gIyMKLSMjIEZpbGUgc3Vic3RpdHV0aW9ucy4gIyMKLSMjIC0tLS0tLS0tLS0t LS0tLS0tLS0gIyMiCi0gICAgICBlY2hvCi0gICAgICBmb3IgYWNfdmFyIGluICRhY19zdWJzdF9m aWxlcwotICAgICAgZG8KLQlldmFsIGFjX3ZhbD1cJCRhY192YXIKLQljYXNlICRhY192YWwgaW4K LQkqXCdcJycqKSBhY192YWw9YCRhc19lY2hvICIkYWNfdmFsIiB8IHNlZCAicy8nXCcnLydcJydc XFxcXFxcXCdcJycnXCcnL2ciYDs7Ci0JZXNhYwotCSRhc19lY2hvICIkYWNfdmFyPSdcJyckYWNf dmFsJ1wnJyIKLSAgICAgIGRvbmUgfCBzb3J0Ci0gICAgICBlY2hvCi0gICAgZmkKLQotICAgIGlm IHRlc3QgLXMgY29uZmRlZnMuaDsgdGhlbgotICAgICAgJGFzX2VjaG8gIiMjIC0tLS0tLS0tLS0t ICMjCi0jIyBjb25mZGVmcy5oLiAjIwotIyMgLS0tLS0tLS0tLS0gIyMiCi0gICAgICBlY2hvCi0g ICAgICBjYXQgY29uZmRlZnMuaAotICAgICAgZWNobwotICAgIGZpCi0gICAgdGVzdCAiJGFjX3Np Z25hbCIgIT0gMCAmJgotICAgICAgJGFzX2VjaG8gIiRhc19tZTogY2F1Z2h0IHNpZ25hbCAkYWNf c2lnbmFsIgotICAgICRhc19lY2hvICIkYXNfbWU6IGV4aXQgJGV4aXRfc3RhdHVzIgotICB9ID4m NQotICBybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogJiYKLSAgICBybSAtZiAtciBj b25mdGVzdCogY29uZmRlZnMqIGNvbmYkJCogJGFjX2NsZWFuX2ZpbGVzICYmCi0gICAgZXhpdCAk ZXhpdF9zdGF0dXMKLScgMAotZm9yIGFjX3NpZ25hbCBpbiAxIDIgMTMgMTU7IGRvCi0gIHRyYXAg J2FjX3NpZ25hbD0nJGFjX3NpZ25hbCc7IGFzX2ZuX2V4aXQgMScgJGFjX3NpZ25hbAotZG9uZQot YWNfc2lnbmFsPTAKLQotIyBjb25mZGVmcy5oIGF2b2lkcyBPUyBjb21tYW5kIGxpbmUgbGVuZ3Ro IGxpbWl0cyB0aGF0IERFRlMgY2FuIGV4Y2VlZC4KLXJtIC1mIC1yIGNvbmZ0ZXN0KiBjb25mZGVm cy5oCi0KLSRhc19lY2hvICIvKiBjb25mZGVmcy5oICovIiA+IGNvbmZkZWZzLmgKLQotIyBQcmVk ZWZpbmVkIHByZXByb2Nlc3NvciB2YXJpYWJsZXMuCi0KLWNhdCA+PmNvbmZkZWZzLmggPDxfQUNF T0YKLSNkZWZpbmUgUEFDS0FHRV9OQU1FICIkUEFDS0FHRV9OQU1FIgotX0FDRU9GCi0KLWNhdCA+ PmNvbmZkZWZzLmggPDxfQUNFT0YKLSNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICIkUEFDS0FHRV9U QVJOQU1FIgotX0FDRU9GCi0KLWNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSNkZWZpbmUgUEFD S0FHRV9WRVJTSU9OICIkUEFDS0FHRV9WRVJTSU9OIgotX0FDRU9GCi0KLWNhdCA+PmNvbmZkZWZz LmggPDxfQUNFT0YKLSNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgIiRQQUNLQUdFX1NUUklORyIKLV9B Q0VPRgotCi1jYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0jZGVmaW5lIFBBQ0tBR0VfQlVHUkVQ T1JUICIkUEFDS0FHRV9CVUdSRVBPUlQiCi1fQUNFT0YKLQotY2F0ID4+Y29uZmRlZnMuaCA8PF9B Q0VPRgotI2RlZmluZSBQQUNLQUdFX1VSTCAiJFBBQ0tBR0VfVVJMIgotX0FDRU9GCi0KLQotIyBM ZXQgdGhlIHNpdGUgZmlsZSBzZWxlY3QgYW4gYWx0ZXJuYXRlIGNhY2hlIGZpbGUgaWYgaXQgd2Fu dHMgdG8uCi0jIFByZWZlciBhbiBleHBsaWNpdGx5IHNlbGVjdGVkIGZpbGUgdG8gYXV0b21hdGlj YWxseSBzZWxlY3RlZCBvbmVzLgotYWNfc2l0ZV9maWxlMT1OT05FCi1hY19zaXRlX2ZpbGUyPU5P TkUKLWlmIHRlc3QgLW4gIiRDT05GSUdfU0lURSI7IHRoZW4KLSAgIyBXZSBkbyBub3Qgd2FudCBh IFBBVEggc2VhcmNoIGZvciBjb25maWcuc2l0ZS4KLSAgY2FzZSAkQ09ORklHX1NJVEUgaW4gIygo Ci0gICAgLSopICBhY19zaXRlX2ZpbGUxPS4vJENPTkZJR19TSVRFOzsKLSAgICAqLyopIGFjX3Np dGVfZmlsZTE9JENPTkZJR19TSVRFOzsKLSAgICAqKSAgIGFjX3NpdGVfZmlsZTE9Li8kQ09ORklH X1NJVEU7OwotICBlc2FjCi1lbGlmIHRlc3QgIngkcHJlZml4IiAhPSB4Tk9ORTsgdGhlbgotICBh Y19zaXRlX2ZpbGUxPSRwcmVmaXgvc2hhcmUvY29uZmlnLnNpdGUKLSAgYWNfc2l0ZV9maWxlMj0k cHJlZml4L2V0Yy9jb25maWcuc2l0ZQotZWxzZQotICBhY19zaXRlX2ZpbGUxPSRhY19kZWZhdWx0 X3ByZWZpeC9zaGFyZS9jb25maWcuc2l0ZQotICBhY19zaXRlX2ZpbGUyPSRhY19kZWZhdWx0X3By ZWZpeC9ldGMvY29uZmlnLnNpdGUKLWZpCi1mb3IgYWNfc2l0ZV9maWxlIGluICIkYWNfc2l0ZV9m aWxlMSIgIiRhY19zaXRlX2ZpbGUyIgotZG8KLSAgdGVzdCAieCRhY19zaXRlX2ZpbGUiID0geE5P TkUgJiYgY29udGludWUKLSAgaWYgdGVzdCAvZGV2L251bGwgIT0gIiRhY19zaXRlX2ZpbGUiICYm IHRlc3QgLXIgIiRhY19zaXRlX2ZpbGUiOyB0aGVuCi0gICAgeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBsb2FkaW5nIHNpdGUgc2NyaXB0ICRhY19zaXRlX2ZpbGUiID4m NQotJGFzX2VjaG8gIiRhc19tZTogbG9hZGluZyBzaXRlIHNjcmlwdCAkYWNfc2l0ZV9maWxlIiA+ JjY7fQotICAgIHNlZCAncy9eL3wgLycgIiRhY19zaXRlX2ZpbGUiID4mNQotICAgIC4gIiRhY19z aXRlX2ZpbGUiIFwKLSAgICAgIHx8IHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQotJGFzX2VjaG8gIiRhc19tZTogZXJy b3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQotYXNfZm5fZXJyb3IgJD8gImZhaWxlZCB0byBsb2Fk IHNpdGUgc2NyaXB0ICRhY19zaXRlX2ZpbGUKLVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRl dGFpbHMiICIkTElORU5PIiA1OyB9Ci0gIGZpCi1kb25lCi0KLWlmIHRlc3QgLXIgIiRjYWNoZV9m aWxlIjsgdGhlbgotICAjIFNvbWUgdmVyc2lvbnMgb2YgYmFzaCB3aWxsIGZhaWwgdG8gc291cmNl IC9kZXYvbnVsbCAoc3BlY2lhbCBmaWxlcwotICAjIGFjdHVhbGx5KSwgc28gd2UgYXZvaWQgZG9p bmcgdGhhdC4gIERKR1BQIGVtdWxhdGVzIGl0IGFzIGEgcmVndWxhciBmaWxlLgotICBpZiB0ZXN0 IC9kZXYvbnVsbCAhPSAiJGNhY2hlX2ZpbGUiICYmIHRlc3QgLWYgIiRjYWNoZV9maWxlIjsgdGhl bgotICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogbG9hZGluZyBj YWNoZSAkY2FjaGVfZmlsZSIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiBsb2FkaW5nIGNhY2hlICRj YWNoZV9maWxlIiA+JjY7fQotICAgIGNhc2UgJGNhY2hlX2ZpbGUgaW4KLSAgICAgIFtcXC9dKiB8 ID86W1xcL10qICkgLiAiJGNhY2hlX2ZpbGUiOzsKLSAgICAgICopICAgICAgICAgICAgICAgICAg ICAgIC4gIi4vJGNhY2hlX2ZpbGUiOzsKLSAgICBlc2FjCi0gIGZpCi1lbHNlCi0gIHsgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY3JlYXRpbmcgY2FjaGUgJGNhY2hlX2Zp bGUiID4mNQotJGFzX2VjaG8gIiRhc19tZTogY3JlYXRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4m Njt9Ci0gID4kY2FjaGVfZmlsZQotZmkKLQotIyBDaGVjayB0aGF0IHRoZSBwcmVjaW91cyB2YXJp YWJsZXMgc2F2ZWQgaW4gdGhlIGNhY2hlIGhhdmUga2VwdCB0aGUgc2FtZQotIyB2YWx1ZS4KLWFj X2NhY2hlX2NvcnJ1cHRlZD1mYWxzZQotZm9yIGFjX3ZhciBpbiAkYWNfcHJlY2lvdXNfdmFyczsg ZG8KLSAgZXZhbCBhY19vbGRfc2V0PVwkYWNfY3ZfZW52XyR7YWNfdmFyfV9zZXQKLSAgZXZhbCBh Y19uZXdfc2V0PVwkYWNfZW52XyR7YWNfdmFyfV9zZXQKLSAgZXZhbCBhY19vbGRfdmFsPVwkYWNf Y3ZfZW52XyR7YWNfdmFyfV92YWx1ZQotICBldmFsIGFjX25ld192YWw9XCRhY19lbnZfJHthY192 YXJ9X3ZhbHVlCi0gIGNhc2UgJGFjX29sZF9zZXQsJGFjX25ld19zZXQgaW4KLSAgICBzZXQsKQot ICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogXGAk YWNfdmFyJyB3YXMgc2V0IHRvIFxgJGFjX29sZF92YWwnIGluIHRoZSBwcmV2aW91cyBydW4iID4m NQotJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IFxgJGFjX3Zhcicgd2FzIHNldCB0byBcYCRhY19v bGRfdmFsJyBpbiB0aGUgcHJldmlvdXMgcnVuIiA+JjI7fQotICAgICAgYWNfY2FjaGVfY29ycnVw dGVkPTogOzsKLSAgICAsc2V0KQotICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBlcnJvcjogXGAkYWNfdmFyJyB3YXMgbm90IHNldCBpbiB0aGUgcHJldmlvdXMg cnVuIiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBcYCRhY192YXInIHdhcyBub3Qgc2V0 IGluIHRoZSBwcmV2aW91cyBydW4iID4mMjt9Ci0gICAgICBhY19jYWNoZV9jb3JydXB0ZWQ9OiA7 OwotICAgICwpOzsKLSAgICAqKQotICAgICAgaWYgdGVzdCAieCRhY19vbGRfdmFsIiAhPSAieCRh Y19uZXdfdmFsIjsgdGhlbgotCSMgZGlmZmVyZW5jZXMgaW4gd2hpdGVzcGFjZSBkbyBub3QgbGVh ZCB0byBmYWlsdXJlLgotCWFjX29sZF92YWxfdz1gZWNobyB4ICRhY19vbGRfdmFsYAotCWFjX25l d192YWxfdz1gZWNobyB4ICRhY19uZXdfdmFsYAotCWlmIHRlc3QgIiRhY19vbGRfdmFsX3ciICE9 ICIkYWNfbmV3X3ZhbF93IjsgdGhlbgotCSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBlcnJvcjogXGAkYWNfdmFyJyBoYXMgY2hhbmdlZCBzaW5jZSB0aGUgcHJldmlv dXMgcnVuOiIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiBlcnJvcjogXGAkYWNfdmFyJyBoYXMgY2hh bmdlZCBzaW5jZSB0aGUgcHJldmlvdXMgcnVuOiIgPiYyO30KLQkgIGFjX2NhY2hlX2NvcnJ1cHRl ZD06Ci0JZWxzZQotCSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiB3 YXJuaW5nOiBpZ25vcmluZyB3aGl0ZXNwYWNlIGNoYW5nZXMgaW4gXGAkYWNfdmFyJyBzaW5jZSB0 aGUgcHJldmlvdXMgcnVuOiIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiB3YXJuaW5nOiBpZ25vcmlu ZyB3aGl0ZXNwYWNlIGNoYW5nZXMgaW4gXGAkYWNfdmFyJyBzaW5jZSB0aGUgcHJldmlvdXMgcnVu OiIgPiYyO30KLQkgIGV2YWwgJGFjX3Zhcj1cJGFjX29sZF92YWwKLQlmaQotCXsgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogICBmb3JtZXIgdmFsdWU6ICBcYCRhY19vbGRf dmFsJyIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiAgIGZvcm1lciB2YWx1ZTogIFxgJGFjX29sZF92 YWwnIiA+JjI7fQotCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogICBj dXJyZW50IHZhbHVlOiBcYCRhY19uZXdfdmFsJyIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiAgIGN1 cnJlbnQgdmFsdWU6IFxgJGFjX25ld192YWwnIiA+JjI7fQotICAgICAgZmk7OwotICBlc2FjCi0g ICMgUGFzcyBwcmVjaW91cyB2YXJpYWJsZXMgdG8gY29uZmlnLnN0YXR1cy4KLSAgaWYgdGVzdCAi JGFjX25ld19zZXQiID0gc2V0OyB0aGVuCi0gICAgY2FzZSAkYWNfbmV3X3ZhbCBpbgotICAgICpc JyopIGFjX2FyZz0kYWNfdmFyPWAkYXNfZWNobyAiJGFjX25ld192YWwiIHwgc2VkICJzLycvJ1xc XFxcXFxcJycvZyJgIDs7Ci0gICAgKikgYWNfYXJnPSRhY192YXI9JGFjX25ld192YWwgOzsKLSAg ICBlc2FjCi0gICAgY2FzZSAiICRhY19jb25maWd1cmVfYXJncyAiIGluCi0gICAgICAqIiAnJGFj X2FyZycgIiopIDs7ICMgQXZvaWQgZHVwcy4gIFVzZSBvZiBxdW90ZXMgZW5zdXJlcyBhY2N1cmFj eS4KLSAgICAgICopIGFzX2ZuX2FwcGVuZCBhY19jb25maWd1cmVfYXJncyAiICckYWNfYXJnJyIg OzsKLSAgICBlc2FjCi0gIGZpCi1kb25lCi1pZiAkYWNfY2FjaGVfY29ycnVwdGVkOyB0aGVuCi0g IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFj X3B3ZCc6IiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYy O30KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogY2hh bmdlcyBpbiB0aGUgZW52aXJvbm1lbnQgY2FuIGNvbXByb21pc2UgdGhlIGJ1aWxkIiA+JjUKLSRh c19lY2hvICIkYXNfbWU6IGVycm9yOiBjaGFuZ2VzIGluIHRoZSBlbnZpcm9ubWVudCBjYW4gY29t cHJvbWlzZSB0aGUgYnVpbGQiID4mMjt9Ci0gIGFzX2ZuX2Vycm9yICQ/ICJydW4gXGBtYWtlIGRp c3RjbGVhbicgYW5kL29yIFxgcm0gJGNhY2hlX2ZpbGUnIGFuZCBzdGFydCBvdmVyIiAiJExJTkVO TyIgNQotZmkKLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0jIyBNYWluIGJvZHkgb2Ygc2Ny aXB0LiAjIwotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLQotYWNfZXh0PWMKLWFjX2NwcD0n JENQUCAkQ1BQRkxBR1MnCi1hY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29u ZnRlc3QuJGFjX2V4dCA+JjUnCi1hY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRD RkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwotYWNf Y29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQotCi0KLQotYWNfY29uZmlnX2ZpbGVz PSIkYWNfY29uZmlnX2ZpbGVzIC4uL2NvbmZpZy9Ub29scy5tayBob3RwbHVnL0ZyZWVCU0QvcmMu ZC94ZW5jb21tb25zIGhvdHBsdWcvRnJlZUJTRC9yYy5kL3hlbmRyaXZlcmRvbWFpbiBob3RwbHVn L0xpbnV4L2luaXQuZC9zeXNjb25maWcueGVuY29tbW9ucyBob3RwbHVnL0xpbnV4L2luaXQuZC9z eXNjb25maWcueGVuZG9tYWlucyBob3RwbHVnL0xpbnV4L2luaXQuZC94ZW4td2F0Y2hkb2cgaG90 cGx1Zy9MaW51eC9pbml0LmQveGVuY29tbW9ucyBob3RwbHVnL0xpbnV4L2luaXQuZC94ZW5kb21h aW5zIGhvdHBsdWcvTGludXgvaW5pdC5kL3hlbmRyaXZlcmRvbWFpbiBob3RwbHVnL0xpbnV4L2xh dW5jaC14ZW5zdG9yZSBob3RwbHVnL0xpbnV4L3ZpZi1zZXR1cCBob3RwbHVnL0xpbnV4L3hlbi1o b3RwbHVnLWNvbW1vbi5zaCBob3RwbHVnL0xpbnV4L3hlbmRvbWFpbnMgaG90cGx1Zy9OZXRCU0Qv cmMuZC94ZW5jb21tb25zIGhvdHBsdWcvTmV0QlNEL3JjLmQveGVuZHJpdmVyZG9tYWluIG9jYW1s L3hlbnN0b3JlZC9veGVuc3RvcmVkLmNvbmYiCi0KLWFjX2NvbmZpZ19oZWFkZXJzPSIkYWNfY29u ZmlnX2hlYWRlcnMgY29uZmlnLmgiCi0KLWFjX2F1eF9kaXI9Ci1mb3IgYWNfZGlyIGluIC4uLyAi JHNyY2RpciIvLi4vOyBkbwotICBpZiB0ZXN0IC1mICIkYWNfZGlyL2luc3RhbGwtc2giOyB0aGVu Ci0gICAgYWNfYXV4X2Rpcj0kYWNfZGlyCi0gICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIv aW5zdGFsbC1zaCAtYyIKLSAgICBicmVhawotICBlbGlmIHRlc3QgLWYgIiRhY19kaXIvaW5zdGFs bC5zaCI7IHRoZW4KLSAgICBhY19hdXhfZGlyPSRhY19kaXIKLSAgICBhY19pbnN0YWxsX3NoPSIk YWNfYXV4X2Rpci9pbnN0YWxsLnNoIC1jIgotICAgIGJyZWFrCi0gIGVsaWYgdGVzdCAtZiAiJGFj X2Rpci9zaHRvb2wiOyB0aGVuCi0gICAgYWNfYXV4X2Rpcj0kYWNfZGlyCi0gICAgYWNfaW5zdGFs bF9zaD0iJGFjX2F1eF9kaXIvc2h0b29sIGluc3RhbGwgLWMiCi0gICAgYnJlYWsKLSAgZmkKLWRv bmUKLWlmIHRlc3QgLXogIiRhY19hdXhfZGlyIjsgdGhlbgotICBhc19mbl9lcnJvciAkPyAiY2Fu bm90IGZpbmQgaW5zdGFsbC1zaCwgaW5zdGFsbC5zaCwgb3Igc2h0b29sIGluIC4uLyBcIiRzcmNk aXJcIi8uLi8iICIkTElORU5PIiA1Ci1maQotCi0jIFRoZXNlIHRocmVlIHZhcmlhYmxlcyBhcmUg dW5kb2N1bWVudGVkIGFuZCB1bnN1cHBvcnRlZCwKLSMgYW5kIGFyZSBpbnRlbmRlZCB0byBiZSB3 aXRoZHJhd24gaW4gYSBmdXR1cmUgQXV0b2NvbmYgcmVsZWFzZS4KLSMgVGhleSBjYW4gY2F1c2Ug c2VyaW91cyBwcm9ibGVtcyBpZiBhIGJ1aWxkZXIncyBzb3VyY2UgdHJlZSBpcyBpbiBhIGRpcmVj dG9yeQotIyB3aG9zZSBmdWxsIG5hbWUgY29udGFpbnMgdW51c3VhbCBjaGFyYWN0ZXJzLgotYWNf Y29uZmlnX2d1ZXNzPSIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLmd1ZXNzIiAgIyBQbGVhc2Ug ZG9uJ3QgdXNlIHRoaXMgdmFyLgotYWNfY29uZmlnX3N1Yj0iJFNIRUxMICRhY19hdXhfZGlyL2Nv bmZpZy5zdWIiICAjIFBsZWFzZSBkb24ndCB1c2UgdGhpcyB2YXIuCi1hY19jb25maWd1cmU9IiRT SEVMTCAkYWNfYXV4X2Rpci9jb25maWd1cmUiICAjIFBsZWFzZSBkb24ndCB1c2UgdGhpcyB2YXIu Ci0KLQotCi0jIENoZWNrIGlmIENGTEFHUywgTERGTEFHUywgTElCUywgQ1BQRkxBR1Mgb3IgQ1BQ IGlzIHNldCBhbmQgcHJpbnQgYSB3YXJuaW5nCi0KLWlmIHRlc3QgLW4gIiRDQyRDRkxBR1MkTERG TEFHUyRMSUJTJENQUEZMQUdTJENQUCI7IHRoZW4gOgotCi0gICAgeyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBTZXR0aW5nIENDLCBDRkxBR1MsIExERkxB R1MsIExJQlMsIENQUEZMQUdTIG9yIENQUCBpcyBub3QgXAotcmVjb21tZW5kZWQsIHVzZSBQUkVQ RU5EX0lOQ0xVREVTLCBQUkVQRU5EX0xJQiwgXAotQVBQRU5EX0lOQ0xVREVTIGFuZCBBUFBFTkRf TElCIGluc3RlYWQgd2hlbiBwb3NzaWJsZS4iID4mNQotJGFzX2VjaG8gIiRhc19tZTogV0FSTklO RzogU2V0dGluZyBDQywgQ0ZMQUdTLCBMREZMQUdTLCBMSUJTLCBDUFBGTEFHUyBvciBDUFAgaXMg bm90IFwKLXJlY29tbWVuZGVkLCB1c2UgUFJFUEVORF9JTkNMVURFUywgUFJFUEVORF9MSUIsIFwK LUFQUEVORF9JTkNMVURFUyBhbmQgQVBQRU5EX0xJQiBpbnN0ZWFkIHdoZW4gcG9zc2libGUuIiA+ JjI7fQotCi1maQotCi0jIE1ha2Ugc3VyZSB3ZSBjYW4gcnVuIGNvbmZpZy5zdWIuCi0kU0hFTEwg IiRhY19hdXhfZGlyL2NvbmZpZy5zdWIiIHN1bjQgPi9kZXYvbnVsbCAyPiYxIHx8Ci0gIGFzX2Zu X2Vycm9yICQ/ICJjYW5ub3QgcnVuICRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuc3ViIiAiJExJ TkVOTyIgNQotCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIGJ1aWxkIHN5c3RlbSB0eXBlIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGJ1aWxkIHN5 c3RlbSB0eXBlLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X2J1aWxkKzp9IGZhbHNlOyB0aGVuIDoK LSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgYWNfYnVpbGRfYWxpYXM9JGJ1 aWxkX2FsaWFzCi10ZXN0ICJ4JGFjX2J1aWxkX2FsaWFzIiA9IHggJiYKLSAgYWNfYnVpbGRfYWxp YXM9YCRTSEVMTCAiJGFjX2F1eF9kaXIvY29uZmlnLmd1ZXNzImAKLXRlc3QgIngkYWNfYnVpbGRf YWxpYXMiID0geCAmJgotICBhc19mbl9lcnJvciAkPyAiY2Fubm90IGd1ZXNzIGJ1aWxkIHR5cGU7 IHlvdSBtdXN0IHNwZWNpZnkgb25lIiAiJExJTkVOTyIgNQotYWNfY3ZfYnVpbGQ9YCRTSEVMTCAi JGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgJGFjX2J1aWxkX2FsaWFzYCB8fAotICBhc19mbl9lcnJv ciAkPyAiJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIgJGFjX2J1aWxkX2FsaWFzIGZhaWxl ZCIgIiRMSU5FTk8iIDUKLQotZmkKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogcmVzdWx0OiAkYWNfY3ZfYnVpbGQiID4mNQotJGFzX2VjaG8gIiRhY19jdl9idWlsZCIg PiY2OyB9Ci1jYXNlICRhY19jdl9idWlsZCBpbgotKi0qLSopIDs7Ci0qKSBhc19mbl9lcnJvciAk PyAiaW52YWxpZCB2YWx1ZSBvZiBjYW5vbmljYWwgYnVpbGQiICIkTElORU5PIiA1OzsKLWVzYWMK LWJ1aWxkPSRhY19jdl9idWlsZAotYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSctJwotc2V0IHggJGFj X2N2X2J1aWxkCi1zaGlmdAotYnVpbGRfY3B1PSQxCi1idWlsZF92ZW5kb3I9JDIKLXNoaWZ0OyBz aGlmdAotIyBSZW1lbWJlciwgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBJRlMgaXMgdXNlZCB0byBj cmVhdGUgJCosCi0jIGV4Y2VwdCB3aXRoIG9sZCBzaGVsbHM6Ci1idWlsZF9vcz0kKgotSUZTPSRh Y19zYXZlX0lGUwotY2FzZSAkYnVpbGRfb3MgaW4gKlwgKikgYnVpbGRfb3M9YGVjaG8gIiRidWls ZF9vcyIgfCBzZWQgJ3MvIC8tL2cnYDs7IGVzYWMKLQotCi17ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUiID4mNQotJGFzX2Vj aG9fbiAiY2hlY2tpbmcgaG9zdCBzeXN0ZW0gdHlwZS4uLiAiID4mNjsgfQotaWYgJHthY19jdl9o b3N0Kzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UK LSAgaWYgdGVzdCAieCRob3N0X2FsaWFzIiA9IHg7IHRoZW4KLSAgYWNfY3ZfaG9zdD0kYWNfY3Zf YnVpbGQKLWVsc2UKLSAgYWNfY3ZfaG9zdD1gJFNIRUxMICIkYWNfYXV4X2Rpci9jb25maWcuc3Vi IiAkaG9zdF9hbGlhc2AgfHwKLSAgICBhc19mbl9lcnJvciAkPyAiJFNIRUxMICRhY19hdXhfZGly L2NvbmZpZy5zdWIgJGhvc3RfYWxpYXMgZmFpbGVkIiAiJExJTkVOTyIgNQotZmkKLQotZmkKLXsg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfaG9z dCIgPiY1Ci0kYXNfZWNobyAiJGFjX2N2X2hvc3QiID4mNjsgfQotY2FzZSAkYWNfY3ZfaG9zdCBp bgotKi0qLSopIDs7Ci0qKSBhc19mbl9lcnJvciAkPyAiaW52YWxpZCB2YWx1ZSBvZiBjYW5vbmlj YWwgaG9zdCIgIiRMSU5FTk8iIDU7OwotZXNhYwotaG9zdD0kYWNfY3ZfaG9zdAotYWNfc2F2ZV9J RlM9JElGUzsgSUZTPSctJwotc2V0IHggJGFjX2N2X2hvc3QKLXNoaWZ0Ci1ob3N0X2NwdT0kMQot aG9zdF92ZW5kb3I9JDIKLXNoaWZ0OyBzaGlmdAotIyBSZW1lbWJlciwgdGhlIGZpcnN0IGNoYXJh Y3RlciBvZiBJRlMgaXMgdXNlZCB0byBjcmVhdGUgJCosCi0jIGV4Y2VwdCB3aXRoIG9sZCBzaGVs bHM6Ci1ob3N0X29zPSQqCi1JRlM9JGFjX3NhdmVfSUZTCi1jYXNlICRob3N0X29zIGluICpcICop IGhvc3Rfb3M9YGVjaG8gIiRob3N0X29zIiB8IHNlZCAncy8gLy0vZydgOzsgZXNhYwotCi0KLQot Y2FzZSAkaG9zdF92ZW5kb3IgaW4KLXJ1bXB4ZW58cnVtcHJ1bikgQ09ORklHX1JVTVA9eTsgcnVt cD10cnVlIDs7Ci0qKSAgICAgICAgICAgICAgIENPTkZJR19SVU1QPW47IHJ1bXA9ZmFsc2UgOzsK LWVzYWMKLQotCi1hY19leHQ9YwotYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKLWFjX2NvbXBpbGU9 JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKLWFjX2xpbms9 JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29u ZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCi1hY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGls ZXJfZ251Ci1pZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0gICMgRXh0cmFjdCB0 aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1nY2MiLCBzbyBpdCBjYW4gYmUgYSBw cm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9Z2NjOyBh Y193b3JkPSQyCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIGZvciAkYWNfd29yZCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQu Li4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfcHJvZ19DQys6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19l Y2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KLSAg YWNfY3ZfcHJvZ19DQz0iJENDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLWVs c2UKLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLWZvciBhc19kaXIgaW4g JFBBVEgKLWRvCi0gIElGUz0kYXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNf ZGlyPS4KLSAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9u czsgZG8KLSAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNf ZXh0IjsgdGhlbgotICAgIGFjX2N2X3Byb2dfQ0M9IiR7YWNfdG9vbF9wcmVmaXh9Z2NjIgotICAg ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFj X3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgIGJyZWFrIDIKLSAgZmkKLWRvbmUKLSAgZG9uZQot SUZTPSRhc19zYXZlX0lGUwotCi1maQotZmkKLUNDPSRhY19jdl9wcm9nX0NDCi1pZiB0ZXN0IC1u ICIkQ0MiOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiAkQ0MiID4mNQotJGFzX2VjaG8gIiRDQyIgPiY2OyB9Ci1lbHNlCi0gIHsgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNo byAibm8iID4mNjsgfQotZmkKLQotCi1maQotaWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQ0MiOyB0 aGVuCi0gIGFjX2N0X0NDPSRDQwotICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImdjYyIs IHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgZ2NjOyBh Y193b3JkPSQyCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIGZvciAkYWNfd29yZCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQu Li4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfcHJvZ19hY19jdF9DQys6fSBmYWxzZTsgdGhlbiA6Ci0g ICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGlmIHRlc3QgLW4gIiRhY19jdF9D QyI7IHRoZW4KLSAgYWNfY3ZfcHJvZ19hY19jdF9DQz0iJGFjX2N0X0NDIiAjIExldCB0aGUgdXNl ciBvdmVycmlkZSB0aGUgdGVzdC4KLWVsc2UKLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9T RVBBUkFUT1IKLWZvciBhc19kaXIgaW4gJFBBVEgKLWRvCi0gIElGUz0kYXNfc2F2ZV9JRlMKLSAg dGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICBmb3IgYWNfZXhlY19leHQgaW4gJycg JGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIk YXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotICAgIGFjX2N2X3Byb2dfYWNfY3Rf Q0M9ImdjYyIKLSAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3Vu ZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICBicmVhayAyCi0gIGZpCi1k b25lCi0gIGRvbmUKLUlGUz0kYXNfc2F2ZV9JRlMKLQotZmkKLWZpCi1hY19jdF9DQz0kYWNfY3Zf cHJvZ19hY19jdF9DQwotaWYgdGVzdCAtbiAiJGFjX2N0X0NDIjsgdGhlbgotICB7ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0NDIiA+JjUKLSRh c19lY2hvICIkYWNfY3RfQ0MiID4mNjsgfQotZWxzZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0K LWZpCi0KLSAgaWYgdGVzdCAieCRhY19jdF9DQyIgPSB4OyB0aGVuCi0gICAgQ0M9IiIKLSAgZWxz ZQotICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLXllczopCi17 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNy b3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0kYXNfZWNobyAi JGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0 IHRyaXBsZXQiID4mMjt9Ci1hY190b29sX3dhcm5lZD15ZXMgOzsKLWVzYWMKLSAgICBDQz0kYWNf Y3RfQ0MKLSAgZmkKLWVsc2UKLSAgQ0M9IiRhY19jdl9wcm9nX0NDIgotZmkKLQotaWYgdGVzdCAt eiAiJENDIjsgdGhlbgotICAgICAgICAgIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRo ZW4KLSAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9Y2Mi LCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1bW15ICR7YWNf dG9vbF9wcmVmaXh9Y2M7IGFjX3dvcmQ9JDIKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSRhc19lY2hvX24gImNoZWNr aW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgJHthY19jdl9wcm9nX0NDKzp9IGZhbHNl OyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgaWYgdGVzdCAt biAiJENDIjsgdGhlbgotICBhY19jdl9wcm9nX0NDPSIkQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJy aWRlIHRoZSB0ZXN0LgotZWxzZQotYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRP UgotZm9yIGFzX2RpciBpbiAkUEFUSAotZG8KLSAgSUZTPSRhc19zYXZlX0lGUwotICB0ZXN0IC16 ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhl Y3V0YWJsZV9leHRlbnNpb25zOyBkbwotICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIv JGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0gICAgYWNfY3ZfcHJvZ19DQz0iJHthY190b29s X3ByZWZpeH1jYyIKLSAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBm b3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICBicmVhayAyCi0gIGZp Ci1kb25lCi0gIGRvbmUKLUlGUz0kYXNfc2F2ZV9JRlMKLQotZmkKLWZpCi1DQz0kYWNfY3ZfcHJv Z19DQwotaWYgdGVzdCAtbiAiJENDIjsgdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IHJlc3VsdDogJENDIiA+JjUKLSRhc19lY2hvICIkQ0MiID4mNjsgfQot ZWxzZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog bm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLWZpCi0KLQotICBmaQotZmkKLWlmIHRlc3Qg LXogIiRDQyI7IHRoZW4KLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJjYyIsIHNvIGl0 IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgY2M7IGFjX3dvcmQ9 JDIKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9y ICRhY193b3JkIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4m NjsgfQotaWYgJHthY19jdl9wcm9nX0NDKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAi KGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbgotICBhY19jdl9w cm9nX0NDPSIkQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotZWxzZQotICBh Y19wcm9nX3JlamVjdGVkPW5vCi1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9S Ci1mb3IgYXNfZGlyIGluICRQQVRICi1kbwotICBJRlM9JGFzX3NhdmVfSUZTCi0gIHRlc3QgLXog IiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVj dXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8k YWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSAgICBpZiB0ZXN0ICIkYXNfZGlyLyRhY193b3Jk JGFjX2V4ZWNfZXh0IiA9ICIvdXNyL3VjYi9jYyI7IHRoZW4KLSAgICAgICBhY19wcm9nX3JlamVj dGVkPXllcwotICAgICAgIGNvbnRpbnVlCi0gICAgIGZpCi0gICAgYWNfY3ZfcHJvZ19DQz0iY2Mi Ci0gICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rp ci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgYnJlYWsgMgotICBmaQotZG9uZQotICBk b25lCi1JRlM9JGFzX3NhdmVfSUZTCi0KLWlmIHRlc3QgJGFjX3Byb2dfcmVqZWN0ZWQgPSB5ZXM7 IHRoZW4KLSAgIyBXZSBmb3VuZCBhIGJvZ29uIGluIHRoZSBwYXRoLCBzbyBtYWtlIHN1cmUgd2Ug bmV2ZXIgdXNlIGl0LgotICBzZXQgZHVtbXkgJGFjX2N2X3Byb2dfQ0MKLSAgc2hpZnQKLSAgaWYg dGVzdCAkIyAhPSAwOyB0aGVuCi0gICAgIyBXZSBjaG9zZSBhIGRpZmZlcmVudCBjb21waWxlciBm cm9tIHRoZSBib2d1cyBvbmUuCi0gICAgIyBIb3dldmVyLCBpdCBoYXMgdGhlIHNhbWUgYmFzZW5h bWUsIHNvIHRoZSBib2dvbiB3aWxsIGJlIGNob3NlbgotICAgICMgZmlyc3QgaWYgd2Ugc2V0IEND IHRvIGp1c3QgdGhlIGJhc2VuYW1lOyB1c2UgdGhlIGZ1bGwgZmlsZSBuYW1lLgotICAgIHNoaWZ0 Ci0gICAgYWNfY3ZfcHJvZ19DQz0iJGFzX2Rpci8kYWNfd29yZCR7MSsnICd9JEAiCi0gIGZpCi1m aQotZmkKLWZpCi1DQz0kYWNfY3ZfcHJvZ19DQwotaWYgdGVzdCAtbiAiJENDIjsgdGhlbgotICB7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJENDIiA+JjUK LSRhc19lY2hvICIkQ0MiID4mNjsgfQotZWxzZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLWZp Ci0KLQotZmkKLWlmIHRlc3QgLXogIiRDQyI7IHRoZW4KLSAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xf cHJlZml4IjsgdGhlbgotICBmb3IgYWNfcHJvZyBpbiBjbC5leGUKLSAgZG8KLSAgICAjIEV4dHJh Y3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2Fu IGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgk YWNfcHJvZzsgYWNfd29yZD0kMgoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9y ICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3Byb2dfQ0MrOn0gZmFsc2U7IHRoZW4g OgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBpZiB0ZXN0IC1uICIkQ0Mi OyB0aGVuCi0gIGFjX2N2X3Byb2dfQ0M9IiRDQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhl IHRlc3QuCi1lbHNlCi1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi1mb3Ig YXNfZGlyIGluICRQQVRICi1kbwotICBJRlM9JGFzX3NhdmVfSUZTCi0gIHRlc3QgLXogIiRhc19k aXIiICYmIGFzX2Rpcj0uCi0gICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxl X2V4dGVuc2lvbnM7IGRvCi0gIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29y ZCRhY19leGVjX2V4dCI7IHRoZW4KLSAgICBhY19jdl9wcm9nX0NDPSIkYWNfdG9vbF9wcmVmaXgk YWNfcHJvZyIKLSAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3Vu ZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICBicmVhayAyCi0gIGZpCi1k b25lCi0gIGRvbmUKLUlGUz0kYXNfc2F2ZV9JRlMKLQotZmkKLWZpCi1DQz0kYWNfY3ZfcHJvZ19D QwotaWYgdGVzdCAtbiAiJENDIjsgdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IHJlc3VsdDogJENDIiA+JjUKLSRhc19lY2hvICIkQ0MiID4mNjsgfQotZWxz ZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8i ID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLWZpCi0KLQotICAgIHRlc3QgLW4gIiRDQyIgJiYg YnJlYWsKLSAgZG9uZQotZmkKLWlmIHRlc3QgLXogIiRDQyI7IHRoZW4KLSAgYWNfY3RfQ0M9JEND Ci0gIGZvciBhY19wcm9nIGluIGNsLmV4ZQotZG8KLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3Jk IG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1z ZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSRhc19lY2hvX24gImNo ZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgJHthY19jdl9wcm9nX2FjX2N0X0ND Kzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAg aWYgdGVzdCAtbiAiJGFjX2N0X0NDIjsgdGhlbgotICBhY19jdl9wcm9nX2FjX2N0X0NDPSIkYWNf Y3RfQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotZWxzZQotYXNfc2F2ZV9J RlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotZm9yIGFzX2RpciBpbiAkUEFUSAotZG8KLSAg SUZTPSRhc19zYXZlX0lGUwotICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgIGZv ciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICBpZiBh c19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0g ICAgYWNfY3ZfcHJvZ19hY19jdF9DQz0iJGFjX3Byb2ciCi0gICAgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIg PiY1Ci0gICAgYnJlYWsgMgotICBmaQotZG9uZQotICBkb25lCi1JRlM9JGFzX3NhdmVfSUZTCi0K LWZpCi1maQotYWNfY3RfQ0M9JGFjX2N2X3Byb2dfYWNfY3RfQ0MKLWlmIHRlc3QgLW4gIiRhY19j dF9DQyI7IHRoZW4KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy ZXN1bHQ6ICRhY19jdF9DQyIgPiY1Ci0kYXNfZWNobyAiJGFjX2N0X0NDIiA+JjY7IH0KLWVsc2UK LSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+ JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci1maQotCi0KLSAgdGVzdCAtbiAiJGFjX2N0X0NDIiAm JiBicmVhawotZG9uZQotCi0gIGlmIHRlc3QgIngkYWNfY3RfQ0MiID0geDsgdGhlbgotICAgIEND PSIiCi0gIGVsc2UKLSAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGlu Ci15ZXM6KQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5H OiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQot JGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVk IHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci1lc2FjCi0g ICAgQ0M9JGFjX2N0X0NDCi0gIGZpCi1maQotCi1maQotCi0KLXRlc3QgLXogIiRDQyIgJiYgeyB7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19w d2QnOiIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9 Ci1hc19mbl9lcnJvciAkPyAibm8gYWNjZXB0YWJsZSBDIGNvbXBpbGVyIGZvdW5kIGluIFwkUEFU SAotU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KLQot IyBQcm92aWRlIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbXBpbGVyLgotJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIEMgY29tcGlsZXIgdmVy c2lvbiIgPiY1Ci1zZXQgWCAkYWNfY29tcGlsZQotYWNfY29tcGlsZXI9JDIKLWZvciBhY19vcHRp b24gaW4gLS12ZXJzaW9uIC12IC1WIC1xdmVyc2lvbjsgZG8KLSAgeyB7IGFjX3RyeT0iJGFjX2Nv bXBpbGVyICRhY19vcHRpb24gPiY1IgotY2FzZSAiKCgkYWNfdHJ5IiBpbgotICAqXCIqIHwgKlxg KiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsKLSAgKikgYWNfdHJ5X2VjaG89JGFjX3Ry eTs7Ci1lc2FjCi1ldmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306ICRhY190cnlfZWNob1wiIgotJGFzX2VjaG8gIiRhY190cnlfZWNobyI7IH0gPiY1Ci0gIChl dmFsICIkYWNfY29tcGlsZXIgJGFjX29wdGlvbiA+JjUiKSAyPmNvbmZ0ZXN0LmVycgotICBhY19z dGF0dXM9JD8KLSAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KLSAgICBzZWQgJzEwYVwK LS4uLiByZXN0IG9mIHN0ZGVyciBvdXRwdXQgZGVsZXRlZCAuLi4KLSAgICAgICAgIDEwcScgY29u ZnRlc3QuZXJyID5jb25mdGVzdC5lcjEKLSAgICBjYXQgY29uZnRlc3QuZXIxID4mNQotICBmaQot ICBybSAtZiBjb25mdGVzdC5lcjEgY29uZnRlc3QuZXJyCi0gICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICB0ZXN0ICRhY19zdGF0 dXMgPSAwOyB9Ci1kb25lCi0KLWNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRh Y19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQotaW50Ci1tYWluICgpCi17Ci0KLSAgOwot ICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotYWNfY2xlYW5fZmlsZXNfc2F2ZT0kYWNfY2xlYW5fZmls ZXMKLWFjX2NsZWFuX2ZpbGVzPSIkYWNfY2xlYW5fZmlsZXMgYS5vdXQgYS5vdXQuZFNZTSBhLmV4 ZSBiLm91dCIKLSMgVHJ5IHRvIGNyZWF0ZSBhbiBleGVjdXRhYmxlIHdpdGhvdXQgLW8gZmlyc3Qs IGRpc3JlZ2FyZCBhLm91dC4KLSMgSXQgd2lsbCBoZWxwIHVzIGRpYWdub3NlIGJyb2tlbiBjb21w aWxlcnMsIGFuZCBmaW5kaW5nIG91dCBhbiBpbnR1aXRpb24KLSMgb2YgZXhlZXh0LgoteyAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSBD IGNvbXBpbGVyIHdvcmtzIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIEMg Y29tcGlsZXIgd29ya3MuLi4gIiA+JjY7IH0KLWFjX2xpbmtfZGVmYXVsdD1gJGFzX2VjaG8gIiRh Y19saW5rIiB8IHNlZCAncy8gLW8gKmNvbmZ0ZXN0W14gXSovLydgCi0KLSMgVGhlIHBvc3NpYmxl IG91dHB1dCBmaWxlczoKLWFjX2ZpbGVzPSJhLm91dCBjb25mdGVzdC5leGUgY29uZnRlc3QgYS5l eGUgYV9vdXQuZXhlIGIub3V0IGNvbmZ0ZXN0LioiCi0KLWFjX3JtZmlsZXM9Ci1mb3IgYWNfZmls ZSBpbiAkYWNfZmlsZXMKLWRvCi0gIGNhc2UgJGFjX2ZpbGUgaW4KLSAgICAqLiRhY19leHQgfCAq Lnhjb2ZmIHwgKi50ZHMgfCAqLmQgfCAqLnBkYiB8ICoueFNZTSB8ICouYmIgfCAqLmJiZyB8ICou bWFwIHwgKi5pbmYgfCAqLmRTWU0gfCAqLm8gfCAqLm9iaiApIDs7Ci0gICAgKiApIGFjX3JtZmls ZXM9IiRhY19ybWZpbGVzICRhY19maWxlIjs7Ci0gIGVzYWMKLWRvbmUKLXJtIC1mICRhY19ybWZp bGVzCi0KLWlmIHsgeyBhY190cnk9IiRhY19saW5rX2RlZmF1bHQiCi1jYXNlICIoKCRhY190cnki IGluCi0gICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7OwotICAqKSBh Y190cnlfZWNobz0kYWNfdHJ5OzsKLWVzYWMKLWV2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCi0kYXNfZWNobyAiJGFjX3RyeV9l Y2hvIjsgfSA+JjUKLSAgKGV2YWwgIiRhY19saW5rX2RlZmF1bHQiKSAyPiY1Ci0gIGFjX3N0YXR1 cz0kPwotICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNf c3RhdHVzIiA+JjUKLSAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbiA6Ci0gICMgQXV0b2Nv bmYtMi4xMyBjb3VsZCBzZXQgdGhlIGFjX2N2X2V4ZWV4dCB2YXJpYWJsZSB0byBgbm8nLgotIyBT byBpZ25vcmUgYSB2YWx1ZSBvZiBgbm8nLCBvdGhlcndpc2UgdGhpcyB3b3VsZCBsZWFkIHRvIGBF WEVFWFQgPSBubycKLSMgaW4gYSBNYWtlZmlsZS4gIFdlIHNob3VsZCBub3Qgb3ZlcnJpZGUgYWNf Y3ZfZXhlZXh0IGlmIGl0IHdhcyBjYWNoZWQsCi0jIHNvIHRoYXQgdGhlIHVzZXIgY2FuIHNob3J0 LWNpcmN1aXQgdGhpcyB0ZXN0IGZvciBjb21waWxlcnMgdW5rbm93biB0bwotIyBBdXRvY29uZi4K LWZvciBhY19maWxlIGluICRhY19maWxlcyAnJwotZG8KLSAgdGVzdCAtZiAiJGFjX2ZpbGUiIHx8 IGNvbnRpbnVlCi0gIGNhc2UgJGFjX2ZpbGUgaW4KLSAgICAqLiRhY19leHQgfCAqLnhjb2ZmIHwg Ki50ZHMgfCAqLmQgfCAqLnBkYiB8ICoueFNZTSB8ICouYmIgfCAqLmJiZyB8ICoubWFwIHwgKi5p bmYgfCAqLmRTWU0gfCAqLm8gfCAqLm9iaiApCi0JOzsKLSAgICBbYWJdLm91dCApCi0JIyBXZSBm b3VuZCB0aGUgZGVmYXVsdCBleGVjdXRhYmxlLCBidXQgZXhlZXh0PScnIGlzIG1vc3QKLQkjIGNl cnRhaW5seSByaWdodC4KLQlicmVhazs7Ci0gICAgKi4qICkKLQlpZiB0ZXN0ICIke2FjX2N2X2V4 ZWV4dCtzZXR9IiA9IHNldCAmJiB0ZXN0ICIkYWNfY3ZfZXhlZXh0IiAhPSBubzsKLQl0aGVuIDo7 IGVsc2UKLQkgICBhY19jdl9leGVleHQ9YGV4cHIgIiRhY19maWxlIiA6ICdbXi5dKlwoXC4uKlwp J2AKLQlmaQotCSMgV2Ugc2V0IGFjX2N2X2V4ZWV4dCBoZXJlIGJlY2F1c2UgdGhlIGxhdGVyIHRl c3QgZm9yIGl0IGlzIG5vdAotCSMgc2FmZTogY3Jvc3MgY29tcGlsZXJzIG1heSBub3QgYWRkIHRo ZSBzdWZmaXggaWYgZ2l2ZW4gYW4gYC1vJwotCSMgYXJndW1lbnQsIHNvIHdlIG1heSBuZWVkIHRv IGtub3cgaXQgYXQgdGhhdCBwb2ludCBhbHJlYWR5LgotCSMgRXZlbiBpZiB0aGlzIHNlY3Rpb24g bG9va3MgY3J1ZnR5OiBpdCBoYXMgdGhlIGFkdmFudGFnZSBvZgotCSMgYWN0dWFsbHkgd29ya2lu Zy4KLQlicmVhazs7Ci0gICAgKiApCi0JYnJlYWs7OwotICBlc2FjCi1kb25lCi10ZXN0ICIkYWNf Y3ZfZXhlZXh0IiA9IG5vICYmIGFjX2N2X2V4ZWV4dD0KLQotZWxzZQotICBhY19maWxlPScnCi1m aQotaWYgdGVzdCAteiAiJGFjX2ZpbGUiOyB0aGVuIDoKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9 Ci0kYXNfZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLXNlZCAncy9eL3wg LycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLQoteyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1Ci0kYXNfZWNobyAiJGFzX21l OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Ci1hc19mbl9lcnJvciA3NyAiQyBjb21waWxl ciBjYW5ub3QgY3JlYXRlIGV4ZWN1dGFibGVzCi1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBk ZXRhaWxzIiAiJExJTkVOTyIgNTsgfQotZWxzZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKLSRhc19lY2hvICJ5ZXMiID4mNjsgfQot ZmkKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9y IEMgY29tcGlsZXIgZGVmYXVsdCBvdXRwdXQgZmlsZSBuYW1lIiA+JjUKLSRhc19lY2hvX24gImNo ZWNraW5nIGZvciBDIGNvbXBpbGVyIGRlZmF1bHQgb3V0cHV0IGZpbGUgbmFtZS4uLiAiID4mNjsg fQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19m aWxlIiA+JjUKLSRhc19lY2hvICIkYWNfZmlsZSIgPiY2OyB9Ci1hY19leGVleHQ9JGFjX2N2X2V4 ZWV4dAotCi1ybSAtZiAtciBhLm91dCBhLm91dC5kU1lNIGEuZXhlIGNvbmZ0ZXN0JGFjX2N2X2V4 ZWV4dCBiLm91dAotYWNfY2xlYW5fZmlsZXM9JGFjX2NsZWFuX2ZpbGVzX3NhdmUKLXsgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN1ZmZpeCBvZiBl eGVjdXRhYmxlcyIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3Igc3VmZml4IG9mIGV4ZWN1 dGFibGVzLi4uICIgPiY2OyB9Ci1pZiB7IHsgYWNfdHJ5PSIkYWNfbGluayIKLWNhc2UgIigoJGFj X3RyeSIgaW4KLSAgKlwiKiB8ICpcYCogfCAqXFwqKSBhY190cnlfZWNobz1cJGFjX3RyeTs7Ci0g ICopIGFjX3RyeV9lY2hvPSRhY190cnk7OwotZXNhYwotZXZhbCBhY190cnlfZWNobz0iXCJcJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfdHJ5X2VjaG9cIiIKLSRhc19lY2hvICIkYWNf dHJ5X2VjaG8iOyB9ID4mNQotICAoZXZhbCAiJGFjX2xpbmsiKSAyPiY1Ci0gIGFjX3N0YXR1cz0k PwotICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3Rh dHVzIiA+JjUKLSAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbiA6Ci0gICMgSWYgYm90aCBg Y29uZnRlc3QuZXhlJyBhbmQgYGNvbmZ0ZXN0JyBhcmUgYHByZXNlbnQnICh3ZWxsLCBvYnNlcnZh YmxlKQotIyBjYXRjaCBgY29uZnRlc3QuZXhlJy4gIEZvciBpbnN0YW5jZSB3aXRoIEN5Z3dpbiwg YGxzIGNvbmZ0ZXN0JyB3aWxsCi0jIHdvcmsgcHJvcGVybHkgKGkuZS4sIHJlZmVyIHRvIGBjb25m dGVzdC5leGUnKSwgd2hpbGUgaXQgd29uJ3Qgd2l0aAotIyBgcm0nLgotZm9yIGFjX2ZpbGUgaW4g Y29uZnRlc3QuZXhlIGNvbmZ0ZXN0IGNvbmZ0ZXN0Lio7IGRvCi0gIHRlc3QgLWYgIiRhY19maWxl IiB8fCBjb250aW51ZQotICBjYXNlICRhY19maWxlIGluCi0gICAgKi4kYWNfZXh0IHwgKi54Y29m ZiB8ICoudGRzIHwgKi5kIHwgKi5wZGIgfCAqLnhTWU0gfCAqLmJiIHwgKi5iYmcgfCAqLm1hcCB8 ICouaW5mIHwgKi5kU1lNIHwgKi5vIHwgKi5vYmogKSA7OwotICAgICouKiApIGFjX2N2X2V4ZWV4 dD1gZXhwciAiJGFjX2ZpbGUiIDogJ1teLl0qXChcLi4qXCknYAotCSAgYnJlYWs7OwotICAgICog KSBicmVhazs7Ci0gIGVzYWMKLWRvbmUKLWVsc2UKLSAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1Ci0kYXNfZWNobyAi JGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Ci1hc19mbl9lcnJvciAkPyAiY2Fu bm90IGNvbXB1dGUgc3VmZml4IG9mIGV4ZWN1dGFibGVzOiBjYW5ub3QgY29tcGlsZSBhbmQgbGlu awotU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KLWZp Ci1ybSAtZiBjb25mdGVzdCBjb25mdGVzdCRhY19jdl9leGVleHQKLXsgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZXhlZXh0IiA+JjUKLSRhc19l Y2hvICIkYWNfY3ZfZXhlZXh0IiA+JjY7IH0KLQotcm0gLWYgY29uZnRlc3QuJGFjX2V4dAotRVhF RVhUPSRhY19jdl9leGVleHQKLWFjX2V4ZWV4dD0kRVhFRVhUCi1jYXQgY29uZmRlZnMuaCAtIDw8 X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0jaW5jbHVk ZSA8c3RkaW8uaD4KLWludAotbWFpbiAoKQotewotRklMRSAqZiA9IGZvcGVuICgiY29uZnRlc3Qu b3V0IiwgInciKTsKLSByZXR1cm4gZmVycm9yIChmKSB8fCBmY2xvc2UgKGYpICE9IDA7Ci0KLSAg OwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotYWNfY2xlYW5fZmlsZXM9IiRhY19jbGVhbl9maWxl cyBjb25mdGVzdC5vdXQiCi0jIENoZWNrIHRoYXQgdGhlIGNvbXBpbGVyIHByb2R1Y2VzIGV4ZWN1 dGFibGVzIHdlIGNhbiBydW4uICBJZiBub3QsIGVpdGhlcgotIyB0aGUgY29tcGlsZXIgaXMgYnJv a2VuLCBvciB3ZSBjcm9zcyBjb21waWxlLgoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHdlIGFyZSBjcm9zcyBjb21waWxpbmciID4mNQot JGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgY3Jvc3MgY29tcGlsaW5nLi4uICIg PiY2OyB9Ci1pZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiAhPSB5ZXM7IHRoZW4KLSAgeyB7IGFj X3RyeT0iJGFjX2xpbmsiCi1jYXNlICIoKCRhY190cnkiIGluCi0gICpcIiogfCAqXGAqIHwgKlxc KikgYWNfdHJ5X2VjaG89XCRhY190cnk7OwotICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKLWVz YWMKLWV2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFj X3RyeV9lY2hvXCIiCi0kYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKLSAgKGV2YWwgIiRh Y19saW5rIikgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIHRlc3QgJGFjX3N0YXR1cyA9 IDA7IH0KLSAgaWYgeyBhY190cnk9Jy4vY29uZnRlc3QkYWNfY3ZfZXhlZXh0JwotICB7IHsgY2Fz ZSAiKCgkYWNfdHJ5IiBpbgotICAqXCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNf dHJ5OzsKLSAgKikgYWNfdHJ5X2VjaG89JGFjX3RyeTs7Ci1lc2FjCi1ldmFsIGFjX3RyeV9lY2hv PSJcIlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRhY190cnlfZWNob1wiIgotJGFzX2Vj aG8gIiRhY190cnlfZWNobyI7IH0gPiY1Ci0gIChldmFsICIkYWNfdHJ5IikgMj4mNQotICBhY19z dGF0dXM9JD8KLSAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0g JGFjX3N0YXR1cyIgPiY1Ci0gIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IH07IHRoZW4KLSAgICBj cm9zc19jb21waWxpbmc9bm8KLSAgZWxzZQotICAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmci ID0gbWF5YmU7IHRoZW4KLQljcm9zc19jb21waWxpbmc9eWVzCi0gICAgZWxzZQotCXsgeyAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoi ID4mNQotJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQotYXNf Zm5fZXJyb3IgJD8gImNhbm5vdCBydW4gQyBjb21waWxlZCBwcm9ncmFtcy4KLUlmIHlvdSBtZWFu dCB0byBjcm9zcyBjb21waWxlLCB1c2UgXGAtLWhvc3QnLgotU2VlIFxgY29uZmlnLmxvZycgZm9y IG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KLSAgICBmaQotICBmaQotZmkKLXsgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkY3Jvc3NfY29tcGlsaW5n IiA+JjUKLSRhc19lY2hvICIkY3Jvc3NfY29tcGlsaW5nIiA+JjY7IH0KLQotcm0gLWYgY29uZnRl c3QuJGFjX2V4dCBjb25mdGVzdCRhY19jdl9leGVleHQgY29uZnRlc3Qub3V0Ci1hY19jbGVhbl9m aWxlcz0kYWNfY2xlYW5fZmlsZXNfc2F2ZQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3VmZml4IG9mIG9iamVjdCBmaWxlcyIgPiY1Ci0kYXNf ZWNob19uICJjaGVja2luZyBmb3Igc3VmZml4IG9mIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQot aWYgJHthY19jdl9vYmpleHQrOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVk KSAiID4mNgotZWxzZQotICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNf ZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLWludAotbWFpbiAoKQotewotCi0gIDsKLSAg cmV0dXJuIDA7Ci19Ci1fQUNFT0YKLXJtIC1mIGNvbmZ0ZXN0Lm8gY29uZnRlc3Qub2JqCi1pZiB7 IHsgYWNfdHJ5PSIkYWNfY29tcGlsZSIKLWNhc2UgIigoJGFjX3RyeSIgaW4KLSAgKlwiKiB8ICpc YCogfCAqXFwqKSBhY190cnlfZWNobz1cJGFjX3RyeTs7Ci0gICopIGFjX3RyeV9lY2hvPSRhY190 cnk7OwotZXNhYwotZXZhbCBhY190cnlfZWNobz0iXCJcJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiAkYWNfdHJ5X2VjaG9cIiIKLSRhc19lY2hvICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQotICAo ZXZhbCAiJGFjX2NvbXBpbGUiKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgdGVzdCAk YWNfc3RhdHVzID0gMDsgfTsgdGhlbiA6Ci0gIGZvciBhY19maWxlIGluIGNvbmZ0ZXN0Lm8gY29u ZnRlc3Qub2JqIGNvbmZ0ZXN0Lio7IGRvCi0gIHRlc3QgLWYgIiRhY19maWxlIiB8fCBjb250aW51 ZTsKLSAgY2FzZSAkYWNfZmlsZSBpbgotICAgICouJGFjX2V4dCB8ICoueGNvZmYgfCAqLnRkcyB8 ICouZCB8ICoucGRiIHwgKi54U1lNIHwgKi5iYiB8ICouYmJnIHwgKi5tYXAgfCAqLmluZiB8ICou ZFNZTSApIDs7Ci0gICAgKikgYWNfY3Zfb2JqZXh0PWBleHByICIkYWNfZmlsZSIgOiAnLipcLlwo LipcKSdgCi0gICAgICAgYnJlYWs7OwotICBlc2FjCi1kb25lCi1lbHNlCi0gICRhc19lY2hvICIk YXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotc2VkICdzL14vfCAvJyBjb25mdGVzdC4k YWNfZXh0ID4mNQotCi17IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog ZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBc YCRhY19wd2QnOiIgPiYyO30KLWFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgY29tcHV0ZSBzdWZmaXgg b2Ygb2JqZWN0IGZpbGVzOiBjYW5ub3QgY29tcGlsZQotU2VlIFxgY29uZmlnLmxvZycgZm9yIG1v cmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KLWZpCi1ybSAtZiBjb25mdGVzdC4kYWNfY3Zfb2Jq ZXh0IGNvbmZ0ZXN0LiRhY19leHQKLWZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IHJlc3VsdDogJGFjX2N2X29iamV4dCIgPiY1Ci0kYXNfZWNobyAiJGFjX2N2X29i amV4dCIgPiY2OyB9Ci1PQkpFWFQ9JGFjX2N2X29iamV4dAotYWNfb2JqZXh0PSRPQkpFWFQKLXsg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB3 ZSBhcmUgdXNpbmcgdGhlIEdOVSBDIGNvbXBpbGVyIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5n IHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBHTlUgQyBjb21waWxlci4uLiAiID4mNjsgfQotaWYg JHthY19jdl9jX2NvbXBpbGVyX2dudSs6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihj YWNoZWQpICIgPiY2Ci1lbHNlCi0gIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0 LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQotaW50Ci1tYWluICgpCi17Ci0jaWZu ZGVmIF9fR05VQ19fCi0gICAgICAgY2hva2UgbWUKLSNlbmRpZgotCi0gIDsKLSAgcmV0dXJuIDA7 Ci19Ci1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSAg YWNfY29tcGlsZXJfZ251PXllcwotZWxzZQotICBhY19jb21waWxlcl9nbnU9bm8KLWZpCi1ybSAt ZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQK LWFjX2N2X2NfY29tcGlsZXJfZ251PSRhY19jb21waWxlcl9nbnUKLQotZmkKLXsgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfY19jb21waWxlcl9n bnUiID4mNQotJGFzX2VjaG8gIiRhY19jdl9jX2NvbXBpbGVyX2dudSIgPiY2OyB9Ci1pZiB0ZXN0 ICRhY19jb21waWxlcl9nbnUgPSB5ZXM7IHRoZW4KLSAgR0NDPXllcwotZWxzZQotICBHQ0M9Ci1m aQotYWNfdGVzdF9DRkxBR1M9JHtDRkxBR1Mrc2V0fQotYWNfc2F2ZV9DRkxBR1M9JENGTEFHUwot eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVy ICRDQyBhY2NlcHRzIC1nIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgJENDIGFj Y2VwdHMgLWcuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfcHJvZ19jY19nKzp9IGZhbHNlOyB0aGVu IDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgYWNfc2F2ZV9jX3dlcnJv cl9mbGFnPSRhY19jX3dlcnJvcl9mbGFnCi0gICBhY19jX3dlcnJvcl9mbGFnPXllcwotICAgYWNf Y3ZfcHJvZ19jY19nPW5vCi0gICBDRkxBR1M9Ii1nIgotICAgY2F0IGNvbmZkZWZzLmggLSA8PF9B Q0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotCi1pbnQKLW1h aW4gKCkKLXsKLQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9j b21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0gIGFjX2N2X3Byb2dfY2NfZz15ZXMKLWVsc2UKLSAg Q0ZMQUdTPSIiCi0gICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNf ZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLWludAotbWFpbiAoKQotewotCi0gIDsKLSAg cmV0dXJuIDA7Ci19Ci1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0 aGVuIDoKLQotZWxzZQotICBhY19jX3dlcnJvcl9mbGFnPSRhY19zYXZlX2Nfd2Vycm9yX2ZsYWcK LQkgQ0ZMQUdTPSItZyIKLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFj X2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotCi1pbnQKLW1haW4gKCkKLXsKLQotICA7Ci0g IHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsg dGhlbiA6Ci0gIGFjX2N2X3Byb2dfY2NfZz15ZXMKLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVy ciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLWZpCi1ybSAtZiBjb3JlIGNv bmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLWZpCi1ybSAt ZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQK LSAgIGFjX2Nfd2Vycm9yX2ZsYWc9JGFjX3NhdmVfY193ZXJyb3JfZmxhZwotZmkKLXsgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfcHJvZ19jY19n IiA+JjUKLSRhc19lY2hvICIkYWNfY3ZfcHJvZ19jY19nIiA+JjY7IH0KLWlmIHRlc3QgIiRhY190 ZXN0X0NGTEFHUyIgPSBzZXQ7IHRoZW4KLSAgQ0ZMQUdTPSRhY19zYXZlX0NGTEFHUwotZWxpZiB0 ZXN0ICRhY19jdl9wcm9nX2NjX2cgPSB5ZXM7IHRoZW4KLSAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7 IHRoZW4KLSAgICBDRkxBR1M9Ii1nIC1PMiIKLSAgZWxzZQotICAgIENGTEFHUz0iLWciCi0gIGZp Ci1lbHNlCi0gIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgQ0ZMQUdTPSItTzIiCi0g IGVsc2UKLSAgICBDRkxBR1M9Ci0gIGZpCi1maQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJENDIG9wdGlvbiB0byBhY2NlcHQgSVNPIEM4OSIg PiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJENDIG9wdGlvbiB0byBhY2NlcHQgSVNPIEM4 OS4uLiAiID4mNjsgfQotaWYgJHthY19jdl9wcm9nX2NjX2M4OSs6fSBmYWxzZTsgdGhlbiA6Ci0g ICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGFjX2N2X3Byb2dfY2NfYzg5PW5v Ci1hY19zYXZlX0NDPSRDQwotY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFj X2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotI2luY2x1ZGUgPHN0ZGFyZy5oPgotI2luY2x1 ZGUgPHN0ZGlvLmg+Ci1zdHJ1Y3Qgc3RhdDsKLS8qIE1vc3Qgb2YgdGhlIGZvbGxvd2luZyB0ZXN0 cyBhcmUgc3RvbGVuIGZyb20gUkNTIDUuNydzIHNyYy9jb25mLnNoLiAgKi8KLXN0cnVjdCBidWYg eyBpbnQgeDsgfTsKLUZJTEUgKiAoKnJjc29wZW4pIChzdHJ1Y3QgYnVmICosIHN0cnVjdCBzdGF0 ICosIGludCk7Ci1zdGF0aWMgY2hhciAqZSAocCwgaSkKLSAgICAgY2hhciAqKnA7Ci0gICAgIGlu dCBpOwotewotICByZXR1cm4gcFtpXTsKLX0KLXN0YXRpYyBjaGFyICpmIChjaGFyICogKCpnKSAo Y2hhciAqKiwgaW50KSwgY2hhciAqKnAsIC4uLikKLXsKLSAgY2hhciAqczsKLSAgdmFfbGlzdCB2 OwotICB2YV9zdGFydCAodixwKTsKLSAgcyA9IGcgKHAsIHZhX2FyZyAodixpbnQpKTsKLSAgdmFf ZW5kICh2KTsKLSAgcmV0dXJuIHM7Ci19Ci0KLS8qIE9TRiA0LjAgQ29tcGFxIGNjIGlzIHNvbWUg c29ydCBvZiBhbG1vc3QtQU5TSSBieSBkZWZhdWx0LiAgSXQgaGFzCi0gICBmdW5jdGlvbiBwcm90 b3R5cGVzIGFuZCBzdHVmZiwgYnV0IG5vdCAnXHhISCcgaGV4IGNoYXJhY3RlciBjb25zdGFudHMu Ci0gICBUaGVzZSBkb24ndCBwcm92b2tlIGFuIGVycm9yIHVuZm9ydHVuYXRlbHksIGluc3RlYWQg YXJlIHNpbGVudGx5IHRyZWF0ZWQKLSAgIGFzICd4Jy4gIFRoZSBmb2xsb3dpbmcgaW5kdWNlcyBh biBlcnJvciwgdW50aWwgLXN0ZCBpcyBhZGRlZCB0byBnZXQKLSAgIHByb3BlciBBTlNJIG1vZGUu ICBDdXJpb3VzbHkgJ1x4MDAnIT0neCcgYWx3YXlzIGNvbWVzIG91dCB0cnVlLCBmb3IgYW4KLSAg IGFycmF5IHNpemUgYXQgbGVhc3QuICBJdCdzIG5lY2Vzc2FyeSB0byB3cml0ZSAnXHgwMCc9PTAg dG8gZ2V0IHNvbWV0aGluZwotICAgdGhhdCdzIHRydWUgb25seSB3aXRoIC1zdGQuICAqLwotaW50 IG9zZjRfY2NfYXJyYXkgWydceDAwJyA9PSAwID8gMSA6IC0xXTsKLQotLyogSUJNIEMgNiBmb3Ig QUlYIGlzIGFsbW9zdC1BTlNJIGJ5IGRlZmF1bHQsIGJ1dCBpdCByZXBsYWNlcyBtYWNybyBwYXJh bWV0ZXJzCi0gICBpbnNpZGUgc3RyaW5ncyBhbmQgY2hhcmFjdGVyIGNvbnN0YW50cy4gICovCi0j ZGVmaW5lIEZPTyh4KSAneCcKLWludCB4bGM2X2NjX2FycmF5W0ZPTyhhKSA9PSAneCcgPyAxIDog LTFdOwotCi1pbnQgdGVzdCAoaW50IGksIGRvdWJsZSB4KTsKLXN0cnVjdCBzMSB7aW50ICgqZikg KGludCBhKTt9Owotc3RydWN0IHMyIHtpbnQgKCpmKSAoZG91YmxlIGEpO307Ci1pbnQgcGFpcm5h bWVzIChpbnQsIGNoYXIgKiosIEZJTEUgKigqKShzdHJ1Y3QgYnVmICosIHN0cnVjdCBzdGF0ICos IGludCksIGludCwgaW50KTsKLWludCBhcmdjOwotY2hhciAqKmFyZ3Y7Ci1pbnQKLW1haW4gKCkK LXsKLXJldHVybiBmIChlLCBhcmd2LCAwKSAhPSBhcmd2WzBdICB8fCAgZiAoZSwgYXJndiwgMSkg IT0gYXJndlsxXTsKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotZm9yIGFjX2FyZyBpbiAn JyAtcWxhbmdsdmw9ZXh0Yzg5IC1xbGFuZ2x2bD1hbnNpIC1zdGQgXAotCS1BZSAiLUFhIC1EX0hQ VVhfU09VUkNFIiAiLVhjIC1EX19FWFRFTlNJT05TX18iCi1kbwotICBDQz0iJGFjX3NhdmVfQ0Mg JGFjX2FyZyIKLSAgaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotICBh Y19jdl9wcm9nX2NjX2M4OT0kYWNfYXJnCi1maQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29u ZnRlc3QuJGFjX29iamV4dAotICB0ZXN0ICJ4JGFjX2N2X3Byb2dfY2NfYzg5IiAhPSAieG5vIiAm JiBicmVhawotZG9uZQotcm0gLWYgY29uZnRlc3QuJGFjX2V4dAotQ0M9JGFjX3NhdmVfQ0MKLQot ZmkKLSMgQUNfQ0FDSEVfVkFMCi1jYXNlICJ4JGFjX2N2X3Byb2dfY2NfYzg5IiBpbgotICB4KQot ICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBub25l IG5lZWRlZCIgPiY1Ci0kYXNfZWNobyAibm9uZSBuZWVkZWQiID4mNjsgfSA7OwotICB4bm8pCi0g ICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHVuc3Vw cG9ydGVkIiA+JjUKLSRhc19lY2hvICJ1bnN1cHBvcnRlZCIgPiY2OyB9IDs7Ci0gICopCi0gICAg Q0M9IiRDQyAkYWNfY3ZfcHJvZ19jY19jODkiCi0gICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9wcm9nX2NjX2M4OSIgPiY1Ci0kYXNfZWNo byAiJGFjX2N2X3Byb2dfY2NfYzg5IiA+JjY7IH0gOzsKLWVzYWMKLWlmIHRlc3QgIngkYWNfY3Zf cHJvZ19jY19jODkiICE9IHhubzsgdGhlbiA6Ci0KLWZpCi0KLWFjX2V4dD1jCi1hY19jcHA9JyRD UFAgJENQUEZMQUdTJwotYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0 ZXN0LiRhY19leHQgPiY1JwotYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZM QUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKLWFjX2Nv bXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKLQotCi0jIENoZWNrIHdoZXRoZXIgLS1l bmFibGUtbGFyZ2VmaWxlIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7ZW5hYmxlX2xhcmdlZmlsZStz ZXR9IiA9IHNldDsgdGhlbiA6Ci0gIGVuYWJsZXZhbD0kZW5hYmxlX2xhcmdlZmlsZTsKLWZpCi0K LWlmIHRlc3QgIiRlbmFibGVfbGFyZ2VmaWxlIiAhPSBubzsgdGhlbgotCi0gIHsgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHNwZWNpYWwgQyBjb21w aWxlciBvcHRpb25zIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMiID4mNQotJGFzX2VjaG9fbiAiY2hl Y2tpbmcgZm9yIHNwZWNpYWwgQyBjb21waWxlciBvcHRpb25zIG5lZWRlZCBmb3IgbGFyZ2UgZmls ZXMuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3Zfc3lzX2xhcmdlZmlsZV9DQys6fSBmYWxzZTsgdGhl biA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGFjX2N2X3N5c19sYXJn ZWZpbGVfQ0M9bm8KLSAgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0gICAgICAgYWNf c2F2ZV9DQz0kQ0MKLSAgICAgICB3aGlsZSA6OyBkbwotCSAjIElSSVggNi4yIGFuZCBsYXRlciBk byBub3Qgc3VwcG9ydCBsYXJnZSBmaWxlcyBieSBkZWZhdWx0LAotCSAjIHNvIHVzZSB0aGUgQyBj b21waWxlcidzIC1uMzIgb3B0aW9uIGlmIHRoYXQgaGVscHMuCi0JIGNhdCBjb25mZGVmcy5oIC0g PDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSNpbmNs dWRlIDxzeXMvdHlwZXMuaD4KLSAvKiBDaGVjayB0aGF0IG9mZl90IGNhbiByZXByZXNlbnQgMioq NjMgLSAxIGNvcnJlY3RseS4KLSAgICBXZSBjYW4ndCBzaW1wbHkgZGVmaW5lIExBUkdFX09GRl9U IHRvIGJlIDkyMjMzNzIwMzY4NTQ3NzU4MDcsCi0gICAgc2luY2Ugc29tZSBDKysgY29tcGlsZXJz IG1hc3F1ZXJhZGluZyBhcyBDIGNvbXBpbGVycwotICAgIGluY29ycmVjdGx5IHJlamVjdCA5MjIz MzcyMDM2ODU0Nzc1ODA3LiAgKi8KLSNkZWZpbmUgTEFSR0VfT0ZGX1QgKCgoKG9mZl90KSAxIDw8 IDMxKSA8PCAzMSkgLSAxICsgKCgob2ZmX3QpIDEgPDwgMzEpIDw8IDMxKSkKLSAgaW50IG9mZl90 X2lzX2xhcmdlWyhMQVJHRV9PRkZfVCAlIDIxNDc0ODM2MjkgPT0gNzIxCi0JCSAgICAgICAmJiBM QVJHRV9PRkZfVCAlIDIxNDc0ODM2NDcgPT0gMSkKLQkJICAgICAgPyAxIDogLTFdOwotaW50Ci1t YWluICgpCi17Ci0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotCSBpZiBhY19mbl9jX3Ry eV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0gIGJyZWFrCi1maQotcm0gLWYgY29yZSBjb25m dGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dAotCSBDQz0iJENDIC1uMzIiCi0JIGlmIGFjX2Zu X2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSAgYWNfY3Zfc3lzX2xhcmdlZmlsZV9D Qz0nIC1uMzInOyBicmVhawotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRh Y19vYmpleHQKLQkgYnJlYWsKLSAgICAgICBkb25lCi0gICAgICAgQ0M9JGFjX3NhdmVfQ0MKLSAg ICAgICBybSAtZiBjb25mdGVzdC4kYWNfZXh0Ci0gICAgZmkKLWZpCi17ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3N5c19sYXJnZWZpbGVfQ0Mi ID4mNQotJGFzX2VjaG8gIiRhY19jdl9zeXNfbGFyZ2VmaWxlX0NDIiA+JjY7IH0KLSAgaWYgdGVz dCAiJGFjX2N2X3N5c19sYXJnZWZpbGVfQ0MiICE9IG5vOyB0aGVuCi0gICAgQ0M9JENDJGFjX2N2 X3N5c19sYXJnZWZpbGVfQ0MKLSAgZmkKLQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IGNoZWNraW5nIGZvciBfRklMRV9PRkZTRVRfQklUUyB2YWx1ZSBuZWVkZWQg Zm9yIGxhcmdlIGZpbGVzIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciBfRklMRV9PRkZT RVRfQklUUyB2YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzLi4uICIgPiY2OyB9Ci1pZiAke2Fj X2N2X3N5c19maWxlX29mZnNldF9iaXRzKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAi KGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgd2hpbGUgOjsgZG8KLSAgY2F0IGNvbmZkZWZzLmggLSA8 PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotI2luY2x1 ZGUgPHN5cy90eXBlcy5oPgotIC8qIENoZWNrIHRoYXQgb2ZmX3QgY2FuIHJlcHJlc2VudCAyKio2 MyAtIDEgY29ycmVjdGx5LgotICAgIFdlIGNhbid0IHNpbXBseSBkZWZpbmUgTEFSR0VfT0ZGX1Qg dG8gYmUgOTIyMzM3MjAzNjg1NDc3NTgwNywKLSAgICBzaW5jZSBzb21lIEMrKyBjb21waWxlcnMg bWFzcXVlcmFkaW5nIGFzIEMgY29tcGlsZXJzCi0gICAgaW5jb3JyZWN0bHkgcmVqZWN0IDkyMjMz NzIwMzY4NTQ3NzU4MDcuICAqLwotI2RlZmluZSBMQVJHRV9PRkZfVCAoKCgob2ZmX3QpIDEgPDwg MzEpIDw8IDMxKSAtIDEgKyAoKChvZmZfdCkgMSA8PCAzMSkgPDwgMzEpKQotICBpbnQgb2ZmX3Rf aXNfbGFyZ2VbKExBUkdFX09GRl9UICUgMjE0NzQ4MzYyOSA9PSA3MjEKLQkJICAgICAgICYmIExB UkdFX09GRl9UICUgMjE0NzQ4MzY0NyA9PSAxKQotCQkgICAgICA/IDEgOiAtMV07Ci1pbnQKLW1h aW4gKCkKLXsKLQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9j b21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0gIGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzPW5v OyBicmVhawotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQg Y29uZnRlc3QuJGFjX2V4dAotICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4k YWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0jZGVmaW5lIF9GSUxFX09GRlNFVF9CSVRT IDY0Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gLyogQ2hlY2sgdGhhdCBvZmZfdCBjYW4gcmVw cmVzZW50IDIqKjYzIC0gMSBjb3JyZWN0bHkuCi0gICAgV2UgY2FuJ3Qgc2ltcGx5IGRlZmluZSBM QVJHRV9PRkZfVCB0byBiZSA5MjIzMzcyMDM2ODU0Nzc1ODA3LAotICAgIHNpbmNlIHNvbWUgQysr IGNvbXBpbGVycyBtYXNxdWVyYWRpbmcgYXMgQyBjb21waWxlcnMKLSAgICBpbmNvcnJlY3RseSBy ZWplY3QgOTIyMzM3MjAzNjg1NDc3NTgwNy4gICovCi0jZGVmaW5lIExBUkdFX09GRl9UICgoKChv ZmZfdCkgMSA8PCAzMSkgPDwgMzEpIC0gMSArICgoKG9mZl90KSAxIDw8IDMxKSA8PCAzMSkpCi0g IGludCBvZmZfdF9pc19sYXJnZVsoTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjI5ID09IDcyMQotCQkg ICAgICAgJiYgTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjQ3ID09IDEpCi0JCSAgICAgID8gMSA6IC0x XTsKLWludAotbWFpbiAoKQotewotCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLWlmIGFj X2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSAgYWNfY3Zfc3lzX2ZpbGVfb2Zm c2V0X2JpdHM9NjQ7IGJyZWFrCi1maQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3Qu JGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gIGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRz PXVua25vd24KLSAgYnJlYWsKLWRvbmUKLWZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzIiA+JjUKLSRh c19lY2hvICIkYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMiID4mNjsgfQotY2FzZSAkYWNfY3Zf c3lzX2ZpbGVfb2Zmc2V0X2JpdHMgaW4gIygKLSAgbm8gfCB1bmtub3duKSA7OwotICAqKQotY2F0 ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSBfRklMRV9PRkZTRVRfQklUUyAkYWNfY3Zf c3lzX2ZpbGVfb2Zmc2V0X2JpdHMKLV9BQ0VPRgotOzsKLWVzYWMKLXJtIC1yZiBjb25mdGVzdCoK LSAgaWYgdGVzdCAkYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMgPSB1bmtub3duOyB0aGVuCi0g ICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Ig X0xBUkdFX0ZJTEVTIHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMiID4mNQotJGFzX2VjaG9f biAiY2hlY2tpbmcgZm9yIF9MQVJHRV9GSUxFUyB2YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVz Li4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3N5c19sYXJnZV9maWxlcys6fSBmYWxzZTsgdGhlbiA6 Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIHdoaWxlIDo7IGRvCi0gIGNh dCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVm cy5oLiAgKi8KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAvKiBDaGVjayB0aGF0IG9mZl90IGNh biByZXByZXNlbnQgMioqNjMgLSAxIGNvcnJlY3RseS4KLSAgICBXZSBjYW4ndCBzaW1wbHkgZGVm aW5lIExBUkdFX09GRl9UIHRvIGJlIDkyMjMzNzIwMzY4NTQ3NzU4MDcsCi0gICAgc2luY2Ugc29t ZSBDKysgY29tcGlsZXJzIG1hc3F1ZXJhZGluZyBhcyBDIGNvbXBpbGVycwotICAgIGluY29ycmVj dGx5IHJlamVjdCA5MjIzMzcyMDM2ODU0Nzc1ODA3LiAgKi8KLSNkZWZpbmUgTEFSR0VfT0ZGX1Qg KCgoKG9mZl90KSAxIDw8IDMxKSA8PCAzMSkgLSAxICsgKCgob2ZmX3QpIDEgPDwgMzEpIDw8IDMx KSkKLSAgaW50IG9mZl90X2lzX2xhcmdlWyhMQVJHRV9PRkZfVCAlIDIxNDc0ODM2MjkgPT0gNzIx Ci0JCSAgICAgICAmJiBMQVJHRV9PRkZfVCAlIDIxNDc0ODM2NDcgPT0gMSkKLQkJICAgICAgPyAx IDogLTFdOwotaW50Ci1tYWluICgpCi17Ci0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgot aWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotICBhY19jdl9zeXNfbGFy Z2VfZmlsZXM9bm87IGJyZWFrCi1maQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3Qu JGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0Yg PmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSNkZWZpbmUgX0xBUkdF X0ZJTEVTIDEKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAvKiBDaGVjayB0aGF0IG9mZl90IGNh biByZXByZXNlbnQgMioqNjMgLSAxIGNvcnJlY3RseS4KLSAgICBXZSBjYW4ndCBzaW1wbHkgZGVm aW5lIExBUkdFX09GRl9UIHRvIGJlIDkyMjMzNzIwMzY4NTQ3NzU4MDcsCi0gICAgc2luY2Ugc29t ZSBDKysgY29tcGlsZXJzIG1hc3F1ZXJhZGluZyBhcyBDIGNvbXBpbGVycwotICAgIGluY29ycmVj dGx5IHJlamVjdCA5MjIzMzcyMDM2ODU0Nzc1ODA3LiAgKi8KLSNkZWZpbmUgTEFSR0VfT0ZGX1Qg KCgoKG9mZl90KSAxIDw8IDMxKSA8PCAzMSkgLSAxICsgKCgob2ZmX3QpIDEgPDwgMzEpIDw8IDMx KSkKLSAgaW50IG9mZl90X2lzX2xhcmdlWyhMQVJHRV9PRkZfVCAlIDIxNDc0ODM2MjkgPT0gNzIx Ci0JCSAgICAgICAmJiBMQVJHRV9PRkZfVCAlIDIxNDc0ODM2NDcgPT0gMSkKLQkJICAgICAgPyAx IDogLTFdOwotaW50Ci1tYWluICgpCi17Ci0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgot aWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotICBhY19jdl9zeXNfbGFy Z2VfZmlsZXM9MTsgYnJlYWsKLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4k YWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAgYWNfY3Zfc3lzX2xhcmdlX2ZpbGVzPXVua25v d24KLSAgYnJlYWsKLWRvbmUKLWZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IHJlc3VsdDogJGFjX2N2X3N5c19sYXJnZV9maWxlcyIgPiY1Ci0kYXNfZWNobyAiJGFj X2N2X3N5c19sYXJnZV9maWxlcyIgPiY2OyB9Ci1jYXNlICRhY19jdl9zeXNfbGFyZ2VfZmlsZXMg aW4gIygKLSAgbm8gfCB1bmtub3duKSA7OwotICAqKQotY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VP RgotI2RlZmluZSBfTEFSR0VfRklMRVMgJGFjX2N2X3N5c19sYXJnZV9maWxlcwotX0FDRU9GCi07 OwotZXNhYwotcm0gLXJmIGNvbmZ0ZXN0KgotICBmaQotCi0KLWZpCi0KLQotY2FzZSAkYWNfY3Zf c3lzX2ZpbGVfb2Zmc2V0X2JpdHMgaW4gIygKLSAgbm8gfCB1bmtub3duKSA7OwotICAqKQotICBG SUxFX09GRlNFVF9CSVRTPSRhY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cwotOzsKLWVzYWMKLQot Ci0jIE00IE1hY3JvIGluY2x1ZGVzCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQot Ci0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0K LQotCi0KLQotCi0jIHBrZy5tNCAtIE1hY3JvcyB0byBsb2NhdGUgYW5kIHV0aWxpc2UgcGtnLWNv bmZpZy4gICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCi0jIHNlcmlhbCAxIChwa2ctY29uZmln LTAuMjQpCi0jCi0jIENvcHlyaWdodCDCqSAyMDA0IFNjb3R0IEphbWVzIFJlbW5hbnQgPHNjb3R0 QG5ldHNwbGl0LmNvbT4uCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0jIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us IG9yCi0jIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBi dXQKLSMgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlIEdOVQotIyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0jCi0jIEFzIGEgc3BlY2lhbCBl eGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKLSMgZGlz dHJpYnV0ZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIHByb2dyYW0gdGhhdCBjb250YWlucyBhCi0j IGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgeW91IG1heSBpbmNs dWRlIGl0IHVuZGVyCi0jIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2Ug Zm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLQotIyBQS0dfUFJPR19QS0dfQ09ORklHKFtN SU4tVkVSU0lPTl0pCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgUEtH X1BST0dfUEtHX0NPTkZJRwotCi0jIFBLR19DSEVDS19FWElTVFMoTU9EVUxFUywgW0FDVElPTi1J Ri1GT1VORF0sIFtBQ1RJT04tSUYtTk9ULUZPVU5EXSkKLSMKLSMgQ2hlY2sgdG8gc2VlIHdoZXRo ZXIgYSBwYXJ0aWN1bGFyIHNldCBvZiBtb2R1bGVzIGV4aXN0cy4gIFNpbWlsYXIKLSMgdG8gUEtH X0NIRUNLX01PRFVMRVMoKSwgYnV0IGRvZXMgbm90IHNldCB2YXJpYWJsZXMgb3IgcHJpbnQgZXJy b3JzLgotIwotIyBQbGVhc2UgcmVtZW1iZXIgdGhhdCBtNCBleHBhbmRzIEFDX1JFUVVJUkUoW1BL R19QUk9HX1BLR19DT05GSUddKQotIyBvbmx5IGF0IHRoZSBmaXJzdCBvY2N1cmVuY2UgaW4gY29u ZmlndXJlLmFjLCBzbyBpZiB0aGUgZmlyc3QgcGxhY2UKLSMgaXQncyBjYWxsZWQgbWlnaHQgYmUg c2tpcHBlZCAoc3VjaCBhcyBpZiBpdCBpcyB3aXRoaW4gYW4gImlmIiwgeW91Ci0jIGhhdmUgdG8g Y2FsbCBQS0dfQ0hFQ0tfRVhJU1RTIG1hbnVhbGx5Ci0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLQotIyBfUEtHX0NPTkZJ RyhbVkFSSUFCTEVdLCBbQ09NTUFORF0sIFtNT0RVTEVTXSkKLSMgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIF9QS0dfQ09ORklHCi0KLSMgX1BLR19TSE9S VF9FUlJPUlNfU1VQUE9SVEVECi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIF9Q S0dfU0hPUlRfRVJST1JTX1NVUFBPUlRFRAotCi0KLSMgUEtHX0NIRUNLX01PRFVMRVMoVkFSSUFC TEUtUFJFRklYLCBNT0RVTEVTLCBbQUNUSU9OLUlGLUZPVU5EXSwKLSMgW0FDVElPTi1JRi1OT1Qt Rk9VTkRdKQotIwotIwotIyBOb3RlIHRoYXQgaWYgdGhlcmUgaXMgYSBwb3NzaWJpbGl0eSB0aGUg Zmlyc3QgY2FsbCB0bwotIyBQS0dfQ0hFQ0tfTU9EVUxFUyBtaWdodCBub3QgaGFwcGVuLCB5b3Ug c2hvdWxkIGJlIHN1cmUgdG8gaW5jbHVkZSBhbgotIyBleHBsaWNpdCBjYWxsIHRvIFBLR19QUk9H X1BLR19DT05GSUcgaW4geW91ciBjb25maWd1cmUuYWMKLSMKLSMKLSMgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgUEtHX0NI RUNLX01PRFVMRVMKLQotCi0jIFBLR19DSEVDS19NT0RVTEVTX1NUQVRJQyhWQVJJQUJMRS1QUkVG SVgsIE1PRFVMRVMsIFtBQ1RJT04tSUYtRk9VTkRdLAotIyBbQUNUSU9OLUlGLU5PVC1GT1VORF0p Ci0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQotIyBDaGVja3MgZm9yIGV4aXN0ZW5jZSBvZiBNT0RVTEVTIGFuZCBn YXRoZXJzIGl0cyBidWlsZCBmbGFncyB3aXRoCi0jIHN0YXRpYyBsaWJyYXJpZXMgZW5hYmxlZC4g U2V0cyBWQVJJQUJMRS1QUkVGSVhfQ0ZMQUdTIGZyb20gLS1jZmxhZ3MKLSMgYW5kIFZBUklBQkxF LVBSRUZJWF9MSUJTIGZyb20gLS1saWJzLgotIwotIyBOb3RlIHRoYXQgaWYgdGhlcmUgaXMgYSBw b3NzaWJpbGl0eSB0aGUgZmlyc3QgY2FsbCB0bwotIyBQS0dfQ0hFQ0tfTU9EVUxFU19TVEFUSUMg bWlnaHQgbm90IGhhcHBlbiwgeW91IHNob3VsZCBiZSBzdXJlIHRvIGluY2x1ZGUKLSMgYW4gZXhw bGljaXQgY2FsbCB0byBQS0dfUFJPR19QS0dfQ09ORklHIGluIHlvdXIgY29uZmlndXJlLmFjLgot Ci0KLQotIyBQS0dfSU5TVEFMTERJUihESVJFQ1RPUlkpCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KLSMgU3Vic3RpdHV0ZXMgdGhlIHZhcmlhYmxlIHBrZ2NvbmZpZ2RpciBhcyB0aGUgbG9j YXRpb24gd2hlcmUgYSBtb2R1bGUKLSMgc2hvdWxkIGluc3RhbGwgcGtnLWNvbmZpZyAucGMgZmls ZXMuIEJ5IGRlZmF1bHQgdGhlIGRpcmVjdG9yeSBpcwotIyAkbGliZGlyL3BrZ2NvbmZpZywgYnV0 IHRoZSBkZWZhdWx0IGNhbiBiZSBjaGFuZ2VkIGJ5IHBhc3NpbmcKLSMgRElSRUNUT1JZLiBUaGUg dXNlciBjYW4gb3ZlcnJpZGUgdGhyb3VnaCB0aGUgLS13aXRoLXBrZ2NvbmZpZ2RpcgotIyBwYXJh bWV0ZXIuCi0KLQotIyBQS0dfTk9BUkNIX0lOU1RBTExESVIoRElSRUNUT1JZKQotIyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCi0jIFN1YnN0aXR1dGVzIHRoZSB2YXJpYWJsZSBub2FyY2hfcGtn Y29uZmlnZGlyIGFzIHRoZSBsb2NhdGlvbiB3aGVyZSBhCi0jIG1vZHVsZSBzaG91bGQgaW5zdGFs bCBhcmNoLWluZGVwZW5kZW50IHBrZy1jb25maWcgLnBjIGZpbGVzLiBCeQotIyBkZWZhdWx0IHRo ZSBkaXJlY3RvcnkgaXMgJGRhdGFkaXIvcGtnY29uZmlnLCBidXQgdGhlIGRlZmF1bHQgY2FuIGJl Ci0jIGNoYW5nZWQgYnkgcGFzc2luZyBESVJFQ1RPUlkuIFRoZSB1c2VyIGNhbiBvdmVycmlkZSB0 aHJvdWdoIHRoZQotIyAtLXdpdGgtbm9hcmNoLXBrZ2NvbmZpZ2RpciBwYXJhbWV0ZXIuCi0KLQot IyBQS0dfQ0hFQ0tfVkFSKFZBUklBQkxFLCBNT0RVTEUsIENPTkZJRy1WQVJJQUJMRSwKLSMgW0FD VElPTi1JRi1GT1VORF0sIFtBQ1RJT04tSUYtTk9ULUZPVU5EXSkKLSMgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBSZXRyaWV2ZXMgdGhlIHZhbHVlIG9mIHRo ZSBwa2ctY29uZmlnIHZhcmlhYmxlIGZvciB0aGUgZ2l2ZW4gbW9kdWxlLgotIyBQS0dfQ0hFQ0tf VkFSCi0KLQotCi0jIFdlIGRlZmluZSwgc2VwYXJhdGVseSwgUFRIUkVBRF9DRkxBR1MsIF9MREZM QUdTIGFuZCBfTElCUwotIyBldmVuIHRob3VnaCBjdXJyZW50bHkgd2UgZG9uJ3Qgc2V0IHRoZW0g dmVyeSBzZXBhcmF0ZWx5LgotIyBUaGlzIG1lYW5zIHRoYXQgdGhlIG1ha2VmaWxlcyB3aWxsIG5v dCBuZWVkIHRvIGNoYW5nZSBpbgotIyB0aGUgZnV0dXJlIGlmIHdlIG1ha2UgdGhlIHRlc3QgbW9y ZSBzb3BoaXN0aWNhdGVkLgotCi0KLQotIyBXZSBpbnZva2UgQVhfUFRIUkVBRF9WQVJTIHdpdGgg dGhlIG5hbWUgb2YgYW5vdGhlciBtYWNybwotIyB3aGljaCBpcyB0aGVuIGV4cGFuZGVkIG9uY2Ug Zm9yIGVhY2ggdmFyaWFibGUuCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLSMgRmV0Y2hlZCBm cm9tIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9YXV0b2NvbmYtYXJjaGl2 ZS5naXQ7YT1ibG9iX3BsYWluO2Y9bTQvYXhfY29tcGFyZV92ZXJzaW9uLm00Ci0jIENvbW1pdCBJ RDogMjc5NDhmNDljYTMwZTQyMjJiYjdjZGQ1NTE4MmJkNzM0MWFjNTBjNQotIyA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLSMgICAgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mLWFyY2hp dmUvYXhfY29tcGFyZV92ZXJzaW9uLmh0bWwKLSMgPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0jCi0jIFNZ Tk9QU0lTCi0jCi0jICAgQVhfQ09NUEFSRV9WRVJTSU9OKFZFUlNJT05fQSwgT1AsIFZFUlNJT05f QiwgW0FDVElPTi1JRi1UUlVFXSwgW0FDVElPTi1JRi1GQUxTRV0pCi0jCi0jIERFU0NSSVBUSU9O Ci0jCi0jICAgVGhpcyBtYWNybyBjb21wYXJlcyB0d28gdmVyc2lvbiBzdHJpbmdzLiBEdWUgdG8g dGhlIHZhcmlvdXMgbnVtYmVyIG9mCi0jICAgbWlub3ItdmVyc2lvbiBudW1iZXJzIHRoYXQgY2Fu IGV4aXN0LCBhbmQgdGhlIGZhY3QgdGhhdCBzdHJpbmcKLSMgICBjb21wYXJpc29ucyBhcmUgbm90 IGNvbXBhdGlibGUgd2l0aCBudW1lcmljIGNvbXBhcmlzb25zLCB0aGlzIGlzIG5vdAotIyAgIG5l Y2Vzc2FyaWx5IHRyaXZpYWwgdG8gZG8gaW4gYSBhdXRvY29uZiBzY3JpcHQuIFRoaXMgbWFjcm8g bWFrZXMgZG9pbmcKLSMgICB0aGVzZSBjb21wYXJpc29ucyBlYXN5LgotIwotIyAgIFRoZSBzaXgg YmFzaWMgY29tcGFyaXNvbnMgYXJlIGF2YWlsYWJsZSwgYXMgd2VsbCBhcyBjaGVja2luZyBlcXVh bGl0eQotIyAgIGxpbWl0ZWQgdG8gYSBjZXJ0YWluIG51bWJlciBvZiBtaW5vci12ZXJzaW9uIGxl dmVscy4KLSMKLSMgICBUaGUgb3BlcmF0b3IgT1AgZGV0ZXJtaW5lcyB3aGF0IHR5cGUgb2YgY29t cGFyaXNvbiB0byBkbywgYW5kIGNhbiBiZSBvbmUKLSMgICBvZjoKLSMKLSMgICAgZXEgIC0gZXF1 YWwgKHRlc3QgQSA9PSBCKQotIyAgICBuZSAgLSBub3QgZXF1YWwgKHRlc3QgQSAhPSBCKQotIyAg ICBsZSAgLSBsZXNzIHRoYW4gb3IgZXF1YWwgKHRlc3QgQSA8PSBCKQotIyAgICBnZSAgLSBncmVh dGVyIHRoYW4gb3IgZXF1YWwgKHRlc3QgQSA+PSBCKQotIyAgICBsdCAgLSBsZXNzIHRoYW4gKHRl c3QgQSA8IEIpCi0jICAgIGd0ICAtIGdyZWF0ZXIgdGhhbiAodGVzdCBBID4gQikKLSMKLSMgICBB ZGRpdGlvbmFsbHksIHRoZSBlcSBhbmQgbmUgb3BlcmF0b3IgY2FuIGhhdmUgYSBudW1iZXIgYWZ0 ZXIgaXQgdG8gbGltaXQKLSMgICB0aGUgdGVzdCB0byB0aGF0IG51bWJlciBvZiBtaW5vciB2ZXJz aW9ucy4KLSMKLSMgICAgZXEwIC0gZXF1YWwgdXAgdG8gdGhlIGxlbmd0aCBvZiB0aGUgc2hvcnRl ciB2ZXJzaW9uCi0jICAgIG5lMCAtIG5vdCBlcXVhbCB1cCB0byB0aGUgbGVuZ3RoIG9mIHRoZSBz aG9ydGVyIHZlcnNpb24KLSMgICAgZXFOIC0gZXF1YWwgdXAgdG8gTiBzdWItdmVyc2lvbiBsZXZl bHMKLSMgICAgbmVOIC0gbm90IGVxdWFsIHVwIHRvIE4gc3ViLXZlcnNpb24gbGV2ZWxzCi0jCi0j ICAgV2hlbiB0aGUgY29uZGl0aW9uIGlzIHRydWUsIHNoZWxsIGNvbW1hbmRzIEFDVElPTi1JRi1U UlVFIGFyZSBydW4sCi0jICAgb3RoZXJ3aXNlIHNoZWxsIGNvbW1hbmRzIEFDVElPTi1JRi1GQUxT RSBhcmUgcnVuLiBUaGUgZW52aXJvbm1lbnQKLSMgICB2YXJpYWJsZSAnYXhfY29tcGFyZV92ZXJz aW9uJyBpcyBhbHdheXMgc2V0IHRvIGVpdGhlciAndHJ1ZScgb3IgJ2ZhbHNlJwotIyAgIGFzIHdl bGwuCi0jCi0jICAgRXhhbXBsZXM6Ci0jCi0jICAgICBBWF9DT01QQVJFX1ZFUlNJT04oWzMuMTUu N10sW2x0XSxbMy4xNS44XSkKLSMgICAgIEFYX0NPTVBBUkVfVkVSU0lPTihbMy4xNV0sW2x0XSxb My4xNS44XSkKLSMKLSMgICB3b3VsZCBib3RoIGJlIHRydWUuCi0jCi0jICAgICBBWF9DT01QQVJF X1ZFUlNJT04oWzMuMTUuN10sW2VxXSxbMy4xNS44XSkKLSMgICAgIEFYX0NPTVBBUkVfVkVSU0lP TihbMy4xNV0sW2d0XSxbMy4xNS44XSkKLSMKLSMgICB3b3VsZCBib3RoIGJlIGZhbHNlLgotIwot IyAgICAgQVhfQ09NUEFSRV9WRVJTSU9OKFszLjE1LjddLFtlcTJdLFszLjE1LjhdKQotIwotIyAg IHdvdWxkIGJlIHRydWUgYmVjYXVzZSBpdCBpcyBvbmx5IGNvbXBhcmluZyB0d28gbWlub3IgdmVy c2lvbnMuCi0jCi0jICAgICBBWF9DT01QQVJFX1ZFUlNJT04oWzMuMTUuN10sW2VxMF0sWzMuMTVd KQotIwotIyAgIHdvdWxkIGJlIHRydWUgYmVjYXVzZSBpdCBpcyBvbmx5IGNvbXBhcmluZyB0aGUg bGVzc2VyIG51bWJlciBvZiBtaW5vcgotIyAgIHZlcnNpb25zIG9mIHRoZSB0d28gdmFsdWVzLgot IwotIyAgIE5vdGU6IFRoZSBjaGFyYWN0ZXJzIHRoYXQgc2VwYXJhdGUgdGhlIHZlcnNpb24gbnVt YmVycyBkbyBub3QgbWF0dGVyLiBBbgotIyAgIGVtcHR5IHN0cmluZyBpcyB0aGUgc2FtZSBhcyB2 ZXJzaW9uIDAuIE9QIGlzIGV2YWx1YXRlZCBieSBhdXRvY29uZiwgbm90Ci0jICAgY29uZmlndXJl LCBzbyBtdXN0IGJlIGEgc3RyaW5nLCBub3QgYSB2YXJpYWJsZS4KLSMKLSMgICBUaGUgYXV0aG9y IHdvdWxkIGxpa2UgdG8gYWNrbm93bGVkZ2UgR3VpZG8gRHJhaGVpbSB3aG9zZSBhZHZpY2UgYWJv dXQKLSMgICB0aGUgbTRfY2FzZSBhbmQgbTRfaWZ2YWxuIGZ1bmN0aW9ucyBtYWtlIHRoaXMgbWFj cm8gb25seSBpbmNsdWRlIHRoZQotIyAgIHBvcnRpb25zIG5lY2Vzc2FyeSB0byBwZXJmb3JtIHRo ZSBzcGVjaWZpYyBjb21wYXJpc29uIHNwZWNpZmllZCBieSB0aGUKLSMgICBPUCBhcmd1bWVudCBp biB0aGUgZmluYWwgY29uZmlndXJlIHNjcmlwdC4KLSMKLSMgTElDRU5TRQotIwotIyAgIENvcHly aWdodCAoYykgMjAwOCBUaW0gVG9vbGFuIDx0b29sYW5AZWxlLnVyaS5lZHU+Ci0jCi0jICAgQ29w eWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgZmlsZSwgd2l0aCBvciB3aXRob3V0IG1vZGlm aWNhdGlvbiwgYXJlCi0jICAgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5 IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQgbm90aWNlCi0jICAgYW5kIHRoaXMgbm90aWNlIGFyZSBw cmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBvZmZlcmVkIGFzLWlzLCB3aXRob3V0IGFueQotIyAgIHdh cnJhbnR5LgotCi0jc2VyaWFsIDExCi0KLQotCi0KLWNhc2UgIiRob3N0X29zIiBpbgotKmZyZWVi c2QqKSBYRU5TVE9SRURfS1ZBPS9kZXYveGVuL3hlbnN0b3JlZCA7OwotKikgWEVOU1RPUkVEX0tW QT0vcHJvYy94ZW4veHNkX2t2YSA7OwotZXNhYwotCi0KLWNhc2UgIiRob3N0X29zIiBpbgotKmZy ZWVic2QqKSBYRU5TVE9SRURfUE9SVD0vZGV2L3hlbi94ZW5zdG9yZWQgOzsKLSopIFhFTlNUT1JF RF9QT1JUPS9wcm9jL3hlbi94c2RfcG9ydCA7OwotZXNhYwotCi0KLSMgc3lzdGVtZC5tNCAtIE1h Y3JvcyB0byBjaGVjayBmb3IgYW5kIGVuYWJsZSBzeXN0ZW1kICAgICAgICAgIC0qLSBBdXRvY29u ZiAtKi0KLSMKLSMgQ29weXJpZ2h0IChDKSAyMDE0IEx1aXMgUi4gUm9kcmlndWV6IDxtY2dyb2ZA c3VzZS5jb20+Ci0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0jIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0j IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSMg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlIEdOVQotIyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu Ci0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCi0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0K LQotCi0KLQotCi0KLQotCi10ZXN0ICJ4JHByZWZpeCIgPSAieE5PTkUiICYmIHByZWZpeD0kYWNf ZGVmYXVsdF9wcmVmaXgKLXRlc3QgIngkZXhlY19wcmVmaXgiID0gInhOT05FIiAmJiBleGVjX3By ZWZpeD0ke3ByZWZpeH0KLQotaWYgdGVzdCAiJGxvY2Fsc3RhdGVkaXIiID0gJyR7cHJlZml4fS92 YXInIDsgdGhlbgotICAgIGxvY2Fsc3RhdGVkaXI9L3ZhcgotZmkKLQotYmluZGlyPWBldmFsIGVj aG8gJGJpbmRpcmAKLXNiaW5kaXI9YGV2YWwgZWNobyAkc2JpbmRpcmAKLWxpYmRpcj1gZXZhbCBl Y2hvICRsaWJkaXJgCi0KLWlmIHRlc3QgIngkc3lzY29uZmRpciIgPSAneCR7cHJlZml4fS9ldGMn IDsgdGhlbgotICAgIGNhc2UgIiRob3N0X29zIiBpbgotICAgICAgICAgKmZyZWVic2QqKQotICAg ICAgICAgc3lzY29uZmRpcj0kcHJlZml4L2V0YwotICAgICAgICAgOzsKLSAgICAgICAgICpzb2xh cmlzKikKLSAgICAgICAgIGlmIHRlc3QgIiRwcmVmaXgiID0gIi91c3IiIDsgdGhlbgotICAgICAg ICAgICAgIHN5c2NvbmZkaXI9L2V0YwotICAgICAgICAgZWxzZQotICAgICAgICAgICAgIHN5c2Nv bmZkaXI9JHByZWZpeC9ldGMKLSAgICAgICAgIGZpCi0gICAgICAgICA7OwotICAgICAgICAgKikK LSAgICAgICAgIHN5c2NvbmZkaXI9L2V0YwotICAgICAgICAgOzsKLSAgICBlc2FjCi1maQotCi0K LSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtaW5pdGRkaXIgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHt3 aXRoX2luaXRkZGlyK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgd2l0aHZhbD0kd2l0aF9pbml0ZGRp cjsgaW5pdGRkaXJfcGF0aD0kd2l0aHZhbAotZWxzZQotICBjYXNlICIkaG9zdF9vcyIgaW4KLSAg ICAgICAgICpsaW51eCopCi0gICAgICAgICBpZiB0ZXN0IC1kICRzeXNjb25mZGlyL3JjLmQvaW5p dC5kIDsgdGhlbgotICAgICAgICAgICAgIGluaXRkZGlyX3BhdGg9JHN5c2NvbmZkaXIvcmMuZC9p bml0LmQKLSAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICBpbml0ZGRpcl9wYXRoPSRzeXNjb25m ZGlyL2luaXQuZAotICAgICAgICAgZmkKLSAgICAgICAgIDs7Ci0gICAgICAgICAqKQotICAgICAg ICAgaW5pdGRkaXJfcGF0aD0kc3lzY29uZmRpci9yYy5kCi0gICAgICAgICA7OwotICAgICBlc2Fj Ci1maQotCi0KLQotIyBDaGVjayB3aGV0aGVyIC0td2l0aC1zeXNjb25maWctbGVhZi1kaXIgd2Fz IGdpdmVuLgotaWYgdGVzdCAiJHt3aXRoX3N5c2NvbmZpZ19sZWFmX2RpcitzZXR9IiA9IHNldDsg dGhlbiA6Ci0gIHdpdGh2YWw9JHdpdGhfc3lzY29uZmlnX2xlYWZfZGlyOyBjb25maWdfbGVhZl9k aXI9JHdpdGh2YWwKLWVsc2UKLSAgY29uZmlnX2xlYWZfZGlyPXN5c2NvbmZpZwotICAgIGlmIHRl c3QgISAtZCAvZXRjL3N5c2NvbmZpZyA7IHRoZW4gY29uZmlnX2xlYWZfZGlyPWRlZmF1bHQgOyBm aQotZmkKLQotQ09ORklHX0xFQUZfRElSPSRjb25maWdfbGVhZl9kaXIKLQotCi0KLSMgQ2hlY2sg d2hldGhlciAtLXdpdGgtbGliZXhlYy1sZWFmLWRpciB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dp dGhfbGliZXhlY19sZWFmX2RpcitzZXR9IiA9IHNldDsgdGhlbiA6Ci0gIHdpdGh2YWw9JHdpdGhf bGliZXhlY19sZWFmX2RpcjsgbGliZXhlY19zdWJkaXI9JHdpdGh2YWwKLWVsc2UKLSAgbGliZXhl Y19zdWJkaXI9JFBBQ0tBR0VfVEFSTkFNRQotZmkKLQotCi0KLSMgQ2hlY2sgd2hldGhlciAtLXdp dGgteGVuLWR1bXBkaXIgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHt3aXRoX3hlbl9kdW1wZGlyK3Nl dH0iID0gc2V0OyB0aGVuIDoKLSAgd2l0aHZhbD0kd2l0aF94ZW5fZHVtcGRpcjsgeGVuX2R1bXBk aXJfcGF0aD0kd2l0aHZhbAotZWxzZQotICB4ZW5fZHVtcGRpcl9wYXRoPSRsb2NhbHN0YXRlZGly L2xpYi94ZW4vZHVtcAotZmkKLQotCi0KLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtcnVuZGlyIHdh cyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF9ydW5kaXIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICB3 aXRodmFsPSR3aXRoX3J1bmRpcjsgcnVuZGlyX3BhdGg9JHdpdGh2YWwKLWVsc2UKLSAgcnVuZGly X3BhdGg9JGxvY2Fsc3RhdGVkaXIvcnVuCi1maQotCi0KLQotIyBDaGVjayB3aGV0aGVyIC0td2l0 aC1kZWJ1Z2RpciB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfZGVidWdkaXIrc2V0fSIgPSBz ZXQ7IHRoZW4gOgotICB3aXRodmFsPSR3aXRoX2RlYnVnZGlyOyBkZWJ1Z2Rpcl9wYXRoPSR3aXRo dmFsCi1lbHNlCi0gIGRlYnVnZGlyX3BhdGg9JHByZWZpeC9saWIvZGVidWcKLWZpCi0KLQotaWYg dGVzdCAiJGxpYmV4ZWNkaXIiID0gJyR7ZXhlY19wcmVmaXh9L2xpYmV4ZWMnIDsgdGhlbgotICAg IGNhc2UgIiRob3N0X29zIiBpbgotICAgICAgICAgKm5ldGJzZCopIDs7Ci0gICAgICAgICAqKQot ICAgICAgICAgbGliZXhlY2Rpcj0nJHtleGVjX3ByZWZpeH0vbGliJwotICAgICAgICAgOzsKLSAg ICBlc2FjCi1maQotTElCRVhFQz1gZXZhbCBlY2hvICRsaWJleGVjZGlyLyRsaWJleGVjX3N1YmRp cmAKLQotCi1MSUJFWEVDX0JJTj0ke0xJQkVYRUN9L2JpbgotCi1MSUJFWEVDX0xJQj0ke0xJQkVY RUN9L2xpYgotCi1MSUJFWEVDX0lOQz0ke0xJQkVYRUN9L2luY2x1ZGUKLQotWEVORklSTVdBUkVE SVI9JHtMSUJFWEVDfS9ib290Ci0KLQotWEVOX1JVTl9ESVI9JHJ1bmRpcl9wYXRoL3hlbgotCi0K LVhFTl9MT0dfRElSPSRsb2NhbHN0YXRlZGlyL2xvZy94ZW4KLQotCi1YRU5fTElCX1NUT1JFRD0k bG9jYWxzdGF0ZWRpci9saWIveGVuc3RvcmVkCi0KLQotWEVOX1JVTl9TVE9SRUQ9JHJ1bmRpcl9w YXRoL3hlbnN0b3JlZAotCi0KLVhFTl9MSUJfRElSPSRsb2NhbHN0YXRlZGlyL2xpYi94ZW4KLQot Ci1TSEFSRURJUj0kcHJlZml4L3NoYXJlCi0KLQotQ09ORklHX0RJUj0kc3lzY29uZmRpcgotCi0K LUlOSVREX0RJUj0kaW5pdGRkaXJfcGF0aAotCi0KLVhFTl9DT05GSUdfRElSPSRDT05GSUdfRElS L3hlbgotCi0KLVhFTl9TQ1JJUFRfRElSPSRYRU5fQ09ORklHX0RJUi9zY3JpcHRzCi0KLQotY2Fz ZSAiJGhvc3Rfb3MiIGluCi0qZnJlZWJzZCopIFhFTl9MT0NLX0RJUj0kbG9jYWxzdGF0ZWRpci9s aWIgOzsKLSpuZXRic2QqKSBYRU5fTE9DS19ESVI9JGxvY2Fsc3RhdGVkaXIvbGliIDs7Ci0qKSBY RU5fTE9DS19ESVI9JGxvY2Fsc3RhdGVkaXIvbG9jayA7OwotZXNhYwotCi0KLVhFTl9QQUdJTkdf RElSPSRsb2NhbHN0YXRlZGlyL2xpYi94ZW4veGVucGFnaW5nCi0KLQotWEVOX0RVTVBfRElSPSR4 ZW5fZHVtcGRpcl9wYXRoCi0KLQotREVCVUdfRElSPSRkZWJ1Z2Rpcl9wYXRoCi0KLQotCi0jIEVu YWJsZS9kaXNhYmxlIG9wdGlvbnMKLQotIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXJwYXRoIHdh cyBnaXZlbi4KLWlmIHRlc3QgIiR7ZW5hYmxlX3JwYXRoK3NldH0iID0gc2V0OyB0aGVuIDoKLSAg ZW5hYmxldmFsPSRlbmFibGVfcnBhdGg7Ci1maQotCi0KLWlmIHRlc3QgIngkZW5hYmxlX3JwYXRo IiA9ICJ4bm8iOyB0aGVuIDoKLQotICAgIGF4X2N2X3JwYXRoPSJuIgotCi1lbGlmIHRlc3QgIngk ZW5hYmxlX3JwYXRoIiA9ICJ4eWVzIjsgdGhlbiA6Ci0KLSAgICBheF9jdl9ycGF0aD0ieSIKLQot ZWxpZiB0ZXN0IC16ICRheF9jdl9ycGF0aDsgdGhlbiA6Ci0KLSAgICBheF9jdl9ycGF0aD0ibiIK LQotZmkKLXJwYXRoPSRheF9jdl9ycGF0aAotCi0KLQotIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxl LWdpdGh0dHAgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHtlbmFibGVfZ2l0aHR0cCtzZXR9IiA9IHNl dDsgdGhlbiA6Ci0gIGVuYWJsZXZhbD0kZW5hYmxlX2dpdGh0dHA7Ci1maQotCi0KLWlmIHRlc3Qg IngkZW5hYmxlX2dpdGh0dHAiID0gInhubyI7IHRoZW4gOgotCi0gICAgYXhfY3ZfZ2l0aHR0cD0i biIKLQotZWxpZiB0ZXN0ICJ4JGVuYWJsZV9naXRodHRwIiA9ICJ4eWVzIjsgdGhlbiA6Ci0KLSAg ICBheF9jdl9naXRodHRwPSJ5IgotCi1lbGlmIHRlc3QgLXogJGF4X2N2X2dpdGh0dHA7IHRoZW4g OgotCi0gICAgYXhfY3ZfZ2l0aHR0cD0ibiIKLQotZmkKLWdpdGh0dHA9JGF4X2N2X2dpdGh0dHAK LQotCi0KLSMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1tb25pdG9ycyB3YXMgZ2l2ZW4uCi1pZiB0 ZXN0ICIke2VuYWJsZV9tb25pdG9ycytzZXR9IiA9IHNldDsgdGhlbiA6Ci0gIGVuYWJsZXZhbD0k ZW5hYmxlX21vbml0b3JzOwotZmkKLQotCi1pZiB0ZXN0ICJ4JGVuYWJsZV9tb25pdG9ycyIgPSAi eG5vIjsgdGhlbiA6Ci0KLSAgICBheF9jdl9tb25pdG9ycz0ibiIKLQotZWxpZiB0ZXN0ICJ4JGVu YWJsZV9tb25pdG9ycyIgPSAieHllcyI7IHRoZW4gOgotCi0gICAgYXhfY3ZfbW9uaXRvcnM9Inki Ci0KLWVsaWYgdGVzdCAteiAkYXhfY3ZfbW9uaXRvcnM7IHRoZW4gOgotCi0gICAgYXhfY3ZfbW9u aXRvcnM9InkiCi0KLWZpCi1tb25pdG9ycz0kYXhfY3ZfbW9uaXRvcnMKLQotCi0KLSMgQ2hlY2sg d2hldGhlciAtLWVuYWJsZS1vY2FtbHRvb2xzIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7ZW5hYmxl X29jYW1sdG9vbHMrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICBlbmFibGV2YWw9JGVuYWJsZV9vY2Ft bHRvb2xzOwotZmkKLQotCi1pZiB0ZXN0ICJ4JGVuYWJsZV9vY2FtbHRvb2xzIiA9ICJ4bm8iOyB0 aGVuIDoKLQotICAgIGF4X2N2X29jYW1sdG9vbHM9Im4iCi0KLWVsaWYgdGVzdCAieCRlbmFibGVf b2NhbWx0b29scyIgPSAieHllcyI7IHRoZW4gOgotCi0gICAgYXhfY3Zfb2NhbWx0b29scz0ieSIK LQotZWxpZiB0ZXN0IC16ICRheF9jdl9vY2FtbHRvb2xzOyB0aGVuIDoKLQotICAgIGF4X2N2X29j YW1sdG9vbHM9InkiCi0KLWZpCi1vY2FtbHRvb2xzPSRheF9jdl9vY2FtbHRvb2xzCi0KLQotCi0j IENoZWNrIHdoZXRoZXIgLS1lbmFibGUteHNtcG9saWN5IHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7 ZW5hYmxlX3hzbXBvbGljeStzZXR9IiA9IHNldDsgdGhlbiA6Ci0gIGVuYWJsZXZhbD0kZW5hYmxl X3hzbXBvbGljeTsKLWZpCi0KLQotaWYgdGVzdCAieCRlbmFibGVfeHNtcG9saWN5IiA9ICJ4bm8i OyB0aGVuIDoKLQotICAgIGF4X2N2X3hzbXBvbGljeT0ibiIKLQotZWxpZiB0ZXN0ICJ4JGVuYWJs ZV94c21wb2xpY3kiID0gInh5ZXMiOyB0aGVuIDoKLQotICAgIGF4X2N2X3hzbXBvbGljeT0ieSIK LQotZWxpZiB0ZXN0IC16ICRheF9jdl94c21wb2xpY3k7IHRoZW4gOgotCi0gICAgYXhfY3ZfeHNt cG9saWN5PSJ5IgotCi1maQoteHNtcG9saWN5PSRheF9jdl94c21wb2xpY3kKLQotCi0KLSMgQ2hl Y2sgd2hldGhlciAtLWVuYWJsZS1vdm1mIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7ZW5hYmxlX292 bWYrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICBlbmFibGV2YWw9JGVuYWJsZV9vdm1mOwotZmkKLQot Ci1pZiB0ZXN0ICJ4JGVuYWJsZV9vdm1mIiA9ICJ4bm8iOyB0aGVuIDoKLQotICAgIGF4X2N2X292 bWY9Im4iCi0KLWVsaWYgdGVzdCAieCRlbmFibGVfb3ZtZiIgPSAieHllcyI7IHRoZW4gOgotCi0g ICAgYXhfY3Zfb3ZtZj0ieSIKLQotZWxpZiB0ZXN0IC16ICRheF9jdl9vdm1mOyB0aGVuIDoKLQot ICAgIGF4X2N2X292bWY9Im4iCi0KLWZpCi1vdm1mPSRheF9jdl9vdm1mCi0KLQotCi0jIENoZWNr IHdoZXRoZXIgLS1lbmFibGUtc2VhYmlvcyB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke2VuYWJsZV9z ZWFiaW9zK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgZW5hYmxldmFsPSRlbmFibGVfc2VhYmlvczsK LWZpCi0KLQotaWYgdGVzdCAieCRlbmFibGVfc2VhYmlvcyIgPSAieG5vIjsgdGhlbiA6Ci0KLSAg ICBheF9jdl9zZWFiaW9zPSJuIgotCi1lbGlmIHRlc3QgIngkZW5hYmxlX3NlYWJpb3MiID0gInh5 ZXMiOyB0aGVuIDoKLQotICAgIGF4X2N2X3NlYWJpb3M9InkiCi0KLWVsaWYgdGVzdCAteiAkYXhf Y3Zfc2VhYmlvczsgdGhlbiA6Ci0KLSAgICBheF9jdl9zZWFiaW9zPSJ5IgotCi1maQotc2VhYmlv cz0kYXhfY3Zfc2VhYmlvcwotCi0KLQotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpbnV4LWJh Y2tlbmQtbW9kdWxlcyB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfbGludXhfYmFja2VuZF9t b2R1bGVzK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgd2l0aHZhbD0kd2l0aF9saW51eF9iYWNrZW5k X21vZHVsZXM7IExJTlVYX0JBQ0tFTkRfTU9EVUxFUz0iJHdpdGh2YWwiCi1lbHNlCi0gIGNhc2Ug IiRob3N0X29zIiBpbgotKmxpbnV4KikKLUxJTlVYX0JBQ0tFTkRfTU9EVUxFUz0iCi14ZW4tZXZ0 Y2huCi14ZW4tZ250ZGV2Ci14ZW4tZ250YWxsb2MKLXhlbi1ibGtiYWNrCi14ZW4tbmV0YmFjawot eGVuLXBjaWJhY2sKLWV2dGNobgotZ250ZGV2Ci1uZXRiawotYmxrYmsKLXhlbi1zY3NpYmsKLXVz YmJrCi1wY2liYWNrCi14ZW4tYWNwaS1wcm9jZXNzb3IKLWJsa3RhcDIKLSIKLTs7Ci0qKQotTElO VVhfQkFDS0VORF9NT0RVTEVTPQotOzsKLWVzYWMKLWZpCi0KLUxJTlVYX0JBQ0tFTkRfTU9EVUxF Uz0iYGV2YWwgZWNobyAkTElOVVhfQkFDS0VORF9NT0RVTEVTYCIKLQotCi0jIENoZWNrIHdoZXRo ZXIgLS1lbmFibGUtYmxrdGFwMiB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke2VuYWJsZV9ibGt0YXAy K3NldH0iID0gc2V0OyB0aGVuIDoKLSAgZW5hYmxldmFsPSRlbmFibGVfYmxrdGFwMjsKLWVsc2UK LQotICAgICAgICBlbmFibGVfYmxrdGFwMj0ibm8iCi0KLWZpCi0KLWlmIHRlc3QgIngkZW5hYmxl X2Jsa3RhcDIiID0gInh5ZXMiOyB0aGVuIDoKLQotCi0kYXNfZWNobyAiI2RlZmluZSBIQVZFX0JM S1RBUDIgMSIgPj5jb25mZGVmcy5oCi0KLSAgICBibGt0YXAyPXkKLWVsc2UKLQotICAgIGJsa3Rh cDI9bgotCi1maQotCi0KLQotIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXFlbXUtdHJhZGl0aW9u YWwgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHtlbmFibGVfcWVtdV90cmFkaXRpb25hbCtzZXR9IiA9 IHNldDsgdGhlbiA6Ci0gIGVuYWJsZXZhbD0kZW5hYmxlX3FlbXVfdHJhZGl0aW9uYWw7Ci1lbHNl Ci0KLSAgICBjYXNlICIkaG9zdF9jcHUiIGluCi0gICAgICAgIGlbMzQ1Nl04Nnx4ODZfNjQpCi0g ICAgICAgICAgIGVuYWJsZV9xZW11X3RyYWRpdGlvbmFsPSJ5ZXMiOzsKLSAgICAgICAgKikgZW5h YmxlX3FlbXVfdHJhZGl0aW9uYWw9Im5vIjs7Ci0gICAgZXNhYwotICAgIGNhc2UgIiRob3N0X29z IiBpbgotICAgICAgICBmcmVlYnNkKikKLSAgICAgICAgICAgZW5hYmxlX3FlbXVfdHJhZGl0aW9u YWw9Im5vIjs7Ci0gICAgZXNhYwotCi0KLWZpCi0KLWlmIHRlc3QgIngkZW5hYmxlX3FlbXVfdHJh ZGl0aW9uYWwiID0gInh5ZXMiOyB0aGVuIDoKLQotCi0kYXNfZWNobyAiI2RlZmluZSBIQVZFX1FF TVVfVFJBRElUSU9OQUwgMSIgPj5jb25mZGVmcy5oCi0KLSAgICBxZW11X3RyYWRpdGlvbmFsPXkK LWVsc2UKLQotICAgIHFlbXVfdHJhZGl0aW9uYWw9bgotCi1maQotCi0KLSMgQ2hlY2sgd2hldGhl ciAtLWVuYWJsZS1yb21iaW9zIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7ZW5hYmxlX3JvbWJpb3Mr c2V0fSIgPSBzZXQ7IHRoZW4gOgotICBlbmFibGV2YWw9JGVuYWJsZV9yb21iaW9zOwotZWxzZQot Ci0gICAgaWYgdGVzdCAieCRlbmFibGVfcWVtdV90cmFkaXRpb25hbCIgPSAieHllcyI7IHRoZW4g OgotCi0gICAgICAgIGVuYWJsZV9yb21iaW9zPSJ5ZXMiCi0KLWVsc2UKLQotICAgICAgICBlbmFi bGVfcm9tYmlvcz0ibm8iCi0KLWZpCi0KLWZpCi0KLWlmIHRlc3QgIngkZW5hYmxlX3JvbWJpb3Mi ID0gInh5ZXMiOyB0aGVuIDoKLQotICAgICAgICAgICAgICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qg d29yZCBvZiAiYXM4NiIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1z ZXQgZHVtbXkgYXM4NjsgYWNfd29yZD0kMgoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tp bmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3BhdGhfQVM4Nis6fSBmYWxz ZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGNhc2UgJEFT ODYgaW4KLSAgW1xcL10qIHwgPzpbXFwvXSopCi0gIGFjX2N2X3BhdGhfQVM4Nj0iJEFTODYiICMg TGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgotICA7OwotICAqKQot ICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi1mb3IgYXNfZGlyIGluICRQ QVRICi1kbwotICBJRlM9JGFzX3NhdmVfSUZTCi0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rp cj0uCi0gICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7 IGRvCi0gIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4 dCI7IHRoZW4KLSAgICBhY19jdl9wYXRoX0FTODY9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19l eHQiCi0gICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFz X2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgYnJlYWsgMgotICBmaQotZG9uZQot ICBkb25lCi1JRlM9JGFzX3NhdmVfSUZTCi0KLSAgdGVzdCAteiAiJGFjX2N2X3BhdGhfQVM4NiIg JiYgYWNfY3ZfcGF0aF9BUzg2PSJubyIKLSAgOzsKLWVzYWMKLWZpCi1BUzg2PSRhY19jdl9wYXRo X0FTODYKLWlmIHRlc3QgLW4gIiRBUzg2IjsgdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJEFTODYiID4mNQotJGFzX2VjaG8gIiRBUzg2IiA+ JjY7IH0KLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy ZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci1maQotCi0KLWlmIHRlc3QgeCIk e0FTODZ9IiA9IHgibm8iCi10aGVuCi0gICAgYXNfZm5fZXJyb3IgJD8gIlVuYWJsZSB0byBmaW5k IGFzODYsIHBsZWFzZSBpbnN0YWxsIGFzODYiICIkTElORU5PIiA1Ci1maQotICAgICMgRXh0cmFj dCB0aGUgZmlyc3Qgd29yZCBvZiAibGQ4NiIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3 aXRoIGFyZ3MuCi1zZXQgZHVtbXkgbGQ4NjsgYWNfd29yZD0kMgoteyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotJGFzX2Vj aG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3BhdGhf TEQ4Nis6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNl Ci0gIGNhc2UgJExEODYgaW4KLSAgW1xcL10qIHwgPzpbXFwvXSopCi0gIGFjX2N2X3BhdGhfTEQ4 Nj0iJExEODYiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgot ICA7OwotICAqKQotICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi1mb3Ig YXNfZGlyIGluICRQQVRICi1kbwotICBJRlM9JGFzX3NhdmVfSUZTCi0gIHRlc3QgLXogIiRhc19k aXIiICYmIGFzX2Rpcj0uCi0gICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxl X2V4dGVuc2lvbnM7IGRvCi0gIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29y ZCRhY19leGVjX2V4dCI7IHRoZW4KLSAgICBhY19jdl9wYXRoX0xEODY9IiRhc19kaXIvJGFjX3dv cmQkYWNfZXhlY19leHQiCi0gICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgYnJlYWsgMgot ICBmaQotZG9uZQotICBkb25lCi1JRlM9JGFzX3NhdmVfSUZTCi0KLSAgdGVzdCAteiAiJGFjX2N2 X3BhdGhfTEQ4NiIgJiYgYWNfY3ZfcGF0aF9MRDg2PSJubyIKLSAgOzsKLWVzYWMKLWZpCi1MRDg2 PSRhY19jdl9wYXRoX0xEODYKLWlmIHRlc3QgLW4gIiRMRDg2IjsgdGhlbgotICB7ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJExEODYiID4mNQotJGFzX2Vj aG8gIiRMRDg2IiA+JjY7IH0KLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci1maQotCi0K LWlmIHRlc3QgeCIke0xEODZ9IiA9IHgibm8iCi10aGVuCi0gICAgYXNfZm5fZXJyb3IgJD8gIlVu YWJsZSB0byBmaW5kIGxkODYsIHBsZWFzZSBpbnN0YWxsIGxkODYiICIkTElORU5PIiA1Ci1maQot ICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYmNjIiwgc28gaXQgY2FuIGJlIGEgcHJv Z3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSBiY2M7IGFjX3dvcmQ9JDIKLXsgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+ JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgJHth Y19jdl9wYXRoX0JDQys6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIg PiY2Ci1lbHNlCi0gIGNhc2UgJEJDQyBpbgotICBbXFwvXSogfCA/OltcXC9dKikKLSAgYWNfY3Zf cGF0aF9CQ0M9IiRCQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBw YXRoLgotICA7OwotICAqKQotICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9S Ci1mb3IgYXNfZGlyIGluICRQQVRICi1kbwotICBJRlM9JGFzX3NhdmVfSUZTCi0gIHRlc3QgLXog IiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVj dXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8k YWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSAgICBhY19jdl9wYXRoX0JDQz0iJGFzX2Rpci8k YWNfd29yZCRhY19leGVjX2V4dCIKLSAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICBicmVh ayAyCi0gIGZpCi1kb25lCi0gIGRvbmUKLUlGUz0kYXNfc2F2ZV9JRlMKLQotICB0ZXN0IC16ICIk YWNfY3ZfcGF0aF9CQ0MiICYmIGFjX2N2X3BhdGhfQkNDPSJubyIKLSAgOzsKLWVzYWMKLWZpCi1C Q0M9JGFjX2N2X3BhdGhfQkNDCi1pZiB0ZXN0IC1uICIkQkNDIjsgdGhlbgotICB7ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJEJDQyIgPiY1Ci0kYXNfZWNo byAiJEJDQyIgPiY2OyB9Ci1lbHNlCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQotZmkKLQotCi1p ZiB0ZXN0IHgiJHtCQ0N9IiA9IHgibm8iCi10aGVuCi0gICAgYXNfZm5fZXJyb3IgJD8gIlVuYWJs ZSB0byBmaW5kIGJjYywgcGxlYXNlIGluc3RhbGwgYmNjIiAiJExJTkVOTyIgNQotZmkKLSAgICB7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBsem1h X3ZlcnNpb25fbnVtYmVyIGluIC1sbHptYSIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3Ig bHptYV92ZXJzaW9uX251bWJlciBpbiAtbGx6bWEuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfbGli X2x6bWFfbHptYV92ZXJzaW9uX251bWJlcis6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24g IihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKLUxJ QlM9Ii1sbHptYSAgJExJQlMiCi1jYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4k YWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLS8qIE92ZXJyaWRlIGFueSBHQ0MgaW50 ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgotICAgVXNlIGNoYXIgYmVjYXVzZSBp bnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCi0gICBidWlsdGluIGFuZCB0 aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwotI2lmZGVm IF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiCi0jZW5kaWYKLWNoYXIgbHptYV92ZXJzaW9uX251bWJl ciAoKTsKLWludAotbWFpbiAoKQotewotcmV0dXJuIGx6bWFfdmVyc2lvbl9udW1iZXIgKCk7Ci0g IDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8i OyB0aGVuIDoKLSAgYWNfY3ZfbGliX2x6bWFfbHptYV92ZXJzaW9uX251bWJlcj15ZXMKLWVsc2UK LSAgYWNfY3ZfbGliX2x6bWFfbHptYV92ZXJzaW9uX251bWJlcj1ubwotZmkKLXJtIC1mIGNvcmUg Y29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4 dCBjb25mdGVzdC4kYWNfZXh0Ci1MSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCi1maQoteyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJf bHptYV9sem1hX3ZlcnNpb25fbnVtYmVyIiA+JjUKLSRhc19lY2hvICIkYWNfY3ZfbGliX2x6bWFf bHptYV92ZXJzaW9uX251bWJlciIgPiY2OyB9Ci1pZiB0ZXN0ICJ4JGFjX2N2X2xpYl9sem1hX2x6 bWFfdmVyc2lvbl9udW1iZXIiID0geHllczsgdGhlbiA6Ci0gIGNhdCA+PmNvbmZkZWZzLmggPDxf QUNFT0YKLSNkZWZpbmUgSEFWRV9MSUJMWk1BIDEKLV9BQ0VPRgotCi0gIExJQlM9Ii1sbHptYSAk TElCUyIKLQotZWxzZQotICBhc19mbl9lcnJvciAkPyAiQ291bGQgbm90IGZpbmQgbHptYSwgbmVl ZGVkIHRvIGJ1aWxkIHJvbWJpb3MiICIkTElORU5PIiA1Ci1maQotCi0KLSRhc19lY2hvICIjZGVm aW5lIEhBVkVfUk9NQklPUyAxIiA+PmNvbmZkZWZzLmgKLQotICAgIHJvbWJpb3M9eQotZWxzZQot Ci0gICAgcm9tYmlvcz1uCi0KLWZpCi0KLQotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLXN5c3Rl bS1xZW11IHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF9zeXN0ZW1fcWVtdStzZXR9IiA9IHNl dDsgdGhlbiA6Ci0gIHdpdGh2YWw9JHdpdGhfc3lzdGVtX3FlbXU7Ci0gICAgY2FzZSAkd2l0aHZh bCBpbgotICAgICAgICB5ZXMpCi0gICAgICAgICAgICBxZW11X3hlbj1uIDsgcWVtdV94ZW5fcGF0 aD0icWVtdS1zeXN0ZW0taTM4NiIKLSAgICAgICAgICAgIHFlbXVfeGVuX3N5c3RlbWQ9Ii91c3Iv YmluL2VudiAkcWVtdV94ZW5fcGF0aCIgOzsKLSAgICAgICAgbm8pCi0gICAgICAgICAgICBxZW11 X3hlbj15IDs7Ci0gICAgICAgICopCi0gICAgICAgICAgICBxZW11X3hlbj1uIDsgcWVtdV94ZW5f cGF0aD0iJHdpdGh2YWwiIDsKLSAgICAgICAgICAgIHFlbXVfeGVuX3N5c3RlbWQ9IiRxZW11X3hl bl9wYXRoIiA7OwotICAgIGVzYWMKLQotZWxzZQotCi0gICAgY2FzZSAiJGhvc3RfY3B1IiBpbgot ICAgICAgICBpWzM0NTZdODZ8eDg2XzY0KQotICAgICAgICAgICBxZW11X3hlbj15OzsKLSAgICAg ICAgYXJtKnxhYXJjaDY0KQotICAgICAgICAgICBxZW11X3hlbj15OzsKLSAgICAgICAgKikgcWVt dV94ZW49bjs7Ci0gICAgZXNhYwotCi1maQotCi1pZiB0ZXN0ICJ4JHFlbXVfeGVuIiA9ICJ4eSI7 IHRoZW4gOgotCi0gICAgcWVtdV94ZW5fcGF0aD0iJExJQkVYRUNfQklOL3FlbXUtc3lzdGVtLWkz ODYiCi0gICAgcWVtdV94ZW5fc3lzdGVtZD0iJHFlbXVfeGVuX3BhdGgiCi0KLWZpCi0KLWNhdCA+ PmNvbmZkZWZzLmggPDxfQUNFT0YKLSNkZWZpbmUgUUVNVV9YRU5fUEFUSCAiJHFlbXVfeGVuX3Bh dGgiCi1fQUNFT0YKLQotCi0KLQotCi0KLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtc3lzdGVtLXNl YWJpb3Mgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHt3aXRoX3N5c3RlbV9zZWFiaW9zK3NldH0iID0g c2V0OyB0aGVuIDoKLSAgd2l0aHZhbD0kd2l0aF9zeXN0ZW1fc2VhYmlvczsKLSAgICAjIERpc2Fi bGUgY29tcGlsYXRpb24gb2YgU2VhQklPUy4KLSAgICBzZWFiaW9zPW4KLSAgICBjYXNlICR3aXRo dmFsIGluCi0gICAgICAgIG5vKSBzZWFiaW9zX3BhdGg9IDs7Ci0gICAgICAgIC8qKSAgc2VhYmlv c19wYXRoPSR3aXRodmFsIDs7Ci0gICAgICAgICopIGFzX2ZuX2Vycm9yICQ/ICJTZWFiaW9zIHNw ZWNpZmllZCwgYnV0IGlzIG5vdCBhbiBhYnNvbHV0ZSBwYXRoIiAiJExJTkVOTyIgNSA7OwotICAg IGVzYWMKLQotZmkKLQotaWYgdGVzdCAieCRzZWFiaW9zIiA9ICJ4eSIgLW8gLW4gIiRzZWFiaW9z X3BhdGgiIDsgdGhlbiA6Ci0KLQotY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSBT RUFCSU9TX1BBVEggIiR7c2VhYmlvc19wYXRoOi0kWEVORklSTVdBUkVESVIvc2VhYmlvcy5iaW59 IgotX0FDRU9GCi0KLQotZmkKLQotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLXN5c3RlbS1vdm1m IHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF9zeXN0ZW1fb3ZtZitzZXR9IiA9IHNldDsgdGhl biA6Ci0gIHdpdGh2YWw9JHdpdGhfc3lzdGVtX292bWY7Ci0gICAgIyBEaXNhYmxlIGNvbXBpbGF0 aW9uIG9mIE9WTUYuCi0gICAgb3ZtZj1uCi0gICAgY2FzZSAkd2l0aHZhbCBpbgotICAgICAgICBu bykgb3ZtZl9wYXRoPSA7OwotICAgICAgICAvKikgIG92bWZfcGF0aD0kd2l0aHZhbCA7OwotICAg ICAgICAqKSBhc19mbl9lcnJvciAkPyAiT1ZNRiBzcGVjaWZpZWQsIGJ1dCBpcyBub3QgYW4gYWJz b2x1dGUgcGF0aCIgIiRMSU5FTk8iIDUgOzsKLSAgICBlc2FjCi0KLWZpCi0KLWlmIHRlc3QgIngk b3ZtZiIgPSAieHkiIC1vIC1uICIkb3ZtZl9wYXRoIiA7IHRoZW4gOgotCi0KLWNhdCA+PmNvbmZk ZWZzLmggPDxfQUNFT0YKLSNkZWZpbmUgT1ZNRl9QQVRIICIke292bWZfcGF0aDotJFhFTkZJUk1X QVJFRElSL292bWYuYmlufSIKLV9BQ0VPRgotCi0KLWZpCi0KLSMgQ2hlY2sgd2hldGhlciAtLWVu YWJsZS1pcHhlIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7ZW5hYmxlX2lweGUrc2V0fSIgPSBzZXQ7 IHRoZW4gOgotICBlbmFibGV2YWw9JGVuYWJsZV9pcHhlOwotICAgICBpZiB0ZXN0ICJ4JGVuYWJs ZV9pcHhlIiA9ICJ4bm8iOyB0aGVuIDoKLSAgaXB4ZT1uCi1lbHNlCi0gIGlweGU9eQotZmkKLQot ZWxzZQotCi0gICAgaWYgdGVzdCAieCRlbmFibGVfcm9tYmlvcyIgPSAieG5vIjsgdGhlbiA6Ci0g IGlweGU9bgotZWxzZQotICBpcHhlPXkKLWZpCi0KLWZpCi0KLQotIyBDaGVjayB3aGV0aGVyIC0t d2l0aC1zeXN0ZW0taXB4ZSB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfc3lzdGVtX2lweGUr c2V0fSIgPSBzZXQ7IHRoZW4gOgotICB3aXRodmFsPSR3aXRoX3N5c3RlbV9pcHhlOwotICAgIGNh c2UgJHdpdGh2YWwgaW4KLSAgICAgICAgbm8pIGFzX2ZuX2Vycm9yICQ/ICItLXdpdGhvdXQtc3lz dGVtLWlweGUgaGFzIG5vIGVmZmVjdCIgIiRMSU5FTk8iIDUgOzsKLSAgICAgICAgLyopICBpcHhl X3BhdGg9JHdpdGh2YWw7IGlweGU9biA7OwotICAgICAgICAqKSBhc19mbl9lcnJvciAkPyAiSVBY RSBzcGVjaWZpZWQsIGJ1dCBpcyBub3QgYW4gYWJzb2x1dGUgcGF0aCIgIiRMSU5FTk8iIDUgOzsK LSAgICBlc2FjCi0KLWZpCi0KLWlmIHRlc3QgIngkaXB4ZSIgPSAieHkiIC1vIC1uICIkaXB4ZV9w YXRoIiA7IHRoZW4gOgotCi0KLSAgICBpZiB0ZXN0ICJ4JGVuYWJsZV9yb21iaW9zIiA9ICJ4bm8i OyB0aGVuIDoKLQotICAgICAgICBhc19mbl9lcnJvciAkPyAiUm9tYmlvcyBpcyByZXF1aXJlZCB0 byB1c2UgSVBYRSIgIiRMSU5FTk8iIDUKLQotZmkKLQotCi1jYXQgPj5jb25mZGVmcy5oIDw8X0FD RU9GCi0jZGVmaW5lIElQWEVfUEFUSCAiJHtpcHhlX3BhdGg6LSRYRU5GSVJNV0FSRURJUi9pcHhl LmJpbn0iCi1fQUNFT0YKLQotCi1maQotCi0KLQotIyBDaGVjayB3aGV0aGVyIC0td2l0aC1leHRy YS1xZW11dS1jb25maWd1cmUtYXJncyB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfZXh0cmFf cWVtdXVfY29uZmlndXJlX2FyZ3Mrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICB3aXRodmFsPSR3aXRo X2V4dHJhX3FlbXV1X2NvbmZpZ3VyZV9hcmdzOwotICAgIGNhc2UgJHdpdGh2YWwgaW4KLSAgICAg ICAgbm8pIEVYVFJBX1FFTVVVX0NPTkZJR1VSRV9BUkdTPSA7OwotICAgICAgICAqKSAgRVhUUkFf UUVNVVVfQ09ORklHVVJFX0FSR1M9JHdpdGh2YWwgOzsKLSAgICBlc2FjCi0KLWZpCi0KLQotCi0K LQotCi0KLQotZm9yIGNwcGZsYWcgaW4gJFBSRVBFTkRfSU5DTFVERVMKLWRvCi0gICAgUFJFUEVO RF9DUFBGTEFHUz0iJFBSRVBFTkRfQ1BQRkxBR1MgLUkkY3BwZmxhZyIKLWRvbmUKLWZvciBsZGZs YWcgaW4gJFBSRVBFTkRfTElCCi1kbwotICAgIFBSRVBFTkRfTERGTEFHUz0iJFBSRVBFTkRfTERG TEFHUyAtTCRsZGZsYWciCi1kb25lCi1mb3IgY3BwZmxhZyBpbiAkQVBQRU5EX0lOQ0xVREVTCi1k bwotICAgIEFQUEVORF9DUFBGTEFHUz0iJEFQUEVORF9DUFBGTEFHUyAtSSRjcHBmbGFnIgotZG9u ZQotZm9yIGxkZmxhZyBpbiAkQVBQRU5EX0xJQgotZG8KLSAgICBBUFBFTkRfTERGTEFHUz0iJEFQ UEVORF9MREZMQUdTIC1MJGxkZmxhZyIKLWRvbmUKLUNQUEZMQUdTPSIkUFJFUEVORF9DUFBGTEFH UyAkQ1BQRkxBR1MgJEFQUEVORF9DUFBGTEFHUyIKLUxERkxBR1M9IiRQUkVQRU5EX0xERkxBR1Mg JExERkxBR1MgJEFQUEVORF9MREZMQUdTIgotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0jIENo ZWNrcyBmb3IgcHJvZ3JhbXMuCi1hY19leHQ9YwotYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKLWFj X2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScK LWFjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExE RkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCi1hY19jb21waWxlcl9nbnU9JGFjX2N2 X2NfY29tcGlsZXJfZ251Ci1pZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0gICMg RXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1nY2MiLCBzbyBpdCBj YW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVm aXh9Z2NjOyBhY193b3JkPSQyCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3Ig JGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfcHJvZ19DQys6fSBmYWxzZTsgdGhlbiA6 Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGlmIHRlc3QgLW4gIiRDQyI7 IHRoZW4KLSAgYWNfY3ZfcHJvZ19DQz0iJENDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUg dGVzdC4KLWVsc2UKLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLWZvciBh c19kaXIgaW4gJFBBVEgKLWRvCi0gIElGUz0kYXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2Rp ciIgJiYgYXNfZGlyPS4KLSAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVf ZXh0ZW5zaW9uczsgZG8KLSAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3Jk JGFjX2V4ZWNfZXh0IjsgdGhlbgotICAgIGFjX2N2X3Byb2dfQ0M9IiR7YWNfdG9vbF9wcmVmaXh9 Z2NjIgotICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRh c19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgIGJyZWFrIDIKLSAgZmkKLWRvbmUK LSAgZG9uZQotSUZTPSRhc19zYXZlX0lGUwotCi1maQotZmkKLUNDPSRhY19jdl9wcm9nX0NDCi1p ZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogcmVzdWx0OiAkQ0MiID4mNQotJGFzX2VjaG8gIiRDQyIgPiY2OyB9Ci1lbHNlCi0g IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1 Ci0kYXNfZWNobyAibm8iID4mNjsgfQotZmkKLQotCi1maQotaWYgdGVzdCAteiAiJGFjX2N2X3By b2dfQ0MiOyB0aGVuCi0gIGFjX2N0X0NDPSRDQwotICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQg b2YgImdjYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVt bXkgZ2NjOyBhY193b3JkPSQyCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3Ig JGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfcHJvZ19hY19jdF9DQys6fSBmYWxzZTsg dGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGlmIHRlc3QgLW4g IiRhY19jdF9DQyI7IHRoZW4KLSAgYWNfY3ZfcHJvZ19hY19jdF9DQz0iJGFjX2N0X0NDIiAjIExl dCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLWVsc2UKLWFzX3NhdmVfSUZTPSRJRlM7IElG Uz0kUEFUSF9TRVBBUkFUT1IKLWZvciBhc19kaXIgaW4gJFBBVEgKLWRvCi0gIElGUz0kYXNfc2F2 ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICBmb3IgYWNfZXhlY19l eHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYgYXNfZm5fZXhlY3V0 YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotICAgIGFjX2N2X3By b2dfYWNfY3RfQ0M9ImdjYyIKLSAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICBicmVhayAy Ci0gIGZpCi1kb25lCi0gIGRvbmUKLUlGUz0kYXNfc2F2ZV9JRlMKLQotZmkKLWZpCi1hY19jdF9D Qz0kYWNfY3ZfcHJvZ19hY19jdF9DQwotaWYgdGVzdCAtbiAiJGFjX2N0X0NDIjsgdGhlbgotICB7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0ND IiA+JjUKLSRhc19lY2hvICIkYWNfY3RfQ0MiID4mNjsgfQotZWxzZQotICB7ICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5v IiA+JjY7IH0KLWZpCi0KLSAgaWYgdGVzdCAieCRhY19jdF9DQyIgPSB4OyB0aGVuCi0gICAgQ0M9 IiIKLSAgZWxzZQotICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4K LXllczopCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6 IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0k YXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQg d2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci1hY190b29sX3dhcm5lZD15ZXMgOzsKLWVzYWMKLSAg ICBDQz0kYWNfY3RfQ0MKLSAgZmkKLWVsc2UKLSAgQ0M9IiRhY19jdl9wcm9nX0NDIgotZmkKLQot aWYgdGVzdCAteiAiJENDIjsgdGhlbgotICAgICAgICAgIGlmIHRlc3QgLW4gIiRhY190b29sX3By ZWZpeCI7IHRoZW4KLSAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9w cmVmaXh9Y2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1 bW15ICR7YWNfdG9vbF9wcmVmaXh9Y2M7IGFjX3dvcmQ9JDIKLXsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSRhc19lY2hv X24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgJHthY19jdl9wcm9nX0ND Kzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAg aWYgdGVzdCAtbiAiJENDIjsgdGhlbgotICBhY19jdl9wcm9nX0NDPSIkQ0MiICMgTGV0IHRoZSB1 c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotZWxzZQotYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRI X1NFUEFSQVRPUgotZm9yIGFzX2RpciBpbiAkUEFUSAotZG8KLSAgSUZTPSRhc19zYXZlX0lGUwot ICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgIGZvciBhY19leGVjX2V4dCBpbiAn JyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICBpZiBhc19mbl9leGVjdXRhYmxlX3Ag IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0gICAgYWNfY3ZfcHJvZ19DQz0i JHthY190b29sX3ByZWZpeH1jYyIKLSAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICBicmVh ayAyCi0gIGZpCi1kb25lCi0gIGRvbmUKLUlGUz0kYXNfc2F2ZV9JRlMKLQotZmkKLWZpCi1DQz0k YWNfY3ZfcHJvZ19DQwotaWYgdGVzdCAtbiAiJENDIjsgdGhlbgotICB7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJENDIiA+JjUKLSRhc19lY2hvICIkQ0Mi ID4mNjsgfQotZWxzZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLWZpCi0KLQotICBmaQotZmkK LWlmIHRlc3QgLXogIiRDQyI7IHRoZW4KLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJj YyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgY2M7 IGFjX3dvcmQ9JDIKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hl Y2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29y ZC4uLiAiID4mNjsgfQotaWYgJHthY19jdl9wcm9nX0NDKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFz X2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbgot ICBhY19jdl9wcm9nX0NDPSIkQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0Lgot ZWxzZQotICBhY19wcm9nX3JlamVjdGVkPW5vCi1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhf U0VQQVJBVE9SCi1mb3IgYXNfZGlyIGluICRQQVRICi1kbwotICBJRlM9JGFzX3NhdmVfSUZTCi0g IHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgZm9yIGFjX2V4ZWNfZXh0IGluICcn ICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAi JGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSAgICBpZiB0ZXN0ICIkYXNfZGly LyRhY193b3JkJGFjX2V4ZWNfZXh0IiA9ICIvdXNyL3VjYi9jYyI7IHRoZW4KLSAgICAgICBhY19w cm9nX3JlamVjdGVkPXllcwotICAgICAgIGNvbnRpbnVlCi0gICAgIGZpCi0gICAgYWNfY3ZfcHJv Z19DQz0iY2MiCi0gICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91 bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgYnJlYWsgMgotICBmaQot ZG9uZQotICBkb25lCi1JRlM9JGFzX3NhdmVfSUZTCi0KLWlmIHRlc3QgJGFjX3Byb2dfcmVqZWN0 ZWQgPSB5ZXM7IHRoZW4KLSAgIyBXZSBmb3VuZCBhIGJvZ29uIGluIHRoZSBwYXRoLCBzbyBtYWtl IHN1cmUgd2UgbmV2ZXIgdXNlIGl0LgotICBzZXQgZHVtbXkgJGFjX2N2X3Byb2dfQ0MKLSAgc2hp ZnQKLSAgaWYgdGVzdCAkIyAhPSAwOyB0aGVuCi0gICAgIyBXZSBjaG9zZSBhIGRpZmZlcmVudCBj b21waWxlciBmcm9tIHRoZSBib2d1cyBvbmUuCi0gICAgIyBIb3dldmVyLCBpdCBoYXMgdGhlIHNh bWUgYmFzZW5hbWUsIHNvIHRoZSBib2dvbiB3aWxsIGJlIGNob3NlbgotICAgICMgZmlyc3QgaWYg d2Ugc2V0IENDIHRvIGp1c3QgdGhlIGJhc2VuYW1lOyB1c2UgdGhlIGZ1bGwgZmlsZSBuYW1lLgot ICAgIHNoaWZ0Ci0gICAgYWNfY3ZfcHJvZ19DQz0iJGFzX2Rpci8kYWNfd29yZCR7MSsnICd9JEAi Ci0gIGZpCi1maQotZmkKLWZpCi1DQz0kYWNfY3ZfcHJvZ19DQwotaWYgdGVzdCAtbiAiJENDIjsg dGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog JENDIiA+JjUKLSRhc19lY2hvICIkQ0MiID4mNjsgfQotZWxzZQotICB7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+ JjY7IH0KLWZpCi0KLQotZmkKLWlmIHRlc3QgLXogIiRDQyI7IHRoZW4KLSAgaWYgdGVzdCAtbiAi JGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotICBmb3IgYWNfcHJvZyBpbiBjbC5leGUKLSAgZG8KLSAg ICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwg c28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSAkYWNfdG9v bF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotJGFzX2VjaG9fbiAiY2hl Y2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3Byb2dfQ0MrOn0gZmFs c2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBpZiB0ZXN0 IC1uICIkQ0MiOyB0aGVuCi0gIGFjX2N2X3Byb2dfQ0M9IiRDQyIgIyBMZXQgdGhlIHVzZXIgb3Zl cnJpZGUgdGhlIHRlc3QuCi1lbHNlCi1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJB VE9SCi1mb3IgYXNfZGlyIGluICRQQVRICi1kbwotICBJRlM9JGFzX3NhdmVfSUZTCi0gIHRlc3Qg LXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19l eGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rp ci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSAgICBhY19jdl9wcm9nX0NDPSIkYWNfdG9v bF9wcmVmaXgkYWNfcHJvZyIKLSAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICBicmVhayAy Ci0gIGZpCi1kb25lCi0gIGRvbmUKLUlGUz0kYXNfc2F2ZV9JRlMKLQotZmkKLWZpCi1DQz0kYWNf Y3ZfcHJvZ19DQwotaWYgdGVzdCAtbiAiJENDIjsgdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJENDIiA+JjUKLSRhc19lY2hvICIkQ0MiID4m NjsgfQotZWxzZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl c3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLWZpCi0KLQotICAgIHRlc3QgLW4g IiRDQyIgJiYgYnJlYWsKLSAgZG9uZQotZmkKLWlmIHRlc3QgLXogIiRDQyI7IHRoZW4KLSAgYWNf Y3RfQ0M9JENDCi0gIGZvciBhY19wcm9nIGluIGNsLmV4ZQotZG8KLSAgIyBFeHRyYWN0IHRoZSBm aXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRo IGFyZ3MuCi1zZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKLXsgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSRhc19l Y2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgJHthY19jdl9wcm9n X2FjX2N0X0NDKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYK LWVsc2UKLSAgaWYgdGVzdCAtbiAiJGFjX2N0X0NDIjsgdGhlbgotICBhY19jdl9wcm9nX2FjX2N0 X0NDPSIkYWNfY3RfQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotZWxzZQot YXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotZm9yIGFzX2RpciBpbiAkUEFU SAotZG8KLSAgSUZTPSRhc19zYXZlX0lGUwotICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9 LgotICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBk bwotICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQi OyB0aGVuCi0gICAgYWNfY3ZfcHJvZ19hY19jdF9DQz0iJGFjX3Byb2ciCi0gICAgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19l eGVjX2V4dCIgPiY1Ci0gICAgYnJlYWsgMgotICBmaQotZG9uZQotICBkb25lCi1JRlM9JGFzX3Nh dmVfSUZTCi0KLWZpCi1maQotYWNfY3RfQ0M9JGFjX2N2X3Byb2dfYWNfY3RfQ0MKLWlmIHRlc3Qg LW4gIiRhY19jdF9DQyI7IHRoZW4KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiByZXN1bHQ6ICRhY19jdF9DQyIgPiY1Ci0kYXNfZWNobyAiJGFjX2N0X0NDIiA+JjY7 IH0KLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1 bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci1maQotCi0KLSAgdGVzdCAtbiAiJGFj X2N0X0NDIiAmJiBicmVhawotZG9uZQotCi0gIGlmIHRlc3QgIngkYWNfY3RfQ0MiID0geDsgdGhl bgotICAgIENDPSIiCi0gIGVsc2UKLSAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xf d2FybmVkIGluCi15ZXM6KQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBs ZXQiID4mNQotJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90 IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotYWNfdG9vbF93YXJuZWQ9eWVzIDs7 Ci1lc2FjCi0gICAgQ0M9JGFjX2N0X0NDCi0gIGZpCi1maQotCi1maQotCi0KLXRlc3QgLXogIiRD QyIgJiYgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBp biBcYCRhY19wd2QnOiIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdk JzoiID4mMjt9Ci1hc19mbl9lcnJvciAkPyAibm8gYWNjZXB0YWJsZSBDIGNvbXBpbGVyIGZvdW5k IGluIFwkUEFUSAotU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8i IDU7IH0KLQotIyBQcm92aWRlIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbXBpbGVyLgot JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIEMgY29t cGlsZXIgdmVyc2lvbiIgPiY1Ci1zZXQgWCAkYWNfY29tcGlsZQotYWNfY29tcGlsZXI9JDIKLWZv ciBhY19vcHRpb24gaW4gLS12ZXJzaW9uIC12IC1WIC1xdmVyc2lvbjsgZG8KLSAgeyB7IGFjX3Ry eT0iJGFjX2NvbXBpbGVyICRhY19vcHRpb24gPiY1IgotY2FzZSAiKCgkYWNfdHJ5IiBpbgotICAq XCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsKLSAgKikgYWNfdHJ5X2Vj aG89JGFjX3RyeTs7Ci1lc2FjCi1ldmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306ICRhY190cnlfZWNob1wiIgotJGFzX2VjaG8gIiRhY190cnlfZWNobyI7IH0g PiY1Ci0gIChldmFsICIkYWNfY29tcGlsZXIgJGFjX29wdGlvbiA+JjUiKSAyPmNvbmZ0ZXN0LmVy cgotICBhY19zdGF0dXM9JD8KLSAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KLSAgICBz ZWQgJzEwYVwKLS4uLiByZXN0IG9mIHN0ZGVyciBvdXRwdXQgZGVsZXRlZCAuLi4KLSAgICAgICAg IDEwcScgY29uZnRlc3QuZXJyID5jb25mdGVzdC5lcjEKLSAgICBjYXQgY29uZnRlc3QuZXIxID4m NQotICBmaQotICBybSAtZiBjb25mdGVzdC5lcjEgY29uZnRlc3QuZXJyCi0gICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICB0ZXN0 ICRhY19zdGF0dXMgPSAwOyB9Ci1kb25lCi0KLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgdGhlIEdOVSBDIGNvbXBp bGVyIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBH TlUgQyBjb21waWxlci4uLiAiID4mNjsgfQotaWYgJHthY19jdl9jX2NvbXBpbGVyX2dudSs6fSBm YWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGNhdCBj b25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5o LiAgKi8KLQotaW50Ci1tYWluICgpCi17Ci0jaWZuZGVmIF9fR05VQ19fCi0gICAgICAgY2hva2Ug bWUKLSNlbmRpZgotCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5 X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSAgYWNfY29tcGlsZXJfZ251PXllcwotZWxzZQot ICBhY19jb21waWxlcl9nbnU9bm8KLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVz dC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLWFjX2N2X2NfY29tcGlsZXJfZ251PSRhY19j b21waWxlcl9nbnUKLQotZmkKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogcmVzdWx0OiAkYWNfY3ZfY19jb21waWxlcl9nbnUiID4mNQotJGFzX2VjaG8gIiRhY19jdl9j X2NvbXBpbGVyX2dudSIgPiY2OyB9Ci1pZiB0ZXN0ICRhY19jb21waWxlcl9nbnUgPSB5ZXM7IHRo ZW4KLSAgR0NDPXllcwotZWxzZQotICBHQ0M9Ci1maQotYWNfdGVzdF9DRkxBR1M9JHtDRkxBR1Mr c2V0fQotYWNfc2F2ZV9DRkxBR1M9JENGTEFHUwoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyICRDQyBhY2NlcHRzIC1nIiA+JjUKLSRhc19l Y2hvX24gImNoZWNraW5nIHdoZXRoZXIgJENDIGFjY2VwdHMgLWcuLi4gIiA+JjY7IH0KLWlmICR7 YWNfY3ZfcHJvZ19jY19nKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkg IiA+JjYKLWVsc2UKLSAgYWNfc2F2ZV9jX3dlcnJvcl9mbGFnPSRhY19jX3dlcnJvcl9mbGFnCi0g ICBhY19jX3dlcnJvcl9mbGFnPXllcwotICAgYWNfY3ZfcHJvZ19jY19nPW5vCi0gICBDRkxBR1M9 Ii1nIgotICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyog ZW5kIGNvbmZkZWZzLmguICAqLwotCi1pbnQKLW1haW4gKCkKLXsKLQotICA7Ci0gIHJldHVybiAw OwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0g IGFjX2N2X3Byb2dfY2NfZz15ZXMKLWVsc2UKLSAgQ0ZMQUdTPSIiCi0gICAgICBjYXQgY29uZmRl ZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICov Ci0KLWludAotbWFpbiAoKQotewotCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLWlmIGFj X2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLQotZWxzZQotICBhY19jX3dlcnJv cl9mbGFnPSRhY19zYXZlX2Nfd2Vycm9yX2ZsYWcKLQkgQ0ZMQUdTPSItZyIKLQkgY2F0IGNvbmZk ZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAq LwotCi1pbnQKLW1haW4gKCkKLXsKLQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBh Y19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0gIGFjX2N2X3Byb2dfY2NfZz15 ZXMKLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0 ZXN0LiRhY19leHQKLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2Jq ZXh0IGNvbmZ0ZXN0LiRhY19leHQKLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVz dC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAgIGFjX2Nfd2Vycm9yX2ZsYWc9JGFjX3Nh dmVfY193ZXJyb3JfZmxhZwotZmkKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogcmVzdWx0OiAkYWNfY3ZfcHJvZ19jY19nIiA+JjUKLSRhc19lY2hvICIkYWNfY3ZfcHJv Z19jY19nIiA+JjY7IH0KLWlmIHRlc3QgIiRhY190ZXN0X0NGTEFHUyIgPSBzZXQ7IHRoZW4KLSAg Q0ZMQUdTPSRhY19zYXZlX0NGTEFHUwotZWxpZiB0ZXN0ICRhY19jdl9wcm9nX2NjX2cgPSB5ZXM7 IHRoZW4KLSAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICBDRkxBR1M9Ii1nIC1PMiIK LSAgZWxzZQotICAgIENGTEFHUz0iLWciCi0gIGZpCi1lbHNlCi0gIGlmIHRlc3QgIiRHQ0MiID0g eWVzOyB0aGVuCi0gICAgQ0ZMQUdTPSItTzIiCi0gIGVsc2UKLSAgICBDRkxBR1M9Ci0gIGZpCi1m aQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Ig JENDIG9wdGlvbiB0byBhY2NlcHQgSVNPIEM4OSIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBm b3IgJENDIG9wdGlvbiB0byBhY2NlcHQgSVNPIEM4OS4uLiAiID4mNjsgfQotaWYgJHthY19jdl9w cm9nX2NjX2M4OSs6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2 Ci1lbHNlCi0gIGFjX2N2X3Byb2dfY2NfYzg5PW5vCi1hY19zYXZlX0NDPSRDQwotY2F0IGNvbmZk ZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAq LwotI2luY2x1ZGUgPHN0ZGFyZy5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci1zdHJ1Y3Qgc3RhdDsK LS8qIE1vc3Qgb2YgdGhlIGZvbGxvd2luZyB0ZXN0cyBhcmUgc3RvbGVuIGZyb20gUkNTIDUuNydz IHNyYy9jb25mLnNoLiAgKi8KLXN0cnVjdCBidWYgeyBpbnQgeDsgfTsKLUZJTEUgKiAoKnJjc29w ZW4pIChzdHJ1Y3QgYnVmICosIHN0cnVjdCBzdGF0ICosIGludCk7Ci1zdGF0aWMgY2hhciAqZSAo cCwgaSkKLSAgICAgY2hhciAqKnA7Ci0gICAgIGludCBpOwotewotICByZXR1cm4gcFtpXTsKLX0K LXN0YXRpYyBjaGFyICpmIChjaGFyICogKCpnKSAoY2hhciAqKiwgaW50KSwgY2hhciAqKnAsIC4u LikKLXsKLSAgY2hhciAqczsKLSAgdmFfbGlzdCB2OwotICB2YV9zdGFydCAodixwKTsKLSAgcyA9 IGcgKHAsIHZhX2FyZyAodixpbnQpKTsKLSAgdmFfZW5kICh2KTsKLSAgcmV0dXJuIHM7Ci19Ci0K LS8qIE9TRiA0LjAgQ29tcGFxIGNjIGlzIHNvbWUgc29ydCBvZiBhbG1vc3QtQU5TSSBieSBkZWZh dWx0LiAgSXQgaGFzCi0gICBmdW5jdGlvbiBwcm90b3R5cGVzIGFuZCBzdHVmZiwgYnV0IG5vdCAn XHhISCcgaGV4IGNoYXJhY3RlciBjb25zdGFudHMuCi0gICBUaGVzZSBkb24ndCBwcm92b2tlIGFu IGVycm9yIHVuZm9ydHVuYXRlbHksIGluc3RlYWQgYXJlIHNpbGVudGx5IHRyZWF0ZWQKLSAgIGFz ICd4Jy4gIFRoZSBmb2xsb3dpbmcgaW5kdWNlcyBhbiBlcnJvciwgdW50aWwgLXN0ZCBpcyBhZGRl ZCB0byBnZXQKLSAgIHByb3BlciBBTlNJIG1vZGUuICBDdXJpb3VzbHkgJ1x4MDAnIT0neCcgYWx3 YXlzIGNvbWVzIG91dCB0cnVlLCBmb3IgYW4KLSAgIGFycmF5IHNpemUgYXQgbGVhc3QuICBJdCdz IG5lY2Vzc2FyeSB0byB3cml0ZSAnXHgwMCc9PTAgdG8gZ2V0IHNvbWV0aGluZwotICAgdGhhdCdz IHRydWUgb25seSB3aXRoIC1zdGQuICAqLwotaW50IG9zZjRfY2NfYXJyYXkgWydceDAwJyA9PSAw ID8gMSA6IC0xXTsKLQotLyogSUJNIEMgNiBmb3IgQUlYIGlzIGFsbW9zdC1BTlNJIGJ5IGRlZmF1 bHQsIGJ1dCBpdCByZXBsYWNlcyBtYWNybyBwYXJhbWV0ZXJzCi0gICBpbnNpZGUgc3RyaW5ncyBh bmQgY2hhcmFjdGVyIGNvbnN0YW50cy4gICovCi0jZGVmaW5lIEZPTyh4KSAneCcKLWludCB4bGM2 X2NjX2FycmF5W0ZPTyhhKSA9PSAneCcgPyAxIDogLTFdOwotCi1pbnQgdGVzdCAoaW50IGksIGRv dWJsZSB4KTsKLXN0cnVjdCBzMSB7aW50ICgqZikgKGludCBhKTt9Owotc3RydWN0IHMyIHtpbnQg KCpmKSAoZG91YmxlIGEpO307Ci1pbnQgcGFpcm5hbWVzIChpbnQsIGNoYXIgKiosIEZJTEUgKigq KShzdHJ1Y3QgYnVmICosIHN0cnVjdCBzdGF0ICosIGludCksIGludCwgaW50KTsKLWludCBhcmdj OwotY2hhciAqKmFyZ3Y7Ci1pbnQKLW1haW4gKCkKLXsKLXJldHVybiBmIChlLCBhcmd2LCAwKSAh PSBhcmd2WzBdICB8fCAgZiAoZSwgYXJndiwgMSkgIT0gYXJndlsxXTsKLSAgOwotICByZXR1cm4g MDsKLX0KLV9BQ0VPRgotZm9yIGFjX2FyZyBpbiAnJyAtcWxhbmdsdmw9ZXh0Yzg5IC1xbGFuZ2x2 bD1hbnNpIC1zdGQgXAotCS1BZSAiLUFhIC1EX0hQVVhfU09VUkNFIiAiLVhjIC1EX19FWFRFTlNJ T05TX18iCi1kbwotICBDQz0iJGFjX3NhdmVfQ0MgJGFjX2FyZyIKLSAgaWYgYWNfZm5fY190cnlf Y29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotICBhY19jdl9wcm9nX2NjX2M4OT0kYWNfYXJnCi1m aQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dAotICB0ZXN0ICJ4 JGFjX2N2X3Byb2dfY2NfYzg5IiAhPSAieG5vIiAmJiBicmVhawotZG9uZQotcm0gLWYgY29uZnRl c3QuJGFjX2V4dAotQ0M9JGFjX3NhdmVfQ0MKLQotZmkKLSMgQUNfQ0FDSEVfVkFMCi1jYXNlICJ4 JGFjX2N2X3Byb2dfY2NfYzg5IiBpbgotICB4KQotICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBub25lIG5lZWRlZCIgPiY1Ci0kYXNfZWNobyAibm9u ZSBuZWVkZWQiID4mNjsgfSA7OwotICB4bm8pCi0gICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHVuc3VwcG9ydGVkIiA+JjUKLSRhc19lY2hvICJ1bnN1 cHBvcnRlZCIgPiY2OyB9IDs7Ci0gICopCi0gICAgQ0M9IiRDQyAkYWNfY3ZfcHJvZ19jY19jODki Ci0gICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRh Y19jdl9wcm9nX2NjX2M4OSIgPiY1Ci0kYXNfZWNobyAiJGFjX2N2X3Byb2dfY2NfYzg5IiA+JjY7 IH0gOzsKLWVzYWMKLWlmIHRlc3QgIngkYWNfY3ZfcHJvZ19jY19jODkiICE9IHhubzsgdGhlbiA6 Ci0KLWZpCi0KLWFjX2V4dD1jCi1hY19jcHA9JyRDUFAgJENQUEZMQUdTJwotYWNfY29tcGlsZT0n JENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwotYWNfbGluaz0n JENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25m dGVzdC4kYWNfZXh0ICRMSUJTID4mNScKLWFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxl cl9nbnUKLQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu ZyB3aGV0aGVyICR7TUFLRS1tYWtlfSBzZXRzIFwkKE1BS0UpIiA+JjUKLSRhc19lY2hvX24gImNo ZWNraW5nIHdoZXRoZXIgJHtNQUtFLW1ha2V9IHNldHMgXCQoTUFLRSkuLi4gIiA+JjY7IH0KLXNl dCB4ICR7TUFLRS1tYWtlfQotYWNfbWFrZT1gJGFzX2VjaG8gIiQyIiB8IHNlZCAncy8rL3AvZzsg cy9bXmEtekEtWjAtOV9dL18vZydgCi1pZiBldmFsIFwke2FjX2N2X3Byb2dfbWFrZV8ke2FjX21h a2V9X3NldCs6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1l bHNlCi0gIGNhdCA+Y29uZnRlc3QubWFrZSA8PFxfQUNFT0YKLVNIRUxMID0gL2Jpbi9zaAotYWxs OgotCUBlY2hvICdAQEAlJSU9JChNQUtFKT1AQEAlJSUnCi1fQUNFT0YKLSMgR05VIG1ha2Ugc29t ZXRpbWVzIHByaW50cyAibWFrZVsxXTogRW50ZXJpbmcgLi4uIiwgd2hpY2ggd291bGQgY29uZnVz ZSB1cy4KLWNhc2UgYCR7TUFLRS1tYWtlfSAtZiBjb25mdGVzdC5tYWtlIDI+L2Rldi9udWxsYCBp bgotICAqQEBAJSUlPT8qPUBAQCUlJSopCi0gICAgZXZhbCBhY19jdl9wcm9nX21ha2VfJHthY19t YWtlfV9zZXQ9eWVzOzsKLSAgKikKLSAgICBldmFsIGFjX2N2X3Byb2dfbWFrZV8ke2FjX21ha2V9 X3NldD1ubzs7Ci1lc2FjCi1ybSAtZiBjb25mdGVzdC5tYWtlCi1maQotaWYgZXZhbCB0ZXN0IFwk YWNfY3ZfcHJvZ19tYWtlXyR7YWNfbWFrZX1fc2V0ID0geWVzOyB0aGVuCi0gIHsgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQotJGFzX2VjaG8g InllcyIgPiY2OyB9Ci0gIFNFVF9NQUtFPQotZWxzZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0K LSAgU0VUX01BS0U9Ik1BS0U9JHtNQUtFLW1ha2V9IgotZmkKLQotIyBGaW5kIGEgZ29vZCBpbnN0 YWxsIHByb2dyYW0uICBXZSBwcmVmZXIgYSBDIHByb2dyYW0gKGZhc3RlciksCi0jIHNvIG9uZSBz Y3JpcHQgaXMgYXMgZ29vZCBhcyBhbm90aGVyLiAgQnV0IGF2b2lkIHRoZSBicm9rZW4gb3IKLSMg aW5jb21wYXRpYmxlIHZlcnNpb25zOgotIyBTeXNWIC9ldGMvaW5zdGFsbCwgL3Vzci9zYmluL2lu c3RhbGwKLSMgU3VuT1MgL3Vzci9ldGMvaW5zdGFsbAotIyBJUklYIC9zYmluL2luc3RhbGwKLSMg QUlYIC9iaW4vaW5zdGFsbAotIyBBbWlnYU9TIC9DL2luc3RhbGwsIHdoaWNoIGluc3RhbGxzIGJv b3RibG9ja3Mgb24gZmxvcHB5IGRpc2NzCi0jIEFJWCA0IC91c3IvYmluL2luc3RhbGxic2QsIHdo aWNoIGRvZXNuJ3Qgd29yayB3aXRob3V0IGEgLWcgZmxhZwotIyBBRlMgL3Vzci9hZnN3cy9iaW4v aW5zdGFsbCwgd2hpY2ggbWlzaGFuZGxlcyBub25leGlzdGVudCBhcmdzCi0jIFNWUjQgL3Vzci91 Y2IvaW5zdGFsbCwgd2hpY2ggdHJpZXMgdG8gdXNlIHRoZSBub25leGlzdGVudCBncm91cCAic3Rh ZmYiCi0jIE9TLzIncyBzeXN0ZW0gaW5zdGFsbCwgd2hpY2ggaGFzIGEgY29tcGxldGVseSBkaWZm ZXJlbnQgc2VtYW50aWMKLSMgLi9pbnN0YWxsLCB3aGljaCBjYW4gYmUgZXJyb25lb3VzbHkgY3Jl YXRlZCBieSBtYWtlIGZyb20gLi9pbnN0YWxsLnNoLgotIyBSZWplY3QgaW5zdGFsbCBwcm9ncmFt cyB0aGF0IGNhbm5vdCBpbnN0YWxsIG11bHRpcGxlIGZpbGVzLgoteyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYSBCU0QtY29tcGF0aWJsZSBpbnN0 YWxsIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciBhIEJTRC1jb21wYXRpYmxlIGluc3Rh bGwuLi4gIiA+JjY7IH0KLWlmIHRlc3QgLXogIiRJTlNUQUxMIjsgdGhlbgotaWYgJHthY19jdl9w YXRoX2luc3RhbGwrOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4m NgotZWxzZQotICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi1mb3IgYXNf ZGlyIGluICRQQVRICi1kbwotICBJRlM9JGFzX3NhdmVfSUZTCi0gIHRlc3QgLXogIiRhc19kaXIi ICYmIGFzX2Rpcj0uCi0gICAgIyBBY2NvdW50IGZvciBwZW9wbGUgd2hvIHB1dCB0cmFpbGluZyBz bGFzaGVzIGluIFBBVEggZWxlbWVudHMuCi1jYXNlICRhc19kaXIvIGluICMoKAotICAuLyB8IC4v LyB8IC9bY0NdLyogfCBcCi0gIC9ldGMvKiB8IC91c3Ivc2Jpbi8qIHwgL3Vzci9ldGMvKiB8IC9z YmluLyogfCAvdXNyL2Fmc3dzL2Jpbi8qIHwgXAotICA/OltcXC9db3MyW1xcL11pbnN0YWxsW1xc L10qIHwgPzpbXFwvXU9TMltcXC9dSU5TVEFMTFtcXC9dKiB8IFwKLSAgL3Vzci91Y2IvKiApIDs7 Ci0gICopCi0gICAgIyBPU0YxIGFuZCBTQ08gT0RUIDMuMCBoYXZlIHRoZWlyIG93biBuYW1lcyBm b3IgaW5zdGFsbC4KLSAgICAjIERvbid0IHVzZSBpbnN0YWxsYnNkIGZyb20gT1NGIHNpbmNlIGl0 IGluc3RhbGxzIHN0dWZmIGFzIHJvb3QKLSAgICAjIGJ5IGRlZmF1bHQuCi0gICAgZm9yIGFjX3By b2cgaW4gZ2luc3RhbGwgc2NvaW5zdCBpbnN0YWxsOyBkbwotICAgICAgZm9yIGFjX2V4ZWNfZXh0 IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0JaWYgYXNfZm5fZXhlY3V0YWJs ZV9wICIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IjsgdGhlbgotCSAgaWYgdGVzdCAkYWNf cHJvZyA9IGluc3RhbGwgJiYKLQkgICAgZ3JlcCBkc3Btc2cgIiRhc19kaXIvJGFjX3Byb2ckYWNf ZXhlY19leHQiID4vZGV2L251bGwgMj4mMTsgdGhlbgotCSAgICAjIEFJWCBpbnN0YWxsLiAgSXQg aGFzIGFuIGluY29tcGF0aWJsZSBjYWxsaW5nIGNvbnZlbnRpb24uCi0JICAgIDoKLQkgIGVsaWYg dGVzdCAkYWNfcHJvZyA9IGluc3RhbGwgJiYKLQkgICAgZ3JlcCBwd3BsdXMgIiRhc19kaXIvJGFj X3Byb2ckYWNfZXhlY19leHQiID4vZGV2L251bGwgMj4mMTsgdGhlbgotCSAgICAjIHByb2dyYW0t c3BlY2lmaWMgaW5zdGFsbCBzY3JpcHQgdXNlZCBieSBIUCBwd3BsdXMtLWRvbid0IHVzZS4KLQkg ICAgOgotCSAgZWxzZQotCSAgICBybSAtcmYgY29uZnRlc3Qub25lIGNvbmZ0ZXN0LnR3byBjb25m dGVzdC5kaXIKLQkgICAgZWNobyBvbmUgPiBjb25mdGVzdC5vbmUKLQkgICAgZWNobyB0d28gPiBj b25mdGVzdC50d28KLQkgICAgbWtkaXIgY29uZnRlc3QuZGlyCi0JICAgIGlmICIkYXNfZGlyLyRh Y19wcm9nJGFjX2V4ZWNfZXh0IiAtYyBjb25mdGVzdC5vbmUgY29uZnRlc3QudHdvICJgcHdkYC9j b25mdGVzdC5kaXIiICYmCi0JICAgICAgdGVzdCAtcyBjb25mdGVzdC5vbmUgJiYgdGVzdCAtcyBj b25mdGVzdC50d28gJiYKLQkgICAgICB0ZXN0IC1zIGNvbmZ0ZXN0LmRpci9jb25mdGVzdC5vbmUg JiYKLQkgICAgICB0ZXN0IC1zIGNvbmZ0ZXN0LmRpci9jb25mdGVzdC50d28KLQkgICAgdGhlbgot CSAgICAgIGFjX2N2X3BhdGhfaW5zdGFsbD0iJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCAt YyIKLQkgICAgICBicmVhayAzCi0JICAgIGZpCi0JICBmaQotCWZpCi0gICAgICBkb25lCi0gICAg ZG9uZQotICAgIDs7Ci1lc2FjCi0KLSAgZG9uZQotSUZTPSRhc19zYXZlX0lGUwotCi1ybSAtcmYg Y29uZnRlc3Qub25lIGNvbmZ0ZXN0LnR3byBjb25mdGVzdC5kaXIKLQotZmkKLSAgaWYgdGVzdCAi JHthY19jdl9wYXRoX2luc3RhbGwrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgICBJTlNUQUxMPSRhY19j dl9wYXRoX2luc3RhbGwKLSAgZWxzZQotICAgICMgQXMgYSBsYXN0IHJlc29ydCwgdXNlIHRoZSBz bG93IHNoZWxsIHNjcmlwdC4gIERvbid0IGNhY2hlIGEKLSAgICAjIHZhbHVlIGZvciBJTlNUQUxM IHdpdGhpbiBhIHNvdXJjZSBkaXJlY3RvcnksIGJlY2F1c2UgdGhhdCB3aWxsCi0gICAgIyBicmVh ayBvdGhlciBwYWNrYWdlcyB1c2luZyB0aGUgY2FjaGUgaWYgdGhhdCBkaXJlY3RvcnkgaXMKLSAg ICAjIHJlbW92ZWQsIG9yIGlmIHRoZSB2YWx1ZSBpcyBhIHJlbGF0aXZlIG5hbWUuCi0gICAgSU5T VEFMTD0kYWNfaW5zdGFsbF9zaAotICBmaQotZmkKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogcmVzdWx0OiAkSU5TVEFMTCIgPiY1Ci0kYXNfZWNobyAiJElOU1RBTEwi ID4mNjsgfQotCi0jIFVzZSB0ZXN0IC16IGJlY2F1c2UgU3VuT1M0IHNoIG1pc2hhbmRsZXMgYnJh Y2VzIGluICR7dmFyLXZhbH0uCi0jIEl0IHRoaW5rcyB0aGUgZmlyc3QgY2xvc2UgYnJhY2UgZW5k cyB0aGUgdmFyaWFibGUgc3Vic3RpdHV0aW9uLgotdGVzdCAteiAiJElOU1RBTExfUFJPR1JBTSIg JiYgSU5TVEFMTF9QUk9HUkFNPScke0lOU1RBTEx9JwotCi10ZXN0IC16ICIkSU5TVEFMTF9TQ1JJ UFQiICYmIElOU1RBTExfU0NSSVBUPScke0lOU1RBTEx9JwotCi10ZXN0IC16ICIkSU5TVEFMTF9E QVRBIiAmJiBJTlNUQUxMX0RBVEE9JyR7SU5TVEFMTH0gLW0gNjQ0JwotCi0jIEV4dHJhY3QgdGhl IGZpcnN0IHdvcmQgb2YgImJpc29uIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGgg YXJncy4KLXNldCBkdW1teSBiaXNvbjsgYWNfd29yZD0kMgoteyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotJGFzX2VjaG9f biAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3BhdGhfQklT T04rOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQot ICBjYXNlICRCSVNPTiBpbgotICBbXFwvXSogfCA/OltcXC9dKikKLSAgYWNfY3ZfcGF0aF9CSVNP Tj0iJEJJU09OIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4K LSAgOzsKLSAgKikKLSAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotZm9y IGFzX2RpciBpbiAkUEFUSAotZG8KLSAgSUZTPSRhc19zYXZlX0lGUwotICB0ZXN0IC16ICIkYXNf ZGlyIiAmJiBhc19kaXI9LgotICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJs ZV9leHRlbnNpb25zOyBkbwotICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dv cmQkYWNfZXhlY19leHQiOyB0aGVuCi0gICAgYWNfY3ZfcGF0aF9CSVNPTj0iJGFzX2Rpci8kYWNf d29yZCRhY19leGVjX2V4dCIKLSAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICBicmVhayAy Ci0gIGZpCi1kb25lCi0gIGRvbmUKLUlGUz0kYXNfc2F2ZV9JRlMKLQotICA7OwotZXNhYwotZmkK LUJJU09OPSRhY19jdl9wYXRoX0JJU09OCi1pZiB0ZXN0IC1uICIkQklTT04iOyB0aGVuCi0gIHsg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQklTT04iID4m NQotJGFzX2VjaG8gIiRCSVNPTiIgPiY2OyB9Ci1lbHNlCi0gIHsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsg fQotZmkKLQotCi0jIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImZsZXgiLCBzbyBpdCBjYW4g YmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1bW15IGZsZXg7IGFjX3dvcmQ9JDIK LXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRh Y193b3JkIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsg fQotaWYgJHthY19jdl9wYXRoX0ZMRVgrOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIo Y2FjaGVkKSAiID4mNgotZWxzZQotICBjYXNlICRGTEVYIGluCi0gIFtcXC9dKiB8ID86W1xcL10q KQotICBhY19jdl9wYXRoX0ZMRVg9IiRGTEVYIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUg dGVzdCB3aXRoIGEgcGF0aC4KLSAgOzsKLSAgKikKLSAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQ QVRIX1NFUEFSQVRPUgotZm9yIGFzX2RpciBpbiAkUEFUSAotZG8KLSAgSUZTPSRhc19zYXZlX0lG UwotICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgIGZvciBhY19leGVjX2V4dCBp biAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICBpZiBhc19mbl9leGVjdXRhYmxl X3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0gICAgYWNfY3ZfcGF0aF9G TEVYPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgotICAgICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQi ID4mNQotICAgIGJyZWFrIDIKLSAgZmkKLWRvbmUKLSAgZG9uZQotSUZTPSRhc19zYXZlX0lGUwot Ci0gIDs7Ci1lc2FjCi1maQotRkxFWD0kYWNfY3ZfcGF0aF9GTEVYCi1pZiB0ZXN0IC1uICIkRkxF WCI7IHRoZW4KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1 bHQ6ICRGTEVYIiA+JjUKLSRhc19lY2hvICIkRkxFWCIgPiY2OyB9Ci1lbHNlCi0gIHsgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNo byAibm8iID4mNjsgfQotZmkKLQotCi0jIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInBlcmwi LCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1bW15IHBlcmw7 IGFjX3dvcmQ9JDIKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hl Y2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29y ZC4uLiAiID4mNjsgfQotaWYgJHthY19jdl9wYXRoX1BFUkwrOn0gZmFsc2U7IHRoZW4gOgotICAk YXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBjYXNlICRQRVJMIGluCi0gIFtcXC9d KiB8ID86W1xcL10qKQotICBhY19jdl9wYXRoX1BFUkw9IiRQRVJMIiAjIExldCB0aGUgdXNlciBv dmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KLSAgOzsKLSAgKikKLSAgYXNfc2F2ZV9JRlM9 JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotZm9yIGFzX2RpciBpbiAkUEFUSAotZG8KLSAgSUZT PSRhc19zYXZlX0lGUwotICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgIGZvciBh Y19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICBpZiBhc19m bl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0gICAg YWNfY3ZfcGF0aF9QRVJMPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgotICAgICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQk YWNfZXhlY19leHQiID4mNQotICAgIGJyZWFrIDIKLSAgZmkKLWRvbmUKLSAgZG9uZQotSUZTPSRh c19zYXZlX0lGUwotCi0gIHRlc3QgLXogIiRhY19jdl9wYXRoX1BFUkwiICYmIGFjX2N2X3BhdGhf UEVSTD0ibm8iCi0gIDs7Ci1lc2FjCi1maQotUEVSTD0kYWNfY3ZfcGF0aF9QRVJMCi1pZiB0ZXN0 IC1uICIkUEVSTCI7IHRoZW4KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiByZXN1bHQ6ICRQRVJMIiA+JjUKLSRhc19lY2hvICIkUEVSTCIgPiY2OyB9Ci1lbHNlCi0g IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1 Ci0kYXNfZWNobyAibm8iID4mNjsgfQotZmkKLQotCi1pZiB0ZXN0IHgiJHtQRVJMfSIgPSB4Im5v IgotdGhlbgotICAgIGFzX2ZuX2Vycm9yICQ/ICJVbmFibGUgdG8gZmluZCBwZXJsLCBwbGVhc2Ug aW5zdGFsbCBwZXJsIiAiJExJTkVOTyIgNQotZmkKLSMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBv ZiAiYXdrIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1t eSBhd2s7IGFjX3dvcmQ9JDIKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAk YWNfd29yZC4uLiAiID4mNjsgfQotaWYgJHthY19jdl9wYXRoX0FXSys6fSBmYWxzZTsgdGhlbiA6 Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGNhc2UgJEFXSyBpbgotICBb XFwvXSogfCA/OltcXC9dKikKLSAgYWNfY3ZfcGF0aF9BV0s9IiRBV0siICMgTGV0IHRoZSB1c2Vy IG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgotICA7OwotICAqKQotICBhc19zYXZlX0lG Uz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi1mb3IgYXNfZGlyIGluICRQQVRICi1kbwotICBJ RlM9JGFzX3NhdmVfSUZTCi0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgZm9y IGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gIGlmIGFz X2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSAg ICBhY19jdl9wYXRoX0FXSz0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKLSAgICAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3Jk JGFjX2V4ZWNfZXh0IiA+JjUKLSAgICBicmVhayAyCi0gIGZpCi1kb25lCi0gIGRvbmUKLUlGUz0k YXNfc2F2ZV9JRlMKLQotICB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9BV0siICYmIGFjX2N2X3BhdGhf QVdLPSJubyIKLSAgOzsKLWVzYWMKLWZpCi1BV0s9JGFjX2N2X3BhdGhfQVdLCi1pZiB0ZXN0IC1u ICIkQVdLIjsgdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IHJlc3VsdDogJEFXSyIgPiY1Ci0kYXNfZWNobyAiJEFXSyIgPiY2OyB9Ci1lbHNlCi0gIHsgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNf ZWNobyAibm8iID4mNjsgfQotZmkKLQotCi1pZiB0ZXN0IHgiJHtBV0t9IiA9IHgibm8iCi10aGVu Ci0gICAgYXNfZm5fZXJyb3IgJD8gIlVuYWJsZSB0byBmaW5kIGF3aywgcGxlYXNlIGluc3RhbGwg YXdrIiAiJExJTkVOTyIgNQotZmkKLQotICAjIGNoZWNraW5nIGZvciBvY2FtbGMKLSAgaWYgdGVz dCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQg b2YgIiR7YWNfdG9vbF9wcmVmaXh9b2NhbWxjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1l IHdpdGggYXJncy4KLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW9jYW1sYzsgYWNfd29yZD0k MgoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Ig JGFjX3dvcmQiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2 OyB9Ci1pZiAke2FjX2N2X3Byb2dfT0NBTUxDKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9f biAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgaWYgdGVzdCAtbiAiJE9DQU1MQyI7IHRoZW4KLSAg YWNfY3ZfcHJvZ19PQ0FNTEM9IiRPQ0FNTEMiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0 ZXN0LgotZWxzZQotYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotZm9yIGFz X2RpciBpbiAkUEFUSAotZG8KLSAgSUZTPSRhc19zYXZlX0lGUwotICB0ZXN0IC16ICIkYXNfZGly IiAmJiBhc19kaXI9LgotICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9l eHRlbnNpb25zOyBkbwotICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQk YWNfZXhlY19leHQiOyB0aGVuCi0gICAgYWNfY3ZfcHJvZ19PQ0FNTEM9IiR7YWNfdG9vbF9wcmVm aXh9b2NhbWxjIgotICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZv dW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgIGJyZWFrIDIKLSAgZmkK LWRvbmUKLSAgZG9uZQotSUZTPSRhc19zYXZlX0lGUwotCi1maQotZmkKLU9DQU1MQz0kYWNfY3Zf cHJvZ19PQ0FNTEMKLWlmIHRlc3QgLW4gIiRPQ0FNTEMiOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkT0NBTUxDIiA+JjUKLSRhc19lY2hv ICIkT0NBTUxDIiA+JjY7IH0KLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci1maQotCi0K LWZpCi1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19PQ0FNTEMiOyB0aGVuCi0gIGFjX2N0X09DQU1M Qz0kT0NBTUxDCi0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAib2NhbWxjIiwgc28gaXQg Y2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSBvY2FtbGM7IGFjX3dv cmQ9JDIKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcg Zm9yICRhY193b3JkIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAi ID4mNjsgfQotaWYgJHthY19jdl9wcm9nX2FjX2N0X09DQU1MQys6fSBmYWxzZTsgdGhlbiA6Ci0g ICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGlmIHRlc3QgLW4gIiRhY19jdF9P Q0FNTEMiOyB0aGVuCi0gIGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxDPSIkYWNfY3RfT0NBTUxDIiAj IExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLWVsc2UKLWFzX3NhdmVfSUZTPSRJRlM7 IElGUz0kUEFUSF9TRVBBUkFUT1IKLWZvciBhc19kaXIgaW4gJFBBVEgKLWRvCi0gIElGUz0kYXNf c2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICBmb3IgYWNfZXhl Y19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYgYXNfZm5fZXhl Y3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotICAgIGFjX2N2 X3Byb2dfYWNfY3RfT0NBTUxDPSJvY2FtbGMiCi0gICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0g ICAgYnJlYWsgMgotICBmaQotZG9uZQotICBkb25lCi1JRlM9JGFzX3NhdmVfSUZTCi0KLWZpCi1m aQotYWNfY3RfT0NBTUxDPSRhY19jdl9wcm9nX2FjX2N0X09DQU1MQwotaWYgdGVzdCAtbiAiJGFj X2N0X09DQU1MQyI7IHRoZW4KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiByZXN1bHQ6ICRhY19jdF9PQ0FNTEMiID4mNQotJGFzX2VjaG8gIiRhY19jdF9PQ0FNTEMi ID4mNjsgfQotZWxzZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLWZpCi0KLSAgaWYgdGVzdCAi eCRhY19jdF9PQ0FNTEMiID0geDsgdGhlbgotICAgIE9DQU1MQz0ibm8iCi0gIGVsc2UKLSAgICBj YXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi15ZXM6KQoteyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29s cyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotJGFzX2VjaG8gIiRhc19tZTog V0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0 IiA+JjI7fQotYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci1lc2FjCi0gICAgT0NBTUxDPSRhY19jdF9P Q0FNTEMKLSAgZmkKLWVsc2UKLSAgT0NBTUxDPSIkYWNfY3ZfcHJvZ19PQ0FNTEMiCi1maQotCi0K LSAgaWYgdGVzdCAiJE9DQU1MQyIgIT0gIm5vIjsgdGhlbgotICAgICBPQ0FNTFZFUlNJT049YCRP Q0FNTEMgLXYgfCBzZWQgLW4gLWUgJ3N8Lip2ZXJzaW9uKiAqXCguKlwpJHxcMXxwJ2AKLSAgICAg eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IE9DYW1sIHZl cnNpb24gaXMgJE9DQU1MVkVSU0lPTiIgPiY1Ci0kYXNfZWNobyAiT0NhbWwgdmVyc2lvbiBpcyAk T0NBTUxWRVJTSU9OIiA+JjY7IH0KLSAgICAgIyBJZiBPQ0FNTExJQiBpcyBzZXQsIHVzZSBpdAot ICAgICBpZiB0ZXN0ICIkT0NBTUxMSUIiID0gIiI7IHRoZW4KLSAgICAgICAgT0NBTUxMSUI9YCRP Q0FNTEMgLXdoZXJlIDI+L2Rldi9udWxsIHx8ICRPQ0FNTEMgLXZ8dGFpbCAtMXxjdXQgLWQgJyAn IC1mIDRgCi0gICAgIGVsc2UKLSAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiByZXN1bHQ6IE9DQU1MTElCIHByZXZpb3VzbHkgc2V0OyBwcmVzZXJ2aW5nIGl0 LiIgPiY1Ci0kYXNfZWNobyAiT0NBTUxMSUIgcHJldmlvdXNseSBzZXQ7IHByZXNlcnZpbmcgaXQu IiA+JjY7IH0KLSAgICAgZmkKLSAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiByZXN1bHQ6IE9DYW1sIGxpYnJhcnkgcGF0aCBpcyAkT0NBTUxMSUIiID4mNQotJGFz X2VjaG8gIk9DYW1sIGxpYnJhcnkgcGF0aCBpcyAkT0NBTUxMSUIiID4mNjsgfQotCi0KLQotCi0g ICAgICMgY2hlY2tpbmcgZm9yIG9jYW1sb3B0Ci0gICAgIGlmIHRlc3QgLW4gIiRhY190b29sX3By ZWZpeCI7IHRoZW4KLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJl Zml4fW9jYW1sb3B0Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNl dCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW9jYW1sb3B0OyBhY193b3JkPSQyCi17ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1 Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmICR7YWNf Y3ZfcHJvZ19PQ0FNTE9QVCs6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQp ICIgPiY2Ci1lbHNlCi0gIGlmIHRlc3QgLW4gIiRPQ0FNTE9QVCI7IHRoZW4KLSAgYWNfY3ZfcHJv Z19PQ0FNTE9QVD0iJE9DQU1MT1BUIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4K LWVsc2UKLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLWZvciBhc19kaXIg aW4gJFBBVEgKLWRvCi0gIElGUz0kYXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2RpciIgJiYg YXNfZGlyPS4KLSAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5z aW9uczsgZG8KLSAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4 ZWNfZXh0IjsgdGhlbgotICAgIGFjX2N2X3Byb2dfT0NBTUxPUFQ9IiR7YWNfdG9vbF9wcmVmaXh9 b2NhbWxvcHQiCi0gICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91 bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgYnJlYWsgMgotICBmaQot ZG9uZQotICBkb25lCi1JRlM9JGFzX3NhdmVfSUZTCi0KLWZpCi1maQotT0NBTUxPUFQ9JGFjX2N2 X3Byb2dfT0NBTUxPUFQKLWlmIHRlc3QgLW4gIiRPQ0FNTE9QVCI7IHRoZW4KLSAgeyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRPQ0FNTE9QVCIgPiY1Ci0k YXNfZWNobyAiJE9DQU1MT1BUIiA+JjY7IH0KLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9 Ci1maQotCi0KLWZpCi1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19PQ0FNTE9QVCI7IHRoZW4KLSAg YWNfY3RfT0NBTUxPUFQ9JE9DQU1MT1BUCi0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAi b2NhbWxvcHQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1 bW15IG9jYW1sb3B0OyBhY193b3JkPSQyCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2lu ZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfcHJvZ19hY19jdF9PQ0FNTE9Q VCs6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0g IGlmIHRlc3QgLW4gIiRhY19jdF9PQ0FNTE9QVCI7IHRoZW4KLSAgYWNfY3ZfcHJvZ19hY19jdF9P Q0FNTE9QVD0iJGFjX2N0X09DQU1MT1BUIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVz dC4KLWVsc2UKLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLWZvciBhc19k aXIgaW4gJFBBVEgKLWRvCi0gIElGUz0kYXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2RpciIg JiYgYXNfZGlyPS4KLSAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0 ZW5zaW9uczsgZG8KLSAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFj X2V4ZWNfZXh0IjsgdGhlbgotICAgIGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxPUFQ9Im9jYW1sb3B0 IgotICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19k aXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgIGJyZWFrIDIKLSAgZmkKLWRvbmUKLSAg ZG9uZQotSUZTPSRhc19zYXZlX0lGUwotCi1maQotZmkKLWFjX2N0X09DQU1MT1BUPSRhY19jdl9w cm9nX2FjX2N0X09DQU1MT1BUCi1pZiB0ZXN0IC1uICIkYWNfY3RfT0NBTUxPUFQiOyB0aGVuCi0g IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Rf T0NBTUxPUFQiID4mNQotJGFzX2VjaG8gIiRhY19jdF9PQ0FNTE9QVCIgPiY2OyB9Ci1lbHNlCi0g IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1 Ci0kYXNfZWNobyAibm8iID4mNjsgfQotZmkKLQotICBpZiB0ZXN0ICJ4JGFjX2N0X09DQU1MT1BU IiA9IHg7IHRoZW4KLSAgICBPQ0FNTE9QVD0ibm8iCi0gIGVsc2UKLSAgICBjYXNlICRjcm9zc19j b21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi15ZXM6KQoteyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4 ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNp bmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotYWNf dG9vbF93YXJuZWQ9eWVzIDs7Ci1lc2FjCi0gICAgT0NBTUxPUFQ9JGFjX2N0X09DQU1MT1BUCi0g IGZpCi1lbHNlCi0gIE9DQU1MT1BUPSIkYWNfY3ZfcHJvZ19PQ0FNTE9QVCIKLWZpCi0KLSAgICAg T0NBTUxCRVNUPWJ5dGUKLSAgICAgaWYgdGVzdCAiJE9DQU1MT1BUIiA9ICJubyI7IHRoZW4KLQl7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IENhbm5vdCBm aW5kIG9jYW1sb3B0OyBieXRlY29kZSBjb21waWxhdGlvbiBvbmx5LiIgPiY1Ci0kYXNfZWNobyAi JGFzX21lOiBXQVJOSU5HOiBDYW5ub3QgZmluZCBvY2FtbG9wdDsgYnl0ZWNvZGUgY29tcGlsYXRp b24gb25seS4iID4mMjt9Ci0gICAgIGVsc2UKLQlUTVBWRVJTSU9OPWAkT0NBTUxPUFQgLXYgfCBz ZWQgLW4gLWUgJ3N8Lip2ZXJzaW9uKiAqXCguKlwpJHxcMXxwJyBgCi0JaWYgdGVzdCAiJFRNUFZF UlNJT04iICE9ICIkT0NBTUxWRVJTSU9OIiA7IHRoZW4KLQkgICAgeyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHZlcnNpb25zIGRpZmZlcnMgZnJvbSBvY2Ft bGM7IG9jYW1sb3B0IGRpc2NhcmRlZC4iID4mNQotJGFzX2VjaG8gInZlcnNpb25zIGRpZmZlcnMg ZnJvbSBvY2FtbGM7IG9jYW1sb3B0IGRpc2NhcmRlZC4iID4mNjsgfQotCSAgICBPQ0FNTE9QVD1u bwotCWVsc2UKLQkgICAgT0NBTUxCRVNUPW9wdAotCWZpCi0gICAgIGZpCi0KLQotCi0gICAgICMg Y2hlY2tpbmcgZm9yIG9jYW1sYy5vcHQKLSAgICAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4 IjsgdGhlbgotICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9 b2NhbWxjLm9wdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQg ZHVtbXkgJHthY190b29sX3ByZWZpeH1vY2FtbGMub3B0OyBhY193b3JkPSQyCi17ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1 Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmICR7YWNf Y3ZfcHJvZ19PQ0FNTENET1RPUFQrOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2Fj aGVkKSAiID4mNgotZWxzZQotICBpZiB0ZXN0IC1uICIkT0NBTUxDRE9UT1BUIjsgdGhlbgotICBh Y19jdl9wcm9nX09DQU1MQ0RPVE9QVD0iJE9DQU1MQ0RPVE9QVCIgIyBMZXQgdGhlIHVzZXIgb3Zl cnJpZGUgdGhlIHRlc3QuCi1lbHNlCi1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJB VE9SCi1mb3IgYXNfZGlyIGluICRQQVRICi1kbwotICBJRlM9JGFzX3NhdmVfSUZTCi0gIHRlc3Qg LXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19l eGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rp ci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSAgICBhY19jdl9wcm9nX09DQU1MQ0RPVE9Q VD0iJHthY190b29sX3ByZWZpeH1vY2FtbGMub3B0IgotICAgICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4m NQotICAgIGJyZWFrIDIKLSAgZmkKLWRvbmUKLSAgZG9uZQotSUZTPSRhc19zYXZlX0lGUwotCi1m aQotZmkKLU9DQU1MQ0RPVE9QVD0kYWNfY3ZfcHJvZ19PQ0FNTENET1RPUFQKLWlmIHRlc3QgLW4g IiRPQ0FNTENET1RPUFQiOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogcmVzdWx0OiAkT0NBTUxDRE9UT1BUIiA+JjUKLSRhc19lY2hvICIkT0NBTUxDRE9U T1BUIiA+JjY7IH0KLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci1maQotCi0KLWZpCi1p ZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19PQ0FNTENET1RPUFQiOyB0aGVuCi0gIGFjX2N0X09DQU1M Q0RPVE9QVD0kT0NBTUxDRE9UT1BUCi0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAib2Nh bWxjLm9wdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVt bXkgb2NhbWxjLm9wdDsgYWNfd29yZD0kMgoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tp bmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3Byb2dfYWNfY3RfT0NBTUxD RE9UT1BUKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVs c2UKLSAgaWYgdGVzdCAtbiAiJGFjX2N0X09DQU1MQ0RPVE9QVCI7IHRoZW4KLSAgYWNfY3ZfcHJv Z19hY19jdF9PQ0FNTENET1RPUFQ9IiRhY19jdF9PQ0FNTENET1RPUFQiICMgTGV0IHRoZSB1c2Vy IG92ZXJyaWRlIHRoZSB0ZXN0LgotZWxzZQotYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NF UEFSQVRPUgotZm9yIGFzX2RpciBpbiAkUEFUSAotZG8KLSAgSUZTPSRhc19zYXZlX0lGUwotICB0 ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAk YWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRh c19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0gICAgYWNfY3ZfcHJvZ19hY19jdF9P Q0FNTENET1RPUFQ9Im9jYW1sYy5vcHQiCi0gICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAg YnJlYWsgMgotICBmaQotZG9uZQotICBkb25lCi1JRlM9JGFzX3NhdmVfSUZTCi0KLWZpCi1maQot YWNfY3RfT0NBTUxDRE9UT1BUPSRhY19jdl9wcm9nX2FjX2N0X09DQU1MQ0RPVE9QVAotaWYgdGVz dCAtbiAiJGFjX2N0X09DQU1MQ0RPVE9QVCI7IHRoZW4KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9PQ0FNTENET1RPUFQiID4mNQotJGFz X2VjaG8gIiRhY19jdF9PQ0FNTENET1RPUFQiID4mNjsgfQotZWxzZQotICB7ICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5v IiA+JjY7IH0KLWZpCi0KLSAgaWYgdGVzdCAieCRhY19jdF9PQ0FNTENET1RPUFQiID0geDsgdGhl bgotICAgIE9DQU1MQ0RPVE9QVD0ibm8iCi0gIGVsc2UKLSAgICBjYXNlICRjcm9zc19jb21waWxp bmc6JGFjX3Rvb2xfd2FybmVkIGluCi15ZXM6KQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0 aCBob3N0IHRyaXBsZXQiID4mNQotJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jv c3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotYWNfdG9vbF93 YXJuZWQ9eWVzIDs7Ci1lc2FjCi0gICAgT0NBTUxDRE9UT1BUPSRhY19jdF9PQ0FNTENET1RPUFQK LSAgZmkKLWVsc2UKLSAgT0NBTUxDRE9UT1BUPSIkYWNfY3ZfcHJvZ19PQ0FNTENET1RPUFQiCi1m aQotCi0gICAgIGlmIHRlc3QgIiRPQ0FNTENET1RPUFQiICE9ICJubyI7IHRoZW4KLQlUTVBWRVJT SU9OPWAkT0NBTUxDRE9UT1BUIC12IHwgc2VkIC1uIC1lICdzfC4qdmVyc2lvbiogKlwoLipcKSR8 XDF8cCcgYAotCWlmIHRlc3QgIiRUTVBWRVJTSU9OIiAhPSAiJE9DQU1MVkVSU0lPTiIgOyB0aGVu Ci0JICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB2 ZXJzaW9ucyBkaWZmZXJzIGZyb20gb2NhbWxjOyBvY2FtbGMub3B0IGRpc2NhcmRlZC4iID4mNQot JGFzX2VjaG8gInZlcnNpb25zIGRpZmZlcnMgZnJvbSBvY2FtbGM7IG9jYW1sYy5vcHQgZGlzY2Fy ZGVkLiIgPiY2OyB9Ci0JZWxzZQotCSAgICBPQ0FNTEM9JE9DQU1MQ0RPVE9QVAotCWZpCi0gICAg IGZpCi0KLSAgICAgIyBjaGVja2luZyBmb3Igb2NhbWxvcHQub3B0Ci0gICAgIGlmIHRlc3QgIiRP Q0FNTE9QVCIgIT0gIm5vIiA7IHRoZW4KLQlpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0 aGVuCi0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1vY2Ft bG9wdC5vcHQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1 bW15ICR7YWNfdG9vbF9wcmVmaXh9b2NhbWxvcHQub3B0OyBhY193b3JkPSQyCi17ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1 Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmICR7YWNf Y3ZfcHJvZ19PQ0FNTE9QVERPVE9QVCs6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihj YWNoZWQpICIgPiY2Ci1lbHNlCi0gIGlmIHRlc3QgLW4gIiRPQ0FNTE9QVERPVE9QVCI7IHRoZW4K LSAgYWNfY3ZfcHJvZ19PQ0FNTE9QVERPVE9QVD0iJE9DQU1MT1BURE9UT1BUIiAjIExldCB0aGUg dXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLWVsc2UKLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFU SF9TRVBBUkFUT1IKLWZvciBhc19kaXIgaW4gJFBBVEgKLWRvCi0gIElGUz0kYXNfc2F2ZV9JRlMK LSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICBmb3IgYWNfZXhlY19leHQgaW4g JycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYgYXNfZm5fZXhlY3V0YWJsZV9w ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotICAgIGFjX2N2X3Byb2dfT0NB TUxPUFRET1RPUFQ9IiR7YWNfdG9vbF9wcmVmaXh9b2NhbWxvcHQub3B0IgotICAgICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNf ZXhlY19leHQiID4mNQotICAgIGJyZWFrIDIKLSAgZmkKLWRvbmUKLSAgZG9uZQotSUZTPSRhc19z YXZlX0lGUwotCi1maQotZmkKLU9DQU1MT1BURE9UT1BUPSRhY19jdl9wcm9nX09DQU1MT1BURE9U T1BUCi1pZiB0ZXN0IC1uICIkT0NBTUxPUFRET1RPUFQiOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkT0NBTUxPUFRET1RPUFQiID4mNQot JGFzX2VjaG8gIiRPQ0FNTE9QVERPVE9QVCIgPiY2OyB9Ci1lbHNlCi0gIHsgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8i ID4mNjsgfQotZmkKLQotCi1maQotaWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfT0NBTUxPUFRET1RP UFQiOyB0aGVuCi0gIGFjX2N0X09DQU1MT1BURE9UT1BUPSRPQ0FNTE9QVERPVE9QVAotICAjIEV4 dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm9jYW1sb3B0Lm9wdCIsIHNvIGl0IGNhbiBiZSBhIHBy b2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgb2NhbWxvcHQub3B0OyBhY193b3JkPSQy Ci17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAk YWNfd29yZCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7 IH0KLWlmICR7YWNfY3ZfcHJvZ19hY19jdF9PQ0FNTE9QVERPVE9QVCs6fSBmYWxzZTsgdGhlbiA6 Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGlmIHRlc3QgLW4gIiRhY19j dF9PQ0FNTE9QVERPVE9QVCI7IHRoZW4KLSAgYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTE9QVERPVE9Q VD0iJGFjX2N0X09DQU1MT1BURE9UT1BUIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVz dC4KLWVsc2UKLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLWZvciBhc19k aXIgaW4gJFBBVEgKLWRvCi0gIElGUz0kYXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2RpciIg JiYgYXNfZGlyPS4KLSAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0 ZW5zaW9uczsgZG8KLSAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFj X2V4ZWNfZXh0IjsgdGhlbgotICAgIGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxPUFRET1RPUFQ9Im9j YW1sb3B0Lm9wdCIKLSAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBm b3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICBicmVhayAyCi0gIGZp Ci1kb25lCi0gIGRvbmUKLUlGUz0kYXNfc2F2ZV9JRlMKLQotZmkKLWZpCi1hY19jdF9PQ0FNTE9Q VERPVE9QVD0kYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTE9QVERPVE9QVAotaWYgdGVzdCAtbiAiJGFj X2N0X09DQU1MT1BURE9UT1BUIjsgdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X09DQU1MT1BURE9UT1BUIiA+JjUKLSRhc19lY2hv ICIkYWNfY3RfT0NBTUxPUFRET1RPUFQiID4mNjsgfQotZWxzZQotICB7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+ JjY7IH0KLWZpCi0KLSAgaWYgdGVzdCAieCRhY19jdF9PQ0FNTE9QVERPVE9QVCIgPSB4OyB0aGVu Ci0gICAgT0NBTUxPUFRET1RPUFQ9Im5vIgotICBlbHNlCi0gICAgY2FzZSAkY3Jvc3NfY29tcGls aW5nOiRhY190b29sX3dhcm5lZCBpbgoteWVzOikKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdp dGggaG9zdCB0cmlwbGV0IiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNy b3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLWFjX3Rvb2xf d2FybmVkPXllcyA7OwotZXNhYwotICAgIE9DQU1MT1BURE9UT1BUPSRhY19jdF9PQ0FNTE9QVERP VE9QVAotICBmaQotZWxzZQotICBPQ0FNTE9QVERPVE9QVD0iJGFjX2N2X3Byb2dfT0NBTUxPUFRE T1RPUFQiCi1maQotCi0JaWYgdGVzdCAiJE9DQU1MT1BURE9UT1BUIiAhPSAibm8iOyB0aGVuCi0J ICAgVE1QVkVSU0lPTj1gJE9DQU1MT1BURE9UT1BUIC12IHwgc2VkIC1uIC1lICdzfC4qdmVyc2lv biogKlwoLipcKSR8XDF8cCcgYAotCSAgIGlmIHRlc3QgIiRUTVBWRVJTSU9OIiAhPSAiJE9DQU1M VkVSU0lPTiIgOyB0aGVuCi0JICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiByZXN1bHQ6IHZlcnNpb24gZGlmZmVycyBmcm9tIG9jYW1sYzsgb2NhbWxvcHQub3B0 IGRpc2NhcmRlZC4iID4mNQotJGFzX2VjaG8gInZlcnNpb24gZGlmZmVycyBmcm9tIG9jYW1sYzsg b2NhbWxvcHQub3B0IGRpc2NhcmRlZC4iID4mNjsgfQotCSAgIGVsc2UKLQkgICAgICBPQ0FNTE9Q VD0kT0NBTUxPUFRET1RPUFQKLQkgICBmaQotICAgICAgICBmaQotICAgICBmaQotCi0KLSAgZmkK LQotCi0KLSAgIyBjaGVja2luZyBmb3Igb2NhbWwgdG9wbGV2ZWwKLSAgaWYgdGVzdCAtbiAiJGFj X3Rvb2xfcHJlZml4IjsgdGhlbgotICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNf dG9vbF9wcmVmaXh9b2NhbWwiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdz Lgotc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9b2NhbWw7IGFjX3dvcmQ9JDIKLXsgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+ JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgJHth Y19jdl9wcm9nX09DQU1MKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkg IiA+JjYKLWVsc2UKLSAgaWYgdGVzdCAtbiAiJE9DQU1MIjsgdGhlbgotICBhY19jdl9wcm9nX09D QU1MPSIkT0NBTUwiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotZWxzZQotYXNf c2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotZm9yIGFzX2RpciBpbiAkUEFUSAot ZG8KLSAgSUZTPSRhc19zYXZlX0lGUwotICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lgot ICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwot ICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0 aGVuCi0gICAgYWNfY3ZfcHJvZ19PQ0FNTD0iJHthY190b29sX3ByZWZpeH1vY2FtbCIKLSAgICAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193 b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICBicmVhayAyCi0gIGZpCi1kb25lCi0gIGRvbmUKLUlG Uz0kYXNfc2F2ZV9JRlMKLQotZmkKLWZpCi1PQ0FNTD0kYWNfY3ZfcHJvZ19PQ0FNTAotaWYgdGVz dCAtbiAiJE9DQU1MIjsgdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IHJlc3VsdDogJE9DQU1MIiA+JjUKLSRhc19lY2hvICIkT0NBTUwiID4mNjsgfQotZWxz ZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8i ID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLWZpCi0KLQotZmkKLWlmIHRlc3QgLXogIiRhY19j dl9wcm9nX09DQU1MIjsgdGhlbgotICBhY19jdF9PQ0FNTD0kT0NBTUwKLSAgIyBFeHRyYWN0IHRo ZSBmaXJzdCB3b3JkIG9mICJvY2FtbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRo IGFyZ3MuCi1zZXQgZHVtbXkgb2NhbWw7IGFjX3dvcmQ9JDIKLXsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSRhc19lY2hv X24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgJHthY19jdl9wcm9nX2Fj X2N0X09DQU1MKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYK LWVsc2UKLSAgaWYgdGVzdCAtbiAiJGFjX2N0X09DQU1MIjsgdGhlbgotICBhY19jdl9wcm9nX2Fj X2N0X09DQU1MPSIkYWNfY3RfT0NBTUwiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0 LgotZWxzZQotYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotZm9yIGFzX2Rp ciBpbiAkUEFUSAotZG8KLSAgSUZTPSRhc19zYXZlX0lGUwotICB0ZXN0IC16ICIkYXNfZGlyIiAm JiBhc19kaXI9LgotICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRl bnNpb25zOyBkbwotICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNf ZXhlY19leHQiOyB0aGVuCi0gICAgYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTD0ib2NhbWwiCi0gICAg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNf d29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgYnJlYWsgMgotICBmaQotZG9uZQotICBkb25lCi1J RlM9JGFzX3NhdmVfSUZTCi0KLWZpCi1maQotYWNfY3RfT0NBTUw9JGFjX2N2X3Byb2dfYWNfY3Rf T0NBTUwKLWlmIHRlc3QgLW4gIiRhY19jdF9PQ0FNTCI7IHRoZW4KLSAgeyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9PQ0FNTCIgPiY1Ci0kYXNf ZWNobyAiJGFjX2N0X09DQU1MIiA+JjY7IH0KLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9 Ci1maQotCi0gIGlmIHRlc3QgIngkYWNfY3RfT0NBTUwiID0geDsgdGhlbgotICAgIE9DQU1MPSJu byIKLSAgZWxzZQotICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4K LXllczopCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6 IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0k YXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQg d2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci1hY190b29sX3dhcm5lZD15ZXMgOzsKLWVzYWMKLSAg ICBPQ0FNTD0kYWNfY3RfT0NBTUwKLSAgZmkKLWVsc2UKLSAgT0NBTUw9IiRhY19jdl9wcm9nX09D QU1MIgotZmkKLQotCi0gICMgY2hlY2tpbmcgZm9yIG9jYW1sZGVwCi0gIGlmIHRlc3QgLW4gIiRh Y190b29sX3ByZWZpeCI7IHRoZW4KLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2Fj X3Rvb2xfcHJlZml4fW9jYW1sZGVwIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGgg YXJncy4KLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW9jYW1sZGVwOyBhY193b3JkPSQyCi17 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNf d29yZCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0K LWlmICR7YWNfY3ZfcHJvZ19PQ0FNTERFUCs6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24g IihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGlmIHRlc3QgLW4gIiRPQ0FNTERFUCI7IHRoZW4KLSAg YWNfY3ZfcHJvZ19PQ0FNTERFUD0iJE9DQU1MREVQIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0 aGUgdGVzdC4KLWVsc2UKLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLWZv ciBhc19kaXIgaW4gJFBBVEgKLWRvCi0gIElGUz0kYXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFz X2RpciIgJiYgYXNfZGlyPS4KLSAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFi bGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193 b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotICAgIGFjX2N2X3Byb2dfT0NBTUxERVA9IiR7YWNfdG9v bF9wcmVmaXh9b2NhbWxkZXAiCi0gICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgYnJlYWsg MgotICBmaQotZG9uZQotICBkb25lCi1JRlM9JGFzX3NhdmVfSUZTCi0KLWZpCi1maQotT0NBTUxE RVA9JGFjX2N2X3Byb2dfT0NBTUxERVAKLWlmIHRlc3QgLW4gIiRPQ0FNTERFUCI7IHRoZW4KLSAg eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRPQ0FNTERF UCIgPiY1Ci0kYXNfZWNobyAiJE9DQU1MREVQIiA+JjY7IH0KLWVsc2UKLSAgeyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJu byIgPiY2OyB9Ci1maQotCi0KLWZpCi1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19PQ0FNTERFUCI7 IHRoZW4KLSAgYWNfY3RfT0NBTUxERVA9JE9DQU1MREVQCi0gICMgRXh0cmFjdCB0aGUgZmlyc3Qg d29yZCBvZiAib2NhbWxkZXAiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdz Lgotc2V0IGR1bW15IG9jYW1sZGVwOyBhY193b3JkPSQyCi17ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0kYXNfZWNob19u ICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfcHJvZ19hY19j dF9PQ0FNTERFUCs6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2 Ci1lbHNlCi0gIGlmIHRlc3QgLW4gIiRhY19jdF9PQ0FNTERFUCI7IHRoZW4KLSAgYWNfY3ZfcHJv Z19hY19jdF9PQ0FNTERFUD0iJGFjX2N0X09DQU1MREVQIiAjIExldCB0aGUgdXNlciBvdmVycmlk ZSB0aGUgdGVzdC4KLWVsc2UKLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IK LWZvciBhc19kaXIgaW4gJFBBVEgKLWRvCi0gIElGUz0kYXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAi JGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1 dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRh Y193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotICAgIGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxERVA9 Im9jYW1sZGVwIgotICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZv dW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgIGJyZWFrIDIKLSAgZmkK LWRvbmUKLSAgZG9uZQotSUZTPSRhc19zYXZlX0lGUwotCi1maQotZmkKLWFjX2N0X09DQU1MREVQ PSRhY19jdl9wcm9nX2FjX2N0X09DQU1MREVQCi1pZiB0ZXN0IC1uICIkYWNfY3RfT0NBTUxERVAi OyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0 OiAkYWNfY3RfT0NBTUxERVAiID4mNQotJGFzX2VjaG8gIiRhY19jdF9PQ0FNTERFUCIgPiY2OyB9 Ci1lbHNlCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0 OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQotZmkKLQotICBpZiB0ZXN0ICJ4JGFjX2N0 X09DQU1MREVQIiA9IHg7IHRoZW4KLSAgICBPQ0FNTERFUD0ibm8iCi0gIGVsc2UKLSAgICBjYXNl ICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi15ZXM6KQoteyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBu b3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotJGFzX2VjaG8gIiRhc19tZTogV0FS TklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+ JjI7fQotYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci1lc2FjCi0gICAgT0NBTUxERVA9JGFjX2N0X09D QU1MREVQCi0gIGZpCi1lbHNlCi0gIE9DQU1MREVQPSIkYWNfY3ZfcHJvZ19PQ0FNTERFUCIKLWZp Ci0KLQotICAjIGNoZWNraW5nIGZvciBvY2FtbG1rdG9wCi0gIGlmIHRlc3QgLW4gIiRhY190b29s X3ByZWZpeCI7IHRoZW4KLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xf cHJlZml4fW9jYW1sbWt0b3AiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdz Lgotc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9b2NhbWxta3RvcDsgYWNfd29yZD0kMgoteyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dv cmQiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1p ZiAke2FjX2N2X3Byb2dfT0NBTUxNS1RPUCs6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24g IihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGlmIHRlc3QgLW4gIiRPQ0FNTE1LVE9QIjsgdGhlbgot ICBhY19jdl9wcm9nX09DQU1MTUtUT1A9IiRPQ0FNTE1LVE9QIiAjIExldCB0aGUgdXNlciBvdmVy cmlkZSB0aGUgdGVzdC4KLWVsc2UKLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFU T1IKLWZvciBhc19kaXIgaW4gJFBBVEgKLWRvCi0gIElGUz0kYXNfc2F2ZV9JRlMKLSAgdGVzdCAt eiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4 ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGly LyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotICAgIGFjX2N2X3Byb2dfT0NBTUxNS1RPUD0i JHthY190b29sX3ByZWZpeH1vY2FtbG1rdG9wIgotICAgICRhc19lY2hvICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQot ICAgIGJyZWFrIDIKLSAgZmkKLWRvbmUKLSAgZG9uZQotSUZTPSRhc19zYXZlX0lGUwotCi1maQot ZmkKLU9DQU1MTUtUT1A9JGFjX2N2X3Byb2dfT0NBTUxNS1RPUAotaWYgdGVzdCAtbiAiJE9DQU1M TUtUT1AiOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiAkT0NBTUxNS1RPUCIgPiY1Ci0kYXNfZWNobyAiJE9DQU1MTUtUT1AiID4mNjsgfQot ZWxzZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog bm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLWZpCi0KLQotZmkKLWlmIHRlc3QgLXogIiRh Y19jdl9wcm9nX09DQU1MTUtUT1AiOyB0aGVuCi0gIGFjX2N0X09DQU1MTUtUT1A9JE9DQU1MTUtU T1AKLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJvY2FtbG1rdG9wIiwgc28gaXQgY2Fu IGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSBvY2FtbG1rdG9wOyBhY193 b3JkPSQyCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5n IGZvciAkYWNfd29yZCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4g IiA+JjY7IH0KLWlmICR7YWNfY3ZfcHJvZ19hY19jdF9PQ0FNTE1LVE9QKzp9IGZhbHNlOyB0aGVu IDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgaWYgdGVzdCAtbiAiJGFj X2N0X09DQU1MTUtUT1AiOyB0aGVuCi0gIGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxNS1RPUD0iJGFj X2N0X09DQU1MTUtUT1AiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotZWxzZQot YXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotZm9yIGFzX2RpciBpbiAkUEFU SAotZG8KLSAgSUZTPSRhc19zYXZlX0lGUwotICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9 LgotICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBk bwotICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQi OyB0aGVuCi0gICAgYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTE1LVE9QPSJvY2FtbG1rdG9wIgotICAg ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFj X3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgIGJyZWFrIDIKLSAgZmkKLWRvbmUKLSAgZG9uZQot SUZTPSRhc19zYXZlX0lGUwotCi1maQotZmkKLWFjX2N0X09DQU1MTUtUT1A9JGFjX2N2X3Byb2df YWNfY3RfT0NBTUxNS1RPUAotaWYgdGVzdCAtbiAiJGFjX2N0X09DQU1MTUtUT1AiOyB0aGVuCi0g IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Rf T0NBTUxNS1RPUCIgPiY1Ci0kYXNfZWNobyAiJGFjX2N0X09DQU1MTUtUT1AiID4mNjsgfQotZWxz ZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8i ID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLWZpCi0KLSAgaWYgdGVzdCAieCRhY19jdF9PQ0FN TE1LVE9QIiA9IHg7IHRoZW4KLSAgICBPQ0FNTE1LVE9QPSJubyIKLSAgZWxzZQotICAgIGNhc2Ug JGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLXllczopCi17ICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5v dCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiBXQVJO SU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4m Mjt9Ci1hY190b29sX3dhcm5lZD15ZXMgOzsKLWVzYWMKLSAgICBPQ0FNTE1LVE9QPSRhY19jdF9P Q0FNTE1LVE9QCi0gIGZpCi1lbHNlCi0gIE9DQU1MTUtUT1A9IiRhY19jdl9wcm9nX09DQU1MTUtU T1AiCi1maQotCi0KLSAgIyBjaGVja2luZyBmb3Igb2NhbWxta2xpYgotICBpZiB0ZXN0IC1uICIk YWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHth Y190b29sX3ByZWZpeH1vY2FtbG1rbGliIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdp dGggYXJncy4KLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW9jYW1sbWtsaWI7IGFjX3dvcmQ9 JDIKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9y ICRhY193b3JkIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4m NjsgfQotaWYgJHthY19jdl9wcm9nX09DQU1MTUtMSUIrOn0gZmFsc2U7IHRoZW4gOgotICAkYXNf ZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBpZiB0ZXN0IC1uICIkT0NBTUxNS0xJQiI7 IHRoZW4KLSAgYWNfY3ZfcHJvZ19PQ0FNTE1LTElCPSIkT0NBTUxNS0xJQiIgIyBMZXQgdGhlIHVz ZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi1lbHNlCi1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhf U0VQQVJBVE9SCi1mb3IgYXNfZGlyIGluICRQQVRICi1kbwotICBJRlM9JGFzX3NhdmVfSUZTCi0g IHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgZm9yIGFjX2V4ZWNfZXh0IGluICcn ICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAi JGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSAgICBhY19jdl9wcm9nX09DQU1M TUtMSUI9IiR7YWNfdG9vbF9wcmVmaXh9b2NhbWxta2xpYiIKLSAgICAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0 IiA+JjUKLSAgICBicmVhayAyCi0gIGZpCi1kb25lCi0gIGRvbmUKLUlGUz0kYXNfc2F2ZV9JRlMK LQotZmkKLWZpCi1PQ0FNTE1LTElCPSRhY19jdl9wcm9nX09DQU1MTUtMSUIKLWlmIHRlc3QgLW4g IiRPQ0FNTE1LTElCIjsgdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IHJlc3VsdDogJE9DQU1MTUtMSUIiID4mNQotJGFzX2VjaG8gIiRPQ0FNTE1LTElCIiA+ JjY7IH0KLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy ZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci1maQotCi0KLWZpCi1pZiB0ZXN0 IC16ICIkYWNfY3ZfcHJvZ19PQ0FNTE1LTElCIjsgdGhlbgotICBhY19jdF9PQ0FNTE1LTElCPSRP Q0FNTE1LTElCCi0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAib2NhbWxta2xpYiIsIHNv IGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgb2NhbWxta2xp YjsgYWNfd29yZD0kMgoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj aGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193 b3JkLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3Byb2dfYWNfY3RfT0NBTUxNS0xJQis6fSBmYWxz ZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGlmIHRlc3Qg LW4gIiRhY19jdF9PQ0FNTE1LTElCIjsgdGhlbgotICBhY19jdl9wcm9nX2FjX2N0X09DQU1MTUtM SUI9IiRhY19jdF9PQ0FNTE1LTElCIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4K LWVsc2UKLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLWZvciBhc19kaXIg aW4gJFBBVEgKLWRvCi0gIElGUz0kYXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2RpciIgJiYg YXNfZGlyPS4KLSAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5z aW9uczsgZG8KLSAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4 ZWNfZXh0IjsgdGhlbgotICAgIGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxNS0xJQj0ib2NhbWxta2xp YiIKLSAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNf ZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICBicmVhayAyCi0gIGZpCi1kb25lCi0g IGRvbmUKLUlGUz0kYXNfc2F2ZV9JRlMKLQotZmkKLWZpCi1hY19jdF9PQ0FNTE1LTElCPSRhY19j dl9wcm9nX2FjX2N0X09DQU1MTUtMSUIKLWlmIHRlc3QgLW4gIiRhY19jdF9PQ0FNTE1LTElCIjsg dGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog JGFjX2N0X09DQU1MTUtMSUIiID4mNQotJGFzX2VjaG8gIiRhY19jdF9PQ0FNTE1LTElCIiA+JjY7 IH0KLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1 bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci1maQotCi0gIGlmIHRlc3QgIngkYWNf Y3RfT0NBTUxNS0xJQiIgPSB4OyB0aGVuCi0gICAgT0NBTUxNS0xJQj0ibm8iCi0gIGVsc2UKLSAg ICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi15ZXM6KQoteyAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0 b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotJGFzX2VjaG8gIiRhc19t ZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlw bGV0IiA+JjI7fQotYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci1lc2FjCi0gICAgT0NBTUxNS0xJQj0k YWNfY3RfT0NBTUxNS0xJQgotICBmaQotZWxzZQotICBPQ0FNTE1LTElCPSIkYWNfY3ZfcHJvZ19P Q0FNTE1LTElCIgotZmkKLQotCi0gICMgY2hlY2tpbmcgZm9yIG9jYW1sZG9jCi0gIGlmIHRlc3Qg LW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9m ICIke2FjX3Rvb2xfcHJlZml4fW9jYW1sZG9jIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1l IHdpdGggYXJncy4KLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW9jYW1sZG9jOyBhY193b3Jk PSQyCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZv ciAkYWNfd29yZCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+ JjY7IH0KLWlmICR7YWNfY3ZfcHJvZ19PQ0FNTERPQys6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19l Y2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGlmIHRlc3QgLW4gIiRPQ0FNTERPQyI7IHRo ZW4KLSAgYWNfY3ZfcHJvZ19PQ0FNTERPQz0iJE9DQU1MRE9DIiAjIExldCB0aGUgdXNlciBvdmVy cmlkZSB0aGUgdGVzdC4KLWVsc2UKLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFU T1IKLWZvciBhc19kaXIgaW4gJFBBVEgKLWRvCi0gIElGUz0kYXNfc2F2ZV9JRlMKLSAgdGVzdCAt eiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4 ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGly LyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotICAgIGFjX2N2X3Byb2dfT0NBTUxET0M9IiR7 YWNfdG9vbF9wcmVmaXh9b2NhbWxkb2MiCi0gICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAg YnJlYWsgMgotICBmaQotZG9uZQotICBkb25lCi1JRlM9JGFzX3NhdmVfSUZTCi0KLWZpCi1maQot T0NBTUxET0M9JGFjX2N2X3Byb2dfT0NBTUxET0MKLWlmIHRlc3QgLW4gIiRPQ0FNTERPQyI7IHRo ZW4KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRP Q0FNTERPQyIgPiY1Ci0kYXNfZWNobyAiJE9DQU1MRE9DIiA+JjY7IH0KLWVsc2UKLSAgeyAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19l Y2hvICJubyIgPiY2OyB9Ci1maQotCi0KLWZpCi1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19PQ0FN TERPQyI7IHRoZW4KLSAgYWNfY3RfT0NBTUxET0M9JE9DQU1MRE9DCi0gICMgRXh0cmFjdCB0aGUg Zmlyc3Qgd29yZCBvZiAib2NhbWxkb2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0 aCBhcmdzLgotc2V0IGR1bW15IG9jYW1sZG9jOyBhY193b3JkPSQyCi17ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0kYXNf ZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfcHJv Z19hY19jdF9PQ0FNTERPQys6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQp ICIgPiY2Ci1lbHNlCi0gIGlmIHRlc3QgLW4gIiRhY19jdF9PQ0FNTERPQyI7IHRoZW4KLSAgYWNf Y3ZfcHJvZ19hY19jdF9PQ0FNTERPQz0iJGFjX2N0X09DQU1MRE9DIiAjIExldCB0aGUgdXNlciBv dmVycmlkZSB0aGUgdGVzdC4KLWVsc2UKLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBB UkFUT1IKLWZvciBhc19kaXIgaW4gJFBBVEgKLWRvCi0gIElGUz0kYXNfc2F2ZV9JRlMKLSAgdGVz dCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFj X2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNf ZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotICAgIGFjX2N2X3Byb2dfYWNfY3RfT0NB TUxET0M9Im9jYW1sZG9jIgotICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgIGJyZWFrIDIK LSAgZmkKLWRvbmUKLSAgZG9uZQotSUZTPSRhc19zYXZlX0lGUwotCi1maQotZmkKLWFjX2N0X09D QU1MRE9DPSRhY19jdl9wcm9nX2FjX2N0X09DQU1MRE9DCi1pZiB0ZXN0IC1uICIkYWNfY3RfT0NB TUxET0MiOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiAkYWNfY3RfT0NBTUxET0MiID4mNQotJGFzX2VjaG8gIiRhY19jdF9PQ0FNTERPQyIg PiY2OyB9Ci1lbHNlCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQotZmkKLQotICBpZiB0ZXN0ICJ4 JGFjX2N0X09DQU1MRE9DIiA9IHg7IHRoZW4KLSAgICBPQ0FNTERPQz0ibm8iCi0gIGVsc2UKLSAg ICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi15ZXM6KQoteyAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0 b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotJGFzX2VjaG8gIiRhc19t ZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlw bGV0IiA+JjI7fQotYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci1lc2FjCi0gICAgT0NBTUxET0M9JGFj X2N0X09DQU1MRE9DCi0gIGZpCi1lbHNlCi0gIE9DQU1MRE9DPSIkYWNfY3ZfcHJvZ19PQ0FNTERP QyIKLWZpCi0KLQotICAjIGNoZWNraW5nIGZvciBvY2FtbGJ1aWxkCi0gIGlmIHRlc3QgLW4gIiRh Y190b29sX3ByZWZpeCI7IHRoZW4KLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2Fj X3Rvb2xfcHJlZml4fW9jYW1sYnVpbGQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0 aCBhcmdzLgotc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9b2NhbWxidWlsZDsgYWNfd29yZD0k MgoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Ig JGFjX3dvcmQiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2 OyB9Ci1pZiAke2FjX2N2X3Byb2dfT0NBTUxCVUlMRCs6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19l Y2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGlmIHRlc3QgLW4gIiRPQ0FNTEJVSUxEIjsg dGhlbgotICBhY19jdl9wcm9nX09DQU1MQlVJTEQ9IiRPQ0FNTEJVSUxEIiAjIExldCB0aGUgdXNl ciBvdmVycmlkZSB0aGUgdGVzdC4KLWVsc2UKLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9T RVBBUkFUT1IKLWZvciBhc19kaXIgaW4gJFBBVEgKLWRvCi0gIElGUz0kYXNfc2F2ZV9JRlMKLSAg dGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICBmb3IgYWNfZXhlY19leHQgaW4gJycg JGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIk YXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotICAgIGFjX2N2X3Byb2dfT0NBTUxC VUlMRD0iJHthY190b29sX3ByZWZpeH1vY2FtbGJ1aWxkIgotICAgICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQi ID4mNQotICAgIGJyZWFrIDIKLSAgZmkKLWRvbmUKLSAgZG9uZQotSUZTPSRhc19zYXZlX0lGUwot Ci1maQotZmkKLU9DQU1MQlVJTEQ9JGFjX2N2X3Byb2dfT0NBTUxCVUlMRAotaWYgdGVzdCAtbiAi JE9DQU1MQlVJTEQiOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogcmVzdWx0OiAkT0NBTUxCVUlMRCIgPiY1Ci0kYXNfZWNobyAiJE9DQU1MQlVJTEQiID4m NjsgfQotZWxzZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl c3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLWZpCi0KLQotZmkKLWlmIHRlc3Qg LXogIiRhY19jdl9wcm9nX09DQU1MQlVJTEQiOyB0aGVuCi0gIGFjX2N0X09DQU1MQlVJTEQ9JE9D QU1MQlVJTEQKLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJvY2FtbGJ1aWxkIiwgc28g aXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSBvY2FtbGJ1aWxk OyBhY193b3JkPSQyCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNo ZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dv cmQuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfcHJvZ19hY19jdF9PQ0FNTEJVSUxEKzp9IGZhbHNl OyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgaWYgdGVzdCAt biAiJGFjX2N0X09DQU1MQlVJTEQiOyB0aGVuCi0gIGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxCVUlM RD0iJGFjX2N0X09DQU1MQlVJTEQiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0Lgot ZWxzZQotYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotZm9yIGFzX2RpciBp biAkUEFUSAotZG8KLSAgSUZTPSRhc19zYXZlX0lGUwotICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBh c19kaXI9LgotICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNp b25zOyBkbwotICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhl Y19leHQiOyB0aGVuCi0gICAgYWNfY3ZfcHJvZ19hY19jdF9PQ0FNTEJVSUxEPSJvY2FtbGJ1aWxk IgotICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19k aXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgIGJyZWFrIDIKLSAgZmkKLWRvbmUKLSAg ZG9uZQotSUZTPSRhc19zYXZlX0lGUwotCi1maQotZmkKLWFjX2N0X09DQU1MQlVJTEQ9JGFjX2N2 X3Byb2dfYWNfY3RfT0NBTUxCVUlMRAotaWYgdGVzdCAtbiAiJGFjX2N0X09DQU1MQlVJTEQiOyB0 aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAk YWNfY3RfT0NBTUxCVUlMRCIgPiY1Ci0kYXNfZWNobyAiJGFjX2N0X09DQU1MQlVJTEQiID4mNjsg fQotZWxzZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs dDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLWZpCi0KLSAgaWYgdGVzdCAieCRhY19j dF9PQ0FNTEJVSUxEIiA9IHg7IHRoZW4KLSAgICBPQ0FNTEJVSUxEPSJubyIKLSAgZWxzZQotICAg IGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLXllczopCi17ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRv b2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0kYXNfZWNobyAiJGFzX21l OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBs ZXQiID4mMjt9Ci1hY190b29sX3dhcm5lZD15ZXMgOzsKLWVzYWMKLSAgICBPQ0FNTEJVSUxEPSRh Y19jdF9PQ0FNTEJVSUxECi0gIGZpCi1lbHNlCi0gIE9DQU1MQlVJTEQ9IiRhY19jdl9wcm9nX09D QU1MQlVJTEQiCi1maQotCi0KLQotICAjIGNoZWNraW5nIGZvciBvY2FtbGZpbmQKLSAgaWYgdGVz dCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQg b2YgIiR7YWNfdG9vbF9wcmVmaXh9b2NhbWxmaW5kIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBu YW1lIHdpdGggYXJncy4KLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW9jYW1sZmluZDsgYWNf d29yZD0kMgoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu ZyBmb3IgJGFjX3dvcmQiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4u ICIgPiY2OyB9Ci1pZiAke2FjX2N2X3Byb2dfT0NBTUxGSU5EKzp9IGZhbHNlOyB0aGVuIDoKLSAg JGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgaWYgdGVzdCAtbiAiJE9DQU1MRklO RCI7IHRoZW4KLSAgYWNfY3ZfcHJvZ19PQ0FNTEZJTkQ9IiRPQ0FNTEZJTkQiICMgTGV0IHRoZSB1 c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotZWxzZQotYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRI X1NFUEFSQVRPUgotZm9yIGFzX2RpciBpbiAkUEFUSAotZG8KLSAgSUZTPSRhc19zYXZlX0lGUwot ICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgIGZvciBhY19leGVjX2V4dCBpbiAn JyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICBpZiBhc19mbl9leGVjdXRhYmxlX3Ag IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0gICAgYWNfY3ZfcHJvZ19PQ0FN TEZJTkQ9IiR7YWNfdG9vbF9wcmVmaXh9b2NhbWxmaW5kIgotICAgICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQi ID4mNQotICAgIGJyZWFrIDIKLSAgZmkKLWRvbmUKLSAgZG9uZQotSUZTPSRhc19zYXZlX0lGUwot Ci1maQotZmkKLU9DQU1MRklORD0kYWNfY3ZfcHJvZ19PQ0FNTEZJTkQKLWlmIHRlc3QgLW4gIiRP Q0FNTEZJTkQiOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogcmVzdWx0OiAkT0NBTUxGSU5EIiA+JjUKLSRhc19lY2hvICIkT0NBTUxGSU5EIiA+JjY7IH0K LWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6 IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci1maQotCi0KLWZpCi1pZiB0ZXN0IC16ICIk YWNfY3ZfcHJvZ19PQ0FNTEZJTkQiOyB0aGVuCi0gIGFjX2N0X09DQU1MRklORD0kT0NBTUxGSU5E Ci0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAib2NhbWxmaW5kIiwgc28gaXQgY2FuIGJl IGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSBvY2FtbGZpbmQ7IGFjX3dvcmQ9 JDIKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9y ICRhY193b3JkIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4m NjsgfQotaWYgJHthY19jdl9wcm9nX2FjX2N0X09DQU1MRklORCs6fSBmYWxzZTsgdGhlbiA6Ci0g ICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGlmIHRlc3QgLW4gIiRhY19jdF9P Q0FNTEZJTkQiOyB0aGVuCi0gIGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxGSU5EPSIkYWNfY3RfT0NB TUxGSU5EIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLWVsc2UKLWFzX3NhdmVf SUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLWZvciBhc19kaXIgaW4gJFBBVEgKLWRvCi0g IElGUz0kYXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICBm b3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYg YXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgot ICAgIGFjX2N2X3Byb2dfYWNfY3RfT0NBTUxGSU5EPSJvY2FtbGZpbmQiCi0gICAgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19l eGVjX2V4dCIgPiY1Ci0gICAgYnJlYWsgMgotICBmaQotZG9uZQotICBkb25lCi1JRlM9JGFzX3Nh dmVfSUZTCi0KLWZpCi1maQotYWNfY3RfT0NBTUxGSU5EPSRhY19jdl9wcm9nX2FjX2N0X09DQU1M RklORAotaWYgdGVzdCAtbiAiJGFjX2N0X09DQU1MRklORCI7IHRoZW4KLSAgeyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9PQ0FNTEZJTkQiID4m NQotJGFzX2VjaG8gIiRhY19jdF9PQ0FNTEZJTkQiID4mNjsgfQotZWxzZQotICB7ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8g Im5vIiA+JjY7IH0KLWZpCi0KLSAgaWYgdGVzdCAieCRhY19jdF9PQ0FNTEZJTkQiID0geDsgdGhl bgotICAgIE9DQU1MRklORD0ibm8iCi0gIGVsc2UKLSAgICBjYXNlICRjcm9zc19jb21waWxpbmc6 JGFjX3Rvb2xfd2FybmVkIGluCi15ZXM6KQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBo b3N0IHRyaXBsZXQiID4mNQotJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3Mg dG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotYWNfdG9vbF93YXJu ZWQ9eWVzIDs7Ci1lc2FjCi0gICAgT0NBTUxGSU5EPSRhY19jdF9PQ0FNTEZJTkQKLSAgZmkKLWVs c2UKLSAgT0NBTUxGSU5EPSIkYWNfY3ZfcHJvZ19PQ0FNTEZJTkQiCi1maQotCi0KLQotCi1mb3Ig YWNfcHJvZyBpbiBnYXdrIG1hd2sgbmF3ayBhd2sKLWRvCi0gICMgRXh0cmFjdCB0aGUgZmlyc3Qg d29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdz Lgotc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCi17ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0kYXNfZWNob19u ICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfcHJvZ19BV0sr On0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBp ZiB0ZXN0IC1uICIkQVdLIjsgdGhlbgotICBhY19jdl9wcm9nX0FXSz0iJEFXSyIgIyBMZXQgdGhl IHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi1lbHNlCi1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBB VEhfU0VQQVJBVE9SCi1mb3IgYXNfZGlyIGluICRQQVRICi1kbwotICBJRlM9JGFzX3NhdmVfSUZT Ci0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgZm9yIGFjX2V4ZWNfZXh0IGlu ICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gIGlmIGFzX2ZuX2V4ZWN1dGFibGVf cCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSAgICBhY19jdl9wcm9nX0FX Sz0iJGFjX3Byb2ciCi0gICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog Zm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgYnJlYWsgMgotICBm aQotZG9uZQotICBkb25lCi1JRlM9JGFzX3NhdmVfSUZTCi0KLWZpCi1maQotQVdLPSRhY19jdl9w cm9nX0FXSwotaWYgdGVzdCAtbiAiJEFXSyI7IHRoZW4KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRBV0siID4mNQotJGFzX2VjaG8gIiRBV0siID4m NjsgfQotZWxzZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl c3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLWZpCi0KLQotICB0ZXN0IC1uICIk QVdLIiAmJiBicmVhawotZG9uZQotCi1pZiB0ZXN0ICJ4JG9jYW1sdG9vbHMiID0gInh5IjsgdGhl biA6Ci0KLSAgICBpZiB0ZXN0ICJ4JE9DQU1MT1BUIiA9ICJ4bm8iIHx8IHRlc3QgIngkT0NBTUxG SU5EIiA9ICJ4bm8iOyB0aGVuIDoKLQotICAgICAgICBpZiB0ZXN0ICJ4JGVuYWJsZV9vY2FtbHRv b2xzIiA9ICJ4eWVzIjsgdGhlbiA6Ci0KLSAgICAgICAgICAgIGFzX2ZuX2Vycm9yICQ/ICJPY2Ft bCB0b29scyBlbmFibGVkLCBidXQgbWlzc2luZyBvY2FtbG9wdCBvciBvY2FtbGZpbmQiICIkTElO RU5PIiA1Ci1maQotICAgICAgICBvY2FtbHRvb2xzPSJuIgotCi1lbHNlCi0KLQotCi0KLSAgIyBV c2VkIHRvIGluZGljYXRlIHRydWUgb3IgZmFsc2UgY29uZGl0aW9uCi0gIGF4X2NvbXBhcmVfdmVy c2lvbj1mYWxzZQotCi0gICMgQ29udmVydCB0aGUgdHdvIHZlcnNpb24gc3RyaW5ncyB0byBiZSBj b21wYXJlZCBpbnRvIGEgZm9ybWF0IHRoYXQKLSAgIyBhbGxvd3MgYSBzaW1wbGUgc3RyaW5nIGNv bXBhcmlzb24uICBUaGUgZW5kIHJlc3VsdCBpcyB0aGF0IGEgdmVyc2lvbgotICAjIHN0cmluZyBv ZiB0aGUgZm9ybSAxLjEyLjUtcjYxNyB3aWxsIGJlIGNvbnZlcnRlZCB0byB0aGUgZm9ybQotICAj IDAwMDEwMDEyMDAwNTA2MTcuICBJbiBvdGhlciB3b3JkcywgZWFjaCBudW1iZXIgaXMgemVybyBw YWRkZWQgdG8gZm91cgotICAjIGRpZ2l0cywgYW5kIG5vbiBkaWdpdHMgYXJlIHJlbW92ZWQuCi0K LSAgYXhfY29tcGFyZV92ZXJzaW9uX0E9YGVjaG8gIiRPQ0FNTFZFUlNJT04iIHwgc2VkIC1lICdz L1woWzAtOV0qXCkvWlwxWi9nJyBcCi0gICAgICAgICAgICAgICAgICAgICAtZSAncy9aXChbMC05 XVwpWi9aMFwxWi9nJyBcCi0gICAgICAgICAgICAgICAgICAgICAtZSAncy9aXChbMC05XVswLTld XClaL1owXDFaL2cnIFwKLSAgICAgICAgICAgICAgICAgICAgIC1lICdzL1pcKFswLTldWzAtOV1b MC05XVwpWi9aMFwxWi9nJyBcCi0gICAgICAgICAgICAgICAgICAgICAtZSAncy9bXjAtOV0vL2cn YAotCi0KLSAgYXhfY29tcGFyZV92ZXJzaW9uX0I9YGVjaG8gIjQuMDIuMCIgfCBzZWQgLWUgJ3Mv XChbMC05XSpcKS9aXDFaL2cnIFwKLSAgICAgICAgICAgICAgICAgICAgIC1lICdzL1pcKFswLTld XClaL1owXDFaL2cnIFwKLSAgICAgICAgICAgICAgICAgICAgIC1lICdzL1pcKFswLTldWzAtOV1c KVovWjBcMVovZycgXAotICAgICAgICAgICAgICAgICAgICAgLWUgJ3MvWlwoWzAtOV1bMC05XVsw LTldXClaL1owXDFaL2cnIFwKLSAgICAgICAgICAgICAgICAgICAgIC1lICdzL1teMC05XS8vZydg Ci0KLQotICAgIGF4X2NvbXBhcmVfdmVyc2lvbj1gZWNobyAieCRheF9jb21wYXJlX3ZlcnNpb25f QQoteCRheF9jb21wYXJlX3ZlcnNpb25fQiIgfCBzZWQgJ3MvXiAqLy8nIHwgc29ydCAtciB8IHNl ZCAicy94JHtheF9jb21wYXJlX3ZlcnNpb25fQX0vZmFsc2UvO3MveCR7YXhfY29tcGFyZV92ZXJz aW9uX0J9L3RydWUvOzFxImAKLQotCi0KLSAgICBpZiB0ZXN0ICIkYXhfY29tcGFyZV92ZXJzaW9u IiA9ICJ0cnVlIiA7IHRoZW4KLQotICAgICAgICAgICAgaWYgdGVzdCAieCRlbmFibGVfb2NhbWx0 b29scyIgPSAieHllcyI7IHRoZW4gOgotCi0gICAgICAgICAgICAgICAgYXNfZm5fZXJyb3IgJD8g IllvdXIgdmVyc2lvbiBvZiBPQ2FtbDogJE9DQU1MVkVSU0lPTiBpcyBub3Qgc3VwcG9ydGVkIiAi JExJTkVOTyIgNQotZmkKLSAgICAgICAgICAgIG9jYW1sdG9vbHM9Im4iCi0KLSAgICAgIGZpCi0K LQotZmkKLQotZmkKLQotCi0KLQotCi0KLQotCi0KLQotaWYgdGVzdCAieCRYRU5TVE9SRSIgPSAi eCI7IHRoZW4gOgotCi0KLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgteGVuc3RvcmVkIHdhcyBnaXZl bi4KLWlmIHRlc3QgIiR7d2l0aF94ZW5zdG9yZWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICB3aXRo dmFsPSR3aXRoX3hlbnN0b3JlZDsKLQkJaWYgdGVzdCAieCR3aXRodmFsIiA9ICJ4eGVuc3RvcmVk IjsgdGhlbiA6Ci0KLQkJCXhlbnN0b3JlPSR3aXRodmFsCi0JCQl4ZW5zdG9yZWQ9JHNiaW5kaXIv eGVuc3RvcmVkCi0KLWZpCi0JCWlmIHRlc3QgIngkd2l0aHZhbCIgPSAieG94ZW5zdG9yZWQiOyB0 aGVuIDoKLQotCQkJeGVuc3RvcmU9JHdpdGh2YWwKLQkJCXhlbnN0b3JlZD0kc2JpbmRpci9veGVu c3RvcmVkCi0KLQlpZiB0ZXN0ICIkb2NhbWx0b29scyIgPSAibiI7IHRoZW4gOgotCi0JCWFzX2Zu X2Vycm9yICQ/ICJNaXNzaW5nIG9jYW1sIGRlcGVuZGVuY2llcyBmb3Igb3hlbnN0b3JlZCwgdHJ5 IGluc3RhbGxpbmcgb2NhbWwgb2NhbWwtY29tcGlsZXItbGlicyBvY2FtbC1ydW50aW1lIG9jYW1s LWZpbmRsaWIiICIkTElORU5PIiA1Ci0KLWZpCi0KLQotZmkKLQkJaWYgdGVzdCAieCR3aXRodmFs IiAhPSAieG94ZW5zdG9yZWQiICYmIHRlc3QgIngkd2l0aHZhbCIgIT0gInh4ZW5zdG9yZWQiOyB0 aGVuIDoKLQotCQkJYXNfZm5fZXJyb3IgJD8gIlVuc3VwcG9ydGVkIHhlbnN0b3JlZCBzcGVjaWZp ZWQsIHN1cHBvcnRlZCB0eXBlczogb3hlbnN0b3JlZCB4ZW5zdG9yZWQiICIkTElORU5PIiA1Ci0K LWZpCi0KLWVsc2UKLQotCi0JeGVuc3RvcmU9Im94ZW5zdG9yZWQiCi0JeGVuc3RvcmVkPSRzYmlu ZGlyL294ZW5zdG9yZWQKLQlpZiB0ZXN0ICIkb2NhbWx0b29scyIgPSAibiI7IHRoZW4gOgotCi0J CXhlbnN0b3JlPSJ4ZW5zdG9yZWQiCi0JCXhlbnN0b3JlZD0kc2JpbmRpci94ZW5zdG9yZWQKLQot ZmkKLQotCi1maQotCi0KLWZpCi0KLQotCVhFTlNUT1JFPSR4ZW5zdG9yZQotCi0JaWYgdGVzdCAi eCRYRU5TVE9SRUQiID0gIngiOyB0aGVuIDoKLQotCQlYRU5TVE9SRUQ9JHhlbnN0b3JlZAotCi1m aQotCi0KLQotaWYgdGVzdCAieCR4c21wb2xpY3kiID0gInh5IjsgdGhlbiA6Ci0KLSAgICAgICMg Y2hlY2sgZm9yIGEgY2hlY2twb2xpY3kgYmluYXJ5IHdpdGggc3VwcG9ydCBmb3IgLXQgeGVuCi0g IGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSAgIyBFeHRyYWN0IHRoZSBmaXJz dCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWNoZWNrcG9saWN5Iiwgc28gaXQgY2FuIGJlIGEg cHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWNoZWNr cG9saWN5OyBhY193b3JkPSQyCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3Ig JGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfcHJvZ19DSEVDS1BPTElDWSs6fSBmYWxz ZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGlmIHRlc3Qg LW4gIiRDSEVDS1BPTElDWSI7IHRoZW4KLSAgYWNfY3ZfcHJvZ19DSEVDS1BPTElDWT0iJENIRUNL UE9MSUNZIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLWVsc2UKLWFzX3NhdmVf SUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLWZvciBhc19kaXIgaW4gJFBBVEgKLWRvCi0g IElGUz0kYXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICBm b3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYg YXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgot ICAgIGFjX2N2X3Byb2dfQ0hFQ0tQT0xJQ1k9IiR7YWNfdG9vbF9wcmVmaXh9Y2hlY2twb2xpY3ki Ci0gICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rp ci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgYnJlYWsgMgotICBmaQotZG9uZQotICBk b25lCi1JRlM9JGFzX3NhdmVfSUZTCi0KLWZpCi1maQotQ0hFQ0tQT0xJQ1k9JGFjX2N2X3Byb2df Q0hFQ0tQT0xJQ1kKLWlmIHRlc3QgLW4gIiRDSEVDS1BPTElDWSI7IHRoZW4KLSAgeyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRDSEVDS1BPTElDWSIgPiY1 Ci0kYXNfZWNobyAiJENIRUNLUE9MSUNZIiA+JjY7IH0KLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIg PiY2OyB9Ci1maQotCi0KLWZpCi1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19DSEVDS1BPTElDWSI7 IHRoZW4KLSAgYWNfY3RfQ0hFQ0tQT0xJQ1k9JENIRUNLUE9MSUNZCi0gICMgRXh0cmFjdCB0aGUg Zmlyc3Qgd29yZCBvZiAiY2hlY2twb2xpY3kiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUg d2l0aCBhcmdzLgotc2V0IGR1bW15IGNoZWNrcG9saWN5OyBhY193b3JkPSQyCi17ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1 Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmICR7YWNf Y3ZfcHJvZ19hY19jdF9DSEVDS1BPTElDWSs6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24g IihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGlmIHRlc3QgLW4gIiRhY19jdF9DSEVDS1BPTElDWSI7 IHRoZW4KLSAgYWNfY3ZfcHJvZ19hY19jdF9DSEVDS1BPTElDWT0iJGFjX2N0X0NIRUNLUE9MSUNZ IiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLWVsc2UKLWFzX3NhdmVfSUZTPSRJ RlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLWZvciBhc19kaXIgaW4gJFBBVEgKLWRvCi0gIElGUz0k YXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICBmb3IgYWNf ZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYgYXNfZm5f ZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotICAgIGFj X2N2X3Byb2dfYWNfY3RfQ0hFQ0tQT0xJQ1k9ImNoZWNrcG9saWN5IgotICAgICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhl Y19leHQiID4mNQotICAgIGJyZWFrIDIKLSAgZmkKLWRvbmUKLSAgZG9uZQotSUZTPSRhc19zYXZl X0lGUwotCi1maQotZmkKLWFjX2N0X0NIRUNLUE9MSUNZPSRhY19jdl9wcm9nX2FjX2N0X0NIRUNL UE9MSUNZCi1pZiB0ZXN0IC1uICIkYWNfY3RfQ0hFQ0tQT0xJQ1kiOyB0aGVuCi0gIHsgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfQ0hFQ0tQT0xJ Q1kiID4mNQotJGFzX2VjaG8gIiRhY19jdF9DSEVDS1BPTElDWSIgPiY2OyB9Ci1lbHNlCi0gIHsg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0k YXNfZWNobyAibm8iID4mNjsgfQotZmkKLQotICBpZiB0ZXN0ICJ4JGFjX2N0X0NIRUNLUE9MSUNZ IiA9IHg7IHRoZW4KLSAgICBDSEVDS1BPTElDWT0ibm8iCi0gIGVsc2UKLSAgICBjYXNlICRjcm9z c19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi15ZXM6KQoteyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJl Zml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzog dXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQot YWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci1lc2FjCi0gICAgQ0hFQ0tQT0xJQ1k9JGFjX2N0X0NIRUNL UE9MSUNZCi0gIGZpCi1lbHNlCi0gIENIRUNLUE9MSUNZPSIkYWNfY3ZfcHJvZ19DSEVDS1BPTElD WSIKLWZpCi0KLQotICBpZiB0ZXN0ICIkQ0hFQ0tQT0xJQ1kiICE9ICJubyI7IHRoZW4KLSAgICAg Q0hFQ0tQT0xJQ1lIRUxQPWAkQ0hFQ0tQT0xJQ1kgLWggfCBncmVwIHhlbmAKLSAgICAgaWYgdGVz dCAiJENIRUNLUE9MSUNZSEVMUCIgPSAiIjsgdGhlbgotICAgICAgICBDSEVDS1BPTElDWT1ubwot ICAgICBmaQotICBmaQotCi0gICAgaWYgdGVzdCAieCRDSEVDS1BPTElDWSIgPSAieG5vIjsgdGhl biA6Ci0KLSAgICAgICAgaWYgdGVzdCAieCRlbmFibGVfeHNtcG9saWN5IiA9ICJ4eWVzIjsgdGhl biA6Ci0KLSAgICAgICAgICAgIGFzX2ZuX2Vycm9yICQ/ICJYU00gcG9saWN5IGNvbXBpbGF0aW9u IGVuYWJsZWQsIGJ1dCB1bmFibGUgdG8gZmluZCBjaGVja3BvbGljeSIgIiRMSU5FTk8iIDUKLWZp Ci0gICAgICAgIHhzbXBvbGljeT0ibiIKLQotZmkKLQotZmkKLWNhc2UgIiRob3N0X29zIiBpbgot ICBmcmVlYnNkKikgOzsKLSAgKikgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJiYXNoIiwg c28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSBiYXNoOyBh Y193b3JkPSQyCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIGZvciAkYWNfd29yZCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQu Li4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfcGF0aF9CQVNIKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFz X2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgY2FzZSAkQkFTSCBpbgotICBbXFwvXSog fCA/OltcXC9dKikKLSAgYWNfY3ZfcGF0aF9CQVNIPSIkQkFTSCIgIyBMZXQgdGhlIHVzZXIgb3Zl cnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCi0gIDs7Ci0gICopCi0gIGFzX3NhdmVfSUZTPSRJ RlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLWZvciBhc19kaXIgaW4gJFBBVEgKLWRvCi0gIElGUz0k YXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICBmb3IgYWNf ZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYgYXNfZm5f ZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotICAgIGFj X2N2X3BhdGhfQkFTSD0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKLSAgICAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFj X2V4ZWNfZXh0IiA+JjUKLSAgICBicmVhayAyCi0gIGZpCi1kb25lCi0gIGRvbmUKLUlGUz0kYXNf c2F2ZV9JRlMKLQotICB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9CQVNIIiAmJiBhY19jdl9wYXRoX0JB U0g9Im5vIgotICA7OwotZXNhYwotZmkKLUJBU0g9JGFjX2N2X3BhdGhfQkFTSAotaWYgdGVzdCAt biAiJEJBU0giOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogcmVzdWx0OiAkQkFTSCIgPiY1Ci0kYXNfZWNobyAiJEJBU0giID4mNjsgfQotZWxzZQotICB7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQot JGFzX2VjaG8gIm5vIiA+JjY7IH0KLWZpCi0KLQotaWYgdGVzdCB4IiR7QkFTSH0iID0geCJubyIK LXRoZW4KLSAgICBhc19mbl9lcnJvciAkPyAiVW5hYmxlIHRvIGZpbmQgYmFzaCwgcGxlYXNlIGlu c3RhbGwgYmFzaCIgIiRMSU5FTk8iIDUKLWZpOzsKLWVzYWMKLWlmIGVjaG8gIiRQWVRIT04iIHwg Z3JlcCAtcSAiXi8iOyB0aGVuIDoKLQotICAgIFBZVEhPTlBBVEg9JFBZVEhPTgotICAgIFBZVEhP Tj1gYmFzZW5hbWUgJFBZVEhPTlBBVEhgCi0KLWVsaWYgdGVzdCAteiAiJFBZVEhPTiI7IHRoZW4g OgotICBQWVRIT049InB5dGhvbiIKLWVsc2UKLSAgYXNfZm5fZXJyb3IgJD8gIlBZVEhPTiBzcGVj aWZpZWQsIGJ1dCBpcyBub3QgYW4gYWJzb2x1dGUgcGF0aCIgIiRMSU5FTk8iIDUKLWZpCi0jIEV4 dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRQWVRIT04iLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFt IG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1bW15ICRQWVRIT047IGFjX3dvcmQ9JDIKLXsgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+ JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgJHth Y19jdl9wYXRoX1BZVEhPTlBBVEgrOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2Fj aGVkKSAiID4mNgotZWxzZQotICBjYXNlICRQWVRIT05QQVRIIGluCi0gIFtcXC9dKiB8ID86W1xc L10qKQotICBhY19jdl9wYXRoX1BZVEhPTlBBVEg9IiRQWVRIT05QQVRIIiAjIExldCB0aGUgdXNl ciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KLSAgOzsKLSAgKikKLSAgYXNfc2F2ZV9J RlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotZm9yIGFzX2RpciBpbiAkUEFUSAotZG8KLSAg SUZTPSRhc19zYXZlX0lGUwotICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgIGZv ciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICBpZiBh c19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0g ICAgYWNfY3ZfcGF0aF9QWVRIT05QQVRIPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0Igot ICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIv JGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgIGJyZWFrIDIKLSAgZmkKLWRvbmUKLSAgZG9u ZQotSUZTPSRhc19zYXZlX0lGUwotCi0gIHRlc3QgLXogIiRhY19jdl9wYXRoX1BZVEhPTlBBVEgi ICYmIGFjX2N2X3BhdGhfUFlUSE9OUEFUSD0ibm8iCi0gIDs7Ci1lc2FjCi1maQotUFlUSE9OUEFU SD0kYWNfY3ZfcGF0aF9QWVRIT05QQVRICi1pZiB0ZXN0IC1uICIkUFlUSE9OUEFUSCI7IHRoZW4K LSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRQWVRI T05QQVRIIiA+JjUKLSRhc19lY2hvICIkUFlUSE9OUEFUSCIgPiY2OyB9Ci1lbHNlCi0gIHsgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNf ZWNobyAibm8iID4mNjsgfQotZmkKLQotCi1pZiB0ZXN0IHgiJHtQWVRIT05QQVRIfSIgPSB4Im5v IgotdGhlbgotICAgIGFzX2ZuX2Vycm9yICQ/ICJVbmFibGUgdG8gZmluZCAkUFlUSE9OLCBwbGVh c2UgaW5zdGFsbCAkUFlUSE9OIiAiJExJTkVOTyIgNQotZmkKLXsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHB5dGhvbiB2ZXJzaW9uID49IDIuNiAi ID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHB5dGhvbiB2ZXJzaW9uID49IDIuNiAuLi4g IiA+JjY7IH0KLWAkUFlUSE9OIC1jICdpbXBvcnQgc3lzOyBzeXMuZXhpdChldmFsKCJzeXMudmVy c2lvbl9pbmZvIDwgKDIsIDYpIikpJ2AKLWlmIHRlc3QgIiQ/IiAhPSAiMCIKLXRoZW4KLSAgICBw eXRob25fdmVyc2lvbj1gJFBZVEhPTiAtViAyPiYxYAotICAgIHsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsg fQotICAgIGFzX2ZuX2Vycm9yICQ/ICIkcHl0aG9uX3ZlcnNpb24gaXMgdG9vIG9sZCwgbWluaW11 bSByZXF1aXJlZCB2ZXJzaW9uIGlzIDIuNiIgIiRMSU5FTk8iIDUKLWVsc2UKLSAgICB7ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKLSRhc19l Y2hvICJ5ZXMiID4mNjsgfQotZmkKLQotYWNfZXh0PWMKLWFjX2NwcD0nJENQUCAkQ1BQRkxBR1Mn Ci1hY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+ JjUnCi1hY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdT ICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwotYWNfY29tcGlsZXJfZ251PSRh Y19jdl9jX2NvbXBpbGVyX2dudQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBjaGVja2luZyBob3cgdG8gcnVuIHRoZSBDIHByZXByb2Nlc3NvciIgPiY1Ci0kYXNfZWNo b19uICJjaGVja2luZyBob3cgdG8gcnVuIHRoZSBDIHByZXByb2Nlc3Nvci4uLiAiID4mNjsgfQot IyBPbiBTdW5zLCBzb21ldGltZXMgJENQUCBuYW1lcyBhIGRpcmVjdG9yeS4KLWlmIHRlc3QgLW4g IiRDUFAiICYmIHRlc3QgLWQgIiRDUFAiOyB0aGVuCi0gIENQUD0KLWZpCi1pZiB0ZXN0IC16ICIk Q1BQIjsgdGhlbgotICBpZiAke2FjX2N2X3Byb2dfQ1BQKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFz X2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgICAgICMgRG91YmxlIHF1b3RlcyBiZWNh dXNlIENQUCBuZWVkcyB0byBiZSBleHBhbmRlZAotICAgIGZvciBDUFAgaW4gIiRDQyAtRSIgIiRD QyAtRSAtdHJhZGl0aW9uYWwtY3BwIiAiL2xpYi9jcHAiCi0gICAgZG8KLSAgICAgIGFjX3ByZXBy b2Nfb2s9ZmFsc2UKLWZvciBhY19jX3ByZXByb2Nfd2Fybl9mbGFnIGluICcnIHllcwotZG8KLSAg IyBVc2UgYSBoZWFkZXIgZmlsZSB0aGF0IGNvbWVzIHdpdGggZ2NjLCBzbyBjb25maWd1cmluZyBn bGliYwotICAjIHdpdGggYSBmcmVzaCBjcm9zcy1jb21waWxlciB3b3Jrcy4KLSAgIyBQcmVmZXIg PGxpbWl0cy5oPiB0byA8YXNzZXJ0Lmg+IGlmIF9fU1REQ19fIGlzIGRlZmluZWQsIHNpbmNlCi0g ICMgPGxpbWl0cy5oPiBleGlzdHMgZXZlbiBvbiBmcmVlc3RhbmRpbmcgY29tcGlsZXJzLgotICAj IE9uIHRoZSBOZVhULCBjYyAtRSBydW5zIHRoZSBjb2RlIHRocm91Z2ggdGhlIGNvbXBpbGVyJ3Mg cGFyc2VyLAotICAjIG5vdCBqdXN0IHRocm91Z2ggY3BwLiAiU3ludGF4IGVycm9yIiBpcyBoZXJl IHRvIGNhdGNoIHRoaXMgY2FzZS4KLSAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRl c3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotI2lmZGVmIF9fU1REQ19fCi0jIGlu Y2x1ZGUgPGxpbWl0cy5oPgotI2Vsc2UKLSMgaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0jZW5kaWYKLQkJ ICAgICBTeW50YXggZXJyb3IKLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY3BwICIkTElORU5PIjsg dGhlbiA6Ci0KLWVsc2UKLSAgIyBCcm9rZW46IGZhaWxzIG9uIHZhbGlkIGlucHV0LgotY29udGlu dWUKLWZpCi1ybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuaSBjb25mdGVzdC4kYWNfZXh0Ci0K LSAgIyBPSywgd29ya3Mgb24gc2FuZSBjYXNlcy4gIE5vdyBjaGVjayB3aGV0aGVyIG5vbmV4aXN0 ZW50IGhlYWRlcnMKLSAgIyBjYW4gYmUgZGV0ZWN0ZWQgYW5kIGhvdy4KLSAgY2F0IGNvbmZkZWZz LmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwot I2luY2x1ZGUgPGFjX25vbmV4aXN0ZW50Lmg+Ci1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2NwcCAi JExJTkVOTyI7IHRoZW4gOgotICAjIEJyb2tlbjogc3VjY2VzcyBvbiBpbnZhbGlkIGlucHV0Lgot Y29udGludWUKLWVsc2UKLSAgIyBQYXNzZXMgYm90aCB0ZXN0cy4KLWFjX3ByZXByb2Nfb2s9Ogot YnJlYWsKLWZpCi1ybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuaSBjb25mdGVzdC4kYWNfZXh0 Ci0KLWRvbmUKLSMgQmVjYXVzZSBvZiBgYnJlYWsnLCBfQUNfUFJFUFJPQ19JRkVMU0UncyBjbGVh bmluZyBjb2RlIHdhcyBza2lwcGVkLgotcm0gLWYgY29uZnRlc3QuaSBjb25mdGVzdC5lcnIgY29u ZnRlc3QuJGFjX2V4dAotaWYgJGFjX3ByZXByb2Nfb2s7IHRoZW4gOgotICBicmVhawotZmkKLQot ICAgIGRvbmUKLSAgICBhY19jdl9wcm9nX0NQUD0kQ1BQCi0KLWZpCi0gIENQUD0kYWNfY3ZfcHJv Z19DUFAKLWVsc2UKLSAgYWNfY3ZfcHJvZ19DUFA9JENQUAotZmkKLXsgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQ1BQIiA+JjUKLSRhc19lY2hvICIkQ1BQ IiA+JjY7IH0KLWFjX3ByZXByb2Nfb2s9ZmFsc2UKLWZvciBhY19jX3ByZXByb2Nfd2Fybl9mbGFn IGluICcnIHllcwotZG8KLSAgIyBVc2UgYSBoZWFkZXIgZmlsZSB0aGF0IGNvbWVzIHdpdGggZ2Nj LCBzbyBjb25maWd1cmluZyBnbGliYwotICAjIHdpdGggYSBmcmVzaCBjcm9zcy1jb21waWxlciB3 b3Jrcy4KLSAgIyBQcmVmZXIgPGxpbWl0cy5oPiB0byA8YXNzZXJ0Lmg+IGlmIF9fU1REQ19fIGlz IGRlZmluZWQsIHNpbmNlCi0gICMgPGxpbWl0cy5oPiBleGlzdHMgZXZlbiBvbiBmcmVlc3RhbmRp bmcgY29tcGlsZXJzLgotICAjIE9uIHRoZSBOZVhULCBjYyAtRSBydW5zIHRoZSBjb2RlIHRocm91 Z2ggdGhlIGNvbXBpbGVyJ3MgcGFyc2VyLAotICAjIG5vdCBqdXN0IHRocm91Z2ggY3BwLiAiU3lu dGF4IGVycm9yIiBpcyBoZXJlIHRvIGNhdGNoIHRoaXMgY2FzZS4KLSAgY2F0IGNvbmZkZWZzLmgg LSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotI2lm ZGVmIF9fU1REQ19fCi0jIGluY2x1ZGUgPGxpbWl0cy5oPgotI2Vsc2UKLSMgaW5jbHVkZSA8YXNz ZXJ0Lmg+Ci0jZW5kaWYKLQkJICAgICBTeW50YXggZXJyb3IKLV9BQ0VPRgotaWYgYWNfZm5fY190 cnlfY3BwICIkTElORU5PIjsgdGhlbiA6Ci0KLWVsc2UKLSAgIyBCcm9rZW46IGZhaWxzIG9uIHZh bGlkIGlucHV0LgotY29udGludWUKLWZpCi1ybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuaSBj b25mdGVzdC4kYWNfZXh0Ci0KLSAgIyBPSywgd29ya3Mgb24gc2FuZSBjYXNlcy4gIE5vdyBjaGVj ayB3aGV0aGVyIG5vbmV4aXN0ZW50IGhlYWRlcnMKLSAgIyBjYW4gYmUgZGV0ZWN0ZWQgYW5kIGhv dy4KLSAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5k IGNvbmZkZWZzLmguICAqLwotI2luY2x1ZGUgPGFjX25vbmV4aXN0ZW50Lmg+Ci1fQUNFT0YKLWlm IGFjX2ZuX2NfdHJ5X2NwcCAiJExJTkVOTyI7IHRoZW4gOgotICAjIEJyb2tlbjogc3VjY2VzcyBv biBpbnZhbGlkIGlucHV0LgotY29udGludWUKLWVsc2UKLSAgIyBQYXNzZXMgYm90aCB0ZXN0cy4K LWFjX3ByZXByb2Nfb2s9OgotYnJlYWsKLWZpCi1ybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3Qu aSBjb25mdGVzdC4kYWNfZXh0Ci0KLWRvbmUKLSMgQmVjYXVzZSBvZiBgYnJlYWsnLCBfQUNfUFJF UFJPQ19JRkVMU0UncyBjbGVhbmluZyBjb2RlIHdhcyBza2lwcGVkLgotcm0gLWYgY29uZnRlc3Qu aSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAotaWYgJGFjX3ByZXByb2Nfb2s7IHRoZW4g OgotCi1lbHNlCi0gIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBl cnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQotJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxg JGFjX3B3ZCc6IiA+JjI7fQotYXNfZm5fZXJyb3IgJD8gIkMgcHJlcHJvY2Vzc29yIFwiJENQUFwi IGZhaWxzIHNhbml0eSBjaGVjawotU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIg IiRMSU5FTk8iIDU7IH0KLWZpCi0KLWFjX2V4dD1jCi1hY19jcHA9JyRDUFAgJENQUEZMQUdTJwot YWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1 JwotYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAk TERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKLWFjX2NvbXBpbGVyX2dudT0kYWNf Y3ZfY19jb21waWxlcl9nbnUKLQotCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IGNoZWNraW5nIGZvciBncmVwIHRoYXQgaGFuZGxlcyBsb25nIGxpbmVzIGFuZCAtZSIg PiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgZ3JlcCB0aGF0IGhhbmRsZXMgbG9uZyBsaW5l cyBhbmQgLWUuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfcGF0aF9HUkVQKzp9IGZhbHNlOyB0aGVu IDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgaWYgdGVzdCAteiAiJEdS RVAiOyB0aGVuCi0gIGFjX3BhdGhfR1JFUF9mb3VuZD1mYWxzZQotICAjIExvb3AgdGhyb3VnaCB0 aGUgdXNlcidzIHBhdGggYW5kIHRlc3QgZm9yIGVhY2ggb2YgUFJPR05BTUUtTElTVAotICBhc19z YXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi1mb3IgYXNfZGlyIGluICRQQVRIJFBB VEhfU0VQQVJBVE9SL3Vzci94cGc0L2JpbgotZG8KLSAgSUZTPSRhc19zYXZlX0lGUwotICB0ZXN0 IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgIGZvciBhY19wcm9nIGluIGdyZXAgZ2dyZXA7 IGRvCi0gICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7 IGRvCi0gICAgICBhY19wYXRoX0dSRVA9IiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiCi0g ICAgICBhc19mbl9leGVjdXRhYmxlX3AgIiRhY19wYXRoX0dSRVAiIHx8IGNvbnRpbnVlCi0jIENo ZWNrIGZvciBHTlUgYWNfcGF0aF9HUkVQIGFuZCBzZWxlY3QgaXQgaWYgaXQgaXMgZm91bmQuCi0g ICMgQ2hlY2sgZm9yIEdOVSAkYWNfcGF0aF9HUkVQCi1jYXNlIGAiJGFjX3BhdGhfR1JFUCIgLS12 ZXJzaW9uIDI+JjFgIGluCi0qR05VKikKLSAgYWNfY3ZfcGF0aF9HUkVQPSIkYWNfcGF0aF9HUkVQ IiBhY19wYXRoX0dSRVBfZm91bmQ9Ojs7Ci0qKQotICBhY19jb3VudD0wCi0gICRhc19lY2hvX24g MDEyMzQ1Njc4OSA+ImNvbmZ0ZXN0LmluIgotICB3aGlsZSA6Ci0gIGRvCi0gICAgY2F0ICJjb25m dGVzdC5pbiIgImNvbmZ0ZXN0LmluIiA+ImNvbmZ0ZXN0LnRtcCIKLSAgICBtdiAiY29uZnRlc3Qu dG1wIiAiY29uZnRlc3QuaW4iCi0gICAgY3AgImNvbmZ0ZXN0LmluIiAiY29uZnRlc3QubmwiCi0g ICAgJGFzX2VjaG8gJ0dSRVAnID4+ICJjb25mdGVzdC5ubCIKLSAgICAiJGFjX3BhdGhfR1JFUCIg LWUgJ0dSRVAkJyAtZSAnLShjYW5ub3QgbWF0Y2gpLScgPCAiY29uZnRlc3QubmwiID4iY29uZnRl c3Qub3V0IiAyPi9kZXYvbnVsbCB8fCBicmVhawotICAgIGRpZmYgImNvbmZ0ZXN0Lm91dCIgImNv bmZ0ZXN0Lm5sIiA+L2Rldi9udWxsIDI+JjEgfHwgYnJlYWsKLSAgICBhc19mbl9hcml0aCAkYWNf Y291bnQgKyAxICYmIGFjX2NvdW50PSRhc192YWwKLSAgICBpZiB0ZXN0ICRhY19jb3VudCAtZ3Qg JHthY19wYXRoX0dSRVBfbWF4LTB9OyB0aGVuCi0gICAgICAjIEJlc3Qgb25lIHNvIGZhciwgc2F2 ZSBpdCBidXQga2VlcCBsb29raW5nIGZvciBhIGJldHRlciBvbmUKLSAgICAgIGFjX2N2X3BhdGhf R1JFUD0iJGFjX3BhdGhfR1JFUCIKLSAgICAgIGFjX3BhdGhfR1JFUF9tYXg9JGFjX2NvdW50Ci0g ICAgZmkKLSAgICAjIDEwKigyXjEwKSBjaGFycyBhcyBpbnB1dCBzZWVtcyBtb3JlIHRoYW4gZW5v dWdoCi0gICAgdGVzdCAkYWNfY291bnQgLWd0IDEwICYmIGJyZWFrCi0gIGRvbmUKLSAgcm0gLWYg Y29uZnRlc3QuaW4gY29uZnRlc3QudG1wIGNvbmZ0ZXN0Lm5sIGNvbmZ0ZXN0Lm91dDs7Ci1lc2Fj Ci0KLSAgICAgICRhY19wYXRoX0dSRVBfZm91bmQgJiYgYnJlYWsgMwotICAgIGRvbmUKLSAgZG9u ZQotICBkb25lCi1JRlM9JGFzX3NhdmVfSUZTCi0gIGlmIHRlc3QgLXogIiRhY19jdl9wYXRoX0dS RVAiOyB0aGVuCi0gICAgYXNfZm5fZXJyb3IgJD8gIm5vIGFjY2VwdGFibGUgZ3JlcCBjb3VsZCBi ZSBmb3VuZCBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91c3IveHBnNC9iaW4iICIkTElORU5PIiA1 Ci0gIGZpCi1lbHNlCi0gIGFjX2N2X3BhdGhfR1JFUD0kR1JFUAotZmkKLQotZmkKLXsgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfcGF0aF9HUkVQ IiA+JjUKLSRhc19lY2hvICIkYWNfY3ZfcGF0aF9HUkVQIiA+JjY7IH0KLSBHUkVQPSIkYWNfY3Zf cGF0aF9HUkVQIgotCi0KLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog Y2hlY2tpbmcgZm9yIGVncmVwIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciBlZ3JlcC4u LiAiID4mNjsgfQotaWYgJHthY19jdl9wYXRoX0VHUkVQKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFz X2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgaWYgZWNobyBhIHwgJEdSRVAgLUUgJyhh fGIpJyA+L2Rldi9udWxsIDI+JjEKLSAgIHRoZW4gYWNfY3ZfcGF0aF9FR1JFUD0iJEdSRVAgLUUi Ci0gICBlbHNlCi0gICAgIGlmIHRlc3QgLXogIiRFR1JFUCI7IHRoZW4KLSAgYWNfcGF0aF9FR1JF UF9mb3VuZD1mYWxzZQotICAjIExvb3AgdGhyb3VnaCB0aGUgdXNlcidzIHBhdGggYW5kIHRlc3Qg Zm9yIGVhY2ggb2YgUFJPR05BTUUtTElTVAotICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhf U0VQQVJBVE9SCi1mb3IgYXNfZGlyIGluICRQQVRIJFBBVEhfU0VQQVJBVE9SL3Vzci94cGc0L2Jp bgotZG8KLSAgSUZTPSRhc19zYXZlX0lGUwotICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9 LgotICAgIGZvciBhY19wcm9nIGluIGVncmVwOyBkbwotICAgIGZvciBhY19leGVjX2V4dCBpbiAn JyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgICAgYWNfcGF0aF9FR1JFUD0iJGFz X2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCIKLSAgICAgIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFj X3BhdGhfRUdSRVAiIHx8IGNvbnRpbnVlCi0jIENoZWNrIGZvciBHTlUgYWNfcGF0aF9FR1JFUCBh bmQgc2VsZWN0IGl0IGlmIGl0IGlzIGZvdW5kLgotICAjIENoZWNrIGZvciBHTlUgJGFjX3BhdGhf RUdSRVAKLWNhc2UgYCIkYWNfcGF0aF9FR1JFUCIgLS12ZXJzaW9uIDI+JjFgIGluCi0qR05VKikK LSAgYWNfY3ZfcGF0aF9FR1JFUD0iJGFjX3BhdGhfRUdSRVAiIGFjX3BhdGhfRUdSRVBfZm91bmQ9 Ojs7Ci0qKQotICBhY19jb3VudD0wCi0gICRhc19lY2hvX24gMDEyMzQ1Njc4OSA+ImNvbmZ0ZXN0 LmluIgotICB3aGlsZSA6Ci0gIGRvCi0gICAgY2F0ICJjb25mdGVzdC5pbiIgImNvbmZ0ZXN0Lmlu IiA+ImNvbmZ0ZXN0LnRtcCIKLSAgICBtdiAiY29uZnRlc3QudG1wIiAiY29uZnRlc3QuaW4iCi0g ICAgY3AgImNvbmZ0ZXN0LmluIiAiY29uZnRlc3QubmwiCi0gICAgJGFzX2VjaG8gJ0VHUkVQJyA+ PiAiY29uZnRlc3QubmwiCi0gICAgIiRhY19wYXRoX0VHUkVQIiAnRUdSRVAkJyA8ICJjb25mdGVz dC5ubCIgPiJjb25mdGVzdC5vdXQiIDI+L2Rldi9udWxsIHx8IGJyZWFrCi0gICAgZGlmZiAiY29u ZnRlc3Qub3V0IiAiY29uZnRlc3QubmwiID4vZGV2L251bGwgMj4mMSB8fCBicmVhawotICAgIGFz X2ZuX2FyaXRoICRhY19jb3VudCArIDEgJiYgYWNfY291bnQ9JGFzX3ZhbAotICAgIGlmIHRlc3Qg JGFjX2NvdW50IC1ndCAke2FjX3BhdGhfRUdSRVBfbWF4LTB9OyB0aGVuCi0gICAgICAjIEJlc3Qg b25lIHNvIGZhciwgc2F2ZSBpdCBidXQga2VlcCBsb29raW5nIGZvciBhIGJldHRlciBvbmUKLSAg ICAgIGFjX2N2X3BhdGhfRUdSRVA9IiRhY19wYXRoX0VHUkVQIgotICAgICAgYWNfcGF0aF9FR1JF UF9tYXg9JGFjX2NvdW50Ci0gICAgZmkKLSAgICAjIDEwKigyXjEwKSBjaGFycyBhcyBpbnB1dCBz ZWVtcyBtb3JlIHRoYW4gZW5vdWdoCi0gICAgdGVzdCAkYWNfY291bnQgLWd0IDEwICYmIGJyZWFr Ci0gIGRvbmUKLSAgcm0gLWYgY29uZnRlc3QuaW4gY29uZnRlc3QudG1wIGNvbmZ0ZXN0Lm5sIGNv bmZ0ZXN0Lm91dDs7Ci1lc2FjCi0KLSAgICAgICRhY19wYXRoX0VHUkVQX2ZvdW5kICYmIGJyZWFr IDMKLSAgICBkb25lCi0gIGRvbmUKLSAgZG9uZQotSUZTPSRhc19zYXZlX0lGUwotICBpZiB0ZXN0 IC16ICIkYWNfY3ZfcGF0aF9FR1JFUCI7IHRoZW4KLSAgICBhc19mbl9lcnJvciAkPyAibm8gYWNj ZXB0YWJsZSBlZ3JlcCBjb3VsZCBiZSBmb3VuZCBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91c3Iv eHBnNC9iaW4iICIkTElORU5PIiA1Ci0gIGZpCi1lbHNlCi0gIGFjX2N2X3BhdGhfRUdSRVA9JEVH UkVQCi1maQotCi0gICBmaQotZmkKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogcmVzdWx0OiAkYWNfY3ZfcGF0aF9FR1JFUCIgPiY1Ci0kYXNfZWNobyAiJGFjX2N2X3Bh dGhfRUdSRVAiID4mNjsgfQotIEVHUkVQPSIkYWNfY3ZfcGF0aF9FR1JFUCIKLQotCi17ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBBTlNJIEMgaGVh ZGVyIGZpbGVzIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciBBTlNJIEMgaGVhZGVyIGZp bGVzLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X2hlYWRlcl9zdGRjKzp9IGZhbHNlOyB0aGVuIDoK LSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgY2F0IGNvbmZkZWZzLmggLSA8 PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotI2luY2x1 ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0ZGFyZy5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgot I2luY2x1ZGUgPGZsb2F0Lmg+Ci0KLWludAotbWFpbiAoKQotewotCi0gIDsKLSAgcmV0dXJuIDA7 Ci19Ci1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSAg YWNfY3ZfaGVhZGVyX3N0ZGM9eWVzCi1lbHNlCi0gIGFjX2N2X2hlYWRlcl9zdGRjPW5vCi1maQot cm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNf ZXh0Ci0KLWlmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCi0gICMgU3VuT1Mg NC54IHN0cmluZy5oIGRvZXMgbm90IGRlY2xhcmUgbWVtKiwgY29udHJhcnkgdG8gQU5TSS4KLSAg Y2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZk ZWZzLmguICAqLwotI2luY2x1ZGUgPHN0cmluZy5oPgotCi1fQUNFT0YKLWlmIChldmFsICIkYWNf Y3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKLSAgJEVHUkVQICJtZW1jaHIiID4vZGV2L251 bGwgMj4mMTsgdGhlbiA6Ci0KLWVsc2UKLSAgYWNfY3ZfaGVhZGVyX3N0ZGM9bm8KLWZpCi1ybSAt ZiBjb25mdGVzdCoKLQotZmkKLQotaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0ZGMgPSB5ZXM7IHRo ZW4KLSAgIyBJU0MgMi4wLjIgc3RkbGliLmggZG9lcyBub3QgZGVjbGFyZSBmcmVlLCBjb250cmFy eSB0byBBTlNJLgotICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0 Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0KLV9BQ0VPRgot aWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAotICAkRUdSRVAgImZy ZWUiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0KLWVsc2UKLSAgYWNfY3ZfaGVhZGVyX3N0ZGM9 bm8KLWZpCi1ybSAtZiBjb25mdGVzdCoKLQotZmkKLQotaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0 ZGMgPSB5ZXM7IHRoZW4KLSAgIyAvYmluL2NjIGluIElyaXgtNC4wLjUgZ2V0cyBub24tQU5TSSBj dHlwZSBtYWNyb3MgdW5sZXNzIHVzaW5nIC1hbnNpLgotICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGls aW5nIiA9IHllczsgdGhlbiA6Ci0gIDoKLWVsc2UKLSAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VP RiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotI2luY2x1ZGUgPGN0 eXBlLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaWYgKCgnICcgJiAweDBGRikgPT0gMHgwMjAp Ci0jIGRlZmluZSBJU0xPV0VSKGMpICgnYScgPD0gKGMpICYmIChjKSA8PSAneicpCi0jIGRlZmlu ZSBUT1VQUEVSKGMpIChJU0xPV0VSKGMpID8gJ0EnICsgKChjKSAtICdhJykgOiAoYykpCi0jZWxz ZQotIyBkZWZpbmUgSVNMT1dFUihjKSBcCi0JCSAgICgoJ2EnIDw9IChjKSAmJiAoYykgPD0gJ2kn KSBcCi0JCSAgICAgfHwgKCdqJyA8PSAoYykgJiYgKGMpIDw9ICdyJykgXAotCQkgICAgIHx8ICgn cycgPD0gKGMpICYmIChjKSA8PSAneicpKQotIyBkZWZpbmUgVE9VUFBFUihjKSAoSVNMT1dFUihj KSA/ICgoYykgfCAweDQwKSA6IChjKSkKLSNlbmRpZgotCi0jZGVmaW5lIFhPUihlLCBmKSAoKChl KSAmJiAhKGYpKSB8fCAoIShlKSAmJiAoZikpKQotaW50Ci1tYWluICgpCi17Ci0gIGludCBpOwot ICBmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspCi0gICAgaWYgKFhPUiAoaXNsb3dlciAoaSksIElT TE9XRVIgKGkpKQotCXx8IHRvdXBwZXIgKGkpICE9IFRPVVBQRVIgKGkpKQotICAgICAgcmV0dXJu IDI7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8i OyB0aGVuIDoKLQotZWxzZQotICBhY19jdl9oZWFkZXJfc3RkYz1ubwotZmkKLXJtIC1mIGNvcmUg Ki5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0 IFwKLSAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQK LWZpCi0KLWZpCi1maQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy ZXN1bHQ6ICRhY19jdl9oZWFkZXJfc3RkYyIgPiY1Ci0kYXNfZWNobyAiJGFjX2N2X2hlYWRlcl9z dGRjIiA+JjY7IH0KLWlmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCi0KLSRh c19lY2hvICIjZGVmaW5lIFNURENfSEVBREVSUyAxIiA+PmNvbmZkZWZzLmgKLQotZmkKLQotIyBP biBJUklYIDUuMywgc3lzL3R5cGVzIGFuZCBpbnR0eXBlcy5oIGFyZSBjb25mbGljdGluZy4KLWZv ciBhY19oZWFkZXIgaW4gc3lzL3R5cGVzLmggc3lzL3N0YXQuaCBzdGRsaWIuaCBzdHJpbmcuaCBt ZW1vcnkuaCBzdHJpbmdzLmggXAotCQkgIGludHR5cGVzLmggc3RkaW50LmggdW5pc3RkLmgKLWRv IDoKLSAgYXNfYWNfSGVhZGVyPWAkYXNfZWNobyAiYWNfY3ZfaGVhZGVyXyRhY19oZWFkZXIiIHwg JGFzX3RyX3NoYAotYWNfZm5fY19jaGVja19oZWFkZXJfY29tcGlsZSAiJExJTkVOTyIgIiRhY19o ZWFkZXIiICIkYXNfYWNfSGVhZGVyIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQKLSIKLWlmIGV2YWwg dGVzdCBcInhcJCIkYXNfYWNfSGVhZGVyIlwiID0geCJ5ZXMiOyB0aGVuIDoKLSAgY2F0ID4+Y29u ZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSBgJGFzX2VjaG8gIkhBVkVfJGFjX2hlYWRlciIgfCAk YXNfdHJfY3BwYCAxCi1fQUNFT0YKLQotZmkKLQotZG9uZQotCi0KLWlmIHRlc3QgIiRjcm9zc19j b21waWxpbmciICE9IHllczsgdGhlbiA6Ci0KLQotYWNfcHJldmlvdXNfY3BwZmxhZ3M9JENQUEZM QUdTCi1hY19wcmV2aW91c19sZGZsYWdzPSRMREZMQUdTCi1hY19wcmV2aW91c19saWJzPSRMSUJT Ci0jIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRQWVRIT04tY29uZmlnIiwgc28gaXQgY2Fu IGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSAkUFlUSE9OLWNvbmZpZzsg YWNfd29yZD0kMgoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVj a2luZyBmb3IgJGFjX3dvcmQiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3Jk Li4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3BhdGhfcHljb25maWcrOn0gZmFsc2U7IHRoZW4gOgot ICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBjYXNlICRweWNvbmZpZyBpbgot ICBbXFwvXSogfCA/OltcXC9dKikKLSAgYWNfY3ZfcGF0aF9weWNvbmZpZz0iJHB5Y29uZmlnIiAj IExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KLSAgOzsKLSAgKikK LSAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotZm9yIGFzX2RpciBpbiAk UEFUSAotZG8KLSAgSUZTPSRhc19zYXZlX0lGUwotICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19k aXI9LgotICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25z OyBkbwotICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19l eHQiOyB0aGVuCi0gICAgYWNfY3ZfcGF0aF9weWNvbmZpZz0iJGFzX2Rpci8kYWNfd29yZCRhY19l eGVjX2V4dCIKLSAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3Vu ZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICBicmVhayAyCi0gIGZpCi1k b25lCi0gIGRvbmUKLUlGUz0kYXNfc2F2ZV9JRlMKLQotICB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9w eWNvbmZpZyIgJiYgYWNfY3ZfcGF0aF9weWNvbmZpZz0ibm8iCi0gIDs7Ci1lc2FjCi1maQotcHlj b25maWc9JGFjX2N2X3BhdGhfcHljb25maWcKLWlmIHRlc3QgLW4gIiRweWNvbmZpZyI7IHRoZW4K LSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRweWNv bmZpZyIgPiY1Ci0kYXNfZWNobyAiJHB5Y29uZmlnIiA+JjY7IH0KLWVsc2UKLSAgeyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hv ICJubyIgPiY2OyB9Ci1maQotCi0KLWlmIHRlc3QgeCIkcHljb25maWciID0geCJubyI7IHRoZW4g OgotCi0gICAgICAgIENQUEZMQUdTPSIkQ0ZMQUdTIGAkUFlUSE9OIC1jICdpbXBvcnQgZGlzdHV0 aWxzLnN5c2NvbmZpZzsgXAotICAgICAgICBwcmludCAiLUkiICsgZGlzdHV0aWxzLnN5c2NvbmZp Zy5nZXRfY29uZmlnX3ZhcigiSU5DTFVERVBZIiknYCIKLSAgICBDUFBGTEFHUz0iJENQUEZMQUdT IGAkUFlUSE9OIC1jICdpbXBvcnQgZGlzdHV0aWxzLnN5c2NvbmZpZzsgXAotICAgICAgICBwcmlu dChkaXN0dXRpbHMuc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJDRkxBR1MiKSknYCIKLSAgICBM REZMQUdTPSIkTERGTEFHUyBgJFBZVEhPTiAtYyAnaW1wb3J0IGRpc3R1dGlscy5zeXNjb25maWc7 IFwKLSAgICAgICAgcHJpbnQoIi1MIiArIGRpc3R1dGlscy5zeXNjb25maWcuZ2V0X3B5dGhvbl9s aWIocGxhdF9zcGVjaWZpYz0xLFwKLSAgICAgICAgc3RhbmRhcmRfbGliPTEpICsgIi9jb25maWci KSdgIgotICAgIExERkxBR1M9IiRMREZMQUdTIGAkUFlUSE9OIC1jICdpbXBvcnQgZGlzdHV0aWxz LnN5c2NvbmZpZzsgXAotICAgICAgICBwcmludChkaXN0dXRpbHMuc3lzY29uZmlnLmdldF9jb25m aWdfdmFyKCJMSU5LRk9SU0hBUkVEIikpJ2AiCi0gICAgTERGTEFHUz0iJExERkxBR1MgYCRQWVRI T04gLWMgJ2ltcG9ydCBkaXN0dXRpbHMuc3lzY29uZmlnOyBcCi0gICAgICAgIHByaW50KGRpc3R1 dGlscy5zeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIkxERkxBR1MiKSknYCIKLSAgICBMSUJTPSIk TElCUyBgJFBZVEhPTiAtYyAnaW1wb3J0IGRpc3R1dGlscy5zeXNjb25maWc7IFwKLSAgICAgICAg cHJpbnQoZGlzdHV0aWxzLnN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiTElCUyIpKSdgIgotICAg IExJQlM9IiRMSUJTIGAkUFlUSE9OIC1jICdpbXBvcnQgZGlzdHV0aWxzLnN5c2NvbmZpZzsgXAot ICAgICAgICBwcmludChkaXN0dXRpbHMuc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJTWVNMSUJT IikpJ2AiCi0KLWVsc2UKLQotICAgICAgICBDUFBGTEFHUz0iJENGTEFHUyBgJFBZVEhPTi1jb25m aWcgLS1jZmxhZ3NgIgotICAgIExERkxBR1M9IiRMREZMQUdTIGAkUFlUSE9OLWNvbmZpZyAtLWxk ZmxhZ3NgIgotICAgIExJQlM9IiRMSUJTIGAkUFlUSE9OLWNvbmZpZyAtLWxpYnNgIgotCi1maQot Ci1hY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAiUHl0aG9uLmgiICJhY19j dl9oZWFkZXJfUHl0aG9uX2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKLWlmIHRlc3QgIngkYWNf Y3ZfaGVhZGVyX1B5dGhvbl9oIiA9IHh5ZXM7IHRoZW4gOgotCi1lbHNlCi0gIGFzX2ZuX2Vycm9y ICQ/ICJVbmFibGUgdG8gZmluZCBQeXRob24gZGV2ZWxvcG1lbnQgaGVhZGVycyIgIiRMSU5FTk8i IDUKLWZpCi0KLQotYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAiUHlBcmdfUGFyc2VUdXBs ZSIgImFjX2N2X2Z1bmNfUHlBcmdfUGFyc2VUdXBsZSIKLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19Q eUFyZ19QYXJzZVR1cGxlIiA9IHh5ZXM7IHRoZW4gOgotCi1lbHNlCi0gIGFzX2ZuX2Vycm9yICQ/ ICJVbmFibGUgdG8gZmluZCBhIHN1aXRhYmxlIHB5dGhvbiBkZXZlbG9wbWVudCBsaWJyYXJ5IiAi JExJTkVOTyIgNQotZmkKLQotCi1DUFBGTEFHUz0kYWNfcHJldmlvdXNfY3BwZmxhZ3MKLUxERkxB R1M9JGFjX3ByZXZpb3VzX2xkZmxhZ3MKLUxJQlM9JGFjX3ByZXZpb3VzX2xpYnMKLQotCi0gICAg eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVy IFB5dGhvbiBzZXR1cC5weSBicm9rZW5seSBlbmFibGVzIC1EX0ZPUlRJRllfU09VUkNFIiA+JjUK LSRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgUHl0aG9uIHNldHVwLnB5IGJyb2tlbmx5IGVu YWJsZXMgLURfRk9SVElGWV9TT1VSQ0UuLi4gIiA+JjY7IH0KLWlmICR7YXhfY3ZfcHl0aG9uX2Zv cnRpZnkrOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxz ZQotCi0gICAgICAgIGF4X2N2X3B5dGhvbl9mb3J0aWZ5PW5vCi0gICAgICAgIGZvciBhcmcgaW4g JCgkUFlUSE9OLWNvbmZpZyAtLWNmbGFncyk7IGRvCi0gICAgICAgICAgICBjYXNlICIkYXJnIiBp bgotICAgICAgICAgICAgLURfRk9SVElGWV9TT1VSQ0U9MCkgYXhfY3ZfcHl0aG9uX2ZvcnRpZnk9 bm8gOzsKLSAgICAgICAgICAgIC1EX0ZPUlRJRllfU09VUkNFPSopIGF4X2N2X3B5dGhvbl9mb3J0 aWZ5PXllcyA7OwotICAgICAgICAgICAgLVdwLC1EX0ZPUlRJRllfU09VUkNFPTApIGF4X2N2X3B5 dGhvbl9mb3J0aWZ5PW5vIDs7Ci0gICAgICAgICAgICAtV3AsLURfRk9SVElGWV9TT1VSQ0U9Kikg YXhfY3ZfcHl0aG9uX2ZvcnRpZnk9eWVzIDs7Ci0gICAgICAgICAgICAqKSA7OwotICAgICAgICAg ICAgZXNhYwotICAgICAgICBkb25lCi0KLWZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IHJlc3VsdDogJGF4X2N2X3B5dGhvbl9mb3J0aWZ5IiA+JjUKLSRhc19lY2hv ICIkYXhfY3ZfcHl0aG9uX2ZvcnRpZnkiID4mNjsgfQotCi0gICAgaWYgdGVzdCB4JGF4X2N2X3B5 dGhvbl9mb3J0aWZ5ID0geHllczsgdGhlbiA6Ci0KLSAgICAgICAgUFlfTk9PUFRfQ0ZMQUdTPS1P MQotCi1lbHNlCi0KLSAgICAgICAgUFlfTk9PUFRfQ0ZMQUdTPScnCi0KLWZpCi0KLQotCi0KLWZp Ci0KLWlmICEgJHJ1bXA7IHRoZW4KLQotIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJ4Z2V0 dGV4dCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkg eGdldHRleHQ7IGFjX3dvcmQ9JDIKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZv ciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgJHthY19jdl9wYXRoX1hHRVRURVhUKzp9IGZhbHNl OyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgY2FzZSAkWEdF VFRFWFQgaW4KLSAgW1xcL10qIHwgPzpbXFwvXSopCi0gIGFjX2N2X3BhdGhfWEdFVFRFWFQ9IiRY R0VUVEVYVCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCi0g IDs7Ci0gICopCi0gIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLWZvciBh c19kaXIgaW4gJFBBVEgKLWRvCi0gIElGUz0kYXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2Rp ciIgJiYgYXNfZGlyPS4KLSAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVf ZXh0ZW5zaW9uczsgZG8KLSAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3Jk JGFjX2V4ZWNfZXh0IjsgdGhlbgotICAgIGFjX2N2X3BhdGhfWEdFVFRFWFQ9IiRhc19kaXIvJGFj X3dvcmQkYWNfZXhlY19leHQiCi0gICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgYnJlYWsg MgotICBmaQotZG9uZQotICBkb25lCi1JRlM9JGFzX3NhdmVfSUZTCi0KLSAgdGVzdCAteiAiJGFj X2N2X3BhdGhfWEdFVFRFWFQiICYmIGFjX2N2X3BhdGhfWEdFVFRFWFQ9Im5vIgotICA7OwotZXNh YwotZmkKLVhHRVRURVhUPSRhY19jdl9wYXRoX1hHRVRURVhUCi1pZiB0ZXN0IC1uICIkWEdFVFRF WFQiOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz dWx0OiAkWEdFVFRFWFQiID4mNQotJGFzX2VjaG8gIiRYR0VUVEVYVCIgPiY2OyB9Ci1lbHNlCi0g IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1 Ci0kYXNfZWNobyAibm8iID4mNjsgfQotZmkKLQotCi1pZiB0ZXN0IHgiJHtYR0VUVEVYVH0iID0g eCJubyIKLXRoZW4KLSAgICBhc19mbl9lcnJvciAkPyAiVW5hYmxlIHRvIGZpbmQgeGdldHRleHQs IHBsZWFzZSBpbnN0YWxsIHhnZXR0ZXh0IiAiJExJTkVOTyIgNQotZmkKLWNhc2UgIiRob3N0X2Nw dSIgaW4KLWlbMzQ1Nl04Nnx4ODZfNjR8YWFyY2g2NCkKLSAgICAjIEV4dHJhY3QgdGhlIGZpcnN0 IHdvcmQgb2YgImlhc2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgot c2V0IGR1bW15IGlhc2w7IGFjX3dvcmQ9JDIKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSRhc19lY2hvX24gImNoZWNr aW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgJHthY19jdl9wYXRoX0lBU0wrOn0gZmFs c2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBjYXNlICRJ QVNMIGluCi0gIFtcXC9dKiB8ID86W1xcL10qKQotICBhY19jdl9wYXRoX0lBU0w9IiRJQVNMIiAj IExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KLSAgOzsKLSAgKikK LSAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotZm9yIGFzX2RpciBpbiAk UEFUSAotZG8KLSAgSUZTPSRhc19zYXZlX0lGUwotICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19k aXI9LgotICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25z OyBkbwotICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19l eHQiOyB0aGVuCi0gICAgYWNfY3ZfcGF0aF9JQVNMPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNf ZXh0IgotICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRh c19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgIGJyZWFrIDIKLSAgZmkKLWRvbmUK LSAgZG9uZQotSUZTPSRhc19zYXZlX0lGUwotCi0gIHRlc3QgLXogIiRhY19jdl9wYXRoX0lBU0wi ICYmIGFjX2N2X3BhdGhfSUFTTD0ibm8iCi0gIDs7Ci1lc2FjCi1maQotSUFTTD0kYWNfY3ZfcGF0 aF9JQVNMCi1pZiB0ZXN0IC1uICIkSUFTTCI7IHRoZW4KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRJQVNMIiA+JjUKLSRhc19lY2hvICIkSUFTTCIg PiY2OyB9Ci1lbHNlCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQotZmkKLQotCi1pZiB0ZXN0IHgi JHtJQVNMfSIgPSB4Im5vIgotdGhlbgotICAgIGFzX2ZuX2Vycm9yICQ/ICJVbmFibGUgdG8gZmlu ZCBpYXNsLCBwbGVhc2UgaW5zdGFsbCBpYXNsIiAiJExJTkVOTyIgNQotZmkKLSAgICA7OwotZXNh YwotCi1hY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAidXVpZC91dWlkLmgi ICJhY19jdl9oZWFkZXJfdXVpZF91dWlkX2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKLWlmIHRl c3QgIngkYWNfY3ZfaGVhZGVyX3V1aWRfdXVpZF9oIiA9IHh5ZXM7IHRoZW4gOgotCi0gICAgeyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgdXVpZF9j bGVhciBpbiAtbHV1aWQiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHV1aWRfY2xlYXIg aW4gLWx1dWlkLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X2xpYl91dWlkX3V1aWRfY2xlYXIrOn0g ZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBhY19j aGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCi1MSUJTPSItbHV1aWQgICRMSUJTIgotY2F0IGNvbmZk ZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAq LwotCi0vKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBl cnJvci4KLSAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlw ZSBvZiBhIEdDQwotICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdv dWxkIHN0aWxsIGFwcGx5LiAgKi8KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIgotI2Vu ZGlmCi1jaGFyIHV1aWRfY2xlYXIgKCk7Ci1pbnQKLW1haW4gKCkKLXsKLXJldHVybiB1dWlkX2Ns ZWFyICgpOwotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9saW5r ICIkTElORU5PIjsgdGhlbiA6Ci0gIGFjX2N2X2xpYl91dWlkX3V1aWRfY2xlYXI9eWVzCi1lbHNl Ci0gIGFjX2N2X2xpYl91dWlkX3V1aWRfY2xlYXI9bm8KLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0 LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRl c3QuJGFjX2V4dAotTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUwotZmkKLXsgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX3V1aWRfdXVp ZF9jbGVhciIgPiY1Ci0kYXNfZWNobyAiJGFjX2N2X2xpYl91dWlkX3V1aWRfY2xlYXIiID4mNjsg fQotaWYgdGVzdCAieCRhY19jdl9saWJfdXVpZF91dWlkX2NsZWFyIiA9IHh5ZXM7IHRoZW4gOgot ICBsaWJ1dWlkPSJ5IgotZmkKLQotCi1maQotCi0KLWFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdy ZWwgIiRMSU5FTk8iICJ1dWlkLmgiICJhY19jdl9oZWFkZXJfdXVpZF9oIiAiJGFjX2luY2x1ZGVz X2RlZmF1bHQiCi1pZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl91dWlkX2giID0geHllczsgdGhlbiA6 Ci0gIGxpYnV1aWQ9InkiCi1maQotCi0KLWlmIHRlc3QgIiRsaWJ1dWlkIiAhPSAieSI7IHRoZW4g OgotCi0gICAgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBmaW5kIGEgdmFsaWQgdXVpZCBsaWJyYXJ5 IiAiJExJTkVOTyIgNQotCi1maQotCi0KLWFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRM SU5FTk8iICJjdXJzZXMuaCIgImFjX2N2X2hlYWRlcl9jdXJzZXNfaCIgIiRhY19pbmNsdWRlc19k ZWZhdWx0IgotaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfY3Vyc2VzX2giID0geHllczsgdGhlbiA6 Ci0KLSAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5n IGZvciBjbGVhciBpbiAtbGN1cnNlcyIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgY2xl YXIgaW4gLWxjdXJzZXMuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfbGliX2N1cnNlc19jbGVhcis6 fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGFj X2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKLUxJQlM9Ii1sY3Vyc2VzICAkTElCUyIKLWNhdCBj b25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5o LiAgKi8KLQotLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQg YW4gZXJyb3IuCi0gICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJu IHR5cGUgb2YgYSBHQ0MKLSAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlw ZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIK LSNlbmRpZgotY2hhciBjbGVhciAoKTsKLWludAotbWFpbiAoKQotewotcmV0dXJuIGNsZWFyICgp OwotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9saW5rICIkTElO RU5PIjsgdGhlbiA6Ci0gIGFjX2N2X2xpYl9jdXJzZXNfY2xlYXI9eWVzCi1lbHNlCi0gIGFjX2N2 X2xpYl9jdXJzZXNfY2xlYXI9bm8KLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVz dC4kYWNfb2JqZXh0IFwKLSAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAot TElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUwotZmkKLXsgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX2N1cnNlc19jbGVhciIgPiY1Ci0k YXNfZWNobyAiJGFjX2N2X2xpYl9jdXJzZXNfY2xlYXIiID4mNjsgfQotaWYgdGVzdCAieCRhY19j dl9saWJfY3Vyc2VzX2NsZWFyIiA9IHh5ZXM7IHRoZW4gOgotICBjdXJzZXM9InkiCi1lbHNlCi0g IGN1cnNlcz0ibiIKLWZpCi0KLQotZWxzZQotICBjdXJzZXM9Im4iCi1maQotCi0KLWFjX2ZuX2Nf Y2hlY2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8iICJuY3Vyc2VzLmgiICJhY19jdl9oZWFkZXJf bmN1cnNlc19oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCi1pZiB0ZXN0ICJ4JGFjX2N2X2hlYWRl cl9uY3Vyc2VzX2giID0geHllczsgdGhlbiA6Ci0KLSAgICB7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBjbGVhciBpbiAtbG5jdXJzZXMiID4mNQot JGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGNsZWFyIGluIC1sbmN1cnNlcy4uLiAiID4mNjsgfQot aWYgJHthY19jdl9saWJfbmN1cnNlc19jbGVhcis6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hv X24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMK LUxJQlM9Ii1sbmN1cnNlcyAgJExJQlMiCi1jYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25m dGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLS8qIE92ZXJyaWRlIGFueSBH Q0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgotICAgVXNlIGNoYXIgYmVj YXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCi0gICBidWlsdGlu IGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwot I2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiCi0jZW5kaWYKLWNoYXIgY2xlYXIgKCk7Ci1p bnQKLW1haW4gKCkKLXsKLXJldHVybiBjbGVhciAoKTsKLSAgOwotICByZXR1cm4gMDsKLX0KLV9B Q0VPRgotaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotICBhY19jdl9saWJf bmN1cnNlc19jbGVhcj15ZXMKLWVsc2UKLSAgYWNfY3ZfbGliX25jdXJzZXNfY2xlYXI9bm8KLWZp Ci1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICBjb25m dGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotTElCUz0kYWNfY2hlY2tfbGliX3NhdmVf TElCUwotZmkKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0 OiAkYWNfY3ZfbGliX25jdXJzZXNfY2xlYXIiID4mNQotJGFzX2VjaG8gIiRhY19jdl9saWJfbmN1 cnNlc19jbGVhciIgPiY2OyB9Ci1pZiB0ZXN0ICJ4JGFjX2N2X2xpYl9uY3Vyc2VzX2NsZWFyIiA9 IHh5ZXM7IHRoZW4gOgotICBuY3Vyc2VzPSJ5IgotZWxzZQotICBuY3Vyc2VzPSJuIgotZmkKLQot Ci1lbHNlCi0gIG5jdXJzZXM9Im4iCi1maQotCi0KLWlmIHRlc3QgIiRjdXJzZXMiID0gIm4iICYm IHRlc3QgIiRuY3Vyc2VzIiA9ICJuIjsgdGhlbiA6Ci0KLSAgICBhc19mbl9lcnJvciAkPyAiVW5h YmxlIHRvIGZpbmQgYSBzdWl0YWJsZSBjdXJzZXMgbGlicmFyeSIgIiRMSU5FTk8iIDUKLQotZmkK LSMgUHJlZmVyIG5jdXJzZXMgb3ZlciBjdXJzZXMgaWYgYm90aCBhcmUgcHJlc2VudAotaWYgdGVz dCAiJG5jdXJzZXMiID0gInkiOyB0aGVuIDoKLQotICAgIENVUlNFU19MSUJTPSItbG5jdXJzZXMi Ci0KLSRhc19lY2hvICIjZGVmaW5lIElOQ0xVREVfQ1VSU0VTX0ggPG5jdXJzZXMuaD4iID4+Y29u ZmRlZnMuaAotCi0KLWVsc2UKLQotICAgIENVUlNFU19MSUJTPSItbGN1cnNlcyIKLQotJGFzX2Vj aG8gIiNkZWZpbmUgSU5DTFVERV9DVVJTRVNfSCA8Y3Vyc2VzLmg+IiA+PmNvbmZkZWZzLmgKLQot Ci1maQotCi0KLWlmIHRlc3QgIiRuY3Vyc2VzIiA9ICJ5IjsgdGhlbiA6Ci0KLXsgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGRlZmluZV9rZXkgaW4g LWx0aW5mbyIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgZGVmaW5lX2tleSBpbiAtbHRp bmZvLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X2xpYl90aW5mb19kZWZpbmVfa2V5Kzp9IGZhbHNl OyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgYWNfY2hlY2tf bGliX3NhdmVfTElCUz0kTElCUwotTElCUz0iLWx0aW5mbyAgJExJQlMiCi1jYXQgY29uZmRlZnMu aCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0K LS8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9y LgotICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9m IGEgR0NDCi0gICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQg c3RpbGwgYXBwbHkuICAqLwotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiCi0jZW5kaWYK LWNoYXIgZGVmaW5lX2tleSAoKTsKLWludAotbWFpbiAoKQotewotcmV0dXJuIGRlZmluZV9rZXkg KCk7Ci0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRM SU5FTk8iOyB0aGVuIDoKLSAgYWNfY3ZfbGliX3RpbmZvX2RlZmluZV9rZXk9eWVzCi1lbHNlCi0g IGFjX2N2X2xpYl90aW5mb19kZWZpbmVfa2V5PW5vCi1maQotcm0gLWYgY29yZSBjb25mdGVzdC5l cnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0 LiRhY19leHQKLUxJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKLWZpCi17ICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl90aW5mb19kZWZp bmVfa2V5IiA+JjUKLSRhc19lY2hvICIkYWNfY3ZfbGliX3RpbmZvX2RlZmluZV9rZXkiID4mNjsg fQotaWYgdGVzdCAieCRhY19jdl9saWJfdGluZm9fZGVmaW5lX2tleSIgPSB4eWVzOyB0aGVuIDoK LSAgVElORk9fTElCUz0tbHRpbmZvCi1maQotCi0KLWZpCi0KLQotCi0KLQotCi0KLQotCi1pZiB0 ZXN0ICJ4JGFjX2N2X2Vudl9QS0dfQ09ORklHX3NldCIgIT0gInhzZXQiOyB0aGVuCi0JaWYgdGVz dCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQg b2YgIiR7YWNfdG9vbF9wcmVmaXh9cGtnLWNvbmZpZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0g bmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1wa2ctY29uZmlnOyBh Y193b3JkPSQyCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIGZvciAkYWNfd29yZCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQu Li4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfcGF0aF9QS0dfQ09ORklHKzp9IGZhbHNlOyB0aGVuIDoK LSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgY2FzZSAkUEtHX0NPTkZJRyBp bgotICBbXFwvXSogfCA/OltcXC9dKikKLSAgYWNfY3ZfcGF0aF9QS0dfQ09ORklHPSIkUEtHX0NP TkZJRyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCi0gIDs7 Ci0gICopCi0gIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLWZvciBhc19k aXIgaW4gJFBBVEgKLWRvCi0gIElGUz0kYXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2RpciIg JiYgYXNfZGlyPS4KLSAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0 ZW5zaW9uczsgZG8KLSAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFj X2V4ZWNfZXh0IjsgdGhlbgotICAgIGFjX2N2X3BhdGhfUEtHX0NPTkZJRz0iJGFzX2Rpci8kYWNf d29yZCRhY19leGVjX2V4dCIKLSAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICBicmVhayAy Ci0gIGZpCi1kb25lCi0gIGRvbmUKLUlGUz0kYXNfc2F2ZV9JRlMKLQotICA7OwotZXNhYwotZmkK LVBLR19DT05GSUc9JGFjX2N2X3BhdGhfUEtHX0NPTkZJRwotaWYgdGVzdCAtbiAiJFBLR19DT05G SUciOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz dWx0OiAkUEtHX0NPTkZJRyIgPiY1Ci0kYXNfZWNobyAiJFBLR19DT05GSUciID4mNjsgfQotZWxz ZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8i ID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLWZpCi0KLQotZmkKLWlmIHRlc3QgLXogIiRhY19j dl9wYXRoX1BLR19DT05GSUciOyB0aGVuCi0gIGFjX3B0X1BLR19DT05GSUc9JFBLR19DT05GSUcK LSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJwa2ctY29uZmlnIiwgc28gaXQgY2FuIGJl IGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSBwa2ctY29uZmlnOyBhY193b3Jk PSQyCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZv ciAkYWNfd29yZCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+ JjY7IH0KLWlmICR7YWNfY3ZfcGF0aF9hY19wdF9QS0dfQ09ORklHKzp9IGZhbHNlOyB0aGVuIDoK LSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgY2FzZSAkYWNfcHRfUEtHX0NP TkZJRyBpbgotICBbXFwvXSogfCA/OltcXC9dKikKLSAgYWNfY3ZfcGF0aF9hY19wdF9QS0dfQ09O RklHPSIkYWNfcHRfUEtHX0NPTkZJRyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qg d2l0aCBhIHBhdGguCi0gIDs7Ci0gICopCi0gIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9T RVBBUkFUT1IKLWZvciBhc19kaXIgaW4gJFBBVEgKLWRvCi0gIElGUz0kYXNfc2F2ZV9JRlMKLSAg dGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICBmb3IgYWNfZXhlY19leHQgaW4gJycg JGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIk YXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotICAgIGFjX2N2X3BhdGhfYWNfcHRf UEtHX0NPTkZJRz0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKLSAgICAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4 ZWNfZXh0IiA+JjUKLSAgICBicmVhayAyCi0gIGZpCi1kb25lCi0gIGRvbmUKLUlGUz0kYXNfc2F2 ZV9JRlMKLQotICA7OwotZXNhYwotZmkKLWFjX3B0X1BLR19DT05GSUc9JGFjX2N2X3BhdGhfYWNf cHRfUEtHX0NPTkZJRwotaWYgdGVzdCAtbiAiJGFjX3B0X1BLR19DT05GSUciOyB0aGVuCi0gIHsg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcHRfUEtH X0NPTkZJRyIgPiY1Ci0kYXNfZWNobyAiJGFjX3B0X1BLR19DT05GSUciID4mNjsgfQotZWxzZQot ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4m NQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLWZpCi0KLSAgaWYgdGVzdCAieCRhY19wdF9QS0dfQ09O RklHIiA9IHg7IHRoZW4KLSAgICBQS0dfQ09ORklHPSIiCi0gIGVsc2UKLSAgICBjYXNlICRjcm9z c19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi15ZXM6KQoteyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJl Zml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzog dXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQot YWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci1lc2FjCi0gICAgUEtHX0NPTkZJRz0kYWNfcHRfUEtHX0NP TkZJRwotICBmaQotZWxzZQotICBQS0dfQ09ORklHPSIkYWNfY3ZfcGF0aF9QS0dfQ09ORklHIgot ZmkKLQotZmkKLWlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgotCV9wa2dfbWluX3ZlcnNp b249MC45LjAKLQl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIHBrZy1jb25maWcgaXMgYXQgbGVhc3QgdmVyc2lvbiAkX3BrZ19taW5fdmVyc2lvbiIgPiY1 Ci0kYXNfZWNob19uICJjaGVja2luZyBwa2ctY29uZmlnIGlzIGF0IGxlYXN0IHZlcnNpb24gJF9w a2dfbWluX3ZlcnNpb24uLi4gIiA+JjY7IH0KLQlpZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtn Y29uZmlnLXZlcnNpb24gJF9wa2dfbWluX3ZlcnNpb247IHRoZW4KLQkJeyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1Ci0kYXNfZWNobyAieWVz IiA+JjY7IH0KLQllbHNlCi0JCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQotCQlQS0dfQ09ORklHPSIi Ci0JZmkKLWZpCi1pZiB0ZXN0ICJ4JHFlbXVfeGVuIiA9ICJ4eSI7IHRoZW4gOgotCi0KLXBrZ19m YWlsZWQ9bm8KLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tp bmcgZm9yIGdsaWIiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGdsaWIuLi4gIiA+JjY7 IH0KLQotaWYgdGVzdCAtbiAiJGdsaWJfQ0ZMQUdTIjsgdGhlbgotICAgIHBrZ19jdl9nbGliX0NG TEFHUz0iJGdsaWJfQ0ZMQUdTIgotIGVsaWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCi0g ICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKLSAgICB7IHsgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJy b3JzIFwiZ2xpYi0yLjAgPj0gMi4xMlwiIjsgfSA+JjUKLSAgKCRQS0dfQ09ORklHIC0tZXhpc3Rz IC0tcHJpbnQtZXJyb3JzICJnbGliLTIuMCA+PSAyLjEyIikgMj4mNQotICBhY19zdGF0dXM9JD8K LSAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1 cyIgPiY1Ci0gIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KLSAgcGtnX2N2X2dsaWJfQ0ZM QUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyAiZ2xpYi0yLjAgPj0gMi4xMiIgMj4vZGV2L251bGxg Ci0JCSAgICAgIHRlc3QgIngkPyIgIT0gIngwIiAmJiBwa2dfZmFpbGVkPXllcwotZWxzZQotICBw a2dfZmFpbGVkPXllcwotZmkKLSBlbHNlCi0gICAgcGtnX2ZhaWxlZD11bnRyaWVkCi1maQotaWYg dGVzdCAtbiAiJGdsaWJfTElCUyI7IHRoZW4KLSAgICBwa2dfY3ZfZ2xpYl9MSUJTPSIkZ2xpYl9M SUJTIgotIGVsaWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCi0gICAgaWYgdGVzdCAtbiAi JFBLR19DT05GSUciICYmIFwKLSAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwiZ2xpYi0yLjAg Pj0gMi4xMlwiIjsgfSA+JjUKLSAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3Jz ICJnbGliLTIuMCA+PSAyLjEyIikgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIHRlc3Qg JGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KLSAgcGtnX2N2X2dsaWJfTElCUz1gJFBLR19DT05GSUcg LS1saWJzICJnbGliLTIuMCA+PSAyLjEyIiAyPi9kZXYvbnVsbGAKLQkJICAgICAgdGVzdCAieCQ/ IiAhPSAieDAiICYmIHBrZ19mYWlsZWQ9eWVzCi1lbHNlCi0gIHBrZ19mYWlsZWQ9eWVzCi1maQot IGVsc2UKLSAgICBwa2dfZmFpbGVkPXVudHJpZWQKLWZpCi0KLQotCi1pZiB0ZXN0ICRwa2dfZmFp bGVkID0geWVzOyB0aGVuCi0gICAJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci0KLWlmICRQS0dfQ09O RklHIC0tYXRsZWFzdC1wa2djb25maWctdmVyc2lvbiAwLjIwOyB0aGVuCi0gICAgICAgIF9wa2df c2hvcnRfZXJyb3JzX3N1cHBvcnRlZD15ZXMKLWVsc2UKLSAgICAgICAgX3BrZ19zaG9ydF9lcnJv cnNfc3VwcG9ydGVkPW5vCi1maQotICAgICAgICBpZiB0ZXN0ICRfcGtnX3Nob3J0X2Vycm9yc19z dXBwb3J0ZWQgPSB5ZXM7IHRoZW4KLQkgICAgICAgIGdsaWJfUEtHX0VSUk9SUz1gJFBLR19DT05G SUcgLS1zaG9ydC1lcnJvcnMgLS1wcmludC1lcnJvcnMgLS1jZmxhZ3MgLS1saWJzICJnbGliLTIu MCA+PSAyLjEyIiAyPiYxYAotICAgICAgICBlbHNlCi0JICAgICAgICBnbGliX1BLR19FUlJPUlM9 YCRQS0dfQ09ORklHIC0tcHJpbnQtZXJyb3JzIC0tY2ZsYWdzIC0tbGlicyAiZ2xpYi0yLjAgPj0g Mi4xMiIgMj4mMWAKLSAgICAgICAgZmkKLQkjIFB1dCB0aGUgbmFzdHkgZXJyb3IgbWVzc2FnZSBp biBjb25maWcubG9nIHdoZXJlIGl0IGJlbG9uZ3MKLQllY2hvICIkZ2xpYl9QS0dfRVJST1JTIiA+ JjUKLQotCWFzX2ZuX2Vycm9yICQ/ICJQYWNrYWdlIHJlcXVpcmVtZW50cyAoZ2xpYi0yLjAgPj0g Mi4xMikgd2VyZSBub3QgbWV0OgotCi0kZ2xpYl9QS0dfRVJST1JTCi0KLUNvbnNpZGVyIGFkanVz dGluZyB0aGUgUEtHX0NPTkZJR19QQVRIIGVudmlyb25tZW50IHZhcmlhYmxlIGlmIHlvdQotaW5z dGFsbGVkIHNvZnR3YXJlIGluIGEgbm9uLXN0YW5kYXJkIHByZWZpeC4KLQotQWx0ZXJuYXRpdmVs eSwgeW91IG1heSBzZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBnbGliX0NGTEFHUwotYW5k IGdsaWJfTElCUyB0byBhdm9pZCB0aGUgbmVlZCB0byBjYWxsIHBrZy1jb25maWcuCi1TZWUgdGhl IHBrZy1jb25maWcgbWFuIHBhZ2UgZm9yIG1vcmUgZGV0YWlscy4iICIkTElORU5PIiA1Ci1lbGlm IHRlc3QgJHBrZ19mYWlsZWQgPSB1bnRyaWVkOyB0aGVuCi0gICAgIAl7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+ JjY7IH0KLQl7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6 IGluIFxgJGFjX3B3ZCc6IiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19w d2QnOiIgPiYyO30KLWFzX2ZuX2Vycm9yICQ/ICJUaGUgcGtnLWNvbmZpZyBzY3JpcHQgY291bGQg bm90IGJlIGZvdW5kIG9yIGlzIHRvbyBvbGQuICBNYWtlIHN1cmUgaXQKLWlzIGluIHlvdXIgUEFU SCBvciBzZXQgdGhlIFBLR19DT05GSUcgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gdGhlIGZ1bGwK LXBhdGggdG8gcGtnLWNvbmZpZy4KLQotQWx0ZXJuYXRpdmVseSwgeW91IG1heSBzZXQgdGhlIGVu dmlyb25tZW50IHZhcmlhYmxlcyBnbGliX0NGTEFHUwotYW5kIGdsaWJfTElCUyB0byBhdm9pZCB0 aGUgbmVlZCB0byBjYWxsIHBrZy1jb25maWcuCi1TZWUgdGhlIHBrZy1jb25maWcgbWFuIHBhZ2Ug Zm9yIG1vcmUgZGV0YWlscy4KLQotVG8gZ2V0IHBrZy1jb25maWcsIHNlZSA8aHR0cDovL3BrZy1j b25maWcuZnJlZWRlc2t0b3Aub3JnLz4uCi1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRh aWxzIiAiJExJTkVOTyIgNTsgfQotZWxzZQotCWdsaWJfQ0ZMQUdTPSRwa2dfY3ZfZ2xpYl9DRkxB R1MKLQlnbGliX0xJQlM9JHBrZ19jdl9nbGliX0xJQlMKLSAgICAgICAgeyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1Ci0kYXNfZWNobyAieWVz IiA+JjY7IH0KLQotZmkKLQotcGtnX2ZhaWxlZD1ubwoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgcGl4bWFuIiA+JjUKLSRhc19lY2hvX24gImNo ZWNraW5nIGZvciBwaXhtYW4uLi4gIiA+JjY7IH0KLQotaWYgdGVzdCAtbiAiJHBpeG1hbl9DRkxB R1MiOyB0aGVuCi0gICAgcGtnX2N2X3BpeG1hbl9DRkxBR1M9IiRwaXhtYW5fQ0ZMQUdTIgotIGVs aWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCi0gICAgaWYgdGVzdCAtbiAiJFBLR19DT05G SUciICYmIFwKLSAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog XCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwicGl4bWFuLTEgPj0gMC4yMS44 XCIiOyB9ID4mNQotICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgInBpeG1h bi0xID49IDAuMjEuOCIpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICB0ZXN0ICRhY19z dGF0dXMgPSAwOyB9OyB0aGVuCi0gIHBrZ19jdl9waXhtYW5fQ0ZMQUdTPWAkUEtHX0NPTkZJRyAt LWNmbGFncyAicGl4bWFuLTEgPj0gMC4yMS44IiAyPi9kZXYvbnVsbGAKLQkJICAgICAgdGVzdCAi eCQ/IiAhPSAieDAiICYmIHBrZ19mYWlsZWQ9eWVzCi1lbHNlCi0gIHBrZ19mYWlsZWQ9eWVzCi1m aQotIGVsc2UKLSAgICBwa2dfZmFpbGVkPXVudHJpZWQKLWZpCi1pZiB0ZXN0IC1uICIkcGl4bWFu X0xJQlMiOyB0aGVuCi0gICAgcGtnX2N2X3BpeG1hbl9MSUJTPSIkcGl4bWFuX0xJQlMiCi0gZWxp ZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KLSAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJ RyIgJiYgXAotICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBc JFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJwaXhtYW4tMSA+PSAwLjIxLjhc IiI7IH0gPiY1Ci0gICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAicGl4bWFu LTEgPj0gMC4yMS44IikgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIHRlc3QgJGFjX3N0 YXR1cyA9IDA7IH07IHRoZW4KLSAgcGtnX2N2X3BpeG1hbl9MSUJTPWAkUEtHX0NPTkZJRyAtLWxp YnMgInBpeG1hbi0xID49IDAuMjEuOCIgMj4vZGV2L251bGxgCi0JCSAgICAgIHRlc3QgIngkPyIg IT0gIngwIiAmJiBwa2dfZmFpbGVkPXllcwotZWxzZQotICBwa2dfZmFpbGVkPXllcwotZmkKLSBl bHNlCi0gICAgcGtnX2ZhaWxlZD11bnRyaWVkCi1maQotCi0KLQotaWYgdGVzdCAkcGtnX2ZhaWxl ZCA9IHllczsgdGhlbgotICAgCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQotCi1pZiAkUEtHX0NPTkZJ RyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gMC4yMDsgdGhlbgotICAgICAgICBfcGtnX3No b3J0X2Vycm9yc19zdXBwb3J0ZWQ9eWVzCi1lbHNlCi0gICAgICAgIF9wa2dfc2hvcnRfZXJyb3Jz X3N1cHBvcnRlZD1ubwotZmkKLSAgICAgICAgaWYgdGVzdCAkX3BrZ19zaG9ydF9lcnJvcnNfc3Vw cG9ydGVkID0geWVzOyB0aGVuCi0JICAgICAgICBwaXhtYW5fUEtHX0VSUk9SUz1gJFBLR19DT05G SUcgLS1zaG9ydC1lcnJvcnMgLS1wcmludC1lcnJvcnMgLS1jZmxhZ3MgLS1saWJzICJwaXhtYW4t MSA+PSAwLjIxLjgiIDI+JjFgCi0gICAgICAgIGVsc2UKLQkgICAgICAgIHBpeG1hbl9QS0dfRVJS T1JTPWAkUEtHX0NPTkZJRyAtLXByaW50LWVycm9ycyAtLWNmbGFncyAtLWxpYnMgInBpeG1hbi0x ID49IDAuMjEuOCIgMj4mMWAKLSAgICAgICAgZmkKLQkjIFB1dCB0aGUgbmFzdHkgZXJyb3IgbWVz c2FnZSBpbiBjb25maWcubG9nIHdoZXJlIGl0IGJlbG9uZ3MKLQllY2hvICIkcGl4bWFuX1BLR19F UlJPUlMiID4mNQotCi0JYXNfZm5fZXJyb3IgJD8gIlBhY2thZ2UgcmVxdWlyZW1lbnRzIChwaXht YW4tMSA+PSAwLjIxLjgpIHdlcmUgbm90IG1ldDoKLQotJHBpeG1hbl9QS0dfRVJST1JTCi0KLUNv bnNpZGVyIGFkanVzdGluZyB0aGUgUEtHX0NPTkZJR19QQVRIIGVudmlyb25tZW50IHZhcmlhYmxl IGlmIHlvdQotaW5zdGFsbGVkIHNvZnR3YXJlIGluIGEgbm9uLXN0YW5kYXJkIHByZWZpeC4KLQot QWx0ZXJuYXRpdmVseSwgeW91IG1heSBzZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBwaXht YW5fQ0ZMQUdTCi1hbmQgcGl4bWFuX0xJQlMgdG8gYXZvaWQgdGhlIG5lZWQgdG8gY2FsbCBwa2ct Y29uZmlnLgotU2VlIHRoZSBwa2ctY29uZmlnIG1hbiBwYWdlIGZvciBtb3JlIGRldGFpbHMuIiAi JExJTkVOTyIgNQotZWxpZiB0ZXN0ICRwa2dfZmFpbGVkID0gdW50cmllZDsgdGhlbgotICAgICAJ eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUK LSRhc19lY2hvICJubyIgPiY2OyB9Ci0JeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiBl cnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Ci1hc19mbl9lcnJvciAkPyAiVGhlIHBrZy1jb25m aWcgc2NyaXB0IGNvdWxkIG5vdCBiZSBmb3VuZCBvciBpcyB0b28gb2xkLiAgTWFrZSBzdXJlIGl0 Ci1pcyBpbiB5b3VyIFBBVEggb3Igc2V0IHRoZSBQS0dfQ09ORklHIGVudmlyb25tZW50IHZhcmlh YmxlIHRvIHRoZSBmdWxsCi1wYXRoIHRvIHBrZy1jb25maWcuCi0KLUFsdGVybmF0aXZlbHksIHlv dSBtYXkgc2V0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgcGl4bWFuX0NGTEFHUwotYW5kIHBp eG1hbl9MSUJTIHRvIGF2b2lkIHRoZSBuZWVkIHRvIGNhbGwgcGtnLWNvbmZpZy4KLVNlZSB0aGUg cGtnLWNvbmZpZyBtYW4gcGFnZSBmb3IgbW9yZSBkZXRhaWxzLgotCi1UbyBnZXQgcGtnLWNvbmZp Zywgc2VlIDxodHRwOi8vcGtnLWNvbmZpZy5mcmVlZGVza3RvcC5vcmcvPi4KLVNlZSBcYGNvbmZp Zy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9Ci1lbHNlCi0JcGl4bWFuX0NG TEFHUz0kcGtnX2N2X3BpeG1hbl9DRkxBR1MKLQlwaXhtYW5fTElCUz0kcGtnX2N2X3BpeG1hbl9M SUJTCi0gICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz dWx0OiB5ZXMiID4mNQotJGFzX2VjaG8gInllcyIgPiY2OyB9Ci0KLWZpCi0KLWZpCi0KLSMgRXh0 cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAid2dldCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFt ZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgd2dldDsgYWNfd29yZD0kMgoteyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotJGFz X2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3Bh dGhfV0dFVCs6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1l bHNlCi0gIGNhc2UgJFdHRVQgaW4KLSAgW1xcL10qIHwgPzpbXFwvXSopCi0gIGFjX2N2X3BhdGhf V0dFVD0iJFdHRVQiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRo LgotICA7OwotICAqKQotICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi1m b3IgYXNfZGlyIGluICRQQVRICi1kbwotICBJRlM9JGFzX3NhdmVfSUZTCi0gIHRlc3QgLXogIiRh c19kaXIiICYmIGFzX2Rpcj0uCi0gICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRh YmxlX2V4dGVuc2lvbnM7IGRvCi0gIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNf d29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSAgICBhY19jdl9wYXRoX1dHRVQ9IiRhc19kaXIvJGFj X3dvcmQkYWNfZXhlY19leHQiCi0gICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgYnJlYWsg MgotICBmaQotZG9uZQotICBkb25lCi1JRlM9JGFzX3NhdmVfSUZTCi0KLSAgdGVzdCAteiAiJGFj X2N2X3BhdGhfV0dFVCIgJiYgYWNfY3ZfcGF0aF9XR0VUPSJubyIKLSAgOzsKLWVzYWMKLWZpCi1X R0VUPSRhY19jdl9wYXRoX1dHRVQKLWlmIHRlc3QgLW4gIiRXR0VUIjsgdGhlbgotICB7ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFdHRVQiID4mNQotJGFz X2VjaG8gIiRXR0VUIiA+JjY7IH0KLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci1maQot Ci0KLSMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZmFsc2UiLCBzbyBpdCBjYW4gYmUgYSBw cm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1bW15IGZhbHNlOyBhY193b3JkPSQyCi17ICRh c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29y ZCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlm ICR7YWNfY3ZfcGF0aF9GQUxTRSs6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNo ZWQpICIgPiY2Ci1lbHNlCi0gIGNhc2UgJEZBTFNFIGluCi0gIFtcXC9dKiB8ID86W1xcL10qKQot ICBhY19jdl9wYXRoX0ZBTFNFPSIkRkFMU0UiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0 ZXN0IHdpdGggYSBwYXRoLgotICA7OwotICAqKQotICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBB VEhfU0VQQVJBVE9SCi1mb3IgYXNfZGlyIGluICRQQVRICi1kbwotICBJRlM9JGFzX3NhdmVfSUZT Ci0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgZm9yIGFjX2V4ZWNfZXh0IGlu ICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gIGlmIGFzX2ZuX2V4ZWN1dGFibGVf cCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSAgICBhY19jdl9wYXRoX0ZB TFNFPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgotICAgICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQi ID4mNQotICAgIGJyZWFrIDIKLSAgZmkKLWRvbmUKLSAgZG9uZQotSUZTPSRhc19zYXZlX0lGUwot Ci0gIHRlc3QgLXogIiRhY19jdl9wYXRoX0ZBTFNFIiAmJiBhY19jdl9wYXRoX0ZBTFNFPSIvYmlu L2ZhbHNlIgotICA7OwotZXNhYwotZmkKLUZBTFNFPSRhY19jdl9wYXRoX0ZBTFNFCi1pZiB0ZXN0 IC1uICIkRkFMU0UiOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogcmVzdWx0OiAkRkFMU0UiID4mNQotJGFzX2VjaG8gIiRGQUxTRSIgPiY2OyB9Ci1lbHNl Ci0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIg PiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQotZmkKLQotCi1pZiB0ZXN0IHgiJFdHRVQiICE9IHgi bm8iOyB0aGVuIDoKLQotICAgIEZFVENIRVI9IiRXR0VUIC1jIC1PIgotCi1lbHNlCi0KLSAgICAj IEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImZ0cCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0g bmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgZnRwOyBhY193b3JkPSQyCi17ICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0k YXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3Zf cGF0aF9GVFArOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgot ZWxzZQotICBjYXNlICRGVFAgaW4KLSAgW1xcL10qIHwgPzpbXFwvXSopCi0gIGFjX2N2X3BhdGhf RlRQPSIkRlRQIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4K LSAgOzsKLSAgKikKLSAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotZm9y IGFzX2RpciBpbiAkUEFUSAotZG8KLSAgSUZTPSRhc19zYXZlX0lGUwotICB0ZXN0IC16ICIkYXNf ZGlyIiAmJiBhc19kaXI9LgotICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJs ZV9leHRlbnNpb25zOyBkbwotICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dv cmQkYWNfZXhlY19leHQiOyB0aGVuCi0gICAgYWNfY3ZfcGF0aF9GVFA9IiRhc19kaXIvJGFjX3dv cmQkYWNfZXhlY19leHQiCi0gICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgYnJlYWsgMgot ICBmaQotZG9uZQotICBkb25lCi1JRlM9JGFzX3NhdmVfSUZTCi0KLSAgdGVzdCAteiAiJGFjX2N2 X3BhdGhfRlRQIiAmJiBhY19jdl9wYXRoX0ZUUD0ibm8iCi0gIDs7Ci1lc2FjCi1maQotRlRQPSRh Y19jdl9wYXRoX0ZUUAotaWYgdGVzdCAtbiAiJEZUUCI7IHRoZW4KLSAgeyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRGVFAiID4mNQotJGFzX2VjaG8gIiRG VFAiID4mNjsgfQotZWxzZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLWZpCi0KLQotICAgIGlm IHRlc3QgeCIkRlRQIiAhPSB4Im5vIjsgdGhlbiA6Ci0KLSAgICAgICAgRkVUQ0hFUj0iJEZUUCAt byIKLQotZWxzZQotCi0gICAgICAgIEZFVENIRVI9IiRGQUxTRSIKLSAgICAgICAgeyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBjYW5ub3QgZmluZCB3Z2V0 IG9yIGZ0cCIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBjYW5ub3QgZmluZCB3Z2V0 IG9yIGZ0cCIgPiYyO30KLQotZmkKLQotZmkKLQotCi0KLSMgQ2hlY2tzIGZvciBsaWJyYXJpZXMu Ci1hY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAiYnpsaWIuaCIgImFjX2N2 X2hlYWRlcl9iemxpYl9oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCi1pZiB0ZXN0ICJ4JGFjX2N2 X2hlYWRlcl9iemxpYl9oIiA9IHh5ZXM7IHRoZW4gOgotCi17ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBCWjJfYnpEZWNvbXByZXNzSW5pdCBpbiAt bGJ6MiIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgQloyX2J6RGVjb21wcmVzc0luaXQg aW4gLWxiejIuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfbGliX2J6Ml9CWjJfYnpEZWNvbXByZXNz SW5pdCs6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNl Ci0gIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKLUxJQlM9Ii1sYnoyICAkTElCUyIKLWNh dCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVm cy5oLiAgKi8KLQotLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZv aWQgYW4gZXJyb3IuCi0gICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0 dXJuIHR5cGUgb2YgYSBHQ0MKLSAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3Rv dHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAi QyIKLSNlbmRpZgotY2hhciBCWjJfYnpEZWNvbXByZXNzSW5pdCAoKTsKLWludAotbWFpbiAoKQot ewotcmV0dXJuIEJaMl9iekRlY29tcHJlc3NJbml0ICgpOwotICA7Ci0gIHJldHVybiAwOwotfQot X0FDRU9GCi1pZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gIGFjX2N2X2xp Yl9iejJfQloyX2J6RGVjb21wcmVzc0luaXQ9eWVzCi1lbHNlCi0gIGFjX2N2X2xpYl9iejJfQloy X2J6RGVjb21wcmVzc0luaXQ9bm8KLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVz dC4kYWNfb2JqZXh0IFwKLSAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAot TElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUwotZmkKLXsgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX2J6Ml9CWjJfYnpEZWNvbXByZXNz SW5pdCIgPiY1Ci0kYXNfZWNobyAiJGFjX2N2X2xpYl9iejJfQloyX2J6RGVjb21wcmVzc0luaXQi ID4mNjsgfQotaWYgdGVzdCAieCRhY19jdl9saWJfYnoyX0JaMl9iekRlY29tcHJlc3NJbml0IiA9 IHh5ZXM7IHRoZW4gOgotICB6bGliPSIkemxpYiAtREhBVkVfQlpMSUIgLWxiejIiCi1maQotCi0K LWZpCi0KLQotYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgImx6bWEuaCIg ImFjX2N2X2hlYWRlcl9sem1hX2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKLWlmIHRlc3QgIngk YWNfY3ZfaGVhZGVyX2x6bWFfaCIgPSB4eWVzOyB0aGVuIDoKLQoteyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgbHptYV9zdHJlYW1fZGVjb2RlciBp biAtbGx6bWEiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGx6bWFfc3RyZWFtX2RlY29k ZXIgaW4gLWxsem1hLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X2xpYl9sem1hX2x6bWFfc3RyZWFt X2RlY29kZXIrOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgot ZWxzZQotICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCi1MSUJTPSItbGx6bWEgICRMSUJT IgotY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNv bmZkZWZzLmguICAqLwotCi0vKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0 byBhdm9pZCBhbiBlcnJvci4KLSAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRo ZSByZXR1cm4gdHlwZSBvZiBhIEdDQwotICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQg cHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0 ZXJuICJDIgotI2VuZGlmCi1jaGFyIGx6bWFfc3RyZWFtX2RlY29kZXIgKCk7Ci1pbnQKLW1haW4g KCkKLXsKLXJldHVybiBsem1hX3N0cmVhbV9kZWNvZGVyICgpOwotICA7Ci0gIHJldHVybiAwOwot fQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gIGFjX2N2 X2xpYl9sem1hX2x6bWFfc3RyZWFtX2RlY29kZXI9eWVzCi1lbHNlCi0gIGFjX2N2X2xpYl9sem1h X2x6bWFfc3RyZWFtX2RlY29kZXI9bm8KLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25m dGVzdC4kYWNfb2JqZXh0IFwKLSAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4 dAotTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUwotZmkKLXsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX2x6bWFfbHptYV9zdHJlYW1f ZGVjb2RlciIgPiY1Ci0kYXNfZWNobyAiJGFjX2N2X2xpYl9sem1hX2x6bWFfc3RyZWFtX2RlY29k ZXIiID4mNjsgfQotaWYgdGVzdCAieCRhY19jdl9saWJfbHptYV9sem1hX3N0cmVhbV9kZWNvZGVy IiA9IHh5ZXM7IHRoZW4gOgotICB6bGliPSIkemxpYiAtREhBVkVfTFpNQSAtbGx6bWEiCi1maQot Ci0KLWZpCi0KLQotYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgImx6by9s em8xeC5oIiAiYWNfY3ZfaGVhZGVyX2x6b19sem8xeF9oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQi Ci1pZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9sem9fbHpvMXhfaCIgPSB4eWVzOyB0aGVuIDoKLQot eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgbHpv MXhfZGVjb21wcmVzcyBpbiAtbGx6bzIiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGx6 bzF4X2RlY29tcHJlc3MgaW4gLWxsem8yLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X2xpYl9sem8y X2x6bzF4X2RlY29tcHJlc3MrOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVk KSAiID4mNgotZWxzZQotICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCi1MSUJTPSItbGx6 bzIgICRMSUJTIgotY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAot LyogZW5kIGNvbmZkZWZzLmguICAqLwotCi0vKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHBy b3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KLSAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0 IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQwotICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMg YXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KLSNpZmRlZiBfX2NwbHVz cGx1cwotZXh0ZXJuICJDIgotI2VuZGlmCi1jaGFyIGx6bzF4X2RlY29tcHJlc3MgKCk7Ci1pbnQK LW1haW4gKCkKLXsKLXJldHVybiBsem8xeF9kZWNvbXByZXNzICgpOwotICA7Ci0gIHJldHVybiAw OwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gIGFj X2N2X2xpYl9sem8yX2x6bzF4X2RlY29tcHJlc3M9eWVzCi1lbHNlCi0gIGFjX2N2X2xpYl9sem8y X2x6bzF4X2RlY29tcHJlc3M9bm8KLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVz dC4kYWNfb2JqZXh0IFwKLSAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAot TElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUwotZmkKLXsgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX2x6bzJfbHpvMXhfZGVjb21wcmVz cyIgPiY1Ci0kYXNfZWNobyAiJGFjX2N2X2xpYl9sem8yX2x6bzF4X2RlY29tcHJlc3MiID4mNjsg fQotaWYgdGVzdCAieCRhY19jdl9saWJfbHpvMl9sem8xeF9kZWNvbXByZXNzIiA9IHh5ZXM7IHRo ZW4gOgotICB6bGliPSIkemxpYiAtREhBVkVfTFpPMVggLWxsem8yIgotZmkKLQotCi1maQotCi0K LQotaWYgdGVzdCAieCRlbmFibGVfYmxrdGFwMiIgPSAieHllcyI7IHRoZW4gOgotCi17ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBpb19zZXR1cCBp biAtbGFpbyIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgaW9fc2V0dXAgaW4gLWxhaW8u Li4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfbGliX2Fpb19pb19zZXR1cCs6fSBmYWxzZTsgdGhlbiA6 Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGFjX2NoZWNrX2xpYl9zYXZl X0xJQlM9JExJQlMKLUxJQlM9Ii1sYWlvICAkTElCUyIKLWNhdCBjb25mZGVmcy5oIC0gPDxfQUNF T0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQotLyogT3ZlcnJp ZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCi0gICBVc2Ug Y2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKLSAg IGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBs eS4gICovCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIKLSNlbmRpZgotY2hhciBpb19z ZXR1cCAoKTsKLWludAotbWFpbiAoKQotewotcmV0dXJuIGlvX3NldHVwICgpOwotICA7Ci0gIHJl dHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6 Ci0gIGFjX2N2X2xpYl9haW9faW9fc2V0dXA9eWVzCi1lbHNlCi0gIGFjX2N2X2xpYl9haW9faW9f c2V0dXA9bm8KLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0 IFwKLSAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotTElCUz0kYWNfY2hl Y2tfbGliX3NhdmVfTElCUwotZmkKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX2Fpb19pb19zZXR1cCIgPiY1Ci0kYXNfZWNobyAiJGFj X2N2X2xpYl9haW9faW9fc2V0dXAiID4mNjsgfQotaWYgdGVzdCAieCRhY19jdl9saWJfYWlvX2lv X3NldHVwIiA9IHh5ZXM7IHRoZW4gOgotICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0jZGVm aW5lIEhBVkVfTElCQUlPIDEKLV9BQ0VPRgotCi0gIExJQlM9Ii1sYWlvICRMSUJTIgotCi1lbHNl Ci0gIGFzX2ZuX2Vycm9yICQ/ICJDb3VsZCBub3QgZmluZCBsaWJhaW8iICIkTElORU5PIiA1Ci1m aQotCi0KLWZpCi0KLQotYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgImV4 dDJmcy9leHQyZnMuaCIgImFjX2N2X2hlYWRlcl9leHQyZnNfZXh0MmZzX2giICIkYWNfaW5jbHVk ZXNfZGVmYXVsdCIKLWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX2V4dDJmc19leHQyZnNfaCIgPSB4 eWVzOyB0aGVuIDoKLQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj aGVja2luZyBmb3IgZXh0MmZzX29wZW4yIGluIC1sZXh0MmZzIiA+JjUKLSRhc19lY2hvX24gImNo ZWNraW5nIGZvciBleHQyZnNfb3BlbjIgaW4gLWxleHQyZnMuLi4gIiA+JjY7IH0KLWlmICR7YWNf Y3ZfbGliX2V4dDJmc19leHQyZnNfb3BlbjIrOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19u ICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCi1M SUJTPSItbGV4dDJmcyAgJExJQlMiCi1jYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVz dC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLS8qIE92ZXJyaWRlIGFueSBHQ0Mg aW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgotICAgVXNlIGNoYXIgYmVjYXVz ZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCi0gICBidWlsdGluIGFu ZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwotI2lm ZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiCi0jZW5kaWYKLWNoYXIgZXh0MmZzX29wZW4yICgp OwotaW50Ci1tYWluICgpCi17Ci1yZXR1cm4gZXh0MmZzX29wZW4yICgpOwotICA7Ci0gIHJldHVy biAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0g IGFjX2N2X2xpYl9leHQyZnNfZXh0MmZzX29wZW4yPXllcwotZWxzZQotICBhY19jdl9saWJfZXh0 MmZzX2V4dDJmc19vcGVuMj1ubwotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0 LiRhY19vYmpleHQgXAotICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci1M SUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCi1maQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfZXh0MmZzX2V4dDJmc19vcGVuMiIg PiY1Ci0kYXNfZWNobyAiJGFjX2N2X2xpYl9leHQyZnNfZXh0MmZzX29wZW4yIiA+JjY7IH0KLWlm IHRlc3QgIngkYWNfY3ZfbGliX2V4dDJmc19leHQyZnNfb3BlbjIiID0geHllczsgdGhlbiA6Ci0K LQotJGFzX2VjaG8gIiNkZWZpbmUgSU5DTFVERV9FWFRGU19IIDxleHQyZnMvZXh0MmZzLmg+IiA+ PmNvbmZkZWZzLmgKLQotICAgIEVYVEZTX0xJQlM9Ii1sZXh0MmZzIgotCi1maQotCi0KLWZpCi0K LQotYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgImV4dDRmcy9leHQyZnMu aCIgImFjX2N2X2hlYWRlcl9leHQ0ZnNfZXh0MmZzX2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIK LWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX2V4dDRmc19leHQyZnNfaCIgPSB4eWVzOyB0aGVuIDoK LQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Ig ZXh0MmZzX29wZW4yIGluIC1sZXh0NGZzIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciBl eHQyZnNfb3BlbjIgaW4gLWxleHQ0ZnMuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfbGliX2V4dDRm c19leHQyZnNfb3BlbjIrOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAi ID4mNgotZWxzZQotICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCi1MSUJTPSItbGV4dDRm cyAgJExJQlMiCi1jYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0v KiBlbmQgY29uZmRlZnMuaC4gICovCi0KLS8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJv dG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgotICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQg bWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCi0gICBidWlsdGluIGFuZCB0aGVuIGl0cyBh cmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwotI2lmZGVmIF9fY3BsdXNw bHVzCi1leHRlcm4gIkMiCi0jZW5kaWYKLWNoYXIgZXh0MmZzX29wZW4yICgpOwotaW50Ci1tYWlu ICgpCi17Ci1yZXR1cm4gZXh0MmZzX29wZW4yICgpOwotICA7Ci0gIHJldHVybiAwOwotfQotX0FD RU9GCi1pZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gIGFjX2N2X2xpYl9l eHQ0ZnNfZXh0MmZzX29wZW4yPXllcwotZWxzZQotICBhY19jdl9saWJfZXh0NGZzX2V4dDJmc19v cGVuMj1ubwotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQg XAotICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci1MSUJTPSRhY19jaGVj a19saWJfc2F2ZV9MSUJTCi1maQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiByZXN1bHQ6ICRhY19jdl9saWJfZXh0NGZzX2V4dDJmc19vcGVuMiIgPiY1Ci0kYXNfZWNo byAiJGFjX2N2X2xpYl9leHQ0ZnNfZXh0MmZzX29wZW4yIiA+JjY7IH0KLWlmIHRlc3QgIngkYWNf Y3ZfbGliX2V4dDRmc19leHQyZnNfb3BlbjIiID0geHllczsgdGhlbiA6Ci0KLQotJGFzX2VjaG8g IiNkZWZpbmUgSU5DTFVERV9FWFRGU19IIDxleHQ0ZnMvZXh0MmZzLmg+IiA+PmNvbmZkZWZzLmgK LQotICAgIEVYVEZTX0xJQlM9Ii1sZXh0NGZzIgotCi1maQotCi0KLWZpCi0KLQotCi0KLQotICAg IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHB0 aHJlYWQgZmxhZyIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgcHRocmVhZCBmbGFnLi4u ICIgPiY2OyB9Ci1pZiAke2F4X2N2X3B0aHJlYWRfZmxhZ3MrOn0gZmFsc2U7IHRoZW4gOgotICAk YXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotCi0gICAgICAgIGF4X2N2X3B0aHJlYWRf ZmxhZ3M9LXB0aHJlYWQKLQotICAgIFBUSFJFQURfQ0ZMQUdTPSIkYXhfY3ZfcHRocmVhZF9mbGFn cyIKLSAgICBQVEhSRUFEX0xERkxBR1M9IiRheF9jdl9wdGhyZWFkX2ZsYWdzIgotICAgIFBUSFJF QURfTElCUz0iIgotCi0KLSAgICBzYXZlZF9DRkxBR1M9IiRDRkxBR1MiCi0KLSAgICBzYXZlZF9M REZMQUdTPSIkTERGTEFHUyIKLQotICAgIHNhdmVkX0xJQlM9IiRMSUJTIgotCi0KLSAgICBDRkxB R1M9IiRDRkxBR1MgJFBUSFJFQURfQ0ZMQUdTIgotCi0gICAgTERGTEFHUz0iJExERkxBR1MgJFBU SFJFQURfTERGTEFHUyIKLQotICAgIExJQlM9IiRMSUJTICRQVEhSRUFEX0xJQlMiCi0KLSAgICAg ICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNv bmZkZWZzLmguICAqLwotCi0jaW5jbHVkZSA8cHRocmVhZC5oPgotaW50IG1haW4odm9pZCkgewot ICBwdGhyZWFkX2F0Zm9yaygwLDAsMCk7Ci0gIHB0aHJlYWRfY3JlYXRlKDAsMCwwLDApOwotfQot Ci1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLQotZWxzZQot ICBheF9jdl9wdGhyZWFkX2ZsYWdzPWZhaWxlZAotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJy IGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4k YWNfZXh0Ci0KLSAgICBDRkxBR1M9IiRzYXZlZF9DRkxBR1MiCi0KLSAgICBMREZMQUdTPSIkc2F2 ZWRfTERGTEFHUyIKLQotICAgIExJQlM9IiRzYXZlZF9MSUJTIgotCi0KLWZpCi17ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGF4X2N2X3B0aHJlYWRfZmxh Z3MiID4mNQotJGFzX2VjaG8gIiRheF9jdl9wdGhyZWFkX2ZsYWdzIiA+JjY7IH0KLSAgICBpZiB0 ZXN0ICJ4JGF4X2N2X3B0aHJlYWRfZmxhZ3MiID0geGZhaWxlZDsgdGhlbgotICAgICAgICBhc19m bl9lcnJvciAkPyAiLXB0aHJlYWQgZG9lcyBub3Qgd29yayIgIiRMSU5FTk8iIDUKLSAgICBmaQot Ci0gICAgUFRIUkVBRF9DRkxBR1M9IiRheF9jdl9wdGhyZWFkX2ZsYWdzIgotICAgIFBUSFJFQURf TERGTEFHUz0iJGF4X2N2X3B0aHJlYWRfZmxhZ3MiCi0gICAgUFRIUkVBRF9MSUJTPSIiCi0KLQot Ci0KLQotICAgIHNhdmVkX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCi0KLSAgICBDUFBGTEFHUz0iJENQ UEZMQUdTIC1XZXJyb3IiCi0gICAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVO TyIgImxpYnV0aWwuaCIgImFjX2N2X2hlYWRlcl9saWJ1dGlsX2giICIkYWNfaW5jbHVkZXNfZGVm YXVsdCIKLWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX2xpYnV0aWxfaCIgPSB4eWVzOyB0aGVuIDoK LQotCi0kYXNfZWNobyAiI2RlZmluZSBJTkNMVURFX0xJQlVUSUxfSCA8bGlidXRpbC5oPiIgPj5j b25mZGVmcy5oCi0KLQotZmkKLQotCi0KLSAgICBDUFBGTEFHUz0iJHNhdmVkX0NQUEZMQUdTIgot Ci0gICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBm b3Igb3BlbnB0eSBldCBhbCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3Igb3BlbnB0eSBl dCBhbC4uLiAiID4mNjsgfQotaWYgJHtheF9jdl9wdHlmdW5jc19saWJzKzp9IGZhbHNlOyB0aGVu IDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLQotICAgICAgICBmb3IgYXhf Y3ZfcHR5ZnVuY3NfbGlicyBpbiAtbHV0aWwgIiIgTk9UX0ZPVU5EOyBkbwotICAgICAgICAgICAg aWYgdGVzdCAieCRheF9jdl9wdHlmdW5jc19saWJzIiA9ICJ4Tk9UX0ZPVU5EIjsgdGhlbgotICAg ICAgICAgICAgICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBl cnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQotJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxg JGFjX3B3ZCc6IiA+JjI7fQotYXNfZm5fZXJyb3IgJD8gIlVuYWJsZSB0byBmaW5kIGxpYnJhcnkg Zm9yIG9wZW5wdHkgYW5kIGxvZ2luX3R0eQotU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0 YWlscyIgIiRMSU5FTk8iIDU7IH0KLSAgICAgICAgICAgIGZpCi0KLSAgICBzYXZlZF9MSUJTPSIk TElCUyIKLQotICAgICAgICAgICAgTElCUz0iJExJQlMgJGF4X2N2X3B0eWZ1bmNzX2xpYnMiCi0g ICAgICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0v KiBlbmQgY29uZmRlZnMuaC4gICovCi0KLSNpZmRlZiBJTkNMVURFX0xJQlVUSUxfSAotI2luY2x1 ZGUgSU5DTFVERV9MSUJVVElMX0gKLSNlbmRpZgotaW50IG1haW4odm9pZCkgewotICBvcGVucHR5 KDAsMCwwLDAsMCk7Ci0gIGxvZ2luX3R0eSgwKTsKLX0KLQotX0FDRU9GCi1pZiBhY19mbl9jX3Ry eV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0KLSAgICAgICAgICAgICAgICBicmVhawotCi1maQot cm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgY29uZnRl c3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLQotICAgIExJQlM9IiRzYXZlZF9MSUJTIgot Ci0gICAgICAgIGRvbmUKLQotZmkKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogcmVzdWx0OiAkYXhfY3ZfcHR5ZnVuY3NfbGlicyIgPiY1Ci0kYXNfZWNobyAiJGF4X2N2 X3B0eWZ1bmNzX2xpYnMiID4mNjsgfQotICAgIFBUWUZVTkNTX0xJQlM9IiRheF9jdl9wdHlmdW5j c19saWJzIgotCi0KLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hl Y2tpbmcgZm9yIHlhamxfYWxsb2MgaW4gLWx5YWpsIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5n IGZvciB5YWpsX2FsbG9jIGluIC1seWFqbC4uLiAiID4mNjsgfQotaWYgJHthY19jdl9saWJfeWFq bF95YWpsX2FsbG9jKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+ JjYKLWVsc2UKLSAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUwotTElCUz0iLWx5YWpsICAk TElCUyIKLWNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVu ZCBjb25mZGVmcy5oLiAgKi8KLQotLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5 cGUgdG8gYXZvaWQgYW4gZXJyb3IuCi0gICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRj aCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKLSAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3Vt ZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCi0jaWZkZWYgX19jcGx1c3BsdXMK LWV4dGVybiAiQyIKLSNlbmRpZgotY2hhciB5YWpsX2FsbG9jICgpOwotaW50Ci1tYWluICgpCi17 Ci1yZXR1cm4geWFqbF9hbGxvYyAoKTsKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotaWYg YWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotICBhY19jdl9saWJfeWFqbF95YWps X2FsbG9jPXllcwotZWxzZQotICBhY19jdl9saWJfeWFqbF95YWpsX2FsbG9jPW5vCi1maQotcm0g LWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgY29uZnRlc3Qk YWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLUxJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMK LWZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFj X2N2X2xpYl95YWpsX3lhamxfYWxsb2MiID4mNQotJGFzX2VjaG8gIiRhY19jdl9saWJfeWFqbF95 YWpsX2FsbG9jIiA+JjY7IH0KLWlmIHRlc3QgIngkYWNfY3ZfbGliX3lhamxfeWFqbF9hbGxvYyIg PSB4eWVzOyB0aGVuIDoKLSAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSBIQVZF X0xJQllBSkwgMQotX0FDRU9GCi0KLSAgTElCUz0iLWx5YWpsICRMSUJTIgotCi1lbHNlCi0gIGFz X2ZuX2Vycm9yICQ/ICJDb3VsZCBub3QgZmluZCB5YWpsIiAiJExJTkVOTyIgNQotZmkKLQoteyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZGVmbGF0 ZUNvcHkgaW4gLWx6IiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciBkZWZsYXRlQ29weSBp biAtbHouLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfbGliX3pfZGVmbGF0ZUNvcHkrOn0gZmFsc2U7 IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBhY19jaGVja19s aWJfc2F2ZV9MSUJTPSRMSUJTCi1MSUJTPSItbHogICRMSUJTIgotY2F0IGNvbmZkZWZzLmggLSA8 PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotCi0vKiBP dmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KLSAg IFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdD QwotICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxs IGFwcGx5LiAgKi8KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIgotI2VuZGlmCi1jaGFy IGRlZmxhdGVDb3B5ICgpOwotaW50Ci1tYWluICgpCi17Ci1yZXR1cm4gZGVmbGF0ZUNvcHkgKCk7 Ci0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5F Tk8iOyB0aGVuIDoKLSAgYWNfY3ZfbGliX3pfZGVmbGF0ZUNvcHk9eWVzCi1lbHNlCi0gIGFjX2N2 X2xpYl96X2RlZmxhdGVDb3B5PW5vCi1maQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRl c3QuJGFjX29iamV4dCBcCi0gICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQK LUxJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKLWZpCi17ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl96X2RlZmxhdGVDb3B5IiA+JjUK LSRhc19lY2hvICIkYWNfY3ZfbGliX3pfZGVmbGF0ZUNvcHkiID4mNjsgfQotaWYgdGVzdCAieCRh Y19jdl9saWJfel9kZWZsYXRlQ29weSIgPSB4eWVzOyB0aGVuIDoKLSAgY2F0ID4+Y29uZmRlZnMu aCA8PF9BQ0VPRgotI2RlZmluZSBIQVZFX0xJQlogMQotX0FDRU9GCi0KLSAgTElCUz0iLWx6ICRM SUJTIgotCi1lbHNlCi0gIGFzX2ZuX2Vycm9yICQ/ICJDb3VsZCBub3QgZmluZCB6bGliIiAiJExJ TkVOTyIgNQotZmkKLQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj aGVja2luZyBmb3IgbGliaWNvbnZfb3BlbiBpbiAtbGljb252IiA+JjUKLSRhc19lY2hvX24gImNo ZWNraW5nIGZvciBsaWJpY29udl9vcGVuIGluIC1saWNvbnYuLi4gIiA+JjY7IH0KLWlmICR7YWNf Y3ZfbGliX2ljb252X2xpYmljb252X29wZW4rOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19u ICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCi1M SUJTPSItbGljb252ICAkTElCUyIKLWNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0 LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQotLyogT3ZlcnJpZGUgYW55IEdDQyBp bnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCi0gICBVc2UgY2hhciBiZWNhdXNl IGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKLSAgIGJ1aWx0aW4gYW5k IHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCi0jaWZk ZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIKLSNlbmRpZgotY2hhciBsaWJpY29udl9vcGVuICgp OwotaW50Ci1tYWluICgpCi17Ci1yZXR1cm4gbGliaWNvbnZfb3BlbiAoKTsKLSAgOwotICByZXR1 cm4gMDsKLX0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgot ICBhY19jdl9saWJfaWNvbnZfbGliaWNvbnZfb3Blbj15ZXMKLWVsc2UKLSAgYWNfY3ZfbGliX2lj b252X2xpYmljb252X29wZW49bm8KLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVz dC4kYWNfb2JqZXh0IFwKLSAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAot TElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUwotZmkKLXsgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX2ljb252X2xpYmljb252X29wZW4i ID4mNQotJGFzX2VjaG8gIiRhY19jdl9saWJfaWNvbnZfbGliaWNvbnZfb3BlbiIgPiY2OyB9Ci1p ZiB0ZXN0ICJ4JGFjX2N2X2xpYl9pY29udl9saWJpY29udl9vcGVuIiA9IHh5ZXM7IHRoZW4gOgot ICBsaWJpY29udj0ieSIKLWVsc2UKLSAgbGliaWNvbnY9Im4iCi1maQotCi0KLWFjX2ZuX2NfY2hl Y2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8iICJhcmdwLmgiICJhY19jdl9oZWFkZXJfYXJncF9o IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCi1pZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9hcmdwX2gi ID0geHllczsgdGhlbiA6Ci0KLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogY2hlY2tpbmcgZm9yIGFyZ3BfdXNhZ2UgaW4gLWxhcmdwIiA+JjUKLSRhc19lY2hvX24gImNo ZWNraW5nIGZvciBhcmdwX3VzYWdlIGluIC1sYXJncC4uLiAiID4mNjsgfQotaWYgJHthY19jdl9s aWJfYXJncF9hcmdwX3VzYWdlKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hl ZCkgIiA+JjYKLWVsc2UKLSAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUwotTElCUz0iLWxh cmdwICAkTElCUyIKLWNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQK LS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQotLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBw cm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCi0gICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdo dCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKLSAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRz IGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCi0jaWZkZWYgX19jcGx1 c3BsdXMKLWV4dGVybiAiQyIKLSNlbmRpZgotY2hhciBhcmdwX3VzYWdlICgpOwotaW50Ci1tYWlu ICgpCi17Ci1yZXR1cm4gYXJncF91c2FnZSAoKTsKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VP RgotaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotICBhY19jdl9saWJfYXJn cF9hcmdwX3VzYWdlPXllcwotZWxzZQotICBhY19jdl9saWJfYXJncF9hcmdwX3VzYWdlPW5vCi1m aQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgY29u ZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLUxJQlM9JGFjX2NoZWNrX2xpYl9zYXZl X0xJQlMKLWZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs dDogJGFjX2N2X2xpYl9hcmdwX2FyZ3BfdXNhZ2UiID4mNQotJGFzX2VjaG8gIiRhY19jdl9saWJf YXJncF9hcmdwX3VzYWdlIiA+JjY7IH0KLWlmIHRlc3QgIngkYWNfY3ZfbGliX2FyZ3BfYXJncF91 c2FnZSIgPSB4eWVzOyB0aGVuIDoKLSAgYXJncF9sZGZsYWdzPSItbGFyZ3AiCi1maQotCi0KLWVs c2UKLSAgYXNfZm5fZXJyb3IgJD8gIkNvdWxkIG5vdCBmaW5kIGFyZ3AiICIkTElORU5PIiA1Ci1m aQotCi0KLQotCi0jIEZEVCBpcyBuZWVkZWQgb25seSBvbiBBUk0KLWNhc2UgIiRob3N0X2NwdSIg aW4KLWFybSp8YWFyY2g2NCkKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogY2hlY2tpbmcgZm9yIGZkdF9jcmVhdGUgaW4gLWxmZHQiID4mNQotJGFzX2VjaG9fbiAiY2hl Y2tpbmcgZm9yIGZkdF9jcmVhdGUgaW4gLWxmZHQuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfbGli X2ZkdF9mZHRfY3JlYXRlKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkg IiA+JjYKLWVsc2UKLSAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUwotTElCUz0iLWxmZHQg ICRMSUJTIgotY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyog ZW5kIGNvbmZkZWZzLmguICAqLwotCi0vKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3Rv dHlwZSB0byBhdm9pZCBhbiBlcnJvci4KLSAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1h dGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQwotICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJn dW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KLSNpZmRlZiBfX2NwbHVzcGx1 cwotZXh0ZXJuICJDIgotI2VuZGlmCi1jaGFyIGZkdF9jcmVhdGUgKCk7Ci1pbnQKLW1haW4gKCkK LXsKLXJldHVybiBmZHRfY3JlYXRlICgpOwotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1p ZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gIGFjX2N2X2xpYl9mZHRfZmR0 X2NyZWF0ZT15ZXMKLWVsc2UKLSAgYWNfY3ZfbGliX2ZkdF9mZHRfY3JlYXRlPW5vCi1maQotcm0g LWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgY29uZnRlc3Qk YWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLUxJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMK LWZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFj X2N2X2xpYl9mZHRfZmR0X2NyZWF0ZSIgPiY1Ci0kYXNfZWNobyAiJGFjX2N2X2xpYl9mZHRfZmR0 X2NyZWF0ZSIgPiY2OyB9Ci1pZiB0ZXN0ICJ4JGFjX2N2X2xpYl9mZHRfZmR0X2NyZWF0ZSIgPSB4 eWVzOyB0aGVuIDoKLSAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSBIQVZFX0xJ QkZEVCAxCi1fQUNFT0YKLQotICBMSUJTPSItbGZkdCAkTElCUyIKLQotZWxzZQotICBhc19mbl9l cnJvciAkPyAiQ291bGQgbm90IGZpbmQgbGliZmR0IiAiJExJTkVOTyIgNQotZmkKLQotCi0jIENo ZWNrIGZvciBsaWJmZHQgPj0gMS40LjAuIElmIHByZXNlbnQgZW5hYmxlIHBhc3N0aHJvdWdoCi0j IE5vdGUgdGhhdCBsaWJmZHQgZG9lc24ndCBwcm92aWRlIHZlcnNpb25uaW5nLiBTbyB3ZSBuZWVk IHRvIHJlbHkgb24KLSMgZnVuY3Rpb24gcHJlc2VudCBpbiBuZXcgdmVyc2lvbi4KLSMgVXNlIGZk dF9maXJzdF9wcm9wZXJ0eV9vZmZzZXQgd2hpY2ggaGFzIGJlZW4gY29ycmVjdGx5IGV4cG9ydGVk IHNpbmNlIHYxLjQuMAotYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAiZmR0X2ZpcnN0X3By b3BlcnR5X29mZnNldCIgImFjX2N2X2Z1bmNfZmR0X2ZpcnN0X3Byb3BlcnR5X29mZnNldCIKLWlm IHRlc3QgIngkYWNfY3ZfZnVuY19mZHRfZmlyc3RfcHJvcGVydHlfb2Zmc2V0IiA9IHh5ZXM7IHRo ZW4gOgotICBwYXJ0aWFsX2R0PSJ5IgotZWxzZQotICBwYXJ0aWFsX2R0PSJuIgotZmkKLQotCi1p ZiB0ZXN0ICJ4JHBhcnRpYWxfZHQiID0gInh5IiA7IHRoZW4gOgotCi0kYXNfZWNobyAiI2RlZmlu ZSBFTkFCTEVfUEFSVElBTF9ERVZJQ0VfVFJFRSAxIiA+PmNvbmZkZWZzLmgKLQotZWxzZQotICB7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IERpc2FibGlu ZyBzdXBwb3J0IGZvciBwYXJ0aWFsIGRldmljZSB0cmVlIGluIGxpYnhsLgotICAgICAgIFBsZWFz ZSBpbnN0YWxsIGxpYmZkdCBsaWJyYXJ5IC0gdmVyc2lvbiAxLjQuMCBvciBoaWdoZXIiID4mNQot JGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogRGlzYWJsaW5nIHN1cHBvcnQgZm9yIHBhcnRpYWwg ZGV2aWNlIHRyZWUgaW4gbGlieGwuCi0gICAgICAgUGxlYXNlIGluc3RhbGwgbGliZmR0IGxpYnJh cnkgLSB2ZXJzaW9uIDEuNC4wIG9yIGhpZ2hlciIgPiYyO30KLWZpCi0KLSMgVGhlIGZ1bmN0aW9u cyBmZHRfe2ZpcnN0LG5leHR9X3N1Ym5vZGUgbWF5IG5vdCBiZSBhdmFpbGFibGUgYmVjYXVzZToK LSMgICAqIEl0IGhhcyBiZWVuIGludHJvZHVjZWQgaW4gMjAxMyA9PiBEb2Vzbid0IHdvcmsgb24g V2hlZXp5Ci0jICAgKiBUaGUgcHJvdG90eXBlIGV4aXN0cyBidXQgdGhlIGZ1bmN0aW9ucyBhcmUg bm90IGV4cG9zZWQuIERvbid0IGFzayB3aHkuLi4KLWZvciBhY19mdW5jIGluIGZkdF9maXJzdF9z dWJub2RlIGZkdF9uZXh0X3N1Ym5vZGUKLWRvIDoKLSAgYXNfYWNfdmFyPWAkYXNfZWNobyAiYWNf Y3ZfZnVuY18kYWNfZnVuYyIgfCAkYXNfdHJfc2hgCi1hY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5F Tk8iICIkYWNfZnVuYyIgIiRhc19hY192YXIiCi1pZiBldmFsIHRlc3QgXCJ4XCQiJGFzX2FjX3Zh ciJcIiA9IHgieWVzIjsgdGhlbiA6Ci0gIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSNkZWZp bmUgYCRhc19lY2hvICJIQVZFXyRhY19mdW5jIiB8ICRhc190cl9jcHBgIDEKLV9BQ0VPRgotCi1m aQotZG9uZQotCi1hY19mbl9jX2NoZWNrX2RlY2wgIiRMSU5FTk8iICJmZHRfZmlyc3Rfc3Vibm9k ZSIgImFjX2N2X2hhdmVfZGVjbF9mZHRfZmlyc3Rfc3Vibm9kZSIgIiNpbmNsdWRlIDxsaWJmZHQu aD4KLSIKLWlmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX2ZkdF9maXJzdF9zdWJub2RlIiA9IHh5 ZXM7IHRoZW4gOgotICBhY19oYXZlX2RlY2w9MQotZWxzZQotICBhY19oYXZlX2RlY2w9MAotZmkK LQotY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSBIQVZFX0RFQ0xfRkRUX0ZJUlNU X1NVQk5PREUgJGFjX2hhdmVfZGVjbAotX0FDRU9GCi1hY19mbl9jX2NoZWNrX2RlY2wgIiRMSU5F Tk8iICJmZHRfbmV4dF9zdWJub2RlIiAiYWNfY3ZfaGF2ZV9kZWNsX2ZkdF9uZXh0X3N1Ym5vZGUi ICIjaW5jbHVkZSA8bGliZmR0Lmg+Ci0iCi1pZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9mZHRf bmV4dF9zdWJub2RlIiA9IHh5ZXM7IHRoZW4gOgotICBhY19oYXZlX2RlY2w9MQotZWxzZQotICBh Y19oYXZlX2RlY2w9MAotZmkKLQotY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSBI QVZFX0RFQ0xfRkRUX05FWFRfU1VCTk9ERSAkYWNfaGF2ZV9kZWNsCi1fQUNFT0YKLQotCi0jIFRo ZSBoZWxwZXIgZmR0X3Byb3BlcnR5X3UzMiBpcyBvbmx5IHByZXNlbnQgaW4gbGliZmR0ID49IDEu NC4wCi0jIEl0J3MgYW4gaW5saW5lIGZ1bmN0aW9uLCBzbyBvbmx5IGNoZWNrIGlmIHRoZSBkZWNs YXJhdGlvbiBpcyBwcmVzZW50Ci1hY19mbl9jX2NoZWNrX2RlY2wgIiRMSU5FTk8iICJmZHRfcHJv cGVydHlfdTMyIiAiYWNfY3ZfaGF2ZV9kZWNsX2ZkdF9wcm9wZXJ0eV91MzIiICIjaW5jbHVkZSA8 bGliZmR0Lmg+Ci0iCi1pZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9mZHRfcHJvcGVydHlfdTMy IiA9IHh5ZXM7IHRoZW4gOgotICBhY19oYXZlX2RlY2w9MQotZWxzZQotICBhY19oYXZlX2RlY2w9 MAotZmkKLQotY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSBIQVZFX0RFQ0xfRkRU X1BST1BFUlRZX1UzMiAkYWNfaGF2ZV9kZWNsCi1fQUNFT0YKLQotZXNhYwotCi0jIENoZWNrcyBm b3IgaGVhZGVyIGZpbGVzLgotZm9yIGFjX2hlYWRlciBpbiB5YWpsL3lhamxfdmVyc2lvbi5oIHN5 cy9ldmVudGZkLmggdmFsZ3JpbmQvbWVtY2hlY2suaCB1dG1wLmgKLWRvIDoKLSAgYXNfYWNfSGVh ZGVyPWAkYXNfZWNobyAiYWNfY3ZfaGVhZGVyXyRhY19oZWFkZXIiIHwgJGFzX3RyX3NoYAotYWNf Zm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgIiRhY19oZWFkZXIiICIkYXNfYWNf SGVhZGVyIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCi1pZiBldmFsIHRlc3QgXCJ4XCQiJGFzX2Fj X0hlYWRlciJcIiA9IHgieWVzIjsgdGhlbiA6Ci0gIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YK LSNkZWZpbmUgYCRhc19lY2hvICJIQVZFXyRhY19oZWFkZXIiIHwgJGFzX3RyX2NwcGAgMQotX0FD RU9GCi0KLWZpCi0KLWRvbmUKLQotCi0jIENoZWNrIGZvciBsaWJubDMgPj0zLjIuOC4gSWYgcHJl c2VudCBlbmFibGUgcmVtdXMgbmV0d29yayBidWZmZXJpbmcuCi0KLXBrZ19mYWlsZWQ9bm8KLXsg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIExJQk5M MyIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgTElCTkwzLi4uICIgPiY2OyB9Ci0KLWlm IHRlc3QgLW4gIiRMSUJOTDNfQ0ZMQUdTIjsgdGhlbgotICAgIHBrZ19jdl9MSUJOTDNfQ0ZMQUdT PSIkTElCTkwzX0NGTEFHUyIKLSBlbGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgotICAg IGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCi0gICAgeyB7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9y cyBcImxpYm5sLTMuMCA+PSAzLjIuOCBsaWJubC1yb3V0ZS0zLjAgPj0gMy4yLjhcIiI7IH0gPiY1 Ci0gICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAibGlibmwtMy4wID49IDMu Mi44IGxpYm5sLXJvdXRlLTMuMCA+PSAzLjIuOCIpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gICRh c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4m NQotICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCi0gIHBrZ19jdl9MSUJOTDNfQ0ZMQUdT PWAkUEtHX0NPTkZJRyAtLWNmbGFncyAibGlibmwtMy4wID49IDMuMi44IGxpYm5sLXJvdXRlLTMu MCA+PSAzLjIuOCIgMj4vZGV2L251bGxgCi0JCSAgICAgIHRlc3QgIngkPyIgIT0gIngwIiAmJiBw a2dfZmFpbGVkPXllcwotZWxzZQotICBwa2dfZmFpbGVkPXllcwotZmkKLSBlbHNlCi0gICAgcGtn X2ZhaWxlZD11bnRyaWVkCi1maQotaWYgdGVzdCAtbiAiJExJQk5MM19MSUJTIjsgdGhlbgotICAg IHBrZ19jdl9MSUJOTDNfTElCUz0iJExJQk5MM19MSUJTIgotIGVsaWYgdGVzdCAtbiAiJFBLR19D T05GSUciOyB0aGVuCi0gICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKLSAgICB7IHsg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhp c3RzIC0tcHJpbnQtZXJyb3JzIFwibGlibmwtMy4wID49IDMuMi44IGxpYm5sLXJvdXRlLTMuMCA+ PSAzLjIuOFwiIjsgfSA+JjUKLSAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3Jz ICJsaWJubC0zLjAgPj0gMy4yLjggbGlibmwtcm91dGUtMy4wID49IDMuMi44IikgMj4mNQotICBh Y19zdGF0dXM9JD8KLSAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KLSAgcGtn X2N2X0xJQk5MM19MSUJTPWAkUEtHX0NPTkZJRyAtLWxpYnMgImxpYm5sLTMuMCA+PSAzLjIuOCBs aWJubC1yb3V0ZS0zLjAgPj0gMy4yLjgiIDI+L2Rldi9udWxsYAotCQkgICAgICB0ZXN0ICJ4JD8i ICE9ICJ4MCIgJiYgcGtnX2ZhaWxlZD15ZXMKLWVsc2UKLSAgcGtnX2ZhaWxlZD15ZXMKLWZpCi0g ZWxzZQotICAgIHBrZ19mYWlsZWQ9dW50cmllZAotZmkKLQotCi0KLWlmIHRlc3QgJHBrZ19mYWls ZWQgPSB5ZXM7IHRoZW4KLSAgIAl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLQotaWYgJFBLR19DT05G SUcgLS1hdGxlYXN0LXBrZ2NvbmZpZy12ZXJzaW9uIDAuMjA7IHRoZW4KLSAgICAgICAgX3BrZ19z aG9ydF9lcnJvcnNfc3VwcG9ydGVkPXllcwotZWxzZQotICAgICAgICBfcGtnX3Nob3J0X2Vycm9y c19zdXBwb3J0ZWQ9bm8KLWZpCi0gICAgICAgIGlmIHRlc3QgJF9wa2dfc2hvcnRfZXJyb3JzX3N1 cHBvcnRlZCA9IHllczsgdGhlbgotCSAgICAgICAgTElCTkwzX1BLR19FUlJPUlM9YCRQS0dfQ09O RklHIC0tc2hvcnQtZXJyb3JzIC0tcHJpbnQtZXJyb3JzIC0tY2ZsYWdzIC0tbGlicyAibGlibmwt My4wID49IDMuMi44IGxpYm5sLXJvdXRlLTMuMCA+PSAzLjIuOCIgMj4mMWAKLSAgICAgICAgZWxz ZQotCSAgICAgICAgTElCTkwzX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tcHJpbnQtZXJyb3Jz IC0tY2ZsYWdzIC0tbGlicyAibGlibmwtMy4wID49IDMuMi44IGxpYm5sLXJvdXRlLTMuMCA+PSAz LjIuOCIgMj4mMWAKLSAgICAgICAgZmkKLQkjIFB1dCB0aGUgbmFzdHkgZXJyb3IgbWVzc2FnZSBp biBjb25maWcubG9nIHdoZXJlIGl0IGJlbG9uZ3MKLQllY2hvICIkTElCTkwzX1BLR19FUlJPUlMi ID4mNQotCi0JbGlibmwzX2xpYj0ibiIKLWVsaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHVudHJpZWQ7 IHRoZW4KLSAgICAgCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz dWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQotCWxpYm5sM19saWI9Im4iCi1lbHNl Ci0JTElCTkwzX0NGTEFHUz0kcGtnX2N2X0xJQk5MM19DRkxBR1MKLQlMSUJOTDNfTElCUz0kcGtn X2N2X0xJQk5MM19MSUJTCi0gICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQotJGFzX2VjaG8gInllcyIgPiY2OyB9Ci0JbGlibmwz X2xpYj0ieSIKLWZpCi0KLWlmIHRlc3QgIngkbGlibmwzX2xpYiIgPSAieG4iIDsgdGhlbiA6Ci0K LSAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IERp c2FibGluZyBzdXBwb3J0IGZvciBSZW11cyBuZXR3b3JrIGJ1ZmZlcmluZyBhbmQgQ09MTy4KLSAg ICBQbGVhc2UgaW5zdGFsbCBsaWJubDMgbGlicmFyaWVzIChpbmNsdWRpbmcgbGlibmwzLXJvdXRl KSwgY29tbWFuZCBsaW5lIHRvb2xzIGFuZCBkZXZlbAotICAgIGhlYWRlcnMgLSB2ZXJzaW9uIDMu Mi44IG9yIGhpZ2hlciIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBEaXNhYmxpbmcg c3VwcG9ydCBmb3IgUmVtdXMgbmV0d29yayBidWZmZXJpbmcgYW5kIENPTE8uCi0gICAgUGxlYXNl IGluc3RhbGwgbGlibmwzIGxpYnJhcmllcyAoaW5jbHVkaW5nIGxpYm5sMy1yb3V0ZSksIGNvbW1h bmQgbGluZSB0b29scyBhbmQgZGV2ZWwKLSAgICBoZWFkZXJzIC0gdmVyc2lvbiAzLjIuOCBvciBo aWdoZXIiID4mMjt9Ci0gICAgbGlibmw9bgotCi0KLWVsc2UKLQotICAgIGxpYm5sPXkKLQotCi1m aQotCi0KLQotCi1maSAjICEgJHJ1bXAKLQotCi0KLQotIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxl LXN5c3RlbWQgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHtlbmFibGVfc3lzdGVtZCtzZXR9IiA9IHNl dDsgdGhlbiA6Ci0gIGVuYWJsZXZhbD0kZW5hYmxlX3N5c3RlbWQ7Ci1maQotCi0KLWlmIHRlc3Qg IngkZW5hYmxlX3N5c3RlbWQiID0gInhubyI7IHRoZW4gOgotCi0gICAgYXhfY3Zfc3lzdGVtZD0i biIKLQotZWxpZiB0ZXN0ICJ4JGVuYWJsZV9zeXN0ZW1kIiA9ICJ4eWVzIjsgdGhlbiA6Ci0KLSAg ICBheF9jdl9zeXN0ZW1kPSJ5IgotCi1lbGlmIHRlc3QgLXogJGF4X2N2X3N5c3RlbWQ7IHRoZW4g OgotCi0gICAgYXhfY3Zfc3lzdGVtZD0ibiIKLQotZmkKLXN5c3RlbWQ9JGF4X2N2X3N5c3RlbWQK LQotCi0KLQotIyBDaGVjayB3aGV0aGVyIC0td2l0aC1zeXN0ZW1kIHdhcyBnaXZlbi4KLWlmIHRl c3QgIiR7d2l0aF9zeXN0ZW1kK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgd2l0aHZhbD0kd2l0aF9z eXN0ZW1kOyBTWVNURU1EX0RJUj0iJHdpdGh2YWwiCi1lbHNlCi0gIFNZU1RFTURfRElSPSIiCi1m aQotCi0KLQotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLXN5c3RlbWQtbW9kdWxlcy1sb2FkIHdh cyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF9zeXN0ZW1kX21vZHVsZXNfbG9hZCtzZXR9IiA9IHNl dDsgdGhlbiA6Ci0gIHdpdGh2YWw9JHdpdGhfc3lzdGVtZF9tb2R1bGVzX2xvYWQ7IFNZU1RFTURf TU9EVUxFU19MT0FEPSIkd2l0aHZhbCIKLWVsc2UKLSAgU1lTVEVNRF9NT0RVTEVTX0xPQUQ9IiIK LWZpCi0KLQotCi0KLQotCi1wa2dfZmFpbGVkPW5vCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBTWVNURU1EIiA+JjUKLSRhc19lY2hvX24gImNo ZWNraW5nIGZvciBTWVNURU1ELi4uICIgPiY2OyB9Ci0KLWlmIHRlc3QgLW4gIiRTWVNURU1EX0NG TEFHUyI7IHRoZW4KLSAgICBwa2dfY3ZfU1lTVEVNRF9DRkxBR1M9IiRTWVNURU1EX0NGTEFHUyIK LSBlbGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgotICAgIGlmIHRlc3QgLW4gIiRQS0df Q09ORklHIiAmJiBcCi0gICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcImxpYnN5c3RlbWQtZGFl bW9uXCIiOyB9ID4mNQotICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgImxp YnN5c3RlbWQtZGFlbW9uIikgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIHRlc3QgJGFj X3N0YXR1cyA9IDA7IH07IHRoZW4KLSAgcGtnX2N2X1NZU1RFTURfQ0ZMQUdTPWAkUEtHX0NPTkZJ RyAtLWNmbGFncyAibGlic3lzdGVtZC1kYWVtb24iIDI+L2Rldi9udWxsYAotCQkgICAgICB0ZXN0 ICJ4JD8iICE9ICJ4MCIgJiYgcGtnX2ZhaWxlZD15ZXMKLWVsc2UKLSAgcGtnX2ZhaWxlZD15ZXMK LWZpCi0gZWxzZQotICAgIHBrZ19mYWlsZWQ9dW50cmllZAotZmkKLWlmIHRlc3QgLW4gIiRTWVNU RU1EX0xJQlMiOyB0aGVuCi0gICAgcGtnX2N2X1NZU1RFTURfTElCUz0iJFNZU1RFTURfTElCUyIK LSBlbGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgotICAgIGlmIHRlc3QgLW4gIiRQS0df Q09ORklHIiAmJiBcCi0gICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcImxpYnN5c3RlbWQtZGFl bW9uXCIiOyB9ID4mNQotICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgImxp YnN5c3RlbWQtZGFlbW9uIikgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIHRlc3QgJGFj X3N0YXR1cyA9IDA7IH07IHRoZW4KLSAgcGtnX2N2X1NZU1RFTURfTElCUz1gJFBLR19DT05GSUcg LS1saWJzICJsaWJzeXN0ZW1kLWRhZW1vbiIgMj4vZGV2L251bGxgCi0JCSAgICAgIHRlc3QgIngk PyIgIT0gIngwIiAmJiBwa2dfZmFpbGVkPXllcwotZWxzZQotICBwa2dfZmFpbGVkPXllcwotZmkK LSBlbHNlCi0gICAgcGtnX2ZhaWxlZD11bnRyaWVkCi1maQotCi0KLQotaWYgdGVzdCAkcGtnX2Zh aWxlZCA9IHllczsgdGhlbgotICAgCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQotCi1pZiAkUEtHX0NP TkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gMC4yMDsgdGhlbgotICAgICAgICBfcGtn X3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9eWVzCi1lbHNlCi0gICAgICAgIF9wa2dfc2hvcnRfZXJy b3JzX3N1cHBvcnRlZD1ubwotZmkKLSAgICAgICAgaWYgdGVzdCAkX3BrZ19zaG9ydF9lcnJvcnNf c3VwcG9ydGVkID0geWVzOyB0aGVuCi0JICAgICAgICBTWVNURU1EX1BLR19FUlJPUlM9YCRQS0df Q09ORklHIC0tc2hvcnQtZXJyb3JzIC0tcHJpbnQtZXJyb3JzIC0tY2ZsYWdzIC0tbGlicyAibGli c3lzdGVtZC1kYWVtb24iIDI+JjFgCi0gICAgICAgIGVsc2UKLQkgICAgICAgIFNZU1RFTURfUEtH X0VSUk9SUz1gJFBLR19DT05GSUcgLS1wcmludC1lcnJvcnMgLS1jZmxhZ3MgLS1saWJzICJsaWJz eXN0ZW1kLWRhZW1vbiIgMj4mMWAKLSAgICAgICAgZmkKLQkjIFB1dCB0aGUgbmFzdHkgZXJyb3Ig bWVzc2FnZSBpbiBjb25maWcubG9nIHdoZXJlIGl0IGJlbG9uZ3MKLQllY2hvICIkU1lTVEVNRF9Q S0dfRVJST1JTIiA+JjUKLQotCi0KLXBrZ19mYWlsZWQ9bm8KLXsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIFNZU1RFTUQiID4mNQotJGFzX2VjaG9f biAiY2hlY2tpbmcgZm9yIFNZU1RFTUQuLi4gIiA+JjY7IH0KLQotaWYgdGVzdCAtbiAiJFNZU1RF TURfQ0ZMQUdTIjsgdGhlbgotICAgIHBrZ19jdl9TWVNURU1EX0NGTEFHUz0iJFNZU1RFTURfQ0ZM QUdTIgotIGVsaWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCi0gICAgaWYgdGVzdCAtbiAi JFBLR19DT05GSUciICYmIFwKLSAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwibGlic3lzdGVt ZCA+PSAyMDlcIiI7IH0gPiY1Ci0gICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9y cyAibGlic3lzdGVtZCA+PSAyMDkiKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgdGVz dCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbgotICBwa2dfY3ZfU1lTVEVNRF9DRkxBR1M9YCRQS0df Q09ORklHIC0tY2ZsYWdzICJsaWJzeXN0ZW1kID49IDIwOSIgMj4vZGV2L251bGxgCi0JCSAgICAg IHRlc3QgIngkPyIgIT0gIngwIiAmJiBwa2dfZmFpbGVkPXllcwotZWxzZQotICBwa2dfZmFpbGVk PXllcwotZmkKLSBlbHNlCi0gICAgcGtnX2ZhaWxlZD11bnRyaWVkCi1maQotaWYgdGVzdCAtbiAi JFNZU1RFTURfTElCUyI7IHRoZW4KLSAgICBwa2dfY3ZfU1lTVEVNRF9MSUJTPSIkU1lTVEVNRF9M SUJTIgotIGVsaWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCi0gICAgaWYgdGVzdCAtbiAi JFBLR19DT05GSUciICYmIFwKLSAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwibGlic3lzdGVt ZCA+PSAyMDlcIiI7IH0gPiY1Ci0gICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9y cyAibGlic3lzdGVtZCA+PSAyMDkiKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgdGVz dCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbgotICBwa2dfY3ZfU1lTVEVNRF9MSUJTPWAkUEtHX0NP TkZJRyAtLWxpYnMgImxpYnN5c3RlbWQgPj0gMjA5IiAyPi9kZXYvbnVsbGAKLQkJICAgICAgdGVz dCAieCQ/IiAhPSAieDAiICYmIHBrZ19mYWlsZWQ9eWVzCi1lbHNlCi0gIHBrZ19mYWlsZWQ9eWVz Ci1maQotIGVsc2UKLSAgICBwa2dfZmFpbGVkPXVudHJpZWQKLWZpCi0KLQotCi1pZiB0ZXN0ICRw a2dfZmFpbGVkID0geWVzOyB0aGVuCi0gICAJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci0KLWlmICRQ S0dfQ09ORklHIC0tYXRsZWFzdC1wa2djb25maWctdmVyc2lvbiAwLjIwOyB0aGVuCi0gICAgICAg IF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD15ZXMKLWVsc2UKLSAgICAgICAgX3BrZ19zaG9y dF9lcnJvcnNfc3VwcG9ydGVkPW5vCi1maQotICAgICAgICBpZiB0ZXN0ICRfcGtnX3Nob3J0X2Vy cm9yc19zdXBwb3J0ZWQgPSB5ZXM7IHRoZW4KLQkgICAgICAgIFNZU1RFTURfUEtHX0VSUk9SUz1g JFBLR19DT05GSUcgLS1zaG9ydC1lcnJvcnMgLS1wcmludC1lcnJvcnMgLS1jZmxhZ3MgLS1saWJz ICJsaWJzeXN0ZW1kID49IDIwOSIgMj4mMWAKLSAgICAgICAgZWxzZQotCSAgICAgICAgU1lTVEVN RF9QS0dfRVJST1JTPWAkUEtHX0NPTkZJRyAtLXByaW50LWVycm9ycyAtLWNmbGFncyAtLWxpYnMg ImxpYnN5c3RlbWQgPj0gMjA5IiAyPiYxYAotICAgICAgICBmaQotCSMgUHV0IHRoZSBuYXN0eSBl cnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncwotCWVjaG8gIiRTWVNU RU1EX1BLR19FUlJPUlMiID4mNQotCi0Jc3lzdGVtZD0ibiIKLWVsaWYgdGVzdCAkcGtnX2ZhaWxl ZCA9IHVudHJpZWQ7IHRoZW4KLSAgICAgCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQotCXN5c3RlbWQ9 Im4iCi1lbHNlCi0JU1lTVEVNRF9DRkxBR1M9JHBrZ19jdl9TWVNURU1EX0NGTEFHUwotCVNZU1RF TURfTElCUz0kcGtnX2N2X1NZU1RFTURfTElCUwotICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKLSRhc19lY2hvICJ5ZXMiID4m NjsgfQotCXN5c3RlbWQ9InkiCi1maQotCi1lbGlmIHRlc3QgJHBrZ19mYWlsZWQgPSB1bnRyaWVk OyB0aGVuCi0gICAgIAl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl c3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLQotCi1wa2dfZmFpbGVkPW5vCi17 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBTWVNU RU1EIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciBTWVNURU1ELi4uICIgPiY2OyB9Ci0K LWlmIHRlc3QgLW4gIiRTWVNURU1EX0NGTEFHUyI7IHRoZW4KLSAgICBwa2dfY3ZfU1lTVEVNRF9D RkxBR1M9IiRTWVNURU1EX0NGTEFHUyIKLSBlbGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhl bgotICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCi0gICAgeyB7ICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50 LWVycm9ycyBcImxpYnN5c3RlbWQgPj0gMjA5XCIiOyB9ID4mNQotICAoJFBLR19DT05GSUcgLS1l eGlzdHMgLS1wcmludC1lcnJvcnMgImxpYnN5c3RlbWQgPj0gMjA5IikgMj4mNQotICBhY19zdGF0 dXM9JD8KLSAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFj X3N0YXR1cyIgPiY1Ci0gIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KLSAgcGtnX2N2X1NZ U1RFTURfQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyAibGlic3lzdGVtZCA+PSAyMDkiIDI+ L2Rldi9udWxsYAotCQkgICAgICB0ZXN0ICJ4JD8iICE9ICJ4MCIgJiYgcGtnX2ZhaWxlZD15ZXMK LWVsc2UKLSAgcGtnX2ZhaWxlZD15ZXMKLWZpCi0gZWxzZQotICAgIHBrZ19mYWlsZWQ9dW50cmll ZAotZmkKLWlmIHRlc3QgLW4gIiRTWVNURU1EX0xJQlMiOyB0aGVuCi0gICAgcGtnX2N2X1NZU1RF TURfTElCUz0iJFNZU1RFTURfTElCUyIKLSBlbGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhl bgotICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCi0gICAgeyB7ICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50 LWVycm9ycyBcImxpYnN5c3RlbWQgPj0gMjA5XCIiOyB9ID4mNQotICAoJFBLR19DT05GSUcgLS1l eGlzdHMgLS1wcmludC1lcnJvcnMgImxpYnN5c3RlbWQgPj0gMjA5IikgMj4mNQotICBhY19zdGF0 dXM9JD8KLSAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFj X3N0YXR1cyIgPiY1Ci0gIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KLSAgcGtnX2N2X1NZ U1RFTURfTElCUz1gJFBLR19DT05GSUcgLS1saWJzICJsaWJzeXN0ZW1kID49IDIwOSIgMj4vZGV2 L251bGxgCi0JCSAgICAgIHRlc3QgIngkPyIgIT0gIngwIiAmJiBwa2dfZmFpbGVkPXllcwotZWxz ZQotICBwa2dfZmFpbGVkPXllcwotZmkKLSBlbHNlCi0gICAgcGtnX2ZhaWxlZD11bnRyaWVkCi1m aQotCi0KLQotaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHllczsgdGhlbgotICAgCXsgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAi bm8iID4mNjsgfQotCi1pZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24g MC4yMDsgdGhlbgotICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9eWVzCi1lbHNl Ci0gICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD1ubwotZmkKLSAgICAgICAgaWYg dGVzdCAkX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkID0geWVzOyB0aGVuCi0JICAgICAgICBT WVNURU1EX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tc2hvcnQtZXJyb3JzIC0tcHJpbnQtZXJy b3JzIC0tY2ZsYWdzIC0tbGlicyAibGlic3lzdGVtZCA+PSAyMDkiIDI+JjFgCi0gICAgICAgIGVs c2UKLQkgICAgICAgIFNZU1RFTURfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1wcmludC1lcnJv cnMgLS1jZmxhZ3MgLS1saWJzICJsaWJzeXN0ZW1kID49IDIwOSIgMj4mMWAKLSAgICAgICAgZmkK LQkjIFB1dCB0aGUgbmFzdHkgZXJyb3IgbWVzc2FnZSBpbiBjb25maWcubG9nIHdoZXJlIGl0IGJl bG9uZ3MKLQllY2hvICIkU1lTVEVNRF9QS0dfRVJST1JTIiA+JjUKLQotCXN5c3RlbWQ9Im4iCi1l bGlmIHRlc3QgJHBrZ19mYWlsZWQgPSB1bnRyaWVkOyB0aGVuCi0gICAgIAl7ICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5v IiA+JjY7IH0KLQlzeXN0ZW1kPSJuIgotZWxzZQotCVNZU1RFTURfQ0ZMQUdTPSRwa2dfY3ZfU1lT VEVNRF9DRkxBR1MKLQlTWVNURU1EX0xJQlM9JHBrZ19jdl9TWVNURU1EX0xJQlMKLSAgICAgICAg eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1 Ci0kYXNfZWNobyAieWVzIiA+JjY7IH0KLQlzeXN0ZW1kPSJ5IgotZmkKLQotZWxzZQotCVNZU1RF TURfQ0ZMQUdTPSRwa2dfY3ZfU1lTVEVNRF9DRkxBR1MKLQlTWVNURU1EX0xJQlM9JHBrZ19jdl9T WVNURU1EX0xJQlMKLSAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiByZXN1bHQ6IHllcyIgPiY1Ci0kYXNfZWNobyAieWVzIiA+JjY7IH0KLQlzeXN0ZW1kPSJ5 IgotZmkKLQotCi0JCWlmIHRlc3QgIngkZW5hYmxlX3N5c3RlbWQiICE9ICJ4bm8iOyB0aGVuIDoK LQotCSAgICAgaWYgdGVzdCAieCRzeXN0ZW1kIiA9ICJ4eSIgOyB0aGVuIDoKLQotCi0kYXNfZWNo byAiI2RlZmluZSBIQVZFX1NZU1RFTUQgMSIgPj5jb25mZGVmcy5oCi0KLQkJCXN5c3RlbWQ9eQot Ci0KLXBrZ19mYWlsZWQ9bm8KLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogY2hlY2tpbmcgZm9yIFNZU1RFTUQiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIFNZ U1RFTUQuLi4gIiA+JjY7IH0KLQotaWYgdGVzdCAtbiAiJFNZU1RFTURfQ0ZMQUdTIjsgdGhlbgot ICAgIHBrZ19jdl9TWVNURU1EX0NGTEFHUz0iJFNZU1RFTURfQ0ZMQUdTIgotIGVsaWYgdGVzdCAt biAiJFBLR19DT05GSUciOyB0aGVuCi0gICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwK LSAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09O RklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwibGlic3lzdGVtZC1kYWVtb25cIiI7IH0gPiY1 Ci0gICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAibGlic3lzdGVtZC1kYWVt b24iKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgdGVzdCAkYWNfc3RhdHVzID0gMDsg fTsgdGhlbgotICBwa2dfY3ZfU1lTVEVNRF9DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzICJs aWJzeXN0ZW1kLWRhZW1vbiIgMj4vZGV2L251bGxgCi0JCSAgICAgIHRlc3QgIngkPyIgIT0gIngw IiAmJiBwa2dfZmFpbGVkPXllcwotZWxzZQotICBwa2dfZmFpbGVkPXllcwotZmkKLSBlbHNlCi0g ICAgcGtnX2ZhaWxlZD11bnRyaWVkCi1maQotaWYgdGVzdCAtbiAiJFNZU1RFTURfTElCUyI7IHRo ZW4KLSAgICBwa2dfY3ZfU1lTVEVNRF9MSUJTPSIkU1lTVEVNRF9MSUJTIgotIGVsaWYgdGVzdCAt biAiJFBLR19DT05GSUciOyB0aGVuCi0gICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwK LSAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09O RklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwibGlic3lzdGVtZC1kYWVtb25cIiI7IH0gPiY1 Ci0gICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAibGlic3lzdGVtZC1kYWVt b24iKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgdGVzdCAkYWNfc3RhdHVzID0gMDsg fTsgdGhlbgotICBwa2dfY3ZfU1lTVEVNRF9MSUJTPWAkUEtHX0NPTkZJRyAtLWxpYnMgImxpYnN5 c3RlbWQtZGFlbW9uIiAyPi9kZXYvbnVsbGAKLQkJICAgICAgdGVzdCAieCQ/IiAhPSAieDAiICYm IHBrZ19mYWlsZWQ9eWVzCi1lbHNlCi0gIHBrZ19mYWlsZWQ9eWVzCi1maQotIGVsc2UKLSAgICBw a2dfZmFpbGVkPXVudHJpZWQKLWZpCi0KLQotCi1pZiB0ZXN0ICRwa2dfZmFpbGVkID0geWVzOyB0 aGVuCi0gICAJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6 IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci0KLWlmICRQS0dfQ09ORklHIC0tYXRsZWFz dC1wa2djb25maWctdmVyc2lvbiAwLjIwOyB0aGVuCi0gICAgICAgIF9wa2dfc2hvcnRfZXJyb3Jz X3N1cHBvcnRlZD15ZXMKLWVsc2UKLSAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVk PW5vCi1maQotICAgICAgICBpZiB0ZXN0ICRfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQgPSB5 ZXM7IHRoZW4KLQkgICAgICAgIFNZU1RFTURfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1zaG9y dC1lcnJvcnMgLS1wcmludC1lcnJvcnMgLS1jZmxhZ3MgLS1saWJzICJsaWJzeXN0ZW1kLWRhZW1v biIgMj4mMWAKLSAgICAgICAgZWxzZQotCSAgICAgICAgU1lTVEVNRF9QS0dfRVJST1JTPWAkUEtH X0NPTkZJRyAtLXByaW50LWVycm9ycyAtLWNmbGFncyAtLWxpYnMgImxpYnN5c3RlbWQtZGFlbW9u IiAyPiYxYAotICAgICAgICBmaQotCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGluIGNv bmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncwotCWVjaG8gIiRTWVNURU1EX1BLR19FUlJPUlMiID4m NQotCi0KLXBrZ19mYWlsZWQ9bm8KLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogY2hlY2tpbmcgZm9yIFNZU1RFTUQiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9y IFNZU1RFTUQuLi4gIiA+JjY7IH0KLQotaWYgdGVzdCAtbiAiJFNZU1RFTURfQ0ZMQUdTIjsgdGhl bgotICAgIHBrZ19jdl9TWVNURU1EX0NGTEFHUz0iJFNZU1RFTURfQ0ZMQUdTIgotIGVsaWYgdGVz dCAtbiAiJFBLR19DT05GSUciOyB0aGVuCi0gICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYm IFwKLSAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0df Q09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwibGlic3lzdGVtZCA+PSAyMDlcIiI7IH0g PiY1Ci0gICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAibGlic3lzdGVtZCA+ PSAyMDkiKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgdGVzdCAkYWNfc3RhdHVzID0g MDsgfTsgdGhlbgotICBwa2dfY3ZfU1lTVEVNRF9DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdz ICJsaWJzeXN0ZW1kID49IDIwOSIgMj4vZGV2L251bGxgCi0JCSAgICAgIHRlc3QgIngkPyIgIT0g IngwIiAmJiBwa2dfZmFpbGVkPXllcwotZWxzZQotICBwa2dfZmFpbGVkPXllcwotZmkKLSBlbHNl Ci0gICAgcGtnX2ZhaWxlZD11bnRyaWVkCi1maQotaWYgdGVzdCAtbiAiJFNZU1RFTURfTElCUyI7 IHRoZW4KLSAgICBwa2dfY3ZfU1lTVEVNRF9MSUJTPSIkU1lTVEVNRF9MSUJTIgotIGVsaWYgdGVz dCAtbiAiJFBLR19DT05GSUciOyB0aGVuCi0gICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYm IFwKLSAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0df Q09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwibGlic3lzdGVtZCA+PSAyMDlcIiI7IH0g PiY1Ci0gICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAibGlic3lzdGVtZCA+ PSAyMDkiKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgdGVzdCAkYWNfc3RhdHVzID0g MDsgfTsgdGhlbgotICBwa2dfY3ZfU1lTVEVNRF9MSUJTPWAkUEtHX0NPTkZJRyAtLWxpYnMgImxp YnN5c3RlbWQgPj0gMjA5IiAyPi9kZXYvbnVsbGAKLQkJICAgICAgdGVzdCAieCQ/IiAhPSAieDAi ICYmIHBrZ19mYWlsZWQ9eWVzCi1lbHNlCi0gIHBrZ19mYWlsZWQ9eWVzCi1maQotIGVsc2UKLSAg ICBwa2dfZmFpbGVkPXVudHJpZWQKLWZpCi0KLQotCi1pZiB0ZXN0ICRwa2dfZmFpbGVkID0geWVz OyB0aGVuCi0gICAJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1 bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci0KLWlmICRQS0dfQ09ORklHIC0tYXRs ZWFzdC1wa2djb25maWctdmVyc2lvbiAwLjIwOyB0aGVuCi0gICAgICAgIF9wa2dfc2hvcnRfZXJy b3JzX3N1cHBvcnRlZD15ZXMKLWVsc2UKLSAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9y dGVkPW5vCi1maQotICAgICAgICBpZiB0ZXN0ICRfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQg PSB5ZXM7IHRoZW4KLQkgICAgICAgIFNZU1RFTURfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1z aG9ydC1lcnJvcnMgLS1wcmludC1lcnJvcnMgLS1jZmxhZ3MgLS1saWJzICJsaWJzeXN0ZW1kID49 IDIwOSIgMj4mMWAKLSAgICAgICAgZWxzZQotCSAgICAgICAgU1lTVEVNRF9QS0dfRVJST1JTPWAk UEtHX0NPTkZJRyAtLXByaW50LWVycm9ycyAtLWNmbGFncyAtLWxpYnMgImxpYnN5c3RlbWQgPj0g MjA5IiAyPiYxYAotICAgICAgICBmaQotCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGlu IGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncwotCWVjaG8gIiRTWVNURU1EX1BLR19FUlJPUlMi ID4mNQotCi0JYXNfZm5fZXJyb3IgJD8gIlBhY2thZ2UgcmVxdWlyZW1lbnRzIChsaWJzeXN0ZW1k ID49IDIwOSkgd2VyZSBub3QgbWV0OgotCi0kU1lTVEVNRF9QS0dfRVJST1JTCi0KLUNvbnNpZGVy IGFkanVzdGluZyB0aGUgUEtHX0NPTkZJR19QQVRIIGVudmlyb25tZW50IHZhcmlhYmxlIGlmIHlv dQotaW5zdGFsbGVkIHNvZnR3YXJlIGluIGEgbm9uLXN0YW5kYXJkIHByZWZpeC4KLQotQWx0ZXJu YXRpdmVseSwgeW91IG1heSBzZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBTWVNURU1EX0NG TEFHUwotYW5kIFNZU1RFTURfTElCUyB0byBhdm9pZCB0aGUgbmVlZCB0byBjYWxsIHBrZy1jb25m aWcuCi1TZWUgdGhlIHBrZy1jb25maWcgbWFuIHBhZ2UgZm9yIG1vcmUgZGV0YWlscy4iICIkTElO RU5PIiA1Ci1lbGlmIHRlc3QgJHBrZ19mYWlsZWQgPSB1bnRyaWVkOyB0aGVuCi0gICAgIAl7ICRh c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFz X2VjaG8gIm5vIiA+JjY7IH0KLQl7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IGVycm9y OiBpbiBcYCRhY19wd2QnOiIgPiYyO30KLWFzX2ZuX2Vycm9yICQ/ICJUaGUgcGtnLWNvbmZpZyBz Y3JpcHQgY291bGQgbm90IGJlIGZvdW5kIG9yIGlzIHRvbyBvbGQuICBNYWtlIHN1cmUgaXQKLWlz IGluIHlvdXIgUEFUSCBvciBzZXQgdGhlIFBLR19DT05GSUcgZW52aXJvbm1lbnQgdmFyaWFibGUg dG8gdGhlIGZ1bGwKLXBhdGggdG8gcGtnLWNvbmZpZy4KLQotQWx0ZXJuYXRpdmVseSwgeW91IG1h eSBzZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBTWVNURU1EX0NGTEFHUwotYW5kIFNZU1RF TURfTElCUyB0byBhdm9pZCB0aGUgbmVlZCB0byBjYWxsIHBrZy1jb25maWcuCi1TZWUgdGhlIHBr Zy1jb25maWcgbWFuIHBhZ2UgZm9yIG1vcmUgZGV0YWlscy4KLQotVG8gZ2V0IHBrZy1jb25maWcs IHNlZSA8aHR0cDovL3BrZy1jb25maWcuZnJlZWRlc2t0b3Aub3JnLz4uCi1TZWUgXGBjb25maWcu bG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQotZWxzZQotCVNZU1RFTURfQ0ZM QUdTPSRwa2dfY3ZfU1lTVEVNRF9DRkxBR1MKLQlTWVNURU1EX0xJQlM9JHBrZ19jdl9TWVNURU1E X0xJQlMKLSAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy ZXN1bHQ6IHllcyIgPiY1Ci0kYXNfZWNobyAieWVzIiA+JjY7IH0KLQotZmkKLQotZWxpZiB0ZXN0 ICRwa2dfZmFpbGVkID0gdW50cmllZDsgdGhlbgotICAgICAJeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9 Ci0KLXBrZ19mYWlsZWQ9bm8KLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogY2hlY2tpbmcgZm9yIFNZU1RFTUQiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIFNZ U1RFTUQuLi4gIiA+JjY7IH0KLQotaWYgdGVzdCAtbiAiJFNZU1RFTURfQ0ZMQUdTIjsgdGhlbgot ICAgIHBrZ19jdl9TWVNURU1EX0NGTEFHUz0iJFNZU1RFTURfQ0ZMQUdTIgotIGVsaWYgdGVzdCAt biAiJFBLR19DT05GSUciOyB0aGVuCi0gICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwK LSAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09O RklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwibGlic3lzdGVtZCA+PSAyMDlcIiI7IH0gPiY1 Ci0gICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAibGlic3lzdGVtZCA+PSAy MDkiKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgdGVzdCAkYWNfc3RhdHVzID0gMDsg fTsgdGhlbgotICBwa2dfY3ZfU1lTVEVNRF9DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzICJs aWJzeXN0ZW1kID49IDIwOSIgMj4vZGV2L251bGxgCi0JCSAgICAgIHRlc3QgIngkPyIgIT0gIngw IiAmJiBwa2dfZmFpbGVkPXllcwotZWxzZQotICBwa2dfZmFpbGVkPXllcwotZmkKLSBlbHNlCi0g ICAgcGtnX2ZhaWxlZD11bnRyaWVkCi1maQotaWYgdGVzdCAtbiAiJFNZU1RFTURfTElCUyI7IHRo ZW4KLSAgICBwa2dfY3ZfU1lTVEVNRF9MSUJTPSIkU1lTVEVNRF9MSUJTIgotIGVsaWYgdGVzdCAt biAiJFBLR19DT05GSUciOyB0aGVuCi0gICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwK LSAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09O RklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwibGlic3lzdGVtZCA+PSAyMDlcIiI7IH0gPiY1 Ci0gICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAibGlic3lzdGVtZCA+PSAy MDkiKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgdGVzdCAkYWNfc3RhdHVzID0gMDsg fTsgdGhlbgotICBwa2dfY3ZfU1lTVEVNRF9MSUJTPWAkUEtHX0NPTkZJRyAtLWxpYnMgImxpYnN5 c3RlbWQgPj0gMjA5IiAyPi9kZXYvbnVsbGAKLQkJICAgICAgdGVzdCAieCQ/IiAhPSAieDAiICYm IHBrZ19mYWlsZWQ9eWVzCi1lbHNlCi0gIHBrZ19mYWlsZWQ9eWVzCi1maQotIGVsc2UKLSAgICBw a2dfZmFpbGVkPXVudHJpZWQKLWZpCi0KLQotCi1pZiB0ZXN0ICRwa2dfZmFpbGVkID0geWVzOyB0 aGVuCi0gICAJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6 IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci0KLWlmICRQS0dfQ09ORklHIC0tYXRsZWFz dC1wa2djb25maWctdmVyc2lvbiAwLjIwOyB0aGVuCi0gICAgICAgIF9wa2dfc2hvcnRfZXJyb3Jz X3N1cHBvcnRlZD15ZXMKLWVsc2UKLSAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVk PW5vCi1maQotICAgICAgICBpZiB0ZXN0ICRfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQgPSB5 ZXM7IHRoZW4KLQkgICAgICAgIFNZU1RFTURfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1zaG9y dC1lcnJvcnMgLS1wcmludC1lcnJvcnMgLS1jZmxhZ3MgLS1saWJzICJsaWJzeXN0ZW1kID49IDIw OSIgMj4mMWAKLSAgICAgICAgZWxzZQotCSAgICAgICAgU1lTVEVNRF9QS0dfRVJST1JTPWAkUEtH X0NPTkZJRyAtLXByaW50LWVycm9ycyAtLWNmbGFncyAtLWxpYnMgImxpYnN5c3RlbWQgPj0gMjA5 IiAyPiYxYAotICAgICAgICBmaQotCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGluIGNv bmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncwotCWVjaG8gIiRTWVNURU1EX1BLR19FUlJPUlMiID4m NQotCi0JYXNfZm5fZXJyb3IgJD8gIlBhY2thZ2UgcmVxdWlyZW1lbnRzIChsaWJzeXN0ZW1kID49 IDIwOSkgd2VyZSBub3QgbWV0OgotCi0kU1lTVEVNRF9QS0dfRVJST1JTCi0KLUNvbnNpZGVyIGFk anVzdGluZyB0aGUgUEtHX0NPTkZJR19QQVRIIGVudmlyb25tZW50IHZhcmlhYmxlIGlmIHlvdQot aW5zdGFsbGVkIHNvZnR3YXJlIGluIGEgbm9uLXN0YW5kYXJkIHByZWZpeC4KLQotQWx0ZXJuYXRp dmVseSwgeW91IG1heSBzZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBTWVNURU1EX0NGTEFH UwotYW5kIFNZU1RFTURfTElCUyB0byBhdm9pZCB0aGUgbmVlZCB0byBjYWxsIHBrZy1jb25maWcu Ci1TZWUgdGhlIHBrZy1jb25maWcgbWFuIHBhZ2UgZm9yIG1vcmUgZGV0YWlscy4iICIkTElORU5P IiA1Ci1lbGlmIHRlc3QgJHBrZ19mYWlsZWQgPSB1bnRyaWVkOyB0aGVuCi0gICAgIAl7ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2Vj aG8gIm5vIiA+JjY7IH0KLQl7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBp biBcYCRhY19wd2QnOiIgPiYyO30KLWFzX2ZuX2Vycm9yICQ/ICJUaGUgcGtnLWNvbmZpZyBzY3Jp cHQgY291bGQgbm90IGJlIGZvdW5kIG9yIGlzIHRvbyBvbGQuICBNYWtlIHN1cmUgaXQKLWlzIGlu IHlvdXIgUEFUSCBvciBzZXQgdGhlIFBLR19DT05GSUcgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8g dGhlIGZ1bGwKLXBhdGggdG8gcGtnLWNvbmZpZy4KLQotQWx0ZXJuYXRpdmVseSwgeW91IG1heSBz ZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBTWVNURU1EX0NGTEFHUwotYW5kIFNZU1RFTURf TElCUyB0byBhdm9pZCB0aGUgbmVlZCB0byBjYWxsIHBrZy1jb25maWcuCi1TZWUgdGhlIHBrZy1j b25maWcgbWFuIHBhZ2UgZm9yIG1vcmUgZGV0YWlscy4KLQotVG8gZ2V0IHBrZy1jb25maWcsIHNl ZSA8aHR0cDovL3BrZy1jb25maWcuZnJlZWRlc2t0b3Aub3JnLz4uCi1TZWUgXGBjb25maWcubG9n JyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQotZWxzZQotCVNZU1RFTURfQ0ZMQUdT PSRwa2dfY3ZfU1lTVEVNRF9DRkxBR1MKLQlTWVNURU1EX0xJQlM9JHBrZ19jdl9TWVNURU1EX0xJ QlMKLSAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1 bHQ6IHllcyIgPiY1Ci0kYXNfZWNobyAieWVzIiA+JjY7IH0KLQotZmkKLQotZWxzZQotCVNZU1RF TURfQ0ZMQUdTPSRwa2dfY3ZfU1lTVEVNRF9DRkxBR1MKLQlTWVNURU1EX0xJQlM9JHBrZ19jdl9T WVNURU1EX0xJQlMKLSAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiByZXN1bHQ6IHllcyIgPiY1Ci0kYXNfZWNobyAieWVzIiA+JjY7IH0KLQotZmkKLQotCi0K LQlpZiB0ZXN0ICJ4JFNZU1RFTURfRElSIiA9IHg7IHRoZW4gOgotCi0JICAgIAkgICAgCSAgICAJ ICAgIAkgICAgCSAgICAJICAgIAkgICAgCSAgICAJICAgIAkgICAgCSAgICAJICAgIFNZU1RFTURf RElSPSJcJChwcmVmaXgpL2xpYi9zeXN0ZW1kL3N5c3RlbS8iCi0KLWZpCi0KLQlpZiB0ZXN0ICJ4 JFNZU1RFTURfRElSIiA9IHg7IHRoZW4gOgotCi0JICAgIGFzX2ZuX2Vycm9yICQ/ICJTWVNURU1E X0RJUiBpcyB1bnNldCIgIiRMSU5FTk8iIDUKLQotZmkKLQotCQlpZiB0ZXN0ICJ4JFNZU1RFTURf TU9EVUxFU19MT0FEIiA9IHg7IHRoZW4gOgotCi0JICAgIFNZU1RFTURfTU9EVUxFU19MT0FEPSJc JChwcmVmaXgpL2xpYi9tb2R1bGVzLWxvYWQuZC8iCi0KLWZpCi0KLQlpZiB0ZXN0ICJ4JFNZU1RF TURfTU9EVUxFU19MT0FEIiA9IHg7IHRoZW4gOgotCi0JICAgIGFzX2ZuX2Vycm9yICQ/ICJTWVNU RU1EX01PRFVMRVNfTE9BRCBpcyB1bnNldCIgIiRMSU5FTk8iIDUKLQotZmkKLQotCi1lbHNlCi0K LQkJaWYgdGVzdCAieCRlbmFibGVfc3lzdGVtZCIgPSAieHllcyI7IHRoZW4gOgotICBhc19mbl9l cnJvciAkPyAiVW5hYmxlIHRvIGZpbmQgc3lzdGVtZCBkZXZlbG9wbWVudCBsaWJyYXJ5IiAiJExJ TkVOTyIgNQotZWxzZQotICBzeXN0ZW1kPW4KLWZpCi0KLWZpCi0KLWVsc2UKLSAgc3lzdGVtZD1u Ci1maQotCi0KLQotaWYgdGVzdCAieCRzeXN0ZW1kIiA9ICJ4eSI7IHRoZW4gOgotCi0gICAgYWNf Y29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIGhvdHBsdWcvTGludXgvc3lzdGVtZC9wcm9j LXhlbi5tb3VudCBob3RwbHVnL0xpbnV4L3N5c3RlbWQvdmFyLWxpYi14ZW5zdG9yZWQubW91bnQg aG90cGx1Zy9MaW51eC9zeXN0ZW1kL3hlbi1pbml0LWRvbTAuc2VydmljZSBob3RwbHVnL0xpbnV4 L3N5c3RlbWQveGVuLXFlbXUtZG9tMC1kaXNrLWJhY2tlbmQuc2VydmljZSBob3RwbHVnL0xpbnV4 L3N5c3RlbWQveGVuLXdhdGNoZG9nLnNlcnZpY2UgaG90cGx1Zy9MaW51eC9zeXN0ZW1kL3hlbmNv bnNvbGVkLnNlcnZpY2UgaG90cGx1Zy9MaW51eC9zeXN0ZW1kL3hlbmRvbWFpbnMuc2VydmljZSBo b3RwbHVnL0xpbnV4L3N5c3RlbWQveGVuZHJpdmVyZG9tYWluLnNlcnZpY2UgaG90cGx1Zy9MaW51 eC9zeXN0ZW1kL3hlbnN0b3JlZC5zZXJ2aWNlIgotCi0KLWZpCi0KLSMgQ2hlY2sgd2hldGhlciAt LWVuYWJsZS05cGZzIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7ZW5hYmxlXzlwZnMrc2V0fSIgPSBz ZXQ7IHRoZW4gOgotICBlbmFibGV2YWw9JGVuYWJsZV85cGZzOyBpZiB0ZXN0ICJ4JGVuYWJsZV85 cGZzIiA9ICJ4eWVzIjsgdGhlbiA6Ci0gIG5pbmVwZnM9eQotZWxzZQotICBuaW5lcGZzPW4KLWZp Ci1maQotCi0KLQotCi1jYXQgPmNvbmZjYWNoZSA8PFxfQUNFT0YKLSMgVGhpcyBmaWxlIGlzIGEg c2hlbGwgc2NyaXB0IHRoYXQgY2FjaGVzIHRoZSByZXN1bHRzIG9mIGNvbmZpZ3VyZQotIyB0ZXN0 cyBydW4gb24gdGhpcyBzeXN0ZW0gc28gdGhleSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gY29uZmln dXJlCi0jIHNjcmlwdHMgYW5kIGNvbmZpZ3VyZSBydW5zLCBzZWUgY29uZmlndXJlJ3Mgb3B0aW9u IC0tY29uZmlnLWNhY2hlLgotIyBJdCBpcyBub3QgdXNlZnVsIG9uIG90aGVyIHN5c3RlbXMuICBJ ZiBpdCBjb250YWlucyByZXN1bHRzIHlvdSBkb24ndAotIyB3YW50IHRvIGtlZXAsIHlvdSBtYXkg cmVtb3ZlIG9yIGVkaXQgaXQuCi0jCi0jIGNvbmZpZy5zdGF0dXMgb25seSBwYXlzIGF0dGVudGlv biB0byB0aGUgY2FjaGUgZmlsZSBpZiB5b3UgZ2l2ZSBpdAotIyB0aGUgLS1yZWNoZWNrIG9wdGlv biB0byByZXJ1biBjb25maWd1cmUuCi0jCi0jIGBhY19jdl9lbnZfZm9vJyB2YXJpYWJsZXMgKHNl dCBvciB1bnNldCkgd2lsbCBiZSBvdmVycmlkZGVuIHdoZW4KLSMgbG9hZGluZyB0aGlzIGZpbGUs IG90aGVyICp1bnNldCogYGFjX2N2X2Zvbycgd2lsbCBiZSBhc3NpZ25lZCB0aGUKLSMgZm9sbG93 aW5nIHZhbHVlcy4KLQotX0FDRU9GCi0KLSMgVGhlIGZvbGxvd2luZyB3YXkgb2Ygd3JpdGluZyB0 aGUgY2FjaGUgbWlzaGFuZGxlcyBuZXdsaW5lcyBpbiB2YWx1ZXMsCi0jIGJ1dCB3ZSBrbm93IG9m IG5vIHdvcmthcm91bmQgdGhhdCBpcyBzaW1wbGUsIHBvcnRhYmxlLCBhbmQgZWZmaWNpZW50Lgot IyBTbywgd2Uga2lsbCB2YXJpYWJsZXMgY29udGFpbmluZyBuZXdsaW5lcy4KLSMgVWx0cml4IHNo IHNldCB3cml0ZXMgdG8gc3RkZXJyIGFuZCBjYW4ndCBiZSByZWRpcmVjdGVkIGRpcmVjdGx5LAot IyBhbmQgc2V0cyB0aGUgaGlnaCBiaXQgaW4gdGhlIGNhY2hlIGZpbGUgdW5sZXNzIHdlIGFzc2ln biB0byB0aGUgdmFycy4KLSgKLSAgZm9yIGFjX3ZhciBpbiBgKHNldCkgMj4mMSB8IHNlZCAtbiAn cy9eXChbYS16QS1aX11bYS16QS1aMC05X10qXCk9LiovXDEvcCdgOyBkbwotICAgIGV2YWwgYWNf dmFsPVwkJGFjX3ZhcgotICAgIGNhc2UgJGFjX3ZhbCBpbiAjKAotICAgICoke2FzX25sfSopCi0g ICAgICBjYXNlICRhY192YXIgaW4gIygKLSAgICAgICpfY3ZfKikgeyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBjYWNoZSB2YXJpYWJsZSAkYWNfdmFyIGNv bnRhaW5zIGEgbmV3bGluZSIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBjYWNoZSB2 YXJpYWJsZSAkYWNfdmFyIGNvbnRhaW5zIGEgbmV3bGluZSIgPiYyO30gOzsKLSAgICAgIGVzYWMK LSAgICAgIGNhc2UgJGFjX3ZhciBpbiAjKAotICAgICAgXyB8IElGUyB8IGFzX25sKSA7OyAjKAot ICAgICAgQkFTSF9BUkdWIHwgQkFTSF9TT1VSQ0UpIGV2YWwgJGFjX3Zhcj0gOzsgIygKLSAgICAg ICopIHsgZXZhbCAkYWNfdmFyPTsgdW5zZXQgJGFjX3Zhcjt9IDs7Ci0gICAgICBlc2FjIDs7Ci0g ICAgZXNhYwotICBkb25lCi0KLSAgKHNldCkgMj4mMSB8Ci0gICAgY2FzZSAkYXNfbmxgKGFjX3Nw YWNlPScgJzsgc2V0KSAyPiYxYCBpbiAjKAotICAgICoke2FzX25sfWFjX3NwYWNlPVwgKikKLSAg ICAgICMgYHNldCcgZG9lcyBub3QgcXVvdGUgY29ycmVjdGx5LCBzbyBhZGQgcXVvdGVzOiBkb3Vi bGUtcXVvdGUKLSAgICAgICMgc3Vic3RpdHV0aW9uIHR1cm5zIFxcXFwgaW50byBcXCwgYW5kIHNl ZCB0dXJucyBcXCBpbnRvIFwuCi0gICAgICBzZWQgLW4gXAotCSJzLycvJ1xcXFwnJy9nOwotCSAg cy9eXFwoW18kYXNfY3JfYWxudW1dKl9jdl9bXyRhc19jcl9hbG51bV0qXFwpPVxcKC4qXFwpL1xc MT0nXFwyJy9wIgotICAgICAgOzsgIygKLSAgICAqKQotICAgICAgIyBgc2V0JyBxdW90ZXMgY29y cmVjdGx5IGFzIHJlcXVpcmVkIGJ5IFBPU0lYLCBzbyBkbyBub3QgYWRkIHF1b3Rlcy4KLSAgICAg IHNlZCAtbiAiL15bXyRhc19jcl9hbG51bV0qX2N2X1tfJGFzX2NyX2FsbnVtXSo9L3AiCi0gICAg ICA7OwotICAgIGVzYWMgfAotICAgIHNvcnQKLSkgfAotICBzZWQgJwotICAgICAvXmFjX2N2X2Vu dl8vYiBlbmQKLSAgICAgdCBjbGVhcgotICAgICA6Y2xlYXIKLSAgICAgcy9eXChbXj1dKlwpPVwo Lipbe31dLipcKSQvdGVzdCAiJHtcMStzZXR9IiA9IHNldCB8fCAmLwotICAgICB0IGVuZAotICAg ICBzL15cKFtePV0qXCk9XCguKlwpJC9cMT0ke1wxPVwyfS8KLSAgICAgOmVuZCcgPj5jb25mY2Fj aGUKLWlmIGRpZmYgIiRjYWNoZV9maWxlIiBjb25mY2FjaGUgPi9kZXYvbnVsbCAyPiYxOyB0aGVu IDo7IGVsc2UKLSAgaWYgdGVzdCAtdyAiJGNhY2hlX2ZpbGUiOyB0aGVuCi0gICAgaWYgdGVzdCAi eCRjYWNoZV9maWxlIiAhPSAieC9kZXYvbnVsbCI7IHRoZW4KLSAgICAgIHsgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogdXBkYXRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4m NQotJGFzX2VjaG8gIiRhc19tZTogdXBkYXRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNjt9Ci0g ICAgICBpZiB0ZXN0ICEgLWYgIiRjYWNoZV9maWxlIiB8fCB0ZXN0IC1oICIkY2FjaGVfZmlsZSI7 IHRoZW4KLQljYXQgY29uZmNhY2hlID4iJGNhY2hlX2ZpbGUiCi0gICAgICBlbHNlCi0gICAgICAg IGNhc2UgJGNhY2hlX2ZpbGUgaW4gIygKLSAgICAgICAgKi8qIHwgPzoqKQotCSAgbXYgLWYgY29u ZmNhY2hlICIkY2FjaGVfZmlsZSIkJCAmJgotCSAgbXYgLWYgIiRjYWNoZV9maWxlIiQkICIkY2Fj aGVfZmlsZSIgOzsgIygKLSAgICAgICAgKikKLQkgIG12IC1mIGNvbmZjYWNoZSAiJGNhY2hlX2Zp bGUiIDs7Ci0JZXNhYwotICAgICAgZmkKLSAgICBmaQotICBlbHNlCi0gICAgeyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBub3QgdXBkYXRpbmcgdW53cml0YWJsZSBjYWNo ZSAkY2FjaGVfZmlsZSIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiBub3QgdXBkYXRpbmcgdW53cml0 YWJsZSBjYWNoZSAkY2FjaGVfZmlsZSIgPiY2O30KLSAgZmkKLWZpCi1ybSAtZiBjb25mY2FjaGUK LQotdGVzdCAieCRwcmVmaXgiID0geE5PTkUgJiYgcHJlZml4PSRhY19kZWZhdWx0X3ByZWZpeAot IyBMZXQgbWFrZSBleHBhbmQgZXhlY19wcmVmaXguCi10ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9IHhO T05FICYmIGV4ZWNfcHJlZml4PScke3ByZWZpeH0nCi0KLURFRlM9LURIQVZFX0NPTkZJR19ICi0K LWFjX2xpYm9ianM9Ci1hY19sdGxpYm9ianM9Ci1VPQotZm9yIGFjX2kgaW4gOiAkTElCT0JKUzsg ZG8gdGVzdCAieCRhY19pIiA9IHg6ICYmIGNvbnRpbnVlCi0gICMgMS4gUmVtb3ZlIHRoZSBleHRl bnNpb24sIGFuZCAkVSBpZiBhbHJlYWR5IGluc3RhbGxlZC4KLSAgYWNfc2NyaXB0PSdzL1wkVVwu Ly4vO3MvXC5vJC8vO3MvXC5vYmokLy8nCi0gIGFjX2k9YCRhc19lY2hvICIkYWNfaSIgfCBzZWQg IiRhY19zY3JpcHQiYAotICAjIDIuIFByZXBlbmQgTElCT0JKRElSLiAgV2hlbiB1c2VkIHdpdGgg YXV0b21ha2U+PTEuMTAgTElCT0JKRElSCi0gICMgICAgd2lsbCBiZSBzZXQgdG8gdGhlIGRpcmVj dG9yeSB3aGVyZSBMSUJPQkpTIG9iamVjdHMgYXJlIGJ1aWx0LgotICBhc19mbl9hcHBlbmQgYWNf bGlib2JqcyAiIFwke0xJQk9CSkRJUn0kYWNfaVwkVS4kYWNfb2JqZXh0IgotICBhc19mbl9hcHBl bmQgYWNfbHRsaWJvYmpzICIgXCR7TElCT0JKRElSfSRhY19pIickVS5sbycKLWRvbmUKLUxJQk9C SlM9JGFjX2xpYm9ianMKLQotTFRMSUJPQkpTPSRhY19sdGxpYm9ianMKLQotCi0KLTogIiR7Q09O RklHX1NUQVRVUz0uL2NvbmZpZy5zdGF0dXN9IgotYWNfd3JpdGVfZmFpbD0wCi1hY19jbGVhbl9m aWxlc19zYXZlPSRhY19jbGVhbl9maWxlcwotYWNfY2xlYW5fZmlsZXM9IiRhY19jbGVhbl9maWxl cyAkQ09ORklHX1NUQVRVUyIKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogY3JlYXRpbmcgJENPTkZJR19TVEFUVVMiID4mNQotJGFzX2VjaG8gIiRhc19tZTogY3JlYXRp bmcgJENPTkZJR19TVEFUVVMiID4mNjt9Ci1hc193cml0ZV9mYWlsPTAKLWNhdCA+JENPTkZJR19T VEFUVVMgPDxfQVNFT0YgfHwgYXNfd3JpdGVfZmFpbD0xCi0jISAkU0hFTEwKLSMgR2VuZXJhdGVk IGJ5ICRhc19tZS4KLSMgUnVuIHRoaXMgZmlsZSB0byByZWNyZWF0ZSB0aGUgY3VycmVudCBjb25m aWd1cmF0aW9uLgotIyBDb21waWxlciBvdXRwdXQgcHJvZHVjZWQgYnkgY29uZmlndXJlLCB1c2Vm dWwgZm9yIGRlYnVnZ2luZwotIyBjb25maWd1cmUsIGlzIGluIGNvbmZpZy5sb2cgaWYgaXQgZXhp c3RzLgotCi1kZWJ1Zz1mYWxzZQotYWNfY3NfcmVjaGVjaz1mYWxzZQotYWNfY3Nfc2lsZW50PWZh bHNlCi0KLVNIRUxMPVwke0NPTkZJR19TSEVMTC0kU0hFTEx9Ci1leHBvcnQgU0hFTEwKLV9BU0VP RgotY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FTRU9GIHx8IGFzX3dyaXRlX2ZhaWw9MQotIyMg LS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLSMjIE00c2ggSW5pdGlhbGl6YXRpb24uICMjCi0jIyAt LS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotCi0jIEJlIG1vcmUgQm91cm5lIGNvbXBhdGlibGUKLURV QUxDQVNFPTE7IGV4cG9ydCBEVUFMQ0FTRSAjIGZvciBNS1Mgc2gKLWlmIHRlc3QgLW4gIiR7WlNI X1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0g IGVtdWxhdGUgc2gKLSAgTlVMTENNRD06Ci0gICMgUHJlLTQuMiB2ZXJzaW9ucyBvZiBac2ggZG8g d29yZCBzcGxpdHRpbmcgb24gJHsxKyIkQCJ9LCB3aGljaAotICAjIGlzIGNvbnRyYXJ5IHRvIG91 ciB1c2FnZS4gIERpc2FibGUgdGhpcyBmZWF0dXJlLgotICBhbGlhcyAtZyAnJHsxKyIkQCJ9Jz0n IiRAIicKLSAgc2V0b3B0IE5PX0dMT0JfU1VCU1QKLWVsc2UKLSAgY2FzZSBgKHNldCAtbykgMj4v ZGV2L251bGxgIGluICMoCi0gICpwb3NpeCopIDoKLSAgICBzZXQgLW8gcG9zaXggOzsgIygKLSAg KikgOgotICAgICA7OwotZXNhYwotZmkKLQotCi1hc19ubD0nCi0nCi1leHBvcnQgYXNfbmwKLSMg UHJpbnRpbmcgYSBsb25nIHN0cmluZyBjcmFzaGVzIFNvbGFyaXMgNyAvdXNyL2Jpbi9wcmludGYu Ci1hc19lY2hvPSdcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc JwotYXNfZWNobz0kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvCi1hc19l Y2hvPSRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobwotIyBQ cmVmZXIgYSBrc2ggc2hlbGwgYnVpbHRpbiBvdmVyIGFuIGV4dGVybmFsIHByaW50ZiBwcm9ncmFt IG9uIFNvbGFyaXMsCi0jIGJ1dCB3aXRob3V0IHdhc3RpbmcgZm9ya3MgZm9yIGJhc2ggb3IgenNo LgotaWYgdGVzdCAteiAiJEJBU0hfVkVSU0lPTiRaU0hfVkVSU0lPTiIgXAotICAgICYmICh0ZXN0 ICJYYHByaW50IC1yIC0tICRhc19lY2hvYCIgPSAiWCRhc19lY2hvIikgMj4vZGV2L251bGw7IHRo ZW4KLSAgYXNfZWNobz0ncHJpbnQgLXIgLS0nCi0gIGFzX2VjaG9fbj0ncHJpbnQgLXJuIC0tJwot ZWxpZiAodGVzdCAiWGBwcmludGYgJXMgJGFzX2VjaG9gIiA9ICJYJGFzX2VjaG8iKSAyPi9kZXYv bnVsbDsgdGhlbgotICBhc19lY2hvPSdwcmludGYgJXNcbicKLSAgYXNfZWNob19uPSdwcmludGYg JXMnCi1lbHNlCi0gIGlmIHRlc3QgIlhgKC91c3IvdWNiL2VjaG8gLW4gLW4gJGFzX2VjaG8pIDI+ L2Rldi9udWxsYCIgPSAiWC1uICRhc19lY2hvIjsgdGhlbgotICAgIGFzX2VjaG9fYm9keT0nZXZh bCAvdXNyL3VjYi9lY2hvIC1uICIkMSRhc19ubCInCi0gICAgYXNfZWNob19uPScvdXNyL3VjYi9l Y2hvIC1uJwotICBlbHNlCi0gICAgYXNfZWNob19ib2R5PSdldmFsIGV4cHIgIlgkMSIgOiAiWFxc KC4qXFwpIicKLSAgICBhc19lY2hvX25fYm9keT0nZXZhbAotICAgICAgYXJnPSQxOwotICAgICAg Y2FzZSAkYXJnIGluICMoCi0gICAgICAqIiRhc19ubCIqKQotCWV4cHIgIlgkYXJnIiA6ICJYXFwo LipcXCkkYXNfbmwiOwotCWFyZz1gZXhwciAiWCRhcmciIDogIi4qJGFzX25sXFwoLipcXCkiYDs7 Ci0gICAgICBlc2FjOwotICAgICAgZXhwciAiWCRhcmciIDogIlhcXCguKlxcKSIgfCB0ciAtZCAi JGFzX25sIgotICAgICcKLSAgICBleHBvcnQgYXNfZWNob19uX2JvZHkKLSAgICBhc19lY2hvX249 J3NoIC1jICRhc19lY2hvX25fYm9keSBhc19lY2hvJwotICBmaQotICBleHBvcnQgYXNfZWNob19i b2R5Ci0gIGFzX2VjaG89J3NoIC1jICRhc19lY2hvX2JvZHkgYXNfZWNobycKLWZpCi0KLSMgVGhl IHVzZXIgaXMgYWx3YXlzIHJpZ2h0LgotaWYgdGVzdCAiJHtQQVRIX1NFUEFSQVRPUitzZXR9IiAh PSBzZXQ7IHRoZW4KLSAgUEFUSF9TRVBBUkFUT1I9OgotICAoUEFUSD0nL2JpbjsvYmluJzsgRlBB VEg9JFBBVEg7IHNoIC1jIDopID4vZGV2L251bGwgMj4mMSAmJiB7Ci0gICAgKFBBVEg9Jy9iaW46 L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+JjEgfHwKLSAgICAgIFBB VEhfU0VQQVJBVE9SPSc7JwotICB9Ci1maQotCi0KLSMgSUZTCi0jIFdlIG5lZWQgc3BhY2UsIHRh YiBhbmQgbmV3IGxpbmUsIGluIHByZWNpc2VseSB0aGF0IG9yZGVyLiAgUXVvdGluZyBpcwotIyB0 aGVyZSB0byBwcmV2ZW50IGVkaXRvcnMgZnJvbSBjb21wbGFpbmluZyBhYm91dCBzcGFjZS10YWIu Ci0jIChJZiBfQVNfUEFUSF9XQUxLIHdlcmUgY2FsbGVkIHdpdGggSUZTIHVuc2V0LCBpdCB3b3Vs ZCBkaXNhYmxlIHdvcmQKLSMgc3BsaXR0aW5nIGJ5IHNldHRpbmcgSUZTIHRvIGVtcHR5IHZhbHVl LikKLUlGUz0iICIiCSRhc19ubCIKLQotIyBGaW5kIHdobyB3ZSBhcmUuICBMb29rIGluIHRoZSBw YXRoIGlmIHdlIGNvbnRhaW4gbm8gZGlyZWN0b3J5IHNlcGFyYXRvci4KLWFzX215c2VsZj0KLWNh c2UgJDAgaW4gIygoCi0gICpbXFwvXSogKSBhc19teXNlbGY9JDAgOzsKLSAgKikgYXNfc2F2ZV9J RlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotZm9yIGFzX2RpciBpbiAkUEFUSAotZG8KLSAg SUZTPSRhc19zYXZlX0lGUwotICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgIHRl c3QgLXIgIiRhc19kaXIvJDAiICYmIGFzX215c2VsZj0kYXNfZGlyLyQwICYmIGJyZWFrCi0gIGRv bmUKLUlGUz0kYXNfc2F2ZV9JRlMKLQotICAgICA7OwotZXNhYwotIyBXZSBkaWQgbm90IGZpbmQg b3Vyc2VsdmVzLCBtb3N0IHByb2JhYmx5IHdlIHdlcmUgcnVuIGFzIGBzaCBDT01NQU5EJwotIyBp biB3aGljaCBjYXNlIHdlIGFyZSBub3QgdG8gYmUgZm91bmQgaW4gdGhlIHBhdGguCi1pZiB0ZXN0 ICJ4JGFzX215c2VsZiIgPSB4OyB0aGVuCi0gIGFzX215c2VsZj0kMAotZmkKLWlmIHRlc3QgISAt ZiAiJGFzX215c2VsZiI7IHRoZW4KLSAgJGFzX2VjaG8gIiRhc19teXNlbGY6IGVycm9yOiBjYW5u b3QgZmluZCBteXNlbGY7IHJlcnVuIHdpdGggYW4gYWJzb2x1dGUgZmlsZSBuYW1lIiA+JjIKLSAg ZXhpdCAxCi1maQotCi0jIFVuc2V0IHZhcmlhYmxlcyB0aGF0IHdlIGRvIG5vdCBuZWVkIGFuZCB3 aGljaCBjYXVzZSBidWdzIChlLmcuIGluCi0jIHByZS0zLjAgVVdJTiBrc2gpLiAgQnV0IGRvIG5v dCBjYXVzZSBidWdzIGluIGJhc2ggMi4wMTsgdGhlICJ8fCBleGl0IDEiCi0jIHN1cHByZXNzZXMg YW55ICJTZWdtZW50YXRpb24gZmF1bHQiIG1lc3NhZ2UgdGhlcmUuICAnKCgnIGNvdWxkCi0jIHRy aWdnZXIgYSBidWcgaW4gcGRrc2ggNS4yLjE0LgotZm9yIGFzX3ZhciBpbiBCQVNIX0VOViBFTlYg TUFJTCBNQUlMUEFUSAotZG8gZXZhbCB0ZXN0IHhcJHskYXNfdmFyK3NldH0gPSB4c2V0IFwKLSAg JiYgKCAodW5zZXQgJGFzX3ZhcikgfHwgZXhpdCAxKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQg JGFzX3ZhciB8fCA6Ci1kb25lCi1QUzE9JyQgJwotUFMyPSc+ICcKLVBTND0nKyAnCi0KLSMgTkxT IG51aXNhbmNlcy4KLUxDX0FMTD1DCi1leHBvcnQgTENfQUxMCi1MQU5HVUFHRT1DCi1leHBvcnQg TEFOR1VBR0UKLQotIyBDRFBBVEguCi0odW5zZXQgQ0RQQVRIKSA+L2Rldi9udWxsIDI+JjEgJiYg dW5zZXQgQ0RQQVRICi0KLQotIyBhc19mbl9lcnJvciBTVEFUVVMgRVJST1IgW0xJTkVOTyBMT0df RkRdCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgT3V0cHV0 ICJgYmFzZW5hbWUgJDBgOiBlcnJvcjogRVJST1IiIHRvIHN0ZGVyci4gSWYgTElORU5PIGFuZCBM T0dfRkQgYXJlCi0jIHByb3ZpZGVkLCBhbHNvIG91dHB1dCB0aGUgZXJyb3IgdG8gTE9HX0ZELCBy ZWZlcmVuY2luZyBMSU5FTk8uIFRoZW4gZXhpdCB0aGUKLSMgc2NyaXB0IHdpdGggU1RBVFVTLCB1 c2luZyAxIGlmIHRoYXQgd2FzIDAuCi1hc19mbl9lcnJvciAoKQotewotICBhc19zdGF0dXM9JDE7 IHRlc3QgJGFzX3N0YXR1cyAtZXEgMCAmJiBhc19zdGF0dXM9MQotICBpZiB0ZXN0ICIkNCI7IHRo ZW4KLSAgICBhc19saW5lbm89JHthc19saW5lbm8tIiQzIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xp bmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCi0gICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogZXJyb3I6ICQyIiA+JiQ0Ci0gIGZpCi0gICRhc19lY2hvICIkYXNfbWU6 IGVycm9yOiAkMiIgPiYyCi0gIGFzX2ZuX2V4aXQgJGFzX3N0YXR1cwotfSAjIGFzX2ZuX2Vycm9y Ci0KLQotIyBhc19mbl9zZXRfc3RhdHVzIFNUQVRVUwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQotIyBTZXQgJD8gdG8gU1RBVFVTLCB3aXRob3V0IGZvcmtpbmcuCi1hc19mbl9zZXRfc3RhdHVz ICgpCi17Ci0gIHJldHVybiAkMQotfSAjIGFzX2ZuX3NldF9zdGF0dXMKLQotIyBhc19mbl9leGl0 IFNUQVRVUwotIyAtLS0tLS0tLS0tLS0tLS0tLQotIyBFeGl0IHRoZSBzaGVsbCB3aXRoIFNUQVRV UywgZXZlbiBpbiBhICJ0cmFwIDAiIG9yICJzZXQgLWUiIGNvbnRleHQuCi1hc19mbl9leGl0ICgp Ci17Ci0gIHNldCArZQotICBhc19mbl9zZXRfc3RhdHVzICQxCi0gIGV4aXQgJDEKLX0gIyBhc19m bl9leGl0Ci0KLSMgYXNfZm5fdW5zZXQgVkFSCi0jIC0tLS0tLS0tLS0tLS0tLQotIyBQb3J0YWJs eSB1bnNldCBWQVIuCi1hc19mbl91bnNldCAoKQotewotICB7IGV2YWwgJDE9OyB1bnNldCAkMTt9 Ci19Ci1hc191bnNldD1hc19mbl91bnNldAotIyBhc19mbl9hcHBlbmQgVkFSIFZBTFVFCi0jIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQXBwZW5kIHRoZSB0ZXh0IGluIFZBTFVFIHRvIHRoZSBl bmQgb2YgdGhlIGRlZmluaXRpb24gY29udGFpbmVkIGluIFZBUi4gVGFrZQotIyBhZHZhbnRhZ2Ug b2YgYW55IHNoZWxsIG9wdGltaXphdGlvbnMgdGhhdCBhbGxvdyBhbW9ydGl6ZWQgbGluZWFyIGdy b3d0aCBvdmVyCi0jIHJlcGVhdGVkIGFwcGVuZHMsIGluc3RlYWQgb2YgdGhlIHR5cGljYWwgcXVh ZHJhdGljIGdyb3d0aCBwcmVzZW50IGluIG5haXZlCi0jIGltcGxlbWVudGF0aW9ucy4KLWlmIChl dmFsICJhc192YXI9MTsgYXNfdmFyKz0yOyB0ZXN0IHhcJGFzX3ZhciA9IHgxMiIpIDI+L2Rldi9u dWxsOyB0aGVuIDoKLSAgZXZhbCAnYXNfZm5fYXBwZW5kICgpCi0gIHsKLSAgICBldmFsICQxKz1c JDIKLSAgfScKLWVsc2UKLSAgYXNfZm5fYXBwZW5kICgpCi0gIHsKLSAgICBldmFsICQxPVwkJDFc JDIKLSAgfQotZmkgIyBhc19mbl9hcHBlbmQKLQotIyBhc19mbl9hcml0aCBBUkcuLi4KLSMgLS0t LS0tLS0tLS0tLS0tLS0tCi0jIFBlcmZvcm0gYXJpdGhtZXRpYyBldmFsdWF0aW9uIG9uIHRoZSBB UkdzLCBhbmQgc3RvcmUgdGhlIHJlc3VsdCBpbiB0aGUKLSMgZ2xvYmFsICRhc192YWwuIFRha2Ug YWR2YW50YWdlIG9mIHNoZWxscyB0aGF0IGNhbiBhdm9pZCBmb3Jrcy4gVGhlIGFyZ3VtZW50cwot IyBtdXN0IGJlIHBvcnRhYmxlIGFjcm9zcyAkKCgpKSBhbmQgZXhwci4KLWlmIChldmFsICJ0ZXN0 IFwkKCggMSArIDEgKSkgPSAyIikgMj4vZGV2L251bGw7IHRoZW4gOgotICBldmFsICdhc19mbl9h cml0aCAoKQotICB7Ci0gICAgYXNfdmFsPSQoKCAkKiApKQotICB9JwotZWxzZQotICBhc19mbl9h cml0aCAoKQotICB7Ci0gICAgYXNfdmFsPWBleHByICIkQCIgfHwgdGVzdCAkPyAtZXEgMWAKLSAg fQotZmkgIyBhc19mbl9hcml0aAotCi0KLWlmIGV4cHIgYSA6ICdcKGFcKScgPi9kZXYvbnVsbCAy PiYxICYmCi0gICB0ZXN0ICJYYGV4cHIgMDAwMDEgOiAnLipcKC4uLlwpJ2AiID0gWDAwMTsgdGhl bgotICBhc19leHByPWV4cHIKLWVsc2UKLSAgYXNfZXhwcj1mYWxzZQotZmkKLQotaWYgKGJhc2Vu YW1lIC0tIC8pID4vZGV2L251bGwgMj4mMSAmJiB0ZXN0ICJYYGJhc2VuYW1lIC0tIC8gMj4mMWAi ID0gIlgvIjsgdGhlbgotICBhc19iYXNlbmFtZT1iYXNlbmFtZQotZWxzZQotICBhc19iYXNlbmFt ZT1mYWxzZQotZmkKLQotaWYgKGFzX2Rpcj1gZGlybmFtZSAtLSAvYCAmJiB0ZXN0ICJYJGFzX2Rp ciIgPSBYLykgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gIGFzX2Rpcm5hbWU9ZGlybmFtZQotZWxz ZQotICBhc19kaXJuYW1lPWZhbHNlCi1maQotCi1hc19tZT1gJGFzX2Jhc2VuYW1lIC0tICIkMCIg fHwKLSRhc19leHByIFgvIiQwIiA6ICcuKi9cKFteL11bXi9dKlwpLyokJyBcfCBcCi0JIFgiJDAi IDogJ1hcKC8vXCkkJyBcfCBcCi0JIFgiJDAiIDogJ1hcKC9cKScgXHwgLiAyPi9kZXYvbnVsbCB8 fAotJGFzX2VjaG8gWC8iJDAiIHwKLSAgICBzZWQgJy9eLipcL1woW14vXVteL10qXClcLyokL3sK LQkgICAgcy8vXDEvCi0JICAgIHEKLQkgIH0KLQkgIC9eWFwvXChcL1wvXCkkL3sKLQkgICAgcy8v XDEvCi0JICAgIHEKLQkgIH0KLQkgIC9eWFwvXChcL1wpLiovewotCSAgICBzLy9cMS8KLQkgICAg cQotCSAgfQotCSAgcy8uKi8uLzsgcSdgCi0KLSMgQXZvaWQgZGVwZW5kaW5nIHVwb24gQ2hhcmFj dGVyIFJhbmdlcy4KLWFzX2NyX2xldHRlcnM9J2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Jwot YXNfY3JfTEVUVEVSUz0nQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonCi1hc19jcl9MZXR0ZXJz PSRhc19jcl9sZXR0ZXJzJGFzX2NyX0xFVFRFUlMKLWFzX2NyX2RpZ2l0cz0nMDEyMzQ1Njc4OScK LWFzX2NyX2FsbnVtPSRhc19jcl9MZXR0ZXJzJGFzX2NyX2RpZ2l0cwotCi1FQ0hPX0M9IEVDSE9f Tj0gRUNIT19UPQotY2FzZSBgZWNobyAtbiB4YCBpbiAjKCgoKCgKLS1uKikKLSAgY2FzZSBgZWNo byAneHlcYydgIGluCi0gICpjKikgRUNIT19UPScJJzs7CSMgRUNIT19UIGlzIHNpbmdsZSB0YWIg Y2hhcmFjdGVyLgotICB4eSkgIEVDSE9fQz0nXGMnOzsKLSAgKikgICBlY2hvIGBlY2hvIGtzaDg4 IGJ1ZyBvbiBBSVggNi4xYCA+IC9kZXYvbnVsbAotICAgICAgIEVDSE9fVD0nCSc7OwotICBlc2Fj OzsKLSopCi0gIEVDSE9fTj0nLW4nOzsKLWVzYWMKLQotcm0gLWYgY29uZiQkIGNvbmYkJC5leGUg Y29uZiQkLmZpbGUKLWlmIHRlc3QgLWQgY29uZiQkLmRpcjsgdGhlbgotICBybSAtZiBjb25mJCQu ZGlyL2NvbmYkJC5maWxlCi1lbHNlCi0gIHJtIC1mIGNvbmYkJC5kaXIKLSAgbWtkaXIgY29uZiQk LmRpciAyPi9kZXYvbnVsbAotZmkKLWlmIChlY2hvID5jb25mJCQuZmlsZSkgMj4vZGV2L251bGw7 IHRoZW4KLSAgaWYgbG4gLXMgY29uZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVuCi0g ICAgYXNfbG5fcz0nbG4gLXMnCi0gICAgIyAuLi4gYnV0IHRoZXJlIGFyZSB0d28gZ290Y2hhczoK LSAgICAjIDEpIE9uIE1TWVMsIGJvdGggYGxuIC1zIGZpbGUgZGlyJyBhbmQgYGxuIGZpbGUgZGly JyBmYWlsLgotICAgICMgMikgREpHUFAgPCAyLjA0IGhhcyBubyBzeW1saW5rczsgYGxuIC1zJyBj cmVhdGVzIGEgd3JhcHBlciBleGVjdXRhYmxlLgotICAgICMgSW4gYm90aCBjYXNlcywgd2UgaGF2 ZSB0byBkZWZhdWx0IHRvIGBjcCAtcFInLgotICAgIGxuIC1zIGNvbmYkJC5maWxlIGNvbmYkJC5k aXIgMj4vZGV2L251bGwgJiYgdGVzdCAhIC1mIGNvbmYkJC5leGUgfHwKLSAgICAgIGFzX2xuX3M9 J2NwIC1wUicKLSAgZWxpZiBsbiBjb25mJCQuZmlsZSBjb25mJCQgMj4vZGV2L251bGw7IHRoZW4K LSAgICBhc19sbl9zPWxuCi0gIGVsc2UKLSAgICBhc19sbl9zPSdjcCAtcFInCi0gIGZpCi1lbHNl Ci0gIGFzX2xuX3M9J2NwIC1wUicKLWZpCi1ybSAtZiBjb25mJCQgY29uZiQkLmV4ZSBjb25mJCQu ZGlyL2NvbmYkJC5maWxlIGNvbmYkJC5maWxlCi1ybWRpciBjb25mJCQuZGlyIDI+L2Rldi9udWxs Ci0KLQotIyBhc19mbl9ta2Rpcl9wCi0jIC0tLS0tLS0tLS0tLS0KLSMgQ3JlYXRlICIkYXNfZGly IiBhcyBhIGRpcmVjdG9yeSwgaW5jbHVkaW5nIHBhcmVudHMgaWYgbmVjZXNzYXJ5LgotYXNfZm5f bWtkaXJfcCAoKQotewotCi0gIGNhc2UgJGFzX2RpciBpbiAjKAotICAtKikgYXNfZGlyPS4vJGFz X2Rpcjs7Ci0gIGVzYWMKLSAgdGVzdCAtZCAiJGFzX2RpciIgfHwgZXZhbCAkYXNfbWtkaXJfcCB8 fCB7Ci0gICAgYXNfZGlycz0KLSAgICB3aGlsZSA6OyBkbwotICAgICAgY2FzZSAkYXNfZGlyIGlu ICMoCi0gICAgICAqXCcqKSBhc19xZGlyPWAkYXNfZWNobyAiJGFzX2RpciIgfCBzZWQgInMvJy8n XFxcXFxcXFwnJy9nImA7OyAjJygKLSAgICAgICopIGFzX3FkaXI9JGFzX2Rpcjs7Ci0gICAgICBl c2FjCi0gICAgICBhc19kaXJzPSInJGFzX3FkaXInICRhc19kaXJzIgotICAgICAgYXNfZGlyPWAk YXNfZGlybmFtZSAtLSAiJGFzX2RpciIgfHwKLSRhc19leHByIFgiJGFzX2RpciIgOiAnWFwoLipb Xi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwKLQkgWCIkYXNfZGlyIiA6ICdYXCgvL1wpW14vXScg XHwgXAotCSBYIiRhc19kaXIiIDogJ1hcKC8vXCkkJyBcfCBcCi0JIFgiJGFzX2RpciIgOiAnWFwo L1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8Ci0kYXNfZWNobyBYIiRhc19kaXIiIHwKLSAgICBzZWQg Jy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQvewotCSAgICBzLy9cMS8KLQkgICAgcQot CSAgfQotCSAgL15YXChcL1wvXClbXi9dLiovewotCSAgICBzLy9cMS8KLQkgICAgcQotCSAgfQot CSAgL15YXChcL1wvXCkkL3sKLQkgICAgcy8vXDEvCi0JICAgIHEKLQkgIH0KLQkgIC9eWFwoXC9c KS4qL3sKLQkgICAgcy8vXDEvCi0JICAgIHEKLQkgIH0KLQkgIHMvLiovLi87IHEnYAotICAgICAg dGVzdCAtZCAiJGFzX2RpciIgJiYgYnJlYWsKLSAgICBkb25lCi0gICAgdGVzdCAteiAiJGFzX2Rp cnMiIHx8IGV2YWwgIm1rZGlyICRhc19kaXJzIgotICB9IHx8IHRlc3QgLWQgIiRhc19kaXIiIHx8 IGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgY3JlYXRlIGRpcmVjdG9yeSAkYXNfZGlyIgotCi0KLX0g IyBhc19mbl9ta2Rpcl9wCi1pZiBta2RpciAtcCAuIDI+L2Rldi9udWxsOyB0aGVuCi0gIGFzX21r ZGlyX3A9J21rZGlyIC1wICIkYXNfZGlyIicKLWVsc2UKLSAgdGVzdCAtZCAuLy1wICYmIHJtZGly IC4vLXAKLSAgYXNfbWtkaXJfcD1mYWxzZQotZmkKLQotCi0jIGFzX2ZuX2V4ZWN1dGFibGVfcCBG SUxFCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIFRlc3QgaWYgRklMRSBpcyBhbiBleGVj dXRhYmxlIHJlZ3VsYXIgZmlsZS4KLWFzX2ZuX2V4ZWN1dGFibGVfcCAoKQotewotICB0ZXN0IC1m ICIkMSIgJiYgdGVzdCAteCAiJDEiCi19ICMgYXNfZm5fZXhlY3V0YWJsZV9wCi1hc190ZXN0X3g9 J3Rlc3QgLXgnCi1hc19leGVjdXRhYmxlX3A9YXNfZm5fZXhlY3V0YWJsZV9wCi0KLSMgU2VkIGV4 cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9udG8gYSB2YWxpZCBDUFAgbmFtZS4KLWFzX3RyX2Nw cD0iZXZhbCBzZWQgJ3klKiRhc19jcl9sZXR0ZXJzJVAkYXNfY3JfTEVUVEVSUyU7cyVbXl8kYXNf Y3JfYWxudW1dJV8lZyciCi0KLSMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9udG8g YSB2YWxpZCB2YXJpYWJsZSBuYW1lLgotYXNfdHJfc2g9ImV2YWwgc2VkICd5JSorJXBwJTtzJVte XyRhc19jcl9hbG51bV0lXyVnJyIKLQotCi1leGVjIDY+JjEKLSMjIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tICMjCi0jIyBNYWluIGJvZHkgb2YgJENPTkZJR19TVEFUVVMgc2Ny aXB0LiAjIwotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLV9BU0VP RgotdGVzdCAkYXNfd3JpdGVfZmFpbCA9IDAgJiYgY2htb2QgK3ggJENPTkZJR19TVEFUVVMgfHwg YWNfd3JpdGVfZmFpbD0xCi0KLWNhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193 cml0ZV9mYWlsPTEKLSMgU2F2ZSB0aGUgbG9nIG1lc3NhZ2UsIHRvIGtlZXAgJDAgYW5kIHNvIG9u IG1lYW5pbmdmdWwsIGFuZCB0bwotIyByZXBvcnQgYWN0dWFsIGlucHV0IHZhbHVlcyBvZiBDT05G SUdfRklMRVMgZXRjLiBpbnN0ZWFkIG9mIHRoZWlyCi0jIHZhbHVlcyBhZnRlciBvcHRpb25zIGhh bmRsaW5nLgotYWNfbG9nPSIKLVRoaXMgZmlsZSB3YXMgZXh0ZW5kZWQgYnkgWGVuIEh5cGVydmlz b3IgVG9vbHMgJGFzX21lIDQuMTMsIHdoaWNoIHdhcwotZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29u ZiAyLjY5LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCi0KLSAgQ09ORklHX0ZJTEVTICAg ID0gJENPTkZJR19GSUxFUwotICBDT05GSUdfSEVBREVSUyAgPSAkQ09ORklHX0hFQURFUlMKLSAg Q09ORklHX0xJTktTICAgID0gJENPTkZJR19MSU5LUwotICBDT05GSUdfQ09NTUFORFMgPSAkQ09O RklHX0NPTU1BTkRTCi0gICQgJDAgJEAKLQotb24gYChob3N0bmFtZSB8fCB1bmFtZSAtbikgMj4v ZGV2L251bGwgfCBzZWQgMXFgCi0iCi0KLV9BQ0VPRgotCi1jYXNlICRhY19jb25maWdfZmlsZXMg aW4gKiIKLSIqKSBzZXQgeCAkYWNfY29uZmlnX2ZpbGVzOyBzaGlmdDsgYWNfY29uZmlnX2ZpbGVz PSQqOzsKLWVzYWMKLQotY2FzZSAkYWNfY29uZmlnX2hlYWRlcnMgaW4gKiIKLSIqKSBzZXQgeCAk YWNfY29uZmlnX2hlYWRlcnM7IHNoaWZ0OyBhY19jb25maWdfaGVhZGVycz0kKjs7Ci1lc2FjCi0K LQotY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCi0jIEZp bGVzIHRoYXQgY29uZmlnLnN0YXR1cyB3YXMgbWFkZSBmb3IuCi1jb25maWdfZmlsZXM9IiRhY19j b25maWdfZmlsZXMiCi1jb25maWdfaGVhZGVycz0iJGFjX2NvbmZpZ19oZWFkZXJzIgotCi1fQUNF T0YKLQotY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQot YWNfY3NfdXNhZ2U9IlwKLVxgJGFzX21lJyBpbnN0YW50aWF0ZXMgZmlsZXMgYW5kIG90aGVyIGNv bmZpZ3VyYXRpb24gYWN0aW9ucwotZnJvbSB0ZW1wbGF0ZXMgYWNjb3JkaW5nIHRvIHRoZSBjdXJy ZW50IGNvbmZpZ3VyYXRpb24uICBVbmxlc3MgdGhlIGZpbGVzCi1hbmQgYWN0aW9ucyBhcmUgc3Bl Y2lmaWVkIGFzIFRBR3MsIGFsbCBhcmUgaW5zdGFudGlhdGVkIGJ5IGRlZmF1bHQuCi0KLVVzYWdl OiAkMCBbT1BUSU9OXS4uLiBbVEFHXS4uLgotCi0gIC1oLCAtLWhlbHAgICAgICAgcHJpbnQgdGhp cyBoZWxwLCB0aGVuIGV4aXQKLSAgLVYsIC0tdmVyc2lvbiAgICBwcmludCB2ZXJzaW9uIG51bWJl ciBhbmQgY29uZmlndXJhdGlvbiBzZXR0aW5ncywgdGhlbiBleGl0Ci0gICAgICAtLWNvbmZpZyAg ICAgcHJpbnQgY29uZmlndXJhdGlvbiwgdGhlbiBleGl0Ci0gIC1xLCAtLXF1aWV0LCAtLXNpbGVu dAotICAgICAgICAgICAgICAgICAgIGRvIG5vdCBwcmludCBwcm9ncmVzcyBtZXNzYWdlcwotICAt ZCwgLS1kZWJ1ZyAgICAgIGRvbid0IHJlbW92ZSB0ZW1wb3JhcnkgZmlsZXMKLSAgICAgIC0tcmVj aGVjayAgICB1cGRhdGUgJGFzX21lIGJ5IHJlY29uZmlndXJpbmcgaW4gdGhlIHNhbWUgY29uZGl0 aW9ucwotICAgICAgLS1maWxlPUZJTEVbOlRFTVBMQVRFXQotICAgICAgICAgICAgICAgICAgIGlu c3RhbnRpYXRlIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgRklMRQotICAgICAgLS1oZWFkZXI9RklM RVs6VEVNUExBVEVdCi0gICAgICAgICAgICAgICAgICAgaW5zdGFudGlhdGUgdGhlIGNvbmZpZ3Vy YXRpb24gaGVhZGVyIEZJTEUKLQotQ29uZmlndXJhdGlvbiBmaWxlczoKLSRjb25maWdfZmlsZXMK LQotQ29uZmlndXJhdGlvbiBoZWFkZXJzOgotJGNvbmZpZ19oZWFkZXJzCi0KLVJlcG9ydCBidWdz IHRvIDx4ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZz4uCi1YZW4gSHlwZXJ2aXNvciBUb29scyBob21l IHBhZ2U6IDxodHRwOi8vd3d3Lnhlbi5vcmcvPi4iCi0KLV9BQ0VPRgotY2F0ID4+JENPTkZJR19T VEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCi1hY19jc19jb25maWc9ImAkYXNfZWNo byAiJGFjX2NvbmZpZ3VyZV9hcmdzIiB8IHNlZCAncy9eIC8vOyBzL1tcXCIiXGBcJF0vXFxcXCYv ZydgIgotYWNfY3NfdmVyc2lvbj0iXFwKLVhlbiBIeXBlcnZpc29yIFRvb2xzIGNvbmZpZy5zdGF0 dXMgNC4xMwotY29uZmlndXJlZCBieSAkMCwgZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5 LAotICB3aXRoIG9wdGlvbnMgXFwiXCRhY19jc19jb25maWdcXCIKLQotQ29weXJpZ2h0IChDKSAy MDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotVGhpcyBjb25maWcuc3RhdHVzIHNj cmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi1naXZl cyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQu IgotCi1hY19wd2Q9JyRhY19wd2QnCi1zcmNkaXI9JyRzcmNkaXInCi1JTlNUQUxMPSckSU5TVEFM TCcKLUFXSz0nJEFXSycKLXRlc3QgLW4gIlwkQVdLIiB8fCBBV0s9YXdrCi1fQUNFT0YKLQotY2F0 ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQotIyBUaGUgZGVm YXVsdCBsaXN0cyBhcHBseSBpZiB0aGUgdXNlciBkb2VzIG5vdCBzcGVjaWZ5IGFueSBmaWxlLgot YWNfbmVlZF9kZWZhdWx0cz06Ci13aGlsZSB0ZXN0ICQjICE9IDAKLWRvCi0gIGNhc2UgJDEgaW4K LSAgLS0qPT8qKQotICAgIGFjX29wdGlvbj1gZXhwciAiWCQxIiA6ICdYXChbXj1dKlwpPSdgCi0g ICAgYWNfb3B0YXJnPWBleHByICJYJDEiIDogJ1hbXj1dKj1cKC4qXCknYAotICAgIGFjX3NoaWZ0 PToKLSAgICA7OwotICAtLSo9KQotICAgIGFjX29wdGlvbj1gZXhwciAiWCQxIiA6ICdYXChbXj1d KlwpPSdgCi0gICAgYWNfb3B0YXJnPQotICAgIGFjX3NoaWZ0PToKLSAgICA7OwotICAqKQotICAg IGFjX29wdGlvbj0kMQotICAgIGFjX29wdGFyZz0kMgotICAgIGFjX3NoaWZ0PXNoaWZ0Ci0gICAg OzsKLSAgZXNhYwotCi0gIGNhc2UgJGFjX29wdGlvbiBpbgotICAjIEhhbmRsaW5nIG9mIHRoZSBv cHRpb25zLgotICAtcmVjaGVjayB8IC0tcmVjaGVjayB8IC0tcmVjaGVjIHwgLS1yZWNoZSB8IC0t cmVjaCB8IC0tcmVjIHwgLS1yZSB8IC0tcikKLSAgICBhY19jc19yZWNoZWNrPTogOzsKLSAgLS12 ZXJzaW9uIHwgLS12ZXJzaW8gfCAtLXZlcnNpIHwgLS12ZXJzIHwgLS12ZXIgfCAtLXZlIHwgLS12 IHwgLVYgKQotICAgICRhc19lY2hvICIkYWNfY3NfdmVyc2lvbiI7IGV4aXQgOzsKLSAgLS1jb25m aWcgfCAtLWNvbmZpIHwgLS1jb25mIHwgLS1jb24gfCAtLWNvIHwgLS1jICkKLSAgICAkYXNfZWNo byAiJGFjX2NzX2NvbmZpZyI7IGV4aXQgOzsKLSAgLS1kZWJ1ZyB8IC0tZGVidSB8IC0tZGViIHwg LS1kZSB8IC0tZCB8IC1kICkKLSAgICBkZWJ1Zz06IDs7Ci0gIC0tZmlsZSB8IC0tZmlsIHwgLS1m aSB8IC0tZiApCi0gICAgJGFjX3NoaWZ0Ci0gICAgY2FzZSAkYWNfb3B0YXJnIGluCi0gICAgKlwn KikgYWNfb3B0YXJnPWAkYXNfZWNobyAiJGFjX29wdGFyZyIgfCBzZWQgInMvJy8nXFxcXFxcXFwn Jy9nImAgOzsKLSAgICAnJykgYXNfZm5fZXJyb3IgJD8gIm1pc3NpbmcgZmlsZSBhcmd1bWVudCIg OzsKLSAgICBlc2FjCi0gICAgYXNfZm5fYXBwZW5kIENPTkZJR19GSUxFUyAiICckYWNfb3B0YXJn JyIKLSAgICBhY19uZWVkX2RlZmF1bHRzPWZhbHNlOzsKLSAgLS1oZWFkZXIgfCAtLWhlYWRlIHwg LS1oZWFkIHwgLS1oZWEgKQotICAgICRhY19zaGlmdAotICAgIGNhc2UgJGFjX29wdGFyZyBpbgot ICAgICpcJyopIGFjX29wdGFyZz1gJGFzX2VjaG8gIiRhY19vcHRhcmciIHwgc2VkICJzLycvJ1xc XFxcXFxcJycvZyJgIDs7Ci0gICAgZXNhYwotICAgIGFzX2ZuX2FwcGVuZCBDT05GSUdfSEVBREVS UyAiICckYWNfb3B0YXJnJyIKLSAgICBhY19uZWVkX2RlZmF1bHRzPWZhbHNlOzsKLSAgLS1oZSB8 IC0taCkKLSAgICAjIENvbmZsaWN0IGJldHdlZW4gLS1oZWxwIGFuZCAtLWhlYWRlcgotICAgIGFz X2ZuX2Vycm9yICQ/ICJhbWJpZ3VvdXMgb3B0aW9uOiBcYCQxJwotVHJ5IFxgJDAgLS1oZWxwJyBm b3IgbW9yZSBpbmZvcm1hdGlvbi4iOzsKLSAgLS1oZWxwIHwgLS1oZWwgfCAtaCApCi0gICAgJGFz X2VjaG8gIiRhY19jc191c2FnZSI7IGV4aXQgOzsKLSAgLXEgfCAtcXVpZXQgfCAtLXF1aWV0IHwg LS1xdWllIHwgLS1xdWkgfCAtLXF1IHwgLS1xIFwKLSAgfCAtc2lsZW50IHwgLS1zaWxlbnQgfCAt LXNpbGVuIHwgLS1zaWxlIHwgLS1zaWwgfCAtLXNpIHwgLS1zKQotICAgIGFjX2NzX3NpbGVudD06 IDs7Ci0KLSAgIyBUaGlzIGlzIGFuIGVycm9yLgotICAtKikgYXNfZm5fZXJyb3IgJD8gInVucmVj b2duaXplZCBvcHRpb246IFxgJDEnCi1UcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0 aW9uLiIgOzsKLQotICAqKSBhc19mbl9hcHBlbmQgYWNfY29uZmlnX3RhcmdldHMgIiAkMSIKLSAg ICAgYWNfbmVlZF9kZWZhdWx0cz1mYWxzZSA7OwotCi0gIGVzYWMKLSAgc2hpZnQKLWRvbmUKLQot YWNfY29uZmlndXJlX2V4dHJhX2FyZ3M9Ci0KLWlmICRhY19jc19zaWxlbnQ7IHRoZW4KLSAgZXhl YyA2Pi9kZXYvbnVsbAotICBhY19jb25maWd1cmVfZXh0cmFfYXJncz0iJGFjX2NvbmZpZ3VyZV9l eHRyYV9hcmdzIC0tc2lsZW50IgotZmkKLQotX0FDRU9GCi1jYXQgPj4kQ09ORklHX1NUQVRVUyA8 PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKLWlmIFwkYWNfY3NfcmVjaGVjazsgdGhlbgotICBz ZXQgWCAkU0hFTEwgJyQwJyAkYWNfY29uZmlndXJlX2FyZ3MgXCRhY19jb25maWd1cmVfZXh0cmFf YXJncyAtLW5vLWNyZWF0ZSAtLW5vLXJlY3Vyc2lvbgotICBzaGlmdAotICBcJGFzX2VjaG8gInJ1 bm5pbmcgQ09ORklHX1NIRUxMPSRTSEVMTCBcJCoiID4mNgotICBDT05GSUdfU0hFTEw9JyRTSEVM TCcKLSAgZXhwb3J0IENPTkZJR19TSEVMTAotICBleGVjICJcJEAiCi1maQotCi1fQUNFT0YKLWNh dCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKLWV4ZWMgNT4+ Y29uZmlnLmxvZwotewotICBlY2hvCi0gIHNlZCAnaDtzLy4vLS9nO3MvXi4uLi8jIyAvO3MvLi4u JC8gIyMvO3A7eDtwO3gnIDw8X0FTQk9YCi0jIyBSdW5uaW5nICRhc19tZS4gIyMKLV9BU0JPWAot ICAkYXNfZWNobyAiJGFjX2xvZyIKLX0gPiY1Ci0KLV9BQ0VPRgotY2F0ID4+JENPTkZJR19TVEFU VVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCi1fQUNFT0YKLQotY2F0ID4+JENPTkZJR19T VEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQotCi0jIEhhbmRsaW5nIG9mIGFyZ3Vt ZW50cy4KLWZvciBhY19jb25maWdfdGFyZ2V0IGluICRhY19jb25maWdfdGFyZ2V0cwotZG8KLSAg Y2FzZSAkYWNfY29uZmlnX3RhcmdldCBpbgotICAgICIuLi9jb25maWcvVG9vbHMubWsiKSBDT05G SUdfRklMRVM9IiRDT05GSUdfRklMRVMgLi4vY29uZmlnL1Rvb2xzLm1rIiA7OwotICAgICJob3Rw bHVnL0ZyZWVCU0QvcmMuZC94ZW5jb21tb25zIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVT IGhvdHBsdWcvRnJlZUJTRC9yYy5kL3hlbmNvbW1vbnMiIDs7Ci0gICAgImhvdHBsdWcvRnJlZUJT RC9yYy5kL3hlbmRyaXZlcmRvbWFpbiIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBob3Rw bHVnL0ZyZWVCU0QvcmMuZC94ZW5kcml2ZXJkb21haW4iIDs7Ci0gICAgImhvdHBsdWcvTGludXgv aW5pdC5kL3N5c2NvbmZpZy54ZW5jb21tb25zIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVT IGhvdHBsdWcvTGludXgvaW5pdC5kL3N5c2NvbmZpZy54ZW5jb21tb25zIiA7OwotICAgICJob3Rw bHVnL0xpbnV4L2luaXQuZC9zeXNjb25maWcueGVuZG9tYWlucyIpIENPTkZJR19GSUxFUz0iJENP TkZJR19GSUxFUyBob3RwbHVnL0xpbnV4L2luaXQuZC9zeXNjb25maWcueGVuZG9tYWlucyIgOzsK LSAgICAiaG90cGx1Zy9MaW51eC9pbml0LmQveGVuLXdhdGNoZG9nIikgQ09ORklHX0ZJTEVTPSIk Q09ORklHX0ZJTEVTIGhvdHBsdWcvTGludXgvaW5pdC5kL3hlbi13YXRjaGRvZyIgOzsKLSAgICAi aG90cGx1Zy9MaW51eC9pbml0LmQveGVuY29tbW9ucyIpIENPTkZJR19GSUxFUz0iJENPTkZJR19G SUxFUyBob3RwbHVnL0xpbnV4L2luaXQuZC94ZW5jb21tb25zIiA7OwotICAgICJob3RwbHVnL0xp bnV4L2luaXQuZC94ZW5kb21haW5zIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGhvdHBs dWcvTGludXgvaW5pdC5kL3hlbmRvbWFpbnMiIDs7Ci0gICAgImhvdHBsdWcvTGludXgvaW5pdC5k L3hlbmRyaXZlcmRvbWFpbiIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBob3RwbHVnL0xp bnV4L2luaXQuZC94ZW5kcml2ZXJkb21haW4iIDs7Ci0gICAgImhvdHBsdWcvTGludXgvbGF1bmNo LXhlbnN0b3JlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGhvdHBsdWcvTGludXgvbGF1 bmNoLXhlbnN0b3JlIiA7OwotICAgICJob3RwbHVnL0xpbnV4L3ZpZi1zZXR1cCIpIENPTkZJR19G SUxFUz0iJENPTkZJR19GSUxFUyBob3RwbHVnL0xpbnV4L3ZpZi1zZXR1cCIgOzsKLSAgICAiaG90 cGx1Zy9MaW51eC94ZW4taG90cGx1Zy1jb21tb24uc2giKSBDT05GSUdfRklMRVM9IiRDT05GSUdf RklMRVMgaG90cGx1Zy9MaW51eC94ZW4taG90cGx1Zy1jb21tb24uc2giIDs7Ci0gICAgImhvdHBs dWcvTGludXgveGVuZG9tYWlucyIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBob3RwbHVn L0xpbnV4L3hlbmRvbWFpbnMiIDs7Ci0gICAgImhvdHBsdWcvTmV0QlNEL3JjLmQveGVuY29tbW9u cyIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBob3RwbHVnL05ldEJTRC9yYy5kL3hlbmNv bW1vbnMiIDs7Ci0gICAgImhvdHBsdWcvTmV0QlNEL3JjLmQveGVuZHJpdmVyZG9tYWluIikgQ09O RklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGhvdHBsdWcvTmV0QlNEL3JjLmQveGVuZHJpdmVyZG9t YWluIiA7OwotICAgICJvY2FtbC94ZW5zdG9yZWQvb3hlbnN0b3JlZC5jb25mIikgQ09ORklHX0ZJ TEVTPSIkQ09ORklHX0ZJTEVTIG9jYW1sL3hlbnN0b3JlZC9veGVuc3RvcmVkLmNvbmYiIDs7Ci0g ICAgImNvbmZpZy5oIikgQ09ORklHX0hFQURFUlM9IiRDT05GSUdfSEVBREVSUyBjb25maWcuaCIg OzsKLSAgICAiaG90cGx1Zy9MaW51eC9zeXN0ZW1kL3Byb2MteGVuLm1vdW50IikgQ09ORklHX0ZJ TEVTPSIkQ09ORklHX0ZJTEVTIGhvdHBsdWcvTGludXgvc3lzdGVtZC9wcm9jLXhlbi5tb3VudCIg OzsKLSAgICAiaG90cGx1Zy9MaW51eC9zeXN0ZW1kL3Zhci1saWIteGVuc3RvcmVkLm1vdW50Iikg Q09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGhvdHBsdWcvTGludXgvc3lzdGVtZC92YXItbGli LXhlbnN0b3JlZC5tb3VudCIgOzsKLSAgICAiaG90cGx1Zy9MaW51eC9zeXN0ZW1kL3hlbi1pbml0 LWRvbTAuc2VydmljZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBob3RwbHVnL0xpbnV4 L3N5c3RlbWQveGVuLWluaXQtZG9tMC5zZXJ2aWNlIiA7OwotICAgICJob3RwbHVnL0xpbnV4L3N5 c3RlbWQveGVuLXFlbXUtZG9tMC1kaXNrLWJhY2tlbmQuc2VydmljZSIpIENPTkZJR19GSUxFUz0i JENPTkZJR19GSUxFUyBob3RwbHVnL0xpbnV4L3N5c3RlbWQveGVuLXFlbXUtZG9tMC1kaXNrLWJh Y2tlbmQuc2VydmljZSIgOzsKLSAgICAiaG90cGx1Zy9MaW51eC9zeXN0ZW1kL3hlbi13YXRjaGRv Zy5zZXJ2aWNlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGhvdHBsdWcvTGludXgvc3lz dGVtZC94ZW4td2F0Y2hkb2cuc2VydmljZSIgOzsKLSAgICAiaG90cGx1Zy9MaW51eC9zeXN0ZW1k L3hlbmNvbnNvbGVkLnNlcnZpY2UiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgaG90cGx1 Zy9MaW51eC9zeXN0ZW1kL3hlbmNvbnNvbGVkLnNlcnZpY2UiIDs7Ci0gICAgImhvdHBsdWcvTGlu dXgvc3lzdGVtZC94ZW5kb21haW5zLnNlcnZpY2UiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklM RVMgaG90cGx1Zy9MaW51eC9zeXN0ZW1kL3hlbmRvbWFpbnMuc2VydmljZSIgOzsKLSAgICAiaG90 cGx1Zy9MaW51eC9zeXN0ZW1kL3hlbmRyaXZlcmRvbWFpbi5zZXJ2aWNlIikgQ09ORklHX0ZJTEVT PSIkQ09ORklHX0ZJTEVTIGhvdHBsdWcvTGludXgvc3lzdGVtZC94ZW5kcml2ZXJkb21haW4uc2Vy dmljZSIgOzsKLSAgICAiaG90cGx1Zy9MaW51eC9zeXN0ZW1kL3hlbnN0b3JlZC5zZXJ2aWNlIikg Q09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGhvdHBsdWcvTGludXgvc3lzdGVtZC94ZW5zdG9y ZWQuc2VydmljZSIgOzsKLQotICAqKSBhc19mbl9lcnJvciAkPyAiaW52YWxpZCBhcmd1bWVudDog XGAkYWNfY29uZmlnX3RhcmdldCciICIkTElORU5PIiA1OzsKLSAgZXNhYwotZG9uZQotCi0KLSMg SWYgdGhlIHVzZXIgZGlkIG5vdCB1c2UgdGhlIGFyZ3VtZW50cyB0byBzcGVjaWZ5IHRoZSBpdGVt cyB0byBpbnN0YW50aWF0ZSwKLSMgdGhlbiB0aGUgZW52dmFyIGludGVyZmFjZSBpcyB1c2VkLiAg U2V0IG9ubHkgdGhvc2UgdGhhdCBhcmUgbm90LgotIyBXZSB1c2UgdGhlIGxvbmcgZm9ybSBmb3Ig dGhlIGRlZmF1bHQgYXNzaWdubWVudCBiZWNhdXNlIG9mIGFuIGV4dHJlbWVseQotIyBiaXphcnJl IGJ1ZyBvbiBTdW5PUyA0LjEuMy4KLWlmICRhY19uZWVkX2RlZmF1bHRzOyB0aGVuCi0gIHRlc3Qg IiR7Q09ORklHX0ZJTEVTK3NldH0iID0gc2V0IHx8IENPTkZJR19GSUxFUz0kY29uZmlnX2ZpbGVz Ci0gIHRlc3QgIiR7Q09ORklHX0hFQURFUlMrc2V0fSIgPSBzZXQgfHwgQ09ORklHX0hFQURFUlM9 JGNvbmZpZ19oZWFkZXJzCi1maQotCi0jIEhhdmUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGZvciBj b252ZW5pZW5jZS4gIE1ha2UgaXQgaW4gdGhlIGJ1aWxkIHRyZWUKLSMgc2ltcGx5IGJlY2F1c2Ug dGhlcmUgaXMgbm8gcmVhc29uIGFnYWluc3QgaGF2aW5nIGl0IGhlcmUsIGFuZCBpbiBhZGRpdGlv biwKLSMgY3JlYXRpbmcgYW5kIG1vdmluZyBmaWxlcyBmcm9tIC90bXAgY2FuIHNvbWV0aW1lcyBj YXVzZSBwcm9ibGVtcy4KLSMgSG9vayBmb3IgaXRzIHJlbW92YWwgdW5sZXNzIGRlYnVnZ2luZy4K LSMgTm90ZSB0aGF0IHRoZXJlIGlzIGEgc21hbGwgd2luZG93IGluIHdoaWNoIHRoZSBkaXJlY3Rv cnkgd2lsbCBub3QgYmUgY2xlYW5lZDoKLSMgYWZ0ZXIgaXRzIGNyZWF0aW9uIGJ1dCBiZWZvcmUg aXRzIG5hbWUgaGFzIGJlZW4gYXNzaWduZWQgdG8gYCR0bXAnLgotJGRlYnVnIHx8Ci17Ci0gIHRt cD0gYWNfdG1wPQotICB0cmFwICdleGl0X3N0YXR1cz0kPwotICA6ICIke2FjX3RtcDo9JHRtcH0i Ci0gIHsgdGVzdCAhIC1kICIkYWNfdG1wIiB8fCBybSAtZnIgIiRhY190bXAiOyB9ICYmIGV4aXQg JGV4aXRfc3RhdHVzCi0nIDAKLSAgdHJhcCAnYXNfZm5fZXhpdCAxJyAxIDIgMTMgMTUKLX0KLSMg Q3JlYXRlIGEgKHNlY3VyZSkgdG1wIGRpcmVjdG9yeSBmb3IgdG1wIGZpbGVzLgotCi17Ci0gIHRt cD1gKHVtYXNrIDA3NyAmJiBta3RlbXAgLWQgIi4vY29uZlhYWFhYWCIpIDI+L2Rldi9udWxsYCAm JgotICB0ZXN0IC1kICIkdG1wIgotfSAgfHwKLXsKLSAgdG1wPS4vY29uZiQkLSRSQU5ET00KLSAg KHVtYXNrIDA3NyAmJiBta2RpciAiJHRtcCIpCi19IHx8IGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3Qg Y3JlYXRlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSBpbiAuIiAiJExJTkVOTyIgNQotYWNfdG1wPSR0 bXAKLQotIyBTZXQgdXAgdGhlIHNjcmlwdHMgZm9yIENPTkZJR19GSUxFUyBzZWN0aW9uLgotIyBO byBuZWVkIHRvIGdlbmVyYXRlIHRoZW0gaWYgdGhlcmUgYXJlIG5vIENPTkZJR19GSUxFUy4KLSMg VGhpcyBoYXBwZW5zIGZvciBpbnN0YW5jZSB3aXRoIGAuL2NvbmZpZy5zdGF0dXMgY29uZmlnLmgn LgotaWYgdGVzdCAtbiAiJENPTkZJR19GSUxFUyI7IHRoZW4KLQotCi1hY19jcj1gZWNobyBYIHwg dHIgWCAnXDAxNSdgCi0jIE9uIGN5Z3dpbiwgYmFzaCBjYW4gZWF0IFxyIGluc2lkZSBgYCBpZiB0 aGUgdXNlciByZXF1ZXN0ZWQgaWduY3IuCi0jIEJ1dCB3ZSBrbm93IG9mIG5vIG90aGVyIHNoZWxs IHdoZXJlIGFjX2NyIHdvdWxkIGJlIGVtcHR5IGF0IHRoaXMKLSMgcG9pbnQsIHNvIHdlIGNhbiB1 c2UgYSBiYXNoaXNtIGFzIGEgZmFsbGJhY2suCi1pZiB0ZXN0ICJ4JGFjX2NyIiA9IHg7IHRoZW4K LSAgZXZhbCBhY19jcj1cJFwnXFxyXCcKLWZpCi1hY19jc19hd2tfY3I9YCRBV0sgJ0JFR0lOIHsg cHJpbnQgImFccmIiIH0nIDwvZGV2L251bGwgMj4vZGV2L251bGxgCi1pZiB0ZXN0ICIkYWNfY3Nf YXdrX2NyIiA9ICJhJHthY19jcn1iIjsgdGhlbgotICBhY19jc19hd2tfY3I9J1xccicKLWVsc2UK LSAgYWNfY3NfYXdrX2NyPSRhY19jcgotZmkKLQotZWNobyAnQkVHSU4geycgPiIkYWNfdG1wL3N1 YnMxLmF3ayIgJiYKLV9BQ0VPRgotCi0KLXsKLSAgZWNobyAiY2F0ID5jb25mJCRzdWJzLmF3ayA8 PF9BQ0VPRiIgJiYKLSAgZWNobyAiJGFjX3N1YnN0X3ZhcnMiIHwgc2VkICdzLy4qLyYhJCYkYWNf ZGVsaW0vJyAmJgotICBlY2hvICJfQUNFT0YiCi19ID5jb25mJCRzdWJzLnNoIHx8Ci0gIGFzX2Zu X2Vycm9yICQ/ICJjb3VsZCBub3QgbWFrZSAkQ09ORklHX1NUQVRVUyIgIiRMSU5FTk8iIDUKLWFj X2RlbGltX251bT1gZWNobyAiJGFjX3N1YnN0X3ZhcnMiIHwgZ3JlcCAtYyAnXidgCi1hY19kZWxp bT0nJSFfISMgJwotZm9yIGFjX2xhc3RfdHJ5IGluIGZhbHNlIGZhbHNlIGZhbHNlIGZhbHNlIGZh bHNlIDo7IGRvCi0gIC4gLi9jb25mJCRzdWJzLnNoIHx8Ci0gICAgYXNfZm5fZXJyb3IgJD8gImNv dWxkIG5vdCBtYWtlICRDT05GSUdfU1RBVFVTIiAiJExJTkVOTyIgNQotCi0gIGFjX2RlbGltX249 YHNlZCAtbiAicy8uKiRhY19kZWxpbVwkL1gvcCIgY29uZiQkc3Vicy5hd2sgfCBncmVwIC1jIFhg Ci0gIGlmIHRlc3QgJGFjX2RlbGltX24gPSAkYWNfZGVsaW1fbnVtOyB0aGVuCi0gICAgYnJlYWsK LSAgZWxpZiAkYWNfbGFzdF90cnk7IHRoZW4KLSAgICBhc19mbl9lcnJvciAkPyAiY291bGQgbm90 IG1ha2UgJENPTkZJR19TVEFUVVMiICIkTElORU5PIiA1Ci0gIGVsc2UKLSAgICBhY19kZWxpbT0i JGFjX2RlbGltISRhY19kZWxpbSBfJGFjX2RlbGltISEgIgotICBmaQotZG9uZQotcm0gLWYgY29u ZiQkc3Vicy5zaAotCi1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9m YWlsPTEKLWNhdCA+PiJcJGFjX3RtcC9zdWJzMS5hd2siIDw8XFxfQUNBV0sgJiYKLV9BQ0VPRgot c2VkIC1uICcKLWgKLXMvXi9TWyIvOyBzLyEuKi8iXT0vCi1wCi1nCi1zL15bXiFdKiEvLwotOnJl cGwKLXQgcmVwbAotcy8nIiRhY19kZWxpbSInJC8vCi10IGRlbGltCi06bmwKLWgKLXMvXCguXHsx NDhcfVwpLi4qL1wxLwotdCBtb3JlMQotcy9bIlxcXS9cXCYvZzsgcy9eLyIvOyBzLyQvXFxuIlxc LwotcAotbgotYiByZXBsCi06bW9yZTEKLXMvWyJcXF0vXFwmL2c7IHMvXi8iLzsgcy8kLyJcXC8K LXAKLWcKLXMvLlx7MTQ4XH0vLwotdCBubAotOmRlbGltCi1oCi1zL1woLlx7MTQ4XH1cKS4uKi9c MS8KLXQgbW9yZTIKLXMvWyJcXF0vXFwmL2c7IHMvXi8iLzsgcy8kLyIvCi1wCi1iCi06bW9yZTIK LXMvWyJcXF0vXFwmL2c7IHMvXi8iLzsgcy8kLyJcXC8KLXAKLWcKLXMvLlx7MTQ4XH0vLwotdCBk ZWxpbQotJyA8Y29uZiQkc3Vicy5hd2sgfCBzZWQgJwotL15bXiIiXS97Ci0gIE4KLSAgcy9cbi8v Ci19Ci0nID4+JENPTkZJR19TVEFUVVMgfHwgYWNfd3JpdGVfZmFpbD0xCi1ybSAtZiBjb25mJCRz dWJzLmF3awotY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0x Ci1fQUNBV0sKLWNhdCA+PiJcJGFjX3RtcC9zdWJzMS5hd2siIDw8X0FDQVdLICYmCi0gIGZvciAo a2V5IGluIFMpIFNfaXNfc2V0W2tleV0gPSAxCi0gIEZTID0gIgciCi0KLX0KLXsKLSAgbGluZSA9 ICQgMAotICBuZmllbGRzID0gc3BsaXQobGluZSwgZmllbGQsICJAIikKLSAgc3Vic3RlZCA9IDAK LSAgbGVuID0gbGVuZ3RoKGZpZWxkWzFdKQotICBmb3IgKGkgPSAyOyBpIDwgbmZpZWxkczsgaSsr KSB7Ci0gICAga2V5ID0gZmllbGRbaV0KLSAgICBrZXlsZW4gPSBsZW5ndGgoa2V5KQotICAgIGlm IChTX2lzX3NldFtrZXldKSB7Ci0gICAgICB2YWx1ZSA9IFNba2V5XQotICAgICAgbGluZSA9IHN1 YnN0cihsaW5lLCAxLCBsZW4pICIiIHZhbHVlICIiIHN1YnN0cihsaW5lLCBsZW4gKyBrZXlsZW4g KyAzKQotICAgICAgbGVuICs9IGxlbmd0aCh2YWx1ZSkgKyBsZW5ndGgoZmllbGRbKytpXSkKLSAg ICAgIHN1YnN0ZWQgPSAxCi0gICAgfSBlbHNlCi0gICAgICBsZW4gKz0gMSArIGtleWxlbgotICB9 Ci0KLSAgcHJpbnQgbGluZQotfQotCi1fQUNBV0sKLV9BQ0VPRgotY2F0ID4+JENPTkZJR19TVEFU VVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQotaWYgc2VkICJzLyRhY19jci8vIiA8IC9k ZXYvbnVsbCA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gIHNlZCAicy8kYWNfY3JcJC8vOyBzLyRh Y19jci8kYWNfY3NfYXdrX2NyL2ciCi1lbHNlCi0gIGNhdAotZmkgPCAiJGFjX3RtcC9zdWJzMS5h d2siID4gIiRhY190bXAvc3Vicy5hd2siIFwKLSAgfHwgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5v dCBzZXR1cCBjb25maWcgZmlsZXMgbWFjaGluZXJ5IiAiJExJTkVOTyIgNQotX0FDRU9GCi0KLSMg VlBBVEggbWF5IGNhdXNlIHRyb3VibGUgd2l0aCBzb21lIG1ha2VzLCBzbyB3ZSByZW1vdmUgc29s ZSAkKHNyY2RpciksCi0jICR7c3JjZGlyfSBhbmQgQHNyY2RpckAgZW50cmllcyBmcm9tIFZQQVRI IGlmIHNyY2RpciBpcyAiLiIsIHN0cmlwIGxlYWRpbmcgYW5kCi0jIHRyYWlsaW5nIGNvbG9ucyBh bmQgdGhlbiByZW1vdmUgdGhlIHdob2xlIGxpbmUgaWYgVlBBVEggYmVjb21lcyBlbXB0eQotIyAo YWN0dWFsbHkgd2UgbGVhdmUgYW4gZW1wdHkgbGluZSB0byBwcmVzZXJ2ZSBsaW5lIG51bWJlcnMp LgotaWYgdGVzdCAieCRzcmNkaXIiID0geC47IHRoZW4KLSAgYWNfdnBzdWI9Jy9eWwkgXSpWUEFU SFsJIF0qPVsJIF0qL3sKLWgKLXMvLy8KLXMvXi86Lwotcy9bCSBdKiQvOi8KLXMvOlwkKHNyY2Rp cik6LzovZwotcy86XCR7c3JjZGlyfTovOi9nCi1zLzpAc3JjZGlyQDovOi9nCi1zL146Ki8vCi1z LzoqJC8vCi14Ci1zL1woPVsJIF0qXCkuKi9cMS8KLUcKLXMvXG4vLwotcy9eW149XSo9WwkgXSok Ly8KLX0nCi1maQotCi1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVf ZmFpbD0xCi1maSAjIHRlc3QgLW4gIiRDT05GSUdfRklMRVMiCi0KLSMgU2V0IHVwIHRoZSBzY3Jp cHRzIGZvciBDT05GSUdfSEVBREVSUyBzZWN0aW9uLgotIyBObyBuZWVkIHRvIGdlbmVyYXRlIHRo ZW0gaWYgdGhlcmUgYXJlIG5vIENPTkZJR19IRUFERVJTLgotIyBUaGlzIGhhcHBlbnMgZm9yIGlu c3RhbmNlIHdpdGggYC4vY29uZmlnLnN0YXR1cyBNYWtlZmlsZScuCi1pZiB0ZXN0IC1uICIkQ09O RklHX0hFQURFUlMiOyB0aGVuCi1jYXQgPiIkYWNfdG1wL2RlZmluZXMuYXdrIiA8PFxfQUNBV0sg fHwKLUJFR0lOIHsKLV9BQ0VPRgotCi0jIFRyYW5zZm9ybSBjb25mZGVmcy5oIGludG8gYW4gYXdr IHNjcmlwdCBgZGVmaW5lcy5hd2snLCBlbWJlZGRlZCBhcwotIyBoZXJlLWRvY3VtZW50IGluIGNv bmZpZy5zdGF0dXMsIHRoYXQgc3Vic3RpdHV0ZXMgdGhlIHByb3BlciB2YWx1ZXMgaW50bwotIyBj b25maWcuaC5pbiB0byBwcm9kdWNlIGNvbmZpZy5oLgotCi0jIENyZWF0ZSBhIGRlbGltaXRlciBz dHJpbmcgdGhhdCBkb2VzIG5vdCBleGlzdCBpbiBjb25mZGVmcy5oLCB0byBlYXNlCi0jIGhhbmRs aW5nIG9mIGxvbmcgbGluZXMuCi1hY19kZWxpbT0nJSFfISMgJwotZm9yIGFjX2xhc3RfdHJ5IGlu IGZhbHNlIGZhbHNlIDo7IGRvCi0gIGFjX3R0PWBzZWQgLW4gIi8kYWNfZGVsaW0vcCIgY29uZmRl ZnMuaGAKLSAgaWYgdGVzdCAteiAiJGFjX3R0IjsgdGhlbgotICAgIGJyZWFrCi0gIGVsaWYgJGFj X2xhc3RfdHJ5OyB0aGVuCi0gICAgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBtYWtlICRDT05G SUdfSEVBREVSUyIgIiRMSU5FTk8iIDUKLSAgZWxzZQotICAgIGFjX2RlbGltPSIkYWNfZGVsaW0h JGFjX2RlbGltIF8kYWNfZGVsaW0hISAiCi0gIGZpCi1kb25lCi0KLSMgRm9yIHRoZSBhd2sgc2Ny aXB0LCBEIGlzIGFuIGFycmF5IG9mIG1hY3JvIHZhbHVlcyBrZXllZCBieSBuYW1lLAotIyBsaWtl d2lzZSBQIGNvbnRhaW5zIG1hY3JvIHBhcmFtZXRlcnMgaWYgYW55LiAgUHJlc2VydmUgYmFja3Ns YXNoCi0jIG5ld2xpbmUgc2VxdWVuY2VzLgotCi1hY193b3JkX3JlPVtfJGFzX2NyX0xldHRlcnNd W18kYXNfY3JfYWxudW1dKgotc2VkIC1uICcKLXMvLlx7MTQ4XH0vJiciJGFjX2RlbGltIicvZwot dCByc2V0Ci06cnNldAotcy9eWwkgXSojWwkgXSpkZWZpbmVbCSBdWwkgXSovIC8KLXQgZGVmCi1k Ci06ZGVmCi1zL1xcJC8vCi10IGJzbmwKLXMvWyJcXF0vXFwmL2cKLXMvXiBcKCciJGFjX3dvcmRf cmUiJ1wpXCgoW14oKV0qKVwpWwkgXSpcKC4qXCkvUFsiXDEiXT0iXDIiXAotRFsiXDEiXT0iIFwz Ii9wCi1zL14gXCgnIiRhY193b3JkX3JlIidcKVsJIF0qXCguKlwpL0RbIlwxIl09IiBcMiIvcAot ZAotOmJzbmwKLXMvWyJcXF0vXFwmL2cKLXMvXiBcKCciJGFjX3dvcmRfcmUiJ1wpXCgoW14oKV0q KVwpWwkgXSpcKC4qXCkvUFsiXDEiXT0iXDIiXAotRFsiXDEiXT0iIFwzXFxcXFxcbiJcXC9wCi10 IGNvbnQKLXMvXiBcKCciJGFjX3dvcmRfcmUiJ1wpWwkgXSpcKC4qXCkvRFsiXDEiXT0iIFwyXFxc XFxcbiJcXC9wCi10IGNvbnQKLWQKLTpjb250Ci1uCi1zLy5cezE0OFx9LyYnIiRhY19kZWxpbSIn L2cKLXQgY2xlYXIKLTpjbGVhcgotcy9cXCQvLwotdCBic25sYwotcy9bIlxcXS9cXCYvZzsgcy9e LyIvOyBzLyQvIi9wCi1kCi06YnNubGMKLXMvWyJcXF0vXFwmL2c7IHMvXi8iLzsgcy8kL1xcXFxc XG4iXFwvcAotYiBjb250Ci0nIDxjb25mZGVmcy5oIHwgc2VkICcKLXMvJyIkYWNfZGVsaW0iJy8i XFxcCi0iL2cnID4+JENPTkZJR19TVEFUVVMgfHwgYWNfd3JpdGVfZmFpbD0xCi0KLWNhdCA+PiRD T05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQotICBmb3IgKGtleSBpbiBE KSBEX2lzX3NldFtrZXldID0gMQotICBGUyA9ICIHIgotfQotL15bXHQgXSojW1x0IF0qKGRlZmlu ZXx1bmRlZilbXHQgXSskYWNfd29yZF9yZShbXHQgKF18XCQpLyB7Ci0gIGxpbmUgPSBcJCAwCi0g IHNwbGl0KGxpbmUsIGFyZywgIiAiKQotICBpZiAoYXJnWzFdID09ICIjIikgewotICAgIGRlZnVu ZGVmID0gYXJnWzJdCi0gICAgbWFjMSA9IGFyZ1szXQotICB9IGVsc2UgewotICAgIGRlZnVuZGVm ID0gc3Vic3RyKGFyZ1sxXSwgMikKLSAgICBtYWMxID0gYXJnWzJdCi0gIH0KLSAgc3BsaXQobWFj MSwgbWFjMiwgIigiKSAjKQotICBtYWNybyA9IG1hYzJbMV0KLSAgcHJlZml4ID0gc3Vic3RyKGxp bmUsIDEsIGluZGV4KGxpbmUsIGRlZnVuZGVmKSAtIDEpCi0gIGlmIChEX2lzX3NldFttYWNyb10p IHsKLSAgICAjIFByZXNlcnZlIHRoZSB3aGl0ZSBzcGFjZSBzdXJyb3VuZGluZyB0aGUgIiMiLgot ICAgIHByaW50IHByZWZpeCAiZGVmaW5lIiwgbWFjcm8gUFttYWNyb10gRFttYWNyb10KLSAgICBu ZXh0Ci0gIH0gZWxzZSB7Ci0gICAgIyBSZXBsYWNlICN1bmRlZiB3aXRoIGNvbW1lbnRzLiAgVGhp cyBpcyBuZWNlc3NhcnksIGZvciBleGFtcGxlLAotICAgICMgaW4gdGhlIGNhc2Ugb2YgX1BPU0lY X1NPVVJDRSwgd2hpY2ggaXMgcHJlZGVmaW5lZCBhbmQgcmVxdWlyZWQKLSAgICAjIG9uIHNvbWUg c3lzdGVtcyB3aGVyZSBjb25maWd1cmUgd2lsbCBub3QgZGVjaWRlIHRvIGRlZmluZSBpdC4KLSAg ICBpZiAoZGVmdW5kZWYgPT0gInVuZGVmIikgewotICAgICAgcHJpbnQgIi8qIiwgcHJlZml4IGRl ZnVuZGVmLCBtYWNybywgIiovIgotICAgICAgbmV4dAotICAgIH0KLSAgfQotfQoteyBwcmludCB9 Ci1fQUNBV0sKLV9BQ0VPRgotY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dy aXRlX2ZhaWw9MQotICBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IHNldHVwIGNvbmZpZyBoZWFk ZXJzIG1hY2hpbmVyeSIgIiRMSU5FTk8iIDUKLWZpICMgdGVzdCAtbiAiJENPTkZJR19IRUFERVJT IgotCi0KLWV2YWwgc2V0IFggIiAgOkYgJENPTkZJR19GSUxFUyAgOkggJENPTkZJR19IRUFERVJT ICAgICIKLXNoaWZ0Ci1mb3IgYWNfdGFnCi1kbwotICBjYXNlICRhY190YWcgaW4KLSAgOltGSExD XSkgYWNfbW9kZT0kYWNfdGFnOyBjb250aW51ZTs7Ci0gIGVzYWMKLSAgY2FzZSAkYWNfbW9kZSRh Y190YWcgaW4KLSAgOltGSExdKjoqKTs7Ci0gIDpMKiB8IDpDKjoqKSBhc19mbl9lcnJvciAkPyAi aW52YWxpZCB0YWcgXGAkYWNfdGFnJyIgIiRMSU5FTk8iIDU7OwotICA6W0ZIXS0pIGFjX3RhZz0t Oi07OwotICA6W0ZIXSopIGFjX3RhZz0kYWNfdGFnOiRhY190YWcuaW47OwotICBlc2FjCi0gIGFj X3NhdmVfSUZTPSRJRlMKLSAgSUZTPToKLSAgc2V0IHggJGFjX3RhZwotICBJRlM9JGFjX3NhdmVf SUZTCi0gIHNoaWZ0Ci0gIGFjX2ZpbGU9JDEKLSAgc2hpZnQKLQotICBjYXNlICRhY19tb2RlIGlu Ci0gIDpMKSBhY19zb3VyY2U9JDE7OwotICA6W0ZIXSkKLSAgICBhY19maWxlX2lucHV0cz0KLSAg ICBmb3IgYWNfZgotICAgIGRvCi0gICAgICBjYXNlICRhY19mIGluCi0gICAgICAtKSBhY19mPSIk YWNfdG1wL3N0ZGluIjs7Ci0gICAgICAqKSAjIExvb2sgZm9yIHRoZSBmaWxlIGZpcnN0IGluIHRo ZSBidWlsZCB0cmVlLCB0aGVuIGluIHRoZSBzb3VyY2UgdHJlZQotCSAjIChpZiB0aGUgcGF0aCBp cyBub3QgYWJzb2x1dGUpLiAgVGhlIGFic29sdXRlIHBhdGggY2Fubm90IGJlIERPUy1zdHlsZSwK LQkgIyBiZWNhdXNlICRhY19mIGNhbm5vdCBjb250YWluIGA6Jy4KLQkgdGVzdCAtZiAiJGFjX2Yi IHx8Ci0JICAgY2FzZSAkYWNfZiBpbgotCSAgIFtcXC8kXSopIGZhbHNlOzsKLQkgICAqKSB0ZXN0 IC1mICIkc3JjZGlyLyRhY19mIiAmJiBhY19mPSIkc3JjZGlyLyRhY19mIjs7Ci0JICAgZXNhYyB8 fAotCSAgIGFzX2ZuX2Vycm9yIDEgImNhbm5vdCBmaW5kIGlucHV0IGZpbGU6IFxgJGFjX2YnIiAi JExJTkVOTyIgNTs7Ci0gICAgICBlc2FjCi0gICAgICBjYXNlICRhY19mIGluICpcJyopIGFjX2Y9 YCRhc19lY2hvICIkYWNfZiIgfCBzZWQgInMvJy8nXFxcXFxcXFwnJy9nImA7OyBlc2FjCi0gICAg ICBhc19mbl9hcHBlbmQgYWNfZmlsZV9pbnB1dHMgIiAnJGFjX2YnIgotICAgIGRvbmUKLQotICAg ICMgTGV0J3Mgc3RpbGwgcHJldGVuZCBpdCBpcyBgY29uZmlndXJlJyB3aGljaCBpbnN0YW50aWF0 ZXMgKGkuZS4sIGRvbid0Ci0gICAgIyB1c2UgJGFzX21lKSwgcGVvcGxlIHdvdWxkIGJlIHN1cnBy aXNlZCB0byByZWFkOgotICAgICMgICAgLyogY29uZmlnLmguICBHZW5lcmF0ZWQgYnkgY29uZmln LnN0YXR1cy4gICovCi0gICAgY29uZmlndXJlX2lucHV0PSdHZW5lcmF0ZWQgZnJvbSAnYAotCSAg JGFzX2VjaG8gIiQqIiB8IHNlZCAnc3xeW146XSovfHw7c3w6W146XSovfCwgfGcnCi0JYCcgYnkg Y29uZmlndXJlLicKLSAgICBpZiB0ZXN0IHgiJGFjX2ZpbGUiICE9IHgtOyB0aGVuCi0gICAgICBj b25maWd1cmVfaW5wdXQ9IiRhY19maWxlLiAgJGNvbmZpZ3VyZV9pbnB1dCIKLSAgICAgIHsgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY3JlYXRpbmcgJGFjX2ZpbGUiID4m NQotJGFzX2VjaG8gIiRhc19tZTogY3JlYXRpbmcgJGFjX2ZpbGUiID4mNjt9Ci0gICAgZmkKLSAg ICAjIE5ldXRyYWxpemUgc3BlY2lhbCBjaGFyYWN0ZXJzIGludGVycHJldGVkIGJ5IHNlZCBpbiBy ZXBsYWNlbWVudCBzdHJpbmdzLgotICAgIGNhc2UgJGNvbmZpZ3VyZV9pbnB1dCBpbiAjKAotICAg ICpcJiogfCAqXHwqIHwgKlxcKiApCi0gICAgICAgYWNfc2VkX2NvbmZfaW5wdXQ9YCRhc19lY2hv ICIkY29uZmlndXJlX2lucHV0IiB8Ci0gICAgICAgc2VkICdzL1tcXFxcJnxdL1xcXFwmL2cnYDs7 ICMoCi0gICAgKikgYWNfc2VkX2NvbmZfaW5wdXQ9JGNvbmZpZ3VyZV9pbnB1dDs7Ci0gICAgZXNh YwotCi0gICAgY2FzZSAkYWNfdGFnIGluCi0gICAgKjotOiogfCAqOi0pIGNhdCA+IiRhY190bXAv c3RkaW4iIFwKLSAgICAgIHx8IGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgY3JlYXRlICRhY19m aWxlIiAiJExJTkVOTyIgNSA7OwotICAgIGVzYWMKLSAgICA7OwotICBlc2FjCi0KLSAgYWNfZGly PWAkYXNfZGlybmFtZSAtLSAiJGFjX2ZpbGUiIHx8Ci0kYXNfZXhwciBYIiRhY19maWxlIiA6ICdY XCguKlteL11cKS8vKlteL11bXi9dKi8qJCcgXHwgXAotCSBYIiRhY19maWxlIiA6ICdYXCgvL1wp W14vXScgXHwgXAotCSBYIiRhY19maWxlIiA6ICdYXCgvL1wpJCcgXHwgXAotCSBYIiRhY19maWxl IiA6ICdYXCgvXCknIFx8IC4gMj4vZGV2L251bGwgfHwKLSRhc19lY2hvIFgiJGFjX2ZpbGUiIHwK LSAgICBzZWQgJy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQvewotCSAgICBzLy9cMS8K LQkgICAgcQotCSAgfQotCSAgL15YXChcL1wvXClbXi9dLiovewotCSAgICBzLy9cMS8KLQkgICAg cQotCSAgfQotCSAgL15YXChcL1wvXCkkL3sKLQkgICAgcy8vXDEvCi0JICAgIHEKLQkgIH0KLQkg IC9eWFwoXC9cKS4qL3sKLQkgICAgcy8vXDEvCi0JICAgIHEKLQkgIH0KLQkgIHMvLiovLi87IHEn YAotICBhc19kaXI9IiRhY19kaXIiOyBhc19mbl9ta2Rpcl9wCi0gIGFjX2J1aWxkZGlyPS4KLQot Y2FzZSAiJGFjX2RpciIgaW4KLS4pIGFjX2Rpcl9zdWZmaXg9IGFjX3RvcF9idWlsZGRpcl9zdWI9 LiBhY190b3BfYnVpbGRfcHJlZml4PSA7OwotKikKLSAgYWNfZGlyX3N1ZmZpeD0vYCRhc19lY2hv ICIkYWNfZGlyIiB8IHNlZCAnc3xeXC5bXFwvXXx8J2AKLSAgIyBBICIuLiIgZm9yIGVhY2ggZGly ZWN0b3J5IGluICRhY19kaXJfc3VmZml4LgotICBhY190b3BfYnVpbGRkaXJfc3ViPWAkYXNfZWNo byAiJGFjX2Rpcl9zdWZmaXgiIHwgc2VkICdzfC9bXlxcL10qfC8uLnxnO3N8L3x8J2AKLSAgY2Fz ZSAkYWNfdG9wX2J1aWxkZGlyX3N1YiBpbgotICAiIikgYWNfdG9wX2J1aWxkZGlyX3N1Yj0uIGFj X3RvcF9idWlsZF9wcmVmaXg9IDs7Ci0gICopICBhY190b3BfYnVpbGRfcHJlZml4PSRhY190b3Bf YnVpbGRkaXJfc3ViLyA7OwotICBlc2FjIDs7Ci1lc2FjCi1hY19hYnNfdG9wX2J1aWxkZGlyPSRh Y19wd2QKLWFjX2Fic19idWlsZGRpcj0kYWNfcHdkJGFjX2Rpcl9zdWZmaXgKLSMgZm9yIGJhY2t3 YXJkIGNvbXBhdGliaWxpdHk6Ci1hY190b3BfYnVpbGRkaXI9JGFjX3RvcF9idWlsZF9wcmVmaXgK LQotY2FzZSAkc3JjZGlyIGluCi0gIC4pICAjIFdlIGFyZSBidWlsZGluZyBpbiBwbGFjZS4KLSAg ICBhY19zcmNkaXI9LgotICAgIGFjX3RvcF9zcmNkaXI9JGFjX3RvcF9idWlsZGRpcl9zdWIKLSAg ICBhY19hYnNfdG9wX3NyY2Rpcj0kYWNfcHdkIDs7Ci0gIFtcXC9dKiB8ID86W1xcL10qICkgICMg QWJzb2x1dGUgbmFtZS4KLSAgICBhY19zcmNkaXI9JHNyY2RpciRhY19kaXJfc3VmZml4OwotICAg IGFjX3RvcF9zcmNkaXI9JHNyY2RpcgotICAgIGFjX2Fic190b3Bfc3JjZGlyPSRzcmNkaXIgOzsK LSAgKikgIyBSZWxhdGl2ZSBuYW1lLgotICAgIGFjX3NyY2Rpcj0kYWNfdG9wX2J1aWxkX3ByZWZp eCRzcmNkaXIkYWNfZGlyX3N1ZmZpeAotICAgIGFjX3RvcF9zcmNkaXI9JGFjX3RvcF9idWlsZF9w cmVmaXgkc3JjZGlyCi0gICAgYWNfYWJzX3RvcF9zcmNkaXI9JGFjX3B3ZC8kc3JjZGlyIDs7Ci1l c2FjCi1hY19hYnNfc3JjZGlyPSRhY19hYnNfdG9wX3NyY2RpciRhY19kaXJfc3VmZml4Ci0KLQot ICBjYXNlICRhY19tb2RlIGluCi0gIDpGKQotICAjCi0gICMgQ09ORklHX0ZJTEUKLSAgIwotCi0g IGNhc2UgJElOU1RBTEwgaW4KLSAgW1xcLyRdKiB8ID86W1xcL10qICkgYWNfSU5TVEFMTD0kSU5T VEFMTCA7OwotICAqKSBhY19JTlNUQUxMPSRhY190b3BfYnVpbGRfcHJlZml4JElOU1RBTEwgOzsK LSAgZXNhYwotX0FDRU9GCi0KLWNhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193 cml0ZV9mYWlsPTEKLSMgSWYgdGhlIHRlbXBsYXRlIGRvZXMgbm90IGtub3cgYWJvdXQgZGF0YXJv b3RkaXIsIGV4cGFuZCBpdC4KLSMgRklYTUU6IFRoaXMgaGFjayBzaG91bGQgYmUgcmVtb3ZlZCBh IGZldyB5ZWFycyBhZnRlciAyLjYwLgotYWNfZGF0YXJvb3RkaXJfaGFjaz07IGFjX2RhdGFyb290 ZGlyX3NlZW49Ci1hY19zZWRfZGF0YXJvb3Q9JwotL2RhdGFyb290ZGlyLyB7Ci0gIHAKLSAgcQot fQotL0BkYXRhZGlyQC9wCi0vQGRvY2RpckAvcAotL0BpbmZvZGlyQC9wCi0vQGxvY2FsZWRpckAv cAotL0BtYW5kaXJAL3AnCi1jYXNlIGBldmFsICJzZWQgLW4gXCJcJGFjX3NlZF9kYXRhcm9vdFwi ICRhY19maWxlX2lucHV0cyJgIGluCi0qZGF0YXJvb3RkaXIqKSBhY19kYXRhcm9vdGRpcl9zZWVu PXllczs7Ci0qQGRhdGFkaXJAKnwqQGRvY2RpckAqfCpAaW5mb2RpckAqfCpAbG9jYWxlZGlyQCp8 KkBtYW5kaXJAKikKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBX QVJOSU5HOiAkYWNfZmlsZV9pbnB1dHMgc2VlbXMgdG8gaWdub3JlIHRoZSAtLWRhdGFyb290ZGly IHNldHRpbmciID4mNQotJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJGFjX2ZpbGVfaW5wdXRz IHNlZW1zIHRvIGlnbm9yZSB0aGUgLS1kYXRhcm9vdGRpciBzZXR0aW5nIiA+JjI7fQotX0FDRU9G Ci1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKLSAgYWNf ZGF0YXJvb3RkaXJfaGFjaz0nCi0gIHMmQGRhdGFkaXJAJiRkYXRhZGlyJmcKLSAgcyZAZG9jZGly QCYkZG9jZGlyJmcKLSAgcyZAaW5mb2RpckAmJGluZm9kaXImZwotICBzJkBsb2NhbGVkaXJAJiRs b2NhbGVkaXImZwotICBzJkBtYW5kaXJAJiRtYW5kaXImZwotICBzJlxcXCR7ZGF0YXJvb3RkaXJ9 JiRkYXRhcm9vdGRpciZnJyA7OwotZXNhYwotX0FDRU9GCi0KLSMgTmV1dHJhbGl6ZSBWUEFUSCB3 aGVuIGAkc3JjZGlyJyA9IGAuJy4KLSMgU2hlbGwgY29kZSBpbiBjb25maWd1cmUuYWMgbWlnaHQg c2V0IGV4dHJhc3ViLgotIyBGSVhNRTogZG8gd2UgcmVhbGx5IHdhbnQgdG8gbWFpbnRhaW4gdGhp cyBmZWF0dXJlPwotY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFp bD0xCi1hY19zZWRfZXh0cmE9IiRhY192cHN1YgotJGV4dHJhc3ViCi1fQUNFT0YKLWNhdCA+PiRD T05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKLTp0Ci0vQFthLXpBLVpf XVthLXpBLVpfMC05XSpALyFiCi1zfEBjb25maWd1cmVfaW5wdXRAfCRhY19zZWRfY29uZl9pbnB1 dHw7dCB0Ci1zJkB0b3BfYnVpbGRkaXJAJiRhY190b3BfYnVpbGRkaXJfc3ViJjt0IHQKLXMmQHRv cF9idWlsZF9wcmVmaXhAJiRhY190b3BfYnVpbGRfcHJlZml4Jjt0IHQKLXMmQHNyY2RpckAmJGFj X3NyY2RpciY7dCB0Ci1zJkBhYnNfc3JjZGlyQCYkYWNfYWJzX3NyY2RpciY7dCB0Ci1zJkB0b3Bf c3JjZGlyQCYkYWNfdG9wX3NyY2RpciY7dCB0Ci1zJkBhYnNfdG9wX3NyY2RpckAmJGFjX2Fic190 b3Bfc3JjZGlyJjt0IHQKLXMmQGJ1aWxkZGlyQCYkYWNfYnVpbGRkaXImO3QgdAotcyZAYWJzX2J1 aWxkZGlyQCYkYWNfYWJzX2J1aWxkZGlyJjt0IHQKLXMmQGFic190b3BfYnVpbGRkaXJAJiRhY19h YnNfdG9wX2J1aWxkZGlyJjt0IHQKLXMmQElOU1RBTExAJiRhY19JTlNUQUxMJjt0IHQKLSRhY19k YXRhcm9vdGRpcl9oYWNrCi0iCi1ldmFsIHNlZCBcIlwkYWNfc2VkX2V4dHJhXCIgIiRhY19maWxl X2lucHV0cyIgfCAkQVdLIC1mICIkYWNfdG1wL3N1YnMuYXdrIiBcCi0gID4kYWNfdG1wL291dCB8 fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUK LQotdGVzdCAteiAiJGFjX2RhdGFyb290ZGlyX2hhY2skYWNfZGF0YXJvb3RkaXJfc2VlbiIgJiYK LSAgeyBhY19vdXQ9YHNlZCAtbiAnL1wke2RhdGFyb290ZGlyfS9wJyAiJGFjX3RtcC9vdXQiYDsg dGVzdCAtbiAiJGFjX291dCI7IH0gJiYKLSAgeyBhY19vdXQ9YHNlZCAtbiAnL15bCSBdKmRhdGFy b290ZGlyWwkgXSo6Kj0vcCcgXAotICAgICAgIiRhY190bXAvb3V0ImA7IHRlc3QgLXogIiRhY19v dXQiOyB9ICYmCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FS TklORzogJGFjX2ZpbGUgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIHZhcmlhYmxlIFxgZGF0 YXJvb3RkaXInCi13aGljaCBzZWVtcyB0byBiZSB1bmRlZmluZWQuICBQbGVhc2UgbWFrZSBzdXJl IGl0IGlzIGRlZmluZWQiID4mNQotJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJGFjX2ZpbGUg Y29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIHZhcmlhYmxlIFxgZGF0YXJvb3RkaXInCi13aGlj aCBzZWVtcyB0byBiZSB1bmRlZmluZWQuICBQbGVhc2UgbWFrZSBzdXJlIGl0IGlzIGRlZmluZWQi ID4mMjt9Ci0KLSAgcm0gLWYgIiRhY190bXAvc3RkaW4iCi0gIGNhc2UgJGFjX2ZpbGUgaW4KLSAg LSkgY2F0ICIkYWNfdG1wL291dCIgJiYgcm0gLWYgIiRhY190bXAvb3V0Ijs7Ci0gICopIHJtIC1m ICIkYWNfZmlsZSIgJiYgbXYgIiRhY190bXAvb3V0IiAiJGFjX2ZpbGUiOzsKLSAgZXNhYyBcCi0g IHx8IGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgY3JlYXRlICRhY19maWxlIiAiJExJTkVOTyIg NQotIDs7Ci0gIDpIKQotICAjCi0gICMgQ09ORklHX0hFQURFUgotICAjCi0gIGlmIHRlc3QgeCIk YWNfZmlsZSIgIT0geC07IHRoZW4KLSAgICB7Ci0gICAgICAkYXNfZWNobyAiLyogJGNvbmZpZ3Vy ZV9pbnB1dCAgKi8iIFwKLSAgICAgICYmIGV2YWwgJyRBV0sgLWYgIiRhY190bXAvZGVmaW5lcy5h d2siJyAiJGFjX2ZpbGVfaW5wdXRzIgotICAgIH0gPiIkYWNfdG1wL2NvbmZpZy5oIiBcCi0gICAg ICB8fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8i IDUKLSAgICBpZiBkaWZmICIkYWNfZmlsZSIgIiRhY190bXAvY29uZmlnLmgiID4vZGV2L251bGwg Mj4mMTsgdGhlbgotICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiAkYWNfZmlsZSBpcyB1bmNoYW5nZWQiID4mNQotJGFzX2VjaG8gIiRhc19tZTogJGFjX2ZpbGUg aXMgdW5jaGFuZ2VkIiA+JjY7fQotICAgIGVsc2UKLSAgICAgIHJtIC1mICIkYWNfZmlsZSIKLSAg ICAgIG12ICIkYWNfdG1wL2NvbmZpZy5oIiAiJGFjX2ZpbGUiIFwKLQl8fCBhc19mbl9lcnJvciAk PyAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUKLSAgICBmaQotICBlbHNl Ci0gICAgJGFzX2VjaG8gIi8qICRjb25maWd1cmVfaW5wdXQgICovIiBcCi0gICAgICAmJiBldmFs ICckQVdLIC1mICIkYWNfdG1wL2RlZmluZXMuYXdrIicgIiRhY19maWxlX2lucHV0cyIgXAotICAg ICAgfHwgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBjcmVhdGUgLSIgIiRMSU5FTk8iIDUKLSAg ZmkKLSA7OwotCi0KLSAgZXNhYwotCi1kb25lICMgZm9yIGFjX3RhZwotCi0KLWFzX2ZuX2V4aXQg MAotX0FDRU9GCi1hY19jbGVhbl9maWxlcz0kYWNfY2xlYW5fZmlsZXNfc2F2ZQotCi10ZXN0ICRh Y193cml0ZV9mYWlsID0gMCB8fAotICBhc19mbl9lcnJvciAkPyAid3JpdGUgZmFpbHVyZSBjcmVh dGluZyAkQ09ORklHX1NUQVRVUyIgIiRMSU5FTk8iIDUKLQotCi0jIGNvbmZpZ3VyZSBpcyB3cml0 aW5nIHRvIGNvbmZpZy5sb2csIGFuZCB0aGVuIGNhbGxzIGNvbmZpZy5zdGF0dXMuCi0jIGNvbmZp Zy5zdGF0dXMgZG9lcyBpdHMgb3duIHJlZGlyZWN0aW9uLCBhcHBlbmRpbmcgdG8gY29uZmlnLmxv Zy4KLSMgVW5mb3J0dW5hdGVseSwgb24gRE9TIHRoaXMgZmFpbHMsIGFzIGNvbmZpZy5sb2cgaXMg c3RpbGwga2VwdCBvcGVuCi0jIGJ5IGNvbmZpZ3VyZSwgc28gY29uZmlnLnN0YXR1cyB3b24ndCBi ZSBhYmxlIHRvIHdyaXRlIHRvIGl0OyBpdHMKLSMgb3V0cHV0IGlzIHNpbXBseSBkaXNjYXJkZWQu ICBTbyB3ZSBleGVjIHRoZSBGRCB0byAvZGV2L251bGwsCi0jIGVmZmVjdGl2ZWx5IGNsb3Npbmcg Y29uZmlnLmxvZywgc28gaXQgY2FuIGJlIHByb3Blcmx5IChyZSlvcGVuZWQgYW5kCi0jIGFwcGVu ZGVkIHRvIGJ5IGNvbmZpZy5zdGF0dXMuICBXaGVuIGNvbWluZyBiYWNrIHRvIGNvbmZpZ3VyZSwg d2UKLSMgbmVlZCB0byBtYWtlIHRoZSBGRCBhdmFpbGFibGUgYWdhaW4uCi1pZiB0ZXN0ICIkbm9f Y3JlYXRlIiAhPSB5ZXM7IHRoZW4KLSAgYWNfY3Nfc3VjY2Vzcz06Ci0gIGFjX2NvbmZpZ19zdGF0 dXNfYXJncz0KLSAgdGVzdCAiJHNpbGVudCIgPSB5ZXMgJiYKLSAgICBhY19jb25maWdfc3RhdHVz X2FyZ3M9IiRhY19jb25maWdfc3RhdHVzX2FyZ3MgLS1xdWlldCIKLSAgZXhlYyA1Pi9kZXYvbnVs bAotICAkU0hFTEwgJENPTkZJR19TVEFUVVMgJGFjX2NvbmZpZ19zdGF0dXNfYXJncyB8fCBhY19j c19zdWNjZXNzPWZhbHNlCi0gIGV4ZWMgNT4+Y29uZmlnLmxvZwotICAjIFVzZSB8fCwgbm90ICYm LCB0byBhdm9pZCBleGl0aW5nIGZyb20gdGhlIGlmIHdpdGggJD8gPSAxLCB3aGljaAotICAjIHdv dWxkIG1ha2UgY29uZmlndXJlIGZhaWwgaWYgdGhpcyBpcyB0aGUgbGFzdCBpbnN0cnVjdGlvbi4K LSAgJGFjX2NzX3N1Y2Nlc3MgfHwgYXNfZm5fZXhpdCAxCi1maQotaWYgdGVzdCAtbiAiJGFjX3Vu cmVjb2duaXplZF9vcHRzIiAmJiB0ZXN0ICIkZW5hYmxlX29wdGlvbl9jaGVja2luZyIgIT0gbm87 IHRoZW4KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5H OiB1bnJlY29nbml6ZWQgb3B0aW9uczogJGFjX3VucmVjb2duaXplZF9vcHRzIiA+JjUKLSRhc19l Y2hvICIkYXNfbWU6IFdBUk5JTkc6IHVucmVjb2duaXplZCBvcHRpb25zOiAkYWNfdW5yZWNvZ25p emVkX29wdHMiID4mMjt9Ci1maQotCi0tIAoyLjIxLjAKCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZl bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxt YW4vbGlzdGluZm8veGVuLWRldmVs