From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f50.google.com (mail-pj1-f50.google.com [209.85.216.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5FA7253E19 for ; Tue, 23 Jan 2024 23:29:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.50 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706052586; cv=none; b=KzPrDHDiyQRIXjSs0Lmlz2w4oB2f1qveuedl9xaQu5uZeBVINiPFwpea5fvvKOLZaA7EE+dPtav+COBMmFL2Gutd8gzLI6osQg8TZBKuKKrLIlo4bpZDgHgd7EGQ0PUJFzzrrIo/woJlSSiyeqf+1opb35YlnxsNWDDZpdbjKdc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706052586; c=relaxed/simple; bh=nV0JiYpVt2Qdrm6m9BfivzkMbxM8shwReWuIgOB6vhE=; h=From:To:Cc:References:In-Reply-To:Subject:Date:Message-ID: MIME-Version:Content-Type; b=lSkZufChrbt3LAfqvzYSmvquBs3Ks0CZu4dWLwA+hppjhPk/FonEqw5bn8NQKvFovyJI2mlACD3jHWNvEPPpaNi8BQBcKgPZa2z9S3xedla/klcSzN/P2fL2dUhtoUOkaflo3EFLYh4bMXRwSDGtssgEr0IL22g5e4DlVnW2n6E= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=googlemail.com; spf=pass smtp.mailfrom=googlemail.com; dkim=pass (2048-bit key) header.d=googlemail.com header.i=@googlemail.com header.b=Ai2X0rCl; arc=none smtp.client-ip=209.85.216.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=googlemail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=googlemail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=googlemail.com header.i=@googlemail.com header.b="Ai2X0rCl" Received: by mail-pj1-f50.google.com with SMTP id 98e67ed59e1d1-29026523507so3718886a91.0 for ; Tue, 23 Jan 2024 15:29:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20230601; t=1706052585; x=1706657385; darn=vger.kernel.org; h=content-language:thread-index:content-transfer-encoding :mime-version:message-id:date:subject:in-reply-to:references:cc:to :from:from:to:cc:subject:date:message-id:reply-to; bh=Uxp7csI7GVkKVo3iyFT9bVz+XlkrKNjW2GUNPvl/QNw=; b=Ai2X0rClPHv66BL69uBxID9JFqfwcKZrToKrdZbqa82PbtVQighVOlRo4bOkEFzVmS KdCBxNs8I/YAYX5q5p9K7QO9KTUfRegfroHRn29Q9pQ4UYbbnsIHiigQdfQ+Iz8IoLE3 Sf18t/Q5z8/x+n7Cbqe5CX8PrmfmNHJgngJTakEgj1Nj7pIxRKj8LmK596oqmF8zu3l/ C5nVNvxtpqXfLDtooiwn9An5fDvDxRFEuyLThJmEW1WXGbJ31aAf7CJMZSYkzmNK4vHm zv+IbBYZLOyhwdw/kE8/Nkk/eLzdOOPj/wFDzl8fAu49YEaOAHFwZ0g8odxUrIH1JgSc +d+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706052585; x=1706657385; h=content-language:thread-index:content-transfer-encoding :mime-version:message-id:date:subject:in-reply-to:references:cc:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Uxp7csI7GVkKVo3iyFT9bVz+XlkrKNjW2GUNPvl/QNw=; b=M1vwcUnhW0UnMP91mpa/T2w4c8Hqo5Qeq7msHMbPYouHoImNEmEwAIxbVa4PapwuyI wPtZYt3D0nvePSi+SeYzy8HAcpK3J+y9DPGjKoA32WBuNWrvu82EQoFAg7ctmn4/x92r k5vmlfsb2S8/bDfQ8KtQVR6MZDA/Yfjut6fQHBhnfnJuy5FZBp+pj9+3t43+RfGjtgFl vG5kIJCnPpX0ZpstoGzXO4DQ1mSkfXdOdwgqMWeyuIGKNC64xdDsr04yjXJOamAWgjwA xAWbIDc91I96XsVniwBPjz0+HFRxJiIo/CLqvIL04rQs6LbuESugW/Lw9fuwYXOSQk3n HKPg== X-Gm-Message-State: AOJu0YwaxYBNK5v2cuNzXQiCzI600fJ6QfNxtJ0t0o9WMBCOXSzbEvOM Nf3liAel0ohoct4aysfLS66gUA3YBuAdtZm3A9jL1Gp3UWd8jng6 X-Google-Smtp-Source: AGHT+IEGvt/yImDo8Ob1k0Z4lY994xLw3f+pk6Sv7zqAkcyFvFUUx3Hd7wrrrOUxBx08cxEdejrjvQ== X-Received: by 2002:a17:90a:f614:b0:290:6c4:ad45 with SMTP id bw20-20020a17090af61400b0029006c4ad45mr3688918pjb.39.1706052584666; Tue, 23 Jan 2024 15:29:44 -0800 (PST) Received: from ArmidaleLaptop (c-67-170-74-237.hsd1.wa.comcast.net. [67.170.74.237]) by smtp.gmail.com with ESMTPSA id nc15-20020a17090b37cf00b0028feef1f7adsm12227727pjb.50.2024.01.23.15.29.43 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 23 Jan 2024 15:29:44 -0800 (PST) From: dthaler1968@googlemail.com X-Google-Original-From: To: "'David Vernet'" , "'Jose E. Marchesi'" Cc: "'Alexei Starovoitov'" , "'Christoph Hellwig'" , , "'bpf'" , "'Jakub Kicinski'" , References: <20231214174437.GA2853@maniforge> <09dc01da32a6$99c97e50$cd5c7af0$@gmail.com> <20240105220711.GA1001999@maniforge> <874jfm68ok.fsf@oracle.com> <20240123213948.GA221862@maniforge> In-Reply-To: <20240123213948.GA221862@maniforge> Subject: RE: [Bpf] BPF ISA conformance groups Date: Tue, 23 Jan 2024 15:29:41 -0800 Message-ID: <1f8301da4e54$0b0ad690$212083b0$@gmail.com> Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Mailer: Microsoft Outlook 16.0 Thread-Index: AQClir6lI1sScEFfIiSZU+wYPRcfRwJboihlAe8iqfAB/zVPlgJHtDdIAuBp+8cCBQmzlAH9CezDAX+HGP0B/YYFwQJ+11wssqYPW3A= Content-Language: en-us > -----Original Message----- > From: David Vernet > Sent: Tuesday, January 23, 2024 1:40 PM > To: Jose E. Marchesi > Cc: Alexei Starovoitov ; Christoph = Hellwig > ; Dave Thaler ; > bpf@ietf.org; bpf ; Jakub Kicinski = ; > david.faust@oracle.com > Subject: Re: [Bpf] BPF ISA conformance groups >=20 > On Tue, Jan 09, 2024 at 12:35:39PM +0100, Jose E. Marchesi wrote: > > > > > On Mon, Jan 8, 2024 at 8:00=E2=80=AFAM Christoph Hellwig = > wrote: > > >> > > >> On Fri, Jan 05, 2024 at 04:07:11PM -0600, David Vernet wrote: > > >> > > > >> > So how do we want to move forward here? It sounds like we're > > >> > leaning toward's Alexei's proposal of having: > > >> > > > >> > - Base Integer Instruction Set, 32-bit > > >> > - Base Integer Instruction Set, 64-bit > > >> > - Integer Multiplication and Division > > >> > - Atomic Instructions > > >> > > >> As in the 64-bit integer set would be an add-on to the first one > > >> which is the core set? In that case that's fine with me, but the > > >> above wording is a bit suboptimal. > > > > > > yes. > > > Here is how I was thinking about the grouping: > > > 32-bit set: all 32-bit instructions those with BPF_ALU and = BPF_JMP32 > > > and load/store. > > > > > > 64-bit set: above plus BPF_ALU64 and BPF_JMP. > > > > > > The idea is to allow for clean 32-bit HW offloads. > > > We can introduce a compiler flag that will only use such > > > instructions and will error when 64-bit math is needed. > > > Details need to be thought through, of course. > > > Right now I'm not sure whether we need to reduce sizeof(void*) to = 4 > > > in such a case or normal 8 will still work, but from ISA = perspective > > > everything is ready. 32-bit subregisters fit well. > > > The compiler work plus additional verifier smartness is needed, = but > > > the end result should be very nice. > > > Offload of bpf programs into 32-bit embedded devices will be = possible. > > > > This is very interesting. > this is necessarily something we need to figure out now. Hopefully = this is all > stuff we can iron out once we start to really sink our teeth into the = ABI doc. "Integer Multiplication and Division" in this thread doesn't seem to = separate between 32-bit vs 64-bit. Is the proposal that multiplication/division = is ok to require 64-bit operations? I had expected one rationale for the = 32bit multiplication/division instructions is to accommodate 32-bit-only implementations. So should we have separate groups for 32-bit vs 64-bit for the multiplication/division instructions? Similar question goes for the atomic instructions, i.e., should we have separate conformance groups for 32-bit vs 64-bit atomics?=20 Dave From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail.ietf.org (mail.ietf.org [50.223.129.194]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 13A3753E19 for ; Tue, 23 Jan 2024 23:29:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=50.223.129.194 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706052594; cv=none; b=T+WBZnfH1OTD/PNzfjSGts/kUo7uXpw3fUuRylO9tIRtY1W0N/PO0xlexyYoyy2CsspUs9aGhM70RIaG2Msdf9FoFmOBMU40USv2dSlp9B2zlx7Q0vyVXXGJLiu+dvaRl+LAHJLA9OdaXCFkBXFFyogAfegZwNkO/7sgSJvuY0w= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706052594; c=relaxed/simple; bh=SAgKw5Hv5mC6KhBBBcMjAETdaKc8ogZv9YS6G9H1/lU=; h=To:Cc:References:In-Reply-To:Date:Message-ID:MIME-Version:Subject: Content-Type:From; b=ilKdYswGuEiur6YXWlGikEaLQWNxdMhOeIvgT6FbrwEEz4PS5W1Dl3eux8E2ofWmmlZEvWM7YP2hg0kCW8onVL0FaUP82HNGI+ZawMazQZOlKSCm6Ho75pwd77guT9yDxaMJnG+2klVZjzSzQt3M+vx5Y0cKf2ImWdjvHuZLFgI= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=dmarc.ietf.org; spf=pass smtp.mailfrom=ietf.org; dkim=pass (1024-bit key) header.d=ietf.org header.i=@ietf.org header.b=O+SOguk1; dkim=fail (1024-bit key) header.d=ietf.org header.i=@ietf.org header.b=mqsR0YNH reason="signature verification failed"; dkim=fail (2048-bit key) header.d=googlemail.com header.i=@googlemail.com header.b=BR2BFK5s reason="signature verification failed"; arc=none smtp.client-ip=50.223.129.194 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=dmarc.ietf.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ietf.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ietf.org header.i=@ietf.org header.b="O+SOguk1"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ietf.org header.i=@ietf.org header.b="mqsR0YNH"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=googlemail.com header.i=@googlemail.com header.b="BR2BFK5s" Received: from ietfa.amsl.com (localhost [IPv6:::1]) by ietfa.amsl.com (Postfix) with ESMTP id 698EAC151082 for ; Tue, 23 Jan 2024 15:29:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1706052592; bh=SAgKw5Hv5mC6KhBBBcMjAETdaKc8ogZv9YS6G9H1/lU=; h=To:Cc:References:In-Reply-To:Date:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=O+SOguk15WjCk7PuOsB8K1FKZpSvlnfh0u6L87Rs4zX9xpmZ4Bd6wl46WYmJbOzcS +3A/z0ikIWY5CuMNJzIk9+eMgeFhlY+SrH8iVxvZOmqGRxiKawxmAUjYABfaYYWwPq qf7E2Xm0L2yRSrz2i3ZJc95nhjlzz0FnuFnyqvME= Received: from ietfa.amsl.com (localhost [IPv6:::1]) by ietfa.amsl.com (Postfix) with ESMTP id 46670C14CF09; Tue, 23 Jan 2024 15:29:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1706052592; bh=SAgKw5Hv5mC6KhBBBcMjAETdaKc8ogZv9YS6G9H1/lU=; h=From:To:Cc:References:In-Reply-To:Date:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe; b=mqsR0YNH++DZWBJJjNaUQzjx7Cpun+oKLK8anP49yezf19NIllYWdLU9E1b3zaGWQ 1fBL5VnSmg2rMJ5q7ZAN05Ot/XBJKYVQ90MiUurTKM4P+Gh1dZbXM5FlhI7mVAKBao e6I9gJkzFOgknpr377PkRXTlb0zLqW0o0GnCLRl4= Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A425DC14CF09 for ; Tue, 23 Jan 2024 15:29:50 -0800 (PST) X-Virus-Scanned: amavisd-new at amsl.com X-Spam-Flag: NO X-Spam-Score: -6.855 X-Spam-Level: Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=googlemail.com Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id dh7Sa7I8y6kn for ; Tue, 23 Jan 2024 15:29:46 -0800 (PST) Received: from mail-pj1-x102e.google.com (mail-pj1-x102e.google.com [IPv6:2607:f8b0:4864:20::102e]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 27FE5C14F6E9 for ; Tue, 23 Jan 2024 15:29:46 -0800 (PST) Received: by mail-pj1-x102e.google.com with SMTP id 98e67ed59e1d1-290483f8c7bso3679273a91.3 for ; Tue, 23 Jan 2024 15:29:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20230601; t=1706052585; x=1706657385; darn=ietf.org; h=content-language:thread-index:content-transfer-encoding :mime-version:message-id:date:subject:in-reply-to:references:cc:to :from:from:to:cc:subject:date:message-id:reply-to; bh=Uxp7csI7GVkKVo3iyFT9bVz+XlkrKNjW2GUNPvl/QNw=; b=BR2BFK5s+p9KLJkifNIbOTTLzKpvB/wux5/EgCr23ppfqokdl9mFEiT/t3s8BhFMxo thC53sLVJAe7FcIMrxOd609a8G97dzitP/A34u9fmBWVh5TNrV30trS5YthgOkF/aTfC uGoR/93NTOAV/JVWP3nTPjfYLyJlYEpYbpJFhBknBSMsd630/q4W9ncmtuyUaAz0nJEH MtxMLergayshR4ecb+JSoAXiZEeOx6NgZvqiOjnKrubRZ94gxM8CJT/YGuuk3GrqVqgW 5cHfuog3vlJS1U9pp5MUEKTZP9BHBJT9RFDs6yk+wq4OBeGrBIe/nACwzWC0uio+MWFg drJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706052585; x=1706657385; h=content-language:thread-index:content-transfer-encoding :mime-version:message-id:date:subject:in-reply-to:references:cc:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Uxp7csI7GVkKVo3iyFT9bVz+XlkrKNjW2GUNPvl/QNw=; b=STBTDcrVM22ocGI8rz1oLFXDbbO4rxnv5qdObtg6sh4SLeai/o6MYLRBGdeNFjbUyJ PX83Eq8BQNulIpTedpeiGDouQiMoLr6xPPTd51g0yctGctF/WWXntvbMKQpZ4gYYOlUd j0ttX3R4oN+BOG8a4y66fyauHd/IaiH1TrCzajZfxf5OBC5l1BIcYf6+zB32P6FmInP6 r4UKJzaEI6dNo5O9zFQDcNWzkhgrvKdeFFlgECZRDgEO8gKf7KjOUwus0skVr+p/2E+5 dyKRZXba21i9Wizp10E0Pysa5AkmrUIvE5XgKIyrL2U8pAFU9VaBe+j7gEGiBXsJPJG/ g6aQ== X-Gm-Message-State: AOJu0YyGtfL1Iaj8ihbbKQyyTnwoyzUw9f02B1qB/h0dT1pd3IesrU71 9Mmxv0AHeTqK91qZigLbXjn+EGII7YOIHnL4fY+jljLqP9v41kay X-Google-Smtp-Source: AGHT+IEGvt/yImDo8Ob1k0Z4lY994xLw3f+pk6Sv7zqAkcyFvFUUx3Hd7wrrrOUxBx08cxEdejrjvQ== X-Received: by 2002:a17:90a:f614:b0:290:6c4:ad45 with SMTP id bw20-20020a17090af61400b0029006c4ad45mr3688918pjb.39.1706052584666; Tue, 23 Jan 2024 15:29:44 -0800 (PST) Received: from ArmidaleLaptop (c-67-170-74-237.hsd1.wa.comcast.net. [67.170.74.237]) by smtp.gmail.com with ESMTPSA id nc15-20020a17090b37cf00b0028feef1f7adsm12227727pjb.50.2024.01.23.15.29.43 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 23 Jan 2024 15:29:44 -0800 (PST) X-Google-Original-From: To: "'David Vernet'" , "'Jose E. Marchesi'" Cc: "'Alexei Starovoitov'" , "'Christoph Hellwig'" , , "'bpf'" , "'Jakub Kicinski'" , References: <20231214174437.GA2853@maniforge> <09dc01da32a6$99c97e50$cd5c7af0$@gmail.com> <20240105220711.GA1001999@maniforge> <874jfm68ok.fsf@oracle.com> <20240123213948.GA221862@maniforge> In-Reply-To: <20240123213948.GA221862@maniforge> Date: Tue, 23 Jan 2024 15:29:41 -0800 Message-ID: <1f8301da4e54$0b0ad690$212083b0$@gmail.com> Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Mailer: Microsoft Outlook 16.0 Thread-Index: AQClir6lI1sScEFfIiSZU+wYPRcfRwJboihlAe8iqfAB/zVPlgJHtDdIAuBp+8cCBQmzlAH9CezDAX+HGP0B/YYFwQJ+11wssqYPW3A= Content-Language: en-us Archived-At: Subject: Re: [Bpf] BPF ISA conformance groups X-BeenThere: bpf@ietf.org X-Mailman-Version: 2.1.39 Precedence: list List-Archive: List-Post: List-Help: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: bpf-bounces@ietf.org Sender: "Bpf" X-Original-From: dthaler1968@googlemail.com From: dthaler1968=40googlemail.com@dmarc.ietf.org Message-ID: <20240123232941.rw2hxRqPx5OJlt--OF0Xm4W52pxKNe-AFR3xryT_mg4@z> PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IERhdmlkIFZlcm5ldCA8dm9pZEBt YW5pZmF1bHQuY29tPgo+IFNlbnQ6IFR1ZXNkYXksIEphbnVhcnkgMjMsIDIwMjQgMTo0MCBQTQo+ IFRvOiBKb3NlIEUuIE1hcmNoZXNpIDxqb3NlLm1hcmNoZXNpQG9yYWNsZS5jb20+Cj4gQ2M6IEFs ZXhlaSBTdGFyb3ZvaXRvdiA8YWxleGVpLnN0YXJvdm9pdG92QGdtYWlsLmNvbT47IENocmlzdG9w aCBIZWxsd2lnCj4gPGhjaEBpbmZyYWRlYWQub3JnPjsgRGF2ZSBUaGFsZXIgPGR0aGFsZXIxOTY4 QGdvb2dsZW1haWwuY29tPjsKPiBicGZAaWV0Zi5vcmc7IGJwZiA8YnBmQHZnZXIua2VybmVsLm9y Zz47IEpha3ViIEtpY2luc2tpIDxrdWJhQGtlcm5lbC5vcmc+Owo+IGRhdmlkLmZhdXN0QG9yYWNs ZS5jb20KPiBTdWJqZWN0OiBSZTogW0JwZl0gQlBGIElTQSBjb25mb3JtYW5jZSBncm91cHMKPiAK PiBPbiBUdWUsIEphbiAwOSwgMjAyNCBhdCAxMjozNTozOVBNICswMTAwLCBKb3NlIEUuIE1hcmNo ZXNpIHdyb3RlOgo+ID4KPiA+ID4gT24gTW9uLCBKYW4gOCwgMjAyNCBhdCA4OjAw4oCvQU0gQ2hy aXN0b3BoIEhlbGx3aWcgPGhjaEBpbmZyYWRlYWQub3JnPgo+IHdyb3RlOgo+ID4gPj4KPiA+ID4+ IE9uIEZyaSwgSmFuIDA1LCAyMDI0IGF0IDA0OjA3OjExUE0gLTA2MDAsIERhdmlkIFZlcm5ldCB3 cm90ZToKPiA+ID4+ID4KPiA+ID4+ID4gU28gaG93IGRvIHdlIHdhbnQgdG8gbW92ZSBmb3J3YXJk IGhlcmU/IEl0IHNvdW5kcyBsaWtlIHdlJ3JlCj4gPiA+PiA+IGxlYW5pbmcgdG93YXJkJ3MgQWxl eGVpJ3MgcHJvcG9zYWwgb2YgaGF2aW5nOgo+ID4gPj4gPgo+ID4gPj4gPiAtIEJhc2UgSW50ZWdl ciBJbnN0cnVjdGlvbiBTZXQsIDMyLWJpdAo+ID4gPj4gPiAtIEJhc2UgSW50ZWdlciBJbnN0cnVj dGlvbiBTZXQsIDY0LWJpdAo+ID4gPj4gPiAtIEludGVnZXIgTXVsdGlwbGljYXRpb24gYW5kIERp dmlzaW9uCj4gPiA+PiA+IC0gQXRvbWljIEluc3RydWN0aW9ucwo+ID4gPj4KPiA+ID4+IEFzIGlu IHRoZSA2NC1iaXQgaW50ZWdlciBzZXQgd291bGQgYmUgYW4gYWRkLW9uIHRvIHRoZSBmaXJzdCBv bmUKPiA+ID4+IHdoaWNoIGlzIHRoZSBjb3JlIHNldD8gIEluIHRoYXQgY2FzZSB0aGF0J3MgZmlu ZSB3aXRoIG1lLCBidXQgdGhlCj4gPiA+PiBhYm92ZSB3b3JkaW5nIGlzIGEgYml0IHN1Ym9wdGlt YWwuCj4gPiA+Cj4gPiA+IHllcy4KPiA+ID4gSGVyZSBpcyBob3cgSSB3YXMgdGhpbmtpbmcgYWJv dXQgdGhlIGdyb3VwaW5nOgo+ID4gPiAzMi1iaXQgc2V0OiBhbGwgMzItYml0IGluc3RydWN0aW9u cyB0aG9zZSB3aXRoIEJQRl9BTFUgYW5kIEJQRl9KTVAzMgo+ID4gPiBhbmQgbG9hZC9zdG9yZS4K PiA+ID4KPiA+ID4gNjQtYml0IHNldDogYWJvdmUgcGx1cyBCUEZfQUxVNjQgYW5kIEJQRl9KTVAu Cj4gPiA+Cj4gPiA+IFRoZSBpZGVhIGlzIHRvIGFsbG93IGZvciBjbGVhbiAzMi1iaXQgSFcgb2Zm bG9hZHMuCj4gPiA+IFdlIGNhbiBpbnRyb2R1Y2UgYSBjb21waWxlciBmbGFnIHRoYXQgd2lsbCBv bmx5IHVzZSBzdWNoCj4gPiA+IGluc3RydWN0aW9ucyBhbmQgd2lsbCBlcnJvciB3aGVuIDY0LWJp dCBtYXRoIGlzIG5lZWRlZC4KPiA+ID4gRGV0YWlscyBuZWVkIHRvIGJlIHRob3VnaHQgdGhyb3Vn aCwgb2YgY291cnNlLgo+ID4gPiBSaWdodCBub3cgSSdtIG5vdCBzdXJlIHdoZXRoZXIgd2UgbmVl ZCB0byByZWR1Y2Ugc2l6ZW9mKHZvaWQqKSB0byA0Cj4gPiA+IGluIHN1Y2ggYSBjYXNlIG9yIG5v cm1hbCA4IHdpbGwgc3RpbGwgd29yaywgYnV0IGZyb20gSVNBIHBlcnNwZWN0aXZlCj4gPiA+IGV2 ZXJ5dGhpbmcgaXMgcmVhZHkuIDMyLWJpdCBzdWJyZWdpc3RlcnMgZml0IHdlbGwuCj4gPiA+IFRo ZSBjb21waWxlciB3b3JrIHBsdXMgYWRkaXRpb25hbCB2ZXJpZmllciBzbWFydG5lc3MgaXMgbmVl ZGVkLCBidXQKPiA+ID4gdGhlIGVuZCByZXN1bHQgc2hvdWxkIGJlIHZlcnkgbmljZS4KPiA+ID4g T2ZmbG9hZCBvZiBicGYgcHJvZ3JhbXMgaW50byAzMi1iaXQgZW1iZWRkZWQgZGV2aWNlcyB3aWxs IGJlIHBvc3NpYmxlLgo+ID4KPiA+IFRoaXMgaXMgdmVyeSBpbnRlcmVzdGluZy4KPiB0aGlzIGlz IG5lY2Vzc2FyaWx5IHNvbWV0aGluZyB3ZSBuZWVkIHRvIGZpZ3VyZSBvdXQgbm93LiBIb3BlZnVs bHkgdGhpcyBpcyBhbGwKPiBzdHVmZiB3ZSBjYW4gaXJvbiBvdXQgb25jZSB3ZSBzdGFydCB0byBy ZWFsbHkgc2luayBvdXIgdGVldGggaW50byB0aGUgQUJJIGRvYy4KCiJJbnRlZ2VyIE11bHRpcGxp Y2F0aW9uIGFuZCBEaXZpc2lvbiIgaW4gdGhpcyB0aHJlYWQgZG9lc24ndCBzZWVtIHRvIHNlcGFy YXRlCmJldHdlZW4gMzItYml0IHZzIDY0LWJpdC4gIElzIHRoZSBwcm9wb3NhbCB0aGF0IG11bHRp cGxpY2F0aW9uL2RpdmlzaW9uIGlzIG9rCnRvIHJlcXVpcmUgNjQtYml0IG9wZXJhdGlvbnM/ICBJ IGhhZCBleHBlY3RlZCBvbmUgcmF0aW9uYWxlIGZvciB0aGUgMzJiaXQKbXVsdGlwbGljYXRpb24v ZGl2aXNpb24gaW5zdHJ1Y3Rpb25zIGlzIHRvIGFjY29tbW9kYXRlIDMyLWJpdC1vbmx5CmltcGxl bWVudGF0aW9ucy4gICBTbyBzaG91bGQgd2UgaGF2ZSBzZXBhcmF0ZSBncm91cHMgZm9yIDMyLWJp dCB2cwo2NC1iaXQgZm9yIHRoZSBtdWx0aXBsaWNhdGlvbi9kaXZpc2lvbiBpbnN0cnVjdGlvbnM/ CgpTaW1pbGFyIHF1ZXN0aW9uIGdvZXMgZm9yIHRoZSBhdG9taWMgaW5zdHJ1Y3Rpb25zLCBpLmUu LCBzaG91bGQgd2UKaGF2ZSBzZXBhcmF0ZSBjb25mb3JtYW5jZSBncm91cHMgZm9yIDMyLWJpdCB2 cyA2NC1iaXQgYXRvbWljcz8gCgpEYXZlCgotLSAKQnBmIG1haWxpbmcgbGlzdApCcGZAaWV0Zi5v cmcKaHR0cHM6Ly93d3cuaWV0Zi5vcmcvbWFpbG1hbi9saXN0aW5mby9icGYK