From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 33611 invoked by alias); 27 May 2015 16:49:19 -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 32790 invoked by uid 89); 27 May 2015 16:49:19 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=2.9 required=5.0 tests=AWL,BAYES_99,BAYES_999,KAM_ASCII_DIVIDERS,RCVD_IN_DNSWL_LOW,SPF_PASS,T_RP_MATCHES_RCVD,UNSUBSCRIBE_BODY autolearn=no version=3.3.2 X-HELO: mail-ig0-f172.google.com Received: from mail-ig0-f172.google.com (HELO mail-ig0-f172.google.com) (209.85.213.172) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Wed, 27 May 2015 16:49:11 +0000 Received: by igbpi8 with SMTP id pi8so89919273igb.1 for ; Wed, 27 May 2015 09:49:09 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:date:message-id:subject:from:to :content-type; bh=AHLI5FjR0f6rfjOMvXbKLHoRLh4ahJ14uJ2WvCYCLmo=; b=en6HA58IMof3v0tbByclh8jCryWB6lSaN64qtnNl1ntFY3GtPEYyBn7f3LwSEPCa0d 2PjtQ5YJe60ROMkgKOL5iPqcQpN6oBlR5rkD3X0a35HqPx7mNamMKf916+DGTtLRLdVW SmrGDtPmyKi46h7vpjKTbI3AYssK+CWVr9KvaPmDYyOjkcRePAt8Nw6hf5W9ghC5wwGu 1IBHoGlbfhm+VJM/5tfhW3LwXC6pWOsvWYco4mBfpRae0ha3C6mIrqCUneO2BR6Ez96t Oe+cTPsdq3iuV5bWpUAVq8maQi2MpUXCowhu1REGl5Uq3n3OaFmu2dylixghlmBV+/BK 1WCQ== X-Gm-Message-State: ALoCoQl1dKeAjcTwvbVyeWw2y+9upmSSbt+AV+Aj7vKYfNbFnRr9RyHq7oEzap6ANuVGRrrwFx0Y MIME-Version: 1.0 X-Received: by 10.42.126.10 with SMTP id c10mr4753555ics.66.1432745349169; Wed, 27 May 2015 09:49:09 -0700 (PDT) Received: by 10.79.75.129 with HTTP; Wed, 27 May 2015 09:49:08 -0700 (PDT) Date: Wed, 27 May 2015 16:49:00 -0000 Message-ID: Subject: [PATCH] libiberty: backport a patch from gcc tree. From: Yunlian Jiang To: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=20cf3011d9bb97f95005171305ac X-SW-Source: 2015-05/txt/msg00665.txt.bz2 --20cf3011d9bb97f95005171305ac Content-Type: text/plain; charset=UTF-8 Content-length: 717 Hi, I want to back port a libiberty patch from gcc tree so that gdb can build with clang. The patch is clean to gdb tree except that the ChangeLog is different. I also attached patch with modification of the ChangeLog. Thanks commit 19ecc7c1742ebd58f7b940da6cee3c6891020f1e Author: ian Date: Fri May 22 20:53:45 2015 +0000 include/: * libiberty.h (asprintf): Don't declare if HAVE_DECL_ASPRINTF is not defined. libiberty/: * configure.ac: Add AC_GNU_SOURCE. * Makefile.in (COMPILE.c): Add -D_GNU_SOURCE. * configure, config.in: Rebuild. * floatformat.c (_GNU_SOURCE): Don't define if already defined. --20cf3011d9bb97f95005171305ac Content-Type: text/x-patch; charset=US-ASCII; name="libiberty.patch" Content-Disposition: attachment; filename="libiberty.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ia6zkhmh0 Content-length: 86730 RnJvbSAxOWVjYzdjMTc0MmViZDU4ZjdiOTQwZGE2Y2VlM2M2ODkxMDIwZjFl IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBpYW4gPGlhbkAxMzhi Yzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+CkRhdGU6IEZyaSwg MjIgTWF5IDIwMTUgMjA6NTM6NDUgKzAwMDAKU3ViamVjdDogW1BBVENIXSBp bmNsdWRlLzogCSogbGliaWJlcnR5LmggKGFzcHJpbnRmKTogRG9uJ3QgZGVj bGFyZSBpZgogSEFWRV9ERUNMX0FTUFJJTlRGIGlzIAlub3QgZGVmaW5lZC4g bGliaWJlcnR5LzogCSogY29uZmlndXJlLmFjOiBBZGQKIEFDX0dOVV9TT1VS Q0UuIAkqIE1ha2VmaWxlLmluIChDT01QSUxFLmMpOiBBZGQgLURfR05VX1NP VVJDRS4gCSoKIGNvbmZpZ3VyZSwgY29uZmlnLmluOiBSZWJ1aWxkLiAJKiBm bG9hdGZvcm1hdC5jIChfR05VX1NPVVJDRSk6IERvbid0CiBkZWZpbmUgaWYg YWxyZWFkeSBkZWZpbmVkLgoKZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5n bnUub3JnL3N2bi9nY2MvdHJ1bmtAMjIzNTg5IDEzOGJjNzVkLTBkMDQtMDQx MC05NjFmLTgyZWU3MmIwNTRhNAotLS0KIGluY2x1ZGUvQ2hhbmdlTG9nICAg ICAgIHwgICAgNSArCiBpbmNsdWRlL2xpYmliZXJ0eS5oICAgICB8ICAgIDIg Ky0KIGxpYmliZXJ0eS9DaGFuZ2VMb2cgICAgIHwgICAgNyArCiBsaWJpYmVy dHkvTWFrZWZpbGUuaW4gICB8ICAgIDUgKy0KIGxpYmliZXJ0eS9jb25maWcu aW4gICAgIHwgICAzMiArCiBsaWJpYmVydHkvY29uZmlndXJlICAgICB8IDE2 NjQgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0t LS0tLS0KIGxpYmliZXJ0eS9jb25maWd1cmUuYWMgIHwgICAgMSArCiBsaWJp YmVydHkvZmxvYXRmb3JtYXQuYyB8ICAgIDQgKy0KIDggZmlsZXMgY2hhbmdl ZCwgOTc1IGluc2VydGlvbnMoKyksIDc0NSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9pbmNsdWRlL0NoYW5nZUxvZyBiL2luY2x1ZGUvQ2hhbmdlTG9n CmluZGV4IGU5YTUxYTcuLjRhMThlZDggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUv Q2hhbmdlTG9nCisrKyBiL2luY2x1ZGUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs OCBAQAorMjAxNS0wNS0yMiAgWXVubGlhbiBKaWFuZyAgPHl1bmxpYW5AZ29v Z2xlLmNvbT4KKworCSogbGliaWJlcnR5LmggKGFzcHJpbnRmKTogRG9uJ3Qg ZGVjbGFyZSBpZiBIQVZFX0RFQ0xfQVNQUklOVEYgaXMKKwlub3QgZGVmaW5l ZC4KKwogMjAxNS0wNS0xMiAgSmlvbmcgV2FuZyAgPGppb25nLndhbmdAYXJt LmNvbT4KCiAgICAgICAgKiBlbGYvYWFyY2g2NC5oIChSX0FBUkNINjRfUDMy X0xEMzJfR09UUEFHRV9MTzE0KTogTmV3IGVudW1lcmF0aW9uLgpkaWZmIC0t Z2l0IGEvaW5jbHVkZS9saWJpYmVydHkuaCBiL2luY2x1ZGUvbGliaWJlcnR5 LmgKaW5kZXggYjMzZGQ2NS4uOGUwOTZhMCAxMDA2NDQKLS0tIGEvaW5jbHVk ZS9saWJpYmVydHkuaAorKysgYi9pbmNsdWRlL2xpYmliZXJ0eS5oCkBAIC02 MjEsNyArNjIxLDcgQEAgZXh0ZXJuIGludCBwZXhlY3V0ZSAoY29uc3QgY2hh ciAqLCBjaGFyICogY29uc3QgKiwgY29uc3QgY2hhciAqLAogCiBleHRlcm4g aW50IHB3YWl0IChpbnQsIGludCAqLCBpbnQpOwogCi0jaWYgIUhBVkVfREVD TF9BU1BSSU5URgorI2lmIGRlZmluZWQoSEFWRV9ERUNMX0FTUFJJTlRGKSAm JiAhSEFWRV9ERUNMX0FTUFJJTlRGCiAvKiBMaWtlIHNwcmludGYgYnV0IHBy b3ZpZGVzIGEgcG9pbnRlciB0byBtYWxsb2MnZCBzdG9yYWdlLCB3aGljaCBt dXN0CiAgICBiZSBmcmVlZCBieSB0aGUgY2FsbGVyLiAgKi8KIApkaWZmIC0t Z2l0IGEvbGliaWJlcnR5L0NoYW5nZUxvZyBiL2xpYmliZXJ0eS9DaGFuZ2VM b2cKaW5kZXggZDViYTNkNC4uZTliYzJjNyAxMDA2NDQKLS0tIGEvbGliaWJl cnR5L0NoYW5nZUxvZworKysgYi9saWJpYmVydHkvQ2hhbmdlTG9nCkBAIC0x LDMgKzEsMTAgQEAKKzIwMTUtMDUtMjIgIFl1bmxpYW4gSmlhbmcgIDx5dW5s aWFuQGdvb2dsZS5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYzogQWRkIEFDX0dO VV9TT1VSQ0UuCisJKiBNYWtlZmlsZS5pbiAoQ09NUElMRS5jKTogQWRkIC1E X0dOVV9TT1VSQ0UuCisJKiBjb25maWd1cmUsIGNvbmZpZy5pbjogUmVidWls ZC4KKwkqIGZsb2F0Zm9ybWF0LmMgKF9HTlVfU09VUkNFKTogRG9uJ3QgZGVm aW5lIGlmIGFscmVhZHkgZGVmaW5lZC4KKwogMjAxNS0wNS0wOCAgSm9lbCBC cm9iZWNrZXIgIDxicm9iZWNrZXJAYWRhY29yZS5jb20+CgogICAgICAgICog bWtzdGVtcHMuYzogI2luY2x1ZGUgPHRpbWUuaD4gaWYgSEFWRV9USU1FX0gg aXMgZGVmaW5lZAogICAgICAgIGJ1dCBub3QgSEFWRV9TWVNfVElNRV9ILgpk aWZmIC0tZ2l0IGEvbGliaWJlcnR5L01ha2VmaWxlLmluIGIvbGliaWJlcnR5 L01ha2VmaWxlLmluCmluZGV4IGYwNmNjNjkuLjdkN2UyZjQgMTAwNjQ0Ci0t LSBhL2xpYmliZXJ0eS9NYWtlZmlsZS5pbgorKysgYi9saWJpYmVydHkvTWFr ZWZpbGUuaW4KQEAgLTMsNyArMyw3IEBACiAjCiAjIENvcHlyaWdodCAoQykg MTk5MCwgMTk5MSwgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5 NywgMTk5OCwKICMgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAw NCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwK LSMgMjAxMiwgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgMjAx MiwgMjAxNCwgMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KICMKICMg VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGxpYmliZXJ0eSBsaWJyYXJ5Lgog IyBMaWJpYmVydHkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yCkBAIC0xMTMsNyArMTEzLDggQEAgaW5zdGFsbGNo ZWNrOiBpbnN0YWxsY2hlY2stc3ViZGlyCiAKIElOQ0RJUj0kKHNyY2Rpcikv JChNVUxUSVNSQ1RPUCkuLi9pbmNsdWRlCiAKLUNPTVBJTEUuYyA9ICQoQ0Mp IC1jIEBERUZTQCAkKENGTEFHUykgJChDUFBGTEFHUykgLUkuIC1JJChJTkNE SVIpICQoSERFRklORVMpIEBhY19saWJpYmVydHlfd2Fybl9jZmxhZ3NACitD T01QSUxFLmMgPSAkKENDKSAtYyBAREVGU0AgJChDRkxBR1MpICQoQ1BQRkxB R1MpIC1JLiAtSSQoSU5DRElSKSBcCisgICAgICAgICAgICAgICAkKEhERUZJ TkVTKSBAYWNfbGliaWJlcnR5X3dhcm5fY2ZsYWdzQCAtRF9HTlVfU09VUkNF CiAKICMgSnVzdCB0byBtYWtlIHN1cmUgd2UgZG9uJ3QgdXNlIGEgYnVpbHQt aW4gcnVsZSB3aXRoIFZQQVRICiAuYy4kKG9iamV4dCk6CmRpZmYgLS1naXQg YS9saWJpYmVydHkvY29uZmlnLmluIGIvbGliaWJlcnR5L2NvbmZpZy5pbgpp bmRleCA3YzA1YjlkLi4wZGVkYmYwIDEwMDY0NAotLS0gYS9saWJpYmVydHkv Y29uZmlnLmluCisrKyBiL2xpYmliZXJ0eS9jb25maWcuaW4KQEAgLTQ4NSw2 ICs0ODUsMjggQEAKIC8qIERlZmluZSB0byBhbiB1bnNpZ25lZCA2NC1iaXQg dHlwZSBhdmFpbGFibGUgaW4gdGhlIGNvbXBpbGVyLiAqLwogI3VuZGVmIFVO U0lHTkVEXzY0QklUX1RZUEUKIAorLyogRW5hYmxlIGV4dGVuc2lvbnMgb24g QUlYIDMsIEludGVyaXguICAqLworI2lmbmRlZiBfQUxMX1NPVVJDRQorIyB1 bmRlZiBfQUxMX1NPVVJDRQorI2VuZGlmCisvKiBFbmFibGUgR05VIGV4dGVu c2lvbnMgb24gc3lzdGVtcyB0aGF0IGhhdmUgdGhlbS4gICovCisjaWZuZGVm IF9HTlVfU09VUkNFCisjIHVuZGVmIF9HTlVfU09VUkNFCisjZW5kaWYKKy8q IEVuYWJsZSB0aHJlYWRpbmcgZXh0ZW5zaW9ucyBvbiBTb2xhcmlzLiAgKi8K KyNpZm5kZWYgX1BPU0lYX1BUSFJFQURfU0VNQU5USUNTCisjIHVuZGVmIF9Q T1NJWF9QVEhSRUFEX1NFTUFOVElDUworI2VuZGlmCisvKiBFbmFibGUgZXh0 ZW5zaW9ucyBvbiBIUCBOb25TdG9wLiAgKi8KKyNpZm5kZWYgX1RBTkRFTV9T T1VSQ0UKKyMgdW5kZWYgX1RBTkRFTV9TT1VSQ0UKKyNlbmRpZgorLyogRW5h YmxlIGdlbmVyYWwgZXh0ZW5zaW9ucyBvbiBTb2xhcmlzLiAgKi8KKyNpZm5k ZWYgX19FWFRFTlNJT05TX18KKyMgdW5kZWYgX19FWFRFTlNJT05TX18KKyNl bmRpZgorCisKIC8qIERlZmluZSBXT1JEU19CSUdFTkRJQU4gdG8gMSBpZiB5 b3VyIHByb2Nlc3NvciBzdG9yZXMgd29yZHMgd2l0aCB0aGUgbW9zdAogICAg c2lnbmlmaWNhbnQgYnl0ZSBmaXJzdCAobGlrZSBNb3Rvcm9sYSBhbmQgU1BB UkMsIHVubGlrZSBJbnRlbCkuICovCiAjaWYgZGVmaW5lZCBBQ19BUFBMRV9V TklWRVJTQUxfQlVJTEQKQEAgLTUwMyw2ICs1MjUsMTYgQEAKIC8qIERlZmlu ZSBmb3IgbGFyZ2UgZmlsZXMsIG9uIEFJWC1zdHlsZSBob3N0cy4gKi8KICN1 bmRlZiBfTEFSR0VfRklMRVMKIAorLyogRGVmaW5lIHRvIDEgaWYgb24gTUlO SVguICovCisjdW5kZWYgX01JTklYCisKKy8qIERlZmluZSB0byAyIGlmIHRo ZSBzeXN0ZW0gZG9lcyBub3QgcHJvdmlkZSBQT1NJWC4xIGZlYXR1cmVzIGV4 Y2VwdCB3aXRoCisgICB0aGlzIGRlZmluZWQuICovCisjdW5kZWYgX1BPU0lY XzFfU09VUkNFCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBuZWVkIHRvIGlu IG9yZGVyIGZvciBgc3RhdCcgYW5kIG90aGVyIHRoaW5ncyB0byB3b3JrLiAq LworI3VuZGVmIF9QT1NJWF9TT1VSQ0UKKwogLyogRGVmaW5lIHRvIGVtcHR5 IGlmIGBjb25zdCcgZG9lcyBub3QgY29uZm9ybSB0byBBTlNJIEMuICovCiAj dW5kZWYgY29uc3QKIApkaWZmIC0tZ2l0IGEvbGliaWJlcnR5L2NvbmZpZ3Vy ZSBiL2xpYmliZXJ0eS9jb25maWd1cmUKaW5kZXggYjA2Y2FiMi4uZGEyZGY0 ZSAxMDA3NTUKLS0tIGEvbGliaWJlcnR5L2NvbmZpZ3VyZQorKysgYi9saWJp YmVydHkvY29uZmlndXJlCkBAIC01OTksMTEgKzU5OSwxMSBAQCBQSUNGTEFH CiBJTlNUQUxMX0RBVEEKIElOU1RBTExfU0NSSVBUCiBJTlNUQUxMX1BST0dS QU0KLUVHUkVQCi1HUkVQCiBPVVRQVVRfT1BUSU9OCiBOT19NSU5VU19DX01J TlVTX08KIGFjX2xpYmliZXJ0eV93YXJuX2NmbGFncworRUdSRVAKK0dSRVAK IENQUAogT0JKRVhUCiBFWEVFWFQKQEAgLTE0ODAsNiArMTQ4MCw5MyBAQCBm aQogCiB9ICMgYWNfZm5fY190cnlfY3BwCiAKKyMgYWNfZm5fY19jaGVja19o ZWFkZXJfbW9uZ3JlbCBMSU5FTk8gSEVBREVSIFZBUiBJTkNMVURFUworIyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisjIFRlc3RzIHdoZXRoZXIgSEVBREVSIGV4aXN0cywgZ2l2 aW5nIGEgd2FybmluZyBpZiBpdCBjYW5ub3QgYmUgY29tcGlsZWQgdXNpbmcK KyMgdGhlIGluY2x1ZGUgZmlsZXMgaW4gSU5DTFVERVMgYW5kIHNldHRpbmcg dGhlIGNhY2hlIHZhcmlhYmxlIFZBUgorIyBhY2NvcmRpbmdseS4KK2FjX2Zu X2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgKCkKK3sKKyAgYXNfbGluZW5vPSR7 YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3Rh Y2s9JGFzX2xpbmVub19zdGFjaworICBpZiB7IGFzX3Zhcj0kMzsgZXZhbCAi dGVzdCBcIlwkeyRhc192YXIrc2V0fVwiID0gc2V0IjsgfTsgdGhlbiA6Cisg IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hl Y2tpbmcgZm9yICQyIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAk Mi4uLiAiID4mNjsgfQoraWYgeyBhc192YXI9JDM7IGV2YWwgInRlc3QgXCJc JHskYXNfdmFyK3NldH1cIiA9IHNldCI7IH07IHRoZW4gOgorICAkYXNfZWNo b19uICIoY2FjaGVkKSAiID4mNgorZmkKK2V2YWwgYWNfcmVzPVwkJDMKKwkg ICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiByZXN1bHQ6ICRhY19yZXMiID4mNQorJGFzX2VjaG8gIiRhY19yZXMiID4m NjsgfQorZWxzZQorICAjIElzIHRoZSBoZWFkZXIgY29tcGlsYWJsZT8KK3sg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tp bmcgJDIgdXNhYmlsaXR5IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nICQy IHVzYWJpbGl0eS4uLiAiID4mNjsgfQorY2F0IGNvbmZkZWZzLmggLSA8PF9B Q0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAq LworJDQKKyNpbmNsdWRlIDwkMj4KK19BQ0VPRgoraWYgYWNfZm5fY190cnlf Y29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19oZWFkZXJfY29tcGls ZXI9eWVzCitlbHNlCisgIGFjX2hlYWRlcl9jb21waWxlcj1ubworZmkKK3Jt IC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29u ZnRlc3QuJGFjX2V4dAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiByZXN1bHQ6ICRhY19oZWFkZXJfY29tcGlsZXIiID4mNQor JGFzX2VjaG8gIiRhY19oZWFkZXJfY29tcGlsZXIiID4mNjsgfQorCisjIElz IHRoZSBoZWFkZXIgcHJlc2VudD8KK3sgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgJDIgcHJlc2VuY2UiID4mNQor JGFzX2VjaG9fbiAiY2hlY2tpbmcgJDIgcHJlc2VuY2UuLi4gIiA+JjY7IH0K K2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQK Ky8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDwkMj4KK19BQ0VP RgoraWYgYWNfZm5fY190cnlfY3BwICIkTElORU5PIjsgdGhlbiA6CisgIGFj X2hlYWRlcl9wcmVwcm9jPXllcworZWxzZQorICBhY19oZWFkZXJfcHJlcHJv Yz1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0 Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl c3VsdDogJGFjX2hlYWRlcl9wcmVwcm9jIiA+JjUKKyRhc19lY2hvICIkYWNf aGVhZGVyX3ByZXByb2MiID4mNjsgfQorCisjIFNvPyAgV2hhdCBhYm91dCB0 aGlzIGhlYWRlcj8KK2Nhc2UgJGFjX2hlYWRlcl9jb21waWxlcjokYWNfaGVh ZGVyX3ByZXByb2M6JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcgaW4gIygoCisg IHllczpubzogKQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogV0FSTklORzogJDI6IGFjY2VwdGVkIGJ5IHRoZSBjb21w aWxlciwgcmVqZWN0ZWQgYnkgdGhlIHByZXByb2Nlc3NvciEiID4mNQorJGFz X2VjaG8gIiRhc19tZTogV0FSTklORzogJDI6IGFjY2VwdGVkIGJ5IHRoZSBj b21waWxlciwgcmVqZWN0ZWQgYnkgdGhlIHByZXByb2Nlc3NvciEiID4mMjt9 CisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiBXQVJOSU5HOiAkMjogcHJvY2VlZGluZyB3aXRoIHRoZSBjb21waWxlcidz IHJlc3VsdCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkMjog cHJvY2VlZGluZyB3aXRoIHRoZSBjb21waWxlcidzIHJlc3VsdCIgPiYyO30K KyAgICA7OworICBubzp5ZXM6KiApCisgICAgeyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAkMjogcHJlc2VudCBi dXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6 IFdBUk5JTkc6ICQyOiBwcmVzZW50IGJ1dCBjYW5ub3QgYmUgY29tcGlsZWQi ID4mMjt9CisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBXQVJOSU5HOiAkMjogICAgIGNoZWNrIGZvciBtaXNzaW5nIHBy ZXJlcXVpc2l0ZSBoZWFkZXJzPyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBX QVJOSU5HOiAkMjogICAgIGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0 ZSBoZWFkZXJzPyIgPiYyO30KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICQyOiBzZWUgdGhlIEF1dG9j b25mIGRvY3VtZW50YXRpb24iID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FS TklORzogJDI6IHNlZSB0aGUgQXV0b2NvbmYgZG9jdW1lbnRhdGlvbiIgPiYy O30KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IFdBUk5JTkc6ICQyOiAgICAgc2VjdGlvbiBcIlByZXNlbnQgQnV0IENh bm5vdCBCZSBDb21waWxlZFwiIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdB Uk5JTkc6ICQyOiAgICAgc2VjdGlvbiBcIlByZXNlbnQgQnV0IENhbm5vdCBC ZSBDb21waWxlZFwiIiA+JjI7fQorICAgIHsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogJDI6IHByb2NlZWRpbmcg d2l0aCB0aGUgY29tcGlsZXIncyByZXN1bHQiID4mNQorJGFzX2VjaG8gIiRh c19tZTogV0FSTklORzogJDI6IHByb2NlZWRpbmcgd2l0aCB0aGUgY29tcGls ZXIncyByZXN1bHQiID4mMjt9CisgICAgOzsKK2VzYWMKKyAgeyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Ig JDIiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICQyLi4uICIgPiY2 OyB9CitpZiB7IGFzX3Zhcj0kMzsgZXZhbCAidGVzdCBcIlwkeyRhc192YXIr c2V0fVwiID0gc2V0IjsgfTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNo ZWQpICIgPiY2CitlbHNlCisgIGV2YWwgIiQzPVwkYWNfaGVhZGVyX2NvbXBp bGVyIgorZmkKK2V2YWwgYWNfcmVzPVwkJDMKKwkgICAgICAgeyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19y ZXMiID4mNQorJGFzX2VjaG8gIiRhY19yZXMiID4mNjsgfQorZmkKKyAgZXZh bCAkYXNfbGluZW5vX3N0YWNrOyB0ZXN0ICJ4JGFzX2xpbmVub19zdGFjayIg PSB4ICYmIHsgYXNfbGluZW5vPTsgdW5zZXQgYXNfbGluZW5vO30KKworfSAj IGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwKKwogIyBhY19mbl9jX3Ry eV9ydW4gTElORU5PCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgVHJ5 IHRvIGxpbmsgY29uZnRlc3QuJGFjX2V4dCwgYW5kIHJldHVybiB3aGV0aGVy IHRoaXMgc3VjY2VlZGVkLiBBc3N1bWVzCkBAIC0xNTIyLDYgKzE2MDksMzcg QEAgZmkKIAogfSAjIGFjX2ZuX2NfdHJ5X3J1bgogCisjIGFjX2ZuX2NfY2hl Y2tfaGVhZGVyX2NvbXBpbGUgTElORU5PIEhFQURFUiBWQVIgSU5DTFVERVMK KyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIyBUZXN0cyB3aGV0aGVyIEhFQURFUiBleGlzdHMg YW5kIGNhbiBiZSBjb21waWxlZCB1c2luZyB0aGUgaW5jbHVkZSBmaWxlcyBp bgorIyBJTkNMVURFUywgc2V0dGluZyB0aGUgY2FjaGUgdmFyaWFibGUgVkFS IGFjY29yZGluZ2x5LgorYWNfZm5fY19jaGVja19oZWFkZXJfY29tcGlsZSAo KQoreworICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5v X3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCisgIHsg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tp bmcgZm9yICQyIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkMi4u LiAiID4mNjsgfQoraWYgeyBhc192YXI9JDM7IGV2YWwgInRlc3QgXCJcJHsk YXNfdmFyK3NldH1cIiA9IHNldCI7IH07IHRoZW4gOgorICAkYXNfZWNob19u ICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8 X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4g ICovCiskNAorI2luY2x1ZGUgPCQyPgorX0FDRU9GCitpZiBhY19mbl9jX3Ry eV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGV2YWwgIiQzPXllcyIK K2Vsc2UKKyAgZXZhbCAiJDM9bm8iCitmaQorcm0gLWYgY29yZSBjb25mdGVz dC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Citm aQorZXZhbCBhY19yZXM9XCQkMworCSAgICAgICB7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1 CiskYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9CisgIGV2YWwgJGFzX2xpbmVu b19zdGFjazsgdGVzdCAieCRhc19saW5lbm9fc3RhY2siID0geCAmJiB7IGFz X2xpbmVubz07IHVuc2V0IGFzX2xpbmVubzt9CisKK30gIyBhY19mbl9jX2No ZWNrX2hlYWRlcl9jb21waWxlCisKICMgYWNfZm5fY19jaGVja19oZWFkZXJf cHJlcHJvYyBMSU5FTk8gSEVBREVSIFZBUgogIyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIFRlc3RzIHdoZXRo ZXIgSEVBREVSIGlzIHByZXNlbnQsIHNldHRpbmcgdGhlIGNhY2hlIHZhcmlh YmxlIFZBUiBhY2NvcmRpbmdseS4KQEAgLTM2MTAsMzEyICszNzI4LDExNCBA QCBhY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1Mg JENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJAogYWNfY29t cGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQogCiAKLSMgQ2hlY2sg d2hldGhlciAtLWVuYWJsZS1sYXJnZWZpbGUgd2FzIGdpdmVuLgotaWYgdGVz dCAiJHtlbmFibGVfbGFyZ2VmaWxlK3NldH0iID0gc2V0OyB0aGVuIDoKLSAg ZW5hYmxldmFsPSRlbmFibGVfbGFyZ2VmaWxlOworYWNfZXh0PWMKK2FjX2Nw cD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFH UyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSck Q0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRM REZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGls ZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQoreyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcnVu IHRoZSBDIHByZXByb2Nlc3NvciIgPiY1CiskYXNfZWNob19uICJjaGVja2lu ZyBob3cgdG8gcnVuIHRoZSBDIHByZXByb2Nlc3Nvci4uLiAiID4mNjsgfQor IyBPbiBTdW5zLCBzb21ldGltZXMgJENQUCBuYW1lcyBhIGRpcmVjdG9yeS4K K2lmIHRlc3QgLW4gIiRDUFAiICYmIHRlc3QgLWQgIiRDUFAiOyB0aGVuCisg IENQUD0KIGZpCi0KLWlmIHRlc3QgIiRlbmFibGVfbGFyZ2VmaWxlIiAhPSBu bzsgdGhlbgotCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogY2hlY2tpbmcgZm9yIHNwZWNpYWwgQyBjb21waWxlciBvcHRp b25zIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMiID4mNQotJGFzX2VjaG9fbiAi Y2hlY2tpbmcgZm9yIHNwZWNpYWwgQyBjb21waWxlciBvcHRpb25zIG5lZWRl ZCBmb3IgbGFyZ2UgZmlsZXMuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNf Y3Zfc3lzX2xhcmdlZmlsZV9DQytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiB0 ZXN0IC16ICIkQ1BQIjsgdGhlbgorICBpZiB0ZXN0ICIke2FjX2N2X3Byb2df Q1BQK3NldH0iID0gc2V0OyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hl ZCkgIiA+JjYKIGVsc2UKLSAgYWNfY3Zfc3lzX2xhcmdlZmlsZV9DQz1ubwot ICAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KLSAgICAgICBhY19z YXZlX0NDPSRDQwotICAgICAgIHdoaWxlIDo7IGRvCi0JICMgSVJJWCA2LjIg YW5kIGxhdGVyIGRvIG5vdCBzdXBwb3J0IGxhcmdlIGZpbGVzIGJ5IGRlZmF1 bHQsCi0JICMgc28gdXNlIHRoZSBDIGNvbXBpbGVyJ3MgLW4zMiBvcHRpb24g aWYgdGhhdCBoZWxwcy4KLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+ Y29uZnRlc3QuJGFjX2V4dAorICAgICAgIyBEb3VibGUgcXVvdGVzIGJlY2F1 c2UgQ1BQIG5lZWRzIHRvIGJlIGV4cGFuZGVkCisgICAgZm9yIENQUCBpbiAi JENDIC1FIiAiJENDIC1FIC10cmFkaXRpb25hbC1jcHAiICIvbGliL2NwcCIK KyAgICBkbworICAgICAgYWNfcHJlcHJvY19vaz1mYWxzZQorZm9yIGFjX2Nf cHJlcHJvY193YXJuX2ZsYWcgaW4gJycgeWVzCitkbworICAjIFVzZSBhIGhl YWRlciBmaWxlIHRoYXQgY29tZXMgd2l0aCBnY2MsIHNvIGNvbmZpZ3VyaW5n IGdsaWJjCisgICMgd2l0aCBhIGZyZXNoIGNyb3NzLWNvbXBpbGVyIHdvcmtz LgorICAjIFByZWZlciA8bGltaXRzLmg+IHRvIDxhc3NlcnQuaD4gaWYgX19T VERDX18gaXMgZGVmaW5lZCwgc2luY2UKKyAgIyA8bGltaXRzLmg+IGV4aXN0 cyBldmVuIG9uIGZyZWVzdGFuZGluZyBjb21waWxlcnMuCisgICMgT24gdGhl IE5lWFQsIGNjIC1FIHJ1bnMgdGhlIGNvZGUgdGhyb3VnaCB0aGUgY29tcGls ZXIncyBwYXJzZXIsCisgICMgbm90IGp1c3QgdGhyb3VnaCBjcHAuICJTeW50 YXggZXJyb3IiIGlzIGhlcmUgdG8gY2F0Y2ggdGhpcyBjYXNlLgorICBjYXQg Y29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAvKiBl bmQgY29uZmRlZnMuaC4gICovCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0g LyogQ2hlY2sgdGhhdCBvZmZfdCBjYW4gcmVwcmVzZW50IDIqKjYzIC0gMSBj b3JyZWN0bHkuCi0gICAgV2UgY2FuJ3Qgc2ltcGx5IGRlZmluZSBMQVJHRV9P RkZfVCB0byBiZSA5MjIzMzcyMDM2ODU0Nzc1ODA3LAotICAgIHNpbmNlIHNv bWUgQysrIGNvbXBpbGVycyBtYXNxdWVyYWRpbmcgYXMgQyBjb21waWxlcnMK LSAgICBpbmNvcnJlY3RseSByZWplY3QgOTIyMzM3MjAzNjg1NDc3NTgwNy4g ICovCi0jZGVmaW5lIExBUkdFX09GRl9UICgoKG9mZl90KSAxIDw8IDYyKSAt IDEgKyAoKG9mZl90KSAxIDw8IDYyKSkKLSAgaW50IG9mZl90X2lzX2xhcmdl WyhMQVJHRV9PRkZfVCAlIDIxNDc0ODM2MjkgPT0gNzIxCi0JCSAgICAgICAm JiBMQVJHRV9PRkZfVCAlIDIxNDc0ODM2NDcgPT0gMSkKLQkJICAgICAgPyAx IDogLTFdOwotaW50Ci1tYWluICgpCi17Ci0KLSAgOwotICByZXR1cm4gMDsK LX0KKyNpZmRlZiBfX1NURENfXworIyBpbmNsdWRlIDxsaW1pdHMuaD4KKyNl bHNlCisjIGluY2x1ZGUgPGFzc2VydC5oPgorI2VuZGlmCisJCSAgICAgU3lu dGF4IGVycm9yCiBfQUNFT0YKLQkgaWYgYWNfZm5fY190cnlfY29tcGlsZSAi JExJTkVOTyI7IHRoZW4gOgotICBicmVhaworaWYgYWNfZm5fY190cnlfY3Bw ICIkTElORU5PIjsgdGhlbiA6CisKK2Vsc2UKKyAgIyBCcm9rZW46IGZhaWxz IG9uIHZhbGlkIGlucHV0LgorY29udGludWUKIGZpCi1ybSAtZiBjb3JlIGNv bmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0Ci0JIENDPSIkQ0MgLW4z MiIKLQkgaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4g OgotICBhY19jdl9zeXNfbGFyZ2VmaWxlX0NDPScgLW4zMic7IGJyZWFrCity bSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAorCisgICMgT0ss IHdvcmtzIG9uIHNhbmUgY2FzZXMuICBOb3cgY2hlY2sgd2hldGhlciBub25l eGlzdGVudCBoZWFkZXJzCisgICMgY2FuIGJlIGRldGVjdGVkIGFuZCBob3cu CisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19l eHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxhY19ub25l eGlzdGVudC5oPgorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jcHAgIiRMSU5F Tk8iOyB0aGVuIDoKKyAgIyBCcm9rZW46IHN1Y2Nlc3Mgb24gaW52YWxpZCBp bnB1dC4KK2NvbnRpbnVlCitlbHNlCisgICMgUGFzc2VzIGJvdGggdGVzdHMu CithY19wcmVwcm9jX29rPToKK2JyZWFrCiBmaQotcm0gLWYgY29yZSBjb25m dGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dAotCSBicmVhawotICAgICAg IGRvbmUKLSAgICAgICBDQz0kYWNfc2F2ZV9DQwotICAgICAgIHJtIC1mIGNv bmZ0ZXN0LiRhY19leHQKLSAgICBmaQorcm0gLWYgY29uZnRlc3QuZXJyIGNv bmZ0ZXN0LiRhY19leHQKKworZG9uZQorIyBCZWNhdXNlIG9mIGBicmVhaycs IF9BQ19QUkVQUk9DX0lGRUxTRSdzIGNsZWFuaW5nIGNvZGUgd2FzIHNraXBw ZWQuCitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAoraWYg JGFjX3ByZXByb2Nfb2s7IHRoZW4gOgorICBicmVhawogZmkKLXsgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNf Y3Zfc3lzX2xhcmdlZmlsZV9DQyIgPiY1Ci0kYXNfZWNobyAiJGFjX2N2X3N5 c19sYXJnZWZpbGVfQ0MiID4mNjsgfQotICBpZiB0ZXN0ICIkYWNfY3Zfc3lz X2xhcmdlZmlsZV9DQyIgIT0gbm87IHRoZW4KLSAgICBDQz0kQ0MkYWNfY3Zf c3lzX2xhcmdlZmlsZV9DQwotICBmaQogCi0gIHsgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIF9GSUxFX09G RlNFVF9CSVRTIHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMiID4mNQot JGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIF9GSUxFX09GRlNFVF9CSVRTIHZh bHVlIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMuLi4gIiA+JjY7IH0KLWlmIHRl c3QgIiR7YWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMrc2V0fSIgPSBzZXQ7 IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorICAgIGRv bmUKKyAgICBhY19jdl9wcm9nX0NQUD0kQ1BQCisKK2ZpCisgIENQUD0kYWNf Y3ZfcHJvZ19DUFAKIGVsc2UKLSAgd2hpbGUgOjsgZG8KKyAgYWNfY3ZfcHJv Z19DUFA9JENQUAorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogcmVzdWx0OiAkQ1BQIiA+JjUKKyRhc19lY2hvICIkQ1BQ IiA+JjY7IH0KK2FjX3ByZXByb2Nfb2s9ZmFsc2UKK2ZvciBhY19jX3ByZXBy b2Nfd2Fybl9mbGFnIGluICcnIHllcworZG8KKyAgIyBVc2UgYSBoZWFkZXIg ZmlsZSB0aGF0IGNvbWVzIHdpdGggZ2NjLCBzbyBjb25maWd1cmluZyBnbGli YworICAjIHdpdGggYSBmcmVzaCBjcm9zcy1jb21waWxlciB3b3Jrcy4KKyAg IyBQcmVmZXIgPGxpbWl0cy5oPiB0byA8YXNzZXJ0Lmg+IGlmIF9fU1REQ19f IGlzIGRlZmluZWQsIHNpbmNlCisgICMgPGxpbWl0cy5oPiBleGlzdHMgZXZl biBvbiBmcmVlc3RhbmRpbmcgY29tcGlsZXJzLgorICAjIE9uIHRoZSBOZVhU LCBjYyAtRSBydW5zIHRoZSBjb2RlIHRocm91Z2ggdGhlIGNvbXBpbGVyJ3Mg cGFyc2VyLAorICAjIG5vdCBqdXN0IHRocm91Z2ggY3BwLiAiU3ludGF4IGVy cm9yIiBpcyBoZXJlIHRvIGNhdGNoIHRoaXMgY2FzZS4KICAgY2F0IGNvbmZk ZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogLyogZW5kIGNv bmZkZWZzLmguICAqLwotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotIC8qIENo ZWNrIHRoYXQgb2ZmX3QgY2FuIHJlcHJlc2VudCAyKio2MyAtIDEgY29ycmVj dGx5LgotICAgIFdlIGNhbid0IHNpbXBseSBkZWZpbmUgTEFSR0VfT0ZGX1Qg dG8gYmUgOTIyMzM3MjAzNjg1NDc3NTgwNywKLSAgICBzaW5jZSBzb21lIEMr KyBjb21waWxlcnMgbWFzcXVlcmFkaW5nIGFzIEMgY29tcGlsZXJzCi0gICAg aW5jb3JyZWN0bHkgcmVqZWN0IDkyMjMzNzIwMzY4NTQ3NzU4MDcuICAqLwot I2RlZmluZSBMQVJHRV9PRkZfVCAoKChvZmZfdCkgMSA8PCA2MikgLSAxICsg KChvZmZfdCkgMSA8PCA2MikpCi0gIGludCBvZmZfdF9pc19sYXJnZVsoTEFS R0VfT0ZGX1QgJSAyMTQ3NDgzNjI5ID09IDcyMQotCQkgICAgICAgJiYgTEFS R0VfT0ZGX1QgJSAyMTQ3NDgzNjQ3ID09IDEpCi0JCSAgICAgID8gMSA6IC0x XTsKLWludAotbWFpbiAoKQotewotCi0gIDsKLSAgcmV0dXJuIDA7Ci19Cisj aWZkZWYgX19TVERDX18KKyMgaW5jbHVkZSA8bGltaXRzLmg+CisjZWxzZQor IyBpbmNsdWRlIDxhc3NlcnQuaD4KKyNlbmRpZgorCQkgICAgIFN5bnRheCBl cnJvcgogX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5P IjsgdGhlbiA6Ci0gIGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzPW5vOyBi cmVhaworaWYgYWNfZm5fY190cnlfY3BwICIkTElORU5PIjsgdGhlbiA6CisK K2Vsc2UKKyAgIyBCcm9rZW46IGZhaWxzIG9uIHZhbGlkIGlucHV0LgorY29u dGludWUKIGZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4k YWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK3JtIC1mIGNvbmZ0ZXN0LmVy ciBjb25mdGVzdC4kYWNfZXh0CisKKyAgIyBPSywgd29ya3Mgb24gc2FuZSBj YXNlcy4gIE5vdyBjaGVjayB3aGV0aGVyIG5vbmV4aXN0ZW50IGhlYWRlcnMK KyAgIyBjYW4gYmUgZGV0ZWN0ZWQgYW5kIGhvdy4KICAgY2F0IGNvbmZkZWZz LmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogLyogZW5kIGNvbmZk ZWZzLmguICAqLwotI2RlZmluZSBfRklMRV9PRkZTRVRfQklUUyA2NAotI2lu Y2x1ZGUgPHN5cy90eXBlcy5oPgotIC8qIENoZWNrIHRoYXQgb2ZmX3QgY2Fu IHJlcHJlc2VudCAyKio2MyAtIDEgY29ycmVjdGx5LgotICAgIFdlIGNhbid0 IHNpbXBseSBkZWZpbmUgTEFSR0VfT0ZGX1QgdG8gYmUgOTIyMzM3MjAzNjg1 NDc3NTgwNywKLSAgICBzaW5jZSBzb21lIEMrKyBjb21waWxlcnMgbWFzcXVl cmFkaW5nIGFzIEMgY29tcGlsZXJzCi0gICAgaW5jb3JyZWN0bHkgcmVqZWN0 IDkyMjMzNzIwMzY4NTQ3NzU4MDcuICAqLwotI2RlZmluZSBMQVJHRV9PRkZf VCAoKChvZmZfdCkgMSA8PCA2MikgLSAxICsgKChvZmZfdCkgMSA8PCA2Mikp Ci0gIGludCBvZmZfdF9pc19sYXJnZVsoTEFSR0VfT0ZGX1QgJSAyMTQ3NDgz NjI5ID09IDcyMQotCQkgICAgICAgJiYgTEFSR0VfT0ZGX1QgJSAyMTQ3NDgz NjQ3ID09IDEpCi0JCSAgICAgID8gMSA6IC0xXTsKLWludAotbWFpbiAoKQot ewotCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLWlmIGFjX2ZuX2Nf dHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSAgYWNfY3Zfc3lzX2Zp bGVfb2Zmc2V0X2JpdHM9NjQ7IGJyZWFrCi1maQotcm0gLWYgY29yZSBjb25m dGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0 Ci0gIGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzPXVua25vd24KLSAgYnJl YWsKLWRvbmUKLWZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IHJlc3VsdDogJGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRz IiA+JjUKLSRhc19lY2hvICIkYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMi ID4mNjsgfQotY2FzZSAkYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMgaW4g IygKLSAgbm8gfCB1bmtub3duKSA7OwotICAqKQotY2F0ID4+Y29uZmRlZnMu aCA8PF9BQ0VPRgotI2RlZmluZSBfRklMRV9PRkZTRVRfQklUUyAkYWNfY3Zf c3lzX2ZpbGVfb2Zmc2V0X2JpdHMKLV9BQ0VPRgotOzsKLWVzYWMKLXJtIC1y ZiBjb25mdGVzdCoKLSAgaWYgdGVzdCAkYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0 X2JpdHMgPSB1bmtub3duOyB0aGVuCi0gICAgeyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgX0xBUkdFX0ZJ TEVTIHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMiID4mNQotJGFzX2Vj aG9fbiAiY2hlY2tpbmcgZm9yIF9MQVJHRV9GSUxFUyB2YWx1ZSBuZWVkZWQg Zm9yIGxhcmdlIGZpbGVzLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2 X3N5c19sYXJnZV9maWxlcytzZXR9IiA9IHNldDsgdGhlbiA6Ci0gICRhc19l Y2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIHdoaWxlIDo7IGRvCi0g IGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQK LS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSNpbmNsdWRlIDxzeXMvdHlwZXMu aD4KLSAvKiBDaGVjayB0aGF0IG9mZl90IGNhbiByZXByZXNlbnQgMioqNjMg LSAxIGNvcnJlY3RseS4KLSAgICBXZSBjYW4ndCBzaW1wbHkgZGVmaW5lIExB UkdFX09GRl9UIHRvIGJlIDkyMjMzNzIwMzY4NTQ3NzU4MDcsCi0gICAgc2lu Y2Ugc29tZSBDKysgY29tcGlsZXJzIG1hc3F1ZXJhZGluZyBhcyBDIGNvbXBp bGVycwotICAgIGluY29ycmVjdGx5IHJlamVjdCA5MjIzMzcyMDM2ODU0Nzc1 ODA3LiAgKi8KLSNkZWZpbmUgTEFSR0VfT0ZGX1QgKCgob2ZmX3QpIDEgPDwg NjIpIC0gMSArICgob2ZmX3QpIDEgPDwgNjIpKQotICBpbnQgb2ZmX3RfaXNf bGFyZ2VbKExBUkdFX09GRl9UICUgMjE0NzQ4MzYyOSA9PSA3MjEKLQkJICAg ICAgICYmIExBUkdFX09GRl9UICUgMjE0NzQ4MzY0NyA9PSAxKQotCQkgICAg ICA/IDEgOiAtMV07Ci1pbnQKLW1haW4gKCkKLXsKLQotICA7Ci0gIHJldHVy biAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElO RU5PIjsgdGhlbiA6Ci0gIGFjX2N2X3N5c19sYXJnZV9maWxlcz1ubzsgYnJl YWsKLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNf b2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAgY2F0IGNvbmZkZWZzLmggLSA8 PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmgu ICAqLwotI2RlZmluZSBfTEFSR0VfRklMRVMgMQotI2luY2x1ZGUgPHN5cy90 eXBlcy5oPgotIC8qIENoZWNrIHRoYXQgb2ZmX3QgY2FuIHJlcHJlc2VudCAy Kio2MyAtIDEgY29ycmVjdGx5LgotICAgIFdlIGNhbid0IHNpbXBseSBkZWZp bmUgTEFSR0VfT0ZGX1QgdG8gYmUgOTIyMzM3MjAzNjg1NDc3NTgwNywKLSAg ICBzaW5jZSBzb21lIEMrKyBjb21waWxlcnMgbWFzcXVlcmFkaW5nIGFzIEMg Y29tcGlsZXJzCi0gICAgaW5jb3JyZWN0bHkgcmVqZWN0IDkyMjMzNzIwMzY4 NTQ3NzU4MDcuICAqLwotI2RlZmluZSBMQVJHRV9PRkZfVCAoKChvZmZfdCkg MSA8PCA2MikgLSAxICsgKChvZmZfdCkgMSA8PCA2MikpCi0gIGludCBvZmZf dF9pc19sYXJnZVsoTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjI5ID09IDcyMQot CQkgICAgICAgJiYgTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjQ3ID09IDEpCi0J CSAgICAgID8gMSA6IC0xXTsKLWludAotbWFpbiAoKQotewotCi0gIDsKLSAg cmV0dXJuIDA7Ci19Ci1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUg IiRMSU5FTk8iOyB0aGVuIDoKLSAgYWNfY3Zfc3lzX2xhcmdlX2ZpbGVzPTE7 IGJyZWFrCi1maQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3Qu JGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gIGFjX2N2X3N5c19sYXJn ZV9maWxlcz11bmtub3duCi0gIGJyZWFrCi1kb25lCi1maQoteyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19j dl9zeXNfbGFyZ2VfZmlsZXMiID4mNQotJGFzX2VjaG8gIiRhY19jdl9zeXNf bGFyZ2VfZmlsZXMiID4mNjsgfQotY2FzZSAkYWNfY3Zfc3lzX2xhcmdlX2Zp bGVzIGluICMoCi0gIG5vIHwgdW5rbm93bikgOzsKLSAgKikKLWNhdCA+PmNv bmZkZWZzLmggPDxfQUNFT0YKLSNkZWZpbmUgX0xBUkdFX0ZJTEVTICRhY19j dl9zeXNfbGFyZ2VfZmlsZXMKLV9BQ0VPRgotOzsKLWVzYWMKLXJtIC1yZiBj b25mdGVzdCoKLSAgZmkKLWZpCi0KLWFjX2V4dD1jCi1hY19jcHA9JyRDUFAg JENQUEZMQUdTJwotYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZM QUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwotYWNfbGluaz0nJENDIC1vIGNv bmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBj b25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKLWFjX2NvbXBpbGVyX2dudT0k YWNfY3ZfY19jb21waWxlcl9nbnUKLXsgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHJ1biB0aGUgQyBw cmVwcm9jZXNzb3IiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRv IHJ1biB0aGUgQyBwcmVwcm9jZXNzb3IuLi4gIiA+JjY7IH0KLSMgT24gU3Vu cywgc29tZXRpbWVzICRDUFAgbmFtZXMgYSBkaXJlY3RvcnkuCi1pZiB0ZXN0 IC1uICIkQ1BQIiAmJiB0ZXN0IC1kICIkQ1BQIjsgdGhlbgotICBDUFA9Ci1m aQotaWYgdGVzdCAteiAiJENQUCI7IHRoZW4KLSAgaWYgdGVzdCAiJHthY19j dl9wcm9nX0NQUCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0gICRhc19lY2hvX24g IihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gICAgICAjIERvdWJsZSBxdW90ZXMg YmVjYXVzZSBDUFAgbmVlZHMgdG8gYmUgZXhwYW5kZWQKLSAgICBmb3IgQ1BQ IGluICIkQ0MgLUUiICIkQ0MgLUUgLXRyYWRpdGlvbmFsLWNwcCIgIi9saWIv Y3BwIgotICAgIGRvCi0gICAgICBhY19wcmVwcm9jX29rPWZhbHNlCi1mb3Ig YWNfY19wcmVwcm9jX3dhcm5fZmxhZyBpbiAnJyB5ZXMKLWRvCi0gICMgVXNl IGEgaGVhZGVyIGZpbGUgdGhhdCBjb21lcyB3aXRoIGdjYywgc28gY29uZmln dXJpbmcgZ2xpYmMKLSAgIyB3aXRoIGEgZnJlc2ggY3Jvc3MtY29tcGlsZXIg d29ya3MuCi0gICMgUHJlZmVyIDxsaW1pdHMuaD4gdG8gPGFzc2VydC5oPiBp ZiBfX1NURENfXyBpcyBkZWZpbmVkLCBzaW5jZQotICAjIDxsaW1pdHMuaD4g ZXhpc3RzIGV2ZW4gb24gZnJlZXN0YW5kaW5nIGNvbXBpbGVycy4KLSAgIyBP biB0aGUgTmVYVCwgY2MgLUUgcnVucyB0aGUgY29kZSB0aHJvdWdoIHRoZSBj b21waWxlcidzIHBhcnNlciwKLSAgIyBub3QganVzdCB0aHJvdWdoIGNwcC4g IlN5bnRheCBlcnJvciIgaXMgaGVyZSB0byBjYXRjaCB0aGlzIGNhc2UuCi0g IGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQK LS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSNpZmRlZiBfX1NURENfXwotIyBp bmNsdWRlIDxsaW1pdHMuaD4KLSNlbHNlCi0jIGluY2x1ZGUgPGFzc2VydC5o PgotI2VuZGlmCi0JCSAgICAgU3ludGF4IGVycm9yCi1fQUNFT0YKLWlmIGFj X2ZuX2NfdHJ5X2NwcCAiJExJTkVOTyI7IHRoZW4gOgotCi1lbHNlCi0gICMg QnJva2VuOiBmYWlscyBvbiB2YWxpZCBpbnB1dC4KLWNvbnRpbnVlCi1maQot cm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKLQotICAjIE9L LCB3b3JrcyBvbiBzYW5lIGNhc2VzLiAgTm93IGNoZWNrIHdoZXRoZXIgbm9u ZXhpc3RlbnQgaGVhZGVycwotICAjIGNhbiBiZSBkZXRlY3RlZCBhbmQgaG93 LgotICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNf ZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0jaW5jbHVkZSA8YWNfbm9u ZXhpc3RlbnQuaD4KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY3BwICIkTElO RU5PIjsgdGhlbiA6Ci0gICMgQnJva2VuOiBzdWNjZXNzIG9uIGludmFsaWQg aW5wdXQuCi1jb250aW51ZQotZWxzZQotICAjIFBhc3NlcyBib3RoIHRlc3Rz LgotYWNfcHJlcHJvY19vaz06Ci1icmVhawotZmkKLXJtIC1mIGNvbmZ0ZXN0 LmVyciBjb25mdGVzdC4kYWNfZXh0Ci0KLWRvbmUKLSMgQmVjYXVzZSBvZiBg YnJlYWsnLCBfQUNfUFJFUFJPQ19JRkVMU0UncyBjbGVhbmluZyBjb2RlIHdh cyBza2lwcGVkLgotcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19l eHQKLWlmICRhY19wcmVwcm9jX29rOyB0aGVuIDoKLSAgYnJlYWsKLWZpCi0K LSAgICBkb25lCi0gICAgYWNfY3ZfcHJvZ19DUFA9JENQUAotCi1maQotICBD UFA9JGFjX2N2X3Byb2dfQ1BQCi1lbHNlCi0gIGFjX2N2X3Byb2dfQ1BQPSRD UFAKLWZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IHJlc3VsdDogJENQUCIgPiY1Ci0kYXNfZWNobyAiJENQUCIgPiY2OyB9 Ci1hY19wcmVwcm9jX29rPWZhbHNlCi1mb3IgYWNfY19wcmVwcm9jX3dhcm5f ZmxhZyBpbiAnJyB5ZXMKLWRvCi0gICMgVXNlIGEgaGVhZGVyIGZpbGUgdGhh dCBjb21lcyB3aXRoIGdjYywgc28gY29uZmlndXJpbmcgZ2xpYmMKLSAgIyB3 aXRoIGEgZnJlc2ggY3Jvc3MtY29tcGlsZXIgd29ya3MuCi0gICMgUHJlZmVy IDxsaW1pdHMuaD4gdG8gPGFzc2VydC5oPiBpZiBfX1NURENfXyBpcyBkZWZp bmVkLCBzaW5jZQotICAjIDxsaW1pdHMuaD4gZXhpc3RzIGV2ZW4gb24gZnJl ZXN0YW5kaW5nIGNvbXBpbGVycy4KLSAgIyBPbiB0aGUgTmVYVCwgY2MgLUUg cnVucyB0aGUgY29kZSB0aHJvdWdoIHRoZSBjb21waWxlcidzIHBhcnNlciwK LSAgIyBub3QganVzdCB0aHJvdWdoIGNwcC4gIlN5bnRheCBlcnJvciIgaXMg aGVyZSB0byBjYXRjaCB0aGlzIGNhc2UuCi0gIGNhdCBjb25mZGVmcy5oIC0g PDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5o LiAgKi8KLSNpZmRlZiBfX1NURENfXwotIyBpbmNsdWRlIDxsaW1pdHMuaD4K LSNlbHNlCi0jIGluY2x1ZGUgPGFzc2VydC5oPgotI2VuZGlmCi0JCSAgICAg U3ludGF4IGVycm9yCi1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2NwcCAiJExJ TkVOTyI7IHRoZW4gOgotCi1lbHNlCi0gICMgQnJva2VuOiBmYWlscyBvbiB2 YWxpZCBpbnB1dC4KLWNvbnRpbnVlCi1maQotcm0gLWYgY29uZnRlc3QuZXJy IGNvbmZ0ZXN0LiRhY19leHQKLQotICAjIE9LLCB3b3JrcyBvbiBzYW5lIGNh c2VzLiAgTm93IGNoZWNrIHdoZXRoZXIgbm9uZXhpc3RlbnQgaGVhZGVycwot ICAjIGNhbiBiZSBkZXRlY3RlZCBhbmQgaG93LgotICBjYXQgY29uZmRlZnMu aCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRl ZnMuaC4gICovCi0jaW5jbHVkZSA8YWNfbm9uZXhpc3RlbnQuaD4KKyNpbmNs dWRlIDxhY19ub25leGlzdGVudC5oPgogX0FDRU9GCiBpZiBhY19mbl9jX3Ry eV9jcHAgIiRMSU5FTk8iOyB0aGVuIDoKICAgIyBCcm9rZW46IHN1Y2Nlc3Mg b24gaW52YWxpZCBpbnB1dC4KQEAgLTM5NDYsNjYgKzM4NjYsMTQ3IEBAIGFj X2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQ RkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkCiBhY19jb21waWxl cl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CiAKIAotYWNfY19wcmVwcm9j X3dhcm5fZmxhZz15ZXMKLQotYWNfbGliaWJlcnR5X3dhcm5fY2ZsYWdzPQot c2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi1mb3IgcmVhbF9vcHRpb24gaW4gLVcg LVdhbGwgLVd3cml0ZS1zdHJpbmdzIC1XYysrLWNvbXBhdCBcCi0JCQkgIC1X c3RyaWN0LXByb3RvdHlwZXM7IGRvCi0gICMgRG8gdGhlIGNoZWNrIHdpdGgg dGhlIG5vLSBwcmVmaXggcmVtb3ZlZCBzaW5jZSBnY2Mgc2lsZW50bHkKLSAg IyBhY2NlcHRzIGFueSAtV25vLSogb3B0aW9uIG9uIHB1cnBvc2UKLSAgY2Fz ZSAkcmVhbF9vcHRpb24gaW4KLSAgICAtV25vLSopIG9wdGlvbj0tV2BleHBy IHgkcmVhbF9vcHRpb24gOiAneC1Xbm8tXCguKlwpJ2AgOzsKLSAgICAqKSBv cHRpb249JHJlYWxfb3B0aW9uIDs7Ci0gIGVzYWMKLSAgYXNfYWN4X1dvcHRp b249YCRhc19lY2hvICJhY3hfY3ZfcHJvZ19jY193YXJuaW5nXyRvcHRpb24i IHwgJGFzX3RyX3NoYAotCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAkQ0Mgc3VwcG9ydHMg JG9wdGlvbiIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyICRD QyBzdXBwb3J0cyAkb3B0aW9uLi4uICIgPiY2OyB9Ci1pZiB7IGFzX3Zhcj0k YXNfYWN4X1dvcHRpb247IGV2YWwgInRlc3QgXCJcJHskYXNfdmFyK3NldH1c IiA9IHNldCI7IH07IHRoZW4gOgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZ3JlcCB0aGF0IGhhbmRs ZXMgbG9uZyBsaW5lcyBhbmQgLWUiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tp bmcgZm9yIGdyZXAgdGhhdCBoYW5kbGVzIGxvbmcgbGluZXMgYW5kIC1lLi4u ICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X3BhdGhfR1JFUCtzZXR9IiA9 IHNldDsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBl bHNlCi0gIENGTEFHUz0iJG9wdGlvbiIKLSAgICBjYXQgY29uZmRlZnMuaCAt IDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMu aC4gICovCi0KLWludAotbWFpbiAoKQotewotCi0gIDsKLSAgcmV0dXJuIDA7 Ci19Ci1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8i OyB0aGVuIDoKLSAgZXZhbCAiJGFzX2FjeF9Xb3B0aW9uPXllcyIKLWVsc2UK LSAgZXZhbCAiJGFzX2FjeF9Xb3B0aW9uPW5vIgotZmkKLXJtIC1mIGNvcmUg Y29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFj X2V4dAotCi1maQotZXZhbCBhY19yZXM9XCQkYXNfYWN4X1dvcHRpb24KLQkg ICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiByZXN1bHQ6ICRhY19yZXMiID4mNQotJGFzX2VjaG8gIiRhY19yZXMiID4m NjsgfQotICBpZiB0ZXN0IGBldmFsICdhc192YWw9JHsnJGFzX2FjeF9Xb3B0 aW9uJ307JGFzX2VjaG8gIiRhc192YWwiJ2AgPSB5ZXM7IHRoZW4gOgotICBh Y19saWJpYmVydHlfd2Fybl9jZmxhZ3M9IiRhY19saWJpYmVydHlfd2Fybl9j ZmxhZ3Mke2FjX2xpYmliZXJ0eV93YXJuX2NmbGFnczorIH0kcmVhbF9vcHRp b24iCi1maQotICBkb25lCi1DRkxBR1M9IiRzYXZlX0NGTEFHUyIKLQotIyBE byB0aGUgY2hlY2sgd2l0aCB0aGUgbm8tIHByZWZpeCByZW1vdmVkIGZyb20g dGhlIHdhcm5pbmcgb3B0aW9ucwotIyBzaW5jZSBnY2Mgc2lsZW50bHkgYWNj ZXB0cyBhbnkgLVduby0qIG9wdGlvbiBvbiBwdXJwb3NlCi1pZiB0ZXN0ICIk R0NDIiA9IHllczsgdGhlbiA6Ci0gIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAkQ0Mgc3VwcG9y dHMgLXBlZGFudGljICIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyB3aGV0 aGVyICRDQyBzdXBwb3J0cyAtcGVkYW50aWMgLi4uICIgPiY2OyB9Ci1pZiB0 ZXN0ICIke2FjeF9jdl9wcm9nX2NjX3BlZGFudGljXytzZXR9IiA9IHNldDsg dGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisgIGlmIHRl c3QgLXogIiRHUkVQIjsgdGhlbgorICBhY19wYXRoX0dSRVBfZm91bmQ9ZmFs c2UKKyAgIyBMb29wIHRocm91Z2ggdGhlIHVzZXIncyBwYXRoIGFuZCB0ZXN0 IGZvciBlYWNoIG9mIFBST0dOQU1FLUxJU1QKKyAgYXNfc2F2ZV9JRlM9JElG UzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSCRQ QVRIX1NFUEFSQVRPUi91c3IveHBnNC9iaW4KK2RvCisgIElGUz0kYXNfc2F2 ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBm b3IgYWNfcHJvZyBpbiBncmVwIGdncmVwOyBkbworICAgIGZvciBhY19leGVj X2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAg ICAgYWNfcGF0aF9HUkVQPSIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0 IgorICAgICAgeyB0ZXN0IC1mICIkYWNfcGF0aF9HUkVQIiAmJiAkYXNfdGVz dF94ICIkYWNfcGF0aF9HUkVQIjsgfSB8fCBjb250aW51ZQorIyBDaGVjayBm b3IgR05VIGFjX3BhdGhfR1JFUCBhbmQgc2VsZWN0IGl0IGlmIGl0IGlzIGZv dW5kLgorICAjIENoZWNrIGZvciBHTlUgJGFjX3BhdGhfR1JFUAorY2FzZSBg IiRhY19wYXRoX0dSRVAiIC0tdmVyc2lvbiAyPiYxYCBpbgorKkdOVSopCisg IGFjX2N2X3BhdGhfR1JFUD0iJGFjX3BhdGhfR1JFUCIgYWNfcGF0aF9HUkVQ X2ZvdW5kPTo7OworKikKKyAgYWNfY291bnQ9MAorICAkYXNfZWNob19uIDAx MjM0NTY3ODkgPiJjb25mdGVzdC5pbiIKKyAgd2hpbGUgOgorICBkbworICAg IGNhdCAiY29uZnRlc3QuaW4iICJjb25mdGVzdC5pbiIgPiJjb25mdGVzdC50 bXAiCisgICAgbXYgImNvbmZ0ZXN0LnRtcCIgImNvbmZ0ZXN0LmluIgorICAg IGNwICJjb25mdGVzdC5pbiIgImNvbmZ0ZXN0Lm5sIgorICAgICRhc19lY2hv ICdHUkVQJyA+PiAiY29uZnRlc3QubmwiCisgICAgIiRhY19wYXRoX0dSRVAi IC1lICdHUkVQJCcgLWUgJy0oY2Fubm90IG1hdGNoKS0nIDwgImNvbmZ0ZXN0 Lm5sIiA+ImNvbmZ0ZXN0Lm91dCIgMj4vZGV2L251bGwgfHwgYnJlYWsKKyAg ICBkaWZmICJjb25mdGVzdC5vdXQiICJjb25mdGVzdC5ubCIgPi9kZXYvbnVs bCAyPiYxIHx8IGJyZWFrCisgICAgYXNfZm5fYXJpdGggJGFjX2NvdW50ICsg MSAmJiBhY19jb3VudD0kYXNfdmFsCisgICAgaWYgdGVzdCAkYWNfY291bnQg LWd0ICR7YWNfcGF0aF9HUkVQX21heC0wfTsgdGhlbgorICAgICAgIyBCZXN0 IG9uZSBzbyBmYXIsIHNhdmUgaXQgYnV0IGtlZXAgbG9va2luZyBmb3IgYSBi ZXR0ZXIgb25lCisgICAgICBhY19jdl9wYXRoX0dSRVA9IiRhY19wYXRoX0dS RVAiCisgICAgICBhY19wYXRoX0dSRVBfbWF4PSRhY19jb3VudAorICAgIGZp CisgICAgIyAxMCooMl4xMCkgY2hhcnMgYXMgaW5wdXQgc2VlbXMgbW9yZSB0 aGFuIGVub3VnaAorICAgIHRlc3QgJGFjX2NvdW50IC1ndCAxMCAmJiBicmVh aworICBkb25lCisgIHJtIC1mIGNvbmZ0ZXN0LmluIGNvbmZ0ZXN0LnRtcCBj b25mdGVzdC5ubCBjb25mdGVzdC5vdXQ7OworZXNhYworCisgICAgICAkYWNf cGF0aF9HUkVQX2ZvdW5kICYmIGJyZWFrIDMKKyAgICBkb25lCisgIGRvbmUK KyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworICBpZiB0ZXN0IC16ICIkYWNf Y3ZfcGF0aF9HUkVQIjsgdGhlbgorICAgIGFzX2ZuX2Vycm9yICJubyBhY2Nl cHRhYmxlIGdyZXAgY291bGQgYmUgZm91bmQgaW4gJFBBVEgkUEFUSF9TRVBB UkFUT1IvdXNyL3hwZzQvYmluIiAiJExJTkVOTyIgNQorICBmaQogZWxzZQot ICBzYXZlX0NGTEFHUz0iJENGTEFHUyIKLUNGTEFHUz0iLXBlZGFudGljICIK LWNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQK KyAgYWNfY3ZfcGF0aF9HUkVQPSRHUkVQCitmaQorCitmaQoreyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19j dl9wYXRoX0dSRVAiID4mNQorJGFzX2VjaG8gIiRhY19jdl9wYXRoX0dSRVAi ID4mNjsgfQorIEdSRVA9IiRhY19jdl9wYXRoX0dSRVAiCisKKworeyAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBm b3IgZWdyZXAiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGVncmVw Li4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X3BhdGhfRUdSRVArc2V0 fSIgPSBzZXQ7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4m NgorZWxzZQorICBpZiBlY2hvIGEgfCAkR1JFUCAtRSAnKGF8YiknID4vZGV2 L251bGwgMj4mMQorICAgdGhlbiBhY19jdl9wYXRoX0VHUkVQPSIkR1JFUCAt RSIKKyAgIGVsc2UKKyAgICAgaWYgdGVzdCAteiAiJEVHUkVQIjsgdGhlbgor ICBhY19wYXRoX0VHUkVQX2ZvdW5kPWZhbHNlCisgICMgTG9vcCB0aHJvdWdo IHRoZSB1c2VyJ3MgcGF0aCBhbmQgdGVzdCBmb3IgZWFjaCBvZiBQUk9HTkFN RS1MSVNUCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFU T1IKK2ZvciBhc19kaXIgaW4gJFBBVEgkUEFUSF9TRVBBUkFUT1IvdXNyL3hw ZzQvYmluCitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRh c19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX3Byb2cgaW4gZWdyZXA7 IGRvCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxl X2V4dGVuc2lvbnM7IGRvCisgICAgICBhY19wYXRoX0VHUkVQPSIkYXNfZGly LyRhY19wcm9nJGFjX2V4ZWNfZXh0IgorICAgICAgeyB0ZXN0IC1mICIkYWNf cGF0aF9FR1JFUCIgJiYgJGFzX3Rlc3RfeCAiJGFjX3BhdGhfRUdSRVAiOyB9 IHx8IGNvbnRpbnVlCisjIENoZWNrIGZvciBHTlUgYWNfcGF0aF9FR1JFUCBh bmQgc2VsZWN0IGl0IGlmIGl0IGlzIGZvdW5kLgorICAjIENoZWNrIGZvciBH TlUgJGFjX3BhdGhfRUdSRVAKK2Nhc2UgYCIkYWNfcGF0aF9FR1JFUCIgLS12 ZXJzaW9uIDI+JjFgIGluCisqR05VKikKKyAgYWNfY3ZfcGF0aF9FR1JFUD0i JGFjX3BhdGhfRUdSRVAiIGFjX3BhdGhfRUdSRVBfZm91bmQ9Ojs7CisqKQor ICBhY19jb3VudD0wCisgICRhc19lY2hvX24gMDEyMzQ1Njc4OSA+ImNvbmZ0 ZXN0LmluIgorICB3aGlsZSA6CisgIGRvCisgICAgY2F0ICJjb25mdGVzdC5p biIgImNvbmZ0ZXN0LmluIiA+ImNvbmZ0ZXN0LnRtcCIKKyAgICBtdiAiY29u ZnRlc3QudG1wIiAiY29uZnRlc3QuaW4iCisgICAgY3AgImNvbmZ0ZXN0Lmlu IiAiY29uZnRlc3QubmwiCisgICAgJGFzX2VjaG8gJ0VHUkVQJyA+PiAiY29u ZnRlc3QubmwiCisgICAgIiRhY19wYXRoX0VHUkVQIiAnRUdSRVAkJyA8ICJj b25mdGVzdC5ubCIgPiJjb25mdGVzdC5vdXQiIDI+L2Rldi9udWxsIHx8IGJy ZWFrCisgICAgZGlmZiAiY29uZnRlc3Qub3V0IiAiY29uZnRlc3QubmwiID4v ZGV2L251bGwgMj4mMSB8fCBicmVhaworICAgIGFzX2ZuX2FyaXRoICRhY19j b3VudCArIDEgJiYgYWNfY291bnQ9JGFzX3ZhbAorICAgIGlmIHRlc3QgJGFj X2NvdW50IC1ndCAke2FjX3BhdGhfRUdSRVBfbWF4LTB9OyB0aGVuCisgICAg ICAjIEJlc3Qgb25lIHNvIGZhciwgc2F2ZSBpdCBidXQga2VlcCBsb29raW5n IGZvciBhIGJldHRlciBvbmUKKyAgICAgIGFjX2N2X3BhdGhfRUdSRVA9IiRh Y19wYXRoX0VHUkVQIgorICAgICAgYWNfcGF0aF9FR1JFUF9tYXg9JGFjX2Nv dW50CisgICAgZmkKKyAgICAjIDEwKigyXjEwKSBjaGFycyBhcyBpbnB1dCBz ZWVtcyBtb3JlIHRoYW4gZW5vdWdoCisgICAgdGVzdCAkYWNfY291bnQgLWd0 IDEwICYmIGJyZWFrCisgIGRvbmUKKyAgcm0gLWYgY29uZnRlc3QuaW4gY29u ZnRlc3QudG1wIGNvbmZ0ZXN0Lm5sIGNvbmZ0ZXN0Lm91dDs7Citlc2FjCisK KyAgICAgICRhY19wYXRoX0VHUkVQX2ZvdW5kICYmIGJyZWFrIDMKKyAgICBk b25lCisgIGRvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworICBpZiB0 ZXN0IC16ICIkYWNfY3ZfcGF0aF9FR1JFUCI7IHRoZW4KKyAgICBhc19mbl9l cnJvciAibm8gYWNjZXB0YWJsZSBlZ3JlcCBjb3VsZCBiZSBmb3VuZCBpbiAk UEFUSCRQQVRIX1NFUEFSQVRPUi91c3IveHBnNC9iaW4iICIkTElORU5PIiA1 CisgIGZpCitlbHNlCisgIGFjX2N2X3BhdGhfRUdSRVA9JEVHUkVQCitmaQor CisgICBmaQorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogcmVzdWx0OiAkYWNfY3ZfcGF0aF9FR1JFUCIgPiY1CiskYXNf ZWNobyAiJGFjX2N2X3BhdGhfRUdSRVAiID4mNjsgfQorIEVHUkVQPSIkYWNf Y3ZfcGF0aF9FR1JFUCIKKworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBBTlNJIEMgaGVhZGVyIGZp bGVzIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBBTlNJIEMgaGVh ZGVyIGZpbGVzLi4uICIgPiY2OyB9CitpZiB0ZXN0ICIke2FjX2N2X2hlYWRl cl9zdGRjK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNh Y2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VP RiA+Y29uZnRlc3QuJGFjX2V4dAogLyogZW5kIGNvbmZkZWZzLmguICAqLwor I2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2lu Y2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGZsb2F0Lmg+CiAKIGludAog bWFpbiAoKQpAQCAtNDAxNiw1MjIgKzQwMTcsNzAzIEBAIG1haW4gKCkKIH0K IF9BQ0VPRgogaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRo ZW4gOgotICBhY3hfY3ZfcHJvZ19jY19wZWRhbnRpY189eWVzCisgIGFjX2N2 X2hlYWRlcl9zdGRjPXllcwogZWxzZQotICBhY3hfY3ZfcHJvZ19jY19wZWRh bnRpY189bm8KKyAgYWNfY3ZfaGVhZGVyX3N0ZGM9bm8KIGZpCiBybSAtZiBj b3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0 LiRhY19leHQKLUNGTEFHUz0iJHNhdmVfQ0ZMQUdTIgotZmkKLXsgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWN4 X2N2X3Byb2dfY2NfcGVkYW50aWNfIiA+JjUKLSRhc19lY2hvICIkYWN4X2N2 X3Byb2dfY2NfcGVkYW50aWNfIiA+JjY7IH0KLWlmIHRlc3QgJGFjeF9jdl9w cm9nX2NjX3BlZGFudGljXyA9IHllczsgdGhlbiA6Ci0gIGFjX2xpYmliZXJ0 eV93YXJuX2NmbGFncz0iJGFjX2xpYmliZXJ0eV93YXJuX2NmbGFncyR7YWNf bGliaWJlcnR5X3dhcm5fY2ZsYWdzOisgfS1wZWRhbnRpYyAiCisKK2lmIHRl c3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCisgICMgU3VuT1Mg NC54IHN0cmluZy5oIGRvZXMgbm90IGRlY2xhcmUgbWVtKiwgY29udHJhcnkg dG8gQU5TSS4KKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRl c3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUg PHN0cmluZy5oPgorCitfQUNFT0YKK2lmIChldmFsICIkYWNfY3BwIGNvbmZ0 ZXN0LiRhY19leHQiKSAyPiY1IHwKKyAgJEVHUkVQICJtZW1jaHIiID4vZGV2 L251bGwgMj4mMTsgdGhlbiA6CisKK2Vsc2UKKyAgYWNfY3ZfaGVhZGVyX3N0 ZGM9bm8KIGZpCitybSAtZiBjb25mdGVzdCoKIAogZmkKIAoraWYgdGVzdCAk YWNfY3ZfaGVhZGVyX3N0ZGMgPSB5ZXM7IHRoZW4KKyAgIyBJU0MgMi4wLjIg c3RkbGliLmggZG9lcyBub3QgZGVjbGFyZSBmcmVlLCBjb250cmFyeSB0byBB TlNJLgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4k YWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8c3Rk bGliLmg+CisKK19BQ0VPRgoraWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3Qu JGFjX2V4dCIpIDI+JjUgfAorICAkRUdSRVAgImZyZWUiID4vZGV2L251bGwg Mj4mMTsgdGhlbiA6CiAKLWlmIHRlc3QgIngkQ0MiICE9IHhjYzsgdGhlbgot ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNo ZWNraW5nIHdoZXRoZXIgJENDIGFuZCBjYyB1bmRlcnN0YW5kIC1jIGFuZCAt byB0b2dldGhlciIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVy ICRDQyBhbmQgY2MgdW5kZXJzdGFuZCAtYyBhbmQgLW8gdG9nZXRoZXIuLi4g IiA+JjY7IH0KIGVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGNjIHVuZGVyc3RhbmRz IC1jIGFuZCAtbyB0b2dldGhlciIgPiY1Ci0kYXNfZWNob19uICJjaGVja2lu ZyB3aGV0aGVyIGNjIHVuZGVyc3RhbmRzIC1jIGFuZCAtbyB0b2dldGhlci4u LiAiID4mNjsgfQorICBhY19jdl9oZWFkZXJfc3RkYz1ubwogZmkKLXNldCBk dW1teSAkQ0M7IGFjX2NjPWAkYXNfZWNobyAiJDIiIHwKLQkJICAgICAgc2Vk ICdzL1teYS16QS1aMC05X10vXy9nO3MvXlswLTldL18vJ2AKLWlmIHsgYXNf dmFyPWFjX2N2X3Byb2dfY2NfJHthY19jY31fY19vOyBldmFsICJ0ZXN0IFwi XCR7JGFzX3ZhcitzZXR9XCIgPSBzZXQiOyB9OyB0aGVuIDoKLSAgJGFzX2Vj aG9fbiAiKGNhY2hlZCkgIiA+JjYKK3JtIC1mIGNvbmZ0ZXN0KgorCitmaQor CitpZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3RkYyA9IHllczsgdGhlbgorICAj IC9iaW4vY2MgaW4gSXJpeC00LjAuNSBnZXRzIG5vbi1BTlNJIGN0eXBlIG1h Y3JvcyB1bmxlc3MgdXNpbmcgLWFuc2kuCisgIGlmIHRlc3QgIiRjcm9zc19j b21waWxpbmciID0geWVzOyB0aGVuIDoKKyAgOgogZWxzZQogICBjYXQgY29u ZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAvKiBlbmQg Y29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRl IDxzdGRsaWIuaD4KKyNpZiAoKCcgJyAmIDB4MEZGKSA9PSAweDAyMCkKKyMg ZGVmaW5lIElTTE9XRVIoYykgKCdhJyA8PSAoYykgJiYgKGMpIDw9ICd6JykK KyMgZGVmaW5lIFRPVVBQRVIoYykgKElTTE9XRVIoYykgPyAnQScgKyAoKGMp IC0gJ2EnKSA6IChjKSkKKyNlbHNlCisjIGRlZmluZSBJU0xPV0VSKGMpIFwK KwkJICAgKCgnYScgPD0gKGMpICYmIChjKSA8PSAnaScpIFwKKwkJICAgICB8 fCAoJ2onIDw9IChjKSAmJiAoYykgPD0gJ3InKSBcCisJCSAgICAgfHwgKCdz JyA8PSAoYykgJiYgKGMpIDw9ICd6JykpCisjIGRlZmluZSBUT1VQUEVSKGMp IChJU0xPV0VSKGMpID8gKChjKSB8IDB4NDApIDogKGMpKQorI2VuZGlmCiAK KyNkZWZpbmUgWE9SKGUsIGYpICgoKGUpICYmICEoZikpIHx8ICghKGUpICYm IChmKSkpCiBpbnQKIG1haW4gKCkKIHsKLQotICA7CisgIGludCBpOworICBm b3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspCisgICAgaWYgKFhPUiAoaXNsb3dl ciAoaSksIElTTE9XRVIgKGkpKQorCXx8IHRvdXBwZXIgKGkpICE9IFRPVVBQ RVIgKGkpKQorICAgICAgcmV0dXJuIDI7CiAgIHJldHVybiAwOwogfQogX0FD RU9GCi0jIE1ha2Ugc3VyZSBpdCB3b3JrcyBib3RoIHdpdGggJENDIGFuZCB3 aXRoIHNpbXBsZSBjYy4KLSMgV2UgZG8gdGhlIHRlc3QgdHdpY2UgYmVjYXVz ZSBzb21lIGNvbXBpbGVycyByZWZ1c2UgdG8gb3ZlcndyaXRlIGFuCi0jIGV4 aXN0aW5nIC5vIGZpbGUgd2l0aCAtbywgdGhvdWdoIHRoZXkgd2lsbCBjcmVh dGUgb25lLgotYWNfdHJ5PSckQ0MgLWMgY29uZnRlc3QuJGFjX2V4dCAtbyBj b25mdGVzdDIuJGFjX29iamV4dCA+JjUnCi1ybSAtZiBjb25mdGVzdDIuKgot aWYgeyB7IGNhc2UgIigoJGFjX3RyeSIgaW4KLSAgKlwiKiB8ICpcYCogfCAq XFwqKSBhY190cnlfZWNobz1cJGFjX3RyeTs7Ci0gICopIGFjX3RyeV9lY2hv PSRhY190cnk7OwotZXNhYwotZXZhbCBhY190cnlfZWNobz0iXCJcJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfdHJ5X2VjaG9cIiIKLSRhc19l Y2hvICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQotICAoZXZhbCAiJGFjX3RyeSIp IDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICB0 ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmCi0gICB0ZXN0IC1mIGNvbmZ0ZXN0 Mi4kYWNfb2JqZXh0ICYmIHsgeyBjYXNlICIoKCRhY190cnkiIGluCi0gICpc IiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7OwotICAq KSBhY190cnlfZWNobz0kYWNfdHJ5OzsKLWVzYWMKLWV2YWwgYWNfdHJ5X2Vj aG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9l Y2hvXCIiCi0kYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKLSAgKGV2 YWwgIiRhY190cnkiKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3Rh dHVzIiA+JjUKLSAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsKLXRoZW4KLSAg ZXZhbCBhY19jdl9wcm9nX2NjXyR7YWNfY2N9X2Nfbz15ZXMKLSAgaWYgdGVz dCAieCRDQyIgIT0geGNjOyB0aGVuCi0gICAgIyBUZXN0IGZpcnN0IHRoYXQg Y2MgZXhpc3RzIGF0IGFsbC4KLSAgICBpZiB7IGFjX3RyeT0nY2MgLWMgY29u ZnRlc3QuJGFjX2V4dCA+JjUnCi0gIHsgeyBjYXNlICIoKCRhY190cnkiIGlu Ci0gICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7 OwotICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKLWVzYWMKLWV2YWwgYWNf dHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFj X3RyeV9lY2hvXCIiCi0kYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUK LSAgKGV2YWwgIiRhY190cnkiKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAk YWNfc3RhdHVzIiA+JjUKLSAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgfTsg dGhlbgotICAgICAgYWNfdHJ5PSdjYyAtYyBjb25mdGVzdC4kYWNfZXh0IC1v IGNvbmZ0ZXN0Mi4kYWNfb2JqZXh0ID4mNScKLSAgICAgIHJtIC1mIGNvbmZ0 ZXN0Mi4qCi0gICAgICBpZiB7IHsgY2FzZSAiKCgkYWNfdHJ5IiBpbgotICAq XCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsKLSAg KikgYWNfdHJ5X2VjaG89JGFjX3RyeTs7Ci1lc2FjCi1ldmFsIGFjX3RyeV9l Y2hvPSJcIlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRhY190cnlf ZWNob1wiIgotJGFzX2VjaG8gIiRhY190cnlfZWNobyI7IH0gPiY1Ci0gIChl dmFsICIkYWNfdHJ5IikgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0 YXR1cyIgPiY1Ci0gIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYKLQkgdGVz dCAtZiBjb25mdGVzdDIuJGFjX29iamV4dCAmJiB7IHsgY2FzZSAiKCgkYWNf dHJ5IiBpbgotICAqXCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9lY2hvPVwk YWNfdHJ5OzsKLSAgKikgYWNfdHJ5X2VjaG89JGFjX3RyeTs7Ci1lc2FjCi1l dmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306ICRhY190cnlfZWNob1wiIgotJGFzX2VjaG8gIiRhY190cnlfZWNobyI7 IH0gPiY1Ci0gIChldmFsICIkYWNfdHJ5IikgMj4mNQotICBhY19zdGF0dXM9 JD8KLSAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog XCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIHRlc3QgJGFjX3N0YXR1cyA9IDA7 IH07Ci0gICAgICB0aGVuCi0JIyBjYyB3b3JrcyB0b28uCi0JOgotICAgICAg ZWxzZQotCSMgY2MgZXhpc3RzIGJ1dCBkb2Vzbid0IGxpa2UgLW8uCi0JZXZh bCBhY19jdl9wcm9nX2NjXyR7YWNfY2N9X2Nfbz1ubwotICAgICAgZmkKLSAg ICBmaQotICBmaQoraWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhl biA6CisKIGVsc2UKLSAgZXZhbCBhY19jdl9wcm9nX2NjXyR7YWNfY2N9X2Nf bz1ubworICBhY19jdl9oZWFkZXJfc3RkYz1ubworZmkKK3JtIC1mIGNvcmUg Ki5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRl c3QkYWNfZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVz dC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKIGZpCi1ybSAtZiBjb3JlIGNvbmZ0 ZXN0KgogCiBmaQotaWYgZXZhbCB0ZXN0IFwkYWNfY3ZfcHJvZ19jY18ke2Fj X2NjfV9jX28gPSB5ZXM7IHRoZW4KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1Ci0kYXNfZWNo byAieWVzIiA+JjY7IH0KLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hv ICJubyIgPiY2OyB9CitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9oZWFkZXJfc3RkYyIgPiY1 CiskYXNfZWNobyAiJGFjX2N2X2hlYWRlcl9zdGRjIiA+JjY7IH0KK2lmIHRl c3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCiAKLSRhc19lY2hv ICIjZGVmaW5lIE5PX01JTlVTX0NfTUlOVVNfTyAxIiA+PmNvbmZkZWZzLmgK KyRhc19lY2hvICIjZGVmaW5lIFNURENfSEVBREVSUyAxIiA+PmNvbmZkZWZz LmgKIAogZmkKIAotIyBhdXRvY29uZiBpcyBsYW1lIGFuZCBkb2Vzbid0IGdp dmUgdXMgYW55IHN1YnN0aXR1dGlvbiB2YXJpYWJsZSBmb3IgdGhpcy4KLWlm IGV2YWwgInRlc3QgXCJgZWNobyAnJGFjX2N2X3Byb2dfY2NfJyR7YWNfY2N9 X2Nfb2BcIiA9IG5vIjsgdGhlbgotICBOT19NSU5VU19DX01JTlVTX089eWVz CisjIE9uIElSSVggNS4zLCBzeXMvdHlwZXMgYW5kIGludHR5cGVzLmggYXJl IGNvbmZsaWN0aW5nLgorZm9yIGFjX2hlYWRlciBpbiBzeXMvdHlwZXMuaCBz eXMvc3RhdC5oIHN0ZGxpYi5oIHN0cmluZy5oIG1lbW9yeS5oIHN0cmluZ3Mu aCBcCisJCSAgaW50dHlwZXMuaCBzdGRpbnQuaCB1bmlzdGQuaAorZG8gOgor ICBhc19hY19IZWFkZXI9YCRhc19lY2hvICJhY19jdl9oZWFkZXJfJGFjX2hl YWRlciIgfCAkYXNfdHJfc2hgCithY19mbl9jX2NoZWNrX2hlYWRlcl9jb21w aWxlICIkTElORU5PIiAiJGFjX2hlYWRlciIgIiRhc19hY19IZWFkZXIiICIk YWNfaW5jbHVkZXNfZGVmYXVsdAorIgorZXZhbCBhc192YWw9XCQkYXNfYWNf SGVhZGVyCisgICBpZiB0ZXN0ICJ4JGFzX3ZhbCIgPSB4IiJ5ZXM7IHRoZW4g OgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIGAkYXNf ZWNobyAiSEFWRV8kYWNfaGVhZGVyIiB8ICRhc190cl9jcHBgIDEKK19BQ0VP RgorCitmaQorCitkb25lCisKKworCisgIGFjX2ZuX2NfY2hlY2tfaGVhZGVy X21vbmdyZWwgIiRMSU5FTk8iICJtaW5peC9jb25maWcuaCIgImFjX2N2X2hl YWRlcl9taW5peF9jb25maWdfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0Igor aWYgdGVzdCAieCRhY19jdl9oZWFkZXJfbWluaXhfY29uZmlnX2giID0geCIi eWVzOyB0aGVuIDoKKyAgTUlOSVg9eWVzCiBlbHNlCi0gIE9VVFBVVF9PUFRJ T049Jy1vICRAJworICBNSU5JWD0KIGZpCiAKIAorICBpZiB0ZXN0ICIkTUlO SVgiID0geWVzOyB0aGVuCiAKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFuIEFOU0kgQy1jb25mb3Jt aW5nIGNvbnN0IiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciBhbiBB TlNJIEMtY29uZm9ybWluZyBjb25zdC4uLiAiID4mNjsgfQotaWYgdGVzdCAi JHthY19jdl9jX2NvbnN0K3NldH0iID0gc2V0OyB0aGVuIDoKKyRhc19lY2hv ICIjZGVmaW5lIF9QT1NJWF9TT1VSQ0UgMSIgPj5jb25mZGVmcy5oCisKKwor JGFzX2VjaG8gIiNkZWZpbmUgX1BPU0lYXzFfU09VUkNFIDIiID4+Y29uZmRl ZnMuaAorCisKKyRhc19lY2hvICIjZGVmaW5lIF9NSU5JWCAxIiA+PmNvbmZk ZWZzLmgKKworICBmaQorCisKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGl0IGlzIHNhZmUg dG8gZGVmaW5lIF9fRVhURU5TSU9OU19fIiA+JjUKKyRhc19lY2hvX24gImNo ZWNraW5nIHdoZXRoZXIgaXQgaXMgc2FmZSB0byBkZWZpbmUgX19FWFRFTlNJ T05TX18uLi4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3Zfc2FmZV90b19k ZWZpbmVfX19leHRlbnNpb25zX18rc2V0fSIgPSBzZXQ7IHRoZW4gOgogICAk YXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBjYXQgY29uZmRl ZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAvKiBlbmQgY29u ZmRlZnMuaC4gICovCiAKKyMJICBkZWZpbmUgX19FWFRFTlNJT05TX18gMQor CSAgJGFjX2luY2x1ZGVzX2RlZmF1bHQKIGludAogbWFpbiAoKQogewotLyog RklYTUU6IEluY2x1ZGUgdGhlIGNvbW1lbnRzIHN1Z2dlc3RlZCBieSBQYXVs LiAqLwotI2lmbmRlZiBfX2NwbHVzcGx1cwotICAvKiBVbHRyaXggbWlwcyBj YyByZWplY3RzIHRoaXMuICAqLwotICB0eXBlZGVmIGludCBjaGFyc2V0WzJd OwotICBjb25zdCBjaGFyc2V0IGNzOwotICAvKiBTdW5PUyA0LjEuMSBjYyBy ZWplY3RzIHRoaXMuICAqLwotICBjaGFyIGNvbnN0ICpjb25zdCAqcGNwY2M7 Ci0gIGNoYXIgKipwcGM7Ci0gIC8qIE5FQyBTVlI0LjAuMiBtaXBzIGNjIHJl amVjdHMgdGhpcy4gICovCi0gIHN0cnVjdCBwb2ludCB7aW50IHgsIHk7fTsK LSAgc3RhdGljIHN0cnVjdCBwb2ludCBjb25zdCB6ZXJvID0gezAsMH07Ci0g IC8qIEFJWCBYTCBDIDEuMDIuMC4wIHJlamVjdHMgdGhpcy4KLSAgICAgSXQg ZG9lcyBub3QgbGV0IHlvdSBzdWJ0cmFjdCBvbmUgY29uc3QgWCogcG9pbnRl ciBmcm9tIGFub3RoZXIgaW4KLSAgICAgYW4gYXJtIG9mIGFuIGlmLWV4cHJl c3Npb24gd2hvc2UgaWYtcGFydCBpcyBub3QgYSBjb25zdGFudAotICAgICBl eHByZXNzaW9uICovCi0gIGNvbnN0IGNoYXIgKmcgPSAic3RyaW5nIjsKLSAg cGNwY2MgPSAmZyArIChnID8gZy1nIDogMCk7Ci0gIC8qIEhQVVggNy4wIGNj IHJlamVjdHMgdGhlc2UuICovCi0gICsrcGNwY2M7Ci0gIHBwYyA9IChjaGFy KiopIHBjcGNjOwotICBwY3BjYyA9IChjaGFyIGNvbnN0ICpjb25zdCAqKSBw cGM7Ci0gIHsgLyogU0NPIDMuMnY0IGNjIHJlamVjdHMgdGhpcy4gICovCi0g ICAgY2hhciAqdDsKLSAgICBjaGFyIGNvbnN0ICpzID0gMCA/IChjaGFyICop IDAgOiAoY2hhciBjb25zdCAqKSAwOwotCi0gICAgKnQrKyA9IDA7Ci0gICAg aWYgKHMpIHJldHVybiAwOwotICB9Ci0gIHsgLyogU29tZW9uZSB0aGlua3Mg dGhlIFN1biBzdXBwb3NlZGx5LUFOU0kgY29tcGlsZXIgd2lsbCByZWplY3Qg dGhpcy4gICovCi0gICAgaW50IHhbXSA9IHsyNSwgMTd9OwotICAgIGNvbnN0 IGludCAqZm9vID0gJnhbMF07Ci0gICAgKytmb287Ci0gIH0KLSAgeyAvKiBT dW4gU0MxLjAgQU5TSSBjb21waWxlciByZWplY3RzIHRoaXMgLS0gYnV0IG5v dCB0aGUgYWJvdmUuICovCi0gICAgdHlwZWRlZiBjb25zdCBpbnQgKmlwdHI7 Ci0gICAgaXB0ciBwID0gMDsKLSAgICArK3A7Ci0gIH0KLSAgeyAvKiBBSVgg WEwgQyAxLjAyLjAuMCByZWplY3RzIHRoaXMgc2F5aW5nCi0gICAgICAgImsu YyIsIGxpbmUgMi4yNzogMTUwNi0wMjUgKFMpIE9wZXJhbmQgbXVzdCBiZSBh IG1vZGlmaWFibGUgbHZhbHVlLiAqLwotICAgIHN0cnVjdCBzIHsgaW50IGo7 IGNvbnN0IGludCAqYXBbM107IH07Ci0gICAgc3RydWN0IHMgKmI7IGItPmog PSA1OwotICB9Ci0gIHsgLyogVUxUUklYLTMyIFYzLjEgKFJldiA5KSB2Y2Mg cmVqZWN0cyB0aGlzICovCi0gICAgY29uc3QgaW50IGZvbyA9IDEwOwotICAg IGlmICghZm9vKSByZXR1cm4gMDsKLSAgfQotICByZXR1cm4gIWNzWzBdICYm ICF6ZXJvLng7Ci0jZW5kaWYKIAogICA7CiAgIHJldHVybiAwOwogfQogX0FD RU9GCiBpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6 Ci0gIGFjX2N2X2NfY29uc3Q9eWVzCisgIGFjX2N2X3NhZmVfdG9fZGVmaW5l X19fZXh0ZW5zaW9uc19fPXllcwogZWxzZQotICBhY19jdl9jX2NvbnN0PW5v CisgIGFjX2N2X3NhZmVfdG9fZGVmaW5lX19fZXh0ZW5zaW9uc19fPW5vCiBm aQogcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4 dCBjb25mdGVzdC4kYWNfZXh0CiBmaQoteyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9jX2NvbnN0IiA+ JjUKLSRhc19lY2hvICIkYWNfY3ZfY19jb25zdCIgPiY2OyB9Ci1pZiB0ZXN0 ICRhY19jdl9jX2NvbnN0ID0gbm87IHRoZW4KK3sgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zfc2FmZV90 b19kZWZpbmVfX19leHRlbnNpb25zX18iID4mNQorJGFzX2VjaG8gIiRhY19j dl9zYWZlX3RvX2RlZmluZV9fX2V4dGVuc2lvbnNfXyIgPiY2OyB9CisgIHRl c3QgJGFjX2N2X3NhZmVfdG9fZGVmaW5lX19fZXh0ZW5zaW9uc19fID0geWVz ICYmCisgICAgJGFzX2VjaG8gIiNkZWZpbmUgX19FWFRFTlNJT05TX18gMSIg Pj5jb25mZGVmcy5oCisKKyAgJGFzX2VjaG8gIiNkZWZpbmUgX0FMTF9TT1VS Q0UgMSIgPj5jb25mZGVmcy5oCisKKyAgJGFzX2VjaG8gIiNkZWZpbmUgX0dO VV9TT1VSQ0UgMSIgPj5jb25mZGVmcy5oCisKKyAgJGFzX2VjaG8gIiNkZWZp bmUgX1BPU0lYX1BUSFJFQURfU0VNQU5USUNTIDEiID4+Y29uZmRlZnMuaAor CisgICRhc19lY2hvICIjZGVmaW5lIF9UQU5ERU1fU09VUkNFIDEiID4+Y29u ZmRlZnMuaAorCiAKLSRhc19lY2hvICIjZGVmaW5lIGNvbnN0IC8qKi8iID4+ Y29uZmRlZnMuaAogCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbGFyZ2Vm aWxlIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2xhcmdlZmlsZStz ZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX2xhcmdl ZmlsZTsKIGZpCiAKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogY2hlY2tpbmcgZm9yIGlubGluZSIgPiY1Ci0kYXNfZWNob19u ICJjaGVja2luZyBmb3IgaW5saW5lLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIk e2FjX2N2X2NfaW5saW5lK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmIHRlc3Qg IiRlbmFibGVfbGFyZ2VmaWxlIiAhPSBubzsgdGhlbgorCisgIHsgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9y IHNwZWNpYWwgQyBjb21waWxlciBvcHRpb25zIG5lZWRlZCBmb3IgbGFyZ2Ug ZmlsZXMiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHNwZWNpYWwg QyBjb21waWxlciBvcHRpb25zIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMuLi4g IiA+JjY7IH0KK2lmIHRlc3QgIiR7YWNfY3Zfc3lzX2xhcmdlZmlsZV9DQytz ZXR9IiA9IHNldDsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIg PiY2CiBlbHNlCi0gIGFjX2N2X2NfaW5saW5lPW5vCi1mb3IgYWNfa3cgaW4g aW5saW5lIF9faW5saW5lX18gX19pbmxpbmU7IGRvCisgIGFjX2N2X3N5c19s YXJnZWZpbGVfQ0M9bm8KKyAgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0 aGVuCisgICAgICAgYWNfc2F2ZV9DQz0kQ0MKKyAgICAgICB3aGlsZSA6OyBk bworCSAjIElSSVggNi4yIGFuZCBsYXRlciBkbyBub3Qgc3VwcG9ydCBsYXJn ZSBmaWxlcyBieSBkZWZhdWx0LAorCSAjIHNvIHVzZSB0aGUgQyBjb21waWxl cidzIC1uMzIgb3B0aW9uIGlmIHRoYXQgaGVscHMuCisJIGNhdCBjb25mZGVm cy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25m ZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAvKiBDaGVj ayB0aGF0IG9mZl90IGNhbiByZXByZXNlbnQgMioqNjMgLSAxIGNvcnJlY3Rs eS4KKyAgICBXZSBjYW4ndCBzaW1wbHkgZGVmaW5lIExBUkdFX09GRl9UIHRv IGJlIDkyMjMzNzIwMzY4NTQ3NzU4MDcsCisgICAgc2luY2Ugc29tZSBDKysg Y29tcGlsZXJzIG1hc3F1ZXJhZGluZyBhcyBDIGNvbXBpbGVycworICAgIGlu Y29ycmVjdGx5IHJlamVjdCA5MjIzMzcyMDM2ODU0Nzc1ODA3LiAgKi8KKyNk ZWZpbmUgTEFSR0VfT0ZGX1QgKCgob2ZmX3QpIDEgPDwgNjIpIC0gMSArICgo b2ZmX3QpIDEgPDwgNjIpKQorICBpbnQgb2ZmX3RfaXNfbGFyZ2VbKExBUkdF X09GRl9UICUgMjE0NzQ4MzYyOSA9PSA3MjEKKwkJICAgICAgICYmIExBUkdF X09GRl9UICUgMjE0NzQ4MzY0NyA9PSAxKQorCQkgICAgICA/IDEgOiAtMV07 CitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FD RU9GCisJIGlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVu IDoKKyAgYnJlYWsKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25m dGVzdC4kYWNfb2JqZXh0CisJIENDPSIkQ0MgLW4zMiIKKwkgaWYgYWNfZm5f Y190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9zeXNf bGFyZ2VmaWxlX0NDPScgLW4zMic7IGJyZWFrCitmaQorcm0gLWYgY29yZSBj b25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dAorCSBicmVhaworICAg ICAgIGRvbmUKKyAgICAgICBDQz0kYWNfc2F2ZV9DQworICAgICAgIHJtIC1m IGNvbmZ0ZXN0LiRhY19leHQKKyAgICBmaQorZmkKK3sgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zfc3lz X2xhcmdlZmlsZV9DQyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X3N5c19sYXJn ZWZpbGVfQ0MiID4mNjsgfQorICBpZiB0ZXN0ICIkYWNfY3Zfc3lzX2xhcmdl ZmlsZV9DQyIgIT0gbm87IHRoZW4KKyAgICBDQz0kQ0MkYWNfY3Zfc3lzX2xh cmdlZmlsZV9DQworICBmaQorCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIF9GSUxFX09GRlNFVF9C SVRTIHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMiID4mNQorJGFzX2Vj aG9fbiAiY2hlY2tpbmcgZm9yIF9GSUxFX09GRlNFVF9CSVRTIHZhbHVlIG5l ZWRlZCBmb3IgbGFyZ2UgZmlsZXMuLi4gIiA+JjY7IH0KK2lmIHRlc3QgIiR7 YWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMrc2V0fSIgPSBzZXQ7IHRoZW4g OgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICB3aGls ZSA6OyBkbwogICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVz dC4kYWNfZXh0CiAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0jaWZuZGVmIF9f Y3BsdXNwbHVzCi10eXBlZGVmIGludCBmb29fdDsKLXN0YXRpYyAkYWNfa3cg Zm9vX3Qgc3RhdGljX2ZvbyAoKSB7cmV0dXJuIDA7IH0KLSRhY19rdyBmb29f dCBmb28gKCkge3JldHVybiAwOyB9Ci0jZW5kaWYKKyNpbmNsdWRlIDxzeXMv dHlwZXMuaD4KKyAvKiBDaGVjayB0aGF0IG9mZl90IGNhbiByZXByZXNlbnQg MioqNjMgLSAxIGNvcnJlY3RseS4KKyAgICBXZSBjYW4ndCBzaW1wbHkgZGVm aW5lIExBUkdFX09GRl9UIHRvIGJlIDkyMjMzNzIwMzY4NTQ3NzU4MDcsCisg ICAgc2luY2Ugc29tZSBDKysgY29tcGlsZXJzIG1hc3F1ZXJhZGluZyBhcyBD IGNvbXBpbGVycworICAgIGluY29ycmVjdGx5IHJlamVjdCA5MjIzMzcyMDM2 ODU0Nzc1ODA3LiAgKi8KKyNkZWZpbmUgTEFSR0VfT0ZGX1QgKCgob2ZmX3Qp IDEgPDwgNjIpIC0gMSArICgob2ZmX3QpIDEgPDwgNjIpKQorICBpbnQgb2Zm X3RfaXNfbGFyZ2VbKExBUkdFX09GRl9UICUgMjE0NzQ4MzYyOSA9PSA3MjEK KwkJICAgICAgICYmIExBUkdFX09GRl9UICUgMjE0NzQ4MzY0NyA9PSAxKQor CQkgICAgICA/IDEgOiAtMV07CitpbnQKK21haW4gKCkKK3sKIAorICA7Cisg IHJldHVybiAwOworfQogX0FDRU9GCiBpZiBhY19mbl9jX3RyeV9jb21waWxl ICIkTElORU5PIjsgdGhlbiA6Ci0gIGFjX2N2X2NfaW5saW5lPSRhY19rdwor ICBhY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cz1ubzsgYnJlYWsKIGZpCiBy bSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNv bmZ0ZXN0LiRhY19leHQKLSAgdGVzdCAiJGFjX2N2X2NfaW5saW5lIiAhPSBu byAmJiBicmVhawotZG9uZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9G ID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisj ZGVmaW5lIF9GSUxFX09GRlNFVF9CSVRTIDY0CisjaW5jbHVkZSA8c3lzL3R5 cGVzLmg+CisgLyogQ2hlY2sgdGhhdCBvZmZfdCBjYW4gcmVwcmVzZW50IDIq KjYzIC0gMSBjb3JyZWN0bHkuCisgICAgV2UgY2FuJ3Qgc2ltcGx5IGRlZmlu ZSBMQVJHRV9PRkZfVCB0byBiZSA5MjIzMzcyMDM2ODU0Nzc1ODA3LAorICAg IHNpbmNlIHNvbWUgQysrIGNvbXBpbGVycyBtYXNxdWVyYWRpbmcgYXMgQyBj b21waWxlcnMKKyAgICBpbmNvcnJlY3RseSByZWplY3QgOTIyMzM3MjAzNjg1 NDc3NTgwNy4gICovCisjZGVmaW5lIExBUkdFX09GRl9UICgoKG9mZl90KSAx IDw8IDYyKSAtIDEgKyAoKG9mZl90KSAxIDw8IDYyKSkKKyAgaW50IG9mZl90 X2lzX2xhcmdlWyhMQVJHRV9PRkZfVCAlIDIxNDc0ODM2MjkgPT0gNzIxCisJ CSAgICAgICAmJiBMQVJHRV9PRkZfVCAlIDIxNDc0ODM2NDcgPT0gMSkKKwkJ ICAgICAgPyAxIDogLTFdOworaW50CittYWluICgpCit7CiAKKyAgOworICBy ZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAi JExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0 cz02NDsgYnJlYWsKIGZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2NfaW5saW5lIiA+JjUKLSRh c19lY2hvICIkYWNfY3ZfY19pbmxpbmUiID4mNjsgfQotCi1jYXNlICRhY19j dl9jX2lubGluZSBpbgotICBpbmxpbmUgfCB5ZXMpIDs7Ci0gICopCi0gICAg Y2FzZSAkYWNfY3ZfY19pbmxpbmUgaW4KLSAgICAgIG5vKSBhY192YWw9OzsK LSAgICAgICopIGFjX3ZhbD0kYWNfY3ZfY19pbmxpbmU7OwotICAgIGVzYWMK LSAgICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0jaWZuZGVmIF9fY3Bs dXNwbHVzCi0jZGVmaW5lIGlubGluZSAkYWNfdmFsCi0jZW5kaWYKK3JtIC1m IGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRl c3QuJGFjX2V4dAorICBhY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cz11bmtu b3duCisgIGJyZWFrCitkb25lCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9zeXNfZmlsZV9v ZmZzZXRfYml0cyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X3N5c19maWxlX29m ZnNldF9iaXRzIiA+JjY7IH0KK2Nhc2UgJGFjX2N2X3N5c19maWxlX29mZnNl dF9iaXRzIGluICMoCisgIG5vIHwgdW5rbm93bikgOzsKKyAgKikKK2NhdCA+ PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgX0ZJTEVfT0ZGU0VUX0JJ VFMgJGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzCiBfQUNFT0YKLSAgICA7 OworOzsKIGVzYWMKK3JtIC1yZiBjb25mdGVzdCoKKyAgaWYgdGVzdCAkYWNf Y3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMgPSB1bmtub3duOyB0aGVuCisgICAg eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVj a2luZyBmb3IgX0xBUkdFX0ZJTEVTIHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2Ug ZmlsZXMiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIF9MQVJHRV9G SUxFUyB2YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzLi4uICIgPiY2OyB9 CitpZiB0ZXN0ICIke2FjX2N2X3N5c19sYXJnZV9maWxlcytzZXR9IiA9IHNl dDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNl CisgIHdoaWxlIDo7IGRvCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0Yg PmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNp bmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAvKiBDaGVjayB0aGF0IG9mZl90IGNh biByZXByZXNlbnQgMioqNjMgLSAxIGNvcnJlY3RseS4KKyAgICBXZSBjYW4n dCBzaW1wbHkgZGVmaW5lIExBUkdFX09GRl9UIHRvIGJlIDkyMjMzNzIwMzY4 NTQ3NzU4MDcsCisgICAgc2luY2Ugc29tZSBDKysgY29tcGlsZXJzIG1hc3F1 ZXJhZGluZyBhcyBDIGNvbXBpbGVycworICAgIGluY29ycmVjdGx5IHJlamVj dCA5MjIzMzcyMDM2ODU0Nzc1ODA3LiAgKi8KKyNkZWZpbmUgTEFSR0VfT0ZG X1QgKCgob2ZmX3QpIDEgPDwgNjIpIC0gMSArICgob2ZmX3QpIDEgPDwgNjIp KQorICBpbnQgb2ZmX3RfaXNfbGFyZ2VbKExBUkdFX09GRl9UICUgMjE0NzQ4 MzYyOSA9PSA3MjEKKwkJICAgICAgICYmIExBUkdFX09GRl9UICUgMjE0NzQ4 MzY0NyA9PSAxKQorCQkgICAgICA/IDEgOiAtMV07CitpbnQKK21haW4gKCkK K3sKIAorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9j X3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X3N5c19s YXJnZV9maWxlcz1ubzsgYnJlYWsKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0 LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAg Y2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAor LyogZW5kIGNvbmZkZWZzLmguICAqLworI2RlZmluZSBfTEFSR0VfRklMRVMg MQorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorIC8qIENoZWNrIHRoYXQgb2Zm X3QgY2FuIHJlcHJlc2VudCAyKio2MyAtIDEgY29ycmVjdGx5LgorICAgIFdl IGNhbid0IHNpbXBseSBkZWZpbmUgTEFSR0VfT0ZGX1QgdG8gYmUgOTIyMzM3 MjAzNjg1NDc3NTgwNywKKyAgICBzaW5jZSBzb21lIEMrKyBjb21waWxlcnMg bWFzcXVlcmFkaW5nIGFzIEMgY29tcGlsZXJzCisgICAgaW5jb3JyZWN0bHkg cmVqZWN0IDkyMjMzNzIwMzY4NTQ3NzU4MDcuICAqLworI2RlZmluZSBMQVJH RV9PRkZfVCAoKChvZmZfdCkgMSA8PCA2MikgLSAxICsgKChvZmZfdCkgMSA8 PCA2MikpCisgIGludCBvZmZfdF9pc19sYXJnZVsoTEFSR0VfT0ZGX1QgJSAy MTQ3NDgzNjI5ID09IDcyMQorCQkgICAgICAgJiYgTEFSR0VfT0ZGX1QgJSAy MTQ3NDgzNjQ3ID09IDEpCisJCSAgICAgID8gMSA6IC0xXTsKK2ludAorbWFp biAoKQorewogCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IGNoZWNraW5nIGZvciBncmVwIHRoYXQgaGFuZGxlcyBsb25nIGxp bmVzIGFuZCAtZSIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgZ3Jl cCB0aGF0IGhhbmRsZXMgbG9uZyBsaW5lcyBhbmQgLWUuLi4gIiA+JjY7IH0K LWlmIHRlc3QgIiR7YWNfY3ZfcGF0aF9HUkVQK3NldH0iID0gc2V0OyB0aGVu IDoKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190 cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9zeXNfbGFy Z2VfZmlsZXM9MTsgYnJlYWsKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVy ciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgYWNf Y3Zfc3lzX2xhcmdlX2ZpbGVzPXVua25vd24KKyAgYnJlYWsKK2RvbmUKK2Zp Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl c3VsdDogJGFjX2N2X3N5c19sYXJnZV9maWxlcyIgPiY1CiskYXNfZWNobyAi JGFjX2N2X3N5c19sYXJnZV9maWxlcyIgPiY2OyB9CitjYXNlICRhY19jdl9z eXNfbGFyZ2VfZmlsZXMgaW4gIygKKyAgbm8gfCB1bmtub3duKSA7OworICAq KQorY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBfTEFSR0Vf RklMRVMgJGFjX2N2X3N5c19sYXJnZV9maWxlcworX0FDRU9GCis7OworZXNh Yworcm0gLXJmIGNvbmZ0ZXN0KgorICBmaQorZmkKKworCithY19jX3ByZXBy b2Nfd2Fybl9mbGFnPXllcworCithY19saWJpYmVydHlfd2Fybl9jZmxhZ3M9 CitzYXZlX0NGTEFHUz0iJENGTEFHUyIKK2ZvciByZWFsX29wdGlvbiBpbiAt VyAtV2FsbCAtV3dyaXRlLXN0cmluZ3MgLVdjKystY29tcGF0IFwKKwkJCSAg LVdzdHJpY3QtcHJvdG90eXBlczsgZG8KKyAgIyBEbyB0aGUgY2hlY2sgd2l0 aCB0aGUgbm8tIHByZWZpeCByZW1vdmVkIHNpbmNlIGdjYyBzaWxlbnRseQor ICAjIGFjY2VwdHMgYW55IC1Xbm8tKiBvcHRpb24gb24gcHVycG9zZQorICBj YXNlICRyZWFsX29wdGlvbiBpbgorICAgIC1Xbm8tKikgb3B0aW9uPS1XYGV4 cHIgeCRyZWFsX29wdGlvbiA6ICd4LVduby1cKC4qXCknYCA7OworICAgICop IG9wdGlvbj0kcmVhbF9vcHRpb24gOzsKKyAgZXNhYworICBhc19hY3hfV29w dGlvbj1gJGFzX2VjaG8gImFjeF9jdl9wcm9nX2NjX3dhcm5pbmdfJG9wdGlv biIgfCAkYXNfdHJfc2hgCisKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyICRDQyBzdXBwb3J0 cyAkb3B0aW9uIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIg JENDIHN1cHBvcnRzICRvcHRpb24uLi4gIiA+JjY7IH0KK2lmIHsgYXNfdmFy PSRhc19hY3hfV29wdGlvbjsgZXZhbCAidGVzdCBcIlwkeyRhc192YXIrc2V0 fVwiID0gc2V0IjsgfTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQp ICIgPiY2CiBlbHNlCi0gIGlmIHRlc3QgLXogIiRHUkVQIjsgdGhlbgotICBh Y19wYXRoX0dSRVBfZm91bmQ9ZmFsc2UKLSAgIyBMb29wIHRocm91Z2ggdGhl IHVzZXIncyBwYXRoIGFuZCB0ZXN0IGZvciBlYWNoIG9mIFBST0dOQU1FLUxJ U1QKLSAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgot Zm9yIGFzX2RpciBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91c3IveHBnNC9i aW4KLWRvCi0gIElGUz0kYXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2Rp ciIgJiYgYXNfZGlyPS4KLSAgICBmb3IgYWNfcHJvZyBpbiBncmVwIGdncmVw OyBkbwotICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJs ZV9leHRlbnNpb25zOyBkbwotICAgICAgYWNfcGF0aF9HUkVQPSIkYXNfZGly LyRhY19wcm9nJGFjX2V4ZWNfZXh0IgotICAgICAgeyB0ZXN0IC1mICIkYWNf cGF0aF9HUkVQIiAmJiAkYXNfdGVzdF94ICIkYWNfcGF0aF9HUkVQIjsgfSB8 fCBjb250aW51ZQotIyBDaGVjayBmb3IgR05VIGFjX3BhdGhfR1JFUCBhbmQg c2VsZWN0IGl0IGlmIGl0IGlzIGZvdW5kLgotICAjIENoZWNrIGZvciBHTlUg JGFjX3BhdGhfR1JFUAotY2FzZSBgIiRhY19wYXRoX0dSRVAiIC0tdmVyc2lv biAyPiYxYCBpbgotKkdOVSopCi0gIGFjX2N2X3BhdGhfR1JFUD0iJGFjX3Bh dGhfR1JFUCIgYWNfcGF0aF9HUkVQX2ZvdW5kPTo7OwotKikKLSAgYWNfY291 bnQ9MAotICAkYXNfZWNob19uIDAxMjM0NTY3ODkgPiJjb25mdGVzdC5pbiIK LSAgd2hpbGUgOgotICBkbwotICAgIGNhdCAiY29uZnRlc3QuaW4iICJjb25m dGVzdC5pbiIgPiJjb25mdGVzdC50bXAiCi0gICAgbXYgImNvbmZ0ZXN0LnRt cCIgImNvbmZ0ZXN0LmluIgotICAgIGNwICJjb25mdGVzdC5pbiIgImNvbmZ0 ZXN0Lm5sIgotICAgICRhc19lY2hvICdHUkVQJyA+PiAiY29uZnRlc3Qubmwi Ci0gICAgIiRhY19wYXRoX0dSRVAiIC1lICdHUkVQJCcgLWUgJy0oY2Fubm90 IG1hdGNoKS0nIDwgImNvbmZ0ZXN0Lm5sIiA+ImNvbmZ0ZXN0Lm91dCIgMj4v ZGV2L251bGwgfHwgYnJlYWsKLSAgICBkaWZmICJjb25mdGVzdC5vdXQiICJj b25mdGVzdC5ubCIgPi9kZXYvbnVsbCAyPiYxIHx8IGJyZWFrCi0gICAgYXNf Zm5fYXJpdGggJGFjX2NvdW50ICsgMSAmJiBhY19jb3VudD0kYXNfdmFsCi0g ICAgaWYgdGVzdCAkYWNfY291bnQgLWd0ICR7YWNfcGF0aF9HUkVQX21heC0w fTsgdGhlbgotICAgICAgIyBCZXN0IG9uZSBzbyBmYXIsIHNhdmUgaXQgYnV0 IGtlZXAgbG9va2luZyBmb3IgYSBiZXR0ZXIgb25lCi0gICAgICBhY19jdl9w YXRoX0dSRVA9IiRhY19wYXRoX0dSRVAiCi0gICAgICBhY19wYXRoX0dSRVBf bWF4PSRhY19jb3VudAotICAgIGZpCi0gICAgIyAxMCooMl4xMCkgY2hhcnMg YXMgaW5wdXQgc2VlbXMgbW9yZSB0aGFuIGVub3VnaAotICAgIHRlc3QgJGFj X2NvdW50IC1ndCAxMCAmJiBicmVhawotICBkb25lCi0gIHJtIC1mIGNvbmZ0 ZXN0LmluIGNvbmZ0ZXN0LnRtcCBjb25mdGVzdC5ubCBjb25mdGVzdC5vdXQ7 OwotZXNhYworICBDRkxBR1M9IiRvcHRpb24iCisgICAgY2F0IGNvbmZkZWZz LmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZk ZWZzLmguICAqLwogCi0gICAgICAkYWNfcGF0aF9HUkVQX2ZvdW5kICYmIGJy ZWFrIDMKLSAgICBkb25lCi0gIGRvbmUKK2ludAorbWFpbiAoKQoreworCisg IDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2Nv bXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgZXZhbCAiJGFzX2FjeF9Xb3B0 aW9uPXllcyIKK2Vsc2UKKyAgZXZhbCAiJGFzX2FjeF9Xb3B0aW9uPW5vIgor ZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpl eHQgY29uZnRlc3QuJGFjX2V4dAorCitmaQorZXZhbCBhY19yZXM9XCQkYXNf YWN4X1dvcHRpb24KKwkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQorJGFzX2Vj aG8gIiRhY19yZXMiID4mNjsgfQorICBpZiB0ZXN0IGBldmFsICdhc192YWw9 JHsnJGFzX2FjeF9Xb3B0aW9uJ307JGFzX2VjaG8gIiRhc192YWwiJ2AgPSB5 ZXM7IHRoZW4gOgorICBhY19saWJpYmVydHlfd2Fybl9jZmxhZ3M9IiRhY19s aWJpYmVydHlfd2Fybl9jZmxhZ3Mke2FjX2xpYmliZXJ0eV93YXJuX2NmbGFn czorIH0kcmVhbF9vcHRpb24iCitmaQogICBkb25lCi1JRlM9JGFzX3NhdmVf SUZTCi0gIGlmIHRlc3QgLXogIiRhY19jdl9wYXRoX0dSRVAiOyB0aGVuCi0g ICAgYXNfZm5fZXJyb3IgIm5vIGFjY2VwdGFibGUgZ3JlcCBjb3VsZCBiZSBm b3VuZCBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91c3IveHBnNC9iaW4iICIk TElORU5PIiA1Ci0gIGZpCitDRkxBR1M9IiRzYXZlX0NGTEFHUyIKKworIyBE byB0aGUgY2hlY2sgd2l0aCB0aGUgbm8tIHByZWZpeCByZW1vdmVkIGZyb20g dGhlIHdhcm5pbmcgb3B0aW9ucworIyBzaW5jZSBnY2Mgc2lsZW50bHkgYWNj ZXB0cyBhbnkgLVduby0qIG9wdGlvbiBvbiBwdXJwb3NlCitpZiB0ZXN0ICIk R0NDIiA9IHllczsgdGhlbiA6CisgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAkQ0Mgc3VwcG9y dHMgLXBlZGFudGljICIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0 aGVyICRDQyBzdXBwb3J0cyAtcGVkYW50aWMgLi4uICIgPiY2OyB9CitpZiB0 ZXN0ICIke2FjeF9jdl9wcm9nX2NjX3BlZGFudGljXytzZXR9IiA9IHNldDsg dGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCi0g IGFjX2N2X3BhdGhfR1JFUD0kR1JFUAorICBzYXZlX0NGTEFHUz0iJENGTEFH UyIKK0NGTEFHUz0iLXBlZGFudGljICIKK2NhdCBjb25mZGVmcy5oIC0gPDxf QUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAg Ki8KKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30K K19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRo ZW4gOgorICBhY3hfY3ZfcHJvZ19jY19wZWRhbnRpY189eWVzCitlbHNlCisg IGFjeF9jdl9wcm9nX2NjX3BlZGFudGljXz1ubworZmkKK3JtIC1mIGNvcmUg Y29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFj X2V4dAorQ0ZMQUdTPSIkc2F2ZV9DRkxBR1MiCitmaQoreyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY3hfY3Zf cHJvZ19jY19wZWRhbnRpY18iID4mNQorJGFzX2VjaG8gIiRhY3hfY3ZfcHJv Z19jY19wZWRhbnRpY18iID4mNjsgfQoraWYgdGVzdCAkYWN4X2N2X3Byb2df Y2NfcGVkYW50aWNfID0geWVzOyB0aGVuIDoKKyAgYWNfbGliaWJlcnR5X3dh cm5fY2ZsYWdzPSIkYWNfbGliaWJlcnR5X3dhcm5fY2ZsYWdzJHthY19saWJp YmVydHlfd2Fybl9jZmxhZ3M6KyB9LXBlZGFudGljICIKIGZpCiAKIGZpCi17 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs dDogJGFjX2N2X3BhdGhfR1JFUCIgPiY1Ci0kYXNfZWNobyAiJGFjX2N2X3Bh dGhfR1JFUCIgPiY2OyB9Ci0gR1JFUD0iJGFjX2N2X3BhdGhfR1JFUCIKIAog Ci17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNo ZWNraW5nIGZvciBlZ3JlcCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBm b3IgZWdyZXAuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcGF0aF9F R1JFUCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiB0ZXN0ICJ4JENDIiAhPSB4 Y2M7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBjaGVja2luZyB3aGV0aGVyICRDQyBhbmQgY2MgdW5kZXJzdGFu ZCAtYyBhbmQgLW8gdG9nZXRoZXIiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tp bmcgd2hldGhlciAkQ0MgYW5kIGNjIHVuZGVyc3RhbmQgLWMgYW5kIC1vIHRv Z2V0aGVyLi4uICIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBjYyB1 bmRlcnN0YW5kcyAtYyBhbmQgLW8gdG9nZXRoZXIiID4mNQorJGFzX2VjaG9f biAiY2hlY2tpbmcgd2hldGhlciBjYyB1bmRlcnN0YW5kcyAtYyBhbmQgLW8g dG9nZXRoZXIuLi4gIiA+JjY7IH0KK2ZpCitzZXQgZHVtbXkgJENDOyBhY19j Yz1gJGFzX2VjaG8gIiQyIiB8CisJCSAgICAgIHNlZCAncy9bXmEtekEtWjAt OV9dL18vZztzL15bMC05XS9fLydgCitpZiB7IGFzX3Zhcj1hY19jdl9wcm9n X2NjXyR7YWNfY2N9X2NfbzsgZXZhbCAidGVzdCBcIlwkeyRhc192YXIrc2V0 fVwiID0gc2V0IjsgfTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQp ICIgPiY2CiBlbHNlCi0gIGlmIGVjaG8gYSB8ICRHUkVQIC1FICcoYXxiKScg Pi9kZXYvbnVsbCAyPiYxCi0gICB0aGVuIGFjX2N2X3BhdGhfRUdSRVA9IiRH UkVQIC1FIgotICAgZWxzZQotICAgICBpZiB0ZXN0IC16ICIkRUdSRVAiOyB0 aGVuCi0gIGFjX3BhdGhfRUdSRVBfZm91bmQ9ZmFsc2UKLSAgIyBMb29wIHRo cm91Z2ggdGhlIHVzZXIncyBwYXRoIGFuZCB0ZXN0IGZvciBlYWNoIG9mIFBS T0dOQU1FLUxJU1QKLSAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NF UEFSQVRPUgotZm9yIGFzX2RpciBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91 c3IveHBnNC9iaW4KLWRvCi0gIElGUz0kYXNfc2F2ZV9JRlMKLSAgdGVzdCAt eiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICBmb3IgYWNfcHJvZyBpbiBl Z3JlcDsgZG8KLSAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1 dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgICAgIGFjX3BhdGhfRUdSRVA9IiRh c19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiCi0gICAgICB7IHRlc3QgLWYg IiRhY19wYXRoX0VHUkVQIiAmJiAkYXNfdGVzdF94ICIkYWNfcGF0aF9FR1JF UCI7IH0gfHwgY29udGludWUKLSMgQ2hlY2sgZm9yIEdOVSBhY19wYXRoX0VH UkVQIGFuZCBzZWxlY3QgaXQgaWYgaXQgaXMgZm91bmQuCi0gICMgQ2hlY2sg Zm9yIEdOVSAkYWNfcGF0aF9FR1JFUAotY2FzZSBgIiRhY19wYXRoX0VHUkVQ IiAtLXZlcnNpb24gMj4mMWAgaW4KLSpHTlUqKQotICBhY19jdl9wYXRoX0VH UkVQPSIkYWNfcGF0aF9FR1JFUCIgYWNfcGF0aF9FR1JFUF9mb3VuZD06OzsK LSopCi0gIGFjX2NvdW50PTAKLSAgJGFzX2VjaG9fbiAwMTIzNDU2Nzg5ID4i Y29uZnRlc3QuaW4iCi0gIHdoaWxlIDoKLSAgZG8KLSAgICBjYXQgImNvbmZ0 ZXN0LmluIiAiY29uZnRlc3QuaW4iID4iY29uZnRlc3QudG1wIgotICAgIG12 ICJjb25mdGVzdC50bXAiICJjb25mdGVzdC5pbiIKLSAgICBjcCAiY29uZnRl c3QuaW4iICJjb25mdGVzdC5ubCIKLSAgICAkYXNfZWNobyAnRUdSRVAnID4+ ICJjb25mdGVzdC5ubCIKLSAgICAiJGFjX3BhdGhfRUdSRVAiICdFR1JFUCQn IDwgImNvbmZ0ZXN0Lm5sIiA+ImNvbmZ0ZXN0Lm91dCIgMj4vZGV2L251bGwg fHwgYnJlYWsKLSAgICBkaWZmICJjb25mdGVzdC5vdXQiICJjb25mdGVzdC5u bCIgPi9kZXYvbnVsbCAyPiYxIHx8IGJyZWFrCi0gICAgYXNfZm5fYXJpdGgg JGFjX2NvdW50ICsgMSAmJiBhY19jb3VudD0kYXNfdmFsCi0gICAgaWYgdGVz dCAkYWNfY291bnQgLWd0ICR7YWNfcGF0aF9FR1JFUF9tYXgtMH07IHRoZW4K LSAgICAgICMgQmVzdCBvbmUgc28gZmFyLCBzYXZlIGl0IGJ1dCBrZWVwIGxv b2tpbmcgZm9yIGEgYmV0dGVyIG9uZQotICAgICAgYWNfY3ZfcGF0aF9FR1JF UD0iJGFjX3BhdGhfRUdSRVAiCi0gICAgICBhY19wYXRoX0VHUkVQX21heD0k YWNfY291bnQKLSAgICBmaQotICAgICMgMTAqKDJeMTApIGNoYXJzIGFzIGlu cHV0IHNlZW1zIG1vcmUgdGhhbiBlbm91Z2gKLSAgICB0ZXN0ICRhY19jb3Vu dCAtZ3QgMTAgJiYgYnJlYWsKLSAgZG9uZQotICBybSAtZiBjb25mdGVzdC5p biBjb25mdGVzdC50bXAgY29uZnRlc3QubmwgY29uZnRlc3Qub3V0OzsKKyAg Y2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAor LyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKwor ICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCisjIE1ha2Ugc3VyZSBpdCB3 b3JrcyBib3RoIHdpdGggJENDIGFuZCB3aXRoIHNpbXBsZSBjYy4KKyMgV2Ug ZG8gdGhlIHRlc3QgdHdpY2UgYmVjYXVzZSBzb21lIGNvbXBpbGVycyByZWZ1 c2UgdG8gb3ZlcndyaXRlIGFuCisjIGV4aXN0aW5nIC5vIGZpbGUgd2l0aCAt bywgdGhvdWdoIHRoZXkgd2lsbCBjcmVhdGUgb25lLgorYWNfdHJ5PSckQ0Mg LWMgY29uZnRlc3QuJGFjX2V4dCAtbyBjb25mdGVzdDIuJGFjX29iamV4dCA+ JjUnCitybSAtZiBjb25mdGVzdDIuKgoraWYgeyB7IGNhc2UgIigoJGFjX3Ry eSIgaW4KKyAgKlwiKiB8ICpcYCogfCAqXFwqKSBhY190cnlfZWNobz1cJGFj X3RyeTs7CisgICopIGFjX3RyeV9lY2hvPSRhY190cnk7OworZXNhYworZXZh bCBhY190cnlfZWNobz0iXCJcJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiAkYWNfdHJ5X2VjaG9cIiIKKyRhc19lY2hvICIkYWNfdHJ5X2VjaG8iOyB9 ID4mNQorICAoZXZhbCAiJGFjX3RyeSIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/ CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwk PyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9 ICYmCisgICB0ZXN0IC1mIGNvbmZ0ZXN0Mi4kYWNfb2JqZXh0ICYmIHsgeyBj YXNlICIoKCRhY190cnkiIGluCisgICpcIiogfCAqXGAqIHwgKlxcKikgYWNf dHJ5X2VjaG89XCRhY190cnk7OworICAqKSBhY190cnlfZWNobz0kYWNfdHJ5 OzsKK2VzYWMKK2V2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCiskYXNfZWNobyAiJGFj X3RyeV9lY2hvIjsgfSA+JjUKKyAgKGV2YWwgIiRhY190cnkiKSAyPiY1Cisg IGFjX3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNf c3RhdHVzID0gMDsgfTsKK3RoZW4KKyAgZXZhbCBhY19jdl9wcm9nX2NjXyR7 YWNfY2N9X2Nfbz15ZXMKKyAgaWYgdGVzdCAieCRDQyIgIT0geGNjOyB0aGVu CisgICAgIyBUZXN0IGZpcnN0IHRoYXQgY2MgZXhpc3RzIGF0IGFsbC4KKyAg ICBpZiB7IGFjX3RyeT0nY2MgLWMgY29uZnRlc3QuJGFjX2V4dCA+JjUnCisg IHsgeyBjYXNlICIoKCRhY190cnkiIGluCisgICpcIiogfCAqXGAqIHwgKlxc KikgYWNfdHJ5X2VjaG89XCRhY190cnk7OworICAqKSBhY190cnlfZWNobz0k YWNfdHJ5OzsKIGVzYWMKLQotICAgICAgJGFjX3BhdGhfRUdSRVBfZm91bmQg JiYgYnJlYWsgMwotICAgIGRvbmUKLSAgZG9uZQotICBkb25lCi1JRlM9JGFz X3NhdmVfSUZTCi0gIGlmIHRlc3QgLXogIiRhY19jdl9wYXRoX0VHUkVQIjsg dGhlbgotICAgIGFzX2ZuX2Vycm9yICJubyBhY2NlcHRhYmxlIGVncmVwIGNv dWxkIGJlIGZvdW5kIGluICRQQVRIJFBBVEhfU0VQQVJBVE9SL3Vzci94cGc0 L2JpbiIgIiRMSU5FTk8iIDUKK2V2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCiskYXNf ZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKKyAgKGV2YWwgIiRhY190cnki KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAg dGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgfTsgdGhlbgorICAgICAgYWNfdHJ5 PSdjYyAtYyBjb25mdGVzdC4kYWNfZXh0IC1vIGNvbmZ0ZXN0Mi4kYWNfb2Jq ZXh0ID4mNScKKyAgICAgIHJtIC1mIGNvbmZ0ZXN0Mi4qCisgICAgICBpZiB7 IHsgY2FzZSAiKCgkYWNfdHJ5IiBpbgorICAqXCIqIHwgKlxgKiB8ICpcXCop IGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsKKyAgKikgYWNfdHJ5X2VjaG89JGFj X3RyeTs7Citlc2FjCitldmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306ICRhY190cnlfZWNob1wiIgorJGFzX2VjaG8g IiRhY190cnlfZWNobyI7IH0gPiY1CisgIChldmFsICIkYWNfdHJ5IikgMj4m NQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3Qg JGFjX3N0YXR1cyA9IDA7IH0gJiYKKwkgdGVzdCAtZiBjb25mdGVzdDIuJGFj X29iamV4dCAmJiB7IHsgY2FzZSAiKCgkYWNfdHJ5IiBpbgorICAqXCIqIHwg KlxgKiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsKKyAgKikgYWNf dHJ5X2VjaG89JGFjX3RyeTs7Citlc2FjCitldmFsIGFjX3RyeV9lY2hvPSJc IlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRhY190cnlfZWNob1wi IgorJGFzX2VjaG8gIiRhY190cnlfZWNobyI7IH0gPiY1CisgIChldmFsICIk YWNfdHJ5IikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIg PiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07CisgICAgICB0aGVuCisJ IyBjYyB3b3JrcyB0b28uCisJOgorICAgICAgZWxzZQorCSMgY2MgZXhpc3Rz IGJ1dCBkb2Vzbid0IGxpa2UgLW8uCisJZXZhbCBhY19jdl9wcm9nX2NjXyR7 YWNfY2N9X2Nfbz1ubworICAgICAgZmkKKyAgICBmaQogICBmaQogZWxzZQot ICBhY19jdl9wYXRoX0VHUkVQPSRFR1JFUAorICBldmFsIGFjX2N2X3Byb2df Y2NfJHthY19jY31fY19vPW5vCiBmaQorcm0gLWYgY29yZSBjb25mdGVzdCoK IAotICAgZmkKIGZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IHJlc3VsdDogJGFjX2N2X3BhdGhfRUdSRVAiID4mNQotJGFz X2VjaG8gIiRhY19jdl9wYXRoX0VHUkVQIiA+JjY7IH0KLSBFR1JFUD0iJGFj X2N2X3BhdGhfRUdSRVAiCitpZiBldmFsIHRlc3QgXCRhY19jdl9wcm9nX2Nj XyR7YWNfY2N9X2NfbyA9IHllczsgdGhlbgorICB7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKKyRh c19lY2hvICJ5ZXMiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFz X2VjaG8gIm5vIiA+JjY7IH0KIAorJGFzX2VjaG8gIiNkZWZpbmUgTk9fTUlO VVNfQ19NSU5VU19PIDEiID4+Y29uZmRlZnMuaAogCi17ICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBBTlNJ IEMgaGVhZGVyIGZpbGVzIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZv ciBBTlNJIEMgaGVhZGVyIGZpbGVzLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIk e2FjX2N2X2hlYWRlcl9zdGRjK3NldH0iID0gc2V0OyB0aGVuIDoKK2ZpCisK KyMgYXV0b2NvbmYgaXMgbGFtZSBhbmQgZG9lc24ndCBnaXZlIHVzIGFueSBz dWJzdGl0dXRpb24gdmFyaWFibGUgZm9yIHRoaXMuCitpZiBldmFsICJ0ZXN0 IFwiYGVjaG8gJyRhY19jdl9wcm9nX2NjXycke2FjX2NjfV9jX29gXCIgPSBu byI7IHRoZW4KKyAgTk9fTUlOVVNfQ19NSU5VU19PPXllcworZWxzZQorICBP VVRQVVRfT1BUSU9OPSctbyAkQCcKK2ZpCisKKworCit7ICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhbiBB TlNJIEMtY29uZm9ybWluZyBjb25zdCIgPiY1CiskYXNfZWNob19uICJjaGVj a2luZyBmb3IgYW4gQU5TSSBDLWNvbmZvcm1pbmcgY29uc3QuLi4gIiA+JjY7 IH0KK2lmIHRlc3QgIiR7YWNfY3ZfY19jb25zdCtzZXR9IiA9IHNldDsgdGhl biA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGNh dCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8q IGVuZCBjb25mZGVmcy5oLiAgKi8KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNp bmNsdWRlIDxzdGRhcmcuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNs dWRlIDxmbG9hdC5oPgogCiBpbnQKIG1haW4gKCkKIHsKKy8qIEZJWE1FOiBJ bmNsdWRlIHRoZSBjb21tZW50cyBzdWdnZXN0ZWQgYnkgUGF1bC4gKi8KKyNp Zm5kZWYgX19jcGx1c3BsdXMKKyAgLyogVWx0cml4IG1pcHMgY2MgcmVqZWN0 cyB0aGlzLiAgKi8KKyAgdHlwZWRlZiBpbnQgY2hhcnNldFsyXTsKKyAgY29u c3QgY2hhcnNldCBjczsKKyAgLyogU3VuT1MgNC4xLjEgY2MgcmVqZWN0cyB0 aGlzLiAgKi8KKyAgY2hhciBjb25zdCAqY29uc3QgKnBjcGNjOworICBjaGFy ICoqcHBjOworICAvKiBORUMgU1ZSNC4wLjIgbWlwcyBjYyByZWplY3RzIHRo aXMuICAqLworICBzdHJ1Y3QgcG9pbnQge2ludCB4LCB5O307CisgIHN0YXRp YyBzdHJ1Y3QgcG9pbnQgY29uc3QgemVybyA9IHswLDB9OworICAvKiBBSVgg WEwgQyAxLjAyLjAuMCByZWplY3RzIHRoaXMuCisgICAgIEl0IGRvZXMgbm90 IGxldCB5b3Ugc3VidHJhY3Qgb25lIGNvbnN0IFgqIHBvaW50ZXIgZnJvbSBh bm90aGVyIGluCisgICAgIGFuIGFybSBvZiBhbiBpZi1leHByZXNzaW9uIHdo b3NlIGlmLXBhcnQgaXMgbm90IGEgY29uc3RhbnQKKyAgICAgZXhwcmVzc2lv biAqLworICBjb25zdCBjaGFyICpnID0gInN0cmluZyI7CisgIHBjcGNjID0g JmcgKyAoZyA/IGctZyA6IDApOworICAvKiBIUFVYIDcuMCBjYyByZWplY3Rz IHRoZXNlLiAqLworICArK3BjcGNjOworICBwcGMgPSAoY2hhcioqKSBwY3Bj YzsKKyAgcGNwY2MgPSAoY2hhciBjb25zdCAqY29uc3QgKikgcHBjOworICB7 IC8qIFNDTyAzLjJ2NCBjYyByZWplY3RzIHRoaXMuICAqLworICAgIGNoYXIg KnQ7CisgICAgY2hhciBjb25zdCAqcyA9IDAgPyAoY2hhciAqKSAwIDogKGNo YXIgY29uc3QgKikgMDsKKworICAgICp0KysgPSAwOworICAgIGlmIChzKSBy ZXR1cm4gMDsKKyAgfQorICB7IC8qIFNvbWVvbmUgdGhpbmtzIHRoZSBTdW4g c3VwcG9zZWRseS1BTlNJIGNvbXBpbGVyIHdpbGwgcmVqZWN0IHRoaXMuICAq LworICAgIGludCB4W10gPSB7MjUsIDE3fTsKKyAgICBjb25zdCBpbnQgKmZv byA9ICZ4WzBdOworICAgICsrZm9vOworICB9CisgIHsgLyogU3VuIFNDMS4w IEFOU0kgY29tcGlsZXIgcmVqZWN0cyB0aGlzIC0tIGJ1dCBub3QgdGhlIGFi b3ZlLiAqLworICAgIHR5cGVkZWYgY29uc3QgaW50ICppcHRyOworICAgIGlw dHIgcCA9IDA7CisgICAgKytwOworICB9CisgIHsgLyogQUlYIFhMIEMgMS4w Mi4wLjAgcmVqZWN0cyB0aGlzIHNheWluZworICAgICAgICJrLmMiLCBsaW5l IDIuMjc6IDE1MDYtMDI1IChTKSBPcGVyYW5kIG11c3QgYmUgYSBtb2RpZmlh YmxlIGx2YWx1ZS4gKi8KKyAgICBzdHJ1Y3QgcyB7IGludCBqOyBjb25zdCBp bnQgKmFwWzNdOyB9OworICAgIHN0cnVjdCBzICpiOyBiLT5qID0gNTsKKyAg fQorICB7IC8qIFVMVFJJWC0zMiBWMy4xIChSZXYgOSkgdmNjIHJlamVjdHMg dGhpcyAqLworICAgIGNvbnN0IGludCBmb28gPSAxMDsKKyAgICBpZiAoIWZv bykgcmV0dXJuIDA7CisgIH0KKyAgcmV0dXJuICFjc1swXSAmJiAhemVyby54 OworI2VuZGlmCiAKICAgOwogICByZXR1cm4gMDsKIH0KIF9BQ0VPRgogaWYg YWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotICBhY19j dl9oZWFkZXJfc3RkYz15ZXMKKyAgYWNfY3ZfY19jb25zdD15ZXMKIGVsc2UK LSAgYWNfY3ZfaGVhZGVyX3N0ZGM9bm8KKyAgYWNfY3ZfY19jb25zdD1ubwog ZmkKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpl eHQgY29uZnRlc3QuJGFjX2V4dAotCi1pZiB0ZXN0ICRhY19jdl9oZWFkZXJf c3RkYyA9IHllczsgdGhlbgotICAjIFN1bk9TIDQueCBzdHJpbmcuaCBkb2Vz IG5vdCBkZWNsYXJlIG1lbSosIGNvbnRyYXJ5IHRvIEFOU0kuCi0gIGNhdCBj b25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVu ZCBjb25mZGVmcy5oLiAgKi8KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotX0FD RU9GCi1pZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4m NSB8Ci0gICRFR1JFUCAibWVtY2hyIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4g OgotCi1lbHNlCi0gIGFjX2N2X2hlYWRlcl9zdGRjPW5vCi1maQotcm0gLWYg Y29uZnRlc3QqCi0KIGZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2NfY29uc3QiID4mNQorJGFz X2VjaG8gIiRhY19jdl9jX2NvbnN0IiA+JjY7IH0KK2lmIHRlc3QgJGFjX2N2 X2NfY29uc3QgPSBubzsgdGhlbgogCi1pZiB0ZXN0ICRhY19jdl9oZWFkZXJf c3RkYyA9IHllczsgdGhlbgotICAjIElTQyAyLjAuMiBzdGRsaWIuaCBkb2Vz IG5vdCBkZWNsYXJlIGZyZWUsIGNvbnRyYXJ5IHRvIEFOU0kuCi0gIGNhdCBj b25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVu ZCBjb25mZGVmcy5oLiAgKi8KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLQotX0FD RU9GCi1pZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4m NSB8Ci0gICRFR1JFUCAiZnJlZSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoK LQotZWxzZQotICBhY19jdl9oZWFkZXJfc3RkYz1ubwotZmkKLXJtIC1mIGNv bmZ0ZXN0KgorJGFzX2VjaG8gIiNkZWZpbmUgY29uc3QgLyoqLyIgPj5jb25m ZGVmcy5oCiAKIGZpCiAKLWlmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0g eWVzOyB0aGVuCi0gICMgL2Jpbi9jYyBpbiBJcml4LTQuMC41IGdldHMgbm9u LUFOU0kgY3R5cGUgbWFjcm9zIHVubGVzcyB1c2luZyAtYW5zaS4KLSAgaWYg dGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgotICA6Cit7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIGZvciBpbmxpbmUiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9y IGlubGluZS4uLiAiID4mNjsgfQoraWYgdGVzdCAiJHthY19jdl9jX2lubGlu ZStzZXR9IiA9IHNldDsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQp ICIgPiY2CiBlbHNlCisgIGFjX2N2X2NfaW5saW5lPW5vCitmb3IgYWNfa3cg aW4gaW5saW5lIF9faW5saW5lX18gX19pbmxpbmU7IGRvCiAgIGNhdCBjb25m ZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBj b25mZGVmcy5oLiAgKi8KLSNpbmNsdWRlIDxjdHlwZS5oPgotI2luY2x1ZGUg PHN0ZGxpYi5oPgotI2lmICgoJyAnICYgMHgwRkYpID09IDB4MDIwKQotIyBk ZWZpbmUgSVNMT1dFUihjKSAoJ2EnIDw9IChjKSAmJiAoYykgPD0gJ3onKQot IyBkZWZpbmUgVE9VUFBFUihjKSAoSVNMT1dFUihjKSA/ICdBJyArICgoYykg LSAnYScpIDogKGMpKQotI2Vsc2UKLSMgZGVmaW5lIElTTE9XRVIoYykgXAot CQkgICAoKCdhJyA8PSAoYykgJiYgKGMpIDw9ICdpJykgXAotCQkgICAgIHx8 ICgnaicgPD0gKGMpICYmIChjKSA8PSAncicpIFwKLQkJICAgICB8fCAoJ3Mn IDw9IChjKSAmJiAoYykgPD0gJ3onKSkKLSMgZGVmaW5lIFRPVVBQRVIoYykg KElTTE9XRVIoYykgPyAoKGMpIHwgMHg0MCkgOiAoYykpCisjaWZuZGVmIF9f Y3BsdXNwbHVzCit0eXBlZGVmIGludCBmb29fdDsKK3N0YXRpYyAkYWNfa3cg Zm9vX3Qgc3RhdGljX2ZvbyAoKSB7cmV0dXJuIDA7IH0KKyRhY19rdyBmb29f dCBmb28gKCkge3JldHVybiAwOyB9CiAjZW5kaWYKIAotI2RlZmluZSBYT1Io ZSwgZikgKCgoZSkgJiYgIShmKSkgfHwgKCEoZSkgJiYgKGYpKSkKLWludAot bWFpbiAoKQotewotICBpbnQgaTsKLSAgZm9yIChpID0gMDsgaSA8IDI1Njsg aSsrKQotICAgIGlmIChYT1IgKGlzbG93ZXIgKGkpLCBJU0xPV0VSIChpKSkK LQl8fCB0b3VwcGVyIChpKSAhPSBUT1VQUEVSIChpKSkKLSAgICAgIHJldHVy biAyOwotICByZXR1cm4gMDsKLX0KIF9BQ0VPRgotaWYgYWNfZm5fY190cnlf cnVuICIkTElORU5PIjsgdGhlbiA6Ci0KLWVsc2UKLSAgYWNfY3ZfaGVhZGVy X3N0ZGM9bm8KLWZpCi1ybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0 LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCi0gIGNv bmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNf ZXh0Ci1maQotCi1maQoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVO TyI7IHRoZW4gOgorICBhY19jdl9jX2lubGluZT0kYWNfa3cKIGZpCi17ICRh c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog JGFjX2N2X2hlYWRlcl9zdGRjIiA+JjUKLSRhc19lY2hvICIkYWNfY3ZfaGVh ZGVyX3N0ZGMiID4mNjsgfQotaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0ZGMg PSB5ZXM7IHRoZW4KLQotJGFzX2VjaG8gIiNkZWZpbmUgU1REQ19IRUFERVJT IDEiID4+Y29uZmRlZnMuaAorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29u ZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisgIHRlc3QgIiRh Y19jdl9jX2lubGluZSIgIT0gbm8gJiYgYnJlYWsKK2RvbmUKIAogZmkKK3sg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0 OiAkYWNfY3ZfY19pbmxpbmUiID4mNQorJGFzX2VjaG8gIiRhY19jdl9jX2lu bGluZSIgPiY2OyB9CiAKLSMgT24gSVJJWCA1LjMsIHN5cy90eXBlcyBhbmQg aW50dHlwZXMuaCBhcmUgY29uZmxpY3RpbmcuCi1mb3IgYWNfaGVhZGVyIGlu IHN5cy90eXBlcy5oIHN5cy9zdGF0Lmggc3RkbGliLmggc3RyaW5nLmggbWVt b3J5Lmggc3RyaW5ncy5oIFwKLQkJICBpbnR0eXBlcy5oIHN0ZGludC5oIHVu aXN0ZC5oCi1kbyA6Ci0gIGFzX2FjX0hlYWRlcj1gJGFzX2VjaG8gImFjX2N2 X2hlYWRlcl8kYWNfaGVhZGVyIiB8ICRhc190cl9zaGAKLWFjX2ZuX2NfY2hl Y2tfaGVhZGVyX3ByZXByb2MgIiRMSU5FTk8iICIkYWNfaGVhZGVyIiAiJGFz X2FjX0hlYWRlciIKLWV2YWwgYXNfdmFsPVwkJGFzX2FjX0hlYWRlcgotICAg aWYgdGVzdCAieCRhc192YWwiID0geCIieWVzOyB0aGVuIDoKLSAgY2F0ID4+ Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSBgJGFzX2VjaG8gIkhBVkVf JGFjX2hlYWRlciIgfCAkYXNfdHJfY3BwYCAxCitjYXNlICRhY19jdl9jX2lu bGluZSBpbgorICBpbmxpbmUgfCB5ZXMpIDs7CisgICopCisgICAgY2FzZSAk YWNfY3ZfY19pbmxpbmUgaW4KKyAgICAgIG5vKSBhY192YWw9OzsKKyAgICAg ICopIGFjX3ZhbD0kYWNfY3ZfY19pbmxpbmU7OworICAgIGVzYWMKKyAgICBj YXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjaWZuZGVmIF9fY3BsdXNwbHVz CisjZGVmaW5lIGlubGluZSAkYWNfdmFsCisjZW5kaWYKIF9BQ0VPRgotCi1m aQotZG9uZQotCisgICAgOzsKK2VzYWMKIAogIHsgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBieXRl IG9yZGVyaW5nIGlzIGJpZ2VuZGlhbiIgPiY1CiAkYXNfZWNob19uICJjaGVj a2luZyB3aGV0aGVyIGJ5dGUgb3JkZXJpbmcgaXMgYmlnZW5kaWFuLi4uICIg PiY2OyB9CmRpZmYgLS1naXQgYS9saWJpYmVydHkvY29uZmlndXJlLmFjIGIv bGliaWJlcnR5L2NvbmZpZ3VyZS5hYwppbmRleCA5MjJhYTg2Li44NjhiZThl IDEwMDY0NAotLS0gYS9saWJpYmVydHkvY29uZmlndXJlLmFjCisrKyBiL2xp YmliZXJ0eS9jb25maWd1cmUuYWMKQEAgLTE1NSw2ICsxNTUsNyBAQCBBQ19N U0dfTk9USUNFKFt0YXJnZXRfaGVhZGVyX2RpciA9ICR0YXJnZXRfaGVhZGVy X2Rpcl0pCiAKIEdDQ19OT19FWEVDVVRBQkxFUwogQUNfUFJPR19DQworQUNf R05VX1NPVVJDRQogQUNfU1lTX0xBUkdFRklMRQogQUNfUFJPR19DUFBfV0VS Uk9SCiAKZGlmZiAtLWdpdCBhL2xpYmliZXJ0eS9mbG9hdGZvcm1hdC5jIGIv bGliaWJlcnR5L2Zsb2F0Zm9ybWF0LmMKaW5kZXggNzg5ZmEwNS4uOTE5MGUx NCAxMDA2NDQKLS0tIGEvbGliaWJlcnR5L2Zsb2F0Zm9ybWF0LmMKKysrIGIv bGliaWJlcnR5L2Zsb2F0Zm9ybWF0LmMKQEAgLTEsNSArMSw1IEBACiAvKiBJ RUVFIGZsb2F0aW5nIHBvaW50IHN1cHBvcnQgcm91dGluZXMsIGZvciBHREIs IHRoZSBHTlUgRGVidWdnZXIuCi0gICBDb3B5cmlnaHQgMTk5MSwgMTk5NCwg MTk5OSwgMjAwMCwgMjAwMywgMjAwNSwgMjAwNiwgMjAxMCwgMjAxMgorICAg Q29weXJpZ2h0IDE5OTEsIDE5OTQsIDE5OTksIDIwMDAsIDIwMDMsIDIwMDUs IDIwMDYsIDIwMTAsIDIwMTIsIDIwMTUKICAgIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgogCiBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCkBA IC0xOSw3ICsxOSw5IEBAIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBu b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiBGb3VuZGF0aW9uLCBJ bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQgLSBGaWZ0aCBGbG9vciwgQm9zdG9u LCBNQSAwMjExMC0xMzAxLCBVU0EuICAqLwogCiAvKiBUaGlzIGlzIG5lZWRl ZCB0byBwaWNrIHVwIHRoZSBOQU4gbWFjcm8gb24gc29tZSBzeXN0ZW1zLiAg Ki8KKyNpZm5kZWYgX0dOVV9TT1VSQ0UKICNkZWZpbmUgX0dOVV9TT1VSQ0UK KyNlbmRpZgogCiAjaWZkZWYgSEFWRV9DT05GSUdfSAogI2luY2x1ZGUgImNv bmZpZy5oIgotLSAKMi4yLjAucmMwLjIwNy5nYTNhNjE2YwoK --20cf3011d9bb97f95005171305ac--