From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 116889 invoked by alias); 19 Jun 2015 15:18:52 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 116879 invoked by uid 89); 19 Jun 2015 15:18:52 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_50,FREEMAIL_FROM,KAM_ASCII_DIVIDERS,RCVD_IN_DNSWL_LOW,SPF_PASS,UNSUBSCRIBE_BODY autolearn=no version=3.3.2 X-HELO: mail-wi0-f177.google.com Received: from mail-wi0-f177.google.com (HELO mail-wi0-f177.google.com) (209.85.212.177) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Fri, 19 Jun 2015 15:18:44 +0000 Received: by wibdq8 with SMTP id dq8so21734042wib.1 for ; Fri, 19 Jun 2015 08:18:39 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.194.78.14 with SMTP id x14mr25905867wjw.48.1434727119230; Fri, 19 Jun 2015 08:18:39 -0700 (PDT) Received: by 10.194.104.197 with HTTP; Fri, 19 Jun 2015 08:18:38 -0700 (PDT) Date: Fri, 19 Jun 2015 15:18:00 -0000 Message-ID: Subject: [PATCH v2 1/2] Sync libiberty with gcc upstream From: Iain Buclaw To: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=047d7bfd05b44ac9c50518e07057 X-IsSubscribed: yes X-SW-Source: 2015-06/txt/msg00405.txt.bz2 --047d7bfd05b44ac9c50518e07057 Content-Type: text/plain; charset=UTF-8 Content-length: 284 Belated attempt at downstreaming libiberty changes from upstream. Split it into two patches, one with dlang related changes, the other with everything else. As requested, commits have been replayed ontop of gdb rather than a straight diff between the directories. Regards Iain --- --047d7bfd05b44ac9c50518e07057 Content-Type: text/x-diff; charset=UTF-8; name="sync_upstream_libiberty-1.patch" Content-Disposition: attachment; filename="sync_upstream_libiberty-1.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ib3rfs5d0 Content-length: 114660 LwoyMDE1LTA0LTE0ICBNYXggT3N0YXBlbmtvICA8bS5vc3RhcGVua29AcGFy dG5lci5zYW1zdW5nLmNvbT4KCgkqIE1ha2VmaWxlLnRwbCAoRVhUUkFfSE9T VF9FWFBPUlRTKTogTmV3IHZhcmlhYmxlcy4KCShFWFRSQV9CT09UU1RSQVBf RkxBR1MpOiBMaWtld2lzZS4KCShjaGVjay1bK21vZHVsZStdKTogQWRkIEVY VFJBX0hPU1RfRVhQT1JUUyBhbmQgRVhUUkFfQk9PVFNUUkFQX0ZMQUdTLgoJ KiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KCgppbmNsdWRlLwoyMDE1LTA1 LTIyICBZdW5saWFuIEppYW5nICA8eXVubGlhbkBnb29nbGUuY29tPgoKCSog bGliaWJlcnR5LmggKGFzcHJpbnRmKTogRG9uJ3QgZGVjbGFyZSBpZiBIQVZF X0RFQ0xfQVNQUklOVEYgaXMKCW5vdCBkZWZpbmVkLgoKCmNvbmZpZy8KMjAx NS0wNC0xMCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+Cgkg ICAgSWFpbiBTYW5kb2UgIDxpYWluQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIg dGFyZ2V0LzY1MzUxCgkqIG1oLWRhcndpbjogT25seSBhcHBseSAtbWR5bmFt aWMtbm8tcGljIGZvciBtMzIgRGFyd2luIHdoZW4gdGhlCgljb21waWxlciBp biB1c2Ugc3VwcG9ydHMgLW1uby1keW5hbWljLW5vLXBpYy4KCSogcGljZmxh Zy5tNDogT25seSBhcHBlbmQgLW1uby1keW5hbWljLW5vLXBpYyBmb3IgRGFy d2luIHdoZW4KCS1tZHluYW1pYy1uby1waWMgaXMgcHJlc2VudCBpbiBDRkxB R1MuCgoyMDE1LTA0LTA3ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0 LmNvbT4KCSAgICBJYWluIFNhbmRvZSAgPGlhaW5AY29kZXNvdXJjZXJ5LmNv bT4KCglQUiB0YXJnZXQvNjUzNTEKCSogcGljZmxhZy5tNDogQXBwZW5kIC1t bm8tZHluYW1pYy1uby1waWMgZm9yIERhcndpbi4KCgpsaWJpYmVydHkvCjIw MTUtMDYtMDEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoK CSogY3AtZGVtYW5nbGUuYyAoY3BsdXNfZGVtYW5nbGVfdHlwZSk6IEhhbmRs ZSBhcmd1bWVudHMgdG8gdmVuZG9yCglleHRlbmRlZCBxdWFsaWZpZXIuCgoy MDE1LTA1LTIyICBZdW5saWFuIEppYW5nICA8eXVubGlhbkBnb29nbGUuY29t PgoKCSogY29uZmlndXJlLmFjOiBBZGQgQUNfR05VX1NPVVJDRS4KCSogTWFr ZWZpbGUuaW4gKENPTVBJTEUuYyk6IEFkZCAtRF9HTlVfU09VUkNFLgoJKiBj b25maWd1cmUsIGNvbmZpZy5pbjogUmVidWlsZC4KCSogZmxvYXRmb3JtYXQu YyAoX0dOVV9TT1VSQ0UpOiBEb24ndCBkZWZpbmUgaWYgYWxyZWFkeSBkZWZp bmVkLgoKMjAxNS0wNC0xNCAgTWF4IE9zdGFwZW5rbyAgPG0ub3N0YXBlbmtv QHBhcnRuZXIuc2Ftc3VuZy5jb20+CgoJKiB0ZXN0c3VpdGUvTWFrZWZpbGUu aW4gKExJQkNGTEFHUyk6IEFkZCBMREZMQUdTLgoKMjAxNS0wNC0xMCAgSmFr dWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgkgICAgSWFpbiBTYW5k b2UgIDxpYWluQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgdGFyZ2V0LzY1MzUx CgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMTUtMDQtMDcgIEpha3Vi IEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoJICAgIElhaW4gU2FuZG9l ICA8aWFpbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIHRhcmdldC82NTM1MQoJ KiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgpkaWZmIC0tZ2l0IGEvTWFrZWZp bGUuaW4gYi9NYWtlZmlsZS5pbgppbmRleCA4YWUyNjFmLi42MWUwYWI2IDEw MDY0NAotLS0gYS9NYWtlZmlsZS5pbgorKysgYi9NYWtlZmlsZS5pbgpAQCAt ODMzLDYgKzgzMywxNCBAQCBQT1NUU1RBR0UxX0ZMQUdTX1RPX1BBU1MgPSBc CiAJJChMVE9fRkxBR1NfVE9fUEFTUykgXAogCSJgZWNobyAnQURBRkxBR1M9 JChCT09UX0FEQUZMQUdTKScgfCBzZWQgLWUgcycvW149XVtePV0qPSQkL1hG T089LydgIgogCitAaWYgZ2NjLWJvb3RzdHJhcAorRVhUUkFfSE9TVF9FWFBP UlRTID0gaWYgWyAkKGN1cnJlbnRfc3RhZ2UpICE9IHN0YWdlMSBdOyB0aGVu IFwKKwkJICAgICAgICQoUE9TVFNUQUdFMV9IT1NUX0VYUE9SVFMpIFwKKwkJ ICAgICBmaSA7CisKK0VYVFJBX0JPT1RTVFJBUF9GTEFHUyA9IENDPSIkJEND IiBDWFg9IiQkQ1hYIiBMREZMQUdTPSIkJExERkxBR1MiCitAZW5kaWYgZ2Nj LWJvb3RzdHJhcAorCiAjIEZsYWdzIHRvIHBhc3MgZG93biB0byBtYWtlcyB3 aGljaCBhcmUgYnVpbHQgd2l0aCB0aGUgdGFyZ2V0IGVudmlyb25tZW50Lgog IyBUaGUgZG91YmxlICQgZGVjcmVhc2VzIHRoZSBsZW5ndGggb2YgdGhlIGNv bW1hbmQgbGluZTsgdGhvc2UgdmFyaWFibGVzCiAjIGFyZSBzZXQgaW4gQkFT RV9GTEFHU19UT19QQVNTLCBhbmQgdGhlIHN1Yi1tYWtlIHdpbGwgZXhwYW5k IHRoZW0uICBUaGUKQEAgLTM2NTEsOSArMzY1OSw5IEBAIGNoZWNrLWJmZDoK IAlAOiAkKE1BS0UpOyAkKHVuc3RhZ2UpCiAJQHI9YCR7UFdEX0NPTU1BTkR9 YDsgZXhwb3J0IHI7IFwKIAlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1B TkR9YDsgZXhwb3J0IHM7IFwKLQkkKEhPU1RfRVhQT1JUUykgXAorCSQoSE9T VF9FWFBPUlRTKSAkKEVYVFJBX0hPU1RfRVhQT1JUUykgXAogCShjZCAkKEhP U1RfU1VCRElSKS9iZmQgJiYgXAotCSAgJChNQUtFKSAkKEZMQUdTX1RPX1BB U1MpICBjaGVjaykKKwkgICQoTUFLRSkgJChGTEFHU19UT19QQVNTKSAgJChF WFRSQV9CT09UU1RSQVBfRkxBR1MpIGNoZWNrKQogCiBAZW5kaWYgYmZkCiAK QEAgLTQ1MjUsOSArNDUzMyw5IEBAIGNoZWNrLW9wY29kZXM6CiAJQDogJChN QUtFKTsgJCh1bnN0YWdlKQogCUByPWAke1BXRF9DT01NQU5EfWA7IGV4cG9y dCByOyBcCiAJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4 cG9ydCBzOyBcCi0JJChIT1NUX0VYUE9SVFMpIFwKKwkkKEhPU1RfRVhQT1JU UykgJChFWFRSQV9IT1NUX0VYUE9SVFMpIFwKIAkoY2QgJChIT1NUX1NVQkRJ Uikvb3Bjb2RlcyAmJiBcCi0JICAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykg IGNoZWNrKQorCSAgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpICAkKEVYVFJB X0JPT1RTVFJBUF9GTEFHUykgY2hlY2spCiAKIEBlbmRpZiBvcGNvZGVzCiAK QEAgLTUzOTksOSArNTQwNyw5IEBAIGNoZWNrLWJpbnV0aWxzOgogCUA6ICQo TUFLRSk7ICQodW5zdGFnZSkKIAlAcj1gJHtQV0RfQ09NTUFORH1gOyBleHBv cnQgcjsgXAogCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBl eHBvcnQgczsgXAotCSQoSE9TVF9FWFBPUlRTKSBcCisJJChIT1NUX0VYUE9S VFMpICQoRVhUUkFfSE9TVF9FWFBPUlRTKSBcCiAJKGNkICQoSE9TVF9TVUJE SVIpL2JpbnV0aWxzICYmIFwKLQkgICQoTUFLRSkgJChGTEFHU19UT19QQVNT KSAgY2hlY2spCisJICAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgICQoRVhU UkFfQk9PVFNUUkFQX0ZMQUdTKSBjaGVjaykKIAogQGVuZGlmIGJpbnV0aWxz CiAKQEAgLTU4MjksOSArNTgzNyw5IEBAIGNoZWNrLWJpc29uOgogCUBpZiBb ICckKGhvc3QpJyA9ICckKHRhcmdldCknIF0gOyB0aGVuIFwKIAkgIHI9YCR7 UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKIAkgIHM9YGNkICQoc3JjZGly KTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSAgJChIT1NUX0VY UE9SVFMpIFwKKwkgICQoSE9TVF9FWFBPUlRTKSAgXAogCSAgKGNkICQoSE9T VF9TVUJESVIpL2Jpc29uICYmIFwKLQkgICAgJChNQUtFKSAkKEZMQUdTX1RP X1BBU1MpICBjaGVjayk7IFwKKwkgICAgJChNQUtFKSAkKEZMQUdTX1RPX1BB U1MpICBjaGVjaykKIAlmaQogCiBAZW5kaWYgYmlzb24KQEAgLTYyNzEsNyAr NjI3OSw3IEBAIGNoZWNrLWNnZW46CiAJQDogJChNQUtFKTsgJCh1bnN0YWdl KQogCUByPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCiAJcz1gY2Qg JChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChI T1NUX0VYUE9SVFMpIFwKKwkkKEhPU1RfRVhQT1JUUykgIFwKIAkoY2QgJChI T1NUX1NVQkRJUikvY2dlbiAmJiBcCiAJICAkKE1BS0UpICQoRkxBR1NfVE9f UEFTUykgIGNoZWNrKQogCkBAIC02NzEyLDcgKzY3MjAsNyBAQCBjaGVjay1k ZWphZ251OgogCUA6ICQoTUFLRSk7ICQodW5zdGFnZSkKIAlAcj1gJHtQV0Rf Q09NTUFORH1gOyBleHBvcnQgcjsgXAogCXM9YGNkICQoc3JjZGlyKTsgJHtQ V0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoSE9TVF9FWFBPUlRTKSBc CisJJChIT1NUX0VYUE9SVFMpICBcCiAJKGNkICQoSE9TVF9TVUJESVIpL2Rl amFnbnUgJiYgXAogCSAgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpICBjaGVj aykKIApAQCAtNzE1Myw3ICs3MTYxLDcgQEAgY2hlY2stZXRjOgogCUA6ICQo TUFLRSk7ICQodW5zdGFnZSkKIAlAcj1gJHtQV0RfQ09NTUFORH1gOyBleHBv cnQgcjsgXAogCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBl eHBvcnQgczsgXAotCSQoSE9TVF9FWFBPUlRTKSBcCisJJChIT1NUX0VYUE9S VFMpICBcCiAJKGNkICQoSE9TVF9TVUJESVIpL2V0YyAmJiBcCiAJICAkKE1B S0UpICQoRkxBR1NfVE9fUEFTUykgIGNoZWNrKQogCkBAIC03NTk2LDkgKzc2 MDQsOSBAQCBjaGVjay1mYXN0amFyOgogCUBpZiBbICckKGhvc3QpJyA9ICck KHRhcmdldCknIF0gOyB0aGVuIFwKIAkgIHI9YCR7UFdEX0NPTU1BTkR9YDsg ZXhwb3J0IHI7IFwKIAkgIHM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFO RH1gOyBleHBvcnQgczsgXAotCSAgJChIT1NUX0VYUE9SVFMpIFwKKwkgICQo SE9TVF9FWFBPUlRTKSAgXAogCSAgKGNkICQoSE9TVF9TVUJESVIpL2Zhc3Rq YXIgJiYgXAotCSAgICAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgIGNoZWNr KTsgXAorCSAgICAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgIGNoZWNrKQog CWZpCiAKIEBlbmRpZiBmYXN0amFyCkBAIC04NDg0LDkgKzg0OTIsOSBAQCBj aGVjay1maXhpbmNsdWRlczoKIAlAOiAkKE1BS0UpOyAkKHVuc3RhZ2UpCiAJ QHI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKIAlzPWBjZCAkKHNy Y2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKEhPU1Rf RVhQT1JUUykgXAorCSQoSE9TVF9FWFBPUlRTKSAkKEVYVFJBX0hPU1RfRVhQ T1JUUykgXAogCShjZCAkKEhPU1RfU1VCRElSKS9maXhpbmNsdWRlcyAmJiBc Ci0JICAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgIGNoZWNrKQorCSAgJChN QUtFKSAkKEZMQUdTX1RPX1BBU1MpICAkKEVYVFJBX0JPT1RTVFJBUF9GTEFH UykgY2hlY2spCiAKIEBlbmRpZiBmaXhpbmNsdWRlcwogCkBAIC04ODk5LDkg Kzg5MDcsOSBAQCBjaGVjay1mbGV4OgogCUBpZiBbICckKGhvc3QpJyA9ICck KHRhcmdldCknIF0gOyB0aGVuIFwKIAkgIHI9YCR7UFdEX0NPTU1BTkR9YDsg ZXhwb3J0IHI7IFwKIAkgIHM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFO RH1gOyBleHBvcnQgczsgXAotCSAgJChIT1NUX0VYUE9SVFMpIFwKKwkgICQo SE9TVF9FWFBPUlRTKSAgXAogCSAgKGNkICQoSE9TVF9TVUJESVIpL2ZsZXgg JiYgXAotCSAgICAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgIGNoZWNrKTsg XAorCSAgICAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgIGNoZWNrKQogCWZp CiAKIEBlbmRpZiBmbGV4CkBAIC05Nzg3LDkgKzk3OTUsOSBAQCBjaGVjay1n YXM6CiAJQDogJChNQUtFKTsgJCh1bnN0YWdlKQogCUByPWAke1BXRF9DT01N QU5EfWA7IGV4cG9ydCByOyBcCiAJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9D T01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChIT1NUX0VYUE9SVFMpIFwKKwkk KEhPU1RfRVhQT1JUUykgJChFWFRSQV9IT1NUX0VYUE9SVFMpIFwKIAkoY2Qg JChIT1NUX1NVQkRJUikvZ2FzICYmIFwKLQkgICQoTUFLRSkgJChGTEFHU19U T19QQVNTKSAgY2hlY2spCisJICAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykg ICQoRVhUUkFfQk9PVFNUUkFQX0ZMQUdTKSBjaGVjaykKIAogQGVuZGlmIGdh cwogCkBAIC0xMDY2MSw5ICsxMDY2OSw5IEBAIGNoZWNrLWdjYzoKIAlAOiAk KE1BS0UpOyAkKHVuc3RhZ2UpCiAJQHI9YCR7UFdEX0NPTU1BTkR9YDsgZXhw b3J0IHI7IFwKIAlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsg ZXhwb3J0IHM7IFwKLQkkKEhPU1RfRVhQT1JUUykgXAorCSQoSE9TVF9FWFBP UlRTKSAkKEVYVFJBX0hPU1RfRVhQT1JUUykgXAogCShjZCAkKEhPU1RfU1VC RElSKS9nY2MgJiYgXAotCSAgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpICQo RVhUUkFfR0NDX0ZMQUdTKSBjaGVjaykKKwkgICQoTUFLRSkgJChGTEFHU19U T19QQVNTKSAkKEVYVFJBX0dDQ19GTEFHUykgJChFWFRSQV9CT09UU1RSQVBf RkxBR1MpIGNoZWNrKQogCiBAZW5kaWYgZ2NjCiAKQEAgLTExNTQxLDkgKzEx NTQ5LDkgQEAgY2hlY2stZ21wOgogCUA6ICQoTUFLRSk7ICQodW5zdGFnZSkK IAlAcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAogCXM9YGNkICQo c3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoSE9T VF9FWFBPUlRTKSBcCisJJChIT1NUX0VYUE9SVFMpICQoRVhUUkFfSE9TVF9F WFBPUlRTKSBcCiAJKGNkICQoSE9TVF9TVUJESVIpL2dtcCAmJiBcCi0JICAk KE1BS0UpICQoRkxBR1NfVE9fUEFTUykgIGNoZWNrKQorCSAgJChNQUtFKSAk KEZMQUdTX1RPX1BBU1MpICAkKEVYVFJBX0JPT1RTVFJBUF9GTEFHUykgY2hl Y2spCiAKIEBlbmRpZiBnbXAKIApAQCAtMTI0MDksOSArMTI0MTcsOSBAQCBj aGVjay1tcGZyOgogCUA6ICQoTUFLRSk7ICQodW5zdGFnZSkKIAlAcj1gJHtQ V0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAogCXM9YGNkICQoc3JjZGlyKTsg JHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoSE9TVF9FWFBPUlRT KSBcCisJJChIT1NUX0VYUE9SVFMpICQoRVhUUkFfSE9TVF9FWFBPUlRTKSBc CiAJKGNkICQoSE9TVF9TVUJESVIpL21wZnIgJiYgXAotCSAgJChNQUtFKSAk KEZMQUdTX1RPX1BBU1MpICBjaGVjaykKKwkgICQoTUFLRSkgJChGTEFHU19U T19QQVNTKSAgJChFWFRSQV9CT09UU1RSQVBfRkxBR1MpIGNoZWNrKQogCiBA ZW5kaWYgbXBmcgogCkBAIC0xMzI3Nyw5ICsxMzI4NSw5IEBAIGNoZWNrLW1w YzoKIAlAOiAkKE1BS0UpOyAkKHVuc3RhZ2UpCiAJQHI9YCR7UFdEX0NPTU1B TkR9YDsgZXhwb3J0IHI7IFwKIAlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NP TU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKEhPU1RfRVhQT1JUUykgXAorCSQo SE9TVF9FWFBPUlRTKSAkKEVYVFJBX0hPU1RfRVhQT1JUUykgXAogCShjZCAk KEhPU1RfU1VCRElSKS9tcGMgJiYgXAotCSAgJChNQUtFKSAkKEZMQUdTX1RP X1BBU1MpICBjaGVjaykKKwkgICQoTUFLRSkgJChGTEFHU19UT19QQVNTKSAg JChFWFRSQV9CT09UU1RSQVBfRkxBR1MpIGNoZWNrKQogCiBAZW5kaWYgbXBj CiAKQEAgLTE0MTQ1LDkgKzE0MTUzLDkgQEAgY2hlY2staXNsOgogCUA6ICQo TUFLRSk7ICQodW5zdGFnZSkKIAlAcj1gJHtQV0RfQ09NTUFORH1gOyBleHBv cnQgcjsgXAogCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBl eHBvcnQgczsgXAotCSQoSE9TVF9FWFBPUlRTKSBcCisJJChIT1NUX0VYUE9S VFMpICQoRVhUUkFfSE9TVF9FWFBPUlRTKSBcCiAJKGNkICQoSE9TVF9TVUJE SVIpL2lzbCAmJiBcCi0JICAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgVj0x IGNoZWNrKQorCSAgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpIFY9MSAkKEVY VFJBX0JPT1RTVFJBUF9GTEFHUykgY2hlY2spCiAKIEBlbmRpZiBpc2wKIApA QCAtMTUwMTMsOSArMTUwMjEsOSBAQCBjaGVjay1saWJlbGY6CiAJQDogJChN QUtFKTsgJCh1bnN0YWdlKQogCUByPWAke1BXRF9DT01NQU5EfWA7IGV4cG9y dCByOyBcCiAJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4 cG9ydCBzOyBcCi0JJChIT1NUX0VYUE9SVFMpIFwKKwkkKEhPU1RfRVhQT1JU UykgJChFWFRSQV9IT1NUX0VYUE9SVFMpIFwKIAkoY2QgJChIT1NUX1NVQkRJ UikvbGliZWxmICYmIFwKLQkgICQoTUFLRSkgJChGTEFHU19UT19QQVNTKSAg Y2hlY2spCisJICAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgICQoRVhUUkFf Qk9PVFNUUkFQX0ZMQUdTKSBjaGVjaykKIAogQGVuZGlmIGxpYmVsZgogCkBA IC0xNTg3NSw5ICsxNTg4Myw5IEBAIGNoZWNrLWdvbGQ6CiAJQDogJChNQUtF KTsgJCh1bnN0YWdlKQogCUByPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBy OyBcCiAJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9y dCBzOyBcCi0JJChIT1NUX0VYUE9SVFMpIFwKKwkkKEhPU1RfRVhQT1JUUykg JChFWFRSQV9IT1NUX0VYUE9SVFMpIFwKIAkoY2QgJChIT1NUX1NVQkRJUikv Z29sZCAmJiBcCi0JICAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgIGNoZWNr KQorCSAgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpICAkKEVYVFJBX0JPT1RT VFJBUF9GTEFHUykgY2hlY2spCiAKIEBlbmRpZiBnb2xkCiAKQEAgLTE2MzAz LDcgKzE2MzExLDcgQEAgY2hlY2stZ3Byb2Y6CiAJQDogJChNQUtFKTsgJCh1 bnN0YWdlKQogCUByPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCiAJ cz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBc Ci0JJChIT1NUX0VYUE9SVFMpIFwKKwkkKEhPU1RfRVhQT1JUUykgIFwKIAko Y2QgJChIT1NUX1NVQkRJUikvZ3Byb2YgJiYgXAogCSAgJChNQUtFKSAkKEZM QUdTX1RPX1BBU1MpICBjaGVjaykKIApAQCAtMTcxOTAsOSArMTcxOTgsOSBA QCBjaGVjay1pbnRsOgogCUA6ICQoTUFLRSk7ICQodW5zdGFnZSkKIAlAcj1g JHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAogCXM9YGNkICQoc3JjZGly KTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoSE9TVF9FWFBP UlRTKSBcCisJJChIT1NUX0VYUE9SVFMpICQoRVhUUkFfSE9TVF9FWFBPUlRT KSBcCiAJKGNkICQoSE9TVF9TVUJESVIpL2ludGwgJiYgXAotCSAgJChNQUtF KSAkKEZMQUdTX1RPX1BBU1MpICBjaGVjaykKKwkgICQoTUFLRSkgJChGTEFH U19UT19QQVNTKSAgJChFWFRSQV9CT09UU1RSQVBfRkxBR1MpIGNoZWNrKQog CiBAZW5kaWYgaW50bAogCkBAIC0xNzYxOCw3ICsxNzYyNiw3IEBAIGNoZWNr LXRjbDoKIAlAOiAkKE1BS0UpOyAkKHVuc3RhZ2UpCiAJQHI9YCR7UFdEX0NP TU1BTkR9YDsgZXhwb3J0IHI7IFwKIAlzPWBjZCAkKHNyY2Rpcik7ICR7UFdE X0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKEhPU1RfRVhQT1JUUykgXAor CSQoSE9TVF9FWFBPUlRTKSAgXAogCShjZCAkKEhPU1RfU1VCRElSKS90Y2wg JiYgXAogCSAgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpICBjaGVjaykKIApA QCAtMTgwNDQsNyArMTgwNTIsNyBAQCBjaGVjay1pdGNsOgogCUA6ICQoTUFL RSk7ICQodW5zdGFnZSkKIAlAcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQg cjsgXAogCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBv cnQgczsgXAotCSQoSE9TVF9FWFBPUlRTKSBcCisJJChIT1NUX0VYUE9SVFMp ICBcCiAJKGNkICQoSE9TVF9TVUJESVIpL2l0Y2wgJiYgXAogCSAgJChNQUtF KSAkKEZMQUdTX1RPX1BBU1MpICBjaGVjaykKIApAQCAtMTg5MzEsOSArMTg5 MzksOSBAQCBjaGVjay1sZDoKIAlAOiAkKE1BS0UpOyAkKHVuc3RhZ2UpCiAJ QHI9YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKIAlzPWBjZCAkKHNy Y2Rpcik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKEhPU1Rf RVhQT1JUUykgXAorCSQoSE9TVF9FWFBPUlRTKSAkKEVYVFJBX0hPU1RfRVhQ T1JUUykgXAogCShjZCAkKEhPU1RfU1VCRElSKS9sZCAmJiBcCi0JICAkKE1B S0UpICQoRkxBR1NfVE9fUEFTUykgIGNoZWNrKQorCSAgJChNQUtFKSAkKEZM QUdTX1RPX1BBU1MpICAkKEVYVFJBX0JPT1RTVFJBUF9GTEFHUykgY2hlY2sp CiAKIEBlbmRpZiBsZAogCkBAIC0xOTgwNSw5ICsxOTgxMyw5IEBAIGNoZWNr LWxpYmJhY2t0cmFjZToKIAlAOiAkKE1BS0UpOyAkKHVuc3RhZ2UpCiAJQHI9 YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKIAlzPWBjZCAkKHNyY2Rp cik7ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKEhPU1RfRVhQ T1JUUykgXAorCSQoSE9TVF9FWFBPUlRTKSAkKEVYVFJBX0hPU1RfRVhQT1JU UykgXAogCShjZCAkKEhPU1RfU1VCRElSKS9saWJiYWNrdHJhY2UgJiYgXAot CSAgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpICBjaGVjaykKKwkgICQoTUFL RSkgJChGTEFHU19UT19QQVNTKSAgJChFWFRSQV9CT09UU1RSQVBfRkxBR1Mp IGNoZWNrKQogCiBAZW5kaWYgbGliYmFja3RyYWNlCiAKQEAgLTIwNjc5LDkg KzIwNjg3LDkgQEAgY2hlY2stbGliY3BwOgogCUA6ICQoTUFLRSk7ICQodW5z dGFnZSkKIAlAcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAogCXM9 YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAot CSQoSE9TVF9FWFBPUlRTKSBcCisJJChIT1NUX0VYUE9SVFMpICQoRVhUUkFf SE9TVF9FWFBPUlRTKSBcCiAJKGNkICQoSE9TVF9TVUJESVIpL2xpYmNwcCAm JiBcCi0JICAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgIGNoZWNrKQorCSAg JChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpICAkKEVYVFJBX0JPT1RTVFJBUF9G TEFHUykgY2hlY2spCiAKIEBlbmRpZiBsaWJjcHAKIApAQCAtMjE1NTMsOSAr MjE1NjEsOSBAQCBjaGVjay1saWJkZWNudW1iZXI6CiAJQDogJChNQUtFKTsg JCh1bnN0YWdlKQogCUByPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBc CiAJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBz OyBcCi0JJChIT1NUX0VYUE9SVFMpIFwKKwkkKEhPU1RfRVhQT1JUUykgJChF WFRSQV9IT1NUX0VYUE9SVFMpIFwKIAkoY2QgJChIT1NUX1NVQkRJUikvbGli ZGVjbnVtYmVyICYmIFwKLQkgICQoTUFLRSkgJChGTEFHU19UT19QQVNTKSAg Y2hlY2spCisJICAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgICQoRVhUUkFf Qk9PVFNUUkFQX0ZMQUdTKSBjaGVjaykKIAogQGVuZGlmIGxpYmRlY251bWJl cgogCkBAIC0yMTk4MSw3ICsyMTk4OSw3IEBAIGNoZWNrLWxpYmd1aToKIAlA OiAkKE1BS0UpOyAkKHVuc3RhZ2UpCiAJQHI9YCR7UFdEX0NPTU1BTkR9YDsg ZXhwb3J0IHI7IFwKIAlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9 YDsgZXhwb3J0IHM7IFwKLQkkKEhPU1RfRVhQT1JUUykgXAorCSQoSE9TVF9F WFBPUlRTKSAgXAogCShjZCAkKEhPU1RfU1VCRElSKS9saWJndWkgJiYgXAog CSAgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpICBjaGVjaykKIApAQCAtMjI4 NzQsOSArMjI4ODIsOSBAQCBjaGVjay1saWJpYmVydHk6CiAJQDogJChNQUtF KTsgJCh1bnN0YWdlKQogCUByPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBy OyBcCiAJcz1gY2QgJChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9y dCBzOyBcCi0JJChIT1NUX0VYUE9SVFMpIFwKKwkkKEhPU1RfRVhQT1JUUykg JChFWFRSQV9IT1NUX0VYUE9SVFMpIFwKIAkoY2QgJChIT1NUX1NVQkRJUikv bGliaWJlcnR5ICYmIFwKLQkgICQoTUFLRSkgJChGTEFHU19UT19QQVNTKSAg Y2hlY2spCisJICAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgICQoRVhUUkFf Qk9PVFNUUkFQX0ZMQUdTKSBjaGVjaykKIAogQGVuZGlmIGxpYmliZXJ0eQog CkBAIC0yMzc1NCw5ICsyMzc2Miw5IEBAIGNoZWNrLWxpYmliZXJ0eS1saW5r ZXItcGx1Z2luOgogCUA6ICQoTUFLRSk7ICQodW5zdGFnZSkKIAlAcj1gJHtQ V0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAogCXM9YGNkICQoc3JjZGlyKTsg JHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoSE9TVF9FWFBPUlRT KSBcCisJJChIT1NUX0VYUE9SVFMpICQoRVhUUkFfSE9TVF9FWFBPUlRTKSBc CiAJKGNkICQoSE9TVF9TVUJESVIpL2xpYmliZXJ0eS1saW5rZXItcGx1Z2lu ICYmIFwKLQkgICQoTUFLRSkgJChGTEFHU19UT19QQVNTKSBAZXh0cmFfbGlu a2VyX3BsdWdpbl9mbGFnc0AgY2hlY2spCisJICAkKE1BS0UpICQoRkxBR1Nf VE9fUEFTUykgQGV4dHJhX2xpbmtlcl9wbHVnaW5fZmxhZ3NAICQoRVhUUkFf Qk9PVFNUUkFQX0ZMQUdTKSBjaGVjaykKIAogQGVuZGlmIGxpYmliZXJ0eS1s aW5rZXItcGx1Z2luCiAKQEAgLTI0MTgyLDcgKzI0MTkwLDcgQEAgY2hlY2st bGliaWNvbnY6CiAJQDogJChNQUtFKTsgJCh1bnN0YWdlKQogCUByPWAke1BX RF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCiAJcz1gY2QgJChzcmNkaXIpOyAk e1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChIT1NUX0VYUE9SVFMp IFwKKwkkKEhPU1RfRVhQT1JUUykgIFwKIAkoY2QgJChIT1NUX1NVQkRJUikv bGliaWNvbnYgJiYgXAogCSAgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpICBj aGVjaykKIApAQCAtMjQ1NjAsNyArMjQ1NjgsNyBAQCBjaGVjay1tNDoKIAlA OiAkKE1BS0UpOyAkKHVuc3RhZ2UpCiAJQHI9YCR7UFdEX0NPTU1BTkR9YDsg ZXhwb3J0IHI7IFwKIAlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1BTkR9 YDsgZXhwb3J0IHM7IFwKLQkkKEhPU1RfRVhQT1JUUykgXAorCSQoSE9TVF9F WFBPUlRTKSAgXAogCShjZCAkKEhPU1RfU1VCRElSKS9tNCAmJiBcCiAJICAk KE1BS0UpICQoRkxBR1NfVE9fUEFTUykgIGNoZWNrKQogCkBAIC0yNTAwMSw3 ICsyNTAwOSw3IEBAIGNoZWNrLXJlYWRsaW5lOgogCUA6ICQoTUFLRSk7ICQo dW5zdGFnZSkKIAlAcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAog CXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsg XAotCSQoSE9TVF9FWFBPUlRTKSBcCisJJChIT1NUX0VYUE9SVFMpICBcCiAJ KGNkICQoSE9TVF9TVUJESVIpL3JlYWRsaW5lICYmIFwKIAkgICQoTUFLRSkg JChGTEFHU19UT19QQVNTKSAgY2hlY2spCiAKQEAgLTI1NDQyLDcgKzI1NDUw LDcgQEAgY2hlY2stc2lkOgogCUA6ICQoTUFLRSk7ICQodW5zdGFnZSkKIAlA cj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAogCXM9YGNkICQoc3Jj ZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoSE9TVF9F WFBPUlRTKSBcCisJJChIT1NUX0VYUE9SVFMpICBcCiAJKGNkICQoSE9TVF9T VUJESVIpL3NpZCAmJiBcCiAJICAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykg IGNoZWNrKQogCkBAIC0yNTg4Myw3ICsyNTg5MSw3IEBAIGNoZWNrLXNpbToK IAlAOiAkKE1BS0UpOyAkKHVuc3RhZ2UpCiAJQHI9YCR7UFdEX0NPTU1BTkR9 YDsgZXhwb3J0IHI7IFwKIAlzPWBjZCAkKHNyY2Rpcik7ICR7UFdEX0NPTU1B TkR9YDsgZXhwb3J0IHM7IFwKLQkkKEhPU1RfRVhQT1JUUykgXAorCSQoSE9T VF9FWFBPUlRTKSAgXAogCShjZCAkKEhPU1RfU1VCRElSKS9zaW0gJiYgXAog CSAgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpICBjaGVjaykKIApAQCAtMjYz MjQsNyArMjYzMzIsNyBAQCBjaGVjay10ZXhpbmZvOgogCUA6ICQoTUFLRSk7 ICQodW5zdGFnZSkKIAlAcj1gJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgcjsg XAogCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQg czsgXAotCSQoSE9TVF9FWFBPUlRTKSBcCisJJChIT1NUX0VYUE9SVFMpICBc CiAJKGNkICQoSE9TVF9TVUJESVIpL3RleGluZm8gJiYgXAogCSAgJChNQUtF KSAkKEZMQUdTX1RPX1BBU1MpICBjaGVjaykKIApAQCAtMjc2MTUsNyArMjc2 MjMsNyBAQCBjaGVjay1nZGI6CiAJQDogJChNQUtFKTsgJCh1bnN0YWdlKQog CUByPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCiAJcz1gY2QgJChz cmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChIT1NU X0VYUE9SVFMpIFwKKwkkKEhPU1RfRVhQT1JUUykgIFwKIAkoY2QgJChIT1NU X1NVQkRJUikvZ2RiICYmIFwKIAkgICQoTUFLRSkgJChGTEFHU19UT19QQVNT KSAgY2hlY2spCiAKQEAgLTI4MDU2LDcgKzI4MDY0LDcgQEAgY2hlY2stZXhw ZWN0OgogCUA6ICQoTUFLRSk7ICQodW5zdGFnZSkKIAlAcj1gJHtQV0RfQ09N TUFORH1gOyBleHBvcnQgcjsgXAogCXM9YGNkICQoc3JjZGlyKTsgJHtQV0Rf Q09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoSE9TVF9FWFBPUlRTKSBcCisJ JChIT1NUX0VYUE9SVFMpICBcCiAJKGNkICQoSE9TVF9TVUJESVIpL2V4cGVj dCAmJiBcCiAJICAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgIGNoZWNrKQog CkBAIC0yODQ5Nyw3ICsyODUwNSw3IEBAIGNoZWNrLWd1aWxlOgogCUA6ICQo TUFLRSk7ICQodW5zdGFnZSkKIAlAcj1gJHtQV0RfQ09NTUFORH1gOyBleHBv cnQgcjsgXAogCXM9YGNkICQoc3JjZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBl eHBvcnQgczsgXAotCSQoSE9TVF9FWFBPUlRTKSBcCisJJChIT1NUX0VYUE9S VFMpICBcCiAJKGNkICQoSE9TVF9TVUJESVIpL2d1aWxlICYmIFwKIAkgICQo TUFLRSkgJChGTEFHU19UT19QQVNTKSAgY2hlY2spCiAKQEAgLTI4OTM4LDcg KzI4OTQ2LDcgQEAgY2hlY2stdGs6CiAJQDogJChNQUtFKTsgJCh1bnN0YWdl KQogCUByPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCiAJcz1gY2Qg JChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChI T1NUX0VYUE9SVFMpIFwKKwkkKEhPU1RfRVhQT1JUUykgIFwKIAkoY2QgJChI T1NUX1NVQkRJUikvdGsgJiYgXAogCSAgJChNQUtFKSAkKEZMQUdTX1RPX1BB U1MpICBjaGVjaykKIApAQCAtMzAxODksNyArMzAxOTcsNyBAQCBjaGVjay1n bmF0dG9vbHM6CiAJQDogJChNQUtFKTsgJCh1bnN0YWdlKQogCUByPWAke1BX RF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCiAJcz1gY2QgJChzcmNkaXIpOyAk e1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChIT1NUX0VYUE9SVFMp IFwKKwkkKEhPU1RfRVhQT1JUUykgIFwKIAkoY2QgJChIT1NUX1NVQkRJUikv Z25hdHRvb2xzICYmIFwKIAkgICQoTUFLRSkgJChGTEFHU19UT19QQVNTKSAg Y2hlY2spCiAKQEAgLTMxMDgyLDkgKzMxMDkwLDkgQEAgY2hlY2stbHRvLXBs dWdpbjoKIAlAOiAkKE1BS0UpOyAkKHVuc3RhZ2UpCiAJQHI9YCR7UFdEX0NP TU1BTkR9YDsgZXhwb3J0IHI7IFwKIAlzPWBjZCAkKHNyY2Rpcik7ICR7UFdE X0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKEhPU1RfRVhQT1JUUykgXAor CSQoSE9TVF9FWFBPUlRTKSAkKEVYVFJBX0hPU1RfRVhQT1JUUykgXAogCShj ZCAkKEhPU1RfU1VCRElSKS9sdG8tcGx1Z2luICYmIFwKLQkgICQoTUFLRSkg JChGTEFHU19UT19QQVNTKSBAZXh0cmFfbGlua2VyX3BsdWdpbl9mbGFnc0Ag Y2hlY2spCisJICAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgQGV4dHJhX2xp bmtlcl9wbHVnaW5fZmxhZ3NAICQoRVhUUkFfQk9PVFNUUkFQX0ZMQUdTKSBj aGVjaykKIAogQGVuZGlmIGx0by1wbHVnaW4KIApAQCAtMzE1MTAsNyArMzE1 MTgsNyBAQCBjaGVjay1saWJjYzE6CiAJQDogJChNQUtFKTsgJCh1bnN0YWdl KQogCUByPWAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCByOyBcCiAJcz1gY2Qg JChzcmNkaXIpOyAke1BXRF9DT01NQU5EfWA7IGV4cG9ydCBzOyBcCi0JJChI T1NUX0VYUE9SVFMpIFwKKwkkKEhPU1RfRVhQT1JUUykgIFwKIAkoY2QgJChI T1NUX1NVQkRJUikvbGliY2MxICYmIFwKIAkgICQoTUFLRSkgJChGTEFHU19U T19QQVNTKSAgY2hlY2spCiAKQEAgLTMxOTUxLDcgKzMxOTU5LDcgQEAgY2hl Y2stZ290b29sczoKIAlAOiAkKE1BS0UpOyAkKHVuc3RhZ2UpCiAJQHI9YCR7 UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKIAlzPWBjZCAkKHNyY2Rpcik7 ICR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHM7IFwKLQkkKEhPU1RfRVhQT1JU UykgXAorCSQoSE9TVF9FWFBPUlRTKSAgXAogCShjZCAkKEhPU1RfU1VCRElS KS9nb3Rvb2xzICYmIFwKIAkgICQoTUFLRSkgJChGTEFHU19UT19QQVNTKSAg Y2hlY2spCiAKZGlmZiAtLWdpdCBhL01ha2VmaWxlLnRwbCBiL01ha2VmaWxl LnRwbAppbmRleCBmNzM3Y2ZjLi41ZDJjZWEyIDEwMDY0NAotLS0gYS9NYWtl ZmlsZS50cGwKKysrIGIvTWFrZWZpbGUudHBsCkBAIC02MzQsNiArNjM0LDE0 IEBAIFBPU1RTVEFHRTFfRkxBR1NfVE9fUEFTUyA9IFwKIAkkKExUT19GTEFH U19UT19QQVNTKSBcCiAJImBlY2hvICdBREFGTEFHUz0kKEJPT1RfQURBRkxB R1MpJyB8IHNlZCAtZSBzJy9bXj1dW149XSo9JCQvWEZPTz0vJ2AiCiAKK0Bp ZiBnY2MtYm9vdHN0cmFwCitFWFRSQV9IT1NUX0VYUE9SVFMgPSBpZiBbICQo Y3VycmVudF9zdGFnZSkgIT0gc3RhZ2UxIF07IHRoZW4gXAorCQkgICAgICAg JChQT1NUU1RBR0UxX0hPU1RfRVhQT1JUUykgXAorCQkgICAgIGZpIDsKKwor RVhUUkFfQk9PVFNUUkFQX0ZMQUdTID0gQ0M9IiQkQ0MiIENYWD0iJCRDWFgi IExERkxBR1M9IiQkTERGTEFHUyIKK0BlbmRpZiBnY2MtYm9vdHN0cmFwCisK ICMgRmxhZ3MgdG8gcGFzcyBkb3duIHRvIG1ha2VzIHdoaWNoIGFyZSBidWls dCB3aXRoIHRoZSB0YXJnZXQgZW52aXJvbm1lbnQuCiAjIFRoZSBkb3VibGUg JCBkZWNyZWFzZXMgdGhlIGxlbmd0aCBvZiB0aGUgY29tbWFuZCBsaW5lOyB0 aG9zZSB2YXJpYWJsZXMKICMgYXJlIHNldCBpbiBCQVNFX0ZMQUdTX1RPX1BB U1MsIGFuZCB0aGUgc3ViLW1ha2Ugd2lsbCBleHBhbmQgdGhlbS4gIFRoZQpA QCAtMTIwMywxOCArMTIxMSwyMiBAQCBjaGVjay1bK21vZHVsZStdOgogCUBp ZiBbICckKGhvc3QpJyA9ICckKHRhcmdldCknIF0gOyB0aGVuIFwKIAkgIHI9 YCR7UFdEX0NPTU1BTkR9YDsgZXhwb3J0IHI7IFwKIAkgIHM9YGNkICQoc3Jj ZGlyKTsgJHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSAgJChIT1NU X0VYUE9SVFMpIFwKKwkgICQoSE9TVF9FWFBPUlRTKSBbKyBJRiBib290c3Ry YXAgK10kKEVYVFJBX0hPU1RfRVhQT1JUUylbKworCSAgRU5ESUYgYm9vdHN0 cmFwICtdIFwKIAkgIChjZCAkKEhPU1RfU1VCRElSKS9bK21vZHVsZStdICYm IFwKLQkgICAgJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpIFsrZXh0cmFfbWFr ZV9mbGFncytdIGNoZWNrKTsgXAorCSAgICAkKE1BS0UpICQoRkxBR1NfVE9f UEFTUykgWytleHRyYV9tYWtlX2ZsYWdzK11bKworCSAgICBJRiBib290c3Ry YXAgK10gJChFWFRSQV9CT09UU1RSQVBfRkxBR1MpWysgRU5ESUYgYm9vdHN0 cmFwICtdIGNoZWNrKQogCWZpCiBbKyBFTFNFIGNoZWNrICtdCiBjaGVjay1b K21vZHVsZStdOgogCUA6ICQoTUFLRSk7ICQodW5zdGFnZSkKIAlAcj1gJHtQ V0RfQ09NTUFORH1gOyBleHBvcnQgcjsgXAogCXM9YGNkICQoc3JjZGlyKTsg JHtQV0RfQ09NTUFORH1gOyBleHBvcnQgczsgXAotCSQoSE9TVF9FWFBPUlRT KSBcCisJJChIT1NUX0VYUE9SVFMpIFsrIElGIGJvb3RzdHJhcCArXSQoRVhU UkFfSE9TVF9FWFBPUlRTKVsrCisJRU5ESUYgYm9vdHN0cmFwICtdIFwKIAko Y2QgJChIT1NUX1NVQkRJUikvWyttb2R1bGUrXSAmJiBcCi0JICAkKE1BS0Up ICQoRkxBR1NfVE9fUEFTUykgWytleHRyYV9tYWtlX2ZsYWdzK10gY2hlY2sp CisJICAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgWytleHRyYV9tYWtlX2Zs YWdzK11bKworCSAgSUYgYm9vdHN0cmFwICtdICQoRVhUUkFfQk9PVFNUUkFQ X0ZMQUdTKVsrIEVORElGIGJvb3RzdHJhcCArXSBjaGVjaykKIFsrIEVORElG IG5vX2NoZWNrICtdCiBAZW5kaWYgWyttb2R1bGUrXQogCmRpZmYgLS1naXQg YS9jb25maWcvbWgtZGFyd2luIGIvY29uZmlnL21oLWRhcndpbgppbmRleCBh MDM5ZjIwLi4xNDhiNzMwIDEwMDY0NAotLS0gYS9jb25maWcvbWgtZGFyd2lu CisrKyBiL2NvbmZpZy9taC1kYXJ3aW4KQEAgLTEsMTggKzEsMjkgQEAKICMg VGhlIC1tZHluYW1pYy1uby1waWMgZW5zdXJlcyB0aGF0IHRoZSBjb21waWxl ciBleGVjdXRhYmxlIGlzIGJ1aWx0IHdpdGhvdXQKICMgcG9zaXRpb24taW5k ZXBlbmRlbnQtY29kZSAtLSB0aGUgdXN1YWwgZGVmYXVsdCBvbiBEYXJ3aW4u IFRoaXMgZml4IHNwZWVkcwotIyBjb21waWxlcyBieSAzLTUlLgotQk9PVF9D RkxBR1MgKz0gXAorIyBjb21waWxlcyBieSAzLTUlLiAgRG9uJ3QgYWRkIGl0 IGlmIHRoZSBjb21waWxlciBkb2Vzbid0IGFsc28gc3VwcG9ydAorIyAtbW5v LWR5bmFtaWMtbm8tcGljIHRvIHVuZG8gaXQuCitEQVJXSU5fTURZTkFNSUNf Tk9fUElDIDo9IFwKIGBjYXNlICR7aG9zdH0gaW4gaT84Ni0qLWRhcndpbiog fCBwb3dlcnBjLSotZGFyd2luKikgXAotICAgICAgICAgICAgICAgICBlY2hv IC1tZHluYW1pYy1uby1waWMgOzsgZXNhYztgCisgICAkKENDKSAtUyAteGMg L2Rldi9udWxsIC1vIC9kZXYvbnVsbCAtbW5vLWR5bmFtaWMtbm8tcGljIDI+ L2Rldi9udWxsIFwKKyAgICYmIGVjaG8gLW1keW5hbWljLW5vLXBpYyA7OyBl c2FjYAorREFSV0lOX0dDQ19NRFlOQU1JQ19OT19QSUMgOj0gXAorYGNhc2Ug JHtob3N0fSBpbiBpPzg2LSotZGFyd2luKiB8IHBvd2VycGMtKi1kYXJ3aW4q KSBcCisgICAkKENDKSAtUyAteGMgL2Rldi9udWxsIC1vIC9kZXYvbnVsbCAt bW5vLWR5bmFtaWMtbm8tcGljIDI+L2Rldi9udWxsIFwKKyAgIHx8IGVjaG8g LW1keW5hbWljLW5vLXBpYyA7OyBlc2FjYAogCiAjIGxkIG9uIERhcndpbiB2 ZXJzaW9ucyA+PSAxMC43IGRlZmF1bHRzIHRvIFBJRSBleGVjdXRhYmxlcy4g RGlzYWJsZSB0aGlzIGZvcgogIyBnY2MgY29tcG9uZW50cywgc2luY2UgaXQg aXMgaW5jb21wYXRpYmxlIHdpdGggb3VyIHBjaCBpbXBsZW1lbnRhdGlvbi4K LUJPT1RfTERGTEFHUyArPSBcCi1gY2FzZSAke2hvc3R9IGluICotKi1kYXJ3 aW5bMV1bMS05XSopIGVjaG8gLVdsLC1ub19waWUgOzsgZXNhYztgCitEQVJX SU5fTk9fUElFIDo9IGBjYXNlICR7aG9zdH0gaW4gKi0qLWRhcndpblsxXVsx LTldKikgZWNobyAtV2wsLW5vX3BpZSA7OyBlc2FjO2AKKworQk9PVF9DRkxB R1MgKz0gJChEQVJXSU5fTURZTkFNSUNfTk9fUElDKQorQk9PVF9MREZMQUdT ICs9ICQoREFSV0lOX05PX1BJRSkKIAogIyBTaW1pbGFybHksIGZvciBjcm9z cy1jb21waWxhdGlvbi4KLVNUQUdFMV9DRkxBR1MgKz0gXAotYGNhc2UgJHto b3N0fSBpbiBpPzg2LSotZGFyd2luKiB8IHBvd2VycGMtKi1kYXJ3aW4qKVwK LSAgICAgICAgICAgICAgICAgZWNobyAtbWR5bmFtaWMtbm8tcGljIDs7IGVz YWM7YAotU1RBR0UxX0xERkxBR1MgKz0gXAotYGNhc2UgJHtob3N0fSBpbiAq LSotZGFyd2luWzFdWzEtOV0qKSBlY2hvIC1XbCwtbm9fcGllIDs7IGVzYWM7 YAorU1RBR0UxX0NGTEFHUyArPSAkKERBUldJTl9NRFlOQU1JQ19OT19QSUMp CitTVEFHRTFfTERGTEFHUyArPSAkKERBUldJTl9OT19QSUUpCisKKyMgV2l0 aG91dCAtbW5vLWR5bmFtaWMtbm8tcGljIHN1cHBvcnQsIGFkZCAtbWR5bmFt aWMtbm8tcGljIGp1c3QgdG8gbGF0ZXIKKyMgc3RhZ2VzIHdoZW4gd2Uga25v dyBpdCBpcyBidWlsdCB3aXRoIGdjYy4KK1NUQUdFMl9DRkxBR1MgKz0gJChE QVJXSU5fR0NDX01EWU5BTUlDX05PX1BJQykKK1NUQUdFM19DRkxBR1MgKz0g JChEQVJXSU5fR0NDX01EWU5BTUlDX05PX1BJQykKK1NUQUdFNF9DRkxBR1Mg Kz0gJChEQVJXSU5fR0NDX01EWU5BTUlDX05PX1BJQykKZGlmZiAtLWdpdCBh L2NvbmZpZy9waWNmbGFnLm00IGIvY29uZmlnL3BpY2ZsYWcubTQKaW5kZXgg M2JjZGJmMS4uMmY1Yjk3MiAxMDA2NDQKLS0tIGEvY29uZmlnL3BpY2ZsYWcu bTQKKysrIGIvY29uZmlnL3BpY2ZsYWcubTQKQEAgLTcsOSArNywxNSBAQCBB Q19ERUZVTihbX0dDQ19QSUNGTEFHXSwgWwogY2FzZSAiJHskMn0iIGluCiAg ICAgIyBQSUMgaXMgdGhlIGRlZmF1bHQgb24gc29tZSB0YXJnZXRzIG9yIG11 c3Qgbm90IGJlIHVzZWQuCiAgICAgKi0qLWRhcndpbiopCi0JIyBQSUMgaXMg dGhlIGRlZmF1bHQgb24gdGhpcyBwbGF0Zm9ybQotCSMgQ29tbW9uIHN5bWJv bHMgbm90IGFsbG93ZWQgaW4gTUhfRFlMSUIgZmlsZXMKLQkkMT0tZm5vLWNv bW1vbgorCSMgRm9yIGRhcndpbiwgY29tbW9uIHN5bWJvbHMgYXJlIG5vdCBh bGxvd2VkIGluIE1IX0RZTElCIGZpbGVzCisJY2FzZSAiJHtDRkxBR1N9IiBp bgorCSAgIyBJZiB3ZSBhcmUgdXNpbmcgYSBjb21waWxlciBzdXBwb3J0aW5n IG1keW5hbWljLW5vLXBpYworCSAgIyBhbmQgdGhlIG9wdGlvbiBoYXMgYmVl biB0ZXN0ZWQgYXMgc2FmZSB0byBhZGQsIHRoZW4gY2FuY2VsCisJICAjIGl0 IGhlcmUsIHNpbmNlIHRoZSBjb2RlIGdlbmVyYXRlZCBpcyBpbmNvbXBhdGli bGUgd2l0aCBzaGFyZWQKKwkgICPCoGxpYnMuCisJICAqLW1keW5hbWljLW5v LXBpYyopICQxPSctZm5vLWNvbW1vbiAtbW5vLWR5bmFtaWMtbm8tcGljJyA7 OworCSAgKikgJDE9LWZuby1jb21tb24gOzsKKwllc2FjCiAJOzsKICAgICBh bHBoYSotZGVjLW9zZjUqKQogCSMgUElDIGlzIHRoZSBkZWZhdWx0LgpkaWZm IC0tZ2l0IGEvaW5jbHVkZS9saWJpYmVydHkuaCBiL2luY2x1ZGUvbGliaWJl cnR5LmgKaW5kZXggYjMzZGQ2NS4uOGUwOTZhMCAxMDA2NDQKLS0tIGEvaW5j bHVkZS9saWJpYmVydHkuaAorKysgYi9pbmNsdWRlL2xpYmliZXJ0eS5oCkBA IC02MjEsNyArNjIxLDcgQEAgZXh0ZXJuIGludCBwZXhlY3V0ZSAoY29uc3Qg Y2hhciAqLCBjaGFyICogY29uc3QgKiwgY29uc3QgY2hhciAqLAogCiBleHRl cm4gaW50IHB3YWl0IChpbnQsIGludCAqLCBpbnQpOwogCi0jaWYgIUhBVkVf REVDTF9BU1BSSU5URgorI2lmIGRlZmluZWQoSEFWRV9ERUNMX0FTUFJJTlRG KSAmJiAhSEFWRV9ERUNMX0FTUFJJTlRGCiAvKiBMaWtlIHNwcmludGYgYnV0 IHByb3ZpZGVzIGEgcG9pbnRlciB0byBtYWxsb2MnZCBzdG9yYWdlLCB3aGlj aCBtdXN0CiAgICBiZSBmcmVlZCBieSB0aGUgY2FsbGVyLiAgKi8KIApkaWZm IC0tZ2l0IGEvbGliaWJlcnR5L01ha2VmaWxlLmluIGIvbGliaWJlcnR5L01h a2VmaWxlLmluCmluZGV4IGYwNmNjNjkuLjdkN2UyZjQgMTAwNjQ0Ci0tLSBh L2xpYmliZXJ0eS9NYWtlZmlsZS5pbgorKysgYi9saWJpYmVydHkvTWFrZWZp bGUuaW4KQEAgLTMsNyArMyw3IEBACiAjCiAjIENvcHlyaWdodCAoQykgMTk5 MCwgMTk5MSwgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5Nywg MTk5OCwKICMgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwg MjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwKLSMg MjAxMiwgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgMjAxMiwg MjAxNCwgMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KICMKICMgVGhp cyBmaWxlIGlzIHBhcnQgb2YgdGhlIGxpYmliZXJ0eSBsaWJyYXJ5LgogIyBM aWJpYmVydHkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yCkBAIC0xMTMsNyArMTEzLDggQEAgaW5zdGFsbGNoZWNr OiBpbnN0YWxsY2hlY2stc3ViZGlyCiAKIElOQ0RJUj0kKHNyY2RpcikvJChN VUxUSVNSQ1RPUCkuLi9pbmNsdWRlCiAKLUNPTVBJTEUuYyA9ICQoQ0MpIC1j IEBERUZTQCAkKENGTEFHUykgJChDUFBGTEFHUykgLUkuIC1JJChJTkNESVIp ICQoSERFRklORVMpIEBhY19saWJpYmVydHlfd2Fybl9jZmxhZ3NACitDT01Q SUxFLmMgPSAkKENDKSAtYyBAREVGU0AgJChDRkxBR1MpICQoQ1BQRkxBR1Mp IC1JLiAtSSQoSU5DRElSKSBcCisgICAgICAgICAgICAgICAkKEhERUZJTkVT KSBAYWNfbGliaWJlcnR5X3dhcm5fY2ZsYWdzQCAtRF9HTlVfU09VUkNFCiAK ICMgSnVzdCB0byBtYWtlIHN1cmUgd2UgZG9uJ3QgdXNlIGEgYnVpbHQtaW4g cnVsZSB3aXRoIFZQQVRICiAuYy4kKG9iamV4dCk6CmRpZmYgLS1naXQgYS9s aWJpYmVydHkvY29uZmlnLmluIGIvbGliaWJlcnR5L2NvbmZpZy5pbgppbmRl eCA3YzA1YjlkLi4wZGVkYmYwIDEwMDY0NAotLS0gYS9saWJpYmVydHkvY29u ZmlnLmluCisrKyBiL2xpYmliZXJ0eS9jb25maWcuaW4KQEAgLTQ4NSw2ICs0 ODUsMjggQEAKIC8qIERlZmluZSB0byBhbiB1bnNpZ25lZCA2NC1iaXQgdHlw ZSBhdmFpbGFibGUgaW4gdGhlIGNvbXBpbGVyLiAqLwogI3VuZGVmIFVOU0lH TkVEXzY0QklUX1RZUEUKIAorLyogRW5hYmxlIGV4dGVuc2lvbnMgb24gQUlY IDMsIEludGVyaXguICAqLworI2lmbmRlZiBfQUxMX1NPVVJDRQorIyB1bmRl ZiBfQUxMX1NPVVJDRQorI2VuZGlmCisvKiBFbmFibGUgR05VIGV4dGVuc2lv bnMgb24gc3lzdGVtcyB0aGF0IGhhdmUgdGhlbS4gICovCisjaWZuZGVmIF9H TlVfU09VUkNFCisjIHVuZGVmIF9HTlVfU09VUkNFCisjZW5kaWYKKy8qIEVu YWJsZSB0aHJlYWRpbmcgZXh0ZW5zaW9ucyBvbiBTb2xhcmlzLiAgKi8KKyNp Zm5kZWYgX1BPU0lYX1BUSFJFQURfU0VNQU5USUNTCisjIHVuZGVmIF9QT1NJ WF9QVEhSRUFEX1NFTUFOVElDUworI2VuZGlmCisvKiBFbmFibGUgZXh0ZW5z aW9ucyBvbiBIUCBOb25TdG9wLiAgKi8KKyNpZm5kZWYgX1RBTkRFTV9TT1VS Q0UKKyMgdW5kZWYgX1RBTkRFTV9TT1VSQ0UKKyNlbmRpZgorLyogRW5hYmxl IGdlbmVyYWwgZXh0ZW5zaW9ucyBvbiBTb2xhcmlzLiAgKi8KKyNpZm5kZWYg X19FWFRFTlNJT05TX18KKyMgdW5kZWYgX19FWFRFTlNJT05TX18KKyNlbmRp ZgorCisKIC8qIERlZmluZSBXT1JEU19CSUdFTkRJQU4gdG8gMSBpZiB5b3Vy IHByb2Nlc3NvciBzdG9yZXMgd29yZHMgd2l0aCB0aGUgbW9zdAogICAgc2ln bmlmaWNhbnQgYnl0ZSBmaXJzdCAobGlrZSBNb3Rvcm9sYSBhbmQgU1BBUkMs IHVubGlrZSBJbnRlbCkuICovCiAjaWYgZGVmaW5lZCBBQ19BUFBMRV9VTklW RVJTQUxfQlVJTEQKQEAgLTUwMyw2ICs1MjUsMTYgQEAKIC8qIERlZmluZSBm b3IgbGFyZ2UgZmlsZXMsIG9uIEFJWC1zdHlsZSBob3N0cy4gKi8KICN1bmRl ZiBfTEFSR0VfRklMRVMKIAorLyogRGVmaW5lIHRvIDEgaWYgb24gTUlOSVgu ICovCisjdW5kZWYgX01JTklYCisKKy8qIERlZmluZSB0byAyIGlmIHRoZSBz eXN0ZW0gZG9lcyBub3QgcHJvdmlkZSBQT1NJWC4xIGZlYXR1cmVzIGV4Y2Vw dCB3aXRoCisgICB0aGlzIGRlZmluZWQuICovCisjdW5kZWYgX1BPU0lYXzFf U09VUkNFCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBuZWVkIHRvIGluIG9y ZGVyIGZvciBgc3RhdCcgYW5kIG90aGVyIHRoaW5ncyB0byB3b3JrLiAqLwor I3VuZGVmIF9QT1NJWF9TT1VSQ0UKKwogLyogRGVmaW5lIHRvIGVtcHR5IGlm IGBjb25zdCcgZG9lcyBub3QgY29uZm9ybSB0byBBTlNJIEMuICovCiAjdW5k ZWYgY29uc3QKIApkaWZmIC0tZ2l0IGEvbGliaWJlcnR5L2NvbmZpZ3VyZSBi L2xpYmliZXJ0eS9jb25maWd1cmUKaW5kZXggMjAwN2VjYy4uZGEyZGY0ZSAx MDA3NTUKLS0tIGEvbGliaWJlcnR5L2NvbmZpZ3VyZQorKysgYi9saWJpYmVy dHkvY29uZmlndXJlCkBAIC01OTksMTEgKzU5OSwxMSBAQCBQSUNGTEFHCiBJ TlNUQUxMX0RBVEEKIElOU1RBTExfU0NSSVBUCiBJTlNUQUxMX1BST0dSQU0K LUVHUkVQCi1HUkVQCiBPVVRQVVRfT1BUSU9OCiBOT19NSU5VU19DX01JTlVT X08KIGFjX2xpYmliZXJ0eV93YXJuX2NmbGFncworRUdSRVAKK0dSRVAKIENQ UAogT0JKRVhUCiBFWEVFWFQKQEAgLTE0ODAsNiArMTQ4MCw5MyBAQCBmaQog CiB9ICMgYWNfZm5fY190cnlfY3BwCiAKKyMgYWNfZm5fY19jaGVja19oZWFk ZXJfbW9uZ3JlbCBMSU5FTk8gSEVBREVSIFZBUiBJTkNMVURFUworIyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisjIFRlc3RzIHdoZXRoZXIgSEVBREVSIGV4aXN0cywgZ2l2aW5n IGEgd2FybmluZyBpZiBpdCBjYW5ub3QgYmUgY29tcGlsZWQgdXNpbmcKKyMg dGhlIGluY2x1ZGUgZmlsZXMgaW4gSU5DTFVERVMgYW5kIHNldHRpbmcgdGhl IGNhY2hlIHZhcmlhYmxlIFZBUgorIyBhY2NvcmRpbmdseS4KK2FjX2ZuX2Nf Y2hlY2tfaGVhZGVyX21vbmdyZWwgKCkKK3sKKyAgYXNfbGluZW5vPSR7YXNf bGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9 JGFzX2xpbmVub19zdGFjaworICBpZiB7IGFzX3Zhcj0kMzsgZXZhbCAidGVz dCBcIlwkeyRhc192YXIrc2V0fVwiID0gc2V0IjsgfTsgdGhlbiA6CisgIHsg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tp bmcgZm9yICQyIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkMi4u LiAiID4mNjsgfQoraWYgeyBhc192YXI9JDM7IGV2YWwgInRlc3QgXCJcJHsk YXNfdmFyK3NldH1cIiA9IHNldCI7IH07IHRoZW4gOgorICAkYXNfZWNob19u ICIoY2FjaGVkKSAiID4mNgorZmkKK2V2YWwgYWNfcmVzPVwkJDMKKwkgICAg ICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy ZXN1bHQ6ICRhY19yZXMiID4mNQorJGFzX2VjaG8gIiRhY19yZXMiID4mNjsg fQorZWxzZQorICAjIElzIHRoZSBoZWFkZXIgY29tcGlsYWJsZT8KK3sgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcg JDIgdXNhYmlsaXR5IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nICQyIHVz YWJpbGl0eS4uLiAiID4mNjsgfQorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VP RiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLwor JDQKKyNpbmNsdWRlIDwkMj4KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29t cGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19oZWFkZXJfY29tcGlsZXI9 eWVzCitlbHNlCisgIGFjX2hlYWRlcl9jb21waWxlcj1ubworZmkKK3JtIC1m IGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRl c3QuJGFjX2V4dAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiByZXN1bHQ6ICRhY19oZWFkZXJfY29tcGlsZXIiID4mNQorJGFz X2VjaG8gIiRhY19oZWFkZXJfY29tcGlsZXIiID4mNjsgfQorCisjIElzIHRo ZSBoZWFkZXIgcHJlc2VudD8KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogY2hlY2tpbmcgJDIgcHJlc2VuY2UiID4mNQorJGFz X2VjaG9fbiAiY2hlY2tpbmcgJDIgcHJlc2VuY2UuLi4gIiA+JjY7IH0KK2Nh dCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8q IGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDwkMj4KK19BQ0VPRgor aWYgYWNfZm5fY190cnlfY3BwICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2hl YWRlcl9wcmVwcm9jPXllcworZWxzZQorICBhY19oZWFkZXJfcHJlcHJvYz1u bworZmkKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0Cit7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs dDogJGFjX2hlYWRlcl9wcmVwcm9jIiA+JjUKKyRhc19lY2hvICIkYWNfaGVh ZGVyX3ByZXByb2MiID4mNjsgfQorCisjIFNvPyAgV2hhdCBhYm91dCB0aGlz IGhlYWRlcj8KK2Nhc2UgJGFjX2hlYWRlcl9jb21waWxlcjokYWNfaGVhZGVy X3ByZXByb2M6JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcgaW4gIygoCisgIHll czpubzogKQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogV0FSTklORzogJDI6IGFjY2VwdGVkIGJ5IHRoZSBjb21waWxl ciwgcmVqZWN0ZWQgYnkgdGhlIHByZXByb2Nlc3NvciEiID4mNQorJGFzX2Vj aG8gIiRhc19tZTogV0FSTklORzogJDI6IGFjY2VwdGVkIGJ5IHRoZSBjb21w aWxlciwgcmVqZWN0ZWQgYnkgdGhlIHByZXByb2Nlc3NvciEiID4mMjt9Cisg ICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBX QVJOSU5HOiAkMjogcHJvY2VlZGluZyB3aXRoIHRoZSBjb21waWxlcidzIHJl c3VsdCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkMjogcHJv Y2VlZGluZyB3aXRoIHRoZSBjb21waWxlcidzIHJlc3VsdCIgPiYyO30KKyAg ICA7OworICBubzp5ZXM6KiApCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAkMjogcHJlc2VudCBidXQg Y2Fubm90IGJlIGNvbXBpbGVkIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdB Uk5JTkc6ICQyOiBwcmVzZW50IGJ1dCBjYW5ub3QgYmUgY29tcGlsZWQiID4m Mjt9CisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBXQVJOSU5HOiAkMjogICAgIGNoZWNrIGZvciBtaXNzaW5nIHByZXJl cXVpc2l0ZSBoZWFkZXJzPyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJO SU5HOiAkMjogICAgIGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0ZSBo ZWFkZXJzPyIgPiYyO30KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICQyOiBzZWUgdGhlIEF1dG9jb25m IGRvY3VtZW50YXRpb24iID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklO RzogJDI6IHNlZSB0aGUgQXV0b2NvbmYgZG9jdW1lbnRhdGlvbiIgPiYyO30K KyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IFdBUk5JTkc6ICQyOiAgICAgc2VjdGlvbiBcIlByZXNlbnQgQnV0IENhbm5v dCBCZSBDb21waWxlZFwiIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5J Tkc6ICQyOiAgICAgc2VjdGlvbiBcIlByZXNlbnQgQnV0IENhbm5vdCBCZSBD b21waWxlZFwiIiA+JjI7fQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogV0FSTklORzogJDI6IHByb2NlZWRpbmcgd2l0 aCB0aGUgY29tcGlsZXIncyByZXN1bHQiID4mNQorJGFzX2VjaG8gIiRhc19t ZTogV0FSTklORzogJDI6IHByb2NlZWRpbmcgd2l0aCB0aGUgY29tcGlsZXIn cyByZXN1bHQiID4mMjt9CisgICAgOzsKK2VzYWMKKyAgeyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJDIi ID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICQyLi4uICIgPiY2OyB9 CitpZiB7IGFzX3Zhcj0kMzsgZXZhbCAidGVzdCBcIlwkeyRhc192YXIrc2V0 fVwiID0gc2V0IjsgfTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQp ICIgPiY2CitlbHNlCisgIGV2YWwgIiQzPVwkYWNfaGVhZGVyX2NvbXBpbGVy IgorZmkKK2V2YWwgYWNfcmVzPVwkJDMKKwkgICAgICAgeyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMi ID4mNQorJGFzX2VjaG8gIiRhY19yZXMiID4mNjsgfQorZmkKKyAgZXZhbCAk YXNfbGluZW5vX3N0YWNrOyB0ZXN0ICJ4JGFzX2xpbmVub19zdGFjayIgPSB4 ICYmIHsgYXNfbGluZW5vPTsgdW5zZXQgYXNfbGluZW5vO30KKworfSAjIGFj X2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwKKwogIyBhY19mbl9jX3RyeV9y dW4gTElORU5PCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgVHJ5IHRv IGxpbmsgY29uZnRlc3QuJGFjX2V4dCwgYW5kIHJldHVybiB3aGV0aGVyIHRo aXMgc3VjY2VlZGVkLiBBc3N1bWVzCkBAIC0xNTIyLDYgKzE2MDksMzcgQEAg ZmkKIAogfSAjIGFjX2ZuX2NfdHJ5X3J1bgogCisjIGFjX2ZuX2NfY2hlY2tf aGVhZGVyX2NvbXBpbGUgTElORU5PIEhFQURFUiBWQVIgSU5DTFVERVMKKyMg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIyBUZXN0cyB3aGV0aGVyIEhFQURFUiBleGlzdHMgYW5k IGNhbiBiZSBjb21waWxlZCB1c2luZyB0aGUgaW5jbHVkZSBmaWxlcyBpbgor IyBJTkNMVURFUywgc2V0dGluZyB0aGUgY2FjaGUgdmFyaWFibGUgVkFSIGFj Y29yZGluZ2x5LgorYWNfZm5fY19jaGVja19oZWFkZXJfY29tcGlsZSAoKQor eworICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0 YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCisgIHsgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcg Zm9yICQyIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkMi4uLiAi ID4mNjsgfQoraWYgeyBhc192YXI9JDM7IGV2YWwgInRlc3QgXCJcJHskYXNf dmFyK3NldH1cIiA9IHNldCI7IH07IHRoZW4gOgorICAkYXNfZWNob19uICIo Y2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FD RU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICov CiskNAorI2luY2x1ZGUgPCQyPgorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9j b21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGV2YWwgIiQzPXllcyIKK2Vs c2UKKyAgZXZhbCAiJDM9bm8iCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5l cnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQor ZXZhbCBhY19yZXM9XCQkMworCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1Cisk YXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9CisgIGV2YWwgJGFzX2xpbmVub19z dGFjazsgdGVzdCAieCRhc19saW5lbm9fc3RhY2siID0geCAmJiB7IGFzX2xp bmVubz07IHVuc2V0IGFzX2xpbmVubzt9CisKK30gIyBhY19mbl9jX2NoZWNr X2hlYWRlcl9jb21waWxlCisKICMgYWNfZm5fY19jaGVja19oZWFkZXJfcHJl cHJvYyBMSU5FTk8gSEVBREVSIFZBUgogIyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIFRlc3RzIHdoZXRoZXIg SEVBREVSIGlzIHByZXNlbnQsIHNldHRpbmcgdGhlIGNhY2hlIHZhcmlhYmxl IFZBUiBhY2NvcmRpbmdseS4KQEAgLTM2MTAsMzEyICszNzI4LDExNCBAQCBh Y19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQ UEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJAogYWNfY29tcGls ZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQogCiAKLSMgQ2hlY2sgd2hl dGhlciAtLWVuYWJsZS1sYXJnZWZpbGUgd2FzIGdpdmVuLgotaWYgdGVzdCAi JHtlbmFibGVfbGFyZ2VmaWxlK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgZW5h YmxldmFsPSRlbmFibGVfbGFyZ2VmaWxlOworYWNfZXh0PWMKK2FjX2NwcD0n JENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAk Q1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0Mg LW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZM QUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJf Z251PSRhY19jdl9jX2NvbXBpbGVyX2dudQoreyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcnVuIHRo ZSBDIHByZXByb2Nlc3NvciIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBo b3cgdG8gcnVuIHRoZSBDIHByZXByb2Nlc3Nvci4uLiAiID4mNjsgfQorIyBP biBTdW5zLCBzb21ldGltZXMgJENQUCBuYW1lcyBhIGRpcmVjdG9yeS4KK2lm IHRlc3QgLW4gIiRDUFAiICYmIHRlc3QgLWQgIiRDUFAiOyB0aGVuCisgIENQ UD0KIGZpCi0KLWlmIHRlc3QgIiRlbmFibGVfbGFyZ2VmaWxlIiAhPSBubzsg dGhlbgotCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogY2hlY2tpbmcgZm9yIHNwZWNpYWwgQyBjb21waWxlciBvcHRpb25z IG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMiID4mNQotJGFzX2VjaG9fbiAiY2hl Y2tpbmcgZm9yIHNwZWNpYWwgQyBjb21waWxlciBvcHRpb25zIG5lZWRlZCBm b3IgbGFyZ2UgZmlsZXMuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3Zf c3lzX2xhcmdlZmlsZV9DQytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiB0ZXN0 IC16ICIkQ1BQIjsgdGhlbgorICBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQ1BQ K3NldH0iID0gc2V0OyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkg IiA+JjYKIGVsc2UKLSAgYWNfY3Zfc3lzX2xhcmdlZmlsZV9DQz1ubwotICAg ICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KLSAgICAgICBhY19zYXZl X0NDPSRDQwotICAgICAgIHdoaWxlIDo7IGRvCi0JICMgSVJJWCA2LjIgYW5k IGxhdGVyIGRvIG5vdCBzdXBwb3J0IGxhcmdlIGZpbGVzIGJ5IGRlZmF1bHQs Ci0JICMgc28gdXNlIHRoZSBDIGNvbXBpbGVyJ3MgLW4zMiBvcHRpb24gaWYg dGhhdCBoZWxwcy4KLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29u ZnRlc3QuJGFjX2V4dAorICAgICAgIyBEb3VibGUgcXVvdGVzIGJlY2F1c2Ug Q1BQIG5lZWRzIHRvIGJlIGV4cGFuZGVkCisgICAgZm9yIENQUCBpbiAiJEND IC1FIiAiJENDIC1FIC10cmFkaXRpb25hbC1jcHAiICIvbGliL2NwcCIKKyAg ICBkbworICAgICAgYWNfcHJlcHJvY19vaz1mYWxzZQorZm9yIGFjX2NfcHJl cHJvY193YXJuX2ZsYWcgaW4gJycgeWVzCitkbworICAjIFVzZSBhIGhlYWRl ciBmaWxlIHRoYXQgY29tZXMgd2l0aCBnY2MsIHNvIGNvbmZpZ3VyaW5nIGds aWJjCisgICMgd2l0aCBhIGZyZXNoIGNyb3NzLWNvbXBpbGVyIHdvcmtzLgor ICAjIFByZWZlciA8bGltaXRzLmg+IHRvIDxhc3NlcnQuaD4gaWYgX19TVERD X18gaXMgZGVmaW5lZCwgc2luY2UKKyAgIyA8bGltaXRzLmg+IGV4aXN0cyBl dmVuIG9uIGZyZWVzdGFuZGluZyBjb21waWxlcnMuCisgICMgT24gdGhlIE5l WFQsIGNjIC1FIHJ1bnMgdGhlIGNvZGUgdGhyb3VnaCB0aGUgY29tcGlsZXIn cyBwYXJzZXIsCisgICMgbm90IGp1c3QgdGhyb3VnaCBjcHAuICJTeW50YXgg ZXJyb3IiIGlzIGhlcmUgdG8gY2F0Y2ggdGhpcyBjYXNlLgorICBjYXQgY29u ZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAvKiBlbmQg Y29uZmRlZnMuaC4gICovCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gLyog Q2hlY2sgdGhhdCBvZmZfdCBjYW4gcmVwcmVzZW50IDIqKjYzIC0gMSBjb3Jy ZWN0bHkuCi0gICAgV2UgY2FuJ3Qgc2ltcGx5IGRlZmluZSBMQVJHRV9PRkZf VCB0byBiZSA5MjIzMzcyMDM2ODU0Nzc1ODA3LAotICAgIHNpbmNlIHNvbWUg QysrIGNvbXBpbGVycyBtYXNxdWVyYWRpbmcgYXMgQyBjb21waWxlcnMKLSAg ICBpbmNvcnJlY3RseSByZWplY3QgOTIyMzM3MjAzNjg1NDc3NTgwNy4gICov Ci0jZGVmaW5lIExBUkdFX09GRl9UICgoKG9mZl90KSAxIDw8IDYyKSAtIDEg KyAoKG9mZl90KSAxIDw8IDYyKSkKLSAgaW50IG9mZl90X2lzX2xhcmdlWyhM QVJHRV9PRkZfVCAlIDIxNDc0ODM2MjkgPT0gNzIxCi0JCSAgICAgICAmJiBM QVJHRV9PRkZfVCAlIDIxNDc0ODM2NDcgPT0gMSkKLQkJICAgICAgPyAxIDog LTFdOwotaW50Ci1tYWluICgpCi17Ci0KLSAgOwotICByZXR1cm4gMDsKLX0K KyNpZmRlZiBfX1NURENfXworIyBpbmNsdWRlIDxsaW1pdHMuaD4KKyNlbHNl CisjIGluY2x1ZGUgPGFzc2VydC5oPgorI2VuZGlmCisJCSAgICAgU3ludGF4 IGVycm9yCiBfQUNFT0YKLQkgaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJ TkVOTyI7IHRoZW4gOgotICBicmVhaworaWYgYWNfZm5fY190cnlfY3BwICIk TElORU5PIjsgdGhlbiA6CisKK2Vsc2UKKyAgIyBCcm9rZW46IGZhaWxzIG9u IHZhbGlkIGlucHV0LgorY29udGludWUKIGZpCi1ybSAtZiBjb3JlIGNvbmZ0 ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0Ci0JIENDPSIkQ0MgLW4zMiIK LQkgaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgot ICBhY19jdl9zeXNfbGFyZ2VmaWxlX0NDPScgLW4zMic7IGJyZWFrCitybSAt ZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAorCisgICMgT0ssIHdv cmtzIG9uIHNhbmUgY2FzZXMuICBOb3cgY2hlY2sgd2hldGhlciBub25leGlz dGVudCBoZWFkZXJzCisgICMgY2FuIGJlIGRldGVjdGVkIGFuZCBob3cuCisg IGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQK Ky8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxhY19ub25leGlz dGVudC5oPgorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jcHAgIiRMSU5FTk8i OyB0aGVuIDoKKyAgIyBCcm9rZW46IHN1Y2Nlc3Mgb24gaW52YWxpZCBpbnB1 dC4KK2NvbnRpbnVlCitlbHNlCisgICMgUGFzc2VzIGJvdGggdGVzdHMuCith Y19wcmVwcm9jX29rPToKK2JyZWFrCiBmaQotcm0gLWYgY29yZSBjb25mdGVz dC5lcnIgY29uZnRlc3QuJGFjX29iamV4dAotCSBicmVhawotICAgICAgIGRv bmUKLSAgICAgICBDQz0kYWNfc2F2ZV9DQwotICAgICAgIHJtIC1mIGNvbmZ0 ZXN0LiRhY19leHQKLSAgICBmaQorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0 ZXN0LiRhY19leHQKKworZG9uZQorIyBCZWNhdXNlIG9mIGBicmVhaycsIF9B Q19QUkVQUk9DX0lGRUxTRSdzIGNsZWFuaW5nIGNvZGUgd2FzIHNraXBwZWQu CitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAoraWYgJGFj X3ByZXByb2Nfb2s7IHRoZW4gOgorICBicmVhawogZmkKLXsgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zf c3lzX2xhcmdlZmlsZV9DQyIgPiY1Ci0kYXNfZWNobyAiJGFjX2N2X3N5c19s YXJnZWZpbGVfQ0MiID4mNjsgfQotICBpZiB0ZXN0ICIkYWNfY3Zfc3lzX2xh cmdlZmlsZV9DQyIgIT0gbm87IHRoZW4KLSAgICBDQz0kQ0MkYWNfY3Zfc3lz X2xhcmdlZmlsZV9DQwotICBmaQogCi0gIHsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIF9GSUxFX09GRlNF VF9CSVRTIHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMiID4mNQotJGFz X2VjaG9fbiAiY2hlY2tpbmcgZm9yIF9GSUxFX09GRlNFVF9CSVRTIHZhbHVl IG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMuLi4gIiA+JjY7IH0KLWlmIHRlc3Qg IiR7YWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMrc2V0fSIgPSBzZXQ7IHRo ZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorICAgIGRvbmUK KyAgICBhY19jdl9wcm9nX0NQUD0kQ1BQCisKK2ZpCisgIENQUD0kYWNfY3Zf cHJvZ19DUFAKIGVsc2UKLSAgd2hpbGUgOjsgZG8KKyAgYWNfY3ZfcHJvZ19D UFA9JENQUAorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogcmVzdWx0OiAkQ1BQIiA+JjUKKyRhc19lY2hvICIkQ1BQIiA+ JjY7IH0KK2FjX3ByZXByb2Nfb2s9ZmFsc2UKK2ZvciBhY19jX3ByZXByb2Nf d2Fybl9mbGFnIGluICcnIHllcworZG8KKyAgIyBVc2UgYSBoZWFkZXIgZmls ZSB0aGF0IGNvbWVzIHdpdGggZ2NjLCBzbyBjb25maWd1cmluZyBnbGliYwor ICAjIHdpdGggYSBmcmVzaCBjcm9zcy1jb21waWxlciB3b3Jrcy4KKyAgIyBQ cmVmZXIgPGxpbWl0cy5oPiB0byA8YXNzZXJ0Lmg+IGlmIF9fU1REQ19fIGlz IGRlZmluZWQsIHNpbmNlCisgICMgPGxpbWl0cy5oPiBleGlzdHMgZXZlbiBv biBmcmVlc3RhbmRpbmcgY29tcGlsZXJzLgorICAjIE9uIHRoZSBOZVhULCBj YyAtRSBydW5zIHRoZSBjb2RlIHRocm91Z2ggdGhlIGNvbXBpbGVyJ3MgcGFy c2VyLAorICAjIG5vdCBqdXN0IHRocm91Z2ggY3BwLiAiU3ludGF4IGVycm9y IiBpcyBoZXJlIHRvIGNhdGNoIHRoaXMgY2FzZS4KICAgY2F0IGNvbmZkZWZz LmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogLyogZW5kIGNvbmZk ZWZzLmguICAqLwotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotIC8qIENoZWNr IHRoYXQgb2ZmX3QgY2FuIHJlcHJlc2VudCAyKio2MyAtIDEgY29ycmVjdGx5 LgotICAgIFdlIGNhbid0IHNpbXBseSBkZWZpbmUgTEFSR0VfT0ZGX1QgdG8g YmUgOTIyMzM3MjAzNjg1NDc3NTgwNywKLSAgICBzaW5jZSBzb21lIEMrKyBj b21waWxlcnMgbWFzcXVlcmFkaW5nIGFzIEMgY29tcGlsZXJzCi0gICAgaW5j b3JyZWN0bHkgcmVqZWN0IDkyMjMzNzIwMzY4NTQ3NzU4MDcuICAqLwotI2Rl ZmluZSBMQVJHRV9PRkZfVCAoKChvZmZfdCkgMSA8PCA2MikgLSAxICsgKChv ZmZfdCkgMSA8PCA2MikpCi0gIGludCBvZmZfdF9pc19sYXJnZVsoTEFSR0Vf T0ZGX1QgJSAyMTQ3NDgzNjI5ID09IDcyMQotCQkgICAgICAgJiYgTEFSR0Vf T0ZGX1QgJSAyMTQ3NDgzNjQ3ID09IDEpCi0JCSAgICAgID8gMSA6IC0xXTsK LWludAotbWFpbiAoKQotewotCi0gIDsKLSAgcmV0dXJuIDA7Ci19CisjaWZk ZWYgX19TVERDX18KKyMgaW5jbHVkZSA8bGltaXRzLmg+CisjZWxzZQorIyBp bmNsdWRlIDxhc3NlcnQuaD4KKyNlbmRpZgorCQkgICAgIFN5bnRheCBlcnJv cgogX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsg dGhlbiA6Ci0gIGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzPW5vOyBicmVh aworaWYgYWNfZm5fY190cnlfY3BwICIkTElORU5PIjsgdGhlbiA6CisKK2Vs c2UKKyAgIyBCcm9rZW46IGZhaWxzIG9uIHZhbGlkIGlucHV0LgorY29udGlu dWUKIGZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNf b2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK3JtIC1mIGNvbmZ0ZXN0LmVyciBj b25mdGVzdC4kYWNfZXh0CisKKyAgIyBPSywgd29ya3Mgb24gc2FuZSBjYXNl cy4gIE5vdyBjaGVjayB3aGV0aGVyIG5vbmV4aXN0ZW50IGhlYWRlcnMKKyAg IyBjYW4gYmUgZGV0ZWN0ZWQgYW5kIGhvdy4KICAgY2F0IGNvbmZkZWZzLmgg LSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogLyogZW5kIGNvbmZkZWZz LmguICAqLwotI2RlZmluZSBfRklMRV9PRkZTRVRfQklUUyA2NAotI2luY2x1 ZGUgPHN5cy90eXBlcy5oPgotIC8qIENoZWNrIHRoYXQgb2ZmX3QgY2FuIHJl cHJlc2VudCAyKio2MyAtIDEgY29ycmVjdGx5LgotICAgIFdlIGNhbid0IHNp bXBseSBkZWZpbmUgTEFSR0VfT0ZGX1QgdG8gYmUgOTIyMzM3MjAzNjg1NDc3 NTgwNywKLSAgICBzaW5jZSBzb21lIEMrKyBjb21waWxlcnMgbWFzcXVlcmFk aW5nIGFzIEMgY29tcGlsZXJzCi0gICAgaW5jb3JyZWN0bHkgcmVqZWN0IDky MjMzNzIwMzY4NTQ3NzU4MDcuICAqLwotI2RlZmluZSBMQVJHRV9PRkZfVCAo KChvZmZfdCkgMSA8PCA2MikgLSAxICsgKChvZmZfdCkgMSA8PCA2MikpCi0g IGludCBvZmZfdF9pc19sYXJnZVsoTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjI5 ID09IDcyMQotCQkgICAgICAgJiYgTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjQ3 ID09IDEpCi0JCSAgICAgID8gMSA6IC0xXTsKLWludAotbWFpbiAoKQotewot Ci0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5 X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSAgYWNfY3Zfc3lzX2ZpbGVf b2Zmc2V0X2JpdHM9NjQ7IGJyZWFrCi1maQotcm0gLWYgY29yZSBjb25mdGVz dC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0g IGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzPXVua25vd24KLSAgYnJlYWsK LWRvbmUKLWZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IHJlc3VsdDogJGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzIiA+ JjUKLSRhc19lY2hvICIkYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMiID4m NjsgfQotY2FzZSAkYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMgaW4gIygK LSAgbm8gfCB1bmtub3duKSA7OwotICAqKQotY2F0ID4+Y29uZmRlZnMuaCA8 PF9BQ0VPRgotI2RlZmluZSBfRklMRV9PRkZTRVRfQklUUyAkYWNfY3Zfc3lz X2ZpbGVfb2Zmc2V0X2JpdHMKLV9BQ0VPRgotOzsKLWVzYWMKLXJtIC1yZiBj b25mdGVzdCoKLSAgaWYgdGVzdCAkYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2Jp dHMgPSB1bmtub3duOyB0aGVuCi0gICAgeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgX0xBUkdFX0ZJTEVT IHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMiID4mNQotJGFzX2VjaG9f biAiY2hlY2tpbmcgZm9yIF9MQVJHRV9GSUxFUyB2YWx1ZSBuZWVkZWQgZm9y IGxhcmdlIGZpbGVzLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3N5 c19sYXJnZV9maWxlcytzZXR9IiA9IHNldDsgdGhlbiA6Ci0gICRhc19lY2hv X24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIHdoaWxlIDo7IGRvCi0gIGNh dCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8q IGVuZCBjb25mZGVmcy5oLiAgKi8KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4K LSAvKiBDaGVjayB0aGF0IG9mZl90IGNhbiByZXByZXNlbnQgMioqNjMgLSAx IGNvcnJlY3RseS4KLSAgICBXZSBjYW4ndCBzaW1wbHkgZGVmaW5lIExBUkdF X09GRl9UIHRvIGJlIDkyMjMzNzIwMzY4NTQ3NzU4MDcsCi0gICAgc2luY2Ug c29tZSBDKysgY29tcGlsZXJzIG1hc3F1ZXJhZGluZyBhcyBDIGNvbXBpbGVy cwotICAgIGluY29ycmVjdGx5IHJlamVjdCA5MjIzMzcyMDM2ODU0Nzc1ODA3 LiAgKi8KLSNkZWZpbmUgTEFSR0VfT0ZGX1QgKCgob2ZmX3QpIDEgPDwgNjIp IC0gMSArICgob2ZmX3QpIDEgPDwgNjIpKQotICBpbnQgb2ZmX3RfaXNfbGFy Z2VbKExBUkdFX09GRl9UICUgMjE0NzQ4MzYyOSA9PSA3MjEKLQkJICAgICAg ICYmIExBUkdFX09GRl9UICUgMjE0NzQ4MzY0NyA9PSAxKQotCQkgICAgICA/ IDEgOiAtMV07Ci1pbnQKLW1haW4gKCkKLXsKLQotICA7Ci0gIHJldHVybiAw OwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5P IjsgdGhlbiA6Ci0gIGFjX2N2X3N5c19sYXJnZV9maWxlcz1ubzsgYnJlYWsK LWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2Jq ZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAgY2F0IGNvbmZkZWZzLmggLSA8PF9B Q0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAq LwotI2RlZmluZSBfTEFSR0VfRklMRVMgMQotI2luY2x1ZGUgPHN5cy90eXBl cy5oPgotIC8qIENoZWNrIHRoYXQgb2ZmX3QgY2FuIHJlcHJlc2VudCAyKio2 MyAtIDEgY29ycmVjdGx5LgotICAgIFdlIGNhbid0IHNpbXBseSBkZWZpbmUg TEFSR0VfT0ZGX1QgdG8gYmUgOTIyMzM3MjAzNjg1NDc3NTgwNywKLSAgICBz aW5jZSBzb21lIEMrKyBjb21waWxlcnMgbWFzcXVlcmFkaW5nIGFzIEMgY29t cGlsZXJzCi0gICAgaW5jb3JyZWN0bHkgcmVqZWN0IDkyMjMzNzIwMzY4NTQ3 NzU4MDcuICAqLwotI2RlZmluZSBMQVJHRV9PRkZfVCAoKChvZmZfdCkgMSA8 PCA2MikgLSAxICsgKChvZmZfdCkgMSA8PCA2MikpCi0gIGludCBvZmZfdF9p c19sYXJnZVsoTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjI5ID09IDcyMQotCQkg ICAgICAgJiYgTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjQ3ID09IDEpCi0JCSAg ICAgID8gMSA6IC0xXTsKLWludAotbWFpbiAoKQotewotCi0gIDsKLSAgcmV0 dXJuIDA7Ci19Ci1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRM SU5FTk8iOyB0aGVuIDoKLSAgYWNfY3Zfc3lzX2xhcmdlX2ZpbGVzPTE7IGJy ZWFrCi1maQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFj X29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gIGFjX2N2X3N5c19sYXJnZV9m aWxlcz11bmtub3duCi0gIGJyZWFrCi1kb25lCi1maQoteyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9z eXNfbGFyZ2VfZmlsZXMiID4mNQotJGFzX2VjaG8gIiRhY19jdl9zeXNfbGFy Z2VfZmlsZXMiID4mNjsgfQotY2FzZSAkYWNfY3Zfc3lzX2xhcmdlX2ZpbGVz IGluICMoCi0gIG5vIHwgdW5rbm93bikgOzsKLSAgKikKLWNhdCA+PmNvbmZk ZWZzLmggPDxfQUNFT0YKLSNkZWZpbmUgX0xBUkdFX0ZJTEVTICRhY19jdl9z eXNfbGFyZ2VfZmlsZXMKLV9BQ0VPRgotOzsKLWVzYWMKLXJtIC1yZiBjb25m dGVzdCoKLSAgZmkKLWZpCi0KLWFjX2V4dD1jCi1hY19jcHA9JyRDUFAgJENQ UEZMQUdTJwotYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdT IGNvbmZ0ZXN0LiRhY19leHQgPiY1JwotYWNfbGluaz0nJENDIC1vIGNvbmZ0 ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25m dGVzdC4kYWNfZXh0ICRMSUJTID4mNScKLWFjX2NvbXBpbGVyX2dudT0kYWNf Y3ZfY19jb21waWxlcl9nbnUKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHJ1biB0aGUgQyBwcmVw cm9jZXNzb3IiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHJ1 biB0aGUgQyBwcmVwcm9jZXNzb3IuLi4gIiA+JjY7IH0KLSMgT24gU3Vucywg c29tZXRpbWVzICRDUFAgbmFtZXMgYSBkaXJlY3RvcnkuCi1pZiB0ZXN0IC1u ICIkQ1BQIiAmJiB0ZXN0IC1kICIkQ1BQIjsgdGhlbgotICBDUFA9Ci1maQot aWYgdGVzdCAteiAiJENQUCI7IHRoZW4KLSAgaWYgdGVzdCAiJHthY19jdl9w cm9nX0NQUCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihj YWNoZWQpICIgPiY2Ci1lbHNlCi0gICAgICAjIERvdWJsZSBxdW90ZXMgYmVj YXVzZSBDUFAgbmVlZHMgdG8gYmUgZXhwYW5kZWQKLSAgICBmb3IgQ1BQIGlu ICIkQ0MgLUUiICIkQ0MgLUUgLXRyYWRpdGlvbmFsLWNwcCIgIi9saWIvY3Bw IgotICAgIGRvCi0gICAgICBhY19wcmVwcm9jX29rPWZhbHNlCi1mb3IgYWNf Y19wcmVwcm9jX3dhcm5fZmxhZyBpbiAnJyB5ZXMKLWRvCi0gICMgVXNlIGEg aGVhZGVyIGZpbGUgdGhhdCBjb21lcyB3aXRoIGdjYywgc28gY29uZmlndXJp bmcgZ2xpYmMKLSAgIyB3aXRoIGEgZnJlc2ggY3Jvc3MtY29tcGlsZXIgd29y a3MuCi0gICMgUHJlZmVyIDxsaW1pdHMuaD4gdG8gPGFzc2VydC5oPiBpZiBf X1NURENfXyBpcyBkZWZpbmVkLCBzaW5jZQotICAjIDxsaW1pdHMuaD4gZXhp c3RzIGV2ZW4gb24gZnJlZXN0YW5kaW5nIGNvbXBpbGVycy4KLSAgIyBPbiB0 aGUgTmVYVCwgY2MgLUUgcnVucyB0aGUgY29kZSB0aHJvdWdoIHRoZSBjb21w aWxlcidzIHBhcnNlciwKLSAgIyBub3QganVzdCB0aHJvdWdoIGNwcC4gIlN5 bnRheCBlcnJvciIgaXMgaGVyZSB0byBjYXRjaCB0aGlzIGNhc2UuCi0gIGNh dCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8q IGVuZCBjb25mZGVmcy5oLiAgKi8KLSNpZmRlZiBfX1NURENfXwotIyBpbmNs dWRlIDxsaW1pdHMuaD4KLSNlbHNlCi0jIGluY2x1ZGUgPGFzc2VydC5oPgot I2VuZGlmCi0JCSAgICAgU3ludGF4IGVycm9yCi1fQUNFT0YKLWlmIGFjX2Zu X2NfdHJ5X2NwcCAiJExJTkVOTyI7IHRoZW4gOgotCi1lbHNlCi0gICMgQnJv a2VuOiBmYWlscyBvbiB2YWxpZCBpbnB1dC4KLWNvbnRpbnVlCi1maQotcm0g LWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKLQotICAjIE9LLCB3 b3JrcyBvbiBzYW5lIGNhc2VzLiAgTm93IGNoZWNrIHdoZXRoZXIgbm9uZXhp c3RlbnQgaGVhZGVycwotICAjIGNhbiBiZSBkZXRlY3RlZCBhbmQgaG93Lgot ICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0 Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0jaW5jbHVkZSA8YWNfbm9uZXhp c3RlbnQuaD4KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY3BwICIkTElORU5P IjsgdGhlbiA6Ci0gICMgQnJva2VuOiBzdWNjZXNzIG9uIGludmFsaWQgaW5w dXQuCi1jb250aW51ZQotZWxzZQotICAjIFBhc3NlcyBib3RoIHRlc3RzLgot YWNfcHJlcHJvY19vaz06Ci1icmVhawotZmkKLXJtIC1mIGNvbmZ0ZXN0LmVy ciBjb25mdGVzdC4kYWNfZXh0Ci0KLWRvbmUKLSMgQmVjYXVzZSBvZiBgYnJl YWsnLCBfQUNfUFJFUFJPQ19JRkVMU0UncyBjbGVhbmluZyBjb2RlIHdhcyBz a2lwcGVkLgotcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQK LWlmICRhY19wcmVwcm9jX29rOyB0aGVuIDoKLSAgYnJlYWsKLWZpCi0KLSAg ICBkb25lCi0gICAgYWNfY3ZfcHJvZ19DUFA9JENQUAotCi1maQotICBDUFA9 JGFjX2N2X3Byb2dfQ1BQCi1lbHNlCi0gIGFjX2N2X3Byb2dfQ1BQPSRDUFAK LWZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IHJlc3VsdDogJENQUCIgPiY1Ci0kYXNfZWNobyAiJENQUCIgPiY2OyB9Ci1h Y19wcmVwcm9jX29rPWZhbHNlCi1mb3IgYWNfY19wcmVwcm9jX3dhcm5fZmxh ZyBpbiAnJyB5ZXMKLWRvCi0gICMgVXNlIGEgaGVhZGVyIGZpbGUgdGhhdCBj b21lcyB3aXRoIGdjYywgc28gY29uZmlndXJpbmcgZ2xpYmMKLSAgIyB3aXRo IGEgZnJlc2ggY3Jvc3MtY29tcGlsZXIgd29ya3MuCi0gICMgUHJlZmVyIDxs aW1pdHMuaD4gdG8gPGFzc2VydC5oPiBpZiBfX1NURENfXyBpcyBkZWZpbmVk LCBzaW5jZQotICAjIDxsaW1pdHMuaD4gZXhpc3RzIGV2ZW4gb24gZnJlZXN0 YW5kaW5nIGNvbXBpbGVycy4KLSAgIyBPbiB0aGUgTmVYVCwgY2MgLUUgcnVu cyB0aGUgY29kZSB0aHJvdWdoIHRoZSBjb21waWxlcidzIHBhcnNlciwKLSAg IyBub3QganVzdCB0aHJvdWdoIGNwcC4gIlN5bnRheCBlcnJvciIgaXMgaGVy ZSB0byBjYXRjaCB0aGlzIGNhc2UuCi0gIGNhdCBjb25mZGVmcy5oIC0gPDxf QUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAg Ki8KLSNpZmRlZiBfX1NURENfXwotIyBpbmNsdWRlIDxsaW1pdHMuaD4KLSNl bHNlCi0jIGluY2x1ZGUgPGFzc2VydC5oPgotI2VuZGlmCi0JCSAgICAgU3lu dGF4IGVycm9yCi1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2NwcCAiJExJTkVO TyI7IHRoZW4gOgotCi1lbHNlCi0gICMgQnJva2VuOiBmYWlscyBvbiB2YWxp ZCBpbnB1dC4KLWNvbnRpbnVlCi1maQotcm0gLWYgY29uZnRlc3QuZXJyIGNv bmZ0ZXN0LiRhY19leHQKLQotICAjIE9LLCB3b3JrcyBvbiBzYW5lIGNhc2Vz LiAgTm93IGNoZWNrIHdoZXRoZXIgbm9uZXhpc3RlbnQgaGVhZGVycwotICAj IGNhbiBiZSBkZXRlY3RlZCBhbmQgaG93LgotICBjYXQgY29uZmRlZnMuaCAt IDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMu aC4gICovCi0jaW5jbHVkZSA8YWNfbm9uZXhpc3RlbnQuaD4KKyNpbmNsdWRl IDxhY19ub25leGlzdGVudC5oPgogX0FDRU9GCiBpZiBhY19mbl9jX3RyeV9j cHAgIiRMSU5FTk8iOyB0aGVuIDoKICAgIyBCcm9rZW46IHN1Y2Nlc3Mgb24g aW52YWxpZCBpbnB1dC4KQEAgLTM5NDYsNjYgKzM4NjYsMTQ3IEBAIGFjX2xp bms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxB R1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkCiBhY19jb21waWxlcl9n bnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CiAKIAotYWNfY19wcmVwcm9jX3dh cm5fZmxhZz15ZXMKLQotYWNfbGliaWJlcnR5X3dhcm5fY2ZsYWdzPQotc2F2 ZV9DRkxBR1M9IiRDRkxBR1MiCi1mb3IgcmVhbF9vcHRpb24gaW4gLVcgLVdh bGwgLVd3cml0ZS1zdHJpbmdzIC1XYysrLWNvbXBhdCBcCi0JCQkgIC1Xc3Ry aWN0LXByb3RvdHlwZXM7IGRvCi0gICMgRG8gdGhlIGNoZWNrIHdpdGggdGhl IG5vLSBwcmVmaXggcmVtb3ZlZCBzaW5jZSBnY2Mgc2lsZW50bHkKLSAgIyBh Y2NlcHRzIGFueSAtV25vLSogb3B0aW9uIG9uIHB1cnBvc2UKLSAgY2FzZSAk cmVhbF9vcHRpb24gaW4KLSAgICAtV25vLSopIG9wdGlvbj0tV2BleHByIHgk cmVhbF9vcHRpb24gOiAneC1Xbm8tXCguKlwpJ2AgOzsKLSAgICAqKSBvcHRp b249JHJlYWxfb3B0aW9uIDs7Ci0gIGVzYWMKLSAgYXNfYWN4X1dvcHRpb249 YCRhc19lY2hvICJhY3hfY3ZfcHJvZ19jY193YXJuaW5nXyRvcHRpb24iIHwg JGFzX3RyX3NoYAotCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAkQ0Mgc3VwcG9ydHMgJG9w dGlvbiIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyICRDQyBz dXBwb3J0cyAkb3B0aW9uLi4uICIgPiY2OyB9Ci1pZiB7IGFzX3Zhcj0kYXNf YWN4X1dvcHRpb247IGV2YWwgInRlc3QgXCJcJHskYXNfdmFyK3NldH1cIiA9 IHNldCI7IH07IHRoZW4gOgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZ3JlcCB0aGF0IGhhbmRsZXMg bG9uZyBsaW5lcyBhbmQgLWUiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcg Zm9yIGdyZXAgdGhhdCBoYW5kbGVzIGxvbmcgbGluZXMgYW5kIC1lLi4uICIg PiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X3BhdGhfR1JFUCtzZXR9IiA9IHNl dDsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNl Ci0gIENGTEFHUz0iJG9wdGlvbiIKLSAgICBjYXQgY29uZmRlZnMuaCAtIDw8 X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4g ICovCi0KLWludAotbWFpbiAoKQotewotCi0gIDsKLSAgcmV0dXJuIDA7Ci19 Ci1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0 aGVuIDoKLSAgZXZhbCAiJGFzX2FjeF9Xb3B0aW9uPXllcyIKLWVsc2UKLSAg ZXZhbCAiJGFzX2FjeF9Xb3B0aW9uPW5vIgotZmkKLXJtIC1mIGNvcmUgY29u ZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4 dAotCi1maQotZXZhbCBhY19yZXM9XCQkYXNfYWN4X1dvcHRpb24KLQkgICAg ICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy ZXN1bHQ6ICRhY19yZXMiID4mNQotJGFzX2VjaG8gIiRhY19yZXMiID4mNjsg fQotICBpZiB0ZXN0IGBldmFsICdhc192YWw9JHsnJGFzX2FjeF9Xb3B0aW9u J307JGFzX2VjaG8gIiRhc192YWwiJ2AgPSB5ZXM7IHRoZW4gOgotICBhY19s aWJpYmVydHlfd2Fybl9jZmxhZ3M9IiRhY19saWJpYmVydHlfd2Fybl9jZmxh Z3Mke2FjX2xpYmliZXJ0eV93YXJuX2NmbGFnczorIH0kcmVhbF9vcHRpb24i Ci1maQotICBkb25lCi1DRkxBR1M9IiRzYXZlX0NGTEFHUyIKLQotIyBEbyB0 aGUgY2hlY2sgd2l0aCB0aGUgbm8tIHByZWZpeCByZW1vdmVkIGZyb20gdGhl IHdhcm5pbmcgb3B0aW9ucwotIyBzaW5jZSBnY2Mgc2lsZW50bHkgYWNjZXB0 cyBhbnkgLVduby0qIG9wdGlvbiBvbiBwdXJwb3NlCi1pZiB0ZXN0ICIkR0ND IiA9IHllczsgdGhlbiA6Ci0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAkQ0Mgc3VwcG9ydHMg LXBlZGFudGljICIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVy ICRDQyBzdXBwb3J0cyAtcGVkYW50aWMgLi4uICIgPiY2OyB9Ci1pZiB0ZXN0 ICIke2FjeF9jdl9wcm9nX2NjX3BlZGFudGljXytzZXR9IiA9IHNldDsgdGhl biA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisgIGlmIHRlc3Qg LXogIiRHUkVQIjsgdGhlbgorICBhY19wYXRoX0dSRVBfZm91bmQ9ZmFsc2UK KyAgIyBMb29wIHRocm91Z2ggdGhlIHVzZXIncyBwYXRoIGFuZCB0ZXN0IGZv ciBlYWNoIG9mIFBST0dOQU1FLUxJU1QKKyAgYXNfc2F2ZV9JRlM9JElGUzsg SUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSCRQQVRI X1NFUEFSQVRPUi91c3IveHBnNC9iaW4KK2RvCisgIElGUz0kYXNfc2F2ZV9J RlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3Ig YWNfcHJvZyBpbiBncmVwIGdncmVwOyBkbworICAgIGZvciBhY19leGVjX2V4 dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgICAg YWNfcGF0aF9HUkVQPSIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0Igor ICAgICAgeyB0ZXN0IC1mICIkYWNfcGF0aF9HUkVQIiAmJiAkYXNfdGVzdF94 ICIkYWNfcGF0aF9HUkVQIjsgfSB8fCBjb250aW51ZQorIyBDaGVjayBmb3Ig R05VIGFjX3BhdGhfR1JFUCBhbmQgc2VsZWN0IGl0IGlmIGl0IGlzIGZvdW5k LgorICAjIENoZWNrIGZvciBHTlUgJGFjX3BhdGhfR1JFUAorY2FzZSBgIiRh Y19wYXRoX0dSRVAiIC0tdmVyc2lvbiAyPiYxYCBpbgorKkdOVSopCisgIGFj X2N2X3BhdGhfR1JFUD0iJGFjX3BhdGhfR1JFUCIgYWNfcGF0aF9HUkVQX2Zv dW5kPTo7OworKikKKyAgYWNfY291bnQ9MAorICAkYXNfZWNob19uIDAxMjM0 NTY3ODkgPiJjb25mdGVzdC5pbiIKKyAgd2hpbGUgOgorICBkbworICAgIGNh dCAiY29uZnRlc3QuaW4iICJjb25mdGVzdC5pbiIgPiJjb25mdGVzdC50bXAi CisgICAgbXYgImNvbmZ0ZXN0LnRtcCIgImNvbmZ0ZXN0LmluIgorICAgIGNw ICJjb25mdGVzdC5pbiIgImNvbmZ0ZXN0Lm5sIgorICAgICRhc19lY2hvICdH UkVQJyA+PiAiY29uZnRlc3QubmwiCisgICAgIiRhY19wYXRoX0dSRVAiIC1l ICdHUkVQJCcgLWUgJy0oY2Fubm90IG1hdGNoKS0nIDwgImNvbmZ0ZXN0Lm5s IiA+ImNvbmZ0ZXN0Lm91dCIgMj4vZGV2L251bGwgfHwgYnJlYWsKKyAgICBk aWZmICJjb25mdGVzdC5vdXQiICJjb25mdGVzdC5ubCIgPi9kZXYvbnVsbCAy PiYxIHx8IGJyZWFrCisgICAgYXNfZm5fYXJpdGggJGFjX2NvdW50ICsgMSAm JiBhY19jb3VudD0kYXNfdmFsCisgICAgaWYgdGVzdCAkYWNfY291bnQgLWd0 ICR7YWNfcGF0aF9HUkVQX21heC0wfTsgdGhlbgorICAgICAgIyBCZXN0IG9u ZSBzbyBmYXIsIHNhdmUgaXQgYnV0IGtlZXAgbG9va2luZyBmb3IgYSBiZXR0 ZXIgb25lCisgICAgICBhY19jdl9wYXRoX0dSRVA9IiRhY19wYXRoX0dSRVAi CisgICAgICBhY19wYXRoX0dSRVBfbWF4PSRhY19jb3VudAorICAgIGZpCisg ICAgIyAxMCooMl4xMCkgY2hhcnMgYXMgaW5wdXQgc2VlbXMgbW9yZSB0aGFu IGVub3VnaAorICAgIHRlc3QgJGFjX2NvdW50IC1ndCAxMCAmJiBicmVhawor ICBkb25lCisgIHJtIC1mIGNvbmZ0ZXN0LmluIGNvbmZ0ZXN0LnRtcCBjb25m dGVzdC5ubCBjb25mdGVzdC5vdXQ7OworZXNhYworCisgICAgICAkYWNfcGF0 aF9HUkVQX2ZvdW5kICYmIGJyZWFrIDMKKyAgICBkb25lCisgIGRvbmUKKyAg ZG9uZQorSUZTPSRhc19zYXZlX0lGUworICBpZiB0ZXN0IC16ICIkYWNfY3Zf cGF0aF9HUkVQIjsgdGhlbgorICAgIGFzX2ZuX2Vycm9yICJubyBhY2NlcHRh YmxlIGdyZXAgY291bGQgYmUgZm91bmQgaW4gJFBBVEgkUEFUSF9TRVBBUkFU T1IvdXNyL3hwZzQvYmluIiAiJExJTkVOTyIgNQorICBmaQogZWxzZQotICBz YXZlX0NGTEFHUz0iJENGTEFHUyIKLUNGTEFHUz0iLXBlZGFudGljICIKLWNh dCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAg YWNfY3ZfcGF0aF9HUkVQPSRHUkVQCitmaQorCitmaQoreyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9w YXRoX0dSRVAiID4mNQorJGFzX2VjaG8gIiRhY19jdl9wYXRoX0dSRVAiID4m NjsgfQorIEdSRVA9IiRhY19jdl9wYXRoX0dSRVAiCisKKworeyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Ig ZWdyZXAiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGVncmVwLi4u ICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X3BhdGhfRUdSRVArc2V0fSIg PSBzZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgor ZWxzZQorICBpZiBlY2hvIGEgfCAkR1JFUCAtRSAnKGF8YiknID4vZGV2L251 bGwgMj4mMQorICAgdGhlbiBhY19jdl9wYXRoX0VHUkVQPSIkR1JFUCAtRSIK KyAgIGVsc2UKKyAgICAgaWYgdGVzdCAteiAiJEVHUkVQIjsgdGhlbgorICBh Y19wYXRoX0VHUkVQX2ZvdW5kPWZhbHNlCisgICMgTG9vcCB0aHJvdWdoIHRo ZSB1c2VyJ3MgcGF0aCBhbmQgdGVzdCBmb3IgZWFjaCBvZiBQUk9HTkFNRS1M SVNUCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IK K2ZvciBhc19kaXIgaW4gJFBBVEgkUEFUSF9TRVBBUkFUT1IvdXNyL3hwZzQv YmluCitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19k aXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX3Byb2cgaW4gZWdyZXA7IGRv CisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4 dGVuc2lvbnM7IGRvCisgICAgICBhY19wYXRoX0VHUkVQPSIkYXNfZGlyLyRh Y19wcm9nJGFjX2V4ZWNfZXh0IgorICAgICAgeyB0ZXN0IC1mICIkYWNfcGF0 aF9FR1JFUCIgJiYgJGFzX3Rlc3RfeCAiJGFjX3BhdGhfRUdSRVAiOyB9IHx8 IGNvbnRpbnVlCisjIENoZWNrIGZvciBHTlUgYWNfcGF0aF9FR1JFUCBhbmQg c2VsZWN0IGl0IGlmIGl0IGlzIGZvdW5kLgorICAjIENoZWNrIGZvciBHTlUg JGFjX3BhdGhfRUdSRVAKK2Nhc2UgYCIkYWNfcGF0aF9FR1JFUCIgLS12ZXJz aW9uIDI+JjFgIGluCisqR05VKikKKyAgYWNfY3ZfcGF0aF9FR1JFUD0iJGFj X3BhdGhfRUdSRVAiIGFjX3BhdGhfRUdSRVBfZm91bmQ9Ojs7CisqKQorICBh Y19jb3VudD0wCisgICRhc19lY2hvX24gMDEyMzQ1Njc4OSA+ImNvbmZ0ZXN0 LmluIgorICB3aGlsZSA6CisgIGRvCisgICAgY2F0ICJjb25mdGVzdC5pbiIg ImNvbmZ0ZXN0LmluIiA+ImNvbmZ0ZXN0LnRtcCIKKyAgICBtdiAiY29uZnRl c3QudG1wIiAiY29uZnRlc3QuaW4iCisgICAgY3AgImNvbmZ0ZXN0LmluIiAi Y29uZnRlc3QubmwiCisgICAgJGFzX2VjaG8gJ0VHUkVQJyA+PiAiY29uZnRl c3QubmwiCisgICAgIiRhY19wYXRoX0VHUkVQIiAnRUdSRVAkJyA8ICJjb25m dGVzdC5ubCIgPiJjb25mdGVzdC5vdXQiIDI+L2Rldi9udWxsIHx8IGJyZWFr CisgICAgZGlmZiAiY29uZnRlc3Qub3V0IiAiY29uZnRlc3QubmwiID4vZGV2 L251bGwgMj4mMSB8fCBicmVhaworICAgIGFzX2ZuX2FyaXRoICRhY19jb3Vu dCArIDEgJiYgYWNfY291bnQ9JGFzX3ZhbAorICAgIGlmIHRlc3QgJGFjX2Nv dW50IC1ndCAke2FjX3BhdGhfRUdSRVBfbWF4LTB9OyB0aGVuCisgICAgICAj IEJlc3Qgb25lIHNvIGZhciwgc2F2ZSBpdCBidXQga2VlcCBsb29raW5nIGZv ciBhIGJldHRlciBvbmUKKyAgICAgIGFjX2N2X3BhdGhfRUdSRVA9IiRhY19w YXRoX0VHUkVQIgorICAgICAgYWNfcGF0aF9FR1JFUF9tYXg9JGFjX2NvdW50 CisgICAgZmkKKyAgICAjIDEwKigyXjEwKSBjaGFycyBhcyBpbnB1dCBzZWVt cyBtb3JlIHRoYW4gZW5vdWdoCisgICAgdGVzdCAkYWNfY291bnQgLWd0IDEw ICYmIGJyZWFrCisgIGRvbmUKKyAgcm0gLWYgY29uZnRlc3QuaW4gY29uZnRl c3QudG1wIGNvbmZ0ZXN0Lm5sIGNvbmZ0ZXN0Lm91dDs7Citlc2FjCisKKyAg ICAgICRhY19wYXRoX0VHUkVQX2ZvdW5kICYmIGJyZWFrIDMKKyAgICBkb25l CisgIGRvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworICBpZiB0ZXN0 IC16ICIkYWNfY3ZfcGF0aF9FR1JFUCI7IHRoZW4KKyAgICBhc19mbl9lcnJv ciAibm8gYWNjZXB0YWJsZSBlZ3JlcCBjb3VsZCBiZSBmb3VuZCBpbiAkUEFU SCRQQVRIX1NFUEFSQVRPUi91c3IveHBnNC9iaW4iICIkTElORU5PIiA1Cisg IGZpCitlbHNlCisgIGFjX2N2X3BhdGhfRUdSRVA9JEVHUkVQCitmaQorCisg ICBmaQorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogcmVzdWx0OiAkYWNfY3ZfcGF0aF9FR1JFUCIgPiY1CiskYXNfZWNo byAiJGFjX2N2X3BhdGhfRUdSRVAiID4mNjsgfQorIEVHUkVQPSIkYWNfY3Zf cGF0aF9FR1JFUCIKKworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IGNoZWNraW5nIGZvciBBTlNJIEMgaGVhZGVyIGZpbGVz IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBBTlNJIEMgaGVhZGVy IGZpbGVzLi4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X2hlYWRlcl9z dGRjK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hl ZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+ Y29uZnRlc3QuJGFjX2V4dAogLyogZW5kIGNvbmZkZWZzLmguICAqLworI2lu Y2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1 ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGZsb2F0Lmg+CiAKIGludAogbWFp biAoKQpAQCAtNDAxNiw1MjIgKzQwMTcsNzAzIEBAIG1haW4gKCkKIH0KIF9B Q0VPRgogaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4g OgotICBhY3hfY3ZfcHJvZ19jY19wZWRhbnRpY189eWVzCisgIGFjX2N2X2hl YWRlcl9zdGRjPXllcwogZWxzZQotICBhY3hfY3ZfcHJvZ19jY19wZWRhbnRp Y189bm8KKyAgYWNfY3ZfaGVhZGVyX3N0ZGM9bm8KIGZpCiBybSAtZiBjb3Jl IGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRh Y19leHQKLUNGTEFHUz0iJHNhdmVfQ0ZMQUdTIgotZmkKLXsgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWN4X2N2 X3Byb2dfY2NfcGVkYW50aWNfIiA+JjUKLSRhc19lY2hvICIkYWN4X2N2X3By b2dfY2NfcGVkYW50aWNfIiA+JjY7IH0KLWlmIHRlc3QgJGFjeF9jdl9wcm9n X2NjX3BlZGFudGljXyA9IHllczsgdGhlbiA6Ci0gIGFjX2xpYmliZXJ0eV93 YXJuX2NmbGFncz0iJGFjX2xpYmliZXJ0eV93YXJuX2NmbGFncyR7YWNfbGli aWJlcnR5X3dhcm5fY2ZsYWdzOisgfS1wZWRhbnRpYyAiCisKK2lmIHRlc3Qg JGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCisgICMgU3VuT1MgNC54 IHN0cmluZy5oIGRvZXMgbm90IGRlY2xhcmUgbWVtKiwgY29udHJhcnkgdG8g QU5TSS4KKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3Qu JGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN0 cmluZy5oPgorCitfQUNFT0YKK2lmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0 LiRhY19leHQiKSAyPiY1IHwKKyAgJEVHUkVQICJtZW1jaHIiID4vZGV2L251 bGwgMj4mMTsgdGhlbiA6CisKK2Vsc2UKKyAgYWNfY3ZfaGVhZGVyX3N0ZGM9 bm8KIGZpCitybSAtZiBjb25mdGVzdCoKIAogZmkKIAoraWYgdGVzdCAkYWNf Y3ZfaGVhZGVyX3N0ZGMgPSB5ZXM7IHRoZW4KKyAgIyBJU0MgMi4wLjIgc3Rk bGliLmggZG9lcyBub3QgZGVjbGFyZSBmcmVlLCBjb250cmFyeSB0byBBTlNJ LgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNf ZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8c3RkbGli Lmg+CisKK19BQ0VPRgoraWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFj X2V4dCIpIDI+JjUgfAorICAkRUdSRVAgImZyZWUiID4vZGV2L251bGwgMj4m MTsgdGhlbiA6CiAKLWlmIHRlc3QgIngkQ0MiICE9IHhjYzsgdGhlbgotICB7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIHdoZXRoZXIgJENDIGFuZCBjYyB1bmRlcnN0YW5kIC1jIGFuZCAtbyB0 b2dldGhlciIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyICRD QyBhbmQgY2MgdW5kZXJzdGFuZCAtYyBhbmQgLW8gdG9nZXRoZXIuLi4gIiA+ JjY7IH0KIGVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGNjIHVuZGVyc3RhbmRzIC1j IGFuZCAtbyB0b2dldGhlciIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyB3 aGV0aGVyIGNjIHVuZGVyc3RhbmRzIC1jIGFuZCAtbyB0b2dldGhlci4uLiAi ID4mNjsgfQorICBhY19jdl9oZWFkZXJfc3RkYz1ubwogZmkKLXNldCBkdW1t eSAkQ0M7IGFjX2NjPWAkYXNfZWNobyAiJDIiIHwKLQkJICAgICAgc2VkICdz L1teYS16QS1aMC05X10vXy9nO3MvXlswLTldL18vJ2AKLWlmIHsgYXNfdmFy PWFjX2N2X3Byb2dfY2NfJHthY19jY31fY19vOyBldmFsICJ0ZXN0IFwiXCR7 JGFzX3ZhcitzZXR9XCIgPSBzZXQiOyB9OyB0aGVuIDoKLSAgJGFzX2VjaG9f biAiKGNhY2hlZCkgIiA+JjYKK3JtIC1mIGNvbmZ0ZXN0KgorCitmaQorCitp ZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3RkYyA9IHllczsgdGhlbgorICAjIC9i aW4vY2MgaW4gSXJpeC00LjAuNSBnZXRzIG5vbi1BTlNJIGN0eXBlIG1hY3Jv cyB1bmxlc3MgdXNpbmcgLWFuc2kuCisgIGlmIHRlc3QgIiRjcm9zc19jb21w aWxpbmciID0geWVzOyB0aGVuIDoKKyAgOgogZWxzZQogICBjYXQgY29uZmRl ZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAvKiBlbmQgY29u ZmRlZnMuaC4gICovCisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxz dGRsaWIuaD4KKyNpZiAoKCcgJyAmIDB4MEZGKSA9PSAweDAyMCkKKyMgZGVm aW5lIElTTE9XRVIoYykgKCdhJyA8PSAoYykgJiYgKGMpIDw9ICd6JykKKyMg ZGVmaW5lIFRPVVBQRVIoYykgKElTTE9XRVIoYykgPyAnQScgKyAoKGMpIC0g J2EnKSA6IChjKSkKKyNlbHNlCisjIGRlZmluZSBJU0xPV0VSKGMpIFwKKwkJ ICAgKCgnYScgPD0gKGMpICYmIChjKSA8PSAnaScpIFwKKwkJICAgICB8fCAo J2onIDw9IChjKSAmJiAoYykgPD0gJ3InKSBcCisJCSAgICAgfHwgKCdzJyA8 PSAoYykgJiYgKGMpIDw9ICd6JykpCisjIGRlZmluZSBUT1VQUEVSKGMpIChJ U0xPV0VSKGMpID8gKChjKSB8IDB4NDApIDogKGMpKQorI2VuZGlmCiAKKyNk ZWZpbmUgWE9SKGUsIGYpICgoKGUpICYmICEoZikpIHx8ICghKGUpICYmIChm KSkpCiBpbnQKIG1haW4gKCkKIHsKLQotICA7CisgIGludCBpOworICBmb3Ig KGkgPSAwOyBpIDwgMjU2OyBpKyspCisgICAgaWYgKFhPUiAoaXNsb3dlciAo aSksIElTTE9XRVIgKGkpKQorCXx8IHRvdXBwZXIgKGkpICE9IFRPVVBQRVIg KGkpKQorICAgICAgcmV0dXJuIDI7CiAgIHJldHVybiAwOwogfQogX0FDRU9G Ci0jIE1ha2Ugc3VyZSBpdCB3b3JrcyBib3RoIHdpdGggJENDIGFuZCB3aXRo IHNpbXBsZSBjYy4KLSMgV2UgZG8gdGhlIHRlc3QgdHdpY2UgYmVjYXVzZSBz b21lIGNvbXBpbGVycyByZWZ1c2UgdG8gb3ZlcndyaXRlIGFuCi0jIGV4aXN0 aW5nIC5vIGZpbGUgd2l0aCAtbywgdGhvdWdoIHRoZXkgd2lsbCBjcmVhdGUg b25lLgotYWNfdHJ5PSckQ0MgLWMgY29uZnRlc3QuJGFjX2V4dCAtbyBjb25m dGVzdDIuJGFjX29iamV4dCA+JjUnCi1ybSAtZiBjb25mdGVzdDIuKgotaWYg eyB7IGNhc2UgIigoJGFjX3RyeSIgaW4KLSAgKlwiKiB8ICpcYCogfCAqXFwq KSBhY190cnlfZWNobz1cJGFjX3RyeTs7Ci0gICopIGFjX3RyeV9lY2hvPSRh Y190cnk7OwotZXNhYwotZXZhbCBhY190cnlfZWNobz0iXCJcJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfdHJ5X2VjaG9cIiIKLSRhc19lY2hv ICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQotICAoZXZhbCAiJGFjX3RyeSIpIDI+ JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gICRhc19lY2hvICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICB0ZXN0 ICRhY19zdGF0dXMgPSAwOyB9ICYmCi0gICB0ZXN0IC1mIGNvbmZ0ZXN0Mi4k YWNfb2JqZXh0ICYmIHsgeyBjYXNlICIoKCRhY190cnkiIGluCi0gICpcIiog fCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7OwotICAqKSBh Y190cnlfZWNobz0kYWNfdHJ5OzsKLWVzYWMKLWV2YWwgYWNfdHJ5X2VjaG89 IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hv XCIiCi0kYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKLSAgKGV2YWwg IiRhY190cnkiKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVz IiA+JjUKLSAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsKLXRoZW4KLSAgZXZh bCBhY19jdl9wcm9nX2NjXyR7YWNfY2N9X2Nfbz15ZXMKLSAgaWYgdGVzdCAi eCRDQyIgIT0geGNjOyB0aGVuCi0gICAgIyBUZXN0IGZpcnN0IHRoYXQgY2Mg ZXhpc3RzIGF0IGFsbC4KLSAgICBpZiB7IGFjX3RyeT0nY2MgLWMgY29uZnRl c3QuJGFjX2V4dCA+JjUnCi0gIHsgeyBjYXNlICIoKCRhY190cnkiIGluCi0g ICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7Owot ICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKLWVzYWMKLWV2YWwgYWNfdHJ5 X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3Ry eV9lY2hvXCIiCi0kYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKLSAg KGV2YWwgIiRhY190cnkiKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNf c3RhdHVzIiA+JjUKLSAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgfTsgdGhl bgotICAgICAgYWNfdHJ5PSdjYyAtYyBjb25mdGVzdC4kYWNfZXh0IC1vIGNv bmZ0ZXN0Mi4kYWNfb2JqZXh0ID4mNScKLSAgICAgIHJtIC1mIGNvbmZ0ZXN0 Mi4qCi0gICAgICBpZiB7IHsgY2FzZSAiKCgkYWNfdHJ5IiBpbgotICAqXCIq IHwgKlxgKiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsKLSAgKikg YWNfdHJ5X2VjaG89JGFjX3RyeTs7Ci1lc2FjCi1ldmFsIGFjX3RyeV9lY2hv PSJcIlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRhY190cnlfZWNo b1wiIgotJGFzX2VjaG8gIiRhY190cnlfZWNobyI7IH0gPiY1Ci0gIChldmFs ICIkYWNfdHJ5IikgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1 cyIgPiY1Ci0gIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYKLQkgdGVzdCAt ZiBjb25mdGVzdDIuJGFjX29iamV4dCAmJiB7IHsgY2FzZSAiKCgkYWNfdHJ5 IiBpbgotICAqXCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNf dHJ5OzsKLSAgKikgYWNfdHJ5X2VjaG89JGFjX3RyeTs7Ci1lc2FjCi1ldmFs IGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 ICRhY190cnlfZWNob1wiIgotJGFzX2VjaG8gIiRhY190cnlfZWNobyI7IH0g PiY1Ci0gIChldmFsICIkYWNfdHJ5IikgMj4mNQotICBhY19zdGF0dXM9JD8K LSAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07 Ci0gICAgICB0aGVuCi0JIyBjYyB3b3JrcyB0b28uCi0JOgotICAgICAgZWxz ZQotCSMgY2MgZXhpc3RzIGJ1dCBkb2Vzbid0IGxpa2UgLW8uCi0JZXZhbCBh Y19jdl9wcm9nX2NjXyR7YWNfY2N9X2Nfbz1ubwotICAgICAgZmkKLSAgICBm aQotICBmaQoraWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6 CisKIGVsc2UKLSAgZXZhbCBhY19jdl9wcm9nX2NjXyR7YWNfY2N9X2Nfbz1u bworICBhY19jdl9oZWFkZXJfc3RkYz1ubworZmkKK3JtIC1mIGNvcmUgKi5j b3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3Qk YWNfZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5i ZWFtIGNvbmZ0ZXN0LiRhY19leHQKIGZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0 KgogCiBmaQotaWYgZXZhbCB0ZXN0IFwkYWNfY3ZfcHJvZ19jY18ke2FjX2Nj fV9jX28gPSB5ZXM7IHRoZW4KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1Ci0kYXNfZWNobyAi eWVzIiA+JjY7IH0KLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJu byIgPiY2OyB9CitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9oZWFkZXJfc3RkYyIgPiY1Cisk YXNfZWNobyAiJGFjX2N2X2hlYWRlcl9zdGRjIiA+JjY7IH0KK2lmIHRlc3Qg JGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCiAKLSRhc19lY2hvICIj ZGVmaW5lIE5PX01JTlVTX0NfTUlOVVNfTyAxIiA+PmNvbmZkZWZzLmgKKyRh c19lY2hvICIjZGVmaW5lIFNURENfSEVBREVSUyAxIiA+PmNvbmZkZWZzLmgK IAogZmkKIAotIyBhdXRvY29uZiBpcyBsYW1lIGFuZCBkb2Vzbid0IGdpdmUg dXMgYW55IHN1YnN0aXR1dGlvbiB2YXJpYWJsZSBmb3IgdGhpcy4KLWlmIGV2 YWwgInRlc3QgXCJgZWNobyAnJGFjX2N2X3Byb2dfY2NfJyR7YWNfY2N9X2Nf b2BcIiA9IG5vIjsgdGhlbgotICBOT19NSU5VU19DX01JTlVTX089eWVzCisj IE9uIElSSVggNS4zLCBzeXMvdHlwZXMgYW5kIGludHR5cGVzLmggYXJlIGNv bmZsaWN0aW5nLgorZm9yIGFjX2hlYWRlciBpbiBzeXMvdHlwZXMuaCBzeXMv c3RhdC5oIHN0ZGxpYi5oIHN0cmluZy5oIG1lbW9yeS5oIHN0cmluZ3MuaCBc CisJCSAgaW50dHlwZXMuaCBzdGRpbnQuaCB1bmlzdGQuaAorZG8gOgorICBh c19hY19IZWFkZXI9YCRhc19lY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRl ciIgfCAkYXNfdHJfc2hgCithY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxl ICIkTElORU5PIiAiJGFjX2hlYWRlciIgIiRhc19hY19IZWFkZXIiICIkYWNf aW5jbHVkZXNfZGVmYXVsdAorIgorZXZhbCBhc192YWw9XCQkYXNfYWNfSGVh ZGVyCisgICBpZiB0ZXN0ICJ4JGFzX3ZhbCIgPSB4IiJ5ZXM7IHRoZW4gOgor ICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIGAkYXNfZWNo byAiSEFWRV8kYWNfaGVhZGVyIiB8ICRhc190cl9jcHBgIDEKK19BQ0VPRgor CitmaQorCitkb25lCisKKworCisgIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21v bmdyZWwgIiRMSU5FTk8iICJtaW5peC9jb25maWcuaCIgImFjX2N2X2hlYWRl cl9taW5peF9jb25maWdfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYg dGVzdCAieCRhY19jdl9oZWFkZXJfbWluaXhfY29uZmlnX2giID0geCIieWVz OyB0aGVuIDoKKyAgTUlOSVg9eWVzCiBlbHNlCi0gIE9VVFBVVF9PUFRJT049 Jy1vICRAJworICBNSU5JWD0KIGZpCiAKIAorICBpZiB0ZXN0ICIkTUlOSVgi ID0geWVzOyB0aGVuCiAKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFuIEFOU0kgQy1jb25mb3JtaW5n IGNvbnN0IiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciBhbiBBTlNJ IEMtY29uZm9ybWluZyBjb25zdC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHth Y19jdl9jX2NvbnN0K3NldH0iID0gc2V0OyB0aGVuIDoKKyRhc19lY2hvICIj ZGVmaW5lIF9QT1NJWF9TT1VSQ0UgMSIgPj5jb25mZGVmcy5oCisKKworJGFz X2VjaG8gIiNkZWZpbmUgX1BPU0lYXzFfU09VUkNFIDIiID4+Y29uZmRlZnMu aAorCisKKyRhc19lY2hvICIjZGVmaW5lIF9NSU5JWCAxIiA+PmNvbmZkZWZz LmgKKworICBmaQorCisKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGl0IGlzIHNhZmUgdG8g ZGVmaW5lIF9fRVhURU5TSU9OU19fIiA+JjUKKyRhc19lY2hvX24gImNoZWNr aW5nIHdoZXRoZXIgaXQgaXMgc2FmZSB0byBkZWZpbmUgX19FWFRFTlNJT05T X18uLi4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3Zfc2FmZV90b19kZWZp bmVfX19leHRlbnNpb25zX18rc2V0fSIgPSBzZXQ7IHRoZW4gOgogICAkYXNf ZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBjYXQgY29uZmRlZnMu aCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAvKiBlbmQgY29uZmRl ZnMuaC4gICovCiAKKyMJICBkZWZpbmUgX19FWFRFTlNJT05TX18gMQorCSAg JGFjX2luY2x1ZGVzX2RlZmF1bHQKIGludAogbWFpbiAoKQogewotLyogRklY TUU6IEluY2x1ZGUgdGhlIGNvbW1lbnRzIHN1Z2dlc3RlZCBieSBQYXVsLiAq LwotI2lmbmRlZiBfX2NwbHVzcGx1cwotICAvKiBVbHRyaXggbWlwcyBjYyBy ZWplY3RzIHRoaXMuICAqLwotICB0eXBlZGVmIGludCBjaGFyc2V0WzJdOwot ICBjb25zdCBjaGFyc2V0IGNzOwotICAvKiBTdW5PUyA0LjEuMSBjYyByZWpl Y3RzIHRoaXMuICAqLwotICBjaGFyIGNvbnN0ICpjb25zdCAqcGNwY2M7Ci0g IGNoYXIgKipwcGM7Ci0gIC8qIE5FQyBTVlI0LjAuMiBtaXBzIGNjIHJlamVj dHMgdGhpcy4gICovCi0gIHN0cnVjdCBwb2ludCB7aW50IHgsIHk7fTsKLSAg c3RhdGljIHN0cnVjdCBwb2ludCBjb25zdCB6ZXJvID0gezAsMH07Ci0gIC8q IEFJWCBYTCBDIDEuMDIuMC4wIHJlamVjdHMgdGhpcy4KLSAgICAgSXQgZG9l cyBub3QgbGV0IHlvdSBzdWJ0cmFjdCBvbmUgY29uc3QgWCogcG9pbnRlciBm cm9tIGFub3RoZXIgaW4KLSAgICAgYW4gYXJtIG9mIGFuIGlmLWV4cHJlc3Np b24gd2hvc2UgaWYtcGFydCBpcyBub3QgYSBjb25zdGFudAotICAgICBleHBy ZXNzaW9uICovCi0gIGNvbnN0IGNoYXIgKmcgPSAic3RyaW5nIjsKLSAgcGNw Y2MgPSAmZyArIChnID8gZy1nIDogMCk7Ci0gIC8qIEhQVVggNy4wIGNjIHJl amVjdHMgdGhlc2UuICovCi0gICsrcGNwY2M7Ci0gIHBwYyA9IChjaGFyKiop IHBjcGNjOwotICBwY3BjYyA9IChjaGFyIGNvbnN0ICpjb25zdCAqKSBwcGM7 Ci0gIHsgLyogU0NPIDMuMnY0IGNjIHJlamVjdHMgdGhpcy4gICovCi0gICAg Y2hhciAqdDsKLSAgICBjaGFyIGNvbnN0ICpzID0gMCA/IChjaGFyICopIDAg OiAoY2hhciBjb25zdCAqKSAwOwotCi0gICAgKnQrKyA9IDA7Ci0gICAgaWYg KHMpIHJldHVybiAwOwotICB9Ci0gIHsgLyogU29tZW9uZSB0aGlua3MgdGhl IFN1biBzdXBwb3NlZGx5LUFOU0kgY29tcGlsZXIgd2lsbCByZWplY3QgdGhp cy4gICovCi0gICAgaW50IHhbXSA9IHsyNSwgMTd9OwotICAgIGNvbnN0IGlu dCAqZm9vID0gJnhbMF07Ci0gICAgKytmb287Ci0gIH0KLSAgeyAvKiBTdW4g U0MxLjAgQU5TSSBjb21waWxlciByZWplY3RzIHRoaXMgLS0gYnV0IG5vdCB0 aGUgYWJvdmUuICovCi0gICAgdHlwZWRlZiBjb25zdCBpbnQgKmlwdHI7Ci0g ICAgaXB0ciBwID0gMDsKLSAgICArK3A7Ci0gIH0KLSAgeyAvKiBBSVggWEwg QyAxLjAyLjAuMCByZWplY3RzIHRoaXMgc2F5aW5nCi0gICAgICAgImsuYyIs IGxpbmUgMi4yNzogMTUwNi0wMjUgKFMpIE9wZXJhbmQgbXVzdCBiZSBhIG1v ZGlmaWFibGUgbHZhbHVlLiAqLwotICAgIHN0cnVjdCBzIHsgaW50IGo7IGNv bnN0IGludCAqYXBbM107IH07Ci0gICAgc3RydWN0IHMgKmI7IGItPmogPSA1 OwotICB9Ci0gIHsgLyogVUxUUklYLTMyIFYzLjEgKFJldiA5KSB2Y2MgcmVq ZWN0cyB0aGlzICovCi0gICAgY29uc3QgaW50IGZvbyA9IDEwOwotICAgIGlm ICghZm9vKSByZXR1cm4gMDsKLSAgfQotICByZXR1cm4gIWNzWzBdICYmICF6 ZXJvLng7Ci0jZW5kaWYKIAogICA7CiAgIHJldHVybiAwOwogfQogX0FDRU9G CiBpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0g IGFjX2N2X2NfY29uc3Q9eWVzCisgIGFjX2N2X3NhZmVfdG9fZGVmaW5lX19f ZXh0ZW5zaW9uc19fPXllcwogZWxzZQotICBhY19jdl9jX2NvbnN0PW5vCisg IGFjX2N2X3NhZmVfdG9fZGVmaW5lX19fZXh0ZW5zaW9uc19fPW5vCiBmaQog cm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBj b25mdGVzdC4kYWNfZXh0CiBmaQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9jX2NvbnN0IiA+JjUK LSRhc19lY2hvICIkYWNfY3ZfY19jb25zdCIgPiY2OyB9Ci1pZiB0ZXN0ICRh Y19jdl9jX2NvbnN0ID0gbm87IHRoZW4KK3sgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zfc2FmZV90b19k ZWZpbmVfX19leHRlbnNpb25zX18iID4mNQorJGFzX2VjaG8gIiRhY19jdl9z YWZlX3RvX2RlZmluZV9fX2V4dGVuc2lvbnNfXyIgPiY2OyB9CisgIHRlc3Qg JGFjX2N2X3NhZmVfdG9fZGVmaW5lX19fZXh0ZW5zaW9uc19fID0geWVzICYm CisgICAgJGFzX2VjaG8gIiNkZWZpbmUgX19FWFRFTlNJT05TX18gMSIgPj5j b25mZGVmcy5oCisKKyAgJGFzX2VjaG8gIiNkZWZpbmUgX0FMTF9TT1VSQ0Ug MSIgPj5jb25mZGVmcy5oCisKKyAgJGFzX2VjaG8gIiNkZWZpbmUgX0dOVV9T T1VSQ0UgMSIgPj5jb25mZGVmcy5oCisKKyAgJGFzX2VjaG8gIiNkZWZpbmUg X1BPU0lYX1BUSFJFQURfU0VNQU5USUNTIDEiID4+Y29uZmRlZnMuaAorCisg ICRhc19lY2hvICIjZGVmaW5lIF9UQU5ERU1fU09VUkNFIDEiID4+Y29uZmRl ZnMuaAorCiAKLSRhc19lY2hvICIjZGVmaW5lIGNvbnN0IC8qKi8iID4+Y29u ZmRlZnMuaAogCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbGFyZ2VmaWxl IHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2xhcmdlZmlsZStzZXR9 IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX2xhcmdlZmls ZTsKIGZpCiAKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogY2hlY2tpbmcgZm9yIGlubGluZSIgPiY1Ci0kYXNfZWNob19uICJj aGVja2luZyBmb3IgaW5saW5lLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2Fj X2N2X2NfaW5saW5lK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmIHRlc3QgIiRl bmFibGVfbGFyZ2VmaWxlIiAhPSBubzsgdGhlbgorCisgIHsgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHNw ZWNpYWwgQyBjb21waWxlciBvcHRpb25zIG5lZWRlZCBmb3IgbGFyZ2UgZmls ZXMiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHNwZWNpYWwgQyBj b21waWxlciBvcHRpb25zIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMuLi4gIiA+ JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3Zfc3lzX2xhcmdlZmlsZV9DQytzZXR9 IiA9IHNldDsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2 CiBlbHNlCi0gIGFjX2N2X2NfaW5saW5lPW5vCi1mb3IgYWNfa3cgaW4gaW5s aW5lIF9faW5saW5lX18gX19pbmxpbmU7IGRvCisgIGFjX2N2X3N5c19sYXJn ZWZpbGVfQ0M9bm8KKyAgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVu CisgICAgICAgYWNfc2F2ZV9DQz0kQ0MKKyAgICAgICB3aGlsZSA6OyBkbwor CSAjIElSSVggNi4yIGFuZCBsYXRlciBkbyBub3Qgc3VwcG9ydCBsYXJnZSBm aWxlcyBieSBkZWZhdWx0LAorCSAjIHNvIHVzZSB0aGUgQyBjb21waWxlcidz IC1uMzIgb3B0aW9uIGlmIHRoYXQgaGVscHMuCisJIGNhdCBjb25mZGVmcy5o IC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVm cy5oLiAgKi8KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAvKiBDaGVjayB0 aGF0IG9mZl90IGNhbiByZXByZXNlbnQgMioqNjMgLSAxIGNvcnJlY3RseS4K KyAgICBXZSBjYW4ndCBzaW1wbHkgZGVmaW5lIExBUkdFX09GRl9UIHRvIGJl IDkyMjMzNzIwMzY4NTQ3NzU4MDcsCisgICAgc2luY2Ugc29tZSBDKysgY29t cGlsZXJzIG1hc3F1ZXJhZGluZyBhcyBDIGNvbXBpbGVycworICAgIGluY29y cmVjdGx5IHJlamVjdCA5MjIzMzcyMDM2ODU0Nzc1ODA3LiAgKi8KKyNkZWZp bmUgTEFSR0VfT0ZGX1QgKCgob2ZmX3QpIDEgPDwgNjIpIC0gMSArICgob2Zm X3QpIDEgPDwgNjIpKQorICBpbnQgb2ZmX3RfaXNfbGFyZ2VbKExBUkdFX09G Rl9UICUgMjE0NzQ4MzYyOSA9PSA3MjEKKwkJICAgICAgICYmIExBUkdFX09G Rl9UICUgMjE0NzQ4MzY0NyA9PSAxKQorCQkgICAgICA/IDEgOiAtMV07Citp bnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9G CisJIGlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoK KyAgYnJlYWsKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVz dC4kYWNfb2JqZXh0CisJIENDPSIkQ0MgLW4zMiIKKwkgaWYgYWNfZm5fY190 cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9zeXNfbGFy Z2VmaWxlX0NDPScgLW4zMic7IGJyZWFrCitmaQorcm0gLWYgY29yZSBjb25m dGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dAorCSBicmVhaworICAgICAg IGRvbmUKKyAgICAgICBDQz0kYWNfc2F2ZV9DQworICAgICAgIHJtIC1mIGNv bmZ0ZXN0LiRhY19leHQKKyAgICBmaQorZmkKK3sgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zfc3lzX2xh cmdlZmlsZV9DQyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X3N5c19sYXJnZWZp bGVfQ0MiID4mNjsgfQorICBpZiB0ZXN0ICIkYWNfY3Zfc3lzX2xhcmdlZmls ZV9DQyIgIT0gbm87IHRoZW4KKyAgICBDQz0kQ0MkYWNfY3Zfc3lzX2xhcmdl ZmlsZV9DQworICBmaQorCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIF9GSUxFX09GRlNFVF9CSVRT IHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMiID4mNQorJGFzX2VjaG9f biAiY2hlY2tpbmcgZm9yIF9GSUxFX09GRlNFVF9CSVRTIHZhbHVlIG5lZWRl ZCBmb3IgbGFyZ2UgZmlsZXMuLi4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNf Y3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMrc2V0fSIgPSBzZXQ7IHRoZW4gOgor ICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICB3aGlsZSA6 OyBkbwogICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4k YWNfZXh0CiAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0jaWZuZGVmIF9fY3Bs dXNwbHVzCi10eXBlZGVmIGludCBmb29fdDsKLXN0YXRpYyAkYWNfa3cgZm9v X3Qgc3RhdGljX2ZvbyAoKSB7cmV0dXJuIDA7IH0KLSRhY19rdyBmb29fdCBm b28gKCkge3JldHVybiAwOyB9Ci0jZW5kaWYKKyNpbmNsdWRlIDxzeXMvdHlw ZXMuaD4KKyAvKiBDaGVjayB0aGF0IG9mZl90IGNhbiByZXByZXNlbnQgMioq NjMgLSAxIGNvcnJlY3RseS4KKyAgICBXZSBjYW4ndCBzaW1wbHkgZGVmaW5l IExBUkdFX09GRl9UIHRvIGJlIDkyMjMzNzIwMzY4NTQ3NzU4MDcsCisgICAg c2luY2Ugc29tZSBDKysgY29tcGlsZXJzIG1hc3F1ZXJhZGluZyBhcyBDIGNv bXBpbGVycworICAgIGluY29ycmVjdGx5IHJlamVjdCA5MjIzMzcyMDM2ODU0 Nzc1ODA3LiAgKi8KKyNkZWZpbmUgTEFSR0VfT0ZGX1QgKCgob2ZmX3QpIDEg PDwgNjIpIC0gMSArICgob2ZmX3QpIDEgPDwgNjIpKQorICBpbnQgb2ZmX3Rf aXNfbGFyZ2VbKExBUkdFX09GRl9UICUgMjE0NzQ4MzYyOSA9PSA3MjEKKwkJ ICAgICAgICYmIExBUkdFX09GRl9UICUgMjE0NzQ4MzY0NyA9PSAxKQorCQkg ICAgICA/IDEgOiAtMV07CitpbnQKK21haW4gKCkKK3sKIAorICA7CisgIHJl dHVybiAwOworfQogX0FDRU9GCiBpZiBhY19mbl9jX3RyeV9jb21waWxlICIk TElORU5PIjsgdGhlbiA6Ci0gIGFjX2N2X2NfaW5saW5lPSRhY19rdworICBh Y19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cz1ubzsgYnJlYWsKIGZpCiBybSAt ZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0 ZXN0LiRhY19leHQKLSAgdGVzdCAiJGFjX2N2X2NfaW5saW5lIiAhPSBubyAm JiBicmVhawotZG9uZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5j b25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjZGVm aW5lIF9GSUxFX09GRlNFVF9CSVRTIDY0CisjaW5jbHVkZSA8c3lzL3R5cGVz Lmg+CisgLyogQ2hlY2sgdGhhdCBvZmZfdCBjYW4gcmVwcmVzZW50IDIqKjYz IC0gMSBjb3JyZWN0bHkuCisgICAgV2UgY2FuJ3Qgc2ltcGx5IGRlZmluZSBM QVJHRV9PRkZfVCB0byBiZSA5MjIzMzcyMDM2ODU0Nzc1ODA3LAorICAgIHNp bmNlIHNvbWUgQysrIGNvbXBpbGVycyBtYXNxdWVyYWRpbmcgYXMgQyBjb21w aWxlcnMKKyAgICBpbmNvcnJlY3RseSByZWplY3QgOTIyMzM3MjAzNjg1NDc3 NTgwNy4gICovCisjZGVmaW5lIExBUkdFX09GRl9UICgoKG9mZl90KSAxIDw8 IDYyKSAtIDEgKyAoKG9mZl90KSAxIDw8IDYyKSkKKyAgaW50IG9mZl90X2lz X2xhcmdlWyhMQVJHRV9PRkZfVCAlIDIxNDc0ODM2MjkgPT0gNzIxCisJCSAg ICAgICAmJiBMQVJHRV9PRkZfVCAlIDIxNDc0ODM2NDcgPT0gMSkKKwkJICAg ICAgPyAxIDogLTFdOworaW50CittYWluICgpCit7CiAKKyAgOworICByZXR1 cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJ TkVOTyI7IHRoZW4gOgorICBhY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cz02 NDsgYnJlYWsKIGZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IHJlc3VsdDogJGFjX2N2X2NfaW5saW5lIiA+JjUKLSRhc19l Y2hvICIkYWNfY3ZfY19pbmxpbmUiID4mNjsgfQotCi1jYXNlICRhY19jdl9j X2lubGluZSBpbgotICBpbmxpbmUgfCB5ZXMpIDs7Ci0gICopCi0gICAgY2Fz ZSAkYWNfY3ZfY19pbmxpbmUgaW4KLSAgICAgIG5vKSBhY192YWw9OzsKLSAg ICAgICopIGFjX3ZhbD0kYWNfY3ZfY19pbmxpbmU7OwotICAgIGVzYWMKLSAg ICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0jaWZuZGVmIF9fY3BsdXNw bHVzCi0jZGVmaW5lIGlubGluZSAkYWNfdmFsCi0jZW5kaWYKK3JtIC1mIGNv cmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3Qu JGFjX2V4dAorICBhY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cz11bmtub3du CisgIGJyZWFrCitkb25lCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9zeXNfZmlsZV9vZmZz ZXRfYml0cyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X3N5c19maWxlX29mZnNl dF9iaXRzIiA+JjY7IH0KK2Nhc2UgJGFjX2N2X3N5c19maWxlX29mZnNldF9i aXRzIGluICMoCisgIG5vIHwgdW5rbm93bikgOzsKKyAgKikKK2NhdCA+PmNv bmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgX0ZJTEVfT0ZGU0VUX0JJVFMg JGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzCiBfQUNFT0YKLSAgICA7Owor OzsKIGVzYWMKK3JtIC1yZiBjb25mdGVzdCoKKyAgaWYgdGVzdCAkYWNfY3Zf c3lzX2ZpbGVfb2Zmc2V0X2JpdHMgPSB1bmtub3duOyB0aGVuCisgICAgeyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu ZyBmb3IgX0xBUkdFX0ZJTEVTIHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2UgZmls ZXMiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIF9MQVJHRV9GSUxF UyB2YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzLi4uICIgPiY2OyB9Citp ZiB0ZXN0ICIke2FjX2N2X3N5c19sYXJnZV9maWxlcytzZXR9IiA9IHNldDsg dGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisg IHdoaWxlIDo7IGRvCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNv bmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNs dWRlIDxzeXMvdHlwZXMuaD4KKyAvKiBDaGVjayB0aGF0IG9mZl90IGNhbiBy ZXByZXNlbnQgMioqNjMgLSAxIGNvcnJlY3RseS4KKyAgICBXZSBjYW4ndCBz aW1wbHkgZGVmaW5lIExBUkdFX09GRl9UIHRvIGJlIDkyMjMzNzIwMzY4NTQ3 NzU4MDcsCisgICAgc2luY2Ugc29tZSBDKysgY29tcGlsZXJzIG1hc3F1ZXJh ZGluZyBhcyBDIGNvbXBpbGVycworICAgIGluY29ycmVjdGx5IHJlamVjdCA5 MjIzMzcyMDM2ODU0Nzc1ODA3LiAgKi8KKyNkZWZpbmUgTEFSR0VfT0ZGX1Qg KCgob2ZmX3QpIDEgPDwgNjIpIC0gMSArICgob2ZmX3QpIDEgPDwgNjIpKQor ICBpbnQgb2ZmX3RfaXNfbGFyZ2VbKExBUkdFX09GRl9UICUgMjE0NzQ4MzYy OSA9PSA3MjEKKwkJICAgICAgICYmIExBUkdFX09GRl9UICUgMjE0NzQ4MzY0 NyA9PSAxKQorCQkgICAgICA/IDEgOiAtMV07CitpbnQKK21haW4gKCkKK3sK IAorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3Ry eV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X3N5c19sYXJn ZV9maWxlcz1ubzsgYnJlYWsKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVy ciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgY2F0 IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyog ZW5kIGNvbmZkZWZzLmguICAqLworI2RlZmluZSBfTEFSR0VfRklMRVMgMQor I2luY2x1ZGUgPHN5cy90eXBlcy5oPgorIC8qIENoZWNrIHRoYXQgb2ZmX3Qg Y2FuIHJlcHJlc2VudCAyKio2MyAtIDEgY29ycmVjdGx5LgorICAgIFdlIGNh bid0IHNpbXBseSBkZWZpbmUgTEFSR0VfT0ZGX1QgdG8gYmUgOTIyMzM3MjAz Njg1NDc3NTgwNywKKyAgICBzaW5jZSBzb21lIEMrKyBjb21waWxlcnMgbWFz cXVlcmFkaW5nIGFzIEMgY29tcGlsZXJzCisgICAgaW5jb3JyZWN0bHkgcmVq ZWN0IDkyMjMzNzIwMzY4NTQ3NzU4MDcuICAqLworI2RlZmluZSBMQVJHRV9P RkZfVCAoKChvZmZfdCkgMSA8PCA2MikgLSAxICsgKChvZmZfdCkgMSA8PCA2 MikpCisgIGludCBvZmZfdF9pc19sYXJnZVsoTEFSR0VfT0ZGX1QgJSAyMTQ3 NDgzNjI5ID09IDcyMQorCQkgICAgICAgJiYgTEFSR0VfT0ZGX1QgJSAyMTQ3 NDgzNjQ3ID09IDEpCisJCSAgICAgID8gMSA6IC0xXTsKK2ludAorbWFpbiAo KQorewogCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IGNoZWNraW5nIGZvciBncmVwIHRoYXQgaGFuZGxlcyBsb25nIGxpbmVz IGFuZCAtZSIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgZ3JlcCB0 aGF0IGhhbmRsZXMgbG9uZyBsaW5lcyBhbmQgLWUuLi4gIiA+JjY7IH0KLWlm IHRlc3QgIiR7YWNfY3ZfcGF0aF9HUkVQK3NldH0iID0gc2V0OyB0aGVuIDoK KyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlf Y29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9zeXNfbGFyZ2Vf ZmlsZXM9MTsgYnJlYWsKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBj b25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgYWNfY3Zf c3lzX2xhcmdlX2ZpbGVzPXVua25vd24KKyAgYnJlYWsKK2RvbmUKK2ZpCit7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs dDogJGFjX2N2X3N5c19sYXJnZV9maWxlcyIgPiY1CiskYXNfZWNobyAiJGFj X2N2X3N5c19sYXJnZV9maWxlcyIgPiY2OyB9CitjYXNlICRhY19jdl9zeXNf bGFyZ2VfZmlsZXMgaW4gIygKKyAgbm8gfCB1bmtub3duKSA7OworICAqKQor Y2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBfTEFSR0VfRklM RVMgJGFjX2N2X3N5c19sYXJnZV9maWxlcworX0FDRU9GCis7OworZXNhYwor cm0gLXJmIGNvbmZ0ZXN0KgorICBmaQorZmkKKworCithY19jX3ByZXByb2Nf d2Fybl9mbGFnPXllcworCithY19saWJpYmVydHlfd2Fybl9jZmxhZ3M9Citz YXZlX0NGTEFHUz0iJENGTEFHUyIKK2ZvciByZWFsX29wdGlvbiBpbiAtVyAt V2FsbCAtV3dyaXRlLXN0cmluZ3MgLVdjKystY29tcGF0IFwKKwkJCSAgLVdz dHJpY3QtcHJvdG90eXBlczsgZG8KKyAgIyBEbyB0aGUgY2hlY2sgd2l0aCB0 aGUgbm8tIHByZWZpeCByZW1vdmVkIHNpbmNlIGdjYyBzaWxlbnRseQorICAj IGFjY2VwdHMgYW55IC1Xbm8tKiBvcHRpb24gb24gcHVycG9zZQorICBjYXNl ICRyZWFsX29wdGlvbiBpbgorICAgIC1Xbm8tKikgb3B0aW9uPS1XYGV4cHIg eCRyZWFsX29wdGlvbiA6ICd4LVduby1cKC4qXCknYCA7OworICAgICopIG9w dGlvbj0kcmVhbF9vcHRpb24gOzsKKyAgZXNhYworICBhc19hY3hfV29wdGlv bj1gJGFzX2VjaG8gImFjeF9jdl9wcm9nX2NjX3dhcm5pbmdfJG9wdGlvbiIg fCAkYXNfdHJfc2hgCisKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyICRDQyBzdXBwb3J0cyAk b3B0aW9uIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgJEND IHN1cHBvcnRzICRvcHRpb24uLi4gIiA+JjY7IH0KK2lmIHsgYXNfdmFyPSRh c19hY3hfV29wdGlvbjsgZXZhbCAidGVzdCBcIlwkeyRhc192YXIrc2V0fVwi ID0gc2V0IjsgfTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIg PiY2CiBlbHNlCi0gIGlmIHRlc3QgLXogIiRHUkVQIjsgdGhlbgotICBhY19w YXRoX0dSRVBfZm91bmQ9ZmFsc2UKLSAgIyBMb29wIHRocm91Z2ggdGhlIHVz ZXIncyBwYXRoIGFuZCB0ZXN0IGZvciBlYWNoIG9mIFBST0dOQU1FLUxJU1QK LSAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotZm9y IGFzX2RpciBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91c3IveHBnNC9iaW4K LWRvCi0gIElGUz0kYXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2RpciIg JiYgYXNfZGlyPS4KLSAgICBmb3IgYWNfcHJvZyBpbiBncmVwIGdncmVwOyBk bwotICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9l eHRlbnNpb25zOyBkbwotICAgICAgYWNfcGF0aF9HUkVQPSIkYXNfZGlyLyRh Y19wcm9nJGFjX2V4ZWNfZXh0IgotICAgICAgeyB0ZXN0IC1mICIkYWNfcGF0 aF9HUkVQIiAmJiAkYXNfdGVzdF94ICIkYWNfcGF0aF9HUkVQIjsgfSB8fCBj b250aW51ZQotIyBDaGVjayBmb3IgR05VIGFjX3BhdGhfR1JFUCBhbmQgc2Vs ZWN0IGl0IGlmIGl0IGlzIGZvdW5kLgotICAjIENoZWNrIGZvciBHTlUgJGFj X3BhdGhfR1JFUAotY2FzZSBgIiRhY19wYXRoX0dSRVAiIC0tdmVyc2lvbiAy PiYxYCBpbgotKkdOVSopCi0gIGFjX2N2X3BhdGhfR1JFUD0iJGFjX3BhdGhf R1JFUCIgYWNfcGF0aF9HUkVQX2ZvdW5kPTo7OwotKikKLSAgYWNfY291bnQ9 MAotICAkYXNfZWNob19uIDAxMjM0NTY3ODkgPiJjb25mdGVzdC5pbiIKLSAg d2hpbGUgOgotICBkbwotICAgIGNhdCAiY29uZnRlc3QuaW4iICJjb25mdGVz dC5pbiIgPiJjb25mdGVzdC50bXAiCi0gICAgbXYgImNvbmZ0ZXN0LnRtcCIg ImNvbmZ0ZXN0LmluIgotICAgIGNwICJjb25mdGVzdC5pbiIgImNvbmZ0ZXN0 Lm5sIgotICAgICRhc19lY2hvICdHUkVQJyA+PiAiY29uZnRlc3QubmwiCi0g ICAgIiRhY19wYXRoX0dSRVAiIC1lICdHUkVQJCcgLWUgJy0oY2Fubm90IG1h dGNoKS0nIDwgImNvbmZ0ZXN0Lm5sIiA+ImNvbmZ0ZXN0Lm91dCIgMj4vZGV2 L251bGwgfHwgYnJlYWsKLSAgICBkaWZmICJjb25mdGVzdC5vdXQiICJjb25m dGVzdC5ubCIgPi9kZXYvbnVsbCAyPiYxIHx8IGJyZWFrCi0gICAgYXNfZm5f YXJpdGggJGFjX2NvdW50ICsgMSAmJiBhY19jb3VudD0kYXNfdmFsCi0gICAg aWYgdGVzdCAkYWNfY291bnQgLWd0ICR7YWNfcGF0aF9HUkVQX21heC0wfTsg dGhlbgotICAgICAgIyBCZXN0IG9uZSBzbyBmYXIsIHNhdmUgaXQgYnV0IGtl ZXAgbG9va2luZyBmb3IgYSBiZXR0ZXIgb25lCi0gICAgICBhY19jdl9wYXRo X0dSRVA9IiRhY19wYXRoX0dSRVAiCi0gICAgICBhY19wYXRoX0dSRVBfbWF4 PSRhY19jb3VudAotICAgIGZpCi0gICAgIyAxMCooMl4xMCkgY2hhcnMgYXMg aW5wdXQgc2VlbXMgbW9yZSB0aGFuIGVub3VnaAotICAgIHRlc3QgJGFjX2Nv dW50IC1ndCAxMCAmJiBicmVhawotICBkb25lCi0gIHJtIC1mIGNvbmZ0ZXN0 LmluIGNvbmZ0ZXN0LnRtcCBjb25mdGVzdC5ubCBjb25mdGVzdC5vdXQ7Owot ZXNhYworICBDRkxBR1M9IiRvcHRpb24iCisgICAgY2F0IGNvbmZkZWZzLmgg LSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZz LmguICAqLwogCi0gICAgICAkYWNfcGF0aF9HUkVQX2ZvdW5kICYmIGJyZWFr IDMKLSAgICBkb25lCi0gIGRvbmUKK2ludAorbWFpbiAoKQoreworCisgIDsK KyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBp bGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgZXZhbCAiJGFzX2FjeF9Xb3B0aW9u PXllcyIKK2Vsc2UKKyAgZXZhbCAiJGFzX2FjeF9Xb3B0aW9uPW5vIgorZmkK K3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQg Y29uZnRlc3QuJGFjX2V4dAorCitmaQorZXZhbCBhY19yZXM9XCQkYXNfYWN4 X1dvcHRpb24KKwkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQorJGFzX2VjaG8g IiRhY19yZXMiID4mNjsgfQorICBpZiB0ZXN0IGBldmFsICdhc192YWw9JHsn JGFzX2FjeF9Xb3B0aW9uJ307JGFzX2VjaG8gIiRhc192YWwiJ2AgPSB5ZXM7 IHRoZW4gOgorICBhY19saWJpYmVydHlfd2Fybl9jZmxhZ3M9IiRhY19saWJp YmVydHlfd2Fybl9jZmxhZ3Mke2FjX2xpYmliZXJ0eV93YXJuX2NmbGFnczor IH0kcmVhbF9vcHRpb24iCitmaQogICBkb25lCi1JRlM9JGFzX3NhdmVfSUZT Ci0gIGlmIHRlc3QgLXogIiRhY19jdl9wYXRoX0dSRVAiOyB0aGVuCi0gICAg YXNfZm5fZXJyb3IgIm5vIGFjY2VwdGFibGUgZ3JlcCBjb3VsZCBiZSBmb3Vu ZCBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91c3IveHBnNC9iaW4iICIkTElO RU5PIiA1Ci0gIGZpCitDRkxBR1M9IiRzYXZlX0NGTEFHUyIKKworIyBEbyB0 aGUgY2hlY2sgd2l0aCB0aGUgbm8tIHByZWZpeCByZW1vdmVkIGZyb20gdGhl IHdhcm5pbmcgb3B0aW9ucworIyBzaW5jZSBnY2Mgc2lsZW50bHkgYWNjZXB0 cyBhbnkgLVduby0qIG9wdGlvbiBvbiBwdXJwb3NlCitpZiB0ZXN0ICIkR0ND IiA9IHllczsgdGhlbiA6CisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAkQ0Mgc3VwcG9ydHMg LXBlZGFudGljICIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVy ICRDQyBzdXBwb3J0cyAtcGVkYW50aWMgLi4uICIgPiY2OyB9CitpZiB0ZXN0 ICIke2FjeF9jdl9wcm9nX2NjX3BlZGFudGljXytzZXR9IiA9IHNldDsgdGhl biA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCi0gIGFj X2N2X3BhdGhfR1JFUD0kR1JFUAorICBzYXZlX0NGTEFHUz0iJENGTEFHUyIK K0NGTEFHUz0iLXBlZGFudGljICIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNF T0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8K KworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19B Q0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4g OgorICBhY3hfY3ZfcHJvZ19jY19wZWRhbnRpY189eWVzCitlbHNlCisgIGFj eF9jdl9wcm9nX2NjX3BlZGFudGljXz1ubworZmkKK3JtIC1mIGNvcmUgY29u ZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4 dAorQ0ZMQUdTPSIkc2F2ZV9DRkxBR1MiCitmaQoreyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY3hfY3ZfcHJv Z19jY19wZWRhbnRpY18iID4mNQorJGFzX2VjaG8gIiRhY3hfY3ZfcHJvZ19j Y19wZWRhbnRpY18iID4mNjsgfQoraWYgdGVzdCAkYWN4X2N2X3Byb2dfY2Nf cGVkYW50aWNfID0geWVzOyB0aGVuIDoKKyAgYWNfbGliaWJlcnR5X3dhcm5f Y2ZsYWdzPSIkYWNfbGliaWJlcnR5X3dhcm5fY2ZsYWdzJHthY19saWJpYmVy dHlfd2Fybl9jZmxhZ3M6KyB9LXBlZGFudGljICIKIGZpCiAKIGZpCi17ICRh c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog JGFjX2N2X3BhdGhfR1JFUCIgPiY1Ci0kYXNfZWNobyAiJGFjX2N2X3BhdGhf R1JFUCIgPiY2OyB9Ci0gR1JFUD0iJGFjX2N2X3BhdGhfR1JFUCIKIAogCi17 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIGZvciBlZ3JlcCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3Ig ZWdyZXAuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcGF0aF9FR1JF UCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiB0ZXN0ICJ4JENDIiAhPSB4Y2M7 IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBjaGVja2luZyB3aGV0aGVyICRDQyBhbmQgY2MgdW5kZXJzdGFuZCAt YyBhbmQgLW8gdG9nZXRoZXIiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcg d2hldGhlciAkQ0MgYW5kIGNjIHVuZGVyc3RhbmQgLWMgYW5kIC1vIHRvZ2V0 aGVyLi4uICIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBjYyB1bmRl cnN0YW5kcyAtYyBhbmQgLW8gdG9nZXRoZXIiID4mNQorJGFzX2VjaG9fbiAi Y2hlY2tpbmcgd2hldGhlciBjYyB1bmRlcnN0YW5kcyAtYyBhbmQgLW8gdG9n ZXRoZXIuLi4gIiA+JjY7IH0KK2ZpCitzZXQgZHVtbXkgJENDOyBhY19jYz1g JGFzX2VjaG8gIiQyIiB8CisJCSAgICAgIHNlZCAncy9bXmEtekEtWjAtOV9d L18vZztzL15bMC05XS9fLydgCitpZiB7IGFzX3Zhcj1hY19jdl9wcm9nX2Nj XyR7YWNfY2N9X2NfbzsgZXZhbCAidGVzdCBcIlwkeyRhc192YXIrc2V0fVwi ID0gc2V0IjsgfTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIg PiY2CiBlbHNlCi0gIGlmIGVjaG8gYSB8ICRHUkVQIC1FICcoYXxiKScgPi9k ZXYvbnVsbCAyPiYxCi0gICB0aGVuIGFjX2N2X3BhdGhfRUdSRVA9IiRHUkVQ IC1FIgotICAgZWxzZQotICAgICBpZiB0ZXN0IC16ICIkRUdSRVAiOyB0aGVu Ci0gIGFjX3BhdGhfRUdSRVBfZm91bmQ9ZmFsc2UKLSAgIyBMb29wIHRocm91 Z2ggdGhlIHVzZXIncyBwYXRoIGFuZCB0ZXN0IGZvciBlYWNoIG9mIFBST0dO QU1FLUxJU1QKLSAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFS QVRPUgotZm9yIGFzX2RpciBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91c3Iv eHBnNC9iaW4KLWRvCi0gIElGUz0kYXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAi JGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICBmb3IgYWNfcHJvZyBpbiBlZ3Jl cDsgZG8KLSAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFi bGVfZXh0ZW5zaW9uczsgZG8KLSAgICAgIGFjX3BhdGhfRUdSRVA9IiRhc19k aXIvJGFjX3Byb2ckYWNfZXhlY19leHQiCi0gICAgICB7IHRlc3QgLWYgIiRh Y19wYXRoX0VHUkVQIiAmJiAkYXNfdGVzdF94ICIkYWNfcGF0aF9FR1JFUCI7 IH0gfHwgY29udGludWUKLSMgQ2hlY2sgZm9yIEdOVSBhY19wYXRoX0VHUkVQ IGFuZCBzZWxlY3QgaXQgaWYgaXQgaXMgZm91bmQuCi0gICMgQ2hlY2sgZm9y IEdOVSAkYWNfcGF0aF9FR1JFUAotY2FzZSBgIiRhY19wYXRoX0VHUkVQIiAt LXZlcnNpb24gMj4mMWAgaW4KLSpHTlUqKQotICBhY19jdl9wYXRoX0VHUkVQ PSIkYWNfcGF0aF9FR1JFUCIgYWNfcGF0aF9FR1JFUF9mb3VuZD06OzsKLSop Ci0gIGFjX2NvdW50PTAKLSAgJGFzX2VjaG9fbiAwMTIzNDU2Nzg5ID4iY29u ZnRlc3QuaW4iCi0gIHdoaWxlIDoKLSAgZG8KLSAgICBjYXQgImNvbmZ0ZXN0 LmluIiAiY29uZnRlc3QuaW4iID4iY29uZnRlc3QudG1wIgotICAgIG12ICJj b25mdGVzdC50bXAiICJjb25mdGVzdC5pbiIKLSAgICBjcCAiY29uZnRlc3Qu aW4iICJjb25mdGVzdC5ubCIKLSAgICAkYXNfZWNobyAnRUdSRVAnID4+ICJj b25mdGVzdC5ubCIKLSAgICAiJGFjX3BhdGhfRUdSRVAiICdFR1JFUCQnIDwg ImNvbmZ0ZXN0Lm5sIiA+ImNvbmZ0ZXN0Lm91dCIgMj4vZGV2L251bGwgfHwg YnJlYWsKLSAgICBkaWZmICJjb25mdGVzdC5vdXQiICJjb25mdGVzdC5ubCIg Pi9kZXYvbnVsbCAyPiYxIHx8IGJyZWFrCi0gICAgYXNfZm5fYXJpdGggJGFj X2NvdW50ICsgMSAmJiBhY19jb3VudD0kYXNfdmFsCi0gICAgaWYgdGVzdCAk YWNfY291bnQgLWd0ICR7YWNfcGF0aF9FR1JFUF9tYXgtMH07IHRoZW4KLSAg ICAgICMgQmVzdCBvbmUgc28gZmFyLCBzYXZlIGl0IGJ1dCBrZWVwIGxvb2tp bmcgZm9yIGEgYmV0dGVyIG9uZQotICAgICAgYWNfY3ZfcGF0aF9FR1JFUD0i JGFjX3BhdGhfRUdSRVAiCi0gICAgICBhY19wYXRoX0VHUkVQX21heD0kYWNf Y291bnQKLSAgICBmaQotICAgICMgMTAqKDJeMTApIGNoYXJzIGFzIGlucHV0 IHNlZW1zIG1vcmUgdGhhbiBlbm91Z2gKLSAgICB0ZXN0ICRhY19jb3VudCAt Z3QgMTAgJiYgYnJlYWsKLSAgZG9uZQotICBybSAtZiBjb25mdGVzdC5pbiBj b25mdGVzdC50bXAgY29uZnRlc3QubmwgY29uZnRlc3Qub3V0OzsKKyAgY2F0 IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyog ZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICA7 CisgIHJldHVybiAwOworfQorX0FDRU9GCisjIE1ha2Ugc3VyZSBpdCB3b3Jr cyBib3RoIHdpdGggJENDIGFuZCB3aXRoIHNpbXBsZSBjYy4KKyMgV2UgZG8g dGhlIHRlc3QgdHdpY2UgYmVjYXVzZSBzb21lIGNvbXBpbGVycyByZWZ1c2Ug dG8gb3ZlcndyaXRlIGFuCisjIGV4aXN0aW5nIC5vIGZpbGUgd2l0aCAtbywg dGhvdWdoIHRoZXkgd2lsbCBjcmVhdGUgb25lLgorYWNfdHJ5PSckQ0MgLWMg Y29uZnRlc3QuJGFjX2V4dCAtbyBjb25mdGVzdDIuJGFjX29iamV4dCA+JjUn CitybSAtZiBjb25mdGVzdDIuKgoraWYgeyB7IGNhc2UgIigoJGFjX3RyeSIg aW4KKyAgKlwiKiB8ICpcYCogfCAqXFwqKSBhY190cnlfZWNobz1cJGFjX3Ry eTs7CisgICopIGFjX3RyeV9lY2hvPSRhY190cnk7OworZXNhYworZXZhbCBh Y190cnlfZWNobz0iXCJcJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAk YWNfdHJ5X2VjaG9cIiIKKyRhc19lY2hvICIkYWNfdHJ5X2VjaG8iOyB9ID4m NQorICAoZXZhbCAiJGFjX3RyeSIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/Cisg ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9 ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYm CisgICB0ZXN0IC1mIGNvbmZ0ZXN0Mi4kYWNfb2JqZXh0ICYmIHsgeyBjYXNl ICIoKCRhY190cnkiIGluCisgICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5 X2VjaG89XCRhY190cnk7OworICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsK K2VzYWMKK2V2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCiskYXNfZWNobyAiJGFjX3Ry eV9lY2hvIjsgfSA+JjUKKyAgKGV2YWwgIiRhY190cnkiKSAyPiY1CisgIGFj X3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3Rh dHVzID0gMDsgfTsKK3RoZW4KKyAgZXZhbCBhY19jdl9wcm9nX2NjXyR7YWNf Y2N9X2Nfbz15ZXMKKyAgaWYgdGVzdCAieCRDQyIgIT0geGNjOyB0aGVuCisg ICAgIyBUZXN0IGZpcnN0IHRoYXQgY2MgZXhpc3RzIGF0IGFsbC4KKyAgICBp ZiB7IGFjX3RyeT0nY2MgLWMgY29uZnRlc3QuJGFjX2V4dCA+JjUnCisgIHsg eyBjYXNlICIoKCRhY190cnkiIGluCisgICpcIiogfCAqXGAqIHwgKlxcKikg YWNfdHJ5X2VjaG89XCRhY190cnk7OworICAqKSBhY190cnlfZWNobz0kYWNf dHJ5OzsKIGVzYWMKLQotICAgICAgJGFjX3BhdGhfRUdSRVBfZm91bmQgJiYg YnJlYWsgMwotICAgIGRvbmUKLSAgZG9uZQotICBkb25lCi1JRlM9JGFzX3Nh dmVfSUZTCi0gIGlmIHRlc3QgLXogIiRhY19jdl9wYXRoX0VHUkVQIjsgdGhl bgotICAgIGFzX2ZuX2Vycm9yICJubyBhY2NlcHRhYmxlIGVncmVwIGNvdWxk IGJlIGZvdW5kIGluICRQQVRIJFBBVEhfU0VQQVJBVE9SL3Vzci94cGc0L2Jp biIgIiRMSU5FTk8iIDUKK2V2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCiskYXNfZWNo byAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKKyAgKGV2YWwgIiRhY190cnkiKSAy PiY1CisgIGFjX3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVz dCAkYWNfc3RhdHVzID0gMDsgfTsgfTsgdGhlbgorICAgICAgYWNfdHJ5PSdj YyAtYyBjb25mdGVzdC4kYWNfZXh0IC1vIGNvbmZ0ZXN0Mi4kYWNfb2JqZXh0 ID4mNScKKyAgICAgIHJtIC1mIGNvbmZ0ZXN0Mi4qCisgICAgICBpZiB7IHsg Y2FzZSAiKCgkYWNfdHJ5IiBpbgorICAqXCIqIHwgKlxgKiB8ICpcXCopIGFj X3RyeV9lY2hvPVwkYWNfdHJ5OzsKKyAgKikgYWNfdHJ5X2VjaG89JGFjX3Ry eTs7Citlc2FjCitldmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306ICRhY190cnlfZWNob1wiIgorJGFzX2VjaG8gIiRh Y190cnlfZWNobyI7IH0gPiY1CisgIChldmFsICIkYWNfdHJ5IikgMj4mNQor ICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFj X3N0YXR1cyA9IDA7IH0gJiYKKwkgdGVzdCAtZiBjb25mdGVzdDIuJGFjX29i amV4dCAmJiB7IHsgY2FzZSAiKCgkYWNfdHJ5IiBpbgorICAqXCIqIHwgKlxg KiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsKKyAgKikgYWNfdHJ5 X2VjaG89JGFjX3RyeTs7Citlc2FjCitldmFsIGFjX3RyeV9lY2hvPSJcIlwk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRhY190cnlfZWNob1wiIgor JGFzX2VjaG8gIiRhY190cnlfZWNobyI7IH0gPiY1CisgIChldmFsICIkYWNf dHJ5IikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1 CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07CisgICAgICB0aGVuCisJIyBj YyB3b3JrcyB0b28uCisJOgorICAgICAgZWxzZQorCSMgY2MgZXhpc3RzIGJ1 dCBkb2Vzbid0IGxpa2UgLW8uCisJZXZhbCBhY19jdl9wcm9nX2NjXyR7YWNf Y2N9X2Nfbz1ubworICAgICAgZmkKKyAgICBmaQogICBmaQogZWxzZQotICBh Y19jdl9wYXRoX0VHUkVQPSRFR1JFUAorICBldmFsIGFjX2N2X3Byb2dfY2Nf JHthY19jY31fY19vPW5vCiBmaQorcm0gLWYgY29yZSBjb25mdGVzdCoKIAot ICAgZmkKIGZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IHJlc3VsdDogJGFjX2N2X3BhdGhfRUdSRVAiID4mNQotJGFzX2Vj aG8gIiRhY19jdl9wYXRoX0VHUkVQIiA+JjY7IH0KLSBFR1JFUD0iJGFjX2N2 X3BhdGhfRUdSRVAiCitpZiBldmFsIHRlc3QgXCRhY19jdl9wcm9nX2NjXyR7 YWNfY2N9X2NfbyA9IHllczsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKKyRhc19l Y2hvICJ5ZXMiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2Vj aG8gIm5vIiA+JjY7IH0KIAorJGFzX2VjaG8gIiNkZWZpbmUgTk9fTUlOVVNf Q19NSU5VU19PIDEiID4+Y29uZmRlZnMuaAogCi17ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBBTlNJIEMg aGVhZGVyIGZpbGVzIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciBB TlNJIEMgaGVhZGVyIGZpbGVzLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2Fj X2N2X2hlYWRlcl9zdGRjK3NldH0iID0gc2V0OyB0aGVuIDoKK2ZpCisKKyMg YXV0b2NvbmYgaXMgbGFtZSBhbmQgZG9lc24ndCBnaXZlIHVzIGFueSBzdWJz dGl0dXRpb24gdmFyaWFibGUgZm9yIHRoaXMuCitpZiBldmFsICJ0ZXN0IFwi YGVjaG8gJyRhY19jdl9wcm9nX2NjXycke2FjX2NjfV9jX29gXCIgPSBubyI7 IHRoZW4KKyAgTk9fTUlOVVNfQ19NSU5VU19PPXllcworZWxzZQorICBPVVRQ VVRfT1BUSU9OPSctbyAkQCcKK2ZpCisKKworCit7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhbiBBTlNJ IEMtY29uZm9ybWluZyBjb25zdCIgPiY1CiskYXNfZWNob19uICJjaGVja2lu ZyBmb3IgYW4gQU5TSSBDLWNvbmZvcm1pbmcgY29uc3QuLi4gIiA+JjY7IH0K K2lmIHRlc3QgIiR7YWNfY3ZfY19jb25zdCtzZXR9IiA9IHNldDsgdGhlbiA6 CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGNhdCBj b25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVu ZCBjb25mZGVmcy5oLiAgKi8KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNs dWRlIDxzdGRhcmcuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRl IDxmbG9hdC5oPgogCiBpbnQKIG1haW4gKCkKIHsKKy8qIEZJWE1FOiBJbmNs dWRlIHRoZSBjb21tZW50cyBzdWdnZXN0ZWQgYnkgUGF1bC4gKi8KKyNpZm5k ZWYgX19jcGx1c3BsdXMKKyAgLyogVWx0cml4IG1pcHMgY2MgcmVqZWN0cyB0 aGlzLiAgKi8KKyAgdHlwZWRlZiBpbnQgY2hhcnNldFsyXTsKKyAgY29uc3Qg Y2hhcnNldCBjczsKKyAgLyogU3VuT1MgNC4xLjEgY2MgcmVqZWN0cyB0aGlz LiAgKi8KKyAgY2hhciBjb25zdCAqY29uc3QgKnBjcGNjOworICBjaGFyICoq cHBjOworICAvKiBORUMgU1ZSNC4wLjIgbWlwcyBjYyByZWplY3RzIHRoaXMu ICAqLworICBzdHJ1Y3QgcG9pbnQge2ludCB4LCB5O307CisgIHN0YXRpYyBz dHJ1Y3QgcG9pbnQgY29uc3QgemVybyA9IHswLDB9OworICAvKiBBSVggWEwg QyAxLjAyLjAuMCByZWplY3RzIHRoaXMuCisgICAgIEl0IGRvZXMgbm90IGxl dCB5b3Ugc3VidHJhY3Qgb25lIGNvbnN0IFgqIHBvaW50ZXIgZnJvbSBhbm90 aGVyIGluCisgICAgIGFuIGFybSBvZiBhbiBpZi1leHByZXNzaW9uIHdob3Nl IGlmLXBhcnQgaXMgbm90IGEgY29uc3RhbnQKKyAgICAgZXhwcmVzc2lvbiAq LworICBjb25zdCBjaGFyICpnID0gInN0cmluZyI7CisgIHBjcGNjID0gJmcg KyAoZyA/IGctZyA6IDApOworICAvKiBIUFVYIDcuMCBjYyByZWplY3RzIHRo ZXNlLiAqLworICArK3BjcGNjOworICBwcGMgPSAoY2hhcioqKSBwY3BjYzsK KyAgcGNwY2MgPSAoY2hhciBjb25zdCAqY29uc3QgKikgcHBjOworICB7IC8q IFNDTyAzLjJ2NCBjYyByZWplY3RzIHRoaXMuICAqLworICAgIGNoYXIgKnQ7 CisgICAgY2hhciBjb25zdCAqcyA9IDAgPyAoY2hhciAqKSAwIDogKGNoYXIg Y29uc3QgKikgMDsKKworICAgICp0KysgPSAwOworICAgIGlmIChzKSByZXR1 cm4gMDsKKyAgfQorICB7IC8qIFNvbWVvbmUgdGhpbmtzIHRoZSBTdW4gc3Vw cG9zZWRseS1BTlNJIGNvbXBpbGVyIHdpbGwgcmVqZWN0IHRoaXMuICAqLwor ICAgIGludCB4W10gPSB7MjUsIDE3fTsKKyAgICBjb25zdCBpbnQgKmZvbyA9 ICZ4WzBdOworICAgICsrZm9vOworICB9CisgIHsgLyogU3VuIFNDMS4wIEFO U0kgY29tcGlsZXIgcmVqZWN0cyB0aGlzIC0tIGJ1dCBub3QgdGhlIGFib3Zl LiAqLworICAgIHR5cGVkZWYgY29uc3QgaW50ICppcHRyOworICAgIGlwdHIg cCA9IDA7CisgICAgKytwOworICB9CisgIHsgLyogQUlYIFhMIEMgMS4wMi4w LjAgcmVqZWN0cyB0aGlzIHNheWluZworICAgICAgICJrLmMiLCBsaW5lIDIu Mjc6IDE1MDYtMDI1IChTKSBPcGVyYW5kIG11c3QgYmUgYSBtb2RpZmlhYmxl IGx2YWx1ZS4gKi8KKyAgICBzdHJ1Y3QgcyB7IGludCBqOyBjb25zdCBpbnQg KmFwWzNdOyB9OworICAgIHN0cnVjdCBzICpiOyBiLT5qID0gNTsKKyAgfQor ICB7IC8qIFVMVFJJWC0zMiBWMy4xIChSZXYgOSkgdmNjIHJlamVjdHMgdGhp cyAqLworICAgIGNvbnN0IGludCBmb28gPSAxMDsKKyAgICBpZiAoIWZvbykg cmV0dXJuIDA7CisgIH0KKyAgcmV0dXJuICFjc1swXSAmJiAhemVyby54Owor I2VuZGlmCiAKICAgOwogICByZXR1cm4gMDsKIH0KIF9BQ0VPRgogaWYgYWNf Zm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotICBhY19jdl9o ZWFkZXJfc3RkYz15ZXMKKyAgYWNfY3ZfY19jb25zdD15ZXMKIGVsc2UKLSAg YWNfY3ZfaGVhZGVyX3N0ZGM9bm8KKyAgYWNfY3ZfY19jb25zdD1ubwogZmkK IHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQg Y29uZnRlc3QuJGFjX2V4dAotCi1pZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3Rk YyA9IHllczsgdGhlbgotICAjIFN1bk9TIDQueCBzdHJpbmcuaCBkb2VzIG5v dCBkZWNsYXJlIG1lbSosIGNvbnRyYXJ5IHRvIEFOU0kuCi0gIGNhdCBjb25m ZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBj b25mZGVmcy5oLiAgKi8KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotX0FDRU9G Ci1pZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8 Ci0gICRFR1JFUCAibWVtY2hyIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgot Ci1lbHNlCi0gIGFjX2N2X2hlYWRlcl9zdGRjPW5vCi1maQotcm0gLWYgY29u ZnRlc3QqCi0KIGZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IHJlc3VsdDogJGFjX2N2X2NfY29uc3QiID4mNQorJGFzX2Vj aG8gIiRhY19jdl9jX2NvbnN0IiA+JjY7IH0KK2lmIHRlc3QgJGFjX2N2X2Nf Y29uc3QgPSBubzsgdGhlbgogCi1pZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3Rk YyA9IHllczsgdGhlbgotICAjIElTQyAyLjAuMiBzdGRsaWIuaCBkb2VzIG5v dCBkZWNsYXJlIGZyZWUsIGNvbnRyYXJ5IHRvIEFOU0kuCi0gIGNhdCBjb25m ZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBj b25mZGVmcy5oLiAgKi8KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLQotX0FDRU9G Ci1pZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8 Ci0gICRFR1JFUCAiZnJlZSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLQot ZWxzZQotICBhY19jdl9oZWFkZXJfc3RkYz1ubwotZmkKLXJtIC1mIGNvbmZ0 ZXN0KgorJGFzX2VjaG8gIiNkZWZpbmUgY29uc3QgLyoqLyIgPj5jb25mZGVm cy5oCiAKIGZpCiAKLWlmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVz OyB0aGVuCi0gICMgL2Jpbi9jYyBpbiBJcml4LTQuMC41IGdldHMgbm9uLUFO U0kgY3R5cGUgbWFjcm9zIHVubGVzcyB1c2luZyAtYW5zaS4KLSAgaWYgdGVz dCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgotICA6Cit7ICRh c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5n IGZvciBpbmxpbmUiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGlu bGluZS4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHthY19jdl9jX2lubGluZStz ZXR9IiA9IHNldDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIg PiY2CiBlbHNlCisgIGFjX2N2X2NfaW5saW5lPW5vCitmb3IgYWNfa3cgaW4g aW5saW5lIF9faW5saW5lX18gX19pbmxpbmU7IGRvCiAgIGNhdCBjb25mZGVm cy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25m ZGVmcy5oLiAgKi8KLSNpbmNsdWRlIDxjdHlwZS5oPgotI2luY2x1ZGUgPHN0 ZGxpYi5oPgotI2lmICgoJyAnICYgMHgwRkYpID09IDB4MDIwKQotIyBkZWZp bmUgSVNMT1dFUihjKSAoJ2EnIDw9IChjKSAmJiAoYykgPD0gJ3onKQotIyBk ZWZpbmUgVE9VUFBFUihjKSAoSVNMT1dFUihjKSA/ICdBJyArICgoYykgLSAn YScpIDogKGMpKQotI2Vsc2UKLSMgZGVmaW5lIElTTE9XRVIoYykgXAotCQkg ICAoKCdhJyA8PSAoYykgJiYgKGMpIDw9ICdpJykgXAotCQkgICAgIHx8ICgn aicgPD0gKGMpICYmIChjKSA8PSAncicpIFwKLQkJICAgICB8fCAoJ3MnIDw9 IChjKSAmJiAoYykgPD0gJ3onKSkKLSMgZGVmaW5lIFRPVVBQRVIoYykgKElT TE9XRVIoYykgPyAoKGMpIHwgMHg0MCkgOiAoYykpCisjaWZuZGVmIF9fY3Bs dXNwbHVzCit0eXBlZGVmIGludCBmb29fdDsKK3N0YXRpYyAkYWNfa3cgZm9v X3Qgc3RhdGljX2ZvbyAoKSB7cmV0dXJuIDA7IH0KKyRhY19rdyBmb29fdCBm b28gKCkge3JldHVybiAwOyB9CiAjZW5kaWYKIAotI2RlZmluZSBYT1IoZSwg ZikgKCgoZSkgJiYgIShmKSkgfHwgKCEoZSkgJiYgKGYpKSkKLWludAotbWFp biAoKQotewotICBpbnQgaTsKLSAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsr KQotICAgIGlmIChYT1IgKGlzbG93ZXIgKGkpLCBJU0xPV0VSIChpKSkKLQl8 fCB0b3VwcGVyIChpKSAhPSBUT1VQUEVSIChpKSkKLSAgICAgIHJldHVybiAy OwotICByZXR1cm4gMDsKLX0KIF9BQ0VPRgotaWYgYWNfZm5fY190cnlfcnVu ICIkTElORU5PIjsgdGhlbiA6Ci0KLWVsc2UKLSAgYWNfY3ZfaGVhZGVyX3N0 ZGM9bm8KLWZpCi1ybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0Liog Z21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCi0gIGNvbmZ0 ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0 Ci1maQotCi1maQoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7 IHRoZW4gOgorICBhY19jdl9jX2lubGluZT0kYWNfa3cKIGZpCi17ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFj X2N2X2hlYWRlcl9zdGRjIiA+JjUKLSRhc19lY2hvICIkYWNfY3ZfaGVhZGVy X3N0ZGMiID4mNjsgfQotaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0ZGMgPSB5 ZXM7IHRoZW4KLQotJGFzX2VjaG8gIiNkZWZpbmUgU1REQ19IRUFERVJTIDEi ID4+Y29uZmRlZnMuaAorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRl c3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisgIHRlc3QgIiRhY19j dl9jX2lubGluZSIgIT0gbm8gJiYgYnJlYWsKK2RvbmUKIAogZmkKK3sgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAk YWNfY3ZfY19pbmxpbmUiID4mNQorJGFzX2VjaG8gIiRhY19jdl9jX2lubGlu ZSIgPiY2OyB9CiAKLSMgT24gSVJJWCA1LjMsIHN5cy90eXBlcyBhbmQgaW50 dHlwZXMuaCBhcmUgY29uZmxpY3RpbmcuCi1mb3IgYWNfaGVhZGVyIGluIHN5 cy90eXBlcy5oIHN5cy9zdGF0Lmggc3RkbGliLmggc3RyaW5nLmggbWVtb3J5 Lmggc3RyaW5ncy5oIFwKLQkJICBpbnR0eXBlcy5oIHN0ZGludC5oIHVuaXN0 ZC5oCi1kbyA6Ci0gIGFzX2FjX0hlYWRlcj1gJGFzX2VjaG8gImFjX2N2X2hl YWRlcl8kYWNfaGVhZGVyIiB8ICRhc190cl9zaGAKLWFjX2ZuX2NfY2hlY2tf aGVhZGVyX3ByZXByb2MgIiRMSU5FTk8iICIkYWNfaGVhZGVyIiAiJGFzX2Fj X0hlYWRlciIKLWV2YWwgYXNfdmFsPVwkJGFzX2FjX0hlYWRlcgotICAgaWYg dGVzdCAieCRhc192YWwiID0geCIieWVzOyB0aGVuIDoKLSAgY2F0ID4+Y29u ZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSBgJGFzX2VjaG8gIkhBVkVfJGFj X2hlYWRlciIgfCAkYXNfdHJfY3BwYCAxCitjYXNlICRhY19jdl9jX2lubGlu ZSBpbgorICBpbmxpbmUgfCB5ZXMpIDs7CisgICopCisgICAgY2FzZSAkYWNf Y3ZfY19pbmxpbmUgaW4KKyAgICAgIG5vKSBhY192YWw9OzsKKyAgICAgICop IGFjX3ZhbD0kYWNfY3ZfY19pbmxpbmU7OworICAgIGVzYWMKKyAgICBjYXQg Pj5jb25mZGVmcy5oIDw8X0FDRU9GCisjaWZuZGVmIF9fY3BsdXNwbHVzCisj ZGVmaW5lIGlubGluZSAkYWNfdmFsCisjZW5kaWYKIF9BQ0VPRgotCi1maQot ZG9uZQotCisgICAgOzsKK2VzYWMKIAogIHsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBieXRlIG9y ZGVyaW5nIGlzIGJpZ2VuZGlhbiIgPiY1CiAkYXNfZWNob19uICJjaGVja2lu ZyB3aGV0aGVyIGJ5dGUgb3JkZXJpbmcgaXMgYmlnZW5kaWFuLi4uICIgPiY2 OyB9CkBAIC00ODg1LDkgKzUwNjcsMTUgQEAgZmkKIGNhc2UgIiR7aG9zdH0i IGluCiAgICAgIyBQSUMgaXMgdGhlIGRlZmF1bHQgb24gc29tZSB0YXJnZXRz IG9yIG11c3Qgbm90IGJlIHVzZWQuCiAgICAgKi0qLWRhcndpbiopCi0JIyBQ SUMgaXMgdGhlIGRlZmF1bHQgb24gdGhpcyBwbGF0Zm9ybQotCSMgQ29tbW9u IHN5bWJvbHMgbm90IGFsbG93ZWQgaW4gTUhfRFlMSUIgZmlsZXMKLQlQSUNG TEFHPS1mbm8tY29tbW9uCisJIyBGb3IgZGFyd2luLCBjb21tb24gc3ltYm9s cyBhcmUgbm90IGFsbG93ZWQgaW4gTUhfRFlMSUIgZmlsZXMKKwljYXNlICIk e0NGTEFHU30iIGluCisJICAjIElmIHdlIGFyZSB1c2luZyBhIGNvbXBpbGVy IHN1cHBvcnRpbmcgbWR5bmFtaWMtbm8tcGljCisJICAjIGFuZCB0aGUgb3B0 aW9uIGhhcyBiZWVuIHRlc3RlZCBhcyBzYWZlIHRvIGFkZCwgdGhlbiBjYW5j ZWwKKwkgICMgaXQgaGVyZSwgc2luY2UgdGhlIGNvZGUgZ2VuZXJhdGVkIGlz IGluY29tcGF0aWJsZSB3aXRoIHNoYXJlZAorCSAgI8KgbGlicy4KKwkgICot bWR5bmFtaWMtbm8tcGljKikgUElDRkxBRz0nLWZuby1jb21tb24gLW1uby1k eW5hbWljLW5vLXBpYycgOzsKKwkgICopIFBJQ0ZMQUc9LWZuby1jb21tb24g OzsKKwllc2FjCiAJOzsKICAgICBhbHBoYSotZGVjLW9zZjUqKQogCSMgUElD IGlzIHRoZSBkZWZhdWx0LgpkaWZmIC0tZ2l0IGEvbGliaWJlcnR5L2NvbmZp Z3VyZS5hYyBiL2xpYmliZXJ0eS9jb25maWd1cmUuYWMKaW5kZXggOTIyYWE4 Ni4uODY4YmU4ZSAxMDA2NDQKLS0tIGEvbGliaWJlcnR5L2NvbmZpZ3VyZS5h YworKysgYi9saWJpYmVydHkvY29uZmlndXJlLmFjCkBAIC0xNTUsNiArMTU1 LDcgQEAgQUNfTVNHX05PVElDRShbdGFyZ2V0X2hlYWRlcl9kaXIgPSAkdGFy Z2V0X2hlYWRlcl9kaXJdKQogCiBHQ0NfTk9fRVhFQ1VUQUJMRVMKIEFDX1BS T0dfQ0MKK0FDX0dOVV9TT1VSQ0UKIEFDX1NZU19MQVJHRUZJTEUKIEFDX1BS T0dfQ1BQX1dFUlJPUgogCmRpZmYgLS1naXQgYS9saWJpYmVydHkvY3AtZGVt YW5nbGUuYyBiL2xpYmliZXJ0eS9jcC1kZW1hbmdsZS5jCmluZGV4IDc3YzJj ZWU5Li4yOTg4YjZiIDEwMDY0NAotLS0gYS9saWJpYmVydHkvY3AtZGVtYW5n bGUuYworKysgYi9saWJpYmVydHkvY3AtZGVtYW5nbGUuYwpAQCAtMjQ3MCw2 ICsyNDcwLDkgQEAgY3BsdXNfZGVtYW5nbGVfdHlwZSAoc3RydWN0IGRfaW5m byAqZGkpCiAgICAgY2FzZSAnVSc6CiAgICAgICBkX2FkdmFuY2UgKGRpLCAx KTsKICAgICAgIHJldCA9IGRfc291cmNlX25hbWUgKGRpKTsKKyAgICAgIGlm IChkX3BlZWtfY2hhciAoZGkpID09ICdJJykKKwlyZXQgPSBkX21ha2VfY29t cCAoZGksIERFTUFOR0xFX0NPTVBPTkVOVF9URU1QTEFURSwgcmV0LAorCQkJ ICAgZF90ZW1wbGF0ZV9hcmdzIChkaSkpOwogICAgICAgcmV0ID0gZF9tYWtl X2NvbXAgKGRpLCBERU1BTkdMRV9DT01QT05FTlRfVkVORE9SX1RZUEVfUVVB TCwKIAkJCSBjcGx1c19kZW1hbmdsZV90eXBlIChkaSksIHJldCk7CiAgICAg ICBicmVhazsKZGlmZiAtLWdpdCBhL2xpYmliZXJ0eS9mbG9hdGZvcm1hdC5j IGIvbGliaWJlcnR5L2Zsb2F0Zm9ybWF0LmMKaW5kZXggNzg5ZmEwNS4uOTE5 MGUxNCAxMDA2NDQKLS0tIGEvbGliaWJlcnR5L2Zsb2F0Zm9ybWF0LmMKKysr IGIvbGliaWJlcnR5L2Zsb2F0Zm9ybWF0LmMKQEAgLTEsNSArMSw1IEBACiAv KiBJRUVFIGZsb2F0aW5nIHBvaW50IHN1cHBvcnQgcm91dGluZXMsIGZvciBH REIsIHRoZSBHTlUgRGVidWdnZXIuCi0gICBDb3B5cmlnaHQgMTk5MSwgMTk5 NCwgMTk5OSwgMjAwMCwgMjAwMywgMjAwNSwgMjAwNiwgMjAxMCwgMjAxMgor ICAgQ29weXJpZ2h0IDE5OTEsIDE5OTQsIDE5OTksIDIwMDAsIDIwMDMsIDIw MDUsIDIwMDYsIDIwMTAsIDIwMTIsIDIwMTUKICAgIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgogCiBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIu CkBAIC0xOSw3ICsxOSw5IEBAIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBp ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiBGb3VuZGF0aW9u LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQgLSBGaWZ0aCBGbG9vciwgQm9z dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuICAqLwogCiAvKiBUaGlzIGlzIG5l ZWRlZCB0byBwaWNrIHVwIHRoZSBOQU4gbWFjcm8gb24gc29tZSBzeXN0ZW1z LiAgKi8KKyNpZm5kZWYgX0dOVV9TT1VSQ0UKICNkZWZpbmUgX0dOVV9TT1VS Q0UKKyNlbmRpZgogCiAjaWZkZWYgSEFWRV9DT05GSUdfSAogI2luY2x1ZGUg ImNvbmZpZy5oIgpkaWZmIC0tZ2l0IGEvbGliaWJlcnR5L3Rlc3RzdWl0ZS9N YWtlZmlsZS5pbiBiL2xpYmliZXJ0eS90ZXN0c3VpdGUvTWFrZWZpbGUuaW4K aW5kZXggNDMyNGE4Zi4uOGY1ZjdiNSAxMDA2NDQKLS0tIGEvbGliaWJlcnR5 L3Rlc3RzdWl0ZS9NYWtlZmlsZS5pbgorKysgYi9saWJpYmVydHkvdGVzdHN1 aXRlL01ha2VmaWxlLmluCkBAIC0zMyw3ICszMyw3IEBAIFNIRUxMID0gQFNI RUxMQAogCiBDQyA9IEBDQ0AKIENGTEFHUyA9IEBDRkxBR1NACi1MSUJDRkxB R1MgPSAkKENGTEFHUykKK0xJQkNGTEFHUyA9ICQoQ0ZMQUdTKSAkKExERkxB R1MpCiAKICMgTXVsdGlsaWIgc3VwcG9ydCB2YXJpYWJsZXMuCiBNVUxUSVNS Q1RPUCA9CmRpZmYgLS1naXQgYS9saWJpYmVydHkvdGVzdHN1aXRlL2RlbWFu Z2xlLWV4cGVjdGVkIGIvbGliaWJlcnR5L3Rlc3RzdWl0ZS9kZW1hbmdsZS1l eHBlY3RlZAppbmRleCBhMDMwNjg1Li42ZWE2NGFlIDEwMDY0NAotLS0gYS9s aWJpYmVydHkvdGVzdHN1aXRlL2RlbWFuZ2xlLWV4cGVjdGVkCisrKyBiL2xp YmliZXJ0eS90ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQKQEAgLTQzNTYs MyArNDM1Niw2IEBAIF9RdWV1ZU5vdGlmaWNhdGlvbl9RdWV1ZUNvbnRyb2xs ZXJfXyQ0UFBQUFBQUE1fQV9JTm90aWNlX19fWgogLS1mb3JtYXQ9Z251LXYz CiBfWjFmU3NCM2Zvb1NfCiBmKHN0ZDo6c3RyaW5nW2FiaTpmb29dLCBzdGQ6 OnN0cmluZ1thYmk6Zm9vXSkKKy0tZm9ybWF0PWdudS12MworX1oxOEluZGly ZWN0RXh0ZXJuQ2FsbElQVTdzdGRjYWxsVTdyZWdwYXJtSUxpM0VFRnZpaUVp RXZUX1QwX1MzXwordm9pZCBJbmRpcmVjdEV4dGVybkNhbGw8dm9pZCAoIHJl Z3Bhcm08Mz4gc3RkY2FsbCopKGludCwgaW50KSwgaW50Pih2b2lkICggcmVn cGFybTwzPiBzdGRjYWxsKikoaW50LCBpbnQpLCBpbnQsIHZvaWQgKCByZWdw YXJtPDM+IHN0ZGNhbGwqKShpbnQsIGludCkpCg== --047d7bfd05b44ac9c50518e07057--