From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.2 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C34FAC433DB for ; Fri, 12 Feb 2021 13:22:02 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 7698C64E57 for ; Fri, 12 Feb 2021 13:22:02 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7698C64E57 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:Message-ID: Subject:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=NkdpLuabyNPlinjdRUAVw+TsEaGSAAEDPYiZxK8R/JI=; b=rCpr52cWr77Y/ZPoU94i7td6w RzqsNhpgMt6K/FgmpgDvqHwa8amyxETTq7nI27KG20qlpm1EwXQO1rvU98HWDxmStOj8paKIh05E/ gES+xSHLPhMiKK/DZP8DBh7fqeNh4ULQHKefQekpuAEAsl0LMQS3E51QgIcQhKx9FHz4Qg+JRLWOM zWgUySP4cWcBBXyvvJmlG3l3OeshKHcEXw0LciMQG0JNVX4yBz+D0QG35/v7C+78QMGM0tAcEAq0a cQpmKxcmhUgtBh4NYjfLyHIKWdpnH8KH55ZF18m6iih3XJjl3+UmBPFsoDQ6jQTC7cAfMEpvcE3kt xIwWu2d4g==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1lAYNK-0002Zw-GC; Fri, 12 Feb 2021 13:20:46 +0000 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1lAYNH-0002Yd-MQ for linux-arm-kernel@lists.infradead.org; Fri, 12 Feb 2021 13:20:44 +0000 Received: by mail-pf1-x434.google.com with SMTP id 189so5814621pfy.6 for ; Fri, 12 Feb 2021 05:20:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=cTQEqXBmnHB2EgizLse4tydi3im1uOQRvgvnrkN47J8=; b=c2m4BrFm6utQ8jG49ztsui33dIHmVYha/smSZZp6CdGbN7x9X8NAVvf3UAdn+H12Jf Bo/Kqyr9ttnxE0XM3TbkYTsU7JNjWd8TT3R+7hMNaxPGffGQATTAcoXgDnFLcimQO7zY 5zYQ3qsfhBtXcTRcs/ESmGyiydTjxZNKzG1rhh8VRoq6a9MfdkeUx7v83NhyFm9bCpyP lQcCy3UGYiCOgJAdMM9+YD2A0uiCRiHzXj9VwF/Kxu2cwhAqmwPxhWLLb1/FXUlCdi6T 9W6s4mawVTzuZtj2f/spx5VzYgK99wKtjIGGWARfmKrjt57/SpbfdLQ3W+Bj4lS1ife7 4wcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to:user-agent; bh=cTQEqXBmnHB2EgizLse4tydi3im1uOQRvgvnrkN47J8=; b=sLHLpiz129yLH7KdVMsdsOHee1aiS6SryFjxckSitYdltL0ITY6+O9onfzIN5Tim5o gHEOYrs2KFn5/TVoqW0QtCkASwRbaz+tw+oaK7s0TPNsVRY+hzIFGKqks0yX16qjTzzT Jh9uiF68sVpZCXvHO2+HBzEZehB5Loz+V+qmEsJ5btE+xW2WMuBzkLSoig0BrHbtgDC6 8YtG8gxS5F2t9PYi4dzGa5pxVmwDylWVGWccWiNXNoi9ZfJGWBxus/MNPCmGS6I+bLm2 1Ad3//AhOKrzBTqVH9Matbmk1ncfLB9lXJ454tsFrtr3f+jYsQ+a1DVvV87UO5zA5mzz qpvg== X-Gm-Message-State: AOAM530mnesuahLdhxYSZ2EnzJ1uG+wZjxEGsWtBjCOh+dAi+pI8CriS o4nQrjxmrfSL25q2+jz7skE= X-Google-Smtp-Source: ABdhPJwwF+8ia0xQ32smGqMNWm3lJv4V7czNffAMHLs+siAu92CyuitiArgz+CfLeEAsLSE+LL7sZA== X-Received: by 2002:a65:6688:: with SMTP id b8mr3133522pgw.158.1613136041576; Fri, 12 Feb 2021 05:20:41 -0800 (PST) Received: from syed.domain.name ([103.201.127.1]) by smtp.gmail.com with ESMTPSA id w188sm7287592pfw.177.2021.02.12.05.20.35 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 12 Feb 2021 05:20:41 -0800 (PST) Date: Fri, 12 Feb 2021 18:50:20 +0530 From: Syed Nayyar Waris To: bgolaszewski@baylibre.com Subject: [PATCH v2 1/3] gpiolib: Introduce the for_each_set_clump macro Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.24 (2015-08-30) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210212_082043_793691_CE725069 X-CRM114-Status: GOOD ( 23.80 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-arch@vger.kernel.org, amit.kucheria@verdurent.com, arnd@arndb.de, yamada.masahiro@socionext.com, linux-kernel@vger.kernel.org, linus.walleij@linaro.org, daniel.lezcano@linaro.org, vilhelm.gray@gmail.com, michal.simek@xilinx.com, bgolaszewski@baylibre.com, rrichter@marvell.com, linux-gpio@vger.kernel.org, linux-pm@vger.kernel.org, akpm@linux-foundation.org, andriy.shevchenko@linux.intel.com, rui.zhang@intel.com, linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org VGhpcyBtYWNybyBpdGVyYXRlcyBmb3IgZWFjaCBncm91cCBvZiBiaXRzIChjbHVtcCkgd2l0aCBz ZXQgYml0cywKd2l0aGluIGEgYml0bWFwIG1lbW9yeSByZWdpb24uIEZvciBlYWNoIGl0ZXJhdGlv biwgInN0YXJ0IiBpcyBzZXQgdG8KdGhlIGJpdCBvZmZzZXQgb2YgdGhlIGZvdW5kIGNsdW1wLCB3 aGlsZSB0aGUgcmVzcGVjdGl2ZSBjbHVtcCB2YWx1ZSBpcwpzdG9yZWQgdG8gdGhlIGxvY2F0aW9u IHBvaW50ZWQgYnkgImNsdW1wIi4gQWRkaXRpb25hbGx5LCB0aGUKYml0bWFwX2dldF92YWx1ZSgp IGFuZCBiaXRtYXBfc2V0X3ZhbHVlKCkgZnVuY3Rpb25zIGFyZSBpbnRyb2R1Y2VkIHRvCnJlc3Bl Y3RpdmVseSBnZXQgYW5kIHNldCBhIHZhbHVlIG9mIG4tYml0cyBpbiBhIGJpdG1hcCBtZW1vcnkg cmVnaW9uLgpUaGUgbi1iaXRzIGNhbiBoYXZlIGFueSBzaXplIGZyb20gMSB0byBCSVRTX1BFUl9M T05HLiBzaXplIGxlc3MKdGhhbiAxIG9yIG1vcmUgdGhhbiBCSVRTX1BFUl9MT05HIGNhdXNlcyB1 bmRlZmluZWQgYmVoYXZpb3VyLgpNb3Jlb3ZlciwgZHVyaW5nIHNldHRpbmcgdmFsdWUgb2Ygbi1i aXQgaW4gYml0bWFwLCBpZiBhIHNpdHVhdGlvbiBhcmlzZQp0aGF0IHRoZSB3aWR0aCBvZiBuZXh0 IG4tYml0IGlzIGV4Y2VlZGluZyB0aGUgd29yZCBib3VuZGFyeSwgdGhlbiBpdAp3aWxsIGRpdmlk ZSBpdHNlbGYgc3VjaCB0aGF0IHNvbWUgcG9ydGlvbiBvZiBpdCBpcyBzdG9yZWQgaW4gdGhhdCB3 b3JkLAp3aGlsZSB0aGUgcmVtYWluaW5nIHBvcnRpb24gaXMgc3RvcmVkIGluIHRoZSBuZXh0IGhp Z2hlciB3b3JkLiBTaW1pbGFyCnNpdHVhdGlvbiBvY2N1cnMgd2hpbGUgcmV0cmlldmluZyB0aGUg dmFsdWUgZnJvbSBiaXRtYXAuCgpDYzogTGludXMgV2FsbGVpaiA8bGludXMud2FsbGVpakBsaW5h cm8ub3JnPgpDYzogQmFydG9zeiBHb8WCYXN6ZXdza2kgPGJnb2xhc3pld3NraUBiYXlsaWJyZS5j b20+CkNjOiBBcm5kIEJlcmdtYW5uIDxhcm5kQGFybmRiLmRlPgpDYzogV2lsbGlhbSBCcmVhdGhp dHQgR3JheSA8dmlsaGVsbS5ncmF5QGdtYWlsLmNvbT4KQ2M6IEFuZHkgU2hldmNoZW5rbyA8YW5k cml5LnNoZXZjaGVua29AbGludXguaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBTeWVkIE5heXlh ciBXYXJpcyA8c3llZG53YXJpc0BnbWFpbC5jb20+Ci0tLQogZHJpdmVycy9ncGlvL2dwaW9saWIu YyB8IDkwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVy cy9ncGlvL2dwaW9saWIuaCB8IDI4ICsrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMTE4 IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwaW8vZ3Bpb2xpYi5jIGIvZHJp dmVycy9ncGlvL2dwaW9saWIuYwppbmRleCBiMDJjYzJhYmQzYjYuLjI4MmFlNTk5YzE0MyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncGlvL2dwaW9saWIuYworKysgYi9kcml2ZXJzL2dwaW8vZ3Bpb2xp Yi5jCkBAIC00MzQyLDYgKzQzNDIsOTYgQEAgc3RhdGljIGludCBncGlvbGliX3NlcV9zaG93KHN0 cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdikKIAlyZXR1cm4gMDsKIH0KIAorLyoqCisgKiBiaXRt YXBfZ2V0X3ZhbHVlIC0gZ2V0IGEgdmFsdWUgb2Ygbi1iaXRzIGZyb20gdGhlIG1lbW9yeSByZWdp b24KKyAqIEBtYXA6IGFkZHJlc3MgdG8gdGhlIGJpdG1hcCBtZW1vcnkgcmVnaW9uCisgKiBAc3Rh cnQ6IGJpdCBvZmZzZXQgb2YgdGhlIG4tYml0IHZhbHVlCisgKiBAbmJpdHM6IHNpemUgb2YgdmFs dWUgaW4gYml0cyAobXVzdCBiZSBiZXR3ZWVuIDEgYW5kIEJJVFNfUEVSX0xPTkcgaW5jbHVzaXZl KS4KKyAqCisgKiBSZXR1cm5zIHZhbHVlIG9mIG5iaXRzIGxvY2F0ZWQgYXQgdGhlIEBzdGFydCBi aXQgb2Zmc2V0IHdpdGhpbiB0aGUgQG1hcAorICogbWVtb3J5IHJlZ2lvbi4KKyAqLwordW5zaWdu ZWQgbG9uZyBiaXRtYXBfZ2V0X3ZhbHVlKGNvbnN0IHVuc2lnbmVkIGxvbmcgKm1hcCwKKwkJCQl1 bnNpZ25lZCBsb25nIHN0YXJ0LAorCQkJCXVuc2lnbmVkIGxvbmcgbmJpdHMpCit7CisJY29uc3Qg c2l6ZV90IGluZGV4ID0gQklUX1dPUkQoc3RhcnQpOworCWNvbnN0IHVuc2lnbmVkIGxvbmcgb2Zm c2V0ID0gc3RhcnQgJSBCSVRTX1BFUl9MT05HOworCWNvbnN0IHVuc2lnbmVkIGxvbmcgY2VpbGlu ZyA9IHJvdW5kX3VwKHN0YXJ0ICsgMSwgQklUU19QRVJfTE9ORyk7CisJY29uc3QgdW5zaWduZWQg bG9uZyBzcGFjZSA9IGNlaWxpbmcgLSBzdGFydDsKKwl1bnNpZ25lZCBsb25nIHZhbHVlX2xvdywg dmFsdWVfaGlnaDsKKworCWlmIChzcGFjZSA+PSBuYml0cykKKwkJcmV0dXJuIChtYXBbaW5kZXhd ID4+IG9mZnNldCkgJiBHRU5NQVNLKG5iaXRzIC0gMSwgMCk7CisJZWxzZSB7CisJCXZhbHVlX2xv dyA9IG1hcFtpbmRleF0gJiBCSVRNQVBfRklSU1RfV09SRF9NQVNLKHN0YXJ0KTsKKwkJdmFsdWVf aGlnaCA9IG1hcFtpbmRleCArIDFdICYgQklUTUFQX0xBU1RfV09SRF9NQVNLKHN0YXJ0ICsgbmJp dHMpOworCQlyZXR1cm4gKHZhbHVlX2xvdyA+PiBvZmZzZXQpIHwgKHZhbHVlX2hpZ2ggPDwgc3Bh Y2UpOworCX0KK30KK0VYUE9SVF9TWU1CT0xfR1BMKGJpdG1hcF9nZXRfdmFsdWUpOworCisvKioK KyAqIGJpdG1hcF9zZXRfdmFsdWUgLSBzZXQgdmFsdWUgd2l0aGluIGEgbWVtb3J5IHJlZ2lvbgor ICogQG1hcDogYWRkcmVzcyB0byB0aGUgYml0bWFwIG1lbW9yeSByZWdpb24KKyAqIEBuYml0czog c2l6ZSBvZiBtYXAgaW4gYml0cworICogQHZhbHVlOiB2YWx1ZSBvZiBjbHVtcAorICogQHZhbHVl X3dpZHRoOiBzaXplIG9mIHZhbHVlIGluIGJpdHMgKG11c3QgYmUgYmV0d2VlbiAxIGFuZCBCSVRT X1BFUl9MT05HIGluY2x1c2l2ZSkKKyAqIEBzdGFydDogYml0IG9mZnNldCBvZiB0aGUgdmFsdWUK KyAqLwordm9pZCBiaXRtYXBfc2V0X3ZhbHVlKHVuc2lnbmVkIGxvbmcgKm1hcCwgdW5zaWduZWQg bG9uZyBuYml0cywKKwkJCXVuc2lnbmVkIGxvbmcgdmFsdWUsIHVuc2lnbmVkIGxvbmcgdmFsdWVf d2lkdGgsCisJCQl1bnNpZ25lZCBsb25nIHN0YXJ0KQoreworCWNvbnN0IHVuc2lnbmVkIGxvbmcg aW5kZXggPSBCSVRfV09SRChzdGFydCk7CisJY29uc3QgdW5zaWduZWQgbG9uZyBsZW5ndGggPSBC SVRfV09SRChuYml0cyk7CisJY29uc3QgdW5zaWduZWQgbG9uZyBvZmZzZXQgPSBzdGFydCAlIEJJ VFNfUEVSX0xPTkc7CisJY29uc3QgdW5zaWduZWQgbG9uZyBjZWlsaW5nID0gcm91bmRfdXAoc3Rh cnQgKyAxLCBCSVRTX1BFUl9MT05HKTsKKwljb25zdCB1bnNpZ25lZCBsb25nIHNwYWNlID0gY2Vp bGluZyAtIHN0YXJ0OworCisJdmFsdWUgJj0gR0VOTUFTSyh2YWx1ZV93aWR0aCAtIDEsIDApOwor CisJaWYgKHNwYWNlID49IHZhbHVlX3dpZHRoKSB7CisJCW1hcFtpbmRleF0gJj0gfihHRU5NQVNL KHZhbHVlX3dpZHRoIC0gMSwgMCkgPDwgb2Zmc2V0KTsKKwkJbWFwW2luZGV4XSB8PSB2YWx1ZSA8 PCBvZmZzZXQ7CisJfSBlbHNlIHsKKwkJbWFwW2luZGV4ICsgMF0gJj0gfkJJVE1BUF9GSVJTVF9X T1JEX01BU0soc3RhcnQpOworCQltYXBbaW5kZXggKyAwXSB8PSB2YWx1ZSA8PCBvZmZzZXQ7CisK KwkJaWYgKGluZGV4ICsgMSA+PSBsZW5ndGgpCisJCQlyZXR1cm47CisKKwkJbWFwW2luZGV4ICsg MV0gJj0gfkJJVE1BUF9MQVNUX1dPUkRfTUFTSyhzdGFydCArIHZhbHVlX3dpZHRoKTsKKwkJbWFw W2luZGV4ICsgMV0gfD0gdmFsdWUgPj4gc3BhY2U7CisJfQorfQorRVhQT1JUX1NZTUJPTF9HUEwo Yml0bWFwX3NldF92YWx1ZSk7CisKKy8qKgorICogZmluZF9uZXh0X2NsdW1wIC0gZmluZCBuZXh0 IGNsdW1wIHdpdGggc2V0IGJpdHMgaW4gYSBtZW1vcnkgcmVnaW9uCisgKiBAY2x1bXA6IGxvY2F0 aW9uIHRvIHN0b3JlIGNvcHkgb2YgZm91bmQgY2x1bXAKKyAqIEBhZGRyOiBhZGRyZXNzIHRvIGJh c2UgdGhlIHNlYXJjaCBvbgorICogQHNpemU6IGJpdG1hcCBzaXplIGluIG51bWJlciBvZiBiaXRz CisgKiBAb2Zmc2V0OiBiaXQgb2Zmc2V0IGF0IHdoaWNoIHRvIHN0YXJ0IHNlYXJjaGluZworICog QGNsdW1wX3NpemU6IGNsdW1wIHNpemUgaW4gYml0cworICoKKyAqIFJldHVybnMgdGhlIGJpdCBv ZmZzZXQgZm9yIHRoZSBuZXh0IHNldCBjbHVtcDsgdGhlIGZvdW5kIGNsdW1wIHZhbHVlIGlzCisg KiBjb3BpZWQgdG8gdGhlIGxvY2F0aW9uIHBvaW50ZWQgYnkgQGNsdW1wLiBJZiBubyBiaXRzIGFy ZSBzZXQsIHJldHVybnMgQHNpemUuCisgKi8KK3Vuc2lnbmVkIGxvbmcgZmluZF9uZXh0X2NsdW1w KHVuc2lnbmVkIGxvbmcgKmNsdW1wLCBjb25zdCB1bnNpZ25lZCBsb25nICphZGRyLAorCQkJCXVu c2lnbmVkIGxvbmcgc2l6ZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQsCisJCQkJdW5zaWduZWQgbG9u ZyBjbHVtcF9zaXplKQoreworCW9mZnNldCA9IGZpbmRfbmV4dF9iaXQoYWRkciwgc2l6ZSwgb2Zm c2V0KTsKKwlpZiAob2Zmc2V0ID09IHNpemUpCisJCXJldHVybiBzaXplOworCisJb2Zmc2V0ID0g cm91bmRkb3duKG9mZnNldCwgY2x1bXBfc2l6ZSk7CisJKmNsdW1wID0gYml0bWFwX2dldF92YWx1 ZShhZGRyLCBvZmZzZXQsIGNsdW1wX3NpemUpOworCXJldHVybiBvZmZzZXQ7Cit9CitFWFBPUlRf U1lNQk9MX0dQTChmaW5kX25leHRfY2x1bXApOworCiBzdGF0aWMgY29uc3Qgc3RydWN0IHNlcV9v cGVyYXRpb25zIGdwaW9saWJfc29wcyA9IHsKIAkuc3RhcnQgPSBncGlvbGliX3NlcV9zdGFydCwK IAkubmV4dCA9IGdwaW9saWJfc2VxX25leHQsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwaW8vZ3Bp b2xpYi5oIGIvZHJpdmVycy9ncGlvL2dwaW9saWIuaAppbmRleCAzMGJjM2Y4MGY4M2UuLjQxYzZi MjRkOTg0MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncGlvL2dwaW9saWIuaAorKysgYi9kcml2ZXJz L2dwaW8vZ3Bpb2xpYi5oCkBAIC0xNDEsNiArMTQxLDM0IEBAIGludCBncGlvX3NldF9kZWJvdW5j ZV90aW1lb3V0KHN0cnVjdCBncGlvX2Rlc2MgKmRlc2MsIHVuc2lnbmVkIGludCBkZWJvdW5jZSk7 CiBpbnQgZ3Bpb2RfaG9nKHN0cnVjdCBncGlvX2Rlc2MgKmRlc2MsIGNvbnN0IGNoYXIgKm5hbWUs CiAJCXVuc2lnbmVkIGxvbmcgbGZsYWdzLCBlbnVtIGdwaW9kX2ZsYWdzIGRmbGFncyk7CiAKK3Vu c2lnbmVkIGxvbmcgYml0bWFwX2dldF92YWx1ZShjb25zdCB1bnNpZ25lZCBsb25nICptYXAsCisJ CQkJdW5zaWduZWQgbG9uZyBzdGFydCwKKwkJCQl1bnNpZ25lZCBsb25nIG5iaXRzKTsKKwordm9p ZCBiaXRtYXBfc2V0X3ZhbHVlKHVuc2lnbmVkIGxvbmcgKm1hcCwgdW5zaWduZWQgbG9uZyBuYml0 cywKKwkJCXVuc2lnbmVkIGxvbmcgdmFsdWUsIHVuc2lnbmVkIGxvbmcgdmFsdWVfd2lkdGgsCisJ CQl1bnNpZ25lZCBsb25nIHN0YXJ0KTsKKwordW5zaWduZWQgbG9uZyBmaW5kX25leHRfY2x1bXAo dW5zaWduZWQgbG9uZyAqY2x1bXAsIGNvbnN0IHVuc2lnbmVkIGxvbmcgKmFkZHIsCisJCQkJdW5z aWduZWQgbG9uZyBzaXplLCB1bnNpZ25lZCBsb25nIG9mZnNldCwKKwkJCQl1bnNpZ25lZCBsb25n IGNsdW1wX3NpemUpOworCisjZGVmaW5lIGZpbmRfZmlyc3RfY2x1bXAoY2x1bXAsIGJpdHMsIHNp emUsIGNsdW1wX3NpemUpIFwKKwlmaW5kX25leHRfY2x1bXAoKGNsdW1wKSwgKGJpdHMpLCAoc2l6 ZSksIDAsIChjbHVtcF9zaXplKSkKKworLyoqCisgKiBmb3JfZWFjaF9zZXRfY2x1bXAgLSBpdGVy YXRlIG92ZXIgYml0bWFwIGZvciBlYWNoIGNsdW1wIHdpdGggc2V0IGJpdHMKKyAqIEBzdGFydDog Yml0IG9mZnNldCB0byBzdGFydCBzZWFyY2ggYW5kIHRvIHN0b3JlIHRoZSBjdXJyZW50IGl0ZXJh dGlvbiBvZmZzZXQKKyAqIEBjbHVtcDogbG9jYXRpb24gdG8gc3RvcmUgY29weSBvZiBjdXJyZW50 IDgtYml0IGNsdW1wCisgKiBAYml0czogYml0bWFwIGFkZHJlc3MgdG8gYmFzZSB0aGUgc2VhcmNo IG9uCisgKiBAc2l6ZTogYml0bWFwIHNpemUgaW4gbnVtYmVyIG9mIGJpdHMKKyAqIEBjbHVtcF9z aXplOiBjbHVtcCBzaXplIGluIGJpdHMKKyAqLworI2RlZmluZSBmb3JfZWFjaF9zZXRfY2x1bXAo c3RhcnQsIGNsdW1wLCBiaXRzLCBzaXplLCBjbHVtcF9zaXplKSBcCisJZm9yICgoc3RhcnQpID0g ZmluZF9maXJzdF9jbHVtcCgmKGNsdW1wKSwgKGJpdHMpLCAoc2l6ZSksIChjbHVtcF9zaXplKSk7 IFwKKwkgICAgIChzdGFydCkgPCAoc2l6ZSk7IFwKKwkgICAgIChzdGFydCkgPSBmaW5kX25leHRf Y2x1bXAoJihjbHVtcCksIChiaXRzKSwgKHNpemUpLCAoc3RhcnQpICsgKGNsdW1wX3NpemUpLCAo Y2x1bXBfc2l6ZSkpKQorCiAvKgogICogUmV0dXJuIHRoZSBHUElPIG51bWJlciBvZiB0aGUgcGFz c2VkIGRlc2NyaXB0b3IgcmVsYXRpdmUgdG8gaXRzIGNoaXAKICAqLwotLSAKMi4yOS4wCgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtl cm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0 dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5l bAo=