From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 853 invoked by alias); 8 Feb 2016 17:46:16 -0000 Mailing-List: contact zsh-users-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Users List List-Post: List-Help: X-Seq: 21253 Received: (qmail 8244 invoked from network); 8 Feb 2016 17:46:13 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=ham autolearn_force=no version=3.4.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=NCAELCuA+XHVJFbMkgR9l1/KbOoF3RyWb/41X/PCyts=; b=XgSrSygFqwLoaJoPUYmtUaXKpRrNuCihjjCOPOprvsazr6cBAMWFQGZrJdvYAFClhw qYSKtVJt6D22/6wSsM6H4Ho3nkVWEN2fWEZUfl+RbroRHBUgX+Vnt8rfj88VLakX+8nR FG9rdr4OKGoSe7R34+vCvI4aK0MV/UeiJ/J6VVKWJrmv/XluUcL6/IXiZ6a7Rld6nxbX bSytPWzJSdVK4Leon6tG0dfqXHXAPrfk+ctf2E9zXP474D1TIqOYrfYfZuMTSZWSt9qL 18Je1FGz4hENnrtlxj84wZAjrvZFT2NRU19fvDeNFsxotE0QMoo9HhAjHqOhmLc0iW+u c1nw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-type; bh=NCAELCuA+XHVJFbMkgR9l1/KbOoF3RyWb/41X/PCyts=; b=cHF937SQ8jJbzdEfXJ1xRQhyJ9bKxt+fu5MBsiCNt4wlTIvFVGOfzwKgit+jYxLapE huWyBo5cssr81YMs9OXh+qIq3fKSYESwwV7pvK79LFkdST916xRaSUnh3qyNQqY3LO1n Og5ErTIBu2jhKs1CXMIIk9l1XhnA+r+eSw9wdMRu/pZAVGqmaY5zynOhdDJ5ROVn8jGQ M2wgLsrpLTUbRw6jzKy8xlhCYgdh/XSGPeH0c4zH0ttGIZfVbRA4mb09G7iVkCfFBABD Vz57cus+EqEb3PNoow1UdNLC6i4A7Eq4pgSynLbYoCEcoeCVK7XXrNTQnj4fwo8uJkBd +yig== X-Gm-Message-State: AG10YOTlcOweA2/aJ3QFG+OaIJS/rd1zJHsLNj63tKtV4lfUrhJn5lz9sargeiJ83thJ9piALiuPLyiY8N6+fw== X-Received: by 10.25.83.209 with SMTP id h200mr12199719lfb.129.1454953569430; Mon, 08 Feb 2016 09:46:09 -0800 (PST) MIME-Version: 1.0 In-Reply-To: <20160208105255.41caf0c6@pwslap01u.europe.root.pri> References: <20160208105255.41caf0c6@pwslap01u.europe.root.pri> From: Sebastian Gniazdowski Date: Mon, 8 Feb 2016 18:45:49 +0100 Message-ID: Subject: Re: Writing code that works with emulate zsh and emulate csh To: Peter Stephenson Cc: Zsh Users Content-Type: multipart/mixed; boundary=001a1141dadcabcf21052b45c6ef --001a1141dadcabcf21052b45c6ef Content-Type: text/plain; charset=UTF-8 It turns out that only a single option, CSH_JUNKIE_QUOTES, makes the error message that I receive: ./zplugin.zsh:34: unmatched " Earlier I was trying to remove parts, part by part, of beginning of the zplugin.zsh file, waiting for the error message to change. *It didn't* (besides languorous movements in line number, after like 5 deletions of large blocks of code; very stable line number) so I then looked at the Wikipedia page and thought that emulate csh enables completely different language syntax. Now it might revealed that it just sets CSH_JUNKIE_QUOTES. Maybe it could be possible to adapt zplugin.zsh to that option? What in this file can trigger the message? https://github.com/psprint/zplugin/blob/master/zplugin.zsh I might not be able to target emulate csh, but maybe I could target CSH_JUNKIE_QUOTES. All other CSH* options do not cause problems. Best regards, Sebastian Gniazdowski --001a1141dadcabcf21052b45c6ef Content-Type: application/octet-stream; name="zplugin.zsh" Content-Disposition: attachment; filename="zplugin.zsh" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ike9ia7p0 IyAtKi0gbW9kZTogc2hlbGwtc2NyaXB0IC0qLQojIHZpbTpmdD16c2gKCiMKIyBNYWluIHN0YXRl IHZhcmlhYmxlcwojCgp0eXBlc2V0IC1nYUggWlBMR19SRUdJU1RFUkVEX1BMVUdJTlMKIyBNYXBz IHBsdWdpbnMgdG8gMCwgMSBvciAyIC0gbm90IGxvYWRlZCwgbGlnaHQgbG9hZGVkLCBmdWxseSBs b2FkZWQKdHlwZXNldCAtZ0FIIFpQTEdfUkVHSVNURVJFRF9TVEFURVMKIyBTbmlwcGV0cyBsb2Fk ZWQsIHVybCAtPiBmaWxlIG5hbWUKdHlwZXNldCAtZ0FIIFpQTEdfU05JUFBFVFMKIyBSZXBvcnRz LCBwZXIgcGx1Z2luCnR5cGVzZXQgLWdBSCBaUExHX1JFUE9SVFMKCiMKIyBDb21tb24gbmVlZGVk IHZhbHVlcwojCgp0eXBlc2V0IC1nSCBaUExHX05BTUUKCiMgVXNlciBjYW4gb3ZlcnJpZGUgWlBM R19ESVIuIE1pc2xlYWRpbmc/IFJlc2V0CmlmIFsgISAtZSAiJFpQTEdfRElSIi93aWRnZXQtbGlz dC56c2ggXTsgdGhlbgogICAgdHlwZXNldCAtZ0ggWlBMR19ESVI9IiIKZmkKCiMgUHJvYmxlbWF0 aWMgZnVuY3Rpb25fYXJnemVybwppZiBbWyAhIC1vICJmdW5jdGlvbmFyZ3plcm8iIF1dOyB0aGVu CiAgICBpZiBbWyAiJDAiID0gIiR7YXJndlswXX0iIHx8IC16ICIke2FyZ3ZbMF19IiBdXTsgdGhl bgogICAgICAgIFpQTEdfTkFNRT0ienBsdWdpbiIgIyBBIHRyeSBvZiB0eXBpY2FsLCBhY3R1YWxs eSBleHBlY3RlZCBuYW1lCiAgICAgICAgWyAteiAiJFpQTEdfRElSIiBdICYmIFpQTEdfRElSPSIk ezA6aH0iCiAgICBlbHNlCiAgICAgICAgWlBMR19OQU1FPSIkeyR7YXJndlswXTp0fTpyfSIKICAg ICAgICBbIC16ICIkWlBMR19ESVIiIF0gJiYgWlBMR19ESVI9IiR7YXJndlswXTpofSIKICAgIGZp CmVsc2UKICAgIFpQTEdfTkFNRT0iJHskezA6dH06cn0iCiAgICBbIC16ICIkWlBMR19ESVIiIF0g JiYgWlBMR19ESVI9IiR7MDpofSIKZmkKCiMgTWFrZSBaUExHX0RJUiBwYXRoIGFic29sdXRlCmlm IFtbICIkWlBMR19ESVIiICE9IC8qIF1dOyB0aGVuCiAgICBpZiBbICIkWlBMR19ESVIiID0gIi4i IF07IHRoZW4KICAgICAgICBaUExHX0RJUj0iJFBXRCIKICAgIGVsc2UKICAgICAgICBaUExHX0RJ Uj0iJFBXRC8kWlBMR19ESVIiCiAgICBmaQpmaQoKIyBGaW5hbCB0ZXN0IG9mIFpQTEdfRElSCmlm IFsgISAtZSAiJFpQTEdfRElSIi93aWRnZXQtbGlzdC56c2ggXTsgdGhlbgogICAgcHJpbnQgIkNv dWxkIG5vdCBlc3RhYmxpc2ggWlBMR19ESVIgdmFyaWFibGUuIFNldCBpdCB0byB3aGVyZSBacGx1 Z2luJ3MgZ2l0IHJlcG9zaXRvcnkgaXMuIgogICAgcmV0dXJuIDEKZmkKCiMgVXNlciBjYW4gb3Zl cnJpZGUgWlBMR19IT01FCmlmIFsgLXogIiRaUExHX0hPTUUiIF07IHRoZW4KICAgICMgSWdub3Jl IFpET1RESVIgaWYgdXNlciBtYW51YWxseSBwdXQgWnBsdWdpbiB0byAkSE9NRQogICAgaWYgWyAt ZCAiJEhPTUUvLiRaUExHX05BTUUiIF07IHRoZW4KICAgICAgICB0eXBlc2V0IC1nSCBaUExHX0hP TUU9IiRIT01FLy4kWlBMR19OQU1FIgogICAgZWxzZQogICAgICAgIHR5cGVzZXQgLWdIIFpQTEdf SE9NRT0iJHtaRE9URElSOi0kSE9NRX0vLiRaUExHX05BTUUiCiAgICBmaQpmaQoKdHlwZXNldCAt Z0ggWlBMR19QTFVHSU5TX0RJUj0iJFpQTEdfSE9NRS9wbHVnaW5zIgp0eXBlc2V0IC1nSCBaUExH X0NPTVBMRVRJT05TX0RJUj0iJFpQTEdfSE9NRS9jb21wbGV0aW9ucyIKdHlwZXNldCAtZ0ggWlBM R19TTklQUEVUU19ESVI9IiRaUExHX0hPTUUvc25pcHBldHMiCnR5cGVzZXQgLWdIIFpQTEdfSE9N RV9SRUFEWQp0eXBlc2V0IC1nYUhVIFpQTEdfRU5URVJfT1BUSU9OUwp0eXBlc2V0IC1nSCBaUExH X0VYVEVOREVEX0dMT0IKdHlwZXNldCAtZ0FIIFpQTEdfQkFDS1VQX0ZVTkNUSU9OUwp0eXBlc2V0 IC1nQUggWlBMR19CQUNLVVBfQUxJQVNFUwoKIwojIEFsbCB0byB0aGUgdXNlcnMgLSBzaW11bGF0 ZSBPTVogZGlyZWN0b3J5IHN0cnVjdHVyZSAoMS8zKQojCgp0eXBlc2V0IC1nSCBaU0g9IiRaUExH X1BMVUdJTlNfRElSIgp0eXBlc2V0IC1nSCBaU0hfQ1VTVE9NPSIkWlBMR19QTFVHSU5TX0RJUi9j dXN0b20iCmV4cG9ydCBaU0ggWlNIX0NVU1RPTQoKIwojIE5hc3R5IHZhcmlhYmxlcyB7e3sKIyBD YW4gYmUgdXNlZCBieSBhbnkgc2hhZG93aW5nIGZ1bmN0aW9uIHRvIHJlY29nbml6ZSBjdXJyZW50 IGNvbnRleHQKIwoKdHlwZXNldCAtZ0ggWlBMR19DVVJfVVNFUj0iIgp0eXBlc2V0IC1nSCBaUExH X0NVUl9QTFVHSU49IiIKIyBDb25jYXRlbmF0ZWQgd2l0aCAiLS0tIgp0eXBlc2V0IC1nSCBaUExH X0NVUl9VU1BMPSIiCiMgQ29uY2F0ZW5hdGVkIHdpdGggIi8iCnR5cGVzZXQgLWdIIFpQTEdfQ1VS X1VTUEwyPSIiCiMgSWYgYW55IHBsdWdpbiByZXRhaW5zIHRoZSBzaGFkb3dlZCBmdW5jdGlvbiBp bnN0ZWFkIG9mCiMgb3JpZ2luYWwgb25lIHRoZW4gdGhpcyB3aWxsIHByb3RlY3QgZnJvbSBmdXJ0 aGVyIHJlcG9ydGluZwp0eXBlc2V0IC1nSCBaUExHX1NIQURPV0lOR19BQ1RJVkUKIyBUbyBzaG93 ICJmdW5jdGlvbiBhbHJlYWR5IGRlZmluZWQsIGluIHpzaCIgd2FybmluZyBvbmNlIHBlciBmdW5j dGlvbgp0eXBlc2V0IC1nQUggWlBMR19BTFJFQURZX1dBUk5JTkdTX0YKIyBJZiAiMSIsIGl0IHdp bGwgbWFrZSBkZWJ1ZyByZXBvcnRpbmcgYWN0aXZlLAojIGUuZy4gc2hhZG93aW5nIHdpbGwgYmUg cGVybWFuZW50bHkgb24KdHlwZXNldCAtZ0ggWlBMR19ERUJVR19BQ1RJVkU9IjAiCiMgTmFtZSBv ZiAicGx1Z2luIiB0byB3aGljaCBkZWJ1ZyByZXBvcnRzIHNob3VsZCBiZSBhc3NpZ25lZCAtIHVz cGwyIGZvcm1hdAp0eXBlc2V0IC1nSCBaUExHX0RFQlVHX1VTUEwyPSJfZHRyYWNlL19kdHJhY2Ui CiMgTmFtZSBvZiAicGx1Z2luIiB0byB3aGljaCBkZWJ1ZyByZXBvcnRzIHNob3VsZCBiZSBhc3Np Z25lZCAtIHVzcGwxIGZvcm1hdAp0eXBlc2V0IC1nSCBaUExHX0RFQlVHX1VTUEw9Il9kdHJhY2Ut LS1fZHRyYWNlIgojIFVzZXIgcGFydCBvZiB0aGUgZGVidWcgcGx1Z2luCnR5cGVzZXQgLWdIIFpQ TEdfREVCVUdfVVNFUj0iX2R0cmFjZSIKIyBQbHVnaW4gcGFydCBvZiB0aGUgZGVidWcgcGx1Z2lu CnR5cGVzZXQgLWdIIFpQTEdfREVCVUdfUExVR0lOPSJfZHRyYWNlIgojIH19fQoKIwojIEZ1bmN0 aW9uIGRpZmZpbmcge3t7CiMKCiMgVXNlZCB0byBob2xkIGRlY2xhcmVkIGZ1bmN0aW9ucyBleGlz dGluZyBiZWZvcmUgbG9hZGluZyBhIHBsdWdpbgp0eXBlc2V0IC1nQUggWlBMR19GVU5DVElPTlNf QkVGT1JFCiMgRnVuY3Rpb25zIGV4aXN0aW5nIGFmdGVyIGxvYWRpbmcgYSBwbHVnaW4uIFJlcG9y dGluZyB3aWxsIGRvIGEgZGlmZgp0eXBlc2V0IC1nQUggWlBMR19GVU5DVElPTlNfQUZURVIKIyBG dW5jdGlvbnMgY29tcHV0ZWQgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHBsdWdpbgp0eXBlc2V0IC1n QUggWlBMR19GVU5DVElPTlMKIyBXYXMgdGhlIGZ1bmN0aW9uIGRpZmYgYWxyZWFkeSByYW4/CnR5 cGVzZXQgLWdBSCBaUExHX0ZVTkNUSU9OU19ESUZGX1JBTgoKI319fQoKIwojIE9wdGlvbiBkaWZm aW5nIHt7ewojCgojIENvbmNhdGVuYXRlZCBzdGF0ZSBvZiBvcHRpb25zIGJlZm9yZSBsb2FkaW5n IGEgcGx1Z2luCnR5cGVzZXQgLWdBSCBaUExHX09QVElPTlNfQkVGT1JFCgojIENvbmNhdGVuYXRl ZCBzdGF0ZSBvZiBvcHRpb25zIGFmdGVyIGxvYWRpbmcgYSBwbHVnaW4KdHlwZXNldCAtZ0FIIFpQ TEdfT1BUSU9OU19BRlRFUgoKIyBDb25jYXRlbmF0ZWQgb3B0aW9ucyB0aGF0IGNoYW5nZWQsIGhv bGQgYXMgdGhleSB3ZXJlIGJlZm9yZSBwbHVnaW4gbG9hZAp0eXBlc2V0IC1nQUggWlBMR19PUFRJ T05TCgojIFdhcyB0aGUgb3B0aW9uIGRpZmYgYWxyZWFkeSByYW4/CnR5cGVzZXQgLWdBSCBaUExH X09QVElPTlNfRElGRl9SQU4KCiMgfX19CgojCiMgRW52aXJvbm1lbnQgZGlmZmluZyB7e3sKIwoK IyBDb25jYXRlbmF0ZWQgc3RhdGUgb2YgUEFUSCBiZWZvcmUgbG9hZGluZyBhIHBsdWdpbgp0eXBl c2V0IC1nQUggWlBMR19QQVRIX0JFRk9SRQoKIyBDb25jYXRlbmF0ZWQgc3RhdGUgb2YgUEFUSCBh ZnRlciBsb2FkaW5nIGEgcGx1Z2luCnR5cGVzZXQgLWdBSCBaUExHX1BBVEhfQUZURVIKCiMgQ29u Y2F0ZW5hdGVkIG5ldyBlbGVtZW50cyBvZiBQQVRIIChhZnRlciBkaWZmKQp0eXBlc2V0IC1nQUgg WlBMR19QQVRICgojIENvbmNhdGVuYXRlZCBzdGF0ZSBvZiBGUEFUSCBiZWZvcmUgbG9hZGluZyBh IHBsdWdpbgp0eXBlc2V0IC1nQUggWlBMR19GUEFUSF9CRUZPUkUKCiMgQ29uY2F0ZW5hdGVkIHN0 YXRlIG9mIEZQQVRIIGFmdGVyIGxvYWRpbmcgYSBwbHVnaW4KdHlwZXNldCAtZ0FIIFpQTEdfRlBB VEhfQUZURVIKCiMgQ29uY2F0ZW5hdGVkIG5ldyBlbGVtZW50cyBvZiBGUEFUSCAoYWZ0ZXIgZGlm ZikKdHlwZXNldCAtZ0FIIFpQTEdfRlBBVEgKCiMgV2FzIHRoZSBlbnZpcm9ubWVudCBkaWZmIGFs cmVhZHkgcmFuPwp0eXBlc2V0IC1nSEEgWlBMR19FTlZfRElGRl9SQU4KIyB9fX0KCiMKIyBQYXJh bWV0ZXIgZGlmZmluZyB7e3sKIwoKIyBDb25jYXRlbmF0ZWQgc3RhdGUgb2YgUEFSQU1FVEVSUyBi ZWZvcmUgbG9hZGluZyBhIHBsdWdpbgp0eXBlc2V0IC1nQUggWlBMR19QQVJBTUVURVJTX0JFRk9S RQoKIyBDb25jYXRlbmF0ZWQgc3RhdGUgb2YgUEFSQU1FVEVSUyBhZnRlciBsb2FkaW5nIGEgcGx1 Z2luCnR5cGVzZXQgLWdBSCBaUExHX1BBUkFNRVRFUlNfQUZURVIKCiMgQ29uY2F0ZW5hdGVkICpj aGFuZ2VkKiBwcmV2aW91cyBlbGVtZW50cyBvZiAkcGFyYW1ldGVycyAoYmVmb3JlKQp0eXBlc2V0 IC1nQUggWlBMR19QQVJBTUVURVJTX1BSRQoKIyBDb25jYXRlbmF0ZWQgKmNoYW5nZWQqIGN1cnJl bnQgZWxlbWVudHMgb2YgJHBhcmFtZXRlcnMgKGFmdGVyKQp0eXBlc2V0IC1nQUggWlBMR19QQVJB TUVURVJTX1BPU1QKCiMgV2FzIHRoZSBlbnZpcm9ubWVudCBkaWZmIGFscmVhZHkgcmFuPwp0eXBl c2V0IC1nSEEgWlBMR19QQVJBTUVURVJTX0RJRkZfUkFOCgojIH19fQoKIwojIFpzdHlsZSwgYmlu ZGtleSwgYWxpYXMsIHpsZSByZW1lbWJlcmluZyB7e3sKIwoKIyBIb2xkcyBjb25jYXRlbmF0ZWQg WnN0eWxlcyBkZWNsYXJlZCBieSBlYWNoIHBsdWdpbgojIENvbmNhdGVuYXRlZCBhZnRlciBxdW90 aW5nLCBzbyAoeiktc3BsaXR0YWJsZQp0eXBlc2V0IC1nQUggWlBMR19aU1RZTEVTCgojIEhvbGRz IGNvbmNhdGVuYXRlZCBiaW5ka2V5cyBkZWNsYXJlZCBieSBlYWNoIHBsdWdpbgp0eXBlc2V0IC1n QUggWlBMR19CSU5ES0VZUwojIEhvbGRzIGNvdW50ZXIgdXNlZCBmb3IgbWFpbiBrZXltYXAgc2F2 ZXMKdHlwZXNldCAtZ2lIIFpQTEdfQklOREtFWV9NQUlOX0lEWAoKIyBIb2xkcyBjb25jYXRlbmF0 ZWQgYWxpYXNlcyBkZWNsYXJlZCBieSBlYWNoIHBsdWdpbgp0eXBlc2V0IC1nQUggWlBMR19BTElB U0VTCgojIEhvbGRzIGNvbmNhdGVuYXRlZCBwYWlycyAid2lkZ2V0X25hbWUgc2F2ZV9uYW1lIiBm b3IgdXNlIHdpdGggemxlIC1BCnR5cGVzZXQgLWdBSCBaUExHX1dJREdFVFNfU0FWRUQKCiMgSG9s ZHMgY29uY2F0ZW5hdGVkIG5hbWVzIG9mIHdpZGdldHMgdGhhdCBzaG91bGQgYmUgZGVsZXRlZAp0 eXBlc2V0IC1nQUggWlBMR19XSURHRVRTX0RFTEVURQoKIyB9fX0KCiMKIyBJbml0IHt7ewojCgp6 bW9kbG9hZCB6c2gvenV0aWwgfHwgcmV0dXJuIDEKem1vZGxvYWQgenNoL3BhcmFtZXRlciB8fCBy ZXR1cm4gMQp6bW9kbG9hZCB6c2gvdGVybWluZm8gMj4vZGV2L251bGwKem1vZGxvYWQgenNoL3Rl cm1jYXAgMj4vZGV2L251bGwKCmlmIFtbICggLW4gIiR7dGVybWluZm9bY29sb3JzXX0iIHx8IC1u ICIke3Rlcm1jYXBbQ29dfSIgKSAmJiAteiAiJHtmdW5jdGlvbnNbY29sb3JzXX0iIF1dOyB0aGVu CiAgICBhdXRvbG9hZCBjb2xvcnMKICAgIGNvbG9ycwpmaQoKdHlwZXNldCAtZ0FIIFpQTEdfQ09M ClpQTEdfQ09MPSgKICAgICJ0aXRsZSIgIiIKICAgICJwbmFtZSIgIiR7ZmdfYm9sZFt5ZWxsb3dd fSIKICAgICJ1bmFtZSIgIiR7ZmdfYm9sZFttYWdlbnRhXX0iCiAgICAia2V5d29yZCIgIiR7Zmdf Ym9sZFtncmVlbl19IgogICAgImVycm9yIiAiJHtmZ19ib2xkW3JlZF19IgogICAgInAiICIke2Zn X2JvbGRbYmx1ZV19IgogICAgImJhciIgIiR7ZmdfYm9sZFttYWdlbnRhXX0iCiAgICAiaW5mbyIg IiR7ZmdfYm9sZFtncmVlbl19IgogICAgInVuaW5zdCIgIiR7ZmdfYm9sZFtibHVlXX0iCiAgICAi cnN0IiAiJHJlc2V0X2NvbG9yIgopCgojIExvYWQgbGlzdCBvZiB3aWRnZXRzCmlmIFsgIiR7KHQp WlBMR19XSURHRVRfTElTVH0iICE9ICJhc3NvY2lhdGlvbiIgXTsgdGhlbgogICAgc291cmNlICIk WlBMR19ESVIvd2lkZ2V0LWxpc3QuenNoIgpmaQoKIyBMaXN0IG9mIGhvb2tzCnR5cGVzZXQgLWdB SCBaUExHX1pMRV9IT09LU19MSVNUClpQTEdfWkxFX0hPT0tTX0xJU1Q9KAogICAgemxlLWxpbmUt aW5pdCAiMSIKICAgIHpsZS1saW5lLWZpbmlzaCAiMSIKICAgIHBhc3RlLWluc2VydCAiMSIKICAg IHpsZS1pc2VhcmNoLWV4aXQgIjEiCiAgICB6bGUtaXNlYXJjaC11cGRhdGUgIjEiCiAgICB6bGUt aGlzdG9yeS1saW5lLXNldCAiMSIKICAgIHpsZS1rZXltYXAtc2VsZWN0ICIxIgopCiMgfX19Cgoj CiMgU2hhZG93aW5nLXJlbGF0ZWQgZnVuY3Rpb25zIChuYW1lcyBvZiBzdWJzdGl0dXRlIGZ1bmN0 aW9ucyBzdGFydCB3aXRoIC0tKSB7e3sKIyBNdXN0IGJlIHJlc2lzdGFudCB0byB2YXJpb3VzIGdh bWUtY2hhbmdpbmcgb3B0aW9ucyBsaWtlIEtTSF9BUlJBWVMKIwoKLS16cGxnLXJlbG9hZC1hbmQt cnVuICgpIHsKICAgIGxvY2FsIGZwYXRoX3ByZWZpeD0iJDEiIGF1dG9sb2FkX29wdHM9IiQyIiBm dW5jPSIkMyIKICAgIHNoaWZ0IDMKCiAgICAjIFVuZnVuY3Rpb24gY2FsbGVyIGZ1bmN0aW9uIChp dHMgbmFtZSBpcyBnaXZlbikKICAgIHVuZnVuY3Rpb24gIiRmdW5jIgoKICAgIGxvY2FsIEZQQVRI PSIkZnBhdGhfcHJlZml4IjoiJHtGUEFUSH0iCgogICAgIyBBZnRlciB0aGlzIHRoZSBmdW5jdGlv biBleGlzdHMgYWdhaW4KICAgIGJ1aWx0aW4gYXV0b2xvYWQgJD1hdXRvbG9hZF9vcHRzICIkZnVu YyIKCiAgICAjIFVzZXIgd2FudGVkIHRvIGNhbGwgdGhlIGZ1bmN0aW9uLCBub3Qgb25seSBsb2Fk IGl0CiAgICAiJGZ1bmMiICIkQCIKfQoKLS16cGxnLXNoYWRvdy1hdXRvbG9hZCAoKSB7CiAgICBs b2NhbCAtYSBvcHRzCiAgICBsb2NhbCBmdW5jCgogICAgenBhcnNlb3B0cyAtYSBvcHRzIC1EICR7 KHM6Oik6LVRVWGttdHp3fQoKICAgICMgVE9ETzogK1gKICAgIGlmIFsgLW4gIiR7b3B0c1socikt WF19IiBdCiAgICB0aGVuCiAgICAgICAgLXpwbGctYWRkLXJlcG9ydCAiJFpQTEdfQ1VSX1VTUEwy IiAiRmFpbGVkIGF1dG9sb2FkICRvcHRzICQqIgogICAgICAgIHByaW50IC11MiAiYnVpbHRpbiBh dXRvbG9hZCByZXF1aXJlZCBmb3IgJG9wdHMiCiAgICAgICAgcmV0dXJuIDEgIyBUZXN0YWJsZQog ICAgZmkKICAgIGlmIFsgLW4gIiR7b3B0c1sociktd119IiBdCiAgICB0aGVuCiAgICAgICAgLXpw bGctYWRkLXJlcG9ydCAiJFpQTEdfQ1VSX1VTUEwyIiAiLXctQXV0b2xvYWQgJG9wdHMgJCoiCiAg ICAgICAgYnVpbHRpbiBhdXRvbG9hZCAkb3B0cyAiJEAiCiAgICAgICAgcmV0dXJuICMgVGVzdGFi bGUKICAgIGZpCgogICAgIyBSZXBvcnQgWlBMVUdJTidzICJuYXRpdmUiIGF1dG9sb2FkcwogICAg bG9jYWwgaQogICAgZm9yIGkgaW4gIiRAIjsgZG8KICAgICAgICBsb2NhbCBtc2c9IkF1dG9sb2Fk ICRpIgogICAgICAgIFsgLW4gIiRvcHRzIiBdICYmIG1zZys9IiB3aXRoIG9wdGlvbnMgJHtvcHRz W0BdfSIKICAgICAgICAtenBsZy1hZGQtcmVwb3J0ICIkWlBMR19DVVJfVVNQTDIiICIkbXNnIgog ICAgZG9uZQoKICAgICMgRG8gWlBMVUdJTidzICJuYXRpdmUiIGF1dG9sb2FkcwogICAgbG9jYWwg UExVR0lOX0RJUj0iJFpQTEdfUExVR0lOU19ESVIvJHtaUExHX0NVUl9VU1BMfSIKICAgIGZvciBm dW5jCiAgICBkbwogICAgICAgICMgUmVhbCBhdXRvbG9hZCBkb2Vzbid0IHRvdWNoIGZ1bmN0aW9u IGlmIGl0IGFscmVhZHkgZXhpc3RzCiAgICAgICAgaWYgKCggJHsrZnVuY3Rpb25zWyRmdW5jXX0g IT0gMSApKTsgdGhlbgogICAgICAgICAgICBldmFsICJmdW5jdGlvbiAkZnVuYyB7CiAgICAgICAg ICAgICAgICAtLXpwbGctcmVsb2FkLWFuZC1ydW4gJHsocSlQTFVHSU5fRElSfSAkeyhxcSlvcHRz WypdfSAkeyhxKWZ1bmN9ICInIiRAIgogICAgICAgICAgICB9JwogICAgICAgICAgICAjZnVuY3Rp b25zWyRmdW5jXT0iLS16cGxnLXJlbG9hZC1hbmQtcnVuICR7KHEpUExVR0lOX0RJUn0gJHsocXEp b3B0c30gJHsocSlmdW5jfSAiJyIkQCInCiAgICAgICAgZmkKICAgIGRvbmUKCiAgICAjIFRlc3Rh YmxlCiAgICByZXR1cm4gMAp9CgotLXpwbGctc2hhZG93LWJpbmRrZXkoKSB7CiAgICAtenBsZy1h ZGQtcmVwb3J0ICIkWlBMR19DVVJfVVNQTDIiICJCaW5ka2V5ICQqIgoKICAgICMgUmVtZW1iZXIg dG8gcGVyZm9ybSB0aGUgYWN0dWFsIGJpbmRrZXkgY2FsbAogICAgdHlwZXNldCAtYSBwb3MKICAg IHBvcz0oICIkQCIgKQoKICAgICMgQ2hlY2sgaWYgd2UgaGF2ZSByZWd1bGFyIGJpbmRrZXkgY2Fs bCwgaS5lLgogICAgIyB3aXRoIG5vIG9wdGlvbnMgb3Igd2l0aCAtcywgcGx1cyBwb3NzaWJsZSAt TQogICAgIyBvcHRpb24KICAgIGxvY2FsIC1BIG9wdHNBCiAgICB6cGFyc2VvcHRzIC1BIG9wdHNB IC1EICR7KHM6Oik6LWxMZERBbXJzZXZhUn0gIk06IiAiTjoiCgogICAgbG9jYWwgLWEgb3B0cwog ICAgb3B0cz0oICIkeyhrKW9wdHNBW0BdfSIgKQoKICAgIGlmIFtbICIkeyNvcHRzW0BdfSIgLWVx ICIwIiB8fAogICAgICAgICggIiR7I29wdHNbQF19IiAtZXEgIjEiICYmICIke29wdHNbKHIpLU1d fSIgPSAiLU0iICkgfHwKICAgICAgICAoICIkeyNvcHRzW0BdfSIgLWVxICIxIiAmJiAiJHtvcHRz WyhyKS1SXX0iID0gIi1SIiApIHx8CiAgICAgICAgKCAiJHsjb3B0c1tAXX0iIC1lcSAiMSIgJiYg IiR7b3B0c1sociktc119IiA9ICItcyIgKSB8fAogICAgICAgICggIiR7I29wdHNbQF19IiAtbGUg IjIiICYmICIke29wdHNbKHIpLU1dfSIgPSAiLU0iICYmICIke29wdHNbKHIpLXNdfSIgPSAiLXMi ICkgfHwKICAgICAgICAoICIkeyNvcHRzW0BdfSIgLWxlICIyIiAmJiAiJHtvcHRzWyhyKS1NXX0i ID0gIi1NIiAmJiAiJHtvcHRzWyhyKS1SXX0iID0gIi1SIiApCiAgICBdXTsgdGhlbgogICAgICAg IGxvY2FsIHN0cmluZz0iJHsocSkxfSIgd2lkZ2V0PSIkeyhxKTJ9IgogICAgICAgIGxvY2FsIHF1 b3RlZAoKICAgICAgICAjICItTSBtYXAiIGdpdmVuPwogICAgICAgIGlmIFsgIiR7b3B0c1socikt TV19IiA9ICItTSIgXTsgdGhlbgogICAgICAgICAgICBsb2NhbCBNb3B0PSItTSIKICAgICAgICAg ICAgbG9jYWwgTWFyZz0iJHtvcHRzQVstTV19IgoKICAgICAgICAgICAgTW9wdD0iJHsocSlNb3B0 fSIKICAgICAgICAgICAgTWFyZz0iJHsocSlNYXJnfSIKCiAgICAgICAgICAgIHF1b3RlZD0iJHN0 cmluZyAkd2lkZ2V0ICRNb3B0ICRNYXJnIgogICAgICAgIGVsc2UKICAgICAgICAgICAgcXVvdGVk PSIkc3RyaW5nICR3aWRnZXQiCiAgICAgICAgZmkKCiAgICAgICAgIyAtUiBnaXZlbj8KICAgICAg ICBpZiBbICIke29wdHNbKHIpLVJdfSIgPSAiLVIiIF07IHRoZW4KICAgICAgICAgICAgbG9jYWwg Um9wdD0iLVIiCiAgICAgICAgICAgIFJvcHQ9IiR7KHEpUm9wdH0iCgogICAgICAgICAgICBpZiBb ICIke29wdHNbKHIpLU1dfSIgPSAiLU0iIF07IHRoZW4KICAgICAgICAgICAgICAgIHF1b3RlZD0i JHF1b3RlZCAkUm9wdCIKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIyBUd28gZW1w dHkgZmllbGRzIGZvciBub24tZXhpc3RlbnQgLU0gYXJnCiAgICAgICAgICAgICAgICBsb2NhbCBz cGFjZT0iXyIKICAgICAgICAgICAgICAgIHNwYWNlPSIkeyhxKXNwYWNlfSIKICAgICAgICAgICAg ICAgIHF1b3RlZD0iJHF1b3RlZCAkc3BhY2UgJHNwYWNlICRSb3B0IgogICAgICAgICAgICBmaQog ICAgICAgIGZpCgogICAgICAgIHF1b3RlZD0iJHsocSlxdW90ZWR9IgoKICAgICAgICAjIFJlbWVt YmVyIHRoZSBiaW5ka2V5LCBvbmx5IHdoZW4gbG9hZCBpcyBpbiBwcm9ncmVzcyAoaXQgY2FuIGJl IGRzdGFydCB0aGF0IGxlYWRzIGV4ZWN1dGlvbiBoZXJlKQogICAgICAgIFsgLW4gIiRaUExHX0NV Ul9VU1BMMiIgXSAmJiBaUExHX0JJTkRLRVlTWyRaUExHX0NVUl9VU1BMMl0rPSIkcXVvdGVkICIK ICAgICAgICAjIFJlbWVtYmVyIGZvciBkdHJhY2UKICAgICAgICBbICIkWlBMR19ERUJVR19BQ1RJ VkUiID0gIjEiIF0gJiYgWlBMR19CSU5ES0VZU1skWlBMR19ERUJVR19VU1BMMl0rPSIkcXVvdGVk ICIKICAgIGVsc2UKICAgICAgICAjIGJpbmRrZXkgLUEgbmV3a2V5bWFwIG1haW4/CiAgICAgICAg IyBOZWdhdGl2ZSBpbmRpY2VzIGZvciBLU0hfQVJSQVlTIGltbXVuaXR5CiAgICAgICAgaWYgW1sg IiR7I29wdHNbQF19IiAtZXEgIjEiICYmICIke29wdHNbKHIpLUFdfSIgPSAiLUEiICYmICIkeyNw b3NbQF19IiA9ICIzIiAmJiAiJHtwb3NbLTFdfSIgPSAibWFpbiIgJiYgIiR7cG9zWy0yXX0iICE9 ICItQSIgXV07IHRoZW4KICAgICAgICAgICAgIyBTYXZlIGEgY29weSBvZiBtYWluIGtleW1hcAog ICAgICAgICAgICAoKCBaUExHX0JJTkRLRVlfTUFJTl9JRFggKysgKSkKICAgICAgICAgICAgbG9j YWwgcG5hbWU9IiR7WlBMR19DVVJfUExVR0lOOi0kWlBMR19ERUJVR19QTFVHSU59IgogICAgICAg ICAgICBsb2NhbCBuYW1lPSIkeyhxKXBuYW1lfS1tYWluLSRaUExHX0JJTkRLRVlfTUFJTl9JRFgi CiAgICAgICAgICAgIGJ1aWx0aW4gYmluZGtleSAtTiAiJHtuYW1lfSIgbWFpbgoKICAgICAgICAg ICAgIyBSZW1lbWJlciBvY2N1cmVuY2Ugb2YgbWFpbiBrZXltYXAgc3Vic3RpdHV0aW9uLCB0byBy ZXZlcnQgb24gdW5sb2FkCiAgICAgICAgICAgIGxvY2FsIGtleXM9Il8iIHdpZGdldD0iXyIgb3B0 QT0iLUEiIG1hcG5hbWU9IiR7bmFtZX0iIG9wdFI9Il8iCiAgICAgICAgICAgIGxvY2FsIHF1b3Rl ZD0iJHsocSlrZXlzfSAkeyhxKXdpZGdldH0gJHsocSlvcHRBfSAkeyhxKW1hcG5hbWV9ICR7KHEp b3B0Un0iCiAgICAgICAgICAgIHF1b3RlZD0iJHsocSlxdW90ZWR9IgoKICAgICAgICAgICAgIyBS ZW1lbWJlciB0aGUgYmluZGtleSwgb25seSB3aGVuIGxvYWQgaXMgaW4gcHJvZ3Jlc3MgKGl0IGNh biBiZSBkc3RhcnQgdGhhdCBsZWFkcyBleGVjdXRpb24gaGVyZSkKICAgICAgICAgICAgWyAtbiAi JFpQTEdfQ1VSX1VTUEwyIiBdICYmIFpQTEdfQklOREtFWVNbJFpQTEdfQ1VSX1VTUEwyXSs9IiRx dW90ZWQgIgogICAgICAgICAgICAjIFJlbWVtYmVyIGZvciBkdHJhY2UKICAgICAgICAgICAgWyAi JFpQTEdfREVCVUdfQUNUSVZFIiA9ICIxIiBdICYmIFpQTEdfQklOREtFWVNbJFpQTEdfREVCVUdf VVNQTDJdKz0iJHF1b3RlZCAiCgogICAgICAgICAgICAtenBsZy1hZGQtcmVwb3J0ICIkWlBMR19D VVJfVVNQTDIiICJXYXJuaW5nOiBrZXltYXAgXGBtYWluJyBjb3BpZWQgdG8gXGAke25hbWV9JyBi ZWNhdXNlIG9mIFxgJHtwb3NbLTJdfScgc3Vic3RpdHV0aW9uIgogICAgICAgICMgYmluZGtleSAt TiBuZXdrZXltYXAgW290aGVyXQogICAgICAgIGVsaWYgW1sgIiR7I29wdHNbQF19IiAtZXEgMSAm JiAiJHtvcHRzWyhyKS1OXX0iID0gIi1OIiBdXTsgdGhlbgogICAgICAgICAgICBsb2NhbCBOb3B0 PSItTiIKICAgICAgICAgICAgbG9jYWwgTmFyZz0iJHtvcHRzQVstTl19IgoKICAgICAgICAgICAg bG9jYWwga2V5cz0iXyIgd2lkZ2V0PSJfIiBvcHROPSItTiIgbWFwbmFtZT0iJHtOYXJnfSIgb3B0 Uj0iXyIKICAgICAgICAgICAgbG9jYWwgcXVvdGVkPSIkeyhxKWtleXN9ICR7KHEpd2lkZ2V0fSAk eyhxKW9wdE59ICR7KHEpbWFwbmFtZX0gJHsocSlvcHRSfSIKICAgICAgICAgICAgcXVvdGVkPSIk eyhxKXF1b3RlZH0iCgogICAgICAgICAgICAjIFJlbWVtYmVyIHRoZSBiaW5ka2V5LCBvbmx5IHdo ZW4gbG9hZCBpcyBpbiBwcm9ncmVzcyAoaXQgY2FuIGJlIGRzdGFydCB0aGF0IGxlYWRzIGV4ZWN1 dGlvbiBoZXJlKQogICAgICAgICAgICBbIC1uICIkWlBMR19DVVJfVVNQTDIiIF0gJiYgWlBMR19C SU5ES0VZU1skWlBMR19DVVJfVVNQTDJdKz0iJHF1b3RlZCAiCiAgICAgICAgICAgICMgUmVtZW1i ZXIgZm9yIGR0cmFjZQogICAgICAgICAgICBbICIkWlBMR19ERUJVR19BQ1RJVkUiID0gIjEiIF0g JiYgWlBMR19CSU5ES0VZU1skWlBMR19ERUJVR19VU1BMMl0rPSIkcXVvdGVkICIKICAgICAgICBl bHNlCiAgICAgICAgICAgIC16cGxnLWFkZC1yZXBvcnQgIiRaUExHX0NVUl9VU1BMMiIgIldhcm5p bmc6IGxhc3QgYmluZGtleSB1c2VkIG5vbi10eXBpY2FsIG9wdGlvbnM6ICR7b3B0c1sqXX0iCiAg ICAgICAgZmkKICAgIGZpCgogICAgIyBBLiBTaGFkb3cgb2ZmLiBVbmZ1bmN0aW9uIGJpbmRrZXkK ICAgICMgMC5hdXRvbG9hZCwgQS5iaW5ka2V5LCBCLnpzdHlsZSwgQy5hbGlhcywgRC56bGUsIEUu Y29tcGRlZgogICAgKCggJHsrWlBMR19CQUNLVVBfRlVOQ1RJT05TW2JpbmRrZXldfSApKSAmJiBm dW5jdGlvbnNbYmluZGtleV09IiR7WlBMR19CQUNLVVBfRlVOQ1RJT05TW2JpbmRrZXldfSIgfHwg dW5mdW5jdGlvbiAiYmluZGtleSIKCiAgICAjIEFjdHVhbCBiaW5ka2V5CiAgICBiaW5ka2V5ICIk e3Bvc1tAXX0iCiAgICBpbnRlZ2VyIHJldD0kPwoKICAgICMgQS4gU2hhZG93IG9uCiAgICAoKCAk eytmdW5jdGlvbnNbYmluZGtleV19ICkpICYmIFpQTEdfQkFDS1VQX0ZVTkNUSU9OU1tiaW5ka2V5 XT0iJHtmdW5jdGlvbnNbYmluZGtleV19IgogICAgZnVuY3Rpb24gYmluZGtleSB7IC0tenBsZy1z aGFkb3ctYmluZGtleSAiJEAiOyB9CgogICAgcmV0dXJuICRyZXQgIyB0ZXN0YWJsZQp9CgotLXpw bGctc2hhZG93LXpzdHlsZSgpIHsKICAgIC16cGxnLWFkZC1yZXBvcnQgIiRaUExHX0NVUl9VU1BM MiIgIlpzdHlsZSAkKiIKCiAgICAjIFJlbWVtYmVyIHRvIHBlcmZvcm0gdGhlIGFjdHVhbCB6c3R5 bGUgY2FsbAogICAgdHlwZXNldCAtYSBwb3MKICAgIHBvcz0oICIkQCIgKQoKICAgICMgQ2hlY2sg aWYgd2UgaGF2ZSByZWd1bGFyIHpzdHlsZSBjYWxsLCBpLmUuCiAgICAjIHdpdGggbm8gb3B0aW9u cyBvciB3aXRoIC1lCiAgICBsb2NhbCAtYSBvcHRzCiAgICB6cGFyc2VvcHRzIC1hIG9wdHMgLUQg JHsoczo6KTotZUxkZ2Fic1R0bX0KCiAgICBpZiBbWyAiJHsjb3B0c1tAXX0iIC1lcSAwIHx8ICgg IiR7I29wdHNbQF19IiAtZXEgMSAmJiAiJHtvcHRzWyhyKS1lXX0iID0gIi1lIiApIF1dOyB0aGVu CiAgICAgICAgIyBIYXZlIHRvIHF1b3RlICQxLCB0aGVuICQyLCB0aGVuIGNvbmNhdGVuYXRlIHRo ZW0sIHRoZW4gcXVvdGUgdGhlbSBhZ2FpbgogICAgICAgIGxvY2FsIHBhdHRlcm49IiR7KHEpMX0i IHN0eWxlPSIkeyhxKTJ9IgogICAgICAgIGxvY2FsIHBzPSIkcGF0dGVybiAkc3R5bGUiCiAgICAg ICAgcHM9IiR7KHEpcHN9IgoKICAgICAgICAjIFJlbWVtYmVyIHRoZSB6c3R5bGUsIG9ubHkgd2hl biBsb2FkIGlzIGluIHByb2dyZXNzIChpdCBjYW4gYmUgZHN0YXJ0IHRoYXQgbGVhZHMgZXhlY3V0 aW9uIGhlcmUpCiAgICAgICAgWyAtbiAiJFpQTEdfQ1VSX1VTUEwyIiBdICYmIFpQTEdfWlNUWUxF U1skWlBMR19DVVJfVVNQTDJdKz0iJHBzICIKICAgICAgICAjIFJlbWVtYmVyIGZvciBkdHJhY2UK ICAgICAgICBbICIkWlBMR19ERUJVR19BQ1RJVkUiID0gIjEiIF0gJiYgWlBMR19aU1RZTEVTWyRa UExHX0RFQlVHX1VTUEwyXSs9IiRwcyAiCiAgICBlbHNlCiAgICAgICAgaWYgW1sgISAiJHsjb3B0 c30iID0gIjEiICYmICggIiR7b3B0c1sociktc119IiA9ICItcyIgfHwgIiR7b3B0c1sociktYl19 IiA9ICItYiIgfHwgIiR7b3B0c1sociktYV19IiA9ICItYSIgfHwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiJHtvcHRzWyhyKS10XX0iID0gIi10IiB8fCAiJHtvcHRzWyhy KS1UXX0iID0gIi1UIiB8fCAiJHtvcHRzWyhyKS1tXX0iID0gIi1tIiApIF1dCiAgICAgICAgdGhl bgogICAgICAgICAgICAtenBsZy1hZGQtcmVwb3J0ICIkWlBMR19DVVJfVVNQTDIiICJXYXJuaW5n OiBsYXN0IHpzdHlsZSB1c2VkIG5vbi10eXBpY2FsIG9wdGlvbnM6ICR7b3B0c1sqXX0iCiAgICAg ICAgZmkKICAgIGZpCgogICAgIyBCLiBTaGFkb3cgb2ZmLiBVbmZ1bmN0aW9uIHpzdHlsZQogICAg IyAwLmF1dG9sb2FkLCBBLmJpbmRrZXksIEIuenN0eWxlLCBDLmFsaWFzLCBELnpsZSwgRS5jb21w ZGVmCiAgICAoKCAkeytaUExHX0JBQ0tVUF9GVU5DVElPTlNbenN0eWxlXX0gKSkgJiYgZnVuY3Rp b25zW3pzdHlsZV09IiR7WlBMR19CQUNLVVBfRlVOQ1RJT05TW3pzdHlsZV19IiB8fCB1bmZ1bmN0 aW9uICJ6c3R5bGUiCgogICAgIyBBY3R1YWwgenN0eWxlCiAgICB6c3R5bGUgIiR7cG9zW0BdfSIK ICAgIGludGVnZXIgcmV0PSQ/CgogICAgIyBCLiBTaGFkb3cgb24KICAgICgoICR7K2Z1bmN0aW9u c1t6c3R5bGVdfSApKSAmJiBaUExHX0JBQ0tVUF9GVU5DVElPTlNbenN0eWxlXT0iJHtmdW5jdGlv bnNbenN0eWxlXX0iCiAgICBmdW5jdGlvbiB6c3R5bGUgeyAtLXpwbGctc2hhZG93LXpzdHlsZSAi JEAiOyB9CgogICAgcmV0dXJuICRyZXQgIyB0ZXN0YWJsZQp9CgotLXpwbGctc2hhZG93LWFsaWFz KCkgewogICAgLXpwbGctYWRkLXJlcG9ydCAiJFpQTEdfQ1VSX1VTUEwyIiAiQWxpYXMgJCoiCgog ICAgIyBSZW1lbWJlciB0byBwZXJmb3JtIHRoZSBhY3R1YWwgYWxpYXMgY2FsbAogICAgdHlwZXNl dCAtYSBwb3MKICAgIHBvcz0oICIkQCIgKQoKICAgIGxvY2FsIC1hIG9wdHMKICAgIHpwYXJzZW9w dHMgLWEgb3B0cyAtRCAkeyhzOjopOi1nc30KCiAgICBsb2NhbCBhIHF1b3RlZCB0bXAKICAgIGZv ciBhIGluICIkQCI7IGRvCiAgICAgICAgbG9jYWwgYW5hbWU9IiR7YSUlPSp9IgogICAgICAgIGxv Y2FsIGF2YWx1ZT0iJHthIyo9fSIKCiAgICAgICAgIyBDaGVjayBpZiBhbGlhcyBpcyB0byBiZSBy ZWRlZmluZWQKICAgICAgICAoKCAkeythbGlhc2VzWyRhbmFtZV19ICkpICYmIC16cGxnLWFkZC1y ZXBvcnQgIiRaUExHX0NVUl9VU1BMMiIgIldhcm5pbmc6IHJlZGVmaW5pbmcgYWxpYXMgXGAke2Fu YW1lfScsIHByZXZpb3VzIHZhbHVlOiAke2F2YWx1ZX0iCgogICAgICAgIGFuYW1lPSIkeyhxKWFu YW1lfSIKICAgICAgICBsb2NhbCBibmFtZT0iJHsocSlhdmFsdWV9IgoKICAgICAgICBpZiBbICIk e29wdHNbKHIpLXNdfSIgPSAiLXMiIF07IHRoZW4KICAgICAgICAgICAgdG1wPSItcyIKICAgICAg ICAgICAgdG1wPSIkeyhxKXRtcH0iCiAgICAgICAgICAgIHF1b3RlZD0iJGFuYW1lICRibmFtZSAk dG1wIgogICAgICAgIGVsaWYgWyAiJHtvcHRzWyhyKS1nXX0iID0gIi1nIiBdOyB0aGVuCiAgICAg ICAgICAgIHRtcD0iLWciCiAgICAgICAgICAgIHRtcD0iJHsocSl0bXB9IgogICAgICAgICAgICBx dW90ZWQ9IiRhbmFtZSAkYm5hbWUgJHRtcCIKICAgICAgICBlbHNlCiAgICAgICAgICAgIHF1b3Rl ZD0iJGFuYW1lICRibmFtZSIKICAgICAgICBmaQoKICAgICAgICBxdW90ZWQ9IiR7KHEpcXVvdGVk fSIKCiAgICAgICAgIyBSZW1lbWJlciB0aGUgYWxpYXMsIG9ubHkgd2hlbiBsb2FkIGlzIGluIHBy b2dyZXNzIChpdCBjYW4gYmUgZHN0YXJ0IHRoYXQgbGVhZHMgZXhlY3V0aW9uIGhlcmUpCiAgICAg ICAgWyAtbiAiJFpQTEdfQ1VSX1VTUEwyIiBdICYmIFpQTEdfQUxJQVNFU1skWlBMR19DVVJfVVNQ TDJdKz0iJHF1b3RlZCAiCiAgICAgICAgIyBSZW1lbWJlciBmb3IgZHRyYWNlCiAgICAgICAgWyAi JFpQTEdfREVCVUdfQUNUSVZFIiA9ICIxIiBdICYmIFpQTEdfQUxJQVNFU1skWlBMR19ERUJVR19V U1BMMl0rPSIkcXVvdGVkICIKICAgIGRvbmUKCiAgICAjIEMuIFNoYWRvdyBvZmYuIFVuZnVuY3Rp b24gYWxpYXMKICAgICMgMC5hdXRvbG9hZCwgQS5iaW5ka2V5LCBCLnpzdHlsZSwgQy5hbGlhcywg RC56bGUsIEUuY29tcGRlZgogICAgKCggJHsrWlBMR19CQUNLVVBfRlVOQ1RJT05TW2FsaWFzXX0g KSkgJiYgZnVuY3Rpb25zW2FsaWFzXT0iJHtaUExHX0JBQ0tVUF9GVU5DVElPTlNbYWxpYXNdfSIg fHwgdW5mdW5jdGlvbiAiYWxpYXMiCgogICAgIyBBY3R1YWwgYWxpYXMKICAgIGFsaWFzICIke3Bv c1tAXX0iCiAgICBpbnRlZ2VyIHJldD0kPwoKICAgICMgQy4gU2hhZG93IG9uCiAgICAoKCAkeytm dW5jdGlvbnNbYWxpYXNdfSApKSAmJiBaUExHX0JBQ0tVUF9GVU5DVElPTlNbYWxpYXNdPSIke2Z1 bmN0aW9uc1thbGlhc119IgogICAgZnVuY3Rpb24gYWxpYXMgeyAtLXpwbGctc2hhZG93LWFsaWFz ICIkQCI7IH0KCiAgICByZXR1cm4gJHJldCAjIHRlc3RhYmxlCn0KCi0tenBsZy1zaGFkb3ctemxl KCkgewogICAgLXpwbGctYWRkLXJlcG9ydCAiJFpQTEdfQ1VSX1VTUEwyIiAiWmxlICQqIgoKICAg ICMgUmVtZW1iZXIgdG8gcGVyZm9ybSB0aGUgYWN0dWFsIHpsZSBjYWxsCiAgICB0eXBlc2V0IC1h IHBvcwogICAgcG9zPSggIiRAIiApCgogICAgIyBUcnkgdG8gY2F0Y2ggZ2FtZS1jaGFuZ2luZyAi LU4iCiAgICBpZiBbWyAiJDEiID0gIi1OIiAmJiAiJCMiID0gIjMiIF1dOyB0aGVuCiAgICAgICAg ICAgICMgSG9va3MKICAgICAgICAgICAgaWYgWyAiJHtaUExHX1pMRV9IT09LU19MSVNUWyQyXX0i ID0gIjEiIF07IHRoZW4KICAgICAgICAgICAgICAgIGxvY2FsIHF1b3RlZD0iJDIiCiAgICAgICAg ICAgICAgICBxdW90ZWQ9IiR7KHEpcXVvdGVkfSIKICAgICAgICAgICAgICAgICMgUmVtZW1iZXIg b25seSB3aGVuIGxvYWQgaXMgaW4gcHJvZ3Jlc3MgKGl0IGNhbiBiZSBkc3RhcnQgdGhhdCBsZWFk cyBleGVjdXRpb24gaGVyZSkKICAgICAgICAgICAgICAgIFsgLW4gIiRaUExHX0NVUl9VU1BMMiIg XSAmJiBaUExHX1dJREdFVFNfREVMRVRFWyRaUExHX0NVUl9VU1BMMl0rPSIkcXVvdGVkICIKICAg ICAgICAgICAgIyBUaGVzZSB3aWxsIGJlIHNhdmVkIGFuZCByZXN0b3JlZAogICAgICAgICAgICBl bGlmIFsgIiR7WlBMR19XSURHRVRfTElTVFskMl19IiA9ICIxIiBdOyB0aGVuCiAgICAgICAgICAg ICAgICAjIEhhdmUgdG8gcmVtZW1iZXIgb3JpZ2luYWwgd2lkZ2V0ICIkMiIgYW5kCiAgICAgICAg ICAgICAgICAjIHRoZSBjb3B5IHRoYXQgaXQncyBnb2luZyB0byBiZSBkb25lCiAgICAgICAgICAg ICAgICBsb2NhbCB3aWRuYW1lPSIkMiIgc2F2ZWRfd2lkbmFtZT0ienBsdWdpbi1zYXZlZC0kMiIK ICAgICAgICAgICAgICAgIGJ1aWx0aW4gemxlIC1BICIkd2lkbmFtZSIgIiRzYXZlZF93aWRuYW1l IgoKICAgICAgICAgICAgICAgIHdpZG5hbWU9IiR7KHEpd2lkbmFtZX0iCiAgICAgICAgICAgICAg ICBzYXZlZF93aWRuYW1lPSIkeyhxKXNhdmVkX3dpZG5hbWV9IgogICAgICAgICAgICAgICAgbG9j YWwgcXVvdGVkPSIkd2lkbmFtZSAkc2F2ZWRfd2lkbmFtZSIKICAgICAgICAgICAgICAgIHF1b3Rl ZD0iJHsocSlxdW90ZWR9IgogICAgICAgICAgICAgICAgIyBSZW1lbWJlciBvbmx5IHdoZW4gbG9h ZCBpcyBpbiBwcm9ncmVzcyAoaXQgY2FuIGJlIGRzdGFydCB0aGF0IGxlYWRzIGV4ZWN1dGlvbiBo ZXJlKQogICAgICAgICAgICAgICAgWyAtbiAiJFpQTEdfQ1VSX1VTUEwyIiBdICYmIFpQTEdfV0lE R0VUU19TQVZFRFskWlBMR19DVVJfVVNQTDJdKz0iJHF1b3RlZCAiCiAgICAgICAgICAgICAgICAj IFJlbWVtYmVyIGZvciBkdHJhY2UKICAgICAgICAgICAgICAgIFsgIiRaUExHX0RFQlVHX0FDVElW RSIgPSAiMSIgXSAmJiBaUExHX1dJREdFVFNfU0FWRURbJFpQTEdfREVCVUdfVVNQTDJdKz0iJHF1 b3RlZCAiCiAgICAgICAgICAgICAjIFRoZXNlIHdpbGwgYmUgZGVsZXRlZAogICAgICAgICAgICAg ZWxzZQogICAgICAgICAgICAgICAgIC16cGxnLWFkZC1yZXBvcnQgIiRaUExHX0NVUl9VU1BMMiIg Ildhcm5pbmc6IHVua25vd24gd2lkZ2V0IHJlcGxhY2VkL3Rha2VuIHZpYSB6bGUgLU46IFxgJDIn LCBpdCBpcyBzZXQgdG8gYmUgZGVsZXRlZCIKICAgICAgICAgICAgICAgICBsb2NhbCBxdW90ZWQ9 IiQyIgogICAgICAgICAgICAgICAgIHF1b3RlZD0iJHsocSlxdW90ZWR9IgogICAgICAgICAgICAg ICAgICMgUmVtZW1iZXIgb25seSB3aGVuIGxvYWQgaXMgaW4gcHJvZ3Jlc3MgKGl0IGNhbiBiZSBk c3RhcnQgdGhhdCBsZWFkcyBleGVjdXRpb24gaGVyZSkKICAgICAgICAgICAgICAgICBbIC1uICIk WlBMR19DVVJfVVNQTDIiIF0gJiYgWlBMR19XSURHRVRTX0RFTEVURVskWlBMR19DVVJfVVNQTDJd Kz0iJHF1b3RlZCAiCiAgICAgICAgICAgICAgICAgIyBSZW1lbWJlciBmb3IgZHRyYWNlCiAgICAg ICAgICAgICAgICAgWyAiJFpQTEdfREVCVUdfQUNUSVZFIiA9ICIxIiBdICYmIFpQTEdfV0lER0VU U19ERUxFVEVbJFpQTEdfREVCVUdfVVNQTDJdKz0iJHF1b3RlZCAiCiAgICAgICAgICAgICBmaQog ICAgIyBDcmVhdGlvbiBvZiBuZXcgd2lkZ2V0cy4gVGhleSB3aWxsIGJlIHJlbW92ZWQgb24gdW5s b2FkCiAgICBlbGlmIFtbICIkMSIgPSAiLU4iICYmICIkIyIgPSAiMiIgXV07IHRoZW4KICAgICAg ICBsb2NhbCBxdW90ZWQ9IiQyIgogICAgICAgIHF1b3RlZD0iJHsocSlxdW90ZWR9IgogICAgICAg ICMgUmVtZW1iZXIgb25seSB3aGVuIGxvYWQgaXMgaW4gcHJvZ3Jlc3MgKGl0IGNhbiBiZSBkc3Rh cnQgdGhhdCBsZWFkcyBleGVjdXRpb24gaGVyZSkKICAgICAgICBbIC1uICIkWlBMR19DVVJfVVNQ TDIiIF0gJiYgWlBMR19XSURHRVRTX0RFTEVURVskWlBMR19DVVJfVVNQTDJdKz0iJHF1b3RlZCAi CiAgICAgICAgIyBSZW1lbWJlciBmb3IgZHRyYWNlCiAgICAgICAgWyAiJFpQTEdfREVCVUdfQUNU SVZFIiA9ICIxIiBdICYmIFpQTEdfV0lER0VUU19ERUxFVEVbJFpQTEdfREVCVUdfVVNQTDJdKz0i JHF1b3RlZCAiCiAgICBmaQoKICAgICMgRC4gU2hhZG93IG9mZi4gVW5mdW5jdGlvbiB6bGUKICAg ICMgMC5hdXRvbG9hZCwgQS5iaW5ka2V5LCBCLnpzdHlsZSwgQy5hbGlhcywgRC56bGUsIEUuY29t cGRlZgogICAgKCggJHsrWlBMR19CQUNLVVBfRlVOQ1RJT05TW3psZV19ICkpICYmIGZ1bmN0aW9u c1t6bGVdPSIke1pQTEdfQkFDS1VQX0ZVTkNUSU9OU1t6bGVdfSIgfHwgdW5mdW5jdGlvbiAiemxl IgoKICAgICMgQWN0dWFsIHpsZQogICAgemxlICIke3Bvc1tAXX0iCiAgICBpbnRlZ2VyIHJldD0k PwoKICAgICMgRC4gU2hhZG93IG9uCiAgICAoKCAkeytmdW5jdGlvbnNbemxlXX0gKSkgJiYgWlBM R19CQUNLVVBfRlVOQ1RJT05TW3psZV09IiR7ZnVuY3Rpb25zW3psZV19IgogICAgZnVuY3Rpb24g emxlIHsgLS16cGxnLXNoYWRvdy16bGUgIiRAIjsgfQoKICAgIHJldHVybiAkcmV0ICMgdGVzdGFi bGUKfQoKLS16cGxnLXNoYWRvdy1jb21wZGVmKCkgewogICAgIyBDaGVjayBpZiB0aGF0IGZ1bmN0 aW9uIGV4aXN0cwogICAgaWYgKCggJHsrWlBMR19CQUNLVVBfRlVOQ1RJT05TW2NvbXBkZWZdfSAp KTsgdGhlbgogICAgICAgIC16cGxnLWFkZC1yZXBvcnQgIiRaUExHX0NVUl9VU1BMMiIgIldhcm5p bmc6IHJ1bm5pbmcgXGBjb21wZGVmICQqJyBhbmQgXCdjb21wZGVmJyBleGlzdHMiXAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKHlvdSBtaWdodCBiZSBy dW5uaW5nIGNvbXBpbml0IHR3aWNlOyB0aGlzIGlzIHByb2JhYmx5IHJlcXVpcmVkIlwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvciB0aGlzIHBsdWdp bidzIGNvbXBsZXRpb24gdG8gd29yaykiCiAgICBlbHNlCiAgICAgICAgLXpwbGctYWRkLXJlcG9y dCAiJFpQTEdfQ1VSX1VTUEwyIiAiV2FybmluZzogcnVubmluZyBcYGNvbXBkZWYgJConIGFuZCBc YGNvbXBkZWYnIGRvZXNuJ3QgZXhpc3QiCiAgICBmaQoKICAgICMgRS4gU2hhZG93IG9mZi4gVW5m dW5jdGlvbiAiY29tcGRlZiIKICAgICMgMC5hdXRvbG9hZCwgQS5iaW5ka2V5LCBCLnpzdHlsZSwg Qy5hbGlhcywgRC56bGUsIEUuY29tcGRlZgogICAgKCggJHsrWlBMR19CQUNLVVBfRlVOQ1RJT05T W2NvbXBkZWZdfSApKSAmJiBmdW5jdGlvbnNbY29tcGRlZl09IiR7WlBMR19CQUNLVVBfRlVOQ1RJ T05TW2NvbXBkZWZdfSIgfHwgdW5mdW5jdGlvbiAiY29tcGRlZiIKCiAgICAjIEFjdHVhbCBjb21w ZGVmCiAgICBjb21wZGVmICIkQCIKICAgIGludGVnZXIgcmV0PSQ/CgogICAgIyBFLiBTaGFkb3cg b24KICAgICgoICR7K2Z1bmN0aW9uc1tjb21wZGVmXX0gKSkgJiYgWlBMR19CQUNLVVBfRlVOQ1RJ T05TW2NvbXBkZWZdPSIke2Z1bmN0aW9uc1tjb21wZGVmXX0iCiAgICBmdW5jdGlvbiBjb21wZGVm IHsgLS16cGxnLXNoYWRvdy1jb21wZGVmICIkQCI7IH0KCiAgICByZXR1cm4gJHJldCAjIHRlc3Rh YmxlCn0KCiMgU2hhZG93aW5nIG9uIGNvbXBsZXRlbHkgZm9yIGEgZ2l2ZW4gbW9kZSAoImxpZ2h0 IiBvciAibG9hZCIpCi16cGxnLXNoYWRvdy1vbigpIHsKICAgIGxvY2FsIGxpZ2h0PSIkMSIKCiAg ICAjIEVuYWJsZSBzaGFkb3dpbmcgb25seSBvbmNlCiAgICBbICIkWlBMR19TSEFET1dJTkdfQUNU SVZFIiA9ICIxIiBdICYmIHJldHVybiAwCgogICAgWlBMR19TSEFET1dJTkdfQUNUSVZFPTEKCiAg ICAjIFRoZSBwb2ludCBhYm91dCBiYWNrdXBpbmcgaXM6IGRvZXMgdGhlIGtleSBleGlzdCBpbiBm dW5jdGlvbnMgYXJyYXkKICAgICMgSWYgaXQgZG9lcyBleGlzdCwgdGhlbiBpdCB3aWxsIGFsc28g ZXhpc3QgaW4gWlBMR19CQUNLVVBfRlVOQ1RJT05TCgogICAgIyBEZWZlbnNpdmUgY29kZSwgc2hv dWxkbid0IGJlIG5lZWRlZAogICAgdW5zZXQgIlpQTEdfQkFDS1VQX0ZVTkNUSU9OU1thdXRvbG9h ZF0iICMgMC4KICAgIHVuc2V0ICJaUExHX0JBQ0tVUF9GVU5DVElPTlNbYmluZGtleV0iICAjIEEu CiAgICB1bnNldCAiWlBMR19CQUNLVVBfRlVOQ1RJT05TW3pzdHlsZV0iICAgIyBCLgogICAgdW5z ZXQgIlpQTEdfQkFDS1VQX0ZVTkNUSU9OU1thbGlhc10iICAgICMgQy4KICAgIHVuc2V0ICJaUExH X0JBQ0tVUF9GVU5DVElPTlNbemxlXSIgICAgICAjIEQuCiAgICB1bnNldCAiWlBMR19CQUNLVVBf RlVOQ1RJT05TW2NvbXBkZWZdIiAgIyBFLgoKICAgICMgMC4gVXNlZCwgYnV0IG5vdCBpbiB0ZW1w b3JhcnkgcmVzdG9yYXRpb24sIHdoaWNoIGRvZXNuJ3QgaGFwcGVuIGZvciBhdXRvbG9hZAogICAg KCggJHsrZnVuY3Rpb25zW2F1dG9sb2FkXX0gKSkgJiYgWlBMR19CQUNLVVBfRlVOQ1RJT05TW2F1 dG9sb2FkXT0iJHtmdW5jdGlvbnNbYXV0b2xvYWRdfSIKICAgIGZ1bmN0aW9uIGF1dG9sb2FkIHsg LS16cGxnLXNoYWRvdy1hdXRvbG9hZCAiJEAiOyB9CgogICAgIyBMaWdodCBsb2FkaW5nIHN0b3Bz IGhlcmUKICAgIFsgIiRsaWdodCIgPSAibGlnaHQiIF0gJiYgcmV0dXJuIDAKCiAgICAjIEEuCiAg ICAoKCAkeytmdW5jdGlvbnNbYmluZGtleV19ICkpICYmIFpQTEdfQkFDS1VQX0ZVTkNUSU9OU1ti aW5ka2V5XT0iJHtmdW5jdGlvbnNbYmluZGtleV19IgogICAgZnVuY3Rpb24gYmluZGtleSB7IC0t enBsZy1zaGFkb3ctYmluZGtleSAiJEAiOyB9CgogICAgIyBCLgogICAgKCggJHsrZnVuY3Rpb25z W3pzdHlsZV19ICkpICYmIFpQTEdfQkFDS1VQX0ZVTkNUSU9OU1t6c3R5bGVdPSIke2Z1bmN0aW9u c1t6c3R5bGVdfSIKICAgIGZ1bmN0aW9uIHpzdHlsZSB7IC0tenBsZy1zaGFkb3ctenN0eWxlICIk QCI7IH0KCiAgICAjIEMuCiAgICAoKCAkeytmdW5jdGlvbnNbYWxpYXNdfSApKSAmJiBaUExHX0JB Q0tVUF9GVU5DVElPTlNbYWxpYXNdPSIke2Z1bmN0aW9uc1thbGlhc119IgogICAgZnVuY3Rpb24g YWxpYXMgeyAtLXpwbGctc2hhZG93LWFsaWFzICIkQCI7IH0KCiAgICAjIEQuCiAgICAoKCAkeytm dW5jdGlvbnNbemxlXX0gKSkgJiYgWlBMR19CQUNLVVBfRlVOQ1RJT05TW3psZV09IiR7ZnVuY3Rp b25zW3psZV19IgogICAgZnVuY3Rpb24gemxlIHsgLS16cGxnLXNoYWRvdy16bGUgIiRAIjsgfQoK ICAgICMgRS4KICAgICgoICR7K2Z1bmN0aW9uc1tjb21wZGVmXX0gKSkgJiYgWlBMR19CQUNLVVBf RlVOQ1RJT05TW2NvbXBkZWZdPSIke2Z1bmN0aW9uc1tjb21wZGVmXX0iCiAgICBmdW5jdGlvbiBj b21wZGVmIHsgLS16cGxnLXNoYWRvdy1jb21wZGVmICIkQCI7IH0KCiAgICByZXR1cm4gMAp9Cgoj IFNoYWRvd2luZyBvZmYgY29tcGxldGVseSBmb3IgYSBnaXZlbiBtb2RlICJsaWdodCIgb3Igbm90 Ci16cGxnLXNoYWRvdy1vZmYoKSB7CiAgICBsb2NhbCBsaWdodD0iJDEiCgogICAgIyBEaXNhYmxl IHNoYWRvd2luZyBvbmx5IG9uY2UKICAgIFsgIiRaUExHX1NIQURPV0lOR19BQ1RJVkUiID0gIjAi IF0gJiYgcmV0dXJuIDAKCiAgICBaUExHX1NIQURPV0lOR19BQ1RJVkU9MAoKICAgICMgMC4gVW5m dW5jdGlvbiAiYXV0b2xvYWQiCiAgICAoKCAkeytaUExHX0JBQ0tVUF9GVU5DVElPTlNbYXV0b2xv YWRdfSApKSAmJiBmdW5jdGlvbnNbYXV0b2xvYWRdPSIke1pQTEdfQkFDS1VQX0ZVTkNUSU9OU1th dXRvbG9hZF19IiB8fCB1bmZ1bmN0aW9uICJhdXRvbG9hZCIKCiAgICAjIExpZ2h0IGxvYWRpbmcg c3RvcHMgaGVyZQogICAgWyAiJGxpZ2h0IiA9ICJsaWdodCIgXSAmJiByZXR1cm4gMAoKICAgICMg VW5mdW5jdGlvbiBzaGFkb3dpbmcgZnVuY3Rpb25zCgogICAgIyBBLgogICAgKCggJHsrWlBMR19C QUNLVVBfRlVOQ1RJT05TW2JpbmRrZXldfSApKSAmJiBmdW5jdGlvbnNbYmluZGtleV09IiR7WlBM R19CQUNLVVBfRlVOQ1RJT05TW2JpbmRrZXldfSIgfHwgdW5mdW5jdGlvbiAiYmluZGtleSIKICAg ICMgQi4KICAgICgoICR7K1pQTEdfQkFDS1VQX0ZVTkNUSU9OU1t6c3R5bGVdfSApKSAmJiBmdW5j dGlvbnNbenN0eWxlXT0iJHtaUExHX0JBQ0tVUF9GVU5DVElPTlNbenN0eWxlXX0iIHx8IHVuZnVu Y3Rpb24gInpzdHlsZSIKICAgICMgQy4KICAgICgoICR7K1pQTEdfQkFDS1VQX0ZVTkNUSU9OU1th bGlhc119ICkpICYmIGZ1bmN0aW9uc1thbGlhc109IiR7WlBMR19CQUNLVVBfRlVOQ1RJT05TW2Fs aWFzXX0iIHx8IHVuZnVuY3Rpb24gImFsaWFzIgogICAgIyBELgogICAgKCggJHsrWlBMR19CQUNL VVBfRlVOQ1RJT05TW3psZV19ICkpICYmIGZ1bmN0aW9uc1t6bGVdPSIke1pQTEdfQkFDS1VQX0ZV TkNUSU9OU1t6bGVdfSIgfHwgdW5mdW5jdGlvbiAiemxlIgogICAgIyBFLgogICAgKCggJHsrWlBM R19CQUNLVVBfRlVOQ1RJT05TW2NvbXBkZWZdfSApKSAmJiBmdW5jdGlvbnNbY29tcGRlZl09IiR7 WlBMR19CQUNLVVBfRlVOQ1RJT05TW2NvbXBkZWZdfSIgfHwgdW5mdW5jdGlvbiAiY29tcGRlZiIK CiAgICByZXR1cm4gMAp9CgojIH19fQoKIwojIEZ1bmN0aW9uIGRpZmYgZnVuY3Rpb25zIHt7ewoj CgojIENhbiByZW1lbWJlciBjdXJyZW50ICRmdW5jdGlvbnMgdHdpY2UsIGFuZCBjb21wdXRlIHRo ZQojIGRpZmZlcmVuY2UsIHN0b3JpbmcgaXQgaW4gWlBMR19GVU5DVElPTlMsIGFzc29jaWF0ZWQK IyB3aXRoIGdpdmVuICgkMSkgcGx1Z2luCi16cGxnLWRpZmYtZnVuY3Rpb25zKCkgewogICAgbG9j YWwgdXNwbDI9IiQxIgogICAgbG9jYWwgY21kPSIkMiIKCiAgICBjYXNlICIkY21kIiBpbgogICAg ICAgIGJlZ2luKQogICAgICAgICAgICBaUExHX0ZVTkNUSU9OU19CRUZPUkVbJHVzcGwyXT0iJHso ajogOikkeyhxaylmdW5jdGlvbnNbQF19fSIKICAgICAgICAgICAgWlBMR19GVU5DVElPTlNbJHVz cGwyXT0iIgogICAgICAgICAgICBaUExHX0ZVTkNUSU9OU19ESUZGX1JBTlskdXNwbDJdPSIwIgog ICAgICAgICAgICA7OwogICAgICAgIGVuZCkKICAgICAgICAgICAgWlBMR19GVU5DVElPTlNfQUZU RVJbJHVzcGwyXT0iJHsoajogOikkeyhxaylmdW5jdGlvbnNbQF19fSIKICAgICAgICAgICAgWlBM R19GVU5DVElPTlNbJHVzcGwyXT0iIgogICAgICAgICAgICBaUExHX0ZVTkNUSU9OU19ESUZGX1JB TlskdXNwbDJdPSIwIgogICAgICAgICAgICA7OwogICAgICAgIGRpZmYpCiAgICAgICAgICAgICMg UnVuIGRpZmYgb25jZSwgYGJlZ2luJyBvciBgZW5kJyBpcyBuZWVkZWQgdG8gYmUgcnVuIGFnYWlu IGZvciBhIG5ldyBkaWZmCiAgICAgICAgICAgIFsgIiR7WlBMR19GVU5DVElPTlNfRElGRl9SQU5b JHVzcGwyXX0iID0gIjEiIF0gJiYgcmV0dXJuIDAKICAgICAgICAgICAgWlBMR19GVU5DVElPTlNf RElGRl9SQU5bJHVzcGwyXT0iMSIKCiAgICAgICAgICAgICMgQ2Fubm90IHJ1biBkaWZmIGlmICpf QkVGT1JFIG9yICpfQUZURVIgdmFyaWFibGUgaXMgbm90IHNldAogICAgICAgICAgICAjIEZvbGxv d2luZyBpcyBwYXJhbm9pZCBmb3IgKl9CRUZPUkUgYW5kICpfQUZURVIgYmVpbmcgb25seSBzcGFj ZXMKCiAgICAgICAgICAgIHNldG9wdCBsb2NhbG9wdGlvbnMgZXh0ZW5kZWRnbG9iCiAgICAgICAg ICAgIFtbICIke1pQTEdfRlVOQ1RJT05TX0JFRk9SRVskdXNwbDJdfSIgIT0gKlskJyEgXHQnXSog fHwgIiR7WlBMR19GVU5DVElPTlNfQUZURVJbJHVzcGwyXX0iICE9ICpbJCchIFx0J10qIF1dICYm IHJldHVybiAxCgogICAgICAgICAgICB0eXBlc2V0IC1BIGZ1bmMKICAgICAgICAgICAgbG9jYWwg aQoKICAgICAgICAgICAgIyBUaGlzIGluY2x1ZGVzIG5ldyBmdW5jdGlvbnMuIFF1b3RpbmcgaXMg a2VwdCAoaS5lLiBubyBpPSR7KFEpaX0pCiAgICAgICAgICAgIGZvciBpIGluICIkeyh6KVpQTEdf RlVOQ1RJT05TX0FGVEVSWyR1c3BsMl19IjsgZG8KICAgICAgICAgICAgICAgIGZ1bmNbJGldPTEK ICAgICAgICAgICAgZG9uZQoKICAgICAgICAgICAgIyBSZW1vdmUgZHVwbGljYXRlZCBlbnRyaWVz LCBpLmUuIGV4aXN0aW5nIGJlZm9yZS4gUXVvdGluZyBpcyBrZXB0CiAgICAgICAgICAgIGZvciBp IGluICIkeyh6KVpQTEdfRlVOQ1RJT05TX0JFRk9SRVskdXNwbDJdfSI7IGRvCiAgICAgICAgICAg ICAgICAjIGlmIHdvdWxkIGRvIHVuc2V0LCB0aGVuOiBmdW5jW29wcCthXFtdOiBpbnZhbGlkIHBh cmFtZXRlciBuYW1lCiAgICAgICAgICAgICAgICBmdW5jWyRpXT0wCiAgICAgICAgICAgIGRvbmUK CiAgICAgICAgICAgICMgU3RvcmUgdGhlIGZ1bmN0aW9ucywgYXNzb2NpYXRpbmcgdGhlbSB3aXRo IHBsdWdpbiAoJHVzcGwyKQogICAgICAgICAgICBmb3IgaSBpbiAiJHsob25rKWZ1bmNbQF19Ijsg ZG8KICAgICAgICAgICAgICAgIFsgIiR7ZnVuY1skaV19IiA9ICIxIiBdICYmIFpQTEdfRlVOQ1RJ T05TWyR1c3BsMl0rPSIkaSAiCiAgICAgICAgICAgIGRvbmUKICAgICAgICAgICAgOzsKICAgICAg ICAqKQogICAgICAgICAgICByZXR1cm4gMQogICAgZXNhYwoKICAgIHJldHVybiAwCn0KCiMgQ3Jl YXRlcyBhIG9uZSBvciB0d28gY29sdW1ucyB0ZXh0IHdpdGggZnVuY3Rpb25zCiMgYmVsb25naW5n IHRvIGdpdmVuICgkMSkgcGx1Z2luCi16cGxnLWZvcm1hdC1mdW5jdGlvbnMoKSB7CiAgICBsb2Nh bCB1c3BsMj0iJDEiCgogICAgdHlwZXNldCAtYSBmdW5jCiAgICBmdW5jPSggIiR7KHopWlBMR19G VU5DVElPTlNbJHVzcGwyXX0iICkKCiAgICAjIEdldCBsZW5ndGggb2YgbG9uZ2VzdCBsZWZ0LXJp Z2h0IHN0cmluZyBwYWlyLAogICAgIyBhbmQgbGVuZ3RoIG9mIGxvbmdlc3QgbGVmdCBzdHJpbmcK ICAgIGludGVnZXIgbG9uZ2VzdD0wIGxvbmdlc3RfbGVmdD0wIGN1cl9sZWZ0X2xlbj0wIGNvdW50 PTEKICAgIGxvY2FsIGYKICAgIGZvciBmIGluICIkeyhvbilmdW5jW0BdfSI7IGRvCiAgICAgICAg WyAteiAiJHsjZn0iIF0gJiYgY29udGludWUKICAgICAgICBmPSIkeyhRKWZ9IgoKICAgICAgICAj IENvbXB1dGUgZm9yIGVsZW1lbnRzIGluIGxlZnQgY29sdW1uLAogICAgICAgICMgb25lcyB0aGF0 IHdpbGwgYmUgcGFkZWQgd2l0aCBzcGFjZXMgCiAgICAgICAgaWYgKCggY291bnQgKysgJSAyICE9 IDAgKSk7IHRoZW4KICAgICAgICAgICAgWyAiJHsjZn0iIC1ndCAiJGxvbmdlc3RfbGVmdCIgXSAm JiBsb25nZXN0X2xlZnQ9IiR7I2Z9IgogICAgICAgICAgICBjdXJfbGVmdF9sZW49IiR7I2Z9Igog ICAgICAgIGVsc2UKICAgICAgICAgICAgY3VyX2xlZnRfbGVuKz0iJHsjZn0iCiAgICAgICAgICAg IGN1cl9sZWZ0X2xlbis9MSAjIEZvciBzZXBhcmF0aW5nIHNwYWNlCiAgICAgICAgICAgIFsgIiRj dXJfbGVmdF9sZW4iIC1ndCAiJGxvbmdlc3QiIF0gJiYgbG9uZ2VzdD0iJGN1cl9sZWZ0X2xlbiIK ICAgICAgICBmaQogICAgZG9uZQoKICAgICMgT3V0cHV0IGluIG9uZSBvciB0d28gY29sdW1ucwog ICAgbG9jYWwgYW5zd2VyPSIiCiAgICBjb3VudD0xCiAgICBmb3IgZiBpbiAiJHsob24pZnVuY1tA XX0iOyBkbwogICAgICAgIFsgLXogIiRmIiBdICYmIGNvbnRpbnVlCiAgICAgICAgZj0iJHsoUSlm fSIKCiAgICAgICAgaWYgKCggQ09MVU1OUyA+PSBsb25nZXN0ICkpOyB0aGVuCiAgICAgICAgICAg IGlmICgoIGNvdW50ICsrICUgMiAhPSAwICkpOyB0aGVuCiAgICAgICAgICAgICAgICBhbnN3ZXIr PSIkeyhyOmxvbmdlc3RfbGVmdCsxOjogOilmfSIKICAgICAgICAgICAgZWxzZQogICAgICAgICAg ICAgICAgYW5zd2VyKz0iJGYiJCdcbicKICAgICAgICAgICAgZmkKICAgICAgICBlbHNlCiAgICAg ICAgICAgIGFuc3dlcis9IiRmIiQnXG4nCiAgICAgICAgZmkKICAgIGRvbmUKICAgIFJFUExZPSIk YW5zd2VyIgogICAgIyA9PSAwIGlzOiBuZXh0IGVsZW1lbnQgd291bGQgaGF2ZSBuZXdsaW5lIChw b3N0Zml4IGFkZGl0aW9uIGluICJjb3VudCArKyIpCiAgICAoKCBDT0xVTU5TID49IGxvbmdlc3Qg JiYgY291bnQgJSAyID09IDAgKSkgJiYgUkVQTFk9IiRSRVBMWSIkJ1xuJwp9CgojIH19fQoKIwoj IE9wdGlvbiBkaWZmIGZ1bmN0aW9ucyB7e3sKIwoKIyBDYW4gcmVtZW1iZXIgY3VycmVudCAkb3B0 aW9ucyB0d2ljZS4gQWZ0ZXIgdGhhdCBjYW4KIyBkZXRlY3QgYW55IGNoYW5nZSBiZXR3ZWVuIHRo ZSB0d28gc2F2ZXMuIENoYW5nZWQKIyBvcHRpb25zIGFyZSBhcHBlbmRlZCBhcyB0aGV5IHdlcmUg aW4gZmlyc3Qgc2F2ZSB0bwojIFpQTEdfT1BUSU9OUywgYWxsIGFzc29jaWF0ZWQgd2l0aCBnaXZl biAoJDEpIHBsdWdpbgotenBsZy1kaWZmLW9wdGlvbnMoKSB7CiAgICBsb2NhbCB1c3BsMj0iJDEi CiAgICBsb2NhbCBjbWQ9IiQyIgoKICAgIGNhc2UgIiRjbWQiIGluCiAgICAgICAgYmVnaW4pCiAg ICAgICAgICAgIGxvY2FsIGJJRlM9IiRJRlMiOyBJRlM9IiAiCiAgICAgICAgICAgIFpQTEdfT1BU SU9OU19CRUZPUkVbJHVzcGwyXT0iJHsoa3Ypb3B0aW9uc1tAXX0iCiAgICAgICAgICAgIElGUz0i JGJJRlMiCiAgICAgICAgICAgIFpQTEdfT1BUSU9OU1skdXNwbDJdPSIiCiAgICAgICAgICAgIFpQ TEdfT1BUSU9OU19ESUZGX1JBTlskdXNwbDJdPSIwIgogICAgICAgICAgICA7OwogICAgICAgIGVu ZCkKICAgICAgICAgICAgbG9jYWwgYklGUz0iJElGUyI7IElGUz0iICIKICAgICAgICAgICAgWlBM R19PUFRJT05TX0FGVEVSWyR1c3BsMl09IiR7KGt2KW9wdGlvbnNbQF19IgogICAgICAgICAgICBJ RlM9IiRiSUZTIgogICAgICAgICAgICBaUExHX09QVElPTlNbJHVzcGwyXT0iIgogICAgICAgICAg ICBaUExHX09QVElPTlNfRElGRl9SQU5bJHVzcGwyXT0iMCIKICAgICAgICAgICAgOzsKICAgICAg ICBkaWZmKQogICAgICAgICAgICAjIFJ1biBkaWZmIG9uY2UsIGBiZWdpbicgb3IgYGVuZCcgaXMg bmVlZGVkIHRvIGJlIHJ1biBhZ2FpbiBmb3IgYSBuZXcgZGlmZgogICAgICAgICAgICBbICIke1pQ TEdfT1BUSU9OU19ESUZGX1JBTlskdXNwbDJdfSIgPSAiMSIgXSAmJiByZXR1cm4gMAogICAgICAg ICAgICBaUExHX09QVElPTlNfRElGRl9SQU5bJHVzcGwyXT0iMSIKCiAgICAgICAgICAgICMgQ2Fu bm90IHJ1biBkaWZmIGlmICpfQkVGT1JFIG9yICpfQUZURVIgdmFyaWFibGUgaXMgbm90IHNldAog ICAgICAgICAgICAjIEZvbGxvd2luZyBpcyBwYXJhbm9pZCBmb3IgKl9CRUZPUkUgYW5kICpfQUZU RVIgYmVpbmcgb25seSBzcGFjZXMKICAgICAgICAgICAgc2V0b3B0IGxvY2Fsb3B0aW9ucyBleHRl bmRlZGdsb2IKICAgICAgICAgICAgW1sgIiR7WlBMR19PUFRJT05TX0JFRk9SRVskdXNwbDJdfSIg IT0gKlskJyEgXHQnXSogfHwgIiR7WlBMR19PUFRJT05TX0FGVEVSWyR1c3BsMl19IiAhPSAqWyQn ISBcdCddKiBdXSAmJiByZXR1cm4gMQoKICAgICAgICAgICAgdHlwZXNldCAtQSBvcHRzX2JlZm9y ZSBvcHRzX2FmdGVyIG9wdHMKICAgICAgICAgICAgb3B0c19iZWZvcmU9KCAiJHsoeilaUExHX09Q VElPTlNfQkVGT1JFWyR1c3BsMl19IiApCiAgICAgICAgICAgIG9wdHNfYWZ0ZXI9KCAiJHsoeila UExHX09QVElPTlNfQUZURVJbJHVzcGwyXX0iICkKICAgICAgICAgICAgb3B0cz0oICkKCiAgICAg ICAgICAgICMgSXRlcmF0ZSB0aHJvdWdoIGZpcnN0IGFycmF5IChrZXlzIHRoZSBzYW1lCiAgICAg ICAgICAgICMgb24gYm90aCBvZiB0aGVtIHRob3VnaCkgYW5kIHRlc3QgZm9yIGEgY2hhbmdlCiAg ICAgICAgICAgIGxvY2FsIGtleQogICAgICAgICAgICBmb3Iga2V5IGluICIkeyhrKW9wdHNfYmVm b3JlW0BdfSI7IGRvCiAgICAgICAgICAgICAgICBpZiBbICIke29wdHNfYmVmb3JlWyRrZXldfSIg IT0gIiR7b3B0c19hZnRlclska2V5XX0iIF07IHRoZW4KICAgICAgICAgICAgICAgICAgICBvcHRz WyRrZXldPSIke29wdHNfYmVmb3JlWyRrZXldfSIKICAgICAgICAgICAgICAgIGZpCiAgICAgICAg ICAgIGRvbmUKCiAgICAgICAgICAgICMgU2VyaWFsaXplIGZvciByZXBvcnRpbmcKICAgICAgICAg ICAgbG9jYWwgYklGUz0iJElGUyI7IElGUz0iICIKICAgICAgICAgICAgWlBMR19PUFRJT05TWyR1 c3BsMl09IiR7KGt2KW9wdHNbQF19IgogICAgICAgICAgICBJRlM9IiRiSUZTIgogICAgICAgICAg ICA7OwogICAgICAgICopCiAgICAgICAgICAgIHJldHVybiAxCiAgICBlc2FjCgogICAgcmV0dXJu IDAKfQoKIyBDcmVhdGVzIGEgdGV4dCBhYm91dCBvcHRpb25zIHRoYXQgY2hhbmdlZCB3aGVuIGxv YWRlZCBwbHVnaW4gIiQxIgotenBsZy1mb3JtYXQtb3B0aW9ucygpIHsKICAgIGxvY2FsIHVzcGwy PSIkMSIKCiAgICBSRVBMWT0iIgoKICAgICMgUGFyYW5vaWQsIGRvbid0IHdhbnQgYmFkIGtleS92 YWx1ZSBwYWlyIGVycm9yCiAgICBpbnRlZ2VyIGVtcHR5PTAKICAgIC16cGxnLXNhdmUtc2V0LWV4 dGVuZGVkZ2xvYgogICAgW1sgIiR7WlBMR19PUFRJT05TWyR1c3BsMl19IiAhPSAqWyQnISBcdCdd KiBdXSAmJiBlbXB0eT0xCiAgICAtenBsZy1yZXN0b3JlLWV4dGVuZGVkZ2xvYgogICAgKCggZW1w dHkgKSkgJiYgcmV0dXJuIDAKCiAgICB0eXBlc2V0IC1BIG9wdHMKICAgIG9wdHM9KCAiJHsoeila UExHX09QVElPTlNbJHVzcGwyXX0iICkKCiAgICAjIEdldCBsZW5ndGggb2YgbG9uZ2VzdCBvcHRp b24KICAgIGludGVnZXIgbG9uZ2VzdD0wCiAgICBsb2NhbCBrCiAgICBmb3IgayBpbiAiJHsoa29u KW9wdHNbQF19IjsgZG8KICAgICAgICBbICIkeyNrfSIgLWd0ICIkbG9uZ2VzdCIgXSAmJiBsb25n ZXN0PSIkeyNrfSIKICAgIGRvbmUKCiAgICAjIE91dHB1dCBpbiBvbmUgY29sdW1uCiAgICBsb2Nh bCB0eHQKICAgIGZvciBrIGluICIkeyhrb24pb3B0c1tAXX0iOyBkbwogICAgICAgIFsgIiR7b3B0 c1ska119IiA9ICJvbiIgXSAmJiB0eHQ9IndhcyB1bnNldCIgfHwgdHh0PSJ3YXMgc2V0IgogICAg ICAgIFJFUExZKz0iJHsocjpsb25nZXN0KzE6OiA6KWt9JHR4dCIkJ1xuJwogICAgZG9uZQp9CiMg fX19CgojCiMgRW52aXJvbm1lbnQgZGlmZiBmdW5jdGlvbnMge3t7CiMKCi16cGxnLWRpZmYtZW52 KCkgewogICAgbG9jYWwgdXNwbDI9IiQxIgogICAgbG9jYWwgY21kPSIkMiIKICAgIHR5cGVzZXQg LWEgdG1wCgogICAgY2FzZSAiJGNtZCIgaW4KICAgICAgICBiZWdpbikKICAgICAgICAgICAgbG9j YWwgYklGUz0iJElGUyI7IElGUz0iICIKICAgICAgICAgICAgdG1wPSggIiR7KHEpcGF0aFtAXX0i ICkKICAgICAgICAgICAgWlBMR19QQVRIX0JFRk9SRVskdXNwbDJdPSIke3RtcFsqXX0iCiAgICAg ICAgICAgIHRtcD0oICIkeyhxKWZwYXRoW0BdfSIgKQogICAgICAgICAgICBaUExHX0ZQQVRIX0JF Rk9SRVskdXNwbDJdPSIke3RtcFsqXX0iCiAgICAgICAgICAgIElGUz0iJGJJRlMiCgogICAgICAg ICAgICAjIFJlc2V0IGRpZmZpbmcKICAgICAgICAgICAgWlBMR19QQVRIWyR1c3BsMl09IiIKICAg ICAgICAgICAgWlBMR19GUEFUSFskdXNwbDJdPSIiCiAgICAgICAgICAgIFpQTEdfRU5WX0RJRkZf UkFOWyR1c3BsMl09IjAiCiAgICAgICAgICAgIDs7CiAgICAgICAgZW5kKQogICAgICAgICAgICBs b2NhbCBiSUZTPSIkSUZTIjsgSUZTPSIgIgogICAgICAgICAgICB0bXA9KCAiJHsocSlwYXRoW0Bd fSIgKQogICAgICAgICAgICBaUExHX1BBVEhfQUZURVJbJHVzcGwyXT0iJHt0bXBbKl19IgogICAg ICAgICAgICB0bXA9KCAiJHsocSlmcGF0aFtAXX0iICkKICAgICAgICAgICAgWlBMR19GUEFUSF9B RlRFUlskdXNwbDJdPSIke3RtcFsqXX0iCiAgICAgICAgICAgIElGUz0iJGJJRlMiCgogICAgICAg ICAgICAjIFJlc2V0IGRpZmZpbmcKICAgICAgICAgICAgWlBMR19QQVRIWyR1c3BsMl09IiIKICAg ICAgICAgICAgWlBMR19GUEFUSFskdXNwbDJdPSIiCiAgICAgICAgICAgIFpQTEdfRU5WX0RJRkZf UkFOWyR1c3BsMl09IjAiCiAgICAgICAgICAgIDs7CiAgICAgICAgZGlmZikKICAgICAgICAgICAg IyBSdW4gZGlmZiBvbmNlLCBgYmVnaW4nIG9yIGBlbmQnIGlzIG5lZWRlZCB0byBiZSBydW4gYWdh aW4gZm9yIGEgbmV3IGRpZmYKICAgICAgICAgICAgWyAiJHtaUExHX0VOVl9ESUZGX1JBTlskdXNw bDJdfSIgPSAiMSIgXSAmJiByZXR1cm4gMAogICAgICAgICAgICBaUExHX0VOVl9ESUZGX1JBTlsk dXNwbDJdPSIxIgoKICAgICAgICAgICAgIyBDYW5ub3QgcnVuIGRpZmYgaWYgKl9CRUZPUkUgb3Ig Kl9BRlRFUiB2YXJpYWJsZSBpcyBub3Qgc2V0CiAgICAgICAgICAgICMgRm9sbG93aW5nIGlzIHBh cmFub2lkIGZvciAqX0JFRk9SRSBhbmQgKl9BRlRFUiBiZWluZyBvbmx5IHNwYWNlcwogICAgICAg ICAgICBzZXRvcHQgbG9jYWxvcHRpb25zIGV4dGVuZGVkZ2xvYgogICAgICAgICAgICBbWyAiJHta UExHX1BBVEhfQkVGT1JFWyR1c3BsMl19IiAhPSAqWyQnISBcdCddKiB8fCAiJHtaUExHX1BBVEhf QUZURVJbJHVzcGwyXX0iICE9ICpbJCchIFx0J10qIF1dICYmIHJldHVybiAxCiAgICAgICAgICAg IFtbICIke1pQTEdfRlBBVEhfQkVGT1JFWyR1c3BsMl19IiAhPSAqWyQnISBcdCddKiB8fCAiJHta UExHX0ZQQVRIX0FGVEVSWyR1c3BsMl19IiAhPSAqWyQnISBcdCddKiBdXSAmJiByZXR1cm4gMQoK ICAgICAgICAgICAgdHlwZXNldCAtQSBwYXRoX3N0YXRlIGZwYXRoX3N0YXRlCiAgICAgICAgICAg IGxvY2FsIGkKCiAgICAgICAgICAgICMKICAgICAgICAgICAgIyBQQVRIIHByb2Nlc3NpbmcKICAg ICAgICAgICAgIwoKICAgICAgICAgICAgIyBUaGlzIGluY2x1ZGVzIG5ldyBwYXRoIGVsZW1lbnRz CiAgICAgICAgICAgIGZvciBpIGluICIkeyh6KVpQTEdfUEFUSF9BRlRFUlskdXNwbDJdfSI7IGRv CiAgICAgICAgICAgICAgICBwYXRoX3N0YXRlWyRpXT0xCiAgICAgICAgICAgIGRvbmUKCiAgICAg ICAgICAgICMgUmVtb3ZlIGR1cGxpY2F0ZWQgZW50cmllcywgaS5lLiBleGlzdGluZyBiZWZvcmUK ICAgICAgICAgICAgZm9yIGkgaW4gIiR7KHopWlBMR19QQVRIX0JFRk9SRVskdXNwbDJdfSI7IGRv CiAgICAgICAgICAgICAgICB1bnNldCAicGF0aF9zdGF0ZVskaV0iCiAgICAgICAgICAgIGRvbmUK CiAgICAgICAgICAgICMgU3RvcmUgdGhlIHBhdGggZWxlbWVudHMsIGFzc29jaWF0aW5nIHRoZW0g d2l0aCBwbHVnaW4gKCR1c3BsMikKICAgICAgICAgICAgZm9yIGkgaW4gIiR7KG9uaylwYXRoX3N0 YXRlW0BdfSI7IGRvCiAgICAgICAgICAgICAgICBaUExHX1BBVEhbJHVzcGwyXSs9IiRpICIKICAg ICAgICAgICAgZG9uZQoKICAgICAgICAgICAgIwogICAgICAgICAgICAjIEZQQVRIIHByb2Nlc3Np bmcKICAgICAgICAgICAgIwoKICAgICAgICAgICAgIyBUaGlzIGluY2x1ZGVzIG5ldyBwYXRoIGVs ZW1lbnRzCiAgICAgICAgICAgIGZvciBpIGluICIkeyh6KVpQTEdfRlBBVEhfQUZURVJbJHVzcGwy XX0iOyBkbwogICAgICAgICAgICAgICAgZnBhdGhfc3RhdGVbJGldPTEKICAgICAgICAgICAgZG9u ZQoKICAgICAgICAgICAgIyBSZW1vdmUgZHVwbGljYXRlZCBlbnRyaWVzLCBpLmUuIGV4aXN0aW5n IGJlZm9yZQogICAgICAgICAgICBmb3IgaSBpbiAiJHsoeilaUExHX0ZQQVRIX0JFRk9SRVskdXNw bDJdfSI7IGRvCiAgICAgICAgICAgICAgICB1bnNldCAiZnBhdGhfc3RhdGVbJGldIgogICAgICAg ICAgICBkb25lCgogICAgICAgICAgICAjIFN0b3JlIHRoZSBwYXRoIGVsZW1lbnRzLCBhc3NvY2lh dGluZyB0aGVtIHdpdGggcGx1Z2luICgkdXNwbDIpCiAgICAgICAgICAgIGZvciBpIGluICIkeyhv bmspZnBhdGhfc3RhdGVbQF19IjsgZG8KICAgICAgICAgICAgICAgIFpQTEdfRlBBVEhbJHVzcGwy XSs9IiRpICIKICAgICAgICAgICAgZG9uZQogICAgICAgICAgICA7OwogICAgICAgICopCiAgICAg ICAgICAgIHJldHVybiAxCiAgICBlc2FjCgogICAgcmV0dXJuIDAKfQoKLXpwbGctZm9ybWF0LWVu digpIHsKICAgIGxvY2FsIHVzcGwyPSIkMSIgd2hpY2g9IiQyIgoKICAgICMgRm9ybWF0IFBBVEg/ CiAgICBpZiBbICIkd2hpY2giID0gIjEiIF07IHRoZW4KICAgICAgICB0eXBlc2V0IC1hIGVsZW0K ICAgICAgICBlbGVtPSggIiR7KHopWlBMR19QQVRIWyR1c3BsMl19IiApCiAgICBlbGlmIFsgIiR3 aGljaCIgPSAiMiIgXTsgdGhlbgogICAgICAgIHR5cGVzZXQgLWEgZWxlbQogICAgICAgIGVsZW09 KCAiJHsoeilaUExHX0ZQQVRIWyR1c3BsMl19IiApCiAgICBmaQoKICAgICMgRW51bWVyYXRlIGVs ZW1lbnRzIGFkZGVkCiAgICBsb2NhbCBhbnN3ZXI9IiIgZQogICAgZm9yIGUgaW4gIiR7ZWxlbVtA XX0iOyBkbwogICAgICAgIFsgLXogIiRlIiBdICYmIGNvbnRpbnVlCiAgICAgICAgZT0iJHsoUSll fSIKICAgICAgICBhbnN3ZXIrPSIkZSIkJ1xuJwogICAgZG9uZQoKICAgIFsgLW4gIiRhbnN3ZXIi IF0gJiYgUkVQTFk9IiRhbnN3ZXIiCn0KCiMgfX19CgojCiMgUGFyYW1ldGVyIGRpZmYgZnVuY3Rp b25zIHt7ewojCgotenBsZy1kaWZmLXBhcmFtZXRlcigpIHsKICAgIGxvY2FsIHVzcGwyPSIkMSIK ICAgIGxvY2FsIGNtZD0iJDIiCiAgICB0eXBlc2V0IC1hIHRtcAoKICAgIGNhc2UgIiRjbWQiIGlu CiAgICAgICAgYmVnaW4pCiAgICAgICAgICAgIFpQTEdfUEFSQU1FVEVSU19CRUZPUkVbJHVzcGwy XT0iJHsoajogOikkeyhxa3YpcGFyYW1ldGVyc1tAXX19IgoKICAgICAgICAgICAgIyBSZXNldCBk aWZmaW5nCiAgICAgICAgICAgIFpQTEdfUEFSQU1FVEVSU19QUkVbJHVzcGwyXT0iIgogICAgICAg ICAgICBaUExHX1BBUkFNRVRFUlNfUE9TVFskdXNwbDJdPSIiCiAgICAgICAgICAgIFpQTEdfUEFS QU1FVEVSU19ESUZGX1JBTlskdXNwbDJdPSIwIgogICAgICAgICAgICA7OwogICAgICAgIGVuZCkK ICAgICAgICAgICAgWlBMR19QQVJBTUVURVJTX0FGVEVSWyR1c3BsMl09IiR7KGo6IDopJHsocWt2 KXBhcmFtZXRlcnNbQF19fSIKCiAgICAgICAgICAgICMgUmVzZXQgZGlmZmluZwogICAgICAgICAg ICBaUExHX1BBUkFNRVRFUlNfUFJFWyR1c3BsMl09IiIKICAgICAgICAgICAgWlBMR19QQVJBTUVU RVJTX1BPU1RbJHVzcGwyXT0iIgogICAgICAgICAgICBaUExHX1BBUkFNRVRFUlNfRElGRl9SQU5b JHVzcGwyXT0iMCIKICAgICAgICAgICAgOzsKICAgICAgICBkaWZmKQogICAgICAgICAgICAjIFJ1 biBkaWZmIG9uY2UsIGBiZWdpbicgb3IgYGVuZCcgaXMgbmVlZGVkIHRvIGJlIHJ1biBhZ2FpbiBm b3IgYSBuZXcgZGlmZgogICAgICAgICAgICBbICIke1pQTEdfUEFSQU1FVEVSU19ESUZGX1JBTlsk dXNwbDJdfSIgPSAiMSIgXSAmJiByZXR1cm4gMAogICAgICAgICAgICBaUExHX1BBUkFNRVRFUlNf RElGRl9SQU5bJHVzcGwyXT0iMSIKCiAgICAgICAgICAgICMgQ2Fubm90IHJ1biBkaWZmIGlmICpf QkVGT1JFIG9yICpfQUZURVIgdmFyaWFibGUgaXMgbm90IHNldAogICAgICAgICAgICAjIEZvbGxv d2luZyBpcyBwYXJhbm9pZCBmb3IgKl9CRUZPUkUgYW5kICpfQUZURVIgYmVpbmcgb25seSBzcGFj ZXMKICAgICAgICAgICAgc2V0b3B0IGxvY2Fsb3B0aW9ucyBleHRlbmRlZGdsb2IKICAgICAgICAg ICAgW1sgIiR7WlBMR19QQVJBTUVURVJTX0JFRk9SRVskdXNwbDJdfSIgIT0gKlskJyEgXHQnXSog fHwgIiR7WlBMR19QQVJBTUVURVJTX0FGVEVSWyR1c3BsMl19IiAhPSAqWyQnISBcdCddKiBdXSAm JiByZXR1cm4gMQoKICAgICAgICAgICAgIyBVbi1jb25jYXRlbmF0ZWQgcGFyYW1ldGVycyBmcm9t IG1vbWVudCBvZiBkaWZmIHN0YXJ0IGFuZCBvZiBkaWZmIGVuZAogICAgICAgICAgICB0eXBlc2V0 IC1BIHBhcmFtc19iZWZvcmUgcGFyYW1zX2FmdGVyCiAgICAgICAgICAgIHBhcmFtc19iZWZvcmU9 KCAiJHsoeilaUExHX1BBUkFNRVRFUlNfQkVGT1JFWyR1c3BsMl19IiApCiAgICAgICAgICAgIHBh cmFtc19hZnRlcj0oICIkeyh6KVpQTEdfUEFSQU1FVEVSU19BRlRFUlskdXNwbDJdfSIgKQoKICAg ICAgICAgICAgIyBUaGUgcGFyYW1ldGVycyB0aGF0IGNoYW5nZWQsIHdpdGggc2F2ZSBvZiB3aGF0 CiAgICAgICAgICAgICMgcGFyYW1ldGVyIHdhcyB3aGVuIGRpZmYgc3RhcnRlZCBvciB3aGVuIGRp ZmYgZW5kZWQKICAgICAgICAgICAgdHlwZXNldCAtQSBwYXJhbXNfcHJlIHBhcmFtc19wb3N0CiAg ICAgICAgICAgIHBhcmFtc19wcmU9KCApCiAgICAgICAgICAgIHBhcmFtc19wb3N0PSggKQoKICAg ICAgICAgICAgIyBJdGVyYXRlIHRocm91Z2ggYWxsIGV4aXN0aW5nIGtleXMsIGJlZm9yZSBvciBh ZnRlciBkaWZmLAogICAgICAgICAgICAjIGkuZS4gYWZ0ZXIgYWxsIHZhcmlhYmxlcyB0aGF0IHdl cmUgc29tZWhvdyBsaXZlIGFjcm9zcwogICAgICAgICAgICAjIHRoZSBkaWZmaW5nIHByb2Nlc3MK ICAgICAgICAgICAgbG9jYWwga2V5CiAgICAgICAgICAgIHR5cGVzZXQgLWFVIGtleXMKICAgICAg ICAgICAga2V5cz0oICIkeyhrKXBhcmFtc19hZnRlcltAXX0iICk7CiAgICAgICAgICAgIGtleXM9 KCAiJHtrZXlzW0BdfSIgIiR7KGspcGFyYW1zX2JlZm9yZVtAXX0iICk7CiAgICAgICAgICAgIGZv ciBrZXkgaW4gIiR7a2V5c1tAXX0iOyBkbwogICAgICAgICAgICAgICAga2V5PSIkeyhRKWtleX0i CiAgICAgICAgICAgICAgICBpZiBbICIke3BhcmFtc19hZnRlclska2V5XX0iICE9ICIke3BhcmFt c19iZWZvcmVbJGtleV19IiBdOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgIyBFbXB0eSBmb3Ig YSBuZXcgcGFyYW0sIGEgdHlwZSBvdGhlcndpc2UKICAgICAgICAgICAgICAgICAgICBbIC16ICIk e3BhcmFtc19iZWZvcmVbJGtleV19IiBdICYmIHBhcmFtc19iZWZvcmVbJGtleV09IlwiXCIiCiAg ICAgICAgICAgICAgICAgICAgcGFyYW1zX3ByZVska2V5XT0iJHtwYXJhbXNfYmVmb3JlWyRrZXld fSIKCiAgICAgICAgICAgICAgICAgICAgIyBDdXJyZW50IHR5cGUsIGNhbiBhbHNvIGJlIGVtcHR5 LCB3aGVuIHBsdWdpbgogICAgICAgICAgICAgICAgICAgICMgdW5zZXRzIGEgcGFyYW1ldGVyCiAg ICAgICAgICAgICAgICAgICAgWyAteiAiJHtwYXJhbXNfYWZ0ZXJbJGtleV19IiBdICYmIHBhcmFt c19hZnRlclska2V5XT0iXCJcIiIKICAgICAgICAgICAgICAgICAgICBwYXJhbXNfcG9zdFska2V5 XT0iJHtwYXJhbXNfYWZ0ZXJbJGtleV19IgogICAgICAgICAgICAgICAgZmkKICAgICAgICAgICAg ZG9uZQoKICAgICAgICAgICAgIyBTZXJpYWxpemUgZm9yIHJlcG9ydGluZwogICAgICAgICAgICBa UExHX1BBUkFNRVRFUlNfUFJFWyR1c3BsMl09IiR7KGo6IDopJHsocWt2KXBhcmFtc19wcmVbQF19 fSIKICAgICAgICAgICAgWlBMR19QQVJBTUVURVJTX1BPU1RbJHVzcGwyXT0iJHsoajogOikkeyhx a3YpcGFyYW1zX3Bvc3RbQF19fSIKICAgICAgICAgICAgOzsKICAgICAgICAqKQogICAgICAgICAg ICByZXR1cm4gMQogICAgZXNhYwoKICAgIHJldHVybiAwCn0KCi16cGxnLWZvcm1hdC1wYXJhbWV0 ZXIoKSB7CiAgICBsb2NhbCB1c3BsMj0iJDEiIGluZm9jPSIke1pQTEdfQ09MW2luZm9dfSIKCiAg ICAjIFBhcmFub2lkIGZvciB0eXBlIG9mIGVtcHR5IHZhbHVlLAogICAgIyBpLmUuIGluY2x1ZGUg d2hpdGUgc3BhY2VzIGFzIGVtcHR5CiAgICBzZXRvcHQgbG9jYWxvcHRpb25zIGV4dGVuZGVkZ2xv YgogICAgUkVQTFk9IiIKICAgIFtbICIke1pQTEdfUEFSQU1FVEVSU19QUkVbJHVzcGwyXX0iICE9 ICpbJCchIFx0J10qIHx8ICIke1pQTEdfUEFSQU1FVEVSU19QT1NUWyR1c3BsMl19IiAhPSAqWyQn ISBcdCddKiBdXSAmJiByZXR1cm4gMAoKICAgIHR5cGVzZXQgLUEgZWxlbV9wcmUgZWxlbV9wb3N0 CiAgICBlbGVtX3ByZT0oICIkeyh6KVpQTEdfUEFSQU1FVEVSU19QUkVbJHVzcGwyXX0iICkKICAg IGVsZW1fcG9zdD0oICIkeyh6KVpQTEdfUEFSQU1FVEVSU19QT1NUWyR1c3BsMl19IiApCgogICAg IyBGaW5kIGxvbmdlc3Qga2V5IGFuZCBsb25nZXN0IHZhbHVlCiAgICBpbnRlZ2VyIGxvbmdlc3Q9 MCB2bG9uZ2VzdDE9MCB2bG9uZ2VzdDI9MAogICAgZm9yIGsgaW4gIiR7KGspZWxlbV9wb3N0W0Bd fSI7IGRvCiAgICAgICAgaz0iJHsoUSlrfSIKICAgICAgICBbICIkeyNrfSIgLWd0ICIkbG9uZ2Vz dCIgXSAmJiBsb25nZXN0PSIkeyNrfSIKCiAgICAgICAgdjE9IiR7KFEpZWxlbV9wcmVbJGtdfSIK ICAgICAgICB2Mj0iJHsoUSllbGVtX3Bvc3RbJGtdfSIKICAgICAgICBbICIkeyN2MX0iIC1ndCAi JHZsb25nZXN0MSIgXSAmJiB2bG9uZ2VzdDE9IiR7I3YxfSIKICAgICAgICBbICIkeyN2Mn0iIC1n dCAiJHZsb25nZXN0MiIgXSAmJiB2bG9uZ2VzdDI9IiR7I3YyfSIKICAgIGRvbmUKCiAgICAjIEVu dW1lcmF0ZSBwYXJhbWV0ZXJzIHRoYXQgY2hhbmdlZC4gQSBrZXkKICAgICMgYWx3YXlzIGV4aXN0 cyBpbiBib3RoIG9mIHRoZSBhcnJheXMKICAgIGxvY2FsIGFuc3dlcj0iIiBrIHYxIHYyCiAgICBm b3IgayBpbiAiJHsoayllbGVtX3Bvc3RbQF19IjsgZG8KICAgICAgICB2MT0iJHsoUSllbGVtX3By ZVska119IgogICAgICAgIHYyPSIkeyhRKWVsZW1fcG9zdFska119IgogICAgICAgIGs9IiR7KFEp a30iCgogICAgICAgIGs9IiR7KHI6bG9uZ2VzdCsxOjogOilrfSIKICAgICAgICB2MT0iJHsobDp2 bG9uZ2VzdDErMTo6IDopdjF9IgogICAgICAgIHYyPSIkeyhyOnZsb25nZXN0MisxOjogOil2Mn0i CiAgICAgICAgYW5zd2VyKz0iJGsgJHtpbmZvY31bJHYxIC0+ICR2Ml0ke1pQTEdfQ09MW3JzdF19 IiQnXG4nCiAgICBkb25lCgogICAgWyAtbiAiJGFuc3dlciIgXSAmJiBSRVBMWT0iJGFuc3dlciIK CiAgICByZXR1cm4gMAp9CgojIH19fQoKIwojIFJlcG9ydCBmdW5jdGlvbnMge3t7CiMKCi16cGxn LWFkZC1yZXBvcnQoKSB7CiAgICBsb2NhbCB1c3BsMj0iJDEiCiAgICBzaGlmdAogICAgbG9jYWwg dHh0PSIkKiIKCiAgICBsb2NhbCBrZXl3b3JkPSIke3R4dCUlICp9IgogICAgaWYgW1sgIiRrZXl3 b3JkIiA9ICJGYWlsZWQiIHx8ICIka2V5d29yZCIgPSAiV2FybmluZzoiIF1dOyB0aGVuCiAgICAg ICAga2V5d29yZD0iJHtaUExHX0NPTFtlcnJvcl19JGtleXdvcmQke1pQTEdfQ09MW3JzdF19Igog ICAgZWxzZQogICAgICAgIGtleXdvcmQ9IiR7WlBMR19DT0xba2V5d29yZF19JGtleXdvcmQke1pQ TEdfQ09MW3JzdF19IgogICAgZmkKCiAgICAjIERvbid0IHJlcG9ydCB0byBhbnkgdXNlci9wbHVn aW4gaWYgdGhlcmUgaXMgbm8gcGx1Z2luIGxvYWQgaW4gcHJvZ3Jlc3MKICAgIGlmIFsgLW4gIiR1 c3BsMiIgXTsgdGhlbgogICAgICAgIFpQTEdfUkVQT1JUU1skdXNwbDJdKz0iJGtleXdvcmQgJHt0 eHQjKiB9IiQnXG4nCiAgICBmaQoKICAgICMgVGhpcyBpcyBuYXN0eSwgaWYgZGVidWcgaXMgb24s IHJlcG9ydCBldmVyeXRoaW5nCiAgICAjIHRvIHNwZWNpYWwgZGVidWcgdXNlcgogICAgWyAiJFpQ TEdfREVCVUdfQUNUSVZFIiA9ICIxIiBdICYmIFpQTEdfUkVQT1JUU1skWlBMR19ERUJVR19VU1BM Ml0rPSIka2V5d29yZCAke3R4dCMqIH0iJCdcbicKfQoKIyB9fX0KCiMKIyBIZWxwZXIgZnVuY3Rp b25zIHt7ewojCgojIENydWNpYWwgaGVscGVyIGZ1bmN0aW9uIEEKIyBBbGxvd3MgZWxhc3RpYyB1 c2Ugb2YgIiQxIiBhbmQgIiQyIiBhY3Jvc3MgdGhlIGNvZGUKIwojICQxIC0gdXNlci0tLXBsdWdp biwgdXNlci9wbHVnaW4sIHVzZXIgKGlmICQyIGdpdmVuKSwgb3IgcGx1Z2luIChpZiAkMiBlbXB0 eSkKIyAkMiAtIHBsdWdpbiAoaWYgJDEgLSB1c2VyIC0gZ2l2ZW4pCiMKIyBSZXR1cm5zIHVzZXIg YW5kIHBsdWdpbiBpbiAkcmVwbHkKIwotenBsZy1hbnktdG8tdXNlci1wbHVnaW4oKSB7CiAgICAj IFR3byBjb21wb25lbnRzIGdpdmVuPwogICAgIyBUaGF0J3MgYSBwcmV0dHkgZmFzdCB0cmFjayB0 byBjYWxsIHRoaXMgZnVuY3Rpb24gdGhpcyB3YXkKICAgIGlmIFsgLW4gIiQyIiBdO3RoZW4KICAg ICAgICAjIEJ1dCB1c2VyIG5hbWUgaXMgZW1wdHk/CiAgICAgICAgWyAteiAiJDEiIF0gJiYgMT0i X2xvY2FsIgoKICAgICAgICByZXBseT0oICIkMSIgIiQyIiApCiAgICAgICAgcmV0dXJuIDAKICAg IGZpCgogICAgIyBSZXN0IGlzIGZvciBzaW5nbGUgY29tcG9uZW50IGdpdmVuCiAgICAjIEl0IGRv ZXNuJ3QgdG91Y2ggJDIKCiAgICBsb2NhbCB1c2VyPSIkezElJS8qfSIgcGx1Z2luPSIkezEjKi99 IgogICAgaWYgWyAiJHVzZXIiID0gIiRwbHVnaW4iIF07IHRoZW4KICAgICAgICAjIElzIGl0IHJl YWxseSB0aGUgc2FtZSBwbHVnaW4gYW5kIHVzZXIgbmFtZT8KICAgICAgICBpZiBbICIkdXNlci8k cGx1Z2luIiA9ICIkMSIgXTsgdGhlbgogICAgICAgICAgICByZXBseT0oICIkdXNlciIgIiRwbHVn aW4iICkKICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICBmaQoKICAgICAgICB1c2VyPSIkezEl JS0tLSp9IgogICAgICAgIHBsdWdpbj0iJHsxIyotLS19IgogICAgZmkKCiAgICBpZiBbICIkdXNl ciIgPSAiJHBsdWdpbiIgXTsgdGhlbgogICAgICAgICMgSXMgaXQgcmVhbGx5IHRoZSBzYW1lIHBs dWdpbiBhbmQgdXNlciBuYW1lPwogICAgICAgIGlmIFsgIiR7dXNlcn0tLS0ke3BsdWdpbn0iID0g IiQxIiBdOyB0aGVuCiAgICAgICAgICAgIHJlcGx5PSggIiR1c2VyIiAiJHBsdWdpbiIgKQogICAg ICAgICAgICByZXR1cm4gMAogICAgICAgIGZpCiAgICAgICAgdXNlcj0iX2xvY2FsIgogICAgZmkK ICAgIAogICAgaWYgWyAteiAiJHVzZXIiIF07IHRoZW4KICAgICAgICB1c2VyPSJfbG9jYWwiCiAg ICBmaQoKICAgIGlmIFsgLXogIiRwbHVnaW4iIF07IHRoZW4KICAgICAgICBwbHVnaW49Il91bmtu b3duIgogICAgZmkKCiAgICByZXBseT0oICIkdXNlciIgIiRwbHVnaW4iICkKICAgIHJldHVybiAw Cn0KCiMgQ3J1Y2lhbCBoZWxwZXIgZnVuY3Rpb24gQgojIENvbnZlcnRzIHRvIGZvcm1hdCB0aGF0 J3MgdXNlZCBpbiBrZXlzIGZvciBoYXNoIHRhYmxlcwojCiMgU3VwcG9ydHMgYWxsIGZvdXIgZm9y bWF0cwotenBsZy1hbnktdG8tdXNwbDIoKSB7CiAgICAtenBsZy1hbnktdG8tdXNlci1wbHVnaW4g IiQxIiAiJDIiCiAgICBSRVBMWT0iJHtyZXBseVstMl19LyR7cmVwbHlbLTFdfSIKfQoKIyBDaGVj a3MgZm9yIGEgcGx1Z2luIGV4aXN0ZW5jZSwgYWxsIGZvdXIgZm9ybWF0cwojIG9mIHRoZSBwbHVn aW4gc3BlY2lmaWNhdGlvbiBzdXBwb3J0ZWQKLXpwbGctZXhpc3RzKCkgewogICAgLXpwbGctYW55 LXRvLXVzcGwyICIkMSIgIiQyIgogICAgaWYgWyAteiAiJHtaUExHX1JFR0lTVEVSRURfUExVR0lO U1socikkUkVQTFldfSIgXTsgdGhlbgogICAgICAgIHJldHVybiAxCiAgICBmaQogICAgcmV0dXJu IDAKfQoKIyBDaGVja3MgZm9yIGEgcGx1Z2luIGV4aXN0ZW5jZSBhbmQgb3V0cHV0cyBhIG1lc3Nh Z2UKLXpwbGctZXhpc3RzLW1lc3NhZ2UoKSB7CiAgICBpZiAhIC16cGxnLWV4aXN0cyAiJDEiICIk MiI7IHRoZW4KICAgICAgICAtenBsZy1hbnktY29sb3JpZnktYXMtdXNwbDIgIiQxIiAiJDIiCiAg ICAgICAgcHJpbnQgIiR7WlBMR19DT0xbZXJyb3JdfU5vIHN1Y2ggcGx1Z2luJHtaUExHX0NPTFty c3RdfSAkUkVQTFkiCiAgICAgICAgcmV0dXJuIDEKICAgIGZpCiAgICByZXR1cm4gMAp9CgojIENo ZWNrcyBmb3IgYSBwbHVnaW4gZXhpc3RlbmNlLCBhbGwgZm91ciBmb3JtYXRzCiMgb2YgdGhlIHBs dWdpbiBzcGVjaWZpY2F0aW9uIHN1cHBvcnRlZAotenBsZy1leGlzdHMtcGh5c2ljYWxseSgpIHsK ICAgIC16cGxnLWFueS10by11c2VyLXBsdWdpbiAiJDEiICIkMiIKICAgIFsgLWQgIiRaUExHX1BM VUdJTlNfRElSLyR7cmVwbHlbLTJdfS0tLSR7cmVwbHlbLTFdfSIgXSAmJiByZXR1cm4gMCB8fCBy ZXR1cm4gMQp9CgojIENoZWNrcyBmb3IgYSBwbHVnaW4gZXhpc3RlbmNlIGFuZCBvdXRwdXRzIGEg bWVzc2FnZQotenBsZy1leGlzdHMtcGh5c2ljYWxseS1tZXNzYWdlKCkgewogICAgaWYgISAtenBs Zy1leGlzdHMtcGh5c2ljYWxseSAiJDEiICIkMiI7IHRoZW4KICAgICAgICAtenBsZy1hbnktY29s b3JpZnktYXMtdXNwbDIgIiQxIiAiJDIiCiAgICAgICAgcHJpbnQgIiR7WlBMR19DT0xbZXJyb3Jd fU5vIHN1Y2ggcGx1Z2luIGRpcmVjdG9yeSR7WlBMR19DT0xbcnN0XX0gJFJFUExZIgogICAgICAg IHJldHVybiAxCiAgICBmaQogICAgcmV0dXJuIDAKfQoKIyBXaWxsIHRha2UgdXNwbCwgdXNwbDIs IG9yIGp1c3QgcGx1Z2luIG5hbWUsCiMgYW5kIHJldHVybiBjb2xvcmVkIHRleHQKLXpwbGctYW55 LWNvbG9yaWZ5LWFzLXVzcGwyKCkgewogICAgLXpwbGctYW55LXRvLXVzZXItcGx1Z2luICIkMSIg IiQyIgogICAgbG9jYWwgdXNlcj0iJHtyZXBseVstMl19IiBwbHVnaW49IiR7cmVwbHlbLTFdfSIK ICAgIGxvY2FsIHVjb2w9IiR7WlBMR19DT0xbdW5hbWVdfSIgcGNvbD0iJHtaUExHX0NPTFtwbmFt ZV19IgogICAgUkVQTFk9IiR7dWNvbH0ke3VzZXJ9JHtaUExHX0NPTFtyc3RdfS8ke3Bjb2x9JHtw bHVnaW59JHtaUExHX0NPTFtyc3RdfSIKfQoKIyBQcmVwYXJlIHJlYWRsaW5rIGNvbW1hbmQsIHVz ZWQgZS5nLiBmb3IKIyBlc3RhYmxpc2hpbmcgY29tcGxldGlvbidzIG93bmVyCi16cGxnLXByZXBh cmUtcmVhZGxpbmUoKSB7CiAgICBSRVBMWT0iOiIKICAgIGlmIHR5cGUgcmVhZGxpbmsgMj4vZGV2 L251bGwgMT4mMjsgdGhlbgogICAgICAgIFJFUExZPSJyZWFkbGluayIKICAgIGZpCn0KCiMgQm90 aCA6QSBhbmQgcmVhZGxpbmsgd2lsbCBiZSB1c2VkLCB0aGVuIHJlYWRsaW5rJ3Mgb3V0cHV0IGlm CiMgcmVzdWx0cyBkaWZmZXIuIFRoaXMgYWxsb3dzIHRvIHN5bWxpbmsgZ2l0IHJlcG9zaXRvcmll cwojIGludG8gLnpwbHVnaW4vcGx1Z2lucyBhbmQgaGF2ZSB1c2VybmFtZSBwcm9wZXJseSByZXNv bHZlZAojICg6QSB3aWxsIHJlYWQgdGhlIGxpbmsgInR3aWNlIiBhbmQgZ2l2ZSB0aGUgZmluYWwg cmVwb3NpdG9yeQojIGRpcmVjdG9yeSwgcG9zc2libHkgd2l0aG91dCB1c2VybmFtZSBpbiB0aGUg dXNwbCBmb3JtYXQ7CiMgcmVhZGxpbmsgd2lsbCByZWFkIHRoZSBsaW5rICJvbmNlIikKLXpwbGct Z2V0LWNvbXBsZXRpb24tb3duZXIoKSB7CiAgICBsb2NhbCBjcGF0aD0iJDEiCiAgICBsb2NhbCBy ZWFkbGlua19jbWQ9IiQyIgogICAgbG9jYWwgaW5fcGx1Z2luX3BhdGggdG1wCgogICAgIyBUcnkg dG8gZ28gbm90IHRvbyBkZWVwIGludG8gcmVzb2x2aW5nIHRoZSBzeW1saW5rLAogICAgIyB0byBo YXZlIHRoZSBuYW1lIGFzIGl0IGlzIGluIC56cGx1Z2luL3BsdWdpbnMKICAgICMgOkEgZ29lcyBk ZWVwLCBkZXNjZW5kcyBmdWxseSB0byBvcmlnaW4gZGlyZWN0b3J5CiAgICAjIFJlYWRsaW5rIGp1 c3QgcmVhZHMgd2hhdCBzeW1saW5rIHBvaW50cyB0bwogICAgaW5fcGx1Z2luX3BhdGg9IiR7Y3Bh dGg6QX0iCiAgICB0bXA9JCggIiRyZWFkbGlua19jbWQiICIkY3BhdGgiICkKICAgIFsgLW4gIiR0 bXAiIF0gJiYgaW5fcGx1Z2luX3BhdGg9IiR0bXAiCgogICAgaWYgWyAiJGluX3BsdWdpbl9wYXRo IiAhPSAiJGNwYXRoIiBdOyB0aGVuCiAgICAgICAgIyBHZXQgdGhlIHVzZXItLS1wbHVnaW4gcGFy dCBvZiBwYXRoIC0KICAgICAgICAjIGl0J3MgcmlnaHQgYmVmb3JlIGNvbXBsZXRpb24gZmlsZSBu YW1lCiAgICAgICAgaW5fcGx1Z2luX3BhdGg9IiR7aW5fcGx1Z2luX3BhdGg6aH0iCiAgICAgICAg aW5fcGx1Z2luX3BhdGg9IiR7aW5fcGx1Z2luX3BhdGg6dH0iCiAgICBlbHNlCiAgICAgICAgIyBy ZWFkbGluayBhbmQgOkEgaGF2ZSBub3RoaW5nCiAgICAgICAgaW5fcGx1Z2luX3BhdGg9Ilt1bmtu b3duXSIKICAgIGZpCgogICAgUkVQTFk9IiRpbl9wbHVnaW5fcGF0aCIKfQoKIyBGb3Igc2hvcnRl bmluZyBvZiBjb2RlCiMgJDEgLSBjb21wbGV0aW9uIGZpbGUKIyAkMiAtIHJlYWRsaW5lIGNvbW1h bmQKLXpwbGctZ2V0LWNvbXBsZXRpb24tb3duZXItdXNwbDJjb2woKSB7CiAgICAjICJjcGF0aCIg InJlYWRsaW5lX2NtZCIKICAgIC16cGxnLWdldC1jb21wbGV0aW9uLW93bmVyICIkMSIgIiQyIgog ICAgLXpwbGctYW55LWNvbG9yaWZ5LWFzLXVzcGwyICIkUkVQTFkiCn0KCiMgRm9yZ2V0IGdpdmVu IGNvbXBsZXRpb25zLiBEb25lIGJlZm9yZSBjYWxsaW5nIGNvbXBpbml0CiMgJDEgLSBjb21wbGV0 aW9uIGZ1bmN0aW9uIG5hbWUsIGUuZy4gIl9jcCIKLXpwbGctZm9yZ2V0LWNvbXBsZXRpb24oKSB7 CiAgICBsb2NhbCBmPSIkMSIKCiAgICB0eXBlc2V0IC1hIGNvbW1hbmRzCiAgICBjb21tYW5kcz0o ICIkeyhrQClfY29tcHNbKFIpJGZdfSIgKQoKICAgIFsgIiR7I2NvbW1hbmRzfSIgLWd0IDAgXSAm JiBwcmludCAiRm9yZ2V0dGluZyBjb21tYW5kcyBjb21wbGV0ZWQgYnkgXGAkZic6IgoKICAgIGxv Y2FsIGsKICAgIGZvciBrIGluICIke2NvbW1hbmRzW0BdfSI7IGRvCiAgICAgICAgdW5zZXQgIl9j b21wc1ska10iCiAgICAgICAgZWNobyAiVW5zZXR0aW5nICRrIgogICAgZG9uZQoKICAgIHByaW50 ICIke1pQTEdfQ09MW2luZm9dfUZvcmdldHRpbmcgY29tcGxldGlvbiBcYCRmJy4uLiR7WlBMR19D T0xbcnN0XX0iCiAgICBwcmludAogICAgdW5mdW5jdGlvbiAyPi9kZXYvbnVsbCAiJGYiCn0KCi16 cGxnLWNoZWNrLWNvbXAtY29uc2lzdGVuY3koKSB7CiAgICBsb2NhbCBjZmlsZT0iJDEiIGJrcGZp bGU9IiQyIgogICAgaW50ZWdlciBlcnJvcj0iJDMiCgogICAgIyBia3BmaWxlIG11c3QgYmUgYSBz eW1saW5rCiAgICBpZiBbWyAtZSAiJGJrcGZpbGUiICYmICEgLUwgIiRia3BmaWxlIiBdXTsgdGhl bgogICAgICAgIHByaW50ICIke1pQTEdfQ09MW2Vycm9yXX1XYXJuaW5nOiBjb21wbGV0aW9uJ3Mg YmFja3VwIGZpbGUgXGAke2JrcGZpbGU6dH0nIGlzbid0IGEgc3ltbGluayR7WlBMR19DT0xbcnN0 XX0iCiAgICAgICAgZXJyb3I9MQogICAgZmkKCiAgICAjIGNmaWxlIG11c3QgYmUgYSBzeW1saW5r CiAgICBpZiBbWyAtZSAiJGNmaWxlIiAmJiAhIC1MICIkY2ZpbGUiIF1dOyB0aGVuCiAgICAgICAg cHJpbnQgIiR7WlBMR19DT0xbZXJyb3JdfVdhcm5pbmc6IGNvbXBsZXRpb24gZmlsZSBcYCR7Y2Zp bGU6dH0nIGlzbid0IGEgc3ltbGluayR7WlBMR19DT0xbcnN0XX0iCiAgICAgICAgZXJyb3I9MQog ICAgZmkKCiAgICAjIFRlbGwgdXNlciB0aGF0IGhlIGNhbiBtYW51YWxseSBtb2RpZnkgYnV0IHNo b3VsZCBkbyBpdCByaWdodAogICAgKCggZXJyb3IgKSkgJiYgcHJpbnQgIiR7WlBMR19DT0xbZXJy b3JdfU1hbnVhbCBlZGl0IG9mICRaUExHX0NPTVBMRVRJT05TX0RJUiBvY2N1cmVkPyR7WlBMR19D T0xbcnN0XX0iCn0KCiMgU2VhcmNoZXMgZm9yIGNvbXBsZXRpb25zIG93bmVkIGJ5IGdpdmVuIHBs dWdpbgojIFJldHVybnMgdGhlbSBpbiByZXBseSBhcnJheQotenBsZy1maW5kLWNvbXBsZXRpb25z LW9mLXBsdWdpbigpIHsKICAgIHNldG9wdCBsb2NhbG9wdGlvbnMgbnVsbGdsb2IKICAgIC16cGxn LWFueS10by11c2VyLXBsdWdpbiAiJDEiICIkMiIKICAgIGxvY2FsIHVzZXI9IiR7cmVwbHlbLTJd fSIgcGx1Z2luPSIke3JlcGx5Wy0xXX0iIHVzcGw9IiR7MX0tLS0kezJ9IgoKICAgIHJlcGx5PSgg IiRaUExHX1BMVUdJTlNfRElSLyR1c3BsIi9fKiApCn0KCiMgRm9yIGVhY2ggcG9zaXRpb25hbCBw YXJhbWV0ZXIgdGhhdCBlYWNoIHNob3VsZAojIGJlIHBhdGggdG8gY29tcGxldGlvbiB3aXRoaW4g YSBwbHVnaW4ncyBkaXIsIGl0CiMgY2hlY2tzIHdoZXRoZXIgdGhhdCBjb21wbGV0aW9uIGlzIGlu c3RhbGxlZCAtCiMgcmV0dXJucyAwIG9yIDEgb24gY29ycmVzcG9uZGluZyBwb3NpdGlvbnMgaW4g cmVwbHkKLXpwbGctY2hlY2std2hpY2gtY29tcGxldGlvbnMtYXJlLWluc3RhbGxlZCgpIHsKICAg IGxvY2FsIGkgY2ZpbGUgYmtwZmlsZQogICAgcmVwbHk9KCApCiAgICBmb3IgaSBpbiAiJEAiOyBk bwogICAgICAgIGNmaWxlPSIke2k6dH0iCiAgICAgICAgYmtwZmlsZT0iJHtjZmlsZSNffSIKCiAg ICAgICAgaWYgW1sgLWUgIiRaUExHX0NPTVBMRVRJT05TX0RJUiIvIiRjZmlsZSIgfHwgLWUgIiRa UExHX0NPTVBMRVRJT05TX0RJUiIvIiRia3BmaWxlIiBdXTsgdGhlbgogICAgICAgICAgICByZXBs eSs9KCAiMSIgKQogICAgICAgIGVsc2UKICAgICAgICAgICAgcmVwbHkrPSggIjAiICkKICAgICAg ICBmaQogICAgZG9uZQp9CgojIEZvciBlYWNoIHBvc2l0aW9uYWwgcGFyYW1ldGVyIHRoYXQgZWFj aCBzaG91bGQKIyBiZSBwYXRoIHRvIGNvbXBsZXRpb24gd2l0aGluIGEgcGx1Z2luJ3MgZGlyLCBp dAojIGNoZWNrcyB3aGV0aGVyIHRoYXQgY29tcGxldGlvbiBpcyBkaXNhYmxlZCAtCiMgcmV0dXJu cyAwIG9yIDEgb24gY29ycmVzcG9uZGluZyBwb3NpdGlvbnMgaW4gcmVwbHkKIwojIFVuaW5zdGFs bGVkIGNvbXBsZXRpb25zIHdpbGwgYmUgcmVwb3J0ZWQgYXMgIjAiCiMgLSBpLmUuIGRpc2FibGVk Ci16cGxnLWNoZWNrLXdoaWNoLWNvbXBsZXRpb25zLWFyZS1lbmFibGVkKCkgewogICAgbG9jYWwg aSBjZmlsZQogICAgcmVwbHk9KCApCiAgICBmb3IgaSBpbiAiJEAiOyBkbwogICAgICAgIGNmaWxl PSIke2k6dH0iCgogICAgICAgIGlmIFtbIC1lICIkWlBMR19DT01QTEVUSU9OU19ESVIiLyIkY2Zp bGUiIF1dOyB0aGVuCiAgICAgICAgICAgIHJlcGx5Kz0oICIxIiApCiAgICAgICAgZWxzZQogICAg ICAgICAgICByZXBseSs9KCAiMCIgKQogICAgICAgIGZpCiAgICBkb25lCn0KCi16cGxnLXJlc2V0 LWFscmVhZHktd2FybmluZ3MoKSB7CiAgICBaUExHX0FMUkVBRFlfV0FSTklOR1NfRj0oICkKfQoK LXpwbGctYWxyZWFkeS1mdW5jdGlvbi13YXJuaW5nLXVzcGwyKCkgewogICAgWyAiJHtaUExHX0FM UkVBRFlfV0FSTklOR1NfRlskM119IiA9ICIxIiBdICYmIHJldHVybgogICAgWlBMR19BTFJFQURZ X1dBUk5JTkdTX0ZbJDNdPSIxIgogICAgKCggJDEgKSkgJiYgLXpwbGctYWRkLXJlcG9ydCAiJDIi ICJXYXJuaW5nOiB0aGVyZSBhbHJlYWR5IHdhcyAkMygpIGZ1bmN0aW9uIGRlZmluZWQsIHBvc3Np Ymx5IGluIHpzaHJjIgp9CgotenBsZy1kb3dubG9hZC1maWxlLXN0ZG91dCgpIHsKICAgIGxvY2Fs IHVybD0iJDEiCiAgICBsb2NhbCByZXN0YXJ0PSIkMiIKCiAgICBpZiBbICIkcmVzdGFydCIgPSAi MSIgXTsgdGhlbgogICAgICAgIGlmICgoICR7K2NvbW1hbmRzW2N1cmxdfSApKSB0aGVuCiAgICAg ICAgICAgIGN1cmwgLWZzU0wgIiR1cmwiCiAgICAgICAgZWxpZiAoKCAkeytjb21tYW5kc1t3Z2V0 XX0gKSk7IHRoZW4KICAgICAgICAgICAgd2dldCAiJHVybCIgLU8gLQogICAgICAgIGVsaWYgKCgg JHsrY29tbWFuZHNbbHlueF19ICkpIHRoZW4KICAgICAgICAgICAgbHlueCAtZHVtcCAiJHVybCIK ICAgICAgICBmaQogICAgZWxzZQogICAgICAgIGlmIHR5cGUgY3VybCAyPi9kZXYvbnVsbCAxPiYy OyB0aGVuCiAgICAgICAgICAgIGN1cmwgLWZzU0wgIiR1cmwiIHx8IC16cGxnLWRvd25sb2FkLWZp bGUtc3Rkb3V0ICIkdXJsIiAiMSIKICAgICAgICBlbGlmIHR5cGUgd2dldCAyPi9kZXYvbnVsbCAx PiYyOyB0aGVuCiAgICAgICAgICAgIHdnZXQgIiR1cmwiIC1PIC0gfHwgLXpwbGctZG93bmxvYWQt ZmlsZS1zdGRvdXQgIiR1cmwiICIxIgogICAgICAgIGVsc2UKICAgICAgICAgICAgLXpwbGctZG93 bmxvYWQtZmlsZS1zdGRvdXQgIiR1cmwiICIxIgogICAgICAgIGZpCiAgICBmaQp9CgojIENsZWFy cyBhbGwgcmVwb3J0IGRhdGEgZm9yIGdpdmVuIHVzZXIvcGx1Z2luCi16cGxnLWNsZWFyLXJlcG9y dC1mb3IoKSB7CiAgICAtenBsZy1hbnktdG8tdXNwbDIgIiQxIiAiJDIiCgogICAgIyBTaGFkb3dp bmcKICAgIFpQTEdfUkVQT1JUU1skUkVQTFldPSIiCiAgICBaUExHX0JJTkRLRVlTWyRSRVBMWV09 IiIKICAgIFpQTEdfWlNUWUxFU1skUkVQTFldPSIiCiAgICBaUExHX0FMSUFTRVNbJFJFUExZXT0i IgogICAgWlBMR19XSURHRVRTX1NBVkVEWyRSRVBMWV09IiIKICAgIFpQTEdfV0lER0VUU19ERUxF VEVbJFJFUExZXT0iIgoKICAgICMgRnVuY3Rpb24gZGlmZmluZwogICAgWlBMR19GVU5DVElPTlNb JFJFUExZXT0iIgogICAgWlBMR19GVU5DVElPTlNfQkVGT1JFWyRSRVBMWV09IiIKICAgIFpQTEdf RlVOQ1RJT05TX0FGVEVSWyRSRVBMWV09IiIKICAgIFpQTEdfRlVOQ1RJT05TX0RJRkZfUkFOWyRS RVBMWV09IiIKCiAgICAjIE9wdGlvbiBkaWZmaW5nCiAgICBaUExHX09QVElPTlNbJFJFUExZXT0i IgogICAgWlBMR19PUFRJT05TX0JFRk9SRVskUkVQTFldPSIiCiAgICBaUExHX09QVElPTlNfQUZU RVJbJFJFUExZXT0iIgogICAgWlBMR19PUFRJT05TX0RJRkZfUkFOWyRSRVBMWV09IjAiCgogICAg IyBFbnZpcm9ubWVudCBkaWZmaW5nCiAgICBaUExHX1BBVEhbJFJFUExZXT0iIgogICAgWlBMR19Q QVRIX0JFRk9SRVskUkVQTFldPSIiCiAgICBaUExHX1BBVEhfQUZURVJbJFJFUExZXT0iIgogICAg WlBMR19GUEFUSFskUkVQTFldPSIiCiAgICBaUExHX0ZQQVRIX0JFRk9SRVskUkVQTFldPSIiCiAg ICBaUExHX0ZQQVRIX0FGVEVSWyRSRVBMWV09IiIKICAgIFpQTEdfRU5WX0RJRkZfUkFOWyRSRVBM WV09IjAiCgogICAgIyBQYXJhbWV0ZXIgZGlmZmluZwogICAgWlBMR19QQVJBTUVURVJTX1BSRVsk UkVQTFldPSIiCiAgICBaUExHX1BBUkFNRVRFUlNfUE9TVFskUkVQTFldPSIiCiAgICBaUExHX1BB UkFNRVRFUlNfQkVGT1JFWyRSRVBMWV09IiIKICAgIFpQTEdfUEFSQU1FVEVSU19BRlRFUlskUkVQ TFldPSIiCiAgICBaUExHX1BBUkFNRVRFUlNfRElGRl9SQU5bJFJFUExZXT0iMCIKfQoKIyBEb2Vz bid0IGxvb2sgZm9yIHRoZSBtb3N0IGNvbW1vbiAkcG5hbWUucGx1Z2luLnpzaAojIGZpbGUgYnV0 IGZvciBhbHRlcm5hdGl2ZXMKLXpwbGctZmluZC1vdGhlci1tYXRjaGVzKCkgewogICAgbG9jYWwg ZG5hbWU9IiQxIiBwZGlyPSIkMiIKCiAgICBzZXRvcHQgbG9jYWxvcHRpb25zIG51bGxnbG9iCgog ICAgaWYgWyAtZSAiJGRuYW1lLyRwZGlyL2luaXQuenNoIiBdOyB0aGVuCiAgICAgICAgcmVwbHk9 KCAiJGRuYW1lLyRwZGlyL2luaXQuenNoIiApCiAgICBlbGlmIFsgLWUgIiRkbmFtZS8ke3BkaXJ9 LnpzaC10aGVtZSIgXTsgdGhlbgogICAgICAgIHJlcGx5PSggIiRkbmFtZS8ke3BkaXJ9LnpzaC10 aGVtZSIgKQogICAgZWxpZiBbIC1lICIkZG5hbWUvJHtwZGlyfS50aGVtZS56c2giIF07IHRoZW4K ICAgICAgICByZXBseT0oICIkZG5hbWUvJHtwZGlyfS50aGVtZS56c2giICkKICAgIGVsaWYgWyAt ZSAiJGRuYW1lLyR7cGRpcn0uenNocGx1Z2luIiBdOyB0aGVuCiAgICAgICAgcmVwbHk9KCAiJGRu YW1lLyR7cGRpcn0uenNocGx1Z2luIiApCiAgICBlbGlmIFsgLWUgIiRkbmFtZS8ke3BkaXJ9Lnpz aC5wbHVnaW4iIF07IHRoZW4KICAgICAgICByZXBseT0oICIkZG5hbWUvJHtwZGlyfS56c2gucGx1 Z2luIiApCiAgICBlbHNlCiAgICAgICAgcmVwbHk9KAogICAgICAgICAgICAkZG5hbWUvKi5wbHVn aW4uenNoICRkbmFtZS8qLnpzaCAkZG5hbWUvKi5zaAogICAgICAgICAgICAkZG5hbWUvKi56c2gt dGhlbWUKICAgICAgICApCiAgICBmaQp9CgojIH19fQoKIwojIFN0YXRlIHJlc3RvcmF0aW9uIGZ1 bmN0aW9ucyB7e3sKIwoKIyBTYXZlcyBvcHRpb25zCi16cGxnLXNhdmUtZW50ZXItc3RhdGUoKSB7 CiAgICBaUExHX0VOVEVSX09QVElPTlM9KCApCiAgICBbWyAtbyAiUkNfRVhQQU5EX1BBUkFNIiBd XSAmJiBaUExHX0VOVEVSX09QVElPTlMrPSggIlJDX0VYUEFORF9QQVJBTSIgKQogICAgW1sgLW8g IlNIX1dPUkRfU1BMSVQiIF1dICYmIFpQTEdfRU5URVJfT1BUSU9OUys9KCAiU0hfV09SRF9TUExJ VCIgKQogICAgW1sgLW8gIlNIT1JUX0xPT1BTIiBdXSAmJiBaUExHX0VOVEVSX09QVElPTlMrPSgg IlNIT1JUX0xPT1BTIiApCn0KCiMgUmVzdG9yZXMgb3B0aW9ucwotenBsZy1yZXN0b3JlLWVudGVy LXN0YXRlKCkgewogICAgbG9jYWwgaQogICAgZm9yIGkgaW4gIiR7WlBMR19FTlRFUl9PUFRJT05T W0BdfSI7IGRvCiAgICAgICAgYnVpbHRpbiBzZXRvcHQgIiRpIgogICAgZG9uZQp9CgojIFNldHMg c3RhdGUgbmVlZGVkIGJ5IHRoaXMgY29kZQotenBsZy1zZXQtZGVzaXJlZC1zaGVsbC1zdGF0ZSgp IHsKICAgIGJ1aWx0aW4gc2V0b3B0IE5PX1JDX0VYUEFORF9QQVJBTQogICAgYnVpbHRpbiBzZXRv cHQgTk9fU0hfV09SRF9TUExJVAogICAgYnVpbHRpbiBzZXRvcHQgTk9fU0hPUlRfTE9PUFMKfQoK LXpwbGctc2F2ZS1leHRlbmRlZGdsb2IoKSB7CiAgICBbWyAtbyAiZXh0ZW5kZWRnbG9iIiBdXSAm JiBaUExHX0VYVEVOREVEX0dMT0I9IjEiIHx8IFpQTEdfRVhURU5ERURfR0xPQj0iMCIKfQoKLXpw bGctc2F2ZS1zZXQtZXh0ZW5kZWRnbG9iKCkgewogICAgW1sgLW8gImV4dGVuZGVkZ2xvYiIgXV0g JiYgWlBMR19FWFRFTkRFRF9HTE9CPSIxIiB8fCBaUExHX0VYVEVOREVEX0dMT0I9IjAiCiAgICBi dWlsdGluIHNldG9wdCBleHRlbmRlZGdsb2IKfQoKLXpwbGctcmVzdG9yZS1leHRlbmRlZGdsb2Io KSB7CiAgICBbICIkWlBMR19FWFRFTkRFRF9HTE9CIiA9ICIxIiBdICYmIGJ1aWx0aW4gc2V0b3B0 IGV4dGVuZGVkZ2xvYgogICAgWyAiJFpQTEdfRVhURU5ERURfR0xPQiIgPSAiMCIgXSAmJiBidWls dGluIHVuc2V0b3B0IGV4dGVuZGVkZ2xvYgp9CiMgfX19CgojCiMgWlBsdWdpbiBpbnRlcm5hbCBm dW5jdGlvbnMge3t7CiMKCi16cGxnLXByZXBhcmUtaG9tZSgpIHsKICAgIFsgLW4gIiRaUExHX0hP TUVfUkVBRFkiIF0gJiYgcmV0dXJuCiAgICBaUExHX0hPTUVfUkVBRFk9IjEiCgogICAgWyAhIC1k ICIkWlBMR19IT01FIiBdICYmIGNvbW1hbmQgbWtkaXIgMj4vZGV2L251bGwgIiRaUExHX0hPTUUi CiAgICBbICEgLWQgIiRaUExHX1BMVUdJTlNfRElSIiBdICYmIHsKICAgICAgICBjb21tYW5kIG1r ZGlyICIkWlBMR19QTFVHSU5TX0RJUiIKICAgICAgICAjIEZvciBjb21wYXVkaXQKICAgICAgICBj b21tYW5kIGNobW9kIGctdyAiJFpQTEdfSE9NRSIKICAgIH0KICAgIFsgISAtZCAiJFpQTEdfQ09N UExFVElPTlNfRElSIiBdICYmIHsKICAgICAgICBjb21tYW5kIG1rZGlyICIkWlBMR19DT01QTEVU SU9OU19ESVIiCiAgICAgICAgIyBGb3IgY29tYXVkaXQKICAgICAgICBjb21tYW5kIGNobW9kIGct dyAiJFpQTEdfQ09NUExFVElPTlNfRElSIgoKICAgICAgICAjIFN5bWxpbmsgX3pwbHVnaW4gY29t cGxldGlvbiBpbnRvIF9sb2NhbC0tLXpwbHVnaW4gZGlyZWN0b3J5CiAgICAgICAgY29tbWFuZCBt a2RpciAiJFpQTEdfUExVR0lOU19ESVIvX2xvY2FsLS0tenBsdWdpbiIKICAgICAgICBjb21tYW5k IGNwICIkWlBMR19ESVIvX3pwbHVnaW4iICIkWlBMR19QTFVHSU5TX0RJUi9fbG9jYWwtLS16cGx1 Z2luIgogICAgICAgIGNvbW1hbmQgbG4gLXMgIiRaUExHX1BMVUdJTlNfRElSL19sb2NhbC0tLXpw bHVnaW4vX3pwbHVnaW4iICIkWlBMR19DT01QTEVUSU9OU19ESVIiCiAgICB9CiAgICBbICEgLWQg IiRaUExHX1NOSVBQRVRTX0RJUiIgXSAmJiB7CiAgICAgICAgY29tbWFuZCBta2RpciAiJFpQTEdf U05JUFBFVFNfRElSIgogICAgICAgIGNvbW1hbmQgY2htb2QgZy13ICIkWlBMR19TTklQUEVUU19E SVIiCiAgICB9CgogICAgIyBBbGwgdG8gdGhlIHVzZXJzIC0gc2ltdWxhdGUgT01aIGRpcmVjdG9y eSBzdHJ1Y3R1cmUgKDIvMykKICAgIFsgISAtZCAiJFpQTEdfUExVR0lOU19ESVIvY3VzdG9tIiBd ICYmIGNvbW1hbmQgbWtkaXIgIiRaUExHX1BMVUdJTlNfRElSL2N1c3RvbSIgCiAgICBbICEgLWQg IiRaUExHX1BMVUdJTlNfRElSL2N1c3RvbS9wbHVnaW5zIiBdICYmIGNvbW1hbmQgbWtkaXIgIiRa UExHX1BMVUdJTlNfRElSL2N1c3RvbS9wbHVnaW5zIiAKfQoKIyAkMSAtIHVzZXItLS1wbHVnaW4s IHVzZXIvcGx1Z2luLCB1c2VyIChpZiAkMiBnaXZlbiksIG9yIHBsdWdpbiAoaWYgJDIgZW1wdHkp CiMgJDIgLSBwbHVnaW4gKGlmICQxIC0gdXNlciAtIGdpdmVuKQojICQzIC0gaWYgMSwgdGhlbiBy ZWluc3RhbGwsIG90aGVyd2lzZSBvbmx5IGluc3RhbGwgY29tcGxldGlvbnMgdGhhdCBhcmVuJ3Qg dGhlcmUKLXpwbGctaW5zdGFsbC1jb21wbGV0aW9ucygpIHsKICAgIGxvY2FsIHJlaW5zdGFsbD0i JHszOi0wfSIKCiAgICBzZXRvcHQgbG9jYWxvcHRpb25zIG51bGxnbG9iCgogICAgLXpwbGctYW55 LXRvLXVzZXItcGx1Z2luICIkMSIgIiQyIgogICAgbG9jYWwgdXNlcj0iJHtyZXBseVstMl19Igog ICAgbG9jYWwgcGx1Z2luPSIke3JlcGx5Wy0xXX0iCgogICAgLXpwbGctZXhpc3RzLXBoeXNpY2Fs bHktbWVzc2FnZSAiJHVzZXIiICIkcGx1Z2luIiB8fCByZXR1cm4gMQoKICAgICMgU3ltbGluayBh bnkgY29tcGxldGlvbiBmaWxlcyBpbmNsdWRlZCBpbiBwbHVnaW4ncyBkaXJlY3RvcnkKICAgIHR5 cGVzZXQgLWEgY29tcGxldGlvbnMgYWxyZWFkeV9zeW1saW5rZWQgYmFja3VwX2NvbXBzCiAgICBs b2NhbCBjIGNmaWxlIGJrcGZpbGUKICAgIGNvbXBsZXRpb25zPSggIiRaUExHX1BMVUdJTlNfRElS LyR7dXNlcn0tLS0ke3BsdWdpbn0iL18qICkKICAgIGFscmVhZHlfc3ltbGlua2VkPSggIiRaUExH X0NPTVBMRVRJT05TX0RJUiIvXyogKQogICAgYmFja3VwX2NvbXBzPSggIiRaUExHX0NPTVBMRVRJ T05TX0RJUiIvW15fXSogKQoKICAgICMgU3ltbGluayBjb21wbGV0aW9ucyBpZiB0aGV5IGFyZSBu b3QgYWxyZWFkeSB0aGVyZQogICAgIyBlaXRoZXIgYXMgY29tcGxldGlvbnMgKF9mbmFtZSkgb3Ig YXMgYmFja3VwcyAoZm5hbWUpCiAgICAjIE9SIC0gaWYgaXQncyBhIHJlaW5zdGFsbAogICAgZm9y IGMgaW4gIiR7Y29tcGxldGlvbnNbQF19IjsgZG8KICAgICAgICBjZmlsZT0iJHtjOnR9IgogICAg ICAgIGJrcGZpbGU9IiR7Y2ZpbGUjX30iCiAgICAgICAgaWYgW1sgLXogIiR7YWxyZWFkeV9zeW1s aW5rZWRbKHIpKi8kY2ZpbGVdfSIgJiYKICAgICAgICAgICAgICAteiAiJHtiYWNrdXBfY29tcHNb KHIpKi8kYmtwZmlsZV19IiB8fAogICAgICAgICAgICAgICIkcmVpbnN0YWxsIiA9ICIxIgogICAg ICAgIF1dOyB0aGVuCiAgICAgICAgICAgIGlmIFsgIiRyZWluc3RhbGwiID0gIjEiIF07IHRoZW4K ICAgICAgICAgICAgICAgICMgUmVtb3ZlIG9sZCBmaWxlcwogICAgICAgICAgICAgICAgY29tbWFu ZCBybSAtZiAiJFpQTEdfQ09NUExFVElPTlNfRElSLyRjZmlsZSIKICAgICAgICAgICAgICAgIGNv bW1hbmQgcm0gLWYgIiRaUExHX0NPTVBMRVRJT05TX0RJUi8kYmtwZmlsZSIKICAgICAgICAgICAg ZmkKICAgICAgICAgICAgcHJpbnQgIiR7WlBMR19DT0xbaW5mb119U3ltbGlua2luZyBjb21wbGV0 aW9uIFxgJGNmaWxlJyB0byAkWlBMR19DT01QTEVUSU9OU19ESVIke1pQTEdfQ09MW3JzdF19Igog ICAgICAgICAgICBjb21tYW5kIGxuIC1zICIkYyIgIiRaUExHX0NPTVBMRVRJT05TX0RJUi8kY2Zp bGUiCiAgICAgICAgICAgICMgTWFrZSBjb21waW5pdCBub3RpY2UgdGhlIGNoYW5nZQogICAgICAg ICAgICAtenBsZy1mb3JnZXQtY29tcGxldGlvbiAiJGNmaWxlIgogICAgICAgIGVsc2UKICAgICAg ICAgICAgcHJpbnQgIiR7WlBMR19DT0xbZXJyb3JdfU5vdCBzeW1saW5raW5nIGNvbXBsZXRpb24g XGAkY2ZpbGUnLCBpdCBhbHJlYWR5IGV4aXN0cyR7WlBMR19DT0xbcnN0XX0iCiAgICAgICAgICAg IHByaW50ICIke1pQTEdfQ09MW2Vycm9yXX1Vc2UgXGBjcmVpbnN0YWxsJyB7cGx1Z2luLW5hbWV9 IHRvIGZvcmNlIGluc3RhbGwke1pQTEdfQ09MW3JzdF19IgogICAgICAgIGZpCiAgICBkb25lCn0K CiMgJDEgLSB1c2VyLS0tcGx1Z2luLCB1c2VyL3BsdWdpbiwgdXNlciAoaWYgJDIgZ2l2ZW4pLCBv ciBwbHVnaW4gKGlmICQyIGVtcHR5KQojICQyIC0gcGx1Z2luIChpZiAkMSAtIHVzZXIgLSBnaXZl bikKLXpwbGctdW5pbnN0YWxsLWNvbXBsZXRpb25zKCkgewogICAgc2V0b3B0IGxvY2Fsb3B0aW9u cyBudWxsZ2xvYgoKICAgIC16cGxnLWFueS10by11c2VyLXBsdWdpbiAiJDEiICIkMiIKICAgIGxv Y2FsIHVzZXI9IiR7cmVwbHlbLTJdfSIKICAgIGxvY2FsIHBsdWdpbj0iJHtyZXBseVstMV19IgoK ICAgIC16cGxnLWV4aXN0cy1waHlzaWNhbGx5LW1lc3NhZ2UgIiR1c2VyIiAiJHBsdWdpbiIgfHwg cmV0dXJuIDEKCiAgICB0eXBlc2V0IC1hIGNvbXBsZXRpb25zIHN5bWxpbmtlZCBiYWNrdXBfY29t cHMKICAgIGxvY2FsIGMgY2ZpbGUgYmtwZmlsZQogICAgaW50ZWdlciBhY3Rpb24gZ2xvYmFsX2Fj dGlvbj0wCgogICAgY29tcGxldGlvbnM9KCAiJFpQTEdfUExVR0lOU19ESVIvJHt1c2VyfS0tLSR7 cGx1Z2lufSIvXyogKQogICAgc3ltbGlua2VkPSggIiRaUExHX0NPTVBMRVRJT05TX0RJUiIvXyog KQogICAgYmFja3VwX2NvbXBzPSggIiRaUExHX0NPTVBMRVRJT05TX0RJUiIvW15fXSogKQoKICAg ICMgRGVsZXRlIGNvbXBsZXRpb25zIGlmIHRoZXkgYXJlIHJlYWxseSB0aGVyZSwgZWl0aGVyCiAg ICAjIGFzIGNvbXBsZXRpb25zIChfZm5hbWUpIG9yIGJhY2t1cHMgKGZuYW1lKQogICAgZm9yIGMg aW4gIiR7Y29tcGxldGlvbnNbQF19IjsgZG8KICAgICAgICBhY3Rpb249MAogICAgICAgIGNmaWxl PSIke2M6dH0iCiAgICAgICAgYmtwZmlsZT0iJHtjZmlsZSNffSIKCiAgICAgICAgIyBSZW1vdmUg c3ltbGluayB0byBjb21wbGV0aW9uCiAgICAgICAgaWYgW1sgLW4gIiR7c3ltbGlua2VkWyhyKSov JGNmaWxlXX0iIF1dOyB0aGVuCiAgICAgICAgICAgIGNvbW1hbmQgcm0gLWYgIiRaUExHX0NPTVBM RVRJT05TX0RJUi8kY2ZpbGUiCiAgICAgICAgICAgIGFjdGlvbj0xCiAgICAgICAgZmkKCiAgICAg ICAgIyBSZW1vdmUgYmFja3VwIHN5bWxpbmsgKGNyZWF0ZWQgYnkgY2Rpc2FibGUpCiAgICAgICAg aWYgW1sgLW4gIiR7YmFja3VwX2NvbXBzWyhyKSovJGJrcGZpbGVdfSIgXV07IHRoZW4KICAgICAg ICAgICAgY29tbWFuZCBybSAtZiAiJFpQTEdfQ09NUExFVElPTlNfRElSLyRia3BmaWxlIgogICAg ICAgICAgICBhY3Rpb249MQogICAgICAgIGZpCgogICAgICAgIGlmICgoIGFjdGlvbiApKTsgdGhl bgogICAgICAgICAgICBwcmludCAiJHtaUExHX0NPTFtpbmZvXX1Vbmluc3RhbGxpbmcgY29tcGxl dGlvbiBcYCRjZmlsZScke1pQTEdfQ09MW3JzdF19IgogICAgICAgICAgICAjIE1ha2UgY29tcGlu aXQgbm90aWNlIHRoZSBjaGFuZ2UKICAgICAgICAgICAgLXpwbGctZm9yZ2V0LWNvbXBsZXRpb24g IiRjZmlsZSIKICAgICAgICAgICAgKCggZ2xvYmFsX2FjdGlvbiArKyApKQogICAgICAgIGVsc2UK ICAgICAgICAgICAgcHJpbnQgIiR7WlBMR19DT0xbaW5mb119Q29tcGxldGlvbiBcYCRjZmlsZScg bm90IGluc3RhbGxlZCR7WlBMR19DT0xbcnN0XX0iCiAgICAgICAgZmkKICAgIGRvbmUKCiAgICBp ZiAoKCBnbG9iYWxfYWN0aW9uID4gMCApKTsgdGhlbgogICAgICAgIHByaW50ICIke1pQTEdfQ09M W2luZm9dfVVuaW5zdGFsbGVkICRnbG9iYWxfYWN0aW9uIGNvbXBsZXRpb25zJHtaUExHX0NPTFty c3RdfSIKICAgIGZpCn0KCi16cGxnLWNvbXBpbml0KCkgewogICAgc2V0b3B0IGxvY2Fsb3B0aW9u cyBudWxsZ2xvYgoKICAgIHR5cGVzZXQgLWEgc3ltbGlua2VkIGJhY2t1cF9jb21wcwogICAgbG9j YWwgYyBjZmlsZSBia3BmaWxlIAoKICAgIHN5bWxpbmtlZD0oICIkWlBMR19DT01QTEVUSU9OU19E SVIiL18qICkKICAgIGJhY2t1cF9jb21wcz0oICIkWlBMR19DT01QTEVUSU9OU19ESVIiL1teX10q ICkKCiAgICAjIERlbGV0ZSBjb21wbGV0aW9ucyBpZiB0aGV5IGFyZSByZWFsbHkgdGhlcmUsIGVp dGhlcgogICAgIyBhcyBjb21wbGV0aW9ucyAoX2ZuYW1lKSBvciBiYWNrdXBzIChmbmFtZSkKICAg IGZvciBjIGluICIke3N5bWxpbmtlZFtAXX0iICIke2JhY2t1cF9jb21wc1tAXX0iOyBkbwogICAg ICAgIGFjdGlvbj0wCiAgICAgICAgY2ZpbGU9IiR7Yzp0fSIKICAgICAgICBjZmlsZT0iXyR7Y2Zp bGUjX30iCiAgICAgICAgYmtwZmlsZT0iJHtjZmlsZSNffSIKCiAgICAgICAgcHJpbnQgIiR7WlBM R19DT0xbaW5mb119UHJvY2Vzc2luZyBjb21wbGV0aW9uICRjZmlsZSR7WlBMR19DT0xbcnN0XX0i CiAgICAgICAgLXpwbGctZm9yZ2V0LWNvbXBsZXRpb24gIiRjZmlsZSIKICAgIGRvbmUKCiAgICBw cmludCAiSW5pdGlhbGl6aW5nIGNvbXBsZXRpb24gKGNvbXBpbml0KS4uLiIKICAgIGNvbXBpbml0 Cn0KCi16cGxnLXNldHVwLXBsdWdpbi1kaXIoKSB7CiAgICBsb2NhbCB1c2VyPSIkMSIgcGx1Z2lu PSIkMiIgZ2l0aHViX3BhdGg9IiQxLyQyIgogICAgaWYgWyAhIC1kICIkWlBMR19QTFVHSU5TX0RJ Ui8ke3VzZXJ9LS0tJHtwbHVnaW59IiBdOyB0aGVuCiAgICAgICAgIyBSZXR1cm4gd2l0aCBlcnJv ciB3aGVuIGFueSBwcm9ibGVtCiAgICAgICAgZ2l0IGNsb25lIC0tcmVjdXJzaXZlIGh0dHBzOi8v Z2l0aHViLmNvbS8iJGdpdGh1Yl9wYXRoIiAiJFpQTEdfUExVR0lOU19ESVIvJHt1c2VyfS0tLSR7 cGx1Z2lufSIgfHwgcmV0dXJuIDEKCiAgICAgICAgIyBJbnN0YWxsIGNvbXBsZXRpb25zCiAgICAg ICAgLXpwbGctaW5zdGFsbC1jb21wbGV0aW9ucyAiJHVzZXIiICIkcGx1Z2luIiAiMCIKCiAgICAg ICAgIyBDb21waWxlIHBsdWdpbgogICAgICAgIC16cGxnLWNvbXBpbGUtcGx1Z2luICIkdXNlciIg IiRwbHVnaW4iCiAgICBmaQoKICAgICMgQWxsIHRvIHRoZSB1c2VycyAtIHNpbXVsYXRlIE9NWiBk aXJlY3Rvcnkgc3RydWN0dXJlICgzLzMpCiAgICAjIEZvciBub3csIHRoaXMgd2lsbCBiZSBkb25l IGV2ZXJ5IHRpbWUgc2V0dXAgcGx1Z2luIGRpciBpcwogICAgIyBiZWluZyBydW4sIHRvIG1pZ3Jh dGUgb2xkIHNldHVwCiAgICBpZiBbICEgLWQgIiRaUExHX1BMVUdJTlNfRElSL2N1c3RvbS9wbHVn aW5zLyR7cGx1Z2lufSIgXTsgdGhlbgogICAgICAgICMgUmVtb3ZlIGluIGNhc2Ugb2YgYnJva2Vu IHN5bWxpbmsKICAgICAgICBjb21tYW5kIHJtIC1mICIkWlBMR19QTFVHSU5TX0RJUi9jdXN0b20v cGx1Z2lucy8ke3BsdWdpbn0iCiAgICAgICAgY29tbWFuZCBsbiAtcyAiLi4vLi4vJHt1c2VyfS0t LSR7cGx1Z2lufSIgIiRaUExHX1BMVUdJTlNfRElSL2N1c3RvbS9wbHVnaW5zLyR7cGx1Z2lufSIK ICAgIGZpCgogICAgcmV0dXJuIDAKfQoKIyBUT0RPIGRldGVjdCBzZWNvbmQgYXV0b2xvYWQ/Ci16 cGxnLXJlZ2lzdGVyLXBsdWdpbigpIHsKICAgIGxvY2FsIGxpZ2h0PSIkMyIKICAgIC16cGxnLWFu eS10by11c2VyLXBsdWdpbiAiJDEiICIkMiIKICAgIGxvY2FsIHVzZXI9IiR7cmVwbHlbLTJdfSIg cGx1Z2luPSIke3JlcGx5Wy0xXX0iIHVzcGwyPSIke3JlcGx5Wy0yXX0vJHtyZXBseVstMV19Igog ICAgaW50ZWdlciByZXQ9MAoKICAgIGlmICEgLXpwbGctZXhpc3RzICIkdXNlciIgIiRwbHVnaW4i OyB0aGVuCiAgICAgICAgWlBMR19SRUdJU1RFUkVEX1BMVUdJTlMrPSggIiR1c3BsMiIgKQogICAg ZWxzZQogICAgICAgICMgQWxsb3cgb3ZlcndyaXRlLWxvYWQsIGhvd2V2ZXIgd2FybiBhYm91dCBp dAogICAgICAgIHByaW50ICJXYXJuaW5nOiBwbHVnaW4gXGAkdXNwbDInIGFscmVhZHkgcmVnaXN0 ZXJlZCwgd2lsbCBvdmVyd3JpdGUtbG9hZCIKICAgICAgICByZXQ9MQogICAgZmkKCiAgICAjIEZ1 bGwgb3IgbGlnaHQgbG9hZD8KICAgIFsgIiRsaWdodCIgPSAibGlnaHQiIF0gJiYgWlBMR19SRUdJ U1RFUkVEX1NUQVRFU1skdXNwbDJdPSIxIiB8fCBaUExHX1JFR0lTVEVSRURfU1RBVEVTWyR1c3Bs Ml09IjIiCgogICAgWlBMR19SRVBPUlRTWyR1c3BsMl09IiIKICAgIFpQTEdfRlVOQ1RJT05TX0JF Rk9SRVskdXNwbDJdPSIiCiAgICBaUExHX0ZVTkNUSU9OU19BRlRFUlskdXNwbDJdPSIiCiAgICBa UExHX0ZVTkNUSU9OU1skdXNwbDJdPSIiCiAgICBaUExHX1pTVFlMRVNbJHVzcGwyXT0iIgogICAg WlBMR19CSU5ES0VZU1skdXNwbDJdPSIiCiAgICBaUExHX0FMSUFTRVNbJHVzcGwyXT0iIgogICAg WlBMR19XSURHRVRTX1NBVkVEWyR1c3BsMl09IiIKICAgIFpQTEdfV0lER0VUU19ERUxFVEVbJHVz cGwyXT0iIgogICAgWlBMR19PUFRJT05TWyR1c3BsMl09IiIKICAgIFpQTEdfUEFUSFskdXNwbDJd PSIiCiAgICBaUExHX0ZQQVRIWyR1c3BsMl09IiIKCiAgICByZXR1cm4gJHJldAp9CgotenBsZy11 bnJlZ2lzdGVyLXBsdWdpbigpIHsKICAgIC16cGxnLWFueS10by11c2VyLXBsdWdpbiAiJDEiICIk MiIKICAgIGxvY2FsIHVzcGwyPSIke3JlcGx5Wy0yXX0vJHtyZXBseVstMV19IgoKICAgICMgSWYg bm90IGZvdW5kLCBpZHggd2lsbCBiZSBsZW5ndGgrMQogICAgbG9jYWwgaWR4PSIke1pQTEdfUkVH SVNURVJFRF9QTFVHSU5TWyhpKSR1c3BsMl19IgogICAgWlBMR19SRUdJU1RFUkVEX1BMVUdJTlNb JGlkeF09KCkKICAgIFpQTEdfUkVHSVNURVJFRF9TVEFURVNbJHVzcGwyXT0iMCIKfQoKLXpwbGct bG9hZC1wbHVnaW4oKSB7CiAgICBsb2NhbCB1c2VyPSIkMSIgcGx1Z2luPSIkMiIgbGlnaHQ9IiQz IgogICAgWlBMR19DVVJfVVNFUj0iJHVzZXIiCiAgICBaUExHX0NVUl9QTFVHSU49IiRwbHVnaW4i CiAgICBaUExHX0NVUl9VU1BMPSIke3VzZXJ9LS0tJHtwbHVnaW59IgogICAgWlBMR19DVVJfVVNQ TDI9IiR7dXNlcn0vJHtwbHVnaW59IgoKICAgICMgVGhlcmUgYXJlIHBsdWdpbnMgaGF2aW5nICIu cGx1Z2luLnpzaCIKICAgICMgaW4gJHtwbHVnaW59IGRpcmVjdG9yeSBuYW1lLCBhbHNvIHNvbWUK ICAgICMgaGF2ZSAiLnpzaCIgdGhlcmUKICAgIGxvY2FsIHBkaXI9IiR7JHtwbHVnaW4lLnBsdWdp bi56c2h9JS56c2h9IgogICAgbG9jYWwgZG5hbWU9IiRaUExHX1BMVUdJTlNfRElSLyR7dXNlcn0t LS0ke3BsdWdpbn0iCgogICAgIyBMb29rIGZvciBhIGZpbGUgdG8gc291cmNlLiBGaXJzdCBsb29r IGZvciB0aGUgbW9zdAogICAgIyBjb21tb24gb25lIChvcHRpbWl6YXRpb24pIHRoZW4gZm9yIG90 aGVyIHBvc3NpYmlsaXRpZXMKICAgIGlmIFsgISAtZSAiJGRuYW1lLyR7cGRpcn0ucGx1Z2luLnpz aCIgXTsgdGhlbgogICAgICAgIC16cGxnLWZpbmQtb3RoZXItbWF0Y2hlcyAiJGRuYW1lIiAiJHBk aXIiCiAgICBlbHNlCiAgICAgICAgcmVwbHk9KCAiJGRuYW1lLyR7cGRpcn0ucGx1Z2luLnpzaCIg KQogICAgZmkKICAgIFsgIiR7I3JlcGx5fSIgLWVxICIwIiBdICYmIHJldHVybiAxCgogICAgIyBH ZXQgZmlyc3Qgb25lCiAgICBpbnRlZ2VyIGNvcnJlY3Q9MAogICAgW1sgLW8gIktTSF9BUlJBWVMi IF1dICYmIGNvcnJlY3Q9MQogICAgbG9jYWwgZm5hbWU9IiR7cmVwbHlbMS1jb3JyZWN0XSMkZG5h bWUvfSIKCiAgICAtenBsZy1hZGQtcmVwb3J0ICIkWlBMR19DVVJfVVNQTDIiICJTb3VyY2UgJGZu YW1lIgogICAgWyAiJGxpZ2h0IiA9ICJsaWdodCIgXSAmJiAtenBsZy1hZGQtcmVwb3J0ICIkWlBM R19DVVJfVVNQTDIiICJMaWdodCBsb2FkIgogICAgLXpwbGctcmVzZXQtYWxyZWFkeS13YXJuaW5n cwoKICAgICMgTGlnaHQgbG9hZCBkb2Vzbid0IGRvIGRpZmZzIGFuZCBzaGFkb3dpbmcKICAgIGlm IFsgIiRsaWdodCIgIT0gImxpZ2h0IiBdOyB0aGVuCiAgICAgICAgLXpwbGctZGlmZi1mdW5jdGlv bnMgIiRaUExHX0NVUl9VU1BMMiIgYmVnaW4KICAgICAgICAtenBsZy1kaWZmLW9wdGlvbnMgIiRa UExHX0NVUl9VU1BMMiIgYmVnaW4KICAgICAgICAtenBsZy1kaWZmLWVudiAiJFpQTEdfQ1VSX1VT UEwyIiBiZWdpbgogICAgICAgIC16cGxnLWRpZmYtcGFyYW1ldGVyICIkWlBMR19DVVJfVVNQTDIi IGJlZ2luCiAgICBmaQoKICAgICMgV2FybiBhYm91dCB1c2VyIGhhdmluZyBoaXMgb3duIHNoYWRv d3MgaW4gcGxhY2UuIENoZWNrCiAgICAjIGV2ZXJ5IHBvc3NpYmxlIHNoYWRvdyByZWdhcmRsZXNz IG9mICIkbGlnaHQiIHNldHRpbmcKICAgIC16cGxnLWFscmVhZHktZnVuY3Rpb24td2FybmluZy11 c3BsMiAkKCggJHsrZnVuY3Rpb25zW2F1dG9sb2FkXX0gKSkgIiRaUExHX0NVUl9VU1BMMiIgImF1 dG9sb2FkIgogICAgLXpwbGctYWxyZWFkeS1mdW5jdGlvbi13YXJuaW5nLXVzcGwyICQoKCAkeytm dW5jdGlvbnNbYmluZGtleV19ICkpICIkWlBMR19DVVJfVVNQTDIiICJiaW5ka2V5IgogICAgLXpw bGctYWxyZWFkeS1mdW5jdGlvbi13YXJuaW5nLXVzcGwyICQoKCAkeytmdW5jdGlvbnNbenN0eWxl XX0gKSkgIiRaUExHX0NVUl9VU1BMMiIgInpzdHlsZSIKICAgIC16cGxnLWFscmVhZHktZnVuY3Rp b24td2FybmluZy11c3BsMiAkKCggJHsrZnVuY3Rpb25zW2FsaWFzXX0gKSkgIiRaUExHX0NVUl9V U1BMMiIgImFsaWFzIgogICAgLXpwbGctYWxyZWFkeS1mdW5jdGlvbi13YXJuaW5nLXVzcGwyICQo KCAkeytmdW5jdGlvbnNbemxlXX0gKSkgIiRaUExHX0NVUl9VU1BMMiIgInpsZSIKCiAgICAtenBs Zy1zaGFkb3ctb24gIiRsaWdodCIKCiAgICAjIFdlIG5lZWQgc29tZSBzdGF0ZSwgYnV0IHVzZXIg d2FudHMgaGlzIGZvciBoaXMgcGx1Z2lucwogICAgLXpwbGctcmVzdG9yZS1lbnRlci1zdGF0ZSAK ICAgIGJ1aWx0aW4gc291cmNlICIkZG5hbWUvJGZuYW1lIgogICAgIyBSZXN0b3JlIG91ciBkZXNp cmVkIHN0YXRlIGZvciBvdXIgb3BlcmF0aW9uCiAgICAtenBsZy1zZXQtZGVzaXJlZC1zaGVsbC1z dGF0ZQoKICAgIC16cGxnLXNoYWRvdy1vZmYgIiRsaWdodCIKICAgIGlmIFsgIiRsaWdodCIgIT0g ImxpZ2h0IiBdOyB0aGVuCiAgICAgICAgLXpwbGctZGlmZi1wYXJhbWV0ZXIgIiRaUExHX0NVUl9V U1BMMiIgZW5kCiAgICAgICAgLXpwbGctZGlmZi1lbnYgIiRaUExHX0NVUl9VU1BMMiIgZW5kCiAg ICAgICAgLXpwbGctZGlmZi1vcHRpb25zICIkWlBMR19DVVJfVVNQTDIiIGVuZAogICAgICAgIC16 cGxnLWRpZmYtZnVuY3Rpb25zICIkWlBMR19DVVJfVVNQTDIiIGVuZAogICAgZmkKCiAgICAjIE1h cmsgbm8gbG9hZCBpcyBpbiBwcm9ncmVzcwogICAgWlBMR19DVVJfVVNFUj0iIgogICAgWlBMR19D VVJfUExVR0lOPSIiCiAgICBaUExHX0NVUl9VU1BMPSIiCiAgICBaUExHX0NVUl9VU1BMMj0iIgp9 CgojIENvbXBpbGVzIHBsdWdpbgotenBsZy1jb21waWxlLXBsdWdpbigpIHsKICAgIC16cGxnLWFu eS10by11c2VyLXBsdWdpbiAiJDEiICIkMiIKICAgIGxvY2FsIHVzZXI9IiR7cmVwbHlbLTJdfSIg cGx1Z2luPSIke3JlcGx5Wy0xXX0iCgogICAgIyBUaGVyZSBhcmUgcGx1Z2lucyBoYXZpbmcgIi5w bHVnaW4uenNoIgogICAgIyBpbiAke3BsdWdpbn0gZGlyZWN0b3J5IG5hbWUsIGFsc28gc29tZQog ICAgIyBoYXZlICIuenNoIiB0aGVyZQogICAgbG9jYWwgcGRpcj0iJHske3BsdWdpbiUucGx1Z2lu LnpzaH0lLnpzaH0iCiAgICBsb2NhbCBkbmFtZT0iJFpQTEdfUExVR0lOU19ESVIvJHt1c2VyfS0t LSR7cGx1Z2lufSIKCiAgICAjIExvb2sgZm9yIGZpbGUgdG8gY29tcGlsZS4gRmlyc3QgbG9vayBm b3IgdGhlIG1vc3QgY29tbW9uIG9uZQogICAgIyAob3B0aW1pemF0aW9uKSB0aGVuIGZvciBvdGhl ciBwb3NzaWJpbGl0aWVzCiAgICBpZiBbICEgLWUgIiRkbmFtZS8ke3BkaXJ9LnBsdWdpbi56c2gi IF07IHRoZW4KICAgICAgICAtenBsZy1maW5kLW90aGVyLW1hdGNoZXMgIiRkbmFtZSIgIiRwZGly IgogICAgZWxzZQogICAgICAgIHJlcGx5PSggIiRkbmFtZS8ke3BkaXJ9LnBsdWdpbi56c2giICkK ICAgIGZpCgogICAgaWYgWyAiJHsjcmVwbHl9IiAtZXEgIjAiIF07IHRoZW4KICAgICAgICBwcmlu dCAiJHtaUExHX0NPTFtlcnJvcl19Tm8gZmlsZXMgZm9yIGNvbXBpbGF0aW9uIGZvdW5kJHtaUExH X0NPTFtyc3RdfSIKICAgICAgICByZXR1cm4gMQogICAgZmkKCiAgICAjIFRha2UgZmlyc3QgZW50 cnkKICAgIGludGVnZXIgY29ycmVjdD0wCiAgICBbWyAtbyAiS1NIX0FSUkFZUyIgXV0gJiYgY29y cmVjdD0xCiAgICBsb2NhbCBmaXJzdD0iJHtyZXBseVsxLWNvcnJlY3RdfSIKCiAgICBsb2NhbCBm bmFtZT0iJHtmaXJzdCMkZG5hbWUvfSIKCiAgICBwcmludCAiQ29tcGlsaW5nICR7WlBMR19DT0xb aW5mb119JGZuYW1lJHtaUExHX0NPTFtyc3RdfS4uLiIKICAgIC16cGxnLXJlc3RvcmUtZW50ZXIt c3RhdGUgCiAgICB6Y29tcGlsZSAiJGZpcnN0IiB8fCB7CiAgICAgICAgZWNobyAiQ29tcGlsYXRp b24gZmFpbGVkLiBEb24ndCB3b3JyeSwgdGhlIHBsdWdpbiB3aWxsIHdvcmsgYWxzbyB3aXRob3V0 IGNvbXBpbGF0aW9uIgogICAgICAgIGVjaG8gIkNvbnNpZGVyIHN1Ym1pdHRpbmcgYW4gZXJyb3Ig cmVwb3J0IHRvIHRoZSBwbHVnaW4ncyBhdXRob3IiCiAgICB9CiAgICAtenBsZy1zZXQtZGVzaXJl ZC1zaGVsbC1zdGF0ZQp9CgotenBsZy11bmNvbXBpbGUtcGx1Z2luKCkgewogICAgc2V0b3B0IGxv Y2Fsb3B0aW9ucyBudWxsZ2xvYgoKICAgIC16cGxnLWFueS10by11c2VyLXBsdWdpbiAiJDEiICIk MiIKICAgIGxvY2FsIHVzZXI9IiR7cmVwbHlbLTJdfSIgcGx1Z2luPSIke3JlcGx5Wy0xXX0iIHNp bGVudD0iJDMiCgogICAgIyBUaGVyZSBhcmUgcGx1Z2lucyBoYXZpbmcgIi5wbHVnaW4uenNoIgog ICAgIyBpbiAke3BsdWdpbn0gZGlyZWN0b3J5IG5hbWUsIGFsc28gc29tZQogICAgIyBoYXZlICIu enNoIiB0aGVyZQogICAgbG9jYWwgZG5hbWU9IiRaUExHX1BMVUdJTlNfRElSLyR7dXNlcn0tLS0k e3BsdWdpbn0iCiAgICB0eXBlc2V0IC1hIG1hdGNoZXMgbQogICAgbWF0Y2hlcz0oICRkbmFtZS8q Lnp3YyApCgogICAgaWYgWyAiJHsjbWF0Y2hlc30iIC1lcSAiMCIgXTsgdGhlbgogICAgICAgIGlm IFsgIiRzaWxlbnQiID0gIjEiIF07IHRoZW4KICAgICAgICAgICAgcHJpbnQgIm5vdCBjb21waWxl ZCIKICAgICAgICBlbHNlCiAgICAgICAgICAgIC16cGxnLWFueS1jb2xvcmlmeS1hcy11c3BsMiAi JHVzZXIiICIkcGx1Z2luIgogICAgICAgICAgICBwcmludCAiJFJFUExZIG5vdCBjb21waWxlZCIK ICAgICAgICBmaQogICAgICAgIHJldHVybiAxCiAgICBmaQoKICAgIGZvciBtIGluICIke21hdGNo ZXNbQF19IjsgZG8KICAgICAgICBwcmludCAiUmVtb3ZpbmcgJHtaUExHX0NPTFtpbmZvXX0ke206 dH0ke1pQTEdfQ09MW3JzdF19IgogICAgICAgIGNvbW1hbmQgcm0gLWYgIiRtIgogICAgZG9uZQp9 CiMgfX19CgojCiMgVXNlci1leHBvc2VkIGZ1bmN0aW9ucyB7e3sKIwoKLXpwbGctc2hvdy1jb21w bGV0aW9ucygpIHsKICAgIHNldG9wdCBsb2NhbG9wdGlvbnMgbnVsbGdsb2IKCiAgICB0eXBlc2V0 IC1hIGNvbXBsZXRpb25zCiAgICBjb21wbGV0aW9ucz0oICIkWlBMR19DT01QTEVUSU9OU19ESVIi L18qICIkWlBMR19DT01QTEVUSU9OU19ESVIiL1teX10qICkKCiAgICAjIEZpbmQgbG9uZ2VzdCBj b21wbGV0aW9uIG5hbWUKICAgIGxvY2FsIGNwYXRoIGMKICAgIGludGVnZXIgbG9uZ2VzdD0wCiAg ICBmb3IgY3BhdGggaW4gIiR7Y29tcGxldGlvbnNbQF19IjsgZG8KICAgICAgICBjPSIke2NwYXRo OnR9IgogICAgICAgIGM9IiR7YyNffSIKICAgICAgICBbICIkeyNjfSIgLWd0ICIkbG9uZ2VzdCIg XSAmJiBsb25nZXN0PSIkeyNjfSIKICAgIGRvbmUKCiAgICAjCiAgICAjIERpc3BsYXkgLSByZXNv bHZlcyBvd25lciBvZiBlYWNoIGNvbXBsZXRpb24sCiAgICAjIGRldGVjdHMgaWYgY29tcGxldGlv biBpcyBkaXNhYmxlZCAKICAgICMKCiAgICBpbnRlZ2VyIGRpc2FibGVkCiAgICBmb3IgY3BhdGgg aW4gIiR7Y29tcGxldGlvbnNbQF19IjsgZG8KICAgICAgICBjPSIke2NwYXRoOnR9IgogICAgICAg IFsgIiR7YyNffSIgPSAiJHtjfSIgXSAmJiBkaXNhYmxlZD0xIHx8IGRpc2FibGVkPTAKICAgICAg ICBjPSIke2MjX30iCgogICAgICAgICMgUHJlcGFyZSByZWFkbGluayBjb21tYW5kIGZvciBlc3Rh Ymxpc2hpbmcKICAgICAgICAjIGNvbXBsZXRpb24ncyBvd25lcgogICAgICAgIC16cGxnLXByZXBh cmUtcmVhZGxpbmUKCiAgICAgICAgIyBUaGlzIHdpbGwgcmVzb2x2ZSBjb21wbGV0aW9uJ3Mgc3lt bGluayB0byBvYnRhaW4KICAgICAgICAjIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZXBvc2l0b3J5 IGl0IGNvbWVzIGZyb20sIGkuZS4KICAgICAgICAjIGFib3V0IHVzZXIgYW5kIHBsdWdpbiwgdGFr ZW4gZnJvbSBkaXJlY3RvcnkgbmFtZQogICAgICAgIC16cGxnLWdldC1jb21wbGV0aW9uLW93bmVy LXVzcGwyY29sICIkY3BhdGgiICIkUkVQTFkiCgogICAgICAgICMgT3V0cHV0IGxpbmUgb2YgdGV4 dAogICAgICAgIHByaW50IC1uICIkeyhyOmxvbmdlc3QrMTo6IDopY30gJFJFUExZIgogICAgICAg ICgoIGRpc2FibGVkICkpICYmIHByaW50IC1uICIgJHtaUExHX0NPTFtlcnJvcl19W2Rpc2FibGVk XSR7WlBMR19DT0xbcnN0XX0iCiAgICAgICAgcHJpbnQKICAgIGRvbmUKfQoKIyBXaGlsZSAtenBs Zy1zaG93LWNvbXBsZXRpb25zIHNob3dzIHdoYXQgY29tcGxldGlvbnMgYXJlIGluc3RhbGxlZCwK IyB0aGlzIGZ1bmN0aW9ucyBzZWFyY2hlcyB0aHJvdWdoIGFsbCBwbHVnaW4gZGlyZWN0b3JpZXMg c2hvd2luZyB3aGF0J3MgYXZhaWxhYmxlCi16cGxnLXNlYXJjaC1jb21wbGV0aW9ucygpIHsKICAg IHNldG9wdCBsb2NhbG9wdGlvbnMgbnVsbGdsb2IKCiAgICB0eXBlc2V0IC1hIHBsdWdpbl9wYXRo cwogICAgcGx1Z2luX3BhdGhzPSggIiRaUExHX1BMVUdJTlNfRElSIi8qLS0tKiApCgogICAgIyBG aW5kIGxvbmdlc3QgcGx1Z2luIG5hbWUuIFRoaW5ncyBhcmUgcmFuIHR3aWNlIGhlcmUsIGZpcnN0 IHBhc3MKICAgICMgaXMgdG8gZ2V0IGxvbmdlc3QgbmFtZSBvZiBwbHVnaW4gd2hpY2ggaXMgaGF2 aW5nIGFueSBjb21wbGV0aW9ucwogICAgaW50ZWdlciBsb25nZXN0PTAKICAgIHR5cGVzZXQgLWEg Y29tcGxldGlvbnMKICAgIGxvY2FsIHBwCiAgICBmb3IgcHAgaW4gIiR7cGx1Z2luX3BhdGhzW0Bd fSI7IGRvCiAgICAgICAgY29tcGxldGlvbnM9KCAiJHBwIi9fKiApCiAgICAgICAgaWYgWyAiJHsj Y29tcGxldGlvbnN9IiAtZ3QgMCBdOyB0aGVuCiAgICAgICAgICAgIGxvY2FsIHBkPSIke3BwOnR9 IgogICAgICAgICAgICBbICIkeyNwZH0iIC1ndCAiJGxvbmdlc3QiIF0gJiYgbG9uZ2VzdD0iJHsj cGR9IgogICAgICAgIGZpCiAgICBkb25lCgogICAgcHJpbnQgIiR7WlBMR19DT0xbaW5mb119Wytd JHtaUExHX0NPTFtyc3RdfSBpcyBpbnN0YWxsZWQsICR7WlBMR19DT0xbcF19Wy1dJHtaUExHX0NP TFtyc3RdfSB1bmluc3RhbGxlZCwgJHtaUExHX0NPTFtlcnJvcl19WystXSR7WlBMR19DT0xbcnN0 XX0gcGFydGlhbGx5IGluc3RhbGxlZCIKCiAgICBsb2NhbCBjCiAgICBmb3IgcHAgaW4gIiR7cGx1 Z2luX3BhdGhzW0BdfSI7IGRvCiAgICAgICAgY29tcGxldGlvbnM9KCAiJHBwIi9fKiApCgogICAg ICAgIGlmIFsgIiR7I2NvbXBsZXRpb25zfSIgLWd0IDAgXTsgdGhlbgogICAgICAgICAgICAjIEFy cmF5IG9mIGNvbXBsZXRpb25zLCBlLmcuICggX2NwIF94YXV0aCApCiAgICAgICAgICAgIGNvbXBs ZXRpb25zPSggIiR7Y29tcGxldGlvbnNbQF06dH0iICkKCiAgICAgICAgICAgICMgRGV0ZWN0IGlm IHRoZSBjb21wbGV0aW9ucyBhcmUgaW5zdGFsbGVkCiAgICAgICAgICAgIGludGVnZXIgYWxsX2lu c3RhbGxlZD0iJHsjY29tcGxldGlvbnN9IgogICAgICAgICAgICBmb3IgYyBpbiAiJHtjb21wbGV0 aW9uc1tAXX0iOyBkbwogICAgICAgICAgICAgICAgaWYgW1sgLWUgIiRaUExHX0NPTVBMRVRJT05T X0RJUi8kYyIgfHwgLWUgIiRaUExHX0NPTVBMRVRJT05TX0RJUi8ke2MjX30iIF1dOyB0aGVuCiAg ICAgICAgICAgICAgICAgICAgKCggYWxsX2luc3RhbGxlZCAtLSApKQogICAgICAgICAgICAgICAg ZmkKICAgICAgICAgICAgZG9uZQoKICAgICAgICAgICAgaWYgWyAiJGFsbF9pbnN0YWxsZWQiIC1l cSAiJHsjY29tcGxldGlvbnN9IiBdOyB0aGVuCiAgICAgICAgICAgICAgICBwcmludCAtbiAiJHta UExHX0NPTFtwXX1bLV0ke1pQTEdfQ09MW3JzdF19ICIKICAgICAgICAgICAgZWxpZiBbICIkYWxs X2luc3RhbGxlZCIgLWVxICIwIiBdOyB0aGVuCiAgICAgICAgICAgICAgICBwcmludCAtbiAiJHta UExHX0NPTFtpbmZvXX1bK10ke1pQTEdfQ09MW3JzdF19ICIKICAgICAgICAgICAgZWxzZQogICAg ICAgICAgICAgICAgcHJpbnQgLW4gIiR7WlBMR19DT0xbZXJyb3JdfVsrLV0ke1pQTEdfQ09MW3Jz dF19ICIKICAgICAgICAgICAgZmkKCiAgICAgICAgICAgICMgQ29udmVydCBkaXJlY3RvcnkgbmFt ZSB0byBjb2xvcmlmaWVkICR1c2VyLyRwbHVnaW4KICAgICAgICAgICAgLXpwbGctYW55LWNvbG9y aWZ5LWFzLXVzcGwyICIke3BwOnR9IgoKICAgICAgICAgICAgIyBBZGp1c3QgZm9yIGVzY2FwZSBj b2RlIChuYXN0eSwgdXRpbGl6ZXMgZmFjdCB0aGF0CiAgICAgICAgICAgICMgJHtaUExHX0NPTFty c3RdfSBpcyB1c2VkIHR3aWNlLCBzbyBhcyBhICRaUExHX0NPTCkKICAgICAgICAgICAgaW50ZWdl ciBhZGp1c3RfZWM9JCgoICR7I3Jlc2V0X2NvbG9yfSAqIDIgKyAkeyNaUExHX0NPTFt1bmFtZV19 ICsgJHsjWlBMR19DT0xbcG5hbWVdfSApKQoKICAgICAgICAgICAgcHJpbnQgIiR7KHI6bG9uZ2Vz dCthZGp1c3RfZWM6OiA6KVJFUExZfSAkeyhqOiwgOiljb21wbGV0aW9uc30iCiAgICAgICAgZmkK ICAgIGRvbmUKfQoKLXpwbGctc2hvdy1yZXBvcnQoKSB7CiAgICAtenBsZy1hbnktdG8tdXNlci1w bHVnaW4gIiQxIiAiJDIiCiAgICBsb2NhbCB1c2VyPSIke3JlcGx5Wy0yXX0iCiAgICBsb2NhbCBw bHVnaW49IiR7cmVwbHlbLTFdfSIKCiAgICAjIEFsbG93IGRlYnVnIHJlcG9ydAogICAgaWYgWyAi JHVzZXIvJHBsdWdpbiIgIT0gIiRaUExHX0RFQlVHX1VTUEwyIiBdOyB0aGVuCiAgICAgICAgLXpw bGctZXhpc3RzLW1lc3NhZ2UgIiR1c2VyIiAiJHBsdWdpbiIgfHwgcmV0dXJuIDEKICAgIGZpCgog ICAgIyBQcmludCB0aXRsZQogICAgcHJpbnRmICIke1pQTEdfQ09MW3RpdGxlXX1QbHVnaW4gcmVw b3J0IGZvciR7WlBMR19DT0xbcnN0XX0gJXMvJXNcbiJcCiAgICAgICAgICAgICIke1pQTEdfQ09M W3VuYW1lXX0kdXNlciR7WlBMR19DT0xbcnN0XX0iXAogICAgICAgICAgICAiJHtaUExHX0NPTFtw bmFtZV19JHBsdWdpbiR7WlBMR19DT0xbcnN0XX0iCgogICAgIyBQcmludCAiLS0tLS0tLS0tLSIK ICAgIGxvY2FsIG1zZz0iUGx1Z2luIHJlcG9ydCBmb3IgJHVzZXIvJHBsdWdpbiIKICAgIHByaW50 IC0tICIke1pQTEdfQ09MW2Jhcl19JHsocjokeyNtc2d9OjotOil0bXBfX30ke1pQTEdfQ09MW3Jz dF19IgoKICAgICMgUHJpbnQgcmVwb3J0IGdhdGhlcmVkIHZpYSBzaGFkb3dpbmcKICAgIHByaW50 ICIke1pQTEdfUkVQT1JUU1ske3VzZXJ9LyR7cGx1Z2lufV19IgoKICAgICMgUHJpbnQgcmVwb3J0 IGdhdGhlcmVkIHZpYSAkZnVuY3Rpb25zLWRpZmZpbmcKICAgIFJFUExZPSIiCiAgICAtenBsZy1k aWZmLWZ1bmN0aW9ucyAiJHVzZXIvJHBsdWdpbiIgZGlmZgogICAgLXpwbGctZm9ybWF0LWZ1bmN0 aW9ucyAiJHVzZXIvJHBsdWdpbiIKICAgIFsgLW4gIiRSRVBMWSIgXSAmJiBwcmludCAiJHtaUExH X0NPTFtwXX1GdW5jdGlvbnMgY3JlYXRlZDoke1pQTEdfQ09MW3JzdF19IiQnXG4nIiRSRVBMWSIK CiAgICAjIFByaW50IHJlcG9ydCBnYXRoZXJlZCB2aWEgJG9wdGlvbnMtZGlmZmluZwogICAgUkVQ TFk9IiIKICAgIC16cGxnLWRpZmYtb3B0aW9ucyAiJHVzZXIvJHBsdWdpbiIgZGlmZgogICAgLXpw bGctZm9ybWF0LW9wdGlvbnMgIiR1c2VyLyRwbHVnaW4iCiAgICBbIC1uICIkUkVQTFkiIF0gJiYg cHJpbnQgIiR7WlBMR19DT0xbcF19T3B0aW9ucyBjaGFuZ2VkOiR7WlBMR19DT0xbcnN0XX0iJCdc biciJFJFUExZIgoKICAgICMgUHJpbnQgcmVwb3J0IGdhdGhlcmVkIHZpYSBlbnZpcm9ubWVudCBk aWZmaW5nCiAgICBSRVBMWT0iIgogICAgLXpwbGctZGlmZi1lbnYgIiR1c2VyLyRwbHVnaW4iIGRp ZmYKICAgIC16cGxnLWZvcm1hdC1lbnYgIiR1c2VyLyRwbHVnaW4iICIxIgogICAgWyAtbiAiJFJF UExZIiBdICYmIHByaW50ICIke1pQTEdfQ09MW3BdfVBBVEggZWxlbWVudHMgYWRkZWQ6JHtaUExH X0NPTFtyc3RdfSIkJ1xuJyIkUkVQTFkiCgogICAgUkVQTFk9IiIKICAgIC16cGxnLWZvcm1hdC1l bnYgIiR1c2VyLyRwbHVnaW4iICIyIgogICAgWyAtbiAiJFJFUExZIiBdICYmIHByaW50ICIke1pQ TEdfQ09MW3BdfUZQQVRIIGVsZW1lbnRzIGFkZGVkOiR7WlBMR19DT0xbcnN0XX0iJCdcbiciJFJF UExZIgoKICAgICMgUHJpbnQgcmVwb3J0IGdhdGhlcmVkIHZpYSBwYXJhbWV0ZXIgZGlmZmluZwog ICAgLXpwbGctZGlmZi1wYXJhbWV0ZXIgIiR1c2VyLyRwbHVnaW4iIGRpZmYKICAgIC16cGxnLWZv cm1hdC1wYXJhbWV0ZXIgIiR1c2VyLyRwbHVnaW4iCiAgICBbIC1uICIkUkVQTFkiIF0gJiYgcHJp bnQgIiR7WlBMR19DT0xbcF19VmFyaWFibGVzIGFkZGVkIG9yIHJlZGVmaW5lZDoke1pQTEdfQ09M W3JzdF19IiQnXG4nIiRSRVBMWSIKCiAgICAjIFByaW50IHdoYXQgY29tcGxldGlvbnMgcGx1Z2lu IGhhcwogICAgLXpwbGctZmluZC1jb21wbGV0aW9ucy1vZi1wbHVnaW4gIiR1c2VyIiAiJHBsdWdp biIKICAgIHR5cGVzZXQgLWEgY29tcGxldGlvbnMKICAgIGNvbXBsZXRpb25zPSggIiR7cmVwbHlb QF19IiApCgogICAgaWYgWyAiJHsjY29tcGxldGlvbnN9IiAtZ2UgIjEiIF07IHRoZW4KICAgICAg ICBwcmludCAiJHtaUExHX0NPTFtwXX1Db21wbGV0aW9uczoke1pQTEdfQ09MW3JzdF19IgogICAg ICAgIC16cGxnLWNoZWNrLXdoaWNoLWNvbXBsZXRpb25zLWFyZS1pbnN0YWxsZWQgIiR7Y29tcGxl dGlvbnNbQF19IgogICAgICAgIHR5cGVzZXQgLWEgaW5zdGFsbGVkCiAgICAgICAgaW5zdGFsbGVk PSggIiR7cmVwbHlbQF19IiApCgogICAgICAgIC16cGxnLWNoZWNrLXdoaWNoLWNvbXBsZXRpb25z LWFyZS1lbmFibGVkICIke2NvbXBsZXRpb25zW0BdfSIKICAgICAgICB0eXBlc2V0IC1hIGVuYWJs ZWQKICAgICAgICBlbmFibGVkPSggIiR7cmVwbHlbQF19IiApCgogICAgICAgIGludGVnZXIgY291 bnQ9IiR7I2NvbXBsZXRpb25zfSIgaWR4CiAgICAgICAgZm9yICgoIGlkeD0xOyBpZHggPD0gY291 bnQ7IGlkeCArKyApKTsgZG8KICAgICAgICAgICAgcHJpbnQgLW4gIiR7Y29tcGxldGlvbnNbaWR4 XTp0fSIKICAgICAgICAgICAgaWYgWyAiJHtpbnN0YWxsZWRbaWR4XX0iICE9ICIxIiBdOyB0aGVu CiAgICAgICAgICAgICAgICBwcmludCAtbiAiICR7WlBMR19DT0xbdW5pbnN0XX1bbm90IGluc3Rh bGxlZF0ke1pQTEdfQ09MW3JzdF19IgogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBp ZiBbICIke2VuYWJsZWRbaWR4XX0iID0gIjEiIF07IHRoZW4KICAgICAgICAgICAgICAgICAgICBw cmludCAtbiAiICR7WlBMR19DT0xbaW5mb119W2VuYWJsZWRdJHtaUExHX0NPTFtyc3RdfSIKICAg ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICBwcmludCAtbiAiICR7WlBMR19D T0xbZXJyb3JdfVtkaXNhYmxlZF0ke1pQTEdfQ09MW3JzdF19IgogICAgICAgICAgICAgICAgZmkK ICAgICAgICAgICAgZmkKICAgICAgICAgICAgcHJpbnQKICAgICAgICBkb25lCiAgICAgICAgcHJp bnQKICAgIGZpCn0KCi16cGxnLXNob3ctYWxsLXJlcG9ydHMoKSB7CiAgICBsb2NhbCBpCiAgICBm b3IgaSBpbiAiJHtaUExHX1JFR0lTVEVSRURfUExVR0lOU1tAXX0iOyBkbwogICAgICAgIFsgIiRp IiA9ICJfbG9jYWwvJFpQTEdfTkFNRSIgXSAmJiBjb250aW51ZQogICAgICAgIC16cGxnLXNob3ct cmVwb3J0ICIkaSIKICAgIGRvbmUKfQoKLXpwbGctc2hvdy1yZWdpc3RlcmVkLXBsdWdpbnMoKSB7 CiAgICB0eXBlc2V0IC1hIGZpbHRlcmVkCiAgICBsb2NhbCBrZXl3b3JkPSIkMSIKCiAgICAtenBs Zy1zYXZlLXNldC1leHRlbmRlZGdsb2IKICAgIGtleXdvcmQ9IiR7a2V5d29yZCMjICMjfSIKICAg IGtleXdvcmQ9IiR7a2V5d29yZCUlICMjfSIKICAgIGlmIFsgLW4gIiRrZXl3b3JkIiBdOyB0aGVu CiAgICAgICAgcHJpbnQgIkluc3RhbGxlZCBwbHVnaW5zIG1hdGNoaW5nICR7WlBMR19DT0xbaW5m b119JGtleXdvcmQke1pQTEdfQ09MW3JzdF19OiIKICAgICAgICBmaWx0ZXJlZD0oICIkeyhNKVpQ TEdfUkVHSVNURVJFRF9QTFVHSU5TW0BdOiMqJGtleXdvcmQqfSIgKQogICAgZWxzZQogICAgICAg IGZpbHRlcmVkPSggIiR7WlBMR19SRUdJU1RFUkVEX1BMVUdJTlNbQF19IiApCiAgICBmaQogICAg LXpwbGctcmVzdG9yZS1leHRlbmRlZGdsb2IKCiAgICBsb2NhbCBpCiAgICBmb3IgaSBpbiAiJHtm aWx0ZXJlZFtAXX0iOyBkbwogICAgICAgICMgU2tpcCBfbG9jYWwvcHNwcmludAogICAgICAgIFsg IiRpIiA9ICJfbG9jYWwvenBsdWdpbiIgXSAmJiBjb250aW51ZQogICAgICAgIC16cGxnLWFueS1j b2xvcmlmeS1hcy11c3BsMiAiJGkiCiAgICAgICAgIyBNYXJrIGxpZ2h0IGxvYWRzCiAgICAgICAg WyAiJHtaUExHX1JFR0lTVEVSRURfU1RBVEVTWyRpXX0iID0gIjEiIF0gJiYgUkVQTFk9IiRSRVBM WSAke1pQTEdfQ09MW2luZm9dfSoke1pQTEdfQ09MW3JzdF19IgogICAgICAgIHByaW50ICIkUkVQ TFkiCiAgICBkb25lCn0KCi16cGxnLWNlbmFibGUoKSB7CiAgICBsb2NhbCBjPSIkMSIKICAgIGM9 IiR7YyNffSIKCiAgICBsb2NhbCBjZmlsZT0iJHtaUExHX0NPTVBMRVRJT05TX0RJUn0vXyR7Y30i CiAgICBsb2NhbCBia3BmaWxlPSIke2NmaWxlOmh9LyRjIgoKICAgIGlmIFtbICEgLWUgIiRjZmls ZSIgJiYgISAtZSAiJGJrcGZpbGUiIF1dOyB0aGVuCiAgICAgICAgcHJpbnQgIiR7WlBMR19DT0xb ZXJyb3JdfU5vIHN1Y2ggY29tcGxldGlvbiBcYCRjJyR7WlBMR19DT0xbcnN0XX0iCiAgICAgICAg cmV0dXJuIDEKICAgIGZpCgogICAgIyBDaGVjayBpZiB0aGVyZSBpcyBubyBiYWNrdXAgZmlsZQog ICAgIyBUaGlzIGlzIHRyZWF0ZWQgYXMgaWYgdGhlIGNvbXBsZXRpb24gaXMgYWxyZWFkeSBlbmFi bGVkCiAgICBpZiBbICEgLWUgIiRia3BmaWxlIiBdOyB0aGVuCiAgICAgICAgcHJpbnQgIkNvbXBs ZXRpb24gJHtaUExHX0NPTFtpbmZvXX0kYyR7WlBMR19DT0xbcnN0XX0gYWxyZWFkeSBlbmFibGVk IgoKICAgICAgICAtenBsZy1jaGVjay1jb21wLWNvbnNpc3RlbmN5ICIkY2ZpbGUiICIkYmtwZmls ZSIgMAogICAgICAgIHJldHVybiAxCiAgICBmaQoKICAgICMgRGlzYWJsZWQsIGJ1dCBjb21wbGV0 aW9uIGZpbGUgYWxyZWFkeSBleGlzdHM/CiAgICBpZiBbIC1lICIkY2ZpbGUiIF07IHRoZW4KICAg ICAgICBwcmludCAiJHtaUExHX0NPTFtlcnJvcl19V2FybmluZzogY29tcGxldGlvbidzIGZpbGUg XGAke2NmaWxlOnR9JyBleGlzdHMsIHdpbGwgb3ZlcndyaXRlJHtaUExHX0NPTFtyc3RdfSIKICAg ICAgICBwcmludCAiJHtaUExHX0NPTFtlcnJvcl19Q29tcGxldGlvbiBpcyBhY3R1YWxseSBlbmFi bGVkIGFuZCB3aWxsIHJlLWVuYWJsZSBpdCBhZ2FpbiR7WlBMR19DT0xbcnN0XX0iCiAgICAgICAg LXpwbGctY2hlY2stY29tcC1jb25zaXN0ZW5jeSAiJGNmaWxlIiAiJGJrcGZpbGUiIDEKICAgICAg ICBjb21tYW5kIHJtIC1mICIkY2ZpbGUiCiAgICBlbHNlCiAgICAgICAgLXpwbGctY2hlY2stY29t cC1jb25zaXN0ZW5jeSAiJGNmaWxlIiAiJGJrcGZpbGUiIDAKICAgIGZpCgogICAgIyBFbmFibGUK ICAgIGNvbW1hbmQgbXYgIiRia3BmaWxlIiAiJGNmaWxlIiAjIG1vdmUgY29tcGxldGlvbidzIGJh Y2t1cCBmaWxlIGNyZWF0ZWQgd2hlbiBkaXNhYmxpbmcKCiAgICAjIFByZXBhcmUgcmVhZGxpbmsg Y29tbWFuZCBmb3IgZXN0YWJsaXNoaW5nIGNvbXBsZXRpb24ncyBvd25lcgogICAgLXpwbGctcHJl cGFyZS1yZWFkbGluZQogICAgIyBHZXQgY29tcGxldGlvbidzIG93bmluZyBwbHVnaW4KICAgIC16 cGxnLWdldC1jb21wbGV0aW9uLW93bmVyLXVzcGwyY29sICIkY2ZpbGUiICIkUkVQTFkiCgogICAg cHJpbnQgIkVuYWJsZWQgJHtaUExHX0NPTFtpbmZvXX0kYyR7WlBMR19DT0xbcnN0XX0gY29tcGxl dGlvbiBiZWxvbmdpbmcgdG8gJFJFUExZIgoKICAgIHJldHVybiAwCn0KCi16cGxnLWNkaXNhYmxl KCkgewogICAgbG9jYWwgYz0iJDEiCiAgICBjPSIke2MjX30iCgogICAgbG9jYWwgY2ZpbGU9IiR7 WlBMR19DT01QTEVUSU9OU19ESVJ9L18ke2N9IgogICAgbG9jYWwgYmtwZmlsZT0iJHtjZmlsZTpo fS8kYyIKCiAgICBpZiBbWyAhIC1lICIkY2ZpbGUiICYmICEgLWUgIiRia3BmaWxlIiBdXTsgdGhl bgogICAgICAgIHByaW50ICIke1pQTEdfQ09MW2Vycm9yXX1ObyBzdWNoIGNvbXBsZXRpb24gXGAk Yycke1pQTEdfQ09MW3JzdF19IgogICAgICAgIHJldHVybiAxCiAgICBmaQoKICAgICMgQ2hlY2sg aWYgaXQncyBhbHJlYWR5IGRpc2FibGVkCiAgICAjIE5vdCBleGlzdGluZyAiJGNmaWxlIiBzYXlz IHRoYXQKICAgIGlmIFtbICEgLWUgIiRjZmlsZSIgXV07IHRoZW4KICAgICAgICBwcmludCAiQ29t cGxldGlvbiAke1pQTEdfQ09MW2luZm9dfSRjJHtaUExHX0NPTFtyc3RdfSBhbHJlYWR5IGRpc2Fi bGVkIgoKICAgICAgICAtenBsZy1jaGVjay1jb21wLWNvbnNpc3RlbmN5ICIkY2ZpbGUiICIkYmtw ZmlsZSIgMAogICAgICAgIHJldHVybiAxCiAgICBmaQoKICAgICMgTm8gZGlzYWJsZSwgYnV0IGJr cGZpbGUgZXhpc3RzPwogICAgaWYgWyAtZSAiJGJrcGZpbGUiIF07IHRoZW4KICAgICAgICBwcmlu dCAiJHtaUExHX0NPTFtlcnJvcl19V2FybmluZzogY29tcGxldGlvbidzIGJhY2t1cCBmaWxlIFxg JHtia3BmaWxlOnR9JyBhbHJlYWR5IGV4aXN0cywgd2lsbCBvdmVyd3JpdGUke1pQTEdfQ09MW3Jz dF19IgogICAgICAgIC16cGxnLWNoZWNrLWNvbXAtY29uc2lzdGVuY3kgIiRjZmlsZSIgIiRia3Bm aWxlIiAxCiAgICAgICAgY29tbWFuZCBybSAtZiAiJGJrcGZpbGUiCiAgICBlbHNlCiAgICAgICAg LXpwbGctY2hlY2stY29tcC1jb25zaXN0ZW5jeSAiJGNmaWxlIiAiJGJrcGZpbGUiIDAKICAgIGZp CgogICAgIyBEaXNhYmxlCiAgICBjb21tYW5kIG12ICIkY2ZpbGUiICIkYmtwZmlsZSIKCiAgICAj IFByZXBhcmUgcmVhZGxpbmsgY29tbWFuZCBmb3IgZXN0YWJsaXNoaW5nIGNvbXBsZXRpb24ncyBv d25lcgogICAgLXpwbGctcHJlcGFyZS1yZWFkbGluZQogICAgIyBHZXQgY29tcGxldGlvbidzIG93 bmluZyBwbHVnaW4KICAgIC16cGxnLWdldC1jb21wbGV0aW9uLW93bmVyLXVzcGwyY29sICIkYmtw ZmlsZSIgIiRSRVBMWSIKCiAgICBwcmludCAiRGlzYWJsZWQgJHtaUExHX0NPTFtpbmZvXX0kYyR7 WlBMR19DT0xbcnN0XX0gY29tcGxldGlvbiBiZWxvbmdpbmcgdG8gJFJFUExZIgoKICAgIHJldHVy biAwCn0KCiMgJDEgLSBwbHVnaW4gbmFtZSwgcG9zc2libHkgZ2l0aHViIHBhdGgKLXpwbGctbG9h ZCAoKSB7CiAgICAtenBsZy1hbnktdG8tdXNlci1wbHVnaW4gIiQxIiAiJDIiCiAgICBsb2NhbCB1 c2VyPSIke3JlcGx5Wy0yXX0iIHBsdWdpbj0iJHtyZXBseVstMV19IgogICAgbG9jYWwgbGlnaHQ9 IiQzIgoKICAgIC16cGxnLXJlZ2lzdGVyLXBsdWdpbiAiJHVzZXIiICIkcGx1Z2luIiAiJGxpZ2h0 IgogICAgaWYgISAtenBsZy1zZXR1cC1wbHVnaW4tZGlyICIkdXNlciIgIiRwbHVnaW4iOyB0aGVu CiAgICAgICAgLXpwbGctdW5yZWdpc3Rlci1wbHVnaW4gIiR1c2VyIiAiJHBsdWdpbiIKICAgIGVs c2UKICAgICAgICAtenBsZy1sb2FkLXBsdWdpbiAiJHVzZXIiICIkcGx1Z2luIiAiJGxpZ2h0Igog ICAgZmkKfQoKIyAkMSAtIHVzZXItLS1wbHVnaW4sIHVzZXIvcGx1Z2luLCB1c2VyIChpZiAkMiBn aXZlbiksIG9yIHBsdWdpbiAoaWYgJDIgZW1wdHkpCiMgJDIgLSBwbHVnaW4gKGlmICQxIC0gdXNl ciAtIGdpdmVuKQojCiMgMS4gVW5mdW5jdGlvbiBmdW5jdGlvbnMgY3JlYXRlZCBieSBwbHVnaW4K IyAyLiBEZWxldGUgYmluZGtleXMKIyAzLiBEZWxldGUgY3JlYXRlZCBac3R5bGVzCiMgNC4gUmVz dG9yZSBvcHRpb25zCiMgNS4gUmVzdG9yZSAob3IganVzdCB1bmFsaWFzPykgYWxpYXNlcwojIDYu IFJlc3RvcmUgWmxlIHN0YXRlCiMgNy4gQ2xlYW4gdXAgRlBBVEggYW5kIFBBVEgKIyA4LiBEZWxl dGUgY3JlYXRlZCB2YXJpYWJsZXMKIyA5LiBGb3JnZXQgdGhlIHBsdWdpbgotenBsZy11bmxvYWQo KSB7CiAgICAtenBsZy1hbnktdG8tdXNlci1wbHVnaW4gIiQxIiAiJDIiCiAgICBsb2NhbCB1c3Bs Mj0iJHtyZXBseVstMl19LyR7cmVwbHlbLTFdfSIgdXNlcj0iJHtyZXBseVstMl19IiBwbHVnaW49 IiR7cmVwbHlbLTFdfSIKCiAgICAjIEtTSF9BUlJBWVMgaW1tdW5pdHkKICAgIGludGVnZXIgY29y cmVjdD0wCiAgICBbWyAtbyAiS1NIX0FSUkFZUyIgXV0gJiYgY29ycmVjdD0xCgogICAgIyBBbGxv dyB1bmxvYWQgZm9yIGRlYnVnIHVzZXIKICAgIGlmIFsgIiR1c3BsMiIgIT0gIiRaUExHX0RFQlVH X1VTUEwyIiBdOyB0aGVuCiAgICAgICAgLXpwbGctZXhpc3RzLW1lc3NhZ2UgIiQxIiAiJDIiIHx8 IHJldHVybiAxCiAgICBmaQoKICAgIC16cGxnLWFueS1jb2xvcmlmeS1hcy11c3BsMiAiJDEiICIk MiIKICAgIGxvY2FsIHVzcGwyY29sPSIkUkVQTFkiCgogICAgIyBTdG9yZSByZXBvcnQgb2YgdGhl IHBsdWdpbiBpbiB2YXJpYWJsZSBMQVNUUkVQT1JUCiAgICBMQVNUUkVQT1JUPWAtenBsZy1zaG93 LXJlcG9ydCAiJDEiICIkMiJgCgogICAgIwogICAgIyAxLiBVbmZ1bmN0aW9uCiAgICAjCgogICAg LXpwbGctZGlmZi1mdW5jdGlvbnMgIiR1c3BsMiIgZGlmZgogICAgdHlwZXNldCAtYSBmdW5jCiAg ICBmdW5jPSggIiR7KHopWlBMR19GVU5DVElPTlNbJHVzcGwyXX0iICkKICAgIGxvY2FsIGYKICAg IGZvciBmIGluICIkeyhvbilmdW5jW0BdfSI7IGRvCiAgICAgICAgWyAteiAiJGYiIF0gJiYgY29u dGludWUKICAgICAgICBmPSIkeyhRKWZ9IgogICAgICAgIHByaW50ICJEZWxldGluZyBmdW5jdGlv biAkZiIKICAgICAgICB1bmZ1bmN0aW9uICIkZiIKICAgIGRvbmUKCiAgICAjCiAgICAjIDIuIERl bGV0ZSBkb25lIGJpbmRrZXlzCiAgICAjCgogICAgdHlwZXNldCAtYSBzdHJpbmdfd2lkZ2V0CiAg ICBzdHJpbmdfd2lkZ2V0PSggIiR7KHopWlBMR19CSU5ES0VZU1skdXNwbDJdfSIgKQogICAgbG9j YWwgc3cKICAgIGZvciBzdyBpbiAiJHsoT2Epc3RyaW5nX3dpZGdldFtAXX0iOyBkbwogICAgICAg IFsgLXogIiRzdyIgXSAmJiBjb250aW51ZQogICAgICAgICMgUmVtb3ZlIG9uZSBsZXZlbCBvZiBx dW90aW5nIHRvIHNwbGl0IHVzaW5nICh6KQogICAgICAgIHN3PSIkeyhRKXN3fSIKICAgICAgICB0 eXBlc2V0IC1hIHN3X2FycgogICAgICAgIHN3X2Fycj0oICIkeyh6KXN3fSIgKQoKICAgICAgICAj IFJlbW92ZSBvbmUgbGV2ZWwgb2YgcXVvdGluZyB0byBwYXNzIHRvIGJpbmRrZXkKICAgICAgICBs b2NhbCBzd19hcnIxPSIkeyhRKXN3X2FyclsxLWNvcnJlY3RdfSIgIyBLZXlzCiAgICAgICAgbG9j YWwgc3dfYXJyMj0iJHsoUSlzd19hcnJbMi1jb3JyZWN0XX0iICMgV2lkZ2V0CiAgICAgICAgbG9j YWwgc3dfYXJyMz0iJHsoUSlzd19hcnJbMy1jb3JyZWN0XX0iICMgT3B0aW9uYWwgLU0gb3IgLUEg b3IgLU4KICAgICAgICBsb2NhbCBzd19hcnI0PSIkeyhRKXN3X2Fycls0LWNvcnJlY3RdfSIgIyBP cHRpb25hbCBtYXAgbmFtZQogICAgICAgIGxvY2FsIHN3X2FycjU9IiR7KFEpc3dfYXJyWzUtY29y cmVjdF19IiAjIE9wdGlvbmFsIC1SIChub3Qgd2l0aCAtQSwgLU4pCgogICAgICAgIGlmIFtbICIk c3dfYXJyMyIgPSAiLU0iICYmICIkc3dfYXJyNSIgIT0gIi1SIiBdXTsgdGhlbgogICAgICAgICAg ICBwcmludCAiRGVsZXRpbmcgYmluZGtleSAkc3dfYXJyMSAkc3dfYXJyMiAke1pQTEdfQ09MW2lu Zm9dfW1hcHBlZCB0byAkc3dfYXJyNCR7WlBMR19DT0xbcnN0XX0iCiAgICAgICAgICAgIGJpbmRr ZXkgLU0gIiRzd19hcnI0IiAtciAiJHN3X2FycjEiCiAgICAgICAgZWxpZiBbWyAiJHN3X2FycjMi ID0gIi1NIiAmJiAiJHN3X2FycjUiID0gIi1SIiBdXTsgdGhlbgogICAgICAgICAgICBwcmludCAi RGVsZXRpbmcgJHtaUExHX0NPTFtpbmZvXX1yYW5nZSR7WlBMR19DT0xbcnN0XX0gYmluZGtleSAk c3dfYXJyMSAkc3dfYXJyMiAke1pQTEdfQ09MW2luZm9dfW1hcHBlZCB0byAkc3dfYXJyNCR7WlBM R19DT0xbcnN0XX0iCiAgICAgICAgICAgIGJpbmRrZXkgLU0gIiRzd19hcnI0IiAtUnIgIiRzd19h cnIxIgogICAgICAgIGVsaWYgW1sgIiRzd19hcnIzIiAhPSAiLU0iICYmICIkc3dfYXJyNSIgPSAi LVIiIF1dOyB0aGVuCiAgICAgICAgICAgIHByaW50ICJEZWxldGluZyAke1pQTEdfQ09MW2luZm9d fXJhbmdlJHtaUExHX0NPTFtyc3RdfSBiaW5ka2V5ICRzd19hcnIxICRzd19hcnIyIiAKICAgICAg ICAgICAgYmluZGtleSAtUnIgIiRzd19hcnIxIgogICAgICAgIGVsaWYgW1sgIiRzd19hcnIzIiA9 ICItQSIgXV07IHRoZW4KICAgICAgICAgICAgcHJpbnQgIkxpbmtpbmcgYmFja3VwLVxgbWFpbicg a2V5bWFwIFxgJHN3X2FycjQnIGJhY2sgdG8gXGBtYWluJyIKICAgICAgICAgICAgYmluZGtleSAt QSAiJHN3X2FycjQiICJtYWluIgogICAgICAgIGVsaWYgW1sgIiRzd19hcnIzIiA9ICItTiIgXV07 IHRoZW4KICAgICAgICAgICAgcHJpbnQgIkRlbGV0aW5nIGtleW1hcCBcYCRzd19hcnI0JyIKICAg ICAgICAgICAgYmluZGtleSAtRCAiJHN3X2FycjQiCiAgICAgICAgZWxzZQogICAgICAgICAgICBw cmludCAiRGVsZXRpbmcgYmluZGtleSAkc3dfYXJyMSAkc3dfYXJyMiIKICAgICAgICAgICAgYmlu ZGtleSAtciAiJHN3X2FycjEiCiAgICAgICAgZmkKICAgIGRvbmUKCiAgICAjCiAgICAjIDMuIERl bGV0ZSBjcmVhdGVkIFpzdHlsZXMKICAgICMKCiAgICB0eXBlc2V0IC1hIHBhdHRlcm5fc3R5bGUK ICAgIHBhdHRlcm5fc3R5bGU9KCAiJHsoeilaUExHX1pTVFlMRVNbJHVzcGwyXX0iICkKICAgIGxv Y2FsIHBzCiAgICBmb3IgcHMgaW4gIiR7KE9hKXBhdHRlcm5fc3R5bGVbQF19IjsgZG8KICAgICAg ICBbIC16ICIkcHMiIF0gJiYgY29udGludWUKICAgICAgICAjIFJlbW92ZSBvbmUgbGV2ZWwgb2Yg cXVvdGluZyB0byBzcGxpdCB1c2luZyAoeikKICAgICAgICBwcz0iJHsoUSlwc30iCiAgICAgICAg dHlwZXNldCAtYSBwc19hcnIKICAgICAgICBwc19hcnI9KCAiJHsoeilwc30iICkKCiAgICAgICAg IyBSZW1vdmUgb25lIGxldmVsIG9mIHF1b3RpbmcgdG8gcGFzcyB0byB6c3R5bGUKICAgICAgICBs b2NhbCBwc19hcnIxPSIkeyhRKXBzX2FyclsxLWNvcnJlY3RdfSIKICAgICAgICBsb2NhbCBwc19h cnIyPSIkeyhRKXBzX2FyclsyLWNvcnJlY3RdfSIKCiAgICAgICAgcHJpbnQgIkRlbGV0aW5nIHpz dHlsZSAkcHNfYXJyMSAkcHNfYXJyMiIKCiAgICAgICAgenN0eWxlIC1kICIkcHNfYXJyMSIgIiRw c19hcnIyIgogICAgZG9uZQoKICAgICMKICAgICMgNC4gUmVzdG9yZSBjaGFuZ2VkIG9wdGlvbnMK ICAgICMKCiAgICAjIFBhcmFub2lkLCBkb24ndCB3YW50IGJhZCBrZXkvdmFsdWUgcGFpciBlcnJv cgogICAgLXpwbGctZGlmZi1vcHRpb25zICIkdXNwbDIiIGRpZmYKICAgIGludGVnZXIgZW1wdHk9 MAogICAgLXpwbGctc2F2ZS1zZXQtZXh0ZW5kZWRnbG9iCiAgICBbWyAiJHtaUExHX09QVElPTlNb JHVzcGwyXX0iICE9ICpbJCchIFx0J10qIF1dICYmIGVtcHR5PTEKICAgIC16cGxnLXJlc3RvcmUt ZXh0ZW5kZWRnbG9iCgogICAgaWYgKCggZW1wdHkgIT0gMSApKTsgdGhlbgogICAgICAgIHR5cGVz ZXQgLUEgb3B0cwogICAgICAgIG9wdHM9KCAiJHsoeilaUExHX09QVElPTlNbJHVzcGwyXX0iICkK ICAgICAgICBsb2NhbCBrCiAgICAgICAgZm9yIGsgaW4gIiR7KGtvbilvcHRzW0BdfSI7IGRvCiAg ICAgICAgICAgICMgSW50ZXJuYWwgb3B0aW9ucwogICAgICAgICAgICBbICIkayIgPSAicGh5c2lj YWwiIF0gJiYgY29udGludWUKCiAgICAgICAgICAgIGlmIFsgIiR7b3B0c1ska119IiA9ICJvbiIg XTsgdGhlbgogICAgICAgICAgICAgICAgcHJpbnQgIlNldHRpbmcgb3B0aW9uICRrIgogICAgICAg ICAgICAgICAgc2V0b3B0ICIkayIKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcHJp bnQgIlVuc2V0dGluZyBvcHRpb24gJGsiCiAgICAgICAgICAgICAgICB1bnNldG9wdCAiJGsiCiAg ICAgICAgICAgIGZpCiAgICAgICAgZG9uZQogICAgZmkKCiAgICAjCiAgICAjIDUuIERlbGV0ZSBh bGlhc2VzCiAgICAjCgogICAgdHlwZXNldCAtYSBhbmFtZV9hdmFsdWUKICAgIGFuYW1lX2F2YWx1 ZT0oICIkeyh6KVpQTEdfQUxJQVNFU1skdXNwbDJdfSIgKQogICAgbG9jYWwgbnYKICAgIGZvciBu diBpbiAiJHsoT2EpYW5hbWVfYXZhbHVlW0BdfSI7IGRvCiAgICAgICAgWyAteiAiJG52IiBdICYm IGNvbnRpbnVlCiAgICAgICAgIyBSZW1vdmUgb25lIGxldmVsIG9mIHF1b3RpbmcgdG8gc3BsaXQg dXNpbmcgKHopCiAgICAgICAgbnY9IiR7KFEpbnZ9IgogICAgICAgIHR5cGVzZXQgLWEgbnZfYXJy CiAgICAgICAgbnZfYXJyPSggIiR7KHopbnZ9IiApCgogICAgICAgICMgUmVtb3ZlIG9uZSBsZXZl bCBvZiBxdW90aW5nIHRvIHBhc3MgdG8gdW5hbGlhcwogICAgICAgIGxvY2FsIG52X2FycjE9IiR7 KFEpbnZfYXJyWzEtY29ycmVjdF19IgogICAgICAgIGxvY2FsIG52X2FycjI9IiR7KFEpbnZfYXJy WzItY29ycmVjdF19IgogICAgICAgIGxvY2FsIG52X2FycjM9IiR7KFEpbnZfYXJyWzMtY29ycmVj dF19IgoKICAgICAgICBpZiBbICIkbnZfYXJyMyIgPSAiLXMiIF07IHRoZW4KICAgICAgICAgICAg cHJpbnQgIlJlbW92aW5nICR7WlBMR19DT0xbaW5mb119c3VmZml4JHtaUExHX0NPTFtyc3RdfSBh bGlhcyAke252X2FycjF9PSR7bnZfYXJyMn0iCiAgICAgICAgICAgIHVuYWxpYXMgLXMgIiRudl9h cnIxIgogICAgICAgIGVsaWYgWyAiJG52X2FycjMiID0gIi1nIiBdOyB0aGVuCiAgICAgICAgICAg IHByaW50ICJSZW1vdmluZyAke1pQTEdfQ09MW2luZm9dfWdsb2JhbCR7WlBMR19DT0xbcnN0XX0g YWxpYXMgJHtudl9hcnIxfT0ke252X2FycjJ9IgogICAgICAgICAgICB1bmFsaWFzICIkeyhxKW52 X2FycjF9IgogICAgICAgIGVsc2UKICAgICAgICAgICAgcHJpbnQgIlJlbW92aW5nIGFsaWFzICR7 bnZfYXJyMX09JHtudl9hcnIyfSIKICAgICAgICAgICAgdW5hbGlhcyAiJG52X2FycjEiCiAgICAg ICAgZmkKICAgIGRvbmUKCiAgICAjCiAgICAjIDYuIFJlc3RvcmUgWmxlIHN0YXRlCiAgICAjCgog ICAgdHlwZXNldCAtYSBkZWxldGVfd2lkZ2V0cwogICAgZGVsZXRlX3dpZGdldHM9KCAiJHsoeila UExHX1dJREdFVFNfREVMRVRFWyR1c3BsMl19IiApCiAgICBsb2NhbCB3aWQKICAgIGZvciB3aWQg aW4gIiR7KE9hKWRlbGV0ZV93aWRnZXRzW0BdfSI7IGRvCiAgICAgICAgWyAteiAiJHdpZCIgXSAm JiBjb250aW51ZQogICAgICAgIHdpZD0iJHsoUSl3aWR9IgogICAgICAgIGlmIFsgIiR7WlBMR19a TEVfSE9PS1NfTElTVFskd2lkXX0iID0gIjEiIF07IHRoZW4KICAgICAgICAgICAgcHJpbnQgIlJl bW92aW5nIFpsZSBob29rIFxgJHdpZCciCiAgICAgICAgZWxzZQogICAgICAgICAgICBwcmludCAi UmVtb3ZpbmcgWmxlIHdpZGdldCBcYCR3aWQnIgogICAgICAgIGZpCiAgICAgICAgemxlIC1EICIk d2lkIgogICAgZG9uZQoKICAgIHR5cGVzZXQgLWEgcmVzdG9yZV93aWRnZXRzCiAgICByZXN0b3Jl X3dpZGdldHM9KCAiJHsoeilaUExHX1dJREdFVFNfU0FWRURbJHVzcGwyXX0iICkKICAgIGZvciB3 aWQgaW4gIiR7KE9hKXJlc3RvcmVfd2lkZ2V0c1tAXX0iOyBkbwogICAgICAgIFsgLXogIiR3aWQi IF0gJiYgY29udGludWUKICAgICAgICB3aWQ9IiR7KFEpd2lkfSIKICAgICAgICB0eXBlc2V0IC1h IG9yaWdfc2F2ZWQKICAgICAgICBvcmlnX3NhdmVkPSggIiR7KHopd2lkfSIgKQoKICAgICAgICBs b2NhbCBvcmlnX3NhdmVkMT0iJHsoUSlvcmlnX3NhdmVkWzEtY29ycmVjdF19IiAjIE9yaWdpbmFs IHdpZGdldAogICAgICAgIGxvY2FsIG9yaWdfc2F2ZWQyPSIkeyhRKW9yaWdfc2F2ZWRbMi1jb3Jy ZWN0XX0iICMgU2F2ZWQgd2lkZ2V0CgogICAgICAgIHByaW50ICJSZXN0b3JpbmcgWmxlIHdpZGdl dCAkb3JpZ19zYXZlZDEiCiAgICAgICAgemxlIC1BICIkb3JpZ19zYXZlZDIiICIkb3JpZ19zYXZl ZDEiCiAgICAgICAgemxlIC1EICIkb3JpZ19zYXZlZDIiCiAgICBkb25lCgogICAgIwogICAgIyA3 LiBDbGVhbiB1cCBGUEFUSCBhbmQgUEFUSAogICAgIwoKICAgIC16cGxnLWRpZmYtZW52ICIkdXNw bDIiIGRpZmYKCiAgICAjIEhhdmUgdG8gaXRlcmF0ZSBvdmVyICRwYXRoIGVsZW1lbnRzIGFuZAog ICAgIyBza2lwIHRob3NlIHRoYXQgd2VyZSBhZGRlZCBieSB0aGUgcGx1Z2luCiAgICB0eXBlc2V0 IC1hIG5ldyBlbGVtIHAKICAgIGVsZW09KCAiJHsoeilaUExHX1BBVEhbJHVzcGwyXX0iICkKICAg IGZvciBwIGluICIke3BhdGhbQF19IjsgZG8KICAgICAgICBbIC16ICIke2VsZW1bKHIpJHBdfSIg XSAmJiBuZXcrPSggIiRwIiApIHx8IHsKICAgICAgICAgICAgcHJpbnQgIlJlbW92aW5nIFBBVEgg ZWxlbWVudCAke1pQTEdfQ09MW2luZm9dfSRwJHtaUExHX0NPTFtyc3RdfSIKICAgICAgICAgICAg WyAtZCAiJHAiIF0gfHwgcHJpbnQgIiR7WlBMR19DT0xbZXJyb3JdfVdhcm5pbmc6JHtaUExHX0NP TFtyc3RdfSBpdCBkaWRuJ3QgZXhpc3Qgb24gZGlzayIKICAgICAgICB9CiAgICBkb25lCiAgICBw YXRoPSggIiR7bmV3W0BdfSIgKQoKICAgICMgVGhlIHNhbWUgZm9yICRmcGF0aAogICAgZWxlbT0o ICIkeyh6KVpQTEdfRlBBVEhbJHVzcGwyXX0iICkKICAgIG5ldz0oICkKICAgIGZvciBwIGluICIk e2ZwYXRoW0BdfSI7IGRvCiAgICAgICAgWyAteiAiJHtlbGVtWyhyKSRwXX0iIF0gJiYgbmV3Kz0o ICIkcCIgKSB8fCB7CiAgICAgICAgICAgIHByaW50ICJSZW1vdmluZyBGUEFUSCBlbGVtZW50ICR7 WlBMR19DT0xbaW5mb119JHAke1pQTEdfQ09MW3JzdF19IgogICAgICAgICAgICBbIC1kICIkcCIg XSB8fCBwcmludCAiJHtaUExHX0NPTFtlcnJvcl19V2FybmluZzoke1pQTEdfQ09MW3JzdF19IGl0 IGRpZG4ndCBleGlzdCBvbiBkaXNrIgogICAgICAgIH0KICAgIGRvbmUKICAgIGZwYXRoPSggIiR7 bmV3W0BdfSIgKQoKICAgICMKICAgICMgOC4gRGVsZXRlIGNyZWF0ZWQgdmFyaWFibGVzCiAgICAj CgogICAgIyBQYXJhbm9pZCBmb3IgdHlwZSBvZiBlbXB0eSB2YWx1ZSwKICAgICMgaS5lLiBpbmNs dWRlIHdoaXRlIHNwYWNlcyBhcyBlbXB0eQogICAgLXpwbGctZGlmZi1wYXJhbWV0ZXIgIiR1c3Bs MiIgZGlmZgogICAgZW1wdHk9MAogICAgLXpwbGctc2F2ZS1zZXQtZXh0ZW5kZWRnbG9iCiAgICBb WyAiJHtaUExHX1BBUkFNRVRFUlNfUE9TVFskdXNwbDJdfSIgIT0gKlskJyEgXHQnXSogXV0gJiYg ZW1wdHk9MQogICAgLXpwbGctcmVzdG9yZS1leHRlbmRlZGdsb2IKCiAgICBpZiAoKCBlbXB0eSAh PSAxICkpOyB0aGVuCiAgICAgICAgdHlwZXNldCAtQSBlbGVtX3ByZSBlbGVtX3Bvc3QKICAgICAg ICBlbGVtX3ByZT0oICIkeyh6KVpQTEdfUEFSQU1FVEVSU19QUkVbJHVzcGwyXX0iICkKICAgICAg ICBlbGVtX3Bvc3Q9KCAiJHsoeilaUExHX1BBUkFNRVRFUlNfUE9TVFskdXNwbDJdfSIgKQoKICAg ICAgICAjIEZpbmQgdmFyaWFibGVzIGNyZWF0ZWQgb3IgbW9kaWZpZWQKICAgICAgICBmb3IgayBp biAiJHsoayllbGVtX3Bvc3RbQF19IjsgZG8KICAgICAgICAgICAgaz0iJHsoUSlrfSIKICAgICAg ICAgICAgbG9jYWwgdjE9IiR7KFEpZWxlbV9wcmVbJGtdfSIgCiAgICAgICAgICAgIGxvY2FsIHYy PSIkeyhRKWVsZW1fcG9zdFska119IgoKICAgICAgICAgICAgIyAiIiBtZWFucyBhIHZhcmlhYmxl IHdhcyBkZWxldGVkLCBub3QgY3JlYXRlZC9jaGFuZ2VkCiAgICAgICAgICAgIGlmIFtbICIkdjIi ICE9ICJcIlwiIiBdXTsgdGhlbgogICAgICAgICAgICAgICAgIyBEb24ndCB1bnNldCByZWFkb25s eSB2YXJpYWJsZXMKICAgICAgICAgICAgICAgIFtbICIke3YxLy1yZWFkb25seS99IiAhPSAiJHYx IiB8fCAiJHt2Mi8tcmVhZG9ubHkvfSIgIT0gIiR2MiIgXV0gJiYgY29udGludWUKCiAgICAgICAg ICAgICAgICAjIERvbid0IHVuc2V0IGFycmF5cyBtYW5hZ2VkIGJ5IGFkZC16c2gtaG9vawogICAg ICAgICAgICAgICAgIyBUT0RPOiByZW1lbWJlciBhbmQgcmVtb3ZlIGhvb2tzCiAgICAgICAgICAg ICAgICBjYXNlICIkayIgaW4KICAgICAgICAgICAgICAgICAgICAoY2hwd2RfZnVuY3Rpb25zfHBy ZWNtZF9mdW5jdGlvbnN8cHJlZXhlY19mdW5jdGlvbnN8cGVyaW9kaWNfZnVuY3Rpb25zfHpzaGFk ZGhpc3RvcnlfZnVuY3Rpb25zfHpzaGV4aXRfZnVuY3Rpb25zfHpzaF9kaXJlY3RvcnlfbmFtZV9m dW5jdGlvbnMpCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAg ICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICBlc2FjCgogICAgICAgICAgICAgICAgIyBEb24n dCB1bnNldCByZWRlZmluZWQgdmFyaWFibGVzLCBvbmx5IG5ld2x5IGRlZmluZWQKICAgICAgICAg ICAgICAgICMgIiIgbWVhbnMgdmFyaWFibGUgZGlkbid0IGV4aXN0IGJlZm9yZSBwbHVnaW4gbG9h ZAogICAgICAgICAgICAgICAgIyAoZGlkbid0IGhhdmUgYSB0eXBlKQogICAgICAgICAgICAgICAg aWYgWyAiJHYxIiA9ICJcIlwiIiBdOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgcHJpbnQgIlVu c2V0dGluZyB2YXJpYWJsZSAkayIKICAgICAgICAgICAgICAgICAgICB1bnNldCAiJGsiCiAgICAg ICAgICAgICAgICBmaQogICAgICAgICAgICBmaQogICAgICAgIGRvbmUKICAgIGZpCgogICAgIwog ICAgIyA5LiBGb3JnZXQgdGhlIHBsdWdpbgogICAgIwoKICAgIGlmIFsgIiR1c3BsMiIgPSAiJFpQ TEdfREVCVUdfVVNQTDIiIF07IHRoZW4KICAgICAgICAtenBsZy1jbGVhci1kZWJ1Zy1yZXBvcnQK ICAgICAgICBwcmludCAiZHRyYWNlIHJlcG9ydCBzYXZlZCB0byBcJExBU1RSRVBPUlQiCiAgICBl bHNlCiAgICAgICAgcHJpbnQgIlVucmVnaXN0ZXJpbmcgcGx1Z2luICR1c3BsMmNvbCIKICAgICAg ICAtenBsZy11bnJlZ2lzdGVyLXBsdWdpbiAiJHVzZXIiICIkcGx1Z2luIgogICAgICAgIC16cGxn LWNsZWFyLXJlcG9ydC1mb3IgIiR1c2VyIiAiJHBsdWdpbiIKICAgICAgICBwcmludCAiUGx1Z2lu J3MgcmVwb3J0IHNhdmVkIHRvIFwkTEFTVFJFUE9SVCIKICAgIGZpCgp9CgojIERvd25sb2FkcyBh bmQgc291cmNlcyBhIHNpbmdsZSBmaWxlCiMgSWYgdXJsIGlzIGRldGVjdGVkIHRvIGJlIGdpdGh1 Yi5jb20sIHRoZW4gY29udmVyc2lvbiB0byAicmF3IiB1cmwgbWF5IG9jY3VyCi16cGxnLWxvYWQt c25pcHBldCgpIHsKICAgIGxvY2FsIHVybD0iJDEiCiAgICBsb2NhbCBmb3JjZT0iJDIiCgogICAg aWYgWyAiJHVybCIgPSAiLWYiIF07IHRoZW4KICAgICAgICBsb2NhbCB0bXAKICAgICAgICB0bXA9 IiR1cmwiCiAgICAgICAgdXJsPSIkZm9yY2UiCiAgICAgICAgZm9yY2U9IiR0bXAiCiAgICBmaQoK ICAgICMgQ2hlY2sgZm9yIG5vLXJhdyBnaXRodWIgdXJsIGFuZCBmb3IgdXJsIGF0IGFsbAogICAg aW50ZWdlciBpc19ub19yYXdfZ2l0aHViPTAgaXNfdXJsCiAgICAoKSB7CiAgICAgICAgbG9jYWwg LWEgbWF0Y2ggbWJlZ2luIG1lbmQKICAgICAgICBsb2NhbCBNQVRDSDsgaW50ZWdlciBNQkVHSU4g TUVORAogICAgICAgIHNldG9wdCBsb2NhbG9wdGlvbnMgZXh0ZW5kZWRnbG9iCgogICAgICAgICMg UmVtb3ZlIGxlYWRpbmcgd2hpdGVzcGFjZQogICAgICAgIHVybD0iJHt1cmwjIiR7dXJsJSVbISAk J1x0J10qfSJ9IgoKICAgICAgICBbWyAiJHVybCIgPSAqZ2l0aHViLmNvbSogJiYgISAiJHVybCIg PSAqL3Jhdy8qIF1dICYmIGlzX25vX3Jhd19naXRodWI9MQogICAgICAgIFtbICIkdXJsIiA9IGh0 dHA6KiB8fCAiJHVybCIgPSBodHRwczoqIF1dICYmIGlzX3VybD0xCiAgICB9CgogICAgIyBDb25z dHJ1Y3QgYSBsb2NhbCBkaXJlY3RvcnkgbmFtZSBmcm9tIHdoYXQncyBpbiB1cmwKICAgIGxvY2Fs IGZpbGVuYW1lPSIke3VybDp0fSIKICAgIGZpbGVuYW1lPSIke2ZpbGVuYW1lJSVcPyp9IgogICAg bG9jYWwgbG9jYWxfZGlyPSIkdXJsIgogICAgbG9jYWxfZGlyPSIke2xvY2FsX2RpciNodHRwOi8v fSIKICAgIGxvY2FsX2Rpcj0iJHtsb2NhbF9kaXIjaHR0cHM6Ly99IgogICAgbG9jYWxfZGlyPSIk e2xvY2FsX2Rpci8uLy0tRE9ULS19IgogICAgbG9jYWxfZGlyPSIke2xvY2FsX2Rpci8vXC8vLS1T TEFTSC0tfSIKICAgIGxvY2FsX2Rpcj0iJHtsb2NhbF9kaXIlJVw/Kn0iCgogICAgaWYgWyAhIC1k ICIkWlBMR19TTklQUEVUU19ESVIvJGxvY2FsX2RpciIgXTsgdGhlbgogICAgICAgIHByaW50ICIk e1pQTEdfQ09MW2luZm9dfVNldHRpbmcgdXAgc25pcHBldCAke1pQTEdfQ09MW3BdfSRmaWxlbmFt ZSR7WlBMR19DT0xbcnN0XX0iCiAgICAgICAgY29tbWFuZCBta2RpciAtcCAiJFpQTEdfU05JUFBF VFNfRElSLyRsb2NhbF9kaXIiCiAgICBmaQoKICAgIFpQTEdfU05JUFBFVFNbJHVybF09IiRmaWxl bmFtZSIKCiAgICAjIENoYW5nZSB0aGUgdXJsIHRvIHBvaW50IHRvIHJhdyBnaXRodWIgY29udGVu dCBpZiBpdCBpc24ndCBsaWtlIHRoYXQKICAgIGlmICgoIGlzX25vX3Jhd19naXRodWIgKSk7IHRo ZW4KICAgICAgICB1cmw9IiR7dXJsL1wvYmxvYlwvLy9yYXcvfSIKICAgICAgICB1cmw9IiR7dXJs fT9yYXc9MSIKICAgIGZpCgogICAgIyBEb3dubG9hZCBvciBjb3B5IHRoZSBmaWxlCiAgICBpZiBb WyAhIC1mICIkWlBMR19TTklQUEVUU19ESVIvJGxvY2FsX2Rpci8kZmlsZW5hbWUiIHx8ICIkZm9y Y2UiID0gIi1mIiBdXQogICAgdGhlbgogICAgICAgIGlmICgoIGlzX3VybCApKQogICAgICAgIHRo ZW4KICAgICAgICAgICAgIyBVUkwKICAgICAgICAoCiAgICAgICAgICAgIGNkICIkWlBMR19TTklQ UEVUU19ESVIvJGxvY2FsX2RpciIKICAgICAgICAgICAgY29tbWFuZCBybSAtZiAiJGZpbGVuYW1l IgogICAgICAgICAgICBwcmludCAiRG93bmxvYWRpbmcgJGZpbGVuYW1lLi4uIgogICAgICAgICAg ICAtenBsZy1kb3dubG9hZC1maWxlLXN0ZG91dCAiJHVybCIgPiAiJGZpbGVuYW1lIgogICAgICAg ICkKICAgICAgICBlbHNlCiAgICAgICAgICAgICMgRmlsZQogICAgICAgICAgICBjb21tYW5kIHJt IC1mICIkWlBMR19TTklQUEVUU19ESVIvJGxvY2FsX2Rpci8kZmlsZW5hbWUiCiAgICAgICAgICAg IHByaW50ICJDb3B5aW5nICRmaWxlbmFtZS4uLiIKICAgICAgICAgICAgY29tbWFuZCBjcCAtdiAi JHVybCIgIiRaUExHX1NOSVBQRVRTX0RJUi8kbG9jYWxfZGlyLyRmaWxlbmFtZSIKICAgICAgICBm aQogICAgZmkKCiAgICAjIFNvdXJjZSB0aGUgZmlsZQogICAgYnVpbHRpbiBzb3VyY2UgIiRaUExH X1NOSVBQRVRTX0RJUi8kbG9jYWxfZGlyLyRmaWxlbmFtZSIKfQoKIyBVcGRhdGVzIGdpdmVuIHBs dWdpbgotenBsZy11cGRhdGUtb3Itc3RhdHVzKCkgewogICAgbG9jYWwgc3Q9IiQxIgogICAgLXpw bGctYW55LXRvLXVzZXItcGx1Z2luICIkMiIgIiQzIgogICAgbG9jYWwgdXNlcj0iJHtyZXBseVst Ml19IiBwbHVnaW49IiR7cmVwbHlbLTFdfSIKCiAgICAtenBsZy1leGlzdHMtcGh5c2ljYWxseS1t ZXNzYWdlICIkdXNlciIgIiRwbHVnaW4iIHx8IHJldHVybiAxCgogICAgaWYgWyAiJHN0IiA9ICJz dGF0dXMiIF07IHRoZW4KICAgICAgICAoIGNkICIkWlBMR19QTFVHSU5TX0RJUi8ke3VzZXJ9LS0t JHtwbHVnaW59IiA7IGdpdCBzdGF0dXMgKQogICAgZWxzZQogICAgICAgICggY2QgIiRaUExHX1BM VUdJTlNfRElSLyR7dXNlcn0tLS0ke3BsdWdpbn0iIDsgZ2l0IHB1bGwgKQogICAgZmkKfQoKLXpw bGctdXBkYXRlLW9yLXN0YXR1cy1hbGwoKSB7CiAgICBzZXRvcHQgbG9jYWxvcHRpb25zIG51bGxn bG9iCgogICAgbG9jYWwgc3Q9IiQxIgogICAgbG9jYWwgcmVwbyBwZCB1c2VyIHBsdWdpbgoKICAg IGlmIFsgIiRzdCIgPSAic3RhdHVzIiBdOyB0aGVuCiAgICAgICAgcHJpbnQgIiR7WlBMR19DT0xb ZXJyb3JdfVdhcm5pbmc6JHtaUExHX0NPTFtyc3RdfSBzdGF0dXMgZG9uZSBhbHNvIGZvciB1bmxv YWRlZCBwbHVnaW5zIgogICAgZWxzZQogICAgICAgIHByaW50ICIke1pQTEdfQ09MW2Vycm9yXX1X YXJuaW5nOiR7WlBMR19DT0xbcnN0XX0gdXBkYXRpbmcgYWxzbyB1bmxvYWRlZCBwbHVnaW5zIgog ICAgZmkKCiAgICBmb3IgcmVwbyBpbiAiJFpQTEdfUExVR0lOU19ESVIiLyo7IGRvCiAgICAgICAg cGQ9IiR7cmVwbzp0fSIKCiAgICAgICAgIyBUd28gc3BlY2lhbCBjYXNlcwogICAgICAgIFsgIiRw ZCIgPSAiX2xvY2FsLS0tenBsdWdpbiIgXSAmJiBjb250aW51ZQogICAgICAgIFsgIiRwZCIgPSAi Y3VzdG9tIiBdICYmIGNvbnRpbnVlCgogICAgICAgIC16cGxnLWFueS1jb2xvcmlmeS1hcy11c3Bs MiAiJHBkIgoKICAgICAgICAjIE11c3QgYmUgYSBnaXQgcmVwb3NpdG9yeQogICAgICAgIGlmIFsg ISAtZCAiJHJlcG8vLmdpdCIgXTsgdGhlbgogICAgICAgICAgICBwcmludCAiXG4kUkVQTFkgbm90 IGEgZ2l0IHJlcG9zaXRvcnkiCiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgZmkKCiAgICAg ICAgaWYgWyAiJHN0IiA9ICJzdGF0dXMiIF07IHRoZW4KICAgICAgICAgICAgcHJpbnQgIlxuU3Rh dHVzIGZvciBwbHVnaW4gJFJFUExZIgogICAgICAgICAgICAoIGNkICIkcmVwbyI7IGdpdCBzdGF0 dXMgKQogICAgICAgIGVsc2UKICAgICAgICAgICAgcHJpbnQgIlxuVXBkYXRpbmcgcGx1Z2luICRS RVBMWSIKICAgICAgICAgICAgKCBjZCAiJHJlcG8iOyBnaXQgcHVsbCApCiAgICAgICAgZmkKICAg IGRvbmUKfQoKIyBVcGRhdGVzIFpwbHVnaW4KLXpwbGctc2VsZi11cGRhdGUoKSB7CiAgICAoIGNk ICIkWlBMR19ESVIiIDsgZ2l0IHB1bGwgKQp9CgojIFNob3dzIG92ZXJhbGwgc3RhdHVzCi16cGxn LXNob3ctenN0YXR1cygpIHsKICAgIHNldG9wdCBsb2NhbG9wdGlvbnMgbnVsbGdsb2IKCiAgICBs b2NhbCBpbmZvYz0iJHtaUExHX0NPTFtpbmZvXX0iCgogICAgcHJpbnQgIlpwbHVnaW4ncyBtYWlu IGRpcmVjdG9yeTogJHtpbmZvY30kWlBMR19IT01FJHtyZXNldF9jb2xvcn0iCiAgICBwcmludCAi WnBsdWdpbidzIGJpbmFyeSBkaXJlY3Rvcnk6ICR7aW5mb2N9JFpQTEdfRElSJHtyZXNldF9jb2xv cn0iCiAgICBwcmludCAiUGx1Z2luIGRpcmVjdG9yeTogJHtpbmZvY30kWlBMR19QTFVHSU5TX0RJ UiR7cmVzZXRfY29sb3J9IgogICAgcHJpbnQgIkNvbXBsZXRpb25zIGRpcmVjdG9yeTogJHtpbmZv Y30kWlBMR19DT01QTEVUSU9OU19ESVIke3Jlc2V0X2NvbG9yfSIKCiAgICAjIFdpdGhvdXQgX3ps b2NhbC96cGx1Z2luCiAgICBwcmludCAiTG9hZGVkIHBsdWdpbnM6ICR7aW5mb2N9JCgoICR7I1pQ TEdfUkVHSVNURVJFRF9QTFVHSU5TfSAtIDEgKSkke3Jlc2V0X2NvbG9yfSIKCiAgICAjIENvdW50 IGxpZ2h0LWxvYWRlZCBwbHVnaW5zCiAgICBpbnRlZ2VyIGxpZ2h0PTAKICAgIGxvY2FsIHMKICAg IGZvciBzIGluICIke1pQTEdfUkVHSVNURVJFRF9TVEFURVNbQF19IjsgZG8KICAgICAgICBbICIk cyIgPSAxIF0gJiYgKCggbGlnaHQgKysgKSkKICAgIGRvbmUKICAgICMgV2l0aG91dCBfemxvY2Fs L3pwbHVnaW4KICAgIHByaW50ICJMaWdodCBsb2FkZWQ6ICR7aW5mb2N9JCgoIGxpZ2h0IC0gMSAp KSR7cmVzZXRfY29sb3J9IgoKICAgICMgRG93bmxvYWRlZCBwbHVnaW5zLCB3aXRob3V0IF96bG9j YWwvenBsdWdpbiwgY3VzdG9tCiAgICB0eXBlc2V0IC1hIHBsdWdpbnMKICAgIHBsdWdpbnM9KCAi JFpQTEdfUExVR0lOU19ESVIiLyogKQogICAgcHJpbnQgIkRvd25sb2FkZWQgcGx1Z2luczogJHtp bmZvY30keyNwbHVnaW5zfSR7cmVzZXRfY29sb3J9IgoKICAgICMgTnVtYmVyIG9mIGVuYWJsZWQg Y29tcGxldGlvbnMsIHdpdGggX3psb2NhbC96cGx1Z2luCiAgICB0eXBlc2V0IC1hIGNvbXBsZXRp b25zCiAgICBjb21wbGV0aW9ucz0oICIkWlBMR19DT01QTEVUSU9OU19ESVIiL18qICkKICAgIHBy aW50ICJFbmFibGVkIGNvbXBsZXRpb25zOiAke2luZm9jfSR7I2NvbXBsZXRpb25zfSR7cmVzZXRf Y29sb3J9IgoKICAgICMgTnVtYmVyIG9mIGRpc2FibGVkIGNvbXBsZXRpb25zLCB3aXRoIF96bG9j YWwvenBsdWdpbgogICAgY29tcGxldGlvbnM9KCAiJFpQTEdfQ09NUExFVElPTlNfRElSIi9bXl9d KiApCiAgICBwcmludCAiRGlzYWJsZWQgY29tcGxldGlvbnM6ICR7aW5mb2N9JHsjY29tcGxldGlv bnN9JHtyZXNldF9jb2xvcn0iCgogICAgIyBOdW1iZXIgb2YgY29tcGxldGlvbnMgZXhpc3Rpbmcg aW4gYWxsIHBsdWdpbnMKICAgIGNvbXBsZXRpb25zPSggIiRaUExHX1BMVUdJTlNfRElSIi8qL18q ICkKICAgIHByaW50ICJDb21wbGV0aW9ucyBhdmFpbGFibGUgb3ZlcmFsbDogJHtpbmZvY30keyNj b21wbGV0aW9uc30ke3Jlc2V0X2NvbG9yfSIKCiAgICAjIEVudW1lcmF0ZSBzbmlwcGV0cyBsb2Fk ZWQKICAgIHByaW50ICJTbmlwcGV0cyBsb2FkZWQ6ICR7aW5mb2N9JHsoajosIDpvbnYpWlBMR19T TklQUEVUU30ke3Jlc2V0X2NvbG9yfSIKCiAgICAjIE51bWJlciBvZiBjb21waWxlZCBwbHVnaW5z CiAgICB0eXBlc2V0IC1hIG1hdGNoZXMgbQogICAgaW50ZWdlciBjb3VudD0wCiAgICBtYXRjaGVz PSggJFpQTEdfUExVR0lOU19ESVIvKi8qLnp3YyApCgogICAgbG9jYWwgY3VyX3BsdWdpbj0iIiB1 c3BsMQogICAgZm9yIG0gaW4gIiR7bWF0Y2hlc1tAXX0iOyBkbwogICAgICAgIHVzcGwxPSIkeyR7 bTpofTp0fSIKCiAgICAgICAgaWYgWyAiJGN1cl9wbHVnaW4iICE9ICIkdXNwbDEiIF07IHRoZW4K ICAgICAgICAgICAgKCggY291bnQgKysgKSkKICAgICAgICAgICAgY3VyX3BsdWdpbj0iJHVzcGwx IgogICAgICAgIGZpCiAgICBkb25lCgogICAgcHJpbnQgIkNvbXBpbGVkIHBsdWdpbnM6ICR7aW5m b2N9JGNvdW50JHtyZXNldF9jb2xvcn0iCn0KCgojIEdldHMgbGlzdCBvZiBjb21waWxlZCBwbHVn aW5zCi16cGxnLWNvbXBpbGVkKCkgewogICAgc2V0b3B0IGxvY2Fsb3B0aW9ucyBudWxsZ2xvYgoK ICAgIHR5cGVzZXQgLWEgbWF0Y2hlcyBtCiAgICBtYXRjaGVzPSggJFpQTEdfUExVR0lOU19ESVIv Ki8qLnp3YyApCgogICAgaWYgWyAiJHsjbWF0Y2hlc30iIC1lcSAiMCIgXTsgdGhlbgogICAgICAg IHByaW50ICJObyBjb21waWxlZCBwbHVnaW5zIgogICAgICAgIHJldHVybiAwCiAgICBmaQoKICAg IGxvY2FsIGN1cl9wbHVnaW49IiIgdXNwbDEKICAgIGZvciBtIGluICIke21hdGNoZXNbQF19Ijsg ZG8KICAgICAgICBmaWxlPSIke206dH0iCiAgICAgICAgdXNwbDE9IiR7JHttOmh9OnR9IgogICAg ICAgIC16cGxnLWFueS10by11c2VyLXBsdWdpbiAiJHVzcGwxIgogICAgICAgIHVzZXI9IiR7cmVw bHlbLTJdfSIgcGx1Z2luPSIke3JlcGx5Wy0xXX0iCgogICAgICAgIGlmIFsgIiRjdXJfcGx1Z2lu IiAhPSAiJHVzcGwxIiBdOyB0aGVuCiAgICAgICAgICAgIFsgLW4gIiRjdXJfcGx1Z2luIiBdICYm IHByaW50ICMgbmV3bGluZQogICAgICAgICAgICAtenBsZy1hbnktY29sb3JpZnktYXMtdXNwbDIg IiR1c2VyIiAiJHBsdWdpbiIKICAgICAgICAgICAgcHJpbnQgIiRSRVBMWToiCiAgICAgICAgICAg IGN1cl9wbHVnaW49IiR1c3BsMSIKICAgICAgICBmaQoKICAgICAgICBwcmludCAiJGZpbGUiCiAg ICBkb25lCn0KCi16cGxnLWNvbXBpbGUtdW5jb21waWxlLWFsbCgpIHsKICAgIHNldG9wdCBsb2Nh bG9wdGlvbnMgbnVsbGdsb2IKCiAgICBsb2NhbCBjb21waWxlPSIkMSIKCiAgICB0eXBlc2V0IC1h IHBsdWdpbnMKICAgIHBsdWdpbnM9KCAiJFpQTEdfUExVR0lOU19ESVIiLyogKQoKICAgIGxvY2Fs IHAgdXNlciBwbHVnaW4KICAgIGZvciBwIGluICIke3BsdWdpbnNbQF19IjsgZG8KICAgICAgICBb WyAiJHtwOnR9IiA9ICJjdXN0b20iIHx8ICIke3A6dH0iID0gIl9sb2NhbC0tLXpwbHVnaW4iIF1d ICYmIGNvbnRpbnVlCgogICAgICAgIC16cGxnLWFueS10by11c2VyLXBsdWdpbiAiJHtwOnR9Igog ICAgICAgIHVzZXI9IiR7cmVwbHlbLTJdfSIgcGx1Z2luPSIke3JlcGx5Wy0xXX0iCgogICAgICAg IC16cGxnLWFueS1jb2xvcmlmeS1hcy11c3BsMiAiJHVzZXIiICIkcGx1Z2luIgogICAgICAgIHBy aW50ICIkUkVQTFk6IgoKICAgICAgICBpZiBbICIkY29tcGlsZSIgPSAiMSIgXTsgdGhlbgogICAg ICAgICAgICAtenBsZy1jb21waWxlLXBsdWdpbiAiJHVzZXIiICIkcGx1Z2luIgogICAgICAgIGVs c2UKICAgICAgICAgICAgLXpwbGctdW5jb21waWxlLXBsdWdpbiAiJHVzZXIiICIkcGx1Z2luIiAi MSIKICAgICAgICBmaQogICAgZG9uZQp9CgojIH19fQoKIwojIERlYnVnIHJlcG9ydGluZyBmdW5j dGlvbnMsIHVzZXIgZXhwb3NlZCB7e3sKIwoKIyBTdGFydHMgZGVidWcgcmVwb3J0aW5nLCBkaWZm aW5nCi16cGxnLWRlYnVnLXN0YXJ0KCkgewogICAgWlBMR19ERUJVR19BQ1RJVkU9IjEiCgogICAg LXpwbGctZGlmZi1mdW5jdGlvbnMgIiRaUExHX0RFQlVHX1VTUEwyIiBiZWdpbgogICAgLXpwbGct ZGlmZi1vcHRpb25zICIkWlBMR19ERUJVR19VU1BMMiIgYmVnaW4KICAgIC16cGxnLWRpZmYtZW52 ICIkWlBMR19ERUJVR19VU1BMMiIgYmVnaW4KICAgIC16cGxnLWRpZmYtcGFyYW1ldGVyICIkWlBM R19ERUJVR19VU1BMMiIgYmVnaW4KCiAgICAjIEZ1bGwgc2hhZG93aW5nIG9uCiAgICAtenBsZy1z aGFkb3ctb24gIiIKfQoKIyBFbmRzIGRlYnVnIHJlcG9ydGluZywgZGlmZmluZwotenBsZy1kZWJ1 Zy1zdG9wKCkgewogICAgWlBMR19ERUJVR19BQ1RJVkU9IjAiCgogICAgIyBTaGFkb3dpbmcgZnVs bHkgb2ZmCiAgICAtenBsZy1zaGFkb3ctb2ZmICIiCgogICAgIyBHYXRoZXIgZW5kIGRhdGEgbm93 LCBmb3IgZGlmZmluZyBsYXRlcgogICAgLXpwbGctZGlmZi1wYXJhbWV0ZXIgIiRaUExHX0RFQlVH X1VTUEwyIiBlbmQKICAgIC16cGxnLWRpZmYtZW52ICIkWlBMR19ERUJVR19VU1BMMiIgZW5kCiAg ICAtenBsZy1kaWZmLW9wdGlvbnMgIiRaUExHX0RFQlVHX1VTUEwyIiBlbmQKICAgIC16cGxnLWRp ZmYtZnVuY3Rpb25zICIkWlBMR19ERUJVR19VU1BMMiIgZW5kCn0KCi16cGxnLXNob3ctZGVidWct cmVwb3J0KCkgewogICAgIyBEaXNwbGF5IHJlcG9ydCBvZiBnaXZlbiBwbHVnaW4KICAgIC16cGxn LXNob3ctcmVwb3J0ICIkWlBMR19ERUJVR19VU1BMMiIKfQoKLXpwbGctY2xlYXItZGVidWctcmVw b3J0KCkgewogICAgLXpwbGctY2xlYXItcmVwb3J0LWZvciAiJFpQTEdfREVCVUdfVVNQTDIiCn0K CiMgUmV2ZXJ0cyBjaGFuZ2VzIHJlY29yZGVkIHRocm91Z2ggZHRyYWNlCi16cGxnLWRlYnVnLXVu bG9hZCgpIHsKICAgIGlmIFsgIiRaUExHX0RFQlVHX0FDVElWRSIgPSAiMSIgXTsgdGhlbgogICAg ICAgIHByaW50ICJEdHJhY2UgaXMgc3RpbGwgYWN0aXZlLCBlbmQgaXQgd2l0aCBcYGRzdG9wJyIK ICAgIGVsc2UKICAgICAgICAtenBsZy11bmxvYWQgIiRaUExHX0RFQlVHX1VTRVIiICIkWlBMR19E RUJVR19QTFVHSU4iCiAgICBmaQp9CgojIH19fQphbGlhcyB6cGw9enBsdWdpbiB6cGxnPXpwbHVn aW4KCiMgTWFpbiBmdW5jdGlvbiB3aXRoIHN1YmNvbW1hbmRzCnpwbHVnaW4oKSB7CiAgICAtenBs Zy1zYXZlLWVudGVyLXN0YXRlCgogICAgIyBBbGwgZnVuY3Rpb25zIGZyb20gbm93IG9uIHdpbGwg bm90IGNoYW5nZSB0aGVzZSB2YWx1ZXMKICAgICMgZ2xvYmFsbHkuIEZ1bmN0aW9ucyB0aGF0IGRv bid0IGRvICJzb3VyY2UiIG9mIHBsdWdpbgogICAgIyB3aWxsIGJlIGFibGUgdG8gc2V0b3B0IGxv Y2Fsb3B0aW9ucyBleHRlbmRlZGdsb2IKICAgIGxvY2FsIC1hIG1hdGNoIG1iZWdpbiBtZW5kCiAg ICBsb2NhbCBNQVRDSDsgaW50ZWdlciBNQkVHSU4gTUVORAoKICAgIC16cGxnLXNldC1kZXNpcmVk LXNoZWxsLXN0YXRlCgogICAgLXpwbGctcHJlcGFyZS1ob21lCgogICAgIyBTaW11bGF0ZSBleGlz dGVuY2Ugb2YgX2xvY2FsL3pwbHVnaW4gbW9kdWxlCiAgICAjIFRoaXMgd2lsbCBhbGxvdyB0byBj dW5pbnN0YWxsIG9mIGl0cyBjb21wbGV0aW9uCiAgICBaUExHX1JFR0lTVEVSRURfUExVR0lOUys9 KCAiX2xvY2FsLyRaUExHX05BTUUiICkKICAgIFpQTEdfUkVHSVNURVJFRF9QTFVHSU5TPSggIiR7 KHUpWlBMR19SRUdJU1RFUkVEX1BMVUdJTlNbQF19IiApCiAgICAjIF96cGx1Z2luIG1vZHVsZSBp cyBsb2FkZWQgbGlnaHRseQogICAgWlBMR19SRUdJU1RFUkVEX1NUQVRFU1tfbG9jYWwvJFpQTEdf TkFNRV09IjEiCgogICAgY2FzZSAiJDEiIGluCiAgICAgICAoenN0YXR1cykKICAgICAgICAgICAt enBsZy1zaG93LXpzdGF0dXMKICAgICAgICAgICA7OwogICAgICAgKHNlbGYtdXBkYXRlKQogICAg ICAgICAgIC16cGxnLXNlbGYtdXBkYXRlCiAgICAgICAgICAgOzsKICAgICAgIChsb2FkKQogICAg ICAgICAgIGlmIFtbIC16ICIkMiIgJiYgLXogIiQzIiBdXTsgdGhlbgogICAgICAgICAgICAgICBw cmludCAiQXJndW1lbnQgbmVlZGVkLCB0cnkgaGVscCIKICAgICAgICAgICAgICAgcmV0dXJuIDEK ICAgICAgICAgICBmaQogICAgICAgICAgICMgTG9hZCBwbHVnaW4gZ2l2ZW4gaW4gdXNwbDIgb3Ig InVzZXIgcGx1Z2luIiBmb3JtYXQKICAgICAgICAgICAjIFBvc3NpYmx5IGNsb25lIGZyb20gZ2l0 aHViLCBhbmQgaW5zdGFsbCBjb21wbGV0aW9ucwogICAgICAgICAgIC16cGxnLWxvYWQgIiQyIiAi JDMiCiAgICAgICAgICAgOzsKICAgICAgIChsaWdodCkKICAgICAgICAgICBpZiBbWyAteiAiJDIi ICYmIC16ICIkMyIgXV07IHRoZW4KICAgICAgICAgICAgICAgcHJpbnQgIkFyZ3VtZW50IG5lZWRl ZCwgdHJ5IGhlbHAiCiAgICAgICAgICAgICAgIHJldHVybiAxCiAgICAgICAgICAgZmkKICAgICAg ICAgICAjIFRoaXMgaXMgbGlnaHQgbG9hZCwgd2l0aG91dCB0cmFja2luZywgb25seSB3aXRoCiAg ICAgICAgICAgIyBjbGVhbiBGUEFUSCAoYXV0b2xvYWQgaXMgc3RpbGwgYmVpbmcgc2hhZG93ZWQp CiAgICAgICAgICAgLXpwbGctbG9hZCAiJDIiICIkMyIgImxpZ2h0IgogICAgICAgICAgIDs7CiAg ICAgICAodW5sb2FkKQogICAgICAgICAgIGlmIFtbIC16ICIkMiIgJiYgLXogIiQzIiBdXTsgdGhl bgogICAgICAgICAgICAgICBwcmludCAiQXJndW1lbnQgbmVlZGVkLCB0cnkgaGVscCIKICAgICAg ICAgICAgICAgcmV0dXJuIDEKICAgICAgICAgICBmaQogICAgICAgICAgICMgVW5sb2FkIGdpdmVu IHBsdWdpbi4gQ2xvbmVkIGRpcmVjdG9yeSByZW1haW5zIGludGFjdAogICAgICAgICAgICMgc28g YXMgYXJlIGNvbXBsZXRpb25zCiAgICAgICAgICAgLXpwbGctdW5sb2FkICIkMiIgIiQzIgogICAg ICAgICAgIDs7CiAgICAgICAoc25pcHBldCkKICAgICAgICAgICAtenBsZy1sb2FkLXNuaXBwZXQg IiQyIiAiJDMiCiAgICAgICAgICAgOzsKICAgICAgICh1cGRhdGUpCiAgICAgICAgICAgLXpwbGct dXBkYXRlLW9yLXN0YXR1cyAidXBkYXRlIiAiJDIiICIkMyIKICAgICAgICAgICA7OwogICAgICAg KHVwZGF0ZS1hbGwpCiAgICAgICAgICAgLXpwbGctdXBkYXRlLW9yLXN0YXR1cy1hbGwgInVwZGF0 ZSIKICAgICAgICAgICA7OwogICAgICAgKHN0YXR1cykKICAgICAgICAgICAtenBsZy11cGRhdGUt b3Itc3RhdHVzICJzdGF0dXMiICIkMiIgIiQzIgogICAgICAgICAgIDs7CiAgICAgICAoc3RhdHVz LWFsbCkKICAgICAgICAgICAtenBsZy11cGRhdGUtb3Itc3RhdHVzLWFsbCAic3RhdHVzIgogICAg ICAgICAgIDs7CiAgICAgICAocmVwb3J0KQogICAgICAgICAgIGlmIFtbIC16ICIkMiIgJiYgLXog IiQzIiBdXTsgdGhlbgogICAgICAgICAgICAgICBwcmludCAiQXJndW1lbnQgbmVlZGVkLCB0cnkg aGVscCIKICAgICAgICAgICAgICAgcmV0dXJuIDEKICAgICAgICAgICBmaQogICAgICAgICAgICMg RGlzcGxheSByZXBvcnQgb2YgZ2l2ZW4gcGx1Z2luCiAgICAgICAgICAgLXpwbGctc2hvdy1yZXBv cnQgIiQyIiAiJDMiCiAgICAgICAgICAgOzsKICAgICAgIChhbGwtcmVwb3J0cykKICAgICAgICAg ICAjIERpc3BsYXkgcmVwb3J0cyBvZiBhbGwgcGx1Z2lucwogICAgICAgICAgIC16cGxnLXNob3ct YWxsLXJlcG9ydHMKICAgICAgICAgICA7OwogICAgICAgKGxvYWRlZHxsaXN0KQogICAgICAgICAg ICMgU2hvdyBsaXN0IG9mIGxvYWRlZCBwbHVnaW5zCiAgICAgICAgICAgLXpwbGctc2hvdy1yZWdp c3RlcmVkLXBsdWdpbnMgIiQyIgogICAgICAgICAgIDs7CiAgICAgICAoY2xpc3R8Y29tcGxldGlv bnMpCiAgICAgICAgICAgIyBTaG93IGluc3RhbGxlZCwgZW5hYmxlZCBvciBkaXNhYmxlZCwgY29t cGxldGlvbnMKICAgICAgICAgICAtenBsZy1zaG93LWNvbXBsZXRpb25zCiAgICAgICAgICAgOzsK ICAgICAgIChjZGlzYWJsZSkKICAgICAgICAgICBpZiBbWyAteiAiJDIiIF1dOyB0aGVuCiAgICAg ICAgICAgICAgIHByaW50ICJBcmd1bWVudCBuZWVkZWQsIHRyeSBoZWxwIgogICAgICAgICAgICAg ICByZXR1cm4gMQogICAgICAgICAgIGZpCiAgICAgICAgICAgbG9jYWwgZj0iXyR7MiNffSIKICAg ICAgICAgICAjIERpc2FibGUgY29tcGxldGlvbiBnaXZlbiBieSBjb21wbGV0aW9uIGZ1bmN0aW9u IG5hbWUKICAgICAgICAgICAjIHdpdGggb3Igd2l0aG91dCBsZWFkaW5nICJfIiwgZS5nLiAiY3Ai LCAiX2NwIgogICAgICAgICAgIGlmIC16cGxnLWNkaXNhYmxlICIkZiI7IHRoZW4KICAgICAgICAg ICAgICAgLXpwbGctZm9yZ2V0LWNvbXBsZXRpb24gIiRmIgogICAgICAgICAgICAgICBwcmludCAi SW5pdGlhbGl6aW5nIGNvbXBsZXRpb24gc3lzdGVtIChjb21waW5pdCkuLi4iCiAgICAgICAgICAg ICAgIGNvbXBpbml0CiAgICAgICAgICAgZmkKICAgICAgICAgICA7OwogICAgICAgKGNlbmFibGUp CiAgICAgICAgICAgaWYgW1sgLXogIiQyIiBdXTsgdGhlbgogICAgICAgICAgICAgICBwcmludCAi QXJndW1lbnQgbmVlZGVkLCB0cnkgaGVscCIKICAgICAgICAgICAgICAgcmV0dXJuIDEKICAgICAg ICAgICBmaQogICAgICAgICAgIGxvY2FsIGY9Il8kezIjX30iCiAgICAgICAgICAgIyBFbmFibGUg Y29tcGxldGlvbiBnaXZlbiBieSBjb21wbGV0aW9uIGZ1bmN0aW9uIG5hbWUKICAgICAgICAgICAj IHdpdGggb3Igd2l0aG91dCBsZWFkaW5nICJfIiwgZS5nLiAiY3AiLCAiX2NwIgogICAgICAgICAg IGlmIC16cGxnLWNlbmFibGUgIiRmIjsgdGhlbgogICAgICAgICAgICAgICAtenBsZy1mb3JnZXQt Y29tcGxldGlvbiAiJGYiCiAgICAgICAgICAgICAgIHByaW50ICJJbml0aWFsaXppbmcgY29tcGxl dGlvbiBzeXN0ZW0gKGNvbXBpbml0KS4uLiIKICAgICAgICAgICAgICAgY29tcGluaXQKICAgICAg ICAgICBmaQogICAgICAgICAgIDs7CiAgICAgICAoY3JlaW5zdGFsbCkKICAgICAgICAgICBpZiBb WyAteiAiJDIiICYmIC16ICIkMyIgXV07IHRoZW4KICAgICAgICAgICAgICAgcHJpbnQgIkFyZ3Vt ZW50IG5lZWRlZCwgdHJ5IGhlbHAiCiAgICAgICAgICAgICAgIHJldHVybiAxCiAgICAgICAgICAg ZmkKICAgICAgICAgICAjIEluc3RhbGxzIGNvbXBsZXRpb25zIGZvciBwbHVnaW4uIEVuYWJsZXMg dGhlbSBhbGwuIEl0J3MgYQogICAgICAgICAgICMgcmVpbnN0YWxsYXRpb24sIHRodXMgZXZlcnkg b2JzdGFjbGUgZ2V0cyBvdmVyd3JpdHRlbiBvciByZW1vdmVkCiAgICAgICAgICAgLXpwbGctaW5z dGFsbC1jb21wbGV0aW9ucyAiJDIiICIkMyIgIjEiCiAgICAgICAgICAgcHJpbnQgIkluaXRpYWxp emluZyBjb21wbGV0aW9uIChjb21waW5pdCkuLi4iCiAgICAgICAgICAgY29tcGluaXQKICAgICAg ICAgICA7OwogICAgICAgKGN1bmluc3RhbGwpCiAgICAgICAgICAgaWYgW1sgLXogIiQyIiAmJiAt eiAiJDMiIF1dOyB0aGVuCiAgICAgICAgICAgICAgIHByaW50ICJBcmd1bWVudCBuZWVkZWQsIHRy eSBoZWxwIgogICAgICAgICAgICAgICByZXR1cm4gMQogICAgICAgICAgIGZpCiAgICAgICAgICAg IyBVbmluc3RhbGxzIGNvbXBsZXRpb25zIGZvciBwbHVnaW4KICAgICAgICAgICAtenBsZy11bmlu c3RhbGwtY29tcGxldGlvbnMgIiQyIiAiJDMiCiAgICAgICAgICAgcHJpbnQgIkluaXRpYWxpemlu ZyBjb21wbGV0aW9uIChjb21waW5pdCkuLi4iCiAgICAgICAgICAgY29tcGluaXQKICAgICAgICAg ICA7OwogICAgICAgKGNzZWFyY2gpCiAgICAgICAgICAgLXpwbGctc2VhcmNoLWNvbXBsZXRpb25z CiAgICAgICAgICAgOzsKICAgICAgIChjb21waW5pdCkKICAgICAgICAgICAjIFJ1bnMgY29tcGlu aXQgaW4gYSB3YXkgdGhhdCBlbnN1cmVzCiAgICAgICAgICAgIyByZWxvYWQgb2YgcGx1Z2lucycg Y29tcGxldGlvbnMKICAgICAgICAgICAtenBsZy1jb21waW5pdAogICAgICAgICAgIDs7CiAgICAg ICAoZHN0YXJ0fGR0cmFjZSkKICAgICAgICAgICAtenBsZy1kZWJ1Zy1zdGFydAogICAgICAgICAg IDs7CiAgICAgICAoZHN0b3ApCiAgICAgICAgICAgLXpwbGctZGVidWctc3RvcAogICAgICAgICAg IDs7CiAgICAgICAoZHJlcG9ydCkKICAgICAgICAgICAtenBsZy1zaG93LWRlYnVnLXJlcG9ydAog ICAgICAgICAgIDs7CiAgICAgICAoZGNsZWFyKQogICAgICAgICAgIC16cGxnLWNsZWFyLWRlYnVn LXJlcG9ydAogICAgICAgICAgIDs7CiAgICAgICAoZHVubG9hZCkKICAgICAgICAgICAtenBsZy1k ZWJ1Zy11bmxvYWQKICAgICAgICAgICA7OwogICAgICAgKGNvbXBpbGUpCiAgICAgICAgICAgaWYg W1sgLXogIiQyIiAmJiAteiAiJDMiIF1dOyB0aGVuCiAgICAgICAgICAgICAgIHByaW50ICJBcmd1 bWVudCBuZWVkZWQsIHRyeSBoZWxwIgogICAgICAgICAgICAgICByZXR1cm4gMQogICAgICAgICAg IGZpCiAgICAgICAgICAgLXpwbGctY29tcGlsZS1wbHVnaW4gIiQyIiAiJDMiCiAgICAgICAgICAg OzsKICAgICAgIChjb21waWxlLWFsbCkKICAgICAgICAgICAtenBsZy1jb21waWxlLXVuY29tcGls ZS1hbGwgIjEiCiAgICAgICAgICAgOzsKICAgICAgICh1bmNvbXBpbGUpCiAgICAgICAgICAgaWYg W1sgLXogIiQyIiAmJiAteiAiJDMiIF1dOyB0aGVuCiAgICAgICAgICAgICAgIHByaW50ICJBcmd1 bWVudCBuZWVkZWQsIHRyeSBoZWxwIgogICAgICAgICAgICAgICByZXR1cm4gMQogICAgICAgICAg IGZpCiAgICAgICAgICAgLXpwbGctdW5jb21waWxlLXBsdWdpbiAiJDIiICIkMyIKICAgICAgICAg ICA7OwogICAgICAgKHVuY29tcGlsZS1hbGwpCiAgICAgICAgICAgLXpwbGctY29tcGlsZS11bmNv bXBpbGUtYWxsICIwIgogICAgICAgICAgIDs7CiAgICAgICAoY29tcGlsZWQpCiAgICAgICAgICAg LXpwbGctY29tcGlsZWQKICAgICAgICAgICA7OwogICAgICAgKC1ofC0taGVscHxoZWxwfCIiKQog ICAgICAgICAgIHByaW50ICIke1pQTEdfQ09MW3BdfVVzYWdlJHtaUExHX0NPTFtyc3RdfToKLWh8 LS1oZWxwfGhlbHAgICAgICAgICAgIC0gdXNhZ2UgaW5mb3JtYXRpb24KenN0YXR1cyAgICAgICAg ICAgICAgICAgIC0gb3ZlcmFsbCBzdGF0dXMgb2YgWnBsdWdpbgpzZWxmLXVwZGF0ZSAgICAgICAg ICAgICAgLSB1cGRhdGVzIFpwbHVnaW4KbG9hZCAke1pQTEdfQ09MW3BuYW1lXX17cGx1Z2luLW5h bWV9JHtaUExHX0NPTFtyc3RdfSAgICAgICAtIGxvYWQgcGx1Z2luCmxpZ2h0ICR7WlBMR19DT0xb cG5hbWVdfXtwbHVnaW4tbmFtZX0ke1pQTEdfQ09MW3JzdF19ICAgICAgLSBsaWdodCBwbHVnaW4g bG9hZCwgd2l0aG91dCByZXBvcnRpbmcKdW5sb2FkICR7WlBMR19DT0xbcG5hbWVdfXtwbHVnaW4t bmFtZX0ke1pQTEdfQ09MW3JzdF19ICAgICAtIHVubG9hZCBwbHVnaW4Kc25pcHBldCBbLWZdICR7 WlBMR19DT0xbcG5hbWVdfXt1cmx9JHtaUExHX0NPTFtyc3RdfSAgICAgICAtIHNvdXJjZSBmaWxl IGdpdmVuIHZpYSB1cmwgKC1mOiBmb3JjZSBkb3dubG9hZCwgb3ZlcndyaXRlIGV4aXN0aW5nIGZp bGUpCnVwZGF0ZSAke1pQTEdfQ09MW3BuYW1lXX17cGx1Z2luLW5hbWV9JHtaUExHX0NPTFtyc3Rd fSAgICAgLSB1cGRhdGUgcGx1Z2luIChHaXQpCnVwZGF0ZS1hbGwgICAgICAgICAgICAgICAtIHVw ZGF0ZSBhbGwgcGx1Z2lucyAoR2l0KQpzdGF0dXMgJHtaUExHX0NPTFtwbmFtZV19e3BsdWdpbi1u YW1lfSR7WlBMR19DT0xbcnN0XX0gICAgIC0gc3RhdHVzIGZvciBwbHVnaW4gKEdpdCkKc3RhdHVz LWFsbCAgICAgICAgICAgICAgIC0gc3RhdHVzIGZvciBhbGwgcGx1Z2lucyAoR2l0KQpyZXBvcnQg JHtaUExHX0NPTFtwbmFtZV19e3BsdWdpbi1uYW1lfSR7WlBMR19DT0xbcnN0XX0gICAgIC0gc2hv dyBwbHVnaW4ncyByZXBvcnQKYWxsLXJlcG9ydHMgICAgICAgICAgICAgIC0gc2hvdyBhbGwgcGx1 Z2luIHJlcG9ydHMKbG9hZGVkfGxpc3QgW2tleXdvcmRdICAgIC0gc2hvdyB3aGF0IHBsdWdpbnMg YXJlIGxvYWRlZCAoZmlsdGVyIHdpdGggXCdrZXl3b3JkJykKY2xpc3R8Y29tcGxldGlvbnMgICAg ICAgIC0gbGlzdCBjb21wbGV0aW9ucyBpbiB1c2UKY2Rpc2FibGUgJHtaUExHX0NPTFtpbmZvXX17 Y25hbWV9JHtaUExHX0NPTFtyc3RdfSAgICAgICAgIC0gZGlzYWJsZSBjb21wbGV0aW9uIFxgY25h bWUnCmNlbmFibGUgICR7WlBMR19DT0xbaW5mb119e2NuYW1lfSR7WlBMR19DT0xbcnN0XX0gICAg ICAgICAtIGVuYWJsZSBjb21wbGV0aW9uIFxgY25hbWUnCmNyZWluc3RhbGwgJHtaUExHX0NPTFtw bmFtZV19e3BsdWdpbi1uYW1lfSR7WlBMR19DT0xbcnN0XX0gLSBpbnN0YWxsIGNvbXBsZXRpb25z IGZvciBwbHVnaW4KY3VuaW5zdGFsbCAke1pQTEdfQ09MW3BuYW1lXX17cGx1Z2luLW5hbWV9JHta UExHX0NPTFtyc3RdfSAtIHVuaW5zdGFsbCBjb21wbGV0aW9ucyBmb3IgcGx1Z2luCmNzZWFyY2gg ICAgICAgICAgICAgICAgICAtIHNlYXJjaCBmb3IgYXZhaWxhYmxlIGNvbXBsZXRpb25zIGZyb20g YW55IHBsdWdpbgpjb21waW5pdCAgICAgICAgICAgICAgICAgLSByZWZyZXNoIGluc3RhbGxlZCBj b21wbGV0aW9ucwpkdHJhY2V8ZHN0YXJ0ICAgICAgICAgICAgLSBzdGFydCB0cmFja2luZyB3aGF0 J3MgZ29pbmcgb24gaW4gc2Vzc2lvbgpkc3RvcCAgICAgICAgICAgICAgICAgICAgLSBzdG9wIHRy YWNraW5nIHdoYXQncyBnb2luZyBvbiBpbiBzZXNzaW9uCmR1bmxvYWQgICAgICAgICAgICAgICAg ICAtIHJldmVydCBjaGFuZ2VzIHJlY29yZGVkIGJldHdlZW4gZHN0YXJ0IGFuZCBkc3RvcApkcmVw b3J0ICAgICAgICAgICAgICAgICAgLSByZXBvcnQgd2hhdCB3YXMgZ29pbmcgb24gaW4gc2Vzc2lv bgpkY2xlYXIgICAgICAgICAgICAgICAgICAgLSBjbGVhciByZXBvcnQgb2Ygd2hhdCB3YXMgZ29p bmcgb24gaW4gc2Vzc2lvbgpjb21waWxlICAke1pQTEdfQ09MW3BuYW1lXX17cGx1Z2luLW5hbWV9 JHtaUExHX0NPTFtyc3RdfSAgIC0gY29tcGlsZSBwbHVnaW4KY29tcGlsZS1hbGwgICAgICAgICAg ICAgIC0gY29tcGlsZSBhbGwgZG93bmxvYWRlZCBwbHVnaW5zCnVuY29tcGlsZSAke1pQTEdfQ09M W3BuYW1lXX17cGx1Z2luLW5hbWV9JHtaUExHX0NPTFtyc3RdfSAgLSByZW1vdmUgY29tcGlsZWQg dmVyc2lvbiBvZiBwbHVnaW4KdW5jb21waWxlLWFsbCAgICAgICAgICAgIC0gcmVtb3ZlIGNvbXBp bGVkIHZlcnNpb25zIG9mIGFsbCBkb3dubG9hZGVkIHBsdWdpbnMKY29tcGlsZWQgICAgICAgICAg ICAgICAgIC0gbGlzdCBwbHVnaW5zIHRoYXQgYXJlIGNvbXBpbGVkIgogICAgICAgICAgIDs7CiAg ICAgICAoKikKICAgICAgICAgICBwcmludCAiVW5rbm93biBjb21tYW5kIFxgJDEnICh0cnkgXGBo ZWxwJyB0byBnZXQgdXNhZ2UgaW5mb3JtYXRpb24pIgogICAgICAgICAgIDs7CiAgICBlc2FjCgog ICAgIyBSZXN0b3JlIHVzZXIncyBvcHRpb25zCiAgICAtenBsZy1yZXN0b3JlLWVudGVyLXN0YXRl Cn0KCiMgQWRkIGNvbXBsZXRpb25zIGRpcmVjdG9yeSB0byBmcGF0aApmcGF0aD0oICIkWlBMR19D T01QTEVUSU9OU19ESVIiICIke2ZwYXRoW0BdfSIgKQoKIyBDb2xvcml6ZSBjb21wbGV0aW9ucyBm b3IgY29tbWFuZHMgdW5sb2FkLCByZXBvcnQsIGNyZWluc3RhbGwsIGN1bmluc3RhbGwKenN0eWxl ICc6Y29tcGxldGlvbjoqOnpwbHVnaW46Kjphcmd1bWVudC1yZXN0JyBsaXN0LWNvbG9ycyAnPSgj YikoKikvKCopPT0xOzM1PTE7MzMnCg== --001a1141dadcabcf21052b45c6ef--