From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x429.google.com (mail-wr1-x429.google.com [IPv6:2a00:1450:4864:20::429]) by sourceware.org (Postfix) with ESMTPS id 0C9263858C62 for ; Thu, 18 May 2023 18:06:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0C9263858C62 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-wr1-x429.google.com with SMTP id ffacd0b85a97d-307d20548adso1577231f8f.0 for ; Thu, 18 May 2023 11:06:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1684433175; x=1687025175; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=veQgTZV63sPsRSvOyC1w39qInGArE30k52VDoH8JPgw=; b=nlsurTr+D5Vt/9hfzHesehc1RmBkb1DDFqvyReWnyhTolix5gEuqraXCLw8bjIdicm h+qGcYlULFOgn1bqeDtFLiNC4YayQYbq1ncaukfvdZaTVBaMzFIZy+FqByUHH9EvaT19 Uwe7f2yAJoIhJcDA5ZbbnYd1jJnhaGF+QDLit66xgd1ssVqR/Y9uYRBaH5/5eBjeRGVP Z+Yh0T39QCOAr0HEXcjrEtNfitE3gpxnILTGRuzCsE/Dz4GLn7GLVcBA6pAB5BERPLgA fQi8+AbNDYdQc0EuG/R1NkG7/EJtFv9kokezF/A0cyDYgTb9diT7WAIbgnURVCeGOCET RiEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684433175; x=1687025175; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=veQgTZV63sPsRSvOyC1w39qInGArE30k52VDoH8JPgw=; b=Xphtl9ihBYHo9kDvqbMCs01Qqf/rQLp01DLnooS1E18uT5NwRu2Wvd4dREFJEmwcPF qSh4W8SfWK3yAf12pRtU9NbYv1nqYqD5jrxBwSQjvAmRJplFb/Hrps7obDv17Inz1S2o jIwEw7yo1dfobxoqoYWi+kEJct+GflFPyoc53/1Q1SPmdEQhbXBvxEPKFAUTl9eTHIt/ ll2MyBPQ/R87F8pbagerdqoyXaQ9ut6T8gGi+VgR6JeXxPRuf96J5+LBjYv43GSvMRS4 R/rFXT/CLL1+4u2dy5t7MrBZ3fArfx25RtMEgcwwCKXOak/ELj/OeETHCpRV/Ie/AF/D 97Cg== X-Gm-Message-State: AC+VfDzDp2mJydlknCivSHToXHtB6RmvZHK0RgeO3wh4Be8QpaKMxWgY jeltVI0cpd7oXcs1sVdElGJ0oRfCIlQ= X-Google-Smtp-Source: ACHHUZ7a+uT2hVIo7mFb1oL71//ZrMvj/1SrEKQj9zUaRjrxc1sO5ZxIOO+ZVgPR/hbeC2mXtbh2YA== X-Received: by 2002:a5d:4cd1:0:b0:306:3021:2304 with SMTP id c17-20020a5d4cd1000000b0030630212304mr2198720wrt.60.1684433174318; Thu, 18 May 2023 11:06:14 -0700 (PDT) Received: from [192.168.43.80] ([37.29.170.63]) by smtp.gmail.com with ESMTPSA id 13-20020a05600c024d00b003f42813b315sm5965520wmj.32.2023.05.18.11.06.11 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 18 May 2023 11:06:13 -0700 (PDT) Message-ID: Date: Thu, 18 May 2023 20:06:00 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 Subject: Re: [PATCH] libio: Add nonnull attribute for most FILE * arguments in stdio.h Content-Language: en-US To: Xi Ruoyao , libc-alpha@sourceware.org Cc: Adhemerval Zanella Netto , Carlos O'Donell References: <20230518172511.2130831-1-xry111@xry111.site> From: Alex Colomar In-Reply-To: <20230518172511.2130831-1-xry111@xry111.site> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------I500Zc0lA6Tlp2jHiLlGcSmP" X-Spam-Status: No, score=-12.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------I500Zc0lA6Tlp2jHiLlGcSmP Content-Type: multipart/mixed; boundary="------------fo0KNhKsYsUPOg5BBsWkpbIs"; protected-headers="v1" From: Alex Colomar To: Xi Ruoyao , libc-alpha@sourceware.org Cc: Adhemerval Zanella Netto , Carlos O'Donell Message-ID: Subject: Re: [PATCH] libio: Add nonnull attribute for most FILE * arguments in stdio.h References: <20230518172511.2130831-1-xry111@xry111.site> In-Reply-To: <20230518172511.2130831-1-xry111@xry111.site> --------------fo0KNhKsYsUPOg5BBsWkpbIs Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGkgWGkhDQoNCk9uIDUvMTgvMjMgMTk6MjUsIFhpIFJ1b3lhbyB2aWEgTGliYy1hbHBoYSB3 cm90ZToNCj4gRHVyaW5nIHRoZSByZXZpZXcgb2YgYSBHQ0MgYW5hbHl6ZXIgdGVzdCBjYXNl LCB3ZSBmb3VuZCBtb3N0IHN0ZGlvDQo+IGZ1bmN0aW9ucyBhY2NlcHRpbmcgYSBGSUxFICog YXJndW1lbnQgZXhwZWN0IGl0IHRvIGJlIG5vbm51bGwgYW5kIGp1c3QNCj4gc2VnZmF1bHQg d2hlbiB0aGUgYXJndW1lbnQgaXMgTlVMTC4gIEFkZCBub25udWxsIGF0dHJpYnV0ZSBmb3Ig dGhlbS4NCj4gDQo+IHNldGJ1ZiBpcyB3ZWxsIGRlZmluZWQgd2hlbiBfX3N0cmVhbSBpcyBO VUxMIHNvIGl0J3Mgbm90IHRvdWNoZWQuDQo+IA0KPiBGb3IgZnB1dHMsIGZnZXRzLCBmcmVh ZCwgZndyaXRlLCBmcHJpbnRmLCB2ZnByaW50ZiwgYW5kIHRoZWlyIHVubG9ja2VkDQo+IHZl cnNpb24sIGlmIF9fc3RyZWFtIGlzIGVtcHR5IGJ1dCB0aGVyZSBpcyBub3RoaW5nIHRvIHJl YWQgb3Igd3JpdGUsDQo+IHRoZXkgZG9uJ3Qgc2VnZmF1bHQgYW5kIEknbSBub3Qgc3VyZSBp ZiB0aGUgc3RhbmRhcmQgYWxsb3dzIHN1Y2ggYSB1c2UNCj4gc28gSSBsZWZ0IHRoZW0gb3V0 Lg0KPiAtLS0NCj4gICBsaWJpby9zdGRpby5oIHwgMTE5ICsrKysrKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICAgMSBmaWxlIGNoYW5nZWQsIDYy IGluc2VydGlvbnMoKyksIDU3IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2xp YmlvL3N0ZGlvLmggYi9saWJpby9zdGRpby5oDQo+IGluZGV4IDRjZjlmMWMwMTIuLmFlM2Q3 Mjk1ZDQgMTAwNjQ0DQo+IC0tLSBhL2xpYmlvL3N0ZGlvLmgNCj4gKysrIGIvbGliaW8vc3Rk aW8uaA0KPiBAQCAtMjMyLDcgKzIzMiw3IEBAIGV4dGVybiBjaGFyICp0ZW1wbmFtIChjb25z dCBjaGFyICpfX2RpciwgY29uc3QgY2hhciAqX19wZngpDQo+ICAgDQo+ICAgICAgVGhpcyBm dW5jdGlvbiBpcyBhIHBvc3NpYmxlIGNhbmNlbGxhdGlvbiBwb2ludCBhbmQgdGhlcmVmb3Jl IG5vdA0KPiAgICAgIG1hcmtlZCB3aXRoIF9fVEhST1cuICAqLw0KPiAtZXh0ZXJuIGludCBm Zmx1c2ggKEZJTEUgKl9fc3RyZWFtKTsNCj4gK2V4dGVybiBpbnQgZmZsdXNoIChGSUxFICpf X3N0cmVhbSkgX19ub25udWxsICgoMSkpOw0KDQpmbHVzaChOVUxMKSBpcyB3ZWxsIGRlZmlu ZWQuICBJdCBmbHVzaGVzIGFsbCBzdHJlYW1zIHRoYXQgY2FuIGJlDQpmbHVzaGVkLiAgVGhp cyByZW1pbmRzIG1lIHRoYXQgSSBzaG91bGQgZG9jdW1lbnQgdGhhdCBpbiB0aGUgU1lOT1BT SVMNCnNlY3Rpb24gb2YgdGhlIG1hbnVhbCBwYWdlOyBhbiBvdmVyc2lnaHQgb24gbXkgc2lk ZS4NCg0KPiAgIA0KPiAgICNpZmRlZiBfX1VTRV9NSVNDDQo+ICAgLyogRmFzdGVyIHZlcnNp b25zIHdoZW4gbG9ja2luZyBpcyBub3QgcmVxdWlyZWQuDQo+IEBAIC0yNDEsNyArMjQxLDcg QEAgZXh0ZXJuIGludCBmZmx1c2ggKEZJTEUgKl9fc3RyZWFtKTsNCj4gICAgICBjYW5jZWxs YXRpb24gcG9pbnQuICBCdXQgZHVlIHRvIHNpbWlsYXJpdHkgd2l0aCBhbiBQT1NJWCBpbnRl cmZhY2UNCj4gICAgICBvciBkdWUgdG8gdGhlIGltcGxlbWVudGF0aW9uIGl0IGlzIGEgY2Fu Y2VsbGF0aW9uIHBvaW50IGFuZA0KPiAgICAgIHRoZXJlZm9yZSBub3QgbWFya2VkIHdpdGgg X19USFJPVy4gICovDQo+IC1leHRlcm4gaW50IGZmbHVzaF91bmxvY2tlZCAoRklMRSAqX19z dHJlYW0pOw0KPiArZXh0ZXJuIGludCBmZmx1c2hfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFt KSBfX25vbm51bGwgKCgxKSk7DQoNCldpdGhvdXQgY2hlY2tpbmcsIEknbGwgZ3Vlc3MgdGhh dCBmZmx1c2hfdW5sb2NrZWQoTlVMTCkgaXMgYWxzbyB3ZWxsDQpkZWZpbmVkLg0KDQpJIGRp ZG4ndCBzZWUgYW55IG90aGVyIHNpbWlsYXIgY2FzZXMsIGJ1dCBJIG1heSBoYXZlIG1pc3Nl ZCBzb21lOyBJDQpkaWRuJ3QgcmV2aXNlIHRoZW0gYWxsIHRob3JvdWdobHk7IHBsZWFzZSBj aGVjay4NCg0KPiAgICNlbmRpZg0KPiAgIA0KPiAgICNpZmRlZiBfX1VTRV9HTlUNCj4gQEAg LTI3OCw3ICsyNzgsNyBAQCBleHRlcm4gRklMRSAqX19SRURJUkVDVCAoZm9wZW4sIChjb25z dCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsDQo+ICAgZXh0ZXJuIEZJTEUgKl9fUkVE SVJFQ1QgKGZyZW9wZW4sIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsDQo+ ICAgCQkJCSAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcywNCj4gICAJCQkJICAg RklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSksIGZyZW9wZW42NCkNCj4gLSAgX193dXI7DQo+ ICsgIF9fd3VyIF9fbm9ubnVsbCAoKDMpKTsNCj4gICAjIGVsc2UNCj4gICAjICBkZWZpbmUg Zm9wZW4gZm9wZW42NA0KPiAgICMgIGRlZmluZSBmcmVvcGVuIGZyZW9wZW42NA0KPiBAQCAt MzM1LDE2ICszMzUsMTYgQEAgZXh0ZXJuIHZvaWQgc2V0YnVmIChGSUxFICpfX3Jlc3RyaWN0 IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKSBfX1RIUk9XOw0KPiAgICAgIElm IEJVRiBpcyBub3QgTlVMTCwgdXNlIE4gYnl0ZXMgb2YgaXQgZm9yIGJ1ZmZlcmluZzsNCj4g ICAgICBlbHNlIGFsbG9jYXRlIGFuIGludGVybmFsIGJ1ZmZlciBOIGJ5dGVzIGxvbmcuICAq Lw0KPiAgIGV4dGVybiBpbnQgc2V0dmJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwg Y2hhciAqX19yZXN0cmljdCBfX2J1ZiwNCj4gLQkJICAgIGludCBfX21vZGVzLCBzaXplX3Qg X19uKSBfX1RIUk9XOw0KPiArCQkgICAgaW50IF9fbW9kZXMsIHNpemVfdCBfX24pIF9fVEhS T1cgX19ub25udWxsICgoMSkpOw0KPiAgIA0KPiAgICNpZmRlZglfX1VTRV9NSVNDDQo+ICAg LyogSWYgQlVGIGlzIE5VTEwsIG1ha2UgU1RSRUFNIHVuYnVmZmVyZWQuDQo+ICAgICAgRWxz ZSBtYWtlIGl0IHVzZSBTSVpFIGJ5dGVzIG9mIEJVRiBmb3IgYnVmZmVyaW5nLiAgKi8NCj4g ICBleHRlcm4gdm9pZCBzZXRidWZmZXIgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNo YXIgKl9fcmVzdHJpY3QgX19idWYsDQo+IC0JCSAgICAgICBzaXplX3QgX19zaXplKSBfX1RI Uk9XOw0KPiArCQkgICAgICAgc2l6ZV90IF9fc2l6ZSkgX19USFJPVyBfX25vbm51bGwgKCgx KSk7DQo+ICAgDQo+ICAgLyogTWFrZSBTVFJFQU0gbGluZS1idWZmZXJlZC4gICovDQo+IC1l eHRlcm4gdm9pZCBzZXRsaW5lYnVmIChGSUxFICpfX3N0cmVhbSkgX19USFJPVzsNCj4gK2V4 dGVybiB2b2lkIHNldGxpbmVidWYgKEZJTEUgKl9fc3RyZWFtKSBfX1RIUk9XIF9fbm9ubnVs bCAoKDEpKTsNCj4gICAjZW5kaWYNCj4gICANCj4gICANCj4gQEAgLTQxOCw3ICs0MTgsNyBA QCBleHRlcm4gaW50IGRwcmludGYgKGludCBfX2ZkLCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0 IF9fZm10LCAuLi4pDQo+ICAgICAgVGhpcyBmdW5jdGlvbiBpcyBhIHBvc3NpYmxlIGNhbmNl bGxhdGlvbiBwb2ludCBhbmQgdGhlcmVmb3JlIG5vdA0KPiAgICAgIG1hcmtlZCB3aXRoIF9f VEhST1cuICAqLw0KPiAgIGV4dGVybiBpbnQgZnNjYW5mIChGSUxFICpfX3Jlc3RyaWN0IF9f c3RyZWFtLA0KPiAtCQkgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4p IF9fd3VyOw0KPiArCQkgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4p IF9fd3VyIF9fbm9ubnVsbCAoKDEpKTsNCj4gICAvKiBSZWFkIGZvcm1hdHRlZCBpbnB1dCBm cm9tIHN0ZGluLg0KPiAgIA0KPiAgICAgIFRoaXMgZnVuY3Rpb24gaXMgYSBwb3NzaWJsZSBj YW5jZWxsYXRpb24gcG9pbnQgYW5kIHRoZXJlZm9yZSBub3QNCj4gQEAgLTQzOSw3ICs0Mzks NyBAQCBleHRlcm4gaW50IHNzY2FuZiAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsDQo+ ICAgIyAgaWZkZWYgX19SRURJUkVDVA0KPiAgIGV4dGVybiBpbnQgX19SRURJUkVDVCAoZnNj YW5mLCAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwNCj4gICAJCQkJY29uc3QgY2hhciAq X19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSwNCj4gLQkJICAgICAgIF9faXNvYzIzX2ZzY2Fu ZikgX193dXI7DQo+ICsJCSAgICAgICBfX2lzb2MyM19mc2NhbmYpIF9fd3VyIF9fbm9ubnVs bCAoKDEpKTsNCj4gICBleHRlcm4gaW50IF9fUkVESVJFQ1QgKHNjYW5mLCAoY29uc3QgY2hh ciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSwNCj4gICAJCSAgICAgICBfX2lzb2MyM19z Y2FuZikgX193dXI7DQo+ICAgZXh0ZXJuIGludCBfX1JFRElSRUNUX05USCAoc3NjYW5mLCAo Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsDQo+IEBAIC00NDcsNyArNDQ3LDcgQEAgZXh0 ZXJuIGludCBfX1JFRElSRUNUX05USCAoc3NjYW5mLCAoY29uc3QgY2hhciAqX19yZXN0cmlj dCBfX3MsDQo+ICAgCQkJICAgX19pc29jMjNfc3NjYW5mKTsNCj4gICAjICBlbHNlDQo+ICAg ZXh0ZXJuIGludCBfX2lzb2MyM19mc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0s DQo+IC0JCQkgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSBfX3d1 cjsNCj4gKwkJCSAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIF9f d3VyIF9fbm9ubnVsbCAoKDEpKTsNCj4gICBleHRlcm4gaW50IF9faXNvYzIzX3NjYW5mIChj b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIF9fd3VyOw0KPiAgIGV4dGVy biBpbnQgX19pc29jMjNfc3NjYW5mIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywNCj4g ICAJCQkgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSBfX1RIUk9X Ow0KPiBAQCAtNDU5LDcgKzQ1OSw3IEBAIGV4dGVybiBpbnQgX19pc29jMjNfc3NjYW5mIChj b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywNCj4gICAjICBpZmRlZiBfX1JFRElSRUNUDQo+ ICAgZXh0ZXJuIGludCBfX1JFRElSRUNUIChmc2NhbmYsIChGSUxFICpfX3Jlc3RyaWN0IF9f c3RyZWFtLA0KPiAgIAkJCQljb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4p LA0KPiAtCQkgICAgICAgX19pc29jOTlfZnNjYW5mKSBfX3d1cjsNCj4gKwkJICAgICAgIF9f aXNvYzk5X2ZzY2FuZikgX193dXIgX19ub25udWxsICgoMSkpOw0KPiAgIGV4dGVybiBpbnQg X19SRURJUkVDVCAoc2NhbmYsIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAu Li4pLA0KPiAgIAkJICAgICAgIF9faXNvYzk5X3NjYW5mKSBfX3d1cjsNCj4gICBleHRlcm4g aW50IF9fUkVESVJFQ1RfTlRIIChzc2NhbmYsIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f cywNCj4gQEAgLTQ2Nyw3ICs0NjcsNyBAQCBleHRlcm4gaW50IF9fUkVESVJFQ1RfTlRIIChz c2NhbmYsIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywNCj4gICAJCQkgICBfX2lzb2M5 OV9zc2NhbmYpOw0KPiAgICMgIGVsc2UNCj4gICBleHRlcm4gaW50IF9faXNvYzk5X2ZzY2Fu ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwNCj4gLQkJCSAgICBjb25zdCBjaGFyICpf X3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIF9fd3VyOw0KPiArCQkJICAgIGNvbnN0IGNoYXIg Kl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgX193dXIgX19ub25udWxsICgoMSkpOw0KPiAg IGV4dGVybiBpbnQgX19pc29jOTlfc2NhbmYgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19m b3JtYXQsIC4uLikgX193dXI7DQo+ICAgZXh0ZXJuIGludCBfX2lzb2M5OV9zc2NhbmYgKGNv bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLA0KPiAgIAkJCSAgICBjb25zdCBjaGFyICpfX3Jl c3RyaWN0IF9fZm9ybWF0LCAuLi4pIF9fVEhST1c7DQo+IEBAIC00ODUsNyArNDg1LDcgQEAg ZXh0ZXJuIGludCBfX2lzb2M5OV9zc2NhbmYgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19z LA0KPiAgICAgIG1hcmtlZCB3aXRoIF9fVEhST1cuICAqLw0KPiAgIGV4dGVybiBpbnQgdmZz Y2FuZiAoRklMRSAqX19yZXN0cmljdCBfX3MsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19m b3JtYXQsDQo+ICAgCQkgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpDQo+IC0gICAgIF9fYXR0 cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDIsIDApKSkgX193dXI7DQo+ICsg ICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDIsIDApKSkgX193 dXIgX19ub25udWxsICgoMSkpOw0KPiAgIA0KPiAgIC8qIFJlYWQgZm9ybWF0dGVkIGlucHV0 IGZyb20gc3RkaW4gaW50byBhcmd1bWVudCBsaXN0IEFSRy4NCj4gICANCj4gQEAgLTUwOCw3 ICs1MDgsNyBAQCBleHRlcm4gaW50IF9fUkVESVJFQ1QgKHZmc2NhbmYsDQo+ICAgCQkgICAg ICAgKEZJTEUgKl9fcmVzdHJpY3QgX19zLA0KPiAgIAkJCWNvbnN0IGNoYXIgKl9fcmVzdHJp Y3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKSwNCj4gICAJCSAgICAgICBfX2lz b2MyM192ZnNjYW5mKQ0KPiAtICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19z Y2FuZl9fLCAyLCAwKSkpIF9fd3VyOw0KPiArICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3Jt YXRfXyAoX19zY2FuZl9fLCAyLCAwKSkpIF9fd3VyIF9fbm9ubnVsbCAoKDEpKTsNCj4gICBl eHRlcm4gaW50IF9fUkVESVJFQ1QgKHZzY2FuZiwgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg X19mb3JtYXQsDQo+ICAgCQkJCV9fZ251Y192YV9saXN0IF9fYXJnKSwgX19pc29jMjNfdnNj YW5mKQ0KPiAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fc2NhbmZfXywg MSwgMCkpKSBfX3d1cjsNCj4gQEAgLTUyMCw3ICs1MjAsNyBAQCBleHRlcm4gaW50IF9fUkVE SVJFQ1RfTlRIICh2c3NjYW5mLA0KPiAgICMgICBlbGlmICFkZWZpbmVkIF9fUkVESVJFQ1QN Cj4gICBleHRlcm4gaW50IF9faXNvYzIzX3Zmc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3QgX19z LA0KPiAgIAkJCSAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwNCj4gLQkJ CSAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpIF9fd3VyOw0KPiArCQkJICAgICBfX2dudWNf dmFfbGlzdCBfX2FyZykgX193dXIgX19ub25udWxsICgoMSkpOw0KPiAgIGV4dGVybiBpbnQg X19pc29jMjNfdnNjYW5mIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LA0KPiAg IAkJCSAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykgX193dXI7DQo+ICAgZXh0ZXJuIGludCBf X2lzb2MyM192c3NjYW5mIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywNCj4gQEAgLTUz Nyw3ICs1MzcsNyBAQCBleHRlcm4gaW50IF9fUkVESVJFQ1QgKHZmc2NhbmYsDQo+ICAgCQkg ICAgICAgKEZJTEUgKl9fcmVzdHJpY3QgX19zLA0KPiAgIAkJCWNvbnN0IGNoYXIgKl9fcmVz dHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKSwNCj4gICAJCSAgICAgICBf X2lzb2M5OV92ZnNjYW5mKQ0KPiAtICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAo X19zY2FuZl9fLCAyLCAwKSkpIF9fd3VyOw0KPiArICAgICBfX2F0dHJpYnV0ZV9fICgoX19m b3JtYXRfXyAoX19zY2FuZl9fLCAyLCAwKSkpIF9fd3VyIF9fbm9ubnVsbCAoKDEpKTsNCj4g ICBleHRlcm4gaW50IF9fUkVESVJFQ1QgKHZzY2FuZiwgKGNvbnN0IGNoYXIgKl9fcmVzdHJp Y3QgX19mb3JtYXQsDQo+ICAgCQkJCV9fZ251Y192YV9saXN0IF9fYXJnKSwgX19pc29jOTlf dnNjYW5mKQ0KPiAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fc2NhbmZf XywgMSwgMCkpKSBfX3d1cjsNCj4gQEAgLTU0OSw3ICs1NDksNyBAQCBleHRlcm4gaW50IF9f UkVESVJFQ1RfTlRIICh2c3NjYW5mLA0KPiAgICMgICBlbGlmICFkZWZpbmVkIF9fUkVESVJF Q1QNCj4gICBleHRlcm4gaW50IF9faXNvYzk5X3Zmc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3Qg X19zLA0KPiAgIAkJCSAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwNCj4g LQkJCSAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpIF9fd3VyOw0KPiArCQkJICAgICBfX2du dWNfdmFfbGlzdCBfX2FyZykgX193dXIgX19ub25udWxsICgoMSkpOw0KPiAgIGV4dGVybiBp bnQgX19pc29jOTlfdnNjYW5mIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LA0K PiAgIAkJCSAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykgX193dXI7DQo+ICAgZXh0ZXJuIGlu dCBfX2lzb2M5OV92c3NjYW5mIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywNCj4gQEAg LTU2OCw4ICs1NjgsOCBAQCBleHRlcm4gaW50IF9faXNvYzk5X3Zzc2NhbmYgKGNvbnN0IGNo YXIgKl9fcmVzdHJpY3QgX19zLA0KPiAgIA0KPiAgICAgIFRoZXNlIGZ1bmN0aW9ucyBhcmUg cG9zc2libGUgY2FuY2VsbGF0aW9uIHBvaW50cyBhbmQgdGhlcmVmb3JlIG5vdA0KPiAgICAg IG1hcmtlZCB3aXRoIF9fVEhST1cuICAqLw0KPiAtZXh0ZXJuIGludCBmZ2V0YyAoRklMRSAq X19zdHJlYW0pOw0KPiAtZXh0ZXJuIGludCBnZXRjIChGSUxFICpfX3N0cmVhbSk7DQo+ICtl eHRlcm4gaW50IGZnZXRjIChGSUxFICpfX3N0cmVhbSkgX19ub25udWxsICgoMSkpOw0KPiAr ZXh0ZXJuIGludCBnZXRjIChGSUxFICpfX3N0cmVhbSkgX19ub25udWxsICgoMSkpOw0KPiAg IA0KPiAgIC8qIFJlYWQgYSBjaGFyYWN0ZXIgZnJvbSBzdGRpbi4NCj4gICANCj4gQEAgLTU4 Miw3ICs1ODIsNyBAQCBleHRlcm4gaW50IGdldGNoYXIgKHZvaWQpOw0KPiAgIA0KPiAgICAg IFRoZXNlIGZ1bmN0aW9ucyBhcmUgcG9zc2libGUgY2FuY2VsbGF0aW9uIHBvaW50cyBhbmQg dGhlcmVmb3JlIG5vdA0KPiAgICAgIG1hcmtlZCB3aXRoIF9fVEhST1cuICAqLw0KPiAtZXh0 ZXJuIGludCBnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSk7DQo+ICtleHRlcm4gaW50 IGdldGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSBfX25vbm51bGwgKCgxKSk7DQo+ICAg ZXh0ZXJuIGludCBnZXRjaGFyX3VubG9ja2VkICh2b2lkKTsNCj4gICAjZW5kaWYgLyogVXNl IFBPU0lYLiAgKi8NCj4gICANCj4gQEAgLTU5Myw3ICs1OTMsNyBAQCBleHRlcm4gaW50IGdl dGNoYXJfdW5sb2NrZWQgKHZvaWQpOw0KPiAgICAgIGNhbmNlbGxhdGlvbiBwb2ludC4gIEJ1 dCBkdWUgdG8gc2ltaWxhcml0eSB3aXRoIGFuIFBPU0lYIGludGVyZmFjZQ0KPiAgICAgIG9y IGR1ZSB0byB0aGUgaW1wbGVtZW50YXRpb24gaXQgaXMgYSBjYW5jZWxsYXRpb24gcG9pbnQg YW5kDQo+ICAgICAgdGhlcmVmb3JlIG5vdCBtYXJrZWQgd2l0aCBfX1RIUk9XLiAgKi8NCj4g LWV4dGVybiBpbnQgZmdldGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKTsNCj4gK2V4dGVy biBpbnQgZmdldGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSBfX25vbm51bGwgKCgxKSk7 DQo+ICAgI2VuZGlmIC8qIFVzZSBNSVNDLiAgKi8NCj4gICANCj4gICANCj4gQEAgLTYwNCw4 ICs2MDQsOCBAQCBleHRlcm4gaW50IGZnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSk7 DQo+ICAgDQo+ICAgICAgVGhlc2UgZnVuY3Rpb25zIGlzIGEgcG9zc2libGUgY2FuY2VsbGF0 aW9uIHBvaW50IGFuZCB0aGVyZWZvcmUgbm90DQoNCkFzaWRlOiBoZXJlJ3MgYSB0eXBvIG1p eGluZyBwbHVyYWwgYW5kIHNpbmd1bGFyIGluIHRoZSBzZW50ZW5jZSAobm90DQpwYXJ0IG9m IHlvdXIgY29tbWl0KS4gIEknbGwgcHJlcGFyZSBhIHBhdGNoIGZvciBpdC4NCg0KPiAgICAg IG1hcmtlZCB3aXRoIF9fVEhST1cuICAqLw0KPiAtZXh0ZXJuIGludCBmcHV0YyAoaW50IF9f YywgRklMRSAqX19zdHJlYW0pOw0KPiAtZXh0ZXJuIGludCBwdXRjIChpbnQgX19jLCBGSUxF ICpfX3N0cmVhbSk7DQo+ICtleHRlcm4gaW50IGZwdXRjIChpbnQgX19jLCBGSUxFICpfX3N0 cmVhbSkgX19ub25udWxsICgoMikpOw0KPiArZXh0ZXJuIGludCBwdXRjIChpbnQgX19jLCBG SUxFICpfX3N0cmVhbSkgX19ub25udWxsICgoMikpOw0KPiAgIA0KPiAgIC8qIFdyaXRlIGEg Y2hhcmFjdGVyIHRvIHN0ZG91dC4NCj4gICANCj4gQEAgLTYyMCw3ICs2MjAsNyBAQCBleHRl cm4gaW50IHB1dGNoYXIgKGludCBfX2MpOw0KPiAgICAgIGNhbmNlbGxhdGlvbiBwb2ludC4g IEJ1dCBkdWUgdG8gc2ltaWxhcml0eSB3aXRoIGFuIFBPU0lYIGludGVyZmFjZQ0KPiAgICAg IG9yIGR1ZSB0byB0aGUgaW1wbGVtZW50YXRpb24gaXQgaXMgYSBjYW5jZWxsYXRpb24gcG9p bnQgYW5kDQo+ICAgICAgdGhlcmVmb3JlIG5vdCBtYXJrZWQgd2l0aCBfX1RIUk9XLiAgKi8N Cj4gLWV4dGVybiBpbnQgZnB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFt KTsNCj4gK2V4dGVybiBpbnQgZnB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3Ry ZWFtKSBfX25vbm51bGwgKCgyKSk7DQo+ICAgI2VuZGlmIC8qIFVzZSBNSVNDLiAgKi8NCj4g ICANCj4gICAjaWZkZWYgX19VU0VfUE9TSVgxOTk1MDYNCj4gQEAgLTYyOCw3ICs2MjgsNyBA QCBleHRlcm4gaW50IGZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSk7 DQo+ICAgDQo+ICAgICAgVGhlc2UgZnVuY3Rpb25zIGFyZSBwb3NzaWJsZSBjYW5jZWxsYXRp b24gcG9pbnRzIGFuZCB0aGVyZWZvcmUgbm90DQo+ICAgICAgbWFya2VkIHdpdGggX19USFJP Vy4gICovDQo+IC1leHRlcm4gaW50IHB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9f c3RyZWFtKTsNCj4gK2V4dGVybiBpbnQgcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAq X19zdHJlYW0pIF9fbm9ubnVsbCAoKDIpKTsNCj4gICBleHRlcm4gaW50IHB1dGNoYXJfdW5s b2NrZWQgKGludCBfX2MpOw0KPiAgICNlbmRpZiAvKiBVc2UgUE9TSVguICAqLw0KPiAgIA0K PiBAQCAtNjM2LDEwICs2MzYsMTAgQEAgZXh0ZXJuIGludCBwdXRjaGFyX3VubG9ja2VkIChp bnQgX19jKTsNCj4gICAjaWYgZGVmaW5lZCBfX1VTRV9NSVNDIFwNCj4gICAgICAgfHwgKGRl ZmluZWQgX19VU0VfWE9QRU4gJiYgIWRlZmluZWQgX19VU0VfWE9QRU4ySykNCj4gICAvKiBH ZXQgYSB3b3JkIChpbnQpIGZyb20gU1RSRUFNLiAgKi8NCj4gLWV4dGVybiBpbnQgZ2V0dyAo RklMRSAqX19zdHJlYW0pOw0KPiArZXh0ZXJuIGludCBnZXR3IChGSUxFICpfX3N0cmVhbSkg X19ub25udWxsICgoMSkpOw0KPiAgIA0KPiAgIC8qIFdyaXRlIGEgd29yZCAoaW50KSB0byBT VFJFQU0uICAqLw0KPiAtZXh0ZXJuIGludCBwdXR3IChpbnQgX193LCBGSUxFICpfX3N0cmVh bSk7DQo+ICtleHRlcm4gaW50IHB1dHcgKGludCBfX3csIEZJTEUgKl9fc3RyZWFtKSBfX25v bm51bGwgKCgyKSk7DQo+ICAgI2VuZGlmDQo+ICAgDQo+ICAgDQo+IEBAIC02ODksMTAgKzY4 OSwxMCBAQCBleHRlcm4gY2hhciAqZmdldHNfdW5sb2NrZWQgKGNoYXIgKl9fcmVzdHJpY3Qg X19zLCBpbnQgX19uLA0KPiAgICAgIHRoZXJlZm9yZSBub3QgbWFya2VkIHdpdGggX19USFJP Vy4gICovDQo+ICAgZXh0ZXJuIF9fc3NpemVfdCBfX2dldGRlbGltIChjaGFyICoqX19yZXN0 cmljdCBfX2xpbmVwdHIsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl X3QgKl9fcmVzdHJpY3QgX19uLCBpbnQgX19kZWxpbWl0ZXIsDQo+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIF9fd3VyOw0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFt KSBfX3d1ciBfX25vbm51bGwgKCg0KSk7DQo+ICAgZXh0ZXJuIF9fc3NpemVfdCBnZXRkZWxp bSAoY2hhciAqKl9fcmVzdHJpY3QgX19saW5lcHRyLA0KPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX24sIGludCBfX2RlbGltaXRlciwNCj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0p IF9fd3VyOw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmlj dCBfX3N0cmVhbSkgX193dXIgX19ub25udWxsICgoNCkpOw0KPiAgIA0KPiAgIC8qIExpa2Ug YGdldGRlbGltJywgYnV0IHJlYWRzIHVwIHRvIGEgbmV3bGluZS4NCj4gICANCj4gQEAgLTcw Miw3ICs3MDIsNyBAQCBleHRlcm4gX19zc2l6ZV90IGdldGRlbGltIChjaGFyICoqX19yZXN0 cmljdCBfX2xpbmVwdHIsDQo+ICAgICAgdGhlcmVmb3JlIG5vdCBtYXJrZWQgd2l0aCBfX1RI Uk9XLiAgKi8NCj4gICBleHRlcm4gX19zc2l6ZV90IGdldGxpbmUgKGNoYXIgKipfX3Jlc3Ry aWN0IF9fbGluZXB0ciwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAq X19yZXN0cmljdCBfX24sDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9f cmVzdHJpY3QgX19zdHJlYW0pIF9fd3VyOw0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSBfX3d1ciBfX25vbm51bGwgKCgzKSk7DQo+ ICAgI2VuZGlmDQo+ICAgDQo+ICAgDQo+IEBAIC03MjMsNyArNzIzLDcgQEAgZXh0ZXJuIGlu dCBwdXRzIChjb25zdCBjaGFyICpfX3MpOw0KPiAgIA0KPiAgICAgIFRoaXMgZnVuY3Rpb24g aXMgYSBwb3NzaWJsZSBjYW5jZWxsYXRpb24gcG9pbnQgYW5kIHRoZXJlZm9yZSBub3QNCj4g ICAgICBtYXJrZWQgd2l0aCBfX1RIUk9XLiAgKi8NCj4gLWV4dGVybiBpbnQgdW5nZXRjIChp bnQgX19jLCBGSUxFICpfX3N0cmVhbSk7DQo+ICtleHRlcm4gaW50IHVuZ2V0YyAoaW50IF9f YywgRklMRSAqX19zdHJlYW0pIF9fbm9ubnVsbCAoKDIpKTsNCj4gICANCj4gICANCj4gICAv KiBSZWFkIGNodW5rcyBvZiBnZW5lcmljIGRhdGEgZnJvbSBTVFJFQU0uDQo+IEBAIC03Njgs MTcgKzc2OCwxNyBAQCBleHRlcm4gc2l6ZV90IGZ3cml0ZV91bmxvY2tlZCAoY29uc3Qgdm9p ZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwNCj4gICANCj4gICAgICBUaGlz IGZ1bmN0aW9uIGlzIGEgcG9zc2libGUgY2FuY2VsbGF0aW9uIHBvaW50IGFuZCB0aGVyZWZv cmUgbm90DQo+ICAgICAgbWFya2VkIHdpdGggX19USFJPVy4gICovDQo+IC1leHRlcm4gaW50 IGZzZWVrIChGSUxFICpfX3N0cmVhbSwgbG9uZyBpbnQgX19vZmYsIGludCBfX3doZW5jZSk7 DQo+ICtleHRlcm4gaW50IGZzZWVrIChGSUxFICpfX3N0cmVhbSwgbG9uZyBpbnQgX19vZmYs IGludCBfX3doZW5jZSkgX19ub25udWxsICgoMSkpOw0KPiAgIC8qIFJldHVybiB0aGUgY3Vy cmVudCBwb3NpdGlvbiBvZiBTVFJFQU0uDQo+ICAgDQo+ICAgICAgVGhpcyBmdW5jdGlvbiBp cyBhIHBvc3NpYmxlIGNhbmNlbGxhdGlvbiBwb2ludCBhbmQgdGhlcmVmb3JlIG5vdA0KPiAg ICAgIG1hcmtlZCB3aXRoIF9fVEhST1cuICAqLw0KPiAtZXh0ZXJuIGxvbmcgaW50IGZ0ZWxs IChGSUxFICpfX3N0cmVhbSkgX193dXI7DQo+ICtleHRlcm4gbG9uZyBpbnQgZnRlbGwgKEZJ TEUgKl9fc3RyZWFtKSBfX3d1ciBfX25vbm51bGwgKCgxKSk7DQo+ICAgLyogUmV3aW5kIHRv IHRoZSBiZWdpbm5pbmcgb2YgU1RSRUFNLg0KPiAgIA0KPiAgICAgIFRoaXMgZnVuY3Rpb24g aXMgYSBwb3NzaWJsZSBjYW5jZWxsYXRpb24gcG9pbnQgYW5kIHRoZXJlZm9yZSBub3QNCj4g ICAgICBtYXJrZWQgd2l0aCBfX1RIUk9XLiAgKi8NCj4gLWV4dGVybiB2b2lkIHJld2luZCAo RklMRSAqX19zdHJlYW0pOw0KPiArZXh0ZXJuIHZvaWQgcmV3aW5kIChGSUxFICpfX3N0cmVh bSkgX19ub25udWxsICgoMSkpOw0KPiAgIA0KPiAgIC8qIFRoZSBTaW5nbGUgVW5peCBTcGVj aWZpY2F0aW9uLCBWZXJzaW9uIDIsIHNwZWNpZmllcyBhbiBhbHRlcm5hdGl2ZSwNCj4gICAg ICBtb3JlIGFkZXF1YXRlIGludGVyZmFjZSBmb3IgdGhlIHR3byBmdW5jdGlvbnMgYWJvdmUg d2hpY2ggZGVhbCB3aXRoDQo+IEBAIC03OTEsMTggKzc5MSwxOSBAQCBleHRlcm4gdm9pZCBy ZXdpbmQgKEZJTEUgKl9fc3RyZWFtKTsNCj4gICANCj4gICAgICBUaGlzIGZ1bmN0aW9uIGlz IGEgcG9zc2libGUgY2FuY2VsbGF0aW9uIHBvaW50IGFuZCB0aGVyZWZvcmUgbm90DQo+ICAg ICAgbWFya2VkIHdpdGggX19USFJPVy4gICovDQo+IC1leHRlcm4gaW50IGZzZWVrbyAoRklM RSAqX19zdHJlYW0sIF9fb2ZmX3QgX19vZmYsIGludCBfX3doZW5jZSk7DQo+ICtleHRlcm4g aW50IGZzZWVrbyAoRklMRSAqX19zdHJlYW0sIF9fb2ZmX3QgX19vZmYsIGludCBfX3doZW5j ZSkgX19ub25udWxsICgoMSkpOw0KPiAgIC8qIFJldHVybiB0aGUgY3VycmVudCBwb3NpdGlv biBvZiBTVFJFQU0uDQo+ICAgDQo+ICAgICAgVGhpcyBmdW5jdGlvbiBpcyBhIHBvc3NpYmxl IGNhbmNlbGxhdGlvbiBwb2ludCBhbmQgdGhlcmVmb3JlIG5vdA0KPiAgICAgIG1hcmtlZCB3 aXRoIF9fVEhST1cuICAqLw0KPiAtZXh0ZXJuIF9fb2ZmX3QgZnRlbGxvIChGSUxFICpfX3N0 cmVhbSkgX193dXI7DQo+ICtleHRlcm4gX19vZmZfdCBmdGVsbG8gKEZJTEUgKl9fc3RyZWFt KSBfX3d1ciBfX25vbm51bGwgKCgxKSk7DQo+ICAgIyBlbHNlDQo+ICAgIyAgaWZkZWYgX19S RURJUkVDVA0KPiAgIGV4dGVybiBpbnQgX19SRURJUkVDVCAoZnNlZWtvLA0KPiAgIAkJICAg ICAgIChGSUxFICpfX3N0cmVhbSwgX19vZmY2NF90IF9fb2ZmLCBpbnQgX193aGVuY2UpLA0K PiAtCQkgICAgICAgZnNlZWtvNjQpOw0KPiAtZXh0ZXJuIF9fb2ZmNjRfdCBfX1JFRElSRUNU IChmdGVsbG8sIChGSUxFICpfX3N0cmVhbSksIGZ0ZWxsbzY0KTsNCj4gKwkJICAgICAgIGZz ZWVrbzY0KSBfX25vbm51bGwgKCgxKSk7DQo+ICtleHRlcm4gX19vZmY2NF90IF9fUkVESVJF Q1QgKGZ0ZWxsbywgKEZJTEUgKl9fc3RyZWFtKSwgZnRlbGxvNjQpDQo+ICsgIF9fbm9ubnVs bCAoKDEpKTsNCj4gICAjICBlbHNlDQo+ICAgIyAgIGRlZmluZSBmc2Vla28gZnNlZWtvNjQN Cj4gICAjICAgZGVmaW5lIGZ0ZWxsbyBmdGVsbG82NA0KPiBAQCAtODE1LDE4ICs4MTYsMjAg QEAgZXh0ZXJuIF9fb2ZmNjRfdCBfX1JFRElSRUNUIChmdGVsbG8sIChGSUxFICpfX3N0cmVh bSksIGZ0ZWxsbzY0KTsNCj4gICANCj4gICAgICBUaGlzIGZ1bmN0aW9uIGlzIGEgcG9zc2li bGUgY2FuY2VsbGF0aW9uIHBvaW50IGFuZCB0aGVyZWZvcmUgbm90DQo+ICAgICAgbWFya2Vk IHdpdGggX19USFJPVy4gICovDQo+IC1leHRlcm4gaW50IGZnZXRwb3MgKEZJTEUgKl9fcmVz dHJpY3QgX19zdHJlYW0sIGZwb3NfdCAqX19yZXN0cmljdCBfX3Bvcyk7DQo+ICtleHRlcm4g aW50IGZnZXRwb3MgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGZwb3NfdCAqX19yZXN0 cmljdCBfX3BvcykNCj4gKyAgX19ub25udWxsICgoMSkpOw0KPiAgIC8qIFNldCBTVFJFQU0n cyBwb3NpdGlvbi4NCj4gICANCj4gICAgICBUaGlzIGZ1bmN0aW9uIGlzIGEgcG9zc2libGUg Y2FuY2VsbGF0aW9uIHBvaW50IGFuZCB0aGVyZWZvcmUgbm90DQo+ICAgICAgbWFya2VkIHdp dGggX19USFJPVy4gICovDQo+IC1leHRlcm4gaW50IGZzZXRwb3MgKEZJTEUgKl9fc3RyZWFt LCBjb25zdCBmcG9zX3QgKl9fcG9zKTsNCj4gK2V4dGVybiBpbnQgZnNldHBvcyAoRklMRSAq X19zdHJlYW0sIGNvbnN0IGZwb3NfdCAqX19wb3MpIF9fbm9ubnVsbCAoKDEpKTsNCj4gICAj ZWxzZQ0KPiAgICMgaWZkZWYgX19SRURJUkVDVA0KPiAgIGV4dGVybiBpbnQgX19SRURJUkVD VCAoZmdldHBvcywgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sDQo+IC0JCQkJIGZwb3Nf dCAqX19yZXN0cmljdCBfX3BvcyksIGZnZXRwb3M2NCk7DQo+ICsJCQkJIGZwb3NfdCAqX19y ZXN0cmljdCBfX3BvcyksIGZnZXRwb3M2NCkgX19ub25udWxsICgoMSkpOw0KPiAgIGV4dGVy biBpbnQgX19SRURJUkVDVCAoZnNldHBvcywNCj4gLQkJICAgICAgIChGSUxFICpfX3N0cmVh bSwgY29uc3QgZnBvc190ICpfX3BvcyksIGZzZXRwb3M2NCk7DQo+ICsJCSAgICAgICAoRklM RSAqX19zdHJlYW0sIGNvbnN0IGZwb3NfdCAqX19wb3MpLCBmc2V0cG9zNjQpDQo+ICsgIF9f bm9ubnVsbCAoKDEpKTsNCj4gICAjIGVsc2UNCj4gICAjICBkZWZpbmUgZmdldHBvcyBmZ2V0 cG9zNjQNCj4gICAjICBkZWZpbmUgZnNldHBvcyBmc2V0cG9zNjQNCj4gQEAgLTgzNCwyNCAr ODM3LDI2IEBAIGV4dGVybiBpbnQgX19SRURJUkVDVCAoZnNldHBvcywNCj4gICAjZW5kaWYN Cj4gICANCj4gICAjaWZkZWYgX19VU0VfTEFSR0VGSUxFNjQNCj4gLWV4dGVybiBpbnQgZnNl ZWtvNjQgKEZJTEUgKl9fc3RyZWFtLCBfX29mZjY0X3QgX19vZmYsIGludCBfX3doZW5jZSk7 DQo+IC1leHRlcm4gX19vZmY2NF90IGZ0ZWxsbzY0IChGSUxFICpfX3N0cmVhbSkgX193dXI7 DQo+IC1leHRlcm4gaW50IGZnZXRwb3M2NCAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwg ZnBvczY0X3QgKl9fcmVzdHJpY3QgX19wb3MpOw0KPiAtZXh0ZXJuIGludCBmc2V0cG9zNjQg KEZJTEUgKl9fc3RyZWFtLCBjb25zdCBmcG9zNjRfdCAqX19wb3MpOw0KPiArZXh0ZXJuIGlu dCBmc2Vla282NCAoRklMRSAqX19zdHJlYW0sIF9fb2ZmNjRfdCBfX29mZiwgaW50IF9fd2hl bmNlKQ0KPiArICBfX25vbm51bGwgKCgxKSk7DQo+ICtleHRlcm4gX19vZmY2NF90IGZ0ZWxs bzY0IChGSUxFICpfX3N0cmVhbSkgX193dXIgX19ub25udWxsICgoMSkpOw0KPiArZXh0ZXJu IGludCBmZ2V0cG9zNjQgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGZwb3M2NF90ICpf X3Jlc3RyaWN0IF9fcG9zKQ0KPiArICBfX25vbm51bGwgKCgxKSk7DQo+ICtleHRlcm4gaW50 IGZzZXRwb3M2NCAoRklMRSAqX19zdHJlYW0sIGNvbnN0IGZwb3M2NF90ICpfX3BvcykgX19u b25udWxsICgoMSkpOw0KPiAgICNlbmRpZg0KPiAgIA0KPiAgIC8qIENsZWFyIHRoZSBlcnJv ciBhbmQgRU9GIGluZGljYXRvcnMgZm9yIFNUUkVBTS4gICovDQo+IC1leHRlcm4gdm9pZCBj bGVhcmVyciAoRklMRSAqX19zdHJlYW0pIF9fVEhST1c7DQo+ICtleHRlcm4gdm9pZCBjbGVh cmVyciAoRklMRSAqX19zdHJlYW0pIF9fVEhST1cgX19ub25udWxsICgoMSkpOw0KPiAgIC8q IFJldHVybiB0aGUgRU9GIGluZGljYXRvciBmb3IgU1RSRUFNLiAgKi8NCj4gLWV4dGVybiBp bnQgZmVvZiAoRklMRSAqX19zdHJlYW0pIF9fVEhST1cgX193dXI7DQo+ICtleHRlcm4gaW50 IGZlb2YgKEZJTEUgKl9fc3RyZWFtKSBfX1RIUk9XIF9fd3VyIF9fbm9ubnVsbCAoKDEpKTsN Cj4gICAvKiBSZXR1cm4gdGhlIGVycm9yIGluZGljYXRvciBmb3IgU1RSRUFNLiAgKi8NCj4g LWV4dGVybiBpbnQgZmVycm9yIChGSUxFICpfX3N0cmVhbSkgX19USFJPVyBfX3d1cjsNCj4g K2V4dGVybiBpbnQgZmVycm9yIChGSUxFICpfX3N0cmVhbSkgX19USFJPVyBfX3d1ciBfX25v bm51bGwgKCgxKSk7DQo+ICAgDQo+ICAgI2lmZGVmIF9fVVNFX01JU0MNCj4gICAvKiBGYXN0 ZXIgdmVyc2lvbnMgd2hlbiBsb2NraW5nIGlzIG5vdCByZXF1aXJlZC4gICovDQo+IC1leHRl cm4gdm9pZCBjbGVhcmVycl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIF9fVEhST1c7DQo+ IC1leHRlcm4gaW50IGZlb2ZfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSBfX1RIUk9XIF9f d3VyOw0KPiAtZXh0ZXJuIGludCBmZXJyb3JfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSBf X1RIUk9XIF9fd3VyOw0KPiArZXh0ZXJuIHZvaWQgY2xlYXJlcnJfdW5sb2NrZWQgKEZJTEUg Kl9fc3RyZWFtKSBfX1RIUk9XIF9fbm9ubnVsbCAoKDEpKTsNCj4gK2V4dGVybiBpbnQgZmVv Zl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIF9fVEhST1cgX193dXIgX19ub25udWxsICgo MSkpOw0KPiArZXh0ZXJuIGludCBmZXJyb3JfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSBf X1RIUk9XIF9fd3VyIF9fbm9ubnVsbCAoKDEpKTsNCj4gICAjZW5kaWYNCj4gICANCj4gICAN Cj4gQEAgLTg2NCwxMiArODY5LDEyIEBAIGV4dGVybiB2b2lkIHBlcnJvciAoY29uc3QgY2hh ciAqX19zKSBfX0NPTEQ7DQo+ICAgDQo+ICAgI2lmZGVmCV9fVVNFX1BPU0lYDQo+ICAgLyog UmV0dXJuIHRoZSBzeXN0ZW0gZmlsZSBkZXNjcmlwdG9yIGZvciBTVFJFQU0uICAqLw0KPiAt ZXh0ZXJuIGludCBmaWxlbm8gKEZJTEUgKl9fc3RyZWFtKSBfX1RIUk9XIF9fd3VyOw0KPiAr ZXh0ZXJuIGludCBmaWxlbm8gKEZJTEUgKl9fc3RyZWFtKSBfX1RIUk9XIF9fd3VyIF9fbm9u bnVsbCAoKDEpKTsNCj4gICAjZW5kaWYgLyogVXNlIFBPU0lYLiAgKi8NCj4gICANCj4gICAj aWZkZWYgX19VU0VfTUlTQw0KPiAgIC8qIEZhc3RlciB2ZXJzaW9uIHdoZW4gbG9ja2luZyBp cyBub3QgcmVxdWlyZWQuICAqLw0KPiAtZXh0ZXJuIGludCBmaWxlbm9fdW5sb2NrZWQgKEZJ TEUgKl9fc3RyZWFtKSBfX1RIUk9XIF9fd3VyOw0KPiArZXh0ZXJuIGludCBmaWxlbm9fdW5s b2NrZWQgKEZJTEUgKl9fc3RyZWFtKSBfX1RIUk9XIF9fd3VyIF9fbm9ubnVsbCAoKDEpKTsN Cj4gICAjZW5kaWYNCj4gICANCj4gICANCj4gQEAgLTg3OCw3ICs4ODMsNyBAQCBleHRlcm4g aW50IGZpbGVub191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIF9fVEhST1cgX193dXI7DQo+ ICAgDQo+ICAgICAgVGhpcyBmdW5jdGlvbiBpcyBhIHBvc3NpYmxlIGNhbmNlbGxhdGlvbiBw b2ludCBhbmQgdGhlcmVmb3JlIG5vdA0KPiAgICAgIG1hcmtlZCB3aXRoIF9fVEhST1cuICAq Lw0KPiAtZXh0ZXJuIGludCBwY2xvc2UgKEZJTEUgKl9fc3RyZWFtKTsNCj4gK2V4dGVybiBp bnQgcGNsb3NlIChGSUxFICpfX3N0cmVhbSkgX19ub25udWxsICgoMSkpOw0KDQpZb3UgZGlk bid0IHBhdGNoIGZjbG9zZSgzKS4gIEFueSByZWFzb24/ICBJIGd1ZXNzIGl0J3Mgc2ltaWxh cmx5IFVCIHRvDQpjYWxsIGZjbG9zZShOVUxMKS4NCg0KQ2hlZXJzLA0KQWxleA0KDQo+ICAg DQo+ICAgLyogQ3JlYXRlIGEgbmV3IHN0cmVhbSBjb25uZWN0ZWQgdG8gYSBwaXBlIHJ1bm5p bmcgdGhlIGdpdmVuIGNvbW1hbmQuDQo+ICAgDQo+IEBAIC05MjIsMTQgKzkyNywxNCBAQCBl eHRlcm4gaW50IG9ic3RhY2tfdnByaW50ZiAoc3RydWN0IG9ic3RhY2sgKl9fcmVzdHJpY3Qg X19vYnN0YWNrLA0KPiAgIC8qIFRoZXNlIGFyZSBkZWZpbmVkIGluIFBPU0lYLjE6MTk5Ni4g ICovDQo+ICAgDQo+ICAgLyogQWNxdWlyZSBvd25lcnNoaXAgb2YgU1RSRUFNLiAgKi8NCj4g LWV4dGVybiB2b2lkIGZsb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIF9fVEhST1c7DQo+ICtl eHRlcm4gdm9pZCBmbG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSBfX1RIUk9XIF9fbm9ubnVs bCAoKDEpKTsNCj4gICANCj4gICAvKiBUcnkgdG8gYWNxdWlyZSBvd25lcnNoaXAgb2YgU1RS RUFNIGJ1dCBkbyBub3QgYmxvY2sgaWYgaXQgaXMgbm90DQo+ICAgICAgcG9zc2libGUuICAq Lw0KPiAtZXh0ZXJuIGludCBmdHJ5bG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSBfX1RIUk9X IF9fd3VyOw0KPiArZXh0ZXJuIGludCBmdHJ5bG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSBf X1RIUk9XIF9fd3VyIF9fbm9ubnVsbCAoKDEpKTsNCj4gICANCj4gICAvKiBSZWxpbnF1aXNo IHRoZSBvd25lcnNoaXAgZ3JhbnRlZCBmb3IgU1RSRUFNLiAgKi8NCj4gLWV4dGVybiB2b2lk IGZ1bmxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkgX19USFJPVzsNCj4gK2V4dGVybiB2b2lk IGZ1bmxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkgX19USFJPVyBfX25vbm51bGwgKCgxKSk7 DQo+ICAgI2VuZGlmIC8qIFBPU0lYICovDQo+ICAgDQo+ICAgI2lmIGRlZmluZWQgX19VU0Vf WE9QRU4gJiYgIWRlZmluZWQgX19VU0VfWE9QRU4ySyAmJiAhZGVmaW5lZCBfX1VTRV9HTlUN Cg0KLS0gDQo8aHR0cDovL3d3dy5hbGVqYW5kcm8tY29sb21hci5lcy8+DQpHUEcga2V5IGZp bmdlcnByaW50OiBBOTM0ODU5NENFMzEyODNBODI2RkJERDhENTc2MzNENDQxRTI1QkI1DQoN Cg== --------------fo0KNhKsYsUPOg5BBsWkpbIs-- --------------I500Zc0lA6Tlp2jHiLlGcSmP Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEE6jqH8KTroDDkXfJAnowa+77/2zIFAmRmaQgACgkQnowa+77/ 2zK+Bg/9GtWu7XqRORnlCVGlBujcjSRIYH4vhUhpv2sz3DC5vVosK8uHu2OTJEZI kUOiVTjjAC7WwGWtQUP2QptL2Z0eC80yawKu/2zfqn6VsO8Ngov4YvYqT5QnIxe6 9WUd4sM3f1F4rO662lCgoRv7v6YJOVFvByRY7XI62OG4BGAh2cO/9Ur7vmvTPDOJ 2117IiBmKvOWChdhekgHWFoIa3Vr0IFIhc8jPgjEHkwYwz9IBPJPHLGoqIRZrldC 4PNdiVDMfs1qwNgRB2KofWiWPAozS1qu6/BUnzYgXDYMYr79LBkgyQ3GWKQUoSq3 59AlzBV/VjWW6XdmMwtbF1gkMv0qqG9MTTkShoz9ZEw71/GJJy99s/D4pTaW2bHI gXx/VOJw6jq24qY0fJ3+C8N8vE3MkGykQAQ8Ehhyy55BjJ2fehmKrERGt7K6zzlr r5a3C0YRR43qTCurBKK9C96r/IxyiKXBnOMcqIhOcm+Noa4WhzL5HrsvP8MQZ7g9 i+olVjRYAl/uCttp2fVrO2mpAF8PDFE5jmem9xvGFJpP3t4iswldLpuh+01miVKr PQHtGpcPux81vq/gfyEF12f8T+Y70DMLyMulpN2yyaGwCUE2E6ZnlOI6mSj3hfd/ hZX7vEY1cx2CfQcOEBbSzEH+xr+5h53qZMmyF61Nfd5EH7l/D9c= =GXXc -----END PGP SIGNATURE----- --------------I500Zc0lA6Tlp2jHiLlGcSmP--