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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id DA447C02193 for ; Mon, 3 Feb 2025 23:04:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:In-Reply-To: Content-Transfer-Encoding:Content-Type:MIME-Version:References:Message-ID: Subject:Cc: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=mlSZOZfwKYccscHiA8mCvG85W1nYtxF2uCQLvRSMURg=; b=B3yjSN5PJ4F2WQFB0CCQgIX/2k EklqrAEBBkF2B7rJGYpULd3CTbvGCSMBSCIOehyJfr0MaK/QoRCuhJJBnW58gE8nSxXhSN0YdmX/0 Ipo1PkeSgswYDNCV1Wlei/blY7AXYCNTawZJ1PesQMg8yCHpy5HDvIz6HhgGfgoO2tyFnCmvXKxeg ftNkz2MP4iN3yvQiXv5vEtWc6nIdDOYTUQv0lt3sy5luJYBugvwwfg1pKeOcncLo4P0GxzjK0Xu5V aRjE0WTq2Pz4C9UiHFFA7mQkeR8jLcKOM2RmIsdRT0o2AinD3zvXXY65zr/Hb5v8GXRdZ553idjPy Jf8cgkpQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tf5UA-0000000Gqm0-2dEo; Mon, 03 Feb 2025 23:04:10 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tf5Sq-0000000GqY5-3CZJ for linux-arm-kernel@bombadil.infradead.org; Mon, 03 Feb 2025 23:02:48 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=In-Reply-To:Content-Transfer-Encoding: Content-Type:MIME-Version:References:Message-ID:Subject:Cc:To:From:Date: Sender:Reply-To:Content-ID:Content-Description; bh=mlSZOZfwKYccscHiA8mCvG85W1nYtxF2uCQLvRSMURg=; b=iemvdwSHYtSjsY7Ck2PG4Pcgwn HffuRKCvaqGyARkpvBHHHGVxBc/zgqjdWDFHyyzJ87JZkea7P9C4kEGbmmmTEQeBV9+7+Y85/UEwo /BHh6/7FG3Vx/VY8wXHI8iB5l1j6TZiNc1PK8iqwcJfsIkQhI9Y3Bux5xgl4B1viWAL9OWSddW2nC dpWHkFx/WcqWdHu0L1YeZCvQkK9EmY933QnaLqYa+/PcXEKDXkj8fRYEHd39TzFBeQBIbPhXQtNty 5CtpFHPQh9tixJn/knrlNmrjn5x6O2APH7smZRUpTKc0JlJgLbS0a7P8klIbCLeZbNY7IP6PLI8Ks X/12EnPQ==; Received: from mail-pj1-x1042.google.com ([2607:f8b0:4864:20::1042]) by desiato.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tf5Sl-0000000GDN2-1eD4 for linux-arm-kernel@lists.infradead.org; Mon, 03 Feb 2025 23:02:47 +0000 Received: by mail-pj1-x1042.google.com with SMTP id 98e67ed59e1d1-2ee397a82f6so8271758a91.2 for ; Mon, 03 Feb 2025 15:02:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1738623760; x=1739228560; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=mlSZOZfwKYccscHiA8mCvG85W1nYtxF2uCQLvRSMURg=; b=YLXB+RooMWdZFBMVEfMtgNZSfcZ3DevG1pMc2KID26jdeEWIzXkpiHFIvtsP/fjiXQ R+5Bxcr6qOascGrxYm5JUpX5x0EJa0rSdB8yvklgSHTcvTEGy+AvjqcA9iqaIWlM0LfI kyTjozpO3LfDkzJBQ90eZO/mThYRhmELju2OU/pLC+OuXhvmNY5zsErONY5hMPWV/gGK ygieu6J4HAkFIAa094cNGm3qb3taM59rlZZjKPi7n/R+9TywEvJ9qbFUepO7fqVvpMfx T1cvOUbedBmlHgfcooQyDzDXG98+aUmMxo05TtXgGHLcbMyQEmZVBwtb7F2IoOpLpVHB xG5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738623760; x=1739228560; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=mlSZOZfwKYccscHiA8mCvG85W1nYtxF2uCQLvRSMURg=; b=i87CRqMCFRYqOhKIj2D9xl3HlVldfmScdFLnRCsT6qeEGzXFrjyo4zC0Jz+sku12x3 XDfeRT6fcWSIddnztxDQ/gs5jzDUh0rI10FLlpevxXEaRovEIqAJVocd0gvbX4q4jFHE TamJ5DwMFa4jggYapApcjdPFfB/ILfa7PjAqllxaKWu1xGOG1dXNtn/5yuC9qBpAS7dI lQ4C0CKj9siOOJC5XHJ2QnItGKFuaafFcQEUrmHmkDtCYOmXat+e4I1ZzaviFus3aOyI sKUlObSIuCZbJUAHaX67r7TMaQcLyk6ix25GxMr3Vn5q4GYjFEBgl+LBtCEb6hVoQO8f e8lg== X-Forwarded-Encrypted: i=1; AJvYcCVyu+Ug9Zal/y4jPkokvSURJTjPABnqIPlXqtFxwJlDIwqRepevKfSMk2iHrTinANVtmr+iZQRnP0vl4wW0MHPh@lists.infradead.org X-Gm-Message-State: AOJu0Yw4kapUoKrfllem8bykqkPGQojCqIwLswhhXnEPBAsgxOy/QZfA PR9FqtLaYGQbTuIGKHy5xQ0nvWqe49PvS7F51WfRwOo5DnHCAZVORqWemyBtFMg= X-Gm-Gg: ASbGncuYBJdSCAyH0t7se4/tTwZi5Cv6hlxZnCj/2Kn4dCOxddQBeVvsLWGdm/MTJq0 tcRd7gAbEQVH8rVUd/a3RPKykeb+aHNRIvJ9uveP6932ls0FAoAM4EOfQOfhbH3AhBolVSaRXe2 4yHB2Z58vTlXR2nWCI5gbtpn2gkG9UGvofyjd/fNbIeszTDZzYWi9sIq5xZq+kxQNZIyJOk7Wh7 BizfzP4OBzh/UEifuFeLJ3vlVNjM2pAss5OqeebSs2gbWscZ7vBeCsRMMBETHcheVfayN9Vorfx S4QfxPsfL/o= X-Google-Smtp-Source: AGHT+IHVmCZ8M1HoH0RNab91JXVoT4R3jnAicYRidYc+9QjQ5Apn2RrVQw3Ur/bkgiLbrVxSa0JAIA== X-Received: by 2002:a17:90b:2742:b0:2ee:b4d4:69 with SMTP id 98e67ed59e1d1-2f83ac87677mr33404517a91.35.1738623760388; Mon, 03 Feb 2025 15:02:40 -0800 (PST) Received: from ghost ([2601:647:6700:64d0:4f63:f9d5:2cbd:2947]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2f848acacadsm9535576a91.41.2025.02.03.15.02.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Feb 2025 15:02:39 -0800 (PST) Date: Mon, 3 Feb 2025 15:02:36 -0800 From: Charlie Jenkins To: Ian Rogers Cc: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Adrian Hunter , Kan Liang , John Garry , Will Deacon , James Clark , Mike Leach , Leo Yan , Guo Ren , Paul Walmsley , Palmer Dabbelt , Albert Ou , Bibo Mao , Arnd Bergmann , Huacai Chen , Catalin Marinas , Jiri Slaby , =?iso-8859-1?Q?Bj=F6rn_T=F6pel?= , Howard Chu , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-csky@vger.kernel.org, linux-riscv@lists.infradead.org Subject: Re: [PATCH v1 0/7] perf: Support multiple system call tables in the build Message-ID: References: <20250201071455.718247-1-irogers@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250203_230243_775532_E40833CB X-CRM114-Status: GOOD ( 61.61 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Mon, Feb 03, 2025 at 12:54:59PM -0800, Ian Rogers wrote: > On Mon, Feb 3, 2025 at 12:06 PM Charlie Jenkins wrote: > > > > On Mon, Feb 03, 2025 at 11:39:01AM -0800, Ian Rogers wrote: > > > On Mon, Feb 3, 2025 at 11:15 AM Charlie Jenkins wrote: > > > > > > > > On Mon, Feb 03, 2025 at 11:10:49AM -0800, Ian Rogers wrote: > > > > > On Mon, Feb 3, 2025 at 11:02 AM Charlie Jenkins wrote: > > > > > > > > > > > > On Fri, Jan 31, 2025 at 11:14:48PM -0800, Ian Rogers wrote: > > > > > > > This work builds on the clean up of system call tables and removal of > > > > > > > libaudit by Charlie Jenkins . > > > > > > > > > > > > > > The system call table in perf trace is used to map system call numbers > > > > > > > to names and vice versa. Prior to these changes, a single table > > > > > > > matching the perf binary's build was present. The table would be > > > > > > > incorrect if tracing say a 32-bit binary from a 64-bit version of > > > > > > > perf, the names and numbers wouldn't match. > > > > > > > > > > > > > > Change the build so that a single system call file is built and the > > > > > > > potentially multiple tables are identifiable from the ELF machine type > > > > > > > of the process being examined. To determine the ELF machine type, the > > > > > > > executable's header is read from /proc/pid/exe with fallbacks to using > > > > > > > the perf's binary type when unknown. > > > > > > > > > > > > > > Remove some runtime types used by the system call tables and make > > > > > > > equivalents generated at build time. > > > > > > > > > > > > Our approaches are very different but I sent out a patch to do this a > > > > > > couple of weeks ago [1]. > > > > > > > > > > > > Did you look at that and decide you didn't like the approach? > > > > > > > > > > Missing link? > > > > > > > > Whoops here is the link: > > > > > > > > https://lore.kernel.org/all/20250114-perf_syscall_arch_runtime-v1-1-5b304e408e11@rivosinc.com/ > > > > > > I agree it is similar and progress, I think I prefer my changes :-) > > > > > > Anything in the arch directories is only going to be built given a > > > Makefile SRCARCH: > > > https://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools-next.git/tree/tools/perf/arch/Build?h=perf-tools-next#n2 > > > which means if we want the system call tables for say ARM on x86-64 we > > > need to reinvent the build - this isn't a problem today but perhaps > > > something to consider if we wanted a cross-architecture perf trace > > > record. I'd like to do away entirely with the arch directory for this > > > kind of reason. For example, if we run perf on a user space emulator > > > (say a testing set up) and it sees AMD data fabric PMUs, logic for > > > those PMUs currently lives in the arch directory for x86 and likely > > > wasn't even built into the perf tool. We should be able to identify > > > PMUs and act accordingly based on their names. In the case of the > > > overloaded "cpu" PMU we can identify it with the CPUID. The less code > > > in arch and the fewer architecture ifdefs, the better things should > > > work cross-architecture, in testing scenarios, etc. We also win by > > > getting code coverage without, for example, having to build and test > > > on csky or super H. > > > > > > Your changes are using the string for the architecture name. I think > > > that string is something we should get rid of: > > > https://lore.kernel.org/lkml/CAP-5=fX2BtFzhGLCSqO1QszqfX=HT8RrTdG_5Ttp5Gw4seSstA@mail.gmail.com/ > > > but there's no reason we couldn't clean that up on top of your change. > > > > Yes that part is not ideal. > > > > > > > > The build with lots of separate Build/Makefiles is something of a pain > > > to port/maintain in a bazel version of the build I maintain at Google > > > (happy to open source if anyone cares). In these changes you just run > > > a big script and get a big header file out the end, which largely > > > matches the other perf trace beauty things we build. > > > > Fair enough! I wanted to mimic how the kernel was building the syscall > > tables as closely as possible, it's convenient to have cohesion. > > I think it makes sense in the kernel, as the built binary doesn't have > cross-platform concerns. This is probably also the reason why the perf > tool has an arch directory. Let me know what you think is the right > direction for the perf tool syscall table code. I am hesitant about moving all of the arch-specific syscall generation flags into a single file. There is currently a really clean separation between the architectures and it's possible to generate all of the syscall tables for all of the architecutures based on the paths to the syscall table. What causes the arch directory to be a pain for Bazel? I guess I am mostly confused why it makes sense to change the kernel Makefiles in order to accomidate a rewrite of the build system in Bazel that isn't planned to be used upstream. - Charlie > > > What is the usecase for the bazel version? > > I'm sure there's more info in: > https://bazel.build/ > but the main thing is having hermetic and reproducible builds. The > main problem with open sourcing would be dealing with external > repositories, test set up, etc. Tbh, hermetic builds are a challenge > as things like lex and yacc will vary the C code they generate based > on the platform they run on. Bazel has plans to change the world so > maybe this could be more of a thing in the future. > > Fwiw, I did push changes into the perf tree so that man page building > was reproducible: > https://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools-next.git/commit/tools/perf/Documentation?h=perf-tools-next&id=d586ac10ce56b2381b8e1d8ed74660c1b2b8ab0d > The man pages used to reflect the date/time they were built, but now > reflect the date the of the commit of the file being built: > https://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools-next.git/tree/tools/perf/Documentation/Makefile?h=perf-tools-next#n255 > > Thanks, > Ian > > > - Charlie > > > > > > > > Thanks, > > > Ian > > > > > > > > > > > > > The patches generating a syscall(_32|_64)?.h landed. These changes > > > > > take your changes and make it so that we just run the script once > > > > > building a header file for all architectures. On x86 we then have the > > > > > tables be guarded by ifdefs on i386 and x86-64. Then rather than the > > > > > table just matching the host architecture the ELF machine is used for > > > > > the executable running. > > > > > > > > > > Thanks, > > > > > Ian > > > > > > > > > > > - Charlie > > > > > > > > > > > > > > > > > > > > Ian Rogers (7): > > > > > > > perf syscalltble: Remove syscall_table.h > > > > > > > perf trace: Reorganize syscalls > > > > > > > perf syscalltbl: Remove struct syscalltbl > > > > > > > perf thread: Add support for reading the e_machine type for a thread > > > > > > > perf trace beauty: Add syscalltbl.sh generating all system call tables > > > > > > > perf syscalltbl: Use lookup table containing multiple architectures > > > > > > > perf build: Remove Makefile.syscalls > > > > > > > > > > > > > > tools/perf/Makefile.perf | 10 +- > > > > > > > tools/perf/arch/alpha/entry/syscalls/Kbuild | 2 - > > > > > > > .../alpha/entry/syscalls/Makefile.syscalls | 5 - > > > > > > > tools/perf/arch/alpha/include/syscall_table.h | 2 - > > > > > > > tools/perf/arch/arc/entry/syscalls/Kbuild | 2 - > > > > > > > .../arch/arc/entry/syscalls/Makefile.syscalls | 3 - > > > > > > > tools/perf/arch/arc/include/syscall_table.h | 2 - > > > > > > > tools/perf/arch/arm/entry/syscalls/Kbuild | 4 - > > > > > > > .../arch/arm/entry/syscalls/Makefile.syscalls | 2 - > > > > > > > tools/perf/arch/arm/include/syscall_table.h | 2 - > > > > > > > tools/perf/arch/arm64/entry/syscalls/Kbuild | 3 - > > > > > > > .../arm64/entry/syscalls/Makefile.syscalls | 6 - > > > > > > > tools/perf/arch/arm64/include/syscall_table.h | 8 - > > > > > > > tools/perf/arch/csky/entry/syscalls/Kbuild | 2 - > > > > > > > .../csky/entry/syscalls/Makefile.syscalls | 3 - > > > > > > > tools/perf/arch/csky/include/syscall_table.h | 2 - > > > > > > > .../perf/arch/loongarch/entry/syscalls/Kbuild | 2 - > > > > > > > .../entry/syscalls/Makefile.syscalls | 3 - > > > > > > > .../arch/loongarch/include/syscall_table.h | 2 - > > > > > > > tools/perf/arch/mips/entry/syscalls/Kbuild | 2 - > > > > > > > .../mips/entry/syscalls/Makefile.syscalls | 5 - > > > > > > > tools/perf/arch/mips/include/syscall_table.h | 2 - > > > > > > > tools/perf/arch/parisc/entry/syscalls/Kbuild | 3 - > > > > > > > .../parisc/entry/syscalls/Makefile.syscalls | 6 - > > > > > > > .../perf/arch/parisc/include/syscall_table.h | 8 - > > > > > > > tools/perf/arch/powerpc/entry/syscalls/Kbuild | 3 - > > > > > > > .../powerpc/entry/syscalls/Makefile.syscalls | 6 - > > > > > > > .../perf/arch/powerpc/include/syscall_table.h | 8 - > > > > > > > tools/perf/arch/riscv/entry/syscalls/Kbuild | 2 - > > > > > > > .../riscv/entry/syscalls/Makefile.syscalls | 4 - > > > > > > > tools/perf/arch/riscv/include/syscall_table.h | 8 - > > > > > > > tools/perf/arch/s390/entry/syscalls/Kbuild | 2 - > > > > > > > .../s390/entry/syscalls/Makefile.syscalls | 5 - > > > > > > > tools/perf/arch/s390/include/syscall_table.h | 2 - > > > > > > > tools/perf/arch/sh/entry/syscalls/Kbuild | 2 - > > > > > > > .../arch/sh/entry/syscalls/Makefile.syscalls | 4 - > > > > > > > tools/perf/arch/sh/include/syscall_table.h | 2 - > > > > > > > tools/perf/arch/sparc/entry/syscalls/Kbuild | 3 - > > > > > > > .../sparc/entry/syscalls/Makefile.syscalls | 5 - > > > > > > > tools/perf/arch/sparc/include/syscall_table.h | 8 - > > > > > > > tools/perf/arch/x86/entry/syscalls/Kbuild | 3 - > > > > > > > .../arch/x86/entry/syscalls/Makefile.syscalls | 6 - > > > > > > > tools/perf/arch/x86/include/syscall_table.h | 8 - > > > > > > > tools/perf/arch/xtensa/entry/syscalls/Kbuild | 2 - > > > > > > > .../xtensa/entry/syscalls/Makefile.syscalls | 4 - > > > > > > > .../perf/arch/xtensa/include/syscall_table.h | 2 - > > > > > > > tools/perf/builtin-trace.c | 275 +++++++++++------- > > > > > > > tools/perf/scripts/Makefile.syscalls | 61 ---- > > > > > > > tools/perf/scripts/syscalltbl.sh | 86 ------ > > > > > > > tools/perf/trace/beauty/syscalltbl.sh | 274 +++++++++++++++++ > > > > > > > tools/perf/util/syscalltbl.c | 142 ++++----- > > > > > > > tools/perf/util/syscalltbl.h | 22 +- > > > > > > > tools/perf/util/thread.c | 50 ++++ > > > > > > > tools/perf/util/thread.h | 14 +- > > > > > > > 54 files changed, 598 insertions(+), 506 deletions(-) > > > > > > > delete mode 100644 tools/perf/arch/alpha/entry/syscalls/Kbuild > > > > > > > delete mode 100644 tools/perf/arch/alpha/entry/syscalls/Makefile.syscalls > > > > > > > delete mode 100644 tools/perf/arch/alpha/include/syscall_table.h > > > > > > > delete mode 100644 tools/perf/arch/arc/entry/syscalls/Kbuild > > > > > > > delete mode 100644 tools/perf/arch/arc/entry/syscalls/Makefile.syscalls > > > > > > > delete mode 100644 tools/perf/arch/arc/include/syscall_table.h > > > > > > > delete mode 100644 tools/perf/arch/arm/entry/syscalls/Kbuild > > > > > > > delete mode 100644 tools/perf/arch/arm/entry/syscalls/Makefile.syscalls > > > > > > > delete mode 100644 tools/perf/arch/arm/include/syscall_table.h > > > > > > > delete mode 100644 tools/perf/arch/arm64/entry/syscalls/Kbuild > > > > > > > delete mode 100644 tools/perf/arch/arm64/entry/syscalls/Makefile.syscalls > > > > > > > delete mode 100644 tools/perf/arch/arm64/include/syscall_table.h > > > > > > > delete mode 100644 tools/perf/arch/csky/entry/syscalls/Kbuild > > > > > > > delete mode 100644 tools/perf/arch/csky/entry/syscalls/Makefile.syscalls > > > > > > > delete mode 100644 tools/perf/arch/csky/include/syscall_table.h > > > > > > > delete mode 100644 tools/perf/arch/loongarch/entry/syscalls/Kbuild > > > > > > > delete mode 100644 tools/perf/arch/loongarch/entry/syscalls/Makefile.syscalls > > > > > > > delete mode 100644 tools/perf/arch/loongarch/include/syscall_table.h > > > > > > > delete mode 100644 tools/perf/arch/mips/entry/syscalls/Kbuild > > > > > > > delete mode 100644 tools/perf/arch/mips/entry/syscalls/Makefile.syscalls > > > > > > > delete mode 100644 tools/perf/arch/mips/include/syscall_table.h > > > > > > > delete mode 100644 tools/perf/arch/parisc/entry/syscalls/Kbuild > > > > > > > delete mode 100644 tools/perf/arch/parisc/entry/syscalls/Makefile.syscalls > > > > > > > delete mode 100644 tools/perf/arch/parisc/include/syscall_table.h > > > > > > > delete mode 100644 tools/perf/arch/powerpc/entry/syscalls/Kbuild > > > > > > > delete mode 100644 tools/perf/arch/powerpc/entry/syscalls/Makefile.syscalls > > > > > > > delete mode 100644 tools/perf/arch/powerpc/include/syscall_table.h > > > > > > > delete mode 100644 tools/perf/arch/riscv/entry/syscalls/Kbuild > > > > > > > delete mode 100644 tools/perf/arch/riscv/entry/syscalls/Makefile.syscalls > > > > > > > delete mode 100644 tools/perf/arch/riscv/include/syscall_table.h > > > > > > > delete mode 100644 tools/perf/arch/s390/entry/syscalls/Kbuild > > > > > > > delete mode 100644 tools/perf/arch/s390/entry/syscalls/Makefile.syscalls > > > > > > > delete mode 100644 tools/perf/arch/s390/include/syscall_table.h > > > > > > > delete mode 100644 tools/perf/arch/sh/entry/syscalls/Kbuild > > > > > > > delete mode 100644 tools/perf/arch/sh/entry/syscalls/Makefile.syscalls > > > > > > > delete mode 100644 tools/perf/arch/sh/include/syscall_table.h > > > > > > > delete mode 100644 tools/perf/arch/sparc/entry/syscalls/Kbuild > > > > > > > delete mode 100644 tools/perf/arch/sparc/entry/syscalls/Makefile.syscalls > > > > > > > delete mode 100644 tools/perf/arch/sparc/include/syscall_table.h > > > > > > > delete mode 100644 tools/perf/arch/x86/entry/syscalls/Kbuild > > > > > > > delete mode 100644 tools/perf/arch/x86/entry/syscalls/Makefile.syscalls > > > > > > > delete mode 100644 tools/perf/arch/x86/include/syscall_table.h > > > > > > > delete mode 100644 tools/perf/arch/xtensa/entry/syscalls/Kbuild > > > > > > > delete mode 100644 tools/perf/arch/xtensa/entry/syscalls/Makefile.syscalls > > > > > > > delete mode 100644 tools/perf/arch/xtensa/include/syscall_table.h > > > > > > > delete mode 100644 tools/perf/scripts/Makefile.syscalls > > > > > > > delete mode 100755 tools/perf/scripts/syscalltbl.sh > > > > > > > create mode 100755 tools/perf/trace/beauty/syscalltbl.sh > > > > > > > > > > > > > > -- > > > > > > > 2.48.1.362.g079036d154-goog > > > > > > > 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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A6A29C02192 for ; Mon, 3 Feb 2025 23:02:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc: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=Qe/g8QUu3gjSjzv1GggNFhI3IXjWu/gZsVsLO4Qo8dI=; b=mF+Hj7EBaERI/4 UlhdNc0fnQ+ZpCoHOppWfCLCPyb263I6Mbax7dxSvr5RqJ/s2PBimxdUsUh6G8jMxmsA6eQplMJbU p8sPnTCsi+S9iDkLxNEm4kqrUNS78QlWu+FR9TSnQisT06AA8XcaqGQRXT70SW2+d4fTuoMSTyTLw Sktg719QXRQTbmKN9n2spzHIOaB/os+qlLto9EtFxRSVdi6yPv6GHlsLNtE680I2sSO7u4GNWLjxb LE7kog1LIIdPEmn28sxKwAvm+1iapL+YNIKm9OvYWWJaKR1HCXZzpXNmUTeoIWD9tmLAoQpQrYzxD 8dNdI+Y8lWUUI7atHAkg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tf5Sq-0000000GqY8-3X6K; Mon, 03 Feb 2025 23:02:48 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tf5So-0000000GqXi-3xkR for linux-riscv@bombadil.infradead.org; Mon, 03 Feb 2025 23:02:47 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=In-Reply-To:Content-Transfer-Encoding: Content-Type:MIME-Version:References:Message-ID:Subject:Cc:To:From:Date: Sender:Reply-To:Content-ID:Content-Description; bh=mlSZOZfwKYccscHiA8mCvG85W1nYtxF2uCQLvRSMURg=; b=iemvdwSHYtSjsY7Ck2PG4Pcgwn HffuRKCvaqGyARkpvBHHHGVxBc/zgqjdWDFHyyzJ87JZkea7P9C4kEGbmmmTEQeBV9+7+Y85/UEwo /BHh6/7FG3Vx/VY8wXHI8iB5l1j6TZiNc1PK8iqwcJfsIkQhI9Y3Bux5xgl4B1viWAL9OWSddW2nC dpWHkFx/WcqWdHu0L1YeZCvQkK9EmY933QnaLqYa+/PcXEKDXkj8fRYEHd39TzFBeQBIbPhXQtNty 5CtpFHPQh9tixJn/knrlNmrjn5x6O2APH7smZRUpTKc0JlJgLbS0a7P8klIbCLeZbNY7IP6PLI8Ks X/12EnPQ==; Received: from mail-pj1-x1042.google.com ([2607:f8b0:4864:20::1042]) by desiato.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tf5Sl-0000000GDN4-1e9g for linux-riscv@lists.infradead.org; Mon, 03 Feb 2025 23:02:45 +0000 Received: by mail-pj1-x1042.google.com with SMTP id 98e67ed59e1d1-2f43d17b0e3so8302565a91.0 for ; Mon, 03 Feb 2025 15:02:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1738623760; x=1739228560; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=mlSZOZfwKYccscHiA8mCvG85W1nYtxF2uCQLvRSMURg=; b=YLXB+RooMWdZFBMVEfMtgNZSfcZ3DevG1pMc2KID26jdeEWIzXkpiHFIvtsP/fjiXQ R+5Bxcr6qOascGrxYm5JUpX5x0EJa0rSdB8yvklgSHTcvTEGy+AvjqcA9iqaIWlM0LfI kyTjozpO3LfDkzJBQ90eZO/mThYRhmELju2OU/pLC+OuXhvmNY5zsErONY5hMPWV/gGK ygieu6J4HAkFIAa094cNGm3qb3taM59rlZZjKPi7n/R+9TywEvJ9qbFUepO7fqVvpMfx T1cvOUbedBmlHgfcooQyDzDXG98+aUmMxo05TtXgGHLcbMyQEmZVBwtb7F2IoOpLpVHB xG5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738623760; x=1739228560; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=mlSZOZfwKYccscHiA8mCvG85W1nYtxF2uCQLvRSMURg=; b=lEumNcvVcoDXAXDj690EdboA9tILHD4Qsg8N1t6KwydDu0d1t2TpPVCqSFWjlAGqZJ 5amsL0lmD0el4h6rEvS2x56iweJ2157jfIi2D7XX5QHeu1wFr9yjmy3ujbNlIYQ7dttQ ZWK3ChLW+Pqn+A1SOxYnW26mnH1PCXwJ6NGx9FKveTQPkODEA4r+nI7RvEus5IbKtJKR 7UnnBCCDwCUMdW+PjVpVFrR5FFd8DO4Pi23kL3GE5+XIethiaQhCFknp8YO6b/INA1IA z2GU/6wXAIZX2hpG4micva2BPYHbtrUhYwA66oWSJYEvTVFYYEvTXxSYCWVbPe6p4vyn FS/g== X-Forwarded-Encrypted: i=1; AJvYcCUVeLLikgEb3+28HCfHGon1muPkUmitoJfM72tkob5cw/1HbT5voJYRaMOQ0VoyIk1WplDd6RgJFdRA1w==@lists.infradead.org X-Gm-Message-State: AOJu0YzeRhhHAqyDujenVsVj/nPCpkC7Zz2nHTsY6KkOQl2E1CiUykxL YFvf/NCtUggRypoGxiQL2LHXVSJgcb4bBNgwNfR2UGHPIuw8YFNAqSmUiBkZ+RI= X-Gm-Gg: ASbGncuyD7uslQrgQzipVRM1qE/vS41WvwTXAExEcGc6jddUwFB5PXU4s17zWOnz7Ll 2owtmRwr6VaQhD7lDLHMWsIJOGpvWSkhSkQUVv2bdWseRY1UIDFEUeUFLDTI30vzFNmPgm+DJKk xkJTKkQVv/eokEE8jm+k1aKV1Hl8Eh+i4ytrXc5CZi98W/HQEhuYiWszc2fuuXn7epA1wXl6ns8 R14msQe7xmRmNEnq2cLlAqmduGhiURDP15rBytq+sWYDb/XmVrejYDim0OFn0LB8tx0/uoWuBOZ VML1aSpUEDQ= X-Google-Smtp-Source: AGHT+IHVmCZ8M1HoH0RNab91JXVoT4R3jnAicYRidYc+9QjQ5Apn2RrVQw3Ur/bkgiLbrVxSa0JAIA== X-Received: by 2002:a17:90b:2742:b0:2ee:b4d4:69 with SMTP id 98e67ed59e1d1-2f83ac87677mr33404517a91.35.1738623760388; Mon, 03 Feb 2025 15:02:40 -0800 (PST) Received: from ghost ([2601:647:6700:64d0:4f63:f9d5:2cbd:2947]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2f848acacadsm9535576a91.41.2025.02.03.15.02.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Feb 2025 15:02:39 -0800 (PST) Date: Mon, 3 Feb 2025 15:02:36 -0800 From: Charlie Jenkins To: Ian Rogers Cc: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Adrian Hunter , Kan Liang , John Garry , Will Deacon , James Clark , Mike Leach , Leo Yan , Guo Ren , Paul Walmsley , Palmer Dabbelt , Albert Ou , Bibo Mao , Arnd Bergmann , Huacai Chen , Catalin Marinas , Jiri Slaby , =?iso-8859-1?Q?Bj=F6rn_T=F6pel?= , Howard Chu , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-csky@vger.kernel.org, linux-riscv@lists.infradead.org Subject: Re: [PATCH v1 0/7] perf: Support multiple system call tables in the build Message-ID: References: <20250201071455.718247-1-irogers@google.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250203_230243_754281_11E8C9C8 X-CRM114-Status: GOOD ( 60.08 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gTW9uLCBGZWIgMDMsIDIwMjUgYXQgMTI6NTQ6NTlQTSAtMDgwMCwgSWFuIFJvZ2VycyB3cm90 ZToKPiBPbiBNb24sIEZlYiAzLCAyMDI1IGF0IDEyOjA24oCvUE0gQ2hhcmxpZSBKZW5raW5zIDxj aGFybGllQHJpdm9zaW5jLmNvbT4gd3JvdGU6Cj4gPgo+ID4gT24gTW9uLCBGZWIgMDMsIDIwMjUg YXQgMTE6Mzk6MDFBTSAtMDgwMCwgSWFuIFJvZ2VycyB3cm90ZToKPiA+ID4gT24gTW9uLCBGZWIg MywgMjAyNSBhdCAxMToxNeKAr0FNIENoYXJsaWUgSmVua2lucyA8Y2hhcmxpZUByaXZvc2luYy5j b20+IHdyb3RlOgo+ID4gPiA+Cj4gPiA+ID4gT24gTW9uLCBGZWIgMDMsIDIwMjUgYXQgMTE6MTA6 NDlBTSAtMDgwMCwgSWFuIFJvZ2VycyB3cm90ZToKPiA+ID4gPiA+IE9uIE1vbiwgRmViIDMsIDIw MjUgYXQgMTE6MDLigK9BTSBDaGFybGllIEplbmtpbnMgPGNoYXJsaWVAcml2b3NpbmMuY29tPiB3 cm90ZToKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gT24gRnJpLCBKYW4gMzEsIDIwMjUgYXQgMTE6 MTQ6NDhQTSAtMDgwMCwgSWFuIFJvZ2VycyB3cm90ZToKPiA+ID4gPiA+ID4gPiBUaGlzIHdvcmsg YnVpbGRzIG9uIHRoZSBjbGVhbiB1cCBvZiBzeXN0ZW0gY2FsbCB0YWJsZXMgYW5kIHJlbW92YWwg b2YKPiA+ID4gPiA+ID4gPiBsaWJhdWRpdCBieSBDaGFybGllIEplbmtpbnMgPGNoYXJsaWVAcml2 b3NpbmMuY29tPi4KPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+IFRoZSBzeXN0ZW0gY2FsbCB0 YWJsZSBpbiBwZXJmIHRyYWNlIGlzIHVzZWQgdG8gbWFwIHN5c3RlbSBjYWxsIG51bWJlcnMKPiA+ ID4gPiA+ID4gPiB0byBuYW1lcyBhbmQgdmljZSB2ZXJzYS4gUHJpb3IgdG8gdGhlc2UgY2hhbmdl cywgYSBzaW5nbGUgdGFibGUKPiA+ID4gPiA+ID4gPiBtYXRjaGluZyB0aGUgcGVyZiBiaW5hcnkn cyBidWlsZCB3YXMgcHJlc2VudC4gVGhlIHRhYmxlIHdvdWxkIGJlCj4gPiA+ID4gPiA+ID4gaW5j b3JyZWN0IGlmIHRyYWNpbmcgc2F5IGEgMzItYml0IGJpbmFyeSBmcm9tIGEgNjQtYml0IHZlcnNp b24gb2YKPiA+ID4gPiA+ID4gPiBwZXJmLCB0aGUgbmFtZXMgYW5kIG51bWJlcnMgd291bGRuJ3Qg bWF0Y2guCj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiBDaGFuZ2UgdGhlIGJ1aWxkIHNvIHRo YXQgYSBzaW5nbGUgc3lzdGVtIGNhbGwgZmlsZSBpcyBidWlsdCBhbmQgdGhlCj4gPiA+ID4gPiA+ ID4gcG90ZW50aWFsbHkgbXVsdGlwbGUgdGFibGVzIGFyZSBpZGVudGlmaWFibGUgZnJvbSB0aGUg RUxGIG1hY2hpbmUgdHlwZQo+ID4gPiA+ID4gPiA+IG9mIHRoZSBwcm9jZXNzIGJlaW5nIGV4YW1p bmVkLiBUbyBkZXRlcm1pbmUgdGhlIEVMRiBtYWNoaW5lIHR5cGUsIHRoZQo+ID4gPiA+ID4gPiA+ IGV4ZWN1dGFibGUncyBoZWFkZXIgaXMgcmVhZCBmcm9tIC9wcm9jL3BpZC9leGUgd2l0aCBmYWxs YmFja3MgdG8gdXNpbmcKPiA+ID4gPiA+ID4gPiB0aGUgcGVyZidzIGJpbmFyeSB0eXBlIHdoZW4g dW5rbm93bi4KPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+IFJlbW92ZSBzb21lIHJ1bnRpbWUg dHlwZXMgdXNlZCBieSB0aGUgc3lzdGVtIGNhbGwgdGFibGVzIGFuZCBtYWtlCj4gPiA+ID4gPiA+ ID4gZXF1aXZhbGVudHMgZ2VuZXJhdGVkIGF0IGJ1aWxkIHRpbWUuCj4gPiA+ID4gPiA+Cj4gPiA+ ID4gPiA+IE91ciBhcHByb2FjaGVzIGFyZSB2ZXJ5IGRpZmZlcmVudCBidXQgSSBzZW50IG91dCBh IHBhdGNoIHRvIGRvIHRoaXMgYQo+ID4gPiA+ID4gPiBjb3VwbGUgb2Ygd2Vla3MgYWdvIFsxXS4K PiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gRGlkIHlvdSBsb29rIGF0IHRoYXQgYW5kIGRlY2lkZSB5 b3UgZGlkbid0IGxpa2UgdGhlIGFwcHJvYWNoPwo+ID4gPiA+ID4KPiA+ID4gPiA+IE1pc3Npbmcg bGluaz8KPiA+ID4gPgo+ID4gPiA+IFdob29wcyBoZXJlIGlzIHRoZSBsaW5rOgo+ID4gPiA+Cj4g PiA+ID4gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvYWxsLzIwMjUwMTE0LXBlcmZfc3lzY2FsbF9h cmNoX3J1bnRpbWUtdjEtMS01YjMwNGU0MDhlMTFAcml2b3NpbmMuY29tLwo+ID4gPgo+ID4gPiBJ IGFncmVlIGl0IGlzIHNpbWlsYXIgYW5kIHByb2dyZXNzLCBJIHRoaW5rIEkgcHJlZmVyIG15IGNo YW5nZXMgOi0pCj4gPiA+Cj4gPiA+IEFueXRoaW5nIGluIHRoZSBhcmNoIGRpcmVjdG9yaWVzIGlz IG9ubHkgZ29pbmcgdG8gYmUgYnVpbHQgZ2l2ZW4gYQo+ID4gPiBNYWtlZmlsZSBTUkNBUkNIOgo+ ID4gPiBodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9wZXJm L3BlcmYtdG9vbHMtbmV4dC5naXQvdHJlZS90b29scy9wZXJmL2FyY2gvQnVpbGQ/aD1wZXJmLXRv b2xzLW5leHQjbjIKPiA+ID4gd2hpY2ggbWVhbnMgaWYgd2Ugd2FudCB0aGUgc3lzdGVtIGNhbGwg dGFibGVzIGZvciBzYXkgQVJNIG9uIHg4Ni02NCB3ZQo+ID4gPiBuZWVkIHRvIHJlaW52ZW50IHRo ZSBidWlsZCAtIHRoaXMgaXNuJ3QgYSBwcm9ibGVtIHRvZGF5IGJ1dCBwZXJoYXBzCj4gPiA+IHNv bWV0aGluZyB0byBjb25zaWRlciBpZiB3ZSB3YW50ZWQgYSBjcm9zcy1hcmNoaXRlY3R1cmUgcGVy ZiB0cmFjZQo+ID4gPiByZWNvcmQuIEknZCBsaWtlIHRvIGRvIGF3YXkgZW50aXJlbHkgd2l0aCB0 aGUgYXJjaCBkaXJlY3RvcnkgZm9yIHRoaXMKPiA+ID4ga2luZCBvZiByZWFzb24uIEZvciBleGFt cGxlLCBpZiB3ZSBydW4gcGVyZiBvbiBhIHVzZXIgc3BhY2UgZW11bGF0b3IKPiA+ID4gKHNheSBh IHRlc3Rpbmcgc2V0IHVwKSBhbmQgaXQgc2VlcyBBTUQgZGF0YSBmYWJyaWMgUE1VcywgbG9naWMg Zm9yCj4gPiA+IHRob3NlIFBNVXMgY3VycmVudGx5IGxpdmVzIGluIHRoZSBhcmNoIGRpcmVjdG9y eSBmb3IgeDg2IGFuZCBsaWtlbHkKPiA+ID4gd2Fzbid0IGV2ZW4gYnVpbHQgaW50byB0aGUgcGVy ZiB0b29sLiBXZSBzaG91bGQgYmUgYWJsZSB0byBpZGVudGlmeQo+ID4gPiBQTVVzIGFuZCBhY3Qg YWNjb3JkaW5nbHkgYmFzZWQgb24gdGhlaXIgbmFtZXMuIEluIHRoZSBjYXNlIG9mIHRoZQo+ID4g PiBvdmVybG9hZGVkICJjcHUiIFBNVSB3ZSBjYW4gaWRlbnRpZnkgaXQgd2l0aCB0aGUgQ1BVSUQu IFRoZSBsZXNzIGNvZGUKPiA+ID4gaW4gYXJjaCBhbmQgdGhlIGZld2VyIGFyY2hpdGVjdHVyZSBp ZmRlZnMsIHRoZSBiZXR0ZXIgdGhpbmdzIHNob3VsZAo+ID4gPiB3b3JrIGNyb3NzLWFyY2hpdGVj dHVyZSwgaW4gdGVzdGluZyBzY2VuYXJpb3MsIGV0Yy4gV2UgYWxzbyB3aW4gYnkKPiA+ID4gZ2V0 dGluZyBjb2RlIGNvdmVyYWdlIHdpdGhvdXQsIGZvciBleGFtcGxlLCBoYXZpbmcgdG8gYnVpbGQg YW5kIHRlc3QKPiA+ID4gb24gY3NreSBvciBzdXBlciBILgo+ID4gPgo+ID4gPiBZb3VyIGNoYW5n ZXMgYXJlIHVzaW5nIHRoZSBzdHJpbmcgZm9yIHRoZSBhcmNoaXRlY3R1cmUgbmFtZS4gSSB0aGlu awo+ID4gPiB0aGF0IHN0cmluZyBpcyBzb21ldGhpbmcgd2Ugc2hvdWxkIGdldCByaWQgb2Y6Cj4g PiA+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xrbWwvQ0FQLTU9ZlgyQnRGemhHTENTcU8xUXN6 cWZYPUhUOFJyVGRHXzVUdHA1R3c0c2VTc3RBQG1haWwuZ21haWwuY29tLwo+ID4gPiBidXQgdGhl cmUncyBubyByZWFzb24gd2UgY291bGRuJ3QgY2xlYW4gdGhhdCB1cCBvbiB0b3Agb2YgeW91ciBj aGFuZ2UuCj4gPgo+ID4gWWVzIHRoYXQgcGFydCBpcyBub3QgaWRlYWwuCj4gPgo+ID4gPgo+ID4g PiBUaGUgYnVpbGQgd2l0aCBsb3RzIG9mIHNlcGFyYXRlIEJ1aWxkL01ha2VmaWxlcyBpcyBzb21l dGhpbmcgb2YgYSBwYWluCj4gPiA+IHRvIHBvcnQvbWFpbnRhaW4gaW4gYSBiYXplbCB2ZXJzaW9u IG9mIHRoZSBidWlsZCBJIG1haW50YWluIGF0IEdvb2dsZQo+ID4gPiAoaGFwcHkgdG8gb3BlbiBz b3VyY2UgaWYgYW55b25lIGNhcmVzKS4gSW4gdGhlc2UgY2hhbmdlcyB5b3UganVzdCBydW4KPiA+ ID4gYSBiaWcgc2NyaXB0IGFuZCBnZXQgYSBiaWcgaGVhZGVyIGZpbGUgb3V0IHRoZSBlbmQsIHdo aWNoIGxhcmdlbHkKPiA+ID4gbWF0Y2hlcyB0aGUgb3RoZXIgcGVyZiB0cmFjZSBiZWF1dHkgdGhp bmdzIHdlIGJ1aWxkLgo+ID4KPiA+IEZhaXIgZW5vdWdoISBJIHdhbnRlZCB0byBtaW1pYyBob3cg dGhlIGtlcm5lbCB3YXMgYnVpbGRpbmcgdGhlIHN5c2NhbGwKPiA+IHRhYmxlcyBhcyBjbG9zZWx5 IGFzIHBvc3NpYmxlLCBpdCdzIGNvbnZlbmllbnQgdG8gaGF2ZSBjb2hlc2lvbi4KPiAKPiBJIHRo aW5rIGl0IG1ha2VzIHNlbnNlIGluIHRoZSBrZXJuZWwsIGFzIHRoZSBidWlsdCBiaW5hcnkgZG9l c24ndCBoYXZlCj4gY3Jvc3MtcGxhdGZvcm0gY29uY2VybnMuIFRoaXMgaXMgcHJvYmFibHkgYWxz byB0aGUgcmVhc29uIHdoeSB0aGUgcGVyZgo+IHRvb2wgaGFzIGFuIGFyY2ggZGlyZWN0b3J5LiBM ZXQgbWUga25vdyB3aGF0IHlvdSB0aGluayBpcyB0aGUgcmlnaHQKPiBkaXJlY3Rpb24gZm9yIHRo ZSBwZXJmIHRvb2wgc3lzY2FsbCB0YWJsZSBjb2RlLgoKSSBhbSBoZXNpdGFudCBhYm91dCBtb3Zp bmcgYWxsIG9mIHRoZSBhcmNoLXNwZWNpZmljIHN5c2NhbGwgZ2VuZXJhdGlvbgpmbGFncyBpbnRv IGEgc2luZ2xlIGZpbGUuIFRoZXJlIGlzIGN1cnJlbnRseSBhIHJlYWxseSBjbGVhbiBzZXBhcmF0 aW9uCmJldHdlZW4gdGhlIGFyY2hpdGVjdHVyZXMgYW5kIGl0J3MgcG9zc2libGUgdG8gZ2VuZXJh dGUgYWxsIG9mIHRoZQpzeXNjYWxsIHRhYmxlcyBmb3IgYWxsIG9mIHRoZSBhcmNoaXRlY3V0dXJl cyBiYXNlZCBvbiB0aGUgcGF0aHMgdG8gdGhlCnN5c2NhbGwgdGFibGUuIFdoYXQgY2F1c2VzIHRo ZSBhcmNoIGRpcmVjdG9yeSB0byBiZSBhIHBhaW4gZm9yIEJhemVsPyBJCmd1ZXNzIEkgYW0gbW9z dGx5IGNvbmZ1c2VkIHdoeSBpdCBtYWtlcyBzZW5zZSB0byBjaGFuZ2UgdGhlIGtlcm5lbApNYWtl ZmlsZXMgaW4gb3JkZXIgdG8gYWNjb21pZGF0ZSBhIHJld3JpdGUgb2YgdGhlIGJ1aWxkIHN5c3Rl bSBpbiBCYXplbAp0aGF0IGlzbid0IHBsYW5uZWQgdG8gYmUgdXNlZCB1cHN0cmVhbS4KCi0gQ2hh cmxpZQoKPiAKPiA+IFdoYXQgaXMgdGhlIHVzZWNhc2UgZm9yIHRoZSBiYXplbCB2ZXJzaW9uPwo+ IAo+IEknbSBzdXJlIHRoZXJlJ3MgbW9yZSBpbmZvIGluOgo+IGh0dHBzOi8vYmF6ZWwuYnVpbGQv Cj4gYnV0IHRoZSBtYWluIHRoaW5nIGlzIGhhdmluZyBoZXJtZXRpYyBhbmQgcmVwcm9kdWNpYmxl IGJ1aWxkcy4gVGhlCj4gbWFpbiBwcm9ibGVtIHdpdGggb3BlbiBzb3VyY2luZyB3b3VsZCBiZSBk ZWFsaW5nIHdpdGggZXh0ZXJuYWwKPiByZXBvc2l0b3JpZXMsIHRlc3Qgc2V0IHVwLCBldGMuIFRi aCwgaGVybWV0aWMgYnVpbGRzIGFyZSBhIGNoYWxsZW5nZQo+IGFzIHRoaW5ncyBsaWtlIGxleCBh bmQgeWFjYyB3aWxsIHZhcnkgdGhlIEMgY29kZSB0aGV5IGdlbmVyYXRlIGJhc2VkCj4gb24gdGhl IHBsYXRmb3JtIHRoZXkgcnVuIG9uLiBCYXplbCBoYXMgcGxhbnMgdG8gY2hhbmdlIHRoZSB3b3Js ZCBzbwo+IG1heWJlIHRoaXMgY291bGQgYmUgbW9yZSBvZiBhIHRoaW5nIGluIHRoZSBmdXR1cmUu Cj4gCj4gRndpdywgSSBkaWQgcHVzaCBjaGFuZ2VzIGludG8gdGhlIHBlcmYgdHJlZSBzbyB0aGF0 IG1hbiBwYWdlIGJ1aWxkaW5nCj4gd2FzIHJlcHJvZHVjaWJsZToKPiBodHRwczovL2dpdC5rZXJu ZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9wZXJmL3BlcmYtdG9vbHMtbmV4dC5naXQv Y29tbWl0L3Rvb2xzL3BlcmYvRG9jdW1lbnRhdGlvbj9oPXBlcmYtdG9vbHMtbmV4dCZpZD1kNTg2 YWMxMGNlNTZiMjM4MWI4ZTFkOGVkNzQ2NjBjMWIyYjhhYjBkCj4gVGhlIG1hbiBwYWdlcyB1c2Vk IHRvIHJlZmxlY3QgdGhlIGRhdGUvdGltZSB0aGV5IHdlcmUgYnVpbHQsIGJ1dCBub3cKPiByZWZs ZWN0IHRoZSBkYXRlIHRoZSBvZiB0aGUgY29tbWl0IG9mIHRoZSBmaWxlIGJlaW5nIGJ1aWx0Ogo+ IGh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3BlcmYvcGVy Zi10b29scy1uZXh0LmdpdC90cmVlL3Rvb2xzL3BlcmYvRG9jdW1lbnRhdGlvbi9NYWtlZmlsZT9o PXBlcmYtdG9vbHMtbmV4dCNuMjU1Cj4gCj4gVGhhbmtzLAo+IElhbgo+IAo+ID4gLSBDaGFybGll Cj4gPgo+ID4gPgo+ID4gPiBUaGFua3MsCj4gPiA+IElhbgo+ID4gPgo+ID4gPiA+ID4KPiA+ID4g PiA+IFRoZSBwYXRjaGVzIGdlbmVyYXRpbmcgYSBzeXNjYWxsKF8zMnxfNjQpPy5oIGxhbmRlZC4g VGhlc2UgY2hhbmdlcwo+ID4gPiA+ID4gdGFrZSB5b3VyIGNoYW5nZXMgYW5kIG1ha2UgaXQgc28g dGhhdCB3ZSBqdXN0IHJ1biB0aGUgc2NyaXB0IG9uY2UKPiA+ID4gPiA+IGJ1aWxkaW5nIGEgaGVh ZGVyIGZpbGUgZm9yIGFsbCBhcmNoaXRlY3R1cmVzLiBPbiB4ODYgd2UgdGhlbiBoYXZlIHRoZQo+ ID4gPiA+ID4gdGFibGVzIGJlIGd1YXJkZWQgYnkgaWZkZWZzIG9uIGkzODYgYW5kIHg4Ni02NC4g VGhlbiByYXRoZXIgdGhhbiB0aGUKPiA+ID4gPiA+IHRhYmxlIGp1c3QgbWF0Y2hpbmcgdGhlIGhv c3QgYXJjaGl0ZWN0dXJlIHRoZSBFTEYgbWFjaGluZSBpcyB1c2VkIGZvcgo+ID4gPiA+ID4gdGhl IGV4ZWN1dGFibGUgcnVubmluZy4KPiA+ID4gPiA+Cj4gPiA+ID4gPiBUaGFua3MsCj4gPiA+ID4g PiBJYW4KPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IC0gQ2hhcmxpZQo+ID4gPiA+ID4gPgo+ID4gPiA+ ID4gPiA+Cj4gPiA+ID4gPiA+ID4gSWFuIFJvZ2VycyAoNyk6Cj4gPiA+ID4gPiA+ID4gICBwZXJm IHN5c2NhbGx0YmxlOiBSZW1vdmUgc3lzY2FsbF90YWJsZS5oCj4gPiA+ID4gPiA+ID4gICBwZXJm IHRyYWNlOiBSZW9yZ2FuaXplIHN5c2NhbGxzCj4gPiA+ID4gPiA+ID4gICBwZXJmIHN5c2NhbGx0 Ymw6IFJlbW92ZSBzdHJ1Y3Qgc3lzY2FsbHRibAo+ID4gPiA+ID4gPiA+ICAgcGVyZiB0aHJlYWQ6 IEFkZCBzdXBwb3J0IGZvciByZWFkaW5nIHRoZSBlX21hY2hpbmUgdHlwZSBmb3IgYSB0aHJlYWQK PiA+ID4gPiA+ID4gPiAgIHBlcmYgdHJhY2UgYmVhdXR5OiBBZGQgc3lzY2FsbHRibC5zaCBnZW5l cmF0aW5nIGFsbCBzeXN0ZW0gY2FsbCB0YWJsZXMKPiA+ID4gPiA+ID4gPiAgIHBlcmYgc3lzY2Fs bHRibDogVXNlIGxvb2t1cCB0YWJsZSBjb250YWluaW5nIG11bHRpcGxlIGFyY2hpdGVjdHVyZXMK PiA+ID4gPiA+ID4gPiAgIHBlcmYgYnVpbGQ6IFJlbW92ZSBNYWtlZmlsZS5zeXNjYWxscwo+ID4g PiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gIHRvb2xzL3BlcmYvTWFrZWZpbGUucGVyZiAgICAgICAg ICAgICAgICAgICAgICB8ICAxMCArLQo+ID4gPiA+ID4gPiA+ICB0b29scy9wZXJmL2FyY2gvYWxw aGEvZW50cnkvc3lzY2FsbHMvS2J1aWxkICAgfCAgIDIgLQo+ID4gPiA+ID4gPiA+ICAuLi4vYWxw aGEvZW50cnkvc3lzY2FsbHMvTWFrZWZpbGUuc3lzY2FsbHMgICAgfCAgIDUgLQo+ID4gPiA+ID4g PiA+ICB0b29scy9wZXJmL2FyY2gvYWxwaGEvaW5jbHVkZS9zeXNjYWxsX3RhYmxlLmggfCAgIDIg LQo+ID4gPiA+ID4gPiA+ICB0b29scy9wZXJmL2FyY2gvYXJjL2VudHJ5L3N5c2NhbGxzL0tidWls ZCAgICAgfCAgIDIgLQo+ID4gPiA+ID4gPiA+ICAuLi4vYXJjaC9hcmMvZW50cnkvc3lzY2FsbHMv TWFrZWZpbGUuc3lzY2FsbHMgfCAgIDMgLQo+ID4gPiA+ID4gPiA+ICB0b29scy9wZXJmL2FyY2gv YXJjL2luY2x1ZGUvc3lzY2FsbF90YWJsZS5oICAgfCAgIDIgLQo+ID4gPiA+ID4gPiA+ICB0b29s cy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL0tidWlsZCAgICAgfCAgIDQgLQo+ID4gPiA+ ID4gPiA+ICAuLi4vYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvTWFrZWZpbGUuc3lzY2FsbHMgfCAg IDIgLQo+ID4gPiA+ID4gPiA+ICB0b29scy9wZXJmL2FyY2gvYXJtL2luY2x1ZGUvc3lzY2FsbF90 YWJsZS5oICAgfCAgIDIgLQo+ID4gPiA+ID4gPiA+ICB0b29scy9wZXJmL2FyY2gvYXJtNjQvZW50 cnkvc3lzY2FsbHMvS2J1aWxkICAgfCAgIDMgLQo+ID4gPiA+ID4gPiA+ICAuLi4vYXJtNjQvZW50 cnkvc3lzY2FsbHMvTWFrZWZpbGUuc3lzY2FsbHMgICAgfCAgIDYgLQo+ID4gPiA+ID4gPiA+ICB0 b29scy9wZXJmL2FyY2gvYXJtNjQvaW5jbHVkZS9zeXNjYWxsX3RhYmxlLmggfCAgIDggLQo+ID4g PiA+ID4gPiA+ICB0b29scy9wZXJmL2FyY2gvY3NreS9lbnRyeS9zeXNjYWxscy9LYnVpbGQgICAg fCAgIDIgLQo+ID4gPiA+ID4gPiA+ICAuLi4vY3NreS9lbnRyeS9zeXNjYWxscy9NYWtlZmlsZS5z eXNjYWxscyAgICAgfCAgIDMgLQo+ID4gPiA+ID4gPiA+ICB0b29scy9wZXJmL2FyY2gvY3NreS9p bmNsdWRlL3N5c2NhbGxfdGFibGUuaCAgfCAgIDIgLQo+ID4gPiA+ID4gPiA+ICAuLi4vcGVyZi9h cmNoL2xvb25nYXJjaC9lbnRyeS9zeXNjYWxscy9LYnVpbGQgfCAgIDIgLQo+ID4gPiA+ID4gPiA+ ICAuLi4vZW50cnkvc3lzY2FsbHMvTWFrZWZpbGUuc3lzY2FsbHMgICAgICAgICAgfCAgIDMgLQo+ ID4gPiA+ID4gPiA+ICAuLi4vYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9zeXNjYWxsX3RhYmxlLmgg ICAgfCAgIDIgLQo+ID4gPiA+ID4gPiA+ICB0b29scy9wZXJmL2FyY2gvbWlwcy9lbnRyeS9zeXNj YWxscy9LYnVpbGQgICAgfCAgIDIgLQo+ID4gPiA+ID4gPiA+ICAuLi4vbWlwcy9lbnRyeS9zeXNj YWxscy9NYWtlZmlsZS5zeXNjYWxscyAgICAgfCAgIDUgLQo+ID4gPiA+ID4gPiA+ICB0b29scy9w ZXJmL2FyY2gvbWlwcy9pbmNsdWRlL3N5c2NhbGxfdGFibGUuaCAgfCAgIDIgLQo+ID4gPiA+ID4g PiA+ICB0b29scy9wZXJmL2FyY2gvcGFyaXNjL2VudHJ5L3N5c2NhbGxzL0tidWlsZCAgfCAgIDMg LQo+ID4gPiA+ID4gPiA+ICAuLi4vcGFyaXNjL2VudHJ5L3N5c2NhbGxzL01ha2VmaWxlLnN5c2Nh bGxzICAgfCAgIDYgLQo+ID4gPiA+ID4gPiA+ICAuLi4vcGVyZi9hcmNoL3BhcmlzYy9pbmNsdWRl L3N5c2NhbGxfdGFibGUuaCAgfCAgIDggLQo+ID4gPiA+ID4gPiA+ICB0b29scy9wZXJmL2FyY2gv cG93ZXJwYy9lbnRyeS9zeXNjYWxscy9LYnVpbGQgfCAgIDMgLQo+ID4gPiA+ID4gPiA+ICAuLi4v cG93ZXJwYy9lbnRyeS9zeXNjYWxscy9NYWtlZmlsZS5zeXNjYWxscyAgfCAgIDYgLQo+ID4gPiA+ ID4gPiA+ICAuLi4vcGVyZi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9zeXNjYWxsX3RhYmxlLmggfCAg IDggLQo+ID4gPiA+ID4gPiA+ICB0b29scy9wZXJmL2FyY2gvcmlzY3YvZW50cnkvc3lzY2FsbHMv S2J1aWxkICAgfCAgIDIgLQo+ID4gPiA+ID4gPiA+ICAuLi4vcmlzY3YvZW50cnkvc3lzY2FsbHMv TWFrZWZpbGUuc3lzY2FsbHMgICAgfCAgIDQgLQo+ID4gPiA+ID4gPiA+ICB0b29scy9wZXJmL2Fy Y2gvcmlzY3YvaW5jbHVkZS9zeXNjYWxsX3RhYmxlLmggfCAgIDggLQo+ID4gPiA+ID4gPiA+ICB0 b29scy9wZXJmL2FyY2gvczM5MC9lbnRyeS9zeXNjYWxscy9LYnVpbGQgICAgfCAgIDIgLQo+ID4g PiA+ID4gPiA+ICAuLi4vczM5MC9lbnRyeS9zeXNjYWxscy9NYWtlZmlsZS5zeXNjYWxscyAgICAg fCAgIDUgLQo+ID4gPiA+ID4gPiA+ICB0b29scy9wZXJmL2FyY2gvczM5MC9pbmNsdWRlL3N5c2Nh bGxfdGFibGUuaCAgfCAgIDIgLQo+ID4gPiA+ID4gPiA+ICB0b29scy9wZXJmL2FyY2gvc2gvZW50 cnkvc3lzY2FsbHMvS2J1aWxkICAgICAgfCAgIDIgLQo+ID4gPiA+ID4gPiA+ICAuLi4vYXJjaC9z aC9lbnRyeS9zeXNjYWxscy9NYWtlZmlsZS5zeXNjYWxscyAgfCAgIDQgLQo+ID4gPiA+ID4gPiA+ ICB0b29scy9wZXJmL2FyY2gvc2gvaW5jbHVkZS9zeXNjYWxsX3RhYmxlLmggICAgfCAgIDIgLQo+ ID4gPiA+ID4gPiA+ICB0b29scy9wZXJmL2FyY2gvc3BhcmMvZW50cnkvc3lzY2FsbHMvS2J1aWxk ICAgfCAgIDMgLQo+ID4gPiA+ID4gPiA+ICAuLi4vc3BhcmMvZW50cnkvc3lzY2FsbHMvTWFrZWZp bGUuc3lzY2FsbHMgICAgfCAgIDUgLQo+ID4gPiA+ID4gPiA+ICB0b29scy9wZXJmL2FyY2gvc3Bh cmMvaW5jbHVkZS9zeXNjYWxsX3RhYmxlLmggfCAgIDggLQo+ID4gPiA+ID4gPiA+ICB0b29scy9w ZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL0tidWlsZCAgICAgfCAgIDMgLQo+ID4gPiA+ID4g PiA+ICAuLi4vYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvTWFrZWZpbGUuc3lzY2FsbHMgfCAgIDYg LQo+ID4gPiA+ID4gPiA+ICB0b29scy9wZXJmL2FyY2gveDg2L2luY2x1ZGUvc3lzY2FsbF90YWJs ZS5oICAgfCAgIDggLQo+ID4gPiA+ID4gPiA+ICB0b29scy9wZXJmL2FyY2gveHRlbnNhL2VudHJ5 L3N5c2NhbGxzL0tidWlsZCAgfCAgIDIgLQo+ID4gPiA+ID4gPiA+ICAuLi4veHRlbnNhL2VudHJ5 L3N5c2NhbGxzL01ha2VmaWxlLnN5c2NhbGxzICAgfCAgIDQgLQo+ID4gPiA+ID4gPiA+ICAuLi4v cGVyZi9hcmNoL3h0ZW5zYS9pbmNsdWRlL3N5c2NhbGxfdGFibGUuaCAgfCAgIDIgLQo+ID4gPiA+ ID4gPiA+ICB0b29scy9wZXJmL2J1aWx0aW4tdHJhY2UuYyAgICAgICAgICAgICAgICAgICAgfCAy NzUgKysrKysrKysrKystLS0tLS0tCj4gPiA+ID4gPiA+ID4gIHRvb2xzL3BlcmYvc2NyaXB0cy9N YWtlZmlsZS5zeXNjYWxscyAgICAgICAgICB8ICA2MSAtLS0tCj4gPiA+ID4gPiA+ID4gIHRvb2xz L3BlcmYvc2NyaXB0cy9zeXNjYWxsdGJsLnNoICAgICAgICAgICAgICB8ICA4NiAtLS0tLS0KPiA+ ID4gPiA+ID4gPiAgdG9vbHMvcGVyZi90cmFjZS9iZWF1dHkvc3lzY2FsbHRibC5zaCAgICAgICAg IHwgMjc0ICsrKysrKysrKysrKysrKysrCj4gPiA+ID4gPiA+ID4gIHRvb2xzL3BlcmYvdXRpbC9z eXNjYWxsdGJsLmMgICAgICAgICAgICAgICAgICB8IDE0MiArKysrLS0tLS0KPiA+ID4gPiA+ID4g PiAgdG9vbHMvcGVyZi91dGlsL3N5c2NhbGx0YmwuaCAgICAgICAgICAgICAgICAgIHwgIDIyICst Cj4gPiA+ID4gPiA+ID4gIHRvb2xzL3BlcmYvdXRpbC90aHJlYWQuYyAgICAgICAgICAgICAgICAg ICAgICB8ICA1MCArKysrCj4gPiA+ID4gPiA+ID4gIHRvb2xzL3BlcmYvdXRpbC90aHJlYWQuaCAg ICAgICAgICAgICAgICAgICAgICB8ICAxNCArLQo+ID4gPiA+ID4gPiA+ICA1NCBmaWxlcyBjaGFu Z2VkLCA1OTggaW5zZXJ0aW9ucygrKSwgNTA2IGRlbGV0aW9ucygtKQo+ID4gPiA+ID4gPiA+ICBk ZWxldGUgbW9kZSAxMDA2NDQgdG9vbHMvcGVyZi9hcmNoL2FscGhhL2VudHJ5L3N5c2NhbGxzL0ti dWlsZAo+ID4gPiA+ID4gPiA+ICBkZWxldGUgbW9kZSAxMDA2NDQgdG9vbHMvcGVyZi9hcmNoL2Fs cGhhL2VudHJ5L3N5c2NhbGxzL01ha2VmaWxlLnN5c2NhbGxzCj4gPiA+ID4gPiA+ID4gIGRlbGV0 ZSBtb2RlIDEwMDY0NCB0b29scy9wZXJmL2FyY2gvYWxwaGEvaW5jbHVkZS9zeXNjYWxsX3RhYmxl LmgKPiA+ID4gPiA+ID4gPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3BlcmYvYXJjaC9hcmMv ZW50cnkvc3lzY2FsbHMvS2J1aWxkCj4gPiA+ID4gPiA+ID4gIGRlbGV0ZSBtb2RlIDEwMDY0NCB0 b29scy9wZXJmL2FyY2gvYXJjL2VudHJ5L3N5c2NhbGxzL01ha2VmaWxlLnN5c2NhbGxzCj4gPiA+ ID4gPiA+ID4gIGRlbGV0ZSBtb2RlIDEwMDY0NCB0b29scy9wZXJmL2FyY2gvYXJjL2luY2x1ZGUv c3lzY2FsbF90YWJsZS5oCj4gPiA+ID4gPiA+ID4gIGRlbGV0ZSBtb2RlIDEwMDY0NCB0b29scy9w ZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL0tidWlsZAo+ID4gPiA+ID4gPiA+ICBkZWxldGUg bW9kZSAxMDA2NDQgdG9vbHMvcGVyZi9hcmNoL2FybS9lbnRyeS9zeXNjYWxscy9NYWtlZmlsZS5z eXNjYWxscwo+ID4gPiA+ID4gPiA+ICBkZWxldGUgbW9kZSAxMDA2NDQgdG9vbHMvcGVyZi9hcmNo L2FybS9pbmNsdWRlL3N5c2NhbGxfdGFibGUuaAo+ID4gPiA+ID4gPiA+ICBkZWxldGUgbW9kZSAx MDA2NDQgdG9vbHMvcGVyZi9hcmNoL2FybTY0L2VudHJ5L3N5c2NhbGxzL0tidWlsZAo+ID4gPiA+ ID4gPiA+ICBkZWxldGUgbW9kZSAxMDA2NDQgdG9vbHMvcGVyZi9hcmNoL2FybTY0L2VudHJ5L3N5 c2NhbGxzL01ha2VmaWxlLnN5c2NhbGxzCj4gPiA+ID4gPiA+ID4gIGRlbGV0ZSBtb2RlIDEwMDY0 NCB0b29scy9wZXJmL2FyY2gvYXJtNjQvaW5jbHVkZS9zeXNjYWxsX3RhYmxlLmgKPiA+ID4gPiA+ ID4gPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3BlcmYvYXJjaC9jc2t5L2VudHJ5L3N5c2Nh bGxzL0tidWlsZAo+ID4gPiA+ID4gPiA+ICBkZWxldGUgbW9kZSAxMDA2NDQgdG9vbHMvcGVyZi9h cmNoL2Nza3kvZW50cnkvc3lzY2FsbHMvTWFrZWZpbGUuc3lzY2FsbHMKPiA+ID4gPiA+ID4gPiAg ZGVsZXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3BlcmYvYXJjaC9jc2t5L2luY2x1ZGUvc3lzY2FsbF90 YWJsZS5oCj4gPiA+ID4gPiA+ID4gIGRlbGV0ZSBtb2RlIDEwMDY0NCB0b29scy9wZXJmL2FyY2gv bG9vbmdhcmNoL2VudHJ5L3N5c2NhbGxzL0tidWlsZAo+ID4gPiA+ID4gPiA+ICBkZWxldGUgbW9k ZSAxMDA2NDQgdG9vbHMvcGVyZi9hcmNoL2xvb25nYXJjaC9lbnRyeS9zeXNjYWxscy9NYWtlZmls ZS5zeXNjYWxscwo+ID4gPiA+ID4gPiA+ICBkZWxldGUgbW9kZSAxMDA2NDQgdG9vbHMvcGVyZi9h cmNoL2xvb25nYXJjaC9pbmNsdWRlL3N5c2NhbGxfdGFibGUuaAo+ID4gPiA+ID4gPiA+ICBkZWxl dGUgbW9kZSAxMDA2NDQgdG9vbHMvcGVyZi9hcmNoL21pcHMvZW50cnkvc3lzY2FsbHMvS2J1aWxk Cj4gPiA+ID4gPiA+ID4gIGRlbGV0ZSBtb2RlIDEwMDY0NCB0b29scy9wZXJmL2FyY2gvbWlwcy9l bnRyeS9zeXNjYWxscy9NYWtlZmlsZS5zeXNjYWxscwo+ID4gPiA+ID4gPiA+ICBkZWxldGUgbW9k ZSAxMDA2NDQgdG9vbHMvcGVyZi9hcmNoL21pcHMvaW5jbHVkZS9zeXNjYWxsX3RhYmxlLmgKPiA+ ID4gPiA+ID4gPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3BlcmYvYXJjaC9wYXJpc2MvZW50 cnkvc3lzY2FsbHMvS2J1aWxkCj4gPiA+ID4gPiA+ID4gIGRlbGV0ZSBtb2RlIDEwMDY0NCB0b29s cy9wZXJmL2FyY2gvcGFyaXNjL2VudHJ5L3N5c2NhbGxzL01ha2VmaWxlLnN5c2NhbGxzCj4gPiA+ ID4gPiA+ID4gIGRlbGV0ZSBtb2RlIDEwMDY0NCB0b29scy9wZXJmL2FyY2gvcGFyaXNjL2luY2x1 ZGUvc3lzY2FsbF90YWJsZS5oCj4gPiA+ID4gPiA+ID4gIGRlbGV0ZSBtb2RlIDEwMDY0NCB0b29s cy9wZXJmL2FyY2gvcG93ZXJwYy9lbnRyeS9zeXNjYWxscy9LYnVpbGQKPiA+ID4gPiA+ID4gPiAg ZGVsZXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL2VudHJ5L3N5c2NhbGxz L01ha2VmaWxlLnN5c2NhbGxzCj4gPiA+ID4gPiA+ID4gIGRlbGV0ZSBtb2RlIDEwMDY0NCB0b29s cy9wZXJmL2FyY2gvcG93ZXJwYy9pbmNsdWRlL3N5c2NhbGxfdGFibGUuaAo+ID4gPiA+ID4gPiA+ ICBkZWxldGUgbW9kZSAxMDA2NDQgdG9vbHMvcGVyZi9hcmNoL3Jpc2N2L2VudHJ5L3N5c2NhbGxz L0tidWlsZAo+ID4gPiA+ID4gPiA+ICBkZWxldGUgbW9kZSAxMDA2NDQgdG9vbHMvcGVyZi9hcmNo L3Jpc2N2L2VudHJ5L3N5c2NhbGxzL01ha2VmaWxlLnN5c2NhbGxzCj4gPiA+ID4gPiA+ID4gIGRl bGV0ZSBtb2RlIDEwMDY0NCB0b29scy9wZXJmL2FyY2gvcmlzY3YvaW5jbHVkZS9zeXNjYWxsX3Rh YmxlLmgKPiA+ID4gPiA+ID4gPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3BlcmYvYXJjaC9z MzkwL2VudHJ5L3N5c2NhbGxzL0tidWlsZAo+ID4gPiA+ID4gPiA+ICBkZWxldGUgbW9kZSAxMDA2 NDQgdG9vbHMvcGVyZi9hcmNoL3MzOTAvZW50cnkvc3lzY2FsbHMvTWFrZWZpbGUuc3lzY2FsbHMK PiA+ID4gPiA+ID4gPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3BlcmYvYXJjaC9zMzkwL2lu Y2x1ZGUvc3lzY2FsbF90YWJsZS5oCj4gPiA+ID4gPiA+ID4gIGRlbGV0ZSBtb2RlIDEwMDY0NCB0 b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvS2J1aWxkCj4gPiA+ID4gPiA+ID4gIGRl bGV0ZSBtb2RlIDEwMDY0NCB0b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvTWFrZWZp bGUuc3lzY2FsbHMKPiA+ID4gPiA+ID4gPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3BlcmYv YXJjaC9zaC9pbmNsdWRlL3N5c2NhbGxfdGFibGUuaAo+ID4gPiA+ID4gPiA+ICBkZWxldGUgbW9k ZSAxMDA2NDQgdG9vbHMvcGVyZi9hcmNoL3NwYXJjL2VudHJ5L3N5c2NhbGxzL0tidWlsZAo+ID4g PiA+ID4gPiA+ICBkZWxldGUgbW9kZSAxMDA2NDQgdG9vbHMvcGVyZi9hcmNoL3NwYXJjL2VudHJ5 L3N5c2NhbGxzL01ha2VmaWxlLnN5c2NhbGxzCj4gPiA+ID4gPiA+ID4gIGRlbGV0ZSBtb2RlIDEw MDY0NCB0b29scy9wZXJmL2FyY2gvc3BhcmMvaW5jbHVkZS9zeXNjYWxsX3RhYmxlLmgKPiA+ID4g PiA+ID4gPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lz Y2FsbHMvS2J1aWxkCj4gPiA+ID4gPiA+ID4gIGRlbGV0ZSBtb2RlIDEwMDY0NCB0b29scy9wZXJm L2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL01ha2VmaWxlLnN5c2NhbGxzCj4gPiA+ID4gPiA+ID4g IGRlbGV0ZSBtb2RlIDEwMDY0NCB0b29scy9wZXJmL2FyY2gveDg2L2luY2x1ZGUvc3lzY2FsbF90 YWJsZS5oCj4gPiA+ID4gPiA+ID4gIGRlbGV0ZSBtb2RlIDEwMDY0NCB0b29scy9wZXJmL2FyY2gv eHRlbnNhL2VudHJ5L3N5c2NhbGxzL0tidWlsZAo+ID4gPiA+ID4gPiA+ICBkZWxldGUgbW9kZSAx MDA2NDQgdG9vbHMvcGVyZi9hcmNoL3h0ZW5zYS9lbnRyeS9zeXNjYWxscy9NYWtlZmlsZS5zeXNj YWxscwo+ID4gPiA+ID4gPiA+ICBkZWxldGUgbW9kZSAxMDA2NDQgdG9vbHMvcGVyZi9hcmNoL3h0 ZW5zYS9pbmNsdWRlL3N5c2NhbGxfdGFibGUuaAo+ID4gPiA+ID4gPiA+ICBkZWxldGUgbW9kZSAx MDA2NDQgdG9vbHMvcGVyZi9zY3JpcHRzL01ha2VmaWxlLnN5c2NhbGxzCj4gPiA+ID4gPiA+ID4g IGRlbGV0ZSBtb2RlIDEwMDc1NSB0b29scy9wZXJmL3NjcmlwdHMvc3lzY2FsbHRibC5zaAo+ID4g PiA+ID4gPiA+ICBjcmVhdGUgbW9kZSAxMDA3NTUgdG9vbHMvcGVyZi90cmFjZS9iZWF1dHkvc3lz Y2FsbHRibC5zaAo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gLS0KPiA+ID4gPiA+ID4gPiAy LjQ4LjEuMzYyLmcwNzkwMzZkMTU0LWdvb2cKPiA+ID4gPiA+ID4gPgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtcmlzY3YgbWFpbGluZyBsaXN0 CmxpbnV4LXJpc2N2QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5v cmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1yaXNjdgo=