Received: by 2002:a05:7412:d8a:b0:e2:908c:2ebd with SMTP id b10csp807205rdg; Fri, 13 Oct 2023 01:23:43 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEjNnNgyo1n5dqfp1hw2NEuDK7ZU18c9jPa2Q7FZDK7PCyRheJBgA5OR3CsYcz9v8Vrq8xk X-Received: by 2002:a05:6808:2189:b0:3a9:7634:23f9 with SMTP id be9-20020a056808218900b003a9763423f9mr35997601oib.12.1697185423108; Fri, 13 Oct 2023 01:23:43 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1697185423; cv=pass; d=google.com; s=arc-20160816; b=gN7EYa78WNDY+R7ABrAv6fS5KpXhWDAIQf3zsdvFI/DOLCHc5/2VEXuneyI8xyi5T3 KYnUBW+BleWN5OWJmjf1IBZWCOtH26iVZ+JD6k/EcV54Xah05a1Ys3WNwAmC8rhVDlzR JXsnJXRm9Ae2Pm47nEqsBxUHoyBqgsEMAG5kEmdnLyFH1SWqh0rzJ3PiQoKiMudVft2R 6535PTsEXHb/vmKT6SZiILxU4Ry8xVyd6rEBMbGzwhP8IcwxtpvoEQ56tT5k5WQZR7Kf +63Vo3U3HAE9lGDx+CkXKXZ3ohO4rPu1pP5jpV87yHrZO2Ck7ycJGH29dLxDBs7/LgSD 3X7Q== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:user-agent :content-transfer-encoding:organization:references:in-reply-to:date :cc:to:from:subject:message-id:dkim-signature; bh=AemtsdsCKrAWldBDdSq7AGJJK3tarV/yGDcyaWBWY60=; fh=dZL6AkFiR0bjEGmdxveAfuzzVY0OPa7iYIKtuqsIcrI=; b=wpaHtvq1NeWvGk0FWw5YVN26g8B2OyUHkeO4187ie/cfEBE13xCpkBaMGdXA06zk1n o6cmlx8uM6bemNLImNXj6Awvfu38gzptyThfhlTQQnVbdWKBDHLf9tp3QX2aQYxxVV9Z bVWTOuqHvah47u0Mp/94kNIQoVYAcU79MOjRDiNmTP4uy5yX6VebQPbL8iBQVZKmkeLh LpOOd3dYu+3ds93ZT9eR73RJacmTUIXafFPxowNEM0aDsvbt9CwqSkva5gdR+6Cs7ZF8 75B42d3iwV3jGiV99yS2krF+Aiq+CHd0GdzKHJdlKk93B5g7C0VMpqutKc/9Fw9xviop zOsA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@icenowy.me header.s=zmail2 header.b=ML7qUhpf; arc=pass (i=1 spf=pass spfdomain=icenowy.me dkim=pass dkdomain=icenowy.me dmarc=pass fromdomain=icenowy.me>); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=icenowy.me Return-Path: Received: from fry.vger.email (fry.vger.email. [2620:137:e000::3:8]) by mx.google.com with ESMTPS id v189-20020a6389c6000000b00564f223ef05si1620197pgd.11.2023.10.13.01.23.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Oct 2023 01:23:43 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) client-ip=2620:137:e000::3:8; Authentication-Results: mx.google.com; dkim=pass header.i=@icenowy.me header.s=zmail2 header.b=ML7qUhpf; arc=pass (i=1 spf=pass spfdomain=icenowy.me dkim=pass dkdomain=icenowy.me dmarc=pass fromdomain=icenowy.me>); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=icenowy.me Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by fry.vger.email (Postfix) with ESMTP id C3A4580AB5A5; Fri, 13 Oct 2023 01:23:36 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229989AbjJMIXI (ORCPT + 99 others); Fri, 13 Oct 2023 04:23:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46480 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229743AbjJMIXH (ORCPT ); Fri, 13 Oct 2023 04:23:07 -0400 Received: from sender4-op-o10.zoho.com (sender4-op-o10.zoho.com [136.143.188.10]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0A242B8 for ; Fri, 13 Oct 2023 01:23:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697185364; cv=none; d=zohomail.com; s=zohoarc; b=g3lslIfbM3zPezQmXKIb7AxXL01OokY/EZ0EuuMHz13aC2QX7OJFZAats8fp5mL3OtM9nZWf287zcg1BdFd3uuWvV6AvMqP/7yO6/gEdG8rGsRU+7syPhEP4jVPNQV07bF4m7RGmM6DloD/hC5bkTDkZ4parGB94WqPjmgsYCSo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1697185364; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=AemtsdsCKrAWldBDdSq7AGJJK3tarV/yGDcyaWBWY60=; b=mjSL24iE+7GE+FL6PLsHyb9cNuvd0yZzd4EyYeOGpWyCegjdj2KkQg2tw8LArojdto8RVTqCOvZ35CyfAZFnyT+pcrTPwWIXRIotb82lJZFrSvoEIBhNLSaTSY6kx5HtOePsf/LYxTVSLCeCeX6JaE7jE5soakiNq4t/eEE9NKI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=icenowy.me; spf=pass smtp.mailfrom=uwu@icenowy.me; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1697185364; s=zmail2; d=icenowy.me; i=uwu@icenowy.me; h=Message-ID:Subject:Subject:From:From:To:To:Cc:Cc:Date:Date:In-Reply-To:References:Content-Type:Content-Transfer-Encoding:MIME-Version:Message-Id:Reply-To; bh=AemtsdsCKrAWldBDdSq7AGJJK3tarV/yGDcyaWBWY60=; b=ML7qUhpf/+UnFrXLbhpqsOXx/5T+DV8vmtdynNC4crTkzVirB+WwmmSu0TgaSfTb n1et4A48yZPTvLJx7pBpVUkLFvl/ptwdUVIg3wJZ4Pm4q9eytGB/rKssCJHWiWDsdTz G41L54tzIHQx6VLGDNEs9I6E29acI2SD2oa3DuVN0X1Lv8HjOzk1etdmFdBCVygb2gX rtK+VG2TzR4or3cG07NQHIEPyCjypZBbJGWcyr/Q26qJfZ/XWHxdR7Vx7n3LYg2Nni1 k2Ol2W+pislEqYetBQs5k0cdN5pueNvFW2iZmBiU8s4bOCNCpWfoHtqvd4F12biVLRK 7F+fiEGRrQ== Received: from edelgard.fodlan.icenowy.me (120.85.96.102 [120.85.96.102]) by mx.zohomail.com with SMTPS id 169718536302759.76735194967705; Fri, 13 Oct 2023 01:22:43 -0700 (PDT) Message-ID: <26565c5e13e72c64214a7f67ab6f2d9d876fa4bd.camel@icenowy.me> Subject: Re: [PATCH] drm/loongson: Add support for the DC in LS2K1000 SoC From: Icenowy Zheng To: Sui Jingfeng , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter Cc: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org Date: Fri, 13 Oct 2023 16:22:38 +0800 In-Reply-To: <20231011162638.819080-1-suijingfeng@loongson.cn> References: <20231011162638.819080-1-suijingfeng@loongson.cn> Organization: Anthon Open-Source Community Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.44.4 MIME-Version: 1.0 X-ZohoMailClient: External X-Spam-Status: No, score=0.8 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLACK autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (fry.vger.email [0.0.0.0]); Fri, 13 Oct 2023 01:23:36 -0700 (PDT) 5ZyoIDIwMjMtMTAtMTLmmJ/mnJ/lm5vnmoQgMDA6MjYgKzA4MDDvvIxTdWkgSmluZ2Zlbmflhpnp gZPvvJoKPiBMUzJLMTAwMCBpcyBhIGxvdyBlbmQgU29DICh0d28gY29yZSAxLjBnSHopLCBpdCBk b24ndCBoYXMgZGVkaWNhdGVkCj4gVlJBTS4KPiBJdCByZXF1aXJlcyB0aGUgZnJhbWVidWZmZXIg dG8gYmUgcGhpc2ljYWxseSBjb250aW5ndW91cyB0byBzY2Fub3V0Lgo+IFRoZQo+IGRpc3BsYXkg Y29udHJvbGxlciBpbiBMUzJLMTAwMCBkb24ndCBoYXMgYnVpbHQtaW4gR1BJTyBoYXJkd2FyZSwg dGhlCj4gc3RydWN0dXJlIChyZWdpc3RlciBiaXQgZmllbGQpIG9mIGl0cyBwaXhlbCwgREMsIEdQ VSwgRERSIFBMTCBhcmUKPiBhbHNvCj4gZGVmZmVyZW50IGZyb20gb3RoZXIgbW9kZWwuIEJ1dCBm b3IgdGhlIGRpc3BsYXkgY29udHJvbGxlciBpdHNlbGYsCj4gTW9zdCBvZgo+IGhhcmR3YXJlIGZl YXR1cmVzIG9mIGl0IGFyZSBzYW1lIHdpdGggbHM3YTEwMDAuCj4gCj4gQmVsb3cgaXMgYSBzaW1w bGUgZHRzIGZvciBpdC4KCldoeSBkb24ndCB5b3Ugd3JpdGUgYSBwcm9wZXIsIFlBTUwtZm9ybWF0 dGVkIGJpbmRpbmc/CgpUaGlzIHdpbGwgaGVscCBoYW5kbGluZyB0aGUgY29ycmVjdG5lc3Mgb2Yg ZGV2aWNlIHRyZWVzLCBhbmQgYSBiaW5kaW5nCmlzIHJlcXVpcmVkIHRvIGFsbG93IHRoZSBkcml2 ZXIgdG8gZW50ZXIuCgo+IAo+IGFsaWFzZXMgewo+IMKgwqDCoMKgwqDCoMKgIGkyYzAgPSAmaTJj MDsKPiDCoMKgwqDCoMKgwqDCoCBpMmMxID0gJmkyYzE7Cj4gfTsKPiAKPiByZXNlcnZlZC1tZW1v cnkgewo+IMKgwqDCoMKgwqDCoMKgICNhZGRyZXNzLWNlbGxzID0gPDI+Owo+IMKgwqDCoMKgwqDC oMKgICNzaXplLWNlbGxzID0gPDI+Owo+IMKgwqDCoMKgwqDCoMKgIHJhbmdlczsKPiAKPiDCoMKg wqDCoMKgwqDCoCBkaXNwbGF5X3Jlc2VydmVkOiBmcmFtZWJ1ZmZlckAzMDAwMDAwMCB7Cj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb21wYXRpYmxlID0gInNoYXJlZC1kbWEt cG9vbCI7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZWcgPSA8MHgwIDB4 MjAwMDAwMDAgMHgwIDB4MDgwMDAwMDA+OyAvKiAxMjhNICovCj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBsaW51eCxjbWEtZGVmYXVsdDsKPiDCoMKgwqDCoMKgwqDCoCB9Owo+ IH07Cj4gCj4gaTJjMDogaTJjLWdwaW8tMCB7Cj4gwqDCoMKgwqDCoMKgwqAgY29tcGF0aWJsZSA9 ICJpMmMtZ3BpbyI7Cj4gwqDCoMKgwqDCoMKgwqAgc2NsLWdwaW9zID0gPCZncGlvMCAwIChHUElP X0FDVElWRV9ISUdIIHwgR1BJT19PUEVOX0RSQUlOKT47Cj4gwqDCoMKgwqDCoMKgwqAgc2RhLWdw aW9zID0gPCZncGlvMCAxIChHUElPX0FDVElWRV9ISUdIIHwgR1BJT19PUEVOX0RSQUlOKT47Cj4g wqDCoMKgwqDCoMKgwqAgaTJjLWdwaW8sZGVsYXktdXMgPSA8NT47wqDCoMKgwqDCoMKgwqAgLyog fjEwMCBrSHogKi8KPiDCoMKgwqDCoMKgwqDCoCBzdGF0dXMgPSAib2theSI7Cj4gfTsKPiAKPiBp MmMxOiBpMmMtZ3Bpby0xIHsKPiDCoMKgwqDCoMKgwqDCoCBjb21wYXRpYmxlID0gImkyYy1ncGlv IjsKPiDCoMKgwqDCoMKgwqDCoCBzY2wtZ3Bpb3MgPSA8JmdwaW8wIDMzIChHUElPX0FDVElWRV9I SUdIIHwgR1BJT19PUEVOX0RSQUlOKT47Cj4gwqDCoMKgwqDCoMKgwqAgc2RhLWdwaW9zID0gPCZn cGlvMCAzMiAoR1BJT19BQ1RJVkVfSElHSCB8IEdQSU9fT1BFTl9EUkFJTik+Owo+IMKgwqDCoMKg wqDCoMKgIGkyYy1ncGlvLGRlbGF5LXVzID0gPDU+O8KgwqDCoMKgwqDCoMKgIC8qIH4xMDAga0h6 ICovCj4gwqDCoMKgwqDCoMKgwqAgc3RhdHVzID0gIm9rYXkiOwo+IH07Cj4gCj4gZGlzcGxheS1j b250cm9sbGVyQDYsMCB7Cj4gwqDCoMKgwqDCoMKgwqAgcmVnID0gPDB4MzAwMCAweDAgMHgwIDB4 MCAweDA+Owo+IMKgwqDCoMKgwqDCoMKgIGludGVycnVwdC1wYXJlbnQgPSA8Jmxpb2ludGMwPjsK PiDCoMKgwqDCoMKgwqDCoCBpbnRlcnJ1cHRzID0gPDI4IElSUV9UWVBFX0xFVkVMX0hJR0g+Cj4g wqDCoMKgwqDCoMKgwqAgbWVtb3J5LXJlZ2lvbiA9IDwmZGlzcGxheV9yZXNlcnZlZD47CgpJcyBh IHN5c3RlbS13aWRlIENNQSBwb29sIGVub3VnaCBmb3IgdGhpcyB1c2FnZT8gQW5kIGZvciBhIGRp c3BsYXkKY29udHJvbGxlciwgd2lsbCAxMjhNIGJlIHRvbyBtdWNoPyAoSSBhc3N1bWUgdGhlIFZp dmFudGUgR1BVIGRvIG5vdApyZXF1aXJlIGNvbnRpbmdvdXMgbWVtb3J5KS4KCj4gwqDCoMKgwqDC oMKgwqAgc3RhdHVzID0gIm9rYXkiOwo+IH07Cj4gCj4gVGhpcyBwYXRjaCBpcyB0ZXN0ZWQgb24g bHMyazEwMDAgZXZhbHVhdGlvbiBib2FyZC4KPiAKPiAkIGRtZXNnIHwgZ3JlcCAiMDAwMDowMDow Ni4wIgo+IAo+IMKgbG9vbmdzb24gMDAwMDowMDowNi4wOiBGb3VuZCBMUzJLMTAwMCBTb0MsIHJl dmlzaW9uOiAwCj4gwqBsb29uZ3NvbiAwMDAwOjAwOjA2LjA6IFtkcm1dIGRjOiAyNTBNSHosIGRk cjogNDAwTUh6LCBncHU6IDIyOE1Iego+IMKgbG9vbmdzb24gMDAwMDowMDowNi4wOiBbZHJtXSBV c2luZyBvZiByZXNlcnZlZCBtZW06Cj4gODAwMDAwMEAweDIwMDAwMDAwCj4gwqBsb29uZ3NvbiAw MDAwOjAwOjA2LjA6IFtkcm1dIFZSQU06IDgxOTIgcGFnZXMgcmVhZHkKPiDCoGxvb25nc29uIDAw MDA6MDA6MDYuMDogW2RybV0gR1RUOiAzMjc2OCBwYWdlcyByZWFkeQo+IMKgbG9vbmdzb24gMDAw MDowMDowNi4wOiBbZHJtXSBkaXNwbGF5IHBpcGUtMCBoYXMgYSBEVk8KPiDCoGxvb25nc29uIDAw MDA6MDA6MDYuMDogW2RybV0gZGlzcGxheSBwaXBlLTEgaGFzIGEgRFZPCj4gwqBsb29uZ3NvbiAw MDAwOjAwOjA2LjA6IFtkcm1dIFRvdGFsIDIgb3V0cHV0cwo+IMKgbG9vbmdzb24gMDAwMDowMDow Ni4wOiBbZHJtXSByZWdpc3RlcmVkIGlycTogMjgKPiDCoFtkcm1dIEluaXRpYWxpemVkIGxvb25n c29uIDEuMC4wIDIwMjIwNzAxIGZvciAwMDAwOjAwOjA2LjAgb24gbWlub3IKPiAwCj4gwqBsb29u Z3NvbiAwMDAwOjAwOjA2LjA6IFtkcm1dIGZiMDogbG9vbmdzb25kcm1mYiBmcmFtZSBidWZmZXIg ZGV2aWNlCj4gCj4gU2lnbmVkLW9mZi1ieTogU3VpIEppbmdmZW5nIDxzdWlqaW5nZmVuZ0Bsb29u Z3Nvbi5jbj4KPiAtLS0KPiDCoGRyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9NYWtlZmlsZcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAxICsKPiDCoGRyaXZlcnMvZ3B1L2RybS9sb29uZ3Nv bi9sb29uZ3Nvbl9kZXZpY2UuY8KgwqDCoCB8wqAgNTkgKysrKysrKwo+IMKgZHJpdmVycy9ncHUv ZHJtL2xvb25nc29uL2xzZGNfZHJ2LmPCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgNDQgKysrKy0K PiDCoGRyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sc2RjX2Rydi5owqDCoMKgwqDCoMKgwqDCoMKg wqAgfMKgwqAgOSArKwo+IMKgZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xzZGNfZ2Z4cGxsLmPC oMKgwqDCoMKgwqDCoCB8wqAgMTEgKy0KPiDCoGRyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sc2Rj X2dmeHBsbC5owqDCoMKgwqDCoMKgwqAgfMKgwqAgNCArCj4gwqBkcml2ZXJzL2dwdS9kcm0vbG9v bmdzb24vbHNkY19nZnhwbGxfMmsxMDAwLmMgfCAxNDEgKysrKysrKysrKysrKysrKwo+IMKgZHJp dmVycy9ncHUvZHJtL2xvb25nc29uL2xzZGNfaTJjLmPCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAg NDEgKysrKysKPiDCoGRyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sc2RjX2kyYy5owqDCoMKgwqDC oMKgwqDCoMKgwqAgfMKgwqAgNCArCj4gwqBkcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24vbHNkY19w aXhwbGwuY8KgwqDCoMKgwqDCoMKgIHwgMTUzCj4gKysrKysrKysrKysrKysrKystCj4gwqBkcml2 ZXJzL2dwdS9kcm0vbG9vbmdzb24vbHNkY19waXhwbGwuaMKgwqDCoMKgwqDCoMKgIHzCoMKgIDQg Kwo+IMKgZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xzZGNfcHJvYmUuY8KgwqDCoMKgwqDCoMKg wqAgfMKgIDI3ICsrKysKPiDCoGRyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sc2RjX3Byb2JlLmjC oMKgwqDCoMKgwqDCoMKgIHzCoMKgIDIgKwo+IMKgZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xz ZGNfcmVncy5owqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAzNiArKysrKwo+IMKgMTQgZmlsZXMgY2hh bmdlZCwgNTI4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCj4gwqBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xzZGNfZ2Z4cGxsXzJrMTAwMC5jCj4gCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9NYWtlZmlsZQo+IGIvZHJpdmVy cy9ncHUvZHJtL2xvb25nc29uL01ha2VmaWxlCj4gaW5kZXggOTFlNzJiZDkwMGMxLi5kNmU3MDll MTlmYmEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL01ha2VmaWxlCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL01ha2VmaWxlCj4gQEAgLTcsNiArNyw3IEBA IGxvb25nc29uLXkgOj0gXAo+IMKgwqDCoMKgwqDCoMKgwqBsc2RjX2Rydi5vIFwKPiDCoMKgwqDC oMKgwqDCoMKgbHNkY19nZW0ubyBcCj4gwqDCoMKgwqDCoMKgwqDCoGxzZGNfZ2Z4cGxsLm8gXAo+ ICvCoMKgwqDCoMKgwqDCoGxzZGNfZ2Z4cGxsXzJrMTAwMC5vIFwKPiDCoMKgwqDCoMKgwqDCoMKg bHNkY19pMmMubyBcCj4gwqDCoMKgwqDCoMKgwqDCoGxzZGNfaXJxLm8gXAo+IMKgwqDCoMKgwqDC oMKgwqBsc2RjX291dHB1dF83YTEwMDAubyBcCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9sb29uZ3Nvbi9sb29uZ3Nvbl9kZXZpY2UuYwo+IGIvZHJpdmVycy9ncHUvZHJtL2xvb25nc29u L2xvb25nc29uX2RldmljZS5jCj4gaW5kZXggOTk4NmM4YTJhMjU1Li42NzI3NGQ5ZTNiMTIgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xvb25nc29uX2RldmljZS5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xvb25nc29uX2RldmljZS5jCj4gQEAgLTYs NiArNiw3IEBACj4gwqAjaW5jbHVkZSA8bGludXgvcGNpLmg+Cj4gwqAKPiDCoCNpbmNsdWRlICJs c2RjX2Rydi5oIgo+ICsjaW5jbHVkZSAibHNkY19wcm9iZS5oIgo+IMKgCj4gwqBzdGF0aWMgY29u c3Qgc3RydWN0IGxzZGNfa21zX2Z1bmNzIGxzN2ExMDAwX2ttc19mdW5jcyA9IHsKPiDCoMKgwqDC oMKgwqDCoMKgLmNyZWF0ZV9pMmMgPSBsc2RjX2NyZWF0ZV9pMmNfY2hhbiwKPiBAQCAtMjUsNiAr MjYsMjAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBsc2RjX2ttc19mdW5jcwo+IGxzN2EyMDAwX2tt c19mdW5jcyA9IHsKPiDCoMKgwqDCoMKgwqDCoMKgLmNydGNfaW5pdCA9IGxzN2EyMDAwX2NydGNf aW5pdCwKPiDCoH07Cj4gwqAKPiArLyoKPiArICogTW9zdCBvZiBoYXJkd2FyZSBmZWF0dXJlcyBv ZiBsczJrMTAwMCBhcmUgc2FtZSB3aXRoIGxzN2ExMDAwLCB3ZQo+IHRha2UgdGhlCj4gKyAqIGxz N2ExMDAwX2ttc19mdW5jcyBhcyBhIHByb3RvdHlwZSwgY29weSBhbmQgbW9kaWZ5IHRvIGZvcm0g YQo+IHZhcmlhbnQgZm9yCj4gKyAqIGxzMmsxMDAwLgo+ICsgKi8KPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBsc2RjX2ttc19mdW5jcyBsczJrMTAwMF9rbXNfZnVuY3MgPSB7Cj4gK8KgwqDCoMKgwqDC oMKgLmNyZWF0ZV9pMmMgPSBsczJrMTAwMF9nZXRfaTJjLAo+ICvCoMKgwqDCoMKgwqDCoC5pcnFf aGFuZGxlciA9IGxzN2ExMDAwX2RjX2lycV9oYW5kbGVyLAo+ICvCoMKgwqDCoMKgwqDCoC5vdXRw dXRfaW5pdCA9IGxzN2ExMDAwX291dHB1dF9pbml0LAo+ICvCoMKgwqDCoMKgwqDCoC5jdXJzb3Jf cGxhbmVfaW5pdCA9IGxzN2ExMDAwX2N1cnNvcl9wbGFuZV9pbml0LAo+ICvCoMKgwqDCoMKgwqDC oC5wcmltYXJ5X3BsYW5lX2luaXQgPSBsc2RjX3ByaW1hcnlfcGxhbmVfaW5pdCwKPiArwqDCoMKg wqDCoMKgwqAuY3J0Y19pbml0ID0gbHM3YTEwMDBfY3J0Y19pbml0LAo+ICt9Owo+ICsKPiDCoHN0 YXRpYyBjb25zdCBzdHJ1Y3QgbG9vbmdzb25fZ2Z4X2Rlc2MgbHM3YTEwMDBfZ2Z4ID0gewo+IMKg wqDCoMKgwqDCoMKgwqAuZGMgPSB7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAu bnVtX29mX2NydGMgPSAyLAo+IEBAIC0zNiw2ICs1MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg bG9vbmdzb25fZ2Z4X2Rlc2MgbHM3YTEwMDBfZ2Z4Cj4gPSB7Cj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAuaHdfY3Vyc29yX2ggPSAzMiwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoC5waXRjaF9hbGlnbiA9IDI1NiwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoC5oYXNfdmJsYW5rX2NvdW50ZXIgPSBmYWxzZSwKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgLmhhc19kZWRpY2F0ZWRfdnJhbSA9IHRydWUsCj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAuZnVuY3MgPSAmbHM3YTEwMDBfa21zX2Z1bmNzLAo+IMKgwqDCoMKg wqDCoMKgwqB9LAo+IMKgwqDCoMKgwqDCoMKgwqAuY29uZl9yZWdfYmFzZSA9IExTN0ExMDAwX0NP TkZfUkVHX0JBU0UsCj4gQEAgLTQzLDYgKzU5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBsb29u Z3Nvbl9nZnhfZGVzYyBsczdhMTAwMF9nZngKPiA9IHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoC5yZWdfb2Zmc2V0ID0gTFM3QTEwMDBfUExMX0dGWF9SRUcsCj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAucmVnX3NpemUgPSA4LAo+IMKgwqDCoMKgwqDCoMKgwqB9 LAo+ICvCoMKgwqDCoMKgwqDCoC5nZnhwbGxfZnVuY3MgPSAmbHM3YTEwMDBfZ2Z4X3BsbF9mdW5j cywKPiDCoMKgwqDCoMKgwqDCoMKgLnBpeHBsbCA9IHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoFswXSA9IHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAucmVnX29mZnNldCA9IExTN0ExMDAwX1BJWFBMTDBfUkVHLAo+IEBAIC01Myw2 ICs3MCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbG9vbmdzb25fZ2Z4X2Rlc2MgbHM3YTEwMDBf Z2Z4Cj4gPSB7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgLnJlZ19zaXplID0gOCwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0sCj4g wqDCoMKgwqDCoMKgwqDCoH0sCj4gK8KgwqDCoMKgwqDCoMKgLnBpeHBsbF9mdW5jcyA9ICZsczdh MTAwMF9waXhwbGxfZnVuY3MsCj4gwqDCoMKgwqDCoMKgwqDCoC5jaGlwX2lkID0gQ0hJUF9MUzdB MTAwMCwKPiDCoMKgwqDCoMKgwqDCoMKgLm1vZGVsID0gIkxTN0ExMDAwIGJyaWRnZSBjaGlwc2V0 IiwKPiDCoH07Cj4gQEAgLTY4LDYgKzg2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBsb29uZ3Nv bl9nZnhfZGVzYyBsczdhMjAwMF9nZngKPiA9IHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoC5od19jdXJzb3JfaCA9IDY0LAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgLnBpdGNoX2FsaWduID0gNjQsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAu aGFzX3ZibGFua19jb3VudGVyID0gdHJ1ZSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgLmhhc19kZWRpY2F0ZWRfdnJhbSA9IHRydWUsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAuZnVuY3MgPSAmbHM3YTIwMDBfa21zX2Z1bmNzLAo+IMKgwqDCoMKgwqDCoMKgwqB9 LAo+IMKgwqDCoMKgwqDCoMKgwqAuY29uZl9yZWdfYmFzZSA9IExTN0EyMDAwX0NPTkZfUkVHX0JB U0UsCj4gQEAgLTc1LDYgKzk0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBsb29uZ3Nvbl9nZnhf ZGVzYyBsczdhMjAwMF9nZngKPiA9IHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oC5yZWdfb2Zmc2V0ID0gTFM3QTIwMDBfUExMX0dGWF9SRUcsCj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAucmVnX3NpemUgPSA4LAo+IMKgwqDCoMKgwqDCoMKgwqB9LAo+ICvCoMKg wqDCoMKgwqDCoC5nZnhwbGxfZnVuY3MgPSAmbHM3YTIwMDBfZ2Z4X3BsbF9mdW5jcywKPiDCoMKg wqDCoMKgwqDCoMKgLnBpeHBsbCA9IHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oFswXSA9IHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAucmVnX29mZnNldCA9IExTN0EyMDAwX1BJWFBMTDBfUkVHLAo+IEBAIC04NSwxOCArMTA1LDU3 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbG9vbmdzb25fZ2Z4X2Rlc2MKPiBsczdhMjAwMF9nZngg PSB7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLnJl Z19zaXplID0gOCwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0sCj4gwqDCoMKg wqDCoMKgwqDCoH0sCj4gK8KgwqDCoMKgwqDCoMKgLnBpeHBsbF9mdW5jcyA9ICZsczdhMjAwMF9w aXhwbGxfZnVuY3MsCj4gwqDCoMKgwqDCoMKgwqDCoC5jaGlwX2lkID0gQ0hJUF9MUzdBMjAwMCwK PiDCoMKgwqDCoMKgwqDCoMKgLm1vZGVsID0gIkxTN0EyMDAwIGJyaWRnZSBjaGlwc2V0IiwKPiDC oH07Cj4gwqAKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBsb29uZ3Nvbl9nZnhfZGVzYyBsczJrMTAw MF9nZnggPSB7Cj4gK8KgwqDCoMKgwqDCoMKgLmRjID0gewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAubnVtX29mX2NydGMgPSAyLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAubWF4X3BpeGVsX2NsayA9IDIwMDAwMCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgLm1heF93aWR0aCA9IDIwNDgsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oC5tYXhfaGVpZ2h0ID0gMjA0OCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLm51 bV9vZl9od19jdXJzb3IgPSAxLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAuaHdf Y3Vyc29yX3cgPSAzMiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLmh3X2N1cnNv cl9oID0gMzIsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC5waXRjaF9hbGlnbiA9 IDI1NiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLmhhc192YmxhbmtfY291bnRl ciA9IGZhbHNlLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAuaGFzX2RlZGljYXRl ZF92cmFtID0gZmFsc2UsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC5mdW5jcyA9 ICZsczJrMTAwMF9rbXNfZnVuY3MsCj4gK8KgwqDCoMKgwqDCoMKgfSwKPiArwqDCoMKgwqDCoMKg wqAuY29uZl9yZWdfYmFzZSA9IExTMksxMDAwX0NPTkZfUkVHX0JBU0UsCj4gK8KgwqDCoMKgwqDC oMKgLmdmeHBsbCA9IHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLnJlZ19vZmZz ZXQgPSBMUzJLMTAwMF9ERFJfUExMX1JFRywKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgLnJlZ19zaXplID0gMTYgKyAxNiwKPiArwqDCoMKgwqDCoMKgwqB9LAo+ICvCoMKgwqDCoMKg wqDCoC5nZnhwbGxfZnVuY3MgPSAmbHMyazEwMDBfZ2Z4X3BsbF9mdW5jcywKPiArwqDCoMKgwqDC oMKgwqAucGl4cGxsID0gewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBbMF0gPSB7 Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAucmVnX29m ZnNldCA9IExTMksxMDAwX1BJWDBfUExMX1JFRywKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoC5yZWdfc2l6ZSA9IDE2LAo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB9LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBbMV0gPSB7 Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAucmVnX29m ZnNldCA9IExTMksxMDAwX1BJWDFfUExMX1JFRywKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoC5yZWdfc2l6ZSA9IDE2LAo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB9LAo+ICvCoMKgwqDCoMKgwqDCoH0sCj4gK8KgwqDCoMKgwqDCoMKgLnBp eHBsbF9mdW5jcyA9ICZsczJrMTAwMF9waXhwbGxfZnVuY3MsCj4gK8KgwqDCoMKgwqDCoMKgLmNo aXBfaWQgPSBDSElQX0xTMksxMDAwLAo+ICvCoMKgwqDCoMKgwqDCoC5tb2RlbCA9ICJMUzJLMTAw MCBTb0MiLAo+ICt9Owo+ICsKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgbHNkY19kZXNjICpfX2No aXBfaWRfZGVzY190YWJsZVtdID0gewo+IMKgwqDCoMKgwqDCoMKgwqBbQ0hJUF9MUzdBMTAwMF0g PSAmbHM3YTEwMDBfZ2Z4LmRjLAo+IMKgwqDCoMKgwqDCoMKgwqBbQ0hJUF9MUzdBMjAwMF0gPSAm bHM3YTIwMDBfZ2Z4LmRjLAo+ICvCoMKgwqDCoMKgwqDCoFtDSElQX0xTMksxMDAwXSA9ICZsczJr MTAwMF9nZnguZGMsCj4gwqDCoMKgwqDCoMKgwqDCoFtDSElQX0xTX0xBU1RdID0gTlVMTCwKPiDC oH07Cj4gwqAKPiDCoGNvbnN0IHN0cnVjdCBsc2RjX2Rlc2MgKgo+IMKgbHNkY19kZXZpY2VfcHJv YmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGVudW0gbG9vbmdzb25fY2hpcF9pZAo+IGNoaXBfaWQp Cj4gwqB7Cj4gK8KgwqDCoMKgwqDCoMKgY2hpcF9pZCA9IGxvb25nc29uX2NoaXBfaWRfZml4dXAo Y2hpcF9pZCk7Cj4gKwo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gX19jaGlwX2lkX2Rlc2NfdGFi bGVbY2hpcF9pZF07Cj4gwqB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nv bi9sc2RjX2Rydi5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24vbHNkY19kcnYuYwo+IGlu ZGV4IDg5Y2NjMGM0MzE2OS4uNjVhNGQ5NjQ0OGJiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9sb29uZ3Nvbi9sc2RjX2Rydi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2xvb25nc29u L2xzZGNfZHJ2LmMKPiBAQCAtNSw2ICs1LDcgQEAKPiDCoAo+IMKgI2luY2x1ZGUgPGxpbnV4L3Bj aS5oPgo+IMKgI2luY2x1ZGUgPGxpbnV4L3ZnYWFyYi5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2Zf YWRkcmVzcy5oPgo+IMKgCj4gwqAjaW5jbHVkZSA8ZHJtL2RybV9hcGVydHVyZS5oPgo+IMKgI2lu Y2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+Cj4gQEAgLTg0LDYgKzg1LDggQEAgc3RhdGljIGludCBs c2RjX21vZGVzZXRfaW5pdChzdHJ1Y3QgbHNkY19kZXZpY2UKPiAqbGRldiwKPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRpc3BpcGUgPSAmbGRldi0+ZGlzcGlwZVtpXTsKPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChkaXNwaXBlLT5saTJjKQo+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRkYyA9ICZkaXNwaXBlLT5s aTJjLT5hZGFwdGVyOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlbHNlCj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZGMgPSBkaXNwaXBl LT5hZGFwdGVyOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXQgPSBm dW5jcy0+b3V0cHV0X2luaXQoZGRldiwgZGlzcGlwZSwgZGRjLCBpKTsKPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4gQEAgLTE1NSw4ICsxNTgsNyBAQCBzdGF0aWMg aW50IGxzZGNfbW9kZV9jb25maWdfaW5pdChzdHJ1Y3QKPiBkcm1fZGV2aWNlICpkZGV2LAo+IMKg ICogdGhlIERDIGNvdWxkIGFjY2VzcyB0aGUgb24tYm9hcmQgVlJBTS4KPiDCoCAqLwo+IMKgc3Rh dGljIGludCBsc2RjX2dldF9kZWRpY2F0ZWRfdnJhbShzdHJ1Y3QgbHNkY19kZXZpY2UgKmxkZXYs Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBzdHJ1Y3QgcGNpX2RldiAqcGRldl9kYywKPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0 IHN0cnVjdCBsc2RjX2Rlc2MgKmRlc2NwKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHBjaV9kZXYgKnBk ZXZfZGMpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2ID0g JmxkZXYtPmJhc2U7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBwY2lfZGV2ICpwZGV2X2dwdTsK PiBAQCAtMTg3LDYgKzE4OSwzOCBAQCBzdGF0aWMgaW50IGxzZGNfZ2V0X2RlZGljYXRlZF92cmFt KHN0cnVjdAo+IGxzZGNfZGV2aWNlICpsZGV2LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsK PiDCoH0KPiDCoAo+ICtzdGF0aWMgaW50IGxzZGNfb2ZfZ2V0X3Jlc2VydmVkX21lbShzdHJ1Y3Qg bHNkY19kZXZpY2UgKmxkZXYpCj4gK3sKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGRldiA9ICZsZGV2LT5iYXNlOwo+ICvCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGxvbmcgc2l6 ZSA9IDA7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGRldmljZV9ub2RlICpub2RlOwo+ICvCoMKg wqDCoMKgwqDCoHN0cnVjdCByZXNvdXJjZSByOwo+ICvCoMKgwqDCoMKgwqDCoGludCByZXQ7Cj4g Kwo+ICvCoMKgwqDCoMKgwqDCoGlmICghZGRldi0+ZGV2LT5vZl9ub2RlKQo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVOT0VOVDsKPiArCj4gK8KgwqDCoMKgwqDCoMKg bm9kZSA9IG9mX3BhcnNlX3BoYW5kbGUoZGRldi0+ZGV2LT5vZl9ub2RlLCAibWVtb3J5LXJlZ2lv biIsCj4gMCk7Cj4gK8KgwqDCoMKgwqDCoMKgaWYgKCFub2RlKSB7Cj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGRybV9lcnIoZGRldiwgIk5vIG1lbW9yeS1yZWdpb24gcHJvcGVydHlc biIpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVOT0VOVDsKPiAr wqDCoMKgwqDCoMKgwqB9Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHJldCA9IG9mX2FkZHJlc3NfdG9f cmVzb3VyY2Uobm9kZSwgMCwgJnIpOwo+ICvCoMKgwqDCoMKgwqDCoG9mX25vZGVfcHV0KG5vZGUp Owo+ICvCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHJldHVybiByZXQ7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHNpemUgPSByLmVuZCAtIHIuc3Rh cnQgKyAxOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBsZGV2LT52cmFtX2Jhc2UgPSByLnN0YXJ0Owo+ ICvCoMKgwqDCoMKgwqDCoGxkZXYtPnZyYW1fc2l6ZSA9IHNpemU7Cj4gKwo+ICvCoMKgwqDCoMKg wqDCoGRybV9pbmZvKGRkZXYsICJVc2luZyBvZiByZXNlcnZlZCBtZW06ICVseEAlcGFcbiIsIHNp emUsCj4gJnIuc3RhcnQpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiArfQo+ICsK PiDCoHN0YXRpYyBzdHJ1Y3QgbHNkY19kZXZpY2UgKgo+IMKgbHNkY19jcmVhdGVfZGV2aWNlKHN0 cnVjdCBwY2lfZGV2ICpwZGV2LAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBjb25zdCBzdHJ1Y3QgbHNkY19kZXNjICpkZXNjcCwKPiBAQCAtMjA3LDcgKzI0MSwxMSBAQCBs c2RjX2NyZWF0ZV9kZXZpY2Uoc3RydWN0IHBjaV9kZXYgKnBkZXYsCj4gwqAKPiDCoMKgwqDCoMKg wqDCoMKgbG9vbmdzb25fZ2Z4cGxsX2NyZWF0ZShkZGV2LCAmbGRldi0+Z2Z4cGxsKTsKPiDCoAo+ IC3CoMKgwqDCoMKgwqDCoHJldCA9IGxzZGNfZ2V0X2RlZGljYXRlZF92cmFtKGxkZXYsIHBkZXYs IGRlc2NwKTsKPiArwqDCoMKgwqDCoMKgwqBpZiAoZGVzY3AtPmhhc19kZWRpY2F0ZWRfdnJhbSkK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0ID0gbHNkY19nZXRfZGVkaWNhdGVk X3ZyYW0obGRldiwgcGRldik7Cj4gK8KgwqDCoMKgwqDCoMKgZWxzZQo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqByZXQgPSBsc2RjX29mX2dldF9yZXNlcnZlZF9tZW0obGRldik7Cj4g Kwo+IMKgwqDCoMKgwqDCoMKgwqBpZiAocmV0KSB7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBkcm1fZXJyKGRkZXYsICJJbml0IFZSQU0gZmFpbGVkOiAlZFxuIiwgcmV0KTsKPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBFUlJfUFRSKHJldCk7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sc2RjX2Rydi5oCj4gYi9kcml2ZXJz L2dwdS9kcm0vbG9vbmdzb24vbHNkY19kcnYuaAo+IGluZGV4IGZiZjJkNzYwZWYyNy4uMjc5ZGU3 YmY2ZGM1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sc2RjX2Rydi5o Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xzZGNfZHJ2LmgKPiBAQCAtNDEsNiAr NDEsNyBAQAo+IMKgZW51bSBsb29uZ3Nvbl9jaGlwX2lkIHsKPiDCoMKgwqDCoMKgwqDCoMKgQ0hJ UF9MUzdBMTAwMCA9IDAsCj4gwqDCoMKgwqDCoMKgwqDCoENISVBfTFM3QTIwMDAgPSAxLAo+ICvC oMKgwqDCoMKgwqDCoENISVBfTFMySzEwMDAgPSAyLAo+IMKgwqDCoMKgwqDCoMKgwqBDSElQX0xT X0xBU1QsCj4gwqB9Owo+IMKgCj4gQEAgLTYxLDYgKzYyLDcgQEAgc3RydWN0IGxzZGNfZGVzYyB7 Cj4gwqDCoMKgwqDCoMKgwqDCoHUzMiBod19jdXJzb3JfaDsKPiDCoMKgwqDCoMKgwqDCoMKgdTMy IHBpdGNoX2FsaWduO8KgwqDCoMKgwqDCoMKgwqAgLyogQ1JUQyBETUEgYWxpZ25tZW50IGNvbnN0 cmFpbnQgKi8KPiDCoMKgwqDCoMKgwqDCoMKgYm9vbCBoYXNfdmJsYW5rX2NvdW50ZXI7IC8qIDMy IGJpdCBodyB2c3luYyBjb3VudGVyICovCj4gK8KgwqDCoMKgwqDCoMKgYm9vbCBoYXNfZGVkaWNh dGVkX3ZyYW07Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgLyogZGV2aWNlIGRlcGVuZGVudCBvcHMs IGRjIHNpZGUgKi8KPiDCoMKgwqDCoMKgwqDCoMKgY29uc3Qgc3RydWN0IGxzZGNfa21zX2Z1bmNz ICpmdW5jczsKPiBAQCAtNzgsMTIgKzgwLDE0IEBAIHN0cnVjdCBsb29uZ3Nvbl9nZnhfZGVzYyB7 Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1MzIgcmVnX29mZnNldDsKPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHUzMiByZWdfc2l6ZTsKPiDCoMKgwqDCoMKgwqDC oMKgfSBnZnhwbGw7Cj4gK8KgwqDCoMKgwqDCoMKgY29uc3Qgc3RydWN0IGxvb25nc29uX2dmeHBs bF9mdW5jcyAqZ2Z4cGxsX2Z1bmNzOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoC8qIFBpeGVsIFBM TCwgcGVyIGRpc3BsYXkgcGlwZSAqLwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgewo+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdTMyIHJlZ19vZmZzZXQ7Cj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB1MzIgcmVnX3NpemU7Cj4gwqDCoMKgwqDCoMKgwqDCoH0gcGl4 cGxsW0xTRENfTlVNX0NSVENdOwo+ICvCoMKgwqDCoMKgwqDCoGNvbnN0IHN0cnVjdCBsc2RjX3Bp eHBsbF9mdW5jcyAqcGl4cGxsX2Z1bmNzOwoKSXQgY291bGQgYmUgYmV0dGVyIHRvIGhhdmUgdGhp cyBraW5kIG9mIHJlZmFjdG9yIGluZGVwZW5kZW50IG9mIHJlYWwKbmV3IEhXIGltcGxlbWV0YXRp b24uCgo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGVudW0gbG9vbmdzb25fY2hpcF9pZCBjaGlwX2lk Owo+IMKgwqDCoMKgwqDCoMKgwqBjaGFyIG1vZGVsWzY0XTsKPiBAQCAtMTg5LDYgKzE5MywxMSBA QCBzdHJ1Y3QgbHNkY19kaXNwbGF5X3BpcGUgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbHNk Y19wcmltYXJ5IHByaW1hcnk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBsc2RjX2N1cnNvciBj dXJzb3I7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBsc2RjX291dHB1dCBvdXRwdXQ7Cj4gK8Kg wqDCoMKgwqDCoMKgLyoKPiArwqDCoMKgwqDCoMKgwqAgKiBGb3IgZGV2aWNlIHdoaWNoIGRvbid0 IGhhcyBidWlsdC1pbiBHUElPIGhhcmR3YXJlLCBzdWNoIGFzCj4gbHMyazEwMDAsCj4gK8KgwqDC oMKgwqDCoMKgICogd2Ugd2lsbCBnZXQgYSBpMmMgYWRhcHRlciBmcm9tIG90aGVyIG1vZHVsZSBv ciBzdWJzeXN0ZW0uCj4gK8KgwqDCoMKgwqDCoMKgICovCj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0 IGkyY19hZGFwdGVyICphZGFwdGVyOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbHNkY19pMmMg KmxpMmM7Cj4gwqDCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGludCBpbmRleDsKPiDCoH07Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sc2RjX2dmeHBsbC5jCj4gYi9kcml2 ZXJzL2dwdS9kcm0vbG9vbmdzb24vbHNkY19nZnhwbGwuYwo+IGluZGV4IDI0OWMwOWQ3MDNhZC4u NGE0ZWZlNjk2ZDVhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sc2Rj X2dmeHBsbC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xzZGNfZ2Z4cGxsLmMK PiBAQCAtMTYzLDcgKzE2MywxNCBAQCBzdGF0aWMgaW50IGxvb25nc29uX2dmeHBsbF9pbml0KHN0 cnVjdAo+IGxvb25nc29uX2dmeHBsbCAqIGNvbnN0IHRoaXMpCj4gwqDCoMKgwqDCoMKgwqDCoHJl dHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgbG9vbmdzb25fZ2Z4cGxs X2Z1bmNzIGxzZGNfZ21jX2dwdV9mdW5jcyA9IHsKPiArY29uc3Qgc3RydWN0IGxvb25nc29uX2dm eHBsbF9mdW5jcyBsczdhMTAwMF9nZnhfcGxsX2Z1bmNzID0gewo+ICvCoMKgwqDCoMKgwqDCoC5p bml0ID0gbG9vbmdzb25fZ2Z4cGxsX2luaXQsCj4gK8KgwqDCoMKgwqDCoMKgLnVwZGF0ZSA9IGxv b25nc29uX2dmeHBsbF91cGRhdGUsCj4gK8KgwqDCoMKgwqDCoMKgLmdldF9yYXRlcyA9IGxvb25n c29uX2dmeHBsbF9nZXRfcmF0ZXMsCj4gK8KgwqDCoMKgwqDCoMKgLnByaW50ID0gbG9vbmdzb25f Z2Z4cGxsX3ByaW50LAo+ICt9Owo+ICsKPiArY29uc3Qgc3RydWN0IGxvb25nc29uX2dmeHBsbF9m dW5jcyBsczdhMjAwMF9nZnhfcGxsX2Z1bmNzID0gewo+IMKgwqDCoMKgwqDCoMKgwqAuaW5pdCA9 IGxvb25nc29uX2dmeHBsbF9pbml0LAo+IMKgwqDCoMKgwqDCoMKgwqAudXBkYXRlID0gbG9vbmdz b25fZ2Z4cGxsX3VwZGF0ZSwKPiDCoMKgwqDCoMKgwqDCoMKgLmdldF9yYXRlcyA9IGxvb25nc29u X2dmeHBsbF9nZXRfcmF0ZXMsCj4gQEAgLTE4NSw3ICsxOTIsNyBAQCBpbnQgbG9vbmdzb25fZ2Z4 cGxsX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZQo+ICpkZGV2LAo+IMKgwqDCoMKgwqDCoMKgwqB0 aGlzLT5kZGV2ID0gZGRldjsKPiDCoMKgwqDCoMKgwqDCoMKgdGhpcy0+cmVnX3NpemUgPSBnZngt PmdmeHBsbC5yZWdfc2l6ZTsKPiDCoMKgwqDCoMKgwqDCoMKgdGhpcy0+cmVnX2Jhc2UgPSBnZngt PmNvbmZfcmVnX2Jhc2UgKyBnZngtPmdmeHBsbC5yZWdfb2Zmc2V0Owo+IC3CoMKgwqDCoMKgwqDC oHRoaXMtPmZ1bmNzID0gJmxzZGNfZ21jX2dwdV9mdW5jczsKPiArwqDCoMKgwqDCoMKgwqB0aGlz LT5mdW5jcyA9IGdmeC0+Z2Z4cGxsX2Z1bmNzOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHJldCA9 IHRoaXMtPmZ1bmNzLT5pbml0KHRoaXMpOwo+IMKgwqDCoMKgwqDCoMKgwqBpZiAodW5saWtlbHko cmV0KSkgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24vbHNkY19nZnhw bGwuaAo+IGIvZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xzZGNfZ2Z4cGxsLmgKPiBpbmRleCA5 ZDU5Y2JmYzE0NWQuLjZhMzBkMjAzOWQ0YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v bG9vbmdzb24vbHNkY19nZnhwbGwuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9s c2RjX2dmeHBsbC5oCj4gQEAgLTQ5LDQgKzQ5LDggQEAgc3RydWN0IGxvb25nc29uX2dmeHBsbCB7 Cj4gwqBpbnQgbG9vbmdzb25fZ2Z4cGxsX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGRldiwK PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0 cnVjdCBsb29uZ3Nvbl9nZnhwbGwgKipwcG91dCk7Cj4gwqAKPiArZXh0ZXJuIGNvbnN0IHN0cnVj dCBsb29uZ3Nvbl9nZnhwbGxfZnVuY3MgbHMyazEwMDBfZ2Z4X3BsbF9mdW5jczsKPiArZXh0ZXJu IGNvbnN0IHN0cnVjdCBsb29uZ3Nvbl9nZnhwbGxfZnVuY3MgbHM3YTEwMDBfZ2Z4X3BsbF9mdW5j czsKPiArZXh0ZXJuIGNvbnN0IHN0cnVjdCBsb29uZ3Nvbl9nZnhwbGxfZnVuY3MgbHM3YTIwMDBf Z2Z4X3BsbF9mdW5jczsKPiArCj4gwqAjZW5kaWYKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2xvb25nc29uL2xzZGNfZ2Z4cGxsXzJrMTAwMC5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vbG9v bmdzb24vbHNkY19nZnhwbGxfMmsxMDAwLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4 IDAwMDAwMDAwMDAwMC4uOGI0NDJkYjA1OTcyCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9sb29uZ3Nvbi9sc2RjX2dmeHBsbF8yazEwMDAuYwo+IEBAIC0wLDAgKzEsMTQx IEBACj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKwo+ICsvKgo+ICsgKiBD b3B5cmlnaHQgKEMpIDIwMjMgTG9vbmdzb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbiBMaW1pdGVk Cj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Cj4gKwo+ICsjaW5jbHVkZSA8 ZHJtL2RybV9maWxlLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX21hbmFnZWQuaD4KPiArI2luY2x1 ZGUgPGRybS9kcm1fcHJpbnQuaD4KPiArCj4gKyNpbmNsdWRlICJsc2RjX2Rydi5oIgo+ICsKPiAr dW5pb24gbHMyazEwMDBfZGRyX3BsbF9yZWdfYml0bWFwIHsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1 Y3QgbHMyazEwMDBfZGRyX3BsbF9iaXRtYXAgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAvKiBCeXRlIDAgfiBCeXRlIDMgKi8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgdW5zaWduZWQgYnlwYXNzwqDCoMKgwqDCoMKgIDrCoCAxO8KgIC8qwqAgMDogQnlwYXNzIGRk ciBwbGwKPiBlbnRpcmVseSAqLwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1bnNp Z25lZCBvZV9ncHXCoMKgwqDCoMKgwqAgOsKgIDE7wqAgLyrCoCAxOiBHUFUgb3V0cHV0IGNsawo+ IGVuYWJsZcKgwqAgKi8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdW5zaWduZWQg d3JpdGVfZW7CoMKgwqDCoCA6wqAgMTvCoCAvKsKgIDI6IEFsbG93IHNvZnR3YXJlCj4gdXBkYXRl wqDCoCAqLwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBfcmVzZXJ2 ZWRfMV8gOiAyMzvCoCAvKsKgIDMgOiAyNcKgIERvbid0Cj4gY2FyZcKgwqDCoMKgwqDCoMKgwqAg Ki8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdW5zaWduZWQgZGl2X3JlZsKgwqDC oMKgwqAgOsKgIDY7wqAgLyogMzEgOiAyNsKgIElucHV0IGNsawo+IGRpdmlkZXLCoCAqLwo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBCeXRlIDQgfiBCeXRlIDcgKi8KPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdW5zaWduZWQgbG9vcGPCoMKgwqDCoMKgwqDCoCA6 IDEwO8KgwqAgLyogNDEgOiAzMiBDbG9jawo+IG11bHRpcGxpZXLCoMKgICovCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIF9yZXNlcnZlZF8yXyA6IDIyO8KgwqAgLyog NDIgOiA2Mwo+IFVzZWxlc3PCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4gKwo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBCeXRlIDggfiBCeXRlIDE1ICovCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGRpdl9vdXRfZGRywqAgOsKgIDY7wqAgLyrC oCA1IDogMMKgIEREUiBvdXRwdXQKPiBkaXZpZGVyICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHVuc2lnbmVkIF9yZXNlcnZlZF8zXyA6IDE2O8KgIC8qIDIxIDogNsKgICovCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGRpdl9vdXRfZ3B1wqAgOsKg IDY7wqAgLyogMjcgOiAyMiBHUFUgb3V0cHV0Cj4gZGl2aWRlciAqLwo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBfcmVzZXJ2ZWRfNF8gOiAxNjvCoCAvKiA0MyA6IDI4 ICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGRpdl9vdXRfaGRh wqAgOsKgIDc7wqAgLyogNTAgOiA0NCBIREEgb3V0cHV0Cj4gZGl2aWRlciAqLwo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBfcmVzZXJ2ZWRfNV8gOiAxMzvCoCAvKiA2 MyA6IDUxICovCj4gK8KgwqDCoMKgwqDCoMKgfSBiaXRtYXA7Cj4gK8KgwqDCoMKgwqDCoMKgdTMy IHdbNF07Cj4gK8KgwqDCoMKgwqDCoMKgdTY0IGRbMl07Cj4gK307Cj4gKwo+ICt1bmlvbiBsczJr MTAwMF9kY19wbGxfcmVnX2JpdG1hcCB7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGxzMmsxMDAw X2RjX3BsbF9iaXRtYXAgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBCeXRl IDAgfiBCeXRlIDMgKi8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdW5zaWduZWQg X3Jlc2VydmVkXzFfIDogMjY7wqAgLyrCoCAwIDogMjXCoCBEb24ndAo+IGNhcmXCoMKgwqDCoMKg wqDCoMKgICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGRpdl9y ZWbCoMKgwqDCoMKgIDrCoCA2O8KgIC8qIDMxIDogMjbCoCBJbnB1dCBjbGsKPiBkaXZpZGVywqAg Ki8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogQnl0ZSA0IH4gQnl0ZSA3ICov Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGxvb3BjwqDCoMKgwqDC oMKgwqAgOiAxMDvCoMKgIC8qIDQxIDogMzIgQ2xvY2sKPiBtdWx0aXBsaWVywqDCoCAqLwo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBfcmVzZXJ2ZWRfMl8gOiAyMjvC oMKgIC8qIDQyIDogNjMKPiBVc2VsZXNzwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+ICsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogQnl0ZSA4IH4gQnl0ZSAxNSAqLwo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBkaXZfb3V0X2RjwqDCoCA6wqAg NjvCoCAvKsKgIDUgOiAwwqAgREMgb3V0cHV0Cj4gZGl2aWRlciAqLwo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBfcmVzZXJ2ZWRfM18gOiAxNjvCoCAvKiAyMSA6IDbC oCAqLwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBkaXZfb3V0X2dt YWMgOsKgIDY7wqAgLyogMjcgOiAyMiBHTUFDIG91dHB1dAo+IGRpdmlkZXIgKi8KPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdW5zaWduZWQgX3Jlc2VydmVkXzRfIDrCoCA0O8KgIC8q IDMxIDogMjggKi8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdW5zaWduZWQgX3Jl c2VydmVkXzVfIDogMzI7wqAgLyogNjMgOiAzMiAqLwo+ICvCoMKgwqDCoMKgwqDCoH0gYml0bWFw Owo+ICvCoMKgwqDCoMKgwqDCoHUzMiB3WzRdOwo+ICvCoMKgwqDCoMKgwqDCoHU2NCBkWzJdOwo+ ICt9Owo+ICsKPiArc3RhdGljIGludCBsczJrMTAwMF9nZnhwbGxfaW5pdChzdHJ1Y3QgbG9vbmdz b25fZ2Z4cGxsICogY29uc3QgdGhpcykKPiArewo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBkcm1f cHJpbnRlciBwcmludGVyID0gZHJtX2luZm9fcHJpbnRlcih0aGlzLT5kZGV2LQo+ID5kZXYpOwo+ ICsKPiArwqDCoMKgwqDCoMKgwqB0aGlzLT5tbWlvID0gaW9yZW1hcCh0aGlzLT5yZWdfYmFzZSwg dGhpcy0+cmVnX3NpemUpOwo+ICvCoMKgwqDCoMKgwqDCoGlmIChJU19FUlJfT1JfTlVMTCh0aGlz LT5tbWlvKSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1FTk9NRU07 Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHRoaXMtPmZ1bmNzLT5wcmludCh0aGlzLCAmcHJpbnRlciwg ZmFsc2UpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGlj IGlubGluZSB2b2lkIF9fcnJlZ191MTI4KHZvaWQgX19pb21lbSAqbW1pbywgdTMyIHdbXSwgdTY0 IGRbXSkKPiArewo+ICsjaWYgZGVmaW5lZChDT05GSUdfNjRCSVQpCj4gK8KgwqDCoMKgwqDCoMKg ZFswXSA9IHJlYWRxKG1taW8pOwo+ICvCoMKgwqDCoMKgwqDCoGRbMV0gPSByZWFkcShtbWlvICsg OCk7Cj4gKyNlbHNlCj4gK8KgwqDCoMKgwqDCoMKgd1swXSA9IHJlYWRsKG1taW8pOwo+ICvCoMKg wqDCoMKgwqDCoHdbMV0gPSByZWFkbChtbWlvICsgNCk7Cj4gK8KgwqDCoMKgwqDCoMKgd1syXSA9 IHJlYWRsKG1taW8gKyA4KTsKPiArwqDCoMKgwqDCoMKgwqB3WzNdID0gcmVhZGwobW1pbyArIDEy KTsKPiArI2VuZGlmCj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGxzMmsxMDAwX2dmeHBsbF9nZXRf cmF0ZXMoc3RydWN0IGxvb25nc29uX2dmeHBsbCAqIGNvbnN0Cj4gdGhpcywKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHVuc2lnbmVkIGludCAqZGMsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQg KmRkciwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGludCAqZ3B1KQo+ICt7Cj4gK8KgwqDC oMKgwqDCoMKgdW5zaWduZWQgaW50IHJlZl9jbG9ja19taHogPSBMU0RDX1BMTF9SRUZfQ0xLX0tI WiAvIDEwMDA7Cj4gK8KgwqDCoMKgwqDCoMKgdW5pb24gbHMyazEwMDBfZGRyX3BsbF9yZWdfYml0 bWFwIGRkcl9wbGxfcmVnX2JpdG1hcDsKPiArwqDCoMKgwqDCoMKgwqB1bmlvbiBsczJrMTAwMF9k Y19wbGxfcmVnX2JpdG1hcCBkY19wbGxfcmVnX2JpdG1hcDsKPiArwqDCoMKgwqDCoMKgwqB1bnNp Z25lZCBpbnQgZGl2X3JlZjsKPiArwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBpbnQgbG9vcGM7Cj4g K8KgwqDCoMKgwqDCoMKgdW5zaWduZWQgaW50IGRpdl9vdXRfZGM7Cj4gK8KgwqDCoMKgwqDCoMKg dW5zaWduZWQgaW50IGRpdl9vdXRfZGRyOwo+ICvCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGludCBk aXZfb3V0X2dwdTsKPiArwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBpbnQgZGNfbWh6Owo+ICvCoMKg wqDCoMKgwqDCoHVuc2lnbmVkIGludCBkZHJfbWh6Owo+ICvCoMKgwqDCoMKgwqDCoHVuc2lnbmVk IGludCBncHVfbWh6Owo+ICsKPiArwqDCoMKgwqDCoMKgwqBfX3JyZWdfdTEyOCh0aGlzLT5tbWlv LCBkZHJfcGxsX3JlZ19iaXRtYXAudywKPiBkZHJfcGxsX3JlZ19iaXRtYXAuZCk7Cj4gK8KgwqDC oMKgwqDCoMKgZGl2X3JlZiA9IGRkcl9wbGxfcmVnX2JpdG1hcC5iaXRtYXAuZGl2X3JlZjsKPiAr wqDCoMKgwqDCoMKgwqBsb29wYyA9IGRkcl9wbGxfcmVnX2JpdG1hcC5iaXRtYXAubG9vcGM7Cj4g K8KgwqDCoMKgwqDCoMKgZGl2X291dF9kZHIgPSBkZHJfcGxsX3JlZ19iaXRtYXAuYml0bWFwLmRp dl9vdXRfZGRyOwo+ICvCoMKgwqDCoMKgwqDCoGRpdl9vdXRfZ3B1ID0gZGRyX3BsbF9yZWdfYml0 bWFwLmJpdG1hcC5kaXZfb3V0X2dwdTsKPiArwqDCoMKgwqDCoMKgwqBkZHJfbWh6ID0gcmVmX2Ns b2NrX21oeiAvIGRpdl9yZWYgKiBsb29wYyAvIGRpdl9vdXRfZGRyOwo+ICvCoMKgwqDCoMKgwqDC oGdwdV9taHogPSByZWZfY2xvY2tfbWh6IC8gZGl2X3JlZiAqIGxvb3BjIC8gZGl2X291dF9ncHU7 Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoF9fcnJlZ191MTI4KHRoaXMtPm1taW8gKyAxNiwgZGNfcGxs X3JlZ19iaXRtYXAudywKPiBkY19wbGxfcmVnX2JpdG1hcC5kKTsKPiArwqDCoMKgwqDCoMKgwqBk aXZfb3V0X2RjID0gZGNfcGxsX3JlZ19iaXRtYXAuYml0bWFwLmRpdl9vdXRfZGM7Cj4gK8KgwqDC oMKgwqDCoMKgZGl2X3JlZiA9IGRjX3BsbF9yZWdfYml0bWFwLmJpdG1hcC5kaXZfcmVmOwo+ICvC oMKgwqDCoMKgwqDCoGxvb3BjID0gZGNfcGxsX3JlZ19iaXRtYXAuYml0bWFwLmxvb3BjOwo+ICvC oMKgwqDCoMKgwqDCoGRjX21oeiA9IHJlZl9jbG9ja19taHogLyBkaXZfcmVmICogbG9vcGMgLyBk aXZfb3V0X2RjOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBpZiAoZGMpCj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCpkYyA9IGRjX21oejsKPiArCj4gK8KgwqDCoMKgwqDCoMKgaWYgKGRk cikKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKmRkciA9IGRkcl9taHo7Cj4gKwo+ ICvCoMKgwqDCoMKgwqDCoGlmIChncHUpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCpncHUgPSBncHVfbWh6Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBsczJrMTAwMF9nZnhwbGxf cHJpbnQoc3RydWN0IGxvb25nc29uX2dmeHBsbCAqIGNvbnN0Cj4gdGhpcywKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBz dHJ1Y3QgZHJtX3ByaW50ZXIgKnAsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYm9vbCB2ZXJib3NlKQo+ICt7Cj4gK8Kg wqDCoMKgwqDCoMKgdW5zaWduZWQgaW50IGRjLCBkZHIsIGdwdTsKPiArCj4gK8KgwqDCoMKgwqDC oMKgdGhpcy0+ZnVuY3MtPmdldF9yYXRlcyh0aGlzLCAmZGMsICZkZHIsICZncHUpOwo+ICsKPiAr wqDCoMKgwqDCoMKgwqBkcm1fcHJpbnRmKHAsICJkYzogJXVNSHosIGRkcjogJXVNSHosIGdwdTog JXVNSHpcbiIsIGRjLCBkZHIsCj4gZ3B1KTsKPiArfQo+ICsKPiArY29uc3Qgc3RydWN0IGxvb25n c29uX2dmeHBsbF9mdW5jcyBsczJrMTAwMF9nZnhfcGxsX2Z1bmNzID0gewo+ICvCoMKgwqDCoMKg wqDCoC5pbml0ID0gbHMyazEwMDBfZ2Z4cGxsX2luaXQsCj4gK8KgwqDCoMKgwqDCoMKgLmdldF9y YXRlcyA9IGxzMmsxMDAwX2dmeHBsbF9nZXRfcmF0ZXMsCj4gK8KgwqDCoMKgwqDCoMKgLnByaW50 ID0gbHMyazEwMDBfZ2Z4cGxsX3ByaW50LAo+ICt9Owo+ICsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2xvb25nc29uL2xzZGNfaTJjLmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nv bi9sc2RjX2kyYy5jCj4gaW5kZXggOTYyNWQwYjFkMGI0Li43MjZkNDM0YzYyMzQgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xzZGNfaTJjLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vbG9vbmdzb24vbHNkY19pMmMuYwo+IEBAIC0xNzcsMyArMTc3LDQ0IEBAIGludCBs c2RjX2NyZWF0ZV9pMmNfY2hhbihzdHJ1Y3QgZHJtX2RldmljZQo+ICpkZGV2LAo+IMKgCj4gwqDC oMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+ICsKPiArc3RhdGljIHZvaWQgbHMyazEwMDBf cHV0X2kyYyhzdHJ1Y3QgZHJtX2RldmljZSAqZGRldiwgdm9pZCAqZGF0YSkKPiArewo+ICvCoMKg wqDCoMKgwqDCoHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciA9IChzdHJ1Y3QgaTJjX2FkYXB0 ZXIgKilkYXRhOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBpZiAoYWRhcHRlcikKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgaTJjX3B1dF9hZGFwdGVyKGFkYXB0ZXIpOwo+ICt9Cj4gKwo+ ICtpbnQgbHMyazEwMDBfZ2V0X2kyYyhzdHJ1Y3QgZHJtX2RldmljZSAqZGRldiwKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGxzZGNfZGlzcGxheV9waXBl ICpkaXNwaXBlLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNp Z25lZCBpbnQgaW5kZXgpCj4gK3sKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaTJjX2FkYXB0ZXIg KmFkYXB0ZXI7Cj4gK8KgwqDCoMKgwqDCoMKgaW50IHJldDsKPiArCj4gK8KgwqDCoMKgwqDCoMKg LyoKPiArwqDCoMKgwqDCoMKgwqAgKiBPbiBsczJrMTAwMCwgZGlzcGxheS1waXBlLTAgdXNlIGky Yy0wIGFuZCBkaXNwbGF5LXBpcGUtMQo+IHVzZSBpMmMtMQo+ICvCoMKgwqDCoMKgwqDCoCAqIGJ5 IGRlZmF1bHQuIFdlIHdpbGwgYWRkIG1vcmUgY29tcGxldGUgRFQgc3VwcG9ydCBmb3IgdGhpcwo+ IGluIHRoZQo+ICvCoMKgwqDCoMKgwqDCoCAqIGZ1dHVyZS4KPiArwqDCoMKgwqDCoMKgwqAgKi8K PiArwqDCoMKgwqDCoMKgwqBhZGFwdGVyID0gaTJjX2dldF9hZGFwdGVyKGluZGV4KTsKPiArwqDC oMKgwqDCoMKgwqBpZiAoIWFkYXB0ZXIpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZHJtX2RiZyhkZGV2LCAiRERDIGRyaXZlcnMgYXJlIG5vdCByZWFkeVxuIik7Cj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAqIFNob3VsZCByZXR1cm4gLUVQUk9CRV9ERUZFUiBoZXJlLCBidXQgd2Ugd2FudCB0bwo+ IGRvIHNvIHdoZW4KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogdGhlIERUIHN1 cHBvcnQgaXMgYWRkZWQuIEN1cnJlbnQgd2UgYXJlIGZvY3VzIG9uCj4gYnJpbmcgdXAsCj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIEZvciBlbWJlZGRlZCBwbGF0Zm9ybSwgdGhl IGkyYyBhZGFwdGVyIGlzIG5vdAo+IHN0cmljdGx5Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAqIHJlcXVpcmVkIHRvIGJlIGFibGUgdG8gZGlzcGxheSBzb21ldGhpbmcgb24gdGhl Cj4gc2NyZWVuLgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KCkkgYXNzdW1l IGl0IGNvdWxkIGJlIGJldHRlciB0byByZXR1cm4gRVBST0JFX0RFRkVSIHdoZW4gYW4gSTJDCmNv bnRyb2xsZXIgaXMgZXhwbGljaXRseSBzcGVjaWZpZWQgaW4gdGhlIERULCBhbmQgc2lsZW50bHkg c2tpcCBpdCB3aGVuCml0J3Mgbm90IHNwZWNpZmllZC4KCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHJldHVybiAwOwo+ICvCoMKgwqDCoMKgwqDCoH0KPiArCj4gK8KgwqDCoMKgwqDC oMKgcmV0ID0gZHJtbV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRkZXYsIGxzMmsxMDAwX3B1dF9pMmMs Cj4gYWRhcHRlcik7Cj4gK8KgwqDCoMKgwqDCoMKgaWYgKHJldCkKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiArCj4gK8KgwqDCoMKgwqDCoMKgZGlzcGlwZS0+ YWRhcHRlciA9IGFkYXB0ZXI7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ICt9Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sc2RjX2kyYy5oCj4gYi9kcml2 ZXJzL2dwdS9kcm0vbG9vbmdzb24vbHNkY19pMmMuaAo+IGluZGV4IDg4Y2QxYTE4MTdhNS4uOTdl YjYyMjdmMzg2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sc2RjX2ky Yy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xzZGNfaTJjLmgKPiBAQCAtMjYs NCArMjYsOCBAQCBpbnQgbHNkY19jcmVhdGVfaTJjX2NoYW4oc3RydWN0IGRybV9kZXZpY2UgKmRk ZXYsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0 cnVjdCBsc2RjX2Rpc3BsYXlfcGlwZSAqZGlzcGlwZSwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgaW50IGluZGV4KTsKPiDCoAo+ICtp bnQgbHMyazEwMDBfZ2V0X2kyYyhzdHJ1Y3QgZHJtX2RldmljZSAqZGRldiwKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGxzZGNfZGlzcGxheV9waXBlICpk aXNwaXBlLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25l ZCBpbnQgaW5kZXgpOwo+ICsKPiDCoCNlbmRpZgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vbG9vbmdzb24vbHNkY19waXhwbGwuYwo+IGIvZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xz ZGNfcGl4cGxsLmMKPiBpbmRleCAyNjA5YTIyNTZkYTQuLjI4MjkwZGNkNzUzNCAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24vbHNkY19waXhwbGwuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9sb29uZ3Nvbi9sc2RjX3BpeHBsbC5jCj4gQEAgLTQxLDYgKzQxLDEzMiBAQCB1 bmlvbiBsc2RjX3BpeHBsbF9yZWdfYml0bWFwIHsKPiDCoMKgwqDCoMKgwqDCoMKgdTY0IGQ7Cj4g wqB9Owo+IMKgCj4gKy8qCj4gKyAqIFRoZSBwaXhlbCBQTEwgc3RydWN0dXJlIG9mIGxzMmsxMDAw IGlzIGRlZmZlcmVudCB0aGFuCj4gbHM3YTIwMDAvbHMyazIwMDAuCj4gKyAqIGl0IHRha2UgdXAg MTYgYnl0ZXMsIGJ1dCBvbmx5IGEgZmV3IGJpdHMgYXJlIHVzZWZ1bC4gU291bmRzIGxpa2UKPiBh IGxpdHRsZQo+ICsgKiBiaXQgb2Ygd2FzdGluZyByZWdpc3RlciBzcGFjZSwgYnV0IHRoaXMgaXMg dGhlIGhhcmR3YXJlIGFscmVhZHkKPiBoYXZlIGJlZW4KPiArICogdGFwcGVkLgo+ICsgKi8KPiAr dW5pb24gbHMyazEwMDBfcGl4cGxsX3JlZ19iaXRtYXAgewo+ICvCoMKgwqDCoMKgwqDCoHN0cnVj dCBsczJrMTAwMF9waXhwbGxfcmVnIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg LyogQnl0ZSAwIH4gQnl0ZSAzICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVu c2lnbmVkIHNlbF9vdXTCoMKgwqDCoMKgIDrCoCAxO8KgIC8qwqAgMMKgwqDCoCBzZWxlY3QgdGhp cwo+IFBMTMKgwqDCoMKgwqDCoMKgICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHVuc2lnbmVkIF9yZXNlcnZlZF8xXyA6wqAgMTvCoCAvKsKgCj4gMcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgdW5zaWduZWQgc3dfYWRqX2VuwqDCoMKgIDrCoCAxO8KgIC8qwqAgMsKg wqDCoCBhbGxvdyBzb2Z0d2FyZQo+IGFkanVzdMKgICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHVuc2lnbmVkIGJ5cGFzc8KgwqDCoMKgwqDCoCA6wqAgMTvCoCAvKsKgIDPCoMKg wqAgYnlwYXNzIEwxCj4gUExMwqDCoMKgwqDCoMKgwqDCoMKgICovCj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIF9yZXNlcnZlZF8yXyA6wqAgMzvCoCAvKsKgCj4gNDo2 wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGxvY2tfZW7CoMKgwqDCoMKgIDrC oCAxO8KgIC8qwqAgN8KgwqDCoCBlbmFibGUgbG9jayBMMQo+IFBMTMKgwqDCoMKgICovCj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIF9yZXNlcnZlZF8zXyA6wqAgMjvC oCAvKsKgCj4gODo5wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGxvY2tfY2hl Y2vCoMKgIDrCoCAyO8KgIC8qIDEwOjExIHByZWNpc2lvbgo+IGNoZWNrwqDCoMKgwqDCoMKgwqAg Ki8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdW5zaWduZWQgX3Jlc2VydmVkXzRf IDrCoCA0O8KgIC8qCj4gMTI6MTXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICovCj4gKwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1bnNpZ25l ZCBsb2NrZWTCoMKgwqDCoMKgwqAgOsKgIDE7wqAgLyogMTbCoMKgwqAgUExMIGxvY2tlZCBmbGFn Cj4gYml0wqDCoMKgICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVuc2lnbmVk IF9yZXNlcnZlZF81XyA6wqAgMjvCoCAvKgo+IDE3OjE4wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB1bnNpZ25lZCBwb3dlcmRvd27CoMKgwqAgOsKgIDE7wqAgLyogMTnCoMKgwqAgcG93ZXJkb3du IHRoZQo+IHBsbMKgwqDCoMKgwqAgKi8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg dW5zaWduZWQgX3Jlc2VydmVkXzZfIDrCoCA2O8KgIC8qCj4gMjA6MjXCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHVuc2lnbmVkIGRpdl9yZWbCoMKgwqDCoMKgIDrCoCA2O8KgIC8qIDI2OjMxIEwx Cj4gUHJlc2NhbGVywqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPiArCj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoC8qIEJ5dGUgNCB+IEJ5dGUgNyAqLwo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBsb29wY8KgwqDCoMKgwqDCoMKgIDogMTA7wqAgLyogMzI6 NDEgQ2xvY2sKPiBNdWx0aXBsaWVywqDCoMKgwqDCoMKgICovCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHVuc2lnbmVkIGwxX2RpdsKgwqDCoMKgwqDCoCA6wqAgNjvCoCAvKiA0Mjo0 NyBubwo+IHVzZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIF9yZXNlcnZlZF83XyA6IDE2O8KgIC8qCj4g NDg6NjPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4g Kwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBCeXRlIDggfiBCeXRlIDE1ICov Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGRpdl9vdXTCoMKgwqDC oMKgIDrCoCA2O8KgIC8qIDY0IDogNjnCoMKgIG91dHB1dCBjbGsKPiBkaXZpZGVyICovCj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIF9yZXNlcnZlZF84XyA6IDI2O8Kg IC8qIDcwIDogMTI3wqAgbm8KPiB1c2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPiArwqDC oMKgwqDCoMKgwqB9IGJpdG1hcDsKPiArCj4gK8KgwqDCoMKgwqDCoMKgdTMyIHdbNF07Cj4gK8Kg wqDCoMKgwqDCoMKgdTY0IGRbMl07Cj4gK307Cj4gKwo+ICsvKgo+ICsgKiBVcGRhdGUgdGhlIHBs bCBwYXJhbWV0ZXJzIHRvIGhhcmR3YXJlLCB0YXJnZXQgdG8gdGhlIHBpeHBsbCBpbgo+IGxzMmsx MDAwCj4gKyAqCj4gKyAqIEB0aGlzOiBwb2ludCB0byB0aGUgb2JqZWN0IGZyb20gd2hpY2ggdGhp cyBmdW5jdGlvbiBpcyBjYWxsZWQKPiArICogQHBpbjogcG9pbnQgdG8gdGhlIHN0cnVjdCBvZiBs c2RjX3BsbF9wYXJtcyBwYXNzZWQgaW4KPiArICoKPiArICogcmV0dXJuIDAgaWYgc3VjY2Vzc2Z1 bC4KPiArICovCj4gK3N0YXRpYyBpbnQgbHMyazEwMDBfcGl4cGxsX3BhcmFtX3VwZGF0ZShzdHJ1 Y3QgbHNkY19waXhwbGwgKiBjb25zdAo+IHRoaXMsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0 cnVjdCBsc2RjX3BpeHBsbF9wYXJtcwo+IGNvbnN0ICpwaW4pCj4gK3sKPiArwqDCoMKgwqDCoMKg wqB2b2lkIF9faW9tZW0gKnJlZyA9IHRoaXMtPm1taW87Cj4gK8KgwqDCoMKgwqDCoMKgdW5zaWdu ZWQgaW50IGNvdW50ZXIgPSAwOwo+ICvCoMKgwqDCoMKgwqDCoGJvb2wgbG9ja2VkID0gZmFsc2U7 Cj4gK8KgwqDCoMKgwqDCoMKgdTMyIHZhbDsKPiArCj4gK8KgwqDCoMKgwqDCoMKgdmFsID0gcmVh ZGwocmVnKTsKPiArwqDCoMKgwqDCoMKgwqAvKiBCeXBhc3MgdGhlIHNvZnR3YXJlIGNvbmZpZ3Vy ZWQgUExMLCB1c2luZyByZWZjbGsgZGlyZWN0bHkKPiAqLwo+ICvCoMKgwqDCoMKgwqDCoHZhbCAm PSB+KDEgPDwgMCk7Cj4gK8KgwqDCoMKgwqDCoMKgd3JpdGVsKHZhbCwgcmVnKTsKPiArCj4gK8Kg wqDCoMKgwqDCoMKgLyogUG93ZXJkb3duIHRoZSBQTEwgKi8KPiArwqDCoMKgwqDCoMKgwqB2YWwg fD0gKDEgPDwgMTkpOwo+ICvCoMKgwqDCoMKgwqDCoHdyaXRlbCh2YWwsIHJlZyk7Cj4gKwo+ICvC oMKgwqDCoMKgwqDCoC8qIEFsbG93IHRoZSBzb2Z0d2FyZSBjb25maWd1cmF0aW9uICovCj4gK8Kg wqDCoMKgwqDCoMKgdmFsICY9IH4oMSA8PCAyKTsKPiArwqDCoMKgwqDCoMKgwqB3cml0ZWwodmFs LCByZWcpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqAvKiBhbGxvdyBMMSBQTEwgbG9jayAqLwo+ICvC oMKgwqDCoMKgwqDCoHZhbCA9ICgxTCA8PCA3KSB8ICgzTCA8PCAxMCk7Cj4gK8KgwqDCoMKgwqDC oMKgd3JpdGVsKHZhbCwgcmVnKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgLyogY2xlYXIgZGl2X3Jl ZiBiaXQgZmllbGQgKi8KPiArwqDCoMKgwqDCoMKgwqB2YWwgJj0gfigweDNmIDw8IDI2KTsKPiAr wqDCoMKgwqDCoMKgwqAvKiBzZXQgZGl2X3JlZiBiaXQgZmllbGQgKi8KPiArwqDCoMKgwqDCoMKg wqB2YWwgfD0gcGluLT5kaXZfcmVmIDw8IDI2Owo+ICvCoMKgwqDCoMKgwqDCoHdyaXRlbCh2YWws IHJlZyk7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHZhbCA9IHJlYWRsKHJlZyArIDQpOwo+ICvCoMKg wqDCoMKgwqDCoC8qIGNsZWFyIGxvb3BjIGJpdCBmaWVsZCAqLwo+ICvCoMKgwqDCoMKgwqDCoHZh bCAmPSB+MHgwZmZmOwo+ICvCoMKgwqDCoMKgwqDCoC8qIHNldCBsb29wYyBiaXQgZmllbGQgKi8K PiArwqDCoMKgwqDCoMKgwqB2YWwgfD0gcGluLT5sb29wYzsKPiArwqDCoMKgwqDCoMKgwqB3cml0 ZWwodmFsLCByZWcgKyA0KTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgLyogc2V0IGRpdl9vdXQgKi8K PiArwqDCoMKgwqDCoMKgwqB3cml0ZWwocGluLT5kaXZfb3V0LCByZWcgKyA4KTsKPiArCj4gK8Kg wqDCoMKgwqDCoMKgdmFsID0gcmVhZGwocmVnKTsKPiArwqDCoMKgwqDCoMKgwqAvKiB1c2UgdGhp cyBwYXJtcyBjb25maWd1cmVkIGp1c3Qgbm93ICovCj4gK8KgwqDCoMKgwqDCoMKgdmFsIHw9ICgx IDw8IDIpOwo+ICvCoMKgwqDCoMKgwqDCoC8qIHBvd2VydXAgdGhlIFBMTCAqLwo+ICvCoMKgwqDC oMKgwqDCoHZhbCAmPSB+KDEgPDwgMTkpOwo+ICvCoMKgwqDCoMKgwqDCoHdyaXRlbCh2YWwsIHJl Zyk7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoC8qIHdhaXQgcGxsIHNldHVwIGFuZCBsb2NrZWQgKi8K PiArwqDCoMKgwqDCoMKgwqBkbyB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHZh bCA9IHJlYWRsKHJlZyk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGxvY2tlZCA9 IHZhbCAmIDB4MTAwMDA7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvdW50ZXIr KzsKPiArwqDCoMKgwqDCoMKgwqB9IHdoaWxlICghbG9ja2VkICYmIChjb3VudGVyIDwgMjAwMCkp Owo+ICsKPiArwqDCoMKgwqDCoMKgwqBkcm1fZGJnKHRoaXMtPmRkZXYsICIldSBsb29wIHdhaXRl ZFxuIiwgY291bnRlcik7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoC8qIFN3aXRjaCB0byBzb2Z0d2Fy ZSBjb25maWd1cmVkIFBMTCBpbnN0ZWFkIG9mIHJlZmNsayAqLwo+ICvCoMKgwqDCoMKgwqDCoHZh bCB8PSAxOwo+ICvCoMKgwqDCoMKgwqDCoHdyaXRlbCh2YWwsIHJlZyk7Cj4gKwo+ICvCoMKgwqDC oMKgwqDCoHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdW5zaWduZWQgaW50Cj4gK2xzMmsx MDAwX3BpeHBsbF9nZXRfY2xvY2tfcmF0ZShzdHJ1Y3QgbHNkY19waXhwbGwgKiBjb25zdCB0aGlz KQo+ICt7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGxzZGNfcGl4cGxsX3Bhcm1zICpwcGFyID0g dGhpcy0+cHJpdjsKPiArwqDCoMKgwqDCoMKgwqB1bmlvbiBsczJrMTAwMF9waXhwbGxfcmVnX2Jp dG1hcCByZWdfYml0bWFwOwo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBsczJrMTAwMF9waXhwbGxf cmVnICpvYmogPSAmcmVnX2JpdG1hcC5iaXRtYXA7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHJlZ19i aXRtYXAud1swXSA9IHJlYWRsKHRoaXMtPm1taW8pOwo+ICvCoMKgwqDCoMKgwqDCoHJlZ19iaXRt YXAud1sxXSA9IHJlYWRsKHRoaXMtPm1taW8gKyA0KTsKPiArwqDCoMKgwqDCoMKgwqByZWdfYml0 bWFwLndbMl0gPSByZWFkbCh0aGlzLT5tbWlvICsgOCk7Cj4gK8KgwqDCoMKgwqDCoMKgcmVnX2Jp dG1hcC53WzNdID0gcmVhZGwodGhpcy0+bW1pbyArIDEyKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKg cmV0dXJuIHBwYXItPnJlZl9jbG9jayAvIG9iai0+ZGl2X3JlZiAqIG9iai0+bG9vcGMgLyBvYmot Cj4gPmRpdl9vdXQ7Cj4gK30KPiArCj4gwqBzdHJ1Y3QgY2xrX3RvX3BpeHBsbF9wYXJtc19sb29r dXBfdCB7Cj4gwqDCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGludCBjbG9jazvCoMKgwqDCoMKgwqDC oCAvKiBrSHogKi8KPiDCoAo+IEBAIC00NTIsMTEgKzU3OCwxOSBAQCBzdGF0aWMgdm9pZCBsc2Rj X3BpeHBsbF9wcmludChzdHJ1Y3QKPiBsc2RjX3BpeHBsbCAqIGNvbnN0IHRoaXMsCj4gwqB9Cj4g wqAKPiDCoC8qCj4gLSAqIExTN0ExMDAwLCBMUzdBMjAwMCBhbmQgbHMyazIwMDAncyBwaXhlbCBw bGwgc2V0dGluZyByZWdpc3RlciBpcwo+IHNhbWUsCj4gKyAqIExTN0ExMDAwLCBMUzdBMjAwMCBh bmQgTFMySzIwMDAncyBwaXhlbCBQTEwgcmVnaXN0ZXIgbGF5b3V0IGlzCj4gc2FtZSwKPiDCoCAq IHdlIHRha2UgdGhpcyBhcyBkZWZhdWx0LCBjcmVhdGUgYSBuZXcgaW5zdGFuY2UgaWYgYSBkaWZm ZXJlbnQKPiBtb2RlbCBpcwo+IMKgICogaW50cm9kdWNlZC4KPiDCoCAqLwo+IC1zdGF0aWMgY29u c3Qgc3RydWN0IGxzZGNfcGl4cGxsX2Z1bmNzIF9fcGl4cGxsX2RlZmF1bHRfZnVuY3MgPSB7Cj4g K2NvbnN0IHN0cnVjdCBsc2RjX3BpeHBsbF9mdW5jcyBsczdhMTAwMF9waXhwbGxfZnVuY3MgPSB7 Cj4gK8KgwqDCoMKgwqDCoMKgLnNldHVwID0gbHNkY19waXhlbF9wbGxfc2V0dXAsCj4gK8KgwqDC oMKgwqDCoMKgLmNvbXB1dGUgPSBsc2RjX3BpeGVsX3BsbF9jb21wdXRlLAo+ICvCoMKgwqDCoMKg wqDCoC51cGRhdGUgPSBsc2RjX3BpeHBsbF91cGRhdGUsCj4gK8KgwqDCoMKgwqDCoMKgLmdldF9y YXRlID0gbHNkY19waXhwbGxfZ2V0X2ZyZXEsCj4gK8KgwqDCoMKgwqDCoMKgLnByaW50ID0gbHNk Y19waXhwbGxfcHJpbnQsCj4gK307Cj4gKwo+ICtjb25zdCBzdHJ1Y3QgbHNkY19waXhwbGxfZnVu Y3MgbHM3YTIwMDBfcGl4cGxsX2Z1bmNzID0gewo+IMKgwqDCoMKgwqDCoMKgwqAuc2V0dXAgPSBs c2RjX3BpeGVsX3BsbF9zZXR1cCwKPiDCoMKgwqDCoMKgwqDCoMKgLmNvbXB1dGUgPSBsc2RjX3Bp eGVsX3BsbF9jb21wdXRlLAo+IMKgwqDCoMKgwqDCoMKgwqAudXBkYXRlID0gbHNkY19waXhwbGxf dXBkYXRlLAo+IEBAIC00NjQsNiArNTk4LDE5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbHNkY19w aXhwbGxfZnVuY3MKPiBfX3BpeHBsbF9kZWZhdWx0X2Z1bmNzID0gewo+IMKgwqDCoMKgwqDCoMKg wqAucHJpbnQgPSBsc2RjX3BpeHBsbF9wcmludCwKPiDCoH07Cj4gwqAKPiArLyoKPiArICogVGhl IGJpdCBmaWxlZHMgb2YgTFMySzEwMDAncyBwaXhlbCBQTEwgcmVnaXN0ZXIgYXJlIGRpZmZlcmVu dAo+IGZyb20gb3RoZXIKPiArICogbW9kZWwsIGR1ZSB0byBoYXJkd2FyZSB1cGRhdGUocmV2aXNp b24pLiBTbyB3ZSBpbnRyb2R1Y2UgYSBuZXcKPiBpbnN0YW5jZQo+ICsgKiBvZiBsc2RjX3BpeHBs bF9mdW5jcyBvYmplY3QgZnVuY3Rpb24gdG8gZ2VhciB0aGUgY29udHJvbC4KPiArICovCj4gK2Nv bnN0IHN0cnVjdCBsc2RjX3BpeHBsbF9mdW5jcyBsczJrMTAwMF9waXhwbGxfZnVuY3MgPSB7Cj4g K8KgwqDCoMKgwqDCoMKgLnNldHVwID0gbHNkY19waXhlbF9wbGxfc2V0dXAsCj4gK8KgwqDCoMKg wqDCoMKgLmNvbXB1dGUgPSBsc2RjX3BpeGVsX3BsbF9jb21wdXRlLAo+ICvCoMKgwqDCoMKgwqDC oC51cGRhdGUgPSBsczJrMTAwMF9waXhwbGxfcGFyYW1fdXBkYXRlLAo+ICvCoMKgwqDCoMKgwqDC oC5nZXRfcmF0ZSA9IGxzMmsxMDAwX3BpeHBsbF9nZXRfY2xvY2tfcmF0ZSwKPiArwqDCoMKgwqDC oMKgwqAucHJpbnQgPSBsc2RjX3BpeHBsbF9wcmludCwKPiArfTsKPiArCj4gwqAvKiBwaXhlbCBw bGwgaW5pdGlhbGl6YXRpb24gKi8KPiDCoAo+IMKgaW50IGxzZGNfcGl4cGxsX2luaXQoc3RydWN0 IGxzZGNfcGl4cGxsICogY29uc3QgdGhpcywKPiBAQCAtNDc3LDcgKzYyNCw3IEBAIGludCBsc2Rj X3BpeHBsbF9pbml0KHN0cnVjdCBsc2RjX3BpeHBsbCAqIGNvbnN0Cj4gdGhpcywKPiDCoMKgwqDC oMKgwqDCoMKgdGhpcy0+ZGRldiA9IGRkZXY7Cj4gwqDCoMKgwqDCoMKgwqDCoHRoaXMtPnJlZ19z aXplID0gODsKPiDCoMKgwqDCoMKgwqDCoMKgdGhpcy0+cmVnX2Jhc2UgPSBnZngtPmNvbmZfcmVn X2Jhc2UgKyBnZngtCj4gPnBpeHBsbFtpbmRleF0ucmVnX29mZnNldDsKPiAtwqDCoMKgwqDCoMKg wqB0aGlzLT5mdW5jcyA9ICZfX3BpeHBsbF9kZWZhdWx0X2Z1bmNzOwo+ICvCoMKgwqDCoMKgwqDC oHRoaXMtPmZ1bmNzID0gZ2Z4LT5waXhwbGxfZnVuY3M7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKg cmV0dXJuIHRoaXMtPmZ1bmNzLT5zZXR1cCh0aGlzKTsKPiDCoH0KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2xvb25nc29uL2xzZGNfcGl4cGxsLmgKPiBiL2RyaXZlcnMvZ3B1L2RybS9s b29uZ3Nvbi9sc2RjX3BpeHBsbC5oCj4gaW5kZXggZWMzNDg2ZDkwYWI2Li44YjZmZmQwZWY0ZmIg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xzZGNfcGl4cGxsLmgKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24vbHNkY19waXhwbGwuaAo+IEBAIC04Myw0ICs4 Myw4IEBAIGludCBsc2RjX3BpeHBsbF9pbml0KHN0cnVjdCBsc2RjX3BpeHBsbCAqIGNvbnN0Cj4g dGhpcywKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBk cm1fZGV2aWNlICpkZGV2LAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgdW5zaWduZWQgaW50IGluZGV4KTsKPiDCoAo+ICtleHRlcm4gY29uc3Qgc3RydWN0IGxzZGNf cGl4cGxsX2Z1bmNzIGxzMmsxMDAwX3BpeHBsbF9mdW5jczsKPiArZXh0ZXJuIGNvbnN0IHN0cnVj dCBsc2RjX3BpeHBsbF9mdW5jcyBsczdhMTAwMF9waXhwbGxfZnVuY3M7Cj4gK2V4dGVybiBjb25z dCBzdHJ1Y3QgbHNkY19waXhwbGxfZnVuY3MgbHM3YTIwMDBfcGl4cGxsX2Z1bmNzOwo+ICsKPiDC oCNlbmRpZgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24vbHNkY19wcm9i ZS5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24vbHNkY19wcm9iZS5jCj4gaW5kZXggNDhi YTY5YmI4YTk4Li5lZGMzODEyZjA5NTcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2xv b25nc29uL2xzZGNfcHJvYmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sc2Rj X3Byb2JlLmMKPiBAQCAtNTQsMyArNTQsMzAgQEAgdW5zaWduZWQgaW50IGxvb25nc29uX2NwdV9n ZXRfcHJpZCh1OCAqaW1wLCB1OAo+ICpyZXYpCj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJu IHByaWQ7Cj4gwqB9Cj4gKwo+ICtlbnVtIGxvb25nc29uX2NoaXBfaWQgbG9vbmdzb25fY2hpcF9p ZF9maXh1cChlbnVtIGxvb25nc29uX2NoaXBfaWQKPiBjaGlwX2lkKQo+ICt7Cj4gK8KgwqDCoMKg wqDCoMKgdTggaW1wbDsKPiArCj4gK8KgwqDCoMKgwqDCoMKgaWYgKGxvb25nc29uX2NwdV9nZXRf cHJpZCgmaW1wbCwgTlVMTCkpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyoK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogTFMySzEwMDAgaGFzIHRoZSBMb29u Z0FyY2ggZWRpdGlvbih3aXRoIHR3byBMQTI2NAo+IENQVSBjb3JlKQo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgKiBhbmQgdGhlIE1pcHMgZWRpdGlvbih3aXRoIHR3byBtaXBzNjRy MiBDUFUgY29yZSksCj4gT25seSB0aGUKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICogaW5zdHJ1Y3Rpb24gc2V0IG9mIHRoZSBDUFUgYXJlIGNoYW5nZWQsIHRoZQo+IHBlcmlwaGVy YWwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogZGV2aWNlcyBhcmUgYmFzaWNh bGx5IHNhbWUuCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoY2hpcF9pZCA9PSBDSElQX0xTN0ExMDAwKSB7Cj4g KyNpZiBkZWZpbmVkKF9fbG9vbmdhcmNoX18pCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoaW1wbCA9PSBMT09OR0FSQ0hfQ1BVX0lNUF9MUzJLMTAw MCkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqByZXR1cm4gQ0hJUF9MUzJLMTAwMDsKPiArI2VuZGlmCj4gKwo+ICsjaWYgZGVm aW5lZChfX21pcHNfXykKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGlmIChpbXBsID09IExPT05HU09OX0NQVV9NSVBTX0lNUF9MUzJLKQo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJl dHVybiBDSElQX0xTMksxMDAwOwo+ICsjZW5kaWYKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgfQo+ICvCoMKgwqDCoMKgwqDCoH0KPiArCj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIGNo aXBfaWQ7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xzZGNf cHJvYmUuaAo+IGIvZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xzZGNfcHJvYmUuaAo+IGluZGV4 IDhiYjZkZTJlM2M2NC4uOGM2MzBjNWM5MGNlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9sb29uZ3Nvbi9sc2RjX3Byb2JlLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24v bHNkY19wcm9iZS5oCj4gQEAgLTksNCArOSw2IEBACj4gwqAvKiBIZWxwZXJzIGZvciBjaGlwIGRl dGVjdGlvbiAqLwo+IMKgdW5zaWduZWQgaW50IGxvb25nc29uX2NwdV9nZXRfcHJpZCh1OCAqaW1w bCwgdTggKnJldik7Cj4gwqAKPiArZW51bSBsb29uZ3Nvbl9jaGlwX2lkIGxvb25nc29uX2NoaXBf aWRfZml4dXAoZW51bSBsb29uZ3Nvbl9jaGlwX2lkCj4gY2hpcF9pZCk7Cj4gKwo+IMKgI2VuZGlm Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9sc2RjX3JlZ3MuaAo+IGIv ZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xzZGNfcmVncy5oCj4gaW5kZXggZThlYTI4Njg5YzYz Li5jMTFhOWZjMGQyZjYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xz ZGNfcmVncy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL2xzZGNfcmVncy5oCj4g QEAgLTM5LDYgKzM5LDQyIEBACj4gwqAKPiDCoCNkZWZpbmUgTFM3QTIwMDBfQ09ORl9SRUdfQkFT RcKgwqDCoMKgwqDCoMKgwqDCoCAweDEwMDEwMDAwCj4gwqAKPiArLyoKPiArICogVGhlIGRpc3Bs YXkgY29udHJvbGxlciBpbiBMUzJLMTAwMCBTb0MgaXMgYmFzaWNhbGx5IHNhbWUgd2l0aCB0aGUK PiBkaXNwbGF5Cj4gKyAqIGNvbnRyb2xsZXIgaW4gTFM3QTEwMDAsIGV4Y2VwdCB0aGF0IHRoZXJl IG5vIGJ1aWx0LWluIGdwaW8KPiBoYXJkd2FyZSB1bml0Cj4gKyAqIGFuZCBubyBkZWRpY2F0ZWQg VlJBTS4KPiArICrCoMKgwqDCoMKgwqAgX19fX19fX19fX19fX19fX19fX8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oAo+IF9fX19fX19fXwo+ICsgKsKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLS0t LS0tLXzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoAo+IHzCoMKgwqDCoMKgwqDCoMKgIHwKPiArICrCoMKgwqDCoMKgIHzC oCBDUlRDMCAtLT4gfCBEVk8wIC0tLS0+IEVuY29kZXIwIC0tLT4gQ29ubmVjdG9yMCAtLS0+IHwK PiBEaXNwbGF5IHwKPiArICrCoMKgwqDCoMKgIHzCoCBfwqDCoCBfwqDCoMKgwqAgLS0tLS0tLXzC oMKgwqDCoMKgwqDCoCBewqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXsKgwqDCoMKgwqDCoMKg wqDCoMKgCj4gfF9fX19fX19fX3wKPiArICrCoMKgwqDCoMKgIHwgfCB8IHwgfMKgwqDCoMKgwqDC oMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+ ICsgKsKgwqDCoMKgwqAgfCB8X3wgfF98wqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgICst LS0tLS0rwqDCoMKgwqDCoMKgwqDCoMKgIHwKPiArICrCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgPC0tLS0+fCBpMmMwIHw8LS0tLS0tLS0tKwo+ICsgKsKg wqDCoMKgwqAgfMKgIERDIGluIExTMksxMDAwwqDCoCB8wqDCoMKgwqAgKy0tLS0tLSsKPiArICrC oMKgwqDCoMKgIHzCoCBfwqDCoCBfwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqAgKy0t LS0tLSsKPiArICrCoMKgwqDCoMKgIHwgfCB8IHwgfMKgwqDCoMKgwqDCoMKgwqDCoMKgIDwtLS0t PnwgaTJjMSB8LS0tLS0tLS0tLSsKPiArICrCoMKgwqDCoMKgIHwgfF98IHxffMKgwqDCoMKgwqDC oMKgwqDCoMKgIHzCoMKgwqDCoCArLS0tLS0tK8KgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDC oMKgwqDCoMKgwqDCoAo+IF9fX19fX19fXwo+ICsgKsKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgLS0tLS0tLXzCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gfMKgwqDCoMKgwqDCoMKgwqAgfAo+ICsgKsKgwqDC oMKgwqAgfMKgIENSVEMxIC0tPiB8IERWTzEgLS0tLT4gRW5jb2RlcjEgLS0tPiBDb25uZWN0b3Ix IC0tLT4gfMKgCj4gUGFuZWzCoCB8Cj4gKyAqwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAtLS0tLS0tfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gfF9fX19fX19fX3wKPiArICrCoMKgwqDCoMKgIHxf X19fX19fX19fX19fX19fX19ffAo+ICsgKgo+ICsgKi8KPiArCj4gKyNpZiBkZWZpbmVkKF9fbWlw c19fKQo+ICsjZGVmaW5lIExTMksxMDAwX0NPTkZfUkVHX0JBU0XCoMKgwqDCoMKgwqDCoMKgwqDC oCAweDFmZTEwMDAwwqDCoMKgIC8qIG1pcHM2NHIyCj4gZWRpdGlvbiAqLwo+ICsjZWxzZQo+ICsj ZGVmaW5lIExTMksxMDAwX0NPTkZfUkVHX0JBU0XCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDFmZTAw MDAwwqDCoMKgIC8qIExvb25nQXJjaAo+IGVkaXRpb24gKi8KPiArI2VuZGlmCj4gKwo+ICsvKiBU aGUgSERBLCBHUFUsIEREUiBzaGFyZSB0aGUgc2luZ2xlIEREUiBQTEwgKi8KPiArI2RlZmluZSBM UzJLMTAwMF9ERFJfUExMX1JFR8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDA0OTAKPiArLyog VGhlIERDIGFuZCBHTUFDIHNoYXJlIHRoZSBzYW1lIFBMTCAqLwo+ICsjZGVmaW5lIExTMksxMDAw X0RDX1BMTF9SRUfCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDA0QTAKPiArCj4gKyNkZWZp bmUgTFMySzEwMDBfUElYMF9QTExfUkVHwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDA0QjAKPiAr I2RlZmluZSBMUzJLMTAwMF9QSVgxX1BMTF9SRUfCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MDRD MAo+ICsKPiDCoC8qIEZvciBMU0RDX0NSVEN4X0NGR19SRUcgKi8KPiDCoCNkZWZpbmUgQ0ZHX1BJ WF9GTVRfTUFTS8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBHRU5NQVNLKDIsIDApCj4g wqAKCg==