Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp14679472rwd; Sun, 25 Jun 2023 02:14:08 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7ra2o0OThKuqPSuKSn4Hn0bqTShoJ0fECqpMdeXHzK2NYkt421W2bXNvbInau/TlktIeRd X-Received: by 2002:a05:6a20:9192:b0:10f:be0:4dce with SMTP id v18-20020a056a20919200b0010f0be04dcemr31196748pzd.8.1687684448205; Sun, 25 Jun 2023 02:14:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1687684448; cv=none; d=google.com; s=arc-20160816; b=sy0zwWZOVKUJQRtF1FrcBWh+WVs0nsfFz0NnqUpylZdUPHBAy54BDbmzr5FES+BGyP bdvB6g6D6zl97eja3ffXXkKFEB1bFKoAQbL5IqRQFp6qTRMEAiF/R7I0+HPqWDy+OT5H T36Io09LfdOOZFElvPk0yF8ZFxWgkrWajQjhn2eE35TE4d6b6q3zewnu/FbjNrORIp2l +VykDF83ZFFLN/0j4zKRaHB9F+rIvONNkeYoIsXa0llvEUPcWVPRRtJbkJym+wMIU0R7 ghPosw9HRPBC8+pTfuGL6mQIS+zTOyVR/oOqe/XCuzIfa2ME2dIXkkiRCnJ/4MlCxpQO AaVw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:user-agent :content-transfer-encoding:references:in-reply-to:date:cc:to:from :subject:message-id; bh=nwQgWn01y8SG8dN0dzatDUJusqB0i+ZdHVg1g62cUxA=; fh=lCNC9mTRqd24CZH0fCbcDda10OU5LGK0IKQDIhId95I=; b=M2nFGYZeugrKfGbYT82QcKm6FdciKJHTe73dlzD0XT3f/6l4UR+xRtV6IGj9Cvjeqa eLGSbcKUOjZRCLziU1K53RyOxfGEgzef2RqKj5gMuduH1SRjeXgruCfWXwLGPCpj6YEI THCGffC5gu3haMX3AOKze8Hbamt3tznw+FzfSDRLY38Ku374gtOan+Zg+GxlqlFtauHK 3BTyyPXw0XyDIZIMVYDlSL0fJCb1sfzllBlV4p2MDlWAuG9MxEQcFKuDo5aYHtArfgKT WDV/D7UiLbG40aMTmqGRepKTLDALCvWcTS1AJh6V5+Hf99hgQiI7fP1F+g+mBmRmte2V 39Yg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id 20-20020a630114000000b00553caa0c899si2951126pgb.771.2023.06.25.02.13.53; Sun, 25 Jun 2023 02:14:08 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231665AbjFYIaC (ORCPT + 99 others); Sun, 25 Jun 2023 04:30:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58918 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230465AbjFYIaB (ORCPT ); Sun, 25 Jun 2023 04:30:01 -0400 Received: from relay2-d.mail.gandi.net (relay2-d.mail.gandi.net [217.70.183.194]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6EB81E78; Sun, 25 Jun 2023 01:29:58 -0700 (PDT) X-GND-Sasl: hadess@hadess.net X-GND-Sasl: hadess@hadess.net X-GND-Sasl: hadess@hadess.net X-GND-Sasl: hadess@hadess.net X-GND-Sasl: hadess@hadess.net X-GND-Sasl: hadess@hadess.net Received: by mail.gandi.net (Postfix) with ESMTPSA id 5060140006; Sun, 25 Jun 2023 08:29:55 +0000 (UTC) Message-ID: Subject: Re: [PATCH] HID: logitech-hidpp: rework one more time the retries attempts From: Bastien Nocera To: Benjamin Tissoires , Filipe =?ISO-8859-1?Q?La=EDns?= , Jiri Kosina Cc: linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Date: Sun, 25 Jun 2023 10:29:54 +0200 In-Reply-To: <20230621-logitech-fixes-v1-1-32e70933c0b0@redhat.com> References: <20230621-logitech-fixes-v1-1-32e70933c0b0@redhat.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.48.3 (3.48.3-1.fc38) MIME-Version: 1.0 X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS, 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 lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gV2VkLCAyMDIzLTA2LTIxIGF0IDExOjQyICswMjAwLCBCZW5qYW1pbiBUaXNzb2lyZXMgd3Jv dGU6Cj4gTWFrZSB0aGUgY29kZSBsb29rcyBsZXNzIGxpa2UgUGFzY2FsLgoKSG9uZXN0bHksIHdo aWxlIHRoaXMgd2FzIHdyaXR0ZW4gaW4gamVzdCBpbiBhbiBlbWFpbCBpcyBmaW5lLCBwdXR0aW5n CnRoaXMgaW4gdGhlIGNvbW1pdCBtZXNzYWdlIGlzIHF1aXRlIGluc3VsdGluZy4KClRoZSAicmV0 cnkiIHBhdGNoIHRyaWVkIHRvIGZpeCByZWFsIHdvcmxkIHByb2JsZW1zIGJ5IG1ha2luZyBtaW5p bWFsCmNvZGUgY2hhbmdlcywgZWcuIGF2b2lkaW5nIHRoZSByZXZpZXcgcHJvYmxlbSB0aGF0IHRo ZSBwcmVzZW50IHBhdGNoCmhhcywgYW5kIGV2ZW4gdGhlbiwgYWxsIG9mIHVzIG1pc3NlZCB0aGUg bG9naWMgYnVnLgoKSSBhbHNvIGhhdmVuJ3Qgd3JpdHRlbiBhbnkgUGFzY2FsIGNvZGUgc2luY2Ug MTk5Ni4KCj4gRXh0cmFjdCB0aGUgaW50ZXJuYWwgY29kZSBpbnNpZGUgYSBoZWxwZXIgZnVuY3Rp b24sIGZpeCB0aGUKPiBpbml0aWFsaXphdGlvbiBvZiB0aGUgcGFyYW1ldGVycyB1c2VkIGluIHRo ZSBoZWxwZXIgZnVuY3Rpb24KPiAoYGhpZHBwLT5hbnN3ZXJfYXZhaWxhYmxlYCB3YXMgbm90IHJl c2V0IGFuZCBgKnJlc3BvbnNlYCB3YXNuJ3QgdG9vKSwKCiJ3YXNuJ3QgZWl0aGVyIi4KCj4gYW5k IHVzZSBhIGBkbyB7Li4ufSB3aGlsZSgpO2AgbG9vcC4KPiAKPiBGaXhlczogNTg2ZThmZWRlNzk1 ICgiSElEOiBsb2dpdGVjaC1oaWRwcDogUmV0cnkgY29tbWFuZHMgd2hlbiBkZXZpY2UKPiBpcyBi dXN5IikKPiBDYzogc3RhYmxlQHZnZXIua2VybmVsLm9yZwo+IFNpZ25lZC1vZmYtYnk6IEJlbmph bWluIFRpc3NvaXJlcyA8YmVuamFtaW4udGlzc29pcmVzQHJlZGhhdC5jb20+Cj4gLS0tCj4gYXMg cmVxdWVzdGVkIGJ5Cj4gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvYWxsL0NBSGstPXdpTWJGMzhL Q05oUEZpYXJnZW5wU0JvZWNTWFRMUUFDS1MyVU15b19WdTJ3d0BtYWlsLmdtYWlsLmNvbS8KPiBU aGlzIGlzIGEgcmV3cml0ZSBvZiB0aGF0IHBhcnRpY3VsYXIgcGllY2Ugb2YgY29kZS4KPiAtLS0K PiDCoGRyaXZlcnMvaGlkL2hpZC1sb2dpdGVjaC1oaWRwcC5jIHwgMTAyICsrKysrKysrKysrKysr KysrKysrKysrLS0tLS0tCj4gLS0tLS0tLS0tLQo+IMKgMSBmaWxlIGNoYW5nZWQsIDYxIGluc2Vy dGlvbnMoKyksIDQxIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2hpZC9o aWQtbG9naXRlY2gtaGlkcHAuYyBiL2RyaXZlcnMvaGlkL2hpZC0KPiBsb2dpdGVjaC1oaWRwcC5j Cj4gaW5kZXggZGZlOGUwOWExOGRlLi4zZDFmZmUxOTlmMDggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9oaWQvaGlkLWxvZ2l0ZWNoLWhpZHBwLmMKPiArKysgYi9kcml2ZXJzL2hpZC9oaWQtbG9naXRl Y2gtaGlkcHAuYwo+IEBAIC0yNzUsMjEgKzI3NSwyMCBAQCBzdGF0aWMgaW50IF9faGlkcHBfc2Vu ZF9yZXBvcnQoc3RydWN0Cj4gaGlkX2RldmljZSAqaGRldiwKPiDCoH0KPiDCoAo+IMKgLyoKPiAt ICogaGlkcHBfc2VuZF9tZXNzYWdlX3N5bmMoKSByZXR1cm5zIDAgaW4gY2FzZSBvZiBzdWNjZXNz LCBhbmQKPiBzb21ldGhpbmcgZWxzZQo+IC0gKiBpbiBjYXNlIG9mIGEgZmFpbHVyZS4KPiAtICog LSBJZiAnIHNvbWV0aGluZyBlbHNlJyBpcyBwb3NpdGl2ZSwgdGhhdCBtZWFucyB0aGF0IGFuIGVy cm9yIGhhcwo+IGJlZW4gcmFpc2VkCj4gLSAqwqDCoCBieSB0aGUgcHJvdG9jb2wgaXRzZWxmLgo+ IC0gKiAtIElmICcgc29tZXRoaW5nIGVsc2UnIGlzIG5lZ2F0aXZlLCB0aGF0IG1lYW5zIHRoYXQg d2UgaGFkIGEKPiBjbGFzc2ljIGVycm9yCj4gLSAqwqDCoCAoLUVOT01FTSwgLUVQSVBFLCBldGMu Li4pCj4gKyAqIEVmZmVjdGl2ZWx5IHNlbmQgdGhlIG1lc3NhZ2UgdG8gdGhlIGRldmljZSwgd2Fp dGluZyBmb3IgaXRzCj4gYW5zd2VyLgo+ICsgKgo+ICsgKiBNdXN0IGJlIGNhbGxlZCB3aXRoIGhp ZHBwLT5zZW5kX211dGV4IGxvY2tlZAo+ICsgKgo+ICsgKiBTYW1lIHJldHVybiBwcm90b2NvbCB0 aGFuIGhpZHBwX3NlbmRfbWVzc2FnZV9zeW5jKCk6Cj4gKyAqIC0gc3VjY2VzcyBvbiAwCj4gKyAq IC0gbmVnYXRpdmUgZXJyb3IgbWVhbnMgdHJhbnNwb3J0IGVycm9yCj4gKyAqIC0gcG9zaXRpdmUg dmFsdWUgbWVhbnMgcHJvdG9jb2wgZXJyb3IKPiDCoCAqLwo+IC1zdGF0aWMgaW50IGhpZHBwX3Nl bmRfbWVzc2FnZV9zeW5jKHN0cnVjdCBoaWRwcF9kZXZpY2UgKmhpZHBwLAo+ICtzdGF0aWMgaW50 IF9fZG9faGlkcHBfc2VuZF9tZXNzYWdlX3N5bmMoc3RydWN0IGhpZHBwX2RldmljZSAqaGlkcHAs Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBoaWRwcF9yZXBvcnQgKm1lc3NhZ2UsCj4gwqDCoMKg wqDCoMKgwqDCoHN0cnVjdCBoaWRwcF9yZXBvcnQgKnJlc3BvbnNlKQo+IMKgewo+IC3CoMKgwqDC oMKgwqDCoGludCByZXQgPSAtMTsKPiAtwqDCoMKgwqDCoMKgwqBpbnQgbWF4X3JldHJpZXMgPSAz Owo+IC0KPiAtwqDCoMKgwqDCoMKgwqBtdXRleF9sb2NrKCZoaWRwcC0+c2VuZF9tdXRleCk7Cj4g K8KgwqDCoMKgwqDCoMKgaW50IHJldDsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBoaWRwcC0+c2Vu ZF9yZWNlaXZlX2J1ZiA9IHJlc3BvbnNlOwo+IMKgwqDCoMKgwqDCoMKgwqBoaWRwcC0+YW5zd2Vy X2F2YWlsYWJsZSA9IGZhbHNlOwo+IEBAIC0zMDAsNDEgKzI5OSw2MiBAQCBzdGF0aWMgaW50IGhp ZHBwX3NlbmRfbWVzc2FnZV9zeW5jKHN0cnVjdAo+IGhpZHBwX2RldmljZSAqaGlkcHAsCj4gwqDC oMKgwqDCoMKgwqDCoCAqLwo+IMKgwqDCoMKgwqDCoMKgwqAqcmVzcG9uc2UgPSAqbWVzc2FnZTsK PiDCoAo+IC3CoMKgwqDCoMKgwqDCoGZvciAoOyBtYXhfcmV0cmllcyAhPSAwICYmIHJldDsgbWF4 X3JldHJpZXMtLSkgewo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXQgPSBfX2hp ZHBwX3NlbmRfcmVwb3J0KGhpZHBwLT5oaWRfZGV2LCBtZXNzYWdlKTsKPiArwqDCoMKgwqDCoMKg wqByZXQgPSBfX2hpZHBwX3NlbmRfcmVwb3J0KGhpZHBwLT5oaWRfZGV2LCBtZXNzYWdlKTsKPiAr wqDCoMKgwqDCoMKgwqBpZiAocmV0KSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGRiZ19oaWQoIl9faGlkcHBfc2VuZF9yZXBvcnQgcmV0dXJuZWQgZXJyOiAlZFxuIiwKPiByZXQp Owo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBtZW1zZXQocmVzcG9uc2UsIDAsIHNp emVvZihzdHJ1Y3QgaGlkcHBfcmVwb3J0KSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHJldHVybiByZXQ7Cj4gK8KgwqDCoMKgwqDCoMKgfQo+IMKgCj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGlmIChyZXQpIHsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGRiZ19oaWQoIl9faGlkcHBfc2VuZF9yZXBvcnQgcmV0dXJuZWQg ZXJyOgo+ICVkXG4iLCByZXQpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgbWVtc2V0KHJlc3BvbnNlLCAwLCBzaXplb2Yoc3RydWN0Cj4gaGlkcHBfcmVw b3J0KSk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBi cmVhazsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICvCoMKgwqDCoMKgwqDC oGlmICghd2FpdF9ldmVudF90aW1lb3V0KGhpZHBwLT53YWl0LCBoaWRwcC0+YW5zd2VyX2F2YWls YWJsZSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqA1KkhaKSkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBk YmdfaGlkKCIlczp0aW1lb3V0IHdhaXRpbmcgZm9yIHJlc3BvbnNlXG4iLAo+IF9fZnVuY19fKTsK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbWVtc2V0KHJlc3BvbnNlLCAwLCBzaXpl b2Yoc3RydWN0IGhpZHBwX3JlcG9ydCkpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqByZXR1cm4gLUVUSU1FRE9VVDsKPiArwqDCoMKgwqDCoMKgwqB9Cj4gwqAKPiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCF3YWl0X2V2ZW50X3RpbWVvdXQoaGlkcHAtPndhaXQs IGhpZHBwLQo+ID5hbnN3ZXJfYXZhaWxhYmxlLAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA1Kkha KSkgewo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGJn X2hpZCgiJXM6dGltZW91dCB3YWl0aW5nIGZvciByZXNwb25zZVxuIiwKPiBfX2Z1bmNfXyk7Cj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBtZW1zZXQocmVz cG9uc2UsIDAsIHNpemVvZihzdHJ1Y3QKPiBoaWRwcF9yZXBvcnQpKTsKPiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldCA9IC1FVElNRURPVVQ7Cj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICvCoMKgwqDCoMKgwqDCoGlmIChyZXNwb25z ZS0+cmVwb3J0X2lkID09IFJFUE9SVF9JRF9ISURQUF9TSE9SVCAmJgo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoCByZXNwb25zZS0+cmFwLnN1Yl9pZCA9PSBISURQUF9FUlJPUikgewo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXQgPSByZXNwb25zZS0+cmFwLnBhcmFtc1sxXTsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGJnX2hpZCgiJXM6Z290IGhpZHBwIGVycm9y ICUwMlhcbiIsIF9fZnVuY19fLCByZXQpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqByZXR1cm4gcmV0Owo+ICvCoMKgwqDCoMKgwqDCoH0KPiDCoAo+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBpZiAocmVzcG9uc2UtPnJlcG9ydF9pZCA9PSBSRVBPUlRfSURfSElEUFBf U0hPUlQgJiYKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlc3BvbnNl LT5yYXAuc3ViX2lkID09IEhJRFBQX0VSUk9SKSB7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXQgPSByZXNwb25zZS0+cmFwLnBhcmFtc1sxXTsKPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRiZ19oaWQoIiVz OmdvdCBoaWRwcCBlcnJvciAlMDJYXG4iLAo+IF9fZnVuY19fLCByZXQpOwo+ICvCoMKgwqDCoMKg wqDCoGlmICgocmVzcG9uc2UtPnJlcG9ydF9pZCA9PSBSRVBPUlRfSURfSElEUFBfTE9ORyB8fAo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlc3BvbnNlLT5yZXBvcnRfaWQgPT0gUkVQT1JUX0lE X0hJRFBQX1ZFUllfTE9ORykgJiYKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmVzcG9uc2UtPmZh cC5mZWF0dXJlX2luZGV4ID09IEhJRFBQMjBfRVJST1IpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgcmV0ID0gcmVzcG9uc2UtPmZhcC5wYXJhbXNbMV07Cj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGRiZ19oaWQoIiVzOmdvdCBoaWRwcCAyLjAgZXJyb3IgJTAyWFxu IiwgX19mdW5jX18sCj4gcmV0KTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0 dXJuIHJldDsKPiArwqDCoMKgwqDCoMKgwqB9Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHJldHVybiAw Owo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBoaWRwcF9zZW5kX21lc3NhZ2Vfc3luYygpIHJldHVybnMg MCBpbiBjYXNlIG9mIHN1Y2Nlc3MsIGFuZAo+IHNvbWV0aGluZyBlbHNlCj4gKyAqIGluIGNhc2Ug b2YgYSBmYWlsdXJlLgo+ICsgKiAtIElmICcgc29tZXRoaW5nIGVsc2UnIGlzIHBvc2l0aXZlLCB0 aGF0IG1lYW5zIHRoYXQgYW4gZXJyb3IgaGFzCj4gYmVlbiByYWlzZWQKPiArICrCoMKgIGJ5IHRo ZSBwcm90b2NvbCBpdHNlbGYuCj4gKyAqIC0gSWYgJyBzb21ldGhpbmcgZWxzZScgaXMgbmVnYXRp dmUsIHRoYXQgbWVhbnMgdGhhdCB3ZSBoYWQgYQo+IGNsYXNzaWMgZXJyb3IKPiArICrCoMKgICgt RU5PTUVNLCAtRVBJUEUsIGV0Yy4uLikKCkRvIHdlIHJlYWxseSBuZWVkIHRvIHJlLWV4cGxhaW4g dGhlIHBvc3NpYmxlIHJldHVybiB2YWx1ZXMgdGhhdCB3ZXJlCmFscmVhZHkgZXhwbGFpbmVkIGFi b3ZlIF9fZG9faGlkcHBfc2VuZF9tZXNzYWdlX3N5bmMoKT8KCklmIHdlIGRvLCB3aHkgZG9uJ3Qg YWxzbyBkbyBpdCBmb3IgaGlkcHBfc2VuZF9mYXBfY29tbWFuZF9zeW5jKCkgYW5kCmhpZHBwX3Nl bmRfcmFwX2NvbW1hbmRfc3luYygpLCBvciB0aGVpciBjYWxsZXJzPwoKSWYgaXQncyBhYnNvbHV0 ZWx5IG5lY2Vzc2FyeSwgYSAic2VlIF9fZG9faGlkcHBfc2VuZF9tZXNzYWdlX3N5bmMoKSIKc2hv dWxkIGJlIGVub3VnaC4KCkkndmUgZG91YmxlLWNoZWNrZWQgdGhhdCBub25lIG9mIHRoZSBleGlz dGluZyBjYWxsZXJzIGV4cGVjdGVkIGEKcGFydGlhbGx5IGZpbGxlZCBpbiAicmVzcG9uc2UiIHN0 cnVjdCBvbiBlcnJvci4KClJldmlld2VkLWJ5OiBCYXN0aWVuIE5vY2VyYSA8aGFkZXNzQGhhZGVz cy5uZXQ+Cgo+ICsgKi8KPiArc3RhdGljIGludCBoaWRwcF9zZW5kX21lc3NhZ2Vfc3luYyhzdHJ1 Y3QgaGlkcHBfZGV2aWNlICpoaWRwcCwKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaGlkcHBfcmVw b3J0ICptZXNzYWdlLAo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBoaWRwcF9yZXBvcnQgKnJlc3Bv bnNlKQo+ICt7Cj4gK8KgwqDCoMKgwqDCoMKgaW50IHJldDsKPiArwqDCoMKgwqDCoMKgwqBpbnQg bWF4X3JldHJpZXMgPSAzOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBtdXRleF9sb2NrKCZoaWRwcC0+ c2VuZF9tdXRleCk7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGRvIHsKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgcmV0ID0gX19kb19oaWRwcF9zZW5kX21lc3NhZ2Vfc3luYyhoaWRwcCwg bWVzc2FnZSwKPiByZXNwb25zZSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlm IChyZXQgIT0gSElEUFAyMF9FUlJPUl9CVVNZKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB9Cj4gwqAKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKChyZXNwb25z ZS0+cmVwb3J0X2lkID09IFJFUE9SVF9JRF9ISURQUF9MT05HIHx8Cj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlc3BvbnNlLT5yZXBvcnRfaWQgPT0KPiBSRVBPUlRf SURfSElEUFBfVkVSWV9MT05HKSAmJgo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcmVzcG9uc2UtPmZhcC5mZWF0dXJlX2luZGV4ID09IEhJRFBQMjBfRVJST1IpIHsKPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldCA9IHJlc3Bv bnNlLT5mYXAucGFyYW1zWzFdOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaWYgKHJldCAhPSBISURQUDIwX0VSUk9SX0JVU1kpIHsKPiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkYmdf aGlkKCIlczpnb3QgaGlkcHAgMi4wIGVycm9yCj4gJTAyWFxuIiwgX19mdW5jX18sIHJldCk7Cj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgYnJlYWs7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB9Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBk YmdfaGlkKCIlczpnb3QgYnVzeSBoaWRwcCAyLjAgZXJyb3IgJTAyWCwKPiByZXRyeWluZ1xuIiwg X19mdW5jX18sIHJldCk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiAtwqDC oMKgwqDCoMKgwqB9Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRiZ19oaWQoIiVz OmdvdCBidXN5IGhpZHBwIDIuMCBlcnJvciAlMDJYLAo+IHJldHJ5aW5nXG4iLCBfX2Z1bmNfXywg cmV0KTsKPiArwqDCoMKgwqDCoMKgwqB9IHdoaWxlICgtLW1heF9yZXRyaWVzKTsKPiDCoAo+IMKg wqDCoMKgwqDCoMKgwqBtdXRleF91bmxvY2soJmhpZHBwLT5zZW5kX211dGV4KTsKPiDCoMKgwqDC oMKgwqDCoMKgcmV0dXJuIHJldDsKPiAKPiAtLS0KPiBiYXNlLWNvbW1pdDogYjk4ZWMyMTFhZjU1 MDg0NTdlMmIxYzRjYzk5MzczNjMwYTgzZmE4MQo+IGNoYW5nZS1pZDogMjAyMzA2MjEtbG9naXRl Y2gtZml4ZXMtYTRjMGU2NmVhMmFkCj4gCj4gQmVzdCByZWdhcmRzLAoK