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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 70CE0C433EF for ; Mon, 23 May 2022 02:03:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242207AbiEWCDB (ORCPT ); Sun, 22 May 2022 22:03:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40090 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234027AbiEWCC7 (ORCPT ); Sun, 22 May 2022 22:02:59 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 08BCE35AB2; Sun, 22 May 2022 19:02:54 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 5E8C1B80CBE; Mon, 23 May 2022 02:02:53 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id EE23BC385AA; Mon, 23 May 2022 02:02:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1653271371; bh=ERwtvphja6U/1OhlgSfEhE5NLiXGu89oIBPKPKs7U8Q=; h=From:To:Cc:Subject:Date:From; b=YYroKg8JiImIEyhxQqxr9dwSw6Gvz1uWiyFTs6/Arz+D78M6TjE788dmc4o88D3+C yz9ghXro/LMf4BlMmFJJKGCcEc/yLsjL5rV7MjA4Hz2v3iDCB0BmwwzOTY9RPA9avG nk14pZu9MJJUMFRvuU+GioRXKmkkvpJxj6j1DzgNG7Id/s3k2fz4KstwpRDeUVGgec /lE4TfznmsR1NMdvfmW9HbRP82C815EbADCMxN60Za904DFLaE8qS4X2vIgDRInjq4 EmvQ0mzLy51/Oxa6eLaoEG5p/QnLNDGqO6RTYT5D24v7d8empSxpr6/M1HyKTSFtSS zUUdug5Vel7Kg== From: Miguel Ojeda To: Linus Torvalds , Greg Kroah-Hartman Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Jarkko Sakkinen , Miguel Ojeda , kunit-dev@googlegroups.com, linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-gpio@vger.kernel.org, linux-kbuild@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-perf-users@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, linux-um@lists.infradead.org, live-patching@vger.kernel.org Subject: [PATCH v7 00/25] Rust support Date: Mon, 23 May 2022 04:01:13 +0200 Message-Id: <20220523020209.11810-1-ojeda@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-doc@vger.kernel.org Rust support This is the patch series (v7) to add support for Rust as a second language to the Linux kernel. If you are interested in following this effort, please join us in the mailing list at: rust-for-linux@vger.kernel.org and take a look at the project itself at: https://github.com/Rust-for-Linux As usual, special thanks go to ISRG (Internet Security Research Group) and Google for their financial support on this endeavor. Cheers, Miguel -- # Rust support This cover letter explains the major changes and updates done since the previous ones. For those, please see: RFC: https://lore.kernel.org/lkml/20210414184604.23473-1-ojeda@kernel.org/ v1: https://lore.kernel.org/lkml/20210704202756.29107-1-ojeda@kernel.org/ v2: https://lore.kernel.org/lkml/20211206140313.5653-1-ojeda@kernel.org/ v3: https://lore.kernel.org/lkml/20220117053349.6804-1-ojeda@kernel.org/ v4: https://lore.kernel.org/lkml/20220212130410.6901-1-ojeda@kernel.org/ v5: https://lore.kernel.org/lkml/20220317181032.15436-1-ojeda@kernel.org/ v6: https://lore.kernel.org/lkml/20220507052451.12890-1-ojeda@kernel.org/ This is a small round to address the comments made in v6 plus a few related changes: - Added `%pA` to `Documentation/core-api/printk-formats.rst`. - Added `checkpatch.pl` patch to search for `%pA` in C code. - Added `checkpatch.pl` patch to enable language-independent checks. - Added UML (x86_64) support, for KUnit (thanks David Gow!). - Added inline licensing information ("Apache-2.0 OR MIT") in the commit message of the `alloc` patch, as well as in `rust/alloc/README.md` in the following patch. - Added SPDX license identifiers to `Documentation/rust/`. - Reformatted `Documentation/rust/arch-support.rst` list table into simple table. - Removed logo from documentation patch; used Linux GIF one for the Rust generated docs in its place (to be replaced with the SVG one once available). - Used `"GPL"` instead of `"GPL v2"` for the `license` field of the `module!` macro. - Moved `module_misc_device!` macro in `samples/rust/rust_random.rs` to the top of the file in `samples/rust/` for consistency. - Sorted `#include` lists in `rust/kernel/bindings_helper.h` and `rust/helpers.c`. - Fixed some English typos. - Made the patches more `checkpatch.pl`-clean overall. - Picked up Reviewed-by and Acked-by tags. ## Patch series status The Rust support is still to be considered experimental. However, support is good enough that kernel developers can start working on the Rust abstractions for subsystems and write drivers and other modules. The current series has just arrived in `linux-next`, as usual. Similarly, the preview docs for this series can be seen at: https://rust-for-linux.github.io/docs/kernel/ As usual, please see the following link for the live list of unstable Rust features we are using: https://github.com/Rust-for-Linux/linux/issues/2 ## Conferences, meetings and liaisons We would like to remind everyone about the Rust MC (microconference) of LPC 2022 (Linux Plumbers Conference): https://lpc.events/event/16/contributions/1159/ The Rust MC intends to cover talks and discussions on both Rust for Linux as well as other non-kernel Rust topics. The Call for Proposals is open! ## Acknowledgements The signatures in the main commits correspond to the people that wrote code that has ended up in them at the present time. For details on contributions to code and discussions, please see our repository: https://github.com/Rust-for-Linux/linux However, we would like to give credit to everyone that has contributed in one way or another to the Rust for Linux project. Since the previous cover letter: - Kees Cook for his reviews of some of the v6 patches. - David Gow and Brendan Higgins for their reviews of the KUnit prerequisite patch and their feedback. - Jonathan Corbet and Akira Yokosawa for their review of the documentation patch and feedback on documentation rules. - Gary Guo for working on improvements to the Rust compiler that could make our `static_assert!` macro applicable in more cases. - bjorn3 for working on making `rustc_parse_format` compile on a stable Rust compiler so that it may be used by lightweight formatting systems (for instance, by the kernel). - As usual, bjorn3 and Gary Guo for all the input on Rust compiler details, reviews and suggestions. - Esteban Blanc, Arthur Cohen and Martin Schmidt for rebasing their SPI abstraction work. - Maciej Falkowski for continuing his work on the Samsung Exynos TRNG driver and the required abstractions around it, such as adding `delay`, `ktime` and `iopoll` abstractions, new methods to `platform::Device` and run-time power management abstractions. - Yuheng Su for working on cleaning up the `Module::init` interface. - Peng Hao for working on wrapping `mm_struct`. - Sergio González Collado for continuing his work on the GitHub CI problem matchers. - Wei Liu for taking the time to answer questions from newcomers in Zulip. - Philip Li, Yujie Liu et al. for continuing their work on adding Rust support to the Intel 0DAY/LKP kernel test robot. - Philip Herron and Arthur Cohen (and his supporters Open Source Security and Embecosm) et al. for their ongoing work on GCC Rust. - Antoni Boucher (and his supporters) et al. for their ongoing work on `rustc_codegen_gcc`. - Mats Larsen, Marc Poulhiès et al. for their ongoing work on improving Rust support in Compiler Explorer. - Many folks that have reported issues, tested the project, helped spread the word, joined discussions and contributed in other ways! Please see also the acknowledgements on the previous cover letters. Boqun Feng (1): kallsyms: avoid hardcoding the buffer size Gary Guo (2): rust: add `build_error` crate vsprintf: add new `%pA` format specifier Miguel Ojeda (18): kallsyms: support "big" kernel symbols kallsyms: increase maximum kernel symbol length to 512 kunit: take `kunit_assert` as `const` rust: add C helpers rust: add `compiler_builtins` crate rust: import upstream `alloc` crate rust: adapt `alloc` crate to the kernel rust: add `macros` crate rust: export generated symbols scripts: checkpatch: diagnose uses of `%pA` in the C side scripts: checkpatch: enable language-independent checks for Rust scripts: add `rustdoc_test_{builder,gen}.py` scripts scripts: add `generate_rust_analyzer.py` scripts scripts: decode_stacktrace: demangle Rust symbols docs: add Rust documentation Kbuild: add Rust support samples: add Rust examples MAINTAINERS: Rust Wedson Almeida Filho (4): rust: add `kernel` crate's `sync` module rust: add `kernel` crate [RFC] drivers: gpio: PrimeCell PL061 in Rust [RFC] drivers: android: Binder IPC in Rust .gitignore | 5 + .rustfmt.toml | 12 + Documentation/core-api/printk-formats.rst | 10 + Documentation/doc-guide/kernel-doc.rst | 3 + Documentation/index.rst | 1 + Documentation/kbuild/kbuild.rst | 17 + Documentation/kbuild/makefiles.rst | 50 +- Documentation/process/changes.rst | 41 + Documentation/rust/arch-support.rst | 25 + Documentation/rust/coding-guidelines.rst | 216 ++ Documentation/rust/general-information.rst | 79 + Documentation/rust/index.rst | 22 + Documentation/rust/quick-start.rst | 232 ++ MAINTAINERS | 15 + Makefile | 175 +- arch/Kconfig | 6 + arch/arm/Kconfig | 1 + arch/arm64/Kconfig | 1 + arch/powerpc/Kconfig | 1 + arch/riscv/Kconfig | 1 + arch/riscv/Makefile | 5 + arch/um/Kconfig | 1 + arch/x86/Kconfig | 1 + arch/x86/Makefile | 14 + drivers/android/Kconfig | 6 + drivers/android/Makefile | 2 + drivers/android/allocation.rs | 266 ++ drivers/android/context.rs | 80 + drivers/android/defs.rs | 99 + drivers/android/node.rs | 476 +++ drivers/android/process.rs | 960 +++++ drivers/android/range_alloc.rs | 189 + drivers/android/rust_binder.rs | 111 + drivers/android/thread.rs | 870 +++++ drivers/android/transaction.rs | 326 ++ drivers/gpio/Kconfig | 8 + drivers/gpio/Makefile | 1 + drivers/gpio/gpio_pl061_rust.rs | 370 ++ include/kunit/test.h | 2 +- include/linux/kallsyms.h | 2 +- include/linux/spinlock.h | 25 +- include/uapi/linux/android/binder.h | 28 +- init/Kconfig | 45 +- kernel/kallsyms.c | 26 +- kernel/livepatch/core.c | 4 +- lib/Kconfig.debug | 155 + lib/kunit/test.c | 4 +- lib/vsprintf.c | 13 + rust/.gitignore | 10 + rust/Makefile | 398 +++ rust/alloc/README.md | 33 + rust/alloc/alloc.rs | 438 +++ rust/alloc/borrow.rs | 498 +++ rust/alloc/boxed.rs | 2007 +++++++++++ rust/alloc/collections/mod.rs | 156 + rust/alloc/fmt.rs | 601 ++++ rust/alloc/lib.rs | 226 ++ rust/alloc/macros.rs | 127 + rust/alloc/raw_vec.rs | 567 +++ rust/alloc/slice.rs | 1282 +++++++ rust/alloc/str.rs | 632 ++++ rust/alloc/string.rs | 2869 +++++++++++++++ rust/alloc/vec/drain.rs | 186 + rust/alloc/vec/drain_filter.rs | 145 + rust/alloc/vec/into_iter.rs | 356 ++ rust/alloc/vec/is_zero.rs | 106 + rust/alloc/vec/mod.rs | 3362 ++++++++++++++++++ rust/alloc/vec/partial_eq.rs | 49 + rust/alloc/vec/set_len_on_drop.rs | 30 + rust/alloc/vec/spec_extend.rs | 174 + rust/bindgen_parameters | 17 + rust/build_error.rs | 29 + rust/compiler_builtins.rs | 57 + rust/exports.c | 20 + rust/helpers.c | 644 ++++ rust/kernel/allocator.rs | 65 + rust/kernel/amba.rs | 257 ++ rust/kernel/bindings.rs | 47 + rust/kernel/bindings_helper.h | 46 + rust/kernel/build_assert.rs | 82 + rust/kernel/c_types.rs | 119 + rust/kernel/chrdev.rs | 207 ++ rust/kernel/clk.rs | 79 + rust/kernel/cred.rs | 46 + rust/kernel/device.rs | 546 +++ rust/kernel/driver.rs | 442 +++ rust/kernel/error.rs | 565 +++ rust/kernel/file.rs | 860 +++++ rust/kernel/gpio.rs | 478 +++ rust/kernel/hwrng.rs | 242 ++ rust/kernel/io_buffer.rs | 153 + rust/kernel/io_mem.rs | 275 ++ rust/kernel/iov_iter.rs | 81 + rust/kernel/irq.rs | 411 +++ rust/kernel/kasync.rs | 6 + rust/kernel/kasync/net.rs | 322 ++ rust/kernel/kunit.rs | 91 + rust/kernel/lib.rs | 261 ++ rust/kernel/linked_list.rs | 247 ++ rust/kernel/miscdev.rs | 291 ++ rust/kernel/mm.rs | 149 + rust/kernel/module_param.rs | 498 +++ rust/kernel/net.rs | 392 ++ rust/kernel/net/filter.rs | 447 +++ rust/kernel/of.rs | 63 + rust/kernel/pages.rs | 144 + rust/kernel/platform.rs | 223 ++ rust/kernel/power.rs | 118 + rust/kernel/prelude.rs | 36 + rust/kernel/print.rs | 405 +++ rust/kernel/random.rs | 42 + rust/kernel/raw_list.rs | 361 ++ rust/kernel/rbtree.rs | 563 +++ rust/kernel/revocable.rs | 161 + rust/kernel/security.rs | 38 + rust/kernel/static_assert.rs | 38 + rust/kernel/std_vendor.rs | 160 + rust/kernel/str.rs | 597 ++++ rust/kernel/sync.rs | 161 + rust/kernel/sync/arc.rs | 503 +++ rust/kernel/sync/condvar.rs | 138 + rust/kernel/sync/guard.rs | 169 + rust/kernel/sync/locked_by.rs | 111 + rust/kernel/sync/mutex.rs | 153 + rust/kernel/sync/nowait.rs | 188 + rust/kernel/sync/revocable.rs | 250 ++ rust/kernel/sync/rwsem.rs | 197 + rust/kernel/sync/seqlock.rs | 202 ++ rust/kernel/sync/smutex.rs | 295 ++ rust/kernel/sync/spinlock.rs | 360 ++ rust/kernel/sysctl.rs | 199 ++ rust/kernel/task.rs | 175 + rust/kernel/types.rs | 679 ++++ rust/kernel/user_ptr.rs | 175 + rust/macros/helpers.rs | 79 + rust/macros/lib.rs | 94 + rust/macros/module.rs | 631 ++++ samples/Kconfig | 2 + samples/Makefile | 1 + samples/rust/Kconfig | 140 + samples/rust/Makefile | 16 + samples/rust/hostprogs/.gitignore | 3 + samples/rust/hostprogs/Makefile | 5 + samples/rust/hostprogs/a.rs | 7 + samples/rust/hostprogs/b.rs | 5 + samples/rust/hostprogs/single.rs | 12 + samples/rust/rust_chrdev.rs | 50 + samples/rust/rust_minimal.rs | 35 + samples/rust/rust_miscdev.rs | 143 + samples/rust/rust_module_parameters.rs | 69 + samples/rust/rust_netfilter.rs | 54 + samples/rust/rust_platform.rs | 22 + samples/rust/rust_print.rs | 54 + samples/rust/rust_random.rs | 60 + samples/rust/rust_semaphore.rs | 171 + samples/rust/rust_semaphore_c.c | 212 ++ samples/rust/rust_stack_probing.rs | 36 + samples/rust/rust_sync.rs | 93 + scripts/.gitignore | 1 + scripts/Kconfig.include | 6 +- scripts/Makefile | 3 + scripts/Makefile.build | 60 + scripts/Makefile.debug | 10 + scripts/Makefile.host | 34 +- scripts/Makefile.lib | 12 + scripts/Makefile.modfinal | 8 +- scripts/cc-version.sh | 12 +- scripts/checkpatch.pl | 8 +- scripts/decode_stacktrace.sh | 14 + scripts/generate_rust_analyzer.py | 134 + scripts/generate_rust_target.rs | 227 ++ scripts/is_rust_module.sh | 13 + scripts/kallsyms.c | 47 +- scripts/kconfig/confdata.c | 75 + scripts/min-tool-version.sh | 6 + scripts/rust-is-available-bindgen-libclang.h | 2 + scripts/rust-is-available.sh | 158 + scripts/rustdoc_test_builder.py | 59 + scripts/rustdoc_test_gen.py | 164 + tools/include/linux/kallsyms.h | 2 +- tools/lib/perf/include/perf/event.h | 2 +- tools/lib/symbol/kallsyms.h | 2 +- 182 files changed, 37614 insertions(+), 69 deletions(-) create mode 100644 .rustfmt.toml create mode 100644 Documentation/rust/arch-support.rst create mode 100644 Documentation/rust/coding-guidelines.rst create mode 100644 Documentation/rust/general-information.rst create mode 100644 Documentation/rust/index.rst create mode 100644 Documentation/rust/quick-start.rst create mode 100644 drivers/android/allocation.rs create mode 100644 drivers/android/context.rs create mode 100644 drivers/android/defs.rs create mode 100644 drivers/android/node.rs create mode 100644 drivers/android/process.rs create mode 100644 drivers/android/range_alloc.rs create mode 100644 drivers/android/rust_binder.rs create mode 100644 drivers/android/thread.rs create mode 100644 drivers/android/transaction.rs create mode 100644 drivers/gpio/gpio_pl061_rust.rs create mode 100644 rust/.gitignore create mode 100644 rust/Makefile create mode 100644 rust/alloc/README.md create mode 100644 rust/alloc/alloc.rs create mode 100644 rust/alloc/borrow.rs create mode 100644 rust/alloc/boxed.rs create mode 100644 rust/alloc/collections/mod.rs create mode 100644 rust/alloc/fmt.rs create mode 100644 rust/alloc/lib.rs create mode 100644 rust/alloc/macros.rs create mode 100644 rust/alloc/raw_vec.rs create mode 100644 rust/alloc/slice.rs create mode 100644 rust/alloc/str.rs create mode 100644 rust/alloc/string.rs create mode 100644 rust/alloc/vec/drain.rs create mode 100644 rust/alloc/vec/drain_filter.rs create mode 100644 rust/alloc/vec/into_iter.rs create mode 100644 rust/alloc/vec/is_zero.rs create mode 100644 rust/alloc/vec/mod.rs create mode 100644 rust/alloc/vec/partial_eq.rs create mode 100644 rust/alloc/vec/set_len_on_drop.rs create mode 100644 rust/alloc/vec/spec_extend.rs create mode 100644 rust/bindgen_parameters create mode 100644 rust/build_error.rs create mode 100644 rust/compiler_builtins.rs create mode 100644 rust/exports.c create mode 100644 rust/helpers.c create mode 100644 rust/kernel/allocator.rs create mode 100644 rust/kernel/amba.rs create mode 100644 rust/kernel/bindings.rs create mode 100644 rust/kernel/bindings_helper.h create mode 100644 rust/kernel/build_assert.rs create mode 100644 rust/kernel/c_types.rs create mode 100644 rust/kernel/chrdev.rs create mode 100644 rust/kernel/clk.rs create mode 100644 rust/kernel/cred.rs create mode 100644 rust/kernel/device.rs create mode 100644 rust/kernel/driver.rs create mode 100644 rust/kernel/error.rs create mode 100644 rust/kernel/file.rs create mode 100644 rust/kernel/gpio.rs create mode 100644 rust/kernel/hwrng.rs create mode 100644 rust/kernel/io_buffer.rs create mode 100644 rust/kernel/io_mem.rs create mode 100644 rust/kernel/iov_iter.rs create mode 100644 rust/kernel/irq.rs create mode 100644 rust/kernel/kasync.rs create mode 100644 rust/kernel/kasync/net.rs create mode 100644 rust/kernel/kunit.rs create mode 100644 rust/kernel/lib.rs create mode 100644 rust/kernel/linked_list.rs create mode 100644 rust/kernel/miscdev.rs create mode 100644 rust/kernel/mm.rs create mode 100644 rust/kernel/module_param.rs create mode 100644 rust/kernel/net.rs create mode 100644 rust/kernel/net/filter.rs create mode 100644 rust/kernel/of.rs create mode 100644 rust/kernel/pages.rs create mode 100644 rust/kernel/platform.rs create mode 100644 rust/kernel/power.rs create mode 100644 rust/kernel/prelude.rs create mode 100644 rust/kernel/print.rs create mode 100644 rust/kernel/random.rs create mode 100644 rust/kernel/raw_list.rs create mode 100644 rust/kernel/rbtree.rs create mode 100644 rust/kernel/revocable.rs create mode 100644 rust/kernel/security.rs create mode 100644 rust/kernel/static_assert.rs create mode 100644 rust/kernel/std_vendor.rs create mode 100644 rust/kernel/str.rs create mode 100644 rust/kernel/sync.rs create mode 100644 rust/kernel/sync/arc.rs create mode 100644 rust/kernel/sync/condvar.rs create mode 100644 rust/kernel/sync/guard.rs create mode 100644 rust/kernel/sync/locked_by.rs create mode 100644 rust/kernel/sync/mutex.rs create mode 100644 rust/kernel/sync/nowait.rs create mode 100644 rust/kernel/sync/revocable.rs create mode 100644 rust/kernel/sync/rwsem.rs create mode 100644 rust/kernel/sync/seqlock.rs create mode 100644 rust/kernel/sync/smutex.rs create mode 100644 rust/kernel/sync/spinlock.rs create mode 100644 rust/kernel/sysctl.rs create mode 100644 rust/kernel/task.rs create mode 100644 rust/kernel/types.rs create mode 100644 rust/kernel/user_ptr.rs create mode 100644 rust/macros/helpers.rs create mode 100644 rust/macros/lib.rs create mode 100644 rust/macros/module.rs create mode 100644 samples/rust/Kconfig create mode 100644 samples/rust/Makefile create mode 100644 samples/rust/hostprogs/.gitignore create mode 100644 samples/rust/hostprogs/Makefile create mode 100644 samples/rust/hostprogs/a.rs create mode 100644 samples/rust/hostprogs/b.rs create mode 100644 samples/rust/hostprogs/single.rs create mode 100644 samples/rust/rust_chrdev.rs create mode 100644 samples/rust/rust_minimal.rs create mode 100644 samples/rust/rust_miscdev.rs create mode 100644 samples/rust/rust_module_parameters.rs create mode 100644 samples/rust/rust_netfilter.rs create mode 100644 samples/rust/rust_platform.rs create mode 100644 samples/rust/rust_print.rs create mode 100644 samples/rust/rust_random.rs create mode 100644 samples/rust/rust_semaphore.rs create mode 100644 samples/rust/rust_semaphore_c.c create mode 100644 samples/rust/rust_stack_probing.rs create mode 100644 samples/rust/rust_sync.rs create mode 100755 scripts/generate_rust_analyzer.py create mode 100644 scripts/generate_rust_target.rs create mode 100755 scripts/is_rust_module.sh create mode 100644 scripts/rust-is-available-bindgen-libclang.h create mode 100755 scripts/rust-is-available.sh create mode 100755 scripts/rustdoc_test_builder.py create mode 100755 scripts/rustdoc_test_gen.py base-commit: 4b0986a3613c92f4ec1bdc7f60ec66fea135991f -- 2.36.1 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 55E2BC433EF for ; Mon, 23 May 2022 08:23:34 +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:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=5yJOT7HIX+8wJKFHeD4DerZ58wtklvzWvSsWPg56Jrg=; b=gBqXYik+MIlKWE csXasKkQNA4oLikdULvLQA6L+O7W3yVIC3xRnBtIUD50MeslBxUV1XNcILi3mHO7yhKKzObshC461 LvsYbzOvYZcSaWHyJtizv5rhrTchSQL2Srh7fyunn0hjXZWZxjqu8DfNnw+yeujxWAgDJd1NeozKn VvKHkUiJw830Vvufzf8P5/RSvQqPJ7usKhJwu4oIqEV4juqwJ3rOib9w6hDe4fAVk9/+u72+zsz0L La2ybyIivQaqRPna7/4MApE+H7ZVK4cgZ5S+tYFv+9ikKV+IHDo9AaU8i2q0mxUKTNaKj+7vbRgZe pjFQm54O6ypqk8H+6EaA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nt3LY-002P7Q-AJ; Mon, 23 May 2022 08:23:24 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nt2tG-002CKb-Pa; Mon, 23 May 2022 07:54:11 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=Content-Transfer-Encoding:Content-Type :MIME-Version:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To:Content-ID: Content-Description:In-Reply-To:References; bh=MpVxaXpbyAXFPf+IX3hptai2Fy5fWDXx1RisaJ5dqH8=; b=bHEG+TwyXzv6yrjX7fKi6Btws5 7kBiTp+t7nrIKcHfcA3W4x1nNecIRC4c+63PSwKjEzyGl1LOdosjMOA4jNMI6PRdTaS+sO/+nZPFu fXGWkedBfWyN4DCLu1LaM9cXO8aSB1w6FxCDL8mYU4T3Ai3M6ONVWqlyalvhkmDTdt6OeL7pxepNT vcly2YiVNLfpQpYFG9rlvEi6frqdgRs4EEd9OFEHW57a+T0A8XA5fPomWVFSIUPel8SfEH5zW4nhP RhF22T47rp7MyCeeq/VM4BhKCVC3wlZFqgKvdCP/Zag43YS5AyY6FIMRbdcREutKtyoAOLgUbm9GP 85ULz4oA==; Received: from dfw.source.kernel.org ([2604:1380:4641:c500::1]) by desiato.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nsxQM-000kbi-Nd; Mon, 23 May 2022 02:04:04 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 9A7C860FC1; Mon, 23 May 2022 02:02:52 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id EE23BC385AA; Mon, 23 May 2022 02:02:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1653271371; bh=ERwtvphja6U/1OhlgSfEhE5NLiXGu89oIBPKPKs7U8Q=; h=From:To:Cc:Subject:Date:From; b=YYroKg8JiImIEyhxQqxr9dwSw6Gvz1uWiyFTs6/Arz+D78M6TjE788dmc4o88D3+C yz9ghXro/LMf4BlMmFJJKGCcEc/yLsjL5rV7MjA4Hz2v3iDCB0BmwwzOTY9RPA9avG nk14pZu9MJJUMFRvuU+GioRXKmkkvpJxj6j1DzgNG7Id/s3k2fz4KstwpRDeUVGgec /lE4TfznmsR1NMdvfmW9HbRP82C815EbADCMxN60Za904DFLaE8qS4X2vIgDRInjq4 EmvQ0mzLy51/Oxa6eLaoEG5p/QnLNDGqO6RTYT5D24v7d8empSxpr6/M1HyKTSFtSS zUUdug5Vel7Kg== From: Miguel Ojeda To: Linus Torvalds , Greg Kroah-Hartman Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Jarkko Sakkinen , Miguel Ojeda , kunit-dev@googlegroups.com, linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-gpio@vger.kernel.org, linux-kbuild@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-perf-users@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, linux-um@lists.infradead.org, live-patching@vger.kernel.org Subject: [PATCH v7 00/25] Rust support Date: Mon, 23 May 2022 04:01:13 +0200 Message-Id: <20220523020209.11810-1-ojeda@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220523_030400_118771_2748CD85 X-CRM114-Status: GOOD ( 29.00 ) 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 UnVzdCBzdXBwb3J0CgpUaGlzIGlzIHRoZSBwYXRjaCBzZXJpZXMgKHY3KSB0byBhZGQgc3VwcG9y dCBmb3IgUnVzdCBhcyBhIHNlY29uZApsYW5ndWFnZSB0byB0aGUgTGludXgga2VybmVsLgoKSWYg eW91IGFyZSBpbnRlcmVzdGVkIGluIGZvbGxvd2luZyB0aGlzIGVmZm9ydCwgcGxlYXNlIGpvaW4g dXMgaW4KdGhlIG1haWxpbmcgbGlzdCBhdDoKCiAgICBydXN0LWZvci1saW51eEB2Z2VyLmtlcm5l bC5vcmcKCmFuZCB0YWtlIGEgbG9vayBhdCB0aGUgcHJvamVjdCBpdHNlbGYgYXQ6CgogICAgaHR0 cHM6Ly9naXRodWIuY29tL1J1c3QtZm9yLUxpbnV4CgpBcyB1c3VhbCwgc3BlY2lhbCB0aGFua3Mg Z28gdG8gSVNSRyAoSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2gKR3JvdXApIGFuZCBHb29nbGUg Zm9yIHRoZWlyIGZpbmFuY2lhbCBzdXBwb3J0IG9uIHRoaXMgZW5kZWF2b3IuCgpDaGVlcnMsCk1p Z3VlbAoKLS0KCiMgUnVzdCBzdXBwb3J0CgpUaGlzIGNvdmVyIGxldHRlciBleHBsYWlucyB0aGUg bWFqb3IgY2hhbmdlcyBhbmQgdXBkYXRlcyBkb25lIHNpbmNlCnRoZSBwcmV2aW91cyBvbmVzLiBG b3IgdGhvc2UsIHBsZWFzZSBzZWU6CgogICAgUkZDOiBodHRwczovL2xvcmUua2VybmVsLm9yZy9s a21sLzIwMjEwNDE0MTg0NjA0LjIzNDczLTEtb2plZGFAa2VybmVsLm9yZy8KICAgIHYxOiAgaHR0 cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGttbC8yMDIxMDcwNDIwMjc1Ni4yOTEwNy0xLW9qZWRhQGtl cm5lbC5vcmcvCiAgICB2MjogIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xrbWwvMjAyMTEyMDYx NDAzMTMuNTY1My0xLW9qZWRhQGtlcm5lbC5vcmcvCiAgICB2MzogIGh0dHBzOi8vbG9yZS5rZXJu ZWwub3JnL2xrbWwvMjAyMjAxMTcwNTMzNDkuNjgwNC0xLW9qZWRhQGtlcm5lbC5vcmcvCiAgICB2 NDogIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xrbWwvMjAyMjAyMTIxMzA0MTAuNjkwMS0xLW9q ZWRhQGtlcm5lbC5vcmcvCiAgICB2NTogIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xrbWwvMjAy MjAzMTcxODEwMzIuMTU0MzYtMS1vamVkYUBrZXJuZWwub3JnLwogICAgdjY6ICBodHRwczovL2xv cmUua2VybmVsLm9yZy9sa21sLzIwMjIwNTA3MDUyNDUxLjEyODkwLTEtb2plZGFAa2VybmVsLm9y Zy8KClRoaXMgaXMgYSBzbWFsbCByb3VuZCB0byBhZGRyZXNzIHRoZSBjb21tZW50cyBtYWRlIGlu IHY2IHBsdXMgYSBmZXcKcmVsYXRlZCBjaGFuZ2VzOgoKICAtIEFkZGVkIGAlcEFgIHRvIGBEb2N1 bWVudGF0aW9uL2NvcmUtYXBpL3ByaW50ay1mb3JtYXRzLnJzdGAuCgogIC0gQWRkZWQgYGNoZWNr cGF0Y2gucGxgIHBhdGNoIHRvIHNlYXJjaCBmb3IgYCVwQWAgaW4gQyBjb2RlLgoKICAtIEFkZGVk IGBjaGVja3BhdGNoLnBsYCBwYXRjaCB0byBlbmFibGUgbGFuZ3VhZ2UtaW5kZXBlbmRlbnQgY2hl Y2tzLgoKICAtIEFkZGVkIFVNTCAoeDg2XzY0KSBzdXBwb3J0LCBmb3IgS1VuaXQgKHRoYW5rcyBE YXZpZCBHb3chKS4KCiAgLSBBZGRlZCBpbmxpbmUgbGljZW5zaW5nIGluZm9ybWF0aW9uICgiQXBh Y2hlLTIuMCBPUiBNSVQiKSBpbgogICAgdGhlIGNvbW1pdCBtZXNzYWdlIG9mIHRoZSBgYWxsb2Ng IHBhdGNoLCBhcyB3ZWxsIGFzIGluCiAgICBgcnVzdC9hbGxvYy9SRUFETUUubWRgIGluIHRoZSBm b2xsb3dpbmcgcGF0Y2guCgogIC0gQWRkZWQgU1BEWCBsaWNlbnNlIGlkZW50aWZpZXJzIHRvIGBE b2N1bWVudGF0aW9uL3J1c3QvYC4KCiAgLSBSZWZvcm1hdHRlZCBgRG9jdW1lbnRhdGlvbi9ydXN0 L2FyY2gtc3VwcG9ydC5yc3RgIGxpc3QgdGFibGUKICAgIGludG8gc2ltcGxlIHRhYmxlLgoKICAt IFJlbW92ZWQgbG9nbyBmcm9tIGRvY3VtZW50YXRpb24gcGF0Y2g7IHVzZWQgTGludXggR0lGIG9u ZSBmb3IKICAgIHRoZSBSdXN0IGdlbmVyYXRlZCBkb2NzIGluIGl0cyBwbGFjZSAodG8gYmUgcmVw bGFjZWQgd2l0aAogICAgdGhlIFNWRyBvbmUgb25jZSBhdmFpbGFibGUpLgoKICAtIFVzZWQgYCJH UEwiYCBpbnN0ZWFkIG9mIGAiR1BMIHYyImAgZm9yIHRoZSBgbGljZW5zZWAgZmllbGQgb2YgdGhl CiAgICBgbW9kdWxlIWAgbWFjcm8uCgogIC0gTW92ZWQgYG1vZHVsZV9taXNjX2RldmljZSFgIG1h Y3JvIGluIGBzYW1wbGVzL3J1c3QvcnVzdF9yYW5kb20ucnNgCiAgICB0byB0aGUgdG9wIG9mIHRo ZSBmaWxlIGluIGBzYW1wbGVzL3J1c3QvYCBmb3IgY29uc2lzdGVuY3kuCgogIC0gU29ydGVkIGAj aW5jbHVkZWAgbGlzdHMgaW4gYHJ1c3Qva2VybmVsL2JpbmRpbmdzX2hlbHBlci5oYAogICAgYW5k IGBydXN0L2hlbHBlcnMuY2AuCgogIC0gRml4ZWQgc29tZSBFbmdsaXNoIHR5cG9zLgoKICAtIE1h ZGUgdGhlIHBhdGNoZXMgbW9yZSBgY2hlY2twYXRjaC5wbGAtY2xlYW4gb3ZlcmFsbC4KCiAgLSBQ aWNrZWQgdXAgUmV2aWV3ZWQtYnkgYW5kIEFja2VkLWJ5IHRhZ3MuCgoKIyMgUGF0Y2ggc2VyaWVz IHN0YXR1cwoKVGhlIFJ1c3Qgc3VwcG9ydCBpcyBzdGlsbCB0byBiZSBjb25zaWRlcmVkIGV4cGVy aW1lbnRhbC4gSG93ZXZlciwKc3VwcG9ydCBpcyBnb29kIGVub3VnaCB0aGF0IGtlcm5lbCBkZXZl bG9wZXJzIGNhbiBzdGFydCB3b3JraW5nIG9uIHRoZQpSdXN0IGFic3RyYWN0aW9ucyBmb3Igc3Vi c3lzdGVtcyBhbmQgd3JpdGUgZHJpdmVycyBhbmQgb3RoZXIgbW9kdWxlcy4KClRoZSBjdXJyZW50 IHNlcmllcyBoYXMganVzdCBhcnJpdmVkIGluIGBsaW51eC1uZXh0YCwgYXMgdXN1YWwuClNpbWls YXJseSwgdGhlIHByZXZpZXcgZG9jcyBmb3IgdGhpcyBzZXJpZXMgY2FuIGJlIHNlZW4gYXQ6Cgog ICAgaHR0cHM6Ly9ydXN0LWZvci1saW51eC5naXRodWIuaW8vZG9jcy9rZXJuZWwvCgpBcyB1c3Vh bCwgcGxlYXNlIHNlZSB0aGUgZm9sbG93aW5nIGxpbmsgZm9yIHRoZSBsaXZlIGxpc3Qgb2YgdW5z dGFibGUKUnVzdCBmZWF0dXJlcyB3ZSBhcmUgdXNpbmc6CgogICAgaHR0cHM6Ly9naXRodWIuY29t L1J1c3QtZm9yLUxpbnV4L2xpbnV4L2lzc3Vlcy8yCgoKIyMgQ29uZmVyZW5jZXMsIG1lZXRpbmdz IGFuZCBsaWFpc29ucwoKV2Ugd291bGQgbGlrZSB0byByZW1pbmQgZXZlcnlvbmUgYWJvdXQgdGhl IFJ1c3QgTUMgKG1pY3JvY29uZmVyZW5jZSkKb2YgTFBDIDIwMjIgKExpbnV4IFBsdW1iZXJzIENv bmZlcmVuY2UpOgoKICAgIGh0dHBzOi8vbHBjLmV2ZW50cy9ldmVudC8xNi9jb250cmlidXRpb25z LzExNTkvCgpUaGUgUnVzdCBNQyBpbnRlbmRzIHRvIGNvdmVyIHRhbGtzIGFuZCBkaXNjdXNzaW9u cyBvbiBib3RoIFJ1c3QgZm9yCkxpbnV4IGFzIHdlbGwgYXMgb3RoZXIgbm9uLWtlcm5lbCBSdXN0 IHRvcGljcy4gVGhlIENhbGwgZm9yIFByb3Bvc2FscwppcyBvcGVuIQoKCiMjIEFja25vd2xlZGdl bWVudHMKClRoZSBzaWduYXR1cmVzIGluIHRoZSBtYWluIGNvbW1pdHMgY29ycmVzcG9uZCB0byB0 aGUgcGVvcGxlIHRoYXQKd3JvdGUgY29kZSB0aGF0IGhhcyBlbmRlZCB1cCBpbiB0aGVtIGF0IHRo ZSBwcmVzZW50IHRpbWUuIEZvciBkZXRhaWxzCm9uIGNvbnRyaWJ1dGlvbnMgdG8gY29kZSBhbmQg ZGlzY3Vzc2lvbnMsIHBsZWFzZSBzZWUgb3VyIHJlcG9zaXRvcnk6CgogICAgaHR0cHM6Ly9naXRo dWIuY29tL1J1c3QtZm9yLUxpbnV4L2xpbnV4CgpIb3dldmVyLCB3ZSB3b3VsZCBsaWtlIHRvIGdp dmUgY3JlZGl0IHRvIGV2ZXJ5b25lIHRoYXQgaGFzIGNvbnRyaWJ1dGVkCmluIG9uZSB3YXkgb3Ig YW5vdGhlciB0byB0aGUgUnVzdCBmb3IgTGludXggcHJvamVjdC4gU2luY2UgdGhlCnByZXZpb3Vz IGNvdmVyIGxldHRlcjoKCiAgLSBLZWVzIENvb2sgZm9yIGhpcyByZXZpZXdzIG9mIHNvbWUgb2Yg dGhlIHY2IHBhdGNoZXMuCgogIC0gRGF2aWQgR293IGFuZCBCcmVuZGFuIEhpZ2dpbnMgZm9yIHRo ZWlyIHJldmlld3Mgb2YgdGhlIEtVbml0CiAgICBwcmVyZXF1aXNpdGUgcGF0Y2ggYW5kIHRoZWly IGZlZWRiYWNrLgoKICAtIEpvbmF0aGFuIENvcmJldCBhbmQgQWtpcmEgWW9rb3Nhd2EgZm9yIHRo ZWlyIHJldmlldyBvZiB0aGUKICAgIGRvY3VtZW50YXRpb24gcGF0Y2ggYW5kIGZlZWRiYWNrIG9u IGRvY3VtZW50YXRpb24gcnVsZXMuCgogIC0gR2FyeSBHdW8gZm9yIHdvcmtpbmcgb24gaW1wcm92 ZW1lbnRzIHRvIHRoZSBSdXN0IGNvbXBpbGVyIHRoYXQKICAgIGNvdWxkIG1ha2Ugb3VyIGBzdGF0 aWNfYXNzZXJ0IWAgbWFjcm8gYXBwbGljYWJsZSBpbiBtb3JlIGNhc2VzLgoKICAtIGJqb3JuMyBm b3Igd29ya2luZyBvbiBtYWtpbmcgYHJ1c3RjX3BhcnNlX2Zvcm1hdGAgY29tcGlsZSBvbgogICAg YSBzdGFibGUgUnVzdCBjb21waWxlciBzbyB0aGF0IGl0IG1heSBiZSB1c2VkIGJ5IGxpZ2h0d2Vp Z2h0CiAgICBmb3JtYXR0aW5nIHN5c3RlbXMgKGZvciBpbnN0YW5jZSwgYnkgdGhlIGtlcm5lbCku CgogIC0gQXMgdXN1YWwsIGJqb3JuMyBhbmQgR2FyeSBHdW8gZm9yIGFsbCB0aGUgaW5wdXQgb24g UnVzdCBjb21waWxlcgogICAgZGV0YWlscywgcmV2aWV3cyBhbmQgc3VnZ2VzdGlvbnMuCgogIC0g RXN0ZWJhbiBCbGFuYywgQXJ0aHVyIENvaGVuIGFuZCBNYXJ0aW4gU2NobWlkdCBmb3IgcmViYXNp bmcgdGhlaXIKICAgIFNQSSBhYnN0cmFjdGlvbiB3b3JrLgoKICAtIE1hY2llaiBGYWxrb3dza2kg Zm9yIGNvbnRpbnVpbmcgaGlzIHdvcmsgb24gdGhlIFNhbXN1bmcgRXh5bm9zCiAgICBUUk5HIGRy aXZlciBhbmQgdGhlIHJlcXVpcmVkIGFic3RyYWN0aW9ucyBhcm91bmQgaXQsIHN1Y2ggYXMKICAg IGFkZGluZyBgZGVsYXlgLCBga3RpbWVgIGFuZCBgaW9wb2xsYCBhYnN0cmFjdGlvbnMsIG5ldyBt ZXRob2RzCiAgICB0byBgcGxhdGZvcm06OkRldmljZWAgYW5kIHJ1bi10aW1lIHBvd2VyIG1hbmFn ZW1lbnQgYWJzdHJhY3Rpb25zLgoKICAtIFl1aGVuZyBTdSBmb3Igd29ya2luZyBvbiBjbGVhbmlu ZyB1cCB0aGUgYE1vZHVsZTo6aW5pdGAgaW50ZXJmYWNlLgoKICAtIFBlbmcgSGFvIGZvciB3b3Jr aW5nIG9uIHdyYXBwaW5nIGBtbV9zdHJ1Y3RgLgoKICAtIFNlcmdpbyBHb256w6FsZXogQ29sbGFk byBmb3IgY29udGludWluZyBoaXMgd29yayBvbiB0aGUgR2l0SHViIENJCiAgICBwcm9ibGVtIG1h dGNoZXJzLgoKICAtIFdlaSBMaXUgZm9yIHRha2luZyB0aGUgdGltZSB0byBhbnN3ZXIgcXVlc3Rp b25zIGZyb20gbmV3Y29tZXJzCiAgICBpbiBadWxpcC4KCiAgLSBQaGlsaXAgTGksIFl1amllIExp dSBldCBhbC4gZm9yIGNvbnRpbnVpbmcgdGhlaXIgd29yayBvbiBhZGRpbmcKICAgIFJ1c3Qgc3Vw cG9ydCB0byB0aGUgSW50ZWwgMERBWS9MS1Aga2VybmVsIHRlc3Qgcm9ib3QuCgogIC0gUGhpbGlw IEhlcnJvbiBhbmQgQXJ0aHVyIENvaGVuIChhbmQgaGlzIHN1cHBvcnRlcnMgT3BlbiBTb3VyY2UK ICAgIFNlY3VyaXR5IGFuZCBFbWJlY29zbSkgZXQgYWwuIGZvciB0aGVpciBvbmdvaW5nIHdvcmsg b24gR0NDIFJ1c3QuCgogIC0gQW50b25pIEJvdWNoZXIgKGFuZCBoaXMgc3VwcG9ydGVycykgZXQg YWwuIGZvciB0aGVpciBvbmdvaW5nCiAgICB3b3JrIG9uIGBydXN0Y19jb2RlZ2VuX2djY2AuCgog IC0gTWF0cyBMYXJzZW4sIE1hcmMgUG91bGhpw6hzIGV0IGFsLiBmb3IgdGhlaXIgb25nb2luZyB3 b3JrIG9uCiAgICBpbXByb3ZpbmcgUnVzdCBzdXBwb3J0IGluIENvbXBpbGVyIEV4cGxvcmVyLgoK ICAtIE1hbnkgZm9sa3MgdGhhdCBoYXZlIHJlcG9ydGVkIGlzc3VlcywgdGVzdGVkIHRoZSBwcm9q ZWN0LAogICAgaGVscGVkIHNwcmVhZCB0aGUgd29yZCwgam9pbmVkIGRpc2N1c3Npb25zIGFuZCBj b250cmlidXRlZCBpbgogICAgb3RoZXIgd2F5cyEKClBsZWFzZSBzZWUgYWxzbyB0aGUgYWNrbm93 bGVkZ2VtZW50cyBvbiB0aGUgcHJldmlvdXMgY292ZXIgbGV0dGVycy4KCgpCb3F1biBGZW5nICgx KToKICBrYWxsc3ltczogYXZvaWQgaGFyZGNvZGluZyB0aGUgYnVmZmVyIHNpemUKCkdhcnkgR3Vv ICgyKToKICBydXN0OiBhZGQgYGJ1aWxkX2Vycm9yYCBjcmF0ZQogIHZzcHJpbnRmOiBhZGQgbmV3 IGAlcEFgIGZvcm1hdCBzcGVjaWZpZXIKCk1pZ3VlbCBPamVkYSAoMTgpOgogIGthbGxzeW1zOiBz dXBwb3J0ICJiaWciIGtlcm5lbCBzeW1ib2xzCiAga2FsbHN5bXM6IGluY3JlYXNlIG1heGltdW0g a2VybmVsIHN5bWJvbCBsZW5ndGggdG8gNTEyCiAga3VuaXQ6IHRha2UgYGt1bml0X2Fzc2VydGAg YXMgYGNvbnN0YAogIHJ1c3Q6IGFkZCBDIGhlbHBlcnMKICBydXN0OiBhZGQgYGNvbXBpbGVyX2J1 aWx0aW5zYCBjcmF0ZQogIHJ1c3Q6IGltcG9ydCB1cHN0cmVhbSBgYWxsb2NgIGNyYXRlCiAgcnVz dDogYWRhcHQgYGFsbG9jYCBjcmF0ZSB0byB0aGUga2VybmVsCiAgcnVzdDogYWRkIGBtYWNyb3Ng IGNyYXRlCiAgcnVzdDogZXhwb3J0IGdlbmVyYXRlZCBzeW1ib2xzCiAgc2NyaXB0czogY2hlY2tw YXRjaDogZGlhZ25vc2UgdXNlcyBvZiBgJXBBYCBpbiB0aGUgQyBzaWRlCiAgc2NyaXB0czogY2hl Y2twYXRjaDogZW5hYmxlIGxhbmd1YWdlLWluZGVwZW5kZW50IGNoZWNrcyBmb3IgUnVzdAogIHNj cmlwdHM6IGFkZCBgcnVzdGRvY190ZXN0X3tidWlsZGVyLGdlbn0ucHlgIHNjcmlwdHMKICBzY3Jp cHRzOiBhZGQgYGdlbmVyYXRlX3J1c3RfYW5hbHl6ZXIucHlgIHNjcmlwdHMKICBzY3JpcHRzOiBk ZWNvZGVfc3RhY2t0cmFjZTogZGVtYW5nbGUgUnVzdCBzeW1ib2xzCiAgZG9jczogYWRkIFJ1c3Qg ZG9jdW1lbnRhdGlvbgogIEtidWlsZDogYWRkIFJ1c3Qgc3VwcG9ydAogIHNhbXBsZXM6IGFkZCBS dXN0IGV4YW1wbGVzCiAgTUFJTlRBSU5FUlM6IFJ1c3QKCldlZHNvbiBBbG1laWRhIEZpbGhvICg0 KToKICBydXN0OiBhZGQgYGtlcm5lbGAgY3JhdGUncyBgc3luY2AgbW9kdWxlCiAgcnVzdDogYWRk IGBrZXJuZWxgIGNyYXRlCiAgW1JGQ10gZHJpdmVyczogZ3BpbzogUHJpbWVDZWxsIFBMMDYxIGlu IFJ1c3QKICBbUkZDXSBkcml2ZXJzOiBhbmRyb2lkOiBCaW5kZXIgSVBDIGluIFJ1c3QKCiAuZ2l0 aWdub3JlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDUgKwogLnJ1c3Rm bXQudG9tbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEyICsKIERvY3VtZW50 YXRpb24vY29yZS1hcGkvcHJpbnRrLWZvcm1hdHMucnN0ICAgIHwgICAxMCArCiBEb2N1bWVudGF0 aW9uL2RvYy1ndWlkZS9rZXJuZWwtZG9jLnJzdCAgICAgICB8ICAgIDMgKwogRG9jdW1lbnRhdGlv bi9pbmRleC5yc3QgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIERvY3VtZW50YXRpb24v a2J1aWxkL2tidWlsZC5yc3QgICAgICAgICAgICAgIHwgICAxNyArCiBEb2N1bWVudGF0aW9uL2ti dWlsZC9tYWtlZmlsZXMucnN0ICAgICAgICAgICB8ICAgNTAgKy0KIERvY3VtZW50YXRpb24vcHJv Y2Vzcy9jaGFuZ2VzLnJzdCAgICAgICAgICAgIHwgICA0MSArCiBEb2N1bWVudGF0aW9uL3J1c3Qv YXJjaC1zdXBwb3J0LnJzdCAgICAgICAgICB8ICAgMjUgKwogRG9jdW1lbnRhdGlvbi9ydXN0L2Nv ZGluZy1ndWlkZWxpbmVzLnJzdCAgICAgfCAgMjE2ICsrCiBEb2N1bWVudGF0aW9uL3J1c3QvZ2Vu ZXJhbC1pbmZvcm1hdGlvbi5yc3QgICB8ICAgNzkgKwogRG9jdW1lbnRhdGlvbi9ydXN0L2luZGV4 LnJzdCAgICAgICAgICAgICAgICAgfCAgIDIyICsKIERvY3VtZW50YXRpb24vcnVzdC9xdWljay1z dGFydC5yc3QgICAgICAgICAgIHwgIDIzMiArKwogTUFJTlRBSU5FUlMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDE1ICsKIE1ha2VmaWxlICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgIDE3NSArLQogYXJjaC9LY29uZmlnICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgICA2ICsKIGFyY2gvYXJtL0tjb25maWcgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgMSArCiBhcmNoL2FybTY0L0tjb25maWcgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgIDEgKwogYXJjaC9wb3dlcnBjL0tjb25maWcgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAxICsKIGFyY2gvcmlzY3YvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgMSArCiBhcmNoL3Jpc2N2L01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgIDUgKwogYXJjaC91bS9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAxICsKIGFyY2gveDg2L0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgMSArCiBhcmNoL3g4Ni9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgMTQgKwogZHJpdmVycy9hbmRyb2lkL0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgfCAg ICA2ICsKIGRyaXZlcnMvYW5kcm9pZC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgIHwgICAg MiArCiBkcml2ZXJzL2FuZHJvaWQvYWxsb2NhdGlvbi5ycyAgICAgICAgICAgICAgICB8ICAyNjYg KysKIGRyaXZlcnMvYW5kcm9pZC9jb250ZXh0LnJzICAgICAgICAgICAgICAgICAgIHwgICA4MCAr CiBkcml2ZXJzL2FuZHJvaWQvZGVmcy5ycyAgICAgICAgICAgICAgICAgICAgICB8ICAgOTkgKwog ZHJpdmVycy9hbmRyb2lkL25vZGUucnMgICAgICAgICAgICAgICAgICAgICAgfCAgNDc2ICsrKwog ZHJpdmVycy9hbmRyb2lkL3Byb2Nlc3MucnMgICAgICAgICAgICAgICAgICAgfCAgOTYwICsrKysr CiBkcml2ZXJzL2FuZHJvaWQvcmFuZ2VfYWxsb2MucnMgICAgICAgICAgICAgICB8ICAxODkgKwog ZHJpdmVycy9hbmRyb2lkL3J1c3RfYmluZGVyLnJzICAgICAgICAgICAgICAgfCAgMTExICsKIGRy aXZlcnMvYW5kcm9pZC90aHJlYWQucnMgICAgICAgICAgICAgICAgICAgIHwgIDg3MCArKysrKwog ZHJpdmVycy9hbmRyb2lkL3RyYW5zYWN0aW9uLnJzICAgICAgICAgICAgICAgfCAgMzI2ICsrCiBk cml2ZXJzL2dwaW8vS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDggKwogZHJp dmVycy9ncGlvL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIGRyaXZl cnMvZ3Bpby9ncGlvX3BsMDYxX3J1c3QucnMgICAgICAgICAgICAgIHwgIDM3MCArKwogaW5jbHVk ZS9rdW5pdC90ZXN0LmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBpbmNsdWRl L2xpbnV4L2thbGxzeW1zLmggICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIGluY2x1ZGUv bGludXgvc3BpbmxvY2suaCAgICAgICAgICAgICAgICAgICAgIHwgICAyNSArLQogaW5jbHVkZS91 YXBpL2xpbnV4L2FuZHJvaWQvYmluZGVyLmggICAgICAgICAgfCAgIDI4ICstCiBpbml0L0tjb25m aWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNDUgKy0KIGtlcm5lbC9rYWxs c3ltcy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyNiArLQoga2VybmVsL2xpdmVw YXRjaC9jb3JlLmMgICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBsaWIvS2NvbmZpZy5k ZWJ1ZyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNTUgKwogbGliL2t1bml0L3Rlc3Qu YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBsaWIvdnNwcmludGYuYyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTMgKwogcnVzdC8uZ2l0aWdub3JlICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICsKIHJ1c3QvTWFrZWZpbGUgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDM5OCArKysKIHJ1c3QvYWxsb2MvUkVBRE1FLm1k ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzMyArCiBydXN0L2FsbG9jL2FsbG9jLnJzICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICA0MzggKysrCiBydXN0L2FsbG9jL2JvcnJvdy5ycyAg ICAgICAgICAgICAgICAgICAgICAgICB8ICA0OTggKysrCiBydXN0L2FsbG9jL2JveGVkLnJzICAg ICAgICAgICAgICAgICAgICAgICAgICB8IDIwMDcgKysrKysrKysrKysKIHJ1c3QvYWxsb2MvY29s bGVjdGlvbnMvbW9kLnJzICAgICAgICAgICAgICAgIHwgIDE1NiArCiBydXN0L2FsbG9jL2ZtdC5y cyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2MDEgKysrKwogcnVzdC9hbGxvYy9saWIu cnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjI2ICsrCiBydXN0L2FsbG9jL21hY3Jv cy5ycyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMjcgKwogcnVzdC9hbGxvYy9yYXdfdmVj LnJzICAgICAgICAgICAgICAgICAgICAgICAgfCAgNTY3ICsrKwogcnVzdC9hbGxvYy9zbGljZS5y cyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMjgyICsrKysrKysKIHJ1c3QvYWxsb2Mvc3Ry LnJzICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYzMiArKysrCiBydXN0L2FsbG9jL3N0 cmluZy5ycyAgICAgICAgICAgICAgICAgICAgICAgICB8IDI4NjkgKysrKysrKysrKysrKysrCiBy dXN0L2FsbG9jL3ZlYy9kcmFpbi5ycyAgICAgICAgICAgICAgICAgICAgICB8ICAxODYgKwogcnVz dC9hbGxvYy92ZWMvZHJhaW5fZmlsdGVyLnJzICAgICAgICAgICAgICAgfCAgMTQ1ICsKIHJ1c3Qv YWxsb2MvdmVjL2ludG9faXRlci5ycyAgICAgICAgICAgICAgICAgIHwgIDM1NiArKwogcnVzdC9h bGxvYy92ZWMvaXNfemVyby5ycyAgICAgICAgICAgICAgICAgICAgfCAgMTA2ICsKIHJ1c3QvYWxs b2MvdmVjL21vZC5ycyAgICAgICAgICAgICAgICAgICAgICAgIHwgMzM2MiArKysrKysrKysrKysr KysrKysKIHJ1c3QvYWxsb2MvdmVjL3BhcnRpYWxfZXEucnMgICAgICAgICAgICAgICAgIHwgICA0 OSArCiBydXN0L2FsbG9jL3ZlYy9zZXRfbGVuX29uX2Ryb3AucnMgICAgICAgICAgICB8ICAgMzAg KwogcnVzdC9hbGxvYy92ZWMvc3BlY19leHRlbmQucnMgICAgICAgICAgICAgICAgfCAgMTc0ICsK IHJ1c3QvYmluZGdlbl9wYXJhbWV0ZXJzICAgICAgICAgICAgICAgICAgICAgIHwgICAxNyArCiBy dXN0L2J1aWxkX2Vycm9yLnJzICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjkgKwogcnVz dC9jb21waWxlcl9idWlsdGlucy5ycyAgICAgICAgICAgICAgICAgICAgfCAgIDU3ICsKIHJ1c3Qv ZXhwb3J0cy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyMCArCiBydXN0L2hl bHBlcnMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2NDQgKysrKwogcnVzdC9r ZXJuZWwvYWxsb2NhdG9yLnJzICAgICAgICAgICAgICAgICAgICAgfCAgIDY1ICsKIHJ1c3Qva2Vy bmVsL2FtYmEucnMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI1NyArKwogcnVzdC9rZXJu ZWwvYmluZGluZ3MucnMgICAgICAgICAgICAgICAgICAgICAgfCAgIDQ3ICsKIHJ1c3Qva2VybmVs L2JpbmRpbmdzX2hlbHBlci5oICAgICAgICAgICAgICAgIHwgICA0NiArCiBydXN0L2tlcm5lbC9i dWlsZF9hc3NlcnQucnMgICAgICAgICAgICAgICAgICB8ICAgODIgKwogcnVzdC9rZXJuZWwvY190 eXBlcy5ycyAgICAgICAgICAgICAgICAgICAgICAgfCAgMTE5ICsKIHJ1c3Qva2VybmVsL2NocmRl di5ycyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIwNyArKwogcnVzdC9rZXJuZWwvY2xrLnJz ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDc5ICsKIHJ1c3Qva2VybmVsL2NyZWQucnMg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0NiArCiBydXN0L2tlcm5lbC9kZXZpY2UucnMg ICAgICAgICAgICAgICAgICAgICAgICB8ICA1NDYgKysrCiBydXN0L2tlcm5lbC9kcml2ZXIucnMg ICAgICAgICAgICAgICAgICAgICAgICB8ICA0NDIgKysrCiBydXN0L2tlcm5lbC9lcnJvci5ycyAg ICAgICAgICAgICAgICAgICAgICAgICB8ICA1NjUgKysrCiBydXN0L2tlcm5lbC9maWxlLnJzICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICA4NjAgKysrKysKIHJ1c3Qva2VybmVsL2dwaW8ucnMg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQ3OCArKysKIHJ1c3Qva2VybmVsL2h3cm5nLnJz ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI0MiArKwogcnVzdC9rZXJuZWwvaW9fYnVmZmVy LnJzICAgICAgICAgICAgICAgICAgICAgfCAgMTUzICsKIHJ1c3Qva2VybmVsL2lvX21lbS5ycyAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDI3NSArKwogcnVzdC9rZXJuZWwvaW92X2l0ZXIucnMg ICAgICAgICAgICAgICAgICAgICAgfCAgIDgxICsKIHJ1c3Qva2VybmVsL2lycS5ycyAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDQxMSArKysKIHJ1c3Qva2VybmVsL2thc3luYy5ycyAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgNiArCiBydXN0L2tlcm5lbC9rYXN5bmMvbmV0LnJzICAg ICAgICAgICAgICAgICAgICB8ICAzMjIgKysKIHJ1c3Qva2VybmVsL2t1bml0LnJzICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICA5MSArCiBydXN0L2tlcm5lbC9saWIucnMgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAyNjEgKysKIHJ1c3Qva2VybmVsL2xpbmtlZF9saXN0LnJzICAgICAg ICAgICAgICAgICAgIHwgIDI0NyArKwogcnVzdC9rZXJuZWwvbWlzY2Rldi5ycyAgICAgICAgICAg ICAgICAgICAgICAgfCAgMjkxICsrCiBydXN0L2tlcm5lbC9tbS5ycyAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAxNDkgKwogcnVzdC9rZXJuZWwvbW9kdWxlX3BhcmFtLnJzICAgICAgICAg ICAgICAgICAgfCAgNDk4ICsrKwogcnVzdC9rZXJuZWwvbmV0LnJzICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgMzkyICsrCiBydXN0L2tlcm5lbC9uZXQvZmlsdGVyLnJzICAgICAgICAgICAg ICAgICAgICB8ICA0NDcgKysrCiBydXN0L2tlcm5lbC9vZi5ycyAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgNjMgKwogcnVzdC9rZXJuZWwvcGFnZXMucnMgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgMTQ0ICsKIHJ1c3Qva2VybmVsL3BsYXRmb3JtLnJzICAgICAgICAgICAgICAgICAg ICAgIHwgIDIyMyArKwogcnVzdC9rZXJuZWwvcG93ZXIucnMgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgMTE4ICsKIHJ1c3Qva2VybmVsL3ByZWx1ZGUucnMgICAgICAgICAgICAgICAgICAgICAg IHwgICAzNiArCiBydXN0L2tlcm5lbC9wcmludC5ycyAgICAgICAgICAgICAgICAgICAgICAgICB8 ICA0MDUgKysrCiBydXN0L2tlcm5lbC9yYW5kb20ucnMgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgNDIgKwogcnVzdC9rZXJuZWwvcmF3X2xpc3QucnMgICAgICAgICAgICAgICAgICAgICAgfCAg MzYxICsrCiBydXN0L2tlcm5lbC9yYnRyZWUucnMgICAgICAgICAgICAgICAgICAgICAgICB8ICA1 NjMgKysrCiBydXN0L2tlcm5lbC9yZXZvY2FibGUucnMgICAgICAgICAgICAgICAgICAgICB8ICAx NjEgKwogcnVzdC9rZXJuZWwvc2VjdXJpdHkucnMgICAgICAgICAgICAgICAgICAgICAgfCAgIDM4 ICsKIHJ1c3Qva2VybmVsL3N0YXRpY19hc3NlcnQucnMgICAgICAgICAgICAgICAgIHwgICAzOCAr CiBydXN0L2tlcm5lbC9zdGRfdmVuZG9yLnJzICAgICAgICAgICAgICAgICAgICB8ICAxNjAgKwog cnVzdC9rZXJuZWwvc3RyLnJzICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNTk3ICsrKysK IHJ1c3Qva2VybmVsL3N5bmMucnMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE2MSArCiBy dXN0L2tlcm5lbC9zeW5jL2FyYy5ycyAgICAgICAgICAgICAgICAgICAgICB8ICA1MDMgKysrCiBy dXN0L2tlcm5lbC9zeW5jL2NvbmR2YXIucnMgICAgICAgICAgICAgICAgICB8ICAxMzggKwogcnVz dC9rZXJuZWwvc3luYy9ndWFyZC5ycyAgICAgICAgICAgICAgICAgICAgfCAgMTY5ICsKIHJ1c3Qv a2VybmVsL3N5bmMvbG9ja2VkX2J5LnJzICAgICAgICAgICAgICAgIHwgIDExMSArCiBydXN0L2tl cm5lbC9zeW5jL211dGV4LnJzICAgICAgICAgICAgICAgICAgICB8ICAxNTMgKwogcnVzdC9rZXJu ZWwvc3luYy9ub3dhaXQucnMgICAgICAgICAgICAgICAgICAgfCAgMTg4ICsKIHJ1c3Qva2VybmVs L3N5bmMvcmV2b2NhYmxlLnJzICAgICAgICAgICAgICAgIHwgIDI1MCArKwogcnVzdC9rZXJuZWwv c3luYy9yd3NlbS5ycyAgICAgICAgICAgICAgICAgICAgfCAgMTk3ICsKIHJ1c3Qva2VybmVsL3N5 bmMvc2VxbG9jay5ycyAgICAgICAgICAgICAgICAgIHwgIDIwMiArKwogcnVzdC9rZXJuZWwvc3lu Yy9zbXV0ZXgucnMgICAgICAgICAgICAgICAgICAgfCAgMjk1ICsrCiBydXN0L2tlcm5lbC9zeW5j L3NwaW5sb2NrLnJzICAgICAgICAgICAgICAgICB8ICAzNjAgKysKIHJ1c3Qva2VybmVsL3N5c2N0 bC5ycyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE5OSArKwogcnVzdC9rZXJuZWwvdGFzay5y cyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTc1ICsKIHJ1c3Qva2VybmVsL3R5cGVzLnJz ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDY3OSArKysrCiBydXN0L2tlcm5lbC91c2VyX3B0 ci5ycyAgICAgICAgICAgICAgICAgICAgICB8ICAxNzUgKwogcnVzdC9tYWNyb3MvaGVscGVycy5y cyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDc5ICsKIHJ1c3QvbWFjcm9zL2xpYi5ycyAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICA5NCArCiBydXN0L21hY3Jvcy9tb2R1bGUucnMgICAg ICAgICAgICAgICAgICAgICAgICB8ICA2MzEgKysrKwogc2FtcGxlcy9LY29uZmlnICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIHNhbXBsZXMvTWFrZWZpbGUgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBzYW1wbGVzL3J1c3QvS2NvbmZpZyAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAxNDAgKwogc2FtcGxlcy9ydXN0L01ha2VmaWxlICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDE2ICsKIHNhbXBsZXMvcnVzdC9ob3N0cHJvZ3MvLmdpdGlnbm9y ZSAgICAgICAgICAgIHwgICAgMyArCiBzYW1wbGVzL3J1c3QvaG9zdHByb2dzL01ha2VmaWxlICAg ICAgICAgICAgICB8ICAgIDUgKwogc2FtcGxlcy9ydXN0L2hvc3Rwcm9ncy9hLnJzICAgICAgICAg ICAgICAgICAgfCAgICA3ICsKIHNhbXBsZXMvcnVzdC9ob3N0cHJvZ3MvYi5ycyAgICAgICAgICAg ICAgICAgIHwgICAgNSArCiBzYW1wbGVzL3J1c3QvaG9zdHByb2dzL3NpbmdsZS5ycyAgICAgICAg ICAgICB8ICAgMTIgKwogc2FtcGxlcy9ydXN0L3J1c3RfY2hyZGV2LnJzICAgICAgICAgICAgICAg ICAgfCAgIDUwICsKIHNhbXBsZXMvcnVzdC9ydXN0X21pbmltYWwucnMgICAgICAgICAgICAgICAg IHwgICAzNSArCiBzYW1wbGVzL3J1c3QvcnVzdF9taXNjZGV2LnJzICAgICAgICAgICAgICAgICB8 ICAxNDMgKwogc2FtcGxlcy9ydXN0L3J1c3RfbW9kdWxlX3BhcmFtZXRlcnMucnMgICAgICAgfCAg IDY5ICsKIHNhbXBsZXMvcnVzdC9ydXN0X25ldGZpbHRlci5ycyAgICAgICAgICAgICAgIHwgICA1 NCArCiBzYW1wbGVzL3J1c3QvcnVzdF9wbGF0Zm9ybS5ycyAgICAgICAgICAgICAgICB8ICAgMjIg Kwogc2FtcGxlcy9ydXN0L3J1c3RfcHJpbnQucnMgICAgICAgICAgICAgICAgICAgfCAgIDU0ICsK IHNhbXBsZXMvcnVzdC9ydXN0X3JhbmRvbS5ycyAgICAgICAgICAgICAgICAgIHwgICA2MCArCiBz YW1wbGVzL3J1c3QvcnVzdF9zZW1hcGhvcmUucnMgICAgICAgICAgICAgICB8ICAxNzEgKwogc2Ft cGxlcy9ydXN0L3J1c3Rfc2VtYXBob3JlX2MuYyAgICAgICAgICAgICAgfCAgMjEyICsrCiBzYW1w bGVzL3J1c3QvcnVzdF9zdGFja19wcm9iaW5nLnJzICAgICAgICAgICB8ICAgMzYgKwogc2FtcGxl cy9ydXN0L3J1c3Rfc3luYy5ycyAgICAgICAgICAgICAgICAgICAgfCAgIDkzICsKIHNjcmlwdHMv LmdpdGlnbm9yZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBzY3JpcHRzL0tj b25maWcuaW5jbHVkZSAgICAgICAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIHNjcmlwdHMvTWFr ZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMyArCiBzY3JpcHRzL01ha2Vm aWxlLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICB8ICAgNjAgKwogc2NyaXB0cy9NYWtlZmls ZS5kZWJ1ZyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICsKIHNjcmlwdHMvTWFrZWZpbGUu aG9zdCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzNCArLQogc2NyaXB0cy9NYWtlZmlsZS5s aWIgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEyICsKIHNjcmlwdHMvTWFrZWZpbGUubW9k ZmluYWwgICAgICAgICAgICAgICAgICAgIHwgICAgOCArLQogc2NyaXB0cy9jYy12ZXJzaW9uLnNo ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEyICstCiBzY3JpcHRzL2NoZWNrcGF0Y2gucGwg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDggKy0KIHNjcmlwdHMvZGVjb2RlX3N0YWNrdHJh Y2Uuc2ggICAgICAgICAgICAgICAgIHwgICAxNCArCiBzY3JpcHRzL2dlbmVyYXRlX3J1c3RfYW5h bHl6ZXIucHkgICAgICAgICAgICB8ICAxMzQgKwogc2NyaXB0cy9nZW5lcmF0ZV9ydXN0X3Rhcmdl dC5ycyAgICAgICAgICAgICAgfCAgMjI3ICsrCiBzY3JpcHRzL2lzX3J1c3RfbW9kdWxlLnNoICAg ICAgICAgICAgICAgICAgICB8ICAgMTMgKwogc2NyaXB0cy9rYWxsc3ltcy5jICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDQ3ICstCiBzY3JpcHRzL2tjb25maWcvY29uZmRhdGEuYyAgICAg ICAgICAgICAgICAgICB8ICAgNzUgKwogc2NyaXB0cy9taW4tdG9vbC12ZXJzaW9uLnNoICAgICAg ICAgICAgICAgICAgfCAgICA2ICsKIHNjcmlwdHMvcnVzdC1pcy1hdmFpbGFibGUtYmluZGdlbi1s aWJjbGFuZy5oIHwgICAgMiArCiBzY3JpcHRzL3J1c3QtaXMtYXZhaWxhYmxlLnNoICAgICAgICAg ICAgICAgICB8ICAxNTggKwogc2NyaXB0cy9ydXN0ZG9jX3Rlc3RfYnVpbGRlci5weSAgICAgICAg ICAgICAgfCAgIDU5ICsKIHNjcmlwdHMvcnVzdGRvY190ZXN0X2dlbi5weSAgICAgICAgICAgICAg ICAgIHwgIDE2NCArCiB0b29scy9pbmNsdWRlL2xpbnV4L2thbGxzeW1zLmggICAgICAgICAgICAg ICB8ICAgIDIgKy0KIHRvb2xzL2xpYi9wZXJmL2luY2x1ZGUvcGVyZi9ldmVudC5oICAgICAgICAg IHwgICAgMiArLQogdG9vbHMvbGliL3N5bWJvbC9rYWxsc3ltcy5oICAgICAgICAgICAgICAgICAg fCAgICAyICstCiAxODIgZmlsZXMgY2hhbmdlZCwgMzc2MTQgaW5zZXJ0aW9ucygrKSwgNjkgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgLnJ1c3RmbXQudG9tbAogY3JlYXRlIG1vZGUg MTAwNjQ0IERvY3VtZW50YXRpb24vcnVzdC9hcmNoLXN1cHBvcnQucnN0CiBjcmVhdGUgbW9kZSAx MDA2NDQgRG9jdW1lbnRhdGlvbi9ydXN0L2NvZGluZy1ndWlkZWxpbmVzLnJzdAogY3JlYXRlIG1v ZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vcnVzdC9nZW5lcmFsLWluZm9ybWF0aW9uLnJzdAogY3Jl YXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vcnVzdC9pbmRleC5yc3QKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBEb2N1bWVudGF0aW9uL3J1c3QvcXVpY2stc3RhcnQucnN0CiBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9hbmRyb2lkL2FsbG9jYXRpb24ucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2FuZHJvaWQvY29udGV4dC5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvYW5k cm9pZC9kZWZzLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9hbmRyb2lkL25vZGUucnMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2FuZHJvaWQvcHJvY2Vzcy5ycwogY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvYW5kcm9pZC9yYW5nZV9hbGxvYy5ycwogY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvYW5kcm9pZC9ydXN0X2JpbmRlci5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvYW5kcm9pZC90aHJlYWQucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2FuZHJv aWQvdHJhbnNhY3Rpb24ucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwaW8vZ3Bpb19w bDA2MV9ydXN0LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC8uZ2l0aWdub3JlCiBjcmVhdGUg bW9kZSAxMDA2NDQgcnVzdC9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvYWxsb2Mv UkVBRE1FLm1kCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9hbGxvYy9hbGxvYy5ycwogY3JlYXRl IG1vZGUgMTAwNjQ0IHJ1c3QvYWxsb2MvYm9ycm93LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVz dC9hbGxvYy9ib3hlZC5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvYWxsb2MvY29sbGVjdGlv bnMvbW9kLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9hbGxvYy9mbXQucnMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBydXN0L2FsbG9jL2xpYi5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvYWxs b2MvbWFjcm9zLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9hbGxvYy9yYXdfdmVjLnJzCiBj cmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9hbGxvYy9zbGljZS5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0 IHJ1c3QvYWxsb2Mvc3RyLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9hbGxvYy9zdHJpbmcu cnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2FsbG9jL3ZlYy9kcmFpbi5ycwogY3JlYXRlIG1v ZGUgMTAwNjQ0IHJ1c3QvYWxsb2MvdmVjL2RyYWluX2ZpbHRlci5ycwogY3JlYXRlIG1vZGUgMTAw NjQ0IHJ1c3QvYWxsb2MvdmVjL2ludG9faXRlci5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qv YWxsb2MvdmVjL2lzX3plcm8ucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2FsbG9jL3ZlYy9t b2QucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2FsbG9jL3ZlYy9wYXJ0aWFsX2VxLnJzCiBj cmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9hbGxvYy92ZWMvc2V0X2xlbl9vbl9kcm9wLnJzCiBjcmVh dGUgbW9kZSAxMDA2NDQgcnVzdC9hbGxvYy92ZWMvc3BlY19leHRlbmQucnMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBydXN0L2JpbmRnZW5fcGFyYW1ldGVycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qv YnVpbGRfZXJyb3IucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2NvbXBpbGVyX2J1aWx0aW5z LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9leHBvcnRzLmMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBydXN0L2hlbHBlcnMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL2FsbG9jYXRv ci5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL2FtYmEucnMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBydXN0L2tlcm5lbC9iaW5kaW5ncy5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qv a2VybmVsL2JpbmRpbmdzX2hlbHBlci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwv YnVpbGRfYXNzZXJ0LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvY190eXBlcy5y cwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL2NocmRldi5ycwogY3JlYXRlIG1vZGUg MTAwNjQ0IHJ1c3Qva2VybmVsL2Nsay5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVs L2NyZWQucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9kZXZpY2UucnMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9kcml2ZXIucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBy dXN0L2tlcm5lbC9lcnJvci5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL2ZpbGUu cnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9ncGlvLnJzCiBjcmVhdGUgbW9kZSAx MDA2NDQgcnVzdC9rZXJuZWwvaHdybmcucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5l bC9pb19idWZmZXIucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9pb19tZW0ucnMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9pb3ZfaXRlci5ycwogY3JlYXRlIG1vZGUg MTAwNjQ0IHJ1c3Qva2VybmVsL2lycS5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVs L2thc3luYy5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL2thc3luYy9uZXQucnMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9rdW5pdC5ycwogY3JlYXRlIG1vZGUgMTAw NjQ0IHJ1c3Qva2VybmVsL2xpYi5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL2xp bmtlZF9saXN0LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvbWlzY2Rldi5ycwog Y3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL21tLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQg cnVzdC9rZXJuZWwvbW9kdWxlX3BhcmFtLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJu ZWwvbmV0LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvbmV0L2ZpbHRlci5ycwog Y3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL29mLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQg cnVzdC9rZXJuZWwvcGFnZXMucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9wbGF0 Zm9ybS5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL3Bvd2VyLnJzCiBjcmVhdGUg bW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvcHJlbHVkZS5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1 c3Qva2VybmVsL3ByaW50LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvcmFuZG9t LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvcmF3X2xpc3QucnMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBydXN0L2tlcm5lbC9yYnRyZWUucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0 L2tlcm5lbC9yZXZvY2FibGUucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9zZWN1 cml0eS5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL3N0YXRpY19hc3NlcnQucnMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9zdGRfdmVuZG9yLnJzCiBjcmVhdGUgbW9k ZSAxMDA2NDQgcnVzdC9rZXJuZWwvc3RyLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJu ZWwvc3luYy5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL3N5bmMvYXJjLnJzCiBj cmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvc3luYy9jb25kdmFyLnJzCiBjcmVhdGUgbW9k ZSAxMDA2NDQgcnVzdC9rZXJuZWwvc3luYy9ndWFyZC5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1 c3Qva2VybmVsL3N5bmMvbG9ja2VkX2J5LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJu ZWwvc3luYy9tdXRleC5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL3N5bmMvbm93 YWl0LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvc3luYy9yZXZvY2FibGUucnMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9zeW5jL3J3c2VtLnJzCiBjcmVhdGUgbW9k ZSAxMDA2NDQgcnVzdC9rZXJuZWwvc3luYy9zZXFsb2NrLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQg cnVzdC9rZXJuZWwvc3luYy9zbXV0ZXgucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5l bC9zeW5jL3NwaW5sb2NrLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvc3lzY3Rs LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvdGFzay5ycwogY3JlYXRlIG1vZGUg MTAwNjQ0IHJ1c3Qva2VybmVsL3R5cGVzLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJu ZWwvdXNlcl9wdHIucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L21hY3Jvcy9oZWxwZXJzLnJz CiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9tYWNyb3MvbGliLnJzCiBjcmVhdGUgbW9kZSAxMDA2 NDQgcnVzdC9tYWNyb3MvbW9kdWxlLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgc2FtcGxlcy9ydXN0 L0tjb25maWcKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzYW1wbGVzL3J1c3QvTWFrZWZpbGUKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzYW1wbGVzL3J1c3QvaG9zdHByb2dzLy5naXRpZ25vcmUKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzYW1wbGVzL3J1c3QvaG9zdHByb2dzL01ha2VmaWxlCiBjcmVhdGUgbW9kZSAx MDA2NDQgc2FtcGxlcy9ydXN0L2hvc3Rwcm9ncy9hLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgc2Ft cGxlcy9ydXN0L2hvc3Rwcm9ncy9iLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgc2FtcGxlcy9ydXN0 L2hvc3Rwcm9ncy9zaW5nbGUucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzYW1wbGVzL3J1c3QvcnVz dF9jaHJkZXYucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzYW1wbGVzL3J1c3QvcnVzdF9taW5pbWFs LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgc2FtcGxlcy9ydXN0L3J1c3RfbWlzY2Rldi5ycwogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNhbXBsZXMvcnVzdC9ydXN0X21vZHVsZV9wYXJhbWV0ZXJzLnJzCiBj cmVhdGUgbW9kZSAxMDA2NDQgc2FtcGxlcy9ydXN0L3J1c3RfbmV0ZmlsdGVyLnJzCiBjcmVhdGUg bW9kZSAxMDA2NDQgc2FtcGxlcy9ydXN0L3J1c3RfcGxhdGZvcm0ucnMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzYW1wbGVzL3J1c3QvcnVzdF9wcmludC5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNhbXBs ZXMvcnVzdC9ydXN0X3JhbmRvbS5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNhbXBsZXMvcnVzdC9y dXN0X3NlbWFwaG9yZS5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNhbXBsZXMvcnVzdC9ydXN0X3Nl bWFwaG9yZV9jLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzYW1wbGVzL3J1c3QvcnVzdF9zdGFja19w cm9iaW5nLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgc2FtcGxlcy9ydXN0L3J1c3Rfc3luYy5ycwog Y3JlYXRlIG1vZGUgMTAwNzU1IHNjcmlwdHMvZ2VuZXJhdGVfcnVzdF9hbmFseXplci5weQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNjcmlwdHMvZ2VuZXJhdGVfcnVzdF90YXJnZXQucnMKIGNyZWF0ZSBt b2RlIDEwMDc1NSBzY3JpcHRzL2lzX3J1c3RfbW9kdWxlLnNoCiBjcmVhdGUgbW9kZSAxMDA2NDQg c2NyaXB0cy9ydXN0LWlzLWF2YWlsYWJsZS1iaW5kZ2VuLWxpYmNsYW5nLmgKIGNyZWF0ZSBtb2Rl IDEwMDc1NSBzY3JpcHRzL3J1c3QtaXMtYXZhaWxhYmxlLnNoCiBjcmVhdGUgbW9kZSAxMDA3NTUg c2NyaXB0cy9ydXN0ZG9jX3Rlc3RfYnVpbGRlci5weQogY3JlYXRlIG1vZGUgMTAwNzU1IHNjcmlw dHMvcnVzdGRvY190ZXN0X2dlbi5weQoKCmJhc2UtY29tbWl0OiA0YjA5ODZhMzYxM2M5MmY0ZWMx YmRjN2Y2MGVjNjZmZWExMzU5OTFmCi0tIAoyLjM2LjEKCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1yaXNjdiBtYWlsaW5nIGxpc3QKbGludXgt cmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWls bWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cg== 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 lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (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 5485FC433EF for ; Mon, 23 May 2022 02:03:37 +0000 (UTC) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4L60x23lNvz3byk for ; Mon, 23 May 2022 12:03:34 +1000 (AEST) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20201202 header.b=YYroKg8J; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=kernel.org (client-ip=139.178.84.217; helo=dfw.source.kernel.org; envelope-from=ojeda@kernel.org; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20201202 header.b=YYroKg8J; dkim-atps=neutral Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4L60wJ0tjvz2yPv for ; Mon, 23 May 2022 12:02:55 +1000 (AEST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 9A7C860FC1; Mon, 23 May 2022 02:02:52 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id EE23BC385AA; Mon, 23 May 2022 02:02:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1653271371; bh=ERwtvphja6U/1OhlgSfEhE5NLiXGu89oIBPKPKs7U8Q=; h=From:To:Cc:Subject:Date:From; b=YYroKg8JiImIEyhxQqxr9dwSw6Gvz1uWiyFTs6/Arz+D78M6TjE788dmc4o88D3+C yz9ghXro/LMf4BlMmFJJKGCcEc/yLsjL5rV7MjA4Hz2v3iDCB0BmwwzOTY9RPA9avG nk14pZu9MJJUMFRvuU+GioRXKmkkvpJxj6j1DzgNG7Id/s3k2fz4KstwpRDeUVGgec /lE4TfznmsR1NMdvfmW9HbRP82C815EbADCMxN60Za904DFLaE8qS4X2vIgDRInjq4 EmvQ0mzLy51/Oxa6eLaoEG5p/QnLNDGqO6RTYT5D24v7d8empSxpr6/M1HyKTSFtSS zUUdug5Vel7Kg== From: Miguel Ojeda To: Linus Torvalds , Greg Kroah-Hartman Subject: [PATCH v7 00/25] Rust support Date: Mon, 23 May 2022 04:01:13 +0200 Message-Id: <20220523020209.11810-1-ojeda@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: rust-for-linux@vger.kernel.org, linux-doc@vger.kernel.org, linux-kbuild@vger.kernel.org, linux-um@lists.infradead.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-gpio@vger.kernel.org, Jarkko Sakkinen , linux-kselftest@vger.kernel.org, Miguel Ojeda , live-patching@vger.kernel.org, linux-riscv@lists.infradead.org, linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org, kunit-dev@googlegroups.com Errors-To: linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Sender: "Linuxppc-dev" Rust support This is the patch series (v7) to add support for Rust as a second language to the Linux kernel. If you are interested in following this effort, please join us in the mailing list at: rust-for-linux@vger.kernel.org and take a look at the project itself at: https://github.com/Rust-for-Linux As usual, special thanks go to ISRG (Internet Security Research Group) and Google for their financial support on this endeavor. Cheers, Miguel -- # Rust support This cover letter explains the major changes and updates done since the previous ones. For those, please see: RFC: https://lore.kernel.org/lkml/20210414184604.23473-1-ojeda@kernel.org/ v1: https://lore.kernel.org/lkml/20210704202756.29107-1-ojeda@kernel.org/ v2: https://lore.kernel.org/lkml/20211206140313.5653-1-ojeda@kernel.org/ v3: https://lore.kernel.org/lkml/20220117053349.6804-1-ojeda@kernel.org/ v4: https://lore.kernel.org/lkml/20220212130410.6901-1-ojeda@kernel.org/ v5: https://lore.kernel.org/lkml/20220317181032.15436-1-ojeda@kernel.org/ v6: https://lore.kernel.org/lkml/20220507052451.12890-1-ojeda@kernel.org/ This is a small round to address the comments made in v6 plus a few related changes: - Added `%pA` to `Documentation/core-api/printk-formats.rst`. - Added `checkpatch.pl` patch to search for `%pA` in C code. - Added `checkpatch.pl` patch to enable language-independent checks. - Added UML (x86_64) support, for KUnit (thanks David Gow!). - Added inline licensing information ("Apache-2.0 OR MIT") in the commit message of the `alloc` patch, as well as in `rust/alloc/README.md` in the following patch. - Added SPDX license identifiers to `Documentation/rust/`. - Reformatted `Documentation/rust/arch-support.rst` list table into simple table. - Removed logo from documentation patch; used Linux GIF one for the Rust generated docs in its place (to be replaced with the SVG one once available). - Used `"GPL"` instead of `"GPL v2"` for the `license` field of the `module!` macro. - Moved `module_misc_device!` macro in `samples/rust/rust_random.rs` to the top of the file in `samples/rust/` for consistency. - Sorted `#include` lists in `rust/kernel/bindings_helper.h` and `rust/helpers.c`. - Fixed some English typos. - Made the patches more `checkpatch.pl`-clean overall. - Picked up Reviewed-by and Acked-by tags. ## Patch series status The Rust support is still to be considered experimental. However, support is good enough that kernel developers can start working on the Rust abstractions for subsystems and write drivers and other modules. The current series has just arrived in `linux-next`, as usual. Similarly, the preview docs for this series can be seen at: https://rust-for-linux.github.io/docs/kernel/ As usual, please see the following link for the live list of unstable Rust features we are using: https://github.com/Rust-for-Linux/linux/issues/2 ## Conferences, meetings and liaisons We would like to remind everyone about the Rust MC (microconference) of LPC 2022 (Linux Plumbers Conference): https://lpc.events/event/16/contributions/1159/ The Rust MC intends to cover talks and discussions on both Rust for Linux as well as other non-kernel Rust topics. The Call for Proposals is open! ## Acknowledgements The signatures in the main commits correspond to the people that wrote code that has ended up in them at the present time. For details on contributions to code and discussions, please see our repository: https://github.com/Rust-for-Linux/linux However, we would like to give credit to everyone that has contributed in one way or another to the Rust for Linux project. Since the previous cover letter: - Kees Cook for his reviews of some of the v6 patches. - David Gow and Brendan Higgins for their reviews of the KUnit prerequisite patch and their feedback. - Jonathan Corbet and Akira Yokosawa for their review of the documentation patch and feedback on documentation rules. - Gary Guo for working on improvements to the Rust compiler that could make our `static_assert!` macro applicable in more cases. - bjorn3 for working on making `rustc_parse_format` compile on a stable Rust compiler so that it may be used by lightweight formatting systems (for instance, by the kernel). - As usual, bjorn3 and Gary Guo for all the input on Rust compiler details, reviews and suggestions. - Esteban Blanc, Arthur Cohen and Martin Schmidt for rebasing their SPI abstraction work. - Maciej Falkowski for continuing his work on the Samsung Exynos TRNG driver and the required abstractions around it, such as adding `delay`, `ktime` and `iopoll` abstractions, new methods to `platform::Device` and run-time power management abstractions. - Yuheng Su for working on cleaning up the `Module::init` interface. - Peng Hao for working on wrapping `mm_struct`. - Sergio González Collado for continuing his work on the GitHub CI problem matchers. - Wei Liu for taking the time to answer questions from newcomers in Zulip. - Philip Li, Yujie Liu et al. for continuing their work on adding Rust support to the Intel 0DAY/LKP kernel test robot. - Philip Herron and Arthur Cohen (and his supporters Open Source Security and Embecosm) et al. for their ongoing work on GCC Rust. - Antoni Boucher (and his supporters) et al. for their ongoing work on `rustc_codegen_gcc`. - Mats Larsen, Marc Poulhiès et al. for their ongoing work on improving Rust support in Compiler Explorer. - Many folks that have reported issues, tested the project, helped spread the word, joined discussions and contributed in other ways! Please see also the acknowledgements on the previous cover letters. Boqun Feng (1): kallsyms: avoid hardcoding the buffer size Gary Guo (2): rust: add `build_error` crate vsprintf: add new `%pA` format specifier Miguel Ojeda (18): kallsyms: support "big" kernel symbols kallsyms: increase maximum kernel symbol length to 512 kunit: take `kunit_assert` as `const` rust: add C helpers rust: add `compiler_builtins` crate rust: import upstream `alloc` crate rust: adapt `alloc` crate to the kernel rust: add `macros` crate rust: export generated symbols scripts: checkpatch: diagnose uses of `%pA` in the C side scripts: checkpatch: enable language-independent checks for Rust scripts: add `rustdoc_test_{builder,gen}.py` scripts scripts: add `generate_rust_analyzer.py` scripts scripts: decode_stacktrace: demangle Rust symbols docs: add Rust documentation Kbuild: add Rust support samples: add Rust examples MAINTAINERS: Rust Wedson Almeida Filho (4): rust: add `kernel` crate's `sync` module rust: add `kernel` crate [RFC] drivers: gpio: PrimeCell PL061 in Rust [RFC] drivers: android: Binder IPC in Rust .gitignore | 5 + .rustfmt.toml | 12 + Documentation/core-api/printk-formats.rst | 10 + Documentation/doc-guide/kernel-doc.rst | 3 + Documentation/index.rst | 1 + Documentation/kbuild/kbuild.rst | 17 + Documentation/kbuild/makefiles.rst | 50 +- Documentation/process/changes.rst | 41 + Documentation/rust/arch-support.rst | 25 + Documentation/rust/coding-guidelines.rst | 216 ++ Documentation/rust/general-information.rst | 79 + Documentation/rust/index.rst | 22 + Documentation/rust/quick-start.rst | 232 ++ MAINTAINERS | 15 + Makefile | 175 +- arch/Kconfig | 6 + arch/arm/Kconfig | 1 + arch/arm64/Kconfig | 1 + arch/powerpc/Kconfig | 1 + arch/riscv/Kconfig | 1 + arch/riscv/Makefile | 5 + arch/um/Kconfig | 1 + arch/x86/Kconfig | 1 + arch/x86/Makefile | 14 + drivers/android/Kconfig | 6 + drivers/android/Makefile | 2 + drivers/android/allocation.rs | 266 ++ drivers/android/context.rs | 80 + drivers/android/defs.rs | 99 + drivers/android/node.rs | 476 +++ drivers/android/process.rs | 960 +++++ drivers/android/range_alloc.rs | 189 + drivers/android/rust_binder.rs | 111 + drivers/android/thread.rs | 870 +++++ drivers/android/transaction.rs | 326 ++ drivers/gpio/Kconfig | 8 + drivers/gpio/Makefile | 1 + drivers/gpio/gpio_pl061_rust.rs | 370 ++ include/kunit/test.h | 2 +- include/linux/kallsyms.h | 2 +- include/linux/spinlock.h | 25 +- include/uapi/linux/android/binder.h | 28 +- init/Kconfig | 45 +- kernel/kallsyms.c | 26 +- kernel/livepatch/core.c | 4 +- lib/Kconfig.debug | 155 + lib/kunit/test.c | 4 +- lib/vsprintf.c | 13 + rust/.gitignore | 10 + rust/Makefile | 398 +++ rust/alloc/README.md | 33 + rust/alloc/alloc.rs | 438 +++ rust/alloc/borrow.rs | 498 +++ rust/alloc/boxed.rs | 2007 +++++++++++ rust/alloc/collections/mod.rs | 156 + rust/alloc/fmt.rs | 601 ++++ rust/alloc/lib.rs | 226 ++ rust/alloc/macros.rs | 127 + rust/alloc/raw_vec.rs | 567 +++ rust/alloc/slice.rs | 1282 +++++++ rust/alloc/str.rs | 632 ++++ rust/alloc/string.rs | 2869 +++++++++++++++ rust/alloc/vec/drain.rs | 186 + rust/alloc/vec/drain_filter.rs | 145 + rust/alloc/vec/into_iter.rs | 356 ++ rust/alloc/vec/is_zero.rs | 106 + rust/alloc/vec/mod.rs | 3362 ++++++++++++++++++ rust/alloc/vec/partial_eq.rs | 49 + rust/alloc/vec/set_len_on_drop.rs | 30 + rust/alloc/vec/spec_extend.rs | 174 + rust/bindgen_parameters | 17 + rust/build_error.rs | 29 + rust/compiler_builtins.rs | 57 + rust/exports.c | 20 + rust/helpers.c | 644 ++++ rust/kernel/allocator.rs | 65 + rust/kernel/amba.rs | 257 ++ rust/kernel/bindings.rs | 47 + rust/kernel/bindings_helper.h | 46 + rust/kernel/build_assert.rs | 82 + rust/kernel/c_types.rs | 119 + rust/kernel/chrdev.rs | 207 ++ rust/kernel/clk.rs | 79 + rust/kernel/cred.rs | 46 + rust/kernel/device.rs | 546 +++ rust/kernel/driver.rs | 442 +++ rust/kernel/error.rs | 565 +++ rust/kernel/file.rs | 860 +++++ rust/kernel/gpio.rs | 478 +++ rust/kernel/hwrng.rs | 242 ++ rust/kernel/io_buffer.rs | 153 + rust/kernel/io_mem.rs | 275 ++ rust/kernel/iov_iter.rs | 81 + rust/kernel/irq.rs | 411 +++ rust/kernel/kasync.rs | 6 + rust/kernel/kasync/net.rs | 322 ++ rust/kernel/kunit.rs | 91 + rust/kernel/lib.rs | 261 ++ rust/kernel/linked_list.rs | 247 ++ rust/kernel/miscdev.rs | 291 ++ rust/kernel/mm.rs | 149 + rust/kernel/module_param.rs | 498 +++ rust/kernel/net.rs | 392 ++ rust/kernel/net/filter.rs | 447 +++ rust/kernel/of.rs | 63 + rust/kernel/pages.rs | 144 + rust/kernel/platform.rs | 223 ++ rust/kernel/power.rs | 118 + rust/kernel/prelude.rs | 36 + rust/kernel/print.rs | 405 +++ rust/kernel/random.rs | 42 + rust/kernel/raw_list.rs | 361 ++ rust/kernel/rbtree.rs | 563 +++ rust/kernel/revocable.rs | 161 + rust/kernel/security.rs | 38 + rust/kernel/static_assert.rs | 38 + rust/kernel/std_vendor.rs | 160 + rust/kernel/str.rs | 597 ++++ rust/kernel/sync.rs | 161 + rust/kernel/sync/arc.rs | 503 +++ rust/kernel/sync/condvar.rs | 138 + rust/kernel/sync/guard.rs | 169 + rust/kernel/sync/locked_by.rs | 111 + rust/kernel/sync/mutex.rs | 153 + rust/kernel/sync/nowait.rs | 188 + rust/kernel/sync/revocable.rs | 250 ++ rust/kernel/sync/rwsem.rs | 197 + rust/kernel/sync/seqlock.rs | 202 ++ rust/kernel/sync/smutex.rs | 295 ++ rust/kernel/sync/spinlock.rs | 360 ++ rust/kernel/sysctl.rs | 199 ++ rust/kernel/task.rs | 175 + rust/kernel/types.rs | 679 ++++ rust/kernel/user_ptr.rs | 175 + rust/macros/helpers.rs | 79 + rust/macros/lib.rs | 94 + rust/macros/module.rs | 631 ++++ samples/Kconfig | 2 + samples/Makefile | 1 + samples/rust/Kconfig | 140 + samples/rust/Makefile | 16 + samples/rust/hostprogs/.gitignore | 3 + samples/rust/hostprogs/Makefile | 5 + samples/rust/hostprogs/a.rs | 7 + samples/rust/hostprogs/b.rs | 5 + samples/rust/hostprogs/single.rs | 12 + samples/rust/rust_chrdev.rs | 50 + samples/rust/rust_minimal.rs | 35 + samples/rust/rust_miscdev.rs | 143 + samples/rust/rust_module_parameters.rs | 69 + samples/rust/rust_netfilter.rs | 54 + samples/rust/rust_platform.rs | 22 + samples/rust/rust_print.rs | 54 + samples/rust/rust_random.rs | 60 + samples/rust/rust_semaphore.rs | 171 + samples/rust/rust_semaphore_c.c | 212 ++ samples/rust/rust_stack_probing.rs | 36 + samples/rust/rust_sync.rs | 93 + scripts/.gitignore | 1 + scripts/Kconfig.include | 6 +- scripts/Makefile | 3 + scripts/Makefile.build | 60 + scripts/Makefile.debug | 10 + scripts/Makefile.host | 34 +- scripts/Makefile.lib | 12 + scripts/Makefile.modfinal | 8 +- scripts/cc-version.sh | 12 +- scripts/checkpatch.pl | 8 +- scripts/decode_stacktrace.sh | 14 + scripts/generate_rust_analyzer.py | 134 + scripts/generate_rust_target.rs | 227 ++ scripts/is_rust_module.sh | 13 + scripts/kallsyms.c | 47 +- scripts/kconfig/confdata.c | 75 + scripts/min-tool-version.sh | 6 + scripts/rust-is-available-bindgen-libclang.h | 2 + scripts/rust-is-available.sh | 158 + scripts/rustdoc_test_builder.py | 59 + scripts/rustdoc_test_gen.py | 164 + tools/include/linux/kallsyms.h | 2 +- tools/lib/perf/include/perf/event.h | 2 +- tools/lib/symbol/kallsyms.h | 2 +- 182 files changed, 37614 insertions(+), 69 deletions(-) create mode 100644 .rustfmt.toml create mode 100644 Documentation/rust/arch-support.rst create mode 100644 Documentation/rust/coding-guidelines.rst create mode 100644 Documentation/rust/general-information.rst create mode 100644 Documentation/rust/index.rst create mode 100644 Documentation/rust/quick-start.rst create mode 100644 drivers/android/allocation.rs create mode 100644 drivers/android/context.rs create mode 100644 drivers/android/defs.rs create mode 100644 drivers/android/node.rs create mode 100644 drivers/android/process.rs create mode 100644 drivers/android/range_alloc.rs create mode 100644 drivers/android/rust_binder.rs create mode 100644 drivers/android/thread.rs create mode 100644 drivers/android/transaction.rs create mode 100644 drivers/gpio/gpio_pl061_rust.rs create mode 100644 rust/.gitignore create mode 100644 rust/Makefile create mode 100644 rust/alloc/README.md create mode 100644 rust/alloc/alloc.rs create mode 100644 rust/alloc/borrow.rs create mode 100644 rust/alloc/boxed.rs create mode 100644 rust/alloc/collections/mod.rs create mode 100644 rust/alloc/fmt.rs create mode 100644 rust/alloc/lib.rs create mode 100644 rust/alloc/macros.rs create mode 100644 rust/alloc/raw_vec.rs create mode 100644 rust/alloc/slice.rs create mode 100644 rust/alloc/str.rs create mode 100644 rust/alloc/string.rs create mode 100644 rust/alloc/vec/drain.rs create mode 100644 rust/alloc/vec/drain_filter.rs create mode 100644 rust/alloc/vec/into_iter.rs create mode 100644 rust/alloc/vec/is_zero.rs create mode 100644 rust/alloc/vec/mod.rs create mode 100644 rust/alloc/vec/partial_eq.rs create mode 100644 rust/alloc/vec/set_len_on_drop.rs create mode 100644 rust/alloc/vec/spec_extend.rs create mode 100644 rust/bindgen_parameters create mode 100644 rust/build_error.rs create mode 100644 rust/compiler_builtins.rs create mode 100644 rust/exports.c create mode 100644 rust/helpers.c create mode 100644 rust/kernel/allocator.rs create mode 100644 rust/kernel/amba.rs create mode 100644 rust/kernel/bindings.rs create mode 100644 rust/kernel/bindings_helper.h create mode 100644 rust/kernel/build_assert.rs create mode 100644 rust/kernel/c_types.rs create mode 100644 rust/kernel/chrdev.rs create mode 100644 rust/kernel/clk.rs create mode 100644 rust/kernel/cred.rs create mode 100644 rust/kernel/device.rs create mode 100644 rust/kernel/driver.rs create mode 100644 rust/kernel/error.rs create mode 100644 rust/kernel/file.rs create mode 100644 rust/kernel/gpio.rs create mode 100644 rust/kernel/hwrng.rs create mode 100644 rust/kernel/io_buffer.rs create mode 100644 rust/kernel/io_mem.rs create mode 100644 rust/kernel/iov_iter.rs create mode 100644 rust/kernel/irq.rs create mode 100644 rust/kernel/kasync.rs create mode 100644 rust/kernel/kasync/net.rs create mode 100644 rust/kernel/kunit.rs create mode 100644 rust/kernel/lib.rs create mode 100644 rust/kernel/linked_list.rs create mode 100644 rust/kernel/miscdev.rs create mode 100644 rust/kernel/mm.rs create mode 100644 rust/kernel/module_param.rs create mode 100644 rust/kernel/net.rs create mode 100644 rust/kernel/net/filter.rs create mode 100644 rust/kernel/of.rs create mode 100644 rust/kernel/pages.rs create mode 100644 rust/kernel/platform.rs create mode 100644 rust/kernel/power.rs create mode 100644 rust/kernel/prelude.rs create mode 100644 rust/kernel/print.rs create mode 100644 rust/kernel/random.rs create mode 100644 rust/kernel/raw_list.rs create mode 100644 rust/kernel/rbtree.rs create mode 100644 rust/kernel/revocable.rs create mode 100644 rust/kernel/security.rs create mode 100644 rust/kernel/static_assert.rs create mode 100644 rust/kernel/std_vendor.rs create mode 100644 rust/kernel/str.rs create mode 100644 rust/kernel/sync.rs create mode 100644 rust/kernel/sync/arc.rs create mode 100644 rust/kernel/sync/condvar.rs create mode 100644 rust/kernel/sync/guard.rs create mode 100644 rust/kernel/sync/locked_by.rs create mode 100644 rust/kernel/sync/mutex.rs create mode 100644 rust/kernel/sync/nowait.rs create mode 100644 rust/kernel/sync/revocable.rs create mode 100644 rust/kernel/sync/rwsem.rs create mode 100644 rust/kernel/sync/seqlock.rs create mode 100644 rust/kernel/sync/smutex.rs create mode 100644 rust/kernel/sync/spinlock.rs create mode 100644 rust/kernel/sysctl.rs create mode 100644 rust/kernel/task.rs create mode 100644 rust/kernel/types.rs create mode 100644 rust/kernel/user_ptr.rs create mode 100644 rust/macros/helpers.rs create mode 100644 rust/macros/lib.rs create mode 100644 rust/macros/module.rs create mode 100644 samples/rust/Kconfig create mode 100644 samples/rust/Makefile create mode 100644 samples/rust/hostprogs/.gitignore create mode 100644 samples/rust/hostprogs/Makefile create mode 100644 samples/rust/hostprogs/a.rs create mode 100644 samples/rust/hostprogs/b.rs create mode 100644 samples/rust/hostprogs/single.rs create mode 100644 samples/rust/rust_chrdev.rs create mode 100644 samples/rust/rust_minimal.rs create mode 100644 samples/rust/rust_miscdev.rs create mode 100644 samples/rust/rust_module_parameters.rs create mode 100644 samples/rust/rust_netfilter.rs create mode 100644 samples/rust/rust_platform.rs create mode 100644 samples/rust/rust_print.rs create mode 100644 samples/rust/rust_random.rs create mode 100644 samples/rust/rust_semaphore.rs create mode 100644 samples/rust/rust_semaphore_c.c create mode 100644 samples/rust/rust_stack_probing.rs create mode 100644 samples/rust/rust_sync.rs create mode 100755 scripts/generate_rust_analyzer.py create mode 100644 scripts/generate_rust_target.rs create mode 100755 scripts/is_rust_module.sh create mode 100644 scripts/rust-is-available-bindgen-libclang.h create mode 100755 scripts/rust-is-available.sh create mode 100755 scripts/rustdoc_test_builder.py create mode 100755 scripts/rustdoc_test_gen.py base-commit: 4b0986a3613c92f4ec1bdc7f60ec66fea135991f -- 2.36.1 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 AFA95C433F5 for ; Mon, 23 May 2022 08:24:07 +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:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=nRIuPQwXqPHNg4QiV5C5j5UzHNfHTW7zDK3G7ekOexc=; b=tw6XnpCK52uzwk Ty30DoPtEbdls7gmucijFDJtcxeiAzgPM88ab/Jx+gtVkttArCge/3e/N0hHcuJOuJUfUxoVfXaTz YPlpz/SdwEFheJU391UgbcJfKesxaa5sDAv6n5030AQei2LzrWBsp0GB0QZ7sv22QFo4asGf78NO3 OwOYG1Bo+5Xi97h9RlXDFhs/iAGlgCt75M7Ti+BfdD7nzrvj2rqDYrLeHn3OeAp1EBJBHQ0pJRTrC nouGm1/4I+8eM+g5yx86OSEtOCG5J1RNysTxYu4UKUcZZeRGMrBOh01zZUqY/DtE9YNN8JiqBBRyj Avc68d3UXCbge5+yEJow==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nt3KX-002OiM-4V; Mon, 23 May 2022 08:22:22 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nt2tG-002CKb-Pa; Mon, 23 May 2022 07:54:11 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=Content-Transfer-Encoding:Content-Type :MIME-Version:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To:Content-ID: Content-Description:In-Reply-To:References; bh=MpVxaXpbyAXFPf+IX3hptai2Fy5fWDXx1RisaJ5dqH8=; b=bHEG+TwyXzv6yrjX7fKi6Btws5 7kBiTp+t7nrIKcHfcA3W4x1nNecIRC4c+63PSwKjEzyGl1LOdosjMOA4jNMI6PRdTaS+sO/+nZPFu fXGWkedBfWyN4DCLu1LaM9cXO8aSB1w6FxCDL8mYU4T3Ai3M6ONVWqlyalvhkmDTdt6OeL7pxepNT vcly2YiVNLfpQpYFG9rlvEi6frqdgRs4EEd9OFEHW57a+T0A8XA5fPomWVFSIUPel8SfEH5zW4nhP RhF22T47rp7MyCeeq/VM4BhKCVC3wlZFqgKvdCP/Zag43YS5AyY6FIMRbdcREutKtyoAOLgUbm9GP 85ULz4oA==; Received: from dfw.source.kernel.org ([2604:1380:4641:c500::1]) by desiato.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nsxQM-000kbi-Nd; Mon, 23 May 2022 02:04:04 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 9A7C860FC1; Mon, 23 May 2022 02:02:52 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id EE23BC385AA; Mon, 23 May 2022 02:02:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1653271371; bh=ERwtvphja6U/1OhlgSfEhE5NLiXGu89oIBPKPKs7U8Q=; h=From:To:Cc:Subject:Date:From; b=YYroKg8JiImIEyhxQqxr9dwSw6Gvz1uWiyFTs6/Arz+D78M6TjE788dmc4o88D3+C yz9ghXro/LMf4BlMmFJJKGCcEc/yLsjL5rV7MjA4Hz2v3iDCB0BmwwzOTY9RPA9avG nk14pZu9MJJUMFRvuU+GioRXKmkkvpJxj6j1DzgNG7Id/s3k2fz4KstwpRDeUVGgec /lE4TfznmsR1NMdvfmW9HbRP82C815EbADCMxN60Za904DFLaE8qS4X2vIgDRInjq4 EmvQ0mzLy51/Oxa6eLaoEG5p/QnLNDGqO6RTYT5D24v7d8empSxpr6/M1HyKTSFtSS zUUdug5Vel7Kg== From: Miguel Ojeda To: Linus Torvalds , Greg Kroah-Hartman Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Jarkko Sakkinen , Miguel Ojeda , kunit-dev@googlegroups.com, linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-gpio@vger.kernel.org, linux-kbuild@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-perf-users@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, linux-um@lists.infradead.org, live-patching@vger.kernel.org Subject: [PATCH v7 00/25] Rust support Date: Mon, 23 May 2022 04:01:13 +0200 Message-Id: <20220523020209.11810-1-ojeda@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220523_030400_118771_2748CD85 X-CRM114-Status: GOOD ( 29.00 ) 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: , 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 UnVzdCBzdXBwb3J0CgpUaGlzIGlzIHRoZSBwYXRjaCBzZXJpZXMgKHY3KSB0byBhZGQgc3VwcG9y dCBmb3IgUnVzdCBhcyBhIHNlY29uZApsYW5ndWFnZSB0byB0aGUgTGludXgga2VybmVsLgoKSWYg eW91IGFyZSBpbnRlcmVzdGVkIGluIGZvbGxvd2luZyB0aGlzIGVmZm9ydCwgcGxlYXNlIGpvaW4g dXMgaW4KdGhlIG1haWxpbmcgbGlzdCBhdDoKCiAgICBydXN0LWZvci1saW51eEB2Z2VyLmtlcm5l bC5vcmcKCmFuZCB0YWtlIGEgbG9vayBhdCB0aGUgcHJvamVjdCBpdHNlbGYgYXQ6CgogICAgaHR0 cHM6Ly9naXRodWIuY29tL1J1c3QtZm9yLUxpbnV4CgpBcyB1c3VhbCwgc3BlY2lhbCB0aGFua3Mg Z28gdG8gSVNSRyAoSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2gKR3JvdXApIGFuZCBHb29nbGUg Zm9yIHRoZWlyIGZpbmFuY2lhbCBzdXBwb3J0IG9uIHRoaXMgZW5kZWF2b3IuCgpDaGVlcnMsCk1p Z3VlbAoKLS0KCiMgUnVzdCBzdXBwb3J0CgpUaGlzIGNvdmVyIGxldHRlciBleHBsYWlucyB0aGUg bWFqb3IgY2hhbmdlcyBhbmQgdXBkYXRlcyBkb25lIHNpbmNlCnRoZSBwcmV2aW91cyBvbmVzLiBG b3IgdGhvc2UsIHBsZWFzZSBzZWU6CgogICAgUkZDOiBodHRwczovL2xvcmUua2VybmVsLm9yZy9s a21sLzIwMjEwNDE0MTg0NjA0LjIzNDczLTEtb2plZGFAa2VybmVsLm9yZy8KICAgIHYxOiAgaHR0 cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGttbC8yMDIxMDcwNDIwMjc1Ni4yOTEwNy0xLW9qZWRhQGtl cm5lbC5vcmcvCiAgICB2MjogIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xrbWwvMjAyMTEyMDYx NDAzMTMuNTY1My0xLW9qZWRhQGtlcm5lbC5vcmcvCiAgICB2MzogIGh0dHBzOi8vbG9yZS5rZXJu ZWwub3JnL2xrbWwvMjAyMjAxMTcwNTMzNDkuNjgwNC0xLW9qZWRhQGtlcm5lbC5vcmcvCiAgICB2 NDogIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xrbWwvMjAyMjAyMTIxMzA0MTAuNjkwMS0xLW9q ZWRhQGtlcm5lbC5vcmcvCiAgICB2NTogIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xrbWwvMjAy MjAzMTcxODEwMzIuMTU0MzYtMS1vamVkYUBrZXJuZWwub3JnLwogICAgdjY6ICBodHRwczovL2xv cmUua2VybmVsLm9yZy9sa21sLzIwMjIwNTA3MDUyNDUxLjEyODkwLTEtb2plZGFAa2VybmVsLm9y Zy8KClRoaXMgaXMgYSBzbWFsbCByb3VuZCB0byBhZGRyZXNzIHRoZSBjb21tZW50cyBtYWRlIGlu IHY2IHBsdXMgYSBmZXcKcmVsYXRlZCBjaGFuZ2VzOgoKICAtIEFkZGVkIGAlcEFgIHRvIGBEb2N1 bWVudGF0aW9uL2NvcmUtYXBpL3ByaW50ay1mb3JtYXRzLnJzdGAuCgogIC0gQWRkZWQgYGNoZWNr cGF0Y2gucGxgIHBhdGNoIHRvIHNlYXJjaCBmb3IgYCVwQWAgaW4gQyBjb2RlLgoKICAtIEFkZGVk IGBjaGVja3BhdGNoLnBsYCBwYXRjaCB0byBlbmFibGUgbGFuZ3VhZ2UtaW5kZXBlbmRlbnQgY2hl Y2tzLgoKICAtIEFkZGVkIFVNTCAoeDg2XzY0KSBzdXBwb3J0LCBmb3IgS1VuaXQgKHRoYW5rcyBE YXZpZCBHb3chKS4KCiAgLSBBZGRlZCBpbmxpbmUgbGljZW5zaW5nIGluZm9ybWF0aW9uICgiQXBh Y2hlLTIuMCBPUiBNSVQiKSBpbgogICAgdGhlIGNvbW1pdCBtZXNzYWdlIG9mIHRoZSBgYWxsb2Ng IHBhdGNoLCBhcyB3ZWxsIGFzIGluCiAgICBgcnVzdC9hbGxvYy9SRUFETUUubWRgIGluIHRoZSBm b2xsb3dpbmcgcGF0Y2guCgogIC0gQWRkZWQgU1BEWCBsaWNlbnNlIGlkZW50aWZpZXJzIHRvIGBE b2N1bWVudGF0aW9uL3J1c3QvYC4KCiAgLSBSZWZvcm1hdHRlZCBgRG9jdW1lbnRhdGlvbi9ydXN0 L2FyY2gtc3VwcG9ydC5yc3RgIGxpc3QgdGFibGUKICAgIGludG8gc2ltcGxlIHRhYmxlLgoKICAt IFJlbW92ZWQgbG9nbyBmcm9tIGRvY3VtZW50YXRpb24gcGF0Y2g7IHVzZWQgTGludXggR0lGIG9u ZSBmb3IKICAgIHRoZSBSdXN0IGdlbmVyYXRlZCBkb2NzIGluIGl0cyBwbGFjZSAodG8gYmUgcmVw bGFjZWQgd2l0aAogICAgdGhlIFNWRyBvbmUgb25jZSBhdmFpbGFibGUpLgoKICAtIFVzZWQgYCJH UEwiYCBpbnN0ZWFkIG9mIGAiR1BMIHYyImAgZm9yIHRoZSBgbGljZW5zZWAgZmllbGQgb2YgdGhl CiAgICBgbW9kdWxlIWAgbWFjcm8uCgogIC0gTW92ZWQgYG1vZHVsZV9taXNjX2RldmljZSFgIG1h Y3JvIGluIGBzYW1wbGVzL3J1c3QvcnVzdF9yYW5kb20ucnNgCiAgICB0byB0aGUgdG9wIG9mIHRo ZSBmaWxlIGluIGBzYW1wbGVzL3J1c3QvYCBmb3IgY29uc2lzdGVuY3kuCgogIC0gU29ydGVkIGAj aW5jbHVkZWAgbGlzdHMgaW4gYHJ1c3Qva2VybmVsL2JpbmRpbmdzX2hlbHBlci5oYAogICAgYW5k IGBydXN0L2hlbHBlcnMuY2AuCgogIC0gRml4ZWQgc29tZSBFbmdsaXNoIHR5cG9zLgoKICAtIE1h ZGUgdGhlIHBhdGNoZXMgbW9yZSBgY2hlY2twYXRjaC5wbGAtY2xlYW4gb3ZlcmFsbC4KCiAgLSBQ aWNrZWQgdXAgUmV2aWV3ZWQtYnkgYW5kIEFja2VkLWJ5IHRhZ3MuCgoKIyMgUGF0Y2ggc2VyaWVz IHN0YXR1cwoKVGhlIFJ1c3Qgc3VwcG9ydCBpcyBzdGlsbCB0byBiZSBjb25zaWRlcmVkIGV4cGVy aW1lbnRhbC4gSG93ZXZlciwKc3VwcG9ydCBpcyBnb29kIGVub3VnaCB0aGF0IGtlcm5lbCBkZXZl bG9wZXJzIGNhbiBzdGFydCB3b3JraW5nIG9uIHRoZQpSdXN0IGFic3RyYWN0aW9ucyBmb3Igc3Vi c3lzdGVtcyBhbmQgd3JpdGUgZHJpdmVycyBhbmQgb3RoZXIgbW9kdWxlcy4KClRoZSBjdXJyZW50 IHNlcmllcyBoYXMganVzdCBhcnJpdmVkIGluIGBsaW51eC1uZXh0YCwgYXMgdXN1YWwuClNpbWls YXJseSwgdGhlIHByZXZpZXcgZG9jcyBmb3IgdGhpcyBzZXJpZXMgY2FuIGJlIHNlZW4gYXQ6Cgog ICAgaHR0cHM6Ly9ydXN0LWZvci1saW51eC5naXRodWIuaW8vZG9jcy9rZXJuZWwvCgpBcyB1c3Vh bCwgcGxlYXNlIHNlZSB0aGUgZm9sbG93aW5nIGxpbmsgZm9yIHRoZSBsaXZlIGxpc3Qgb2YgdW5z dGFibGUKUnVzdCBmZWF0dXJlcyB3ZSBhcmUgdXNpbmc6CgogICAgaHR0cHM6Ly9naXRodWIuY29t L1J1c3QtZm9yLUxpbnV4L2xpbnV4L2lzc3Vlcy8yCgoKIyMgQ29uZmVyZW5jZXMsIG1lZXRpbmdz IGFuZCBsaWFpc29ucwoKV2Ugd291bGQgbGlrZSB0byByZW1pbmQgZXZlcnlvbmUgYWJvdXQgdGhl IFJ1c3QgTUMgKG1pY3JvY29uZmVyZW5jZSkKb2YgTFBDIDIwMjIgKExpbnV4IFBsdW1iZXJzIENv bmZlcmVuY2UpOgoKICAgIGh0dHBzOi8vbHBjLmV2ZW50cy9ldmVudC8xNi9jb250cmlidXRpb25z LzExNTkvCgpUaGUgUnVzdCBNQyBpbnRlbmRzIHRvIGNvdmVyIHRhbGtzIGFuZCBkaXNjdXNzaW9u cyBvbiBib3RoIFJ1c3QgZm9yCkxpbnV4IGFzIHdlbGwgYXMgb3RoZXIgbm9uLWtlcm5lbCBSdXN0 IHRvcGljcy4gVGhlIENhbGwgZm9yIFByb3Bvc2FscwppcyBvcGVuIQoKCiMjIEFja25vd2xlZGdl bWVudHMKClRoZSBzaWduYXR1cmVzIGluIHRoZSBtYWluIGNvbW1pdHMgY29ycmVzcG9uZCB0byB0 aGUgcGVvcGxlIHRoYXQKd3JvdGUgY29kZSB0aGF0IGhhcyBlbmRlZCB1cCBpbiB0aGVtIGF0IHRo ZSBwcmVzZW50IHRpbWUuIEZvciBkZXRhaWxzCm9uIGNvbnRyaWJ1dGlvbnMgdG8gY29kZSBhbmQg ZGlzY3Vzc2lvbnMsIHBsZWFzZSBzZWUgb3VyIHJlcG9zaXRvcnk6CgogICAgaHR0cHM6Ly9naXRo dWIuY29tL1J1c3QtZm9yLUxpbnV4L2xpbnV4CgpIb3dldmVyLCB3ZSB3b3VsZCBsaWtlIHRvIGdp dmUgY3JlZGl0IHRvIGV2ZXJ5b25lIHRoYXQgaGFzIGNvbnRyaWJ1dGVkCmluIG9uZSB3YXkgb3Ig YW5vdGhlciB0byB0aGUgUnVzdCBmb3IgTGludXggcHJvamVjdC4gU2luY2UgdGhlCnByZXZpb3Vz IGNvdmVyIGxldHRlcjoKCiAgLSBLZWVzIENvb2sgZm9yIGhpcyByZXZpZXdzIG9mIHNvbWUgb2Yg dGhlIHY2IHBhdGNoZXMuCgogIC0gRGF2aWQgR293IGFuZCBCcmVuZGFuIEhpZ2dpbnMgZm9yIHRo ZWlyIHJldmlld3Mgb2YgdGhlIEtVbml0CiAgICBwcmVyZXF1aXNpdGUgcGF0Y2ggYW5kIHRoZWly IGZlZWRiYWNrLgoKICAtIEpvbmF0aGFuIENvcmJldCBhbmQgQWtpcmEgWW9rb3Nhd2EgZm9yIHRo ZWlyIHJldmlldyBvZiB0aGUKICAgIGRvY3VtZW50YXRpb24gcGF0Y2ggYW5kIGZlZWRiYWNrIG9u IGRvY3VtZW50YXRpb24gcnVsZXMuCgogIC0gR2FyeSBHdW8gZm9yIHdvcmtpbmcgb24gaW1wcm92 ZW1lbnRzIHRvIHRoZSBSdXN0IGNvbXBpbGVyIHRoYXQKICAgIGNvdWxkIG1ha2Ugb3VyIGBzdGF0 aWNfYXNzZXJ0IWAgbWFjcm8gYXBwbGljYWJsZSBpbiBtb3JlIGNhc2VzLgoKICAtIGJqb3JuMyBm b3Igd29ya2luZyBvbiBtYWtpbmcgYHJ1c3RjX3BhcnNlX2Zvcm1hdGAgY29tcGlsZSBvbgogICAg YSBzdGFibGUgUnVzdCBjb21waWxlciBzbyB0aGF0IGl0IG1heSBiZSB1c2VkIGJ5IGxpZ2h0d2Vp Z2h0CiAgICBmb3JtYXR0aW5nIHN5c3RlbXMgKGZvciBpbnN0YW5jZSwgYnkgdGhlIGtlcm5lbCku CgogIC0gQXMgdXN1YWwsIGJqb3JuMyBhbmQgR2FyeSBHdW8gZm9yIGFsbCB0aGUgaW5wdXQgb24g UnVzdCBjb21waWxlcgogICAgZGV0YWlscywgcmV2aWV3cyBhbmQgc3VnZ2VzdGlvbnMuCgogIC0g RXN0ZWJhbiBCbGFuYywgQXJ0aHVyIENvaGVuIGFuZCBNYXJ0aW4gU2NobWlkdCBmb3IgcmViYXNp bmcgdGhlaXIKICAgIFNQSSBhYnN0cmFjdGlvbiB3b3JrLgoKICAtIE1hY2llaiBGYWxrb3dza2kg Zm9yIGNvbnRpbnVpbmcgaGlzIHdvcmsgb24gdGhlIFNhbXN1bmcgRXh5bm9zCiAgICBUUk5HIGRy aXZlciBhbmQgdGhlIHJlcXVpcmVkIGFic3RyYWN0aW9ucyBhcm91bmQgaXQsIHN1Y2ggYXMKICAg IGFkZGluZyBgZGVsYXlgLCBga3RpbWVgIGFuZCBgaW9wb2xsYCBhYnN0cmFjdGlvbnMsIG5ldyBt ZXRob2RzCiAgICB0byBgcGxhdGZvcm06OkRldmljZWAgYW5kIHJ1bi10aW1lIHBvd2VyIG1hbmFn ZW1lbnQgYWJzdHJhY3Rpb25zLgoKICAtIFl1aGVuZyBTdSBmb3Igd29ya2luZyBvbiBjbGVhbmlu ZyB1cCB0aGUgYE1vZHVsZTo6aW5pdGAgaW50ZXJmYWNlLgoKICAtIFBlbmcgSGFvIGZvciB3b3Jr aW5nIG9uIHdyYXBwaW5nIGBtbV9zdHJ1Y3RgLgoKICAtIFNlcmdpbyBHb256w6FsZXogQ29sbGFk byBmb3IgY29udGludWluZyBoaXMgd29yayBvbiB0aGUgR2l0SHViIENJCiAgICBwcm9ibGVtIG1h dGNoZXJzLgoKICAtIFdlaSBMaXUgZm9yIHRha2luZyB0aGUgdGltZSB0byBhbnN3ZXIgcXVlc3Rp b25zIGZyb20gbmV3Y29tZXJzCiAgICBpbiBadWxpcC4KCiAgLSBQaGlsaXAgTGksIFl1amllIExp dSBldCBhbC4gZm9yIGNvbnRpbnVpbmcgdGhlaXIgd29yayBvbiBhZGRpbmcKICAgIFJ1c3Qgc3Vw cG9ydCB0byB0aGUgSW50ZWwgMERBWS9MS1Aga2VybmVsIHRlc3Qgcm9ib3QuCgogIC0gUGhpbGlw IEhlcnJvbiBhbmQgQXJ0aHVyIENvaGVuIChhbmQgaGlzIHN1cHBvcnRlcnMgT3BlbiBTb3VyY2UK ICAgIFNlY3VyaXR5IGFuZCBFbWJlY29zbSkgZXQgYWwuIGZvciB0aGVpciBvbmdvaW5nIHdvcmsg b24gR0NDIFJ1c3QuCgogIC0gQW50b25pIEJvdWNoZXIgKGFuZCBoaXMgc3VwcG9ydGVycykgZXQg YWwuIGZvciB0aGVpciBvbmdvaW5nCiAgICB3b3JrIG9uIGBydXN0Y19jb2RlZ2VuX2djY2AuCgog IC0gTWF0cyBMYXJzZW4sIE1hcmMgUG91bGhpw6hzIGV0IGFsLiBmb3IgdGhlaXIgb25nb2luZyB3 b3JrIG9uCiAgICBpbXByb3ZpbmcgUnVzdCBzdXBwb3J0IGluIENvbXBpbGVyIEV4cGxvcmVyLgoK ICAtIE1hbnkgZm9sa3MgdGhhdCBoYXZlIHJlcG9ydGVkIGlzc3VlcywgdGVzdGVkIHRoZSBwcm9q ZWN0LAogICAgaGVscGVkIHNwcmVhZCB0aGUgd29yZCwgam9pbmVkIGRpc2N1c3Npb25zIGFuZCBj b250cmlidXRlZCBpbgogICAgb3RoZXIgd2F5cyEKClBsZWFzZSBzZWUgYWxzbyB0aGUgYWNrbm93 bGVkZ2VtZW50cyBvbiB0aGUgcHJldmlvdXMgY292ZXIgbGV0dGVycy4KCgpCb3F1biBGZW5nICgx KToKICBrYWxsc3ltczogYXZvaWQgaGFyZGNvZGluZyB0aGUgYnVmZmVyIHNpemUKCkdhcnkgR3Vv ICgyKToKICBydXN0OiBhZGQgYGJ1aWxkX2Vycm9yYCBjcmF0ZQogIHZzcHJpbnRmOiBhZGQgbmV3 IGAlcEFgIGZvcm1hdCBzcGVjaWZpZXIKCk1pZ3VlbCBPamVkYSAoMTgpOgogIGthbGxzeW1zOiBz dXBwb3J0ICJiaWciIGtlcm5lbCBzeW1ib2xzCiAga2FsbHN5bXM6IGluY3JlYXNlIG1heGltdW0g a2VybmVsIHN5bWJvbCBsZW5ndGggdG8gNTEyCiAga3VuaXQ6IHRha2UgYGt1bml0X2Fzc2VydGAg YXMgYGNvbnN0YAogIHJ1c3Q6IGFkZCBDIGhlbHBlcnMKICBydXN0OiBhZGQgYGNvbXBpbGVyX2J1 aWx0aW5zYCBjcmF0ZQogIHJ1c3Q6IGltcG9ydCB1cHN0cmVhbSBgYWxsb2NgIGNyYXRlCiAgcnVz dDogYWRhcHQgYGFsbG9jYCBjcmF0ZSB0byB0aGUga2VybmVsCiAgcnVzdDogYWRkIGBtYWNyb3Ng IGNyYXRlCiAgcnVzdDogZXhwb3J0IGdlbmVyYXRlZCBzeW1ib2xzCiAgc2NyaXB0czogY2hlY2tw YXRjaDogZGlhZ25vc2UgdXNlcyBvZiBgJXBBYCBpbiB0aGUgQyBzaWRlCiAgc2NyaXB0czogY2hl Y2twYXRjaDogZW5hYmxlIGxhbmd1YWdlLWluZGVwZW5kZW50IGNoZWNrcyBmb3IgUnVzdAogIHNj cmlwdHM6IGFkZCBgcnVzdGRvY190ZXN0X3tidWlsZGVyLGdlbn0ucHlgIHNjcmlwdHMKICBzY3Jp cHRzOiBhZGQgYGdlbmVyYXRlX3J1c3RfYW5hbHl6ZXIucHlgIHNjcmlwdHMKICBzY3JpcHRzOiBk ZWNvZGVfc3RhY2t0cmFjZTogZGVtYW5nbGUgUnVzdCBzeW1ib2xzCiAgZG9jczogYWRkIFJ1c3Qg ZG9jdW1lbnRhdGlvbgogIEtidWlsZDogYWRkIFJ1c3Qgc3VwcG9ydAogIHNhbXBsZXM6IGFkZCBS dXN0IGV4YW1wbGVzCiAgTUFJTlRBSU5FUlM6IFJ1c3QKCldlZHNvbiBBbG1laWRhIEZpbGhvICg0 KToKICBydXN0OiBhZGQgYGtlcm5lbGAgY3JhdGUncyBgc3luY2AgbW9kdWxlCiAgcnVzdDogYWRk IGBrZXJuZWxgIGNyYXRlCiAgW1JGQ10gZHJpdmVyczogZ3BpbzogUHJpbWVDZWxsIFBMMDYxIGlu IFJ1c3QKICBbUkZDXSBkcml2ZXJzOiBhbmRyb2lkOiBCaW5kZXIgSVBDIGluIFJ1c3QKCiAuZ2l0 aWdub3JlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDUgKwogLnJ1c3Rm bXQudG9tbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEyICsKIERvY3VtZW50 YXRpb24vY29yZS1hcGkvcHJpbnRrLWZvcm1hdHMucnN0ICAgIHwgICAxMCArCiBEb2N1bWVudGF0 aW9uL2RvYy1ndWlkZS9rZXJuZWwtZG9jLnJzdCAgICAgICB8ICAgIDMgKwogRG9jdW1lbnRhdGlv bi9pbmRleC5yc3QgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIERvY3VtZW50YXRpb24v a2J1aWxkL2tidWlsZC5yc3QgICAgICAgICAgICAgIHwgICAxNyArCiBEb2N1bWVudGF0aW9uL2ti dWlsZC9tYWtlZmlsZXMucnN0ICAgICAgICAgICB8ICAgNTAgKy0KIERvY3VtZW50YXRpb24vcHJv Y2Vzcy9jaGFuZ2VzLnJzdCAgICAgICAgICAgIHwgICA0MSArCiBEb2N1bWVudGF0aW9uL3J1c3Qv YXJjaC1zdXBwb3J0LnJzdCAgICAgICAgICB8ICAgMjUgKwogRG9jdW1lbnRhdGlvbi9ydXN0L2Nv ZGluZy1ndWlkZWxpbmVzLnJzdCAgICAgfCAgMjE2ICsrCiBEb2N1bWVudGF0aW9uL3J1c3QvZ2Vu ZXJhbC1pbmZvcm1hdGlvbi5yc3QgICB8ICAgNzkgKwogRG9jdW1lbnRhdGlvbi9ydXN0L2luZGV4 LnJzdCAgICAgICAgICAgICAgICAgfCAgIDIyICsKIERvY3VtZW50YXRpb24vcnVzdC9xdWljay1z dGFydC5yc3QgICAgICAgICAgIHwgIDIzMiArKwogTUFJTlRBSU5FUlMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDE1ICsKIE1ha2VmaWxlICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgIDE3NSArLQogYXJjaC9LY29uZmlnICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgICA2ICsKIGFyY2gvYXJtL0tjb25maWcgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgMSArCiBhcmNoL2FybTY0L0tjb25maWcgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgIDEgKwogYXJjaC9wb3dlcnBjL0tjb25maWcgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAxICsKIGFyY2gvcmlzY3YvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgMSArCiBhcmNoL3Jpc2N2L01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgIDUgKwogYXJjaC91bS9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAxICsKIGFyY2gveDg2L0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgMSArCiBhcmNoL3g4Ni9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgMTQgKwogZHJpdmVycy9hbmRyb2lkL0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgfCAg ICA2ICsKIGRyaXZlcnMvYW5kcm9pZC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgIHwgICAg MiArCiBkcml2ZXJzL2FuZHJvaWQvYWxsb2NhdGlvbi5ycyAgICAgICAgICAgICAgICB8ICAyNjYg KysKIGRyaXZlcnMvYW5kcm9pZC9jb250ZXh0LnJzICAgICAgICAgICAgICAgICAgIHwgICA4MCAr CiBkcml2ZXJzL2FuZHJvaWQvZGVmcy5ycyAgICAgICAgICAgICAgICAgICAgICB8ICAgOTkgKwog ZHJpdmVycy9hbmRyb2lkL25vZGUucnMgICAgICAgICAgICAgICAgICAgICAgfCAgNDc2ICsrKwog ZHJpdmVycy9hbmRyb2lkL3Byb2Nlc3MucnMgICAgICAgICAgICAgICAgICAgfCAgOTYwICsrKysr CiBkcml2ZXJzL2FuZHJvaWQvcmFuZ2VfYWxsb2MucnMgICAgICAgICAgICAgICB8ICAxODkgKwog ZHJpdmVycy9hbmRyb2lkL3J1c3RfYmluZGVyLnJzICAgICAgICAgICAgICAgfCAgMTExICsKIGRy aXZlcnMvYW5kcm9pZC90aHJlYWQucnMgICAgICAgICAgICAgICAgICAgIHwgIDg3MCArKysrKwog ZHJpdmVycy9hbmRyb2lkL3RyYW5zYWN0aW9uLnJzICAgICAgICAgICAgICAgfCAgMzI2ICsrCiBk cml2ZXJzL2dwaW8vS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDggKwogZHJp dmVycy9ncGlvL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIGRyaXZl cnMvZ3Bpby9ncGlvX3BsMDYxX3J1c3QucnMgICAgICAgICAgICAgIHwgIDM3MCArKwogaW5jbHVk ZS9rdW5pdC90ZXN0LmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBpbmNsdWRl L2xpbnV4L2thbGxzeW1zLmggICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIGluY2x1ZGUv bGludXgvc3BpbmxvY2suaCAgICAgICAgICAgICAgICAgICAgIHwgICAyNSArLQogaW5jbHVkZS91 YXBpL2xpbnV4L2FuZHJvaWQvYmluZGVyLmggICAgICAgICAgfCAgIDI4ICstCiBpbml0L0tjb25m aWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNDUgKy0KIGtlcm5lbC9rYWxs c3ltcy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyNiArLQoga2VybmVsL2xpdmVw YXRjaC9jb3JlLmMgICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBsaWIvS2NvbmZpZy5k ZWJ1ZyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNTUgKwogbGliL2t1bml0L3Rlc3Qu YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBsaWIvdnNwcmludGYuYyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTMgKwogcnVzdC8uZ2l0aWdub3JlICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICsKIHJ1c3QvTWFrZWZpbGUgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDM5OCArKysKIHJ1c3QvYWxsb2MvUkVBRE1FLm1k ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzMyArCiBydXN0L2FsbG9jL2FsbG9jLnJzICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICA0MzggKysrCiBydXN0L2FsbG9jL2JvcnJvdy5ycyAg ICAgICAgICAgICAgICAgICAgICAgICB8ICA0OTggKysrCiBydXN0L2FsbG9jL2JveGVkLnJzICAg ICAgICAgICAgICAgICAgICAgICAgICB8IDIwMDcgKysrKysrKysrKysKIHJ1c3QvYWxsb2MvY29s bGVjdGlvbnMvbW9kLnJzICAgICAgICAgICAgICAgIHwgIDE1NiArCiBydXN0L2FsbG9jL2ZtdC5y cyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2MDEgKysrKwogcnVzdC9hbGxvYy9saWIu cnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjI2ICsrCiBydXN0L2FsbG9jL21hY3Jv cy5ycyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMjcgKwogcnVzdC9hbGxvYy9yYXdfdmVj LnJzICAgICAgICAgICAgICAgICAgICAgICAgfCAgNTY3ICsrKwogcnVzdC9hbGxvYy9zbGljZS5y cyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMjgyICsrKysrKysKIHJ1c3QvYWxsb2Mvc3Ry LnJzICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYzMiArKysrCiBydXN0L2FsbG9jL3N0 cmluZy5ycyAgICAgICAgICAgICAgICAgICAgICAgICB8IDI4NjkgKysrKysrKysrKysrKysrCiBy dXN0L2FsbG9jL3ZlYy9kcmFpbi5ycyAgICAgICAgICAgICAgICAgICAgICB8ICAxODYgKwogcnVz dC9hbGxvYy92ZWMvZHJhaW5fZmlsdGVyLnJzICAgICAgICAgICAgICAgfCAgMTQ1ICsKIHJ1c3Qv YWxsb2MvdmVjL2ludG9faXRlci5ycyAgICAgICAgICAgICAgICAgIHwgIDM1NiArKwogcnVzdC9h bGxvYy92ZWMvaXNfemVyby5ycyAgICAgICAgICAgICAgICAgICAgfCAgMTA2ICsKIHJ1c3QvYWxs b2MvdmVjL21vZC5ycyAgICAgICAgICAgICAgICAgICAgICAgIHwgMzM2MiArKysrKysrKysrKysr KysrKysKIHJ1c3QvYWxsb2MvdmVjL3BhcnRpYWxfZXEucnMgICAgICAgICAgICAgICAgIHwgICA0 OSArCiBydXN0L2FsbG9jL3ZlYy9zZXRfbGVuX29uX2Ryb3AucnMgICAgICAgICAgICB8ICAgMzAg KwogcnVzdC9hbGxvYy92ZWMvc3BlY19leHRlbmQucnMgICAgICAgICAgICAgICAgfCAgMTc0ICsK IHJ1c3QvYmluZGdlbl9wYXJhbWV0ZXJzICAgICAgICAgICAgICAgICAgICAgIHwgICAxNyArCiBy dXN0L2J1aWxkX2Vycm9yLnJzICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjkgKwogcnVz dC9jb21waWxlcl9idWlsdGlucy5ycyAgICAgICAgICAgICAgICAgICAgfCAgIDU3ICsKIHJ1c3Qv ZXhwb3J0cy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyMCArCiBydXN0L2hl bHBlcnMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2NDQgKysrKwogcnVzdC9r ZXJuZWwvYWxsb2NhdG9yLnJzICAgICAgICAgICAgICAgICAgICAgfCAgIDY1ICsKIHJ1c3Qva2Vy bmVsL2FtYmEucnMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI1NyArKwogcnVzdC9rZXJu ZWwvYmluZGluZ3MucnMgICAgICAgICAgICAgICAgICAgICAgfCAgIDQ3ICsKIHJ1c3Qva2VybmVs L2JpbmRpbmdzX2hlbHBlci5oICAgICAgICAgICAgICAgIHwgICA0NiArCiBydXN0L2tlcm5lbC9i dWlsZF9hc3NlcnQucnMgICAgICAgICAgICAgICAgICB8ICAgODIgKwogcnVzdC9rZXJuZWwvY190 eXBlcy5ycyAgICAgICAgICAgICAgICAgICAgICAgfCAgMTE5ICsKIHJ1c3Qva2VybmVsL2NocmRl di5ycyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIwNyArKwogcnVzdC9rZXJuZWwvY2xrLnJz ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDc5ICsKIHJ1c3Qva2VybmVsL2NyZWQucnMg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0NiArCiBydXN0L2tlcm5lbC9kZXZpY2UucnMg ICAgICAgICAgICAgICAgICAgICAgICB8ICA1NDYgKysrCiBydXN0L2tlcm5lbC9kcml2ZXIucnMg ICAgICAgICAgICAgICAgICAgICAgICB8ICA0NDIgKysrCiBydXN0L2tlcm5lbC9lcnJvci5ycyAg ICAgICAgICAgICAgICAgICAgICAgICB8ICA1NjUgKysrCiBydXN0L2tlcm5lbC9maWxlLnJzICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICA4NjAgKysrKysKIHJ1c3Qva2VybmVsL2dwaW8ucnMg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQ3OCArKysKIHJ1c3Qva2VybmVsL2h3cm5nLnJz ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI0MiArKwogcnVzdC9rZXJuZWwvaW9fYnVmZmVy LnJzICAgICAgICAgICAgICAgICAgICAgfCAgMTUzICsKIHJ1c3Qva2VybmVsL2lvX21lbS5ycyAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDI3NSArKwogcnVzdC9rZXJuZWwvaW92X2l0ZXIucnMg ICAgICAgICAgICAgICAgICAgICAgfCAgIDgxICsKIHJ1c3Qva2VybmVsL2lycS5ycyAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDQxMSArKysKIHJ1c3Qva2VybmVsL2thc3luYy5ycyAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgNiArCiBydXN0L2tlcm5lbC9rYXN5bmMvbmV0LnJzICAg ICAgICAgICAgICAgICAgICB8ICAzMjIgKysKIHJ1c3Qva2VybmVsL2t1bml0LnJzICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICA5MSArCiBydXN0L2tlcm5lbC9saWIucnMgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAyNjEgKysKIHJ1c3Qva2VybmVsL2xpbmtlZF9saXN0LnJzICAgICAg ICAgICAgICAgICAgIHwgIDI0NyArKwogcnVzdC9rZXJuZWwvbWlzY2Rldi5ycyAgICAgICAgICAg ICAgICAgICAgICAgfCAgMjkxICsrCiBydXN0L2tlcm5lbC9tbS5ycyAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAxNDkgKwogcnVzdC9rZXJuZWwvbW9kdWxlX3BhcmFtLnJzICAgICAgICAg ICAgICAgICAgfCAgNDk4ICsrKwogcnVzdC9rZXJuZWwvbmV0LnJzICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgMzkyICsrCiBydXN0L2tlcm5lbC9uZXQvZmlsdGVyLnJzICAgICAgICAgICAg ICAgICAgICB8ICA0NDcgKysrCiBydXN0L2tlcm5lbC9vZi5ycyAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgNjMgKwogcnVzdC9rZXJuZWwvcGFnZXMucnMgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgMTQ0ICsKIHJ1c3Qva2VybmVsL3BsYXRmb3JtLnJzICAgICAgICAgICAgICAgICAg ICAgIHwgIDIyMyArKwogcnVzdC9rZXJuZWwvcG93ZXIucnMgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgMTE4ICsKIHJ1c3Qva2VybmVsL3ByZWx1ZGUucnMgICAgICAgICAgICAgICAgICAgICAg IHwgICAzNiArCiBydXN0L2tlcm5lbC9wcmludC5ycyAgICAgICAgICAgICAgICAgICAgICAgICB8 ICA0MDUgKysrCiBydXN0L2tlcm5lbC9yYW5kb20ucnMgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgNDIgKwogcnVzdC9rZXJuZWwvcmF3X2xpc3QucnMgICAgICAgICAgICAgICAgICAgICAgfCAg MzYxICsrCiBydXN0L2tlcm5lbC9yYnRyZWUucnMgICAgICAgICAgICAgICAgICAgICAgICB8ICA1 NjMgKysrCiBydXN0L2tlcm5lbC9yZXZvY2FibGUucnMgICAgICAgICAgICAgICAgICAgICB8ICAx NjEgKwogcnVzdC9rZXJuZWwvc2VjdXJpdHkucnMgICAgICAgICAgICAgICAgICAgICAgfCAgIDM4 ICsKIHJ1c3Qva2VybmVsL3N0YXRpY19hc3NlcnQucnMgICAgICAgICAgICAgICAgIHwgICAzOCAr CiBydXN0L2tlcm5lbC9zdGRfdmVuZG9yLnJzICAgICAgICAgICAgICAgICAgICB8ICAxNjAgKwog cnVzdC9rZXJuZWwvc3RyLnJzICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNTk3ICsrKysK IHJ1c3Qva2VybmVsL3N5bmMucnMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE2MSArCiBy dXN0L2tlcm5lbC9zeW5jL2FyYy5ycyAgICAgICAgICAgICAgICAgICAgICB8ICA1MDMgKysrCiBy dXN0L2tlcm5lbC9zeW5jL2NvbmR2YXIucnMgICAgICAgICAgICAgICAgICB8ICAxMzggKwogcnVz dC9rZXJuZWwvc3luYy9ndWFyZC5ycyAgICAgICAgICAgICAgICAgICAgfCAgMTY5ICsKIHJ1c3Qv a2VybmVsL3N5bmMvbG9ja2VkX2J5LnJzICAgICAgICAgICAgICAgIHwgIDExMSArCiBydXN0L2tl cm5lbC9zeW5jL211dGV4LnJzICAgICAgICAgICAgICAgICAgICB8ICAxNTMgKwogcnVzdC9rZXJu ZWwvc3luYy9ub3dhaXQucnMgICAgICAgICAgICAgICAgICAgfCAgMTg4ICsKIHJ1c3Qva2VybmVs L3N5bmMvcmV2b2NhYmxlLnJzICAgICAgICAgICAgICAgIHwgIDI1MCArKwogcnVzdC9rZXJuZWwv c3luYy9yd3NlbS5ycyAgICAgICAgICAgICAgICAgICAgfCAgMTk3ICsKIHJ1c3Qva2VybmVsL3N5 bmMvc2VxbG9jay5ycyAgICAgICAgICAgICAgICAgIHwgIDIwMiArKwogcnVzdC9rZXJuZWwvc3lu Yy9zbXV0ZXgucnMgICAgICAgICAgICAgICAgICAgfCAgMjk1ICsrCiBydXN0L2tlcm5lbC9zeW5j L3NwaW5sb2NrLnJzICAgICAgICAgICAgICAgICB8ICAzNjAgKysKIHJ1c3Qva2VybmVsL3N5c2N0 bC5ycyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE5OSArKwogcnVzdC9rZXJuZWwvdGFzay5y cyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTc1ICsKIHJ1c3Qva2VybmVsL3R5cGVzLnJz ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDY3OSArKysrCiBydXN0L2tlcm5lbC91c2VyX3B0 ci5ycyAgICAgICAgICAgICAgICAgICAgICB8ICAxNzUgKwogcnVzdC9tYWNyb3MvaGVscGVycy5y cyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDc5ICsKIHJ1c3QvbWFjcm9zL2xpYi5ycyAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICA5NCArCiBydXN0L21hY3Jvcy9tb2R1bGUucnMgICAg ICAgICAgICAgICAgICAgICAgICB8ICA2MzEgKysrKwogc2FtcGxlcy9LY29uZmlnICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIHNhbXBsZXMvTWFrZWZpbGUgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBzYW1wbGVzL3J1c3QvS2NvbmZpZyAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAxNDAgKwogc2FtcGxlcy9ydXN0L01ha2VmaWxlICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDE2ICsKIHNhbXBsZXMvcnVzdC9ob3N0cHJvZ3MvLmdpdGlnbm9y ZSAgICAgICAgICAgIHwgICAgMyArCiBzYW1wbGVzL3J1c3QvaG9zdHByb2dzL01ha2VmaWxlICAg ICAgICAgICAgICB8ICAgIDUgKwogc2FtcGxlcy9ydXN0L2hvc3Rwcm9ncy9hLnJzICAgICAgICAg ICAgICAgICAgfCAgICA3ICsKIHNhbXBsZXMvcnVzdC9ob3N0cHJvZ3MvYi5ycyAgICAgICAgICAg ICAgICAgIHwgICAgNSArCiBzYW1wbGVzL3J1c3QvaG9zdHByb2dzL3NpbmdsZS5ycyAgICAgICAg ICAgICB8ICAgMTIgKwogc2FtcGxlcy9ydXN0L3J1c3RfY2hyZGV2LnJzICAgICAgICAgICAgICAg ICAgfCAgIDUwICsKIHNhbXBsZXMvcnVzdC9ydXN0X21pbmltYWwucnMgICAgICAgICAgICAgICAg IHwgICAzNSArCiBzYW1wbGVzL3J1c3QvcnVzdF9taXNjZGV2LnJzICAgICAgICAgICAgICAgICB8 ICAxNDMgKwogc2FtcGxlcy9ydXN0L3J1c3RfbW9kdWxlX3BhcmFtZXRlcnMucnMgICAgICAgfCAg IDY5ICsKIHNhbXBsZXMvcnVzdC9ydXN0X25ldGZpbHRlci5ycyAgICAgICAgICAgICAgIHwgICA1 NCArCiBzYW1wbGVzL3J1c3QvcnVzdF9wbGF0Zm9ybS5ycyAgICAgICAgICAgICAgICB8ICAgMjIg Kwogc2FtcGxlcy9ydXN0L3J1c3RfcHJpbnQucnMgICAgICAgICAgICAgICAgICAgfCAgIDU0ICsK IHNhbXBsZXMvcnVzdC9ydXN0X3JhbmRvbS5ycyAgICAgICAgICAgICAgICAgIHwgICA2MCArCiBz YW1wbGVzL3J1c3QvcnVzdF9zZW1hcGhvcmUucnMgICAgICAgICAgICAgICB8ICAxNzEgKwogc2Ft cGxlcy9ydXN0L3J1c3Rfc2VtYXBob3JlX2MuYyAgICAgICAgICAgICAgfCAgMjEyICsrCiBzYW1w bGVzL3J1c3QvcnVzdF9zdGFja19wcm9iaW5nLnJzICAgICAgICAgICB8ICAgMzYgKwogc2FtcGxl cy9ydXN0L3J1c3Rfc3luYy5ycyAgICAgICAgICAgICAgICAgICAgfCAgIDkzICsKIHNjcmlwdHMv LmdpdGlnbm9yZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBzY3JpcHRzL0tj b25maWcuaW5jbHVkZSAgICAgICAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIHNjcmlwdHMvTWFr ZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMyArCiBzY3JpcHRzL01ha2Vm aWxlLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICB8ICAgNjAgKwogc2NyaXB0cy9NYWtlZmls ZS5kZWJ1ZyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICsKIHNjcmlwdHMvTWFrZWZpbGUu aG9zdCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzNCArLQogc2NyaXB0cy9NYWtlZmlsZS5s aWIgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEyICsKIHNjcmlwdHMvTWFrZWZpbGUubW9k ZmluYWwgICAgICAgICAgICAgICAgICAgIHwgICAgOCArLQogc2NyaXB0cy9jYy12ZXJzaW9uLnNo ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEyICstCiBzY3JpcHRzL2NoZWNrcGF0Y2gucGwg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDggKy0KIHNjcmlwdHMvZGVjb2RlX3N0YWNrdHJh Y2Uuc2ggICAgICAgICAgICAgICAgIHwgICAxNCArCiBzY3JpcHRzL2dlbmVyYXRlX3J1c3RfYW5h bHl6ZXIucHkgICAgICAgICAgICB8ICAxMzQgKwogc2NyaXB0cy9nZW5lcmF0ZV9ydXN0X3Rhcmdl dC5ycyAgICAgICAgICAgICAgfCAgMjI3ICsrCiBzY3JpcHRzL2lzX3J1c3RfbW9kdWxlLnNoICAg ICAgICAgICAgICAgICAgICB8ICAgMTMgKwogc2NyaXB0cy9rYWxsc3ltcy5jICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDQ3ICstCiBzY3JpcHRzL2tjb25maWcvY29uZmRhdGEuYyAgICAg ICAgICAgICAgICAgICB8ICAgNzUgKwogc2NyaXB0cy9taW4tdG9vbC12ZXJzaW9uLnNoICAgICAg ICAgICAgICAgICAgfCAgICA2ICsKIHNjcmlwdHMvcnVzdC1pcy1hdmFpbGFibGUtYmluZGdlbi1s aWJjbGFuZy5oIHwgICAgMiArCiBzY3JpcHRzL3J1c3QtaXMtYXZhaWxhYmxlLnNoICAgICAgICAg ICAgICAgICB8ICAxNTggKwogc2NyaXB0cy9ydXN0ZG9jX3Rlc3RfYnVpbGRlci5weSAgICAgICAg ICAgICAgfCAgIDU5ICsKIHNjcmlwdHMvcnVzdGRvY190ZXN0X2dlbi5weSAgICAgICAgICAgICAg ICAgIHwgIDE2NCArCiB0b29scy9pbmNsdWRlL2xpbnV4L2thbGxzeW1zLmggICAgICAgICAgICAg ICB8ICAgIDIgKy0KIHRvb2xzL2xpYi9wZXJmL2luY2x1ZGUvcGVyZi9ldmVudC5oICAgICAgICAg IHwgICAgMiArLQogdG9vbHMvbGliL3N5bWJvbC9rYWxsc3ltcy5oICAgICAgICAgICAgICAgICAg fCAgICAyICstCiAxODIgZmlsZXMgY2hhbmdlZCwgMzc2MTQgaW5zZXJ0aW9ucygrKSwgNjkgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgLnJ1c3RmbXQudG9tbAogY3JlYXRlIG1vZGUg MTAwNjQ0IERvY3VtZW50YXRpb24vcnVzdC9hcmNoLXN1cHBvcnQucnN0CiBjcmVhdGUgbW9kZSAx MDA2NDQgRG9jdW1lbnRhdGlvbi9ydXN0L2NvZGluZy1ndWlkZWxpbmVzLnJzdAogY3JlYXRlIG1v ZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vcnVzdC9nZW5lcmFsLWluZm9ybWF0aW9uLnJzdAogY3Jl YXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vcnVzdC9pbmRleC5yc3QKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBEb2N1bWVudGF0aW9uL3J1c3QvcXVpY2stc3RhcnQucnN0CiBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9hbmRyb2lkL2FsbG9jYXRpb24ucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2FuZHJvaWQvY29udGV4dC5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvYW5k cm9pZC9kZWZzLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9hbmRyb2lkL25vZGUucnMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2FuZHJvaWQvcHJvY2Vzcy5ycwogY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvYW5kcm9pZC9yYW5nZV9hbGxvYy5ycwogY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvYW5kcm9pZC9ydXN0X2JpbmRlci5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvYW5kcm9pZC90aHJlYWQucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2FuZHJv aWQvdHJhbnNhY3Rpb24ucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwaW8vZ3Bpb19w bDA2MV9ydXN0LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC8uZ2l0aWdub3JlCiBjcmVhdGUg bW9kZSAxMDA2NDQgcnVzdC9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvYWxsb2Mv UkVBRE1FLm1kCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9hbGxvYy9hbGxvYy5ycwogY3JlYXRl IG1vZGUgMTAwNjQ0IHJ1c3QvYWxsb2MvYm9ycm93LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVz dC9hbGxvYy9ib3hlZC5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvYWxsb2MvY29sbGVjdGlv bnMvbW9kLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9hbGxvYy9mbXQucnMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBydXN0L2FsbG9jL2xpYi5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3QvYWxs b2MvbWFjcm9zLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9hbGxvYy9yYXdfdmVjLnJzCiBj cmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9hbGxvYy9zbGljZS5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0 IHJ1c3QvYWxsb2Mvc3RyLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9hbGxvYy9zdHJpbmcu cnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2FsbG9jL3ZlYy9kcmFpbi5ycwogY3JlYXRlIG1v ZGUgMTAwNjQ0IHJ1c3QvYWxsb2MvdmVjL2RyYWluX2ZpbHRlci5ycwogY3JlYXRlIG1vZGUgMTAw NjQ0IHJ1c3QvYWxsb2MvdmVjL2ludG9faXRlci5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qv YWxsb2MvdmVjL2lzX3plcm8ucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2FsbG9jL3ZlYy9t b2QucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2FsbG9jL3ZlYy9wYXJ0aWFsX2VxLnJzCiBj cmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9hbGxvYy92ZWMvc2V0X2xlbl9vbl9kcm9wLnJzCiBjcmVh dGUgbW9kZSAxMDA2NDQgcnVzdC9hbGxvYy92ZWMvc3BlY19leHRlbmQucnMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBydXN0L2JpbmRnZW5fcGFyYW1ldGVycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qv YnVpbGRfZXJyb3IucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2NvbXBpbGVyX2J1aWx0aW5z LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9leHBvcnRzLmMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBydXN0L2hlbHBlcnMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL2FsbG9jYXRv ci5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL2FtYmEucnMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBydXN0L2tlcm5lbC9iaW5kaW5ncy5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qv a2VybmVsL2JpbmRpbmdzX2hlbHBlci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwv YnVpbGRfYXNzZXJ0LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvY190eXBlcy5y cwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL2NocmRldi5ycwogY3JlYXRlIG1vZGUg MTAwNjQ0IHJ1c3Qva2VybmVsL2Nsay5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVs L2NyZWQucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9kZXZpY2UucnMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9kcml2ZXIucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBy dXN0L2tlcm5lbC9lcnJvci5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL2ZpbGUu cnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9ncGlvLnJzCiBjcmVhdGUgbW9kZSAx MDA2NDQgcnVzdC9rZXJuZWwvaHdybmcucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5l bC9pb19idWZmZXIucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9pb19tZW0ucnMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9pb3ZfaXRlci5ycwogY3JlYXRlIG1vZGUg MTAwNjQ0IHJ1c3Qva2VybmVsL2lycS5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVs L2thc3luYy5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL2thc3luYy9uZXQucnMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9rdW5pdC5ycwogY3JlYXRlIG1vZGUgMTAw NjQ0IHJ1c3Qva2VybmVsL2xpYi5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL2xp bmtlZF9saXN0LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvbWlzY2Rldi5ycwog Y3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL21tLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQg cnVzdC9rZXJuZWwvbW9kdWxlX3BhcmFtLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJu ZWwvbmV0LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvbmV0L2ZpbHRlci5ycwog Y3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL29mLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQg cnVzdC9rZXJuZWwvcGFnZXMucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9wbGF0 Zm9ybS5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL3Bvd2VyLnJzCiBjcmVhdGUg bW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvcHJlbHVkZS5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1 c3Qva2VybmVsL3ByaW50LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvcmFuZG9t LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvcmF3X2xpc3QucnMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBydXN0L2tlcm5lbC9yYnRyZWUucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0 L2tlcm5lbC9yZXZvY2FibGUucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9zZWN1 cml0eS5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL3N0YXRpY19hc3NlcnQucnMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9zdGRfdmVuZG9yLnJzCiBjcmVhdGUgbW9k ZSAxMDA2NDQgcnVzdC9rZXJuZWwvc3RyLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJu ZWwvc3luYy5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL3N5bmMvYXJjLnJzCiBj cmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvc3luYy9jb25kdmFyLnJzCiBjcmVhdGUgbW9k ZSAxMDA2NDQgcnVzdC9rZXJuZWwvc3luYy9ndWFyZC5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1 c3Qva2VybmVsL3N5bmMvbG9ja2VkX2J5LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJu ZWwvc3luYy9tdXRleC5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1c3Qva2VybmVsL3N5bmMvbm93 YWl0LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvc3luYy9yZXZvY2FibGUucnMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5lbC9zeW5jL3J3c2VtLnJzCiBjcmVhdGUgbW9k ZSAxMDA2NDQgcnVzdC9rZXJuZWwvc3luYy9zZXFsb2NrLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQg cnVzdC9rZXJuZWwvc3luYy9zbXV0ZXgucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L2tlcm5l bC9zeW5jL3NwaW5sb2NrLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvc3lzY3Rs LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJuZWwvdGFzay5ycwogY3JlYXRlIG1vZGUg MTAwNjQ0IHJ1c3Qva2VybmVsL3R5cGVzLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9rZXJu ZWwvdXNlcl9wdHIucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBydXN0L21hY3Jvcy9oZWxwZXJzLnJz CiBjcmVhdGUgbW9kZSAxMDA2NDQgcnVzdC9tYWNyb3MvbGliLnJzCiBjcmVhdGUgbW9kZSAxMDA2 NDQgcnVzdC9tYWNyb3MvbW9kdWxlLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgc2FtcGxlcy9ydXN0 L0tjb25maWcKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzYW1wbGVzL3J1c3QvTWFrZWZpbGUKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzYW1wbGVzL3J1c3QvaG9zdHByb2dzLy5naXRpZ25vcmUKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzYW1wbGVzL3J1c3QvaG9zdHByb2dzL01ha2VmaWxlCiBjcmVhdGUgbW9kZSAx MDA2NDQgc2FtcGxlcy9ydXN0L2hvc3Rwcm9ncy9hLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgc2Ft cGxlcy9ydXN0L2hvc3Rwcm9ncy9iLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgc2FtcGxlcy9ydXN0 L2hvc3Rwcm9ncy9zaW5nbGUucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzYW1wbGVzL3J1c3QvcnVz dF9jaHJkZXYucnMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzYW1wbGVzL3J1c3QvcnVzdF9taW5pbWFs LnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgc2FtcGxlcy9ydXN0L3J1c3RfbWlzY2Rldi5ycwogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNhbXBsZXMvcnVzdC9ydXN0X21vZHVsZV9wYXJhbWV0ZXJzLnJzCiBj cmVhdGUgbW9kZSAxMDA2NDQgc2FtcGxlcy9ydXN0L3J1c3RfbmV0ZmlsdGVyLnJzCiBjcmVhdGUg bW9kZSAxMDA2NDQgc2FtcGxlcy9ydXN0L3J1c3RfcGxhdGZvcm0ucnMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzYW1wbGVzL3J1c3QvcnVzdF9wcmludC5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNhbXBs ZXMvcnVzdC9ydXN0X3JhbmRvbS5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNhbXBsZXMvcnVzdC9y dXN0X3NlbWFwaG9yZS5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNhbXBsZXMvcnVzdC9ydXN0X3Nl bWFwaG9yZV9jLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzYW1wbGVzL3J1c3QvcnVzdF9zdGFja19w cm9iaW5nLnJzCiBjcmVhdGUgbW9kZSAxMDA2NDQgc2FtcGxlcy9ydXN0L3J1c3Rfc3luYy5ycwog Y3JlYXRlIG1vZGUgMTAwNzU1IHNjcmlwdHMvZ2VuZXJhdGVfcnVzdF9hbmFseXplci5weQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNjcmlwdHMvZ2VuZXJhdGVfcnVzdF90YXJnZXQucnMKIGNyZWF0ZSBt b2RlIDEwMDc1NSBzY3JpcHRzL2lzX3J1c3RfbW9kdWxlLnNoCiBjcmVhdGUgbW9kZSAxMDA2NDQg c2NyaXB0cy9ydXN0LWlzLWF2YWlsYWJsZS1iaW5kZ2VuLWxpYmNsYW5nLmgKIGNyZWF0ZSBtb2Rl IDEwMDc1NSBzY3JpcHRzL3J1c3QtaXMtYXZhaWxhYmxlLnNoCiBjcmVhdGUgbW9kZSAxMDA3NTUg c2NyaXB0cy9ydXN0ZG9jX3Rlc3RfYnVpbGRlci5weQogY3JlYXRlIG1vZGUgMTAwNzU1IHNjcmlw dHMvcnVzdGRvY190ZXN0X2dlbi5weQoKCmJhc2UtY29tbWl0OiA0YjA5ODZhMzYxM2M5MmY0ZWMx YmRjN2Y2MGVjNjZmZWExMzU5OTFmCi0tIAoyLjM2LjEKCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdAps aW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVh ZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==